Přihlašte se na evropskou Ruby konferenci

Posted by Jan Kubr Thu, 07 Feb 2008 23:36:00 GMT

Pokud chcete být u toho a potkat a poslechnout si (nejen) evropské příznivce jazyka Ruby, vězte, že dnes byla otevřena registrace na EURUKO 2008!

Konference se koná v Praze a za symbolických 20 euro získáte nejen možnost vyslechnout si všechny přednášky, ale též nějaké ty dárečky. Já jsem neváhal, už se moc těším.

no comments |

Zed Shaw vysvětluje svůj rant

Posted by Jan Kubr Mon, 04 Feb 2008 19:18:00 GMT

Prerekvizita: Rails Is a Ghetto

Na světě je podcast se Zedem, ve kterém svůj rant rozvádí a komentuje. Ačkoliv neobsahuje nic zásadně překvapivého, stojí za poslech.

Mě osobně zaujaly následující věci:

Zed říká, že Rails komunita a Ruby komunita jsou teď tak promíchány, že nepozná, kdo je ve které (a popisuje to ve stylu, že je to problém). Aha a nebude to třeba tím, že Railsy jsou napsané v Ruby? Oddělování komunit za každou cenu mi přijde dětinské. V obou (když už je budu oddělovat) jsou velmi chytří a rozumní lidé, stejně jako naopak. Někteří Railsisté se považují bez důvodu za mistry světa a jiní "pravověrní" Rubyisté zas bez přemýšlení odsuzují všechno, co má jen zdánlivou souvislost s RoR. Hlupáci jsou prostě všude.

Ruby je prý skvělý jazyk, ale špatná platforma. Pomalá, špatně naimplementovaná. Což jsme víceméně vědeli, že? Potěšilo mě ale, jak Zed vynášel do nebes Rubinius (podcast s autorem). Tenhle projekt je opravdu velká naděje, že se Ruby stane z hračky nadšenců a tím-v-čem-jsou-napsané-Railsy skutečně široce používaným jazykem ve stylu dnešní Javy.

Metaprogramování by prý mělo jít pro libovolnou třídu zakázat, protože je pro některé korporátní programátory příliš nebezpečné. Tím si nejsem jistý, ale rozhodně souhlasím, že by se s ním mělo šetřit. Základní věci typu method_missing jsou v pohodě, ale jakmile se to začne přehánět a dělat neumětelsky, obrovsky to zvyšuje komplexitu a často nepřínáší nic zásadně pozitivního (aneb dá se to udělat jinak, možná to zabere o pár řádků víc, ale čitelnost se zvýší výrazně).

no comments |

Java jsou tupé núžky..

Posted by Jan Kubr Wed, 02 Jan 2008 22:24:00 GMT

..je odpověď Dava Thomase na nářky (které jsme diskutovali i u nás), že Ruby dovoluje programátorům příliš mnoho. Tím ale veškerá kontroverze končí, video, na které chci poukázat, již pak obsahuje jen vysoce zajímavé ukázky toho, co Ruby dokáže na poli metaprogramování a jak se toho využivá v Railsech. Hodinka strávená sledováním přednášky MetaProgramming - Extending Ruby for Fun and Profit podle mě promarněná určitě není.

A když už jsem v tom linkování, našel jsem zajímavý koncentrát článků o Ruby/Railsech jménem Ruby Galore (jenom separátní doména tzv. "blog komunity" SocialRanku, ale to je vedlejší). Kromě slavného a brzy ještě slavnějšího rantu Zeda Shawa jsem se moc daleko nedostal (snad jen: na projektu Rubinius pracuje teď pět lidí na full-time a navíc se jedná o špičky Ruby komunity!), ale kvalita výběru se zdá ucházející.

no comments |

Memory leaky ve standardní knihovně Ruby?

Posted by Jan Kubr Wed, 19 Dec 2007 13:05:00 GMT

Při hledání memory leaku v mém programu jsem narazil na to, že leakuje dost pravděpodobně stadardní knihovna Ruby. Pro detekci objektů, které zůstavají v paměti, jsem použil memory leak detektor dike.

[Update: Leaky způsobovala chyba v diku! Více na mém blogu zde.]

require 'rubygems'
require 'dike'
Dike.logfactory './log/'

class Leak

 def http_call
    puts 'making http call'
    url = URI.parse('http://www.google.com')
    Net::HTTP.start(url.host) do |http|
        puts http.get('/').code
    end
    ''
 end
end

5.times {
    leak = Leak.new
    leak.http_call
    GC.start
    Dike.finger
}

V tomto případě leakuje metoda get, zanechává Net::HTTPFound (HTTPResponse) objekty v paměti. Zaměnění get za request_get leak odstraní.

require 'rubygems'
require 'dike'
Dike.logfactory './log/'

class Leak

  def http_call
    url = URI.parse('http://www.google.com')
    puts 'making the call'
    Net::HTTP.start(url.host) {|http|
        http.request_get('/') do |response|
            response.read_body do |segment|
            end
        end
    }
    return ''
  end
end

5.times {
    leak = Leak.new
    leak.http_call
    GC.start
    Dike.finger
}

V tomto příkladě metoda read_body zanechává v paměti ReadAdapter objekty a kvůli nim tam pak zůstanou i další. Tento problém nastává pouze v případě, že se metodě předá blok. Jinak se ReadAdapter objekt nevytváří a žádný memory leak nenastává.

Nevidím na první, druhý, ani třetí pohled v uvedených příkladech nic podezřelého. Ve zdrojácích knihovny mě také do očí nic nepraštilo. Nic zajímavého jsem ani nevygooglil. Někdo je schopen mi tuhle věc objasnit (co, Davide?:). Další zastávkou bude Ruby mailing list.

Btw,

ruby leak.rb && dike log

2 comments |

Videa z RubyConf 2007

Posted by Jan Kubr Fri, 07 Dec 2007 18:48:00 GMT

Na stránkách Confreaks se již objevila videa z RubyConf 2007, alespoň tedy většina z nich. Doporučuji především přednášku Jima Weiricha o třech zajímavých Ruby-pokročilých technikách, prezentaci Rubinia Evana Phoenixe, povídání o efektivitě a síle správných nástrojů od Phil Hagelberga a Erica Hodela a v neposlední řadě keynote Matze Matsumota.

Pro mě osobně nejlepší přednáška konference - totiž ta od Ryana Davise - pořád ještě chybí, ale snad již brzy..

no comments |

Older posts: 1 2 3 4 5 ... 17