雑記帳 2010年 5月第3週

2010/05/09 Sun.

不動産屋に行ってきました。希望条件に合致するのはネットでも少なかったし、実際に店舗で聞いても結果は変わらんかった。
現時点で一ヶ所しか納得の行く場所が無かったので、とりあえず来週にそこを見学することに。つーか、決まりっぽいかなー。
多摩センをわかる人なら見ればわかるだろうけど、「ここ」っすね。大通り沿いなのが気になるけど、室内でも音は気になるの?

2010/05/23 修正
「ここ」と書いてある箇所のリンクを削除。

2010/05/10 Mon.

今日で半分くらいの試験項目が終わればいいかと思ってたら、全部終わってしまった。意外に手間取らなかったな。
明日はいい加減にSpringとHibernateの連結部分を真面目に調べよう。Finderとかの扱いがどうにもイマイチなんだよな。
朝の品川港南口で、リプトンが新商品の試供品を配ってた。しかも2本。おかげで飲み物の出費が無し!明日もやってくれー。

最近のアクセスログを見ると、Wizardry関連が半分くらいと、いまだにタグメールとかの情報で来る人がいるみたい。
いや、あの辺のタグメールはまともに動く保証も無いし、そもそも情報古すぎる。それでも需要はあるのかなー。
WebLogicの情報で来る人もいるみたいだけど、頼むからウチみたいなのを参考にしないでくれ。サンプルになるかも怪しいし。

2010/05/11 Tue.

SpringとHibernateを使った最小限の構成のプロトタイプが完成。後はこれを延々と拡張していけば何とかなりそうだ。
でも結局Finderを使ったモノはメンドかったので、hqlもJavaソース上に持たせることに。外に出す意味って何なんだ?
明日も継続して色々整理しておくか。可能ならばFinderを使ったバージョンも用意しておきたい。検討事項ばっかりだな。

2010/05/12 Wed.

今まで不思議に思ってなかったけど、気になってきた。例えばSpringのMethodInterceptorの実装で、こんなのを書くじゃん。

public class LoggingInterceptor implements MethodInterceptor {
    private Logger logger;
    public Object invoke(MethodInvocation invocation) throws Throwable {
        (中略)
        Object result = invocation.proceed();
        (後略)
    }
}

reflectのパッケージって全然使ったことないから、実行対象のメソッドの戻り値がvoidだったらどうなるのか知らなかった。
invocation.getMethod().getReturnType()の戻り値をとりあえずtoString()したら、voidって出た。で、resultもnullになる。
戻り値が無いからnullになるのはわかるんだけど、戻り値が無いのか、それとも戻り値がnullだったのかがわかりにくい。
Method#getReturnType()Class<T>を返すけど、toString()して比較するのは非常に気持ち悪いな。直接比較できるの?

Object o1 = new Object();
Object o2 = new Object();
Class<?> o1Class = o1.getClass();
Class<?> o2Class = o2.getClass();
// trueが返る
System.out.println(o1Class == o2Class);
// trueが返る
System.out.println(o1Class.toString().equals(o2Class.toString()));}

Class<T>ってのは、型が同じなら常に参照も同じなのか。あ、前提としてクラスローダが同じだってのはあるけど。
Javadocを確認してみると、Class<T>equals()はオーバーライドしてないみたいなので、単純に参照の比較でいいみたい。

public class LoggingInterceptor implements MethodInterceptor {
    private Logger logger;
    public Object invoke(MethodInvocation invocation) throws Throwable {
        (中略)
        Object result = invocation.proceed();
        Class<?> clazz = invocation.getMethod().getReturnType();
        this.logger.info(clazz == Void.TYPE ?
                "戻り値無し" : result == null ? "戻り値null" : result.toString());
        (後略)
    }
}

えー、本当にこんなことして書き分けないといけないの?何かもっと楽にできる方法があるんじゃないの?誰か教えて下さい。
Void.TYPEvoid.classと同じだったのは初めて知った。==の評価もtrueになるのか。AOPだとreflectは使う機会多そうだな。

2010/05/13 Thu.

Strutsをナメてました。本格的に触ったのは初めてだけど、想像以上に難しいというかややこしい。便利なのかもしれない。
struts-config.xmlは色々な書き方ができるから、どんな記述形式を採るのが妥当なのかが難しい。どうしたもんかね。

2010/05/14 Fri.

最強のLoggingInterceptorを作る!と意気込んでみるけど、どうせDEBUGレベルでしか使わないと思うんだよな。
<html:form>を使う場合って、submit単位でformを分けたほうがいいのかな。一つにまとめちゃうとDispatchActionを使うのか。
FormBeanは考えて作らないとダメっぽいな。共通情報は親クラスに持たせ、後は画面固有のを子クラスに持たせるのが普通?
適当に作ってみるかーと思って適当に設計してみたけど、FormBeanの数がおかしなことになった。来週は真面目に設計しよう。

2010/05/15 Sat.

今日は物件の下見です。14時くらいに不動産屋に行って、そこから徒歩で向かうことに。駅から徒歩5分ってやっぱり便利だ。
片っ端から写真を撮りまくり、ついでに計測が必要そうな場所はメジャーでざっと採寸しておく。持ってきて正解だった。
ニュータウン通り沿いってことで、やっぱり通りの音は結構聞こえるね。我慢できないこともないけど、就寝時はどうなんだろ。
風呂、トイレ、洗面台は想像以上に綺麗だった。壁に妙なシミがいくつかあるのが気になるけど、まあスルーできる範囲。
インターホンがモニタ付きなのは初めて知った、そんな情報は出てたっけか?あと、靴箱が妙にデカい。実家並みにデカい。
写真を164枚ほど撮ってきたので、ちょっとそれを眺めながら情報を整理しておこう。また明日も不動産屋に行ってきます。