トップ 最新 追記

日々の破片

Subscribe with livedoor Reader
著作一覧

2004-05-01

_ BCM

なんかおもしろい。

_ 合コン

いがぴょんさんのとこだけに書き込んでると騙りなんだか本人なんだかわからないので、ここからもリンク。

5/7に田町で合コン(?)やります(というか誘って頂いたというか)。興味があるかたは、いがぴょんさんのところへコメントしてね。こちらへ。しかし、あまりに過分に書かれている気がするのだが。

_ ピーターパン

吹き替え版を子供と。あー、映画の日なのか。安いなぁ。

なかなか良かった。が、ずるいよな。娘を持つ親父が見る映画かなぁ。

親父=フック船長ってのは納得はいく解釈ではあるが、そういうもんかなぁ、とか。

オープニング、ロンドン上空からダーリング家の窓へ急降下。

ロンドンの空から成層圏へ抜けるとポップな惑星が浮かぶ空間。ここは好きだ。その他いろいろ。

人魚との会話。

熊のぬいぐるみも子供と一緒に岩へ縛り付ける。勇者として治療を受ける。

キターってのはこういうことですなぁ、のラスト近く。

子供達の呪詛で飛ぶ力を失い、最後は、潔く落っこちるフック船長。

なぜ、親父は子供や奥さんを素通りして、まず窓辺へ行くのかとか。

_ 飛ぶ記憶

やっぱり飛ぶってのは重要で、印象に残る飛んだやつを回想。

彗星のジークフリート(代々木体育館だと思う)

ダンボ(これは重要だな)

アラジン(これも重要かも)

 −やはりディズニーは強いな。アニメだからか。もちろんピーターパンも。

ナウシカ(も、多分、この系列)

ラピュタ(あ、こっちか)

トトロ(そうか、この監督はそうだったのか。ならばハウルも行くしかないよな)

威風堂々のイカ君

ウィズ(塔から落ちて最後)

ネバーエンディングストーリー(そこだけかも。気持ちはわかる)

青島を攻撃する映画(鳩より遅いシーン。最後、包丁で落としていくやつ。汽車より微妙に遅かったり)

スピリット(最後に谷を飛ぶところ)

・以下、相当落ちるが

怪盗キッド(多分、違う。違わないかも。コナンはパラグライダー)

この空は君のもの(違うかなぁ、女性パイロットのやつ)

クリントイーストウッドがミグを盗むやつ(黒から青へ映画自体が変わる)

彼らは夜生きる(最初のヘリコプター撮影)

大脱走とかいろいろ(ぎりぎりで飛ぶやつ全部)

ヴォイトが出てくる空軍もの(このジャンルはあるな。でもプロペラ―第一次世界大戦ものじゃないと速度が速すぎてつまらんのだ)

なんか、こないだ(じゃないだろう)観た英国空軍のやつ(? 全然思い出せないが)

・本当に落ちるやつ

考えてみたら、映画は横長だから、本来落ちるのは苦手なはずだ。だからヒッチコックのめまいが歴史に残るのだが、印象的なのはしたがって、ひいて取ったやつになる。港港に女あり。突然炎の如く。明日に向かって撃て。


2004-05-02

_ どーしてC#にはチェック例外が無いのか?

どーしてJavaにはチェック例外があるのか、でも良い。

すべてのチェック例外が無意味というわけではなく間違いなく必要なのはリソースの後始末が必要系のやつ。

Connection con = null;

Statement s = null;

try {

con = dataSource.getConnection();

s = con.createStatement();

s.executeUpdate("drop table bangbang");

} catch (SQLException e) {

// エラーになった

} finally { // (A)

if (s != null) { try { s.close(); } catch (SQLException e){} } // (B)

if (con != null) { try { con.close(); } catch (SQLException e) {} } // (C)

}

(A) …… 忘れるとやばやば。

(B), (C)……うざったいな、もう。

ということから、closeだけ非チェック例外にしてくれりゃ良いのだが、その前の段階ではチェック例外にしておいたので、イヤでも後始末を気にするかも知れない。

public dropBangBang() throws Exception { // 気にしない人

....

}

とすることもできるけど。

その意味では

Connection con = null;

Statement s = null;

try {

con = dataSource.getConnection();

s = con.createStatement();

s.executeUpdate("drop table bangbang");

s.close();

con.close();

} catch (SQLException e) {

// エラーになった

}

は、ブァカですかと言われてもしょうがないのだが。

ところが、C#にはチェック例外が無い。

これは、(B)(C)は楽チンだが、(A)の部分の歯止め効果まで失うのではないか?

さすがMSですなぁ、抜けてますなぁ、なのかと言うと、そのかわりにusingがあるんじゃないかと気付いた。どっちにしても呼ばない人は呼ばないわけで、ここは歯止めの有無が論点だから、usingで良いのだ。

using (SqlConnection conn = new SqlConnection("Initial Catalog=Northwind;Data Source=localhost")) {

SqlCommand cmd = new SqlCommand("drop table bangbang");

cmd.Connection = conn;

conn.Open();

cmd.ExecuteNonQuery();

}

こっちのほうが好きかも。(例外は上位モジュールで捕捉)

_ Javaのパッケージの粒度

なぜ、パッケージプライベートがデフォルトか?

で、ふと思ったのは、1publicクラス=1ファイル縛り。これは、C++なんかのソースファイルより相当狭い。

実際には、1パッケージ1クラス(+該当クラスに関連する0〜5くらいを限度としたクラス)=C++での1ソースファイル(staticスコープの範囲)というようなのを想定していたのではないだろうか、とか。

とは言うもののJ2SEのパッケージとかでかいんだけど。

ただ、そう割り切れば原理的にはprivateというのは余り使う必要は無さそうで、アクセス修飾子はデフォルトとpublicと、たまにprotectedくらいになるから間違いは少ないかも。

そうすると、パッケージを分けなさいというほうが、privateの記述をデフォルトとさせるよりも、コード上のルールは少なくなるから良いかもなぁ。


2004-05-03

_ Piano 1001

幅広く取り揃えてあるうえに、楽譜まであったりして、なんか非常にありがたい。

るいもさんが引用されていて知った。

_ ヴェデルニコフとか到着

というわけで、109〜111を取り合えず聴いてみた。というか、やっぱり作品番号とソナタ番号をごっちゃにしていたようだな。

録音のせいか妙な厚みがある。たとえば109の第1楽章はすごく好きだが、3楽章目はちょっと遅く感じる。洗練やけれん味に乏しいが、ロマンティクな演奏という感じかな? もうちょっと聴き込まないとなんともいえないかも。

本日のツッコミ(全2件) [ツッコミを入れる]

_ るいも [ヴェデルニコフは不遇のピアニストで、録音も、あまりいいのが無いです。ある日演奏会に行ったら、ある音から下が半音ずれて..]

_ arton [へー、バイオリニストが弦を切ってというような逸話は聞きますが、それはすごい(というより半音ずれているピアノがすごいと..]


2004-05-04

_ ちょっと旅行

箱根に一泊。朝起きたら凄まじい雨。

箱根町のほうに行こうとしたが、獅子と豆腐屋の間をまがった瞬間、すでに渋滞してたのでそのまま獅子の駐車場を突っ切って湖尻に戻って飯食った。

帰りの東名はわりとすいていた。

雨と霧のせいで無茶する人がいなくて事故渋滞が発生しなかったからじゃないかとか考えてみたり。


2004-05-05

_ 考えるためのツール

世界を獲得するために、世界を観るためのツールをまず手にするという考え方がかってあった。今も生きているかは寡聞にして知らない。ほとんど絶滅したんじゃなかろうか、と思わないでもない。

ツールはツールなんだが、よくあるように、ツールによって結果が制約されるということは良くある。制約されるというのを、属人性の排除(デター)と見ればそれは良いことのように見えるが、あいにく世界を観るためのツールなもんだから、そんなに単純ではない。

その結果、世界各地で同じツールを使う人間が良く似た言辞を吐くこと、それは十二分に考えられることだ。

それだけ。

重要なのは、そのツールの有効性で、今のところ、どっちにも振れてしまうから、そこそこ有効だとは考えられるが、絶対ではないだろうな、ってところか。

_ 表現

技術者に『表現』を教えること

個人的には、教えてもらわなくても良いとも思う(だってこの理解は暗黙のうちに僕は共有しているようだから)が、この方のこの言い方は貴重だし、うまく言葉にしたものだと感心する(逆に言えば、こういう形で表現はできなかったわけだ、僕は)。すばらしい。

今まで見えなかった世界を暴きだし、創り出すことに等しい

もっとわかりやすいのは、次の文だ。

一般的に技術者といった場合にも、技術がもたらす新しい思考様式に対して興奮できる性癖をもった人々のように思える。逆に、それに興奮できなければ、技術者としてのセンスはなさそうだし、新しい考え方・世界観を感じさせない。

なんでもいいからこの考えを補強する例を考えてみる。

XMLやSOAPなんて、もっとも良い例のひとつだろう。

「かってにタグを決めてマークアップして構造的に表現できる? ――はぁ、それが何か? SGMLとかの簡易版ですな。」「CSVでもやっていましたが何か?」

もちろん、過去の蓄積というのはある。再発見というものもある。

「デザインパターン? 読んでみましたが100年前からステートしてましたが何か?」

だが、「何か?」と言う前に、それが「新しい考え方・世界観」を持っているかどうか、を見るのは重要だ。そうでなければ、「SOA、またバズワードですな、何か?」となってしまう。だが、それは多分、異なる。

実態は同一でも、そこに新たな世界観があれば、それは異なるものなのだ。事実と真実の差みたいなものだな。真実はコンテキストの数だけ存在できるのだ。

というか、センスか。センスってのは、センスオブワンダーを感じる能力のことだからなぁ。

やっぱり、誰でもわかる例ってのは、黒澤明の「生きる」のブランコだかで志村喬が夕陽を見てきれいだとかなんだか言うところだろう。そんなものは毎日見るものだが、毎日見ているものが違って見えることだ。

というわけで、慣れってのはやはり大敵だ。まず飽きて、投げ出すことから始めよう。

とりあえず窓から放り投げろ。何を? 自分を。

本日のツッコミ(全2件) [ツッコミを入れる]

_ saitatsu [どうも。技術者に『表現』を教えること、を書いた齋藤と申します。はじめまして。 僕もこういうことを悩みつつ考えてきまし..]

_ arton [どうもわざわざありがとうございます。興味はあるんですが今はちょっと手が出せない状態です。]


2004-05-06

_ 永遠の語らい

オリヴィエラ。

NURE-OKAKI。密かな人気。

予告編。スィングガールズ。シンクロの時も感じたが、一斉に揃って体を同じ向きに動かすってのは、すさまじく映画だ。だから、この監督は映画を撮っているのだ。話は全然おもしろくなさそうだが、映画は見たいので見に行くかなぁ。というところで、大閲兵とかを思い出したり。

オゾン。しかし、ファスビンダーのフォロアーだけあって、同じように煙草を吸うように映画を撮るな、ちょっと感心。しかし予算の幾分かをゲルマンへ分けてやってくれ。それにしても揺れる水面っていうのはいい。

で、本編。

たとえばこんな感じか?

サドゥール「犬が埠頭から落ちそうになります。首の周りの紐が船に繋がれているからです。でもぎりぎりで落ちない。また引っ張られて落ちそうになる。でも落ちない。これが数回繰り返されます。これはまさにヨーロッパが没落していることを示しています。この犬の哀れな状態に気付くのは少女で、実際に紐をほどくのは母親です。これは女性による救済を象徴しています」

オリヴィエラ「(ブニュエルの口調で)バカですね」

あるいは、こんな感じか。

オリヴィエラ「あーあ、この航海もとうとう紅海まで来ちまったよ。これがホントの後悔先に立たず」

弟子「オヤジ」

オリヴィエラ「95歳ですが何か?――というのは良いとして、もう面倒になっちゃったし、熱いし、海はサンゴのせいで赤いし、ボンベイへ行くのはやめた。ここで終わりにしよう」

弟子「だって、巻数が足りませんよ」

オリヴィエラ「せっかく豪華ゲストのおばさんたちがいるんだから適当に30分くらい喋らせといて後から入れときゃすむだろう」

弟子「なるほど」

としか思えない唐突な終り方。でまたマルコヴィッチが観客の代わりに口をあんぐりあけてストップモーション。なんじゃこりゃ?

で、プロデューサーに文句を言われたら

オリヴィエラ「(OWの口調で)ブードゥーの呪いです」じゃ変か。「イスラムの呪いです」というか「ヨーロッパの滅亡です」だな。

とは言うものの、マルコヴィッチがグラスをスプーンか何かでチーンと叩く。静寂。ギリシャ人が歌いはじめる。本当の映画みたいだ。ここまで音楽は無い。

あるいはアデン。向こうから親子がやって来て、青い服を手に取って左の店に入る。そこにマルコヴィッチがやって来てきょろきょろしてから右の店に入る。そのまま待つ。マルコヴィチが細長い包みを持って出てくる。きょろきょろして向こうへ立ち去る。親子が出てきて青い服が欲しいか確認してまた店は入る。というような縦方向の長回し。そーかー、あれがアデンアラビアか。

アラブ風の人形。部屋へたどりつくと、子供は人形に自分が守ってやると言い聞かせている。それに対して母親は「何やってんの」と声をかける。

ボンベイでは絵葉書? を使って現在と過去を示す。

ギリシア正教では、父と子と精霊で3つ指使ってアーメン。これはアテナ。

唐突にスエズ運河の解説をして去って行くいつものオッサン。

_ IObjectSafetyメモ

BUG: IXMLDOMDocument::load Method Returns Error 0x80070005 - E_ACCESSDENIED
狙い撃ちしかないか……
狙い撃ち
--- rubyscript.cpp	2003/02/03 17:31:55	1.11
+++ rubyscript.cpp	2004/05/05 17:00:22
@@ -613,6 +613,12 @@
 			return E_ACCESSDENIED;
 		}
 		DWORD dwSafety(m_dwSafety & (INTERFACESAFE_FOR_UNTRUSTED_DATA | INTERFACESAFE_FOR_UNTRUSTED_CALLER));
