トップ «前の日記(2005-05-20 (Fri)) 最新 次の日記(2005-05-24 (Tue))» 編集   RSS 1.0 FEED  

Journal InTime


2005-05-23 (Mon) [長年日記]

_ [Ruby] SEGV

仕事で書いているRailsアプリケーションのテストでSEGV。 どうも、viewでsyntax errorが起きている部分がまずいようだ。

ここで深入りすると仕事が進まないうちに一日が終わることがままある *1 ので、ぐっとこらえてruby-devに投げる。 *2 まつもとさんによって一瞬で修正。

*1  しかも、今回はGCがらみだったので危険な匂いが。 まあ、たいていGCがらみなんだが。

*2  こういう日にかぎってまつもとさんが自宅作業だったりするのだ

_ [ソフトウェア] linux-2.6.11.10

カーネルを2.6.11.10にアップグレードした。

前は2.6.9だったので、アップグレードは随分ひさしぶりだ。 最近は2.6も安定しているのでたいした苦労はないだろうと思っていたが、 大きな間違いだった。

_ [ソフトウェア] tapデバイスのMacアドレス

会社のVPNは、OpenVPNでEthernet Bridgingを行っているのだが、前は tapデバイスのMacアドレスの先頭がかならず00:FFになっていたのが、 linux-2.6.11.10ではバラバラな値になるようだ。

dhcpd.confの設定で、

class "vpn-clients" {
  match if substring (hardware, 1, 2) = 00:FF
}

のようにclassを設定していたのが効かなくなってしまってハマった。 とりあえず、

class "vpn-clients" {
  match if (substring (hardware, 1, 2) = 00:FF) or
           option dhcp-client-identifier = <自分のdhcp-client-identifier>;
}

にしてしのいでいるが、subclass使った方がいいんだろうな、たぶん。

_ [ソフトウェア] VMwareのモジュールのコンパイルに失敗

つづいてのトラブルはVMware。 VMwareのモジュールで使っていた関数が無くなってしまったようで、 コンパイルできなくなっていた。がーん。

<URL:http://knihovny.cvut.cz/ftp/pub/vmware/>から vmware-any-any-update90.tar.gz を取得して、

$ tar zxvf vmware-any-any-update90.tar.gz
$ cd vmware-any-any-update90/
# ./runme.pl

で解決。

_ [ソフトウェア] xfree85-driver-synaptics

今度は、tapはtapでもタッチパッドの方のトラブル。 どうも、タップとして判定されてしまうケースが妙に多い。 変なウィンドウががんがん開いてしまう。 もう勘弁してよ...。

何気なくdmesgしてみると、

ALPS Touchpad (Glidepoint) detected
input: AlpsPS/2 ALPS TouchPad on isa0060/serio1

のような表示が。 あれ、ひょっとしてドライバが変わってる?

drivers/input/mouse/alps.cを見ると、

/*
 * ALPS absolute Mode
 ...
 * We used to send 'ges'tures as BTN_TOUCH but this made it impossible
 * to disable tap events in the synaptics driver since the driver
 * was unable to distinguish a gesture tap from an actual button click.
 * A tap gesture now creates an emulated touch that the synaptics
 * driver can interpret as a tap event, if MaxTapTime=0 and
 * MaxTapMove=0 then the driver will ignore taps.

というコメントを発見。 どうも、ハードウェアが発生させるタップイベントは普通のボタンクリックと 区別が付かないので、代りにソフトウェアでエミュレートしている、という ことらしい。

で、タップを無視するには、MaxTapTime=0とMaxTapMove=0を使え、って? 何だ、それ。 カーネルパラメータっぽくないな、と思って調べると、XF86Config-4の 設定のようだ。 synaptics用のXのドライバを使うのか。ふむふむ。

Debian的には、

$ sudo apt-get install xfree86-driver-synaptics

でインストール。楽勝。*1

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "synaptics"
        Option          "CorePointer"
        Option          "Device"                "/dev/psaux"
        Option          "Protocol"              "auto-dev"
        Option          "Emulate3Buttons"       "true"
        Option          "MaxTapTime"            "0"
        Option          "MaxTapMove"            "0"
        Option          "MinSpeed"              "0.3"
        Option          "MaxSpeed"              "1.0"
EndSection

のように設定して、無事タップを無効化することができた。

*1  実はXがxserver-xfree86-dri-trunkによってdivertされててハマったんだけど。