トップ 最新 追記

ORCA愉快日記

2004|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|10|11|12|
2012|01|02|09|
2013|04|

2011-06-01 NetBeansのSQEプラグインによるソースコードチェックのメモ

_ [PC] NetBeansのSQEプラグインによるソースコードチェックのメモ

NetBeansにJavaのソースコードをチェックするSQEプラグインを入れるとかなり便利ですね。バグや推奨しない書き方などをチェックして教えてくれます。

NetBeansのSQEプラグインによるソースコードチェックのメモ
  
□ NetBeansのSQEプラグインに含まれる機能
* FindBugs
    Javaコードにあるバグの発見と解析。
* PMD
    Javaコードにある潜在的な問題の発見。未使用の変数やプライベートメソッドの
    チェックや、コードの重複、空のtry/catch/finally/switchなどのチェックが行える。
* CheckStyle
    コーディング基準に沿ったJavaコードを書いているかのチェック。
* Dependency Finder
    コンパイル済みのJavaコードから依存関係の解析。
  
  
□ SQEプラグインのインストール方法
下記の方法は、NetBeans 6.7以上のバージョンが必要になります。
  
1. プラグインマネージャへのURLの追加
NetBeansのメニューから、「ツール」→「プラグイン」を開きます。
「設定」タブを開き、「追加」ボタンを押して出てきたダイアログで
下記のように入力した上で、「了解」ボタンを押して登録してください。
  
* 名前 :「SQEソフトウェア品質チェック」などのように任意の名前
* URL  : http://deadlock.netbeans.org/hudson/job/sqe/lastStableBuild/artifact/build/full-sqe-updatecenter/updates.xml
  

  
  
2. SQEプラグインのインストール
「使用可能なプラグイン」タブを開き、「カタログを再読み込み」ボタンを押します。
  
右上の検索ボックスに「SQE」と入力して表示されたプラグインのうち
インストールしたいものにチェックを入れます。
「インストール」ボタンを押し、指示に従ってインストールを進めます。
完了の旨のメッセージが出れば、SQEのインストールは終了です。
  

  
  
□ SQEの使い方
ソースコードチェックを行いたいプロジェクトを開いた状態で、NetBeansのメニューから
「ウィンドウ」→「Quality」→「Quality Control Center」を開きます。
  
ウィンドウ左側のツールバーに「Quality Control Center」タブが追加されているので開きます。
Projectsカテゴリでソースコードチェックを行うプロジェクトを指定し
Controlカテゴリの一番左にあるアイコンを押して、FindBugs/PMDのチェックを行います。
  
チェックにはしばらく時間がかかりますが、チェックが完了すると問題点の数のグラフや
問題点の履歴などが表示され、ウィンドウ右下のペインにチェック結果が表示されます。
  
チェック結果を開き、ダブルクリックすることで該当の問題箇所にアクセスする
こともできます。また、コードエディタの左にPMDの警告アイコンなども表示され
ALt+Enterキーで詳細内容を開くことができます。
  

  
  
□ チェック項目のカスタマイズ
問題点の数が多すぎたりチェックに時間がかかるので、FindBugsやPMDでチェックする項目を
絞り込みたい場合は、NetBeansのメニューから「ツール」→「オプション」→「Quality」タブを
開いて、不要な項目のチェックを外します。
  
FindBugsの場合は、チェック速度(Speed)としてfast/moderate/slowの
項目が表示されているので、実行に時間がかかる場合はslowのチェック項目を
外すと良いかもしれません。
  

  
  
□ Linux環境でFindBugsのメッセージが文字化けする問題の対応例
FindBugsのメッセージは日本語化されていますが、文字コードがSJISのため
Linux環境などでは文字化けして表示されます。
  
そのため、Linux環境などでは下記の手順で日本語メッセージをUTF-8に
変換する必要があります。(下記の例ではNetBeans 6.9)
  
(必要に応じて~/.netbeans/6.9/modules/ext/findbugs.jarのバックアップをとっておくこと)
$ mkdir ~/temp/
$ cd ~/temp/
$ jar xvf ~/.netbeans/6.9/modules/ext/findbugs.jar
$ nkf -w --overwrite messages_ja.xml
$ jar cvf ~/.netbeans/6.9/modules/ext/findbugs.jar .
$ rm -rf ~/temp/
    
