トップ 最新 追記

日々の破片

著作一覧

2005-08-01

_ ツッコミspam

久々に食らってうんざり。

RSSフィードの帯域を食うってのがたまらんな。

_ 皇帝ペンギン

やっと見た。

っていうか、題がいきなり皇帝の行進で、行進が主題なのだと初めて知った。っていうか、日本映画でも感じることがあるが、なんで英語で唄うんだろうか? 良くわからない風習だな。

そういえばスタンダール(じゃなくて良く見たらスタンダードなのか)ではpingouinは誤用でペンギンと書いてあるけどそれじゃ本当のペンギンってなんなんだろう。

とかどうでも良いことを考えながら見ていると、すごく長い行列をロングで撮ってるもんで、なんかどこかで見たような、というのとタイトルの皇帝の行進が引っ掛かって、まるでイワン雷帝が天の岩戸に隠れたら、大丈夫、人気は抜群だと自己確認できるほどあちこちから湧いてきた嘆願する国民の大行列を思い出して、これをモンタージュに使えるなとか、ますますどうでも良いことを考える。

お腹を剥き出しにペタペタ歩く姿を見て、つくづく人間が十分に賢くなってから南極へ行って良かったね、と思ったり。ドードーはもう見ることはできないが(オランダの水兵が食べたわけじゃなくて、水兵が食べるために連れて行った豚が卵を食べたというのが真相らしいが)、ペンギンはまだ見ることができるからな。お腹を出してトコトコ歩いていたら、血に飢えた連中の射的の的になるのは目に見えてるし、固まって押し競饅頭していれば、爆薬で一網打尽にされるのもまた見えている。食わなくても殺す連中のことだから100年早かったら危ないところだっただろう。

とか思っているうちに海に潜ってすごい速度で泳ぐというかなんというかすげぇが、あれも実写なのか? と相当疑問に思う。

以前、北極熊のドキュメンタリーを見てたら、とにかくアザラシを食べるんだが、南極のアザラシって誰が食べるんだろうか? あの様子だとアザラシが増えすぎるような気がするんだが。というか、熊は北極、ペンギンは南極、なんでアザラシは両極にいるんだろう。

それにしても、最後に子供が僕なんだかお腹が減らないんだとか言い出すのを見て、ダイエットとか始める中学生の女の子みたいだな、とか思ったり。

ディズニーが作り物のドキュメンタリーを作ったりしていた頃があったが、作り物かどうかはともかく、今やドキュメンタリー映画ってのはフランスの独壇場の分野になってしまったようだ。日本の場合は、小川プロとか社会ドキュメンタリーのほうへ進んだから別としても。なんでだろう。クストーとかよりさらに遡ってリュミエール以来の未知のものを映し出すリアリズムの見世物の伝統が残ってるのかな。それともハリウッドでもばかすかドキュメンタリーは量産しているのだが、日本の観客には受けないとか相場が決まっていて趣味のフランス映画でだけ配給会社が買い付けるとかなのかな。

最初に卵の受け渡しに失敗するのって、添い寝で潰してしまうようなものなのだろうか。あるいは、3ヶ月前に食ったものを残していてメスが帰って来るのが遅いと分けているオスって、すさまじく計画的というかリスク管理ができているというか感心してしまった。

そんなところか。

皇帝ペンギン プレミアム・エディション [DVD](ドキュメンタリー映画)


2005-08-02

_ TechED週間

いよいよ始まった。

が、シエスタな習慣は急には変わんないだろうなぁ。困ったことだ。


2005-08-03

_ TechED初日

1番印象に残ったのは、IDCのDSIについての調査(コピー不可)という資料

縦軸がテクノロジーへの期待度

30%くらいでMSがダントツ。

25%くらいでCISCO。

IBMが20%くらい。

横軸がビジネスへの期待度(最大は? 100として)

80%くらいでIBMがダントツ

60%くらいでMS。

CISCOだと30%くらいで相当落ちる。

で、縦25、横70くらいが、internal。

向こうのシステム部は漢だ。ビジネスではIBMには届かないかも知れないし、テクノロジーではMSには届かないかも知れない。でも均せば互角だ。やっぱ、こうでなくちゃな。

_ Modulobeベータ

Modulobe

びよんびよんするのがおもしろい。

_ C#のジェネリクス

と書いてパフォーマンスがどうしたとか言うので、一瞬?でいっぱいになったが、Tigerのプリプロセッサのようなジェネリクスと違って、本物(と言っていいのかな)のジェネリクスで実行時に解決させることで値型として生成することを知った。そろそろ2.0をまじめに見る時期が来たのかな(っていうか秋まで待て、おれ)。

_ 今頃旬が来たらしい

ActiveDirectory、SOA、スマートクライアントとか。

_ LAN

すげぇ便利だけど、電源が無い。


2005-08-04

_ SOA

電網恢恢疎にして洩らさず。セキュリティは大事。


2005-08-05

_ Indigo

おもしろかった。ASMX,Remoting,MSMQ,COM+(EnterpriseService),WSE全部ひっくるめて面倒みるとか。HTTPでP2Pとか(HTTPサーバーでもある――HTTPとは限定する必要はないのだろうけど)。

構成ファイルで拡張可能→abstract factory。

とりあえず、マイグレーションパスで一番素直な道がASMXというのは予想通りとか。

ここに来て、WXSの悪評が出ているのはもしかしてIndigoのリリースを前にして何か政治的なものがあるのかな、と考えてみたり。

今日(正確には昨日)は、Indigoと、全然まだまだっぽいけどDSLツールのVS.NET組み込みと、具体性を帯びた話が続いて、ここ数年のTechEDの中で一番おもしろかったのであった。

_ Software Factory

関心事は異なる、それをまとめるのがアナーキストの役割です。いや、破壊するのか。

与太はともかく、見ての通り、同じシステムが3つのドメインに分かれている。上流の工場がPCBを流すと魚は死滅し、水銀を流すと骨が痛い。要求をかなえるというのはなんとなくそういうような気がするのだが。割りを食うのは下流に棲む魚や海で生活する人だ。海は死にますか、形あるものすべて壊れる。そういう状況で、テクノロジストたるエンジニアは右手に技術、左手に工学を持って上から下まで駆けずり回って何をなすべきだろうか?

ということがSoftware Factoriesの根底にあるようだ。

で、重要な言葉の使い分けの点は以下だ。

Factoryの中ででスパナを持ってモダンタイムスをやるということではなく、Factoryを再利用するということ。

作ったベルトコンベア、安全基準、ルール、部品、工場をいちいちスクラッチアンドビルドしてるのが現在のソフトウェア開発に見える。それはあほだろう。10年の実験の結果、工業製品化はとりあえず無理そうだし、規格化した部品群で全部まかなうってのも無理っぽい。でも、ベルトコンベアの使い方のルール、安全基準、入れ物、点呼の習慣、こういうものは再利用しているね。ではそれをどのようにカタにはめることができるか、それは工学で引き受ける、工場の運用は技術で試せ、そんなところか。

ソフトウェア開発にフォードやテイラーの時代がやって来たようだ。

(ここは実際の工場がどれだけのルールや要素や役割や資材や概念や歴史を持つかを想像して、それぞれの組み合わせによって何を造るのに向いているのか、向いていないのか、あるインフラを導入することでどう変わるのか変わらないのか、Aを作るラインをBに当てはめて死にましたとか事故が起きましたとか、今までバケツで運んでうまくやっていましたが何か? とかいろいろ、というようなことを実際に工場を建築することなく洗練させて行くことができるソフトウェア開発のありがたみを噛み締めるポイントのような気がする)

#理解した範囲では同意。

あとは、ソフトウェアの寿命問題。で、3年後にVB.NETが死にます、5年後にC#5.0になって全然変わりますというか、この機能を使わないとだめですとなったときに、ソースコードは大して訳にはたたない。実装の細かな仕様書は役に立つかも知れないけど立たないかも知れない。しかも作るのはソース書くより100倍くらい手間がかかる。とは言っても今までは代替手段が無かったからそういった仕様書を書いていたのだが、やめましょう。システム(テクノロジー)の寿命が尽きたら(例:2000年、2007年とか)またまた人間が読解して一生けんめい別の言語で作るのか? そこでDSLですよ。ジェネレータを作れる専門家が数人いれば、あとはいらんじゃん。実装についての記述ではなく(ここは好みの言い方で良い気がする)を記述して残しておく。後は必要/時代/要請に応じてジェネレータを手直ししていこうよ、ということのようだ。ただし、現時点では(少なくてもVS.NET2005では)無理ぽ。とは言え、さわっておくと良いことありそうかも、というところ(なんか、ATL1.0あたりのことを思い出したけど、そんな感じかな。ただやたらと志は遥かに上のようだが)。

