<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.ulysses.fr/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/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>The trashiest blog in the World...</title>
  <link>http://blog.ulysses.fr/index.php/</link>
  <atom:link href="http://blog.ulysses.fr/index.php/feed/rss2" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Fri, 09 Jul 2010 14:09:22 +0200</pubDate>
  <copyright>Sauf mention explicite, le contenu de ce site est sous licence Creative Commons by-nc</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Recherche dans la documentation francophone de Fedora : la face PHP</title>
    <link>http://blog.ulysses.fr/index.php/post/26/05/2010/Recherche-dans-la-documentation-francophone-de-Fedora-%3A-le-round-PHP</link>
    <guid isPermaLink="false">urn:md5:88cb0fab8d9eb79604526397cc4c2049</guid>
    <pubDate>Wed, 26 May 2010 21:47:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;Il y a quelques jours, je vous annonçais la création et la mise en ligne d'un &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/15/05/2010/Documentation-francophone%2C-IRC-et-recherches&quot;&gt;bot IRC qui permet d'effectuer des recherches dans la documentation francophone de Fedora&lt;/a&gt;.&lt;br /&gt;
Si votre mémoire est bonne (ou si vous avez suivi le lien de la ligne au dessus :-p) ; vous saurez que j'ai utilisé le &lt;a href=&quot;http://lucene.apache.org/solr/&quot; hreflang=&quot;en&quot;&gt;moteur de recherche Apache Solr&lt;/a&gt; pour arriver à mes fins.&lt;/p&gt;


