2008-10-31

Introducing Direct2D and DirectWrite

Windows 7: Introducing Direct2D and DirectWrite | pdc2008 | Channel 9

PDC2008の動画が来た。Windows 7の新しいAPI、Direct2DとDirectWriteについて。その概要と実際のコード。

Direct2Dは2D描画用の新しいAPIで、Direct3D 10.1の上に構築されている。つまり、GPU支援による描画ができる。また、アンチエイリアスなどの機能も使用可能で美しい描画ができる。主にC++のネイティブコード用に作られている。完全にソフトウェアだけで動作することもでき、動画のデモでは、ソフトウェアだけでも、GDI+より速いとされている。API自体はCOMベース。ただし、GDI/GDI+などへ描画することもできるし、GDI/GDI+から描画することもできる。が、その場合は遅くなる。

DirectWriteは文字の描画用の新しいAPIである。GDI/GDI+やDirect2D、あるいはビットマップ上への描画ができる。ClearTypeやOpenTypeフォントの多くの機能をサポートしている。Direct2D上に描画する場合は、GPUによる支援が得られる。また、わざわざシステムにフォントファイルをインストールしなくても使用できるという機能もある。ブラウザやワードプロセッシングを実装する時ぐらいにしか必要でないようなローレベルな機能もあるようだ。(日本語でローレベルとか低レベルとか低級などというと、どうも劣ったという意味に感じられてしょうがない。いっそのことLow Levelにするべきか。)

ほんの少しだけ触れられていた、UIAnimationが気になるところだ。あの手のものはCOMではなく、本当のC++のライブラリ(COMのような、言うなれば単なる構造体と関数ポインタじゃなくて)としてあったほうが使いやすいだろうけれど。

もちろん、これらの機能がXPに提供されることはない。コーラを飲んだらゲップがでないくらいにありえない。Vistaには提供されるかもしれない。少なくともVistaには提供されて欲しいところだ。

Tom's Blog(Direct2Dについて解説するために開設されたブログ)

2008-10-29

Mark Russinovich、Windows 7について語る

Mark Russinovich: Inside Windows 7 | Going Deep | Channel 9

スピンロックとかファイバーとか、あと省電力やMinWinについても語っている。特にそれほど目新しいことはないような気がするが。MinWinってテスト用のOSだったのかな。

Windows 7 Developer Guideについて

http://code.msdn.microsoft.com/Win7DeveloperGuide

とりあえず読んでみた限りの、気になった部分に対する感想を書いてみる。Windows 7についての興味深い情報がある。これは感想であって要約ではない。

2D描画用に、Direct2Dが追加される。「Direct3D 10上に構築されている」とある。"immediate-mode"の意味がよく分からない。簡便な2D描画に期待するのは、むしろ豊富な固定機能だと思うのだが、シェーダーも使えるという意味なのだろうか。"resolution-independent"は、どうせ最後に行列による変換をかますから、実際の解像度を気にしなくていいということなのだろうか。GDI/GDI+やDirect3D 10との混在ができることをほのめかす言葉がある。Direct3D 11との混在はどうなのだろうか。

文字列描画用に、DirectWriteが追加される。GDIやDirect2Dなどで使用できる。Direct2Dと共に使用する場合は、ハードウェアによる支援が得られる。また、わざわざフォントをインストールしなくても使えるらしい。つまり、フォントファイルへのパスを指定して使うなどといったことも可能なのだろうか。それならば素晴らしい機能だ。

Vistaに追加されたWindows Imaging Componentが、新たな規格をサポートする。progressive image decoding(プログレッシブJPEGのことか)や、expanded PNG features(具体的になんだろう)だ。GIF metadataはどうでもいい。だいたいGIFのサポートなんて今時いらないだろう。PNGOUTによるPNGの方がよっぽど圧縮率が高い。

Direct3D 11が追加される。まあVistaにも来るだろうと思う。

Direct3D 10が改良される。シェーダーの命令数の上限がなくなったりとか、汎用的に使えるリソースとか、整数やバイナリなど。あとジオメトリシェーダーが追加(あれ? これって別にWindows 7に限った話ではないような)
Windows Advanced Rasterization Platformが追加される。これはソフトウェアによるDirect3D 10の実装で、マルチコア対応で、速いらしい(本当だろうか) Direct3D 10 Level 9というものが追加される。これにより、Direct3D 9のハードウェアでも、Direct3D 10やDirect3D 11が使えるようになる。足りない部分はWARPとやらで補われるのだろうか。Caps地獄再来はいやだなぁ。自分がDirect 3D 9の学習をやめてしまった理由も、ひとえにGPUベンダーが全然別々の機能だけを実装して謳い文句にしていたからだ。私は理想主義者なので、ハードウェアごとの違いを意識などしたくはなかった。

Direct3DとGDIを混同している糞コードに対する互換性の向上。DWMが無効にならずにすむようになった。また、パフォーマンスも向上している。

従来のDirectShowに変わりMedia FoundationがVistaで導入されたが、Windows 7は最初からH.264のデコーダを搭載しているらしい。さらにmp4にも対応している。やれやれ、さすがのMSも、H.264には勝てなかったか。これは素晴らしいことだ。これで気兼ねなく、H.264なmp4を使えるいうものだ。しかし問題は、AACのサポートするとは書いてないことだ。mp4コンテナといえば、まずH.264とAACである。最近になってmp3も認められたが、何にせよAACの方が音質が高い。とくにHE-AACやAACv2は、低ビットレート(HE-AACは48kbps以下、AACv2は32kbps以下)での音質が驚くほどよい。是非ともサポートして欲しいところだ。しかしこれは、SilverLightでH.264+AACなmp4がサポートされると発表されたことと関係があるのではないか。とすると、AACのサポートも期待してもいいのかもしれない。しかし、とすると、Windows Vistaでも、サポートがあるのではないか。

Media Foundationに、新しい簡便なAPIが追加されるらしい。これには興味がある。というのも、自分のプログラムで動画を再生してユーザに見せたい(たとえばゲームで途中に表示するムービーなど)といった程度のことで、従来のDirectShowやらMedia Foundationやらの複雑怪奇な低レベルのAPIを使うのはどう考えてもやりたくないことだからだ。

"New DVXA video processing APIs, which use a more flexible compositing model and are better suited for HD video formats."、などといった文章もあるけれど、正直DVXAにはまったく期待していない。なぜなら、DVXAでは、H.264規格のある機能を使うと再生できないなどといった程度のことならまだかわいいもので、主要なGPUベンダーのドライバでは、かなりの確率でブルースクリーンを表示してOSが落ちるからだ。GPUベンダーに自浄能力はなく、各社ともあいかわらず、ベンチマークとパフォーマンスに特化していて、安定ということをまったく考えていないドライバばかり出荷する。動画を再生しようとしただけでBSoDになるのはふざけているにも程がある。動画ファイルは規格違反のものが非常に多い。規格を守らないエンコーダもさることながら、HDDなどの不調でビット列が書き換わったとか、ダウンロードの途中の動画ファイルなど、データの構造が壊れていることは往々にしてある。いかなる入力があったとしても、BSoDを発生させるべきではない。

追記:AACもサポートされるらしい。

2008-10-28

象について

源平盛衰記のいけずきとするすみの部分に、象についての記述が出ているので、ちょっと象について調べてみた。

象自体は、日本人にとっても、古くから知られていたと思われる。なにしろ、母摩耶の夢の中で、釈尊は白象となって、母摩耶の右脇を衝いて胎内に入ったという伝説が残っているぐらいだから、仏教伝来と共に、象の存在も日本に知られるところとなったはずである。

しかし、当然ながら日本人は、象はおろか、その写真さえ見たことがない。当時の日本人にとって見れば、伝説の生き物と同じ扱いだったのではないか。

日本に初めて象がやってきたのは、室町時代の応永十五年(1408年)のことで、今の小浜市に南蛮船が着岸したらしい。船は現在のスマトラ島からやってきたと推測されている。象は足利義持に献上されたらしい。そもそも、仏教書では、象というものは、白象とされているので、実際の灰色の象を見て、わざわざ黒象と書き残しているようだ。

また、江戸時代の享保十三年(1728年)、広南(ベトナム)から象がやってきて、八代目将軍、徳川吉宗に献上されたらしい。また、時の皇、中御門天皇の叡覧にも預かったのだが、天皇に謁するためには、位が必要とて、「広南従四位白象」という位と名前を賜ったとか。

文覚のこと

