リンク: [ホーム] [自己紹介] [リンク集] [アルバム] [ソフトウェア] [発表文献] [その他]

まさおのChangeLogメモ / 2005-02-04

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

2005-02-04 Fri

* chromedit

入れてみたけど文字化けするなあ…。

同様に悩んでいる人がここにも↓
・拡張"ChromEdit"でのフォント文字化け:
http://ryuzi.dyndns.org/mozillazine/html/modules/newbb/viewtopic.php?topic_id=2348&forum=4&noreadjump=1

ソースを眺めてみると、chromedit.js 内の loadIt() で
"@mozilla.org/scriptableinputstream;1" を使ったローカルファイルの
読み込みをしているのだが、このコンポーネントは ASCII しか読み込め
ないように書いてある気が…。。。

from: nsIScriptableInputStream Overview:
http://developer.mozilla.org/xpcom/api/nsIScriptableInputStream/
* Remarks
This interface provides JavaScript with a way to read ASCII text
from a nsIInputStream. However, it does not address the problem
of reading arbitrary binary data from a stream.

以下の文書によれば、
XUL Apps > Tips > テキストファイルの入出力 - outsider reflex:
http://piro.sakura.ne.jp/xul/tips/x0021.html
読み込んだテキストは、ファイルの文字コードそのままで返します。実
際に使えるようにするには、文字コードを判別したあとで、
nsIScriptableUnicodeConverter を使って Unicode に変換する必要が
あります。

とのこと。

やってみた。
すんごく苦労した(FireFoxが何度も落ちる)が、なんとかうまく動くよ
うだ…。

diff -u -b -r1.14 chromedit.js
--- content/chromedit.js 30 Nov 2004 13:00:01 -0000 1.14
+++ content/chromedit.js 4 Feb 2005 16:54:20 -0000
@@ -118,12 +118,15 @@
         .createInstance( Components.interfaces.nsIFileInputStream );
     var sis = Components.classes["@mozilla.org/scriptableinputstream;1"]
       .createInstance( Components.interfaces.nsIScriptableInputStream );
+ var uconv = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
+ .createInstance( Components.interfaces.nsIScriptableUnicodeConverter );
+ uconv.charset = "utf-8";
 
     if (fileLocal.exists()) {
         is.init( fileLocal,0x01, 00004, null);
         sis.init( is );
         var stuff = sis.read( sis.available() );
- setTextareaText(stuff,targetNodeID);
+ setTextareaText(uconv.ConvertToUnicode( stuff ),targetNodeID);
     }
     else if (/css$/i.test(fName) ) { // && ! f.exists()
 
@@ -136,7 +139,7 @@
             is.init( fileLocal,0x01, 00004, null);
             sis.init( is );
             var stuff = sis.read( sis.available() );
- setTextareaText(stuff,targetNodeID);
+ setTextareaText(uconv.ConvertToUnicode( stuff ),targetNodeID);
         }
         else {
           var extDefaultsDir = getExtDefaultsPath();
@@ -146,7 +149,7 @@
               is.init( fileLocal,0x01, 00004, null);
               sis.init( is );
               var stuff = sis.read( sis.available() );
- setTextareaText(stuff,targetNodeID);
+ setTextareaText(uconv.ConvertToUnicode( stuff ),targetNodeID);
           }
         }
 
バグ報告した → http://bugzilla.mozdev.org/show_bug.cgi?id=9150

FireFox1.0 ではこれでいいんだけど、気になるのは、
nsIScriptableUnicodeConverter のインタフェースが最新のCVSでは変わっ
ていることかな!?
cf. https://bugzilla.mozilla.org/show_bug.cgi?id=262385

と思ったら、うまく動かないことが判明。

1. 保存が効かない。(こっちも文字コード変換かまさないとダメ…)
2. なんかうまく動かない。(chromeditOptions.dtdがない!?)

* puttyダブルクリック選択

「佐々木」という文字列を選択しようとしてダブルクリックしたら、それ
ぞれ一文字ずつしか選択されない。
これはバグかしら…。