&lt;p&gt;Quelque jours plus tôt encore, &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/27/04/2010/Extension-Solr-pour-PHP&quot; hreflang=&quot;en&quot;&gt;je parlais brièvement de l'API PHP pour Solr&lt;/a&gt;, ainsi que de la &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/14/05/2010/L-API-PHP-pour-Solr-en-route-vers-les-d%C3%A9p%C3%B4ts...&quot; hreflang=&quot;en&quot;&gt;mise à disposition sur les dépôts Fedora (et EPEL !) de l'extension php-pecl-solr&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Il fallait absolument faire quelque chose de tout cela ! Bon... OK... mon côté petit développeur du dimanche à pris le dessus, d'accord... &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;J'ai donc utilisé l'API PHP/Solr et utilisé l'indexation que j'avais préalablement effectuée pour MrBot afin de produire une interface de recherche un brin plus évoluée que le simple résultat renvoyé sur IRC.&lt;br /&gt;
Voici le résultat : &lt;a href=&quot;http://fedoradoc.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;http://fedoradoc.ulysses.fr&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Cette interface apporte, entre autres, les fonctionnalités suivantes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la recherche de termes dans les titres et/ou le texte des &lt;a href=&quot;http://doc.fedora-fr.org&quot; hreflang=&quot;fr&quot;&gt;articles du wiki&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;un « suggest »&lt;/li&gt;
&lt;li&gt;la possibilité de filtrer sur une ou plusieurs catégories,&lt;/li&gt;
&lt;li&gt;le sur-lignage des termes recherchés dans les résultats,&lt;/li&gt;
&lt;li&gt;la présentation d'un extrait de texte qui permet de contextualiser le résultat.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'intégration de cette « interface » sur le site fedora-fr.org n'est pas à l'ordre du jour pour différentes raisons :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le serveur actuellement en place ne possède pas assez de mémoire vive pour faire tourner les services actuels plus l'index Solr,&lt;/li&gt;
&lt;li&gt;je n'ai pas envie de « perdre mon temps » à intégrer ça dans MediaWiki (ça ne m'intéresse vraiment pas d'apprendre à utiliser leur API),&lt;/li&gt;
&lt;li&gt;il faut laisser leur chance à d'autres de contribuer,&lt;/li&gt;
&lt;li&gt;...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;En revanche, j'ai un peu pêché sur le nom de l'application ; j'étais en panne d'inspiration :'( Ça donne donc &lt;code&gt;php-docfr-solrsearch&lt;/code&gt;, mais au diable le nom, cela importe bien moins que les fonctionnalités (illustration parfaite de l'expression « se raccrocher aux branches » diront les esprits chagrins) &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Bien évidemment, tout le code source est sous licence libre (GPLv3 en l'occurrence), et disponible sur &lt;a href=&quot;http://hg.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;mon dépôt mercurial&lt;/a&gt;. Voici quelques liens « agréables », sinon « utiles » :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://hg.ulysses.fr/php-docfr-solrsearch/&quot; hreflang=&quot;en&quot;&gt;les sources de php-docfr-solrsearch&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://redmine.ulysses.fr/projects/php-solr-docfr&quot; hreflang=&quot;fr&quot;&gt;les bogues, fonctionnalités prévues, etc.. de php-docfr-solrsearch&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bien entendu, les retours, les commentaires constructifs, les patches (on peut toujours rêver), les intégrations à MediaWiki (ben oui, on peut rêver, non ?) sont les bienvenus !&lt;/p&gt;


&lt;p&gt;Je suis bien conscient que le fonctionnement actuel n'est pas parfait et que des incohérences et bogues peuvent survenir. Tout ça sera fort certainement corrigé au fur et à mesure.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>French documentation, IRC and searching</title>
    <link>http://blog.ulysses.fr/index.php/post/15/05/2010/French-documentation%2C-IRC-and-searching</link>
    <guid isPermaLink="false">urn:md5:bb40ffdf44c1331a0861cd8cb3d7e1aa</guid>
    <pubDate>Sat, 15 May 2010 15:34:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;&lt;em&gt;bochecha on #fedora-fr tells me that would be a good idea to translate my last blog post in english. So, here it is! Thanks to him for his help on the present translation &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/em&gt;&lt;/p&gt;


&lt;p&gt;In march 2008, eponyme annouced arrival on the french IRC channels of a &lt;a href=&quot;http://blog.nicoleau-fabien.net/index.php?post/2008/03/31/trustyRC-%3A-un-nouveau-venu-sur-le-canal-fedora-fr&quot; hreflang=&quot;fr&quot;&gt;bot he has developped : trustyRC&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;For about two years now, trustyRC has endlessly answered to users requests on the french documentation, on the FAS (Fedora Account System), ...&lt;/p&gt;


&lt;p&gt;But he's now tired. eponyme is off on new adventures, and two major issues remains with trustyRC:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FAS datas has to be updated by hand ; that was rarely achieved (someone has to think of it, and have the guts, we all know that!),&lt;/li&gt;
&lt;li&gt;search within &lt;a href=&quot;http://doc.fedora-fr.org&quot; hreflang=&quot;fr&quot;&gt;French Fedora's documentation&lt;/a&gt; only asks to Mediawiki and gets an HTML result, although everyone knows that MediaWiki base search is very rather limited, and is simply not functionnal. As such, search results are not as relevant as we would like them to be, but let's not blame that poor trustyRC.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Recently, &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/27/04/2010/Extension-Solr-pour-PHP&quot; hreflang=&quot;fr&quot;&gt;I've been taking a close look at Apache Solr&lt;/a&gt; (&lt;a href=&quot;http://lucene.apache.org/solr/&quot; hreflang=&quot;en&quot;&gt;a Lucene-based search solution&lt;/a&gt;); I've also recently &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/14/05/2010/L-API-PHP-pour-Solr-en-route-vers-les-d%C3%A9p%C3%B4ts...&quot; hreflang=&quot;fr&quot;&gt;added php-pecl-solr extentsion in Fedora's repositories&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/solr.jpg&quot; alt=&quot;solr.jpg&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;solr.jpg, mai 2010&quot; /&gt;&lt;/p&gt;


&lt;p&gt;My goal was to index french documentation wiki ; because I know quite well datas and queries (at least from IRC) that are perfomed; that was a good comparison point for me.&lt;br /&gt;
Result is quite impressive, Solr's search power is really not comparable to the one a &amp;quot;simple&amp;quot; PHP application like &lt;a href=&quot;http://www.mediawiki.org/&quot; hreflang=&quot;en&quot;&gt;MediaWiki&lt;/a&gt; can provide. Solr can, among others, remove special characters (like our beloved 'é', 'è', or 'à' &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt; ), lower case characters, split terms, highlighting, faceting, ... For example, a search on terms like &lt;em&gt;réseau&lt;/em&gt;, &lt;em&gt;reseau&lt;/em&gt; and &lt;em&gt;network&lt;/em&gt; would produce - on the index I'm working on - the same results.&lt;/p&gt;


&lt;p&gt;In order to test that indexation and search system, I needed a public querying interface. That was a good opportunity to make some tests against several IRC bots. I've decided to not contribute to trustyRC mainly because I do not have required skills. Instead, I've taken a look and tested several existing python bots; I found a few but only Supybot really satifies me (in fact, that was the only one that did not reconnect every five minutes to freenode network &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:(&quot; class=&quot;smiley&quot; /&gt; ).&lt;/p&gt;


&lt;p&gt;The result? A &lt;a href=&quot;http://hg.ulysses.fr/supybot-docfr-plugin/&quot; hreflang=&quot;fr&quot;&gt;Supybot plugin for French documentation&lt;/a&gt;, connected on French IRC Fedora channels, with the name &lt;em&gt;MrBot&lt;/em&gt;!&lt;/p&gt;


&lt;p&gt;External plugins loaded into this Supybot instance are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;the &lt;a href=&quot;http://hg.ulysses.fr/supybot-docfr-plugin/&quot;&gt;French documentation search plugin&lt;/a&gt; (developped by myself, sources are available under BSD license),&lt;/li&gt;
&lt;li&gt;an &lt;a href=&quot;http://hg.ulysses.fr/supybot-validator-plugin/&quot;&gt;(X)HTML validation plugin&lt;/a&gt;, just for fun (I've developped it as well, its based on &lt;a href=&quot;http://inamidst.com/phenny/&quot; hreflang=&quot;en&quot;&gt;Phenny&lt;/a&gt; validation plugin, and code source is also available under BSD license),&lt;/li&gt;
&lt;li&gt;the &lt;a href=&quot;http://git.fedorahosted.org/git?p=supybot-fedora.git;a=summary&quot; hreflang=&quot;en&quot;&gt;Fedora plugin&lt;/a&gt; you could use to query FAS and know, for example, who maintains a specific package,&lt;/li&gt;
&lt;li&gt;the &lt;a href=&quot;http://git.fedorahosted.org/git?p=supybot-koji.git;a=summary&quot;&gt;Koji plugin&lt;/a&gt; which give some informations against Koji builders,&lt;/li&gt;
&lt;li&gt;the Bugzilla plugin that displays details on each valid bugzilla URL entered (or with a string like &lt;code&gt;bug #{bug number}&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;MrBot&lt;/em&gt; usage for the documentation stands as follows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.wiki what I search&lt;/code&gt;: search in wiki titles. If that did not return any results, then it will perfom a plain text search automatically,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.wiki plain what I search&lt;/code&gt;: force plain text search only,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.wiki solr {solr query}&lt;/code&gt;: query with a Solr request (principally for my testing usage).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Searching with the &lt;code&gt;wiki&lt;/code&gt; command will return two links maximum, not showed results count will also be returned.&lt;/p&gt;


&lt;p&gt;For most functions, it is possible to ask &lt;em&gt;MrBot&lt;/em&gt; in private:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/msg MrBot wiki what I search&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To check an URL validity against W3C validator:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.validate blog.ulysses.fr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.validate http://blog.ulysses.fr&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fedora services querying:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.whoowns package&lt;/code&gt;: returns package maintainer name (FAS)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.fas fasname&lt;/code&gt;: returns FAS account informations for the user. You'd probably use these command in private and not on a channel.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.branches package&lt;/code&gt;: returns active baracnhes list for specified package&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.what package&lt;/code&gt;: returns a brief package description&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.list Fedora&lt;/code&gt;: shows available commands for &lt;em&gt;Fedora&lt;/em&gt; plugin&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Documentation francophone, IRC et recherches</title>
    <link>http://blog.ulysses.fr/index.php/post/15/05/2010/Documentation-francophone%2C-IRC-et-recherches</link>
    <guid isPermaLink="false">urn:md5:ad7b454d79c04bc92ed71181061c8ec8</guid>
    <pubDate>Sat, 15 May 2010 12:49:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;En mars 2008, eponyme nous annonçait l'arrivée sur les canaux IRC francophones de Fedora &lt;a href=&quot;http://blog.nicoleau-fabien.net/index.php?post/2008/03/31/trustyRC-%3A-un-nouveau-venu-sur-le-canal-fedora-fr&quot; hreflang=&quot;fr&quot;&gt;d'un bot programmé par ses soins : trustyRC&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Voilà donc un peu plus de deux ans maintenant que trustyRC faisait son travail, répondant inlassablement aux requêtes des utilisateurs sur la documentation francophone, sur le FAS (Fedora Account System), ...&lt;/p&gt;


&lt;p&gt;Mais la fatigue l'a malheureusement gagné. eponyme s'est tourné vers d'autres horizons, et deux problèmes principaux persistaient avec trustyRC :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les données du FAS devaient être mises à jour à la main ; ce qui n'est fait que très rarement (il faut y penser et en avoir le courage, on connaît tous ça !),&lt;/li&gt;
&lt;li&gt;la recherche sur la &lt;a href=&quot;http://doc.fedora-fr.org&quot; hreflang=&quot;fr&quot;&gt;documentation francophone de Fedora&lt;/a&gt; ne faisait qu'interroger le MediaWiki et récupérer un résultat HTML. Or, chacun sait que la recherche MediaWiki de base est entravée de limitations pour le moins étranges, et n'est simplement pas fonctionnelle. Les résultats ne sont en conséquence souvent pas à la hauteur de nos espérances ; ce n'est cependant pas la faute de trustyRC, le pauvre.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depuis peu, &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/27/04/2010/Extension-Solr-pour-PHP&quot;&gt;je m'intéresse de très près à Apache Solr&lt;/a&gt; (&lt;a href=&quot;http://lucene.apache.org/solr/&quot; hreflang=&quot;en&quot;&gt;une solution de recherche web basée sur le projet Lucene&lt;/a&gt;) ; j'ai même très récemment &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/14/05/2010/L-API-PHP-pour-Solr-en-route-vers-les-d%C3%A9p%C3%B4ts...&quot; hreflang=&quot;en&quot;&gt;ajouté l'extension php-pecl-solr dans les dépôts Fedora&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/solr.jpg&quot; alt=&quot;solr.jpg&quot; style=&quot;display:block; margin:0 auto;&quot; title=&quot;solr.jpg, mai 2010&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Je me suis donc fixé comme but d'indexer le wiki de la documentation francophone ; puisque je connais assez bien les données et certaines recherches effectuées régulièrement (notamment sur IRC) ; c'était un bon point de comparaison pour moi. &lt;br /&gt;
Le résultat est assez impressionnant, la puissance de recherche de Solr n'est en rien comparable à celle d'une « simple » application PHP. comme &lt;a href=&quot;http://www.mediawiki.org/&quot; hreflang=&quot;en&quot;&gt;MediaWiki&lt;/a&gt; Solr permet, entre autres, la suppression des caractères accentués, la mise en minuscule des caractères, le découpage de termes, le sur-lignage, le filtrage, ... Pour exemple, une recherche sur les termes &lt;em&gt;réseau&lt;/em&gt;, &lt;em&gt;reseau&lt;/em&gt; et &lt;em&gt;network&lt;/em&gt; renvoie - pour l'index sur lequel j'ai travaillé - les mêmes résultats.&lt;/p&gt;


&lt;p&gt;Afin de pouvoir tester ce système d'indexation et de recherche un peu plus avant, il me fallait une interface d'interrogation publique. Je me suis dit que ce serait une bonne occasion de refaire quelques tests de bots IRC. J'ai choisi de ne pas contribuer à trustyRC principalement car je n'ai pas les compétences requises. Au lieu de cela, j'ai cherché et testé les bots existants en python ; j'en ai trouvé plusieurs, mais seul Supybot m'a réellement satisfait (en fait, c'était le seul à ne pas subir de déconnexions très régulières du réseau FreeNode &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:(&quot; class=&quot;smiley&quot; /&gt; ).&lt;/p&gt;


&lt;p&gt;Le résultat ? Un &lt;a href=&quot;http://hg.ulysses.fr/supybot-docfr-plugin/&quot; hreflang=&quot;fr&quot;&gt;plugin Supybot pour la documentation francophone&lt;/a&gt;, connecté sur les canaux francophones Fedora sous le doux nom de &lt;em&gt;MrBot&lt;/em&gt; !&lt;/p&gt;


&lt;p&gt;Les plugins externes chargés dans cette instance de Supybot sont :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le &lt;a href=&quot;http://hg.ulysses.fr/supybot-docfr-plugin/&quot;&gt;plugin de recherche dans le wiki fedora-fr&lt;/a&gt; (développé par votre serviteur, les sources sont disponibles sous licence BSD),&lt;/li&gt;
&lt;li&gt;un &lt;a href=&quot;http://hg.ulysses.fr/supybot-validator-plugin/&quot;&gt;plugin de validation (X)HTML&lt;/a&gt; pour m'amuser (également développé par votre serviteur, sur la base du plugin de validation de &lt;a href=&quot;http://inamidst.com/phenny/&quot; hreflang=&quot;en&quot;&gt;Phenny&lt;/a&gt;, dont les sources sont également disponibles sous licence BSD),&lt;/li&gt;
&lt;li&gt;le &lt;a href=&quot;http://git.fedorahosted.org/git?p=supybot-fedora.git;a=summary&quot; hreflang=&quot;en&quot;&gt;plugin Fedora&lt;/a&gt; qui permet d'interroger les FAS et savoir, par exemple, qui maintient un paquet spécifique,&lt;/li&gt;
&lt;li&gt;le &lt;a href=&quot;http://git.fedorahosted.org/git?p=supybot-koji.git;a=summary&quot;&gt;plugin Koji&lt;/a&gt; qui nous donne quelques informations sur les builders Koji de Fedora,&lt;/li&gt;
&lt;li&gt;le plugin Bugzilla qui affiche des détails sur une entrée du bugzilla de Fedora lorsqu'un lien valide est posté (ou une chaîne de la forme &lt;code&gt;bug #{numéro de bogue}&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'utilisation de &lt;em&gt;MrBot&lt;/em&gt; pour la recherche wiki se fait de la façon suivante :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.wiki ce que je cherche&lt;/code&gt; : effectue une recherche dans les titres du wiki. Si aucun résultat n'est trouvé, une recherche dans les textes sera effectuée automatiquement,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.wiki plain ce que je cherche&lt;/code&gt; : effectue une recherche dans les textes uniquement,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.wiki solr {requête solr}&lt;/code&gt; : permet d'interroger l'index avec une requête Solr (principalement implémenté pour mes tests).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'interrogation via la commande &lt;code&gt;wiki&lt;/code&gt; renverra au maximum deux URL ; le nombre de résultats non renvoyés sera également spécifié entre parenthèses.&lt;/p&gt;


&lt;p&gt;Vous remarquerez que le caractère d'interrogation est désormais le &lt;code&gt;.&lt;/code&gt; (point) ; alors que trustyRC répondait à un &lt;code&gt;!&lt;/code&gt; (point d'exclamation). Pourquoi ce changement ? Parce que j'en avais envie, na ! &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;
Toute plaisanterie mise à part ; un bot Supybot est déjà présent sur certains canaux Fedora anglophones - &lt;em&gt;zodbot&lt;/em&gt; sur #fedora-devel par exemple - qui répond au &lt;code&gt;.&lt;/code&gt; ; l'utilisation du même caractère permet simplement un peu d'harmonie.&lt;/p&gt;


&lt;p&gt;Pour la majorité des fonctions, il est également possible d'interroger &lt;em&gt;MrBot&lt;/em&gt; en message privé :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/msg MrBot wiki ce que je cherche&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour vérifier qu'une URL donnée est valide W3C :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.validate blog.ulysses.fr&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.validate http://blog.ulysses.fr&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'interrogation des services Fedora :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;.whoowns paquet&lt;/code&gt; : renvoie le nom (FAS) du mainteneur du paquet&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.fas fasname&lt;/code&gt; : renvoie des informations sur le compte FAS d'un utilisateur. Vous devriez probablement utiliser cette commande en message privé plutôt que sur un canal.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.branches paquet&lt;/code&gt; : renvoie la liste des branches actives pour le paquet spécifié&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.what paquet&lt;/code&gt; : renvoie une description courte du paquet&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.list Fedora&lt;/code&gt; : affiche la liste des commandes disponibles pour le plugin &lt;em&gt;Fedora&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Tchao facebook - Je reprends ma vie privée</title>
    <link>http://blog.ulysses.fr/index.php/post/15/05/2010/Tchao-facebook-Je-reprend-ma-vie-priv%C3%A9e</link>
    <guid isPermaLink="false">urn:md5:6b10b85df3e7e86487936e1d0e4ee91e</guid>
    <pubDate>Sat, 15 May 2010 01:17:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>GeneralLand</category>
            
    <description>    &lt;p&gt;Il y a quelque temps, je m'inscrivais sur Facebook ; en grande partie à cause du fameux (et, au demeurant, fort dangereux) effet Lemming !&lt;/p&gt;


&lt;p&gt;Non pas que je sois particulièrement fan de ce genre de systèmes ; mais les copains étaient là-bas, c'était rigolo. Au début. Et encore...&lt;br /&gt;
Je vous passerai mes humeurs concernant les contenus divers et variés ; j'ai trouvé au final que l'ensemble des informations que je recevais relevait plus du spam qu'autre chose. Et du spam ; j'en ai déjà beaucoup dans mes emails, merci beaucoup ! &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;En dehors de ces considérations personnelles, ce qui m'inquiète le plus se résume en deux points :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;les failles de sécurité fréquentes et pas toujours corrigées rapidement,&lt;/li&gt;
&lt;li&gt;la politique sur la vie privée adoptée par ce système. On pourra citer par exemple &lt;a href=&quot;http://fr.readwriteweb.com/2009/12/16/a-la-une/changement-vie-privee-confidentialite-facebook/&quot; hreflang=&quot;fr&quot;&gt;des modifications plus ou moins abusives du contrat d'utilisation&lt;/a&gt;, &lt;a href=&quot;http://standblog.org/blog/post/2010/03/31/Laicite-identite-Facebook&quot; hreflang=&quot;fr&quot;&gt;des sanctions arbitraires pas forcément justifiées&lt;/a&gt;. Un peu de lecture supplémentaire, &lt;a href=&quot;http://standblog.org/blog/post/2010/04/26/Actualit%C3%A9-de-la-vie-priv%C3%A9e-en-ligne&quot; hreflang=&quot;fr&quot;&gt;l'activité de la vie privée en ligne par Tristan Nitot&lt;/a&gt; (cet article ne parle pas que de Facebook par ailleurs) sera également instructive en la matière.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C'est ce dernier point, et notamment &lt;a href=&quot;http://mattmckeon.com/facebook-privacy/&quot; hreflang=&quot;en&quot;&gt;un graphique montrant l'évolution des paramètres de vie privée par défaut de facebook&lt;/a&gt; qui m'ont décidé à finalement supprimer mon compte (&lt;a href=&quot;http://standblog.org/blog/post/2010/05/12/apres-Facebook-Diaspora&quot; hreflang=&quot;fr&quot;&gt;Tristan Nitot a fait echo de cet article en français sur son blog&lt;/a&gt;).&lt;br /&gt;
Certains pensent qu'il n'est &lt;a href=&quot;http://consumerist.com/2010/04/delete-your-facebook-account-forever.html&quot; hreflang=&quot;en&quot;&gt;pas possible de supprimer réellement un compte facebook&lt;/a&gt; et qu'on ne peut que le désactiver. C'est faux, il est possible de &lt;a href=&quot;http://consumerist.com/2010/04/delete-your-facebook-account-forever.html&quot; hreflang=&quot;en&quot;&gt;supprimer un compte facebook&lt;/a&gt;, même si visiblement, il faut vraiment être motivé pour trouver la façon de faire (encore une chose que je n'aime guère... Ont-ils à ce point « peur de perdre » des utilisateurs &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/15/05/2010/et/ou leurs données par ailleurs&quot; title=&quot;et/ou leurs données par ailleurs&quot;&gt;et/ou leurs données par ailleurs&lt;/a&gt; ? ) !&lt;/p&gt;


&lt;p&gt;Donc, voilà, c'est fait, j'ai demandé la suppression de mon compte facebook :&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;Votre compte a été désactivé du site et sera effacé de façon définitive d'ici 14 jours. Si vous vous connectez à votre compte dans les 14 prochains jours, votre compte sera réactivé et vous pourrez annuler votre demande.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;14 jours pour supprimer un compte, je trouve cela très long : j'ai décidé de partir, pourquoi conserver mes données encore deux semaines supplémentaires ?&lt;/p&gt;


&lt;p&gt;Si vous souhaitez conserver votre compte facebook, je ne saurai que trop vous inviter à lire ce &lt;a href=&quot;http://www.korben.info/facebook-opengraph-comment-proteger-vos-donnees-personnelles.html&quot; hreflang=&quot;fr&quot;&gt;petit tutoriel qui devrait vous permettre de bloquer une partie des « fuites » de votre vie privée depuis facebook&lt;/a&gt; &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Notez finalement que mon épouse, avec laquelle je n'avais pourtant pas parlé de ces problèmes de vie privée, avait elle aussi décidé de supprimer son compte facebook. N'ayant pas trouvé le lien, elle l'avait simplement désactivé, et a été fort contente lorsque je lui ai donné la façon de le supprimer définitivement &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>L'API PHP pour Solr en route vers les dépôts...</title>
    <link>http://blog.ulysses.fr/index.php/post/14/05/2010/L-API-PHP-pour-Solr-en-route-vers-les-d%C3%A9p%C3%B4ts...</link>
    <guid isPermaLink="false">urn:md5:0d31e580374342f170692e49de2e01b7</guid>
    <pubDate>Fri, 14 May 2010 18:43:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;L'API PHP5 pour Solr sera bientôt disponible dans les dépôts officiels de Fedora ! &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;J'avais il y a peu décidé de tester cette solution, et j'en suis pleinement satisfait ; je donne donc suite en &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=591828&quot;&gt;proposant l'extension php-pecl-solr sur les dépôts officiels de Fedora&lt;/a&gt;. Pour les plus impatients, les build Koji sont là : &lt;a href=&quot;http://koji.fedoraproject.org/koji/packageinfo?packageID=10338&quot;&gt;http://koji.fedoraproject.org/koji/packageinfo?packageID=10338&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Extension Solr pour PHP</title>
    <link>http://blog.ulysses.fr/index.php/post/27/04/2010/Extension-Solr-pour-PHP</link>
    <guid isPermaLink="false">urn:md5:7ab9e42aea2239e902185d7847458ca7</guid>
    <pubDate>Tue, 27 Apr 2010 08:08:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;Ces temps-ci, je m'intéresse de très près à &lt;a href=&quot;http://lucene.apache.org/solr/&quot; hreflang=&quot;en&quot;&gt;Apache Solr&lt;/a&gt; (notamment pour le travail).&lt;/p&gt;


&lt;p&gt;Solr représente grosso modo la partie serveur du bien connu &lt;a href=&quot;http://lucene.apache.org&quot; hreflang=&quot;en&quot;&gt;Apache Lucene&lt;/a&gt; (qui est lui même un système d'indexation et de recherche avancé écrit en Java).&lt;/p&gt;


&lt;p&gt;Solr est un outil sous forme de servlet Java qui vous permet d'indexer des documents et de faire des recherches via une API web (&lt;a href=&quot;http://fr.wikipedia.org/wiki/Representational_state_transfer&quot; hreflang=&quot;fr&quot;&gt;REST&lt;/a&gt;), il propose &lt;a href=&quot;http://lucene.apache.org/solr/features.html&quot; hreflang=&quot;en&quot;&gt;de nombreuses fonctionnalités&lt;/a&gt;. En outre, il rend l'accès et la configuration d'index Lucene plus simple (via notamment des fichiers de configuration XML).&lt;/p&gt;


&lt;p&gt;Solr est un outil open Source très actif, et &lt;a href=&quot;http://wiki.apache.org/solr/PublicServers&quot; hreflang=&quot;en&quot;&gt;utilisé à de nombreux endroits&lt;/a&gt;. Des plugins de recherche basés sur Solr existent notamment pour &lt;a href=&quot;http://drupal.org/project/apachesolr&quot; hreflang=&quot;en&quot;&gt;Drupal&lt;/a&gt; et &lt;a href=&quot;http://ez.no/doc/extensions/ez_find/2_1/basic_configuration/solr_backend&quot; hreflang=&quot;en&quot;&gt;eZ Publish&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Il existe aussi une &lt;a href=&quot;http://pecl.php.net/package/solr&quot; hreflang=&quot;en&quot;&gt;extension PHP PECL pour Solr&lt;/a&gt; qui vous permet d'&lt;a href=&quot;http://www.php.net/manual/en/book.solr.php&quot; hreflang=&quot;en&quot;&gt;utiliser une instance de Solr depuis un script PHP5&lt;/a&gt;. Cette extension n'est pas disponible dans les dépôts officiels de Fedora, c'est pourquoi j'ai rapidement créé un RPM qui la fournit (afin de pouvoir tester ses possibilités depuis quelques applications personnelles).&lt;/p&gt;


&lt;p&gt;Le paquet est disponible ici :&lt;br /&gt;
&lt;a href=&quot;http://odysseus.x-tnd.be/fedora/php-pecl-solr/&quot;&gt;http://odysseus.x-tnd.be/fedora/php-pecl-solr/&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Ce paquet a été construit sous Fedora 12 en 64 bits, avec la version de PHP fournie pour cette plate forme sur &lt;a href=&quot;http://blog.famillecollet.com/&quot; hreflang=&quot;fr&quot;&gt;le dépôt de Remi&lt;/a&gt;. J'envisage de proposer ce paquet en revue pour les dépôts officiels, mais seulement si je l'utilise (pour le moment, je teste, on verra après :p).&lt;/p&gt;


&lt;p&gt;J'espère que ce paquet pourra être utile à certains &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Java et internationalisation</title>
    <link>http://blog.ulysses.fr/index.php/post/16/04/2010/Java-et-internationnalisation</link>
    <guid isPermaLink="false">urn:md5:a3f5e7364d0c2109e5d6fbe97e54b366</guid>
    <pubDate>Fri, 16 Apr 2010 23:26:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>WorkLand</category>
            
    <description>    &lt;p&gt;Je développe régulièrement en Java ; que ce soit pour des projets personnels (applications « de bureau » basées sur Swing principalement) ou pour le boulot.&lt;/p&gt;


&lt;p&gt;Dans le développement d'une application, songer à un système d'internationalisation assez rapidement est je pense généralement bénéfique pour deux raisons :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;il est alors possible de traduire rapidement et facilement votre application en d'autres langues (ben oui, c'est fait pour !),&lt;/li&gt;
&lt;li&gt;la relecture des chaînes originales ou traduites par une tierce personne est grandement facilitée ; nul besoin de pousser l'application dans ses derniers retranchements pour qu'elle affiche le message d'erreur qui ne devrait jamais être affiché :-p&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Lorsque j'ai débuté en Java, je travaillais sur un &lt;a href=&quot;http://cantine.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;logiciel de gestion de cantines scolaires&lt;/a&gt;, et l'implémentation d'un système i18n - bien que non requis par le « cahier des charges » de l'époque - m'est apparue naturelle.&lt;br /&gt;
J'ai en conséquence potassé un peu Java, et découvert les histoires de &lt;em&gt;ResourceBundle&lt;/em&gt; et de fichiers &lt;em&gt;.properties&lt;/em&gt;. J'ai rapidement trouvé un plugin pour l'IDE que j'utilisais (et que j'utilise toujours d'ailleurs - Eclipse) qui facilitait la saisie des chaînes.&lt;/p&gt;


&lt;p&gt;Voici en gros à quoi ressemble une telle chaîne dans un programme java, en deux parties. D'abord, dans le fichier source &lt;em&gt;.java&lt;/em&gt; :&lt;/p&gt;
&lt;pre&gt;
System.out.println(Messages.getString(&amp;quot;myapp.says.hello&amp;quot;));
&lt;/pre&gt;


&lt;p&gt;Ensuite, dans le fichier &lt;em&gt;.properties&lt;/em&gt; localisé qui va bien (ici, le français) :&lt;/p&gt;
&lt;pre&gt;
myapp.says.hello=Un bonjour de mon application
&lt;/pre&gt;


&lt;p&gt;Premier problème : la chaîne contenue dans le fichier Java est totalement dénuée de sens, et par moments (voire même souvent), il faut se référer au fichier &lt;em&gt;.properties&lt;/em&gt; pour savoir quel était le message prévu.&lt;/p&gt;


&lt;p&gt;Second problème : depuis quelques années, je n'avais pas ou très très peu utilisé ce système (pour le boulot, on utilise &lt;a href=&quot;http://cocoon.apache.org/&quot; hreflang=&quot;en&quot;&gt;Cocoon&lt;/a&gt; qui fournit son propre système d'internationalisation, basé sur des fichiers XML) ; et le plugin que j'avais trouvé à l'époque ne fonctionne plus avec les versions récentes de Eclipse. Pire : je ne suis pas parvenu à trouver une quelconque application qui me permette de gérer « facilement » ces fichiers.&lt;/p&gt;


