[PR]ޔԑg\
̔ԑg

電気分解部 Diary



陽極日記

2005 年 2 月の log

2005.2.1 Tue

21?

ふと踊るさんま御殿をつけたら IZAM がいた. め~てぃ~ら~. たしかあの人は永遠の 21 歳だったと思う.

もじらあんてな

にょにょ~!! 陽極日記が もじらあんてな に捕捉されてますにょ. 最近はあまり Mozilla 界隈の話を書かないのに. これを機にもっと頑張ろうと思う【謎】.

2005.2.2 Wed

仕様を満たした関数

Graviness Blog | 【DHTML】 数学の問題 【誰か教えて】 ってのがあった. 以下,マークアップを改変しつつも仕様を引用.

問題 : 以下の条件を満たす x を求めよ.

  1. x = x(t)
  2. x(0) = x(1) = 0
  3. x'(t) = 0 は 区間[0, 1] で t に関して唯一つの実数解をもつ.その解を t0 とする.
  4. x(t0) = 1.
  5. 区間[0, t0) で x'(t) > 0, 区間(t0, 1] で x'(t) < 0.
  6. 1/2 < t0 < 1
  7. x''(0) = x''(1) = 0.
  8. 区間(0, 1) で x''(t) < 0
  9. x(t) = -x(-t) を満たす (原点に関して対象).

こーゆーの,そそるんだよなぁと思いつつ,小一時間ほど悩んでみた. で,行き着いたこと. とりあえず,x=sin(πt) からスタート. ごにょっていると,x=at+sin(πt) ってのが 例として挙げられたグラフ みたいな形で激萌え. これは x=at を軸にうねうねってるグラフになるのだが,この軸を横軸としてみれば とドンピシャ. このとき,傾き a が小さくないとマズいことになるので注意すべき. ってことで,θ=tan-1(a) だけ回転している座標系をチェンジさせるために,一次変換で -θ だけ回転させた. だが,これだと周期と振幅が仕様と異なる. で,周期を帳尻合わせするために元の関数を x=tan(θ)t+sin(πt/cos(θ)) と置き直した. 回転行列とこの t と x(t) の縦ベクトルを掛けて,t' と x'(導関数に非ず)を x をパラメータとして表した. で,これから x を取り払って x'=x'(t') の形にしようと思ったら死んだ. どうあがいても f(t', x')=0 の形から進まない. x'=cos(θ)sin(π(t'-tan(θ)x')) だと. まあしょうがないとして,振幅をどうにかしようと,元の関数の微係数が直線の傾きと一致するときが,座標変換後に最大・最小となるときだろうということで,ごにょごにょして,最大値 x'(t'=(1/2)+sin(θ))=cos(θ) となることがわかった. ということで,cos(θ) で押さえられていた振幅を解放すべく x'=sin(π(t'-tan(θ)x')) ということにした. というわけで,θ=0.08π としたときのグラフ を晒してみる. これ以上はむりぽ.

2005.2.3 Thu

誤認

これはひどい.

2005.2.5 Sat

Sunbird 0.2 Release

しめやかに初のリリースビルドが出た. http://ftp.mozilla.org/pub/mozilla.org/calendar/sunbird/releases/0.2/ からどうぞ. it-IT と nl-NL の言語リソース以外,0.2RC2 と何も変わってないけど,まぁいいや.

メガネっ娘図鑑オールスターズ

void GraphicWizardsLair( void ); // 経由で,メガネっ娘図鑑オールスターズ - a photoset on Flickr. むむ. とりあえずメモ.

2005.2.7 Mon

接点 t

今日は荻野の誕生日らしい. どうでもいいが.

2005.2.8 Tue

1900

昨日 1.9k になった. そのうち 2k か. Sunbird をいじってみる 経由の人が多い昨今.

Sunbird 関連にゅーす

Mozillaのスケジュール管理ソフト「Sunbird 0.2」が初めて公式リリース. 以下引用.

Mozilla Projectでは、Mozillaの拡張機能として「Mozilla Calender」を開発しているが、Sunbirdは同じコードを共有するスタンドアローンアプリケーションとして開発されている。

ただし現在、日本語リソースファイルは公開されていない。

なんだそれ. Calender じゃなくて Calendar が正解だし,日本語リソースだって同梱されてるし. あちゃー. 日本語化を望んでいるユーザも多い中,こんなこと書いちゃったら・・・・・. 実際,「UI は英語だけどこれから開発が進んでいくと日本語版もでるんじゃない?」とか言ってる人を見かけるし.

窓の杜 - 【NEWS】Mozilla Foundationより正式リリースされた「Sunbird」は不具合修正がメイン. 以下引用.

アメリカ・カリフォルニア州を拠点とするMozilla Foundationは4日(現地時間)、「Mozilla」や「Firefox」のプラグインである「Calendar」を単体で動作するように作り直したスケジュール管理ソフト「Sunbird」で、初めての正式版となるv0.2を公開した。

