トップ 最新 追記

日々の破片

著作一覧

2004-02-01

_ どうしてMyDoomが来るんだろう?

感染した人のMUAのアドレス帳を参照して送信者と受信者を作って送るって動作だったら、こっちの知り合い関係からしかメールは来ないはずだ。

ところが、見知らぬ外人からバカスカやって来る。

と言っても、公開してるyahooのほうだけ。

ってことは、僕に送ってきてる送信元(senderフィールドのことではない)ってのは、spam業者なのか?

案1)bookmark参照して手当たりしだいwgetのような動作をしてメールアドレスを収集して送りまくる

といっても、この場合、ASRやVectorやここをbookmarkしてなきゃありえないし、sender(文字通り。ようするに同じアドレス帳に乗ってる人か同じbookmark上の人のはず)の値を見ると到底、そんなことはなさそうだ。

案2)物を解析して動作を追って見る

閑だったらな。nimdaの時はおもしろいからやったけど、今は閑じゃないしなぁ。

案3)やっぱりspam業者

うむ、これは感染したらすさまじい破壊力だ。やっぱこのセンかな。

_ で、もしも仮定が正しければ

お願いでつから、砲撃した後、アドレス帳を削除して、ついでにマシンを起動不可にしとくように作成してください>作者殿。

いや、冗談でもそんなことを言ってはいけないのだが。


2004-02-02

_ 間に合わなかった

がっくし


2004-02-03

_ 終らない

今日も時間切れ。っていうか、Visioの動作が妙だ。

VBAをリセットしろって言われてもなぁ。

_ ネットの支持はファントム

騙されましたな

確か、加藤の乱の時、そんな結論は出てたんじゃなかったっけな?

敗軍の将はあまり他人のせいにはしてないか

1) だって、都市部と農村部では選挙行動が違うってのと同じに見えるもの。ネット=都会>>>>現実=田舎。

2) ネットはハレの場だから、いつものワタシと違うワタシ。

いつもは利権に群がるわたしですが、ネットではちょっとは国を憂えてみますかとか?

3) 単に、支持者がしょっちゅう見に来てアクセスカウンターが空回りしたんだろうとか。

日本とアメリカで国は違うが、同じようなもんだろう。金は集まったそうだが、その時点で ネット=小金持ち>>>>現実=貧乏 ?


2004-02-04

_ 一応終わり

送信した。

_ 節分(昨日やった)

なんか、豆を播いては拾って食べるのがおもしろいらしい。

一緒にやってみたが、良くわからないけど、数合わせとか普段やれないからとか、かな。ゲームのように感じられるらしい。

_ ふむ

想定外のアクセスの解釈次第で、TBCとかも不正アクセスの被害者ということになるのか?

「「CGIプログラム」の一部を書き換えて」というのを敷衍すれば、hrefの中身を書き換えてアクセスする(っていうか直撃ち)のは、「「HTMLプログラム」の一部を書き換えて」と十分に強弁できそうだ。

被害者は、賠償義務を負わなくなる?

それよりも、保険屋のビジネスチャンスだな。自己過失と犯罪被害では違うし。

_ 横向き親知らず

って意外といるんだな(しかも下だしな)。自分を入れて3人はいることになる。でもそのうち2人は抜歯済みか。

骨コ∩∩みたいになっているから、上には抜けない。結局歯医者は、2つに切断して切断した先端を外して空間をあけてから、つまみ出すという作戦に出たものの根の長さにあえなく玉砕。根の手前で切断、と都合2回も親知らずを輪切りにされました。その結果、今でも根は残っている。平気なのかは未来が決めるが、とりあえずは痛くはない。でも当日は地獄でしたな。


2004-02-05

_ ログイン時にCD入れろメッセージ

どうもその昔、なんかの事情で入れたPosix.exeあたりが、WindowsNTからWindows2000にアップデートしたとき、どこかにしっかり覚えられてしまったとしか思えない動作。dllcacheには入ってないからレジストリのどこかなんだろうが発見できず。

Interixをアンインストールし、Posix*とpsx*を削除し、再起動し、様子を見てみよう。

_ 見るも何も

再起動すれば、やっぱり入れろと言われるが、Administratorだと違うような。いろいろからんでるのは間違いないが、厄介だな。放置。

_ MDA

kdmsnrさんのBiki翻訳は素晴らしい。

いずれにしろ、生産財(合ってるか調べる気ない言葉)は工業化するに決まってるから(ふむ、でも乗り物が自動車になるまで4000年かかったとも言えるな)、プログラムが乗馬する人みたく貴族の特権的な遊戯になることは間違いないが、それがMDAによってできるのではないことはわかる。

まず、アプリケーションドメインの自動化が最初だろう。っていうか、すでに少しずつ出始めている。SAPのカスタマイズはまだ人手がいりそうだが。でも、それ以上はだめだな。すぐわかる例はデスクトップアプリケーションだ。WordをUMLで記述できるか? バグまで忠実に、とかつい嫌味を書いたり。

では、MDAはアプリケーションドメインについては記述できるか?

しかし、UMLで出来ることと優れたライブラリやフレームワークを用いて出来ることの違いが私には分かりません

ですな。今ある自動生成ツールの類は、あらかじめ使える部品をレポジトリに持っているからできているんだが。その部品はプログラムだ。ちなみに、部品が増えていくから、最終的にそのドメインについては自動化できるはずだ、となるのであった。

参照:フレームワークの進化。ちなみに、ここで「自動化」といっているのは、フレームワークのVisual Builder以降を指す。

OMGは、CORBAでもそうだが、実装を舐めているきらいがあるように見える。実装ってのはすげぇ大変なものなのだ。


2004-02-06

_ COM

2日前から、2か3年ぶりに仕事で、ちょろっとATLプログラミング。

バックグラウンドでポールしまくるオブジェクトからの通知を受けて、フロントエンドのアプリケーションにイベントを投げるActiveXコントロールだ。

これって、プロトコルの固まりなんだよね。特にIEで使う場合には。たとえば、

1. VBもIEもスレッド縛りがある(TLS使う)からアパートメントモデル。

2. VBもIEも、アプリケーションプログラマー(今回はおれだが)はデバッグのためにMsgBoxとかalertとか使う。使うとメッセージループに入る。

とりあえず、この2つについてのプロトコルは

1. バックグラウンドスレッドは、フロントエンドスレッド(コンテナアプリケーションと同一スレッド)に対してイベント通知の必要性を通知

2. 特にポールするやつだと、イベントのネストのイベントのネストのイベントのネストの……で、MsgBox300でスタックアンダーフローとか、IEのalert800個でハングとかになるのを防止するため、イベント通知中はネストしてイベントを出さないようにキューしておく

が重要。

1.のためには、次の2種類の方法を使う。

1. Windowメッセージ。フロントエンドスレッドはWindowを作成し、バックグラウンドスレッドはここに通知する。データは共有リストを使うか、WPARAM/LPARAMにヒープからアロケートしたメモリーブロックを嵌め込んで送る。(当然、スタックは使えない。SendMessageはネストするとハングするから、PostMessageを使うことになる)

2. COMにマーシャリングさせスレッド間通信。ただし、ポールする場合、待ち状態になる可能性があるので、基本的には使ってはだめ。おいらは好きだけど。スタック上の値を引数としてもマーシャリングされるから大丈夫だし。

なんてことを思い出しながら作るのであった。

で、こういうプロトコルを説明したのって見たこと無いけど(実装レベルでは)、みんなどうやってんのかな? とか。COMの仕様をMSDNから掘り出して読めばいいわけだが。

ちなみに、今日、宇野さんと話したがこういうことかな。

WithEvents X As EventPublisher

...

Set X = CreateObject("EventPublisher")

...

Public Sub X_SomeEvent()

Set X = Nothing

End Sub

これはすごくまずい。なぜなら、

public class EventPublisher : IDispatch {

...

public HRESULT Release() {

int n = --refcount;

if (n == 0) {

delete this;

}

return n;

}

void someMethod() {

...

Fire_SomeEvent();

... // ここに戻ると、thisが逝ってる!!!!

....(必要に応じて後処理) -> SEGV

}

};

極悪ですな。したがって、信頼できない相手にイベントを通知する場合には、

....

AddRef();

Fire_SomeEvent();

....(必要に応じて後処理)

Release();

// ここでthisが削除されているかもしれないからインスタンスを触ってはいけない

return S_OK;

}

というように防御が必要。

_ あー

ついにということにしたいのですねに毎日ではなってるよ。

逆にアドレスを偶然いじっていて、アクセスした場合は、不正アクセスだが「意図的」でない限り、同法に抵触しないとみられる。

意図的かどうかは取り調べでわかることだ。つまり、アドレスを偶然いじってアクセスした痕跡が見つかれば、十分に、別件逮捕の理由にできるってことですな(もちろん、別件がアドレスいじったことね)。

突然思い出したが、某都市銀行の大都市の支店長(当時)の息子に聞かされた言葉が印象に残ってるんだが、それは実感に合ってるからでもある。「親父いわく、朝日はインテリのつもりの人が読む。みんなはみんなが読むから読売新聞を読む。経営者や企業人は毎日と日経を読む。」-朝日は少し左で、読売は少し右、中道が必要な人は毎日という意味だそうだ。

なるほど、我慢して最後まで読むと

プログラムの数字の一部(引数)を若干替えてやってみても不正アクセス禁止法違反となるのなら大事になる。善意でぜい弱性を指摘することも減るかもしれない。

と、最初の意図を騙るための仮想人格(法律に詳しい関係者)とは異なり、実在するらしい固有名を持った人間に正論を語らせて、最後にIPAが届け出先をどうするかの調査を開始(っていうか、AISTとは違うからか)というふうに進む。

もちろん、企業人は多忙だから、縦読みできない長い記事は最初の数段落を読んで、すべてを理解するから、うまい書き方だ。ということにしたいことが非常に明白に語られている。これが中道だ(常にレトリックの手法を学び研鑚するのは重要だ)。

#ま、みなさん、自分に興味がある点にしか言及しないから、言及してない点

#がどのへんにあるかを見てると、スタンスが見えておもしろかったり。

#っていうか、書き手にとって自明なことを日記に書いてもしょうがないしな。

_ メモ

思い出した。新聞の読み方は中学で習った。見出し、リード、本文。本文の段落は、総論―背景説明―詳細と段落を分けて記述する。したがって、先頭の数段落を読めば、意図はわかる。

常識としてこの読み方を知っている人間をたぶらかす方法は、意図的に、このフレームワークを崩し、各論―背景―正論―総論と配置することだ。

_ ふしぎな人

イエスのジェラルド? 名前からぶっ飛んでるが。

不気味系子供の絵本画家なのかな?

Leftさんのとこで紹介されたblog経由。

でも、ワーナーでの仕事を見ると、マリスカルとかロドニーとかの一派(洋風ヘタウマ)みたくも感じるし。

_ コンテキスト補完

なんで毎朝、新聞を読むの? っておいらは、新聞を取らなくなってもう15年だが。最後にとってたのは読売だが。

それは、その日、一日を、気持ちよく過ごすため。朝1番の快を得るため。

だから、新聞は複数の会社が共存できる。

