2008-03-31

Office 2007のUIに関する話

http://blogs.msdn.com/jensenh/archive/2008/03/12/the-story-of-the-ribbon.aspx

この動画は面白い。絶対に見るべき。UIの設計に関するとても面白い話だ。

Vistaのサムネイル機能が面白い

http://msdn2.microsoft.com/en-us/library/aa969541(VS.85).aspx

VistaのDWMを使ったサムネイル機能がとても面白い。試しに使ってみたが、DirectXで描画しているゲームのウインドウに対して使っても、ゲームも自分のウインドウも、一切フレーム落ちしない。しかも、ゲームのウインドウがバックグラウンドになっていても問題は無い。いい時代になったものだ。
気になる制限としては、ウインドウは、どちらもトップレベルでなければならないというものだ。ソースがトップレベルでなければならないというのは分かるが、サムネイルを描画される側も、トップレベルのウインドウでなければならないというのは、すこし貧弱だ。予想するに、DWMのサムネイルの実装は、ウインドウごとのサーフェイスに直接描画しているのかもしれない。
また、Flip3Dのようなことはできない。サムネイルはウインドウのある領域に、直接描画されるからだ。

使い方も、特にサンプルコードを示すまでもないほど簡単だ。まずDwmRegisterThumbnail関数で、ソースとなるウインドウとサムネイルを描画するウインドウを関連付ける。これがすんだならば、DwmUpdateThumbnailProperties関数を呼び出せばよい。この関数は、一回呼び出すだけでよい。次にもう一度呼び出すまで、サムネイルは描画され続ける。サムネイルが必要なくなったら、DwmUnregisterThumbnail関数を呼び出す。

2008-03-26

就職について 冒険すべきか

よくIT土方と言われるブラックの多い業界ではあるが、私の場合、それほど恐れることだろうか。
なにしろ、特に失うものもないのだから。嫁や子供はいない。親の実家に住んでいるので、急にクビになろうとも、ホームレスとなって、文字通り路頭に迷うことはない。だから、未経験可!!!職場は平均年齢25歳!!! なんて所に突撃しても、別に問題ないのではあるまいか。
しかしそうなると、どうしても抑えられない望みがある。C++がやりたい。Boostを当然のように使える仕事がしたい。

まあ、この業界に行くにしろ、あるいは別の業界に行って平和な人生を送るにしろ、さしあたってやるべきことがある。
とりあえず、フォーマルなスーツが一着いる。
また、面接にヒゲ面では行かれぬ。
バリカン刈りの頭で出向いても問題はなかろう。何、威圧感を与える。うーむ。

C++0xの最新ドラフトのlambda

N2550のlambdaはこんな風に使うらしい。間違っているかもしれない。

//値をすべて表示する。
template < typename T>
int f( T & t )
{
  std::for_each( t.begin(), t.end(), [](int x){ std::cout << x << std::endl ; } ) ;
}

//値の前に特定の文字列を表示する
template < typename T>
int f( T & t, std::string str)
{

  std::for_each( t.begin(), t.end(), [&](int x){ std::cout << str << x << std::endl ; } ) ;
}

int f()
{
  int x = 0 ;

  //これはコピー
  [=](){ x = 1 ; }() ;
  //ここで、xは0である。
  
  //これは参照
  [&](){ x = 1 ; }() ;
  //ここでxは1である。
  
  //ほかにも、個別に指定することもできる。
  
  //これはコピー
  [x](){ x = 1 ; }() ;
  
  //これは参照
  [&x](){ x = 1 ; }() ;
}

//戻り値について
int f()
{
  //戻り値の型は、return文の値の型になる。
  int x = [](){ return 0 ; }() ;
  
  //戻り値の型を明示することも可能
  //この場合、戻り値はfalse
  bool b = []() -> bool { return 0 ; }() ;
}

//邪悪なコード。コンパイルが通るのかどうか、誰か教えて
int f()
{
  //lambda-parameter-declarationは省略できる?
  []{}() ;
  
  //上記を省略せずに書いた場合
  [](){}() ;
}

//邪悪なコードその2。コンパイルが通るのかどうか、誰か教えて
//xのデフォルト引数は0になる
int f(int x = [](){ return 0 ; }() )
{ }

2008-03-25

仕事を見つけなければ