プラグイン・・・・・.

Mozilla Foundation,スケジュール管理ソフトSunbirdの最初の公式リリース : IT Pro ニュース. 以下引用.

Mozilla Foundationはスケジュール管理ソフトSunbirdの最初の公式リリースとなる「Sunbird 2.0」を公開した。

Sunbird 2.0・・・・・.

Sunbird 日本語版計画

簡易日本語化はできるが,何かアレなので,完全に ja-JP にしてしまおうと思った. Mozilla Sunbird - DE (de) や Mozilla Italia (it) ではそれぞれ Sunbird 0.2 de-DE 版,0.2a it-IT 版が手にはいるわけで. 特に前者は公式ビルドに追加することでドイツ語化できる言語パックを 配布している わけで. つーことで,この de-DE 言語パックを参考に ja-JP 言語パックを作ってしてしまおうとしているのだが,なんだか上手く chrome 登録ができない状況. さーて,どーすっべなぁ.

2005.2.9 Wed

続・Sunbird 日本語版計画

とりあえず ja-JP 言語パック開発版ができた. Windows 専用. 故に 公開してみるテスツ. 詳しいドキュメントはまだ書かないけど,テキトーに使ってやってください. 以下,簡単な使い方.

  1. 解凍する
  2. 解凍した中身を上書き
  3. chrome.rdf がある場合は削除
  4. 起動
  5. (゚Д゚ )ウマー

これでわからない人は使わないでください.

Sunbird で印刷プレビューが文字化けするバグを修正する計画

タイトルなげぇ. それはいいとして,calendar.jar 内を覗いていると,印刷プレビューに関係がありそうな JS ファイルがあったのでデバッグすることにした. これは calendar.jar/content/calendar/calPrintEngine.js なのだが,stream.write(gHtmlString, gHtmlString.length); の周りで,あらかじめ HTML 化しておいたカレンダー gHtmlString を TEMP ディレクトリに出力している. このとき,gHtmlString を alert で出力させると普通に HTML 化されたものが文字化けせずに表示される. だが,ここで実際に出力された HTML ファイルを開くと見事に文字化けしている. これを一度任意の文字コードに変換してから出力すれば HTML ファイルの文字化けは防げた. このとき XUL Apps > Tips > 文字コードを変換する - outsider reflex を参考にした.

以下根拠のない推論. 実はこの文字コードを何にするかが重要だと思われる. Sunbird は文字コードの自動判別をしてくれないので,あらかじめ intl.charset.default で設定した文字コードで決めうちするため,この文字コードとさっき変換した文字コードが一致しなければ文字化けしてしまう. 今回作った JLP では intl.charset.default を Windows と Mac では Shift_JIS,UNIX では EUC-JP としたはずなので,文字コード変換の際にはこれに合わせなければならない. だが,より国際的な UTF-8 の方がよさそうなので,カレンダーの HTML ファイルを UTF-8 で出力させると同時に,各プラットフォームでの intl.charset.default も UTF-8 に統一させるべきだと思った. というわけで,次までに修正しておきたいと思う次第. 要するに,全世界で全プラットフォームでデフォルトの文字コードを Unicode にしろって話【違】.

# こーゆーのって Bugzilla-jp に投げるべきだよなぁ.

思い出したように追記. 文字コードの自動判別であるが,公式ビルドではデフォで無効,今回の JLP でもデフォで無効にしておいたのだった. 参考にした JLP では有効になっていたものの,使わないと思ったから無効にした. というわけで intl.charset.detector を ja_parallel_state_machine に設定すれば必ずしも文字コードを一致させる必要はないのかな. まぁ,どっちでもいいや.

2005.2.10 Thu

続々・Sunbird 日本語版計画

昨日書いた バグを修正しつつ,一部訳語の見直しを施した言語パックを 公開してみるテスタメント. 具体的な修正点は以下のとおり.

さらにミスを修正したものを 公開してみるテストステロン. 修正点は以下のとおり.

  • intl.menuitems.alwaysappendaccesskeys を追加した
  • さらに intl.menuitems.alwaysappendaccesskeys = true とした(たぶん無意味)

新規に導入する場合は 昨日示した のと同じ方法で. また,sunbird-0.2-langpack-ja-JP.zip を導入済みの人は上書きだけでいいと思う. chrome.rdf の削除は不要ということ.

書き忘れてたけど,基本的にこの JLP は Mozilla 1.8a6 日本語版(開発版)の mozilla-1.8a6-langjajp0.6.xpi をベースに,一部 Firefox 1.0 日本語版,Thnderbird 1.0 日本語版の中身を借用しています. 独自に訳語を追加したところはほとんどありません. Calendar/Sunbird 独自のところは calendar-ja-JP.jar をもとに ... に置き換えたものを使っています.

Sunbird 簡易日本語化,公式な方法

ニュースグループ を見ていたら,どうしたら fr-FR 化できるかという質問があり,それに Mostafa 氏が答えていたので,サクッと引用.

