<?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</title>
  <link>http://www.causeries-numeriques.fr/</link>
  <description></description>
  <language>fr</language>
  <pubDate>Sat, 04 Sep 2010 11:48:02 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>skipDr... la machine à réparer les CDs et les DVDs rayés.</title>
    <link>http://www.causeries-numeriques.fr/post/2009/12/18/skipDr-la-machine-a-reparer-les-CDs-et-les-DVDs-rayes</link>
    <guid isPermaLink="false">urn:md5:df80d8fa3c8d6ab3f6c50ab181643666</guid>
    <pubDate>Fri, 18 Dec 2009 16:00:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>En vrac</category>
            
    <description>    &lt;p&gt;&lt;img src=&quot;http://ecx.images-amazon.com/images/I/51-ba9S0rtL._SS400_.jpg&quot; alt=&quot;skipDr&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; /&gt;&lt;/p&gt;


&lt;h2&gt;Principe de fonctionnement&lt;/h2&gt;


&lt;p&gt;Le système est destiné à réparer les disques qui sont rayés (bien sur les rayures ne doivent pas avoir touché la couche réflective sinon, le disque est vraiment mort.) La couche protectrice des CD/DVD est assez épaisse, assez pour pouvoir être re-poncée (ou plutôt re-polie) plusieurs fois. Le principe du skipDr est de poncer le disque avec un système rotatif qui fait régulièrement tourner le CD en même temps qu'il est poncé. Avant le ponçage, on doit pulvériser un liquide fourni avec le dispositif. Le grain du poncage est bien sûr très fin, c'est pas de la menuiserie&amp;nbsp;! A l'issue de l'opération, un chiffon de lustrage doit être utilisé pour achever la restauration du CD.&lt;/p&gt;


&lt;h2&gt;Tests et résultats&lt;/h2&gt;


&lt;p&gt;Si j'acheté ce truc c'est que j'en avais besoin (j'ai un DVD assez rare qui plantait à la lecture)&amp;nbsp;! Avant de faire quoique ce soit, j'ai testé l'appareil sur un CD audio qui était mort depuis bien longtemps. Ce CD était particulièrement rayé, illisible sur une chaîne HiFi et impossible à lire sur un PC. J'ai pas mis de photos de la rayure, prendre un CD en photo, ça rend pas très bien ;-).&lt;/p&gt;


&lt;h3&gt;Avant l'utilisation&lt;/h3&gt;

&lt;p&gt;J'ai tenté une extration du CD avec la commande &lt;code&gt;dd&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
sudo dd if=/dev/disk1 of=./ImageCD.iso
dd: /dev/disk1: Input/output error
897333+0 records in
897333+0 records out
459434496 bytes transferred in 714.554461 secs (642966 bytes/sec)
&lt;/pre&gt;

&lt;p&gt;Le débit moyen est d'un peu plus de 600  kio/sec et le CD plante au milieu, la lecture devient impossible.&lt;/p&gt;


&lt;h3&gt;Après avoir tourné la manivelle&lt;/h3&gt;

&lt;p&gt;J'ai bien tout fait comme c'est expliqué sur la notice&amp;nbsp;! L'aspect général du CD est meilleur, les rayures ont presque disparues. On recommence le &lt;code&gt;dd&lt;/code&gt;&amp;nbsp;:&lt;/p&gt;
&lt;pre&gt;
sudo dd if=/dev/disk1 of=./ImageCD.iso
1532690+1 records in
1532690+1 records out
784737744 bytes transferred in 698.903457 secs (1122813 bytes/sec)
&lt;/pre&gt;

&lt;p&gt;Tout le CD est lu avec un débit moyen de plus de 1 Mio/sec et le CD est lu entièrement. Le système a eu des pointes de vitesses plus élevées, il a ralenti à la fin en arrivant sur la zone abîmée.&lt;/p&gt;


&lt;h2&gt;Bilan&lt;/h2&gt;

