*Article*
★
jless で utf-8
てきとーなパッチで、jless で UTF-8 を出力できるようにしてみた。
しばらく LANG=ja_JP.UTF-8 で生活してみるとしよう。
*
jless の文字コードの処理概要メモ
internalize() にて、内部コードに変換を行う。この処理は以下のような感じ。
- priority の高い文字コードで decode (internalize_* を呼出し)する。
- decode できなければ別の文字コードで decode する。
- decode できた文字コードの priority を高くする。
でもって、出力に指定された文字コードに encode (convert_to_*) する。
*
パッチの内容
internalize まわりで UTF-8 の場合に問題があったのでそこに手を入れたのと、
convert_to_utf8 をてきとーに実装しただけ。
internalize まわりの変更は、JLESSCHARSET=utf-8 の時にも有効なので、
Jam さんに連絡するとしよう。
★
KDE の JavaScript エンジン
Konqueror の JavaScript で、"堀" が /.+/ にマッチしないのは何故?
「堀」と出ることを期待するが→
「」
*
kjscmd
kjscmd なんてものがあったのね。
% kjscmd -i --nogui
KJSCmd 0.3 (type 'help' for more information)
kjscmd> var str="堀";
kjscmd> str.match(/.+/);
null
kjscmd> str="江";
江
kjscmd> str.match(/.+/);
江
KDE の JavaScript エンジンの bug っぽいなあ。
ふと気付いたんだけど、「堀」は U+5800 なので、点番号が0だとダメなのかな?
kjscmd> str="一";
一
kjscmd> str.match(/.+/);
null
kjscmd> str="Ā";
Ā
kjscmd> str.match(/.+/);
null
どうやらそのようだ。
BTSに登録しておきますかね。
★
UTF-8 生活
PuTTY + screen だと、Emacs の描画が狂いやすいなあ。特に SKK で変換したときとか。
*
emacs-w3m
w3m-(input|ouput)-coding-system を utf-8 にして w3m-use-symbol を t に
している(デフォルト)と、罫線素片が U+2500 などで描画されるだけど、
w3m では 1文字分の幅を仮定して dump されるのに、PuTTY では2文字分の幅で
描画されて不幸なことに…。
とりあえず (setq w3m-use-symbol nil) としたけど、デフォルトを
変えちゃおっかな。
★
今日の UTF-8 生活
Solaris 7 の iconv_open は "EUC-JP" ではなく "eucJP" と指定しないとダメ。
Linux (glibc) の iconv_open は "eucJP" も受け付けるし、
件のパッチはそうしておくか。
★
GNU screen の UTF-8
てきとーに screen の Unicode の文字幅の判定を変更してみた。
これで Emacs の描画の狂いが無くなるといいのだが。
*
East Asian Ambiguous
★
今日の UTF-8 生活
またも CP932 に泣かされる。
例の jlessで
cp932.elを表示しようとしたら、NEC特殊文字もNEC選定IBM拡張文字もまともに表示されず。
eucJP ではそれらを扱えないためだろうと、EUCJP-MS にしたところ NEC特殊文字は
表示できたが、NEC選定IBM拡張文字はやっぱりダメ。
考えたら、EUCJP-MS の場合は NEC選定IBM拡張文字は単純に 0x8080 とのビット和
だけじゃダメなのか。CP51932 であればそれでいいけど、GNU C Library の
iconv は CP51932 に対応していないみたい(;_;)
★
今日の UTF-8 生活
★
emacs-unicode-2 での MSゴシック