To use another language:
- After installing and running sunbird, exit sunbird.

- Edit sunbird/chrome/chrome.rdf, find and replace

c:baseURL="jar:resource:/chrome/calendar.jar!/locale/en-US/calendar/

with

c:baseURL="jar:resource:/chrome/calendar-ab-CD.jar!/locale/ab-CD/calendar/

setting ab-CD to the language of your choice (provided that it is shipped with sunbird)

- Remove XUL.mfl ( or XUL.mfasl ) from your profile directory

Next time you start sunbird it will show up in that language.

ふむふむ,これが公式の方法なのかと. Sunbird をいじってみる の方法とは異なるが,得られる効果は同じだと思うのだよ. 今までうまくいかなかった人は試してみるとよろしいかと.

Sunbird のアクセスキー表示のバグ?

そういえばアクセスキー表示を統一する方法があったなぁというのを思い出して,Mozilla L10N :: トピックを表示 - "(X)" 形式のアクセスキーに統一する設定項目 を見た. これに倣って intl.properties を見てみたら intl.menuitems.alwaysappendaccesskeys = という行がごっそり抜けていたので冷や汗. (これに関しては修正版を出す予定) 誤って消してしまったようだ. で,intl.menuitems.alwaysappendaccesskeys = true として再パッケージしたもので試してみたがうまくいかない. 一応 navigator.properties でも試してみたがダメ. 本家の en-US.jar で試してもダメ. 納得がいかないので user_pref("intl.menuitems.alwaysappendaccesskeys", "true"); を試したらうまくいった. なんだこれ. bin_dir/defaults/pref/sunbird.js で pref("intl.menuitems.alwaysappendaccesskeys","chrome://global/locale/intl.properties"); とあるので ja-JP.jar の intl.properties を見に行ってるのは確かだが,値を読み取ってくれてない模様. これってバグ報告されてんのかなぁ.

2005.2.11 Fri

Gmail

某所で Gmail の招待状をゲットした. 萌え萌えしてやった. 後悔はしていない. ただ,electrolysis というユーザ名が使えなかったのが残念だった.

Sunbird の about ダイアログ

version 0.2 という表記を バージョン 0.2 にしたいなぁと思って,Fx や Tb のように aboutDialog.dtd をいじれば解決しそうと思い,これを探したがない. で,calendar.jar/content/calendar/aboutDialog.xul を見れば謎は解けるだろうと思ってみたという話. すると,この中に version としっかりとハードコーディングされておった. むむ. こーゆーのはよろしくないのでは?

2000

ようやく 2000 回ったねぇと. 節目だねぇと. 1900 からはあっちゅーまだったねぇと. Sb 効果かねぇと.

2005.2.12 Sat

Sunbird 開発者は実はローカライズに対して本気だ

タイトルなげぇ. Sunbird:Localization - wiki.mozilla.org というページができた. 以下,脳内電波訳の要約.

Sunbird 0.2+ の翻訳に関して. Sb も Fx や他の Mozilla 製品と同じ感じで翻訳版を提供する方向に進んでるわけで. ビルドの際は Firefox:1.1 Localization の方法に従うことになりそうなわけで. つまりは /l10n/AB-CD ディレクトリに "calendar" ディレクトリを追加しますよってなわけで.

要約終了. なるほろです. さらに,頑張れば次のバージョンでは他の Mozilla 製品同様の方法で楽に翻訳版を提供できるかもしんないし,MLP の対象 に入るかもしれんとのこと. 頑張ってね.

辛いラーメン

自分たち【誰】の間で辛いラーメンといえば,あそこの店なのだが,実は近所にも辛いラーメンを出す店があると知って行ってみた. らあめん花月嵐 のニンニクげんこつバリ辛ラーメンというシロモノなのだが. 店に入るや否や,食券の自販機の前に立ったのだが,何故かヒヨって辛くないニンニクげんこつみそラーメンの食券を買ってしまった. 店まで歩いているうちに,辛いものよりも旨いものが食べたくなったってのもある. 故に激辛壷ニラなるものも未使用だし,唐辛子さえも2振りくらいしか使ってない. そうして食べたラーメンは普通すぎるほど普通だった orz. コストパフォーマンス的には劣る気がするが,味的にはまずまずだろう. これから通うかもしれない. 次は是非とも辛いラーメンを.

2005.2.13 Sun

α

某スレより.

377 :名無しさん@お腹いっぱい。:05/02/13 02:00:39 ID:MrmjO/QJ
質問するくらいならαなんかに手を出さなきゃいいのにとか思っちゃったりしてー。
手を出していいアルファはアロンアルファとアルファロメオくらいだろ。

こーゆーの好きだ. てか,アルファロメオが好きだ. あの独特のフロントグリルのデザインが素晴らしい. 昨日赤いアルファロメオを立て続けに2台見たときは激萌えだった. 個人的にはアルファベットにも手を出してみたいところだが.

