grep分裂

http://d.hatena.ne.jp/papamitra/20061130/unix
http://d.hatena.ne.jp/sshi/20061129/p1
から
writeバッファだけの問題かなー grepはLine単位でみるからそのへんもあるんちゃうの?と思って横に長いファイルで試してみた。
結果は以下のとおり

ruby -e 'print "a"*5000' > foo
ruby -e 'puts "a"*5000' > bar
grep a foo>>foo
grep a bar>>bar
wc foo bar
    1     1 10001 foo
    3     3 14099 bar

ちなみにbarは 1行目5000文字、2行目5000文字、3行目4096文字 になりました。。。

  • grepは1ラインずつEOFが検出されるまで読むという作業をする。
  1. 最初は改行で止まってEOFは未検出。1ライン目を出力。
  2. writeバッファは4096バイト毎にフラッシュされるので4096バイトだけ書き込み。
  3. grepが次を読むと4096バイト+[EOF]なのでgrep側は読み込み終了して、4096バイト分のaを出力して終わる。
  4. 全部フラッシュされると、5000+5000+4096になる。

やっぱりwriteバッファの問題でした:-)
grepのRead自体は一度に全部読むのではなくて、1Lineずつなんだろうか。全部読んでると最初にEOFが検出されて3倍とかにならないと思うけど、1Lineずつだとすると効率悪そうだ。

open-uriを無理やりPOST対応にする

open-uri便利なんですがPOSTには対応してないんですよね。
[ruby-dev:19033]あたりで少し議論されてるっぽいですが、その後さっぱり。
他のMethodも考えると問題が難しくなるので、POSTにのみ限ってopen-uriに細工をしてみた。


[]$ diff -U2 open-uri.rb.orig open-uri.rb[]
[]--- open-uri.rb.orig 2006-08-05 03:05:40.000000000 +0900[]
[]+++ open-uri.rb 2006-11-29 22:29:12.406250000 +0900[]
[]@@ -91,4 +91,5 @@[]
[] module OpenURI[]
[] Options = {[]
[]+ :post => nil,[]
[] :proxy => true,[]
[] :proxy_http_basic_authentication => true,[]
[]@@ -299,10 +300,14 @@[]
[] sock.post_connection_check(target_host)[]
[] end[]
[]- req = Net::HTTP::Get.new(request_uri, header)[]
[]+ if options[:post][]
[]+ req = Net::HTTP::Post.new(request_uri, header)[]
[]+ else[]
[]+ req = Net::HTTP::Get.new(request_uri, header)[]
[]+ end[]
[] if options.include? :http_basic_authentication[]
[] user, pass = options[:http_basic_authentication][]
[] req.basic_auth user, pass[]
[] end[]
[]- http.request(req) {|response|[]
[]+ http.request(req,options[:post]) {|response|[]
[] resp = response[]
[] if options[:content_length_proc] && Net::HTTPSuccess === resp[]
*1

open("hogehoge.cgi",:post=>"id=foo&pass=bar")
な感じでゲッツ。じゃなくてポストできるようになる。

    • -

追記:1.8系だとssl関係のオプションがなくてうまくパッチが当たらなかったたため、:postの入れる位置を前の方に変更しました。後、これは整合性とか美しさはともかくPOSTを使いたいっていう欲求から出てきたもののため、これ以上手は入れないと思います。。。

ひさびさに

こっちを書く。

某所にコメントかいちゃったのでそれを見て踏みに来た人のために。。。
すいません何もありません。

くだらない日記はmixiで書いてしまってます。
ここではたまーにまじめな話を書こうかなぐらい?でしょうか。

最近の課題。。。GCCの解析。。。(出来る気がしません。。。)

日常

最近はずーと風邪でダウンしてる気がします。
今回は風邪にインフルエンザにすごくはやっているので、
みなさんもお気をつけくださいませ。

あれから、全然日記かいてないことに気付きました。
本当の事いうとこのページ忘れてました。
すいません。

本は結構読んでいるのですよ?

空の中(まとめ)

評価:空の中 ★☆☆ (普通)

(勝手に評価をつけてみました。
☆☆☆〜★★★,★★★以上 通常は3つの中に納める予定)

今朝はあまりの眠さにまともに書けていないので、ちと改めて纏めてみます。

おそらく話の内容に対してページ数が少ない。文庫で3冊ぐらいに分けて計800ページぐらいにすれば、もう少し展開の仕方も変わってきたのではないでしょうか。ファーストコンタクト時後の会話は設定の性もあるかもしれないけれど、そこをメインテーマとするには少し早く展開しすぎて、内容が薄くなってしまっている印象を受けました。

後、ヒューマンドラマをやるには登場人物を単純化しすぎていて、所々違和感の嵐に見舞われました(笑)。あぁ、高知の3人組はよかったですよ。ホームズ役もままよかったと思います。

結局、ホームズと白鯨, 偽物とマスター の立ち位置が微妙でどこを強調したかったのかが、わかりづらかったのが、私の中では評価を下げていますが、それぞれを別個に読めばなかなか読ませる文章だったと思います。

そんな感じで、ぐいぐい読ませるんだけれど何か引っかかる感じの作品でした。


#感想なんていままでまともに書いてないけど、こんなもんかな。

空の中(読了)

上のは25:00ぐらい。現在、30:00ぐらい。あれから一気に最後まで読んで終了。
途中2,3は話がたるんでしまうところがあったけれど、それ以外は駆け引きの議論でぐいぐい引っ張っていかれました。描画がたりないんと違うんかなぁという所は、例えば白鯨の誕生シーン。
眠いのでとりあえず、結論だけかいとくと?
「じっちゃんのなにかけて」

空の中(80ページ)

80ページの4行目あたり、こういうレトリックは非常に好きなのでとりあえず、メモ。
この短い文の中に歪んでいっている心がきれいに表現できてる。これからの展開にわくわくしてきました。