&lt;p&gt;Et là, c'est un gros problème. En effet, les fichiers &lt;em&gt;.properties&lt;/em&gt; sont de simples fichiers textes ; mais dans lesquels les caractères spéciaux tels les accents, les guillemets («»), etc doivent être encodés en unicode. Pour vous donner un exemple :&lt;/p&gt;
&lt;pre&gt;
myapp.prefs=Pr\u00E9f\u00E9rences
&lt;/pre&gt;


&lt;p&gt;Relire et éditer pareilles chaînes de caractères est difficile sinon impossible (personnellement, j'abandonne au bout de moins de 5 lignes en lecture). Une faute de frappe dans les caractères unicode empêche le catalogue complet de se charger, et à priori sans lever d'exception (nous n'avons tout du moins pas trouvé comment faire &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt; ).&lt;/p&gt;


&lt;p&gt;Je me suis très récemment décidé à essayer de travailler un peu sur mon logiciel de gestion de Cantines, et me suis retrouvé face à ce problème lorsque j'ai voulu modifier une chaîne existante. ; du bonheur en barres &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;En cherchant un peu, j'ai découvert le projet &lt;a href=&quot;http://code.google.com/p/gettext-commons/&quot; hreflang=&quot;en&quot;&gt;gettext-commons&lt;/a&gt; qui permet d'internationaliser des applications Java avec les méthodes gettext ! Dans l'application, on se retrouve donc avec quelque chose dans le genre de :&lt;/p&gt;
&lt;pre&gt;
System.out.println(i18n.tr(&amp;quot;Preferences&amp;quot;));
&lt;/pre&gt;


&lt;p&gt;Chaîne qui sera ensuite extraite automatiquement du code source, ajoutée dans un fichier &lt;em&gt;.po&lt;/em&gt; lequel fichier vous pourrez traduire en utilisant un des nombreux outils disponibles. Je préfère nettement cette solution à la première &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;
Pour ne rien gâcher au plaisir, gettext-commons supporte la pluralisation, la contextualisation, le remplacement de variables dans les chaînes, ... La documentation est assez claire pour mettre en place ce système facilement et rapidement dans un projet.&lt;/p&gt;


&lt;p&gt;Seul bémol pour le moment : il faut générer le fichier &lt;em&gt;jar&lt;/em&gt; localisé pour voir le résultat dans votre application, c'est parfois un peu lourd (ou bien j'ai sauté la partie de la doc qui explique comment faire autrement :-p )&lt;/p&gt;


&lt;p&gt;Petite note tant que j'y suis ; c'est normalement documenté (mais je n'ai pas retrouvé la page) ; méfiez-vous des apostrophes dans les chaînes où vous souhaitez effectuer un remplacement de variables. En effet, la chaîne suivante (quel que soit le système utilisé) :&lt;/p&gt;
&lt;pre&gt;
L'application {0} est perdue.
&lt;/pre&gt;


&lt;p&gt;S'afficherait de la sorte :&lt;/p&gt;
&lt;pre&gt;
Lapplication {0} est perdue.
&lt;/pre&gt;


&lt;p&gt;Sans apostrophe, et sans que la variable n'ait été remplacée, donc !&lt;br /&gt;
Pour ces cas de figure, il suffit d'échapper l'apostrophe avec une autre apostrophe (!) et le tour est joué. Ainsi :&lt;/p&gt;
&lt;pre&gt;
L''application {0} est perdue.
&lt;/pre&gt;


&lt;p&gt;Donnera :&lt;/p&gt;
&lt;pre&gt;
L'application monappli est perdue.
&lt;/pre&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Relooking en masse...</title>
    <link>http://blog.ulysses.fr/index.php/post/25/03/2010/Relooking-en-masse...</link>
    <guid isPermaLink="false">urn:md5:18fa63fbf68f87c89cf9a9c2629cdef5</guid>
    <pubDate>Thu, 25 Mar 2010 08:31:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>WebLand</category>
            
    <description>    &lt;p&gt;Voilà quelque temps, suite à un article lu sur &lt;a href=&quot;http://www.alsacreations.com/&quot; hreflang=&quot;fr&quot;&gt;Alsacréations&lt;/a&gt; sur l'utilisation de HTML5 et de CSS3, je me suis décidé à faire et à mettre en ligne &lt;a href=&quot;http://ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;mon site perso&lt;/a&gt; (adresse qui auparavant ne faisait que lister les sites hébergés sur ce domaine) basé sur ces technologies.&lt;/p&gt;


&lt;p&gt;Les éléments CSS3 utilisés (notamment les couleurs transparentes, arrondis et ombrages) fonctionnent parfaitement sous :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Firefox 3.6&lt;/li&gt;
&lt;li&gt;Epiphany&lt;/li&gt;
&lt;li&gt;Arora&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et donc probablement avec la majorité des navigateurs basés sur Gecko ou Webkit. Comme d'habitude, Internet Explorer est à la traîne, mais le rendu reste tout de même correct (bien que moins joli) sous IE 7 et 8. IE6 quant à lui n'est simplement pas supporté, n'en ayant pas sous la main, je ne sais même pas à quoi ça peut ressembler avec cette antiquité &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Un petit coup de frénésie, et désormais le thème du site est également appliqué à :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la &lt;a href=&quot;http://cv.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;présentation de mon Curriculum Vitae&lt;/a&gt; (&lt;a href=&quot;http://hg.ulysses.fr/curriculum/&quot;&gt;sources&lt;/a&gt;),&lt;/li&gt;
&lt;li&gt;mon &lt;a href=&quot;http://svn.ulysses.fr/web&quot; hreflang=&quot;fr&quot;&gt;dépôt Subversion&lt;/a&gt;  (sources : &lt;a href=&quot;http://svn.ulysses.fr/svnindex.xsl&quot;&gt;XSL&lt;/a&gt;, &lt;a href=&quot;http://svn.ulysses.fr/svnindex.css&quot;&gt;CSS&lt;/a&gt; - plus les liens symboliques vers la CSS principale, le script JS pour IE ainsi que les images de mon site perso),&lt;/li&gt;
&lt;li&gt;mon &lt;a href=&quot;http://hg.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;dépôt Mercurial&lt;/a&gt; (&lt;a href=&quot;http://hg.ulysses.fr/hg_ulysses_theme/&quot;&gt;sources&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Le thème est sous licence &lt;a href=&quot;http://creativecommons.org/licenses/by-nd/3.0/deed.fr&quot; hreflang=&quot;fr&quot;&gt;Creative Commons - Paternité - Pas de modification&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;C'est tout de même bien plus agréable quand tout se « ressemble » :-p&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>HTML5 et XSL...</title>
    <link>http://blog.ulysses.fr/index.php/post/20/03/2010/HTML5-et-XSL...</link>
    <guid isPermaLink="false">urn:md5:72bf7b58cde3c4906a4f77daaccbd4e5</guid>
    <pubDate>Sat, 20 Mar 2010 19:04:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>WebLand</category>
            
    <description>    &lt;p&gt;Suite à la récente mise en ligne de la nouvelle version de &lt;a href=&quot;http://ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;mon site perso&lt;/a&gt;, j'avais décidé d'utiliser également ce thème pour &lt;a href=&quot;http://cv.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;mon Curriculum Vitae&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Mon site perso et mon cv sont désormais tous deux en HTML5, et basés sur le même thème &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Côté technique, j'ai utilisé Smarty pour mon site perso, aucun souci. Pour mon CV, j'ai utilisé XSLT, et c'est là que j'ai eu un petit problème... En effet, la déclaration doctype HTML5 est la suivante :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;!DOCTYPE html&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Super... Sauf que, en XSL, pour générer un doctype, il faut avoir recours à l'un ou l'autre (ou les deux en même temps) des attributs &lt;code&gt;doctype-public&lt;/code&gt; et &lt;code&gt;doctype-system&lt;/code&gt; de la balise &lt;a href=&quot;http://www.w3schools.com/xsl/el_output.asp&quot; hreflang=&quot;en&quot;&gt;xsl:output&lt;/a&gt;. Pour une déclaration XHTML 1.1, on aurait donc :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; doctype-public=&amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; doctype-system=&amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; indent=&amp;quot;yes&amp;quot; omit-xml-declaration=&amp;quot;yes&amp;quot;  /&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et en sortie :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.1//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&amp;quot;&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Si les attributs &lt;code&gt;doctype-public&lt;/code&gt; et &lt;code&gt;doctype-system&lt;/code&gt; sont tous deux absents, aucune déclaration de doctype ne sera rendue en sortie. On peut envisager de mettre une valeur vide, mais en sortie, on aura &lt;code&gt;&amp;quot;&amp;quot;&lt;/code&gt; (alors que dans le cas de HTML5 ; on ne veut rien !).&lt;/p&gt;


&lt;p&gt;Les spécifications actuelles de HTML5 fournissent une alternative via la &lt;a href=&quot;http://dev.w3.org/html5/spec/Overview.html#doctype-legacy-string&quot; hreflang=&quot;en&quot;&gt;DOCTYPE legacy string&lt;/a&gt;) :&lt;/p&gt;


&lt;blockquote&gt;&lt;p&gt;The DOCTYPE legacy string should not be used unless the document is generated from a system that cannot output the shorter string.&lt;/p&gt;&lt;/blockquote&gt;


&lt;p&gt;En français, grossièrement : à n'utiliser que s'il est impossible au système de générer une chaîne plus courte. C'est mon cas ! Super ! J'achète ! &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;
Dans la XSL, on pourra donc mettre :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;xsl:output method=&amp;quot;xml&amp;quot; doctype-system=&amp;quot;about:legacy-compat&amp;quot; encoding=&amp;quot;UTF-8&amp;quot; indent=&amp;quot;yes&amp;quot; omit-xml-declaration=&amp;quot;yes&amp;quot;  /&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et ainsi obtenir en sortie :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;!DOCTYPE html SYSTEM &amp;quot;about:legacy-compat&amp;quot;&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et voilà qui m'a sauvé la mise, j'ai du mal à voir comment j'aurai pu utiliser une feuille de style CSS commune sur une page en XHTML 1 et une autre en HTML5 &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Installer Redmine 0.9 sur CentOS</title>
    <link>http://blog.ulysses.fr/index.php/post/16/03/2010/Installer-Redmine-0.9-sur-CentOS</link>
    <guid isPermaLink="false">urn:md5:eebbf2564f1e230f39caf2150806fad7</guid>
    <pubDate>Tue, 16 Mar 2010 22:36:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>&lt;p&gt;Pour les besoins du boulot, je me suis récemment plongé dans les différents logiciels de gestion de projets. J'en avais sorti quelques uns du lot en fonction de critères qui nous sont propres, à savoir : &lt;a href=&quot;http://www.redmine.org/&quot; hreflang=&quot;en&quot;&gt;Redmine&lt;/a&gt;, &lt;a href=&quot;http://www.dotproject.net/&quot; hreflang=&quot;en&quot;&gt;DotProject&lt;/a&gt;, &lt;a href=&quot;http://collabtive.o-dyn.de/&quot; hreflang=&quot;en&quot;&gt;Collabtive&lt;/a&gt;, ...&lt;br /&gt;
Une seconde, puis une troisième sélection ont laissé en lice Redmine et DotProject.&lt;/p&gt;


&lt;p&gt;DotProject - en dehors de son interface pour le moins vieillotte - avait semblé répondre à nos attentes, mais voilà : la dernière version stable n'est pas compatible PHP 5.3, et la branche 2.0 du logiciel ne semble plus évoluer au profit de la future version 3 qui sera basée sur Zend Framework. Cette ré-écriture n'en est qu'à son tout début. Pas très engageant que tout cela...&lt;/p&gt;


&lt;p&gt;Redmine de son côté semble bénéficier d'un développement très régulier, et d'une communauté relativement importante et vivante. Un hic : c'est du ruby-on-rails ; et je ne connais pas le moins du monde cette technologie.&lt;/p&gt;


&lt;p&gt;Autre « souci » à prendre en considération, le serveur sur lequel devra tourner cette application est sous CentOS et non sous Fedora ; je vais y revenir sous peu...&lt;/p&gt;    &lt;p&gt;Donc, je me lance, je récupère une version 0.8 de Redmine que j'essaie d'installer sur mon PC du boulot, en Fedora 12. Pas trop de problèmes à noter, j'ai balbutié un peu et me suis complètement cassé les dents lorsque j'ai voulu brancher apache sur l'installation...&lt;/p&gt;


&lt;p&gt;Entre temps, je découvre qu'&lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=499959&quot; hreflang=&quot;en&quot;&gt;une demande de revue a été faite sur le Bugzilla pour redmine&lt;/a&gt; ! Youpi &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt; En y regardant de plus près, la page des &lt;a href=&quot;http://www.redmine.org/wiki/redmine/RedmineInstall&quot; hreflang=&quot;en&quot;&gt;pré-requis de Redmine&lt;/a&gt; m'apprend que la version de Rails de Fedora 12 n'est pas suffisante (2.3.4) ; de même que la version de Rack (1.0.0). Je vérifie sous Fedora 13, on a un Rails en 2.3.5 et un Rack en 1.1.0. Ça devrait aller.&lt;/p&gt;


&lt;p&gt;Oui, mais... ça devrait &lt;img src=&quot;/themes/default/smilies/confused.png&quot; alt=&quot;:-/&quot; class=&quot;smiley&quot; /&gt; La version de Rack requise est la version 1.0.1, strictement. Ni la version 1.0.0, ni la version 1.1.0 ne fonctionnent ! En local et à des fins de tests, il est toujours possible d'installer la bonne version du composant avec la commande :&lt;/p&gt;
&lt;pre&gt;
$ gem install rack -v 1.0.1
&lt;/pre&gt;


&lt;p&gt;Il est bien entendu hors de question que je lance une telle commande avec un utilisateur privilégié, la bonne version de rack reste donc installée sur un compte utilisateur local ; du coup, l'intégration dans apache ne fonctionne pas (ben oui, la version système de rack n'est pas la bonne, suivez un peu &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt; ). Un petit coup d'oeil sur ma CentOS m'apprend que de ce côté je ne dispose pas non plus de la bonne version de Ruby, etc. Y'a plus qu'à ; comme dirait l'autre.&lt;/p&gt;


&lt;p&gt;Dans un premier temps, je crée un utilisateur dédié à ce service :&lt;/p&gt;
&lt;pre&gt;
# useradd -r -m redmine
&lt;/pre&gt;


&lt;p&gt;Ensuite, je récupère la dernière version du trunk de Redmine (récupérer cette version n'est pas une obligation, bien loin de là ; mais l'intégration il y a quelques jours de la notion de sous-tâches directement dans Redmine m'intéressait au plus haut point :-p ).&lt;/p&gt;
&lt;pre&gt;
$ svn co http://redmine.rubyforge.org/svn/trunk ./redmine
&lt;/pre&gt;


&lt;p&gt;Voyons à installer les versions de Ruby et consorts dont nous avons besoin. J'ai re-compilé un certain nombre de paquets sur mon dépôt personnel EL5 (en version 64bits uniquement) à cet effet :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ruby&lt;/li&gt;
&lt;li&gt;rubygems&lt;/li&gt;
&lt;li&gt;rubygem-actionmailer&lt;/li&gt;
&lt;li&gt;rubygem-actionpack&lt;/li&gt;
&lt;li&gt;rubygem-activerecord&lt;/li&gt;
&lt;li&gt;rubygem-activeresource&lt;/li&gt;
&lt;li&gt;rubygem-activesupport&lt;/li&gt;
&lt;li&gt;rubygem-fcgi&lt;/li&gt;
&lt;li&gt;rubygem-mocha&lt;/li&gt;
&lt;li&gt;rubygem-rack&lt;/li&gt;
&lt;li&gt;rubygem-rails&lt;/li&gt;
&lt;li&gt;rubygem-sqlite3-ruby&lt;/li&gt;
&lt;li&gt;ruby-mysql&lt;/li&gt;
&lt;li&gt;ruby-RMagick&lt;/li&gt;
&lt;li&gt;ImageMagick-6.5.8.10&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour bénéficier de ces versions, vous pouvez soit les récupérer sur mon dépôt à l'adresse http://rpms.ulysses.fr/el5/x86_64/ ; soit installer mon dépôt :&lt;/p&gt;
&lt;pre&gt;
# rpm -ivh http://rpms.ulysses.fr/el5/x86_64/trashy-release-el5-1.noarch.rpm
&lt;/pre&gt;


&lt;p&gt;Pour ensuite installer les programmes (ruby-RMagick n'est requis que pour l'export PNG des diagrammes de Gantt. Vous pouvez l'omettre si cette fonctionnalité ne vous est pas utile &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt; ) :&lt;/p&gt;
&lt;pre&gt;
# yum --enablerepo=trashy install rubygem-rails ruby-mysql ruby-RMagick
&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;/!\ ATTENTION /!\ Ce dépôt personnel est intrusif et remplace des paquets de base de CentOS. Ne l'activez pas par défaut, ou alors à vos risques et périls.&lt;/strong&gt;&lt;/p&gt;


&lt;p&gt;Nous voilà parés ; tous les composants logiciels sont présents, nous pouvons procéder à l'installation. Dans un premier temps, créons notre base MySQL (PostgreSQL est également supporté, référez-vous à la documentation de Redmine pour connaître la procédure à suivre) :&lt;/p&gt;
&lt;pre&gt;
$ mysql -u root -p
mysql&amp;gt; create database redmine character set utf8;
mysql&amp;gt; create user 'redmine'@'localhost' identified by 'my_password';
mysql&amp;gt; grant all privileges on redmine.* to 'redmine'@'localhost';
mysql&amp;gt; flush privileges;
&lt;/pre&gt;


&lt;p&gt;Depuis le dossier où vous avez stocké votre Redmine (&lt;code&gt;/var/www/redmine&lt;/code&gt; dans mon cas), copiez le fichier &lt;code&gt;config/database.yml.example&lt;/code&gt; vers &lt;code&gt;config/database.yml&lt;/code&gt; puis éditez-le de la sorte :&lt;/p&gt;
&lt;pre&gt;
production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmine
  password: my_password
  encoding: utf8
  socket: /var/lib/mysql/mysql.sock
&lt;/pre&gt;


&lt;p&gt;Les variables sont bien entendu à renseigner en fonction des choix que vous avez faits. Notez l'ajout de l'entrée &lt;em&gt;socket&lt;/em&gt; sans laquelle je m'étais heurté à de jolies erreurs (il semblerait que ce soit un bogue d'un des composants ruby).&lt;br /&gt;
Redmine permet l'utilisation de diverses instances (production, développement, ...). Vous devrez donc dupliquer les informations relatives à la base dans les différentes instances que vous souhaitez utiliser. Une fois de plus, référez-vous à la documentation de Redmine pour en savoir plus à ce sujet.&lt;/p&gt;


&lt;p&gt;Puisque j'ai utilisé une version SVN ultérieure à la révision 3055 ; j'ai eu à lancer la commande :&lt;/p&gt;
&lt;pre&gt;
$ rake generate_session_store
&lt;/pre&gt;


&lt;p&gt;Initialisons ensuite la base de données, et profitons-en pour y placer quelques données par défaut :&lt;/p&gt;
&lt;pre&gt;
$ RAILS_ENV=production rake db:migrate
(in /var/www/redmine)
==  Setup: migrating ==========================================================
-- create_table(&amp;quot;attachments&amp;quot;, {:force=&amp;gt;true})
   -&amp;gt; 0.0812s
[...]
$ RAILS_ENV=production rake redmine:load_default_data
(in /var/www/redmine)

Select language: bg, bs, ca, cs, da, de, el, en, es, eu, fi, fr, gl, he, hr, hu, id, it, ja, ko, lt, nl, no, pl, pt, pt-BR, ro, ru, sk, sl, sr, sv, th, tr, uk, vi, zh, zh-TW [en] fr
====================================
Default configuration data loaded.
&lt;/pre&gt;


&lt;p&gt;Fort bien ! Nous avons désormais une installation de Redmine fonctionnelle &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt; Certains répertoires doivent être accessibles en écriture, mais le checkout svn ayant été fait avec l'utilisateur &lt;em&gt;redmine&lt;/em&gt; qui se chargera de lancer le serveur de tests, nous n'avons pas à nous en préoccuper... Lançons donc ce fameux serveur :&lt;/p&gt;
&lt;pre&gt;
$ ruby script/server webrick -e production
=&amp;gt; Booting WEBrick
=&amp;gt; Rails 2.3.5 application starting on http://0.0.0.0:3000
=&amp;gt; Call with -d to detach
=&amp;gt; Ctrl-C to shutdown server
[2010-03-16 20:15:58] INFO  WEBrick 1.3.1
[2010-03-16 20:15:58] INFO  ruby 1.8.6 (2010-01-11) [x86_64-linux]
[2010-03-16 20:15:58] INFO  WEBrick::HTTPServer#start: pid=14469 port=3000
&lt;/pre&gt;


&lt;p&gt;Et voilà ; en vous connectant à http://monhote:3000 vous accéderez à votre instance Redmine. &lt;em&gt;admin&lt;/em&gt; est le login et le mot de passe par défaut. Vous aurez peut-être à ouvrir le port 3000 pour la durée de ce test, ne l'oubliez pas &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Vient ensuite la mise en ligne de l'application... À des fins de tests, je me suis risqué à essayer une technique très peu orthodoxe depuis apache... Mais qui n'a pas fonctionné comme escompté. Voici le fichier de configuration que j'avais utilisé (en substance) :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;VirtualHost *:80&amp;gt;
  ServerName redmine.mondomaine.com

  ErrorLog /var/log/httpd/redmine_error_log
  AccessLog /var/log/httpd/redmine_access_log combined

  ProxyPass / http://localhost:3000/
  ProxyPassReverse / http://localhost:3000/
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Un peu barbare, certes, mais c'était pour tester « rapidement ». Cette configuration a d'ailleurs fonctionné... Sur certains postes &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt; Sur d'autres, j'avais la page de login correcte ; et une fois loggué ; plus de CSS ni de JS. Pas top donc. J'ai décidé de pousser le test plus loin, et d'utiliser le &lt;em&gt;mod_fcgid&lt;/em&gt; pour accéder à cette application. Il faudra pour ce faire installer les composants qui vont bien :&lt;/p&gt;
&lt;pre&gt;
# yum --enablerepo=trashy install mod_fcgid rubygem-fcgi
&lt;/pre&gt;


&lt;p&gt;Créons ensuite le fichier de configuration apache qui va bien (&lt;code&gt;/etc/httpd/conf.d/redmine.mondomaine.com.conf&lt;/code&gt; par exemple) :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;VirtualHost *:80&amp;gt;
        ServerName redmine.mondomaine.com

        # Logs :
        ErrorLog /var/log/httpd/redmine_errors.log
        CustomLog /var/log/httpd/redmine_access.log combined

        # Dossier contenant les pages
        DocumentRoot /var/www/redmine/public/

        &amp;lt;Directory /var/www/redmine/public/&amp;gt;
                Options Indexes ExecCGI FollowSymLinks
                Order allow,deny
                Allow from All
                AllowOverride All
        &amp;lt;/Directory&amp;gt;
&amp;lt;/VirtualHost&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Côté redmine, copiez le fichier fcgi d'exemple vers sa destination finale :&lt;/p&gt;
&lt;pre&gt;
$ cp public/dispatch.fcgi.example public/dispatch.fgci
&lt;/pre&gt;


&lt;p&gt;Attribuons maintenant les droits adéquats aux dossiers :&lt;/p&gt;
&lt;pre&gt;
# cd /var/www/redmine
# chown -R apache:redmine files log tmp public/plugin_assets
# chown -R redmine: files/.svn log/.svn tmp/.svn
&lt;/pre&gt;


&lt;p&gt;N'oubliez pas de spécifier ensuite quelle instance de Redmine devra être démarrée (production, development, ...). Pour ce faire, éditez le fichier &lt;code&gt;config/environment.rb&lt;/code&gt; puis décommentez (et éditez au besoin) la ligne :&lt;/p&gt;
&lt;pre&gt;
ENV['RAILS_ENV'] ||= 'production'
&lt;/pre&gt;


&lt;p&gt;Pour vérifier que ça ne va pas vous claquer de suite entre les doigts, essayez simplement de lancer le dispatch.fcgi en ligne de commande (vous pouvez ignorer sereinement les erreurs sur les accès aux fichiers de log pour l'heure) :&lt;/p&gt;
&lt;pre&gt;
$ /var/www/redmine/public/dispatch.fcgi
&lt;/pre&gt;


&lt;p&gt;Enfin, une fois que tout est OK, relancez votre serveur apache :&lt;/p&gt;
&lt;pre&gt;
# service httpd restart
&lt;/pre&gt;


&lt;p&gt;Et admirez le résultat &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Il m'est arrivé, en fonction des configurations, que ça ne fonctionne pas comme escompté... Dans ce cas, l'une des premières choses à faire, est de commenter les &lt;code&gt;ifModule&lt;/code&gt; (et leur contenu, évidemment) pour les &lt;em&gt;mod_cgi&lt;/em&gt; &lt;em&gt;mod_fastcgi&lt;/em&gt; ; ça ma « sauvé la vie » &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>GCompris 9.1 sur Fedora !</title>
    <link>http://blog.ulysses.fr/index.php/post/26/01/2010/GCompris-9.1-sur-Fedora-%21</link>
    <guid isPermaLink="false">urn:md5:e315b4a4d94974c8dea5133774543e44</guid>
    <pubDate>Tue, 26 Jan 2010 17:59:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;La version 9.1 de l'&lt;a href=&quot;http://gcompris.net&quot;&gt;excellent logiciel éducatif GCompris&lt;/a&gt; est disponible dans le dépôt &amp;quot;updates-testing&amp;quot; pour Fedora 11 et 12.&lt;/p&gt;


&lt;p&gt;Cette version corrige de nombreux bogues présents dans la version 9.0 ; je vous invite à l'installer, à le tester, à le noter dans bodhi (pour &lt;a href=&quot;https://admin.fedoraproject.org/updates/F12/FEDORA-2010-0988&quot; hreflang=&quot;en&quot;&gt;Fedora 12&lt;/a&gt; et pour &lt;a href=&quot;https://admin.fedoraproject.org/updates/gcompris-9.1-2.fc11&quot; hreflang=&quot;en&quot;&gt;Fedora 11&lt;/a&gt;), et à reporter les éventuels problèmes, améliorations ou autres &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Pour l'installer :&lt;/p&gt;
&lt;pre&gt;
$ su -lc 'yum --enablerepo=updates-testing install gcompris gcompris-sound-fr'
&lt;/pre&gt;


&lt;p&gt;Pour la mise à jour, remplacez « install » par « update » dans la précédente commande. Les sons sont disponibles dans plus de 20 langues, si vous voulez entendre autre chose que du français.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>GCompris 9.0</title>
    <link>http://blog.ulysses.fr/index.php/post/07/01/2010/GCompris-9.0</link>
    <guid isPermaLink="false">urn:md5:b3870a8a6cee0b731a53f52e951069ff</guid>
    <pubDate>Thu, 07 Jan 2010 21:06:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;La toute dernière mouture du &lt;a href=&quot;http://gcompris.net/-fr-&quot; hreflang=&quot;fr&quot;&gt;logiciel éducatif GCompris&lt;/a&gt; est disponible.&lt;/p&gt;


&lt;p&gt;Pour ceux qui ne connaissent pas, GCompris est un logiciel éducatif qui propose énormément d'activités éducatives variées aux enfants de plus de deux ans (ma fille n'a que 18 mois, mais nombre d'activités la font déjà bien rire ; gageons qu'elle appréciera GCompris en temps utile &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt; ).&lt;/p&gt;


&lt;p&gt;Cette nouvelle mouture apporte de nombreuses corrections et améliorations, je vous laisse lire &lt;a href=&quot;http://sourceforge.net/mailarchive/message.php?msg_name=1262562622.2645.43.camel%40bruno&quot; hreflang=&quot;fr&quot;&gt;l'annonce officielle de la sortie de GCompris 9.0&lt;/a&gt; pour les détails.&lt;/p&gt;


&lt;p&gt;N'hésitez pas à participer au projet, que ce soit d'un point de vue idées, développement, ou simplement en le testant ! D'ailleurs, pour le dernier point, la version 9.0 de GCompris sera sous peu disponible dans les dépôts testing pour Fedora 12 (la version pour Fedora 11 n'a pas compilé malheureusement) ; n'hésitez pas à tester ces versions et à me remonter les soucis que vous rencontreriez !&lt;/p&gt;


&lt;p&gt;Un grand coup de chapeau à l'équipe de GCompris pour leur formidable travail depuis tant d'années &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Pour les impatients, les paquets pour Fedora 12 sont dores et déjà disponibles su Koji : http://koji.fedoraproject.org/koji/taskinfo?taskID=1908061&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Curriculum Vitae en PDF : au régime sans sel !</title>
    <link>http://blog.ulysses.fr/index.php/post/04/01/2010/Curriculum-Vitae-en-PDF-%3A-au-r%C3%A9gime-sans-sel-%21</link>
    <guid isPermaLink="false">urn:md5:57fc1418b53ad060cb12d0c1c0698036</guid>
    <pubDate>Mon, 04 Jan 2010 19:55:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>TrashyLand</category>
            
    <description>    &lt;p&gt;« Comme je n'ai pas trouvé ça sur internet... » (Merci à &lt;em&gt;pingou&lt;/em&gt; pour cette superbe introduction...)&lt;/p&gt;


&lt;p&gt;Mais je m'égare, expliquons auparavant les faits. J'ai passé pas mal de temps ce week-end à refaire mon &lt;a href=&quot;http://cv.ulysses.fr&quot; hreflang=&quot;fr&quot;&gt;Curriculum Vitae&lt;/a&gt; ; tant du point de vue technique que du point de vue contenu.&lt;/p&gt;


&lt;p&gt;La chose est stockée dans un fichier XML ; la version HTML est présentée à l'aide d'une transformation XSLT assurée par PHP, la version PDF à l'aide de &lt;a href=&quot;http://www.tcpdf.org&quot; hreflang=&quot;en&quot;&gt;TCPDF&lt;/a&gt;.&lt;br /&gt;
L'ancienne version PDF utilisait une police de caractères qui n'était malheureusement pas libre. J'ai donc décidé d'utiliser dorénavant &lt;a href=&quot;http://dejavu-fonts.org&quot; hreflang=&quot;en&quot;&gt;DejaVu&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Jusque là, rien de bien problématique me direz-vous, et vous avez parfaitement raison. Mais (oui, il y a un « mais »)... La nouvelle version PDF pèse 1004Ko, ce qui est beaucoup trop.&lt;/p&gt;


&lt;p&gt;Une solution simple glanée sur le web consiste à utiliser les commandes ghostscript prévues à cet effet : &lt;code&gt;pdf2ps&lt;/code&gt; et &lt;code&gt;ps2pdf&lt;/code&gt;. Je me lance :&lt;/p&gt;
&lt;pre&gt;
$ pdf2ps cv.pdf cv.ps
$ ps2pdf cv.ps cv_light.pdf
&lt;/pre&gt;


&lt;p&gt;Le résultat, un fichier de 116Ko. Très bien ! Mais ce nouveau fichier n'inclus pas les polices de caractères utilisées, le rendu en serait donc parfaitement escamoté sur les plates-formes n'en disposant pas :&lt;/p&gt;
&lt;pre&gt;
$ pdffonts cv_light.pdf
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
&lt;/pre&gt;


&lt;p&gt;Une brève discussion sur IRC m'apprend qu'un ou deux petits paramètres supplémentaires à la commande &lt;code&gt;ps2pdf&lt;/code&gt; me seraient fort utiles. Je tente donc à nouveau :&lt;/p&gt;
&lt;pre&gt;
$ ps2pdf -dEmbedAllFonts=true -dUseFlateCompression=true -dOptimize=true cv.ps cv_light.pdf
&lt;/pre&gt;


&lt;p&gt;Même résultat, pas de police embarquée dans mon PDF (mais, que fait la police ?). Après moult recherches, c'est finalement &lt;em&gt;Pikachu_2015&lt;/em&gt; qui a trouvé la solution (mille mercis à lui - et encore c'est peu !) pour son aide qui, une fois de plus, s'avère fort précieuse : en utilisant la commande &lt;code&gt;pdftops&lt;/code&gt; en lieu et place de &lt;code&gt;pdf2ps&lt;/code&gt; et le problème n'existe plus !&lt;/p&gt;
&lt;pre&gt;
$ du -sh cv.pdf
1004K	cv.pdf
$ pdftops cv.pdf cv.ps
$ ps2pdf -dEmbedAllFonts=true -dUseFlateCompression=true -dOptimize=true cv.ps cv_light.pdf
$ pdffonts cv_light.pdf 
name                                 type              emb sub uni object ID
------------------------------------ ----------------- --- --- --- ---------
WBKNZC+DejaVuSans-Bold_00            TrueType          yes yes no       8  0
LNOFXB+DejaVuSans_00                 TrueType          yes yes no      10  0
IVPSUP+DejaVuSans-Oblique_00         TrueType          yes yes no      12  0
$ du -sh cv_light.pdf 
44K	cv_light.pdf
&lt;/pre&gt;


