«前7日分 最新 次7日分» 追記

netail.net

自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.

最近のお知らせ (古いものはこちら)


2003-08-14 古い日記からの変換データ [長年日記]

_ 実家

NHK ローカルニュースで,高校のときの友人がニュースを読んでいるのを目撃.さすがに,入社1年目なので,そこまで上手ではないが.

親とかはどんな気持ちで見てるんだろう.


2003-08-13 古い日記からの変換データ [長年日記]

_ AOSD

aosd-discuss MLで,Aspects and the Event-Driven Model という Subject でJody Sharpe が,イベントドリブンモデルとの違いは?という質問をしていた.

Gregor Kizales の投稿によれば,イベントドリブンモデルでは,イベントが発生したことを知らせるためのメソッド呼び出し文などが各所に分散する.また,AOP では,「何がイベントか」(pointcut 定義)と「イベントに対して何をするか」(advice 本体の定義)が分離されている点も特徴である,とのこと.

Events と AO の違いはAspect-Oriented Dependency Inversion:http://www.cs.ubc.ca/~kdvolder/Workshops/OOPSLA2001/submissions/12-nordberg.pdfが実は詳しかったらしい.


2003-08-12 古い日記からの変換データ [長年日記]

_ AspectJ

AspectJ-Users ML で,"Any useful examples" というSubject で,Kenworthy, Edward がロギング以外に,AOP でないとできないことはないのだろうか?他のものは,デザインパターンなど,他の技術でもできるような気がする.とかいう感じの投稿をしていた.

「AOPでなければならない」ことというのは難しいと思うのだが.計算可能性という意味では同じなわけだし.

でも,これに対して,使い方の例として,R. Dale Asberry が,プロパティのデフォルト値を設定するのに使っている.before(call(System.getProperty()))をトラップして,もしプロパティが設定されていなければ他のプロパティの値を読み込んだり特定の値をセットしたりして,コンソールに「プロパティの値が設定されていないのでxxxにするよ」と出力する,なんて使い方もできるよーと投稿してた.Property Manager を作ると無駄に依存関係が出てしまう,プロパティの値はデフォルト値を初期化できるタイミングが違うことがあってコードが分散してしまうことがあるが,それを防げる,とか言っていた.

これはこれで,面白い使い方かも.

_ Java

さらにメモ.

(6) JDK 1.2 では,Exception.printStackTrace() の結果は implementation depends である.Java VM の改造以外の方法で,正確な例外発生場所を知ることはできない?……とか言ってたら,スタックトレースがオブジェクトとしてアクセスできるよういなったので,今ならたいていは情報を持っていると考えても良さそうではある.

(7) Java Virtual Machine Profiler Interface (JVMPI) のソースは Visual Studio 6.0 では nmake all でコンパイルできる(環境変数の設定が必須).生成されたjdk/bin ディレクトリに配置しておく必要がある.-Xrunhoge (hoge.dll の場合)オプションをつける.

_ Java

さらにメモを移動.今度は I/O 関連.

(3) BufferedInputStream は,読み込み途中でデータが途切れた場合, in.read(buf, 0, size) で size 分を完全には読み込まないことがある.in.readFully を使うか, in.read(..) の戻り値を使ったほうが安全.

(4) finalize() は終了処理を記述する場所ではない.GC から呼ばれた場合の処理を書く場所.ファイルをフラッシュして閉じる処理などは,Runnable.run() で flush, close を行うようなオブジェクトを用意しておいて,Runtime.getRuntime().addShutdownHook を使う.

(5) 純粋なテキスト入出力処理だけでは,PrintStream での print, println 呼び出しは例外処理を行っている分遅い.ObjectOutputStream の writeObject もわりと遅い.手動で char から byte へのキャストを行ってwrite(buf, 0, len) で書き込んだほうが高速になる.BufferedOutputStream のバッファサイズは 64K くらいまで.

_ Java

古いメモファイルを発見したのでこっちに移動.