Calendar Help とか

Sunbird 日本語化計画の一環として,Calendar Help の和訳でもしてみようと思ってるわけで. つーか,腕試しにすでに1ページ訳してみたのだが. 活動拠点となる mozdev.org の Bugzilla のアカウントを取ってみたし. ぁぁ,英語でやりとりせんとあかんのですよね. その辺どうかな? まぁ,ヘルプの中身としては自分好みの訳にしちゃうよ. 誤訳もあるかもよ.

ロン毛

今まさに東アジアのクラブチームの王者を決めようとしている. フランスワールドカップの時は一世を風靡した,韓国のロン毛キーパー,キム・ビョンジ. ヤツが浦項のゴールマウスを守っている. チョンス兄さんは最近黒髪にしたようだが,ヤツは金髪だ. 髪もそんなに長くない. 時代の流れか.

2005.2.14 Mon

calendar-ja-JP.jar の訳語について

Calendar Help の訳をしていて気付いたのだが,en-US な Calendar / Sunbird では task という用語を使っているのに対して,ja-JP なそれでは ToDo って用語を使ってるのだよね. 何でかなぁと en-US な *.dtd の更新履歴を見ていると,2002 年に To Do から task に変わっていたのだった. 新しく追加された項目について,タスクという訳もあったりして,いろいろ気になるので,snip 氏にメールしてみようか.

2005.2.15 Tue

date picker

Calendar Help の訳中に "date picker" という用語に出会った. これはウィンドウの左上にある小さいカレンダーのことのようだ. そしてこの用語の訳に迷う. 日付ピッカじゃ何のことかわからないし. 自分用の訳なら「日付選択君」と迷わず訳すだろう. しかしそんなわけにはいかない. で,調べてみると,Outlook ではこれを「カレンダーナビゲータ」とか呼ぶようだが,Outlook 2003 でのユーザー インターフェイス オプションの設定旧バージョンの Outlook と同じ Date Picker を表示する なる文字が見える. さてどうしようか. そのまま訳さないで行ってみるか.

Re: 音ブログ

音ブログryuzi_kambeの?D. 面白そうだな. MIDI を扱える Perl モジュールがあるっぽいので実装は可能だろう. Perl にこだわる必要はないけど. 問題は権利関係だろうな. あと,音楽データの入力インタフェイスがカギかも. テキストベースで頑張るとか楽譜のグラフィックを用意するとか.

Sunbird 0.2 JLP の Linux 版

Knoppix を 3.7 に入れ替えたついでに,GTK2-XFT なビルドを入れてみた. そして JLP for Win32 を投入. で,installed-chrome.txt の ja-win を ja-unix に直して起動. あっけなくうまくいった模様. だが,Win32 版と GTK2-XFT 版では chrome 登録系のテキストが若干違う気がするので,新たに作り直したほうが身のためだと思った. あと,GTK1 版ではテストをしていないので,こっちも何とかしようと思った. だが Knoppix を立ち上げるのが非常に面倒なのでアレだ. Mac は物理的に無理なので無視.

2005.2.16 Wed

マンセー

2.16 といえば,言わずと知れた将軍様の誕生日. 海外の国家(?)元首(?)の誕生日で,マスコミこれだけ盛り上がれる国(?)も北朝鮮くらいだろう. まぁ,それだけネタになる国(?)であることは間違いないわけで. というわけで,我らの偉大なる将軍様万歳.

Lightning

盆栽ヲチをしていたら,/mozilla/calendar/lightning 以下にちょろっとできていた. ようやく始動したらしい.

2005.2.17 Thu

publish.xhtml

FC1 で Apache2 で WebDAV で SSL だと? そもそも Sunbird / Calendar ユーザではないわけで,Windows で AN HTTPD 動かすくらいの人間なんだけど. カレンダーを公開するといっても,ここの ftp 鯖に上げて,引っ張ってきてくらいしかしない故. 共有は無理だし,ログインがアンセキュアだし. 話はそれたが,英語の文法自体は簡単なのだが,用語が意味不明だぞ. 訳すべき箇所はそんなに多くはないのだが,意味がわからんと時間ばかりかかるなぁ. あ,例の和訳の件ですが.

某娘系

愛してやまないラジオ番組にモー娘。の石川,小川,亀井がゲストで来た. 凄く不快だった. 消した. 奴らは10数人でテレビに出るより,3人でラジオに出る方が不快なことがわかった.

どっからどー見ても,加護の二の腕は俺のよりも太い. 何なんだ,あれは.

かぼちゃの皮

今,福原愛が東北の人はかぼちゃの皮を食べないと言っていた. 21年東北人をやっているが,そんな話は初めて聞いた. 誤解を招く発言はよせ.

2005.2.18 Fri

publish.xhtml,その後

