るいもの戯れ言HOME

7月
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

過去の記事
2005年12月
2005年11月
2005年10月
2005年9月
2005年8月
2005年7月
2005年6月
2005年5月
2005年4月
2005年3月
2005年2月
2005年1月
2004年12月
2004年11月
2004年10月
2004年9月
2004年8月
2004年7月
2004年6月
2004年5月
2004年4月

カテゴリー
Weblog

ブックマーク
はてなダイアリー - unoの日記
猫の手もかりたーい♪
L'eclat des jours
mia's eyes

Powerd by
News Handler


■ お引越し

blogも自宅側で動かす事にしました。引越し先

投稿時間 2005-12-10 12:54:47
コメント(数字をクリックするとコメントできます):0 Track back:0


■ Apache Derby入門

Derbyの入門を書いてみました。
たいした事は書いて無いけど、初めて使ってみる時には役に立つかと。

投稿時間 2005-12-09 18:24:33
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 健康食品

医者が広告に名前を出すだけで既に犯罪。そうだったのか。知らなかった。
広告に医師が名前を出していたら、信用しない方がいいということか。

投稿時間 2005-12-09 18:07:02
コメント(数字をクリックするとコメントできます):1 Track back:0


■ コメント

* @param strKokyaku 文字列
* @param txtKikaku 文字列

型なんか、ほっといたってJavaDocが書いてくれるよ。
頭のstrとかtxtとかって何だよ...

投稿時間 2005-12-09 10:38:20
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 英辞朗って

なんで名詞のCountable/Uncountableが載ってないんだろう。
不便だ。

投稿時間 2005-12-08 20:12:55
コメント(数字をクリックするとコメントできます):0 Track back:0


■ しめだし

扉の向こうでは、ごはんが振舞われています。


「開けてください」

最近太り気味だから、がまんがまん。

投稿時間 2005-12-08 19:33:12
コメント(数字をクリックするとコメントできます):0 Track back:0


■ このツールを提供することでGoogleにはどういうメリットがあるのでしょう。

我々はプロダクトを開発するときに、あまりそういうことは考えないんです。例えばGoogle Earthにしても同じで、Googleに何かのメリットがある開発しようという発想ではなく、「こういうものがあったらいい」「便利だ」という発想に基づいています。

は〜、なんか安心したよ。いっつも「これでGoogleはどうやって儲けるんだ?」って感じのサービスが出て来て、でも知らない内にちゃんと商売になってる。これ、最初っからビジネスモデルができているなら、経営者は神だなと思っていたので。それでも、後付けでちゃんとモノにしているだけでもすごいわけだけど。

投稿時間 2005-12-07 19:28:55
コメント(数字をクリックするとコメントできます):0 Track back:0


■ no + 名詞

no brotherもno brothersも正しい

no + 名詞は必ず単数だと覚えていたよ... 学校でそう習った記憶があるんだけど、中途半端に記憶していたのだな。

投稿時間 2005-12-06 22:34:39
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 多重度(Multiplicity)と基数(Cardinality)

なんとなく、同じ概念として扱ってきたのだけど、ここによると、

Cardinality: 特定のセットもしくは集合での要素数
Multiplicity: セットで想定される多重度の値の範囲

なので、一般に用いられるCardinalityの使い方は、よろしくないと言ってる?
データモデルでは慣習的にCardinalityを使ってきたので、置いておくとして、それ以外(XSDとか)ではMultiplicityを使った方がいいんだろうか。

投稿時間 2005-12-05 15:12:57
コメント(数字をクリックするとコメントできます):0 Track back:0


■ OperaでGMailにアクセスできない

数日前からOperaでGMailにアクセスできなくなった。
FireFox 1.5も出たし、ちょっと使ってみたら、大量リンクを一度に開いた時のパフォーマンスも悪くないし、乗り換えようかなぁ。しかしメモリ使用量は相変わらず重め。

OperaでGMailが開けないの方の問題はこの方法で回避できた。

投稿時間 2005-12-05 12:46:05
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 年賀状

今年はコニミノのサービスに頼んでみた。ブラウザ上で印刷範囲の微調整が出来ていい感じなのだけど、いかんせん遅い。クリックして2-3分待ちがザラ。あれで速かったら言う事無いのだけど。

投稿時間 2005-12-04 17:05:17
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 猫ページ更新完了

