netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2002-12-20 古い日記からの変換データ [長年日記] ▲
_ AspectJ ▲
AspectJ のサイトが,いつの間にやらeclipse.org に移動してしまっていた.メーリングリストのアーカイブを見るのにニュースグループのアカウントがいるらしいので,さっそく申請.
_ リンク ▲
アスペクト指向についてリンク集がないかなぁと探してたら,Mix Juice の一杉さんのサイトにあったものを発見.http://staff.aist.go.jp/y-ichisugi/ja/mj/soc.html
関連研究がいっぱいリンクされていて,たいへん参考になる.見習わないといけないかも.
_ Eclipse ▲
落とし穴をひとつ発見.って,AspectJ でないので書く場所がない.
ファイルの絶対パス名から,それがプロジェクト内のどのファイルかを取得しようと,プロジェクト内のファイルを表現するFile(java.io.File ではない)を使って実装しようとしていたのだが,project_root.getFile(filename) で絶対パスを与えてオブジェクトを探しても,実際にはプロジェクト内のものとはみなされない.プロジェクト内部のファイルは標準では相対パスで保存してるためだろうか.
それ自体は特に問題ではなかったのだが,この絶対パスを与えて作った File オブジェクトに対するファイルの絶対パスを受け取る File.getLocation() の戻り値が,与えたはずの元のパスではなく,なぜか Workspaceのディレクトリ + ファイルのフルパスとなるような意味のないパスが生成されてしまっていて,しばらくはまった.たしかに,通常の File は相対パスを格納しているからその実装は分からなくもないが…….
結局,ワークスペースのあるディレクトリの位置をWorkspaceRoot や Project といったオブジェクトが保持していてくれたので,そのディレクトリ分を絶対パスから削って取得することになった.
2002-12-19 古い日記からの変換データ [長年日記] ▲
_ C# ▲
C Magazine のεπιστημηさんの記事で,C# の delegation の実装例が載っていた.
delegate void update(int value); event update changed; // -- update オブジェクトの集合 changed(count); // -- changed に格納された update を呼び出す // -- printer オブジェクトの print メソッドは update のシグネチャを満たす changed += new update(printer.print);
とかいう感じ.これ,感触としてはAspectual Collaboration の expected インタフェースなどとすごく近いような気がする.ちょっと感心.
2002-12-18 古い日記からの変換データ [長年日記] ▲
2002-12-17 古い日記からの変換データ [長年日記] ▲
_ Eclipse ▲
Eclipse をフラッシュメモリから起動してみた.結果は,悲惨なほど遅い.やっぱり読み込みが遅いのが致命的で,プラグインを lazy に読み込みにいくたび処理が止まる.加えて,頻繁にファイルを保存するので,その処理も重い.やっぱりリムーバブル HDD で移動して,C:\Eclipse などにマウントしてしまうのが楽だろうか.
_ Eclipse ▲
どの JRE で実行するかを Preference から与えたつもりが,実行時コンフィギュレーションとしてどの JRE を使うかを変更していなかったので「JREが見つからないよ」エラーが出ていた.ちょっとショック.
_ wonder-net ▲
更新1ヶ月前に投げるって書いておいて2週間遅れた段階で問い合わせてみたら「まだ投げてませんでした」と帰ってきた.こんなことで運営大丈夫かしらん :-)
私が strict に構えすぎなのかな?
_ Eclipse ▲
メニューを追加する方法が分からなくて大苦戦.結局,plugin.xml の中にextension タグを書いて,editorContributiontargetID="org.eclipse.jdt.ui.CompilationUnitEditor"というようにしてどこに追加するかを選び,action タグに実際に実行されるクラスをclass="AspectGraph.actions.SliceCalculation"というように書いておくらしい.で,このクラスが IEditorActionDelegate とか特定のインタフェースを実装していればOK.これをやるだけで1時間以上かかってしまった.
2002-12-16 古い日記からの変換データ [長年日記] ▲
_ Libretto ▲
部室にて,電源アダプタを家に忘れたことに気付く.コンパイラはディスクアクセス多い上に処理が重くて結果的に電力消費が激しいので,これじゃ開発作業ができない…….仕方ないので,資料集めと設計を行うことにする.
2002-12-15 古い日記からの変換データ [長年日記] ▲
_ Java ▲
finally の中に return 文を書いてもいいらしいという話を聞いて,試しに次のようなコードを書いてみた.
try { return 0;} finally { return 100; }
JDK 1.3.1 添付の JVM で実験した結果は,100が返ってきた.正しいと言えば正しいのだが…….気持ち悪いコードだなぁ.こういうコードも仕様としては正しかったりするので,たちが悪い.
_ wonder-net ▲
Wonder Museum 2 が入金受付開始.今までCD収録されてなかった曲が全収録されてるようなので,さっそく払い込み用紙を書いてみる.
ラジオプログラムを久々に更新当日に聴いてみると,またも投稿を読まれていた.感情を込めて読み上げられるのはさすが本職.書いた側も本望♪しかし,読み上げるSAKURA さんがとても嬉しそうで,聞いてる側も嬉しくなりそうだ ;)
_ LAN ▲
家のファイルサーバを久々に起動してデータのバックアップを取る.ファイルサーバ(Linux)と,デスクトップ(Windows)にデータを分散しているが,最近 Linux の使用頻度が下がっているので,Windows のデスクトップに一本化してもよさそうな気がしてきた.デスクトップもDVD見るのとコンパイラ動かすくらいにしか使ってないが,いい加減あやしくなってきたので,どうしたものだか.
Crusoe の CPU パワー不足を補う外付けコプロセッサでもあればLibretto + コプロセッサ + DVD プレイヤー + 外付けディスク で足りるのになぁ,などとないものねだりをしたくなってしまう.
2002-12-14 古い日記からの変換データ [長年日記] ▲
_ NAS ▲
データバックアップ場所として Network attached storage の個人向けはないかなーと思って調べてみたら,I/O Data がそれらしいものを発売していた.解説を読んだ限りでは,組み込み Linux 上で Samba を動かしているだけのような品物らしい.省スペース性にちょっとだけ惹かれる.もっとも,デスクトップPCがある以上,そいつをファイルサーバにしたほうがいいに決まっているのだが…….
_ Eclipse ▲
実装メモ.AJDT, org.aspectj.compiler.base.ast あたりに入っているControlContext が break などのラベル管理,ScopeWalker が変数宣言やメソッド宣言の記録を担当しているらしい.ただ,変数名が実際に指している変数などは AJDT が解決していてVarExpr.getVarDec などで取得可能なので,ScopeWalker 自体は外部から使う必要はなさそう.
Walker クラスから継承して自前で実装するのが基本らしい.
_ Eclipse ▲
プログラムを解析して収集した情報から手ごたえを得たので,研究用ツールの実装を開始.concept proof のために,まず基本的な静的プログラムスライスをやってみることにする.
AspectJ 1.0 ベースでは,基本的に AST の情報から頑張れば,静的解析はいけそう.コンパイル後の AST ノード上では,アスペクトが既に展開されてる節があるのが気になるが…….静的解析としては正しいので問題ない.
とりあえず,メソッド内の通常変数によるデータ依存関係が取れたようなので,ループ文や break文,メソッド呼び出しなどに拡張していくことにする.
それにしても,プログラムスライスツールをスライサと呼ぶのは私だけだろうか……?
_ RPG研 ▲
CDと本の貸し借りのために早起き.よく考えたら昼から行けばいいような気がするのだが,ここ最近,昼前まで寝ることが多いので,たまには早起きすることにする.
久々に買ってきた好物のイングリッシュマフィンと紅茶で朝食.他人には優雅だと言われるが,食べてる本人はそうでもない :-)
本とCDだけ回収して,部室に撤収して作業に専念することにする.