<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/stylesheets/rss.css" type="text/css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Jaros&#322;aw Zabie&#322;&#322;o - BLOG: Tag rack</title>
    <link>http://blog.zabiello.com/articles/tag/rack</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>moje notatki, linki, komentarze</description>
    <item>
      <title>JRuby Rack</title>
      <description>&lt;p&gt;&lt;a href="http://wiki.jruby.org/wiki/JRuby_Rack"&gt;JRuby Rack&lt;/a&gt; pozwala na wygodne uruchamianie pod &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; zar&#243;wno Rails, Merb jak i ka&#380;dy inny framework korzystaj&#261;cy z Rack. JRuby Rack zosta&#322;&#160;w&#322;aczony do gemu &lt;a href="http://wiki.jruby.org/wiki/Warbler"&gt;Warbler&lt;/a&gt; 0.9.9 u&#380;ywanego do budowania pliku &lt;span class="caps"&gt;WAR&lt;/span&gt; dla Rails 2.x. Vide &lt;a href="http://blog.nicksieger.com/articles/2008/05/08/introducing-jruby-rack"&gt;Introducing JRuby-Rack&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Wed, 04 Jun 2008 03:56:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:3adec824-f2d7-4f88-b01a-4283d5d6bada</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/06/04/jruby-rack</link>
      <category>jruby</category>
      <category>rack</category>
      <category>rails</category>
      <category>merb</category>
    </item>
    <item>
      <title>Sprz&#261;tanie po PHP czyli Passenger 2.0 i Ruby Enterprise 1.0</title>
      <description>&lt;p&gt;Sta&#322;o si&#281;! &lt;a href="http://www.phusion.nl/"&gt;Tw&#243;rcy&lt;/a&gt; &#347;wietnego modu&#322;u Apache&amp;#8217;a &amp;#8211; &lt;a href="http://www.modrails.com/"&gt;mod_rails&lt;/a&gt; &amp;#8211; zmieniaj&#261; jego nazw&#281; na &lt;strong&gt;mod_passenger&lt;/strong&gt;, bo mod_rails nie jest ju&#380; wi&#281;cej modu&#322;em tylko dla &lt;a href="http://rubyonrails.pl"&gt;Rails&lt;/a&gt;. W nowej wersji 2.0 (ktora ma wyj&#347;&#263;&#160;&lt;a href="http://groups.google.com/group/phusion-passenger/browse_thread/thread/a2b63650c1b9394"&gt;na dniach&lt;/a&gt;) dodano pe&#322;ne wsparcie dla &lt;a href="http://blog.zabiello.com/articles/2008/03/04/frameworki-rubiego-rack-wsgi"&gt;Rack&lt;/a&gt; i tym samym mod_passenger 2.0 obs&#322;uguje wszystkie pozosta&#322;e frameworki u&#380;ywaj&#261;ce Rack&amp;#8217;a (ze &#347;wietnym &lt;a href="http://merbivore.com"&gt;Merbem&lt;/a&gt; w&#322;&#261;cznie).&lt;/p&gt;


	&lt;p&gt;Drugim, ciekawym projektem firmy &lt;a href="http://www.phusion.nl/"&gt;Phusion&lt;/a&gt; jest &lt;a href="http://www.rubyenterpriseedition.com/"&gt;Ruby Enterprise&lt;/a&gt; (wersja 1.0 ma by&#263; dost&#281;pna lada dzie&#324; razem z Passenger 2.0). Jest to podrasowana wersja interpretera Rubiego (MRI) powoduj&#261;ca nie tylko przy&#347;pieszenie ale tak&#380;e znaczne zmniejszenie zu&#380;ycia pami&#281;ci &lt;span class="caps"&gt;RAM&lt;/span&gt; (dodano technik&#281; copy-on-write do garbage collectora interpretera &lt;span class="caps"&gt;MRI&lt;/span&gt;, dok&#322;adniej opisano to na &lt;a href="https://dl.getdropbox.com/u/26205/railsconf.pdf"&gt;slajdach&lt;/a&gt;). Wg tego co twierdz&#261; ludzie z Phusion, uzyskano zmniejszenie o 33% zu&#380;ycia pami&#281;ci przez Rails. To bardzo dobra wiadomo&#347;&#263;, bo pami&#281;&#263; mimo, &#380;e jest generalnie tania, nie jest tania w ofertach hostingowych &lt;span class="caps"&gt;VPS&lt;/span&gt;.&lt;/p&gt;


	&lt;p&gt;Passenger wprowadza now&#261; jako&#347;&#263; dla framework&#243;w Rubiego. Coraz wi&#281;cej firm hostingowych to docenia i przechodzi na Passenger&amp;#8217;a (z tych bardziej znanych, &lt;a href="http://blog.dreamhost.com/2008/05/13/passenger-for-ruby-on-rails/"&gt;Dreamhost ju&#380; tego u&#380;ywa&lt;/a&gt;). Sam modu&#322;&#160;mod_passenger jest nie tylko trywialny w u&#380;yciu, jest te&#380; bardzo szybki i stabilny. Chyba nadchodz&#261; ci&#281;&#380;kie chwile dla tych, co trzymali si&#281; &lt;span class="caps"&gt;PHP&lt;/span&gt; g&#322;&#243;wnie z powodu jego taniego hostingu i prostoty uruchomiania serwerze. Rails i Merb mog&#261; wkr&#243;tce troch&#281; pozamiata&#263; po &lt;span class="caps"&gt;PHP&lt;/span&gt;. :)&lt;/p&gt;


	&lt;p&gt;Szybko&#347;&#263; mod_passenger&amp;#8217;a robi wra&#380;enie. Bije wydajno&#347;ci&#261; kombinacj&#281; &lt;a href="http://nginx.net/"&gt;Nginx&lt;/a&gt; + asynchroniczny &lt;a href="http://code.macournoyer.com/thin/"&gt;Thin&lt;/a&gt; u&#380;ywaj&#261;cy szybkich, uniksowych socket&#243;w. Jest te&#380; szybszy od komercyjnego &lt;a href="http://litespeedtech.com/"&gt;Litespeed&amp;#8217;a&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://blog.zabiello.com/images/passenger_vs_thin.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;&lt;img src="http://blog.zabiello.com/images/passenger_vs_litespeed.png" alt="" /&gt;&lt;/p&gt;


	&lt;p&gt;Co ciekawe, mod_passenger obs&#322;uguje interfejs &lt;strong&gt;&lt;span class="caps"&gt;WSGI&lt;/span&gt; do Pythona&lt;/strong&gt;! Jeden modu&#322; pozwoli wi&#281;c na odpalanie Rails, Merb&amp;#8217;a i Django r&#243;wnocze&#347;nie. Ma&#322;o tego, je&#347;li mod_passenger dla Pythona b&#281;dzie dzia&#322;a&#322; tak sprawnie jak dla Rails, to b&#281;dziemy mie&#263; trywialne prze&#322;adowywanie aplikacji Django bez konieczno&#347;ci restartu ca&#322;ego Apache&amp;#8217;a.&lt;/p&gt;


	&lt;p&gt;Vide:&lt;/p&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.railsjedi.com/posts/52-The-Holy-Grail-for-Rails-Deployment"&gt;The Holy Grail for Rails Deployment&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.rubyinside.com/28_mod_rails_and_passenger_resources-899.html"&gt;28 mod_rails / Passenger Resources To Help You Deploy Rails Applications Faster&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://github.com/FooBarWidget/passenger/tree/master"&gt;Passenger 2.0 na GitHub.com&lt;/a&gt; dla tych, co chc&#261; ju&#380; teraz zainstalowa&#263; mod_passenger 2.0 (ja ju&#380; to zainstalowa&#322;em)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h3&gt;Update&lt;/h3&gt;


	&lt;p&gt;&lt;em&gt;2008-06-25&lt;/em&gt;&lt;/p&gt;


&lt;object width="400" height="225"&gt;    &lt;param name="allowfullscreen" value="true" /&gt;    &lt;param name="allowscriptaccess" value="always" /&gt;    &lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1198020&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;    &lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1198020&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="225"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1198020?pg=embed&amp;#38;sec=1198020"&gt;Phusion Passenger 2.0 and Ruby Enterprise Edition&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user519957?pg=embed&amp;#38;sec=1198020"&gt;Carl Youngblood&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;#38;sec=1198020"&gt;Vimeo&lt;/a&gt;

	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://blog.dmilith.pl/2008/06/25/ruby-enterprise-edition-32bit-na-debianie-etch-64bit"&gt;Ruby Enterprise Edition 32bit na debianie etch 64bit?&lt;/a&gt;&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Wed, 04 Jun 2008 01:40:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:77d6b3df-2b86-4365-b5de-d4fd9b153ecc</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/06/04/passenger2-ruby-enterprise</link>
      <category>mod_rails</category>
      <category>ruby</category>
      <category>rails</category>
      <category>merb</category>
      <category>rack</category>
      <category>apache</category>
      <category>php</category>
      <category>django</category>
      <category>python</category>
    </item>
    <item>
      <title>Szalej&#261;ce frameworki Rubiego i Rack/WSGI</title>
      <description>&lt;p&gt;Merb w wersji 0.9 poszed&#322; na ca&#322;o&#347;&#263; i oparli sw&#243;j midleware na &lt;a href="http://rack.rubyforge.org/"&gt;Rack&amp;#8217;u&lt;/a&gt;. Jej tw&#243;rcy nie kryj&#261; si&#281; &#380;e wzorowali si&#281; na pythonowej bibliotece &lt;a href="http://www.wsgi.org/wsgi"&gt;&lt;span class="caps"&gt;WSGI&lt;/span&gt;&lt;/a&gt;. Biblioteka ta robi niez&#322;&#261; furor&#281; w kr&#281;gach Rubiego. Powstaje sporo r&#243;&#380;nych mikroframework&#243;w lub szybkich serwer&#243;w &lt;span class="caps"&gt;HTTP&lt;/span&gt; pracuj&#261;cych asynchronicznie i wykorzystuj&#261;cych Rack. Niedawno powsta&#322; &#347;wietny &lt;a href="http://code.macournoyer.com/thin/"&gt;Thin&lt;/a&gt;, a ju&#380; mo&#380;na przeczyta&#263; o &lt;a href="http://www.rubyinside.com/ebb-web-framework-http-server-786.html"&gt;2x szybszy Ebb&lt;/a&gt;. Co ciekawe, Ebb chce docelowo obs&#322;ugiwa&#263; zar&#243;wno frameworki Rubiego jak i &lt;strong&gt;Pythona&lt;/strong&gt;! Jestem ciekaw czy b&#281;dzie w stanie zdetronizowa&#263; serwer &lt;a href="http://pythonpaste.org/"&gt;Paste&lt;/a&gt;... Rack doczeka&#322; si&#281; ju&#380; swojej &lt;a href="http://github.com/booleanman/rackinterfacefilter/tree/master"&gt;implementacji w JRuby&lt;/a&gt;! Umo&#380;liwia to  tym samym odpalanie w &lt;a href="http://jruby.codehaus.org/"&gt;JRuby&lt;/a&gt; wszystkich framework&#243;w kt&#243;re korzystaj&#261; z Rack&amp;#8217;a.&lt;/p&gt;


	&lt;h2&gt;Frameworki&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://rubyonrails.pl"&gt;&lt;strong&gt;Rails&lt;/strong&gt;&lt;/a&gt; &amp;#8211; najwa&#380;niejszy framework Rubiego, mo&#380;e by&#263; odpalany za pomoc&#261; Thina kt&#243;ry &lt;em&gt;u&#380;ywa Rack&lt;/em&gt;. Rails mo&#380;na odpali&#263; na JRuby nawet prosto z &lt;a href="http://www.netbeans.org/features/ruby/index.html"&gt;Netbeans 6&lt;/a&gt; :)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://merbivore.com/"&gt;&lt;strong&gt;Merb&lt;/strong&gt;&lt;/a&gt; &amp;#8211; pretendent do detronizacji Rails, _u&#380;ywa Rack_i tym samym mo&#380;na go odpali&#263; na JRuby.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://ramaze.net/"&gt;Ramaze&lt;/a&gt; &amp;#8211; podobnie do Merba, stara si&#281; promowa&#263; bardziek elastyczne podej&#347;cie, &lt;em&gt;u&#380;ywa Rack&lt;/em&gt;, raczej nie zagrozi Merbowi&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://fuzed.rubyforge.org/"&gt;Fuzed&lt;/a&gt; &amp;#8211; Rails z &lt;a href="http://yaws.hyber.org/"&gt;&lt;span class="caps"&gt;YAWS&lt;/span&gt;&lt;/a&gt; (szybkim serwerem &lt;span class="caps"&gt;HTTP&lt;/span&gt; napisanym w &lt;a href="http://en.wikipedia.org/wiki/Erlang_programming_language"&gt;Erlangu&lt;/a&gt;)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.nitroproject.org/"&gt;Nitro&lt;/a&gt; &amp;#8211; typu &lt;span class="caps"&gt;MVC&lt;/span&gt; z w&#322;asnym &lt;span class="caps"&gt;ORM&lt;/span&gt; &amp;#8211; &lt;a href="http://www.nitroproject.org/docs/rdoc/classes/Og.html"&gt;Ogg&lt;/a&gt; i naciskiem na &lt;span class="caps"&gt;AJAX&lt;/span&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://enigo.com/projects/iowa/"&gt;&lt;span class="caps"&gt;IOWA&lt;/span&gt;&lt;/a&gt; &amp;#8211; komponentowy, &lt;/li&gt;
		&lt;li&gt;&lt;a href="https://rubyforge.org/projects/wee/"&gt;Wee&lt;/a&gt; wzorowany na smalltalkowym &lt;a href="http://www.seaside.st/"&gt;Seaside&lt;/a&gt; u&#380;ywaj&#261;cym &lt;a href="http://en.wikipedia.org/wiki/Continuation"&gt;kontynuacji&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://sinatra.rubyforge.org/"&gt;Sinatra&lt;/a&gt; &amp;#8211; mikroframework wzorowany na minimalistycznym, pythonowym &lt;a href="http://webpy.org"&gt;Web.py&lt;/a&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://sergiosantos.info/2007/7/camping-a-ruby-microframework"&gt;Camping&lt;/a&gt; &amp;#8211; kolejny mikroframework w Ruby&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://rubywaves.com/"&gt;Wave&lt;/a&gt; &amp;#8211; wzorowany na Camping, te&#380; u&#380;ywa Rack i Rubiego wsz&#281;dzie gdzie si&#281; da.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://github.com/macournoyer/invisible/tree/master"&gt;Invisible&lt;/a&gt; mikroframework u&#380;ywaj&#261;cy Rack napisany w 35 linijkach kodu Rubiego (bardziej ciekawostka)&lt;/li&gt;
	&lt;/ul&gt;


	&lt;h2&gt;Mongrel i sp&#243;&#322;ka&lt;/h2&gt;


	&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.webrick.org/"&gt;Webrick&lt;/a&gt; &amp;#8211; serwer http dost&#281;pny razem ze standardow&#261; bibliotek&#261; Rubiego&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://dev.robotcoop.com/Libraries/webrick-high-performance/classes/WEBrick/HighPerformanceServer.html"&gt;Highperformance Webrick&lt;/a&gt; &amp;#8211; szybsza wersja Webricka (u&#380;ywaj&#261;ca uniksowych fork&#243;w)&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://mongrel.rubyforge.org/"&gt;Mongrel&lt;/a&gt; &amp;#8211; klasyka, napisany cz&#281;&#347;ciowo w C, to od niego zacz&#281;&#322;a si&#281; rewolucja i odej&#347;cie od FastCGI jako metody odpalania Rails&#243;w.&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://swiftiply.swiftcore.org/mongrel.html"&gt;Swiftyply i evented_mongrel&lt;/a&gt; asychroniczne, szybsze wersje Mongrela&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://code.macournoyer.com/thin/"&gt;&lt;strong&gt;Thin&lt;/strong&gt;&lt;/a&gt; &amp;#8211; asynchroniczny web server u&#380;ywaj&#261;cy Mongrela i Rack&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://ebb.rubyforge.org/"&gt;&lt;strong&gt;Ebb&lt;/strong&gt;&lt;/a&gt; &amp;#8211; u&#380;ywa Rack, wi&#281;kszo&#347;&#263; kodu jest w C, dlatego jest taki szybki, na razie ma&#322;o dokumentacji, by&#263; mo&#380;e nast&#281;pca Thin&lt;/li&gt;
	&lt;/ul&gt;</description>
      <pubDate>Tue, 04 Mar 2008 22:56:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:bdcbae56-a710-43b1-84a6-77d5471f8cac</guid>
      <author>Jaros&#322;aw Zabie&#322;&#322;o</author>
      <link>http://blog.zabiello.com/articles/2008/03/04/frameworki-rubiego-rack-wsgi</link>
      <category>merb</category>
      <category>jruby</category>
      <category>rack</category>
      <category>python</category>
      <category>ruby</category>
      <category>frameworks</category>
      <category>thin</category>
      <category>rails</category>
      <category>ramaze</category>
      <category>mongerl</category>
      <category>ebb</category>
      <category>fuzed</category>
    </item>
  </channel>
</rss>
