たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Split BrowserのAPIのドキュメントを用意してみた。まあ、こんなもん使う人がどれだけいるんだか、はなはだ疑問なんだけど……
「諦めた」と宣言したそばからナンだけど、あの後もう少しがんばって、どうにか対応してみた。aioContent
のリダイレクタになるオブジェクトを定義するだとかの珍妙なテクニックを駆使しまくって、やっとのことで。
AiO Gesturesのためだけに7KBくらいはコード書いた気がする……あまりにハック用コードが膨大になってきたから別ファイルに分離しちゃったよ(リンク先の半分あたりから先は全部AiO Gestures用のコード)。
AiO GesturesとSplit Browserの連携を試みてみよう、と思って挫折した。基本的にSplit Browserは、Firefoxの初期状態の構造であることを前提にして開発されている拡張機能とは、とても相性が悪い。ハック用のコードを書いてみようと思っても、変更箇所が膨大になりすぎて、とてもやる気が起こらない。FireBugとの連携が結局中途半端な状態で止まってしまってるのもそのせいだ。
Split Browserが連携しやすいのは、Firefox全体に渡ってではなく、tabbrowserというウィジェットに対してだけ拡張を行うように設計されている物だ。マルチプルタブハンドラや情報化タブやなんかは最初からそういう風に設計したので、わりかし簡単に連携がとれるようになった。
TBEの分割・再構築の一環で、マルチプルタブハンドラに続いて情報化タブを公開した。
今回、未読タブの強調表示の方法は斜体で決め打ちにした(userChrome.cssでカスタマイズできるけど)。設定UIに凝っても誰も喜んでくれないみたいだから…… 現在のタブを強調表示する機能は、Fx 2のタブだったら最初から現在のタブが判別しやすくなってるから、オミットしてしまった。
これが第2弾なのは、実装に手間がかからないからというだけの理由なんだけど、まあともかく、これでuserChrome.cssを使ってタブを縦置きすれば、とりあえずFirefox 2には移行できるかなー。という感じ。
いちおう旧TBEよりは若干改良してある。
マルチプルタブハンドラを更新する中で、思い付いたというか気がついたことなんだけど。
nsISessionStoreを使ってウィンドウやタブを複製する方法って、うまくやればもっと効率よくやれるんだな。getWindowState()
で取得した文字列をそのまま使うんじゃなくて、一旦eval()
で評価してオブジェクトの形に戻して、不要なタブのデータとかをあらかじめ全部削除してから、もう一度toSource()
でJSON風文字列に戻して使えば、無駄なタブを開く→初期化→無駄なタブを削除 という処理をなくすことができる。
ていうかもっと突き詰めれば、ウィンドウ全体の状態を取得した後で、そのデータの中からある特定のタブの状態だけを抜き出して(それ以外を消して)、そのウィンドウ自身に対してsetWIndowState()
で「復元」を実行してやれば、タブをウィンドウ内に複製することだって簡単じゃないか。
というわけで、時々自分自身もタブの複製機能を使っていたこともあって、マルチプルタブハンドラにこの機能を組み込んでみた。
昨日一日がかりで作ってた物をマルチプルタブハンドラという名前で公開してみた。
「TBEのFirefox 2用アップデート」というのは敷居が高すぎるというか既に情熱が枯れてしまった僕には荷が重すぎてとても不可能なので、今ある機能のうち特に自分が今よく使っている機能から順番に再実装していくことにした。こいつはその中でも、タブのクローズボックスのドラッグによる選択→まとめて閉じる という操作だけに特化した拡張機能だ。
この機能は元々はiRiderというブラウザの挙動をパクった物で、TBEの機能の中では最も最近加わったやつなんだけど、Firefox 2標準のタブの使い方を勉強するには手頃な規模の物になったと思う。
で、せっかくだから似たような実装で実現できる機能として、タブカタログの「ドラッグして選択→いろんな操作」という挙動も盛り込んでみた。メニューの内容は簡単に追加できるようにしてあるので、これからTBEの機能を分割していった後にも比較的楽にそれぞれを連携できるんじゃないだろうか……と、夢想してみている。
APIはまだちゃんとしたドキュメントは書いてないんだけど、草稿はあるんで、userChrome.jsあたりと組み合わせて誰か使ってみてくれないかなあ。とか。
あと、Tab KillerをFirefox 2向けにアップデートした時に勉強した成果を活かして、Firefox 2のセッション管理機能だけを使って「タブをウィンドウに分割」という機能も入れてみた。
何となく、この規模でこの程度の機能の物は既に誰かがもう作っちゃってるんじゃないかなーという気もするんだけど。どうなんだろ。
ていうか開発初期の数時間くらいの間、名前をどうするか悩んでて、「タブを選択したりまとめて閉じたりするアレ」とかのネタっぽい名前が結構有力候補になってたんだけど、結局こういうモヤモヤしたよくワカラン名前に落ち着いた。まあ、どうせ今頃こんなの作った所でハナから死んだプロジェクトみたいなもんだし、どうでもいいよね……
どうでもいいといえばこれはほんとにどうでもいいんだけど、「マルチプルタブハンドラ」てカタカナで書くと「ハムナプトラ」とか「アルハンブラ」とかそういうのと混乱して困る。
複数ページに分かれている続き物のコンテンツを動的に結合して表示する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+)(&.+)?$/);
に直したら改善された。
無効にするべき10の拡張機能。リンクされてたので見てみた。
要約すると、以下の10の拡張機能はこういう風にダメだから窓から投げ捨てろと書いてある。
大別すると「迷惑だから使うな」系と「大して役に立たないよ(メリットとデメリットが釣り合わないよ)」系に分類できるか。
後者のグループについては、大きなお世話という気がする。本人が感じるメリットとデメリットを天秤にかけて選んでるんだから、他人の感覚でどうこう言う筋合いではない。まあ、有効に活用してない人を見ると確かに「あーあ」って気はするけど。All-in-One Gesturesをわざわざ導入してるのに「戻る」と「進む」くらいにしかジェスチャ使ってない、とかね。
m.tamaki氏によるエントリとFirefox Hacksを見ながら自分でも試してみた。オブジェクト署名証明書が無いので、とりあえずオレオレ証明書での実験だけど。
Tab Catalogの一覧表示を開く時にもたつく問題の改善方法を、実験を交えながら改めて検討してみた。
色々試してみて分かったのは、どうもHTML CanvasをDOMツリーに埋め込んだ後、描画されるまでの間がもたついているらしいということ。何も描画していなくても、Canvas要素を埋め込むだけでだいぶ時間がかかるっぽい。
ということでサムネイル用のプレースホルダーだけ用意しておいてCanvas要素をタイマーで一つずつ追加するようにしてみたところ、ホットキーを入力した直後の反応が格段に良くなった。トータルではあまり変わってないか、むしろ遅くなってる可能性もあるけど、体感的にはこっちのほうがずっといい。