来週辺りに英語版の publish.xhtml と remote.xhtml いじって,大きく変わる可能性もあるから,その後に作業した方がいいよと言われた. そういうのは先に言ってくれよ. 別に向こうのスタッフに愚痴ったわけではないので,タイムリーすぎただけだが. まぁ,この文書は 2/3 くらいしか訳してないので別にいいが.

座椅子

座椅子がダメになりつつある. 中のスポンジ状のものがクッション効果を果たさなくなってきただけではなく,全体的に足先方向にずれてきており,頭の辺りにはそれがほぼ皆無で,鉄パイプに布をかぶせただけの状態になっている. 故に首ごともたれかかると首が痛いし,後頭部ごともたれかかると外傷性偏頭痛【謎】になる. 新しい座椅子を買いに行きたいので,車を出してくれ>誰か. 原付で買いに行くものではない故. てか,おっちゃん【誰】,車.

独自用語

窓の杜が Mozilla 用語であるところの extension を (ry なわけなので,いっそのこと窓の杜仕様の日本語ロケールがあったらどうかと考えた. ジョークソフトみたいな扱いで. 「拡張機能」,「テーマ」を全て「プラグイン」,「スキン」にそれぞれ置換. Fx の紹介文 で theme のことをスキンって言ってるが,テーマと言っている文書もあり,一貫性がないのがアレだが. あー,くだらんっ.

2005.2.19 Sat

Sunbird からメール送信計画

Sunbird はアラームが鳴ったときに通知のメールを送信できない のだが,Sunbird 自体にメール送信機能を搭載しなくても,外部アプリに送信してもらえばいいんジャマイカと思った. (この時点でタイトルは厳密にはおかしい.) それで,Mozilla から外部アプリを起動させる方法と,Perl で SMTP を使う方法を調べた. 結局,Fx の JavaScript Panel からの外部アプリの起動と,Perl でのメール送信はうまくいった. だが,外部アプリ起動プロセスを Sunbird に組み込んでもうまくいかないし,Perl スクリプトを関連付けから開けないのでもっと調査が必要だと思った次第. つーか,何故自分はここまで Sunbird をハックしたいのかがわからん.

外部アプリ起動に成功. ちょっとした文法ミスがあっただけだった. とりあえず,メールを送信すべき条件の特定に励もうか.

2005.2.20 Sun

続・Sunbird からメール送信計画

Calendar on Thunderbird で,メール発射の条件を身をもって体験した. どうやらアラーム小窓が出てくるのと同じタイミングでメールを送信しているみたいだ. 故に,この処理のトリガ部分に例の処理を組み込んじゃえばいいのだが,メールの内容に含むべき,イベントのタイトルとか日付とか時刻とかをどこからもらってくるべきかを調査することにしたい.

calendarEvent.js で,メール送信関数 sendEmail() を呼び出していた. この関数に引数として,タイトル,本文,メアドを与えていた. で,これの代わりに例の処理を組み込んでやった. 結局 perl.exe に引数として SMTP なスクリプトのパスと,そのスクリプトへの引数を渡すことにした. とりあえずメール送信は成功. タイトルによっては本文の1行目が文字化けするが,それはご愛敬.

Gmail あげる

そういえば,数日前から招待権を 50 程ゲットしているわけで. 欲しければあげる.

タバコッシュ

あちゃー. テラワロス.

2005.2.21 Mon

続々・Sunbird からメール送信計画

とりあえず,sendEmail() の代わりになるものを晒してみようと思う.

function my_sendEmail(Subject, Body, Address){
	var exepath = 'd:\\usr\\local\\bin\\perl.exe';
	var localFile = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);

	try{
		localFile.initWithPath(exepath);
	}
	catch(e){}
	if(!localFile) return false;
	
	const UConvID = '@mozilla.org/intl/scriptableunicodeconverter';
	const UConvIF  = Components.interfaces.nsIScriptableUnicodeConverter;
	const UConv = Components.classes[UConvID].getService(UConvIF);
	UConv.charset = 'ISO-2022-JP';
	Subject = UConv.ConvertFromUnicode(Subject);
	Body = UConv.ConvertFromUnicode(Body);
 
	var arguments = new Array('d:\\smtp.pl', Subject, Body, Address);

	var process = Components.classes['@mozilla.org/process/util;1'].getService(Components.interfaces.nsIProcess);
	try{
		process.init(localFile);
		process.run(false, arguments, arguments.length);
	}
	catch(e){
		alert(e);
		return false;
	}
	return true;
}