+		IXMLDOMDocument* pDom = NULL;
+		if (pUnk->QueryInterface(IID_IXMLDOMDocument, (void**)&pDom) == S_OK)
+		{
+			dwSafety = 0;
+			pDom->Release();
+		}
 		hr = pObjSafety->SetInterfaceSafetyOptions(IID_IDispatch, dwSafety, dwSafety);
 		pObjSafety->Release();
 	}
ASRでうまく動かん
続報
っていうか、KB読むと、MSのバグだと書いてあるが、なぜだ?
同一サーバーからのダウンロードは安全と見なすという世の前提を無視しているから、ということかな(であれば、了解)。
って言うか、良く見たらCEのKBだな、これ。?????
追記:urlmonとの連携が正しく行われていないみたいだ。ってことは、IActiveScriptSiteが正しくデリゲートされていないのではないか?
ってことは、IServiceProviderだけど???
追記:上の嘘。っていうかセキュリティフロー。あーやばかった。
セキュリティフローとはなんなんだろう? セキュリティフローコントロールとは関係なさそうだから、セキュリティの漏れという意味なのかな?

_ わかった

IInternetHostSecurityManagerを、IObjectWithSiteに与える。

そんなもん、どこにもドキュメントされてないぞ。

追記:

誰の役に立つかわからんが、一応、ドキュメントを残してみたり

添削して欲しい……


2004-05-07

_ 4thScript

昨日、KB探してたら久しぶりに発見。

遊ぼうとダウンロードして、展開して、ソース眺めて、そこで終ってしまうのがなんだが(しかも、IEで動作させるあれこれについては何の役にも立たないんだな、これが)。

ソフトウェア考現学―基礎概念への最新おもしろガイド (Fine soft series)(萩谷 昌己)

FORTHのインタプリタやコンパイラを作るのは、相当簡単そうである。しかし、FORTHのプログラムは相当書きにくそうである。

本末転倒ですなぁ。

_ シンクロニシティ(上のエントリーを書いた5分後のこと)

って、絶対あるよな

これ、全部吸い上げてもいいのかなぁ?

_ おもしろい問題

この問題がおもしろいのは、出題者の知識の乏しさが露呈しているからだ。

この中で1番現実的なソリューションを持ち、なおかつ圧倒的な情報量を誇る4番が×というのはいかがなものか。

もし、わたくしが客の立場であるならば、今、すでにタバコを取り出してしまったあるいはポケットをまさぐるといった行動を起こしている以上(ということは問題の「タバコを吸おうとされました」から判明している)、どのような言い方であれ、禁止されるより、タバコを吸うための具体的なアドバイスである4.を言われれば、「こいつ、気配りできるな」と感心する(口の利き方を知らない小僧だな、と感じる可能性が無いわけではないが、ポジティブな評価のほうが大きい)。いっぽう、2.であれば「けっ、気取りやがってバカめが」と思う(ということは無いが、気が利かない野郎だな、とは思うかも知れない。つまりネガティブな評価のほうが大きい)。

(追記:というか、禁煙の会議室なら灰皿は置いてないだろう。灰皿が見えないのに「タバコを吸おうとされました」とはこれいかに? 「すいません、灰皿は?」とか訊かれたということなのだろうか? ならば、ますますこの解答は間違いだ。そうではなく、いきなりタバコを取り出したうろんな客なら、イヤミの1つも言いたくなるだろうから慇懃無礼にイヤミを言うなら2ということで、それはそれで正解かも)

正解は、「会議室に通す前に禁煙である旨を伝え、相手によるが30分〜1時間程度の間隔で小休止を入れ、その時喫煙可能個所を示す」だ。あるいは、その時点で小休止を取るでも良い。仮に喫煙可能な場が無いのなら、最初にその旨を伝えれば良い。ビジネスなんだから、それならそれで良いのだ。

このへんは、会議の主宰者が喫煙者だと、大体、正しい行動を取ることがこれまでの経験から観察されている。まあ、大人のノウハウということだ。

解答の言葉を鸚鵡返しすれば、「慣習だから丸覚え」を実はしているということだ、この解答自身が。言葉の問題ではないからだ。その結果、「届いた気持ち」は「タバコ親父ガマンしな」となるのが問題だ。客にその時点になって初めてガマンさせてどうするよ?


2004-05-08

_ 野郎合コン

結局、朝4時過ぎまで田町にいたり。

みなさん、どうもありがとうございました。おもしろかったです。

追記:

田町に着いたところでいきなり羽生さんに遭遇。makotanと3人で会場へ向かう(tanやクンが付いているハンドルというかidの場合、敬称略ということで)。

既に会場には高井さんいがぴょんさん(tanやクンは略で良いとして「ぴょん」はどうなのよ?)やkdmsnrさんが到着していた(かな?)。koichikさんは、日記からうかがえる通りのお洒落紳士でした。

以下、順序は怪しい。

幹事をされたSaisseさんご苦労さまでした(最初、隣だったけど幹事は端っこということで途中で移動)。初対面じゃないですよね?

で、むらまささん登場。すっかり失念していました(失礼)が、チェコアニメ見たとき、いろいろ教えてくださった方でした。

途中、場を移って、せとあずささんの隣へ。で咳き込ませてしまったり、すみません。ひがさんとkoichikさんからHibernateについてうかがったり。それにしてもogijunさんは目立ちますな。

で、また席を替えると、アピラクンの隣に角谷さん登場。高井さんと二人で僕の日記について語ってくれたが、基本スタンスは1に自分のメモ、2に文体練習、3にヨタだから、自分でも良くわからなかったり。思い出したけど、日記はコンパイルエラーが通ったら(誤字の修正とか)リファクタリングしないからね、とか言った覚えあり。追記ってのはするってぇとインターセプトか、と今思いついたり。検索を入れろと言われたけど自分のメモって意味じゃ、必要に応じてgrepかけてるしなぁと思わないでもないけどそのうちtdiarygrep(だっけ?)は導入しても良いかも(Joelさんのとこの話題で出たのだった)。それはそれとして謎ウェッブとか。

その後、高井さんから道具としてのコンピュータからサイバネ経由で再生産の道具としてのコンピュータ(間違えて書いてる可能性が異様に高いー駄洒落ではない)と、eJapanの変節、TSSによる巨大コンピュータ対マイクロコンピュータ、とかの話を聞く。と、書いてて思い出した。約束のブツを送らなければ。

というか、やはり羽生さんはただもんじゃないな、と思ったのは、あの熱い語り口だな。知ってる―使える―わかる―悟る(1段抜けてるような気も)。

(追記)知ってる→やってる→出来る→理解している→見つけたが正解。matobaaさんからも補完あり。ありがとうございます。

そのあたりで、あ、あなたがターンスクリプトさんですか、とかもあったり。っていうか人数多かったね。

そう言えば、そもそもいがぴょんさんのとこに書かれてたmatobaaさんとまったく顔を合わせていないことに気づきドキドキしながらご対面(いや、まじ、なんか突っ込みがあるのかと思ってました)。ここまでが一次会。

この後、2次会へと進むのであった。そこでハナアルキさんとご対面。ひがさんのご質問にはむしろ、僕のほうが教えていただくことになってしまって、知識不足を露呈したり。なぜ、ロッドジョンソンは神なのか? とかが続いたり。で、目覚めた高井さんのぶっ飛びぶりがすごかったり。というように続くのであった。

_ ノーフォークコースト

ノーフォーク・コースト(ザ・ストラングラーズ)

歯医者の帰りに購入。

実はインテリ。実はソフトロック好き。実はドアーズファン。

といった、パンカーとしては致命的な背景を持ちながら、結局、ほとんど唯一の生き残りになっていたりする、妙なバンドの21世紀の作品。

ボーカルの偽者っぽさが薄れたせいで、ちょっとつまらなくなったのだが(インザナイトが好きだから)、それを補って余りあるジャンジャックバーネルの復調(というより、単にミックス時のバランスを変えただけのような)。悪くないなぁ、というよりも好きだな。

しかし、ふけたなぁ、とジャケットを見ながら思うのであった。ジェットブラックは髯が白いし、グリーンフィールドなんてコケシみたいだし。

しかし、どうしてこの人たちの演奏は音色が黒いんだろうか? これはやはり不思議だ。

_ 人にものを教えてるだけあってうまいこと言うな

疎外された彼らは戦火の中を行く(4/25)(勝手にタイトリング)。

後で、もう一回読んでみよう。

_ プロのコード

昨日、ちょっと話題に上ったので見てみると、段々、核心に近づいてきたのか、的を射た添削になってきた。ちゃんとわかって(というかわかってないはずは無い)順を追って説明してたということなのかな。

大規模なプログラムでは、メソッドの処理内容などはクラスの作者だけが分かればよいことであって、クラスの利用者は「メソッド全体の機能(引数、機能、戻り値)」を知りたいのです。

1.とりあえずコメントを書け

2.書くんだったら考えろ

3.(未来)Javadoc使うと便利ですよ

というようなステップを考えているのかも。だったら、最初からそうしろと思わないでもないが、最初はメソッドに分けてないので、こんな感じにしたのかも知れない。

可視性のところで書き間違えがあるのはご愛敬。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ Saisse(セス) [金曜はありがとうございました。確かに前回のはぶさん&いがぴょん合コンでお会いしてますので、初対面ではないです。]

_ はぶ [わかります>金貰えばプロ。激しく同意。お客様から見れば期待しているプロって「理解している」のレベルだと思ってるので、..]

_  [プロのプログラマとプロのサラリーマンがいると思うなあ。]


2004-05-09

_スターメンテ

ふと思い出したが、(一昨日というか昨日の早朝というか)、マスターメンテナンスが1画面1レコードなら、ASP.NET(ということはJSFも)が一番、楽チンなのではなかろうか。もっとも1画面3分とかかけるような、HTMLでOKな場合については、という前提で。

各サーバーコントロール(またはJSFコンポーネント)をあらかじめデータバインディングしておくことによって、

GET->

空の画面(またはキー入力の画面)

POST->

ASP.NET/JSFedJSP (コントロール/コンポーネントはバインディングにより現在のデータを設定)

入力->クライアントサイドバリデーション->POST->

サーバーサイドバリデーション

更新

というのは、IDE(VS.NET/Java Studio Creator)でヘラヘラ作っていればできてしまうからだ。

ちなみに、Java Studio Creatorでは、RowSetが主役みたいだ(まだ見てる最中だけど)。

_ Emit (is not vomit)

