2002-02-10
_ ショック!スキー場で見た大事故を語るスレ
……えーっと、ひとまずヘルメットでも買ってこようかな。
_ PC用カバンを購入
ずっと大きめのウエストバッグにノートPCをつっこんで持ち歩いていたんだけど、それだとPC本体+関連小物以外のものを入れる余地があまりになさすぎるので(具体的には本を2、3冊まとめ買いすると入らないんで)、とうとうノートPC用のバックパックを買ってしまった。B5ノート用のカバンは品数が少なすぎていいものが見つからなかったので、A4ノート用のエレコム製6000円。一通りいろいろつっこんでみたところ、まあまあの使い勝手かなといった感じ。ソニースタイルで作っていた吉田カバンオリジナルのやつは、結局どうなったんだろう?
2004-02-10
_ blogmapのゴミ掃除プロセス (13:51)
そろそろまたblogmapのURLリスト巨大化が始まったんで、ゴミURL掃除プロセスを作成。DB初回登録時から30日以上経っても、そのURLを利用するサイトが現れない場合(要するに一つのサイトしか使わなかったURL)は、削除するようにした。そういうURLがDBの約1/3を占めていた模様。ただ、そのついでに各プロセスのバランスを調整したら失敗してしまい、デッドロック地獄にはまってしまったんでサーバーを強引に再起動。依存関係がややこしいプロセスをパラレルに動かしているんで、ロジカルにデッドロックが起こらないようにはできないんだよなー。MySQLって、temporary tableをファイルに作成するプロセス(ちょっと複雑なjoinをしているもの)が異常に遅くなるんで、そのタイミングで関連tableに触るとlockがかかってしまい、そこにlow priorityな命令が混ざるとデッドロック地獄に落ちてしまう。だいたいindexをちゃんと見てくれれば、全行くっつけるような巨大なtemporary tableなんて作らなくてもいけるように作ってあるはずなのに、なんでindexで絞ったjoinのたびに巨大なtemporary tableを作っちゃうんだろう。
2005-02-10
_ 修理に出した (14:35)
引き取り修理は「時間指定ができない」と書かれていたけど、それ以前に日付の事前通知すらないのね。突然やってきた。Webから確認できるステータスにも「受付中」のままなのに。
_ spamほいほいがあふれた (17:55)
spamほいほいにしているIMAP4(courier-imap)のフォルダに2万件くらいメールがたまったら、becky!で移動も削除もできなくなってしまった。しょうがないんでサーバー上でディレクトリごと削除。imapって実用的に使えるメール件数は何件くらいまでなんだろう。というか、今回の制限はサーバー側にあったんだろうか、クライアント側にあったんだろうか。
imapをストレージ的にマウントして、グループウェアサーバーのバックエンドとして使うというネタを考えていたんだけど、あんまりばりばり使うとすぐに破綻するのかな。専用クライアントから見るとグループウェア(スケジュール、ToDo、メール、ドキュメント置き場)に見えて、メールクライアントから見えると単なるメール(特定書式+添付ファイル)に見えるようにすると、結構便利そうだと思うんだけど。
_ wikiにドラフト(下書き)という概念を持たせると便利かも (20:01)
ひとまず思いつきレベルを適当に書いたものをドラフトとして保存しておいて、あとでちゃんと推敲してcommitする。あるいは、誰でも編集できるけどそのデータはいったんドラフトとして保存され、管理者がcommitした場合のみ本来のドキュメントと差し替えられる。
とか言い出すと、ふつうにバージョン管理ツール的な概念を適用した方がいいんだろうな。でもblogでwikiでも、下書きレベルでいったんサーバーに保存したい(けど公開したくない)場合って結構あるよね。まあ使い勝手のいいローカルblog的な方向に向かう手もあるけど、サーバーにドラフトデータの保存機能を追加する方が手っ取り早そうだ。
そういやwiki系にbloggers APIみたいなものってまだでてきていないのかな。
2006-02-10
_ bigpresenいいなー
ぐだぐだ長文を書いたあとに、まとめをbigpresenで書いておくというスタイルは、結構使えそう。場合によっては、まずbigpresenで概要を書いてから、詳しい話を後に書いた方がいいかもね(本文を読まない人が増えそうだけど)。
_ tracに日記インターフェースがあれば
CodeBlogを見ていて思ったんだけど、tracにWeb日記インターフェースがついていたらプログラマー系Webサイト構築にすごい便利じゃねー? バックエンドは標準のWikiシステムでいいんだけど、あれに、
- 日付をキーにしたテキストを手軽に書くためのインターフェース
- そのページ群のインデックスをわかりやすくまとめるインターフェース
を追加して、FrontPage相当がその表示になればそれでいい。tracの拡張機能を書けるようになるために、まずpythonを勉強するべきか……。
_ 参照を持つオブジェクトや配列の比較
こんな感じのコードが、
$foo =& new stdclass();
$foo->foo =& $foo;
if ($foo === $foo) {
echo 'equal';
} else {
echo 'not equal';
}
無限再帰になってしまうのは、仕様なんだろうか?(PHP 4.4.0/Windows、4.4.1/Linux) var_dumpとかはちゃんとRECURSIVEを見つけて止めてくれるのに。
→解決編へ
_ オブジェクトを含む配列にin_array
ついでにもう一つ。
$foo =& new stdclass();
$array = array(
$foo,
);
if (in_array($foo, $array)) {
echo 'found';
} else {
echo 'not found';
}
みたいなコードは、Wrong datatype for first argumentになるのも仕様なのか。まあちゃんとエラーメッセージが出るから仕様なんだろうけど、
Note: In PHP versions before 4.2.0 needle was not allowed to be an array.
とは書いてあるけど、objectはダメとは書いてないんだよな。
っつーかまあさっきの問題とこれとは同根で、オブジェクト同士の比較がうまくいかない(場合がある)から、in_arrayでオブジェクトが指定できないんだろうな。
せめてis_referenceとかができるなら、自前で実装できるんだけど、ある変数がリファレンスかどうかを判別する方法(別の変数と比較して同じシンボルテーブルを差しているかどうかがわかる、あるいは、そのシンボルテーブルを差す変数が複数存在するかどうかがわかる。)ってないよね。var_dumpのソースを見ればやり方は分かるんだろうけど。



Before...
_ ishinao [おお、ちゃんとあったんですね。情報ありがとうございます。調べてみたら日本でもFreeStyle Wikiは対応してい..]
_ ただただし [spam用フォルダは、Gmailみたいに古いのを自動的に消すようにしないと、油断するとすぐあふれますねぇ]
_ jouno [majorバージョンは管理者が定期的に巡回して前回のバージョンからの変更の中から選択して文責付きでコミットする、とい..]