«前の日記(2005-01-08(Sat)) 最新 次の日記(2005-01-13(Thu))» 編集
RSS feed
Webサイトとは「つい、うっかりの存在論」である

角谷HTML化計画

「むずかしく考えることはない」と、偉そうに葉巻を振りまわしながら、トレヴィラヌスはいった。「ガリラヤの太守がじつにみごとなサファイアを持っていることは、みんなが知っている。何者かがそれを盗むつもりで、間違ってここへ入ったんだ。ヤルモリンスキーが起きていたので、泥棒は殺さざるをえなかった。どうだね、これで?」
「そのとおりかもしれません。しかし、おもしろくはないですね」と、レンロットは答えた。
J.L.ボルヘス『死とコンパス』(『伝奇集』収録)

2005-01-12(Wed) [長年日記]

■1 Matz meets Dicon Matz meets ダイコン

今月で休刊になる『Linux magazine』の2005年2月号。やっと買った。まつもとさんがDependency Injectionコンテナを紹介している。「Java方面の人」としても嬉しいし、個人的にも嬉しい。と、いうのも本家記事から「Japanese」のリンクがなぜか消えてしまっている拙訳も「角谷さんによるその邦訳」と紹介されいるので。

Block InjectionはRuby Wayで趣ぶかい。Injectionのタイプのエッセンスを示すコンテナ実装のコードが20行ぐらいずつなのも頼もしい。 Setter Injectionのコンテナが「Yin/Yang問題」を解決できてなかったりするけど、それはPicoContainer1.1でも解決されてなかったりするし :-)本文を読み違えてました。(コードツッコミ!!*1)。PicoContainer1.1でも解決されてない「Yin/Yang問題」が解決されてます。

Yin,Yang「Yin/Yang問題」

ツッコミにビビってしまうチキンなわけですが、「Yin/Yang問題」と私が勝手に呼んでるだけです……。

命名の由来は、PicoContainerのSetterInjectionAdapterTestCaseの一番下にある、「PICO-188」となっているテストケースから。

このテストケースは、Setter InjectionでYinからYangを、YangからYinを取り出そうにもCyclicDependencyExceptionで落ちてしまうという問題を再現するテストケース。そこでYin(陰)とYang(陽)というクラス名を使うセンスが面白いなあ、と思ったのが記憶に残っていたので、Setter Injectionつながりで書いたという話です。オチも何にも無いという。

*1 もうしわけないです。そしてありがとうございます

本日のツッコミ(全3件) [ツッコミを入れる]
まつもと (2005-01-12(Wed) 14:35)

お買い上げどうも。残念ながらYin/Yan問題って知らないので、リンク教えてください。

まつもと (2005-01-12(Wed) 18:36)

えーと、つまり<br><br> class Yin<br> attr_accessor :yang<br> end<br> class Yang<br> attr_accessor :yin<br> end<br><br> d = DI::Container.new<br> d.register(:yin, Yin, :yang)<br> d.register(:yang, Yang, :yin)<br><br> yin = d.instance(:yin)<br> yang = d.instance(:yang)<br><br> p yin.yang == yang #(1)<br> p yang.yin == yin #(2)<br><br>が動くかって意味でしょうか > Yin/Yang問題。<br><br>Linux Magazineのサンプルコード(リスト4)はsetterを呼ぶ前に依存するオブジェクトを作っちゃうので、例外も出ず、(1)と(2)、両方ともtrue になります。つまり「解決できて」るんじゃないかと。<br><br>なんか違うのかな。

かくたに (2005-01-12(Wed) 18:51)

まつもとさんのコード通りです。最初の私の記述がグダグダなだけです……。


«前の日記(2005-01-08(Sat)) 最新 次の日記(2005-01-13(Thu))» 編集
RSS feed