トップ 最新 追記

日々の破片

著作一覧

2008-12-01

_ いいやつオビーのRails Way

翔泳社の野村さんからRails Wayをいただいた。

ゼド・ショウ曰くのいいやつオビーのRails本だ。時期的には1.2の頃に、edge Railsを使って2.0についても記述したということで、既に2.2が出ている以上、微妙に時期がずれているようでもあり、普通にRailsを使うには別段問題ないようでもあり、というところだろう。

一通り眺めた感じでは、確かにオジーはいいやつらしく、広い話題をまんべんなく取り上げ、バランス良くRails Wayについて書いているようだ。序文ではDHHが「Railsで何かを行う方法だけでなく、そのように行われる理由についても理解する必要があります」……「RailsでHello Worldを作成する方法なら1人でも習得できますが、Railsのゲシュタルトを知り、理解することはそれほど簡単ではありません。ObieがこのRailsの旅で読者を助けようとしていることに拍手を送ります」と、Rails Way重要、オビーはそれをやっていると書いている。

分厚い本だが、一番力が入っているのはActiveRecordで140ページ近く(といっても600ページ弱の本だから1/4というところだ)をさいていて、ここだけで1冊になりそうな勢いだ。

2.0という点では、RESTとリソースに1章使っているところが目立つ。

あと、オジーはRailsConf2006で唯一のフィクスチャを気に入っている人らしいが(自分でそう書いているのだからそうなのだろう。というか、そんなに嫌われているんだろうか。僕も好きなんだが)、テストについてもかっちり書いている。特にRSpecとRSpec on Railsプラグイン(この本はプラギンとは訳していない)について20ページほど書いている。まとまったものとしては、多いのではないかな。

個人的には、僕が書いた2冊目のほうの10日本を教科書にして、Rails Wayを参考書にして学習するのが中庸なRails学習だなぁとか思った。

Rails Way (Professional Ruby Series)(Obie Fernandez)

というわけで、チュートリアルには1.2ベース(2.0への対応については付録PDF)だけど10日本をどうぞ。

10日でおぼえる Ruby on Rails入門教室(arton)

あと、この本(Rails Wayではなく10日本)についてアマゾンでは誤植が多いと書かれているけど、特にレビュアーの岸田さん(@kisではない)と編集のお二方のご尽力もあって、奇跡的に少ないので(現時点で3個だし、そのうち2個はある意味、不可抗力的な突発事項に由来している)、不思議だ。

構成上、章ごとの練習問題をゼロベースにしようがないので(フルスタックだからだが)、その章で作成されたソースを発展させたり確認したりを練習問題で行って、次の章ではその状態で開始する(解けなかった場合は解答を参照してソースを更新した状態で開始する)のが、ソースコードが手元と本で異なるので誤植と誤解されたのかなぁとか想像しているのだが。この方法はそういう点であまり良くなかったのかも知れない(でも、練習問題をまじめにしたらソースは変わってしまうわけで、どうするのが良かったのかなぁとか考える)。

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

_ ムムリク [どのあたりに誤植(と思われる部分)があったのかブログでもなんでも報告してくれると集合知という意味でも意義がありますね..]


2008-12-02

_ Ruby-1.9.1-preview2 インストーラパッケージ

riを入れるとサイズがでかくなりすぎるので、previewが付いている間は、ri用のドキュメントを外した格好でパッケージングします。大体10MB弱。

Rubyパッケージ置き場へどうぞ。

添付のリファレンスマニュアルは、okkezさんの1.9.0 chm最新版です(感謝!)。

_ Ruby-1.9.1で引っかかったコード

icmpping.rbを使ってテストしようとしたらエラーになった。
C:/PROGRA~2/RUBY-1~1.1/lib/ruby/vendor_ruby/1.9.1/icmpping.rb:72:in `[]=': can't convert Fixnum into String (TypeError)
うう、今までテストしてなかったのがわかるなぁ。(というエラーになるのが上のパッケージには同梱してある)
エラーになるのは、なんとなくすぐに当たりがつく。というのは、Fixnum into Stringが[]=で出るということは、文字コードを直接Stringへ設定しようとしているからだろう。
で、調べるとまさにその通り。
    dat[2], dat[3] = cksum >> 8, cksum & 0xff
というのが引っかかったのであった。
そこで、Integer#chrを使うように修正する。
    dat[2], dat[3] = ((cksum >> 8) & 0xff).chr, (cksum & 0xff).chr
でも、それで終わりではない。
undefined method `&' for "E":String
というエラーが出る。&というとこのあたりだな。
	  icmpdat = rdat[0].slice((rdat[0][0] & 0x0f) * 4..-1)
確かに、文字列に対して&を呼び出している。
数値を取るように修正する。
	  icmpdat = rdat[0].slice((rdat[0].getbyte(0) & 0x0f) * 4..-1)
