日記

3月 1日 (土)

1. March

3月ですよ?

2. 2000

Windows 2000 の再インストール、というか、別のHDDにインストールしました。今後はこちらをメインにしようと思っています。

2.1. start

とりあえず、必要なソフトをインストールしていきます。CD-R関係、ブラウザなどのネットワーク関連、開発環境(Perl, Java, CVSなど)を優先的に。

OSを再インストールしたら、Mizillaがマウスホイール対応になりました。それはそれでうれしいんですが、なぜ?代わりにTeraTermでホイールが効かなくなりましたが・・・

2.2. boot

HDDのマスターとスレイブを交換したので、PC起動時にブートマネージャ(MBM)が起動しなくなってしまいました。見事に失敗ですね。新Win2000しか起動できなくなってプチ弱り。ブートマネージャをインストールすればよいのですが、MBMはFDDからのインストールが基本ですので、FDDを装備していない俺マシンではちょっと。いや、おとなしく繋げばいいんですが。

2.3. 確認

一通り終わったところで、AIRRADE Summer東方妖々夢(体験版)で動作確認。

AIRRADE Summerやるのは久しぶりです。とりあえず、ノーマル裏葉ノーパンチでクリアしておきました。6.1億でしたが、ランクインできませんでした。6.3億くらい取らないと、ランクインできないんですよね。厳しい・・・

そういえば、2周目の最初で必ず強制終了してしまうバグは直っているようです(最新パッチ)。

東方妖々夢はノーマルモードをノーミスノーボムでクリア。まぁ、ノーマルは楽勝ですね。霊夢の霊符タイプ(ホーミング型)だと、逃げ回りながらでも攻撃があたるので、意外と使えるかも。咲夜(幻符)はボム数にものを言わせることもできますけど、基本性能も割と高いので、クリアするだけなら本当に楽です。

・・・何してたんだっけ?

3月 2日 (日)

1. 升

MathML の仕様書を眺めてました。数式なんかを表現する、XMLアプリケーションです。XMLだけあって、相変わらずタグの嵐です。例えば、2次方程式の解の公式をTeXで書くと、

\[ x = \frac{-b\pm\sqrt{b^2-4ac}}{2a} \]

となるわけですが、MathMLで書くと、

<mrow>
<apply>
  <eq/><ci>x</ci>
  <apply>
    <divide/>
    <apply>
      <mo>&PlusMinus;</mo>
      <apply>
        <minus/><ci>b</ci>
      </apply>
      <apply>
        <root/>
        <apply>
          <minus/>
          <apply>
            <power/><ci>b</ci><cn>2</cn>
          </apply>
          <apply>
            <times/><cn>4</cn><ci>a</ci><ci>c</ci>
          </apply>
        </apply>
        <cn>2</cn>
      </apply>
    </apply>
    <apply>
      <times/><cn>2</cn><ci>a</ci>
    </apply>
  </apply>
</apply>
</mrow>

なわけですよ。嫌ですね。 手で書くよりも、TeXで書いてそれをMathMLに変換したほうがいいような気がします。

2. radar

たいていのWebサイトには「リンク集」みたいなのがありますけど、リンクの管理って結構めんどくさいです。リンクが切れていないか、移転していないか、コンテンツが変わっていないかなど、定期的にチェックしなきゃいけません。これだけでも結構な手間です。

そこで、この作業を自動化するため、アンテナ作成開始。アンテナっていうと、朝比奈アンテナ とか なつみかん あたりが有名ですが、吐き出すHTMLを自由にカスタマイズしたいのと、カテゴリ分類をしたかったので、自分で作ることにしました。

HTTPのHEADメソッドを投げて、レスポンスから生死とか最終更新日時なんかを取得して、それをHTMLに変換するという、シンプルなものです。こっちから電波を飛ばすわけですから、アンテナというよりはむしろレーダーですね。

2〜3時間でできるだろうと思ってたら、意外に梃子摺る・・・

まぁそれなりに柔軟な(?)仕組みが出来上がったので、あとはサイトの登録とか細かい調整なんかを。

3月 3日 (月)

1. ぴぴぴレーダー

何が「ぴぴぴ」なんだか。

吐き出すHTMLや、サイトの情報を、完全に外部ファイルで制御できるようにしました。記述方法が一部あやしげなものになっていますが、気にしない。

1.1. 罠1

ある程度サイトの登録が終わり、まとめて電波を投げていたら、特定のサイトから変なレスポンスがきていることが判明しました。Yahoo! JAPANInfoseek です。HEADメソッドを発行したのに、メッセージ本体が返ってきます。これじゃGETと変わりません。RFC2616 (9.4)には

