<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
<channel>
  <title>Informat'Hic - L'actu Informatique vue et corrigée</title>
  <link>http://www.informathic.com/</link>
  
  <description />
  <language>fr</language>
  <pubDate>Wed, 17 Mar 2010 10:56:39 +0100</pubDate>
  <copyright>Francis Besset</copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/InformatHic" /><feedburner:info uri="informathic" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
    <title>Connexion SSH sans mot de passe</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/hGVFUk6768I/Connexion-SSH-sans-mot-de-passe</link>
    <guid isPermaLink="false">urn:md5:4d11d5353ce6ed6a6dcdb37ceaf869d4</guid>
    <pubDate>Wed, 17 Mar 2010 09:30:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>GNU/Linux</category>
        <category>connexion</category><category>mot de passe</category><category>scp</category><category>shell</category><category>ssh</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/ssh/cables-reseaux.jpg" alt="Cables réseaux" style="display:block; margin:0 auto;" title="Cables réseaux" /&gt;&lt;br /&gt;
Je vous présente dans cet article la possibilité de se connecter à une machine en SSH sans devoir préciser de mot de passe.&lt;br /&gt;
Cette fonctionnalité peut s'avérer très pratique si comme moi, vous avez par exemple besoin de réaliser des &lt;em&gt;rsync&lt;/em&gt; entre plusieurs machines ou serveurs de manière automatique.&lt;br /&gt;
&lt;br /&gt;
Ce qui va suivre &lt;strong&gt;fonctionne parfaitement pour GNU/Linux et Mac OS X&lt;/strong&gt;. Cependant, je ne sais pas si c'est possible depuis une station Windows avec un client SSH tel que &lt;a href="http://putty.very.rulez.org/" hreflang="en"&gt;Putty&lt;/a&gt; ou &lt;a href="http://kitty.9bis.com/" hreflang="en"&gt;Kitty&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Pour la mise en situation, nous avons notre &lt;strong&gt;machine A&lt;/strong&gt; &lt;em&gt;monMacCheri&lt;/em&gt; et notre &lt;strong&gt;machine B&lt;/strong&gt; &lt;em&gt;www.informathic.com&lt;/em&gt;.&lt;br /&gt;
Nous souhaitons nous connecter depuis la machine A sur la machine B en SSH, sans préciser de mot de passe.&lt;br /&gt;
&lt;br /&gt;
Pour information, le tout fonctionne grâce à l'échange entre clé publique et clé privée.&lt;br /&gt;
Commençons par ouvrir notre outil de ligne de commande (Terminal pour Mac OS X — Applications &amp;gt; Utilitaires &amp;gt; Terminal).&lt;br /&gt;
On crée une clé publique depuis la machine A :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="bash"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;ssh-keygen&lt;/span&gt; &lt;span style="color: #660033;"&gt;-t&lt;/span&gt; rsa &lt;span style="color: #660033;"&gt;-b&lt;/span&gt; &lt;span style="color: #000000;"&gt;1024&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
L'utilitaire vous demandera où vous souhaitez enregistrer la clé. Personnellement, je laisse le chemin par défaut. Cela me permet de garder la même clé pour plusieurs machines.&lt;br /&gt;
Il vous demandera ensuite de rentrer une &lt;em&gt;passphrase&lt;/em&gt; puis de la ré-écrire.&lt;br /&gt;
&lt;br /&gt;
Nous allons devoir envoyer la clé générée vers la machine B. Pour cela, vous pouvez utiliser n'importe quel moyen. Pour ma part, j'utilise &lt;em&gt;scp&lt;/em&gt; :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="bash"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;scp&lt;/span&gt; ~&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;.ssh&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;id_rsa.pub root&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;www.informathic.com:&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Si vous avez utilisé la commande &lt;em&gt;scp&lt;/em&gt; vous devriez vous retrouver avec un fichier &lt;em&gt;id_rsa.pub&lt;/em&gt; dans le répertoire home de l'utilisateur que vous avez précisé dans la commande précédente. Si c'est le cas alors on peut continuer&amp;nbsp;! Sinon, bah, tapez-vous la tête contre un mur, ça peut peut-être marcher.&lt;br /&gt;
Maintenant que le fichier est présent sur la machine B, nous allons travailler avec cette clé toute fraîche sur la machine B.&lt;br /&gt;
&lt;br /&gt;
Nous allons &lt;strong&gt;copier le contenu du fichier &lt;em&gt;id_rsa.pub&lt;/em&gt; dans le fichier &lt;em&gt;authorized_keys&lt;/em&gt;&lt;/strong&gt;, qui doit se trouver dans le dossier &lt;em&gt;~/.ssh/&lt;/em&gt; de la machine B :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="bash"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;cat&lt;/span&gt; ~&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;id_rsa.pub &lt;span style="color: #000000; font-weight: bold;"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;.ssh&lt;span style="color: #000000; font-weight: bold;"&gt;/&lt;/span&gt;authorized_keys&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Si jamais le fichier &lt;em&gt;authorized_keys&lt;/em&gt; n'existe pas au moment de lancer la commande précédente, pas de soucis, le fichier sera créé automatiquement.&lt;br /&gt;
Maintenant, vous pouvez tentez la commande suivante depuis la machine A :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="bash"&gt;&lt;span style="color: #c20cb9; font-weight: bold;"&gt;ssh&lt;/span&gt; root&lt;span style="color: #000000; font-weight: bold;"&gt;@&lt;/span&gt;www.informathic.com&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Si vous avez correctement suivi ce qui a été écrit, vous devriez être automatiquement connecté sans devoir préciser de mot de passe.&lt;br /&gt;
Si jamais vous souhaitez désactiver ce type de connexion, vous devrez éditer le fichier &lt;em&gt;authorized_keys&lt;/em&gt; et supprimer la ou les lignes correspondant aux machines que vous souhaitez bloquer.&lt;br /&gt;
&lt;br /&gt;
Je rajouterai une dernière chose. Un utilisateur sur la machine B n'ayant pas de mot de passe ne pourra &lt;strong&gt;jamais se connecter&lt;/strong&gt; en utilisant la méthode classique (mot de passe requis). Cependant, en utilisant cette technique d'échange de clé, &lt;strong&gt;notre utilisateur pourra se connecter&lt;/strong&gt; même s'il n'a pas de mot de passe. Il me semble important de souligner ce point.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/hGVFUk6768I" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/03/17/Connexion-SSH-sans-mot-de-passe#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/03/17/Connexion-SSH-sans-mot-de-passe#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/114</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/03/17/Connexion-SSH-sans-mot-de-passe</feedburner:origLink></item>
    
  <item>
    <title>Revue de presse #6</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/I4bro1WpABc/Revue-de-presse-6</link>
    <guid isPermaLink="false">urn:md5:4eef548829cb33122611be248f452181</guid>
    <pubDate>Tue, 16 Mar 2010 11:05:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Revue de presse</category>
        <category>revue de presse</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/metro-boulot-dodo.jpg" alt="Métro, boulot, dodo" style="display:block; margin:0 auto;" title="Métro, boulot, dodo" /&gt;&lt;br /&gt;
Entre la recherche d'un appart' à Paris et le boulot, j'avoue qu'il est difficile pour moi de maintenir le blog à jour.&lt;br /&gt;
Cependant, je ne rechigne pas à faire une revue de presse. Pour aujourd'hui je vous propose une petite sélection de billets qui ont attiré mon intention et / ou ma curiosité.&lt;br /&gt;
&lt;br /&gt;
C'est parti mon kiki (ça se dit encore&amp;nbsp;? Pas sûr mais bon...)&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Du Google&amp;nbsp;:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.keeg.fr/2010/03/09/google-adwords-influe-sur-le-referencement-naturel/" hreflang="fr"&gt;Keeg&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Est-ce que Google AdWords influe sur le référencement&amp;nbsp;? C'est une des questions que je me suis souvent posé et j'avoue avoir trouvé un bon début de réponse.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://hightech.nouvelobs.com/actualites/20100313.OBS9717/google_devrait_fermer_son_service_en_chinois.html" hreflang="fr"&gt;Nouvelobs&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Suite à une non entente entre Google et le gouvernement chinois, Google pourrait bien prendre la décision de partir du territoire chinois.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.zonebourse.com/barons-bourse/Larry-Page-99/actualites/Larry-Page-devient-fournisseur-officiel-de-Microsoft-Office--13340238/" hreflang="fr"&gt;Zonebourse&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Larry Page devient fournisseur officiel de... Microsoft Office&amp;nbsp;! Ah celle-là fallait l'inventer. Mais en réalité ça ne va pas totalement dans le sens de Microsoft.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.20minutes.fr/article/391092/High-Tech-Le-co-inventeur-du-XML-rejoint-Google-et-attaque-Apple.php" hreflang="fr"&gt;20minutes&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Il s'agit là de Tim Bray qui commence à être agacé par le système d'Apple avec l'iPhone. Le meilleur combat est d'affronter Apple en rejoignant les rangs de Google pour développer Androïd.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Tout pleins de Best Friends&amp;nbsp;:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.fredzone.org/facegroupe-les-groupes-les-plus-delirants-de-facebook" hreflang="fr"&gt;Fredzone&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Vous n'avez peut-être pas entendu parlé de Facegroupe. Il s'agit d'un site répertoriant les groupes délirants de Facebook.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogs.lexpress.fr/tic-et-net/2010/03/facebook-recrute-un-responsabl.php?xtor=RSS-188" hreflang="fr"&gt;TIC et NET&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Facebook recherche un responsable vie privée en France. Il était temps. Par ailleurs, ça m'a rappelé qu'il faut que je me désinscrive de ce site.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Du tout au rien&amp;nbsp;:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogmotion.fr/internet/aide-memoire-5187" hreflang="fr"&gt;Blogmotion&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Des aides mémoires pour les développeurs et administrateurs. Il y a tellement de choses à apprendre dans le monde Informat'Hic qu'un aide mémoire n'est jamais de trop quand on a un doute. Vaut mieux ça que de faire une énorme gaffe&amp;nbsp;!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.bestofmicro.com/actualite/27562-vente-ipad.html" hreflang="fr"&gt;Tom's Guide&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Très grand succès pour Apple avec la pré-commande de l'&lt;a href="http://www.informathic.com/tag/ipad" hreflang="fr"&gt;iPad&lt;/a&gt;. Déjà 120 000 iPad vendu en 24h&amp;nbsp;! Qui dit mieux&amp;nbsp;?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.marketingonthebeach.com/ecommerce-5-erreurs-seo-classiques-a-eviter/" hreflang="fr"&gt;Marketing On The Beach&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Un p'tit peu de SEO ça ne fait jamais de mal. Voici d'ailleurs 5 erreurs à ne pas commettre en E-commerce.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
Sinon je pense bientôt mettre en place &lt;strong&gt;un formulaire de contact sur le blog&lt;/strong&gt;. Il pourra vous servir à &lt;del&gt;m'insulter&lt;/del&gt; &lt;strong&gt;me faire découvrir&lt;/strong&gt; de nouveaux blogs, &lt;strong&gt;me signaler&lt;/strong&gt; qu'un billet est super intéressant et qu'il mériterait d'être mis en avant dans une revue de presse, ou bien même à &lt;strong&gt;m'encourager&lt;/strong&gt; à continuer (on peut toujours rêver).&lt;br /&gt;
Qu'en pensez-vous&amp;nbsp;?&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/I4bro1WpABc" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/03/16/Revue-de-presse-6#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/03/16/Revue-de-presse-6#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/113</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/03/16/Revue-de-presse-6</feedburner:origLink></item>
    
  <item>
    <title>Résultat du concours pour gagner 3 noms de domaine</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/sIXgo0ozFAQ/Resultat-concours-gagnez-3-noms-de-domaine</link>
    <guid isPermaLink="false">urn:md5:05c01f0f63113c34d0db3543b44bf289</guid>
    <pubDate>Thu, 11 Mar 2010 20:13:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Le blog</category>
        <category>concours</category><category>resultat</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/ndd-gandi.jpg" alt="Nom de domaine Gandi" style="display:block; margin:0 auto;" title="Nom de domaine Gandi" /&gt;&lt;br /&gt;