文覚が非常に気になる。しかし、真偽の疑わしい話しか残っていない。特に、平家物語の後はどうなっていたのか、さっぱりわからない。

とりあえず、今分かっている限りでは、頼朝の後ろ盾で、後白河院に神護寺を初めとした諸寺を再建立させているが、正治元年(AD1199)に頼朝が死んでからは、後ろ盾を失い、反幕府派の源通親の讒奏にあって、佐渡に流された。佐渡には真禅寺という寺があり、文覚はここで荒行をしていたらしい。佐渡に流されたのは正治元年(AD1199)で、建仁二年(AD1202)には赦免されて教徒に戻っている。

京都に戻ってこれたものの、こんどは後鳥羽上皇に謀反があると言われて、元久二年(AD1205)に対馬に流されるが、たどり着くことなく、途中で死んだらしい。

2008-10-27

読める! 読めるぞ!

神護寺四十五箇条起請文

源平盛衰記を読んでいるうちに、これが読めるようになっていた。習うより慣れろかな。

源平盛衰記のこと

現在、敦盛が滝口入道に会うところまで読み進めた。気になったことをいくつか。

まず、文覚であるが、だいぶ詳しく書いてある。父は遠藤左近将監盛光、母は上西門院の北面の下﨟であり、母は南山で死亡、三歳にして父にも死別したこと、幼い頃から粗暴であったこと、十三歳にして元服して盛遠と名乗り、上西門院の北面の武士になったこと、容姿は優れぬが、武道には優れていたことなどが記されている。十八歳にして出家とある。また、袈裟御前の逸話などもある。

ただしひとつだけ、平家物語にあって、源平盛衰記に書いていないことがある。それは、文覚が荒行をするにあたって、どれだけ苦しいか試してみようと、藪のなかに臥した事である。その記述はない。

木曽殿、つまり源義仲についても、平家物語より、多少詳しく出ている。また、巴のその後については、鎌倉殿の召しにしたがって鎌倉へ行き、首を刎ねられるべきが、和田義盛のとりなしによって、女房となって、朝比奈三郎義秀を産んだともあるが、これは年代からしても怪しい話である。後世の創作であろう。

ところで、一谷の合戦で有名なのは、あの九郎義経が、鵯越を馬で落として平家の陣の裏から攻めたという話である。源平盛衰記でももちろん出てくるのだが、ひとつ面白い話がある。それはあの畠山が、いまは馬を労わるべきだといって、自ら馬を背負って降りていったということだ。それも記述をみると、どうも畠山一人で担いで降りたように読める。いくら日本の馬は小さいとはいえ、やはり二百ないしは三百キログラムほどの体重があり、一人で担ぐのは、文字通り、「人倫には非ず、誠に鬼神の所為」である。まあ実際には、畠山ほどの名のある武士ならば、従者がいたはずであり、人手があれば馬を担ぐことはできたと思われる。

ちなみに、この畠山とは、畠山庄治次郎重忠である。この人は、平家物語では大力と名が高く、例えば宇治川を渡す時に、馬から落ちて、泳いで岸までたどり着いたが、やけに体が重いと気がついてみれば、重親がしがみついており、助けてくれと懇願されたので、川の中から岸辺までブン投げたという話がある。また、義仲が落ちていく下りで、畠山は巴と組み合おうとして、弓手の鎧の袖に取り付いたところ、巴は叶わなじと、春風という名前の馬に鞭を当てた。すると鎧の袖をふつと引き切って逃れたとある。馬が強いことも確かだが、袖を抑えていた畠山もすごい。とはいえ、源平盛衰記のこの部分は、巴が鬼神の如き振る舞いの記述であって、畠山の大力については、一切触れていない。源平盛衰記では、これを見て畠山が逃げ出したと書いてある。源平盛衰記の記述では、巴の事ばかり書いているので、ここで畠山がいかに大力であるかということには、普通気がつかないはずだ。言われてみればその通りではあるのだが。Wikipediaの項目にある参考文献にでも書いてあるのだろうか。

さて、源平盛衰記も残すところ三百ページほど。

2008-10-23

Bloggerの埋め込みコメントフォームのサイズの変え方

新しい埋め込みコメントの機能をさっそく使ってみたが、フォームの大きさに問題がある。WUXGAのディスプレイを使っている自分にとっては、とても小さい。これでは、せっかく長々とコメントを書こうとした人のやる気をそいでしまう恐れがある。何とかしてサイズを変えよう。

さっそくソースを読んでみたが、どうもコメントフォーム自体は、インラインフレームで実装されている。これは困った。しかし、フレームの幅や高さは変更できるはずだと見てみると、width属性は100%になっていた。はて、ではなぜ横幅がこんなにも狭いのか。OperaのDragonFlyで見てみると、CSSで.comment-formに、max-widthが475pxと設定されていた。では変更しようとBloggerのソースを見たが、インラインCSSに.comment-formが見当たらない。これはどうしたことかと、DragonFlyを見直すと、なんと外部のCSSで設定されていた。その外部のCSSは、現在使っているウィジェットのために、他にも色々な指定があり、使わないわけには行かない。さてどうするか。

とりあえず、div要素に使われていることに注目して、div.comment-form としてみた。これはうまく動いた。しかし、あまりよろしくない。ふと!importantの事を思い出して使ってみた。これも動いた。とりあえずこれでいこう。

さて、縦の高さは、フレーム側のHTMLで記述されているので、いかんともしがたい。まあ、縦の高さはまずまずだし、スクロールバーも表示されるだろうし、Webkitを使っているブラウザ(SafariやChromeなど)なら、フォームのサイズは変更可能だし、よしとしておこう。

Bloggerのコメントが書きやすくなった

本日より、Bloggerのドラフト機能であった、埋め込みコメント機能が、ドラフトを離れた。この機会に早速使ってみたが、なかなかコメントしやすくなっている。

2008-10-22

豊国廟、静閑寺

豊国廟と静閑寺に行ってきた。どちらも歩いて行ける場所にある。まず豊国廟に行ってきたが、石段が多い。その数、実に565段あるらしい。とても数える気にはならなかったが、とにかく足が疲れた。とりあえず上がると、石が組んである。なるほど、あれがあの絶倫のエロオヤジが奉られている場所というわけだ。しばらく足を休めて、また長い長い石段を降りた。

静閑寺には、誰もいなかった。当然だ。観光客が来るような場所ではない。ここには、高倉天皇と小督殿が奉られている。平家物語では欠かせない人物だが、私はどうも、高倉天皇に関する話は、あまり好きではない。

さて、静閑寺から道なりに帰ると、清水寺にでた。大勢の観光客でごった返していた。特に、音羽の滝の前はひどい行列で、徒然草の第四十一段が思い出されて愚かであった。しかし、まったく日本語が聞こえないのはどういうわけか。中国語と韓国語しか聞こえない。世も末というものか。しばらく哀れな観光客達を眺めていると、中国人風の二人組みのオバハンが、傘の先を強く私にぶち当てておきながら、省みもせずに過ぎ去っていった。中国が優れていたのは、唐の時代までと、誰かが言っていたのを、ふと思い出した。

スーパードンキーコング2 3面

動画へ

http://zoome.jp/bookworm/diary/29

2008-10-21

真実の壇林寺と壇林皇后

古道具屋はともかくとして、本当の檀林寺はいったいなんだったのか。実は、あまり良くわかっていない。

嵯峨天皇の皇后は、橘嘉智子で、別名檀林皇后と呼ばれている。檀林皇后は仏教の信仰厚く、弘法大師に勧められて、日本最初の禅寺を作った。作られたのは承和の間(834年から847年の間)で、場所は、現在の天龍寺のあたりで、かなりの大きさだった。慧萼(えがく)という法師を唐に送り、義空という禅僧を招いた。とはいっても、義空は数年で唐に帰ってしまう。そもそも日本に禅宗が広まったのは、鎌倉時代のことで、それも武士の間で流行したのだ。平安時代の貴族達には、禅の教えはあまりしっくり来なかったのだろう。檀林寺は、平安中期には滅びてしまう。

檀林寺に関しては、これぐらいしか分かっていないのだ。だからこそ、平安末期に盛遠が檀林寺で祈ったという話が噴飯ものなのだ。