これを適当なところで定義しておいて,calendarEvent.js 内で,sendEmail( EmailSubject, EmailBody, calendarEvent.alarmEmailAddress, null, null, null, null ); をコメントアウトして my_sendEmail(EmailSubject, EmailBody, calendarEvent.alarmEmailAddress); を付け足してやると,メールを送信すべき場面に呼び出されて d:\usr\local\bin\perl.exe にメール送信スクリプトである smtp.pl ファイルのパス(今回は d:\smtp.pl)とタイトル,本文,メアドが渡される仕組み. タイトルと本文はあらかじめこの関数内で ISO-2022-JP に変換している. 例によって XUL Apps > Tips > 文字コードを変換する - outsider reflex を参考にした. 全般の流れは エディタで"ソースを表示"[STUP]@HideAway Firefox BBS のパクリ. で,Perl でコマンドライン引数を ISO-2022-JP で渡したときに正しい挙動が得られるかは疑問なので,UTF-8 とかに変換したものを smtp.pl に渡し,そっちで Jcode か何かで ISO-2022-JP に再変換するのとかもいいのだと思う. smtp.pl に関しては perl e-mail 送信 Net::SMTP 日本語@mimu.whitesnow.jp - XOOPS Site - フォーラム を参考に,Net::SMTP を使ってでっち上げた. メールヘッダとかは適当なので晒す気はない.

実際,エロイ人とかスーパーハカーとかが,Thunderbird とか Suite とかからメール送信系のコンポーネントを移植しちゃえばこの辺のソースをいじることなく何とかなるんだろうが. つーか,何で当初 Sunbird が Firefox(Firebird の時代か?)をベースに作られていたんだろう.

RSS 生成君の仕様

RSS 生成君をいつか書いたのだが,久しぶりにそのコードを見たら全く理解不能だった. そもそも,以前も書いた気がするのだが,日記1日分の区切りとして改行のみの行を使っている. これは逆に言えば改行のみの行があるとそれを日付の区切りと見なして,日記本文の収集に問題が出てくる. これは pre タグで空行を使ったりすると発症するので何とかしたいと思い,RSS 生成君のコードをのぞいたというわけ. 結局区切りに「ホワイトスペース + 改行」を使うことにした. 納得いかない.

英語がダメ

英語が読めない. 読んでいるうちに眠くなる. 翻訳部門の草稿をツッコもうとしても,結局原文を斜め読みして力尽きてしまう. 某へるぷの翻訳も,斜め読みし,眠くなり,ろくに辞書も引かずテキトーな訳. そして,IBM 情報処理用語英和対訳集 にあらためて感動. すげーぬるいなぁ.

続々々・Sunbird からメール送信計画

結局,Shift_JIS でコマンドライン引数を渡さないと,適切に処理されていないようだ. ただ,メールを JIS で送信する以上は日本語が使えればいいからそれでいいのだが,Shift_JIS や JIS にない文字を扱いたいときには困る. 仏語や西語の文字とかが混在していると厄介だということ. また,UNIX 系環境では EUC-JP で渡さないと誤作動するかもしれない. やはり,どんな環境でもさまざなな言語を適切に扱うには ASCII 文字に変換するのが安全だと思った次第. 最も手っ取り早いのが,とりあえずタイトルと本文を escape して渡し,Perl スクリプト側で unescape し,送信するという方法. それか,Base64 でエンコードした文字列を渡し,送信.

こんなことを考えさせる前に,さっさと Sunbird 自身にメール送信機能を実装してくれ>エロイ人. っつーか,自分は Sunbird ユーザじゃないだよ.

2005.2.22 Tue

Sunbird Trunk Build

IRC でエロイ人が,trunk で XPI をサポートしてる気味だと言っていたので,trunk な Sb をビルドしてみた. 起動してみると,最初にウィザードが出てきたりするのが謎だったが,ちゃんと Tools メニューに Extensions と Themes ってのがある. あと,I really hate the kitchen sink: New stuff coming for Sunbird で晒されていた新しい UI というものを確認. 全体としては,何かごちゃごちゃしていて,何が正しい挙動なのかがわからないという状況.

2005.2.24 Thu

本日のナイトリ

久々に Firefox の話. MOOX の 20050223 版を入れたのだが,Sage とか Web Developer とか ForecastFox とかが存在すら認められてない雰囲気だったので,20050222 版に戻したという話. 新規プロファイルでの起動は試みていない. 面倒さ故. 今の状況で使えるものを使う. それだけ.

つーか,各地で既報のメモリリークが修正された系の話だが,・・・・・・・・そーゆーことだって.

ケミカルガーデン

作ってみたくなった. それだけ.

ピッキング

鍵をこじ開けるようなアレではなくて. ギターでジャカジャカやるときに,ピックの位置が20フレットの辺りという癖. あぐらをかいて右足の太ももにギターのくびれを合わせ,ネックを立て気味にすると,何かその辺りでピッキングするのが最適な感じがするのだが. 最近この癖に気付いた.

続々々々・Sunbird からメール送信計画

コマンドライン引数として渡す文字列は JavaScript 側では文字コードの変換などはせず,ただ encodeURI したものを用い,Perl 側で受け取った文字列を uri_unescape すると熱い. uri_unescape された文字列は UTF-8 になっている. これだと文字コードに関する環境依存が軽減されると思う. あとは,Perl スクリプト側で UTF-8 のままメールを送っちゃうか,他のヤツに変換するか. これはメールを受け取る側のアレによるわけだが.

