たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
フォクすけブログの英語版ができた件を採り上げているニュースで、日本発のキャラクターらしく(?)若干"萌え"の要素を含んでおり
と書かれていて、「えぇぇぇぇぇぇぇ???」と思ってしまった。
もえじら組の立場が無いYO!
森奈津子風に言えば、「こんなんじゃ俺の萌えチンポは勃たねえ!」「こんなんじゃ私の萌えマンコは濡れねえ!」といったところでしょうか。
<object width="320" height="256"><param name="movie" value="http://www.youtube.com/v/VF2RMTiFM2c"></param><param name="wmode" value="transparent"></param><embed src="http://www.youtube.com/v/VF2RMTiFM2c" type="application/x-shockwave-flash" wmode="transparent" width="320" height="256"></embed></object>
オープンソースという概念を説明するのって、難しい。いや、「クローズドな物に比べてオープンなんだ」とかそういうことはもちろん言えるんだろうけど、「具体的にそれでどういうメリットがあるの?」ということまで理解してもらうための説明となると、ハードルがとても高い気がする。
ソースが公開されていることとオープンソースであることというのは別だ。ソースは公開されてるけどそこから派生版を作ることを禁止している場合もある。意見は分かれる所だろうけど、だから僕はオープンソースの定義に合致しているかどうかという所で判断している。Firefoxの名前とロゴマークの入ったビルドは自由に再配付できないので、厳密に解釈すると、Firefoxもオープンソースなソフトウェアとは言えない気もする(ロゴが付く前のMozilla Browserなら、オープンソースだと迷い無く言える)。
僕自身は、オープンソースであることの一次的なメリットは開発者にしか無い、エンドユーザにとってはオープンソースかどうかなんてのは全く関係がない、と思っている。
dragdropupload。<input type="file" />な入力フォームへファイルをドラッグ&ドロップしたら、そのファイルのパスをフォームに入力してくれるというもの。地味に便利だ。
……っていうかこういうことは標準で実装しとくべきものなんじゃないのか?
TBEの機能を完全に代替できる拡張機能について、すでにある物は再発明しない方向性で、ちょこちょこ探してるんだけど。
ブックマークに文字のズーム状態を記憶させておく機能については、Content Preferencesがイイ感じに使えるっぽい。ブックマークなどからの読み込みでも問題なく設定を復元してくれる。
やるかどうかは分からないけど、タブのロック状態とかを記憶させるのもこの拡張機能に対する拡張で実現できないかな? もしかしたらTab Mix Plusはすでにそういう機能を持ってるんだろうか。
Snap Links面白い。選択範囲のリンクをタブで開く系の拡張機能はいくつもあるけど、これは複数リンクを矩形選択できるという所が他から一歩抜きん出てる。例えばmixiのマイミク日記一覧だと、普通に範囲選択すると「日記本文へのリンク」「JavaScriptのリンク」「日記本文へのリンク」……という風に余計なリンクまで選択されてしまって、範囲内のリンクをタブで開くと無駄なタブが開かれてしまうんだけど、こいつなら、必要なリンクだけを選ぶことができる。
使い方の解説はPOP * POPの記事が詳しい。
どうやってリンク抽出してるんだ?
追記。ソース見てみたら、document.linksをループ回して見てるだけっぽい。
タブカタログのサムネイル上でリンクをクリックしたらリンク先に飛べるようにしたついでに、リンク上の中クリックでタブも開けるようにしてみたんだけど、これ、ちょっとでもクリック位置がずれたらタブを閉じてしまいかねないなあ。いまリンクの上にポインタがあるのかどうか一目で分かるようにしたいけど、CSSのcursorみたいなことはJavaScriptじゃ実現できないようなあ……と思った末に、現在ポイントしている位置のクリック可能な要素を強調表示するということを思いついた。でも、これで本当に実用的な速度で動くかどうか?というのははなはだ疑問だった。
GomitaさんのTab Scopeでは、DOM2 Tree Walkerによってすべてのクリック可能な要素を頭から順番に走査していき、要素のボックスの範囲がclickイベントの発生した座標を含んでいるかどうかをチェックする、という手順によってcanvas上のクリック位置に対応するリンクやボタンを見つけている。タブカタログもこの実装をそのまま使わせてもらっている。
この方法の問題は、ページの中にリンクやボタンが大量に配置されていたり、ページの末尾近くまでスクロールしていたりすると、クリック位置の要素を見つけるまでにものすごく時間がかかってしまうという点だ。クリック時のみの処理ならまあ我慢できるかもだけど、mousemoveイベントを拾って「今クリック可能な要素をポイントしている」時だけその事を示そうと思ったら、相当悲惨な事になるのは目に見えている。っていうか実際やってみてあまりの重さに死にかけた。
そこで、何年も前に試して諦めたnsIAccessibleを使う方法に再び挑戦してみることにした。
結論から言うと、これのおかげで現在の位置の要素の取得を飛躍的に高速化できて、やっと実用レベルになったと思う。
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のデモンストレーションも兼ねて、こいつとも連携して動くようにした。全部のタブではなくて一部のタブだけタブブラウザから切り離して横に並べる、とかそんな事ができるようになる。
追記。めんどくさくてスルーしてたけど、タブの数から水平・垂直方向の分割数を割り出してほんとにタイル状に配置する機能も実装した。これでようやく、実用的なレベルになったんじゃないだろうか。
拡張機能のファイル群からXPIパッケージを自動的に生成するバッチファイルを、須藤さんの書いたスクリプトとにらめっこしながらシェルスクリプトに移植してみた。
元々バッチファイルもシェルスクリプトもよくわかってなくて、chmodを使う必要があったことからcygwinを入れざるを得なかった関係上、各コマンドの名前がWindows用の物なのかsh用の物なのかよくわかってなかったんだけど、あれこれぐぐりながら情報かき集めて、どうにかこうにか動く物になってくれた。
一応使いかたを説明しておくと、以下のような感じ。