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

netail.net

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

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


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

_ AspectJ

Ivan Kiselev: "Aspect-Oriented Programming with AspectJ",Sams Publishing の内容のうち,アスペクトの分類の話をコンテンツとして追加.サンプルコードがたくさん載ってて読みやすい本だなーというのが印象.

_ Java

Java Performance Tuning ニュースなんていうものがあったらしい.知らなかった.この日本語訳,すごくがんばってると思われる.こういうものが無償で公開されてることに感謝.

http://www.gimlay.org/~andoh/hatena/JavaPerformanceTuning/

_ Eclipse

汎用ペインタサポートは 2.1M4 リリースですでに実装されている(ように見える)ので,とりあえず移行してみることにする.

_ Eclipse

テキストエディタ上にデータの検索結果をハイライト表示をしたくて,そのやり方を調べていたら,汎用ペインタは 2.1 からサポート予定となっていて,現状では使用できない様子.それまではテキストマーカーでごまかせるだろうか?


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


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

_ お出かけ

京都の八坂神社,平安神宮に参拝.お昼ごはん兼おやつを,錦小路(四条から一本北の通り)にあったもちつき屋というお店で,店内で餅を七輪で焼いて食べるメニューがあったので,それをいただく.700円.

「もちつき屋」で検索するといっぱいヒットした.実は有名なお店だったのかぁ.http://www.puri2.com/B1/motituki.html


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

_ 日記CGI

検索の複数キーワード処理を修正.具体的には,空白で区切られた文字列を正しく処理できるようになった.# というか今までできてなかったのか :-)

_ LaTeX

Windows で LaTeX コンパイルしようとして,jtygm.sty とかいうのがないと言って怒られたので,google で探してどこかから拾ってきた.jtygm.sty.txt

フォントの対応付けとかをするものらしい./usr/local/share/texmf/ptex/platex/base に置いてみたら読み込まれた.……このやりかたも含めて誰かの日記に書いてあったのだが,URL を忘れてしまった.


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

_ お出かけ

新年の混雑の中,お出かけ.いいかげん寒いので羊革の手袋を購入.

帰ってみると,論文投稿の話のメールが返ってきてたので,再び作業を開始することに.


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

_ お年玉

正月といえばお年玉.もう修士課程なのに,まだもらえた.いーかげん断ってもいいのだが,断る口実を見つけられないのが弱い.

それにしても,現金ではなく web money とかの形式で渡されるような時代になったら面白いのになーと思う.まったくありがたみはないが.

_ ps2eps

PS ファイルから EPS ファイルを生成する ps2eps .Windows 用らしき BAT ファイルも入っていたが,うまく動作しなかった.結局,研究室サーバに入ってた ps2epsi のほうが安定して動作するようなので,そっちを使うことにした.epsi (EPS with preview image でいいのかな?) はサイズが大きいのが欠点だが.

http://ftp.agh.edu.pl/pub/tex/support/ps2eps/


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

_ 論文

さっきの論文に関するメモの続き.久しぶりに長い.

アスペクトの結合演算は,Seq, Any, Fst, Cond の4つ.Seq はAspect1 を実行した後に2を実行する.Any はどちでも好きな順序で実行する.Fst は,1,2 の順に実行するが,もし isCrosscutting がセットされたらそこで終了する.たとえば,new Fst( 懸賞当たったら無料アスペクト, 安売りキャンペーンアスペクト );のように左側のアスペクトが効果を発揮したら後者の意味がなくなるような場合に使う.逆に,左側が作動しない限り右側が動作しない Cond というのもある.new Cond( すべての学生に必要なデータ加工, 大学院生専用の追加事項出力 );

pointcut の指定については,regular crosscuts というものを以下の論文で提案しているらしい.F. Douence, P. Fradet, M. Sudholt:``A framework for the detection and resolution of aspect interactions'', Proceedings of the 27th ACM SIGPLAN/SIGSOFT Conference on Generative Programming and Component Engineering (GPCE), October (2002).今度チェックしてみよう.

_ 論文

実家に帰る途中,新幹線の中,暇なので論文読み.

Remi Douence, Mario Sudholt:``A model and a tool for Event-based Aspect-Oriented Programming (EAOP)''

アスペクト指向プログラミングを,「イベント」を join points として実現しようというもの.実行モニタが,メソッドとコンストラクタの呼び出し・リターンのようなイベントに対して Event オブジェクトを生成し,アスペクトに渡す.(このイベント処理自体はプリプロセッサによって生成される)マルチスレッドに対しては(今のところは)synchronized で対処している様子.

アスペクトは,そのイベントが自分に関係のあるものかどうかを調べ,関係があるなら動作する.この筆者らの実装では,Aspect クラスを継承し,definition メソッドを記述.nextEvent() 呼び出しによって次のイベントを取得する(次のイベントが来るまで nextEvent は実行がブロックされる).event.skip = true; として本来のメソッド呼び出しを飛ばしたりもできるらしい.

アスペクト間の関係,再帰呼び出しについては,アスペクトの中でthis.isRunning = true; とセットすることによってそのアスペクトが起動中であることを示し,再帰呼び出しを防止することができる.

また,アスペクトの設定は,monitor.aspects = new SomeAspect();のように実行時に行うが,ここでaspects = new Seq(new Aspect1(), new Aspect2()); のようにアスペクト間の結合演算を行うオブジェクトを使用できる.動的に結合できるところがえらい.