バイトを来週でやめることにした。私の性格上、どこかで区切りをつけなければ、だらだらと現状維持をしてしまう。
とりあえず、明日はフォーマルな服を買ってくることにする。

どのような仕事に就くべきかは、悩ましいところだ。去年の暮れ、技術系の仕事とは一切縁を切ろうと決断したものの、まだあきらめきれないものがある。どうするべきか。

とりあえず、考えてみた。
C++はやらない(Boostは標準ライブラリだよね? C++0xは使っていいよね?)
Javaは絶対にやらない(Javaを見るだけで吐き気がする)
DBは分からない(リレーショナル? リレーショナルって何?)

最近、XHTMLとCSSを学んでいるが、これが実に簡単だ。JavaScriptも悪くない。どこかに底辺の職場にもぐりこめないものか。

ああ、しかし、やはりこの業界からは離れていたほうが、幸せなのか。趣味にとどめておいたほうがいいのか。

Appleは糞

http://john.jubjubs.net/2008/03/21/apple-software-update/

おいおい、リンゴは大昔からこんな調子だぜ。だからおれはリンゴが嫌いなんだ。

夫婦そろって嘘つき

http://www.dailykos.com/storyonly/2008/3/22/161812/428/776/482309

ヒラリー「あたしぃ、スナイパーに狙われちゃったのぉ。だからぁ、ニガーのオバマなんかよりぃ、外交経験はぁ、豊富だと思うんだけどぉ」
嘘つきw

そりゃ嘘だろ。当時の報道を見てみろよ。お前がスナイプされたなら、絶対に報道があるはずだろうが。そんなニュースはまったくなかったぞ。お前がTuzla airportに降りたのは、後にも先にもこの動画のときだけだ。
嘘であることもけしからんが、嘘が何の効果をも発揮していない。おれはもっと危険な目にたくさんあってるが、危険な目にあったことで外交経験があがったとは思わん。

ちなみに、ヒラリーの英語はとても聞きやすい。裏でかなり厳しい発声練習をしているものと思われる。計算高いファーストレディだこと。今回のも計算の内かね。真っ赤な嘘だけど。メディアはこれが嘘だとは、報道しないだろうが。

2008-03-24

mp3プレイヤーがほしい

mp1, mp2, mp3, LC-AAC, HE-AAC, HEv2-AAC(mp4コンテナに入ったもの), ogg, flacに対応したフラッシュメモリのプレイヤーはないものか。
また、mp4コンテナの拡張子はmp4である。m4aではない。USB端子を内蔵していて、ケーブルを必要とせずにPCと接続でき、単なるストレージと認識されるので、ファイルを放り込んでおけば再生してくれる。
サイズはポケットに入るほどで、動画再生機能は必要ない。

そういうプレイヤーを探しているのだが、なぜか見当たらない。不思議だ。とくに、AACとoggをどちらもサポートしているプレイヤーがない。

2008-03-22

プロシュート兄貴がマンモーニな奴を殴る

http://www.excite.co.jp/News/odd/00081206006237.html

[米マサチューセッツ州グロスター 18日 AP] レストランからプロシュート(イタリア・パルマ特産の生ハム)を盗もうとした男が、経営者から生ハムの塊で殴られ、盗品を投げ捨てて逃走した。

レストラン『スコラズ・プレース』の経営者ジョー・スコラさんは先週水曜日、店内で不審な物音がするのに気がついた。すると男が腕にプロシュートの塊を抱えて逃げようとしていた。

スコラさんは男を追いかけ、生ハムを取り返そうとした。

男は重さ約2・1キロの冷凍プロシュートの塊を振り上げ、スコラさんを殴ろうとした。だが、スコラさんもプロシュートの塊を持っていた。男の顔をその生ハムの塊で殴りつけた。男は深手を負い、呆然となり、生ハムを手放して逃走した。

通報を受けた警察は店の近辺を捜索しているが、容疑者はまだ逮捕されていない。

ペッシ、だからお前はマンモーニって呼ばれるんだよォ~~~!

「ブッ殺す」……そんな言葉は使う必要がねーんだ。
なぜなら、オレや、オレたちの仲間は、
その言葉を頭の中に思い浮かべた時には!
実際に相手を殺っちまって、もうすでに終わってるからだッ!
だから使った事がねェーッ。

