2002.7.1〜2003.1.30

[1999.9-2000.9 2000.9-2001.3 2001.4-2001.12 2002.1-2002.6 2002.7-2003.1 2003.2-2003.12 2004.1-2004.12 最新版]

僕のホームページ[1]および[2]の更新メモですが、自分のページ作成に関して参考にしたサイトなどや興味あってちょっと調べたことなどを紹介しています。


2003.1.30
 ホームページへのアクセス状況集計によると、1月は週当たりの総ページリクエストが4000超だそうです。いろいろな方に見て頂いているのですね。日別でみると、月〜金が多く、土日は平日の半分という傾向です。先週はJDEEのページがトップでした。
 ACE/TAOをVC++でビルドしたところ、ディスクを3GB以上も消費してしまいました。ドキュメントにも全部ビルドするな、必要なものだけにしろ、などと書かれている代物です。
2003.1.28
 ACE/TAOをインストールする際、一部のコンポーネント(ACE_SSLとそれを利用するもの)をビルドおよび実行する際にOpenSSLが必要になります。VC++を使ったインストール手順は、Install TAO on Windows 2000のページに追記しました。それにしてもACE+TAOはでかい。一晩コンパイルを走らせても翌朝にはまだ終わっていない状況・・・。
2003.1.26
 ACE/TAOがバージョンアップされていました。それぞれ5.3/1.3です。なおACEはC++用クロスプラットフォーム分散通信ライブラリ、TAOはC++用CORBAです。
 ちょうどよい機会だったので、ACE/TAOのアーカイブ(tar.bz2形式)を、Windows用の解凍ツールで試しに解凍してみました。Lhaplusで解凍してみたらエラーとなりました。+Lhacaは解凍できたけど、実行直後1分位だんまりだった。どうもbz2を解凍している時間のようですが・・・。Lhazも同様。どうやらTARの解凍に同じロジック(コード)を使用しているものと思われます。
2003.1.25
 Java高速起動ツールにちょっと手をいれて、公開用ページも手直ししました。公開用に手を入れた方が時間がかかってしまいました。ソースは思いっきりリファクタリングしたくなるコードなんだけど、それは次のバージョンにて・・・(リファクタリングするにはテストを書かねばならないし)。
 JDEEページの方は、APIドキュメントの参照およびimportの記述を追加。
 昨日、JavaWorld誌2002年3月号を購入。Swing&デザインパターン、CVSとAnt、JUnitといったところで購入決定。
 Meadow1.99α4のCygwinビルド。プログラミング用とSmartDoc編集が主な用途だが、安定しているようだ。
2003.1.22
 昨日、JavaPress誌Vol.28を購入。AspectJ/Generics/JMS/JXTAと特集されている。 
2003.1.21
 休暇。陳麻婆豆腐を食べてちょっとお腹がしくしく。
 JDEEページの更新。略語展開を追記しました。今までJDEEの略語モードはoffのままでした。便利なのかどうかちょっと?だけど、慣れると病みつきになりそうな予感。
2003.1.18
 Java読書会の日。リファクタリング第3回でした。夜は会場近くのインドカリーで飲み食い。リファクタリングのホームページにはリファクタリング本に載っていない新しいリファクタリングもかなり掲載されていました。
* Change Reference to Value
* Change Value to Reference
* Convert Dynamic to Static Construction
* Convert Static to Dynamic Construction
* Eliminate Inter-Entity Bean Communication (Link only)
* Extract Package
* Hide presentation tier-specific details from the business tier (Link only)
* Introduce A Controller (Link only)
* Introduce Business Delegate (Link only)
* Introduce Synchronizer Token (Link only)
* Localize Disparate Logic (Link only)
* Merge Session Beans (Link only)
* Move Business Logic to Session (Link only)
* Move Class by Gerard M. Davison
* Reduce Scope of Variable by Mats Henricson
* Refactor Architecture by Tiers (Link only)
* Remove Double Negative
* Replace Assignment with Initialization
* Replace Conditional with Visitor
* Replace Data Value with Object
* Replace Iteration with Recursion
* Replace Recursion with Iteration
* Replace Static Variable with Parameter
* Reverse Conditional
* Separate Data Access Code (Link only)
* Split Loop
* Use a Connection Pool (Link only)
* Wrap entities with session (Link only)

次回は2月22日(土)開催です。途中からでも参加歓迎。申し込みはJava読書会のページから。
リファクタリング時には欠かせないテキスト検索、読書会でWindowsではどうしているか聞いてみました。最低限はエクスプローラの検索だけど、正規表現が使えないなどかなり不便。便利そうなWindowsツールとして、独立したツールではJGREP、エディタ組み込みの機能としてはXYZZY、シェアウェアなので本人は使う気がしないが評判は高い秀丸などのが便利っぽいとのこと。JGREPは名前からDOS/Windows用のgrepコマンドかと思っていたら、立派なテキスト検索ツール(GUI)だったのでした。でもfind, grepの組み合わせがやっぱり便利と思ってしまう。Windows標準コマンドFINDSTRでは正規表現使えるらしい。
C:\>findstr /s "[Ll]ogging" *.java
で、カレントディレクトリ以下にある拡張子.javaファイル内でLoggingまたはloggingがあるところを表示する。
2003.1.16
 Meadow 1.15 netinstall版のJDEEパッケージが2.3.2にアップされました。semanticも1.4.2にアップされました。JDEEを入れるには、eieio、elib、semantic、speedbarなども一緒にいれなければならず、けっこう面倒な作業があるのですが、netinstall版では簡単に入れることができます。(こせきさんありがとうございます)。
 あさって1.18は、Java読書会の日。リファクタリング3回目です。
 Mozillaを1.2.1にしてみました。いままでMozilla 1.0のままだった。
