〜2003年7月下旬〜
このマシンはシリアルマウスなので/etc/devfsd.confのmisc/psauxをttyS1に変更。
Xを終了すると画面が乱れたままだな。 setfontも利かない。 ま、たいていはshutdownかrebootだからほとんど問題ないんだけど、ちょっと気持ち悪い。
結局はHash[]に帰着するんだけど、でも
[1, 2, 3].to_h { |n| n**n } #=> {1=>1, 2=>4, 3=>9}
というのが欲しくなるのは、 cacheというかあらかじめ計算しておくというか、 なんかto_hという名前とは違う気がする。
まったく役に立たないばかりか邪魔なジョグダイアルランチャをアンインストールしたら、 Fn+F7でのVGA出力切り替えができなくなった。 また、おれの嫌いなリカバリCDのお世話になる。 ついでに、使わないアプリケーションをインストールしないように、 3枚目はインストールを省略。
インストールしないとログオンするたびにインストールが終了してないとポップアップするが、 レジストリ
\HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
を見てそれらしい値を削除。いいようだ。
よく見るとここにJOGSERV2.EXEってのがある。これかー。renameしとこう。 HKSERV.EXEがFn+F7とかの機能を提供しているようだ。 これだけあればよさそうだよな。なぜジョグダイアルランチャと関係する? 再リカバリして試してみるか。
始まった。
ここを見ると順番にTMP, TEMP, Windowsのディレクトリを調べるとあるが、 実際にWindows 2000 Pro.で試したらTMP, TEMP, USERPROFILE, C:\WINNTとなった。
インストール時はコンピュータ名を大文字にしか設定できないが、 [マイコンピュータ]-[プロパティ]-[ネットワークID]-[プロパティ]で変更すれば小文字にできる。
intが32ビットで、ポインタが64ビットってことか。
以前インストールした古いREXMLが残っているので、 いつまで経ってもsite_rubyのほうがrequireされてしまうわけだ。 Perlが
% perl -V |sed -n '/@INC/,$p' @INC: /usr/local/lib/perl5/5.8.0/i586-linux /usr/local/lib/perl5/5.8.0 /usr/local/lib/perl5/site_perl/5.8.0/i586-linux /usr/local/lib/perl5/site_perl/5.8.0 /usr/local/lib/perl5/site_perl/5.6.1 /usr/local/lib/perl5/site_perl .
のようにsite_perlが後になっている理由はこれか? でも、新しいのがsite_perlにインストールされて、 古いほうばかりuseで呼ばれると文句を言ってるPerlユーザもいるから、 どっちもどっちか。
それはそれとして、アンインストールできないとまずい状況になりつつある。
咳さんのメールにも出てきてるなあ。 typedef unsinged long st_data_t; にするのが変更が少なくて済みそうだ。
なぜか失敗続きだったWindows Updateが今日になって急にちゃんと更新できるようになった。 さっぱり理由はわからないんだけど。
クロスの環境だとpkg-configはちょっとまずい。 mingwでは-lgdi32も必要なので、
prefix=/usr/local/mingw exec_prefix=${prefix} libdir=${exec_prefix}/lib includedir=${prefix}/include Name: OpenSSL Description: Secure Sockets Layer and cryptography libraries and tools Version: 0.9.6h Requires: Libs: -L${libdir} -lssl -lcrypto -lwsock32 -lgdi32 Cflags: -I${includedir}
というopenssl.pcを/usr/local/mingw/lib/pkgconfigに用意して
% PKG_CONFIG_PATH=/usr/local/mingw/lib/pkgconfig make
としてみた。
0.9.6hだとrubyのmissing.hのcryptのプロトタイプ宣言がぶつかる。 missing.hのほうを
extern char *crypt _((const char *, const char *));
にすべきか。
./Configure --prefix=/usr/local/mingw mingwしてmakeすればできあがり。 make installしてものをtarballにまとめてLinux boxで展開。 これでopenssl.pcもちゃんと/usr/local/mingw/lib/pkgconfigにできるので、 でっちあげる必要もなし。
借りた。
Win32APIは使いたくないらしい。 単純に何も考えなければ26個調べればいいわけだが、mingw版rubyで
drives = [] for i in 'a'..'z' drives << i + ':' if File.exist?(i + ':') end
だと、
ドライブにディスクがありません。 ディスクをドライブ\Device\Harddisk1\DR0に挿入してください。
と警告がpopupする。cygwin版だと出ない。不思議。 ま、だめだってことに変わりはないんだけど。
CygwinでMinGW版rubyを作るときにもpkg-config問題が発生することがわかった。 ext/openssl/extconfig.rbにpkg-configを使う変更が入ったのはRed Hat対策のためなので、 pkg-configを後にするというのはたぶん解決にならない。 これを見ると#include <openssl/ssl.h>が失敗してるようなので、
have_header("openssl/crypto")
よりも
have_header("openssl/ssl.h")
のほうがよさそうだ。これが失敗したらpkg-configを実行する。
これでRed Hatを救済できるはずだが、 どうもそもそもこのpkg-config作戦では解決になってないという噂もIRCで耳にした。 うーむ。
Ruby 1.8.0-preview5をインストールすると、 --enable-rubyinterpしたvimが立ち上がらなくなってしまった。
% vi vi: relocation error: vi: undefined symbol: rb_defout
vimのほうでrb_defoutを参照してるんだよね。これは困った。 しかたない。if_ruby.cを 書き換えよう。
だからどうしてContent-Type: text/plain; charset=iso2022-jpなのだ? iso-2022-jpにしてくれー。
つまり、このジャケ写の右から順に脱退している。 中澤までは偶然だよなあ。 後藤からはつんくが意図的にこの順番で脱退させてる?
タイムスタンプを保存すればよさそうなので、 FileUtils::installにpreserveを追加。 ついでに拡張ライブラリ側のインストールもFileUtilsを使うように、 un.rbを導入。
src/common.cには
bdb_test_error(dbp->stat(dbp, &bdb_stat, 0)); dbp->close(dbp, 0); bdb_test_error(dbst->dbp->rename(dbst->dbp, name, subname, newname, 0));
というようなコードがある。関数へのポインタだったのか。だめだ。 増えちゃったよ。 やっぱここで#undefしないと、win32/win32.hのstat,close,renameとぶつかる。
そうか。closeがrb_w32_closeという名前にすべて変更されれば問題ない。 引数までつけてしまうと数が合わないからエラーになる。うーむ。 普通の変数は救われるからいいか。
_,lib_dir = dir_config("db", "/usr")
というデフォルトはやだなあ。クロスでは必ず--with-db-dirを指定しなきゃいけないじゃん。
標準添付になっているRuby Binaries 1.8のライブラリは
bigdecimal(bigfloat), csv, date2, drb, ossl, ruby-zlib, rexml, xmlrpc4r
といったところかな。Cygwin版は空のパッケージにしておこう。
-W0で警告を出さない設定ができるようになった。
% ruby -e 'p "a.b".sub(".", "#")' -e:1: warning: string pattern instead of regexp; \ metacharacters no longer effective "a#b" % ruby -W0 -e 'p "a.b".sub(".", "#")' "a#b"
そりゃむりだって。
すぐに思いつくのは
i = 0 a.sort_by {|e| [e, i += 1]}
だけど、このi = 0が気に入らない人が多いようだ。 で、その後はwith_indexな話に突入する。