Le tirage au sort a été effectué par le monstre &lt;a href="http://www.random.org" hreflang="en"&gt;Random.org&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Les 3 gagnants sont les commentaires &lt;a href="http://www.informathic.com/post/2010/03/07/Gagnez-3-noms-de-domaine-%21#c94" hreflang="fr"&gt;9&lt;/a&gt; (Nark0z), &lt;a href="http://www.informathic.com/post/2010/03/07/Gagnez-3-noms-de-domaine-%21#c95" hreflang="fr"&gt;10&lt;/a&gt; (Harcher81) et &lt;a href="http://www.informathic.com/post/2010/03/07/Gagnez-3-noms-de-domaine-%21#c99" hreflang="fr"&gt;14&lt;/a&gt; (ding7).&lt;br /&gt;
Les gagnants vont donc recevoir un mail avec le code à fournir sur la page de commande de &lt;a href="https://www.gandi.net/" hreflang="fr"&gt;Gandi&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Voici la vidéo du tirage au sort :&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="560" height="340"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kKMm4KCr7bY&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/kKMm4KCr7bY&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
Je remercie toutes les personnes ayants participées au concours.&lt;br /&gt;
Je tiens aussi à faire remarquer que le &lt;a href="http://www.informathic.com/post/2010/03/07/Gagnez-3-noms-de-domaine-%21#c99" hreflang="fr"&gt;commentaire numéro 14&lt;/a&gt; m'aura bien fait rire&amp;nbsp;! J'attend une vidéo. :D&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/sIXgo0ozFAQ" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/03/11/Resultat-concours-gagnez-3-noms-de-domaine#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/03/11/Resultat-concours-gagnez-3-noms-de-domaine#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/112</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/03/11/Resultat-concours-gagnez-3-noms-de-domaine</feedburner:origLink></item>
    
  <item>
    <title>Paris 26 Gigapixels : le plus grand panorama du monde</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/LSFVedECV7s/Paris-26-Gigapixels-le-plus-grand-panorama-du-monde</link>
    <guid isPermaLink="false">urn:md5:b371081d7e35fded637cb5eff744de87</guid>
    <pubDate>Thu, 11 Mar 2010 16:36:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Internet</category>
        <category>gigapixels</category><category>panorama</category><category>paris</category><category>paris 26 gigapixels</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/paris-26-gigapixels.jpg" alt="Paris 26 Gigapixels" style="display:block; margin:0 auto;" title="Paris 26 Gigapixels" /&gt;&lt;br /&gt;
C'est avec fierté — car j'ai travaillé sur le projet en tant que WebDeveloper pour la société &lt;a href="http://www.autopano.net/fr" hreflang="fr"&gt;Kolor&lt;/a&gt; — que je vous présente &lt;a href="http://www.paris-26-gigapixels.com/"&gt;Paris 26 Gigapixels&lt;/a&gt; !&lt;br /&gt;
&lt;br /&gt;
Il s'agit actuellement de &lt;strong&gt;la plus grosse image interactive du monde&lt;/strong&gt;. Ce panorama réunit en une seule image &lt;strong&gt;2346 photos assemblées&lt;/strong&gt; par le logiciel &lt;a href="http://www.autopano.net/fr" hreflang="fr"&gt;Autopano&lt;/a&gt; édité par la société &lt;strong&gt;Kolor&lt;/strong&gt;. Plus précisément, la vraie taille de l'image est de &lt;strong&gt;26,7 Gigapixels&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Pour entrer dans les détails, il aura fallu seulement 3 heures et 14 minutes pour assembler les images sur un serveur Intel Server System SR2600UR comprenant 2 processeurs physiques Intel Xeon 5500 series prêté par Intel pour l'occasion.&lt;br /&gt;
Le serveur était équipé de 6 disques SSD en RAID 0 fournissant une capacité de 1 Tera octets de données.&lt;br /&gt;
La machine comportait 24 Gigas de RAM !&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, le plus long du projet n'aura pas été de réaliser l'animation ni le site, mais le shooting. Il aura fallu &lt;strong&gt;attendre 16 mois&lt;/strong&gt; pour que le beau temps pointe son nez sur Paris&amp;nbsp;!
&lt;br /&gt;
Bien sûr, ce projet n'aurait jamais pu voir le jour sans la collaboration de &lt;a href="http://www.autopano.net/fr" hreflang="fr"&gt;Kolor&lt;/a&gt;, &lt;a href="http://www.arnaudfrichphoto.com/" hreflang="fr"&gt;Arnaud Frich&lt;/a&gt; (photographe), &lt;a href="http://www.extraordinaire-urbain.com/" hreflang="fr"&gt;Martin Loyer&lt;/a&gt; (qui a trouvé la prise de vue), SFR, Intel, &lt;a href="http://www.ipsyn.net" hreflang="fr"&gt;IP Syn&lt;/a&gt; (déploiement réseau).&lt;br /&gt;
&lt;br /&gt;
Je suis très heureux d'avoir participé à ce projet. De plus, ce n'est pas pour me vanter, mais qu'est-ce qu'elle est belle cette animation.&lt;br /&gt;
&lt;br /&gt;
Voici quelques endroits à voir dans l'image :&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.paris-26-gigapixels.com/?x=-64.47340054565775&amp;amp;y=1.7354561575824616&amp;amp;z=0.5"&gt;http://www.paris-26-gigapixels.com/?x=-64.47340054565775&amp;amp;y=1.7354561575824616&amp;amp;z=0.5&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.paris-26-gigapixels.com/?x=58.74084222006616&amp;amp;y=20.88111486852054&amp;amp;z=0.8904748747965536"&gt;http://www.paris-26-gigapixels.com/?x=58.74084222006616&amp;amp;y=20.88111486852054&amp;amp;z=0.8904748747965536&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.paris-26-gigapixels.com/?x=-15.78466859761327&amp;amp;y=25.70403031124999&amp;amp;z=2.773718971782661"&gt;http://www.paris-26-gigapixels.com/?x=-15.78466859761327&amp;amp;y=25.70403031124999&amp;amp;z=2.773718971782661&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.paris-26-gigapixels.com/?x=-95.81009266239498&amp;amp;y=-3.2353064937378027&amp;amp;z=0.5"&gt;http://www.paris-26-gigapixels.com/?x=-95.81009266239498&amp;amp;y=-3.2353064937378027&amp;amp;z=0.5&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si vous découvrez d'autres endroits insolites ou à voir, faîtes-les partager en commentaires. Et je ne sais pas pourquoi, mais je suis sûr qu'il y a des choses à voir :P&lt;br /&gt;
&lt;br /&gt;
Si ce panorama vous plait, il en existe d'autres&amp;nbsp;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.harlem-13-gigapixels.com/"&gt;Harlem 13 Gigapixels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.yosemite-17-gigapixels.com/"&gt;Yosemite 17 Gigapixels&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.dresden-26-gigapixels.com/"&gt;Desden 26 Gigapixels&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/LSFVedECV7s" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/03/10/Paris-26-Gigapixels-le-plus-grand-panorama-du-monde#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/03/10/Paris-26-Gigapixels-le-plus-grand-panorama-du-monde#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/111</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/03/10/Paris-26-Gigapixels-le-plus-grand-panorama-du-monde</feedburner:origLink></item>
    
  <item>
    <title>Gagnez 3 noms de domaine !</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/-JJHErydTJQ/Gagnez-3-noms-de-domaine-%21</link>
    <guid isPermaLink="false">urn:md5:6e731de77e06047a0032dcf372786705</guid>
    <pubDate>Sun, 07 Mar 2010 15:53:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Le blog</category>
        <category>concours</category><category>gandi</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/ndd-gandi.jpg" alt="Nom de domaine Gandi" style="display:block; margin:0 auto;" title="10 ans Gandi" /&gt;&lt;br /&gt;
Pour le 100ème billet sur ce blog, j'ai le plaisir de vous faire &lt;strong&gt;gagner 3 noms de domaine&lt;/strong&gt; !&lt;br /&gt;
C'est aussi grâce à &lt;a href="http://www.gandi.net/" hreflang="fr"&gt;Gandi&lt;/a&gt;, car il faut savoir que &lt;a href="https://dix.gandi.net/" hreflang="fr"&gt;Gandi fête ses 10 ans&lt;/a&gt;. Ils offrent pour l'occasion 55 000 noms de domaine.&lt;br /&gt;
&lt;br /&gt;
J'ai réussi pour vous à avoir &lt;strong&gt;3 bons que je vous propose de gagner grâce à cet article&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;Pour ça, rien de plus simple.&lt;br /&gt;
Il vous suffit d'écrire un commentaire en bas de l'article en précisant une adresse e-mail valide.&lt;br /&gt;
&lt;br /&gt;
La seule règle est d'écrire un seul commentaire par personne sinon c'est élimination directe !&lt;br /&gt;
&lt;strong&gt;Le jeu prendra fin ce mercredi 10 mars 2010 à 19h00.&lt;/strong&gt; Après ça je ferais un tirage au sort où je sélectionnerais 3 commentaires au hasard grâce au site &lt;a href="http://www.random.org/" hreflang="en"&gt;Random.org&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
J'ajoute une dernière information. Les bons sont valides jusqu'au 31 mars 2010.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Bonne chance à tous.&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/-JJHErydTJQ" height="1" width="1"/&gt;</description>
    
    
    
      <feedburner:origLink>http://www.informathic.com/post/2010/03/07/Gagnez-3-noms-de-domaine-%21</feedburner:origLink></item>
    
  <item>
    <title>Doit-on inscrire son blog sur Paperblog ?</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/SVr0gaHhDOQ/Doit-on-inscrire-son-blog-sur-Paperblog</link>
    <guid isPermaLink="false">urn:md5:bf2dce3e7d67f0441dc6778750f7f7dd</guid>
    <pubDate>Sun, 07 Mar 2010 10:48:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Services</category>
        <category>paperblog</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/frederic-mitterrand.jpg" alt="Frédéric Mitterrand" style="display:block; margin:0 auto;" title="Frédéric Mitterrand" /&gt;&lt;br /&gt;
Ayant inscrit &lt;a href="http://www.informathic.com/" hreflang="fr"&gt;Informat'Hic&lt;/a&gt; sur Paperblog, je me suis fait mon avis sur ce service. Cet article va permettre d'exposer mes idées avec mes arguments.&lt;br /&gt;
&lt;br /&gt;
J'aurais peut-être tort sur certains points, je vous invite alors à me corriger.&lt;/p&gt;    &lt;h4&gt;Paperblog est-il un voleur de contenu ?&lt;br /&gt;&lt;/h4&gt;

