DATE : 2008/02/14 (Thu)
去年の日記でも触れましたが、今日、母校で講演してきました。(講演と言っても、教室で簡単に話をした程度です)
だいたい、当時や現在の自分についてや、現在の自分にいたるまでの心構えなどを、少々グダグダになりながらも話をしてきました。
(;^ω^)話の内容がなかなか定まらず、練習する時間がなかったので、早口になってしまったり所々で詰まったりしてしまいました。
ただ、みんな真剣な眼差しだったので、ある程度は伝わったのではないかと思います。みんなが真剣に聞いてくれたためか、話が終わった後、ものすごくパワーをいただいたような気がしました。
お世話になった先生も暖かく迎えてくださり、思い出話などにも花が咲きました。
きちんと練習していけばよかったという反省はありますが、自分にとってとても良い一日でした。
DATE : 2008/02/11 (Mon)
「デバッガの理論と実装」(Jonathan B.Rosenberg著、吉川邦夫訳、アスキー、1998)を読みました。デバッガのアルゴリズムや、各種OSのデバッグ API について述べられた本です。
デバッガには常々お世話になっており、その動作が気になっていたのですが、実際にはかなり細々としたことを行っていました。
例えば、ブレークポイントを設定して、デバッギ(デバッガによってデバッグされるプログラムのこと)の動作を途中で止めるには、ブレークポイントの対象となっているメモリ内の命令を、CPU のブレークポイント命令に置き換えることで行っています。処理の再開は、置き換えた命令を元の命令に戻すことで行います。シングルステップ実行も似たようなもので、命令を実行する前に、次の命令をブレークポイント命令に置き換えます。そしてブレークポイントで処理が停止したら、置き換えた部分を元の命令に戻し、次の命令をブレークポイント命令に置き換え……という処理を繰り返します。
つまり、デバッガはデバッギのあるメモリを様々に操作することで、デバッグを実現していると言えます。
ところが、これではデバッギの実行は、通常の実行時とメモリの状態が異なることになります。本書でも「デバッガの諸原則」(p.26~)で述べられていますが、計測によって実際の状態が乱れてしまう「ハイゼンベルク効果」が現れてきます。つまり、通常の実行時には現れていたバグがデバッグ時には消えたり、その逆もありうるのです。この影響の度合は、デバッグ API を提供する OS によって異なりますが、デバッガが存在する限り、ゼロにはできません。同時に実行されるプロセスが1つ増えることで、命令の実行順序やイベントの送信順序も変化するためです。そのため、バグによってはデバッガでも捕らえきれないものが存在します。
これはとても勉強になった部分でした。デバッガというと、動作が神秘的でできないことはないような気がしていました。しかし、デバッガのアルゴリズムを知ることで、その限界も知ることができたような気がします。
(;^ω^)これからも、デバッガとは良いお付き合いをしていきたいと思います。
DATE : 2008/02/05 (Tue)
Java SE が6 Update 3 から Update 4にバージョンアップしていたので、PC の JDK を更新したところ、GlassFish が動作しなくなってしまいました。サーバの起動や終了を行う際に使用する asadmin コマンドを使っても、次のようなエラーメッセージが出て動作しません。
指定されたパスが見つかりません。
GlassFish のバージョンは v2 Update Release 1で、Windows Vista 上で動作させています。「指定したパスが見つかりません」ということで、環境変数まわりを調査してみましたが、おかしなところは見当たりません。そもそも、JDK のバージョンアップ前は正常に動いており、java コマンドへのパスや JAVA_HOME 環境変数も問題ありませんでした。
そこで GlassFish の設定ファイルを探し回ったところ、「<GlassFish のインストールフォルダ>\config\asenv.bat」の中に次の行が見つかりました。
set AS_JAVA=C:\Program Files\Java\jdk1.6.0_03\jre/..
バージョンアップ前の JDK のパスを指定しているので、非常に怪しいです。そこで、この部分を現在の JDK のパスに書き換えてみます。すると、正常に asadmin が動作し、GlassFish も正常に起動しました。
(;^ω^)asenv.bat は、GlassFish 用の環境変数を設定するバッチファイルです。GlassFish は、Java の実行環境のパスを AS_JAVA 環境変数で独自に管理しているところが今回ひっかかった点でした。Ant や Maven などは JAVA_HOME 環境変数で管理していたので、GlassFish もそうだと思い込んでしまったわけです。
DATE : 2008/01/25 (Fri)
幸いにして、電車は動いていました。
ただ、朝が早かったこともあってか、路面が完全に凍結していてとても怖かったです。
(;^ω^)特に、歩道橋は危険でした。雪が積もっていることもあって、段に傾斜がついていたので、一歩間違えると下まで滑り落ちていきそうでした。
DATE : 2008/01/24 (Thu)
今日は大雪だと聞いていたのですが、あさ起きたらとてつもない強風でした。昨日の時点で家が軽く揺れるくらいの風が吹いていたのですが、朝まで続くとは思ってもいませんでした。
というわけで、いつもは自転車で駅に向かうのですが、今日は徒歩で向かうことになりました。
幸い、いつも私が乗る電車は定刻どおりに運転していました。もっとも、それ以降は運休のものもちらほらありましたが……。
それにしても、最近は寒くて仕方がありません。私の部屋にはストーブなどの暖房器具がないので、毛布に包まりながら作業をするしかありません。しかし、指先が冷えてなかなか作業が進みません。体のほうは毛布に包まっていれば十分温かいのですが、手は完全に無防備なので、そこから体温がどんどん奪われていく現状です。
(;^ω^)とりあえず、いまは PC の AC アダプタで指先をあたためたりしています。もうそろそろ、手袋をしてキーボードを打たなければならないのかもしれませんね……。
さて、明日は果たして電車が動くのかどうか……。