2003.1.11
 3連休だが仕事の日。ずるずると工程が遅れている最中だが、進展があって夜早めに上がることができた。実はJavaでごはんの新年会(朝まで新年会)の日なので顔を出す。エンサイクロペディアAhSCIIを肴に古きよきマイコン談義やお掃除ロボットRumba、静止衛星の起動制御話などあいかわらず脈絡のない(Javaでない)話題で盛り上がる。
 Emacsのよいところは動的補完。変数名を記述するのが楽です。インテリセンスもいいけど、メソッド名が補完されるより変数名やクラス名が補完される方がうれしいな。
2003.1.7
 ここ数年CVSを使っているけど、もうちょっと賢い(?)ツールにAegisというものがあるらしい。トランザクションベースな構成管理ツールだそうである。以前Aegisについて調べたときは情報も少なく、cvsを使いこなすのにアップアップだったので忘れ去っていた。先日Debianを入れていて、apt-cache search cvsを実行したときにaegisが目に付いた。AegisはLinuxカーネルの管理ツールとして導入が検討されていたが、その後BitKeeperになった。
 Aegisの作者Peter Miller氏は、ソフトウェアのビルドツールCookも開発しています。Cookについては、「プログラマー天国:プログラマーのためのCook入門」に日本語の解説があります。
2003.1.5
 PowerMacintosh 7500にDebian GNU/Linux 3.0(Woody)をインストールしようと悪戦苦闘中。初代PCI PowerMacはOldWorldという種類に分類されます。DebianのCDブートによるインストールはできないとドキュメントにあったため、フロッピーから起動する方法でインストールを試みました。PowerMacの場合、2枚のフロッピーを用意するようです。最初にブートするboot-floppy-hfs.imgと2枚目のroot.binです。rescure.binは使用しないようです。ここで2枚目のroot.binのフロッピーで何度もエラーとなってしまいました。フロッピーのメディアが悪いのかと3枚換えてみたけどNG。Windows用のrawイメージ書き込みツール(NTRawrite)が悪いのかとLinux上でddを使ってもNG。インターネットをいろいろ検索してみて、「root.binはLinuxでddするだけでは駄目で、Mac上でDOSフォーマットしてからddすればOK」との記述を発見。騙されたと思ってやってみたらOKでした。そんなことがあるんだ。結局Windows上でも一度DOSフォーマットしてからNTRawriteでroot.binをフロッピーに移せばOKです。
 この年末年始休暇でやれたことは、Rubyをちょこっとと、VC++入門(standard版に付属の書籍)の半分くらいだなぁ。
2003.1.3
 Visual C++6.0に付属していたVisual C++プログラミング入門をなぞってMFCの使い方をちょっと覚えています。いまさらMFCなんて時代に逆行しているなぁと思いながら、、、。
 Meadow1.99a4を、三好さんのMeadow2 Memorandumページを見ながら構築してみました。Meadow1.99はソースだけ公開されているので、何らかのコンパイラでバイナリを構築する必要があります。今回はVC++6.0を使ってみました。VC++といってもコマンドプロンプト上でnmakeコマンドを実行する方法です。Makefileの中を見てみると、$(BUILD_TYPE)が"spd"か否かでコンパイルオプションを変えています。デフォルトでは-Odとデバッグ用ビルドになっています。どこかでBUILD_TYPEを設定すればリリース用ビルドになるっぽいですが。
!if "$(BUILD_TYPE)" == "spd"
#ARCH_CFLAGS     = -D_X86_=1 -c -Zel -W2 -H63 -Oxsb2 -G6dF -Zi -Zp8
ARCH_CFLAGS     = -D_X86_=1 -c -Zel -W2 -H63 -O2 -Ob2 -GBdF -Zi -Zp8
!else
ARCH_CFLAGS     = -D_X86_=1 -c -Zel -W2 -H63 -Od -G3d -Zi -Zp8
しかし、手持ちのVC++はStandard版なので、最適化機能は抜かれている(無効化されている)のが悲しい。O2を指定してもOdと実行速度が変わりません。
2002.12.30
 最近、Allesnetに置いているコンテンツがGoogleに出てくるようになって不思議だなぁと思っていたら、先月からロボット巡回を許可するようになっていた。
 さて、1年に1つの言語をマスターするという「達人プログラマ」の教えに今年も従うことができなかった。一年という長いようで、しかしながら事を成すには不十分な期間を来年はどうやってすごそうか。そこで、昨日Rubyの本を1冊買ってきた。2003年はRubyを一つ修得してみよう。そういえば、Smalltalk(Squeak)は2001年、2002年と2年間やろうと思ってできなかったなぁ。正月休みでやろうと思うリストを作ったら、軽く10個を越えてしまった。AspectJ, Java高速起動プログラムVenus版、Java Project Example続き、C++とJavaの対比、Ruby、Java Web Start、J2EE(特にEJB)、JXTA、JINI、Swing、Relaxer、Win32API、ACE/TAO、C++などなど。こりゃ無理だ。元旦は年間計画でも立てようか。。。
