たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
なんでって特に理由があるわけじゃないんだけど、ここのところずっと家計簿を付けるのが億劫で半月に1回とか1ヶ月に1回とか溜まったレシートをまとめて処理することが続いてしまっている。書き漏らしも出てくるだろうし、クレジットカード払いの明細との突き合わせも面倒になるし、いい事なんにもない。
ところで先月はIllustrator CS3を買ったり返品したりIllustrator CS2を買った(落札した)りで家計簿上額の大きな買い物が余計に発生したために、収支がアレなことになっている。あと夏コミで同人誌に2万6千円以上使ったらしいということも(当日メモはしてたけど合計は計算してなかったから)地味に「うわぁ」と思った。うち7500円は会場でたまたま見かけてネタで買ったクベルタ・ノワールだから純粋に同人誌だけだと実質2万円ってとこなんだけど。
XUL/Migemo新版を公開した。
池田さんに教えてもらうまで存在を知らなかったSearch Markerのような、検索のヒット位置をスクロールバー横に表示する機能を追加した。Search Markerとは以下の点が異なる。
これの絡みで、選択範囲とか強調表示とかまわりの処理をだいぶ書き直した。強調解除で選択範囲が復元されなかったり、強調表示した状態での再検索がやたら重かったり、といった細かい問題が色々直ってるはず。
検索にヒットしてフォーカスされた箇所を画面中央に表示する機能は、以前実装してみたもののいざ使ってみるとウザくて全然使ってなかった。そのウザさの原因はどこにあったのかというと、多分、すぐ次の行とか近くにある語にヒットした時まで強制的に画面がスクロールして、ページのどこが表示されてるのか分からなくなってしまいがちという所だったのだと思う。というわけで、画面の端から30%内側のラインより外にある時だけスクロールするようにした。Safariとかはこういう動作になってたと思う。どうしてFirefoxの素の検索機能はこういう所で気が利いてないんでしょうね。
スクロールといえば、クイックMigemo検索中にページをスクロールしている間はタイムアウトのためのタイマーを止めるようにしてみた。スクロールして眺めてるのにハイライトが消えてしまってムカツク、ということが何度かあったので。
そんな感じの細かい改善が結構入ってます。
んげ。今LDRでふと検索を試してみたら、スクロール全然できなくなった。iframeではないCSSによるスクロール可能なボックスのことを考えるのを忘れていた。
他にもやってる人いそうだなあ……
前のエントリの追記が多くなったので分ける。
「すべて強調表示」の強調箇所がspan要素ではなくnsISelectionになった件については、nsISelectionControllerの選択範囲の型の中にSELECTION_FIND
というのが増えていて、ユーザの選択範囲や検索で現在フォーカスがあたってる箇所を表すSELECTION_NORMAL
とは別に管理されていることが分かった(nsISelectionControllerのメソッドを使うとこれらの型別に選択範囲の一覧を取ることができる)。ということで、「どっちも同じ選択範囲だったらどうやってフォーカス箇所を取ればいいんだ!」という問題は杞憂だったと判明した。
あとはパッチと実際の新しい実装を見ながらFirefox 3.1用のコードを書いて、Safari風強調表示を有効にしてる時だけFirefox 3.0までと同様のspan要素を使うハックを復活させるようにしたところ、アニメーション効果も無事動くようになった。元々、XUL/Migemoでは正規表現にマッチする箇所をまとめて強調しないといけない関係上、span要素を使うハックの処理のほとんどを自前で再実装してたので、思った程には大規模の改修はしなくて済んだ。
一個だけ躓いた所として、XPCOMコンポーネントの新しいメソッドをIDL定義に追加して引数にnsISelectionController型のオブジェクトを渡すようにしていた所、XPIDLでのコンパイルは通るんだけど実際に使う時にNS_ERROR_XPC_CANT_GET_PARAM_IFACE_INFO
というエラーが出てにっちもさっちもいかなくなってしまった。ダメ元で、引数の型をnsISupportsにして受け取り側でQueryInterfaceするようにしてみたところ、ちゃんと動いてくれた。一体何だったんだろうこれは。
textbox要素のsearch型については、パッチを見た限りでは今の所サイドバーの「ブックマーク」と「履歴」でだけ利用されていて、XUL/Migemoのやってるハックには影響しないようだった。
ロケーションバーの方もテストしてみようと思ったらこれが全然動かなくなってて、調べてみたらmozIStorageServiceのopenDatabase()
メソッドでplaces.sqliteを指定して開く所で「ファイルがロックされてるぞゴラァ」と怒られていた。ななななななんてこった!!! SQLite Managerで見ようとしてもやっぱりロックされてて見れないと言われる。どうも不用意な書き換えでデータベースが破壊されないようにロックがかかるようになったようだ。これはやばい。PlacesデータベースにSQLでアクセスできなくなったらXUL/Migemoのロケーションバーまわりの実装の苦労が全て水の泡になる上に、Firefox 3 Hacksで物凄いページ数使って書いた内容がまるっきり無駄になるじゃないか。マジで一瞬気が遠くなった。
精神的に半泣きになりながらmozilla-centralでスマートロケーションバーまわりのコードを調べていたら、いくつかの箇所でDBConnectionとかStorageConnectionとかそういう文字列が登場していて、それをキーに調べてみたらnsPIPlacesDatabaseというインターフェースのDBConnection
プロパティからPlacesデータベースへのコネクションオブジェクトにアクセスすることができるらしいということが分かった。このインターフェースはPlaces API関係のサービスが実装していて、以下のようにすればアクセスできるという事も分かった。
var dbConnection;
if ('nsPIPlacesDatabase' in Ci) { // Firefox 3.1 の場合
dbConnection = Cc['@mozilla.org/browser/nav-history-service;1']
.getService(Ci.nsINavHistoryService)
.QueryInterface(Ci.nsPIPlacesDatabase)
.DBConnection;
}
else { // Firefox 3.0.x の場合
const DirectoryService = Cc['@mozilla.org/file/directory_service;1']
.getService(Ci.nsIProperties);
var file = DirectoryService.get('ProfD', Ci.nsIFile);
file.append('places.sqlite');
if (file.exists()) {
const StorageService = Cc['@mozilla.org/storage/service;1']
.getService(Ci.mozIStorageService);
dbConnection = StorageService.openDatabase(file);
}
}
ホント焦った……4日のトークセッションで土下座せなあかんかと思ったよ。
ちなみにその4日のトークセッションですが引き続き参加者の方絶讃募集中です。9月4日19:00から池袋ジュンク堂にて開催。参加費1000円ワンドリンク制(多分)で定員40名、電話か店頭で申し込む必要があります、としつこく宣伝しておきます。どうかよろしくお願いします!!!!
一旦は実装完了したと思ったんだけど実はまるっきり仕様を読み違えてた事が判明してから直さなきゃと思ってるうちに夏コミがあったりFirefox 3 Hacksの校正があったりですっかり放置してた、Firefox 3.1からの新機能への対応をぼちぼちと。
ていうかこの絞り込み機能、めっさ使いにくい気が……せめて初期状態のキーワードはもうちょっとわかりやすい物にした方がいいと思うんだ。こんなそこいらの使われてない記号を適当に当てはめただけのものなんて、とても憶えられんよ。
しかも複数指定可能とかで頭がこんがらがってきたので、手戻りを防ぐために自動テスト書いたりもしてみた。こういう時ほんとにUxUがあって良かったと思う。
あとlevelさんのエントリの後半で触れられてるスマートキーワードとの連携についても、パッチを見ながら実装してみた。でもこれって実装を見る限りPOSTメソッドのスマートキーワードには非対応ですよねぇ……どうすんだ?
他に、すでに開かれてるタブにマッチした時はどうこうするという話も出てるみたいだけど、僕としては本家の実装が出てきてからその動作を真似る形を取らざるを得ないので、現状は様子見です。
ああ、あとすべて強調表示が選択範囲になったことへの対応もしなきゃなあ。見た目の問題だけじゃなく、今のXUL/Migemoは選択範囲の位置で現在の検索のフォーカスを判断してるから、何もかもが動かなくなる予感。
textboxのsearch型というのは何か影響するんだろうか? 影響有りならこれも対応しないと……
Second Search 0.5.2008090101公開。表題の通り、ロケーションバーから検索できるようにしました。
(スクリーンショット)
ツールバーのカスタマイズでWeb検索バーを外してロケーションバーだけ残している状態だと、ロケーションバーでWeb検索できるようになります。狭い画面を有効活用したい人にオススメ。
将来のFirefoxで検索バーが消滅するかもとどっかで聞いたので「おいおいそれじゃ全然使えなくなっちまうじゃねえか」と思って実装してみたんですが、よく考えたら検索バーが消滅するならこういう機能も標準で付いてしかるべきですよね。ああ無駄な努力。
あと、外観や動作には全く関係ないですが、Firefox 1.5を切り捨てて内部処理を大幅にリファクタリングしました。特にスマートキーワードを検索エンジンとしてリストアップするための機能をだいぶ書き直してます。ブックマークを追加したり削除したりした時の怪しい挙動がだいぶ無くなったと思う。多分。バージョンを0.1上げたのはそれによるところが大きいです。
返事がないのが返事、と言われた。
「普通の人」はその意味をきちんと理解できるみたいなんだけど、アスペルガー症候群の疑いがあるような空気読めない僕には、どうしてもその意味がきちんと理解できない。
いつも返事がない人から「返事がないのが返事」って言われても……僕には分からないですよ。その返事だけが唯一に近いチャンネルなのにそれが断たれたら他の情報ソースが無い、情報ソースがなければ何も分からない、としか僕には思えないし。
でも「普通の人」はそれでも、全ての感覚を総動員してチャンネルがない所にもチャンネルを開いて、コールドリーディングもホットリーディングも使いこなして情報を引き出して、「返事がないのが返事」の意味をきちんと理解できるものらしい。僕にはそれが、エスパーのようにしか感じられない。
池袋ジュンク堂にでかフォクすけぬいぐるみが行ってるそうです。9月4日のイベント当日までここにいるそうな。
以下しつこいですが宣伝。Firefox 3 NITEと称して、9月4日19:00から池袋ジュンク堂にてFirefox 3 Hacksの出版記念トークイベントが開催されます。参加費1000円ワンドリンク制で定員40名、電話か店頭で申し込む必要があるとの事です。詳しくはジュンク堂のサイトのイベント案内をご覧下さい。また既報の通り、小サイズのフォクすけぬいぐるみ3体が抽選用景品として提供されたそうなので、ぬいぐるみが欲しい人もおいでませ。
ていうかトークイベントとはいっても何を話題にすればいいのかさっぱりなので、ネタの方も絶賛募集中です。
Tuhnderbirdには標準で、メールを暗号化したりデジタル署名を付けたりする機能(S/MIME)が含まれている。しかし、これに使う証明書はベリサイン等で購入する必要があるので、ちょっとテストしてみたいという場合にはけっこう難儀する。
これについて、いわゆるオレオレ証明書でS/MIMEのテストをやる手順を以下にまとめておく。テストした環境は、Ubuntu 8.04とWindows XP。
これで、秘密鍵と公開鍵のペアができた。次に、送信者側の設定。
これで送信者側の設定は完了。新しくメールを作成して、ツールバーの「セキュリティ」ボタン(錠前のアイコン)の右の▼をクリックし、署名するだけの場合は「このメッセージにデジタル署名する」にチェック、暗号化する場合は「このメッセージを暗号化する」にチェックを入れて、自分宛に送信してみよう。受信したメールを選択すると、Subjectや送信者名などが表示されている欄の右端に、錠前(暗号化されたメール)や封印(署名されたメール)のアイコンが表示されていれば、S/MIMEでメールを送信できた事が分かる。
ちなみに、この状態で署名や暗号化されたメールを他の人に送った場合、受信者側では、署名されたメールでは封印のアイコンにバッテンが付いたアイコン、暗号化されたメールでは錠前にバッテンが付いたアイコンに加えて「このメッセージを復号できませんでした」というメッセージが表示される。
というわけで受信者側でも以下の設定が必要になる。
本当はこの後「他の人の証明書」他部を選択して同じ手順で証明書(公開鍵)をインポートする必要があると思うんだけど、ここまでで出てきているmail.crtは適当に作ったオレオレ証明書で認証局証明書と兼用になってしまってるので、「他の人の証明書」でインポートしようとしてもうまくいかなかった。
ともかく、認証局証明書にオレオレ証明書を登録した状態で、先程の送信者からの署名済みメールを受け取ると、Subject等の欄の右端に表示される封印のアイコンからバッテンが消える。
暗号化の方はよくわかんない……オレオレ証明書を一個だけ作るんじゃなくて、認証局証明書と個人用証明書の二つを作ってもう一度実験してみないといけない?
昨日のFirefoxNITEで言われたこと色々。
店長さんが前よりさらにいかつい容姿になられていたのでまた余計にビビってしまった今日この頃です。