<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://www.digitalspirit.org/blog/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>DigitalSpirit - Tag - tutoriel</title>
  <link>http://www.digitalspirit.org/blog/index.php/</link>
  <atom:link href="http://www.digitalspirit.org/blog/index.php/feed/tag/tutoriel/rss2" rel="self" type="application/rss+xml"/>
  <description>Blog personnel de Charles Rincheval contenant des descriptions de projets réalisés dans les domaines du logiciels libres en encore dans des développements de systèmes embarqués</description>
  <language>fr</language>
  <pubDate>Wed, 28 Jul 2010 20:02:45 +0200</pubDate>
  <copyright>© 2008 Charles Rincheval. Ce billet a été originellement publié sur le site www.DigitalSpirit.org</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Manipulez des vidéos en Php avec ffmpeg-php</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2008/10/09/Ffmpeg-et-Php</link>
    <guid isPermaLink="false">urn:md5:a571545e7309ea2695fb8e0e264c257c</guid>
    <pubDate>Fri, 10 Oct 2008 10:15:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Php</category>
        <category>ffmpeg</category><category>ffmpeg-php</category><category>gd</category><category>manipulation</category><category>php</category><category>tutoriel</category><category>vidéo</category>    
    <description>&lt;p&gt;
Le projet ffmpeg-php est, comme son l'indique, une interface Php au projet &lt;a href=&quot;http://ffmpeg.mplayerhq.hu&quot; hreflang=&quot;en&quot;&gt;ffmpeg&lt;/a&gt;, une application conçue pour manipuler les flux audios et vidéos et basé sur &lt;a href=&quot;http://fr.wikipedia.org/wiki/Libavcodec&quot; hreflang=&quot;fr&quot;&gt;libavcodec&lt;/a&gt;, ce qui lui permet de gérer un grand nombre de format de compression dont : MPEG-1, MPEG-2, MPEG-4 Part 2, H.264, WMV,
MJPEG, Theora, FLAC, MP2, MP3, RealAudio 1.0, RealAudio 2.0, Vorbis, Windows Media Audio...
&lt;br /&gt;
ffmpeg-php est notamment utilisé par &lt;a href=&quot;http://www.vimeo.com/&quot; hreflang=&quot;en&quot;&gt;Vimeo&lt;/a&gt; pour la création des vignettes lors du téléchargement des vidéos, c'est le gage d'une application stable et optimisée.
&lt;/p&gt;
&lt;h2&gt;L'installation&lt;/h2&gt;
&lt;p&gt;
L'installation est très simple puisque c'est une simple extension Php qu'il suffit de déclarer dans le php.ini...
&lt;/p&gt;
&lt;p&gt;
Sous &lt;a href=&quot;http://www.gentoo.org/&quot; hreflang=&quot;en&quot;&gt;Gentoo&lt;/a&gt;, l'installation peut se résumer à cette ligne de commande :
&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt; $ sudo emerge -v ffmpeg-php&lt;/pre&gt;
&lt;p&gt;
Ensuite, il suffit d'éditer le fichier php.ini et de déclarer la nouvelle extension afin que Php la charge au démarrage :
&lt;/p&gt;
&lt;pre class=&quot;snip&quot;&gt;extension=ffmpeg.so&lt;/pre&gt;
&lt;p&gt;
Recharger la configuration de votre serveur web, et voilà, nous sommes prêt à jouer avec ffmpeg-php...
&lt;/p&gt;    &lt;h3&gt;Et maintenant, jouons !&lt;/h3&gt;
&lt;p&gt;
Comme nous l'indique la &lt;a href=&quot;http://ffmpeg-php.sourceforge.net/doc/api/index.php&quot; hreflang=&quot;en&quot;&gt;documentation de l'API&lt;/a&gt;, il existe 2 types d'objets avec ffmpeg-php :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;movie&lt;/strong&gt; qui est retourné par ffmpeg_movie(), c'est un objet contenant des méthodes permettant d'obtenir tout un tas d'informations sur le fichier courant, c'est la première fonction que nous utiliserons&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;frame&lt;/strong&gt; renvoyé par getFrame() et getNextKeyFrame(), il s'agit là d'une image fixe extraire du flux vidéo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Commençons par obtenir des informations sur la vidéo :
&lt;/p&gt;
&lt;pre&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;$mov = new ffmpeg_movie('/path/to/video.avi');&lt;br /&gt;&lt;br /&gt;echo sprintf('&amp;lt;p&amp;gt;Duration : %.1f, bit rate : %d, frame count : %d, video codec : %s, audio codec : %s, audio channel : %s&amp;lt;/p&amp;gt;',&lt;br /&gt;                $mov-&amp;gt;getDuration(),&lt;br /&gt;                $mov-&amp;gt;getBitRate(),&lt;br /&gt;                $mov-&amp;gt;getFrameCount(),&lt;br /&gt;                $mov-&amp;gt;getVideoCodec(),&lt;br /&gt;                $mov-&amp;gt;getAudioCodec(),&lt;br /&gt;                $mov-&amp;gt;getAudioChannels());&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;
&lt;p&gt;
Qui devait afficher quelque chose comme ceci :
&lt;/p&gt;
&lt;pre class=&quot;html_out&quot;&gt;Duration : 18.7, bit rate : 2169054, frame count : 283, video codec : mjpeg, audio codec : pcm_u8, audio channel : 1&lt;/pre&gt;
&lt;p&gt;
Essayons maintenant de lire la frame 23 et de l'envoyer au navigateur :
&lt;/p&gt;
&lt;pre&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;// On charge la vidéo&lt;br /&gt;$mov = new ffmpeg_movie('/path/to/video.avi');&lt;br /&gt;&lt;br /&gt;// Récupère la frame 23&lt;br /&gt;$frame = $mov-&amp;gt;getFrame(23);&lt;br /&gt;&lt;br /&gt;// Transforme la frame récupérée au dessus en ressource GD&lt;br /&gt;$img = $frame-&amp;gt;toGDImage();&lt;br /&gt;&lt;br /&gt;// Envoie l'image au navigateur&lt;br /&gt;header(&quot;Content-type: image/jpeg&quot;);&lt;br /&gt;imagejpeg($img);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;
&lt;p&gt;
Et voilà, déconcertant de simplicité ! non ?
&lt;/p&gt;
&lt;h3&gt;La suite&lt;/h3&gt;
&lt;p&gt;
Ci-joint, en annexe, un petit bout de code qui vous affichera les informations sur la vidéo, créera 50 miniatures et affichera enfin la vidéo convertie en animation GIF.
&lt;br /&gt;
Un aperçu du résultat :
&lt;/p&gt;
&lt;a href=&quot;http://www.digitalspirit.org/blog/public/ffmpeg-php.gif&quot; title=&quot;ffmpeg-php au boulot, oct 2008&quot;&gt;
&lt;img src=&quot;http://www.digitalspirit.org/blog/public/ffmpeg-php_min.gif&quot; alt=&quot;ffmpeg-php au boulot&quot; title=&quot;ffmpeg-php au boulot, oct 2008&quot; /&gt;
&lt;/a&gt;
&lt;p&gt;
Amusez-vous bien !
&lt;/p&gt;</description>
    
          <enclosure url="http://www.digitalspirit.org/blog/public/src/ffmpeg-php.zip"
      length="4981429" type="application/zip" />
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2008/10/09/Ffmpeg-et-Php#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2008/10/09/Ffmpeg-et-Php#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/251</wfw:commentRss>
      </item>
    
  <item>
    <title>Css3 en action avec Firefox 3.1b1pre</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2008/10/03/Css3-en-action-avec-Firefox-31b1pre</link>
    <guid isPermaLink="false">urn:md5:4617a7a1eefd960ddf002c5839eb298c</guid>
    <pubDate>Tue, 07 Oct 2008 13:30:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Test</category>
        <category>css</category><category>css 3</category><category>css3</category><category>firefox</category><category>firefox 3.1</category><category>javascript</category><category>js</category><category>rotation</category><category>transform</category><category>tutoriel</category>    
    <description>    &lt;p&gt;
