3月ですよ?
Windows 2000 の再インストール、というか、別のHDDにインストールしました。今後はこちらをメインにしようと思っています。
とりあえず、必要なソフトをインストールしていきます。CD-R関係、ブラウザなどのネットワーク関連、開発環境(Perl, Java, CVSなど)を優先的に。
OSを再インストールしたら、Mizillaがマウスホイール対応になりました。それはそれでうれしいんですが、なぜ?代わりにTeraTermでホイールが効かなくなりましたが・・・
HDDのマスターとスレイブを交換したので、PC起動時にブートマネージャ(MBM)が起動しなくなってしまいました。見事に失敗ですね。新Win2000しか起動できなくなってプチ弱り。ブートマネージャをインストールすればよいのですが、MBMはFDDからのインストールが基本ですので、FDDを装備していない俺マシンではちょっと。いや、おとなしく繋げばいいんですが。
一通り終わったところで、AIRRADE Summerと東方妖々夢(体験版)で動作確認。
AIRRADE Summerやるのは久しぶりです。とりあえず、ノーマル裏葉ノーパンチでクリアしておきました。6.1億でしたが、ランクインできませんでした。6.3億くらい取らないと、ランクインできないんですよね。厳しい・・・
そういえば、2周目の最初で必ず強制終了してしまうバグは直っているようです(最新パッチ)。
東方妖々夢はノーマルモードをノーミスノーボムでクリア。まぁ、ノーマルは楽勝ですね。霊夢の霊符タイプ(ホーミング型)だと、逃げ回りながらでも攻撃があたるので、意外と使えるかも。咲夜(幻符)はボム数にものを言わせることもできますけど、基本性能も割と高いので、クリアするだけなら本当に楽です。
・・・何してたんだっけ?
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>±</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に変換したほうがいいような気がします。
たいていのWebサイトには「リンク集」みたいなのがありますけど、リンクの管理って結構めんどくさいです。リンクが切れていないか、移転していないか、コンテンツが変わっていないかなど、定期的にチェックしなきゃいけません。これだけでも結構な手間です。
そこで、この作業を自動化するため、アンテナ作成開始。アンテナっていうと、朝比奈アンテナ とか なつみかん あたりが有名ですが、吐き出すHTMLを自由にカスタマイズしたいのと、カテゴリ分類をしたかったので、自分で作ることにしました。
HTTPのHEADメソッドを投げて、レスポンスから生死とか最終更新日時なんかを取得して、それをHTMLに変換するという、シンプルなものです。こっちから電波を飛ばすわけですから、アンテナというよりはむしろレーダーですね。
2〜3時間でできるだろうと思ってたら、意外に梃子摺る・・・
まぁそれなりに柔軟な(?)仕組みが出来上がったので、あとはサイトの登録とか細かい調整なんかを。
何が「ぴぴぴ」なんだか。
吐き出すHTMLや、サイトの情報を、完全に外部ファイルで制御できるようにしました。記述方法が一部あやしげなものになっていますが、気にしない。
ある程度サイトの登録が終わり、まとめて電波を投げていたら、特定のサイトから変なレスポンスがきていることが判明しました。Yahoo! JAPAN とInfoseek です。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じゃ〜」
やむなくメッセージヘッダのみを切り出すように改修。
一難去ってまた一難・・・
今度は特定のサイトにHEADを投げると、応答がなくなります。Treasure とBiglobeです。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 を解釈してしまうので、気がつかなかったんですね。親切というか、おせっかいというか・・・
同一カテゴリ内のサイト単位でのソート機能がありませんね。今度実装しましょう。
PiPiPiはポケモンなので(?)、名前を変えようと思います。かっこ悪いし。
何かいい名前・・・うむむ・・・
いろいろ拡張。
レーダーの動作設定ファイルには、パラメータが大量に(種類も量も)あります。パラメータの種類を追加すると、それに応じてプログラム側も変更するのが普通ですが、ソースコードが膨れ上がるのが嫌だったので、このプログラムではコードを変更せずに済むようにしました(特殊なのは除く)。
cronでスケジューリングしてみました。とりあえず毎朝スキャンするということで。一般のアンテナは、10分くらいの間隔でスキャンしてるみたいですが、ニュースサイトならともかく、そこまでしなくてもと思います。
HTTPリクエストをべたで書くのをやめて、PerlのLWP, HTTPを使うことにしました。ソケットの処理を書かなくて済む分、実装量がちょっとだけ減りました。あと、使いもしないのに、プロクシ接続に対応しました。
こればかりですね。まぁ面白いからいいや。
Linux機で実行すると、PerlのLWP, HTTPがインストールされていない罠。Active Perl (Win32) では正常に動いていましたが、迂闊でした。
CPANからモジュールを拾ってきてせっせとインストール。とりあえずLWP, HTTP, Net まわりを固めました。ところで、CPANにあるモジュールって、すごい量ですよ。4304ってあんた・・・
HTTP(libwww)をインストールすると、make test の結果があまりよろしくないご様子。まあいいか、とそのままインストールし、LWP使用版レーダーを走らせてみると、ほとんど繋がらなくなりました。HTTPリクエストに対してレスポンスが来ません。それも、100%失敗ならまだしも、失敗率90%くらい、つまり「たまには成功することもある」という、嫌〜〜〜な状態です。さっきのテスト結果が怪しいですね。
いったん make clean して、再度インストールします。気になるのは、インストール途中にある「HEAD, GET, POST のエイリアスを作るか?」みたいな質問です。デフォルトでは yes なので、そのまま進めてましたが、これを no にしてみたら、今度はテストはばっちり。レーダーもきちんとレスポンスを取れるようになりました。しかも、めちゃ速ぇ〜。
で、エイリアスは結局なんだったんでしょう・・・podを見ると、lwp-request と関係あるみたいですが・・・うーむ。
レーダーでスキャンしたあとに、リンク切れとかホスト接続不能をメールで通知するようにしました。これはPerlの Net::SMTP で実装しました。以前、冗談半分でインストールしたPostfixが、こんなところで役に立つとは。きっとこの日のためにインストールされたのでしょう。ホントかよ。
久しぶりのZANAC NEO。しばらくやってないと、忘れてしまいそうで。いや、忘れてます。STAGE 0 がクリアできません(笑)ダメすぎ。ボスを倒すだけなら簡単なんですが、以前、コンボが切れた時点で捨てゲーしてたものですから、そのクセでついやり直し、やり直し、やり直し、・・・
こんなことやってるから、購入後1週間もしないうちに PLAY COUNT が80超えるんですよ。そのくせ CLEAR COUNT は 9。残りのほとんどは、パターン確立とコンボのために STAGE 0 で捨ててます。たまに STAGE 1 に行っても、やっぱり捨てゲー捨てゲー捨てゲー・・・
うがー
今日はお日柄がよろしくない(笑)
赤ゲットのパターン。
これで序盤で赤ランダーを2個ゲット。3個目がわからない。空撃ちの回数とスコアが関係するはずなんだが。
サイトリストを更新したときに、文字エンコード名を変えるのを忘れてました。吐き出したHTMLはEUC-JPでエンコードしてるのに、metaタグには"Shift_JIS"・・・
鬱だ。
今日こそは・・・
ラスボス前でコンボが切れました。1440万。撃沈。気を取り直してスコアアタックをやってました。きちんと繋いでいけば、AREA 6クリア時点で1000万を超えることがわかりました。
Yシャツとか靴下がくたびれてきたので、補充しに行きました。ついでに自転車でも買っておこうかと思ったのですが、なかなか良いのが見つからず、断念。26インチ、内装3段、アルミフレームで安いやつ、ないですかねぇ。ないですねぇ。
ところで、「Yシャツ」ってのは white shirt の略(訛り)ですから、「白じゃないYシャツ」なんて表現はおかしいわけで、だからって別にどうも。
「鳥肌実、42歳厄年。ヒロポンを一升ビンで買えるようになりました」
話題?かどうかは知りませんが、94年に廃人宣言をしたといわれるアノ御方。自称演説家。Google 検索してみると、出てくる出てくる。わざわざ講演会に出かけてる人もいますね。ファンでしょうか(笑)
自宅鯖の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。
ARMORED CORE 3 SILENTLINE のパーツ集め。結局、自力ではちっとも集まらないので、魔神 WWW を召還。いやー、便利便利(笑)
しかし、「APを○○%以上残し○○秒以内にクリア」とか、「APを○○%以上に保ちつつ敵を○○機以上破壊してクリア」なんて、どうやったらわかるんでしょう。攻略本?