ちょっと右なら読売を読んで気持ちよく、結構右なら産経の正論読んで大きく頷き、もっと右なら朝日を読んで吠えて鬱屈を発散し、ちょっと左なら朝日を読んで気持ちよく、結構左なら赤旗読んで力づけられ、もっと左な人は日本には多分いない。宗教者は宗教する。そして中道な人は毎日を読んで納得する。日経を読んで株価を知る。


2004-02-07

_ みんながnobody

ふと思い出したが、みんながnobodyってのは今やさすがにないだろうが、この場合、nobodyがnobodyを見るのはどうなるんだろう。

_ 天国注射の昼

日比谷野音だったと思う。なんか思い出したものだけ書くと、

・巻上こういち:Liazrd!のニューキッズインザシティーを「おばあさん」に変えて弾き語り。あと、クラフトワークの電卓を延々とやってたような。

・タコ:たこですよーたこですよー(うむ、この歌から影響を受けてるな)

・コクシネル:1番、音楽としては好き。

あとは、まるっきり記憶から欠落。確かちゃんとMCがなかったから、わかるものしかわからなかったような気もするな。

ビデオが出てたようだが、それは買わなかった。

コクシネルは相当気に入って、△銀色フクスケのレコード買ったが紛失。闇のカーニバルの音楽を担当してるから、そのせんで聴くことが可能かも。ベルベットフォロアーな気がするのはバイオリン(ケールはヴィオラだけど多分、バイオリンだと思う)のせいかな。ちらちら舞い降りる……というのは詩は忘れたが口笛でなら吹けたり。

買うか

コクシネル(コクシネル)

っていうか、Amazonにもあるな。で、結局、発注。

追記:実際に口笛で吹いたら、ちらちら舞い降りる(題はわからない)じゃなくて、たくさんのなんちゃらのほうだった。途中でちゃんちゃんちゃちゃちゃちゃちゃらららっとなる部分が印象的。

_ MC

なんの略かわからなくて、あってるかどうか不安になって調べた。

master of ceremonies 司会の意味なのか。

MCハンマー:某所で見かけたストレステスト用アプリケーション。ハンマーはいいとしてなぜMC? と聞いたら、MCハマーにかけてたんですな。真似して、「マイクロハンマー俺が掟だ」っていうストレスツールを作ったが誰もわかってくれなかったり。

_ 紺色と空色

約1年もかかった本に表紙とISBNコードが振られているのを見ると感無量。

詳細はまだ工事中だ

_ 腑に落ちないこと

古いOracleといっても9iは少しも古くないはずだが、明示的なcloseしないとだだ漏れになるのは検証済みだ。プラットフォームによって違うのかと思ったがタイプ4は共通だろうし。って言うかタイプ2を使ってる場合の話なのかな? タイプ2は実測するとタイプ4と比較すると使いものにならない(1スレッドなら問題ないかも知れないが処理向上を完全に逆方向へ打ち消すほどのCPU負荷がかかってスループットが落ちるのなんのって)という結果が出たから使ってないしな。あるいはPooledDataSourceだとcloseは実際のcloseとは違うから、そのあたりかも知れない。

いずれにしろ、APIの記述で省略化となっているものを信用せず固く記述しておけば間違いはない。COMポートAPIのCBとか急に思い出したり(少なくても95とか)。


2004-02-08

_ ほぼ通用します

ほぼじゃない部分は、リモーティングやシリアライザーとかの微妙な部分でそのへんは元々触れてないので関係ないはずです。

とは言うものの(となんで自分の書いたものにわざわざ否定的なことを書くのか良くわからないが)想定しているターゲット=VB6やMFC(C++とは言わない)な業務プログラマに、リフレクションを備えたプログラミング言語(というよりは環境―CLR+.NET Frameworkかな)でのオブジェクトの考え方(==とequalsの違いとかcloneとか参照とかインターフェイスとか)や実装継承(これはVBer向け)なんかの考え方についての説明に半分を費やしているから食い足りないかもです。

あとそっちはWindows Form中心で、ASP.NET/ADO.NETはもう一冊のほうに回しているという点かな。

とは言うもののお買い上げいただけると嬉しいです。また、論理的におかしな点のご指摘をいただければとても幸せです。

_ 1.0→1.1

去年の8月に教えていただいて、忘れてたのがあった。

C#入門(初版)p.284 で

new Encoding(932)

としてコードページを得る例がありますが、 VS.NET 2003では

抽象クラスまたはインターフェイス 'System.Text.Encoding' の

インスタンスを作成できません。

というエラーになり、

Encoding.GetEncoding(932)

でコンパイルは通りました。

Encodingコンストラクタはprotectedになっていました(MSDN 2003年7月版)。

青木さん(@横浜氏や峰郎氏とは別のかた)のメールからの引用です。

#ベクターに置いてある正誤ページの修正が遅れている……

追記)実際には1.0にもpublicコンストラクターが無いので

・βの時にあったのを1.0でAPI仕様としては削除したが、呼び出しは可能としてあった

・単にβ→1.0修正時のこちらのチェック漏れ

のどっちか。

追記)ここに書いてもしょうがないじゃないか。というわけでベクターのページに追記。あおきさん、わざわざ教えてくだっさたのに反映が遅れてごめんなさい。いつもありがとうございます。

#8月はいろいろてんぱってたんだな、と一瞬振り返る。


2004-02-09

_ 教育の場

あるユーザーのシステム教育の現場に立ち会ったことがある。

で、当然のようにシステム部の人間が、これをこうやってこうやるとどうなるっていうような説明をして、集まった人間に教えるのだが、こいつ大したやつだな、と思ったのは、おそらく集まった人間の中に同期入社かなんだか、インフォーマルな関係を持つ人間が結構な数いて、その連中と休憩中とかに、インフォーマルに忌憚ないやり取りをしてたことだ。「で、この機能はすげー大変だったんだがどうよ?」「そりゃわかるけど、〜は確かに欲しかったんで嬉しいが〜はいまいち」「どうして?」「そりゃ〜な時は〜だろうが、〜な時は〜じゃん。で、〜な場合は……」「そういうことは先に教えろよな」「でもさ、やってみなきゃわかんないじゃん」「では、それは〜でいけそうだから、正規リリース時には変えておこう」とかいった具合。で、こっちの知識と比べて内容を咀嚼してみると、お互いにそのシステムの目的と利用価値はきちんとわかっているわけで、本来、そうあるべきだよな、と感じたのであった。つまり、ここでインフォーマルにやっている質疑応答と要求仕様の吸い上げは検討内容とそこで交わされている具体的検討のレベルから傍目にも重みがあった。

で、それと同時に、当然ながらフォーマルな質疑応答もやったり。で、そっちのエンドユーザー側からは当たり前な話しか出てこないし、システム側も当たり前な回答しか出てこない。フォーマルな発言権を持つ連中って上っ面しか見てないんですな。

インフォーマルセッションで出た要望を吸い上げるというのは外れれば危険な香りがぷんぷんしてくるのだが、結局はキーパーソンを抑えられるかがすべてで、たいてい、キーパーソンって忙しかったりするわけでフォーマルな場所には出てこなかったりするのが問題。また、全国組織だと地方にいるキーパーソンはなかなか発言の機会がなかったりするわけで、その意味で教育の場というのは幅広く人間を集められる機会だからそれを有効に利用するのはうまい方法だと思った。もちろん、完全に完成して絶対にこれ以上手をいれることは無いとなった時点でやったら後の祭りだろうが。

全体→部分という流れが本来のもののはずなのに、ある時点から部分→全体という逆転が起きることがある。それはシステムが成長したために、部分的に文化が生まれるからだ。しかし、文化の発生と成長の理由をわかっているまして形式化できる人間はそんなにはいないわけで、逆にそれを理解している人間を抑えておけば文化の再構築(部分を捨てて全体を再構築後)も可能だろうし、おそらくそのほうがきれいにやれるはずだ。


2004-02-10

_ 放出

ブックマークを整理して、追っかけるのを断念したものを少しここへ移動(その後、閑をみて裏庭へ)。

課題・仕様・設計―不幸なシステム開発を救うシンプルな法則(酒匂 寛)

VDMで思い出したがVDMを教えてくれたのは酒匂さんで、その酒匂さんの著作。紀ノ国屋で買おうかな、と思って立ち読みした感じでは良さそうだったのだが、さすがに今となっては遅きに失したかもと(だって最初に3年目くらいの人とかターゲットが書いてあるし)やめてしまった。って言うか、若手に読ませりゃいいのか。

_ ASP.NET開発者はMVCを意識するか?

StrutsでできることはASP.NETならもっとうまくできる

J2EE開発者を引き寄せるためのホワイトペーパー。きれいにまとまっていておもしろい。

2000 年の春、Bill Gates と Steve Ballmer の各氏が .NET を発表しているちょうどそのころ、Craig McClanahan 氏は Java プラットフォームをベースとする企業規模の Web アプリケーションのコードの複雑さを軽減する活動として、Struts プロジェクトに取り組み始めました。

こう書かれると、すごい大物に見えますな。

_ そろそろ夏だ、Tシャツだ(嘘)

ギークシャーツプロジェクト

FreeBSD vs Linux、過激だな。

feed the hungry, save the whales, free the mallocs 、惹かれるが。

NaN の青は、クレインか?

Sexual _Tux ……何も言う気にならん

Unix is sexy こっちはいいかも


2004-02-11

_ WordでWebページを自動印刷

require 'win32ole'

wd = WIN32OLE.new('Word.Application')

wd.Documents.Open('http://www.google.co.jp')

wd.PrintOut(false) #falseを入れないとバックグラウンド印刷になって厄介(quit時に警告)

wd.Documents.Close(false) #falseを入れないと厄介(だと思う―未確認)

wd.quit

Word2000と、Word XPで確認済み。

って言うか、へたなIEより、よっぽどきれいだったり。でもリンクをクリックした瞬間にIEがインプレースアクティベート起動されてしまうから、元の木阿弥のかどうも変だと思った(Wordは最小化)。

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

_ はら [ありゃまー、こんな事ができるなんて。]

_ arton [でも、www.ruby-lang.orgみたいにプリンタの横幅に納まらないと携帯電話のように縦並べになってしまう罠。..]


2004-02-12

_ Win32OLEでIEをフル活用するには

ASRではできるが素のRubyではできないと言う理由はWin32OLEが、RubyのObjectを変換できないからだ。
実際、引数としてIDispatch*を取るメソッドなんてちょっと考えにくい。と言うのは、そのためにはコネクションポイントがあるからだ。
とは言うものの、IEのイベント登録メソッドのように例外的なメソッドもあるのだから、ASRだけではなくWin32OLE自身も返せるほうが良いのではないか、と考えた。
追記:良く考えたらWIN32OLE_EVENTと共通化できる部分があるのでリファクタリング中(元のパッチは削除)
微妙に共通化できなかった。ここ
Ruby内での例外の処理とかはしていないが、これでOK。
例)
require 'win32ole'
class EventReceiver
  def method_missing(*arg)
    puts arg[1].srcElement.tagName + ' was clicked'
    if arg[1].srcElement.tagName == 'H1'
      exit
    end
  end
end
ie = WIN32OLE.new('InternetExplorer.Application')
ie.visible = true
ie.Navigate(ARGV[0])
sleep 1 while ie.readystate != 4
doc = ie.Document
doc.attachEvent('onclick', EventReceiver.new())
begin
  loop do
    WIN32OLE_EVENT.message_loop
  end