&lt;p&gt;Et voilà ! En espérant que cette petite astuce pourra servir à d'autres. Il est probable que l'utilisation d'options adéquates passées à &lt;code&gt;pdf2ps&lt;/code&gt; renverraient le même résultat, mais je ne les ai pas trouvées. &lt;br /&gt;
Prochaine étape : réussir à faire maigrir le fichier PDF généré par PHP directement...&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Migration VMWare vers KVM</title>
    <link>http://blog.ulysses.fr/index.php/post/19/12/2009/Migration-VMWare-vers-KVM</link>
    <guid isPermaLink="false">urn:md5:8d6d441def9f779219dce37771eb66d4</guid>
    <pubDate>Sun, 03 Jan 2010 21:34:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;Pour les besoins de mon travail, j'avais dû, il y a plus d'un an, mettre en place un système de virtualisation sur l'un de nos serveurs (qui tourne sous CentOS 5).&lt;/p&gt;


&lt;p&gt;Je m'étais à l'époque tourné vers VMWare server, qui a rempli son office jusqu'ici. Seulement voilà, le module noyau refuse de se compiler aujourd'hui, et je trouve que le client graphique laisse fort à désirer : les touches du clavier ne sont pas mappées correctement, nous avons régulièrement des gels (voire des plantages !) du serveur Xorg sur les postes clients lorsque nous l'utilisons, .... Si nous n'avions virtualisé que des systèmes Linux, cela ne poserait pas vraiment de problèmes, mais ce n'est malheureusement pas le cas.&lt;/p&gt;