ところで、壇林皇后についてなのだけれど、私はどうも、かの呂太后や則天武后や西太后もかくやと思われるほどの人物だったのではないかと推測する。まず、他人を押しのけて天皇の皇后となるには、並々ならぬ努力が必要であろうし、ライバルが多い時には、天皇がわざわざ訪れてきても、追い返している。容姿もまた奇妙なもので、文徳実録には、「后為人寛和、風容絶異、手過於膝」と記述されている。ひととなりが寛和であるのはいいのだが、風容が絶異であるというのはどういうことだろう。美しいとか厳かではなく、絶異というのがよく分からない。名状すべからざる、とか、何とも形容しがたい、などとは。手、膝に過ぐというのも奇妙だ。まさか傴僂であったわけでもあるまいに。

それでも、日本は平和だ。かの呂太后、則天武后、西太后には、おぞましい逸話がたくさん残っているが、壇林皇后には、さっぱり残っていない。そもそも、日本における悪女とは誰をさすのだろうか。

2008-10-20

もし、ならば

歴史を語る上では、多くの空想が生まれる。「もし、クレオパトラの鼻がもうすこし低かったら」、「もし、元寇の時敗れていたら」、「もし、明智光秀が謀反を起こさなければ」等々。列挙に暇がない。

もし、歌詞にレトリックが一切使われていなければ。

歌詞に難解な比喩や暗喩が使われていて嫌になったことはないだろうか。これから二時間は、全チャンネルでメタファーフリーな音楽だけを提供します。

My girlfriend is getting an abortion, she's too young so we're trashing the baby
She's a brick and I'm drowning slowly off the coast and I'm heading nowhere

You're a young adult, no one understands you when you're growing boobs
It just takes some time, little girl you're in the middle of the ride

Jeremy shot his class today
Jeremy spoke in class today

Bite my lip and close my eyes, masturbate a lot tonight
Bite my lip and close my eyes, I'm drifting away to paradise

You ain't nothing but an *****, ***** all the time
You ain't nothing but a hound dog, crying all the time

And I'm STALKing you...
And now you crash into me yeah

I'm a meth, I'm a meth head
Doot doot doot, doot doodoot doot

...my name, it's like a little prayer, I'm down on my knees, I wanna give you head
it's like a little prayer, I'm down on my knees, I want to take you there

Would you know my name, if you hadn't fallen out of that 53rd story window
Would you know my name if I saw you in heaven

We are taking large amounts of pills, large amounts of pills...
We all live in a yellow submarine

Dave Coulier, I don't like you
And I'm here to remind you

This song is gonna get me laid
Your body is a wonderland

And it seems to me that you lived your life until you were hit by that van
And it seems to me that you lived you life like a candle in the wind

やはりレトリックはあらまほしいところかな。

もし、映画に携帯電話があれば。

映画には意思疎通の不備により、すれ違いが発生したりするものだ。そこでもし、すべての映画に携帯電話があればどうなるであろうか。

物語が始まらない。

Nightmare Cityの続編Catastrophe

昔といっても、それほど昔ではないのだが。

http://zoome.jp/bookworm/diary/28

2008-10-19

懐かしのFlash Nightmare City

み~や氏のNightmare City。あのころはFlashの末だったか。

http://zoome.jp/bookworm/diary/27

2008-10-18

現在の檀林寺について

昨日、怪しげな檀林寺の門を出て、哀れみに似たため息をつきながら大覚寺へ向かいつつ、親父にメールを打ってみたところ、現在の壇林寺は真っ赤な嘘で、実は古道具屋であると白洲正子が書いていたというメールが帰ってきた。どの本だと聞いたが、はっきりとは覚えていないという。その日の夕方、白洲正子の本をあさってみたが、どうもそれらしい記述は見つからない。しかたがないので、白洲正子は抜きにして、観光日記を書いた。

そもそも、檀林寺でググってみても、どうも怪しげな記述が目立つ。観光のガイドブックにも書かれていないらしい。理由もいまいち分からない。

ところが、さきほど白洲正子を読んでいたら、父親の言う通りの檀林寺の記述を見つけた。檀林寺のあの怪しさに惹かれた人のために、引用しておく。これは白洲正子著、十二面観音巡礼の、幻の寺の章の最後の方の部分である。

京都へ帰るタクシーの中で、運転手さんが耳よりな話をした。
「檀林寺ならすぐそこだっせ。史料も沢山ありまっせ」
騙されたと思って、寄ってみることにすると、祇王寺の前で降された。「ここです」という。この寺なら、まんざら知らないことはなかった。数年前、祇王寺へ行った時、「まあ、お入りやす。よっておいきやす」と、しきりに呼びとめる寺がある。この頃はお寺も客引きをするのかと、おかしかったが、まさか「壇林寺」とは知らなかった。物はためしと、百五十円払って、中に入れて貰う。妙に白々しい境内で、殺風景なコンクリートの建物が建っている。やがて、顔色の悪い爺さんが出て来たので、「檀林皇后のことを伺いたい」というと「それは御殊勝なことで……」と、胡散臭そうな目つきをした。
本堂の中は、小博物館といった感じで、薄汚い仏様達が、何の関聯もなく並んでいる。その真中のみすぼらしい観音様を指さして、じいさんは恭しくいった。「檀林皇后十八歳の御像です」
隣の部屋には、驚くほど沢山の「史料」が並べてあった。曰く、「檀林皇后の御衝立」、曰く、「檀林皇后の御茶碗」etc。
「このお寺は何宗ですか?」
「禅宗です」
「天龍寺の末寺ですか?」
「違います」
「では何派で?」
それには答えず、じいさんは引込んで、二度と姿を現さなかった。私は何百点とある「史料」を拝観した後、檀林寺を辞したが、外へ出たとたん、堪えていた笑いが一時に爆発した。巡礼をしていると、時々こういう御利益もある。
そこへ顔みしりの知人が現れたので、今、おかしな寺へ行って来た、まるで小道具屋だったと話すと、彼は苦笑いをしていった。
「小道具屋なんですよ。質屋もしていたという話です」
それで読めた。あの不可思議な仏達や、厖大な「史料」の数々は、酒手に窮した生臭坊主の質流れに違いない。観光寺院がはやるのを見て、ここで一もうけしようと、企んだにきまっている。それにしても、檀林寺とは、よくも名づけた。が、今時そんな名前を知る人は少く、思った程参詣人が来ないのは気の毒なことである。

やれやれ、どうやら私の智識も、それほど曇っていないようで安心した。私も檀林寺の門を出てから、哀れみに似たため息を止める事ができなかったのだ。とはいえ、心ある人があの檀林寺を見れば、怪しいことは火を見るより明らかである。

まあ、私に白洲正子をまともに読ませるきっかけを与えたのだから、あの寺もなかなかの善智識と言えなくもない。

哭蔵氏のフラッシュ

当時、哭蔵氏のフラッシュは定評があった。

http://zoome.jp/bookworm/diary/26

お寺観光

仕事も見つからず、焦燥感で源平盛衰記の読書が進まなかったので、寺を見てくることにした。考えてみれば、京都にいるのに、まったく観光していないというのも、もったいない話だ。

さて、どこに行くか。もちろん、平家物語ゆかりの場所に決まっている。そこで、祇王寺と滝口寺に行くことにした。

まずJR京都駅から山陰本線で嵯峨嵐山駅まで向かう。ちなみに、山陰本線の京都‐園部間を、嵯峨野線とも言う。嵯峨嵐山の駅までは、230円である。

さて、嵯峨嵐山駅を降りて、目当ての二つの寺に向かう。といっても、祇王寺と滝口寺は同じ場所にある。事前にGoogle Mapで確認しただけで、直感に頼って向かったところ、場所がよく分からない。この辺だろうと北西に向かっていたところ、清涼寺についた。せっかくなので入ってみることにした。南の門から入って右手側に、法輪というのがある。なんでも、この法輪を一回転させると、一切経を一回読むのと同じ功徳が得られるらしい。だいぶズボラな世の中になったものだ。一切経は五千巻以上からなる経典で、真読には一体何十年掛かるのか分かったものではない。とりあえず法輪を見てみようと、お堂に行ってみると、一回百円との看板が出ている。ちょうど三人組の若者がいて、法輪を回すところであった。法輪をまわすと、箱の中に隠してあるスピーカーから、雑音交じりの読経が聞こえてくる。実にマヌケな図だ。私は笑いをこらえて法輪を後にした。しかし、やたらと修学旅行生が多い。まあ、あのような法輪があるから、修学旅行生が寄ってくるのだろう。

