トップ «前の日(11-29) 最新 次の日(12-01)» 追記

Masa's blog

検索キーワード:

2010年11月30日 ruby-1.9.xのエンコーディング関係のエラー

_ invalid multibyte char (US-ASCII)

たとえばeuc-jpで記述されたスクリプトの日本語がらみの部分でこのエラーが出た場合は、スプリプトの先頭を

#! /usr/bin/ruby
# -*- encoding: euc-jp -*-

のようにして、エンコーディングを指定する。

追記 : 上記のようにしてもダメなことがあった。`#! /usr/bin/ruby -Ke' と指定するとOKとなった。

_ incompatible character encodings: EUC-JP and ASCII-8BIT (Encoding::CompatibilityError)

たとえばeuc-jpで文字列が格納されているはずの変数strでこのエラーが出た場合は

str.force_encoding('euc-jp')

のようにしてエンコーディングを変更してやる。

実際には dbi, dbd-odbc辺りでこの現象が出た。以下のように対応した。

sql = <<SQL
        select * from member where id >= ?
SQL
sth = dbh.prepare(sql)
sth.execute(1)
while (row = sth.fetch)
        sth.column_names.each {|name|
                if (row[name].kind_of?(String))
                        row[name].force_encoding('euc-jp')
                end
        }
        puts "セレクトに成功しました(id=#{row['id']})(name=#{row['name']})(job=#{row['job']})"
end
sth.finish

いずれもruby-1.8系からruby-1.9系への変更による影響。


2011年11月30日 xorgのタッチパッド無効化(Slackware-13.1 ちょっと古いけど)

_ xorgのタッチパッド無効化(Slackware-13.1 ちょっと古いけど)

富士通のノートPCにインストールされたSlackware-13.1を、そっくりそのまま日立のノートPCに移し換える作業をした。作業そのものは問題なく終ったが、USBマウスを挿していても手元のタッチパッドが有効になっていて、キータイプ時にマウスカーソルが動いたり、クリックされたりして、ちょっと使い勝手が悪くなった。

そこで、タッチパッドを無効にする方法(X.Org X Server 1.7.7)を調べた。

# cp /usr/share/hal/fdi/policy/10osvendor/11-x11-synaptics.fdi /etc/hal/fdi/policy/
# vi /etc/hal/fdi/policy/11-x11-synaptics.fdi

で、

<merge key="input.x11_driver" type="string">synaptics</merge>

の次の行に

<merge key="input.x11_options.TouchpadOff" type="string">1</merge>

を追加して、リブートでOK。

ちなみに、日本語キーボード対応と[Ctrl]<->[CapsLock]の入れ換えは、

# cp /usr/share/hal/fdi/policy/10osvendor/10-keymap.fdi /etc/hal/fdi/policy/
# vi /etc/hal/fdi/policy/10-keymap.fdi

で、

<merge key="input.xkb.options" type="string">terminate:ctrl_alt_bksp</merge>
<merge key="input.xkb.layout" type="string">us</merge>

<merge key="input.xkb.options" type="string">ctrl:swapcaps,terminate:ctrl_alt_bksp</merge>
<merge key="input.xkb.layout" type="string">jp</merge>

に修正する。

Slackware-13.37(X.Org X Server 1.9.5)の場合

一部未検証(タッチパッドの無効化)だが、

# cp /usr/share/X11/xorg.conf.d/50-synaptics.conf /etc/X11/xorg.conf.d/
# vi /etc/X11/xorg.conf.d/50-synaptics.conf

で、

Option "TouchpadOff" "1"

を追加と、

# cp /usr/share/X11/xorg.conf.d/90-keyboard-layout.conf /etc/X11/xorg.conf.d/
# vi /etc/X11/xorg.conf.d/90-keyboard-layout.conf

で、

Option "XkbLayout" "us"
Option "XkbOptions" "terminate:ctrl_alt_bksp"

Option "XkbLayout" "jp"
Option "XkbOptions" "terminate:ctrl_alt_bksp,ctrl:nocaps"

に修正でOK(と思う)。