2002.12.28
 今年は今日が仕事納め。
 JavaWorld(日本の雑誌の方)の記事中に、SunのJavaコーディング規約を推奨しているものがあったけど、あれはSunでもメンテナンスされてないし今や使われてない。Sunの、というだけで推奨するのはいかがなものかなぁ。
 CVSを漢字コードが混在する環境で使用するときは、けっこう頭が痛い問題がある。例えばWindows上でSJISで記述したソースをUNIX上でそのままコンパイルすることはできない。Javaの場合、コンパイル時のオプションでソースコードの漢字コードを指定すれば(-encoding SJIS等)、異なるプラットフォームのコードでもコンパイル可能である。従ってプロジェクト全体を一つの漢字コードで統一するという方法が採用できる。しかし、それはあまり便利ではない。ソース以外にも、各種説明ドキュメント、データファイルなどがある。これらが全てSJISであったらUNIX上では不便でしょうがない。また、C/C++系ではプラットフォームのコード意外はまず受け付けてくれない。そこで、CVSではリポジトリ上では漢字コードを統一しておいて、checkout, update, commitの際に作業マシン固有の漢字コードに変換する方式が利用されている。変換方式の代表的なものが、knjwrp patchを当てたCVSを利用する方法である。また、Windows専用だが、CVSのクライアント側にWinCvsのeuc/sjis変換パッチを当てたCVSを利用する方法もある。後者はサーバ側にknjwrp patchが不要となる。knjwrpの場合、cvswrappersに変換対象ファイルのパターン(拡張子等)をあらかじめ指定しておく必要があるので、プロジェクト途中で新たな拡張子が加わったり拡張子なしのファイルの場合などで思わぬ誤動作(設定ミスなのだが・・・)を招く恐れがある。
2002.12.23
 祝日ですが、お仕事の日。プロジェクトの膨大なソースコードから、今回の変更点をCVSでさらって過ごした。CVS Webを入れているので差分を見るのは楽ちん。
 読書会で、Cマガジン最新号にJXTA特集があるのを教えてもらった。同じ日に発売のSoftware Design誌にはオンラインコラボレーション特集記事があって、ここにもJXTAを応用したifreestyleが紹介されている。Lotusからスピンアウトした人たちがサーバいらずのグループウェアを作ったという話題が読書会の時に出たけど、おそらくGrooveでしょう。こちらもSoftware Design誌に載っている。なんかいろいろ絡む日でした。
 JeodeでHelloを動かした。PocketPC機にJeodeを入れてあるが今まで動かし方が分からなかった。本屋さんで「Pocket PCでJava」をぺらぺらとめくり、Jeodeの動かし方についてちょっとだけ書いてあるところを暗記、本日実験してみた。あらかじめPC上でコンパイルしたHello.classと、起動用のショートカットファイルを作成しで転送、PocketPC上でショートカットをタップすると見事Helloが起動されました。ショートカットファイルは、拡張子.lnkとした普通のテキストファイルとして作成し、内容には例えば
43#"\Windows\evm.exe" -cp \Windows\Temp\ Hello
と書きます。最初の数値43は、ショートカットのテキスト文字数だそうですが、ずれていても問題ないようです。また、テキスト文字数は255文字までらしい。
 J2SE 1.4から正規表現が導入されましたが、Stringクラスにもその恩恵が追加されています。splitメソッドが追加されています。コマンドラインオプションを解析するときにはとっても便利ですね。
String[] split(String regex)
使用例は、
String port = "-Port:1234";
String[] args = port.split(":");
int portNumber = Integer.parseInt(args[1]);
2002.12.22
 AspectJの1.1Beta2が出ています。1.1からは、ソースコードがなくてもバイトコード(クラスファイル)に対してAspectを織り込むことができます。また、AspectJがXerox PARC.からEclipse.orgに移管されました。
 昨日はJava読書会「リファクタリングを読む会(第2回)」の日でした。今回は、p.57-99です。この本は2000年に読んだのですが、内容は大分忘れていました。今回の引用を以下に。  同読書会で、ツリー構造を扱う話題が出た。JavaのCollectionフレームワークではツリー構造を直接扱うクラスはない(SetやMapの実装としてTreeを使用するものはあるが)。デザインパターンでよくツリー構造に使用されるのがCompositeパターンだけど、ツリーを操作する機能は一から書かねばならない。そこでグラフ理論を扱うライブラリを使うのはどうかと提案してみた。
2002.12.16
 仕事でC++絡み、かといって標準C++からは程遠いしWinな環境だし、あまり設計や実装に立ち入ってもいないし、と不本意な状況を理由に仕事時間外には積極的に勉強していなかった。他に移ろうとも考えながらそろそろ1年近くが経過しようとしている。今になって冴えない自分がいることに気付いた。これまでは仕事で関わったソフトウェア技術は家でも通勤中でもべったり勉強してきたから今の自分があるのに、今回はどうしたことかと。しばらく後ろ向きな生き方だったと思える。最近になって、少しWindowsでC++な事もやってみるかと押し入れから昔のCマガジン、インターフェース、DDJなどを引っ張り出してみた。インターフェース2000年5月号にVisual C++特集があったので読んでみる。「VC++を使う奴は馬鹿だが、使えない奴はもっと馬鹿だ」という吉田氏の迷文句が引用されていたが、今の自分にはなんか身につまされる感じがして笑えなかった。
 少し前向きに行こうと、週末にC++で開発のページにWindowsCE用の開発環境であるeMVC++の記述を足しました。VC++にしろeMVC++にしろ、開発環境をある程度使いこなせないと思ったようにプログラムを作ったりできないところがあります。
 Amazonから「Linkers & Loaders」(John R. Levine著、榊原一矢監訳、オーム社)が届きました。WindowsCEのアプリケーション開発でDLL問題に直面して、リンクの知識が必要になったので、買いました。以前本屋さんで見かけたときは手にとっただけだったのです。そのときは、「Javaにはリンクがない」なんて嘯いてましたが、、(実際にはJavaVMにおいてリンクは実施されています)。