さて、清涼時を西に行くと、目当ての祇王寺、滝口寺の看板が見えた。坂を上っていくと、檀林寺という寺がある。寺の由来を書いてある立て札に何気なく目を通したところ、嵯峨天皇の御宇に建てられたらしい。しかも、唐から義空という禅僧が渡ってきて、この寺で指導したらしい。はて、禅宗が渡来したのは、鎌倉時代ではなかったか。嵯峨天皇の時代に禅宗など入ってきていたのだろうか。もちろん、禅の思想が貴族社会に定着しなかっただけで、入ってきたことは入ってきていたのかもしれない。禅は武士の間で流行ったのだから。しかし、本当に嵯峨天皇の時代、すなわち八世紀に入ってきていたのだろうか。疑問だ。

檀林寺に入るかどうかは後から考えることにして、とにかく祇王寺に行った。拝観料は三百円である。祇王寺とは、その名前の通り、祇王、祇女、その母の閉、仏御前の庵があった場所だ。祇王と祇女は白拍子の上手で、かの清盛公に寵愛された。ところが、仏御前が推参してくると、祇王祇女は捨てられてしまう。祇王は無常の世の理を知り、出家して後世を頼むようになったという話だ。入ってみると、拝観コースを示すのか、矢印やロープが張られている。見苦しいことだ。ロープにしたがって進んでいくと、クマガイソウとアツモリソウが栽培されていた。意味が分からない。何故こんなところでわざわざ栽培してあるのか。まあ、どうせ観光用なのだろう。この寺と熊谷次郎直実や、無官大夫平敦盛とは、何の関係もないではないか。気がついて見れば、周りはオバハンだらけ。だからこそ、こんな観光用の草が植えてあるのだろう。本当に見苦しい。お堂の中には、なぜか清盛公の仏像まである。どう考えても場違いだ。何を考えて浄海入道を配置してあるのか。何のために祇王は世を捨てたというのか。来るべきではなかったのかもしれない。帰りがけに、祇王寺と大覚寺に両方入れる割引があると書いてあった。大覚寺は行く予定ではなかったが、せっかくだから行くことにしようと、割引券を買った。

さて、滝口寺である。ここも拝観料は300円。ここには、滝口入道がいた。滝口入道というのは、在俗のときは、滝口武士の斉藤時頼といういい身分の将来ある武士だったが、賤女の横笛という女に惚れてしまった。身分違いの恋であり、父親から咎められたので、出家して滝口入道と呼ばれた。ここは印象の薄い寺であった。滝口と横笛をかたどった人形があるだけだ。観光客への媚ぐあいは、祇王寺よりはマシかもしれない。

さて、寺を出てきて、檀林寺の前に来た。どうするか。入るべきか。禅寺というのがどうしても怪しい。本当なのだろうか。禅はどう考えても鎌倉時代だろう。看板によると、寺自体は、どうも最近になって再建されたらしい。寺の前でしばし考えていると、外人が近寄ってきて、この寺の名前は「ぎぃぃぃじ」でいいのかどうかと訊ねてきた。祇王寺と言いたいのだろうか。「だんりんじ」と答えると、当てが外れたような顔をしている。祇王寺の方を指差して、「ぎおうじ、たきぐちでら」と言ってやると、納得して祇王寺に向かっていった。要するに、この寺は観光ガイドブックには載っていない寺なのだろう。

やはり気になったので、入ってみることにした。拝観料は400円であった。高い。気になったのは、拝観料を払うところで待機しているオバハンの言動だ。祇王寺や滝口寺とは違い、近づいただけで、何も言わないのに親しげに挨拶をしてきた。まるで商売人だ。これこれの宝物が全部ありますなどと、宝物のリストを指差す。変わった寺だ。お堂に入るとすぐ仏像があり、おじいさんが解説を始めた。このおじいさんが曲者であった。この音声は一字一句よどみなく流れ、まるであらかじめ録音されているようであった。もしここで「実はアレはシリコンでできた精巧なロボットなんだよ」と言われたとしても、その時の私は何の疑いもなく信じたであろう。おじいさんはひとしきり解説し終わると、仏像に向けて手を合わせた。しかしあいにくと、私は仏神を信じてはいない。お堂には博物館さながらの宝物が展示されてた。実際、なぜ寺にあるのか分からないものもたくさんあった。何しろ、縄文時代の土器とか、鎌倉、室町時代の鬼瓦などがあったのだから。祝詞があり、楷書で書かれているので、私でも読むことができた。何しろ源平盛衰記では、訓読になっていない祝詞が頻出するものだから、意外とすんなり読むことができた。しかし、読むことができるのは、冒頭と末尾だけで、大部分は別の紙で隠されていた。不思議に思ってよくみると、隠されている部分の、かろうじて上に載せた紙からはみ出している部分に、朱で返り点が認められていた。不思議なことだ。また、文覚の像があったのだが、その解説が噴飯物であった。なんでも文覚は、この檀林寺で祈っていたところ、天啓を得て出家したらしい。私が博物館もといお堂から出ようとすると、さっきの解説用ロボットはまだいた。私は何も言わずに通り過ぎたが、そのときの私の顔は、相当に怪訝だったはずだ。多くの違和感と疑問を感じながら、私は檀林寺を後にした。

さて、割引券を買ったので、大覚寺に行ったのだが、大覚寺について記すことはあまりない。強いて言えば、受付が寺とは思えないほど事務的だったり、受付嬢が二部式の着物を着ていたり、入ってすぐに源氏物語の人形が置いてあったり、お土産を売る売店があったり、建物の中にプラズマディスプレイが置いてあって映像を流していたり、マネキンが置いてあったり、といったところだろうか。

さて、大覚寺を見ている間に気になった、東側の池に行ってみることにした。大沢池という名前で、なかなか悪くない池であった。しばらく池の周りを散歩し、なこその滝を見て帰った。ここは、白洲正子が著書で述べている。悪くない場所だ。

さて、駅の方へ向かって歩いてると、バス停を発見した。見ると、京都駅まで行くらしい。帰りはバスで帰ることにした。

帰ってから檀林寺について調べると、やはりどうも、ろくな寺ではなさそうだ。

昔のFlash文化は面白かった

昔、といってもそれほど昔ではないが、Flashによるアニメーションがもてはやされた時代があった。ほんの四五年の話だ。例えば以下のFlashなどだ(これはキャプチャしたものだが。)

http://zoome.jp/bookworm/diary/25/

http://zoome.jp/bookworm/diary/25/

2008-10-17

サウスパーク 乳ガンファイト

South Park Breast Cancer Show Ever

Cartman : My school life is over 'cause now all the guys don't think I'm cooool.
Stan : Dude, We've never thought you are cool.
Cartman : That's not true. You are just saying that.
Kyle : No really. We've always thought you're suck.
Jimmy : Yeah. Nothing changed. Our opinion have you can't possibly go any lower.
Cartman : You are just saying that to make me better.
Crag : No it's true. we always hated you.
Butters : Yeah.

救いようがない。さらにこの後のカートマンの言動も救いようがない。カートマンがカートマンらしく活躍する話だ。

2008-10-16

2008年10月の雑記

仕事がまったく見つからない。この業界はいい加減に諦めるべきだと思ってはいるが、ついつい求人に応募してしまう。そして面接に行き、ここに入社するとあんな感じの人間になるのかと悲観するを得るのみ。やんぬる哉。

どこかに面白い仕事はないものか。

源平盛衰記は、ようやく木曽殿が落ちていくところまで読み進めた。やはり木曾はもっと評価されるべきであると信ずる。木曾が田舎者で意固地だったわけではなく、単に京にいる公卿達が慣習に凝り固まった救いようのないアホだったというだけの話だ。

救いようのないアホといえば、山門の大衆も同じだ。いまでもそうだが。というのも、今比叡山に行くと、比叡山の歴史などが色々解説してあるのだが、時の朝廷に対して神輿を振り奉ったとか、あまりにも横暴なため信長の焼き討ちにあったことなどは、まったく触れていない。また、比叡山出身の有名人が列挙してあるのだが、そこに掲げてあるのは、皆比叡山に見切りをつけて、ふもとに下って何かを始めた者達だ。比叡山にいて何事かを為したものはいないわけだ。

さて、いよいよ源平盛衰記も、残すところ四分の一ほど。義経の悪行が楽しみだ。

Flash Player 10のGPU支援を動画以外に試してみた

いくつかの有名なFlashのアニメーションに、いわゆる<param name="wmode" value="direct" />を試してみたところ、思いのほか良い描画になった。ただし、私はハイエンドとはいかないまでも、比較的マシなGPUを使っているのであって、貧弱なGPUを使っているPCでは、あるいは遅くなるのかもしれない。

Flash Player 10でnanaca crashが遊べない問題について