&lt;p&gt;J'ai pu récupérer mon CD et le DVD (qui motivait cet achat). Ca marche&amp;nbsp;! On trouve ce truc un peu partout sur le web pour une vingtaine d'euros.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2009/12/18/skipDr-la-machine-a-reparer-les-CDs-et-les-DVDs-rayes#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2009/12/18/skipDr-la-machine-a-reparer-les-CDs-et-les-DVDs-rayes#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/53</wfw:commentRss>
      </item>
    
  <item>
    <title>Les plugins qui manquent à Safari</title>
    <link>http://www.causeries-numeriques.fr/post/2009/10/31/Le-plugin-qui-manque-a-Safari</link>
    <guid isPermaLink="false">urn:md5:90fd8208d3f2f44f709ff2d908f5b077</guid>
    <pubDate>Sat, 31 Oct 2009 09:22:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Le fruit défendu</category>
        <category>navigateur</category><category>OS X</category><category>safari</category>    
    <description>    &lt;p&gt;Safari est un bon navigateur mais il lui manque quelques options très utiles (qui existent sur Firefox par exemple).
Le plugin  &lt;a href=&quot;http://www.machangout.com/&quot; hreflang=&quot;en&quot;&gt;Glims&lt;/a&gt; change tout ça. Il ajoute l'ouverture automatique des onglets de la session précédente, l'ouverture des nouvelles fenêtres dans des onglets, des répertoires datés pour le téléchargement,... et plein d'autres choses encore.
La partie développement de Safari est sympa mais elle n'a pas de validateur intégré. &lt;a href=&quot;http://zappatic.net/safaritidy/&quot; hreflang=&quot;en&quot;&gt;Safari Tidy &lt;/a&gt; indique le niveau de validité de la page par un icône situé dans la barre d'état du navigateur (en bas à droite).&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2009/10/31/Le-plugin-qui-manque-a-Safari#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2009/10/31/Le-plugin-qui-manque-a-Safari#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/51</wfw:commentRss>
      </item>
    
  <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>A bas les call-centers !!!</title>
    <link>http://www.causeries-numeriques.fr/post/2009/01/27/A-bas-les-call-centers</link>
    <guid isPermaLink="false">urn:md5:399a34352506c50a2c3af1e1c9d90399</guid>
    <pubDate>Tue, 27 Jan 2009 20:11:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>En vrac</category>
            
    <description>    &lt;p&gt;Je viens de recevoir un appel de Stéphane d'une société de téléphonie (je sais plus laquelle, je me rappelle plus, sinon je me serais dépêché de le dire !!!). Le gentil Stéphane avait un accent à couper au couteau (plutôt d'Afrique du Nord... comme la majorité des call-centers). Bilan de l'opération, je ne pas envie de faire affaire avec eux&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La ligne était très mauvaise ce qui fait sérieux pour un démarchage de société de téléphonie !&lt;sup&gt;[&lt;a href=&quot;http://www.causeries-numeriques.fr/post/2009/01/27/#pnote-44-1&quot; id=&quot;rev-pnote-44-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/li&gt;
&lt;li&gt;Il serait temps que les commerciaux se mettent en tête qu'il ne faut pas mentir au client. Je ne veux pas commencer une relation commerciale sur un mensonge, or le premier contact pour cette société me ment sur son prénom (tous les opérateur masculins s'appellent Dominique, Stéphane, Frédéric, les filles Carine, Aurélie,... même s'ils ont l'accent de Rabbat/Alger/Tunis...).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Je pense que si un jour je croise un des brillants décideurs de ces sociétés qui nous pourrissent la vie avec leur démarchage téléphonique je ne suis pas certain de garder mon calme ;-)&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/2009/01/27/#rev-pnote-44-1&quot; id=&quot;pnote-44-1&quot;&gt;1&lt;/a&gt;] L'an dernier l'un deux a même été capable de me dire que c'était la faute de ma ligne, lui au moins il avait le sens du commerce !&lt;/p&gt;&lt;/div&gt;
</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2009/01/27/A-bas-les-call-centers#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2009/01/27/A-bas-les-call-centers#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/44</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>Adieu flamant rose...</title>
    <link>http://www.causeries-numeriques.fr/post/2008/09/18/Adieu-flamant-rose</link>
    <guid isPermaLink="false">urn:md5:055971bca7a7ca0533f435879d2a24b5</guid>
    <pubDate>Thu, 18 Sep 2008 10:23:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Des noires et des blanches</category>
            
    <description>    &lt;p&gt;Décidément ce blog va se transformer en nécrologie... Après &lt;a href=&quot;http://www.causeries-numeriques.fr/post/2008/09/18/2008/03/05/Le-pere-du-jeu-de-roles-est-mort&quot;&gt;Gygax&lt;/a&gt; c'est l'un des membres de Pink Floyd qui nous quitte. Richard Wright est décédé le 15 septembre.
