ツッコミをもらいました。ついでにリンク元からも。
http://alohakun.blog7.fc2.com/blog-entry-298.html
やっぱり論理型とかになるんですかねえ。 なんか無理そうだな、とわたしが思ったのは、例えば
assert(なんかすごいウェブサイトが存在する)
みたいなテストがあったら (書けちゃったら) どうすればいいのかなあと。 リストの追加みたいな細かい話ならできるってのはわかるんですが、 それだと結局プログラマが書かなきゃいけないコードの抽象度は変わらないような気がするんです。 SE 殲滅言語としては、すんごい曖昧なクライアントの要求にも応えられるくらい コードの抽象度が高くないといけないんじゃないかと思うのですよ。
うーん。実は単にライブラリを追加していけば済む話なのかなあ……。
(07:58)
rb2exe はだいたいできたんだけど、 喜び勇んでウェブサーバをバイナリ化したら即 SEGV した。 調査していくと、なぜか require 'socket' で dlopen が動いている。 なんでスタティックリンクされた拡張ライブラリをまた読みにいってるんだろう。
どうやら、ちゃんとスタティックリンクされてなかったようだ。 ext/extinit.o も ext/**/*.a もリンクされてない。 libruby.a を作り直して問題解消。
(08:14)
ぜんぜん問題解消してなかった。 kerberos 他のライブラリがリンクされてないよー。
なんかいろいろ必要だなあ。 えーと、db-4.3, gdbm, ssl, crypto, krb5, krb5support, k5crypto, gssapi_krb5, resolv, com_err, readline, ncurses, termcap, util, pthread, z, m, c これで全部か? kerberos なんてどうせ使わないのになあ。 Fedora Core なんかで作るからこんなことになるんだ。 Debian で作ったほうが楽だったに違いない。
うお、まだエラーが出てる。 ext/digest/sha5 のシンボルが libssl のシンボルと重複してる模様。なにい。 SHA512_Transform とか、なんかいかにも重なりそうだな。
うあー、そうか、もしかして ext/digest/sha2/sha2.c って libcrypto から持ってきてるのか。 そりゃ重なるに決まってる。
あれ? そういえば、openssl があるときは そっちを使ってたような気がしたんだけどな。 なんでそうならないんだろう。
うう、そうか、openssl を使うのは sha1 だけなのか。sha2 は違うのね。 きっと openssl のバージョンによって sha2 がサポートされてるとか されてないとか、そういうウザったい話があるのに違いない。
……違うな。重なってるのは SHA*_Transform だけだ。 ということは、これを static にしてしまえば済む話か。
(08:58)
おっかしーなー、定数を再定義してるぞって警告が出る。 どうも同じファイルを二回ロードしてるっぽいな。
……アホか俺は。 require の中で $" をチェックしてないじゃんか。
これで (rb2exe の問題は) 本当に解決したようだ。
(09:16)
よーし使ってみよー。
…… またしても webrick/cgi_runner ではまる。 俺も進歩がないなあ。 えーと cgirunner.rb も rb2exe でバイナリ化ーと。
よし通った。
そういえば、AMD64 上でも動くのかな。 動くような気がするな。試してみよう。
~/c/stdhaskell/src/lazylines % uname -a aamine@serenade Linux serenade 2.6.8-11-amd64-k8 #1 Wed Jun 1 01:03:08 CEST 2005 x86_64 GNU/Linux ~/c/stdhaskell/src/lazylines % ./server aamine@serenade FATAL: kernel too old zsh: 2491 segmentation fault (core dumped) ./server
ぐは……。こうなるのか……。両方 2.6 なのになあ。 2.6.15 と 2.6.8 の違いだけでもうダメなのか。
え、待てよ、ということは、 スタティックリンクしててもカーネルが古いとだめってこと?! そんなの聞いてねー。
もしかして libc でカーネルのバージョンを明示的に指定してるのかなあ。 確かそんなオプションがあったような気がする。
別の AMD64 マシンでも試してみよう。
tukumo:~/c/stdhaskell/src/lazylines % uname -a aamine@tukumo Linux tukumo 2.6.14-2-amd64-k8-smp #1 SMP Tue Nov 15 02:59:29 CET 2005 x86_64 GNU/Linux tukumo:~/c/stdhaskell/src/lazylines % ./server aamine@tukumo ***************************************************** Type Ctrl-C to stop server ***************************************************** [2006-05-22 09:30:33] INFO WEBrick 1.3.1 [2006-05-22 09:30:33] INFO ruby 1.9.0 (2006-05-18) [i686-linux] [2006-05-22 09:30:33] DEBUG TCPServer.new(127.0.0.1, 10081) [2006-05-22 09:30:33] DEBUG WEBrick::HTTPServlet::FileHandler is mounted on /. [2006-05-22 09:30:33] INFO WEBrick::HTTPServer#start: pid=11510 port=10081
なにー。こっちは動くじゃん。バージョンいくつから OK なんだよ。
(09:34)
Copyright (c) 2002-2007 青木峰郎 / Minero Aoki. All rights reserved.