ToDo:
http://d.hatena.ne.jp/Ozy/20070217#p1
僕はこの手のコード見てうひひと思うのは好きなのだけど、 にはさんがインチキするかしないかで四苦八苦とか してるのを考えると、 確率的な方法は潰せるなら潰した方がいいのかもなぁという。
うん。というわけで、ですね。 getpid のカウントを取るとか、 まぁそいうのはアリっちゃアリなんだが、 まぁめどい。
でもとりあえず
echo 0 > /proc/sys/kernel/randomize_va_space
しといた。
うーんめんどいから各自適当に shinh(cheat) とかで 対応していただければ。
あーでもシステムコールのフックはちゃんとやりたいなぁ。
(07:09)
http://golf.shinh.org/p.rb?show+the+way#Ruby
これしか無いよなーというチートをしてたら 当然のようにフラたんとバイナリサイズが同じで面白い。 でも 7B も負けてるなぁ
差が2Bになった
まぁマジメにも解こうよという
(07:23)
プロセス落ちてたのは、 大量の出力があるスクリプトが submit されたからっぽい。 プロセス自体がメモリバカ喰いするとかは すぐ殺されるので問題無いのだけど、 親に大量の出力が来て親が死ぬと終わる、という。 まぁプロセス起動する部分の回りを for i in `seq 1 1000` とかでかこっておいた。
で、この場合、
o = stdout.read
とかでメモリがものすごいことになって死ぬわけだ。 そらそうだ。
んで、
o = stdout.read(10000) e = stderr.read(10000)
とかでいいだろーと思ったんだけど、 なぜか stderr.read(10000) の方が帰ってこなくなった。 stderr に内容がある場合は大丈夫。 あとタイムアウトじゃない場合も大丈夫。 ふーむ IO まわりはわけがわからない。
まぁプロセス死んだ場合は自動再起動するようにしたので、 帰って来ない場合はメモリオーバーで死んでくれた方が ありがたい。よって o = stdout.read で放置しよう。
あ、正解です! むしろバグ発見ありがとうございますというか、 全体的にいいかげんなシステムですいませんという。 ちなみに Ruby だと少々頑張っても プロセス止めるくらいの stdout を送るのは できないみたいだったので、 Erlang の方が速いのではないかという謎の予測が。
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070218#p03
(21:58)
いい問題次々考えるなぁ。
http://golf.shinh.org/p.rb?Booklet+Printing
こういうのは Ozy さんが鬼のように 得意という気がするがどうだろう。
俺が出したのって hello とチート伝説 echo と、 冗談でしかない example_com と 42 だけ。 42 は SF ジョーク言えるなんて 俺もハカーの仲間入りじゃね? とか調子乗ってたけど eban さんに自分の甘さを認識させられた。
(22:26)
前 | 2007年 2月 |
次 | ||||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 |
全てリンクフリーです。 コード片は自由に使用していただいて構いません。 その他のものはGPL扱いであればあらゆる使用に関して文句は言いません。 なにかあれば下記メールアドレスへ。
帰ったらまあまともに縮めます。まだ縮むし。帰るの遅いけど。
ゴルフ場に限って言えばシステムコールのフックをまじめにやる必要は全然ないんじゃない?
単純にmmapとかgetpidとかって関数を含んだライブラリをLD_PRELOADしておけば、システムコールを呼ぶのに、asm("int 80")とか書く必要が出てきて、それはコードが長いので、誰も使わなくなるんじゃないかと。
なんか見落としてるかな
ええ、 LD_PRELOAD でいいというのは、ほとんどの場合正解だと思うのですが、 C や GAS なんかでは、インラインアセンブリじゃなくて機械語埋めちゃえば割に短いバイト数でシステムコールの実行ができちゃうので、それで execve されると悲しいなぁといったところです。
こちらこそ、楽しい遊び場を提供していただいて、ありがとうございます :-)
ところで、その後ちょっと調べてみたところ、Erlang の実行は -s init stop よりも -s erlang halt の方がすっきり止まってくれるっぽいです。
この間も俊太郎の詩をお http://www.stlouisbusinesslist.com/business/5021837.htm?info=viagra cheap viagra %PP