流れるようなインターフェース
最近は、StringBuffer.append()みたいなのも、流れるようなインターフェースなのか。まぁ本質的に違いはないわけだけど。自分がコンテナクラスのインスタンスを手軽に造りたい時に使っているのは、こんなの。
public class CollectionBuilder {
private Collection collection;
public CollectionBuilder(Collection collection) {
if (collection == null) throw new NullPointerException("collection is null.");
this.collection = collection;
}
public CollectionBuilder add(Object o) {
if (collection == null) throw new IllegalStateException("Create new CollectionBuilder.");
collection.add(o);
return this;
}
public Collection get() {
if (collection == null) throw new IllegalStateException("Create new CollectionBuilder.");
Collection ret = collection;
collection = null;
return ret;
}
public Collection getUnmodifiable() {
return Collections.unmodifiableCollection(get());
}
}
public class TypedCollectionBuilder<T> {
private CollectionBuilder builder;
public TypedCollectionBuilder(Collection<T> collection) {
builder = new CollectionBuilder(collection);
}
public TypedCollectionBuilder<T> add(T o) {
builder.add(o);
return this;
}
@SuppressWarnings("unchecked")
public Collection<T> get() {
return (Collection<T>)builder.get();
}
@SuppressWarnings("unchecked")
public Collection<T> getUnmodifiable() {
return (Collection<T>)builder.getUnmodifiable();
}
}
Collection<String> c = new TypedCollectionBuilder<String>(new LinkedList<String>())
.add("Hello")
.add("World")
.getUnmodifiable();
S2JDBC
IBMでのSeasar2デモで、改ためて見てみた感想。継承マッピングとかdetachedとか複雑な機構を捨てるといういさぎ良さは好感が持てる。水と油を、所詮は水と油だとプログラマが認識して扱うのか(S2JDBC)、それともなんとか、その間を吸収しようと苦闘(JPA)するのかという違いかな。どっちも、その後の進化がどうなるのかを見てみたい。
現状では、Lazy loadとOpen Session In Viewについては、自分は賛成派だ。いったんDTOにfetchしてviewに渡すのは、分かり易いけどDTO層が余計に必要だし、view側で表示項目を追加したくなった時に、結局fetch処理も直さないといけなくなって、ちょっとだけ余分に手間がかかる。今年、仲間うちでStruts2 + Guice + TopLinkでOpen Session Viewを試してみたけど「邪道感は、ちょっとあるけど、やっぱり楽」という感想だった。ただ、作ったのが簡単なショッピングサイトだったんで、もっと複雑なアプリケーションで、やっかいなバグが発生していたりしたら、また感想も変わったかもしれないな。あと、Struts2はviewの処理でbeanにアクセスした時に例外が発生すると、XWorkの中で例外を飲み込んで捨ててしまうので、そのままでは、productionには使えない感じだ。
ATIドライバ更新
ATIのLinuxドライバ(Mobility RADEON 9600)が更新されていたので入れていみた。更新されるごとに、確実に速くなっている気がする。ThinkPadは、仕事用のWindowsと切り替えて使っていて、前は画面の描画速度に明らかな違いを感じたけど、最近は遜色無くなった。ただCompizとの相性が悪く、スタンバイからの復帰では画面が壊れる(操作は出来るんで致命的ではないけど)。もっともこれはドライバのせいじゃないのかもしれないが。
しかし、あれだな。昔、デスクトップ環境をLinuxに移し始めた頃は、アンチエイリアスが気に入らなかったけど、今は無い方(Windows XP)に違和感を感じるんだから、慣れとは恐ろしい。