&lt;p&gt;Aujourd'hui, KVM est disponible sous CentOS, je me suis donc attelé à son installation et à sa configuration. Comme d'habitude, un petit &lt;code&gt;yum install&lt;/code&gt; suffit, pas de soucis notables de ce côté là. Restait à migrer les machines virtuelles existantes sous VMWare vers KVM.&lt;/p&gt;


&lt;p&gt;Nous avons trois machines virtuelles qu'il fallait migrer :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;une Mandriva Corporate Server 4 en 32 bits&lt;/li&gt;
&lt;li&gt;une CentOS 5 en 64 bits&lt;/li&gt;
&lt;li&gt;un Windows XP en 64 bits&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La solution réside en l'utilisation de &lt;code&gt;virt-convert&lt;/code&gt; qui prend en entrée le dossier de la VM VMWare, et qui ressort une image et un fichier de configuration pour libvirt. La syntaxe est la suivante :&lt;/p&gt;
&lt;pre&gt;
# virt-convert /var/lib/vmware/Virtual\ Machines/CentOS5 /home/vms/CentOS5
&lt;/pre&gt;


&lt;p&gt;Lancée telle quelle, cette commande faisait plus ou moins son travail : j'avais bien le fichier de configuration XML et un disque au format RAW, mais ce disque était vide !&lt;br /&gt;
Je ne sais pas trop si c'est dû à l'utilisation de fichiers successifs de 2Go pour le disque, ou encore à l'allocation dynamique de l'espace ; toujours est-il que &lt;code&gt;virt-convert&lt;/code&gt; ne parvenait pas à s'y retrouver.&lt;/p&gt;


