«前月 最新 翌月» 追記

netail.net

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

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


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

_ 旅行 つづき

旅行から戻ってくると,洗濯とか色々後始末が大変.旅行自体は,伊勢神宮参拝したりとかモーターボートに乗ったりとか温泉でくつろいだりとか,普段出来ないことができたので満足.


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

_ OCAML

O'CAML という ML の拡張言語のオブジェクト指向版が話題になってたので見てみる.ML 大好きな人間にとってはいい言語かも.今度使ってみることにする.http://www.ocaml.org/

_ 読書

コリン・ウィルスン「賢者の石」を読破.ストーリーの展開としては一部安易な気がする部分もあったけど,主人公の未来に対する展望と不安とがないまぜになったエンディングはけっこう好みだった.目に見えない脅威とか,ラヴクラフトとかとの微妙な関連もうまく使っていて,全体としてはいい出来だったような気がする.ちょっと,前半の話が退屈だったけど.

_

クリプトノミコン 2, 3, 4,Java プラットフォームパフォーマンス,Middle-Earth Role Playing,指輪物語の原書を購入.

_ スレッド

JDK における ThreadLocal が,スレッドごとにローカルな値のコピーを生成するためのクラスであることに初めて気付いた.今まで自前で HashMap.get(Thread.currentThread) やってたのはいわゆる車輪の再発明だったらしい.

ついでに,スレッド関係のデザインパターンのサイトも発見.http://www.cs.wustl.edu/~schmidt/patterns-ace.html


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

_ 読書

クリプトノミコン 2 を読み終えた.解説は東大の今井先生が,以前「情報処理」(情報処理学会誌)か何かに書いてたのと似たような話を書いてた.普通は文章や作者に関する解説があるところで,暗号技術についての解説があるというところがこの本がやや専門的領域に踏み込んでるのを感じさせる.

_ 論文

論文チェック.M. Mock, M.Berryman, C.Chambers, and S.J.Eggers.Calpa: A Tool for Automating Selective Dynamic Compilation実行中に最適化していくコンパイラに関する論文.

C プログラムに観測用プログラムを instrument して,sample input を与えて実行した結果から最適化を行うための情報を得るとか,Dynamic Slice などと一種似たような解析をしている.instrument のやり方についての詳細説明はないけど,Aspect Weaver などが実現してるのと同等の処理を実現していそう.

_ AspectJ

AspectJ の dominates ディレクティブについて誤解していたことが発覚.

aspect A dominates B のとき,A は B より優先である…から A が優先して貼りつく,B before → A before → join point → A After → B After の順序で動作すると思ってたのだけど,正しくは 「A が B を支配する」つまりA before → B before → join point → B After → A After の順序で動作して,A が途中でいきなり throw とかしてB の実行を回避することができるらしい.ちなみに,"dominates *" 「他すべてを支配」するようなアスペクトが複数あった場合の動作は未定義っぽい.(現実には dominates * を記述する必然性はほとんどないが)

_ 論文

Constantions A. Constantinides, Atef Bader and Tzilla Elrad.An Aspect-Oriented Design Framework for Concurrent Systems.ECOOP '99 Workshop on Aspect-Oriented Programmingをチェック.Moderator というのを使って weaver の代わりにアスペクトの結合をコントロールするっぽい.Moderator のほうが Weaver にくらべてaspect の階層とかを考慮できるから有利,とか言ってる.アスペクトを直接貼り付けるのでなくて仲介役を導入してる点で AJC と似ていて,仲介役にアスペクトの優先度コントロールとかをしてもらえば,特に直交していないアスペクト間の調整ができれば,とても楽だろうなぁ,という印象.AspectJ の現在の実装では利用できないけど,将来的にはこういう問題の解決は必要になってくると予想される.

_ AspectJ

"アスペクト指向" をキーワードに検索したら,昔書いた原稿がかなり上位にヒットしてた.ちょっと恥ずかしい :-)

_ 読書

クリプトノミコン 2巻を読み始める.情報理論の基礎知識をある程度持ってる人間にとってはとても面白い話なんだけど,普通の人にとってはどうなんだろう?

_ 論文

論文チェックその3.