ペッシ、オマエもそうなるよなァ~~~、オレたちの仲間なら……
わかるか?オレの言ってる事……え?

『ブッ殺した』なら、使ってもいいッ!

2008-03-20

スーパーマリオRPG Rawest Forest

Flash PlayerとJavaScriptが必要だよ。

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

H.264でエンコードしてみた。今動画の問題点は、音声を再エンコードしてしまっているということだ。mp4の中のmp3も、一応Flash Playerはサポートしているという話なのだが。

They're streaming all episode of south park! YOU MUST WATCH!

http://www.southparkstudios.com/

Hey Dude! It's awesome. They made it. They put all of South Park episodes available on their site. Heaven! Sweet! Thanks god! Thank you so much.
Well actually there are not all South park videos. You have to wait one month to watch season 12 of South park episode. But It's acceptable. But i really disappointed that they did not let me see movie. I really like South park movie.

2008-03-19

Safariは糞

Safari 3.1がリリースされたとのことで、早速インストールしてみた。しかし、UIが気に食わない。メニュー部分が、灰色の背景に黒文字だ。アルファベットはともかく、複雑な漢字が見づらくてしょうがない。一体連中は何を考えているんだ。
フォントの描画は独自のものなのだろうか。Windowsの描画とはだいぶ違う。どうもこの描画は、あまり日本語に対して良いとは思えない。漢字がつぶれてしまって読めない。メイリオの描画はなかなかだ。しかし、どのフォントを選んでも、描画結果があまり変わらないような気がする。MS PGothicはビットマップフォントだったような気がするのだが。

ともかく、私がSafariをインストールした第一の理由は、Safariがvideo要素をサポートしていると聞いたからだ。早速確かめようと、HTML5のドラフト規格を読みながら、video要素を使ってみるが、なぜか動かない。しかたなく、video要素を使っているサンプルのサイトをググって見てみるが、やはり動かない。ふと気づく。「もしや、QuickTimeをインストールする必要があるのだろうか」と。
それだ。それに違いない。何てことだ。

はっきり言う。QuickTimeは糞だ。QuickTimeのH.264デコーダは貧弱すぎて使い物にならないし、HE-AACのデコードもできない。これではvideo要素をサポートしている意味がない。最高に圧縮したH.264とHE-AACを再生できないvideo要素に何の意味があるというのか。

ところで、なぜ簡単に、検索サイトを変更できないのだろうか。私は、googleで英語のページを検索したいのだ。かってに日本語のみにしてもらっては困る。IEは主要な検索サイトを網羅し、さらに汎用的に検索を追加する方法を提供している。Operaも然り。Firefoxも然り。Safariは検索を追加する手段を提供していないのだ。アホか? 脳みその髄までアホなのか?

ところで、このサイトはobject要素で毎日新聞のWebサイトをインラインフレームのように表示している。Safariはなぜか、毎日新聞のWebサイトのバナー広告を、事もあろうかこのブログの上に表示する。おい、object要素による描画は、object要素の内側で完結しているべきだろう。セキュリティ上、とても問題じゃないのか。何を考えているんだ。

結論、Safariは糞サンデーの上にのせたチェリーだ。

CDATAのテスト

CDATAを使うと、文字をエスケープする必要がなくなる。ソースコードを貼り付けるのに、都合がいい。

& ]]>

しかしながら、このブログはtext/htmlで提供されているので、色々と問題がある。
まず、IEでこのブログを見ることができる。しかしながら、上の例は、正しく描画されないだろう。IEは]]>まで描画してしまう。
Firefoxは、aapplication/xhtml+xmlで提供されている場合に限り、XHTML用のパーサを使う。つまり、FirefoxはこのブログのCDATAを正しく解釈しないだろう。実際、Firefoxでは何も描画されない。
Safariも、Firefoxと同じ対応をしているようだ。つまり、上の例は正しく表示されないだろう。IEと同じ描画をするようだ。
Operaは、MIMEがtext/htmlかapplication/xhtml+xmlかどうかは無視する。非常に現実的だ。だから私はOperaが好きなのだ。とにかくworkaroundがなければどうしようもない。

Bloggerよ、早く、application/xhtml+xmlにするのだ。おれはIEでブログが見られなくなってもかまわん。

2008-03-17

重力子

Horizon: What on Earth is Wrong With Gravity?

