<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Ruby</title><link>http://blogs.labo-dotnet.com/colophon/category/430.aspx</link><description>Ruby</description><managingEditor>Evain Jb</managingEditor><dc:language>fr-FR</dc:language><generator>.Text Version 0.95.2004.101</generator><item><dc:creator>Evain Jb</dc:creator><title>Pourquoi Ruby ?</title><link>http://blogs.labo-dotnet.com/colophon/archive/2005/05/19/5695.aspx</link><pubDate>Thu, 19 May 2005 22:45:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/colophon/archive/2005/05/19/5695.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/colophon/comments/5695.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/colophon/archive/2005/05/19/5695.aspx#Feedback</comments><slash:comments>24</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/colophon/comments/commentRss/5695.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/colophon/services/trackbacks/5695.aspx</trackback:ping><description>&lt;p&gt;
Mon ami et collègue &lt;a href="http://blogs.labo-dotnet.com/patrice"&gt;Patrice Lamarche&lt;/a&gt; a été l'autre fois fort impressioné devant des statistiques où il était question de développeurs, et de leur préférences pour les langages de programmation. Il croyait en effet, malgré que je lui assurais le contraire, que j'étais le seul européen à connaitre, et surtout à utiliser, le langage &lt;a href="http://www.ruby-lang.org"&gt;Ruby&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Non seulement il avait tord, mais en plus, j'ai ici de quoi faire en sorte que sa pensée soit de plus en plus fausse. Alors si vous vous demandez pourquoi par exemple, dans un élan de pragmatisme, j'ai créer mon propre générateur de code pour &lt;a href="http://www.mono-project.com/Cecil"&gt;Mono.Cecil&lt;/a&gt; en utilisant ce langage, pourquoi je m'en sers dès que j'ai une tâche &lt;i&gt;scriptable&lt;/i&gt; à réaliser, j'ai ici le lien qu'il vous faut !
&lt;/p&gt;
&lt;p align="center"&gt;
&lt;a href="http://www.poignantguide.net/ruby/"&gt;&lt;img src="http://www.poignantguide.net/ruby/i/poignant.guide.png" border="0" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
En espérant seulement que vous pratiquez assez bien l'anglais pour bien vous poiler, et surtout, pour apprendre à aimer ce petit bijou qu'est le Ruby !
&lt;/p&gt;&lt;img src ="http://blogs.labo-dotnet.com/colophon/aggbug/5695.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Evain Jb</dc:creator><title>Ajax, le web plus blanc que blanc</title><link>http://blogs.labo-dotnet.com/colophon/archive/2005/04/17/5321.aspx</link><pubDate>Sun, 17 Apr 2005 17:14:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/colophon/archive/2005/04/17/5321.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/colophon/comments/5321.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/colophon/archive/2005/04/17/5321.aspx#Feedback</comments><slash:comments>76</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/colophon/comments/commentRss/5321.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/colophon/services/trackbacks/5321.aspx</trackback:ping><description>&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;style type="text/css"&gt;
.csharpcode
{
	font-size: 10pt;
	color: black;
	font-family: Courier New , Courier, Monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0px; }