□ 参考URL
Project Kenai - Software Quality Environment
http://kenai.com/projects/sqe/pages/Home
マイコミジャーナル - 絶対使うべき! FindBugsでBug退治
http://journal.mycom.co.jp/articles/2006/09/23/findbugs1/index.html

2011-06-10 PidginでYahooメッセンジャに接続できなくなった件とその回避方法

_ [Linux] PidginでYahooメッセンジャに接続できなくなった件とその回避方法

追記:YMSGプロトコルについての記述などを追加。

□ PidginでYahooメッセンジャに接続できない件とその回避方法
2011/6/7に、マルチプロトコル対応のメッセンジャーソフトPidginから
Yahooメッセンジャ(Yahoo Japan)に接続できなくなりました。
  
回避方法としては、以下の通りです。
  
#将来的には、この回避方法が逆にトラブルの要因となる可能性も
#ありますので、その場合は下記の設定を解除するようにしてください。
  
◆ Linuxの場合
/etc/hostsファイルに下記のようなエントリを追加してください。
-------------------------------------------------
124.83.239.240 cs1.msg.vip.ogk.yahoo.co.jp
-------------------------------------------------
  
操作にはroot権限が必要なので、下記の例のようなコマンドを
利用すると良いでしょう。
$ gksudo gedit /etc/hosts  または
$ sudo vi /etc/hosts
  
◆ Windowsの場合
Windowsの場合は、対策パッチの当たったPidgin 2.8が有志によって
リリースされているようなので、そちらを使ったほうが良いかもしれません。
  
電脳のツボ-別館 - 
http://garakuta.homelinux.org/~nosuke/tsubo/index.php?Windows%2FPidgin%A4%F2%A5%D3%A5%EB%A5%C9%A4%B7%A4%C6%A4%DF%A4%EB
  
Linux版と同じ方法で回避するのであれば、
32ビット版 Windowsなら、C:\Windows\System32\drivers\etc\hosts または
64ビット版 Windowsなら、C:\Windows\SysWOW64\drivers\etc\hosts
のファイルに、同様の下記のエントリを追加してください。
-------------------------------------------------
124.83.239.240 cs1.msg.vip.ogk.yahoo.co.jp
-------------------------------------------------
  
Windows 7などの環境では、ウイルス等に不正に書き換えられてしまうのを防ぐため
上記のhostsファイルの編集には"管理者権限"が必要になります。
メモ帳などのエディタで、右クリック→「管理者権限で実行」を選択して
管理者権限でメモ帳を起動して編集してください。
(管理者権限がないと、ファイルの変更点を保存できません。)
  
  
□ トラブル原因の調査
私が使っていた環境は、Ubuntu 10.04用のPPA版のpidgin 2.7.11で
6/7にYahooメッセンジャに接続できなくなりました。
  
Windows向けPidginだと2.8で接続できるような話がネットに転がっていたので
Linux環境でビルドしてみたものの、上記のと違い対策パッチを当ててなかったので
Yahooメッセンジャに接続できませんでした。
  
そこで、pidgin 2.8をデバッグオプション付きでビルドしてログを
観察してみると、cs1.msg.vip.ogk.yahoo.co.jp=124.83.219.223の
サーバのポート80に接続しようとして拒否されています。
------------------------------------------------------------
(06:44:19) dns: Got response for 'cs1.msg.vip.ogk.yahoo.co.jp'
(06:44:19) dnsquery: IP resolved for cs1.msg.vip.ogk.yahoo.co.jp
(06:44:19) proxy: Attempting connection to 124.83.219.223
(06:44:19) proxy: Connecting to cs1.msg.vip.ogk.yahoo.co.jp:80 with no proxy
(06:44:19) proxy: Connection in progress
(06:44:19) proxy: Connecting to cs1.msg.vip.ogk.yahoo.co.jp:80.
(06:44:19) proxy: Error connecting to cs1.msg.vip.ogk.yahoo.co.jp:80 (接続を拒否されました).
(06:44:19) proxy: Connection attempt failed: 接続を拒否されました
(06:44:19) yahoo: Unable to retrieve server info. 0 bytes retrieved with error message: cs1.msg.vip.ogk.yahoo.co.jp へ接続できません: 接続を拒否されました
(06:44:19) connection: Connection error on 0x8e9c7e0 (reason: 0 description: Unable to connect: The server returned an empty response.)
(06:44:19) account: Disconnecting account test (0x8c2c9a0)
(06:44:19) connection: Disconnecting connection 0x8e9c7e0
(06:44:19) connection: Destroying connection 0x8e9c7e0
------------------------------------------------------------
  
