<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.causeries-numeriques.fr/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>Causeries numériques - Des pingouins et des hommes</title>
  <link>http://www.causeries-numeriques.fr/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Tue, 07 Feb 2012 14:32:21 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Testez vos regexp en ligne</title>
    <link>http://www.causeries-numeriques.fr/post/2009/06/07/Testez-vos-regexp-en-ligne</link>
    <guid isPermaLink="false">urn:md5:ab10cc4c11dbbd9a326ac8c820f7d37b</guid>
    <pubDate>Sun, 07 Jun 2009 17:53:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>regexp</category>    
    <description>    &lt;p&gt;Tout est dans le titre&amp;nbsp;!
&lt;a href=&quot;http://gskinner.com/RegExr/&quot; hreflang=&quot;en&quot;&gt;regexr&lt;/a&gt; est un éditeur/testeur d'expressions régulières en ligne. On peut placer le texte que l'on veut pour tester, les principales options sont gérées, enfin bref que du bon&amp;nbsp;!
Y'a même moyen d'en avoir une version off-line, mais il existe beaucoup d'autres outils équivalents dans ce cas.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2009/06/07/Testez-vos-regexp-en-ligne#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2009/06/07/Testez-vos-regexp-en-ligne#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/47</wfw:commentRss>
      </item>
    
  <item>
    <title>Un autre uniligne en Ruby</title>
    <link>http://www.causeries-numeriques.fr/post/2008/11/11/Un-autre-uniligne-en-Ruby</link>
    <guid isPermaLink="false">urn:md5:2b21f1043579106988ea9660a1e72138</guid>
    <pubDate>Tue, 11 Nov 2008 21:44:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>ruby</category><category>uniligne</category>    
    <description>    &lt;p&gt;Renommer les fichiers qui composent un répertoire et souvent une galère à la main. J'ai un script qui me permet de le faire, mais je voulais voir si on pouvait le faire en une ligne de Ruby, la réponse est là&amp;nbsp;:&lt;/p&gt;