Flash Playerのバージョンの確認が、次のようなActionScriptのコードであった。

   player = Number(/:$version.substr(4, 1));
   playererror = isNaN(player) || player < 7;
   if (playererror) {
    load_mc._visible = false;
   }

メジャーバージョンが9から10になったので、このコードでは、メジャーバージョンを1だと判定してしまう。人間性すら疑われるコードだ。

追記: FlashのバージョンチェックはJavaScriptで行ったほうが楽だと思うのだけれど。もしFlashの互換性自体がなくなれば、いくらActionScript内でバージョンチェックをしても意味がない。

Flash Player 10リリース

Flash Player 10がリリースされた。とうとうGPUによる描画がサポートされている。

GPUによる描画をするには、wmodeをdirectに設定する必要がある。実際に試してみると、どうもFlashの右クリックのコンテキストメニューの、設定ダイアログが無効になるようだ。FrapsでFPSがオーバーレイ表示されるので、たしかにDirect3Dを描画に使っているらしい。実際に動画を再生させて見ると、60fpsの動画のコマ落ちがなくなった。まあ、悪くない。

なお、以下の動画は、Flash Player 10以降でなければ見れないようになっている。

kaourantin.net: What does GPU acceleration mean?

2008-10-15

スーパードンキーコング 吹雪の谷 エンコードテスト

最高にエンコードが難しい面

ジョン・クリーズ、サラ・ペイリンについて語る

やはりジョンは笑い方が素晴らしい。

2008-10-14

ref-qualifierがよく分からない

ふと気がついたが、non-staticなメンバ関数につけるref-qualifierの何たるかを理解していなかった。ドラフトを読んでみたが、overload resolutionにおける、implicit object parameterがlvalueかrvalue referenceかということでいいのだろうか。(13.3.1 Candidate functions and argument lists)

次回のサウスパーク予告

聞き起こしのスクリプト。多分あってる。

Mrs. Testaburger : Wendy, Have you been bullying kids at school?
Wendy : What? No!
Mrs. Testaburger : Well, Do you want to explain my this little boy's mother had to come talk to us.
Cartman : sob
Wendy : Oh! You didn't.
Mr. Testaburger : Did you tell this little boy you are going to beat him up?
Wendy : You don't understand! He said horrible things!
Cartman : The thing is I... I tottaly said I was sorry. The thing is, Wendy, I really think you are awesome. and I know I'm a just nerdy little weakiling to you. But I want to be your friend because I don't have that many friends thats... sob

2008-10-13

スーパードンキーコング2 1,2面

http://zoome.jp/bookworm/diary/23

2008-10-12

has_xxxの実装方法

BOOST_MPL_HAS_XXX_TRAIT_DEF

これは数ある変態的なBoostのメタ関数の中でも、実に変わったもので、次のように使う。

BOOST_MPL_HAS_XXX_TRAIT_DEF(xxx)

struct a { int xxx ; } ;
struct b { void xxx() ; } ;
struct c { typedef int xxx ; } ;
struct d { struct xxx ; } ;

BOOST_STATIC_ASSERT(( has_xxx<a>::value )) ;// Error
BOOST_STATIC_ASSERT(( has_xxx<b>::value )) ;// Error
BOOST_STATIC_ASSERT(( has_xxx<c>::value )) ;// OK
BOOST_STATIC_ASSERT(( has_xxx<d>::value )) ;// OK

実に不思議な挙動をする。メタ関数has_xxxは、引数の型がxxxというnested type nameを持っているかどうかの判断する。一体どうやって実装しているのであろうか。

実は、それほど難しい実装でもない。

#include <boost/mpl/bool.hpp>


namespace hito {

namespace detail {


template< typename T >
class has_xxx_impl {

    typedef char yes_type ;
    typedef struct { char c[8]; } no_type ;

    template< typename U >
    static yes_type check( U *, typename U::xxx * = NULL ) ;


    template< typename U >
    static no_type check(...) ;
public:
    static bool const value = sizeof( check<T>( NULL ) ) == sizeof( yes_type ) ;
} ;

}// namespace detail

template<typename T>
struct has_xxx : boost::mpl::bool_< detail::has_xxx_impl<T>::value > {};

}// namespace hito

実装はこれだけだ。ようするにSFINAEとオーバーロードを利用している。これは規格的に正しい。こんな実装もある。

#include <boost/mpl/bool.hpp>


namespace hito {

namespace detail {


template < typename T > struct sfinae_helper { typedef void type ; } ;

template < typename T, typename U = void >
struct has_xxx_impl
{
    static bool const value = false ;
} ;

template< typename T>
struct has_xxx_impl< T, typename sfinae_helper< typename T::xxx >::type >
{
    static bool const value = true ;
} ;

}// namespace detail

template<typename T>
struct has_xxx : boost::mpl::bool_< detail::has_xxx_impl<T>::value > {};

}// namespace hito

これはオーバーロードを使わないテクニックだ。これはVC7.1のためのworkaroundらしい。

さて、これはネストされたある型名の有無を判断するメタ関数だ。具体的な型についてはどうでもいい。もちろん、必要とあらば具体的な型でのみtrueを返す実装もできるが、それは話の枝葉だ。もし、型名ではなく、メンバ変数やメンバ関数そのものの有無を判断したい場合はどうすればいいのだろうか。つまり、上の使用例でいう、a,bのクラスがコンパイルエラーにならないようなメタ関数を実装するにはどうすればいいのだろうか。それには、次のような二つの実装が考えられる。

//オーバーロードあり
template< typename T >
class has_xxx_impl {

    typedef char yes_type ;
    typedef struct { char c[8]; } no_type ;

    template< typename U >
    static yes_type check( U *, int U::* = &T::xxx ) ;


    template< typename U >
    static no_type check(...) ;
public:
    static const bool value = sizeof( check<T>( NULL ) ) == sizeof( yes_type ) ;
} ;

//オーバーロードなし
template < typename T, int T::* > struct sfinae_helper { typedef void type ; } ;

template < typename T, typename U = void >
struct has_xxx_impl
{
    static bool const value = false ;
} ;

template< typename T>
struct has_xxx_impl< T, typename sfinae_helper< T, &T::xxx >::type >
{
    static bool const value = true ;
} ;

面白いことに、どちらもVC9では、どちらも期待通りの動作をする。すなわち、aのstatic_assertが通る。bのstatic_assertを通すには、シグネチャをvoid (T::*)(void) とすればよい。

規格ではどうなるのかよく分からない。

ちなみに、C++0xでは、decltypeとSFINAEとOverload Resolutionで、同じことができる。

滝口入道

夏の盛り購入せし滝口入道を、読み侍り畢。二月前は浅学無知にして、所詮は馬琴のひとつ下の世代と一笑し、恬として省みることのなきに、今日源平盛衰記を読むを得て、漸く古典の蔗を嚼む境に入るに、高山樗牛の非凡な才能、いまさら語るも愚かなり。

しかもこれを書いたときは廿三歳だったというのだから驚きだ。よく平家物語を読んでいたのだろう。

2008-10-10

眠れる森の美女をブルーレイで見るために、120ページ以上ものEULAを読解する子供たち

Kids need to agree to 120+ pages of EULAs in order to watch BluRay Sleeping Beauty - Boing Boing

Boing Boingガジェットでジョンが言及していることだが、眠れる森の美女をブルーレイで再生するためには、実に120ページ以上もの法的な駄文、すなわちEULAに同意しなければならないらしい。

ディズニーのEULAに対する執念は、ほとんど病的なほどで、私などは、ディズニーから頼まれた講演を断ったことがあるぐらいだ。というのも、あの法務部の奴らが、「今後ともディズニーという単語を許可なく文面において使用しない」というような事を書いた契約書にサインさせようとしたからだ。ディズニーワールドのたのしいたのしい乗り物には、実に馬鹿げたEULAを載せた看板があった。その内容というのは、「ディズニーに関するジョークを言った者は、その責任を負う。すなわちそのジョークに関するあらゆる著作権法の問題でディズニーに与えた損害を弁償すべし」ということへの同意だ。この看板自体はジョークではないらしい。どうも、その看板をくぐると、同意したことになるらしい。つまりディズニーによれば、小学生は法的に契約を結ぶことができ(法的に不可能)、しかも看板の下に立つだけで同意が成立し(法的に不可能)、世にあるジョークというものはすべて元ネタが存在しない(常識的に不可能)、らしい。