ensure
  ie.quit
end
試して見る。
C:\Home\arton\test>ruby ie2.rb http://www.ruby-lang.org
P was clicked
H2 was clicked
H3 was clicked
IMG was clicked
H1 was clicked
バイナリーはここ。ASRなどのMSWin32-VC++6 ならそのまま入れられる。
追記:処理が甘いので、なんでもmethod_missingになる上にarg[0]が異常値になるな……
追記の追記:この問題は解消させて、無名メソッド呼び出しは'call'というメソッドに割り当て(ASRと同じ)。したがって、例は以下のように変更可能。
require 'win32ole'
class EventReceiver
  def call(arg)
    puts arg.srcElement.tagName + ' was clicked'
    if arg.srcElement.tagName == 'H1'
      exit
    end
  end
end

さらに追記:ALLOC*で確保したブロックにVALUEを格納するとGC対象になっちゃうんだっけ? そのあたりは非常に自信なし。できれば、スクリプト側で対応して欲しかったり。
例)
doc = ie.Document
doc.attachEvent('onclick', EventReceiver.new())
↓
doc = ie.Document
$handler = EventReceiver.new()
doc.attachEvent('onclick', $handler)
さらに追記: 中田さんの指摘以後のスレッドで修正が入りました。やっぱり、gcの考慮がだめだったか。

_ 用語を構成する単語の一部

ソーシャルネットワーキングと来ると「ソーシャル」に反応してしまうし、「デペンデンシインジェクション」と来ると「インジェクション」に反応してしまう。

どうも、最初に出会った言葉のイメージが強いらしい。

_ どうもありがとうございます

というかそれまでがひどすぎ?

アンビバレンツとして、「おお、なんてすっきりしたんだ! もうCOMいらねー」というMSウォッチャーの感慨と、「ちぇ、コモディティになっちゃったよ。次の分野をハックしなきゃな」という職業プログラマの感慨が入り混じったり。

その他に、Javaと比較した場合の1番の長所は、まったく高踏的じゃない点というか、これっぽっちもアカデミズム臭を感じさせない点で、逆にJ2EEな人(ノットイコール プログラマ)にはそれが気持ち悪く見えるのではないかとか、その間隙を補うために、ASP.NETはMVCですよのようなホワイトペーパーを用意したりとか、実にいろいろなことをやっているのが興味深いです。

反高踏的なことはもしかしたら重要なことかも知れず。もちろんそれはVBの成功体験に基づく今となってはダメダメなものかも知れないし、やはり今でも有効なことかも知れません。アップルのレスト オブ アスと結局は同じ戦略だと思います。

すなわち、無数のVBプログラマーとそれに見合った設計者達にとっては、パターンもアーキテクチャも分析も何もなく、ただ突進するのみだったりすると仮定すれば、きちんとした戦略を持ってことにあたることは「学者ウゼー」なのではないでしょうか?

マーケティング的にはダブルスタンダードな気がします。片方にはホワイトペーパー群があり、片方には簡単楽勝超便利がある。

これが単なるダブルスタンダードなら斬って棄てればいいだけなんですが、マーケティングピープルではなくデベロッパー(この場合は)テクニカルライターと呼ばれる立場には、ダブルバインドになってしまい、極めて微妙な感じです。しかもメタメッセージが簡単楽勝超便利ならまったく問題ないわけ(と思う)なのにメタメッセージがそれなりにかっちりしたモデルなのがややこしいところ。メッセージだけ素直に取ると痛い目に合うのは例によって見えているけどかといってメタメッセージをどこまで出して良いかが難しい。

ダブルバインドへの処方箋のうち、もっとも簡単なことは逃げることだったりするので、今はJavaで安心というのが微妙にあったりするのかも。後付けだけど。

この文章のわけわからなさが、.NETに対するダブルバインド状況そのものですな。

#好きなんだけどね。文句なく。うん、.NET好きだな。

_ 昨日のこと

羽生さんの宴会に行った。

WEB+DB PRESSから仕事を頂いたときに見本としてもらった11号に羽生さんのRDBについての記事があって、そのときからすげぇ人だな、と思っていたからだ。この記事で1番興味深いのは過去のRDB(というよりSQL)の歴史的インパクトについて語っている部分が、微妙に現在のMDA(というよりVisual Framework)に重なっている部分なのだが、それはおいておいてもWEB+DB PRESSの想定読者層に対して良い視点を与えると考えられる点が多々あったからだ。ようするに、問題の立て方とその記述方法、その基礎となる知識のバランスがとてもよく取れていると感じたということだな。

実際にどんな仕事をされているかは、日経IT Proとかにも出ていたりするが、しかし「無償」ってのはもしかしたらバズワードなんじゃないか? 実際に無償のものなんて愛くらいしかないだろうって、それも怪しいが、この反応は記事の見出しについてだ、と誤解を受けるといやなので断ってはおく。

で、それはそれとして、妙にたくさん集まったので、もっぱらひがさん高井さんからIoCについて話を聴く(話すじゃなくて「聴く」なのは、文字通り、ここではじめて得た知識のほうが多いからだ)。

しかし、本当に喫煙者は少ないな。

_ ちょっと待った

POJOの読みとしてポホは間違いとして取り下げます。

が、ちゃんと調べたので自信を持って「ポヨ」を推すことにします。

ポヨちゃん万歳。

_ 執筆記事目録

も作ってみた。

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