pingは返ってくるもののポート80に接続できないので、仕様変更で
このサーバでのポートをふさいだか、サービスを停止したものと思われます。
------------------------------------------------------------
$ ping 124.83.219.223
PING 124.83.219.223 (124.83.219.223) 56(84) bytes of data.
64 bytes from 124.83.219.223: icmp_seq=1 ttl=50 time=25.3 ms
  
$ telnet 124.83.219.223 80
Trying 124.83.219.223...
telnet: Unable to connect to remote host: Connection refused
------------------------------------------------------------
  
  
□ 接続できるサーバの調査
Yahooメッセンジャのサービスで使われているドメインは、csから始まる
cs*.yahoo.co.jpの名前が慣例らしいので、続き番号のドメイン
cs2.msg.vip.ogk.yahoo.co.jp を調べました。
------------------------------------------------------------
$ host cs2.msg.vip.ogk.yahoo.co.jp
cs2.msg.vip.ogk.yahoo.co.jp has address 124.83.239.240
------------------------------------------------------------
  
その他のドメインについても調べてみると(一番下のリスト参照)
csから始まる以下の範囲のサーバであれば、現時点では
Yahooメッセンジャのサービスに接続できるようです。
------------------------------------------------------------
124.83.239.240
124.83.239.126〜124.83.239.131
------------------------------------------------------------
(注) ただし、上記はYahooから公式に公開されているものではないので
正しいサーバかどうかは分からず、将来的に接続を拒否される可能性はあります。
  
  
□ さらにYMSGプロトコル等について詳しく調べてみた
さらに詳しく調べてみると、Yahooメッセンジャ(YMSG)プロトコルでは
サービスに最初にアクセスする際、HTTP GETリクエストを
http://(サーバ名)/capacity に対して送っているようです。
  
そのリクエストで返ってきた CS_IP_ADDRESS=(IPアドレス) の
IPアドレスに対して接続/認証を試みるのですが  
124.83.219.223 のIPアドレスでリクエストした場合は、応答を返していません。
------------------------------------------------------------
× http://cs1.msg.vip.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS= #アクセスするタイミングによって変わり、124.83.239.126〜131のいずれかとなる)
× http://124.83.219.223/capacity
○ http://cs2.msg.vip.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS= #アクセスするタイミングによって変わり、124.83.239.126〜131のいずれかとなる)
○ http://124.83.239.240/capacity
  
○ http://cs.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS= #アクセスするタイミングによって変わり、124.83.239.126〜131のいずれかとなる)
○ http://124.83.239.240/capacity  (cs2.msg.vip.ogk.yahoo.co.jpと同じ)
  
○ http://cs101.msg.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS=124.83.239.131)
○ http://124.83.239.131/capacity
○ http://cs102.msg.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS=124.83.239.130)
○ http://124.83.239.130/capacity
○ http://cs103.msg.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS=124.83.239.129)
○ http://124.83.239.129/capacity
○ http://cs104.msg.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS=124.83.239.128)
○ http://124.83.239.128/capacity
○ http://cs105.msg.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS=124.83.239.127)
○ http://124.83.239.127/capacity
○ http://cs106.msg.ogk.yahoo.co.jp/capacity  →  (CS_IP_ADDRESS=124.83.239.126)
○ http://124.83.239.126/capacity
------------------------------------------------------------
cs1/cs2サーバにユーザがアクセスした際に、実体サーバのcs101-cs106の
故障や負荷状況によって、アクセスを振り分けているのではないかと想像します。
#単なるラウンドロビンだという気も。
  
Wikiepdia - Yahoo! Messenger Protocol
http://en.wikipedia.org/wiki/Yahoo!_Messenger_Protocol
imfreedom.org - Yahoo
http://imfreedom.org/wiki/Yahoo
  
  
□ 結論
PidginからYahooメッセンジャに接続できなくなったのは、
cs1.msg.vip.ogk.yahoo.co.jp の名前解決をして返ってきた
124.83.219.223 に対するhttpリクエストに応答がないためです。
  