猫ページ更新完了。

投稿時間 2005-12-04 16:57:19
コメント(数字をクリックするとコメントできます):1 Track back:0


■ 我が家のMOF担


ねこたちがみんな寝てる。明日は天気悪いのかな...

投稿時間 2005-12-03 23:39:09
コメント(数字をクリックするとコメントできます):1 Track back:0


■ GMail落ちてる?

なんだかつながらない...

投稿時間 2005-12-03 22:40:15
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 幕張

久しぶりに幕張に行ってきた。やっぱり遠い...
エンジニア系のセミナーだったのだけど、自分もFindBugsの話をちょろっとしてきた。しかしディテクタ作成の苦労話とかしても、興味持つ人は数える程しかいないわけで。でも、そんな人と知り合えたというのも収穫だったり。

猫って、筋肉痛になるのかなぁ。レーザーポインタが来て、かなり遊び回ったので、人間だったら激烈筋肉痛だと思うんだけど。でも人間より体内時計速そうだし、数時間で筋肉痛が来たりするのだろうか。

投稿時間 2005-12-03 00:16:55
コメント(数字をクリックするとコメントできます):2 Track back:0


■ しっぽ、疲れないの?

体が乗り切らない...

投稿時間 2005-12-02 00:13:09
コメント(数字をクリックするとコメントできます):3 Track back:0


■ Java Concurrency in Practice

Brianから10月にでるよ〜と聞かされていたのを思い出して調べてみたら、来年にずれ込んだようだ。でも、表紙は決まっているようだ(虫嫌いの人は見ない方が無難)。
著者が錚々たる顔ぶれだなぁ。絶対買うと返事してしまったけど、読みこなせそうに無い...

投稿時間 2005-11-30 17:23:20
コメント(数字をクリックするとコメントできます):1 Track back:0


■ いちいち変数に入れる

boolean b = rs.wasNull();
if (b == true) {

みたいな書き方を良くみかけるのだけど、なんで

if (rs.wasNull()) {

と書かないのかな〜、いくら英語が苦手でも"If rs was null"くらいは読めるよね。こっちの方が読みやすいとは感じないのかな。
と思ったけど、もしかしてデバッガで結果を見たいのでわざわざ変数に代入するコードを書く、とかいうことがあるのかも。この例なら、その後ifの中を通るかどうかで分かるけど。そうじゃないケースもあるから、なんとなくムダに変数に代入するコードを書くクセがついてしまっているとか。rs.wasNull()を評価機能とかで見ちゃうと、副作用のあるメソッドの場合は、その後、誤動作してしまうだろうし(Iterator.next()とか)。
C/C++の時はアセンブリ表示モードに降りて、アセンブリレベルでステップかければ確認できたけど、そういえばJavaはバイトコードモードを持ったデバッガって無いね。あったら、結構便利な気もするんだけど、どうだろう。

投稿時間 2005-11-29 20:00:53
コメント(数字をクリックするとコメントできます):0 Track back:0


■ レーザポインタで猫大喜び

会社からレーザポインタをもらった。
夢久が大喜び。うっとんも結構遊んだ。うっとんが遊んだのは久しぶり。
天井で動かせば、簡単に見上げ猫が撮れる。

投稿時間 2005-11-29 19:43:07
コメント(数字をクリックするとコメントできます):4 Track back:0


■ aspectj

久しぶりに触ってみる。aspectj-1.5.0_M5

Weavingに3タイプが選べるようだ。

source weaving
織り込み対象のソースコード、織り込むアスペクトのソースコードをajcでコンパイルする。

binary weaving
織り込み対象のクラスファイル、織り込むアスペクトのクラスファイルをajcで処理して、クラスファイルを生成する。

load-time weaving
実行時にアスペクトを織り込む。

今までsource weavingしか知らなかった。これって、ちょっと障害調査のためにログを埋め込んだりとかしたい時に、既存アプリを全コンパイルしないといけないから、面倒なんだよね。

今回はbinary weavingに焦点をあてる。load-time weavingは、ClassLoaderを差し替えないといけないので、コンテナで動くアプリだと実行環境の設定が面倒そうだし。

用意したソース。
--- java/HelloWorld.java ---
package test;

public class HelloWorld {
    public static void main(String[] args) {
        new HelloWorld().hello();
    }

    void hello() {
        System.out.println("Hello world!");
    }
}

こいつをまず、普通にjavacでコンパイルしておく。

$ javac -d classes java/HelloWorld.java

出来上がるファイルは、

java
  +--- HelloWorld.java

classes
  +--- test
         +--- HelloWorld.class

ここまでは普通のjavaプログラムのコンパイル。次にアスペクトを用意。

--- java/Trace.java ---
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.After;

@Aspect public class Trace {
    @Pointcut("call(void test.HelloWorld.hello())") void atHello() {}
    @Before("atHello()") public void beforeHello() {
        System.out.println("Before hello.");
    }

    @After("atHello()") public void afterHello() {
        System.out.println("After hello.");
    }
}

これはajcでコンパイル(なんかアノテーション使うとXlint:adviceDidNotMatchという警告が出る。原因不明)。

$ ajc -d classes -cp aspectjrt.jar:classes -source 1.5 java/Trace.java

出来上がるファイルは、

java
  +--- HelloWorld.java
  +--- Trace.java

classes
  +--- test
  |      +--- HelloWorld.class
  +--- Trace.class

最後にbinary weavingする。

$ ajc -cp aspectjrt.jar -inpath classes -d woven

wovenというディレクトリにウィーブされたクラスが出来る

java
  +--- HelloWorld.java
  +--- Trace.java

classes
  +--- test
  |      +--- HelloWorld.class
  +--- Trace.class

woven
  +--- test
  |      +--- HelloWorld.class
  +--- Trace.class

実行してみる

$ java -cp "woven:aspectjrt.jar" test.HelloWorld
Before hello.
Hello world!
After hello.

うん、これはいいね。元のアプリのクラスファイルさえあれば、weaving出来る。

投稿時間 2005-11-28 15:36:15
コメント(数字をクリックするとコメントできます):0 Track back:0


■ Emacsへの熟練度

もしかしたら、以下のようなもので数値化できるかもしれない(一面に過ぎないけど)。

1) カーソルキー/PageUp/PageDown/BS/Delete

2) C-f,b,p,n/C-v/M-v/C-d/C-h

