第47回 Ruby/Rails勉強会@関西に行ってきた
第47回 Ruby/Rails勉強会@関西でいつものように京都女子大学へ。
おけいはんで七条駅に着くと、いつもと違って女子大生がいない。*1
「女子大生いないよー」と tweet しかけて止めた。*2
Rubyist のための HTML5 入門 - Content models - by Sixeight さん
HTML5 ややこしい。
こんなにややこしいなら XHTML でも良かったんじゃ?
あと、HTML を手書きする人が減ってる現状を考えれば、ブラウザがもっと strict になってもいいと思うよ。
redmineとgitを建築プロジェクトに使ってみた by waku さん
これは非常に興味深い事例紹介。
- バックアップになる
- 公開鍵でアクセス制御
- コマンドを 5つに絞る
↑だけで git できるのうらやましい。
RailsDevCon2010の報告 by アジャイルかわばた さん
cucumber の話が面白かった。
シナリオがちゃんと動かなくても気にしないとか。
単に仕様書かいたと思えば動かなくてもなんてことないなww
Ruby初級者向けレッスン by こなみ先生
アシスタントの女子大生がドタキャン (>_<)
練習問題の詳細は配布資料を参照。
メソッドに可変長引数を渡したりする話
- 練習1-1
こんな感じ?
def sum_all(*ary)ary.inject(&:+)end sum_all 1, 2, 3, 4, 5 # => 15
- 練習2-2
計算結果を型変換するのか、型変換した値で計算するのかが不明。
とりあえず後者でいく。
Ruby1.9 なら簡単
def sum_all(type = :float, ary) ary.map{|i|__send__(type == :int ? :Integer : :Float, i)}.inject(&:+) end sum_all [1, 2.5, 3, 4.5, 5] # => 16.0 sum_all :int, [1, 2.5, 3, 4.5, 5] # => 15
Ruby1.8 だと、どうすれば?
def sum_all(*ary) type = ary.first == :int ? :Integer : :Float ary.last.map{|i|__send__(type, i)}.inject(&:+) end sum_all [1, 2.5, 3, 4.5, 5] # => 16.0 sum_all :int, [1, 2.5, 3, 4.5, 5] # => 15
正規表現の話
- 練習2-1
属性って ' で囲んでも良いんだっけ?
%r|<a\s.*?href=(["'])(.*?)\1.*?>(.*?)</a>|m
$2 が URL で、$3 が名前になる。
-
- \s が改行にもマッチして便利*3
- href 以外の属性は無視
- "url" または 'url' (開始、終了のクオートが一致していること)
- .*? は本当に便利
- 練習2-2
前回も同じような練習問題あったなw
require 'open-uri' def anchors(url, encode = Encoding::UTF_8) open(url, &:read). scan(%r|<a\s.*?href="(.*?)".*?>(.*?)</a>|m). map{|url,title|[url, title.encode(encode)]} end url = 'http://www.google.com' open('google.utf8', 'wb'){|f|f.puts anchors(url)} open('google.eucjp', 'wb'){|f|f.puts anchors(url, Encoding::EUC_JP)} open('google.cp932', 'wb'){|f|f.puts anchors(url, Encoding::CP932)}