kilim で Java でもジェネレーター

TwitterErlang をきっかけに注目を集めるようになった軽量プロセス(とかマイクロスレッドとか)を Java で実現するためのライブラリに kilim があります。

夜中に突然 Java が書きたくなって、まだ Examples を動かしてみた程度ですが、とりあえず Python のジェネレーターっぽいことができるのは分かったので記事にしておきます。暇と知識が増えたら、もうすこし突っ込んだ記事もあげる予定(自信がないので今回、ですます調)。

PostgreSQL 7.4 の JDBC ドライバをビルド

PostgreSQL 7.4.13 以降で起こる異なるエンコーディング間の変換エラーがいまだに尾を引いている。

悩んだ末、JDBC ドライバのソースコードを読むだけではなく、実際にビルドして動作を確認してみた方がいいだろう、ということになった。JDBC ドライバにパッチを当てて問題を回避することも視野に入れている。できれば、やりたくないけれど...。

PostgreSQL 7.4 の JDBC ドライバをビルドするために必要な手順は、おおまかに分けると以下のようになる。

PostgreSQL 7.4.13 以降、異なるエンコーディングでの変換エラー

PostgreSQL 7.4.18 で以下のようなエラーが出力されるようになった。

ERROR:  22P05: character 0xe28094 of encoding "UNICODE" has no equivalent in "EUC_JP"

PostgreSQL の JDBC ドライバはバックエンド (PostgreSQL) のバージョンが 7.3 以降の場合、接続時に必ず set client_encoding = "UNICODE" を発行する。

以下は org/postgresql/jdbc1/Attic/AbstractJdbc1Connection.java の 509 行目から抜粋。

Java で要素がひとつだけのコレクションをつくる

Java でときどき、要素がひとつだけのコレクションがほしくなるときがある。たとえば、利用しているライブラリのメソッドが引数としてコレクションを要求しているが、渡したいオブジェクトがひとつしかないとか。

こういう場合、コレクションの型が List だとすると、まず思いつくのは、新しく生成した ArrayList に要素をひとつだけ追加する方法だ。

List<String> list = new ArrayList<String>();
list.add("element");
doSomething(list);

だが、この方法は変換に一時変数が必要になり不格好だ。

Java のプロジェクトで一番長いクラス名

ふと気になって書いてみた。

  1. 1
  2. 2
  3. 3
  4. 4
(17 記事)

Want fries with that?

Open Source Projects