重力子について。

ところで、重力子について詳しく調べようと、グラヴィトンでググッたところ、怪しげな波動などの健康器具がトップにきた。

どうもそのサイトによると、グラヴィトンは画像から生成できるらしい。そして、その画像ファイルを収めたCD-Rを売っているようだ。その画像を印刷して燃やすと、周囲がグラヴィトン化されるらしい。また、米国特許庁の特許を取得しており、グラヴィトンと水からの伝言はすばらしい生命力を云々。

はて、重力子ってそういうものだったろうか もう一度動画を見直さねばならぬようだ。

仕事を見つけなければ

そろそろ、いい加減に仕事を見つけなければならぬ。とは言ったものの、はて何をして生きていくべきか。プログラマとしてどこかにもぐりこむのは無理だ。今現在、C++しかまともに知らないが、理想主義者なので、まず仕事にならない(C++0xまだかな)
もちろんそういう進んだ職場もないではないが、そういったところは、C++以外にも進んだ知識を要求されるので、まずバカな私はやっていけない。

とりあえず、いま考えているのは、Web屋だ。XHTMLとCSSが使えれば、とりあえず、どこかにもぐりこめるのではないかと思う。そして幸いなことに、XHTMLとCSSは、とても簡単だ。三日でほとんど覚えてしまった。あとはJavaScriptだ。

私は理想主義者なので、C++では仕事にならないが、それはXHTMLとCSSでもかわらない。IE6をサポートしなければ仕事にはならない。つまり、CSSのよだれが出そうな属性セレクタや子孫セレクタは使えないということだ。まあ、それは諦めがつく。まだ、XHTMLやCSSを学んで日が浅いので、それほど深い愛着もないからだ。しかし、それほど愛着もわかないのに、とりあえず習得できるというのは、なかなか簡単な規格だ。現実は混沌としているが。

ActionScriptだが、将来的にはobsolateなものになってしまうだろうと思われる。いずれ、ブラウザでネイティブにサポートされるだろう。Firefoxは、まさにTamarinを取り入れる予定であるし、他のブラウザも、希望的観測だが、追随するのではないかと思われる。

2008-03-16

YouTubeとDailyMotionのテスト

SWFObjectの2.0が出たことの記念に、思う存分使うことにする。

DailyMotionのテスト
Der Fuehrer's Face

YouTubeのテスト
ファルコン☆パーン(イ゛ェアアアアアMIX)

M.C.ドナルドはダンスに夢中なのか?最終鬼畜道化師ドナルド・M

どうもYouTubeはFLVファイルへのURLを頻繁に変更するようだ。dailymotionなら、公式のFlashもそれほど悪くないから、そもそも使う必要性を感じない。やれやれだ。

2008-03-15

星のカービィ

Flash Playerをインストールしてくださいです。

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

2008-03-10

ジャンクフードが食いたい

先週の後半から、ひどく体調を崩してしまった。頭がぼうっとして何もできず、腹が痛いという具合だ。季節の変わり目に体調を崩すことはよくあるが、いつもとどうも違う。木曜日は、少しだるい程度の認識であったので、早めに就寝することにした。

金曜日、一日中寝ていた。起き上がっても、頭がぼうっとして何もできないので、結局横になるしかない。しかし、横になると、腹が強烈に痛くなる。これは困った。しかたなく起き上がって、いすに座るのだが、5分ともたない。腹が痛く、どうも飯ものどを通りそうにない。まあ、一日寝ていれば、良くなるだろうと思っていた。それにしても寒い。三月だというのに

土曜日、一向に良くならないので、病院に行った。熱をはかると、なんと38.8度もある。道理で頭がぼうっとするわけだ。腹が痛いが便意はないということで盲腸を疑われ、レントゲンまで取られたが、幸い問題は無いということであった。ほとんどものが食べられないと言ったら、点滴を2時間も打たれた。今まで点滴というものを受けたことはなかったので知らなかったが、実に時間がかかる。
病院から帰ると、下痢になった。昨日にも増して寒い。

日曜日、薄いかゆをすすって生き延びた。夜になって、3時間ぐらい起きていたが、それ以外は寝ていたか、トイレにこもっていた。下痢がひどい。だいぶ周りが暖かくなったようだ。