Sa participation à l'album On an Island de David Gilmour nous rappelait les meilleurs moments du groupe. L'apparition de Pink Floyd (avec Roger Waters) pour le Live 8 en 2005 laissait espérer une reformation du groupe un jour... cet espoir est maintenant vain&amp;nbsp;! Il nous reste les meilleurs albums du Floyd pour apprécier son talent.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/09/18/Adieu-flamant-rose#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/09/18/Adieu-flamant-rose#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/36</wfw:commentRss>
      </item>
    
  <item>
    <title>Réalisation de circuit imprimé &quot;low cost&quot;</title>
    <link>http://www.causeries-numeriques.fr/post/2008/04/25/Realisation-de-circuit-imprime-low-cost</link>
    <guid isPermaLink="false">urn:md5:b09971454f2aa59f8f5838b05ae22891</guid>
    <pubDate>Fri, 25 Apr 2008 14:42:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Le fil rouge sur le bouton rouge ...</category>
        <category>circuit imprimé</category><category>epoxy</category>    
    <description>&lt;p&gt;La réalisation de circuits imprimés simples peut se faire sans équipement particulier (insoleuse et graveuse) avec un peu de débrouillardise. Après pas mal d'essais de différentes méthodes trouvées sur le web, j'ai réussi à obtenir une approche fiable et facile à mettre en oeuvre.&lt;/p&gt;    &lt;h2&gt;Avant propos&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Avant de commencer lire plusieurs fois ce tutoriel et être toujours conscient que vous manipulez des produits toxiques et/ou inflammables.&lt;/li&gt;
&lt;li&gt;Ne pas négligez l'utilisation de protections appropriées (lunettes, gants, masque respiratoire) et travaillez dans un environnement ventilé.&lt;/li&gt;
&lt;li&gt;Soyez sur d'avoir bien compris chaque étape, puis répétez la sans les produits chimiques ou les élément brulant pour juger de la dangerosité de vos gestes.&lt;/li&gt;
&lt;li&gt;Avant d'acheter les différents produits soyez sur de pouvoir les éliminer (déchèterie,...) proprement.&lt;/li&gt;
&lt;li&gt;Faites d'abord des essais avec des petits circuits, à par la gravure, toutes les étapes peuvent être refaites car non irréversibles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;En suivant ces différentes consignes, tout devrait bien se passer, l'auteur de ce tutoriel ne pourra toutefois pas être tenu responsable des échecs, brulures, ....&lt;/strong&gt;&lt;/p&gt;


