たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
目が覚めたら14時でした。
勉強会本体の感想。
Firemacs作者の山本さんの話を聞いてると、以前の自分を思い出した。XPCOMにどんな機能があるのか知らなかった頃に、知ってる範囲の知識でどうにかして解決しようとあれこれ工夫を試みていた。そういう「工夫」を思い付くかどうか、というのが、もしかしたらある種の「分れ道」なのかもしれないなと思った。
marさんによるXUL preLoaderの話。
document.loadOverlay()
で動的に読み込む。……というのが、preLoaderの発想。preLoaderのような発想が僕に無かったのは、loadOverlay
というメソッドを知らなかった・存在を忘れてたからというのも大きいんだけど、それ以前に、他の拡張機能で同じ方法を使われて異なるIDを指定されてしまったらこのテクニックは破綻してしまう、ということに気づいていたからだ。僕は以前から、拡張機能を作るときは他の拡張機能となるべく衝突しないようにということに気を付けるようにしている(TBEの時はそれで散々叩かれたし)ので、preLoaderのテクニックはあまり推奨しづらい。
ところで、今ふと思ったんだけど。E4X使ったらJavaScriptの中に普通にXUL文書片を書けるから、preLoaderあんまりいらなくね?(ぉ
誕生日を祝ってもらえて、フォクすけは幸せ者ですね。僕もこれくらい愛されてみたいです。どうでもいいですが、ケーキの周りのフィルムについたクリームを舐め取っている様子をばっちり撮られてしまっていました。
Mozilla 24のための各プログラムの番宣ビデオ?の撮影があって、Shibuya.jsのビデオに僕まで出ることになってしまった、というかほとんど僕が喋ってた。幽霊部員なのに。あとで映像見てみても、ほんとキモイなーと思った。また叩かれるんだろうなあ。いやだなあ。
CNET JapanのFirefoxのコラムが更新されました。最終回です。
ライフハックのアレも最終回。当然、僕のキモ声動画も最終。今回はNewsFoxの使いかたです。でも僕はLDR使ってるんですよね……
たけんさんがとりあげてる、SOI A+zilla Add on Competition。プレゼン資料の一個目を見た人は気がついたかもだけど、これは僕が作った物だったりする。資料の内容自体はこないだのでぶこんの焼き直し(GomitaさんがSoftware Design誌の特集記事用に書かれたチュートリアルをベースにしたもの)で、150ページほどをImpressのプレゼンに手作業で変換するのに丸三日かかったと書いたのはこれのことなのでした。
いやね。こないだ慶應SFCまで行ってワークショップの先生のまねごとをやらせていただきまして。その時は事情を全然知らんかったのですが、こういうことだったんですね、と。
でぶこんの時はPC持ってきてる人が少なかったからチュートリアルをチュートリアルっぽく進めてよいものかどうか迷って悲惨な結果になったけど、この時のワークショップでは、それよりずっと少ない人数で全員それなりに基礎知識のある人ばかりだったんで、でぶこんの時にやりたかったことを実行することができたと思う。一人一人PCの画面を見て回って、うまくいってないようだったらアドバイスして、みたいな。
ただ、サンプルコードとか焦って用意したから全然テストしてなくて、それをダウンロードして使ってくれてた参加者の方が「うごかねえ!」とドツボにハマりまくっていたので、でぶこんの時とは別の意味で悲惨な結果になったと言えよう。最終的に予定の時間を大幅にオーバーしてたし……
ちなみに資料の英訳はボランティアかプロか知らないけど誰か他の人がやって下さいました。僕が訳したわけではないです。
テキストシャドウを:hover, :focus, :activeのダイナミック疑似クラスに対応させた……つもり。でも試してみたら:focusは意図通り動いてくれない。何でだろう。
テキストシャドウに、userContent.css内の指定を読む機能を加えた。圧倒的多数のサイトではtext-shadowはまだまだ使われていないけれども、ユーザースタイルシートを使えば色々遊べるよ、と。
といっても全サイトで同じ色の影しか指定できない、サイトごとにいちいち影の色を指定しなきゃいけない、なんてのじゃあとてもじゃないけど使ってらんないので、userContent.css内の指定のみ、色が無指定の時はCSS3の仕様を無視して自動的にそれっぽい影の色を適用するようにしてみた。例えばh1, h2, h3, h4, h5, h6 { text-shadow: 0.2em 0.2em 0.2em; }
とかuserContent.cssに書いとけば、色んなサイトで影が付いて楽しくなるかもしれません。
ちなみに、XPCOMを使ってもuserChrome.cssやuserContent.cssから生成されたスタイルシートオブジェクトには絶対にアクセスできない。なので今回は、新規に空のドキュメントを生成し、そこにxml-stylesheet処理命令でuserContent.cssを読み込ませて、生成されたスタイルシートオブジェクトを参照する、という裏技を使っている。
テキストシャドウを作って以降、何かの機会に見るページで不意に影付きテキストがあったりして、「ああ、今まで僕は『古いブラウザの人は最新のWeb技術の恩恵を受けられなくてかわいそうだなあ』とか思ってたけど、いつの間にか、Firefoxユーザの自分自身の方が『最新の技術の恩恵を受けられずにみすぼらしいページしか見れずにいるかわいそうな人』になっていたんだ……」と切なくなる。(いやまあtext-shadowそのものは10年近く前の仕様ですけどね……)
Bugzillaの方のコメントにも書かれてるけど、テキストシャドウを公開した後で、2年以上前に同じようなことをやってた人がいたことを知った。いやぁ、薄々「既出なんじゃね?」とは思ってはいたんですけどね。
一応、対応してる機能(CSSのセレクタをかなりまじめに解釈してる)や使い勝手(XBLを使ってるので影付きテキストのコピペで困らない、アドオンだから自動アップデートできる、など)の面でアドバンテージはあると思うけど……まあ追加のコメントにも書いたように、頑張ればそれもGreasemonkeyスクリプトで実現は可能そうではあるわけで、アドオン嫌いグリモン好きというタイプの人は頑張ってみるのもいいかもね。
テキストシャドウは原理上、影付きのテキストをコピーしようとした時に、影のために使っているダミーテキストまでコピーされてしまうのが大きな問題だった。フォーカスできなくしたり選択できなくしたりすることはできても、コピーの対象から外すということは、普通にやる限りはどう頑張ってもできない。
で、これをどうやって解決したのかという話なんだけど。
以前XHTMLルビサポートを作った時に、略語のフルスペルをルビで表示するという機能も持たせていて、そうやって表示したフルスペルはどう頑張ってもコピーできないという現象が起こっていたんだけれども、これがヒントになった。
略語のフルスペルの表示のためにルビサポートではバインディングを使っていて、どうやらバインディングで埋め込まれた匿名内容の中のテキストノードは、触れることもコピーすることもできないようだった。そして、XBLの<children/>
要素の位置に配置された元々の子要素や子のテキストノードについては、通常通りアクセスできる。
ということは、逆に言えば、コピーの対象にさせたくないテキストはバインディングを使って匿名内容の中に入れてやればよいというわけだ。
ダイナミック疑似クラスの問題はまだ残っているとはいえ、もっとも致命的な問題はこうして解決できたので、やっと胸を張って「Firefoxをtext-shadowに対応させました」と言えるようになったと思う。
テキストシャドウを地道に改良し続けている。
Geckoもtext-shadowに対応してくれ!というバグにこれを貼り付けて煽ってみようかと思ったら、貼られていたテストケースで::first-line疑似要素が使われてて表示できなくてこりゃまずいと思ったんで、元々対応する気の無かった疑似要素と疑似クラスにまで頑張って対応してみた。疑似クラスについてはGeckoすら対応してない物にまで対応してたりして。
Text Shadow。名前の通り、CSS3のtext-shadowを無理矢理再現するインチキ拡張機能。
以下は原理的にどうしようもない問題。
以下はめんどくさいから実装をさぼってる部分。そのうちどうにかするかもしれないし、しないかもしれない。
セレクタから要素ノードを選択する処理は、selector.jsを丸パクリ。でも組み込んでみたら予想以上にまともに動いてくれなかったので、半泣きになりながら修正してやっとちゃんと使えるようにした。