思いつくままプログラミングネタを書き殴ります。GroovyMacOSX10.6.4でgroovyを使ってみたら文字化けって、さぁたいへん。ぐぐったら、以下のサイトに回答がありました。案がありますが、最後のまとめを参考にしました。groovyでスクリプトのエンコーディングを指定する~/.bash_profileに以下の記述を追加しました。-Dfile.encoding=UTF-8'ちなみに~/.bash_profileにはエイリアスも指定しています。以前はここにエンコードを記述しましたが、今はクラスパスだけになっています。test.groovyとなります。▲groovyコマンドの引数の順番で動きがおかしくなるgroovyではクラスをあらかじめ定義しておいてクラスパスが通っている場所に置いておくと、他のgroovyから利用できるようになります。App.groovyで実行できます。エンコーディングを指定した時に思わぬ落とし穴にはまりました。本来なら以下のコマンドで実行できるはずです。Testの部分でTestが見つからないとエラーになってしまいます。試してみた結果わかったのが、クラスパスを先にすることで避けられるということです。以下でうまく動きます。1.6.0_20です。▲Groovyでソース生成(INotifyPropertyChangedの実装)WPFでTreeViewでも表示しようかと思い、[C#][WPF]WPFのTreeViewコントロールの基本的な使い方というサイトを参考にしました。ツリーのデータを定義するクラスが必要とのことで、INotifyPropertyChangedを実装するわけですが、どうにもコピペするのがめんどくさいし、実際は変数に応じて似たようなソースを書かなければならないようなので、いっそのことソースを生成することにしました。ソースの自動生成ということで、Groovy+Velocityのおでましです。}}まずGroovyのソースですが、Grapeを仕組みを使って依存しているVelocityのライブラリを自動でダウンロードしています。いままでやっていた、ダウンロードしてファイルを展開して、適当な位置に配置して、クラスパス指定して・・・あたりの作業を一切やらなくなったので、かなりの時間短縮です。あとは、普通にテンプレート適応しています。テンプレートでは、マクロを使用しています。setterみたいな決まりきった関数を作るのに便利です。WPFでGroovy+Velocityとは奇妙な組み合わせですが、私の中ではソース生成では鉄板の組み合わせです。CalcのシートからテーブルへinsertするSQLを自動生成するgroovyのプログラムを紹介します。次に登録するテーブルです。KEY(kbn_code));区分分類名は登録しません。kbn_codeは区分分類コードと区分明細コードを結合したものを登録します。本命のgroovyのプログラムです。外部ライブラリとしてJXPathを利用しています。";\n"実行結果は以下の通りです。Velocityを使ったGroovyのサンプルです。data.xmlにあるデータを読み込んで、result.htmlを作成します。FileOutputStream("result.html"),"UTF-8")template.merge(context,fw)fw.flush()fw.close()■結果(result.html)<html><body>予定表??ハンカク予定表??ハンカク予定表??ハンカク予定表??ハンカク</body></html>今回のサンプルではXMLを使ってデータを読み込んでいますが、以前紹介したGroovyでDBアクセスを使えば、DBからも簡単に組み込めます。Velocityは、テンプレートファイルで細かい制御ができるのでソース生成によく使っています。テンプレート内のコマンドが最低限しか無いのが、ちょっとめんどくさいところもあります。一行入魂サイトにまとめがあります。(12/28)PostgreSQLとRubyを組み合わせてブラックリストチェックの速度を測ってみた。