&lt;h2&gt;Éléments nécessaire&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Une vielle imprimante laser (j'utilise une HP 5L). &lt;strong&gt;Attention elle peut être endommagée lors de l'impression sur le papier photo !&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Un vieux fer à repasser &lt;strong&gt;Attention il peut être endommagée lors du transfert du papier photo !&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;De l'époxy cuivré (non présensibilisée), ne pas utiliser de la bakélite (moins cher), elle  ne résistera pas aux différentes opérations.&lt;/li&gt;
&lt;li&gt;Du papier photo ou des publicités en papier glacé&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://fr.wikipedia.org/wiki/Chlorure_de_fer_%28III%29&quot;&gt; Du perchlorure de fer &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;De la pâte d'étain,&lt;/li&gt;
&lt;li&gt;Un cutter, une scie à métaux,...&lt;/li&gt;
&lt;li&gt;De l'acétone, de la paille de fer, de l'essuie-tout, du papier d'aluminium, des papiers usagés pour protéger les différents lieux de travail, des gants jetables,...&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Les produit propres à l'électronique (époxy, perchlorure de fer, ...) sont disponibles dans les différents magasins d'électronique.&lt;/p&gt;


&lt;h2&gt;Préparation de l'époxy&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Toujours porter des gants, l'acétone est toxique pour la peau&lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt;Travailler dans un endroit ventilé&lt;/strong&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/DecoupeEpoxy.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.DecoupeEpoxy_t.jpg&quot; alt=&quot;DecoupeEpoxy.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Découper l'époxy à la scie à métaux.&lt;/li&gt;
&lt;li&gt;Toujours attaquer la face non cuivré, pour éviter les rayures sur le cuivre si la scie glisse.&lt;/li&gt;
&lt;li&gt;La poussière d'époxy est agressive pour les poumons, pensez à ventiler la pièce et à porter un masque filtrant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/EpoxyPret.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.EpoxyPret_t.jpg&quot; alt=&quot;EpoxyPret.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Poncez le cuivre avec de la paille de fer.&lt;/li&gt;
&lt;li&gt;Dégraissez avec de l'acétone et un morceau d'essuie-tout&lt;/li&gt;
&lt;li&gt;A partir de maintenant ne plus toucher le cuivre avec les doigts, porter impérativement des gants.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Transfert du toner&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt; L'imprimante laser et le fer à repasser peuvent être endommagés par cette opération, soyez en conscient !&lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt;Avant de trouver le bon couple température/temps, vous allez devoir faire des essais préalables. Vous pouvez nettoyer la plaque avec de l'acétone entre chaque essais.&lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt;Travailler dans un endroit ventilé le papier photo émet des odeurs désagréables.&lt;/strong&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/PapierPhoto.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.PapierPhoto_t.jpg&quot; alt=&quot;PapierPhoto.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le papier photo que j'utilise est du HP Photo Paper Premium Plus (pour l'instant au format 10x15). Il coute environ 8€ les 25 feuilles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/ImpressionPapierA4.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.ImpressionPapierA4_t.jpg&quot; alt=&quot;ImpressionPapierA4.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sur une feuille de papier normale, marquer le haut et le bas de la feuille, la placer dans le chargeur destiné aux enveloppes.&lt;/li&gt;
&lt;li&gt;Régler l'imprimante le plus noir possible (pas d'économie de toner, réglage de densité au max,...)&lt;/li&gt;
&lt;li&gt;Imprimer le circuit sur cette feuille.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/ImpressionOK.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.ImpressionOK_t.jpg&quot; alt=&quot;ImpressionOK.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Coller une feuille de papier photo (avec du ruban adhésif) sur la feuille de papier imprimé en positionnant convenablement la feuille.&lt;/li&gt;
&lt;li&gt;Imprimer (dans le bon sens) en passant par le chargeur d'enveloppe.&lt;/li&gt;
&lt;li&gt;Avec un cutter tranchant découper la partie utile du circuit, le papier photo doit être manipulé avec des gants pour éviter les traces grasses.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/TransfertPret.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.TransfertPret_t.jpg&quot; alt=&quot;TransfertPret.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Les différents éléments sont prêts.&lt;/li&gt;
&lt;li&gt;Préchauffer le fer à repasser (pour le mien entre deux points et trois points)&lt;/li&gt;
&lt;li&gt;La feuille d'aluminium aide à répartir la chaleur, protège (un peu) la semelle du fer et facilite la glisse.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Placer l'impression sur le cuivre (le toner sur le cuivre), ajouter une feuille d'aluminium.&lt;/li&gt;
&lt;li&gt;Chauffer pendant 3 minutes (réglage pour mon fer), en faisant des mouvements circulaires et en insistant sur les bords.&lt;/li&gt;
&lt;li&gt;Il ne faut pas appuyer pour éviter d'écraser les pistes, on utilise la chaleur du fer à repasser, pas son poids&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;Pendant l'opération, le papier photo fait des bulles et des cloques.&lt;/li&gt;
&lt;li&gt;Laisser refroidir.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/TransfertFini.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.TransfertFini_t.jpg&quot; alt=&quot;TransfertFini.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlever d'abord le papier d'aluminium.&lt;/li&gt;
&lt;li&gt;Puis enlever le papier photo doucement en commençant par les coins, puis le centre.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/DetailTransfert.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.DetailTransfert_t.jpg&quot; alt=&quot;DetailTransfert.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le transfert respecte normalement les dimensions.&lt;/li&gt;
&lt;li&gt;Si les pistes deviennent trop larges, réduire un peu la température et/ou moins appuyer sur le fer à repasser.&lt;/li&gt;
&lt;li&gt;Si le transfert ne se réalise pas bien, chauffer plus fort et/ou plus longtemps.&lt;/li&gt;
&lt;li&gt;En cas d'échec, nettoyer la plaque avec de l'acétone et réessayer, le transfert doit être parfait pour avoir une gravure de qualité.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Gravure&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt; Toujours porter des gants et des lunettes de protections avec le perchlorure de fer &lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt; Travailler dans un endroit ventilé &lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt; Remettre le perchlorure usagé à une déchèterie.&lt;/strong&gt;
&lt;br /&gt;
Si le transfert a été bien fait, la gravure n'est qu'une &quot;formalité&quot;, c'est l'opération la plus simple, juste un peu de surveillance...
&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/PreparationGravure.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.PreparationGravure_t.jpg&quot; alt=&quot;PreparationGravure.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Le matériel nécessaire pour la gravure (le  bac est un ancien bac de glace...)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/DetailsAttacheGravure.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.DetailsAttacheGravure_t.jpg&quot; alt=&quot;DetailsAttacheGravure.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Utiliser le ruban adhésif pour faire deux attaches sur l'époxy.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/DebutGravure.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.DebutGravure_t.jpg&quot; alt=&quot;DebutGravure.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Placer doucement la plaque sur le perchlorure, normalement elle flotte toute seule (si elle coule, ce n'est pas grave, la gravure sera juste un peu plus longue...). On peut aussi placer 2 ou 3 bouchons de bouteille en plastique pour poser le circuit dessus.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/CuivreDebutGravure.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.CuivreDebutGravure_t.jpg&quot; alt=&quot;CuivreDebutGravure.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quelques minutes plus tard, le cuivre commence à être attaqué, il devient rouge.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/CuivreEnCoursGravure.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.CuivreEnCoursGravure_t.jpg&quot; alt=&quot;CuivreEnCoursGravure.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Surveiller régulièrement la gravure.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/GravureFinie.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.GravureFinie_t.jpg&quot; alt=&quot;GravureFinie.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A la fin de la gravure, bien rincer la plaque à l'eau.&lt;/li&gt;
&lt;li&gt;La gravure de cette carte a pris environ 1 heure avec du perchlorure moyennement usagé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/DetailGravure.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.DetailGravure_t.jpg&quot; alt=&quot;DetailGravure.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Vue d'un détail de gravure, le résultat est propre.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Étamage&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Toujours porter des gants et des lunettes de protections.&lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt;Travailler dans un endroit ventilé&lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt;Éloigner les différents produits inflamables (acétone,...) ainsi que les différents morceaux d'essuie-tout imbibés du décapeur thermique.&lt;/strong&gt;
&lt;br /&gt;
&lt;strong&gt;Remettre l'eau de rinçage à une déchetterie, elle contient des métaux lourds (plomb et étain)&lt;/strong&gt;
&lt;br /&gt;
Cette opération est facultative, mais elle protège le cuivre de l'oxydation et facilite la soudure. Il existe une solution liquide pour étamer dans laquelle on plonge le circuit pendant quelques secondes. J'ai déjà essayé, elle ne m'a pas convaincu.
Pour cette opération vous aurez besoin d'un décapeur thermique (qui ne risque rien !!!)
&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/PateEtain.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.PateEtain_t.jpg&quot; alt=&quot;PateEtain.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;La pâte d'étain se trouve dans le rayon plomberie des magasins de bricolage.&lt;/li&gt;
&lt;li&gt;Si elle sèche dans le pot, ajouter quelques gouttes d'eau, refermer le bouchon et vivement secouer le pot.&lt;/li&gt;
&lt;li&gt;Avec un pot comme celui ci, on couvre plusieurs mètres carrés de cuivre !!!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/PreparationEtamage.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.PreparationEtamage_t.jpg&quot; alt=&quot;PreparationEtamage.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Nettoyer la plaque à l'acétone pour enlever le toner. Il faut frotter assez fort avec du papier essuie-tout.&lt;/li&gt;
&lt;li&gt;Frotter la carte à la paille de fer pour finir le nettoyage.&lt;/li&gt;
&lt;li&gt;Laisser sécher la carte.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/EtainPeint.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.EtainPeint_t.jpg&quot; alt=&quot;EtainPeint.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Étaler un peu de pâte d'étain dissoute avec un peu d'eau avec un pinceau.&lt;/li&gt;
&lt;li&gt;Placer la carte loin de tout élément craignant la chaleur (ici dans un étau).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/EtainFondu.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.EtainFondu_t.jpg&quot; alt=&quot;EtainFondu.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Faire préchauffer le décapeur thermique au maximum, le but est de ne pas surchauffer l'époxy, il faut essayer de &quot;faire vite &quot;&lt;/li&gt;
&lt;li&gt;Une fois bien chaud, chauffer la carte et frotter la pâte avec un essuie-tout sec, de l'étain brillant doit apparaitre.&lt;/li&gt;
&lt;li&gt;La pâte d'étain restant sera grise terne.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/EtamageFini.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.EtamageFini_t.jpg&quot; alt=&quot;EtamageFini.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Laisser refroidir la plaque.&lt;/li&gt;
&lt;li&gt;Enlever le surplus de pâte avec un essuie-tout mouillé d'eau. &lt;strong&gt;Cette eau de rinçage doit être remise à la déchèterie.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Une autre solution consiste à placer une feuille de papier sulfurisée sur la plaque après l'avoir enduite de pâte d'étain.&lt;/li&gt;
&lt;li&gt;Préchauffer le fer à repasser au maximum et le laisser quelques minutes au même endroit et répéter jusqu'à avoir couvert toute la carte.&lt;/li&gt;
&lt;li&gt;Rincer ensuite la carte en frottant avec un petit pinceau,  &lt;strong&gt;Cette eau de rinçage doit être remise à la déchèterie.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Perçage&lt;/h2&gt;