親は、子供達がディズニーを見て、王女様にあこがれたりなどの、空想を信じる事を恐れているのかもしれない。しかし、子供達に眠れる森の美女をブルーレイで観させた日には、何をするにあたっても、まず数百ページにも及ぶ駄文に同意しなければならないと信じてしまうに違いないが、いいのだろうか。おちおち自宅パーティすら開けないだろう。

英語と日本語で文節をきっちりあわせて翻訳するのは不可能だ。

鉛筆の取り扱い説明書がネタに思えなくなってきた。

HTML5とCSS3はまだか

さっさとwhite-space-collapseとtext-wrapをよこしやがれ。CSS2.1のwhite-spaceプロパティなんざ使い物にならねーんだよ。

あと各UAはruby要素を絶対にサポートしろ。いいな、絶対だぞ。あとCSS3にwriting-modeは絶対に入れろ。日本語は縦書きの言語なんだよ。

Order and Consistency

今回のドラフトで、29.1のOrder and Consistencyの冒頭部分がだいぶ変わっている。n2783 Collected Issues with Atomicsによる変更だ。

個人的には、以前の方が分かりやすかった気がしないでもないが。以前はmemory_orderのメンバそれぞれに対して、別々に定義がなされていたのだけれど、今回はなんだか分かりにくい記述だ。memory_order_acq_relはloadとstoreの両方に出てきているから、両方を意味するとか、memory_order_seq_cstは別にパラグラフをを作って詳しく記述している。また、memory_order_consumeの記述があっさりしすぎていて戸惑った。29.1で言及している、consume operationは、1.10.9に記述されている。以前は29.1でも簡単な記述があったのだが、今回からは、consume operationであることぐらいしか書かれていない。

さすがはイタリア

水道からワイン 粋な?配管ミスに住民大喜び(社会) ― スポニチ Sponichi Annex ニュース

 イタリアの町、マリノのいくつかの民家の蛇口から水ではなく白ワインが出てきたため、住民はびっくり。「聖なる奇跡だ」との声も上がった。「甘いにおいですぐに気付いたけど、ワインでモップ掛けするところだったわ」と、ある女性。

 町長によると、毎年恒例のお祭りの際に町の噴水からワインを出そうとしたが、配管ミスで民家で出てしまったのだという。町長は「みな喜んでいるし、祭りも楽しみにしている」と失態にはお構いなしだ。(UPI=共同)

傳聞、愛媛県にはポンジュースの出る蛇口あり、何となれば、そこにてはオレンジジュースは恒河沙よりも多いとこそ、承ったり。かるがゆえに、ついには上水道をしてポンジュースを流すことを得たり。

2008-10-09

サウスパーク再開

The China Probrem

サウスパークがようやく再開された。

コンセプトの名前付き要求

n2581 Named Requirements for C++0X Concepts
n2780 Named Requirements for C++0X Concepts, version 2

私は、コンセプトを使うのは簡単であると、一度も言ったことがない。寝言で言ったかもしれないが、それは所詮寝言だ。たとえば、STLのsortに使えるイテレータを持ったrangeを扱う場合には、以下のように記述する必要がある。

template < typename T >
    requires std::Range< T >
       && std::RandomAccessIterator< std::Range< T >::iterator >
       && std::ShuffleIterator< std::Range< T >::iterator >
       && std::LessThanComparable< std::Range< T >::iterator::value_type >
void f(T & r)
{
    std::sort( begin(r), end(r) ) ;
}

もちろん、すべてをrequires-clauseに記述するのではなく、constrained-template-parameter(テンプレート引数のtypename/classの場所)にRangeを指定すれば、この重複を省くことができる。しかし、constrained-template-parameterで指定できるコンセプトはひとつだけなので、もっと複雑になると、こうなる。

template<InputIterator Iter1, InputIterator Iter2, typename T>
    requires Multiplicable< Iter1::reference
                , Iter2::reference
               >
    && Addable< T
         , Multiplicable< Iter1::reference
                 , Iter2::reference
                 >::result_type
         >
    && Assignable< T
           , Addable< T
               , Multiplicable< Iter1::reference
                       , Iter2::reference
                       >::result_type
               >::result_type
           >
T inner_product( Iter1 first1, Iter1 last1, Iter2 first2, T init );

言うまでもなく、このコードは冗長にも程がある。そこで、named requirementが提案され、このたびドラフト規格に入った。これは文字通り名前をつける機能で、以下のようになる。

template<InputIterator Iter1, InputIterator Iter2, typename T>
    requires mult = Multiplicable<Iter1::reference, Iter2:reference>
       && add = Addable<T, mult::result_type>
       && Assignable<T, add::result_type>
T inner_product( Iter1 first1, Iter1 last1, Iter2 first2, T init );

とても分かりやすい。

これはrequires-clauseに対して適用されるので、もちろん、associated-requirements(コンセプトの中のrequires)にも適用される。

auto concept BinaryIsoFunction< typename Op, typename Elem > {
    requires std::Callable<Op, Elem, Elem>;
    requires std::Convertible< std::Callable<Op, Elem, Elem>::result_type, Elem>;
    typename result_type = std::Callable<Op, Elem, Elem>::result_type;
};

また、refinement clausesの(いわばコンセプトの継承とでも言うべき機能)、refinement-specifier でも使用できる。つまり、

concept Refining< typename T, typename U >
    : Complicated<T,U>
{
    requires std::HasPlus< Complicated<T,U>::result_type >;
} ;

ではなく、

concept Refining< typename T, typename U >
    : c = Complicated<T,U>
{
    requires std::HasPlus< c::result_type >;
} ;

とできる。

史上最高に糞なソフトウェア

インストール時に、VistaのUACをオフにするソフトウェアが存在する。といっても、いわゆるmalwareやspywareではない。今使っているマザーボードのベンダー、MSIのドライバの自動アップデートのソフトウェアだ。今まで見た中で最高のcrapwareだった。

Engineering Windows 7 : User Account Control

互換機能

C++の規格には、Compatibility featuresという項目がある。これは、歴史的な理由などで、互換性のために残されている機能のことだ。試みにC++03の互換機能を挙げてみると、

bool型に対するインクリメント演算子の使用(使うべきではない)
namespaceスコープ内でのオブジェクトの宣言にstaticキーワードを使用すること。(無名namespaceを使うべき)
Access declarations(11.3)の使用(using-declarationsを使うべき)
文字列リテラルの非constへの暗黙の変換(使うべきではない)
標準Cライブラリヘッダ、stdio.hなど(cstdioなどのヘッダを使うべき)
昔の iostream のメンバ、多すぎるので列挙しない(使うべきではない)
char * ストリーム、strstreamなど(使うべきではない)

staticキーワードとaccess declarationsと文字列リテラルに関しては、サンプルコードを示したほうがわかりやすいかもしれない。

// 別の翻訳単位から参照されたくない名前空間内の変数
namespace hito
{
    // これは互換機能、使うべきではない
    static int x ;
    // こうすべき
    namespace { int y ; }
}

class base
{
public :
    int x ;
    int y ;
} ;

class derived : private base
{
public :
    // base::xのみpublicでアクセス可能に
    base::x ; // これは互換機能、使うべきではない
    using base::x ; // こうすべき
} ;

int main()
{
    derived d ;
    d.x = 0 ; // OK
    d.y = 0 ; // Error
}

int main()
{
    // こうすべき
    char const * char_const_ptr = "Would you like to give up being a mason?" ;
    
    // 互換機能、使うべきではない。
    char * char_non_const_ptr = "No? That's wrong! Wrong! Wrong! Wrong! No! No! No! Bad! Bad!" ;
}

C++0xでは、この互換機能が増える。

まずは、binder。これはbind1stやbind2ndなどといったfunctionalヘッダで定義されている関数とクラスである。知らなくても別に恥ではない。誰もこんな糞なライブラリなど使っていないからだ。変わりに、新しく導入されたbindを使うべきだ。これはBoostのbindとよく似ていて、使い方も同じだ。

次に、auto_ptr。これは中途半端な仕様なので使うべきではない。もっと意味がはっきりとした、unique_ptrとsmart_ptrを使うべきだ。前者はコピーができず、後者は参照カウンタを備えている。

最後に、(これが本当に云いたかったのだが)、Iterator primitivesがある。これは、端的に言ってしまうと、iterator_traitsそのものをdeprecatedにしている。コンセプトがあれば、こんな使いづらいメタ関数は必要ない。

とはいっても、iterator_traitsを互換機能に落としてしまうのは、だいぶ英断だと思う。

C++0xのCD公開

http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/#mailing2008-10

