2009-01-01から1ヶ月間の記事一覧

jvmの起動時にロケール指定

jvmの起動パラメータに下記の指定でロケールが変更できる。 -Duser.language=en -Duser.country=USちなみにEclipseではアプリケーションとしての起動パラメータに -nl があり、-nl en_USなどと指定するとそのロケールで動作している模様。

Groovyのeachの動作

配列のように順次取り出せる構造になっている対象に対するeachは各要素でブロックを実行し、そうでない場合は自分自身で一回だけブロックを実行している模様。 def a = new Expando() a.id="id_a" [a].each{ println it } /* 結果: {id=id_a} */ a.each{ pri…

使っているEclipeプラグインのまとめ

Editor Enhancements 主にemacsのような矩形選択、編集ができる。その他emacs風の編集が少しできる。 プロパティエディタ これがないとめんどくさいです。 checkStyle ファイル単位でのチェックスタイルの有効無効の切り替えは、右クリックメニューから行う…

タブの代わりにスペースを使うようにする

タブの代わりにスペースを使うようにする設定。 Eclipse3.3で、 Preferences->Java->Code Style->Formatterを選択。 プロファイルのEditを押してEdit画面を表示。Tab policyでSpace onlyを選択するとTAB押下時にスペースが挿入されるようになる。

Groovyでzip

Groovyが関数型言語の特徴を汲んでいるのなら、おそらく実装されているはず。 zipは[1,2,3]と["a","b","c"]のリストを [[1,"a"],[2,"b"],[3,"c"]]のように掛け合わせる。 GroovyではList.transpose()メソッドで実装されている。 [[1,2,3],["a","b","c"]].tra…

利用方法

def mock = new MockFor(Callee.class) mock.demand.fn01{printLn "fn01"} mock.demand.fn02{printLn "fn02"} mock.use{ def obj = new Callee() obj.fn01() obj.fn02() } MockForのコンストラクタのパラメータに処理を書き換える対象となるクラスを渡す。 d…

Groovyのモックとスタブ

単体テストを行う際、クラスのメソッドの一部を動的に書き換えて実行できると、テストが行いやすくなるため、テストコードの量やテスト時間の短縮になる場合がある。 ここではMockForとStabForについてメモ。

GroovyでTetNG

TestNGはJavaのテスティングフレームワーク。 テスト用のアノテーションが用意されていて、これらを指定することでテストや前後処理を行うことができる。 @Test テスト用のメソッドに指定 @BeforeMethod テスト用のメソッドごとの前に実行。@AfterMethodは後…

GroovyでXPath

Groovyはあまり関係ないかもしれない。 読み込みたいデータ。 String books = ''' <books> <book> <id>01</id> <name>book1</name> </book> <book> <id>02</id> <name>book2</name> </book> <book> <id>03</id> <name>book3</name> </book> <book> <id>04</id> <name>book4</name> </book> </books> '''// この辺のやり方はGroovyのドキュメントから def builder = Doc…

XML出力

XStreamを使うとXMLファイルJavaクラスのマッピングをやってくれるので簡単。XStramへの依存関係をなくしたい場合、XMLファイル->JavaはDom、XPATHとか好きなものを使う。Java->XMLファイル出力は、自力で行うか、JDK標準で用意されているjavax.xml.transfor…

groovyのカテゴリ

カテゴリとはObjective-Cで実装されていた機能で、クラスのメソッドの定義を複数のファイルに分けたり、カテゴリ単位で実行時にメソッドを読み込むことで既存のクラスを拡張することができるというもの。 groovyにおいても、クラス自体には直接触らずに、ク…

DOMのメモ

たまにやるとはまってしまう… DocumentBuilderFactoryからDocumentBuilderを取得した後。 Document doc = builder.parae(path); // parse結果のドキュメントのチャイルドノードでルートのノードとなる. Node root = doc.getChildNodes().item(0); NodeList l…