第 26 回 Ruby/Rails 勉強会
第26回 Ruby/Rails勉強会@関西
レベル高すぎてほとんど理解できなかったんだけれども、ものすごい刺激は受けたしキーワードは沢山もらったのでこれからぐぁんばる。本当に行っただけの価値はあった。
Ruby off Rails
ストヤンさんの発表。Railsなしならどう書く?な内容。
- Thin
- sequel
- ebb
- Rack
- Ramase
などなど。Rackが凄い面白かった。
http://rack.rubyforge.org/
server plugin interface って感じ。lambdaを貼付ける感じで作る。海外の発表者の方はオマケで面白いブツを入れてくる人が多いけどストヤンさんもそういうタイプの人みたい。
http://www.freehugscampaign.org/
こんなのが出てた ^^
Ruby on Rails で作られたアプリを動かす5つの方法
okkez さん
いろんなサーバでの設定方法とベンチマーク紹介。
CGIがかわいそうなほど遅かった上に信頼性でも微妙だった。見た感じ他はドングリの背比べだった。それでも使ってる人からするとやはりその違いは大きいみたい。WEBrickが思っていたより速いという結果は驚いた。
起動コマンドに手が馴染んでるから、という理由でokkezさん個人的にはMongrel pushだった。無理に使いにくい工具使うより手に馴染んだ工具を選ぶって凄く職人チックで感心した。自分の環境見たらいつの間にかmongrelになっていた。いじった覚えないんだけど。。。
Rubyで快適に連投する11の方法
ujihisa さん
視点が面白い上に、「俺は何をやりたくて、こうした」というのがものすごくハッキリしていて理解しやすかった(その目標が連投なんだけどww)。巧い。数秒の手間を惜しむ。開発時間と使用時間の和を最小化。
- net/http
- open-ori
- Hpricot
- WWW::Mechanize (後で勉強する)
- vimscript (vim に +ruby +python +perlとかインターフェイスがあったって知った)
おまじないがいっぱい。voodoo programing。
たまたま最近OpenCourceWareを聴き始めたんだけど、uuuuというので勉強会をやってるって教えてもらった。行きたい。ちょっと会社から遠いけどなんとか行ってみたいな感じ。というか行く。
初心者向けレッスン
自分はこれのために来たようなもんだ。適当においとくと添削してもらえるのかな?
問題1 なべあつ(?)問題
3 の倍数と 3 の付く数字で ……
3 の倍数と 3 の付く数でアホになる
5 の倍数で鶏になる
(1..100).each {|i| if i % 3 == 0 || i.to_s =~ /3/ puts "Aho" elsif i % 5 == 0 puts "Cook-a-doodle-doo" else puts i end }
追記:
大バカ・・。15の倍数の時は両方出さなきゃだめか。添削してもらう前で良かった。
(1..100).each { |i| msg = "" msg << "Aho " if i % 3 == 0 || i.to_s =~ /3/ msg << "Cook-a-doodle-do" if i % 5 == 0 msg << i.to_s if msg == "" puts msg #system("say #{msg}") or exit }
macのsayコマンド使って遊んでたらsystem()を連投(!)すると C-cがsystemのプロセスに飛んでしまう。C-z&killしながら困ってたら会場でid:hitode909さんに教えてもらった。 or exitすれば良いとのこと。
(1..100).each {|i| if i % 3 == 0 || i.to_s =~ /3/ mess = "say Aho" elsif i % 5 == 0 mess = "say cock-a-doodle-doo" else mess = "say "+i.to_s end system(mess) or exit }
なるほど。勉強になりました。
問題2 99 Bottles of Beer on the Wall
速攻で書いたらサスゲに汚い。
def _(n) return n if n >0 return "No more" end def btl(n) return "bottle" if n == 1 return "bottles" end 100.step(0, -1) { |i| output = "" before = _(i) after = _(i- 1) bottle_bfr = btl(before) bottle_aft = btl(after) thirdline = i==0? "There are no more to pass around\n": "Take one down and pass it around\n" phrase1 = "#{before} #{bottle_bfr} of beer " phrase2 = "#{after} #{bottle_aft} of beer " puts phrase1 + "on the wall" puts phrase1 puts thirdline puts phrase2 + "on the wall" puts "" }
問題3 石取りゲーム
turn = gets.to_i n = rand(90) + 10 def compute(n) if (n % 4) - 1 ==0 puts "It's not fair!" while rand(3) != 0 puts "no, i won't let you get..." gets end puts "OK, OK,....." return rand(3)+1 end (n-1) % 4 end while n > 0 print "remain #{n} : " case turn when 0 nget = compute(n) if nget > n then nget = n end puts "my turn : I took #{nget}" when 1 begin print "your turn : " nget = gets.to_i end until (1 <= nget && nget <= 3) end turn = 1 - turn n -= nget if n == 0 if turn == 1 puts "I lose" else puts "I win!!" end end end
ゴネる、の部分ってこんで良いんだろうか?