On the Requirements for Concurrent Software Architecturesto Support Advanced Separation of ConcernsConstantions A. Constantinides and Tzilla Elradアスペクト指向が持つ色々な問題を列挙しただけ…のようにも見える.[Constantinides et al. 99] で,アスペクトの分類をしているらしいとの言及を発見した.Constantions A. Constantinides, Atef Bader and Tzilla Elrad.An Aspect-Oriented Design Framework for Concurrent Systems.ECOOP '99 Workshop on Aspect-Oriented Programmingということなので,後日チェックしよう.

_ 論文

論文チェックその2.

Compaction of Large Class Hierarchies in Databases for Chemical EngineeringM. Baumeister and M. Jarkeクラスの複数のインスタンス生成やサブクラスの分類などにアスペクトを導入,またクラスのアスペクト間の関係をモデル化しよう,という話.オブジェクトをクラス階層だけで分類するのは苦しいのでアスペクトというクラスとは別の階層を導入しているだけかも.AOP と直接の関連があるわけではなく,ちょっと期待外れだった.

JAC: A Flexible Solution for Aspect-Oriented Programing in JavaRenaud Pawlak, Lionel Seinturier, Laurence Duchien, and Gerard Florin一貫性や順序性などの inter-aspect problem についてまとめている.JAC 自体はその解決策として,アスペクトを wrapper で実現してWrapperController が起動順序などを設定するという形式っぽいのでAspectJ で実装する場合には利用できそうもない.また,ソースコードへのリフレクションも JAC では使えなさそう.ただ,AspectJ と違って,利用者側が weaver を定義できるっぽく,用途によっては便利となるかもしれない.

_ 論文

論文チェックその1.

An Approach To Using Formal Methods In Aspect OrientationX. Xie, S. M. ShatzState-Based Object Petri Nets とかいうColored Petri Net のオブジェクト表現用を使って,Aspect を Petri Net で表現して,それを結合することでAspect の合成を行うとかいう話.面白いんだけど,現状では利用する必要はなさそう.

The Watson Subject Compiler & AspectJ(A Critique of Practical Objects)Mark SkipperSOPとAOPを比較した論文.SOPとAOPの類似性について述べている.AOP は,aspect と base program のインタラクションで,n個アスペクトがあればn回インタラクションが発生するだけで,理想的には inter-aspect problem は発生しないはずだが,実際にはそうもいかない.かといって,SOPのようにすべてのモジュールが対等だと,手動で合成ルールを記述しないといけないが,これも難しい作業である…とかいう話.結局 inter-aspect problem を解決するような言語要素が現在の AspectJ には含まれてないので,もっと他に方法を考える必要がある,ということでやっぱり誤魔化されてる気分.

Mutli-Perspective Specification, Design and Implementation of Software Components Using AspectsJohn Grundyコンポーネントにアスペクト情報を持たせて選択的な再利用を実現する.コンポーネントごとに,アスペクトを aspect Collaboration provides hoge require foo end aspectのように定義する,この記述を統合開発環境などのツールから利用する…とかいう話だと思う.興味はあるけど,アスペクトの再利用についてはまだ色々問題がありそうな気がする.


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

_ 読書

クリプトノミコン 3巻を読みはじめた.暗号アルゴリズムを実現した Perl ソースが載ってるのはすごいけどコードの書き方が汚くて(無名変数 "$_" 使いすぎて)コード自体が暗号に見える.

ストーリー的には,ようやく本題が見え始めたといったところ.でも,どう完結するのかはまだ予想できない.


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

_ PDA

東芝 genio e を購入したので使ってみる.Java も動くみたいだし,色々遊べそう.ただ,マイクロハードディスクを載せたら電力消費が大きすぎて役立たず.メモリを多く載せれば解決するか?

_ 読書

クリプトノミコン 4巻まで読破.ストーリーを過去と未来の二つから構成して,並行に話を進めておく,というのはけっこう有効なのかもしれない.特に時系列上で過去にあたる出来事については,読者は最終結果だけを(未来の話のほうで)知っているぶん,「なぜそうなるのか」というところで注目するし.TRPG では使いづらい演出だが :-)

でも,この本,情報工学・情報理論の基礎知識を持ってる人にはとても面白いかも.個人的には高い評価.話がちょっと長いけど.


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

_ ダイクストラ