2002.12.14
 朝歯医者へ行ってから、横浜まで出かけた。WinCE系のプログラミング参考書を探すのが主目的であったが、ちっとも置いていなかった。RTLinux本があるのにねぇ。。。結局ランチBOXや和菓子、パンなど食材だけ買いあさって戻ってきた。
 安藤さんのWhat's New about Javaに、サンがSwingチュートリアルをJ2SE v1.4に合わせて修正とあったのでチェック。SpringLayoutの説明は途中のままでした。
2002.12.12
 C/C++のプリプロセッサで、#ifdef FOOと#if defined (FOO) と2種類の表記があります。この違いについてなぜだろうと思っていました。いろいろ調べると、以下のようになります。
記述可能 記述エラー
#if defined (FOO)
//
#elif defined (BAR)
//
#else
//
#endif
#ifdef FOO
//
#elifdef BAR
//
#else
//
#endif
#if defined(FOO) || defined(BAR)
//
#endif
#ifdef FOO || BAR
//
#endif
2002.12.10
 JDEE2.3.1がリリース。ant-build関連のバグ修正です。antユーザが多いためか(?)、早々にバージョンアップしました。
2002.12.8
 JDEEのページに加筆。最初はカスタマイズ機能が分かりにくくて戸惑うので、画面例も含めて説明を増やしてみました。
2002.12.7
 C++で開発のページに、ヘッダファイル・インクルードガードについて記述を追加しました。
2002.12.5
 安藤さんのJava FAQ What's Newより、J2SE 1.5(開発コード"Tiger")で導入されるJava言語拡張JSR201を見た。おおよそこんな感じのコードが書ける。
// 型に安全な列挙
public enum Suit { clubs, diamonds, hearts, spades }

// コレクションの枚挙を行うfor
for (String s : c) {
  System.out.println(s);
}

// staticなフィールド・メソッドのimport
import java.lang.Math.abs;
:
  y = abs(x);  // Math.abs(x)となる
2002.12.4
 Windows用のEmacs環境MeadowのNetinstall版に、JDEE2.3.0とその依存パッケージが追加されました(^o^)。
 Windows上の全てのアプリでEmacs風な操作性を実現するキーボードユーティリティXKeymacsというのがあるんですね。これは素晴らしいかも。カーソル移動、編集、検索、ファイルの開閉保存がみんなEmacs風になるなんて。
2002.12.2
 JDEE2.3.0リリース。でもAnt絡みで不具合があり、修正版が直ぐに出る予定とのこと。
2002.11.30
 今日は、Java読書会の日。今月から新しい課題図書「リファクタリング」に入りました。読書会中、第1章のソースコードはないのかと話題になった時に、昔自分で第1章のリファクタリング手順を順にたどったWebページ「リファクタリング勉強ノート」を作ったことを思い出しました。JUnitのテストケース付き。読書会でなんとなくよいなと思った文章をピックアップ。  コレクションのイテレーションの書き方でwhile文を使う方法とfor文を使う方法があります。for文の方が行数が少なくすっきりしています。また、Iteratorをメソッドスコープからfor文のスコープに限定することができるのもうれしいです。このとき、バイトコードではどう異なるのかをjavap -cで調べました。どちらの記述でも同じバイトコードになっています。
Iterator it = rentals.iterator();
while (it.hasNext()) {
  each = (Rental)it.next();
  // ...
}

for (Iterator it=rentals.iterator(); it.hasNext(); each = (Rental)it.next) {
  // ...
}
2002.11.25
 IBMのDeveloperWorksに、「Javaの理論と実践:それをドキュメント化しなければならないか」が掲載されています。JavaDocコメントに何を書けばよいのか、よいドキュメントの書き方の指針があります。コメントなんていらないなどという意見を目にしますが、自分だけが見るソースならともかく他人に見せるソースならコメントは必須です。コメントがなくてもソースコードを読めば分かるなんていう暴論もあるけど、ソースを読むという作業には、プログラミング言語を人間の思考に変換する作業が必要なのです。
2002.11.24
 JDEEのページを加筆しました。JDEE2.2.9がリリースされたので、Meadowで開発のページにあるJDEEについての記述を本格的にJDEEページに移行させていく作業の途上です。しかし、遅々として進んでいません。時間がとれないのもあるけど、書き始めて途中で頓挫しているページが増えてきました。
2002.11.20
 Java高速起動計画ページMercury版requestentryがWindows98でエラーになるとの報告をもらいました。手許のWin98マシンでは確かにエラーとなりました。原因はわからないが、ビルドし直したら動くようになった。不思議だ・・・
2002.11.17
 「C++クラス設計に関するノート」がC++プログラミングの参考になります。値オブジェクト、参照オブジェクト、参照型値オブジェクトの3パターンに分類して実装方法を紹介しています。
 レトルトのタイカレーを食べたが、なんととってもおいしかったのでメモ。発売元:ヤマモリ
2002.11.11
 VC++でMFCアプリケーションを作成する際、ウィザードが吐き出すソースってC++のnew演算子を#defineで書き換えるというかな〜り凶悪な仕掛けを埋め込むんですねぇ。
 JDEE2.2.9がリリース。早速入れてみた。[Files]→[JDE New]に、Intercace、EJBが追加された。しかしInterfaceを選んだら生成途中で戻ってこなくなってしまった。
2002.11.10
 仕事の兼ね合いもあって、Windows上のライブラリ形式(スタティック・リンク、ダイナミック・リンク、Debug/Release)などと戯れる。ちょっとJavaと離れてしまっているが、逆にJavaのよいところ、まだまだなところが見えてくる。一例をあげれば、Javaのバイトコードにはデバッグもリリースもなくて、JavaVMの実行時にインタプリタモードとするかHotSpotを有効にするか、といったことで制御できる。
 Javaを理解するには、一度Javaから離れてみるというのも必要かもしれないなぁと思ったりする。これは、海外に行くと日本がよく分かるということに通じるかもしれない。
