8/3
#03-03
galeon においてたとえば「〜」を title として含むページを bookmark に追加すると化ける、という現象を追跡してみる。mozilla.cpp の mozilla_get_document_title() において gtk_moz_embed_get_title_unichar() で取り出したページのタイトル (UCS4 ?) を mozilla_unicode_to_locale() で locale の multibyte 文字に変換している。で、mozilla_unicode_to_locale() では wcstombs() で「変換」しているように見える…。これって、wide character == unicode という wchar_t の実装をしている環境でしか動作しないんじゃないだろうか。ここは iconv() 相当、実際には misc.c の utf8_to_locale() を使うのがいいんじゃないだろうか。まぁ、gtk_moz_embed_get_title_unichar() の実装がどうなっているかによるけど
8/4
#04-01
CET で日曜の 20 時 (日本だと月曜の朝 4 時くらい) に galeon 0.11.4 がリリースされるようだ。0.9.3 対応かな。ところで sid の mozilla はいつまで 0.9.1 なのだろうか
#04-02
wchar_t ってその実装を仮定しちゃいけないってことになってるはず なんでまずいっす。あと、locale での文字コードを調べるには nl_langinfo(CODESET) を使うのがてっとり速いけど実装されてない環境もあるみたい。そもそもその帰り値が iconv(3) の引数に使える保証はないような気がする。面倒。glib 1.3 (2.0) なら g_get_charset() と g_convert() あるいは g_locale_to_utf8() 使えばいいんだけど…。
#04-06
libcharset ですか。確かこの手のためのライブラリがなにかあったよなぁ、namazu ML で見たんだっけ、とひっかかってたんですが、どもです。0.11.4 のリリースの後に glib HEAD からパクる or libcharset を使う、などしたパッチを作って提案してみようかな
8/5
8/6
#06-02
slashdot.jp 見てみると賑やかだね。ところで DHCP、DHCP って出てくるけど、PPP (IPCP) じゃないのかしら。CATV や Yahoo! みたく DHCP なところもあるだろうけど
8/8
#08-01
Galeon の 0.12pre1 は「ファイル(F)」→「名前を変えて保存(A)」でのページの保存時に「Save with content」で画像なども一括してファイルに落とせるようになった。でもうまくいかない。セーブする直前に表示されてるページをクリックすると良いらしい。どれどれ…。お、動いた
#08-02
ASCII の Linux Magazine の最新号でブラウザの比較記事。Galeon が「日本語の扱いも問題ない」みたいなこと書いてあるな。まぁ、悪くはないんだけど、まだいくらか。
8/13
#13-05
ところで今回のコミケで回った時の基準。先行者ネタ、あずまんがネタ、CLAMP 系、ゲーム系は外す、てなところ。先行者はそれ自身は面白いと思うのだけど、それをネタに持ってきたところで、どうにもそれを越えられないように見えるし。あずまんがも同様
8/15
#15-04
PRUnichar は UTF-16 である。でもでも、内部処理では 2 バイトの Unicode を使ってる。UTF-8 とのコンバータでは UTF-16 をサポートしてるけど、フォントエンヂンなどでは UCS-2 のままということのようだ。うーむむ。ま、UTF-16 としておくかなぁ
#15-05
Jens Finke working on creating Thumbnail Managing Standard。画像ビューアなどで使用されるサムネイル画像の管理について標準化しよう、という話
8/16
#16-02
「〜」は gtk_moz_embed_get_title_unichar() の返す文字列内では U+FF5E (FULL WIDTH TILDE) になっている。libc6 2.2.3-11 の iconv() 使って EUC-JP → UTF-16 (UCS-2) 変換した場合には U+301C (WAVE DASH) になる (〜 は EUC-JP で 0xA1C1)
#16-03
wchar_t == unicode を仮定してしまって U+301C を単純に wchar_t に代入したもの、つまり、0x301C という値の wchar_t な文字を wcstombs() 使って ja_JP.eucJP なロケールでマルチバイト文字に変換すると「〜」 (0xa1 0xc1) になる。0xff5e を変換すると 0x8f 0xa2 0xb7 になる。これは JIS X 0212 補助漢字、SS2 + 0xA2B7 (TILDE) か
#16-04
iconv() 使って UCS-2 → EUC-JP 変換すると U+301C は 0xA1C1 に、U+FF5E は SS2 0xA2B7 になる。wcstombs() の時と同じ (内部では同じ変換表使ってるだろうし)
#16-05
SS2 + 0xA2B7 (== 0x2237) は Unicode.org の JIS0212.TXT (Table version 0.9) では U+007E に対応付けられている
8/17
#17-07
もうすぐ 0.12 が出る galeon をいつものよーに CVS から build する。bookmark editor (dock) を起動しようとすると galeon が freeze してしまう。trace してみると、ブックマークの tree を構築する処理での何回目かの bookmarks_set_tree_item() の実行中、g_new0() の呼び出しが帰ってこないようだ。gdb で覗くと、malloc() で segv っている。うーん…
8/18
#18-04
という現象をおっかけるために rm ~/.galeon/bookmarks.xml して起動してたら、bookmark editor (dialog | dock) を開く→閉じるで galeon が crash。とりあえずの対処方法はわかったのでメールする。存在しないスマートブックマークのツールバーを表示しようとして segv ってるみたい
#18-07
さて、インポートすると化ける話。どうもコードを見るとなんの処理もしとらんみたい。なぜこれがそれなりに動いているんだろー。TODO には入ってるみたいだし、そのうちなんとかなる? 方針としては、Mozilla/Netscape のブックマークなら先頭にある META タグの CHARSET 情報を見て変換する。CHARSET 情報が無いなら locale の encoding で読む、てところか
8/19
#19-03
galeon の tips。galeon を起動してない状態で ~/.galeon/bookmarks.xml をエディタで開き、
<site id="XXXXX" name="%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%9F URL %E3%81%B8" url="javascript:if(frames.length>0){alert('Frames!')}else{ulBV3pQy=document.getSelection(); if(ulBV3pQy!=''){location.href=ulBV3pQy.replace(/\042/g,'').replace(/\047/g,'').replace(/\s/g,'')}else{alert('Select text on page like:\n http://www.domain.com...')}}" time_visited="YYYYY"/>
とあるところを
<site id="XXXXX" name="%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%9F URL %E3%81%B8" url="javascript:if(frames.length>0){alert('Frames!')}else{ulBV3pQy=document.getSelection(); if(ulBV3pQy!=''){location.href=ulBV3pQy.replace(/\042/g,'').replace(/\047/g,'').replace(/\s/g,'').replace(/^ttp:/,'http:')}else{alert('Select text on page like:\n http://www.domain.com...')}}" time_visited="YYYYY"/>
としてみる。んで、文章中に「ttp://www.example.com/」とあるところをマウスで選択し、右クリックし、「ブックマークレット」→「選択した URL へ」で、その選択個所のページへ飛べるようになる (「http://...」だけじゃなく「ttp://..../」も処理できるようになる)
#19-05
Galeon/Mozilla のソースをあれこれ。えっと、do_GetService で NS_ICHARSETCONVERTERMANAGER_CID な nsCOMPtr<nsICharsetConverterManager> を取り出し、GetUnicoderDecoder を呼べば nsIUnicodeDecoder が取得できる。んで、その Convert メソッドで変換、てな感じかなー
8/20
#20-01
Galeon 0.12 リリース。i18n 関係だと、Mozilla からのブックマークの import で文字化けすることがある、一部の文字を title に含むページを bookmark すると化ける、wchar_t が unicode じゃない環境だと化ける、などの不具合は残ってると思う
#20-02
nl_langinfo(CODESET) 相当のことを書くなら、
nsAutoString platformCharset; nsresult rv; nsCOMPtr<nsIPlatformCharset> platformCharsetService = do_GetService(NS_PLATFORMCHARSET_CONTRACTID, &rv); if (NS_SUCCEEDED(rv)) { rv = platformCharsetService->GetCharset(kPlatformCharsetSel_Menu, platformCharset); char* c = platformCharset.ToNewUTF8String(); fprintf(stderr, "platform charset=%s\n", c); nsMemory::Free(c); }
こんな感じか。kPlatformCharsetSel_Menu でいいのか、というのはあるけど。
#20-03
えっと、「何か」→「Unicode」が Unicode Decoder で、「Unicode」→「何か」が Unicode Encoder (参考: intl/uconv/ucvja/nsUCvJaModule.cpp)
#20-04
試してないけど、あとは mozilla.cpp の mozilla_get_charsets() を参考にして、
gchar* title; nsCOMPtr<nsIUnicodeEncoder> encoder; nsCOMPtr<nsICharsetConverterManager2> ccm = do_GetService (NS_CHARSETCONVERTERMANAGER_CONTRACTID, &rv); ccm->GetUnicodeEncoder(&platformCharset, getter_AddRefs(encoder)); encoder->Convert(unicode_title, &unicode_title_len, title, &title_len);
てなところか
#20-05
そんなわけで、よくわかんないままに galeon-0.12 の mozilla.cpp の mozilla_unicode_to_locale() の 置き換え版を書いてみた。「−」や「〜」が化ける問題はこれで解決したっぽい…
8/22
#22-03
手元にあるのは Unicode 3.0 附属のデータなので、Unicode.org 上の最新の情報を調べに行く。/Public/MAPPINGS/EASTASIA/ の Readme.txt を見ると、OBSOLETE ディレクトリを見よ、とある。見てみると、kubota さんのページへのリンクと、いくばくかの情報が。
8/23
#23-03
「ブラウザなんとかしろ。」の 707番で、このページで固まる、って話が。HTML 見ると <title>Izto página</title> とあるけど、これが原因だろうか。でもこちらでは再現せず (ところで、リンクは http://www.asahi-net.or.jp/~AE5T-KSN/d.html?06272010 ではなくて、http://www.asahi-net.or.jp/~AE5T-KSN/d/200108.html#21-02 のようにしていただけると直)。
#23-04
メモ: メニューからエンコーディングを選んだ時に呼ばれるのは menu_callbacks.c の window_menu_encoding_activate_cb() で、設定ダイアログで自動判定を選択した場合に呼ばれるのは mozilla_notifiers.c の mozilla_autodetect_charset_notifier()
8/25
8/26
#26-05
FreeBSD 環境のセットアップの続き。gnome-core を ports で入れようとするも、gnome-db でひっかかる。libtool の問題っぽいので、適当に libtool にパッチ当てて回避
8/27
#27-04
galeon にあのパッチが入ったようだ。
2001-08-26 Takayuki Kusano <AE5T-KSN@asahi-net.or.jp> *src/mozilla.cpp: Reimplemented locale_to_unicode and unicode_to_locale using mozilla's encoders/decoders instead of glibc which makes invalid assumptions. We should consider using these functions instead of iconv where applicable.
#27-06
iPAQ は良さげ。でもジャケットてのが野暮ったい。HandEra 330、カラーじゃないのが非常に惜しい。CLIE の 600、CF のスロットが無い。GENIO e…うーむ、どうなんでしょうねぇ
8/28
#28-02
「Parasitic grid (寄生グリッド)」無線運動が電話会社の収益を脅かす。要は 802.11b によるネットワーク [slashdot - Wireless Freenets As The Parasitic Grid]
8/29
8/30
#30-01
標準に歩み寄るIE 6。Preview の時の記事だけど、DOCTYPE によって IE 6 は挙動を変えるようにした、という話。リリース版はどうだろ [お笑いパソコン日誌 (2001/8/29 PM 7:19)]
#30-04
Kilauea - Massively Parallel Ray Tracer。ハワイ野郎の仕事。Linux BOX のクラスタで MPI か。あ、PDF の最後のページに若大将の御尊影が。Kinesis か