<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="https://mudry.info/blog/feed/rss2/xslt" ?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Un blog inutile de plus... - Mot-clé - Pense-bête</title>
    <link>https://mudry.info/blog/</link>
    <atom:link href="https://mudry.info/blog/feed/tag/Pense-b%C3%AAte/rss2" rel="self" type="application/rss+xml" />
    <description></description>
    <language>fr</language>
    <pubDate>Mon, 06 Apr 2026 12:42:40 +0200</pubDate>
    <copyright></copyright>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <generator>Dotclear</generator>
          <item>
        <title>Dotclear 2.24 et mises à jour...</title>
        <link>https://mudry.info/blog/post/2022/12/24/Dotclear-2.24-et-mises-%C3%A0-jour</link>
        <guid isPermaLink="false">urn:md5:972d7331a3cc79a352f4733276792148</guid>
        <pubDate>Sat, 24 Dec 2022 13:42:00 +0100</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Free the code!</category>
                          <category>Dotclear2</category>
                  <category>Free the code!</category>
                  <category>Pense-bête</category>
                <description>&lt;p&gt;Aujourd'hui, &lt;a href=&quot;https://fr.dotclear.org/blog/post/2022/12/24/Dotclear-2.24&quot; hreflang=&quot;fr&quot;&gt;la version 2.24 de Dotclear a été publiée&lt;/a&gt; officiellement. Cette version apporte pas mal de changements qui ont des impacts (entre autres) sur les plugins. Je vais donc m'atteler ces prochains jours à publier de nouvelles versions de mes greffons.&lt;/p&gt;          &lt;p&gt;Voici l'ordre dans lequel je pense progresser :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;imgWidthAndHeightAdder (un grand merci à Franck Paul pour la mise à jour du code de celui-ci) → &lt;a href=&quot;https://mudry.info/blog/shurl/2l0&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;BigRedButton → &lt;a href=&quot;https://mudry.info/blog/shurl/2l1&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;shortURL → &lt;a href=&quot;https://mudry.info/blog/shurl/2l2&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;autodump (pas un greffon en tant que tel) → &lt;a href=&quot;https://mudry.info/blog/shurl/2l3&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;randomPost → &lt;a href=&quot;https://mudry.info/blog/shurl/2l4&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;dcImageMetaExtender → &lt;a href=&quot;https://mudry.info/blog/shurl/2l5&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;contextNavigation → mise à jour privée&lt;/li&gt;