今日、下痢は収まったし、だいぶ気分も良くなったが、いまだ粥をすすっている。ああ、ジャンクフードが食いたい。

2008-03-07

プライバシー権は認められず

2008/03/06-17:32 住基ネットは合憲=「プライバシー権侵害せず」-住民敗訴確定・最高裁初判断

まあ、当然だ。大体こいつらは、住民票コードの削除を要求しておきながら、サービスは受けさせろと、たわ言をほざいていた輩なのだから。おまえな、何のために住民票コードが、全国民でユニークな値なのか考えたことがあるのかと。

2008-03-06

秒速五センチメートル 予告版

Flash Playerをインストールしてください。

http://circle.zoome.jp/h264/media/49/

x264がgitに移行した

http://git.videolan.org/gitweb.cgi?p=x264.git;a=summary

問題は、いいWindowsのクライアントがないということだ。仕方がないから、しばらくtar玉でも使うことにする。
nasmでアセンブルできないと思ったら、どうも開発には、yasmを使っているらしい。yasmは賢いので、マルチパスアセンブラよりもいいコードを吐いてくれる。
しかし、VC9で、pthreadライブラリをスタティックリンクしたx264のビルドが出回ってないのは不思議だ。

IE8のベータが公開された。

Internet Explorer 8 Beta 1 for Developers Now Available
IE8 Beta Feedback
Why Isn't IE8 Passing Acid2?

さあ、面白くなってきた。しかし、この夏までにIE8ベータ公開と言っていたのに、だいぶ早いベータ公開だ。今年の終わりまでには、正式リリースされるのだろうか。
FireFox3のリリースも、今年の春頃だというし、Opera 8.5も、今年の夏頃には正式にリリースされるという。面白くなってきた。こうでなくては。

2008-03-05

GetOpenFileNameの謎

GetOpenFileNameというAPIは、ファイルを開くダイアログを表示して、ユーザに開くべきファイルを選択させる。このAPIが、非常に賢いというか、世話焼きというか。httpプロトコルのURLを指定しても、ファイルを開いてくれる。

どういうことか、簡単に説明してみよう。メモ帳(notepad.exe)を開き、メニューから、「開く」を選択しよう。そして、適当なhttpのURLを指定する。例えば、"http://cpplover.blogspot.com/"などだ。すこしウインドウの反応が止まり、いたって普通に、ファイルを開けるはずだ。

この機能、あらかじめファイルをキャッシュフォルダに落としておいて、そのファイルへのパスを返すことで実現されているのだが、なぜこういう機能があるのだろう。たしかに便利ではあるが……。

2008-03-04

第十一段

昨日のこと、東山郵便局に用ありて、下棟梁町といふ所を過ぎること侍りしに、心細く構えたる食物店あり。手打ちうどん・そばと看板を掲げたり。

かくてもあられけるよと、あわれに見るほどに、壁に多きなる張り紙のありしが、「フジテレビで紹介されました」と書かれたればこそ、すこしことさめて、この張り紙なからましかばと覚えしか。

そも、食物店の前が臭しは如何にと、怪しがりてよりてみるに、コーラの瓶の、幾年ほどは放り置かれたるが故なり。先の張り紙も、幾年か経たるに、色あせてぞみえける。にわかに冒険の心起こりて、「我、いまだ食物店に過ちすることあらず。ひとつ試してみん」とて、入りにけり。

中には年の頃四、五十ばかりなるをのこのありしが、店主なるべし。茶など出されたるが、ゆのみにひびが入りたりしこそ、我が期待に違わずとでも言うべけれ。味は敢えて我が筆を試みることなし。これぞ我が人生初の、食物店の過ちなるべし。

メモ

26 名前:オレオレ!オレだよ、名無しだよ!![] 投稿日:2008/01/17(木) 05:55:06 0
人が乗った馬は道路交通法上軽車両に分類される。
もちろん酒を飲んで馬に乗って走ったら飲酒運転になる。
免許制とかじゃないんで罰金とかはないのだが。
じゃあ今度は酒を飲んだ馬に乗った場合はどうなるのか?
ウチの親父によれば整備不良車扱いなんだと。
真相はわからんけどおまえら馬乗る時は気をつけろよ。

ニコニコ動画がH.264に対応か

nicoplayer.swfをデコンパイル