というような感じだが、もっとうまい方法はないかな? (このプログラムの場合、String#&にしろString#[]=にしろ他の使い方とは干渉しないから、直接これらのメソッドを修正するというのも方法かも知れない)

というわけで次のようなのを先頭に入れてみたりして。

begin
  "a"[0] = 64
rescue
  class String
    alias :array_set_org :[]= 
    def []=(i, c)
      if Integer === c
        array_set_org(i, (c & 0xff).chr)
      else
        array_set_org(i, c)
      end
    end
    def &(c)
      if Integer === c
        getbyte(0) & c
      else
        self & c
      end
    end
  end
end  
これで、これに関しては1.8でも1.9でも動くはずだ(で試すと動いたのでとりあえずこれでいいや)。

2008-12-03

_ アデンは遍在する

本屋で見かけてつい衝動買いをしてしまった。

アデン、アラビア/名誉の戦場 (池澤夏樹=個人編集 世界文学全集 1-10)(ジャン ルオー)

そのころ20歳だったので、当然のように晶文社から出ていたアデン・アラビアを読んだものだが、それからの倍以上を過ごしてきて、また出会うということもある。

僕は二十歳だった。それが人生でもっとも美しいときだなんて誰にも言わせない。

と訳されている。

実は晶文社版も手元にあり、長い年月を経て、また感慨深い黒と黄の地図の表紙、横に筋が入って少しザラついた感じの、しかしちょうど持ちやすく工夫されたビニールのカバーを開く。

ぼくは二十歳だった。それがひとの一生でいちばん美しい年齢だなどとだれにも言わせまい。

……旧訳のほうが、好みだ。それはそうで、言葉、言葉が身についているからかも知れない。

ところどころ、共感したセンテンスに囲みがあったりして、相当に気恥ずかしい。

世の中でおのれがどんな役割を果たしているのか知るのは辛いことだ。

すべてを捨ててアデンへ行くこと。それは若気の至りではあるだろうけど、あるいは、今そこにかかれた言葉を拾えば、いくつかのBlogの海から同様な言葉を広い出すことはたやすいだろうけど、しかし、1931年に書かれた、確かにすでにヨーロッパは一度は死滅したとは云え、しかしそれから10年後の、真の、肉体ではなく精神の破滅にいたる前の、まだ26歳の青年から発せられた言葉が残されていて、それがまた再生されることを、僕はなんとはなしに、うれしく思う。つまり、まだ、アデンと、そこへ旅立つべく刻印された人たちが存在するということだからだ。


2008-12-04

_ ニザンはえらくおもしろい

アマゾンの晶文社版の書評を眺めてちょっとびっくりした。読みつくさないなんてもったいない。

鬼神より賢い若造が、それまでにためにためた、知識、見識、修辞、感情表現、あらゆるものを総動員して、怒りと否定を叩きつける、最高におもしろい文なのだ。

お前はそんなモノまで食ったのかの世界。ライフル持った眼鏡っ子はいないけどな。

死の河ではなく知(恵みのほうではない)の河。

というか単純におもしろいのだが。で、今ちびりちびりと新訳を味わいながらアデンへ着いた。

忘れきってただけに船長のバーロー岬っぷりが楽しかったな。

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

_ ksaito [面白そうですね。煮残。読んでみまっする。]


2008-12-05

_ フィルターパターンとパイプパターン

システム全体を観て最終的な状態へ持ち込むとき、実装は完全に同じになるとしても、フィルターとして考えるか、パイプで継ぐと考えるかで、設計は相当異なるのではないか。

パイプの場合、処理の主体はパイプで結ばれたノードにある。

フィルターの場合、処理の主体は途中に挟み込まれるフィルターにある。

この時、前者のほうが発想しやすいのではないか。

実際には機能を分割するときに、個々の処理の専門性はフィルターのほうが高くしやすい。しやすいのは、その考え方(見方)の違いによるように思う。


2008-12-06

_ ボクシングと百人一首

akasara.rbの忘年会で、大場さんから、百人一首の競技についていろいろ聞いておもしろかった。

大場さんは5段なのでプロ資格保持者だとか。小学生のころからやっていたので中学の大会で優勝していんちきと言われたとか。素人が札の上に手を構えていても、なぜか勝てるとか。

読み上げにはプロ(専門家)がいて、その人でなければだめなこととか。

相撲の最後でガイジンがヒョーショージョーとかいって表彰するけど(今はどうか知らんけど)、ああいう感じの読み上げだと暴動が起きるんだろうなぁとか、観客席で思わず応援だか歓声だかを上げるとすさまじい勢いで会場全体を敵に回して睨まれてしまうとか。

1つの会場には数10組のペアが競うのだが、読み上げは1人でそれをブロードキャストするということ。しかも秒未満殺の世界。

それが3秒−1秒という組み合わせだということ。3:1というとボクシングの3分−1分が連想されて、なるほど、1対1の格闘技のほどよいリズムなのかなとか。

1人がブロードキャストするということは、もし、日本が和歌の国になって、正月になると全国で一斉に百人一首する状況を考えてみる。

東京で読み上げ者が読み上げる。

秒速は摂氏0度で331メートルということは正月なので東京で読むと九州に到達するには、東京−博多のバスが1150kmらしいので

(1150 * 1000) / 331 = 3474.32024ということは(3474/60)/60 = 0.965で小一時間かかるわけだから、これは勝負にならなくて地方格差と呼ばれてもしょうがないなとか考える。

電信技術ってすげぇな。と突然老境にさしかかったガウスが実験する見てきたようなウソのおもしろさを思い出したり。

世界の測量 ガウスとフンボルトの物語(ダニエル・ケールマン)

そういえば灯っている蝋燭は確かに1本だとか。

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

Before...

_ arton [奴隷制と民主制はいいけど、神の国はちょっと無理があるかも。外から観察しなくても調べられるということは、最初の原先生の..]

_ ムムリク [おかげさまで面白い話題を知ることができました。なんとなくアボットの「二次元の世界」を連想してしまいました。]

_  [確かに「俺たちは俺たちで何とかしますから」という態度なので、神様的には「バチあたり定理」と言えるかも。 しかし、煮て..]


2008-12-07

_ 規約脳=大企業病

T/O

というか、いろいろdisって遊びたいのだが、今は(今、一瞬、小島麻由美の歌が脳裏で流れたがどの歌か忘れたので調べる)なのでこんだにする。

Me And My Monkey On the Moon(小島麻由美)

たぶん、ふうせんで悪魔の誘いを断るあたりに、「今は」で始まる詞があるのだと思う。

_ 恋の極楽特急

さいこうな歌ですなぁ。

おれもルビッチは最高に好きだ。

極楽特急 [DVD](ミリアム・ホプキンス)

これは、たぶん、パルコパートⅢでやったルビッチ回顧展で観たんじゃなかったけなぁ。また観たいものだ。

恋の極楽特急(小島麻由美)

なんてやってる余裕はなかったのを忘れてる。

ていうか、このシングルのジャケットは白水社なのか?

ヴェローナの二紳士 (白水Uブックス (8))(ウィリアム・シェイクスピア)

クセジュー

_ へーと感心したインターフェイス

特に404の人のところで強く感じるのだが、JavaScriptを使って余分なものを表示して地を隠すUIってカスだと思う。RSSリーダがあって良かった。

しかし、セシールの拡大画像はうまいと思った。隠される場所が商品を眺めているときにはまったく利用しない場所(選んだあとに利用するけど)だという点とか、いかにも拡大してみたいものに利用している点とか(風合いとかは触れないまでも毛足とかがある程度見えればそれなりに判断できる可能性がある)。

via @kis

_ 日本語は後置の世界

Dr. SpockだのMr. Spockだのをカタカナで、ドクタースポックだのミスタースポックだのと書くことはある。

同様に、山田さんのことをなんかのはずみでミスター山田と書くことはあるかも知れない。

しかし、スポック博士、スポックさん(様や氏でも良いが)だろ、JK。

すさまじい怒りで指が震えて一回休み。

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

_ むらまさ [海外のニュースサイトとかで、任天堂の宮本茂のことを、Miyamoto-sanという表記にしていることがあるのを思い出..]

_ arton [そういえばHackerdude-sanという人もいましたね。自称じゃなくてそう呼ばれたらしいけど。]


2008-12-08

_ 砂漠のカメレオン


2008-12-09

_ 手を動かすのは野蛮の証

考えなくてもありもの使ってだらだらすればそれでいいじゃんを読んでいて、むしろ逆ではないかとか思いもする寒い夜。

2種類に分けて考えてみる。

・とにかくひたすら何かしてアウトップトを出す

・アウトプットを出すための何かをへろへろ作ってからアウトプットを出す

と、下のほうが段階も多いし、字数も多い。

同じ7でも、朝4、夜3のほうが良いってのと同じで、きっと最初のほうがスマートに見えるんじゃないかなぁとか。

あるいは手数というものの数え方にあるのかも知れない。

今、1000回キーボードを叩いて同じものを5個作る作業があるとする。

前者を選択すると1000×5で5000ステップだが、最初のアウトプットは1000で手に入る。

後者を選択すると仮に3000×1+10×5だとすると全部で3050ステップだが、最初のアウトプットは3050まで待つ必要がある。

(というか、3050という見通しが持てなければ、∞+10×5と考えるのかも知れない。もしそうなら、そりゃやらないよな。知識と知恵はインフラだということはそういうことだ)

さらに1ステップあたり100円かかるとして、後者は3050×100円だが、前者のウルトラCがあって、1ステップあたり20円を連れてくれば、最初に100円が100で教えれば、100×100円+5000×20円で圧倒的に安い。

とか、世の中は変わっていくなぁと考えてみたり。

結局、見通しが暗ければ、後者を選択する余地はない、ということなんじゃないかなぁ。


2008-12-10

_ コピペ三昧

中途半端な(後でリンク入れるつもり)DAOの自動生成機が作ったDAOがあって、長いupdate文を作ってくれる。が、バグがある(というかdate型カラムに加算しようとする。date型を考慮してないからだ)。

で、ジェネレーションギャップパターンの実装で対処するのだが、必然としてコピペ+改変となる。

これが結構楽しい。たんぽぽを乗せているだけなのに、使えるプログラムができるからだ。

この感覚が普遍的なものならば、コピペプログラミングには、気分のインセンティブがあることになる。


2008-12-11

_ 久々にIActiveScript

結構覚えているもんだ。


2008-12-12

_ いよいよ最後ですな

もやしもん 7 限定版 ~nano~ (プレミアムKC イブニング)(石川 雅之)

人気の菌のキャラクターであるA.オリゼーが作成できるナノブロック(株式会河田作成)付き!

『菌のキャラクター』という表現がいかしている。苦労したのだろう。

ナノブロックってなんなのかと思ったら、小さいダイヤブロックなのか。(LEGOのパチモンと言ってはやはり失礼なのかも知れないが、子供のころ、家にはLEGOがあって、友達の家はダイヤブロックだったのだが、なんか妙に凸がぶかっこうだなと思ったことを思い出した)

おまけの有無で極端に表紙が違うところが興味深い。

もやしもん(7) (イブニングKC)(石川 雅之)

とうとう、最後まで表紙はすべて人間が飾っていた。つまり、人間ドラマであって、菌はあまり関係ないことにしたかったのかも知れないと思ったり。

なんか最後ですなが多いなぁ。

これから出るはずの最終巻(になるはず)で購入予定なのは、

・ヘルシング

(年内は無理だったのか)

・隠の王

隠の王 10 (Gファンタジーコミックス)(鎌谷 悠希)

(12/27か)

・ふたつのスピカ

_ IActiveScript

結構覚えていると思ったのもつかの間、SCRIPTSTATEの扱いでうまくいかなかったので、以前書いた簡単なやつをあらためて眺めてみたり。

Visual Studioの4文字タブのデフォルト設定で作られたソースなのは良いが、なぜか(オートインデントだけが\tみたいだ)GNUスタイルに見えて気持ちが悪いな。

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

_ ささだ [なんと,その辺が最終回でしたか.]

_ arton [ふたつのスピカは想像だけど。]


2008-12-13

_ 謎の動き

cmd.exeに対してputsをすると最後の文字が欠ける(ことがある)。

この文字欠け病は、スクロールが始まった行から解消する。

cmd.exeがくさっているのか、Rubyが変なのか、わけがわからん。再現したりしなかったり。cmd.exeの縦横のサイズも関係しているようにも見えるし、マシン固有の現象のようにも思える。cmd.exeというよりもVistaの問題っぽいな。マウスで反転させてそれを戻すと表示されるところが妙だなぁ。

でも、それほど困らないのでどうでもよかったり。


2008-12-14

_ ATMとCD

ATM(Automated Teller Machine。tellerってのは銀行の窓口の人の意味)⊃CDなので、ATMはキャッシュディスペンサーではありません。振込専用機がもし存在したら、それもATM(の一種)だし、自動記帳機もATM(の一種)。

で、昔むかしは、銀行のATMと言えば自動出金機しかなかった(30年以上前)ので、CD≒ATMでもそれほど間違いではなかったとは思うけど、その頃からATMというのは入金もできるものを指していたように覚えている。

で、キャッシュディスペンサーというのは今では釣銭機とかでしか使わないんじゃないかと思って、ちょっと検索したら、サラ金市場で使われていたり、キャッシュディスペンサー(=ATM)と書いたページもあったり、ぶれまくっているので、どうでもいいのかも。

_ Ruby1

このタイトル、1の位置がおかしくないか?

プログラミング学習シリーズ Ruby 1 はじめてのプログラミング(arton)

というか、もうアマゾンに出ていることが驚きなのだが、それはそれとして、この本はRubyの入門書ではなく(そういう内容を想定して読み始めると驚くか怒ることになると思うので、読んだら怒りそうな人は最初からスルーしておいてください)、題名の『はじめてのプログラミング』の通りのプログラミングの入門書です。しかも『1』とついているところに注意。あくまでも内容は『1』(さて、ではifはどのあたりで出現するでしょうか? と、こないだ話題になっていたPythonの本のことを思ってみたり)であって、最後は『3』までいきますよ(予定では)。

想定したのは、下は中学生(というか子供に読ませていろいろ反応を調べた)から高校生くらい、上は30年くらい前にBASICをいじってそのまま忘れてしまった人。

自分のところに見本刷りが来たら、また書くでしょう。

あと、当然ですが

# encoding: というコメントが入ったリストですよ。

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

_ きむら(K) [本の方ですが、目論見としては stroustrap氏の新著と同じような感じでしょうか? どちらも目にしていないうちか..]

_ arton [>stroustrap氏の新著と同じような感じでしょうか? まったく逆向きなんじゃないですかねぇ。というかStro..]


2008-12-15

_ 正気の人に勝機なし

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!(上原 祥市)

こないだ出たばかりの新刊本が、たまたまアマゾンの在庫が切れているという状況で、定価3780円に対して、5425円で出品するというのは、すごいなぁ。

どうやっているのだろうか? アマゾンのページから自分が持っている本のページをずーっと循環しながらアクセスして、在庫切れを発見したら、出品するというようなプログラムを作っているとかなのかな。


2008-12-16

_ 残ってるのは終わりではない証拠?

たとえば、COBOLの時代は終わった。という断言をするとどこからともなくとおりすがりが湧いてきて、まだまだメインフレームは現役でっせ(実はPL/Iで記述されててもお構いなしに)とか書いていったり、あるいは.NETでもCOBOLが使えまっせとか(そりゃあることは知っているが、それはメインストリームか? それでどれだけの新規案件が取れるのか?)言って、全然終わっていないと一生懸命主張するとする。

第三者がそれを見て感じることは、なんだろうか? 見苦しいなぁ、というか、まさか終わってたとは思わなかったけど、本当に終わってたんだな、という感慨だ。

というわけで、終わったことがわかったので、クラウドについても調べることにする。

#でも、対比がまずいのではなかろうかとか。

むしろ、そういう終わりうんぬんで言うと、萩原さんの、ACIDは終わったのほうが、しっくりとくる。

いや、とっくに終わっているという声がWebのほうから聴こえてくる。うむ、同じ図式か。つまり、終わっているのだな。しかし、2フェーズコミットは終わったとしても、局所的にはACID特性が守られる必要はあるような。ちょっとわからなくなったから、ここは後に回して。

つまり、終わったと無くなった(亡くなったでもいいかも)は異なる。

終わったというのは、おそらく、あまり変化する必要がなくなったという意味なのだろう。変化する必要がなければ、あとは、どれだけ固くできるかな勝負になって、最終的にはROM化されて、家電のようにパッケージ化されて、スィッチひとつで操作できるようになるということだ。

でもまあ、電灯なんてとっくの昔に終わったのかと思ったら、ここ10年(もっと短いかな)あたりの電球式蛍光灯の動きなんて、全然終わってないから、数十年してまた始まることもあるだろうけど。

ま、なんにしても終わったようだ。

で、なんだろう。

局所化されたACID特性に頼った、ゆるい分散システム(各システムの間は、キューのようなもので遅延OKで繋ぐ)アーキテクチャというのは、別にそれほど新しいとは思わないから、もっと異なる何かなのか、それとも、そのようなアーキテクチャがたとえば2フェーズコミットのように、データベースに組み込まれることになるのか(現在の洗練程度ではきっとまだまだだね、青少年というところなのだろうか)。

あるいは、全然、別の考え方が必要となるのか。いや、ならないだろ。とここについては考える。というのは、各システムについては整合性が取れている必要はあるからだ。したがって、局所的にはトランザクションは相変わらず必要と考える。

でも待て。リレーションシップがあるから、AとCが必要ということはないだろうか? 可変なものが1つにまとまっていたら、別段、好き勝手に更新しても良いのかも。

すると、更新の単位は1つのサブシステムと、その時点で実行されているトランザクションということになる。

なんか、そういう概念もあったな。スナップショットか。それが単なるバックアップ用語ではなく、リアルタイムでばかばか取られる。タイムマシンの数秒おきバージョン。で、トランザクション単位に巻き戻しができる。

メモリーがばかみたいにたくさんあって、SSDでもなんでも良いが、IOが意味なく高速なら、そういうこともありうるかも知れない。

とか、取り留めなく考えてみたり。

_ 巻き戻しではなかったりして

巻き戻しってのが古びた考え方なのかも。

どんどん上書き。

最終的に合計値が合えばOKみたいな。

補償トランザクションが自動的にがんがん生成されるとか。

でも待て、すべてが加算というわけではない。というか、あるフラグが立っていれば加算、そうでなければ減算というような制御をするのがまずいということかも。

そのときの状態は関係なく常に貸し方、借り方へ付けていく、そういうデータベースであれば、常に補償が利く。

江戸時代へ逆戻りなのか? そうとは言えない。行をなめて加算する速度が、加算結果を記録するより速ければ問題ない。

で、マスターは元々衝突するわけもなく、というか、ふつうにACID型トランザクションで良いから、基本はリードオンリーだし。

というようなデータベースを前提とすれば、どう変われるか?


2008-12-17

_ 排他制御と同期

単純に、
synchronized (lockObject) {
  critical++;
}
みたくsyncronizedステートメントで囲むから、それを訳して「同期ブロックを使う」とか、「critical変数への加算を同期させる」とか書いてみる。
確かに、前者はともかく、後者は変だな。同期させているのは、ブロックへの進入だ、というか、それを同期かというと、むしろ複数のスレッドの待ち合わせをして同時に進入させるような印象を受けるかも。
でも、そう覚えておけば、syncronizedステートメントをすぐに思い出せて良いかも。
C#だと、
lock (lockObject) {
    critical++;
}
だから、もう少し素直な感じ。ロックしてcritical変数を加算。
そういえば、
class Foo implements Serializable {
    ...
}
のシリアライザブルを、シリアライズ(同期の意味)と紛らわしくてひどい命名だというようなことをkjanaさんが言っていたなぁと思いだしたり。
COMだと
: IMarshal
だから用語的にはいい感じかも。

_ なぜか伊藤だけが生き延びた?

そりゃくれくれくんが使う割合約100%なんだから、使われない機能名は忘れられるでしょう。

後はふつうに雑誌とか読んでて、ダウンロードしてか伊藤はあっても、たあ坊をビージーズ(アフィは勘弁しといたる)でとうけつのあ…とは下品になるから(貴種は自ら手を動かさない)書かれてないってのもあると思います。

なんてね(げふんげふんと咳のまね)


2008-12-18

_ 仮想マシンの使い方

開発方法についてのミーティングをしていたらおもしろい(comicalの意味ではない)アイディアを聞いたのでメモ。

できますた、といって持ってこられると、どうも、その開発者の環境だけでは正しく動く。たとえばJavaのバージョンとか、Jakartaの何かとか、その他のなにかとか、ディレクトリの構成とか、もろもろ。

いちいちそういうの検証するのって誰の作業なんだ?

というわけで、こちらの環境をパッケージした仮想マシンの仮想ディスクを渡して(もちろん、Junitとか実行できるように仕込んでおく)、この中でテストして動作するか確認してから持ってくるように、とすれば良いのではないか。

おお、なるほど、それはそうだ、となった。

でまぁ、Virtual PCか(Virtual Serverというわけにはいかんだろうし)、さもなきゃVirutalBoxだろJKと思っていたら、Playerという言葉が聴こえたので、そりゃないだろうという話になったり。

なったのは良いのだが、ふと気付くと、おれはVirtualBox使ったことないから、具体的なことが言えないことに思い当たる。

というわけで、ちょっと試してみることにする。

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

_ atsushieno [うちのやつですけどこんなのもありますですよ。細かい機能は知らないけど、サーバサイドで勝手に作っちゃうそうです。 ht..]

_ arton [どうも。おもしろそうなので見てみます。]


2008-12-19

_ NaClのこと

Monoミーティングで川幡さん(ごめんなさい。最初間違えて書いてました(ご指摘多謝))のNaClについてのプレゼンというか調べたことのレポートがあって、えらくおもしろかったのでメモ。

・NaClは、Cのプログラム(x86バイナリにコンパイル済み)をダウンロードして実行する仕組み。

・ミソは、2重のサンドボックス(というか安全弁)

・最初のサンドボックスとは

−コンパイル時にretを生成しない。(スタック上のデータをpcに設定しない)

−レジスタを利用した間接ジャンプは、NaClJumpというものに置き換える。

−NaClJumpは、eaxに0xffffffe0でマスクした後にeaxの指すアドレスへジャンプ。

−ミソは0mod32にすること。オペコードの開始は32バイト境界へ配置(個々のルーチンは、ということだと思う。()内で思っているのはおれ)

−セグメントレジスタを設定することで、限定した32ビットアドレス内でのみ実行できるようにする。

−ベリファイアがダウンロード中にインストラクションの正当性を検査。たとえばretを発見したら弾く。間接jumpがNaClJumpでなければ弾く。不法オペコードは弾く。この処理はやたらと高速。

−実行速度は、NaClJumpのオーバーヘッドがあるのではないかと思ったら、むしろ高速だった。32バイト境界へのオペコード配置がキャッシュと相性が良いのではないか。

−もちろん、サイズはでかくなる。30%増し。ただし、配置を最適化すればもう少しコンパクトになる可能性はある。

・もう一つのサンドボックスは、当然ライブラリということになる。

というような感じで、retのところにしびれた。

しびれたが、callはcallなんだろうから、関数のエントリで戻りアドレススタックのようなアプリケーションスタックを用意してそこへ格納し、NaClJump用にeaxへポップするというような仕組みなのかな? というようなことを知りたければ、NaClのソースを読むか、生成したバイナリを調べれば良いので、休日になって、しなければならないことをしたら、見てみよう。たとえば、戻りアドレスがデータスタック(というように通常のスタックを利用すると仮定して)上のを利用しないとしても、関数の戻り先での利用を想定してオーバーフローさせておいて、そこでeaxへポップしたら、そこで落とせるのではないかとか。結局、見なければわからないな。

(追記:ご教示ありがとうございます。『ret は pop + nacljmp になるだけちゃうかな。』。そこまで川幡さんの説明では語られていなかったので僕が勝手に想像していただけです。というか、今までスルーしていたクロフォード本の80386セグメンテーションの項を読んでいるけど、これは難しいな)

(参考:正しいUI というのを思い出したが、さてNaClはどう使えるのだろうか)

Monoミーティングでは、ミゲルのPDCセッションの話。SIMDを利用したら、Monoのプログラムがものによっては48倍高速化されるという(ちょっと詐術が入っていそうな)デモとか。にしても、SIMDの効果はすごいな。

というわけで、Mono(というかNovell)のビジネスとして、ゲーム用のライセンス(LGPLと商用のデュアルとなっているらしい)がそれなりに出ているというような話。

さらに、万葉でプレゼンするというあたりから、中学のときには100首ほど暗記していたというような話が出たり、なんか意外と世界は狭いような気になったり。

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

_ shinh [中の人として間違ってると問題あるので、その発言はよくも知らん子が、疑問に思った後に適当に論文斜め読み + nacl-..]

_ koichiro [×川端さん ○川幡さん です!]

_ arton [表現を変えました。すみません。>shinhさん どうもありがとうございます。>koichiroさん]


2008-12-20

_ 2008年の映画をふりかえる

圧倒的にペドロコスタ。いくつものシーンが記憶されている。すごい質感。

でも、結構、クェイ兄弟を夢に観てうなされる。

_ 2008年のバレエをふりかえる

ジゼル。おっかなかった。

でも新年にいきなり観た美女と野獣(少し曖昧な状態に陥ってしまったのが悔しい)がどうも傑作だったような。

_ 2008年のオペラをふりかえる

新国立劇場のトゥランドットかなぁ。アイーダも良かったけど。(というか、これにソフィアのトゥランドットを加えると観たすべてなのであった)

_ 2008年の読書(非技術書)をふりかえる

世界の測量と香水がどちらもおもしろかった。

ある人殺しの物語 香水 (文春文庫)(パトリック ジュースキント)

(ばかみたいに売れた本が真価を問われるのは、誰も語るものがいなくなったときに手に取った人間がどう評価するかだ。香水は素晴らしい。その孤独と孤高と矜持が今や絶滅寸前の蛙)

が、おれはどうもニザンみたいなのが好きなんだな。

いまさら読んでもと思いながら結局、全部読んだが、やはりおもしろい。

アデン、アラビア/名誉の戦場 (池澤夏樹=個人編集 世界文学全集 1-10)(ジャン ルオー)

おもしろいのだが、こういう作品には将来はないだろうなぁという気もする。あるいは逆に、こういう作品は普遍性を獲得したとも言える。発表の場がネットワークによってもたらされたからだ。つまり、商品としての将来はなく、スタイルとしての普遍性が獲得されたというか。ほんの少しの客体と饒舌でそれまでの人生で獲得してきたありったけの知を利用した主体のせめぎあい、容赦ない告発と自省。

ニザンで最も好きなのは、今やカタログすらない陰謀だ。世界の調和を取り戻すためにすべてをうまくやろうとして、結局、何もできずに苦しみながら、しかも嫌になるほど明晰に自分が失敗したという確信の中で主人公は死ぬのだが(というか、そこしか覚えていなくて、なんで死ぬのか、自殺だっけ? ではなぜ自殺を選ぶのかとかまったく覚えていない)、その明晰な意識があまりにも生々しく、ようするに、そういう自分の最期というものをさんざんシミュレートした人間が書いたもの、だという感触、つまり本当にあり得る、最悪の死が描かれているからだ。

_ 2008年のマンガ

スパナのおかげでリボーンがおもしろい。

敵味方関係なく、すごい技術が間違って使われてたらデバッグしたくなるよなぁ。

_ 縦書き

っていうか、世界で最も読まれている(もちろん日本でも出版部数は一番多いと思うんだけど、部数に関しては)日本の本って、マンガだと思うんだけど、あれは縦書きなんじゃなかったっけ?

_ 太陽系

Sunがやれば良いと思うんです。

おれ、この言葉ではなく、このエントリーすごく好きだな。

より自由

という見方は重要だよなぁとうなずいたりしながら。

_ マルチキャストで信頼がある通信を行うにはどうすれば良いのだろうか

マルチキャストだと、もしACKを相手に求めると、元の発信元が大変なことになる。だから、確定応答方式はとれない、と思う。

そこで、抜けを見つけた受信先が欠落したパケットの再送を求めるか(信頼性があるネットワークなら欠落は少ないため実用的かも知れない。しかしネットワークが信用できなかったり、送信先に送信元の転送速度より遅くて取りこぼしするノードが複数あると、再送であふれてしまいかねない(個々に対応する場合))。

すると、抜けを発見したノードはあきらめるか(では、逆に完全に到達したノードは存在するのか、どうやって見つければ良いか)、1人でも抜けと手をあげたら、現在の送信とは別に周回遅れの送信をやはりマルチキャストしてやるとか、で、それでさらに手を挙げたノードがいたら……、だめですな。


2008-12-21

_ NETのRoot

荒井さんのThe Root of .NET Frameworkを献本していただいた。というか、レビューをさせていただいたので、内容は知っているわけだが、やはり本になっていると読みやすさも格別。

The Root of .NET Framework(荒井 省三)

この本は、微妙な立ち位置にあって、それがこの本の読み方に通じる。

荒井さんはマイクロソフトの中の人なわけだが、ところが.NET Framework自体は逆アセンブリが禁止されているから、中の人だけにそれは守る必要がある。

そこでJISの規格書と、デバッガとその他の(普通にVisual Studioを使っているだけでは存在にすら気付かない)SDKツールと、C#で自作プログラムを作ってそれを解析して……という方法で内部へ潜っていく。SOSデバッグって知っている? Appendixにコマンド体系もついてくるよ。

つまり、潜り方の指南を潜りながら書いているという本だ。

しかも、この本、ILがたくさん、ダンプがたくさん。こういう本は先日も読んだような。

Windowsダンプの極意 エラーが発生したら、まずダンプ解析!(上原 祥市)

これか。というか、ISBNを取るのでアマゾンへ行くと、あわせて買いたいでプッシュしてくるが、確かに近いものがあるかも。

内容は、JISをベースにしたCLRの解説が36ページまで。ここは良いまとめ。続いて.NET Frameworkアプリケーションのブートシーケンスというか起動手続きについて60ページ。ここは最初の山場。特にクラスローダのあたり。

この本のスタンスを示す文章がP.103にあるので引用してみる。

本書はできるだけ大勢の方がCLRの内部動作を確認できるように、SOSデバッガとVisual Studioのメモリウィンドウを使ってメモリ内を調べた結果から筆者が類推した情報をもとに記載しました。このため、本書で説明した情報を単純に使用するのではなく、紹介した調査手法を使い、読者ご自身の環境で調べていただくことをお勧めします。SOSデバッガ拡張が役に立つことでしょう。

あ、でもバグを見つけた。5章は『.NET Framework固有のテクノロジー』なのに、なぜかページ右上のヘッダが『.NET Frameworkの起動プロセス』という3章(上で書いた、最初の山場)になっている。

で、メモリとプロセスで、アプリケーションドメインの潜り方とか。

おもしろいのは、地の文では「Win32ネイティブのCLRホストを自分で作るのは無理だからやめておけ」と何度も強調しながら、それを作るための情報をガンガン書いているところ。

つまり、CLRホストを作ることを考えているのなら、これを読めば早いし、Windows用ツールボックスに最終兵器としてCLRホストの自作という奥の手を用意するための準備もできる。

それから現在のGCの仕組みで、大きなメモリブロックが世代別GCの対象としないという実装とか。ってことは、ファイル読みまくりアプリケーションであれば、byte[]なユーザーバッファを大きめに取ったら、むしろインスタンス変数に覚えておいて、それを使いまわすほうが得かな? というような実装戦略のためのヒントもたくさん。

最後30ページ弱だけど、コードアクセスセキュリティについての詳解があって、これも必要な人には良い情報。

あと、この本はレビュアーが3人出ているのだが、全員変な名前でそこが興味深い。つまり、NyaRuRu、Yugui、artonだ。

最後になるが、この本は売れてほしいな、と思う。RHGと同じような系列の本だからだ。上っ面をサーフィンするようなものも良いのだが、やはりこういうシャコガイに足を挟まれそうになりながら潜っていって、そこで真珠をとるのか、宝箱を探すのかはわからないが、そういう縦方向の技術書というのは、やはりなくなって欲しくないからだ。

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

Before...

_ arton [僕は実物が意外と薄いので驚きました。ロジカルに濃くてフィジカルに薄い本。]

_ ARAI [うーむ。 バグが残ったか....まあ、濃いというのは一番の褒め言葉です。]

_ ARAI [http://www.microsoft.com/japan/msdn/vstudio/express/book/で..]


2008-12-22 昨日は東京Ruby忘年会2008

_ 高橋さんのお勧めの本

やあ、あれこないだ初めてちゃんと読んだんですけど、すごいんですよ。

というので、どれどれとアマゾンを見てちょっと血の気が引いた。

アルゴリズムデザイン(Jon Kleinberg)

というわけで、迷っている。世の中には相対と絶対というものがあって、これは絶対のほうで迷っているのであった。

_ マカー登場

いきなり中田さんが白いノートパソコンを出したのでちょっと驚いた。Command-H(というか\M-h)を押すつもりでOption-Hを押すことがあるので、不快なマシンだと言っていた。解消方法があれば、教えてあげたいところだが、おれも知らない。

_ 百人一首

高橋さんも高得点だった。どうも、北海道の子供は冬の間は百人一首をしまくるのだそうだ。たぶん、一般論ではないと思うが。

_ 親子で勉強会

で、ふと気付くと0〜3歳くらいの子供を抱えた人(家に。連れてきている人がいるわけではない。とは言え2次元化したといっても普通に写真は連れてきている人は多そうではある)がちらほらいて、出かけようとしたらつかまるというような話が出てくる。

SF大会ではSF託児所が作られて、子供を預かって変な実験を見せるというような話を聴く。

たとえばLLなんちゃらだったら、同じように子供を預かってeToysで遊ばせてやるというようなのも(というか0〜3歳じゃ無理だと気づいたが)ありなのではないかなぁ、とか思った。月がぐるぐる回りながら地球にぶつかりそうになるとか。

_ 笹田さんの4つのお話

・2月に松江でRuby会議をやるよ

・るびまを出すので書く人と編集する人募集中

・るびま(の関係の何かだが忘れた)

・笹田研の冬期募集があるよ

「笹田先生」という言葉を耳にしても(まだ耳慣れないので)、同じ名前の人が居るのかぁと、他人事として受け流してしまうそうだ。

追記:間違ってました。こちらを参照

_ defとdefine_methodの違い

defは&proc形式の引数を取れる。

define_methodはinstance_evalの中で呼ばれるときには(self次第で)何か異なる動作をするらしいが良くわからなかった。

_ もやしもん7

あれ、終わりじゃないじゃん。と思ったら別の雑誌に新連載したのか。

同じ雑誌に新連載=今のは終わり、と勘違いしてた。

もやしもん(7) (イブニングKC)(石川 雅之)

それはそれとして三国志+愛と青春の旅立ちは爆笑しました。

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

Before...

_ arton [来月中旬以降であれば、なんか書いてみたいです。]

_ なかだ [今日ちょっといじって (if (fboundp 'mac-add-ignore-shortcut) (mac..]

_ arton [mac-add-ignore-shortcutなんて関数が用意されているところが、泣かせますな。]


2008-12-23

_ ホーリーウッド!

ドイツ人が!

はてしない物語 (上) (岩波少年文庫 (501))(ミヒャエル・エンデ)

ネバーエンディング・ストーリー [DVD](バレット・オリバー)

みたいなものかね。

ところが、考えてみると、上の例は内容(メタデータ)の改ざんで、視覚表現(コード)については元々自由な実装を許す構造となっている。

メタデータでは幅がありすぎるから、それをより直截なものとしてアルゴリズムと置き換えて考えてみる。

ある作品には、アルゴリズムとコードがある。当然だ。

たとえば、アルゴリズムを変えずにコードを変えた例として、次の作品がある。

勝手にしやがれ [DVD](ジャン・ポール・ベルモンド)

ブレスレス [DVD](リチャード・ギア)

実は大傑作らしいが(今となっては観ておけば良かったと後悔したり)、ジーン・セバーグとヴァレリ・カプリスキではまったく異なる。前者は薄く、後者は濃い。

この場合、コード原理主義の立場さえ取らなければ、どちらも楽しめるはずであり、それが娯楽の王様の映画というものだ。

アルゴリズムとコードの両方を変えたものは、無条件に、ナイス・トライの一言をかけてやるべきだろう。

新造人間キャシャーン COMPLETE DVD-BOX ~ALL EPISODES OF CASSHERN~(西川幾雄)

CASSHERN [DVD](伊勢谷友介)

(今となっては観ておけば良かったと後悔したり)

それが単なるナイス・トライなのか、別次元を切り開いた大傑作かはともかくとして。

と、考えると、問題はコード原理主義の偏狭さにある。

彼らは、リファクタリングを許さない、ということだ。

リファクタリングなしのプログラミングなんて、インスタントのコーヒーにわけのわからない白い粉を入れた飲み物みたいだ。

しかし、リファクタリングのためにはユニットテストが必要という正論もある。

映画におけるユニットテストとはなんだろうか。

コード原理主義者の考えるユニットテストというのは、CheckStyleのようなものなのだろう。くだらない。君らはトレースしたものを眺めていればよろしい。

DRAGON BALL #1 [DVD](野沢雅子)

おれにとっては、それは、おれが先入見をゼロにして観たときに、どれだけ楽しめたかどうかだ。そうか、「おれ」がユニットテストなのか。

16世紀のイギリス人は、学問というものを先入見(イドラ)からの脱却と規定した(すごく大雑把な理解なので眉に唾が必要)。

学問の進歩 (岩波文庫 青 617-1)(ベーコン)

失敗すれば改竄で、成功すれば改良、突き抜ければ革命となる。

いずれにしろ、先入見にとらわれるのは、つまらない。つまらないものは退屈だ。退屈というのは、同じだからだ。同じということは繰り返しということだ。繰り返しは嫌いだ。ああ、嫌だ。

達人プログラマー―システム開発の職人から名匠への道(ハント,アンドリュー)

というところで、オリジナルに触れて心をなごませたりする。

動物会議 (大型絵本)(エーリヒ・ケストナー)

アメリカから来た黒いネズミを異なるコードで示した例。


2008-12-24

_ 恒例行事

熊川哲也振り付けの胡桃割り人形を観にアカサカサカスに行く。

馬鹿な名前だ。坂の途中でサカスなのか、アカサカにかけたのか、サーカスなのか。シルクと言えばフジ、サカスと言えばTBS、とかどうでも良いことを考えながら、着くと、ばかみたく賑わっている。10チャンネルの六本木ヒルズといい、TBSのここといい、テレビ局ってのは地域デベロッパなのか? しかもゴミ箱もないし、居心地の悪い最低のゾーンだ。

と、なんとも言えない気分の悪い感じがして、あまり楽しめない。

オーケストラではなく録音なのだが、妙に高音域がキンキンするし。

クララは、コッペリアのDVDの人。

coppelia(コッペリア) [DVD](熊川哲也)

でも、この演出ではマリーとクララは別の人なので、あまり関係ない。

でも、クララが時計の中に入ったところで、ドロッセルマイヤーのキャシディが魔術で部屋を変化させてから、胡桃割り人形から一瞬元の近衛隊長だかに戻った赤服と3人で踊るところまでの演出はやはり好きだ。

どうも去年のほうがおもしろかったように感じるのは、サカスにある小屋が妙に傾斜が強くしかし舞台に近い(確かに演劇には向いているような気がする)ために妙な角度で下を見下ろす感じになるため、高さ方向の距離感が楽しめないからのようだ。

でも舞台がせまい。トレパックの最初のところなんか、舞台から落ちるんじゃないかと思うくらいだ。

が、人は満杯。なんで上野でやらないんだろう。そりゃ、TBSのおひざ元なら安上がりだからだろうけど。

マリーと胡桃割り人形の2人はとても良かった。良く伸びて、ちゃんと止まる。もっと溜めるともっといいなぁとか思いながら、でも楽しめた。むしろ、DVDになっている本人のやつより良かったかも。

熊川哲也 くるみ割り人形 [DVD](熊川哲也)

が、いかんせん、連日の読書(というかなんというか)三昧のせいで、気がゆるむと、つまり楽しむと意識を失うのが辛い。粉雪なんか、おお、今回のはえらく揃っていてきれいだなぁ、これは最後まで楽しめそうだ、とか考えているうちに幕が閉じかかっていたり。

最後の戦闘も、えらくおもしろがっていたのに気付くと貴族が元通りになって踊っているし、スペインがいい感じと気づくとアラビアが始まっていたり、おおこれはと思っていると拍手が聴こえていたりで、キノコの踊りはさすがに全部楽しめたし、グランパの1つ前のドロッセルマイヤーとクララの踊りからはきちんと観れたが、相当、意識の上での早送りをしてしまって、悔しい。

ポルトガル料理の店がうまそうだったが(レストラン街の案内板が豚の丸焼きで、その斜め右上が空いていてTBSの黒豚がびびりながら斜め下を見ているイラストになっているのが皮肉でおもしろかったり)、これまた混んでいるので、やめて、でも頭が豚でいっぱいになってしまったので、地元のデリカで豚のコンフを食って帰った。

_ __method__

irb(main):019:0> __method__
=> :irb_binding
irb(main):020:0> RUBY_VERSION
=> "1.8.7"
1.9からだと思っていたら、1.8.7でも使える。
static VALUE
rb_f_method_name()
{
    struct FRAME* prev = ruby_frame->prev;
    if (prev && prev->orig_func) {
	return ID2SYM(prev->orig_func);
    }
    else {
	return Qnil;
    }
}
これだけなのか。そりゃそうか。
JRuby 1.1.5は1.8.6相当だから未定義だな。
irb(main):003:0> RUBY_VERSION
=> "1.8.6"
irb(main):004:0> __method__
NameError: undefined local variable or method `__method__' for main:Object
        from (irb):5
……

2008-12-25

_ 後で読む

ずっと読もうと思って開いていたが、時間ばかり過ぎてまだ読めない。そのうち、Firefoxがばかみたいに膨らんで、何をしても遅い。一度再起動し直すわけだが、消えうせてしまう可能性があるのでリンクをメモしておくことにする。

scale out の技術

下位アルゴリズム中立な DHT 実装への耐 churn 手法の実装

拡張漢字C & GlyphWiki勉強会

Native Client Getting Started

ブラウザ間双方向通信(P2Pモデル)アプリケーションを作ってみた

Building Scalable Web Services


2008-12-26

_ むむむ

Rubyによる情報科学入門(久野 靖)

これは読みたいかも。(追記:買った)

コンピュータサイエンスの緻密さ、荘厳さ、美しさに気づける1冊。

表紙が近代科学社っぽい。

#RHG読書会の次は、これをやりたい。と書いてみる。

追記:あんまり期待しすぎるとがっかりするかも。

えーそんなぁ……ということもなくて、コンピュータサイエンスの復習(いや、正規のコンピュータサイエンス教育を受けたわけではないから入門なのかも)として基礎を読みたいわけなので、期待値は妥当なところにあるとは思うけど、まだ届かないのでわからないけど。


2008-12-27

_ think? - thought

ThoughtWorksアンソロジーの翻訳本をyyamanoさんから献本していただきました。ありがとうございます。

ThoughtWorksアンソロジー ―アジャイルとオブジェクト指向によるソフトウェアイノベーション(ThoughtWorks Inc.)

さて、この本は、おもしろくてたまらないところもあれば、まったく興味を持てないところもある、まさしくThroghtWorksという会社のアンソロジーです。個人的には、Aslak(PicoContainerのファウンダーの一人)の書いたものが入っていないのが残念(たぶん、かれらはプログラミングに忙しくて文章は書かないのかも知れない)。

というわけで最初に苦言を呈すると、ThoughtWorksのような会社だと個人名で記憶されている人もいるわけで、目次でどの章を誰が書いたかわかると良いと思う。もっとも、この本は個人技ではなく、あくまでもThoughtWorksという企業「の」アンソロジーだということを強調したくて、こういう構成になっているのかも知れないから、それはそれで理解できる。

あと、ひさびさに、訳注の妙味(岩谷メソッド)に触れられて楽しい。おれは、訳者が自己主張するのが好きなのだ。中には、「ここは原書の間違いで……」みたいなものもある。確認したのなら本文を直しておけよとも思うが、本文は原書(ドメイン)に忠実(にモデル化)、その代わりに訳注(アノテーション)で読者(つまりインフラストラクチャコード)にメタデータを与えるというアプリケーション(書籍)なのだろう。というわけで、9章の『ドメインアノテーション』ですよ。

アノテーション(.NETだと属性)がおもしろいのは、インスタンスではなくクラスに付けられる点なのだが、最初、僕はXMLの属性との関係でインスタンスに付けられないことで結構、混乱したのを思い出す。XMLでは属性はインスタンス(というか個々の要素)ごとに異なる値を持てるから、Rubyのオブジェクトの属性、.NETやCOM、JavaBeansのプロパティに相当するわけだが(要素名に紐づくのではなく、要素に紐づく)、多くのスキーマではプロパティは内部の要素に割り当てる。すると属性の役割が曖昧になってしまうわけだが(そこで、属性値にはenum(閉じた選択枝)を割り当てるのが良いのではないかと気づく)、全然、ThoughtWorksアンソロジーとは関係ないので、元に戻すと、『ドメインアノテーション』は良いプラクティスだと思った。

っていうか、イメージ通りのThoughtWorksだなぁというのは『Antビルドファイルのリファクタリング』で、タイトルをみた瞬間に不吉な匂いがぷんぷんしてくるわけだ。でも読み進めると

リファクタリングは通常、コードに対して機能的な影響を与えていないと保証するために、単体テストを必要とします。

と最初に書いてから、ではなぜAnt(というかbuild.xml)のリファクタリングが可能なのかについて説明している。まあ、結局のところ、ビルドファイルなんて単純なんだからそんなものいらないだろうと流して、細かくチェックしていくしかないけど、それも難しいよね、でも書き直しをしていかないともっと悪いわけじゃん、みたいに流されてしまう。とはいえ、最初にリファクタリングの必要条件について書いているのが重要だと思う。というか、だったら『ビルドファイルのライフハック——整理整頓重要』とかにすればいいじゃん、リファクタリングって言いたかっただけだろ、という気もしないではない。いや、内容はためになります。

巻頭の『ビジネスソフトウェアの「ラストマイル」を解決する』はおもしろい。バージョンのないソフトウェアというのは、生物だな。これは冒頭にふさわしい考えの種になる文章。

それに対して、『プロジェクトバイタルサイン』はおれにはまったくおもしろくなかった。それだけに逆も真で、これがおもしろいというか、考えの種になる人も多そうに思う。

というわけで、創業者兼会長+テクノロジプリンシパル(おれ、バレエ団以外でプリンシパルという言葉を使っているのを初めて見た気がするが、良く使われる職掌名なのだろうか)が書いたもの、イテレーションマネージャが書いたもの、QAコンサルタントが書いたもの(『アジャイルかウォーターフォールか——エンタープライズWebアプリケーションのテスト』、これは必読(知っておくべきこと)では。というのは用語とテストのステージについての良いまとめになっているからだ)、チーフサイエンティストが書いたもの(コードのメタモルフォーゼでおもしろさは一番だな)、その他いろいろ、読み考え実践に取り入れてみる、試してみる、逆を張ってみるなど、立場いろいろの考え方の違いを眺めるなど、使い方いろいろでおもしろい。なんでいろいろとか書き始めたのかと疑問に思ったら、表紙に影響されたようだな。

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

_ yyamano [> 目次でどの章を誰が書いたかわかると良いと思う。 指摘ありがとうございます:-) 増刷が決まったので、二刷以降で..]

_ arton [おめでとうございます。 それはいいですね。この場合、特に肩書ですね。]


2008-12-28

_ Emacsのどこが好きなのか

起動してすぐの

C-x-2

M-xshell

C-x-o

に尽きるなぁ。これがあるから、CMD.EXEでほとんど困らないと言えなくもない(少し誇張)。

あと、コーディングスタイルということだろうが、同時にヘッダとクライアント側呼び出しとサーバー側メソッドとユニットテストとかをプログラミングするから(というか、1つのプログラムの中でもメソッドを呼び出すところと呼ばれるメソッドとその中で交換されるオブジェクトとか同時に複数の処理が走るところはたくさんある)、C-x-oとかC-x-bとかが高速に動作しないとすさまじくイライラするというのもある。時々失敗するが、本を書いているときも、説明と詳細と練習問題と解答を同時に編集したりするし(というか、ほかの人は、直線的にプログラミングしたり文章を書いたりするのだろうか? おれはわりとストラテジを複数用意しておいて同時にスレッドで走らせるほうが、統一がとれて良いと思うんだけど)。箇条書きした場合、そこで同時分岐(C-x-2を2回とか)して並行してそれぞれを書くけどなぁ。で、またC-x-1してメインに戻したり。

結構、リファクタリングとは言えないから調整ということになるが、M-@してC-u-* C-nして、M-wしてC-x-oしてC-yとかが一連の流れでできないといやだし(C-uの次の*を数える暇があればC-vとC-nを打てば良いし)

特に同じファイルを同時に複数個所開いて編集は頻繁なので、このあたりになるとVisutal Studioでも使いにくくてしょうがない(ましてEc……)。

結局、このへんの基本的な編集作業に一番追随するエディターというと、Emacsに尽きるのだな。


2008-12-29

_ フンパーディンクのヘンゼルとグレーテル

以前買ってそのままにしていたヘンゼルとグレーテルを観る/聴く。

フンパーディンク:歌劇《ヘンゼルとグレーテル》 [DVD](フンパーディンク)

最初のホルン(4本)が、なるほどワーグナーのエピゴーネンなのだなという感じで、ドイツの森ってこういうイメージだなぁと始まる。

ヘンゼル(メゾソプラノ)とグレーテルって、考えてみると、妹がグレーテルだと思っていたが(字幕もそうだが)、グレーテルがお姉さんのような気も。

で、疲れたお母さんが壺を割って子供に当たり散らして、苺を詰みに行かせる(12の月の物語のようになりそうな気になったが、そういう時期ではない)、その直後にランラララーと歌いながらお父さん登場。このメロディーはやたらと印象的。で、その後は森の中で砂男が出てきて眠って、暁の精(妙に魅力的)に起こされて、白昼堂々とお菓子の家が登場。と続く。魔法使いは堂々たるテノールだがおもしろおかしい演技が要求されるので、結構、大変そうだ。ポーキーホーキー。

センダックの美術は大変すばらしい。怖いとおもしろいの絶妙なバランス。

かいじゅうたちのいるところ(モーリス・センダック)

(絵本作家って、自分が子供のときと、子供が子供のときの20年分くらいしかカバーできないので、巡りあわせってのが大きい)

これは楽しい、いいオペラだった。


2008-12-30

_ くまのプーさんがブームになる

突然、子供との間でくまのプーさんがブームになった。こんなにおもしろかったのか、というくらいにおもしろい。

クマのプーさん プー横丁にたった家(A・A・ミルン)

(家にあるのは、40年以上前におれのためにおれの母親が買った版だ。それにしても親子2代(3代かな? この場合)で共有できるってのが、本の良いところだ)

たとえば、いきなり大雨が降って、あたりが水没してしまう。周りを水に囲まれて身動きがとれなくなったこぶたが助けを求めるてがみをかくところ。「ぽくこぷたてす たすけてたすけて」そしてビンに詰めて流す。(読み返さずに書いているので正確な引用ではない。この後も)

いっぽう、くまのプーさんは大雨なのではちみつの壺を抱えて大木の枝に避難する。初日は10個の壺の間に足をぶらぶらさせているくまがいる。

次の日には4個の壺の間に足をぷらぷらさせているくまがいる。

その次の日には足をぷらぷらさせているくまがいる。

そこにビンが流れてくる。

「はちみつ!」

と、叫んでいきなり水に飛び込むプーさん。

開けるとがっかりするのだが、手紙が手紙だということはさすがに知っている。もちろん、字はほとんど読めない。それでもプーさんのぷの字は知っている。というわけで「ぷ」があるぞ。やった、このおてまみはプーにあてたてまみだ、と大喜びで、クリストファーロビンに読んでもらおうと出かけていく(なんのために水難を逃れて大木に避難していたんだか、と笑うところだとは思うが、その前に水に飛び込んでびんを拾っているのであった)。

そのころ、クリストファーロビンはふくろうと話ている。「ぼくは、プーが心配なんだ。あいつはあたまが弱いからなぁ」

ふくろうはちょっと考えて言う。「プーさんは、9個の壺の間で足をぷらぷらさせてましたよ」

というような具合に、いろいろなエピソードが縦横無尽に関連しあい、同じ言いまわしが数量だけ変えてこれでもかこれでもかと繰り返され(小さい子供が喜ぶパターンそのもの)、出てくる連中はみんなお人よし。

カンガルーを気味悪がって排斥運動を始めたうさぎは、子供を誘拐しておどして追い出すことを画策する。しかし、ルーがかわいいもんで一緒に仲良く遊ぶはめになる(地図を見るとうさぎの家とルーの砂場はすぐ近くなので、どうやらその後も仲良くやっているらしい)。

ティガは大言壮語の果てに、どうやら自分は水泳が得意なようだと自己欺瞞に陥り、しかしぴょんぴょんバウンスする能力を獲得する。

いやぁ、きれいさっぱり忘れていたが、おもしろいのなんのって。

また、石井桃子の訳がすばらしい。伝法な口調のかんがとか、すんまそんのぶつぶつやのイーヨとか、これ以上間抜けな言い方はないというくらいに間抜けたプーさん、元気いっぱいで何も考えていないのがまるわかりなルー(ぼくのおくすりのんじゃった)、こんなにいきいきとした日本語で書かれていたのか、とびっくりする。(もちろん、ちょうほうというような言い回しが出てくるわけだが、そういえばぼくが重宝ということばを知ったのは、もしかしたらこの本かも知れないが、このあたりの単語は多少、死んでいるような気もしないでもないが、子供はちゃんと知っていたので重畳重畳)

いや、それにしても、原文ではどうなっているんだろうか、とひとしきり楽しんだ後に子供と話し合い、結局、調べようとなった。1956年に死んだんだから、もう著作権は切れているから、インターネット上にテキストがあるだろう……無いよ。どこにも無い。イギリスも75年ルールになってしまったのか?

いずれにしろ、無い袖は振れないので、みたらそんなに高くもないのでペーパーバックを注文した。

Winnie-the-Pooh(Milne, A. A.)

The House at Pooh Corner (Winnie-the-Pooh)(Milne, A. A.)

_ 恣意的帰納法

どんなに客観を装おおうとも、文章化した時点で(いわゆる)社会科学的な手法では主観が入る。

それは、全世界の全時間に発生する全現象から、いやおうなく選択が必要となるからだ。

したがって、どのような手段を弄しようとも、現在、その「全」を扱う手段がない以上、それは選択を伴い、結果的に主観となる。

これは、報道についても同じことで、どのような客観報道であろうとも、それは主観を持たざるを得ない。

何を書いているかというと、早めに言い訳を書いているのだ。

今、ある年表を作っている。

おもしろい。

主観によって選択された事象とは言え、それを客観的な事実に基づき年表にまとめていくと、そこにいやおうなしに傾向が浮かび上がる。

周期らしきものすら見えてくる(おそらく、それは最初の取捨の時点で、現時点で生き残っているに値するフィルタによってすでに取捨された結果だからなのだろう)。

それでも、そこに傾向が読める事実は否定できない。

この、関連しそうなことを年表化することで、ストーリーを読むというのは、山田風太郎が明治(幕末)物で取り入れたことで知られている。したがって風太郎メソッドということだ。

エドの舞踏会―山田風太郎明治小説全集〈8〉 (ちくま文庫)(山田 風太郎)

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

Before...

_ arton [わお、本当だ。どうもありがとうございます。やはりテキストになっていると、検索できるので良いですね(いずれにしろペーパ..]

_ arton [ペーパーバックだと、IT'S ME PIGLETになってるな。messageはmissage(おてまみ)だけど。]

_ タカナシ アヤエ [はじめまして。ずいぶん前の記事にコメントしてますがいいでしょうか? 「おてまみ」という言葉を検索したら80年代の少女..]


2008-12-31

_ Ruby-1.9.1-RC1

例によってMSIパッケージを作りましたので、お試しください。

Ruby MSWin32パッケージのページ

(preview2へのリンクも残してあるのでお間違えないよう)

……そろそろASR 1.9の準備もすべきなんだろうが、0から作りなおしたい病にかかっているので折り合いがなかなかつかないのが問題。

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

Before...

_ arton [試したらエコーバックもしませんね。ruby-devに投げてもらえるといいのですが。]

_ arton [Readline.readlineがプロンプトを出さないというところまで読んだ。]

_ arton [違うなぁ。単純に動かすとReadline.readlineは仕事をする。]


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|

ジェズイットを見習え