単純化すると、デザインパターンは汎用的な設計の再利用(コードを書くのは人間)、DSL(MSがSoftwareFactoriesで語る意味での)は特化した設計の再利用(コードは自動生成)――無理なところは無理せずに人間がコードを書く。それでも(それこそ)80%の業務プログラムは生成できるんじゃないか?

そうなると、フレームワークというものは役割を終えることになる(人間の生産性を上げるためという意味では。単なる自動生成プログラムのターゲットプラットフォームとしてのAPIセットということになるんじゃないかな)、デザインパターンは生成するソースのテンプレートに組み込まれることで、これまたインスタンス化を人間が場当たりで考える対象ではない。とは言え20%(このパーセンテージは今、これ書きながら例の2:8に合わせて書いてるだけで、そんな数値は元ネタには出てこない)についてはありありだが。

このようにして導かれる世界について、僕はどう思うだろう? 百万遍唱えてもnew String("this is a string, hahaha");とか書いている連中はもうプログラム書くなよと言い切れるし、どう考えてもそれはハッピーな気がする。DSLを作るのは相当に骨が折れそうだが、それを元にジェネレータを作るのはもっと大変そうだ。が、これはすげぇおもしろそうだ。残り20%はどちらにしてもプロの仕事なわけで、これは無くなんないだろう。という感じで間違えて仕事に就いた人がいなくなって産業として適切な規模になるんじゃないの? という感想。

#というか、最初は組み込みの世界がターゲットなんじゃないか、という気もする。数値化されたモデルが最初からありそうだし。

_ ディック

君のディックは君のジョンほど長くはない。

無臭主義者と自然主義者の内戦っていうヨタ話があったなぁ。

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

Before...

_ arton [はじめまして。もしかして妥協的にとおりがかり? 目指しているのはそのレベルのお手軽さかも知れませんが、話を聞く限りで..]

