netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2002-06-25 古い日記からの変換データ [長年日記] ▲
_ 論文 ▲
Martin E. Nordberg III という人のAspect-Oriented Dependency Inversion(Workshop on Advanced Separation of Concerns, OOPSLA 2002)とゆー論文を読みなおす.
クラス間の依存関係はConcrete -> Abstract, Unstable -> Stableの二つが基本となっていて,Visitor や Observer パターンでは,Abstract -> Concrete, Stable -> Unstable のような逆方向の(好ましくない)依存関係が含まれてしまう.AOP を用いることで,このような依存関係を取り除くことができ,循環参照も解決できるという論文.AOPの有用性をシンプルに言ってくれているような気もする.
_ apache ▲
Apache の新バージョンを動かしてみる.設定ファイルはそのままコピーしたのだが,LoadModule でこけた.原因を調べてみたら, mod_so を組み込み忘れたらしい :-)
Apache の configure オプションで,./configure --enable-module=most --enable-shared=maxとすると,apache core と mod_so (LoadModuleディレクティブ)だけのシンプルなバイナリが作成される.個人的には mod_so くらいデフォルトで組み込んでおいてほしいのだが….
_ AspectJ ▲
aspectj-users で,after (X x, Y y) call(Foo foo(..)) && args(x) && args(y) が複数の引数の場合にうまく動かない,という話が出ていた.この場合は args(x, y) が正解で,args(x) && args(y) だと foo の引数が instanceof X でかつ instanceof Y を満たさないといけない.このあたり,絶対に条件が満たされないようなpointcut でも平気で記述可能なところが,AspectJ の怖いところ.
というか,エラー原因のほとんどがpointcut をうまく記述できないせいでプログラマの思い通りの場所にアスペクトが結合されていない,あるいは予期せぬ場所にアスペクトが結合されている,ということにあるような気がする.