Just another Ruby porter,

〜2003年5月下旬〜


<Older(,) | Newer(.)> | Recent(/)>> | RDF

2003-05-21 (Wed)

[Windows] XKeymacs

キーボードのレイアウトも変更できるし、設定は簡単だし、よさそうだ。

[Ruby] ruby-google 0.5.1

更新。

[Ruby] bdb 0.4.2

更新。


2003-05-22 (Thu)

[Ruby] *1..1

また元の仕様に戻った。

% ruby -ve 'p(*1..1)' 
ruby 1.8.0 (2003-05-22) [i386-linux]
1

inetd.co.jp

今月で切れる。さてどうしようかな。


2003-05-23 (Fri)

[Win32] OpenOffice 1.1beta2

表示されるフォントが1.1beta1と比べるとちょっと変わったようだ。 でも1.1beta1からはフォントの設定をいじらなくても日本語を扱えるから楽だよね。 Export as PDFがかなり役立っている。 メニュー等の表示が英語になってしまうのが気にならなければ十分このままで使える。


2003-05-24 (Sat)

[Windows 2000] キーボード配列(US配列)

自分の好みはUS配列で、ESCは1の左、ControlはAの左、`はReturnの左。 つまりNEWSやAXのキー配列だ。

自分の思い通りに設定するには 窓使いの憂鬱を使うのが柔軟性もあっていいのだが、実は先日のトラブルの際、 C:\Program Filesのバックアップは取っていなかったため、 あれこれ設定した内容が失われてしまった。 全部~/.mayuに書いとけばねえと今さら言っても遅い。 また設定しなおしてもいいんだけど、 別の方法を探ってみよう。

Windows 2000でUS配列を実現するには簡単で、 コントロールパネル-キーボード-入力ロケールで追加(D)ボタンを押して、 入力ロケール(I)で英語(US)を選べばいい。 これで入力ロケールのホットキーが左Alt+Shiftになるので、 ホットキーでトグルになる。 ただし、US配列になるのは英語(US)に切り替えたときだけなので、 日本語入力時にはまた戻ってしまう。これではいまいち使えない。 プロパティ(P)のキーボード レイアウト/入力システム(K)で米国を選ぶと、 今度はIMEを起動できない。これはXKeymacsでC-oとかに割り当ててもだめ。

「キー」「配列」「変更」「windows 2000」でぐぐってみると、 面白い記述が見つかった。日本語106/109USB接続のキーボードがなぜか101配列 で動作してしまうという不具合だ。 これは101配列と同じPnP IDの106配列のキーボードが接続された場合に、 101キーボードと認識されてしまうため。対処としてはレジストリで

 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\i8042prt\Parameters]
 "LayerDriver JPN"="kbd101.dll"

のkdb101.dllをkbd106.kbdに変更せよとあった。なるほど。 つまりおいらの場合はこの逆をすればいいわけだ。書き換えてリブート。okだ。 US配列に関してはこれで解決。


2003-05-25 (Sun)

[Windows 2000] キーボード配列(XKeymacs)

昨日の続き。あとはESC、Contrl、`の個別対応だけど、これは XKeymacsのキーボードレイアウトで変更する。 上のキーボードから下のキーボードへDnDするだけなので簡単。 実際は

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"

を書き換えることになるので、administrator権限が必要。 つまりXKeymacsじゃなくても直接regeditでいじってもいい。 そのあたりの情報もぐぐるといっぱい出てくる。

[Windows 2000] Acrobat Reader 5.1

ついでにXkeymacsのカスタマイズを使いAcrobat Readerでスペースバーがscroll-upになるように割り当てた。 それにしてもAcrobat Readerってなぜスペースバーが遊んでるんだろう? もったいない。

ついでのついでに、j, k, g, G, /も割り当ててlessのようにしてみる。 おぉ、いいじゃん。

[Windows 2000] OpenOffice.org 1.1beta2

PDFに変換すると[や]などの記号が90度右へ回転してしまう。うーむ。


2003-05-26 (Mon)

[Windows 2000] kdbax2.dll

会社ではAXキーボードを10年ほど使っているけど、 Windows 2000になってから選択枝にAXキーボードがなくなってしまった。 一昨日の件で、いろいろ見てたらkbdax2.dllを発見。 プロパティでバージョン情報を見てみると

JP Japanese Keyboard Layout for AX2

とあった。試すとちゃんと使える。いままでは 窓使いの憂鬱でいろいろいじっていただけにこれで楽になったね。 ついでに会社も XKeymacsに乗り換え。

[Windows 2000] Scancode Map

変更したレジストリの内容を残しておこう。

REGEDIT4

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,07,00,00,00,38,00,1d,00,\
  01,00,29,00,29,00,2b,00,1d,00,3a,00,2b,00,73,00,2b,00,7d,00,00,00,00,00