というわけで,それなりに動くテストケースを晒してみる.

// JavaScript Panel で動かす

function hoge(raw_str){
	var exepath = 'd:\\usr\\local\\bin\\perl.exe';
	var localFile = Components.classes['@mozilla.org/file/local;1'].createInstance(Components.interfaces.nsILocalFile);

	try{
		localFile.initWithPath(exepath);
	}
	catch(e){}
	if(!localFile) return false;

	var encoded_str = encodeURI(raw_str);

	var arguments = new Array('d:\\decode.pl', encoded_str);

	var process = Components.classes['@mozilla.org/process/util;1'].getService(Components.interfaces.nsIProcess);
	try{
		process.init(localFile);
		process.run(false, arguments, arguments.length);
	}
	catch(e){
		alert(e);
		return false;
	}
	return true;
}

hoge("ぬるぽ");
# d:\decode.pl

use URI::Escape;

$encoded_str = $ARGV[0];
$utf8_str = uri_unescape($encoded_str);

open(OUT, "> d:\\datafile.txt");
print(OUT "$encoded_str\n$utf8_str\n");
close(OUT);

以下 d:\datafile.txt に出力された結果.

%E3%81%AC%E3%82%8B%E3%81%BD
ぬるぽ

1行目は実際に渡されたコマンドライン引数. 2行目はそれを Perl で uri_unescape したもの. 元の文字列と一致している.

折角 encodeURI を使っているのだから,メール送信関数 my_sendEmail() から渡すコマンドライン引数に mailto: を使うのがいいんジャマイカと思い出した. 汎用性がある. これだと CC や BCC なども扱える sendEmail の置き換えも考えられるし. これに関しては無意味だと思うが. あとは,mailto: で呼ばれたら自動送信してしまうようなアレゲメーラ【何】があれば自動化が可能. Perl で送信するならば,引数解析が必要か.

見られてはマズいシーン

よくニュース番組で,「また明日」とか言って,謎のジングルとともにスタジオを斜めから見下ろすシーンになる. このとき,アナウンサは原稿をまとめつつ,2人で楽しそうに話している. ここでだ,もしそのアナウンサ同士がもの凄く険悪なムードになり,いつ原稿を投げるかわからないような状況になったらどうだろう. 想像するだけでゾクゾクするね. 川端さんが高木さんに「テメェ,噛んでんじゃねーよ!」と暴言を吐くとか.

New forum for Calendar on Mozillazine

Calendar - MozillaZine ForumsOther Applications and Distributions - MozillaZine Forums から独立した. それだけ.

2005.2.25 Fri

Sunbird JLP の文書を書いたぞ
ずーるらんな

CME から JavaScript Panel だけを抽出してなんとかならんかなとか思い始めた昨日であるが,これを独立した拡張として仕立てるより,ちょっと改造して XULRunner で動かすってのが面白そうだと思い始めた今日. XUL - XULRunner を見る限り,いろいろできそうだ. btm 氏が既存の XUL アプリを動かした 例があるので,自分も何かやってみたい的衝動. 新しめのビルドが何処にも転がっていないようなのでサクッとビルドするか.

3.5h かけてなんとかビルド完了. btm 氏のヤツはうまく起動しなかった. が,これに倣って,CME の JavaScript Panel を起動させることができた. chrome.manifest を chrome に移して,jar:chrome/ctxextensions.jar!/...jar:ctxext... に置換すればいいっぽい. このファイルがあるので installed-chrome.txt は不要. defaults/pref/hoge.js に関しては pref("toolkit.defaultChromeURI", "chrome://ctxextensions/content/JSPanel/JSPanel.xul"); とした. これで起動はするのだが,いざコードを実行すると,パネルのステータスバーチックなところに Opening Navigator Window... と出て,何もならない. つーか,適当な文字を入力して Run ボタンを押すとだけど. まぁ,ソースをごりごりいじることにするか.

Firefox の chrome ディレクトリにあった jar ファイルを CME on XULRunner の chrome ディレクトリにコピー. で,Firefox の app-chrome.manifest を CME の chrome.manifest にマージ. で,chrome://browser/content/browser.xul から起動させるようにする. すると,CME 入り Firefox on XULRunner の完成. まがい物なので挙動不審な面もあるが,JavaScript Panel は使える. きゃは.

Firefox の新しいオプションダイアログ

BEAST たんを追いかけ続け,新しいオプションダイアログになった Firefox をゲット. まず気付くのが,Tools メニューに Sanitize Firefox という項目が増えており,保存されたフォーム情報やクッキーなどを削除できる. オプションダイアログはネタバレ情報どおり,アイコンが横並びになっている.

2005.2.26 Sat

しくじった

ぎ! 手違いで最新の3日分のネタといいながら2日分しか公開していなかったという罠.

1 year anniversary

いっしゅうねん. 長いようで短いようで. これからもよろしくおながいしまつ.