&lt;p&gt;Rien de particulier, utiliser une perceuse à circuits imprimés ou un Dremel.&lt;/p&gt;


&lt;h2&gt;Réalisation de la sérigraphie&lt;/h2&gt;

&lt;p&gt;Le principe est exactement de le même que pour le coté cuivre (sauf que l'on ne grave pas...)
&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/ImpressionImplentation.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.ImpressionImplentation_t.jpg&quot; alt=&quot;ImpressionImplentation.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Imprimer l'implémentation en miroir.&lt;/li&gt;
&lt;li&gt;Découper la partie utile avec un cutter bien tranchant.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/Serigraphie1.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.Serigraphie1_t.jpg&quot; alt=&quot;Serigraphie1.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sur l'impression photo choisir trois trous de composants dans des coins, les percer avec une aiguille.&lt;/li&gt;
&lt;li&gt;Placer une punaise dans chaque trous et les utiliser pour placer la face avant en concordance avec le coté cuivre.&lt;/li&gt;
&lt;li&gt;Placer le fer à repasser (même température que précédemment) sur le coin qui n'a pas de punaise.&lt;/li&gt;
&lt;li&gt;Laisser chauffer une dizaine de seconde puis enlever une punaise et chauffer cet endroit, répéter l'opération sur les deux autres coins.&lt;/li&gt;
&lt;li&gt;Placer ensuite le papier d'aluminium sur le papier photo et chauffer pendant 3 minutes en faisant doucement des mouvements circulaires en insistant bien sur les bords.&lt;/li&gt;
&lt;li&gt;Après refroidissement de la carte, enlever d'abord le papier d'aluminium puis le papier photo comme précédemment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/Serigraphie2.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.Serigraphie2_t.jpg&quot; alt=&quot;Serigraphie2.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Et voilà,...&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Transfert en utilisant des papiers publicitaires&lt;/h2&gt;

&lt;p&gt;On trouve sur le web la même méthode mais avec du papier issu de publicité à la place du papier photo. J'ai eu l'occasion d'essayer, voici la méthode.
Le nettoyage du cuivre est exactement le même, c'est à partir de l'impression qu'il y a des changements.
Personnellement, je trouve que le papier photo donne des résultats de meilleur qualité.
&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/PreparationPublicite.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.PreparationPublicite_t.jpg&quot; alt=&quot;PreparationPublicite.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Comme pour la papier photo, imprimer le circuit sur une feuille de papier blanc.&lt;/li&gt;
&lt;li&gt;Coller sur cette feuille, avec du ruban adhésif, un morceau de papier publicitaire glacé.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/ImpressionPublicite.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.ImpressionPublicite_t.jpg&quot; alt=&quot;ImpressionPublicite.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Imprimer en utilisant le chargeur d'enveloppes&lt;/li&gt;
&lt;li&gt;Attention à ne pas mettre directement une feuille de publicité dans l'imprimante sans la coller sur une feuille de papier normale (le papier pub est trop fin pour les imprimantes laser).&lt;/li&gt;
&lt;li&gt;Après l'impression, le papier pub peut «&amp;nbsp;coller&amp;nbsp;» au papier blanc, le décoller doucement avec un cutter.&lt;/li&gt;
&lt;li&gt;Transférer comme pour le papier photo avec le fer à repasser.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/TrempagePublicite.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.TrempagePublicite_t.jpg&quot; alt=&quot;TrempagePublicite.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Après refroidissement de la carte, enlever d'abord le papier d'aluminium. Placer la carte dans un récipient avec de l'eau bien chaude et un peu de liquide vaisselle ou de lessive.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;a href=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/PubliciteFinie.jpg&quot;&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20080425/.PubliciteFinie_t.jpg&quot; alt=&quot;PubliciteFinie.jpg&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enlever le papier publicitaire, le toner reste sur le cuivre.&lt;/li&gt;
&lt;li&gt;Selon le papier publicitaire, cela peut être très simple (comme ici), ou alors laborieux... (il faut «&amp;nbsp;éplucher&amp;nbsp;» le papier doucement à la main).&lt;/li&gt;
&lt;li&gt;Laisser sécher, puis graver comme pour le papier photo.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Webographie&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.epages.co.il/pages/homepcb.php&quot; title=&quot;http://www.epages.co.il/pages/homepcb.php&quot;&gt;http://www.epages.co.il/pages/homep...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.riccibitti.com/pcb/pcb.htm&quot; title=&quot;http://www.riccibitti.com/pcb/pcb.htm&quot;&gt;http://www.riccibitti.com/pcb/pcb.h...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://electrons.psychogenic.com/modules/arms/art/10/PrintedCircuitBoardPCBHOWTOAnIllustratedGuide.php&quot; title=&quot;http://electrons.psychogenic.com/modules/arms/art/10/PrintedCircuitBoardPCBHOWTOAnIllustratedGuide.php&quot;&gt;http://electrons.psychogenic.com/mo...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://myweb.cableone.net/wheedal/pcb.htm&quot; title=&quot;http://myweb.cableone.net/wheedal/pcb.htm&quot;&gt;http://myweb.cableone.net/wheedal/p...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.users.on.net/~endsodds/pcb.htm&quot; title=&quot;http://www.users.on.net/~endsodds/pcb.htm&quot;&gt;http://www.users.on.net/~endsodds/p...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.storm.ca/%7Erheslip/pcbfuser.htm&quot; title=&quot;http://www.storm.ca/%7Erheslip/pcbfuser.htm&quot;&gt;http://www.storm.ca/%7Erheslip/pcbf...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://techref.massmind.org/techref/pcb/etch/directinkjetresist.htm&quot; title=&quot;http://techref.massmind.org/techref/pcb/etch/directinkjetresist.htm&quot;&gt;http://techref.massmind.org/techref...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.fullnet.com/~tomg/gooteepc.htm&quot; title=&quot;http://www.fullnet.com/~tomg/gooteepc.htm&quot;&gt;http://www.fullnet.com/~tomg/gootee...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://max8888.orcon.net.nz/pcbs.htm&quot; title=&quot;http://max8888.orcon.net.nz/pcbs.htm&quot;&gt;http://max8888.orcon.net.nz/pcbs.ht...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.instructables.com/id/Two-sided-PCB-using-toner-method/&quot; title=&quot;http://www.instructables.com/id/Two-sided-PCB-using-toner-method/&quot;&gt;http://www.instructables.com/id/Two...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=snileUK7PQg&quot; title=&quot;http://www.youtube.com/watch?v=snileUK7PQg&quot;&gt;http://www.youtube.com/watch?v=snil...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=cHnl5j919jU&quot; title=&quot;http://www.youtube.com/watch?v=cHnl5j919jU&quot;&gt;http://www.youtube.com/watch?v=cHnl...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://thomaspfeifer.net/direct_toner_pcb.htm&quot; title=&quot;http://thomaspfeifer.net/direct_toner_pcb.htm&quot;&gt;http://thomaspfeifer.net/direct_ton...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://techref.massmind.org/techref/pcb/etch/cx4200-vs.htm&quot; title=&quot;http://techref.massmind.org/techref/pcb/etch/cx4200-vs.htm&quot;&gt;http://techref.massmind.org/techref...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.causeries-numeriques.fr/post/2008/04/25/Kicad&quot;&gt;http://www.lis.inpg.fr/realise_au_lis/kicad/&lt;/a&gt;, une solution libre pour réaliser vos schémas et circuits imprimés.&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/04/25/Realisation-de-circuit-imprime-low-cost#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/04/25/Realisation-de-circuit-imprime-low-cost#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/31</wfw:commentRss>
      </item>
    
  <item>
    <title>Le père du jeu de rôles est mort...</title>
    <link>http://www.causeries-numeriques.fr/post/2008/03/05/Le-pere-du-jeu-de-roles-est-mort</link>
    <guid isPermaLink="false">urn:md5:c1de915c910135e25e57923552473d1c</guid>
    <pubDate>Wed, 05 Mar 2008 14:40:00 +0100</pubDate>
    <dc:creator>jb</dc:creator>
        <category>En vrac</category>
            
    <description>    &lt;p&gt;Je viens d'apprendre le décès de &lt;a href=&quot;http://en.wikipedia.org/wiki/Gary_Gygax&quot;&gt; Gary Gygax &lt;/a&gt; le père du jeu de rôles. Durant mes années de collège et lycée j'ai passé des heures à jouer à l'internat. J'ai peu à peu arrêté de jouer pendant mes études mais je reste toujours au courant de ce qui se passe dans ces mondes imaginaires. La mort de Gygax me ramène des années en arrière...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2008/03/05/Le-pere-du-jeu-de-roles-est-mort#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2008/03/05/Le-pere-du-jeu-de-roles-est-mort#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/30</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>Pancakes</title>
    <link>http://www.causeries-numeriques.fr/post/2007/08/22/Pancakes</link>
    <guid isPermaLink="false">urn:md5:fac514f76adba85277110a4c77d462b0</guid>
    <pubDate>Wed, 22 Aug 2007 16:16:00 +0200</pubDate>
    <dc:creator>jb</dc:creator>
        <category>Coté cuisine</category>
            
    <description>&lt;p&gt;La recette des pancakes pour le petit déjeuner (ou pour gouter, ou pour...)&lt;/p&gt;    &lt;p&gt;&lt;img src=&quot;http://www.causeries-numeriques.fr/public/photos/20070822/pancakes.jpg&quot; alt=&quot;Pancakes&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; /&gt;
Pour réaliser une vingtaine de pancakes, il faut&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;2 oeufs&lt;/li&gt;
&lt;li&gt;150 grammes de farine&lt;/li&gt;
&lt;li&gt;20 cl de lait&lt;/li&gt;
&lt;li&gt;2 &lt;acronym title=&quot;cuillerées à soupe&quot;&gt;càs&lt;/acronym&gt; de sucre (environ 30 grammes)&lt;/li&gt;
&lt;li&gt;1 sachet de sucre vanillé&lt;/li&gt;
&lt;li&gt;1 sachet de levure chimique&lt;/li&gt;
&lt;li&gt;1 pincée de sel&lt;/li&gt;
&lt;li&gt;1 filet d'huile&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Mélanger les sucres avec les oeufs.&lt;/li&gt;
&lt;li&gt;Ajouter le lait, la farine et la levure.&lt;/li&gt;
&lt;li&gt;Graisser une poële ou une crépière et cuire à feux moyen. Les pancakes doivent être retournés quand les bulles à la surface ont éclatées (comme celui de gauche sur la photo).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;La pâte ne nécessite pas de repos puisque l'on utilise de la levure chimique.&lt;/p&gt;</description>
    
    
    
          <comments>http://www.causeries-numeriques.fr/post/2007/08/22/Pancakes#comment-form</comments>
      <wfw:comment>http://www.causeries-numeriques.fr/post/2007/08/22/Pancakes#comment-form</wfw:comment>
      <wfw:commentRss>http://www.causeries-numeriques.fr/feed/rss2/comments/12</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>
    
</channel>
</rss>