The HEAD method is identical to GET except that the server MUST NOT return a message-body in the response.

「メッセージ本体は送ってはいけない」 *1 って書いてあるのに。

「何のためのHEADじゃ〜」

やむなくメッセージヘッダのみを切り出すように改修。

1.2. 罠2

一難去ってまた一難・・・

今度は特定のサイトにHEADを投げると、応答がなくなります。TreasureBiglobeです。telnetコマンドでHEADを投げてみると、HTTPサーバがそれぞれ WebSTAR/3.0.2 と Zeus/4.0 となっています。聞き慣れないサーバですね。

telnetコマンドでは正常に取得できますので、私の組んだプログラムがおかしいのでしょう。といっても、難しいことはやってませんし。怪しいところといえば・・・HEADコマンドの後の改行コード?

一般に、Windowsで改行といえば 0x0D 0x0A ですが、UNIX系では 0x0A です。しかし、jperl(Active Perl5 Build 522 Win32 日本語版)で "\n" と書くと、それは 0x0A と解釈されてしまいます。"\r" は 0x0D です。

print join(', ', unpack 'hhh', "\n\n\r");
^Z
a, a, d

HTTPリクエストの最後を "\n\n" とすると、0x0A 0x0A がそのまま相手サーバに届きます。サーバが 0x0A を改行と認めなければ、リクエストが終了していないとみなされて、そのままタイムアウトしちゃう、と。

RFC2616には、"CRLF" と明示されています。単独の CR や LF を使っていいのは、メッセージ本体で特定の条件に合致するときだけのようです。Apacheは 0x0A を解釈してしまうので、気がつかなかったんですね。親切というか、おせっかいというか・・・

1.3. 順

同一カテゴリ内のサイト単位でのソート機能がありませんね。今度実装しましょう。

  • *1: 2003-03-06 訂正:「送るべきではない」じゃなくて「送って(返して)はいけない」でした。

3月 4日 (火)

1. ぴぴぴレーダー

2. アンテナ

Google で「アンテナ」で検索すると、真っ先に朝比奈アンテナ がくるのはどうかと思いました。なぜなつみかん ではないのか。いやそういう問題ではなく。

3月 5日 (水)

1. レーダー

PiPiPiはポケモンなので(?)、名前を変えようと思います。かっこ悪いし。

何かいい名前・・・うむむ・・・

1.1. soft

いろいろ拡張。

レーダーの動作設定ファイルには、パラメータが大量に(種類も量も)あります。パラメータの種類を追加すると、それに応じてプログラム側も変更するのが普通ですが、ソースコードが膨れ上がるのが嫌だったので、このプログラムではコードを変更せずに済むようにしました(特殊なのは除く)。

1.2. cron

cronでスケジューリングしてみました。とりあえず毎朝スキャンするということで。一般のアンテナは、10分くらいの間隔でスキャンしてるみたいですが、ニュースサイトならともかく、そこまでしなくてもと思います。

3月 6日 (木)

1. レーダー

HTTPリクエストをべたで書くのをやめて、PerlのLWP, HTTPを使うことにしました。ソケットの処理を書かなくて済む分、実装量がちょっとだけ減りました。あと、使いもしないのに、プロクシ接続に対応しました。

3月 7日 (金)

1. レーダー

こればかりですね。まぁ面白いからいいや。

Linux機で実行すると、PerlのLWP, HTTPがインストールされていない罠。Active Perl (Win32) では正常に動いていましたが、迂闊でした。

CPANからモジュールを拾ってきてせっせとインストール。とりあえずLWP, HTTP, Net まわりを固めました。ところで、CPANにあるモジュールって、すごい量ですよ。4304ってあんた・・・

1.1. alias

HTTP(libwww)をインストールすると、make test の結果があまりよろしくないご様子。まあいいか、とそのままインストールし、LWP使用版レーダーを走らせてみると、ほとんど繋がらなくなりました。HTTPリクエストに対してレスポンスが来ません。それも、100%失敗ならまだしも、失敗率90%くらい、つまり「たまには成功することもある」という、嫌〜〜〜な状態です。さっきのテスト結果が怪しいですね。

いったん make clean して、再度インストールします。気になるのは、インストール途中にある「HEAD, GET, POST のエイリアスを作るか?」みたいな質問です。デフォルトでは yes なので、そのまま進めてましたが、これを no にしてみたら、今度はテストはばっちり。レーダーもきちんとレスポンスを取れるようになりました。しかも、めちゃ速ぇ〜。

で、エイリアスは結局なんだったんでしょう・・・podを見ると、lwp-request と関係あるみたいですが・・・うーむ。