JavaScript Panel on XULRunner 計画

テキストボックスとボタンからなるウィンドウを用意して,ボタンを押すとテキストボックスに書かれた JS コードが実行される何か. 結論から言うと,できた. CME はオブジェクト指向ゴリゴリで,はっきり言って意味不明だが,結局は JS コードを window オブジェクトのメソッドにするという(自分の頭には意味不明な)根本的理論があったので,この部分だけを実装した. CME はブラウザのメインウィンドウのもとでコードを実行させるものだったが,今回はウィンドウを JavaScript Panel 分しか使わないので,これのもとで実行させる仕様. カスタムスクリプトなんてものはあっても意味がないので,実装はしない. これからはユーザビリティ【何】の向上に励もうと思う.

ヒロシです・・・・・・・

も組ふぉーらむとかで,スレッドのタイトルが「・・・できません」ってのを見ると,ヒロシの口調でそれを言っているアレが脳内で聞こえる. 「ヒロシです・・・・Thunderbird でメールが受信できません・・・・ヒロシです・・・・ブックマークが消えたとです・・・・」

座椅子和夫

アッシー君のおっちゃん【誰】と座椅子ショッピングデートに行った. 最寄りのホームセンターでは品揃えが悪かったので,少々足を伸ばして,デカい家具屋に行った. そこで昨今の低反発ブームにあやかって,低反発座椅子を買った. クソ高い. かなり奮発して 6.8k も出してしまった. ぎゃー,手持ちの金がない. 他に注目のアイテムとして,ビーズが入った大きな袋状のイス(?)があった. 座ると体に形に合わせて変形する. 10k を超えるシロモノだったがかなり興味深い.

続々々々々・Sunbird からメール送信計画

巷では Firescrolling - Proof-of-Concept という,Firefox 1.0 でコンソールが乗っ取られるというアレがある. この概要は,Windows の場合,c:\booom.bat が作られ,これが実行されるというもの. お,待てよ,Mozilla からバッチファイルが実行できるのかと. とりあえず,このページのソースを見てみようと. にょにょ,launch() というメソッドで指定したバッチファイルを実行させているではないか. 例のテストケースで,perl.exe ではなくて他の普通のファイルのパスを指定し,プロセス生成をさせる代わりに localFile.launch(); としてみた. すると,関連付けからこのファイルを開くことができた. もしこの方法でコマンドライン引数を渡せるのであればかなりオイシイぞ. 要調査. 「悪意のあるコード」から勉強することもあるんだなぁと実感.

Interface Reference - nsILocalFile を見る限りでは launch() はただファイルをダブルクリックした状況を再現するものだそうだ. コマンドライン引数は渡せないようだ. むむむ.

2005.2.27 Sun

本日の XULRunner

朝から XULRunner をビルドした. 付属のサンプルは動くが,自分で作ったのは動かない. よくよく調べてみると,トリガとなる XUL ファイルを指定するファイルを保存するディレクトリが defaults/pref から defaults/preferences に変更になった模様. つーか,前回ソースを引っ張ってきて,ビルドしている最中にその変更がチェックインされていた. 要注意なのでメモ.

2005.2.28 Mon

BEAST たん

ここ数日は MOOX たんと相性が悪いので,BEAST たんを追いかけ回している. やはり幹てつや【誰】らしく,不具合ありすぎなのがステキだ. 特にドラドロ周りでよく落ちる. 迂闊に URL をタブに落とせない. そろそろプロファイルを作り直してみるか. つか,イヤガラセ的に,Micro$oft に Fx のクラッシュ報告を送ってみている. Mozilla 側には送らないが.

本日の XULRunner

昨日書いたように 仕様変更があったので,いろいろ気になったので既存のソースや成果物を一切削除し,一からクリーンビルド【何】をしてみた. で,某氏【誰】がバイナリを欲していたのでうpしてみた. Mozilla Trademark Policy 的には Community Edition に相当すると思う. そのうち消すと思うが,一応晒しておきまする.

このネーミングは今日の 0:10 辺りから引っ張ってきたソースなので. やはり XULRunner の日本語ドキュメントが足りてない気がするので,くみちょ【誰】に負けずに自分も書いてみようかなぁ.

20050318 深夜版 に更新.

続・JavaScript Panel on XULRunner 計画

実装したこと.

これだけできれば Mozilla 的 JavaScript が実行可能な低機能テキストエディタな様相は呈している. 終了時の自動保存と起動時の自動読み込みとかができたらうれしい. 将来的にはタブ化か. そこまで頑張る気はないけど.

さらに実装したこと.

  • 終了時にプロファイルディレクトリに自動保存
  • 起動時にそのファイルを自動読み込み

いやぁ,Piro 様々だ. ほぼ Piro タソの資料だけでここまでできるんだもんなぁ. そろそろ例外処理にいそしんだ方がいいのかなぁ.

周辺のネタ