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

netail.net

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

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


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

_ AspectJ

AspectJ ドキュメントを少し補強.・call と execution の違い・Introduction とアドバイスの違いを追加.

_ 紅茶

梅田のCOCORICOでパイ+サラダ+飲み物のセットを頼む.パンプキンパイは普通に美味しかった.

アイスティーを,濃いめのアールグレイをたくさんの氷を入れたグラスに注いで作る様子に(目の前でやってくれるので)ちょっと感心.

スコッチとシロップで香りと味を微妙に調整するのが他の店にはない独特で面白いところで,かなり美味しかった.

_ 丑の日

今年も "the Day of the Ox during the doyo period of summer" である.http://www.dentsu.com/MUSEUM/edo/food/26.html

なのでうなぎを食う.


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

_ 読書

倉島保美「理系のための英語ライティング上達法」(ブルーバックス)読了.

助動詞,前置詞や接続詞の使い方における注意などだが,文章の構成のための基礎の説明がメイン.

コロンやセミコロンの使い方,いくつかの慣用句表現の微妙な違いについても簡単な説明があって,ためになる本だ.文章を書くときにまた参考にしたい.

作者の人のwebページはここらしい.http://www2u.biglobe.ne.jp/~kurapy/

_ AspectJ

AspectJ dev メーリングリストで,こんなのはどうだろう,とAdrian Colyer と Wes Isberg が話してた. インタフェースに abstract pointcut を定義しておいて,

interface I {
   abstract pointcut pc();
}
アスペクトにはその実装が書いてあって,
    before () : I.pc() { ... }
クラスごとにインタフェースを実装してpointcut を定義すればいいよねーというもの.
class A implements I {
     pointcut pc() : within(A);    
}
class B implements I {
     pointcut pc() : target(A);
}

アスペクトを「どこに貼り付けるか」定義をクラス側に書けるので面白い. 他にも pointcut 定義の拡張・再利用の方法は考えられるのでどれが残るかは分からないが.

_ RoleS

RoleS については以下のURLからダウンロード可能らしい.http://www.prakinf.tu-ilmenau.de/~hirsch/Projects/Squeak/RoleS/

基本は,オブジェクトに Role を付加するものらしい.動的にできるのだろうけど,役立つかどうかは知らない.

_ AOSD

aosd-discuss メーリングリストで,Robert Hirschfeld が AspectS (0.4.6), PerspectiveS (0.1.6), and RoleS (0.0.4) をアップロードしたよんと言ってた.

http://map1.squeakfoundation.org/smからも,もうすぐ取れるようになるらしい.RoleS って何なのだろう…….

_ データ整理

oucc.org サーバに置いてたデータが400MB近かったので整理.XML(Xalan, Xerces)関連の obj, doc, samples などを削除して,だいたい150MB程度まで減少した.

写真などを置いてるせいで,public_html 以下だけで40MB近い.まあ,ディスクが余っているからそれほど問題ないのだが…….

_ 無線LAN

なぜか無線LANが,ファイル転送をしようとすると切れる.ブリッジでのWEP128ビット復号化が間に合ってないとかだったら嫌だなぁ.試しに64ビットにしてみたら落ちなくなったし.

_ クレジット

シティバンク(VISA)の引き落としが届いた.なぜか勝手にリボ払いになってて,5万くらい使ってるのに2500円しか引き落とされずに,蓄積されてしまっている.確認するために web サイト覗きに行ったら,サービスが一時停止してた.この手のシステムは Availability が重要だと思うのだが…….

_ Web修正

アクセス解析(簡易版)を aspectj/ フレームあり版に追加.また,いくつかファイルのパーミッションが間違ってたところを修正.


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

_ ランチャ

キーボード制御であることに心惹かれて,ランチャ Blue Wind を導入.メール,エディタ,SSH の起動をセッティング.http://cspace.s2.xrea.com/software/bluewind/

_ ML HTMLHELP

メーリングリストのアーカイブを HTML Help に変換するプロトタイプを作ってみた.単に MHonArc の出力 HTML をリストアップして hhp (プロジェクトファイル) にadd するだけの簡単仕様.実は tknamazu とかのほうが早かったりしそうだが.


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

_ 論文

Scharli, N., Ducasse, S., Nierstrasz, O. and Black, A.P.:"Traits: Composable Units of Behaviour"ECOOP2003

今回一番気になった論文.trait = 特徴 を再利用単位にしよう,という話.trait は,メソッドの実装を提供し,必要なものを要求する.Trait は状態変数には直接アクセスはしない.Traits はクラスと合成される.Conflict が起こったときは明示的に解決する必要がある.

多重継承や mix-in の問題点を挙げている.たとえば,出力ストリームクラス A と B に対して,それらを継承してSyncA, SyncB という同期クラスを作るとき,共通部分だけを取り出して AやBと独立にSyncWrite クラスを作ることはできない(Template使えば別だが).

Traits の例として,たとえば・TDrawing はBounds と Canvas を要求して,draw メソッドの実装を提供する.・TCircle は bounds を TDrawing に提供し,size を要求する.・Circle クラスは,TDrawing に Canvas, TCircle に size を提供する.……といった接続関係を定義できるらしい.