.rem { color: #008000; }
.kwrd { color: #0000ff; }
.str { color: #006080; }
.op { color: #0000c0; }
.preproc { color: #cc6633; }
.asp { background-color: #ffff00; }
.html { color: #800000; }
.attr { color: #ff0000; }
.alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0px;
}
.lnum { color: #606060; }
&lt;/style&gt;
&lt;p&gt;Depuis quelques mois, un mot est dans la bouche de tous les développeurs web : Ajax.
Popularisé par les outils Google Mail et Maps, et d'autres frameworks, on rencontre
de plus en plus de sites offrant des fonctionnalités dynamiques, sans pour cela que
l'on change de page. La version 2 d'ASP.NET intègre en standard ces fonctionnalités, 
qui sont par exemple utilisées pour peupler dynamiquement un TreeView, sans changer
de page à chaque ouverture d'un noeud. Le terme Ajax est un terme générique pour 
ces techniques dynamiques.&lt;/p&gt;

&lt;p&gt;J'avais ouvert une catégorie Ruby, en espérant prendre le temps de vous parler de ce
langage et de tous les outils qu'on trouve autour, je ne l'ai jamais fais. Pas très
grave, il faut juste savoir qu'un outil commence à faire du buzz, et que les grandes
gens en parlent. Il n'en faut pas plus en général pour que les gens commencent à s'y
intéresser. Cet outil c'est &lt;a href="http://www.rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt;, un framework léger de développement web,
entièrement écrit en Ruby, qui offre une rapidité et une puissance de développement
assez impressionante, tout en gardant le côté script qui plait tant aux développeurs
php. Un bon compromis pour des applications ne nécessitant pas de dégainer les outils
lourds comme les Tapestry, Struts, JSF de chez Java, ou encore de l'ASP.NET. En tout
cas, c'est un framework qui mérite qu'on y jete un coup d'oeil !&lt;/p&gt;

&lt;p&gt;Il y a quelques temps, &lt;a href="http://www.rubyonrails.com/"&gt;Ruby on Rails&lt;/a&gt; s'est dotée d'une librairie JavaScript à la pointe,
pour pouvoir bénéficier de fonctionnalités Ajax : &lt;a href="http://prototype.conio.net/"&gt;Prototype&lt;/a&gt;. Cette librairie écrite dans
un excellent JavaScript, est disponible gratuitement dans une license proche de la MIT,
ce qui signifie que vous pouvez tout à fait l'intégrer dans tous vos développements, 
aussi bien libres que commerciaux, tant que vous laissez le copyright. Nous allons tout 
de suite en voir un petit exemple.&lt;/p&gt;

&lt;p&gt;Imaginons un tout début de lecteur RSS en mode web. C'est un besoin où une utilisation 
de la méthodologie Ajax est tout à fait appliquable : pas besoin de réferencer le contenu
de l'aggrégateur, besoin d'une interface sympa et réactive, bref, allons-y.&lt;/p&gt;

&lt;p&gt;Tout d'abord la partie serveur, simpliste, qui renvoie sous forme de document XML un item
d'un flux RSS. On passe un indice, et hop, l'élement est extrait avant d'être renvoyé au
client. Cette partie a été réalisée en Ruby, parce que je le vaux bien. La source se passe
de commentaire et est disponible ici : &lt;b&gt;&lt;a href="http://evain.net/ajax/item.rbx.html"&gt;la source du serveur Ruby&lt;/a&gt;&lt;/b&gt;.&lt;/p&gt;

&lt;p&gt;Ce qui nous intéresse c'est bien sur le client, voyons un peu ce qu'il s'y passe, quand on
demande au serveur un item en particulier :&lt;/p&gt;

&lt;p&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="preproc"&gt;var&lt;/span&gt; url = &lt;span class="str"&gt;"http://evain.net/ajax/item.rbx"&lt;/span&gt;;

&lt;span class="preproc"&gt;function&lt;/span&gt; setArticle(id) {
    &lt;span class="preproc"&gt;var&lt;/span&gt; opts = { method : &lt;span class="str"&gt;"get"&lt;/span&gt;,
                 parameters : &lt;span class="str"&gt;"id="&lt;/span&gt; + id,
                 onComplete : receivedHandler,
                 asynchronous : &lt;span class="preproc"&gt;true&lt;/span&gt; };
    &lt;span class="preproc"&gt;var&lt;/span&gt; req = &lt;span class="preproc"&gt;new&lt;/span&gt; Ajax.Request(url, opts);
}
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
Le code est simpliste, on ne fait qu'utiliser un objet Ajax.Request, fourni par la libraire
&lt;a href="http://prototype.conio.net/"&gt;Prototype&lt;/a&gt;. La partie intéressante se situe dans la
déclaration des options, où l'on spécifie une fonction qui sera déclenchée quand le flux aura 
été téléchargé entièrement : &lt;b&gt;receivedHandler&lt;/b&gt;. Regardons son implémentation :
&lt;/p&gt;

&lt;p&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="preproc"&gt;function&lt;/span&gt; nodeValue(node, name) {
    &lt;span class="preproc"&gt;var&lt;/span&gt; childs = node.getElementsByTagName(name);
    &lt;span class="preproc"&gt;if&lt;/span&gt; (childs.length &amp;gt; 0 &amp;amp;&amp;amp; childs.item(0).childNodes.length &amp;gt; 0)
        &lt;span class="preproc"&gt;return&lt;/span&gt; childs.item(0).childNodes.item(0).nodeValue;
    &lt;span class="preproc"&gt;return&lt;/span&gt; &lt;span class="str"&gt;""&lt;/span&gt;;
}

&lt;span class="preproc"&gt;function&lt;/span&gt; receivedHandler(remote) {
    &lt;span class="preproc"&gt;var&lt;/span&gt; doc = remote.responseXML.documentElement;
    &lt;span class="preproc"&gt;if&lt;/span&gt; (doc) {
        $(&lt;span class="str"&gt;"auteur"&lt;/span&gt;).innerHTML = nodeValue(doc, &lt;span class="str"&gt;"author"&lt;/span&gt;);
        $(&lt;span class="str"&gt;"article"&lt;/span&gt;).innerHTML = &lt;span class="str"&gt;"&amp;lt;a href=\""&lt;/span&gt; + nodeValue(doc, &lt;span class="str"&gt;"link"&lt;/span&gt;) +
                &lt;span class="str"&gt;"\"&amp;gt;"&lt;/span&gt; + nodeValue(doc, &lt;span class="str"&gt;"title"&lt;/span&gt;) + &lt;span class="str"&gt;"&amp;lt;/"&lt;/span&gt; + &lt;span class="str"&gt;"a&amp;gt;"&lt;/span&gt;;
        $(&lt;span class="str"&gt;"date"&lt;/span&gt;).innerHTML = nodeValue(doc, &lt;span class="str"&gt;"pubDate"&lt;/span&gt;);
        $(&lt;span class="str"&gt;"desc"&lt;/span&gt;).innerHTML = nodeValue(doc, &lt;span class="str"&gt;"description"&lt;/span&gt;);
    }
}
&lt;/pre&gt;
&lt;/p&gt;

&lt;p&gt;
Ici, tout simplement, on récupère le flux de retour sous forme d'un document XML manipulable selon
le standard DOM, terrain connu donc. Tricky, la librairie &lt;a href="http://prototype.conio.net/"&gt;Prototype&lt;/a&gt; nous 
fourni une fonction $ pour récupérer directement un élement en fonction de son id, ensuite on va chercher
le corps d'un noeud, pour l'attribuer comme corps des éléments correspondants. Easy :)
&lt;/p&gt;

&lt;p&gt;
Bon, si on voyait un résultat "fini" qui marche ? C'est par ici : &lt;b&gt;&lt;a href="http://evain.net/ajax/client.html"&gt;la démonstration finale&lt;/a&gt;&lt;/b&gt;.
Normalement ça devrait marcher sous IE6, FireFox et Safari, donc bonne démo. Il reste que bien que trivial, l'exemple de la démo je pense, représente un marché d'avenir, gageons qu'un ponte comme Google, muni de moyens éprouvés pour la recherche, améliore bientôt son GMail, ou nous fasse un GFeed, où nous pourrions se balader simplement dans nos feeds préférés, rechercher dedans, et le tout, avec une interface de "killer app".
&lt;/p&gt;

&lt;p&gt;
Voila, nous avons vu rapidement comment mettre en place d'une manière simpliste une méthodologie Ajax dans
une page internet, libre à vous de l'implémenter maintenant dans vos applications.
&lt;/p&gt;&lt;img src ="http://blogs.labo-dotnet.com/colophon/aggbug/5321.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>Evain Jb</dc:creator><title>Ruby, état du lard</title><link>http://blogs.labo-dotnet.com/colophon/archive/2004/11/14/4850.aspx</link><pubDate>Sun, 14 Nov 2004 04:16:00 GMT</pubDate><guid>http://blogs.labo-dotnet.com/colophon/archive/2004/11/14/4850.aspx</guid><wfw:comment>http://blogs.labo-dotnet.com/colophon/comments/4850.aspx</wfw:comment><comments>http://blogs.labo-dotnet.com/colophon/archive/2004/11/14/4850.aspx#Feedback</comments><slash:comments>13</slash:comments><wfw:commentRss>http://blogs.labo-dotnet.com/colophon/comments/commentRss/4850.aspx</wfw:commentRss><trackback:ping>http://blogs.labo-dotnet.com/colophon/services/trackbacks/4850.aspx</trackback:ping><description>De bon matin, et parce que j'ai été ammené il y a peu à utiliser un de mes langages favoris, le &lt;a href="http://www.ruby-lang.org/en"&gt;Ruby&lt;/a&gt;, je vais me fendre au fil de quelques articlets à venir de divers points comme :&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;La découverte du Ruby&lt;/li&gt;
&lt;li&gt;Tous ces petits plus qui vous changent la vie en Ruby&lt;/li&gt;
&lt;li&gt;LE framework ultime pour le développement web en Ruby&lt;/li&gt;
&lt;li&gt;Et surement d'autres choses...&lt;/li&gt;
&lt;/ul&gt;
En attendant, et comme il serait dommage de ne pas vous appater avec un petit peu de code, voila un lien fort sympathique :
&lt;ul&gt;
&lt;li&gt;&lt;h3&gt;&lt;a href="http://florilien.sample4.net"&gt;Le florilien&lt;/a&gt;&lt;/h3&gt;&lt;/li&gt;
&lt;/ul&gt;
Comme vous pouvez le constater en rafraichissant la page, la liste de lien est aléatoire.&lt;br /&gt;
Vous pouvez par exemple regarder sa source première (qui n'est pas de mon fait), ici :&lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align:left;color:#000000; background-color:#ffffff; border:solid black 1px; padding:0.5em 1em 0.5em 1em; overflow:auto;font-size:12px; font-family:monospace; "&gt;&lt;span style="color:#7d00ff;"&gt;require&lt;/span&gt; &lt;span style="color:#8c8c8c;"&gt;'sqlite'&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
db = SQLite::Database.new ( &lt;span style="color:#8c8c8c;"&gt;"../sample4.db"&lt;/span&gt;, &lt;span style="color:#03b514;"&gt;0&lt;/span&gt; )&lt;br /&gt;
rs = db.execute ( &lt;span style="color:#8c8c8c;"&gt;"SELECT id FROM sample4;"&lt;/span&gt; )&lt;br /&gt;

&lt;br /&gt;
na = []&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color:#0000cc;"&gt;def&lt;/span&gt; rebuild ( arr )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr2 = []&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr.each { |row|&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;if&lt;/span&gt; ( !row.&lt;span style="color:#0000cc;"&gt;nil&lt;/span&gt;? )&lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr2.push ( row )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;end&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;return&lt;/span&gt; arr2&lt;br /&gt;
&lt;span style="color:#0000cc;"&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color:#0000cc;"&gt;def&lt;/span&gt; setValue ( arr, arr2 )&lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;if&lt;/span&gt; ( arr.size &amp;gt; &lt;span style="color:#03b514;"&gt;0&lt;/span&gt; )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;r = &lt;span style="color:#7d00ff;"&gt;rand&lt;/span&gt; ( arr.size )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr2.push ( arr[ r ] )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr[ r ] = &lt;span style="color:#0000cc;"&gt;nil&lt;/span&gt;&lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;arr = rebuild ( arr )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;return&lt;/span&gt; setValue ( arr, arr2 )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;end&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;return&lt;/span&gt; arr2&lt;br /&gt;
&lt;span style="color:#0000cc;"&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
na = setValue ( rs, na )&lt;br /&gt;

&lt;br /&gt;
na.each { |id|&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;db.execute ( &lt;span style="color:#8c8c8c;"&gt;"SELECT title, url FROM sample4 WHERE id=&lt;/span&gt;&lt;span style="color:#669999;"&gt;#{id['id']}&lt;/span&gt;&lt;span style="color:#8c8c8c;"&gt;;"&lt;/span&gt; ) { |lien|&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#7d00ff;"&gt;puts&lt;/span&gt; &lt;span style="color:#8c8c8c;"&gt;"&amp;lt;a href=\"&lt;/span&gt;&lt;span style="color:#669999;"&gt;#{lien['url']}&lt;/span&gt;&lt;span style="color:#8c8c8c;"&gt;\"&amp;gt;&lt;/span&gt;&lt;span style="color:#669999;"&gt;#{lien['title']}&lt;/span&gt;&lt;span style="color:#8c8c8c;"&gt;&amp;lt;/a&amp;gt;"&lt;/span&gt;&lt;br /&gt;

&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;if&lt;/span&gt; ( id != na.last )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#7d00ff;"&gt;puts&lt;/span&gt; &lt;span style="color:#8c8c8c;"&gt;"&amp;lt;span class=\"separator\"&amp;gt; | &amp;lt;/span&amp;gt;\n"&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#0000cc;"&gt;end&lt;/span&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;

}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
Et la version actuelle (que j'ai écrite) : &lt;br /&gt;
&lt;br /&gt;
&lt;div style="text-align:left;color:#000000; background-color:#ffffff; border:solid black 1px; padding:0.5em 1em 0.5em 1em; overflow:auto;font-size:12px; font-family:monospace; "&gt;&lt;span style="color:#7d00ff;"&gt;require&lt;/span&gt; &lt;span style="color:#8c8c8c;"&gt;'sqlite'&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
db = SQLite::Database.new( &lt;span style="color:#8c8c8c;"&gt;"../sample4.db"&lt;/span&gt;, &lt;span style="color:#03b514;"&gt;0&lt;/span&gt; )&lt;br /&gt;
rs = db.execute( &lt;span style="color:#8c8c8c;"&gt;"select title, url from sample4;"&lt;/span&gt; )&lt;br /&gt;

ar = [ &lt;span style="color:#03b514;"&gt;-1&lt;/span&gt;, &lt;span style="color:#03b514;"&gt;1&lt;/span&gt; ]&lt;br /&gt;
res = rs.sort { |x,y|&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ar[ &lt;span style="color:#7d00ff;"&gt;rand&lt;/span&gt;( &lt;span style="color:#03b514;"&gt;2&lt;/span&gt; ) ]&lt;br /&gt;
}&lt;br /&gt;

&lt;br /&gt;
res.each { |record|&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#7d00ff;"&gt;puts&lt;/span&gt;( &lt;span style="color:#8c8c8c;"&gt;"&amp;lt;a href=\"&lt;/span&gt;&lt;span style="color:#669999;"&gt;#{record[ 'url' ]}&lt;/span&gt;&lt;span style="color:#8c8c8c;"&gt;\"&amp;gt;&lt;/span&gt;&lt;span style="color:#669999;"&gt;#{record[ 'title' ]}&lt;/span&gt;&lt;span style="color:#8c8c8c;"&gt;&amp;lt;/a&amp;gt;"&lt;/span&gt; )&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color:#7d00ff;"&gt;puts&lt;/span&gt;( &lt;span style="color:#8c8c8c;"&gt;"&amp;lt;span class=\"separator\"&amp;gt; | &amp;lt;/span&amp;gt;"&lt;/span&gt; ) &lt;span style="color:#0000cc;"&gt;if&lt;/span&gt;( record != res.last )&lt;br /&gt;

}&lt;br /&gt;
&lt;/div&gt;
&lt;br /&gt;
Comme vous pouvez le constater, le SGBD utilisé est &lt;a href="http://www.sqlite.org"&gt;sqlite&lt;/a&gt;.&lt;br /&gt;
Oui, les ruby-istes n'ont pas attendu php5 pour découvrir sqlite.&lt;br /&gt;
&lt;br /&gt;
puts("Stay tuned !")&lt;br /&gt;
&lt;br /&gt;&lt;img src ="http://blogs.labo-dotnet.com/colophon/aggbug/4850.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>