3) C-s,r/M-f,b/M-d

この3つの群に分けて、使用頻度を見た時に、熟練者ほど、後の方の群のキー使用率が高そうだ。
1)と2)は好みの問題という感じもするけど、2)と3)は明らかに入力効率が違う気がする。

投稿時間 2005-11-26 21:04:15
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 領土をめぐる戦い

敷物を置いたからといって、その上に収まってくれるわけもなく。
というか、その格好どうにかならないのか...

投稿時間 2005-11-26 19:42:29
コメント(数字をクリックするとコメントできます):1 Track back:0


■ Derby

10.1.2.1が出ていた。ちょっと試してみた限り、Shutdownで必ず例外が出るという仕様は修正(変更)されたようだ。マニュアル側には、まだ反映されていないようだけど。

違った、勘違い。ちゃんと例外が出る。

     [java] Shutdown database...ERROR 08006: データベース 'c:/data/test' がシャ
ットダウンされました。
     [java]     at org.apache.derby.iapi.error.StandardException.newException(Un
known Source)
     [java]     at org.apache.derby.impl.jdbc.TransactionResourceImpl.shutdownDa
tabaseException(Unknown Source)
     [java]     at org.apache.derby.impl.jdbc.EmbedConnection.(Unknown Sou
rce)
     [java]     at org.apache.derby.impl.jdbc.EmbedConnection30.(Unknown S
ource)
     [java]     at org.apache.derby.jdbc.Driver30.getNewEmbedConnection(Unknown
Source)
     [java]     at org.apache.derby.jdbc.InternalDriver.connect(Unknown Source)
     [java]     at java.sql.DriverManager.getConnection(DriverManager.java:525)
     [java]     at java.sql.DriverManager.getConnection(DriverManager.java:193)
     [java]     at test.Test.shutdownDB(Test.java:148)
     [java]     at test.Test.run(Test.java:48)
     [java]     at test.Test.main(Test.java:152)

投稿時間 2005-11-25 11:14:28
コメント(数字をクリックするとコメントできます):0 Track back:0


■ Object.equals()はなぜnullを受け入れるのか。

