2006年5月16日の投稿

2006-05-16
雨

大バグ発覚

ゆりこ による 21:12:00 の投稿
カテゴリー: ソフトウェア

試しに作ってみた参加表明掲示板 (未公開) ですが、大バグが発覚しました。ほぼ同時に参加表明を投稿するとダブってしまうという問題です。

従来バージョンは、データーファイルには重複を許して追記させておき、表示のときに重複を除去していました。しかし、PHP + MySQL バージョンでは、データーベースへの追加のとき、新規登録 (INSERT) か、更新 (UPDATE) かを判断させました。しかし、新規登録であると判断してから INSERT クエリを発行する間に、同じ名前・メールアドレスでの投稿処理をすると、そちらでも新規登録と判断されてしまってダブってしまいます。つまり、新規か更新かの判断と、INSERT は、アトミックな処理 (分割できない処理) なのに、そうなっていないのが問題なのです。

これを修正するには、プログラムの流れ自体をいじらないといけないので、けっこうやっかいです。LOCK TABLES クエリを使う手もありますが、今回は、名前に UNIQUE 制約を付与しておき、いきなり INSERT IGNORE を発行させることにしました。これだと、新規登録であれば1行追加され、すでに同じ名前があれば 0 行追加 (追加されない) となります。追加された行数を調べて、0 行であれば改めて UPDATE を発行すればいいわけです。

ところが、すでに同じ名前があるとき PHP が異常終了 (Segmentation Fault) してしまいます。同じ名前がない場合は INSERT が成功するのにーー。うーん。弱った。

GAORA 放送事故

ゆりこ による 22:08:00 の投稿
カテゴリー: テレビ・メディア

プロ野球はセ・パ交流戦が始まっていますが、ファイターズ vs タイガースの試合中継で、GAORA が中継回線切断をやってしまいました。

それは息もつまる延長11回表。トラの守護神・久保田が投球しているとき、突然ピーという音と共にカラーバーが表示されてしまいました。カラーバーには「NTT 大阪」の文字が……。どうやら、倉敷とのマイクロ波回線が切れてしまったようです。すぐに「しばらくお待ちください」の表示になり、5分後にはサーフィンをしている環境映像になってしまいました……。

仕方なくラジオを取り出して中継を聞こうとすると、ファイターズの投手の顔が出てきました。中継が復活したようで、試合は11回ウラに進んでいたようです。試合が大きく動いた場面は見逃さなかったのでよかったですが、いきなり回線が切れるとは、えらいこっちゃ。

そして、試合は12回ウラ、シーツが3塁線を抜けるタイムリーを放ってサヨナラ勝ちを収めました。めでたしめでたし。

コメント・トラバ仕様策定

ゆりこ による 22:17:00 の投稿
カテゴリー: ソフトウェア

自前で実装しようとしているコメント・トラックバック機能の仕様について書いてみます。せっかくですから、既存のツールとは一線を画すような斬新な仕様にしたいものです:-)

まず、スパム対策のため、トラックバック用 URL は記事 ID から推測できるものとせず、ハッシュを使ったランダム文字列とします。こうすると、記事 ID とトラックバック URL を関連付けるためのテーブルが必要になりますが、テーブルからハッシュ文字列を削除してしまえばトラックバックの受付中止ができます。記事の URL は永続性が求められますが、トラックバック URL は永続性がなくてもいいでしょう。

あと、記事 ID をどうテーブルに格納するかが悩みます。現行の Yuriko.Net では現在 yyyymmddxx (yyyy, mm, dd は日付の数字、xx は連番としてアルファベット) という形式の記事 ID を採用していますが、それを上手に管理するのは難問です。この形式でユニークな記事 ID を生成するにはどうすればいいか。

yyyymmdd の部分 (日付) と xx 部分 (連番) に分離して、双方を PRIMARY KEY として、後者を auto_increment とするとよさそうです。複数の PRIMARY KEY があるので、日付ごとに auto_increment が行なわれます。違う日付に対しては同じ連番を付与できる反面、同じ日付ではユニークな番号になることが保証されます。そして、後者を後でアルファベットに変換させれば一丁上がり。生成した記事 ID もテーブルに記録しておきましょう。

コメントやトラックバックは、それぞれ専用テーブルで一括して管理しておきます。連番 ID、対応する記事 ID、コメント内容またはトラックバック内容、投稿元 IP アドレスなどを入れればいいでしょう。IP アドレスを記録するなら、拒否 IP アドレスのテーブルも作っておかないと。

とりあえず、コメント・トラックバックを作り込むだけならこれぐらいでよさそうな感じ。

MacBook でた〜〜

ゆりこ による 23:07:00 の投稿
カテゴリー: アップル・Macintosh
タグ:

噂サイトではそろそろ出るという話だった MacBook が出ました〜〜。PowerPC 搭載の iBook の後継です。大きさは、12インチ/14インチを統合して13インチのワイドスクリーン1つになりましたが、色は白と黒の2モデルに分かれました。

基本的には MacBook Pro の小型・簾価版ですが、スペックは見劣りしません。これは売れるやろなーー。