<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.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>Je code donc je suis : Tag ruby, everything about ruby</title>
    <link>http://frederic.logier.org/tag/ruby.rss</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>pour une &#233;cologie num&#233;rique</description>
    <item>
      <title>beanstalkd premi&#232;re approche</title>
      <description>&lt;p&gt;&lt;a href="http://xph.us/software/beanstalkd/"&gt;beanstalkd&lt;/a&gt; est un serveur de file d&amp;#8217;attente en C d&#233;velopp&#233; pour une application Facebook. Il existe un &lt;a href="http://beanstalk.rubyforge.org/"&gt;client Ruby&lt;/a&gt; mais la documentation est tr&#232;s succincte. Il existe bien un &lt;a href="http://nubyonrails.com/articles/about-this-blog-beanstalk-messaging-queue"&gt;exemple&lt;/a&gt; d&amp;#8217;usage mais ne r&#233;pond pas vraiment aux questions, telles que comment obtenir un &#233;quivalent des namespaces de mani&#232;re &#224; ce que plusieurs clients puissent se connecter au serveur tout en &#233;coutant chacun sur leur(s) file(s) et comment savoir que tel message vient de telle file. La documentation du &lt;a href="http://xph.us/git/beanstalkd/tree/doc/protocol.txt?id=r0.10"&gt;protocole&lt;/a&gt; m&amp;#8217;a permis d&amp;#8217;y r&#233;pondre.&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;beanstalk = Beanstalk::Pool.new(['localhost:11300'])
loop do
  job = beanstalk.reserve
  puts job.body # prints "hello" 
  job.delete
end&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Le protocole de Beanstalkd parle de tube. Ces tubes correspondent &#224; des files d&amp;#8217;attentes. Dans cet exemple de base le client &#233;coute par d&#233;faut sur le tube &amp;#8220;default&amp;#8221;. Si l&amp;#8217;on souhaite sp&#233;cifier le tube &#224; &#233;couter ou bien ajouter un tube il suffit de le pr&#233;ciser :&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;beanstalk.watch('montube')&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Ainsi le client &#233;coutera sur les tubes &amp;#8220;default&amp;#8221; et &amp;#8220;montube&amp;#8221;.&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;beanstalk.ignore('default')&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Supprime l&amp;#8217;&#233;coute sur le tube &amp;#8220;default&amp;#8221;. Attention un client doit au moins &#233;couter un tube. L&amp;#8217;ignore doit donc &#234;tre effectu&#233; apr&#232;s le watch.&lt;/p&gt;


	&lt;p&gt;Si l&amp;#8217;on souhaite qu&amp;#8217;un client puisse &#233;couter sur plusieurs tubes, il y a de fortes chances d&amp;#8217;avoir besoin de savoir de quel tube provient un message afin d&amp;#8217;effectuer les bons traitements :&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;job.stats['tube']&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Indique de quel tube provient le message re&#231;u. Un exemple complet :&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;require 'rubygems'
require 'beanstalk-client'
beanstalk = Beanstalk::Pool.new(['127.0.0.1:11300'])
beanstalk.watch('foo')
beanstalk.watch('bar')
beanstalk.ignore('default')
loop do
  job = beanstalk.reserve
  job_hash = job.ybody
  case job.stats['tube']
  when "foo" 
    puts "from foo's tube : #{job_hash[:data]}" 
  when "bar" 
    puts "from bar's tube : #{job_hash[:data]}" 
  end
  job.delete 
end&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Depuis un client qui souhaite empiler un message il suffit de pr&#233;ciser quel tube l&amp;#8217;on vise, sinon cela sera &amp;#8220;default&amp;#8221; :&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;beanstalk.use('foo')&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;Exemple :&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;require 'rubygems'
require 'beanstalk-client'
beanstalk = Beanstalk::Pool.new(['127.0.0.1:11300'])
beanstalk.use('foo')
beanstalk.yput(:data =&amp;gt; "good")
beanstalk.use('bar')
beanstalk.yput(:data =&amp;gt; "bye")&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;R&#233;sultats :&lt;/p&gt;


	&lt;pre&gt;&lt;code&gt;from foo's tube : good
