Matisse4MyEclipse
marsさんとこで発見。EclipseでNetBeansのGUIエディタを使う。
これって、どう見るべきかな。Sunから見たらNetBeansで育てたものを持って行かれたと感じるかもしれないし、IBMからみたらswtの危機と見えるかもしれない。
開発者にとっては選択肢が増えて嬉しいわけで、ありがたく使わせていただこう。しばらくEclipseに浮気してみるか。しかしJUnit実行時に-eaできないのは、未解決だしなぁ。
日比谷公園
つつじを見に池上梅園に行ってみたのだけど、ほとんど咲いていなかったので、そのまま日比谷公園まで足を伸ばしてみた。
ポピーが満開だった。つつじはほとんど咲いていなかった。どうも日比谷公園のつつじは、あまり咲かないようだ。なんか最近135mmばかり使っているような…

20D EF135mmf2L 1/2500秒 F2.0 ISO100

20D EF135mmf2L 1/1250秒 F2.8 ISO100

20D EF70-200mmf2.8L IS@200mm 1/1600秒 F4.0 ISO100

20D EF70-200mmf2.8L IS@200mm 1/1250秒 F4.0 ISO100

20D EF-S10-22mm@22mm 1/640秒 F4.5 ISO100

20D EF-S10-22mm@17mm 1/800秒 F4.0 ISO100

20D EF70-200mmf2.8L IS@200mm 1/400秒 F4.0 ISO100

20D EF70-200mmf2.8L@195mm 1/125秒 F4.0 ISO100

20D TS-E45 1/100秒 F6.3 ISO100

20D EF135mmf2L 1/1600秒 F2.2 ISO100

20D EF135mmf2L 1/640秒 F2.8 ISO100

20D EF135mmf2L 1/1250秒 F2.2 ISO100

20D EF135mmf2L 1/1600秒 F2.2 ISO100

20D EF135mmf2L 1/800秒 F2.8 ISO100

20D EF135mmf2L 1/400秒 F4.0 ISO100
904SHゲット
恵比寿のボーダフォンショップで5,250円だった。

なぜか家族で同じ機種。
内蔵カメラはAF付きだし、ブラウザはVGAなので見易いし、電子コンパス登載でナビ付き。bluetoothでPCへのファイル転送も簡単(赤外線だとXPのバグでうまくいかないので助かる)。なんか音が良くてびっくり。これは付属のカメラで撮ってみたもの。