ふと、Windows 上で emacs-unicode-2 ブランチをビルドしてみた。
でもって、MSゴシックを使って JIS X 0208 の文字を描画してみたところ…。
JIS X 0208 の文字を全て全角の文字幅で描画するには、どうすればいいんだろ?
*
display-table
ムリヤリな手だが、display-table を変更してみた。
例えば「−」であれば、以下のような感じ。
(aset standard-display-table
(decode-char 'japanese-jisx0208 #x215d)
(vector (decode-char 'ucs #xff0d)))
2文字分の幅で表示はできたが、
-outline-Microsoft Sans Serif-normal-r-normal-normal-14-105-96-96-p-*-gb2312.1980-0 (#xFF0D)
が使われてしまう…。
★
停電
雷で瞬停して、Linux BOX が再起動。でもって、fsck 中に停電…。
*
HDD レコーダ
RD も入れっぱなしで、電源を入れると警告が。
録るナビを見ると予約は無事だったけど、なぜか2つだけ「予約名なし」となっていた。
*
URLメモ
kdm からログインログインできず。
パスワードを入力して Return を叩くと、画面が黒くなったと思ったら kdm の
画面に戻ってしまうという…。~/.Xsession-errors を見ると以下のようなエラーが!
Xsession: X session started for ari at 2006年 5月 20日 土曜日 17:41:13 JST
fold: invalid number of columns: `0'
なぜか COLUMNS が 0 になっていて、
fold -s -w ${COLUMNS:-80}
でコケているんだろうな。試しに、/etc/X11/Xsession に
COLUMNS=80 を追加してみたところ無事ログインできた。
いったい何で 0 になっているんだろ?
★
Bフレッツ
光ファイバー キター!!!!!
35Mbps とそこそこ?
★
jless-utf8 on Cygwin
ふと、
jless-utf8を
ck上で試してみた。基本的には問題無いけど、
libiconvの CP932 はダメダメなので、それに依存した jless-utf8 も同様。
ためしに、ibiconv に
パッチをあててコンパイルし、置き換えてみたところ cygwin がまともに
動かなくなってしまった…。まあ、cygwin はそんなに使わないし放置の方向で。
*
URL メモ
★
自宅サーバ
nijino.com から移しますかね。
*
mod_rewrite
mod_rewrite を使ってリダイレクトさせることにしたが、パターンに
"diary/\?([12][0-9][0-9][0-9][01][0-9])" と指定してもマッチせずに悩む。
RewriteLog を取ってみたところ、uri には QUERY が含まれていないためであった…。
ということで、以下のように RewriteCond で QUERY_STRING をチェックを行うことに。
RewriteEngine on
RewriteCond %{QUERY_STRING} ^([12][0-9][0-9][0-9][01][0-9])
RewriteRule diary/ http://sakura.homelinux.net/diary/%1.shtml? [R=301,L]
RewriteRule ^(.*) http://sakura.homelinux.net/$1 [R=301,L]
★
djbdns
ふと、BIND9 から
djbdnsに移行してみることに。
LAN の中でしか使わんので設定はてきとー。
*
インストール
apt で楽々。
# aptitude install daemontools-installer djbdns-installer
# build-daemontools
# build-djbdns
*
dnscache
このページを参考に。
# dnscache-conf dnscache dnslog ~dnscache
# ln -s ~dnscache/ /var/lib/svscan/
でもって動作確認。
# svstat /var/lib/svscan/dnscache
# dig @127.0.0.1 www.google.co.jp
LAN 内からもアクセスできるように変更。
# echo "192.168.0.2" > ~dnscache/env/IP
# touch ~dnscache/root/ip/192.168.0
# svc -t /var/lib/svscan/dnscache
あとは、LAN 内のマシンからアクセスできることを確認。
> nslookup www.google.co.jp 192.168.0.2
*
tinydns
初期設定は dnscache と同様。
# tinydns-conf tinydns dnslog ~tinydns 127.0.0.1
# ln -s ~tinydns/ /var/lib/svscan/
でもって
このページを参考に、ゾーンファイルを作成。
# cd ~tinydns/root
# vi data
# make
あとは動作確認しておしまい。
*
dnscache -> tinydns
dnscache でプライベートアドレスの問合せには、tinydns を指定。
# cd ~dnscache/root/servers
# echo "127.0.0.1" > 0.168.192.in-addr.arpa
# echo "127.0.0.1" > nijino.com
LAN 内のマシンから、LAN 内の名前解決ができることを確認して完了。
> nslookup 192.168.0.2 192.168.0.2
*
URL メモ
以上、12 日分です。