_ babie [RubyやSchemeに出会った時のような感動がありません>.NET(C#)。それなりに楽だし、好きなんですが。]

_ arton [なるほど、「その感動させない点こそMSの戦略なのだ」と言い換えることもできそうだと思いました。 ちなみにILの仕様を..]

_ uno [昨日はありがとうございました。ポヨ(スパニッシュ) vs ポジョ(イタリアン)だと使用人口で考えてポヨの方が分が良さ..]


2004-02-13

_ COM

って言うか、やっぱりCOMは好きだな。

バッドノウハウを愛でるのは、その蓄積が残念なことに自分を形成する一部になってるからかも。っていうか、バッドノウハウと言わずにプロトコルと言っておこう。

たとえば、TCP/IPな恋愛とUDP/IPな恋愛とIGMPな恋愛とか?

IGMPか……

_ へー

Miguel de Icazaは日本での知名度はかなり低く、17.9%である。知名度が低いといっても5位だけど確かに低いのかな。

インターフェイス指向、言語透過指向とかいろいろおもしろいのでこんなのでもリンクしておくか。

ECMA標準の利用。Monoの開発動機とかについて語っている。

_ Win32OLEパッチ(続)

中田さんと青木さんの意見を取り入れた最終版。どうもありがとうございました。

MSWin32 VC++6バイナリー

参考:ruby-list:39141の対応版

追記:10:30より前のパッチとバイナリーは削除時に問題あります。もし、それより前にgetされた方は取り直してください。すみません。

#make時にコンパイルエラーになったのでチェックしたんだけど節穴になってたらしい。

_ new禁止

うん? よく考えたらおいらのことなのかな?

確かにString s = new String("いつだって同じ文字列");

とか禁止したが。

確かにnew Boolean(true);じゃなくてBoolean.valueOf(true);使えと強要した覚えもあるが。

_ Object.GetHashCode

もうとっくに解決済みかも知れないけれど、.NETのオブジェクトのIDに何を使うか?の答えはObject.GetHashCode()だと思う。

根拠:

GetHashCode は、オブジェクトのどのインスタンスに対しても、常に同じ値を返す必要があります。 Object の派生クラスが値の等価を参照の等価として定義しており、値型以外の型である場合に限り、 GetHashCode は Object.GetHashCode 実装に処理を代行させることができます。

GetHashCode()には

GetHashCode の既定の実装では、一意性や一貫性は保証されません。したがって、ハッシュ用の一意オブジェクト識別子として使用しないでください。

という説明もありますが、一意性が保証されないのは、GCによって回収されたスロット(sscliでは同期処理用のインデックス。おそらく本物の.NETでも同様な同期処理用インデックスが必要なため同等と考えられる)に異なるインスタンスが格納される可能性があるからだと考えられます。しかし生存しているオブジェクト間に重複は論理的にありえないです。

なぜならそうでなければ、参照等価検査が正しく行われないことになり最初の引用が間違いということになってしまいます。

もちろん、以上のことは参照型だけに当てはまります。

ちなみに、sscliの実装は(Monoの開発に参加する気なら見ちゃだめですな)

[MethodImplAttribute(MethodImplOptions.InternalCall)]

public extern virtual int GetHashCode();

FCIMPL1(INT32, ObjectNative::GetHashCode, Object* objRef) {

..snip...

DWORD idx = objRef->GetSyncBlockIndex();

_ASSERTE(idx != 0);

..snip...

return idx;

}

FCIMPLEND

となっている。

追記:っていうかこれだけじゃだめで、

ulong id = (ulong)(o.GetType().GetHashCode() << 32 | o.GetHashCode());

としなければ、異なるクラスに属していたらアウト(かどうかまでは未調査)。

_ プラットか

COM+とWindows 2000

こいつが相変わらずパフォーマンスのことを書けるのは、まさにインテルとMSが処理速度を向上させているからだな。

まあ、1〜3は良い。というか1.は非常に良い。問題は4.だ。どうしてこうなるんだろう?

目的のSTAスレッドは,ほかの要求の処理のためにビジー状態になっていたり,ブロックされていたりする場合がある。この場合,クライアントと,要求を受け取ったスレッドは,そのスレッドを待っていなければならない。100個のスレッド,50個のCPUがあったとしても,たった1つのスレッドが使えるようになるまで待ち続けなければならないのである。

ユースケースの誤解はともかく、これは正しい。そこでプラットはMTAかNTAを使えと説教を垂れる。それはうまくやればそんなに間違いではない。しかし、

MTA,NAに住むオブジェクトは,Figure 7のようにCOM+カタログにエントリを作成することによって,同期サービスを必要とすることを宣言できる。こうすると,COM+は,サーバサイドのチャネルとスタブの間にポリシーオブジェクトを挿入する。このポリシーオブジェクトはミューテックスを使い,指定されたオブジェクトのメソッドにアクセスできるスレッドを1つだけに制限し,再入を適切に処理する。

はぁ?

100個のスレッド,50個のCPUがあったとしても,たった1つのスレッドが使えるようになるまで待ち続けなければならないのである。

だからSTA使うなと抜かした口はこの口か?

追記:そうか。COM+コンポーネントが100個くらいゲッタ/セッタを持ち、それを呼び出すというシナリオならばわからんでも無いかも。それならば同期不要なメソッドもたくさんあるかも知れない。でも普通はファサードを作るだろうし、最悪でもビジネスメソッドの外部公開にするよな。どうも、分散しているっていう意識が無いのだろうか?

#実は、そう単純ではない。再入の問題はびっくりするほどおもしろい。しかしプラットはそれについてはわかっていないのではないか?

ではどうするべきか? というと実はそのオブジェクトをどう使うかによって全然取るべき戦術が異なるんですな。でも基本は、Both + FreeThreadMarshalerでしょう。

追記:ふむNeutralを宣言するとGITへの登録が不要なのかな? それならNeutralのほうが良さそうだ。とは言うものの目に見えないオーバーヘッドはわからんし、ここでの話題はクリティカルなパフォーマンスチューニングの話なんだからMS謹製の枯れていない仕掛けに頼るデメリットはあるな。

5.以降はそんなに変じゃなさそうだ。しかし、4.についてこちらが見たのと同じような「はぁ」をそちらのジャンルの人が持つ可能性もあるだろうな。

実際問題としてプラットはコンポーネントやサービスを開発しているわけではなく、いわゆるソリューション屋さんだろう。そこが問題で、全然わかっていないのだと思われる。

アパートメントの実装を意識するのはコンテナだ。これはWindowsアプリケーションを開発する場合には重要なんだが、Windowを持てば否応なくSTAを利用することになる。現実として本当に意識する/しなければならないのは、IISのサブプロセスやスレッド(ISAPI DLLなど)あるいは、COM+コンテナやMTSコンテナの開発者ということになる。これは、ASPやASP.NETのアプリケーション開発者にとっては無関係(自分でどうこうできないこと。だってコンテナの中で動くコンポーネントを作るわけだから)なことだ。

アパートメントでの利用を意識するのはコンポーネント開発者だ。STA,MTA,Both,Both/FTM,Neutralのどのタイプで実装するかの決定権を持つ。

ビジネスロジックをアプリケーションコンポーネントとして開発する可能性はある。その場合、VB6ならば、これは否応なくSTAとなる。他の実装方法は無い。

.NETではじめてそれなりの自由度を持てる。っていうか、そのあたりをちゃんと調べてないな。ふむ。ASP.NETの場合はおいておこう。

ちなみにとりあえず、1番良いのは、STAで流すことなんだけどね。スレッディングをいじってどうにかしようというのは、最後の最後でしょう。しかも大体、不要。

追記:.NET Enterprise Services and COM+ 1.5 Architectureを後で読む。

COM Threading and Application Architecture in COM+ Applicationsを軽く読み返したがCOM+でのBoth/FTMの問題は大きそうだな。もう一度ちゃんと読んでおこう。


2004-02-14

_ マイクロソフトのソース流出

ふーん。

3ヶ月くらいすると、サポートセンターに「勝手にメールを中継するんですが仕様ですか?」とか「3日おきに青い画面が出るんですが仕様ですか?」とか「いつの間にかC:?Documents and Settings?hello world」というディレクトリができて、いっぱいファイルが入っているんですが仕様ですか?」といった問い合わせが殺到したり。

と、期限切れ問題を思い出したり。で、結局、あれに引っ掛かった人達は単なる違法コピー厨ってことでFAなのかなぁ?

でも、IEっていうかurlmonのソースは見たいな。

_ バグは遍在する

誰1人として、WindowsのモノマネOSが生まれたりすることは考えないし(まあ、ビジネス的に無理がありそうだし)、急にサンバとかDCOM BridgeとかがかっちりMS仕様に追随するようになったりとかを心配する人はいないし、と思ったけど「むしろ知的財産権の面で問題となるだろう」と語る人もいたな、でも、みんなが心配しているのは、そこら中に

char buff[64]; // hey blobber come on here!

strcpy(buff, input_data);

みたいなのが転がってることだからなぁ。

でも、それよりも、本当に興味があるのは、アメリカのさ、国家保安局だっけな? 用のサービスルーチンが本当にあるかどうかだな。というわけで、CAPIのソースが流出してたら、各国の諜報機関は今頃ソースを研究してますな。

あー、でもブッシュだもんな。もし流出してたら今頃ルートサーバーを海兵隊が占拠して破壊しているわけだから、それは無いか。

つーか、待てよ。CAPIのソースとかに秘密キーを丸埋めしてたりしないだろうな? winlogonのソース見たら

BYTE secret_key[256] = { 0x48, 0x41, 0x48, 0x41 ... };

とか書いてあったり(もちろん、そんな逆アセンブルでわかるような生なものは無いだろうが)。あとはハッシュはちゃんとしたものを使ってるかとか。

#追記:与太に自分で突っ込み。シェアドソースからの流出なんだからそんなものが混じってるはずないだろ。

_ コクシネル届いた

コクシネル(コクシネル)

iTunesに読ませたら「通称福助+9」っていうタイトルで出てきたけど、なかなか洒落の効いたやつが登録してくれたらしい(うん、実にネットワークだ)。

あれ? でもこれ本当に銀色△と同じなのかな? 「1分間」が違うような気がする。もっと歌っぽかったような。

ちらちら

飛び立つ

悲しみの

円柱は

美しき

あこがれの

外を向けて

聳え立つ

という北園カッツェみたいな詩には覚えがあるけど(っていうか北園カッツェより好きだけど)。でも、「道の終わり」や「壁」(これが口笛で吹けるやつ)は同一に思える。脳内再生を繰り返すうちにエッジが落ちて歌っぽくなっちゃったのかな。

そういやACBとかあったなぁ。

COCKC'NELL <LIVE IN TOKYO 2004>か。吉祥寺ねぇ……っていうか、どんな客層になるんだ?

_ 続き

「ススメ」って、最初に痙攣するギターが出てくるんだけど、どうも似たようなコントーションズの曲があって(というかリジーメルシエデクルーとかもそうだからノーウェーブスタイルというか)、野方攝のボーカルが出てくるまでなんとなく居心地が悪い。

もしからしたら、シーナアンドロケッツの双子なのかな? 音の指向性は全然違うけど。

_ マラクシャゲ

ワラタ

追記:なんか見た記憶が出てきたが、きたさんのところ経由かな?

_ 電卓

もしもスピーカーが付いてなければ普通に使えるかも

っていうか、7は、give it to me babyかな?

_ メモ

AppleWorksのワープロで「」を3組連続して入力して変換キー(スペース)を押すと永遠の虹色風車回りに陥る。

既知かどうか調べる予定。(子供に使わせてたらそうなった×3)

追記:AppleWorksは関係なく、TextEditorでも再現する。ってことはことえりってのかな? 最小再現パターンは、「」「」まで入力して変換(「」「 は試してないや)。

#しかし、最後に操作したことを覚えているとは感心感心。バグ報告者はそうあって欲しいもんだ。とか。

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

Before...

_ arton [チャレンジかなぁ? 残念ながらついていけてない……]

_ なひ [CAPIってなんか他と毛色違うなぁと。]

_ arton [あ、そっちですか。nsshって続くのかと。]


2004-02-15

_ とりあえず第1陣

ASP.NET本の修正で1番重いのを掲示

というか、前のページの記述が矛盾の原因なので、手を入れた。1時間ほど妙なものを晒したことになるな。

_ 一分間

ちらちら

飛び出す

ではなく

ちらちら

言い出す

ちらちら

問い出す

のような気がしてきたぞ。

追記:元々「飛び立つ」と聞いていたのが、「び」が「い」に聴こえ始めたのでついでに「つ」を「す」に勝手に補正してしまったようだ。実際には、「といたつ」と聞こえるというのが正解。

_ Nyx物語

保存してる人はいるんだな。

結局、スパイダーはクロールロボットのことになっちゃったしなぁ。

とりあえずまだ生きてるけどね……

っていうか、2ch発の性善説もいろいろあるみたいだしなぁ。

とは言うものの、今はLinuxでもFreeBSDでも手元で持てるわけだし歴史的な考えになるのかなぁ。

_ ぐさっ

データがとりあえずやりとりできれば、プロトコル設計がタコでも構わないと思う人はいないだろうけど。

肝に銘じておこう

#フィルターを重ねると処理が重くなるから、フィルターが不要なようにプロトコルを設計するという考え方もできるな。

_ 暇つぶし

ActiveState社はSophos社に買収されました、なんてことまで修正(次版が出るとは思えないからタダの著者の義務感)していて嫌になったもんで徘徊。

で、辛口性格診断とかやってみたり。

【あなたはこんな人】

じゃ〜ん、あなたは「この世は私のためにある」タイプです。判断基準は「あくまでも自分」。何よりも楽しく遊んで過ごしたいという気持ちが強く、活発で好奇心も強いので、とても魅力的な人に見られます。実際、遊びに対する鋭いセンスを持っている人気者で、常に多くの人に囲まれています。また、どうしようもないくらいマイペースなあなたは「他人は他人、自分は自分」と考えて、周囲とぶつかり合ったり、ごたごたした関係になるのを面倒臭がって、避ける傾向があります。ふだんの生活もゲーム感覚で楽しむ反面、現実をしっかり見ている現実主義者です。組織の中にいても、地位や名誉といったものには興味を示さず、のんびりしている方です。ほとんどストレスをためないナイスなキャラクターです。一見シビアなあなたですが、感情的なところもあり、人一倍寂しがり屋で、自分を理解してくれる人を必要としています。思いこみの激しい面もあるので、改めて周りの人にも関心を向けることで新しい発見、充実した人間関係が生まれるでしょう。

っていうか矛盾してないか? 「大人の自我状態」と「自由な子供の自我状態」が突出しているってのが変なんだが。

がーん、「窪塚洋介」ですか?

Tu es vraiment degueulasse...


2004-02-16

_ ステファンの6つ子

TKO NIGHT LIGHT(パンタ&ハル)

Naked IIとかプラハプラス(元シングルB面)でも聴いていたが、HAL時代のCDがまだ入手できるとは知らなかった。というわけでクリック。

X線を捉えた写真(でいいのかな?)

見た目の位置の5つ子と実際の位置の5つ子で結局6つ子であってたり(別に詩人の透徹した視線が真実を言い当てたというようなことではなく、寧ろ本当に6つ子だと行き場所がなくなって困る)。

それにしても宇宙はきれいだな。

_ ASP.NET 1.1

デフォルト安全側の記述追加。

今日はとりあえずここまで。

というか、よくよく考えたらP.362はまずい(でも本当はこれを「まずい」と感じるのは「開発者」サイドのオレには苦痛だが)。ASCIIに連絡。


2004-02-17

_ 規模と独自性

でっかな会社は社員もたくさんいるから、仕事を多くしなければならない。

小さな会社は社員も少ないから、余分な仕事をしている余裕はない。

でっかな会社は社員(関連させてるところも含めて)を大量動員できるから規模がでっかな仕事を請け負う。

小さな会社は小回り勝負をかけたり、お得意さんを発掘したりして、規模にあった仕事を請け負う。

EJBはコンテナのライセンスとか考えたら大きな金額が動かなければ使えないし、大きな金額を動かすところはそれほどオープンソースライセンスに魅力を感じないようだし、請け負う側も社員も多いから買うくらいなら作ってしまえとなったりして。そうすりゃ次の客のところでも使いまわせるね、とか算盤もはじける。それほどEJBの出る幕はない。

小さな会社は小回りをきかせるから、高いライセンス料が必要なコンテナを使うよりも、もっと気が利いたものを見つけてきてやってのけたり。気の利いたやつは同じような気分があるから、さらに先を行く方法論を試してみたりしてみたり。やっぱりEJBが出る幕はない。

とか、なんとなく思ってみたりしてみたり。

_ 見本誌届いた

cbook24は早いな


2004-02-18

_ モック勝手に翻訳

約束してた件

とりあえずまずは全体の1/5くらいだ、ぜえぜえ。kdmsnrさんはすげえや。

_ 揺れる文体

ふむ、出だしはいわゆる乱暴調で始めたんだが(そしてそれを続けるつもりだったんだが)、途中から、ねさよ調になっちゃったな。

_ どちらもできたてのほやほやらしい

猪俣さんのBlog

Refereが一瞬(今は検索に押しやられてしまった)見えたので発見。

しかし、ActiveScriptをOFFにしたIEではまったく読めないという罠。

でNetscape7.1を使って知ったリンク、これをPAGと呼ぶのかな?

で、猪俣さんのBlogに戻ると

オブジェクト指向的でなかったりする(DataSetとか)

なんて記述があるADO.NETだけど、ファウラーがわざわざDomainモデルとは別立てにして、Tableモジュールというパターンにしているのは興味深い。

直観的なVisual C#/VB.NETなADO.NETプログラマーであれば、サーバーコントロールのイベント内からADO.NETを使ったトランザクションスクリプトを記述するわけだが、それで十分にさまになるのは、DataSetが複数のテーブルのリレーションを持てるからなのだろう。究極のネットワーク型ということだ。

_ フリーライダーは生暖かく忍び寄り背後から息を吹きかける

静的なブックマークは使うが、それよりも、アンテナのほうが確実なわけでRubyのLink Availableにはお世話になった。

で、こうやってページを作ってはじめてわかったことがいくつかあって(ごく最初の頃にも書いた覚えがある)、それはアンテナってのもそれなりにコミュニケーションツールになるんだなということだ。

が、その時には、そのツールとしての意味のうち(文字通り)属人的な部分に気付かず、おおなんて便利なんだと、他人が作ったアンテナ経由でいろいろWeb巡りを開始したのであった。で、こういったことはクセになるから、未だに自分のアンテナを持たずに他人アンテナに乗って巡るのであった。で、アンテナフリーというわけで、フリーライダーなんだが。

で、そのアンテナがRuby hotlinksのように明確にコミュニティ指向のものならそこに乗っかっていくことには問題はありえないのだろうが、個人アンテナに乗っかるのはもしかして違うのではないか、と気付き始めてしばらくたつが、未だにそのまんまなのは性からの無精によるものなのでそれはおいておいて、以下に考察。

ただ、単に自意識の肥大化を示すことになりそうなので、あんまり書いてもしょうがないかも知れないとは自戒しながら。

・たとえば、毎日、a.hatena.ne.jp/artonっていうアンテナから参照されていると、当然、しばらくして気付く。

・でまあ、d.hatena.ne.jp/artonを見に行ってみたり(いかん、URLの類推による書き換えですか)。

・こうやってなんとなく薄いコミュニケーションってのは生まれるわけで、すると、たとえば最近、a.hatena.ne.jp/artonが来てないけど、元気かなとか(さすがにそこまで親身には感じないが、なんかおもしろいもの見つけたのかなおれも知りたいな、とか、仕事が忙しいのかなとか、あるいは、なんか不愉快になるツボを押したのかなしょうがないけどなんかスマンカッタとか、あるいはどうも嗜好が違うようでじゃあまたねーとか)思うようになってきたり。

というように、たかだかアンテナからの参照があるとそれでも何かしら心に残るものはあるわけで、それを、「おお、こいつのアンテナは便利じゃーん」とフリーライドすれば、訪問された側は、

・なぜ、a.hatena.ne.jp/arton(とか例で書いてるが、実際にいたら面倒だな)から毎日2回アクセスがあるんだ?

とは思わないまでも(実感として)、少なくても、これだけアンテナを使う人間がいる以上、薄気味が悪い(ナマアタタカイと表現すべきか?)ヲチャとなってしまうのは否めないよな。

アンテナはつまるところ、ツッコミやトラックバックほどナマなというか表明的なコミュニケーションじゃなくて、単に「見てますよー」程度なものなわけだが、それでもやはりあればそれなりに楽しいわけだ。なぜなら属人性があるからだ(ところでこの属人性の使い方はあっているのかいな)。だから、フリーライダーはそのコンテキストを踏みにじって背後霊のように覗きにくるわけで、あんまり誉められたもんじゃないかも知れない。せめてD&Dを使うとかして乗っかったアンテナをRefereとして残さないようにしたほうが良いかも。

トゥルー(スパンダー・バレエ)

Communication always leaves in incomplete

the grass is greener,but it's grown beneath my feet

コミュニケーションはいつだって僕らの仲を曖昧なままにしておく

草は青々してるけど、踏みにじられて育っているのさ

Spandau Ballet(ともっともらしく無関係な引用をしたり)


2004-02-19

_ これは……

J2EEプログラミング講座(るいも, 宇野)

出版社/著者からの内容紹介

エンタープライズアプリケーションを構築するためのアーキティチャとして、J2EEが注目されています。

「アーキティチャ」というのも恥ずかしいが、これを「アーキテクチャ」としてもすごく恥ずかしいぞ。せいぜい「プラットフォーム」だろう。というか、序文では「開発基盤」という言葉を使ったが(いや、「実行基盤」だろうというのはわかるけど、それはコンテキストの問題で、プラットフォームと呼ぶのがやっぱり正しいだろうが)、どっからこんな言葉がでてきたんだか。

というわけで、Amazonに「修正する」を送ったが、Amazonはおいらが著者だなんて多分知るわけないから、もしかしたらデンパさんですか? でそのままにされたり。しくしく。

追記:よく見たらASCIIの紹介文がそうなってるんだ。気づかなかった……


2004-02-20

_ MockObjects

JDBCアプリケーションをテストファーストで開発するの勝手翻訳、完了。

まあ、それほど異論はないな(モックそのものには元々異論はないし)。しかし、ヘルパオブジェクトが後半になって大した説明抜きに出てくるのに、結構ラフな書き方なので、コードそのものも見ないとわかりにくい感じがする。

_ IISでCGI

80%くらい仕事でRuby on Windows with IIS(!= ASP)したのでメモ。

CreateProcessAsUserの設定

Pythonの設定だが同じことだ。%s %sが重要。

80004005……たくさんある。

C2セキュリティ構成はしてないんだけどな。これがくさい。

これらを全部適用したが、それでも80004005になる。

でもWindows認証を使うと成功するってことは、カレントデスクトップユーザーでなきゃできない何かを触っているのかな、っていうか、データソースってどこにあるんだろう。

今見たら、

ASP エラー 80004005 。レジストリの読み取り権限。

こっちかも。っていうか、こっちだな。でも、HKLM\Software\ODBCから下全部に読み取り権限を付与したと思うんだが。

追記:ばかですな。ユーザーDSNに登録してるじゃん。

_ 10代の性

ささださんのとこから。

TDDって10代のセックスそっくりだよね。みんなそれについて話すけど実際にやってる連中は一握り。しかもやってるやつらはへたっぴぃ

追記:切り口はおもしろいが、内容はいたって当たり前。

だめだめモックテスト!

追記:ここで話題になっているActionってのがなんだか知らない(Spring FX?)のでなんとも言えないんだが、「IoCマンセーなんて結論はだめだよ、まあもちつけ、テンプレートメソッドモックも悪かない」とコメントしているScottのほうがinかな。

スティーブフリーマン

一応、断っておくか。

_ 猪俣さんの引越し先

このフットステップ(フットワークと迷っているが、フットステップで良いような気がしてきた。「足取り」はフットステップ。カタカナで書くのはaioiではなく、ッッのリズム。だからフットワークだとそのリズムが失われる)の軽やかさは、僕には無いものだな。すばらしい。

スクリプトオフにしてるヤツが悪いと言う考え方だってあるわけだが、それをとらないでさっさと移動するということは、すでに情報を発信するということに対するコミットメントがあるわけで、文句なくプロフェッショナルだ。

#なんか偉そうな書き方だが、追従を言うわけではないのでこれでよいのだ。


2004-02-21

_ 自由人から返事来た

Cryingじゃないがフリーマン(本当にありえる名前なんだな)によれば、「おいらの初の翻訳ものだ」っていうのはどうでも良いが、「もうJDKのモック実装には興味がないんだ。だって、今ロンドンは燃えてるぜ」(嘘訳)つまり

We're pushing more on the design effects of using mock

objects, which implies mocking one's own types.

とか。で、昨日リンクを貼ったAslak(PicoContainerの開発者の1人)のBlogでの対話とかになるのかな。と考える。

それは結構なことだが、この時点でいろいろ推測すると、TDDをデザイン側に倒すと、オブジェクトネットワークの端点よりも結合点(ノード)こそ、TDDが必要と考えることができる。というのは、端点についてはそれ以上のデザイン上の変化はあまり考えられないからだ(とはいうものの、どこまで持っていけば端点になるのかはまた別の問題)。

このようにデザイン側へ舵を切れば、JDKのモック実装はあまり重要ではなく(というのは、そちらとインターフェイスするのは端点のオブジェクトだから)、重要なのはノードのデザインということになる。ここで端点側の実装にモックを適用する(であれば、EasyMockのような自前POJO用(追記:OK。声に出せばわかるがポヨヨウとは言いにくいしわかりにくい。ポジョヨウですな)動的プロクシはもうあるわけだから)のは自明だから、むしろいかにTDD時のモックと実運用時の本物とを区別なく扱うことができるかという依存関係の解消の方向へ興味が向かうのは正しそうだ。

ってことかな、と考えながらそれはおもしろそうですな、と返事を書いたり。

追記:僕の見解になるが、それはそうだろうが、端点のオブジェクトのテストも必要だし、全然、MockObjectsの価値が低くなるわけじゃない。とは言えなんでもMockをそろえれば良いというわけではないというのは正しいな、程度。切実ではあるような気はするが、オブジェクトネットワークよりもっと粗粒度なオブジェクトネットワーク(ここでオブジェクトと言わずにサービスと呼べば有名な3文字言葉になる)のほうがむしろ関心空間だったり。

_ UFO

Left-Labelから。ライドンインタビューっていうか、TVショーのページを見ると最近のライドンはますますビートたけしみたいな感じだな。

でもそれはそれとして、UFOについて聞かれて

南米を征服したスペイン人がさ、「わからないように巧妙に・・」なんてそんなこと気にしたと思うかい?しないよ。だったら、俺たちよりも遥かにパワフルな奴らだって、それと違わないはずだろう?

っていうのは言いえて妙というやつだ。

DECADE(NEIL YOUNG)

で、コルテスザキラーを聴き出したり。

_ .NET Framework 1.0

を検証のために入れることを考えるとうーーーーんーーーーーざーーーーーりーーーーーする。

だって、死ぬほど時間がかかるんだもん。それに特別な方法を取らずにやるためには、1.1を殺さなければならないし、今更それはできない相談ということは、新規にXPと1.0をインストールしなきゃならんからだ。

思い出したが、クリスセルスの作ったゲームを実行するために、セキュリティセッティングを変更しても、クラッシュするっていうことから、1.0でのインターネットサイトからのダウンロードについては、後からセキュリティレベルを下げる条件を追加しても、実行できないと考えたから、ああ記述したんだ。が、実証実験は確かにしていない。

いずれにしろ当時は、インターネットサイトに厳密名付きスマートクライアントを配備しても実行できない(と考えていたから)ハナからその点については無視していたのだ。

で、いずれにしろ、.NET Framework 1.1ではインターネットサイトからダウンロード可能で、かつ実行時にエビデンスを加算するから厳密名で許可を与えておけばそれが有効になるので、あの記述は問題があるし、訂正は有効なわけだが、1.0でも本当にそうなのか? を改めて検証したほうが良いな(自分の心の平安のために)ということだ。

というわけで、やる。

_ 1.1でのポリシーの変更が原因

と結論。誤)から新)とする。

