<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://methylbro.titaxium.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/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Méthylbro</title>
  <link>http://methylbro.titaxium.org/</link>
  <atom:link href="http://methylbro.titaxium.org/feed/rss2" rel="self" type="application/rss+xml"/>
  <description>divide ut imperes</description>
  <language>fr</language>
  <pubDate>Wed, 03 Mar 2010 19:31:23 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Romain Butteaud : Chroniques d'une contrefaçon</title>
    <link>http://methylbro.titaxium.org/post/2010/01/26/romain-butteaud-chroniques-d-une-contrefacon</link>
    <guid isPermaLink="false">urn:md5:d7546ff2ca761734a5fa6cdc693dbad9</guid>
    <pubDate>Tue, 26 Jan 2010 00:25:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>cv</category><category>developpeur</category><category>plagiat</category>    
    <description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-01-26-plagiat-romain-butteaud.gif&quot; alt=&quot;Romain Butteaud : Chroniques d'une contrefaçon&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Le web est plein de surprises. Parfois bonnes, parfois mauvaises.&lt;/p&gt;
&lt;p&gt;Voilà plusieurs mois que je me suis lancé dans un tentative de &lt;q&gt;personal branding&lt;/q&gt;. N’ayant aucune formation initiale en marketing je fait ce que je peut. Mais apparemment les choses ont l’air de plutôt bien se passé malgré que je soit inexpérimenté dans ce domaine.&lt;/p&gt;
&lt;p&gt;Au coeur de cette campagne marketing se trouve mon traditionnel &lt;strong&gt;CV en ligne&lt;/strong&gt;. J’ai tous les malheurs du mon à essayer de positionner correctement celui-ci dans les moteurs de recherches. Sans doutes est-ce du à la bataille farouche que se livrent les &lt;strong&gt;développeurs web&lt;/strong&gt; pour apparaître le mieux possible. &lt;/p&gt;    &lt;p&gt;Que fut alors ma surprise en voyant cette copie abjecte traîner sur le web :&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-01-26-romain-butteaud-cv.jpg&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/.2009-01-26-romain-butteaud-cv_m.jpg&quot; alt=&quot;Romain Butteaud : Chroniques d'une contrefaçon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Comprenez bien que ce qui me dérange ici c’est que le vil bandit qu’est ce &lt;strong&gt;Romain Butteaud&lt;/strong&gt; ne c’est pas contenté de voler la charte graphique de mon &lt;a href=&quot;http://www.methylbro.fr/&quot; title=&quot;Thomas Gasc : Développeur Web PHP, Intégrateur HTML&quot;&gt;CV&lt;/a&gt; (qui fut elle même inspiré au tout départ du thème d’un célèbre outil de traitement de texte, je l’avoue). &lt;/p&gt;
&lt;p&gt;Cette infâme copie dont je ne donnerais de lien (pour ce faire, voyez les images) fût un simple copié/collé de tout mon travail d’intégration. De tous les choix que j’avais fait en terme de structure du contenu, de choix des éléments du menu ... &lt;/p&gt;
&lt;p&gt;D’ailleurs, dans sa hâte de copier toujours plus vite, &lt;strong&gt;Romain Butteaud&lt;/strong&gt; en a oublier de supprimer certaines lignes qu’il a pris soin cependant de commenter dans son document html :&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-01-26-romain-butteaud-source.jpg&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/.2009-01-26-romain-butteaud-source_m.jpg&quot; alt=&quot;Romain Butteaud : Chroniques d'une contrefaçon&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Si je suis profondément déçu et touché c’est que mine de rien, depuis l’existence de ce petit CV (bientôt deux ans maintenant) j’ai cumulé dessus un bon nombre d’heures de travail. A force de retouches, de choix divers ainsi que de beaucoup d’expérimentation et de patience j’en suis arrivé à ce résultat qui commence un peu à remonter dans les requêtes que je m’été fixé au départ.&lt;/p&gt;
&lt;p&gt;Je sait que le web est ainsi fait. On copie, on pille, on reprend des idées à son avantage. Parfois même des morceaux de code entier sont volés ou glanés ça et là. Mais du pur plagiat comme c’est le cas ici ; c’est mal.&lt;/p&gt;
&lt;p&gt;Et vous, vous en pensez quoi ?&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2010/01/26/romain-butteaud-chroniques-d-une-contrefacon#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2010/01/26/romain-butteaud-chroniques-d-une-contrefacon#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/577</wfw:commentRss>
      </item>
    
  <item>
    <title>Amicalement-Web.net : 1an déjà !</title>
    <link>http://methylbro.titaxium.org/post/2010/01/25/amicalement-web.net-1an-deja</link>
    <guid isPermaLink="false">urn:md5:35f705012c98adb78ac16d11bac01f54</guid>
    <pubDate>Mon, 25 Jan 2010 22:30:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Liens</category>
        <category>concours</category><category>Ergonomie</category><category>Livre</category>    
    <description>    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://www.amicalement-web.net/et-une-bougie-et-un-cadeau-a-gagner/2010/01/25/&quot; target=&quot;_blank&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-01-25-anniversaire-amicalement-web.jpg&quot; alt=&quot;Amicalement-Web.net : 1an déjà !&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Timothé Barray et ses compagnons vous invitent à fêter ensemble le premier anniversaire du très excellent blog : &lt;a href=&quot;http://www.amicalement-web.net/&quot;&gt;Amicalement Web&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;A l’occasion de ce premier anniversaire ils vous proposent même, en partenariat avec les éditions Eyrolles de gagner un exemplaire du livre &lt;a href=&quot;http://methylbro.titaxium.org/post/2008/04/19/Ergonomie-Web&quot;&gt;Ergonomie Web&lt;/a&gt; d’Amélie Boucher dont j’avais déjà parlé &lt;a href=&quot;http://methylbro.titaxium.org/post/2008/04/19/Ergonomie-Web&quot;&gt;ici&lt;/a&gt; il y a quelques mois de cela. &lt;/p&gt;
&lt;p&gt;Bon anniversaire &lt;a href=&quot;http://www.amicalement-web.net/&quot;&gt;Amicalement Web&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2010/01/25/amicalement-web.net-1an-deja#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2010/01/25/amicalement-web.net-1an-deja#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/576</wfw:commentRss>
      </item>
    
  <item>
    <title>Cité dans un article de Capital</title>
    <link>http://methylbro.titaxium.org/post/2009/12/09/cite-dans-un-article-de-capital</link>
    <guid isPermaLink="false">urn:md5:374867307b661e866ffe9308f570438b</guid>
    <pubDate>Wed, 09 Dec 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Lectures</category>
            
    <description>    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-12-08-article-capital.jpg&quot; alt=&quot;Informatique - Les pros du web et de la sécurité tirent leur épingles du jeu&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Mis à part PHP Solutions que je lis régulièrement et GNU/Linux Magazine que je consulte à l’occasion,  je ne suis pas un grand consommateur de la presse écrite. Pourtant ce mois-ci j’ai pris la peine d’acheter un exemplaire du magazine Capital. Normal quand on est interrogé et cité par un journaliste dans un mensuel national.&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;PHP, vous connaissez ? Nous, non. Mais &lt;a href=&quot;http://www.methylbro.fr/&quot;&gt;Thomas Gasc&lt;/a&gt; (NDLR : c’est moi), lui, maîtrise sur le bout du clavier ce système de programmation très en vogue pour concevoir des sites Internet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/2009-12-08-article-capital-extrait.jpg&quot; alt=&quot;Extrait de l'article&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Voilà comment démarre cet article intitulé « &lt;strong&gt;Informatique : Les pros du web et de la sécurité tirent leur épingles du jeu&lt;/strong&gt; » dans un dossier consacré aux profils en vogue en ces temps de crise économique. &lt;/p&gt;
