Vsichni kolem me par let hajpujou s RoR/Merb a Ruby vubec a tak jsem dneska neodolal a splacal prvni skript. Ukazuje teploty a vitr na ruznejch mistech Prahy.
#!/usr/bin/ruby
$KCODE="u"
require 'uri'
require 'net/http'
require 'jcode'
data = "http://www.dpp.cz/flash/data/meteo.xml"
xml = Net::HTTP.get_response(URI.parse(data).host, URI.parse(data).path)
if xml.code == '200' then
matches = xml.body.gsub('0.0','---').
scan(%r{.*?<name>(.*?)</name><air>(.*?)</air><road>(.*?)</road><wind>(.*?)</wind>}mi)
puts "\nčidlo\t\tvzduch\tsilnice\tvítr\n[kde]\t\t[°C]\t[°C]\t[m/s]\n-------------------------------------"
for place in matches
padd = place[0].jsize > 7?"\t":"\t\t"
puts place[0]+padd+place[1]+"\t"+place[2]+"\t"+place[3]
end
else puts '!!ERR: Failed to fetch '+data
end
a vysledek vypada priblizne takhle:
čidlo vzduch silnice vítr
[kde] [°C] [°C] [m/s]
-------------------------------------
Barrandov 1.6 4.5 4.7
Bulhar 4.5 6.3 6.1
Spořilov 3.0 3.3 3.4
Uhříněves 2.4 2.1 0.9
Zličín 2.1 0.4 ---
SAT-J 2.9 3.0 4.0
SAT-S 3.2 4.8 3.4
Kyje 3.4 2.7 0.6
Cínovecká 3.3 2.1 0.2
Lahovice 1.1 1.3 0.1
Evropská 2.5 2.7 1.0
Novopacká 3.3 3.3 0.3
Vídeňská 1.9 2.2 0.1
Mitas 3.8 5.5 1.1
Vysočanská 3.4 2.7 0.3
Kamýcká 1.3 1.3 6.4
Slivenec 1.9 2.7 1.7
Běchovice 1.7 1.0 ---
Čimice 3.0 1.5 ---
Krejcárek 3.9 3.0 0.4
Libuš --- 1.8 ---
Vypich 1.7 --- ---
Opatov 1.7 --- ---
Trója --- 20.5 ---
Modřany 1.47 2.7 ---
Jeremiášova 1.84 0.8 ---
Čimická 3.55 0.2 ---
Černý Most --- --- ---
Holešovice 2.4 --- ---
Radotín 0.4 --- ---
Zatim to beru skepticky. Spravnu dylku stringu v unicodu jsem za pomoci sbehleho kamarada a guglu resil 30(!) minut. Kdepak je ta deklarovana elegance? Ze by porad v Pythonu, kde staci len(u'ýžřýžř')? Nebo snad nedejboze PHP s mb_strlen()? Fuj, Ruby. Styd se!