N2798 Working Draft, Standard for Programming Language C++
N2799 Editor's Report

今回言語に入ったペーパーの一覧。ライブラリなどはEditor's Reportを参照されたし。

N2757, Expedited core issues handling (revision 2): 220, 592, 606, 614, 624, 681, 683, 688
N2756, Non-static data member initializers
N2764, Forward declaration of enumerations (revision 3)
N2762, Not so trivial issues with trivial
N2752, Proposed text for bidirectional fences
N2765, User-defined literals (aka Extensible literals) (revision 5)
N2761, Towards support of attributes in C++ (revision 6)
N2782, C++ data-dependency ordering: function annotation
N2773, Proposed wording for concepts (revision 9)
N2780, Named requirements for C++0x concepts, version 2
N2778, Wording for range-based for-loop (revision 3)

まずコンセプトが入った。これは大きい。Unified Function Syntaxは、今回入らなかった。しかしペーパーが更新されている。まあ、まずC++0xには入るだろうと思う。N2763 Unified Function Syntaxがそれだ。named lambdaとblock-local functionは取り除かれている。これらはC++0xには期待できないが、将来は入るかもしれない。

2008-10-08

B-CAS廃止という希望的観測が出回っているけれど

事の発端はこの飛ばし記事、「第5権力」としてのウェブ

しかし、池田信夫は、この業界では有名な山師であるのはご存知のとおりだし、実際の委員会では、明確に廃止などとは言っていない。

池田 信夫 教授の記事に関して

正確な言葉というのは、「B-CAS に関する技術と契約の観点から考えられる対応策を考えていこうということ」程度の事らしい。

今に始まった話ではない。「見直しが必要だという提言もある」、だとか「見直しを含めて検討していく方向で各関係者間で調整を行っていきたい次第である」だとか、総じて、いかにも日本語らしい言葉しか出ていないのだろう。

だいたい、インタレのMPEG2なんて使っている日本のテレビなんどに、誰か期待しているというのか。

2008-10-07

Blue Labelを飲んだこと

某店でジョニーウォーカーのブルーラベルを飲んだ。噂には聞いていたが、飲むのは初めてだった。まあ、悪くない味だった。あるいは、飲みやすい味とでも言うべきか。よく言われることに、良い酒は水みたいな酒であるということがあるが、その言の如き酒であった。それなら最初から水を飲めばいいのではないかという話は抜きにして。

まあ、あそこは悪くない店だ。

仕事が見つからない

いっそのこと単純労働のほうがいいのかもと、配電盤製造の求人の面接に行ってみたが、どうも人間として何か大切なものをなくしてしまいそうな職場であった。いわゆるライン工ではないのだが、働いている人間に表情というものがない。

とりあえず不思議な求人の例

キャッチコピー:どん底の中で、前向きに行動できること。それができる人は必ず成長する

以下、代表取締役の人生を振り返る文章が続く。要約すると、16歳、中卒で喫茶店で働き、定時制高校に通って、運送業などをする。24歳のときに、フィリピンで働きながら一年過ごす。どうも文章に問題がありよくわからないが、このたったの一年の間に、家賃36万円のコンドミニアムに住む環境から、家賃2500円のウィークリーマンションまで、上がり下がりの激しい生活を送ったらしい。フ一年後に帰国して実家の京都が嫌だったので、東京に行って路上生活を始め、パチンコ店で働いて、その後渡米して仕事を探すが見つからない。ようやく雇ってもらえたが、まずトイレ清掃の仕事だった。トイレ清掃に精を出すうちに、次の仕事にも使ってもらえた。29歳、京都に帰り、大手不動産で働くが、独立してこの仕事を立ち上げた。

事業:賃貸マンションの企画・立案・ファイナンシャルプラン、マンションリフォーム業 マンスリーマンション事業。

さっぱりわからない。特に自伝の文章が読みづらい。上がり下がりの激しい人生を送ってきたと言いたいのかもしれないが、それにしてもフィリピンでの生活はたったの一年間である。物価の差を考えれば、バックパッカーとして過ごすこともできると思うのだが、現地で仕事をして、家賃36万の家から2500円の家まで転々としたというのが解せない。たったの一年間じゃないか、暮らしたというより旅をしたというべきではないか。アメリカではカイジの帝愛グループを地で行く仕事をしたらしい。あのパチンコ「沼」があるカジノの店長、一条の下りだ。あれはマンガの世界だと思っていたのだが。

そして何より、業種は不動産業なのだ。そんなどん底の人生を広告に出しても、この会社はこんな成り上がりが社長をやっているのかと思われるだけだ。むしろヤクザな仕事をしているのではないかと疑われる恐れもある。不動産業だけに、特にそんなイメージは避けたいはずだ。不思議だ。

営業職は求めてません!! ガツガツした営業は求めていません。ノルマを目指すのではなく、「お客様の喜びが自分の生きがい!!」と思える方を求めています。未経験の方、安心して応募ください。

仕事:ルームアドバイザー
お客様とお話をしながら、より良い物件をお客様にご紹介するお仕事です。

それを営業職と言わずしてなんという。まともな職場ならば、理不尽に厳しいノルマなどはパワハラにあたるので、求めないことはもとより当然である。してみれば、最初からそんな広告を出すのはおかしい。広告というものは、本当にそうであることではなく、そうと思わせたいことを言うものであるから、「安心して」などという文句がある広告に安心することはできない。もしそれ、真に安心できる職場であれば、そんな謳い文句は、はなから生じないはずだからである。

人間コンパイラの道はまだまだはてしなく遠い

ふと気がつくと、TR1のrefの実装がill-formedだった。やれやれ、Two Phase Lookupをまともにサポートしていないコンパイラを常用すべきではないのかもしれない。以下のコードはコンパイルエラーになるべき。

template < typename T >
struct base
{
    typedef T type ;
} ;

template < typename T >
struct derived : public base< T >
{
    typedef type result ;// ill-formed.
} ;

derivedクラスで使われているtypeは、Non-dependant nameなので、first phaseで名前解決されるべきである。然るに、typeという名前は見つからないのでコンパイルエラーになる。解決方法は、Dependant Nameにするしかない。

typedef typename base::type result ;
typedef typename derived::type result ;

まあそもそも、あのrefの実装は愚直すぎるのだけれど。関数呼び出し演算子のオーバーロードは、単純にreference_wrapperの中で、可能ならばVariadic Templatesを使って、実装しておけばいい。

2008-10-05

築地もいずれ

近年、卸売業者は減ってきている。生産元から末端の小売までに届くコストを減らせば、利益は減らさず価格を下げることができる。

直取取引反対で仲買人統一組織

全国で初めて漁業協同組合と大手スーパーが市場を通さない鮮魚の直接取引を始めた島根県で市場で働く仲買人が、統一組織を設立して直接取引の見直しを求めていくことになりました。

島根県では、漁業協同組合の「JFしまね」が、流通コストを省いて燃料などの高騰に苦しむ漁業者の収入を増やそうと、大手スーパー「イオン」との間で市場を通さずに月1回程度直接、鮮魚を取り引きする取り組みを今年8月に始めました。
これに対して島根県内の市場でセリに参加している仲買人からは、直接取引によって生活が脅かされかねないとして見直しを求める声があがっていました。 こうした中、県内のすべての仲買人400人余りが参加する統一組織「島根県魚商人組合連合会」が、4日設立されました。
連合会では、市場を運営しているJFしまねがセリを通さずに、特定の小売業者に対して、直接鮮魚を売れば、取り引きの公正さが損なわれるとして、直接取引の見直しを求めていくことにしています。また今後は、連合会として漁業者との意見交換の場を設け県内の鮮魚の取り引きのあり方についても考えていきたいとしています。

まあ、ここで仲買人の連中の言いたいこととしては、セリの仕組みがなくなれば、イオンなどの大手の購入口が強い立場にモノを言わせて、安く買い付けるかもしれないということなのだろう。

まあ、かといって今の新参お断りのセリは、なんだか資本主義とは思われない。

2008-10-03

2008年のイグノーベル賞

イグノーベル賞公式サイト

気になったものをいくつか。

要約:ひもは必ず絡まることの数学的証明

PHYSICS PRIZE. Dorian Raymer of the Ocean Observatories Initiative at Scripps Institution of Oceanography, USA, and Douglas Smith of the University of California, San Diego, USA, for proving mathematically that heaps of string or hair or almost anything else will inevitably tangle themselves up in knots.
REFERENCE: "Spontaneous Knotting of an Agitated String," Dorian M. Raymer and Douglas E. Smith, Proceedings of the National Academy of Sciences, vol. 104, no. 42, October 16, 2007, pp. 16432-7.