&lt;p&gt;Même si cet article n’est pas le reflet exact de la vérité sur mon profil, c’est toujours gratifiant de voir son nom apparaître dans les colonnes d’un grand magazine.&lt;/p&gt;
&lt;p&gt;(Non, ce n'est pas moi sur la photo !)&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/12/09/cite-dans-un-article-de-capital#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/12/09/cite-dans-un-article-de-capital#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/548</wfw:commentRss>
      </item>
    
  <item>
    <title>Statistiques pour le mois de Novembre 2009</title>
    <link>http://methylbro.titaxium.org/post/2009/12/08/statistiques-pour-le-mois-de-novembre-2009</link>
    <guid isPermaLink="false">urn:md5:fe6d8f26ef083e79aa9421d03940f961</guid>
    <pubDate>Tue, 08 Dec 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>analytics</category><category>statistiques</category><category>stats</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/6298-tatice-Statistiques.png&quot; alt=&quot;Statistiques pour le mois de Novembre 2009&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Ce mois-ci, pas de grand pic d’affluence. Malgré un début de mois en très forte progression, +70 % de visites sur la première semaine de novembre, par rapport à la première semaine d’octobre qui s’explique sans doutes par l’organisation du petit concours le trafic a subit une forte chute sur la fin du mois. &lt;/p&gt;
&lt;p&gt;En effet, le mois dernier je n’ai pu publier que 12 billets or comme nous l’avons vu dans notre étude d’octobre, le nombre de nouveau contenu doit être croissant pour que le trafic s’en ressente. &lt;/p&gt;
&lt;p&gt;La tendance sera sans doutes encore plus catastrophique pour le mois de décembre. En effet ; nouveau job, déménagement en perspective, fêtes de fin d’années … Autant de facteurs qui font que, a coups sur, je ne pourrais pas non plus énormément publier ce mois-ci. Les statistiques s’en feront sans doutes ressentir pour ce dernier mois de 2009.&lt;/p&gt;
&lt;table align=&quot;center&quot; width=&quot;470&quot;&gt;
&lt;caption&gt;Fréquentation du site&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;th scope=&quot;col&quot;&gt;Octobre&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;Novembre&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;Différence&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Visites&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;2 339&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2 396&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+2,44 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Pages Vues&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;4 171&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;4 408&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+5,68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Pages par visite&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;1,78&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1,84&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+3,17 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Taux de rebond &lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;73,11 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;72,75 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;-0,50 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Temps moyen passé sur le site&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;00:02:02&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;00:01:39&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;-18,78 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Nouvelles visites&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;76,83 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;75,13 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+2,22 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/statistiques/stats-09-12.jpg&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/statistiques/.stats-09-12_m.jpg&quot; alt=&quot;Statistiques pour le mois de Novembre 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/12/08/statistiques-pour-le-mois-de-novembre-2009#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/12/08/statistiques-pour-le-mois-de-novembre-2009#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/549</wfw:commentRss>
      </item>
    
  <item>
    <title>Résultats du concours : Gagnez le livre PHP5 Avancé !</title>
    <link>http://methylbro.titaxium.org/post/2009/12/08/resultats-du-concours-gagnez-le-livre-php5-avance</link>
    <guid isPermaLink="false">urn:md5:774353fa03beaf39d4952c4dc3d58bb3</guid>
    <pubDate>Mon, 07 Dec 2009 20:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>concours</category><category>livre</category><category>php</category><category>php5 avance</category>    
    <description>    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/01/concours-gagnez-le-livre-php5-avance&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/concours-novembre-2009.jpg&quot; alt=&quot;Concours : Gagnez le livre PHP5 Avancé !&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Souvenez-vous, le mois dernier je lancé sur ce blog un petit concours avec à la clé le très excellent livre &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/01/concours-gagnez-le-livre-php5-avance&quot;&gt;PHP5 Avancé&lt;/a&gt; écrit par &lt;strong&gt;Eric Daspet&lt;/strong&gt; et &lt;strong&gt;Cyril Pierre de Geyer&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Il y a quelques jours j'ai effectué le tirage au sort des gagnants parmi tous les participants. Je vous annonce donc que &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/12/08/&quot;&gt;Jordan&lt;/a&gt; a été tiré au sort et recevra donc dans les jours à venir un exemplaire du livre PHP5 Avancé chez lui.&lt;/p&gt;
&lt;p&gt;Je tient à remercier tous les participants au concours : &lt;a href=&quot;http://amarox.fr/&quot;&gt;Amarox&lt;/a&gt;, &lt;a href=&quot;http://blog.titax.fr/&quot;&gt;TitaX&lt;/a&gt;, &lt;a href=&quot;http://damdec.fr/&quot;&gt;damdec&lt;/a&gt;, PaulK, &lt;a href=&quot;http://www.devzone.fr/&quot;&gt;devzonefr&lt;/a&gt;, &lt;a href=&quot;http://symfony.over-blog.fr/&quot;&gt;Sacri&lt;/a&gt;, &lt;a href=&quot;http://exta.titaxium.com/&quot;&gt;Exta&lt;/a&gt;, &lt;a href=&quot;http://www.vodkaan.be/blog&quot;&gt;Kaan&lt;/a&gt;, &lt;a href=&quot;http://www.makeyourbusiness.fr/&quot;&gt;Wiki&lt;/a&gt;, &lt;a href=&quot;http://www.exotux.info/&quot;&gt;exotux&lt;/a&gt;, &lt;a href=&quot;http://www.romualb.com/&quot;&gt;romualb&lt;/a&gt;, &lt;a href=&quot;http://blog.vicus.fr/&quot;&gt;Bastien DONJON&lt;/a&gt;, &lt;a href=&quot;http://www.imystik.fr/&quot;&gt;iMystiK&lt;/a&gt; et &lt;a href=&quot;http://www.fairweb.fr/&quot;&gt;Fairweb&lt;/a&gt;. Un grand merci également à &lt;a href=&quot;http://www.cyruss.com/&quot;&gt;Cyril PIERRE de GEYER&lt;/a&gt; pour avoir &lt;a href=&quot;http://www.cyruss.com/index.php?post/2009/11/06/Concours-%3A-Gagnez-le-livre-PHP5-Avanc%C3%A9-%21&quot;&gt;encouragé&lt;/a&gt; ce concours (la prochaine fois, peut être nous fera il don d'un exemplaire dédicacé ...).&lt;/p&gt;
&lt;p&gt;Sachez que d'autres concours sont en prévisions sur &lt;a href=&quot;http://www.titaxium.com/&quot; title=&quot;Communauté Graphique et Développement&quot;&gt;TitaXium&lt;/a&gt; dans les semaines à venir...&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/12/08/resultats-du-concours-gagnez-le-livre-php5-avance#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/12/08/resultats-du-concours-gagnez-le-livre-php5-avance#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/547</wfw:commentRss>
      </item>
    
  <item>
    <title>XPather : Une extension Firefox pour naviguer dans un document avec XPath</title>
    <link>http://methylbro.titaxium.org/post/2009/11/25/xpather-une-extension-firefox-pour-naviguer-dans-un-document-avec-xpath</link>
    <guid isPermaLink="false">urn:md5:4bcc6eab82a0c6574ad50002f43224df</guid>
    <pubDate>Wed, 25 Nov 2009 14:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Logiciel</category>
        <category>extension</category><category>firefox</category><category>xpath</category>    
    <description>    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1192&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/2009-11-25-xpath-extension-for-firefox.jpg&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Parmi les &lt;strong&gt;extension Firefox&lt;/strong&gt; indispensables pour un développeur/intégrateur, en voici surement une qui ravira les utilisateurs aguerris de la syntaxe XPath : &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/1192&quot;&gt;XPather&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;XPather&lt;/strong&gt; s'ajoute à votre Firefox et ainsi vous pouvez effectuer toute sorte de requêtes &lt;strong&gt;XPath&lt;/strong&gt; sur un document directement depuis votre navigateur.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/25/xpather-une-extension-firefox-pour-naviguer-dans-un-document-avec-xpath#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/25/xpather-une-extension-firefox-pour-naviguer-dans-un-document-avec-xpath#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/532</wfw:commentRss>
      </item>
    
  <item>
    <title>PHP/MySQL : Enregistrer et lire des fichiers dans une base de données</title>
    <link>http://methylbro.titaxium.org/post/2009/11/24/php-mysql-enregistrer-et-lire-des-fichiers-dans-une-base-de-donnees</link>
    <guid isPermaLink="false">urn:md5:989586e9886922637ae45206c12893e5</guid>
    <pubDate>Tue, 24 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Tutoriels</category>
        <category>blob</category><category>fichier</category><category>mysql</category><category>pdo</category><category>php</category><category>sql</category><category>upload</category>    
    <description>    &lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/php-mysql.jpg&quot; alt=&quot;PHP/MySQL : Enregistrer et lire des fichiers dans une base de données&quot; style=&quot;float: left; margin-right: 5px;&quot; /&gt;Tout au long de la semaine dernière nous avons vu comment enregistrer et consulter des fichiers dans une base de données &lt;strong&gt;MySQL&lt;/strong&gt; avec &lt;strong&gt;PHP&lt;/strong&gt;. &lt;/p&gt;
&lt;p&gt;Nous avons appris les principes de bases des &lt;strong&gt;Objets Larges Binaires&lt;/strong&gt; (BLOB) ainsi que les outils mis a notre disposition par &lt;strong&gt;PDO&lt;/strong&gt; pour les manipuler efficacement avec PHP. Nous avons vu également les limites de ce genre de pratiques et comment en résoudre certaines en implémentant un petit système de cache côté PHP. &lt;/p&gt;
&lt;p&gt;Au cours de mes exemples j’ai proposé une classe &lt;em&gt;FileFromDB&lt;/em&gt; et un ensemble de pages permettant de démontrer comment réaliser tout cela. Vous trouverez aujourd’hui, en annexe à ce billet, l’ensemble des scripts utilisées comme exemple.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Télécharger des sources : &lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/exemple.rar&quot;&gt;exemple.rar&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Je n’ai malheureusement pas eu le temps de les commenter proprement mais si vous vous reportez aux articles de la semaine, vous serais alors à même de les comprendre. &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees&quot;&gt;MySQL : Stocker un fichier dans une base de données&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees&quot;&gt;PHP : Enregistrer un fichier dans une base de données&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/20/php-lire-un-fichier-stocke-dans-la-base-de-donnees&quot;&gt;PHP : Lire un fichier stocké dans la base de données&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/22/php-un-cache-pour-nos-fichiers-stockes-dans-mysql&quot;&gt;PHP : Un cache pour nos fichiers stockés dans MySQL&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Si cela vous intéresse de venir discourir des avantages et des (nombreux) inconvénients que peuvent avoir cette pratique, je vous invites à venir le faire sur le &lt;a href=&quot;http://www.titaxium.com/forum/&quot;&gt;forum&lt;/a&gt; dans &lt;a href=&quot;http://www.titaxium.com/forum/index.php?showforum=82&quot;&gt;l’espace dédié au développement&lt;/a&gt;.&lt;/p&gt;</description>
    
          <enclosure url="http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/exemple.rar"
      length="5845" type="application/rar" />
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/24/php-mysql-enregistrer-et-lire-des-fichiers-dans-une-base-de-donnees#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/24/php-mysql-enregistrer-et-lire-des-fichiers-dans-une-base-de-donnees#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/528</wfw:commentRss>
      </item>
    
  <item>
    <title>PHP : Un cache pour nos fichiers stockés dans MySQL</title>
    <link>http://methylbro.titaxium.org/post/2009/11/22/php-un-cache-pour-nos-fichiers-stockes-dans-mysql</link>
    <guid isPermaLink="false">urn:md5:7aa43f3143654136f4d8eb7b75eb0666</guid>
    <pubDate>Sun, 22 Nov 2009 13:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Tutoriels</category>
        <category>cache</category><category>fichier</category><category>mysql</category><category>pdo</category><category>php</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/php.png&quot; alt=&quot;PHP : Un cache pour nos fichiers stockés dans MySQL&quot; style=&quot;float:left;margin-right:15px;&quot; /&gt;Tout au long de la semaine, nous avons vu ensemble comment &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees&quot;&gt;stoker des fichiers dans une base de données MySQL&lt;/a&gt; &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees&quot;&gt;avec PHP&lt;/a&gt; et comment &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/20/php-lire-un-fichier-stocke-dans-la-base-de-donnees&quot;&gt;les lire&lt;/a&gt; par la suite.&lt;/p&gt;
&lt;p&gt;Cependant même s'il peut s'avérer pratique de profiter des capacités relationnelles de MySQL pour gérer des fichiers ; le risque d'une consommation de ressources excessive soulevé par cette méthode est élevé.&lt;/p&gt;
&lt;p&gt;Nous allons voir aujourd'hui pourquoi cette pratique bien qu'intéressante en apparence n'est que trop rarement utilisée en réalité. Nous verrons également comment proposer certaines solutions qui nous permettrons de résoudre certains des problèmes soulevés. &lt;/p&gt;    &lt;h3&gt;Au niveau de MySQL&lt;/h3&gt;
&lt;p&gt;Bien évidemment un serveur de base de données n’a pas été conçu pour stocker massivement des fichiers. Il n’a pas pour vocation de manipuler exclusivement ce type d’informations. Votre système de fichier sera bien évidemment beaucoup plus performant pour effectuer cette tâche. &lt;/p&gt;
&lt;p&gt;Stocker des fichiers dans vos tables alourdira considérablement la taille de ces dernières. Le serveur de données aura donc besoin de plus de temps et de ressources pour les parcourir lors de vos requêtes, ce qui peut nuire grandement au temps d’exécution global de vos script. &lt;/p&gt;
&lt;p&gt;A contrario centraliser les données est toujours quelque chose de très intéressant pour la maintenance d’une application. Les backups sont plus faciles à gérer lorsque les données nécessaires pour un programme sont réunies au même endroit. Comme cela peut être le cas avec une base de données. &lt;/p&gt;
&lt;h3&gt;Le débit de données entre le serveur et votre script&lt;/h3&gt;
&lt;p&gt;Il y a un point primordial que nous devront prendre en compte si nous souhaitons tout de même utiliser MySQL pour stocker nos fichiers : c’est le débit d’information qui va circuler entre le serveur de base de données et notre script.&lt;/p&gt;
&lt;p&gt;En effet outre les problèmes directement liés à notre SGBDR a chaque fois que nous allons vouloir faire appel à l’un de nos fichiers stocké en base celui-ci va devoir parcourir un long chemin pour arriver jusqu'à nous. &lt;/p&gt;
&lt;p&gt;Pour illustrer mon propos ; jetez un coups d’œil sur le schéma suivant :&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/2009-11-23-debit-donnees-entre-serveur-et-script.jpg&quot; alt=&quot;Le débit de données entre le serveur et votre script&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/p&gt;
&lt;p&gt;La solution que l’on peut facilement envisager c’est de créer un cache au sein de notre application qui stockera dans le système de fichiers nos fichiers tant qu’ils seront valables par rapport à leurs version dans la base de données. &lt;/p&gt;
&lt;h3&gt;La méthode FileFromDB::headers()&lt;/h3&gt;
&lt;p&gt;A partir de ce que nous avons fait jusqu'à présent, mettre en place ce petit cache va s’avérer très facile. Commençons par modifier notre classe FileFromDB qui, je vous le rappelle, nous permet de manipuler nos fichiers stockés dans la base de données. &lt;/p&gt;
&lt;p&gt;Même si nous ne souhaitons pas faire circuler nos fichiers inutilement entre notre script et la base de données nous auront besoin néanmoins d’un grand nombre d’informations les concernant. Principalement leur nom ainsi que la date de leur dernière modification. &lt;/p&gt;
&lt;code&gt;public function headers() {&lt;br /&gt;
global $PDO;&lt;br /&gt;
$stmt = $PDO-&amp;gt;prepare(&quot;SELECT name, type, UNIX_TIMESTAMP(updated_date) AS updated_date FROM FILE WHERE name = ?&quot;);&lt;br /&gt;
$stmt-&amp;gt;bindParam(1, $this-&amp;gt;filename);&lt;br /&gt;
$stmt-&amp;gt;execute();&lt;br /&gt;
return $stmt-&amp;gt;fetch(PDO::FETCH_OBJ);&lt;br /&gt;
}&lt;/code&gt;
&lt;p&gt;C’est le rôle de cette nouvelle méthode. Elle nous donnera uniquement ces informations sous la forme d’un objet de type &lt;em&gt;sdtClass&lt;/em&gt;. Ce qui évitera d’avoir à aller chercher notre fichier inutilement à chaque demandes.&lt;/p&gt;
&lt;h3&gt;Une nouvelle page de download&lt;/h3&gt;
&lt;p&gt;Maintenant que nous disposons des outils nécessaires, nous pouvons modifier notre page de téléchargement de fichiers en y ajoutant notre petit système de cache. Par défaut donc, notre script enverra donc au visiteur le fichier contenu dans le cache. &lt;/p&gt;
&lt;p&gt;Ce dernier sera néanmoins renouvelé par le fichier contenu dans la base de donnée si l’une de ces trois conditions n’est pas rempli : &lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Le fichier n’existe pas encore dans le cache&lt;/li&gt;
&lt;li&gt;Le fichier stocké dans le cache à dépasser son temps de vie maximum&lt;/li&gt;
&lt;li&gt;Le fichier stocké dans le cache n’est plus à jour avec celui stocké dans la base de données&lt;/li&gt;
&lt;/ol&gt;
&lt;code&gt;$cache_path = 'cache/';&lt;br /&gt;
$cache_lifetime = 3600;&lt;br /&gt;
&lt;br /&gt;
if (isset($_GET['filename'])) {&lt;br /&gt;
$File = new FileFromDB($_GET['filename']);&lt;br /&gt;
$FileHeaders = $File-&amp;gt;headers();&lt;br /&gt;
$file_cache = $cache_path.$FileHeaders-&amp;gt;name;&lt;br /&gt;
if (!file_exists($file_cache)&lt;br /&gt;
|| filemtime($file_cache)+$cache_lifetime&lt;time()&gt;&lt;br /&gt;
|| filemtime($file_cache)&amp;lt;=$FileHeaders-&amp;gt;updated_date) {&lt;br /&gt;
$File-&amp;gt;output($file_cache);&lt;br /&gt;
}&lt;br /&gt;
header(&quot;Content-Type: {$FileHeaders-&amp;gt;type}&quot;);&lt;br /&gt;
header(&quot;Content-Disposition: inline; filename={$FileHeaders-&amp;gt;name}&quot;);&lt;br /&gt;
header(&quot;Last-Modified: &quot;.date('r', $FileHeaders-&amp;gt;updated_date));&lt;br /&gt;
readfile($file_cache);&lt;br /&gt;
}&lt;/time()&gt;&lt;/code&gt;
&lt;p&gt;Dans un prochain billet je reviendrais sur tout ce que nous avons vu sur le stockage de fichier au sein d’une base de données avant de conclure cet article. Je vous proposerais également les sources utilisées dans nos exemples commentés.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/22/php-un-cache-pour-nos-fichiers-stockes-dans-mysql#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/22/php-un-cache-pour-nos-fichiers-stockes-dans-mysql#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/518</wfw:commentRss>
      </item>
    
  <item>
    <title>Programmateur : Le compte Twitter participatif</title>
    <link>http://methylbro.titaxium.org/post/2009/11/21/programmateur-le-compte-twitter-participatif</link>
    <guid isPermaLink="false">urn:md5:1e546dee4200a5d04a9202a3692621b9</guid>
    <pubDate>Sat, 21 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Liens</category>
            
    <description>    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://programmateur.lqbs.fr/&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-11-21-programmateur-twitter-participatif.jpg&quot; alt=&quot;Programmateur : Le compte Twitter participatif&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Même si je n’aime pas, mais alors pas du tout le nom qui a été choisi (imaginez ce que ca donnerais au féminin : &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/09/16/developpeur-developpeuse-masculin-feminin-identiques-ou-distincts&quot;&gt;programmateuse&lt;/a&gt; ?) je suis un grand adepte du concept.&lt;/p&gt;
&lt;p&gt;Je parle bien évidemment de &lt;a href=&quot;http://programmateur.lqbs.fr/&quot;&gt;Programmateur&lt;/a&gt;, le compte Twitter participatif sur le thème du développement à l’initiative du jeune (mais pas moins respectable) &lt;a href=&quot;http://adrian.gaudebert.fr/home&quot;&gt;Adrian Gaudebert.&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Voici quelques semaine que ce projet est sur les rails, cela tourne pas mal apparemment. J’y participe moi même aussi souvent que possible.
&lt;/p&gt;
&lt;p&gt;Une bonne source d’information, à la fois en français et en anglais. A découvrir absolument :&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;Suivez &lt;a href=&quot;http://twitter.com/programmateur&quot;&gt;@Programmateur&lt;/a&gt; sur Twitter&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/21/programmateur-le-compte-twitter-participatif#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/21/programmateur-le-compte-twitter-participatif#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/517</wfw:commentRss>
      </item>
    
  <item>
    <title>PHP : Lire un fichier stocké dans la base de données</title>
    <link>http://methylbro.titaxium.org/post/2009/11/20/php-lire-un-fichier-stocke-dans-la-base-de-donnees</link>
    <guid isPermaLink="false">urn:md5:33070ae7891ffe29e2bf600e6a1095d1</guid>
    <pubDate>Fri, 20 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Tutoriels</category>
        <category>blob</category><category>fichier</category><category>pdo</category><category>php</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/php.png&quot; alt=&quot;PHP : Lire un fichier stocké dans la base de données&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Nous avons vu précédemment comment &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees&quot;&gt;stocker un fichier dans une base de données MySQL&lt;/a&gt;. Puis nous avons explorer ensemble une méthode pour &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees&quot;&gt;insérer ce fichier dans la base&lt;/a&gt; directement à l’aide d’un petit script PHP. Aujourd’hui nous allons voir comment &lt;strong&gt;récupérer ce fichier avec PHP&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Notre exemple sera très simple, nous allons seulement récupérer le fichier là ou il est, c’est a dire dans la base de données MySQL, pour le retourner directement à un visiteur.&lt;/p&gt;
&lt;p&gt;Il n’y aura donc pas de traitement sur ce fichier. Cependant cela serait tout à fait possible. Récemment par exemple je me suis retrouver dans un cas ou je devais modifier des images après les avoir récupérer dans une base de données.&lt;/p&gt;    &lt;h3&gt;La méthode FileFromDB ::output()&lt;/h3&gt;
&lt;p&gt;Dans notre dernier chapitre sur ce sujet, nous avons commencé l’élaboration d’une classe &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees&quot;&gt;FileFromDB&lt;/a&gt; nous permettant de manipuler des &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees&quot;&gt;fichiers stockés dans une base de données&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Nous allons poursuivre la conception de cette dernière en lui rajoutant une méthode &lt;em&gt;output()&lt;/em&gt; qui nous permettra de lire un fichier vers le flux standard de sortie ou d’enregistrer celui-ci dans le système de fichiers.&lt;/p&gt;
&lt;p&gt;Cette méthode acceptera donc un paramètre facultatif &lt;em&gt;$filename&lt;/em&gt;. Si celui-ci est fournis nous enregistrerons une copie du fichier stocké dans la base de données vers la destination indiqué au sein du système de fichiers.&lt;/p&gt;
&lt;p&gt;Sinon nous afficherons le fichier directement vers le flux standard de sortie. Comme il s’agit d’Apache dans notre exemple, nous prendrons soin d’indiquer certains &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/07/23/ressources-http-champs-d-en-tete-et-codes-de-retour&quot;&gt;en-têtes HTTP&lt;/a&gt; nécessaire pour que le client comprenne de quel fichier il s’agit.&lt;/p&gt;
&lt;code&gt;public function output($filename=null) {&lt;br /&gt;
global $PDO;&lt;br /&gt;
$stmt = $PDO-&amp;gt;prepare(&quot;SELECT type, UNIX_TIMESTAMP(updated_date), data FROM FILE WHERE name = ?&quot;);&lt;br /&gt;
$stmt-&amp;gt;bindParam(1, $this-&amp;gt;filename);&lt;br /&gt;
$stmt-&amp;gt;execute();&lt;br /&gt;
$stmt-&amp;gt;bindColumn(1, $type, PDO::PARAM_STR, 256);&lt;br /&gt;
$stmt-&amp;gt;bindColumn(2, $updated_date, PDO::PARAM_INT);&lt;br /&gt;
$stmt-&amp;gt;bindColumn(3, $data, PDO::PARAM_LOB);&lt;br /&gt;
$stmt-&amp;gt;fetch(PDO::FETCH_BOUND);&lt;br /&gt;
if (is_null($filename)) {&lt;br /&gt;
header(&quot;Content-Type: $type&quot;);&lt;br /&gt;
header(&quot;Content-Disposition: inline; filename={$this-&amp;gt;filename}&quot;);&lt;br /&gt;
header(&quot;Last-Modified: &quot;.date('r', $updated_date));&lt;br /&gt;
//return fpassthru($data);&lt;br /&gt;
return print($data);&lt;br /&gt;
} else {&lt;br /&gt;
$hdle = fopen($filename, 'wb');&lt;br /&gt;
//return stream_copy_to_stream($data, $hdle);&lt;br /&gt;
return fwrite($hdle, $data);&lt;br /&gt;
}&lt;br /&gt;
}&lt;/code&gt;
&lt;h3&gt;Le bug #40913 de PHP&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://bugs.php.net/bug.php?id=40913&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/2009-11-20-bug-php-40913-pdo-param-lob.jpg&quot; alt=&quot;e bug #40913 de PHP&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Comme vous pourrez le voir j’ai laissé deux lignes en commentaires dans la méthode ci-dessus. En effet a ce stade nous ne pourrons malheureusement pas utiliser d’objet large binaire (&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees&quot;&gt;Binary Large Object&lt;/a&gt;) car PHP et PDO sont encore victimes d’un &lt;a href=&quot;http://bugs.php.net/bug.php?id=40913&quot;&gt;bug non corrigé&lt;/a&gt; à ce sujet.&lt;/p&gt;
&lt;p&gt;Le problème vient du fait que, malgré que l’on indique à PDO que l’on souhaite recevoir un paramètre de type PDO::PARAM_LOB (Objet Binaire Large) celui-ci nous retourne une chaîne de caractère (PDO::PARAM_STR). Il deviens impossible alors de traiter notre valeur comme une ressource de flux (utilisable notamment avec les fonctions &lt;em&gt;fpassthru()&lt;/em&gt; et &lt;em&gt;stream_copy_to_stream()&lt;/em&gt;. &lt;/p&gt;
&lt;p&gt;En attendant que ce problème soit corrigé j’utiliserais donc print() et fwrite() dans mon exemple. Mais attention, cette méthode de remplacement consomme énormément plus en ressource qu’un simple traitement par flux. Ne l’utilisez donc pas en production (surtout sur des sites avec une grosse charge). &lt;/p&gt;
&lt;h3&gt;La page de download&lt;/h3&gt;
&lt;p&gt;Maintenant que nous avons une solution nous permettant de récupérer des fichiers stockés dans notre base de données MySQL, nous pouvons facilement créer un petit script pour télécharger ces fichiers.&lt;/p&gt;
&lt;code&gt;if (isset($_GET['filename'])) {&lt;br /&gt;
$File = new FileFromDB($_GET['filename']);&lt;br /&gt;
$File-&amp;gt;output();&lt;br /&gt;
}&lt;/code&gt;
&lt;p&gt;Encore une fois ce script restera simple et l’on omettra toutes les vérifications d’usage en termes de sécurité. Ce n’est pas le sujet abordé.&lt;/p&gt;
&lt;p&gt;Dans un prochain article nous verrons que notre solution demande énormément de ressources inutiles. Nous réglerons donc ces problèmes en implémentant un petit système de cache applicatif côté PHP.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/20/php-lire-un-fichier-stocke-dans-la-base-de-donnees#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/20/php-lire-un-fichier-stocke-dans-la-base-de-donnees#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/505</wfw:commentRss>
      </item>
    
  <item>
    <title>PHP : Enregistrer un fichier dans une base de données</title>
    <link>http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees</link>
    <guid isPermaLink="false">urn:md5:00b83022d9cedf00942fb38a312bd839</guid>
    <pubDate>Tue, 17 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Tutoriels</category>
        <category>blob</category><category>fichier</category><category>pdo</category><category>php</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/php.png&quot; alt=&quot;PHP : Enregistrer un fichier dans une base de données&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Maintenant que nous disposons d’une base de données prête à &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees&quot;&gt;stocker nos fichiers directement au sein d’une table&lt;/a&gt; nous allons pouvoir commencer à regarder comment faire fonctionner cela proprement avec PHP.&lt;/p&gt;
&lt;p&gt;Nous verrons donc aujourd’hui comment enregistrer un fichier au sein d’un champ de type LONGBLOB avec PHP. Ici le fichier proviendra d’un formulaire mais on pourrais très bien étendre le champ d’application de cette méthode à tout type de sources. &lt;/p&gt;
&lt;p&gt;L’exemple utilisera PDO (PHP Data Object) ; si vous n’êtes pas à l’aise avec cette extension de PHP je vous conseille vivement de vous mettre à jour. Car comme vous pourrez le voir les fonctionnalités que proposent cette extension sont fort agréables.&lt;/p&gt;    &lt;h3&gt;La classe FileFromDB&lt;/h3&gt;
&lt;p&gt;Afin de manipuler les fichiers stockées dans la base de données, je vous propose d’utiliser une classe que nous feront évoluer tout au long de ce tutoriel. Appelons la FileFromDB car chaque instance de cette classe nous permettra de manipuler un de nos fichiers. &lt;/p&gt;
&lt;code&gt;class FileFromDB {&lt;br /&gt;
private $filename;&lt;br /&gt;
public function __construct($filename) {&lt;br /&gt;
$this-&amp;gt;filename = $filename;&lt;br /&gt;
}&lt;br /&gt;
}&lt;/code&gt;
&lt;h3&gt;Le formulaire d’upload&lt;/h3&gt;
&lt;p&gt;Comme je le disait lors de l’introduction, dans notre exemple les fichiers seront envoyés par les utilisateurs. Cela nécessitera donc un petit formulaire permettant d’envoyer des fichiers. &lt;/p&gt;
&lt;code&gt;&amp;lt;?php&lt;br /&gt;
$message = null;&lt;br /&gt;
if (isset($_FILES['myFile'])) {&lt;br /&gt;
$File = new FileFromDB($_FILES['myFile']['name']);&lt;br /&gt;
$File-&amp;gt;upload($_FILES['myFile']);&lt;br /&gt;
$message = 'Votre fichier à bien été ajouté';&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
&amp;lt;title&amp;gt;Upload&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;form method=&quot;post&quot; enctype=&quot;multipart/form-data&quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php echo $message; ?&amp;gt;&lt;br /&gt;
&amp;lt;fieldset&amp;gt;&lt;br /&gt;
&amp;lt;legend&amp;gt;Charger un fichier&amp;lt;/legend&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;label for=&quot;myFile&quot;&amp;gt;Fichier&amp;lt;/label&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;file&quot; id=&quot;myFile&quot; name=&quot;myFile&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;reset&quot; value=&quot;Annuler&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;input type=&quot;submit&quot; value=&quot;Envoyer&quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/fieldset&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/code&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/2009-11-17-formulaire-upload.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Ce formulaire restera simple et l’on omettra toutes les vérifications d’usage en termes de sécurité. Ce n’est pas le sujet abordé.&lt;/p&gt;
&lt;h3&gt;La méthode FileFromDB::upload()&lt;/h3&gt;
&lt;p&gt;Enfin nous ajouterons à notre classe FileFromDB une méthode permettant d’enregistrer notre fichier comme un objet large binaire au sein de notre table. L’extension PDO et son système de requêtes préparées nous propose un type de paramètre parfait pour résoudre les problèmes liés : PARAM_LOB. &lt;/p&gt;
&lt;p&gt;Ainsi nous passerons comme paramètre un flux vers le fichier que l’on souhaite envoyé à la base de données au lieu de l’intégralité du contenu lui même. En travaillant avec des flux de données nous ne consommerons pas inutilement les ressources disponibles.&lt;/p&gt;
&lt;code&gt;public function upload($file) {&lt;br /&gt;
global $PDO;&lt;br /&gt;
$stmt = $PDO-&amp;gt;prepare(&quot;REPLACE INTO FILE (name, type, data) VALUES (?, ?, ?)&quot;);&lt;br /&gt;
$stmt-&amp;gt;bindParam(1, $this-&amp;gt;filename);&lt;br /&gt;
$stmt-&amp;gt;bindParam(2, $file['type']);&lt;br /&gt;
$stmt-&amp;gt;bindParam(3, fopen($file['tmp_name'], 'rb'), PDO::PARAM_LOB);&lt;br /&gt;
return $stmt-&amp;gt;execute();&lt;br /&gt;
}&lt;/code&gt;
&lt;p&gt;Dans un prochain article nous verrons comment lire des fichiers enregistrés dans notre base de données. &lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/17/php-enregistrer-un-fichier-dans-une-base-de-donnees#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/504</wfw:commentRss>
      </item>
    
  <item>
    <title>MySQL : Stocker un fichier dans une base de données</title>
    <link>http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees</link>
    <guid isPermaLink="false">urn:md5:b4a388150442cc375206b9d4bee1586d</guid>
    <pubDate>Sun, 15 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Tutoriels</category>
        <category>blob</category><category>fichier</category><category>MySQL</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/bdd.png&quot; alt=&quot;MySQL : Stocker un fichier dans une base de données&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Techniquement il est tout à fait possible de stocker des fichiers directement au sein d'une base de données. &lt;/p&gt;
&lt;p&gt;Cependant peut de développeurs se risquent à ce genre de pratique. Il est vrai que si l'on maîtrise mal certains aspects, ou s'il on en demande trop à cette technique cela peut vite se révéler être un véritable calvaire. &lt;/p&gt;
&lt;p&gt;Néanmoins je reste intimement convaincu que dans certains cas et pour des besoins raisonnables il peut être fort agréable de pouvoir stocker des fichiers directement au sein d'une base de données.&lt;/p&gt;
&lt;p&gt;Cette semaine je vous propose une série de billets qui va vous permettre de comprendre comment réaliser une telle chose. Mais je vais également essayer de vous amener à bien appréhender les risques et les limites d'une telle pratique ce qui vous permettra de mieux envisager sur quel projet cela peut ou ne peut pas se faire.&lt;/p&gt;    &lt;h3&gt;Les Objets Larges Binaires (BLOB)&lt;/h3&gt;
&lt;p&gt;Pour stocker nos fichiers au sein de notre base de données nous allons utiliser un type de données que les néophytes découvriront sans doutes pour la première fois : les &lt;strong&gt;Objets Larges Binaires&lt;/strong&gt; ou &lt;acronym title=&quot;Binary Large Object&quot;&gt;BLOB&lt;/acronym&gt; pour &lt;strong&gt;Binary Large Object&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Le BLOB est un type de donnée permettant le stockage d’informations sous forme binaire. On l’utilise le plus souvent pour stocker des fichiers en tout genre (images, sons ou videos …) directement dans le champ d'une table d'une base de données.&lt;/p&gt;
&lt;p&gt;Pour notre exemple nous utiliserons &lt;strong&gt;MySQL&lt;/strong&gt; comme système de gestion de base de données. Sachez que celui-ci propose plusieurs types différents d’objets larges qui ne diffèrent que par la taille maximale des données qu’ils peuvent stocker. &lt;/p&gt;
&lt;p&gt;Parmi eux nous utiliserons le type &lt;strong&gt;LONGBLOB&lt;/strong&gt; car ce dernier propose la capacité maximale de stockage ; mais le choix du type à utiliser variera selon les cas que vous pourrez rencontrer lors d’une application pratique. &lt;/p&gt;
&lt;h3&gt;Création de la table&lt;/h3&gt;
&lt;p&gt;La première étape consiste donc à créer la table qui viendra stocker nos différents fichiers. Outre le nom du fichier et le contenu même du fichier, nous conserverons également le type de fichier (« image/jpeg » pour une image par exemple) et la date de la dernière modification du fichier. &lt;/p&gt;
&lt;p&gt;Ces informations supplémentaires nous seront utiles par la suite pour envoyer des en-têtes HTTP corrects au visiteurs ainsi que pour gérer un petit cache côté serveur. &lt;/p&gt;
&lt;code&gt;CREATE TABLE `FILE` (&lt;br /&gt;
&lt;br /&gt;
`name` varchar(255) NOT NULL,&lt;br /&gt;
`type` varchar(255) NULL,&lt;br /&gt;
`updated_date` timestamp NOT NULL&lt;br /&gt;
DEFAULT CURRENT_TIMESTAMP&lt;br /&gt;
ON UPDATE CURRENT_TIMESTAMP,&lt;br /&gt;
`data` longblob NULL,&lt;br /&gt;
&lt;br /&gt;
PRIMARY KEY (`name`)&lt;br /&gt;
&lt;br /&gt;
)TYPE=MyISAM;&lt;/code&gt;
&lt;h3&gt;Un champ de fichier dans PHPMyAdmin&lt;/h3&gt;
&lt;p&gt;Une fois que vous aurez créer votre table avec la requête SQL &lt;em&gt;CREATE TABLE&lt;/em&gt; ci-dessus, vous vous apercevrais sans doutes que PHPMyAdmin vous proposera un formulaire d’insertion un peut particulier. &lt;/p&gt;
&lt;p&gt;En effet, vous verrez apparaître un champ d’envoi de fichier pour la valeur data. Comme vous pouvez le voir donc, notre champ data est bien destiné à recevoir un fichier. &lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/2009-11-14-blob-phpmyadmin.jpg&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/tutoriels/fichier-dans-base-de-donnees/.2009-11-14-blob-phpmyadmin_m.jpg&quot; alt=&quot;Formulaire d'insertion de PHPMyAdmin pour la table FILE&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Dans un prochain article ; nous verrons comment enregistrer des fichiers au sein de cette table directement depuis un script PHP.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/15/mysql-stocker-un-fichier-dans-une-base-de-donnees#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/503</wfw:commentRss>
      </item>
    
  <item>
    <title>Statistiques : Retour sur les effets d'une newsletter</title>
    <link>http://methylbro.titaxium.org/post/2009/11/10/statistiques-retour-sur-les-effets-d-une-newsletter</link>
    <guid isPermaLink="false">urn:md5:572a3b170a83fb14178b58a2f9005d9e</guid>
    <pubDate>Tue, 10 Nov 2009 13:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>analytics</category><category>newsletter</category><category>statistiques</category><category>stats</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/6298-tatice-Statistiques.png&quot; alt=&quot;Statistiques : Retour sur les effets d'une newsletter&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Afin de faire la promotion de mon petit &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/01/concours-gagnez-le-livre-php5-avance&quot;&gt;concours&lt;/a&gt; nous avons envoyé (&lt;a href=&quot;http://blog.titax.fr/&quot;&gt;TitaX&lt;/a&gt; et moi) mercredi dernier un mail aux membres du &lt;a href=&quot;http://www.titaxium.com/forum/&quot;&gt;forum&lt;/a&gt; de &lt;a href=&quot;http://www.titaxium.com/&quot;&gt;TitaXium&lt;/a&gt;. Aujourd'hui je voudrais partager avec vous le bilan de cette petite expérience.&lt;/p&gt;
&lt;p&gt;Bien évidemment si vous aussi vous avez déjà envoyé ou que vous envoyé régulièrement des courriels d'information en masse, je serait curieux de pouvoir comparer les données statistiques de mon cas avec le/les votre.&lt;/p&gt;
&lt;table style=&quot;margin: 0 auto;&quot; align=&quot;center&quot;&gt;
&lt;caption&gt;Retombées de la newsletter de novembre 2009&lt;/caption&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;th&gt;Membres inscrit&lt;/th&gt;
&lt;td align=&quot;right&quot;&gt;6 300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Membres actifs&lt;/th&gt;
&lt;td align=&quot;right&quot;&gt;2 976&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Mails envoyés&lt;/th&gt;
&lt;td align=&quot;right&quot;&gt;2 126&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th&gt;Visites via la newsletter&lt;/th&gt;
&lt;td align=&quot;right&quot;&gt;68&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;    &lt;h3&gt;6 300 membres mais seulement 2 126 adresses utilisables&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/mail.png&quot; alt=&quot;&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Tout d'abord même si le forum compte à ce jour plus de &lt;strong&gt;6 300 membres inscrits&lt;/strong&gt; ; nous avons fait le choix de n'envoyer notre message qu'aux membres venus s'authentifier au cours de ces deux dernières années.&lt;/p&gt;
&lt;p&gt;En effet comme le forum à plus de 6 ans il aurait été inutile de perdre des ressources à envoyer des mails vers des boites inactives ou désormais inexistante. Après ce premier tri notre liste d'abonnées c'est donc réduit à &lt;strong&gt;2976 mails&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Malheureusement - et c'était prévisible - sur notre liste d'emails nous avons eu un &lt;strong&gt;taux de perte de 28 %&lt;/strong&gt;. Soit environ 850 adresses fausses ou retournant une erreur à l'envoi.&lt;/p&gt;
&lt;h3&gt;Retombées réelles d'une newsletter&lt;/h3&gt;
&lt;p&gt;Pour mieux apprécier les retombées de cette newsletter nous avons également mis en place dans les liens de notre message les paramètres nécessaires pour comptabiliser les visiteurs en provenance de ce courrier. &lt;a href=&quot;http://piwik.org/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Pwiki&lt;/a&gt; pour TitaX (anciennement phpMyVisites) et &lt;a href=&quot;http://www.google.com/intl/fr_ALL/analytics/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt;Google Analytics&lt;/a&gt; pour moi. Chacun de nous ayant sa petite préférence pour l'un de ces deux outils d'analyse.&lt;/p&gt;
&lt;p&gt;Je me passerais d'expliquer comment mettre en place tel ou tel suivi via ces deux outils ; d'autres sur le web on du s'en charger bien mieux avant moi.&lt;/p&gt;
&lt;p&gt;Nos &lt;strong&gt;2 126 mails correctement envoyés&lt;/strong&gt; nous ont permis de générer au total &lt;strong&gt;68 visites&lt;/strong&gt; sur une durée de 7 jours. Cela paraît peu mais cela suppose tout de même un &lt;strong&gt;taux de pénétration d'environ 2,28 %&lt;/strong&gt; (sur la base des 2976 mails envoyés au départ).&lt;/p&gt;
&lt;p&gt;De plus comme vous pouvez le voir sur le graphique ci-dessous ; les effets de ce mail d'information ce sont très vite estompés quelques heures après l'envoi de la newsletter. Pour ne plus se faire ressentir du tout au bout de quelques jours.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/charts/2009-11-10-visites-via-la-newsletter.jpg&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/charts/.2009-11-10-visites-via-la-newsletter_m.jpg&quot; alt=&quot;Retombées de la Newsletter sur une semaine&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;Les résultats de cette expérience ne m'étonnent pas du tout. J'ai toujours pensé qu'une newsletter n'apportait que peu d'intérêt en termes de trafic.&lt;/p&gt;
&lt;p&gt;L'envoi de courrier automatique n'a d'intérêt selon moi que s'il représente un apport marketing évident. Le site de vente en ligne LDLC.com s'en sert par exemple pour publier quasi quotidiennement des offres promotionnelles à ses clients. C'est une bonne piste.&lt;/p&gt;
&lt;p&gt;Et-vous, comment tirez-vous profit de l'envoi de mails automatisé ?&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/10/statistiques-retour-sur-les-effets-d-une-newsletter#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/10/statistiques-retour-sur-les-effets-d-une-newsletter#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/493</wfw:commentRss>
      </item>
    
  <item>
    <title>UwAmp : Nouveau serveur Apache MySQL PHP</title>
    <link>http://methylbro.titaxium.org/post/2009/11/10/uwamp-nouveau-serveur-apache-mysql-php</link>
    <guid isPermaLink="false">urn:md5:8e4666c2d53cbfbb769949cc46b48152</guid>
    <pubDate>Tue, 10 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Liens</category>
        <category>apache</category><category>mysql</category><category>php</category><category>wamp</category>    
    <description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/10/&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-11-10-uwamp-serveur-apache-mysql-php.jpg&quot; alt=&quot;uWAMP : Nouveau serveur Apache MySQL PHP&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Il y as quelques jours &lt;a href=&quot;http://www.guillaumelecoz.com/&quot;&gt;Guillaume le Coz&lt;/a&gt; a publié son projet &lt;a href=&quot;http://www.uwamp.com/&quot;&gt;UwAMP&lt;/a&gt;. &lt;strong&gt;UwAMP&lt;/strong&gt; c'est un programme embarquant un serveur Apache, un serveur MySQL et une installation de PHP au sein d'un même outil. Au même titre que EasyPHP ou Wamp par exemple. &lt;/p&gt;    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/uwamp/.screen_1_m.jpg&quot; alt=&quot;uWAMP : Nouveau serveur Apache MySQL PHP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;On notera de cet outil deux particularités intéressantes : un &lt;strong&gt;monitoring de consommation du CPU&lt;/strong&gt; et la capacité à pouvoir fonctionner directement depuis un périphérique de stockage amovible comme &lt;strong&gt;une clé USB&lt;/strong&gt; par exemple. &lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/uwamp/.screen_2_m.jpg&quot; alt=&quot;uWAMP : Nouveau serveur Apache MySQL PHP&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Si vous êtes donc adepte des solutions « tout en un » ; découvrez donc &lt;a href=&quot;http://www.uwamp.com/&quot;&gt;UwAMP&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/10/uwamp-nouveau-serveur-apache-mysql-php#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/10/uwamp-nouveau-serveur-apache-mysql-php#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/494</wfw:commentRss>
      </item>
    
  <item>
    <title>Synthèse du barcamp PHP Toulousain</title>
    <link>http://methylbro.titaxium.org/post/2009/11/04/synthese-du-barcamp-php-toulousain</link>
    <guid isPermaLink="false">urn:md5:efd8e8a4f4685002ef5fb925cfff1778</guid>
    <pubDate>Wed, 04 Nov 2009 13:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>afup</category><category>barcamp</category><category>linagora</category><category>php</category><category>toulouse</category>    
    <description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/barcamp-php-2009-10-29.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Comme vous le savez sans doutes jeudi dernier j'ai répondu à l'invitation de &lt;a href=&quot;http://www.linagora.com/&quot;&gt;Linagora&lt;/a&gt; et de l'&lt;a href=&quot;http://www.afup.org/&quot;&gt;AFUP&lt;/a&gt; qui organisaient le temps d'une soirée un &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/10/07/toulouse-barcamp-php-le-29-octobre-2009&quot;&gt;barcamp PHP sur Toulouse&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Un grand remerciement à Linagora pour nous avoir accueillis (développeurs et amateurs de PHP Toulousains) dans leurs locaux de Ramonville. Un remerciement plus particulier à Xavier Gorse pour être venu participé et soutenir une telle initiative si rare dans la ville rose.&lt;/p&gt;
&lt;p&gt;En réalité ce billet fait suite à l'appel lancé par &lt;a href=&quot;http://www.raphael-rougeron.com/&quot;&gt;Raphaël Rougeron&lt;/a&gt; qui a déjà fait la &lt;a href=&quot;http://www.raphael-rougeron.com/post/2009/11/02/Synth%C3%A8se-du-Barcamp-PHP-toulousain&quot;&gt;synthèse&lt;/a&gt; des autres sessions (Edit : &lt;a href=&quot;http://blog.christophelebot.fr/&quot;&gt;Christophe le Bot&lt;/a&gt; à également pris le temps de rédiger une &lt;a href=&quot;http://blog.christophelebot.fr/2009/11/05/barcamp-php-toulousain-la-synthese/&quot;&gt;synthèse&lt;/a&gt; de la soirée). Ayant participé aux sessions Sécurité et PHP 5.3 (désolé mais j'ai un peu décroché durant la dernière session sur le Testing) je vais donc partager un petit bilan de ce qui a été abordé sur ces deux thèmes. &lt;/p&gt;
&lt;p&gt;N'ayant pas pris de notes, je vais donc devoir faire appel à ma mémoire. Dans le cas ou j'oublierais certaines choses, j'invite les autres participants à me corriger via les commentaires. &lt;/p&gt;    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/barcamp-php-toulouse/P1010426_m.jpg&quot; alt=&quot;Barcamp PHP Toulouse&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Sécurité&lt;/h3&gt;
&lt;p&gt;Nous avons commencé par abordé transversalement l'ensemble des problèmes de sécurité les plus courant : injections, XSS (Cross Site Scripting), vol de données … ce qui nous a permis de distinguer les problèmes de sécurité selon deux axes :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ne pas accepter n'importe quelles données en entrés&lt;/li&gt;
&lt;li&gt;limité la diffusion d'information en sortie à l'essentiel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Xavier Gorse a par exemple mis l'accent sur l'utilité d'un framework pour filtrer les variables d'entrées (GET, POST etc) afin d'éviter toute injection potentielle sans avoir à s'en soucier soit même.&lt;/p&gt;
&lt;p&gt;D'un autre côté l'importance de fournir un minimum d'information sur l'application elle même a été mis en avant. Éviter par exemple de dévoiler le type de clés utilisée pour indexé des articles en base de données voire même pour les puriste désactivé l'en-tête HTTP X-Powered-By.&lt;/p&gt;
&lt;p&gt;Tout au long de l'échange un autre axe c'est dessiné pour aborder les problèmes de sécurité :  les mises à jour. Conserver des versions à jour de tous ses outils, librairies, bibliothèques ou même de toute extension installé à été mis en avant et élevé au rang de « bonne pratique ».&lt;/p&gt;
&lt;p&gt;En conclusion donc nous pouvons dire que la sécurité en PHP s'articule en trois axes :&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;filtrer les données d'entrées (c'est le grand classique &lt;q&gt;Never trust foreign data&lt;/q&gt;)&lt;/li&gt;
&lt;li&gt;diffuser le moins d'information possible sur son application&lt;/li&gt;
&lt;li&gt;conserver des versions à jour &lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/barcamp-php-toulouse/P1010429_m.jpg&quot; alt=&quot;Barcamp PHP Toulouse&quot; style=&quot;border: 1px solid rgb(0, 0, 0);&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;PHP 5.3&lt;/h3&gt;
&lt;p&gt;Nous avons introduit la session sur PHP 5.3 par un tour de table des nouveautés. &lt;/p&gt;
&lt;p&gt;L'introduction des &lt;a href=&quot;http://fr.php.net/manual/fr/language.namespaces.php&quot;&gt;namespaces&lt;/a&gt; (espaces de noms) à par exemple été bien accueilli, même si cependant le choix final de l'opérateur \ comme séparateur n'a pas fait l'unanimité.&lt;/p&gt;
&lt;p&gt;D'un autre côté nous avons pu partager notre stupéfaction de voir apparaître dans PHP 5.3 la structure de contrôle &lt;a href=&quot;http://fr.php.net/manual/fr/control-structures.goto.php&quot;&gt;goto&lt;/a&gt;. Surtout lorsque PHP tend encore à améliorer son moteur objet dans cette nouvelle version avec l'arrivée de la résolution statique à la volée (late static biding).&lt;/p&gt;
&lt;p&gt;Néanmoins lorsque nous nous sommes aperçu que quasi aucun développeur autour de la table n'utilisait encore cette version de PHP (à part peu être l'irréductible que je suis), nous avons chercher les causes de cet évident manque d'engouement.&lt;/p&gt;
&lt;p&gt;La raison est pour le moins évidente : PHP 5.3 ne fait pas encore partie des paquets partagés par les grandes distributions (RedHat et Debian principalement). Voilà sans doutes ce qui rebutent les administrateurs systèmes à utiliser cette version de PHP.  &lt;/p&gt;
&lt;p&gt;Pourtant Xavier Gorse nous a expliqué comment l'équipe de Symfony et Fabien Potencier en étaient venu à privilégier PHP 5.3 pour le développement de la deuxième version du célèbre framework de Sensio Labs. &lt;/p&gt;
&lt;p&gt;Un des développeurs de l'équipe d'Ubuntu (désolé, je ne me souviens plus du nom) nous expliquais comment on pouvait s'attendre à voir arriver PHP 5.3 dans la version d'Ubuntu prévu pour dans environ 6mois.&lt;/p&gt;
&lt;p&gt;Ce qui nous laisse donc à présager que PHP 5.3 ne sera pas réellement généralisé avant l'horizon 2010. Ce que je trouve bien dommage au vu de la pléiade de nouvelles fonctionnalités intéressante qu'apporte cette version.&lt;/p&gt;
&lt;p style=&quot;text-align: right; font-size: 9px;&quot;&gt;Crédit Photos : &lt;a href=&quot;http://www.raphael-rougeron.com/post/2009/11/02/Synth%C3%A8se-du-Barcamp-PHP-toulousain&quot;&gt;Raphaël Rougeron&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/04/synthese-du-barcamp-php-toulousain#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/04/synthese-du-barcamp-php-toulousain#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/482</wfw:commentRss>
      </item>
    
  <item>
    <title>Statistiques pour le mois d'Octobre 2009</title>
    <link>http://methylbro.titaxium.org/post/2009/11/04/statistiques-pour-le-mois-de-octobre-2009</link>
    <guid isPermaLink="false">urn:md5:6b4c684a3a9a1a6fb150508313c34d57</guid>
    <pubDate>Wed, 04 Nov 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>analytics</category><category>statistiques</category><category>stats</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/6298-tatice-Statistiques.png&quot; alt=&quot;Statistiques pour le mois de Octobre 2009&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Avec quelques jours de retards et après avoir été harcelé par Yeteekma, je me décide enfin à publier la suite de mon petit fil rouge sur les statistiques de ce blog.&lt;/p&gt;
&lt;p&gt;Pour le mois d'octobre 2009 (période du 01/10/2009 au 31/10/2009) la tendance c'est clairement dessinée à la hausse. Malgré une inébranlable perte en termes de qualité des visites ; c'est à dire un nombre de pages par visites qui chute (-6,28 %) et un taux de rebond qui continue son ascension (+2,68 %) le trafic global généré par ce blog continue de progresser. &lt;/p&gt;
&lt;p&gt;Avec 34,74 % de visites en plus par rapport au mois de septembre 2009, j'atteins le nombre record de 2 339 visites ce mois-ci. Par la même occasion, je réalise déjà l'un des objectifs que je me suis fixé pour 2010.&lt;/p&gt;
&lt;table align=&quot;center&quot; width=&quot;470&quot;&gt;
&lt;caption&gt;Fréquentation du site&lt;/caption&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&amp;nbsp;&lt;/td&gt;
&lt;th scope=&quot;col&quot;&gt;Septembre&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;Octobre&lt;/th&gt;
&lt;th scope=&quot;col&quot;&gt;Différence&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Visites&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;1 736&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;2 339&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+34,74 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Pages Vues&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;3 303&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;4 171&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+26,28&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Pages par visite&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;1,90&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;1,78&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;-6,28 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Taux de rebond &lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;71,20 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;73,11 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+2,68 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Temps moyen passé sur le site&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;00:02:06&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;00:02:02&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;-3,84 %&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th scope=&quot;row&quot;&gt;Nouvelles visites&lt;/th&gt;
&lt;td align=&quot;center&quot;&gt;67,97 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;76,83 %&lt;/td&gt;
&lt;td align=&quot;center&quot;&gt;+13,03 %&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/statistiques/stats-09-11.jpg&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/statistiques/.stats-09-11_m.jpg&quot; alt=&quot;Statistiques pour le mois d'Octobre 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;h3&gt;Sans contenu, pas de trafic&lt;/h3&gt;
&lt;p&gt;Je l'ai toujours dit et répété : sans contenu un site web quel que soit son format ne peu pas générer du trafic. &lt;/p&gt;
&lt;p&gt;Cet aspect de la publication web est encore plus flagrant sur un blog ; plus un bloggeur publiera régulièrement de nouveaux billets et plus il verra son trafic augmenté. A l'inverse si l'auteur décide de s'arrêter il pourra observer son nombre de visites stagné voir même diminuer. &lt;/p&gt;
&lt;p&gt;Pour illustrer mon propos je vous invites à regarder sur le schéma ci-dessous l'étonnante similitude que l'on trouvera aux courbes du nombre de nouveaux billets sur mon blog et du nombre de pages vue :&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/charts/2009-11-03-stats-nb-billets-et-visites.jpg&quot; alt=&quot;Statistiques pour le mois de Octobre 2009&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Comme vous pouvez le voir, plus je publie de nouveaux billets plus mon trafic garde la pêche. Inversement quand je ralentit mon rythme de nouvelles publications je ne peu espérer voir mon trafic continuer sa course.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/11/04/statistiques-pour-le-mois-de-octobre-2009#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/11/04/statistiques-pour-le-mois-de-octobre-2009#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/481</wfw:commentRss>
      </item>
    
  <item>
    <title>Concours : Gagnez le livre PHP5 Avancé !</title>
    <link>http://methylbro.titaxium.org/post/2009/11/01/concours-gagnez-le-livre-php5-avance</link>
    <guid isPermaLink="false">urn:md5:548c50bcac7627444dae390f944708e2</guid>
    <pubDate>Sun, 01 Nov 2009 17:30:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>concours</category><category>livre</category><category>php</category><category>php5 avance</category>    
    <description>&lt;p style=&quot;text-align: center;&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/concours-novembre-2009.jpg&quot; alt=&quot;Concours : Gagnez le livre PHP5 Avancé !&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Du 01/11/09 au 30/11/09 je vous propose de gagner un exemplaire de l'ouvrage « &lt;strong&gt;PHP5 Avancé, 5éme Édition&lt;/strong&gt; » écrit par &lt;strong&gt;Eric Daspet&lt;/strong&gt; et &lt;strong&gt;Cyril Pierre de Geyer&lt;/strong&gt; et publié aux éditions Eyrolles dans la collection blanche.&lt;/p&gt;
&lt;p&gt;Il s'agit d'un exemplaire neuf, qui sera envoyer directement chez le gagnant. Pour participer, rien de plus simple. Il s'agit juste de faire un petit lien vers mon blog (je vous invite à regarder les règles de participation plus bas dans ce billet).&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/livres/.php5-avance_t.jpg&quot; alt=&quot;PHP5 Avancé, 5éme Édition&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;
&lt;/p&gt;
&lt;p&gt;Place à la nouvelle version de LA BIBLE consacrée à PHP 5 ! &lt;/p&gt;
&lt;p&gt;A la fois technique, fonctionnel et pédagogique, ce manuel conçu pour des développeurs et des administrateurs en premier lieu, va bien au-delà du simple listage de fonctionnalités de la plate-forme. &lt;/p&gt;
&lt;p&gt;Enrichi de cas pratiques et de retours d'expériences, ce livre est une référence incontournable.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Je ne pourrais malheureusement qu'offrir un seul exemplaire (d'une valeur de 42,75 € tout de même). Mais si ce concours atteint les 500 participants, je promets que je réitérerais l'événement, avec bien plus de lots à la clé cette fois.&lt;/p&gt;    &lt;h3&gt;Règles du concours&lt;/h3&gt;
&lt;p&gt;Pour participer au concours, vous devez tout simplement faire un lien vers &lt;a href=&quot;http://methylbro.titaxium.org/&quot;&gt;methylbro.titaxium.org&lt;/a&gt; sur votre site, votre blog ou votre page perso. Sont exclu les comptes facebook, twitter ou autres réseaux sociaux.&lt;/p&gt;
&lt;p&gt;Une fois que vous avez créé votre lien, indiquez l'adresse de la page web le contenant dans un commentaire à &lt;a href=&quot;http://methylbro.titaxium.org/post/2009/11/01/concours-gagnez-le-livre-php5-avance&quot;&gt;ce billet&lt;/a&gt; (les trackbacks/rétroliens sont également admis pour les bloggueurs). &lt;/p&gt;
&lt;p&gt;Un seul lien sera considéré par site, mais chaque participant qui possède plusieurs sites, blog ou page perso pourra inscrire chacun d'eux pour augmenter ses chances de gagner. &lt;/p&gt;
&lt;p&gt;Attention, les sites, blogs ou pages perso crées spécialement pour l'occasion ne seront bien évidement pas tolérés.&lt;/p&gt;
&lt;p&gt;Le concours sera ouvert à tous a compter d'aujourd'hui (01/11/2009) et ce &lt;strong&gt;jusqu'au 30/11/2009&lt;/strong&gt; à minuit. Une fois passé ce délai, toute nouvelle inscription sera considérée comme nulle.&lt;/p&gt;
&lt;p&gt;Le gagnant sera tiré au sort parmi l'ensemble des participants inscrits et les résultats du concours seront publiés sur ce blog avant le 15/12/2009.&lt;/p&gt;
&lt;h3&gt;Communiqué de presse&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/documents/concours-11-2009-communique.pdf&quot;&gt;Télécharger&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
      </item>
    
  <item>
    <title>Conférence PHP à Barcelone les 30 et 31 Octobre 2009</title>
    <link>http://methylbro.titaxium.org/post/2009/10/29/conference-php-a-barcelone-les-30-et-31-octobre-2009</link>
    <guid isPermaLink="false">urn:md5:6e71e9b9fb400c72ad637a23a3161055</guid>
    <pubDate>Thu, 29 Oct 2009 13:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>barcelone</category><category>conference</category><category>php</category>    
    <description>    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://phpconference.es/&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/encarts/2009-10-29-php-barcelona-conference.jpg&quot; alt=&quot;Conférence PHP à Barcelone les 30 et 31 Octobre 2009&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Cette année encore j'ai oublié et je m'en aperçois au dernier moment : ce week-end c'est la PHP Barcelona Conference.&lt;/p&gt;
&lt;p&gt;Comme son nom l'indique, une conférence sur PHP se tiendra pendant 2 jours les 30 et 31 octobre 2009 dans la capitale catalane. Quelques têtes connues seront là pour l'occasion, soit pour animer des conférences, soit comme invité de marque. On notera par exemple les présences de Rasmus Lerdorf, Fabien Potencier, Derick Rethans, Sebastian Bergmann, Damien Seguy ...&lt;/p&gt;
&lt;p&gt;Le prix d'entrée est plus attractif que le Forum Parisien de l'AFUP ; 50 euro en tarif plein pour les deux jours. Avec des sujets et des conférenciers tout aussi intéressants. Il faut juste être à l'aise avec l'espagnol même si la grande majorité des conférences seront tenues en anglais.&lt;/p&gt;
&lt;p&gt;Voilà désormais 3ans que Barcelone accueille chaque année sa PHP Conference et apparemment elle n'a rien à envier à sa grande sœur Parisienne. &lt;/p&gt;
&lt;p&gt;C'est promis, l'année prochaine si je ne peut toujours pas monter sur Paris, je ferait au moins celle là !&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://phpconference.es/&quot;&gt;PHP Barcelona Conference 2009&lt;/a&gt;&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/10/29/conference-php-a-barcelone-les-30-et-31-octobre-2009#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/10/29/conference-php-a-barcelone-les-30-et-31-octobre-2009#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/470</wfw:commentRss>
      </item>
    
  <item>
    <title>Bientôt noël. Sur le blog : une surprise en novembre !</title>
    <link>http://methylbro.titaxium.org/post/2009/10/25/teasing-bientot-noel-sur-le-blog-avec-une-surprise-en-novembre</link>
    <guid isPermaLink="false">urn:md5:c9e17ca100167523a4d6f5c4322a61b6</guid>
    <pubDate>Sun, 25 Oct 2009 08:00:00 +0100</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Communauté</category>
        <category>concours</category><category>php</category>    
    <description>    &lt;p&gt;Bonjour, &lt;/p&gt;
&lt;p&gt;Voilà, le blog commence à bien marcher. Les &lt;a href=&quot;http://methylbro.titaxium.org/tag/statistiques&quot;&gt;statistiques&lt;/a&gt; montent toujours plus haut, les billets que je publie sont de plus en plus commentés… Tout va pour le mieux en cette fin d'année. &lt;/p&gt;
&lt;p&gt;J'ai donc décidé de faire un petit événement pour la période de fête qui arrive. Un petit quelque chose que j'offrirais à l'un des lecteurs.&lt;br /&gt;
Je n'en dit pas plus aujourd'hui, ce billet n'est là que pour faire un peu de teasing.&lt;/p&gt;
&lt;p&gt;Rendez-vous dimanche prochain pour en savoir plus.&lt;/p&gt;
&lt;p&gt;Bonne dimanche à tous,&lt;br /&gt;
&lt;a href=&quot;http://www.methylbro.fr/&quot; title=&quot;Développeur Web PHP&quot;&gt;Méthylbro&lt;/a&gt;.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/10/25/teasing-bientot-noel-sur-le-blog-avec-une-surprise-en-novembre#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/10/25/teasing-bientot-noel-sur-le-blog-avec-une-surprise-en-novembre#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/445</wfw:commentRss>
      </item>
    
  <item>
    <title>Étude de cas : Une perle dans l'utilisation de la fonction date de PHP</title>
    <link>http://methylbro.titaxium.org/post/2009/10/23/etude-de-cas-une-perle-dans-utilisation-de-la-fonction-date-de-php</link>
    <guid isPermaLink="false">urn:md5:2addc5b73a11b73b1a1e7a507e6a5df1</guid>
    <pubDate>Fri, 23 Oct 2009 08:00:00 +0200</pubDate>
    <dc:creator>Méthylbro</dc:creator>
        <category>Tutoriels</category>
        <category>date</category><category>getdate</category><category>php</category>    
    <description>&lt;p&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/php.png&quot; alt=&quot;Étude de cas : Une perle dans l'utilisation de la fonction date de PHP&quot; style=&quot;float: left; margin-right: 15px;&quot; /&gt;Toujours plonger dans mes retouches sur un code source magnifiquement drôle depuis ces derniers jours. Je voudrais vous proposer aujourd’hui une nouvelle perle de &lt;strong&gt;développement PHP&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Aujourd'hui nous allons voir une implémentation hilarante de la fonction &lt;strong&gt;date()&lt;/strong&gt;.&lt;/p&gt;    &lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://fr.php.net/manual/fr/function.getdate.php&quot;&gt;&lt;img src=&quot;http://methylbro.titaxium.org/portfolio/methylbro/public/images/2009-10-23-etude-de-cas-une-perle-dans-utilisation-de-la-fonction-date-de-php.jpg&quot; alt=&quot;Étude de cas : Une perle dans l'utilisation de la fonction date de PHP&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;La problématique est la suivante : afin de construire une chaîne de caractères vous avez besoin de connaître trois informations temporelles ; l'année, le mois et le jour courant.&lt;/p&gt;
&lt;p&gt;Pour ce faire, voici ce qu'a proposé, écrit et mis en production un développeur :&lt;/p&gt;
&lt;code&gt;$today = mktime(0, 0, 0, date(&quot;m&quot;), date(&quot;d&quot;), date(&quot;Y&quot;));&lt;br /&gt;
$ladate = date(&quot;d / m / Y&quot;, $today);&lt;br /&gt;
$lemois = date(&quot;m&quot;, $today);&lt;br /&gt;
$lannee = date(&quot;Y&quot;, $today);&lt;br /&gt;
$lejour = date(&quot;d&quot;, $today);&lt;/code&gt;
&lt;p&gt;Vous comprenez le problème ? &lt;/p&gt;
&lt;p&gt;Ici l'interpréteur va calculer 8 fois la date. Sans compter bien évidement qu'utiliser la variable $today est inutile vu que la fonction date() retourne déjà la date du jour par défaut (ce que savais apparemment le développeur, puisqu'il utilise la fonction date() pour trouver la valeur de son $today) .&lt;/p&gt;
&lt;p&gt;Bien évidement, il aurait été plus pertinent d'écrire quelque chose comme cela :&lt;/p&gt;
&lt;code&gt;define('DATE_SEPARATOR', ' / ');&lt;br /&gt;
$today = getdate();&lt;br /&gt;
$lemois = $today['mon'];&lt;br /&gt;
$lannee = $today['year'];&lt;br /&gt;
$lejour = $today['mday'];&lt;br /&gt;
$ladate = $lejour.DATE_SEPARATOR.$lemois.DATE_SEPARATOR.$lannee;&lt;/code&gt;
&lt;p&gt;Un seul calcul de date, on stocke les informations dans un tableau associatif et ensuite c'est juste un jeu d'affection de valeurs.&lt;/p&gt;</description>
    
    
    
          <comments>http://methylbro.titaxium.org/post/2009/10/23/etude-de-cas-une-perle-dans-utilisation-de-la-fonction-date-de-php#comment-form</comments>
      <wfw:comment>http://methylbro.titaxium.org/post/2009/10/23/etude-de-cas-une-perle-dans-utilisation-de-la-fonction-date-de-php#comment-form</wfw:comment>
      <wfw:commentRss>http://methylbro.titaxium.org/feed/atom/comments/444</wfw:commentRss>
      </item>
    
</channel>
</rss>