この方法は,オブジェクトが Traits を取り込むと宣言するので,アスペクトとは逆にObject -> Traits 方向の依存関係が発生する.必要最小限の Traits -> Object 依存関係を持つので下手すると依存関係が複雑化しそうだが.

多重継承などよりは整理された方式なので個人的には好み.スクリプト言語なんかで実装されてて,簡単な Traits がたくさん準備されてたら,思わず使ってしまいそうだ.ただ,Traits はアスペクトと違って「勝手に動けない」ところが少し弱いので悲しい.動けるようなものなら間違いなく使う.昔,そういうネタを考えてたけれど,誰か作ってくれないかなぁ.自分で実装するのは面倒だ.

_ 論文

Lam, P. and Rinard, M.:"A Type System and Analysis for the Automatic Extractionand Enforcement of Design Information"ECOOP2003

型システムを少しいじって,「これはxxという名前のサブシステムね」と型宣言をできるようにして,システムの動作を解析している.

モデルとしては,Call/Return Interaction Model (制御関係)Heap Ineteraction Model (共有データへのアクセス) なんかが導出可能らしい.

Call/Return Interaction Diagram は,すべての interaction の可能性を示しているもの.UML のシーケンス図は特定のユースケースに縛られているのでそれとはちょっと違うものだよ,と主張している.

実装方法としては,言語を拡張すればいける,というのが偉いのかどうか.ソースコードをぱっと見た限りでは,こんなのを手作業で書くのは大変そう.

たとえば,サブシステムに属するクラス宣言は class Hoge enter H1 { ... } とか書くことになる.この H1 とかいう名前が後で出力される図のベースになる.小さなサンプルで 3つくらい型パラメータがある時点であまり使いたくない.

いちおう静的情報でがんばって獲得しているように見える.が,言語をこれだけ拡張されてしまうと,実用性という観点では,適用するのが難しそう.どっちかというと,「誰がどのサブシステムです」と言語の外側にメタデータとして付けてほしいところ.メタデータで実装が可能なら,けっこう便利かも.

_ 論文

Popovici, A., Alonso, G. and Gross, T.:"Spontaneous Container Services"ECOOP2003

Spontaneous は "自然な,自発的な" という意味.EJB のようなコンテナ技術は固定されたネットワークを前提に作られているが,モバイルネットワークでもコンテナの透過性やトランザクション機能は便利なので使えるようにしましょう,という話.実装に dynamic AOP とか Jini を使っている様子.

コンテナが勝手に実装を置き換えたりできる世界になってる……らしい.dynamic AOP を使って,static にできない何ができるか,っていういい代表例になるかもしれない.そのうち.

_ 論文

Henkel, J. and Diwan, A.:"Discovering Algebraic Specifications from Java Classes"ECOOP 2003

Java クラスのコードから,実行時情報を使って,代数的仕様を発見しようというもの.

たとえば,Class が Immutable かどうかを,すべてのメソッド呼び出しの前後でシリアライズした表現とハッシュ値が同じかどうかでチェックするらしい.

見つけてきた情報から Term -> Equation -> Axiom と発展させるらしい.

実験対象はデータ構造系ばっかり.代数的仕様の弱点は,オブジェクトの内部状態ばかりに注目して,外部に及ぼす影響を評価していないことだと思うのだが…….

_ 論文

ECOOP2003が開催されているのに合わせて論文読み.# 別に意味はないが.

Aldrich, J., Sazawal, V., Chambers, C. and Notkin, D.:"Language Support for Connector Abstractions"

システム間,分散したコンポーネント間を接続するコネクターの話.ArchJava をベースに,connect という言語要素を導入している.コンポーネントの port 定義を,connect(ui.search, peer.search); とかいう感じで接続できるらしい.

connect (PoemPeer.client, PemPeer.server) with new TCPConnector (..)というように, "with" を使って接続メディアを指定できるあたりが便利そう.Connector オブジェクトが,オブジェクトの登録やら接続,通信の面倒な処理を全部やってくれるらしい.Connector は Decorator などに近いので,CachingConnector とか,Connectorに特殊な機能を持たせることでシステムを拡張することもできる.

理解容易性と拡張性がアップするらしい.コネクタベースの記述というのは面白いかも.競争相手は,もちろん,通常のOOPやAOP,各種分散システムのインフラ系など.

_ Windows

Windows のパスワードが破られたという話を教えられた.

http://headlines.yahoo.co.jp/hl?a=20030724-00000024-zdn-sci

論文をちらっと読んでみると, key' = res(hash(key))というように逆ハッシュっぽい関数で,key を key' にマップすると, f = res(hash) とするとどこかで f^n(key) = key となって,keyが破れるという話っぽい.1.4G とかのルックアップテーブルを作れば OK だそうな.で,このテーブルの構造を工夫したところがポイントだったらしい.

まあ,目標の(対象マシンのパスワードがエンコードされた)ハッシュ値が取れないとクラックしようがないので,そういうハッシュ値が簡単に取ってこれるようなスクリプトや ActiveX がなければそれほど問題ではないかな.