&lt;p&gt;Ma réponse est &lt;strong&gt;oui et pas seulement&lt;/strong&gt;&amp;nbsp;! Même si le blogueur est conscient que ses contenus seront présents sur Paperblog, il ne saura peut-être pas qu'il perdra bon nombre de visiteurs.&lt;br /&gt;&lt;/p&gt;


&lt;h4&gt;Comment votre blog perdra-t-il des visiteurs ?&lt;br /&gt;&lt;/h4&gt;

&lt;p&gt;Lorsque votre supposé visiteur tapera sa recherche dans Google, il y a de très grande chance pour que Paperblog se retrouve en meilleure position que votre blog. Voici un exemple sur la recherche &lt;a href="http://www.google.com/search?hl=fr&amp;amp;client=safari&amp;amp;rls=en&amp;amp;q=symfony+dans+un+cluster&amp;amp;btnG=Rechercher&amp;amp;lr=&amp;amp;aq=f&amp;amp;oq=" hreflang="fr"&gt;symfony dans un cluster&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Pourquoi ?&lt;/strong&gt; Tout simplement parce que Google se rend compte que Paperblog est une grosse plateforme qui traite de nombreux sujets. Mais Google ne saura pas forcément que Paperblog n'est pas le réel rédacteur des contenus.&lt;br /&gt;
&lt;strong&gt;Paperblog fait son trafic et sa renommé sur votre dos !&lt;/strong&gt; Conséquence, votre visiteur n'ira jamais voir votre blog. C'est triste mais c'est ainsi.&lt;br /&gt;
&lt;br /&gt;
Pour ma part, j'ai essayé d'optimiser mes articles, afin de récupérer les lecteurs sur Paperblog en plaçant des liens dans les articles vers mon blog mais rien à faire — je récupère quelques visiteurs mais rien de grandiose. J'ai même eu plusieurs de mes articles sélectionnés par Paperblog mais rien n'y fait.&lt;br /&gt;&lt;/p&gt;


&lt;h4&gt;Votre blog est-il vu comme du &lt;em&gt;Duplicate Content&lt;/em&gt; ?&lt;br /&gt;&lt;/h4&gt;

&lt;p&gt;Je ne peux pas être catégorique sur ce sujet. En tout cas que pensera Google s'il voit deux fois le même contenu sur deux sites différents ?&lt;br /&gt;
Pour ma part je me suis fait ma p'tite idée. Si Google place Paperblog devant votre blog dans les recherches, c'est sûrement qu'il c'est fait sa p'tite idée lui aussi.&lt;br /&gt;
&lt;br /&gt;
Pour ma part, Paperblog reste un traquenard. C'est d'ailleurs pour les raisons évoqués ci-dessus que j'ai décidé de me désinscrire de Paperblog.&lt;br /&gt;&lt;/p&gt;


&lt;h4&gt;Comment se désinscrire de Paperblog ?&lt;br /&gt;&lt;/h4&gt;

&lt;p&gt;C'est &lt;strong&gt;LA&lt;/strong&gt; question de cette plateforme. Pour s'inscrire pas de problème. Mais quand il s'agit de se désinscrire il n'y a plus rien !&lt;br /&gt;
&lt;br /&gt;
Je les ai contacté par mail hier soir en demandant la suppression de mon compte ainsi que la totalitée des articles de mon blog de leurs bases de données. Bien sûr aujourd'hui on est dimanche, je reste donc patient pour l'exécution de ma demande.&lt;br /&gt;
J'espère simplement que l'apparition de cet article accélère les choses.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/SVr0gaHhDOQ" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/03/07/Doit-on-inscrire-son-blog-sur-Paperblog#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/03/07/Doit-on-inscrire-son-blog-sur-Paperblog#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/109</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/03/07/Doit-on-inscrire-son-blog-sur-Paperblog</feedburner:origLink></item>
    
  <item>
    <title>Ah Paris !</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/ihvgCRB9LRI/Ah-Paris</link>
    <guid isPermaLink="false">urn:md5:3066cf254e9bfa2b939e05b93ae29684</guid>
    <pubDate>Sat, 06 Mar 2010 10:26:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>appartement</category><category>colocation</category><category>paris</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-mars/paris-louvre.jpg" alt="Le musée du Louvre" style="display:block; margin:0 auto;" title="Le musée du Louvre" /&gt;&lt;br /&gt;
Eh bien voilà, si je suis absent depuis un p'tit moment sur le blog c'est que je prépare &lt;strong&gt;ma venue à Paris&lt;/strong&gt;.&lt;br /&gt;
Je viens d'y trouver un nouveau travail qui va énormément me plaire !&lt;br /&gt;
&lt;br /&gt;
A cette occasion, je recherche un appartement ou une colocation sur ou aux alentours de Clichy (8ème, 9ème, 10ème, 17ème, 18ème, 19ème, Asnières-sur-Seine, Levallois-Perret, Neuilly-sur-Seine, Puteaux, etc).&lt;br /&gt;
Merci de me laisse un p'tit commentaire (avec une adresse e-mail valide), si vous pouvez m'aider dans mes recherches.&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, je vais arriver sur le Paris le 20 - 21 mars, donc autant vous dire que c'est tout bientôt&amp;nbsp;!&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/ihvgCRB9LRI" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/03/06/Ah-Paris#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/03/06/Ah-Paris#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/108</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/03/06/Ah-Paris</feedburner:origLink></item>
    
  <item>
    <title>Le vendredi c'est permis ! #2</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/krHq7get_O0/Daft-Punk-harder-better-faster-stronger</link>
    <guid isPermaLink="false">urn:md5:ec6ab04e761cc841dc73ff57c9002e7e</guid>
    <pubDate>Fri, 26 Feb 2010 20:23:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Le vendredi c'est permis !</category>
        <category>daft punk</category><category>video</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/daft-punk.jpg" alt="Daft Punk" style="display:block; margin:0 auto;" title="Daft Punk" /&gt;&lt;br /&gt;
Voici la seconde édition de &lt;a href="http://www.informathic.com/category/Dossiers/Le-vendredi-c-est-permis-%21" hreflang="fr"&gt;Le vendredi c'est permis !&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Comme pour la &lt;a href="http://www.informathic.com/post/2010/02/12/batterie-interactive-visite-virtuelle" hreflang="fr"&gt;dernière et première édition&lt;/a&gt;, nous allons rester sur le thème de la musique.&lt;br /&gt;
Je pense que vous connaissez quelques vidéos de la fameuse chanson &lt;em&gt;Harder, better, faster, stronger&lt;/em&gt; de Daft Punk. Je vous propose dans cette article un regroupement de vidéos, ainsi qu'une petite application, en flash, pour à votre tour faire joujou avec les différents mots de la chanson&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
On commence tout d'abord cette édition avec deux mains qui se préparent à enchaîner les mots !&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/K2cYWfq--Nw&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/K2cYWfq--Nw&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
On continu sur notre lancé avec deux corps de filles qui se mettent à leur tour au défi :&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/bl6RJyZdBSU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/bl6RJyZdBSU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
C'est au tour, encore une fois, de deux jeunes demoiselles qui ne sont plus trop dans leur état. Ca donne quelque chose d'assez drôle à voir.&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ppvKuETxE6k&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ppvKuETxE6k&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
Quand on s'applique ça donne :&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/TTCeD1nqxZ8&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/TTCeD1nqxZ8&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
Pour les filles, voici des hommes qui s'activent :&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/cYDmIn6Gp8I&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/cYDmIn6Gp8I&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
Et pour finir l'article en beauté, je vous propose à votre tour, de vous amusez avec les mots de cette chanson. Pour cela rendez-vous sur &lt;a href="http://www.dothedaft.com/idaft/" hreflang="en"&gt;Do The Daft&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/krHq7get_O0" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/26/Daft-Punk-harder-better-faster-stronger#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/26/Daft-Punk-harder-better-faster-stronger#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/107</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/26/Daft-Punk-harder-better-faster-stronger</feedburner:origLink></item>
    
  <item>
    <title>Google condamné pour atteinte à la vie privée</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/VCFXA7nRlRg/Google-atteinte-a-la-vie-privee</link>
    <guid isPermaLink="false">urn:md5:5c7c5eba2f253944962423a0ad411be9</guid>
    <pubDate>Fri, 26 Feb 2010 09:57:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Internet</category>
        <category>google</category><category>google videos</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/internet/google-network.jpg" alt="Google Network" style="display:block; margin:0 auto;" title="Google Network" /&gt;&lt;br /&gt;
