たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Leak Monitorっててっきりもっとディープな人向けの物だと思ってたんだけど、入れてみたら、ふつうにJavaScriptのコードの中で起こってるメモリーリークを指摘してくれるツールだった……いろいろなプラットフォームで動くようなので、拡張機能の開発やるなら入れておいて損は無いと思う。
Firefoxのウィンドウを閉じたときに、本来は開放されていなければいけないのに開放されていないオブジェクトがあった場合、そのオブジェクトと、オブジェクトが定義されているコードのURIを表示してくれる。よくあるのはイベントリスナとかプログレスリスナとかオブザーバとかの登録解除のし忘れ。あとXBLのdestructorが動いてくれてないこともあったりするから手動で破棄するべきポイントのあぶり出しにも使える。と思う。Split Browserと2 Pane Bookmarksでずっと気付いてなかったメモリーリークをつぶすことができたのは、これのおかげだ。
ただ、「このオブジェクトが開放されてないよ」ということは教えてくれるんだけど、その原因までは教えてくれない(そこは自分でコードを精査して分析しないといけない)のが、微妙に残念だった。まあそれが当り前なのかも知れんけどさあ。
それはそうと、なんかうちの環境だとこのページ見るだけでメモリーリークが発生してるんですが。
Firefoxの主要機能を開発するために投じられた多くの人々の多大な努力をぶち壊しにする悪夢の拡張機能、タブキラーがFirefox 2のために帰ってきましたよ。
Firefox 2正式対応は伊達じゃない。今回のアップデートではなななななんと! Firefox 2の新機能の「最近閉じたタブをもう一度開き直す」機能をいじくり倒して、「最近閉じたウィンドウをもう一度開き直す」という機能に作り替えてみました。ああ激しく無駄な努力。
ソース見ればだいたい分かると思うけど、一応、実装の仕方を以下に説明しておく。
URNサポートをさらに更新して、今度こそあらゆる場面でちゃんとURNをURLにリダイレクトできるようにした。
何かヒントはないかと思ってbbs2chreaderのb2rThreadRedirector.jsを見たら、nsIContentPolicyの実装?を使って内部的にリダイレクトを行えるようだということが分かった。リダイレクト処理をプロトコルハンドラから分離して同様の実装に移してみたところ、うまくいった。URN用のプロトコルハンドラは現在では、単にurn:というスキーマのURIへのアクセスを受け付けるための役割しか果たしていない。
というわけで、以下、Firefox内部でリダイレクトを行う方法をメモしておこう。
なんで独自プロトコルへの対応方法なんか訳してたのかというと、URNサポートを抜本的に改善したかったからなのですよ、と。
今までは、URIの読み込みを行う関数やメソッドについて、URNが渡されたらURLに置き換えてから本来の処理に渡すようにあちこち書き換えるという、とてつもなく泥臭いことをしていたので、場面によってはURNをリダイレクトできないこともあった。今回の更新ではこのやり方を全面的に改めて、プロトコルハンドラを使って「urn:」というスキーマへ対応するという形に構造を作り替えたので、基本的にはどんな場面からでもURNを対応するURLにリダイレクトできるようになった。
チャンネルの生成時にそのままリダイレクト先のURLを渡すとロケーションバーにURNが表示されてるのにAmazonのページが表示される、みたいな問題を回避するのにだいぶ手こずった。結論から言うと、data: URLでHTML文書片を渡したところなんとかうまくいくようになった。と思う。
……あ。逆に、browser以外で読み込んだらこれじゃマズいことになるか……
Public Nomination(Sandbox(一般ユーザからは見えない、未承認状態の拡張機能が一時的に置かれている場所)にある拡張機能を一般公開してもらうための申請)してた拡張機能のいくつかが無事公開された。ユーザのプロフィールで見れるのがそれ。
しかし今見たら、承認されて公開されたやつだけでもう800件以上いっちゃってるようなんだけど。公開する拡張機能を200件程度に絞りこむっていう話はどうなったんだ?
1章を担当されたlevelさんが紹介されているけれども、Firefoxの拡張機能の作り方について解説した特集記事が掲載された号のSoftware Designが発売された模様です。
自分の担当したパートではXULとXPCOMの使い方を紹介したけど、それらを組み合わせて使うためのJavaScriptの書き方やCSSとかの部分は全く解説していないので、ご注意ください。DHTMLでWebアプリケーションのフロントエンドを作ったことがある、というくらいの知識レベルの人を一応想定して書いてみました。
XUL/Migemo勝手改造版の新版を公開した。目に見える所では、アイコンを追加したのと、クイックMigemo検索(自動的に始まる、もしくは「/」キーで開始する検索)の終了トリガーを変更できるようにしたくらいしか違いは無い。
根本的に変わったのはバックエンドで、先日から取り組んでた事の成果を反映して、主要な部分をXPCOMコンポーネント化した。以下、開発者向けの情報。
Ez Sidebar、ずっと放置してたけど更新した。install.rdfの記述もFx 2で使えるように直した。なんかエラーが起こってたから直さなきゃと思ってずっとあれこれしてたけど、見当違いの所ばっかり見てて6時間以上は無駄にしてしまった
うーん。対象バージョンをFx 2以降くらいに限定して作りを直すべきかなあ……現状は、他の拡張機能が動かないとか諸々の意見を受けて、このさいだからとbrowser.xulをそのまんまオーバーレイで読み込ませる事でブラウザに組み込まれた拡張機能もすべて分離したサイドバー内に読み込むようになってるんだけど、分離したサイドバー内で動作することを想定されてない(ていうか普通はそうだ)拡張機能、例えばXUL/Migemoとかでエラーが起こってしまっていて、動作の上では問題ないんだけど、エラーコンソールにエラー表示が出るのがいまいちキモい。
これを解消するには、不精してbrowser.xulまるごとオーバーレイで読み込むのをやめて、必要な所だけをezsidebar.xulに直に書く事なんだけど……コンテキストメニューの定義の事とか考えると気が重くなってきて、やっぱりやめようかな……って気になってくる。
まとめサイトのXPCOMコンポーネント開発の資料に、須藤さんがLinuxとMac OS XでのC++でのコンポーネント開発のチュートリアルを書き加えてくださった。というわけでそれに触発されて自分もJavaScriptで実際にコンポーネント作ってみた。
以前からこのページにあった解説はコンポーネント名やなんかが全部「xxx」という形になってて何がなんだか分からなかったので読む気がしなかったんだけど、須藤さんが書いてくれた部分は英語の原文と同様にコンポーネント名とかもちゃんと具体例を示してあったので、それを見ながら試してみることで、やっと理解することができた。というわけでJSの例も具体例を示すように書き直しておいた。
世の中的には、どうなんだろう。具体例から原則を見出すチュートリアル式のやり方と、原則から具体例を導き出すやり方の、どっちがウケがいいんだろうか? 先日書いたSoftware Designの記事(次号掲載予定)はチュートリアル的な書き方を意識して書いたし、自分が記事を書くときはなるべくそうするようにしてるんだけど、思考回路が全く自分と異なる人から見たら、こんなのまどろっこしくてとてもじゃないけど読んでられねえ、というものなのかもしれない。
そしてもし頭の良い人達にそういう人の方が多いのだったら、馬鹿な僕がサンプルを勝手に具体的な物に書き換えたことによって、彼らの足を引っ張ることになってしまっているのかもしれない。だとしたら申し訳ない限りだ。
くでんさんの記事を見て改めてプレビューサイトにログインしてみたら確かに僕の奴は全部サンドボックス(品質が低いと見なされた拡張機能が放り込まれる所。ここにある物は一般ユーザからは見えない。)行きになってました。
まあ中には放置しっぱなしで動作の怪しい物もあるんでしょうがないんですけど、一応自分的には「これはそれなりに安定してるんとちゃう?」と思ってる物も全部サンドボックスに突っ込まれてたので、いくつか拾い出してもバチは当たるまい、と思ってNominate to appear on public site
のリンクをクリックしてみたんだけど……一般に公開するアドオンは、サンドボックスに置かれているアドオンよりも品質が高く、Web の利用価値を高めるものでなくてはなりません。
と言われると「うーん……そう言われるとべつに品質高くもないし役に立つようなものでもないし……」と思えてきて、「くだらねー物を何個もノミネートしてきやがって余計な作業増やしやがってこいつムカつくマジで死ねよ」とか思われるのも悲しいし、という感じで「Nominate」ボタンをクリックするのがためらわれて、すごすごと引き返してきました。
まあサンドボックス内にあっても拡張機能のページ単体を直に表示すれば見れることは見れるようなので、今後は旧バージョン置き場+比較的安全なダウンロード元としてだけ使うのが僕の場合は性に合ってるのかな……と、卑屈な気分になっている僕がいます。