inohilog

/var/log/inohiro.log

第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”だけ”に打ち込める時間がとれて良かった。来週も行きますよ。