<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>Fan de Web, développeur, admin système, amateur de photo et apprenti entrepreneur.</description><title>Un blog ? pourquoi faire ?</title><generator>Tumblr (3.0; @rcambien)</generator><link>http://romain.cambien.net/</link><item><title>Configuration YAML : Attention !</title><description>&lt;div class="posterous_autopost"&gt;&lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/rcambien/CtvBIpDDvzJGIrHAxiJwEFlBIFqnBFrBpfCdvpCyaAeDzJJgDggGHiHssbnB/media_httpfiguresorei_Jcyok.png.scaled1000.png" target="_blank"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/rcambien/CtvBIpDDvzJGIrHAxiJwEFlBIFqnBFrBpfCdvpCyaAeDzJJgDggGHiHssbnB/media_httpfiguresorei_Jcyok.png.scaled500.png" width="500" height="259"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Un billet rapide pour vous faire partager un fonctionnement du YAML qui peut générer quelques résultats surprenants&amp;#160;!&lt;/p&gt;  &lt;p&gt;Prenons un fichier app.yml&amp;#160;:&lt;/p&gt;  &lt;blockquote class="posterous_short_quote"&gt;  &lt;p&gt;all:&lt;/p&gt;  &lt;p&gt;  foo:&lt;/p&gt;  &lt;p&gt;    bar: [1, 2, 3, 4, 5]&lt;/p&gt;  &lt;p&gt;test:&lt;/p&gt;  &lt;p&gt;  foo&lt;/p&gt;  &lt;p&gt;    bar: [a, b, c]&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;Une fois mon application lancée en test, je m&amp;#8217;attends à ce que sfConfig::get(&amp;#8216;app_foo_bar&amp;#8217;) me retourne array(&amp;#8216;a&amp;#8217;, &amp;#8216;b&amp;#8217;, &amp;#8216;c&amp;#8217;)&amp;#160;? &lt;/p&gt;  &lt;p&gt;&lt;!--more--&gt;Et bien non&amp;#160;! J&amp;#8217;obtiens comme retour array(&amp;#8216;a&amp;#8217;, &amp;#8216;b&amp;#8217;, &amp;#8216;c&amp;#8217;, 4, 5) &amp;#8230; surprenant non&amp;#160;?&lt;/p&gt;  &lt;p&gt;Pourtant, en changeant le formatage de mon YAML, on comprend mieux ce qu&amp;#8217;il se passe&amp;#160;:&lt;/p&gt;  &lt;blockquote class="posterous_medium_quote"&gt;  &lt;p&gt;all:&lt;/p&gt;  &lt;p&gt;  foo:&lt;/p&gt;  &lt;p&gt;    bar: &lt;/p&gt;  &lt;p&gt;      - 1&lt;/p&gt;  &lt;p&gt;      - 2&lt;/p&gt;  &lt;p&gt;      - 3&lt;/p&gt;  &lt;p&gt;      - 4&lt;/p&gt;  &lt;p&gt;      - 5&lt;/p&gt;  &lt;p&gt;test:&lt;/p&gt;  &lt;p&gt;  foo&lt;/p&gt;  &lt;p&gt;    bar: &lt;/p&gt;  &lt;p&gt;      - a&lt;/p&gt;  &lt;p&gt;      - b&lt;/p&gt;  &lt;p&gt;      - c&lt;/p&gt;  &lt;/blockquote&gt;    &lt;p&gt;L’environnement de test va donc seulement surcharger les 3 premières valeurs de la configuration foo_bar, laissant les valeurs 4 et 5 dans mon tableau.&lt;/p&gt;  &lt;p&gt;Faites donc bien attention aux syntaxes dans les fichiers YAML, ça vous évitera des surprises&amp;#160;!&lt;/p&gt;    &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com" target="_blank"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://romain.cambien.net/configuration-yaml-attention" target="_blank"&gt;Un blog&amp;#160;? Pour quoi faire&amp;#160;?&lt;/a&gt; | &lt;a href="http://romain.cambien.net/configuration-yaml-attention#comment" target="_blank"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;</description><link>http://romain.cambien.net/post/2060838450</link><guid>http://romain.cambien.net/post/2060838450</guid><pubDate>Wed, 01 Dec 2010 17:46:40 +0100</pubDate><category>php</category><category>symfony</category><category>yaml</category></item><item><title>Symfony Live 2010 : Le doute</title><description>&lt;div class="posterous_autopost"&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;&lt;a href="http://posterous.com/getfile/files.posterous.com/rcambien/HDesnjJcwzobglEvrDlChrbrrvIIoEetAitzjBjCojigbaickDEGxCHpcgoD/media_httpwwwinformat_etJhh.jpg.scaled1000.jpg" target="_blank"&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/rcambien/HDesnjJcwzobglEvrDlChrbrrvIIoEetAitzjBjCojigbaickDEGxCHpcgoD/media_httpwwwinformat_etJhh.jpg.scaled500.jpg" width="500" height="200"/&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Un nouveau billet avec pas mal de retard sur la conférence Symfony Live, planning d&amp;#8217;été oblige :)&lt;/p&gt;  &lt;p&gt;Cette conférence avait l&amp;#8217;originalité de se dérouler entièrement en ligne, un format de plus en plus à la mode qui a de nombreux avantages. Plus besoin de se déplacer et donc des frais réduits, une très bonne idée pour rendre les conférences accessibles au plus grand nombre.&lt;/p&gt;  &lt;p&gt;Petite parenthèse technique, j&amp;#8217;aurais aimé que les différents intervenants investissent dans du matériel de qualité car le résultat était très inégal.&lt;/p&gt;  &lt;p&gt;Comme j&amp;#8217;en parlais dans un &lt;a href="http://romain.cambien.net/symfony-reloaded-follow-the-white-rabbit" target="_blank"&gt;précèdent billet&lt;/a&gt;, la direction que prend Symfony dans sa mouture 2.0 me laisse un peu perplexe et c&amp;#8217;est pour cela que je tenais à participer à cette conférence.&lt;/p&gt;    &lt;p&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;State of Symfony (Fabien Potencier)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;On commence donc avec Fabien qui nous parle justement de l&amp;#8217;état d&amp;#8217;avancement de Symfony2 et malheureusement il n&amp;#8217;y avait pas grand-chose à se mettre sous la dent.&lt;/p&gt;  &lt;p&gt;Il nous présente surtout des composants que l&amp;#8217;on connaissait déjà pour peu qu&amp;#8217;on le suive sur Twitter, nous avons donc&amp;#160;:&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;a href="http://github.com/fabpot/symfony/tree/master/src/Symfony/Components/CssSelector/" target="_blank"&gt;CssSelector&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://github.com/fabpot/symfony/tree/master/src/Symfony/Components/DomCrawler/" target="_blank"&gt;DomCrawler&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://github.com/fabpot/symfony/tree/master/src/Symfony/Components/BrowserKit/" target="_blank"&gt;Browser&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;&lt;a href="http://github.com/fabpot/symfony/tree/master/src/Symfony/Components/Finder/" target="_blank"&gt;Finder&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt;&lt;p&gt;On apprend également que la philosophie Symfony2 ne bougera plus même si le code n&amp;#8217;est pas encore stable, qu&amp;#8217;une version finale sera disponible avant la fin de l&amp;#8217;année et que, pour le moment, aucun plan de migration pour les versions Symfony 1.x n&amp;#8217;est prévu.&lt;/p&gt;  &lt;p&gt;J&amp;#8217;en reviens sur ce point, qui me semble pourtant important, dans des entreprises comme la mienne où 90% du chiffre d&amp;#8217;affaire passe par des projets Symfony, la question de la migration est un point vital sachant que la fin du support Symfony 1.4 est planifié dans 2 ans et que le temps de migration de certains gros projets n&amp;#8217;est pas négligeable. J&amp;#8217;estime que, malheureusement, beaucoup de société vont se retrouver trop juste pour migrer leur produit en 2.0 et que beaucoup tourneront encore sous 1.4 après la fin du support.&lt;/p&gt;  &lt;p&gt;J&amp;#8217;ai été assez déçu de cette intervention, j&amp;#8217;en attendais beaucoup d&amp;#8217;éclaircissements mais rien de réellement neuf n&amp;#8217;a été présenté.&lt;/p&gt;  &lt;p&gt;&lt;object height="417" width="500"&gt; &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=news-100624020131-phpapp01&amp;amp;stripped_title=news-of-the-symfony2-world"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=news-100624020131-phpapp01&amp;amp;stripped_title=news-of-the-symfony2-world" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" height="417" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: medium;"&gt;&lt;strong&gt;Doctrine 2 (Johnathan Wage)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div&gt;&lt;span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;Un autre projet avec lequel j&amp;#8217;ai quelques soucis, l&amp;#8217;intervention m&amp;#8217;intéressait donc beaucoup.&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;Johnathan Wage nous présente donc la version 2 de cet ORM avec comme grande avancé l&amp;#8217;apparition d&amp;#8217;un ODM (Object Document Mapper) qui permet de manipuler des documents issus de base NoSQL comme MongoDB. Je trouve cette fonctionnalité très prometteuse car le NoSQL se prête très bien à l&amp;#8217;utilisation que l&amp;#8217;on a des ORMs dans PHP.&lt;/p&gt;  &lt;p&gt;Là où les choses se compliquent, c&amp;#8217;est le nouveau système de &amp;#8220;configuration&amp;#8221; par annotation. J&amp;#8217;ai vraiment du mal avec ce concept pour plusieurs raisons&amp;#160;: l&amp;#8217;absence de support directe dans PHP, dans les IDEs et le cauchemar pour le débogage. Autre point surprenant, l&amp;#8217;obligation d&amp;#8217;utiliser un contrôleur Doctrine pour pouvoir profiter de l&amp;#8217;ORM, comment ce système va fonctionner lorsqu&amp;#8217;on voudra utiliser un autre contrôleur en même temps&amp;#160;?&lt;/p&gt;  &lt;p&gt;Enfin, on finit avec une présentation du Database Migration System, un outil qui permet de mettre à jour la base de données en suivant les modifications du schéma Doctrine. Même si je comprends l&amp;#8217;idée de facilitation de la gestion de sa base de données pour des développeurs ne voulant pas toucher à leur serveur MySQL, ce genre d&amp;#8217;automatisation peut être très dangereux en terme de coupure de service et de pertes de données. L&amp;#8217;outil devrai, selon moi, se limiter à la génération des fichiers SQL et ne pas proposer l&amp;#8217;exécution de ces derniers.&lt;/p&gt;  &lt;p&gt;&lt;object height="417" width="500"&gt; &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2anddoctrine-100623202058-phpapp01&amp;amp;stripped_title=symfony2-and-doctrine2-integration"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2anddoctrine-100623202058-phpapp01&amp;amp;stripped_title=symfony2-and-doctrine2-integration" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" height="417" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: medium;"&gt;&lt;strong&gt;Test (Fabien Potencier)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;div&gt;&lt;span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;On continue avec le nouveau module de test de Symfony2 et l&amp;#8217;intégration du célèbre PHPUnit. Cela va apporter une intégration plus facile de ses projets Symfony2 dans les différents outils d&amp;#8217;intégration continue et c&amp;#8217;est une très bonne chose. On retrouve ici les composants présentés par Fabien en début de conférence et qui servent pour les tests fonctionnels.&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;On découvre aussi une fonctionnalité très pratique de PHPUnit, l&amp;#8217;isolation des processus via un fork() pour empêcher les tests de tuer l&amp;#8217;ensemble du système en cas d&amp;#8217;erreurs fatales et de paralléliser ces derniers afin accélérer le processus. D&amp;#8217;ailleurs, malgré l&amp;#8217;affirmation de Fabien sur le fonctionnement de ce système sur Windows, cela risque de poser par mal de problème car le support du fork() n&amp;#8217;est pas &lt;a href="http://fr.php.net/manual/fr/pcntl.installation.php" target="_blank"&gt;disponible sur cet environnement&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Fabien nous parle ensuite du très intéressant profiler qui va permettre de tester les performances de son application avec les temps d&amp;#8217;exécutions et des statistiques sur les appels à la base de données, etc&amp;#8230;&lt;/p&gt;  &lt;p&gt;Finalement, une petite pensée pour le projet Sismo clairement abandonné.&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: 13px;"&gt; &lt;/span&gt;&lt;/p&gt;  &lt;div&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;&lt;object height="417" width="500"&gt; &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testing-100624020238-phpapp01&amp;amp;stripped_title=unit-and-functional-testing-with-symfony2"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=testing-100624020238-phpapp01&amp;amp;stripped_title=unit-and-functional-testing-with-symfony2" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" height="417" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;div&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Cache (Fabien Potencier)&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;Sûrement le point qui a fait le plus de bruits sur Internet, la présentation du nouveau système de cache de Symfony2.&lt;/p&gt;  &lt;p&gt;Fabien commence très fort avec des benchmark&amp;#160;: Symfony2 traitent 5 fois plus de requêtes que Symfony 1 &amp;#8230; Impressionnant mais complètement inutilisable hors contexte&amp;#160;! On aurait aimé avoir les conditions du test, les sources de l&amp;#8217;application qui a servi à les réaliser.&lt;/p&gt;  &lt;p&gt;Vient ensuite la clé de ces statistiques incroyables&amp;#160;: l&amp;#8217;utilisation d&amp;#8217;un reverse proxy directement dans le moteur Symfony2. L&amp;#8217;idée est très intéressante même si je doute qu&amp;#8217;elle soit réellement utilisée. Les sites assez gros pour être confrontés à la question de la cache auront déjà intégrés des solutions identiques au niveau de leurs serveurs HTTP, les autres n&amp;#8217;auront sûrement pas besoin de ce genre de solutions.&lt;/p&gt;  &lt;p&gt;Avec l&amp;#8217;arrivée de ce reverse proxy, on découvre l&amp;#8217;utilisation du protocole &lt;a href="http://www.w3.org/TR/esi-lang" target="_blank"&gt;ESI d&amp;#8217;Akamai &lt;/a&gt;qui permet de mettre en cache que quelques portions de ses pages et ainsi d&amp;#8217;optimiser au mieux la gestion des éléments en caches. Il faut avouer qu&amp;#8217;à part Akamai, à l&amp;#8217;origine de la spécification, il y a encore peu de logiciel qui supportent complètement ce mode, limitant donc son utilisation.&lt;/p&gt;  &lt;p&gt;&lt;object height="417" width="500"&gt; &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cache-100624020432-phpapp02&amp;amp;stripped_title=caching-on-the-edge-with-symfony2"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=cache-100624020432-phpapp02&amp;amp;stripped_title=caching-on-the-edge-with-symfony2" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" height="417" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;div&gt;&lt;span style="font-size: medium;"&gt;&lt;strong&gt;Form FrameWork (Bernhard Schussek)&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;Le module qui me pose le plus de problèmes et qui me fait perdre le plus de temps dans mes applications Symfony actuelles est sûrement le Form FrameWork. Parti d&amp;#8217;une très bonne idée, l&amp;#8217;ensemble devient ingérable dès que l&amp;#8217;on cherche à réaliser des formulaires un peu exotiques. J&amp;#8217;attendais donc cette présentation espérant une remise à plat.&lt;/p&gt;  &lt;p&gt;On retrouve une liste de Widget intéressant allant des classiques Text, Password, Hidden, etc&amp;#8230; à ceux plus typés comme les Integer, Date, Percent, etc&amp;#8230; L&amp;#8217;ensemble est cohérent et l&amp;#8217;utilisation est très agréable. On découvre également les Fields Group et Fields Collection qui permettent une gestion très simple des relations 1-n et n-n dans ces formulaires.&lt;/p&gt;  &lt;p&gt;Vient ensuite la gestion des validations et là c&amp;#8217;est la catastrophe&amp;#160;! On retrouve ici le fameux système d&amp;#8217;annotation mais dans une version encore plus sournoise car elle embarque un pseudo langage &amp;#8230; des heures de torture pour déboguer en perspective :)&lt;/p&gt;  &lt;p&gt;&lt;object height="417" width="500"&gt; &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=stateofsymfony2-forms-presentation-100623183822-phpapp02&amp;amp;stripped_title=the-new-form-framework"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=stateofsymfony2-forms-presentation-100623183822-phpapp02&amp;amp;stripped_title=the-new-form-framework" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" height="417" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: medium;"&gt;&lt;strong&gt;Propel (François Zaninotto)&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;div&gt;&lt;span style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; line-height: 16px;"&gt;La surprise de cette conférence. Avec tout le buzz autour de Doctrine 2, je commençais à me faire à l&amp;#8217;idée de voir disparaître cet ORM que j&amp;#8217;utilise pourtant tous les jours.&lt;/span&gt;&lt;/div&gt;  &lt;div&gt;  &lt;div style="font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; background-color: white; background-image: none; line-height: 1.4em; display: block;"&gt;  &lt;p&gt;On découvre la version 1.5 qui apporte pas mal de bonne idée tout en restant compatible 1.3 et 1.4. Il semble que les équipes de Propel ont à coeur d&amp;#8217;aider au mieux la migration des projets anciens vers leurs nouvelles versions, chose que j&amp;#8217;aurai aimé retrouver avec Symfony2.&lt;/p&gt;  &lt;p&gt;Niveau requête, le Model Queries vient remplacer le vieillissant Criteria par un système découlant naturellement du plugin DbFinder de Francois Zaninotto, maintenant à la tête du projet Propel.&lt;/p&gt;  &lt;p&gt;L&amp;#8217;apparition de la Concrete Table dans Propel va permettre de gérer des héritages entre les tables et ainsi pourvoir créer des structures de bases qui colleront parfaitement à nos modèles PHP.&lt;/p&gt;  &lt;p&gt;On trouve également l&amp;#8217;Aggregate Table qui fonctionne comme des Triggers très simple côté PHP. Je trouve l&amp;#8217;idée très bonne car, malgré l&amp;#8217;avantage des Triggers, je me suis toujours refusé à ajouter de la programmabilité dans ma base de données, je trouve donc ici un compromis très utile. Reste à savoir comment le système gérera les corruptions de table.&lt;/p&gt;  &lt;p&gt;&lt;object height="417" width="500"&gt; &lt;param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2meetspropel1-100623153033-phpapp02&amp;amp;stripped_title=symfony2-meets-propel-15-4"&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=symfony2meetspropel1-100623153033-phpapp02&amp;amp;stripped_title=symfony2-meets-propel-15-4" allowfullscreen="true" type="application/x-shockwave-flash" allowscriptaccess="always" height="417" width="500"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-family: Arial, Helvetica, sans-serif; line-height: normal; font-size: medium;"&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;/div&gt;  &lt;div&gt;Je n&amp;#8217;ai malheureusement pas trouvé les réponses que j&amp;#8217;espérais dans cette conférence Symfony Live, au contraire, je me trouve à nouveau dans une situation de doute qui m&amp;#8217;oblige à jeter un oeil sur d&amp;#8217;autre FrameWork et d&amp;#8217;autres langages car quitte à devoir reprendre nos projets à zéro, autant trouver quelque chose de neuf.&lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;Je trouve de plus en plus de monde qui semble également douter de l&amp;#8217;avenir de Symfony, ce qui me réconforte dans l&amp;#8217;idée qu&amp;#8217;il y a peut-être un autre avenir dans le PHP.&lt;/div&gt;  &lt;div&gt; &lt;/div&gt;  &lt;div&gt;Affaire à suivre.&lt;/div&gt;        &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com" target="_blank"&gt;Posted via email&lt;/a&gt;   from &lt;a href="http://romain.cambien.net/symfony-live-2010-le-doute" target="_blank"&gt;Un blog&amp;#160;? Pour quoi faire&amp;#160;?&lt;/a&gt; | &lt;a href="http://romain.cambien.net/symfony-live-2010-le-doute#comment" target="_blank"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;</description><link>http://romain.cambien.net/post/820925637</link><guid>http://romain.cambien.net/post/820925637</guid><pubDate>Fri, 16 Jul 2010 23:49:06 +0200</pubDate><category>conférence</category><category>doctrine</category><category>propel</category><category>symfony</category><category>symfony2</category></item><item><title>Symfony + NFS + XCache = Fuyez pauvres fous !</title><description>&lt;div class="posterous_autopost"&gt;&lt;p&gt;&lt;img src="http://posterous.com/getfile/files.posterous.com/temp-2010-06-18/CmlqAjAunCFfkIwyycimcxnHwlijoFcowkblowpaIpwEpHgrpiknDqCrppFF/gandalf-sign.jpg.scaled500.jpg" width="330" height="400"/&gt;&lt;/p&gt;  &lt;p&gt;Juste un billet rapide en espérant qu&amp;#8217;un jour quelqu&amp;#8217;un sera heureux de trouver ici ce que je n&amp;#8217;ai pas pu trouver sur Internet.&lt;/p&gt;    &lt;p&gt;J&amp;#8217;ai amené &lt;strong&gt;&lt;a href="http://www.symfony-project.org/" target="_blank"&gt;Symfony&lt;/a&gt;&lt;/strong&gt; dans mon entreprise il y a 3 ans maintenant et presque tous nos projets tournent avec. Pourtant, la gestion de &lt;strong&gt;la cache a toujours été un cauchemar&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;Comme sûrement beaucoup de sites à gros trafic, nous travaillons avec des grappes de &lt;strong&gt;frontaux Web raccordés à un serveur NFS&lt;/strong&gt; afin de distribuer les sources PHP.&lt;/p&gt;    &lt;p&gt;Nous avons vite compris que mettre la cache &lt;strong&gt;Symfony&lt;/strong&gt; sur un &lt;strong&gt;montage NFS était de la folie&lt;/strong&gt; et c&amp;#8217;est avec joie que nous avons accueilli l&amp;#8217;arrivée de Symfony 1.1 et sa configuration du répertoire de cache, mais depuis, chaque &amp;#8220;&lt;strong&gt;symfony cc&lt;/strong&gt;&amp;#8221; restait un moment délicat car il arrivait régulièrement qu&amp;#8217;un serveur ne reconstruise pas sa cache correctement &amp;#8230; et là, &lt;strong&gt;la page blanche, des alertes partout&lt;/strong&gt; et des développeurs en train de faire &lt;strong&gt;des cc frénétiquement&lt;/strong&gt; en surveillant la porte du patron.&lt;/p&gt;    &lt;p&gt;Chose étrange, personne ne semble avoir le même problème, je me permets donc de contacter directement &lt;strong&gt;&lt;a href="http://www.sensiolabs.com/fr" target="_blank"&gt;Sensio Labs&lt;/a&gt;&lt;/strong&gt; (éditeur du Framework) qui m&amp;#8217;explique que même en dehors de la cache, &lt;strong&gt;Symfony n&amp;#8217;aime pas NFS&lt;/strong&gt; et que pour une solution, il fallait mieux contacter leur service commercial (sic &amp;#8230; mais je ne peux pas leur en vouloir :)). Je m&amp;#8217;exécute donc et, dans l&amp;#8217;urgence, je me &lt;strong&gt;débarrasse de nos serveurs NFS&lt;/strong&gt; &amp;#8230; c&amp;#8217;est mieux, mais la cache continue de temps en temps à nous faire peur.&lt;/p&gt;    &lt;p&gt;C&amp;#8217;est seulement cette semaine, dans une ultime tentative, que je m&amp;#8217;attaque à notre cache OPCODE&amp;#160;: &lt;strong&gt;&lt;a href="http://xcache.lighttpd.net/" target="_blank"&gt;Xcache&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;Il y a quelques années, &lt;strong&gt;Xcache&lt;/strong&gt; était la référence de la cache OPCODE, rapide, simple, stable. Mais depuis, il faut l&amp;#8217;avouer, le projet n&amp;#8217;a pas vraiment évolué, pris de vitesse par &lt;strong&gt;&lt;a href="http://pecl.php.net/package/APC" target="_blank"&gt;APC&lt;/a&gt;&lt;/strong&gt; qui s&amp;#8217;impose aujourd&amp;#8217;hui comme la solution de référence.&lt;/p&gt;    &lt;p&gt;Avec &lt;strong&gt;APC&lt;/strong&gt;, le miracle s&amp;#8217;accomplit, j&amp;#8217;ai beau faire des cc en masse, rien ne semble altérer la stabilité de notre application malgré &lt;strong&gt;des centaines de hits client&lt;/strong&gt;.&lt;/p&gt;    &lt;p&gt;Mais la véritable surprise, ce sont les performances&amp;#160;: &lt;strong&gt;30% de gain sur nos graphes CPU&lt;/strong&gt;, il était vraiment temps de changer.&lt;/p&gt;    &lt;p&gt;Conclusion, pour vos projets Symfony, &lt;strong&gt;oubliez NFS&lt;/strong&gt;, copiez vos sources en local sur cache machine, &lt;strong&gt;oubliez Xcache, utilisez APC&lt;/strong&gt;&amp;#160;!&lt;/p&gt;    &lt;p&gt;Et pour les curieux, voici la configuration &lt;strong&gt;APC&lt;/strong&gt; retenue&amp;#160;:&lt;/p&gt;    &lt;p&gt;&lt;code&gt;    [apc]    apc.enabled=1    ; 1 segments of 60Mo    apc.shm_segments=1    apc.shm_size=60    ; No optimization    apc.optimization=0    ; Never expire    apc.ttl=0    apc.user_ttl=0    ; workaround for CLI    apc.enable_cli=1    ; Symfony make lot of path lookups, try to optimize    apc.include_once_override=1    apc.canonicalize=1    ; Wait 2 seconds to rebuild cache    apc.file_update_protection=2    &lt;/code&gt;&lt;/p&gt;      &lt;p style="font-size: 10px;"&gt;  &lt;a href="http://posterous.com" target="_blank"&gt;Posted via web&lt;/a&gt;   from &lt;a href="http://romain.cambien.net/20564234" target="_blank"&gt;Un blog&amp;#160;? Pour quoi faire&amp;#160;?&lt;/a&gt; | &lt;a href="http://romain.cambien.net/20564234#comment" target="_blank"&gt;&lt;span style="font-size: 11px"&gt;Comment&amp;#160;»&lt;/span&gt;&lt;/a&gt;  &lt;/p&gt;  &lt;/div&gt;</description><link>http://romain.cambien.net/post/730903546</link><guid>http://romain.cambien.net/post/730903546</guid><pubDate>Thu, 24 Jun 2010 11:51:14 +0200</pubDate><category>apc</category><category>nfs</category><category>php</category><category>symfony</category><category>xcache</category></item><item><title>"Profiling #Symfony plugin http://icio.us/cuhthk"</title><description>“Profiling #Symfony plugin &lt;a href="http://icio.us/cuhthk" target="_blank"&gt;http://icio.us/cuhthk&lt;/a&gt;”&lt;br/&gt;&lt;br/&gt; - &lt;em&gt;&lt;a href="http://twitter.com/popofr13/status/13777047576" target="_blank"&gt;popofr13&lt;/a&gt;&lt;/em&gt;</description><link>http://romain.cambien.net/post/590084395</link><guid>http://romain.cambien.net/post/590084395</guid><pubDate>Tue, 11 May 2010 20:10:57 +0200</pubDate><category>symfony</category><category>php</category><category>profiling</category><category>xhprof</category></item><item><title>Using Symfony with Google App Engine?</title><description>&lt;a href="http://www.symfonylab.com/using-symfony-with-google-app-engine/"&gt;Using Symfony with Google App Engine?&lt;/a&gt;: &lt;p&gt;En attendant le support du PHP dans Google Apps :)&lt;/p&gt;</description><link>http://romain.cambien.net/post/465641399</link><guid>http://romain.cambien.net/post/465641399</guid><pubDate>Mon, 22 Mar 2010 14:45:27 +0100</pubDate><category>symfony</category></item><item><title>rcParallelTaskPlugin - 1.0.1</title><description>&lt;a href="http://www.symfony-project.org/plugins/rcParallelTaskPlugin/1_0_1"&gt;rcParallelTaskPlugin - 1.0.1&lt;/a&gt;: &lt;p&gt;New version of my plugin :&lt;/p&gt;
&lt;p&gt;&lt;span&gt;
&lt;ul&gt;&lt;li&gt;
&lt;p&gt;Add a method to change the ressource identifier&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add an exception if PCNTL module is missing&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Correct the readme&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;&lt;/span&gt;&lt;/p&gt;</description><link>http://romain.cambien.net/post/454340587</link><guid>http://romain.cambien.net/post/454340587</guid><pubDate>Wed, 17 Mar 2010 13:33:09 +0100</pubDate><category>symfon</category><category>symfony</category></item><item><title>A week of symfony #167 (8-&gt;14 March 2010)</title><description>&lt;a href="http://www.symfony-project.org/blog/2010/03/14/a-week-of-symfony-167-8-14-march-2010"&gt;A week of symfony #167 (8-&gt;14 March 2010)&lt;/a&gt;: &lt;p&gt;Et hop, j’apparais 3 fois dans la dernière newsletter de Symfony !&lt;/p&gt;</description><link>http://romain.cambien.net/post/449772390</link><guid>http://romain.cambien.net/post/449772390</guid><pubDate>Mon, 15 Mar 2010 12:18:47 +0100</pubDate><category>symfony</category></item><item><title>rcParallelTask Plugin : Un plugin pour exécuter des taches Symfony en parallèle.</title><description>&lt;a href="http://www.symfony-project.org/plugins/rcParallelTaskPlugin"&gt;rcParallelTask Plugin : Un plugin pour exécuter des taches Symfony en parallèle.&lt;/a&gt;: &lt;p&gt;This plugin allow to create task that can fork for parallel processing.&lt;/p&gt;
&lt;p&gt;It provide an easy way to create as many child as you want and a simple queue and lock system.&lt;/p&gt;</description><link>http://romain.cambien.net/post/437088252</link><guid>http://romain.cambien.net/post/437088252</guid><pubDate>Tue, 09 Mar 2010 18:03:00 +0100</pubDate><category>symfony</category><category>plugin</category></item><item><title>Symfony reloaded : follow the white rabbit</title><description>&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Comme promis, petit point sur Symfony 2.0.&lt;/p&gt;
&lt;p&gt;Vous trouverez souvent ici des articles sur Symfony, un framework PHP que j&amp;#8217;affectionne tout particulièrement.&lt;/p&gt;
&lt;p&gt;Il y a quelques mois, Fabien, le gars à la tête du framework, nous gratifiait d&amp;#8217;une &lt;span&gt;&lt;a target="_blank" href="http://fabien.potencier.org/talk/22/phpquebec-2009-symfony-2"&gt;preview&lt;/a&gt; &lt;/span&gt;de symfony 2.0. A l&amp;#8217;époque, je me disais qu&amp;#8217;il était encore parti en plein délire et j&amp;#8217;avais fini la présentation assez sceptique sur le lien entre &amp;#8220;ça&amp;#8221; et l&amp;#8217;actuel framework.&lt;/p&gt;
&lt;p&gt;Depuis, les choses ont fait un peu de chemin et nous voilà avec une &lt;span&gt;&lt;a target="_blank" href="http://symfony-reloaded.org/"&gt;beta&lt;/a&gt;&lt;/span&gt; de cette 2.0.&lt;/p&gt;
&lt;p&gt;Première lecture, première page, mauvaise surprise, je ne reconnais rien. Trois ans que je fais du symfony et impossible d&amp;#8217;identifier le moindre bout de code &amp;#8230; fermeture du navigateur.&lt;/p&gt;
&lt;p&gt;Deuxième tentative, lecture approfondie, je commence à retrouver mes marques et, mine de rien, je trouve pas mal d&amp;#8217;idées très intéressantes.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;L&amp;#8217;univers du Bundle roi&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Symfony est très modulable, avec son modèle MVC et son système de plugins, il est très facile d&amp;#8217;étendre son code et son application.&lt;/p&gt;
&lt;p&gt;La version 2.0 arrive ici avec un concept nouveau&amp;#160;: le Bundle, une unité de code qui est utilisée pour son application, les plugins, mais également le framework lui-même.&lt;/p&gt;
&lt;p&gt;L&amp;#8217;idée est alléchante, comme tout est Bundle, on va pouvoir charger vraiment les parties du framework que l&amp;#8217;on souhaite, mais aussi packager facilement son application pour la délivrer sous forme de plugins.&lt;/p&gt;
&lt;p&gt;Reste à voir comment tout cela va se passer en &amp;#8220;conditions réels&amp;#8221; et j&amp;#8217;espère que cela va permettre une montée en puissance de la partie plugins de Symfony que je ne trouve malheureusement pas assez aboutie.&lt;/p&gt;
&lt;p&gt;&lt;span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;M&amp;#8217;as-tu vu&amp;#160;?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;L&amp;#8217;autre grosse nouveauté, c&amp;#8217;est la &lt;span&gt;&lt;a target="_blank" href="http://symfony-reloaded.org/quick-tour-part-2"&gt;partie vue&lt;/a&gt;&lt;/span&gt; du modèle MVC, dans Symfony 2.0, on trouve quelque chose de plus homogène avec le contrôleur. On retrouve la structure de notre Bundle ce qui va permettre un plus grande liberté dans l&amp;#8217;utilisation des inclusions de vues entre Bundles et applications.&lt;/p&gt;
&lt;p&gt;Autre changement, le passage des vues en objets. Même si Symfony est un framework utilisant intensément la programmation objet, on trouvait dans les versions 1.x un système d&amp;#8217;Helper utilisé dans les vues. Concrètement, il s&amp;#8217;agissait d&amp;#8217;ensemble de fonctions utilisables pour créer les liens, formulaire et autres éléments HTML.&lt;/p&gt;
&lt;p&gt;Maintenant, tout est objet ce que vont adorer les fans d&amp;#8217;objets &amp;#8230; mais le problème est que cette partie vue est souvent destinée aux intégrateurs qui ne maîtrisent pas forcement ces notions &amp;#8230; Reste à attendre le Bundle Smarty :)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;2.0 ready&amp;#160;?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Je passe sur les autres petites nouveautés et j&amp;#8217;imagine que tout cela va encore beaucoup changer.&lt;/p&gt;
&lt;p&gt;Je trouve qu&amp;#8217;il y a finalement pas mal de très bonne idée dans cette 2.0 mais la pilule va être difficile à passer.&lt;/p&gt;
&lt;p&gt;Dans mon entreprise, nous finissons tout juste notre migration vers Symfony et bon nombre de projets sont encore en Symfony 1,0. Malgré une 1.4 LTE encore maintenue pendant 3 ans, je me dis que le travail de migration en 2.0 va être difficile à justifier &amp;#8230;&lt;/p&gt;
&lt;p&gt;Il va vraiment falloir un gros travail sur les procédures de migrations et l&amp;#8217;utilisation de modules de compatibilité pour assister au mieux la mise à niveau.&lt;/p&gt;
&lt;p&gt;Affaire à suivre.&lt;/p&gt;</description><link>http://romain.cambien.net/post/434597189</link><guid>http://romain.cambien.net/post/434597189</guid><pubDate>Mon, 08 Mar 2010 13:54:00 +0100</pubDate><category>symfony</category></item><item><title>I'm still ALIVE !</title><description>&lt;p&gt;Juste une brève pour rassurer tout le monde&amp;#160;: Non, ce blog n&amp;#8217;est pas mort dès sa première semaine&amp;#160;!&lt;/p&gt;
&lt;p&gt;Mieux, j&amp;#8217;ai même un paquet d&amp;#8217;article en attentent d&amp;#8217;écriture et pour vous faire patienter, en voici un aperçu&amp;#160;:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt; Symfony 2.0&amp;#160;: Cette semaine, j&amp;#8217;ai pris le temps de lire la preview de Symfony 2.0.&lt;/li&gt;
&lt;li&gt;Propel 1.5&amp;#160;: Une autre préview, un autre article.&lt;/li&gt;
&lt;li&gt;Web sur mobile&amp;#160;: je suis en train de travailler sur une WebApp pour mobile, pas mal de particularités à faire partager &lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Bon &amp;#8230; va falloir s&amp;#8217;y mettre :)&lt;/p&gt;</description><link>http://romain.cambien.net/post/423940635</link><guid>http://romain.cambien.net/post/423940635</guid><pubDate>Wed, 03 Mar 2010 11:19:30 +0100</pubDate><category>symfony</category><category>propel</category><category>web</category></item></channel></rss>

