http://mozilla.jp/events/2009/fxdevcon/
午後のセッションに行ってきました。
はてなブックマークの拡張の話を聞いてみて、普段の開発にも活かせそうなものをピックアップしてなぐり書きしておきます。
ブックマーク保存時はサーバーにポストして、失敗したときはリトライをし、それでも駄目な場合に初めてユーザーに通知しているようです。これは HTML5 のデータベース保存にも使えるテクニックかなと思ったのですが、 HTML の場合ページ移動があって若干スコープが違うので、少しやり方を考えないといけないかもしれません。
ダイアログといった UI はすぐに閉じてしまい、バックグラウンドでサーバーにポスト。「送信中です」みたいなものもなしで、ユーザーは待たされている感を与えないのがいいです。オフラインでもない限りほとんど失敗しないでしょうし。
同期のデータ形式を plain text にし、クライアントで split して解析しているとのこと。 XML/JSON のデータ構造は重く処理に時間がかかってしまうため、 plain text を gzip 圧縮しているそうです。なるほど。
UI をブロックさせないため 200 件ごとに 1 秒のウェイトを入れているようです。 固まらせないようにするためです。
コードの話です。はてなは Perl もソフトタブのスペース 4 でやっているので、それに合わせているとのこと。 nanto_vi さんは Mozilla のコーディング規約の 2 にしたいみたいなことを言っていました。自分も趣味のプログラムは Mozilla のコーディング規約に従ってソフトタブのスペース 2 にしています。ハードタブは使わないです。
Tombloo に使われているモジュールなど、 JavaScript は基本的にコードがオープンなので使えるものは積極的に取り入れているみたいでした。
JavaScript は関数に名前を指定しなくてもいいのですが、無名関数だとエラー発生時にどこでエラーが発生したのか分かりづらいです。素早く発生源を特定できるように常に名前をつけるようにしているとのこと。コーディング規約です。
setTimeout(function() {
console.log(arguments.callee);
},100);
setTimeout(function aaa() {
console.log(arguments.callee);
},100);
他にも色々話しをしてくれていましたが、普段の開発にも使えそうなものを書いてみました。
最後にカンファレンスを開いてくれた関係者の皆さん、発表者の方々に感謝します。