そう言えば、koichikさんからCGLibみたいなのは.NETにあるのかと訊かれたので、Emitがあると答えたけど、正確にはILGenerator.Emitがそう。なんで最初からあるのかと言えば、あそこで言ったとおり、ASP.NETのためなんだろうと思うけど、これは非常に便利。

_ iii(トリプル・アイ)

というのを見て、思い当たれば10年選手どころか15年以上選手か。

そのiiiのスマートクライアントというかリッチクライアントがLLL。

LLL.net

なんで突然、このページが出てきたかというと、安藤幸央のランダウン[25]リッチクライアント時代の到来を読んで、ちょっとだけカチンと来たからだ。

日本のビジネスコンピューティングの歴史を考えれば、種々のリッチクライアントを並べる以上、iiiからLLLを無視してはいかんだろうということだ。

それは、日本でワープロをいろいろ並べる時に、Word、Lotusの何か(今もあるのか知らない)、WordPerfect、OpenOfficeを並べて云々しているのを見て感じるのと同じようなものだ。やはり一太郎については書いておけ、それが先駆者への礼儀だろう(「礼儀」なんて言葉が出てくるってことは、これが個人的な感情の問題であり、単に言っているだけという側面が大きいのに注意。したがって厳密なことを書いているわけではないから、「そんなことを言えばXもある、Yもある」というようなツッコミは無用。僕が知っているかどうかだけの問題である)ということだ。ちなみに、ワープロの文脈でDOS文書やOASISについては触れなくても良いのは、それが特に触れる必要がない存在だからだ。その会社はその技術に賭けてるわけじゃないから取り立てて触れる必要がないということだ。

というわけで、あのiiiの会社(とそこの技術者)はちゃんと時代に追随しているんだ、.NETのスマートクライアントツールのLLLっていうものも開発しているんだということを言ってみたかったのである。

本日のツッコミ(全5件) [ツッコミを入れる]

Before...

_ arton [たかはしさんが言われていることはもちろん理解できますが、内容を見てのとおり、PC上のソフトウェアに限定しています。そ..]

_ kjana [そして忘れ去られる OASYS/Win と PC 用親指シフトキーボード :-) まあ PC のキーボードだから配列..]