from bar's tube : bye&lt;/code&gt;&lt;/pre&gt;


	&lt;p&gt;On a ainsi un usage plus int&#233;ressant que les exemples n&amp;#8217;utilisant qu&amp;#8217;un seul client sur un seul tube. Beanstalkd poss&#232;de un grand nombre de commandes mais il est dommage qu&amp;#8217;il ne fournisse pas pour l&amp;#8217;instant d&amp;#8217;option de persistance sur le disque. Pour cela &lt;a href="http://code.google.com/p/sparrow/"&gt;sparrow&lt;/a&gt; peut faire l&amp;#8217;affaire et m&#234;me s&amp;#8217;il est en Ruby, l&amp;#8217;usage d&amp;#8217;&lt;a href="http://rubyforge.org/projects/eventmachine/"&gt;eventmachine&lt;/a&gt; peut sans doute lui faire tenir une charge raisonnable. Cependant Beanstalkd poss&#232;de une communaut&#233; tr&#232;s active et des &lt;a href="http://xph.us/software/beanstalkd/client.html"&gt;biblioth&#232;ques&lt;/a&gt; vers 4 langages (pas &lt;span class="caps"&gt;PHP&lt;/span&gt; :P mais cela ne saurait tarder).&lt;/p&gt;</description>
      <pubDate>Mon, 05 May 2008 23:27:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:99e4115c-ac56-4c71-900e-db29446f3431</guid>
      <comments>http://frederic.logier.org/2008/05/05/beanstalkd-premiere-approche#comments</comments>
      <category>Ruby</category>
      <category>ruby</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=beanstalkd-premiere-approche&amp;day=05&amp;month=05&amp;year=2008</trackback:ping>
      <link>http://frederic.logier.org/2008/05/05/beanstalkd-premiere-approche</link>
    </item>
    <item>
      <title>Ruby &amp; GTK : article dans LinuxMag</title>
      <description>&lt;p&gt;LinuxMag vient de publier sur &lt;a href="http://www.unixgarden.com"&gt;UnixGarden&lt;/a&gt; mon article sur ruby/GTK+ paru dans LinuxMag 99 :
&lt;a href="http://www.unixgarden.com/index.php/programmation/ruby-gtk-le-developpement-d%e2%80%99applications-de-bureau-a-votre-portee"&gt;Ruby &amp;#38; &lt;span class="caps"&gt;GTK&lt;/span&gt;+ : le d&#233;veloppement d&#8217;applications de bureau &#224; votre port&#233;e&lt;/a&gt;.&lt;/p&gt;


	&lt;p&gt;Je le compl&#233;terai, notamment la partie sur GStreamer, quand j&amp;#8217;aurais un peu de temps.&lt;/p&gt;</description>
      <pubDate>Tue, 18 Mar 2008 14:03:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:630071b9-d24d-447d-9065-c9088e771819</guid>
      <comments>http://frederic.logier.org/2008/03/18/ruby-gtk-article-dans-linuxmag#comments</comments>
      <category>Ruby</category>
      <category>ruby</category>
      <category>GTK</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=ruby-gtk-article-dans-linuxmag&amp;day=18&amp;month=03&amp;year=2008</trackback:ping>
      <link>http://frederic.logier.org/2008/03/18/ruby-gtk-article-dans-linuxmag</link>
    </item>
    <item>
      <title>De la r&#233;partition de charge en Ruby on Rails</title>
      <description>&lt;p&gt;Je viens de publier un article en 2 parties sur le blog d&amp;#8217;AF83 :&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://dev.af83.com/ruby/de-la-repartition-de-charge-en-ruby-on-rails-12/2008/01/22/"&gt;De la r&#233;partition de charge en Ruby on Rails 1/2&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://dev.af83.com/ruby/de-la-repartition-de-charge-en-ruby-on-rails-22/2008/01/22/"&gt;De la r&#233;partition de charge en Ruby on Rails 2/2&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;C&amp;#8217;est plut&#244;t technique, et pr&#233;sente une solution parmis tant d&amp;#8217;autres dans ce domaine tr&#232;s particulier.&lt;/p&gt;</description>
      <pubDate>Tue, 22 Jan 2008 16:32:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:81e6f4fc-d960-4d95-a43c-5a60136c0d73</guid>
      <comments>http://frederic.logier.org/2008/01/22/de-la-repartition-de-charge-en-ruby-on-rails#comments</comments>
      <category>Rails</category>
      <category>Ruby</category>
      <category>Rails</category>
      <category>ruby</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=de-la-repartition-de-charge-en-ruby-on-rails&amp;day=22&amp;month=01&amp;year=2008</trackback:ping>
      <link>http://frederic.logier.org/2008/01/22/de-la-repartition-de-charge-en-ruby-on-rails</link>
    </item>
    <item>
      <title>Typo 4.1</title>
      <description>&lt;p&gt;Je viens de mettre &#224; jour &lt;a href="http://typosphere.org/"&gt;Typo&lt;/a&gt;, &lt;a href="http://fredericdevillamil.com/"&gt;Fr&#233;d&#233;ric de Villamil&lt;/a&gt; vient de &lt;a href="http://fredericdevillamil.com/articles/2007/03/10/typo-4-1-in-the-house"&gt;publier le gem&lt;/a&gt; qui va bien. Je tiens d&amp;#8217;ailleurs &#224; le remercier pour son aide, car un bug dans les scripts de migration depuis une version 4.0.3 emp&#234;chait la fin de celle-ci.&lt;br /&gt;
