著作一覧 |
(AWDwR2ではなく、日本語版を元に略称を考える試み)
オーム社さんから献本していただきました。同時代に生きてて良かった!
RailsによるアジャイルWebアプリケーション開発 第2版(Dave Thomas)
この本は、意外なほどコンパクトなんだけど(本屋に行って実物見てもそうは思えないかも知れないけど)、なぜかというと、ちょと信じがたいほど、ページの上から下までびっちり埋まってるからだと思う。あと紙が薄い(読みにくい薄さじゃないよ)。たとえばエッセンシャルWF:が約400ページで、こっちが約660ページだから、2:3なわけじゃん。でも、厚みに差はほとんどない。つまりは、非常に高密度なのであった。前田さん、お疲れ様。
ちょこちょこDavid曰くがあるんだけど、この(脱線するよ)ての著者側のオブジェクトが囲みにしゃしゃり出てくるスタイルを最初に目にしたのは、当然のことながら空手バカ一代だ。
薄い本なので小指と薬指にはさんで引きちぎれるだろうと思ったが、実は電話帳よりページ数があるときては、話は別だ。厚みよりも枚数、これが生涯唯一の敗北の真相だ。大山培達(談)
というようなやつ。同じような感じで
テーブルスキーマをモデル定義の一部として扱うことに抵抗がなくなれば、DRYを守ることの利点がわかってくるでしょう。
とか入る(P.262ただし、部分)。いや、これは良くわかる。アプリケーションと一緒にテーブルがどんどこ変形(成長)していくというのは、僕にはとても新鮮だった。プログラムは成長するしリファクタリングでダイエットもしたりするけど、テーブルが追加や交換じゃなくてそのものが変形していくというのは、しかもそれがマイグレーションという名称でフレームワークに組み込まれているのは、新鮮だった。というか、これが当たり前になると、横に未来のためのカラムをたくさん持ち込んだりしなくても済むかも(という世界にいるわけだが)。
で、Davaid曰くでは、これがDRYだと言ってるわけだ。つまり、テーブルのスキーマにカラムが定義されているから、ActiveRecordには属性が定義されていない。うーん、本当にそういう理由なのか? と思わなくもないところが、大山総統の(談)に似ているところでもあるが、にも関わらず、なるほど、と納得したりもする。ORマッピングどころじゃないね。
あと、P.222のDavid曰くを読んで(そう、David曰くとかJoeの疑問とかは拾い読みして楽しいのだ)、思ったんだが、
Q: テーブル名(カラム名も)はなぜ日本語にすべきなのか?
A: それは、そのほうが会話のときに都合がいいからです。
ってのが成立するなぁとか。
良くわからない点もあって、で、そのDavid曰くとかはほとんどの場合、グレー地の囲みなんだけど、ところどころ白地のままのがあって、拾い読みしようと探していると探し損なうことがあることだ。
いずれにしても、P.282のDavid曰くは好きだな。
あと、P.275の「raiseすべきか、せざるべきか?」(飛べか飛ばぬかみたいだ)みたいに、なぜ同じfindがidではraiseで:firstならnilか、のAPIデザインの理由説明みたいなのもおもしろい。では、なぜ利用目的、実現方法、考え方が異なるのに同じメソッド名なのか? とか突き詰めて考えてみたり。メソッドを少なくして、1つのメソッドに複数のアプローチを混ぜるのと、1つのメソッドは1つの意味に限定するのと、どっちが(誰にとって)メリットがあるか? とか。
ってことは、
find(id)とfind(:first,...)とfind(:all,...)は実は、
find(id)とfind_first(...)とfind_all(...)の3つの異なるメソッドで、第1引数がメソッド名の一部だということではないかとか。コマンドとサブコマンドみたいだ。
もし、インテリセンス言語なら、後者がベターだろう。だって、findと打った時点でやりたいオペレーションの候補が選べる。
でも、スクリプト言語なので、前者がベターだろう。name errorと、couldn't find all ... with IDsじゃ、同じタイポなら後者のエラーメッセージのほうがましな気がする。どちらにしても3種類覚えなきゃならないとして、前者はコマンド1個とサブコマンド2個で、後者はコマンド3個。どちらも3個だが、フラットな3個を覚えるより、階層構造の3個を覚えるほうが簡単だと思うな(これは実感として)。
そのあたりが、
(IDEのような)サポートの多くはRubyには不要です(P.22。このての名前がない囲みにもいろいろ主張があっておもしろいのだが)ということなんだろうな、と納得するのもまあ実感だ。
子供に頼まれて、東京バレエ団の白鳥の湖を注文したら、すぐ届いた。で、一日中これが家の中を流れているのだが、チャイコフスキーは本当に、ドゥリーブとかミンクスとか、アダンとかとは比較するのも失礼なくらい、すげぇやつだなぁと思う。
こないだ見たのはルグリの仲間の名前忘れた人だったが(オディ*は上野水香で変わらないけど、この名前、どうしてか水野上香と良く言い間違えてしまうのだが、水野はともかく、ウエカって名前はあまりいなそうだ)、それより1年前のやつ。でも東京バレエ団側の配役は同じに見える。振り付けも同じで、最後はジークフリートが素手で戦いを挑むとロットバルトも魔法も使わず素手で勝負。ばかだね。鳥の羽が人間の掴める手にかなうはずもなく、羽をもぎとられて逃げ去っていく演出。で、長調に転じるので、おれは気持ち悪く感じる、という一連の流れ。
で、スペインの4人組がうまいってのと、音楽のよさから、スペインばっかりかかっている。チャプタ機能があるというのは便利なものだな。
ドンキホーテはバレエとしてはおもしろいのだが、そのおもしろいスペイン風の振り付けで、しかも音楽がすばらしいとなると、白鳥の湖になってしまうのかも。実際、そうなわけだが。
しかし、散々見て気付いたが、下衆のかんぐりかも知れないが、五反田(東京バレエ団の公演はほとんど五反田でやるんだけど、目黒通りから近いからなのかな?)行くといつも混んでて驚くわけだが、女性の観客がすごく多い。どのくらい多いかと言うと、男性トイレは待ち知らず、しかし女性トイレは数10メートルの列ができるというくらい。
で、ヒロインは日本人なのな。ユカリーシュカとかいうような人とか、覚えてしまった上野水香とか。で、ヒーロー(なんかカタカナで書くと変だがヒロインと対にするとどうしてもヒーローだ)は外国から招待した人。見ていると、別に日本人の男性舞踏家の質が低いわけじゃない。うまい人はうまいしなぁ。
だから、もしかしたら、これって白人コンプレクスみたいなものを刺激させる仕組みを利用した興行なのかな、とか思った。
とすると、男性舞踏家が日本で主演をやるのは構造的に難しいんじゃなかろうか、とか。熊川哲也みたく自分のカンパニーを作るとかしないと。あるいは、逆に向こうへ出て行くかしないと。
と、なかなかに奥が深い。
で、DVDが届いたのだが、奥さんがすごく疑わしそうな顔をして、これな〜に? とか包みを指差して訊くんで、ますます頭おかしいのか、と思ったが、指先を良く見るとフェアリーという送り主に反応したのか。確かに、怪しい名前だな、と納得したり。
Solaris10でRjbのgemがビルドできないというバグ報告が上がってきたが、Solarisを入れたマシンはこないだ潰しちゃったというわけで、VirtualPCに入れてみようとする。
が、ブート中に停止する。まあ、Virtual PCだから遅いだけだろうな、と6時間ほど放っておいたがだめなものはだめだ。
というわけで、OpenSolaris Forumの書き込みから、カーネルデバッグを有効にして、execmapの中でしばらくポーズしてやるというほとんどおまじないの世界を試してみたら、おお、先へ進むではないか。が、Javaのところで数分かかって、その後Xのところでハングしてから復帰したが、今度はネットワークのところで止まった。DHCPがどうしたとかフォーラムに出てるけど、それに引っかかってるのかな。と思ったらエラーで戻ってきたので、そうみたいだ。
で、手でIPアドレスを入れてやったりして、やっとソフトウェアのコピーが始まった。無事インストールできるんだろうか?
インストールが終わると、grubのメニューに2つの選択肢が出るが、このうちfailsafeのほうはインストール時と同じでハングする。
で、今度はXでとんでもないことになる。(すさまじく横長な妙な画面になって、しかも色が変なので、ログインは無理矢理できても後が続かない)。
したがって、Xの再設定が必要だ。
プロンプトが出たら、素早くrootでログインして(ここでさっさとadduserして、あとはリモートログインして操作するって方法があったな、と後で気付く)、Xの設定を、xorgconfigでやる。とりあえずs3 genericにして、75Hzあたりのモニターに設定すれば良いだろうというところまでやった。
ちなみに、この時点でのバックスペースはBackSpaceではなくDeleteキーを使う。
……
うむ、設定に失敗したが、コンソールのエラー表示が読めない。
最初に、euc-jpに設定したのが大失敗だ。コンソールで日本語が表示できないからだ。なんでcにしとかなかったんだろうか。
Debianとかxorgで動いているからxorgで良いのかと思ったら、ここが問題だった。
kdmconfigでxsunを選んだら、後は何もしなくても普通にデスクトップログインできるようになった(failsafeモードのハングとかは別の話)。
おもしろそうだから、適当に拾い書き(途中で力尽きたので後半はいい加減)。というか、見れば良いわけだし。
--ここから
時間延長は学生に嫌われるので、キッチンタイマーメソッド(東京電力の番組に出てもらったとか)。
あれ(高校の授業すっとばしの話)、学生は可哀想じゃないよ。50時間ったって実際には40時間で十分じゃん。授業に出たって、他のこと考えたりするの当然じゃん。ってわけで教室にいるだけで授業に専念してるなんてないわけだ。
リアリズムに合わないな。
授業に専念するというフィクション。
僕は出席とらないことにしてるし。
非常勤に行ったら出席取れと学生に言われた。じゃあ、そうしてやるか。毎回出席してトンマなこと書いたりしたら、何してんだと。出席してないのはまあしょうないだろ。出席を厳しくとるということだったら、出席したやつには厳しく、してないやつには甘くするもんだ。
政治の時間と教育の時間は違うもんだ。今の空気の中で人気が出るのはなにか? ……タイプのことだから、多様性があっても良いわけで。人気がある教授は悪口言われる教授だ。
正しいこと教わったら賢くなるかといったら、そんなこたないね。わかりかたが軽くなる。わからんなりに楽しむ能力があるやつ、ありゃいいですな。
心に残る言葉はなにか? というインタビューがあった。河合隼雄の言葉で「ヤブこそ診断を急ぐ」ありゃ、名言だ。
診断を下せば、マニュアルがある。だから対処できる。クライアントも早く決めて欲しい。あの人は名医でズバリ決めてくれた、といわれる。永いことつきあうってのは、ヤブにはできない。早く決めれば安心できる。患者も安心できる、家族も安心できる。何やらわからんのは辛い。決めたがるのは、わからんでもない。
(ちょっと微妙な話題が始まる)
学校の先生の2つの問題は、頑張れですな。おれに任せておけ、と。あれは困るんですな。学校っていうのは、その依存が強まってますな。センター試験のころ、教育が政治の焦点だった。当時のあらゆる政党が自民党から共産党まで賛成した。僕は反対だった。国がやることだから。大体、時代にずれていると思った。当時の経団連とかのほうがちゃんとしたこと考えてた。あの頃、70年代、これから多様性の時代にどうカジを取るか? といってたころに、共通の基準を求めるとはなんのことか? というのが僕の反対理由だった。当時の大学の先生たちは賛成してた。日教組は社会党系と共産党系が争ってた。社会党系は変わり身が早いが、共産党系はそうじゃなかった。今、教育で歴史的にどういう問題があるか。戦後レジュームなんて、どうでも良い。多様化にどう舵を切るかだ。世の中同じ基準でやるというのはだめだ。そりゃ、不安だ。不安というのは時代によって変わるもんだが、フロイトのころはヒステリーとか言ってた。今はどうもボーダーライン症候群とか言うそうだ。ややこしいから、単一の基準が欲しい。これは良いこと、悪いこと、はっきりして欲しい、そういうのがボーダーライン症候群というそうだ。早く診断決めなきゃ安心できない。安心できなきゃ安全じゃない。ということらしい。
僕は安全のために大事なのは安心しないことだと思う。安全と安心は相反するから両方合っても良いのだけど。
だいたい、この数100年、徳川以降、戦国時代でごちゃごちゃして大変だったから1つにまとまらなきゃあかん、とやってきた。これが1つの歴史的イデオロギーになってた。その転換期なんじゃないか。室町、戦国時代は多様性の時代だ。そのかわりにややこしい。大変な時代だった。それがいやだと徳川、明治とまとまってやってきた。これからは、いろいろあって、ややこしくて難儀なもので、それを乗り切ってやってくのだ。ヤブじゃいかん。財界にも気のきいた人とだめな人がいる。気のきいた人は、全社一丸となってなんてことは言わん。大学はだめだね。本校みんな1つにまとまって、とすぐ言うんだな学長さんが。かなわんな。
70年代のころ、コンピュータをどう入れるかというのがあった。僕はコンピュータ音痴だけど、新物好きだから、MITのラボにいたパパートというのが来て、みんなで議論したんだが、僕とパパートの2人が孤立してね、ほかの先生は標準のカリキュラムを作ってそれを与えてとか言い出す。パパートは観光ガイド派と、プレイランド派の2種類があると言い出した。標準のカリキュラムってのは観光ガイドだと。ぞろぞろ連れて歩く。プレイランド派は、学生を公園まで連れて行き、それぞれ好き勝手に歩けと散会する。そこで学生が興味を持ったところでコンピュータに訊けばいろいろ教えてくれる。興味がなければ通り過ぎれば良い。
……学力の低下ってのは必ずいうけど、ありゃでたらめだな。僕の前後2〜3年というのは学徒動員だのなんだので勉強なんかできないから、最も学力が低下してたころだ。それでもどうにかなるもんだ。客観的に、戦後数年、それから全共闘、これが一番の学力低下だが、それでもおもろいやつ出てきてるしな。ハードの学力とソフトの学力。ハードってのは本とかきちんと読んで、まあ基礎学力ってやつだ。出版事情なんて戦後すぐのころはひどいもんだ。数学が積み上げなんてうそっぱちだね。積み上げてたら間に合わないよ。数学の本は尻から読むのが良い。知りたいところを知っておけば良い。基礎学力なしの勉強の仕方をしなきゃならん。あの本は第5章が良いと言われたら、第5章をいきなり読む。ちょっとわからなきゃ第4章から読む。ハードの学力がないからソフトの学力はついたかも。
(おもしろい話が続く)
ええかげんにやっているから、自分のやっていることに信念を持ったらいかん。ああ、あそこでええかげんにやったからまちがったんやな、と気付かなきゃいかん。地図もそうだ。ええかげんな地図でもないよりましだから、それで良くて、ただええかげんやから、あれこらおかしいと気付かなけりゃいかん。それはバランスだ。最近の学生さんは、そういうとき地図屋に文句をつけるんだが、それはおかしい。
多様性というのは、人がやらないことをやるということだ。ということは、うまくいかないこともある。多様性の教育になったらドブにはまるやつがいる。セーフティネットというのは、どういうセーフかということだ。どこを通っても良いがドブにはまったらそりゃ知らん。でも這い上がって電話をかければ救急車がピーポピーポ助けに来てくれる。それがセーフティネットだ。ハイリスクハイリターン。
(日本の)フリーターってのはあれはちょっとまずい。国によってはフリーのほうが金が高い。そりゃそうでしょ。将来保障しないんだから、今、金が出せる。人件費を抑えるためにフリーというのは、これはおかしい。
スケジュールがないと動けないってのは年取ってから困るよ。もう空白だらけだから。計画達成型じゃ老後はもたないよ。いろいろ混ぜるといいね。それはその時の風の流れだから。でも10年もすると風の流れは変わるよね。
スポーツ選手とかでもゆとりのないのは良くこける。ゆとりってのは、本来の能力を生かすためにあるんだよね。だいたいゆとりのある子のほうが試験に強い。距離感が取れるからね。ゆとりってのは学校へ行かないとかそういうことじゃないんだよね。
100年の時間は国家の時間。1つのレジム(regiumだと思ってた。eにはアクサンテギュがあるものとして)が100年くらい。
環境の多様性というのは様々な時間感覚のやつがお互いつじつま合わせてやっていくということだ。大学ってのもそんなほうが良いんだ。50年の文化の時間としては、そこの大学らしさになる、と。それを5年10年の政治や経営の時間で振り回されるのはいかんですな。
「人生の時間、歴史の時間」(融通無碍な題ですな)
追記:計画性について、20年単位に人生を区切るという考え方が(80近い人だけに)説得力があっておもしろかったのを思い出した。結構、あれも重要な点かも。
Crafさんの情報のおかげで、Vista問題が解決したので、リリース。しかし世の中は111というワナ。
で、上のワナですが、httpsやimapなどで安全にsslを使うのであれば、111を入手して、展開後のlib/ruby/net/* を110側へコピーして、かつ、脆弱性情報の記載にしたがって、チェックを有効にしてください。
なお、Crafさんからいただいた情報をどうASRに適用したかについて、Vista対応ASR作成メモにまとめたので、興味があれば参照してください。
一昨日リリースしたパッケージには、rexml/formatterを入れ損なっていたので作り直しました(かとうさん、御指摘ありがとうございます)。
突然、思い出したが、かってこういう会話があった。
おれ「で、そこに柳が植わっててさ……」
相手「はい?」
おれ「柳が植わってたわけでさ」
相手「やなにってなんだ?」
おれ「柳だよ」
相手「やなにってなんだ?」
おれ「柳を知らんのか? よく幽霊が下に立ってることになってる木で、猫柳とかいろいろ種類があるだろ」
相手「ねこやなに?」
おれ「柳だよ。やなにじゃないよ」
相手「?」
おれ「よく川っぺりとかに植わっている木で、下に向かって枝がたれていて、葉っぱがこう細長いやつだよ」
相手「ああ、やなギか。お前、なまってるな。どこの方言だ?」
おれ「めんどうなやつだな。18代前から東京だよ。大権現と一緒に江戸に入ったという記録が残ってるから元は静岡のあたりだろうけど」
相手「そうか。静岡の方言か」
おれ「いや、東京の言葉だ」
相手「いや、おまえは、やなにと言っている」
おれ「本気で言ってるのか? 鼻濁音だろ。誰も語頭以外のギをギとは発音しないよ。それにぎとには違う音だ。銀行は銀行。柳は柳。重荷は重荷」
相手「やっぱりやなにと言ってる」
おれ「じゃあ、そういうことでいいよ。柳が……何言おうと思ったか忘れた」
相手「どうして普通にやなギと言わないんだ?」
おれ「だって、おれの言葉はあじゃあじゃはしてるけど別におかしくないもん。それに語頭の専用の言葉をわざわざ下にくっつけると、えらく発音しにくいじゃないか。無理すれば言えるけど、ちょっと無理だな」(実際、えらく難しい)
(その後もしつこく、このバカはにーにー言ってたが、第3者(こいつもギと発音するわけだが)が、東京の言葉だと鼻濁音ってのがあるってのをものの本で読んだとか言い出したから、さあ大変で、何か痛いところを突かれたらしく怒り出した)
これ、本物の満月の天蓋だ。
なんとなく買って、拾い読み。
元気なぼくらの元気なおもちゃ (奇想コレクション)(ウィル・セルフ)
小説をハックするってのは、こんな感じだろうな、と感じる。
まず軽いですな。内容はだいたい破滅がつきまとうから、常識的には重いわけだが、軽い。というのは、出てくる人々が自分だろうが他人だろうが、破滅することにはなんの問題も感じてないからだ。破滅ってのは究極には死ぬことだが、結局は、価値観の崩壊ってことだろう。死ぬってのは価値判断の主体の消失なわけだし。というわけで、死ぬか生きるかはどうでもよく、みんな仲良くいつも足取り軽く破滅してしまう。
これって、30分我慢すれば終わる面倒なことを片付けるために、60分プログラム書いちまったみたいなことだ。
あとは、風景描写がそのままその時点での心情になっているところ。小説としては当然な手法だが、それがテクノロジカルな風景に結びついてるところが、なんとなく言葉のハックな感じ。多分、おれがその対極に想定しているのは、魔術的な感じだ。
というわけで、伝統的なきっちりかっちりとした小説(人の世界を直截的な表現を避けて描く)の枠組みの中で、どうでも良さそうに破滅していく人々を楽しそうに描き出してるわけで、ああ、イギリス人って、ジョンフォックスとかライドンとかのニューウェーバーもそうだよなぁとか、バラードとかいたよなぁ(と思ったら、バラードが傑物と評価とか帯に書いてあるが、この素直じゃない言い回しはなんなのか?)とか、まあ、そういう系譜だ。
おれと同年生まれということは、それなりに同じ風景を見ているのであろう、ということもあって、結構気に入ったので、時々空いた時間にすべてを読み進める予定。
Opensoralisの存在はころりと忘れていて、Solaris 10ダウンロードからSolarisの2つのDVDのisoを落としてきた。
SDCのメンバーにならなきゃならないところがかったるいけど、既に登録してあるからどうってことはない。
Windows Onlyの圧縮されたやつと、Companion DVD。だいたい必要なものはCompanion DVDに入っている。
で、インストールが終わったら、rootでログインして、cd /cdrom/忘れた……/x86 とかして、パッケージルートに潜って、そこで、READMEに書いてあるサイレントインストールのためのパラメータファイルを作って、pkgadd する。
で、全部入りのSolarisができる。
以下、
・/opt/sfw/bin/sudoをchmod u+s
・sudoviで/opt/etc/sudoersを修正
・ln -s /usr/sfw/bin/gas /usr/bin/as
・ln -s /usr/sfw/bin/gar /usr/bin/ar ← これ忘れるとリンクができない
・rm /usr/bin/tar
・ln -s /usr/sfw/bin/gtar /usr/bin/tar ← これ忘れると普通のアーカイブがほどけない
で、/usr/sfw/binと/opt/sfw/binにPATHを通してやる。
・/usr/localが無いから、ちょっと迷ってから、えい面倒だと、mkdir /export/home/local してやって、こいつをオートマウントしても良いかも知れないけど、同じマシンなんだから、ln -s /export/home/local /usr/local してしまう。
・mkdir /usr/local/bin、lib、share とかする。
ここまでできると、あとはruby-lang.orgからrubyのター坊(bz2はだめ。僕はtgzのほうか、ただのtar)をダウンロードして、展開して、./configure;make;make test;sudo make install
とやってるけど、乱暴かも。
・でもEmacsが21だったりするので、mule-ucsとか後から取ってくる必要があったりします。
・で、cc(/usr/ucb/cc)は動かないので(これ有償なんじゃないかな。以前はSun Studioみたいな名前のパッケージを購入する必要があったけど)、gcc(/usr/sfw/bin/gcc)を使う。configureはgccを見てくれるから大丈夫。
というか、2000年(HTTP誕生約10年=1decade)にRESTアーキテクチャが示されたということ。
これによって、1997〜98に発生したHTTPを単なるキャリアとみなす考え、XML-RPCやSOAP(これらは、HTTPにデペンドしてなくて、SMTPでもFTPでも良くて、その上にXMLエンコーディングとネームスペースの層を重ねている)は生まれきっていないうちに息の根を止められた、ということ。でも、本当に1998年頃、HTTP+XMLで分散システムを支配できることがわかった時のエキサイティングな雰囲気は楽しかったな。ただ、その適用範囲を見誤って、分散システムの支配から、世界の支配を目論んだあたりから変な方向へ進んだようにみえる。
ということで、SOAPが死んだとか言われたところで、企業システムでは話は別で、というのは、ファイアウォールから世界を見れば、ポート80はすべての通信を集約する穴にすぎないから、HTTPも所詮、One of Themな通信プロトコルに過ぎないままなのだ。したがって、他の通信用の穴がない以上、ポート80を利用せざるを得ないし、その結果エンドポイントにHTTPサーバがいれば、その中にSOAPエンベロープを剥いたり包んだりする層が必要になるし……、というわけでSOAは別に死んだわけではない。薄い分散システムのコアな層としての価値はまったく減じたわけではない。
だから、そのSOAP(オリジナルSOAPは完全に死んで再生機構送りになって、そこでXMLPという名前(もちろん経営陣も違うわけだが。WS-*用の包み紙に徹するというコアコンピテンシー路線)で再上場しようとしてるわけだが)やその他が、どこに生きているかを見誤ると使えるものが使えなかったり、使えるものを見逃したりすることもある、と。
というわけで、RESTアーキテクチャを頭に叩き込んでから考えるようにすれば、人間可読層とHTTPステータスは別の話であるとか、2x、3x、4x、5xに従えとか、ステートレスとはなんぞや、とかを出発点にできる、ということになる。
層がなくて苦しんだ挙句、層を作りすぎて自縄自縛に陥り、適度な粒度で落ち着く、というのは実装と現実に揉まれてアーキテクチャは洗練するのだから、当然の成り行き。誰でも知っている教訓の、無手順(BSCとか)−OSI−TCP/IPとか、i386−ネットバースト−Coreとか(関係ないか。でも構造の相似性においては関係ないとも言い切れないような気が)いろいろある。
で、HTTP+xに落ち着いたということ。これは、CORBAやDCOMのような分厚い分散システムインフラがHTTP+SOAPに単純化された(もちろん、ここについても現在もCORBAがぶんぶんしているところはあるはず)のと同じようなもんだ。
で、HTTPが生まれて、もまれたり、他の世界からちょっかいを受けたりしながらも利用され続けて、10年たったところで、あらためてオリジナルで良いじゃんとくっついた垢を流され、早7年というか、もう7年。
つまり1997−1998のHTTP+XMLから10年たったところ。
arton でも逆に、ひどいかどうかはとりあえずどうでも良いんじゃないかな。ひどくても、それを信じ込んで何かやってみて、おかしいなって気が付けば、それはそれで良いことのような気がする。逆に、それに気が付かなかったら、きっと合ってたんだと思う。レベルが。
なんか、期せずして、森先生と同じようなこと(ええ加減な地図でもないよりかはずっといい。ええ加減やからこりゃあかんと気付かなあかんけど)を言ってておもしろい。
あと、無料の意味でのフリーなオブジェクト指向データベースに何かあるかなぁとか言い合っているけど、db4oがあることを今頃になって思い出した(自由の意味でのフリーでもあるけど)。
なんかギターが細かく刻むのが聴こえてきたのでテンポといいマーキームーンかと思って、ちょっとボリュームを上げたらカレンカーペンターの声が聴こえてきたので、あわててスキップ。というかさっさと消そう。
何回目かのチャイコフスキー旋風が吹き荒れていて、チョンキョンファばかりを聞いている。リズム感がちょっと特異なせいで、バイオリンの甘美な側面が強調される不思議なスタイル。これは好きだな。
その昔、NHK FMのクラシック音楽の番組(門間直美とかがDJをやってたと思った)で、キョンファチョンがどうしたの、バルトークがどうしたのとか連呼しながら、
バルトーク:ピアノ協奏曲第2番(ショルティ(サー・ゲオルグ))
(たぶんこれだろうな)
を聴かせてくれたわけだが、妙な名前だなぁと思ったら、韓国の人だった。最近はキョンファチョンじゃなくてチョンキョンファと書くようになったようだ。
元はといえば、ツィゴイネルヴァイゼンのお勧めに、
ツィゴイネルワイゼン(ヴァイオリン名曲集)(チョン・キョンファ)
(マジャールもコリアンもどっちも東の民族だからなんか共通するもんがあるかも、とか思ったのだが、あとになって調べたらハンガリーでもなんでもなくてジプシー音楽って意味だった。どっかで記憶の交換が行われたらしい。それにしても今のロマと呼ばれるジタンとかジプシーとかいう人はエジプト出身と名乗っていたりとか良くわからない歴史の人たちのようだ。)これを挙げてみたものの、実際のところどうだろうとか興味を覚えて買ってしまったあたりからチョンキョンファの再発見となったのであった。
いずれにしてもヴァイオリンの音というのはピアノに比べて妙だなぁとか思いながら聴くのであった。というか、タリスの曲とかくだらないといえばくだらないのだが、音を美しくすることで聴かせてしまえるもので、こちらは思わぬ発見に満ち溢れた小曲集だった。
これはまったく聴いたことがない(誰かがアフィリエイト経由で買った)が、聴きたい。というわけで、購入予定にしておく。
音楽って何から生まれたんだろうか?
アフリカのサバンナを横断するときに猛獣に襲われないように親指ピアノをツィンツィン鳴らしながら歩くとか、ってのをはるか以前、小泉文夫監修の東アフリカの音楽とかってレコード持ってて良く聴いたことを思い出したりしたのだが(結構、いろいろあったが、東アフリカが一番好きだった)、今でもこういうのを録音してきて売りさばく人たちっているのだなぁ。
Wikipediaを眺めてたら、ダンジョンマスターの記事があって読んでみる。
それにしてもあれは本当に怖かった。向こうの暗がりに何かが見える……と思う間もなくガサガサ嫌な音がして、キィキィ鳴く尖った口で足がやたらとはえたグロテスクな怪物につつき殺されたり、ヒタヒタ音がするな、と思う間もなくケへヘへヘと声がして、丸くて毛むくじゃらな怪物が出てきて、腰を抜かしていると、身ぐるみはがれて、ええっと驚いていると、ガサガサ音がして、突如眼前に躍り出たでっかな蟹に鋏でなぶり殺されたり、なんて人類はひ弱なんだろうと思い知らされる暗黒の日々。
食べると美味いが、たいていは逆に食われてしまう牙を持った巨大芋虫(カオスの逆襲のオープニングの檻の絶望的な闘い!)のブフォーという唸り声。
あれは、サウンドデザインとアミーガの再生能力のマジックだったのたろうか?
DOSV版のⅡが、画はきれいになったのに、どうにもショボくてそれほど楽しめなかったのと合わせて、時々思い出す、あの恐怖の日々。
子供が妻と話しているのを何気なく聞いていると妙な言葉。
「〜ちゃんは?」
「あのこはね、腐ってる」
「えー?」
で、どうやら彼女たちの学校では、腐女子を「腐っている」と表現するということがわかった。生ものだしな。
で、後でいろいろ聞いてみたりして。
「で、腐女子ってやっぱり、やおい本とか読むの?」
「それなに?」
どうやら、やおいという言葉は流通していないらしい。
「単におたくみたいな意味なのかな?」
「違う」
「じゃあ、なんなんだ?」
「BLとかGLとか。薔薇とか百合とか」
「なんか、生な言い方だなぁというか、薔薇とか百合とか古くせぇな」
「あとは暗号みたいな言い方」
「?」
「たとえば、ディーグレイマンにラビっていう子が出てくるけど、(おれが覚えてないから今作った)ブルーのラビとか、ギャングのラビとか」
「なんのことだ?」
「BとLでBLとか、GとLでGLとか」
「? 良くわからんなぁ。どういう使い方すんだろう? ブルーのラビ貸してとか、読んだとか?」
「違うなぁ。……たとえば、『○ちゃんてブルーのラビが好きなんだって』『そりゃ、腐ってるわ。』とか」
「なるほど。腐ってるのか」
「うん、腐ってる」
「お前は腐ってるの?」
「全然」
「おれは、ジョニーロットンは好きだけど、ライドンのほうがもっと好きだな(関係ないが腐ってるというとロットンという名前が条件反射で出てくる)」
起動は、script/server -d
で良いとして、シャットダウンがよくわからなくて、最初シグナル9を送りつけたわけだが、PIDファイルが残るので次回起動時に文句を垂れる。
で、mongrel_rails stop
を発見。しかし、
!!! PID file log/mongrel.pid does not exist. Not running?
とか言われる。というか、なぜlogディレクトリを見るんだ(デフォルトで書いてるのはお前だろ?)
で、mongrel_rails stop -P tmp/pids/mongrel.pid
にたどりついた。
と思ったら、script/serverがtmpに書かせてたのか。
mongrel_rails start -d
だとlog/mongrel.pidに書いてる。
ってことは、script/serverを使ってstopする方法もあるのか?(無さそうなんだが)
debian etchのiconvだと、locale_charset()ってのがiconv.hに存在しないから、extconf.rbが失敗しておかしなsoが作られてるみたいだな。
と思ったら、使われていないのか。じゃあ、問題なさそうだが。
子供が読め読めうるさいので、結局、ディグレイマンを12巻まで読んでしまった。まあ、十分におもしろいし、絵柄も最近のってみんなこうだなぁとか思いながらも別に悪くもない。
だが、ごたぶんにもれないジャンプ漫画の王道を行っているので、読んでてなんだか物悲しさも漂ってくる。
この先きっと、死んだはずの連中はみんな裏道だか魔法だかの力で結局帰ってこられるだろうし、ある程度までかたがついたら、もっと強力な敵がやってきて(この感じだと外宇宙あたりからサタンとかとか)ノアの一族と仲良くタッグを組んで戦ったりとかになるんだろうなぁとか、そういったことだ。
いや、そういうのを軽々とかどうかはともかく強引にねじ伏せてしまう凄い作家も稀にはいるわけだが、この作家はそこまでの腕力はなさそうだし(画に頼ってる部分も大きい)、こんな調子で読者に飽きられる(というよりも、中核の読者が卒業するまでってことなんだろう。より若い子はその時点の同じ程度の作家に捕まるだろうから)まで、えんえんと戦い続けてなんだか良くわからないままに尻つぼみになって消えてしまうんだろうなぁとか、予見できてしまうからだ。
でも、作家はそれで収益を上げられるから良いんだろうけど、作品と読者(まだジャンプパターンを知らない)が不幸だよなぁとか思わずにはいられないわけで、そのあたりを考えると、ジャンプ漫画のほとんど(いや、稀には特別な作家が入ることがあるわけだけど)は、連載が終わって(と、限定する必要もないような)しばらくしたらキャラクタや世界についての2次創作についてはパブリックドメイン化したほうが良いんじゃないかとか思わずにはいられない。
最近、立て続けにシグナルが関係しそうないやんな現象に遭遇する。
こないだ、かへいさんと話していてどっちかが気付いたこと。おれかな? かへいさんかな?
RubyとLISPは似ているってのは、気付くも何も、似ているからまあいいんだけど、コードそのものだ。
思い出した。元はかへいさんが、LISPの最後のカッコのことを言い出したのであった。blink-matching-parenがなきゃ書けないよねってことを
;;これくらいしか、手元から出てくるのがない。たかだか4個(6行目は5個)だが (defun next-window-line (n) (interactive "p") (let ((cur-col (- (current-column) (save-excursion (vertical-motion 0) (current-column))))) (vertical-motion n) (move-to-column (+ (current-column) cur-col))))
でも、慣れると平気みたいだよ、とのこと。
で、あああああああ、これだ! と気付いた。
# いい加減な例。たかだか4end def foo(a) (1..100).each do |i| a.collect do |x| #いい加減というか、何かバグらしい if i % 2 == 0 x else x + 1 end end end end
いい加減な例じゃないと、あっという間にend8段だのend10段だのになる。でも、ネストしてるわりに全体が読みにくいわけでもない。なぜだ?
returnを明示する必要がないってことが理由の1つだというのは気付いている。
重要なことは、doの行(+1)に入っているからかも知れない。end8段なら、先頭8〜16行を読めばたいていのことはわかる。
だから、最後にendがだがだが並んでいても無視できるのであった。戻り値はendが並んでいる限り、最初のdoの戻り値か、さもなきゃ最後に評価した値になるわけだし。
この、お尻の部分に、(プログラムの内容を読解するのにはどうでも良いといえばどうでも良い)、文字通りの帳尻合わせの塊が来るところが、LISPに似ているのであった。
もし、本当に、最後に他の値が入らないendがだがだが並ぶのが、頻出するのであれば、スーパーendとかあると楽でしょうな。
def foo(a) (1..100).each do |i| a.collect do |x| if i % 2 == 0 x else x + 1 END # ← スーパーendは帳尻を合わせる。でも、classを閉じるのはかんべんな。同じインデントのところまでの帳尻を合わす。
ある日リポジトリを見たらAというプロジェクトが登録されていた。
数日後に見たらAとA1の二つに増えている。
さらに数日したらA14までに増えている。
ブランチが多いな、と思いながら忘れていた。
数年してみたらA21で打ち止まっていたものの、最後に更新されたのはA14で、良くみると、まんべんなく全部のプロジェクトが更新されていて、同じ内容を保つように制御されていた。
映画はロングが好きだ。アップが多いとうんざりする。バストショットすら不快だ。その意味じゃ、リリアンギッシュとグリフィスは、映画に呪いをかけたといったって良い。
でも、例外はある。
顔の映画だから顔を撮るしかないし、顔を取るならアップしかない。
だから、突然、ひかれると、そこに生まれる空間に衝撃を受ける。
逃げていくシーモアカッセル。
Railsで作られたTracクローンを入れた(via yamazのRails日記)。
ちょっと使った感じでは、tracよりは動作は遅いかな。ただ、Rubyで書かれているんでtracよりどうにでもなりそうなところが、ポイント。あと、tracが使っているソース表示用のSilver(ちょっと忘れた)と違って黙っていてもRubyのコードが色付きで表示されるところはポイント高いかも。
ちと気付いたが、Retrospectivaの件だけど、元のyamazさんも、おれも、redmineを使っているむらまささんも、みんな「Rails/Rubyで作られいてるため、どうにでもなりそう」と書いてるわけで、ほんとに、オープンソースってのは、そういうことだよな。(あと、知ってる言語かどうかってのもあるわけで、おれはtracよりこっちだったりする)
_ むらまさ [似たようなものとしてredmineを試しに使ってます<http://www.redmine.org/>。 これもRa..]
ワーキングプア―日本を蝕む病(NHKスペシャル『ワーキングプア』取材班)
アマゾンの書評がものすごいらしいので見に行ったら、本当にそうだった。とはいえ、実際には4星とってるので、高評価が続いたあとになって、こっそりと低評価軍団が襲来したというところなのかも。
目の前の人に厳しくなるってのは、自分の足が引っ張られるからとか、正当化のための理由は確かにあり得ると思うんだけど、こういうアカの他人に厳しい人ってのは、どういう倫理感を持ってるんだか、おれには非常に不思議だ。
struct JNINativeInterface_ { void *reserved0; void *reserved1; void *reserved2; void *reserved3; jint (JNICALL *GetVersion)(JNIEnv *env); (たくさん続く)あるいは、Win32SDKのCOM周りのヘッダ見るとか(これはoaidl.h)
#else /* C style interface */ typedef struct ICreateTypeInfoVtbl { BEGIN_INTERFACE HRESULT ( STDMETHODCALLTYPE *QueryInterface )( ICreateTypeInfo * This, /* [in] */ REFIID riid, /* [iid_is][out] */ void **ppvObject); ULONG ( STDMETHODCALLTYPE *AddRef )( ICreateTypeInfo * This); ULONG ( STDMETHODCALLTYPE *Release )( ICreateTypeInfo * This); (たくさん続く)いくらでもサンプルはありますね。
あと、手元の石田訳K&R第2版の1989年版だと、
a = f(x,y); で良いと明確に規定されたのは、どころか
第1版では型は"関数"に限られ、関数へのポインタを介する呼び出しには、明示的な*演算子が必要であった。「必要」であったです。
(上掲書P.247 以下同じ)
ANSI標準では、ある種のコンパイラを尊重して、関数への呼び出しとポインタで指定される関数に同じ構文を許している。もちろん古い構文も依然として使用可能である。
「許している」という言葉のニュアンス(空気とかふいんきとかだ)を尊重すれば、「無意味なことをしてまどろっこしくしているだけ」という言葉は、無知としか言えないな。許されてるだけの話なのにね(「古臭い書き方ですね」というだけのことだ)。
あと(ここからは別の話題)、同じ場所に引数とパラメータの違いが書かれているのだけど、このあたりはごっちゃにしてる人(おれも面倒だから全部引数と書くときはある)は多い。
引数ということばは関数呼び出しで渡される式に対して使われる。一方、パラメータということばは、関数定義によって受け取られる、あるいは関数宣言で記述された入力オブジェクト(あるいはその識別子)を表す。"実引数(パラメータ)"および"仮引数(パラメータ)"ということばが同じ区別を示すのにそれぞれ使われることもある。
(ただ、思うに、「引数ということばは」の個所は「引数(argument)ということばは」のように、英単語も付けておいた方が良かったのにね)
あと、原文がどうなっているかは、これまた別の話で、上はあくまでも日本でのCのバイブル石田訳本にどう書かれているか、だ。もっともそれが水準器になっているわけだからだからどうともならないわけだけど。(ここらへんには指摘はなかった)
Javaを独習する前に読む本(青木 峰郎)引数とパラメータの区別をきちんと解説している良心的な初心者用入門書もある。
追記:それにしても、なんでこの日本語が読めないんだ?(多分、実際には読まずに印象と風聞で★1つをつけてるだけなのではないかなぁ。最初のエントリと同じことかも)
プログラミング言語C 第2版 ANSI規格準拠(B.W. カーニハン)勝手に正誤表を見ても、天地がひっくり返るほど致命的なものはないし。転写型暗記ができる人には向かないとかなのかな。
さらに追記:なんとなくだが、「ある種のコンパイラ」「敬意」あたりから、プラガー(綴り忘れた)の作っていたコンパイラではないか? とか
上でプラガー(綴り忘れた)とか書いてから、ちょっと気になっていろいろ見てたら、Whitesmithインデントスタイルについてのページが見つかって(Plaugerだった。プラウガーかな? フランス人ならプロージェで一意に決まるんだが、英語は良くわからない)、そのあまりの変質者ぶりと、それに対して
(according to the Jargon File), Whitesmith is actually more common than K&R among C/C++ programmers
というコメントの無茶っぷりにびっくりする。このスタイルがモアコモンか?
でも、確かにブロックの開始と終了がブロックそのもののであるならば、それほど無茶でもないのかな? いや、おれはこれはだめだな。
やっぱ、アルカンはええのう、と何度も聴く。
Symphony for Solo Piano(Valentin Alkan)
(ソロピアノのための交響曲が入っている)
リストにもあるが、ピアノはオーケストラエミュレータだから、交響曲をピアノで表現できるわけだ。
ベートーヴェン:交響曲第5番ハ短調「運命」(リスト編)(紙ジャケット仕様)(グールド(グレン))
えーと、つまり、フランツリストの時代だって、オーケストラは金も場所もかかる。楽団員を集めるわけなので時間も限定される。
しかし、エミュレータを使えば、超絶技巧のピアノ野郎と良く響くピアノさえ用意すれば、その場所(サロン、ホール、広場)でオーケストラを聴くことができる。
だから、人気作曲家の交響曲の忠実なエミュレータは人気者だ。リストのコンサートといえば、それは何よりも、ベートーヴェンの交響曲が聴けるチャンスであった。あの時代のパリの人々は、ベートーヴェンの交響曲をフランツエミュレータで経験していたのであった。
というわけでリストのベートーヴェンの楽譜を読むと、オーケストレーションとピアニズムの差異をどうエミュレートするかについてのリストのデザイン戦略がうかがえて、おもしろいのなんのって。
でも、アルカンになると、他人の曲より自分の曲というわけで、交響曲を自分のためにピアノで書き、ピアノで演る。でも、これには問題があって、リストと違ってピアニズムが勝って(かってじゃなくてまさって)しまうのであった。ところどころエミューションが見えるところもないわけではないが、やはりおれにはピアノに聴こえるなぁ。
Concerto for Solo Piano Op 39(Valentin Alkan)
これもおもしろそうだ。ピアノのための、ピアノ協奏曲。メタにメタを重ねているな。今度、買おう。
で、思い出したが、以前ベルリオーズの幻想交響曲をリストがピアノにエミュレートしたのをホグウッドじゃないけどそんなような名前のピアニストがLP化したのを持ってたけど、あれはすごくおもしろかった。っていうのはベートーヴェンと違ってベルリオーズの交響曲用のテンプレートというかモデリングツールはピアノじゃなくてギターだから、ピアニズムに合致しない部分が多いのだ。そこをリストが強引にピアノでエミュレートしているため、メタモデル(ギター)→モデル(交響曲)→メタモデル(ピアノ)という妙な三角構造になってしまって、とんでもない音世界が構築されていたからだ。あれは変だったな。もう一度聴いてみたいな。
追記:さがすとそれなりに見つかるな。おもしろいからだな。
Liszt Arrangement of Symphonie Fantastique(Berlioz)
しかし、どのピアニストも知らん。最後のやつには評がついてるが、そこで比較されているペトロフとデュシャブールってのは見つからないし、思い出したがおれが聴いていたのは、レスリーハワードみたいだ。
まだ1990年代の最初の頃、Javaという言語が見えもしないころ(とは言え、元ネタのセットトップボックスはあったかも知れないけど)、実装継承があるからSOMえらい、COMには継承なんてないじゃん、というようなSOMな人に対して、へーんだ、COMにはインターフェイス継承があるもんね、というような論争があって、それから10年くらいしたら、みんなインターフェイス継承でコンポジションでどうしたとか言い出したもんで、なんだ、確かにSOMは消えるはずだよな、とか思ったものだという昔の話。
あのあたりの話ってどっかに残ってないかなと探したら、あるもんだ。
このWikipediaに書かれている内容は、僕が覚えているSOM派の言い分に沿っている。
The most notable difference between SOM and COM is support for inheritance — COM does not have any. It might seem odd that Microsoft produced an object library system that could not support one of the most fundamental concepts of OO programming, but they did have their reasons. The main issue is that it is difficult to know where a base class exists in a system where libraries are loaded in potentially random order. COM demands that the programmer specify the exact base class at compile time, making it impossible to insert other derived classes in the middle (at least in other COM libraries).
おおざっぱに訳すと、「SOMとCOMの一番の違いは、継承のサポートだ。つまり、COMには継承は無い。MSのオブジェクトライブラリには、OOプログラミングの肝の継承が無いんだぜ。くそめが(odd)。まあ、連中には理由があるらしい。ライブラリのロード順がわからないから基底クラスがどれかわからないんだってさ。へへ。COMはプログラマにコンパイル時に基底クラスを特定するように要求してるから、派生クラスを間に挟むことも不可能なんだぜ(少なくても他のCOMライブラリについてはね)。どんくせー」
それに対して、ドンボックスがThe Component Object Model and Some Other Model:A comparison of technologies revisited yet again で語る。
COM is a way of life
じゃなかった。
Traditional OO inheritance is fully supported at the interface level. In lieu of implementation inheritance, COM offers aggregation to allow implementation hierarchies. The laws of IUnknown allow for a clean object composition architecture that while simple, is somewhat different than the circa 1985 approach to reuse most of the world is used to.
「インターフェイスレベルでだったら、伝統的なOOの継承は完全にサポートしてるぜ。実装継承の代わりにCOMは集約を使って実装の階層構造だって実現できるんだ。IUnknow則を使えば、クリーンなオブジェクトのコンポジションモデルを構築できるぜ。しかもこいつは、1985年頃の手垢にまみれた「再利用」とは違って、シンプルだい」
で、21世紀になってみたら、「MSのCOMには継承ないでやんの。バーカ」とか言ってた連中側が、implements BaseInterfaceとか書いてvoid foo() { base.foo(); }とか書く方法を持ち上げまくってたり。
一方、今のぼくたちは、もっとシンプルに
class Foo def do_something() ... end end class Bar #ここには何もない def do_something() ... end end a = [] a << Bar.new a << Foo.new ... a.each {|e| e.do_something }
とか書いてるわけだ。
というようなことを「ポリモーフィズムは継承の面白い副作用..なんかじゃない」を読んでて思い出した。
歴史の解説:COMSOM論争の時代には、(エンタープライズでは)OOのメリットは「再利用性」という「生産性」に関する呪文とみなされていた。
したがって、継承が今になってみるとばかばかしいほど重視されていた。
COMはコンポーネント指向(バイナリの流通)も目的だから、コンポーネントを集約(むしろ内包)して再利用できれば良いので、インターフェイス継承さえあれば(これはC++でのポリモーフィズムのために必要)それで十分に役に立ったのだ。というよりも、再利用単位がコンポーネントなので、はなから継承スパゲッティみたいなものも起きなかったし(とは言え、DLLスパゲッティが待っていたというオチはつくのだけど)。ポリモーフィズムについては、名前によりメソッド解決のIDispatchインターフェイスがVB用にあったので、こっちが便利だった(それが、ActiveScriptingに繋がることになるのだと思うし、今の動的言語の受容に対するベースになったのではないだろうかな)。
子供と相談して、太鼓の達人を買ったのだが、今日届いた。
太鼓の達人DS タッチでドコドン!(太鼓の達人専用タッチペン「バチペン」同梱)(アップデート版)(-)
で、ちょっと遊んだのだが、なんと舞踏ネ申が入ってるもんで、こればっかやってる(子供は大塚愛だったりするわけだが、つまるところ選曲がそれなりにうまくちらばっているということだな)。
で、本物を聴きたくなって、奥のほうから、おれが持っている唯一の7番を引っ張り出す。
ベートーヴェン:交響曲第1番&第7番(クレンペラー(オットー))
いや、しかし、太鼓の達人の7番とはえらい違いだ。これこそ巨象が踊るってやつだ。
遅いのなんのって。でも、妊娠期間約2年、誕生時には100kg越え(と、先日テレビみてたら象の妊娠について言っていた)ならではのよさってのはある。というか、フィルハーモニアはこの速度を維持できるんだから、やっぱりうまい。アッチェレランドしてくれ、と聴いているこっちがじりじりするくらいなんだが、絶対、期待には応えてくれない。
っていうか、おれは大好きだが、この7番はやはり異常だ。全然舞踏じゃないしな。といっても実にクリアでクリンな演奏だから、遅いといっても重いわけではない。むしろすっきりしている(間違いなく正気の音楽である)のだが、いかんせん速度感覚については狂っているとしか思えない。まさにクレンペラーの躍如とした面目が立っている。
というわけで、太鼓のためにも素直に間違いなく現存する最高の舞踏の神化を聴きたいかも(でも持ってない)。
(クライバーが廃盤とは。ちょっとびっくり)
む、どうせ買うならこっちのほうが良いのかな?
ベートーヴェン:交響曲第5番「運命」&第7番(クライバー(カルロス))
そこまで音が違うんだろうか。
しかし値段が倍違うってのは気分悪いな(どうせ音は自分で補完することになるだろうし)。
Beethoven: Symphonien Nos. 5 & 7 / Kleiber, Vienna Philharmonic Orchestra(BEETHOVEN, L. V.)
(というわけで、輸入盤の普通のCDを買うのが良さそうだ)
別のことしてたら、いつの間にかRuby.NETが0.9.0になっていて、msiパッケージなどで配布されるようになっていました。
リリースニュースの軽い翻訳:
ニュース速報! (2007/11/20)Ruby.NET バージョン0.9がリリースされました。すぐにダウンロードしよう。
これはRuby.NETがオープンソースコミュニティモデルへ移行してからの最初のリリースです(コミュニティオウナシップ参照)。
−Ruby.NETって何?
Rubyはシンプルさと生産性にフォーカスした動的でオープンソースなプログラミング言語です。
Ruby.NETはRubyソースコードを.NET中間言語に翻訳するコンパイラです。これはRubyを使って次のコンポーネント実装を助けます。
・.NETプラットフォームのネイティブ実行形
・サードパーティがC#などで作成したコンポーネントとリンクできます
・ヴィジュアルデザイナやデバッガ、セキュリティフレームワーク、膨大なクラスライブラリ——たとえばWindows Formの作成やデータベースアプリケーションなど、を含む.NETプラットフォームのリソースを使えます。
−オープンソースコミュニティのものです
Ruby.NETはRubyと.NETのオープンソースコミュニティによって開発され、所持され、制御されています。というわけで、協力してください(Contributingを参照してください)。
−何があるの?
ちょっと疲れたので、以下は簡略モード。
RubyCompiler.exe ソースコードコンパイラで、.NETのexeを作ります。
Ruby.exe MatzのRubyをエミュレートするインタプリタです。
あと、Visual Studio Integration Packageも用意してあります。Visual Studioに組み込むとシンタックスカラリング、エラーチェック、ヴィジュアルフォームデザイナ、統合ビルドとデバッグのプラグインがあります(Visual Studio Integrationを参照してください)。
最新のVSインテグレーションは試してないけど、MLで相当追い込んでいたみたいだから、結構、動きそうな気はします。
irb(main):002:0> def exit.inspect irb(main):003:1> "\h\h\hUse exit()" irb(main):004:1> end => nil irb(main):005:0> exit => hhhUse exit() # \hはだめか。 irb(main):006:0> def exit.inspect irb(main):007:1> "\x08\x08\x08Use" irb(main):008:1> end => nil irb(main):009:0> exit Use # やった。 irb(main):010:0> exit = "\x08\x08\x08Use.." # まてよ、文字列ならどうだ? => "\b\b\bUse.." irb(main):011:0> exit => "\b\b\bUse.." # inspectされるのか。 irb(main):012:0> a = "\x08\x08\x08Use..." # ↑に気付いてない。 => "\b\b\bUse..." irb(main):013:0> a => "\b\b\bUse..." # うが。↑に気付いた irb(main):014:0> exit = Object.new # やり直し => #<Object:0x29723d4> irb(main):015:0> def exit.inspect irb(main):016:1> "\x08\x08\x08Use" irb(main):017:1> end => nil irb(main):018:0> exit Use # よっしゃ。 irb(main):019:0> exit.inspect # ん? => "\b\b\bUse" # あ、そうか。 irb(main):020:0> exit # やめるとするか。 Use # ? irb(main):021:0> exit Use irb(main):022:0> exit Use irb(main):023:0> exit() C:\home\arton\>「何が面白いと思ったんだろう 」のあたり。
ZnZさんのtwitterへの書き込みから知ったのだがInstantRailsが停まってしまったというので、代替プロジェクトのRubyStackをちょっと使ってみた。
現在ベータ2で入っているのは、
- Ruby 1.8.6
- RubyGems 0.9.4
- Rails 1.2.5
- ImageMagick 6.3.5
- Subversion 1.4.5 (入っているだけで特にサーバーとして動くわけではない)
- SQLite 3.5.1 (入っているらしいが未確認)
- MySQL 5.0.45
以下VistaでRubyStackを使う場合の簡単な注意事項群。
・既定のインストールを行うと、Program Filesの下にインストールされる。
−当然、gemは管理者権限で実行しなければならない
−もっとまずいのは、projectsディレクトリがインストールされたディレクトリの下に作られるため、以降のscript\generateなどが軒並み失敗する(Program Files下は書き込み禁止だからだ)。これを避けるには、スタートメニューの「BitNami RubyStack」から「Use Ruby」を実行するときに、「管理者権限で実行」する。が、それも含めて、インストール時にユーザーディレクトリにインストールしたほうが良い。program Filesの下にprojectsディレクトリがあるというのは、/usr/binの下にあるのと同じ意味だから、気分は良くないね。(use_rubyバッチを変えて、projectsディレクトリを別の場所に作るとかしても良いとは思う)
・ということから、インストールディレクトリは\users\ログインユーザーの下が良いのではないだろうか。
・インストール時にMySQLのrootパスワードの設定あり。
・MySQLがサービスとして起動されるようになっている。
−当然、管理者で起動/停止しなければならない。
これは、スタートメニューの「BitNami RubyStack」の「Start BitNami RubyStack……」および「Stop BitNami RubyStack……」のショートカットを起動するときに、「管理者権限で実行」する。
・OpenOfficeやTomcat、Apacheも最終的にはバンドルされるみたいだが(service起動バッチに指定がある)、現時点ではバンドルされていない。
ライセンス表記がおかしいですね、確かに。で、作成されたlicensesディレクトリを見ると、mysql.txtというファイルが1つあって、それがGPLv2です。ということで、MySQLはGPLなので一番重いMySQLに合わせてGPLと書いてあるのかなと(単なる修正漏れの可能性も)。
-Subversionは、Subversionのlicensesを丸々収録らしい(aprからzlib、sn、opensslなどのライセンスを収録している)。
-Rubyは、ruby\doc\ruby\ruby-1.8.6にLGPL、GPL、COPYINGが全部入っている。
ということからは、RubyStackというパッケージそのものについては、APL2で、それ以外のソフトウェアはそれ以外のソフトウェアのライセンスという考えではないかなぁ。
●Rubyのバージョン
ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
2007/3/15にビルドしたRuby.exeとmsvcrt-ruby18.dll(InstantRailsと同じ)が入っています(これの出所ってOneClick?)。ただし、コマンド(cmd)はいろいろ変わっていて、sqlite3はruby\binに入っているのか。と今気付きました。
-InstantRailsは、zlib1.dll(2007/3/15)なのに、RubyStackはzlib.dll(2007/11/08)とか、細かい部分での相違は他にもあります。
ジェズイットを見習え |
Before...
_ 通りすがります [そうです。調べたら正式には「ジャイアント台風」でした。ここの紹介が雰囲気つかみやすいです。 http://pro.t..]
_ はら [よーう指摘してくれた!!!あの囲み記事を見るたびに意識化で何かを思い出そうとしてもがいていたんだ。すっきりしたっ。]
_ arton [いやー、ジャイアント台風はすげぇや。笑わしてもらいました>通りすがります っていうか、「まぶたの上から目玉まで」とい..]