«前の日(01-05) 最新 次の日(01-07)» 追記

netail.net

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

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


2003-01-06 古い日記からの変換データ

_ 論文

Coordination aspect というのがあるらしい,と言われて渡された資料を読んでみる. Demter/J の人たちがやっている仕事で,COOL: COOrdination Langugage というJava のスレッド同期処理を記述する言語を作ったらしい. たとえば以下のようなコードになる.

coordinator BoundedBuffer /* クラス名と同じ */ {  
  // selfex は,それぞれ,あるスレッドが独占する
  // 異なるスレッドが実行することはありうる  
  selfex {put, take}   
  // mutex は,あるスレッドがアクセスしている間,  
  // その組にあるメソッドの呼び出しはブロックされる.  
  mutex  {put, take};
  // put メソッドの終了時に実行される処理を記述  
  // (@ @) の中に,Java コードが入る  
  put requires (@ !full @) {
    on exit (@
      empty = false;
      if (usedSlots == array.length) full = true;
    @)
  }

こういう記述を与えると,weaver はクラスに synchronized や

while (条件) {
   try { wait(); } catch (InterruptedException e) {}
}

といった記述を追加したコードを生成する. Coordination aspect で検索するとヒットしてくる ppt にけっこう丁寧なサンプルコードが載ってたので,これ以上は省略.

_ 論文

久しぶりに論文読み.アスペクト干渉の検出と解決問題.

F. Douence, P. Fradet, M. Sudholt:``A framework for the detection and resolution of aspect interactions'', Proceedings of the 27th ACM SIGPLAN/SIGSOFT Conferenceon Generative Programming and Component Engineering (GPCE), October (2002).

形式的検証してるのでいまいちよく分からない.やっぱりここまでするのね,というところ.この辺の検証する人たち,実際にどういうものが検証できるのかを目に見える具体例で用意してくれないので論文がすごく読みにくい気がする.検証系の実用性に関しても何も説明がないのが悲しいところ.一般のコンパイラなどにその成果が反映されるにはまだまだ時間がかかるのだろうか.

_ 電子署名

電子署名の付けかたについて調べてたら,AL-Mail 用では PGP と連携する簡易メールエディタがあるらしい.http://hp.vector.co.jp/authors/VA007478/almail/kmwrite/kmwrite.html

_ AspectJ

Erik Hilsdale が説明してくれていたコンストラクタへのjoin point の使い分け方法を日本語訳.こうやって着実に文章を増やしていこう.

_ AspectJ

AspectJ の用途についての文章を補強.といってもたいしたことないけど.

_ Java

先に書いたコードのように,Exception.getCause や .printStackTrace をいじった Exception オブジェクトをネットワーク上で動作するアプリケーションで投げると色々と攻撃ができそうな気がするのだが…….やっぱりその辺は SecurityManager でカバーするんだろうか.

_ Java

思いつきで例外を悪用したコードを書いてみた. EvaluableAsInt は int getInt() を実装していること.getInt() は成功したか失敗したかを throw する.

void evalSquareRoot(EvaluableAsInt o) {
  try {
    o.getInt();
    assert(false, "this statement never executed");
  } catch (IntResult e) {
    if (e.getValue() > 0) {
      throw new FloatResult(sqrt(e.getValue()));
    } else {
      throw new IllegalArgumentException(e);
    }
  } catch (FunctionFailure failure) {
    throw failure;
  }
}

使う側はこんな感じ.getMessage をオーバーライドしてる時点でけっこう邪悪.

public static void main() {
  hoge = new Hoge(100);
  try {
    evalSquareRoot(hoge); 
  } catch (FloatResult f) {
    throw new Exception () {
      public String getMessage() {
        return f.getValue().toString(); 
      }
    }
  } catch (FunctionFailure f) {
    throw new RuntimeException(f);  
  }  
  throw new Error(); // ここには来ないはずだが
}

chained exception や setStackTrace を使えばさらに怪しいコードが書けそうな予感.

_ スクリプト

Universal Studio Japan に行きたいという人がいたのでとりあえずサイトを見てみようとしたのだが,http://www.usj.co.jp/

JavaScript を有効にしないとそもそも見れないらしい.普通はスクリプト無効にしてると思うのだが,最近こういうサイトが多くてちょっと気になる.


2004-01-06 古い日記からの変換データ

_ 掲示板

掲示板をアップデート.掲示板

こっちの日記側で作ったコードを反映した.パスワードとか使わない分,コードは簡略化されているが.


2005-01-06 古い日記からの変換データ

_ [ツール]Inkscape

inkscape という open source な SVG エディタがあるらしい.http://inkscape.org/

試しにちょっと使ってみた限りでは,- 図のサイズを調整しての印刷が容易で,そこそこきれい.- png のエクスポートが可能.- 保存形式に eps もある.ということで,かなり好感触.

読み込み時にプログレス表示などがないので,ちょっと重い処理したときに固まったように見える難点はあるが,Internet Explorer や Batik よりも軽快に使えそう.