<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.nikrou.net/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Le Journal de Nikrou</title>
  <link>http://www.nikrou.net/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Wed, 18 Jun 2008 19:56:28 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Ajouter automatiquement le bon auteur à une classe dans symfony</title>
    <link>http://www.nikrou.net/post/2008/06/04/Ajouter-automatiquement-le-bon-auteur-a-une-classe-dans-symfony</link>
    <guid isPermaLink="false">urn:md5:9f0ad53887d311b3c83aff3776766010</guid>
    <pubDate>Wed, 04 Jun 2008 21:38:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>php</category><category>subversion</category><category>symfony</category>    
    <description>&lt;p&gt;La ligne de commande de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.symfony-project.org/&quot;&gt;symfony&lt;/a&gt; permet de générer un nouveau module avec une arborescence et des fichiers basés sur des modèles. Si on ne fait rien de particulier, &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.sensiolabs.com/blog/&quot;&gt;Fabien&lt;/a&gt; est alors l'auteur de tous les fichiers php. Il est fort mais quand même ! &lt;/p&gt;    &lt;p&gt;Quand je parle d'auteur, je parle du propriétaire du fichier, celui qui a crée le fichier dans &lt;a hreflang=&quot;en&quot; href=&quot;http://subversion.tigris.org/&quot;&gt;subversion&lt;/a&gt;. Vous utilisez bien subversion pour gérer vos sources. Si ce n'est pas le cas, d'une part, ce n'est pas bien (à moins d'utiliser un autre gestionnaire de version) et d'autre part cet article ne va pas tellement vous intéresser !&lt;/p&gt;