暗い室内で、これだけ写れば十分。
クラスタリング
後半の研修は面白い。ステートフルセッションビーンでも、セッションパーシスタンスと同じ仕組みを使えば、フェールオーバできるのだな。
しかし、WebLogicだったかの記事でも見たけど、セッションパーシスタンスは、DBに持ってもメモリーで保持してもパフォーマンス的には大して変わらんらしい。ってことはフェールオーバまで考慮するなら「メモリー上だから軽い」とか思って、お気楽にセッションになんでもかんでも格納するのは浅はかということだ(アプリ開発者は、そこまで考えないだろうから、いかにもありがちだ)。しかも今までの経験では仕事が終ったあとに、セッションからオブジェクトをちゃんと削除しているコードなんて見たことないし。多分大量のゴミがタイムアウトまで残っているに違いない。
むしろLOBパターンでアプリケーションから明示的にDBに保存した方がトランザクショナルにも扱えるし、いいのかな。でも作業途中でやめちゃうユーザはいるから、いずれにせよタイムアウトの考慮は必要か。
研修漬け
ソフトウェア部隊のお手伝いをすることになり、今週は研修漬け。
前半は、WebSphereのプログラミングといいつつ実際はServlet/JSPだった。中身的には8割くらいJ2EEの話だったので退屈。PC持って行って正解。でも、この内容は普通の人には製品特化な内容よりも、ある意味良心的かもしれない。
明日からはクラスタリングの構成なので、もう少し楽しめそうかな。
最近良くやるミス
新規にビルドディレクトリ作る時に既存のをcp -rでコピー(build.xmlとかディレクトリ構造が同じなので)。でも、subversionで管理されていて、.svnまでコピー。
「あれ? commitしたのに入ってない!」
AirH"
会社の電話がPHSからauになったんだけど、auのデータ通信は定額じゃないので、AirH"カードが配られた。今日地下鉄に乗りながらダメもとで使ってみたら、びっくり。走行中は完全に電波が来なくなるのだけどセッションは切れずに、駅に着くと復活する。へ〜、これまで使ってたPHS通信とはえらい違いだ。これなら使おうという気になるなぁ。TwoLink解約するか…
Serlvet 2.5
Servlet 2.5だと、サーブレットコンテナがDIも提供することになるのか。Java EE5のtutorialだと、サーブレットがUserTransactionのインジェクションを受けて、トランザクション制御してるけど、サーブレットコンテナ自身がJTAもサポートしないといけないんだろうか。サーブレットコンテナの実装次第とか言われると、移植性で悩みそう。
@Resource UserTransaction utx;
...
try {
utx.begin();
doBusinessLogic();
utx.commit();
}
catch (RuntimeException r) {
utx.rollback();
throw r;
}
catch (Error e) {
utx.rollback();
throw e;
}
スタートメニューで隠れるやつ
Windowsのスタートメニューって良く使うやつだけが表示されるって触れこみだったと思うんだけど、なんかたまに全く逆に良く使うやつが隠れていることないですか? うちだけかなぁ。
個人情報保護法
なんか色々と面倒なことになってきた。
自宅のPCでVPNで仕事しても良かったのだけど「仕事に使うPCは他の人に触らせないこと」というお触れが出た(ユーザを切り替えろとかじゃなく)。
今まで2年間業務に「も」使用するという条件でThinkPadが安く買えたのだけど、2年間業務に「しか」使えないという条件になってしまった。なんで個人の金で業務にしか使えないPCを買わなきゃならんのだ…。今回切り替え時期だったのだが、とりやめ。
完全個人もちということだと、別にlenovoでなくてもいいな。Core duoで4GB入って2.5kgくらいのは出ないものか。と思ったら結局lenovoにつきあたったり。しかし何で日本は2GBまでって書いてあるんだろう。純正オプションに1GBのメモリモジュールしかないだけで、ハードウェア的には4GB認識するんだろうか。
JDBCで時刻書き込みすると、分以下が0になる。
こんな風にして現在時刻をMSDEに書き込んでいるけど、分以下が0になるという。
stmt.setTimestamp(++index, new java.sql.Timestamp(new java.util.Date().getTime()));
Dateをnewしているところにツッコミたくなったが、それは本質ではない(ていうか、下手をすると自分が書いたものかもしれないし ^^;)。とりあえずMSDEをここから。JDBCをここから落として試してみる。ちゃんと動く。
話を聞いてみると、MSDE2000じゃなくて、MSDE + ブリッジだった。ブリッジなんてすっかり忘れてしまったので、悩みながら設定。やっぱりちゃんと動く。と、思ったらIBM 1.3.1だと起きるが、SUN 1.3.1だと起きない!
IBM版のブリッジってSUNのをそのまま持ってきているんじゃないのか。とりあえず、こんなんで回避。
stmt.setString(++index, new java.sql.Timestamp(System.currentTimeMillis()).toString());
OpenJPAがApacheのincubatorに
GeronimoもOpenEJBからこちらに乗り換えるのかな。OpenEJBもOpenEJB3のプランはあるようだけど、まだまだ先のようだし。ま、Geronimoの構造からいって、好きな方に簡単に乗り換えられるから、お互い頑張って欲しいな。EJB3.0への対応という点では大きな前進だ。dWにJBoss載せざるを得ないほど追いつめられていたし。
意外と早くJ2SE 5.0がサーバーサイドに降りてくるかもしれないなぁ。
java-mode-indent-annotations.el
java-mode-indent-annotations.el
EmacsWikiで発見。アノテーションを使った時にインデントがずれないようにする。Meadow 2.10では、site-lispの下に置いて、.emacsに
(require 'java-mode-indent-annotations) (defun my-java-mode-hook() (java-mode-indent-annotations-setup)) (add-hook 'java-mode-hook 'my-java-mode-hook)
で使用できた。
developerWorks
EJB 3.0 Java Persistence APIを使用したエンタープライズ・アプリケーションの設計
いや、よもやここにJBossが登場してくるとは思わなかった。とはいえSunのApplicationServer持ってくるわけにもいかないか。^^; それはともかく、
「ORマッピング層は、徹底的なテストが必要な重要な層です。」
やっぱりそうだよね。O-Rマッパってどうしても完全に動きが読めないので、きっちりテストしないと落ち着かない。
「WebとEJBコンテナ間の統合に関する問題です。この分野においては、Springの方がいまだに優位を保っています。」
これって何を指しているのかな。JSPにはEJB参照をInjectionできないから、JNDIルックアップをしないといけない点を指してる??
しかし、JSPからEJBを直で呼び出すなんてやるんかな。でもEJB自体が簡単にテストできるようになったから、これもありか。
猫ベッド小型化計画
小さな箱で、猫ベッド作成。これなら机の上でもあんまり邪魔にならない。

いや、温泉じゃなく…

そんなにキッチリはまらなくても…

どうやら気に入ってくれた模様。

君には小さ過ぎない?

みっちり。猫ってエコノミークラス症候群とか心配ないんだろうか。
WSDLの生成
jax-rpcの頃って、あらかじめWSDLを作成してwarに仕込んでいたように記憶しているのだけど、JavaEE5のwsgenで作ると、WSDLが生成されない。どうやらコンテナ側で動的に生成されているようだ。JAX-WS 2.0のspecを読んでみたら、5.2.2に以下の記述があった。
The WSDL contract for an endpoint is created dynamically based on the annotations on the implementor
class, the Binding in use and the set of metadata documents specified on the endpoint (see 5.2.4).
Conformance (WSDL Publishing): An Endpoint that uses the SOAP 1.1/HTTP binding (see 10) MUST
make its contract available as a WSDL 1.1 document at the publishing address suffixed with ”?WSDL” or
”?wsdl”.
で、5.2.4も見てみると、
A set of metadata documents can be associated with an Endpoint by means of the setMetadata-
(List
アノテーションでバイトコードに仕込まれたメタデータからWSDLを自動生成するけど、ユーザが自分で与える事も可能のようだ。
clone()
J2SE 5.0からは、戻り値の型をObjectにしなくて良くなった。
public class Test2 implements Cloneable {
public Test2 clone() throws CloneNotSupportedException {
return (Test2)super.clone();
}
}
javapでバイトコードを見てみると面白い。
$ javap Test2
Compiled from "Test2.java"
public class Test2 extends java.lang.Object implements java.lang.Cloneable{
public Test2();
public Test2 clone() throws java.lang.CloneNotSupportedException;
public java.lang.Object clone() throws java.lang.CloneNotSupportedExcption;
}
おぉ、戻り型が違うだけの同名メソッドが宣言されてる。共変メソッドの時のように、Test2 Test2.clone()は、Object Test2.clone()を呼び出しているのかと思いきや、
public Test2 clone() throws java.lang.CloneNotSupportedException; Code: 0: aload_0 1: invokespecial #2; //Method java/lang/Object.clone:()Ljava/lang/Object; 4: checkcast #3; //class Test2 7: areturn public java.lang.Object clone() throws java.lang.CloneNotSupportedException; Code: 0: aload_0 1: invokevirtual #4; //Method clone:()LTest2; 4: areturn
逆だった。ちなみにこのコード、-target jsr14でコンパイルすることが可能で、実際にJ2SE 1.4でも動く。戻り型だけが違う同名メソッドがあっても1.4は大丈夫のようだ。
public class Test3 {
public static void main(String[] args) throws Exception {
Test2 test = new Test2();
test = test.clone(); // キャスト無し!
}
}
$ d:/j2sdk1.4.2_08/bin/javac -classpath . Test3.java SHANAI@ruimon /tmp コンパイルできてしまう! $
GlassFish
JavaEE 5のSDKには、Open sourceアプリケーションサーバであるGlassFishバンドル版があるのだけど、1.3とか1.4の頃のつもりでいると、いい意味で不意打ちをくらう。管理コンソールはシャレてるし、信じらないほどサクサク動く。NetBeansといいSunは頑張っているね。
JavaEE 5
EJB 3.0をちょっと試してみるとすると、JBossか、SunのSDKになりそうだけど、JBossはドキュメントが有料だし、とりあえずSunに流れてみる。
なんかTutorialが1000ページ超えてますが... こういうのを早々に作って、どんどん公開するというのはすごい… どこも覇権争いで必死だ。
auが2台に
会社のケータイがau(W21CAII)になった。これでACアダプタが共通で使えるかと思ったら、なんかW21S用とは微妙に違う。なんで、こういうとこバラバラにするんだろうか。
W21CAIIはカメラにAFがついているので、結構いいかもと思ったけど、これって赤外線がついてないのか。miniSD買おうかと思って見てみると、知らないうちにSDってCFなみに安くなってる。後で他にも流用とか考えると中途半端な容量を買うのも何だし。と思ったら、どうもこの端末は2GBだと正しく認識されないらしい。んー、やっぱりやめとくか。
EJB3.0
今週から研修漬けのはずだったのが、遅れているので、EJB3.0のProposed Final Draftを眺めてみる。ある程度EJB2.1までの知識があるなら、ejb-3_0-pfd-spec-simplifiedが簡潔でいい感じ。
メソッドやフィールドを"declare"ではなく"define"と言ってみたり、フィールドを"instance variable"と言ってみたり、どうも落ち着かない。しかしようやく、あまり身構えずに使ってみようかという感じになってきた。
[備忘録] 時間が無い時に、とりあえずやっておくインスペクション
FindBugs
grep -r -i "double" .
grep -r -i "float" .
grep -r "synchronized" .
grep -r 'catch[ ]*[(]\(Runtime\)\?Exception' .
grep -r 'new String[(]' .
本門寺の桜
丁度満開。すごい人だった。

Canon EOS 20D 1/1600 F4.0 ISO100 EF70-200mmf2.8L IS@70.00(mm)

Canon EOS 20D 1/125 F11.0 ISO100 EF-S10-22mm@10.00(mm)

Canon EOS 20D 1/200 F9.0 ISO100 EF-S10-22mm@10.00(mm)

Canon EOS 20D 1/1250 F4.0 ISO100 EF70-200mmf2.8L IS@148.00(mm)

Canon EOS 20D 1/800 F4.0 ISO100 Flash:on EF70-200mmf2.8L IS@200.00(mm)

Canon EOS 20D 1/400 F6.3 ISO100 EF70-200mmf2.8L IS@70.00(mm)

Canon EOS 20D 1/500 F4.0 ISO100 Flash:on 50.00(mm)

Canon EOS 20D 1/250 F4.0 ISO100 Flash:on 70.00(mm)

Canon EOS 20D 1/500 F4.0 ISO100 Flash:on 110.00(mm)

Canon EOS 20D 1/800 F2.0 ISO100 EF135f2L

Canon EOS 20D 1/250 F4.0 ISO100 EF135f2L

Canon EOS 20D 1/1000 F4.0 ISO100 Flash:on EF70-200mmf2.8L IS@140.00(mm)

Canon EOS 20D 1/4000 F2.0 ISO100 Flash:on EF135f2L
馬酔木もひっそりと咲いていた。

Canon EOS 20D 1/8000 F2.0 ISO400 EF135f2L

Canon EOS 20D 1/6400 F2.0 ISO400 EF135f2L













開発の現場No004