第 30 回 Ruby/Rails 勉強会に行ってきた
今回はスペシャルゲストにキリン本でお馴染みの Yugui さんをお迎えして行なわれました。
なのに参加者が少ない。なぜ?
- 台風が近畿に上陸する恐れがあったから?
- 学生は、まだ夏休みだから?
- 給料日前だから?
信長の野望 on Rails by 石川せんせい
石川せんせいの発表は、いつも「何如にして学生に教えるか?」というのがテーマ。
学生に興味を持たせるためにゲームがよく出てくる。
MVC の C が教えにくいらしい。
M と C がくっついちゃってるのは論外だけど、V と C がくっついちゃってても気づかないのかもね。
一度動くものを作ってから V だけ仕様変更したりすると MVC の有難味が解ると思う。
(うちの職場のコードは MVC が全て絡み合ってるけど ;_;)
ニコニコ技術部関西勉強会でネギを振らせてみた by サイロスさん
Miyako でネギを振らせる話。
ホーム (Ruby 関西) での発表なのに、ネタが通じなくてアウェー感が漂う。
石川せんせいに続いてコントローラの話題が。
と言っても MVC の C じゃなくて、ファミコンのコントローラだけど。
Ruby 関西はサイロスさんをニコ技に取られないように注意しないとな。
はじめての Ruby の一歩横 by Yugui さん
発表に先立って「Ruby プログラマのレベル 10」で参加者のレベルを測定。
私は level 5 でした。
会場の参加者も level 5 の割合が高くて、level 5 向けの講演をしていただく。
黒板を使って、普通のコードとその舞台裏、それを使った黒魔術など、楽しく教えたもらった。
キリン本の 8 章 + α を習得しないと次のレベルには行けないみたいだ。頑張ろう。
あと古代のライブラリも探索してみよう。
初級者向けレッスン by okkez さん
TDD な話。
夏休み中なので、今回もアシスタントの女子大生はいない。
まず、test first で Stack を作る。
その Stack を使って逆ポーランド記法の電卓を作る。
エラー処理は省略したい。
keep it simple, stupid
電卓 その壱
エラーが起きたら、その時点の Stack の一番上の値を返す。
require 'stack' def rpn(exp) val = 0 begin num = Stack.new exp.each do |i| if /\D/ =~ i val = num.pop # エラーが起きたら、これを返すよ num.push(val.__send__(i, num.pop)) else num.push i.to_i end end num.pop rescue val end end if $0 == __FILE__ puts "#{ARGV.join(' ')} = #{rpn(ARGV)}" end
電卓 その弍
RPN がおかしかったら例外を投げる。
require 'stack' def rpn(exp) num = Stack.new exp.each do |i| if /\D/ =~ i num.push(num.pop.__send__(i, num.pop)) else num.push i.to_i end end raise ArgumentError if num.size > 1 # 数が残ってるがな num.pop end if $0 == __FILE__ puts "#{ARGV.join(' ')} = #{rpn(ARGV)}" end