<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.thebuble.org/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Bubble Sweat Bubble</title>
  <link>http://blog.thebuble.org/</link>
  <description>Les périgrinations d'un mec normal dans un monde qui ne l'est franchement pas</description>
  <language>fr</language>
  <pubDate>Thu, 21 Aug 2008 09:46:10 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>La killer app du futur sur Mac OS X : un (bon) client pour les mails !</title>
    <link>http://blog.thebuble.org/post/2008/03/25/La-killer-app-du-futur-sur-Mac-OS-X-%3A-un-bon-client-pour-les-mails</link>
    <guid isPermaLink="false">urn:md5:f3baa4c8d50224a5bcc3f562adac9649</guid>
    <pubDate>Tue, 25 Mar 2008 15:47:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>mac</category><category>mail</category><category>thunderbird</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://blog.thebuble.org/public/fotolia/2238283.jpg&quot; alt=&quot;Thunderbird&quot; style=&quot;float:right; margin: 0 0 1em 1em;&quot; /&gt;Ceci est la chronique d'une défaite. La mienne en l'occurrence&amp;nbsp;: après cinq mois passés sur Mac je n'ai toujours pas réussi à trouver un logiciel de mails digne de ce nom&amp;nbsp;!&lt;/p&gt;


&lt;p&gt;Pour le moment j'utilise Apple Mail mais je ne demande qu'à le quitter...après tout, je ne demande pas grand chose&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;un support IMAP complet (pour mon gmail :))&lt;/li&gt;
&lt;li&gt;un support des identités multiples facile à configurer et efficace à l'usage&lt;/li&gt;
&lt;li&gt;une intégration complète dans le système (ical, carnet d'adresses, ...)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;J'utilisais au début Thunderbird mais le manque d'intégration avec le système m'a pousser à le quitter. Surtout pour le carnet d'adresse. Parce que maintenir deux carnets d'adresses sur son ordinateur n'est même pas envisageable à moyen terme. La preuve&amp;nbsp;: j'ai laissé tomber &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Voici donc un petit état des lieux de mon expérience sur Mac OS X.&lt;/p&gt;    &lt;h2&gt;Mozilla Thunderbird&lt;/h2&gt;

&lt;h3&gt;Les plus&lt;/h3&gt;

&lt;h4&gt;Fonctionnel&lt;/h4&gt;

&lt;p&gt;Ca a l'air de rien comme ça mais disposer d'un logiciel qui fait son boulot sans planter et qui le fait bien c'est un luxe non négligeable !&lt;br /&gt;
En ce qui me concerne je n'ai jamais eu à déplorer un seul plantage ou dysfonctionnement. Pourtant la taille de mes boîtes mails (plusieurs gigas) a fait planter nombres de logiciels sous Linux (Kmail si tu m'entends...). C'est pourquoi le fait de disposer d'un logiciel faisant à la perfection ce pour quoi il a été conçu est un vrai bonheur&amp;nbsp;! Ceux qui ont connu les affres d'un logiciel tout bugué avant de trouver un équivalent fonctionnel me comprendront...&lt;/p&gt;


&lt;h4&gt;Rapide&lt;/h4&gt;

&lt;p&gt;Comme je l'ai dit plus haut, la taille de ma boîte mail est assez conséquente...et provoque pour le coup un certain nombre de ralentissements à l'usage...surtout que je ne veux pas que mon client email stocke mes mails...Bah oui&amp;nbsp;: j'accède à mes mails en IMAP donc je n'ai aucun intérêt à stocker mes messages sur mes ordinateurs puisque tout est centralisé sur mes serveurs emails. Et pour le coup accéder à un dossier de 30 000 mails peut parfois demander du temps...mais pas sous Thunderbird puisqu'il sauvegarde les entêtes des mails uniquement&amp;nbsp;! A la clé rapidité d'accès accru et consommation d'espace disque minime...c'est ce qui s'appelle l'art du compromis &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;h4&gt;Un logiciel libre&lt;/h4&gt;

&lt;p&gt;Thunderbird est un logiciel libre; donc librement téléchargeable et librement distribuable. En plus il est gratuit. L'air de rien, tout ça joue dans mes décisions&amp;nbsp;: je préfèrerais toujours un logiciel libre à un logiciel propriétaire à qualité équivalente. De même, je préfèrerais toujours un logiciel gratuit à un logiciel payant si les deux fonctionnent correctement &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Les moins&lt;/h3&gt;

&lt;h4&gt;Pas d'intégration avec le système&lt;/h4&gt;

&lt;p&gt;On peut pour le moment utiliser le carnet d'adresse système avec les pré-versions de Thunderbird mais le logiciel est loin d'être fini et donc d'être utilisable...il va donc falloir se montrer patient se je dois me rabattre en fin de compte sur Thunderbird...&lt;br /&gt;
En attendant, celà oblige à maintenir deux versions distinctes du carnet d'adresses&amp;nbsp;: la carnet d'adresse global au système et le carnet d'adresse de Thunderbird...on a vu plus pratique....&lt;br /&gt;
De même, impossible de lier Thunderbird à iCal afin de gérer des invitations à des réunions ou à des rendez-vous. Dommage&amp;nbsp;!&lt;/p&gt;


&lt;h4&gt;Panneau principal non modifiable&lt;/h4&gt;

&lt;p&gt;Disposant d'un grand écran 16/10 j'aimerai pourvoir (logiquement) en profiter...et donc, au lieu d'avoir mes panneaux de visualisation en découpage horizontal, je voudrais avoir les deux panneaux côte à côte en découpage vertical: cette disposition permettant de profiter au mieux de mon format d'écran. &lt;br /&gt;
J'ai cherché des extensions modifiant la vue principale mais à priori rien n'existe à ce sujet....Je suis même pas sûr que cela soit possible mais si une bonne âme voulait bien se dévouer...je serais même prêt à payer pour...c'est dire&amp;nbsp;!&lt;/p&gt;


&lt;h4&gt;Il est mort (ou presque)&lt;/h4&gt;

&lt;p&gt;Laissé à l'abandon par Mozilla, qui préfère se concentrer sur Firefox, le projet a été repris par un nouveau leader (David Ascher). Celui-ci a annoncé une sortie pour le dernier trimestre 2008 de la version 3, version qui intègrera complètement le carnet d'adresse OS X dans le logiciel.&lt;br /&gt;
Mais le dernier trimestre c'est dans longtemps et en plus c'est même pas garantie....bref à voir plus tard si cela se concrétise et à quelle date...&lt;/p&gt;


&lt;h2&gt;Apple Mail&lt;/h2&gt;

&lt;h3&gt;Les plus&lt;/h3&gt;

&lt;h4&gt;Intégration parfaite avec le système&lt;/h4&gt;

&lt;p&gt;Bon c'est vrai que c'est logique de la part d'Apple de réaliser des logiciels parfaitement intégrés à son système d'exploitation mais ça mérite néanmoins d'être sous-ligné&amp;nbsp;: l'usage de Mail est très bien incorporé dans Mac OS X. Les mails sont accessibles via Spotlight, iCal et le carnet d'adresses sont intimement liés au logiciel, bref, de ce côté là c'est le paradis&amp;nbsp;!&lt;/p&gt;


&lt;h4&gt;Extensions&lt;/h4&gt;

&lt;p&gt;Ce qui donne peut-être le plus d'intérêt à Mail ce sont les extensions accessibles. Parmi l'ensemble existant, je relèverai &lt;a href=&quot;http://www.daneharnett.com/widemail/&quot; hreflang=&quot;en&quot;&gt;WideMail&lt;/a&gt;, &lt;a href=&quot;http://lokiware.info/Mail-Attachments-Iconizer&quot; hreflang=&quot;en&quot;&gt;Mail Attachments Iconizer 2.0&lt;/a&gt; et &lt;a href=&quot;http://www.indev.ca/MailActOn.html&quot; hreflang=&quot;en&quot;&gt;Mail Act-On&lt;/a&gt;.&lt;br /&gt;
Ces extensions me paraissent indispensables pour usage agréable de Mail.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.daneharnett.com/widemail/&quot; hreflang=&quot;en&quot;&gt;WideMail&lt;/a&gt; permet d'obtenir une vue découpée verticalement, au lieu du découpage horizontal classique, afin de profiter au mieux des écrans large au format 16/10 courants de nos jours.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.indev.ca/MailActOn.html&quot; hreflang=&quot;en&quot;&gt;Mail Act-On&lt;/a&gt; permet d'affecter une ou plusieurs actions à un raccourci clavier de son choix. Un exemple pourrait par exemple être d'archiver les mails sélectionnés via un simple raccourci clavier. Très très pratique et très addictif....&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lokiware.info/Mail-Attachments-Iconizer&quot; hreflang=&quot;en&quot;&gt;Mail Attachments Iconizer 2.0&lt;/a&gt;, quant à lui, est peut être la seule extension à installer si vous ne devez en choisir qu'une. Elle permet de corriger la façon complètement stupide (et non conforme au standard qui plus est) dont Mail gère les pièces jointes. En passant, si je tenais le gars qui a eu l'idée de génie de mettre en place le comportement standard de Mail....je n'ai jamais rien connu de moins pratique....enfin à la limite je suis prêt à concevoir que certaines personnes aiment bien voir les pièces jointes s'afficher directement dans le corps du message mais il me semble que la logique même impose de permettre à l'utilisateur de changer ce comportement via une option...et bien pas pour Apple...imaginez plutôt&amp;nbsp;: un de vos amis vous envoie un fichier texte de 1 000 lignes par mail. Avec un logiciel standard, il suffira alors de cliquer sur &quot;enregistrer la pièce jointe&quot; afin de pouvoir enregistrer ce fichier à l'endroit de votre choix. Mais pas avec Mail. Cela serait bien trop facile. Avec celui-ci le seul moyen possible d'enregistrer ce fichier sera de sélectionner &lt;strong&gt;l'ensemble&lt;/strong&gt; des lignes qui apparaitront dans le corps du message et de les enregistrer à la main dans un nouveau fichier. Apple Mail ou les ravages de la drogue chez les développeurs....Grâce à &lt;a href=&quot;http://lokiware.info/Mail-Attachments-Iconizer&quot; hreflang=&quot;en&quot;&gt;Mail Attachments Iconizer 2.0&lt;/a&gt;, vous pourrez enfin voir vos pièces jointes comme...des pièces jointes&amp;nbsp;! &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Les moins&lt;/h3&gt;