パスワードの関数がへぼいからといって,ハッシュ関数を置き換えてしまうと,元パスワードでログインできなかったりしそうだし.どうやってアップデートするんだろ?Longhorn まで待つのかなぁ.


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

XVCL 使ったら,差分ベースなプログラミングができそう.それはそれで,けっこう面白いかも.デバッグとかは大変そうだが.

_ XVCL

Java コードに適用している例を見たところ,やはり予測は間違ってなかったらしい.

"frame" という単位が基本の意味的まとまりを表現していて,その中身のテキストの途中には "break" を挿んでおくことができる.

"break" には,別のファイルで "insert" を定義しておくとその break に収めるべき別のコード片を書いておける.

で,出力ファイル名の指定と adapt タグを使って,必要な frame を選択して,それらを合成する.

insert-before, insert-after というbreak の前後にコード片を入れる指定子や,変数,ループなどを使った記述ができる.たとえばクラス名をパラメータで与えて変数の型を指定するとかいった,いわゆるコードジェネレータでのGenericsの代替などがそれなりに簡単にできる.

利点は,言語を問わず,任意のテキストが扱えるところ.欠点もそこにあって,構文木の構造などに注意を払わないので,コードを合成するまではコンパイルが通るかどうかまったく分からない.


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

_ XVCL

サンプルを見た限りだと,コード(というかテキストか)の合成ツールのように見える.insert-before, after などを使ってコード片をつなぎあわせたりするのに使えそう.

逆に,コード生成ツールは,生成後のコードの変更をフィードバックする仕組みがないとデバッグしにくいのだが.

_ XVCL

XML-based Variant Configuration Language らしい.http://fxvcl.sourceforge.net/

コード生成ツールだろうか.いまいち良く分かってないので,もうちょっと調べてみる.

_ ワイン

http://www.rakuten.co.jp/winesenka/496017/497820/とかを見てるとたくさん入札されているので,やはり美味しい(と言われている)ワインのほうが古いワインよりは人気があるらしい.

まあ,金の使い方としてはそのほうが妥当な気はするのだが,あえて飲んでみたい古いワイン.どっかの古酒とかいうレベルじゃないからなぁ.

_ グリッド

グリッドコンピューティングは分散した(まとめると膨大な)資源を仮想共有する,というのとOGSA (Open Grid Service Architecture) ベースなら異機種間統合できるというところで並列計算機より有利っぽい.(並列計算より大きい概念かも)

スケーラビリティは謎だが.並列計算でも 10**6 台あたりは狙ってた気はするがグリッドだとどこまで伸びるんだろう.

_ 論文

ソフトウェア工学研究会の Proceedings を読む.中島 震, 玉井 哲雄:"セキュリティポリシーに関するデザイン解析",情報処理学会 ソフトウェア工学研究会 2003-SE-143

セキュリティシステムが正しく動いてるかどうかを検証するという話らしい.システムの振る舞いを複数のジョイントアクションと考えて,それらのジョイントアクションが,特定の順番で起きるのが正しい振る舞い,とかAlloy を使って記述して,検証してやろうという話らしい.

Join Action とは Catalysis が提案したもので,誰が何をするか,という記述無しに,インタラクション全体として何が起きるかという単位.

これに対して,Localized action は pre-condition を満たしているとき,post-condition を満たさせるために呼び出して発生する interaction のこと.Joint action は何が起きるかを説明しているが,直接呼び出すというものではないらしくて,オブジェクトのグループの振る舞いを規定することができるそうな.

ちなみに,コラボレーション関連ではJackson System Development (JSD; ジャクソン開発法) というものがあるらしい.玉井先生のソフトウェア構成論の授業資料に載っていたのでURLだけ置いとく.http://www.graco.c.u-tokyo.ac.jp/~tamai/softwconst/softwconst3.pdf

_ AspectJ

AspectJドキュメントのカウンタの周りが最近早くなってきた気がする.今まで10件/日くらいだったのが30件/日.気のせいかな?

_ 査読

論文査読終了.先生に「曖昧な論文ですが,書くとしたらこんな感じでしょうか」と,ちょっと論文査読的な(pros and cons を列挙した)コメントを送ったら,「僕が読んでもなんか曖昧で訳分りまへんでしたので」と返事が返ってきた.やはり印象は間違ってなかったらしい.

_ TV

USB接続のTV/Video キャプチャキットを購入.これでノートPCからCATVが見られる.もっとも,ノイズが多いので(ケーブルモデムのスプリッタあたりが怪しいのだが未確認),ほとんどニュースを聞くためだけのものだが.


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

_ CATV

排熱が微妙に悪いことが分かったので,ケーブルモデムを風通しの良い位置に再配置.

液晶ディスプレイの箱をたたんだりしたので,だいぶ空間を確保できた.

_ 読書

エリヤフ・ゴールドラット,「チェンジ・ザ・ルール」を読了.システム・インテグレータがテクノロジーを売るのかバリューを売るのか,とかいう話.TOCとかも絡んで,システムを導入してもシステム導入前のルールが,システムの活用を阻害するとかいう厳しいお話.