netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2003-07-23 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
次ネタの準備に向けた論文読み.Daniel Jackson and Alan Fekete:``Lightweight Analysis of Object Interactions'',Proceedings of TACS 2001
オブジェクトの Interaction を扱うために,宣言的な記法を使って,オブジェクトに関する必要最小限の制約を書きましょう,というもの.
全部が全部形式的にやるんじゃなくて,必要なところだけで,っていうあたりは実用性を考えている.宣言的記法で,インタラクションの状態遷移の制約を書いて,反例を探すことで Violation の可能性を見つけようというのはなかなか大したもののように思える.オブジェクトの状態ではなくインタラクションの状態であるという点は特に.
抽象的に書けるぶん,具体的なものを書きたいときには使えなかったりしそうなところは苦しいが,悪くないような気がする.refer 用リストに入れておこう.
_ Java ▲
Core Java Technologies Tech Tips, July 22, 2003 に Taglet (javadocコメント中の @hoge ) の使い方が載ってた.
基本は com.sun.tools.doclets.Taglet を implement したクラスを作って, javadoc -taglet オプションで渡すらしい.
Taglet は,
(1) static register(Map) で map に自分の名前 (@hoge なら hoge) に自分のインスタンスを関連付けて,
(2) どこに記述されるかをinField, inMethod, ... というメソッドで boolean を返すようにして,
(3) もし行内展開するなら isInlineTag でtrue を返すようにして,
(4) HTML 記述を生成するtoString() (単体と配列を引数に取る2種類)を実装する.
けっこう簡単に書けるっぽいので,機会があれば使ってみたいところ.
もう一つ,javac をソースコードから呼び出す方法も載ってた.
こっちは,com.sun.tools.javac.Main.compile(new String[] {sourceFile}); を呼び出すという,シンプルなインタフェースになっている.逆に遊ぶところもなさそうではある.
_ activemail ▲
ルータがパケット落とすなんてありえない(だってコネクション張ってるんだし)ので,やはり名前取得のタイムアウトが原因だった.ってことで Norton Internet Security のファイアウォール設定を変更したら問題は解決した.
_ activemail ▲
activemail 側のサーバは,送信側にホスト名か何かを取りに来てるっぽいのだが,ルータは何も返さないはずなのでタイムアウト待ってるような感じ.あやしいなぁ.ログ吐き用のホスト名だったりしたら嫌だなぁ.
_ XVCL ▲
Java コードに適用している例を見たところ,やはり予測は間違ってなかったらしい.
"frame" という単位が基本の意味的まとまりを表現していて,その中身のテキストの途中には "break" を挿んでおくことができる.
"break" には,別のファイルで "insert" を定義しておくとその break に収めるべき別のコード片を書いておける.
で,出力ファイル名の指定と adapt タグを使って,必要な frame を選択して,それらを合成する.
insert-before, insert-after というbreak の前後にコード片を入れる指定子や,変数,ループなどを使った記述ができる.たとえばクラス名をパラメータで与えて変数の型を指定するとかいった,いわゆるコードジェネレータでのGenericsの代替などがそれなりに簡単にできる.
利点は,言語を問わず,任意のテキストが扱えるところ.欠点もそこにあって,構文木の構造などに注意を払わないので,コードを合成するまではコンパイルが通るかどうかまったく分からない.