第2回Ruby勉強会に参加しました。
はてなで知り合った筑波大学社会工学類の先輩(id:syou6162)が主催するRuby勉強会に参加してきました。
本日の内容は、「たのしいRuby」の2章のところ。配列とかハッシュテーブルとか正規表現とか、プログラミングというよりは、その前の前提知識をつける感じの章ですが、実際には(5人あつまった)ひとりひとり課題を持って行って、それを解くといった感じ。
私は「livedoorのお天気Webサービス(http://weather.livedoor.com/forecast/rss/8/55.xml)から天気の情報をひっぱってくる(何という的外れ)問題。答えはこんな感じ↓です。
require 'rss' result = RSS::Parser.parse( 'http://weather.livedoor.com/forecast/rss/8/55.xml' ) result.items.each{ |item| puts item.description.to_s }
他には、ハッシュテーブルからデータを引っ張ってきて、それをHTMLとして書き出す問題とか。
table = { "Hello" => "World", "Hello2" => "World2", "Hello3" => "World3" } file = File.open( "hash_table.html", 'w' ) file.print "<html><head><title>hash_table sample</title></head>" file.print "<body>\n<table>\n" table.each{|key| file.print "<tr><td>",key,"</td><td>",table[key],"</td></tr>"} file.printf "</table></body></html>" file.close
出力されるHTMLソースはインデントとか改行とか入ってないので、見にくい。
その他、勉強になったこと
「***.methods」が良い
irbとかで「***.methods」ってやると、「***」で使えるメソッド一覧が出ます。
例えば「print」で使えるメソッドは、
irb(main):003:0> print.methods nil=> ["inspect", "&", "clone", "method", "public_methods", "instance_variable_defined?", "equal?", "freeze", "to_i", "methods", "respond_to?", "dup", "instance_variables", "__id__", "object_id", "|", "eql?", "id", "to_f", "singleton_methods", "send", "taint", "frozen?", "instance_variable_get", "^", "__send__", "instance_of?", "to_a", "type", "protected_methods", "instance_eval", "==", "display", "===", "instance_variable_set", "kind_of?", "extend", "to_s", "hash", "class", "tainted?", "=~", "private_methods", "nil?", "untaint", "is_a?"]
こんな感じで出力されますよということ。
kconvってのが便利らしい
私はMacでやっていたので、文字コードとかほとんど意識していなかったのですが、WindowsだとShiftJisとかにしないと文字が化けちゃったりするので、iconvとかで変換するわけです。
しかしkconvってのが日本語環境向けに出来ていて、日本語なら大抵これで大丈夫らしい。
新しいリファレンスが書かれている最中らしい
URLは「http://doc.loveruby.net/refm/api/」。Rubyのトップページから見に行くことが可能。
「***.methods」を用いてリファレンスを書いているらしいので、抜けはほとんど無いそうです。
Ruby”だけ”に打ち込める時間がとれて良かった。来週も行きますよ。