著作一覧 |
ふと気づいたが、Lispの入門書には必ずといって良いほど、カー、クダーという読み方のカタカナが書いてあったような気がしてきた。というか、書いてなければ口に出せない。カーは出せるか。
最近はあまりそういうことを書いたのを見ないな。Gauche本にも目を通した限りではサーフィとか読み方までは書いてなかったようだ。
そういう意味ではプログラミング言語Cに、ちゃんとストルレンとかストルコピーとかスタドアイオードットエイチとか読み方が書いてあれば(これが正しいと主張するものではないが、こう読んではいる)、と思ったけど、あれは翻訳だから無いのも当然か。
LINQ本とか書く人がいたら、ぜひとも、リンクと読むとカタカナ表記をしておいて欲しいな。きっとリンキューとか口にする人がいて、最初何を話しているかわからないとかありそうだから。
P.I.Lはピルではなく、ピーアイエルと、少なくともジョンライドンは発音していたらしい。
多分ogijunさんのところで見かけたのだと思うが(追記:Kazuoさんのとこみたいだ)、これまた放置していたアラビア数学奇譚を読了。
いや、これは楽しかった。ペルシャの田舎で羊飼いをしていた稀代のかぞえびとたる青年とバグダッド育ちの青年が旅先で知り合うところから始まる、おとぎ話の世界だが、20世紀初頭のブラジル人が書いたとは思えないほど(ちょっとだけキリストについて書いた部分が出てくるがそれが妥協だったのかも)、アラビア風な物語、つまり千夜一夜物語でおなじみの何かというとアラーを称え、機知に富んだ会話のスタイルで書かれている。
出てくる問題のいくつかは(この本がもしかしてオリジナルなのかも知れないが)すでに知っているものだったり(35頭のラクダを、長男は1/2、次男は1/3、三男は1/9に分ける問題など)するが、もちろんへーというようなものもたくさん。特に気に入ったのは、サンプルによって誤った結論を導く例として出された2025、3025、9801の平方根。
さらに、この物語は数学史にもなっていて(歴史のお話が出てくるのもアラビア風なところ)、いろいろ知っている話やちょっと怪しい話なども出てきて、楽しい。インドが正しいかどうかはともかく、ゼロの発見の話は、僕は間違って覚えていたようだが、無いことを示す原点たるゼロでなく、桁をそろえて計算するためのフィラーとしてのゼロという記号の話だったのだな。
で、主人公たるかぞえびとはある詩人の娘の家庭教師もするのだが、女性が数学を学ぶことについて懐疑的な意見を聞かされて困惑している父親たる詩人に対して、ヒュパティアという優れた数学者のことを教えて納得させるのだが、ううむ、僕はヒュパティアの最後について知っていただけに、その例はいまひとつではないかと思ったのだった(もちろん、最期については書かれていないのだが)。が、彼女の最期に責任があるのはキリスト者だしな。
「真実として迷信を教えることは、とても恐ろしいことです」
それはともかく、代数と幾何学を学ぶ意義について、かぞえびとが説明するところはすばらしく美しい。そこで疑問に感じたのは、歴史とかのように社会科や英語には副読本があるのに(学校教育の話)、いや、あるのだからこそ、数学についても、こういった副読本を使えば良いのにな、ということだ。なぜ、副読本がないのだろう? 数学史だって良いと思うし。
というのは、人によるとは思うけど、手続き型プログラミングのほうが主流だということと同じ理由により、物語を伴うことにより良い意味で導入がスムーズになるのではなかろうか。つまりコアだけを教えるのではなく、ゆとりが必要ということになるのだが。学際の部分を同時に学ぶことが逆にコアを学ぶことに対する求心力になるのではないかと思う。
簡単で、ファイルIOがあって、ネットワークアクセスがあって、文字列処理があって、複数インスタンスを生成する意味があって、ArrayとHashを使えて、というようなオブジェクトを探しに探して、やっと見つけた。
が、2008年のネタなのかと言われるとちょっと心もとない。
昨日から鼻水とくさめがひどくてついに会社を休む。で、おそるおそる病院へ行くと、すぐに結論が出るはずもないが、確かに昨日と今日では鼻水が異なる。風邪みたいですなぁということで少しほっとする。
たださんも指摘されているが、スタートアップが雨後の筍のようににょきにょきしているらしいアメリカと異なり、いったい、この日本で誰がこの本を必要とするのだろうか?
と、実用書として読むといささかスタンスが不明にはなるものの(追記:でも思い出したけど、おれはジョエルテストを少なくとも2/3はクリアできるようにしたつもりはあるのだよ)、例によってジョエルの歯に衣をそれほど着せない(でもバランスは取ってたり)物言いと、きびきびと歯切れ良い青木さんの翻訳は、抜群におもしろく、息つく間もなく読了。実際、鼻が詰まっているから息はつけないのだが。
これ、たぶん、ヒーローものとして読めばいいんじゃないかなぁとか、思う。思う分だけ微妙に自省してみたり妙に劣等感を刺激される面もないわけではないけど。
つまり、これはどっちの側にたっても、つまりスーパースターを雇ってじゃぶじゃぶ金を湧かせようと考えている側に立とうが、豪華な個室でおもちゃと148インチの有機LEDを与えられてOCamlを駆使しながら世界を変えるスーパースターの側に立とうが、なにか一種のドリーム仮面の世界なのだな。
おれ、これのあっち版を知ってるぜ。島ko1じゃなくてげふんげふん。
そして、たぶん、あの人たちが島なんちゃらをおそらく大喜びで読んでいるように(そして立場の違いと諸条件を無視しておそらくなにかの教訓も引っ張りだしてるんだろうよ処世術)、この本もまた、大喜びで読み、何か役に立つ情報を得れば良いのだ。実におもしろいことは保証する。
それにしても、P.62におけるパラドクスの指摘は実に鋭い。解放された人は解放されていずにむしろ洗脳されているだけ。これ、自分にも向けているよな、だから深呼吸。
と、翔んだ世界からこんだ、技術の世界に目を向けるまでもなく、深呼吸して、技術評論社さんからというか正確には編集者2.0と言われている稲尾さんから、献本していただいた本へ突入。
受託開発の極意―変化はあなたから始まる。現場から学ぶ実践手法 (WEB+DB PRESS plusシリーズ)(岡島 幸男)
先日の許されざるバグを修正したと思われる(何を直したのかリリースノートを読んでもさっぱりわからない)バージョンが出たので更新。
しかし、こんだ取り込みを開始しようとすると10回に1回くらいいきなりCDがアンマウントされるという謎現象でうんざりする。そこではたと気づいたがPPC版のOS Xってアップルはまじめにメンテする気はないのだな。つい下取りに出さずにLeopard入れてしまったが(クラシックCDのジュークボックスにしたいので、タイムマシンが使いたかったのだ)、えらく失敗したかもしれない。
とりあえずディスクユーティリティを起動したままにしておいて、アンマウントされたらマウントし直すとかしながら、相当取り込んだ。AACの256Kにしてみたが、音が欠落するのは許せないが、やせるのは許容できるので、そんなものだろう。
しかし、ときどき、まったく役に立たないトラック情報を書いているのにあたるので、相当、CDDBに貢献してしまったというか貢献している最中というか。
たとえば、バルビローリのマーラーの9なんかひどいものだった(これは、貢献してないや。あとで気づいて直したので、CDが手元からゴミ箱へ行ってしまっていたし、さすがに拾い直す気にはなれない。というか、これで気づいたというか)。
クラシックの場合、重要なのは1に解釈者、2に演奏者だ。演奏者がだめだとひどいことになるが、通常、CDになっているものはある程度の水準はクリアしている。したがって、より解釈者が重要になる。次に、その解釈者の成熟度とか旬とかだ。
したがって、何はなくとも、だれがいつ解釈したCDか、が重要だ。
ところが、CDDBに入っていたのは、アルバム名:マーラー交響曲9番、演奏者:ベルリンフィルハーモニー、作曲者:マーラー、だけ。(日本語だった)
これ登録したやつはバカだろう。マーラーの第9かどうかは、聞きゃわかるんだから、そんな情報は不要だ(というのはうそだな。マーラーの9番を聴きたいな、と検索することもあるから)。
ところで、上のほうに、CDになっているものはある程度の水準はクリアしているとか書いたが、そうではない例を思い出してしまった。
手元にあるNHK響の60年代のイタリア歌劇のアンドレアシェニエのLPがそうだ。道化師あたりではそれほどあらは目立たないのだが、アンドレアシェニエほどの大作となるとひどいものだ。チェロは獣の医者になる前のゴーシュもかくやと思うほどだし、バイオリンも汚い。管ときたら。でも、歌はテバルディとデルモナコなんだよな。本当に音楽というのは不思議なものだ。
先日アイーダに行ったとき、一緒に行った人が、60年代にベルリンが来日したときの話をしてくれた。レコードと同じかそれ以上に揃っていて音が美しくてびっくりした、と。その時、そのアンドレアシェニエを思い出して、なるほど、そうだろうなと納得したのであった。
今や、日本のオーケストラは実に見事なものだ。分母がでかいということはこういうことなのかな、とか。
検索でトップに来るページが間違ったプロトコル(ネットワークプロトコルではなくCDからdiscidを求めるプロトコル)を書いているように思うので、メモ。しかし、本当に間違っているかどうかよくわからない点もあるので、リンクはしないし、特にアクションも取らない。
たとえば、次のような奇妙な現象に出会うことがある。バルビローリのマーラーの5番を取り込もうとすると、CDDBからはテンシュテットの5番だと言ってくる。いや、それ違うから、とトラック情報を送信しながら、最初に登録したやつはバカだろうとか思うとする。
でも、バカはテンシュテットと登録した人間ではなく、バカだと思っているこっちのほうの可能性がある。おそらく、バカだと思った側がバカだ。
(僕が持っている、もうすぐ廃棄する、のはリュッケルトの詩による5つの歌曲が入っている2枚組だが、すでにカタログにはないようだ。それにつけてもバルビローリは数少ない神の1人)
(テンシュテットって評価は高かったが、どこがいいんだ? 冷静なところかな?)
CDDBの流儀によって複数の方式があるようだが(おそらくここの正確性がCDDB設計者の腕なのではないかと思う)、一番入手が簡単なdiscidの求め方はfreedbのプロトコルだ。
僕はなんとなくISBNのようなものがCDに刻まれていて、それで一意性を求めているのだと想像していたが、それは違った。
freedbプロトコルでは、すべてのトラックの開始時間のハッシュ(ハッシュになっていなくて、サムというべきだが)と、CDの総演奏時間、それにトラック数からCDの一意IDを求める。
したがって、クラシックで似た演奏であれば、discidが一致する可能性はゼロではない。また、Windows固有の事情(総演奏時間を持つ疑似トラックをMCI経由では読めない)によってバグが入る可能性もある(おそらく、バグは入りっぱなしなのではないだろうか? freedbでいろいろ調べると微妙にidが異なる登録が複数されていることがある。CDドライブやファームウェアによっても異なる値が返ることもあるのではなかろうか)。
おそらく、iTunesが利用しているCDDB(Gracenote)は、freedbとは異なるプロトコルを採用しているように思うし、freedb2はfreedbプロトコルで求めたのとはまったく異なるdiscidが表示される(freedb2ってプロトコルが示されていないように見えるのだがどうなってるんだ?)。
ピーターサーキンのゴルトベルクが、CDDBに登録されていなくてうんざりした。
こいつの初版を持っている。1986年録音で、おそらく発売されてすぐ買った。PROARTEというレコード会社で発売はビクター音産だ。DDDだってことを除けばただのCDだが2枚組だぜ。順番はゴルトベルクのアリアから16までが1枚目、17以降とイタリア協奏曲が2枚目だ。
今では1枚か。順番も変わっているが、たぶん、正解だ。というのはイタリア協奏曲が見事だからだ。楽しいよ。
とはいえゴルトベルクも悪くないどころか良いできだ。元ヒッピーが髪の毛を切ってメガネをかけた良い男ぶりのジャケット写真とあわせて、理知的でありながら軽い。グールドみたいにどうとでも深読みができる重さはなく、軽い軽い。でも、それが良い。つまり1986年的な名演奏だ。
というのは、良いのだが、ゴルトベルクってことは、トラック数がそれだけで30あるということだ。
で、iTunesのユーザーインターフェイスが最悪だ。前の曲をコピペしてきてくれれば、変奏曲の番号だけ変えれば済むのに、全然そういう気の利いたことをしてくれない。
そこで、おもむろにiTunesの設定ファイルを探して……とかやろうかと思ったが、それをやるには、iTunesを終わらせたほうが良さそうだとか(オンメモリで退出時書き込みとかするかも知れないじゃん)、後先を考えるとなんか面倒になった。で、延々と使いにくいダイアログに打ち込みしていて(実際には、以前の内容を、覚えているので最初の1文字入れればコピペされるけど)、思ったことは、この使いにくさはわざとかも知れないな、ということだ。っていうのは、もし入力が簡単だったら、些細な表記ゆれだのなんだのにめくじらたてて修正(更新)通知をCDDBに送りこむ編集合戦とかが簡単に巻き起こりそうな気がしたからだ。
それだけ。
追記:2枚目は登録されているぞ。いったいなんだったんだ?
コルンゴルド&ローザ:ヴァイオリン協奏曲&ワックスマン:カルメン幻想曲(ハイフェッツ(ヤッシャ))
久々に聴いたが素晴らしい。
20世紀中頃に生き残ってしまった後期ロマン派作曲家にして、ハリウッド最初の本物の映画音楽家(今だとジョンウィリアムスとかを想像すれば良いかな)、アメリカに魂を売った亡命ヨーロッパ人、堕落した芸術家、とか毀誉褒貶の末、あまり幸せではない最期を送ることになったコルンゴルト(映画作家だとフリッツラングがちょっと近いかな。最後の作品(だと思った)のインドを舞台にした映画とか、尊敬は十分にされているもののどうにも奇妙なゴダールの軽蔑とか)の、甘美という形容詞を正しく反映したメロディーを、ハイフェッツがアメリカで生活する同時代人として丁寧にルバートしてレガートして震わせて啼かせて見事なものだ。なんと言っても第一楽章が好きで、最後のびっくりしかできない超絶的な第3楽章になるとちょっとどうでもよくなるが(チャイコフスキーのピアノ協奏曲もそうだが、いくら決まり事といってもプレストを最後に持ってくるのはなぁ、とチャイコフスキーも考えて悲愴になるわけだろうけど)。とは言っても、そこは映画音楽作家にして最後の後期ロマン派だけあって、最後の直前の部分でテンポが変わって甘い感じになるのがうまい(たぶん、狂乱の戦いに出撃する直前の甘い一時ってやつだろう。で、朝になるとウィリアムホールディンがアーネストボーグナインに向って、「いくぜ」とか言うのだろう)。で、うわーとガトリングガンが火を吹いて、切って落としておしまい。
あと、地味ではあるがロージャの作品が入っているのもポイントが高い。ロージャは、ハンガリー出身の映画音楽作家だが、独特の節回しのせいか、それとも僕の大好きなムーンフリートの映像の記憶のせいか(ロージャの音楽に関しては、大海原のイメージがどうしてもついてまわるのだが(リズムが寄せては返すからかも)、それは音響から喚起されるのではなく、ムーンフリートの映像から来ているように思う。そういえば、ムーンフリートもフリッツラングの作品だ)、勝手に雄大な音楽のように聴いてしまう。バイオリンとオーケストラのかけあいが、ちょうどフォックスがたったひとりで、英国政府軍の中に斬りこんでいくところみたいだし。
ムーンフリート [Laser Disc](スチュアート・グレンジャー)
(完全に幻の作品と化しているようだ。かっては六本木の映画館にかかったのにな)
唐突に思い出したけど、PC9801用にAmigaポートからNetHackを移植したことを思い出した。TurboCを使ったのだな。で、オプティマイズ全部かけたら、最後の最後で墓石が崩れて、おお、重複文字列のコンパイン(というような名前)とは、こういうことですか、と納得したり。
(NetHackの墓石といえばvoidさんがmixiでitojunさんのために建てていたが、あれはなんか心が和んだよ)
いくつか、どうしても手元に残しておきたいCDがある。
バルトークのいくつかとかブーレーズのいくつかとかクセナキスのいくつかとか高橋悠治の全部とかは別にしてもだ。(あと、利口な女狐とか西部の娘とか指輪みたく、シナリオがついているのも別だけど。ボエムあたりになると音だけ残ってればいいや、とかもあるけど)
たとえば、ベロフのドビュッシー。
柴田南雄がすばらしい解説を書いている。コルトーのヴワル(voiles)の「帆」という解釈に対して、他の文献、実際のスコアから異を唱えて新たに「ヴェール」と読み直し、さらに他の紋切型な追随者をばっさり切り捨てて、しかし伝統に敬意を払いながら、しかもベロフのような(当時の)若手を力強く擁護する。
爺さんになっても、いつもその時点で最も正確に、時代的に正しいものは何かを見つけてきた作曲家ならではの解説だ。
しかしベロフのスタイルをコルトーやギーゼキングの基準ではかることは無意味なのだ。未来を背負う世代の新しい感覚と演奏スタイルの中に独自の良さを感じとり、また彼らの演奏によって、同じ作品に新しい面を発見することにわれわれの楽しみがあるのだし、本来演奏という行為はそのようにして人々と触れ合って来たのだと思う。
この人にとって、LPのライナーノート書きは単なる稼ぎ仕事ではなかったのだな、と思う。特に、このベロフのドビュッシーでの書き方はただごとではない。(ブレーズのライナーあたりだと、もっと軽くくだけた調子になるのは、読み手=買い手が、自分の側だという気安さもあるのかも知れないが)
と、ごく稀に、えらく力の入った解説があったりするからだ。
追記:ふと気になって、グーグルしてみたが、Wikipediaあたりにはさすがに両論併記かつヴェール主導にしているが、あとは帆が主流っぽいな。あと柴田が挙げていた沈める寺についても伝説が支配したままのようだ(というか、これについては楽譜を読まないと判断できないのだが)。というか、アマゾンの記載を見ると、ベロフのでさえ「帆」になっている。おれの手元のCDはヴェールになっているのに。
たぶん、例のあれは別の関数を使って初期化してるんだよ。
あれだと何が起きているかわかりにくいから、ちゃんとハローワールドにしておいた。
#includeこのプログラムを、まずはVC2008++でコンパイル実行してみよう。void foo() { int b = 0; char* a = "hello world !"; } void bar() { int b = 0; char* n; printf("%s\n", n); } int main(int argc, char* argv[]) { foo(); bar(); return 0; }
c:\test>cl hello.c Microsoft(R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86 Copyright (C) Microsoft Corporation. All rights reserved. hello.c c:\test\hello.c(11) : warning C4700: 初期化されていないローカル変数 'n' が使用されます Microsoft (R) Incremental Linker Version 9.00.21022.08 Copyright (C) Microsoft Corporation. All rights reserved. /out:hello.exe hello.obj c:\test>hello hello world ! c:\test>
何か些細な警告が出ているが、気にする必要はない。常に正しくハローワールドする。嘘だと思ったら試してみれば良い。ソースはあるんだから。
ここでマシンを変える。
Linuxワールドに来たぜ。
arton@monde:~/tmp$ gcc hello.c -o hello arton@monde:~/tmp$ ./hello hello wolrd !
もちろん問題なし。警告もなしだ。嘘だと思ったらためしてみよう。ソースはあるのだ。
でも、最適化はやめてくれ。あれはバグバグだ。
arton@monde:~/tmp$ gcc -O hello.c -o hello arton@monde:~/tmp$ ./hello Segmentation fault (core dumped)
案の定、ーOを付けたらコアになった。だから、プロダクトモードでは最適化は切るものなんだぜ。
てなことを4月1日に書けば良いのだな(もっとも、4/1用なのは最後の結論だけだけど)。
これは、興味深い指摘だ。
単純さ、理解のしやすさという点でも、テーブルの結合操作というのは、結構嫌われるのですよ。データベースの 正規化 vs 非正規化 というのは、オブジェクト指向でいう、小クラス主義 vs 大クラス主義 に通じるものがあるんじゃないですかね。
違うといえば、RDBの場合結合操作が想定済みなのに対して……(オブジェクトは実装継承以外の結合は想定外と書こうと思ったが、ポインタだのリファレンスがあるわけだから想定外ってこともないな、と思いとどまる)……確かに通じるものがあるなぁ。
大クラス主義とか、非正規DBでも、そのほうが良いと考えてユースケースや後先まで想定した結果そうしたのと、分割するという発想がないため結果的にそうなるのでは、生成物は同じでもずいぶん異なる。
これは異なるのか、それとも同じなのか? へたな考え休むに似たりなのか。
おそらく異なる。
少なくとも、生成した人間が次の一手を付け加えるとき、あるいはなんらかの理由で修正をかけるときには、ずいぶんと異なるのではなかろうか。
では、他人がメンテするとしたらどうか?
おそらく等しい(本当に生成物が同じなら)。
でも、経験的には、外部インターフェイスが同じであっても内部インターフェイスは、少なくともプログラムの場合は異なる。
データベース(端的にはテーブルのスキーマ)はどうだろうか? 同じだよなぁ。
そこが異なる。
やっと全CDを吸いこんで、いろいろ聴いていたが、マーラーの9番が気付かないうちに、バーンスタインのベルリン、アバードのベルリンとウィーン、バルビローリのベルリンと、ベルリン3種、ウィーン1種となっていることに気づく。
ウィーンのバランスが悪いなぁというか、何か欠けているものがある。と考えるまでもなく、宝物にしているエンジェルGR版の、つまりワルターが亡命直前にウィーンを振ったやつがない。
あのポルタメントが使われていた時代のマーラーが聴きたいものだ。
と、アマゾンを探すと、何やらいっぱいある。
なんんでいっぱいあるのかと思ったら、版権が切れているってことと、CD化するにあたって、リマスターできる、つまり腕のふるいがいがあるからってことか、とわかった。
でも、まあ、9番は普通にEMIのを買う。エンジェルGRと同じような音だろうと思うからだ。
そこで、はたと気づく。最初の大地の歌が聴きたかったのに売られていなくて、結局聴けなかったのだ。だったら、そのての新しいやつを買ってみるか。
で、探すと、やはりある。
マーラー: 交響曲「大地の歌」 ほか(ケルスティン・トルボルク)
DDDとかSPARSコードが書いてあるが、DDDって言っても最初のDがちょっと違うだろうとか思うけど、まあいいや。
ある意味、骨董商にそっくりな(でも複製できるところが違う)おもしろい商売だが、これも(価格付けが1ランク上にしてあるし)、今、金持ってるじじい相手商売ってことなんだろうな。
カタログを見ると、マジーテイトがいないのがさびしい(なぜか、これもGRのお気に入りなのだ)が、メンゲルベルクがあるな。
翔泳社さんに献本していただきました。
Ruby Way 第2版 (Professional Ruby Series)(Hal Fulton)
ハルフルトンのRuby Wayの第2版です。網羅的で、確かに決定版のひとつかな。
イディオムあたりを含めて、最初にRubyってこんな言語というのを説明したあとに、怒涛のように、文字列、正規表現、国際化、数値計算、……IO、動的機能、スレッド、……テスト、デバッグ、パッケージ化(RubyGemとかRDocとかRubyForgeとか)、ネットワーク、Webあたり、dRubyととにかくいろいろまとまっているので、便利かな。印象としては、プログラミングWindowsという感じ。Advanced Windowsではなくて。つまり、リクターではなくペトゾルド。つまり、手元に一冊、職場に一冊、どちらかというと仕事プログラミング用、という感じかな。デイブトーマスのより、1冊にまとまっているのが良い点かも。
あと、国際化のあたりを読むと、原書を更新して1.9についても触れています。その代わりGUIのあたりを少し落としたようです(原書はみていないので、どのあたりを落としたのかはわからないけど)。確かに、謝辞にはGetTextだけではなく、GTKについてもむとうさんが協力してくれたとか書いてあるけど、GTKは落ちているようです(索引と目次のレベルでは)。
なんで、これの初版は売れなかったんだろう(Ruby Wayが売れなかったということは伝説的に語られているので、たぶん、売れなかったらしい)と、疑問に感じるのは、きっと表紙の暗さのせいかも。それが理由だったら、この第2版はいけるんじゃないかな、僕は良い感じだと思う。
ちなみに、こっちは初版の翻訳。
The Ruby Way―Ruby道への招待(ハル フルトン)
第2版が出た以上、Ruby 1.6(だと思う)を使うというような理由がない限り、歴史的な本かな。
先日の別の関数でポインタを初期化するというネタですが、素直に考えれば、
void foo() { int b = 0; ////////////// 何これ? char* a = "hello world !"; } void bar() { int b = 0; ////////////// 何これ? char* n; printf("%s\n", n); }
と疑問に感じるはず。でも、理由はわからないんだよね。
とはいえ、疑問を表明している人もいたので、わかることは書いておく。
理由には2つあって、あのプログラムで余分な自動変数が必要な理由と、なぜコンパイラ(VC++。gccは素直なコードを吐くのでint b = 0;
は不要)がそうするのかという理由、のうち後者のほうが、わからない。
前者の理由は、次のアセンブリ出力を見るとわかる。
; File c:\test\hello.c ; Line 3 push ebp mov ebp, esp push ecx ← 4バイト確保するため(ecxの保存のためではない) ; Line 5 mov DWORD PTR _a$[ebp], OFFSET $SG2456
これは、int b = 0;
の行を削除した場合のfooのコード。aのための領域の確保になぜかecxのpushを使っている。この後popはしないので(当然のようにmov esp, ebpする)これは、単にspを4バイト進めたい(戻したい)だけとしか思えない。確かにこの方法でもスタックに4バイトが確保できるけど。
この方法で自動変数を確保されると、barを呼んだ時に、nがその時点のecxの値で初期化されてしまって、せっかくfooで設定した値が消えてしまう。
一方、int b = 0;
を入れると、次の出力を得る。
; File c:\test\hello.c ; Line 3 push ebp mov ebp, esp sub esp, 8 ← 8バイト分を確保 ; Line 4 mov DWORD PTR _b$[ebp], 0 ; Line 5 mov DWORD PTR _a$[ebp], OFFSET $SG2457
と、単にespを進める(戻す)だけなので、fooで設定した値がbarで利用可能。
この動作はなぞで、手元のi386のリファレンスを見たけど、レジスタpushは7サイクル、直値のレジスタaddは2サイクルなので、速度の問題とは思えない。とはいえ、i386は古すぎるので、インテルのサイトでi686のデータシートを調べたけど、インストラクションセットにサイクル数とか出てなくてわからなかった。でも、スタックへ積むというのはメモリアクセスが必要なので(即値はコードキャッシュへフェッチ済みなのでどう考えてもスタックpushより遅いとは思えない)仮に686あたりで変わるとも思えない。
というわけで、余分な自動変数を付けたのでした。
追記:速度しか考えていなかったけど、push ecx
は0x51、それに対してsub esp, 4
は0xec 0x04で、サイズが小さいというメリットがあって、それを優先したのかも。8バイトの確保になると、サイズが同じになって速度的なデメリットだけになるので、pushをやめるということかも。
受託開発の極意を読了。
受託開発の極意―変化はあなたから始まる。現場から学ぶ実践手法 (WEB+DB PRESS plusシリーズ)(岡島 幸男)
この本について何か書くのって、難しい。
というのは、不思議なところがあるからだ。
最初の部分は、ふむふむ、なるほど、そうでしたか、ああおれはまちがっていたようだ、とかいろいろ気づきもあれば、自省するところもあって、深彫りは読者に投げているけど、それは極意と書いてあるからそんなもんだろう(剣術の極意の指南とかみたいだ。手取り足取りは極意の指南じゃないね)。書かれている内容には具体性はないのだけど(事例+指南というパターンで書かれた本ではないからだ)、こちらの経験を事例として対比できるようにうまく書いてあるから、短くても十分な内容になっているのだろう。つまり、筆者の知見をうまく昇華して、表題通りの極意本になっていると感じた。
思うに、何かしら読者の知見と一致点があると、そこが接点になるから、未知なことについて素直に納得できたり、実証してみようというような気になる。で、この本はそういうパターンにはまっている。
で、ふむふむリーダーとか単純に読んでおもしろいパートを過ぎたあたりから、ちょっと風向きが変わってきて、最後、うさんくさいとまでは言わないが、なんというか違う本になってきたようだな、と感じているうちに、おしまい、という感じ。わりと薄い本なので、そう感じたのかも知れないけど。
本を書くときは、想定読者を作って書くと思う(人によるだろうけど、実用書はそうやって書くものではないかと思うし、僕はそうしている)。
この本からは、前半と後半で想定読者が異なるのではないか、という印象を受けた。
前半は筆者自身を想定読者にして、振り返り、思考実験による再試行をし、そこから得られた知見を次の実務にふりあてて、といった作業の末、見つけた極意を、何よりも自分のために整理したという印象を受ける。ようするに、無茶苦茶に地に足がつき、そこから延びた太い幹が脳みそにつながっているという感じだ。
それに対して後半は、微妙に自分の信ずるところと違うことも意識的に含めて、後輩とか部下に対して、説明しているような印象を受ける。もちろん、それはありなわけだが、何か違う本を読んでいるような気分になった。読者の僕が、おそらく後半の想定読者から外れているから、そういう印象を受けるのかも知れないが、前半を読んでいるときに感じた説得力にくらべると、ちょっと不思議な感じはする。
でも、たぶん、それが良いのだと思う。前半の視点と後半の視点が同居できれば、間違いなく強いだろう。というわけで、経験3年以上で(あまり実務経験がないと感触がつかみにくいかも)、(ある意味悪い言い方ではあるが)懲りずにIT業界でやっていこうと考えているなら、読んで考えて試してみる価値がある。そういう本だった。
わけわからんが、
BOMと\0を全部削除(なぜかUTF-16になっていた)
0222(なぜ)を全部削除
そうしたら、なんか文字っぽくなってきた。
そこでもう一度Meadowで読み込み。
そしたら、euc-jpとして読み込み成功。
というか、現在のおれの環境でのMeadowの設定ってどうなってるんだ?
EMONEが便利だったので、Bluetoothってのも良いものだな、と思っているところに、Bluetoothのヘッドフォンとオーディオトランスミッタ、ドングル、マウスがどかーんとやって来た。というか、今年もMVPになれました。皆様のおかげです。
で、しばらく眺めているうちに、やはり使ってみたくなるのもので、ちょうどクラシックジュークボックスと化したPowerBookがBluetoothレディなのを思い出して、こいつで使ってみるかと(MSからの贈り物をアップルに適用というのもなんですが)。
……なんて絶妙なことか。
とりあえず、マウス(これまた微妙に絶妙で、充電はPCMCIAスロットからで、形状もPCMCIAカードになっているのだが、おれが持っているPCMCIAスロットの付いたマシンって、PowerBookしか無いのだが)を使ってみると、使いにくそうな形状なわりに、そこそこ使える。これは割と好きかも。でも充電可能なマシンがPowerBookしかないところが難点なのだ(ギミックとしては、うまくできてるんだよな。持ち運び時はPCMCIAスロットにさしておけば良いわけだし)。
で、それを使いながら、オーディオトランスミッタ(これはヘッドホンジャックにさすと、そこからBluetoothでヘッドホンと交信できるのだが、PowerBookにはBluetoothが内蔵されているから使う必要なし)は無視して、ヘッドフォンとペアリングして使い始めたわけだが。
充電はUSBからでこれも妙な話な気がするのだが、まあそれはそれとして、音がぶちぶち切れるし、ノイズがすごい。マウスを使うと特に完全に途切れる。
ウィンドウをマウスでドラッグしてぐりぐりするとネットワークが途切れた1990年代を思い出したよ。
というわけで、マウスと共存できないってことはわかった。で、マウスは畳んでPCMCIAスロットに突っ込んで、しばらく使うと、やはり時々ノイズは乗るし、ぶちぶち切れる。
が、音はそれほど悪くないし(ちょっともごもごしてるかな)、何より、コードがないということが、こんなに素晴らしいとはこれまで考えもしなかった。なんて便利なんだ。しかも、このヘッドホン、はじめての首のところでつながっているタイプなのだが、これが具合が良いのなんのって。頭の上に乗ってないってのも実に良いものだ。
しかし、ブチブチ切れるし、時々盛大にノイズが乗る(クラシックなので特にpppとかになると目立つ訳だ)。しかし、コードが無いというのはなんと素晴らしいことか……実に糸色女少なり。
というわけで、Bluetoothヘッドホンの良さはすごく理解し、実感した。
それにしても、このノイズやぶつ切れは嫌なものだ。これって、しょせんおまけグッズ(安物ぽいじゃん)だからかな? なら、それなりの価格のやつを買ったらどうだろう? とか考えて、まずは検索、としてみたら。
スタパ齋藤の「拙者が体験したBluetoothヘッドホンいろいろ」なんてのが最初にひっかかって、読んでみると
……他のBluetoothヘッドホンはどうなんだろう? ノイズ皆無だったりするのだろうか? 皆無だったりして。そうかも!! と実験精神旺盛モードとなり、次から次へと買い増して、結局買ったBluetoothヘッドホンは合計6機種。
おお、先達が歩んだ道のりを危うく歩むところだったようだ。
というわけで、LPの頃の針音のようなつもりで、無視することにしよう。
しかし、コードがないってのは快適だな。
追記:電子レンジと同じ(2.4GHz帯)なので……もろ802.11gともぶつかってる気がするんだが。
AirMacExpress-ヘッドホンつけたおれさま-PowerBookっていう位置関係なのだが、この直線関係をずらすとましになるものかな?
追記:うわ、今初めて知ったが、このヘッドホン、説明書にはまったく書かれていないけど、右耳の進む/戻るで、iTunesが操作できるぞ。むちゃくちゃ便利じゃないか。しかし、ノイズが乗るし、ぶちぶち切れる。
Windows PowerShell ポケットリファレンス (POCKET REFERENCE)(牟田口 大介)
届いたってことは発行されているのに、なぜ書影がないんだ? (全然本質とは関係ないところ)
関係ないところつながりで、本文イラストはなんじゃらほい、とかも思うわけだが。
で、さっそくためそうとか思ったら、Vistaでも入ってないことを思い出して、入れてみたり。
Windows Vista 用の Windows PowerShell 1.0 インストール パッケージ
しかし、リファレンスにまとまっているのを眺めると、本当に変態文字列プログラミング言語だよなぁ。
……これのMono版が欲しいな。
サンプルプログラムを作って動かして、それを原稿に張り付けると、次のようになる。
というわけで次のリストとなる。
aaaa
bbbb
ccc
このままだと、その後が続かないので、リストの行頭に説明用の行番号を入れる。
というわけで次のリストとなる。
1: aaaa
2: bbbb
3: ccc
で、5〜6行なら良いのだが、長ければもちろん面倒だ。
以前は、プログラムに対して単純なRubyのプログラムをかけて標準出力に行番号付きで出力してそれをコピペしていたのだが、プログラムで試行錯誤するとコメントアウトしたりテンポラリにデバッグ用のコード入ったりするから、割と面倒だ。
良く考えたら、単にプログラムからコピペして余分な行を削除してから、elispで行番号を入れてやれば良いことに気づいた。
が、書き方忘れた。
しょうがないので辞典をひきながら以下のように作った。でも、期待通りに動くのは良いが、funcallを2回書いているのが気に食わない。
どう書くのがいいんだろう?(追記:yamさんの答で、interactiveの'r'(markとposが関数に与えられる)とかcount-linesとかを教えてもらえた。多謝)
(defun insert-line-number () (interactive) (let ((fun (lambda (num end) (when (> end (point)) (beginning-of-line) (insert (format "%2d" num) ": ") (forward-line) (funcall fun (+ num 1) (+ end 4))))) (end (region-end))) (goto-char (region-beginning)) (funcall fun 1 end)))
参考にしたのは
Emacs 辞典 (DESKTOP REFERENCE)(佐藤 竜一)アマゾンでも書かれているけど、索引の弱さがつらいな。でも、ある程度行ったり来たりしているうちに出ている場所のあたりのつけかたを覚えたから、致命的というほどのこともなかった。
なんとなくABCとか聴いていたら、実にBluetoothヘッドホンの具合が良いことに気づいた。曲間の無音のあたりではサーと聞こえるし、やはり時々切れるが、音楽の密度は大して影響を受けない。そんなものか。
(検索性ゼロの名前といい、ABCこそ80年代だよな)
追記:というわけで、Airで使っていて(こっちはクラシックは入っていない)いい感じだったのだが、ついiTunesストアでアルバム買って、ダウンロードを開始したとたんにぶつギレの嵐。ばかな話だ。有線LAN環境で威力を発揮するのかも、ってそれではおいしさ半減だよなぁ。
Claudio Abbado: Mahler 10 Symphonies(Vienna Philharmonic Orchestra)
すっかり巨匠になってしまったアバードだが、それより前、まだベルリンを任される前のアバードが好きだ。
最初に聴いたのは、中学生の頃、ザルツブルク音楽祭でマーラーの4番を振ったライブだった。NHK-FMだ。
その頃のマーラーはクーベリック、ワルター、バーンスタイン(巨人と大いなる歓びは比較的いろんな人が取り上げているので、その中では固い実に固い透明なクレンペラーが好きだった)の時代で、もちろん彼らは良い指揮者なのだが、どちらかというと神経質なくせに大がかりという感じで(戦前のワルターはロマンティックなのでまた異なる)、それほど好きではなかった(特に1から4は。神経質で大がかりというバイアスで聴くから6や7は当然悪くないし、9は大好きだ)。
ところが、ザルツブルクのアバードは全然違っていた。巨大な樹木にからまった枝や葉の間に色とりどりの花が咲き、きらめく甲虫が飛び交い、滲み出た樹液に蝶や蛾が集まってくる。世界は複雑で多様性に満ち、そこかしこに歌と色が溢れ出す、そんな音楽だった。クレンペラーにはできない芸当だ。まさに大いなる歓びの歌だ。
というのを思い出した。
Symphonies 2 & 4(Chicago Symphony Orchestra)
iTunes Storeにあったので購入。
団さんの『はじめてのRubyプログラミング』を頂いた。CDにASR(パッケージのほう)を収録しているからだ(sudo機能の実装が間に合わなくてすみません)。実は、編集の方と多分経由して団さんにもお願いして、こっそり1.9.0-1も入れてもらってある(はずだけど、今はAir使ってるからCDの確認はできない)。
TECHNICAL MASTERはじめてのRubyプログラミング(山本 団)
実際に読む前は、るびまに連載されていた『Ruby ではじめるプログラミング』の加筆修正版かと思っていたけど、もっと丁寧に、初心者向け(と書きながら、どうもこの「初心者」という概念がわからないおれがいるのだが)になっていた。
つまり、『はじめてのRubyプログラミング』という題だけど、『はじめてのプログラミング(Ruby編)』だな。人によるとは思うけど。
で、数値演算とか変数とかを順に説明していって、ERB経由(これがこの本の一番の特徴だと思う)でHTML生成プログラム(ブログシステムと銘打っているけど、この時点ではサーバーがあるわけではない)になって、最後にはRails(2.0)とSQLite3を使ってブログシステムの完成。こう来るわけか。Railsが出てくるとは思わなかったが、それもありだろうな。
というわけで、以前のゲーム本のときとは違って、テキスト処理がメインなので、より正攻法な印象を受けた。というか、題から、ゲーム本は『はじめてのゲームプログラミング(Ruby編)』だから、ゴールが違うね。
Rubyではじめるゲームプログラミング―人気の国産言語で、誰でも簡単にゲームが作れる! (I・O BOOKS)(山本 団)
気づいたタイポ:
P.300「ブログシステムを作成し見ましょう」→「作成してみましょう」
10日でおぼえる Ruby on Rails入門教室(arton)
こちらもよろしく。プログラミングの初心者は対象ではないから、『はじめてのRubyプログラミング』と併せて買えばばっちりです。
ジョエルがいいこと言った。
息抜きに何をしていますかと言われると、何もないというのが答えになります。なぜかと言いますと、私は仕事に就く際に「とにかく好きなものを仕事にしよう」とはじめから決めていました。好きなことというのは、ソフトウェアについて学んで、ソフトウェアについて読んで、ソフトウェアについて書くということ。
なんとなくイヤミなものも感じるところもあるし、シニカルでもあるのだが、それでもジョエルの本がおもしろいのは、結局、この男はソフトウェアが好きだからなんだな、と。
Joel on Software(Joel Spolsky)
と、ジョエルで始まる開発の現場。
これでおしまい。るいもさんと私の連載もこれが最終回です。
それはそれとして、Rubyを取り上げた記事の中にある
メソッドかどうかが問題ではなく、メソッドのように反応してくれれば、それはメソッドとして扱っても問題ない
って、誤訳というかなんというか。(もっとも、この記事の趣旨とか、内容とかは悪いものではない)
メソッドかどうかは大問題だよ。ダックの歌をあてはめようというのが無理なのだが、こんな感じにすればよいのかも。
クラスが何かなんてどうでも良い。そんなのどうでも良い。
送ったメッセージにこたえてくれれば、君が誰かなんてどうでも良い。
どこから来たのかも、気にしない。
どこで生まれたのかも、気にしない。
ただただ、応えてくれれば、それで良い。
ま、そんなもんだろう。
MIDIはどう扱えば良いかわかるんだけど、WAVファイルをいじくろうと思った場合、ファイルフォーマットとか、それがどういうふうに音として扱われるのか、といった情報へのポインタは、どのあたりを見れば良いのでしょうか? (以前、MSDNで調べたときは、まったく見当もつかなくて閉口したんですが)
#WAVファイルを再生するAPI(というかActiveXコントロール)は知っているけど、そうではなくて、自分でWAVを生成したりする方法、と言えば良いのかな?
もちろん全然悪くないよ。読まずに何か言ってるのか、あるいは理解できなかったか、視野が狭いか、そのあたりかそのすべてじゃないかな。もっとも読む時期を間違えたという可能性もあるかも知れないけど。
つまり、今、読む必要があるかというと、確かにそれは別問題だ。ただ、時期外れなものは別に悪いものではない。
今、中江兆民を読んでもしょうがないかも知れないけど、古典は良いものだ。暇があるなら。古典だろうが、民本主義という今は使われない言葉を使っていようが、それでも民主主義は民主主義だ。それが理解できないのならば、視野が狭いわけだし、理解できてあえて旗を振っているなら、何か邪な魂胆があるのだろう。なんの話かわからないけど。
でも、まあ、今、C++ならこれかも。
制約という考え方はおもしろい。
でも、何を使って何をやりたいか、やった後はどうしたいか、で決めるべきことなんだろうな。
というか、おそらくもうそのあたりの論議は終わっているような気がするのだ。問題領域について考える時代に入ったのではないかな。つまり、多くの問題については、下のほうは、もう固まってしまったということだ。誰かがルールを変えない限りは。
いい加減にまとめてしまうと、
90年代:OOP (プログラミング言語の時代)
2000年:デザインパターン (設計の時代)
2004年:アジャイル (開発方法論の時代)
2008年:REST (アーキテクチャの時代)
というトレンドでどうですか? (というようなヨタっぽいレベルの話だと思うな)
問題は、だからそういうことではないのだと思う。
呉下の呂阿蒙という言葉もあるが、以前のイメージで語るってのはだめだなぁ、とつくづく思うのがグレアな液晶。
特にMacBookの今のやつ(2008/2モデル)とか使ってみると、やたら見やすいのにびっくりする。どうも2007/11モデルよりもさらに見やすいように感じるのだが、さすがにそれは無いかな(思い込みのような気もするわけだが)。(いろいろあって、手元に両方あるのだ)
先日、本屋をうろついていたら、妙に平積みになっていて、なんとなく買ってしまって、読んでしまった。
夏の涯ての島 (プラチナ・ファンタジイ)(イアン R.マクラウド)
表題作は、あまりに長くて途中でうんざりしたし、帯で絶賛しているほどは感心もしなかったが、それを除けば、なんだかいやな気分になり、それはある種の作品の読後感としては付き物の感覚であり、なぜいやな気分になるのか考えることも、また読書の楽しみのうちなのかも知れないと思ったりする。
『帰還』――子供がタイムマシンのパラドックスの話を仕掛けてきて、それに対して、2つの考え方(文学としては実装方法)があって、1つはパラレルワールドを利用して別の世界に飛び込むことになり、もう1つはあくまでも世界は1つなので何か悲しいことになる、というような話をした次の日にこんな作品を読む不思議。
イギリスの作家か。
もしかしたら、OMDの銀河を歩く歌のプロモーションビデオはこれにインスパイアされたのかなぁとか。
ツボだよ。
(見直したら全然違う。映像としてはアストロノートだけが印象に残っていたのが、そう感じた理由のようだ)
『わが家のサッカーボール』
物置小屋かぁ。キノコを育てていたり、犬を拾って育ててるのかと親は思っているが実は自分自身を育てていたり、だいたい物置小屋には変なものがいるものだから、サッカーボールがあってもおかしくはないなぁとか思いながら、突然の父親の行動にうれしくなったりもする。その展開を鑑みると、この作家は巧妙で感心する。これは良い話だ。最初の作品が永遠に喪失を繰り返すなんとも乾いた孤独の世界なのに対して、なるほどなぁとすべての部品をうまく結び付けた作品としてのうまさ、もあるけれど、やはり転機となる箇所の突発性が実に共感できるのが大きい。
と、読み始めて、続けて読みたくなるので先へ進む。
『チョップガール』
そしてこういう話が来るのか。両極端の孤独の出会いの物語かぁ。大きな穴の上でのダンス。これもなんともいえない読後感ではあるが、
『ドレイクの方程式に新しい光を』
あ、これはだめだ。このパターンは最悪だ。感情の一番いやな部分が刺激されるタイプの物語だ。
素晴らしい作品で、これは最高に気に入ったが、2度と読まないだろう。
それにしても、不思議なものだ。なぜ、文字を拾っていくことで、感情が刺激されるのだろうか? 化学物質(向精神薬とか)が脳に作用するということは理解できるのだが、あるいは音や光の刺激が作用するのはそういうふうにできているのだからこれも理解できるのだが、なぜ文字が作用するのだろうか。
2種類の後悔しない生き方を選択した2人の人間が出会い、別れて、また出会い、そこになにがしかの感情が生まれて、消える。後悔しないということが、どれほど綱渡りのように頼りない生き方なのか、ということについての物語だ。
気を取り直して、『夏の涯ての島』を読み始めて、途中、何度も終わらせても良い場所があっても終わらずに進み、1984年を通り越してまだ終わらず、結局、終わらないまま旅に出て、こちらは後悔しっぱなしなだけに、泣きごとのうるささにうんざりしたが、それでも佳作なのだろうとは思う。
というような作家の作品集だった。
require 'foo' File.open('foo.log', 'w') do |f| $stdout = f x = Foo.new x.bar end $stdout = STDOUTということだろう。
$ruby foobar.rb >foobar.logの立場はどうなるよ?
3つの立場がある。
これが一致している場合なら話は簡単だ。
$stdoutを使うな。
上の3つの立場で実行頻度が高いのは最初の行為だ。であれば、シェルから使うことを意識すべきだ。したがって途中で内容が変わる可能性がある$stdout
を使う必要はない。シフトキーはどっちにしても押すわけだから字数が少ないSTDOUT
のほうが得というよりも、途中で変わることを考える必要がない。
そうではなく、それぞれ別々とした場合のことを考えてみる。つまり、ライブラリを使う人=トップレベルアプリケーションとライブラリを作る人。
ライブラリを作る場合は、環境は言いなりになるべきで、主張すべきではない。ということは、$stdout
を使う必要があるということだ。
ではトップレベルで動作することがわかっていれば、これはSTDOUT
を使うべきだ。と思っていたけど、なんかどっちでも良さそうな気がしてきたな、というか、どっちでも同じことだ。だって、トップレベルなんだもん。ってことは、字面と字数で決めよう。つまり、やっぱりSTDOUT
だな。
おしまい。
というよりも、$stdoutを変えても良いのはtest/unitとその仲間くらいだろうな、STDOUTを使う使わないより前に、$stdoutを変えては(基本的には)だめ、としたほうが良い。あと、STDOUTが壊れていることがわかっているトップレベルアプリケーション(たとえば、WScriptやHTAがトップレベルの場合)とか。
ふと思ったが、なぜボリスヴィアンは、フォルダヴリルなんて名前を持って来たのだろう?
#フォルダヴリルの印象が強いせいで、魚と呼ぶとはまったく知らずに、他と同じくフォルなんだろうと思ってた。
助田さんのところに出ている問題を再現させてみようと、メソッドを呼び出したらそのままえんえんと処理を続ける外部プロセスサーバを作ってみた。といっても、メソッドの呼び先でSleepすれば良いだろう。
で、VS2008でATLを使ってみたが、自動登録処理は実装されていないので、自分で実装したメモ。
WinMainで以下のように実装
extern "C" int WINAPI _tWinMain(HINSTANCE /*hInstance*/, HINSTANCE /*hPrevInstance*/, LPTSTR lpCmdLine, int nShowCmd) { std::basic_string<TCHAR> cmdline = std::basic_string<TCHAR>(lpCmdLine); for (size_t i = 0; i < cmdline.length(); i++) { cmdline[i] = _totlower(cmdline[i]); } if (cmdline.find(_T("/regserver")) != std::string::npos) { _AtlModule.RegisterServer(FALSE); _AtlModule.RegisterServer(TRUE); } else if (cmdline.find(_T("/unregserver")) != std::string::npos) { _AtlModule.UnregisterServer(FALSE); _AtlModule.UnregisterServer(TRUE); } else { return _AtlModule.WinMain(nShowCmd); } return 0; }
最初tcslwrを使おうと思ったが、c_str()で返した文字列の変更は禁止となっているので、TCHAR単位の処理(引数にシフトJISが来た場合のことは無視)。
以前はEXEの場合にはTYPELIBリソースは自動生成されなかったような記憶があるが、このバージョンでは組み込まれているので、単にCComModule(CAtlModuleなど含む)のRegisterServerメソッドの呼び出しだけで済む。
ただ、当然といえば当然だが、コマンドラインから何も用意せずに/regserverで実行すると、E_ACCESSDENIEDになる(上では面倒なので返値チェックはしていない)ので、インストーラを作って実行すべきことかも知れない(なので、自動生成されないのかなぁ)。つまりHKCRを更新するので管理者権限で実行する必要がある。
それはそれとして、まったく再現しないのだが、クライアント側にGUIが必要なのかな?
なんで再現しないかわかったような気がする。
Excelはおそらくファイル保存を別のスレッドで行うか、あるいはトップレベルのメッセージポンプがアイドルの時に行うのだろう。
ということは、SaveAsを呼んだ時点では保存動作は行われず、Win32OLE側へ戻してしまう。その状態で、Win32OLEが次のメソッドを呼ぶからエラーになるということ(なのだろう)。
であれば、上で考えていた、単にメソッド呼び出しが戻らないのではだめだろう。
ただ、呼び出し側がUIを持っていれば、呼び出し中のマウスクリックなどに対して、ビジーの反応をしたように覚えているんだよなぁ。だから、そのタイプなのだと思ったのだが、Win32OLEだとUIがないから、メッセージポンプでそのあたりのメッセージを拾うわけないし。
iTunesのアルバムアートワークの設定の仕方がわかったので(いろいろ試行錯誤したが、結局、アルバムの全曲を選択して、「情報を見る」を表示して、Safariから書影をアルバムアートワークの枠内にドラッグアンドドロップするのが一番簡単)、さっそく、ポップ側にも反映しようと思ったが、ほぼ全部、埋まっているし、埋まっていないのは存在しない。
と思ったら、大物が空のままだった。
内藤というカメラマンのこと、その動物写真のこと、なぜかEpicのアンケート調査に選ばれたこと、シーナとそのカバーのこととか、いろいろ個人的な曰くが多いが、こうやってオリジナルのアルバムアートワークが入手できて、カバーフローに表示されるのを眺めるのはハッピーなことだ。
ウガチボー。
(こんなジャケットだとうれしかない)
ジャックという名前はどこから出てきたんだろうか?
poppenさんの紹介記事があまりにおもしろそうなんで、買って、しばらく放っておいて、読み始めたら、これは確かにおもしろいのなんのって。
これ読みながら、なんというか、死体泥棒の必要性というのが、妙な因果関係になっているのが、興味深い。
貧困と不衛生
によって
死にまくり
によって
死体の安定供給
によって
医学の進歩
によって
結果的にいつの日にかループが途切れるというスパイラル。
というか、医学というのが科学と技術のマージナルな領域にあるっていうのがおもしろいとか。
死者に対する冒涜こそが、生者に対する福音となるとか。
とにもかくにも、ジョンハンターが、生きている人間を本気で救済しようとしていたことは疑いようもないし、それが本当に天職ってやつだったのだろうし、結局のところ、腕の確かさと読みの鋭さというのが一番の武器なのだな。
もしかしたら、(プログラミング言語における)変数がどういうものかちゃんと理解出来ていない人って、ディレクトリエントリとファイルの関係も理解してないのかな?
削除してもデータが読めることとか。
パッチを当てようと思って、patch.exe なんか実行しても良いか? とかダイアログが出る。 で、OKとかすると、隔離されたコマンドコンソールが起動されてそこで動いて、しかもIOができない(みたい)。 つまり、パッチが当てられない。 Explorerで見ると、盾のアイコンになっている。プロパティをどういじくっても、解消できない。 ふと気付いて、ファイル名をp.exeとか変えたら、無事起動も実行もできた。 ……バカですか? (Vistaも臭いがTrendmicroも臭い。とりあえずKBを調べてみるか) 追記:みんな困っているようだが、どこかのバカがpatch.exeというトロイの木馬を作ったのをファイル名決め打ちでチェックしている間抜けなローンチャがいるらしい。 site:microsoft.com patch.exeで検索しても、それっぽい情報には当たらないが……というか、Windows開発者はそれほどパッチを使わないのかな? #さらに追記:インストーラ一族とみなしているらしいというのが正解なのかなぁ。どちらにしてもだめな仕様だとは思うが。
NyaRuRuさんのヒントのおかげでCygwinのスレッドを見つけられたので、マニフェストを作って解決。
とはいえ、Vistaがご丁寧にキャッシュしていたので、touchでexeの日付を変える必要があった(これも変な仕様だ。マニフェストが変更されたらそれに追随して欲しいところ――最初、書きそこなった時の情報がキャッシュされていたようだ)。まったく余計なことを(再起動でもいけそうだが、面倒だよね)。
参考までに、CygwinのMLの丸映しになるが、こんなのを用意しておけばOK。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <assemblyIdentity type="win32" version="1.0.0.0" name="patch.exe" processorArchitecture="x86" /> <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3"> <security> <requestedPrivileges> <requestedExecutionLevel level="asInvoker" uiAccess="false"/> </requestedPrivileges> </security> </trustInfo> </assembly>
ふと考えて、gem.batにge.bat.manifestを作って、その中で <requestedExecutionLevel level="requireAdministrator"/>
とかすると、簡単にUACダイアログとか出せるかと試してみたが、できなかった。
exeとdllにしか、本当に使えないのか。当然か。しかし、それはなんか中途半端だな(というか、本来サイドバイサイド設定のファイル(もちろんバッチファイルには意味ないだろう)に、信頼性情報(もちろんバッチファイルにも意味がある)とかも一緒に入れてしまったところが、間違いのような気もしないでもない)。
というか、Administratorが隠されたために、runasの意味がなくなっている点が面倒なところなのかも。(汎用性がなくなっちゃったってことだ)
もしかして、Windowsの開発者はバッチを使わないのかな?
sudoして実行したシェルスクリプトが起動するプログラムが権限を継承しなかったら、それは意味ない。例)sudo /etc/init.d/apache reload
と、もう消えちゃったが、runasとかvistaとかで検索していたら、昇格したプログラムからの別のプログラムを起動する場合の継承について問題視している記事を見て思った。
ううむ、25日の夜だったのか……しまったと思ったときはもう26日。
Best Of... Vol. 2: 1978-85(Simon, Yves)
そういえば、高校生(大学生になっていたかも)のころ読んだなぁとか思いながらアマゾンを眺めると、瞬間的な翻訳ブームがあったらしきことがわかる。
(アムールとアームで韻を踏むのがつくづく好きなんだな)
ふむ、どんな作品なんだろうか。でも、読まなくてもわかるような気もしないでもない。
パリの1500万秒―イヴ・シモンが描く魂のなかの愛(イヴ・シモン)
これを読んだのだな。ボーイミーツガールなクライムノベルだから、まあ、いかにもではあったけど、描写がきれいで、感情の流れが自然、かつどうしようもない切迫感、焦燥感、閉塞感をもたらすスピードがあって、リモザンやドワイヨン、カラックスなんかの同時代人のように一瞬思えるところがあった。でも、実際には70年代にはフォーク野郎だったわけだから、もっと突き放した80年代の捕らえ方をしていたとも感じた。
少年とピストルがここに置かれる。
どちらも頭はポで始まるが、その違いはチェコのあたりのクリスタルグラスと、織部好みくらい異なる。
どっちもいいなぁ。
ポリーニで聴くと、単なる幻想曲にソナタと名前をつけたわけではなく、実際は驚くほど構造的で、ある意味ではブラームス(シェーンベルクが学び、ウェーベルンが深耕し、ブーレーズが完成させた)的でさえあるロ短調ソナタがソナタの中のソナタなのに対して、
Piano Sonata(Alexander Scriabin)
ポゴレリチの手にかかると、衝動的で突発的で情動的で、思いつきと気まぐれに支配された長大なるカプリオーソのように聴こえる。ある瞬間、ある瞬間のフレージングであったり、鳴らせ方であったり、固有な細部の強調が、全体の構造に対していびつな歪みを生じさせる。
部分は全体のために奉仕しているだけのか、それとも全体というものは単なる部分の集合に過ぎないのか。アプローチの違いが、同じ曲をまったく異なるものとしてインスタンス化する。
ポリーニは1942年生まれのイタリア(ミラノ)人で、少なくともある時期においては共産主義者、ポゴレリチは1958年生まれのユーゴスラヴィア(クロアチア)人。と書いてみると、中央集権と自主管理といった言葉まで引っ張りだしたくなってくる。
だから、全体としては、ポゴレリチのロ短調ソナタは退屈な面を持つ代わりに、ときどき、はっとする瞬間芸の世界、それに対してポリーニの演奏は一瞬一瞬を聞き逃すことが不可能な緊張感の持続。すでにひびが縦横に走ったリューインと、磨かれきった水晶宮、……端的にいえば、ポゴレリチの演奏は頭が悪い。でも、それが魅力なのだろう。
冒頭の下降型が、曲としてはちょうどブルックナーの霧のような単なる序奏に聴こえるのだが、実際には、ベートーヴェンのハ短調の交響曲と同じく全体を支配する。続く、ターンタタタータタタタも重要な動機だが、後半の下降を最初の動機の発展とみると、それとも独立した動機の後半とみるかで、どれが第1主題で、どれが第2主題なのかが分かれる。
ポリーニを聴くと、提示部がまさに、その最初の数分にみえる。
ポゴレリチだと、コラールのようになる部分の歌わせ方が極端に強調されるので、そこが第2主題のように聞こえ、そのため最初の下降音型と続く跳躍を持つ動機が合わせて1つのように見える。そこの違いが全体の構造に影響しているのではないか。ポリーニの場合、コラールのようになるところが、最初の展開部として聴こえる。(聴き直すとまた異なる印象を受ける可能性があるなぁ)。
ブロックをとるという点から、どうにも難しい気がするのであった。
文字列が手元にあるなら、直接module_evalなりinstance_evalなりを呼んだ方が良い気がするし、仮にブロックがあるのであれば、それはコードの埋め込みが可能なのだから、異なるモジュールにして、その時点に適合したモジュールをミキシンすれば良いと思うのだ。
拡張ライブラリから呼び出すには便利なので、存在意義がないとは思わないが、どのようにスクリプトからは利用するのがベストプラクティスなんだろうか?(使わないのがベストプラクティスというのはない方向で)
Ruby Wayでもそのあたりは苦心していて、define_methodを呼び出すメソッドを実装したりしているが、それって、define_methodの実装意図からは違うのではないか? と思うのは、そう実装することもできたはずなのに、そうせずにdefine_methodが実装されているからだ(もちろん、応用がきくからdefine_methodなのであって、ハルフルトン方式の実装「も」できるように設計したという可能性もある)。
calss MyClass def new_method(name, &block) self.class.send(:define_method, name, &block) end end #(P.373)
おれだったらクラスメソッドにするけどなぁ
class MyClass def self.new_method(name, &block) define_method name, block # &blockとする必要はないが、何が違うんだっけ? end endRuby Way 第2版 (Professional Ruby Series)(Hal Fulton)
書き方いぱーい
module X def hello puts 'hello' end moduel_function :hello def self.ja puts 'konyanyachiha' end end class <<X def it puts 'ciao!' end end X.hello X.ja X.it
僕は、メソッド定義式の出現時点で明らかなdef self.メソッド名が良いと思うのだが、特異クラスを使う方法も捨てがたい。module_functionの使いどころはどこだろう?
define_methodしたメソッドをモジュールメソッドに変えるのに使えば良いのか。
Classからmodule_functionをundefしていることを考えると、少なくともクラスメソッドをインスタンスメソッドのように定義してからクラスメソッドに変えることは奨めてはいないのだろうけど、それはなぜだろう。
module X module_eval "def x;puts 'hello';end" instance_eval "def y;puts 'yello';end" end # X.x -> undefined method `x' for X:Module (NoMethodError) X.y class Y module_eval "def x;puts 'hello';end" instance_eval "def y;puts 'yello';end" end # Y.x -> undefined method `x' for Y:Class (NoMethodError) Y.y y = Y.new y.x # y.y -> undefined method `y' for #<Y:0x1035079> (NoMethodError)
なぜ上の結果となるか、インスタンスとモジュールの関係について言及して説明せよ。
どうでも良いことだが、次のプログラミング言語をデザインする人は、HTMLレディな標準エラー出力を考えてほしいな。オブジェクトを示すのに<>を使わないとか。
こんなのが見られるとは長生きするもんだなぁ。
高速道路の高架、高層ビル、コンクリート、金属、黒いスーツに黒いネクタイ、白いシャツ、ハレーション、蛍光管、モニター、フォント、スーパーのカート。
JGバラードが最初に注目して、それが1970年代後半にUltravoxによってイメージとサウンドで表現されて、でも商業的には失敗して、でも一人でマルチトラックとシンセサイザーとドラムボックスがあればどうにかなるとソロで復活して、まあ、80年代が始まるという微妙な時期の作品。
He's A Liquidは、埋め込みリンク生成を拒否しているけど、確かに、長く残しておきたいデキだからしょうがないだろう(妙に画質が良い)……と思ったら画質が悪いやつもあるなぁ。
EQ-Filteredってなんだ? (妙に画質が良いやつ。EQのQはQualityだろうけど)
まあ、ディシプリンだけど、ばかだよなぁ。
慣れだろ、慣れ。
カタカナ混ジリ文章モ慣レレバ普通ニ読メル。
万葉仮名を万葉人は読み、英語圏の人はすらすら英語を読むが、シェークスピアの時代の文章を読み慣れていなければ読みにくい(か、読めない)。
読みやすさは、表層的にしか語れない問題で、そこには何ら技術的な問題はない。だって、慣れればOKな以上、それは根性で解決の世界じゃん。
だから、読みやすい/にくいを語るのであれば、それが表層的な、つまり慣れで解決する問題ではなく、技術的に解決可能な問題に起因するということを示さなきゃだめだよ。
というわけで、まったく賛同できないことも多い(という点からはやっぱ慣れと感性(ヒュー)の問題だという気もするわけだ)が、技術的問題に落とし込んで解決しようとしいろいろ試すkwatchさんの実験集は実におもしろく、その方法に賛同する。
ogijunと渋谷のブックファースト行って、おお、おれの本があるなぁとか団さんの本いい場所占めてんなぁとか思いながら後ろを振り返ると自然科学の本で、また目立つところが動物の本で、そこにさり気なく『動物の値段』という本がある。値段? で、手に取ると帯の惹句が「シャチが一億円! 動物売買の知られざる世界を動物商が初めて明かした。」――それは確かに知らないなぁと、適当に開くとゴリラの話が出ていた。
今、ゴリラの生息数は激減している。
ゴリラの生息地は内戦が頻発しており、難民や武装ゲリラがゴリラを食べたり、仔ゴリラを捕まえるために大人のゴリラを皆殺しにしているというのがその大きな要因。さらに……
嘘くさいような、その一方であり得なくもないような。と、想像したのは、戦いに敗れて山岳根拠地で再起を期す状態(延安状態と呼ぶか)であれば、当然、その根拠地は人里離れてなくてはならないわけで、すると確かにゴリラが棲んでていてもそれほどおかしくはないし、でかさとか料理のしやすさ(腕とか腿とか太いし)とか考えると、なくはなさそうだ。にしても、そういうこた、まったく考えたこともなかっただけに、とりあえず新鮮な情報に刺激を受けた。
で、ちょっとさかのぼるとリスザルを捕獲するために友釣りじゃないけど、小美人で釣るみたいな仕掛けを用意するらしいのだが、その小美人というか囮の雌ザルが無駄になりやすい。というのはフサオマキザルという別のサルがいるからだ。
このサルは、捕獲箱の中のパッションフルーツを食べにきたわけではない。お目当ては囮のリスザルだ。なんとフサオマキザルは囮のリスザルを食べに来たのだ。囮のリスザルは縛ってあるので逃げることができず、簡単に捕まって食い殺されてしまう。
びっくり。シビアな世界というか、なんというか。
なんだかわからないし、どこまで本当なんだか拾い読みでは見当もつかないが、少なくともまったく知らない世界の話だということはわかった。しかも文章はテンポがいいし、興味がない分野というわけでもない。
考えてみたら、飼育員の話は昔、少年ジャンプで西山登志夫のマンガで読んだし、ZOOKEEPERで園長視線も読んでいる。獣医の話はWILD LIFEだ。というように、それなりに動物園を取り巻く世界というのは親しみのあるジャンルなわけだが、そもそもの仕入れ先のことなんて考えたこともなかった。
筆者のどこまで本気なのか良くわからないが、素直に読めば、とても良いことが書いてある序文で、動物園が大好きだった子供ころのことが出てくる。
「動物園はどこからバーバリーシープを連れてくるのだろう?」と素朴な疑問が浮かんだ。インターネットなどない時代だったので、私は全国10ヵ所ほどの動物園に問い合わせの手紙を書いた。今考えれば迷惑な子供だったと思う。そのうち2ヵ所の動物園から返事が届き、「バーバリーシープは動物商から購入する」と書かれていた。金額は書かれていなかったが、動物商という職業があって動物園は動物をそこから買っているんだということがわかってとても嬉しかった。
そして、いつかは動物を買って動物園をやろうと考えた。
ううむ、その発想はなかった。
で、次の段落を読むと、いきなり動物から爬虫類に興味が移ったとか書いてあって、なんじゃこりゃと思うのだが(もっとも小学3年生とか書いてあるから、そんなもんだよな。逆算すると小学2年くらいに、どうやって入手したのか問い合わせたわけで、そういう発想をすべくしてこういう本を書くようになったのだろうなぁとか、いろいろ想像して楽しむおれがいる)、原価計算して、この動物は捕獲するのにいくらかかって、運搬にいくら、維持するのにいくらとか書いてあるので、説得力はいずれにしてもある。その細部の描写が法螺話のようでもあり本当のようでもあり、いずれにしても目新しいことばかりだ。
たとえばラッコ。自然の状態に育てようとすれば、雲丹を食わせたりすることになり、そうすると1日あたりの食費が5万円になるから、動物園ではコストを下げるためにイカを食わせるのだが、それでも5千円になる。なんて書いてある。大喰いだとは聞いていたがイカ5千円というのは相当な分量だ。とりあえずその数字を信用すると、1頭あたりの維持費は、年間、食費だけで180万円か。5頭で900万円ってことは人間1人雇うよりかかるかも知れないなぁとか。確かに動物園ってのは金がかかる施設だわ。
という具合に、読めば読むほど、おもしろいので購入(ogijunも買ったので、少なくともブックファースト渋谷店については店頭に並んでいた分について、本書は絶滅したことになる)。
古い雑誌の整理してたら、Java Pressの手つかずの号が出てきた。
内容はちょっと古いのだが(1.4.2)、巻頭の特集記事のHPの方(失念。もう捨てちゃったのでわからない)が書いたGCのいろいろとか、中村実さんが書いた参照のいろいろ(finalize参照については知らなかった)、それから僕にとってはタイムリーな西本さんのサウンド関係のAPI(特にPCM系。MIDIはわかるんだけど、こっちがどこから見れば良いのかわからくて止まっていた。WAVについてはこないだ岩月さんから教わって構造はわかったのだけど)の記事とか、技術的にはまったく古びてなくて、おもしろかった(役に立った)。
しかし、こういう雑誌が消えていってるってことは、誰がプログラムを書いてるんだ? ああ、インドや中国の人か(ってことだよね?)
ジェズイットを見習え |
Before...
_ arton [どうも。直しました。]
_ t-wada [ヲタの中でテンシュテットの評価が高いのは、ライブ版が凄いからのようです。ライブ版と比べるとスタジオ版は借りてきたネコ..]
_ arton [なるほど。>ライブ版が凄い]