ダイクストラが 8月6日,死去.謹んで冥福を祈りたい.

情報科学を専攻してる人間にとっては偉大な先駆者のひとりだけど,asahi.com の "おくやみ" 記事とかには載ってない.シャノンは載ってたような気がするんだが….

_ Intentional Programming

Intentional Programming - Innovation in the Legacy AgeCharles Simonyi

Intentional Programming は,プログラマの意図 (Intention) を再利用することが目標?Intention に,そのソースコードへのマップのやり方だけでなく,エディタでの表示をどうするかとか,色々な情報を付加している.

うまく使えば,抽象的なボキャブラリを言語に導入できる.たとえば forall x in A, do {} を Iterator 表現に置換するとか….でも,Intention 自体を抽象的に書けるかどうかとか,色々問題もありそう.個人的には,IDEの支援がないとまったく利用不能なツールは,しかもツールの実装そのものが高コストなものは,好みではない.

どうでもいいけど,IP (Internet Protocol) という既存の言葉とかぶる略称はやめてほしいなぁ.

_ 論文

Support for Subtyping and Code Re-use in TimorJ. Lesile Keedy, Gisela Menger, Christian Heinleinをチェック.Subtyping (is-a) と,実装の再利用としての継承というのは別物だから,区別して使えないといけない,という主張.この筆者が作った(?) Timor という言語では,impl ArrayDEQueue of DoubleEndedQueue reuses ArrayQueueといったようにインタフェースは DoubleendedQueueだけど実装だけは継承しているみたいなことが書けるらしい.(ここで Queue と DoubleEndedQueue は特に関係のない type, type とは Java でいう interface みたいなもの)これは,Java の "implements" などにくらべて記述の自由度が高いので,面白いかもしれない.

_ JREVEAL, Java Decompiler

TOOLS (Technology of Object-Oriented Languages and Systems)2002 の論文でREVEAL というのが紹介されてたので検索してみるとhttp://www.jreveal.org/index.htmlという Java の逆コンパイラを発見した.逆コンパイラが役立つかどうかはともかくとして(設計書の残ってないバイナリコードのメンテナンスには役立つか?)興味深いシステムである.

_ 論文

http://www.fuka.info.waseda.ac.jp/~washi/diary/200202.html

>[TOOLS Pacific 2002] 初日>http://www.cse.unsw.edu.au/tools/>>"Specifying and Implementing the Operational Use of Constraints in Object-Oriented Applications">Verheecke, B. and Straeten, R.V.D. (2002). >>Constraints を元のクラスとは別の Constraints Class を>自動生成して、その内容を CASE Tool から生成した元の>クラスに ”埋め込んで”検証する試み。

気になるアプローチだったのでチェックしてみた.

OCL と呼ばれる制約記述言語を UML に加えて,クラス図からコードを生成するときに検証用のコードと,それを破った場合の例外 throw 文が加えられる.ツールによるサポートが前提だけど,面白い試みだと思う.ただ,throw されうる例外は必ず正しく catch しないと意味がないので,コードを書く人が不慮の例外発生,および不慮の例外 catch に気をつけないといけない.たとえば,リソースの解放は確実に finally をかましとかないとまずい,とかいうことになるわけで,その辺は不安がある.

_ 論文

Constantions A. Constantinides, Atef Bader and Tzilla Elrad.An Aspect-Oriented Design Framework for Concurrent Systems.ECOOP '99 Workshop on Aspect-Oriented Programmingを読み直し.アスペクトの階層化という言葉で引っかかってたけど,(C + A) で合成した結果に対してさらに別のクラス C' とアスペクト A' をくっつける,といったような階層化らしい.これは,システム全体を横断するようなアスペクトが他のアスペクトから影響を受けたくない場合などに有用.AspectJ では現状ただの足し算になるので,「このアスペクトには他のアスペクトはくっつくな」と宣言できないんだけど,それが実現可能になる.(この「他のアスペクトはくっつくな」表明は, 逆にくっつかないと困る場合もあるので一概にはいえない問題. たとえば,ファイルへの出力をすべてネットワークへマップするとか いうアスペクトがあった場合,それはログ吐きアスペクトにも くっつかないとダメ)

_ 論文

