netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-04-08 [長年日記] ▲
_ [AspectJ] AspectJ1.5M2リリース ▲
JDK1.5の構文とannotationをサポートしたバージョンがとうとうリリース.AJDTも(開発版だが)Eclipse 3.1M6+AspectJ1.5M2用の新バージョンが登場.
書いてる記事もこれに合わせて書きたいところが出てきた.annotationとか特に.
_ [work] Zaurus SL-C3000 + CFXGA ▲
「ザウルスショット」でスクリーンショットを取ってZaurusへ転送する作業自体は自動化されていたが,PowerPointファイルをいちいちスクリーンショットを撮るのは面倒.で,印刷イメージを1ページごとに画像化してZaurusに転送することもできるのだが,そうするとページごとに余白が生成されてスライドの上下左右に微妙な空白が出現してしまう.スライドの背景に色や罫線を使っている場合,これが目立ってしまうので,スライドのテンプレートに注意が必要そう. CFXGAが出力できる画像自体は640x480または800x600で,プレゼンツールは画像を勝手に縮小して表示するらしい.どちらかというと,集めた雑多な情報をみんなに見せたいとき用か. もしスライドを出したい場合には,800x600環境で手作業でスクリーンショットを撮るのが無難?1280x1024なディスプレイでしか試してないので,普通のプロジェクタだとあまり気にならないのかもしれないが…. ここを見ると,PDF/PostScriptから画像変換とかしている._ [work] ppt2png ▲
PowerPoint のスライドオブジェクトが持っている Export メソッドに,slide.Export('hoge.png', 'png', 800, 600);
とか渡すと画像変換できること判明.
これで作った画像を Zaurus プレゼンテーションに食わせてみたら,それなりの品質だったので,Zaurusでプレゼンするのをもう少し検討する気になってきた.
ザウルスショットを使った場合,解像度を変更する必要があって,BMPかJPEGしか選べないのに対して(印刷キャプチャは余白が入るので今のところ論外),好きなサイズが選べてPNGも作れるので,任意の枚数・サイズで自動的に画像化するツールとしておけば Zaurus に転送する以外にも使えて,けっこう便利な小道具になるかなーと期待して,時間があったら作ってみることにする.
2005-04-07 [長年日記] ▲
_ [work] AspectJ入門用(?)ドキュメント ▲
現在,ソースコードのサンプルも含めると25000字くらい.A4で1段組で25ページ.けっこう増えてきた.
AspectJのインタータイプ宣言の基本であるメソッド・フィールドの定義はJavaのメソッド宣言によく似ているので,説明がすごく楽だということ発覚.
_ [論文]アスペクトの状態遷移モデル ▲
Mark Mahoney, Tzilla Elrad:
Modeling Platform Specific Attributes of a System as Crosscutting Concerns using Aspect-Oriented Statecharts and Virtual Finite State Machines.
Proceedings of AOM 2005, Chicago, Illinois, March 2005.
基本の状態遷移を Actual Event/Actual Action として,Actual Event を仮想状態機械への入力 Virtual Event に,仮想状態機械の出力 Virtual Action を Actual Action や Actual Event にマップすることで複数の状態機械を連動させて動かす方法の提案.Virtual/Actual のマッピングは開発者の誰かががんばって記述する.
実行コンテキスト(主にはplatform dependentな部分)の組み合わせによる状態数の爆発を防いだりはできる?
_ [論文]Join Point 情報をUMLに持たせる ▲
Maria Tkatchenko, Gregor Kiczales: Uniform Support for Modeling Crosscutting Structure.
Proceedings of AOM 2005, Chicago, Illinois, March 2005.
UMLにおいて,Operation(クラス図のメソッド)やSequence(シーケンス図のメソッド実行中を表現する部分)などに,複数の図の間で共通しているJoin Pointを持っているかを情報として持たせて,要素間の相互リンクを自動的に張る.リンクを張ってから,何らかの調査スクリプトなどを走らせるのだが,Join Point の情報しか拡張してないのでツールサポートも楽,ということになるらしい.いまいち感覚がつかめてないが.
2005-04-06 [長年日記] ▲
2005-04-04 [長年日記] ▲
_ 宅配便 ▲
家で待機して荷物受け取り.最近といってもかなり前からだが,某宅急便は荷物IDさえ分かっていれば配達が現在進行中かどうか(家で待機している必要があるか)調べられるところが便利になったなーと思う.半日単位くらいだからまだまだという気もするけど.
_ 在学証明書 ▲
手続きに必要な在学証明書を取りに,基礎工の証明書自動発行機のところへ行ってみたら,再起動画面で止まっていた.教務の人に言われて理学部へ行ってもやっぱり停止していたので,サークル棟2階の学生センターへ行ってみたら,自動発行機の新型(?)が2台用意されていて(1台は奥の柱の影で見つけにくかったが),順調に動作していた.成績を知りたい学部生が行列していたので微妙に待たされたが.
_ [日記CGI]tDiary 2.0.1 ▲
3月31日付けでアップデートが出ていたので,適用.設定ファイルが標準で dot.htaccess とか tdiary.conf.sample とかなっているので,単に上書きしたら設定ファイルだけが移行するようになっているので楽.
…と思ってたら,手で変更した css まで上書きしてしまったので復旧.
_ [論文]AspectJのバイトコードをスライスする ▲
Davide Balzarotti, Antonio Castaldo, Mattia Monga: Slicing AspectJ Woven Code.
Proceedings of FOAL 2005, Chicago, Illinois, March 2005.
AspectJの出力バイトコードに対してスライス計算すればいいよね,という話.やりたいことが,この人たちの場合は最終的にアスペクトの影響度合いを調べたいっぽいので,それなりに使えそう.難しいのはバイトコードのうちコンパイラで生成されたコード(特にポイントカットのマッチ処理やインタータイプ宣言)からソースへマッピングしなおすところだと思うのだが,そのあたりはやはり対応できていない様子.
_ [論文]未来を含むイベント列にマッチするポイントカット ▲
Karl Klose, Klaus Ostermann: Back to the Future: Pointcuts as Predicates over Traces.
Proceedings of FOAL 2005, pp.33-38, Chicago, Illinois, March 2005.
実行トレース=イベント列に対して,イベント間の時間的関係でポイントカットをマッチさせるとき,未来に発生するイベントへの言及も許可したようなポイントカット記述言語を考えてみました,という変わった論文.
「Aが呼ばれて,将来Bが呼ばれるなら」という条件が書けるが,矛盾が起きるのを防ぐために,アスペクトが自分自身や,自分より以前に動作した他のアスペクトに影響を与えてはならないという制約が付く.また,「将来Bが呼ばれるなら」の可能性をどこまで広げていいかがネック.連続したメソッド呼び出しくらいなら許せる気もするが.
今のところ実装がかなり制限つきで,キラーアプリケーションもないらしいが,アイディアのユニークさはすごいところ.
2005-04-03 [長年日記] ▲
_ [論文]属性ベースの(AspectJの)Join Pointで指定すると問題が起きる例 ▲
Donal Lafferty: Avoiding Incorrect and Unpredictable Behavior with Attribute-bassed Crosscutting.
Proceedings of ACP4IS, Chicago, Illinois, March 2005.
.NET用に言語非依存のAOPフレームワークを作っている人らしく,AspectJなどのメソッドの属性などでポイントカットを指定する方法だと,SML.NETなど一部の言語で,ポイントカットにマッチしてしまうような作業用メソッドがコンパイラによって生成されてしまうことがある,というもの.で,アトリビュート(メタデータ)をメソッドごとに付加した方法だったら,Join Pointが勝手に増加しないので無難だよ,というふうに主張している.
_ [論文]Pointcut記述のマッチ可能性の計算量 ▲
Karl J. Lieberherr, Jeffrey Palm, Ravi Sundaram: Expressiveness and Complexity of Crosscut Languages.
Proceedings FOAL, Chicago, Illinois, March 2005.
AspectJにおけるポイントカットやDemeterJにおけるインスタンス探索を,コールグラフやインスタンス関係のグラフからマッチ対象を選択する "Selector" として考える.このとき,Selectorが特定のノードに常にマッチする場所を見つけられるか,1つもマッチしないことが調べられるか,といったことが最適化時に重要となる.
で,アルゴリズムの計算量を調べたら,基本的には,intersectionとnegationを使わなければ,多項式時間でよく,それ以外でも一部多項式時間で解ける問題があるらしい(それ以外はNP完全).
面白いところは,AspectJとDemeterJとをグラフ選択問題として共通化してるところ.AspectJで,コールグラフ上で
call(void f()) & !cflow(void g())のようなメソッド選択の式を,DemeterJを使って
from main() bypassing g() to f()のように置き換えることで negation や intersection を取り除いて多項式時間の問題に帰着できるらしい.
2005-03-31 [長年日記] ▲
_ [AspectJ]簡易リファレンス ▲
新PCにウィルススキャンかけている間が暇だったので,AspectJ Quick Reference の一部日本語化したバージョンをアスペクト指向な wiki内に簡易リファレンスとして作ってみた.元々サンプルコードだらけで文章はないのだけど,英語だというだけでアレルギー起こす人向け.
元々,東大の河内さんの AspectJ Primer の日本語訳があるから十分かなーと思っていたのだが,ポイントカットの述語が完全に古くなってしまった(calls とか 0.8 ベースだった)ことが判明したので,ちょっと書くことにした.