Object.equals()って、なんでnull引数を許すんだろう。NullPointerExceptionでいいと思うのだけど。同値性を見ようって時に、意図的にnullを渡す場面なんてあるかな。間違って渡しちゃったってケースの方が多い気がするのだけど。だとしたら例外で教えてくれた方が親切。

"Hello".equals(code)

みたいなコードとか、null渡されても寡黙に無視するメソッドの設計の温床にもなっているような気がする。
逆かな? equals()を設計した人は、こういう使い方を、むしろ奨励していたんだろうか。

if ("".equals(code)) return;

とかガードを書いたつもりが、nullの時にスルっと抜けるのも無様だ。で、こんな風に直したり。

if (code == null || "".equals(code)) return;

なんで、length()使わないですか?

投稿時間 2005-11-24 11:04:08
コメント(数字をクリックするとコメントできます):0 Track back:0


■ Operaってファイルをロックするのね。

リビルドすると、なぜかdistディレクトリが消せないというエラーが出て、おかしいな。と思ったら、そう言えばOperaでJavaDocを開いていたかも。タブを閉じてもだめで、Operaを終了しないと解放してくれない。
ん〜、タブを閉じたら解放して欲しいなぁ。

投稿時間 2005-11-24 01:00:32
コメント(数字をクリックするとコメントできます):0 Track back:0


■ 喰われた

投稿時間 2005-11-24 00:39:23
コメント(数字をクリックするとコメントできます):1 Track back:0


■ FastDateFormat(Commons-lang)

marsさんのとこで発見。高速でスレッドセーフというふれこみ。format()でlongやCalendarも受け取れるのも良い。念のためテスト。

public class Test {
    static final ThreadLocal DATE_001 = new ThreadLocal() {
        protected synchronized Object initialValue() {
            return new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
        }
    };
    static final FastDateFormat DATE_002 = FastDateFormat.getInstance("dd-MM-yyyy HH:mm:ss");

    public static void main(String[] args) {
        Date d = new Date();
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            DateFormat df = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss");
            df.format(d);
        }
        System.out.println("Elapsed:" + (System.currentTimeMillis() - start) + "ms.");

        start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            DateFormat df = (DateFormat)DATE_001.get();
            df.format(d);
        }
        System.out.println("Elapsed:" + (System.currentTimeMillis() - start) + "ms.");

        start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            DATE_002.format(d);
        }
        System.out.println("Elapsed:" + (System.currentTimeMillis() - start) + "ms.");
    }
}

結果は(Windows2000 J2SE5.0_02)、

Elapsed:328ms.
Elapsed:31ms.
Elapsed:63ms.

...速くないぢゃん。と思ったら、JDK 1.3.1-b24だと、

Elapsed:312ms.
Elapsed:110ms.
Elapsed:46ms.

サーバーサイドだと、まだ1.3ベースが多いから、FastDateFormatの方が有効と思われる。しかし5.0より1.3の方が速いってのも面白いなぁ。ちなみにIBM SDK 1.3.1だと、

Elapsed:688ms.
Elapsed:62ms.
Elapsed:47ms.

やっぱりFastDateFormatの勝ちだ。

投稿時間 2005-11-22 10:14:31
コメント(数字をクリックするとコメントできます):0 Track back:0


■ ツーショット

こうしてみると、仲がとても良さそうに見える...

投稿時間 2005-11-22 01:14:23
コメント(数字をクリックするとコメントできます):1 Track back:0


■ spam増加中

ここ最近、明らかに増えてきている。Googleさんでさえ1日に1-2件通してしまうくらいだ。
しかし、なんだろう、このタイトルは。何語だ??


Wanderlustで本文を見てみたら、


¥201@ってことは16進数で8140...あれ? Shift_JISですか? カットアンドペーストしてraw-textで保存してみたら、



がっくし。Outlookだと読めるのかな...さすがにこれじゃベイジアンフィルタも効かないかも。くれぐれもここに出ているサイトにはアクセスされないように...

投稿時間 2005-11-21 22:48:47
コメント(数字をクリックするとコメントできます):0 Track back:0


■ findbugs-0.9.4-rc1

あれ、メッセージが変わってない。細かいバグフィックスが中心なのかな。

投稿時間 2005-11-21 20:38:48
コメント(数字をクリックするとコメントできます):0 Track back:0



このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。

日本アイ・ビー・エム 流通GB・コンピテンシー 第一テクニカルサービス
花井 志生