&lt;p&gt;Fort heureusement, VMWare fournit la commande &lt;code&gt;vmware-vdiskmanager&lt;/code&gt; qui m'a permis de solutionner mon problème :&lt;/p&gt;
&lt;pre&gt;
# cd /var/lib/vmware/Virtual\ Machines/CentOS5
# vmware-vdiskmanager -r CentOS5.vmdk -t 0 CentOS5-copy.vmdk
Creating disk 'CentOS5-copy.vmdk'
  Convert: 49% done.
&lt;/pre&gt;


&lt;p&gt;Une fois la conversion du disque terminée, recréons un dossier qui contiendra les données que l'on va migrer :&lt;/p&gt;
&lt;pre&gt;
# cd /var/lib/vmware/Virtual\ Machines
# mkdir mig_CentOS5
# mv CentOS5/CentOS5-copy.vmdk mig_CentOS5/CentOS5.vmdk
# cp -av CentOS5/CentOS5.vmx* mig_CentOS5/
&lt;/pre&gt;


&lt;p&gt;Nous obtenons ainsi le dossier &lt;code&gt;/var/lib/vmware/Virtual\ Machines/mig_CentOS5&lt;/code&gt; que nous allons pouvoir migrer avec &lt;code&gt;virt-convert&lt;/code&gt; :&lt;/p&gt;
&lt;pre&gt;
# virt-convert -o virt-image /var/lib/vmware/Virtual\ Machines/mig_CentOS5 /home/vms/CentOS5
Generating output in 'virt-image' format to /home/vms/CentOS5
Converting disk 'CentOS5.vmdk' to type raw...
Converting disk '/dev/hda' to type raw...
Done.
&lt;/pre&gt;


&lt;p&gt;Super, on a désormais une machine virtuelle utilisable &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt; Le dossier &lt;code&gt;/var/lib/vmware/Virtual\ Machines/mig_CentOS5&lt;/code&gt; n'est plus utile, on peut le supprimer sans état d'âme aucun.&lt;/p&gt;


&lt;p&gt;Reste un petit point de détail : la référencer dans votre système. La commande &lt;code&gt;virsh&lt;/code&gt; permet cela normalement, mais le fichier XML généré par &lt;code&gt;virt-convert&lt;/code&gt; ne lui plaira pas. Utilisons donc la commande &lt;code&gt;virt-image&lt;/code&gt; de la façon suivante :&lt;/p&gt;
&lt;pre&gt;
virt-image /home/vms/CentOS5/CentOS5.virt-image.xml
&lt;/pre&gt;


&lt;p&gt;Si tout s'est passé comme escompté, cette commande va ajouter la nouvelle machine virtuelle, que vous pourrez alors utiliser comme d'habitude.&lt;/p&gt;


