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(と思う)。
[ツッコミを入れる]