« 2011年1月 | トップページ | 2011年3月 »

2011年2月23日 (水)

Mysql + Java で CommunicationsException が発生

MySQL+Javaのローカル環境で負荷をかけたところ下記のエラーが発生

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The driver was unable to create a connection due to an inability to establish the client portion of a socket.

This is usually caused by a limit on the number of sockets imposed by the operating system. This limit is usually configurable.

For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system reconfiguration may also be required.

For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).
    at sun.reflect.GeneratedConstructorAccessor16.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1118)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:343)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2308)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2122)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:774)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:49)
    at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:409)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:375)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:289)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
       :

色々なサイトを見ていると、下記のサイトを発見

5000 を超える番号の TCP ポートから接続しようとすると 'WSAENOBUFS (10055)' エラーが表示される
http://support.microsoft.com/kb/196271/ja

実際に「netstat」コマンドを実行し、
番号を確認したところ、5000になると同じ事象が発生していたため、
同様の事象であることを確認

上記サイトに書かれた通りにレジストリを変更したところ、エラーは発生しなくなった・・・

Eclipse コンパイル時の警告を無視する方法 (都度更新)

警告「Java ArrayList は raw 型です。総称型 ArrayList<E> への参照は、パラメーター化する必要があります」

  1. 「ウィンドウ」 → 「設定」を開く
  2. 設定ダイアログのツリーメニューから「Java」 → 「コンパイラ」 → 「エラー/警告」を選択
  3. 「総称型」の「raw型の使用:」を「無視」に設定する。

警告「Missing package-info.java file.」

  1. 「ウィンドウ」 → 「設定」を開く。
  2. 設定ダイアログのツリーメニューから「Checkstyle」を選択
  3. プロジェクトで使用している内部構成を選択して「構成」ボタンを押下する(※)
  4. 構成ツリーメニューから「Javadoc コメント」を選択する
  5. 「パッケージ Javadoc」のチェックを外して「OK」ボタンを押下する

  内部構成が存在しない場合、
   →ビルドイン構成をコピーして内部構成を作成する
   →内部構成作成後、プロジェクト名を右クリックして「プロパティー」を選択
   →プロパティーのツリーメニューから「Checkstyle」を選択
   →チェックの構成で作成した内部構成を選択する

警告「少なくとも1文はあるはずです。」

  1. 「ウィンドウ」 → 「設定」を開く。
  2. 設定ダイアログのツリーメニューから「Checkstyle」を選択
  3. プロジェクトで使用している内部構成を選択して「構成」ボタンを押下する
  4. 構成ツリーメニューから「ブロック」を選択する
  5. 「空のブロック」のチェックを外して「OK」ボタンを押下する

2011年2月18日 (金)

JavaScript によるキーイベントの禁止 (修正)

キーイベントで色々なキーの禁止を実装してみたので
そのソースを貼り付けます。

■今回の仕様

  • BackSpace、Art+右 による戻るを禁止
    (入力ミスによるページ遷移を防止。明示的な戻るボタンは許可)
     
  • Ctrl+R 、F5 キーによる更新を禁止
    (入力ミスによる更新を防止。明示的な更新ボタンは許可)
     
  • Enter キーによる Post(送信)処理を禁止
    (入力ミスによる送信を防止)

■ソース

以下のソースを JavaScript の定義部分に張り付けてください。

共通的な処理にしたい場合は外部ファイルにして、読み込むと便利♪

window.document.onkeydown = keys;

/**
 * BackSpaceキー、Enterキー、Alt+←、Ctrl+R、F5キー の禁止
 * @returns {Boolean}
 */