Je vous conseille donc d&amp;#8217;attendre la version 4.1.1 si vous utilisez typo, ou bien commentez ces 2 lignes dans le script 056_create_notifications.rb :&lt;br /&gt;
 #    rename_table :notifications, :old_notifications&lt;br /&gt;
 #    drop_table :notifications&lt;/p&gt;


	&lt;p&gt;A savoir qu&amp;#8217;en autre nouveaut&#233;, Typo g&#232;re maintenant la g&#233;n&#233;ration des flux &lt;span class="caps"&gt;RSS&lt;/span&gt; par tag. Tr&#232;s int&#233;ressant si vous ne voulez suivre qu&amp;#8217;un seul genre de billet, ou si l&amp;#8217;auteur ne souhaite syndiquer qu&amp;#8217;un seul type de billet vers un &lt;a href="http://planet.rubyfr.net"&gt;plan&#232;te&lt;/a&gt;. Exemple pour le tag Ruby :&lt;/p&gt;


	&lt;p&gt;http://fredix.freemonk.org/xml/rss/tag/ruby/feed.xml&lt;/p&gt;


	&lt;p&gt;Grand merci &#224; Fr&#233;d&#233;ric qui a repris seul typo !&lt;/p&gt;</description>
      <pubDate>Sun, 11 Mar 2007 11:08:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:e41006ca-f4da-4c73-9b7f-6fe4476f2cbf</guid>
      <comments>http://frederic.logier.org/2007/03/11/typo-4-1#comments</comments>
      <category>fredix</category>
      <category>ruby</category>
      <category>typo</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=typo-4-1&amp;day=11&amp;month=03&amp;year=2007</trackback:ping>
      <link>http://frederic.logier.org/2007/03/11/typo-4-1</link>
    </item>
    <item>
      <title>un logo pour JabberFR</title>
      <description>&lt;p&gt;&lt;a href="http://www.jabberfr.org"&gt;JabberFR&lt;/a&gt; lance un appel &#224; voter pour son &lt;a href="http://www.jabberfr.org/logo/"&gt;nouveau logo&lt;/a&gt;. N&amp;#8217;h&#233;sitez pas &#224; envoyer votre petit message.&lt;br /&gt;&lt;/p&gt;


	&lt;p&gt;Par la m&#234;me occasion, &lt;a href="http://wiki.jabberfr.org/Utilisateur:Omega"&gt;Omega&lt;/a&gt; vient de publier son service de pr&#233;sence Jabber en Ruby : &lt;a href="http://gpl.insa-lyon.fr/svn/omega/presence/backend/"&gt;presence&lt;/a&gt;. De quoi remplacer le moisi &lt;a href="http://edgar.netflint.net/"&gt;edgar&lt;/a&gt; en &lt;span class="caps"&gt;PHP&lt;/span&gt;.&lt;/p&gt;</description>
      <pubDate>Tue, 30 Jan 2007 22:31:00 +0100</pubDate>
      <guid isPermaLink="false">urn:uuid:ec40174f-4436-449a-ab88-9bd27351a38e</guid>
      <comments>http://frederic.logier.org/2007/01/30/un-logo-pour-jabberfr#comments</comments>
      <category>ruby</category>
      <category>jabber</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=un-logo-pour-jabberfr&amp;day=30&amp;month=01&amp;year=2007</trackback:ping>
      <link>http://frederic.logier.org/2007/01/30/un-logo-pour-jabberfr</link>
    </item>
    <item>
      <title>Ruby sur usenet</title>
      <description>&lt;p&gt;Enfin, suite &#224; la r&#233;ussite du vote pour la cr&#233;ation de fr.comp.lang.ruby, celui-ci est enfin cr&#233;&#233; sur Usenet : &lt;a href="http://groups.google.fr/group/fr.comp.lang.ruby"&gt;http://groups.google.fr/group/fr.comp.lang.ruby&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;Foncez sur votre client de news group pr&#233;f&#233;r&#233; (pan, thunderbird, knode, ...) pour retrouver cette nouvelle communaut&#233; qui commence fort ! Et oui d&#233;j&#224; des questions sur &lt;a href="http://www.fxruby.org/"&gt;FXRuby&lt;/a&gt;. Encore une preuve, s&amp;#8217;il le fallait, que le d&#233;veloppement de logiciel pour le desktop int&#233;resse &lt;strong&gt;beaucoup&lt;/strong&gt; de monde, et c&amp;#8217;est tant mieux :)&lt;/p&gt;


	&lt;p&gt;ps : mon feed &lt;span class="caps"&gt;RSS&lt;/span&gt; n&amp;#8217;est plus &#224; jour, d&#233;sol&#233; pour les 3 personnes qui lisent ce blog :) J&amp;#8217;essayerais de r&#233;soudre le probl&#232;me quand j&amp;#8217;aurais le temps.&lt;/p&gt;</description>
      <pubDate>Mon, 11 Sep 2006 22:33:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:16ede1aa-4a0d-4055-9181-f7dec2f28137</guid>
      <comments>http://frederic.logier.org/2006/09/11/ruby-sur-usenet#comments</comments>
      <category>Ruby</category>
      <category>ruby</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=ruby-sur-usenet&amp;day=11&amp;month=09&amp;year=2006</trackback:ping>
      <link>http://frederic.logier.org/2006/09/11/ruby-sur-usenet</link>
    </item>
    <item>
      <title>Ruby-lang nouvelle charte et forum usenet-fr</title>
      <description>&lt;p&gt;Qu&amp;#8217;il est beau notre nouveau site officiel :
