Sat, 21 Dec 2002 20:12:48 JST / hina.di
powered by tds-1.3.0
<issei@issei.org>
わずか 33 年の生涯でペルシア帝国を滅亡させ、空前の大帝国を現出させた古代の英雄 アレクサンドロス大王。その一生涯を扱った歴史小説。
軍事遠征と政治的な駆け引きを縦糸、アレクサンドロスの父フィリッポス大王の死の謎 を追うアリストテレス、世界各地でのアレクサンドロスの恋愛、美しき古代都市の描写 など、珠玉のエピソードを横糸とし、見事に古代社会の息吹を再現している。
アレクサンドロスと彼を支える将軍たちが魅力的なのはもちろんだが、 鎧は見事に着込むが軍事行動はからっきしの智謀に長けた書記官エウメネス、 ペルシア総督に身も凍るような恐怖を味あわせられ一度はアレクサンドロスを裏切る ものの後に彼の有能な手足となる人間味溢れるスパイ、ソロイのエウモルポス、 アリストテレス・リュシッポスら古代ギリシアを代表する哲学者/芸術家など、 なんとも魅力に溢れる脇役が多いのも特徴。
読んでいて、死力を尽くして戦う男達の姿に血を滾らせ、人の力で抗いがたい悲痛な運 命を前に歯噛みし、莫大な富を抱えた伝説の都に目を見張り、この世の果てとも思える 光景に戦慄した。たった三冊の書籍にも関わらず、読み終わったときには何年もの時間 が経過したような錯覚を覚えるぐらいに没頭。楽しめました。
Windows NT/2000 + IIS (Apache も可) で動く CVSWeb。素晴らしい :)
Win32 版の tcsh で、コマンドラインに長い文字列を指定すると異常終了する。 たとえば、大量のファイルがあるディレクトリで
% less *
などと実行すると、たちまち落ちる。
これまで騙し騙し使ってきたものの、長い one liner を潰されてガックリきたので、 解決を試みる。
まずはデバッグシンボルつきでコンパイルして、実行。これで異常終了時にデバッガを 立ち上がるが、スタックが破壊されていてトレースできない。困ったね。
実行関係は exec なんたらという関数だろうと当たりをつけて、いくつかの関数 にブレークポイントを設定する。普段は Visual C++ の統合開発環境からブレークポ イントを設定するが、今回はソースコードに次のように書き込んで設定。
__asm int 3;
ブレークポイントで停止したら、怪しそうな場所をステップ実行して様子を探る。 まず見つけたのがデバッグ用の出力メッセージを書き出す dprintf() @ win32/globals.c。
void
dprintf(char *format, ...)
{ /* } */
va_list vl;
char putbuf[1024];
DWORD err;
err = GetLastError();
{
va_start(vl, format);
vsprintf(putbuf, format, vl);
va_end(vl);
OutputDebugString(putbuf);
}
SetLastError(err);
}
バッファサイズを 1024 バイトしか取っていないのだけど、format に %s なんて 書式を指定して呼び出しているところがある。
// vsprintf(putbuf, format, vl); _vsnprintf(putbuf, sizeof(putbuf), format, vl);
vsprintf() を _vsnprintf() で書き直し、ブレークポイントを削除して再コンパイル。 デバッガ中から tcsh.exe を起動して、コマンドライン引数に長い文字列を与えると、 再び止まる。ただし、今度はスタックフレームは壊れていない。
スタックを壊してデバッグを面倒にしていたのは、皮肉にもデバッグ用メッセージを 出力するための dprintf() 関数だったわけだ。
次に停止したのは nt_texec() @ win32/ntfunc.c。関数の最後の方にある cleanup: ラベルの直後で、ランタイムライブラリがヒープの破壊を検出して停止している。
heap_free(cmdstr_save);
cmdstr= heap_alloc(MAX_PATH<<2); cmdstr_save = cmdstr; ... concat_args_and_quote(args,&cmdstr,&cmdlen,&cmdend,&cmdsize);
最初に heap_alloc() で確保したメモリ領域を、最後に heap_free() したいわけだが、 cmdstr は文字列操作の過程で値が変わってしまうから、これを cmdstr_save に保存 している。
関数を追っていくと、後の方に concat_args_and_quote() という関数の呼び出しが あるが、この中で cmdstr のポインタに対して heap_realloc() して、値を更新して いる。 realloc() した時点で cmdstr != cmdstr_save, かつ cmdstr_save の指すアドレスは 開放済みとなる可能性がある。これは明確にバグ。
他にも concat_args_and_quote() を見ると、cmdstr - 1 に対して realloc() した 上で cmdstr++ するとか、いかにもバグの温床といった感じのコードが散見される。 バグを一掃するには、ざっくり書き直した方が良さそうな雰囲気。
if (arglen + cmdlen +4 > *cmdsize) { // +4 is if we have to quote
tempptr = cmdstr-1;
cmdstr = heap_realloc(cmdstr-1,*cmdsize<<1);
if (tempptr != cmdstr) {
cmdend = cmdstr + (cmdend-tempptr);
}
cmdstr++;
*cmdsize <<=1;
}
現地時間9月11日9時前後。 ニューヨーク世界貿易センタービル・国防総省本部に相次いでハイジャックされた と見られる航空機が突入、前者はビルが倒壊し後者も建物の一部が損壊する事件が 発生。 早速、株価やドルの下落(その後、証券取引所を閉鎖)など経済に影響が出始め ている。
トム・クランシーの小説「合衆国崩壊」は合衆国議事堂に日本の飛行機が突入し、 大統領と多くの上院・下院議員が死亡する場面から物語が始まっていたが、それ を髣髴とさせる惨事。 小説「合衆国崩壊」では立て続けに問題が発生するが、やがて新大統領に就任し たライアンが手腕を発揮、強いリーダーシップと優れた仲間の助けにより問題を 解決した。さて、現実のブッシュ大統領はどうだろう?
ともあれ、一日も早く事件が解決し、再び平和と安定が戻るように祈る。
New York Times on the Web
"We have been attacked like we haven't since Pearl Harbor," said Adm. Robert J. Natter, the commander of the Atlantic fleet, ...
意訳
「我々は真珠湾以来の攻撃を受けている」大西洋艦隊司令官 Robert J. Netter 提督は語った。
今回の攻撃が、日本軍の真珠湾攻撃に比されている。そういう見方もあるのか。
TIME.com
今回の事件を報道する記事 America Under Siege 右下の囲み部分に注目。"How You Can Help" (手助けの方法) と題されたリンク 集が用意され、今回の事件に対して読者がとれる手助けの方法をまとめてある。
あとは
イスラム圏でどのように報道されているか、ちょっと気になりますね。
ブロックレベルで実行を省略しスループットを向上させる技術「計算再利用」と 「値予測による投機的スレッド実行」に関する論文。Intel が次世代プロセッサ に投入する Hyper-Threading に関する報道を見て興味が沸いたので。
※1:ex:偽マルチ(謎)
まったく本題と関係ないですが、「たとえば」(for example) の意味でした ら ex ではなく e.g. (ラテン語 : exempli gratia) かと。 ex だと、むしろ「〜を除く」(excluding) という気がします。
テレビは今回のテロ事件の特番を組んでいましたが、リアルタイムで追っても 個人的には何もできないので見ていません。朝刊を待つことにして、いつも通 りの生活を。
ただし今回は中東側の見解に興味があったので、中東の新聞社が運営する英字 新聞サイトを探してみました。見つけた関連記事を二つ。
後者は、最後の方にアラブ諸国の対応や住民の声が載っています。
抜粋
"We're ecstatic. Let America have a taste of what we've tasted," said Ali Mareh, a Lebanese resident of Beirut.
意訳
「私たちは大変な悦びを感じている。我々が味わってきた苦しみを、アメリカも味わうが良いさ」 ベイルートに住むレバノン人 Ali Mareh は語った。
これは記事から極端な部分だけを抜粋してきたので、一般的市民の見解を 反映しているとは限りません。あくまで一例。
THIS IS AN ACT OF WAR の記事にも、やはり米国人が今回の事件を真珠湾攻撃と比較している部分があります。
抜粋
"This is the second Pearl Harbour. I don't think that I overstate it," said Sen. Chuck Hagel a Nebraska Republican.
It was the worst attack on American soil since Japanese war planes bombed the US fleet at Pearl Harbour on December 7, 1941, killing 2,280 soldiers and 68 civilians and forcing the US into the Second World War.
Former Secretary of State Henry Kissinger told CNN, "This is comparable to Pearl Harbor and we must have the same response and the people who did it must have the same end as the people who attacked Pearl Harbour."
意訳
「これは第二の真珠湾だ。誇張だとは思わない」 ネブラスカ州選出の共和党下院議員チャック・ヘーゲル氏は述べた。
(中略)
ヘンリー・キッシンジャー元国務長官は、次のように CNN に語った。 「今回の事件は真珠湾(攻撃)に匹敵する。我々はそのときと同じ対応をとり、 そしてこの事件を引き起こした人間には、真珠湾を攻撃した人間と同じ 末路を辿らせねばならない」
米国人にとっては、今回のテロ行為を真珠湾攻撃と比較するのは、決して特異な見 方ではないのでしょう。是非はともかく、まずは、このような見方があるという事実 を知っておくことが肝要かと思います。
年月なんざ数値化できるに越したことはないだろうにと思うのは、やはり日本人だからか。
一週間を 0, 1, 2, .. 6 ではなく日曜、月曜、……、土曜と数えている時点で、 日本人も大差ないかと。
そういえば、日本の祝祭日は西暦の月日で固定ですが、諸外国だと曜日で決まっていたり イスラム暦など西暦以外の暦法によって定まる祝祭日も多いですね。
カソリックの復活祭やイスラム教のラダマンなど宗教色が濃いものには移動祝祭日が、国 家の独立記念日など宗教色が薄いものには固定祝祭日が多い気がします。推測するに、理 由は次のようなものでしょうか。
「暦から見た世界史」なんて書籍があれば、読んでみたいトコロです。
難易度最高の "Dante Must Die!" モードをクリア、隠しキャラクタの Super Dante! で一通り遊んで終了。
攻略順
最初 Hard モードをプレイしたときには「クリアできるか、こんなもの」 と思いましたが、何とかなるものですね。
「海の都の物語」は既読、文庫で所有しているのですが、読み直す良い機会ということ で。
「金融工学、こんなに面白い」はタイトル買い。帰宅して早速読んだのですが、 株やデリバティブ(金融派生商品)などの金融商品の概説、特に価格決定モデル と役割について取り上げていました。確かに「面白い」ので、少し掘り下げた書 籍を探してみるか。