2004-11-03 [長年日記]
_ はてなの住所登録 (16:59)
俺はほとんどはてなダイアリーは使ってないし、はてなアンテナも常々自分でアンテナ立てた(り作ったりした)方がメンテナンス性が高くて良さそうだなーと思っていたところなんで、ひとまずぎりぎりまでは住所登録せずに様子をみるだろう。で、結局住所登録しなきゃサービスが使えないようになったら、どうしてもはてなアカウントが必要な理由が思いつかない限りはそのままフェードアウトだな。
はてなが信頼できないとかいうのではなく、はてなというネットサービスに住所を登録するメリット・デメリットを考えたときに、メリットはほとんど思いつかないけれども、デメリットはいくつか思いつくから。
デメリットは大して大きいものではないけど、メリットが思いつかない以上そっちが主な検討材料になってしまう。はてな自身にとっても(表面上見えている理由だけしかないなら)デメリットの方が大きいと思うんだけどなー。数万人の住所を含めた個人情報を責任を持って管理しなければならないというコストは、しゃれにならないくらいでかいと思うんだけど。
俺みたいな、比較的はてなに好意を持っている&個人情報だだもれ野郎がそう考えるくらいだから、そうでない人はもっと登録する気にならないだろうな。
法的問題が起きたときに利用者の個人情報が必要になる可能性があるというだけなら、最終アクセスIPアドレスとかを記録しておいて、いざというときはそこからプロバイダなどに対して(司法機関経由で)情報開示を求める、とかいうレベルでだめな理由がよくわからない。
_ strtotime、dateのサポート範囲 (21:36)
ある日付文字列を、$ndate = strtotime($sdate)でUNIXタイムスタンプに変換して内部で取り扱い、出力する際には$sdate = date('Y-m-d', $ndate)なんて感じで処理していたところ、1970-1-1より前の日付が軒並み1970-1-1になってしまった。
調べてみたところ、srttotime関数について手元(というか日本語版)のマニュアルの注意書きには、
注意: タイムスタンプの有効な範囲は、通常、Fri, 13 Dec 1901 20:45:54 GMTからTue, 19 Jan 2038 03:14:07 GMTまでです。(これらは、32ビッ ト符号付整数の最大及び最小に一致します。)
とだけしか書かれていなかったけど、英語版を見たら、
Note: The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer.) Additionally, not all platforms support negative timestamps, therefore your date range may be limited to no earlier than the Unix epoch. This means that e.g. dates prior to Jan 1, 1970 will not work on Windows, some Linux distributions, and a few other operating systems.
と書かれていたよ。試してみたら、strtotime関数の段階ではきちんと(負の)UNIXタイムスタンプ値として変換されていた(RedHat/Fedora系Linux)。ただそれをdate関数で文字列に変換するときに、負の数値は0扱いされてしまい、1970-1-1になっちゃってるんだね。なんでstrtotimeできちんと負のタイムスタンプ値になっているのに、dateではそれを扱えないのか謎だ。っつーかこれどうやって解決しておくのがきれいなんだろうなー。今回はハイフン区切りの日付部のみだったから「-」でexplodeしちゃったけど、もっと汎用的な解決策を持っておきたいなー。