やっぱり、厳密名の使用は推奨できないな。イントラネットの特定ホスト縛りが妥当なところだろう。

_ 怒りをこめて振り返れ

シリアス・ムーンライト [DVD](デヴィッド・ボウイ)

ああ、ライフオンマースって、「火星に生き物」なのか。それは目からウロコだ。

_ 突然ヴィザージュ

Visage(Visage)

New Science, New Modes, That's all my fashion sense

だっけな? ストレンジなスティーブは万引きをして捕まったとか書いてあるが本当かな。ありそうな話だが。


2004-02-22

_ 昨日(実際は一昨日)のネタ

今、どうやらCOBOLプログラマのJavaシフト(メインフレームの置き換え対象のマシン上での作りこみが主にJavaによって為されているらしいということから)が進んでいるそうだ。

しかも、彼らはどうJavaで記述すれば良いか迷いに迷っているらしい。

PIC Xが無い。

確かにそれは大変かも。

注)忘れちゃったから、すごくいい加減。雰囲気のみ

01 print-line.

03 name pic x(8).

03 filler x(2).

03 occupation x(32).

...

move input-name to name.

move input-occupation to occupation.

display print-line.

...

というようにCOBOLだとテンプレートを使えるのに、Javaだと

StringBuffer sb = new StringBuffer(8 + 2 + 32);