Voici une petite vidéo de ce qu'il sera possible de faire avec les CSS3, et, notamment, les &lt;a href=&quot;http://webkit.org/specs/CSSVisualEffects/CSSTransforms.html&quot;&gt;transformations proposés par WebKit&lt;/a&gt;
et &lt;a href=&quot;http://www.w3.org/TR/2005/WD-css3-background-20050216/#the-border-image&quot;&gt;border-image&lt;/a&gt;.
&lt;/p&gt;
&lt;div class=&quot;external-media&quot; style=&quot;margin: 1em auto; text-align: center;&quot;&gt;
&lt;object type=&quot;application/x-shockwave-flash&quot; data=&quot;http://www.vimeo.com/moogaloop.swf?clip_id=1875168&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; width=&quot;400&quot; height=&quot;302&quot;&gt;	&lt;param name=&quot;quality&quot; value=&quot;best&quot; /&gt;
&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;
&lt;param name=&quot;scale&quot; value=&quot;showAll&quot; /&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.vimeo.com/moogaloop.swf?clip_id=1875168&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;color=00ADEF&amp;amp;fullscreen=1&quot; /&gt;
&lt;p&gt;Css3 in action with Firefox 3.1b1pre&lt;/p&gt;
&lt;/object&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.vimeo.com/1875168?pg=embed&amp;amp;sec=1875168&quot;&gt;Css3 in action with Firefox 3.1b1pre&lt;/a&gt; from &lt;a href=&quot;http://www.vimeo.com/user552031?pg=embed&amp;amp;sec=1875168&quot;&gt;hugo&lt;/a&gt; on &lt;a href=&quot;http://vimeo.com?pg=embed&amp;amp;sec=1875168&quot;&gt;Vimeo&lt;/a&gt;.
&lt;/div&gt;
&lt;p&gt;
Pour le déplacement des post-it, j'ai utilisé jquery-ui, j'aurai tout à fait pû utiliser &lt;em&gt;-moz-transform: translate()&lt;/em&gt; mais le but était, évidemment, de montrer quelque chose qu'on a pas l'habitude de voir : la rotation et le redimensionnement d'objet en CSS...
&lt;/p&gt;
&lt;p&gt;
Actuellement, la spécification n'est encore qu'un brouillon (ce qui explique l'utilisation du préfixe &quot;-moz-&quot;) mais il existe un comportement, qui me semble gênant, ainsi, si on souhaite appliquer une transformation de type rotation ou redimensionnement, il faut passer par le mot-clef Css &lt;em&gt;-moz-&lt;/em&gt;transform, édudiez l'exemple suivant :
&lt;/p&gt;
&lt;pre&gt;p {&lt;br /&gt;    -moz-transform: rotate(15deg);&lt;br /&gt;    -moz-transform: scale(2);&lt;br /&gt;}&lt;/pre&gt;
&lt;p&gt;Que va-t-il se passer ?&lt;br /&gt;Les élements paragraphes vont subir une transformation de type scale, c'est tout, pas de rotation, le problème est qu'on ne peut pas, pour le moment, définir une transformation sans modifier les autres, ainsi, si une feuille de style externe veut appliquer une rotation à tous les élements p de la page, elle pourra le faire mais en &quot;écrasant&quot; aussi les autres transformations...cela est tout à fait normal à vrai dire, c'est écrit dans la spécification...&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ne serait-il pas judicieux de créer des propriétés transform-rotate, transform-scale, transform-skew...?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Testez par vous même : &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.digitalspirit.org/lab/css3/transform.php&quot;&gt;http://www.digitalspirit.org/lab/css3/transform.php&lt;/a&gt; (Rotation en cliquant sur la punaise, redimensionnement en cliquant en bas à droite du post-it et création de post-it en double cliquant sur la punaise)&lt;/li&gt;
&lt;li&gt;&lt;a hreflang=&quot;fr&quot; href=&quot;http://ljouanneau.com/blog/post/2008/09/15/821-transformations-en-css3&quot;&gt;Transformations en CSS3&lt;/a&gt; sur le blog de Laurent Jouanneau&lt;/li&gt;
&lt;li&gt;Explications sur &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.clochix.net/post/2008/09/13/Les-transformations-CSS3-seront-aussi-dans-Firefox-31&quot;&gt;le site de Clochix&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
    
          <enclosure url="http://www.digitalspirit.org/blog/public/src/css3-transform.zip"
      length="216792" type="application/zip" />
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2008/10/03/Css3-en-action-avec-Firefox-31b1pre#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2008/10/03/Css3-en-action-avec-Firefox-31b1pre#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/248</wfw:commentRss>
      </item>
    
  <item>
    <title>Vie de merde dans vos scripts Php ...simplement</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2008/10/01/Vie-de-merde</link>
    <guid isPermaLink="false">urn:md5:a9a5770ad57cd3b8067ee39d15e2bcc6</guid>
    <pubDate>Wed, 01 Oct 2008 12:48:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Php</category>
        <category>code</category><category>Php</category><category>php</category><category>script</category><category>tutoriel</category><category>Vie de merde</category><category>viedemerde</category>    
    <description>    &lt;p&gt;
Pour afficher aléatoirement les fortunes de &lt;a href=&quot;http://www.viedemerde.fr/&quot;&gt;Vie de merde&lt;/a&gt; en Php de la manière la plus simple qu'il soit, vous pouvez faire comme ci dessous...ou pas...
&lt;/p&gt;
&lt;pre&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;header('Content-type: text/html; charset=UTF-8');&lt;br /&gt;&lt;br /&gt;$xml = simplexml_load_file('http://api.viedemerde.fr/1.2/view/random?key=readonly');&lt;br /&gt;&lt;br /&gt;echo &amp;lt;&amp;lt;&amp;lt;EOD&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;&amp;lt;body&amp;gt;&lt;br /&gt;    &amp;lt;h1&amp;gt;{$xml-&amp;gt;vdms-&amp;gt;vdm-&amp;gt;categorie}&amp;lt;/h1&amp;gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;p&amp;gt;&lt;br /&gt;        &amp;lt;a href=&quot;http://www.viedemerde.fr/{$xml-&amp;gt;vdms-&amp;gt;vdm['id']}&quot;&amp;gt;#&amp;lt;/a&amp;gt;&lt;br /&gt;        {$xml-&amp;gt;vdms-&amp;gt;vdm-&amp;gt;texte}&lt;br /&gt;    &amp;lt;/p&amp;gt;&lt;br /&gt;&amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;EOD;&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;

&lt;p&gt;
Voilà, rien de bien sorcier, donc, pas d'explication, vous pouvez retourner à vos occupations, je vais en faire de même !
&lt;/p&gt;</description>
    
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2008/10/01/Vie-de-merde#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2008/10/01/Vie-de-merde#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/244</wfw:commentRss>
      </item>
    
  <item>
    <title>Connection ssh sans mot de passe</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2008/09/17/Connection-ssh-sans-mot-de-passe</link>
    <guid isPermaLink="false">urn:md5:7368cb75473a50c9fb0fb8b8a24d8bcb</guid>
    <pubDate>Wed, 17 Sep 2008 19:43:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Gnu/Linux</category>
        <category>Gnu-Linux</category><category>id_dsa</category><category>mot de passe</category><category>pense-bête</category><category>Planet-Libre</category><category>ssh</category><category>ssh-copy-id</category><category>ssh-keygen</category><category>tutoriel</category>    
    <description>    &lt;p&gt;&lt;em&gt;Billet pense-bête, ça m'évitera de chercher si j'ai un trou de mémoire :)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Il est possible de se connecter sans saisir de mot de passe sur une machine distante en SSH, chose très pratique lors de l'administration de plusieurs machines...&lt;/p&gt;