&lt;li&gt;jmuExifInserter → &lt;del&gt;bloqué par un &lt;a href=&quot;https://git.dotclear.org/dev/clearbricks/issues/6&quot; hreflang=&quot;fr&quot;&gt;comportement étrange de la méthode strftime de Clearbricks&lt;/a&gt;&lt;/del&gt; → problème de int / double sur un timestamp → mise à jour privée&lt;/li&gt;
&lt;li&gt;jmuRedirect → mise à jour privée&lt;/li&gt;
&lt;li&gt;jmuTemplate → mise à jour privée (mais je questionne son utilité réelle... il ne fait qu'ajouter une classe &quot;me&quot; sur les commentaires faits par l'auteur·ice du blogue, et je crois me souvenir que c'est une option par défaut maintenant)&lt;/li&gt;
&lt;li&gt;jmuTweakUrls → mise à jour privée&lt;/li&gt;
&lt;li&gt;photoblog2 → &lt;a href=&quot;https://mudry.info/blog/shurl/2l6&quot; hreflang=&quot;fr&quot;&gt;billet d'annonce de la nouvelle version&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;awstats → mise à jour privée&lt;/li&gt;
&lt;li&gt;myLog → mise à jour privée&lt;/li&gt;
&lt;li&gt;previewNav → mise à jour privée&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;Les greffons suivants ne seront PAS mis à jour :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;fmyTweakUrls&lt;/li&gt;
&lt;li&gt;publicCDN → &lt;a href=&quot;https://mudry.info/blog/shurl/2l7&quot; hreflang=&quot;fr&quot;&gt;mise à jour malgré tout effectuée...&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;vieDeMerde&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;À noter que, dans ces listes, certains greffons n'ont jamais été rendus public et ne le seront probablement toujours pas. C'est avant tout un pense-bête pour moi.&lt;/p&gt;


&lt;p&gt;Si un de mes greffons vous tient particulièrement à cœur et vous bloque dans votre migration à Dotclear 2.24, signalez-le en commentaire, j'augmenterai alors sa priorité.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>J'aime le web...</title>
        <link>https://mudry.info/blog/post/2011/03/26/J-aime-le-web</link>
        <guid isPermaLink="false">urn:md5:3df4977c44bd03a631b9beac5d3e8974</guid>
        <pubDate>Sat, 26 Mar 2011 11:09:00 +0100</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Pense-bête</category>
                  <category>TED</category>
                  <category>Web</category>
                <description>          &lt;p&gt;Il y a des jours où je me dis que c'est quand même bien de vivre à l'ère du web.&lt;/p&gt;


&lt;p&gt;D'un côté, nous avons le cycle de conférences &lt;a href=&quot;http://www.ted.com/&quot; hreflang=&quot;en&quot;&gt;TED &quot;Ideas worth spreading&quot;&lt;/a&gt;&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2011/03/26/J-aime-le-web#pnote-5278-1&quot; id=&quot;rev-pnote-5278-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;, des conférences de haute qualité sur quantité de sujets différents. Elles sont toutes visibles sur le site web, en anglais, mais sous-titrées dans un grand nombre de langues différentes. Des heures de bonheur et de découvertes à disposition.&lt;/p&gt;


&lt;p&gt;Seulement voilà, j'ai beaucoup de peine à me concentrer pour regarder une vidéo sur mon ordinateur&amp;nbsp;: il y a beaucoup trop de sources de distraction (emails, messagerie instantanée, Twitter, ...) pour que j'y arrive. Heureusement, sur le site de TED, ils ont l'excellente idée de proposer le téléchargement des vidéos et je peux ainsi les regarder sur mon «&amp;nbsp;media center&amp;nbsp;» tranquillement.&lt;/p&gt;


&lt;p&gt;Mais (il en faut bien un), les sous-titres, eux, ne sont pas proposés au téléchargement. Or j'aime bien regarder mes vidéos en anglais avec des sous-titres également en anglais (ça permet de rattraper le petit truc qui m'aurait échappé à l'écoute). Et c'est là qu'entre en scène le site &lt;a href=&quot;http://tedtalksubtitledownload.appspot.com/&quot; hreflang=&quot;en&quot; title=&quot;Ted Talk Subtitle Download&quot;&gt;TTSD&lt;/a&gt;&amp;nbsp;: il permet de télécharger les sous-titres des vidéos TED&amp;nbsp;! Que du bonheur je vous dis&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;J'adore cette émulation qui se produit naturellement dans l'univers du web. Une première personne met à disposition un service, et une autre, sans avoir aucun lien avec la première, peut mettre à disposition un autre service, s'appuyant sur le premier, mais en comblant ce qu'il considère être un manque du premier service.&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2011/03/26/J-aime-le-web#rev-pnote-5278-1&quot; id=&quot;pnote-5278-1&quot;&gt;1&lt;/a&gt;] « Des idées qui valent la peine d'être répandues »&lt;/p&gt;&lt;/div&gt;
</description>
        
              </item>
          <item>
        <title>Trucs mplayer</title>
        <link>https://mudry.info/blog/post/2010/11/13/Trucs-mplayer</link>
        <guid isPermaLink="false">urn:md5:ed2fd7c007217e7dc51b5dd6fd94e5b6</guid>
        <pubDate>Sat, 13 Nov 2010 18:39:00 +0100</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Pense-bête</category>
                <description>          &lt;p&gt;Deux opérations que j'ai dû faire récemment et dont je tiens à conserver une trace.&lt;/p&gt;


&lt;h3&gt;Extraire la bande son d'un DVD&lt;/h3&gt;

&lt;pre&gt;
mplayer -dvd-device &amp;lt;point de montage du lecteur&amp;gt; dvd://&amp;lt;titre&amp;gt; -chapter &amp;lt;chapitre début&amp;gt;-&amp;lt;chapitre fin&amp;gt; -vc dummy -vo null -af resample=44100 -ao pcm:waveheader:fast:file=&amp;lt;fichier de sortie&amp;gt;.wav
&lt;/pre&gt;


&lt;p&gt;Notes&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;chapitre fin&amp;gt;&lt;/code&gt; est aussi inclus dans ce qui est exporté. Donc, pour exporter seulement le troisième chapitre, il faut utiliser &lt;code&gt;-chapter 3-3&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;L'extraction se fait à un taux d'environ 2.3x sur mon poste.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voir aussi&amp;nbsp;: &lt;a href=&quot;http://www.axllent.org/docs/video/mencoder_dvd_to_mpeg4&quot; hreflang=&quot;en&quot;&gt;axllent.org/docs/video/mencoder_dvd_to_mpeg4&lt;/a&gt;&lt;/p&gt;


&lt;h3&gt;Faire un film à partir d'une seule image et une bande son&lt;/h3&gt;

&lt;pre&gt;
ffmpeg -loop_input -shortest -i &amp;lt;image.jpg&amp;gt; -i &amp;lt;son.mp3&amp;gt; -acodec copy -b 200k -f mp4 &amp;lt;fichier de sortie&amp;gt;.mp4
&lt;/pre&gt;</description>
        
              </item>
          <item>
        <title>Ohlala!</title>
        <link>https://mudry.info/blog/post/2009/09/09/Ohlala</link>
        <guid isPermaLink="false">urn:md5:253a25e611f3c76eaa5125df36c79c90</guid>
        <pubDate>Wed, 09 Sep 2009 18:17:00 +0200</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Paris</category>
                  <category>Pense-bête</category>
                <description>          &lt;p&gt;Une chose est sure&amp;nbsp;: lors de mon prochain passage à Paris, j'irai prendre un repas au restaurant &lt;a href=&quot;http://www.ohlala-paris.fr/&quot; hreflang=&quot;fr&quot;&gt;Ohlala!&lt;/a&gt; Pourquoi&amp;nbsp;? Simplement parce que les propriétaires du lieu ont eu l'excellente idée de mandater &lt;a href=&quot;http://www.space-invaders.com/&quot; hreflang=&quot;fr&quot;&gt;Invader&lt;/a&gt; pour qu'il réalise une fresque sur l'un des murs du restaurant... et puisque je suis toujours autant fan du travail de cet artiste, je me dois d'aller voir cela.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Canaux DVB-T pour VideoLAN 0.9</title>
        <link>https://mudry.info/blog/post/2008/08/13/Canaux-DVB-T-pour-VideoLan-09</link>
        <guid isPermaLink="false">urn:md5:36df45339ec0a0be609f166b9870944f</guid>
        <pubDate>Wed, 13 Aug 2008 20:43:00 +0200</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Pense-bête</category>
                <description>          &lt;p&gt;Paramétrisation de VideoLAN Client 0.9 pour l'utilisation la TNT avec l'antenne la plus proche de chez moi&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;:dvb-frequency -&amp;gt; 754000&lt;/li&gt;
&lt;li&gt;:dvb-bandwidth -&amp;gt; 8&lt;/li&gt;
&lt;li&gt;:program
&lt;ul&gt;
&lt;li&gt;TSR1 -&amp;gt; 257&lt;/li&gt;
&lt;li&gt;TSR2 -&amp;gt; 258&lt;/li&gt;
&lt;li&gt;SF1 -&amp;gt; 1&lt;/li&gt;
&lt;li&gt;TSI1 -&amp;gt; 513&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;:access-filter -&amp;gt; timeshift  (permet de mettre en pause la TNT)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et pour passer cela en streaming sur UDP, il faut ajouter les paramètres&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;:sout=#standard{access=udp,mux=ts,dst=x.x.x.x:1234}&lt;/pre&gt;

&lt;p&gt;où &lt;code&gt;x.x.x.x&lt;/code&gt; représente l'adresse IP de l'ordinateur de destination.&lt;/p&gt;


&lt;p&gt;Si on veut quand même visualiser sur le serveur ce qui est envoyé, le paramètre &lt;code&gt;sout&lt;/code&gt; devient&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;:sout=#duplicate{dst=display,dst=standard{access=udp,mux=ts,dst=x.x.x.x:1234}}&lt;/pre&gt;


&lt;p&gt;Bien entendu, on peut également «&amp;nbsp;s'amuser&amp;nbsp;» à modifier le flux avant de l'envoyer (ici, je diminue la taille avec &lt;code&gt;scale=0.75&lt;/code&gt; et je réencode le tout en MPEG-2 Video à 4096 kbit/s et en ajoutant une petite touche de désentrelacement)&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;:sout=#transcode{vcodec=mp2v,vb=4096,scale=0.75,deinterlace}:standard{access=udp.mux=ts,dst=x.x.x.x:1234}&lt;/pre&gt;


&lt;p&gt;Note&amp;nbsp;: mes tests semblent indiquer que le flux est moins perturbé si on ne fait pas d'affichage local sur le serveur.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Nikon D300, Nikon View 6 et fichiers RAW 14 bits</title>
        <link>https://mudry.info/blog/post/2008/01/27/Nikon-D300-Nikon-View-6-et-fichiers-RAW-14-bits</link>
        <guid isPermaLink="false">urn:md5:e98d47a91d640bbe4564a6b6361f2782</guid>
        <pubDate>Sun, 27 Jan 2008 17:23:00 +0100</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Photographie</category>
                          <category>Pense-bête</category>
                  <category>Photographie</category>
                <description>&lt;p&gt;Si, comme moi, vous venez de vous acheter un des petits derniers reflex de chez Nikon et que vous préférez utiliser les anciennes versions des logiciels Nikon, faites très attention.&lt;/p&gt;          &lt;p&gt;Je viens de découvrir (pour mon malheur) une certaine incompatibilité&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;dès le premier jour, j'ai réglé mon D300 pour faire des photos avec des fichiers RAW codés sur 14 bits&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;j'utilise toujours Nikon Transfer, qui était livré avec Nikon View 6&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;or, Nikon Transfer ne supporte pas du tout les fichiers NEF du D300... à tel point qu'&lt;strong&gt;il a détruit toutes les photos&lt;/strong&gt; que j'avais prises jusqu'à maintenant lors de la copie sur mon disque dur&amp;nbsp;!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;La destruction se présente sous la forme de photos où tous les détails sont perdus et les photos presque entièrement blanches. Voici une illustration de ce problème, avec d'abord la photo après destruction et ensuite la photo telle qu'elle avait été prise&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;https://mudry.info/blog.dir/public/photographie/DSC_0006_raw.jpg&quot; alt=&quot;Photo en format RAW détruite par Nikon Transfer&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;https://mudry.info/blog.dir/public/photographie/DSC_0006_jpeg.jpg&quot; alt=&quot;Photo telle qu&amp;#039;elle avait été prise pour comparaison&quot; style=&quot;display:block; margin:0 auto;&quot; /&gt;&lt;/p&gt;


&lt;p&gt;J'espère que grâce à ces infos vous éviterez de faire la même bêtise que moi.&lt;/p&gt;


&lt;p&gt;Bien entendu, juste après le transfert, j'ai comme toujours reformaté la carte mémoire. Je suis donc en train d'utiliser un logiciel de récupération de données pour essayer de retrouver les photos effacées.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Mise à jour d'un greffon de template sur Dotclear2</title>
        <link>https://mudry.info/blog/post/2007/08/21/Mise-a-jour-dun-greffon-de-template-sur-Dotclear2</link>
        <guid isPermaLink="false">urn:md5:9eafd0d25da32f6085e67aa82500faa2</guid>
        <pubDate>Tue, 21 Aug 2007 20:19:00 +0200</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Dotclear2</category>
                  <category>Pense-bête</category>
                <description>          &lt;p&gt;Lors de la mise à jour d'un greffon proposant des fonctions de template, voici l'ordre dans lequel effectuer la mise à jour&amp;nbsp;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;mettre à jour le greffon sur le serveur&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;mettre à jour les thèmes sur le serveur.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Si on inverse ces deux étapes, on risque fort de se retrouver avec un thème défectueux présenté aux visiteurs. Cela est dû au fait que le cache du moteur de template n'est mis à jour que lorsque les fichiers du thème ont été modifiés. Si on modifie d'abord le thème, les nouvelles (ou celles dont le nom a changé) fonctions de template n'existeront pas encore lors de l'affichage du thème et ne seront donc pas interprétées dans le cache.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Incompatibilités entre MultiViews et RewriteRule</title>
        <link>https://mudry.info/blog/post/2007/01/19/Incompatibilites-entre-MultiViews-et-RewriteRule</link>
        <guid isPermaLink="false">urn:md5:f198bedb65435929ab0a6b10791c9bdf</guid>
        <pubDate>Fri, 19 Jan 2007 19:27:00 +0100</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Dotclear2</category>
                  <category>Pense-bête</category>
                <description>          &lt;p&gt;Situation&amp;nbsp;: Apache 1.3, un fichier &lt;code&gt;blog.php&lt;/code&gt; à la racine, qui prend en charge les URLs de type &lt;code&gt;http://www.example.com/blog/post/...&lt;/code&gt; par le biais d'une option &lt;code&gt;MultiViews&lt;/code&gt; activée dans le fichier &lt;code&gt;.htaccess&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Problème&amp;nbsp;: tout jeu de &lt;code&gt;RewriteRule&lt;/code&gt; traitant des URLs commençant par &lt;code&gt;blog/&lt;/code&gt; ne fonctionne pas... C'est en effet l'option &lt;code&gt;MultiViews&lt;/code&gt; qui prend le dessus, et les arguments suivant le &quot;/&quot; sont «&amp;nbsp;transmis&amp;nbsp;» au script &lt;code&gt;blog.php&lt;/code&gt; avant même d'être interprétés par les &lt;code&gt;RewriteRule&lt;/code&gt;.&lt;/p&gt;


&lt;p&gt;Solution&amp;nbsp;: Je n'ai pas réussi à trouver une solution propre permettant de faire cohabiter ces deux types de traitement. Par conséquent, j'ai dû rédiger un plugin pour DotClear2 (très fortement inspiré du plugin &lt;code&gt;dc1redirect&lt;/code&gt; de la dcTeam) qui traite les règles de «&amp;nbsp;rewriting&amp;nbsp;» que j'aurais aimé mettre dans le fichier &lt;code&gt;.htaccess&lt;/code&gt;...&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Récupérer un flux RealAudio</title>
        <link>https://mudry.info/blog/post/2007/01/07/343-recuperer-un-flux-realaudio</link>
        <guid isPermaLink="false">urn:md5:921a4d7b16dd987a72d92f0351dd3f21</guid>
        <pubDate>Sun, 07 Jan 2007 11:00:00 +0000</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Pense-bête</category>
                  <category>Radio</category>
                  <category>Web</category>
                <description>&lt;p&gt;Trouvé là-bas&amp;nbsp;: &lt;a href=&quot;http://grimthing.com/archives/2004/05/20/recording-streaming-audio-with-mplayer/&quot; hreflang=&quot;en&quot;&gt;grimthing.com/archives/2004/05/20/recording-streaming-audio-with-mplayer/&lt;/a&gt;. Et recopié ici juste pour le retrouver facilement le jour où j'en aurai besoin...&lt;/p&gt;          &lt;h4&gt;The stream I want to record is already in the format I want&lt;/h4&gt;


&lt;p&gt;This simplifies things a bit. If the stream you want to record is already in the format you want to use, you can use the &lt;code&gt;-dumpstream&lt;/code&gt; flag instead. Your streamrecorder script will look like this instead:&lt;/p&gt;

&lt;pre&gt; [bash]
#!/bin/sh
mplayer -playlist /home/username/scripts/playlist.txt -dumpstream -dumpfile /home/username/FlockofSeagulls_`date +%b%d` -vc dummy -vo null ;
&lt;/pre&gt;


&lt;p&gt;This will result in a file called &lt;code&gt;FlockofSeagulls_May20&lt;/code&gt;, without a file extension, in username’s home directory. This eliminates the intermediate temporary file and the encoding step. You can add the extension after &lt;code&gt;`date +%b%d`&lt;/code&gt; just like in the previous script if you want. It doesn’t matter as MPlayer doesn’t require the extensions in order to play the file but your desktop environment may like the extensions in order to associate the file with whichever media player you’d prefer when you click it in your file browser.&lt;/p&gt;


&lt;h4&gt;What’s the deal with the playlist flag?&lt;/h4&gt;


&lt;p&gt;If you’ve been to this site before, you may notice the &lt;code&gt;-playlist&lt;/code&gt; switch that was talked about in the MPlayer playlist, and Cron-MP3 Alarm Clock articles. In order to understand why you need the playlist switch when playing streaming audio, you need to understand a bit more about how streaming audio works.&lt;/p&gt;


&lt;p&gt;Each streaming format has a kind of playlist file that your music player uses to redirect it to the actual music stream. For Windows Media it’s &lt;code&gt;.asf&lt;/code&gt;, for Real Audio it’s &lt;code&gt;.ram&lt;/code&gt;, MP3 uses &lt;code&gt;.m3u&lt;/code&gt; and &lt;code&gt;.pls&lt;/code&gt;. Even though each format has it’s own unique file extension, each file is basically the same. They’re just text files with urls pointing to the actual streams. Take your editor and open the &lt;code&gt;playlist.txt&lt;/code&gt; file and see for yourself. If you see one of those file extensions, you’ll need to download the playlist and use the &lt;code&gt;-playlist&lt;/code&gt; switch to play/record those streams.&lt;/p&gt;


&lt;p&gt;Ogg, however, is an exception. Most Ogg streams, such as those from Icecast servers, don’t require the &lt;code&gt;-playlist&lt;/code&gt; switch because the server handles all of the redirection without the need for a playlist. Those Ogg streams that do require the switch are usually just a static directory full of oggs. In such an event, the static directory versions usually implement a playlist file and use the same file extensions as MP3.&lt;/p&gt;


&lt;p&gt;In theory, the &lt;code&gt;-playlist&lt;/code&gt; switch doesn’t require the playlist file to reside on your hard drive. You should be able to just type &lt;code&gt;mplayer -playlist http://full/url/to/playlist.pls&lt;/code&gt; and it should work. However, I’ve had mixed results with that method. Downloading the playlist to hard drive has worked for me every time. Feel free to experiment using the URL instead of the downloaded file, as your results may differ from mine.&lt;/p&gt;


&lt;p&gt;Text by Philip McClure&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Traduction d'un plugin DotClear2</title>
        <link>https://mudry.info/blog/post/2006/12/31/342-traduction-d-un-plugin-dotclear2</link>
        <guid isPermaLink="false">urn:md5:b4015e02f0ecc567ff7dd49b278cde82</guid>
        <pubDate>Sun, 31 Dec 2006 09:09:00 +0000</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Dotclear2</category>
                  <category>Pense-bête</category>
                  <category>Vie du blog</category>
                <description>&lt;p&gt;La méthode choisie dans DotClear2 pour la traduction des plugins est basée sur gettext, et est fondamentalement différente de celle qui était utilisée dans DotClear 1. Puisque j'ai découvert ce monde en tentant de traduire mon premier plugin, voici quelques notes sur la manière de procéder pour générer les fichiers de traduction.&lt;/p&gt;          &lt;p&gt;Pour la première traduction d'un nouveau plugin&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;  xgettext -L PHP --keyword=__ *.php
  mv messages.po messages.pot
  mkdir -p locales/fr
  msginit --locale=fr -o locales/fr/main.po&lt;/pre&gt;


&lt;p&gt;Lors de mises à jour du plugin, pour fusionner les nouvelles chaînes dans le plugin avec celles déjà traduites&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;  xgettext -L PHP --keyword=__ *.php
  mv -f messages.po messages.pot
  msgmerge -U locales/fr/main.po messages.pot&lt;/pre&gt;


&lt;p&gt;&lt;strong&gt;Mise à jour, 1er janvier 2007, 09h42 :&lt;/strong&gt; Il semble également exister &lt;a href=&quot;http://www.tigroux.net/index/2006/10/19/129-langomatic-0-1-pour-dotclear-2&quot; hreflang=&quot;fr&quot;&gt;le plugin langOmatic de Tigroux&lt;/a&gt; pour se simplifier la tâche de traduction... Je ne l'ai pas testé toutefois.&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Mise à jour, 3 février 2008, 10h06 :&lt;/strong&gt; Il y avait une coquille qui s'était glissée dans l'appel  à &lt;code&gt;msginit&lt;/code&gt;. L'article est maintenant corrigé. Merci à Osku de me l'avoir signalé.&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>Migration vers DC2, les étapes</title>
        <link>https://mudry.info/blog/post/2006/12/30/341-migration-vers-dc2-les-etapes</link>
        <guid isPermaLink="false">urn:md5:3cf710c794e7ff1bbe8760b41d02a9cb</guid>
        <pubDate>Sat, 30 Dec 2006 13:50:00 +0000</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Pense-bête</category>
                          <category>Dotclear2</category>
                  <category>Pense-bête</category>
                  <category>Vie du blog</category>
                <description>&lt;p&gt;Note&amp;nbsp;: ce billet détaillant les étapes qui m'attendent pour migrer mes blogs de DotClear 1.2.x vers DotClear2 est hautement spécifique à ma situation. N'espérez pas pouvoir vous en inspirer pour votre propre migration... Si malgré tout vous essayez de vous inspirer de ces quelques notes, ne comptez pas sur moi pour vous dépatouiller lorsque tout aura foiré (car cela va foirer).&lt;/p&gt;          &lt;p&gt;Dans DotClear 1.2.x (pour la migration du multicat en tags)&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Créer et remplir la table DC_PREFIX.post_cat_tmp comme suit&amp;nbsp;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;CREATE TABLE `DC_PREFIX.post_cat_tmp` (`post_id` INT(11) not null,  `cat_id` INT(11) not null, `cat_libelle` VARCHAR(255) not null);
ALTER TABLE `DC_PREFIX.post_cat_tmp` ADD PRIMARY KEY (`post_id`, `cat_id`);
ALTER TABLE `DC_PREFIX.post_cat_tmp` ADD INDEX (`cat_id`, `post_id`);
INSERT INTO `DC_PREFIX.post_cat_tmp` (SELECT DC_PREFIX.post_cat.post_id, DC_PREFIX.post_cat.cat_id, DC_PREFIX.categorie.cat_libelle FROM DC_PREFIX.post_cat INNER JOIN DC_PREFIX.categorie ON DC_PREFIX.post_cat.cat_id = DC_PREFIX.categorie.cat_id);&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Adapter le plugin flatExport pour qu'il tienne compte de la table post_cat_tmp (fichier index.php)&amp;nbsp;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;    $dbx-&amp;gt;exportTable(DB_PREFIX.'post_cat_tmp');&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Exporter le blog avec le plugin flatExport.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Dans DotClear2&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installer les plugins officiels dayMode, commentsWikibar et packager&lt;/li&gt;
&lt;li&gt;Installer les trois &quot;thèmes inutiles&quot;&lt;/li&gt;
&lt;li&gt;Installer mes plugins Photoblog2 et jmuTemplate&lt;/li&gt;
&lt;li&gt;Activer l'option MultiView et créer les fichiers PHP d'accès aux blogs&lt;/li&gt;
&lt;li&gt;Créer les blogs et les paramétrer&amp;nbsp;:
&lt;ul&gt;
&lt;li&gt;Lecture de l'URL&amp;nbsp;: PATH_INFO&lt;/li&gt;
&lt;li&gt;Fuseau horaire&lt;/li&gt;
&lt;li&gt;Format de date&amp;nbsp;: %A %e %B %Y&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Adapter le fichier class.dc.import.php du plugin importExport pour importer post_cat_tmp&amp;nbsp;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;(fonction prepareDC12line) :
   case 'post_cat_tmp':
     $line-&amp;gt;substitute('cat_libelle', 'meta_id');
     $line-&amp;gt;drop('cat_id');
     $line-&amp;gt;__name = 'meta';
     $line-&amp;gt;blog_id = 'default';
     $line-&amp;gt;meta_type = 'tag';
     break;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Importer le contenu des blogs&lt;/li&gt;
&lt;li&gt;Déplacer le contenu des dossiers images dans public/blog_id pour chaque blog&lt;/li&gt;
&lt;li&gt;Modifier tous les billets pour tenir compte du nouveau chemin pour les images&amp;nbsp;:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt; update dc2_post
 set post_content = INSERT(post_content, locate('blog.dir/public/', post_content), length('blog.dir/public/'), 'dotclear2/public/blog/')
 set post_content_xhtml = INSERT(post_content_xhtml, locate('blog.dir/public/', post_content), length('blog.dir/public/'), 'dotclear2/public/blog/')
 where post_content_xhtml like '%/images/%'
   and blog_id = 'blog';&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;Supprimer les anciennes vignettes des dossiers images&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Finalement, après avoir vérifié que tout fonctionne&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Installer un jeu de rewrite pour rediriger les anciennes URLs vers les nouvelles.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Et ne pas oublier de compulser compulsivement &lt;a href=&quot;http://www.kozlika.org/dissitou/&quot; hreflang=&quot;fr&quot;&gt;les dcTips() de Kozlika&lt;/a&gt; pour vérifier que l'on n'a rien oublié lors de la migration...&lt;/p&gt;


&lt;p&gt;(PS: Un grand merci à &lt;a href=&quot;http://callmepep.org/&quot; hreflang=&quot;fr&quot;&gt;Sieur Pep&lt;/a&gt; pour son aide concernant l'export du multicat. Et un autre très grand merci à toute la DC.Team() pour ce bel outil.)&lt;/p&gt;</description>
        
              </item>
          <item>
        <title>DotClear, l'indexation et les robots(.txt)</title>
        <link>https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots</link>
        <guid isPermaLink="false">urn:md5:320c26174b107ebfb52e49d14718adb4</guid>
        <pubDate>Wed, 11 Jan 2006 22:49:00 +0000</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Free the code!</category>
                          <category>Free the code!</category>
                  <category>Pense-bête</category>
                <description>&lt;p&gt;Il y a quelques mois, je m'étais posé la question de savoir quel contenu de mon blog je souhaitais voir être indexé par les moteurs de recherches. Après réflexion, je me suis dit qu'il ne fallait indexer que les articles et les pages connexes afin d'offrir la meilleure qualité de résultats aux utilisateurs des moteurs de recherche. En fait, il faut surtout chercher à exclure toute page contenant plus d'un billet, ceci afin d'éviter que le contenu de la page soit «&amp;nbsp;pollué&amp;nbsp;» par quantité de mots n'ayant aucun rapport avec le sujet qu'essaie de faire passer l'article.&lt;/p&gt;          &lt;p&gt;Mon postulat de base pour arriver à cette conclusion était le suivant&amp;nbsp;: l'élément de base d'information de ce blog est &lt;em&gt;un&lt;/em&gt; article dans son entierté. Par conséquent, tout le reste de ce monologue n'a aucun sens pour des blogs de type feuilleton ou des blogs ayant l'habitude de parler de beaucoup de choses différentes dans un seul et même article.&lt;/p&gt;


&lt;p&gt;Le but est donc d'empêcher aux robots des moteurs de recherche d'indexer le contenu des pages d'archives, tout en les laissant sotcker tout ce qu'ils souhaitent sur les pages contenant un billet seul. Bien entendu, il faut malgré tout laisser l'autorisation à ces robots de parcourir les pages d'archives, afin qu'ils puissent trouver les pages des billets... La solution à cette problématique porte le doux nom de «&amp;nbsp;balise meta &lt;em&gt;robots&lt;/em&gt;.&amp;nbsp;» C'est une balise HTML qui vient se mettre dans l'entête de la page web (section &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;) et elle doit contenir une combinaison des mots clefs &lt;code&gt;INDEX&lt;/code&gt;, &lt;code&gt;NOINDEX&lt;/code&gt;, &lt;code&gt;FOLLOW&lt;/code&gt; et &lt;code&gt;NOFOLLOW&lt;/code&gt;. Voici la signification de chacun de ces mots clefs&amp;nbsp;:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;&lt;kbd&gt;INDEX&lt;/kbd&gt;&lt;/dt&gt;&lt;dd&gt;indique que le moteur de recherche peut indexer la page courante&amp;nbsp;;&lt;/dd&gt;
&lt;dt&gt;&lt;kbd&gt;NOINDEX&lt;/kbd&gt;&lt;/dt&gt;&lt;dd&gt;demande au moteur de recherche de ne pas indexer la page courante&amp;nbsp;;&lt;/dd&gt;
&lt;dt&gt;&lt;kbd&gt;FOLLOW&lt;/kbd&gt;&lt;/dt&gt;&lt;dd&gt;indique que le moteur de recherche peut suivre tous les liens de la page courante&amp;nbsp;;&lt;/dd&gt;
&lt;dt&gt;&lt;kbd&gt;NOFOLLOW&lt;/kbd&gt;&lt;/dt&gt;&lt;dd&gt;demande au moteur de recherche de ne suivre aucun lien de la page courante.&lt;/dd&gt;&lt;/dl&gt;



&lt;p&gt;Pour atteindre le but que je souhaite, il faut donc mettre la balise suivante sur les pages contenant un seul article&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;&amp;lt;meta name=&quot;robots&quot; content=&quot;index,follow&quot; /&amp;gt;&lt;/pre&gt;

&lt;p&gt;et cette balise-ci sur toutes les autres pages&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;&amp;lt;meta name=&quot;robots&quot; content=&quot;noindex,follow&quot; /&amp;gt;&lt;/pre&gt;


&lt;p&gt;Dans DotClear, cela se fait très facilement en mettant la ligne suivante dans la partie &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; du fichier &lt;code&gt;template.php&lt;/code&gt; du thème&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;meta name=&amp;quot;robots&amp;quot; content=&amp;quot;&amp;lt;?php 
 	if ($mode != 'related' &amp;amp;&amp;amp; $mode != 'post') { 
 		echo 'noindex,follow';
 	} else { 
 		echo 'index,follow'; 
 	} ?&amp;gt;&amp;quot; /&amp;gt;&lt;/pre&gt;


&lt;p&gt;Et voilà, c'est tout ce qu'il y a à faire. Et est-ce que ça marche&amp;nbsp;? Je crois&amp;nbsp;: depuis que j'ai mis cela en place sur mes blogs, je ne tombe plus sur mes pages d'archives lors de recherche et les billets sont, eux, toujours trouvables facilement.&lt;/p&gt;


&lt;p&gt;Lorsque j'ai proposé cette solution sur le forum de DotClear (&lt;a href=&quot;http://www.dotclear.net/forum/viewtopic.php?id=10366&quot; hreflang=&quot;fr&quot;&gt;en réponse à cette question&lt;/a&gt;), on s'est interrogé sur la faisabilité de ces mêmes restrictions au moyen d'un fichier &lt;code&gt;robots.txt&lt;/code&gt;, &lt;a href=&quot;http://www.robotstxt.org/wc/exclusion.html&quot; hreflang=&quot;en&quot;&gt;le standard d'exclusion des robots sur le web&lt;/a&gt;. Mon sentiment est que cela n'est pas faisable. Il y a en effet deux limitations dans ce standard qui rendent cela fort difficile&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;on ne peut pas &lt;em&gt;autoriser&lt;/em&gt; explicitement le parcours de certaines pages&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;les préfixes utilisés sont &lt;em&gt;inclusifs&lt;/em&gt;.&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots#pnote-291-1&quot; id=&quot;rev-pnote-291-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Du coup, il devient impossible d'interdire aux robots de parcourir les pages d'archives mensuelles, mais d'autoriser l'accès aux pages des billets. Il suffit de comparer ces deux URLs pour s'en rendre compte&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;http://www.example.com&lt;strong&gt;/index.php/2005/04&lt;/strong&gt;/01/1-premier-billet (adresse d'un billet)&amp;nbsp;;&lt;/li&gt;
&lt;li&gt;http://www.example.com&lt;strong&gt;/index.php/2005/04&lt;/strong&gt; (page d'archive de tous les billets du mois d'avril 2005).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si on pouvait explicitement autoriser certaines pages avec des règles &lt;code&gt;Allow&lt;/code&gt; (en indiquant que l'on souhaite une priorité plus importante pour ces règles &lt;code&gt;Allow&lt;/code&gt;), on pourrait imaginer générer automatiquement le fichier &lt;code&gt;robots.txt&lt;/code&gt; lors de la mise en ligne d'un nouveau billet. Le fichier contiendrait alors la liste de tous les billets publiés sur des lignes de type &lt;code&gt;Allow&lt;/code&gt; et la liste de toutes les pages d'archives sur des lignes de type &lt;code&gt;Disallow&lt;/code&gt;. Il ne semble donc pas y avoir de solution dans ce cas-là...&lt;/p&gt;


&lt;p&gt;De plus, il y a encore un effet de bord qui peut se produire&amp;nbsp;: le standard robots.txt ne permet que d'interdire &lt;em&gt;totalement&lt;/em&gt; l'accès d'une page aux gentils robots.&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots#pnote-291-2&quot; id=&quot;rev-pnote-291-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt; Ainsi, en interdisant les pages d'archives, les robots auraient alors certainement beaucoup de peine pour trouver l'intégralité du contenu sur le site... Bin oui, la navigation sur un blog se fait quand même massivement à travers des pages d'archive (en considérant qu'une page d'archive est toute page contenant plus d'un billet, donc y compris la page d'accueil).&lt;/p&gt;


&lt;p&gt;Conclusion&amp;nbsp;: la mise en place d'une balise meta robots est très facile et remplit son rôle à merveille... J'ai toutefois un regret&amp;nbsp;: il n'y a pas de moyen d'interdire aux robots d'indexer certains blocs de la page. Chez moi, il est par exemple inutile que les robots indexent la citation aléatoire affichée sur chaque page, puisque cette citation n'apporte aucune information utile.&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots#pnote-291-3&quot; id=&quot;rev-pnote-291-3&quot;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots#rev-pnote-291-1&quot; id=&quot;pnote-291-1&quot;&gt;1&lt;/a&gt;] Ce qui signifie qu'une règle &lt;code&gt;Disallow: /bob&lt;/code&gt; interdira l'accès au dossier &lt;code&gt;/bob/&lt;/code&gt;, mais également à l'image nommée &lt;code&gt;bobetlachoseverte.jpg&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots#rev-pnote-291-2&quot; id=&quot;pnote-291-2&quot;&gt;2&lt;/a&gt;] Je précise « gentils, » car les robots n'ont absolument aucune obligation de respecter ce standard. Les robots à spam, qui sont continuellement à la recherche de nouvelles adresses email, n'essaient même pas de récupérer ce fichier par exemple.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/11/288-dotclear-l-indexation-et-les-robots#rev-pnote-291-3&quot; id=&quot;pnote-291-3&quot;&gt;3&lt;/a&gt;] Oui, je sais, vouloir trouver de l'information &lt;em&gt;utile&lt;/em&gt; ici est un paradoxe...&lt;/p&gt;&lt;/div&gt;
</description>
        
              </item>
          <item>
        <title>PHP et les dates au format RFC822</title>
        <link>https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822</link>
        <guid isPermaLink="false">urn:md5:27f48fdf05fd77651319df46cc0083bd</guid>
        <pubDate>Sun, 08 Jan 2006 00:58:00 +0000</pubDate>
        <dc:creator>ȷulmud</dc:creator>
                  <category>Free the code!</category>
                          <category>Free the code!</category>
                  <category>Pense-bête</category>
                <description>&lt;p&gt;Attention, si vous travaillez avec des dates respectant la norme RFC822 (utilisée par exemple pour indiquer la date de publication d'un billet dans les flux RSS 2.0) et la fonction &lt;code&gt;strtotime&lt;/code&gt; de PHP, vous allez au devant de jolies déconvenues&amp;nbsp;: deux conversions successives de la même date ne donneront pas forcément le même résultat. Avouez que cela peut être franchement embêtant...&lt;/p&gt;          &lt;p&gt;Suite à une mise à jour de mon &lt;a href=&quot;http://gregarius.net/&quot; hreflang=&quot;en&quot;&gt;aggrégateur en ligne&lt;/a&gt;, il y a quelques-uns des fils auxquels je suis abonné qui sont marqués comme mis à jour lors de chaque rafraîchissement de l'aggrégateur. Et cela même si le flux rss n'a pas été le moins du monde modifié depuis la fois précédente&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Avec l'aide d'un développeur de gregarius, nous avons finalement réussi à trouver l'origine du problème&amp;nbsp;: les fils en question sont des flux au format RSS 2.0. Or, &lt;a href=&quot;http://blogs.law.harvard.edu/tech/rss&quot; hreflang=&quot;en&quot;&gt;la spécification RSS 2.0&lt;/a&gt; dit que la date d'un billet (champ &lt;code&gt;PubDate&lt;/code&gt;) doit être formatée conformément à &lt;a href=&quot;http://www.faqs.org/rfcs/rfc822.html&quot; hreflang=&quot;en&quot;&gt;la norme RFC822&lt;/a&gt;. D'après cette norme, il n'est pas obligatoire d'indiquer le nombre de secondes dans la date. Résultat, certains fils écrivent la date comme suit&amp;nbsp;: «&amp;nbsp;Wed, 04 Jan 2006 19:37 +0200 »&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822#pnote-290-1&quot; id=&quot;rev-pnote-290-1&quot;&gt;1&lt;/a&gt;]&lt;/sup&gt;. Mais bon, tout le monde le sait, dans le monde informatique il est plus facile de travailler avec des dates numériques qu'écrites en anglais. L'idée de base est donc d'utiliser la fonction &lt;code&gt;strtotime&lt;/code&gt; de PHP pour convertir cette date en un timestamp...&lt;/p&gt;


&lt;p&gt;Et c'est là que le bât blesse. Si les secondes ne sont pas spécifiées dans la date, PHP4 semble prendre les secondes courantes pour compléter. Résultat&amp;nbsp;: deux appels subséquents à cette fonction avec exactement les mêmes paramètres donnent deux résultats différents. Le petit script ci-dessous met en évidence ce problème&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php
 $date = 'Wed, 04 Jan 2006 19:37 +0200' ;
 $time = strtotime($date);
 echo $time . ' - ' . date('Y-m-d H:i:s', $time) . &amp;quot;\n&amp;quot;;
 sleep(5);
 $time = strtotime($date);
 echo $time . ' - ' . date('Y-m-d H:i:s', $time) . &amp;quot;\n&amp;quot;;
 ?&amp;gt;&lt;/pre&gt;


&lt;p&gt;Bien entendu, on s'attend à ce que les deux affichages donnent exactement le même résultat... Eh bien non&amp;nbsp;! Il y a un écart de cinq secondes entre la première et la deuxième ligne comme on le voit ci-dessous&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;1136396271 - 2006-01-04 18:37:51
1136396276 - 2006-01-04 18:37:56&lt;/pre&gt;


&lt;p&gt;Cela fait toujours plaisir de faire de l'informatique non déterministe, n'est-ce pas&amp;nbsp;? Ce comportement a été confirmé par mes tests sur PHP 4.3.10 et PHP 4.4.0, et semble avoir été corrigé dans les versions 5 de PHP.&lt;/p&gt;


&lt;p&gt;Heureusement, j'ai trouvé un «&amp;nbsp;workaround&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822#pnote-290-2&quot; id=&quot;rev-pnote-290-2&quot;&gt;2&lt;/a&gt;]&lt;/sup&gt;&amp;nbsp;» relativement simple que l'on peut appliquer. &lt;a href=&quot;http://php.benscom.com/manual/fr/function.strtotime.php&quot; hreflang=&quot;fr&quot;&gt;La page de manuel de strtotime&lt;/a&gt; nous apprend qu'il y a un deuxième paramètre optionnel qui est utilisé comme point de départ pour calculer des dates relatives (par exemple pour connaître la date dans neuf mois). En fixant ce deuxième paramètre à une valeur connue (et toujours identique), on obtient alors à nouveau un résultat déterministe lors des appels à cette fonction. Par exemple, le script de test précédent modifié comme suit (seule différence&amp;nbsp;: ajout d'un 0 comme deuxième paramètre lors des appels à &lt;code&gt;strtotime&lt;/code&gt;)&amp;nbsp;:&lt;/p&gt;
&lt;pre class=&quot;brush: php&quot;&gt;&amp;lt;?php
 $date = 'Wed, 04 Jan 2006 19:37 +0200' ;
 $time = strtotime($date, 0);
 echo $time . ' - ' . date('Y-m-d H:i:s', $time) . &amp;quot;\n&amp;quot;;
 sleep(5);
 $time = strtotime($date, 0);
 echo $time . ' - ' . date('Y-m-d H:i:s', $time) . &amp;quot;\n&amp;quot;;
 ?&amp;gt;&lt;/pre&gt;

&lt;p&gt;nous donne le résultat suivant&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;1136396220 - 2006-01-04 18:37:00
1136396220 - 2006-01-04 18:37:00&lt;/pre&gt;

&lt;p&gt;qui est celui que l'on attend depuis le début. Ouf !&lt;sup&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822#pnote-290-3&quot; id=&quot;rev-pnote-290-3&quot;&gt;3&lt;/a&gt;]&lt;/sup&gt;&lt;/p&gt;


&lt;p&gt;Bizarrement, je n'ai réussi à trouver aucune mention de ce bug lors de mes recherches pour essayer de comprendre ce qui se passait...&lt;/p&gt;
&lt;div class=&quot;footnotes&quot;&gt;&lt;h4&gt;Notes&lt;/h4&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822#rev-pnote-290-1&quot; id=&quot;pnote-290-1&quot;&gt;1&lt;/a&gt;] Ce qui est tout à fait valide d'après les différentes spécifications.&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822#rev-pnote-290-2&quot; id=&quot;pnote-290-2&quot;&gt;2&lt;/a&gt;] Quelqu'un a-t-il un bel équivalent français à me proposer pour ce terme ?&lt;/p&gt;
&lt;p&gt;[&lt;a href=&quot;https://mudry.info/blog/post/2006/01/08/287-php-et-les-dates-au-format-rfc822#rev-pnote-290-3&quot; id=&quot;pnote-290-3&quot;&gt;3&lt;/a&gt;] Dans le cas de gregarius, ce workaround a été appliqué dans &lt;a href=&quot;http://svn.gregarius.net/trac/changeset/1156&quot; hreflang=&quot;en&quot;&gt;le changeset 1156&lt;/a&gt;.&lt;/p&gt;&lt;/div&gt;
</description>
        
              </item>
      </channel>
</rss>