2003-05-27 (Tue)

[MSYS][MinGW][Ruby] monolithic executable

インド人からお便りをもらう。とにかく MinGWMSYSでやりたいんだよろしくってことらしい。

I want to compile ruby on mingw by myself, with no DLL's etc,
ONLY one monolithic executable of ruby. Is it possible to do so?

1.6なら特に何も考えずにconfigureすればいいし、 1.8なら--disable-sharedつきで。 あとはREADMEに書いてある通りext/Setupを編集して、 最初の行の#option nodynamicと望みの拡張ライブラリのコメントを外せばいい。

でもbisonがないからCVSからRubyのソースを取ってきた場合は注意。

と思ったら、1.8では-DRUBY_EXPORTをつけないと拡張ライブラリをスタティックにリンクできない。 今までと逆になるから、CCDLFLAGSってわけにはいかないし、ちょっと困ったな。


2003-05-28 (Wed)

[Ruby][MinGW] EXTERN_C _CRTIMP ioinfo * __pioinfo[];

最新のMinGWで環境でこける を調べた。-D__USE_CRTIMP -Eした結果から、 __attribute__((dllimport))を二分法で削除していったら、win32/win32.cの

EXTERN_C _CRTIMP ioinfo * __pioinfo[];

が原因であることがわかった。_CRTIMPが定義されてなければ

#if !defined _CRTIMP
#define _CRTIMP __declspec(dllimport)
#endif

なのでいいんだが、今回のMinGW側の変更で/usr/include/mingw/_mingw.hが

#  ifndef _CRTIMP
#   ifdef __USE_CRTIMP
#    define _CRTIMP  __attribute__((dllimport))
#   else  
#    define _CRTIMP
#   endif

となったため、-D__USE_CRTIMPをつけないと

#    define _CRTIMP

が生き残る。最終的には

extern ioinfo * __pioinfo[];

という宣言でmsvcrt.dllにあるこの変数をアクセスしてしまうので落ちてしまうわけだ。 MinGWではlibc相当を静的にリンクするという選択枝はない以上、 必ずdllimportにならないと困るわけで

#if !defined _CRTIMP || defined __MINGW32__
#undef _CRTIMP
#define _CRTIMP __declspec(dllimport)
#endif

とすればよさそう。これで-D__USE_CRTIMPは削除できる。

[Ruby] pipe_exec()

1.6と1.8のpipe_exec()に違いがないなどと書いているが、 1.6にはpipe_exec()などない。おれは何と比較したんだ?

[Linux] CVS 1.11.6

更新。


2003-05-29 (Thu)

[GNU] findutils 4.1.20

会社のLinux BoxはまだPlamo 2だった。 locate -i(--ignore-case)が使いたくてインストール。

% CFLAGS=-Os ./configure \
  --prefix=/usr --disable-nls --localstatedir=/var/locate

2003-05-30 (Fri)

[Cygwin][MinGW] gcc -fnative-struct vs. gcc -mms-bitfileds

なんでgcc 3.xで-fnative-structが実装されないんだと思ったら、 -mms-bitfieldsという名前になったらしい。

`-mms-bitfields'
     If set, RECORD_TYPE bit-fields are laid out following the rules of
     Microsoft Visual C/C++, namely: (i) a bit-field won't share the
     same storage unit with the previous bit-field if their underlying
     types have different sizes, and the bit-field will be aligned to
     the highest alignment of the underlying types of itself and of the
     previous bit-field; (ii) a zero-sized bit-field will affect the
     alignment of the whole enclosing structure, even if it is unnamed;
     except that (iii) a zero-sized bit-field will be disregarded
     unless it follows another bit-field of non-zero size. Currently,
     this option is supported on `cygwin' and `mingw32'.

2003-05-31 (Sat)

[Ruby][MinGW][Cygwin] -DRUBY_EXPORTとRUBY_EXTERN

auto importを使えばdllimportする必要もないので、

#define RUBY_EXTERN extern

となるようにdefines.hを変更して実験してみる。

% ./ruby -r./ext/Win32API/Win32API -e0
./ext/Win32API/Win32API.so: wrong argument type Fixnum (expected Class) (TypeError)

rb_cObjectがちゃんと伝わっていない。 ってことはauto importがうまく機能してないな。 というよりauto importをちゃんと調べよう。 ライブラリの作り方に秘密があるに違いない。

1.6だとrb_class_new()にCheck_Type(super, T_CLASS);がないので、 そのまま落ちているパターンだ。


<Older(,) | Newer(.)> | Recent(/)>> | RDF


WWW を検索 jarp.does.notwork.org を検索

わたなべひろふみ
Key fingerprint = C456 1350 085F A320 C6C8 8A36 0F15 9B2E EB12 3885
Valid HTML 4.01!