_ arino [どこでその話題を(^^;>妥協的 まあ狭い業界って事ですかね。 趣味でもIEとかWordとかOutlookのように..]

_ arton [なるほど。>シェル系の作業 レスポンスが良ければ、エクスプローラと連動させてあるディレクトリより下全部、あるいはその..]


2005-08-06

_ 目が悪くなると世界が変わる

パブロ@はてなというピカソに出会った。

でも実は単なるペアプロだったりするし、音韻じゃなくて見間違いによるから語呂合わせじゃなくて語形合わせだ。

そこでふと語呂と語形じゃ全然違うということに気づく。語呂には主観が入る。語呂が良い/悪い。しかし語形が美しいとか語形の調子が良いというのは聞かない(というか語形というのは音韻の変化などの観察対象となる音韻上の連なりであって、文字通りの語を構成する文字の見た目の意味ではない)。字形、字体というのはあるな。しかし、あくまでも語の問題だし。皿皿皿……という高橋新吉の語形というよりはやはり字形だし。

_ 生産性

『生産性が高い言語』という言い回しがある。

その意味するところは、なんだろう。

多分、こんなことだ。

漢字を使うのは実は難しい。彼は行った。正則だとこうだけど、いったのかおこなったのか判断するには前後の文脈にたよる必要がある。

そこで、前後の文脈を読むなどという高等技術を使わなくても済む平仮名ですよ。というわけで、仮名漢字変換を持たないワープロを与える。それが生産性が高いということだ。

でも、この戦略がたいていの場合に失敗するのは、

・漢字仮名混じり文のほうがほとんどの場合に読みやすい(『行った』なんてのは例外)

・『きょうはいしゃにいった』のような強烈な反例に対する無知

あたりだろうな。というわけで、やはり漢字の利用を解禁する。

でも、この戦略がたいていの場合に失敗するのは、

・『難漢字多数利用是如何』とか大喜びで書き出すやつが出て来る(でも、意味はわかるから、まあいいんじゃないか、やりたいお年頃なんだろ、と、たかをくくっていると)

・『共は慰謝に逝った』とか漢字も知らなきゃ辞書もひかない追随者が出て来ることだ。『きょうはいしゃにいった』から事態は少しも進展していないではないか(多分、『医者に行った』んだろうが、前後の文脈読んだり、変換キーを押した位置を推測したりといった高度な読み取り技術が要求されるわけで、元の木阿弥である)。

漢字仮名混じりだめ、平仮名オンリーだめ、そこで教育漢字限定かつ熟語は全部で100種くらいのお子様ワープロを与えれば良いと思いつく人がいる。LISPからマクロを抜いて与えるとか、Javaから継承とインナークラスを抜いて与えるとか、RubyからclassとmoduleとProc、eachあたりを抜いて与えるとか、Cからgotoと関数ポインタを抜いて与えるとかだ。

でも、この戦略がたいていの場合に失敗するのは、

……(と無限に続く)

_ 安全なコードは難しい

public class Registry {
    static final int SYSTEM_END = 99;
    static final int USER_START = 100;
    String[] registry; // 最初の100個はシステム専用
    ...
    /**
     * 内部処理専用
     */
    String internalGetValue(int index) {
        return registry[index];
    }
    /**
     * 設定値を返す。
     * @param index 読み取る値のインデックス
     * @throws ArrayIndexOutOfBoundsException indexが不正
     */
    public String getValue(int index) {
        return registry[USER_START + index];
    }
}

というようなプログラムの持つバグをTechED初日のセキュアコードのセッションで指摘された。C#でだけど、Javaでも同じことだ。ちなみにinternalGetValueにはセキュア属性が付いていた。

ArrayIndexOutOfBoundsExceptionにチェックさせようという戦略だがすべてのユーザーがシステム値を読み取れるバグがある。もちろんReflectionの使用は除く。

問題点を指摘し、修正せよ(配列2本持ちとか、別クラスにするとかは置いておいて、あくまでもgetValueメソッドの修正ということで)。

C#の元の問題のほうが難しいな。

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

Before...

_ arton [残念、大きい方にはみ出すとrubyはnilを返すからbabieさんのはブブーでした。]

_ babie [あう、調子に乗って循環させてしまった。]

_ unibon [言語(プログラム)を言語(漢字)でたとえるのは、すごく分かりやすいですね。]


2005-08-07

_ ロボッツ

見に行った。絵はきれいだ。

しかしあまり楽しくなかった。そこかしこがいい加減だからだ。

突然、丸っこい親分が心変わりしてやってくるところとか、シナリオのいい加減さというのは興をそがれるとは言え、それほどは気にならない。

ドミノ倒しなんかすげーおもしろかった。そう言えば急行列車もそうだけど、あれは子供心をくすぐるな。

子供の頃の印象的なTVCMと言えば、チョコベビーが机の上のギミックをどんどんこなして行くやつだし、数年前のアキュラのフラッシュもそんな感じでおもしろかったし、それを何度も趣向を変えて見せる映画だと考えればむしろおもしろかったと言っても良さそうだ。他にも社長室から転がって行く所とかベルトコンベアで運ばれるところ、最後の逆転のところとか、全編がドミノ倒しだ。

いい加減さが顕著なのが、雨に唄えばのシーンだ。振り付けをどこまで似せたらダメというような規準があってしょうがなくああなっているのならわからないでもない。20世紀フォックスとMGMで違う会社だし。でも脚でバシャンバシャンやってくところは、それまで避けていた水溜りに対して感極まってヤケクソみたくバシャンバシャン始めるから、ジーンケリーの次に何をするかわからない突飛なダンス(そのへんがアステアの風雅で本当に技巧的なダンスと好対照で、そこにこの2人が2枚看板となって、かつ最後に生き残ったのがより映画的なケリーなんじゃないかとか思うのだが)たる所以で、見ていて楽しくて楽しくてしょうがなくなるわけなのだが(それにつけてもMGMは素晴らしい)、そういう感覚がまったく失われている。最後だってケリーは警官がこっちを見てるのに気付いて我に返って踵を返すのだが、オマージュとして挿入するんならそこまでやって踵を返したら待ち伏せしてるのに呑み込まれるとかもっと本家をきちんと使うべきと思う。あのバシャンバシャンが別のシーンで最初から用意されている噴水に行くところがもういい加減な感じなのだ。オイルの雨は降らないから水溜りという状況を作れないかと言えばそんなことは無いだろう。重要なのは水溜りではなく、それまで避けていた場所という点なのだから、浅い深いの対照を噴水に元々つけておいて踊りでその対照を示していれば済むはずだからだ。

そういう場の映画的な説明方法があまりうまくなくて映画としては大しておもしろくなかったと感じたということだ。

それはそれとして、不思議なくらい父親の映画として作られていて、男親が男の子を連れて見に行くというシチュエーションを想定して作ったんじゃないかと思わせるところがアメリカ映画だな。日本映画だと母親なんだけど(とポケモンとかドラエモン――男親もいることはいるが――あたりを想定していたり。後は知らんし)。


2005-08-08

_ 88

夏の盛りだ88だ。

一昨日(ロボッツ見に渋谷へ行ったわけだが)どうしてこうも桜の国が本屋に平積みになってるのかと思ったら、子供が「やっぱり今日だからかなぁ」とか言ってるもんで納得した。

_ 継承可能なユーティリティクラス

何が気にくわないと言って、ユーティリティクラスを継承して拡張することができないのは気にくわない。
public class Util {
    private Util() { } // これ
    public static int foo() { ... }
    ...
}

で、ふと気づいたんだが、これで良いのじゃなかろうか?

public abstract class Util {
    // 冗長な無引数コンストラクタ宣言はしない。
    // それにユーティリティなんだから
    // 引数を取るコンストラクタを定義することは無いはず
    // public Util() { } 
    public static int foo() { ... }
    ...
}

っていうか、このほうが絶対に良いと思う。無意味なインスタンス生成は最初のと同じく防止できる。かつ、継承が可能(staticメソッドの固まりだから継承は名前によるバージョニングや、パッケージの付け替えのためのものだ)。

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

_ GLAD!! [なるほど!! それいいかも。本当は、 public static class Util... のように書ければ良いの..]

_ るいも [なるほど。 protectedコンストラクタという手もありそうです。 ユーティリティのバージョニングって頭が痛いで..]


2005-08-09

_ カエル

こないだ、ひまわり(なぜヒマワリかと言えば冬の終わり頃に由来する長い物語がある)に水をやりに行ったら黒くて小さいものがぴょこっと跳ねた。最初虫かと思ったが、もっと親しみの持てる形だ。良く見ると小さなヒキガエルだった。

4年くらい前かな、春先に植木鉢を引っ繰り返したら大きなヒキガエルのミイラが入っていた。長いこと庭で鳴いていたけど、寿命だったのか、それからカエルを見たことがない。どうも、最後のカエルだったらしい。そう言えば以前は道を歩いていると年に3回くらいは事故に遭ったカエルを見たものだが、ここ数年は全然だ。

そんなわけで、住んでいるあたりからカエルはもう絶滅してしまったんだと思っていた。

だから、その小さな姿がすごく嬉しかった。ここ数日見かけないけど猫に捕まったりはしてないといいな。

ヤナーチェクの利口な女狐の物語の最初はカエルと森番の会話から始まる。「まったくおまえさんは奇妙な姿だね」「それはこっちのせりふだよ」子供の女狐を狩人が捕まえ、飼い、逃げ、男狐と恋をして、子供が生まれて年月が過ぎる。最後は森番がまた、酔っぱらって森の入り口でうとうとしてる。そこにカエルが来る。「おお、おまえさんか?」「おじさん、誰? それは僕のお祖父さんのことかな」

(アマゾンには無いのか)

_ おもしろい

「クスマノ・シリーズ」2冊目(時間軸では3冊目)

「クスマノ・シリーズ」1冊目(時間軸では4冊目)

福盛さんのMとHのオリジンを探る読書シリーズ。

で思い出したが、MSFは1994年からというのとかぶるのかな。

それにしても『Visual Studio 2005 という統合開発環境にテンプレートとして完全に組み込まれる』というマイクロソフトの製品戦略は非常に興味深い。


2005-08-10

_ 三角形

150度を挟んで6cmと7cm。面積を求めよ。で、30度を付けてやって直角三角形を作ると高さは7の半分で3.5cm。

でも、30-60-90って、3:4:5だよね、と子供。あれ、オレもそう思うけど。

で実際に書いてみると確かに3:4:5だと違うね。三角定規の組み合わせのせいでそう思い込んでいたのかも。

で、良く考えたら正三角形の半分なんだから確かにそうなるな、と納得。

おれが間違えて教えたのだったらすまん。でもなんでそう思ってたんだろう?


2005-08-11

_ DBE(Development By Example)

今日は仕事Rubyでちょこちょこ書いていたのだが、そこで気づいた開発方法ってのは、DBEという感じだ。

TDDに似てるけど違うのは、僕が仕事用にRubyで作るプログラムというのは文字通りシェルスクリプトというか、シェルから実行するタイプのプログラムだから、全部で1ファイルのような作りになる。だから全然、外部インターフェイスみたいなものを考えないところかな。でも、あらためて考えてみるとそれは関係なさそうだし、そんなこともなさそうだ。

たとえば、gzipを使いたいとする。

でも使ったことない。で、リファレンスを見ながら作るのだが、この時、僕が作りたいのはこんなメソッドだとする。

def foo(str)
  # strをgzip圧縮して返す
end

もちろん、ということはTDD風にtest_fooを作って……という方法はあり得るのだが(というか、書いていて気づいたが、そうできるな。なんで、そうしないんだろう? フィードバックの量に関する問題のような気がする)、何しろ使ったことないんだから実際に動くところを見てみたい。

require 'stringio'
require 'zlib'
buff = StringIO.new
gz = Zlib::GzipWriter.new(buff)
gz.write('abcdef')
gz.finish
print buff.string
buff.close

で、とりあえずこんなのを作ってみる。

$ ruby gz.rb|gunzip
abcdef$

ちゃんと動くじゃん、と確認して、このサンプルプログラムをコピペしてfooを完成させる。

def foo(str)
  buff = StringIO.new
  gz = Zlib::GzipWriter.new(buff)
  gz.write(str)
  gz.finish
  ret = buff.string
  buff.close
  ret
end

もっとも、最初、gz.closeと書いてみたり、

  buff.close
  buff.string
end

とか書いてみたりしたのだが。StringIOはStringWriterとは違うと良くわかった。というようにむしろStringIOのほうで引っかかっていたのだった。

追記:close後に取り出せないことに気づいて上に書いたようなことをやってたわけだけどなかださんのとこStringIO.new(buff = "")と与えて後からbuffを取り出す使い方が想定だと書かれている。そのほうがスマートなのでそう書くべきでしょう。

TDDは繰り返しできるから(残るから)、リファクタリングにも利用できる。DBEは、確認した先から実際のプログラムへ移動して行くから残らない。で、なんでこんなことを書いているのかというと、DBEが成り立つ点が、スクリプト言語の良い点なのかな、と思ったのだった(実際は、CでもVBでもJavaでもこういう簡単な確認プログラムを作って取りあえず試すことは良くやるし、普遍的な方法なのだが、部分切り出しがRuby−−もちろんPerlなんかもそうかも知れないが知らないものは知らないわけである−−だと楽だな)。というか、むしろミソは、パイプでgunzipを繋げられて実行できる環境のほうかも。

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

_ sumim [私も Smalltalk システムで何かを書くとき、似たような手順をふんでいます。興味深いですね。]


2005-08-12

_ スパイク

DBEという呼び方は思いつきだけど、spike(この言葉はDBのスパイクが最初に頭に浮かぶので非常に印象が悪いのだが、そういうのも影響しているかも)って再利用の単位という印象を受けないんだけど、あれもスパイクなのかな(良くわからない)。

なるほど。ブロックを使うというのは思いつかなかった。

require 'stringio'
require 'zlib'
 
def to_zip(data, &p)
  StringIO.open('', 'w') do |out|
    zip(data, out)
    p.call(out.string)
  end
end
 
def zip(data, out)
  gz = Zlib::GzipWriter.new(out)
  gz.write(data)
  gz.finish
end
 
to_zip('abcdef') do |x|
  print x
end

_ CD大人買い

ソウヤーの本と一緒に注文したCDが届く。

LIZARD(リザード)

BABYLON ROCKERS(リザード)

彼岸の王国(LIZARD)

3枚で大人買いとはこれいかに? 値段が半端じゃない。

っていうか、ライナーノートに結構批判的なことも書いていておもしろい。確かに、リザードの歌詞というのは、王国とかエイシャとかの抽象シリーズを除くとちょっと勘弁して欲しいのが多い。ちんけとか。でも「お湯を入れたら3分待つだけ」のメロディーはうまい。

意外なほど王国のテンポ(特に「死の国は近い」のルフランのところ)が早くてちょっと驚く。ブルーの彼方から白い馬が駆けてくるの馬というのは、ロレンスの木馬をいつも想起する。熱に浮かされているところとか、少年とか。

結局、ニューキッズインザシティと王国が一番好きなようだ。宣戦布告のすさまじく軽いポップぶりはすごく好きだが(カシオトーン……)、これも歌詞が辛い。ロボットラブも好きだ(でも東京ロッカーズのテイクのほうがより好きだ)。

彼岸の王国の王国はリザードではエイシャとか、歌詞と曲が全然無関係というのは不思議な感じだが、後から組み合わせるのだろうか。

#高校の頃、古文の教師が「あの歌手になった生徒は本当にぶっ飛んでたけど君ら知ってるだろ?」と言ってたその生徒というのが僕らの間ではずっと謎だったのだが(教師が固有名詞を忘れているうえに、歌手になった先輩がいるなんていうのは誰も知らないことだったからだ。井上なんとかという俳優は有名だったが古文の教師によればそれは全然別だそうだったし)、今思うとモモヨのことだったのだな。


2005-08-13

_ 何も考えないネットワークプログラミング

HTTPクライアントの簡単な実装をすることを想定。

Javaで記述することを前提。

で、最初、何も考えなければURLクラスを使うことになる。

でも、3秒たっても返事がなければあきらめたいと考えたとする。

方法1:

クライアント処理をスレッドで実行し、3秒間のwaitをかけ、3秒後に戻ってきたらタイムアウト。そうじゃなければOK。この場合、スレッド側では結果をどこかに置いておいてからnotifyする。

が、この実装がダメなのは10000回くらい短時間のうちに複数のスレッドが送信処理をするとすると、すごい勢いでスレッドがぽんすかぽんすか作られることだ。

というわけで、そんなことはしないで、

方法2:

モニター専用スレッド(シングルトン)を用意しておき、元のスレッドはコネクションの生成前にこのスレッドの監視テーブルに自分を登録しておいてからおもむろに送受信を開始。終了時に登録解除。モニター専用スレッドは100ミリ間隔くらいで登録テーブルをチェックしエクスパイアしているスレッドを叩き起こす。

とすることを考えてみる。が、それなりに難しい。というのは、叩き起こすと一口に言っても実際にはThread#interruptしか手が無いように見えるからだ。HttpUrlConnection#disconnectでも良いかも知れない?(実装依存に見える)微妙なタイミングの問題があるはずだから、interruptedを呼び出してステートをクリアする必要もありそうだとか、HttpUrlConnectionがSelectorを利用しているかどうかも実装依存だとかいろいろ。

というわけで、やっぱり方法1にしてみたり。

もし、送信先がひとつならシングルトンのコネクションを作ってパイプライニングするほうが賢いかも。しかし、それも難しいだろう。

結局、安全性と確実性を両立させるにはNIOを直接利用するのが良さそうだということになってしまう。それも面倒だ(というか、それならむしろJNIを使うことを前提してCで書いたほうが良いようにも思える)。面倒だと感じるとバグが入るので、やめておくべきだろう。

んがんぐ

_ TSS

Ruby is hot, Java is cool, C# is neither

simplifing it:

Java 1 = Oak = Objective-C + Ada + C++ + Cedar + Smalltalk + Scheme

Ruby = Python + CLU + Eiffel + SmallTalk + Perl

C# 1.0 = C++ + Java + Delphi + VB

C# 2.0 = C# 1.0 + Ruby

Java 2 (v1.5.0) = C# 2.0 + Java 2 (v1.4.2.03)

Has any one seen C Omega...the descendant of C# 2.0?

If ruby is hot then C# is hot, java is cool c# is cool, c# is cool and hot so java is cool and hot too...the circle of languajes is complete. Both worlds are cool and hot =) No fighting...

rubyがホットならC#もホットで、javaがクールならC#もクールで、まあどっちでもいいじゃん。

_ イメージが違う

アランケイ。こんな顔だったのか。

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

Before...

_ Wata [http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/net/URL..]

_ Wata [修正 http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/java/net/..]

_ arton [どうもありがとうございます。 残念なことに実装は1.5からなんですよね……。 システムプロパティは、以前調べた時はグ..]


2005-08-14

_ ハワイ飯

ロイヤルホストでハワイ料理をやっているので、食べる。

最初に食べたハワイ飯は、ラスベガスのダウンタウンで食ったロコモコとスパム握りだったが、はっきり言ってゴミのような食い物だと思ったが、しかし、ジャンクフードというと日本語としては当たり障りがないように耳に聞こえるがゴミのような食い物(「のような」とソフィスティケートしているにもかかわらず)と言うとすごく悪口に聞こえるのはなぜなんだろう。というか、それが日常語ということか。

で、ゴミのような食い物には独特な魅力があるので、日本でも食えるところはないかなとたまに気を付けてメニューを見ていたら、湾岸線沿いのフィッシュ&ティップス(西麻布にあるときはナマズを食った覚えがあるけど)に置いてあって、さすがだ、こういうのってやっぱりサーハーが食べるのか、と思わず納得して注文したら妙にソフィスティケートされていてちょっとがっかり。ゴミのような食い物というよりは、料理という感じだったからだ。

で、ロイヤルホストにスパム握りは無いけどロコモコがあって、これが期待通りのゴミのような料理で、きっとアメリカ人はハンバーガーはバンズのカロリーが高いけど、ロコモコだとライスを使っているからヘルスィーねとか言いながら8杯くらいママさんお代わりってタライを差し出すんだろうな、それじゃQちゃんだ、とかバカなことを言いながら食べるのにちょうど良い感じ。

ブルー・ハワイ [DVD](エルヴィス・プレスリー)

しかし、プレスリーのブルーハワイで、イトウ家の食事はありゃひどい、だってイトウは大食らい、だからイトウはデーブデブとか、プレスリーと白人の美女軍団が、日系人イトウを死ぬほどコケにする(しかもその歌の間中、イトウはむしゃむしゃ何か妙な食い物を食いまくっていたりするのだが)がどうしても脳裏に浮かんで来るのだった。そりゃ、こんなもの食ってりゃなぁ……でもプレスリーもラスベガスでとんでもない状態になってしまって、ブルーハワイの頃のいかしたあんちゃんの面影は無い……そうか、きっとあのダウンタウンの店でロコモコをヘルスィーだと勘違いして食いまくって悔いまくったのだろうかとか、いろいろ考えるのであった。


2005-08-15

_ 8/15

暑い。ですね。

_ 寸鉄釘をさす

たまたま郵政省と郵政族に深い恨みを持った、ちょっと頭の弱いポピュリスト政治家

多分、「たまたま」は「持った」にはかからず直前の文にかかるはずだが、読点の位置のせいで「持った」にかかっているように読めるのがおもしろい。

「話が長くなるから以下、簡単に書けば…」の頁

(注:本当は「人を刺す」だというのはわかっているが、釘をさすほうがおもしろいと思う)

(追記:いや、どうも「持った」にかかるで正しいようにも読めるな。YKK対談のころからやたらとゆーせーゆーせー言っていたけどそれはたまたま恨みを持ったからなんだろうか。元から恨みを持っていたのがたまたま潮流に乗ったのか、どっちなんだろ?)


2005-08-16

_ yarv-3.0

You can get Rite now. もうRubyにパッチを当てなくても良いのか。それは素晴らしい。
ar rcu libruby-static.a array.o ascii.o bignum.o class.o compar.o dir.o (略)  dmyext.o
gcc -g -O2 -pipe -fno-common   -I. -I.  -c main.c
gcc main.o  libruby-static.a -ldl -lobjc   -o miniruby -g -O2 -pipe -fno-common    
/usr/bin/ld: multiple definitions of symbol _ruby_in_eval
libruby-static.a(eval.o) definition of _ruby_in_eval in section (__DATA,__common)
libruby-static.a(error.o) definition of _ruby_in_eval in section (__DATA,__common)
collect2: ld returned 1 exit status
make: *** [miniruby] Error 1
しょぼーん。というか、
$ grep ruby_in_eval *.c
error.c:int ruby_in_eval;
error.c:    ruby_in_eval = 0;
error.c:    if (ruby_in_eval) {
eval.c:int ruby_in_eval;
parse.c:// static int ruby_in_eval = 1;
parse.c:    compile_for_eval = ruby_in_eval;
yarvcore.c:RUBY_EXTERN int ruby_in_eval;
yarvcore.c:    ruby_in_eval++;
yarvcore.c:    ruby_in_eval--;

なんだから、error.cのruby_in_evalをRUBY_EXTERNで修飾すれば良いのか。と言いながら、今日はここまで。

ちなみに

$ gcc -v
Reading specs from /usr/lib/gcc/powerpc-apple-darwin8/4.0.0/specs
Configured with: /private/var/tmp/gcc/gcc-4061.obj~8/src/configure --disable-checking --prefix=/usr --mandir=/share/man --enable-languages=c,objc,c++,obj-c++ --program-transform-name=/^[cg][^+.-]*$/s/$/-4.0/ --with-gxx-include-dir=/include/gcc/darwin/4.0/c++ --build=powerpc-apple-darwin8 --host=powerpc-apple-darwin8 --target=powerpc-apple-darwin8
Thread model: posix
gcc version 4.0.0 20041026 (Apple Computer, Inc. build 4061)

でも、1行ならやっちまえ。……でけた。

$ ./miniruby -v
ruby 1.9.0 (2005-08-13) [powerpc-darwin8.2.0]
YARVCore 0.3.0 (rev: 236)
YARVCore options: 

が、

$ make test
./mkconfig.rb:154: [BUG] Bus Error
ruby 1.9.0 (2005-08-13) [powerpc-darwin8.2.0]
 
make: *** [.rbconfig.time] Abort trap
……
本日のツッコミ(全4件) [ツッコミを入れる]

Before...

_ ささだ [ちなみに、YARV のテストは make yarv-test-all です。ただ、0.3.0 版ではテストコードを間..]

_ arton [>make yarv-test-all あ、それでファイルが無いよと怒られたのか。夜になったら試してみます。]

_ brijgum [http://freewebs.com/airlineticketall/ airline ticket htt..]


2005-08-17

_ yarv-3.0(続)

svnを作るためにbdbから入れることになるとは思わなかったが、このあたりは何も考えずに./configure;make;sudo make installできるので楽だ。

が、手順を間違えたらしいのでまた次回。

_ おもしろい

堀江貴文のお仕事相談Blog

ちょっと長めなのが、上がり症の人と、バイトと、取引先分散。具体的なことを訊くとそれなりに具体的な答え。人生相談みたいなことを訊くとあっさり。これ読んでる限りはすげぇいいやつに見える。

tpircsさんのとこから


2005-08-18

_ 自動改札機

厚木方面で見たことある。

_ Cでしゃべる男

TechEDの安全コードのセッションで、テオ(シーオか?)はMSが雇ったことがあるハッカーの中でも特別な存在で、まさにCをしゃべるために生まれてきたみたいだった、といような余談の中で、そのテオのありがたいお言葉として「幾らコードを眺めてもわからん、それが算術演算がらみのバグだ」ってのを紹介していた。Cをしゃべる男がそういうくらいだから我々凡人はコードを眺める以前の段階から攻めなきゃならない。

で、その理由はCの型上げ規則が複雑だということととかいろいろ。

// len.c (注:このコードがセッションに出てきたわけではない。思い出しながら再構成している)
#include <stdio.h>
#include <stdlib.h>
#include <limits.h>
#if defined(BUG)
int SIZE = 1024;
#else
size_t SIZE = 1024;
#endif
void copy(char* p, int off, int len) {
  char buff[SIZE];
  int end = strlen(p);
  if (off + len > end) {
    printf("argment overflow: bad off=%d, len=%d, real=%d\n", off, len, end);
  } else if (len + 1 > SIZE) {
    printf("buffer overflow: bad off=%d, len=%d, real=%d\n", off, len, end);
  } else {
    strncpy(buff, p + off, len);
    buff[len] = 0;
    puts(buff);
  }
}
int main(int argc, char* argv[]) {
  copy("abc", 0, SIZE_MAX - 1);
}
に対して
$gcc len.c -o len;./len
buffer overflow: bad off=0, len=-2, real=3
$gcc -DBUG len.c -o len;./len
セグメント例外 (core dumped)

コードの見た目は引数の長さを越えたり、バッファ長を越えたりしないように検証しているように見える。しかし、SIZEという定数の型の違いで正しく弾くこともできれば、死ぬこともできる。

結論は、負になるはずが無い長さを符号付きの型で宣言するな、というのが教訓(っていうか、そのためのsize_t)。

#追記:もう、strncpyとかsnprintfとかは常識なので、今の攻撃側のトレンドは上の例のような算術オーバーフローを利用したバッファオーバーフローらしい。

2005-08-19

_ PowerBookで燃えろ

B0000A40QT

あまりの熱さに手のひらが真っ赤になってしまったので、とうとう愛想銀行の貯金が満期を迎えた(というような言い回しががきデカにあったはずだが、良くそんなことを覚えているな、と自分でも感心するが、本当はなんだったっけ?)。

で、ついにジェルパッドを購入。

手がマウスパッドから遠くなった分、微妙に使いにくくなったような気もするけれど、すくなくても手首の灼熱地獄からは多少解放されたように思える。というか、そんなに熱くならないぞ。

っていうか、マカーって、熱さに強いのか? だったらおれはドザーで良いぞ、と思いながらも、なんか快適なのでPowerBookを使うのであった。

_ ツッコミスパム(アルファベットで話題にすると喜ばれたりするかも知れんからカタカナ表記だ)

なんか、今日のは手打ちの雰囲気が濃厚。なんなんだ? とりあえずbodyが6バイト以下はフィルタリングすることにしたので、good! とかつっこんでも消えます。

_ yarv-3.0

今、こんな感じ。
$ make yarv-test-all
ruby -I. ./yarvtest/runner.rb  yarv=./miniruby ruby=ruby
"./yarvtest/test_bin.rb"
/Users/arton/devl/yarv-head/yarv/yarvtest/yarvtest.rb:4:in `require': no such file to load -- yarvutil (LoadError)
	from /Users/arton/devl/yarv-head/yarv/yarvtest/yarvtest.rb:4
	from /Users/arton/devl/yarv-head/yarv/yarvtest/test_bin.rb:1
	from ./yarvtest/runner.rb:7
	from ./yarvtest/runner.rb:5
make: *** [yarv-test-all] Error 1
良くわかんないが、yarvutil.rbなら./yarvextの下にあるようだ。
$ ruby -I./yarvext ./yarvtest/runner.rb yarv=./miniruby ruby=ruby
"./yarvtest/test_bin.rb"
/Users/arton/devl/yarv-head/yarv/yarvext/yarvutil.rb:2:in `require': no such file to load -- yarvcore (LoadError)
	from /Users/arton/devl/yarv-head/yarv/yarvext/yarvutil.rb:2
	from /Users/arton/devl/yarv-head/yarv/yarvtest/yarvtest.rb:4
	from /Users/arton/devl/yarv-head/yarv/yarvtest/test_bin.rb:1
	from ./yarvtest/runner.rb:7
	from ./yarvtest/runner.rb:5
yarvcoreってどこにあるんだ?
$ find . -name yarvcore?* -print
./.svn/prop-base/yarvcore.c.svn-base
 (略)
./.svn/wcprops/yarvcore.h.svn-work
./yarvcore.c
./yarvcore.h
./yarvcore.o

_ Permission denied

うう、ごめんなさい。

逆に半年くらい経過したらパーミッションを変えていけば過去日記にスパムされなく/できなくなるわけか……。とりあえず2003と2004はオウナーを変えておいてみよう。

というのはむしろ余談で、上のyarvの件は「eval.cパッチ付きrubyが原因」ということでした。(こないだついmake installまで実行したからな……)

やり直してみます。

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

Before...

_ arton [割といいよ。しかし、なんかおかしいのだが。Apple純正ジェルパッドとか出してないから勘弁してやる(と意味なく強がる..]

_  [ほんとだ。すごく良いですよ。私のスタイルよりもちょっとだけ厚いけど、ぜんぜん熱くないです。ありがとうございました。]

_ arton [気に入ってもらえて良かった。]


2005-08-20

_ TheoをMSは雇ったことあるのかな?

同時通訳だったし、聞き違えてる可能性もあるからなんとも言えない。

たとえば、「Theoっていうすげぇやつがいるんだけど、もっともMSにだってすげぇのはいっぱいいるけどさ」、みたいなノリの軽口が、「TheoっていうすげぇのがMSにいるけどさ」、と訳されて、さらに脳内で「いる」はありえないだろと「いた」と聴いたとか。

とは言っても、いたことがあってもこれっぽちも不思議でもない(BSDの何かをNTへポーティングするのを請け負ったとか可能性はいくらでもありそうだし)ので、結論としてはわからない。一応、気になって調べたけど、言動とコードは出てきても経歴は出てこない謎の男(あるいは男の中の男)だな。

_ てーすー

がーん、Collections.EMPTY_LISTだのCollections.EMPTY_MAPだのが定義されていると、今、気付いた。


2005-08-21

_ FindBugs完全解説 Amazon在庫切れ

開発のプロが教える標準FindBugs完全解説―Javaバグパターンの詳細と対策 (デベロッパー・ツール・シリーズ)(るいも, 宇野)

なんとも言えない複雑な心境。

#たくさん買ってもらえて嬉しい、ありがとう

とか

#少ししか仕入れなかったんだな、ぐぞー

とか

#とてもアメリカ人のセンス(Wizardry世代だし)とは思えない可愛い虫だな

とかいろいろ。

_ if

もしもRSSが1991年あたりにあったなら、きっとFeedsという商標をとっただろう。

もしもRSSが1994年にあったなら、きっとVisual Feedという名前をつけただろう。

もしもRSSが1997年にあったなら、きっとActive Feedという名前をつけただろう。

もしもRSSが2000年にあったなら(まだ1.3.2とかだから無いことにしても良いかな)、きっと.NET Feedという名前をつけただろう。

もしもRSSが2003年にあったなら(って、あるような)、きっとFeed 2003という名前をつけただろう。

で、2006年には、Web Feed……。

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

Before...

_ kahei [営業に確認しましたが、今日(8月23日)が発売日なので、まだアマゾンに入荷していないだけだそうです。残念。(^^;]

_ nahi [Active Channelはsmart pullだからRSSと同じ。MS的には再挑戦じゃないかしら。ちなみにRSS..]

_ arton [やっぱり無いことにしてはだめか...というか、すごく濃いMLですね。 あと、マシンパワーも大きいかな。>再挑戦]


2005-08-22

_ 将棋の子

将棋の子 (講談社文庫)(大崎 善生)

yomoyomoさんの読書記録を読んで、なんとなく読みたくなって購入して3ヶ月くらい、昨日、つい読んでしまった。

とんでもなく身につまされる部分が多々あることとかはおいておいて、1番、ぐらっと来たのは、高速道路に関連するところだった。

主役の成田英二は(というか出て来る棋士の卵は全員そうなわけだけど)天才だから、人の真似はイヤ、定跡の研究をすると人真似になる、おれはおれの将棋がある、だから序盤はどうでも良く、終盤に賭けると言い放つ。詰め将棋は解かない、おれが作る。というタイプで、多分、そういう棋士はたくさんいたんじゃないのかな。が、昭和57年あたりからぞろぞろ違う考え方の子供(なんだな、実際に)がたくさんやって来る。

しかし、その終盤重視の理論は昭和57年に入会した羽生善治を中心とした天才少年軍団によって駆逐されていくことになる。序盤と定跡の研究こそが最重要課題であり、その知識や研究の深さが勝敗に直結していくというのが、新世代の俊英たちの考え方であった。終盤というのはあらかじめ答えが提示されている領域であり、極端にいえば高度な技術を持つ者ならば、誰が指しても同じことになる、というのが羽生の理論であった。

終盤は完全に読みきれる―(略)―要求されるのは感性や才能といったものではなく―(略)―詰将棋を解く訓練は必要不可欠―(略)―終盤の緻密な計算力を高めるトレーニング―(略)―。

ひらめきや創造性は、まだほとんど何も確立されていない序盤から中盤という領域にこそ必要なものであり、そのためには知識と研究の裏づけが最重要という考え方であった。

将棋の歴史と積み重ね、研究すべき定跡の数と比較するのはおこがましいが、元々高速道路として作られたある分野にも言えていることじゃないか、と僕には読める。

人間の行動や心理は、現時点では緻密な科学ではなく、ある状況に対してどう反応するかの行動パターンに当てはめることである程度までは読めるというのが、人間系の科学だ。したがって、良く似た分野の現象は他の分野でも観察可能だったりするし、その類推から歴史の流れる方向は見えるものだ。

つまり、天才の度合いは違えども、ここに出て来る人間たちと似たような種類の連中を僕は本で読んだりMLで見かけたり、mixiで暴れたりしているのを知っているぞ?

序盤―終盤という分け方は、設計―実装と置き換えることができるように見える。(設計−実装という一連の流れ自体が入れ子になっているのが多少異なる点か)

僕は、TDDやYAGNIの信奉者だから、作ってからリファクタリングして構造を洗練させていくべきだと考える。しかし洗練させた先にあるものは、結局は定跡である。この方法論は、つまり過渡的な手法に過ぎず、最終的には、最初から洗練されたものであるべきになるということに落ち着く。

終盤は高度な人間であれば誰がやっても同じになる。それはその通りだ。コードはともかく実行の過程では。仕上げはすでにコンパイラの最適化が走る。高度ではない人間がたくさんいるから、将棋ほど洗練されていないだけの話だ。

敷衍させて考えれば、終盤の高度な計算は、パターンやイディオムを織り込んだDSLインスタンスからコードへのジェネレータが持つ。このerは高度な計算が可能で、かつ誰がやっても同じの誰にふさわしいerだ。

重要なのは、DSLの定義とジェネレータの実装で、これが序盤に相当する。

つまり、やはり、それが時代の方向性であろうな、というようなことを読みながら考えたのだった。

追記:入れ子をもっと大きく取れば、外部設計が序盤、要件定義が序盤というように広げられる(し、確かにシステムとしてはそこで結果が見えるという意味ではそれは当然だ)が、そこまで広げると嘘っぽい気がする。というのは、そこまで序盤を広げると終盤の一意性が決まらないと考えられるからだ(見えた結果が霧の彼方に行ってしまうのは棋力が不足しているのが原因かも知れないが、はなから現実味が無かったからかも知れない)。無理なものは無理だから、実装可能な範囲を盤上に当て嵌めたほうが良さそうだ。

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

Before...

_ arton [勝てない、といきなり書くのは語弊を招くと気づいた。ハックは才能だと思う。ここで勝負しようとすれば、勝てない。ビルジョ..]

_  [うん。読んだり書いたりして悩まないと定跡は手に入らない気がします。]

_  [局面と定跡とがパターンマッチングできるか否かも。]


2005-08-23

_ はちみつのくに

くまが蜂蜜を好きだと言うのは本当なんだろうか。

蜂蜜って生で食べると中毒をすると見かけたが本当だろうか?

乳児にはボツリヌス菌がまずいというのを見たのかな。

しかし、ツツジの毒性から中毒というのもあるようだ。

人間用のは毒性のある植物からは作らないだろうから、後者は考えにくい。でも、熊だったら蜂蜜屋から買うわけじゃなくてそのへんの蜂の巣から食べるわけだから、蜂が毒性を持つ植物から蜂蜜を作れば中毒になってもおかしくはなさそうだ。

山の中を歩いていると苦しみもがいているくまがいて、口のまわりと手をべとべとにしている。

そんな光景がありえるのだろうか。

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

_ unibon [気になってネットで熊と蜂蜜を調べてたら、熊の手は右手が美味しくて高いそうです。]

_  [やっぱり右利きが多いんでしょうか?]


2005-08-24

_

どうも聞こえが悪いので耳鼻科へ行ったら聞こえると思った方が悪くて、聞こえにくいと思ったほうが良かったり。

もっとも耳は聞きたくないものをフィルタリングできるから、物理的な原因じゃないのかもとか考えてみたり。

_ ぞろぞろ

どうして、昭和57年あたりからぞろぞろか、特に理由は書いていないので想像してみる。

しかし、想像してみなくてもなんとなくわかる。高速道路を建設した田中角栄みたいなやつがいたからだ。その方法論を確立して、自分+仲間で共有して実践して効果を確認してみた人間が。だから、その人間は高速道路の話をすっ、と話してみせることができるんだろう。高速道路は造ったから後のことは自分で考えろ、と言うことであるな。

方法論を確立するためには、実証が不可欠だし、特異点であっては意味がないから、普及させて観察する必要もあるはずだ。と考えると勝負の世界の住人でありながら、同時に方法論の普及者でもある必要がある。見方によっては敵に塩を送る行為でもあるわけだが、全体最適化と考えることもできるし、かつ自分がさらに上を行けるという確信があったのだろう。

なんというか、実にオプソな感じがしてならないのは、そっちの方向から推測しているからなんだろうが、でも、当たらずといえども遠からずだろうな、という確信は根拠なく持てる。

ちなみに、高校にまじめに通うというスタイルを確立させたりもしたらしい(それまでは、そういうスタイルの棋士の卵っていうのはあまりいなかったようだ)。

別の面から考えてみると、バブルの頃でみんなお金持ちな気分になっているから、勝負へのこだわりよりも方法論の実証とかのほうがおもしろかったとかもあるかも。

というか、単純に人柄が良かったとかだったり。


2005-08-25

_ 縄文人と弥生人

子供と国立博物館。

500年の差って大きいんだな、と知る。徳川400年+明治100年と考えれば……そんなに変わらない気もするけど。

縄文人は焼かずに茹でる。なんでも茹でる。縄文時代の歯無しばあさんの骨の説明「食べ物は柔らかく茹でているので問題なし」

これも知らなかった。生で食ってるのかと思ってた。

犬:縄文人。ペット。一緒に埋葬

 弥生人。食べ物。おいしい(とはどこにも書いてない。食べずに口に合うかどうかは判断できない)

どの時点でペットに戻ったんだろう? 元禄時代だったり。

骨の傷。弥生時代は一撃必殺。ほとんどが出血多量でショック死とか書いてある。縄文時代のは自然治癒(というか、その後も生きているとか。でも、死人に口なしだから、これは差になるのかどうか)

弥生トシ。トシって都市なのか調べようと思って忘れてたからメモだけしとく。(追記:別に用語じゃなくて、単に縄文ムラvs弥生トシという対比のために使っただけみたいだ)

四国と東北の交流。親潮/黒潮を利用してたのかな、と思った。

靴の土偶。しかし1つしか見つかっていない+取っ手が付いていたという事実からは、縄文人が靴を履いていたと考えるよりは、コップを作り損なったと考えるほうが自然だと思った。

_ いつのまに?

面倒なので、ここのURLは、/diary/と最後にスラッシュを必須にしている。/diaryだと404。

でも、今までIEは末尾の/を覚えていなかったように思うんだけど、今日、久々にIEを使ったら覚えていた。夢だったか?

_ 例外

try {
    foo.bar();
    fail("no exception");
} catch (Exception e) { // とりあえず全部取る
    assertTrue(e.getMessage(), e instanceof TargetException);
}

2005-08-26

_ 天才バカボンのパパなのだ

赤塚不二夫名作選 (2) (小学館文庫―赤塚不二夫名作選)(赤塚 不二夫)

「ノデアル・ノダ」表現は著者の強調であり、思い入れであり、押しつけであり、著者の高い姿勢を見せるため、読者に優しくない。

−−capsctrldays『日本語練習帳』より孫引き

そうなのだ。バカボンのパパは人に優しくないのだ。なぜならバカボンのパパなのだは強調なのだ。だってわしはパパだからパパなのだ。だからしょうがないのだ。でもそれは単なる思い入れだったのだ。ではわしはなんなのだ?

しばし、黙考なーのだ。

答えは、「であり」にあり、なのだ。

次のように変形するとダメなのだろう、なのだ。

「ノデアル・ノダ」表現は著者の強調「なノ」デアリ、思い入れ「なノ」デアリ、押しつけ「なノ」デアリ、著者の高い姿勢を見せるため、読者に優しくない「(な)ノ」デアル。

ということは、問題なのは、槍玉に挙げられているのは「ナノ」なのだ。これを押しつけのためのナノテクノロジーと呼ぶ、なのだ。

_ うんうん

身につまされる英語の話。おいらもクールビズな対応できるようにならなきゃなぁ。

追記:最初こっちにリンクしてた。ムズイ。値渡し引数への代入が問題なのか、unsigned shortをなぜ16ビット左へシフトするのか、一体何がしたいかどういう文脈なのかわからないのでなにもいえないコードの例(ということにしておこう)。

_ CodeZine第4弾

Proxyの利用方法

初心者用記事のつもり。と言ってもinterfaceと実体(実装)の違い、フィルタリングによるAOP概念の実装などについての、初心者(!=プログラミング初心者)用記事。したがって、現実主義のサンプルを出してみた。


2005-08-27

_ なお

うーん、推敲して相当消し込んだつもりだが、妙に「なお」が多いなお。

関連するけど前段とは異なるものを付け加えるぞ、という場合には、他にも「余談になるが」とか「また」とか「ちなみに」とか「この時……ことは」とか「ついでに言えば」とか選択肢があって、一時期「ちなみに」が目立っていて意識的に変えようとしたら「なお」の連続技になってしまったようだ。

そんなものは付け加えないという選択肢はでも選ぶ気にならんのだな。

なお|ちなみに|付け加えておくと|この時|とは言え(これは意味が変わるな)|いやはや(嘘)|というわけで(これも意味が異なる)|試しに(これは新鮮味があるようだ)|そんなこんなで(これはだめ)|という具合に(この手のと……というのは使い方が難しい)|なんて具合に(これもと……の類だな)|余談になるが、接続詞を付けないというのをやってみると、文(のリズム)が途切れてしまうので、それはいやだし。


2005-08-28

_ 荒ぶる

用例1: 畏怖された荒ぶる神

用例2:神速を尊ぶやるぶる神

_ 覚えてることの一部

soutaroさんの厳しいツッコミと、truby。

greenteaさんの気前の良さにびっくり。増井さんの不味いものへの嫌悪に興味を惹かれる(追記:不味いものがイヤなのはあたりまえだけど、不味いについての語り口がおもしろかった)。確かにワインがコップに出てくれば気分が削がれる。興を削ぐが正しいかも。

中田さんの謎っぷり。あれだけ酒呑んでどうしてパッチがポケットからひょいひょい出てくるんだ?

高橋さんの赤と黒。

最速の人のルックス。ルックスと言えば本物のモヒカン。otsuneさんが集団に混じっていれば歌舞伎町でたむろしたり歩いたりしてても怖くない。

かんさんはでかい。wemaライブラリの公開というのに期待(HTAやDashboardとうまく組み合わせられないかとか考えてみたり)

akrさんがるびまの写真と同じですぐにわかったこととか。というかMixJuiceってmixinベースのAOP(そんな言い方は無いか)なんだから、AOPについてどう思ってんのかもうちょっと聴きたかった。

たださんの帽子とむらまささんの眼鏡とひげ。なんかこのお2人は大正から昭和初期の世界のようだった(かわぐちかいじが今どっかに連載してるやつとか――戦中か)。

DSLがどうしたとか話していたらDLLがどうしたと突然返してきたおねいさん。

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

_ ただただし [昭和初期を気取るなら、白い開襟シャツにすればよかったですかねぇ]

_ arton [それはやり過ぎ。と思ったけど、iPodが保護色で隠れてよいかも。]


2005-08-29

_ 断片

輝く断片 (奇想コレクション)(シオドア・スタージョン)

なんか、妻が図書館から借りてきたのでつい読んでしまった。

すごく不思議なんだが、みんなこれ読んで主人公に共感すんだろうか? っていうか、しないわけでもないんだが、絶対、どっかおかしいんじゃないだろか。

どうして疎外感の固まりの人間を主人公において物語が成り立つのか。怖いものみたさとして受け取るのか、ああわかるわかると受け取るのかってすごく大きな差だと思う。

というわけで、SFとして考えれば確かにでたらめなんだが、恐怖を忘れさせる兵器のやつが一番心地よかったり。

ヘンリー・ダーガー 非現実の王国で(マグレガー,ジョン・M.)

それにしても、どの作品も主人公がヘンリーダーガー(ちょっと脳に欠損があったせいでいろいろ苦労したらしいが結局、病院の掃除夫をしながら老いて死んだ。で、家主が部屋を片づけたら出るわ出るわ、山のように絵が出てきた。どれもこれも少女がたくさん。でもみんな股間に一物が。生涯童貞だったせいで、どうなってるか知らなかったからだ。っていうかそのての本や映画も見たこと無いってことだから−−アメリカだから調べりゃちゃんとわかるわけだが、考えてみたら日本だとネットワークが不通な人だと本気でわからんのか。それも不思議な話だな−−(ということにしたい人がそういうことにしたんであって、知っているけどそう書いたって可能性もあるじゃん、と気づいたぞ)、本当に職場と家を単純に行き来して夜な夜な絵を描くだけという妄想生涯)みたいで、スタージョンは実はヘンリーダーガーと出会っていたんじゃないかとか、アメリカって国にはヘンリーダーガーが何万人もいるんじゃないかとか、そんな印象も受ける。特に重婚のやつなんか職業も同じだったり、表題作もなんか似たような境遇であるなとか。

例えばロバートブロックのサイコもの(帽子の上の小鬼とか、映画のサイコもそうか)とかが、技巧的で明らかに変なやつ(観察対象としての)の物語なのに、スタージョンのってどうにも観察対象の物語ではなく当事者の物語に見える。人称の問題ではない(ブロックの帽子の上の小鬼は一人称だ)。それが強く出過ぎると妙にしつこくなってしまうのかも知れない(重婚のやつはしつこ過ぎて途中でどうでも良くなってきた)。ミドリザルのは良い感じ。無理矢理妙な落とし方をしているが、あの偉そうな説教を皮肉として書きたかったんじゃないかなと思った。

あとは、やはりしつこ過ぎてうんざりしてくるが、いつも微笑んでいるやつは、2人の登場人物が両方とも良い塩梅にいかれているのが結構良い感じだった。

それにつけても 巨匠に会ったら巨匠を殺せというのは、わかりやすい良い話だった。音楽の謎に迫るところが特に気に入った。

_ VB(.net)おもしろい。

Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim a() As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ReDim a(-2)
        MessageBox.Show(UBound(a))
    End Sub
End Class

と書くと、その瞬間、-2に赤いにょろにょろが付く。予想した動作。

Public Class Form1
    Inherits System.Windows.Forms.Form
    Dim a() As Integer
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        ReDim a(-1)
        MessageBox.Show(UBound(a))
    End Sub
End Class

ほー。(0)で1ってのは知ってたけどこいつは知らなかった。

via @it。しかし、newしろとかレイトバインディングがどうしたとか、どうでもいいじゃん。っていうか、VB.NETで記述するんならVB文法使え。でもStringColletionには賛成。


2005-08-30

_ VBなまり

おれは、Rubyでプログラムを書く場合は、できるだけRubyなまりで書きたいし、Cで書く場合はCなまりで書きたいし、Javaで書く場合はJavaなまりで書きたいし……(言語の数だけ続く)。

そうじゃなきゃ、その言語を使う意味ないじゃん。そんなに共通のもので書きたきゃMSILで書きゃいいじゃん。あれはちょろいし、読みやすい。

どうして、どこまで行っても、VBerってのは、発想がVBerなんだろう? VB固有の構文でがんがん書きゃいいのに。っていうか、そんなにnewって書きたいもんか? こっちは、いかにnewと書かずに済ませられるかを考えているんだが。

そのくせ、コレクション使うのは配列との相互運用がどうしたとか平然と書いていたり。配列使うなよ。自動的には伸張しないよ。でもReDimは禁止らしいし。

VB.NETはVBの記述に慣れた人へVBっぽい言語を提供することにあるはずだ。ならば、VBの記述を使うべきじゃん。新たなものを覚えるんだったらC#とかF#とか#言語を使えばよろしい。と思う。

違和感を覚えないのが不思議だ。

やはり、あの場には異常な雰囲気が漂っているから立ち入らないほうが良さそうだ。-1はおもしろかったけど。

_ Webアプリケーション開発

どうにもかったるい。

出だしの部分。

なんでだ?

WinForm系のやつだと、IDE開いてとりあえずボタンを貼り付けてクリクリしてちゃかちゃか書いてGOボタンのクリックで始められる。

コンソール系のやつだとEmacsで書いて保存してシェルモードで動かせる。

そうか、エディターと表示がシームレスじゃない上に遅いのが原因だな。ASP.NETでさえ、WinFormに比べると死ぬほど遅い(多分、FrontPageエクステンションかWebDAVかが動いているあたり)。だから、VB.NETのReDimってどうだっけとか試すときにASP.NETじゃなくてWinFormを選ぶわけか。反応が同じならどっちだって構わんわけだし。

ってことは、ブラウザーを開いて、ちゃかちゃか書いてサブミットするといきなり実行できれば良い……ってそのまんまじゃセキュリティホールじゃん。

それについては、127.0.0.1からのアクセスに絞れば良いからそんなに問題じゃなかろう。ということは、WebサーバーがIDEならばよろしい。

AjaxでIME作るすごい人もいるんだから、WebサーバーベースのIDEなんてどこにでも転がってそうだ(でも探すより作る方がもしかしたら早いかも。誰か作ってくんない?)。Ajaxでコード補完ですかそうですか。可能だな(TELNETでできることはHTTPでもできる。そりゃ1文字POSTするのに、馬鹿馬鹿しいほど余分なデータがくっつくが(POST ディレクトリ HTTP/1.0\r\n\r\nは最低でも必要だし)、それはネットワークが早いんだから――1200bps程度の端末でやってたころを考えれば100Baseなわけだし――本当に可能かな? 可能だな。IFrameを組み合わせて編集と表示を統合することもできそうだ。ページデザインはフレームにツールボックスを置いてD&Dすれば良いと思う。置いたコントロールと位置情報をPOSTするとそこにタグを埋め込んでPOSTバックされるからそれを表示。という感じか。

ふむ。

_ go, goto go!

TDDしてんだろ? ユニットテストで動作を確認してんじゃないの? ガンガン使えばいいんだよ。そのほうが良いと思ったら。気に食わなきゃリファクタリングすりゃ良いし、どうでもいいじゃん。

っていうか、どうして馬車馬みたく、自分の目の両側に壁を付ける連中がいて、しかもそういう連中に限って声がでかいんだろうね?

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

Before...

_ matobaa [WebサーバがIDE! 面白そうだ!]

_ anonymous coward [ブラウザで動く簡易IDE もどきを作ってますけど、つらいです。prototype.js でブラウザ間の挙動を吸収でき..]

_ arton [なるほど。でも、限定してしまえばどうですか? IEかFireFoxの2種類に対応すれば(とSafari使いながら書い..]


2005-08-31

_ いかん

JavaScriptの使い方を調べていたら終わってしまった。

_ caller

JScriptを眺めていたらcallerというMSの拡張キーワードを見つけた。メソッドの呼び出し元の参照が入っているらしい。

class境界が無い事の代替かなと見た時に思ったんだけど実際のところどうなんだろう?

_ 大爆笑

でも、自分は確信しましたよ。ほんと、こいつら場所なんてどこでもいいんだ

なって。酒すら飲まないヤツも多いし。ほんとに公園で全然オッケーなんだなっ

て。だから、なんかもっともらしい場所予約してカネかけるくらいなら、公園

のほうが全然いいじゃんって思いましたよ。

−−バカが往く

それに静かだしね。

でも、電源と無線LANと多分プロジェクタとホワイトボードがあるほうがもっと良いかも。

_ すばらしい

デキシーミッドナイトランナーズが好きだ。

Don't Stand Me Down(Dexys Midnight Runners)

This Is What She's Likeを聴く。何度も聴く。思わず聴く。そしてまた聴く。12:23もある大曲というか4曲分というか、なんなんだろうね? 特に8分目からのちょっとセツナ目のブラスで始まってウーウーって唸りながらオーワーに続けるやつ。相変わらずバックにはブツブツ言う声。そしてオワオワオワウッウウウッー、どうしてこういう曲が作れるんだろう? たまにピアノがピョロローとグリサンド、スネアがシュピシュピ、ベースがデデデデと楽しそうなバンドだ。死んでも生きているマエストロみたいなもんだ。どうやっても何をやってもバンドが誰でもケビンローランド。

本来の好みとはまったく無関係に、ケビンローランドの声なのか、曲なのか、詩なのか、いやアティチュード(1985年のCDなんだから80年代キーワードのこれが一番合ってるだろ)が好きなんだ。どこの誰がこんな気持ちが悪い写真のCDを買いたがるんだろう? そりゃ、やっぱりケビンローランドが好きなやつだ。つまりおれだ。


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|

ジェズイットを見習え