&lt;p&gt;Si ce n'est pas encore fait, il vous faut générer votre paire de clef publique / privée, pour cela, entrez la commande suivante :&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;$ ssh-keygen&lt;/pre&gt;
&lt;p&gt;Il vous demandera :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;L'endroit oû stocker les clefs, (~/.ssh/id_dsa par défaut)&lt;/li&gt;
&lt;li&gt;Une phrase faisant office de mot de passe, laissez cette dernière vide&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ensuite, il faut copier la clef publique dans le fichier ~/.ssh/authorized_keys du pc distant, vous pouvez le faire manuellement avec la commande scp, mais il existe plus simple :&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;$ ssh-copy-id user@domain.tld&lt;/pre&gt;
&lt;p&gt;Voilà, vous pouvez dorénavant vous connecter à votre machine sans mot de passe.&lt;/p&gt;
&lt;p&gt;Prenez garde à n'utilisez cette méthode qu'à partir d'une machine &quot;de confiance&quot;...&lt;/p&gt;</description>
    
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2008/09/17/Connection-ssh-sans-mot-de-passe#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2008/09/17/Connection-ssh-sans-mot-de-passe#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/238</wfw:commentRss>
      </item>
    
  <item>
    <title>Onglets dans la même instance de GVim</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2008/04/23/Gvim-et-les-onglets</link>
    <guid isPermaLink="false">urn:md5:1d8bae36fd1ee51c9bdb9e34b1b2bc6b</guid>
    <pubDate>Mon, 28 Apr 2008 13:17:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Gnu/Linux</category>
        <category>Astuce</category><category>gnome vim</category><category>Gnu-Linux</category><category>gvim</category><category>onglet</category><category>Planet-Libre</category><category>tips</category><category>tutoriel</category><category>vim</category>    
    <description>    &lt;p&gt;Voilà une petite astuce pour les utilisateurs de GVim qui vous permettra d'ouvrir tous vos documents dans la même instance grâce aux onglets.
&lt;/p&gt;
&lt;p&gt;La page &lt;a hreflang=&quot;en&quot; href=&quot;http://vimdoc.sourceforge.net/htmldoc/remote.html&quot;&gt;Vim documentation : remote&lt;/a&gt; nous apprend qu'il est possible de faire fonctionner Vim comme un serveur recevant des messages de clients et exécutant les commandes demandées par ces derniers.
&lt;br /&gt;
Une de ces commandes nous intéresse et va justement nous permettre d'ouvrir des documents dans la même instance de Vim, il s'agit de &lt;a hreflang=&quot;en&quot; href=&quot;http://vimdoc.sourceforge.net/htmldoc/remote.html#--remote-tab-silent&quot;&gt;remote-tab-silent&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Testons cette commande :&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt; $ gvim -p --remote-tab-silent toto&lt;/pre&gt;
&lt;p&gt;
Une instance de GVim s'ouvre avec toto dans un onglet (le paramètre p permet d'ouvrir un onglet par fichier).
&lt;br /&gt;
Gardons GVim ouvert et testons de nouveau :
&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt; $ gvim -p --remote-tab-silent foo&lt;/pre&gt;
&lt;p&gt;
Le fichier foo s'affiche maintenant dans un nouvel onglet de la même instance GVim, nous avons donc 2 fichiers ouvert dans GVim : toto et foo.
&lt;/p&gt;
&lt;p&gt;
J'ai fait un petit script bash qui permet de s'affranchir des problèmes rencontrés à l'ouverture avec Nautilus (qui tente d'ouvrir les documents avec le paramètre &quot;-f&quot;) et qui évite surtout de devoir saisir les paramètres à chaque fois, il suffit alors de remplacer le fichier binaire de gvim par le script :
&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt; $ mv /usr/bin/gvim /usr/bin/gvim-bin&lt;/pre&gt;
&lt;p&gt;
Ensuite, il vous suffit de déposer le script ci joint dans le dossier /usr/bin et de lui attribuer les droits d'exécution.
&lt;/p&gt;
&lt;p&gt;
Bon Gvim !
&lt;/p&gt;</description>
    
          <enclosure url="http://www.digitalspirit.org/blog/public/src/gvim"
      length="171" type="text/plain" />
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2008/04/23/Gvim-et-les-onglets#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2008/04/23/Gvim-et-les-onglets#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/104</wfw:commentRss>
      </item>
    
  <item>
    <title>Installation de Hyla 0.8.2</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2007/11/20/Installation-de-Hyla-082</link>
    <guid isPermaLink="false">urn:md5:153cbc532d20c4049a7fd65427201eea</guid>
    <pubDate>Thu, 22 Nov 2007 12:45:00 +0100</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Hyla</category>
        <category>Hyla</category><category>Installation</category><category>Tutorial</category><category>tutoriel</category><category>Wink</category>    
    <description>    &lt;p&gt;
Axlcorp à mis en ligne un petit tutorial sur l'installation de &lt;a href=&quot;http://www.hyla-project.org/&quot;&gt;Hyla&lt;/a&gt; 0.8.2  réalisé avec &lt;a hreflang=&quot;en&quot; href=&quot;http://www.debugmode.com/wink/&quot;&gt;Wink&lt;/a&gt;, vous pourrez y voir des captures d'écran du processus d'installation.
&lt;/p&gt;
&lt;p&gt;
Ça se passe par ici, chez &lt;a hreflang=&quot;fr&quot; href=&quot;http://axlcorp.free.fr/?p=17&quot;&gt;Axlcorp&lt;/a&gt; !
&lt;/p&gt;</description>
    
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2007/11/20/Installation-de-Hyla-082#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2007/11/20/Installation-de-Hyla-082#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/97</wfw:commentRss>
      </item>
    
  <item>
    <title>Écriture dans les fichiers Tomtom Ov2 et Garmin Asc</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2007/11/16/Ecriture-dans-les-fichiers-Tomtom-Ov2-et-Garmin-Asc</link>
    <guid isPermaLink="false">urn:md5:c94b3c9b9537fe75a583cf26d7b304ee</guid>
    <pubDate>Fri, 16 Nov 2007 10:25:00 +0100</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Php</category>
        <category>Asc</category><category>Développement</category><category>Garmin</category><category>Géo</category><category>Hyla</category><category>Ov2</category><category>php</category><category>Php</category><category>Poi</category><category>Tomtom</category><category>tutoriel</category>    
    <description>    &lt;p&gt;Pour faire suite au &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.digitalspirit.org/blog/index.php/post/2007/09/19/Lecture-de-fichiers-Tomtom-Ov2-et-Garmin-Asc&quot;&gt;billet précédent &lt;/a&gt;concernant la lecture de fichiers au format &lt;a hreflang=&quot;en&quot; href=&quot;http://www.tomtom.com&quot;&gt;Tomtom&lt;/a&gt; Ov2 et &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.garminfrance.com/&quot;&gt;Garmin&lt;/a&gt; Asc, voici la même librairie avec en plus le support de l'écriture.&lt;/p&gt;
