部分的なUTF-8
tDiaryはEUC-JPの指定があるようだ。UTF-8の文字を埋め込むにはどうしたら良いのだろうと思っていたが、何も指定しないで書いてみたら、表示されている。自動でUTF-8の部分を判定してくれているようだ。ちなみに、ベンガル文字はহাইড্রোজেনてな感じ。この単語の意味は水素です。
utf-8とhtml
utf-8の番号
htmlで多国語を扱うときには、utf-8が便利である。しかし、utf-8の文字を入力するのはそれほど簡単ではない。バイナリをいじったりする必要もある。htmlでは、অなどという書き方をすることができ、これだと普通のエディタで編集できるので、扱いやすい。このバイナリと番号の対応が分からなかったのだが、
man utf-8
としたら、変換の仕方が説明してあった。原理が分かったので、変換スクリプトをrubyで書こうと思ったら、
p "\xe0\xa6\xbe".unpack("U*")
で変換できてしまった。簡単に書けてうれしいような、アルゴリズムを考える必要が無くなって悲しいような。この数字に&#につければ、バイナリの代わりに文字を表すことができる。これで、ベンガル語のhtmlを楽に書けるようになった。
ベンガル語のフォント
ベンガル語とlinux
ベンガル語を勉強する必要がでてきたので、とりあえずフォントをインストールした。
aptitude install ttf-indic-fonts
あとはXを再起動しないといけないらしい。ctrl+alt+backspaceで再起動するが、他のプログラムも止まるので、仕事が終わってからにしよう。
lennyのGPIB
lennyにGPIBをいれてみた
lennyのリリースがもうそろそろということで、lennyをインストールした。Xを入れるつもりはなかったので、標準システムしか入れなかったので、特にetchとの違いは感じなかった。etchではなぜかgpibのパッケージが無かったが、lennyは今のところgpibに対応してみるようなので、GPIBもインストールしてみた。
aptitude install gpib-modules-source module-assistant auto-install gpib aptitude install libgpib0-dev
としたら、すべてのパッケージがそろった。あとは、/etc/gpib.confでnameを適宜変更して、/etc/groupでユーザーのグループを設定する。今回のボードでは
name="ni_pci_accel"
とした。gpib-rubyのインストールはetchとかとほとんど同じだった。 設定をいろいろといじっていたら、起動したときにうまく組み込まれなかったり、gpib_configが実行されなかったりしたが、結局ボードの設定のみをいじれば良いらしい。 以前に比べると、インストールのときに打つコマンドが非常に少なくなったように感じる。gpib-modules-sourceをいれたらkernelのソースも自動的に入ったし、modprobeの設定も自動にされるようだ。しかし、くせをつかむまでにはやはり多少苦労した。
telnetのインストール
telnetとssh
最近はsshのみでtelnetはほとんど使わないのだが、windowsとlinuxからなる外につながっていないネットワークで使用しようと思って、linuxにtelnetをインストールした。windowsではsshも使えないので、cygwinを入れるのも面倒だし、telnetでいこうということになったのだ。
sshはコマンドラインで一発でインストールできるのだが、telnetは意外に面倒だった。まずは、aptでtelnetdを入れて、/etc/inetd.confに
telnet stream tcp nowait telnetd /usr/sbin/tcpd /usr/sbin/in.telnetd
という行を追加する。さらに/etc/hosts.allowのホストですべてを許可するように、
ALL: ALL
とする。そして、inetdを再起動するために、
/etc/init.d/openbsd-inetd restart
とする。ついでにftpdもインストールしたが、こちらは特に設定する必要はなかった。 windowsがsshに対応していれば、こんなこともしなくても良いのだが。少しは他のOSとの共存を考えてほしいものである。
localhost
127.0.0.1 or 127.0.1.1
socketのプログラムを書いていて、サーバーが動いているマシンと同じマシンからのアクセスなのか、異なるマシンからのアクセスなのかを判断しようとして、少し迷った。サーバー側でクライアントの情報を見ると、自分のマシンが127.0.1.1になっている。localhostは127.0.0.1なのに変だなと思って調べると、/etc/hostsには’localhost’だと127.0.0.1で、ホスト名だと127.0.1.1となるらしい。とりあえず、127.0.1.1の時は、同じマシンからのアクセスだということにした。
StringIO
CGIのformのデータ
CGIをrubyを使って書くことがあるが、formのデータを取り込むときには、
data=cgi.params["data"].collect{|l| l.read}
というようにしている。しかし、一度readしてしまうと、もう読めなくなってしまう。これをなんとかしたかったのだが、これまでどうしたら良いかが分からなかった。調べてみたら、上のlのclassはStringIOというもので、文字列なんだけどIOとして扱えるものらしい。読み込んだデータをもとに、もう一度StringIOを作ってやれば良いのだろうということで、
cgi.params["data"]=data.collect{|l| StringIO.new(l)}
としてみたら、うまく行った。読み込むたびにこれをやるのも面倒だが。もっと良い方法があるのかも知れないが、これで動いているからまあ良いかな。
window manager
いくつかのwindow managerを試してみた。
現在、icewmを使っているが、調べてみると、このところあまり開発は盛んではないようだ。個人的には、軽いし最低限の機能はあるので、不満は無いのだが、開発が止まってしまうと徐々に廃れていく。
fluxboxをインストールして、試してみた。icewmのメニューのsystemのwindow managerのところには無かったので、.xsessionを書き換えて起動したが、後でみたら、プログラムの下のウィンドウマネージャにはあった。少し使った感じでは、まあまあ良い感じだが、メニューの一部が文字化けしていた。tabとslitが特徴らしいが、なぜか動かなかったので、icewmと比べて特に惹かれる点はあまり無いように感じた。
折角なので、Xfce4も使ってみた。こちらは統合環境の割には、起動が速くて関心した。あまりうるさい感じはしないし。キーボードショートカットの設定も比較的簡単なようだし。icewmの次の候補にしておこう。
Debian
lennyのreleaseも間近か
久しぶりにDebianのサイトを覗いてみたら、次期メジャーリリースが近付いているようだ。リリースに関与するバグの数が100ぐらいになっている。過去の例を見ると、あと二ヶ月ほどでリーリスされる可能性が高い。
思い返してみると、メインマシンのOSをWindowsからLinux替えたのが約三年半前で、Sargeがリリースした後だった。それから二年ほどたってEtchに代えて、次はLennyか。
そういえば、研究室にはまだSargeのマシンがあるので、そろそろ入れ替えないといけないかな。EtchはなぜかGPIBがパッケージの形ではサポートされていないようだったので、なんとなくそのままにしてある。Lennyではパッケージが提供されるかな。Etchには、SSLの重大なバグがあったし。
まあ、新しいOSにしてもほとんど自分流のカスタマイズをしてしまうので、ほとんど変わらないのだけども、リリースが待ち遠しいな。そろそろGNOMEとかKDEとかにも慣れないといけないのかな。