読んだことのある論文の管理がいい加減だと,どうしても複数回同じ論文を読んでしまいがち.何か組織的な方策はないものかしら.単に論文タイトルでリストを grep するだけって芸がないしなぁ….


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

_ 論文書き

論文を発送するために印刷&まとめた直後に誤植を1個発見.とほほ~とか言いながら,見なかったふりをする.

_ 論文書き

先生の添削を受けながら論文書き.論理の明快さ,論理の一貫性だけでなく,表現の一貫性も重要なんだなーと今さら思い知った.エディタの表記ゆれチェックとかが意外と便利かも.

_ サイト更新

紅茶の話を 1 html に独立させる.ついでに, tcct.zaq の使ってないホームページ領域に日記以外のデータをミラーしてみた.Ruby で書いてるはずの CGI がそのまま動いてるのが気になるぞ :-)

_ 紅茶

日記スクリプトを移行するときのごたごたで,過去の紅茶購入履歴もすっ飛んでたことに今さら気付いてショックを受けた.

とはいえ,最近は暑いので水出し紅茶ばかりで,レピシエのダージリン・スタインタール,グームティーとアッサム・ハルムッティくらい.農園ごとの奴は,意外とお茶の葉の粒が揃ってないのですぐ苦味が出てしまう気がする.レピシエのピュアダージリン・カンチェンジュンガとかが水出しにするとすっきりした飲み口で美味しかった.


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

_ 実家

久しぶりに電話回線からダイヤルアップ.メール取り込むだけでも重いよー.

下宿(CATV),部室(ADSL),研究室(専用線)の環境に慣れすぎてたかも.無線64k導入したいなぁ.


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

_ 恋の色

テレビを見てたら,CMで飯塚雅弓の「恋の色」が使われててびっくり.


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

_ Wonder-Net

帰省のごたごたで聞く暇のなかった11日更新分を聞いていたら,投稿したメールを読まれていた.わーい :-)


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

_ Java

Java のクラス間依存関係を簡単に解析するツールがほしかったので適当に書いてた(単にクラス・パッケージ宣言とimportをチェックするだけの簡単な奴を作ってた)のだが,JAVA Developer(UNIX USER 増刊) 9月号を読んでてimport がパッケージの完全修飾名を解決するためだけのものだということを思い出した.結局,1回限りの解析だったので,構文解析はせずに "." を含むような文字列を正規表現でマッチしてメソッド呼び出しなどをヒットさせて誤魔化した.


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

_ AspectJ

遅延初期化イディオムなんてものを思いついた.オブジェクトの初期化をコンストラクタでできない場合に,before(Foo foo): get(* foo.*) && if(!initialized) で初期化コードを実行するようにすると便利かも.あとはアスペクトを per Object で貼り付けるか,initialized フラグを Object に introduce すれば OK.今度実験してみよう.


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

_ MERP

Middle-Earth Role Playing の日本語版サマリのプレーンテキスト版がほぼ完成.人に見せられるように,LaTeX 用にフォーマットを直し始める.こんなことしてる暇があったら論文書かないとまずいのだが….

_ 紅茶

以前に買ったまま放置されていたダージリン・グームティーを試飲.等級は当然のごとく(?) FTGFOP1.ファーストフラッシュだったとは思うのだが,その頃の日記データがちょうどなくしてしまった奴なので,不明.たぶんアッサム茶の補充に行ってついでに買ってきた奴だろう.

香りを表現する語彙が乏しいのでもどかしい気がするが,スタインタールと比べると重みがある,というのが第一印象.ミリクトンのときほどの「これだ!」っていうインパクトはないけど,けっこうおいしい.お茶菓子にも合わせやすそう.# ほとんどのお茶はおいしいと言ってしまうけど :-)


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

_ 玄人指向?

「玄人志向」の箱に Expert-Oriented って書いてあったが,Oriented は指向じゃないのだろうか….

とかいうので四方山話をしてたときに思い浮かんだ小ネタ.

玄人志向プログラミング Expert-Oriented Programming

以下の三つに価値を置く.・目指せ最速(速ければ速いほどよい)・限界まで短く(短ければ短いほどよい)・ソースがドキュメントだ(コメントなんていらないよ)コーディングのお供はテスト自動化ツールとプロファイラ.単体テストが通過した瞬間からチューニング開始で,仕様変更があったらまた次の機会のためにコードを取っておこう.

