<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://cygal.info/blog/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Dissidents - ruby</title>
  <link>http://cygal.info/blog/index.php/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Sat, 20 Sep 2008 15:04:06 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Du sucre en ruby</title>
    <link>http://cygal.info/blog/index.php/post/Du-sucre-en-ruby</link>
    <guid isPermaLink="false">urn:md5:dfe4b1861f1f4ffdfacc4e4ef8f797af</guid>
    <pubDate>Sat, 21 Jul 2007 14:57:00 +0200</pubDate>
    <dc:creator>ArtMoonik</dc:creator>
        <category>Script</category>
        <category>hachage</category><category>ruby</category>    
    <description>&lt;p&gt;Les Hash faciles et pratiques.&lt;/p&gt;    &lt;p&gt;Quand on est amené à faire du &lt;a href=&quot;http://fr.wikipedia.org/wiki/Fonction_de_hachage&quot; hreflang=&quot;fr&quot;&gt;hachage&lt;/a&gt; en ruby, on fait des trucs genre:&lt;/p&gt;
&lt;pre&gt;
tableau[cle] &amp;lt;&amp;lt; donnee
&lt;/pre&gt;


&lt;p&gt;Bien sur si c'est la première fois qu'on croise cette clé alors on aura une erreur genre:&lt;/p&gt;
&lt;pre&gt;
NoMethodError: undefined method `&amp;lt;&amp;lt;' for nil:NilClass
&lt;/pre&gt;

&lt;p&gt;Donc à la place on fait:&lt;/p&gt;
&lt;pre&gt;
tableau[cle] = [donnee]
&lt;/pre&gt;

&lt;p&gt;Au final ca donne:&lt;/p&gt;
&lt;pre&gt;
if tableau[cle].nil? then
   tableau[cle] = [donnee]
else
    tableau[cle] &amp;lt;&amp;lt; donnee
end
&lt;/pre&gt;


&lt;p&gt;Bien sûr c'est horriblement laid et ca prend de la place et ca fait perdre du temps, bref ca pue. Donc, alternative, donnons à notre Hash 'tableau' une valeur par défaut autre qu'un nil, soit un Array ici:&lt;/p&gt;
&lt;pre&gt;
tableau = Hash.new { |h,k| h[k] = [] }
tableau[cle] &amp;lt;&amp;lt; donnee
&lt;/pre&gt;


&lt;p&gt;Et puis le hachage, c'est bien :)
Bonsoir les loutres.&lt;/p&gt;</description>
    
    
    
          <comments>http://cygal.info/blog/index.php/post/Du-sucre-en-ruby#comment-form</comments>
      <wfw:comment>http://cygal.info/blog/index.php/post/Du-sucre-en-ruby#comment-form</wfw:comment>
      <wfw:commentRss>http://cygal.info/blog/index.php/feed/rss2/comments/30</wfw:commentRss>
      </item>
    
  <item>
    <title>RubyKamoulox, parce que une tarte écarlate, ca appelle la corne contractuelle.</title>
    <link>http://cygal.info/blog/index.php/post/2007/05/19/5-rubykamoulox-parce-que-une-tarte-ecarlate-ca-appelle-la-corne-contractuelle</link>
    <guid isPermaLink="false">urn:md5:5795cc1653d309280e0c8f31a1e61003</guid>
    <pubDate>Sat, 19 May 2007 00:15:00 +0000</pubDate>
    <dc:creator>ArtMoonik</dc:creator>
        <category>Script</category>
        <category>inutile</category><category>ruby</category>    
    <description>&lt;p&gt;Il s'agit donc de coder un script qui génère des Kamoulox automatiquement, c'est à dire faire générer un truc sans sens à une machine logique. Tout ceci en ruby évidemment.&lt;/p&gt;    &lt;p&gt;First of all, si vous ne savez pas ce qu'est un Kamoulox, documentez vous chez nos confrères communautaires de chez &lt;a href=&quot;http://fr.wikipedia.org/wiki/Kamoulox&quot; hreflang=&quot;fr&quot;&gt;Wikipédia&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Second of all, pour profiter de la formidable aventure dans laquelle je vous entraine, il vous faut un interpréteur ruby d'installé, disons version 1.8 (c'est la plus en vogue à ce jour).&lt;/p&gt;


&lt;p&gt;Codons donc. En fait on triche puisque on utilise les fonctions random que les gentils développeurs du langage se sont fait suer à programmer (au passage, et note personnelle, ca doit être assez intéressant de voir comment c'est fait). Le problème c'est donc de faire un truc le plus large possible, tout en étant le plus simple possible. Vous codez ca comme vous voulez, chez moi ca donne ca:&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://artmoonik.free.fr/gag/kamoulox.rb&quot;&gt;kamoulox.rb&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Expliquer le code n'a ici rien d'intéressant, vous pouvez juste noter la définition de la méthode random de Array, et la méthode (oui parce qu'on ne dit pas fonction en ruby) récursive kamoulox.&lt;/p&gt;


&lt;p&gt;L'idée est de demander à cette fonction de prendre une phrase de base, répondant au mot-clé 'kamoulox' (ligne 42), et d'en analyser chacun des mots. Si le mot est un mot-clé, alors on appelle la fonction kamoulox avec ce mot-clé, et on le remplace avec le résultat, sinon on garde le mot normal.&lt;/p&gt;


&lt;p&gt;Comme vous mourrez d'envie d'essayer, je vous offre sans supplément un fichier data2.txt (la version 1 était moins bien): &lt;a href=&quot;http://artmoonik.free.fr/gag/data2.txt&quot; hreflang=&quot;fr&quot;&gt;data2.txt&lt;/a&gt;&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Placez le dans le même dossier que kamoulox.rb, et lancez kamoulox.rb. Ca donne approximativement:&lt;/p&gt;


&lt;pre&gt;artmoonik@woodstock:~/Desktop/Kamoulox$ ruby kamoulox.rb

Kamoulox...
Appuyer sur Entrée pour générer une phrase ('q' pour quitter):

Jalouse urbanisée !
Masqué masqué !
Transatlantique urbanisée !&lt;/pre&gt;


&lt;p&gt;Notez la pauvreté du vocabulaire, qui fait qu'on se retrouve avec plusieurs fois le même mot, assez rapidement. Pour y remédier il suffit d'ajouter des entrées dans le fichier data2.txt.&lt;/p&gt;


&lt;p&gt;Cela dit, promis, la prochaine fois on parle d'un truc utile.&lt;/p&gt;


&lt;p&gt;PS: Comme le disait Lao Tseu, 'Une corne, ca appelle une pêche.'&lt;/p&gt;</description>
    
    
    
          <comments>http://cygal.info/blog/index.php/post/2007/05/19/5-rubykamoulox-parce-que-une-tarte-ecarlate-ca-appelle-la-corne-contractuelle#comment-form</comments>
      <wfw:comment>http://cygal.info/blog/index.php/post/2007/05/19/5-rubykamoulox-parce-que-une-tarte-ecarlate-ca-appelle-la-corne-contractuelle#comment-form</wfw:comment>
      <wfw:commentRss>http://cygal.info/blog/index.php/feed/rss2/comments/4</wfw:commentRss>
      </item>
    
</channel>
</rss>