sb.append(input_name);

sb.append(" ");

sb.append(input_occupation);

...

としなければならないだけならいざ知らず、COBOLと異なりバイト数(この場合、桁数と考える)と文字数が一致しないという「不具合」がある。

桁数が出てくるのは固定ピッチフォントを利用した80×24の端末に表示する場合を想像すること。要するに、半角(1バイト=1桁)と全角(2バイト=2桁)という考え方が有効なデバイスである。このようなデバイスに対して「文字数」というのはハンドリングしにくいのだ。特に、half-widthカタカナと漢字が混在するような場合。

というような話ではなく、こんな感じの本はどうかな、というような話。

……(承前)……もうお気づきのように、Javaには、明示的なData DivisionとProcedure Division の区別がありません。これは、データとコードをきちんと分割し、仕様化し、管理するという優れたソフトウェア工学上の観点が欠落しているからです。このような言語上の欠陥については、きちんとコメントを記述することで回避しなければなりません。

そのため、正しくは、以下のように記述する必要があります。

// コンパイルエラーにならないためのおまじない

class CobolIsGood {

/**

* Data-Division.

*/

public static int count_value_1; // 4 bytes comp-5 pic 9(8)

public static int count_value_2; // 4 bytes comp-5 pic 9(8)

...

/**

* procedure-dirivison.

*/

public static void main(String[] /* using */ args) {

count_value_1 = args.length;

count_value_2 = 0;

do {

/* perform */ proc_12(args[count_value_2]);

count_value_2 = count_value_2 + 1;

} while (count_value_2 < count_value_1);

}

// おまじないの}を忘れずに

}

とか。で、後半はXDoclet使いまくってpublic staticを付けずに済ませるかとか。

で、こういうのが冗談で言える環境ってのは結構なことで、どうも本気でこういうのがあるらしい――もし、本当なら、そんな本はどこにも無いから困りそうだな、じゃあ、いっちょ、そういう本を書いたら売れるかも、とか。でもその場合は、エイリアスを著者名にしないと恥ずかしすぎるよね、とか。

追記:冗談としても「本に書く」というのはいかがなものか? とは言うものの中期(3年くらい)的な見地から、本当にCOBOLで構築しかしたことがないシステム部と専用の下請けあるいはシステム開発子会社という組み合わせで、かつプロジェクトマネージメントが自社、かつ俗流ウォーターフォール(=鯉の滝登りリスク検討なし。しかし、恋が滝をのぼれば龍になれるんだがな)でマネージメントをすると意思決定が為されていて、かつ、文書/ソフトウェア管理が記号流なら、OOの出る幕はないし、かえって混乱の元(=不幸の始まり)な気はする。

と書いて気付いたが、メインフレーマーがそのての会社の企業教育用マニュアルとして既に作っていたりして。うむ、もしそうなら読んでみたいぞ(で、読んだら感銘したりして。その徹底振りに)。

というのも、管理手法がそのままでOOでいったら出来上がるソースは

class P_03_0212 extends P_02_0001 implements P_01_0353 {

private P_03_O211 p_03_0211;

public P_03_0212() {

int i_01_0001;

int i_01_0002;

p_03_0211 = new P_03_0211();

if (get_V_01_0353() == C_03_0150.I_01_0589) {

i_01_0001 = p_03_0211.proc_0353();

} else {

....

}

}

protected P_01_0250 get_V_02_0123() {

return p_03_0211;

}

....

}

みたいだったりしたら、まだ、staticだけで、他のクラスとインタラクションしないほうがメンテしやすそうだからな。

_ 見たい

モグラの動画見てみたい。もこもこふわふわしゃりしゃりという語感がいいなぁ。

_ 難読化

ふと思いついて難読化を調べてたらに出合ったり。

さらには、あんまり知られていない(という訳語を当てれば良いのかな)セキュリティイシューとか。

_resetstkoflwって2001年のMSDNには出てないってことは、/GSと同じくVC++.NETからなのかな? って言うか、しっかりDLLヘルになってるが、XPからなのか。いつもながらにちょっとずるい感じだが。

全言語のページから_resetstkoflwを検索しました。 約44件中1 - 20件目 ・検索にかかった時間0.11秒

翻訳もされてた

うむ、正解だった。が、こんなにおもしろいのに、続きはないのかなぁ。

っていうか、memsetサイコー。

というわけで、リンクを読まずに、上のヒントから、次の問題(全部引用)を解いてみましょう。

このコードを Microsoft Visual C++® .NET でコンパイルして、このコードに欠陥が見つかるかどうか調べてみてください。

BOOL DoStuff() {

char pPwd[64];

size_t cchPwd = sizeof(pPwd) / sizeof(pPwd[0]);

BOOL fOK = false;

if (GetPassword(pPwd, &cchPwd))

fOK = DoSecretStuff(pPwd, cchPwd);

memset(pPwd, 0, sizeof(pPwd));

return fOK;

}

ヒントをあげましょう。コードには何も悪いところはありません。期待どおりに記述されています。ユーザーのパスワードが取得され (この例では、パスワードを取得する方法は問題ではありません)、そのパスワードを使って何らかの重要な操作が実行されます。作業完了後に、パスワードの全バイトがクリアされます。

....

ZeroMemoryってのはWin16時代の互換性用のAPI(CRTの欠落を補うための)だと思って敬遠していたこっちが間抜けだったようだ。WinBase.hをちゃんと見なきゃな、というか、Win32 APIを使えというますますソース互換性を失わせる罠でもあるが。

追記:

日本は2002年で止まってるが、msdn.microfot.comだと、Security-Security(General)-Columns-Code Secureで連載は続いている。最新は2004/1で、担当がデイヴィッドルブランってのに変わってるけど(ただしマイケルハワードによる紹介文つき)。

っていうか、このコラムがおもしろい理由の1つは、

〜は脆弱性の原因となる。たとえば、MS03-xxxxは、まさにこれが原因だ。では解説しよう…… と、妙にナマナマしいからだな。

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

Before...

_ babie [>みたいなコード 記号クラス名はお隣のJavaチームがやっています。画面IDと対応しているようです。テーブル名も記号..]

