2010年11月10日水曜日

Ubuntu 10.10 + mozc

Ubuntu 10.10では日本語入力はiBus経由なので、デフォルトではiBus + Anthyという
組み合わせになっています。

ちょっと使ってみたところ、いまいち安定してないなぁという印象だったので、
mozc(Google 日本語入力のOSS版)をいれてみることにしました。

パッケージはUbuntu標準で用意されているので、簡単にインストールできますが、
ひとつだけ罠がありました。

このリリースノートの一番最後に書いてありますが、mozcにすると、1つのCPUを
100%消費するというバグがあります。
http://www.ubuntulinux.jp/News/ubuntu1010-desktop-ja-remix

 私のマシンでも再現しましたが、幸いにもCore 2 Duoだったので、もうひとつのCPUで
作業することができましたが、シングルコアのマシンだと大変だったかもしれません。

対策は、上記にも記載されていますが、パッチを当てると良いようです。
/usr/share/ibus/ui/gtk/panel.pyの66行目と67行目を直接修正しておけば
とりあえずは大丈夫でした。

参考までに。

Ubuntu10.10 + 日本語対応 unzip

Ubuntu10.10では、シフトJISのファイル名が含まれるzipファイルをunzipコマンドで
展開したときに、ファイル名が文字化けする。

この問題を解消するunzipパッケージは下記から入手可能。
ftp://ftp.kddilabs.jp/pub/Linux/distributions/ubuntu-jp/archive/ubuntu/pool/main/u/unzip

64bit版 : unzip_6.0-5~5.52~ja1_amd64.deb
32bit版 : unzip_6.0-5~5.52~ja1_i386.deb

なお、Ubuntu 10.10 日本語Remix CDを使ってインストールした場合は、このunzipが
標準で含まれている模様。

2010年11月9日火曜日

Ubuntu10.10でKVM + ブリッジ接続

Ubuntu10.10でKVMを使うときに、ネットワークのブリッジ接続を利用するために
/etc/network/interfacesを下記のように設定した。

-----
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet manual
up /sbin/ifconfig eth0 promisc

auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 1
-----

設定後にネットワークを再起動しておく。
# /etc/init.d/networking restart

これで、eth0の代わりにbr0にDHCPのIPアドレスが割り当てられ、
仮想マシンをbr0で接続することでブリッジ接続で利用することが可能になる。

2010年11月5日金曜日

OpenLDAP 検索時のDNの正規化

OpenLDAPに登録したエントリのDNに全角のアルファベットなどが含まれている時、
検索時に小文字のアルファベットでもマッチします。

例えば、「uid=テストA,dc=example,dc=com」 (Aは全角) が登録されている時、
「uid=テストA,dc=example,dc=com」(Aは半角)を登録することができません。

これは、検索時に検索条件として使われる「caseIgnoreMatch」や「caseExactMatch」などの
条件を処理する場合には、DNを正規化して処理するため、この2つが同一とみなされるためです。

例えば、caseIgnoreMatchは次のように定義されています。
servers/slapd/schema_init.c

        {"( 2.5.13.2 NAME 'caseIgnoreMatch' "
                "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )",
                SLAP_MR_EQUALITY | SLAP_MR_EXT, directoryStringSyntaxes,
                NULL, UTF8StringNormalize, octetStringMatch,
                octetStringIndexer, octetStringFilter,
                directoryStringApproxMatchOID },

この「UTF8StringNormalize」が正規化処理を行う場合に呼ばれる関数です。

OpenLDAPが文字を扱う場合に利用しているUnicodeでは、「全角のA」と「半角のA」は
正規化すると、同じ「半角のA」として扱われます。

エントリの検索時にはUTF8StringNormalizeで正規化した結果でDNの比較を行うため、全角アルファベットと半角アルファベットは同じ文字として扱われます。

ただしエントリの登録時には正規化されていないDNが登録されるため、
先に登録したDNがそのまま登録されます。