&lt;p&gt;Dans la théorie, tout cela est bien beau ; mais dans la pratique il en est autrement :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la machine CentOS : pas de problème au démarrage, mais l'interface graphique n'a pas réussi à se charger en raison du changement « matériel » de carte graphique. Quelques adaptations dans le xorg.conf ont suffit à corriger le problème, rendant la machine virtuelle à nouveau pleinement opérationnelle.&lt;/li&gt;
&lt;li&gt;la machine Mandriva : kernel panic au lancement &lt;img src=&quot;/themes/default/smilies/sad.png&quot; alt=&quot;:-(&quot; class=&quot;smiley&quot; /&gt; Il est possible qu'en jouant avec les options du noyau je parvienne à la lancer à nouveau, je n'ai cependant pas eu de temps à y consacrer pour le moment.&lt;/li&gt;
&lt;li&gt;la machine Windows : écran bleu. reboot. écran bleu. reboot. En mode normal ou en mode sans échec, ce ne serait pas rigolo sinon ! Bon, celle là ; je crois qu'il va falloir la réinstaller, je ne vois aucune solution...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Conclusion : un taux de réussite de 33%, c'est mieux que rien ; mais on peut en déduire que la migration de machine virtuelles n'est malheureusement pas une science exacte.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>chroot et SSH</title>
    <link>http://blog.ulysses.fr/index.php/post/28/10/2009/chroot-et-SSH</link>
    <guid isPermaLink="false">urn:md5:da0c1b88f164f2232b2ce181cbd6b940</guid>
    <pubDate>Thu, 29 Oct 2009 18:52:00 +0100</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>&lt;p&gt;Il arrive parfois que l'on souhaite avoir recours aux fonctionnalités du &lt;a href=&quot;http://fr.wikipedia.org/wiki/Chroot&quot; hreflang=&quot;fr&quot;&gt;chroot&lt;/a&gt; sur un système...&lt;/p&gt;


&lt;p&gt;Ce terme barbare désigne une façon de faire bien connue sous &lt;a href=&quot;http://fr.wikipedia.org/wiki/File_Transfer_Protocol&quot; hreflang=&quot;fr&quot;&gt;FTP&lt;/a&gt; ; qui consiste à modifier la racine du système pour que l'utilisateur soit restreint à son chroot.&lt;/p&gt;


&lt;p&gt;Pour ceux d'entre vous qui utilisent mock, c'est d'ailleurs comme cela qu'il procède pour construire vos paquets : il installe un système Fedora en chroot sur votre disque. Le système installé devient totalement indépendant, et il est possible de l'utiliser pour lancer des commandes sans affecter le moins du monde votre système principal.&lt;/p&gt;


&lt;p&gt;En &lt;a href=&quot;http://fr.wikipedia.org/wiki/SSH_file_transfer_protocol&quot; hreflang=&quot;fr&quot;&gt;SFTP&lt;/a&gt;, ce système n'existait pas avant la &lt;a href=&quot;http://www.debian-administration.org/articles/590&quot; hreflang=&quot;en&quot;&gt;version 4.8 de OpenSSH&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Bon, voyons un exemple... Je souhaite créer un utilisateur 'pitivier', et lui donner un accès SFTP sur mon serveur. Accessoirement, je souhaite qu'il ne puisse se connecter qu'en SFTP, et pas accéder à un shell via une connexion SSH standard...&lt;/p&gt;    &lt;p&gt;Je vais donc ajouter mon utilisateur ; son dossier personnel sera créé dans &lt;code&gt;/home/pitivier&lt;/code&gt;. Déjà, il pourra se connecter en shell, mais là n'est pas le véritable problème ; car en se connectant en SFTP, l'utilisateur 'pitivier' pourra aussi accéder à d'autres fichiers et dossiers, un peu partout sur le système (en fonction des droits de ces derniers, bien évidemment).&lt;br /&gt;
En bref, l'utilisateur pourra lister tout ce qui se trouve sous &lt;code&gt;/&lt;/code&gt;, &lt;code&gt;/home/&lt;/code&gt;, &lt;code&gt;/etc&lt;/code&gt;... Mais aussi consulter certains des fichiers (dans &lt;code&gt;/etc&lt;/code&gt; par exemple), que 'pitivier' n'est pas censé voir, ou qui ne lui apportent strictement rien &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;L'utilisation d'un système de chroot permet de re-définir la racine du système : si l'on chroot 'pitivier' dans son dossier utilisateur, ce dernier deviendra la racine pour 'pitivier' ! Prenons un exemple :&lt;/p&gt;
&lt;pre&gt;
/home/pitivier/Documents
&lt;/pre&gt;

&lt;p&gt;deviendra, une fois chrooté :&lt;/p&gt;
&lt;pre&gt;
/Documents
&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Super, comment on fait ?&lt;/strong&gt; On y arrive...&lt;/p&gt;


&lt;h2&gt;Configuration de sshd et préparation du système&lt;/h2&gt;


&lt;p&gt;Déjà, on utilisera Fedora, et pas sa petite soeur vieille fille... &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt; En effet, sous CentOS5, l'actuelle version de OpenSSH est la 4.3 ; dans laquelle le système de chroot n'a pas encore été implémenté. Re-compilation ou google-age de RPM existants, à votre guise.&lt;br /&gt;
Fedora 11, pour sa part, embarque la version 5.2 de OpenSSH, et ne nous posera pas le moindre souci.&lt;/p&gt;


&lt;p&gt;Créons dans un premier temps le dossier où tout sera chrooté (on y reviendra par la suite, ne vous inquiétez pas) :&lt;/p&gt;
&lt;pre&gt;
# mkdir --parents /chroot/home
&lt;/pre&gt;


&lt;p&gt;Il est possible de chrooter un ou plusieurs utilisateurs. Nous nous intéresserons ici au second cas de figure, et créerons un groupe dédié aux utilisateurs qui seront chrootés. Nommons-le 'sftponly' :&lt;/p&gt;
&lt;pre&gt;
# groupadd sftponly
&lt;/pre&gt;


&lt;p&gt;Configurons à présent le démon SSH. Éditez le fichier &lt;code&gt;/etc/ssh/sshd_config&lt;/code&gt;, et modifiez comme suit :&lt;/p&gt;
&lt;pre&gt;
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
Subsystem       sftp    internal-sftp
&lt;/pre&gt;


&lt;p&gt;Nous allons maintenant configurer les options de connexion pour le groupe adéquat :&lt;/p&gt;
&lt;pre&gt;
Match group sftponly
       ChrootDirectory /chroot/home/%u
       X11Forwarding no
       AllowTcpForwarding no
       ForceCommand internal-sftp
&lt;/pre&gt;


&lt;p&gt;Quelques explications :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ChrootDirectory&lt;/code&gt; : définit la racine de notre chroot. Ici, nous utiliserons /chroot/home/{nom_de_l_utilisateur}&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ForceCommand&lt;/code&gt; : force la commande sftp ici, ce qui interdit à l'utilisateur la &amp;quot;simple&amp;quot; connexion via SSH&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour le reste des options disponibles, je vous laisse consulter à loisir la documentation de sshd_config.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;À noter : &lt;/strong&gt; le répertoire dans lequel le chroot sera effectif &lt;strong&gt;doit&lt;/strong&gt; appartenir à l'utilisateur root. Dans le cas présent, pour l'utilisateur pitivier, &lt;code&gt;/chroot/home/pitivier&lt;/code&gt; devra appartenir à root :&lt;/p&gt;
&lt;pre&gt;
# chown root.root /chroot/home/pitivier
&lt;/pre&gt;


&lt;p&gt;Dans le cas contraire, le log (&lt;code&gt;/var/log/secure&lt;/code&gt;) ronchonnerait, vous informant que les droits ne seraient pas corrects.&lt;/p&gt;


&lt;p&gt;Bien entendu, une fois le service sshd configuré, pensez à le relancer :&lt;/p&gt;
&lt;pre&gt;
# service sshd restart
&lt;/pre&gt;


&lt;h2&gt;Ajout d'un utilisateur&lt;/h2&gt;


&lt;p&gt;Bon, désormais, le système est configuré, ajoutons notre utilisateur (avec le groupe adéquat, sinon ça ne sert pas à grand chose :-p) :&lt;/p&gt;
&lt;pre&gt;
useradd pitivier -g sftponly
&lt;/pre&gt;


&lt;p&gt;Par défaut sous Fedora, la précédente commande va créer le dossier &lt;code&gt;/home/pitivier&lt;/code&gt;. Il va nous falloir le recopier au bon endroit, cet emplacement ne sera pas utilisé (beh non, puisque l'utilisateur sera chrooté ;-)) :&lt;/p&gt;
&lt;pre&gt;
# mv /home/pitivier /chroot/home/
# chown root.root /chroot/home/pitivier
&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Note : &lt;/strong&gt; si l'envie vous prenait de modifier le répertoire home de l'utilisateur, comme par exemple de la façon suivante :&lt;/p&gt;
&lt;pre&gt;
# usermod --home /mon/repertoire/utilisateur/cool/pitivier
&lt;/pre&gt;


&lt;p&gt;Il faudrait alors créer le répertoire &lt;code&gt;/chroot/mon/repertoire/utilisateur/cool/pitivier&lt;/code&gt;&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;


&lt;p&gt;Désormais, l'utilisateur 'pitivier' ne peut plus se connecter qu'en SFTP, pas en SSH. De plus, il sera confiné à son répertoire personnel.&lt;/p&gt;


&lt;p&gt;Un souci cependant avec cette technique : 'pitivier' n'a pas les droits d'écriture dans &lt;code&gt;/chroot/home/pitivier&lt;/code&gt;... J'ai peut-être (voire même sûrement) loupé quelque chose, mais dans le cas pratique particulier qui m'a intéressé ce jour (et dont je vous fait « profiter »), c'était bien suffisant :-p&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Nouvelle galette : 0.63.2</title>
    <link>http://blog.ulysses.fr/index.php/post/06/10/2009/Nouvelle-galette-%3A-0.63.2</link>
    <guid isPermaLink="false">urn:md5:f43d257b202282aa69ceabeb85ea4cb9</guid>
    <pubDate>Wed, 07 Oct 2009 00:51:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>WorkLand</category>
            
    <description>    &lt;p&gt;J'avais annoncé ici même en début d'année (le 06 Janvier pour être précis) la sortie de Galetre 0.63.&lt;/p&gt;


&lt;p&gt;Depuis - le 21 mai - une version corrective à vu le jour, et je remet le couvert aujourd'hui, avec &lt;a href=&quot;http://download.gna.org/galette/galette-0.63.2.tgz&quot;&gt;Galette 0.63.2&lt;/a&gt; ! Vous pourrez récupérer cette version à l'adresse : http://download.gna.org/galette/galette-0.63.2.tgz&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;Il s'agit principalement d'une version corrective, voici la liste (non exhaustive) des modifications :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;pour la 0.63.1
&lt;ul&gt;
&lt;li&gt;certaines préférences n'étaient pas correctement initialisées à l'installation&lt;/li&gt;
&lt;li&gt;sur certains hébergeurs, les fonctions exif ne sont pas disponibles, on utilise GD dans ce cas (bogue #12836)&lt;/li&gt;
&lt;li&gt;le XHTML était parfois mal formé en raison des sessions PHP (bogue #13071)&lt;/li&gt;
&lt;li&gt;correction de notices PHP dans les logs (patch #1133)&lt;/li&gt;
&lt;li&gt;suppression des fonctions posix qui sont dépréciées dans PHP 5.3&lt;/li&gt;
&lt;li&gt;ajout d'un fichier .htcaccess pour interdire la lecture du dossier des images depuis le web&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;pour la 0.63.2
&lt;ul&gt;
&lt;li&gt;la date de fin d'adhésion était incorrecte pour un exercice (bogue #13010)&lt;/li&gt;
&lt;li&gt;les dons n'apparaissaient pas dans la bonne couleur dans le tableau (bogue #13009)&lt;/li&gt;
&lt;li&gt;les entrées d'historique lors de l'ajout ou de la modification d'une contribution ne comportaient pas le login de l'adhérent - comme c'est le cas lors de l'ajout/la modification d'un adhérent (bogue #13011)&lt;/li&gt;
&lt;li&gt;lors d'une installation sous windows, certains caractères du chemin étaient interprétés - “\n” par exemple (bogue #14162)&lt;/li&gt;
&lt;li&gt;lors de l'enregistrement d'une photo ou d'un logo personnalisé avec un canal PNG transparent, ce canal n'était pas sauvegardé, et l'image se voyait donc attribuer une couleur de fond par défaut (bogue #14327)&lt;/li&gt;
&lt;li&gt;l'ajout de restrictions (depuis la 0.63.1) sur l'affichage des photos envoyées empêchait tout logo personnalisé de s'afficher correctement (bogue #14442)&lt;/li&gt;
&lt;li&gt;lorsque l'on modifiait la langue d'un adhérent, la session courante se trouvait traduite dans cette langue (bogue #14443)&lt;/li&gt;
&lt;li&gt;certains caractères, comme les apostrophes, étaient mal encodés dans le sujet des mailings (bogue #14449)&lt;/li&gt;
&lt;li&gt;l'envoi de mail était toujours tenté, même si la fonctionnalité avait été désactivée dans les préférences (bogue #14450)&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Je ne suis pas forcément mécontent des améliorations apportées à cette version, mais il faut tout de même avouer que c'est un peu léger... &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/19/05/2007/Reprise-de-Galette-Gestion-dadherents-pour-associations-en-PHP/MySql&quot; hreflang=&quot;fr&quot;&gt;En deux ans de Galette&lt;/a&gt; (et, oui, cela fait déjà deux ans...) j'ai tout de même fait un peu plus que cela, mais sans encore avoir eu l'occasion (ou le courage, peut-être) de sortir une nouvelle version).&lt;/p&gt;


&lt;p&gt;La prochaine version de Galette sera entièrement récrite en php5/objet, possèdera de nombreuses nouvelles fonctionnalités (dont je n'ai pas forcément la paternité - nous rendrons à César ce qui lui appartient en temps voulu) ; ainsi qu'un nouveau design (pas à la hauteur du &lt;a href=&quot;http://galette.tuxfamily.org&quot; hreflang=&quot;fr&quot;&gt;récent changement de design du site&lt;/a&gt;, mais ce sera déjà pas mal :-D).&lt;/p&gt;


&lt;p&gt;Pour vous, fidèles lecteurs ( ! &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt; ), une nouveauté presque en primeur (beh oui, les listes de Galette ont les vraies primeurs...) :  j'ai commencé l'intégration d'un système de plugins dans Galette, qui demanderait à être bien amélioré : mais qui m'a déjà permis (sur une demande spécifique) de développer un plugin pour la gestion de clubs automobiles. En espérant que ce sera utile au plus grand nombre ! Prochaine étape côté plugins : un plugin Sport qui reprendrait les fonctionnalités de feu Galette-sport, que je n'ai pas eu l'occasion de faire évoluer depuis que je me suis retrouvé propulsé à la tête du projet... Amis sportifs, je pense à vous (je vais même au boulot en vélo tous les jours désormais !!! ;-)).&lt;/p&gt;


&lt;p&gt;Voilà les quelques news du pays enchanté de Galette, @ bientôt !&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>tuxmath dans les dépôts Fedora</title>
    <link>http://blog.ulysses.fr/index.php/post/12/06/2009/tuxmath-dans-les-d%C3%A9p%C3%B4ts-Fedora</link>
    <guid isPermaLink="false">urn:md5:8dbb2e0a5a460915455bae7f9589a2a7</guid>
    <pubDate>Fri, 12 Jun 2009 08:31:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;Il y a quelque temps, je vous parlais ici même de &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/17/05/2009/tuxtype2-et-tuxmath&quot; hreflang=&quot;fr&quot;&gt;l'empaquetage de tuxmath&lt;/a&gt;, un logiciel éducatif.&lt;/p&gt;


&lt;p&gt;Grâce aux conseils de Bouska, j'avais décidé de &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=501223&quot; hreflang=&quot;en&quot;&gt;proposer l'inclusion de tuxmath aux dépôts officiels de Fedora&lt;/a&gt;, la revue a été acceptée, le paquet envoyé sur le CVS et les builds lancés &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Côté tuxtype, j'ai &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=477472#c5&quot; hreflang=&quot;en&quot;&gt;proposé un patch correctif pour la mise à jour vers la dernière version&lt;/a&gt;, ainsi que pour respecter les règles inhérentes aux polices de caractères fournies directement par les logiciels. J'ai également (à l'instant) demandé à être co-mainteneur de ce paquet. Wait and see &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;tuxmath devrait arriver dans les dépôts sous peu, en updates-testing dans un premier temps, puis assez rapidement en stable si quelques personnes font des retours de tests positifs.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Un très, très beau cadeau... Maintenant consommé !</title>
    <link>http://blog.ulysses.fr/index.php/post/30/05/2009/Un-tr%C3%A8s%2C-tr%C3%A8s-beau-cadeau...-Maintenant-consomm%C3%A9-%21</link>
    <guid isPermaLink="false">urn:md5:d551b873807e7efe1d5cfd2c4374e1f3</guid>
    <pubDate>Sat, 30 May 2009 18:46:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>&lt;p&gt;À l'occasion du sommet européen des développeurs OpenSource (FOSDEM) 2008, plusieurs de mes amis qui ont un point commun en leur participation à la communauté francophone de Fedora nous avaient offert &lt;a href=&quot;http://blog.ulysses.fr/index.php/post/25/02/2008/Un-tres-tres-beau-cadeau&quot; hreflang=&quot;fr&quot;&gt;un très beau cadeau (un coffret Smartbox Escapade Gourmande)&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Ce cadeau nous avait fait grand plaisir, à ma moitié et moi-même, et nous avions décidé d'un commun accord de se le garder sous le coude pour l'occasion.&lt;/p&gt;


&lt;p&gt;Et bien voilà, l'occasion est arrivée !!&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Ma dulcinée, ma fille et moi tenons à remercier encore et encore l'ensemble des personnes qui ont participé à ce magnifique cadeau !&lt;/strong&gt;&lt;/p&gt;    &lt;p&gt;Ce vendredi 29 mai je fêtais mes 2x ans (mettez ce que vous voulez à la place du 'x' &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt; ), et nous fêtons ma douce moitié et moi notre premier anniversaire de mariage ce dimanche 31 mai. Quelles plus belles occasions aurions nous pu trouver pour notre Escapade Gourmande ?&lt;/p&gt;


&lt;p&gt;Nous avons quelque peu hésité devant le nombre de possibilités offertes par le cadeau, et nous avons finalement décidé de nous rendre au « &lt;a href=&quot;http://www.monalisahotels.com/fompeyre/fr/www-domainedefompeyre-com-presentation.html&quot; hreflang=&quot;fr&quot;&gt;Domaine de Fompeyre&lt;/a&gt; », à Bazas (Aquitaine) ; situé à une soixantaine de kilomètres de Bordeaux.&lt;br /&gt;
Nous nous attendions évidemment à quelque chose de très bien, mais ce fût bien plus que cela, tout simplement magnifique !&lt;/p&gt;


&lt;p&gt;L'endroit est situé sur une hauteur, avec une vue imprenable sur la ville et sa cathédrale. Le cadre est très beau, très agréable et aussi très calme (ce qui nous change de la circulation bruyante et incessante sous nos fenêtres). Voyez plutôt...&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/vue_bazas.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;En outre - en plus de ce cadre hors du commun - l'ambiance y était calme et détendue, le personnel et les autres clients de l'hôtel fort sympathiques.&lt;/p&gt;


&lt;p&gt;Première surprise, à notre arrivée, le réceptionniste nous informe qu'ils nous ont un peu surclassés pour que nous puissions avoir suffisamment de place avec notre « pitchoune ». Nous avons fortement apprécié l'attention, il est vrai que ce n'est pas toujours évident d'emmener notre bébé de 10 mois dans ce genre d'aventures. La chambre est fort jolie, la vue magnifique, que du bonheur !!&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/fompeyre_manoir.jpg&quot; alt=&quot;&quot; style=&quot;float:left; margin: 0 1em 1em 0;&quot; /&gt;
&lt;img src=&quot;http://blog.ulysses.fr/public/fompeyre_chambre.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Je ne me souviens plus si je vous ai déjà parlé du cadre fort agréable de ce charmant endroit... Voilà une brève synthèse du panorama auquel nous avions droit depuis notre chambre :&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/vue_chambre.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Après que nous nous soyons extasiés sur le panorama et le confort de la chambre (Zia s'est surtout intéressée à la moquette, aux prises de courant, et aux recoins &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt; ), nous avons décidé de profiter de la piscine intérieure qui est chauffée (nous avons préféré une piscine chauffée pour la petite). C'était la première fois que Zia allait à la piscine, et elle a adoré.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/zia_premiere_piscine.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Retour à la chambre ensuite, pour prendre une rapide douche avant d'aller manger. Au menu :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;terrine de foie gras de canard maison (succulent),&lt;/li&gt;
&lt;li&gt;magret de canard (délicieux)&lt;/li&gt;
&lt;li&gt;assiette de fromages (bon, j'aime pas le fromage...)&lt;/li&gt;
&lt;li&gt;ronde des dessert : morceau de gâteau au chocolat et morceau de gâteau au citron accompagnés d'un sorbet (un rien gourmand &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt; )&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La boisson n'était pas comprise dans la formule ; mais nous avons accompagné le tout d'un très bon Bordeaux blanc un peu fruité.&lt;/p&gt;


&lt;p&gt;En résumé : un vrai régal !&lt;/p&gt;


&lt;p&gt;Cerise sur le gâteau, l'équipe ayant appris que c'était mon anniversaire...&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/fompeyre_anniversaire.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Petites anecdotes : il a fallu que quelqu'un entonne « Joyeux Anniversaire » pour que toute la salle le reprenne en choeur. Je ne savais plus où me mettre, un trou de souris aurait été à ma disposition que je m'y serait rué avec fougue &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;
Zia était avec nous et s'était réveillée peu de temps auparavant, je m'étais levé pour aller la chercher lorsque le serveur est arrivé avec le « gâteau », beaucoup de personnes ont donc cru qu'il s'agissait de son anniversaire, mais je me suis bien gardé de leur signifier que tel n'était pas le cas.&lt;/p&gt;


&lt;p&gt;Cette attention m'a particulièrement touché, je tiens à remercier vivement l'équipe du restaurant (peut-être que l'un d'entre eux tombera sur ce billet un de ces jours) ; ainsi que l'ensemble des personnes présentes dans la salle à ce moment là &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;À la fin du repas, retour à la chambre où nous avons pris un peu de repos ma foi fort bien mérité. Le lendemain matin, nous avons eu le bonheur de prendre le petit déjeuner sur le balcon de notre chambre.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/fompeyre_dejeuner.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Ensuite, nouveau détour par la piscine pour tester le jacuzzi... Je n'avais encore jamais eu l'occasion d'essayer, et désormais, je me dis que d'en avoir un à la maison pour me délasser après la création d'un paquet RPM pas piqué des vers serait vraiment l'idée du siècle &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/fompeyre_jacuzzi.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;D'&lt;a href=&quot;http://photos.ulysses.fr/main.php/v/voyages/?g2_page=2&quot; hreflang=&quot;fr&quot;&gt;autres photos de ce moment de détente&lt;/a&gt; sont visibles sur notre galerie.&lt;/p&gt;


&lt;p&gt;Voilà donc, nous avons passé un moment extrêmement agréable, nous sommes tous les trois ravis de ce séjour. Merci, merci, merci, merci, ... - je ne le dirai jamais assez !&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.ulysses.fr/public/famille_a_bazas.jpg&quot; alt=&quot;&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>tuxtype2 et tuxmath</title>
    <link>http://blog.ulysses.fr/index.php/post/17/05/2009/tuxtype2-et-tuxmath</link>
    <guid isPermaLink="false">urn:md5:2d1ef1f99907f806bf7007f28ede6bb7</guid>
    <pubDate>Sun, 17 May 2009 14:42:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>PenguinLand</category>
            
    <description>    &lt;p&gt;Une brève discussion sur IRC hier soir m'a fait découvrir un logiciel éducatif que je ne connaissais pas encore sous Linux : &lt;a href=&quot;http://tux4kids.alioth.debian.org/&quot; hreflang=&quot;en&quot;&gt;TuxMath&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;Je me suis également rendu compte que ce programme n'était pas empaqueté pour Fedora, et que son équivalent pour le clavier, TuxType, datait de l'an dernier...&lt;/p&gt;


&lt;p&gt;Bref, je me suis dit que de mettre à jour TuxType et d'intégrer TuxMath dans les dépôts officiels serait une bonne idée. En cherchant quelque peu sur le bugzilla, j'ai vu un bogue encore ouvert pour TuxType : &lt;a href=&quot;https://bugzilla.redhat.com/show_bug.cgi?id=477472&quot; hreflang=&quot;en&quot;&gt;https://bugzilla.redhat.com/show_bug.cgi?id=477472&lt;/a&gt;&lt;br /&gt;
Ce bogue concerne l'inclusion de fichiers de polices de caractères dans les paquets ; mais je ne sais pas comment le corriger... Du coup, je ne souhaite pas m'occuper moi-même de la mise à jour de TuxType, ni de la demande d'intégration de TuxMath dans les dépôts officiels.&lt;/p&gt;


&lt;p&gt;En revanche, je voulais essayer ces deux programmes sur ma Fedora, je les ai donc construits et mis à disposition sur mon dépôt personnel. Les paquets sont disponibles pour Fedora 9 et 10 en i386 et en x86_64. Pour installer le dépôt :&lt;/p&gt;
&lt;pre&gt;
# rpm -ivh http://rpms.ulysses.fr/fc10/x86_64/trashy-release-fc10-1.noarch.rpm
&lt;/pre&gt;


&lt;p&gt;Pour Fedora 9, utiliser l'URL : &lt;a href=&quot;http://rpms.ulysses.fr/fc9/x86_64/trashy-release-fc9-1.noarch.rpm&quot;&gt;http://rpms.ulysses.fr/fc9/x86_64/trashy-release-fc9-1.noarch.rpm&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Pour installer les deux programmes :&lt;/p&gt;
&lt;pre&gt;
# yum --enablerepo=trashy install tuxtype2 tuxmath
&lt;/pre&gt;


&lt;p&gt;J'ai installé ces deux programmes sur l'ordinateur de mon épouse afin qu'elle puisse les tester, et elle est actuellement en train de se prendre la tête sur TuxMath &lt;img src=&quot;/themes/default/smilies/laugh.png&quot; alt=&quot;:-D&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Les paquets ont été uniquement testés sous Fedora 10 en x86_64, je n'ai as d'autre version sous la main...&lt;/p&gt;


&lt;p&gt;Amusez-vous bien ! &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:-)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Décret sur l'accessibilité des sites publics : enfin !</title>
    <link>http://blog.ulysses.fr/index.php/post/16/05/2009/D%C3%A9cret-sur-l-accessibilit%C3%A9-des-sites-publics-%3A-enfin-%21</link>
    <guid isPermaLink="false">urn:md5:e86379cab76af0472c5a096d5e010a1d</guid>
    <pubDate>Sat, 16 May 2009 21:32:00 +0200</pubDate>
    <dc:creator>trashy</dc:creator>
        <category>WebLand</category>
            
    <description>    &lt;p&gt;Le &lt;a href=&quot;http://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000020616980&quot; hreflang=&quot;fr&quot;&gt;décret sur l'accessibilité des sites publics&lt;/a&gt; a enfin été signé et publié au Journal Officiel !!&lt;/p&gt;


&lt;p&gt;Depuis 2005, et l'adoption de la loi loi n°2005-102 du 11 février 2005 pour &lt;q&gt;l'égalité des droits et des chances, la participation et la citoyenneté des personnes handicapées&lt;/q&gt;, de nombreuses personnes dans les milieux du web appelaient de leurs vœux le décret correspondant.&lt;/p&gt;


&lt;p&gt;En effet, cette loi sans décret n'obligeait personne à effectivement adopter une logique d'accessibilité dans les sites webs des services publics. Bien que certains aient déjà sauté le pas, que ce soit par décision de « responsables informatique » ou de développeurs sensibles à ce genre de sujets, d'autres - principalement pour éviter de dépenser trois sous qui pour une fois auraient été dépensés de façon fort utile - prenaient pour excuse l'absence de décret pour ne pas rendre leur site conforme aux différentes normes (X)HTML.&lt;/p&gt;


&lt;p&gt;Désormais, c'est chose faite, et j'espère que l'accès et l'ergonomie presque pitoyable que nous devons aujourd'hui endurer sur certains sites gagnera un peu en qualité !&lt;/p&gt;


&lt;p&gt;Je vous accorde que le respect de standards n'est pas forcément un gage de qualité et encore moins d'ergonomie, mais on a bien le droit de rêver un peu, non ?&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>