2002.11.4
 ACE(ADAPTIVE Communication Environment)のコンパイルとインストールを行う。ACEはC++で記述された並行プログラミングとネットワークプログラミング用ツールキットで、各種プラットフォーム上で動作する。WindowsとVC++で使う環境でインストールしているが、結構いろいろと大変な代物。main関数をdefineで別定義していたりするのがちょっと凶悪に思える。マクロが多用されていてあまり美しくないなぁと思うけど、これは慣れもあるのか・・・。
2002.11.1
 プロバイダが1週間単位にWebページへのアクセス数を集計してくれる機能がある。それによると、最近は2700件位だ。もちろん一人の人が複数ページを見ることもあるので訪問者数とは違うが、けっこうな閲覧数があるのだなぁと思った。
 Javaが遅い、という通念が未だに蔓延っているようだ。Googleでも「java」、「遅い」で検索すると日本語サイトだけで34300件ヒットした。上位に「遅い」を覆すという趣旨のページがあってうれしいが、根拠なく「Javaは遅い」といっているものも多い。「遅い」というからには「どんな点が遅いのか」を言って欲しいが、多くは「インタプリタだから遅い」とか「Swingが遅い」とかといった所だ。「起動時間がかかる点が遅い」というのはよい言い方だ。確かにコマンドラインからjavaコマンドを用いて新たなプロセスとして起動しようとした場合には当てはまるからだ。
2002.10.31
 今日は休暇で一日家にいる。しかし、創造意欲が減退中でなにもせず。職場もチームメンバのモラルが低下している、なんというか全体がどよーんとしている感じだ。こんなときは、会話を増やすしかないだろう。飲みニュケーションってけっこう重要かな。お酒飲めない人もいるから、場所は食事のおいしいところがいいと思うな。
 プログラムのスタイルで、括弧とインデントの由来と種類を記載しているWebページ「レイアウト-いいプログラムを書こう」を発見。Javaの標準スタイルは、"pure-block"になるね。Adaの様式だそうだ。
 Adaについて調べる。Googleでもなかなかヒットしない(ADAは雑音が多い)。日本語では2チャンネルが一番詳しいような気がする・・・。Ada95について書かれたWebページ「T.Y's Room [ Laboratory - Ada ]」を発見。Ada95トランスレータGNATのインストールについて紹介している。Ada自体の解説はない。Ada95のチュートリアル(英語)は「Ada95 Lovelace Tutorial Home Page」にある。これによるとAdaの設計思想は、読み易さ、エラーを招きやすい表記の排除、再利用と共同作業の促進、効率的に実装できること、である。
 CORBAのページを微修正。
 Webページ「Look And Feel探検隊」。Skin、OYOAHAなどの入手と利用方法、感想が紹介されている。
2002.10.24
 Neal Gafterさんから、11番目のpuzzleに関するコメントがメールされてきました。javacで生成したバイトコードがVerifyErrorになるケースです。
2002.10.14
 UMLツール Poseidon for UML Community Editionをインストールしてみた。Java Web Start対応アプリなので、インストールといってもWebページの該当欄を1クリックするだけだった。ダウンロード途中で止まってしまったので、再度インストールしてみたら、ダウンロードサイズが小さくなっていた。途中までのダウンロード分は生きていたようだ。ふーむ、なかなか。
2002.10.13
 C++のメモページを整理。前に書いたC++でのCORBAに関するメモやEmacsでのC++メモをC++のメモに配置し直し。
2002.10.6
 JavaOne 2002 Japanに行ってきましたページがようやく最終日の晩まで到達(書き散らし)した。あとは全体を見直して文章をチェックしていくのだが、このまま放置になってしまうかも。
 Meadow1.15ネットインストール版によるインストール方法を、Meadowで開発ページに追加。
 Javaツールライブラリリンクページの10月定期巡回。今回の更新は、Meadow1.15、Ant1.5.1、Jikes1.17、IIOSS1.2.2、OpenORB1.3.0、JBoss3.0.3、Xerces2.2.0でした。
2002.10.5
 Meadowのネットインストール版がこせきさんのMeadowページで公開されています。Meadow本体とEmacs Lisp Packageが、Cygwinのネットインストールのようにダウンロード・インストールできるような仕組みです(How nice!)。
2002.10.4
 JavaOne 2002 Japanに行ってきましたページがようやく最終セッションまで到達した。あとはJoshuaさんらを招いた歓談会の様子を書くだけだ。
2002.9.29
 JavaOne 2002 Japanに行ってきましたページの作成続行。やっと2日目があと少しで終わるところまで書いた。ふぅ。書いてみるとかなり大変なんだということが分かる。
 「Effective Java」の著者を囲む会で紹介されたツールDocCheck
2002.9.27
 JavaOne最終日。「Javaプラットフォームパフォーマンス」の著者Steve Wilsonさんのサインをもらいました。夜には、読書会特別企画(?)、「EffectiveJava」の著者を囲む会も実施できました。Joshuaさんと彼の同僚Nealさんの2名に来ていただけました。11問目のパズル(?)、ハンドコンパイルも出たりと楽しい一時でした。しっかり「Effective Java」
2002.9.26
 JavaOne2日目。朝のセッションからJavaNightまでフルで13時間強。収穫物も大。
2002.9.25
 JavaOne初日。基調講演から夜のBOFまでフル参加でほぼ12時間でした。途中休む暇なし・・・JavaOneの様子はこちらに書いています。
