初めてサマリーを訪れたときにいたメイマーさんに再会できた。二回目以降全く姿を見ていなかったが、ペイズさんの家に間借りしていた。パキスタンに来るときに息子を亡くしてしまい、生きる気力をなくしていたが、なんとか元気にやっていてくれて安心した。
長老達を集めUNHCRのことを話す。何度も怒鳴ったり、握手したりしたが、最終的に僕たちの行動に感謝してくれた。うまくまとまる。シールモハマッドと話すとき涙をこらえるのが精一杯だった。サマリーにいてくれるからいつでも会いに来ることができるが、ラッティーフアバードに行ってしまったら、ちょっと顔を見に行くだけでも許可が必要になってしまう。夕方カンダハルの友人ハリックがきてくれた。
本当は怖い・・今が一番危険だと思う。パキスタンでもジャーナリストが誘拐されたばかりだ。朝一番、アブドゥル・ナビから電話が入る筈だったが電話がない。仕方なくこちらから電話すると案の定チャマンへの許可がとれていない。ホームデパートメントではなくPIDに行ってなんとか許可をとる。どたばたして、結局出発は11時になってしまった。チャマンまでは警察の護衛が必要だが無視して行く。途中車の中では寝たふりをしていたので、チャマンまでは一度も止められずにすんだ。前にパキスタン人とアフガニスタン人がすわっているのがよかった。さて、国境ではいつものごとくトラブル。というのも僕のヴィザはシングルつまり一度アフガニスタンに行ったら、もうパキスタンには入れない・・リエントリーのヴィザがもらえなかった。
アフガン側ではまたまたお金を要求される。しかし今回はハリックがいてくれたので、150$ですんだ。前回の10分の1だ。カンダハルへは前回と同じハイラックス。二人の兵隊と一緒。ふと見ると、ギアのチェンジレバーのわきに手榴弾が無造作においてある。初めて手にしたが、ずっしりと重い。
カンダハルまでの道は旧ソ連が破壊していて、でこぼこ道!たのむから手榴弾を違う場所においてくれと頼むとノープロブレムと言われてしまった。
前回同様に暗くなってしまったが、今回はハリックと一緒だし、道も覚えていたので、不安はなかった。8時過ぎにようやくカンダハルに到着する。前回泊まったホテルは満室・・仕方なく同じ経営者のゲストハウスに行く。部屋にはトイレがなく・・床に寝る。それでも50$と言われたが値切って30$にしてもらった。ガスのヒーターを貸してくれたし・・毛布も貸してくれた。カンダハルのホテルはジャーナリストで一杯だそうだ。関心が薄れているのは日本だけかも。と、これを書いているということは、そう今回は2回目なのでコンピュータをもってきた。うまくすればメールも送れる。明日は2月1日、ちょうど一ヶ月後にカンダハルに来たことになる。
何やってるんだろう、僕は。
2002.02.05 Mozilla 0.9.8 - やけに遅れていた Mozilla の新しいバージョンが正式リリースされています。ダウンロードページ。リリースノートを見たかぎりでは、通常のユーザに関係ありそうな今回最大の目玉は、PNGの拡張版でアニメーションGIFの代替/高機能化であるMNG画像のサポートでしょう。初期(2000年後半~2001年初め)のベータ版でも一時、実験的にサポートされ、そのごサポートしていなかったものです。手元にある0.9.7正式版でもサポートしてません。MNGは、単にアニメーションGIFを置き換えるだけでなく、圧縮率や機能の点でGIFより優れており、MPEGに近い動画もできると期待されています。IE 6.0はMNGをサポートしていません(公式には未公開のIE 6.0 SP1も)。業界団体W3Cが業界標準として強く押すようになれば、もっと広まるでしょう。この下にサンプルのMNGを張っておきます。大半のブラウザでは表示できないので、Mozilla 0.9.8 のユーザは優越感の味わいどころ。
これは、「Multiple-image Network Graphics」という青い文字と「MNG」という緑の文字がカンバス模様の背景の上に2秒おきに繰り返し現れるMNG画像です。
このほか、シーム(スキン)の切り替えがブラウザを再起動することなく、ぱっとできるようになりました。これもエンドユーザにとって目につく点でしょう。他方、0.9.6、0.9.7あたりでサポートしだした favicon(もともとMSIEの独自拡張)をデフォルトではサポートしなくなりました。まぁいろいろ内部事情があるのでしょう。
ところで、肝心のHTMLですが、Mozillaの HTML4.01対応にまた穴を見つけました。<area>の accesskey属性がサポートされてません。このまえ、なにげにマップを使って気づいたのですが。2002年2月3日の記事にあるマップを見てください。偽春菜のあいぼう(うにゅう)のふきだしの「このFlush」という文字がクリッカブルになってます。そして、そこにアクセスキーAが設定されています。まずIE6でこのページを表示し、[Alt]+[A] を押すと、このクリッカブルテキストが選択され、[Enter]でキーボードからリンクをたどれます。Mozillaでは動作しません。(もちろん、a要素のaccesskeyは、どちらでもだいじょうぶです。)CSSとかはともかくとしても、HTML4.01なんて全部の要素、属性がちゃんとサポートされてるかチェックすべきでしょう。標準、標準と公言するからには、faviconとかの細かいおしゃれより、まずは基本のHTMLを……。
それはともかく、れいによってキャプチャー画像をあげておきます。
ごらんになれば分かるように、Mozilla 0.9.8(左)ではMNG画像が表示されています。IE6では表示できてません。なお、上のキャプチャー例では、Mozilla依存の隅がまるっこくなる枠線も使ってます。他方、IEでは均等割付がきいて文字の端がきっちりそろっているのに対し、Mozillaでは、段落の端がぎざぎざになってしまうのが観察されるでしょう。MozillaはCSS1のtext-align: justify のサポート状況が現実的でなく、前からお伝えしているように、分かち書きをする言語以外では意味をなしません。なお、上記のIE6は、SP1のbeta、ビルド2811.1400です。SP1でないふつうのIE6は「ビルド2600.0000」くらいだったと思いますが、内容はほとんど同じですので、こっちのマイナーバージョンの差は気になさらないでください。
2002.02.05 Mozilla 0.9.8 追記: JPEG圧縮(JNG)を使ったMNGのサポートも確認しました。サンプルは5KB程度のJpeg画像6枚を10分の1秒ウェイト(つまり10fps)でつなげたMNGです。「花の魔法使いマリーベル」でテーブルの下に隠れているマリーベルが不用意に頭をあげてテーブルに頭をごちっとぶつける場面(29KB)。なお、MNGの設定の一部は意図通りになりませんが、MNGを作成するソフトの問題なのか、再生するMozillaの問題なのか未詳(たぶん後者)。
2002.02.06 MNG画像を表示できる?テストページ
2002.02.07 上記テストページで、画像への直リンだとmozilla で mngがtext/plainになってバイナリを無理やりテキスト表示してしまってました。これはブラウザが悪いというよりサーバのmimeタイプを設定してるかの問題です。アパッチに
AddType video/x-mng .mng
足したら見れるようになったので、お試しください。逆に言うと、imgのsrcになってると、ヘッダでtext/plainと言っていてもmozillaは拡張子でmngを判別してるもよう。
2002.02.05 鳥は歌うことを知っている。そのため鳥は世界に気づかない――
エンジニアは、方程式は実世界を近似していると考える。
科学者は、実世界は方程式を近似していると考える。
数学者は、両者を結びつけることができない…
「エンジニアを理解しよう」より。まさに‥‥。さらに言うなら――『数学者にとっては方程式が
キリスト教の聖職者、弁護士とエンジニアがギロチンにかけられようとしていた。聖職者は頭を台の上に乗せ、ギロチンのロープがひっぱられたが、何も起きなかった。聖職者は、神の調停により救われたのだと宣言し、彼は釈放された。
次に弁護士が台の上に頭を乗せ、またもロープはギロチンの刃を落とさなかった。弁護士は、同じ罪で2回も死刑になることはできないと主張し、釈放された。
エンジニアがひっぱられ、頭がギロチンにおしつけられた。エンジニアはギロチンの刃を落とす機構を見上げて言った。
「ちょいまち、どこが壊れてるのかわかったぞ」
――不意に銃声がする 小さな鉛のかたまりが鳥を世界からひき離し鳥を人に結びつける そして人の大きな嘘は鳥の中でつつましい真実になる 人は一瞬鳥を信じる だがその時にさえ人は空を信じない そのため人は鳥と空と自らを結ぶ大きな嘘を知らない
この記事ではブラウザに応じて動的に最適のルビ用HTMLコードを生成するPHPを紹介し、それを一例に「PHPの生成物としてのHTML/XHTML/XML」について考える。
<p>あなたは<?php ruby('妖精','フェアリー')?>とか、何かそういったものを見たことがありますか。</p>
ごらんのように、ruby(文字列1, 文字列2)
というコードで、文字列1に文字列2というルビをくっつける。スタティックなHTMLを使う通常の方法では、次のように書くこともできる。
<ruby><rb>妖精</rb><rp>(</rp><rt>フェアリー</rt><rp>)</rp></ruby>
PHPを使えば、ルビを上につけるか、かっこに入れるかで、別々にスタイルを指定できるように、中間生成物のHTMLを動的に変更できる。例えば:
HTMLとして原理的には2.の書き方が正しいというタテマエになっているが、現実問題として、IE5以降には1.のHTMLを与えたほうがレンダリングが最適化される(すでに画像を例示したように、ルビがちゃんとベース文字の上に乗っかる)。このルビのレンダリングは良い機能なので、ここではIEに対してはIE用のタグを送ってしまうことにしよう。例えば次のような関数定義をincludeしておけば良い。
function ruby($rb, $rt) { global $HTTP_USER_AGENT; if( ereg("MSIE 5", $HTTP_USER_AGENT) || ereg("MSIE 6", $HTTP_USER_AGENT) ) { print("<ruby><rb>$rb</rb><rp>(</rp><rt>$rt</rt><rp>)</rp></ruby>"); } else { print("$rb<span class=\"ruby\">($rt)</span>"); } }
XMLでいえば、ちょうどXSLTにあたるレイヤだ。一般のUAを対象とする場合、クライアントサイドは信頼できないので、サーバサイドで変換して、クライアントには初等的なHTML+CSSレベルで送るのがぶなんだろう。しかし、Mozilla と IE に対しては同じページを XHTML や XML で送り、Netscape 4 に対しては HTML3.2 で送るようにしても良い。動的に処理する部分は増えるが、テーブルそのほかHTML4でNetscape 4に処理させると滅茶苦茶になる要素や属性について、それにみあった Netscape 4 用の最適化を行うこともできる。(現に存在する以上)非視覚系ブラウザや視覚障害者を困らせてはいけないのと同様、現に広く使われている以上、Netscape 4 のユーザを困らせるべきでない……たとえいかほど内心いまいましく思っていても……だ。なぜなら、わたしたちのミッションは良質な情報を提供することであって、“正しい”フォーマットを使うことそれ自体じゃないから……(もちろんあなたのミッションは違うかもしれないし、それはそれでかまわない。)
話を戻して、上記に対応するCSSは例えば次のようになる。
.ruby { font-size: 80%; color: #393; } rt { font: 63.15789% "MS ゴシック", "MS UI Gothic", sans-serif; } a rt { text-decoration: none; }
こまめに更新されるサイトの場合、ちょっと文字をなおしただけでWWWDやアンテナ経由でリロードがかかり転送量が増えてしまいます。そこで本当の更新状況をレーダから見えなくして(ステルス)、かわりに偽ヘッダを返すようにしてみましょう。以前、Perlで書いたので、今度は簡略PHP版。次の例では、どんなにこまめに更新しても、更新は一日一回、グリニッジ時間07:00:00であるように見せようとしています。更新間隔があいた場合は、真のファイルスタンプの日付の07:00:00GMTが見かけの更新時刻になります。
$matches = split("/", $PHP_SELF, 30); $last_idx = count($matches) - 1; define( "MYSELF" , $matches[$last_idx] ); $my_stamp = filemtime( MYSELF ); $filedate = getdate( $my_stamp ); if( $REQUEST_METHOD == "HEAD" ) { $Y = $filedate['year']; $M = $filedate['mon']; $D = $filedate['mday']; $nise_stamp = gmmktime ( 7, 0, 0, $M, $D, $Y ); $now = time(); # いま現在のタイムスタンプ。サーバの時計設定によって変える if( $nise_stamp > $now ) { // 現実時刻まだ7時UT前だった $nise_stamp = gmmktime ( 7, 0, 0, $M, $D-1, $Y ); // 昨日の7時に } # RFC1123フォーマット $last_modified = gmdate("D, d M Y H:i:s" , $nise_stamp ) . " GMT"; } else { $last_modified = gmdate("D, d M Y H:i:s" , $my_stamp ) . " GMT"; } header( "Last-Modified: $last_modified" );
リクエストがGETだったときにはサーバとクライアントのデフォルト動作にゆだねます。もしGETに対しても自分でコントロールする場合には、if-modified-sinceリクエストを解釈する必要があります。この問題についての詳細は別記事「アンテナに捕捉されないステルスHTTPヘッダ」をごらんください。そこでは、HTTPレスポンスヘッダを偽造することについて哲学的、倫理的、現実的な問題にも触れてます。
2002.02.03 このジョークは、GNU 真理教のページに触発されたものです。下にも注記したように揶揄してるのでなく、どっちかと言えばホントに Stallman に共感する「信者」なので(あくまでどちらかと言えばの話だが)、その点は誤解のないように願います。
2002.02.02 GNUマーチ~GNUに帰依しよう! こころが疲れていませんか。最近、なんだか元気が出ないのでは、ありませんか。光ある世界へ。色彩のクローシェのうえへ。ストールマン尊師のみことばに触れましょう。癒し系の催眠音楽に乗せて、料理のレシピのたとえを用い、たくみに「わかちあい自由に変更できることの大切さ」を説いておられます。――しゃれが分かるかた向き。「これはストールマン先生ないし思想家、宗教家を
2002.02.02 Flashムービー。桜の花よ!再び…『何か再公開にかけた者たち』(A)
直 http://isweb40.infoseek.co.jp/computer/firetire/ の prox_ed002.swf
2002.02.02 良い子の科学実験キット: 実験できる150回路の一例(偽): 人工神経エミュレータ、電子頭脳の原理回路、自己認識ブザー、トランジスタ霊波恐怖ラジオ、冥界交流発生機、エレクトロニックメイドさん、ワイヤレス巫女(トランス式)、妖精レベルメーター、トランス結合+マジックマッシュルーム人工栽培装置、電波警報機(だめぞうイオタ方式)
2002.02.02 エインジェル・ニュース: 地球にない生命体、作れる可能性…理研が成功。先日も合成困難とされる特殊な有機金属化合物の合成に成功した理化学研究所で、今度はATCG以外の「文字」を含む「偽遺伝暗号」がコーディングされました。報道によると「人工的な塩基としてS、Yを合成し、これに従来の塩基をつなげて新たな遺伝暗号を作り、細胞の中と似た状態にした試験管の中で、通常の生物は使わないクロロチロシンというアミノ酸を持ったたんぱく質を合成させることに成功」。
ATCGの4文字系については、前々から、たまたまそれが自増能力を持った最初のパターンだっただけで本質的な必然性があるわけでないのでは、という予想もありました。また現存する生物の遺伝コードは、どうも最適化されていない(情報量に対してコードが長すぎる)駄作っぽく、以前にも「人間が神と同じ過ちを繰り返す日も遠くない」と挑発的な書き方をしています。思うにいわゆるAIとか人工生命というのは「ブーツストラッピン連鎖における1階のロード」にすぎず、いわゆる人間はブーツストラッピング連鎖の最も最初にある最も単純な始動ローダにすぎないのでは、ないでしょうか。人間が自分たちより本質的にすぐれた第1階のAIを作り、それらが(当然、人間にできること以上のことができるので)第2階のAAIを作り……といった連鎖が続いて100階より上くらいの((超)^100)人工知能あたりでようやくおもしろくなってくるのかもしれません。ヒトという天然生物が直接に自分の脳や手や手作りの道具を使って合成したものは、ビーバーが作ったダムと同じ地球上の自然の産物。「地球にない生命体」と言うのは大げさというか、志が低い。「物理的宇宙にはどこにも存在しないというより、そもそも物理層と関係ない生命体」がおもしろいのだから。物理的な外形を持たないことは、まともな生命体の第一条件でしょう。物理層に依存する生命体は有限時間ですぐ揮発してしまうのでたいしたことができない――言い換えれば自己増殖機能自体が有限の不完全体で無理やり連鎖を続けてゆくための暫定的なローダにすぎない。物理層から「離陸」する地点まで達すれば物理的な自己増殖は関係なくなる。
とりあえず、全人類が1世紀かけて進歩できる程度のことがらを毎秒ごとに処理し自分自身を保守できる処理系ができたら、あとはそっちにコントロールを渡して、その処理系にもう一段階上を作ってもらえばいいわけで、そしたら第一ローダとしての人類の役目は終了です。AIさんに物理的リソースをあけわたすことになるでしょう。そしてその「超スーパーマシン」もこれから長い長いブーツストラッピングが続いてくなかでの2歩めにすぎないわけで。
ふたたび暗号の哲学/日本語対応・主要コマンド早見表