man, i always have wondered that! Could you please tell me how to prevent tangling them?

要約:変形菌により迷路を解くこと

COGNITIVE SCIENCE PRIZE. Toshiyuki Nakagaki of Hokkaido University, Japan, Hiroyasu Yamada of Nagoya, Japan, Ryo Kobayashi of Hiroshima University, Atsushi Tero of Presto JST, Akio Ishiguro of Tohoku University, and Ágotá Tóth of the University of Szeged, Hungary, for discovering that slime molds can solve puzzles.
REFERENCE: "Intelligence: Maze-Solving by an Amoeboid Organism," Toshiyuki Nakagaki, Hiroyasu Yamada, and Ágota Tóth, Nature, vol. 407, September 2000, p. 470.

Let them solve the Travelling salesman problem. btw have you ever eat slime mold in rogue?

要約:コカコーラには殺精子作用が、あること、あるいはないこと、の発見

CHEMISTRY PRIZE. Sharee A. Umpierre of the University of Puerto Rico, Joseph A. Hill of The Fertility Centers of New England (USA), Deborah J. Anderson of Boston University School of Medicine and Harvard Medical School (USA), for discovering that Coca-Cola is an effective spermicide, and to Chuang-Ye Hong of Taipei Medical University (Taiwan), C.C. Shieh, P. Wu, and B.N. Chiang (all of Taiwan) for discovering that it is not.
REFERENCE: "Effect of 'Coke' on Sperm Motility," Sharee A. Umpierre, Joseph A. Hill, and Deborah J. Anderson, New England Journal of Medicine, 1985, vol. 313, no. 21, p. 1351.
REFERENCE: "The Spermicidal Potency of Coca-Cola and Pepsi-Cola," C.Y. Hong, C.C. Shieh, P. Wu, and B.N. Chiang, Human Toxicology, vol. 6, no. 5, September 1987, pp. 395-6. [NOTE: THE JOURNAL LATER CHANGED ITS NAME. NOW CALLED "Human & experimental toxicology"]

I don't mind which is the correct because i won't need it anyway.

今回はちょっと微妙だな。やはり去年の冠詞 The がアルファベット順の索引に及ぼす弊害に比べると見劣りがする。

頼朝の活躍

平家物語を読むと、頼朝はろくに活躍をしていないように見える。何しろ、文覚が後白河上皇からの院宣を給わってから、すぐに富士川の戦いである。

しかし、実際には、結構なことをしているのである。手始めに兼隆判官を討ち取ったものの、なかなか手勢が集まらず、わずか三百余騎で石橋山に陣を構え、影親の兵に破れて敗走し、安房国に逃げ、そこで再挙兵している。

かなり活躍しているのに、平家物語では書かれていない。ただ、延慶本では書かれているらしいが。

ちなみに、京都のある古本屋に、長門本がある。あれも読み本系に分類される本なのだが、どうなのだろう。

今日学んだ言葉:大童とは、髪が乱れているみっともない様子の事。

椛と不思議の洞窟(仮)のプレイ動画

http://zoome.jp/bookworm/diary/22

http://zoome.jp/bookworm/diary/22

BACK SPACEより。

2008-10-02

まじかよ

例の気になっていたアレがC++0xのドラフトに入った模様。やれやれ、面白くなりそうだ。

追記:間違いで入ったとか言われて消されてる。どうなってるの。

自動アップデートは必要なのかな

Google Chromeは自動的に確実にアップデートさせるためのプログラムを常に待機させているわけだけど、やはりブラウザには強制的な自動アップデートが必要なのだろうか。

というのも、現在のFirefoxの最新バージョンは3.0.3である。これはパスワードのオートコンプリート回りの問題を直しただけだからいいとして、そのひとつ前の3.0.2は、セキュリティ上の問題を修正するアップデートでもある。これは一週間前に出ている。

アップデートを知るためには、最低一日かかるとして、九月25日から今日までの、このブログへのアクセスは2309件、そのうちの四割はFirefoxユーザである。この内訳を詳しく見てみると、17%のFirefoxユーザーは、いまだに3.0.1を使っている。5%は、いまだに、最初の3.0を使っている。Firefoxにも、起動中にアップデートをチェックする機能はあるのだが、この二割のユーザーは無効にしているのだろう。その結果、一週間も前の脆弱性を修正するアップデートをしていない。恐ろしいことだ。

なお、インストールしてもいないしする気もないQuickTimeやiTunesを、毎回デフォルトでインストールしようとするAppleはお呼びではない。

2008-10-01

仰天もののディスケット

The diskette that blew Trixter’s mind « Oldskooler Ramblings

IBM PCオタクの自分には、ゲームのコレクション(割れ的な意味を含む)という趣味がある。ある業者が、在庫処分をしたいので5ドルで引き取らないかという話を持ちかけてきた。実に嬉しい事だ。というのも、その在庫の中には、貴重なMartian Memorandumがあったからだ。帰宅して見てみると、まだその辺に転がってないゲームが二つあった。要するに、アングラなサイトに出回っていないヤツだ。まさに海賊の金塊を発見したに等しい宝であった。

ゲームは、Mental Blocks と Harrier7 というのものだった。Frightmare とあわせると、私は三つも宝を得たことになる。私はこの宝物を、正しく、コレクションしておくつもりだ。というのも、Mental Blocks にはいささか驚かされたからだ。Mental Blocks のマニュアルには、「C64とIBMの両方に、ラベル面を上にして、挿入してください」と注意書きがあった。私はこれを、単なるタイプミスだと考えた。何しろ当時、一枚のディスケットでC64/IBM両対応、あるいは、Apple/IBM両対応を謳っているものは、すべて両サイドを区別して使う、フリッピー(flippy)なディスクだったからだ。片面がIBM用で、もう片面がC64やApple用といった具合だ。ディスクのFAT12を覗いてみると、多くのセクターが、飛び飛びにBADとマークされていた。実に奇妙なディスクだ。

ディスクに対して DIR をかけると、使用可能領域が、たったの256KBしかなかった。普通は360KBのはずだ。トラックエディタは、両面のトラック0は、いずれもMFMデータではないと告げている。つまり、マニュアルは正しい。これは真の、混在フォーマット、混在アーキテクチャ、両面混在ディスクだったのだ。

このディスケットには、さすがに仰天した。

こんな物を見たのは初めてだった。IBMプログラム用のデータは、160KB以上もの容量を必要とすることが、DIRの結果から見て取れた。C64の1541ドライブは片面ドライブであり、IBMのは両面ドライブである。この事から、我々はこのディスケットが、どのように構築され、また何故、かくは構築せざるを得なかったかという理由を推測できる。

- IBM版のゲームは、160KB以上の容量を必要とする。つまり、片面以上の容量を必要とするということだ。おそらくは、4/2色のCGA/Hercファイルと、16色のEGA/Tandyファイルのためで、どちらか一方ならば160KBに収まるが、両方を入れることはできない。
- C64版のゲームは80KB程の容量を必要とする。何故ならば、その程度の容量がIBM側から読み込めないから。
- 発売元は、パッケージの手間やディスク価格の問題から、一枚のディスクに収めなければならなかった。
- CGAかEGAのどちらか一方だけを使いたくはなかった。そこで開発者の誰かが、手動でディスケット上にこのフォーマットを構築したに違いない。そのため、DOSはC64用のトラックにアクセスしないし、何らかの理由で、C64もディスクを読み込んでブート可能なのだ。

トラック0のセクター0は、DOSのブートセクターらしく、C64がどのようにブートしているのかは詳しくないが、ざっと調べてみたところ、C64ディスクは、インデックスをトラック18に置いているらしい。誰かC64のディスクの読み込みとブートに詳しい人がいたら、教えて欲しい。

一体誰がこのディスクフォーマットを手動で構築し、何を考えていたのか、それが知りたい。発売元からの要求を満たすため、何週間も試行錯誤した上での産物なのだろうか。あるいは、恐ろしく凄い奴で、わずか一日程で、これも仕事のうちさと気軽に構えて、事もなくやってのけたのか。素晴らしい逸品だ。

この道二十五年以上も続けていて、未だに驚きの発見があるとは。昔の割れ技術トップ20の中にも入っていないことだろう。

まさか混在フォーマットとは、世の中には凄い奴らがいるものだ。その昔、FDを独自フォーマットにして容量を稼ぐという技術があったと聞くが、これは知らなかった。