|
||||||||||||||||||||||||||||||||||||||||||||||||||
過去の記事
カテゴリー
ブックマーク |
■ お引越し blogも自宅側で動かす事にしました。引越し先
投稿時間 2005-12-10 12:54:47
■ Apache Derby入門 Derbyの入門を書いてみました。 たいした事は書いて無いけど、初めて使ってみる時には役に立つかと。
投稿時間 2005-12-09 18:24:33
■ 健康食品
投稿時間 2005-12-09 18:07:02
■ コメント * @param strKokyaku 文字列 * @param txtKikaku 文字列 型なんか、ほっといたってJavaDocが書いてくれるよ。 頭のstrとかtxtとかって何だよ...
投稿時間 2005-12-09 10:38:20
■ 英辞朗って なんで名詞のCountable/Uncountableが載ってないんだろう。 不便だ。
投稿時間 2005-12-08 20:12:55
■ しめだし 扉の向こうでは、ごはんが振舞われています。 ![]() 「開けてください」 ![]() 最近太り気味だから、がまんがまん。
投稿時間 2005-12-08 19:33:12
■ このツールを提供することでGoogleにはどういうメリットがあるのでしょう。 我々はプロダクトを開発するときに、あまりそういうことは考えないんです。例えばGoogle Earthにしても同じで、Googleに何かのメリットがある開発しようという発想ではなく、「こういうものがあったらいい」「便利だ」という発想に基づいています。 は〜、なんか安心したよ。いっつも「これでGoogleはどうやって儲けるんだ?」って感じのサービスが出て来て、でも知らない内にちゃんと商売になってる。これ、最初っからビジネスモデルができているなら、経営者は神だなと思っていたので。それでも、後付けでちゃんとモノにしているだけでもすごいわけだけど。
投稿時間 2005-12-07 19:28:55
■ no + 名詞
投稿時間 2005-12-06 22:34:39
■ 多重度(Multiplicity)と基数(Cardinality) なんとなく、同じ概念として扱ってきたのだけど、ここによると、 Cardinality: 特定のセットもしくは集合での要素数 Multiplicity: セットで想定される多重度の値の範囲 なので、一般に用いられるCardinalityの使い方は、よろしくないと言ってる? データモデルでは慣習的にCardinalityを使ってきたので、置いておくとして、それ以外(XSDとか)ではMultiplicityを使った方がいいんだろうか。
投稿時間 2005-12-05 15:12:57
■ OperaでGMailにアクセスできない 数日前からOperaでGMailにアクセスできなくなった。 FireFox 1.5も出たし、ちょっと使ってみたら、大量リンクを一度に開いた時のパフォーマンスも悪くないし、乗り換えようかなぁ。しかしメモリ使用量は相変わらず重め。 OperaでGMailが開けないの方の問題はこの方法で回避できた。
投稿時間 2005-12-05 12:46:05
■ 年賀状 今年はコニミノのサービスに頼んでみた。ブラウザ上で印刷範囲の微調整が出来ていい感じなのだけど、いかんせん遅い。クリックして2-3分待ちがザラ。あれで速かったら言う事無いのだけど。
投稿時間 2005-12-04 17:05:17
■ 猫ページ更新完了
投稿時間 2005-12-04 16:57:19
■ 我が家のMOF担 ![]() ねこたちがみんな寝てる。明日は天気悪いのかな...
投稿時間 2005-12-03 23:39:09
■ GMail落ちてる? なんだかつながらない...
投稿時間 2005-12-03 22:40:15
■ 幕張 久しぶりに幕張に行ってきた。やっぱり遠い... エンジニア系のセミナーだったのだけど、自分もFindBugsの話をちょろっとしてきた。しかしディテクタ作成の苦労話とかしても、興味持つ人は数える程しかいないわけで。でも、そんな人と知り合えたというのも収穫だったり。 猫って、筋肉痛になるのかなぁ。レーザーポインタが来て、かなり遊び回ったので、人間だったら激烈筋肉痛だと思うんだけど。でも人間より体内時計速そうだし、数時間で筋肉痛が来たりするのだろうか。
投稿時間 2005-12-03 00:16:55
■ しっぽ、疲れないの? 体が乗り切らない... ![]()
投稿時間 2005-12-02 00:13:09
■ Java Concurrency in Practice Brianから10月にでるよ〜と聞かされていたのを思い出して調べてみたら、来年にずれ込んだようだ。でも、表紙は決まっているようだ(虫嫌いの人は見ない方が無難)。 著者が錚々たる顔ぶれだなぁ。絶対買うと返事してしまったけど、読みこなせそうに無い...
投稿時間 2005-11-30 17:23:20
■ いちいち変数に入れる 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
■ レーザポインタで猫大喜び 会社からレーザポインタをもらった。 夢久が大喜び。うっとんも結構遊んだ。うっとんが遊んだのは久しぶり。 天井で動かせば、簡単に見上げ猫が撮れる。 ![]()
投稿時間 2005-11-29 19:43:07
■ aspectj 久しぶりに触ってみる。aspectj-1.5.0_M5 Weavingに3タイプが選べるようだ。 source weaving binary weaving 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
■ 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
■ 領土をめぐる戦い 敷物を置いたからといって、その上に収まってくれるわけもなく。 というか、その格好どうにかならないのか... ![]()
投稿時間 2005-11-26 19:42:29
■ 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.
投稿時間 2005-11-25 11:14:28
■ 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
■ Operaってファイルをロックするのね。 リビルドすると、なぜかdistディレクトリが消せないというエラーが出て、おかしいな。と思ったら、そう言えばOperaでJavaDocを開いていたかも。タブを閉じてもだめで、Operaを終了しないと解放してくれない。 ん〜、タブを閉じたら解放して欲しいなぁ。
投稿時間 2005-11-24 01:00:32
■ 喰われた ![]()
投稿時間 2005-11-24 00:39:23
■ 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
■ ツーショット こうしてみると、仲がとても良さそうに見える... ![]()
投稿時間 2005-11-22 01:14:23
■ spam増加中 ここ最近、明らかに増えてきている。Googleさんでさえ1日に1-2件通してしまうくらいだ。 しかし、なんだろう、このタイトルは。何語だ?? ![]() Wanderlustで本文を見てみたら、 ![]() ¥201@ってことは16進数で8140...あれ? Shift_JISですか? カットアンドペーストしてraw-textで保存してみたら、 ![]() がっくし。Outlookだと読めるのかな...さすがにこれじゃベイジアンフィルタも効かないかも。くれぐれもここに出ているサイトにはアクセスされないように...
投稿時間 2005-11-21 22:48:47
■ findbugs-0.9.4-rc1 あれ、メッセージが変わってない。細かいバグフィックスが中心なのかな。
投稿時間 2005-11-21 20:38:48
このサイトの掲載内容は私自身の見解であり、必ずしもIBMの立場、戦略、意見を代表するものではありません。
日本アイ・ビー・エム 流通GB・コンピテンシー 第一テクニカルサービス 花井 志生 |
|||||||||||||||||||||||||||||||||||||||||||||||||