雰囲気的には、「々」が特殊な文字扱いされている感じ。
期待される動作としては、他の漢字と同様にまとめて選択状態になってほ
しいのだが…。。。

putty-0.56 のソースを読んでみると、term_mouse() 内で sel_spread()
を呼ぶことによって行っている様子。
で、肝心の選択を広げる範囲については、wordtype() でUCSの同一の範囲
にあるかを判別している模様。

wordtype() 内で、以下のような定義がある(これは文字種の規定で、開
始・終了コードポイントで、3番目が文字種値)が、

0x3001, 0x3020, 1}, /* ideographic punctuation */

「々」は U+3005 のコードポイントを持っており、ここに入るので、他の
漢字とは別になるみたい…。

ちなみに、Unicode Character Databaseにあるこの文字の情報も見ると以
下のようになっている:

3005;IDEOGRAPHIC ITERATION MARK;Lm;0;L;;;;;N;;;;;
http://www.unicode.org/Public/UNIDATA/UnicodeData.txt

さあ、原因はわかったが、どうすべきか…。

一つの手としては、http://www.unicode.org/reports/tr24/ で提案され
ている Script 情報を使う方法。
http://unicode.org/Public/UNIDATA/Scripts.txt によれば、
3005 は Han となっており、きちんと他の日本語文字列と混ぜて使うこと
が可能。
この Script が同じものについてはまとめてwordとし、ただし、
Punctuation/Space の判別については、General Category Name を使うと
いう手。

きちんと実装するなら、以下の仕様に則ってやるべきか…。
Unicode Standard Annex #29: Text Boundaries
http://www.unicode.org/reports/tr29/
しかし、この仕様はよく意味がわからん。

* iconv --version 誤訳

日本語ロケールで iconv --version してみたら、
iconv (GNU libc) 2.3.2
Copyright (C) 2003 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
これはフリーソフトウェアです。利用許諾についてはソースをご覧ください。
商業性や特定の目的への適合性の如何に関わらず、無保証です。
Ulrich Drepperによる書き込み.

最後の行は、「Written by Ulrich Drepper.」の訳だと思うが、これはあ
まりにアレだろ…。。。

Ulrich Drepperによる開発。
作者Ulrich Drepper。

とかにしとけよ。書きこみって意味不明じゃん…。

お、最新版の glibc-2.3.4 を取ってきてみたら直ってた:
作者: %

さすがにアレだと思ったんだね。

* 援助交際

今朝の通勤途中で王子の順天高校に向かう坂の上で、通学中の女の子3・4
人に向かって、「援助交際しないー?」ってなんだか頭の悪そうな中年が
声をかけていた。何かの冗談かと思って、そのまますれ違ってしまった。

女の子たちもキョトンとしたまま、無視していたが、そのうち後ろの方で
女の子たちが「ひょっとしてうちら、援交申し込まれたのー?えー!?」っ
て、きゃーきゃー言う声が少し聞こえてきた。

とても気にはなったが、もう通り過ぎてしまったのでそのままスルーして
しまったが、警察に突き出すなり、少なくとも順天の前に立っていた教員
とおぼしき人物に言っておくべきだったか…。悔やまれる。

今調べてみたら、売春防止法でもって勧誘行為も禁止されているので、そ
のまま警察直行で良かったのね。

from: http://www.ron.gr.jp/law/law/baisyun.htm
(勧誘等)
第五条 売春をする目的で、次の各号の一に該当する行為をした者は、六月以下の懲役又は一万円以下の罰金に処する。
 一 公衆の目にふれるような方法で、人を売春の相手方となるように勧誘すること。
 二 売春の相手方となるように勧誘するため、道路その他公共の場所で、人の身辺に立ちふさがり、又はつきまとうこと。
 三 公衆の目にふれるような方法で客待ちをし、又は広告その他これに類似する方法により人を売春の相手方となるように誘引すること。

* TREC Spam Filter Evaluation Tool Kit

http://plg.uwaterloo.ca/~trlynam/spamjig/
TRECでもSPAMフィルタシステム間の評価とテストコレクションの作成をやっ
てみようという試み。

とりあえずメモ。
Referrer (Inside): [2005-02-09-2]