&lt;p&gt;Supposons que l'on crée le module wiki basé sur la class Article dans l'application frontend, ce qui donne la commande suivante :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;nicolas $ ./symfony init-module frontend wiki Article&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cela va générer, notament la classe wikiActions suivante:&lt;/p&gt;
&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;
&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;wiki&amp;nbsp;actions.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@package&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wiki&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@subpackage&amp;nbsp;wiki&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Your&amp;nbsp;name&amp;nbsp;here&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SVN:&amp;nbsp;$Id:&amp;nbsp;actions.class.php&amp;nbsp;2692&amp;nbsp;2006-11-15&amp;nbsp;21:03:55Z&amp;nbsp;fabien&amp;nbsp;$&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;wikiActions&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;sfActions&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Executes&amp;nbsp;index&amp;nbsp;action&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;executeIndex&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;forward&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'default'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'module'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;
&lt;p&gt;Il serait fort agréable qu'à la place de &quot;Your name here&quot; il y ait notre nom. Et bien cela est facile. Il suffit d'ajouter une propriété dans le fichier &lt;strong&gt;config/properties.ini&lt;/strong&gt; de votre projet, du genre :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;author=nicolas&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Désormais lorsqu'on créera un nouveau module, l'auteur sera &lt;em&gt;nicolas&lt;/em&gt;. C'est quand même mieux que &lt;em&gt;Fabien&lt;/em&gt; ! Mais ce n'est pas encore parfait car désormais c'est &lt;em&gt;nicolas&lt;/em&gt; qui est l'auteur de tout le code. Il faudrait que ce soit celui qui a créé le fichier. Pour cela il faut encore modifier le fichier &lt;strong&gt;config/properties.ini&lt;/strong&gt; et remplacer la ligne précédemment modifiée par la suivante&lt;/p&gt;
&lt;p&gt;&lt;code&gt;author=&quot;$Author: $&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Lorsqu'on va générer un nouveau module, à la place de la ligne &lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;*&amp;nbsp;@author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Your&amp;nbsp;name&amp;nbsp;here&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;*&amp;nbsp;@author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Author: $&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cela semble moins bien au premier abord mais il suffit d'ajouter à la propriété &lt;strong&gt;svn:keywords&lt;/strong&gt; le mot clé &lt;strong&gt;Author&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;svn propset svn:keywords Author actions.class.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Après le premier &lt;strong&gt;commit&lt;/strong&gt;, la ligne sera : &lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;*&amp;nbsp;@author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Author: nicolas $&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;La ligne version n'est pas très belle non plus ! Il faut la changer en :&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt; *&amp;nbsp;@version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SVN:&amp;nbsp;$Id: $&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Il faut ensuite ajouter à la propriété &lt;strong&gt;svn:keywords&lt;/strong&gt; le mot clé &lt;strong&gt;Id&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;svn propset svn:keywords 'Author Id' actions.class.php&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On peut aussi éditer la propriété &lt;strong&gt;svn:keywords&lt;/strong&gt; (svn propedit) et ajouter &lt;strong&gt;Id&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;L'idéal serait de faire cela automatiquement via la ligne de commande. Pour faire cela il faudrait modifier la tâche symfony &lt;strong&gt;init-module&lt;/strong&gt; pour autoriser la modification de la version dans le fichier &lt;strong&gt;config/properties.ini&lt;/strong&gt; et pour positionner automatiquement la propriété &lt;strong&gt;svn:keywords&lt;/strong&gt; avec les bonnes valeurs. Pour faire cela, il faut modifier le fichier &lt;strong&gt;data/tasks/sfPakeGenerator&lt;/strong&gt; de symfony puisqu'on ne peut pas (à ma connaissance) surcahrger les tâches.&lt;/p&gt;
&lt;p&gt;Au final, la classe ressemble à ça:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;
&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;/**&lt;br /&gt;&amp;nbsp;*&amp;nbsp;wiki&amp;nbsp;actions.&lt;br /&gt;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@package&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;wiki&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@subpackage&amp;nbsp;wiki&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@author&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $Author: nicolas $&lt;br /&gt;&amp;nbsp;*&amp;nbsp;@version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SVN:&amp;nbsp;$Id:&amp;nbsp;actions.class.php 10 2008-06-02 18:58:54Z nicolas $&lt;br /&gt;&amp;nbsp;*/&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;class&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;wikiActions&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;extends&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;sfActions&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(255, 128, 0);&quot;&gt;/**&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&amp;nbsp;Executes&amp;nbsp;index&amp;nbsp;action&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;public&amp;nbsp;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;executeIndex&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;$this&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;forward&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'default'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'module'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;
&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Des plugins, des plugins, oui mais pour dotclear</title>
    <link>http://www.nikrou.net/post/2008/05/18/Des-plugins-des-plugins-oui-mais-pour-dotclear</link>
    <guid isPermaLink="false">urn:md5:55ac9009f4de94882a38866267aa46d4</guid>
    <pubDate>Sun, 18 May 2008 10:08:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>contact</category><category>dotclear</category><category>php</category><category>plugin</category><category>tags</category>    
    <description>&lt;p&gt;En regardant &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.nikrou.net/plugins&quot;&gt;la liste de mes plugins&lt;/a&gt;, je me suis apperçu que je commençais à en avoir pas mal !&lt;/p&gt;    &lt;p&gt;Parmi cette liste, j'en ai crée trois :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;le plugin &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.nikrou.net/journal/public/plugins/plugin-aboutPage-0.1.4-1.zip&quot;&gt;aboutPage&lt;/a&gt; permettant de gérer une page &quot;à propos&quot;&lt;/li&gt;
&lt;li&gt;le plugin mTags permettant de faire une recherche avec plusieurs tags.&lt;/li&gt;
&lt;li&gt;le plugin contactPage pour qu'on puisse m'envoyer plein de gentils messages !&lt;/li&gt;
&lt;/ul&gt;
Les deux derniers ne sont pas disponibles mais si quelqu'un est intéressé, je me ferais un plaisir de les packager !&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Créer une nouvelle tâche pake dans symfony</title>
    <link>http://www.nikrou.net/post/2008/05/15/Creer-une-nouvelle-tache-pake-dans-symfony</link>
    <guid isPermaLink="false">urn:md5:786f0d4039164fb04150e6da0d7450b9</guid>
    <pubDate>Thu, 15 May 2008 21:33:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>linux</category><category>php</category><category>symfony</category>    
    <description>&lt;p&gt;La ligne de commande dans symfony fournit de nombreuses facilités pour
créer des tâches usuelles et parfois complexes comme créer un nouveau
projet, créer une nouvelle application, vider le cache, ...&lt;/p&gt;
&lt;p&gt;Ces différentes tâches ne sont en fait que des fonctions php invoquées via la ligne de commande. Il peut s'avérer intéressant d'en ajouter.&lt;/p&gt;    &lt;p&gt;Ce qui suit concerne symfony 1.0.x. On peut ajouter une tâche de plusieurs manières:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;dans le répertoire &lt;strong&gt;data/tasks&lt;/strong&gt; d'un plugin&lt;/li&gt;
&lt;li&gt;dans le répertoire &lt;strong&gt;data&lt;/strong&gt; de symfony (sf_symfony_data_dir)&lt;/li&gt;
&lt;li&gt;dans le répertoire &lt;strong&gt;data/tasks&lt;/strong&gt; du projet.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Il y a une chose d'importante à noter, c'est que le fichier contenant la nouvelle tâche suit respectivement les conventions de nommage suivantes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;*.php &lt;/li&gt;
&lt;li&gt;sfPake*.php&lt;/li&gt;
&lt;li&gt;myPake*.php&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Ensuite, en vidant le cache, la nouvelle tâche est automatiquement disponible. Il suffit de taper la commande: &lt;strong&gt;symfony&lt;/strong&gt;,pour voir apparaître la nouvelle tâche avec sa description dans le message d'aide.&lt;/p&gt;
&lt;p&gt;Une nouvelle tâche minimale (ne faisant rien) pourrait ressembler à ça (myPakeValidation.php) : &lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;
&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;&amp;lt;?php&lt;br /&gt;pake_desc&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'sync&amp;nbsp;data&amp;nbsp;between&amp;nbsp;validation&amp;nbsp;and&amp;nbsp;production&amp;nbsp;sites'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;pake_task&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'sync-data'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'project_exists'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;);&lt;br /&gt;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;pake_alias&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'validation'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'sync-data'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;);&lt;br /&gt;&lt;br /&gt;function&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;run_sync_data&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;$task&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;$args&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;)&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;throw&amp;nbsp;new&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 0, 187);&quot;&gt;Exception&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: rgb(221, 0, 0);&quot;&gt;'This&amp;nbsp;task&amp;nbsp;is&amp;nbsp;not&amp;nbsp;yet&amp;nbsp;implemented.'&lt;/span&gt;&lt;span style=&quot;color: rgb(0, 119, 0);&quot;&gt;);&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;
&lt;/span&gt;
&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;Désormais, en tapant la ligne de commande suivante, je ferais (quand j'aurai écrit la fonction) la synchronisation entre mon site de validation et mon site de production : &lt;/p&gt;
&lt;p&gt;&lt;code&gt;nicolas $ ./symfony validation&lt;/code&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Une petite mise à jour</title>
    <link>http://www.nikrou.net/post/2008/05/08/Une-petite-mise-a-jour</link>
    <guid isPermaLink="false">urn:md5:c223a4f35f2d209a0f28a11b2e0d3622</guid>
    <pubDate>Thu, 08 May 2008 21:24:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Général</category>
        <category>dotclear</category><category>php</category>    
    <description>    Je viens de mettre à jour &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.dotclear.net/&quot;&gt;dotclear&lt;/a&gt; pour passer à la première version stable mais si c'est encore une version candidate. J'ai suivi l&lt;a hreflang=&quot;fr&quot; href=&quot;http://doc.dotclear.net/2.0/admin/upgrade&quot;&gt;a documentation de mise à jour&lt;/a&gt; et tout s'est bien passé. Je n'ai pas encore mis à jour mon thème mais je dois avouer que j'adore le&amp;nbsp; nouveau thème par défaut.&lt;br /&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Comment faire du vrai HTML et pas du mauvais HTML à la sauce XHTML</title>
    <link>http://www.nikrou.net/post/2008/04/18/Comment-faire-du-vrai-HTML-et-pas-du-mauvais-HTML-a-la-sauce-XHTML</link>
    <guid isPermaLink="false">urn:md5:52339ed6e16d456b40347231b1025d2c</guid>
    <pubDate>Fri, 18 Apr 2008 16:19:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>html</category>    
    <description>&lt;p&gt;&lt;a href=&quot;http://www.nikrou.net/post/2008/04/17/Livrer-du-html-au-lieu-du-xhtml-avec-symfony&quot;&gt;Hier&lt;/a&gt;, je disais que livrer le &lt;acronym title=&quot;Extensible HyperText Markup Language&quot; lang=&quot;en&quot;&gt;XHTML&lt;/acronym&gt; avec le type mime text/html revient à faire du mauvais &lt;acronym title=&quot;HyperText Markup Language&quot; lang=&quot;en&quot;&gt;HTML&lt;/acronym&gt;. Pour répondre notament à &lt;a href=&quot;http://www.apprendre-php.com&quot;&gt;Hugo&lt;/a&gt;, sur le fait de &lt;a href=&quot;http://www.nikrou.net/post/2008/04/17/Livrer-du-html-au-lieu-du-xhtml-avec-symfony#c658&quot;&gt;fermer ou pas les &quot;mono-tags&quot;&lt;/a&gt;, je vais m'expliquer un peu.&lt;/p&gt;    &lt;p&gt;Prenons comme base, le &lt;a href=&quot;http://www.nikrou.net/html/form_valid.html&quot;&gt;document &lt;acronym&gt;HTML&lt;/acronym&gt;&lt;/a&gt; suivant, &lt;a href=&quot;http://validator.w3.org/check?verbose=1&amp;amp;uri=http%3A%2F%2Fwww.nikrou.net%2Fhtml%2Fform_valid.html&quot;&gt;valide bien entendu&lt;/a&gt; :&lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;
&amp;lt;!DOCTYPE&amp;nbsp;HTML&amp;nbsp;PUBLIC&amp;nbsp;&quot;-//W3C//DTD&amp;nbsp;HTML&amp;nbsp;4.01//EN&quot;&amp;nbsp;&quot;http://www.w3.org/TR/html4/strict.dtd&quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;nbsp;lang=&quot;fr&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;html&amp;nbsp;test&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;name=&quot;expires&quot;&amp;nbsp;content=&quot;Fri,&amp;nbsp;18&amp;nbsp;Apr&amp;nbsp;2008&amp;nbsp;07:51:13&amp;nbsp;GMT&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;http-equiv=&quot;content-type&quot;&amp;nbsp;content=&quot;text/html;&amp;nbsp;charset=iso-8859-1&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link&amp;nbsp;rel=&quot;stylesheet&quot;&amp;nbsp;type=&quot;text/css&quot;&amp;nbsp;media=&quot;screen&quot;&amp;nbsp;href=&quot;http://www.nikrou.net/post/2008/04/18/style.css&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link&amp;nbsp;rel=&quot;shortcut&amp;nbsp;icon&quot;&amp;nbsp;&amp;nbsp;href=&quot;http://www.nikrou.net/favicon.ico&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;essai&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form&amp;nbsp;name=&quot;essai&quot;&amp;nbsp;action=&quot;http://www.nikrou.net/post/2008/04/18/essai.php&quot;&amp;nbsp;method=&quot;post&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;input&amp;nbsp;type=&quot;text&quot;&amp;nbsp;name=&quot;essai&quot;&amp;nbsp;value=&quot;&quot;&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/span&gt;
&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;Nous allons le modifier pour le mettre à la sauce &lt;acronym&gt;XHTML&lt;/acronym&gt;, pour préparer la transition entre &lt;acronym&gt;HTML&lt;/acronym&gt; et &lt;acronym&gt;XHTML&lt;/acronym&gt; comme certains voudraient le faire croire. Cela donne &lt;a href=&quot;http://www.nikrou.net/html/form_xhtml.html&quot;&gt;ceci&lt;/a&gt; en fermant les différents tags, y compris les tags &quot;vides&quot; type &amp;lt;hr&amp;gt; : &lt;br /&gt;
&lt;code&gt;&lt;span style=&quot;color: rgb(0, 0, 0);&quot;&gt;
&amp;lt;!DOCTYPE&amp;nbsp;HTML&amp;nbsp;PUBLIC&amp;nbsp;&quot;-//W3C//DTD&amp;nbsp;HTML&amp;nbsp;4.01//EN&quot;&amp;nbsp;&quot;http://www.w3.org/TR/html4/strict.dtd&quot;&amp;gt;&lt;br /&gt;&amp;lt;html&amp;nbsp;lang=&quot;fr&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;title&amp;gt;html&amp;nbsp;test&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;name=&quot;expires&quot;&amp;nbsp;content=&quot;Fri,&amp;nbsp;18&amp;nbsp;Apr&amp;nbsp;2008&amp;nbsp;07:51:13&amp;nbsp;GMT&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;meta&amp;nbsp;http-equiv=&quot;content-type&quot;&amp;nbsp;content=&quot;text/html;&amp;nbsp;charset=iso-8859-1&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link&amp;nbsp;rel=&quot;stylesheet&quot;&amp;nbsp;type=&quot;text/css&quot;&amp;nbsp;media=&quot;screen&quot;&amp;nbsp;href=&quot;http://www.nikrou.net/post/2008/04/18/style.css&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;link&amp;nbsp;rel=&quot;shortcut&amp;nbsp;icon&quot;&amp;nbsp;&amp;nbsp;href=&quot;http://www.nikrou.net/favicon.ico&quot;/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;essai&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;hr/&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;form&amp;nbsp;name=&quot;essai&quot;&amp;nbsp;action=&quot;http://www.nikrou.net/post/2008/04/18/essai.php&quot;&amp;nbsp;method=&quot;post&quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;input&amp;nbsp;type=&quot;text&quot;&amp;nbsp;name=&quot;essai&quot;&amp;nbsp;value=&quot;&quot;/&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/span&gt;
&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://validator.w3.org/check?verbose=1&amp;amp;uri=http%3A%2F%2Fwww.nikrou.net%2Fhtml%2Fform_xhtml.html&quot;&gt;Ce document n'est plus valide&lt;/a&gt; en regard de la &lt;acronym title=&quot;Document Type Definition&quot; lang=&quot;en&quot;&gt;DTD&lt;/acronym&gt; &lt;acronym&gt;HTML&lt;/acronym&gt; 4.01 strict alors qu'il le serait en &lt;acronym&gt;XHTML&lt;/acronym&gt; 1.0 strict, au détail près qu'il faudrait remplacer l'attribut name de la balise form par un attribut id. Hallucinant, non ? En fait, on se retrouve avec deux erreurs &lt;strong&gt;character data is not allowed here&lt;/strong&gt; et quelques avertissements &lt;strong&gt;NET-enabling start-tag requires SHORTTAG YES&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Passons aux explications. Il faut bien garder à l'esprit que le &lt;acronym&gt;HTML&lt;/acronym&gt; aussi bien que le &lt;acronym&gt;XHTML&lt;/acronym&gt; sont issus du &lt;acronym title=&quot;Standard Generalized Markup Language&quot; lang=&quot;en&quot;&gt;SGML&lt;/acronym&gt;. En écrivant du &lt;acronym&gt;SGML&lt;/acronym&gt;, on peut omettre aussi bien les tags ouvrants que les tags fermants (propriété ommissibility ou OMITTAG en grand breton) et on a aussi la possibilité d'utiliser une syntaxe réduite (propriété minimization ou SHORTTAG). En &lt;acronym&gt;HTML&lt;/acronym&gt;, ces deux propriétés sont activées. La première est implémentée par la plupart des navigateurs (même s'il y a quelques bugs) ce qui permet d'écrire par exemple de manière parfaitement valide :&lt;br /&gt;
&lt;code&gt;
&amp;lt;p&amp;gt;Mon paragraphe sans balise fermante.&lt;br /&gt;
&amp;lt;p&amp;gt;Un autre paragraphe !
&lt;/code&gt;.&lt;br /&gt;
La deuxième n'est pas implémentée dans les navigateurs mais fait tout de même partie de la spécification d'où les erreurs renvoyées par le validateur. Cette propriété permet d'écrire en SGML de manière raccourcie &lt;strong&gt;&amp;lt;em/foo/&lt;/strong&gt; au lieu d'écrire &lt;strong&gt;&amp;lt;em&amp;gt;foo&amp;lt;/em&amp;gt;&lt;/strong&gt;. Pour ce qui est du &lt;acronym&gt;XHTML&lt;/acronym&gt;, la propriété SHORTTAG est désactivée tandis que la propriété OMITTAG est bien activée.&lt;/p&gt;
&lt;p&gt;Donc en &lt;acronym&gt;HTML&lt;/acronym&gt; si j'écris &lt;strong&gt;&amp;lt;hr/&lt;/strong&gt; (qui provoque l'avertissement &lt;strong&gt;NET-enabling start-tag requires SHORTTAG YES&lt;/strong&gt;), le fait que la propriété &lt;em&gt;SHORTTAG&lt;/em&gt; soit à &lt;em&gt;on&lt;/em&gt;, fait que c'est interprété comme &lt;strong&gt;&amp;lt;hr&amp;gt;&lt;/strong&gt;. Du coup &lt;strong&gt;&amp;lt;hr/&lt;/strong&gt; et &lt;strong&gt;&amp;lt;hr&amp;gt;&lt;/strong&gt; sont équivalents du point de vue &lt;acronym&gt;HTML&lt;/acronym&gt;. En conséquences, &lt;strong&gt;&amp;lt;hr/&amp;gt;&lt;/strong&gt; (Le fait de mettre un espace avant le slash ne change rien!) est équivalent à &lt;strong&gt;&amp;lt;hr&amp;gt;&amp;gt;&lt;/strong&gt;, où le deuxième &lt;strong&gt;&amp;gt;&lt;/strong&gt; ne fait pas partie du tag. Donc si on met le tag &lt;strong&gt;&amp;lt;hr/&amp;gt;&lt;/strong&gt; dans &lt;strong&gt;body&lt;/strong&gt;, le parseur va se plaindre et signaler une erreur &lt;strong&gt;character data is not allowed here&lt;/strong&gt; puisqu'on ne peut mettre que des balises de type bloc comme fils de &lt;strong&gt;body&lt;/strong&gt; ; le caractère non autorisé est le &lt;strong&gt;&amp;gt;&lt;/strong&gt;. On n'a le même genre d'erreur si on ferme les tags &lt;strong&gt;meta&lt;/strong&gt; ou &lt;strong&gt;link&lt;/strong&gt; dans la partie &lt;strong&gt;head&lt;/strong&gt; : &lt;br /&gt;
&lt;code&gt;
&amp;lt;link&amp;nbsp;rel=&quot;stylesheet&quot;&amp;nbsp;type=&quot;text/css&quot;&amp;nbsp;media=&quot;screen&quot;&amp;nbsp;href=&quot;http://www.nikrou.net/post/2008/04/18/style.css&quot;/&amp;gt;
&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Le parseur lorsqu'il recontre le slash considère que le tag link est fermé et continue. Il trouve ensuite le caractère &lt;strong&gt;&amp;gt;&lt;/strong&gt; et renvoie une erreur &lt;strong&gt;document type does not allow element &quot;LINK&quot; here&lt;/strong&gt; suivi par d'autres messages encore moins clair. En fait, le parseur essaie de faire au mieux : il trouve un caractère isolé et comme ils ne sont pas autorisés dans la partie head, il consière que la partie &lt;strong&gt;body&lt;/strong&gt; est commencée d'où les erreurs rencontrées.&lt;/p&gt;
&lt;p&gt;Note: le document modifié serait en fait valide en &lt;acronym&gt;HTML&lt;/acronym&gt; 4.01 transitional. En effet, la propriété OMITTAG est désactivée pour la version transitional.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Livrer du html au lieu du xhtml avec symfony</title>
    <link>http://www.nikrou.net/post/2008/04/17/Livrer-du-html-au-lieu-du-xhtml-avec-symfony</link>
    <guid isPermaLink="false">urn:md5:747da1a759f51a101b85e6c38a9e67ed</guid>
    <pubDate>Thu, 17 Apr 2008 11:32:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Outils</category>
        <category>html</category><category>php</category><category>symfony</category>    
    <description>&lt;p&gt;Je n'ai encore fait aucun site en &lt;acronym title=&quot;Extensible HyperText Markup Language&quot; lang=&quot;en&quot;&gt;XHTML&lt;/acronym&gt; pour diverses raisons : on doit servir le XHTML avec le type mime &lt;em&gt;application/xhtml+xml&lt;/em&gt;. Mais le navigateur au grand &lt;em&gt;E&lt;/em&gt; bleu ne gère tout simplement pas ce type mime. Et livrer le XHTML avec le type mime text/html revient à faire du mauvais &lt;acronym title=&quot;HyperText Markup Language&quot; lang=&quot;en&quot;&gt;HTML&lt;/acronym&gt;. Voilà pour la petite intro.&lt;/p&gt;
&lt;p&gt;Lorsqu'on utilise un &lt;acronym title=&quot;Content Managment System&quot; lang=&quot;en&quot;&gt;CMS&lt;/acronym&gt;, ou un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Framework&quot;&gt;framework&lt;/a&gt;, on se demande si celui-là va respecter notre façon de coder. J'ai adopté &lt;a hreflang=&quot;en&quot; href=&quot;http://www.symfony-project.org/&quot;&gt;symfony&lt;/a&gt; et j'ai découvert avec joie que je peux continuer à faire du HTML!&lt;/p&gt;    &lt;p&gt;Pour permettre à symfony de livrer du HTML au lieu du XHTML, il suffit de surcharger les quelques fonctions d'affichage. Il faut aussi modifier le fichier &lt;strong&gt;layout.php&lt;/strong&gt; de l'application et remplacer le doctype XHTML par celui qui va bien:&lt;/p&gt;
&lt;pre id=&quot;line1&quot;&gt;&lt;span class=&quot;doctype&quot;&gt;&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01//EN&quot; &quot;http://www.w3.org/TR/html4/strict.dtd&quot;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;Il faut aussi supprimer les tags fermants des balises contenues dans la partie &lt;em&gt;head&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Les fonctions d'affichages des différents tags HTML sont toutes gérées dans le &lt;a hreflang=&quot;en&quot; href=&quot;http://www.symfony-project.org/book/1_0/07-Inside-the-View-Layer#Helpers&quot;&gt;helper&lt;/a&gt; &lt;strong&gt;TagHelper.php&lt;/strong&gt;. J'ai donc récupérer ce fichier dans le répertoire &lt;strong&gt;lib/helper/&lt;/strong&gt; de symfony et je l'ai placé dans le répertoire &lt;strong&gt;lib/helper/&lt;/strong&gt; de mon application et j'ai modifié la fonction &lt;strong&gt;tag&lt;/strong&gt; pour livrer du HTML au lieu du XHTML. En fait j'ai simplement supprimé le slash de fin de tag:&lt;/p&gt;
&lt;p&gt;sortie de la commande diff:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;-&amp;nbsp; return '&amp;lt;'.$name._tag_options($options).(($open) ? '&amp;gt;' : ' /&amp;gt;');&lt;br /&gt;+&amp;nbsp; return '&amp;lt;'.$name._tag_options($options).(($open) ? '&amp;gt;' : '&amp;gt;');&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Cela fonctionne parfaitement mais cela a deux inconvénients. Il ne faut pas oublier de garder toutes les autres fonctions présentes dans ce fichier. L'autre inconvénient est que si on met à jour symfony on risque de passer à côté de modifications dans ce fichier puisqu'on l'aura surchargé.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>La baisse de l'immobilier a déjà commencé</title>
    <link>http://www.nikrou.net/post/2008/04/11/La-baisse-de-l-immobilier-a-deja-commence</link>
    <guid isPermaLink="false">urn:md5:72685fd7812302f5f56ce9ae65d175e2</guid>
    <pubDate>Fri, 11 Apr 2008 16:53:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Immobilier</category>
        <category>bulle immobilière</category><category>krach</category>    
    <description>    &lt;p&gt;Chaque jour, dans votre quartier, le prix d'une maison baisse. Choisissez dans votre quartier 20 maisons à vendre et suivez les prix de présentation (facile avec le web...)... et vous verrez les prix descendre par touche de 10000, 20000, 30000 euros,... et vous verrez de nouvelles mises en vente qui viennent gonfler un peu plus les stocks.&lt;/p&gt;


&lt;p&gt;Faîtes le et vous verrez.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Un bien sympathique petit déjeuner</title>
    <link>http://www.nikrou.net/post/2008/04/10/Un-bien-sympathique-petit-dejeuner</link>
    <guid isPermaLink="false">urn:md5:6b849dcea638b62311e1d9631dd06467</guid>
    <pubDate>Thu, 10 Apr 2008 20:11:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>php</category><category>symfony</category>    
    <description>Aujourd'hui, j'ai suivi un séminaire consacré à &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.symfony-project.org/&quot;&gt;symfony&lt;/a&gt;. Cela a commencé par un petit déjeuner classique et cela s'est poursuivit par une présentation du framework.&lt;br /&gt;    &lt;p&gt;Je n'ai pas appris grand chose de nouveau pendant cette matinée mais j'ai eu le plaisir de recontrer des personnes symapthiques et fort pédagogue notament Fabien Potencier, le créateur du framework. Cela m'a aussi conforté dans l'idée que décidément cet outil était génial. Longue vie à symfony.&lt;/p&gt;
&lt;p&gt;Edit: j'ai aussi aperçu &lt;a hreflang=&quot;fr&quot; href=&quot;http://prendreuncafe.com/blog/&quot;&gt;Nicolas Perriault&lt;/a&gt;, tout nouvel employé de sensio, que je n'ai pas reconnu.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>De l'art de signaler un bug</title>
    <link>http://www.nikrou.net/post/2008/04/08/De-lart-de-signaler-un-bug</link>
    <guid isPermaLink="false">urn:md5:3879d86b8f6ff3eb690c99cdfadce296</guid>
    <pubDate>Tue, 08 Apr 2008 12:07:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>dotclear</category><category>php</category><category>plugin</category>    
    <description>&lt;p&gt;Lorsqu'on utilise une application et qu'on découvre par hasard un bug ou une faille de sécurité, il y a plusieurs façons de réagir. On peut se vanter d'avoir trouver un bug/faille, on peut le signaler à l'auteur,...&lt;/p&gt;    &lt;p&gt;Evidemment se vanter d'avoir trouvé un bug sans le signaler à l'auteur au préalable est le moins que l'on puisse pas très constructif. Une fois l'auteur informé, cela ne va pas l'inciter à déployer toute son énergie à le corriger. Mais encore faut-il que l'on puisse joindre facilement l'auteur !&lt;/p&gt;
&lt;p&gt;L'autre solution est de contacter l'auteur avec une description aussi
précise que possible pour qu'il puisse corriger mais surtout reproduire
et comprendre le problème. Un problème bien posé et facilement reproductible et souvent bien plus facile à corriger. &lt;/p&gt;
&lt;p&gt;Visiblement il n'est pas facile de me joindre. Je ne vais pas mettre mon adresse email partout car je reçois déjà suffisament de &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Spam&quot;&gt;spam&lt;/a&gt;. J'ai voulu utiliser le &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.k-netweb.net/blog/?post/2006/10/06/61-plugin-dotclear-2-contact-2&quot;&gt;plugin contact&lt;/a&gt; mais j'ai eu quelques soucis à l'installation que je n'ai pas eu le temps de régler. Je vais m'y remettre sérieusement.&lt;/p&gt;
&lt;p&gt;On m'a remonté un bug sur mon plugin &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.nikrou.net/post/2007/10/18/Creation-dun-plugin-pour-dotclear-2-etape-1&quot;&gt;A propos&lt;/a&gt;. La personne (Matthi9u) n'a pas trouvé mon email directement et a posté sur le &lt;a hreflang=&quot;fr&quot; href=&quot;http://forum.dotclear.net/viewtopic.php?pid=206366&quot;&gt;forum de dotclear&lt;/a&gt;. J'aurais préféré être averti par mail avant. Quoi qu'il en soit, le problème est très bien décrit, avec une copie d'écran en prime. J'ai facilement reproduis et identifié le problème et une nouvelle version du plugin qui corrige le problème est disponible. Merci &lt;a hreflang=&quot;fr&quot; href=&quot;http://matthi9u.fr/&quot;&gt;Matthi9u&lt;/a&gt;.&lt;/p&gt;</description>
    
          <enclosure url="http://www.nikrou.net/journal/public/plugins/plugin-aboutPage-0.1.4-1.tar.gz"
      length="13709" type="application/x-gzip" />
          <enclosure url="http://www.nikrou.net/journal/public/plugins/plugin-aboutPage-0.1.4-1.pkg.gz"
      length="17382" type="application/x-gzip" />
    
    
      </item>
    
  <item>
    <title>Le grand soir est pour demain!</title>
    <link>http://www.nikrou.net/post/2008/04/01/Le-grand-soir-est-pour-demain</link>
    <guid isPermaLink="false">urn:md5:8f9a6767f4e3a6d4af426fe658a5082b</guid>
    <pubDate>Tue, 01 Apr 2008 21:32:00 +0200</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Immobilier</category>
        <category>bulle immobilière</category><category>krach</category>    
    <description>    &lt;p&gt;&lt;a href=&quot;http://www.nikrou.net/post/2007/12/31/Y-aura-t-il-un-nouveau-krach-immobilier-en-france&quot; hreflang=&quot;fr&quot;&gt;Je me demandais si cela arriverait en 2008&lt;/a&gt; ou 2009 ou plus tard mais il semble bien que la baisse espérée arrive à grand pas. &lt;a href=&quot;http://fr.wikipedia.org/wiki/Isabelle_Giordano&quot; hreflang=&quot;fr&quot;&gt;Isabelle Giordano&lt;/a&gt; sur France Inter, dans son émission &lt;a href=&quot;http://www.radiofrance.fr/franceinter/em/servicepublic/&quot; hreflang=&quot;fr&quot;&gt;service public&lt;/a&gt; parle longuement et très justement de l'ammorce de la baisse des prix immobiliers.&lt;/p&gt;


&lt;p&gt;Comme elle le dit en début d'émission, c'est une bonne nouvelle. Pour le moment Paris et la première couronne semblent épargnés mais pour combien de temps!!&lt;/p&gt;


&lt;p&gt;Pour les curieux et les incrédules, le &lt;a href=&quot;http://www.tv-radio.com/ondemand/france_inter/SERVICE/SERVICE20080401.ram&quot; hreflang=&quot;fr&quot;&gt;podcast de l'émission&lt;/a&gt; vous permettra de vous faire une idée.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Mettre à jour le contenu d'un package debian</title>
    <link>http://www.nikrou.net/post/2008/03/25/Mettre-a-jour-le-contenu-dun-package-debian</link>
    <guid isPermaLink="false">urn:md5:af0691c50d26f5db8a3017b2fb8135dc</guid>
    <pubDate>Tue, 25 Mar 2008 21:08:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Outils</category>
        <category>debian</category><category>emacs</category><category>linux</category><category>php</category>    
    <description>Récemment, avec le passage en version 22.1 de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.gnu.org/software/emacs/&quot;&gt;mon éditeur favori&lt;/a&gt;, j'ai eu un soucis avec le &lt;a hreflang=&quot;en&quot; href=&quot;http://sourceforge.net/projects/php-mode/&quot;&gt;mode php&lt;/a&gt; qui permet notament la mise en valeur du code par la coloration syntaxique de celui-ci. La version du mode que j'utilisais était vieille comme mes robes comme dirait ma grand-mère!&lt;br /&gt;    J'ai beau avoir ma distribution &lt;a hreflang=&quot;en&quot; href=&quot;http://www.debian.org/&quot;&gt;debian&lt;/a&gt; en version instable, la version la plus récente était la 1.1.0 qui datait tout de même du 24 janvier 2004. Depuis sont sorties plusieurs versions. La plus récente date du mois de janvier 2008. Je ne sais pas qui maintient ce paquet mais il a dû partir sur une île déserte et ne donne plus signe de vie. Comme ce mode ne fonctionnait pas avec ma nouvelle version d'emacs j'ai décidé d'utiliser une version plus récente du mode php et j'ai donc mis à jour le package debian.&lt;br /&gt;&lt;br /&gt;Faire un package debian à partir des sources d'une application n'est pas très complexe mais en faire un à partir d'un autre est encore plus simple ! J'ai récupéré la &lt;a hreflang=&quot;fr&quot; href=&quot;http://ftp.debian.org/debian/pool/main/p/php-elisp/php-elisp_1.1.0-2_all.deb&quot;&gt;version 1.1.0-2 du package debian&lt;/a&gt; et la &lt;a hreflang=&quot;en&quot; href=&quot;http://puzzle.dl.sourceforge.net/sourceforge/php-mode/php-mode-1.4.0.tar.gz&quot;&gt;version 1.4 de php-mode&lt;/a&gt;. Après il suffit de faire les opérations suivantes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;création d'un répertoire pour contenir les sources du package, php-elisp_1.4.0, par exemple, ainsi qu'un sous répertoire &lt;em&gt;DEBIAN&lt;/em&gt; contenant les métadonnées.&lt;br /&gt;
&lt;code&gt; # mkdir-p php-elisp_1.4.0/DEBIAN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;extraction des métadonnées de l'ancien package:&lt;br /&gt;
&lt;code&gt; # dpkg-deb -e php-elisp_1.1.0-2_all.deb php-elisp_1.4.0/DEBIAN&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;extraction des sources de l'ancien package:&lt;br /&gt;
&lt;code&gt;# dpkg -x php-elisp_1.1.0-2_all.deb php-elisp_1.4.0&lt;/code&gt;
&lt;p&gt;Le contenu du répertoire php-elisp_1.4.0 ressemble à ça (sortie de la commande tree):&lt;/p&gt;
&lt;pre&gt;.&lt;br /&gt;|-- DEBIAN&lt;br /&gt;|   |-- conffiles&lt;br /&gt;|   |-- control&lt;br /&gt;|   |-- md5sums&lt;br /&gt;|   |-- postinst&lt;br /&gt;|   `-- prerm&lt;br /&gt;|-- etc&lt;br /&gt;|   `-- emacs&lt;br /&gt;|       `-- site-start.d&lt;br /&gt;|           `-- 50php-elisp.el&lt;br /&gt;`-- usr&lt;br /&gt;    |-- lib&lt;br /&gt;    |   `-- emacsen-common&lt;br /&gt;    |       `-- packages&lt;br /&gt;    |           |-- install&lt;br /&gt;    |           |   `-- php-elisp&lt;br /&gt;    |           `-- remove&lt;br /&gt;    |               `-- php-elisp&lt;br /&gt;    `-- share&lt;br /&gt;        |-- doc&lt;br /&gt;        |   `-- php-elisp&lt;br /&gt;        |       |-- README.Debian&lt;br /&gt;        |       |-- changelog.Debian.gz&lt;br /&gt;        |       `-- copyright&lt;br /&gt;        `-- emacs&lt;br /&gt;            `-- site-lisp&lt;br /&gt;                `-- php-elisp&lt;br /&gt;                    `-- php-mode.el&lt;/pre&gt;&lt;/li&gt;
&lt;li&gt;mise à jour du fichier php-mode.el&lt;/li&gt;
&lt;li&gt;mise à jour de la version du package dans le fichier DEBIAN/control en remplaçant 1.1.0-2 par 1.4.0&lt;/li&gt;
&lt;li&gt;mise à jour de la somme md5 de la nouvelle version de php-mode dans le fichier DEBIAN/md5sums:&lt;br /&gt;
&lt;code&gt; # md5sum php-elisp_1.4.0/usr/share/emacs/site-lisp/php-elisp/php-mode.el&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;reconstruction du package:&lt;br /&gt;
&lt;code&gt; # dpkg-deb --build php-elisp_1.4.0&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;installation du nouveau package:&lt;br /&gt;
&lt;code&gt; # dpkg -i php-elisp_1.4.0.deb&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;</description>
    
          <enclosure url="http://www.nikrou.net/journal/public/php-elisp_1.4.0.deb"
      length="19998" type="application/x-debian-package" />
    
    
      </item>
    
  <item>
    <title>Emmener son code en voyage</title>
    <link>http://www.nikrou.net/post/2008/03/16/Emmener-son-code-en-voyage</link>
    <guid isPermaLink="false">urn:md5:77ca540bb55b590e0a1f1612d0ad62c6</guid>
    <pubDate>Sun, 16 Mar 2008 17:18:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Outils</category>
        <category>debian</category><category>linux</category><category>perl</category><category>subversion</category><category>svk</category>    
    <description>Lorsque je développe sur un projet, j'utilise subversion et je fais souvent des &quot;commit&quot; pour éviter de garder dans mon répertoire de travail du code modifié et non propagé sur le serveur. Tout va bien lorsqu'on est connecté au serveur central mais si on est dans le train, à la campagne, dans un avion, ou dans les toilettes, cela devient plus problématique.    &lt;p&gt;Le fait que subversion ne soit pas un gestionnaire de version distribué rend la connexion au serveur obligatoire pour faire des mises à jour. J'ai pris l'habitude faire des mises à jours régulières voire très régulières surtout sur des parties du code qui varient beaucoup. De ce fait, lorsque je ne suis pas connecté au serveur, je ne peux suivre cette politique de mise à jour. Mais heureusement &lt;a href=&quot;http://svk.elixus.org/view/HomePage&quot; hreflang=&quot;en&quot;&gt;svk&lt;/a&gt; est là. svk rend la gestion de subversion décentralisée. svk utilise le système de fichiers de subversion mais ajoute des foncitonnalités supplémentaires - surtout la gestion du mode déconnecté-.&lt;/p&gt;
&lt;p&gt;Voici comment je l'utilise par exemple sur un projet que nous nommerons HelloWorld. Le dépôt se trouve sur http://svn.central-depot.com/svn/hello_world. Il faut bien évidemment commencer par installer svk, mais &lt;a href=&quot;http://fr.wikipedia.org/wiki/Advanced_Packaging_Tool&quot;&gt;apt&lt;/a&gt; est mon ami et après le &quot;apt-get install svk&quot; qui va bien, le tour est joué!&lt;/p&gt;
&lt;p&gt;Il faut ensuite initialiser le dépôt local:&lt;br /&gt;
&lt;code&gt;# svk depotmap --init&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Faire un miroir du dépot central, en local:&lt;br /&gt;
&lt;code&gt;# svk mirror http://svn.central-depot.com/svn/hello_world //hello_world&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Jusque là on n'a toujours aucun code en local! Il faut maintenant faire la synchronisation entre dépôt distant et dépôt local:&lt;br /&gt;
&lt;code&gt;# svk sync //hello_world&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Désormais on peut travailler en mode déconnecté. On est à jour vis-à-vis du dépôt. On commence par se créer une branche locale:&lt;br /&gt;
&lt;code&gt;# svk cp //hello_world/trunk //local/hello_world&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Le &lt;em&gt;//local&lt;/em&gt; n'est qu'une convention. Vous pouvez évidemment nommer votre branche comme bon vous semble. Après on se crée une copie de travail tout comme on le ferait avec subversion sauf que les commandes sont du type &quot;svk commande&quot; au lieu de &quot;svn commande&quot; :&lt;br /&gt;
&lt;code&gt;# svk co //local/hello_world /path/to/my/work/hello_world&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;On peut ensuite faire des modifications. Pour finir un petit exemple de mise à jour vers le dépôt. Par exemple, pour faire une mise à jour (merge) entre mes modifications locales et le dépôt, je fais:&lt;br /&gt;
&lt;code&gt;
# svk sync //hello_world  (récupération éventuelle de modification)&lt;br /&gt;
# svk merge -C -rREV1:REV2 //local/hello_world //hello_world/trunk (le &lt;strong&gt;-C&lt;/strong&gt; correspond au dry-run)&lt;br /&gt;
# svk merge -rREV1:REV2 //local/hello_world //hello_world/trunk
&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Pour que tout soit parfait, il me manque un mode équivalent à &lt;a href=&quot;http://www.xsteve.at/prg/emacs/psvn.el&quot; hreflang=&quot;en&quot;&gt;psvn&lt;/a&gt; pour svk.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Vous prendrez bien une petite icône !</title>
    <link>http://www.nikrou.net/post/2008/03/09/Vous-prendrez-bien-une-petite-icone</link>
    <guid isPermaLink="false">urn:md5:c6a91b607400ceb3fe80604e72df9906</guid>
    <pubDate>Sun, 09 Mar 2008 13:51:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Développement</category>
        <category>dotclear</category><category>php</category><category>plugin</category>    
    <description>&lt;p&gt;A la demande générale, je vous livre une nouvelle version de &lt;a href=&quot;http://www.nikrou.net/post/2008/03/09/post/2007/10/18/Creation-dun-plugin-pour-dotclear-2-etape-1&quot; hreflang=&quot;fr&quot;&gt;mon plugin&lt;/a&gt;. Les petites modifications permettent d'ajouter une icône devant le lien dans le menu de droite (widget de présentation).&lt;/p&gt;    &lt;p&gt;Cette modification simplissime permet l'ajout ou la suppression de l'icône choisie. Tout cela se paramètre comme d'habitude dans la configuration de dotclear. J'ai ajouté un peu de doc (3 lignes) et la case à cocher qui permet de faire son choix.&lt;/p&gt;


&lt;p&gt;J'ai choisi une petite icône représentant un point d'interrogation. Pour en mettre une autre, il suffit d'écraser le fichier w_about.png. L'icône fait 16 sur 16 pixels.&lt;/p&gt;</description>
    
          <enclosure url="http://www.nikrou.net/journal/public/plugins/plugin-aboutPage-0.1.3.pkg.gz"
      length="16630" type="application/x-gzip" />
          <enclosure url="http://www.nikrou.net/journal/public/plugins/plugin-aboutPage-0.1.3.tar.gz"
      length="13178" type="application/x-gzip" />
    
    
      </item>
    
  <item>
    <title>Une mission à Hong Kong</title>
    <link>http://www.nikrou.net/post/2008/02/28/Une-mission-a-Hong-Kong</link>
    <guid isPermaLink="false">urn:md5:b04ce7f431a6df22c9f4abe64c80c02d</guid>
    <pubDate>Thu, 28 Feb 2008 22:44:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Général</category>
        <category>google</category><category>internet</category>    
    <description>&lt;p&gt;On pourrait croire au premier abord, en ne lisant que le titre de cette article que j'ai eu la chance d'aller à &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Hong_Kong&quot;&gt;Hong Kong&lt;/a&gt;. J'aurais pu y prendre des photos, manger des crevettes, bosser aussi... remplir la mission pour laquelle j'aurais été envoyé si loin...&lt;/p&gt;    &lt;div class=&quot;fleft&quot;&gt;&lt;img src=&quot;http://www.nikrou.net/journal/public/.hong-kong_s.jpg&quot; alt=&quot;Hong Kong.jpg&quot; /&gt;&lt;/div&gt;
&lt;p&gt;Mais en fait il n'en est rien. Hong Kong, cette ville redevue chinoise depuis un peu plus de 10 ans (le 1er janvier 1997) ne m'attire pas spécialement. &lt;/p&gt;
&lt;p&gt;J'aurais pu y manger pleins de crevettes car je ne suis pas allergique (comprenne qui pourra) mais c'est à peu près la seule nourriture exotique que j'apprécie. Encore que je ne sache pas exactement de quel type est la nourriture à Hong Kong. Etant donné l'influence britanique, je pense que la nourriture doit se rapprocher de celle des londonniens, ce qui n'est pas forcément mieux. Le rosbif à la menthe, très peu pour moi!&lt;/p&gt;
&lt;p&gt;Allez, pour terminer une petite photo, comme si on y était. Cela fait rêver, non ?&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Une imprimante laser sous linux</title>
    <link>http://www.nikrou.net/post/2008/02/24/Une-imprimante-laser-sous-linux</link>
    <guid isPermaLink="false">urn:md5:24c82d9f3325e7ec4e02f28be736f264</guid>
    <pubDate>Sun, 24 Feb 2008 14:13:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Linux</category>
            
    <description>&lt;p&gt;Trouver une imprimante qui fonctionne parfaitement lorsqu'on a un système d'exploitation différent (gnu/linux distribution debian 64 bits), ce n'est pas une mince affaire! Entre les imprimantes qui ne fonctionnent tout simplement pas, faute de pilotes et celles qui fonctionnent qu'à moitié; pas facile de s'en sortir. Je pense avoir trouvé la perle rare.&lt;/p&gt;    &lt;p&gt;Samedi j'ai fait l'acquisition d'une imprimante laser couleur, une &lt;a hreflang=&quot;fr&quot; href=&quot;http://printer.konicaminolta.fr/imprimantes/produits/imprimantes-couleur/gammes-des-produits/magicolor-2530dl.html&quot;&gt;Konica Minolta magicolor® 2530&amp;nbsp;DL&lt;/a&gt;. Lorsque j'ai lu la description technique de la bête, j'ai eu le plaisir de voir qu'elle était supporté sous Linux®. Bon elle n'est pas nativement supporté sous debian mais on ne va pas demander la lune, non plus. C'est une imprimante laser couleur avec 4 toners séparés, une interface ethernet ou usb 2.0.&lt;/p&gt;
&lt;p&gt;Sur le site du constructeur, on trouve le package &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/RPM_Package_Manager&quot;&gt;rpm&lt;/a&gt; qui va bien, en théorie. Mais je n'ai trouvé que des versions pour version 32 bits!!! Une petite recherche me permet d'arriver sur la &lt;a hreflang=&quot;fr&quot; href=&quot;http://printer.konicaminolta.net/support/current_printers/mc2530dl_sup.htm#linux&quot;&gt;page support avec les sources&lt;/a&gt;. Je récupère finalement l'&lt;a hreflang=&quot;fr&quot; href=&quot;ftp://ftp.minolta-qms.com/pub/crc/out_going/linux/2530DL_lin64bit_2_1_1.zip&quot;&gt;archive 64 bits&lt;/a&gt;. Cette archive contient le package rpm et un tar.gz avec les sources. J'ai essayé de compiler les sources pour en faire un package debian en suivant la procédure suivante:&lt;/p&gt;
&lt;pre&gt;# unzip 2530DL_lin64bit_2_1_1.zip&lt;br /&gt;# cd 2530DL_64_v2.1.1/src&lt;br /&gt;# tar zxf magicolor2530DL-2.1.1.tar.gz&lt;br /&gt;# cd magicolor2530DL-2.1.1&lt;br /&gt;# fakeroot debian/rules binary&lt;/pre&gt;
&lt;p&gt;La procédure s'est terminée par une erreur:&lt;/p&gt;
&lt;pre&gt;rastertokmlf.c:2061: error: ‘usb_flag’ undeclared (first use in this function)&lt;/pre&gt;
&lt;p&gt;Il manquait deux packages: gawk, libcupsimage2-dev. Je ne sais pas si gawk est absolument nécessaire mais il y avait une erreur en début de fabrication du package signalant que gawk manquait. Une fois la fabrication du package terminé, il suffit de l'installer et de relancer cupsd pour qu'il prenne en compte le nouveau fichier ppd.&lt;/p&gt;
&lt;p&gt;Pour ceux qui n'arriverait pas à fabriquer le package, il y la possibilité de le fabriquer à partir du rpm avec &lt;a href=&quot;http://packages.debian.org/stable/admin/alien&quot; hreflang=&quot;fr&quot;&gt;alien&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;# alien magicolor2530DL-2.1.1-1.x86_64.rpm -d&lt;br /&gt;# dpkg -i magicolor2530dl_2.1.1-2_amd64.deb&lt;br /&gt;# /etc/init.d/cupsys restart&lt;/pre&gt;
&lt;p&gt;Il ne reste plus qu'à ajouter l'imprimante depuis cups.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Faire des transformations xslt avec perl</title>
    <link>http://www.nikrou.net/post/2008/02/19/Faire-des-transformations-xslt-avec-perl</link>
    <guid isPermaLink="false">urn:md5:8088331f4f6d2c78b43d14f87d76e12b</guid>
    <pubDate>Tue, 19 Feb 2008 11:51:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Perl</category>
        <category>perl</category><category>xml</category><category>xsl</category>    
    <description>&lt;p&gt;Pour mettre en forme un document &lt;acronym title=&quot;Extensible Markup Language&quot;&gt;XML&lt;/acronym&gt; et le présenter sur le web en tant que document html, le plus simple à mon sens est d'utiliser &lt;acronym title=&quot;Extensible Stylesheet Language Transformations&quot;&gt;XSLT&lt;/acronym&gt;.&lt;/p&gt;
&lt;p&gt;Il faut ensuite faire appel à un moteur XSL pour faire les transformations. Ma préférence va à la &lt;a hreflang=&quot;en&quot; href=&quot;http://xmlsoft.org/XSLT/&quot;&gt;Libxslt&lt;/a&gt; qui est une implémentation en &lt;a href=&quot;http://fr.wikipedia.org/wiki/C_%28langage%29&quot;&gt;C&lt;/a&gt; de &lt;acronym&gt;XSLT&lt;/acronym&gt; 1.0. J'utilise ensuite une interface en &lt;a hreflang=&quot;en&quot; href=&quot;http://www.perl.com/&quot;&gt;perl&lt;/a&gt; de la librairie Lixslt à travers le module &lt;a hreflang=&quot;en&quot; href=&quot;http://search.cpan.org/dist/XML-LibXSLT/LibXSLT.pm&quot;&gt;XML::LibXSLT&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;Imaginons le fichier &lt;acronym&gt;XML&lt;/acronym&gt; suivant:&lt;/p&gt;
&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;iso-8859-1&quot;?&amp;gt;&lt;br /&gt;&amp;lt;articles&amp;gt;&lt;br /&gt;  &amp;lt;article&amp;gt;&lt;br /&gt;    &amp;lt;titre&amp;gt;Faire des transformations XSLT en perl.&amp;lt;/titre&amp;gt;&lt;br /&gt;    &amp;lt;entete&amp;gt;perl est le couteau suisse du programmeur. On peut tout faire avec. Cet article va vous présenter le module XML::LibXSLT&amp;lt;/entete&amp;gt;&lt;br /&gt;    &amp;lt;date&amp;gt;2007-12-26T17:56:17+00:00&amp;lt;/date&amp;gt;&lt;br /&gt;  &amp;lt;/article&amp;gt;&lt;br /&gt;  &amp;lt;article&amp;gt;&lt;br /&gt;    &amp;lt;titre&amp;gt;PHP6, c'est pour bientôt.&amp;lt;/titre&amp;gt;&lt;br /&gt;    &amp;lt;entete&amp;gt;Alors que la version 5 de php n'est pas encore définitivement adopté par la communauté, la version 6 pointe le bout de son nez!&amp;lt;/entete&amp;gt;&lt;br /&gt;    &amp;lt;date&amp;gt;2008-01-09T07:20:26+00:00&amp;lt;/date&amp;gt;&lt;br /&gt;  &amp;lt;/article&amp;gt;&lt;br /&gt;  &amp;lt;article&amp;gt;&lt;br /&gt;    &amp;lt;titre&amp;gt;Des exceptions en perl&amp;lt;/titre&amp;gt;&lt;br /&gt;    &amp;lt;entete&amp;gt;Comment gérer les exceptions en perl ?&amp;lt;/entete&amp;gt;&lt;br /&gt;    &amp;lt;date&amp;gt;2008-02-13T16:01:03+00:00&amp;lt;/date&amp;gt;&lt;br /&gt;  &amp;lt;/article&amp;gt;&lt;br /&gt;&amp;lt;/articles&amp;gt;&lt;/pre&gt;
&lt;p&gt;En utilisant la feuille de style xslt suivante:&lt;/p&gt;
&lt;pre&gt;&amp;lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet xmlns:xsl=&quot;http://www.w3.org/1999/XSL/Transform&quot; version=&quot;1.0&quot;&amp;gt;&lt;br /&gt;  &amp;lt;xsl:output method=&quot;html&quot; version=&quot;1.0&quot; indent=&quot;yes&quot; encoding=&quot;utf-8&quot; omit-xml-declaration=&quot;no&quot;/&amp;gt;&lt;br /&gt;  &lt;br /&gt;  &amp;lt;xsl:template match=&quot;/articles&quot;&amp;gt;&lt;br /&gt;    &amp;lt;h1&amp;gt;Les derniers articles publiés&amp;lt;/h1&amp;gt;&lt;br /&gt;    &amp;lt;xsl:apply-templates select=&quot;article&quot;/&amp;gt;&lt;br /&gt;  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&lt;br /&gt;  &amp;lt;xsl:template match=&quot;article&quot;&amp;gt;&lt;br /&gt;    &amp;lt;div class=&quot;article&quot;&amp;gt;&lt;br /&gt;      &amp;lt;h2&amp;gt;&amp;lt;xsl:value-of select=&quot;titre&quot;/&amp;gt;&amp;lt;/h2&amp;gt;&lt;br /&gt;      &amp;lt;span class=&quot;date&quot;&amp;gt;&amp;lt;xsl:value-of select=&quot;date&quot;/&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;      &amp;lt;p&amp;gt;&amp;lt;xsl:value-of select=&quot;entete&quot;&amp;gt;&amp;lt;/xsl:value-of&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;    &amp;lt;/div&amp;gt;&lt;br /&gt;  &amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;/pre&gt;
&lt;p&gt;On souhaite obtenir le résultat suivant:&lt;/p&gt;
&lt;pre&gt;&amp;lt;h1&amp;gt;Les&amp;nbsp;derniers&amp;nbsp;articles&amp;nbsp;publiés&amp;lt;/h1&amp;gt;&lt;br /&gt;&amp;lt;div&amp;nbsp;class=&quot;article&quot;&amp;gt;&lt;br /&gt;   &amp;lt;h2&amp;gt;Faire&amp;nbsp;des&amp;nbsp;transformations&amp;nbsp;XSLT&amp;nbsp;en&amp;nbsp;perl.&amp;lt;/h2&amp;gt;&lt;br /&gt;   &amp;lt;span&amp;nbsp;class=&quot;date&quot;&amp;gt;2007-12-26T17:56:17+00:00&amp;lt;/span&amp;gt;&lt;br /&gt;   &amp;lt;p&amp;gt;perl&amp;nbsp;est&amp;nbsp;le&amp;nbsp;couteau&amp;nbsp;suisse&amp;nbsp;du&amp;nbsp;programmeur.&amp;nbsp;&lt;br /&gt;   On&amp;nbsp;peut&amp;nbsp;tout&amp;nbsp;faire&amp;nbsp;avec.&amp;nbsp;Cet&amp;nbsp;article&amp;nbsp;va&amp;nbsp;vous&amp;nbsp;présenter&amp;nbsp;le&amp;nbsp;module&amp;nbsp;XML::LibXSLT&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;nbsp;class=&quot;article&quot;&amp;gt;&lt;br /&gt;   &amp;lt;h2&amp;gt;PHP6,&amp;nbsp;c'est&amp;nbsp;pour&amp;nbsp;bientôt.&amp;lt;/h2&amp;gt;&lt;br /&gt;   &amp;lt;span&amp;nbsp;class=&quot;date&quot;&amp;gt;2008-01-09T07:20:26+00:00&amp;lt;/span&amp;gt;&lt;br /&gt;   &amp;lt;p&amp;gt;Alors&amp;nbsp;que&amp;nbsp;la&amp;nbsp;version&amp;nbsp;5&amp;nbsp;de&amp;nbsp;php&amp;nbsp;n'est&amp;nbsp;pas&amp;nbsp;encore&amp;nbsp;définitivement&amp;nbsp;adoptée&lt;br /&gt;   &amp;nbsp;par&amp;nbsp;la&amp;nbsp;communauté,&amp;nbsp;la&amp;nbsp;version&amp;nbsp;6&amp;nbsp;pointe&amp;nbsp;le&amp;nbsp;bout&amp;nbsp;de&amp;nbsp;son&amp;nbsp;nez!&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;br /&gt;&amp;lt;div&amp;nbsp;class=&quot;article&quot;&amp;gt;&lt;br /&gt;   &amp;lt;h2&amp;gt;Des&amp;nbsp;exceptions&amp;nbsp;en&amp;nbsp;perl&amp;lt;/h2&amp;gt;&lt;br /&gt;   &amp;lt;span&amp;nbsp;class=&quot;date&quot;&amp;gt;2008-02-13T16:01:03+00:00&amp;lt;/span&amp;gt;&lt;br /&gt;   &amp;lt;p&amp;gt;Comment&amp;nbsp;gérer&amp;nbsp;les&amp;nbsp;exceptions&amp;nbsp;en&amp;nbsp;perl&amp;nbsp;?&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/div&amp;gt;&lt;/pre&gt;
&lt;p&gt;Le code qui permet de faire cela n'est pas bien complexe:&lt;/p&gt;
&lt;pre&gt;#!/usr/bin/perl -w&lt;br /&gt;&lt;br /&gt;use warnings;&lt;br /&gt;use strict;&lt;br /&gt;use XML::LibXML;&lt;br /&gt;use XML::LibXSLT;&lt;br /&gt;&lt;br /&gt;my $parser = XML::LibXML-&amp;gt;new();&lt;br /&gt;my $xslt = XML::LibXSLT-&amp;gt;new();&lt;br /&gt;$xslt-&amp;gt;max_depth(2000);&lt;br /&gt;my $source = $parser-&amp;gt;parse_file('source.xml');&lt;br /&gt;my $style_doc = $parser-&amp;gt;parse_file('source.xsl');&lt;br /&gt;my $stylesheet = $xslt-&amp;gt;parse_stylesheet($style_doc);&lt;br /&gt;my $result = $stylesheet-&amp;gt;transform($source);&lt;br /&gt;print $stylesheet-&amp;gt;output_string($result);&lt;/pre&gt;
&lt;p&gt;Rien de bien compliqué, en fait.&lt;/p&gt;
&lt;p&gt;Note:&lt;br /&gt;Si quelqu'un connait un moyen simple de colorer le code, je suis ouvert à toutes propositions. Merci d'avance.&lt;/p&gt;</description>
    
          <enclosure url="http://www.nikrou.net/journal/public/source.xml"
      length="767" type="text/plain" />
          <enclosure url="http://www.nikrou.net/journal/public/source.xsl"
      length="637" type="text/plain" />
          <enclosure url="http://www.nikrou.net/journal/public/transform.pl"
      length="414" type="text/plain" />
          <enclosure url="http://www.nikrou.net/journal/public/resultat.html"
      length="726" type="text/html" />
    
    
      </item>
    
  <item>
    <title>Image instable sur tf1</title>
    <link>http://www.nikrou.net/post/2008/01/31/Image-instable-sur-tf1</link>
    <guid isPermaLink="false">urn:md5:e6067696db9c7406e597b4d68495cd45</guid>
    <pubDate>Thu, 31 Jan 2008 09:35:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Internet</category>
        <category>free</category><category>freebox</category><category>internet</category><category>tv</category>    
    <description>&lt;p&gt;Depuis lundi, lorsque je regarde TF1 (j'ai honte mais ce n'est pas de ma faute si c'est eux qui ont acheté les droits de &lt;a title=&quot;Docteur House&quot; hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Dr_House&quot;&gt;ma série préférée&lt;/a&gt;) via ma freebox HD, l'image est très instable comme si la prise péritel n'était pas correctement branchée. Ce problème ne se produit que sur TF1.&lt;/p&gt;    &lt;p&gt;Ce phénomène a commencé après la mise à jour du dernier firmware. J'ai essayé de remettre à jour le firmware, y compris du boitier adsl. Mais rien n'a fonctionné. J'ai trouvé sur je ne sais plus quel forum une solution qui me paraissait saugrenue sur le moment mais qui a fonctionné. J'ai changé le format d'affichage de l'image et je l'ai passé de &lt;strong&gt;auto&lt;/strong&gt; à &lt;strong&gt;4/3&lt;/strong&gt;. J'ai fait cela en appuyant sur le bouton jaune à gauche du zéro. Tout est rentré dans l'ordre.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Proposition de prix</title>
    <link>http://www.nikrou.net/post/2008/01/20/Proposition-de-prix</link>
    <guid isPermaLink="false">urn:md5:ea3383402698e0e559d06518fd1403cd</guid>
    <pubDate>Sun, 20 Jan 2008 21:37:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Immobilier</category>
        <category>bulle immobilière</category><category>krach</category>    
    <description>&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.nikrou.net/post/2007/12/31/Y-aura-t-il-un-nouveau-krach-immobilier-en-france&quot;&gt;Par les temps qui courts&lt;/a&gt;, si l'idée saugrenue d'acheter vous prenait malgré tout, n'hésitez pas à faire une proposition de prix bien en dessous du prix proposé par le vendeur. Nous avons visité une maison qui nous plaisait vraiment; Nous l'avons visité trois fois. Le prix est bullesque même s'il est dans la moyenne des prix des maisons environnantes.    &lt;p&gt;Il y a quinze jours, j'ia envoyé un courrier au propriétaire (avec copie à l'agent immobilier) qui ressemblait à cela :&lt;/p&gt;
&lt;pre&gt;VILLE, le DATE DU JOUR&lt;br /&gt;Nicolas XXXX&lt;br /&gt;3 rue de la Rivière&lt;br /&gt;90 000 VILLE&lt;br /&gt;&lt;br /&gt;A l’intention de Monsieur XXX&lt;br /&gt;Agence Immobilière XXX&lt;br /&gt;12 rue du Ruisseau&lt;br /&gt;90 000 VILLE&lt;br /&gt;&lt;br /&gt;Objet : Offre d’achat&lt;br /&gt;&lt;br /&gt;Cher Monsieur,&lt;br /&gt;&lt;br /&gt;Suite aux différentes visites effectuées par l’intermédiaire de votre agence pour le bien situé au ADRESSE DU BIEN, nous vous prions de bien vouloir noter notre proposition d’achat pour un montant de NNNNNNN € (MONTANT EN TOUTES LETTRES euros) frais d’agence inclus.&lt;br /&gt;&lt;br /&gt;Notre financement est assuré de la manière suivante :&lt;br /&gt;1.Un prêt d’un montant de NNNNN € souscrit auprès de la NOM DE LA BANQUE sur une période de NN ans au taux de NN %, hors assurance.&lt;br /&gt;2.Un apport personnel de NNNN € qui viendra en complément du montant du prêt&lt;br /&gt;3.Un apport personnel de NNNN € pour couvrir les frais de mutation (Frais de notaires, taxes etc..)&lt;br /&gt;&lt;br /&gt;Je vous prie de bien vouloir noter que nous disposons aujourd’hui d’un avis positif de notre banque pour l’obtention de ce prêt compte tenu de la qualité de notre historique bancaire et de notre situation professionnelle stable.&lt;br /&gt;&lt;br /&gt;Notre offre est valable jusqu’au DATE DE FIN DE L'OFFRE, sous réserve d'une stabilité des taux d'intérêt entre aujourd'hui et la signature d’un compromis. En effet, une augmentation trop importante des taux pendant cette période remettrait en question notre capacité d'emprunt et l’avis favorable de notre établissement financier.&lt;br /&gt;&lt;br /&gt;Sincères salutations,&lt;br /&gt;&lt;br /&gt;Signature,&lt;/pre&gt;
&lt;p&gt;J'ai fait une proposition à environ 30% en dessous du prix le moins cher. J'ai posté mes lettres le jeudi soir. Le vendredi matin le propriètaire m'a laissé un message sur mon répondeur me disant en susbtance que &quot;c'est inadmissible, scandaleux...&quot;. En clair, il n'est pas prêt à baisser son prix à un niveau raisonnable. &lt;/p&gt;
&lt;p&gt;Non content d'avoir juste parler à mon répondeur il m'a appelé le samedi matin avec le même genre de propos bullesques. Il se croyait à la tête d'un gros capital mais malheureusement &quot;il ne faut pas vendre la peau de l'ours avant de l'avoir tué&quot;. Il n'aura son capital que lorsqu'un acheteur aura signé un compromis de vente! Mais à quel prix!!! &lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Faut-il encore acheter son logement ?</title>
    <link>http://www.nikrou.net/post/2008/01/01/Faut-il-encore-acheter-son-logement</link>
    <guid isPermaLink="false">urn:md5:107a32914374eb3ecaef03315a72a2cb</guid>
    <pubDate>Tue, 01 Jan 2008 17:43:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Immobilier</category>
        <category>bulle immobilière</category><category>krach</category>    
    <description>&lt;p&gt;La question peut paraître idiote mais si on n'écoute que ses collègues, ses amis ou les agents immobiliers, la réponse est &lt;strong&gt;oui&lt;/strong&gt; sans hésiter ! Bizzarement j'hésite!&lt;/p&gt;    &lt;p&gt;Depuis que je travaille (1998; bientôt 10 ans!! ), j'entends toujours le même discours : &quot;il faut acheter!&amp;nbsp; Payer un loyer, c'est jeter l'argent par les fenêtres ! Il vaut mieux acheter : le remboursement d'un prêt ne coûte pas plus cher qu'un loyer... etc...&quot; &lt;/p&gt;
&lt;p&gt;Je ne sais pas si toutes ces tautologies ont été valables un jour mais aujourd'hui en faisant des simulations, j'arrive à des remboursements deux fois plus élevés que mon loyer actuel. Cherchez l'erreur ! &lt;/p&gt;
&lt;p&gt;Vaut-il mieux louer ou acheter dans ce cas ? Aujourd'hui je préfère louer. Demain, on verra. Je préfère placer la différence entre mon loyer et ce que je rembourserais et me constituer un joli capital qui me permettra d'acheter comptant et ne pas payer ma maison deux fois.&lt;/p&gt;
&lt;p&gt;Ce qui est marrant dans le discours de ceux qui vont conseillent d'acheter, c'est le type de logement qu'ils occupent suivant qu'ils louent ou qu'ils achètent. En location, on prend un grand logement, dans le centre, bien exposé, avec un p'tit jardin. Mais ils ne peuvent pas acheter ce logement et du coup en achat, ils en choisissent un près de l'autoroute avec des maisons toutes identiques, sans jardin, avec des vis-à-vis de tous les côtés. Pourquoi ? Ont-ils perdu leur bon sens ?&lt;/p&gt;
&lt;p&gt;Pour conclure, je vais attendre tranquillemet &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.nikrou.net/post/2007/12/31/Y-aura-t-il-un-nouveau-krach-immobilier-en-france&quot;&gt;l'éclatement de cette nouvelle bulle immobillière&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Y-aura-t-il un nouveau krach immobilier en France ?</title>
    <link>http://www.nikrou.net/post/2007/12/31/Y-aura-t-il-un-nouveau-krach-immobilier-en-france</link>
    <guid isPermaLink="false">urn:md5:41b934b5a7a06f4d13a1674150599ddc</guid>
    <pubDate>Mon, 31 Dec 2007 13:57:00 +0100</pubDate>
    <dc:creator>Nicolas</dc:creator>
        <category>Immobilier</category>
        <category>bulle immobilière</category><category>krach</category>    
    <description>&lt;p&gt;Pour ceux qui ont la mémoire courte, le dernier &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Krach#Krach_Immobilier_de_1991&quot;&gt;krach immobilier&lt;/a&gt; en France date de 1991. Mais pour qu'il y ait un krach, il faut qu'il y ait une bulle spéculative, une bulle immobilière. La bulle immobilière semble invisible et nombreux sont ceux qui feignent encore de la voir! On ne se rend vraiment compte qu'il y avait une bulle que lorsqu'elle éclate.&lt;/p&gt;    &lt;p&gt;Premièrement, je vais essayer de définir ce qu'est une bulle immobilière. On parle de bulle spécultaive (bulle immobilière) lorsqu'il y a une hausse rapide de la valeur des biens (immobiliers). Et cette hausse rapide n'est pas corrélée avec des fondamentaux économique tels que le &lt;acronym title=&quot;Produit Intérieur Brut&quot;&gt;PIB&lt;/acronym&gt;, la hausse des salaires, l'inflation,... &lt;/p&gt;
&lt;p&gt;Entre 1998 et 2007, les prix ont plus que doublés (plus de 100% d'augmentation). Sur la même période, le PIB n'a augmenté que de 25%!
Votre salaire a-t-il doublé ?&lt;/p&gt;
&lt;p&gt;Pour revenir à un niveau correct, il faudrait que les prix soit divisé par deux. Ces chiffres semblent délirant mais ce n'est pas la
première fois : entre 1991 et 1998 les prix ont été multiplié par 1.5 (50%) et après le &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Krach#Krach_Immobilier_de_1991&quot;&gt;krach immobilier de 1991&lt;/a&gt;, ils sont redescendu de 30% ou 40% en quelques années.&lt;/p&gt;
&lt;p&gt;Le dégonflement de la bulle peut-être lent (plusieurs années ou dizaines d'années) ou rapide sous la forme d'un krach comme pour &lt;a hreflang=&quot;fr&quot; href=&quot;http://fr.wikipedia.org/wiki/Krach#Bulle_internet_de_2000&quot;&gt;l'éclatement de la bulle internet&lt;/a&gt;.&amp;nbsp; Je ne vais pas faire ma &quot;madame soleil&quot; mais je pense vraiment que la baisse qui semble s'amorcée en cette fin d'année 2007 va nettement s'amplifier en 2008. Après y-aura-il un krach ? L'avenir le dira!&lt;/p&gt;</description>
    
    
    
      </item>
    
</channel>
</rss>