たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
dragdropupload。<input type="file" />な入力フォームへファイルをドラッグ&ドロップしたら、そのファイルのパスをフォームに入力してくれるというもの。地味に便利だ。
……っていうかこういうことは標準で実装しとくべきものなんじゃないのか?
TBEの機能を完全に代替できる拡張機能について、すでにある物は再発明しない方向性で、ちょこちょこ探してるんだけど。
ブックマークに文字のズーム状態を記憶させておく機能については、Content Preferencesがイイ感じに使えるっぽい。ブックマークなどからの読み込みでも問題なく設定を復元してくれる。
やるかどうかは分からないけど、タブのロック状態とかを記憶させるのもこの拡張機能に対する拡張で実現できないかな? もしかしたらTab Mix Plusはすでにそういう機能を持ってるんだろうか。
Snap Links面白い。選択範囲のリンクをタブで開く系の拡張機能はいくつもあるけど、これは複数リンクを矩形選択できるという所が他から一歩抜きん出てる。例えばmixiのマイミク日記一覧だと、普通に範囲選択すると「日記本文へのリンク」「JavaScriptのリンク」「日記本文へのリンク」……という風に余計なリンクまで選択されてしまって、範囲内のリンクをタブで開くと無駄なタブが開かれてしまうんだけど、こいつなら、必要なリンクだけを選ぶことができる。
使い方の解説はPOP * POPの記事が詳しい。
どうやってリンク抽出してるんだ?
追記。ソース見てみたら、document.linksをループ回して見てるだけっぽい。
Debugmode Winkで、サムネイル上でのブラウズ操作の様子の動画を作ってみた。
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash5/cabs/swflash.cab#version=5,0,0,0" height="314" width="356"> <param name="movie" value="/xul/_video/tabcatalog_browser.swf"> <param name="play" value="false"> <param name="loop" value="false"> <param name="quality" value="low"> <embed src="/xul/_video/tabcatalog_browser.swf" quality="low" loop="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?p1_prod_version=shockwaveflash" height="314" width="356"> </object>
このあたりの成果は本当にGomitaさんのTab Scopeからのそのまんま引き写しなんだけども。
第2回拡張機能勉強会でTab Scopeのプロトタイプを見てから、公開されたらぜひタブカタログでこの機能を使わせてもらおうと思っていて、気がついたら公開されてたので早速見てみたんだけども、他の拡張機能とかで機能を利用できるような設計になってなかったので、仕方ないから関係してるコードをコピペしてタブカタログに仕込んでみた。
ただ、画像を含むリンクで画像の前後に改行があったりすると上手くいかなかったので、そこだけ手を加えた。
分割ブラウザを更新した。機能的には目新しい変化はなくて、じゃあ何が変わったのかというと、機能の見せ方。「ブラウズ領域を分割する」というメンタルモデルだけでなく、「タブブラウズのタブをひっぺがして横に貼り付ける」という風なメンタルモデルで利用できるようなメニュー項目を加えてみた。それが「横に並べる」と「縦に並べる」という物。また、「分割されたブラウズ領域をタブブラウザのタブにまとめる」機能も同時に加えた。これを使うことで、あたかもOperaでタブ表示とタイル表示を切り替えるかのような感覚で使えるようになる……といいなあ、という目論見だ。
また、マルチプルタブハンドラのAPIのデモンストレーションも兼ねて、こいつとも連携して動くようにした。全部のタブではなくて一部のタブだけタブブラウザから切り離して横に並べる、とかそんな事ができるようになる。
追記。めんどくさくてスルーしてたけど、タブの数から水平・垂直方向の分割数を割り出してほんとにタイル状に配置する機能も実装した。これでようやく、実用的なレベルになったんじゃないだろうか。
「諦めた」と宣言したそばからナンだけど、あの後もう少しがんばって、どうにか対応してみた。aioContent
のリダイレクタになるオブジェクトを定義するだとかの珍妙なテクニックを駆使しまくって、やっとのことで。
AiO Gesturesのためだけに7KBくらいはコード書いた気がする……あまりにハック用コードが膨大になってきたから別ファイルに分離しちゃったよ(リンク先の半分あたりから先は全部AiO Gestures用のコード)。
TBEの分割・再構築の一環で、マルチプルタブハンドラに続いて情報化タブを公開した。
今回、未読タブの強調表示の方法は斜体で決め打ちにした(userChrome.cssでカスタマイズできるけど)。設定UIに凝っても誰も喜んでくれないみたいだから…… 現在のタブを強調表示する機能は、Fx 2のタブだったら最初から現在のタブが判別しやすくなってるから、オミットしてしまった。
これが第2弾なのは、実装に手間がかからないからというだけの理由なんだけど、まあともかく、これでuserChrome.cssを使ってタブを縦置きすれば、とりあえずFirefox 2には移行できるかなー。という感じ。
いちおう旧TBEよりは若干改良してある。
昨日一日がかりで作ってた物をマルチプルタブハンドラという名前で公開してみた。
「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+)(&.+)?$/);
に直したら改善された。