どさにっき(アナログ) 〜2010年7月下旬〜

by やまや
<< = >>

2010年7月21日(水)

IPv6 のメリット

_ たとえば 192.0.2.1 のような IPv4 アドレスを間違えて vi にコピペすると、"192." は「直前の操作の192回繰り返し」を意味するので編集中のファイルがとっても大変なことになる。v6 アドレスならそんなことは起きない。


2010年7月23日(金)

無題

_ 目覚ましが鳴る前に起床。健康的なのではなく、ただ暑さで寝ていられなくなっただけ。

_ いつもより早く起きたので、いつもより早く家を出る。が、人身事故とやらで電車が来ない。なんで快速で起きた事故のせいで各駅で通うわしが巻き込まれるのさ。クソ暑い駅のホームでぼーっと待つ。

_ 電車がやってきたのはいつもより遅い時間。なんのために早く出てきたのか。そしてダイヤ乱れの常として、車内は汗だくの連中で超満員、しかもノロノロ運転。

_ じっとり湿った男たちが肌を寄せあいながらの40分間を耐えてようやく到着したが、もう1日分の気力を使い果たしたので帰っていいですか。

_ そんなわけで誕生日おめでとう > 俺


2010年7月25日(日)

避暑

_ うちは2部屋あるが、寝るのに使ってる部屋にはエアコンはなく、熱帯夜でも扇風機だけでしのがなければならない。しかし熱帯夜よりつらいのが朝。うちは東向きなので、朝から夏の陽射しの直撃を受けてとても寝ていられなくなる。前夜どんなに夜更かししようと関係なく、目覚ましが鳴るより早い時間に起こされて寝不足のまま活動開始するはめになる。

_ 平日ならどうせ早起きせねばらんのでそれでもまあ許せるのだが、足りない睡眠を週末に補おうとしても空気を読んで陽射しが衰えるはずもなく、けっきょく土日も用もないのに早起きすることになる。

_ まだまだ夏ははじまったばかりなのに、すでに恒常的な睡眠不足になりつつあってたいへんよろしくない。いったいどうすればいいのか。だいたい、人間が人間として自然に生きるのにエアコンが必須というのがおかしい。人間が適応できない土地に無理に住むというのが大きな間違いなのだ。…などと暑さに頭をやられて妙に哲学的なことを考えていたら閃いた。エアコンがなくても寝られる土地で寝ればいいんだ。

_ ということで、快眠を求めて山に行ってきました。

_ 発作的に飛び出してきたのでどこがいいという事前の調査もなく、とりあえずうちから比較的近くて標高1000m以上で平坦な駐車場があるところ、という条件で思いついたのが日光。ほんの 2ヶ月前に行ってきたばかりだが目的は観光ではなく安眠なので気にしない。土曜日の夕方に出て夜10時ごろ標高1400mの戦場ヶ原に到着。そのまま車内で10時間以上ぐっすりと。これだけ標高が高いと、朝から直射日光を浴びても気持ちいいとしか感じない。

_ せっかく来たのに寝るだけじゃもったいないので、戦場ヶ原からマイカー規制されている道路を自転車で走って、行き止まりの中禅寺湖畔から今度は徒歩で西ノ湖という小さな池まで往復。 こんな行程。天気もいいし、景色もよくて、こんなに気持ちがいいのに、人が誰もいない! なんともったいない。

_ 一泊の費用は、ガソリン代3000円弱に、温泉500円、あと食べる分。たったこれだけ。飯は出かけなくてもどうせ同じぐらいかかるし、一般道しか通ってないし、お土産も買ってないので、ひじょーに安上がり。金曜の夜に出て二泊すれば一泊あたりの費用はさらに下がる。うん、これは使える。週末が朝からクソ暑そうな予報なら、無理して自宅で寝ようとせずにどっかの山に避難しよう。あとはもっと近くて涼しいところを探さなきゃだな。


2010年7月29日(木)

続・メールは正しいアドレスで送りましょう

_ 最近になって MovableType と WordPress が相次いでメジャーバージョンアップしたので、ちとテストしてみたり。念のためいうと、自分で使うためじゃないです。ここの日記は当面は自作スクリプトを使い続けます。

_ で、MT5 と WP3 がとりあえずふつーに動いたことは確認したので、以前から気になっていた仕様(というか、わし的にはバグ)が新版でどうなってるか確認してみた。…うん、解消してないね。

_ この件。メールを送るときに正しい送信者アドレスを指定しているかどうか。SMTP ならたいてい正しいのに、sendmail で送信するときは何も指定せず、結果としていいかげんなアドレスで送信されてしまう問題。

_ まず MovableType 5.02 (opensource 版)。ひどい。lib/MT/Mail.pm の _send_mt_sendmail() より。

        exec $sm_loc, "-oi", "-t" or
            return $class->error(MT->translate(
                "Exec of sendmail failed: [_1]", "$!" ));
はい、-f による送信者アドレスの指定がされてません。さらにひどいことに、プロセスの終了ステータスをチェックしていないので、メール送信に失敗したとしても、ユーザには一切そのことが通知されない。or ... でエラーチェックしているように見えるが、これは exec による起動が成功したかどうか見てるだけで、起動された sendmail が成功ステータスで終了したか見てるわけではなくまったく不十分。終了コードが 75 (*1)かどうかで処理を変えろ、とまでは言わないが、せめて 0 かそれ以外かのチェックくらいしとけよ。

_ 次、WordPress 3.0-ja。メール送信は WP の自前実装ではなく、 PHPMailerというライブラリに丸投げしてる。このクラスを見ると、

  /**
   * Sets the Sender email (Return-Path) of the message.  If not empty,
   * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode.
   * @var string
   */
  var $Sender            = '';
こんなことが書いてあって、実際この後にある送信用メソッドも Sender に値がセットされていればちゃんと sendmail -f で送信するようにコーディングされている。が、このクラスを WP から実際に呼び出す場面で Sender に値を代入しているところがどこにもない。それじゃ意味ない。けっきょく、いいかげんなメールアドレスで外に出ていってしまう。せっかく機能があるのに正しく使っていない。

_ なお、この PHPMailer クラスの実装自体も、SMTP で送るときは MAIL FROM: に Sender を使い、それが空なら From、それも空なら <> を使うというロジックだが、sendmail や mail() で送るときは Sender しか参照せずそれが空なら無指定という非対称性があっていまいちよろしくない。sendmail で送るときも SMTP のときと同様に Sender が空なら From を sendmail -f の引数に使う、という実装になっていれば、WordPress があんな使い方をしてても救済できたのに。

_ ここでは MT と WP を例にあげたけど、同様にいいかげんなアドレスでメールを送ってしまう Web アプリはほかにもたくさんある。手紙には自分の名前を書きましょう、って小学生でも常識として知ってることだと思うんだけど、なんでできないのかな。郵便じゃなくて電子メールでも同じことなのに。


(*1): sysexits.h の EX_TEMPFAIL。

<< = >>
やまや