2002.9.23
 ONJava.comサイト上に、JDK1.4で再導入されたSwingの新しいレイアウトマネージャSpringLayoutについての記事"JFC Swing: The SpringLayout Class"が公開されています。同記事で、GridBagLayoutに変わる柔軟なレイアウトマネージャが欲しいなら、SpringLayoutでなくてRelativeLayoutを使うよう薦めています。RelativeLayoutについては同サイトの記事"RelativeLayout, a Constraint-Base Layout Manager"を参照。
2002.9.16
 「中世ヨーロッパを作ろう」創刊号(扶桑社・delPrado)を買ってしまいました。ヨーロッパお城好きには買わずにいられませんでした。
2002.9.15
 JDEEでコンパイルオプションのエンコーディングを指定したときのエラーがありました。Jde Compile Option Encodingを指定したときjavacに渡すオプションに-encodingが抜けてしまいます。
 JDK1.4時代のHelloWorldで、-encodingの指定例にEUCとしていたが、EUCはエンコーディング名としては無効でした。EUCJISに修正。
 WinCVSにeuc/sjis相互変換機能をつけるパッチがCVSのeuc/sjis相互変換ページで公開されています。サーバのリポジトリがEUCコードのときに、クライアント側でEUC←→SJIS変換を行うものです。(knjwrpとは違う)
2002.9.14
 JavaとCORBAのページが役立ちましたと海外の方からメールがきました。日本語ページなので、ソースコード以外は読めなかったと思いますが。。。
2002.9.12
 JDEEでAntの呼び出し。jde-build-functionをjde-ant-buildに設定しただけではwrong-type-argumentエラーとなる。  ソースファイルと同じディレクトリにbuild.xmlが存在しないとエラーになる。  上記をクリアしたら、次の問題wrong-type-argument arrayp nilエラーがでる。
Signaling: (wrong-type-argument arrayp nil)
  jde-ant-escape(nil)
  (setq target (jde-ant-escape target))
  (let (buildfile target interactive-args) (setq buildfile (jde-ant-interactive-get-buildfile)) (if jde-ant-read-target (if jde-ant-complete-target ... ...)) (setq target (jde-ant-escape target)) (if jde-ant-read-args (setq interactive-args ...)) (setq jde-ant-interactive-buildfile buildfile) (list buildfile target interactive-args))
  call-interactively(jde-ant-build)
  jde-build()
* call-interactively(jde-build)
targetがnilだとエラーになってしまう。回避策として
2002.9.11
 JDEE2.2.9beta11がリリースされています。"very stable"と書かれています。正式リリースにはドキュメントの更新待ちとのことです。beta11からcheckstyleが組み込まれており、M-x jde-checkstyleでソースコードを診断してくれます。JUnit用の雛型を生成することもできます。他にもいろいろ追加されているみたいです。いずれJDEEのページに反映させていく予定。
 と思ったら、日中にJDEE2.2.9beta12が急遽リリース。11にバグがあったみたい。
2002.9.8
 Makefileの記述ミスで、Cygwinの/以下のファイルを消してしまった。幸いCygwinはCygwinをインストールしたディレクトリを/として扱うので、Windows側のファイルには何も影響がなかった。cleanターゲットでrmにディレクトリも消すrオプションを指定していたが、ディレクトリのマクロ名が空だったため・・・
 GNU make日本語訳(Coop編):GNU Make(Ver.3.77)マニュアルの翻訳。
 JDEE(Java Development Environment for Emacs)の新ページ記述開始。JDEE2.2.9は現在β開発中ですが、だいぶ新しい機能が付け加わっているため、別なページとして一から書き始めました。