function keys(eve){

 // IE と FireFox の両方のイベントを受け取る為の処理
 var winjudge = false ;
 if(eve==null){
  eve = window.event ;
  winjudge = true ;
 }

 // IE と FireFox の両方のキーコードを受け取る為の処理
 var keyCode = eve.which ? eve.which : eve.keyCode ;
 switch ( keyCode ){

   case 8: // BackSpace

    // ※2011/11/17 修正 --------------------------
         //  (IDを直接取得するように修正)
    //  IE と FireFox の両方の要素名を受け取る為の処理
    if(eve.srcElement){
     idname = eve.srcElement.id;
    }else{
     idname = eve.target.id;
    }
    // -------------------------------------------

    // ID(id)が定義されている場合
    if(idname != undefined ){

     type = document.getElementById(idname).type ;
     actv = document.getElementById(idname).disabled ;

     // text の場合のみ BackSpace を許可する
           // ※textareaが存在する場合はその対応を入れてください

     if(type=="text" && actv == false){
      return true ;
     }else{
      // win 系の場合 キーコードに 0 を設定
      if(winjudge) eve.keyCode = 0;
      return false;
     }
    }else{
     if(winjudge) eve.keyCode = 0;
     return false;
    }

   case 13: // Enter

    if(winjudge) eve.keyCode = 0;
    return false;

   case 37: // Alt + ←

    if( eve.altKey ){
     if(winjudge) eve.keyCode = 0;
     return false;
    }

   case 82: // Ctrl + R

    if( eve.ctrlKey ){
     if(winjudge) eve.keyCode = 0;
     return false;
    }

   case 116: // F5

    if(winjudge) eve.keyCode = 0;
     return false;
     break;

 }
}

※うまく動作しない場合

 1.[ツール]メニューより [開発者ツール] を選択

 2.[スクリプト]タグを選択し、[デバッグ開始] ボタンを押す

 3.ブレークポイントを挿入し、対象の操作を行う

 4.開発者ツールの右側[ウォッチ]に変数名を入力

 5.変数の値を確認して、バグの原因を取り除いてください

■今回の確認した環境

IE 8.0.6001.18702
Firefox 3.5.16
Google Chrome 8.0.552.237

※上記以外では確認していないため、使用ブラウザ毎に確認することをお勧めします

2011年2月17日 (木)

Eclipse で作成したプロジェクトを Tomcat で公開する

Eclipse 上で作成したプロジェクトは、Eclipse (内部)の Tomcat でデバック・動作確認ができます。しかし、そのままでは通常の (公開)Tomcat サービスを起動してもデバック・動作確認できません。

「動かす時だけ、Eclipse から Tomcat を起動すれば・・・」

まぁ、それでも良いですけど、せっかくならサービスを「自動起動」にしたり、

公開  Tomcat:本番環境
EclipseTomcat:開発環境

・・・なんて運用も良いと思います。

上記設定が、Eclipse のエクスポート (Export) 機能を利用すれば簡単に行えます。

1.プロジェクトを右クリック→エクスポート

2.「Web」→「WARファイル」を選択して「次へ」を選択

Export1

3.エクスポートの必要な値を入力して「完了」ボタンを押下する

Export1_3 

  • Webプロジェクト:プロジェクト名を入力(自動セット)
  • 宛先:Tomcat のインストール先を入力
  • ターゲットランタイム:ランタイムを選択(自動セット)

 ※今回は、「ソースファイルのエクスポート」、
  「既存ファイルを上書き」にもチェックをつけています

4.コントロールパネル→管理ツール→サービス を選択

5.Tomcatのサービスを起動する

Export1_5

6.今までの開発で確認してきたURLを入力し、画面が表示できれば完了です。

※スタートアップの種類を「自動」にしておけば、パソコン起動時にサービスが起動します。

2011年2月 9日 (水)

Android 開発環境 構築メモ(2012/04/17更新)

とりあえずエミュレータの画面が表示されるまでの環境構築メモです。

(2012/04/12更新)
Windous7 に環境構築を行うため最新バージョンの Android SDK を入れてみた所、手順が結構変わっているため、最新版のインストール手順も追記します。

(2012/04/17更新)
手順の見直し

■ 環境

□ (r18) でのインストール確認環境

・Windows7
・Eclipse 3.7.2
・JDK 1.6.0_29

□(r09)でのインストール確認環境

・WindowsXP
・Eclipse 3.6.1
・JDK 1.6.0_22

 

■JDKのインストール

下記サイトを参考にJDKをインストールします