&lt;code class=&quot;ruby&quot;&gt;ruby -e 'Dir.&lt;span style=&quot;color:#9900CC;&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;*.txt&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#123;&lt;/span&gt; |f| File.&lt;span style=&quot;color:#9900CC;&quot;&gt;rename&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;f,f.&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;gsub&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;/^&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;\d\d&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; /,%q&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;\&lt;span style=&quot;color:#006666;&quot;&gt;1&lt;/span&gt; - &lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;L'option &lt;code&gt;-e&lt;/code&gt; permet de faire exécuter la chaîne de caractères par l'interpréteur ruby. Pour éviter que &lt;code&gt;bash&lt;/code&gt; n'interprète les instructions on les places entre apostrophes (ça permet de garder les guillemets pour la suite du programme).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;La méthode &lt;code&gt;glob&lt;/code&gt; de la classe &lt;code&gt;Dir&lt;/code&gt; liste tous les fichiers correspondant au motif placé en argument (ici, tous les fichiers en &lt;code&gt;.txt&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Un bloc est utilisé avec la méthode &lt;code&gt;each&lt;/code&gt;, ce bloc est délimité par les accolades, la variable &lt;code&gt;f&lt;/code&gt; prendra le nom d'un des fichiers à chaque itération.&lt;/li&gt;
&lt;li&gt;La méthode &lt;code&gt;rename&lt;/code&gt; de la classe &lt;code&gt;File&lt;/code&gt; est utilisée pour renommer le fichier.&lt;/li&gt;
&lt;li&gt;Le nouveau nom du fichier est construit à partir d'un expression régulière avec la méthode &lt;code&gt;gsub&lt;/code&gt;. Les apostrophes ne pouvant pas être utilisés, on est obligé de passer par une notation &lt;code&gt;%q&lt;a href=&quot;http://www.causeries-numeriques.fr/post/2008/11/11/[...&quot; title=&quot;[...&quot;&gt;[...&lt;/a&gt;]&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pour éviter de planter des fichiers, il est judicieux de tester la regexp avec un &lt;code&gt;puts&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;code class=&quot;ruby&quot;&gt;ruby -e 'Dir.&lt;span style=&quot;color:#9900CC;&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;*.txt&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#123;&lt;/span&gt; |f| &lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;puts&lt;/span&gt; f+&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;-&amp;gt;&amp;quot;&lt;/span&gt;+f.&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;gsub&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;/^&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;\d\d&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; /,%q&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;\&lt;span style=&quot;color:#006666;&quot;&gt;1&lt;/span&gt; - &lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#125;&lt;/span&gt;'&lt;/code&gt;


&lt;p&gt;&lt;strong&gt;edit du 13/11&lt;/strong&gt;
&lt;code&gt;glob&lt;/code&gt; peut être remplacé par &lt;code&gt;&lt;a href=&quot;http://www.causeries-numeriques.fr/post/2008/11/11/[...&quot; title=&quot;[...&quot;&gt;[...&lt;/a&gt;]&lt;/code&gt;&lt;/p&gt;
&lt;code class=&quot;ruby&quot;&gt;ruby -e 'Dir&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;*.txt&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#123;&lt;/span&gt; |f| &lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;puts&lt;/span&gt; f+&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;-&amp;gt;&amp;quot;&lt;/span&gt;+f.&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;gsub&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;/^&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;\d\d&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; /,%q&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;\&lt;span style=&quot;color:#006666;&quot;&gt;1&lt;/span&gt; - &lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#125;&lt;/span&gt;'&lt;/code&gt;

&lt;p&gt;c'est valable pour le &lt;code&gt;puts&lt;/code&gt; ou pour le &lt;code&gt;File.rename&lt;/code&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/11/11/Un-autre-uniligne-en-Ruby#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/11/11/Un-autre-uniligne-en-Ruby#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/41</wfw:commentRss>
      </item>
    
  <item>
    <title>De FAT vers NTFS</title>
    <link>http://www.causeries-numeriques.fr/post/2008/11/11/De-FAT-vers-NTFS</link>
    <guid isPermaLink="false">urn:md5:026e885e948ad8d7e8069bc4689e062e</guid>
    <pubDate>Tue, 11 Nov 2008 14:04:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>fat</category><category>ntfs</category><category>ubuntu</category><category>windows</category>    
    <description>    &lt;p&gt;Maintenant (bon c'est pas du très nouveau...) que Ubuntu supporte bien le format NTFS, on va pouvoir convertir tous les lecteurs en NTFS. La commande est simple &lt;code&gt;convert d: /fs:ntfs&lt;/code&gt; pour le lecteur &lt;code&gt;d:&lt;/code&gt; (à changer bien sur en fonction du lecteur !!!). En plus, si le lecteur n'est pas accessible (fichiers encore ouverts, ...) la conversion peut être programmée au prochain démarrage de Windows.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/11/11/De-FAT-vers-NTFS#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/11/11/De-FAT-vers-NTFS#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/40</wfw:commentRss>
      </item>
    
  <item>
    <title>Uniligne en Ruby</title>
    <link>http://www.causeries-numeriques.fr/post/2008/10/20/Uniligne-en-Ruby</link>
    <guid isPermaLink="false">urn:md5:d792ba47fa861f60e214191fb6002cc7</guid>
    <pubDate>Mon, 20 Oct 2008 15:32:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>ruby</category><category>uniligne</category>    
    <description>    &lt;p&gt;Mes listings d'étudiants me sont fournis au format suivant&lt;/p&gt;
&lt;pre&gt;
...
DUPONT,PAUL
DURAND,PIERRE
...
&lt;/pre&gt;

&lt;p&gt;La présentation &quot;tout en majuscules&quot; ne me plaît pas beaucoup&amp;nbsp;; je préfère une majuscule en début de nom et en début de prénom. Plutôt que m'amuser à tout faire à la main, j'ai écrit un petit &lt;a href=&quot;http://fr.wikipedia.org/wiki/Uniligne&quot;&gt;uniligne&lt;/a&gt; qui fait tout d'un coup.&lt;/p&gt;


&lt;p&gt;Pour obtenir un comportement uniligne en ruby, on utilise plusieurs options sur la ligne de commande (l'option &lt;code&gt;-e&lt;/code&gt; est obligatoire). Les principales options sont les suivantes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-e&lt;/code&gt; permet de créer un uniligne, en spécifiant les instructions depuis la ligne de commande (les instructions sont placées entre apostrophes pour éviter que le shell ne les interprète).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-n&lt;/code&gt; Ruby place les instructions dans une boucle (&lt;code&gt;while gets ... end&lt;/code&gt;) en utilisant le fichier (dont le nom et placé en argument sur la ligne de commande) comme source.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt; est identique à &lt;code&gt;-n&lt;/code&gt; avec en plus un affichage de &lt;code&gt;$_&lt;/code&gt; (la ligne lue) à la fin de la boucle.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;L'uniligne obtenue est le suivant&amp;nbsp;:&lt;/p&gt;
&lt;code class=&quot;ruby&quot;&gt;ruby -ne '&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;puts&lt;/span&gt; $_.&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;split&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;each&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#123;&lt;/span&gt;|n| n.&lt;span style=&quot;color:#9900CC;&quot;&gt;capitalize&lt;/span&gt;!&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#125;&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;,&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; ' TD.&lt;span style=&quot;color:#9900CC;&quot;&gt;csv&lt;/span&gt; &amp;gt; TDmaj.&lt;span style=&quot;color:#9900CC;&quot;&gt;csv&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;La ligne lue (dans le fichier &lt;code&gt;TD.csv&lt;/code&gt;) est découpée en utilisant &lt;code&gt;split&lt;/code&gt; puis une boucle &lt;code&gt;each&lt;/code&gt; permet de traiter chaque élément avec &lt;code&gt;capitalize!&lt;/code&gt; pour passer que la première lettre en majuscule. Le contenu du tableau (issue du &lt;code&gt;each&lt;/code&gt;) et transformé en une chaîne en utilisant &lt;code&gt;join&lt;/code&gt; avec la virgule comme caractère de jointure. Une redirection finale (&lt;code&gt;&amp;gt; TDmaj.csv&lt;/code&gt;) envoie tout ça dans un nouveau fichier.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/10/20/Uniligne-en-Ruby#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/10/20/Uniligne-en-Ruby#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/38</wfw:commentRss>
      </item>
    
  <item>
    <title>Le lien du développeur</title>
    <link>http://www.causeries-numeriques.fr/post/2008/09/23/Le-lien-du-developpeur</link>
    <guid isPermaLink="false">urn:md5:7537e0675b7c26072f3d19a2e76c5d44</guid>
    <pubDate>Tue, 23 Sep 2008 14:03:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>css</category><category>html</category><category>java</category><category>perl</category><category>php</category><category>python</category><category>ruby</category><category>ruby on rails</category>    
    <description>    &lt;p&gt;Le site &lt;a href=&quot;http://www.gotapi.com&quot;&gt;gotAPI&lt;/a&gt; regroupe la majorité des API des langages usuels. Le site est pratique et paramétrable via des onglets pour choisir les langages qu'on utilisent. L'intérêt de la manip' c'est qu'on ne garde qu'un onglet sous Firefox, ça évite d'avoir une douzaine d'onglets d'ouverts quand on travaille sur plusieurs langages en même temps.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/09/23/Le-lien-du-developpeur#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/09/23/Le-lien-du-developpeur#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/37</wfw:commentRss>
      </item>
    
  <item>
    <title>Liste des polices LaTeX</title>
    <link>http://www.causeries-numeriques.fr/post/2007/11/08/Liste-des-polices-LaTeX</link>
    <guid isPermaLink="false">urn:md5:2abf9c9def37dc6a1a9109034481f486</guid>
    <pubDate>Thu, 08 Nov 2007 15:54:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>latex</category><category>polices</category>    
    <description>    &lt;p&gt;Le choix des polices sous LaTeX est toujours délicat car il est nécessaire de recompiler le document pour voir le résultat. De plus les polices n'ont pas vraiment des noms très explicites. Sans vraiment le chercher, je suis tombé sur un site qui référence les différentes polices LaTeX (livrées en standard ou à installer)&amp;nbsp;: &lt;a href=&quot;http://www.tug.dk/FontCatalogue/&quot;&gt;Font Catalogue&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;Les polices peut être triées par type (serif&lt;sup&gt;[&lt;a href=&quot;http://www.causeries-numeriques.fr/post/2007/11/08/#pnote-28-1&quot; id=&quot;rev-pnote-28-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;, sans serif, avec support des mathématiques,...)&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;http://www.causeries-numeriques.fr/post/2007/11/08/#rev-pnote-28-1&quot; id=&quot;pnote-28-1&quot;&gt;1&lt;/a&gt;] Une police avec serif  a des &quot;petites pattes&quot; aux extrémités voir &lt;a href=&quot;http://fr.wikipedia.org/wiki/Serif&quot;&gt;wikipédia&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/11/08/Liste-des-polices-LaTeX#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/11/08/Liste-des-polices-LaTeX#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/28</wfw:commentRss>
      </item>
    
  <item>
    <title>Installation de Piklab sous ubuntu</title>
    <link>http://www.causeries-numeriques.fr/post/2007/09/30/Instalation-de-Piklab-sous-ubuntu</link>
    <guid isPermaLink="false">urn:md5:062db3c557fe6feed02b08548ca0dfc0</guid>
    <pubDate>Sun, 30 Sep 2007 14:43:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>microchip</category><category>pic</category><category>ubuntu</category>    
    <description>&lt;p&gt;Les microcontrôleurs Microchip PIC sont beaucoup utilisés par l'amateur d'électronique (avec les Atmel AVR) . La suite de développement fournie par Microchip est très efficace mais ne fonctionne pas sous Linux et ne propose pas de compilateur C en standard. Nous allons faire d'une pierre deux coups en installant Piklab qui permet de compiler (en assembleur mais aussi en C via SDCC), simuler et programmer des PIC sous Ubuntu.&lt;/p&gt;    &lt;h3&gt;Installation&lt;/h3&gt;


&lt;h4&gt;Pré requis&lt;/h4&gt;


&lt;p&gt;Avant d'installer Piklab, quelques paquets doivent être installés&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;alien&lt;/code&gt; qui permet de convertir un paquet &lt;code&gt;rpm&lt;/code&gt; (paquet RedHat et compatibles) en un paquet &lt;code&gt;deb&lt;/code&gt; (debian et compatibles)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gputils&lt;/code&gt; et &lt;code&gt;gpsim&lt;/code&gt; sont l'assembleur et le simulateur de PIC&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sdcc&lt;/code&gt; est un compilateur C pour de nombreux microcontrôleurs dont les PICs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour les installer, soit la ligne de commande  (&lt;code&gt;apt-get&lt;/code&gt; ou &lt;code&gt;aptitude&lt;/code&gt;) soit Synaptic.&lt;/p&gt;


&lt;p&gt;Piklab est une application KDE, il faut donc les librairies Qt, la plupart du temps elles sont installées, car on a souvent des application KDE en plus des applications Gnome.&lt;/p&gt;


&lt;h4&gt;Installation de Piklab&lt;/h4&gt;


&lt;p&gt;Pour l'installation, la manœuvre est expliqué en anglais sur le &lt;a href=&quot;http://ubuntuforums.org/showthread.php?t=123481&quot;&gt;forum ubuntu&lt;/a&gt;.
Télécharger le fichier &lt;code&gt;piklab-0.14.5-1mdv2007.0.i586.rpm&lt;/code&gt; sur &lt;a href=&quot;http://sourceforge.net/project/showfiles.php?group_id=138852&quot;&gt;sourceforge&lt;/a&gt;. Ensuite le transformer en paquet &lt;code&gt;deb&lt;/code&gt; à l'aide de la commande suivante&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
sudo alien piklab-0.14.5-1mdv2007.0.i586.rpm
&lt;/pre&gt;

&lt;p&gt;Puis l'installer avec&lt;/p&gt;
&lt;pre&gt;
sudo dpkg -i piklab_0.14.5-2_i386.deb
&lt;/pre&gt;


&lt;p&gt;Ensuite il reste à construire des liens vers deux librairies (edit du 17/10/2007&amp;nbsp;: éventuellement le numéro de version peut changer)&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
sudo ln -s /usr/lib/libpcreposix.so.3.12.0 /usr/lib/libpcreposix.so.0
sudo ln -s /usr/lib/libpcre.so.3.12.0 /usr/lib/libpcre.so.0
&lt;/pre&gt;


&lt;p&gt;Ensuite pour lancer Piklab, soit la ligne de commande (&lt;code&gt;piklab&lt;/code&gt;), soit le menu &lt;em&gt;Applications&lt;/em&gt;, &lt;em&gt;Développement&lt;/em&gt;, &lt;em&gt;Piklab&lt;/em&gt;.&lt;/p&gt;



&lt;h3&gt;Premier projet en C&lt;/h3&gt;


&lt;h4&gt;Création du projet&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20070930/ConfigProjet.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20070930/.ConfigProjet_s.jpg&quot; alt=&quot;Configuration&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; /&gt;&lt;/a&gt;
Dans le menu &lt;em&gt;projet&lt;/em&gt;, choisir &lt;em&gt;nouveau projet&lt;/em&gt;. Dans la boite de dialogue qui apparait, choisir le processeur voulu et le compilateur SDCC. J'ai choisi un PIC16F628A qui est souvent utilisé pour des projets simples. Ensuite, cliquer sur &lt;em&gt;Next&lt;/em&gt;, une nouvelle boite apparait. Elle permet d'ajouter des fichiers existants au projet ou de choisir un fichier source modèle (un &lt;em&gt;template&lt;/em&gt;). C'est cette solution que nous allons retenir en cliquant sur &lt;em&gt;Finish&lt;/em&gt;. Un fichier &lt;code&gt;.c&lt;/code&gt; est crée avec une configuration par défaut. Nous allons maintenant retoucher la configuration des fusibles du PIC.&lt;/p&gt;


&lt;h4&gt;Configuration des fusibles&lt;/h4&gt;

&lt;p&gt;&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20070930/ConfigFusibles.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20070930/.ConfigFusibles_s.jpg&quot; alt=&quot;Configuration fusibles&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; /&gt;&lt;/a&gt;
Le menu &lt;em&gt;Tools&lt;/em&gt;  propose un assistant pour construire la configuration des fusibles en cliquant sur &lt;em&gt;Générateur de configuration...&lt;/em&gt;. La boite de dialogue ci-contre apparait. Pour notre test, j'ai choisi de modifier le type d'horloge en passant &lt;code&gt;FOSC&lt;/code&gt; à &lt;em&gt;Quartz/résonateur(0001)&lt;/em&gt;. Il faut ensuite copier la ligne de configuration dans le presse papier (en utilisant le bouton qui va bien !) puis remplacer la ligne de configuration existante avec le contenu du presse papier.&lt;/p&gt;


&lt;h4&gt;Écriture du programme&lt;/h4&gt;

&lt;p&gt;Là on va faire simple&amp;nbsp;! Dans la fonction &lt;code&gt;main&lt;/code&gt;, on va simplement ajouter un compteur dont on envoie la valeur sur le PORTB&amp;nbsp;:&lt;/p&gt;
&lt;code class=&quot;c&quot;&gt;&lt;span style=&quot;color: #993333;&quot;&gt;void&lt;/span&gt; main&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #993333;&quot;&gt;char&lt;/span&gt; i;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;for&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;i=&lt;span style=&quot;color: #cc66cc;&quot;&gt;0&lt;/span&gt;;i&amp;lt;=&lt;span style=&quot;color: #cc66cc;&quot;&gt;255&lt;/span&gt;;i++&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; PORTB=i;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;


&lt;h4&gt;Compilation et simulation&lt;/h4&gt;

&lt;p&gt;Pour construire l'ensemble du projet, appuyer sur &lt;code&gt;F8&lt;/code&gt; (ou aller dans le menu &lt;em&gt;Construire&lt;/em&gt; puis &lt;em&gt;Construire le projet&lt;/em&gt;). Après quelques lignes dans le journal de compilation (fenêtre du bas), la compilation est terminée. Quelques nouveaux fichiers sont crées, notamment le fichier &lt;code&gt;.asm&lt;/code&gt; qui contient le code assembleur obtenu.&lt;/p&gt;


&lt;p&gt;Avant de programmer le PIC, il est souvent utile de faire une petite simulation (d'autant plus que je n'ai pas de programmateur sous la main !). Nous allons donc faire une simulation qui va nous permettre de surveiller l'évolution du PORTB, qui doit normalement compter de 0 à 255.&lt;/p&gt;


&lt;p&gt;Pour commencer, nous allons ajouter le PORTB dans la liste des éléments à surveiller. En cliquant sur l'onglet &lt;em&gt;Vue surveillance&lt;/em&gt; dans le panneau de gauche, un nouvel onglet apparait dans l'éditeur. En cliquant sur le bouton PORTB, on  sélectionne &lt;em&gt;Surveiller&lt;/em&gt; pour ajouter le PORTB à la liste des registres observés.&lt;/p&gt;


&lt;p&gt;Ensuite, avant de lancer la simulation, il est utile de placer un (ou des) point(s) d'arrêt(s) pour interrompre le programme en cours d'exécution. Ouvrir le fichier &lt;code&gt;.asm&lt;/code&gt; en double cliquant dessus, puis se placer sur une ligne de code (par exemple &lt;code&gt;MOVF	r0x20,W&lt;/code&gt;) et cliquer du bouton droit (le menu &lt;em&gt;Définir un point d'arrêt&lt;/em&gt; apparait).&lt;/p&gt;


&lt;p&gt;Pour lancer la simulation, aller dans le menu &lt;em&gt;Débogueur&lt;/em&gt; puis &lt;em&gt;Démarrer&lt;/em&gt; (on peut aussi cliquer sur le bouton de la barre d'outils). La simulation commence et s'arrête sur le point d'arrêt qui devient vert. Il est possible de continuer la simulation soit en cliquant sur l'icône pas-à-pas (une flèche au dessus d'un x), soit en cliquant de nouveau sur le bouton &lt;em&gt;Démarrer&lt;/em&gt;.
Dans l'onglet &lt;em&gt;Vue surveillance&lt;/em&gt;, l'état du PORTB est mis à jour à chaque passage au point d'arrêt, on constate bien que la boucle compte.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/09/30/Instalation-de-Piklab-sous-ubuntu#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/09/30/Instalation-de-Piklab-sous-ubuntu#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/24</wfw:commentRss>
      </item>
    
  <item>
    <title>Le paquet du mois...</title>
    <link>http://www.causeries-numeriques.fr/post/2007/09/07/Le-paquet-du-mois</link>
    <guid isPermaLink="false">urn:md5:15d8a2e282e0b8b26a05c40afd75d2d9</guid>
    <pubDate>Fri, 07 Sep 2007 15:32:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>gtklp</category><category>imprimante</category><category>ubuntu</category>    
    <description>    &lt;p&gt;Un titre un peu gros pour attirer le regard... Un paquet méconnu d'Ubuntu est &lt;code&gt;gtklp&lt;/code&gt;, il est le complément idéal d'Adobe Reader. Il est présent en standard sur Ubuntu, donc pour l'installer&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
sudo aptitude install gtklp
&lt;/pre&gt;

&lt;p&gt;Ensuite, dans Acrobat Reader, choisir une imprimante &lt;code&gt;custom&lt;/code&gt; et remplir la ligne avec &lt;code&gt;/usr/bin/gtklp&lt;/code&gt;. &lt;code&gt;gtklp&lt;/code&gt; va alors intercepter toutes les impressions et proposer de nombreuses options comme 2 pages par feuille, contrôle du recto-verso pour les imprimantes qui le supportent, colorimétrie, copies groupées, bandeaux, filigrane...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/09/07/Le-paquet-du-mois#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/09/07/Le-paquet-du-mois#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/20</wfw:commentRss>
      </item>
    
  <item>
    <title>vim et Latex</title>
    <link>http://www.causeries-numeriques.fr/post/2007/08/31/vim-et-Latex</link>
    <guid isPermaLink="false">urn:md5:13a2e5458538ba5822c9f3afa2e15c30</guid>
    <pubDate>Fri, 31 Aug 2007 13:58:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>latex</category><category>vim</category>    
    <description>    &lt;p&gt;Le plugin Latex pour &lt;code&gt;vim&lt;/code&gt; pose quelque difficulté pour les francophones&amp;nbsp;: des accents sont remplacés par certains raccourcis.
Dans le fichier &lt;code&gt;~/.vim/ftplugin/tex.vim&lt;/code&gt; (le créer s'il n'existe pas), il faut ajouter les lignes suivantes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
imap &amp;lt;C-b&amp;gt; &amp;lt;Plug&amp;gt;Tex_MathBF
imap &amp;lt;C-c&amp;gt; &amp;lt;Plug&amp;gt;Tex_MathCal
imap &amp;lt;C-l&amp;gt; &amp;lt;Plug&amp;gt;Tex_LeftRight
imap &amp;lt;buffer&amp;gt; &amp;lt;leader&amp;gt;it &amp;lt;Plug&amp;gt;Tex_InsertItemOnThisLine
&lt;/pre&gt;


&lt;p&gt;Les trois premières lignes remplacent les commandes &lt;code&gt;ALT+B&lt;/code&gt;,&lt;code&gt;ALT+C&lt;/code&gt; et &lt;code&gt;ALT+L&lt;/code&gt; par &lt;code&gt;CTRL+B&lt;/code&gt;,&lt;code&gt;CTRL+C&lt;/code&gt; et &lt;code&gt;CTRL+L&lt;/code&gt;. pour mémoire, leurs fonctions sont les suivantes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ALT+B&lt;/code&gt; place le caractère précédent dans une commande &lt;code&gt;\mathbf{}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT+C&lt;/code&gt; place le caractère précedent dans \mathcal{}, s'il n'y a pas de caractères, place une commande &lt;code&gt;\cite{}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ALT+L&lt;/code&gt; propose plusieurs fonctions&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;si le caractère précédent est &lt;code&gt;(&lt;/code&gt;,&lt;code&gt;[&lt;/code&gt;,&lt;code&gt;|&lt;/code&gt;,&lt;code&gt;{&lt;/code&gt; ou &lt;code&gt;&amp;lt;&lt;/code&gt; elle complète l'expression par le caractère de fermeture associé&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;précédée de &lt;code&gt;q&lt;/code&gt; elle insère le bloc  &lt;code&gt;\lefteqn{&amp;lt;++&amp;gt;}&amp;lt;++&amp;gt;&lt;/code&gt;&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;dans tous les autres cas, elle place une commande &lt;code&gt;\label{&amp;lt;++&amp;gt;}&amp;lt;++&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La dernière ligne permet l'auto complétion de la commande &lt;code&gt;\item&lt;/code&gt;, il suffit de taper &lt;code&gt;\it&lt;/code&gt; pour que la commande &lt;code&gt;\item&lt;/code&gt; soit insérée.&lt;/p&gt;


&lt;p&gt;Tous les accents sont alors possibles sans passer par les commandes Latex &lt;code&gt;\'&lt;/code&gt;,...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/08/31/vim-et-Latex#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/08/31/vim-et-Latex#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/17</wfw:commentRss>
      </item>
    
  <item>
    <title>Dictionnaire français avec vim</title>
    <link>http://www.causeries-numeriques.fr/post/2007/08/30/Dictionnaire-francais-avec-vim</link>
    <guid isPermaLink="false">urn:md5:f1cdfc81571e01b17fb6a1f68a5f6a62</guid>
    <pubDate>Thu, 30 Aug 2007 11:13:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>dictionnaire</category><category>vim</category>    
    <description>    &lt;p&gt;Suite à une réinstallation d'Ubuntu, le dictionnaire français (UTF-8) de &lt;code&gt;vim&lt;/code&gt; était introuvable, conduisant à l'avertissement suivant lors de l'exécution de &lt;code&gt;vim&lt;/code&gt; (ou &lt;code&gt;gvim&lt;/code&gt;)&lt;/p&gt;
&lt;pre&gt;
Alerte: Liste de mots &amp;quot;fr.utf-8.spl&amp;quot; ou &amp;quot;fr.ascii.spl&amp;quot; introuvable
&lt;/pre&gt;

&lt;p&gt;Bien entendu, il n'y avait plus de correction orthographique...
Pour installer le dictionnaire français, il suffit de se placer dans le répertoire &lt;code&gt;/usr/share/vim/vim70/spell&lt;/code&gt; puis de télécharger les deux fichiers avec les commandes&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
sudo wget http://ftp.vim.org/pub/vim/runtime/spell/fr.utf-8.sug
sudo wget http://ftp.vim.org/pub/vim/runtime/spell/fr.utf-8.spl
&lt;/pre&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/08/30/Dictionnaire-francais-avec-vim#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/08/30/Dictionnaire-francais-avec-vim#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/16</wfw:commentRss>
      </item>
    
  <item>
    <title>Compilation automatisée de fichier Latex</title>
    <link>http://www.causeries-numeriques.fr/post/2007/08/14/Compilation-automatisee-de-fichier-Latex</link>
    <guid isPermaLink="false">urn:md5:20c67c76dcb316877b76370e0e75c7db</guid>
    <pubDate>Tue, 14 Aug 2007 14:17:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>latex</category><category>make</category><category>rake</category>    
    <description>&lt;p&gt;La compilation de document écrit avec Latex devient vite compliquée si différents types de fichiers entrent en jeu. Un script ou un &lt;code&gt;Makefile&lt;/code&gt; permet de simplifier cette tâche.&lt;/p&gt;    &lt;h3&gt;Besoin&lt;/h3&gt;


&lt;p&gt;Mes documents (écrit ou présentation réalisées avec &lt;a href=&quot;http://latex-beamer.sourceforge.net/&quot;&gt;beamer&lt;/a&gt;) sont produits par Latex. Pour chaque document, j'ai un répertoire qui contient le ou les fichiers Latex et des sous-répertoires.&lt;/p&gt;


&lt;h4&gt;Les différents sous-répertoires&lt;/h4&gt;


&lt;p&gt;Un répertoire &lt;code&gt;fig/&lt;/code&gt; contient des fichiers &lt;code&gt;png&lt;/code&gt; qui sont convertit en fichiers &lt;code&gt;eps&lt;/code&gt; à l'aide de l'utilitaire &lt;code&gt;convert&lt;/code&gt; présent dans le paquet &lt;code&gt;imagemagick&lt;/code&gt;.
Un répertoire &lt;code&gt;src/&lt;/code&gt; qui peut contenir toutes sortes de fichiers (C, SQL, Java, ...) qui sont inclus dans le document Latex à l'aide du &lt;em&gt;package&lt;/em&gt; &lt;code&gt;listings&lt;/code&gt;&lt;/p&gt;


&lt;h4&gt;Outil actuel&lt;/h4&gt;


&lt;p&gt;Un &lt;code&gt;Makefile&lt;/code&gt; présent dans le répertoire de travail assurait la compilation Latex alors qu'un autre &lt;code&gt;Makefile&lt;/code&gt; placé dans le répertoire &lt;code&gt;fig&lt;/code&gt; prenait en charge la conversion des images&amp;nbsp;; &lt;code&gt;make&lt;/code&gt; ne permet pas de travailler dans un autre répertoire.
A chaque nouveau document, je créais mes répertoire et copiais les deux &lt;code&gt;Makefile&lt;/code&gt;. Une simple commande &lt;code&gt;make&lt;/code&gt; me permettait de lancer la compilation (si nécessaire) ainsi que la conversion des images.&lt;/p&gt;


&lt;h3&gt;Développement d'un nouvel outil&lt;/h3&gt;


&lt;p&gt;Ce système de copie de fichier finissait par être assez pénible à l'usage. J'ai profité d'un peu de temps libre pour développer un outil pour automatiser toutes ces tâches (création des répertoires et compilation du fichier Latex) et rajouter des fonctionnalités.&lt;/p&gt;


&lt;h4&gt;Choix du système&lt;/h4&gt;

&lt;p&gt;Ces derniers temps je bidouille avec Ruby, j'ai donc choisi &lt;code&gt;rake&lt;/code&gt; pour gérer ce projet.  &lt;code&gt;rake&lt;/code&gt; utilise par défaut un fichier nommé &lt;code&gt;Rakefile&lt;/code&gt; lors de son appel.&lt;/p&gt;


&lt;h4&gt;Le fichier obtenu&lt;/h4&gt;

&lt;code class=&quot;ruby&quot;&gt;&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;require&lt;/span&gt; 'rake/clean'&lt;br /&gt;
&lt;br /&gt;
CLEAN.&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;include&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'*.&lt;span style=&quot;color:#9900CC;&quot;&gt;ps&lt;/span&gt;','*.&lt;span style=&quot;color:#9900CC;&quot;&gt;dvi&lt;/span&gt;','*.&lt;span style=&quot;color:#9900CC;&quot;&gt;log&lt;/span&gt;','*.&lt;span style=&quot;color:#9900CC;&quot;&gt;out&lt;/span&gt;','*.&lt;span style=&quot;color:#9900CC;&quot;&gt;aux&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#008000; font-style:italic;&quot;&gt;# Main file&lt;/span&gt;&lt;br /&gt;
MAIN = &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;truc.pdf&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
PNG = FileList&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;fig/*.png&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
EPS = PNG.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;eps&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
TEX = FileList&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;*.tex&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
SRC = FileList&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;src/*.*&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#93;&lt;/span&gt;&lt;br /&gt;
DVI = MAIN.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;dvi&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
desc &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;The default task : preview version&amp;quot;&lt;/span&gt;&lt;br /&gt;
task :default =&amp;gt; MAIN&lt;br /&gt;
file MAIN =&amp;gt; DVI&lt;br /&gt;
file DVI =&amp;gt; SRC&lt;br /&gt;
file DVI =&amp;gt; EPS&lt;br /&gt;
file DVI =&amp;gt; TEX&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#008000; font-style:italic;&quot;&gt;# Convert image files&lt;/span&gt;&lt;br /&gt;
rule '.&lt;span style=&quot;color:#9900CC;&quot;&gt;eps&lt;/span&gt;' =&amp;gt; '.&lt;span style=&quot;color:#9900CC;&quot;&gt;png&lt;/span&gt;' &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt; |t|&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;convert #{t.source} #{t.name}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;rm&amp;nbsp; #{t.source}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
file DVI &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; main_tex = MAIN.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;tex&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;latex #{main_tex}&amp;quot;&lt;/span&gt;&amp;nbsp; &lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;latex #{main_tex}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
desc &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;Screen resolution compilation&amp;quot;&lt;/span&gt;&lt;br /&gt;
file MAIN =&amp;gt; DVI &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color:#008000; font-style:italic;&quot;&gt;#puts &amp;quot;Main task... : \n #{t.investigation}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; main_dvi = MAIN.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;dvi&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; main_ps = MAIN.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;ps&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;dvips #{main_dvi}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;ps2pdf #{main_ps}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
desc &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;High resolution conversion&amp;quot;&lt;/span&gt;&lt;br /&gt;
task :final =&amp;gt; DVI &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; main_dvi = MAIN.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;dvi&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; main_ps = MAIN.&lt;span style=&quot;color:#9900CC;&quot;&gt;ext&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;'.&lt;span style=&quot;color:#9900CC;&quot;&gt;ps&lt;/span&gt;'&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;dvips -D600 -Z #{main_dvi}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;ps2pdf -dPDFSETTINGS=/prepress #{main_ps}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; sh &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;acroread #{MAIN} &amp;amp;&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
desc &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;Create directories&amp;quot;&lt;/span&gt;&lt;br /&gt;
task :init &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dir.&lt;span style=&quot;color:#9900CC;&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;fig&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Dir.&lt;span style=&quot;color:#9900CC;&quot;&gt;mkdir&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;src&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;/code&gt;


&lt;h4&gt;Quelques explications&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;La variable &lt;code&gt;MAIN&lt;/code&gt; définie le nom du fichier de sortie.&lt;/li&gt;
&lt;li&gt;La liste de fichiers &lt;code&gt;PNG&lt;/code&gt; permet de constuire la liste des futurs fichiers &lt;code&gt;EPS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Les listes &lt;code&gt;TEX&lt;/code&gt; et &lt;code&gt;SRC&lt;/code&gt; contiennent les fichiers &lt;code&gt;*.tex*&lt;/code&gt; et ceux contenus dans le répertoire &lt;code&gt;src&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Une règle (&lt;code&gt;rule&lt;/code&gt;) permet de définir la conversion &lt;code&gt;png&lt;/code&gt; vers &lt;code&gt;eps&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;La règle associée au fichier &lt;code&gt;DVI&lt;/code&gt; dépend des listes de fichiers &lt;code&gt;TEX&lt;/code&gt;, &lt;code&gt;SRC&lt;/code&gt; et &lt;code&gt;EPS&lt;/code&gt;. Elle lance la compilation du fichier Latex si un des fichiers présent dans ces trois liste est plus récent que la cible (ici le fichier &lt;code&gt;dvi&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;La règle &lt;code&gt;MAIN&lt;/code&gt; (qui est la règle par défaut) dépend du fichier &lt;code&gt;dvi&lt;/code&gt; et assure la conversion en &lt;code&gt;pdf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;La tâche &lt;code&gt;final&lt;/code&gt; assure une conversion en haute qualité du fichier &lt;code&gt;dvi&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;La tâche &lt;code&gt;init&lt;/code&gt; crée les deux répertoire &lt;code&gt;src&lt;/code&gt; et &lt;code&gt;fig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;La règle &lt;code&gt;clean&lt;/code&gt; est crée par défaut, on ajout seulement la liste de fichier à supprimer&amp;nbsp;: &lt;code&gt;*.ps','*.dvi','*.log','*.out','*.aux'&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;Utilisation&lt;/h4&gt;

&lt;p&gt;Selon les arguments passés à la commande &lt;code&gt;rake&lt;/code&gt;, différentes tâches sont réalisée&amp;nbsp;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;rake init&lt;/code&gt; va créer les répertoires &lt;code&gt;fig&lt;/code&gt; et &lt;code&gt;src&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rake&lt;/code&gt; va lancer la compilation du fichier Latex (si nécessaire) et créer le fichier &lt;code&gt;pdf&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rake final&lt;/code&gt; va lancer la compilation du fichier Latex avec un conversion en &lt;code&gt;pdf&lt;/code&gt; en haute résolution&lt;/li&gt;
&lt;li&gt;&lt;code&gt;rake clean&lt;/code&gt; effacera tous les fichiers temporaires&lt;/li&gt;
&lt;/ul&gt;


&lt;h4&gt;Outils utilisés pour déboguer le script&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;La commande &lt;code&gt;touch&lt;/code&gt; permet de modifier la date d'un fichier, très utile pour vérifier les règles de dépendances&lt;/li&gt;
&lt;li&gt;Dans le &lt;code&gt;Rakefile&lt;/code&gt; on peut ajouter les lignes ci-dessous pour déboguer les règles qui ne sont pas définies&amp;nbsp;:&lt;/li&gt;
&lt;/ul&gt;
&lt;code class=&quot;ruby&quot;&gt;rule '' &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt; |t|&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;puts&lt;/span&gt; &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;Undefined task... : &lt;span style=&quot;color:#000099;&quot;&gt;\n&lt;/span&gt; #{t.investigation}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;/code&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/08/14/Compilation-automatisee-de-fichier-Latex#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/08/14/Compilation-automatisee-de-fichier-Latex#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/2</wfw:commentRss>
      </item>
    
  <item>
    <title>Installation du drivers Wifi pour un chipset BCM4306</title>
    <link>http://www.causeries-numeriques.fr/post/2007/08/10/Installation-du-drivers-Wifi-pour-un-chipset-BCM4306</link>
    <guid isPermaLink="false">urn:md5:d5001824f95ce083dc0fd5800381f9e8</guid>
    <pubDate>Fri, 10 Aug 2007 19:32:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>BCM4306</category><category>ubuntu</category><category>wifi</category>    
    <description>    &lt;p&gt;Mon Dell Latitude est équipé d'un chipset BCM4306 pour le wifi. Par défaut ce chipset n'est pas géré par Ubuntu Feisty Fawn, mais l'installation est très simple.&lt;/p&gt;


&lt;p&gt;Il faut commencer par installer le paquet &lt;code&gt;bcm43xx-fwcutter&lt;/code&gt;. Une erreur est provoqué lors du téléchargement du fichier &lt;code&gt;wl_apsta.o&lt;/code&gt;.
L'installation va se finir &quot;à la main&quot;&amp;nbsp;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Télécharger le fichier &lt;a href=&quot;http://labs.funraill.org/pub/mirrors/wifi-bcm43xx/wl_apsta.o&quot;&gt;wl_apsta.o&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Extraire le driver de la carte&amp;nbsp;: &lt;code&gt;sudo bcm43xx-fwcutter -w /lib/firmware wl_apsta.o&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Mettre à jour le noyau avec &lt;code&gt;sudo bcm43xx-fwcutter -w /lib/firmware/2.6.XX-YY wl_apsta.o&lt;/code&gt; où &lt;code&gt;2.6.XX-YY&lt;/code&gt; est le répertoire qui correspond au noyau utilisé.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A partir de maintenant le wifi fonctionne, par exemple, avec Network Manager, éventuellement rebooter le système.&lt;/p&gt;


&lt;p&gt;Cette manipulation devra être réitérée à chaque mise à jour du noyau.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/08/10/Installation-du-drivers-Wifi-pour-un-chipset-BCM4306#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/08/10/Installation-du-drivers-Wifi-pour-un-chipset-BCM4306#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/3</wfw:commentRss>
      </item>
    
  <item>
    <title>Manipulation de tags mp3 avec Perl, Ruby et Python</title>
    <link>http://www.causeries-numeriques.fr/post/2007/06/13/Manipulation-de-tags-mp3-avec-Perl-Ruby-et-Python</link>
    <guid isPermaLink="false">urn:md5:2516246ceeeb3ede44e198d20a43a497</guid>
    <pubDate>Wed, 13 Jun 2007 08:49:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>id3</category><category>mp3</category><category>perl</category><category>python</category><category>ruby</category>    
    <description>&lt;p&gt;Pour les petits scripts de quelques lignes, trois langages se partagent le terrain&amp;nbsp;: Perl, Python et Ruby. Le problème du jour est la modification de &lt;em&gt;tags&lt;/em&gt; ID3 ainsi que le renomage de fichiers.&lt;/p&gt;    &lt;h3&gt;Présentation du problème&lt;/h3&gt;

&lt;p&gt;Je podcast l'émission &lt;a href=&quot;http://www.rtl.fr/radio/emission.asp?dicid=504270&quot;&gt;Le grand juron&lt;/a&gt; en utilisant iPodder. Le problème est que les fichiers reçus sont stockés avec un nom du style&amp;nbsp;: &lt;code&gt;podcasting_temp_0000541_541680.mp3?podName=LEGDJURON&lt;/code&gt; et ils n'ont pas d'extension &lt;code&gt;.mp3&lt;/code&gt;.
Le nom n'est pas vraiment explicite pour retrouver une émission quelconque. Généralement, pendant l'écoute, je mets le tag &lt;em&gt;title&lt;/em&gt; à la date du jour.
Le but de ces scripts est de sauvegarder le fichier sous la forme &lt;code&gt;jour mois année.mp3&lt;/code&gt; et de mettre le nom de l'émission dans le tag &lt;em&gt;artist&lt;/em&gt;.&lt;/p&gt;


&lt;h3&gt;En Perl&lt;/h3&gt;


&lt;h4&gt;Pré requis&lt;/h4&gt;


&lt;p&gt;De nombreux module permettent de traiter les fichiers mp3, j'ai retenu &lt;code&gt;MP3::Info&lt;/code&gt; présent sur le CPAN à l'adresse &lt;a href=&quot;http://search.cpan.org/~daniel/MP3-Info-1.22/lib/MP3/Info.pm&quot;&gt;mp3info&lt;/a&gt;. Pour l'installer, il y a trois ligne de commande à taper&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt; perl Makefile.PL  
 make
 sudo make install&lt;/pre&gt;


&lt;h4&gt;Le script&lt;/h4&gt;


&lt;p&gt;Il est très simple, on construit la liste des fichiers à traiter avec un &lt;code&gt;glob&lt;/code&gt; et on utilise le module pour lire et modifier les tags.&lt;/p&gt;

&lt;code class=&quot;perl&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;#!/usr/bin/perl -w&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;use&lt;/span&gt; MP3::&lt;span style=&quot;color: #006600;&quot;&gt;Info&lt;/span&gt;;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #b1b100;&quot;&gt;foreach&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$fichier&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;a href=&quot;http://www.perldoc.com/perl5.6/pod/func/glob.html&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;glob&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'*LE*'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.perldoc.com/perl5.6/pod/func/print.html&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;print&lt;/span&gt;&lt;/a&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$fichier&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #b1b100;&quot;&gt;my&lt;/span&gt; &lt;span style=&quot;color: #0000ff;&quot;&gt;$mp3&lt;/span&gt; = MP3::&lt;span style=&quot;color: #006600;&quot;&gt;Info&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$fichier&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #0000ff;&quot;&gt;$mp3&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;artist&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;'Le grand juron'&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;a href=&quot;http://www.perldoc.com/perl5.6/pod/func/rename.html&quot;&gt;&lt;span style=&quot;color: #000066;&quot;&gt;rename&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #0000ff;&quot;&gt;$fichier&lt;/span&gt;, &lt;span style=&quot;color: #0000ff;&quot;&gt;$mp3&lt;/span&gt;-&amp;gt;&lt;span style=&quot;color: #006600;&quot;&gt;title&lt;/span&gt;.&lt;span style=&quot;color: #ff0000;&quot;&gt;&amp;quot;.mp3&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;br /&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;



&lt;h3&gt;En Ruby&lt;/h3&gt;


&lt;h4&gt;Pré requis&lt;/h4&gt;


&lt;p&gt;Un module (&lt;em&gt;gem&lt;/em&gt;) est nécessaire pour pouvoir lire et modifier les tags mp3. Pour installer le &lt;em&gt;gem&lt;/em&gt; &lt;code&gt;ruby-mp3info&lt;/code&gt;, il suffit d'utiliser la commande &lt;code&gt;sudo gem install ruby-mp3info&lt;/code&gt;&lt;/p&gt;


&lt;p&gt;L'API est disponible sur &lt;a href=&quot;http://ruby-mp3info.rubyforge.org/&quot; hreflang=&quot;en&quot;&gt;mp3info&lt;/a&gt;&lt;/p&gt;


&lt;h4&gt;Le script&lt;/h4&gt;


&lt;p&gt;Le script n'est pas très différent de celui en Perl, rien de bien sorcier.&lt;/p&gt;

&lt;code class=&quot;ruby&quot;&gt;&lt;span style=&quot;color:#008000; font-style:italic;&quot;&gt;#!/usr/bin/ruby -w&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;require&lt;/span&gt; &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;rubygems&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;require&lt;/span&gt; &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;mp3info&amp;quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Dir.&lt;span style=&quot;color:#9900CC;&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;*LE*&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt; |fichier|&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;puts&lt;/span&gt; &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;#{fichier}&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nom = ''&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Mp3Info.&lt;span style=&quot;color:#CC0066; font-weight:bold;&quot;&gt;open&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;fichier&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;do&lt;/span&gt; |infos|&lt;br /&gt;
&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;infos.&lt;span style=&quot;color:#9900CC;&quot;&gt;tag&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;artist&lt;/span&gt; = &lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;Le grand juron&amp;quot;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; nom = infos.&lt;span style=&quot;color:#9900CC;&quot;&gt;tag&lt;/span&gt;.&lt;span style=&quot;color:#9900CC;&quot;&gt;title&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; File.&lt;span style=&quot;color:#9900CC;&quot;&gt;rename&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#40;&lt;/span&gt;fichier,nom+&lt;span style=&quot;color:#996600;&quot;&gt;&amp;quot;.mp3&amp;quot;&lt;/span&gt;&lt;span style=&quot;color:#006600; font-weight:bold;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;br /&gt;
&lt;span style=&quot;color:#9966CC; font-weight:bold;&quot;&gt;end&lt;/span&gt;&lt;/code&gt;


&lt;h3&gt;En Python&lt;/h3&gt;


&lt;h4&gt;Pré requis&lt;/h4&gt;


&lt;p&gt;J'ai un peu cherché pour trouver un module permettant de lire/modifier les tags. Mon choix s'est porté sur &lt;a href=&quot;http://id3-py.sourceforge.net/&quot;&gt;ID3&lt;/a&gt;. Sur le site web (un peu vieux), il est annoncé que ce module est présent dans les distributions Debian, l'est-il sur Ubuntu&amp;nbsp;? Un petit&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt; sudo aptitude install python-id3&lt;/pre&gt;

&lt;p&gt;me permet de constater que oui&amp;nbsp;!&lt;/p&gt;


&lt;h4&gt;Le script&lt;/h4&gt;


&lt;p&gt;Pas beaucoup de différences non plus...&lt;/p&gt;

&lt;code class=&quot;python&quot;&gt;&lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;#!/usr/bin/python&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; &lt;span style=&quot;color: #dc143c;&quot;&gt;glob&lt;/span&gt;, &lt;span style=&quot;color: #dc143c;&quot;&gt;os&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;from&lt;/span&gt; ID3 &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;import&lt;/span&gt; *&lt;br /&gt;
&lt;br /&gt;
fichiers = &lt;span style=&quot;color: #dc143c;&quot;&gt;glob&lt;/span&gt;.&lt;span style=&quot;color: #dc143c;&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&amp;quot;*LE*&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;for&lt;/span&gt; fichier &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;in&lt;/span&gt; fichiers:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;print&lt;/span&gt; fichier&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mp3 = ID3&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;fichier&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mp3&lt;span style=&quot;color: black;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'ARTIST'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#93;&lt;/span&gt; = &lt;span style=&quot;color: #483d8b;&quot;&gt;'Le grand juron'&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mp3.&lt;span style=&quot;color: black;&quot;&gt;write&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #dc143c;&quot;&gt;os&lt;/span&gt;.&lt;span style=&quot;color: black;&quot;&gt;rename&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;fichier,mp3&lt;span style=&quot;color: black;&quot;&gt;&amp;#91;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;'TITLE'&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#93;&lt;/span&gt;+&lt;span style=&quot;color: #483d8b;&quot;&gt;&amp;quot;.mp3&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;;&lt;/code&gt;


&lt;p&gt;Il n'est pas possible de simplifier les deux premières lignes en&amp;nbsp;:&lt;/p&gt;
&lt;code class=&quot;python&quot;&gt;&lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;for&lt;/span&gt; fichier &lt;span style=&quot;color: #ff7700;font-weight:bold;&quot;&gt;in&lt;/span&gt; &lt;span style=&quot;color: #dc143c;&quot;&gt;glob&lt;/span&gt;.&lt;span style=&quot;color: #dc143c;&quot;&gt;glob&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #483d8b;&quot;&gt;&amp;quot;*LE*&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: black;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;/code&gt;



&lt;h3&gt;Tests des différents scripts&lt;/h3&gt;


&lt;h4&gt;Version utilisées des différents langages&amp;nbsp;:&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Perl&amp;nbsp;: 5.8.7&lt;/li&gt;
&lt;li&gt;Ruby&amp;nbsp;: 1.8.4&lt;/li&gt;
&lt;li&gt;Python&amp;nbsp;: 2.4.3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Système Ubuntu 6.06&lt;/p&gt;


&lt;h4&gt;Temps de conversion avec l'affichage du nom du fichier&lt;/h4&gt;

&lt;p&gt;Pour comparer (un peu...) les différents script, l'utilitaire &lt;code&gt;time&lt;/code&gt; du shell a été utilisé. Les scripts ont été testés sur des paquets de 10,20 et 50 fichiers. Les résultats (approximatifs) sont dans le tableau ci-dessous&amp;nbsp;:&lt;/p&gt;
&lt;table&gt;
  &lt;tr&gt; &lt;td&gt;Langage&lt;/td&gt; &lt;td&gt;10 fichiers&lt;/td&gt; &lt;td&gt;20 fichiers&lt;/td&gt; &lt;td&gt;50 fichiers&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt; &lt;td&gt;Perl&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1.5s&lt;/td&gt; &lt;td&gt;end. 3s&lt;/td&gt; &lt;/tr&gt;
  &lt;tr&gt; &lt;td&gt;Python&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 2s&lt;/td&gt; &lt;/tr&gt;
  &lt;tr&gt; &lt;td&gt;Ruby&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 15s&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;p&gt;Sur le lot de 50 fichiers, Ruby freine brutalement au milieu du lot de fichier et le disque dur s'affole. Le problème provient probablement de l'accès aux fichiers.&lt;/p&gt;


&lt;h4&gt;Temps de conversion sans affichage du nom du fichier&lt;/h4&gt;

&lt;table&gt;
  &lt;tr&gt; &lt;td&gt;Langage&lt;/td&gt; &lt;td&gt;10 fichiers&lt;/td&gt; &lt;td&gt;20 fichiers&lt;/td&gt; &lt;td&gt;50 fichiers&lt;/td&gt;&lt;/tr&gt;
  &lt;tr&gt; &lt;td&gt;Perl&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 2s&lt;/td&gt; &lt;/tr&gt;
  &lt;tr&gt; &lt;td&gt;Python&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;/tr&gt;
  &lt;tr&gt; &lt;td&gt;Ruby&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 1s&lt;/td&gt; &lt;td&gt;env. 14s&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;



&lt;h4&gt;Bilan&lt;/h4&gt;


&lt;p&gt;Après plusieurs séries de tests, les temps sont dans le même ordre. Il n'y a pas de grosse différences entre les trois langages sauf sur les gros lots de fichier pour lesquels Ruby freine à mis parcours.
D'ailleurs quelqu'un sait pourquoi ?...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/06/13/Manipulation-de-tags-mp3-avec-Perl-Ruby-et-Python#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/06/13/Manipulation-de-tags-mp3-avec-Perl-Ruby-et-Python#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/6</wfw:commentRss>
      </item>
    
  <item>
    <title>Désintaller Samba</title>
    <link>http://www.causeries-numeriques.fr/post/2007/06/08/Desintaller-Samba</link>
    <guid isPermaLink="false">urn:md5:35d6bad270a7fcc2baef3b35371b2a39</guid>
    <pubDate>Fri, 08 Jun 2007 13:48:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
            
    <description>    &lt;p&gt;Après une mise à jour d'Ubuntu, Samba a décidé de mettre son bazard... Même plus moyen de le supprimer&amp;nbsp;! J'obtenais l'erreur &lt;code&gt; E: Sub-process /usr/bin/dpkg returned an error code (1)&lt;/code&gt;. Pour pouvoir désinstaller Samba, j'ai du aller dans &lt;code&gt;/etc/rc2.d&lt;/code&gt; et détruire (&lt;code&gt;sudo rm&lt;/code&gt;) le fichier &lt;code&gt;K09samba&lt;/code&gt; ( ce fichier peut porter un autre nom). Ensuite, j'ai pu désinstaller Samba avec &lt;code&gt;aptitude&lt;/code&gt; puis remettre mon système à jour.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/06/08/Desintaller-Samba#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/06/08/Desintaller-Samba#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/4</wfw:commentRss>
      </item>
    
  <item>
    <title>Supprimer les ^M dans des fichiers texte</title>
    <link>http://www.causeries-numeriques.fr/post/2007/05/02/Supprimer-les-M-dans-des-fichiers-texte</link>
    <guid isPermaLink="false">urn:md5:824d8c000738f79f2eebc3bb18daa555</guid>
    <pubDate>Wed, 02 May 2007 09:42:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>linux</category><category>vim</category><category>windows</category>    
    <description>    &lt;p&gt;Les fichiers texte ayant transité par d'autres systèmes d'exploitations sont souvent légèrement modifiés&amp;nbsp;; les caractères de fin de lignes ne sont pas les mêmes. Par exemple, lors d'une transitions Windows vers Linux, on voit apparaitre des &lt;code&gt;^M&lt;/code&gt; à la fin de chaque ligne.
La commande suivante sous &lt;code&gt;vi&lt;/code&gt; et tous ses clones (donc &lt;code&gt;vim&lt;/code&gt;, &lt;code&gt;gvim&lt;/code&gt;,...) permet de supprimer ces caractères&amp;nbsp;:
&lt;code&gt;:%s/^M//g&lt;/code&gt;
L'opération réalise un rechercher-remplacer (&lt;code&gt;%s&lt;/code&gt;) en utilisant le motif &lt;code&gt;^M&lt;/code&gt; comme recherche et &lt;em&gt;rien&lt;/em&gt; comme motif de remplacement et ce sur tout le fichier (options &lt;code&gt;g&lt;/code&gt; à la fin de la commande). Le &lt;code&gt;^M&lt;/code&gt; s'obtient en tapant &lt;code&gt;CTRL+V&lt;/code&gt; puis &lt;code&gt;CTRL+M&lt;/code&gt;, il ne faut pas utiliser le caractère &lt;code&gt;^&lt;/code&gt; puis la lettre &lt;code&gt;M&lt;/code&gt;&amp;nbsp;!&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/05/02/Supprimer-les-M-dans-des-fichiers-texte#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/05/02/Supprimer-les-M-dans-des-fichiers-texte#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/8</wfw:commentRss>
      </item>
    
  <item>
    <title>Griser une ligne sur deux dans OpenOffice Calc</title>
    <link>http://www.causeries-numeriques.fr/post/2007/05/01/Griser-une-ligne-sur-deux-dans-OpenOffice-Calc</link>
    <guid isPermaLink="false">urn:md5:1c91c63710b3eaec536f4877f12acfe3</guid>
    <pubDate>Tue, 01 May 2007 18:14:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
        <category>open office</category><category>tableur</category>    
    <description>    &lt;p&gt;Sur de grands listings, il est plus agréable pour la lecture de colorer une ligne sur deux (ou plus) en couleur. Cette manœuvre est assez facile a réaliser sous Open Office Calc. Il faut commencer par définir un (ou plusieurs) style(s) de remplissage. La touche &lt;code&gt;F11&lt;/code&gt; fait apparaitre la fenêtre &quot;Styles et formatages&quot;. Un clic droit dans cette boite de dialogue permet de créer un nouveau style. Lui attribuer un nom (par ex. &lt;em&gt;Gris&lt;/em&gt;) et modifier ses propriétés, notamment l'arrière plan en gris.&lt;/p&gt;


&lt;p&gt;Il faut maintenant sélectionner une cellule (ici la cellule A1) et dans le menu &lt;code&gt;Format&lt;/code&gt;, cliquer sur &lt;code&gt;Formatage conditionnel...&lt;/code&gt;, dans la boite dialogue qui apparait placer la formule suivante&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt; SI(MOD(CELLULE(&quot;ROW&quot;;$A1);2)&amp;lt;&amp;gt;1)&lt;/pre&gt;


&lt;p&gt;et choisir l'option &lt;code&gt;Formule est&lt;/code&gt; (en cliquant sur &lt;code&gt;Valeur est&lt;/code&gt;) et choisir le style de cellule crée si dessus (&lt;em&gt;Gris&lt;/em&gt; dans notre exemple).
Sélectionner la cellule (&lt;code&gt;CTRL+C&lt;/code&gt;) puis sélectionner les cellules, faire un collage spécial (&lt;code&gt;CTRL+MAJ+V&lt;/code&gt;) et ne choisir que la case &lt;code&gt;Format&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Si tout c'est bien passé, une ligne sur deux a pris le style &lt;em&gt;Gris&lt;/em&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/05/01/Griser-une-ligne-sur-deux-dans-OpenOffice-Calc#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/05/01/Griser-une-ligne-sur-deux-dans-OpenOffice-Calc#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Oh le joli poster !</title>
    <link>http://www.causeries-numeriques.fr/post/2006/06/15/Oh-le-joli-poster</link>
    <guid isPermaLink="false">urn:md5:4cfc20c0504a0a80a4e5193b44e2e8c0</guid>
    <pubDate>Thu, 15 Jun 2006 22:08:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des pingouins et des hommes</category>
            
    <description>    &lt;p&gt;O'Reilly propose gratuitement un poster chronologique de tous les langages (&lt;a href=&quot;http://www.oreilly.com/news/graphics/prog_lang_poster.pdf&quot;&gt;ici&lt;/a&gt;). Le problème c'est que ce poster fait un format de poster ;-) . Pour l'imprimer sur une imprimante normale, il faut le découper en petits morceaux. Dans un premier temps j'ai pensé que dans le package &lt;code&gt;pdfjam&lt;/code&gt; j'allais trouver ma vie. Pas d'outils pour découper des pdf, seulement pour en regrouper :-(
Par contre le package &lt;code&gt;poster&lt;/code&gt; permet de créer des posters à partir de fichiers &lt;code&gt;.ps&lt;/code&gt;. Donc à partir du fichier original, il suffit de faire&amp;nbsp;:&lt;/p&gt;


&lt;pre&gt; pdf2ps -sDEVICE=epswrite prog_lang_poster.pdf
 poster -s1 prog_lang_poster.ps &amp;gt; poster_parties.ps
 ps2pdf13 -dPDFSETTINGS=/prepress poster_parties.ps&lt;/pre&gt;


&lt;p&gt;Pour imprimer la dernière partie n'est pas obligatoire car les fichiers &lt;code&gt;.ps&lt;/code&gt; s'impriment très bien sous Linux&amp;nbsp;! Et voilou...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2006/06/15/Oh-le-joli-poster#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2006/06/15/Oh-le-joli-poster#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/11</wfw:commentRss>
      </item>
    
</channel>
</rss>