&lt;p&gt;
Voici un petit exemple du fonctionnement :
&lt;/p&gt;
&lt;pre&gt;&amp;lt;?php&lt;br /&gt;/*  Ov2 and Asc reader / writer&lt;br /&gt;    hugo arobase digitalspirit dot org&lt;br /&gt;    c.rincheval, 2007&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;require 'geo.class.php';&lt;br /&gt;&lt;br /&gt;$content = array(0  =&amp;gt;  array(&lt;br /&gt;                            'lon'   =&amp;gt; -3.22,&lt;br /&gt;                            'lat'   =&amp;gt; 49.19,&lt;br /&gt;                            'label' =&amp;gt; 'poi 0'&lt;br /&gt;                        ),&lt;br /&gt;                 1  =&amp;gt;  array(&lt;br /&gt;                            'lon'   =&amp;gt; -5.45,&lt;br /&gt;                            'lat'   =&amp;gt; 52.12,&lt;br /&gt;                            'label' =&amp;gt; 'poi 1'&lt;br /&gt;                        )&lt;br /&gt;        );&lt;br /&gt;&lt;br /&gt;$file = 'test.ov2';&lt;br /&gt;&lt;br /&gt;$format = 'ov2';    // 'asc';&lt;br /&gt;&lt;br /&gt;// Writing data to file !&lt;br /&gt;geo::writeData($file, $format, $content);&lt;br /&gt;&lt;br /&gt;// Read file&lt;br /&gt;$data = geo::getData($file, $format);&lt;br /&gt;&lt;br /&gt;print_r($data);&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;
&lt;p&gt;
L'exemple ci dessus se contente d'écrire dans un fichier (test.ov2) les 2 poi du tableau et ainsi la fonctione getData lit ce fichier et l'affiche.
&lt;/p&gt;</description>
    
          <enclosure url="http://www.digitalspirit.org/blog/public/lib/geo.tar.gz"
      length="8514" type="application/x-gzip" />
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2007/11/16/Ecriture-dans-les-fichiers-Tomtom-Ov2-et-Garmin-Asc#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2007/11/16/Ecriture-dans-les-fichiers-Tomtom-Ov2-et-Garmin-Asc#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/96</wfw:commentRss>
      </item>
    
  <item>
    <title>Log Watcher</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2007/11/07/Log-Watcher</link>
    <guid isPermaLink="false">urn:md5:45870e118da057149b0fe07316254b35</guid>
    <pubDate>Wed, 14 Nov 2007 21:23:00 +0100</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Gnu/Linux</category>
        <category>Gnu-Linux</category><category>Log</category><category>Log Watcher</category><category>Planet-Libre</category><category>tutoriel</category><category>Ubuntu</category>    
    <description>&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;
Surveiller des logs dans une console est quelque chose de laborieux et toute solution permettant de simplifier cette tâche ingrate est bonne...&lt;/p&gt;
&lt;p&gt;Et c'est justement là qu'intervient Log Watcher, une application qui va vous améliorer grandement la vie lorsque vous aurez besoin de surveiller d'ininterrompu log...&lt;/p&gt;
&lt;h2&gt;Description&lt;/h2&gt;
&lt;p&gt;
Traduction libre du manuel lwatch :&lt;/p&gt;
&lt;p&gt;Log Watcher est un &quot;log colorizer&quot;, c'est à dire un programme capable de mettre en couleur des logs en fonction d'une syntaxe, en l'occurrence, en fonction de mots rencontrés.
&lt;br /&gt;
Il lit le contenu de syslog/syslog-ng depuis des tubes nommées (named fifo) ou depuis l'entrée standard (stdin) et affiche les données colorées dans la sortie standard (stdout).&lt;/p&gt;
&lt;p&gt;Lwatch est hautement configurable. Il lit sa configuration depuis /etc/lwatch/lwatch.cond ou depuis un fichier grâce à l'option -C.&lt;/p&gt;
&lt;p&gt;Son fonctionnement est simple. il lit une ligne depuis l'entrée courante (par défaut, /var/lib/lwatch/syslog.fifo), la divise en 4 parties : date, nom d'hôte, nom du service (avec le PID si disponible) et le message associé.
&lt;br /&gt;
Chaque partie possède sa propre couleur qu'il est possible de définir grâce au fichier de configuration, les couleurs par défaut sont les mêmes que pour loco.&lt;/p&gt;
&lt;p&gt;Mais lwatch n'est pas seulement un simple log colorizer, il est capable de colorer les logs de la manière qu'on le souhaite. Il est possible de choisir une nouvelle couleur pour chaque partie (date, nom d'hôte, service, message) en utilisant des expressions régulières.&lt;/p&gt;    &lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;
L'installation est aisée avec Ubuntu, en effet, elle se résume simplement à saisir ceci dans un terminal :&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;sudo apt-get install lwatch&lt;/pre&gt;&lt;p&gt;Et voilà lwatch installé sur votre machine.&lt;/p&gt;
&lt;h2&gt;Configuration&lt;/h2&gt;
&lt;p&gt;
Il est possible de configurer l'affichage à l'aide du fichier /etc/lwatch/lwatch.conf dont la syntaxe est assez simple, voici un exemple de celle ci :&lt;/p&gt;
&lt;pre&gt;[...]&lt;br /&gt;/reject\w*/&amp;nbsp;&amp;nbsp;&amp;nbsp; highlight=red&lt;br /&gt;/accept\w*/&amp;nbsp;&amp;nbsp;&amp;nbsp; highlight=green&lt;br /&gt;/success\w*/&amp;nbsp;&amp;nbsp; highlight=green&lt;br /&gt;/sent/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  highlight=green&lt;br /&gt;/lost/&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  highlight=red&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;/deferred/&amp;nbsp;&amp;nbsp;&amp;nbsp;  highlight=brown&lt;br /&gt;[...]&lt;/pre&gt;&lt;p&gt;Que veut dire ce charabia ?
&lt;br /&gt;En fait, ce sont des règles de configuration constituées par une expression régulière et une actions ou modificateurs associés.&lt;/p&gt;
Nous allons voir les différents termes que l'on rencontre dans le fichier de configuration.&lt;br /&gt;&lt;h3&gt;Options générales&lt;/h3&gt;
&lt;p&gt;
Les options suivantes vous permettent de définir le comportement par défaut de Log Watcher :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;date_color&lt;/strong&gt; : Couleur par défaut de la date&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;host_color&lt;/strong&gt; : Couleur par défaut du nom d'hôte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;serv_color&lt;/strong&gt; : Couleur par défaut du nom du serveur&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mesg_color&lt;/strong&gt; : Couleur par défaut du message&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;input_file&lt;/strong&gt; : Fichier du flux&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;output_file&lt;/strong&gt; : Fichier de sortie (par défaut, c'est la sortie standard stdout)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;show_unparsed&lt;/strong&gt; : Permet d'afficher les lignes qui ne répondent pas au bon formatage (date, nom d'hôte, service, message) &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Les couleurs&lt;/h3&gt;
&lt;p&gt;
Voici la liste des couleurs qu'il est possible d'utiliser :&lt;/p&gt;
&lt;p style=&quot;background-color: black;&quot;&gt;
&lt;span style=&quot;color: rgb(204, 0, 0);&quot;&gt;blackred&lt;/span&gt;
&lt;span style=&quot;color: green;&quot;&gt;green&lt;/span&gt;
&lt;span style=&quot;color: maroon;&quot;&gt;brown&lt;/span&gt;
&lt;span style=&quot;color: blue;&quot;&gt;blue&lt;/span&gt;
&lt;span style=&quot;color: rgb(255, 0, 255);&quot;&gt;magenta&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 221, 221);&quot;&gt;cyan&lt;/span&gt;
&lt;span style=&quot;color: rgb(204, 204, 204);&quot;&gt;lightgray&lt;/span&gt;
&lt;span style=&quot;color: rgb(85, 85, 85);&quot;&gt;darkgray&lt;/span&gt;
&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;brightred&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 255, 0);&quot;&gt;brightgreen&lt;/span&gt;
&lt;span style=&quot;color: yellow;&quot;&gt;yellow&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 0, 255);&quot;&gt;brightblue&lt;/span&gt;
&lt;span style=&quot;color: purple;&quot;&gt;purple&lt;/span&gt;
&lt;span style=&quot;color: rgb(0, 255, 255);&quot;&gt;brightcyan&lt;/span&gt;
&lt;span style=&quot;color: white;&quot;&gt;white&lt;/span&gt;
&lt;/p&gt;
&lt;h3&gt;Expressions régulières&lt;/h3&gt;
&lt;p&gt;
Afin de matcher (c'est à dire choisir, attraper, sélectionner, la traduction n'est pas facile... :) ) les bonnes lignes avant de leur appliquer une action, Log Watcher utilise des expressions régulières, voici le principe :&lt;/p&gt;
&lt;pre&gt;/expression/ action&lt;/pre&gt;Simple ! non ?&lt;p&gt;Voici un autre exemple avec plusieurs actions :&lt;/p&gt;
&lt;pre&gt;/espression/ {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; action1&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; action2&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ...&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; actionN&lt;br /&gt;}&lt;/pre&gt;
&lt;h3&gt;Actions et modificateurs&lt;/h3&gt;
&lt;p&gt;
Les actions vont vous permettre de mettre en couleur les éléments sélectionnés par l'expression régulière.&lt;/p&gt;
&lt;p&gt;Voici les actions disponibles :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;date_color&lt;/strong&gt; : Couleur par défaut de la date&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;host_color&lt;/strong&gt; : Couleur par défaut du nom d'hôte&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;serv_color&lt;/strong&gt; : Couleur par défaut du nom du serveur&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mesg_color&lt;/strong&gt; : Couleur par défaut du message&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;exit&lt;/strong&gt; : Ne pas exécuter les autres expressions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;highlight&lt;/strong&gt; : Mettre en surbrillance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ignore&lt;/strong&gt; : Ignorer et ne pas exécuter les autres expressions&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;match_host&lt;/strong&gt; : Exécuter l'expression régulière sur le nom d'hôte au lieu du message&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;match_service&lt;/strong&gt; : Exécuter l'expression régulière sur le service au lieu du message&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Voilà, on en sait assez maintenant pour lancer Log Watcher !&lt;/p&gt;
&lt;h2&gt;Utilisation&lt;/h2&gt;
&lt;p&gt;
Pour surveiller simplement le syslog de votre machine, cette commande suffit :&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;tail -f /var/log/syslog | /usr/bin/lwatch -i-&lt;/pre&gt;&lt;p&gt;Le
fichier de log /var/log/syslog apparaîtra désormais d'une manière
coloré en fonction de la présence ou non de termes sur chaque lignes.&lt;br /&gt;&lt;br /&gt;Pour éviter d'avoir à saisir cette longue commande, vous pouvez créer un alias de cette manière :&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;alias systail=&quot;tail -f /var/log/syslog | /usr/bin/lwatch -i-&quot;&lt;/pre&gt;&lt;p&gt;Ainsi, vous n'aurez plus qu'à saisir systail pour voir les logs défilés...en couleurs (n'oubliez pas de mettre cette alias dans votre script de lancement, .bashrc par exemple).&lt;/p&gt;
&lt;p&gt;Voici une vue globale de la fenêtre de log maintenant en couleur :&lt;/p&gt;
&lt;a href=&quot;http://www.digitalspirit.org/blog/public/terminal.jpg&quot;&gt;&lt;img src=&quot;http://www.digitalspirit.org/blog/public/terminal.jpg&quot; alt=&quot;Vue d'un terminal mis en couleur avec Log Watcher !&quot; title=&quot;Vue d'un terminal mis en couleur avec Log Watcher !&quot; /&gt;&lt;/a&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;
Vous voilà prêt à surveiller d'interminable log, si quelques interrogations subsistaient, posez vos questions en commentaires, consultez &lt;a hreflang=&quot;en&quot; href=&quot;http://sourceforge.net/projects/lwatch/&quot;&gt;le site officiel de développement de Log Watcher&lt;/a&gt; et n'oubliez pas le man (man lwatch et man lwatch.conf) !&lt;/p&gt;</description>
    
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2007/11/07/Log-Watcher#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2007/11/07/Log-Watcher#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/94</wfw:commentRss>
      </item>
    
  <item>
    <title>Lecture de fichiers Tomtom Ov2 et Garmin Asc</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2007/09/19/Lecture-de-fichiers-Tomtom-Ov2-et-Garmin-Asc</link>
    <guid isPermaLink="false">urn:md5:41f3a6c173eeb11471fb61f4151a6557</guid>
    <pubDate>Wed, 19 Sep 2007 08:05:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Php</category>
        <category>Asc</category><category>Développement</category><category>Garmin</category><category>Géo</category><category>Hyla</category><category>Ov2</category><category>php</category><category>Php</category><category>Poi</category><category>Tomtom</category><category>tutoriel</category>    
    <description>    &lt;p&gt;Pour les besoins de &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.hyla-project.org/&quot;&gt;Hyla&lt;/a&gt; 0.8.1 et, plus particulièrement, de son plugin Géo, j'ai créé une librairie d'accès aux fichiers Ov2 de &lt;a hreflang=&quot;en&quot; href=&quot;http://www.tomtom.com/&quot;&gt;Tomtom&lt;/a&gt; et Asc de &lt;a hreflang=&quot;fr&quot; href=&quot;http://www.garminfrance.com/&quot;&gt;Garmin&lt;/a&gt;, ces derniers contiennent des informations géographiques, et notamment, des &lt;acronym title=&quot;Point Of Interest&quot;&gt;POI&lt;/acronym&gt;.&lt;/p&gt;