JDKインストール

■ Android SDK のダウンロードとインストール

下記サイトより Android SDK 本体を DL してインストールします

サイト:http://developer.android.com/sdk/index.html

01.ページ内「installer_r18-windows.exe」をクリックしてダウンロード

  ※「r18」部分がバージョンを表しています

  • 02.ダウンロードした「installer_r18-windows.exe」を実行
  • 03.「Next」ボタンを押下する
      (インストーラーが「JDK」の存在を確認する)

  • 04.JDKがインストールされている場合は画面にそのバージョンが表示されるので
      バージョンが正しければ「Next」ボタンを押下する

    ※正しいバージョンが表示されない場合は再度JDKのインストールを行って下さい
    ※JDK 1.6.0_29 がインストールされている場合は下のように表示されます
    Photo
  • 05.インストール場所を指定して「Next」ボタンを押下する
      (例)インストール場所:C:\Program Files\Android\android-sdk
  • 06.メニュー名を指定して「Next」ボタンを押下する
      (例)メニュー名:Android SDK Tools
     

  • 07.「Install」ボタンを押下する
  • 08.インストール完了後「Next」ボタンを押下する

  • 09.「Start SDK Manager」 のチェックを外さずに 「Finish」 ボタンを押下する
  • ■ SDKマネージャの設定
  • □ (r18) での設定

    01.SDKマネージャ起動後パッケージのインストール選択画面が起動する

    ※「Start SDK Manager」 のチェックを付けてインストールを終了すると
      インストール完了後にSDKマネージャの画面が起動します

    02.必要なパッケージを選択して上の「Install」ボタンを押下する

    Photo_4

    ※今回はインストール時間を調査するため全て選択しています

    ※ボタン名は選択したパッケージ数によってかわります
     上ボタン:install:インストールボタン
     下ボタン:delete:アンインストールボタン

    ※すべてのパッケージを表示させる場合は
     「show」のチェックBOXをすべて選択します

     

  • 03.利用規約の画面が表示されるので
      「Accept All」を選択して「Install」ボタンを押下する

    Photo_5

     
  • 04.インストール中、下画面のようなダイアログが表示されるが
      処理は継続するのでそのまま放置する
  • Photo_7

    05.インストール中、下画面のような「Site Authentication」という
      ダイアログが表示された場合は処理が中断されるので
      「Cancel」ボタンを押下する

    Photo_9


    06.インストールが完了すると「Done loading packages」という文言が表示される

    1_3

    ※「Android SDK Manager Log」ダイアログは不要なので「close」ボタンを押下する

    ※全て選択した場合、私の環境ではインストールに約2時間かかりました

    07.SDK Manager のメニューバーより「Tools」を選択

    08.「Tools」より「Manage AVDs...」を選択

    09.「Android Virtual devices Manager」ダイアログが表示されるので
      「New」ボタンを押下する

  • 10.「Create new Android Virtual Device」ダイアログが表示されるので
  •   名前(Name)、ターゲット(Target)等を指定し
      「Create AVD」ボタンを押下する
  •   Name  :エミュレータの名前(任意の文字列)
  •   Target  :ターゲットのOSを指定
  •   SD Card :エミュレータが使用するSDカードの容量を指定
  •   Skin   :エミュレータの画面解像度を設定します
  • 11.確認のウィンドウが表示された場合は「OK」ボタンを押下する
  • 12.画面左上の「×」ボタンを押し、「Android SDK Manager」を終了する

  • □(r09)での設定
  • 01.SDKマネージャ起動後パッケージのインストール選択画面が起動する
  • ※「Start SDK Manager」 のチェックを付けてインストールを終了すると
      インストール完了後にSDKマネージャの画面が起動します

    02.「Accept All」を選択して「Install」ボタンを押下する

    03.インストール中「…ADB…」ダイアログが表示された場合「Yes」を押下する

    04.インストール完了後「close」ボタンを押下する

    05.「Available Packages」を選択し、全てにチェックをつける

    06.「Install Selected」ボタンを押下する

    07.「Accept All」を選択して「Install」ボタンを押下する

    08.インストール中「…ADB…」ダイアログが表示された場合「Yes」を押下する

    09.「Virtual devices」を選択して「New」ボタンを押下する

    10.名前(Name)、ターゲット(Target)等を指定する

      Name  :エミュレータの名前(任意の文字列)
      Target  :ターゲットのOSを指定
      SD Card :エミュレータが使用するSDカードの容量を指定
      Skin   :エミュレータの画面解像度を設定します

    11.「Create AVD」ボタンを押下する

    12.確認のウィンドウが表示された場合は「OK」ボタンを押下する

    13.画面左上の「×」ボタンを押し、「Android SDK Manager」を終了する

    ■パスの設定

    01.コントロールパネルを開く

    02.システムを開く

    ※Windows7の場合
     「システムとセキュリティー」→「システムの詳細設定」を選択

  • 03.「詳細設定」タブより「環境変数」ボタンを押下する
  • 04.システム環境変数より「Path」を選択し、「編集」ボタンを押下する

  • 05.最後尾に Android SDK の Tools を追加する
  • ※ 「;」で区切ってから最後尾に追加する
    ※adbコマンドが tool → platform-tools に移動したためそのパスも追加する
     

    (例)追加1:C:\Program Files\Android\android-sdk\tools
    (例)追加2:C:\Program Files\Android\android-sdk\platform-tools

    06.「OK」ボタンを押下し、設定を完了する

  • ■AVDマネージャの起動
  • 01.スタートメニューより「すべてのプログラム」を選択

    02.「Android SDK Tools」を選択

    ※スタートメニューの登録名はインストール時に指定した名前です

    03.「AVD Manager」を選択

    04.AVD Manager の画面が表示されるので、
       「SDKマネージャ」の説明で追加した設定を選択する

    04.「開始(Start)」ボタンを押下する

    05.ダイアログが表示されたら「起動(Launch)」押下する

    ※下記画像のように、エミュレーターが起動することを確認する
      (初回起動時は画面が表示されるまで時間がかかります)

    Android

    □エミュレータの表示言語を変更する

    1. エミュレータの「MENU」ボタンを押下する
    2. 画面上の「Settings」を押下する
    3. 画面上の「Language & keyboard」を押下する
    4. 画面上の「Select language」を押下する
    5. 画面の下の方にある「日本語」を選択する

    □ エミュレータ起動時のエラー対応

    最近インストールをした人の中で、エミュレータ起動時に
    「invalid command-line parameter: Files.…」
    というエラーが発生し、エミュレータが起動しない場合があるようです。
    上記エラーが発生した場合、下記 ① or ② のどちらかで対応可能です。
     

    ① Android SDKを「Program Files」以外に再インストールする

     ※この対応は時間がかかるため、下の対応②をおすすめします

    ② SDKロケーションの設定を変更する

     1.ウィンドウ→設定→Android
     2.SDKロケーションの「Program Files」部分を「PROGRA~2」に変更する

    上記の設定を行い、
    再度eclipse上からエミュレータの起動を確認してください。

    ----------------------------------------------------------------

    ここまでの手順で、エミュレータは起動しますが、
    せっかくなので「Eclipse」からの起動も確認します

    ■Eclipseのダウンロード

    下記サイトを参考にEclipseの標準的なインストールを行う

    Eclipseのインストール

    ※ Eclipseの簡単な設定は下記サイトを参考にしてください

      Eclipseの設定

      Eclipseのプラグイン

    ■EclipseとAndroidの連携

    01.Eclipsを起動

  • 02.メニューから「ヘルプ」を選択
  • 03.「新規ソフトウェアのインストール」を選択

  • 04.「追加」ボタンを押下する
  • 05.任意の名前を入力

  •   (例) 名前:Android Development Tools
  • 06.ロケーションに「https://dl-ssl.google.com/android/eclipse/」を入力

  • 07.「OK」ボタンを押下する
  •  ※名前が「保留中」の場合は、「開発ツール」表示されるまでしばらく待つ

  • 08.「開発ツール」表示後、チェックボックスにチェックをつける
  • 09.「次へ」ボタンを押下する

    10.インストール詳細が表示されるので「次へ」ボタンを押下する

  • 11.使用条件に同意し、「完了」ボタンを押下する
  • 12.Eclipseの再起動を求められたら再起動を行う

  • 13.再起動後、「Android開発へようこそ」のダイアログが表示された場合は以下の設定を行う
      
  •    →ラジオボタン「既存SDKを使用」を選択
  •    →「Existing Location」に Android SDK のパスを入力する
  •     (例)Existing Location:C:\Program Files\Android\android-sdk 
  •    →「次へ」ボタンを押下する
  •    →「Send usage statistics to Google.」で「いいえ」を選択
         ※「はい」を選択すると統計をGoogleに送る
  •    →「完了」ボタンを押下する
  •   再起動後、ダイアログが表示されない場合は以下の手順で設定を行う

       →メニューから「ウィンドウ」を選択
       →「設定」を選択
  •    →一覧から「Android」を選択
  •    →SDKロケーションに Android SDK のパスを入力する
  •     (例)SDKロケーション:C:\Program Files\Android\android-sdk-windows
       →「適用」ボタンを押下する
       →一覧表が正しく更新されたら「OK」ボタンを押下する
  • ■EclipseからAVDマネージャの起動
  • □ (r18) での起動

    01.メニュー「ウィンドウ(W)」を選択

    02.「AVD マネージャー」を選択

    03.「SDKマネージャ」の説明で追加した設定を選択する

    04.「開始(Start)」ボタンを押下する

    05.ダイアログが表示されたら「起動(Launch)」押下する

      ※エミュレーターが起動します

    □ (r09) での起動

    01.メニュー「ウィンドウ(W)」を選択

    02.「Android SDK および AVD マネージャー」を選択

  • 03.「SDKマネージャ」の説明で設定した内容が表示される
  • 04.「Virtual devices」を選択する

  • 05.設定されたAVD Name を選択し、「開始(Start)」を押下する
  • 06.ダイアログが表示されたら「起動(Launch)」押下する

      ※エミュレーターが起動します

    2011年2月 4日 (金)

    JSP→サーブレットで、日本語のリクエストパラメータを受けとる(修正)

    ■POSTの場合

    サーブレットで日本語のリクエストパラメータを受ける際、
    何も気にせず取得すると「?」を含んだ文字に化けてしまう。
    これは受けとる文字コード等が原因なのだが、

    getParameter("XXXXX")

    で全角文字を受け取る前に

    request.setCharacterEncoding("文字コード");

    で受け取る文字コードを指定すれば回避できる。

    下記サイトはパターン毎の説明があり、
    大変わかりやすかったので、私が説明するより
    下記サイトを見た方が早いと思いますw

    http://ameblo.jp/archive-redo-blog/theme-10003613179.html

    ■GETの場合

    Get型で日本語のパラメータを受け取る場合、
    上記対策のほか、 server.xml を変更する必要がある。

    <connector connectiontimeout="60000"
                    port="8080"
                    protocol="org.apache.coyote.http11.Http11NioProtocol"
                    redirectport="8443"
                    usebodyencodingforuri="true" >

    ※上記赤文字の「usebodyencodingforuri="true"」を追加する

    MySQL 英字の大文字・小文字を区別する

    MySQL では、char、varcharカラムに対して
    検索条件(where)やソート(order by)時に大文字小文字を区別しません。

    ユーザID等のカラムで 「A00000001」 と 「a00000001」 が同じだと
    とみなされると困ったものです。

    これを区別させたい場合、対象のカラムに 「binary」 属性を設定する必要があります。

    ↓phpMyAdminで確認した場合

    Mysql1_4 

    正:utf8_bin

    誤:utf8_general_ci

    上記の設定を変更する場合、「操作」の筆アイコンをクリックし
    「属性」に「BINARY」を指定します。

    Mysql2

    変更後は「照合順序」の値が変わっています

    Mysql3

    2011年2月 3日 (木)

    TortoiseSVN で接続ユーザを変更する

    TortoiseSVN において、認証データを保存していたが、
    接続ユーザID・パスワード を変更しなければならない場合、

    設定→保存データ→認証データ→クリア

    を行い、現在保存されている情報をクリアする必要がある。

    Svnpass_2

    クリア後は再接続を行い、新たなユーザID・パスワードを入力すれば、
    接続ユーザを変更することができる

    2011年2月 1日 (火)

    JavaScript で Ctrl+R を禁止する (追記)

    「教えてGoo」、「OKWave」にて、

    「F5とCtrl+R の「更新」を禁止にしたい。」

    という質問があり、その回答が・・・

    document.onkeydown = keys;

    function keys(){
     switch (event.keyCode ){
      case 116: // F5
      case 82: // Ctrl + R 
       event.keyCode = 0;
       return false;
       break;
     }
    }

    となっていたが、このままでは通常の「r」キーが無効となるため、
    「r」および「R」が入力できなくなる。

    ※「r」のキーコード=82、「Ctrl」のキーコード=17

    その為、上記コードを修正し、「Ctrl」が押されているかどうかを調べる必要がある。

    document.onkeydown = keys;

    function keys(){

     switch (event.keyCode ){
      case 116: // F5
       event.keyCode = 0;
       return false;
      case 82: // Ctrl + R
       if( event.ctrlKey ){
        event.keyCode = 0;
        return false;
       }
       break;
      }
    }

    また、上記ソースはIEでは動作するが、Firefoxで正常に動かない
    そのため下記のように変更する

    window.document.onkeydown = keys;

    function keys(eve){      …※1
     var winjudge = false ;
     if(eve==null){
      eve = window.event ; 
    …※2
      winjudge = true ;
     }

     var keyCode = eve.which ? eve.which : eve.keyCode ; …※3
     switch ( keyCode ){
      case 116: // F5
       if(winjudge) eve.keyCode = 0; …※4
       return false;
      case 82: // Ctrl + R
       if( eve.ctrlKey ){
        if(winjudge) eve.keyCode = 0;
        return false;
       }
      break;
     }
    }

    変更内容を説明すると・・・

    1. IEでは「event」がグローバル変数のため認識できるが
      Firefoxでは「event」が認識できない
      そのため、「eve」という変数を関数の引数として宣言する。
       
    2. Firefoxでは関数の第一引数としてイベントが渡されるため「eve」を認識できるが
      IEではそれを認識することができない
      そのため、「eve = window.event」でイベントを再定義する
       
    3. IEではどのキーが押されたかを「eve.keyCode」で取得できるが
      Firefoxでは正しく取得できない
      そのため「eve.which」でキーコードを取得する
       
    4. IEでは「eve.keyCode = 0;」でキーイベントを無効にできたが
      Firefoxではこの部分を実行すると無効にできなかった
      そのためIE以外は「return false;」のみを実行する

      ↑上記で上手くいかない場合は
      「window.event.returnValue = false;」を試してみると良いかも?

    ■今回の確認した環境

    IE 8.0.6001.18702
    Firefox 3.5.16
    Google Chrome 8.0.552.237

    ※上記以外では確認していないため、使用ブラウザ毎に確認することをお勧めします

    localhost では正常に動くのに マシン名でアクセスするとセッションを取得できない?

    現在Javaの開発中で下記のような現象が発生しました。

    1. localhost では正常に動く
    2. 他端末からマシン名でアクセスすると正常に動く
    3. 自端末からマシン名でアクセスするとセッションが取得できない

    理由がわからず、サイトを探していると下記の記事を発見

    http://www.javaroad.jp/bbs/answer.jsp?q_id=20081021120508288

    どうやらマシン名(URL)に「_」(アンダースコア)が入っていると
    セッションが正常に取得できない場合があるらしい。
    試しにマシン名から「_」(アンダースコア)を消したところ、
    正常に動くようになった。

    詳しい原因まで調査はしていないが、URLにアンダースコアを入れるのは控えた方がよさそうです。

    « 2011年1月 | トップページ | 2011年3月 »