&lt;h4&gt;Gestion désastreuse des pièces jointes&lt;/h4&gt;

&lt;p&gt;Nous avons vu plus haut comment Apple Mail gérait les pièces jointes sans l'extension &lt;a href=&quot;http://lokiware.info/Mail-Attachments-Iconizer&quot; hreflang=&quot;en&quot;&gt;Mail Attachments Iconizer 2.0&lt;/a&gt;. Mais même avec cette extension des problèmes subsistes. Par exemple, lorsque vous décidez d'enregistrer une pièce jointe vous n'avez aucun indicateur de téléchargement&amp;nbsp;! Pire encore, parfois le téléchargement est bien terminé, plus aucune activité réseau n'est enregistrée, le fichier apparaît bien dans le dossier des téléchargements, mais celui-ci n'est pas complet&amp;nbsp;! Avoir une expérience d'utilisation aussi mauvaise est indigne de la réputation d'Apple. Je ne comprends pas comment cette situation peut persister depuis tout ce temps...car la version Leopard d'Apple Mail, qui corrige quant même quelques problèmes ennuyeux dans le support d'IMAP, n'a apporté strictement aucune amélioration à ce problème majeur.&lt;/p&gt;


&lt;h4&gt;Lenteur chronique&lt;/h4&gt;

&lt;p&gt;Autre gros point noir du logiciel&amp;nbsp;: sa lenteur. En effet, dès qu'Apple Mail se met en tête de synchroniser un dossier IMAP un peu trop volumineux, cela peut bloquer toute réception des messages pendant un bon moment....la solution&amp;nbsp;? Quitter et relancer Mail. Rien que ça. Merci encore Apple.&lt;/p&gt;


&lt;h4&gt;Gestion des identités multiples pourrie (et je suis gentil)&lt;/h4&gt;

&lt;p&gt;Un logiciel classique supportant les identités multiples vous propose en général une liste des identités existantes et des boutons pour manipuler cette liste (édition, ajout, suppression, ...). Il faut croire que cela était trop compliqué pour Apple....Leur gestion des identités multiples se limite à saisir l'ensemble des adresses emails d'expédition séparées par des virgules dans le champs &quot;adresse email d'expédition&quot;. Vous vouliez pouvoir changer votre nom en fonction de l'adresse email choisie&amp;nbsp;? Pas possible. Choisir l'email à utiliser pas défaut&amp;nbsp;? Pas possible. Sélectionner par défaut l'adresse email à laquelle le message auquel vous répondez a été envoyé&amp;nbsp;? Pas possible. Bref, ce n'est ni fait ni à faire. Apple se moque vraiment de nous. Et encore une fois, aucune amélioration à signaler entre Tiger et Leopard. Pourtant il me semble qu'une gestion correcte des identités multiples est obligatoire pour tout logiciel de mail qui se respecte....Mais le grand Steve a dû en décider autrement....merci Steve&amp;nbsp;!&lt;/p&gt;


&lt;h2&gt;Entourage&lt;/h2&gt;

&lt;p&gt;J'ai entendu tellement de mal sur ce logiciel que je n'ai même pas pris la peine de l'essayer...je ne peux donc pas en dire grand chose...Et puis je suis peut être mauvais esprit mais quand j'entends parler d'un clone d'outlook cela a tendance à m'effrayer...&lt;/p&gt;


&lt;h2&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Voilà pour mon étude comparative. Comme l'auront sans doute noté mes lecteurs les plus assidus, il ne fait aucun doute que Thunderbird gagne ce comparatif haut la main. Mais, malheureusement, son impossibilité à utiliser le carnet d'adresse système m'empêche de pouvoir l'utiliser régulièrement...bref j'en suis réduit à cette bouse d'Apple Mail....et ça c'est moche !&lt;br /&gt;
Il y a sûrement d'autres client de mails mais je ne les connais pas....donc si quelqu'un passe par ici et qu'il connait un bon logiciel pour mes mails, qu'il n'hésite pas à me laisser un commentaire&amp;nbsp;! &lt;br /&gt;
En fait, tout ce que je demande est un logiciel qui combine les plus d'Apple Mail et de Thunderbird...&lt;br /&gt;
Merci d'avance au gentil quidam &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/03/25/La-killer-app-du-futur-sur-Mac-OS-X-%3A-un-bon-client-pour-les-mails#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/03/25/La-killer-app-du-futur-sur-Mac-OS-X-%3A-un-bon-client-pour-les-mails#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/29</wfw:commentRss>
      </item>
    
  <item>
    <title>Google Translate API</title>
    <link>http://blog.thebuble.org/post/2008/03/20/Google-Translate-API</link>
    <guid isPermaLink="false">urn:md5:c2eb73119bf8d27f642eb24a50b00734</guid>
    <pubDate>Thu, 20 Mar 2008 23:40:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>api</category><category>google</category><category>localisation</category>    
    <description>    &lt;p&gt;Google vient de lancer une &lt;a href=&quot;http://code.google.com/apis/ajaxlanguage/&quot; hreflang=&quot;en&quot;&gt;nouvelle API&lt;/a&gt; dédiée à la traduction de textes. Les langues supportées sont les mêmes que celles affichées dans Google Translate.&lt;/p&gt;


&lt;p&gt;On a tous fait l'expérience des traductions parfois (souvent) bancales de &lt;a href=&quot;http://translate.google.com/translate_t&quot; hreflang=&quot;en&quot;&gt;Google Translate&lt;/a&gt; mais là où cette &lt;a href=&quot;http://code.google.com/apis/ajaxlanguage/&quot; hreflang=&quot;en&quot;&gt;API&lt;/a&gt; devient vraiment intéressante c'est qu'elle permet aussi la détection de langue.&lt;/p&gt;


&lt;p&gt;Plus d'infos sur la page dédiée de l'&lt;a href=&quot;http://code.google.com/apis/ajaxlanguage/&quot; hreflang=&quot;en&quot;&gt;API&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/03/20/Google-Translate-API#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/03/20/Google-Translate-API#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/28</wfw:commentRss>
      </item>
    
  <item>
    <title>J'aime pas Olivier Martinez</title>
    <link>http://blog.thebuble.org/post/2008/03/20/Jaime-pas-Olivier-Martinez</link>
    <guid isPermaLink="false">urn:md5:b144df5b4b9da9bec5730a7f86e1fd33</guid>
    <pubDate>Thu, 20 Mar 2008 18:08:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>divers</category>
            
    <description>    Sérieusement son jeu d'acteur est au moins aussi mauvais que le reste....
&lt;br /&gt;Et une petite compil de tous les sites qui sont d'accord avec moi :&lt;br /&gt;&lt;br /&gt;

&lt;div&gt;&lt;object width=&quot;420&quot; height=&quot;257&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://www.dailymotion.com/swf/x4rxv5&amp;v3=1&amp;related=1&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot;&gt;&lt;/param&gt;&lt;param name=&quot;allowScriptAccess&quot; value=&quot;always&quot;&gt;&lt;/param&gt;&lt;embed src=&quot;http://www.dailymotion.com/swf/x4rxv5&amp;v3=1&amp;related=1&quot; type=&quot;application/x-shockwave-flash&quot; width=&quot;420&quot; height=&quot;257&quot; allowFullScreen=&quot;true&quot; allowScriptAccess=&quot;always&quot;&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;b&gt;&lt;a href=&quot;http://www.dailymotion.com/video/x4rxv5_olivier-martinez-on-ne-taime-pas_news&quot;&gt;Olivier Martinez, on ne t&amp;#039;aime pas !&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;envoy&amp;eacute; par &lt;a href=&quot;http://www.dailymotion.com/vinz57&quot;&gt;vinz57&lt;/a&gt;&lt;/i&gt;&lt;/div&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/03/20/Jaime-pas-Olivier-Martinez#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/03/20/Jaime-pas-Olivier-Martinez#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/27</wfw:commentRss>
      </item>
    
  <item>
    <title>Premier bilan 5 mois après mon switch vers l'univers Mac</title>
    <link>http://blog.thebuble.org/post/2008/03/20/Premier-bilan-5-mois-apres-mon-switch-vers-lunivers-Mac</link>
    <guid isPermaLink="false">urn:md5:e19b49b705a53706e1b6b60218e4f739</guid>
    <pubDate>Thu, 20 Mar 2008 12:00:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>mac</category>    
    <description>&lt;p&gt;Cela fait maintenant 5 mois que j'utilise exclusivement un mac pour travailler, surfer, glander...enfin bref pour faire tout ce que je faisais avec mon ordinateur. Le temps est donc venu pour un petit bilan.&lt;/p&gt;


&lt;h2&gt;Historique&lt;/h2&gt;


