2012-02-25

プラグイン開発中にこんなエラーが出る。

プラグイン開発中にこんなエラーが出る。
java.net.BindException: Address already in use: JVM_Bind

すでにポートが使われているということらしい。




普通に動いているから無視している。

はてなブックマークを整理したい。

はてブでタグのついていないブックマークとかを一掃したかったのだけれど、有料プランじゃないと使えないみたい。
仕方がないから、ブックマークをダウンロードしてから、サクラエディタの置換機能でがんがん削除することにした。
めんどくさー
http://sakura-editor.sourceforge.net/

2012-02-18

[eclipse][Plug-in]eclipseを停止する前に何か処理がしたい場合

ワークベンチリスナーを使って、ワークベンチの終了をコントロールする

PlatformUI.getWorkbench().addWorkbenchListener(
   new IWorkbenchListener() {

    @Override
    public boolean preShutdown(IWorkbench arg0, boolean arg1) {
      //ワークベンチの停止を通知する 
      //return false; だと、ワークベンチを終了しない
     return true;
    }

    @Override
    public void postShutdown(IWorkbench arg0) {
     //ワークベンチが停止した後に実行する
    }
   });

http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fui%2FIWorkbench.html

[eclipse][Plug-in][SWT]システムカラーを使用する

DisplayクラスのgetSystemColorメソッドを使って取得する。
16色のシステムカラーとボーダーの色とか、フォームの背景色などの色を取得することができる。
以下の例は赤色。

Display#getSystemColor(SWT.COLOR_RED)

http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2Fwidgets%2FDisplay.html

http://help.eclipse.org/indigo/index.jsp?topic=%2Forg.eclipse.platform.doc.isv%2Freference%2Fapi%2Forg%2Feclipse%2Fswt%2FSWT.html

[eclipse][Plug-in]プラグインのバージョンを取得する

MANIFEST.MFに作ったプラグインのバージョンを記入する欄があるけれど、これっていったいどこからとってくるんだよーと結構悩んだのでめも。

 Activator.getDefault().getBundle().getVersion().toString()

[DB2][SQL]DB2で大文字小文字を区別せずに検索したい


PostgreSQLだと、LIKEではなく、ILIKEを使用すればいいみたいだけれど、DB2でILIKEは使えないみたい


  1. 大文字小文字を区別しないDBを作る(下記参照)
    • http://www.ibm.com/developerworks/jp/data/library/techarticle/dm-0811nicola/
    • Unicode にしたらいいみたい。
  2. 大文字か小文字かに変換して検索する
    1. 大文字にする
      • SELECT * FROM TESTTB WHERE UPPER(HOGE) LIKE UPPER('%h')
    2. 小文字にする
      • SELECT * FROM TESTTB WHERE LOWER(HOGE) LIKE LOWER('%h')
大文字にしたら大文字で、小文字にしたら小文字で結果が出力されるので結果大文字小文字を区別しないときならいいけれど、区別するときは使えない。

[DB2][SQL]CASE文の結果に別名を付け、その別名を使ってWHERE句でレコードを絞る方法


SELECT A,B,
 CASE WHEN A=1AND B=2 THEN 'YES'
         ELSE 'NO' END AS CHECK
FROM CHKTABLE
WHERE CHECK='YES'

DB2でこれをやろうとしたら失敗した。
こうしないといけないみたい。
SELECT * FROM (
SELECT A,B,
 CASE WHEN A=1AND B=2 THEN 'YES'
         ELSE 'NO' END AS CHECK
FROM CHKTABLE ) AS CHK
WHERE CHK.CHECK='YES'

2012-02-12

swt shell 処理が終わるまで他の画面をスリープする


while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}

SB2連番を振るSQL


  INI DECIMAL(10) NOT NULL
              GENERATED ALWAYS AS IDENTITY
              (START WITH 1, INCREMENT BY 1),

2012-02-11

TFSでワークスペースを作成しマッピングする



TFSでワークスペースをコマンドラインから実行すると、なぜかTFコマンドを実行したフォルダに自動的にマッピングされるみたいで気持ちが悪い。
一度マッピングを解除してから、好きなフォルダにマッピングする必要がある。
マッピング対象のリポジトリフォルダが$/の場合は上書きされるのでマッピングの解除は不要
  1. ワークスペースを作る
    • tf workspace /new /noprompt ワークスペース名 /collection:チームプロジェクトコレクションのパス
  2. 作った時に勝手にされたマッピングを解除する
    • tf workfold /unmap /workspace: ワークスペース名  $/
  3. 好きなフォルダにマッピングする
    • tf workfold /map $/ C:\TFS /workspace: ワークスペース名 

TFSでユーザーAがプライベートワークスペースで行った変更をユーザーBがチェックインする方法



Team Foundation Server(以下TFS)ではまったのでメモ。
ユーザーAが自分のPCでチェックアウトして行った変更を、ユーザーBが承認してユーザーBのPCからチェックインするような処理がしたかったのだけれど、TFSは基本的にチェックアウトしたワークスペースからでないとチェックインができない。しかも、ワークスペースを複数のPCで共有してやるなんてことができないっぽい。
で、調べた結果、ユーザーAの変更をシェルブし、ユーザーBがシェルブをチェックインすればいいという結論に至った。以下簡単な手順
  1. ユーザーAのプライベートワークスペースにチェックアウトする
  2. ユーザーAはプライベートワークスペースでソースを変更する
  3. ユーザーAは変更をシェルブする
    • tf shelve /move /replace /comment:"コメント チェックイン時のコメントに反映される" シェルブ名 C:\tfs\VB\test.vb /noprompt
  4. ユーザーAの編集中のロックが外れる(/move がないと編集中のロックがされたままになるので、ユーザーBがシェルブをチェックインできない)
  5. ユーザーBはユーザーAの作ったシェルブをチェックインする
    • tf checkin /shelveset:シェルブ名;ユーザーA
  6. ユーザーAが行った変更(シェルブした時点の)がチェックインされる

システムのプロパティからWindowsのユーザーアカウント名を取得する

System.getProperties()でシステムプロパティの値が取得できる。
全部出したかったらProperties型の変数に一度突っ込んで、hogehoge.list(System.out)でがばっとコンソールに出力される

ピンポイントでほしいなら、
System.getProperties().getProperty("user.name")
といった感じにキーを指定してやればOK。

キーは下記を参照
http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/lang/System.html#getProperties()



2012-02-04

WindowsXPでTelnetを利用可能にする


telnetサーバーはProfessionalバージョンにはインストール済み。

  1. サービスを開く
    1. コントロールパネル
    2. 管理ツール
    3. サービス
  2. Telnetのスタートアップの種類を「無効」から「手動」か「自動」に変更する
コマンド

  • tlntadmn 
    • Telnetの状態が表示される
  • tlntadmn start
    • Telnet開始
  • tlntadmn stop
    • Telnet停止