たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
第8回Mozilla拡張機能勉強会のプレゼン資料を公開した。
以下、内容を改めて整理してみる。
どうにかフルカラー表紙の印刷〆切に入稿が間に合ったので、もえじら組トップを色々更新しました。
今回出す本は、2005年冬コミから2007夏コミまでの間に発表したPiro作品の再録本です。何でも入ってるSuiteにちなんで?、名前は「Moezilla Sweet!」としました。 内容自体は変わってませんが、初出時にトーンを貼る時間が無くて真っ白けだったのがマシになってるとかそういう程度の修正はしてますっていうか今まさに作業を進めております。
分量はもえじら組で最初に出した合同誌と同じ80ページで、印刷部数は300部です。前回はコピー本の新刊が150部出たので、同じだけはければ半数は通販に回せるかなという算段ですが、もう前に読んだからイラネって人が結構いそうだなということを考えると発注しすぎたかもしれません。在庫の山で死んでる姿が目に浮かびます。
あと、再版を望む声がちらほら聞こえてくる最初の合同誌ですが、権利関係の事もあるし在庫を抱えるのもアレだしってことで、PDFかなんかの形式でぱーっと公開しちゃえないかなーとか妄想してます。ほら、まあ、あれは、お祭りみたいなもんだったし。
ところで、表紙絵は線画だけで4時間、彩色で5〜6時間(表紙としての加工にはその後さらに4時間くらい)ってところですか……1枚描くのに平均10時間くらいというのが僕のペースのようです。ニコ動の「描いてみた」系のやつはあんまり見てないのでよく知りませんが、みなさんもっと描き慣れてて速かったりするんでしょうか? しかし中身はエロ本なのに全然表紙がエロくないので売れ行きが心配です。あまりに健全すぎるので、もうヤケクソで、今までいぬねさんのふぉくす子絵を使ってたバナーやもえじら組トップをこれに差し替えてみました。むしゃくしゃしてやった。後悔はしていない。
ツリー型タブでずっと前から発生条件が分からなくて困ってた「一つもタブが選択されていない状態」になってしまうバグの原因がやっと分かったので、速攻で修正した。
この問題は、以下の条件がすべて揃った時に発生していた。
この時、内部的にどういう処理が行われていたかというと、以下のような感じだ。
この「TabCloseイベント」というのがFirefox 2以降で使えるAPIなんだけれども、問題は7のステップで起こっていた。7のステップで「次に選択するべきタブ」を決定するためのキーとして「現在開いているタブの総数」を使っているのだけれども、その値は1のステップの間に取得しているため、1から7までの間のどこかでタブの数が増減した場合、タブの選択状態が狂ってしまうのである。7のステップで「現在のタブまたはそれよりあとのタブ」が選択される場合、ここでは4のステップでタブの数が減少しているため、「次に選択するタブの番号」が「すでに削除されたタブ」のインデックスを指し示すことになり、selectedTabの値がundefinedとなりNull Pointer Errorが発生してしまう。……というのが事の真相だった。
ツリー型タブの側でselectedTabのセッタを上書きし、もし存在しないタブが選択されそうになった時は強制的に最後のタブを選択するようにしたところ、「一つもタブが選択されていない状態」は発生しなくなった。以下はそのためのコード。
// var b = gBrowser
var getter = b.__lookupGetter__('selectedTab');
var setter = b.__lookupSetter__('selectedTab');
eval('setter = '+setter.toSource().replace(
'{',
'{ if (!val) val = this.mTabContainer.lastChild;'
));
b.__defineGetter__('selectedTab', getter);
b.__defineSetter__('selectedTab', setter);
この部分ではなく、removeTabメソッドを上書きするという手もあるんだけど、ここはいろんなアドオンが上書きしたがるためコンフリクトの原因になると思ったので、「標準的な動作と変わってしまう」ことは仕方がないと割り切って、ほとんど誰も触らないであろうselectedTabの方を上書きするようにした。ちなみに、ゲッタとセッタ両方を定義し直しているのは、片方だけを再定義するともう片方が未定義になってしまうから。
表題の件に流れを戻すと、「タブを閉じる」という操作をイベントとして捕捉できるようにしたのなら、そのイベントをトリガーにして他のタブを連動して操作するという機能も当然登場してくるわけで、そういうことを考慮せずに「はいはいイベント発行すりゃいいんだろdispatchEvent っと!」と適当に設計してしまうとこういうトラブルが起こるので、APIを作る時にはもうちょっと慎重になった方がいいよね、という教訓を得たという話なのでした。
需要がどれだけあるか分からんけど、ツリー型タブをTab Mix Plusと同時に使えるようにしてみた。といっても左右にタブバーを表示した場合限定で、それ以外の場合については全然まったく動作確認を行っていないので要注意。とりあえず多段タブの設定になってる時はそれを自動的にキャンセルするようにはしてあるけど、TMPの設定次第ではグッチャグチャになる可能性もある。
TMPによって改変された後のDOMツリーは旧TBEを思わせる混沌とした有り様で、解析するのにえらく骨が折れた……
表題の通り。やらなきゃいけないことが他にあるのに放っぽって巻き戻し/早送りボタンをいじっていました。
Rewind/Fastforward Buttonsは現在自分でも使ってる奴の中では最も初期の頃に書いたコードがそのまま残ってるアドオンの一つで、機能を加えるとかバグを直すだとかをやろうにもやる気が萎えるような作りだったので、長年放置してたんだけれども、現実逃避を兼ねて、ワリと最近作ったアドオンと似たようなスタイルになるようにコードを全面的に書き直したのですが、それだけじゃナンだったので、これまた前々から課題として残っていたAutoPagerizeのSiteInfoの自動インポートも実装してみました。
Wikiには次のページへのリンクの検出ルール(nextLink)しか書かれていないのですが、巻き戻し/早送りボタンは前のページへのリンクに対しても処理を行えるように作ってあるし、他のユーザースクリプトなりアドオンなりで前のページへのリンクの情報を使うような物もあるかもしれないし、ということでSiteInfoには前のページへのリンクの検出ルール(prevLink)も含めてもらえると主に僕が嬉しいです。でもそれだけのために圧倒的多数のAutoPagerizeユーザの人にとってはまったくゴミにしかならない情報をWikiに掲載してもらうというのはAutoPagerizeユーザの反感を買いそうな気もします。
自前で専用Wikiを立てるしかないのでしょうか……
途中まで作ってた奴をもう少し作り込んで、正式版としました。
表示するサムネイルはローカルに保存しています。前後のページのサムネイルを表示する方法には色々やり方がありそうなんだけど、とりあえず一番作るのが楽そうな方法(記憶領域を無駄遣いする代わりに、確実に動作して、トラブルも起こりにくい)を選びました。
ちなみに最初はキャッシュと同様にサムネイルを一つ一つ画像ファイルとして保存するように作ってたんだけど、サムネイルが溜まってきた時に要らないやつを削除する処理について、効率的にやれる方法を思いつけなかったので、思い切ってMozStorage(SQLite)に手を出してみました。画像はdata: URL形式の文字列としてプロファイル内のbfthumbnail.sqliteに格納されます。SQLのことはよくわからんのでFirefox内のコード等を見ながら見よう見まねで書いてみたんですが、一応動いてるみたいなので大丈夫なのかな、と。
タブブラウザ拡張3を公開しました。
……といっても実際にタブブラウザ拡張のバージョン3を作ったわけではなくて、情報化タブ、マルチプルタブハンドラ、ツリー型タブ、ソース表示タブを以前訳したマルチアイテムパッケージの作り方のまんまで一つにパッケージングしただけですハイ。「TBE3」をインスコすると上記4つのアドオンがアドオンマネージャに普通に並びます。
まあ、色々要望等はあると思うけど、僕にとってはこれだけ揃ってたら「TBE3」と名前を付けてもべつにいっかなーと思えている、僕にとっての「タブブラウザ拡張」の「他では替えが効かないもの」はこういう事かな、という感じです。
僕自身はこれに加えて以下のアドオンを組み合わせて、旧TBEで使ってた操作感をなるべく再現して使ってる。
逆に、TBEが持ってた機能で今の環境(他のアドオンとの組み合わせも含めて)に欠けてるのは、タブの複数行表示、タブの色分け、フォーカスの詳細な制御、タブのロック、自動リロード、別サイトへのリンクを常に新規タブで開く(別サイトへのリンクをタブで開く機能はツリー型タブ 0.3.2007102902に実装した)、リファラの送信禁止(Adaptiva Referer Removerで代用可能)、JavaScript・Cookie・Refreshによる自動リロード・プラグイン・画像表示それぞれのタブごとの有効無効の設定、それらの情報をブックマークに保存する、といった機能か。
また後で改めて書くけど、タブブラウザ拡張いっこのためにOSのアップグレードすら半年以上(Firefox 2リリースの時から数えれば1年近く)できずにいたので、ついにここまで来たかぁ、と感無量です。
なお、TBE3に含まれている4つのアドオンはどれも一応最近のMinefieldで動作確認はしてるので、次のFirefoxメジャーアップデートの時には今回よりはすんなり移行できるんじゃないかなと思ってる。まあまだUIまわりが(特にタブが)色々変わる可能性はあるようなので安心はできないけど。
Firefox 3でセキュアじゃない拡張機能はまるっきり使えなくなってしまうということで、須藤さんにお願いしてCOZMIXNGのスペース上にファイル群を移動させてもらった。配布ページからのリンクは変化がないように見えるけど、実際に辿るとリダイレクトでCOZMIXNGのファイルに飛ばすようになってる。あと、現在上がってる拡張機能については全部updateURLを書き換えた。