H.264に対応するようだ。いまさら遅い。遅すぎる。そもそも、ディスク容量が、課金してさえ2GBとは少なすぎる。もう二度とニコニコ動画に課金するつもりはない。そもそも、ニコニコ動画も、しばらく見ていなかった。

2008-03-03

兼好法師は自己主張の激しい皮肉屋

徒然草を読んでいると、兼好法師の人間性に疑問を感じる。いったいどういう人間だったのだろう。
仏教と老子の思想に感化されていることは理解できる。世捨て人だし、老子も読んでいたのだろう。それはいい。それはいいとして、それらの思想と相容れぬことをも書いているのだ。

例えば、第百十七段だ。

友とするにわろき者七つあり。ひとつには高くやんごとなき人、二つには若き人、三つには病なく身つよき人、四つには酒を好む人、五つには武く勇める兵、六つには虚言する人、七つには欲深き人。
よき友三つあり。一つには物くるる友、二つにはくすし、三つには智恵ある友。

友とするにわろき者はよいとして、よき友の例は、一体なんだろう。まず一番に、気前のいい友を上げている。次に医者だ。最後に仏教とは、お前本当に仏教信じていたのかと言いたくなる。

ほかにも、有名な第百三十七段、「花はさかりに」で有名なあの文章だ。「春が来たことも気づかないほど引きこもっているのも、いいよね」お前単に、人とは違ったことを言い、注目を浴びたかったんじゃないかと。ある程度抽象的なことを書いておけば、人はいいように、勝手に解釈してくれるものだ。

第百五十二段も、他人の話の伝聞ではあるのだが、実に皮肉的だ。

西大寺静然上人、腰かがまり、眉白く、誠に徳たけたる有様にて、内裏へ参られたりけるを、西園寺の内大臣殿、「あな、たふとのけしきや」とて信仰の気色有ければ、資朝卿これを見て、「年のよりたるに候」と申されけり。
後日に、むく犬のあさましく老いさらぼひて、毛はげたるを引かせて「この気色たふとく見えて候」とて、内府へ参らせられたりけるとぞ。

兼好法師がこの話を入れた理由としては、やはり何かしら、共感するところがあったのだろう。やはり皮肉好きなんじゃないか。

2008-03-02

Bloggerで修正できない部分

このブログのテンプレートを修正して、だいぶvalidなXHTMLに近づけた。何しろ最初はひどかった。まず一つ一つの投稿をp要素で勝手に囲うし、id属性が重複している部分まであったのだ。修正した甲斐があって、だいぶエラーが少なくなった。

修正できない所もいくつかある。
まず、sytle要素の中身を、コメント、<!---->で囲むことだ。これは確かに、validなXHTMLではあるが、意図した結果は生み出さない。というのも、XMLでは、コメントの内側は、パースする段階で取り除かれるからだ。つまり、スタイルシートはコメントとみなされてしまい、適用されない。正しくは、CDATAを使う。これはBlogger側で生成しているので、テンプレートでは修正できない。
あるid属性を、動的に生成しているようだが、この値が、数字から始まっている。しかし、id属性の値は文字から始めなければならない。これはテンプレートで変更できない。
ほかにも、「&」、つまりアンパサンドをそのまま出力している。これは文字実体、「&amp;」を使わなければならない。こうして記述している時にも、&amp;amp;と記述している。また、これを記述するにも、&amp;amp;amp;と、記述し、さらにまたこれを――以下無限ループ。
そしてなによりも、XHTMLなのにもかかわらず、MIMEのcontent typeが、text/htmlだということだ。最初から用意されているテンプレートもXHTML 1.0 Transitional(application/xhtml+xml推奨、text/htmlはMAY)を使っているにもかかわらず、サーバはtext/htmlを返す。もちろん、納得できる理由もある。IEがapplication/xhtml+xmlに対応していないからだ。Bloggerはもちろん、私のような理想主義者ではないので、現状の主要なブラウザに対応しなければならない。IEで見れないブログに何の意味があるというのか。