2002.9.7
 Meadow 1.15pre2が出ています(1.15のプレリリース#2)。
 Java One応援サイトホームページ。9月下旬のJavaOne(横浜)にいく予定なので、事前にいろいろチェック。
 Java 2 Standard Editionメモのページに、IBM developerWorksサイトの記事「Merlinの魔術:Swingの新たなJFormattedTextFieldコンポーネント」へのリンクを追加。
2002.9.5
 How To Write Unmaintainable Codeという冗談の割にまじめに書かれたページ。いかに人に分かりづらいコードを書くかがとうとうと述べられている。その中に「ハンガリアン記法を使え」なんてのもある。
 Javaクラス高速起動ツールにおいて、起動したクラスが内部でSystem.exitを呼んでいると、起動ツール自身が終了してしまいます。そこで、System.exitの実行権を剥奪する設定を行ってみました。セキュリティマネージャとポリシーファイルを使います。
2002.9.2
 Javaクラス高速起動ツールの実験版の効果を試してみました。WindowsNT4.0SP6a、Pentium MMX 166MHzのマシンで、簡単なSwingのアプリが起動し画面が表示されるまでの時間を目測しました。
アプリ起動方法 1回目 2回目
コマンドラインからjava.exeにより起動 29秒 8秒
Java高速起動ツール"Mercury"版により起動 14秒 1秒(以内)
コマンドライン上のjava.exeによる起動で2回目の起動時間が短縮されているのは、ディスクキャッシュの効果です。高速起動ツールの場合、2回目以降はアプリが使用するクラスが全てJavaVMにロード済みとなっているため、非常に高速に立ち上がります。
 なお、コマンドラインからjava.exeによる起動は、Pentium3 500MHzのマシンでもディスクキャッシュが効く2回目以降で2秒かかっています。一瞬でSwingを使ったプログラムが起動するのは気持ちがよいものです。
2002.9.1
 「Javaクックブック」(オライリー刊)を立ち読み。Antかmakeか、なんてコラムもあった。antはもう直ぐでる2.0で下位互換性を捨てるらしい。これは困りもんです。立ち読みな理由は、値段が高いからでした。
 Javaクラス高速起動ツールの実験版を作成。クラスローダには、java.net.URLClassLoaderをちょっと拡張して使ってみました。
2002.8.27
 JavaOne(横浜)に参加することになりました。これからゆっくり内容を吟味していかなくては。。。
Java読書会の課題図書"Effective Java"の著者Joshua Bloch氏も来るようなので、サインをもらえるようチャレンジしてみよう。。。
2002.8.25
 昨日のJava読書会も内容が深く有意義な会となりました。次回は9/21予定です。
 java.net.URLClassLoaderを使ってローカルファイルシステムのクラスをロードさせる実験をしていたところ、Windows上のファイルをJavaの中からURLで指定する場合、"file:/d:/path/to/file"としてあげないといけないようです。てっきり"file://d:/path/to/file"と思っていたのではまってしまいました。
2002.8.18
 「Javaプラットフォームパフォーマンス」(ピアソン・エデュケーション刊、スティーブ・ウィルソン+ジェフ・ケセルマン著、豊福剛訳)のRAMフットプリントを減らすためのたラウンチャーを元にJavaプログラムのランチャーを作ろうとしています。カレントディレクトリを変更できればいいなと思いクラスローダを調べてみましたが、アプリケーション用クラスローダは途中で再初期化するのが難しい。自前でクラスローダを作ることになりそうです。クラスローダの種類や読み込み場所などについてよくまとめられたWebページ"Trial and Error in Java 001:ClassLoader"を見つけました(中村 学さんのサイトです)。
 「Software Design誌2002年9月号」に、Squeakの記事が掲載されています。
2002.8.16
 長らく放置されていたJNIのページを記述。Windows上とLinux上のHelloJniWorldサンプルプログラムの作成手順を書きました。JNIの書籍「JNI Java Native Interfaceプログラミング〜C/C++コードを用いたJavaアプリケーション開発」(ピアソン・エデュケーション刊、ロブ・ゴードン著、林秀幸訳)を買いました。内容はちょっと古いですが、JNIはこれくらいしか日本語の本がないですね。Windows上でCygwinを使ってネイティブコードのDLLを作ろうと試みたけど失敗。dllwrapコマンドを使うらしいが、オプション指定がよく分からない。これはとりあえず今後の課題。
2002.8.11
 XEmacs on MS-WindowsのWebサイトに従ってXEmacsをWindowsに入れた。これにはJDEE2.2.8が標準搭載されている。JDEEを最新版のJDEE2.2.9beta10にしてみた。このあたりの手順を、Windows上でXEmacsを使うメモページにまとめた。しかし、jde-wiz-override-method や jde-wiz-implement-interface といった機能が動作しない。とりあえず原因を突き止めるべく、Emacs Lispのデバッグを調べた。M-x debug-on-entryでjde-wiz-override-methodを指定すると、jde-wiz-override-methodが評価されるときにブレークポイントが置かれる。[d]キーでステップ実行っぽいことができる。しかしよく分からない表示が続く。ひたすら[d]キーを押して眺めていると、d:\Program Files\XEmacs\xemacs-packages\etc\jde の文字列が再三表示される。うーん、確かにこのディレクトリは、XEmacs標準のJDEE(2.2.8)のものが入っている。この後、JDEEのインストール方法を見てみると、ちゃんとXEmacs用の説明があり、XEmacsの標準搭載JDEEより新しいJDEEを入れるときは、xemacs-packages\etc\jdeをリネームするか削除しろとあった。このとおりにjde.orgにリネームしたところ、ちゃんとjde-wiz-override-methodなどが動作するではないか。。。
2002.8.3
 Java Project Exampleページの進行が遅れています。イテレーションNo.3/No.4は7月で完成予定だったが、まだNo.3途中のままです。ちょっと飽きて他のことをしていたら、あっという間に1ヶ月が過ぎたという状況です。久しぶりに再開しましたが、テストファーストのせいか前の状況を確認して継続するのが非常に楽でした。書きかけのプログラムを1ヶ月も放置したら大抵は捨てて再度一から作り直すことになってましたが、テストファーストとUMLの設計、あとはWebページに記録を残していたことから、30分もかからずに再開できました。XPではあまり文書化は奨励せず、開発要員間の口頭で済ましていますが、文書化(記録)はつけておくことが望ましいのではないかと思います。
2002.8.2
 「Advanced CORBA Programming with C++」購入。C++でCORBAプログラミングの本がなかなかなくって洋書に手を出しました。amazon.co.jpから購入です。
2002.7.24
 Java月刊雑誌の発売日。"Java Developer"と"Java World"、どちらも買ってしまった。
 ピアソンの新刊書籍「Javaプラットフォームパフォーマンス」を買いました。
2002.7.21
 「頑健なJavaプログラムの書き方(Writing Robust Java Code)」の章節見出しに通し番号をつけました。SmartDocで見出しに番号を振る機能を利用しました。
 7.14にメモしたXEmacs on MS-Windowsに従ってXEmacsをインストールし、設定を少し調べてみました。フォントの設定と前景/背景色の設定が分かりました。その際のメモを置いています。
2002.7.14
 Windows上で使うEmacsは著名なものではMeadowNTEmacsXEmacsの3つがある。Meadowの現在の版は1.15pre1で、これはEmacs20.7相当だ。、NTEmacsはEmacsオリジナルに統合されてEmacs最新版の21.2と同じものとなっている。XEmacsはEmacs19の頃に分派して独自に開発を続けており、現在の版は21.4である。Emacsの版数との対応は不明。以下にXEmacsをWindowsへインストールする記事がある。
2002.7.13
 YukiWikiをWindows/Apache2/ActivePerlで動かしてみたが、CGIへの引数は、名前=値 の形で指定するけど名前のところに漢字を入れるとServer Errorとなってしまう。英語ならOKなのだが。そこで、しばらく眠っていたPowerMacにVineLinux PPCをインストールしてCGIテスト用にセットアップした。たまたま「すみからすみまでLinux エキスパート編」(技術評論社)を買っており、付録CD-ROMにVineLinux PPCが入っていたのです。Linux用にHDDが1GBしかなく、VineLinuxを入れる(1.3GB必要)には不足なので、X Window System関係は入れないようにした。YukiWikiのCGIには画像ファイルとCSSファイルが含まれているけど、Apacheはcgi-binの下にある画像ファイルやCSSファイルは読み出せないらしくエラーとなってしまう。CGIをApacheの/cgi-bin下に置くときは、画像・CSSファイルだけは別な場所へ置くようにする(/icons/の下がよいかも)。
 ツリー型Web掲示板imTRBBSをWindows/Apache2/ActivePerlで動かしてみたが不安定。Server Errorが頻発する。こちらもLinuxで動かすしかないかなぁ。職場ではグループウェアにNotesが入っているけど、単にファイル保管庫と化して使いにくい。情報共有なら単純なWebページの方がましと思いつつ、HTMLを皆に書いてFTPさせ合うのは競合が起き危険なため、掲示板かWikiを使おうと画策しているところ。
2002.7.12
 JDEEの日本語情報交換用メーリングリストをeグループに設けました。JDEEに興味がある方はよろしければご参加ください。
2002.7.11
 JDEE2.2.9β10がEmacs20.x(含むMeadow)で動かないのは、Emacs21で新たに追加されたset-afterを使っているから。開発者のPaulさんは次のリリース(多分β11)ではEmacs20.x用に条件処理を入れると言っているので、Emacs20な人はちょっと待つとよいでしょう。(Meadow2はまだかなぁ。。。)
2002.7.10
 会社をお休み、モチベーションが低下中。
 Microsoft .NET Framework SDK日本語版が無償入手可能。.NET Frameworkとコマンドライン開発ツールが含まれているようだ(サイズ160MB)。しかし、Javaが出た頃は不安定やインタプリタやガベコレといったキーワードを挙げてJavaを忌避していた輩が、なぜか.NETが出ると賛美に走るという理解不可能な行動をしている。非論理的で自分が見たいことしか見ないのではと思う。(金になるから、という理由なら分からなくもないが・・・)
2002.7.7
 仕事で複数人で情報を共有したいけど、掲示板では情報が埋もれてしまいそう。ということでWikiがよさそうかなと思い、調べ始めた。Wikiって何?ハワイ語で"Wiki Wiki"は「素早い」という意味。Wikiの定番と言うのはなさそうで、WikiCloneと呼ばれるいろいろなCGIが公開されている。とりあえず日本語が大丈夫そうで大抵のWebサーバで使える言語で書かれたものとしてYukiWikiを動かそう。まず、Perlを実行できるようWindows用のPerlの定番ActivePerlをダウンロードし、Apache上でCGI実行可能な設定を行った。ActivePerlどApacheの設定が詳しく解説されたWebサイト「ActivePerlとApacheでパソコンをサーバに[Windows版]」を参考にした。
2002.7.6
 後ろ向きになってもいいことはない、前を向こう。ちょっと高く遠い目標を持とう。夢を失うとつまらない大人になってしまう。
 Cygwinの日本語化する設定を書いたWebページがありました。uenox HomePage Cygwin日本語化。Cygwinのbashで日本語が扱えるようになる。これはうれしい。
 Windows 2000をIPv6化する。Microsoft IPv6 Technology Preview for Windows 2000をダウンロードし、インストールする。サービスパック2を当てていると、インストーラがエラーとなるので、FAQページにある手順でインストールする。 Webサイト v6 school「Windows2000でIPv6を使ってみよう」に詳しくかいてありました。
2002.7.5
 N+I 2002に半日だが行った。仕事やらなにやらで最近展示会等に行ってなかった。「行きたいけどいけない」理由を作り出す自分がいたことに気付く。行きたいなら行かねば。
2002.7.2
 組織というのは金太郎飴なんだなと思う出来事があった。外圧がないと変われないんだろうね。黒船がこないと変われないのが日本の組織なのかも。
 Windows2000でJava Web Startを実行すると、%USERPROFILIE%\.javaws\javaws.cfg に記述されている設定情報を使って起動しようとする。ここには、JREのパスやバージョン情報が記述されている。JDK(JRE)のバージョンアップやJava Web Startをバージョンアップした場合、各ユーザの設定ファイルを消さないと、古い設定情報が使われるのでエラーになることがあるので注意。
 JDK1.4.1βをWindows2000にインストールすると、Java Web Start 1.2βが合わせてインストールされる。Administratorでインストールしたとき、スタートメニューのプログラムにJava Web Startが追加されるが、一般ユーザにアクセス権がない。
2002.7.1
 2002年も折り返し点を過ぎました。
 MySQL 3.23.51がリリースされています。地道に保守されているようです。
 HTMLベースのWebアプリって、使い勝手が悪いと思う今日この頃。Webサーフィンではそんなに感じないけど、日常の作業で使うと苦痛な所があります。パーソナルコンピュータがWebの端末(奴隷)と化してしまった感じ。Webのクライアントとしてもっと使い勝手のいいモノを作るには何があるんだろう。このあたりを2002年後半のテーマにしてみようかと思う。

Contact me : torutk@alles.or.jp