「第42回 Ruby/Rails勉強会@関西」の復習

 最近ご無沙汰Rubyですが、
Rails系を触る可能性大になので
日本Rubyの会 公式Wiki - 第42回 Ruby/Rails勉強会@関西
勉強のやり直しです。


 まあ予習後の復習が基本ですが
予習せずに参加したので復習だけw;

実践スクレイピング by ふるかわだいすけさん

 Hpricotを用いたスクレイピングでの、経験談的なお話でした。
演習があるとよかったですけど、ないので復習なしw;

Ruby で描く折り紙展開図 by 志村さん

 直接教えてもらって、ルビー折り紙を完成させました。
前回も折り紙で発表された方だと思いますが
遠い昔ですねw;

IO クラスについて by cuzic さん

 はい、最適化は大好きです>w<b
といっても、IO#sysread,IO#read[ _nonblock | partial ]は使い道が
いまいちピンと来ないので、IO#read(2)で第二引数を設定くらいですかね?

 では、復習でコード組む。

require 'benchmark'

t   = 1000
buf = " "*t
$t = t


def set_rand_file
  open("rand","wb"){|file|
    (1024*$t).times do
      file.write rand(256)
    end
  }
end


set_rand_file
puts Benchmark.measure{
  open("rand") do |io|
    t.times do
      io.read 1024,buf
    end
  end
}
p buf


set_rand_file
puts Benchmark.measure{
  buf = nil
  open("rand"){|io|
    t.times{
      buf = io.read 1024
    }
  }
}
p buf

で、ベンチマーク結果。

#=>  0.015000   0.000000   0.015000 (  0.015625)
#=> ...
#=>  0.016000   0.000000   0.016000 (  0.015625)
#=> ...

うぅ〜む<、変わらんw;
まあunixで取り直してみるか。

RubyWebCam非実在なこと by にしたかおさん

 復讐するにはレベル高すぎる><

Ruby 初級者向けレッスン by okkez さん

 演習問題w;

class Integer
  def rec n
    unless((n / 1000) == 0)
      ("M" * (n/1000)) + rec(n%1000)
    else
      unless((n / 500) == 0)
        ("D" * (n/500)) + rec(n%500)
      else
        unless((n / 100) == 0)
          ("C" * (n/100)) + rec(n%100)
        else
          unless((n / 50) == 0)
            ("L" * (n/50)) + rec(n%50)
          else
            unless((n / 10) == 0)
              ("X" * (n/10)) + rec(n%10)
            else
              unless((n / 5) == 0)
                ("V" * (n/5)) + rec(n%5)
              else
                ("I" * (n/1))
              end
            end
          end
        end
      end
    end
  end
  
  def to_old_roman
    rec self
  end
end


p 3500.to_old_roman #=> "MMMD"
p 660.to_old_roman  #=> "DCLX"
p 115.to_old_roman  #=> "CXV"
p 9.to_old_roman    #=> "VIIII"

 うむ、条件分岐と再帰の組み合わせがヒドイwww;


 で、ローマ数字の減算則をどうしようか。
基本的には、上記で条件分岐を増やせばいいんだろうけど
記述も思考もスマートじゃないしな。



つかれたので、今日はココマデw