&lt;p&gt;Cette librairie vous permet d'extraire les données contenues dans les fichiers sus-cités sous forme de tableaux directement exploitables dans votre application.&lt;/p&gt;
&lt;p&gt;Voici le contenu du fichier test fourni qui se contente de lire un fichier au format Ov2 et fait un &quot;dump&quot; du contenu du tableau renvoyé :&lt;/p&gt;
&lt;pre&gt;
&amp;lt;?php
/*  Ov2 and Asc reader
    hugo arobase digitalspirit dot org
    c.rincheval, 2007
 */

require 'geo.class.php';

$data = geo::getData('FON_FR.ov2', 'ov2');

print_r($data);

?&amp;gt;
&lt;/pre&gt;
&lt;p&gt;Comme vous le voyez, l'utilisation est très simple...&lt;/p&gt;
&lt;p&gt;
En annexe, une archive contenant la classe, un fichier de test et un fichier au format ov2.
&lt;/p&gt;</description>
    
          <enclosure url="http://www.digitalspirit.org/blog/public/lib/geo.tar.gz"
      length="8514" type="application/x-gzip" />
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2007/09/19/Lecture-de-fichiers-Tomtom-Ov2-et-Garmin-Asc#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2007/09/19/Lecture-de-fichiers-Tomtom-Ov2-et-Garmin-Asc#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/91</wfw:commentRss>
      </item>
    
  <item>
    <title>Librairie Php simple pour l'Api Flickr</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2007/09/18/Librairie-Php-simple-pour-Flickr</link>
    <guid isPermaLink="false">urn:md5:48f90760688b5358f4048bf921ff6058</guid>
    <pubDate>Tue, 18 Sep 2007 08:10:00 +0200</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Php</category>
        <category>Api</category><category>Développement</category><category>Flickr</category><category>Php</category><category>php</category><category>tutoriel</category>    
    <description>    &lt;p&gt;