_ arton [ちなみに個人的にはP1EXEと、DFJ/Winが一番惜しかったんですけどね。あと、「専用ハードウェア(この場合」ーー..]


2004-05-10

_ JSCインストール時のadmin設定

admin/adminadmin

_ JSCのJSPのエンコーディング

考えてみたらXMLなんだから、XML宣言に入れりゃ良いのであった。

_ ちょっとわかった

5/4からの動向をちゃんと追っかけてなかったってことか。

しかし、1年後以降のことより、とりあえず3ヶ月後のことを先にやらなければしょうがない。が暇見て仕込む。

_ 5/10

過去、一般的に想像できる範囲での破壊的な行為を伴わないプログラムの開発/公開によって逮捕された人のリストにまた一人追加。

といっても、過去についてはFLMASKの人しか知らんが。

(もちろん、ある種の道徳なり規範なりを破壊したという意味では、破壊しているのだが、その破壊が果たして犯罪なりや? という疑問に対してどう応えるのだろうか?)

ソフトウェアを開発する能力というものを、爆弾を製造する能力と同等に考えている人がいるという解釈でよろしいのだろうか? (多分、ウィルスやワームについては既にそういう解釈なのだろうが)

WEB-DAVを使って交換する人がたくさん出てきて、2〜3人逮捕されたら、WEB-DAVの実装者が逮捕されるんだろうか? それともプロトコルを決めた人になるんだろうか? FTPで交換する人がたくさん出てきたら、FTPクライアントを作った人が逮捕されるんだろうか?

まあ、標準を使っとけってことだな。


2004-05-11

_ そもそも

いつのエントリーでどんな内容だったかは忘れたけど、圏外からすごく影響を受けていると思うことのひとつに、「そもそも」を意識的に使用しないようにしているというのがある。

本日のツッコミ(全3件) [ツッコミを入れる]

_ るいも [「原子炉制御や、航空管制で使わないでね」っていうのはダメなんですね。]

_ arton [コメント入れる場所が違うような気がするってのはおいておいて、当然、自己責任が問われます。使いたければAS IS, N..]

_ arton [というか、るいもさんの誤読です。直截的に書くことが不可能なことを持って回った言い回しをして書くことで、あらためて自分..]


2004-05-12

_ 子供の詩

ねこ、ひなったぼっこ。

ねこ、きもちいい。

ねこ、のんびりする。

ねこ、わらってる。

ねこ、のびのび。

_ 自由について考えるの一部

5. 個人やグループに対する差別の禁止

ライセンスは特定の個人やグループを差別してはなりません。

6. 使用する分野に対する差別の禁止

ライセンスはある特定の分野でプログラムを使うことを制限してはなりません。 例えば、プログラムの企業での使用や、遺伝子研究の分野での使用を制限してはなりません。

――オープンソースの定義(バージョン1.7)

僕は、OSDの何が美しいかと問われれば、上の2条だと答える。ライセンスする側はすべからくこうであってほしいものだ。なお、これはオープンソースに限定する必要はない。


2004-05-13

_ 実名の人はコミュニティを壊す権利を持っているのか?

もちろん、持っていない。

そのコミュニティを壊す権利を持っているのは、そのコミュニティの意思決定機関(それはやさしい独裁者かも知れないし、コアチームかも知れないし、総員の多数かも知れないが、それはここではどうでも良い)または、そのコミュニティの上位組織の法(たとえば、日本内のコミュニティであれば、日本の法。とは言え、まだ破防法は結局、適用されなかったんだっけ?)だ。

ということは、実名も匿名も、コミュニティを壊す権利には関係ないということだ。

それをあえて関係ありげに持ち出すということは、「ためにしている」ということだ。それだけだ。

では何が問題か踏み込んでみれば、子供でもわかるくらい簡単な話で、コミュニティに参加できない(あえてしない、っていうのもありだな)人が問題なのだろう。おままごとで仲間ハズレになる子の選別と同じことだ。

この判別に利用可能なリトマス紙は通常は存在しない。江戸時代には踏絵という便利なツールがあったが(日本国民か神の国の子かを判定するのに――突然、こういうバカなことを書いていて気になったのだが、現在もクリスチャンは踏絵は踏めないのだろうか? プロテスタントなら踏みそうな気がするが、フランシスコ派でいいのかな? が特殊なのか?)、基本的にはそんなものは無い(面従腹背ってのがあるからだ。で、獅子身中の虫になると。っていうか、古い言葉にもバグと同義の概念が虫という言葉で表現されているのは興味深い。しかし、バグは本当にバグがハードウェアに入っていたことに由来してたんじゃなかったっけな)。

どうも、そう考えてみると、実名とか匿名とかを気にする人は、人の心を読めない(あるいは読む気がしない、あるいはそういう発想がそもそもない)特殊な人なんじゃないだろうか? という気がしてくる。その特殊さ(これは逆に、場を読めないことに通じるから、実は仲間ハズレにしたい人と同じタイプとも考えられるな)に鈍感なせいで、どうにかして考え付いたリトマス紙が、実名/匿名の二者択一なんだろうか?

まあ、匿名の人は、敵に回しても痛くも痒くもないけど味方にしても猫の手ほどの役にも立たないからな。しかし、そこはやっぱり実名の人は、味方のうちは屁の突っ張りにもならないけど敵に回っても怖くないから同じようなものか。怖いのは人じゃなくて組織だからな。あと、石だな、怖いのは。当たれば痛いし、ぶつかれば火花が散るし、何より固いからな。ま、実名だろうが匿名だろうが、人は人、人間様には敵わないわけで、間を取れない(人と人の間がとれなければ、これは場が読めないのと等しく、したがってその発言はいやでも間抜けたものとなる)のだから、語るには値しないということだ。

で、この偉そうな人間様である存在を、自立した個人と呼ぶのだ。孤立しても良し、群れても良し、個である人には名前属性は無くても(あるいはパブリックなセッタ付きの名前属性であっても)中にはアイデンティティがあるのだ。

_ なんだ上のやつは?

元々は、ちゃんと入金確認できてるかなと(そりゃ一応そうするべきだよな)新井さんのBlogを見に行って、そこからリンクをたどって行ったサイトを見て思いついたのであった。元々の意見がどんなものか興味もないので読まなかったし(正確には、読まれることを拒否しているかのような読みにくい文章だったので読まなかった)、その意味じゃ単に「匿名……」という言葉に触発されただけで、元の論議(があるのかどうかさえ不明)とは完全に独立しているから参照ポイントは無し。

ちなみに、僕は新井さんが誰かなんて全く知らないが(上のページのコメント欄に「今、貴方が詐欺師ではないか、という発言が起こっています。」っていう書き込みがあったりするわけだが)、etoさんessaさん(しかし、このご両人のこともまったく知らないのだが、何をされているかは知っている)が言及されているんだから間違いないだろうと、僕は思ったのであった。

(追記)読みようによっては、何かあったら「etoさんやessaさんが……って言ったから」というような逆恨みをするための布石のように見えるかも知れないので念のため注。突き飛ばされたのならいざ知らず、背中を押されたからといって先へ進むかどうかを判断するのはこっちの意思だからそれは関係ない。

_ 問題提起

京都府警の実験。うまい言い方ですね。

_ blogspot

Googleのblogサービス? アカウントが無ければコメントできないのかな?

そう言えば、はてなもコメントできるところとコメントできないところがあって(「らしい」というのが気になるんだけどコメントできないので放置中)これは多分、設定で変えられるんだろうが、同じように設定の問題なのかなぁ。

_ おい、そろそろ寝ろ

と思いながら、一冊。

The Database Relational Model: A Retrospective Review and Analysis(C. J. Date)

論語読みの論語知らずになるくらいなら、積読のほうがまだましだ。というわけで、買っては見たものの最初の数章をちょっと読んだだけ。しかし、安いよ、ペーパーバック(ほとんど新書)。

とは言うものの、エンゲルス読みのマルクス知らずってのもありだから、そこでなんでデイトなの? っていうのはあるが、暴力革命はいざ知らず、リレーショナル革命なんだから、デイトでも良いではないか、とか。

という比較が適切なくらい、デイトがコッドの論文を紐解きながら(何しろ副題がA Retrospective Review and Analysisで、レトロですよ)、リレーショナルモデルの誕生からALPHA(コッドが提唱したリレーショナル言語)、正規化、その後の拡張(O/Rモデルとか)などを手短に解説するという「to restate and reinforce their(original Codd's) message for a new generation of database professionals」()内は補完―お得な内容。

本日のツッコミ(全1件) [ツッコミを入れる]

_ るいも [Bloggerは、設定で、コメントを許す相手を指定できます。もちろん、誰でもコメント出来るようにも設定できます。デフ..]


2004-05-14

_ Sunは……

統合開発環境の品質(ベータに限定しなくてもいいような気がしてきたので書き直し)に関して言えば、MS>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>Sun

寝よう。

_ なんで>>>……は途中で改行されないんだろう?

IE以外だと改行されるのかどうか見てみるか……

というか、現象をフィードバックするには、説明が困難なものが非常に多いのだがどうしたもんだか。

_ 天菩薩

ガイジン拘留譚と誤読して、突然思い出したり。

本日のツッコミ(全8件) [ツッコミを入れる]

Before...

_ arton [Netscape7.0もだめですね。]

_ arton [このへんはカーニングできないというようなことがからむんだろうから、そういうもんなんだろうととりあえず納得してみる。]

_ arton [ハイフネーションの間違いか。英文で長い単語をハイフネーションするとは思えないから、\w[^\s]*(合ってるかな?)..]


2004-05-15

_ いわゆる人工無能とあまり変わらん

おもしろいなぁ。

「書くのをとめましょうかね」

ってのがサイコウに面白いのだが、ここが「やめましょうかね」じゃないのがすごい。意識してこの言い回しを使われたんだろうか。きっとそうなんだろう。

とめるというのは他者への働きかけで、やめるというのは自分に対する制御だ。

この調子で、や〜めたっ、となるまで続けていくと一体どうなるんだろう?

_ 動き回るコード

と書いちまうとワームがそうか、あまりおもしろくないな。

JavaScriptを最初にこしらえた連中は、動き回るコードというのを意識してただろう。と書いちまうと、動き回るの意味が限定されてしまうな。

データなんだけどそれがコードであるものがあっちへ行ったりこっちへ行ったりする分散オブジェクトってのはRPCの枠組みだとあまり無い気がする。たくさんあるかも知れないが、DCOM、CORBA、dRuby、RMI、RPCあたりだと、あくまでも実行主体はあらかじめリモートにあって、それに対するプロクシがネットワークの向こうからやってくるか、あるいはデータだけがシリアライズされてやってくるかのいずれかで、データとともにまだ見ぬコードが飛んでくるっていうのは、思い出したが、wishなんかがそんな風にできたっけな。その意味ではdRubyでマーシャルして送信するタイプのほうで、そのクラス自体のソースをメタデータとして(dRubyが内部的に隠し持って)送りつけて受信時にevalしてやれば(実際にはRubyの場合、微妙に異なるバージョンのオブジェクトが飛んでくると具合が悪いかも)可能だな、RMIならバイトコード、RemotingならILを送れば良いわけだから不可能じゃない。ルータの内側の世界ならそんな感じでも良さそうだ。

あまりうまい例が考えつかないが、

現行)

JNDIを使って、サーバー上の設定を読み込む。

というシナリオであれば、

public void executeFoo() {

Context c = new InitialContext();

Bar h = c.lookup("bar.bar");

h.doSomething();

...

String peerName = c.lookup("my.peer");

...

}

というようなコードをいずれにしろ書くことになる。とは言え、最初のBarのインスタンスを取り出す(これはDataSourceなんかを想定)ことは可能だから既にできなくもないわけだが、いずれにしろプルしなければならないわけだ。

そうではなく、リモートから情報を設定しにやってくる ……(やめた)

_ Groovy

ふと気付いたが、NETRubyにちょっと手を入れてやれば(というより削りまくれば)C#用のGroovyになるな。

_ とか

いろいろ読まずに想像してからGroovy killed the XML file?を読んでみたが、あまり感心しなかった。

高井さんには悪いが、そういう意味じゃ、あれもそうなのかな?

パラメータの意味って、非プログラマーが構成管理を可能にすることなんじゃなかろうか。そうでなければ、プログラム書いちまえばすむわけだから。(追記:こりゃ乱暴だ。実装時には想定不可能な構成を実行時まで遅延させるという意義を無視している)

そこで、3年前くらいか4年くらい前だか(もっと前だな)に作ったシステムをちょっと思い出した。

デペンデンシインジェクションのようなもんだが、コンフィガレーションインジェクションですぜ、だんな。

つまり、こんな感じのプログラムですな。面倒なんでrubyで記述。

従来

class Application

def initialize()

parameters = ParamFile.new("c:\---\config.ini") # config.xmlでもなんでも構わん。レジストリリーダでも良い。

@timeout = parameters.lookup("timeout")

@retry_limit = parameters.lookup("retry.limit")

@retry_interval = parameters.lookup("retry.interval")

...

end

...

end

しかし、気付いた、おれはバカですか? 仮に、class ParamFileというような形式で気の利いたパラメータ読み込みのクラスを作っても(こんなものは、Preferences、ResourceBundle、DOM、XmlReader、GetPrivateProfileString、RegGetValueEx など幾らでもインフラはあるわけだけど、そこはO-Pマッピング(Object−ParameterFile)してドメイン特化したオブジェクトを利用したほうが楽だ)、結局、プログラムの数だけパラメータをプルするコードを書かなきゃならない。

これはバカバカしい。

そこで、おもむろに、

interface IConfigurable : IDispatch {

[id(1),propput] HRESULT Timeout([in]long NewValue);

[id(1),propget] HRESULT Timeout([out,retval]long* pValue);

[id(2),propput] HRESULT RetryLimitaion([in]long NewValue);

[id(2),propget] HRESULT RetryLimitaion([out,retval]long* pValue);

...

}

としてやって、COMのインターフェイスを実装してやるわけだ。

でもって、

(メソッド名は怪しい)

IActiveScriptParse* p = CoCreateInstance(....);

p->parse(L"c:\\...\\config.vbs"); // VBScriptでもJScriptでも良い。ASRはちょっとやめとく

当然、このconfig.vbsとかでは

Application.Timeout = 30000

Application.RetryLimitation = 8

...

と記述する。

どうだい、これなら、パラメータだって拡張子がVBSってだけで、ResourceBundleや、Windowsのプロファイルと変わらないじゃないか。(追記:Rubyのアプリケーション――例えばtDiaryとか――の場合、当然だがパラメータファイル自身がRubyのスクリプトだったりするが、そんな感じだな)

一方のアプリケーション群からはパラメータからのプルをいちいち書く必要なしだぜ。

それに実行時にパラメータが正しく設定されているかは

app = GetObject("***.Application")

Wsh.Echo "Timeout=" & app.Timeout

Wsh.Echo "RetryLimitation=" & app.RetryLimitation

...

って言うようなスクリプト書いておけば、実行中にチェックできるじゃん。

が、不評だったので、パラメータを切るというのとプログラムを書くというのがデプロイヤーにはどうも大きな差らしいとわかった。どうも実行の責任主体(これは起動した人ではなくプログラムを作成した人に属するらしい)にはなりたくないようだ。

しかし、J2EEではついこういった手法を忘れてたが、JNDI使えばオブジェクトのインスタンスを取り出せるわけだから、この手を復活させようかなぁ、とちょっと考えてみる。シェルから起動するタイプのやつには、Rjbがあるわけだし。

#と、なぜか、デプロイヤーに不評を忘れたかのようだが、WindowsマシンのデプロイヤーとJ2EEマシンのデプロイヤーは微妙に違うから大丈夫なのではないかとか。

_ 萎縮的効果

当然、これが1番の論点だろうなぁ。

ユーザーベースが大きくなればどんな使い方を仕出かす人間が出てくるかは当然わからないわけだ。

量的な実験を行うにはユーザーベースを徹底的に拡大するしかなく、そのためにはあえて秘孔を突かざるを得ず、ということもありえる。実際22万だの200万だのといった規模でのリアルタイムでの実証実験を行った単体のソフトウェアがかってあっただろうか?

その意味では同様な実証実験をちょっとした秘孔を突くことで為しえたやつがこないだの未踏に事例として既にある。

しかし、200万ノードの負荷テストかぁ、おもしろそうだな。

巨大なインストールベースがあり、情報の冗長化と取り出し時の最適化がされていてかつ情報発信の言質が取られないという特性を考えれば、日本のインターネットでのもう1つの悪の温床(という捉え方がされることもある)2chのようなBBSがすっぽり収まることが想定できるし、おそらくBBS機能の付加というのはそのあたりまで見据えた実験なんだろうから、最初のところはやはり単に量をかせぐための煽りと捕らえたほうが素直だ。

< 突然出てきた仮説: 明示的ログ取り以降、書き込みの質が低下、または均質化したということは無いか? >

かつ、何度もアップデートするのは、好評に支えられることによるインストールベースの更なる拡大と同時に大量のユーザーの支持を受けるユーザーインターフェイスなどの研究のために必須なわけだし、内部的にはより効率的な実装などに変えていくのはその実験的な性格から必要性は明らかだ。

Gnutellaを見ている時にそういう方法論が取れるな、と思ったことの1つに、検索(あれにはそれしか無いわけだが)のようなペイロードをエージェントとして、しかも可視化(ファイルにとってのアイコンといった意味での可視化)するというものがある。結構その可視化したことによって新たなペイロードが考え付くのではないかということだ。

現実側に倒してみると、減ったトラフィックの量=表の著作物+児童ポルノのように問題が大きいもの、減らないトラフィックの量=ただのエロ と見ているのだが、実際その程度なのじゃないかなぁ、と思うのであった。多分、都市伝説なんだろうが、ベータマックスがなくなったのは、VHS陣営のおまけにポルノビデオをプレゼント作戦のせいだというようなことがまことしやかに流れたりしてたが、伝説足りえるのは説得力があるからだ。(突然、Linux Journalかで生越さんがどうやってLinuxで飯を食ってるかで妙な書き方してたのを思い出したり)が、それは余談だし、正犯は確かにそっちの犯罪を犯してるわけだから、そういう連中がいたのは確かなんだろうが。


2004-05-16

_ テンピュール

猫に天婦羅

_ テディベアのルドヴィック

カナダの監督(コ・ホードマン)。

雪まみれの窓に指で文字。Ludovic。がタイトル。

丘の上で橇滑りしている子。人形をいっぱい乗せた橇の子。

思い切って帽子とマフラーで外に出ると、家に帰ってきた黒熊の父親に見つかって連れ戻される。

女の子熊の橇から人形が門の前に落ちる。雪が積もる。

8時になって寝台に連れて行かれる。オルゴール熊。

翌日人形を見つける。

雪を払っても左の膝の上に残っているように見えるが、それは裂け目から中の綿が覗いているのだ。怪我をしているね、僕が治してあげるよ。

観客の子供:雪が残っているよ。

確かにそうも見える。しかし、人形の中に綿と呼ばれる白い雪のようなものが入っていることもあるのだよ坊や。そういう人形を知らなければ想像できないかもねぇ。

それはともかく、赤い毛糸で膝を縫ってやる。

かくして人形は生命を吹き込まれる。雪だるまを作ったり。

オルゴール熊。人形は調子に乗って手を伸ばしたまま踊ってオルゴールを倒し砕いてしまう。

あわてて人形を隠す。

母親熊。

ルドヴィックは壁際に向こうを向いて立たされる。お前のせいだぞ、と人形を立たせる。人形はふてくされて窓を開けると出て行ってしまう。

夜中、心配になる。窓から外に出る。門の外の不気味な影。隠れる。人形の登場。和解。

次の日。丘の上の女の子熊。門の外で手を振る。橇がぶつかる。膝が破れて中の綿が出てきて親熊(どっちだ?)が家に連れて帰る。人形は置き去り。女の子熊は見つけたわけで連れて行く。

膝を縫われながら窓の外の、その光景を見て、涙を流す。

窓の向こうに女の子熊。人形をくれる。

雪だるまが溶ける。土の部分に草が目を出す。切り紙のワニ。緑と赤。赤が好き……

という調子で秋の公園まで、都合4話。

ルドヴィックが見て感じた(はずの)ものがそのままその世界になるというのは、(さすがに忘れたが)子供(3〜6歳)の見る風景として想像できるものに近い。だからか、福助が出てくるポイント――女の子熊と知り合って、ちょっと照れ隠しに空を見上げると目立つ葉と枝がありそれが落ちてくる、しょんぼりと家に入ると戸外で人形が橇から落ちる/壊れた人形を自分の手で(親の手を借りずに)直し終わる、箱の蓋を開けて動物達を並べる、蓄音機から好きだった曲が流れる――が設定されているのかも知れない。

橇がぶつかっても、白熊小僧に足を取られても、緊張感がまったくないのだが、それはこの場合悪くないようだ。もしも子供の世界があるがままで刺激に満ちているのであれば、世界が変わるのは恐怖や不安とともに肉体的な刺激が伴うイベント(これは暴力によって変わる世界)ではなく、子供に取って幸福を感じるイベント(これは想像力によって変わる世界)のほうが真に重要であり、しかもそれは本来の世界とシームレスなのだから取り立ててお囃子にあわせて福助が出てくる必然性はない。かくして、この監督がどのように「幼児向け」の作品を捕らえているかは明らかである。それは間違ってはいないだろう。事実、客席の子供達は綿=雪の疑念の声をあげた子供以外は、この淡々としたモノガタリをきちんと見つめていたようだから(とは言え、退屈して寝てたのかも知れないが。さすがに自分の子供は年齢がずいぶん高くなっているので、観察対象としては意味がない――追記:ちなみに真剣に見ていた)。

したがって、幼い子向けの優れた作品だというのは、まったく間違いがないところだ。

しかし、唯一の疑問は、この作品を優れた作品と理解可能な心性を持った幼い子供であれば、その生活もおそらく想像力に満ちたルドヴィックの世界のようなものであろうし、であればわざわざこの映画を見せなくても十分ではないか、ということだ。逆にそうでなければ、この直接的な刺激の無さ(声をあげて笑うポイントなどは無い。最初の作品だけがずいぶんドラマティックであるが、それでも黙って涙を浮かべたりオルゴール熊のくだりでぷんぷんするくらいだ。全体的に静かにしょんぼりし静かに嬉しくなり静かに困る程度)は退屈なのでは無いか? そして幼児に退屈を与えれば大騒ぎになって実際に見たい子供にとっては邪魔になるし、三方一両損のような具合であまりよろしくなさそうだ。その意味では鑑賞者を選別する映画であると思う。と思ったが、熊が動き回るというそのことが随分刺激的な光景だな、ということで、幼稚園とかが映画会とかやるのにちょうど良いのではなかろうか。

_ ひとりで生きる

とか眺めていてちょっと現況調査。

コンビの片割れが刑務所の中だからか、KTO Bolche(1999年公開)が出てこないのは出来がいまいちだったんだろうか。60分という妙な時間が気になるし。しかし個々の単語は追えるのに意味がわからないというこの不思議さ。

しかし、日仏翻訳サービスってのは無いのかね?

どひゃー期待したオレがバカだったのか、これはひどい。巧言令色少なきカナ仁とは言うものの。

こっちはまともだがタダのものはビタ一文でも提供しないという国民性をうかがわせますな。

しかし、これは見たいぞ。未見のものがたくさん。デュエルとか、『クモガニとトウギョ』(これがなぜラインアップされているか、それだけでも見たさ爆発)、『獣の血』(これも意味深な)。いい仕事してるなぁ。

(追記:ドキュメンタリーという言葉に惑わされてはいけない。選者がきちんと説明している。ドキュメンタリーというのは、見世物、怪奇「実話」、びっくりショーの精神が片方にある。と言われてみれば、確かにそうだ。橘外男、庄司浅水、ヤコペッティ、みんな実話で大きくなった)、とは言え、『獣の血』というのは微妙だ。

_ ASR for free-devtool

雪見酒さんの日記2004/5/2

なぜかodbcをリンク……バグというかミスです。

後は……わからないです。というか大きな疑問は、ATLですね。Win64用にテンプレートが入っているのかな?

それから1点気付いた点。もしかしたらRelease Min Dependency以外は全然だめかも知れません。DebugとRelease Min Dependencyしか使っていないので、他のターゲットは試したことが無いからです。とは言うものの、Release Min Sizeでも問題なさそうな気はしますが。(atl.dllの差しか無いと思う)


2004-05-17

_ ASPの書き方

ASPだけだったら、PerlScript、JScript、VBScriptなどいろいろあるから状況はわからないということにしてから始めてみます。

状況がわからなければ、VBScriptが一般的だし、Classステートメントがあるからそれだとします。

すると、

1. ClassのサポートはVBScriptの場合Version5から。

こんな枯れていないステートメントは危険。

で終了。

もうちょっとまじめに書くと、VBScriptのバージョン情報からわかる通り、VBScriptバージョン5は、IE5以降のテクノロジーで、開発環境としてはVS6より後になります。

逆に言えばASPのノウハウは、VS6(つまりVBScriptバージョン4)で一応完結していて、その後はVS.NETとなるためASP自体が過去の亡霊扱い、したがって新たなノウハウの追及対象ではない、したがってClassの例は特に無い、ということだと思います。多分、TechNetなどを細かく見れば情報がゼロということは考えられませんが、いずれにしろメインストリームが.NETに移行した後の開発インフラのバージョンアップなのでそれほどネタにならないのでしょう。

とは言え、Windows2000ではサポートされているので、使えばよいのかも知れませんが、実際にはそれほど使い道があるかは疑問です。

というのも、ASPでの必勝パターンは、複雑なビジネスロジックはCOMのコンポーネントにして(VB6、VC6あたりを使用)、MTS(あるいはCOM+)上に配備し、ASPでは入力を検証してコンポーネントのメソッドを呼び出し、結果を出力(JSPモデル2でいくと、コントローラとビューを一緒にしたものと考えればそれほど外れではないかな)という感じなので、別段ClassをASPで作る必要は無いんじゃないかなぁ、という感じじゃないでしょうか。

一方、単にDBの内容を出力するだけなら(J2EEのファストレーンリーダパターンに相当)ADOをそのまま使うのが必勝パターンだからその場合も特にClassを利用しなくても、入力検証してADOを呼び出して、RowSet(だったかどうか忘れた)を回しながら出力するだけで済むし。

とか書いているけど、あれば使えるんだよなぁ、と思うのも事実。というわけで最初に戻って、6年前にClassが存在したらおそらく使われていたかも知れないが、開発環境の6と.NETの狭間に出てきてしかもインストールベースはともかくMSが売りたいメインストリーム技術ではなくなってしまったので放置ということではないでしょうか。

_ わけわからんが

なんかいっぱいある

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ arton [そういうのは負け犬ではなく、超人と呼ぶのでは…… VBScriptでBCEって、実行時までコンパイルエラーレベルの書..]

_ WR [ご明察。ASPunit(http://sourceforge.jp/projects/aspunit/)使いました。..]

_ arton [なるほど、ちゃんとxUnitがあるんだ。とすれば、分散トランザクションをやる必要がなければ(ADOだけで済むのであれ..]


2004-05-18

_ 軽く軽く

うっわすーべーりー

うわっすーべーりー

すべからくすべからず

_ 今日のトリビア

中田さんにトリビアを教えると、数分後には消滅する


2004-05-19

_ 買った、読んだ

ワイルドライフ (Volume7) (少年サンデーコミックス)(藤崎 聖人)

それはそれとしてダチョウ好き。

頭のちょっと平たい丸さと目の丸さと口の平たさが絶妙(ホンモノのこと)。なので、上野ではオオサンショウウオと並んでお気に入り。しかし子供が大きくなると動物園には行かなくなるものだな。

_ インターフェイスという名の抽象化

アーキテクチャの価値を考えるつもりは無いが、いくつもの疑問が。

例えばTCP/IPはHTTPやSMTPといったアプリケーションの存在によって現在の地位を得たのであり、その成功はTCP/IPそれ自体の革新性にあったかどうかは今となってはわからない。

あるインフラが生き残るためには、キラー「アプリケーション」の存在が不可欠ということの言い換え。あとHTTPはOSI殺しには間に合っていなかったと認識してるのだがそのあたり(OSIをやっつけるところ)は「インターネットの誕生」でも曖昧なままいつのまにかデファクトスタンダードになってたから良くわからない。

アーキテクチャの問題ではないだろう。(アーキテクチャ=インフラストラクチャならば成立するかも)

というか、「革新性」だけで成功したものったどういう事例があるんだろうか。そんなものは無いのではないか。汽車抜きで蒸気機関が成功するか? 映画抜きでフィルムが成功するか? レコード抜きで蓄音が成功するか? 夜になったら眠るだけの人々の間で電灯が成功するか? 高温多湿の日本で背広ネクタイが成功するか? ―― した! これは革新だ。(なんか書いているうちにイヤになってきたので、どうでもいいや)

そうなると、「各レイヤー間の独立性」という理想は、上層では事実かも知れないが下層では徐々に現実離れしてくる。

その前に、

データリンク層におけるイーサネット(IEEE802.3)と無線LAN(IEEE802.11)のように、実績のある方を模した互換性・透過性が求められることになる。

という非常に良い例を出して、それを自ら否定しているのだが。

重要なことは、各レイヤー間の「インターフェイス」の確立(それが確立するためには、デファクトスタンダードなインフラの勝利がおそらく必要で、それによりインターフェイスが「ロックイン」され、それにより逆に「スイッチングコスト」が低下する。

これを防ぐにはどうすべきか、逆から考えれば、その結論は、「インターフェイス特許」「インターフェイス脱共有化」となる。

しかし、ここではこのような積極的なロックイン手法を論じているのではないのであるから、逆に、デファクトスタンダードが決定することで百家争鳴しているインターフェイスに標準が確立し、それによって逆に交換可能性が高まり(負け組や新規参入者は、その「標準」インターフェイスに合わせることになる)、スイッチングコストは低下する。のでは?

例)INT21 とか、CP/M -> PCDOS (違うかな)

例)$変数など Perl -> Ruby (うそっぽい)

例)構文 C -> C++ -> Java

例)電話−ISDN−銅線−光 (家庭の人にとっては箱の交換に過ぎない)

例)Win32 Win9x -> WinNT (うそ)