&lt;a href="http://new.ruby-lang.org/en/"&gt;Ruby-lang&lt;/a&gt;, vivement la mise en ligne.&lt;/p&gt;


	&lt;p&gt;Pour info, comme annonc&#233; sur &lt;a href="http://groups.google.fr/group/fr.usenet.forums.annonces/browse_thread/thread/2f96771799a246af/c472348666613468#c472348666613468"&gt;fufa&lt;/a&gt; la cr&#233;ation du forum fr.comp.lang.ruby a &#233;t&#233; couronn&#233; de succ&#233;s. Merci &#224; tout ceux qui se sont mobilis&#233; et surtout au courageux initiateur.&lt;br /&gt;
La cr&#233;ation du forum devrait &#234;tre effective tr&#232;s rapidement.&lt;/p&gt;


	&lt;p&gt;Pour ceux qui comme moi n&amp;#8217;ont pas acc&#232;s un service usenet digne de ce nom de la part de leur &lt;span class="caps"&gt;FAI&lt;/span&gt;, je vous sugg&#232;re l&amp;#8217;utilisation de l&amp;#8217;excellent serveur gratuit &lt;a href="http://news.lacave.net/"&gt;lacave&lt;/a&gt;.&lt;/p&gt;</description>
      <pubDate>Mon, 28 Aug 2006 22:41:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:a2cf386b-f47e-47c3-914c-bafd7b08d6b8</guid>
      <comments>http://frederic.logier.org/2006/08/28/ruby-lang-nouvelle-charte-et-forum-usenet-fr#comments</comments>
      <category>Ruby</category>
      <category>ruby</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=ruby-lang-nouvelle-charte-et-forum-usenet-fr&amp;day=28&amp;month=08&amp;year=2006</trackback:ping>
      <link>http://frederic.logier.org/2006/08/28/ruby-lang-nouvelle-charte-et-forum-usenet-fr</link>
    </item>
    <item>
      <title>Livre de cuisine</title>
      <description>&lt;p&gt;Pour faire votre cuisine &#224; toutes les sauces, le &lt;a href="http://www.oreilly.com/catalog/rubyckbk/"&gt;Ruby Cookbook&lt;/a&gt; vient de sortir. Pas loin de 1000 pages ! :)&lt;/p&gt;


	&lt;p&gt;Mais mon petit doigt me dit qu&amp;#8217;une version en fran&#231;ais devrait sortir cet automne. Ruby c&amp;#8217;est bon mangez-en.&lt;/p&gt;</description>
      <pubDate>Thu, 03 Aug 2006 21:57:00 +0200</pubDate>
      <guid isPermaLink="false">urn:uuid:8ba04115-3fbf-4765-8c73-892edb7e5322</guid>
      <comments>http://frederic.logier.org/2006/08/03/livre-de-cuisine#comments</comments>
      <category>Ruby</category>
      <category>ruby</category>
      <trackback:ping>http://frederic.logier.org/trackbacks?article_id=livre-de-cuisine&amp;day=03&amp;month=08&amp;year=2006</trackback:ping>
      <link>http://frederic.logier.org/2006/08/03/livre-de-cuisine</link>
    </item>
  </channel>
</rss>
