_ /etc/init.d/ でも /usr/local/etc/rc.d/ でも、OS に合わせてお好きにどうぞ。
このスクリプト自体は汎用でほとんどどんなものにも使えるけど、そのかわり Makefile を別途書いてね、というオチでした。#!/bin/sh case "$1" in start|stop|reload) cd /path/to/dir make "$1" ;; *) echo "usage: $0 start|stop|reload" exit 1 ;; esac_ まともに運用していくためには、たとえば aliases.db を作るために newaliases するとか、 設定ファイルをプリプロセッサにかけるとかの定型作業がいくつかあるだろうから、そういう作業を簡単におこなえるようにスクリプト化しておく。さらにその作業を Makefile から呼びだせるようにしておく。これがミソ。加えて、Makefile 中に start やら stop やらのターゲットに起動コマンドと依存するファイルを書いておけば、古いファイルを勝手に更新してから起動してくれる。古い設定で起動してしまった、なんてつまらない事故がなくなる。オススメ。
_ 入荷まで1ヶ月はかかるよ、と言われていたのだが2日で納車されてしまった。以前この店の別のお客さんの発注を代理店にすっぽかされた前歴があり、そのお詫びということで優先的にまわしてくれたらしい。すっぽかされた不幸な客のおこぼれにあずかる形になったのだが、まだ当分先だと思ってたので保管場所の確保ができてない。どうすんだよ:-)。
_ 引き取りにいったのが夕方近くだったので店からどこにも寄らずにまっすぐ帰ってきたのだが、10km ほど走った感じでは、やっぱ軽いわ。ここしばらく乗ってた ものでもママチャリ程度は軽くぶっちぎれる性能はあったのだが、あたりまえだがそれよりもはるかによく走る。これでもロードレーサーじゃなくていちおう街乗り用のお気楽自転車の部類なんだけど。ただ、ちとサイズがデカかったかもしれん。ずっと折り畳み自転車だったからその差が大きいだけのような気もするので、しばらく様子を見てそれでも慣れなければステムを交換かな。
_ あとでトップチューブのロゴの横に「ぬ」とペイントしておこう(嘘)。
_ 新しい自転車買ったらさ、やっぱり乗りたいわけじゃん。日曜だし天気いいし。準備万端ととのえて、さあ出発するか、と外に出たところで電話。なんかメール届かなくなったから調べて、って。なんでこんなタイミングでやってくるかなぁ。しかたないから対応するか。
_ おまえが悪い、という調査結果が出て、いちおうこちらでできる作業をしたところで、今度は別の障害が発生。ぐぁ。最初の件のフォローをしながら障害対応を並行作業。かんべんしてよ。
_ 作業完了して報告メールを書いているときにまた別の障害が発生。障害というより注意しとけ程度の軽いものだけどやっぱり対処は必要。わしが何かしたのか?
_ ぜんぶ終わった。ちょっと遅くなったから昼飯食ってから出るか、と鍋を火にかけたところでまた障害。出かけるどころか飯まで食わせないつもりか。
_ いろいろ後始末までやってるうちにもう15時半。明るいうちにどうしてもやっておかないといけない用事がいくつかあったので、それにかかる時間を考えたらもう外で遊んでる時間なんか残ってない。なんでそうなるかなぁ。わしの日曜日を返して。
_ sourceforge.jp で動いているメーリングリストサーバですな。
% host -t mx lists.sourceforge.jp lists.sourceforge.jp mail is handled by 20 mail2.osdn.jp. lists.sourceforge.jp mail is handled by 30 lists.sourceforge.jp._ まずはプライマリの mail2.osdn.jp から。
450 で蹴られたわけだが、実はこのとき、osdn.jp の方からうちの maya.st のメールサーバに逆接続に来ている。% telnet mail2.osdn.jp smtp Trying 210.128.90.12... Connected to mail2.osdn.jp. Escape character is '^]'. 220 osdn-vmhost.osdn.jp ESMTP Postfix (Debian/GNU) ehlo hoge 250-osdn-vmhost.osdn.jp 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME mail from:y@maya.st 250 Ok rcpt to:mailman@lists.sourceforge.jp 450 <y@maya.st>: Sender address rejected: unverified address: Address verification in progress quit何もしないで切断してるけど、これは アドレス検証機能を使ってうちのサーバに RCPT TO:<y@maya.st> を送って送信元のアドレスが実在のものかどうか確認しにきているログである (*1)。450 でエラーを返されちゃっているのは、うちのサーバが spam 対策のため遅延応答しているために、アドレス存在確認中にタイムアウトしちゃったから。遅延せずにすぐ応答していれば 250 を返していたはず。なお、450 を返したあともアドレス検証クライアントは生きていて結果を残そうとがんばってくれる。Oct 18 00:18:02 <mail.info> tomo postfix/smtpd[48653]: connect from osdn-vmhost.osdn.jp[210.128.90.12] Oct 18 00:18:24 <mail.info> tomo postfix/smtpd[48653]: 93C282117: client=osdn-vmhost.osdn.jp[210.128.90.12] Oct 18 00:18:24 <mail.info> tomo postfix/smtpd[48653]: disconnect from osdn-vmhost.osdn.jp[210.128.90.12]_ 450 で一時エラーになったので、順当にはセカンダリ MX である lists.sourceforge.jp にフォールバックする。こっちはアドレス検証はされないが、やっぱりひっかかるポイントがある。つーか、これマズいから直せ。
このサーバ、STARTTLS に対応してるんだけど、オレオレ証明なのでクライアントから正当性を検証できない。中間者攻撃の可能性があるので、ふつーはこういうホストにメールを送っちゃいけません。ちゃんと金払って証明書買えよ。検証できなくても気にせず送る、という選択肢もないわけじゃないけど推奨はしない。% openssl s_client -connect lists.sourceforge.jp:25 -starttls smtp CONNECTED(00000003) depth=0 /C=JP/ST=Tokyo/L=Chiyoda-ku/O=VA Linux Systems Japan K.K./CN=lists.sourceforge.jp/emailAddress=admin@sourceforge.jp verify error:num=18:self signed certificate verify return:1 depth=0 /C=JP/ST=Tokyo/L=Chiyoda-ku/O=VA Linux Systems Japan K.K./CN=lists.sourceforge.jp/emailAddress=admin@sourceforge.jp verify return:1 --- Certificate chain 0 s:/C=JP/ST=Tokyo/L=Chiyoda-ku/O=VA Linux Systems Japan K.K./CN=lists.sourceforge.jp/emailAddress=admin@sourceforge.jp i:/C=JP/ST=Tokyo/L=Chiyoda-ku/O=VA Linux Systems Japan K.K./CN=lists.sourceforge.jp/emailAddress=admin@sourceforge.jp 以下略_ プライマリ MX には 450 で蹴られ、セカンダリ MX は SSL 証明書がおかしいのでこっちの方から願い下げ。つーわけで、sourceforge.jp のメーリングリストにはメールを送れない。……というわけではない。プライマリのアドレス検証データベースにうちのメールアドレスが一歩遅れて記録されるので、再送すれば次はちゃんと送れる。なんだよ、けっきょくまわりくどいだけの greylisting かよ。
(*1): postfix は RCPT TO の後でキュー ID が割り当てられるので、ログにキュー ID が記録されていれば RCPT TO までは送られたと推察できる。
_ えーと、まずはじめに断っておくと、めんどくさいので調べてません。すべて記憶に頼って書いてます。どっかウソがあるかも。
_ Cookie の仕様というのは、元祖 Netscape による Cookie、それを元に RFC で定義された Cookie、さらにそれを拡張した RFC の Cookie2 の3つがあって互換性がない。Cookie2 は名前が違うので一目瞭然だけど、Netscape 版と RFC 版の Cookie は同じ名前だけどシンタックスのビミョーな違いで判別可能だったはず。たしか。だいぶ前に調べたときに、シンタックスの違いでどっちの形式か判断するコードを w3m のソースの中で見たような記憶がある。
_ で、RFC で規格化された苦労は報われず、いちばん使われているのはいちばん古い Netscape 式の流儀だったはず。たしか。つーか Cookie2 なんて見たことねーな。
_ hoge.example.com と fuga.example.com のように、同じドメインの異なるサブドメインで Cookie を共有することもできるんだけど、無制限にそれをやっちゃうと Set-Cookie: domain=com とすることであらゆる .com ドメインで有効なおそろしいクッキーが可能になっちゃう。これがクロスドメインクッキー問題。クッキーを共有できる範囲を限定的にしなくちゃいけない。
_ この危険性は当初から認識されていて、いちばん最初の Netscape 版では domain の値に含まれるピリオドの数に下限を設けることでこの問題を回避する仕様になっていた。すなわち、com とか net とか org とかの gTLD は domain の値にピリオドが2個以上、jp とかの ccTLD は3個以上(gTLD より1個多いのは ne.jp とか co.uk とか com.au とかの属性ドメインが多いため)。こんないいかげんな方法で所有者が異なるドメインの発行したクッキーが混じらんだろ、と考えちゃうのはすげーアホらしいんだけど、でもそういう仕様が長年使われてたんだよね。
_ RFC 化された Cookie では、ピリオドの数で制限するというアホ仕様は改められたはずなんだけど、じゃあどうやってこの問題を回避しているのかというと、忘れた。調べりゃすぐわかるけど、まあそのうち。
_ で、まあ、要するに何がいいたいかというと、 こういうめんどくさい問題を引き起こすからクロスドメインクッキーなんか使うな、ってことだ。mixi.jp というドメインならピリオドの数が足りないから自動的に Netscape 式のクッキーは使えないし。mixi がどのバージョンのクッキーを使ってたのかは知らんけどな。だいぶ前に w3m のソースを調べた、というのも www.bk1.co.jp が www.bk1.jp にリニューアルしたせいでクロスドメインクッキーのピリオド数制限にひっかかったときだしな。
_ 頭のわるいはてなのロボットですが、今度は robots.txt を20分ごとに cron で取得することにしたようです。20分待つと robots.txt の中身が変わることを期待しているのでしょうか。そんなわけねーだろ。ほんとに頭わるいロボットだな。
221.186.146.26 - - [19/Oct/2006:04:00:16 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:04:00:16 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:04:20:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:04:20:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:04:40:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:04:40:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:05:00:19 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:05:00:19 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:05:20:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:05:20:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:05:40:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:05:40:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:06:00:14 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:06:00:14 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:06:20:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:06:20:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:06:40:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:06:40:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:00:58 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:01:00 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:05:37 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:05:37 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:20:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:20:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:40:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:07:40:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:08:00:30 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:08:00:33 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:08:20:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:08:20:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:08:40:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:08:40:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:09:00:13 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:09:00:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:09:20:13 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:09:20:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:09:40:14 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:09:40:15 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:10:00:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:10:00:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:10:20:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:10:20:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:10:40:14 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:10:40:14 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:11:00:24 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:11:00:27 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:11:20:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:11:20:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:11:40:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:11:40:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:12:00:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:12:00:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:12:20:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:12:20:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:12:40:20 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:12:40:23 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:13:06:26 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:13:06:26 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:13:20:13 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:13:20:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:13:40:14 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:13:40:15 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:14:00:14 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:14:00:14 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:14:20:15 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:14:20:15 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:14:40:19 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:14:40:20 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:00:16 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:00:16 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:20:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:20:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:40:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:40:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:40:30 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:15:40:30 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:16:00:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:16:00:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:16:20:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:16:20:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:16:40:24 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:16:40:24 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:17:00:43 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:17:00:43 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:17:20:12 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:17:20:12 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:17:40:15 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:17:40:17 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:18:00:46 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:18:00:46 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:18:20:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:18:20:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:18:40:27 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:18:40:28 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:19:00:15 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:19:00:15 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:19:20:13 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:19:20:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:19:40:13 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:19:40:14 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:20:02:56 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:20:02:56 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:20:20:57 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:20:20:57 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:20:40:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:20:40:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:21:00:18 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:21:00:18 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:21:20:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:21:20:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:21:40:26 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:21:40:26 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:22:01:37 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:22:01:38 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:22:20:16 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:22:20:16 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:22:40:13 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:22:40:13 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:23:00:56 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:23:00:56 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:23:20:10 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:23:20:10 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:23:40:11 +0900] "GET /d/robots.txt HTTP/1.1" 404 210 "-" "HatenaScreenshot/1.0 (checker)" 221.186.146.26 - - [19/Oct/2006:23:40:11 +0900] "GET /robots.txt HTTP/1.1" 200 582 "-" "HatenaScreenshot/1.0 (checker)"
_ きのうのはてなロボットの件は、今日は 12:20 の定時巡回を最後にアホ動作をやめた模様。あまりにおかしな挙動だったから、まさかあの記述を読んだわけじゃなくて、はてなスタッフが自分たちで気がついて改めたんだと思うけど、もし万が一はてなの中の人が読んでるのだとしたらもうひとつお願い。
_ 誰かはてなブックマークに登録しようとするたびに数秒から数分間隔で最低2回、多いときは10回近くロボットがやってくるアホな動作をなんとかしてください。いろんなロボットを見てるけどさ、頭の悪さとしてははてなのロボットはかなりの上位だね、ほんとに。偽装してくるとか robots.txt を無視するとかいうタチの悪い動作はしないけど。
_ それはさておき。 これとか これとか。はてブは6月時点でサーバ17台で5000万PV/月だそうな。単純に割り算するとサーバ1台1日あたりたったの10万PV。意外と少ない。っつーかヒマそう。もちろん全部のサーバがフロントに立ってるわけじゃないし、バラバラではなくひとつのシステムとして考えなきゃいけないのでこんな単純計算じゃ計れないことは百も承知だけど、それにしても無駄に多いような気がする。システム全体では1日あたり200万PVになるけど、もしすべて静的なファイルだったならば、1PV = 10リクエストとしても最近のマシンならば1台でなんとかまかなえるぐらいのアクセスだから、きっと中ではよほど複雑な処理をしてるんだろう。