<?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:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>William's Blog</title> <link>http://www.willdurand.fr</link> <description>Développeur web indépendant, étudiant et passionné ! #Symfony2 #Rails #Diem #Git #Nginx #WebPerfs #SoftwareQuality</description> <lastBuildDate>Thu, 20 Oct 2011 14:59:05 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/WilliamDurand-WebDeveloper-RecentPosts" /><feedburner:info uri="williamdurand-webdeveloper-recentposts" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>WilliamDurand-WebDeveloper-RecentPosts</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item><title>Feature branch, Feature toggle pattern</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/wNMxCjeDceg/</link> <comments>http://www.willdurand.fr/feature-branch-feature-toggle-pattern/#comments</comments> <pubDate>Thu, 16 Jun 2011 18:54:55 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[ParisDevops]]></category> <category><![CDATA[Devops]]></category> <category><![CDATA[Feature Pattern]]></category> <category><![CDATA[Git]]></category> <category><![CDATA[Java]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=930</guid> <description><![CDATA[Bonsoir, Hier c&#8217;était devops meetup, 5ème du nom, où j&#8217;ai pu voir que JMX, ce n&#8217;était pas ma vie mais que ça semble tout de même cool ! JMX c&#8217;est un outil de monitoring Java plutôt mal connu et de mauvaise réputation alors qu&#8217;au contraire, il est très intéressant (enfin, pour ceux qui font du [...]]]></description> <content:encoded><![CDATA[<p>Bonsoir,</p><p>Hier c&#8217;était <a
href="http://parisdevops.fr/blog/2011/05/09/prochain-meetup-le-mercredi-15-juin.html">devops meetup</a>, 5ème du nom, où j&#8217;ai pu voir que JMX, ce n&#8217;était pas <strong>ma</strong> vie mais que ça semble tout de même cool !</p><p><em>JMX c&#8217;est un outil de monitoring Java plutôt mal connu et de mauvaise réputation alors qu&#8217;au contraire, il est très intéressant (enfin, pour ceux qui font du Java). La présentation était excellente et rondement bien menée.</em></p><p>Ce qui m&#8217;a poussé à écrire cet article, c&#8217;est la partie sur le <strong>Feature toggle Pattern</strong>. Oui ça en jette grave mais au fond, c&#8217;est un concept que tout le monde devrait connaître. Ce <em>patron</em> vise à activer de nouvelles fonctionnalités d&#8217;un service en production. Il y a plusieurs manières de le faire avec des attentes différentes.</p><h3>Déployer en production</h3><ul><li>Sauce <a
href="http://www.weka-entertainment.com/">Weka</a> : on pousse en prod, on regarde Pinba (ou tout autre outil de monitoring) et là : il s&#8217;affole et on rollback <strong>ou</strong> tout est ok, <em>Next</em> !</li><li>Sauce plus traditionnelle : la preprod contient la nouvelle fonctionnalité et tout a été testé (le top c&#8217;est avec des données de prod répliquées à J-1, une preprod quoi&#8230;), on déploie le code versionné de preprod sur la prod, normalement pas de soucis. Au pire on rollback.</li><li>Sauce Facebook : on déploie par groupe, ce qui permet de tester en situation réelle sans pour autant compromettre toute l&#8217;application.</li><li>Sauce random : On ouvre la nouvelle fonctionnalité aléatoirement sur un délai donné avant de l&#8217;ouvrir à tout le monde.</li></ul><h3>Pour&#8230;</h3><ul><li>Améliorer/Faire évoluer l&#8217;existant.</li><li>Ajouter une nouveauté.</li><li><a
href="http://fr.wikipedia.org/wiki/Test_A/B">A/B testing</a></li><li>Canary testing (test du canari, provient d&#8217;une sombre histoire de mines) : soit ça marche, soit t&#8217;as perdu.</li><li>Tester la viabilité d&#8217;une fonctionnalité : si elle plait ou non, si elle est rentable, si elle est acceptée.</li></ul><p>Le <strong>Feature toggle pattern</strong> est <strong>une</strong> solution qui répond principalement aux trois dernières attentes. Il s&#8217;agit de rendre possible l&#8217;activation mais surtout la désactivation d&#8217;une fonctionnalité en instantanée sans rollback lourd et contraignant (les gens qui font du Java savent ce que c&#8217;est que redéployer).</p><h3> J&#8217;en viens donc à la partie technique, comment fait-on ?</h3><p>Il nous faut deux implémentations d&#8217;une même interface, un <strong>dispatcher</strong> et une variable/propriété en guise d&#8217;interrupteur.
Le dispatcher va lire cette variable et renvoyer vers l&#8217;une ou l&#8217;autre des deux implémentations, ce n&#8217;est pas bien compliqué et Martin Fowler l&#8217;illustre parfaitement bien dans son article sur le <a
href="http://martinfowler.com/bliki/FeatureToggle.html">Feature toggle</a>.</p><h3>Mais au fait, pourquoi un titre qui parle de <strong>Feature Branch</strong> ?</h3><p>C&#8217;est plus ou moins lié. Vous connaissez surement l&#8217;article <a
href="http://nvie.com/posts/a-successful-git-branching-model/">A successful Git branching model</a>, il ne fait qu&#8217;exposer ce principe. Chaque nouvelle fonctionnalité est développée dans une branche à part et soit on merge par la suite, soit non.</p><p>On peut donc utiliser ce modèle pour développer notre <strong>feature toggle</strong> :</p><ul><li>une branche <em>master</em> : le code stable.</li><li>une branche <em>new_feature</em> : le code de la nouvelle fonctionnalité.</li><li>une branche <em>new_feature_toggle</em> : l&#8217;intégration de la nouvelle fonctionnalité dans le code stable avec le dispatcher et l&#8217;interrupteur qui va bien.</li></ul><p>On déploie notre branche <em>new_feature_toggle</em> et on valide nos objectifs. Si c&#8217;est ok, on pourra merger <em>new_feature</em> dans le <em>master</em> et tout restera propre. Je dis cela parce que, lors de la soirée, des gens ont évoqué la propreté du code et la présentation évoquait la duplication du code. Ce système de trois branches amenuise ces problèmes.</p><p>Je ne l&#8217;ai pas dit avant mais le système de <strong>feature toggle</strong> a une durée de vie limitée. Il ne s&#8217;agit pas d&#8217;avoir en permanence la possibilité d&#8217;activer ou de désactiver des fonctionnalités même si dans l&#8217;absolu, &laquo;&nbsp;why not ?!&nbsp;&raquo;.</p><h3>Symfony2, encore.</h3><p>En discutant avec mon pote @<a
href="https://twitter.com/fabienPomerol">Fabpom</a>, nous avons pu faire l&#8217;analogie Java/Symfony2 assez aisément. Mettre en oeuvre le principe de <strong>feature toggle</strong> avec Symfony2, ce n&#8217;est ni plus ni moins que charger un service ou l&#8217;autre lors du <em>boot</em> de l&#8217;application. On peut imaginer la lecture d&#8217;une valeur dans un fichier <em>YAML</em> et le tour est joué.</p><h3>So ?</h3><p>L&#8217;idée est là, le concept est en place et fait son job. Il ne faut pas hésiter à se poser la question lorsque l&#8217;on développe et que l&#8217;on nous impose un certain &laquo;&nbsp;sans filet&nbsp;&raquo;. C&#8217;est un <strong>pattern</strong> à connaître et qui peut faire gagner pas mal de temps&#8230; et d&#8217;argent <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/deploiement-automatise-avec-capistrano-et-git-pour-symfony-et-diem/' title='Déploiement automatisé avec Capistrano et Git pour symfony et Diem'>Déploiement automatisé avec Capistrano et Git pour symfony et Diem</a></li><li><a
href='http://www.willdurand.fr/programmation-web-comment-choisir-entre-le-confort-et-les-performances/' title='Programmation web : comment choisir entre le confort et les performances ?'>Programmation web : comment choisir entre le confort et les performances ?</a></li><li><a
href='http://www.willdurand.fr/reconnaissance-vocale-dans-une-audioconference-par-voip-avec-asterisk/' title='Reconnaissance vocale dans une audioconférence par VoIP avec Asterisk'>Reconnaissance vocale dans une audioconférence par VoIP avec Asterisk</a></li><li><a
href='http://www.willdurand.fr/creation-dun-webservice-avec-talend-open-studio/' title='Création d’un WebService avec Talend Open Studio'>Création d’un WebService avec Talend Open Studio</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;bodytext=Bonsoir%2C%0D%0A%0D%0AHier%20c%27%C3%A9tait%20%5Bdevops%20meetup%5D%28http%3A%2F%2Fparisdevops.fr%2Fblog%2F2011%2F05%2F09%2Fprochain-meetup-le-mercredi-15-juin.html%29%2C%205%C3%A8me%20du%20nom%2C%20o%C3%B9%20j%27ai%20pu%20voir%20que%20JMX%2C%20ce%20n%27%C3%A9tait%20pas%20%2A%2Ama%2A%2A%20vie%20mais%20que%20%C3%A7a%20semble%20tout%20de%20m%C3%AAme%20cool%20%21%0D%0A%0D%0A_JMX%20c%27est%20un%20ou" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;title=Feature%20branch%2C%20Feature%20toggle%20pattern" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;notes=Bonsoir%2C%0D%0A%0D%0AHier%20c%27%C3%A9tait%20%5Bdevops%20meetup%5D%28http%3A%2F%2Fparisdevops.fr%2Fblog%2F2011%2F05%2F09%2Fprochain-meetup-le-mercredi-15-juin.html%29%2C%205%C3%A8me%20du%20nom%2C%20o%C3%B9%20j%27ai%20pu%20voir%20que%20JMX%2C%20ce%20n%27%C3%A9tait%20pas%20%2A%2Ama%2A%2A%20vie%20mais%20que%20%C3%A7a%20semble%20tout%20de%20m%C3%AAme%20cool%20%21%0D%0A%0D%0A_JMX%20c%27est%20un%20ou" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;t=Feature%20branch%2C%20Feature%20toggle%20pattern" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Feature%20branch%2C%20Feature%20toggle%20pattern%20-%20http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;annotation=Bonsoir%2C%0D%0A%0D%0AHier%20c%27%C3%A9tait%20%5Bdevops%20meetup%5D%28http%3A%2F%2Fparisdevops.fr%2Fblog%2F2011%2F05%2F09%2Fprochain-meetup-le-mercredi-15-juin.html%29%2C%205%C3%A8me%20du%20nom%2C%20o%C3%B9%20j%27ai%20pu%20voir%20que%20JMX%2C%20ce%20n%27%C3%A9tait%20pas%20%2A%2Ama%2A%2A%20vie%20mais%20que%20%C3%A7a%20semble%20tout%20de%20m%C3%AAme%20cool%20%21%0D%0A%0D%0A_JMX%20c%27est%20un%20ou" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Bonsoir%2C%0D%0A%0D%0AHier%20c%27%C3%A9tait%20%5Bdevops%20meetup%5D%28http%3A%2F%2Fparisdevops.fr%2Fblog%2F2011%2F05%2F09%2Fprochain-meetup-le-mercredi-15-juin.html%29%2C%205%C3%A8me%20du%20nom%2C%20o%C3%B9%20j%27ai%20pu%20voir%20que%20JMX%2C%20ce%20n%27%C3%A9tait%20pas%20%2A%2Ama%2A%2A%20vie%20mais%20que%20%C3%A7a%20semble%20tout%20de%20m%C3%AAme%20cool%20%21%0D%0A%0D%0A_JMX%20c%27est%20un%20ou" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;t=Feature%20branch%2C%20Feature%20toggle%20pattern" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;title=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;body=Bonsoir%2C%0D%0A%0D%0AHier%20c%27%C3%A9tait%20%5Bdevops%20meetup%5D%28http%3A%2F%2Fparisdevops.fr%2Fblog%2F2011%2F05%2F09%2Fprochain-meetup-le-mercredi-15-juin.html%29%2C%205%C3%A8me%20du%20nom%2C%20o%C3%B9%20j%27ai%20pu%20voir%20que%20JMX%2C%20ce%20n%27%C3%A9tait%20pas%20%2A%2Ama%2A%2A%20vie%20mais%20que%20%C3%A7a%20semble%20tout%20de%20m%C3%AAme%20cool%20%21%0D%0A%0D%0A_JMX%20c%27est%20un%20ou" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&title=Feature%20branch%2C%20Feature%20toggle%20pattern&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Ffeature-branch-feature-toggle-pattern%2F&amp;submitHeadline=Feature%20branch%2C%20Feature%20toggle%20pattern&amp;submitSummary=Bonsoir%2C%0D%0A%0D%0AHier%20c%27%C3%A9tait%20%5Bdevops%20meetup%5D%28http%3A%2F%2Fparisdevops.fr%2Fblog%2F2011%2F05%2F09%2Fprochain-meetup-le-mercredi-15-juin.html%29%2C%205%C3%A8me%20du%20nom%2C%20o%C3%B9%20j%27ai%20pu%20voir%20que%20JMX%2C%20ce%20n%27%C3%A9tait%20pas%20%2A%2Ama%2A%2A%20vie%20mais%20que%20%C3%A7a%20semble%20tout%20de%20m%C3%AAme%20cool%20%21%0D%0A%0D%0A_JMX%20c%27est%20un%20ou&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/wNMxCjeDceg" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/feature-branch-feature-toggle-pattern/feed/</wfw:commentRss> <slash:comments>4</slash:comments> <feedburner:origLink>http://www.willdurand.fr/feature-branch-feature-toggle-pattern/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=feature-branch-feature-toggle-pattern</feedburner:origLink></item> <item><title>#ParisJS – 7ème édition en bref</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/zr4MSTiV4NI/</link> <comments>http://www.willdurand.fr/parisjs-7eme-edition-en-bref/#comments</comments> <pubDate>Wed, 25 May 2011 22:21:27 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[Non classé]]></category> <category><![CDATA[ParisJS]]></category> <category><![CDATA[Event]]></category> <category><![CDATA[JavaScript]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=917</guid> <description><![CDATA[Bonsoir, Je reviens juste de la 7ème édition du ParisJS et j&#8217;ai adoré. Pourquoi ? Pour les conférences de bon niveau, les gens sympathiques avec certains bien calés et l&#8217;ambiance générale (+ les pizzas&#8230;:-D). En gros, un bon univers qui me correspond bien et voici mon résumé. Développement web pour TV connectées En rapide, c&#8217;est [...]]]></description> <content:encoded><![CDATA[<p>Bonsoir,</p><p>Je reviens juste de la 7ème édition du <a
href="http://parisjs.org/">ParisJS</a> et j&#8217;ai adoré.</p><p><strong>Pourquoi ?</strong> Pour les conférences de bon niveau, les gens sympathiques avec certains bien calés et l&#8217;ambiance générale (+ les pizzas&#8230;:-D). En gros, un bon univers qui me correspond bien et voici mon résumé.</p><h2>Développement web pour TV connectées</h2><p>En rapide, c&#8217;est un vaste sketch, rien de normé, rien de compatible, chacun fait ce qu&#8217;il veut, etc. J&#8217;avais déjà eu l&#8217;aperçu au pôle dédié chez e-TF1 mais là c&#8217;était encore plus démonstratif.</p><p>Pour autant, les TV connectées représentent 40 millions de télés mais seulement 20% sont réellement connectées. A noter que Google (1 million de TV) et Apple (250k télés) ne sont pas les plus véloces.
Les acteurs majeurs sont les créateurs de télés (LG, Samsung, &#8230;), les <a
href="http://fr.wikipedia.org/wiki/Set-top_box"><strong>set-top box</strong></a> (Boxee, AppleTV, &#8230;) et les box opérateurs (Free, SFR, Orange, &#8230;).</p><p>Le cas Samsung a servi de fil d&#8217;ariane sur cette présentation. Je passe les détails mais ce n&#8217;est pas la panacée, il faut même patcher jQuery (problème de innerHTML inutilisable).
J&#8217;ai appris le nom d&#8217;un outil utile : <a
href="http://easyxdm.net/wp/">easy-XDM</a> permettant notamment de dialoguer entre frames de domaines différents.</p><p>Pour conclure, il vaut mieux développer <em>from scratch</em> plutôt que de tenter d&#8217;adapter des existants. Le mieux reste de se constituer une couche d&#8217;abstraction ou de voir du côté de <a
href="http://www.sencha.com/products/touch/">Sencha Touch</a>.
Une librairie devrait sortir et répondra au doux nom de Joshfire, du nom de la boite qui l&#8217;a créée. On a également évoqué les noms de <a
href="http://www.itu.int/itu-t/recommendations/rec.aspx?id=10642"><em>lime</em></a> et de <em>hbbtv</em> dans l&#8217;assemblée.</p><div
style="text-align:center;"> <iframe
src="http://www.slideshare.net/slideshow/embed_code/8107581" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe></div><h2>CouchDB</h2><p>Une bonne pratique lorsqu&#8217;on veut modifier une &laquo;&nbsp;vue&nbsp;&raquo; aka <strong>Map/Reduce</strong> est de créer une nouvelle vue, de laisser l&#8217;indexation se faire et d&#8217;ensuite mettre à jour le code qui utilise cette nouvelle vue. La raison à cela est le temps de recalcule de l&#8217;index qui peut être très long.</p><h2>HTML5 et vidéo</h2><p>L&#8217;intérêt était ici de présenter la vidéo pour utiliser une webcam en HTML5 afin de prendre des photos, vidéos, &#8230;
En vrac, il faut voir du côté du <strong>D</strong>evice <strong>A</strong>pi and <strong>P</strong>olicy <strong>W</strong>orking <strong>G</strong>roup du W3C et du WHATWG (<a
href="http://www.whatwg.org/specs/web-apps/current-work/multipage/dnd.html#video-conferencing-and-peer-to-peer-communication">HTML living standard</a>.</p><p>Des implémentations existent dans Android Stock Browser et PhoneGap.
BlackBerry utilise sa propre implémentation : Webworks BB, tout comme Nokia avec : Nokia WRT.
Mozilla a créé une extension nommée Rainbow pour pouvoir faire <a
href="https://photobooth.mozillalabs.com/">des trucs sympas</a>.</p><h2>Expressivité en JavaScript</h2><p>En voilà une conf qui fait plaisir, normal le gars vient d&#8217;<a
href="http://af83.com/">af83</a>&#8230;</p><p>Utiliser la librairie <a
href="http://documentcloud.github.com/underscore/">underscore.js</a> parce que ça ne mange pas de pain et ça fait plaisir <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> Mais également parce qu&#8217;elle permet de rendre notre code JS <strong>lisible</strong> et là, c&#8217;est une bonne chose ! (Même si tout le monde n&#8217;était pas de cet avis&#8230;)</p><p>Pour éviter <em>la soupe des callbacks</em>, on peut compter sur <a
href="https://github.com/coolaj86/futures">Futures</a> par exemple et de manière générale à tout ce qui répond à Promises/Futures.</p><p>Dernière chose, avec Firefox qui respecte bien la spec JS on peut faire:</p><div
class="codecolorer-container javascript vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="javascript codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #003366; font-weight: bold;">var</span> <span
style="color: #009900;">&#91;</span>a<span
style="color: #339933;">,</span> b<span
style="color: #009900;">&#93;</span> &nbsp;<span
style="color: #339933;">=</span> func<span
style="color: #009900;">&#40;</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span></div></div><p>Cool non ? Et dernier truc: <a
href="http://code.google.com/p/traceur-compiler/">http://code.google.com/p/traceur-compiler/</a>.</p><p>Les slides de François de Metz sont sur son <a
href="https://github.com/francois2metz/showoff-jsexpressiveness">profil Github</a>.</p><h2>Pacmaze experiment</h2><p><a
href="http://pacmaze.com/">http://pacmaze.com/</a>.</p><p>Voilà pour le résumé, court mais avec de bonnes pistes à explorer <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/automatic-updates-process-in-javascript-like-facebook-old-friend-status-updates/' title='Automatic updates process in JavaScript like Facebook old friend status updates'>Automatic updates process in JavaScript like Facebook old friend status updates</a></li><li><a
href='http://www.willdurand.fr/combo-handler-optimiser-le-nombre-de-requetes-http-pour-les-fichiers-css-et-javascript/' title='Combo Handler : Optimiser le nombre de requêtes HTTP pour les fichiers CSS et JavaScript'>Combo Handler : Optimiser le nombre de requêtes HTTP pour les fichiers CSS et JavaScript</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;bodytext=Bonsoir%2C%0D%0A%0D%0AJe%20reviens%20juste%20de%20la%207%C3%A8me%20%C3%A9dition%20du%20%5BParisJS%5D%28http%3A%2F%2Fparisjs.org%2F%29%20et%20j%27ai%20ador%C3%A9.%0D%0A%0D%0A%2A%2APourquoi%20%3F%2A%2A%20Pour%20les%20conf%C3%A9rences%20de%20bon%20niveau%2C%20les%20gens%20sympathiques%20avec%20certains%20bien%20cal%C3%A9s%20et%20l%27ambiance%20g%C3%A9n%C3%A9rale%20%28%2B%20les%20pizzas...%3A-D%29.%20" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;notes=Bonsoir%2C%0D%0A%0D%0AJe%20reviens%20juste%20de%20la%207%C3%A8me%20%C3%A9dition%20du%20%5BParisJS%5D%28http%3A%2F%2Fparisjs.org%2F%29%20et%20j%27ai%20ador%C3%A9.%0D%0A%0D%0A%2A%2APourquoi%20%3F%2A%2A%20Pour%20les%20conf%C3%A9rences%20de%20bon%20niveau%2C%20les%20gens%20sympathiques%20avec%20certains%20bien%20cal%C3%A9s%20et%20l%27ambiance%20g%C3%A9n%C3%A9rale%20%28%2B%20les%20pizzas...%3A-D%29.%20" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;t=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;annotation=Bonsoir%2C%0D%0A%0D%0AJe%20reviens%20juste%20de%20la%207%C3%A8me%20%C3%A9dition%20du%20%5BParisJS%5D%28http%3A%2F%2Fparisjs.org%2F%29%20et%20j%27ai%20ador%C3%A9.%0D%0A%0D%0A%2A%2APourquoi%20%3F%2A%2A%20Pour%20les%20conf%C3%A9rences%20de%20bon%20niveau%2C%20les%20gens%20sympathiques%20avec%20certains%20bien%20cal%C3%A9s%20et%20l%27ambiance%20g%C3%A9n%C3%A9rale%20%28%2B%20les%20pizzas...%3A-D%29.%20" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Bonsoir%2C%0D%0A%0D%0AJe%20reviens%20juste%20de%20la%207%C3%A8me%20%C3%A9dition%20du%20%5BParisJS%5D%28http%3A%2F%2Fparisjs.org%2F%29%20et%20j%27ai%20ador%C3%A9.%0D%0A%0D%0A%2A%2APourquoi%20%3F%2A%2A%20Pour%20les%20conf%C3%A9rences%20de%20bon%20niveau%2C%20les%20gens%20sympathiques%20avec%20certains%20bien%20cal%C3%A9s%20et%20l%27ambiance%20g%C3%A9n%C3%A9rale%20%28%2B%20les%20pizzas...%3A-D%29.%20" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;t=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;body=Bonsoir%2C%0D%0A%0D%0AJe%20reviens%20juste%20de%20la%207%C3%A8me%20%C3%A9dition%20du%20%5BParisJS%5D%28http%3A%2F%2Fparisjs.org%2F%29%20et%20j%27ai%20ador%C3%A9.%0D%0A%0D%0A%2A%2APourquoi%20%3F%2A%2A%20Pour%20les%20conf%C3%A9rences%20de%20bon%20niveau%2C%20les%20gens%20sympathiques%20avec%20certains%20bien%20cal%C3%A9s%20et%20l%27ambiance%20g%C3%A9n%C3%A9rale%20%28%2B%20les%20pizzas...%3A-D%29.%20" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&title=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fparisjs-7eme-edition-en-bref%2F&amp;submitHeadline=%23ParisJS%20-%207%C3%A8me%20%C3%A9dition%20en%20bref&amp;submitSummary=Bonsoir%2C%0D%0A%0D%0AJe%20reviens%20juste%20de%20la%207%C3%A8me%20%C3%A9dition%20du%20%5BParisJS%5D%28http%3A%2F%2Fparisjs.org%2F%29%20et%20j%27ai%20ador%C3%A9.%0D%0A%0D%0A%2A%2APourquoi%20%3F%2A%2A%20Pour%20les%20conf%C3%A9rences%20de%20bon%20niveau%2C%20les%20gens%20sympathiques%20avec%20certains%20bien%20cal%C3%A9s%20et%20l%27ambiance%20g%C3%A9n%C3%A9rale%20%28%2B%20les%20pizzas...%3A-D%29.%20&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/zr4MSTiV4NI" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/parisjs-7eme-edition-en-bref/feed/</wfw:commentRss> <slash:comments>6</slash:comments> <feedburner:origLink>http://www.willdurand.fr/parisjs-7eme-edition-en-bref/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=parisjs-7eme-edition-en-bref</feedburner:origLink></item> <item><title>Tests unitaires et fonctionnels sur un Bundle en Symfony2</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/9KoFxmE4rWA/</link> <comments>http://www.willdurand.fr/tests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2/#comments</comments> <pubDate>Sun, 15 May 2011 11:22:04 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[Symfony2]]></category> <category><![CDATA[PHPUnit]]></category> <category><![CDATA[Tests fonctionnels]]></category> <category><![CDATA[Tests unitaires]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=899</guid> <description><![CDATA[Bonjour, Depuis quelques temps maintenant je travaille à temps complet avec Symfony2. J&#8217;ai écrit quelques bundles puisque, à l&#8217;heure actuelle, il n&#8217;y a pas autant d&#8217;outils fournis avec Symfony2 qu&#8217;avec symfony 1.4. Ecrire un bundle n&#8217;est pas très compliqué mais pour bien le tester, on peut vite rencontrer des problèmes. Jusqu&#8217;à présent, j&#8217;utilisais une manière [...]]]></description> <content:encoded><![CDATA[<p>Bonjour,</p><p>Depuis quelques temps maintenant je travaille à temps complet avec <a
href="http://www.symfony.com"><strong>Symfony2</strong></a>. J&#8217;ai écrit quelques bundles puisque, à l&#8217;heure actuelle, il n&#8217;y a pas autant d&#8217;outils fournis avec <strong>Symfony2</strong> qu&#8217;avec <strong>symfony 1.4</strong>.</p><p>Ecrire un bundle n&#8217;est pas très compliqué mais pour bien le tester, on peut vite rencontrer des problèmes. Jusqu&#8217;à présent, j&#8217;utilisais une manière naïve d&#8217;exécuter mes tests <a
href="https://github.com/sebastianbergmann/phpunit/">PHPUnit</a>. Mes fichiers <code>bootstrap.php</code> allaient chercher le fichier <code>autoload.php</code> dans le projet courant.</p><p>Oui, <strong>projet courant = forte dépendance</strong>.</p><p>Aucun moyen de tester mon bundle en &laquo;&nbsp;vase clos&nbsp;&raquo; et c&#8217;est fort dommage. J&#8217;ai cherché un petit peu et j&#8217;ai trouvé une solution de contournement grâce à l&#8217;ami Kris Wallsmith qui explique comment il <a
href="http://kriswallsmith.net/post/1338263070/how-to-test-a-symfony2-bundle">teste son bundle Symfony2</a>. La solution est bonne puisque il me suffit d&#8217;avoir une arborescence de ce type pour tester aisément mes bundles:</p><pre><code>projects
  |
  |_ Symfony2 (sources)
  |_ Bundle 1
  |_ Bundle 2
  |_ etc
</code></pre><p>Ainsi, je configure un <code>phpunit.xml</code> pour chaque bundle qui modifie la variable <strong>$_SEVER['SYMFONY']</strong> de la sorte:</p><div
class="codecolorer-container xml vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;php<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;server</span> <span
style="color: #000066;">name</span>=<span
style="color: #ff0000;">&quot;SYMFONY&quot;</span> <span
style="color: #000066;">value</span>=<span
style="color: #ff0000;">&quot;../Symfony2/src&quot;</span> <span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/php<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div><p>Cette configuration permet de s&#8217;affranchir d&#8217;un projet complet pour les tests <strong>unitaires</strong>. Seulement j&#8217;ai rencontré deux problèmes:</p><ul><li>Impossible de faire des tests fonctionnels.</li><li>Impossible de tester le bundle en intégration continue.</li></ul><p>Or, l&#8217;intégration continue pour moi, c&#8217;est vital (ou presque). J&#8217;ai donc cherché une meilleure solution qui prend en compte les deux problèmes ci-dessus.</p><h2>Tests unitaires d&#8217;un bundle</h2><p>Pour les tests unitaires, c&#8217;est assez simple et assez proche de la méthode de Kris. La différence vient du fait que le bundle embarque les sources de Symfony2 en <strong>fixtures</strong>.</p><p>Le fichier <code>phpunit.xml.dist</code> prend cette forme:</p><div
class="codecolorer-container xml vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;?xml</span> <span
style="color: #000066;">version</span>=<span
style="color: #ff0000;">&quot;1.0&quot;</span> <span
style="color: #000066;">encoding</span>=<span
style="color: #ff0000;">&quot;UTF-8&quot;</span><span
style="color: #000000; font-weight: bold;">?&gt;</span></span><br
/> <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;phpunit</span> <span
style="color: #000066;">backupGlobals</span>=<span
style="color: #ff0000;">&quot;false&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">backupStaticAttributes</span>=<span
style="color: #ff0000;">&quot;false&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">colors</span>=<span
style="color: #ff0000;">&quot;true&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">convertErrorsToExceptions</span>=<span
style="color: #ff0000;">&quot;true&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">convertNoticesToExceptions</span>=<span
style="color: #ff0000;">&quot;true&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">convertWarningsToExceptions</span>=<span
style="color: #ff0000;">&quot;true&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">processIsolation</span>=<span
style="color: #ff0000;">&quot;false&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">stopOnFailure</span>=<span
style="color: #ff0000;">&quot;false&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">syntaxCheck</span>=<span
style="color: #ff0000;">&quot;false&quot;</span></span><br
/> <span
style="color: #009900;"> &nbsp; &nbsp;<span
style="color: #000066;">bootstrap</span>=<span
style="color: #ff0000;">&quot;./Tests/bootstrap.php&quot;</span><span
style="color: #000000; font-weight: bold;">&gt;</span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;php<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;server</span> <span
style="color: #000066;">name</span>=<span
style="color: #ff0000;">&quot;SYMFONY&quot;</span> <span
style="color: #000066;">value</span>=<span
style="color: #ff0000;">&quot;./Fixtures/symfony/src&quot;</span> <span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/php<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;testsuites<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;testsuite</span> <span
style="color: #000066;">name</span>=<span
style="color: #ff0000;">&quot;MyBundle Test Suite&quot;</span><span
style="color: #000000; font-weight: bold;">&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;directory</span> <span
style="color: #000066;">suffix</span>=<span
style="color: #ff0000;">&quot;Test.php&quot;</span><span
style="color: #000000; font-weight: bold;">&gt;</span></span>./Tests<span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/directory<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/testsuite<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/testsuites<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;filter<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;whitelist<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;directory<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span>./<span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/directory<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;exclude<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;directory<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span>./Tests<span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/directory<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/exclude<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/whitelist<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/filter<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/phpunit<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div><p>Le fichier <code>Tests/bootstrap.php</code> par défaut est celui-ci:</p><div
class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #000000; font-weight: bold;">&lt;?php</span><br
/> <br
/> <span
style="color: #b1b100;">require_once</span> <span
style="color: #000088;">$_SERVER</span><span
style="color: #009900;">&#91;</span><span
style="color: #0000ff;">'SYMFONY'</span><span
style="color: #009900;">&#93;</span><span
style="color: #339933;">.</span><span
style="color: #0000ff;">'/Symfony/Component/ClassLoader/UniversalClassLoader.php'</span><span
style="color: #339933;">;</span><br
/> <br
/> <span
style="color: #000000; font-weight: bold;">use</span> Symfony\Component\ClassLoader\UniversalClassLoader<span
style="color: #339933;">;</span><br
/> <br
/> <span
style="color: #000088;">$loader</span> <span
style="color: #339933;">=</span> <span
style="color: #000000; font-weight: bold;">new</span> UniversalClassLoader<span
style="color: #009900;">&#40;</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <span
style="color: #000088;">$loader</span><span
style="color: #339933;">-&gt;</span><span
style="color: #004000;">registerNamespace</span><span
style="color: #009900;">&#40;</span><span
style="color: #0000ff;">'Symfony'</span><span
style="color: #339933;">,</span> <span
style="color: #000088;">$_SERVER</span><span
style="color: #009900;">&#91;</span><span
style="color: #0000ff;">'SYMFONY'</span><span
style="color: #009900;">&#93;</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <span
style="color: #000088;">$loader</span><span
style="color: #339933;">-&gt;</span><span
style="color: #004000;">register</span><span
style="color: #009900;">&#40;</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <br
/> <a
href="http://www.php.net/spl_autoload_register"><span
style="color: #990000;">spl_autoload_register</span></a><span
style="color: #009900;">&#40;</span><span
style="color: #000000; font-weight: bold;">function</span><span
style="color: #009900;">&#40;</span><span
style="color: #000088;">$class</span><span
style="color: #009900;">&#41;</span><br
/> <span
style="color: #009900;">&#123;</span><br
/> &nbsp; &nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #009900;">&#40;</span><span
style="color: #cc66cc;">0</span> <span
style="color: #339933;">===</span> <a
href="http://www.php.net/strpos"><span
style="color: #990000;">strpos</span></a><span
style="color: #009900;">&#40;</span><span
style="color: #000088;">$class</span><span
style="color: #339933;">,</span> <span
style="color: #0000ff;">'My\\Bundle\')) {<br
/> &nbsp; &nbsp; &nbsp; &nbsp; $path = implode('</span><span
style="color: #339933;">/</span><span
style="color: #0000ff;">', array_slice(explode('</span>\<span
style="color: #0000ff;">', $class), 2)).'</span><span
style="color: #339933;">.</span>php<span
style="color: #0000ff;">';<br
/> &nbsp; &nbsp; &nbsp; &nbsp; require_once __DIR__.'</span><span
style="color: #339933;">/../</span><span
style="color: #0000ff;">'.$path;<br
/> &nbsp; &nbsp; &nbsp; &nbsp; return true;<br
/> &nbsp; &nbsp; }<br
/> });</span></div></div><p>Et pour terminer, il faudra ajouter le <a
href="https://github.com/symfony/symfony">repo Git</a> de Symfony2 en submodule du bundle dans <code>Fixtures/symfony</code>:</p><div
class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #c20cb9; font-weight: bold;">git</span> submodule add <span
style="color: #c20cb9; font-weight: bold;">git</span>:<span
style="color: #000000; font-weight: bold;">//</span>github.com<span
style="color: #000000; font-weight: bold;">/</span>symfony<span
style="color: #000000; font-weight: bold;">/</span>symfony.git &nbsp;Fixtures<span
style="color: #000000; font-weight: bold;">/</span>symfony</div></div><p>Pour lancer les tests unitaires, nous n&#8217;avons plus qu&#8217;à faire:</p><div
class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #c20cb9; font-weight: bold;">git</span> submodule update <span
style="color: #660033;">--init</span><br
/> phpunit <span
style="color: #660033;">-c</span> phpunit.xml.dist</div></div><p>Si l&#8217;on souhaite tester son bundle sur la dernière version de Symfony2 en permanence, ce qui semble une bonne idée pour avoir un bundle à jour, on peut intercaler la commande suivante entre les deux précédentes:</p><div
class="codecolorer-container bash vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #c20cb9; font-weight: bold;">git</span> submodule foreach <span
style="color: #c20cb9; font-weight: bold;">git</span> pull origin master</div></div><p>Voilà pour cette partie, un aperçu avec le <a
href="http://dev.bazingaweb.fr/JqueryUiBundle/">JqueryUiBundle</a>:</p><ul><li>La page Jenkins : <a
href="http://ci.bazingaweb.fr/view/Symfony2/job/JqueryUiBundle/">JqueryUiBundle @ Jenkins</a>.</li><li>Le repo Github: <a
href="https://github.com/Bazinga/JqueryUiBundle">JqueryUiBundle @ Github</a>.</li></ul><h2>Tests fonctionnels</h2><p>Pour les tests fonctionnels, il nous faut un projet en fixtures comme on le faisait en symfony 1.x. Mais ce qui est bien, c&#8217;est que nous n&#8217;avons pas besoin de tout et que l&#8217;on peut <em>customiser</em> son projet de test. On peut probablement enlever les dossiers <code>web/</code> et <code>src/</code> et retirer le plus de <strong>vendors</strong> possible. <strong>L&#8217;important est d&#8217;avoir la console qui fonctionne, signe que le projet reste cohérent.</strong></p><p>Pour cela, on va créer un projet dans <code>Fixtures/testProject</code>. Ce projet pourra être modifié à votre guise mais n&#8217;oubliez pas que c&#8217;est le projet qui sert pour les tests ! Pour rester à jour au niveau des <em>vendors</em> (Symfony, Twig, &#8230;) le mieux est de les ajouter en <strong>submodules</strong> du bundle. Ainsi, on exécutera les mêmes commandes pour lancer nos tests.</p><p><strong>Note:</strong> Ce projet de test ne doit pas embarquer le bundle dans lequel il se trouve.</p><p>Le fichier <code>phpunit.xml.dist</code> va rester celui préconisé dans la <a
href="http://symfony.com/doc/current/book/testing.html#testing-framework">documentation officielle de Symfony2</a>.</p><p>Mais le fichier <code>Tests/bootstrap.php</code> va changer:</p><div
class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span
style="color: #000000; font-weight: bold;">&lt;?php</span><br
/> <br
/> <span
style="color: #b1b100;">require_once</span> __DIR__<span
style="color: #339933;">.</span><span
style="color: #0000ff;">'/../Fixtures/testProject/app/autoload.php'</span><span
style="color: #339933;">;</span><br
/> <br
/> <span
style="color: #000088;">$filesystem</span> <span
style="color: #339933;">=</span> <span
style="color: #000000; font-weight: bold;">new</span> \Symfony\Component\HttpKernel\Util\Filesystem<span
style="color: #009900;">&#40;</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <span
style="color: #000088;">$filesystem</span><span
style="color: #339933;">-&gt;</span><span
style="color: #004000;">remove</span><span
style="color: #009900;">&#40;</span>__DIR__<span
style="color: #339933;">.</span><span
style="color: #0000ff;">'/../Fixtures/testProject/app/cache'</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <span
style="color: #000088;">$filesystem</span><span
style="color: #339933;">-&gt;</span><span
style="color: #004000;">remove</span><span
style="color: #009900;">&#40;</span>__DIR__<span
style="color: #339933;">.</span><span
style="color: #0000ff;">'/../Fixtures/testProject/app/logs'</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <span
style="color: #000088;">$filesystem</span><span
style="color: #339933;">-&gt;</span><span
style="color: #004000;">mkdir</span><span
style="color: #009900;">&#40;</span>__DIR__<span
style="color: #339933;">.</span><span
style="color: #0000ff;">'/../Fixtures/testProject/app/cache'</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span><br
/> <span
style="color: #000088;">$filesystem</span><span
style="color: #339933;">-&gt;</span><span
style="color: #004000;">mkdir</span><span
style="color: #009900;">&#40;</span>__DIR__<span
style="color: #339933;">.</span><span
style="color: #0000ff;">'/../Fixtures/testProject/app/logs'</span><span
style="color: #009900;">&#41;</span><span
style="color: #339933;">;</span></div></div><p>Celui-ci va permettre de réinitialiser le <em>cache</em> et les <em>logs</em> avant chaque phase de tests.</p><p>Dernière modification à effectuer sur le fichier <code>Fixtures/testProject/app/autoload.php</code> du projet de test en ajoutant le code ci-dessous à la fin:</p><div
class="codecolorer-container php vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="php codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><a
href="http://www.php.net/spl_autoload_register"><span
style="color: #990000;">spl_autoload_register</span></a><span
style="color: #009900;">&#40;</span><span
style="color: #000000; font-weight: bold;">function</span><span
style="color: #009900;">&#40;</span><span
style="color: #000088;">$class</span><span
style="color: #009900;">&#41;</span> <span
style="color: #009900;">&#123;</span><br
/> &nbsp; &nbsp; <span
style="color: #b1b100;">if</span> <span
style="color: #009900;">&#40;</span><span
style="color: #cc66cc;">0</span> <span
style="color: #339933;">===</span> <a
href="http://www.php.net/strpos"><span
style="color: #990000;">strpos</span></a><span
style="color: #009900;">&#40;</span><span
style="color: #000088;">$class</span><span
style="color: #339933;">,</span> <span
style="color: #0000ff;">'My\Bundle\')) {<br
/> &nbsp; &nbsp; &nbsp; &nbsp; $path = implode('</span><span
style="color: #339933;">/</span><span
style="color: #0000ff;">', array_slice(explode('</span>\<span
style="color: #0000ff;">', $class), 2)).'</span><span
style="color: #339933;">.</span>php<span
style="color: #0000ff;">';<br
/> &nbsp; &nbsp; &nbsp; &nbsp; require_once __DIR__.'</span><span
style="color: #339933;">/../../../</span><span
style="color: #0000ff;">'.$path;<br
/> &nbsp; &nbsp; &nbsp; &nbsp; return true;<br
/> &nbsp; &nbsp; }<br
/> });</span></div></div><p>Voilà, avec cette configuration, nous pouvons lancer nos tests fonctionnels sans soucis et de manière propre puisque l&#8217;environnement qui sera créé est bien celui de notre projet de test que nous maîtrisons bien. On peut ajouter de la configuration dans ce projet de test comme le chargement de routes, le paramétrage du bundle, etc&#8230;</p><p>Exemple d&#8217;utilisation avec le <a
href="http://dev.bazingaweb.fr/ExposeRoutingBundle/">ExposeRoutingBundle</a>:</p><ul><li>La page Jenkins : <a
href="http://ci.bazingaweb.fr/view/Symfony2/job/ExposeRoutingBundle/">ExposeRoutingBundle @ Jenkins</a>.</li><li>Le repo Github: <a
href="https://github.com/Bazinga/ExposeRoutingBundle">ExposeRoutingBundle @ Github</a>.</li></ul><p>Avec ces deux astuces, tout bundle peut être testé de manière autonome et dans la vision &laquo;&nbsp;à la Symfony2&#8243;, c&#8217;est plutôt intéressant <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/symfony-rencontre-hudson-mantis-et-les-autres/' title='symfony rencontre Hudson, Mantis et les autres'>symfony rencontre Hudson, Mantis et les autres</a></li><li><a
href='http://www.willdurand.fr/faut-il-tester-les-tests/' title='Faut-il tester&#8230; les tests ?'>Faut-il tester&#8230; les tests ?</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011-journee-2/' title='Symfony live 2011 &#8211; Journée 2'>Symfony live 2011 &#8211; Journée 2</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011-journee-1/' title='Symfony live 2011 &#8211; Journée 1'>Symfony live 2011 &#8211; Journée 1</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011/' title='Symfony live 2011'>Symfony live 2011</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;bodytext=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20maintenant%20je%20travaille%20%C3%A0%20temps%20complet%20avec%20%5B%2A%2ASymfony2%2A%2A%5D%28http%3A%2F%2Fwww.symfony.com%29.%20J%27ai%20%C3%A9crit%20quelques%20bundles%20puisque%2C%20%C3%A0%20l%27heure%20actuelle%2C%20il%20n%27y%20a%20pas%20autant%20d%27outils%20fournis%20avec%20%2A%2ASymfony2%2A%2A%20qu%27avec%20%2A%2Asymfon" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;notes=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20maintenant%20je%20travaille%20%C3%A0%20temps%20complet%20avec%20%5B%2A%2ASymfony2%2A%2A%5D%28http%3A%2F%2Fwww.symfony.com%29.%20J%27ai%20%C3%A9crit%20quelques%20bundles%20puisque%2C%20%C3%A0%20l%27heure%20actuelle%2C%20il%20n%27y%20a%20pas%20autant%20d%27outils%20fournis%20avec%20%2A%2ASymfony2%2A%2A%20qu%27avec%20%2A%2Asymfon" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;t=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2%20-%20http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;annotation=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20maintenant%20je%20travaille%20%C3%A0%20temps%20complet%20avec%20%5B%2A%2ASymfony2%2A%2A%5D%28http%3A%2F%2Fwww.symfony.com%29.%20J%27ai%20%C3%A9crit%20quelques%20bundles%20puisque%2C%20%C3%A0%20l%27heure%20actuelle%2C%20il%20n%27y%20a%20pas%20autant%20d%27outils%20fournis%20avec%20%2A%2ASymfony2%2A%2A%20qu%27avec%20%2A%2Asymfon" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20maintenant%20je%20travaille%20%C3%A0%20temps%20complet%20avec%20%5B%2A%2ASymfony2%2A%2A%5D%28http%3A%2F%2Fwww.symfony.com%29.%20J%27ai%20%C3%A9crit%20quelques%20bundles%20puisque%2C%20%C3%A0%20l%27heure%20actuelle%2C%20il%20n%27y%20a%20pas%20autant%20d%27outils%20fournis%20avec%20%2A%2ASymfony2%2A%2A%20qu%27avec%20%2A%2Asymfon" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;t=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;body=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20maintenant%20je%20travaille%20%C3%A0%20temps%20complet%20avec%20%5B%2A%2ASymfony2%2A%2A%5D%28http%3A%2F%2Fwww.symfony.com%29.%20J%27ai%20%C3%A9crit%20quelques%20bundles%20puisque%2C%20%C3%A0%20l%27heure%20actuelle%2C%20il%20n%27y%20a%20pas%20autant%20d%27outils%20fournis%20avec%20%2A%2ASymfony2%2A%2A%20qu%27avec%20%2A%2Asymfon" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&title=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Ftests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2%2F&amp;submitHeadline=Tests%20unitaires%20et%20fonctionnels%20sur%20un%20Bundle%20en%20Symfony2&amp;submitSummary=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20maintenant%20je%20travaille%20%C3%A0%20temps%20complet%20avec%20%5B%2A%2ASymfony2%2A%2A%5D%28http%3A%2F%2Fwww.symfony.com%29.%20J%27ai%20%C3%A9crit%20quelques%20bundles%20puisque%2C%20%C3%A0%20l%27heure%20actuelle%2C%20il%20n%27y%20a%20pas%20autant%20d%27outils%20fournis%20avec%20%2A%2ASymfony2%2A%2A%20qu%27avec%20%2A%2Asymfon&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/9KoFxmE4rWA" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/tests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/tests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2</feedburner:origLink></item> <item><title>Symfony, Jenkins &amp; co</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/F4EdmVMMP_4/</link> <comments>http://www.willdurand.fr/symfony-jenkins-co/#comments</comments> <pubDate>Tue, 22 Mar 2011 00:34:26 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[symfony]]></category> <category><![CDATA[Hudson]]></category> <category><![CDATA[Pdepend]]></category> <category><![CDATA[phpcpd]]></category> <category><![CDATA[PhpDocumentor]]></category> <category><![CDATA[phploc]]></category> <category><![CDATA[phpmd]]></category> <category><![CDATA[PHP_CodeSniffer]]></category> <category><![CDATA[Symfony]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=880</guid> <description><![CDATA[Bonjour, Depuis quelques temps j&#8217;ai repris mes travaux déjà énoncés symfony rencontre Hudson, Mantis et les autres. J&#8217;ai mis à disposition un template générique d&#8217;un build.xml pour Phing exclusivement, accessible sur mon Github : jenkins-phing-symfony. Il permet d&#8217;analyser son code symfony 1.x avec à peu près tous les outils en vogue du moment. A ce [...]]]></description> <content:encoded><![CDATA[<p>Bonjour,</p><p>Depuis quelques temps j&#8217;ai repris mes travaux déjà énoncés <a
href="http://www.willdurand.fr/symfony-rencontre-hudson-mantis-et-les-autres/">symfony rencontre Hudson, Mantis et les autres</a>.
J&#8217;ai mis à disposition un <em>template générique</em> d&#8217;un <code>build.xml</code> pour <a
href="http://phing.info/trac/"><strong>Phing</strong></a> exclusivement, accessible sur mon <a
href="http://github.com/willdurand">Github</a> : <a
href="https://github.com/willdurand/jenkins-phing-symfony"><strong>jenkins-phing-symfony</strong></a>.
Il permet d&#8217;analyser son code <strong>symfony 1.x</strong> avec à peu près tous les outils en vogue du moment.</p><p>A ce propos, <a
href="http://github.com/sebastianbergmann/phploc">PHPLoc</a> ne comporte pas de tâche Phing mais <a
href="http://github.com/raphaelstolt">Raphael Stolt</a> en a écrit une qui semble fonctionner : <a
href="https://github.com/raphaelstolt/phploc-phing">phploc-phing</a>.</p><p>A noter également qu&#8217;il faut passer une variable à ce script pour indiquer le nom du projet:</p><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; phing main -DprojectName=$JOB_NAME</div></div><p>Plusieurs <em>targets</em> sont disponibles :</p><ul><li><code>main</code> : Lance tout ce qui suit ;</li><li><code>clean</code> ;</li><li><code>pdepend</code> : Lance l&#8217;analyse de code statique avec <a
href="http://pdepend.org/">PHP Depend</a> ;</li><li><code>phpcpd</code> : Lance l&#8217;analyse de code dupliqué <a
href="https://github.com/sebastianbergmann/phpcpd">PHPCPD</a> ;</li><li><code>phpcs</code> : Lance l&#8217;analyse checkstyle avec <a
href="http://pear.php.net/package/PHP_CodeSniffer">PHP_CodeSniffer</a> ;</li><li><code>phpdoc</code> : Lance la génération de la documentation avec <a
href="http://www.phpdoc.org/">phpDocumentor</a> ;</li><li><code>phploc</code> : Lance l&#8217;analyse <a
href="http://github.com/sebastianbergmann/phploc">PHPLoc</a> ;</li><li><code>phpmd</code> : Lance l&#8217;analyse <a
href="http://phpmd.org/">PHP Mess Detector</a>.</li></ul><p>D&#8217;autre part, j&#8217;ai mis à jour mes règles <strong>Checkstyle</strong> (<a
href="http://pear.php.net/package/PHP_CodeSniffer">PHP_CodeSniffer</a>) pour <strong>symfony 1.x</strong> : <a
href="http://github.com/willdurand/phpcs-symfony"><strong>phpcs-symfony</strong></a>.</p><div
class="codecolorer-container xml vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="xml codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;?xml</span> <span
style="color: #000066;">version</span>=<span
style="color: #ff0000;">&quot;1.0&quot;</span><span
style="color: #000000; font-weight: bold;">?&gt;</span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;ruleset</span> <span
style="color: #000066;">name</span>=<span
style="color: #ff0000;">&quot;Symfony&quot;</span><span
style="color: #000000; font-weight: bold;">&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;description<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span>symfony coding standard<span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/description<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Tab indentation --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Generic.WhiteSpace.DisallowTabIndent&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- symfony uses 2 spaces to indent --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Symfony.WhiteSpace.ScopeIndent&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Generic.ControlStructures.InlineControlStructure&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Symfony.ControlStructures.ControlSignature&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- ensures there is no space after cast tokens --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Generic.Formatting.SpaceAfterCast&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- ensures that variables are not passed by reference when calling a function --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Generic.Functions.CallTimePassByReference&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- PHP constants should be lowercase --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Generic.PHP.LowerCaseConstant&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- No spaces on square brackets --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.Arrays.ArrayBracketSpacing&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Don't allow ELSEIF, just ELSE IF --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.ControlStructures.ElseIfDeclaration&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Ensures there is a space between each condition of foreach loops --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.ControlStructures.ForEachLoopDeclaration&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Ensures there is a space between each condition of for loops --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.ControlStructures.ForLoopDeclaration&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Ensures all control structure keyworkds are lowercase --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.ControlStructures.LowercaseDeclaration&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Ensures all calls to inbuilt PHP functions are lowercase --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.PHP.LowercasePHPFunctions&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Verifies that class members have scope modifiers --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.Scope.MemberVarScope&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #808080; font-style: italic;">&lt;!-- Verifies that class members have scope modifiers --&gt;</span><br
/> &nbsp; &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;rule</span> <span
style="color: #000066;">ref</span>=<span
style="color: #ff0000;">&quot;Squiz.Scope.MethodScope&quot;</span><span
style="color: #000000; font-weight: bold;">/&gt;</span></span><br
/> &nbsp; &nbsp; <span
style="color: #009900;"><span
style="color: #000000; font-weight: bold;">&lt;/ruleset<span
style="color: #000000; font-weight: bold;">&gt;</span></span></span></div></div><p>Après exécution sur mes projets, ces règles permettent de bien respecter les standards imposés par symfony <strong>1.x</strong> (uniquement).</p><p>Voilà pour les nouvelles <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/symfony-rencontre-hudson-mantis-et-les-autres/' title='symfony rencontre Hudson, Mantis et les autres'>symfony rencontre Hudson, Mantis et les autres</a></li><li><a
href='http://www.willdurand.fr/faut-il-tester-les-tests/' title='Faut-il tester&#8230; les tests ?'>Faut-il tester&#8230; les tests ?</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011/' title='Symfony live 2011'>Symfony live 2011</a></li><li><a
href='http://www.willdurand.fr/creation-automatique-dun-projet-symfony-mysql-git-et-apache2/' title='Création automatique d&#8217;un projet symfony + MySQL + Git et Apache2'>Création automatique d&#8217;un projet symfony + MySQL + Git et Apache2</a></li><li><a
href='http://www.willdurand.fr/deploiement-automatise-avec-capistrano-et-git-pour-symfony-et-diem/' title='Déploiement automatisé avec Capistrano et Git pour symfony et Diem'>Déploiement automatisé avec Capistrano et Git pour symfony et Diem</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;title=%20Symfony%2C%20Jenkins%20%26%20co&amp;bodytext=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20j%27ai%20repris%20mes%20travaux%20d%C3%A9j%C3%A0%20%C3%A9nonc%C3%A9s%20%5Bsymfony%20rencontre%20Hudson%2C%20Mantis%20et%20les%20autres%5D%28http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-rencontre-hudson-mantis-et-les-autres%2F%29.%0D%0AJ%27ai%20mis%20%C3%A0%20disposition%20un%20_template%20g%C3%A9n%C3%A9rique_%20d" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;title=%20Symfony%2C%20Jenkins%20%26%20co" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;title=%20Symfony%2C%20Jenkins%20%26%20co&amp;notes=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20j%27ai%20repris%20mes%20travaux%20d%C3%A9j%C3%A0%20%C3%A9nonc%C3%A9s%20%5Bsymfony%20rencontre%20Hudson%2C%20Mantis%20et%20les%20autres%5D%28http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-rencontre-hudson-mantis-et-les-autres%2F%29.%0D%0AJ%27ai%20mis%20%C3%A0%20disposition%20un%20_template%20g%C3%A9n%C3%A9rique_%20d" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;t=%20Symfony%2C%20Jenkins%20%26%20co" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=%20Symfony%2C%20Jenkins%20%26%20co%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;title=%20Symfony%2C%20Jenkins%20%26%20co&amp;annotation=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20j%27ai%20repris%20mes%20travaux%20d%C3%A9j%C3%A0%20%C3%A9nonc%C3%A9s%20%5Bsymfony%20rencontre%20Hudson%2C%20Mantis%20et%20les%20autres%5D%28http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-rencontre-hudson-mantis-et-les-autres%2F%29.%0D%0AJ%27ai%20mis%20%C3%A0%20disposition%20un%20_template%20g%C3%A9n%C3%A9rique_%20d" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=%20Symfony%2C%20Jenkins%20%26%20co&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;title=%20Symfony%2C%20Jenkins%20%26%20co&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20j%27ai%20repris%20mes%20travaux%20d%C3%A9j%C3%A0%20%C3%A9nonc%C3%A9s%20%5Bsymfony%20rencontre%20Hudson%2C%20Mantis%20et%20les%20autres%5D%28http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-rencontre-hudson-mantis-et-les-autres%2F%29.%0D%0AJ%27ai%20mis%20%C3%A0%20disposition%20un%20_template%20g%C3%A9n%C3%A9rique_%20d" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;t=%20Symfony%2C%20Jenkins%20%26%20co" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=%20Symfony%2C%20Jenkins%20%26%20co&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;title=%20Symfony%2C%20Jenkins%20%26%20co&amp;body=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20j%27ai%20repris%20mes%20travaux%20d%C3%A9j%C3%A0%20%C3%A9nonc%C3%A9s%20%5Bsymfony%20rencontre%20Hudson%2C%20Mantis%20et%20les%20autres%5D%28http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-rencontre-hudson-mantis-et-les-autres%2F%29.%0D%0AJ%27ai%20mis%20%C3%A0%20disposition%20un%20_template%20g%C3%A9n%C3%A9rique_%20d" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&title=%20Symfony%2C%20Jenkins%20%26%20co&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-jenkins-co%2F&amp;submitHeadline=%20Symfony%2C%20Jenkins%20%26%20co&amp;submitSummary=Bonjour%2C%0D%0A%0D%0ADepuis%20quelques%20temps%20j%27ai%20repris%20mes%20travaux%20d%C3%A9j%C3%A0%20%C3%A9nonc%C3%A9s%20%5Bsymfony%20rencontre%20Hudson%2C%20Mantis%20et%20les%20autres%5D%28http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-rencontre-hudson-mantis-et-les-autres%2F%29.%0D%0AJ%27ai%20mis%20%C3%A0%20disposition%20un%20_template%20g%C3%A9n%C3%A9rique_%20d&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/F4EdmVMMP_4" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/symfony-jenkins-co/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/symfony-jenkins-co/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=symfony-jenkins-co</feedburner:origLink></item> <item><title>Symfony live 2011 – Journée 2</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/tjJa5Cmh9IU/</link> <comments>http://www.willdurand.fr/symfony-live-2011-journee-2/#comments</comments> <pubDate>Mon, 07 Mar 2011 11:23:39 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[SfLive]]></category> <category><![CDATA[symfony]]></category> <category><![CDATA[conférence]]></category> <category><![CDATA[symfony-live]]></category> <category><![CDATA[Symfony2]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=871</guid> <description><![CDATA[ Symfony2 from the trenches Bon, c&#8217;était une liste des features de Sf2, les slides suffisent à expliquer ce qui a été dit.  Introducting Assetics &#171;&#160;If you haven’t optimized frontend, you haven’t optimized.&#160;&#187; Beaucoup d&#8217;outils existent pour gérer ses assets : yui compressor, sass, less, jsmin, coffeScript, cssEmbed, sprockets, stylus, pcaker, … Aucun n&#8217;est écrit en [...]]]></description> <content:encoded><![CDATA[<h2> Symfony2 from the trenches</h2><p>Bon, c&#8217;était une liste des features de Sf2, les slides suffisent à expliquer ce qui a été dit.</p><div
style="text-align:center"><iframe
src="https://docs.google.com/present/embed?id=dfzg6stg_8fp9jksfw" frameborder="0" width="410" height="342"></iframe></div><h2> Introducting Assetics</h2><p><em>&laquo;&nbsp;If you haven’t optimized frontend, you haven’t optimized.&nbsp;&raquo;</em></p><p>Beaucoup d&#8217;outils existent pour gérer ses assets : yui compressor, sass, less, jsmin, coffeScript, cssEmbed, sprockets, stylus, pcaker, … Aucun n&#8217;est écrit en PHP ⇒ Assetic ! (Viens du mot &laquo;&nbsp;asceticism&nbsp;&raquo;).</p><h4>AsseticBundle</h4><p>Assetic : dump –watch</p><div
style="text-align:center"><div
id="__ss_6869262"> <strong
style="display:block;margin:12px 0 4px"><a
href="http://www.slideshare.net/kriswallsmith/introducing-assetic-asset-management-for-php-53" title="Introducing Assetic: Asset Management for PHP 5.3">Introducing Assetic: Asset Management for PHP 5.3</a></strong> <object
id="__sse6869262" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=asseticsflive11sanfran-110209181138-phpapp01&#038;stripped_title=introducing-assetic-asset-management-for-php-53&#038;userName=kriswallsmith" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/> <embed
name="__sse6869262" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=asseticsflive11sanfran-110209181138-phpapp01&#038;stripped_title=introducing-assetic-asset-management-for-php-53&#038;userName=kriswallsmith" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> </object><div
style="padding:5px 0 12px"> View more <a
href="http://www.slideshare.net/">presentations</a> from <a
href="http://www.slideshare.net/kriswallsmith">Kris Wallsmith</a></div></div></div><h2>HTTP Cache</h2><p>Lire la documentation HTTP (la RFC là, vous savez <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> ).</p><p>Deux types de cache existent :</p><h4>http expiration : cache-control, expires</h4><ul><li><code>expires</code> : utilise les dates spécifiées dans la RFC C1123 ⇒ <code>gmdate()</code></li><li><code>cache-control</code> : à utiliser contrairement à expires.</li><li>L&#8217;expiration permet d&#8217;accroître le nombre de requêtes possible sur son serveur.</li></ul><h4>http validation : last-modified, etags</h4><ul><li>304 not motified, last-modified/ if-modified-since</li><li>La validation préserve la bande passante !</li></ul><p>PHP ajoute un header de ce type dès lors qu&#8217;il y a une session :</p><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; cache-control : no-store, no-data, must-revalidate, pre-check=0,post-check=0</div></div><h2>Proxy cache</h2><p>Shared cache, client side</p><h2>Gateway cache</h2><p>~proxy but server side, CDNs</p><h2>Varnish</h2><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; cache-control : s-maxage=99 (shared max age)</div></div><h2>Symfony2 en pièces détachées</h2><ul><li>Escaping enlevé de Sf2</li><li><code>transChoice()</code> permet de gérer la pluralisation</li></ul><div
style="text-align: center"><div
id="__ss_7153587"> <strong
style="display:block;margin:12px 0 4px"><a
href="http://www.slideshare.net/hhamon/symfony2-en-pices-dtaches" title="Symfony2 en pièces détachées">Symfony2 en pièces détachées</a></strong> <object
id="__sse7153587" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2-pieces-detachees-110304160948-phpapp01&#038;stripped_title=symfony2-en-pices-dtaches&#038;userName=hhamon" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/> <embed
name="__sse7153587" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2-pieces-detachees-110304160948-phpapp01&#038;stripped_title=symfony2-en-pices-dtaches&#038;userName=hhamon" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> </object><div
style="padding:5px 0 12px"> View more <a
href="http://www.slideshare.net/">presentations</a> from <a
href="http://www.slideshare.net/hhamon">Hugo Hamon</a></div></div></div><h2>Avis global</h2><p>Génial, vraiment. J&#8217;ai pu rencontré pas mal de gens intéressants. Les conférences étaient toutes sympathiques et le cadre agréable. J&#8217;ai vraiment passé deux bonnes journées et je remercie <a
href="http://www.sensio.com/">Sensio</a> de m&#8217;y avoir invité. Vivement l&#8217;année prochaine !</p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/symfony-live-2011-journee-1/' title='Symfony live 2011 &#8211; Journée 1'>Symfony live 2011 &#8211; Journée 1</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011/' title='Symfony live 2011'>Symfony live 2011</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;bodytext=%23%23%C2%A0Symfony2%20from%20the%20trenches%0D%0A%0D%0ABon%2C%20c%27%C3%A9tait%20une%20liste%20des%20features%20de%20Sf2%2C%20les%20slides%20suffisent%20%C3%A0%20expliquer%20ce%20qui%20a%20%C3%A9t%C3%A9%20dit.%0D%0A%0D%0A%0D%0A%0D%0A%23%23%C2%A0Introducting%20Assetics%0D%0A%0D%0A_%22If%20you%20haven%E2%80%99t%20optimized%20frontend%2C%20you%20haven%E2%80%99t%20optimized.%22_%0D%0A%0D%0ABeaucoup%20d%27o" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%202" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;notes=%23%23%C2%A0Symfony2%20from%20the%20trenches%0D%0A%0D%0ABon%2C%20c%27%C3%A9tait%20une%20liste%20des%20features%20de%20Sf2%2C%20les%20slides%20suffisent%20%C3%A0%20expliquer%20ce%20qui%20a%20%C3%A9t%C3%A9%20dit.%0D%0A%0D%0A%0D%0A%0D%0A%23%23%C2%A0Introducting%20Assetics%0D%0A%0D%0A_%22If%20you%20haven%E2%80%99t%20optimized%20frontend%2C%20you%20haven%E2%80%99t%20optimized.%22_%0D%0A%0D%0ABeaucoup%20d%27o" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;t=Symfony%20live%202011%20-%20Journ%C3%A9e%202" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Symfony%20live%202011%20-%20Journ%C3%A9e%202%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;annotation=%23%23%C2%A0Symfony2%20from%20the%20trenches%0D%0A%0D%0ABon%2C%20c%27%C3%A9tait%20une%20liste%20des%20features%20de%20Sf2%2C%20les%20slides%20suffisent%20%C3%A0%20expliquer%20ce%20qui%20a%20%C3%A9t%C3%A9%20dit.%0D%0A%0D%0A%0D%0A%0D%0A%23%23%C2%A0Introducting%20Assetics%0D%0A%0D%0A_%22If%20you%20haven%E2%80%99t%20optimized%20frontend%2C%20you%20haven%E2%80%99t%20optimized.%22_%0D%0A%0D%0ABeaucoup%20d%27o" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=%23%23%C2%A0Symfony2%20from%20the%20trenches%0D%0A%0D%0ABon%2C%20c%27%C3%A9tait%20une%20liste%20des%20features%20de%20Sf2%2C%20les%20slides%20suffisent%20%C3%A0%20expliquer%20ce%20qui%20a%20%C3%A9t%C3%A9%20dit.%0D%0A%0D%0A%0D%0A%0D%0A%23%23%C2%A0Introducting%20Assetics%0D%0A%0D%0A_%22If%20you%20haven%E2%80%99t%20optimized%20frontend%2C%20you%20haven%E2%80%99t%20optimized.%22_%0D%0A%0D%0ABeaucoup%20d%27o" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;t=Symfony%20live%202011%20-%20Journ%C3%A9e%202" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;body=%23%23%C2%A0Symfony2%20from%20the%20trenches%0D%0A%0D%0ABon%2C%20c%27%C3%A9tait%20une%20liste%20des%20features%20de%20Sf2%2C%20les%20slides%20suffisent%20%C3%A0%20expliquer%20ce%20qui%20a%20%C3%A9t%C3%A9%20dit.%0D%0A%0D%0A%0D%0A%0D%0A%23%23%C2%A0Introducting%20Assetics%0D%0A%0D%0A_%22If%20you%20haven%E2%80%99t%20optimized%20frontend%2C%20you%20haven%E2%80%99t%20optimized.%22_%0D%0A%0D%0ABeaucoup%20d%27o" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&title=Symfony%20live%202011%20-%20Journ%C3%A9e%202&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-2%2F&amp;submitHeadline=Symfony%20live%202011%20-%20Journ%C3%A9e%202&amp;submitSummary=%23%23%C2%A0Symfony2%20from%20the%20trenches%0D%0A%0D%0ABon%2C%20c%27%C3%A9tait%20une%20liste%20des%20features%20de%20Sf2%2C%20les%20slides%20suffisent%20%C3%A0%20expliquer%20ce%20qui%20a%20%C3%A9t%C3%A9%20dit.%0D%0A%0D%0A%0D%0A%0D%0A%23%23%C2%A0Introducting%20Assetics%0D%0A%0D%0A_%22If%20you%20haven%E2%80%99t%20optimized%20frontend%2C%20you%20haven%E2%80%99t%20optimized.%22_%0D%0A%0D%0ABeaucoup%20d%27o&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/tjJa5Cmh9IU" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/symfony-live-2011-journee-2/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/symfony-live-2011-journee-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=symfony-live-2011-journee-2</feedburner:origLink></item> <item><title>Symfony live 2011 – Journée 1</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/ciX3q2GCuVo/</link> <comments>http://www.willdurand.fr/symfony-live-2011-journee-1/#comments</comments> <pubDate>Sat, 05 Mar 2011 19:37:10 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[SfLive]]></category> <category><![CDATA[symfony]]></category> <category><![CDATA[conférence]]></category> <category><![CDATA[symfony-live]]></category> <category><![CDATA[Symfony2]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=830</guid> <description><![CDATA[Symfony CMF Les conférenciers commencent par bâcher Drupal, en gros ce n’est pas bon sauf pour les utilisateurs finaux. Ensuite on passe au CMF : Content Management Framework. Qu&#8217;est-ce dont ? Une boite à outils pour créer son propre CMS. Pas un truc qui rassemble tout mais un truc qui s’améliore avec le temps. Diem, [...]]]></description> <content:encoded><![CDATA[<h2>Symfony CMF</h2><p>Les conférenciers commencent par bâcher Drupal, en gros ce n’est pas bon sauf pour les utilisateurs finaux.</p><p>Ensuite on passe au CMF : <strong>C</strong>ontent <strong>M</strong>anagement <strong>F</strong>ramework. Qu&#8217;est-ce dont ?</p><ul><li>Une boite à outils pour créer son propre CMS.</li><li>Pas un truc qui rassemble tout mais un truc qui s’améliore avec le temps.</li><li>Diem, Apostrophe, Sympal construis sur la même base.</li></ul><p>Et le projet <em>Symfony CMF</em> ?</p><ul><li>Environ 100 personnes dans la mailing-list.</li><li>+10 par mois.</li><li>La plupart des décisions clés sont prises sur un forum public.</li><li>Soutenu par des entreprises tels : KnpLas, Theodo, ideato, Liip, OpenThink Labs, …</li></ul><p>Au niveau technique, les données d’un CMS ne sont pas très gérables donc utilisation du NoSQL, pas de SGBDR. Certains CMs organisent des données en arbre, on peut utiliser : <strong>Graph DBs</strong>.</p><p>Pour Symfony CMF, on devrait avoir :</p><ul><li>Versionning du contenu</li><li>Gestion fine des accès</li><li>Doctrine PHPCR ODM</li><li>Jackalope (Java)</li><li>Utilisation de PHPCR, une interface qui permet aux devs PHP de garder leurs habitudes (exemple : tableaux associatifs qui n’existe pas en Java). Ainsi, on ne discute pas avec Jackalope.</li><li>PHPCR/JCR ne sera pas utilisé pour tout sauvegarder. Les données « web », les commandes d’un site e-commerce (par exemple) ou ses stocks iront dans un SGBDR. Idem pour l’agrégation, mieux supportée et faite dans un SGBDR.</li></ul><p>Adresse du projet : <a
href="cmf.symfony-project.org">Symfony CMF</a>.</p><h2>Restful avec symfony et Symfony2</h2><p>Définition/Explications d&#8217;un Web Service :</p><ul><li>Développement d’APIs/Webservices</li><li>Communication inter-langages/inter-logiciels</li><li>Fournisseur : service</li><li>Agent : client</li><li>Deux types : REST ou WS-*</li></ul><h3>Web services en Symfony 1</h3><ul><li>Utilisation du système de routing</li><li>Utilisation d’un serializer qui n’est pas présent dans symfony ou Zend.</li><li>Il existe cependant un Exporter Doctrine.</li><li>En json : json_encode($object->toArray()) ;</li></ul><p>Cependant, comment valider les entrées ? La présence du payload ? Hé bien en utilisant les <em>validateurs</em> de symfony.</p><p>Abordons la partie sécurité (accès, rythme, fréquence (throtting)) :</p><ul><li>Autentification naïve par preExecute, ajouter un paramètre (une clé d’API par exemple) mais ce n&#8217;est pas terrible si quelqu&#8217;un trouve cette clé.</li><li>Approche OAuth plus que conseillée.</li><li>Throtting : utiliser Apache : <strong>mod_cband</strong></li></ul><h3>Symfony2, on fait comment ?</h3><p>Export des routes sf2 dans Apache2 :</p><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; php app/console router:dump-apache</div></div><p>Il est conseillé de se servir du FrameworkExtraBundle pour le <strong>paramConverter</strong> !</p><p>En Symfony2, on a le Serializer component :</p><ul><li>normalizer ; CustomNormalizer</li><li>GetSetMethodNormalizer : renvoit un tableau clé/valeur PHP</li><li>Encoder : JsonEncoder, XmlEncoder</li></ul><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; $serializer-&gt;addNormalizer(new CustomNormalizer()) ;</div></div><p>Varnish, HttpCache déclenchés avant l’initialisation du framework.
Validation du cache :</p><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; $response-&gt;setETag() ;<br
/> &nbsp; &nbsp; if($response-&gt;isNotModified())<br
/> &nbsp; &nbsp; {<br
/> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;return ; //304<br
/> &nbsp; &nbsp; }<br
/> &nbsp; &nbsp; else<br
/> &nbsp; &nbsp; {<br
/> &nbsp; &nbsp; &nbsp; &nbsp; $response-&gt;setContent(contenu) ;&nbsp; <br
/> &nbsp; &nbsp; &nbsp; &nbsp; return $response ;<br
/> &nbsp; &nbsp; }</div></div><p>Il est conseillé d&#8217;utiliser le Cache HTTP pour les Web Services pour éviter, par exemple, de parser les annotations Doctrine à chaque requête !
Enfin le supra projet, fil conducteur lors de la présentation : <a
href="http://symfpony-project.org/">Symfpony</a> <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /></p><div
style="text-align:center"><div
id="__ss_7134385"> <strong
style="display:block;margin:12px 0 4px"><a
href="http://www.slideshare.net/xavierlacot/restful-avec-symfony-1-et-symfony2" title="RESTful avec symfony 1 et Symfony2">RESTful avec symfony 1 et Symfony2</a></strong> <object
id="__sse7134385" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony-live-2010-restful-avec-symfony-1-et-symfony2-xavier-lacot-damien-alexandre-clever-age-110303072931-phpapp01&#038;stripped_title=restful-avec-symfony-1-et-symfony2&#038;userName=xavierlacot" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/> <embed
name="__sse7134385" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony-live-2010-restful-avec-symfony-1-et-symfony2-xavier-lacot-damien-alexandre-clever-age-110303072931-phpapp01&#038;stripped_title=restful-avec-symfony-1-et-symfony2&#038;userName=xavierlacot" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> </object><div
style="padding:5px 0 12px"> View more <a
href="http://www.slideshare.net/">presentations</a> from <a
href="http://www.slideshare.net/xavierlacot">Xavier Lacot</a></div></div></div><h3>Contributing with Git</h3><p>A mon sens, la meilleure conférence des deux jours, présentée par <a
href="http://twitter.com/chacon">@chacon</a>. Déjà, voici quelques liens :</p><ul><li><a
href="http://git-scm.com">http://git-scm.com</a></li><li><a
href="http://gitref.org">http://gitref.org</a></li><li><a
href="http://progit.org">http://progit.org</a></li></ul><p>1991-2002 : pas de VCS pour le projet Linux.</p><h3>Git vs SVN (rapide)</h3><p><strong>SVN</strong> : un log par fichier au premier commit, ensuite un log supplémentaire par modification.</p><p><strong>Git</strong> : checksum de chaque fichier. Au comimit, enregistre un « manifest » avec les checksums des fichiers ajoutés.
Au commit suivant, il recrée un checksum. Au renommage, il change juste le nom du fichier à côté du checksum dans le manifest.
A la copie d’un fichier, il rajoute juste le fichier dans le manifest mais. => Liste chaînée de « snapshots » (checksums).</p><p><strong>git diff</strong> fait un diff avec les snapshots concernés, pas avec tout.</p><h3>Faire de beaux/bons commits :</h3><ul><li>Attention aux espaces (blancs)</li><li>git diff –check : pour vérifier avant de commiter</li><li>git add –patch : commit sélectif</li><li>git-gui</li><li>Git Tower</li><li>git-log –grep=xxx</li><li>short summary of changes</li></ul><h3>Branches</h3><ul><li>créer une branche pour toute nouvelle modification (majeure). <strong>Ne pas travailler sur Master.</strong></li></ul><h3>Repository central</h3><ul><li>Premier arrivé, Premier Servi</li><li>git push <remote> <branch></branch></remote></li><li>git fetch (d’abord)</li><li>puis : git merge</li></ul><h3>Merge</h3><ul><li>can undo the merge</li><li>more data for analysis later</li><li>easy continuous re-integration</li></ul><h3>Rebase</h3><ul><li>&laquo;&nbsp;prettier&nbsp;&raquo;</li><li>git pull –rebase : sinon pull fetch et merge</li><li>git merge –no-ff : no fast forward, gives more information</li></ul><h3>Processus de travail en groupe</h3><ul><li>Coder</li><li>git fetch</li><li>git log origin/master ^master</li><li>git rebase origin/master</li></ul><h3>Mailing List Contributor Workflow</h3><ul><li>git checkout my-branch</li><li>git format-patch –m origin/aster ⇒ xxxx.patch (email format patch)</li><li>git send-mail *.patch : configure your mail in ~/.gitconfig</li></ul><p>Lorsqu’on reçoit le mail :
** git am xxx.patch</p><h3>Repo personnel</h3><p>Requesting a Pull : make your branch up to date ⇒ push to a named branch ⇒ contact the author</p><ul><li>git remote add upstream http://xxx:yyy.git</li><li>git rebase upstream/master</li><li>git push origin my_feature</li><li>git checkout –b my_feature</li><li>commit, commit, …</li><li>git fetch upstream</li><li>git rebase upstream/master</li><li>git request-pull upstream/master origin</li></ul><p>Accepting a Pull Request : git remote add scott http://xxx.yyy.git ⇒ git fetch scott ⇒ git merge scott/my_feature</p><p>Ou : git pull http://xxx:yyy.git my_feature</p><h2>Symfony2 : 30 astuces et bonnes pratiques</h2><ul><li>Organisation plus libre</li><li>Application : une seule ⇒ système de sécurité permet de cloisonner efficacement</li><li>Pour utiliser plusieurs applications, on peut les nommer App1, App2, … Mais normalement on a besoin que d’une seule app’</li><li>Bundles ⇒ implémentation une fonctionnalité spécifique</li><li>Isoler ses classes métiers : Entity/ ou Business/</li><li>Utiliser ses propres namespaces…</li><li>Virer les bundles inutiles.</li><li>On peut définir des variables d’environnement : SYMFONY__XXX ⇒ Depuis un VHOST Apache2</li><li>Format .ini : pour paramètrage de l’application par un non-technicien.</li><li>Twig : XSS protection en automatique et mode sandbox</li><li>Utiliser le router Apache</li><li>Assets : Assetic</li></ul><h3> Surcharge des pages d’erreurs</h3><ul><li>Créer un service (écouter <em>core.exception</em>, déclarer le service et créer une nouvelle classe).</li><li>Faire un template : on crée un app/FrameworkBundle/xxx.error.html.twig</li><li>Utiliser un contrôleur qui implémente la méthode <code>showAction()</code>:</li></ul><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; framework :<br
/> &nbsp; &nbsp; &nbsp; &nbsp; exception_controller : MyNS\MyBundle\MyExceptionController</div></div><p>Attention : les contrôleurs ne doivent pas hériter de la classe <code>Controller</code> du <code>FrameworkBundle</code>. Il ne faut pas créé de dépendances ! (c’est presque inutile). Donc les contrôleurs sont de simples classes PHP, sans dépendances. Il vaut mieux hériter du <code>ContainerAware</code> ou alors utiliser des services en tant que contrôleurs.</p><h3>Twig</h3><p>Assets ⇒ utiliser les blocks Twig
Existence de macros pour Twig.</p><h3>Injection de dépendances</h3><ul><li>classes utilisables sans Container</li><li>utiliser le format XML</li><li>A utiliser pour des objets qui ont une portée globale ou pour des objets « uniques ».</li><li>Ne pas utiliser l’injecteur pour des objets métiers.</li><li>Ne pas injecter le container dans les objets (lol) : injecter le service nécessaire !</li></ul><h3>Sécurité</h3><ul><li>déporter la configuration</li><li>spliter la configuration et l’importer</li></ul><h3>Profiler</h3><ul><li>utilisable en production</li></ul><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; framework :<br
/> &nbsp; &nbsp; &nbsp; &nbsp; profiler : &nbsp;{ only_exceptions : true }</div></div><ul><li>Génère un fichier.</li><li>Importer le dump dans le profiler.</li><li>Utiliser les annotations</li></ul><h3>FrameworkExtraBundle</h3><ul><li>configuration du routing</li><li>configuration des méthodes http</li><li>template à utiliser</li><li>cache http</li><li>convertir des paramètres de requête</li></ul><h3> Performances</h3><ul><li><strong>autoloading</strong> : compile les classes, attention à ne pas trop charger de classes</li><li><strong>cache warmer</strong> : préparation du cache</li><li>pré-compilation du template, DI, routing, autoloading</li><li>On peut ajouter nos propres services.</li></ul><h3>Vérifier la configuration Doctrine</h3><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; php doctrine :ensure-production –settings</div></div><div
style="text-align:center;"><div
id="__ss_7165763"> <strong
style="display:block;margin:12px 0 4px"><a
href="http://www.slideshare.net/noelguilbert/symfony2-30-astuces-et-bonnes-pratiques" title="Symfony2: 30 astuces et bonnes pratiques">Symfony2: 30 astuces et bonnes pratiques</a></strong> <object
id="__sse7165763" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation2-110306052705-phpapp01&#038;stripped_title=symfony2-30-astuces-et-bonnes-pratiques&#038;userName=noelguilbert" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/> <embed
name="__sse7165763" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=presentation2-110306052705-phpapp01&#038;stripped_title=symfony2-30-astuces-et-bonnes-pratiques&#038;userName=noelguilbert" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> </object><div
style="padding:5px 0 12px"> View more <a
href="http://www.slideshare.net/">presentations</a> from <a
href="http://www.slideshare.net/noelguilbert">Noel GUILBERT</a></div></div></div><h2>RabbitMQ</h2><h3>Why  Messaging ?</h3><h4>The user</h4><p>Upload picture, don’t want to wait till the images resizes.
Notify user friends when she uploads a new image.</p><h4>The sysadmin</h4><p>Save my bandwith.</p><h4> The developer</h4><p>Call the PHP from Python.</p><h3>RabbitMQ &amp; AMQP</h3><p>Advanced Message Queuing Protocol
* Interoperability
* Open protocol
* Binary protocol
* AMQP Model : exchanges, message queues, bindings, rules for binding them
* AMQP Wire Format : Functional layer, Message flow</p><h3> Scénario : batch</h3><p>Requirements :</p><ul><li>Generate XML</li><li>Distribution over a cluster</li><li>Elasticity</li><li>No code changes</li></ul><p>Design :
Enquue job -> generate xml ->  direct exchnange -> desc queue -> Worker 1/Worker 2/Worker 3</p><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; AMQPConnection()<br
/> &nbsp; &nbsp; AMQPMessage()</div></div><h3>Integration dans Symfony</h3><p>RabbitMQ Bundle</p><div
style="text-align:center;"><div
id="__ss_7137257"><strong
style="display:block;margin:12px 0 4px"><a
href="http://www.slideshare.net/old_sound/theres-a-rabbit-on-my-symfony" title="Theres a rabbit on my symfony">Theres a rabbit on my symfony</a></strong> <object
id="__sse7137257" width="425" height="355"><param
name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=theresarabbitonmysymfony-110303103959-phpapp01&#038;stripped_title=theres-a-rabbit-on-my-symfony&#038;userName=old_sound" /><param
name="allowFullScreen" value="true"/><param
name="allowScriptAccess" value="always"/> <embed
name="__sse7137257" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=theresarabbitonmysymfony-110303103959-phpapp01&#038;stripped_title=theres-a-rabbit-on-my-symfony&#038;userName=old_sound" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed> </object><div
style="padding:5px 0 12px"> View more <a
href="http://www.slideshare.net/">presentations</a> from <a
href="http://www.slideshare.net/old_sound">Alvaro Videla</a></div></div></div><h2>Symfony2 Forms</h2><p>Bon là, je n&#8217;ai pas pris de notes, ce fût une lecture de la documentation plus ou moins. J&#8217;ai tout de même noté deux infos :</p><ul><li>L&#8217;astuce <em>Twig</em> pour rendre le <em>reste</em> des éléments d&#8217;un formulaire:</li></ul><div
class="codecolorer-container text vibrant" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:100%;"><div
class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; {{ form.rest }}</div></div><ul><li>Et le type : « repeated » to repeat twice a field (password)</li></ul><p>Voilà pour cette première journée, plutôt longue mais très intéressante.</p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/symfony-live-2011-journee-2/' title='Symfony live 2011 &#8211; Journée 2'>Symfony live 2011 &#8211; Journée 2</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011/' title='Symfony live 2011'>Symfony live 2011</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;bodytext=%23%23%20Symfony%20CMF%0D%0A%0D%0ALes%20conf%C3%A9renciers%20commencent%20par%20b%C3%A2cher%20Drupal%2C%20en%20gros%20ce%20n%E2%80%99est%20pas%20bon%20sauf%20pour%20les%20utilisateurs%20finaux.%0D%0A%0D%0AEnsuite%20on%20passe%20au%20CMF%20%3A%20%2A%2AC%2A%2Aontent%20%2A%2AM%2A%2Aanagement%20%2A%2AF%2A%2Aramework.%20Qu%27est-ce%20dont%20%3F%0D%0A%0D%0A%2A%20Une%20boite%20%C3%A0%20outils%20pour%20cr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%201" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;notes=%23%23%20Symfony%20CMF%0D%0A%0D%0ALes%20conf%C3%A9renciers%20commencent%20par%20b%C3%A2cher%20Drupal%2C%20en%20gros%20ce%20n%E2%80%99est%20pas%20bon%20sauf%20pour%20les%20utilisateurs%20finaux.%0D%0A%0D%0AEnsuite%20on%20passe%20au%20CMF%20%3A%20%2A%2AC%2A%2Aontent%20%2A%2AM%2A%2Aanagement%20%2A%2AF%2A%2Aramework.%20Qu%27est-ce%20dont%20%3F%0D%0A%0D%0A%2A%20Une%20boite%20%C3%A0%20outils%20pour%20cr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;t=Symfony%20live%202011%20-%20Journ%C3%A9e%201" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Symfony%20live%202011%20-%20Journ%C3%A9e%201%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;annotation=%23%23%20Symfony%20CMF%0D%0A%0D%0ALes%20conf%C3%A9renciers%20commencent%20par%20b%C3%A2cher%20Drupal%2C%20en%20gros%20ce%20n%E2%80%99est%20pas%20bon%20sauf%20pour%20les%20utilisateurs%20finaux.%0D%0A%0D%0AEnsuite%20on%20passe%20au%20CMF%20%3A%20%2A%2AC%2A%2Aontent%20%2A%2AM%2A%2Aanagement%20%2A%2AF%2A%2Aramework.%20Qu%27est-ce%20dont%20%3F%0D%0A%0D%0A%2A%20Une%20boite%20%C3%A0%20outils%20pour%20cr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=%23%23%20Symfony%20CMF%0D%0A%0D%0ALes%20conf%C3%A9renciers%20commencent%20par%20b%C3%A2cher%20Drupal%2C%20en%20gros%20ce%20n%E2%80%99est%20pas%20bon%20sauf%20pour%20les%20utilisateurs%20finaux.%0D%0A%0D%0AEnsuite%20on%20passe%20au%20CMF%20%3A%20%2A%2AC%2A%2Aontent%20%2A%2AM%2A%2Aanagement%20%2A%2AF%2A%2Aramework.%20Qu%27est-ce%20dont%20%3F%0D%0A%0D%0A%2A%20Une%20boite%20%C3%A0%20outils%20pour%20cr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;t=Symfony%20live%202011%20-%20Journ%C3%A9e%201" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;body=%23%23%20Symfony%20CMF%0D%0A%0D%0ALes%20conf%C3%A9renciers%20commencent%20par%20b%C3%A2cher%20Drupal%2C%20en%20gros%20ce%20n%E2%80%99est%20pas%20bon%20sauf%20pour%20les%20utilisateurs%20finaux.%0D%0A%0D%0AEnsuite%20on%20passe%20au%20CMF%20%3A%20%2A%2AC%2A%2Aontent%20%2A%2AM%2A%2Aanagement%20%2A%2AF%2A%2Aramework.%20Qu%27est-ce%20dont%20%3F%0D%0A%0D%0A%2A%20Une%20boite%20%C3%A0%20outils%20pour%20cr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&title=Symfony%20live%202011%20-%20Journ%C3%A9e%201&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011-journee-1%2F&amp;submitHeadline=Symfony%20live%202011%20-%20Journ%C3%A9e%201&amp;submitSummary=%23%23%20Symfony%20CMF%0D%0A%0D%0ALes%20conf%C3%A9renciers%20commencent%20par%20b%C3%A2cher%20Drupal%2C%20en%20gros%20ce%20n%E2%80%99est%20pas%20bon%20sauf%20pour%20les%20utilisateurs%20finaux.%0D%0A%0D%0AEnsuite%20on%20passe%20au%20CMF%20%3A%20%2A%2AC%2A%2Aontent%20%2A%2AM%2A%2Aanagement%20%2A%2AF%2A%2Aramework.%20Qu%27est-ce%20dont%20%3F%0D%0A%0D%0A%2A%20Une%20boite%20%C3%A0%20outils%20pour%20cr&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/ciX3q2GCuVo" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/symfony-live-2011-journee-1/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/symfony-live-2011-journee-1/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=symfony-live-2011-journee-1</feedburner:origLink></item> <item><title>Symfony live 2011</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/e0oE9xGebF8/</link> <comments>http://www.willdurand.fr/symfony-live-2011/#comments</comments> <pubDate>Wed, 02 Mar 2011 17:05:58 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[Ma vie]]></category> <category><![CDATA[symfony]]></category> <category><![CDATA[conférence]]></category> <category><![CDATA[Symfony]]></category> <category><![CDATA[symfony-live]]></category> <category><![CDATA[Symfony2]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=825</guid> <description><![CDATA[J&#8217;y serai ! Voilà en gros tout ce que j&#8217;avais à dire dans cet article Pour étoffer un peu, Symfony Live c&#8217;est la conférence tendance pour les gens qui aiment [s&#124;S]ymfony, qui aiment PHP (pourquoi pas ?) et qui aiment bien discuter et écouter de bonnes conférences. C&#8217;est organisé par Sensio Labs, agence que l&#8217;on [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: justify;"><strong>J&#8217;y serai !</strong></p><p
style="text-align: justify;">Voilà en gros tout ce que j&#8217;avais à dire dans cet article <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> Pour étoffer un peu, <a
href="http://symfony-live.com">Symfony Live</a> c&#8217;est la conférence tendance pour les gens qui aiment <strong>[s|S]ymfony</strong>, qui aiment PHP (pourquoi pas ?) et qui aiment bien discuter et écouter de bonnes conférences. C&#8217;est organisé par <a
href="http://sensiolabs.com">Sensio Labs</a>, agence que l&#8217;on ne présente plus, ça se déroule les 3 et 4 mars à Paris (Cité Internationale Universitaire) et c&#8217;est à peu près tout ce qu&#8217;il faut savoir.</p><p
style="text-align: justify;">Le vendredi soir, il y aura un meetup <strong>Github</strong> je ne sais trop où, comme d&#8217;hab&#8217; je vais essayer de pas me perdre dans Paris (d&#8217;ailleurs j&#8217;espère que mon stage me permettra également de me repérer un peu dans Paris&#8230;). Il y aura des conférences doublées donc comme au Forum PHP, il faudra faire des choix. J&#8217;ai fait quelques choix, les voici :</p><h2 style="text-align: justify;">Jeudi</h2><p
style="text-align: justify;">10h30-11h20 : Je ne sais pas&#8230;</p><p
style="text-align: justify;">11h30-12h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-xl1">Restful avec symfony et Symfony2</a> par deux compères de CleverAge : Xavier Lacot et Damien Alexandre.</p><p
style="text-align: justify;">13h30-14h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-sc1">Contributing with Git : Reducing the frictions of Open Source collaboration with the Git VCS</a> par Scott Chacon (ce mec travaille chez <a
href="http://www.github.com">Github</a> !!)</p><p
style="text-align: justify;">14h30-15h20 : je ne sais pas.</p><p
style="text-align: justify;">15h30-16h20 : je ne sais pas non plus.</p><p
style="text-align: justify;">16h30-17h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-bs2">Leveraging Symfony2 Forms</a> par Bernhard Schussek (histoire de pas galérer sur les forms&#8230;)</p><h2 style="text-align: justify;">Vendredi</h2><p
style="text-align: justify;">8h30-9h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-lksjw1">Symfony2 &#8211; from the trenches</a> par Lukas Kahwe Smith et Jonathan Wage (le titre déchirait !)</p><p
style="text-align: justify;">9h30-10h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-kw1">Introducing Assetic: Asset Management for PHP 5.3</a> par Kris Wallsmith.</p><p
style="text-align: justify;">10h30-11h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-fp1">HTTP Cache</a> par <del>dieu</del> Fabien Potencier. (Et là, ce fût le plus gros dilemme&#8230;. Je voulais tellement voir cette conférence sur Solr <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> )</p><p
style="text-align: justify;">11h30-12h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-kl1">Varnish Cache and you</a> par Kristian Lyngstøl.</p><p
style="text-align: justify;">13h30-14h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-hh1">Symfony2 en pièces détachées !</a> par Hugo Hamon. La conf&#8217; sur Twig semble sympa mais je pense qu&#8217;il y a plus à apprendre de l&#8217;ami Hugo.</p><p
style="text-align: justify;">14h30-15h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-jw1">Doctrine in the Real World</a> par Jonathan Wage (encore !)</p><p
style="text-align: justify;">15h30-16h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-ll1">Jeux sociaux, Symfony et Cloud Computing</a> par Laurent Letourmy (je les avais zappé lors du Forum PHP, je me rattrape ici).</p><p
style="text-align: justify;">16h30-17h20 : <a
href="http://www.symfony-live.com/paris/schedule#session-ar1">Iscool Story</a> par Alexandre Rodière et Bertrand Tornil (Weka again).</p><p
style="text-align: justify;">&nbsp;</p><p
style="text-align: justify;">Voilà, ce planning est susceptible de changer mais certainement pas trop. Je ferai comme d&#8217;hab&#8217; un résumé de chaque journée et pour chaque conférence vue.</p><p
style="text-align: justify;">A demain pour certain <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/symfony-live-2011-journee-2/' title='Symfony live 2011 &#8211; Journée 2'>Symfony live 2011 &#8211; Journée 2</a></li><li><a
href='http://www.willdurand.fr/symfony-live-2011-journee-1/' title='Symfony live 2011 &#8211; Journée 1'>Symfony live 2011 &#8211; Journée 1</a></li><li><a
href='http://www.willdurand.fr/tests-unitaires-et-fonctionnels-sur-un-bundle-en-symfony2/' title='Tests unitaires et fonctionnels sur un Bundle en Symfony2'>Tests unitaires et fonctionnels sur un Bundle en Symfony2</a></li><li><a
href='http://www.willdurand.fr/symfony-jenkins-co/' title=' Symfony, Jenkins &amp; co'> Symfony, Jenkins &#038; co</a></li><li><a
href='http://www.willdurand.fr/symfony-rencontre-hudson-mantis-et-les-autres/' title='symfony rencontre Hudson, Mantis et les autres'>symfony rencontre Hudson, Mantis et les autres</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;title=Symfony%20live%202011&amp;bodytext=J%27y%20serai%20%21%0D%0AVoil%C3%A0%20en%20gros%20tout%20ce%20que%20j%27avais%20%C3%A0%20dire%20dans%20cet%20article%20%3A-%29%20Pour%20%C3%A9toffer%20un%20peu%2C%20Symfony%20Live%20c%27est%20la%20conf%C3%A9rence%20tendance%20pour%20les%20gens%20qui%20aiment%20%5Bs%7CS%5Dymfony%2C%20qui%20aiment%20PHP%20%28pourquoi%20pas%20%3F%29%20et%20qui%20aiment%20bien%20discuter%20et%20%C3%A9coute" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;title=Symfony%20live%202011" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;title=Symfony%20live%202011&amp;notes=J%27y%20serai%20%21%0D%0AVoil%C3%A0%20en%20gros%20tout%20ce%20que%20j%27avais%20%C3%A0%20dire%20dans%20cet%20article%20%3A-%29%20Pour%20%C3%A9toffer%20un%20peu%2C%20Symfony%20Live%20c%27est%20la%20conf%C3%A9rence%20tendance%20pour%20les%20gens%20qui%20aiment%20%5Bs%7CS%5Dymfony%2C%20qui%20aiment%20PHP%20%28pourquoi%20pas%20%3F%29%20et%20qui%20aiment%20bien%20discuter%20et%20%C3%A9coute" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;t=Symfony%20live%202011" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Symfony%20live%202011%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;title=Symfony%20live%202011&amp;annotation=J%27y%20serai%20%21%0D%0AVoil%C3%A0%20en%20gros%20tout%20ce%20que%20j%27avais%20%C3%A0%20dire%20dans%20cet%20article%20%3A-%29%20Pour%20%C3%A9toffer%20un%20peu%2C%20Symfony%20Live%20c%27est%20la%20conf%C3%A9rence%20tendance%20pour%20les%20gens%20qui%20aiment%20%5Bs%7CS%5Dymfony%2C%20qui%20aiment%20PHP%20%28pourquoi%20pas%20%3F%29%20et%20qui%20aiment%20bien%20discuter%20et%20%C3%A9coute" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Symfony%20live%202011&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;title=Symfony%20live%202011&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=J%27y%20serai%20%21%0D%0AVoil%C3%A0%20en%20gros%20tout%20ce%20que%20j%27avais%20%C3%A0%20dire%20dans%20cet%20article%20%3A-%29%20Pour%20%C3%A9toffer%20un%20peu%2C%20Symfony%20Live%20c%27est%20la%20conf%C3%A9rence%20tendance%20pour%20les%20gens%20qui%20aiment%20%5Bs%7CS%5Dymfony%2C%20qui%20aiment%20PHP%20%28pourquoi%20pas%20%3F%29%20et%20qui%20aiment%20bien%20discuter%20et%20%C3%A9coute" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;t=Symfony%20live%202011" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Symfony%20live%202011&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;title=Symfony%20live%202011&amp;body=J%27y%20serai%20%21%0D%0AVoil%C3%A0%20en%20gros%20tout%20ce%20que%20j%27avais%20%C3%A0%20dire%20dans%20cet%20article%20%3A-%29%20Pour%20%C3%A9toffer%20un%20peu%2C%20Symfony%20Live%20c%27est%20la%20conf%C3%A9rence%20tendance%20pour%20les%20gens%20qui%20aiment%20%5Bs%7CS%5Dymfony%2C%20qui%20aiment%20PHP%20%28pourquoi%20pas%20%3F%29%20et%20qui%20aiment%20bien%20discuter%20et%20%C3%A9coute" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&title=Symfony%20live%202011&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fsymfony-live-2011%2F&amp;submitHeadline=Symfony%20live%202011&amp;submitSummary=J%27y%20serai%20%21%0D%0AVoil%C3%A0%20en%20gros%20tout%20ce%20que%20j%27avais%20%C3%A0%20dire%20dans%20cet%20article%20%3A-%29%20Pour%20%C3%A9toffer%20un%20peu%2C%20Symfony%20Live%20c%27est%20la%20conf%C3%A9rence%20tendance%20pour%20les%20gens%20qui%20aiment%20%5Bs%7CS%5Dymfony%2C%20qui%20aiment%20PHP%20%28pourquoi%20pas%20%3F%29%20et%20qui%20aiment%20bien%20discuter%20et%20%C3%A9coute&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/e0oE9xGebF8" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/symfony-live-2011/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/symfony-live-2011/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=symfony-live-2011</feedburner:origLink></item> <item><title>Mise en place d’un serveur Git over HTTP</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/ZYU5QIu5qmw/</link> <comments>http://www.willdurand.fr/mise-en-place-dun-serveur-git-over-http/#comments</comments> <pubDate>Wed, 23 Feb 2011 20:44:44 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[Boulot]]></category> <category><![CDATA[Sysadmin]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=819</guid> <description><![CDATA[Bonjour, Cela fait longtemps que je n&#8217;ai pas écrit ici. En fait, je partage mes récentes aventures sur le blog de ma société Bazinga. Dernier article en date sur la mise en oeuvre d&#8217;un serveur Git accessible via HTTP : http://www.bazingaweb.fr/blog/fr/mise-en-place-d-un-serveur-git-over-http. Enjoy Related Posts No Related Posts]]></description> <content:encoded><![CDATA[<p>Bonjour,</p><p>Cela fait longtemps que je n&#8217;ai pas écrit ici. En fait, je partage mes récentes aventures sur le blog de ma société <strong><a
href="http://www.bazingaweb.fr/">Bazinga</a></strong>.</p><p><strong></strong>Dernier article en date sur la mise en oeuvre d&#8217;un serveur Git accessible via HTTP : <a
href="http://www.bazingaweb.fr/blog/fr/mise-en-place-d-un-serveur-git-over-http">http://www.bazingaweb.fr/blog/fr/mise-en-place-d-un-serveur-git-over-http</a>.</p><p>Enjoy <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li>No Related Posts</li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;bodytext=Bonjour%2C%0D%0A%0D%0ACela%20fait%20longtemps%20que%20je%20n%27ai%20pas%20%C3%A9crit%20ici.%20En%20fait%2C%20je%20partage%20mes%20r%C3%A9centes%20aventures%20sur%20le%20blog%20de%20ma%20soci%C3%A9t%C3%A9%20Bazinga.%0D%0A%0D%0ADernier%20article%20en%20date%20sur%20la%20mise%20en%20oeuvre%20d%27un%20serveur%20Git%20accessible%20via%20HTTP%20%3A%C2%A0http%3A%2F%2Fwww.bazingawe" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;notes=Bonjour%2C%0D%0A%0D%0ACela%20fait%20longtemps%20que%20je%20n%27ai%20pas%20%C3%A9crit%20ici.%20En%20fait%2C%20je%20partage%20mes%20r%C3%A9centes%20aventures%20sur%20le%20blog%20de%20ma%20soci%C3%A9t%C3%A9%20Bazinga.%0D%0A%0D%0ADernier%20article%20en%20date%20sur%20la%20mise%20en%20oeuvre%20d%27un%20serveur%20Git%20accessible%20via%20HTTP%20%3A%C2%A0http%3A%2F%2Fwww.bazingawe" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;t=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;annotation=Bonjour%2C%0D%0A%0D%0ACela%20fait%20longtemps%20que%20je%20n%27ai%20pas%20%C3%A9crit%20ici.%20En%20fait%2C%20je%20partage%20mes%20r%C3%A9centes%20aventures%20sur%20le%20blog%20de%20ma%20soci%C3%A9t%C3%A9%20Bazinga.%0D%0A%0D%0ADernier%20article%20en%20date%20sur%20la%20mise%20en%20oeuvre%20d%27un%20serveur%20Git%20accessible%20via%20HTTP%20%3A%C2%A0http%3A%2F%2Fwww.bazingawe" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Bonjour%2C%0D%0A%0D%0ACela%20fait%20longtemps%20que%20je%20n%27ai%20pas%20%C3%A9crit%20ici.%20En%20fait%2C%20je%20partage%20mes%20r%C3%A9centes%20aventures%20sur%20le%20blog%20de%20ma%20soci%C3%A9t%C3%A9%20Bazinga.%0D%0A%0D%0ADernier%20article%20en%20date%20sur%20la%20mise%20en%20oeuvre%20d%27un%20serveur%20Git%20accessible%20via%20HTTP%20%3A%C2%A0http%3A%2F%2Fwww.bazingawe" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;t=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;body=Bonjour%2C%0D%0A%0D%0ACela%20fait%20longtemps%20que%20je%20n%27ai%20pas%20%C3%A9crit%20ici.%20En%20fait%2C%20je%20partage%20mes%20r%C3%A9centes%20aventures%20sur%20le%20blog%20de%20ma%20soci%C3%A9t%C3%A9%20Bazinga.%0D%0A%0D%0ADernier%20article%20en%20date%20sur%20la%20mise%20en%20oeuvre%20d%27un%20serveur%20Git%20accessible%20via%20HTTP%20%3A%C2%A0http%3A%2F%2Fwww.bazingawe" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&title=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fmise-en-place-dun-serveur-git-over-http%2F&amp;submitHeadline=Mise%20en%20place%20d%27un%20serveur%20Git%20over%20HTTP&amp;submitSummary=Bonjour%2C%0D%0A%0D%0ACela%20fait%20longtemps%20que%20je%20n%27ai%20pas%20%C3%A9crit%20ici.%20En%20fait%2C%20je%20partage%20mes%20r%C3%A9centes%20aventures%20sur%20le%20blog%20de%20ma%20soci%C3%A9t%C3%A9%20Bazinga.%0D%0A%0D%0ADernier%20article%20en%20date%20sur%20la%20mise%20en%20oeuvre%20d%27un%20serveur%20Git%20accessible%20via%20HTTP%20%3A%C2%A0http%3A%2F%2Fwww.bazingawe&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/ZYU5QIu5qmw" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/mise-en-place-dun-serveur-git-over-http/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/mise-en-place-dun-serveur-git-over-http/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=mise-en-place-dun-serveur-git-over-http</feedburner:origLink></item> <item><title>Sur les starting-blocks pour 2011 !</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/W-EGaxpu9vA/</link> <comments>http://www.willdurand.fr/sur-les-starting-blocks-pour-2011/#comments</comments> <pubDate>Tue, 28 Dec 2010 01:43:37 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[Non classé]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=804</guid> <description><![CDATA[Bonjour, J-5 avant la nouvelle année, bonnes fêtes, bonne année, toussa&#8230; Bref, l&#8217;envie d&#8217;écrire me pousse à faire un petit récap&#8217; sur 2010, un genre d&#8217;auto-évaluation de moi-même donc pour ceux qui veulent du technique il n&#8217;y en aura pas cette fois-ci, je vais parler de ma vie&#8230; Passé : 2010 2010 a été une [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: justify;">Bonjour,</p><p
style="text-align: justify;">J-5 avant la nouvelle année, bonnes fêtes, bonne année, toussa&#8230; Bref, l&#8217;envie d&#8217;écrire me pousse à faire un petit récap&#8217; sur 2010, un genre d&#8217;auto-évaluation de moi-même donc pour ceux qui veulent du technique il n&#8217;y en aura pas cette fois-ci, je vais parler de ma vie&#8230;</p><p
style="text-align: justify;"></p><p
style="text-align: justify;"></p><h2>Passé : 2010</h2><p
style="text-align: justify;">2010 a été une année très riche, autant sur le plan personnel que professionnel. Je suis depuis près d&#8217;un an sur un très gros contrat qui me permet de voir et de faire pleins de choses intéressantes et également de voir ce que donne la conduite d&#8217;un projet seul. Effectivement, bosser sur des missions courtes c&#8217;est sympa mais rester seul maître à bord sur un projet d&#8217;une année c&#8217;est&#8230; long, éprouvant, fatiguant moralement et physiquement mais c&#8217;est à faire ! Autant dire que j&#8217;ai la vie bien occupée et que je ne manque pas de travail <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><p
style="text-align: justify;">Grâce à cela, j&#8217;ai amélioré mes compétences autour du développement : <strong>automatisation</strong>, <strong>industrialisation</strong>, <strong>déploiement</strong>, <strong>feedback</strong>, &#8230; Vous avez pu le lire (ou pas), j&#8217;ai bien apprécié de mettre en oeuvre des tas d&#8217;outils qui me simplifient la vie au quotidien. Dans la foulée, j&#8217;ai pu convertir pas mal de gens à cette façon de travailler <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> .</p><p
style="text-align: justify;">Parallèlement à cela : l&#8217;école, l&#8217;entreprise, les rencontres. Plus j&#8217;avance, plus je vois ce que l&#8217;école veut nous enseigner. Outre l&#8217;aspect scolaire (maths, électronique, info) on apprend à se poser, à réfléchir à un problème posé et à se servir des bons outils. C&#8217;est pile-poil ce que je vis dans mon activité de développeur indépendant. Cette activité est en voie de transformation parce que je devrais changer de forme juridique et me développer avec un associé. Pour le moment, le dossier est stoppé mais beaucoup d&#8217;idées sont sur ma TODO liste. Enfin, pas mal de contacts cette année, d&#8217;excellentes rencontres aussi qui m&#8217;ont permis de me sentir bien et de passer une bonne année (surtout que c&#8217;était accompagné de Guiness alors ça aide&#8230;).</p><p
style="text-align: justify;"></p><p
style="text-align: justify;"></p><h2>Présent : fin 2010</h2><p
style="text-align: justify;">Et bien oui, je peux évoquer cette fin 2010. Très surpris, je n&#8217;ai pas eu à chercher de stage. J&#8217;ai été sollicité par un bon nombre d&#8217;entreprises (petites ou grandes là n&#8217;est pas la question) dont plusieurs que j&#8217;avais placé tout en haut de ma <strong>wishlist</strong>. Je reste donc persuadé que bosser à outrance pour ma micro-boite est une bonne solution tout comme le fait d&#8217;apprendre encore et encore.</p><p
style="text-align: justify;">C&#8217;est pour cela que depuis septembre, je bosse sur un projet d&#8217;application mobile. Je n&#8217;avais jamais eu d&#8217;expérience là-dessus et j&#8217;ai pu négocié une entente avec un client passé pour bosser sur leur application. J&#8217;ai eu en charge d&#8217;amener les idées, les exigences liées à un projet mobile, l&#8217;analyse des besoins et fonctionnalités, les mockups et actuellement j&#8217;en suis à la phase de développement. C&#8217;est un projet <strong>iPhone</strong> en Objective-C. Bon je n&#8217;y connaissais rien mais c&#8217;est pas bien dur et il faut avouer que l&#8217;IDE XCode est pas mal fait. Vim+Linux manque quand même mais bon&#8230; J&#8217;essayerai d&#8217;écrire un peu sur le développement iPhone mais pour l&#8217;instant je n&#8217;ai pas d&#8217;inspiration.</p><p
style="text-align: justify;"></p><p
style="text-align: justify;"></p><h2>Futur : 2011</h2><p
style="text-align: justify;">Le futur c&#8217;est quoi ? Un stage de 6 mois déjà. Où donc ? Et bien&#8230; je ne l&#8217;ai jamais diffusé mais je pense que c&#8217;est le moment : il s&#8217;agit de l&#8217;entreprise <strong>e-TF1</strong> <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> Bon je suis un peu super-méga content de bosser là-bas. J&#8217;avoue que je n&#8217;étais pas préparé à recevoir un coup de téléphone du directeur technique en personne, ce qui s&#8217;est fait ressentir au premier entretien téléphonique&#8230; Mais le second était bien mieux et le troisième m&#8217;annonçait la bonne nouvelle ! Je pars donc sur Paris (arf&#8230; mon Auvergne) dès avril et pour 6 mois. J&#8217;appréhende un peu mais tout devrait bien se passer, j&#8217;ai déjà rencontré deux personnes de l&#8217;entreprise lors du forum PHP et ils étaient très accessibles.</p><p
style="text-align: justify;">C&#8217;est le premier gros objectif de 2011 avec une bonne remise à niveau sur l&#8217;ORM PHP <strong>Propel</strong> dès janvier pour ne pas passer pour un pingouin auprès du <em>lead developer </em> du projet qui sera *juste* mon big boss&#8230; Les autres sont de me mettre à Ruby On Rails pour voir puis à Django pour voir aussi. Pour cela, un petit break ne devrait pas faire de mal, je pourrais regarder un peu plus Symfony2. Par ailleurs, j&#8217;ai d&#8217;autres plans en tête mais ceux-ci resteront secrets pour le moment. Enfin, le dernier objectif est de terminer mon dossier d&#8217;entreprise et de finir de boucler la viabilité de celui-ci. Voilà pour les nouvelles <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /></p><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li>No Related Posts</li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;bodytext=Bonjour%2C%0D%0AJ-5%20avant%20la%20nouvelle%20ann%C3%A9e%2C%20bonnes%20f%C3%AAtes%2C%20bonne%20ann%C3%A9e%2C%20toussa...%20Bref%2C%20l%27envie%20d%27%C3%A9crire%20me%20pousse%20%C3%A0%20faire%20un%20petit%20r%C3%A9cap%27%20sur%202010%2C%20un%20genre%20d%27auto-%C3%A9valuation%20de%20moi-m%C3%AAme%20donc%20pour%20ceux%20qui%20veulent%20du%20technique%20il%20n%27y%20en%20aura%20pas%20c" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;title=Sur%20les%20starting-blocks%20pour%202011%20%21" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;notes=Bonjour%2C%0D%0AJ-5%20avant%20la%20nouvelle%20ann%C3%A9e%2C%20bonnes%20f%C3%AAtes%2C%20bonne%20ann%C3%A9e%2C%20toussa...%20Bref%2C%20l%27envie%20d%27%C3%A9crire%20me%20pousse%20%C3%A0%20faire%20un%20petit%20r%C3%A9cap%27%20sur%202010%2C%20un%20genre%20d%27auto-%C3%A9valuation%20de%20moi-m%C3%AAme%20donc%20pour%20ceux%20qui%20veulent%20du%20technique%20il%20n%27y%20en%20aura%20pas%20c" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;t=Sur%20les%20starting-blocks%20pour%202011%20%21" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=Sur%20les%20starting-blocks%20pour%202011%20%21%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;annotation=Bonjour%2C%0D%0AJ-5%20avant%20la%20nouvelle%20ann%C3%A9e%2C%20bonnes%20f%C3%AAtes%2C%20bonne%20ann%C3%A9e%2C%20toussa...%20Bref%2C%20l%27envie%20d%27%C3%A9crire%20me%20pousse%20%C3%A0%20faire%20un%20petit%20r%C3%A9cap%27%20sur%202010%2C%20un%20genre%20d%27auto-%C3%A9valuation%20de%20moi-m%C3%AAme%20donc%20pour%20ceux%20qui%20veulent%20du%20technique%20il%20n%27y%20en%20aura%20pas%20c" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Bonjour%2C%0D%0AJ-5%20avant%20la%20nouvelle%20ann%C3%A9e%2C%20bonnes%20f%C3%AAtes%2C%20bonne%20ann%C3%A9e%2C%20toussa...%20Bref%2C%20l%27envie%20d%27%C3%A9crire%20me%20pousse%20%C3%A0%20faire%20un%20petit%20r%C3%A9cap%27%20sur%202010%2C%20un%20genre%20d%27auto-%C3%A9valuation%20de%20moi-m%C3%AAme%20donc%20pour%20ceux%20qui%20veulent%20du%20technique%20il%20n%27y%20en%20aura%20pas%20c" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;t=Sur%20les%20starting-blocks%20pour%202011%20%21" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;title=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;body=Bonjour%2C%0D%0AJ-5%20avant%20la%20nouvelle%20ann%C3%A9e%2C%20bonnes%20f%C3%AAtes%2C%20bonne%20ann%C3%A9e%2C%20toussa...%20Bref%2C%20l%27envie%20d%27%C3%A9crire%20me%20pousse%20%C3%A0%20faire%20un%20petit%20r%C3%A9cap%27%20sur%202010%2C%20un%20genre%20d%27auto-%C3%A9valuation%20de%20moi-m%C3%AAme%20donc%20pour%20ceux%20qui%20veulent%20du%20technique%20il%20n%27y%20en%20aura%20pas%20c" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&title=Sur%20les%20starting-blocks%20pour%202011%20%21&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fsur-les-starting-blocks-pour-2011%2F&amp;submitHeadline=Sur%20les%20starting-blocks%20pour%202011%20%21&amp;submitSummary=Bonjour%2C%0D%0AJ-5%20avant%20la%20nouvelle%20ann%C3%A9e%2C%20bonnes%20f%C3%AAtes%2C%20bonne%20ann%C3%A9e%2C%20toussa...%20Bref%2C%20l%27envie%20d%27%C3%A9crire%20me%20pousse%20%C3%A0%20faire%20un%20petit%20r%C3%A9cap%27%20sur%202010%2C%20un%20genre%20d%27auto-%C3%A9valuation%20de%20moi-m%C3%AAme%20donc%20pour%20ceux%20qui%20veulent%20du%20technique%20il%20n%27y%20en%20aura%20pas%20c&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/W-EGaxpu9vA" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/sur-les-starting-blocks-pour-2011/feed/</wfw:commentRss> <slash:comments>0</slash:comments> <feedburner:origLink>http://www.willdurand.fr/sur-les-starting-blocks-pour-2011/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sur-les-starting-blocks-pour-2011</feedburner:origLink></item> <item><title>#forumPHP : résumé de ma seconde journée</title><link>http://feedproxy.google.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~3/209XI5Xw8wc/</link> <comments>http://www.willdurand.fr/forumphp-resume-de-la-seconde-journee/#comments</comments> <pubDate>Sun, 21 Nov 2010 15:58:42 +0000</pubDate> <dc:creator>Will</dc:creator> <category><![CDATA[ForumPHP]]></category> <category><![CDATA[Ma vie]]></category> <category><![CDATA[PHP]]></category><guid isPermaLink="false">http://www.willdurand.fr/?p=784</guid> <description><![CDATA[Second jour au forum PHP, très enrichissant. Voici le résumé de ma journée, un peu mieux synthétisé que la première journée. Déboguer son code avec Xdebug Présenté par Derick Rethans L&#8217;auteur de l&#8217;excellent Xdebug fait une présentation des possibilités de l&#8217;outil. On y apprend la possibilité de renvoyer les fichiers défaillants dans vim directement, configurer [...]]]></description> <content:encoded><![CDATA[<p
style="text-align: justify;">Second jour au forum PHP, très enrichissant. Voici le résumé de ma journée, un peu mieux synthétisé que <a
href="http://www.willdurand.fr/forumphp-resume-de-ma-premiere-journee/">la première journée</a>.</p><p
style="text-align: justify;"></p><h2 style="text-align: justify;">Déboguer son code avec Xdebug</h2><p
style="text-align: justify;"><em>Présenté par Derick Rethans</em></p><p
style="text-align: justify;"></p><p
style="text-align: justify;">L&#8217;auteur de l&#8217;excellent Xdebug fait une présentation des possibilités de l&#8217;outil. On y apprend la possibilité de renvoyer les fichiers défaillants dans vim directement, configurer l&#8217;affichage de la trace d&#8217;exécution, &#8230; Mais surtout un paramètre que je ne connaissais pas : <em>xdebug.scream</em> qui permet d&#8217;ignorer les &#8216;@&#8217; avant les fonctions (le &#8216;@&#8217; cache initialement les erreurs et avertissements). C&#8217;est un peu une tuerie pour le développeur car pas mal de projets (notamment certains CMS) utilisent cette astuce pour cacher la misère <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /></p><p
style="text-align: justify;">Xdebug permet de profiler son application et génère un fichier  exploitable soit avec un fichier PHP fourni sur le site de Xebug, soit avec KCacheGrind soit avec WebGrind (comme son nom l&#8217;indique c&#8217;est une application web).</p><p
style="text-align: justify;">Ensuite, Derick nous parle de la couverture de code avec son outil. Puis, grosse surprise (pour moi), la possibilité de déboguer pas à pas son application PHP. On utilise pour cela GTK DBGp ou des plugins Firefox/Chrome. Voilà encore quelque chose que l&#8217;on pouvait reprocher à PHP et qui est résorbé <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><p
style="text-align: justify;"></p><p
style="text-align: justify;"><em>Mon avis : Très bonne conférence, très bon outil et quelques astuces à tester. Parfait donc.</em></p><p
style="text-align: justify;"></p><h2 style="text-align: justify;">Un site web performant, tout est dans le réseau et le navigateur</h2><p
style="text-align: justify;"><em>Présenté par Eric Daspet</em></p><p
style="text-align: justify;"></p><p
style="text-align: justify;">Cette conférence m&#8217;est familière, je suis Eric depuis longtemps et je suis également très sensible aux problématiques de performances, en particulier au niveau <strong>frontend</strong>. C&#8217;est l&#8217;objet de cette conférence. On part sur un constat clair : tout se joue lors du chargement, peut importe ce qu&#8217;il y a côté backend (serveur et application) qui représente 5% du chargement total d&#8217;une page. Voici quelques données sur l&#8217;importance des performances :</p><ul
style="text-align: justify;"><li>Amazon : latence +100ms : -1% de ventes</li><li>Google : chargement +500ms : trafic -20%</li><li>Yahoo : chargement +400ms : abandon +5 à 9%</li><li>Bing : chargement +1s : revenu pub -2,8%</li><li>Mozilla : chargement -2 ,2s : transformation +15%</li></ul><p
style="text-align: justify;">Ce qui nous fait perdre du temps, c&#8217;est la latence et le nombre de téléchargements. La majeure partie du temps, le navigateur attend. Pour bien agir, voici ce qu&#8217;on peut faire :</p><ul
style="text-align: justify;"><li>Fusion JS, CSS</li><li>Fusion images : sprites CSS</li><li>CDN : akamai</li><li>URI en data, documents mhtml, archives JAR</li><li>Inline des images</li><li>Chargements parallèles : domaines multiples</li><li>Connexions persistantes : KeepAlive http (10 à 20% de gain)</li></ul><p
style="text-align: justify;">Mais aussi :</p><ul
style="text-align: justify;"><li>compression http</li><li>minimisation des contenus (espaces blancs)</li><li>recompression d’images (avec et sans pertes)</li><li>contenus pus petits</li><li>Chargement différé via AJAX</li><li>Ordonner et prioriser le contenu</li><li>Envoyer immédiatement les blocs sans calcul serveur</li><li>Chargement asynchrone du JS ou en bas de page</li><li>Accélérer le rendu</li><li>Utiliser du cache http</li><li>Pré charger des contenus à l’avance</li><li>Optimiser le JS, diminuer la complexité</li><li>Eviter les sélecteurs CSS/Jquery horriblement lents</li></ul><p
style="text-align: justify;"><em>Mon avis : peu de choses apprises car déjà bien documenté sur le sujet mais la conférence était très bien présentée, Eric a su (d&#8217;après les réactions) sensibiliser son public.</em></p><h2 style="text-align: justify;">Le Cloud Computing pour PHP</h2><p
style="text-align: justify;"><em>Présenté par Guillaume Plessis</em></p><p
style="text-align: justify;">Le Cloud Computing c&#8217;est quoi ?</p><ul
style="text-align: justify;"><li><strong>Infrastructure as a Service IaaS</strong></li></ul><p
style="text-align: justify;">Infrastructure massivement virtualisée. Instances virtuelles jetables. Facturation à l&#8217;heure. Répartition de charges. L&#8217;extinction des machines entraine la suppression des données.
Typiquement c&#8217;est le service Amazon EC2 mais on a aussi Rackspace Hosting, Gandi.net (que j&#8217;avais testé) et SoPrivé.</p><ul
style="text-align: justify;"><li><strong>Platform as a Service PaaS</strong></li></ul><p
style="text-align: justify;">Serveur d&#8217;applications clé en main qui rend bon nombre de services (Stockage, langage, base de données, &#8230;)</p><p
style="text-align: justify;">Typiquement Google App engine pour Java et Python, Heroku pour Ruby On Rails et Windows Azure (&#8230;). Pour PHP, présentation de <a
href="http://www.baobapp.com">Baobapp</a> que je vais tester bientôt en béta.</p><ul
style="text-align: justify;"><li><strong>Software as a Service SaaS</strong></li></ul><p
style="text-align: justify;">Applications infogérées clé en main. Par exemple, Gmail <img
src='http://www.willdurand.fr/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /></p><p
style="text-align: justify;"><em>Mon avis : Très intéressant de voir les différents modèles de Cloud, j&#8217;ai hâte de tester Baobapp, je viens de recevoir mon pass pour la béta, je consacrerai un article dessus.</em></p><p
style="text-align: justify;"></p><h2 style="text-align: justify;">Suivi de qualité &#8211; PIC, Plate-forme d&#8217;Intégration Continue</h2><p
style="text-align: justify;"><em>Présenté par Gabriele Santini</em></p><p
style="text-align: justify;"></p><p
style="text-align: justify;">Présentation d&#8217;une plate-forme d&#8217;intégration continue dotée de nombreux outils. En vrac : <strong>phpUnderControl</strong> ou <strong>Hudson</strong> pour le serveur CI. Ajout d&#8217;outils comme PHPUnit, Xdebug, PHP_CS, PHP_Documentor, PMD, PHP_CodeBrowser, PHP_Depend, &#8230; Certains métriques ne sont pas bien exploitées, ils ont donc portés <strong>Sonar</strong> pour PHP et c&#8217;est surtout ça la grosse info !</p><p
style="text-align: justify;"></p><p
style="text-align: justify;"><em>Mon avis : je suis là encore très sensible aux problématiques d&#8217;industrialisation et de suivi de qualité. J&#8217;ai déjà pas mal d&#8217;outils en place pour mon travail et cette conférence n&#8217;a fait que valider ma démarche. Cependant j&#8217;ai appris l&#8217;existence de Sonar pour PHP et ça, j&#8217;ai hâte de tester. Sinon, j&#8217;ai rédigé un article sur le sujet pour le prochain numéro de PHP Solutions&#8230;</em></p><p
style="text-align: justify;"></p><p
style="text-align: justify;"></p><h2 style="text-align: justify;">Analyse statistique du code &#8211; Écoutez votre code PHP</h2><div
style="text-align: justify;"><em>Présenté par Gabriele Santini</em></div><div
style="text-align: justify;"><em> </em></div><div
style="text-align: justify;">Trois niveaux d&#8217;analyse :</div><div
style="text-align: justify;"><ul><li>Syntaxique : avec PHP_Depend, PHPMD mais aussi Padawan pour détecter les anti-patterns et Phantm pour détecter les faux positifs.</li><li>Lexicale : PHPLoc (Métriques basiques), PHPCPD (code dupliqué) et PHP_CodeSniffer.</li><li>Bytecode : Vulcan Logic Disassembler, Bytekit et Bytekit-cli.</li></ul></div><p
style="text-align: justify;"></p><p
style="text-align: justify;">La visualisation peut se faire avec phpUnderControl, Arbit ou Sonar (!!!).</p><p
style="text-align: justify;"></p><p
style="text-align: justify;"><em>Mon avis : Très très intéressant, je connaissais la plupart des outils mais pas tous, je vais donc les tester. Le conférencier a bien exploré les possibilités d&#8217;analyse car explorer au niveau du bytecode, c&#8217;est&#8230; puissant !</em></p><p
style="text-align: justify;"></p><p
style="text-align: justify;"></p><h2 style="text-align: justify;">The PHP performance paradox</h2><div
style="text-align: justify;"><em>Présenté par Zeev Suraski.</em></div><div
style="text-align: justify;"><em> </em></div><div
style="text-align: justify;">Fondateur de Zend Technologies, accessoirement créateur du Zend Engine (moteur interne de PHP4). Zeev nous expose l&#8217;évolution de PHP en terme de performances et fait un peu de pub pour Zend. En chiffres, on peut retenir que de PHP5 à PHP5.3 on a un facteur 5 en amélioration des performances et de PHP5.3 à PHP trunk (le prochain) on améliore x2.</div><div
style="text-align: justify;"><em>Mon avis : Pas mal d&#8217;avoir des chiffres et de savoir comment ils ont modifiés PHP pour le rendre plus performant.</em></div><div
style="text-align: justify;"><em> </em></div><h2>Avis général</h2><div
style="text-align: justify;">Ce fût donc un très très bon forum et j&#8217;ai pris pas mal de plaisir lors de ces deux jours. C&#8217;est déjà fini, à l&#8217;année prochaine !</div><h3 class='related_post_title'>Related Posts</h3><ul
class='related_post'><li><a
href='http://www.willdurand.fr/forumphp-resume-de-ma-premiere-journee/' title='#forumPHP : résumé de ma première journée'>#forumPHP : résumé de ma première journée</a></li><li><a
href='http://www.willdurand.fr/optimiser-son-application-web-en-jouant-sur-php-mysql-et-apache2/' title='Optimiser son application web en jouant sur PHP, MySQL et Apache2'>Optimiser son application web en jouant sur PHP, MySQL et Apache2</a></li></ul> <a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/printfriendly.png" class="sociable-img sociable-hovers" title="Print" alt="Print" /></a><a
rel="nofollow" target="_blank"  href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;bodytext=Second%20jour%20au%20forum%20PHP%2C%20tr%C3%A8s%20enrichissant.%20Voici%20le%20r%C3%A9sum%C3%A9%20de%20ma%20journ%C3%A9e%2C%20un%20peu%20mieux%20synth%C3%A9tis%C3%A9%20que%20la%20premi%C3%A8re%20journ%C3%A9e.%0D%0A%0D%0A%0D%0AD%C3%A9boguer%20son%20code%20avec%20Xdebug%0D%0APr%C3%A9sent%C3%A9%20par%20Derick%20Rethans%0D%0A%0D%0AL%27auteur%20de%20l%27excellent%20Xdebug%20fait%20une%20pr%C3%A9sen" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/digg.png" class="sociable-img sociable-hovers" title="Digg" alt="Digg" /></a><a
rel="nofollow" target="_blank"  href="http://www.stumbleupon.com/submit?url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/stumbleupon.png" class="sociable-img sociable-hovers" title="StumbleUpon" alt="StumbleUpon" /></a><a
rel="nofollow" target="_blank"  href="http://delicious.com/post?url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;notes=Second%20jour%20au%20forum%20PHP%2C%20tr%C3%A8s%20enrichissant.%20Voici%20le%20r%C3%A9sum%C3%A9%20de%20ma%20journ%C3%A9e%2C%20un%20peu%20mieux%20synth%C3%A9tis%C3%A9%20que%20la%20premi%C3%A8re%20journ%C3%A9e.%0D%0A%0D%0A%0D%0AD%C3%A9boguer%20son%20code%20avec%20Xdebug%0D%0APr%C3%A9sent%C3%A9%20par%20Derick%20Rethans%0D%0A%0D%0AL%27auteur%20de%20l%27excellent%20Xdebug%20fait%20une%20pr%C3%A9sen" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/delicious.png" class="sociable-img sociable-hovers" title="del.icio.us" alt="del.icio.us" /></a><a
rel="nofollow" target="_blank"  href="http://www.facebook.com/share.php?u=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;t=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/facebook.png" class="sociable-img sociable-hovers" title="Facebook" alt="Facebook" /></a><a
rel="nofollow" target="_blank"  href="http://twitter.com/home?status=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e%20-%20http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/twitter.png" class="sociable-img sociable-hovers" title="Twitter" alt="Twitter" /></a><a
rel="nofollow" target="_blank"  href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;annotation=Second%20jour%20au%20forum%20PHP%2C%20tr%C3%A8s%20enrichissant.%20Voici%20le%20r%C3%A9sum%C3%A9%20de%20ma%20journ%C3%A9e%2C%20un%20peu%20mieux%20synth%C3%A9tis%C3%A9%20que%20la%20premi%C3%A8re%20journ%C3%A9e.%0D%0A%0D%0A%0D%0AD%C3%A9boguer%20son%20code%20avec%20Xdebug%0D%0APr%C3%A9sent%C3%A9%20par%20Derick%20Rethans%0D%0A%0D%0AL%27auteur%20de%20l%27excellent%20Xdebug%20fait%20une%20pr%C3%A9sen" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/googlebookmark.png" class="sociable-img sociable-hovers" title="Google Bookmarks" alt="Google Bookmarks" /></a><a
rel="nofollow" target="_blank"  href="http://www.friendfeed.com/share?title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;link=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/friendfeed.png" class="sociable-img sociable-hovers" title="FriendFeed" alt="FriendFeed" /></a><a
rel="nofollow" target="_blank"  href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;source=William%26%23039%3Bs+Blog+D%C3%A9veloppeur+web+ind%C3%A9pendant%2C+%C3%A9tudiant+et+passionn%C3%A9+%21+%23Symfony2+%23Rails+%23Diem+%23Git+%23Nginx+%23WebPerfs+%23SoftwareQuality&amp;summary=Second%20jour%20au%20forum%20PHP%2C%20tr%C3%A8s%20enrichissant.%20Voici%20le%20r%C3%A9sum%C3%A9%20de%20ma%20journ%C3%A9e%2C%20un%20peu%20mieux%20synth%C3%A9tis%C3%A9%20que%20la%20premi%C3%A8re%20journ%C3%A9e.%0D%0A%0D%0A%0D%0AD%C3%A9boguer%20son%20code%20avec%20Xdebug%0D%0APr%C3%A9sent%C3%A9%20par%20Derick%20Rethans%0D%0A%0D%0AL%27auteur%20de%20l%27excellent%20Xdebug%20fait%20une%20pr%C3%A9sen" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/linkedin.png" class="sociable-img sociable-hovers" title="LinkedIn" alt="LinkedIn" /></a><a
rel="nofollow" target="_blank"  href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;t=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/myspace.png" class="sociable-img sociable-hovers" title="MySpace" alt="MySpace" /></a><a
rel="nofollow" target="_blank"  href="http://www.netvibes.com/share?title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/netvibes.png" class="sociable-img sociable-hovers" title="Netvibes" alt="Netvibes" /></a><a
rel="nofollow" target="_blank"  href="http://www.printfriendly.com/print/new?url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/pdf.png" class="sociable-img sociable-hovers" title="PDF" alt="PDF" /></a><a
rel="nofollow" target="_blank"  href="http://ping.fm/ref/?link=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;body=Second%20jour%20au%20forum%20PHP%2C%20tr%C3%A8s%20enrichissant.%20Voici%20le%20r%C3%A9sum%C3%A9%20de%20ma%20journ%C3%A9e%2C%20un%20peu%20mieux%20synth%C3%A9tis%C3%A9%20que%20la%20premi%C3%A8re%20journ%C3%A9e.%0D%0A%0D%0A%0D%0AD%C3%A9boguer%20son%20code%20avec%20Xdebug%0D%0APr%C3%A9sent%C3%A9%20par%20Derick%20Rethans%0D%0A%0D%0AL%27auteur%20de%20l%27excellent%20Xdebug%20fait%20une%20pr%C3%A9sen" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/ping.png" class="sociable-img sociable-hovers" title="Ping.fm" alt="Ping.fm" /></a><a
rel="nofollow" target="_blank"  href="http://www.willdurand.fr/feed/" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/rss.png" class="sociable-img sociable-hovers" title="RSS" alt="RSS" /></a><a
rel="nofollow" target="_blank"  href="http://technorati.com/faves?add=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/technorati.png" class="sociable-img sociable-hovers" title="Technorati" alt="Technorati" /></a><a
rel="nofollow" target="_blank"  href="http://www.viadeo.com/shareit/share/?url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&title=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&urllanguage=fr" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/viadeo.png" class="sociable-img sociable-hovers" title="viadeo FR" alt="viadeo FR" /></a><a
rel="nofollow" target="_blank"  href="http://www.wikio.com/vote?url=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/wikio.png" class="sociable-img sociable-hovers" title="Wikio" alt="Wikio" /></a><a
rel="nofollow" target="_blank"  href="http://buzz.yahoo.com/submit/?submitUrl=http%3A%2F%2Fwww.willdurand.fr%2Fforumphp-resume-de-la-seconde-journee%2F&amp;submitHeadline=%23forumPHP%20%3A%20r%C3%A9sum%C3%A9%20de%20ma%20seconde%20journ%C3%A9e&amp;submitSummary=Second%20jour%20au%20forum%20PHP%2C%20tr%C3%A8s%20enrichissant.%20Voici%20le%20r%C3%A9sum%C3%A9%20de%20ma%20journ%C3%A9e%2C%20un%20peu%20mieux%20synth%C3%A9tis%C3%A9%20que%20la%20premi%C3%A8re%20journ%C3%A9e.%0D%0A%0D%0A%0D%0AD%C3%A9boguer%20son%20code%20avec%20Xdebug%0D%0APr%C3%A9sent%C3%A9%20par%20Derick%20Rethans%0D%0A%0D%0AL%27auteur%20de%20l%27excellent%20Xdebug%20fait%20une%20pr%C3%A9sen&amp;submitCategory=science&amp;submitAssetType=text" ><img
src="http://www.willdurand.fr/wp-content/plugins/sociable-30/images/default/16/yahoobuzz.png" class="sociable-img sociable-hovers" title="Yahoo! Buzz" alt="Yahoo! Buzz" /></a><br
/><br
/><img src="http://feeds.feedburner.com/~r/WilliamDurand-WebDeveloper-RecentPosts/~4/209XI5Xw8wc" height="1" width="1"/>]]></content:encoded> <wfw:commentRss>http://www.willdurand.fr/forumphp-resume-de-la-seconde-journee/feed/</wfw:commentRss> <slash:comments>2</slash:comments> <feedburner:origLink>http://www.willdurand.fr/forumphp-resume-de-la-seconde-journee/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=forumphp-resume-de-la-seconde-journee</feedburner:origLink></item> </channel> </rss><!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk
Page Caching using disk (enhanced)
Database Caching using memcached
Object Caching 3184/3253 objects using memcached

Served from: www.willdurand.fr @ 2012-04-28 10:17:24 -->