例)Webサービス 

_ インターフェイスとプロトコル

インターフェイスの脱共有化とか書いてなんか変だと思ったら、本当はプロトコルの脱共有化なのであった。

インターフェイスのほうがカバー範囲が広く普通の言葉としても利用可能なもので、プロトコルは外交(ということは政治用語か?)と通信規約に限定した用語、という認識で合っているだろうか? とは言えCOMのプロトコル(広義には通信であるが、インプロセスなら単なるAPI――インターフェイス)だが、インターフェイス⊃プロトコル なのか?

_ リアリティ

リアリティ スペシャル・エディション(デヴィッド・ボウイ)

なんていうか、久々に聴いているうちに泣きたくなるほど美しいっていう感覚を味わった。

今や、全世界でたった5万人にしか受け入れられなくなったボウイが、商魂たくましく、その5万人に何度でも同じものを買わせようと仕向けている(わけだろオイ)そのDVD付きのCDだが(特典付きCDは正月頃に買った)、だが、老いぼれたボウイが出てきて、バンドも爺臭いんだが(ビスコンティの代わりに不思議な女性がベースを弾いている? のがちょっと余りにも異質)、しかしだ、アップでは確かに爺さんになったボウイなんだが、そこから出てくる音楽がなんて美しく響くんだろう。3本のギターが勝手に鳴っている。

そして曲が進み、寒いMCを入れながら、でもだんだん年齢が解消されていく。ボウイはボウイだな。それにしてもアールスリックってのは不良オヤジの絵に描いた餅みたいなやつだな。

スペースカウボーイ 特別編 [DVD]

つまるところ、これもまた1つのスペースカウボーイ。

おっちょこちょいにも50過ぎのオヤジが何を勘違いしたかのこのこイラクへ盾になりに行って戻ってきたりのパンタ、90過ぎてもいい加減な映画を年に1作のペースで撮り続けるオリヴィエラ、(そう言えば公園通りを若い女性と歩いているのを見かけたことがあるが、さすがにサミュエルフラーは死んだのかな?)、相変わらず反骨がデコに光るニールヤング、革ジャンを脱がないルーリード、いつも黒いストラングラーズ、こいういった連中が世の中にいるってことを考えると、とっくにモーツァルトやヴィアンやカーティスやニザンやユスターシュを超えて生きているわけだが、まだまだやっていけそうだな、とにんまりとしてしまうのだ。

本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ ogino. [Objective-CではJavaでいうinterfaceのようなものをprotocolと呼んだりしますね。というか..]

_ arton [コメントありがとうございます。 oginoさんの情報だとそこそこ交換可能みたいですね。 Saisseさんのはちょっと..]