_ 論文

Frederic Duclos, Jacky Estublier, Philippe Morat:Describing and Using Non Functional Aspectsin Component Based Applicationsを読む.出典は AOSD 2002.

Non-Functional Aspects を書けるようにする言語を提案してる.アスペクトの貼り付け方を generic に書いて,後から実際のコンポーネントにあわせてパラメータを与えるらしい.アスペクト本体の記述がより抽象的になるのが利点かな.

_ ウィルススキャン

ZAQ のメールのウィルススキャンサービスに加入.受け取る量少ないからほとんど意味ないけど.Norton AntiVirus もクライアントに入ってるし.


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

_ Robocode

IBM developerWorks の記事の誘惑に負けて Robocode をインストール.とりあえず適当にコードを書いたロボットを動かして戦わせてみる.ちゃんと戦術を考えたロボットでないと勝利するのは難しそうだけど,頭を使う余地はたくさんありそう.

ロボット間のコミュニケーションをアスペクトやその他のオブジェクト間横断要素として書けたら面白いかなー.

_ AspectJ

AspectJ まわりの話を少し追加しようとして,項目数がけっこう増えてきたことに気付いた.レイアウトとか,そろそろ整理しないとまずいかなぁ.


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

_ Robocode Japan Cup

IBM Official な Robocode の日本大会,Robocode Japan Cup が開催.締め切りは11月25日….参加してる余裕はあるだろうか?後輩をがんばって焚き付けたいところ.

_ フリーボード

単に日記を誰にでも書けるように,ただし記事の書き換えはできないように変えてみたものを設置.どうなるか,とりあえず様子見.

_ AspectJ

AspectJ の Tips に,「Decorator としてのアスペクト」を追加.アスペクトは入出力双方を包む Decorator として機能できることに最近気付いたけど,まだうまく使えていない.

_ Robocode

本当は Robot の思考ルーチンを書くのが目的だけど,Robot に無理矢理ユーザインタフェースを付ければ人間が操縦できるようなゲームになるだろうか?時間があれば,挑戦してみよう.

_ カウンタ

微妙に訪問者数が知りたくなったのでカウンタ設置.google や yahoo でも検索にヒットするようになったし,アスペクト指向関連で頑張ってる人に役立つサイトになるよう頑張りたいところ.


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

_ Robocode

ユーザがコントロールできるようにnew JFrame して frame.addListner(this); してみたけど失敗.親ウィンドウを設定できないとダイアログが開かない?

Robocode の jar ファイルを展開してみたけどバイナリしか入ってなかったので, Javassist とかのバイトコード変換系を使えばいけるだろうが,ROI が悪そうなのでやめることにする.やっぱり真面目にコードを書こう.


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

_ bookmark manager

自分用に作ったブックマーク管理ツールを,こっそり公開.Libretto みたいな横長画面のマシン以外では役立つのかどうか知らないけど.

_ AspectJ

AspectJ の話のところに,「ワームホール」のことを追加.「ワームホール」という名前自体は AspectJ Users メーリングリストで「こう呼んだらいいかもね」みたいな話があったのでそこから拝借.もっとも,まだアスペクトのイディオムというのがそれほど整理されてないので,将来的には名前が変わるかもしれない.

ワームホールは,個人的には嫌い.AspectJ IDE for Emacs みたいなツールの助けがないとコードが追えないから.そもそもアスペクトの存在を仮定してクラスのコードを書くということ自体おかしいと思うんだけどなぁ.アスペクトなしでもクラスは動くべきで,コンポーネントの接続には別のメカニズムを使うべきだと思う.

_ JNI

Java からキーボード情報が取れないのは悔しかったので,いちおうJava Native Interface について調べた.

DLL に Java_pkg_class_method といった感じの関数名を用意しておくというだけの発想らしく,Delphi とか使っても簡単に作れそう.暇があったらやってみよう(最近こんなのが多いような気がする)


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

_ らぐなろく

勧められてとりあえずはじめてみたラグナロク.レベル上げはだるいけど,他のプレイヤーとの会話は面白いかも.どっかのアンケートで「ネットワークゲームで一番重要なのはコミュニケーション機能だ」という結果になったのは頷ける.