1.2. mail

レーダーでスキャンしたあとに、リンク切れとかホスト接続不能をメールで通知するようにしました。これはPerlの Net::SMTP で実装しました。以前、冗談半分でインストールしたPostfixが、こんなところで役に立つとは。きっとこの日のためにインストールされたのでしょう。ホントかよ。

2. ざなっく

久しぶりのZANAC NEO。しばらくやってないと、忘れてしまいそうで。いや、忘れてます。STAGE 0 がクリアできません(笑)ダメすぎ。ボスを倒すだけなら簡単なんですが、以前、コンボが切れた時点で捨てゲーしてたものですから、そのクセでついやり直し、やり直し、やり直し、・・・

こんなことやってるから、購入後1週間もしないうちに PLAY COUNT が80超えるんですよ。そのくせ CLEAR COUNT は 9。残りのほとんどは、パターン確立とコンボのために STAGE 0 で捨ててます。たまに STAGE 1 に行っても、やっぱり捨てゲー捨てゲー捨てゲー・・・

うがー

今日はお日柄がよろしくない(笑)

2.1. STAGE 0 - FLASH BACK -

赤ゲットのパターン。

  1. ショットを1発も撃たずに、最初のカーゴをサブウェポンで撃破(ランダー出現)
  2. サブウェポンで赤ランダーに変えてゲット(1個目)
  3. ショットを1発だけ空撃ち
  4. サブウェポンで雑魚を何機か倒し、スコアの千の位を1にする
  5. カーゴをサブウェポンで撃破(ランダー出現)
  6. サブウェポンで赤ランダーに変えてゲット(2個目)

これで序盤で赤ランダーを2個ゲット。3個目がわからない。空撃ちの回数とスコアが関係するはずなんだが。

3月 8日 (土)

1. レーダー

サイトリストを更新したときに、文字エンコード名を変えるのを忘れてました。吐き出したHTMLはEUC-JPでエンコードしてるのに、metaタグには"Shift_JIS"・・・

鬱だ。

2. ざなっく

今日こそは・・・

ラスボス前でコンボが切れました。1440万。撃沈。気を取り直してスコアアタックをやってました。きちんと繋いでいけば、AREA 6クリア時点で1000万を超えることがわかりました。

3月 9日 (日)

1. 買い物

Yシャツとか靴下がくたびれてきたので、補充しに行きました。ついでに自転車でも買っておこうかと思ったのですが、なかなか良いのが見つからず、断念。26インチ、内装3段、アルミフレームで安いやつ、ないですかねぇ。ないですねぇ。

ところで、「Yシャツ」ってのは white shirt の略(訛り)ですから、「白じゃないYシャツ」なんて表現はおかしいわけで、だからって別にどうも。

2. 42歳厄年

「鳥肌実、42歳厄年。ヒロポンを一升ビンで買えるようになりました」

話題?かどうかは知りませんが、94年に廃人宣言をしたといわれるアノ御方。自称演説家。Google 検索してみると、出てくる出てくる。わざわざ講演会に出かけてる人もいますね。ファンでしょうか(笑)

  • 「時計が狂っているのかと思ったら、僕が狂っていました」
  • 「飼っていた小鳥が、最近自殺を図りました」
  • 「ペットのシャム猫が、最近犬だったことが判明しました」
参考
鳥肌語録

3. あぱっち

自宅鯖のApacheのログ見ると、結構多いのが

 GET /c/winnt/system32/cmd.exe?/c+dir HTTP/1.0
 GET /MSADC/root.exe?/c+dir HTTP/1.0
 GET /_vti_bin/..%255c../..%255c../..%255c../winnt/system32/cmd.exe?/c+dir HTTP/1.0
 GET /scripts/..%c1%1c../winnt/system32/cmd.exe?/c+dir HTTP/1.0
 GET /default.ida?NNNN(中略)NNNN%u9090%u6858(中略)%u0078%u0000%u00=a HTTP/1.0

です。1年前よりは多少減ったような気もしますが、それでもまだまだ来ます。URLにcmd.exeとroot.exeを埋めてくるのはNimda wormでしたっけ?NNNNN...XXXXX.../MSADC/.../c/winnt/...は確かCodeRedでしたね。っていうか、まだいたのかCodeRed。

4. Silent Line

ARMORED CORE 3 SILENTLINE のパーツ集め。結局、自力ではちっとも集まらないので、魔神 WWW を召還。いやー、便利便利(笑)

しかし、「APを○○%以上残し○○秒以内にクリア」とか、「APを○○%以上に保ちつつ敵を○○機以上破壊してクリア」なんて、どうやったらわかるんでしょう。攻略本?