_ arton [>DataSetってDOAの系列なんだろうか ビンゴ! 例:<a href="http://www.microsof..]

_ arton [うむ、さすがだtDiary。]


2004-02-23

_ もぐら

ありがとうございました

早速、子供と鑑賞。ライオンやシマウマなんかと違って、テレビや動物園とかで見られるわけではなく(って言うか、動物園で見たことは無いけど。テレビではあるかも知れないけど記憶には残ってない)、その意味でも未知との遭遇でおもしろかったです。というか、あそこをモグラが掘っているという現場(なぜか石が順番に揺れていくとか)や、掘られた跡、は見たことがあったけど現物が地上に出て活動しているところは始めて見ました。

確かにかわいいですね。特に3本目の尻尾を残して穴を開けて潜っていくところ最高。潜るスピードにびっくり、だけど、なかなか尻が隠れないとことか。あれって、芝生のところでは潜れなくて、花壇のところまで行って始めて潜れたということなんでしょうか?

かわいい害獣ってのは厄介だなぁ、とつくづく思うものの、こればっかりはどうにもならないですね。

_ char* p = new char(int);

ここがまずいというのはわかったものの、ちゃんとコンパイルが通る(正しいコンストラクタ呼び出しで、ポインタが返る)のにはあらためてちょっと衝撃(というのは大げさだけど盲点でした)。

多分このテの記述ミスはしたことはないとは思うが、危ないなぁ。

#include 
#include 
int main(int argc, char* argv[])
{
    if (argc > 1)
    {
	char* p = new char(strlen(argv[1]) + 1);
	strcpy(p, argv[1]);
	puts(p);
	delete[] p;
    }
    return 0;
}
 
をコンパイルして試す。
C:\Home\arton\test>cl ctest.cpp
cl ctest.cpp
Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 12.00.8804 for 80x86
 ...
C:\Home\arton\test>ctest aaaa  // この程度なら一見問題なし
aaaa
#でもこの例だと400文字くらい突っ込んだところでヒープのページ境界を越えて死ぬ。
 

_ 記号流

あれって、名前重複の回避が理由なんでしょうか? だったら、パッケージだけ管理すれば良いと思うんですよね。

むしろ台帳に変数一覧、プロシージャ一覧とかがあって、細かに動作を定義しているのかなぁ、とか想像しているんですが。なんていうか、工業製品の部品台帳みたく、A-01というネジは、AX-01というネジ穴で、発注先はAF-01、という感じ。と言っても工業製品がそういう管理をしているかどうかも想像なんですが。

で、安上がりな難読化手法(台帳がないとソースを読むのは外部の人間には無理)なのかな、とか。

少なくても1度とは言え(しかもCOBOLとは言え)見かけたことはあるから、なんかそんな変なことをやる理由/推奨している手法があるはずなんだけど(少なくても本屋のプログラミング言語コーナーでそんなのを奨めているのは見たことがないので、管理手法側なんだと思う)、まったくメリットがわからないので。

#もしネームスペースが単一でかつ1つの実行モジュールにリンクされることになる巨大なプログラムを複数人で開発し、しかも名前が8文字、かつローカルスコープの変数が取れない、といった条件があれば、まあ、わからないでも無いし、古いCOBOLだったら比較的その状態に近いかな(でも名前8文字ということは無いとは思う)、とは考えられるんですが。

#でもその場合は言語を変えるのが筋だと思います。少なくてもCならファイルスコープとローカルスコープがあるわけだし。

_ 素晴らしくないよう

困っている人が本当にいるらしいってのはわかるけど、

・長期的な視点:とりあえず、PoEAAでも読む

・中期的な視点:VB方式(後述)

・短期的な視点:全部、static。シングルスレッド。バッチ式(ANT駆動とか)

――殴られそうだけど、意外とまじめな提言。

かなぁ。

VBってクソみたいに言われるし、事実、ほとんどそうなんだけど、「ほとんど」ってのは違う面もあるわけで、大体、ダメダメな場合は

・Windowsのメッセージングを理解していない

・コンポーネント側がOLEオートメーションの仕様を理解していない(VBは被害者)

・byVal, byRefの区別がわかっていない(入門書でも見かけるが、ByRefを推奨し過ぎ。VBで書いている時点で速度をそんな細かいところに求めてはだめでしょう)

・コーディングスタイルがタコ

・プログラマが例外処理を理解していない(on error resume nextは禁止したほうが良いだろうな)

と言った点で、ちゃんとしたコンポーネントに対してトランザクションスクリプトパターンを適用して記述する分には、そんなにダメ言語じゃなくて、むしろ長所も多いとも言えるわけで、Javaで開発する場合も同じように、トップのメンバー→ユーティリティクラスやDAO(ビジネスメソッドまで持つかどうかは人数と時間に依存)、サービスレイヤーを作らせる、その他→トランザクションスクリプトパターンで1つのメソッド内で上のクラスを操作させる、とやっていけば、業務システムであれば、仮に落ちる一方のウオーターフォールでやっても大きく破綻することは無いと思います。と思うんだけど。だめかなぁ

_ ファイルのダウンロード

HTTPで日本語のファイル名を使いたい場合、Content-Dispositionにファイル名のエンコーディングを指定できない。

Current [RFC 1521] grammar restricts parameter values (and hence

Content-Disposition filenames) to US-ASCII. We recognize the great

desirability of allowing arbitrary character sets in filenames, but

it is beyond the scope of this document to define the necessary

mechanisms. We expect that the basic [RFC 1521] `value'

specification will someday be amended to allow use of non-US-ASCII

characters, at which time the same mechanism should be used in the

Content-Disposition filename parameter

少なくてもIEに対しては、Shift_JISでエンコーディングしてやれば正しく認識する(多分、UTF-8もOKな気はする)が。

追記:2047を適用すれば良いのかも。

_ どうして、運用の先端が輪になっていないのか

まじめに読むと結局、営業は出入りしているだけあって、もっとも的確だった(本当に必要なものに、多少の豊かさを夢として加える)という意味なのかなぁ。


2004-02-24

_ MSはDOAの夢をどうして見るんだろうか?

考えてみよう。

っていうか、TechEDに2000年くらいから行っていれば、MSがDOAを開けようとしてるのは明らかだし、DOA+って、ADO+(ADO.NETの旧名)のアナグラムですか? とか、ちゃんとMSも参加してるし。

オブジェクト指向設計よりも「データ中心」と、エバンジェリストが何故語るんだろうか?

1.J2EEとの「相違点」を明確にして勝負をかけるため。

これは、すぐ推測できる。「もうメインフレームじゃないしー、でも、オープン(システムってやつ。ソースじゃないよ)ってUnixとかWindowsとかあって、わけわかんないしー、うちのシステム部は、COBOLでDOAだしー」みたいなとこに食い込むための釣り餌。そういう側面がないわけじゃないだろう。っていうか、絶対あるだろ、そりゃ。

2.本気

そりゃ、あれだけ大きな会社でいろんな考えの人もいるから、そういう視点もあるかも知れないけど、それだけじゃないだろうとは誰でも思う。ヘジスバーグがDOAとか考えてるとは思えないよね。

3.主戦場はデータベースマネージャ

SQL*Serverを主戦力として考えているんだったら、これはありだろう。.NET Frameworkとかはインフラであって売り物そのものではないんだから。つまり、本当の敵はやっぱりOracleですな、とか。

4.ユーコン?

……

5.EAとからめて

ビジネスアーキテクチャはおいておいて、テクノロジーアーキテクチャは取り合えずSOAで平和共存としておいて、アプリケーションアーキテクチャはこれからもいろいろ変えるためとっておくとして、インフォメーションアーキテクチャを抑えたいとか。

6.?

というように、いろいろ空想が膨らむのであった。

あと、ADO.NETは、特別だというのもあるとは思う。以前も書いたけど、なぜ、マーティンファウラーがわざわざADO.NETのためだけにテーブルモジュールパターンなんていうパターンを載せたのかということに関連してくるけど、あれは完結してるからそのまま使うのが吉。で、

Table Module works better than a comibnation of Domain Model and Active Record when other parts of the application are based on a common table-oriented data structure.

(PoEAA P.128)

――テーブル中心のデータ構造に基づいて(訳注:データ中心ですな)アプリケーションを組むんだったら、ドメインモデルとアクティブレコードの組み合わせより、テーブルモジュールのほうがうまくやれる。

だから、DOAで回したほうが良い、ということになる(のかも)。

「のかも」は僕の感覚で、必ずしもそうではないだろうと考えているからだけど。でも、そのへんは、まだ良くわかってない(それほど規模の大きなもので試してない)のでなんとも言えない。

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

Before...

_ WR [>> babieさん 「至極真っ当」かつ、「いやだなぁ...」という気持ち、すごくわかります。]

_ arton [>「至極真っ当」かつ、「いやだなぁ...」 同意します。で、1つ思っているのは、多層構造のうち、本当に人間が工夫すべ..]

_ arton [で、今は、まだいろんな手法が混在してどれがベストかはまだ良く見えずにぐちゃぐちゃしてるから、おもしろい、と思ってたり..]


2004-02-25

_ スーホの白い馬

スーホの白い馬 (日本傑作絵本シリーズ)(大塚 勇三)

貧乏な若者スーホと白い馬は仲良くやっていた。あるとき、馬持ち込みの競馬の勝者を王女と結婚させる(つまり、次期の王様になる権利を貰える)という王様のおふれがスーホの村にもやってきた。

スーホは白い馬と王都へ行き、素晴らしい成績をおさめる。しかし、王様が欲しかったのは貧乏な若者ではない。だが、その見事な白い馬は欲しい。王様なんだから欲しいものは手に入る。兵士を使えばできないことは無い。しかし馬の心までは手に入れることはできなかった。

馬は馬頭琴と呼ばれる楽器となり、今日も大草原に歌が流れる。

という話とは無関係に、CORBA(プラットフォームインディペンデントな分散オブジェクト技術)に対してCOM(Windows限定の分散オブジェクト技術)というのがあったが、MDA(プラットフォームインディペンデントなモデル駆動アーキテクチャ)に対してWhitehorse(Windows限定のモデル駆動アーキテクチャなんだろうか? と一応疑問形)と、同じようにOMGと競合するものを(現物付きで)出して来たってことかな?

もしも歴史が繰り返すなら「取り敢えず」MDAは放っておいても良いってことになるから話は早いんだが。

wildcatsさんのとこ経由(だと思う)。

_ 食べるための財布は1つ

カルチャーとビジネスは違うからなぁ。カルチャーってのは耕すわけだが(そのものを育てるわけだし)、ビジネスって忙しいことだし(そのものをすり減らすわけだし)。

なんというか、「食の安全」というような方向から有機栽培していたら、農林省の「付加価値政策」として「有機栽培ガイドライン」とか「有機マーク」とかが出てきて、まあ、有機栽培してるわけだしとマークを付けるわけだが(しかし、ちょっと違うのはマークは先にあったんだよな、主なのが2種類ほど。でそのマークはガイドライン準拠と呼ばれているわけだ、後から)、十把一絡げに付加価値野菜を作ってますな、儲かりまっかといわれたらイヤンとかいうような感じかな。しかも実際に儲かってるわけではないというか、これまで通りのことを粛々とやっているだけなわけで、なんか奇妙な感じがしてくるのは事実だろうし。でんでこでん。

(ここから追記。実際には主体的な判断が全然ないからな、ここまでだと)多分、この「後から準拠とか言い出された」ってのが人によってはカチンと来る点なのかなぁ、とか想像してみたり。特にGPLではなくBSDを選択してきている人は、主義で縛られるのはもともとすごくイヤなはずだ(だってGPLはイヤなわけだから。それが積極的にBSDが好きだから、と言っても同じことだと思う)。どうでも良くなるが僕の立場は無茶苦茶で、基本的にGPLなわけだが、実際にきちんと検証すると全然GPLの要件を満たしていない(と思う)フリーソフトを作っていたり(VC++限定とかC++Builder限定、つまるところWindows限定)するわけで、しかも読者対象がビジネス寄りなプログラマーだと考えれば身も蓋もなく「オープンソース」というビジネスターム(でしょ?)を使いまくるし、結局のところどうでもいいや、と考えているんだけど。だって、最終的にものを言うのはソフトウェアの機能だし、参照物としてのソースだもん。で、第1が自分の利便性のためで、ついでに妙なギルド意識が来るってとこだったり。ただその一方で本音として「訴えられたくない」(名言だ)というのがあるから、ライセンスは鮮明にしておく(+それなりのそのライセンスに対する思い入れ)。(ここでリジューム)

ESRのノウアスフィア理論だと、それを開墾したという事実が褒賞なわけだし、ここでその褒賞をくれるのは、世界のどこかにいる見知らぬ誰かじゃなくて同じ文化を共有している人間なわけだから、それ以外の世界は元々関係ないのではないかな。

それでは猫のカン袋みたいなもので蹴られてニャーと鳴くだけだから、世界に向けて袋を裏返して逆に世界も袋の内側に取り込もうという考えも正当だと思うし(追記:だからまつもとさんの活動は良い/悪いの2者択1なら「良いことだ」と考える)、そのいっぽうでカン袋の中でニャーニャー鳴くのもそれはそれで楽しそうではあるし。袋から外に出てしまうってのもありだろうし。

_ グッドタイミング

新製品のお知らせ


2004-02-26

_ インディゴ

もviper, aspと同じく蛇の種類なのかな。indigo snake(大型で無毒)

MSDNアーティクル(Don Box)

the Kernel Transaction Manager (KTM) and the Transactional NTFS (TxNTFS).

_ 247ってなんだ

winfx247。KTMで検索かけてたら見つけた。

いろいろな情報がまとまっている。

_

今日来たスパムの

★☆☆ 家族に 【ナイショで】 NBしているから?

最初、意味がわからず、Eclipseマンセーな会社でこっそりNetBeans使ってるところを想像してみたり。

しかし、ネットビジネスらしいとわかったものの、なぜナイショなんだ? それはとってもリスキーだから。

いろいろバリエーションを考えてみたり。

・上司に 【ナイショで】 リファクタリングしているから?

・顧客に 【ナイショで】 仕様を変えているから?

・設計者に 【ナイショで】 TDDしているから?

・開発に 【ナイショで】 安請け合いしているから?

_ Safariの便利な点

マウスで選択して右クリックするとグーグル検索が呼び出せる。


2004-02-27

_ うるう年

しめた、あと2日もあるじゃないか。

_ 勉強中

ユースケース分析より前にデータベーススキーマがあるかどうか

実体と属性レベルのERモデルとユースケースモデルの作成+CRUD表の作成を中心とした要件定義工程

……考えをまとめようとしていて、つくづくこのあたり(データ層)ってわからないんだよなぁ、なんかお手軽で網羅的な(……)資料ないかなぁ、と考えていて、ハタと思い当たった。まさにそういうためにあるんだからEAの本を読めばいいのか。

追記:思い出したが、仮にもDB技術者なんだからわからないはずないんだよな。えらく前にER分析は習った(赤、青、黒の3色を使う)し論理設計はできるのに、実際に仕事として最初から参画したことがないとか、記法が現在は残ってない流儀だとかだからで、混乱してるみたいだ。

_ 自信たっぷり

それでもわざわざ訳の分からないユーザの話しを機器ながらユースケース図書きたいですか?

なんか、煽ってるし。しかもキメ科白なんだから、誤変換はいかんでしょう。


2004-02-28

_ しかしつくづくくだらねぇ本だな

Enterprise Architecture Using the Zachman Framework (MIS)(O'Rourke, Carol)

いや、「コンセプト」の本だってのは買った時からわかってたし、納得して買ったわけだが、それにしてもOffice2000が3000万行から構成されていて200,000の知られているバグを持つとかっていうようなヨタばっかりだからなぁ。拾い読みしてたときはおもしろかったがマジメに読むとこれは苦痛だ。

システム開発の章。

ミケランジェロは芸術家であると同時に科学者である。彼は大理石とはどのようなものか熟知しており、どの角度からノミを入れるとどのような結果が生み出されるかを理解している。だから偉大な作品を作れる。

同様にプログラマは芸術家であり科学者である。言語の文法を熟知しており弱点を知りぬき、適切なメモリー量を確保し……。どうしてこうなるんだ?

少なくてもプログラムを知っている人間が読む本じゃない。

ベツレヘムスティールで働いているDB2のオペレータは、開発者が3週間かけて苦労しながら開発しているプログラム内のクェリーに興味を持った。そして、「ちょっとやらせてみな」と声をかけた1時間10分後に、元のプログラムを遥かに凌駕する速度をたたき出すように改良してしまった。熟練した技術者は、スキルが乏しい連中よりも高品質、短期間でものを作り出せる。

だからどうした? というか、ベツレヘムスティールという固有名詞はなんのためのものなのか。

ただ、そこがザックマンフレームワークなんだろうが、ここぞとなると、5W1Hで解説が始まるんだが、クソミソ一緒というか、

例:プログラミング言語(how)

・Avoid using names that are later used in a different context.

ふむ、そりゃそうだ。

・Avoid overly nested logic

ふむ、

・When using Hungarian notaion, do not change the variable type.

そりゃそうだが、どうしてここでこんなに細かい話が出てくる?

これは誰のために書いてるんだ?

であらためて章題を見ればHOW TO SPACKLE - THE ART OF PROGRAMMING

なんだが(spackleってのが持ってる辞書に出てないのはいいとして)、QUESTIONS TO COMTEMPLATEは、

1.How does the subcontractor's job resemble a work of art ?

2.How are patterns used in software?

3.What can help bridge the gap between planners, owners, designers, builders, and subcontractors?

subcontractorってのは文字通りの意味なのか。で、subじゃないcontractorに、心構えを与えてるってことだな。というわけで、この本がEAを導入し推進するユーザー企業側の人間のためのものであることが良くわかる。あとはコンサルか。ようするに、気持ちよく仕事をさせるためにいろいろ理解してあげよう、ということで、コビーとかが出てくるのと同じような目的であるな。

というわけで、subcontractorであるおいらはこのへんは読み飛ばしてWHAT ASSET - DATABASES IN BUSINESSへ進むのであった。

QUESTIONS TO COMTEMPLATE

1.How are databases an asset to the enterprise?

2.How are data integrity, data quality, and data identification associated with the subcontractor's development techniques?

3.How is the amount of online data related to corporate memory?

データグリーンハウスアプローチ重要。

データセントリックアプローチは危険だとなっているな。

Subcontractors should focus on process first and data second. If the data is determined to be bad, then no matter how good a database design is, the value of the data diminishes and ultimately becomes useless.

ここで言っているプロセスってのは、ビジネスプロセスのことのようだ。当たり前か。結局、データが持つ不変性をどう捉えるかで分かれるんだろう。ここではデータセントリックなら過去現在未来のプロセスから独立したデータ構造をもたらす、とした上で

However, data centricity cannot take into account the changing nature of data and database structures over time, or the impact that data has on the supporting business applications and users.

まあ、データソースの増減を許容可能なプロセスのデザインが重要というのは正しいだろう。

とは言うものの、プログラミングの章で感じたような無茶苦茶さをデータベースピープルはこの章で感じるのだろうな。

疲れたので、ここまで。

しかし、やっぱりこの本はいいな。細部を抜き出すと実にくだらないが、コンセプト本としてはすごく調べて書いているのは間違いない。結局、ビジネス書なわけだが、非常にクォリティは高い(その分、夾雑物も多いわけだからそっちで見るとゴミのような本とも言えるわけだが)。

_ はてなのアンテナ

JSTの+9を足してないか?

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

_ 通りすがり [まったく、脈絡がないんですが、artonさんならこういうのも興味あるかもしれないと思い、ちょっと古いけどコピペ。 ..]

_ arton [ほえー、まだ作品を作ってたんですね。雀みたいなもんかも。]


2004-02-29

_ ローリーアンダーソンとかいましたなぁ

Big Science(Anderson, Laurie) (試聴可能)

出たときは聴きました。でも、あまり好みではなかったかも。

あの時期だと、ノーニューヨークやZE(リジメルシエデクルーとかジェームズチャンスとか)は好きだったんだけど、こっちのわりと高踏的な人たちはいまいち好きになれませんでした。どうしてだろう。ノーニューヨークなんかイーノの掌の上なんだから同じようなもんかも知れないけど、より感覚的というかビートが根底にあるんだけど、ローリーアンダーソンって先にコンセプトがある感じがしたのかな。それに妙な清潔感があるところ。高踏的で清潔――あ、おいらの好みだ、しかし、生活スタイルとしては好みでも、音楽としては好みじゃないようです。ウェーベルンには敬意をはらうけど、聴くのはベルクってことですね、新ウィーン派でたとえると。意味無いけど。(昨日の本のようだ。あるひとつの抽象的な概念を説明するために、周縁の事象を並べていけばどれかにヒットする可能性があり、ヒットすれば、そこから理解の糸口が掴める)。

No New York(オムニバス)

#NY、女流、アーティストという生垣で囲むと、ローリーアンダーソンの他にシンディシャーマンとか出てくるんだけど、どちらもあまり興味を惹かれない。

追記:どうも低俗で不潔なものが好きなんだな。ms technology

3種類考えられるな。人は自分に無いものに惹かれる=オレは高踏派。人は自分と同じものに惹かれる=オレは低俗。人は好きなものが好きだ=オレとは独立。もう1個ありそうだ。ということにしたいのですね。

同時に想起したもの:

Golden Age of Wireless(Dolby, Thomas)

トーマスドルビーはイギリスのほうだけど、なんか、同じような感じでやはり好きになれなかった(全然、傾向は違うんだけど、どっちもエセサイエンス――単に題名の付け方だけだけど――のほのかな香りが漂ってくる)。

_ 愛知万博

おお、ライブは別ですね。「ローリーさん自身もパフォーマンス」に一緒に行きませんか? >通りすがり

立花ハジメ……いや、NY、アーティスト……という連想の中には当然、プラスティックスが出てくるし、出てくればペパーミントグリーンにピンクのジャケット(Amazonにはジャケットが無いな。残念。とてもポップなのに)とか、トーキングヘッズの前座で見たなとか、屋根裏でやったの見たなとか、思い出したけど、ダンステリアDとかいうような名前のNYの店でも見たぞ(たまたま行ったときにブックされてたような)とか、涙のパーティーは違ったっけな、とかいろいろ想起してたんだけど、立花ハジメってのは欠落してました。

立花ハジメの音楽は正直、すごーーくつまらないと思うんだけど(少なくても好みではない。高踏的でしかもサマになってないし)、しかし、自分で変テコな楽器作ったりする精神はとっても好きです。自分で笛吹くふりをしたり、スパナ持つとこがいいですな。やっぱり、自作だな、うん。あおきさんはCPUを作れたんだろうか?

_ これ系と言えばジャパン

Quiet Life(Japan)

最近、クワイエットライフを聴き返していたり。こいつらも、高踏的で清潔でありたいんだろうが、全然、低俗で不潔で、すごく苦しそうなところにそこはかとない共感を覚えたりするんだな。で、1番、そのあたりのバランスが取れているのがクワイエットライフ(アルバムではなく曲)だと思う。

Titles(Karn, Mick)

ジェントルマンテイクザポラロイドとかになると、バージンのプロデューサーが辣腕なのか坂本龍一とかまで引っ張り込んでるから、そのあたりの下品さが薄れてしまってどうにもつまらない環境音楽になりかけてたり。でもミックカーンのベースがどんどんうまくなっていくのには驚嘆。多分、まじめに練習したんだろうな、とか考えると、いい加減な売れ線アイドルとして始めたのにいろいろ妙なところにはまりこんで悩みながら、しかし黙々と練習しているであろう舞台裏を想像して、いろいろ考えさせられる。しかし、曲作りの才能には恵まれていないらしくソロの1作目買ってやったけどえらくつまらなくてがっかりしたという覚えも。しかし、Amazonでは誉めてる人がいるなぁ、実はこっちの耳が節穴で実は良いのだろうか? (っていうか好みがあるし)

each eye a path(ミック・カーン)

っていうか、まだ活動しているのか。大したやつだな。

_ 不潔といえばフランキー

リリーフランキーとかタイガーリリーとかあるけど、フランキー堺と言えば幕末太陽伝、でも、ここではフランキーゴーズトゥーハリウッド。

なぜなら、リラックス。

さて、RELAX NGってどう読むんでしょう? やっぱりリラックスエヌジーなのかな、それとも間の空白を無視してリラクシングなのかな?

というのは、いつもXSDばかり使ってるとバカになるから(同じものに拘泥するのはよくないであろうというバランスだけど)、今のプロジェクトではRELAX NGでスキーマを切るように指令を飛ばしたのはいいけれど、なんて発音するのかわからないという状態なので。

#上のを読み返していたら、生垣というタームが出てきて、知らないうちにいろいろひっかかってることに思い当たった。

_ コップじゃない場所

新山さんの労作を読む。

まず、SCOの嘆願書をきちんと訳出していることが素晴らしい。それが嘆願書であり、読み手が技術者ではないことを考えれば、論理的内容だけではなく、言葉そのものに意味があるからだ。民主主義は一応は言葉で動く社会だからな。

SCOが米国議会にあてた嘆願書

これは、この立場からすれば、実に誠実な文書だと思う。情に訴え、自分の主張を述べている。なんとなくだが、デトロイトの連中の論理(やつらはモノマネで我々の市場を盗む)を想起させるし、こういう物言いっていうのは効果的なんだろうなと感じる。

SCOの嘆願書に関する USENIX の反論

革新的な技術を共有し、これらを無料で使用可能にするというオープンソースコミュニティの実践は、開発を刺激し技術部門を鼓舞するものになっています。

すばらしい言葉だ。

USENIX側は、オリジナルの問題を(意味がないから、あるいは係争中なんだからそっちに任せとけと考えたのか)抜きにして、市場が決めるという原則を主張の中心においている。

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

Before...

_ 通りすがり [あ、立花ハジメはマッドサイエンティストのふりをしているパフォーマーってことに自覚的なのか。それは鼻につくかも。 と、..]

_ uno [「リラクシング」らしいです(読み方マニアか?>俺)]

_ arton [おお、ありがとうございます。]


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|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|

ジェズイットを見習え