これを回避するには、cs1.msg.vip.ogk.yahoo.co.jp の名前解決リクエストに対して
124.83.239.240 (cs2.msg.vip.ogk.yahoo.co.jp)のIPを返すよう
静的な名前解決の設定をすれば良い。
(各OSにて、静的な名前解決に使用されるhostsファイルを編集する)
  
#もちろん、ソースコードを修正してビルドする手もあります。
  
いずれPidgin本体に修正が入れば、この回避方法は不要になり
場合によっては、将来的に問題となる可能性はありますが
現時点では、上記の方法で解決できます。
  
  
□ 付録 (124.83.239.0/24の範囲のYahooのドメイン一覧)
------------------------------------------------------------
$ for i in `seq 1 254`; do host 124.83.239.$i|grep -v "not found"; done
16.239.83.124.in-addr.arpa domain name pointer as1001.mail.ogk.yahoo.co.jp.
17.239.83.124.in-addr.arpa domain name pointer as1002.mail.ogk.yahoo.co.jp.
18.239.83.124.in-addr.arpa domain name pointer as1003.mail.ogk.yahoo.co.jp.
19.239.83.124.in-addr.arpa domain name pointer as1004.mail.ogk.yahoo.co.jp.
20.239.83.124.in-addr.arpa domain name pointer as1006.mail.ogk.yahoo.co.jp.
21.239.83.124.in-addr.arpa domain name pointer mailevtx101.msg.ogk.yahoo.co.jp.
22.239.83.124.in-addr.arpa domain name pointer mailevtx301.msg.ogk.yahoo.co.jp.
23.239.83.124.in-addr.arpa domain name pointer relay101.msg.ogk.yahoo.co.jp.
73.239.83.124.in-addr.arpa domain name pointer mix4203.mail.ogk.yahoo.co.jp.
74.239.83.124.in-addr.arpa domain name pointer mix4303.mail.ogk.yahoo.co.jp.
75.239.83.124.in-addr.arpa domain name pointer as1005.mail.ogk.yahoo.co.jp.
76.239.83.124.in-addr.arpa domain name pointer as1007.mail.ogk.yahoo.co.jp.
77.239.83.124.in-addr.arpa domain name pointer as1008.mail.ogk.yahoo.co.jp.
78.239.83.124.in-addr.arpa domain name pointer as901.mail.ogk.yahoo.co.jp.
79.239.83.124.in-addr.arpa domain name pointer as902.mail.ogk.yahoo.co.jp.
80.239.83.124.in-addr.arpa domain name pointer as903.mail.ogk.yahoo.co.jp.
81.239.83.124.in-addr.arpa domain name pointer as904.mail.ogk.yahoo.co.jp.
82.239.83.124.in-addr.arpa domain name pointer as905.mail.ogk.yahoo.co.jp.
83.239.83.124.in-addr.arpa domain name pointer as906.mail.ogk.yahoo.co.jp.
84.239.83.124.in-addr.arpa domain name pointer as907.mail.ogk.yahoo.co.jp.
85.239.83.124.in-addr.arpa domain name pointer as908.mail.ogk.yahoo.co.jp.
94.239.83.124.in-addr.arpa domain name pointer mailev401.msg.ogk.yahoo.co.jp.
95.239.83.124.in-addr.arpa domain name pointer mailev402.msg.ogk.yahoo.co.jp.
96.239.83.124.in-addr.arpa domain name pointer mailev403.msg.ogk.yahoo.co.jp.
97.239.83.124.in-addr.arpa domain name pointer mailev404.msg.ogk.yahoo.co.jp.
98.239.83.124.in-addr.arpa domain name pointer mailum401a.msg.ogk.yahoo.co.jp.
99.239.83.124.in-addr.arpa domain name pointer mailum401b.msg.ogk.yahoo.co.jp.
100.239.83.124.in-addr.arpa domain name pointer umr102.msg.ogk.yahoo.co.jp.
101.239.83.124.in-addr.arpa domain name pointer umr101.msg.ogk.yahoo.co.jp.
102.239.83.124.in-addr.arpa domain name pointer um103b.msg.ogk.yahoo.co.jp.
103.239.83.124.in-addr.arpa domain name pointer um103a.msg.ogk.yahoo.co.jp.
104.239.83.124.in-addr.arpa domain name pointer um102b.msg.ogk.yahoo.co.jp.
105.239.83.124.in-addr.arpa domain name pointer um102a.msg.ogk.yahoo.co.jp.
106.239.83.124.in-addr.arpa domain name pointer um101b.msg.ogk.yahoo.co.jp.
107.239.83.124.in-addr.arpa domain name pointer um101a.msg.ogk.yahoo.co.jp.
108.239.83.124.in-addr.arpa domain name pointer rbum102b.msg.ogk.yahoo.co.jp.
109.239.83.124.in-addr.arpa domain name pointer rbum102a.msg.ogk.yahoo.co.jp.
110.239.83.124.in-addr.arpa domain name pointer rbum101b.msg.ogk.yahoo.co.jp.
111.239.83.124.in-addr.arpa domain name pointer rbum101a.msg.ogk.yahoo.co.jp.
112.239.83.124.in-addr.arpa domain name pointer rbes104.msg.ogk.yahoo.co.jp.
113.239.83.124.in-addr.arpa domain name pointer rbes103.msg.ogk.yahoo.co.jp.
114.239.83.124.in-addr.arpa domain name pointer rbes102.msg.ogk.yahoo.co.jp.
115.239.83.124.in-addr.arpa domain name pointer rbes101.msg.ogk.yahoo.co.jp.
116.239.83.124.in-addr.arpa domain name pointer httpcs104.msg.ogk.yahoo.co.jp.
117.239.83.124.in-addr.arpa domain name pointer httpcs103.msg.ogk.yahoo.co.jp.
118.239.83.124.in-addr.arpa domain name pointer httpcs102.msg.ogk.yahoo.co.jp.
119.239.83.124.in-addr.arpa domain name pointer httpcs101.msg.ogk.yahoo.co.jp.
120.239.83.124.in-addr.arpa domain name pointer es106.msg.ogk.yahoo.co.jp.
121.239.83.124.in-addr.arpa domain name pointer es105.msg.ogk.yahoo.co.jp.
122.239.83.124.in-addr.arpa domain name pointer es104.msg.ogk.yahoo.co.jp.
123.239.83.124.in-addr.arpa domain name pointer es103.msg.ogk.yahoo.co.jp.
124.239.83.124.in-addr.arpa domain name pointer es102.msg.ogk.yahoo.co.jp.
125.239.83.124.in-addr.arpa domain name pointer es101.msg.ogk.yahoo.co.jp.
126.239.83.124.in-addr.arpa domain name pointer cs106.msg.ogk.yahoo.co.jp.
127.239.83.124.in-addr.arpa domain name pointer cs105.msg.ogk.yahoo.co.jp.
128.239.83.124.in-addr.arpa domain name pointer cs104.msg.ogk.yahoo.co.jp.
129.239.83.124.in-addr.arpa domain name pointer cs103.msg.ogk.yahoo.co.jp.
130.239.83.124.in-addr.arpa domain name pointer cs102.msg.ogk.yahoo.co.jp.
131.239.83.124.in-addr.arpa domain name pointer cs101.msg.ogk.yahoo.co.jp.
132.239.83.124.in-addr.arpa domain name pointer cgses104.msg.ogk.yahoo.co.jp.
133.239.83.124.in-addr.arpa domain name pointer cgses103.msg.ogk.yahoo.co.jp.
134.239.83.124.in-addr.arpa domain name pointer cgses102.msg.ogk.yahoo.co.jp.
135.239.83.124.in-addr.arpa domain name pointer cgses101.msg.ogk.yahoo.co.jp.
136.239.83.124.in-addr.arpa domain name pointer ums101.msg.ogk.yahoo.co.jp.
137.239.83.124.in-addr.arpa domain name pointer ums102.msg.ogk.yahoo.co.jp.
240.239.83.124.in-addr.arpa domain name pointer cs2.msg.vip.ogk.yahoo.co.jp.
241.239.83.124.in-addr.arpa domain name pointer httpcs2.msg.vip.ogk.yahoo.co.jp.
242.239.83.124.in-addr.arpa domain name pointer as009.mail.vip.ogk.yahoo.co.jp.
252.239.83.124.in-addr.arpa domain name pointer as010.mail.vip.ogk.yahoo.co.jp.
------------------------------------------------------------

トップ 最新 追記