ちなみに、IEがいまだにapplication/xhtml+xmlに対応していないのにも、理由がある。IEはまだ、XHTMLに完全に対応していないからだ。
IEは後方互換性の高い、奇妙なHTMLを、なんとしてでも解釈するパーサを使っている。今の状態で、XHTML、すなわちapplication/xhtml+xmlを公式に受け入れてしまうと、後にひどい互換性の問題を引き起こすからだ。
IEの普及度は高い。いくらプログラマが、Firefoxのシェアが4割に達したと主張しても、それはプログラマの間だけの話だ。現実の一般ピーポーは、相変わらずIEを使っている。そのIEが、何でも許容するパーサを持って、XHTML対応してしまったのでは、文法違反のXHTMLが世にはびこることになる。MSの、IEチームは、XHTMLに、長期的な意味で成功してもらいたいがために、いまだにapplication/xhtml+xmlに対応していないらしい。
IE7の何を改善させたかというと、CSSを規格準拠させることに、全力を注いだらしい。CSS2.0には、だいぶ対応したらしいが、CSS2.1の、white-spaceプロパティのpre-wrapに、早く対応してほしいものだ。
参考:The <?xml> prolog, strict mode, and XHTML in IE

2008-03-01

Inside IntelliSense

IntelliSense History, Part 1
IntelliSense, Part 2 (The Future)

いつか紹介しようと思っていたのだが、続編が出たのでここで紹介することにする。Visual StdioのC++のインテリセンスの実装についての詳しい話が、開発チームのブログで語られている。

まず、VC9までは、NCBファイルを使っている。これはかなり古くからあるもので、色々と問題も多い。ファイルの内容はすべてメモリに入れておかなければならないし。変更があるたびに、大部分を参照しなければならない。

そこで、VC10からは、SQL Server Compactを使うことにしたらしい。これは元々、Windows CE向けに作られたもので、ひとつのファイルを使用し、プロセスに組み込んで使う。
また、パーサも新しくなり、ヘッダとファイルを、別にして取り扱うので、共通のヘッダファイルを書き換えただけで、インテリセンスが固まるということもなくなるらしい。ただし、正確さという点では、劣る。このため、現在開いているファイルに対しては、フルパースを行うようだ。

さらに長期的な構想も語られている。SQL Serverそのものを使うことによって、もっと面白いことができたりなど。

Visual Web Developerのちょっとした疑問点

XHTMLの中に、スタイルシートやJavaScriptを埋め込みたい場合、style要素やscript要素を使う。不等号記号やアンパサンドを使いたい場合は、CDATAを使う。

<style type="text/css" >
<![[CDATA
/* ここにスタイルシートを記述する */
]]>
</style>

<script type="text/javascript" >
<![[CDATA
/* ここにJavaScriptを記述する */
]]>
</script>

ところが、どうしたことか、Visual Web Developerは、XHTML1.1でValidateできるにもかかわらず、このCDATAの使い方に文句をつける。不思議だ。まあしかし、ファイルを作成するダイアログでは、HTMLとなっている。よろしい、それではXMLで作成すればどうか。
XMLファイルをひとつ作成し、編集中のXHTMLのコードを貼り付けてみた。しばらく応答が止まった。ややあって操作できるようになると、はたしてXMLとして扱う際には、CDATAの使用に関して文句は言わなかった。
しかし、XMLファイルの編集は、XHTMLファイルの編集とは異なる。XHTMLの規格については何も知らないのだから、インテリセンスも働かない、と思っていた。これがどうしたことか、XHTMLの要素は補完できるし、規格で包括できない要素は、インテリセンスに現れない。これはどうしたことかと思ったが、すぐに理解した。XHTMLで記述していたので、当然document type declarationを含んでいる。内容は、もちろんHTML1.1の、例の奴だ。どうやらVisual Web DeveloperのXMLエディタは、糞真面目にXHTML1.1のbackup system identifierを読み込んで、細かく分かれているモジュールまですべて読み、XMLファイルのvalidationを行っているらしい。しかも、インテリセンスで、DTDによって定義された要素まで補完する。恐ろしく富豪的だ。

まあともかく、XMLファイルとして編集するのも面倒だ。例えばtype属性の中身の補完機能は働かないし、style要素やscript要素の中をCSSやJavaScriptとしてインテリセンスが働くこともない。とりあえずのworkaroundとして、次のようにした。

<style type="text/css" >
/* <![[CDATA */
/* ここにスタイルシートを記述する */
/* ]]> */
</style>

<script type="text/javascript" >
//<![[CDATA
/* ここにJavaScriptを記述する */
//]]>
</script>

一応問題は無いようだが。