たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
うあああやっちまった。既にAPI使ってくれてる人がいたにもかかわらずAPIを予告なしに変更するという愚を…… 一応、本家XUL/Migemoと互換のAPI(xulMigemoCore
オブジェクト)も備えていて、そちらは動作を変えないようにしているので、XPCOMを叩かずにそっちを使ってもらっていれば今回の変更の影響は受けなかったと思うんだけど、そんなことを言っても後の祭りというやつで。
なぜこうもグダグダになってしまっているかというと、どうすれば国際化を楽にできるか、サービス同士の絡みを最小限に抑えられるか、という点で自分の中で考えが固まっていなかったからだ。
掲示板で、XUL/Migemo勝手改造版の辞書フォルダの置き場所について相対パスでの指定もできるようにならないか、という要望が出てたのでがんばってみたよ。
以下、解説。
Split BrowserのAPIのドキュメントを用意してみた。まあ、こんなもん使う人がどれだけいるんだか、はなはだ疑問なんだけど……
「諦めた」と宣言したそばからナンだけど、あの後もう少しがんばって、どうにか対応してみた。aioContent
のリダイレクタになるオブジェクトを定義するだとかの珍妙なテクニックを駆使しまくって、やっとのことで。
AiO Gesturesのためだけに7KBくらいはコード書いた気がする……あまりにハック用コードが膨大になってきたから別ファイルに分離しちゃったよ(リンク先の半分あたりから先は全部AiO Gestures用のコード)。
複数ページに分かれている続き物のコンテンツを動的に結合して表示するGreasemonkeyスクリプトのPage Concater(バージョン0.10.0)を使っていると日経ビジネスオンラインの記事でうまく動作しないどころか次のページにすら進めなくなってしまった。
concater.REG_BODY = '<div class="articlecontent">(.*?)<!-- /articlecontent -->';
ここを
concater.REG_BODY = '="articlecontent">(.*?)(<!-- /articlecontent -->|<div align="center">)';
と書き換えてみたら、ちゃんと動くようになった。あと、そもそも前後のページがあるということ自体認識できない場合もあったけど、これについては、
el.href.match(/P=(\w+$)/);
ここを
el.href.match(/P=(\w+)(&.+)?$/);
に直したら改善された。
Leak Monitorっててっきりもっとディープな人向けの物だと思ってたんだけど、入れてみたら、ふつうにJavaScriptのコードの中で起こってるメモリーリークを指摘してくれるツールだった……いろいろなプラットフォームで動くようなので、拡張機能の開発やるなら入れておいて損は無いと思う。
Firefoxのウィンドウを閉じたときに、本来は開放されていなければいけないのに開放されていないオブジェクトがあった場合、そのオブジェクトと、オブジェクトが定義されているコードのURIを表示してくれる。よくあるのはイベントリスナとかプログレスリスナとかオブザーバとかの登録解除のし忘れ。あとXBLのdestructorが動いてくれてないこともあったりするから手動で破棄するべきポイントのあぶり出しにも使える。と思う。Split Browserと2 Pane Bookmarksでずっと気付いてなかったメモリーリークをつぶすことができたのは、これのおかげだ。
ただ、「このオブジェクトが開放されてないよ」ということは教えてくれるんだけど、その原因までは教えてくれない(そこは自分でコードを精査して分析しないといけない)のが、微妙に残念だった。まあそれが当り前なのかも知れんけどさあ。
それはそうと、なんかうちの環境だとこのページ見るだけでメモリーリークが発生してるんですが。
1章を担当されたlevelさんが紹介されているけれども、Firefoxの拡張機能の作り方について解説した特集記事が掲載された号のSoftware Designが発売された模様です。
自分の担当したパートではXULとXPCOMの使い方を紹介したけど、それらを組み合わせて使うためのJavaScriptの書き方やCSSとかの部分は全く解説していないので、ご注意ください。DHTMLでWebアプリケーションのフロントエンドを作ったことがある、というくらいの知識レベルの人を一応想定して書いてみました。
XUL/Migemo勝手改造版の新版を公開した。目に見える所では、アイコンを追加したのと、クイックMigemo検索(自動的に始まる、もしくは「/」キーで開始する検索)の終了トリガーを変更できるようにしたくらいしか違いは無い。
根本的に変わったのはバックエンドで、先日から取り組んでた事の成果を反映して、主要な部分をXPCOMコンポーネント化した。以下、開発者向けの情報。
JavaScriptによるXPCOMコンポーネント作成の練習に、XUL/Migemo勝手改造版の主要な部分をXPCOMコンポーネントにするという実験をやってみた。
ブランチ切って昨日一日作業してたんだけど、それなりにうまくいったようなので、すでにTrunkにマージはしてある(Subversionでブランチ切ったものを再び統合するやり方が分からなくて右往左往したのは秘密だ)。
まとめサイトのXPCOMコンポーネント開発の資料に、須藤さんがLinuxとMac OS XでのC++でのコンポーネント開発のチュートリアルを書き加えてくださった。というわけでそれに触発されて自分もJavaScriptで実際にコンポーネント作ってみた。
以前からこのページにあった解説はコンポーネント名やなんかが全部「xxx」という形になってて何がなんだか分からなかったので読む気がしなかったんだけど、須藤さんが書いてくれた部分は英語の原文と同様にコンポーネント名とかもちゃんと具体例を示してあったので、それを見ながら試してみることで、やっと理解することができた。というわけでJSの例も具体例を示すように書き直しておいた。
世の中的には、どうなんだろう。具体例から原則を見出すチュートリアル式のやり方と、原則から具体例を導き出すやり方の、どっちがウケがいいんだろうか? 先日書いたSoftware Designの記事(次号掲載予定)はチュートリアル的な書き方を意識して書いたし、自分が記事を書くときはなるべくそうするようにしてるんだけど、思考回路が全く自分と異なる人から見たら、こんなのまどろっこしくてとてもじゃないけど読んでられねえ、というものなのかもしれない。
そしてもし頭の良い人達にそういう人の方が多いのだったら、馬鹿な僕がサンプルを勝手に具体的な物に書き換えたことによって、彼らの足を引っ張ることになってしまっているのかもしれない。だとしたら申し訳ない限りだ。