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

Moduleの区分化 part2

先日書いた「Moduleの区分化」は、モジュール定義文 configure での exose() や install() を理解するサンプルとしてよいが、現実的でないので、 もう少し現実的に近い形式を書いてみた。 以下、Guice.createInjector の引数の形式は、Module...m あるいは、…

Velocity の foreach 使い方にすぎない

Velocity1.6.2の機能をうまく使えば org.apache.commons.lang.StringUtils#join を使わなくても もっとスマートにできるはず。 → velocityHasNext変数を判断してカンマを付与するかどうか。。。 ここに書いたのは、Velocity の foreach の使い方であり CSV …

Velocity最新を使おう

プロジェクトの中で開発中、一度導入したツールのバージョンUPに目が届かないことが多い。 Velocity1.6.2 が、2009年3月にリリースされていた。 1.5 との差を調査するのに、まずはJARに入っている velocity.properties の diff を調べてみた。 (1) runtime…

Moduleの区分化

Google guice2.0 になって Module の記述を区分化するのに PrivateModule が導入された。 class BlueModule extends PrivateModule{ private int price; protected BlueModule(int p){ this.price = p; } @Override protected void configure(){ install(new…

Moduleのオーバーライド

Google guice2.0 で可能になった com.google.inject.Module をオーバーライド認識させること。 一見、地味な機能であるがバインド定義状況が変化していく場合にとても便利であろう。 Injector injector = Guice.createInjector( Modules.override(new FirstM…

@Providesをつけて

Google guice2.0 から登場した @Provides 今まで Provider<T> 実装クラスを準備しなければならなかったのを Module 実装クラス、 あるいは、AbstractModule 実装クラスの記述で、 @Provides を付与したメソッド(名前なんでもよい)を書けばよい。もちろん古い</t>…

待望のGoogle guice2.0

遂に正式に公開された、Google guice2.0 さっそく試してみよう。 まずは、multibindings の MapBinder から、 注意 すべきは、MapBinder を使うのに、guice-2.0.jar 以外に、 同梱で配布された guice-multibindings-2.0.jar を使用しなければならない。 Map …

なぜマクロの解釈が逆に、

再び、Velocity の件、動物的コーディング考察-8 で取り上げたマクロ、 #parse 文で、#parse(マクロを記述したvmファイル) と、 書いてみる。#parse文の後に、マクロ呼び出しを行うと → NG!である。 #parse 呼び出し側の vm ファイルに、#macro を書いて …

printf

String に出力したくなったので、 public static String printf(String fmt,Object...o){ ByteArrayOutputStream baos = new ByteArrayOutputStream(); PrintStream p = new PrintStream(baos); p.printf(fmt,o); p.close(); return baos.toString(); }

パスワード入力

Eclipse IDEでの実行は、Console にNULLが返るので使えないけど Console console = System.console(); if (console != null){ char[] passwd = console.readPassword("%s: ","password"); String passwdStr = new String(passwd); System.out.println(passwd…