〜2003年8月下旬〜
どうも、ruby-talk MLではlib/配下にあるライブラリを Standard Libraryとかstdlibと呼ぶような暗黙の了解ができつつある。
今日も50通ほど。30分に1通は来てる感じ。
早速試してみた。って元々長くないURLで試しても意味なし。 kqrgと4ケタになっていて、succしてるだけのようだ。 kqrzはエラーになった。と書いてるうちに埋まった。なるほどねえ。 こんな感じでそのうちケタも増えるわけだね。
今日は32通。YOUR-W92P4BHLZGというホストからはのべ100通を越えた。 こいつが気づかない限り続くわけだよねえ。しかも
Date: Fri, 22 Aug 2003 8:14:20 --0500
のようにtimezoneが変だ。 他のホストからも--0400だの--0700だの変なのばかりだな。 って、Sobig.Fのバグなんかどーでもいいのだよ。
YOUR-W92P4BHLZGでぐぐってみるとMessage-Idで200件以上ヒットするが、 どうも特定できそうもない。
GCC 3.3.1でもコンパイルできた。
80000を越えた。70000から4ヶ月。
今日も60通ほど。これだけ気づかないやつも珍しい。 1通が100KBぐらいだからダイアルアップのままだったら死んでるな。
買った。
$arrayref = @array; $hashref = %hash;
がそれぞれの長さではなく参照になるのがちょっと驚き。
while (@array) {
はどうするのかと思ったら、 数値コンテキストやブーリアンコンテキストなんてので評価するらしい。 このあたりは Exegesis 2(日本語訳)を参照。Exegesis 1は最初から存在しないので探さないように。
18時以降YOUR-W92P4BHLZGから来なくなった。あとはCHEF2だけだな。
そろそろ出そうな雰囲気なので、snapshot 2003-08-23でRubyをmake。 問題なし。
raccをbuildするときに、 ソースとは別のディレクトリでconfigするとfailしてしまう。 そうか。VPATHのドライブレター問題だ。 CONFIG['build_os']が'cygwin'とは限らないから決めうちにもできないしねえ。 Cygwinのmakeが動いているかどうかを動的に判断できればいいわけか。 難しい。
単にパソコンの電源を落としただけだったようだ。 それどころか、2台増えた。
ちょっと弱気にGCC 2.95.3でmake。
なにげなく
% ruby -ropen-uri -run -e cp http://www.ruby-lang.org/ja/index.html .
を実行してみるとErrno::ENOENTになった。該当する行を見るとFile.openしてるので un.rbに
require 'open-uri' class File def self.open(*a, &b) Kernel.open(*a, &b) end end
を追加してみた。いけた。面白い。
昨日のように常にopen-uriをrequireするとmake installが2倍以上時間がかかるようになってしまった。 というわけで-ropen-uriしたときだけFile.openの挙動を変えてみるか。
if $".include? 'open-uri.rb' class File def self.open(*a, &b) Kernel.open(*a, &b) end end end
VPATH=c:/ all:
というMakefileを作りCygwin上でmake -p|grep -A1 '`VPATH'と実行すると
# General (`VPATH' variable) search path: # /
と表示される。MSYSだと
# General (`VPATH' variable) search path: # /c
となる。 これで違いがわかるけど、あらかじめmakeを実行しなきゃいけないあたりがちょっとださいね。
もう24時間以上YOUR-W92P4BHLZGから来てない。やっと気づいたか?
うささんといろいろ調べた結果AltGrってのは結構難物だということがわかった。 cygwinのfhanlder_console.ccに
/* Set the mask that determines if an input keystroke is modified by META. We set this based on the keyboard layout language loaded for the current thread. The left <ALT> key always generates META, but the right <ALT> key only generates META if we are using an English keyboard because many "international" keyboards replace common shell symbols ('[', '{', etc.) with accented language-specific characters (umlaut, accent grave, etc.). On these keyboards right <ALT> (called AltGr) is used to produce the shell symbols and should not be interpreted as META. */ if (PRIMARYLANGID (LOWORD (GetKeyboardLayout (0))) == LANG_ENGLISH) dev_state->meta_mask |= RIGHT_ALT_PRESSED;
という記述を見つけたが、これだとLANG_ENGLISH以外はあまり嬉しくない。
Cygwinのfhanlder_console.ccの続きを読むと
if (wincap.altgr_is_ctrl_alt ()) /* WinNT: AltGr is reported as Ctrl+Alt, and Ctrl+Alt is treated just like AltGr. However, if Ctrl+Alt+key generates an ASCII control character, interpret is as META. */ meta = (control_key_state & ALT_PRESSED) != 0 && ((control_key_state & CTRL_PRESSED) == 0 || (ich >= 0 && ich <= 0x1f || ich == 0x7f)); else /* Win9x: there's no way to distinguish Alt from AltGr, so rely on dev_state->meta_mask heuristic (see fhandler_console constructor). */ meta = (control_key_state & dev_state->meta_mask) != 0;
となっていた。WinNT系はCtrl+Altかどうかで判断できるらしい。 もうちょっと他のアプリケーションも調べてみよう。
あまりに面白くて読み耽る。
Emacsではw32-recognize-altgrという変数があるようだ。 なるほど。独自の設定項目を用意する方法もあるわけか。