J'ai écrit une librairie pour accéder à l'&lt;a hreflang=&quot;fr&quot; href=&quot;http://www.flickr.com/services/api/&quot;&gt;API Flickr&lt;/a&gt; (pour ceux qui sorte du fin fond de la jungle et qui n'en ont jamais entendu parler, je vous laisse y jeter un oeil) qui vous permettra d'accéder à l'ensemble des fonctionnalités distantes qu'offre le service.&lt;br /&gt;&lt;br /&gt;Certain me diront qu'ils en existent une multitude sur le net et ils auront raison, enfin, presque, car, aucune de celles que j'ai trouvée ne me convenaient, bien trop complexe pour certaines, plutôt sales pour d'autres, j'ai donc décidé d'écrire la mienne avec comme seules contraintes, faire quelque chose de simple et qui fonctionne...proprement.&lt;/p&gt;
&lt;p&gt;L'archive contient un fichier test.php, en voici le contenu :&lt;/p&gt;
&lt;pre&gt;&amp;lt;?php&lt;br /&gt;&lt;br /&gt;/*  Minimalist class for accessing Flickr web services&lt;br /&gt;    hugo arobase digitalspirit dot org&lt;br /&gt;    c.rincheval, 2007&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;require 'flickr.class.php';&lt;br /&gt;&lt;br /&gt;define('FLICKR_KEY',    'YOUR_FLICKR_KEY');&lt;br /&gt;define('FLICKR_SECRET', 'YOUR_FLICKR_SECRET');&lt;br /&gt;&lt;br /&gt;$flk = new flickr(FLICKR_KEY, FLICKR_SECRET);&lt;br /&gt;&lt;br /&gt;$args = array();&lt;br /&gt;$rsp = $flk-&amp;gt;request('flickr.photos.getRecent', $args);&lt;br /&gt;&lt;br /&gt;if ($rsp['stat'] == 'ok') {&lt;br /&gt;    $url_img = 'http://farm%s.static.flickr.com/%s/%s_%s%s.jpg';&lt;br /&gt;    foreach ($rsp['photos']['photo'] as $photo) {&lt;br /&gt;        echo '&amp;lt;img src=&quot;http://www.digitalspirit.org/blog/index.php/post/2007/09/18/'.sprintf($url_img, $photo['farm'], $photo['server'], $photo['id'], $photo['secret'], '_s').'&quot; alt=&quot;&quot; /&amp;gt;';&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;?&amp;gt;&lt;/pre&gt;
&lt;p&gt;Cet exemple va chercher sur le site de Flickr les photos les plus récentes et les affichent directement sur la page.&lt;/p&gt;
&lt;p&gt;Comme vous pouvez le voir, c'est relativement simple et vous pouvez, comme je l'ai fait, étendre ces fonctionnalités en dérivant de cette classe.&lt;/p&gt;
&lt;p&gt;Vous trouverez ci-joint l'archive contenant les sources de la classe, le fichier d'exemple et le fichier de license GNU/GPL.&lt;/p&gt;</description>
    
          <enclosure url="http://www.digitalspirit.org/blog/public/lib/flickr.tar.gz"
      length="8241" type="application/x-gzip" />
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2007/09/18/Librairie-Php-simple-pour-Flickr#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2007/09/18/Librairie-Php-simple-pour-Flickr#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/90</wfw:commentRss>
      </item>
    
  <item>
    <title>Hyla - Exportation dans blog, forum, wiki...</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2007/05/17/70-hyla-exportation</link>
    <guid isPermaLink="false">urn:md5:1583950b8e08321c227bec05949e91e2</guid>
    <pubDate>Thu, 17 May 2007 15:04:21 +0000</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Hyla</category>
        <category>Développement</category><category>Hyla</category><category>tutoriel</category>    
    <description>&lt;p&gt;
 Voici une nouveauté que vous retrouverez dans la toute prochaine version de Hyla, elle vous permet d'exporter le contenu de n'importe quel plugin Hyla oû vous le souhaitez...en l'occurence, ici, directement dans ce billet...
&lt;/p&gt;

&lt;p&gt;
 Quelques exemples valent mieux que de longs discours :
&lt;/p&gt;

&lt;h4&gt;Export de fichier Flv :&lt;/h4&gt;

&lt;iframe src=&quot;http://ifile.free.fr/hyla-test/index.php?p=obj-export-iframe,/video.flv&quot; scrolling=&quot;no&quot; width=&quot;440&quot; height=&quot;370&quot; noborder=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;    &lt;h4&gt;
Exportation de fichier &lt;acronym title=&quot;Keyhole Markup Language&quot;&gt;Kml&lt;/acronym&gt; :
&lt;/h4&gt;

&lt;iframe src=&quot;http://ifile.free.fr/hyla-test/index.php?p=obj-export-iframe,/test-point.kml&quot; scrolling=&quot;no&quot; width=&quot;600&quot; height=&quot;570&quot; noborder=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;

&lt;h4&gt;
Exportation d'archive :
&lt;/h4&gt;

&lt;iframe src=&quot;http://ifile.free.fr/hyla-test/index.php?p=obj-export-iframe,/Embedded.zip&quot; scrolling=&quot;no&quot; width=&quot;600&quot; height=&quot;370&quot; noborder=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;

&lt;h4&gt;
Exportation de fichier csv, tsv :
&lt;/h4&gt;

&lt;iframe src=&quot;http://ifile.free.fr/hyla-test/index.php?p=obj-export-iframe,/toto.tsv&quot; scrolling=&quot;no&quot; width=&quot;600&quot; height=&quot;190&quot; noborder=&quot;no&quot; frameborder=&quot;no&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;
Tous les plugins sont bien sûr exportables...
&lt;/p&gt;

&lt;p&gt;
Deux modes d'exportation sont disponibles :
&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;strong&gt;iframe&lt;/strong&gt; : À l'aide d'une iframe, le contenu du plugin &lt;a href=&quot;http://www.hyla-project.org/&quot;&gt;Hyla&lt;/a&gt; sera alors inséré.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;javascript&lt;/strong&gt; : Un bout de code javascript va écrire directement dans votre page le contenu du plugin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
Voilà, vous en savez un peu plus sur les toutes dernières nouveautés de la toute prochaine version de Hyla qui devrait sortir prochainement...
&lt;/p&gt;</description>
    
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2007/05/17/70-hyla-exportation#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2007/05/17/70-hyla-exportation#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/85</wfw:commentRss>
      </item>
    
  <item>
    <title>Authentification par Bluetooth : pam_blue</title>
    <link>http://www.digitalspirit.org/blog/index.php/post/2006/12/02/60-authentification-par-bluetooth-pambluez</link>
    <guid isPermaLink="false">urn:md5:2fe9fd995c9712dac7fa20ec80f9f678</guid>
    <pubDate>Sat, 02 Dec 2006 01:06:00 +0000</pubDate>
    <dc:creator>hugo</dc:creator>
        <category>Gnu/Linux</category>
        <category>Gnu-Linux</category><category>Planet-Libre</category><category>tutoriel</category><category>Ubuntu</category>    
    <description>&lt;p&gt;
Je continue dans ma lancée sur le bluetooth dans Ubuntu, &lt;a href=&quot;http://www.digitalspirit.org/blog/index.php/2006/11/21/58-choisissez-controlez-votre-musique-depuis-votre-telephone-portable-avec-bemused&quot;&gt;voir l'article précédent&lt;/a&gt; au sujet de la commande de votre musique par le biais de votre téléphone portable.
&lt;/p&gt;
&lt;p&gt;
Combien de fois par jour saisissez-vous au clavier votre mot de passe ?
&lt;br /&gt;
Personnellement, énormément, beaucoup trop, on dit souvent que les informaticiens sont des faignants, je vais une fois de plus le prouver en vous proposant une solution pour éviter d'avoir à taper votre mot de passe sur votre distribution Gnu/Linux favorite : Ubuntu, c'est bien sûr valable pour les autres...
&lt;/p&gt;
&lt;p&gt;
&lt;img src=&quot;http://www.digitalspirit.org/blog/public/pam_blue.png&quot; alt=&quot;pam_blue.png&quot; /&gt;
&lt;/p&gt;    &lt;h3&gt;Introduction&lt;/h3&gt;
&lt;p&gt;
Sous Gnu/Linux, l'authentification de chaque utilisateur se fait par le biais de &lt;a href=&quot;http://www.kernel.org/pub/linux/libs/pam/index.html&quot;&gt;Pam (Pluggable Authentification Module)&lt;/a&gt;, derrière ce terme qui peut paraitre barbare pour les p'tits nouveaux, se cache un puissant mécanisme d'authentification dont je ne m'étendrai pas plus car ce n'est pas le but de cet article, néanmoins, je vous invite à lire cette &lt;a href=&quot;http://www-igm.univ-mlv.fr/%7Edr/XPOSE2003/augereau/2.html&quot;&gt;excellente introduction à PAM&lt;/a&gt; écrite par Sébastien Augereau.
&lt;/p&gt;
&lt;p&gt;
&lt;a href=&quot;http://pam.0xdef.net/&quot;&gt;pam_blue&lt;/a&gt; écrit &lt;a href=&quot;http://www.jauu.net/&quot;&gt;Hagen Paul Pfeifer&lt;/a&gt; va donc vous permettre de vous authentifier par le biais du &lt;a href=&quot;http://fr.wikipedia.org/wiki/Bluetooth&quot;&gt;bluetooth&lt;/a&gt; qui est intégré dans un très grand nombre de périphériques (le groupe d'intérêt bluetooth prétend que le nombre de périphériques bluetooth à dépassé le milliard début novembre !), ainsi, au démarrage de votre gestionnaire de fenêtre préféré (gdm, kdm...que sais-je...), vous n'aurez qu'à taper votre nom d'utilisateur, la saisi du mot de passe étant remplacé par la détection d'un appareil bluetooth que vous aurez au préalable sélectionné.
&lt;br /&gt;
Si le périphérique bluetooth n'est pas présent, le mot de passe vous sera alors demandé comme d'habitude au bout d'un laps de temps configurable.
&lt;/p&gt;
&lt;p style=&quot;color: red;&quot;&gt;
&lt;ins&gt;Note :&lt;/ins&gt;
&lt;br /&gt;Cet article à pour but de vous faire découvrir un outil très pratique mais qui peut se retourner contre vous si il est mal configuré, prenez garde à ce que vous faites, notamment, dans les fichiers de configuration de pam.
&lt;/p&gt;
&lt;h3&gt;Comment ça marche ?&lt;/h3&gt;
&lt;p&gt;
Tout comme une carte réseau ethernet ou Wi-Fi, un appareil bluetooth possède une &lt;a href=&quot;http://fr.wikipedia.org/wiki/Adresse_MAC&quot;&gt;adresse MAC&lt;/a&gt;, un identifiant unique composé de 6 octets et c'est grâce à cette dernière que nous allons justement pouvoir nous authentifier, en effet, cette adresse MAC n'est, en théorie, pas configurable (voir plus bas).
&lt;/p&gt;
&lt;p&gt;
En exemple, je vous propose de découvrir les périphériques bluetooth à proximité de votre PC en saisissant la commande suivante (le paquet bluez-utils doit être installé au préalable) :
&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;$ hcitool scan&lt;br /&gt;Scanning ...&lt;br /&gt;        00:0A:59:BC:5F:09       Nokia 6680&lt;br /&gt;        00:12:29:C3:8D:FB       Portable&lt;br /&gt;$ &lt;/pre&gt;
&lt;p&gt;
&lt;em&gt;Si votre périphérique bluetooth n'apparait pas, c'est probablement parce que la &quot;visibilité bluetooth&quot; de ce dernier n'est pas active, ainsi, il reste invisible aux commande de recherche &quot;inquiry&quot; (je vous conseille d'ailleurs fortement de laisser votre téléphone portable caché même si il est tout de même possible de le détecter avec les outils adéquats...)&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Nous voyons apparaitre 2 périphériques bluetooth qui semble être tous les 2 des téléphones portables, vous noterez que le nom de l'appareil apparait à droite de l'adresse MAC.
&lt;br /&gt;
Vous pouvez obtenir plus d'informations sur chaque périphérique en saisissant la commande suivante :
&lt;/p&gt;
&lt;pre class=&quot;shell&quot;&gt;$ sudo hcitool info 00:0A:59:BC:5F:09&lt;br /&gt;Requesting information ...&lt;br /&gt;        BD Address:  00:0A:59:BC:5F:09&lt;br /&gt;        Device Name: Nokia 6680&lt;br /&gt;        LMP Version: 1.2 (0x2) LMP Subversion: 0x4db&lt;br /&gt;        Manufacturer: Cambridge Silicon Radio (10)&lt;br /&gt;        Features: 0xbf 0xfe 0x0f 0x00 0x18 0x18 0x00 0x00&lt;br /&gt;                &amp;lt;3-slot packets&amp;gt; &amp;lt;5-slot packets&amp;gt; &amp;lt;encryption&amp;gt; &amp;lt;slot offset&amp;gt;&lt;br /&gt;                &amp;lt;timing accuracy&amp;gt; &amp;lt;role switch&amp;gt; &amp;lt;sniff mode&amp;gt; &amp;lt;RSSI&amp;gt;&lt;br /&gt;                &amp;lt;channel quality&amp;gt; &amp;lt;SCO link&amp;gt; &amp;lt;HV2 packets&amp;gt; &amp;lt;HV3 packets&amp;gt;&lt;br /&gt;                &amp;lt;u-law log&amp;gt; &amp;lt;A-law log&amp;gt; &amp;lt;CVSD&amp;gt; &amp;lt;paging scheme&amp;gt; &amp;lt;power control&amp;gt;&lt;br /&gt;                &amp;lt;transparent SCO&amp;gt; &amp;lt;AFH cap. slave&amp;gt; &amp;lt;AFH class. slave&amp;gt;&lt;br /&gt;                &amp;lt;AFH cap. master&amp;gt; &amp;lt;AFH class. master&amp;gt;&lt;br /&gt;$ &lt;/pre&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;
Les sources sont disponibles à cette &lt;a href=&quot;http://pam.0xdef.net/source.html&quot;&gt;adresse&lt;/a&gt; si vous désirez les compiler vous même mais j'ai créé des paquets (i386 uniquement et basé sur la dernière version 0.1.0) pour &lt;a href=&quot;http://www.digitalspirit.org/ubuntu/libpam-blue_0.1.0-1_i386.deb&quot;&gt;Dapper&lt;/a&gt; et &lt;a href=&quot;http://www.digitalspirit.org/ubuntu/libpam-blue_0.1.0-1_i386_edgy.deb&quot;&gt;Edgy&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Installez le paquet :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Depuis un navigateur de fichiers, cliquez deux fois sur le paquet, l'installeur de paquet gdebi s'ouvrira et vous permettra de l'installer.&lt;/li&gt;
&lt;li&gt;En ligne de commande
&lt;pre class=&quot;shell&quot;&gt;sudo dpkg -i libpam-blue_0.1.0-1_i386.deb&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Voilà, c'est tout pour l'installation.
&lt;/p&gt;
&lt;h3&gt;Configuration&lt;/h3&gt;
&lt;p&gt;
Nous allons commencer par éditer le fichier de configuration de pam_blue qui se trouve être : /etc/security/pam_blue.conf, ouvrez le et vous obtiendrez ceci (j'ai volontairement coupé la fin du fichier pour garder uniquement ce qui nous intéresse) :
&lt;/p&gt;
&lt;pre&gt;&lt;br /&gt;general {&lt;br /&gt;    # the normal timeout for scanning&lt;br /&gt;    # watch out for a to tiny timeslot for scanning&lt;br /&gt;    # values between 4 and 15 seconds are valid&lt;br /&gt;    timeout = 4;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# configuration for user toto&lt;br /&gt;toto = {&lt;br /&gt;    &lt;br /&gt;    # bluetooth device name&lt;br /&gt;    name    = tux;&lt;br /&gt;    &lt;br /&gt;    # bluetooth mac address&lt;br /&gt;    bluemac = 54:34:34:34:34:34;&lt;br /&gt;&lt;br /&gt;    # a seaparate timeout&lt;br /&gt;    timeout = 10;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[...]&lt;/pre&gt;
&lt;p&gt;
Éditons ce fichier en spécifiant le nom de l'utilisateur qui doit être authentifié par pam_blue et remplaçons l'adresse MAC par celle que nous avons trouvé durant le scan, spécifions aussi le nom du périphérique bluetooth (vous pouvez mettre ce que vous désirez...)
&lt;/p&gt;
&lt;pre&gt;[...]&lt;br /&gt;&lt;br /&gt;# configuration pour l'utilisateur hugo&lt;br /&gt;hugo = {&lt;br /&gt;    &lt;br /&gt;    # bluetooth device name&lt;br /&gt;    name    = Nokia 6680;&lt;br /&gt;    &lt;br /&gt;    # bluetooth mac address&lt;br /&gt;    bluemac = 00:0A:59:BC:5F:09;&lt;br /&gt;&lt;br /&gt;    # a seaparate timeout&lt;br /&gt;    timeout = 10;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[...]&lt;/pre&gt;
&lt;p&gt;
Voilà, la configuration de pam_blue s'arrête ici, maintenant, il faut spécifier au système que nous voulons nous authentifier par bluetooth à chaque fois que ce sera possible, dans le dossier /etc/pam.d se trouve les fichiers de configuration de pam, c'est là que nous allons dire à quel momemt nous voulons remplacer l'authentification basic par pam_blue.
&lt;br /&gt;
Comme exemple, nous allons faire en sorte que l'authentification au gestionnaire de fenêtres Gnome se fasse par pam_blue, pour cela, nous allons éditer le fichier /etc/pam.d/gdm (pour kubuntu, éditez kdm, pour xubuntu, xdm...), sous Ubuntu Dapper, ce fichier ressemble à ceci :
&lt;/p&gt;
&lt;pre&gt;#%PAM-1.0&lt;br /&gt;auth    requisite       pam_nologin.so&lt;br /&gt;auth    required        pam_env.so&lt;br /&gt;@include common-auth&lt;br /&gt;@include common-account&lt;br /&gt;session required        pam_limits.so&lt;br /&gt;@include common-session&lt;br /&gt;@include common-password&lt;/pre&gt;
&lt;p&gt;
Nous allons le modifier afin qu'il ressemble à ceci :
&lt;/p&gt;
&lt;pre&gt;#%PAM-1.0&lt;br /&gt;auth    requisite       pam_nologin.so&lt;br /&gt;auth    required        pam_env.so&lt;br /&gt;&lt;br /&gt;auth    sufficient      pam_blue.so debug&lt;br /&gt;&lt;br /&gt;@include common-auth&lt;br /&gt;[...]&lt;/pre&gt;
&lt;p&gt;
Voilà, c'est terminé, nous allons pouvoir tester le bon fonctionnement de pam_blue.
&lt;/p&gt;
&lt;h3&gt;Mise en route&lt;/h3&gt;
&lt;p&gt;
Fermez votre session gnome, une fois sur la mire de login, saisissez votre nom d'utilisateur et normalement, si tout s'est bien passé et si votre périphérique se trouve bien à proximité, vous n'aurez pas à saisir votre mot de passe et vous voilà, donc, loggué sur votre système.
&lt;/p&gt;
&lt;p style=&quot;color: red;&quot;&gt;
&lt;ins&gt;Note :&lt;/ins&gt;
&lt;br /&gt;
Vous pouvez éditer les fichiers contenus dans /etc/pam.d pour des réglages plus poussés mais faites extrêmement attention à ce que vous faites, vous pourriez mettre en danger votre système (voir les commentaires), notamment, avec les connections distantes (rappelons que pam_usb à eu ce même souci).
&lt;/p&gt;
&lt;h3&gt;Liens&lt;/h3&gt;
&lt;p&gt;
Si vous voulez en savoir plus, voici une liste de liens sur les sujets que nous avons abordés :
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://ubuntuforums.org/showthread.php?t=17571&quot; hreflang=&quot;en&quot;&gt;pam_usb : authentification par le biais d'une &quot;clef usb&quot; (une simple mémoire flash...)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://linuxfr.org/%7Ewallaye/15385.html&quot; hreflang=&quot;fr&quot;&gt;Installation de pam_usb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gulliver.eu.org/%7Escollilieux/Clef_usb_pour_serrure_GNULinux.html&quot; hreflang=&quot;fr&quot;&gt;pam_usb en français&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;
Pour ma part, j'ai définitivement adopté pam_blue sur mon poste de travail chez moi, chose que je ne ferai sûrement pas n'importe où car toute la sécurité se base sur une adresse MAC qui est unique, mais, que l'on peut tout de même changer moyennant quelques recherches, chose que le Bluetooth SIG (Bluetooth Special Interest Group) voit d'ailleurs d'un très mauvais oeil...
&lt;/p&gt;</description>
    
    
    
          <comments>http://www.digitalspirit.org/blog/index.php/post/2006/12/02/60-authentification-par-bluetooth-pambluez#comment-form</comments>
      <wfw:comment>http://www.digitalspirit.org/blog/index.php/post/2006/12/02/60-authentification-par-bluetooth-pambluez#comment-form</wfw:comment>
      <wfw:commentRss>http://www.digitalspirit.org/blog/index.php/feed/atom/comments/80</wfw:commentRss>
      </item>
    
</channel>
</rss>