&lt;p&gt;Je viens du monde PC mais sous GNU/Linux. Je n'ai plus utilisé de Windows sur mes PC depuis 8 ans maintenant. Les raisons qui m'ont fait choisir un mac lorsque j'ai renouvelé mon matos&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le design&lt;/li&gt;
&lt;li&gt;architecture Intel (j'aime pas le powerpc ça a toujours été plus lent)&lt;/li&gt;
&lt;li&gt;système basé sur un Unix (BSD)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ce qui me faisait peur&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;le changement (et oui !)&lt;/li&gt;
&lt;li&gt;le clavier un peu bizarre de prime abord du mac&lt;/li&gt;
&lt;li&gt;les souris avec un seul bouton&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Comme je me déplace parfois et que j'ai besoin de pouvoir travailler quand même j'ai choisi un MacBook Pro 17''&amp;nbsp;: j'aime bien les grands écrans &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;    &lt;h2&gt;Le début&lt;/h2&gt;


&lt;p&gt;Au début je dois dire que j'ai vraiment galéré....il fallait reprendre des habitudes entièrement nouvelles, je trouvais le dossier Applications bordélique au possible, je ne trouvais pas comment taper certains caractères qui n'étaient pas affichés sur mon clavier et puis une souris à un seul bouton m'a vraiment paru complètement débile...&lt;br /&gt;
Après quelques recherches j'ai trouvé comment émuler mon click-droit si cher à mon coeur et à taper les caractères à la con (genre &quot;|&quot;).
Le menu Applications étant vraiment trop bordélique, j'entrepris d'y créer des sous-dossiers et de déplacer les applis dans les dossiers correspondants...tout semblait bien fonctionner jusqu'au jour ou je me suis aperçu que ça cassait le système de mise à jour des applications Mac&amp;nbsp;!
Ô rage ô désespoir&amp;nbsp;! Mais comment font les gens normaux ??&lt;br /&gt;
Bref, ça marchait bien, c'était joli mais pas optimisé à mon usage pour deux sous...&lt;/p&gt;


&lt;h2&gt;La révélation&lt;/h2&gt;


&lt;p&gt;Ma vie s'éclaira d'un jour nouveau (sisi) lorsque je découvris &lt;a href=&quot;http://www.blacktree.com/&quot; hreflang=&quot;en&quot;&gt;quicksilver&lt;/a&gt;. Cette petite application a depuis changé ma vie. Elle me permet de tout faire et le tout uniquement au clavier&amp;nbsp;! Que du bonheur moi qui n'ai jamais trop aimé les souris (et encore moins celles à un seul bouton !)&lt;br /&gt;
J'ai enfin pu facilement me retrouver dans mes applications, ma collection de musique, mes fichiers, mes contacts, ....&lt;/p&gt;


&lt;h2&gt;Ce qui me manque&lt;/h2&gt;


&lt;p&gt;A vrai dire rien. Sauf &lt;a href=&quot;http://amarok.kde.org/fr&quot; hreflang=&quot;fr&quot;&gt;Amarok&lt;/a&gt;. iTunes ne rivalise pas de près ou de loin avec ce magnifique lecteur. Mais ce regret devrait bientôt prendre fin....En effet la nouvelle version en cours de développement devrait pouvoir tourner nativement sur mon Mac OS X.&lt;/p&gt;


&lt;h2&gt;Le futur&lt;/h2&gt;


&lt;p&gt;TimeMachine &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;
Je vais bientôt investir dans une Time Capsule histoire d'avoir un NAS pour mes backups qui soit en plus joli.&lt;br /&gt;
Il faut bien joindre l'utile à l'agréable non&amp;nbsp;?&lt;/p&gt;


&lt;h2&gt;Un switcher heureux&lt;/h2&gt;


&lt;p&gt;Je suis désormais complètement acquis à la cause du mac....je pense que je n'achèterai plus que ça désormais...et ça méritait bien d'être dit&amp;nbsp;!
Les applications que je conseille (et qui sont indispensables) sur mac&amp;nbsp;:&lt;/p&gt;


&lt;h3&gt;Système&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.blacktree.com/&quot; hreflang=&quot;en&quot;&gt;Quicksilver&lt;/a&gt;&amp;nbsp;: Le tout au clavier&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.islayer.com/&quot; hreflang=&quot;en&quot;&gt;iStats&lt;/a&gt;&amp;nbsp;: Des widgets sur la vie du système&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.roxio.com/enu/products/toast/titanium/overview.html&quot; hreflang=&quot;en&quot;&gt;Toast Itanium&lt;/a&gt;&amp;nbsp;: La gravure facile&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.macports.org/&quot; hreflang=&quot;en&quot;&gt;Mac Ports&lt;/a&gt;&amp;nbsp;: Installation de logiciels libres en ligne de commande&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.titanium.free.fr/pgs/english.html&quot; hreflang=&quot;en&quot;&gt;Onyx&lt;/a&gt;&amp;nbsp;: Configurer et optimiser son Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://secrets.textdriven.com/preferences/list&quot; hreflang=&quot;en&quot;&gt;Secrets&lt;/a&gt;&amp;nbsp;: Configurer les préférences cachées de son Mac&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.charlessoft.com/&quot; hreflang=&quot;en&quot;&gt;Pacifist&lt;/a&gt;&amp;nbsp;: Extraire certains fichiers d'un fichier PKG&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Développement&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://iterm.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;iTerm&lt;/a&gt;&amp;nbsp;: Un très bon terminal&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://homepage.mac.com/zenitani/emacs-e.html&quot; hreflang=&quot;en&quot;&gt;Carbon Emacs&lt;/a&gt;&amp;nbsp;: THE editor&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Internet&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://vienna-rss.sourceforge.net/&quot; hreflang=&quot;en&quot;&gt;Vienna&lt;/a&gt;&amp;nbsp;: Lecteur RSS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://1password.com/&quot; hreflang=&quot;en&quot;&gt;1Password&lt;/a&gt;&amp;nbsp;: Gestionnaire d'identité en ligne&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.adiumx.com/&quot; hreflang=&quot;en&quot;&gt;Adium&lt;/a&gt;&amp;nbsp;: Client de messagerie instantannée multi-protocoles&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://filezilla.sf.net&quot; hreflang=&quot;en&quot;&gt;FilleZilla&lt;/a&gt;&amp;nbsp;: Client FTP&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://iconfactory.com/software/twitterrific&quot; hreflang=&quot;en&quot;&gt;Twitterriffic&lt;/a&gt;&amp;nbsp;: Client pour twitter&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://xmeeting.sourceforge.net/pages/index.php&quot; hreflang=&quot;en&quot;&gt;Xmeeting&lt;/a&gt;&amp;nbsp;: Client IRC&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.transmissionbt.com/&quot; hreflang=&quot;en&quot;&gt;Transmission&lt;/a&gt;&amp;nbsp;: Un très bon client BitTorrent&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mozilla-europe.org/fr/products/firefox/&quot; hreflang=&quot;fr&quot;&gt;Firefox&lt;/a&gt;&amp;nbsp;: Bien mieux que Safari je trouve&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Multimédia&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.versiontracker.com/dyn/moreinfo/macosx/29046&quot; hreflang=&quot;en&quot;&gt;Xee&lt;/a&gt;&amp;nbsp;: Un clone d'ACDSee&lt;/li&gt;
&lt;/ul&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/03/20/Premier-bilan-5-mois-apres-mon-switch-vers-lunivers-Mac#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/03/20/Premier-bilan-5-mois-apres-mon-switch-vers-lunivers-Mac#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/2</wfw:commentRss>
      </item>
    
  <item>
    <title>Configurer le support GPG pour Thunderbird sous Mac OS X</title>
    <link>http://blog.thebuble.org/post/2007/12/15/Configurer-le-support-GPG-pour-Thunderbird-sous-Mac-OS-X</link>
    <guid isPermaLink="false">urn:md5:0fc11010d2c7cb89df1f8b624665f6ef</guid>
    <pubDate>Sat, 15 Dec 2007 02:34:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>gnupg</category><category>mac</category><category>thunderbird</category>    
    <description>    Un petit tutoriel pour expliquer comment activer le support de GnuPG dans Thunderbird sous Mac OS X parce que je me suis bien pris la tête pour trouver...
&lt;ol&gt;
&lt;li&gt;Installer gpg et gpg-agent (sudo port install gnupg2 &amp;amp;&amp;amp; sudo port install gpg-agent)&lt;/li&gt;
&lt;li&gt;Installer l'extension &lt;a href=&quot;https://addons.mozilla.org/fr/thunderbird/addon/71&quot; title=&quot;Enigmail&quot;&gt;Enigmail&lt;/a&gt; pour Thunderbird&lt;/li&gt;
&lt;li&gt;Créer un dossier .MacOSX dans votre dossier utilisateur (par exemple /Users/toto/.MacOSX)&lt;/li&gt;
&lt;li&gt;Enregistrer dans ce dossier le fichier &lt;a href=&quot;http://slaa.free.fr/wordpress/wp-content/2007/12/environment1.plist&quot; title=&quot;environment.plist&quot;&gt;environment.plist&lt;/a&gt; joint à ce post en prenant soint de remplacer &quot;/Users/toto&quot; par &quot;/Users/votre_login&quot;&lt;/li&gt;
&lt;li&gt;Enregistrer l'application Gpg-Agent jointe dans votre dossier/Applications&lt;/li&gt;
&lt;li&gt;Modifier votre fichier /Users/toto/.profile pour y rajouter la ligne : eval $(cat ~/.gnupg/.gpg-agent)&lt;/li&gt;
&lt;li&gt;Dans &quot;Préférences système &amp;gt; Comptes &amp;gt; Ouverture&quot;, ajouter le lancement de l'application Gpg-Agent&lt;/li&gt;
&lt;li&gt;Redémarrer votre session&lt;/li&gt;
&lt;li&gt;C'est gagné !&lt;/li&gt;
&lt;/ol&gt;</description>
    
          <enclosure url="http://blog.thebuble.org/public/Gpg-Agent.app"
      length="13780" type="text/plain" />
    
    
          <comments>http://blog.thebuble.org/post/2007/12/15/Configurer-le-support-GPG-pour-Thunderbird-sous-Mac-OS-X#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/12/15/Configurer-le-support-GPG-pour-Thunderbird-sous-Mac-OS-X#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/3</wfw:commentRss>
      </item>
    
  <item>
    <title>Dissimuler les liens mailto des pages html</title>
    <link>http://blog.thebuble.org/post/2007/11/11/Dissimuler-les-liens-mailto-des-pages-html</link>
    <guid isPermaLink="false">urn:md5:dafc0f8fd3a78fd450487786ed270bc8</guid>
    <pubDate>Sun, 11 Nov 2007 20:54:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>email</category>    
    <description>    Vu sur &lt;a href=&quot;http://www.alistapart.com/comments/gracefulemailobfuscation/&quot;&gt;http://www.alistapart.com/comments/gracefulemailobfuscation/&lt;/a&gt; :
&lt;br /&gt;&lt;br /&gt;Une technique intéressante pour supprimer les liens mailto sur une page html et donc empêcher la détection des adresses emails par les robots des spameurs....
La technique n'est toute fois pas parfaite (elle ne permet pas de gérer le caractère '+' des adresses emails) mais l'idée est là...</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/11/11/Dissimuler-les-liens-mailto-des-pages-html#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/11/11/Dissimuler-les-liens-mailto-des-pages-html#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/14</wfw:commentRss>
      </item>
    
  <item>
    <title>Classe php5 pour l'API Fotolia utilisant le Zend Framework</title>
    <link>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework</link>
    <guid isPermaLink="false">urn:md5:7ecc4f3b5c331077c4881273533926cf</guid>
    <pubDate>Fri, 09 Nov 2007 04:50:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>fotolia</category><category>php</category><category>xml-rpc</category><category>zend framework</category>    
    <description>&lt;p&gt;Dans la lignée de mon post précédent, voici le code d'une classe implémentant de façon simple l'API XML-RPC de &lt;a href=&quot;http://www.fotolia.com/&quot;&gt;Fotolia&lt;/a&gt; avec le &lt;a href=&quot;http://framework.zend.com/&quot;&gt;Zend Framework&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;Je précise à tout hasard que ce code est livré tel quel et que
je ne suis pas responsable de tout problème pouvant survenir de son
utilisation.
&lt;br /&gt;La licence du code est la &lt;a href=&quot;http://fr.wikipedia.org/wiki/Licence_BSD&quot;&gt;licence BSD&lt;/a&gt;.
&lt;br /&gt;Pour ceux que ça intéresse, cette classe fait l'objet d'une proposition pour intégrer le framework. &lt;br /&gt;Vous pouvez suivre son évolution ici : &lt;a href=&quot;http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Fotolia&quot;&gt;http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Fotolia&lt;/a&gt;
&lt;/p&gt;    &lt;br /&gt;&lt;pre&gt;&amp;lt;?php&lt;br /&gt;require_once 'Zend/Service/Exception.php';&lt;br /&gt;require_once 'Zend/Http/Client.php';&lt;br /&gt;require_once 'Zend/XmlRpc/Client.php';&lt;br /&gt;&lt;br /&gt;class Zend_Service_Fotolia_Exception extends Zend_Service_Exception&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;class Zend_Service_Fotolia&lt;br /&gt;{&lt;br /&gt;    /**&lt;br /&gt;     * Fotolia xml-rpc uri&lt;br /&gt;     */&lt;br /&gt;    const FOTOLIA_URI = 'http://www.fotolia.com/Xmlrpc/rpc';&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * API key&lt;br /&gt;     *&lt;br /&gt;     * @var $_key string&lt;br /&gt;     */&lt;br /&gt;    private $_key;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * XML-RPC client&lt;br /&gt;     *&lt;br /&gt;     * @var $_client Zend_XmlRpc_Client&lt;br /&gt;     */&lt;br /&gt;    private $_client;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Proxy instances array&lt;br /&gt;     *&lt;br /&gt;     * @var $_proxies array&lt;br /&gt;     */&lt;br /&gt;    private $_proxies;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Current session id&lt;br /&gt;     *&lt;br /&gt;     * @var $_session_id string&lt;br /&gt;     */&lt;br /&gt;    private $_session_id;&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Constructor&lt;br /&gt;     *&lt;br /&gt;     * @param  string $apiKey&lt;br /&gt;     */&lt;br /&gt;    public function __construct($apiKey)&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;_key = $apiKey;&lt;br /&gt;        $this-&amp;gt;_session_id = NULL;&lt;br /&gt;        $http = new Zend_Http_Client();&lt;br /&gt;        $http-&amp;gt;setCookieJar();&lt;br /&gt;        $this-&amp;gt;_client = new Zend_XmlRpc_Client(self::FOTOLIA_URI, $http);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns current api key&lt;br /&gt;     *&lt;br /&gt;     * return string&lt;br /&gt;     */&lt;br /&gt;    public function getApiKey()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_key;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method makes possible to search media in fotolia image bank.&lt;br /&gt;     * Full search capabilities are available through the API&lt;br /&gt;     *&lt;br /&gt;     * @param  array  $searchParams&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getSearchResults($searchParams)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getSearchResults',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $searchParams));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent category in fotolia representative category system.&lt;br /&gt;     * This method could be used to display a part of the category system or the all tree.&lt;br /&gt;     * Fotolia categories system counts three levels.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $category_type_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCategories1($language_id = 2, $id = 0, $category_type_id = 1)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCategories1',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $language_id,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $category_type_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent category in fotolia conceptual category system.&lt;br /&gt;     * This method could be used to display a part of the category system or the all tree.&lt;br /&gt;     * Fotolia categories system counts three levels.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCategories2($language_id = 2, $id = 0)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCategories2',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns most searched tag and most used tag on fotolia website.&lt;br /&gt;     * This method may help you to create a tags cloud.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  string $type&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getTags($language_id = 2, $type = 'Used')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_call('getTags',&lt;br /&gt;                            array($this-&amp;gt;_key, $language_id, $type));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns public galleries for a defined language&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getGalleries($language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getGalleries',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns childs of a parent colors in the Fotolia color scheme.&lt;br /&gt;     * If no parent is provided first level colors are returned.&lt;br /&gt;     * This method can be used to display color and subcolors for color search queries.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getColors($id = 0)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getColors', array($this-&amp;gt;_key, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns Fotolia list of countries.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getCountries($language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getCountries',&lt;br /&gt;                             array($this-&amp;gt;_key, $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns fotolia data&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getData()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getData', array($this-&amp;gt;_key));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method is a test method which returns success if connexion is valid&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function test()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('test', array($this-&amp;gt;_key));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method return all information about a media&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaData($id, $thumbnail_size = 110, $language_id = 2)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $thumbnail_size,&lt;br /&gt;                                   $language_id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method return private galleries for logged user&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  int    $language_id&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaGalleries($id, $language_id = 2, $thumbnail_size = 110)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $language_id,&lt;br /&gt;                                   $thumbnail_size));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows to purchase a media and returns url to the purchased file&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @param  string $license_name&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMedia($id, $license_name)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMedia',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $id,&lt;br /&gt;                                   $license_name));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns comp images. Comp images can ONLY be used to evaluate the image&lt;br /&gt;     * as to suitability for a project, obtain client or internal company approvals,&lt;br /&gt;     * or experiment with layout alternatives.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getMediaComp($id)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getMediaComp',&lt;br /&gt;                             array($this-&amp;gt;_key, $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Authenticate an user&lt;br /&gt;     *&lt;br /&gt;     * @param  string $login User login&lt;br /&gt;     * @param  string $pass User password&lt;br /&gt;     */&lt;br /&gt;    public function loginUser($login, $pass)&lt;br /&gt;    {&lt;br /&gt;        $res = $this-&amp;gt;__call('loginUser',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $login,&lt;br /&gt;                                   $pass));&lt;br /&gt;        $this-&amp;gt;_session_id = $res['session_id'];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Log out an user&lt;br /&gt;     */&lt;br /&gt;    public function logoutUser()&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;__call('logoutUser',&lt;br /&gt;                      array($this-&amp;gt;key,&lt;br /&gt;                            $this-&amp;gt;_getSessionId()));&lt;br /&gt;        $this-&amp;gt;_session_id = NULL;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns data for logged user.&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserData()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserData',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to get sales/views/income statistics from your account.&lt;br /&gt;     *&lt;br /&gt;     * @param  string $type&lt;br /&gt;     * @param  string $time_range&lt;br /&gt;     * @param  string $easy_date_period&lt;br /&gt;     * @param  string $start_date&lt;br /&gt;     * @param  string $end_date&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserAdvancedStats($type,&lt;br /&gt;                                         $time_range,&lt;br /&gt;                                         $easy_date_period=NULL,&lt;br /&gt;                                         $start_date=NULL,&lt;br /&gt;                                         $end_date=NULL)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserAdvancedStats',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $type,&lt;br /&gt;                                   $time_range,&lt;br /&gt;                                   $easy_date_period,&lt;br /&gt;                                   $start_date,&lt;br /&gt;                                   $end_date));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This methods returns statistics for logged user&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserStats()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserStats',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Delete a user's gallery&lt;br /&gt;     *&lt;br /&gt;     * @param  string $id&lt;br /&gt;     */&lt;br /&gt;    public function deleteUserGallery($id)&lt;br /&gt;    {&lt;br /&gt;        $this-&amp;gt;__call('deleteUserGallery',&lt;br /&gt;                      array($this-&amp;gt;_key,&lt;br /&gt;                            $this-&amp;gt;_getSessionId(),&lt;br /&gt;                            $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to create a new gallery in your account.&lt;br /&gt;     *&lt;br /&gt;     * @param  string $name&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function createUserGallery($name)&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('createUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $name));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to add a content to your default lightbox or any of your existing galleries&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $content_id&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function addToUserGallery($content_id, $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('addToUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $content_id,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows you to remove a content from your default lightbox or any of your existing galleries&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $content_id&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function removeFromUserGallery($content_id, $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('removeFromUserGallery',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $content_id,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method allows to search media in logged user galleries or lightbox.&lt;br /&gt;     *&lt;br /&gt;     * @param  int    $page&lt;br /&gt;     * @param  int    $per_page&lt;br /&gt;     * @param  int    $thumbnail_size&lt;br /&gt;     * @param  string $id&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserGalleryMedias($page = 0,&lt;br /&gt;                                         $per_page = 32,&lt;br /&gt;                                         $thumbnail_size = 110,&lt;br /&gt;                                         $id = '')&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserGalleryMedias',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId(),&lt;br /&gt;                                   $page,&lt;br /&gt;                                   $per_page,&lt;br /&gt;                                   $thumbnail_size,&lt;br /&gt;                                   $id));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * This method returns private galleries for logged user.&lt;br /&gt;     *&lt;br /&gt;     * @return array&lt;br /&gt;     */&lt;br /&gt;    public function getUserGalleries()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;__call('getUserGalleries',&lt;br /&gt;                             array($this-&amp;gt;_key,&lt;br /&gt;                                   $this-&amp;gt;_getSessionId()));&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Magic method used to call fotolia xml-rpc functions&lt;br /&gt;     *&lt;br /&gt;     * @param  string $method&lt;br /&gt;     * @param  array  $args&lt;br /&gt;     * @return array&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    public function __call($method, $args)&lt;br /&gt;    {&lt;br /&gt;        $obj = $this-&amp;gt;_getProxy($this-&amp;gt;_getNamespace($method));&lt;br /&gt;        try {&lt;br /&gt;            return $obj-&amp;gt;__call($method, $args);&lt;br /&gt;        } catch (Zend_XmlRpc_Client_Exception $e) {&lt;br /&gt;            throw new Zend_Service_Fotolia_Exception($e-&amp;gt;getMessage(),&lt;br /&gt;                                                     $e-&amp;gt;getCode());&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns xml-rpc client&lt;br /&gt;     *&lt;br /&gt;     * @return Zend_XmlRpc_Client&lt;br /&gt;     */&lt;br /&gt;    public function getClient()&lt;br /&gt;    {&lt;br /&gt;        return $this-&amp;gt;_client;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns namespace associated to given method name&lt;br /&gt;     *&lt;br /&gt;     * @param  string $method&lt;br /&gt;     * @return string&lt;br /&gt;     */&lt;br /&gt;    protected function _getNamespace($method)&lt;br /&gt;    {&lt;br /&gt;        switch ($method) {&lt;br /&gt;        case 'getSearchResults':&lt;br /&gt;        case 'getCategories1':&lt;br /&gt;        case 'getCategories2':&lt;br /&gt;        case 'getTags':&lt;br /&gt;        case 'getGalleries':&lt;br /&gt;        case 'getColors':&lt;br /&gt;        case 'getCountries':&lt;br /&gt;            return 'search';&lt;br /&gt;        case 'getMediaData':&lt;br /&gt;        case 'getMediaGalleries':&lt;br /&gt;        case 'getMedia':&lt;br /&gt;        case 'getMediaComp':&lt;br /&gt;            return 'media';&lt;br /&gt;        case 'loginUSer':&lt;br /&gt;        case 'logoutUser':&lt;br /&gt;        case 'getUserData':&lt;br /&gt;        case 'getUserGalleries':&lt;br /&gt;        case 'getUserGalleryMedias':&lt;br /&gt;        case 'deleteUserGallery':&lt;br /&gt;        case 'createUserGallery':&lt;br /&gt;        case 'addToUserGallery':&lt;br /&gt;        case 'removeFromUserGallery':&lt;br /&gt;        case 'getUSerAdvancedStats':&lt;br /&gt;            return 'user';&lt;br /&gt;        case 'getData':&lt;br /&gt;        case 'test':&lt;br /&gt;            return 'main';&lt;br /&gt;        default:&lt;br /&gt;            return 'xmlrpc';&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns a xml-rpc proxy instance from a namespace&lt;br /&gt;     *&lt;br /&gt;     * @param  string $namespace&lt;br /&gt;     * @return Zend_xmlRpc_Client_ServerProxy&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    protected function _getProxy($namespace)&lt;br /&gt;    {&lt;br /&gt;        if (!isset($this-&amp;gt;_proxies[$namespace])) {&lt;br /&gt;            $valid = array('xmlrpc', 'search', 'media', 'user', 'main');&lt;br /&gt;            if (!in_array($namespace, $valid)) {&lt;br /&gt;                throw new Zend_Service_Fotolia_Exception('invalid namespace');&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            $this-&amp;gt;_proxies[$namespace] = $this-&amp;gt;_client-&amp;gt;getProxy($namespace);&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $this-&amp;gt;_proxies[$namespace];&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    /**&lt;br /&gt;     * Returns current session id&lt;br /&gt;     *&lt;br /&gt;     * @return string&lt;br /&gt;     * @throws Zend_Service_Fotolia_Exception&lt;br /&gt;     */&lt;br /&gt;    protected function _getSessionId()&lt;br /&gt;    {&lt;br /&gt;        if ($this-&amp;gt;_session_id === NULL) {&lt;br /&gt;            throw new Zend_Service_Fotolia_Exception('session id not set, please use loginUser method before');&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        return $this-&amp;gt;_session_id;&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/11/09/Classe-php5-pour-lAPI-Fotolia-utilisant-le-Zend-Framework#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/13</wfw:commentRss>
      </item>
    
  <item>
    <title>Utiliser l'API XML-RPC Fotolia en php5</title>
    <link>http://blog.thebuble.org/post/2007/11/08/Utiliser-lAPI-XML-RPC-Fotolia-en-php5</link>
    <guid isPermaLink="false">urn:md5:5c4fbb0fd39c607fd702e703974a0705</guid>
    <pubDate>Thu, 08 Nov 2007 11:17:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>fotolia</category><category>xml-rpc</category><category>zend framework</category>    
    <description>&lt;p&gt;Afin d'utiliser l'api de &lt;a href=&quot;http://fr.fotolia.com/&quot;&gt;Fotolia&lt;/a&gt; il est nécessaire d'obtenir une clé API.
&lt;br /&gt;Si vous n'en avez pas déjà une, il suffit d'aller dans votre compte, section &quot;outils&quot; puis de cliquer sur l'onglet &quot;api&quot;.
&lt;br /&gt;Une fois que votre clé API aura été validée par l'équipe Fotolia vous pourrez commencer à utiliser leur service xml-rpc. &lt;br /&gt;Lire &lt;a href=&quot;http://fr.fotolia.com/Services/API/Documentation&quot;&gt;la documentation&lt;/a&gt; sera bien sûr bienvenue !
&lt;/p&gt;    Voici un exemple de recherche sur Fotolia via le composant &lt;a href=&quot;http://framework.zend.com/manual/fr/zend.xmlrpc.client.html&quot;&gt;Zend_XmlRpc_Client&lt;/a&gt; du &lt;a href=&quot;http://framework.zend.com&quot;&gt;Zend Framework&lt;/a&gt;.
&lt;pre&gt;require_once 'Zend/Loader.php';&lt;br /&gt;&lt;br /&gt;Zend_Loader::registerAutoload();&lt;br /&gt;$client = new Zend_XmlRpc_Client('http://www.fotolia.com/Xmlrpc/rpc');&lt;br /&gt;&lt;br /&gt;// on récupère l'objet correspondant à l'espace de noms 'system'&lt;br /&gt;$system = $client-&amp;gt;getProxy('system');&lt;br /&gt;&lt;br /&gt;// on affiche la liste des méthodes supportées par le serveur&lt;br /&gt;echo &quot;Méthodes disponibles :\n&quot;;&lt;br /&gt;print_r($system-&amp;gt;listMethods());&lt;br /&gt;&lt;br /&gt;// on affiche l'aide xml-rpc de la méthode search.getSearchResults&lt;br /&gt;echo &quot;Aide du serveur :\n&quot;;&lt;br /&gt;echo $system-&amp;gt;methodHelp('search.getSearchResults');&lt;br /&gt;&lt;br /&gt;// clé API fotolia&lt;br /&gt;$api_key = 'ma clé api fotolia';&lt;br /&gt;&lt;br /&gt;// on récupère l'objet correspondant à l'espace de noms 'search'&lt;br /&gt;$search = $client-&amp;gt;getProxy('search');&lt;br /&gt;&lt;br /&gt;// on recherche toutes les photos de bulldog anglais sur le site US&lt;br /&gt;$results = $search-&amp;gt;getSearchResults($api_key,&lt;br /&gt;                                     array('words' =&amp;gt; 'bulldog anglais'));&lt;br /&gt;&lt;br /&gt;// on recherche toutes les photos de bulldog anglais sur le site français&lt;br /&gt;$results = $search-&amp;gt;getSearchResults($api_key,&lt;br /&gt;                                     array('words' =&amp;gt; 'bulldog anglais',&lt;br /&gt;                                           'language_id' =&amp;gt; 1));&lt;br /&gt;&lt;br /&gt;// on recherche les 10 première photos de bulldog anglais sur le site français&lt;br /&gt;$results = $search-&amp;gt;getSearchResults($api_key,&lt;br /&gt;                                     array('words' =&amp;gt; 'bulldog anglais',&lt;br /&gt;                                           'language_id' =&amp;gt; 1,&lt;br /&gt;                                           'limit' =&amp;gt; 10));&lt;br /&gt;&lt;br /&gt;// on affiche les résultats de la recherche&lt;br /&gt;foreach ($results as $result) {&lt;br /&gt;    echo 'Photo #' . $result['id'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Titre : ' . $result['title'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Auteur : ' . $result['creator_name'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Miniature de la photo : ' . $result['thumbnail_url'] . &quot;\\n&quot;;&lt;br /&gt;    echo 'Tag html à utiliser : ' . $result['thumbnail_html_tag'] . &quot;\\n&quot;;&lt;br /&gt;    echo &quot;\\n&quot;;&lt;br /&gt;}&lt;/pre&gt;
Exemple de requête nécessitant une identification préalable :
&lt;pre&gt;require_once 'Zend/Loader.php';&lt;br /&gt;&lt;br /&gt;Zend_Loader::registerAutoload();&lt;br /&gt;&lt;br /&gt;// on utilise un client http avec le support des cookies activé&lt;br /&gt;$http_client = new Zend_Http_Client();&lt;br /&gt;$http_client-&amp;gt;setCookieJar();&lt;br /&gt;$client = new Zend_XmlRpc_Client('http://www.fotolia.com/Xmlrpc/rpc',&lt;br /&gt;                                 $http_client);&lt;br /&gt;&lt;br /&gt;// clé API fotolia&lt;br /&gt;$api_key = 'ma clé api fotolia';&lt;br /&gt;&lt;br /&gt;// on récupère l'objet correspondant à l'espace de noms 'user'&lt;br /&gt;$user = $client-&amp;gt;getProxy('user');&lt;br /&gt;&lt;br /&gt;// on s'identifie&lt;br /&gt;$res = $user-&amp;gt;loginUser($api_key, 'identifiant', 'mot de passe');&lt;br /&gt;$sess_id = $res['session_id'];&lt;br /&gt;&lt;br /&gt;// on récupère les statistiques du compte&lt;br /&gt;$stats = $user-&amp;gt;getUserStats($api_key, $sess_id);&lt;br /&gt;&lt;br /&gt;echo 'Nombre de médias envoyés : ' . $stats['nb_media_uploaded'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Nombre de médias validés : ' . $stats['nb_media_accepted'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Nombre de médias achetés : ' . $stats['nb_media_purchased'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Nombre de médias vendus : ' . $stats['nb_media_sold'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Classement du compte : ' . $stats['ranking_absolute'] . &quot;\\n&quot;;&lt;br /&gt;echo 'Classement du compte sur les 7 derniers jours : ' . $stats['ranking_relative'] . &quot;\\n&quot;;&lt;/pre&gt;
Comme vous le voyez, il est très simple d'accéder à toute la puissance de Fotolia grâce au Zend Framework !</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/11/08/Utiliser-lAPI-XML-RPC-Fotolia-en-php5#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/11/08/Utiliser-lAPI-XML-RPC-Fotolia-en-php5#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/12</wfw:commentRss>
      </item>
    
  <item>
    <title>sprintf en Javascript</title>
    <link>http://blog.thebuble.org/post/2007/06/07/sprintf-en-Javascript</link>
    <guid isPermaLink="false">urn:md5:cea23956d96e85b8a0f97d943085e8a4</guid>
    <pubDate>Thu, 07 Jun 2007 10:54:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>développement</category>
        <category>javascript</category>    
    <description>    Javascript ne propose pas en standard de fonction sprintf pourtant si pratique....
Voilà le code de cette fonction trouvée sur &lt;a href=&quot;http://jan.moesen.nu/&quot;&gt;http://jan.moesen.nu/&lt;/a&gt; :
&lt;pre style=&quot;overflow: auto;&quot;&gt;// This code is in the public domain. Feel free to link back to http://jan.moesen.nu/&lt;br /&gt;function sprintf() {&lt;br /&gt;    if (!arguments || arguments.length &amp;lt; 1 || !RegExp) {&lt;br /&gt;        return;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    var str = arguments[0];&lt;br /&gt;    var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;&lt;br /&gt;    var a = b = [], numSubstitutions = 0, numMatches = 0;&lt;br /&gt;    while (a = re.exec(str)) {&lt;br /&gt;        var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];&lt;br /&gt;        var pPrecision = a[5], pType = a[6], rightPart = a[7];&lt;br /&gt;&lt;br /&gt;        numMatches++;&lt;br /&gt;&lt;br /&gt;        if (pType == '%') {&lt;br /&gt;            subst = '%';&lt;br /&gt;        } else {&lt;br /&gt;            numSubstitutions++;&lt;br /&gt;            if (numSubstitutions &amp;gt;= arguments.length) {&lt;br /&gt;                alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            var param = arguments[numSubstitutions];&lt;br /&gt;            var pad = '';&lt;br /&gt;            if (pPad &amp;amp;&amp;amp; pPad.substr(0,1) == &quot;'&quot;) {&lt;br /&gt;                pad = leftpart.substr(1,1);&lt;br /&gt;            } else if (pPad) {&lt;br /&gt;                pad = pPad;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            var justifyRight = true;&lt;br /&gt;            if (pJustify &amp;amp;&amp;amp; pJustify === &quot;-&quot;) {&lt;br /&gt;                justifyRight = false;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            var minLength = -1;&lt;br /&gt;            if (pMinLength) {&lt;br /&gt;                minLength = parseInt(pMinLength);&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            var precision = -1;&lt;br /&gt;            if (pPrecision &amp;amp;&amp;amp; pType == 'f') {&lt;br /&gt;                precision = parseInt(pPrecision.substring(1));&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            var subst = param;&lt;br /&gt;            if (pType == 'b') {&lt;br /&gt;                subst = parseInt(param).toString(2);&lt;br /&gt;            } else if (pType == 'c') {&lt;br /&gt;                subst = String.fromCharCode(parseInt(param));&lt;br /&gt;            } else if (pType == 'd') {&lt;br /&gt;                subst = parseInt(param) ? parseInt(param) : 0;&lt;br /&gt;            } else if (pType == 'u') {&lt;br /&gt;                subst = Math.abs(param);&lt;br /&gt;            } else if (pType == 'f') {&lt;br /&gt;                subst = (precision &amp;gt; -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);&lt;br /&gt;            } else if (pType == 'o') {&lt;br /&gt;                subst = parseInt(param).toString(8);&lt;br /&gt;            } else if (pType == 's') {&lt;br /&gt;                subst = param;&lt;br /&gt;            } else if (pType == 'x') {&lt;br /&gt;                subst = ('' + parseInt(param).toString(16)).toLowerCase();&lt;br /&gt;            } else if (pType == 'X') {&lt;br /&gt;                subst = ('' + parseInt(param).toString(16)).toUpperCase();&lt;br /&gt;            }&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        str = leftpart + subst + rightPart;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    return str;&lt;br /&gt;}&lt;/pre&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/06/07/sprintf-en-Javascript#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/06/07/sprintf-en-Javascript#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/11</wfw:commentRss>
      </item>
    
  <item>
    <title>Mon iPod ne joue pas la musique transférée via Amarok !</title>
    <link>http://blog.thebuble.org/post/2007/01/11/Mon-iPod-ne-joue-pas-la-musique-transferee-via-Amarok</link>
    <guid isPermaLink="false">urn:md5:6a6f9d6d2199e5cf7cabcbf6537c7c73</guid>
    <pubDate>Thu, 11 Jan 2007 01:01:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>amarok</category><category>kde</category>    
    <description>    Grosse surprise ce matin après avoir transféré l'album de &lt;a href=&quot;http://fr.wikipedia.org/wiki/Dean_Gray&quot;&gt;Dean Gray&lt;/a&gt; sur mon iPod avec Amarok : les fichiers étaient bien présents mais le iPod refusait obstinément de les lire !
&lt;br /&gt;&lt;br /&gt;Je vais donc travailler la mort dans l'âme en me disant que je m'en occuperais ce soir et par chance j'ai trouvé la solution !
&lt;br /&gt;Le problème vient d'un conflit entre les différentes versions disponibles de la bibliothèque libgpod.
Si comme moi vous utilisez le dépôt debian-multimedia.org afin d'avoir mplayer sous debian vous êtes concernés par ce billet....
&lt;br /&gt;Pour faire simple le dépôt officiel de la debian propose la version 0.3.2 de la bibliothèque tandis que debian-multimedia.org offre la version 0.4. Le problème est que cette version provoque des dysfonctionnements avec amarok....&lt;br /&gt;il faut donc revenir à l'ancienne version du paquet et le marquer comme &quot;gelé&quot; ou &quot;hold&quot; afin d'empêcher le système de le mettre à jour....
&lt;br /&gt;&lt;br /&gt;voilà la manip :
&lt;br /&gt;&lt;code&gt;apt-get install libgpod0=0.3.2-1.1 libgpod-common=0.3.2-1.1 &amp;amp;&amp;amp; \
echo -e &quot;libgpod-common hold\nlibgpod0 hold&quot; | dpkg --set-selections
&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Il suffit ensuite de réparer la base de données de l'iPod puis de relancer Amarok pour que tout rentre dans l'ordre....
&lt;br /&gt;Pour ceux qui ne savent pas comment réparer l'iPod il y a deux solutions :
&lt;br /&gt;- supprimer le contenu de l'iPod afin de repartir d'une base vierge
&lt;br /&gt;- lancer gtkpod afin qu'il le fasse tout seul
&lt;br /&gt;&lt;br /&gt;En espérant que cela aide certains &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2007/01/11/Mon-iPod-ne-joue-pas-la-musique-transferee-via-Amarok#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2007/01/11/Mon-iPod-ne-joue-pas-la-musique-transferee-via-Amarok#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/16</wfw:commentRss>
      </item>
    
  <item>
    <title>Enregistrer une vidéo de son écran avec Istanbul</title>
    <link>http://blog.thebuble.org/post/2006/11/23/Enregistrer-une-video-de-son-ecran-avec-Istanbul</link>
    <guid isPermaLink="false">urn:md5:804d61c6e4a78a1c2026518029cff8f1</guid>
    <pubDate>Thu, 23 Nov 2006 23:35:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>debian</category><category>video</category>    
    <description>    &lt;a href=&quot;http://packages.debian.org/unstable/gnome/istanbul&quot;&gt;Istanbul&lt;/a&gt; est un petit programme qui permet d'enregistrer facilement une vidéo de tout ou partie de l'affichage écran généré par X11.
&lt;br /&gt;&lt;br /&gt;Très facile à utiliser, tout se fait via le clique droit sur l'icône de l'application dans le systray. &lt;br /&gt;L'enregistrement se fait via un simple clique gauche.
&lt;br /&gt;Enfin, atout non négligeable, il permet aussi de redimensionner à la volée la taille de la vidéo de sortie au format 1/2 ou 1/4 ce qui permet de s'assurer une vidéo fluide en sortie quelque soit la puissance de la machine hôte.
&lt;br /&gt;&lt;br /&gt;Bref que du bon !</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/11/23/Enregistrer-une-video-de-son-ecran-avec-Istanbul#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/11/23/Enregistrer-une-video-de-son-ecran-avec-Istanbul#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/15</wfw:commentRss>
      </item>
    
  <item>
    <title>Extension Firefox : FaviconizeTab</title>
    <link>http://blog.thebuble.org/post/2008/03/20/Extension-Firefox-%3A-FaviconizeTab</link>
    <guid isPermaLink="false">urn:md5:0e5b8d56e994a188ae0f6cf89e74c2fe</guid>
    <pubDate>Thu, 23 Nov 2006 00:51:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>firefox</category>    
    <description>    Avis à tous les déçus du nouveau système de gestion des onglets dans Firefox 2.0 ! &lt;br /&gt;Une extension est là qui va vous sauver la vie ! J'ai nommé &lt;a href=&quot;https://addons.mozilla.org/firefox/3780/&quot;&gt;FaviconizeTab&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;p style=&quot;width: 200px; float: right;&quot;&gt;&lt;img src=&quot;https://addons.mozilla.org/en-US/firefox/images/addon_preview/3780/1&quot; alt=&quot;FaviconizeTab&quot; title=&quot;FaviconizeTab&quot; align=&quot;right&quot; /&gt;&lt;/p&gt;
C'est petite extension va vous permettre de réduire la taille des onglets en n'affichant que la favicon du site. Il suffit de configurer l'extension afin de lui dire comment passer du mode complet au mode court est c'est fini. &lt;br /&gt;&lt;br /&gt;Personnellement le double clique me va très bien...
&lt;br /&gt;Dans le genre de chose sympa il est même possible de lui donner une série d'urls en gérer en mode réduit par défaut ou des groupes d'urls avec * &lt;img src=&quot;/themes/default/smilies/smile.png&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;
&lt;br /&gt;&lt;br /&gt;Bref j'adore et je pense que je vais plus pouvoir m'en passer désormais...</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/03/20/Extension-Firefox-%3A-FaviconizeTab#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/03/20/Extension-Firefox-%3A-FaviconizeTab#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/10</wfw:commentRss>
      </item>
    
  <item>
    <title>Astuce Firefox pour KDE</title>
    <link>http://blog.thebuble.org/post/2006/10/30/Astuce-Firefox-pour-KDE</link>
    <guid isPermaLink="false">urn:md5:2d2ac481d76f1dd9df2752b5e78196fb</guid>
    <pubDate>Mon, 30 Oct 2006 16:57:00 +0100</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>firefox</category>    
    <description>    Pour ceux utilisant KDE et Firefox le gestionnaire de fichiers GTK peut parraître rebutant....pour revenir à un gestionnaire de fichier on peu plus pratique, il suffit (sous firefox 2.0) d'éditer la variable de configuration &lt;strong&gt;ui.allow_platform_file_picker&lt;/strong&gt; et de la mettre à &lt;strong&gt;false&lt;/strong&gt;. &lt;br /&gt;Le tout étant effectué via &lt;a href=&quot;http://blog.thebuble.org/post/2006/10/30/about:config&quot;&gt;about:config&lt;/a&gt; bien sûr &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/10/30/Astuce-Firefox-pour-KDE#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/10/30/Astuce-Firefox-pour-KDE#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/9</wfw:commentRss>
      </item>
    
  <item>
    <title>Installer Xgl sous Debian Sid</title>
    <link>http://blog.thebuble.org/post/2008/03/20/Installer-Xgl-sous-Debian-Sid</link>
    <guid isPermaLink="false">urn:md5:6a21e83c1368732d2c19a66954ba7721</guid>
    <pubDate>Sat, 21 Oct 2006 04:02:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>debian</category><category>xgl</category>    
    <description>    Vu sur : &lt;a href=&quot;http://sonique54.free.fr/xgl/xgl_fr.htm&quot;&gt;http://sonique54.free.fr/xgl/xgl_fr.htm&lt;/a&gt; via &lt;a href=&quot;http://sonique6784.blogspot.com/&quot;&gt;http://sonique6784.blogspot.com/&lt;/a&gt;.
&lt;br /&gt;&lt;br /&gt;Il suffit donc de télécharger le script &lt;a href=&quot;http://sonique54.free.fr/xgl/setupxglfr.sh&quot;&gt;setupxglfr.sh&lt;/a&gt; puis de le lancer (en root bien sûr).
Les utilisateurs de gnome n'auront pas grand choses à faire de plus...
&lt;br /&gt;&lt;br /&gt;Pour les utilisateurs de kde, il faut modifier le fichier /etc/kde3/kdm/kdmrc et remplacer la ligne :
&lt;br /&gt;&lt;code&gt;ServerCmd=/usr/bin/X -br&lt;/code&gt; &lt;br /&gt;par la ligne &lt;br /&gt;&lt;code&gt;ServerCmd=/usr/X11R6/bin/Xgl :0 -ac -accel glx:fbo:0 -accel xv:fbo -fp /usr/share/fonts/X11/misc,/usr/share/fonts/X11/cyrillic,/usr/share/fonts/X11/100dpi/:unscaled,/usr/share/fonts/X11/75dpi/:unscaled,/usr/share/fonts/X11/Type1,/usr/share/fonts/X11/100dpi,/usr/share/fonts/X11/75dpi,/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;Enfin histoire d'être sûr de ne pas avoir de problèmes de mapping de clavier en passant à XGL, il faut vérifier que la ligne &lt;br /&gt;&lt;code&gt;Option      &quot;XkbOptions&quot; &quot;altwin:super_win&quot;&lt;/code&gt; existe bien dans la section InputDevice associée au clavier.
&lt;br /&gt;&lt;br /&gt;De même, il faut bien sûr mettre en place les accélérations graphiques dans la section Device de la carte graphique :
&lt;br /&gt;&lt;code&gt;Option      &quot;RenderAccel&quot; &quot;true&quot;
&lt;br /&gt;Option      &quot;backingstore&quot; &quot;true&quot;
&lt;br /&gt;Option      &quot;AllowGLXWithComposite&quot; &quot;True&quot;
&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;Enfin, toujours pour les utilisateurs de KDE, il faut lancer les gestionnaires xgl au démarrage de kde :
&lt;br /&gt;&lt;code&gt;cp /etc/compiz.start /home/$USER/.kde/Autostart/&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;Et voilà ce que ca donne :
&lt;p style=&quot;width: 320px; text-align: left;&quot;&gt; &lt;iframe src=&quot;http://www.dailymotion.com/blog/video/885870?key=bu8bb0mdrdnd28kkt12baqmg9rze6j66drkp3o61&quot; style=&quot;border: medium none ; margin: 0; width: 320px; height: 256px;&quot; marginwidth=&quot;0&quot; marginheight=&quot;0&quot; id=&quot;ibu8bb0mdrdnd28kkt12baqmg9rze6j66drkp3o61&quot; frameborder=&quot;0&quot; height=&quot;256&quot; scrolling=&quot;no&quot; width=&quot;320&quot;&gt;Dailymotion blogged video&lt;/iframe&gt;
&lt;span style=&quot;margin-top: 0;&quot;&gt;&lt;a href=&quot;http://www.dailymotion.com/video/xizji_xgl-sous-debian-sid&quot;&gt;XGL sous Debian Sid&lt;/a&gt;
&lt;/span&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2008/03/20/Installer-Xgl-sous-Debian-Sid#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2008/03/20/Installer-Xgl-sous-Debian-Sid#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/8</wfw:commentRss>
      </item>
    
  <item>
    <title>problème de démarrage sur la sid</title>
    <link>http://blog.thebuble.org/post/2006/09/14/probleme-de-demarrage-sur-la-sid</link>
    <guid isPermaLink="false">urn:md5:50b5694ac4b555688e243cbe55b756a6</guid>
    <pubDate>Thu, 14 Sep 2006 23:12:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>debian</category>    
    <description>    Depuis ce week-end le paquet sysvinit a été mis à jour et peut entrainer des problèmes de démarrages sur un certains nombres de services (udev, alsa, ...).
&lt;br /&gt;&lt;br /&gt;Afin de corriger le problème il suffit de lancer le petit script suivant :
&lt;br /&gt;&lt;code&gt;for p in `dpkg -S /etc/init.d/*|cut -d: -f1|sort -u`; do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; apt-get --reinstall install -y $p
&lt;br /&gt;done
&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;Attention néanmoins ce script réinstallera les paquets supprimés mais non purgés ! &lt;br /&gt;La solution est donc de lancer d'abord
&lt;code&gt;dpkg -S /etc/init.d/*|cut -d: -f1|sort -u&lt;/code&gt; &lt;br /&gt;puis de purger les paquets indésirables et enfin de lancer le script complet.</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/09/14/probleme-de-demarrage-sur-la-sid#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/09/14/probleme-de-demarrage-sur-la-sid#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/17</wfw:commentRss>
      </item>
    
  <item>
    <title>Nettoyer un profile firefox</title>
    <link>http://blog.thebuble.org/post/2006/09/14/Nettoyer-un-profile-firefox</link>
    <guid isPermaLink="false">urn:md5:1467f7aba72616921df2fd48eb07c462</guid>
    <pubDate>Thu, 14 Sep 2006 10:00:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>firefox</category>    
    <description>    Un &lt;a href=&quot;http://robert.accettura.com/archives/2006/05/03/cleaning-a-firefox-profile/&quot;&gt;petit lien&lt;/a&gt; vers une page très pratique détaillant les points a effectuer afin de nettoyer son profile firefox.
&lt;br /&gt;Cela permet entre autre de rendre à celui-ci la vitesse de sa jeunesse !</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/09/14/Nettoyer-un-profile-firefox#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/09/14/Nettoyer-un-profile-firefox#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/7</wfw:commentRss>
      </item>
    
  <item>
    <title>Créer des DVD vidéos sous Linux</title>
    <link>http://blog.thebuble.org/post/2006/08/27/Creer-des-DVD-videos-sous-Linux</link>
    <guid isPermaLink="false">urn:md5:dd534d6decf3010f3f0fe4a93b515dea</guid>
    <pubDate>Sun, 27 Aug 2006 18:37:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>kde</category>    
    <description>    Pour le moment il n'y a pas beaucoup d'applications simples d'emploi pour créer des dvd vidéos sous Linux.
&lt;br /&gt;Tout ce qu'il faut existe déjà mais la plupart du temps en ligne de commande....bref ce n'est pas ce que j'appelle pratique ni simple d'emploi !
&lt;br /&gt;&lt;br /&gt;Mais heureusement les choses évoluent....
Voilà pour le moment ce qui se fait de mieux dans le genre : &lt;a href=&quot;http://www.kde-apps.org/content/show.php?content=38347&quot;&gt;ManDVD&lt;/a&gt;.
&lt;br /&gt;Avec ce programme vous pouvez : réencoder à la volée vos vidéos, faire des jolis menu animés ou pas, ...
Bref j'adore ! &lt;br /&gt;En plus, ce qui ne gâte rien, l'application est très jolie &lt;img src=&quot;/themes/default/smilies/wink.png&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/08/27/Creer-des-DVD-videos-sous-Linux#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/08/27/Creer-des-DVD-videos-sous-Linux#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/18</wfw:commentRss>
      </item>
    
  <item>
    <title>Monitoring de l'activité d'un compte utilisateur</title>
    <link>http://blog.thebuble.org/post/2006/08/25/Monitoring-de-lactivite-dun-compte-utilisateur</link>
    <guid isPermaLink="false">urn:md5:3491f1064951335d1118a2a9cd810450</guid>
    <pubDate>Fri, 25 Aug 2006 01:01:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>sécurité</category>    
    <description>    Il peut s'avérer utile parfois de montrer à quelqu'un comment faire telle ou telle opération en ligne de commande.&lt;br /&gt;
L'idéal est donc qu'il nous voit faire directement en console mais ce n'est pas toujours possible pour peu que la personne ne soit pas présente physiquement.&lt;br /&gt;
C'est à ce moment que la commande script intervient.&lt;br /&gt;
Cette commande permet de lancer un programme et d'enregistrer tout ce qui passe dans les entrées et sorties standard dans le fichier de son choix.&lt;br /&gt;
Par exemple, si l'utilisateur toto veut montrer à l'utilisateur machin comment faire un listing de répertoire, il peut très bien taper les commandes suivantes :&lt;br /&gt;
&lt;code&gt;$ script listing.txt
&lt;br /&gt;$ cd /mon/dossier/exemple
&lt;br /&gt;$ ls -lh
&lt;br /&gt;$ exit
&lt;/code&gt;
&lt;br /&gt;Il suffira ensuite à toto d'envoyer le fichier listing.txt à machin afin qu'il voit comment faire.&lt;br /&gt;
Une autre utilisation bien utile de script peut être le monitoring (qui a dit espionnage ?) de l'activité d'un utilisateur.&lt;br /&gt;
Le principe est simple : il suffit de remplacer le shell normalement définit par un shell créé par nos soins qui va interfacer script et le shell normalement lancé.&lt;br /&gt;
Un petit exemple d'un tel shell :&lt;br /&gt;
&lt;code&gt;#!/bin/sh
&lt;br /&gt;export SHELL=/bin/bash
&lt;br /&gt;DIR=/home/$USER/.logs
&lt;br /&gt;mkdir -p $DIR
&lt;br /&gt;file=&quot;$DIR/$USER_`date '+%Y-%m-%d_%H_%M'`.log&quot;
&lt;br /&gt;&lt;br /&gt;bash -l -c &quot;script -q -a $file&quot;
&lt;br /&gt;exit
&lt;/code&gt;
&lt;br /&gt;&lt;br /&gt;Une fois lancé, ce shell va créé un dossier caché &quot;.logs&quot; dans le répertoire personnel de l'utilisateur (s'il n'existe pas déjà) et y enregistrer les logs de ses sessions.&lt;br /&gt;
Comme les plus machiavéliques l'auront remarqué, rien n'empêche l'utilisateur surveillé de voir ce dossier et d'en modifier le contenu.&lt;br /&gt;
En effet, script s'exécutant avec les droits de l'utilisateur cible, il faut bien que celui-ci dispose des droits d'écritures dans le dossier et ses fichiers. Enfin, un simple listing des processus s'exécutant sur la machine lui révèlera qu'il est surveillé via cette commande.&lt;br /&gt;
Vous l'aurez compris, question furtivité et protection des données récupérées ce n'est pas l'idéal. Mais le but de cet exemple n'est pas de réaliser un espionnage furtif de l'utilisateur, simplement de l'avertir qu'il est surveillé.&lt;br /&gt;
Je ferais peut être plus tard un article traitant d'un espionnage un peu plus discret à base de &quot;keylogger&quot; et de dissimulation de processus.&lt;br /&gt;
Bien sûr, &lt;a href=&quot;http://unixhelp.ed.ac.uk/CGI/man-cgi?script&quot;&gt;man script&lt;/a&gt; pour plus d'informations sur la commande script.&lt;br /&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/08/25/Monitoring-de-lactivite-dun-compte-utilisateur#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/08/25/Monitoring-de-lactivite-dun-compte-utilisateur#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/19</wfw:commentRss>
      </item>
    
  <item>
    <title>Subversion et paquets debian</title>
    <link>http://blog.thebuble.org/post/2006/08/22/Subversion-et-paquets-debian</link>
    <guid isPermaLink="false">urn:md5:c885e063cfe086f0104e75a986ccfa2d</guid>
    <pubDate>Tue, 22 Aug 2006 19:30:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>gnu/linux</category>
        <category>debian</category><category>subversion</category>    
    <description>    Une des nombreuses forces de Debian est son système de gestion de paquets. Encore faut-il pouvoir l'utiliser...&lt;br /&gt;&lt;br /&gt;
Installer la version de développement d'un logiciel est typiquement le cas ou l'utilisation d'un paquet debian n'est pas possible.&lt;br /&gt;
Mais heureusement pour nous, il existe les paquets debian &lt;a href=&quot;http://packages.debian.org/unstable/devel/svn-buildpackage&quot;&gt;svn-buildpackage&lt;/a&gt; et &lt;a href=&quot;http://packages.debian.org/unstable/devel/svn-autoreleasedeb&quot;&gt;svn-autoreleasedeb&lt;/a&gt; !&lt;br /&gt;
&lt;br /&gt;
Le paquet svn-buildpackage permet de construire un paquet debian à partir d'un dépôt subversion tandis que svn-autoreleasedeb permet d'en automatiser la construction dès qu'un changement est détecté. Il peut même l'envoyer ensuite sur un serveur de paquets debian !&lt;br /&gt;
&lt;br /&gt;
Pour plus d'informations concernant l'utilisation de svn-buildpackage, il suffit d'aller voir la documentation faite par &lt;a href=&quot;http://workaround.org/moin/SvnBuildpackage&quot;&gt;workaround.org&lt;/a&gt;.</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/08/22/Subversion-et-paquets-debian#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/08/22/Subversion-et-paquets-debian#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/20</wfw:commentRss>
      </item>
    
  <item>
    <title>Le bureau du futur ressemblera peut-être à ca</title>
    <link>http://blog.thebuble.org/post/2006/08/19/Le-bureau-du-futur-ressemblera-peut-etre-a-ca</link>
    <guid isPermaLink="false">urn:md5:0842b765442c95d14c1e563f1440fbfd</guid>
    <pubDate>Sat, 19 Aug 2006 16:44:00 +0200</pubDate>
    <dc:creator>Olivier</dc:creator>
        <category>techno</category>
        <category>desktop</category><category>xgl</category>    
    <description>    Evidemment cela tourne sous Linux....avec le système graphique mis au point par Novel : &lt;a href=&quot;http://fr.wikipedia.org/wiki/Xgl&quot;&gt;XGL&lt;/a&gt;.
&lt;br /&gt;Mais bon il va falloir améliorer les écrans tactiles car on voit le mec galérer un poil parfois à faire prendre en compte son action....cela me rappelle d'ailleurs certains problèmes avec les écrans tactiles de la sncf...
&lt;object height=&quot;350&quot; width=&quot;425&quot;&gt;
&lt;param name=&quot;movie&quot; value=&quot;http://www.youtube.com/v/Yx9FgLr9oTk&quot; /&gt;&lt;/object&gt;</description>
    
    
    
          <comments>http://blog.thebuble.org/post/2006/08/19/Le-bureau-du-futur-ressemblera-peut-etre-a-ca#comment-form</comments>
      <wfw:comment>http://blog.thebuble.org/post/2006/08/19/Le-bureau-du-futur-ressemblera-peut-etre-a-ca#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.thebuble.org/feed/rss2/comments/21</wfw:commentRss>
      </item>
    
</channel>
</rss>