En lisant ce titre, on pourrait croire que Google vient de se prendre une claque à cause de son service Google Street View, ou bien même à cause de son moteur de recherche. Mais &lt;em&gt;que nenni&lt;/em&gt; !&lt;br /&gt;
&lt;br /&gt;
C'est l'Italie qui a poursuivi Google à la suite d'une vidéo posté sur le service Google Vidéo. Résultat, &lt;strong&gt;trois employés condamnés à six mois de prison avec sursis pour &lt;em&gt;atteinte à la vie privée&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
L'histoire est partie d'une vidéo envoyée sur Google Vidéo. Elle montrait des élèves d'une école de Turin en train de brutaliser l'un de leurs camarades.&lt;br /&gt;
Averti par la police Italienne, Google a retiré la vidéo quelques heures. De plus, Google ne s'est pas arrêté là car ils ont aidé la police locale à identifier la personne responsable — qui a été condamné à 10 mois de travaux d’intérêt général tout comme les autres élèves impliqués.&lt;br /&gt;
&lt;br /&gt;
On pourrait croire que tout aurait pu s'arrêter là, mais pas du tout.&lt;br /&gt;
Le procureur de Milan a décidé d'inculper 4 employés de chez Google qui sont David Drummond, Arvind Desikan, Peter Fleischer et George Reyes. Les accusations portées contre eux&amp;nbsp;: &lt;em&gt;diffamation et incapacité à se conformer au code italien concernant la vie privée&lt;/em&gt;.&lt;br /&gt;
Pourtant les 4 employés n'avaient rien à voir dans cette histoire. Aucun lien avec les personnes impliquées à cette vidéo, de plus, ils ne connaissaient pas l'existence de cette vidéo avant d'être avertis par la police Italienne.&lt;br /&gt;
&lt;br /&gt;
Un magistart Italien a jugé coupable 3 des 4 employés de chez Google — David Drummond, Peter Fleischer et Reyes George — pour les faits qui leur étaient reprochés. Ils ont écopé de 6 mois de prison avec sursis !&lt;br /&gt;
&lt;br /&gt;
En substance, cette condamnation signifie que les employés de toute plateforme hébergeant des données, sont pénalement responsables du contenu envoyé par les utilisateurs.&lt;br /&gt;
Grosso modo, si Wikipedia contient des informations diffamatoires ou fausses, ils sont responsables. Tout comme pourraient l'être DailyMotion, Vimeo, etc.&lt;br /&gt;
&lt;br /&gt;
Par ailleurs, suite à cette décision, Google s'est déclaré &lt;em&gt;extrêmement préoccupé par cette décision, qui représente une attaque contre le principe de la liberté d'expression (...) Si nous sommes responsables pour chaque autorisation de publication, chaque photo, chaque vidéo, chaque mise en ligne, alors le Net, tel que nous le connaissons, cessera d'exister&lt;/em&gt;. Ils ont également fait un rapprochement avec le service postier&amp;nbsp;: &lt;em&gt;ces poursuites reviennent à poursuivre les employés des services postaux pour des lettres haineuses envoyées par la Poste&lt;/em&gt;.&lt;br /&gt;
Fort heureusement, Google a également déclaré vouloir faire appel de cette décision.&lt;br /&gt;
&lt;br /&gt;
Personnellement, ce genre de décision de justice me fait froid dans le dos !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(&lt;a href="http://twitter.com/Keegfr/status/9635452993" hreflang="fr"&gt;Keeg&lt;/a&gt;, &lt;a href="http://thenextweb.com/fr/2010/02/25/serieuses-menaces-a-l-encontre-du-web-en-italie/" hreflang="fr"&gt;The Next Web France&lt;/a&gt;, &lt;a href="http://www.leparisien.fr/faits-divers/italie-google-condamne-pour-atteinte-a-la-vie-privee-24-02-2010-827707.php" hreflang="fr"&gt;Le Parisien&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/VCFXA7nRlRg" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/26/Google-atteinte-a-la-vie-privee#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/26/Google-atteinte-a-la-vie-privee#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/106</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/26/Google-atteinte-a-la-vie-privee</feedburner:origLink></item>
    
  <item>
    <title>Déployer une application symfony dans un cluster</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/va0Ds9nLZtg/deployer-symfony-dans-un-cluster</link>
    <guid isPermaLink="false">urn:md5:aafbd15933d6c5eca1e7a35b5f11ea44</guid>
    <pubDate>Wed, 24 Feb 2010 11:50:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Symfony</category>
        <category>cluster</category><category>doctrine</category><category>symfony</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/symfony/cluster/baies-cluster.jpg" alt="Baies Cluster" style="display:block; margin:0 auto;" title="Baies Cluster" /&gt;&lt;br /&gt;
Lors du &lt;strong&gt;Symfony Live 2010&lt;/strong&gt;, j'ai pu assister à la conférence de &lt;a href="http://kriswallsmith.net/" hreflang="en"&gt;Kris Wallsmith&lt;/a&gt; qui nous a présenté la possibilité de &lt;strong&gt;déployer une application symfony au sein d'un cluster&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
De plus, à la suite du &lt;a href="http://www.informathic.com/post/2010/02/18/Symfony-Reloaded-2.0#c71" hreflang="fr"&gt;commentaire de Quiche&lt;/a&gt;, je me suis engagé à faire cet article.&lt;br /&gt;
&lt;br /&gt;
Il est vrai qu'à première vu ce n'est pas chose aisé, et pourtant. Je vais tenter de vous présenter les différents mécanismes mis en place pour en arriver à notre fameux déploiement sur cluster.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Tout d'abord lors du commencement de sa présentation, Kris nous a montré quelques lignes de son CV, puis il est en est venu à présenter &lt;a href="http://nebul.us/" hreflang="en"&gt;Nebul.us&lt;/a&gt; qui est en quelque sorte le cousin de Facebook. L'application est déployée sur plusieurs serveurs web, plusieurs serveurs SQL et des serveurs de fichiers pour les uploads directement mis en place par le service &lt;a href="http://aws.amazon.com/s3/" hreflang="en"&gt;S3 d'Amazon&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Voici à quoi va ressembler grosso modo notre cluster :&lt;br /&gt;
&lt;br /&gt;
&lt;img src="http://www.informathic.com/public/10-fevrier/symfony/cluster/cluster.png" alt="Cluster" style="display:block; margin:0 auto;" title="Cluster" /&gt;&lt;br /&gt;
&lt;br /&gt;
Nous avons là un répartiteur de charge. C'est sur lui que toutes les requêtes HTTP vont arriver. Son rôle est de connaître l'état de chaque serveur Web afin de savoir quel est le serveur le moins chargé pour lui transmettre les requêtes.&lt;br /&gt;
Nous avons ensuite les serveurs web qui détiennent notre application symfony. Ils interrogeront nos serveurs SQL.&lt;br /&gt;
Par ailleurs, remarquez qu'il n'y a qu'un maître et des esclaves. On accèdera au maître uniquement pour faire des requêtes de modifications sur la base de données tel que &lt;em&gt;INSERT&lt;/em&gt;, &lt;em&gt;UPDATE&lt;/em&gt; et &lt;em&gt;DELETE&lt;/em&gt;. Les esclaves se chargeront de demander au maître quelles ont été les requêtes SQL qui ont été effectuées, afin que ceux-ci soient à jour, ceci se nomme &lt;strong&gt;la réplication&lt;/strong&gt;. Les esclaves serviront uniquement à la lecture avec notamment des requêtes de type &lt;em&gt;SELECT&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
La configuration ci-dessus permet d'avoir de très bonnes performances en lecture sur la base de données.&lt;br /&gt;
&lt;br /&gt;
Maintenant que le décor est planté, nous allons nous attaquer à la configuration de notre application symfony.&lt;br /&gt;
Nous allons commencer par configurer le fichier &lt;em&gt;databases.yml&lt;/em&gt; :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="cfdg"&gt;all:&lt;br /&gt;
&amp;nbsp; master:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; class: sfDoctrineDatabase&lt;br /&gt;
&amp;nbsp; &amp;nbsp; param:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; dsn: mysql:dbname=informathic;host=master.informathic.com&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; username: informathic&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; password: changeThis&lt;br /&gt;
&amp;nbsp; sql1:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; class: sfDoctrineDatabase&lt;br /&gt;
&amp;nbsp; &amp;nbsp; param:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; dsn: mysql:dbname=informathic;host=sql1.informathic.com&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; username: informathic&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; password: changeThis&lt;br /&gt;
&amp;nbsp; sql2:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; class: sfDoctrineDatabase&lt;br /&gt;
&amp;nbsp; &amp;nbsp; param:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; dsn: mysql:dbname=informathic;host=sql2.informathic.com&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; username: informathic&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; password: changeThis&lt;br /&gt;
&amp;nbsp; sql3:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; class: sfDoctrineDatabase&lt;br /&gt;
&amp;nbsp; &amp;nbsp; param:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; dsn: mysql:dbname=informathic;host=sql3.informathic.com&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; username: informathic&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; password: changeThis&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Dans ce fichier de configuration, nous avons notre serveur maître qui nous servira pour l'écriture et nos serveurs esclaves pour la lecture.&lt;br /&gt;
&lt;br /&gt;
Nous partons désormais dans la modification de la classe &lt;em&gt;ProjectConfiguration&lt;/em&gt;. A noter qu'il faut garder la méthode &lt;em&gt;setup()&lt;/em&gt; :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; ProjectConfiguration &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; sfProjectConfiguration&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; protected&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$writeConnection&lt;/span&gt;&amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$readConnection&lt;/span&gt; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; getWriteConnection&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;setupConnections&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; getReadConnection&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;readConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;setupConnections&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;readConnection&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; protected &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; setupConnections&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$manager&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; Doctrine_Manager&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInstance&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$slaves&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #990000;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;foreach&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$manager&lt;/span&gt; &lt;span style="color: #b1b100;"&gt;as&lt;/span&gt; &lt;span style="color: #000088;"&gt;$name&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'master'&lt;/span&gt; &lt;span style="color: #339933;"&gt;==&lt;/span&gt; &lt;span style="color: #000088;"&gt;$name&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$slaves&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #339933;"&gt;!&lt;/span&gt;&lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$manager&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getCurrentConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;readConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;a href="http://www.php.net/count"&gt;&lt;span style="color: #990000;"&gt;count&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$slaves&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; ?&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$slaves&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#91;&lt;/span&gt;&lt;a href="http://www.php.net/array_rand"&gt;&lt;span style="color: #990000;"&gt;array_rand&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$slaves&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#93;&lt;/span&gt; &lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Explications sur les modification de la classe ProjectConnection :&lt;br /&gt;&lt;/h3&gt;

&lt;p&gt;&lt;br /&gt;
La méthode publique &lt;em&gt;getWriteConnection()&lt;/em&gt; nous permettra d'obtenir une connexion d'écriture. Si jamais les connexions n'ont pas été initialisées, alors on exécute la méthode protégée &lt;em&gt;setupConnections()&lt;/em&gt;.&lt;br /&gt;
&lt;br /&gt;
La méthode publique getReadConnection() est similaire à la précédente. Sauf que cette fois il s'agit d'avoir une connexion uniquement pour la lecture.&lt;br /&gt;
&lt;br /&gt;
La méthode protégée &lt;em&gt;setupConnection()&lt;/em&gt; permet de faire le tri entre la connexion dédiée à l'écriture et les autres connexions quand à elles dédiées à la lecture. Pour cela on récupère toutes les connexions que l'on a indiquées précédemment dans notre fichier &lt;em&gt;databases.yml&lt;/em&gt; grâce à &lt;em&gt;Doctine_Manager&lt;/em&gt;. On applique une belle itération foreach. On essaye ensuite de retrouver notre serveur SQL maître en faisant une condition où l'on vérifie que le nom est bien &lt;strong&gt;master&lt;/strong&gt;. Si ce n'est pas le cas alors on en déduit qu'il s'agit d'une connexion réservé à la lecture. On la stocke dans un tableau qui nous servira plus tard.&lt;br /&gt;
Si à la suite de notre itération, nous n'avons pas trouvé le serveur SQL maître alors nous demandons à Doctrine_Manager de nous renvoyer la connexion courante.&lt;br /&gt;
Pour sélectionner notre serveur de lecture, alors soit il n'en existe aucun et dans ce cas on prend notre serveur maître ou alors grâce à la fonction &lt;em&gt;array_rand()&lt;/em&gt; nous en sélectionnons un au hasard. Le problème avec la sélection aléatoire c'est que l'on peut très bien par malchance tomber sur le serveur SQL le plus chargé. Donc au lieu de se retrouver dans une configuration où l'on est censé accroître les performances, on peut très bien les dégrader.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Maintenant on passe à la création d'une classe qui permettra de détecter automatiquement s'il faut utiliser une connexion maître ou esclave selon le type de la requête. On ouvre à nouveau son éditeur pour créer notre nouvelle classe que l'on appellera InformatHicQuery :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; InformatHicQuery &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; Doctrine_Query&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; preQuery&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Query&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;SELECT&lt;/span&gt; &lt;span style="color: #339933;"&gt;==&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;_type&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;_conn &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getReadConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;else&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;_conn &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Notre méthode publique &lt;em&gt;preQuery()&lt;/em&gt; détectera s'il s'agit d'une requête de type &lt;em&gt;SELECT&lt;/em&gt; auquel cas on sélectionnera la connexion dédiée à la lecture ou alors s'il s'agit de tout autre type de requête on sélectionnera la connexion vers le serveur SQL maître.&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant créer une classe pour les enregistrements. On sait dors et déjà que cette classe gère des enregistrements... alors&amp;nbsp;? Eh bien on utilisera constamment la connexion vers notre serveur maître !&lt;br /&gt;
On crée une classe que l'on va nommer InformatHicRecord :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; InformatHicRecord &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; sfDoctrineRecord&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; save&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Connection &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: #339933;"&gt;===&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; parent&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;save&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; replace&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Connection &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: #339933;"&gt;===&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; parent&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;replace&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; delete&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Connection &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: #339933;"&gt;===&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; parent&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;delete&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
On en fait de même pour la classe de Collection :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; InformatHicCollection &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; Doctrine_Collection&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; save&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Connection &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$processDiff&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: #339933;"&gt;===&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; parent&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;save&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$processDiff&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; delete&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Connection &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$clearColl&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt; &lt;span style="color: #339933;"&gt;===&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;return&lt;/span&gt; parent&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;delete&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$clearColl&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Nous allons maintenant configurer Doctrine pour lui indiquer d'utiliser les classes que nous venons de créer.&lt;br /&gt;
Pour cela, on retourne dans notre classe &lt;em&gt;ProjectConfiguration&lt;/em&gt; et on ajoute la méthode qui suit :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; ProjectConfiguration &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; sfProjectConfiguration&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #666666; font-style: italic;"&gt;// ...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; configurationDoctrine&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$manager&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$manager&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;setAttribute&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;ATTR_QUERY_CLASS&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'InformatHicQuery'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$manager&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;setAttribute&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;ATTR_COLLECTION_CLASS&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'InformatHicCollection'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; sfConfig&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;set&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'doctrine_model_builder_options'&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #990000;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #0000ff;"&gt;'baseClassName'&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'InformatHicRecord'&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Nous allons passer à un exemple de l'utilisation de notre nouvelle configuration :&lt;br /&gt;
&lt;br /&gt;
Auparavant, notre classe pour gérer chaque utilisateur inscrit dans la base de données ressemblait à ça (il y a volontairement qu'une seule méthode — pas besoin d'en créer 50. Vous comprendrez vite le changement) :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; InformatHicUserActive &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; BaseInformatHicUserActive&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; disable&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getTable&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; try&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;beginTransaction&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Doctrine&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getTable&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'InformatHicInactive'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;insertForUser&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;delete&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;commit&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; catch &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Exception &lt;span style="color: #000088;"&gt;$e&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;rollback&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; throw &lt;span style="color: #000088;"&gt;$e&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Maintenant nous allons adapter notre classe pour qu'elle puisse fonctionner avec notre nouvelle architecture.&lt;br /&gt;
Rassurez-vous il n'y a pas grand chose à changer&amp;nbsp;! Juste une ligne... si si :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; InformatHicUserActive &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; BaseInformatHicUserActive&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; disable&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; ProjectConfiguration&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getActive&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getWriteConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; try&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;beginTransaction&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; Doctrine&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;getTable&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'InformatHicInactive'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;insertForUser&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;delete&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;commit&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; catch &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Exception &lt;span style="color: #000088;"&gt;$e&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;rollback&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; throw &lt;span style="color: #000088;"&gt;$e&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Nous avons récupéré notre connexion d'écriture afin de pouvoir déclarer notre transaction puis, par la suite, la valider si tout c'est bien passé ou l'invalider en cas d'erreur. Ceci permet d'avoir toujours une base de données cohérente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Passons maintenant à notre &lt;em&gt;ConnectionListener&lt;/em&gt; qui nous sera utile lors de la phase de débug et de test de notre application.&lt;br /&gt;
&lt;br /&gt;
Nous allons créer notre classe InformatHicConnectionListener :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; InformatHicConnectionListener &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; Doctrine_EventListener&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; protected &lt;span style="color: #000088;"&gt;$writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;null&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; __construct&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$writeConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$writeConnection&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; checkConnection&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Connection &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$boolean&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;true&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; instanceof sfCallable&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;call&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$boolean&lt;/span&gt; &lt;span style="color: #339933;"&gt;!=&lt;/span&gt; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;writeConnection&lt;/span&gt; &lt;span style="color: #339933;"&gt;===&lt;/span&gt; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; throw &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; LogicException&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'Wrong connection!'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; preQuery&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Event &lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;checkConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInvoker&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;false&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; preExec&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Event &lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;checkConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInvoker&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; prePrepare&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Event &lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$boolean&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; 0 &lt;span style="color: #339933;"&gt;!==&lt;/span&gt; &lt;a href="http://www.php.net/strpos"&gt;&lt;span style="color: #990000;"&gt;strpos&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/trim"&gt;&lt;span style="color: #990000;"&gt;trim&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/strtolower"&gt;&lt;span style="color: #990000;"&gt;strtolower&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getQuery&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'select'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;checkConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInvoker&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #000088;"&gt;$boolean&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; preTransactionBegin&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Event &lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;checkConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInvoker&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; preTransactionCommit&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Event &lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;checkConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInvoker&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; preTransactionRollback&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;Doctrine_Event &lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;checkConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$event&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getInvoker&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;getConnection&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Comme tout à l'heure, nous allons devoir créer une nouvelle méthode dans la classe &lt;em&gt;ProjectConfiguration&lt;/em&gt; pour indiquer la présence de notre &lt;em&gt;connection listener&lt;/em&gt; :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;&lt;span style="color: #000000; font-weight: bold;"&gt;&amp;lt;?php&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="color: #000000; font-weight: bold;"&gt;class&lt;/span&gt; ProjectConfiguration &lt;span style="color: #000000; font-weight: bold;"&gt;extends&lt;/span&gt; sfProjectConfiguration&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #666666; font-style: italic;"&gt;// ...&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #000000; font-weight: bold;"&gt;public&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;function&lt;/span&gt; configureDoctrineConnection&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #b1b100;"&gt;if&lt;/span&gt; &lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;sfConfig&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;get&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'sf_debug'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt; &lt;span style="color: #339933;"&gt;||&lt;/span&gt; sfConfig&lt;span style="color: #339933;"&gt;::&lt;/span&gt;&lt;span style="color: #004000;"&gt;get&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #0000ff;"&gt;'sf_test'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$callable&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; sfCallable&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;a href="http://www.php.net/array"&gt;&lt;span style="color: #990000;"&gt;array&lt;/span&gt;&lt;/a&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$this&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'getWriteConnection'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$listener&lt;/span&gt; &lt;span style="color: #339933;"&gt;=&lt;/span&gt; &lt;span style="color: #000000; font-weight: bold;"&gt;new&lt;/span&gt; InformatHicConnectionListener&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$callable&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style="color: #000088;"&gt;$conn&lt;/span&gt;&lt;span style="color: #339933;"&gt;-&amp;gt;&lt;/span&gt;&lt;span style="color: #004000;"&gt;addListener&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#40;&lt;/span&gt;&lt;span style="color: #000088;"&gt;$listener&lt;/span&gt;&lt;span style="color: #339933;"&gt;,&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;'informathic_debug'&lt;/span&gt;&lt;span style="color: #009900;"&gt;&amp;#41;&lt;/span&gt;&lt;span style="color: #339933;"&gt;;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;br /&gt;
&lt;span style="color: #009900;"&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
&lt;br /&gt;
Et voilà c'est terminé !&lt;br /&gt;
Toutefois si pour le développement vous n'avez qu'une seule machine, sachez que vous pouvez mettre dans le fichier &lt;em&gt;databases.yml&lt;/em&gt; en host "localhost" pour le maître et les esclaves. Ainsi vous aurez votre configuration toute prête et juste les hosts à changer.&lt;br /&gt;
&lt;br /&gt;
Mais pour vous dire la vérité, j'ai fait le cachottier parce que durant la conférence, Kris a montré tout ça, mais il ne s'est pas arrêté là. En effet pourquoi ne pas en faire un plugin&amp;nbsp;? Et c'est ce qu'il a fait&amp;nbsp;! Il l'a par ailleurs mis en ligne durant la conférence. Vous pouvez dès à présent télécharger le plugin  &lt;a href="http://www.symfony-project.org/plugins/sfDoctrineMasterSlavePlugin" hreflang="en"&gt;sfDoctrineMasterSlavePlugin&lt;/a&gt;.&lt;br /&gt;
J'ai trouvé ça absolument énorme. Vous avez désormais presque plus rien à faire !&lt;br /&gt;
&lt;br /&gt;
Sachez que Kris est allé bien plus loin en indiquant la création des sessions en base de données dans le fichier &lt;em&gt;factories.yml&lt;/em&gt;, en utilisant le service S3 d'Amazon pour les envois de fichier depuis son application, il utilise aussi un autre service pour déployer les mises à jour de son application sur tout les serveurs Web.&lt;br /&gt;
Simplement je n'ai pas abordé tous les points dans cet article. Vous pouvez par contre retrouver les slides de sa conférence sur &lt;a href="http://www.slideshare.net/kriswallsmith/symfony-in-the-cloud" hreflang="en"&gt;SlideShare&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/va0Ds9nLZtg" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/24/deployer-symfony-dans-un-cluster#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/24/deployer-symfony-dans-un-cluster#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/105</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/24/deployer-symfony-dans-un-cluster</feedburner:origLink></item>
    
  <item>
    <title>Revue de presse #5</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/arB_Klv_ZGc/Revue-de-presse-5</link>
    <guid isPermaLink="false">urn:md5:b106e69720650e13165516dde9e76dad</guid>
    <pubDate>Mon, 22 Feb 2010 12:29:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Revue de presse</category>
        <category>revue de presse</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/revue-de-presse.jpg" alt="Revue de presse" style="display:block; margin:0 auto;" title="Revue de presse" /&gt;&lt;br /&gt;
Nous voilà repartis pour une séance de lecture sur divers horizons.&lt;br /&gt;
Aujourd'hui, je ferai un p'tit point spécial sur &lt;strong&gt;Hadopi&lt;/strong&gt; / &lt;strong&gt;LOPPSI&lt;/strong&gt; ainsi que &lt;strong&gt;symfony&lt;/strong&gt; / &lt;strong&gt;Symfony&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Nous reviendrons ensuite sur des points plus divers et un peu plus geek pour votre plus grand bonheur.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Hadopi &amp;amp; LOPPSI :&lt;br /&gt;&lt;/h3&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://blogmotion.fr/internet/free-hadopi-5067" hreflang="fr"&gt;Blogmotion&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Comme je le disais dans un &lt;a href="http://www.informathic.com/post/2009/12/09/Free-annonce-que-le-piratage-nuit-%C3%A0-la-cr%C3%A9ation-artistique"&gt;précédent article&lt;/a&gt;, Free se met dans les premiers rangs pour l'application de la loi Hadopi. Xhark nous explique très soigneusement comment Free s'y prend pour en arriver au but final.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.fredzone.org/bientot-la-fin-des-services-decoute-musicale-en-ligne" hreflang="fr"&gt;Fredzone&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Il s'agit d'ici d'un topo théorique sur le futur des services d'écoute musicale en ligne. On y apprend qu'il y aurait de grandes chances que les gros écrasent les p'tits (logique, mais ceci reste un point important) et que les gros se fassent écraser par les plus gros.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.laquadrature.net/fr/loppsi-la-protection-de-lenfance-pretexte-a-la-censure-du-net" hreflang="fr"&gt;La Quadrature&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: La loi &lt;strong&gt;LOPPSI&lt;/strong&gt; est-elle un prétexte à la protection de l'enfance pour faire un pas en avant vers la censure du Net&amp;nbsp;?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Pour les (pas encore) développeurs symfony / Symfony :&lt;br /&gt;&lt;/h3&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.do-as-i-say.com/notes/2010/01/reinventer-la-roue/" hreflang="fr"&gt;Do as i say, not as i do&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Pourquoi réinventer la roue&amp;nbsp;? Je m'en mords encore les doigts, j'avoue (certaines personnes seulement comprendront cette phrase). symfony permet de faire des choses basiques et propose des options très poussées. Voici un p'tit article démontrant le pourquoi du comment &lt;strong&gt;symfony permet d'éviter de réinventer la roue&lt;/strong&gt; (en trop souvent moins bien).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.noelguilbert.com/?post/2010/02/18/Symfony-2-comment-ca-fonctionne" hreflang="fr"&gt;Noël GUILBERT&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Présentation du nouveau fonctionnement de &lt;strong&gt;Symfony Reloaded 2.0&lt;/strong&gt;. Comprendre la logique et interagir avec diverses fonctionnalités déjà en place.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.noelguilbert.com/?post/2010/02/21/Utiliser-Doctrine-2-avec-Symfony" hreflang="fr"&gt;Noël GUILBERT&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Pour aller plus loin avec Symfony 2 en utilisant Doctrine 2, qui annonce des performances spectaculaires par rapport à sa première version.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Divers :&lt;br /&gt;&lt;/h3&gt;

&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.vincentabry.com/sex-com-est-en-vente-aux-encheres-8496" hreflang="fr"&gt;Vincent Abry&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Sex.com est aux enchères&amp;nbsp;! Avis aux amateurs.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://vidberg.blog.lemonde.fr/2010/02/14/les-sports-que-lon-aimerait-voir-a-vancouver/" hreflang="fr"&gt;L'actu en patates&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Vancouver, toujours pas de saut &lt;del&gt;à ski&lt;/del&gt; ASCII&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.manoz.fr/blog/?p=377" hreflang="fr"&gt;Manoz&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Quelques chiffres impressionnants sur l'évolution d'utilisation de Facebook.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="http://www.geeek.org/post/2010/02/20/lg-nas-n2r1-%3A-un-nas-tres-classe-589.html" hreflang="fr"&gt;Geeek&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;: Présentation du premier NAS LG N2R1. Juste dommage qu'il ne soit pas à gagner.&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/arB_Klv_ZGc" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/22/Revue-de-presse-5#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/22/Revue-de-presse-5#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/104</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/22/Revue-de-presse-5</feedburner:origLink></item>
    
  <item>
    <title>J'ai testé pour vous ChatRoulette</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/yP9P3cs9IL4/test-chatroulette</link>
    <guid isPermaLink="false">urn:md5:55cc768ccc4882e0321b8666660c5513</guid>
    <pubDate>Sun, 21 Feb 2010 08:51:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Internet</category>
        <category>chatroulette</category><category>webcam</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/internet/roulette.jpg" alt="Roulette" style="display:block; margin:0 auto;" title="Roulette" /&gt;&lt;br /&gt;
Vous avez sûrement entendu parler de &lt;a href="http://www.chatroulette.com/" hreflang="en"&gt;ChatRoulette&lt;/a&gt;. Le principe de ce site est très simple&amp;nbsp;: vous partagez (ou pas) votre WebCam et/ou votre micro et un autre visiteur qui peut se trouver à l'autre bout du monde comme être votre voisin a accès à votre WebCam et votre micro. Vous pouvez dès lors discuter, ou passer directement au suivant.&lt;br /&gt;
&lt;br /&gt;
C'est un &lt;strong&gt;concept assez attrayant&lt;/strong&gt; comme ça, mais (car oui il y a un "mais") attention aux images&amp;nbsp;! On tombe bien trop souvent sur des hommes en érection qui n'hésitent pas à montrer et à mettre en action leur bistouquette. Bien sûr vous pouvez passer au suivant ou bien même faire un "Report" en cliquant sur un simple bouton. J'ai quand même quelques doutes sur cette dernière action. Vous allez comprendre.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Je me suis mis dans la peau d'un utilisateur et j'ai actionné ma WebCam. Je suis tombé sur des zigounettes comme sur des jolies filles (chose qui est quand même plus rare).&lt;br /&gt;
Par ailleurs, je me suis aperçu que je n'avais pas énormément de conversations avec les hommes qui tiennent leur engin bien en main, du coup, je zappais à tour de bras.&lt;br /&gt;
&lt;br /&gt;
J'estime (par rapport à mon expérience personnelle) qu'il y a &lt;strong&gt;35% de malades&lt;/strong&gt; qui font joujou avec &lt;del&gt;sûrement&lt;/del&gt; le seul truc qui leur reste, &lt;strong&gt;10% de filles&lt;/strong&gt; (plus ou moins belles — mais bon je vais tout de même pas les dénigrer. Elles sont présentes c'est déjà pas si mal).&lt;br /&gt;
&lt;br /&gt;
J'avoue ne pas avoir utilisé uniquement ma WebCam pour ce test. Après avoir vu pas mal de "vidéos" je me suis amusé à remplacer l'image de ma WebCam par des .... vidéos !&lt;br /&gt;
J'ai tout d'abord testé avec le montage vidéo du &lt;a href="http://www.youtube.com/watch?v=4_N1_C5JOEs&amp;amp;NR=1" hreflang="fr"&gt;bus TCL qui se renverse&lt;/a&gt; suite à un &lt;em&gt;abruti&lt;/em&gt; qui se dandine sur la voie de circulation. Résultat mitigé. Certains zappent aussitôt tandis que d'autres tirent des têtes complètement hallucinantes !&lt;br /&gt;
&lt;br /&gt;
Je suis ensuite passé à la fameuse phrase &lt;em&gt;Show your tits&lt;/em&gt;. Résultat complètement nul&amp;nbsp;! J'ai seulement pu me contenter de "fuck".&lt;br /&gt;
&lt;br /&gt;
Et puis ensuite je suis allé un peu plus loin&amp;nbsp;! J'ai passé une vidéo de cul amateur et là .... certains zappent de suite, d'autres regardent très attentivement. Faut dire que c'est à ce moment que je me suis le plus marré, d'autant plus que certains se mettent en action sans hésitation. Et bien sûr quand la fin de la vidéo arrive, je leur sors une belle phrase du type &lt;em&gt;Thank you for the handjob !&lt;/em&gt; Rien que de voir les têtes qui accompagnent cette phrase, je peux vous dire qu'il y en avait plus d'un qui regrettait ce qu'il venait de faire.&lt;br /&gt;
&lt;br /&gt;
En début d'article, je parlais du fameux bouton "Report". J'ai quelques doutes quant à son efficacité vu le nombre d'abus que j'ai pu rencontrer lors du test.&lt;br /&gt;
Après avoir passé des vidéos plutôt ollé ollé, &lt;strong&gt;je n'ai jamais eu besoin de me reconnecter&lt;/strong&gt;... Je lance donc un &lt;em&gt;Warning&lt;/em&gt; aux parents qui laissent libre accès à Internet à leurs enfants, notamment l'accès au site &lt;strong&gt;ChatRoulette&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour conclure, c'est rigolo un moment mais on s'ennuie assez vite. On tourne vite autour du pot quand on arrive à discuter avec quelqu'un. Par ailleurs, je ne vois pas trop ce que l'on peut partager en parlant seulement quelques minutes avec un inconnu.&lt;br /&gt;
Pour moi c'était seulement pour tester et ça s'arrêtera là.&lt;br /&gt;
&lt;br /&gt;
Je tiens par ailleurs à m'excuser auprès des personnes qui ont été piégées lors de ce test.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/yP9P3cs9IL4" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/21/test-chatroulette#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/21/test-chatroulette#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/103</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/21/test-chatroulette</feedburner:origLink></item>
    
  <item>
    <title>symfony : Doctrine et Timestampable</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/UR5lZkPh_6g/symfony-Doctrine-timestampable</link>
    <guid isPermaLink="false">urn:md5:8baab010446e52b8ee62287e09b6db4a</guid>
    <pubDate>Fri, 19 Feb 2010 09:23:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Symfony</category>
        <category>doctrine</category><category>orm</category><category>symfony</category><category>timestampable</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/symfony/timestampable.jpg" alt="Doctrine&amp;nbsp;: Timestampable" style="display:block; margin:0 auto;" title="Doctrine&amp;nbsp;: Timestampable" /&gt;&lt;br /&gt;
Je dois vous avouer que je suis vraiment surexcité de me lancer vraiment dans symfony après avoir &lt;a href="http://www.informathic.com/post/2010/02/18/Symfony-Reloaded-2.0"&gt;assisté au Symfony Live 2010&lt;/a&gt;, en commençant un projet, je me suis lancé à la découverte du comportement &lt;strong&gt;actAs&lt;/strong&gt; dans le schéma de Doctrine.&lt;br /&gt;
&lt;br /&gt;
Heureusement pour moi, j'ai vidé de mes poches les deux trois sous qui me restaient pour investir dans le livre &lt;a href="http://books.sensiolabs.com/book/plus-loin-avec-symfony-1-3-1-4" hreflang="fr"&gt;Plus loin avec symfony 1.3 &amp;amp; 1.4&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
C'est donc dans ce livre-là que j'ai appris que actAs était un &lt;em&gt;comportement&lt;/em&gt;.&lt;br /&gt;
Je me suis interrogé sur le pourquoi du comment &lt;strong&gt;actAs: { Timestampable: ~ }&lt;/strong&gt; créait deux champs supplémentaires qui sont created_at et updated_at, et surtout comment ces informations étaient automatiquement mises à jours lors de requêtes d'insertions ou de mises à jour.&lt;br /&gt;
&lt;br /&gt;
En réalité en indiquant &lt;strong&gt;Timestampable&lt;/strong&gt;, vous appellerez le template Doctrine_Template_Timestampable qui se situe dans le dossier&amp;nbsp;:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;./lib/vendor/symfony/lib/plugins/sfDoctrinePlugin/lib/vendor/doctrine/Doctrine/Template/Timestampable.php&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;&lt;br /&gt;
Alors concrètement Timestampable est un template. On peut donc partir dans la logique que l'on peut créer nos propres templates et ce qui est ..... totalement VRAI !&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Alors que fait exactement ce template ?&lt;/strong&gt;&lt;br /&gt;
Si vous avez uniquement le signe &lt;strong&gt;~&lt;/strong&gt; alors il vous créera les champs &lt;em&gt;created_at&lt;/em&gt; et &lt;em&gt;updated_at&lt;/em&gt;.&lt;br /&gt;
Cependant vous avez aussi la possibilité de désactiver la création d'un des deux champs voir même des deux mais dans le dernier cas, il n'y a aucun intérêt de déclarer Timestampable.&lt;br /&gt;
Pour vous, je vais vous indiquer comment éviter de créer le champ created_at et ensuite updated_at :&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Désactiver le champ created :&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;actAs&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Timestampable&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; created&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; disabled&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;true&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
&lt;strong&gt;Désactiver le champ updated :&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;actAs&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Timestampable&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; updated&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; disabled&lt;span style="color: #339933;"&gt;:&lt;/span&gt; &lt;span style="color: #009900; font-weight: bold;"&gt;true&lt;/span&gt;&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
L'autre &lt;em&gt;contrainte&lt;/em&gt; est que par défaut, le nom du champ est &lt;em&gt;created_at&lt;/em&gt; et la date et de type DateTime.&lt;br /&gt;
Vous souhaitez peut-être avoir uniquement une date de type Date. Pour faire ceci, vous devez procéder ainsi :&lt;br /&gt;&lt;/p&gt;
&lt;code class="php"&gt;actAs&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; Timestampable&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; created&lt;span style="color: #339933;"&gt;:&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; name&lt;span style="color: #339933;"&gt;:&lt;/span&gt; created_date&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; format&lt;span style="color: #339933;"&gt;:&lt;/span&gt; Y&lt;span style="color: #339933;"&gt;-&lt;/span&gt;m&lt;span style="color: #339933;"&gt;-&lt;/span&gt;d&lt;/code&gt;

&lt;p&gt;&lt;br /&gt;
Ce que j'aime c'est que dans le moindre détail on peut aller assez loin et on ne reste pas esclave par des options limitées.&lt;br /&gt;
Cet article est déjà une bonne introduction à Timestampable. Si vous souhaitez en savoir plus, vous avez l'option de vous rendre sur la &lt;a href="http://www.doctrine-project.org/documentation/manual/1_1/pl/behaviors:core-behaviors:timestampable" hreflang="en"&gt;documentation de Doctrine&lt;/a&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/UR5lZkPh_6g" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/18/symfony-Doctrine-timestampable#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/18/symfony-Doctrine-timestampable#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/102</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/18/symfony-Doctrine-timestampable</feedburner:origLink></item>
    
  <item>
    <title>Symfony Reloaded 2.0 #sflive2010</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/VvfTBt-uo6A/Symfony-Reloaded-2.0</link>
    <guid isPermaLink="false">urn:md5:e736e9e495d35158d9426b0036c16966</guid>
    <pubDate>Thu, 18 Feb 2010 19:47:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Symfony</category>
        <category>sfLive</category><category>symfony</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/symfony/Symfony-reloaded-2.jpg" alt="Symfony Reloaded 2.0" style="display:block; margin:0 auto;" title="Symfony Reloaded 2.0" /&gt;&lt;br /&gt;
J'ai passé mes deux derniers jours à Paris où j'ai eu le bonheur d'avoir été &lt;strong&gt;invité au Symfony Live 2010&lt;/strong&gt;.  J'en profite par ailleurs pour rermercier Romain de m'avoir invité.&lt;br /&gt;
J'ai découvert des choses vraiment intéressantes, comme notamment la possibilité de &lt;strong&gt;déployer une application symfony sur cluster avec plusieurs serveurs SQL&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Et bien sûr, j'ai pu assister à la première présentation de &lt;strong&gt;Symfony Reloaded 2.0&lt;/strong&gt; (avec un "S" majuscule c'est très important).&lt;br /&gt;
Je vais donc vous présenter ce que j'ai retenu de cette nouvelle version qui s'annonce absolument prometteuse&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Comme indiqué précédemment, vous ne devrez plus écrire symfony de cette manière quand vous parlerez de la version 2&amp;nbsp;! Vous devrez utiliser un "S" majuscule de cette manière&amp;nbsp;: &lt;strong&gt;Symfony&lt;/strong&gt;.&lt;br /&gt;
Bon il est vrai c'est pas un très grand pas en avant dans le MVC mais Fabien Potencier a tout de même insisté sur ce point.&lt;br /&gt;
&lt;br /&gt;
Le second point est que Symfony 2 fonctionnera uniquement à partir de PHP 5.3 car le MVC utilise les &lt;a href="http://www.informathic.com/post/2010/01/20/Namespace-PHP-presentation-application-espaces-de-noms"&gt;Namespaces&lt;/a&gt;.&lt;br /&gt;
Désormais &lt;em&gt;exit&lt;/em&gt; les noms de classes identiques qui mènent à des conflits.&lt;br /&gt;
&lt;br /&gt;
De grosses améliorations de performances sont également apportées. En l'état, le projet est 3 fois plus rapide que symfony 1.4 ainsi que Zend Framework. Pour tout ceux qui restent accrochés à CakePHP, sachez que la version 2 de Symfony est 5,5 fois plus rapide. Vous pouvez allez voir les comparaisons de performances sur ce &lt;a href="http://symfony-reloaded.org/fast" hreflang="en"&gt;Benchmark&lt;/a&gt;. Par ailleurs d'énormes progrès sur l'utilisation de la mémoire ont été effectués.&lt;br /&gt;
&lt;br /&gt;
Un apprentissage en une heure sur le &lt;a href="http://symfony-reloaded.org/quick-tour-part-1" hreflang="en"&gt;Quick Tour&lt;/a&gt; devrait vous permettre de pouvoir utiliser déjà la version 2 de Symfony. Malheureusement tous les composants ne sont pas encore implémentés.&lt;br /&gt;
&lt;br /&gt;
Grâce à une API simple et cohérente, l'extensibilité de cette nouvelle version n'est pas limitée. A vous d'avoir assez d'imagination !&lt;br /&gt;
&lt;br /&gt;
Une flexibilité hors norme grâce à un micro-noyau basé sur l'injection de dépendances et un &lt;em&gt;event dispatcher&lt;/em&gt;. Tout cela vous permet à Symfony d'être &lt;a href="http://symfony-reloaded.org/architecture" hreflang="en"&gt;configurable à volonté&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Une nouvelle version du moteur de &lt;a href="http://symfony-reloaded.org/tools" hreflang="en"&gt;débogage&lt;/a&gt; vous permettra de corriger les erreurs de votre application très aisément.&lt;br /&gt;
&lt;br /&gt;
Ce qui fait la force de Symfony est qu'il s'inspire de nombreux concepts de différents langages et autres Frameworks tels que &lt;strong&gt;symfony 1&lt;/strong&gt;, Django, Spring et Ruby on Rails. Il utilise aussi des bibliothèques PHP qui ont fait leurs preuves comme Zend Framework et Doctrine.&lt;br /&gt;
&lt;br /&gt;
Fort heureusement pour nous, Symfony est libre de droit distribué sous la &lt;a href="http://symfony-reloaded.org/license" hreflang="en"&gt;licence MIT&lt;/a&gt;. On peut donc l'utiliser dans un environnement commercial et bien sûr on peut même contribuer à faire avancer le projet.&lt;br /&gt;
&lt;br /&gt;
Tout se passe sur le site dédié à &lt;a href="http://symfony-reloaded.org/" hreflang="en"&gt;Symfony Reloaded 2.0&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En tout cas après avoir assisté à cette conférence, je suis totalement conquis du projet&amp;nbsp;! Je vais même en profiter pour abandonner le développement de mon propre MVC et me plonger dans le cœur de &lt;strong&gt;symfony&lt;/strong&gt; et &lt;strong&gt;Symfony&lt;/strong&gt;.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/VvfTBt-uo6A" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/18/Symfony-Reloaded-2.0#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/18/Symfony-Reloaded-2.0#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/101</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/18/Symfony-Reloaded-2.0</feedburner:origLink></item>
    
  <item>
    <title>Le vendredi c'est permis ! #1</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/iq0XQVHpCUM/batterie-interactive-visite-virtuelle</link>
    <guid isPermaLink="false">urn:md5:2b9544275bdf115e00592fe712ecd320</guid>
    <pubDate>Fri, 12 Feb 2010 09:40:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Le vendredi c'est permis !</category>
        <category>batterie</category><category>vendredi</category><category>virtuelle</category><category>visite</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/vendredi/court-circuit.jpg" alt="Court-circuit" style="display:block; margin:0 auto;" title="Court-circuit" /&gt;&lt;br /&gt;
Vous remarquerez que ces derniers temps je suis un peu moins actif. Pas de soucis, c'est juste temporaire. D'ici une semaine tout devrait revenir dans l'ordre.&lt;br /&gt;
&lt;br /&gt;
Et parce que les fins de semaines sont toujours un peu difficiles, j'ouvre une nouvelle section, qui se nomme &lt;strong&gt;Le vendredi c'est permis !&lt;/strong&gt;&lt;br /&gt;
Je tenterais de compléter cette section chaque vendredi.&lt;br /&gt;
&lt;br /&gt;
Pour cette première, nous aurons le droit à une &lt;strong&gt;visite virtuelle en 360°&lt;/strong&gt; pas comme les autres !&lt;br /&gt;
Il s'agit d'une &lt;strong&gt;batterie en 360°&lt;/strong&gt;&amp;nbsp;! En appuyant sur les touches de votre clavier, une action se déclenche sur la batterie. Personnellement j'adore&amp;nbsp;!&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Tout se passe sur &lt;a href="http://www.virtualtuur.com/studio/"&gt;http://www.virtualtuur.com/studio/&lt;/a&gt;&lt;br /&gt;
Amusez-vous bien.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/iq0XQVHpCUM" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/12/batterie-interactive-visite-virtuelle#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/12/batterie-interactive-visite-virtuelle#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/100</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/12/batterie-interactive-visite-virtuelle</feedburner:origLink></item>
    
  <item>
    <title>Nouvelles vidéos TEDx Paris du 30 janvier 2010</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/y5iXSde0-BY/nouvelles-videos-TEDx-Paris-30-janvier-2010</link>
    <guid isPermaLink="false">urn:md5:425895e582a57a322492091a6739a30e</guid>
    <pubDate>Mon, 08 Feb 2010 11:44:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Divers</category>
        <category>ted</category><category>tedxparis</category><category>video</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/divers/tedxparis.jpg" alt="TEDxParis" style="display:block; margin:0 auto;" title="TEDx" /&gt;&lt;br /&gt;
J'avais fait un billet précédemment sur &lt;strong&gt;&lt;a href="http://www.informathic.com/post/2010/02/05/video-tedx-paris-30-janvier-2010"&gt;les vidéos du TEDX Paris du 30 janvier 2010&lt;/a&gt;&lt;/strong&gt;.&lt;br /&gt;
&lt;br /&gt;
Cependant de nouvelles vidéos sont disponibles et je vous les mets de suite à dispositions dans cette article.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
&lt;strong&gt;Fabrice Grinda&amp;nbsp;: La passion d'entreprendre&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/BJK3_vpfoQc&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/BJK3_vpfoQc&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Françoise Schein&amp;nbsp;: Architecte de l'espace et de l'humain&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/PCAYjN4Vkew&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/PCAYjN4Vkew&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;François Taddei&amp;nbsp;: Pour un nouveau modèle d'éducation&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/60_xXe5IAkI&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/60_xXe5IAkI&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Anaïs Rassat&amp;nbsp;: De la nécessité de la recherche fondamentale&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ViPw2gmFPbU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ViPw2gmFPbU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Gildas Bonnel&amp;nbsp;: Communiquer sur le développement durable est-il encore possible ?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/__xZx5k7LnM&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/__xZx5k7LnM&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;

&lt;h3&gt;Mise à jour de l'article :&lt;br /&gt;&lt;/h3&gt;

&lt;p&gt;Je rajoute à la suite de ces vidéos encore deux autres qui comprend la fermeture formidable de Vinvin !&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Marina Cavazzana-Calvo&amp;nbsp;: Comment le virus du SIDA peut aider à soigner des maladies génétiques&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/0kv08y6_UCM&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/0kv08y6_UCM&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;&lt;strong&gt;Cyrille de Lasteyrie&amp;nbsp;: Le Vinvin show de clôture !&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/xdROsuWCz7w&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/xdROsuWCz7w&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/y5iXSde0-BY" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/08/nouvelles-videos-TEDx-Paris-30-janvier-2010#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/08/nouvelles-videos-TEDx-Paris-30-janvier-2010#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/99</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/08/nouvelles-videos-TEDx-Paris-30-janvier-2010</feedburner:origLink></item>
    
  <item>
    <title>Deux extensions Firefox retirées par Mozilla contenant des Malwares</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/TiAyxydkKTM/mozilla-firefox-retire-extensions-malwares</link>
    <guid isPermaLink="false">urn:md5:e241bf49e32001e29217731a063890e5</guid>
    <pubDate>Mon, 08 Feb 2010 11:00:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Internet</category>
        <category>extension</category><category>firefox</category><category>malware</category><category>mozilla</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/internet/ordinateur-cadenas.jpg" alt="Ordinateur cadenassé" style="display:block; margin:0 auto;" title="Ordinateur cadenassé" /&gt;&lt;br /&gt;
Dans le monde de l'informatique, il faut faire très attention.&lt;br /&gt;
En effet, on ne peut faire confiance à tous les programmes notamment ceux qui proposent d'installer des extensions.&lt;br /&gt;
C'est ce que l'on va comprendre dans cet article.&lt;br /&gt;
&lt;br /&gt;
A la suite d'un &lt;a href="http://blog.mozilla.com/addons/2010/02/04/please-read-security-issue-on-amo/" hreflang="en"&gt;bulletin d'alerte&lt;/a&gt; émis par Mozilla jeudi dernier, on apprend que la fondation Mozilla a découvert deux chevaux de Troie au sein même d'extension pour Firefox.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
Les deux extensions en question sont &lt;strong&gt;Sothink Web Video Downloader 4.0&lt;/strong&gt; et &lt;strong&gt;Master Filer&lt;/strong&gt;. Si vous les avez installé je vous conseille vivement de les désinstaller au plus vite de votre navigateur. Mais attention car la désinstallation des extensions ne suffit pas. Il faut être munis d'un antivirus mis à jour et de faire un scan complet de l'ordinateur.&lt;br /&gt;
De plus ils ont été identifié sous les noms de &lt;strong&gt;Win32.LdPinch.gen&lt;/strong&gt; et &lt;strong&gt;Win32.Bifrose.32.Bifrose&lt;/strong&gt;.&lt;br /&gt;
Ces chevaux de Troie affectent uniquement les systèmes d'exploitations Microsft.&lt;br /&gt;
&lt;br /&gt;
On apprend aussi que &lt;strong&gt;Sothink Web Video Downloader 4.0&lt;/strong&gt; a été téléchargé 4.000 fois et &lt;strong&gt;Master Filer&lt;/strong&gt; seulement 600 fois.&lt;br /&gt;
&lt;br /&gt;
&lt;del&gt;Restez vigilant ou achetez-vous un Mac.&lt;/del&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(&lt;a href="http://www.zdnet.fr/actualites/internet/0,39020774,39712808,00.htm" hreflang="fr"&gt;ZDNet&lt;/a&gt;)&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/TiAyxydkKTM" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/08/mozilla-firefox-retire-extensions-malwares#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/08/mozilla-firefox-retire-extensions-malwares#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/98</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/08/mozilla-firefox-retire-extensions-malwares</feedburner:origLink></item>
    
  <item>
    <title>Star Wars interprété par un lecteur de disquettes</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/eL-1muclkO8/Star-Wars-lecteur-de-disquettes</link>
    <guid isPermaLink="false">urn:md5:e64f67c3074126a497281bb4e7957b86</guid>
    <pubDate>Sun, 07 Feb 2010 10:32:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Divers</category>
        <category>disquette</category><category>lecteur</category><category>star wars</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/divers/disquettes.jpg" alt="Disquettes" style="display:block; margin:0 auto;" title="Disquettes" /&gt;&lt;br /&gt;
Quand j'ai vu cette vidéo j'ai tout de suite su qu'elle aurait sa place ici.&lt;br /&gt;
Et puis même si ce n'est pas dans mes habitudes, on est dimanche et on a bien le droit de se détendre un peu.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
C'est donc un joli petit lecteur de disquettes qui nous interprète pour nous cette énorme musique qu'est la musique de Star Wars !&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center;"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/X4SCSGRVAQE&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/X4SCSGRVAQE&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/eL-1muclkO8" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/07/Star-Wars-lecteur-de-disquettes#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/07/Star-Wars-lecteur-de-disquettes#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/97</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/07/Star-Wars-lecteur-de-disquettes</feedburner:origLink></item>
    
  <item>
    <title>Nerim lance une nouvelle offre : Nerim Root</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/kKPeMGJSd4k/Nerim-offre-Nerim-Root</link>
    <guid isPermaLink="false">urn:md5:25f890e60574bac8afe9921e46082dab</guid>
    <pubDate>Sat, 06 Feb 2010 09:59:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Marketings</category>
        <category>fai</category><category>internet</category><category>nerim</category><category>root</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/marketings/nerim-root.jpg" alt="Nerim Root" style="display:block; margin:0 auto;" title="Nerim Root" /&gt;&lt;br /&gt;
Pour fêter ses &lt;strong&gt;10 ans d'existence&lt;/strong&gt;, Nerim propose à leurs nouveaux clients une offre bien spéciale. Elle se nomme &lt;strong&gt;Nerim Root&lt;/strong&gt; !&lt;br /&gt;
&lt;br /&gt;
Cette offre est limitée seulement aux 1024 premiers inscrits et elle est &lt;strong&gt;ouverte aux particuliers&lt;/strong&gt;.&lt;br /&gt;
Par ailleurs j'ai découvert cette offre à la suite d'&lt;a href="http://www.informathic.com/post/2010/01/21/Probleme-acces-internet-avec-Orange#c65" hreflang="fr"&gt;un commentaire d'un employé chez Nerim&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Pour ma part, je suis très content de Nerim. On l'utilise au boulot et je peux dire que lorsque l'on a une question ou un problème, le service technique répond présent et on obtient aussitôt &lt;strong&gt;une réponse simple et claire&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
&lt;strong&gt;Alors au faite que nous propose Nerim avec sa nouvelle offre ?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Accès ADSL dégroupé partiel en max de synchro&lt;/li&gt;
&lt;li&gt;Serveur VDS&lt;/li&gt;
&lt;li&gt;IPv6 ready&lt;/li&gt;
&lt;li&gt;Option présélection téléphonique&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
Pour ceux qui ignorent ce qu'est un VDS, l'acronyme signifie Serveur Virtuel Privé. C'est un serveur qui est découpé en plusieurs parties pour créer d'autres serveurs. On arrive ainsi à partager les ressources d'une machine à plusieurs systèmes d'exploitation en même temps.&lt;br /&gt;
&lt;br /&gt;
Je vous propose de voir de suite les caractéristiques du VDS :&lt;br /&gt;
&lt;br /&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CPU&amp;nbsp;: Intel Xeon E5540 2,53 Ghz&lt;/li&gt;
&lt;li&gt;RAM&amp;nbsp;: 1024 Mo&lt;/li&gt;
&lt;li&gt;HDD&amp;nbsp;: 16 Go&lt;/li&gt;
&lt;li&gt;BP&amp;nbsp;: 50 Mbps&lt;/li&gt;
&lt;li&gt;Volume échangé&amp;nbsp;: non limité&lt;/li&gt;
&lt;li&gt;IP&amp;nbsp;: 1 adresse IPv4 + 1 adresse IPv6&lt;/li&gt;
&lt;li&gt;OS&amp;nbsp;: FreeBSD 7.2 ou Debian Lenny [stable] au choix&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;br /&gt;
Je vous conseille aussi de bien &lt;a href="http://root.nerim.net/mentions.html" hreflang="fr"&gt;lire les mentions de l'offre&lt;/a&gt; afin d'être sûr que cette offre puisse vous convenir.&lt;br /&gt;
&lt;br /&gt;
Pour le reste tout se passe ici&amp;nbsp;: &lt;a href="http://root.nerim.net/" hreflang="fr"&gt;http://root.nerim.net/&lt;/a&gt;&lt;br /&gt;
N'oubliez pas non plus de visualiser &lt;a href="http://root.nerim.net/video.html" hreflang="fr"&gt;les FantasgeekGirls&lt;/a&gt; de chez Nerim, ça vaut le coup d'oeil.&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/kKPeMGJSd4k" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/06/Nerim-offre-Nerim-Root#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/06/Nerim-offre-Nerim-Root#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/96</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/06/Nerim-offre-Nerim-Root</feedburner:origLink></item>
    
  <item>
    <title>TEDx Paris 30 janvier 2010 enfin en vidéo</title>
    <link>http://feedproxy.google.com/~r/InformatHic/~3/zRvLqdpEG5U/video-tedx-paris-30-janvier-2010</link>
    <guid isPermaLink="false">urn:md5:4232d7fa35b7a5cce8cb475e756d7c5d</guid>
    <pubDate>Fri, 05 Feb 2010 07:59:00 +0100</pubDate>
    <dc:creator>Francis Besset</dc:creator>
        <category>Divers</category>
        <category>ted</category><category>tedxparis</category>    
    <description>&lt;p&gt;&lt;img src="http://www.informathic.com/public/10-fevrier/theatre-cardin.jpg" alt="Théâtre Cardin - TEDx Paris" style="display:block; margin:0 auto;" title="Théâtre Cardin - TEDx Paris" /&gt;&lt;br /&gt;
Je ne connaissais pas &lt;strong&gt;TED&lt;/strong&gt;. On pourrait dire qu'il parle beaucoup mais c'est son but.&lt;br /&gt;
Il ne s'agit pas d'une personne mais d'un ensemble de personnes qui interviennent pour communiquer sur des sujets très divers.&lt;br /&gt;
&lt;br /&gt;
Pour moi c'est tout nouveau alors que le concept existe depuis 25 ans aux Etats-Unis. C'est le 30 janvier où j'ai vu pleins de hashtags &lt;a href="http://twitter.com/#search?q=%23tedxparis"&gt;#tedxparis&lt;/a&gt; sur Twitter. Je me suis donc renseigné et j'ai vu cette conférence qui battait son plein. &lt;strong&gt;J'ai ADORÉ&lt;/strong&gt; !&lt;br /&gt;
Elle porte sur des sujets très divers allant de la vie d'un faussaire jusqu'au trou noir. Autant vous dire que l'on ne s'ennui pas.
&lt;br /&gt;
Je vous propose donc de voir des &lt;strong&gt;vidéos complètes&lt;/strong&gt; sur les intervenants du &lt;strong&gt;30 janvier 2010 à TEDx Paris&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;
&lt;strong&gt;Guy-Philippe Goldstein&amp;nbsp;: Faut-il craindre une cyber-guerre ?&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/ODnt89o7hwU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/ODnt89o7hwU&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Adolfo Kaminsky&amp;nbsp;: Une vie de faussaire&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/aFsgpzxuEU4&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/aFsgpzxuEU4&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Soro Solo&amp;nbsp;: Modernité et traditions ou le choc des cultures&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/gRoJuLHmYBQ&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/gRoJuLHmYBQ&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Miguel Benasayag&amp;nbsp;: De la différence entre légitimité et légalité&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;p style="text-align:center"&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/w6S1nm2cKIY&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/w6S1nm2cKIY&amp;amp;hl=fr_FR&amp;amp;fs=1&amp;amp;rel=0&amp;amp;color1=0x006699&amp;amp;color2=0x54abd6" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/InformatHic/~4/zRvLqdpEG5U" height="1" width="1"/&gt;</description>
    
    
    
          <comments>http://www.informathic.com/post/2010/02/05/video-tedx-paris-30-janvier-2010#comment-form</comments>
      <wfw:comment>http://www.informathic.com/post/2010/02/05/video-tedx-paris-30-janvier-2010#comment-form</wfw:comment>
      <wfw:commentRss>http://www.informathic.com/feed/atom/comments/95</wfw:commentRss>
      <feedburner:origLink>http://www.informathic.com/post/2010/02/05/video-tedx-paris-30-janvier-2010</feedburner:origLink></item>
    
</channel>
</rss>
