観察日記 2010-01-28
Windowsを忘れないでいただきたい
23:22 (kosaki) 今のrubyってビルドオプションに-fPIEついてない気がするけど意図的?
23:23 (unak) -fPIEとは
23:24 (kosaki) gccのオプションで実行アドレスがランダムかされる
23:24 (kosaki) コンパイルオプションつけないとヒープとかスタックしかランダム化できない
23:24 (unak) ランダム化は主ではないよね?
23:25 (kosaki) 僕の認識では主
23:25 (kosaki) つまり、CGIとかで動かすときにコードのアドレスが固定だとコードパッチングが簡単すぎるので
23:26 (kosaki) fedoraとかのruby-1.8.6はlibrubyに全コードはいっていて、rubyコマンドはライブラリ呼ぶだけという面白い構成
23:27 (unak) /DYNAMICBASE か...
23:30 (unak) しかし昔はわざわざrebaseしてロードアドレスの固定化をしてプロセス起動を高速化しなさいと言われていたものなのに世知辛い時代だ
23:30 (kosaki) そもそも、rubyは-rdynamicついているのでアドレス固定でも速くないよ
23:30 (unak) ちっちっち
23:31 (unak) 俺と話すときは土俵がWindowsだということを忘れないでいただきたい
23:31 (kosaki) おみそれしました!
gcc以外でビルドするには
23:57 (kosaki) rubyのMakefileってgcc前提に見えるのですが、マイナープラットフォームの方々はどうやってビルドしてるの?
23:58 (unak) (1) ccでもいける(ことが多い)よ!
23:58 (unak) (2) 必要なら別の方法でMakefileを作るよ!
23:59 (unak) どっちか。
23:58 (nurse) ./configure --with-gcc=clang
configure.in
00:02 (kosaki) configure.in とか見ていると自分がいかにユーザランドに疎いか分かるな
00:02 (mame) 異国人だ
00:03 (unak) ぜひwin32の下を見て
00:03 (nurse) configure.inを見て、あれがホームだと思える人は
00:03 (unak) カルチャーギャップに酔いしれていただきたい
00:03 (nurse) めがつぶれてしまう
00:04 (kosaki) これは死ねる
00:04 (kosaki) 目がー目がー
00:04 (unak) かぁっこいいよっ!
00:05 (unak) win32/setup.makの意味不明さとか
そもそもmswin32はconfigure.inではなく、win32\configure.batを使う。configure.inやmkmf.rbなどはあまりにアレなので書き換えようという話がたまに出るのだが、まぁ、何で書いても汚いんだよな。
make uninstall
10:42 (n0kada) make uninstallつけるかな
10:45 (n0kada) sed '/\/$$/d;s:^/::' $(INSTALLED_LIST) /dev/null | (cd $(DESTDIR)/.; exec xargs rm)
10:45 (n0kada) あたりかな
10:49 (eban) それだと掘ったディレクトリは残るねえ
10:50 (n0kada) sed '/\/$$/!d;s:^/::' $(INSTALLED_LIST) /dev/null | (cd $(DESTDIR)/.; exec xargs rmdir)
10:51 (eban) たとえば
10:51 (eban) /usr/local/lib/ruby/1.9.1/i386-linux/
10:51 (eban) /usr/local/lib/ruby/1.9.1/i386-linux/io/
10:51 (eban) って順番に出てくるからそれもだめ
10:51 (n0kada) 逆順か revを間に
10:52 (eban) xargsとかrevとかちょっとアレだな
10:52 (n0kada) un.rbにでも入れる?
10:52 (eban) 自分自身を消すことになるよ?
10:52 (n0kada) 消せるでしょ DOSISH以外なら
10:52 (eban) windowsはだめ cygwinはいけるかな
10:53 (nurse) srcdirのun.rb使えば
10:54 (n0kada) MakefileとINSTALLED_LISTが利用できるという前提ならminirubyでも
10:54 (eban) ああ、そうか
10:55 (n0kada) そういう意味ではun.rbじゃなくてtool/rbuninstall.rbとか、tool/rbinstall.rbに--uninstallとかつけるのでもいい
10:58 (eban) そういえばrevじゃなくてtacだな
10:58 (eban) tacにしたところで、solaris10になさげ
10:59 (nurse) とりあえずFreeBSDにないからtacダメ
10:59 (n0kada) revは行内だったか
11:00 (eban) まあそこはsort -rとかでがんばれないこともない
11:01 (n0kada) -rなら必ず親が後になるな
11:02 (eban) xargsはsolaris10にはあるが微妙な線
11:04 (n0kada) まぁWindowsまで考えればxargsもsedも期待できない
11:09 (n0kada) Windowsだとdrive letterというゴミもあった
configureとかもそうなんですが、まぁ、クロスプラットフォームだとなかなか難しいです。
Enumerator#length
12:14 (mame) [ruby-dev:40200] うーん
12:14 (znz_m) http://mla.n-z.jp/?ruby-dev=40200
12:14 (mame) 悪くないと思うけど隠し機能くさい API がなんとも
12:16 (mrkn) 隠し機能感は確かにありますね・・・
個人的には特異メソッドではなく普通に定義するべきだと思う。しかし、提案の影響範囲を広げると発散しやすくなるんだよな。
bladeの仕組み
12:37 (mrkn) blade 変だ
12:37 (mrkn) [ruby-dev:40199]
12:37 (znz_m) http://mla.n-z.jp/?ruby-dev=40199
12:37 (mrkn) P とかN とか消えてる
12:38 (mrkn) [ruby-dev:40198]
12:38 (znz_m) http://mla.n-z.jp/?ruby-dev=40198
12:38 (mrkn) N がアンカーになってない
12:43 (eban) たぶんそのあたりはcronかなにかで定期的に更新してるんじゃないかな
12:43 (mrkn) なるほろ
12:46 (mame) 投稿直後だとなんかリンクされないですね
12:47 (eban) メールだと順番通りに来るとは限らないので、ある程度の幅でバッファしてるんだと思う