(1) javax.swing 系コンストラクタは L&F (Look and Feel) File Loading Thread で動作する.

(2) Class.getName(), Thread.currentThread() は native call を含むため,呼び出しコストが大きい.Class.getName() については,HashMap.put(obj, obj.getClass().getName()) などのように結果をキャッシュして高速化できる場合がある.Thread については,なるべく使わないようにするしかない.

_ バージョン

Windows 2000 のシステムCD内にあるsupport/apcompat.exe でプログラム名 + OS を選択するとOSのバージョン情報をごまかせるらしいと聞いて,昔々のプログラムを実験的に動かしてみたが,やっぱり動かなかった.さらに,Win32s など一部の非互換APIを使っていると異常終了するらしい.

_ アルゴリズム

旅行から帰ってきて,部屋の片づけをしていたら,擬似一様乱数を発生させるためのアルゴリズムのメモを発見.紙のメモのほうは捨ててしまうことにする.
  x[0] = 適当な初期値
  x[n] = (A * x[n-1] + C) mod M
  M = 2^N, A MOD 8 = 5, C MOD 2 = 1 のとき一様乱数となる。 
  ex. A = 109, C = 1021, M = 32768

2003-08-08 古い日記からの変換データ [長年日記]

_ ワイン

結局,シャンボールミュジニー 1934年,アンリ・ド・ヴィラモンは年数のわりに飲みやすくて(渋みはすごかったけど)美味しかった.

残念ながら,ラベルはがしは失敗したが記念写真だけ撮ったのでよしとしておこう.

コルクはかなりぼろぼろ.抜くとき,崩れそうなくらいやわらかくなっていた.ボトル写真

ボトルはこんな感じ.ボトル写真その2

注いでみると,赤色が微妙に違う.ワイン


2003-08-07 古い日記からの変換データ [長年日記]

_ PC-98

とうとうNEC PC98シリーズが終了したらしい.http://www.zdnet.co.jp/news/0308/07/njbt_03.html

PC-8801MH,PC-9821Cx を3年ずつ使った身としては少し感慨深いものがある.

Factory系の FC シリーズとかは,サポートまで打ち切りになったようなマシンでもまだ現役稼動してるらしい.レガシーシステムの置き換えって難しいんだろうなぁ.


2003-08-06 古い日記からの変換データ [長年日記]

_ クレジット

出張で泊まる予定のホテルでは JCB カードが使えるようなので現在の限度額でも問題ないのだが,念のためということで Citibank クリアカード (VISA) の限度額の増額を申し込んでみたら,「このカードは増額不可能です」と自動音声応答にあっさり蹴られた.まあ,実際には何の問題はないのだが…….


2003-08-05 古い日記からの変換データ [長年日記]

_ ワイン

お土産に買ってきた梅ワインを飲んでみる.梅酒に近いけど,甘くなくて微妙に違う感じ.氷入れたら美味しそう.ワインの飲み方ではないけど.

_ ZAQ

ZAQ も Web メールを提供しまっせ,というメールが届いてた.まあ,activemail も Web メールがあるので,ZAQ アカウントを使おうという気はないのだが.

以下の URL は 8月6日から available らしい.https://pw1.zaq.ne.jp/support1/cgi-bin/webmail_top.cgi

_ AspectJ

アスペクト指向な Java フレームワークが世の中にはあるらしい.AspectWerkz は AroundAdvice クラスとか,アドバイス1個が1オブジェクトになるらしい.配備は XML を使う様子.http://aspectwerkz.codehaus.org/

複数のアドバイスが協力したいときはどうするんだろ.アドバイス間を横断するアドバイスでも定義するんだろうか.

_ ワイン

ワインが無事到着.要冷蔵らしいので,さっそく冷蔵庫へ移動.代金の支払いが,てっきり代引きだと思っていたのだが,「インターネット代引き」という謎の記述がされていた.楽天のシステム使って,クレジットで落とすだけだろうか?