_ WR [一般的には、インターフェイス⊃プロトコルだと思います。 言葉の定義の問題はさておき、 インターオペラビリティ(同位レ..]


2004-05-20

_ この国のかたち

つーか、最近、思うんだがPTSDが治ったってことなんじゃないかい?

明治維新ってのは、東京の人間には大きなショックだったはずだし(だって、上野のお山に長州人が大砲打ち込んだりしたわけだし)、日露戦争とかいっぱい死んだし、まあそれからいろいろあって負けに負けたりして。

しかも、明治維新でPTSDでゴーな人達が政策作ってたもんだから、生きて虜囚の辱めを受けずとか、欲しがりません勝つまではとか、一億玉砕とか(しょっちゅう氏ねよオマイラって言われてるわけだよ)こんな状態でPTSDにならなきゃ変ジャン。変だよ絶対。最近の人がナイーブなのか? まさか。同じ人間、そんなに違うわけがない。つまり、一億総PTSD罹患者だったからその異常性に気付かなかったわけだ。うむ、納得だ。

というわけで戦中派とか、戦争中に生まれた人ってのは、全員、PTSDに罹患(するもんなのか?)してたって考えれば、そしてその連中に育てられた連中はそのせいで、何しろ一億火の玉PTSDなんだから、完治すんのに60年くらいかかってもおかしかない。3代かけてやっと心に平静が取り戻せてきたんじゃないのか?

だから、今の10代、20代ってのは、やっとこの国の異常性から脱却できつつある、まともな人々なんだよ。

その連中がすぐ切れるなら、それが、この国のかたちであり、その連中が勤勉じゃないのなら、それが、本来のこの国のかたちであり、その連中がいかし(別に「れ」でも良いんだが)ていれば、それが、本来のこの国のかたちなのだ。

というわけで、30代(生まれは1970年代、これは両親は1940年代〜1950年代で、焼け跡PTSD罹患者だ)まではともかくとして、20代(生まれは1980年代、両親が1950年代〜1960年代で、復興後なので症状は軽いが両親の世代、1930〜1940年代生まれのもろ罹患者に育てられたためそれなりに呪われている)でやっと毒気が抜けたんだろう。

祝着至極。

#と、覚えたてのPTSDという言葉を振り回してみたりしてみたりして見る。

_ そんじゃいつ平静だったのか

元禄時代だな。その前は平安時代。だいたい50年にいっぺんは戦乱があるような国じゃ、なかなか治るものも治らない。

で治りかけたところに黒船だ、攘夷だ、維新だ、と来たからなぁ。

_ 今日のIE

MSNの検索をたどって思わぬ事実を発見。というか、常識なのだろうか?

<a href="foobar" target="_search">foobar</a> で、左側に検索ウィンドウ(タイトルに「検索」や「新規(N)」ツールバーなども出る)が出てくるのだが、これって使い方によってはユーザーを変なところに誘導できてしまうのでは?

追記:MSDNに出てた。_mediaってのは多分見たこと無いが具体的はどんなのなんだろうか。_historyってのはさすがに無いようだ。

_ なんとなくだが嬉しい

キジムナー

僕は沖縄の人(という区別が必要かどうかは知らないがウチナンチューとヤマトンチューという区別があるってことは、もしかしたらその区別が必要なのかも知れないし)ではないので実感としてはわからないのだが、以前見た映画では、黒砂糖が好きであげると武芸の型を見せてくれる森に住むなんかの妖怪(精霊なのかな)というように描かれていた。山籠もりしている空手マンみたいだな、そう書くと。

実際には、木+ムジナ(実際に存在する偕老同穴ではなくて、カワウソみたいに実在の獣でもあり、想像上の生物でもある妖怪)とか、森の座敷童とかをイメージしているんだけど前者と後者じゃ全然違うか。モモンガっていうのは実在の動物ではムササビの小型版だけど、妖怪としてはなんだかわからない夜空を飛ぶやつで、そんなのにも近いのかなぁとか。

家の上のシーサーと、(森の)木の上のキジムナーで、内と外、とか。


2004-05-21

_ ちょっとブレークスルー

やっとDBをそこそこ自在に操作できるようになったので、一安心(しちゃいかんだろう)。

_ フィールドに値セット

Field f = o.getClass().getDeclaredField("privateField");

f.setInt(o, 0);

とかやったら、IllegalAccessExceptionを食らった。

事前にField(<<AccessibleObject)#setAccessibleの設定が必要らしい。

関連するポリシーはReflectPermission クラス。


2004-05-22

_ スキルセット

セット=集合

昨日はへーな人に仕事の場で会った。

意外と同じようなところで仕事してるんだな。

(このエントリーは自分用なので謎系(追記:他のはどうなのよ? というわけで厳密にはあっち側の自分ということだ)。というか、隠すチェックボタンはそのためのものか。面倒なのでチェックしないが)

_ 言葉が通じる嬉しさ

違うかも知れないし大ザッパには正しいかも知れないが、3種類の組織を考えてみる。

1. ぬるま湯でんがな、何も知りませんがな

2. 勉強してます、使いたいです、やってみたいです---超えられない壁---給料もらって仕事してます

3. 出し抜かれてたまるかよ

1.は論外、3.は言い方が悪いが切磋琢磨せざるを得ない組織だ。しかし切磋琢磨って、サイコロ1億個受注したけど点の塗り忘れがあって困るけど、あらかじめ点の部分に彫りを入れておいて、全部塗って、ゴロゴロ回して(多分商店街の当たり外れのガラガラ回すやつみたいな機械)彫り以外の部分を削るやつが想像される。浅い知識の化けの皮は剥がれるが、真の知識は掘り込まれ、しかも人間的には角が取れて丸くなるとか。なんか理想ではあるかもしれないかも。

で、外資のコンサルティングファームなんていうのは外部からのイメージでは3.なんだが、頼むから客を出し抜こうとしないでくれ、と思ったり思わなかったり。

で、1.は皆仲良く堕落しているわけで、外部には影響しないからまあどうでも良くて、2.だな、問題は。

超えられない壁の左辺と右辺の人数バランスなんだが、よほどの大組織でなければ、1:5くらいではなかろうか? 大組織なら3:15あたりになるからさすがに3人もいれば右辺が影響されてきて最終的に5:10くらいになりそうな気がする(右辺から2が左辺へ移動し、3がスポイルされてどこかへ消えたらしい)。

で、1:5くらいあたりから1:10くらいまでだと(1:3以下だと王様になれるから最終的には仲良く堕落の方向へ進みそうな予感。1:5くらいだと妙な使命感というか責任感が出てくるから――大体妙な使命感とか倫理観があるから左辺にいるってのもあるだろう――仲良く堕落にはなれない)、どうしたって左辺はいろいろ考えざるを得ない。同じ言葉で話せる人間がいないからだ。これは潜在的にはもったいない状況だろう。上部組織から見れば左辺のポテンシャルは重要なんだが、かといって組織バランスから右辺を維持したい(かも知れない)ので、もったいないという発想は出ないかも知れないが、世界から見れば、この左辺の人間が持つ思考過程なり経験則なりを取り込む機会の損失である。それはおいておいて。

そういうときに、同じ言葉で話す人間と出会うというのはすごく嬉しいもんだ。だいたい、コンソーシアムとかコミッティとかがそういう場であるし、そういう場がなければ腐るか職を辞して身の置き場を変えてみるとか。技術は技術を必要とするからフリーメーソンとか薔薇十字会とか、あるいはユークリッド集団とか、鉄砲鍛冶集団とか、紀州海賊とか(造船技術集団でもある)、墨子集団とかにそういうものの1つのカタチを見ることも可能かも知れない。

こういう場の提供というのをビジネスと結びつける試みとしてかってのDevelopMentor(MLが中心か)とかTheServerSideとか、あるいはSourceForgeやCodeHausなんてのもそのタイプのような(SourceForgeって技術者のソーシャルネットワークのはずだ。プロジェクト=フォーラム)。もちろん、ベンダー主導コンソーシアムにもそうい側面が無いとは言えない。多分、はてなもそういう場となっているのは見える。

これもインターネットが湯水のようなインフラとなった効果の1つだと思う。

90年代中頃までは、2.のタイプの組織の左辺にいる人間が組織横断的に出会う場というのは本当にコンソーシアムくらいしかなかったはずだが、今は異なる。


2004-05-23

_ Good Enough

何で読んだかのか覚えてないが、クライスラーのネオン(だと思う)について書かれたもので、なぜこの値段で作れるんだ? と不思議に思った日本の自動車会社がバラして調べたらエンジンの鋳造の仕方が考えもしなかったいい加減(とは言え、安全面では問題ないはず)な方法で、そんなやり方があるのかとびっくりしたっていうようなエピソードを思い出した。(刳り抜くんじゃなくて張り合わせるとかだったかな?)

どこまで普遍化できるかわからないが、1990年代のアメリカの代表的な工業製品でもそういうgood enoughな方法論が適用されていた(はず)だから、それはソフトウェアに限ったことでは無いのではなかろうか。オリジナルなアメリカンウェイなのか、1990年代以降のアメリカンウェイなのかはわからないが。

そう言えば最初にCSMA/CDを知ったときは驚いた。常識的にはトークンリングみたいに組み合わせるかインテリハブを置いたスター構成で物理的なP2Pでsyn-ackとかを考えるんじゃないか? それがバスにぶらぶらぶら下げて同時に投げますなんていうのはgood enoughの最たるものだと思う。その後、元々は無線のためでどうした、というようなのを知ってちょっと納得したが、それを有線に持ち込むっていうのはやはり大したものである。とりあえず大丈夫そうなら投げてみてぶつかったら間をおいてやり直せばいいじゃん、なんていう方法を良く持ってきたものだ。当然、回線の使用効率は良くないんだが(30%くらいの実測値を以前手にしたことがある)、単純化されているため高速化できる、そのため結果的に(ノード数に依存するが)高速だとか。これってCPUの先読みにしても、キャッシュラインのフィルにしても、とりあえず後先考えずにまず実行してしまうっていうのは、やはりアメリカンな大雑把さじゃないかなぁ、とか。いや、そう思うのは、原爆とかいきなり実戦投入したり、マグロ漁船がいようがなんだろうがいきなり水爆実験したり、とか、森にゲリラがいるなら森をなくせば隠れられないだろうと枯葉剤ばら撒いたりとか、とりあえず先住民族にガラス玉を渡したり虐殺してみたりとか、とネが同じような気がしないでもないでもない×10くらいかな。でもそういう方向に話を持ってけば、誰が八路かわからないからとりあえず全員殺しちまえとかやった吾国にもはねかえってくることでもあったのであった。そういうことには驚くほど大胆不敵なくせに、自分が痛みを伴う可能性がほの見える場合には驚くほど小心不遜なのはこれいかにとか。

というところから楽観ロックと悲観ロックとかに思いを巡らす。だから、そんなにガチガチに作ってどうするよ? 悲観ロックでWebアプリケーション作るってそもそも間違ってるでしょ? 最初に読み取ってレスポンス返したらコネクションクローズするから意味ないでしょ?――だからコネクションをセッションに保存してお……――バカですか?(追記:というか悲観ロック以前の問題だな、これは。トランザクションをセッションと合わせようってのが……)――そうは言っても、同時に更新されたらどうすんですか? ――1.上書きでシカト(更新ログ取っておいて衝突してないか調査可能にしておく、あるいは定期的にログチェックする仕組みを用意する)、2.参照カウンターを仕込んでおく、とか方法はいくらでもあるじゃん。大体において、同時に複数の人間がマスターをいじくる可能性ってどれだけあるのよ? ――そうは言っても可能性は0じゃないですよね……とか。

(追記:待てよ、コネクションをセッションに突っ込んで(クラスタリングではセッションを開始時のノードにべたべたさせる設定にするのが前提)for updateでロックかけた状態でレスポンス返して、次のpostで更新−commitっていうのがこの文脈では大雑把に大胆不敵なのかな? 単なる無知ではなくそれはもしかしたら優れた発想の転換かも知れない、かなぁ。とは言うもののやっぱり許せないのだが。とは言え、セッションタイムアウトのイベント拾ってロールバックできるわけだし、そういうのもアリか? 同時接続ユーザー数次第かな)(更に追記:っていうか、逆にやっぱり難しいな。アンロック待ちで待たされる人間が出てきた場合――だが行ロックなんだから最初の前提である同時に同じマスターをメンテする可能性は低いがこっちでも適用可能ではある――には、きっと中止ボタンを押してやり直すはずだから、その場合は同一セッションの別のスレッドが動いて、現在ロック待ちのコネクションを拾ってくることになるから、それを判定して中止してやるとかしなきゃならないが(とりあえずcloseしてやれば良いのか。中止した場合は更新データのPOSTにはならないから。その場合元のスレッドはSQLExceptionで飛ぶからそれはそれで良さそうかな。どっちが簡単に実装できるかだな、問題は。というか、コネクションが幾つあっても足りないような気がやはりするのだが、それ次第か? 1000コネクションくらい作っとけば平気かも)

しかし、どうやればページ間で情報を受け渡せるんだ? とBTW。#getSessionMapってセッション間で維持されないのか、それとも元々セッションが維持されていないのか(ではどうすりゃいいんだろう? managed-beans.xmlにはmanaged-bean-scope要素にsesshonって書いてあるんだが、これはそういう意味じゃないのかなぁ。

全然、情報がenoughじゃないんだな、これが。

追記:getSessionMapで合っている。JSPのエンコーディングをいじったり勝手に変更されたり追加されたりした(そこが既にダメダメなんだが)コントロールを手修正しているうちに、イベントハンドラの設定が飛んでいて呼び出されていなかった。しかし……(言いたいことが死ぬほどある。とりあえず>×10000個ほど)

#しかし、いつもながらに、全然元の記事とは無関係なことを書いているのでこれもリンクは無し。

_ コメント付いてた

しかも40代SI・経営者。どんな知見が得られるかと思ったが、当時はH/Wが貧弱だから机上考査が必要で云々とか書いている。オープンシステムについての実体験に基づく考察がゼロな上にこちらが提供している考察を繰り返しているだけで、いろいろな事と見比べろとは、片腹痛い。

どうして、ちゃんと読まずに説教を垂れるんだろう? 知見が乏しいから自分の正しさを主張したくなるのだろうか?

ようするに最後まで読まずに(こちらは適用可能性を出しているわけだから)書いてみたのだろうか。

と同じ轍を踏まないように続きを見るとこちらにもコメントが付いていた。それは良し。しかし、内容はだめだ。読んでいない。言った言わないは要件/外部仕様の範疇で、こちらはそれは「必要」とわざわざ書いているしスコープも明確にしているのにそこは読まずに反応しているらしい。

さらにその上には、言葉尻に反応してみせた人間らしきもの――()が無いので人口無能かも知れないが――。プログラムを組む=設計するは、当然の話だ。こちらは人口無能だけあって何を言いたいのかわからないが、とりあえず嘴を突っ込みたかったらしい。

筆者は一応書いている範囲のことは実証してんだよ(人月でいけば300程度の規模だけど)。秘密だけどな。

多分、真に知見を持っている人間はわざわざ書き込まない(誰が他人にタダで教えてやるもんか、と考えるのが従来型だからな)、ということなんだろうが、それにしてもあまりに予想通りの反応しか得られないのでがっかりする。それならそれで人口無能型のが100個くらい書き込んでくれればそれなりにおもしろいんだが。引っ張られてこちらの気付いていない/気付けない知見を出してくれる人が出てくる可能性があるからだ。いずれにしろいささか遅すぎる。

追記:ESRだってfetchmailの規模でもとりあえず実証実験してからノウアスフィアを開墾しているじゃなくてバザールという考えを出してきているのだ。思いつきだけで書いてるはずが無いではないか。それもわからんのかとちょっと不快になるな、人口無能の書き込みについては。

とは言え当然だがある程度以上の規模になると関われるプロジェクトの数には限界があるから実証するったってそう簡単にいろいろ試せるはずがない。って言うか失敗したらそこまでだしな(少人数規模だと無理すればやり直しがきくからそっちでいろいろ試せた後だというのはまあ、あるかも。いろいろすまんかったと思うことも無いわけでは無い)。したがって、こっちの知見より優れたものや、あるいは優劣無関係に別の角度からのもの、そういったものがあるのは当然のことだ。

実際、ある程度以上の規模だと失敗は致命的だからあらかじめ複数の逃げ道を用意してからことに当たることになる。その結果から得た知見だからそのための妥協点などが夾雑物として紛れ込んでいる可能性も高い。ましてこっちは机上の話をしているんじゃないし、言うだけ言ってさようならな仕事をしているわけじゃない。あくまでも実装/稼動を前提としていて、実際に動かしているわけだしな。という点から批判は十分に有り得るだろうとは想像していた。だが、あれでは意味がない。

結局のところ、事前にいろいろ考えてからやるのは当たり前。だが自分の頭は自分の頭の鉢の大きさに制約される。したがって、それ以外の情報がいやでも必要になる。そのためには事例はこちらも知りたい。だが、業務システムだとこれは知的所有権にかかわってくるので生で出てくることは考えにくい。そのため事例が無理なら知見(これは抽象化されているので知的所有権にどうかかわるかは微妙になる。特に個人的知見というやつなら安全であろう)でも良い。そのために手持ちの知見を提供しているという側面がゼロとは言わない。そのために持って回って丁寧にしつこく書いていたのだが、いささか期待外れではあった。

さらに追記:もって回って書きすぎたのかも知れないな。ツッコミどころをところどころにハニーポットとして仕込めば良かったのかも。だが、それでは逆に記事としては価値を低めることになりかねない。というかそれは本末転倒だ。結局のところあまり良い記事じゃなかったようだな、と反省。

_ 爽やかで高級感あふれる「ソウデッチュ」

カネゴンさんのとこで見てOnsonic体験版を体験してみる。

ポンポコポン 個性的 活動的 庶民的

ポコペン 庶民的 安らぎ 都会的

オリハルコン 静的 信頼感

ひびのかけら 明白さ 特殊的

レクラデジュール 静的 充実感 信頼感 老人層

ジェイツーイーイー 特殊的(圧倒的な) 男性女性ともシルバー層ねぇ

だんごさんきょうだい 充実感 静的

たけやぶやけた 庶民的

いってよし 特殊的 活動的 女性ヤング層とジュニアに断トツ

マイクロソフト 爽やかさ 中年男性

サンマイクロ 特に特徴が無い

オバルディン 充実感

ラスプーチン 爽やかさ 中年男性

ゆげのどうきょう 静的 充実感 信頼感 中年女性 なるほど。

おんそにっく 充実感 中年男性

どうしてそうなるのかは全然わからないが、おもしろいな。なんか、みなさん爽やかですなぁ。


2004-05-24

_ 興味深い

コンストラクタベースのDIではEJBの代替にはならない。だってプーリングできないじゃん。

なるほど。確かにそうだ。

とは言え、現時点ではコンストラクタベースオンリーというコンテナは無いような気がするが。


2004-05-25

_ IT*Pro第4弾

軽いウォッチガイド

この日記の読者には何を今更感が漂う初夏の風だが、こんなもんかな。TheServerSide.comとか知らない人多そうだし。

_ DIコンテナ無しでドメイン特化DIを実現する

DIコンテナを利用せずにコントローラ(MVCのCというよりはBCEのC)が依存性注入する方法を考えてみる。
たとえば、特定の文字列や数値への依存性が既に決定しているという状態がある。
例)
interface FooDomainLogicGroup {
    // 通信相手
    void setServerName(String host);
    // 通信ポート
    void setServerPort(short port);
}
例が例によって良くないが(すべてのビジネスロジックが通信するなんてバカなことはあり得ない)、こういうものの依存性を、コントローラで解消させることを想定する。
こういうのは多分beanを使って実装する。
interface FooConfiguration {
  Strng getServerName();
  short getServerPort();
}
class Controller {
  FooConfiguration config;
  void init() {
     final String name = lookup("server");
     final short port = lookup("port");
     config = new FooConfiguration() {
       public String getServerName() {
         return name;
       }
       public short getServerPort() {
         return port;
       }
     }
   }
    ...
   void executeBean() {
     ...
     bean = createBean(...some condition...);
     bean.setConfiguration(config);
     bean.execute();
     ...
  }
}
しかし、システムがでかくなると、FooConfiguration がどんどん肥大化することになる。すると、いろいろ厄介である。
そこで構成データを分野ごとに細分することを考える。これならば、肥大化はなくなるが、その場合、beanが実装するのはsetConfiguration(FooConfiguration conf);というメソッドシグネチャではまずい。
1つの方法は、細分化したConfigurationBeanのスーパーインターフェイスを定義し、setConfiguration(SuperConfig conf);というメソッドを実装させることだ。
しかし、この場合、すべてのbeanが
void setConfiguration(SuperConfig conf) {
  if (conf instanceof ServerConfig) {
     serverName = conf.getServerName();
     ...
  } else if (conf instanceof ExtendedServerConfig) {
     extendedServerConfig = (ExtendedServerConfig)conf;
  }
  ...
}
というように、与えられたインスタンスが自分が求めるものかどうかを判定しなければならなくなる。
これは馬鹿げている。
そこで、差の吸収を呼び出し側に移動して、次のようにするのが良いだろう。
interface ServerConfigurable {
  void setConfig(ServerConfig conf);
}
interface ExtendedServerConfigurable {
  void setConfig(ExtendedServerConfigurable conf);
}
class FooBean implements ServerConfigurable, ExtendedServerConfigurable {
  void setConfig(ServerConfig conf) {
    ..
  }
  ..
}
この場合、コントローラ側でbeanの判定をすることになる。
   void executeBean() {
     ...
     bean = createBean(...some condition...);
     if (bean instanceof ServerConfigurable) {
       ((ServerConfigurable)bean).setConfig(config);
     } 
     if (bean instanceof ExtendedServerConfigurable) {
       ((ExtendedServerConfigurable)bean).setConfig(extConfig);
     }
     bean.execute();
     ...
  }
ここまで特化してしまうと、では
interface JdbcConfigurable {
  void setConnection(Connection conn);
}
class DaoBean implements JdbcConfigurable {
  ...
}
とか、なんでも良いことになってくる。instanceof判定はコントローラに集中しているから1つ実装するも2つ実装するもそれほど変わらないからだ。(場合の数が増えるとifが増えすぎて下品になるので、そのあたりはコード上の工夫は必要)
DIコンテナを利用すると、たとえばこれらは
class DaoBean {
  void setJdbcConfig(JdbcConfiguration conf) {
    connection = conf.getConnection(); // これだけならConnectionのセッタで良いわけだがあくまでも例
  }
  void setServerConfig(ServerConfig conf) {
    serverConfig = conf;
  }
  ...
}
というようになる。
差は
class DaoBean implements JdbcConfigurable, ServerConfigurable {
              ----------超えられない壁
class DaoBean {
どちらがPOJOかと言えば下だ。しかし、ドメイン特化という意味では上のほうが宣言付きなため気分的に安全度が高い(良くわからん理由だな)。また、テストのしやすさという点に関しては上も下も違いは無い(実装するメソッドは結果的には同じものになるからだ)。
もしコントローラとxConfigが密結合しても問題ないのであれば、こんな方法でもEの独立性は保つことができる。例えばこのような密結合が有り得るのはxConfigが独自に設定を読み取る能力はなく、コントローラが自分の情報でxConfigを設定しなければならないといった情況だ。たとえばServletConfigから情報を取得するような場合である。逆にInitialContextやプロパティから情報を取得できるのであればxConfigは独立したbeanとして実装できるから、コントローラと密結合させる必要は無い。もちろんTestCase内ではどちらにしてもテスト側で生成することになる。
当然、コントローラとxConfigが疎結合可能な場合には、DIコンテナを利用することでxConfigの追加や変更がコントローラと独立できるというメリットが得られる。
本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_  [「オブジェクト指向(プログラミング)みたいだね」といいました。 素人ですみません。えへへ。]

_ arton [何が素人なんだか……玄人中の玄人じゃないですか、というかクロウトってこういう漢字なのかとあらためてびっくり。]

_ kdmsnr [読者層、不明ですね...。]


2004-05-26

_ メタラー

異様なまでに項目が多い変換表がExcelで作成されている。

あまりにも項目が多い上に頻繁に修正が入るから、人間がプログラムを作成するのはバカっぽい感じだ。そこで、表から変換プログラムを作成するプログラムを作成することにする。

VBAは良くわからないので(調べる気にもならない。と思ったがVBもVBSも知っているんだから、真の理由は後で出てくる)とりあえずcsvに変換したファイルを処理すれば良いだろうと、rubyでJavaの変換プログラムを出力するプログラムを書き始める。これなら、Win32上ではなくてUnixでも動かせるだろう。

ところが、Excelの元データにセル内で改行している項目が幾つもあった。面倒なので(各項目ごとに"で始まり改行していれば次の行まで読み込んでとかすればできるわけだが)直接Excel側を直し始めたが、あまりにも膨大なのでやめた。

で、Win32OLE。これならセル毎に取り出せるから改行があっても平気だ。この時点でWin32限定決定。でもrubyで書く方針は変わらない。

で、なぜ変換プログラムの対象言語のJavaや、ExcelネイティブなVBAじゃないかと言うと、ヒアドキュメントを使いたいというのが1番大きかったりして。

そこで、C#だ。@""だっけな? あれはやはり良い点をついている。しかし、さすがにこのためにC#を持ち出すのは後々を考えると無理があるので、やはりrubyで行くことにする。

#というか、Excelの表を作っているやつが、改行もそうだが機械読み取りとか機械加工ということに対するセンス(というか考慮というか)がゼロなので、とてつもない労力が必要でうんざりする。これからは、表を作ったやつにプログラムを作成するプログラムの作成を義務付けることを考えてみる。TDDみたいなものだ。機械処理するために最適な表の作成方法を考えて表を作成する。

#メタな作業はおもしろい。

本日のツッコミ(全11件) [ツッコミを入れる]

Before...

_ arton [起動直後は画面下のほうに出てくるタスクバーみたいなものに、Squakeの下のほうが重なってしまってサイズを変えなけれ..]

_ sumim [タブの開き具合はタブ部分をドラッグすることで変更可能です。ウインドウサイズやフラップの開き具合を使いやすいように調整..]

_ arton [どうもありがとうございます。やってみます。]


2004-05-27

_ ジョンケージ

Daughters Of The Lonsome Isle(John Cage/Margaret Leng Tan/John Cage & Margaret Leng Tan)

すごく誉めているのを見て欲しくなる。

で、クリック。しかし、精算は来月にしよう。

で、久々に季節はずれのバレンタインとかも聞きたくなった(レコードはあるんだけど)が、こちらは無いみたいで少しがっかり。

プリペアドピアノで演奏するってのを敷衍させて、プリペアドVMとかプリペアドパーサとかプリペアドJITとかを適用させてプログラムを実行させるってのはどうだろうかとか。どうプリペアするかが腕のみせどころだ。演目は円周率100万桁とかで、どれだけブレが美しいかを競う。あるいはマンデルブロート図を描かせてどれだけノイズが美しく入るかを競うとか。

_ Orkutのニュースレター

Friends of friends you might be interested in meeting:

とか書いたメールが来た。最近ログインしてないからか?

で見ると、mputさん、羽生さん、角谷さんと言った面々がラインアップされている。それはam interested in meetingなのは事実だが、どういうロジックだ?

Friends of friendsの集合で重なりが多い部分の抽出なんだろうが、この場合いささか滑稽な感は否めない。と思ったけどmputさんとは実際には面識は無かったですね。

で、これはOrkutのシナリオとしては、紹介するからリストされたFriends of friendsにメッセージを送って友達になったらどうですか? Orkutを使って良かったね、ということなんだろう。ではもしdating womenにチェックしていたら女性のリストになっていたのかなぁ。ちょっと残念な気も。いずれにしろシステムが積極的に友達候補を紹介するという意味ではおもしろい。というかどこでもこういうものなのかな。

_ BEA

ずーっと、ベアだと思っていたが、BeeHiveを見てやっとビーなのだと気付いた。easeのイーなのか。

#実はビーイーエイかも知れないけど。

_ ちょっとカマンベール

sumimさんのご教示のおかげで無事、iBookで操作可能な環境ができました。

で、早速、子供に絵本を与えて適当にやらせていたら、録音した言葉(iBookはマイクが付いてる)を再生しながら、書いた絵をくるくる動かしたりして遊んでいるから、こりゃいいや。

本当にどうもありがとうございました。

#絵を書いた場合、領域ではなく描画された線がある部分のみに反応してハロが出るので最初とまどっていた(僕もわかんなかったし)。が、いつの間にかちゃんと仕組みがわかったみたいでいろいろやってる。

追記)やって見たら、落ちるのなんのって。

1.管理者(=オイラ)がApplication下にインストール(してある)

2.子供が自分のログインで操作。

3.保存->即死

・ユーザーの書類とかhomeとか見て欲しいもんだし、せめて死ぬのではなく書けないと文句を垂れて欲しいものだ。パーミッション変えて(Scriptletだっけかな?)解消

1.なんか大きなオブジェクトを移動していると落ちる(これは仮想メモリーのサイズの問題?)

1.テストの色と色の衝突検出でスポイトを動かしていたらハング(1回だけ。再現しない)

とまあ、いろいろあるものの、おもしろいし、おもしろいようだ。(どうしても手を出したくなるが、できるだけ放任モード)

で、しっかり、何か作業をする前に1度セーブというのが身に染みたようだ。これでいつでもWordをWin9xで使えるだろう(が、XPだと確かに落ちないのだが)。

_ むむ

妙なアンテナ発見。死ぬほどまじめにJSCの腐れっぷりに付き合ってますです。

最近の技。domain/domain1/backup/j2ee-modulesの下を削除すること。常に。

本日のツッコミ(全6件) [ツッコミを入れる]

Before...

_ sumim [あ、すみません。VM と仮想イメージのバージョンの組み合わせは適正でした(^_^;)。クラッシック版での起動か、VM..]

_ sumim [念のため、VM ・仮想イメージともに、最新版はこちらで公開されています。http://squeak.hp.infos..]

_ WR [> 最近の技。 まさにバッドノウハウですなぁ・・・]


2004-05-28

_ Castorメモ

XMLスキーマコンパイラとして利用してみた。

・Castorは、属性名と子要素名に同じモノがあるとエラーで終了する。

どちらも同じフィールド名で作成されるため

・Castorは、AというComplexTypeとAという要素名があると警告を出し、無視させるとソース上書きの刑となる(というか上書きの刑に処するがOKか? と聞いてくる)。型名と要素名は変えておいたほうが良い。

・Castorはunsignedを非サポート (他システムとの交換用文書定義の場合に問題)

・Castorのエラーメッセージは不親切。どのファイルのどの行を処理中かは出して欲しい。コンパイラの最低限の機能だと思うぞ。

・Castorは高速。あっと言う間にコンパイルする。

・Unionの処理はいい加減である旨の警告が出まくる。が、生成されたソースのチェックを忘れてたのでどうなっているかは不明。

・添付文書のうちtypesパラメータの説明が不適切。-j2と書いてあるが、正しい指定方法は、-types j2。-types -j2と書いて無視されていた。

_ squeak

ありがとうございます。まずは最新版を試してみます。多分、来週以降になると思います。

# ちょうどOS Xを更新してますが、更新後でもスクリプトをドラッグしていたらやはり落ちるのは確認してます(OS Xのバージョンの問題とは思っていないし)。ドラッグ中がホットスポットのような感じ。


2004-05-29

_

ボリスヴィアンがエディットピアフを評した有名な言葉があって、サレテラミュジクという題の曲についてだが(覚えてるジャン)、脱帽だマダム、きっと電話帳を読んでも人を泣かせられるだろう、というようなやつ。

エディットピアフのレコードなんかで引用されていれば、それは最高の誉め言葉らしいが、評そのものを読めば(ジュヌスィパクルヴェジュヴドレパクルヴェに出てる)単にイヤミを言ってるんじゃないかって気もする。大げさな唄だし。泣きまねしたりするし。

と言う具合にフランス語をカタカナで書くと違和感があるんですが。たとえば(以下固有名詞はいい加減)

ボリスカーティスがエディマーフィを評した有名な言葉があって、ストップザミュージックという題の曲についてだが、……(アイムノットダウンアイキャントスタンドビーイングダウン(かな?)に出てくる)

だと中黒を書いてない表記法はおいておいて、それほど違和感はないが、それはなぜだ? 慣れの問題かな。

で、松屋に200光年ぶり(100円のお釣りを100万両と言うのと同じくらい老いを感じさせる表現。しかしそのくらい孤独なのかも。あれは200万光年かな)に行ってそうかもう牛じゃなくて豚なのかと思いながら食べてみたら驚いたのは豚じゃなくて牛丼みたい(牛肉みたいなのではない)だからだ。

脱帽だ、紙に汁を浸して出しても人を満腹させるだろう、というふうに感じた。

と考えてみれば、紙って植物繊維だし、低カロリーだし、つまり、牛丼屋のイメージとかけ離れてヘルシーなんだから、へるしーか、「し」に長音が付くと果てしなくバカっぽい発音になるのはなぜなんだろうか、とか考えながら、やはりメタデータはカッココッカに入れとくべきではなかろうか、とか考えてみたりしながら、豚とか姑息なことせずに、紙丼にすればいいんじゃないかな? どうせ、食ってるやつは肉を食ってるんじゃなくて、牛丼の味を食ってるわけなんだから、とか思ってみたりしてみたり。

で、牛を提供していた企業が一斉に豚に切り替えたと言うのに、スーパーで豚が高騰する気配はない。

なぜだ?

急に養豚場が4倍増したのか? 急に生産量が4倍になったのか? なぜ4倍なんだ? 単に吉野家と松屋となんらかのマジックナンバーに基づくオフセットを合わせただけなのか? と疑問を持った。

面倒だから、調べないけど。

中国の豚なのか、アメリカのホルモン豚なのか、月夜に飛び跳ねる豚なのか、どこから豚はやって来たんだろうか?

と謎が深まる529であった。

というわけで、某所で話題になったWebサービスクライアントを放置すると繋がらなくなる問題の独自調査結果と対応について

_ 先生じゃないほうの久野さん

ああ、先生のほうの久野さんといっても文脈によって2人いましたね。

ブロッケン山の妖魔―久野豊彦傑作選(久野 豊彦/嶋田 厚)

しかし、この方も先生なのです。

文字の組み合わせは自由なのだということを最初に(中学くらいのころか)教えてくれたわけです。辛うじて筑摩書房の現代日本文学全集の86巻の片隅に収まっていたボール紙の皇帝万歳を何度読んだことだか。これには収録されていないけど。

それから幾年月が流れ、自由な文字の組み合わせとは最も縁遠いところで好き勝手なことをしているうちに、誰かが同じように見つけたのでしょう。まとまった作品集が出ていました。それで本屋で見かけた瞬間に買っていました。しかし、工作舎か……まあ、そうなのか。サバト館(漢字がわからん)とかもう無いしな(追記:ナニゲなくリブロに行ったらバルテュスだのオーシュだのちゃんと出してるじゃないあ。というわけで無いというのは誤り、でもよく考えてみたら方向性が違うから変な言及だったな)。

というわけで、まあ、現実問題として読む価値は無いんだけど。いや本当のところ、適当にWebめくってりゃもっと面白いものは幾らでも見ることはできる。

途中でほとんど断筆状態になったのも理解できる。

たとえて言えば、赤塚不二夫のレッツラゴン(綴り忘れた)の最後のほうとか天才バカボンの最後のほうと同じで、瞬間芸の世界なのだ。辛うじて次の文を読む気になれるぎりぎりのところで無意味な文字を並べていくという無駄な努力で研ぎ澄まされた世界だから、生産性は低いし(書くのも、売るのも)、これは続かないだろうと思う。

しかし、この作品集を手にして初めて知ったことも幾つか有り、龍膽寺雄が書いているのだが

久野は文学者としてよりはむしろれっきとした経済学者で(後年は名古屋商科大学の教授として教鞭を振るうことになる――引用者注――しかし何を教えていたのかはわからないのであった)、昭和初期のマルクス全盛の時に、C・H・ダグラスの経済学に傾倒していた。経済はマルクスのように生産を基礎とすべきではなく、消費を基盤とすべきだと説くダグラシズムには、彼と同様私も賛成だった。

ちなみに昭和初期の人である(文学者としては)。

_ JBoss

社員、必死だな。という言葉は英語ではどう表現されるのだろうか。アストロターフィングというのは行為自体の名称(工作だな)だから、その行為そのものに対する揶揄という意味で。

スラド

自分尺八で首を折る。そんな中国の諺あるのか?

2chの場合、投稿者名が不要だから煽りは簡単だが、もし入力必須でしかもクッキーで投稿者名を保存する仕組みだと、ついうっかり煽り名で本人書き込みしてバレル危険があるということ。

_ ゲッタベースDI

こんな感じかな?
 interfface DataSourceDI {
    DataSource getDataSource();
 }
 ...
public abstract class Doa implements DataSourceDI {
     public void foo() throws Exception {
         DataSource ds = getDataSource();
         Connection c = ds.getConnection();
         try {
         ...
         } finally {
             c.close();
         }
     }
     // getDataSourceはアスペクトとして注入
}
 
単にJUnitでモックテストするには、TestCase内で実装クラス(追記:何のこっちゃ? 具象クラス化というのも変な気がするが)化してやれば良いのか?
public TestDoa extends TestCase {
    public void testFoo() throws Exception {
        Doa doa = new Doa() {
            public DataSource getDataSource() {
                return mockDataSource;
            }
        }
        doa.foo();
        assertTrue(mockConnection.validate());
    }
}
これだけだと別にそれほどメリットは無いように思える。むしろセッタベースより煩雑な気が。
それはそれとして、Seasarだと単にAopProxy使えば今すぐでも利用できるのかな。

2004-05-30

_ イブニング立ち読み

軍鶏の引き受け先は講談社か。

しかし、山奥での修行と経験後の坊主頭から、数年若返ったかのような絵柄になっているのはなぜだ?

ハッケーみたいな無敵技を持っているとダンサーに勝ち目が無いからちょっぴりリワインドすることにしたのか、それともムエタイやっつけたところから先を福助にしてパラレルワールドへシフトさせたのか。


2004-05-31

_ ついにエアコン

とりあえず除湿運行。

_ というか

よっしゃ、1年間とにかく休まなかったぞ。

***********終了**************










する必要もないか。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|

ジェズイットを見習え