[障害報告] 読んだ4の不具合により、2/19-2/22の間記録の重複が発生していました

2月19日10時~2月22日23:20まで、データ処理の失敗により記録の重複が発生していました。

原因の不具合は修正済で、重複の記録も削除しました。不具合指摘のご連絡をくださったみなさま、ありがとうございました。

TwitterのユーザーIDの桁数が大きくなっており、開発当初は想定していなかった変数で桁あふれを起こしていたのが原因でした。今回の修正で、Twitter社が内部で使っていると思われる桁数まで対応したので、同じトラブルは起こらないだろうと思います。

不具合があった期間の記録も抜けずに反映されているはずですが、もし抜けがあった場合は、お手数ですがもう一度ツイートしなおしてください。

214-748-3647 ウェブで一番でてくる電話番号とその理由

ある匿名のプログラマーが発見した不思議な電話番号、それが214-748-3647

もともと、32ビットの符号付整数で表される一番大きな数が2147483647なんです。それで、このプログラマーがなんとはなしに214-748-3647でグーグル検索してみたところ、1500以上のウェブサイトで、電話番号としてこの番号が表示されていることに気づいたとか。

そんなにたくさん、同じ電話番号の会社や組織があるはずがありませんね。つまりこれは、いろんなプログラマーが横着して、10桁の文字列じゃなくてInt型で電話番号を格納するようなスクリプトを書いてしまったために起こっているのです。上限値を越えてしまうような電話番号の設定が全部この値に丸められてしまった結果、多数のサイトでこの”214-748-3647″が電話番号として表示される現象が発生しているのです。

アメリカの場合、214というのはテキサス州ダラスの市外局番だそうです。ダラスのどこかに、この不幸な電話番号を本当に使っている人がいて、その人はアメリカ中から全然関係のない会社宛ての間違い電話を受け取ってるに違いない、という話。

市外発信の先頭の1を書いたり書かなかったりするアメリカとは違い、日本だと日常的に市外局番を0から記述するので、このバグを作りこむプログラマーは少ないような気がします。しかし、こんな感じでバグが同じ何かを指し示し、謎の現象が発生しているようなケース、他にもあるのかもしれませんね。

via The most common phone number | Shark Bait

WordPressの管理画面とFirebugが衝突していた

ここ数日、FirefoxでWordPressの管理画面で新規投稿や既存記事の修正をしようとしたときに、

  • 右サイドバーのカテゴリーのところにiframeが出て、その中にWordPress Admin画面がまた表示され、
  • おそらくその中で再帰的に管理画面が表示され続け、
  • そのうちにブラウザが諦めて、ページが真っ白、または編集用のボタンが一列だけ表示される

みたいな現象が起こり、FirefoxでWordPressの編集ができなくて悩んでいました。

最初はWordPress自体の問題かと思っていたのですけど、WordPressのサイトを症状で検索しても、それらしい問題が見当たりません。

しょうがないので、Firefoxのaddonを全部オフにすると、問題が解消されました。

# セーフモードの存在を忘れてました。セーフモードで試せばもっと楽でしたね

拡張のどれかが悪さをしてることがわかったので、あとはどれをオンにした時に問題が発生するか、on/offを調整して探すだけです。その結果、Firebugを有効にしたときに上記の問題が再現しました。

FirebugとWordPress Adminで検索すると、今度は「FirebugがWordPressの編集投稿ページで再帰的な読み込みを発生させる」というズバリなバグレポートが見つかりました。

レポートにもありますが、Firebugをenableにした時は、この問題は発生しません。suspendにすると発生します。Firebugを使わないのも困るのですが、WordPressで投稿するたびにenableにするのも面倒だなあ。

バグレポートの☆をポチっと押して、修正してほしい気持ちを伝えておきました。

同じ現象で悩んでいる人がいるかもしれないので、記録しておきます。

[追記 2009.10.24] 本日、このバグを修正したというコメントがバグレポートに入りました。近いうちのFirebugの更新で、この問題は解消されそうです。

XAMPP 1.7.0でMySQLアクセス時にApacheが落ちるとき

ここのところ普段と違うパソコンを使っているのですが、そこでPHP/symfonyの開発環境を構築する必要があり、ひさしぶりに、Windowsの簡単ウェブ開発環境インストーラXamppを使ってみました。

# 普段はビルド済のPHPとMySQL, Apacheをダウンロードして入れています。これでも手抜きと言われるかもしれませんが

xamppのサイトから、Windows版 1.7.0 ベーシック版 インストーラ(xampp-win32-1.7.0-installer.exe)というやつをダウンロードして実行するだけです。

それで、xamppについてくるサンプルや静的なページは問題なく動くのですが、symfonyで作ったアプリケーションを呼び出そうとすると、PHPがApacheを巻き込んで落ちてしまいます。

Apacheのログにはこんなエラーが

[notice] Parent: child process exited with status 3221225477 — Restarting.

いったいこれは何だ、ということで類似の問題が起こってないか検索してみたところ、このフォーラムにたどり着きました。XAMPP 1.7.0のインストーラが展開するdllが、XAMPPの中のMySQLと合致していないために起こると読みました。

フォーラムに書かれているとおり、

c:\xampp\php\libmysql_5.0.51a.dll

c:\xampp\php\ext\php_mysql_5.0.51a.dll

c:\xampp\php\ext\php_mysqli_5.0.51a.dll

を、それぞれ”_5.0.51a”のない方に上書きすることで、エラーは無くなりました。問題が解決するdllまで一緒に配布しているということは、原因は把握されてるんじゃないかと思うのですが、なんでこうなってるんでしょう。今これをやってるのがWindows 2000なので、XPやVistaでは問題ないのかしら。

というわけで、XAMPPで簡単にPHP開発環境ができることは確認できたのですが(上記の問題で何時間も使ったので簡単でもないという話も)、XAMPPの設定するphp.iniはいくつか微妙ですね。いまどきmagic quoteオンとかshort tagオンとか。E_NOTICEがオフになってたのでオンにしたら、XAMPP自身のトップページが警告を出しちゃうし。

WindowsのXAMPPでそのまま本番環境にする人はあんまりいないだろうとは思いますけど、万一自宅サーバとかでそういうことをするなら、php.iniは上から下まで読んで設定しなおしたほうがよさそうです。

[追記] Windows XPでも同様のエラーになるそうです

グーグルをゴグルにする方法

グーグルの検索は「次へ」を押していっても1000件までしか結果を表示してくれませんね。1000件に近いあたりから1000件を越えるような検索をすると、画面の下のほうのページ案内部分から’O’の文字が一個落ちて、”Gogle”となってしまうそうです。

検索結果のページ(検索語はなんでもいい)で、アドレスバーのURLの後ろに

&num=100&start=990

とつけると、誰でもこれを再現することができます

via seomoz