<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Le Touilleur Express &#187; Java</title>
	<atom:link href="http://www.touilleur-express.fr/category/java/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.touilleur-express.fr</link>
	<description>Blog sur Java, le métier de développeur et la vie de freelance par Nicolas Martignole</description>
	<lastBuildDate>Wed, 08 Feb 2012 11:54:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Fier d&#8217;être développeur</title>
		<link>http://www.touilleur-express.fr/2012/02/08/fier-detre-developpeur/</link>
		<comments>http://www.touilleur-express.fr/2012/02/08/fier-detre-developpeur/#comments</comments>
		<pubDate>Wed, 08 Feb 2012 11:45:57 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Perso]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6155</guid>
		<description><![CDATA[Je suis passé aux Microsoft TechDays. Un très bel événement pour la communauté Microsoft. Ambiance sympa, environ 15 000 personnes, c&#8217;est une autre échelle par rapport à Devoxx France. En tant que développeur Java, cela fait du bien de voir d&#8217;autres technologies et d&#8217;autres passionnés. Forcément ceux qui me connaissent et que j&#8217;ai croisé m&#8217;ont demandé : mais que fais-tu ici ? Et bien je vais te dire : ça fait du bien. En écoutant une conférence sur l&#8217;ergonomie Web ou une présentation sur ASP.NET MVC 3.0 j&#8217;ai appris de ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/worldofdevelopers.png"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/worldofdevelopers-300x168.png" alt="" title="worldofdevelopers" width="300" height="168" class="alignright size-medium wp-image-6159" /></a>Je suis passé aux Microsoft TechDays. Un très bel événement pour la communauté Microsoft. Ambiance sympa, environ 15 000 personnes, c&#8217;est une autre échelle par rapport à <a href="http://www.devoxx.fr/">Devoxx France</a>. En tant que développeur Java, cela fait du bien de voir d&#8217;autres technologies et d&#8217;autres passionnés. Forcément ceux qui me connaissent et que j&#8217;ai croisé m&#8217;ont demandé : mais que fais-tu ici ? Et bien je vais te dire : ça fait du bien. En écoutant une conférence sur l&#8217;ergonomie Web ou une présentation sur ASP.NET MVC 3.0 j&#8217;ai appris de nouvelles choses. Comprendre et écouter l&#8217;approche dans le monde Microsoft permet de mieux se connaître, et de se rendre compte que finalement, nous sommes tous des développeurs.</p>
<p>L&#8217;abruti de base qui raille Microsoft, alors qu&#8217;il a un iphone (propriétaire) et que son boulot consiste à pisser du Java pour Weblogic (propriétaire) est bien mort. La communauté Java est parfois mal perçue, assez centrée sur son nombril, mais c&#8217;est de moins en moins vrai. Nous avons changé en 5 ans. Le rachat de SUN Microsystems par Oracle nous force à regarder vers l&#8217;extérieur, et à arrêter de penser que &laquo;&nbsp;<em>l&#8217;autre, c&#8217;est le méchant</em>&laquo;&nbsp;. </p>
<p>Le plus important finalement, c&#8217;est le métier de développeur. Que tu fasses du C# ou du Java, tu fais ce beau métier de développeur. Et pour cela, je te respecte. </p>
<p>Sur scène, mardi matin j&#8217;ai noté que les présentateurs portaient un teeshirt sympa, sur lequel on pouvait voir &laquo;&nbsp;Fier d&#8217;être développeur&nbsp;&raquo;. Intéressé par le sujet, j&#8217;ai découvert le site <a href="http://fierdetredeveloppeur.org/">Fier d&#8217;être développeur</a>.</p>
<blockquote><p>Ce mouvement, matérialisé par une association et un site web, avec logo et slogan, aura pour objectif de<br />
- Promouvoir le métier de développeur de logiciels,<br />
- Expliquer la valeur de ce métier alliant rigueur scientifique et force de créativité,<br />
- Communiquer la noblesse du choix de faire carrière en tant que développeur,<br />
- Valoriser l’impact de l’expérience sur l’équation économique des développements logiciels,<br />
- Encourager le respect mutuel entre les développeurs indépendamment des plates-formes et technologies utilisées.
</p></blockquote>
<p>Cette initiative a été lancée par Daniel Cohen-Zardi, PDG de SoftFluent en association avec Eric Vernie et Eric Mittelette de Microsoft France. Je ne connais pas la société ni les auteurs, mais je trouve l&#8217;idée sympa.</p>
<p>Je m&#8217;engage aussi dans cette volonté de défendre le métier de développeur et la place du développeur en France. C&#8217;est un combat que je défends depuis de nombreuses années sur le blog, à travers des articles comme &laquo;&nbsp;<a href="http://www.touilleur-express.fr/2009/07/27/senior/">Développeur après 31 ans ? Ridé et chauve tu seras</a>&laquo;&nbsp;.</p>
<p>Aujourd&#8217;hui j&#8217;ai 36 ans. J&#8217;ai été chef de projet, mais j&#8217;aime coder. J&#8217;aime développer des applications. Je gagne très bien ma vie, car je bosse en permanence pour ma passion. Si je m&#8217;étais orienté vers la direction &laquo;&nbsp;Chef de Projet&nbsp;&raquo;, je pense que je me serai rapidement ennuyé. </p>
<p>J&#8217;encourage par contre chacun à prendre des responsabilités de manager. Gérer un projet c&#8217;est gérer des personnes. Or lorsqu&#8217;à 23 ans, en 5ème année d&#8217;école d&#8217;informatique, on souhaite vous fait croire que vous serez &laquo;&nbsp;<em>Chef de projet</em>&nbsp;&raquo; en sortant, je crois que l&#8217;on vous ment. Cela rassure votre maman et permet de prélever des frais de scolarité plus intéressant.</p>
<p>Si vous devenez chef de projet pour gérer un projet informatique, vous allez vous rendre compte que c&#8217;est assez compliqué. L&#8217;expérience dit que, pour gérer des informaticiens, il est plus facile d&#8217;avoir été développeur, ou d&#8217;être encore développeur. Je m&#8217;excuse auprès des bons managers qui lisent et qui n&#8217;ont jamais tapé une ligne de code. Cela existe. Mais c&#8217;est exceptionnel. </p>
<p>Gérer un projet, c&#8217;est en fait gérer l&#8217;équipe qui réalise ce projet. Cela demande de l&#8217;expérience pour comprendre et sentir les forces en présence entre le client et l&#8217;équipe. Il faut de l&#8217;empathie pour comprendre pourquoi parfois, il est possible de coder en 15 minutes quelque chose d&#8217;exceptionnel. </p>
<p>Gérer un projet, c&#8217;est gérer un budget et du temps. Or le développeur en informatique n&#8217;a rien à voir avec l&#8217;ouvrier sur une chaine de montage. A quoi bon lui mettre sous le nez un plan en &laquo;&nbsp;jour/homme&nbsp;&raquo; calculé au doigt mouillé ? Nous devons donner des estimations de temps pour des choses que nous n&#8217;avons jamais fait, alors même que le client n&#8217;est pas certain de ce qu&#8217;il veut, et qu&#8217;en plus il n&#8217;arrive pas à se décider&#8230; Ajoutez à cela que nous utilisons des technologies jeunes, car ce qui est vieux n&#8217;est pas forcément moins cher ou plus utile. Oui, il faut prendre des risques dans ce métier. Il faut surtout apprendre à s&#8217;adapter. </p>
<p>Bref vous l&#8217;aurez compris, moi j&#8217;ai la vision d&#8217;un métier où certains développeurs (pas tous) peuvent continuer à coder. Ils seront capable de gérer d&#8217;autres développeurs, et seront payés à leur juste valeur. Pourquoi un informaticien compétent ne pourrait-il pas gagner 100 000 EUR par an ? Je rêve du jour où un patron du CAC40 comprendra que 3 développeurs peuvent lui construire un super logiciel, qui lui permettra de garder son poste de PDG, en gagnant des millions d&#8217;euros (et donc en créant des emplois).  </p>
<p>Les derniers milliardaires aux USA comme le créateur de Facebook sont des informaticiens. Prend ça dans les dents : Steve Jobs était milliardaire avant 30 ans. Bill Gates aussi. Mark Zuckerberg aussi. Les 2 derniers sont des développeurs. Lorsque l&#8217;on parle d&#8217;eux, on n&#8217;ajoute pas &laquo;&nbsp;<em>Nicolas, X-Mines</em>&nbsp;&raquo; ou &laquo;&nbsp;<em>Jacques, HEC-ESCP, Allemand première langue, a fait son CP à l&#8217;école des petits Chardons</em>&nbsp;&raquo;</p>
<p>En informatique ce n&#8217;est pas le diplôme qui compte. C&#8217;est ce que tu fais, ce que tu créés. Et si tu n&#8217;es pas fier d&#8217;être développeur, alors passe la main. Car il y a des gens qui aiment ce métier. </p>
<p>Moi j&#8217;en fais partie, et je suis fier d&#8217;être développeur.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/02/08/fier-detre-developpeur/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>MongoDB : retour sur expérience chez Fotopedia</title>
		<link>http://www.touilleur-express.fr/2012/02/06/mongodb-retour-sur-experience-chez-fotopedia/</link>
		<comments>http://www.touilleur-express.fr/2012/02/06/mongodb-retour-sur-experience-chez-fotopedia/#comments</comments>
		<pubDate>Mon, 06 Feb 2012 21:02:04 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Perso]]></category>
		<category><![CDATA[mongodb]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6113</guid>
		<description><![CDATA[Rappelons la définition d&#8217;une présentation excellente : session où tu passes une heure à écouter et à recevoir l&#8217;enthousiasme des speakers, où tu sors de la salle en te disant : &#171;&#160;Oh my god&#160;&#187;&#8230; Et là, c&#8217;était vraiment une bonne session comme j&#8217;en vois pas souvent. 
Fotopedia en quelques mots
Pierre Baillet (@octplane sur Twitter) est DevOps chez Fotopedia. Dev ET Ops. Un gars qui code ET qui pilote une plateforme qui fait plusieurs milliers de visites par jour. 
Fotopedia est un site créé par Jean-Marie Hullot, un ancien d&#8217;Apple. Et ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/tag_fotopedia.png"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/tag_fotopedia.png" alt="" title="tag_fotopedia" width="150" height="150" class="alignleft size-full wp-image-6144" /></a>Rappelons la définition d&#8217;une présentation excellente : session où tu passes une heure à écouter et à recevoir l&#8217;enthousiasme des speakers, où tu sors de la salle en te disant : &laquo;&nbsp;Oh my god&nbsp;&raquo;&#8230; Et là, c&#8217;était vraiment une bonne session comme j&#8217;en vois pas souvent. </p>
<p><strong>Fotopedia en quelques mots</strong><br />
Pierre Baillet (<a href="https://twitter.com/octplane">@octplane</a> sur Twitter) est DevOps chez Fotopedia. Dev ET Ops. Un gars qui code ET qui pilote une plateforme qui fait plusieurs milliers de visites par jour. </p>
<p><a href="http://www.fotopedia.com/">Fotopedia</a> est un site créé par Jean-Marie Hullot, un ancien d&#8217;Apple. Et pas n&#8217;importe lequel ancien employé d&#8217;Apple. Passé par <a href="http://fr.wikipedia.org/wiki/NeXTSTEP">NeXSTEP</a>, vous avez peut-être lu le nom de Jean-Marie Hullot dans la bio de Steve Jobs. Avec une équipe, <a href="http://fr.wikipedia.org/wiki/Jean-Marie_Hullot">il a travaillé sur le projet de l&#8217;iPhone</a> en secret à Paris.</p>
<p>Fotopedia est un site et un service qui permet de créer une encyclopédie de photos en haute qualité, sur le modèle de Wikipedia. Vous allez à un endroit, vous prenez des photos. Les photos sont sur Fotopedia. C&#8217;est simple et c&#8217;est génial. Le service est proposé sur iPad, sur les tablettes Androids, sous la forme d&#8217;un client lourd et enfin d&#8217;un site Internet. </p>
<p>Pierre explique que le site tourne 24h/24, sans aucun temps d&#8217;arrêt. MongoDB est une solution qui remplace petit à petit MySQL, car c&#8217;est tous simplement un système génial. Il permet de ne travailler que sur de petits exports de données, de faire des réplications, de travailler de manière asynchrone&#8230; Bref il a aussi révolutionné les méthodes de développements. </p>
<p>Deuxième contrainte : la scalabilité. Comment s&#8217;assurer que la solution pourra continuer à grandir ? Comment gérer le volume de données dans les mois, ou les années qui viennent ? Autant de challenges techniques à relever.</p>
<p>Fotopedia a été créé en 2006, avec aujourd&#8217;hui un bureau dans la Valley et un centre de R&#038;D à Paris. Il y a 20 personnes, quelques anciens d&#8217;Apple, mais surtout des développeurs passionnés.<br />
Fotopedia c&#8217;est un mélange de FlickR et de Wikipedia. C&#8217;est aussi une volonté humaniste, en créant des catalogues de photos libre de droits, pour l&#8217;humanité. L&#8217;Unesco et les équipes de Fotopedia ont développé &laquo;&nbsp;<a href="http://www.fotopedia.com/ios/heritage">Fotopedia Heritage</a>&laquo;&nbsp;, une application avec 25 000 photos et 4 000 POI, téléchargeable gratuitement. En 2011, l&#8217;équipe a remporté aussi un <a href="http://crunchies2011.techcrunch.com/vote/">Crunchies Award</a> pour la meilleur application sur Tablet. </p>
<p>Fotopedia c&#8217;est 150 millions de photos vues par mois sur le site et via les différentes applications. Il y a une base MySQL, qui est voie de disparition, mais surtout 4 serveurs indépendants avec à chaque fois 4 bases MongoDB. Tout est hébergé <a href="http://aws.amazon.com/fr/">chez Amazon Web Service</a>. Cela représente environ 500 Gb de données structurées, pour ce qui est de la partie MongoDB uniquement.</p>
<p><strong>Un site qui ne peut pas s&#8217;arrêter</strong><br />
Le site tourne en permanence, avec donc une particularité intéressante : on ne peut pas l&#8217;arrêter. La nuit ne peut qu&#8217;empirer mille fois les choses comme dit Roméo à Juliette. Et c&#8217;est donc souvent la nuit, que les équipes en France doivent gérer les quelques rares petits soucis. A chaque seconde, il y a entre 400 et 1000 connexions, selon les heures de la journée. Il y a eu par exemple plus de 100 000 téléchargements par jour des applications fotopedia les jours de pointes, autant dire que cela tourne plutôt bien.</p>
<p>Pierre explique qu&#8217;il y a d&#8217;une part le site web, qui peut avoir quelques instants d&#8217;indisponibilités, mais surtout 7 applications différentes sur iOS. Et les gens payent pour ces applications. Autant dire qu&#8217;elles doivent marcher, qu&#8217;il n&#8217;est pas possible qu&#8217;elles ne fonctionnent pas car un abruti d&#8217;admin système a confondu une prise électrique dans un data-center à Evry. </p>
<p>Lorsqu&#8217;il y a cependant des problèmes techniques, toute l&#8217;architecture du site est pensée pour que le service se dégrade progressivement. Un paquet de <a href="https://www.varnish-cache.org/">Varnish</a> en frontal permettent de donner quelques dizaines de minutes avant que le site soit vraiment down. Le simple fait d&#8217;arrêter le système une dizaine de secondes génère une centaine d&#8217;erreurs. Bref, pas un truc de mickey.</p>
<p><strong>Une mise en production chaque semaine, plusieurs fixes par jour</strong><br />
La mise en production est intéressante. Un DSI de base ne pourrait pas comprendre. Englué dans sa méthode à Gilles(!!) de mise en production, il lui faut souvent 2 semaines pour mettre en production sa bouse. Alors qu&#8217;ici, des mises en production, il y en a toutes les semaines. </p>
<p>Les équipes utilisent Git, avec plusieurs branches. Chaque mercredi, la branche de dev est poussée en production. Il y a ensuite 3 hotfixes par jour. Parfois 0, parfois 10 hotfixes. Tout le monde a le droit de pousser en production. Si tu casses quelque chose, tu répares. Si tu ne sais pas réparer, tu te casses. Logique. </p>
<p>Les migrations de données doivent donc être transparents. Pierre reviendra plus tard sur l&#8217;utilisation et les avantages de MongoDB, qui me fait de plus en plus penser à la différence d&#8217;approche entre SVN et Git. Une fois que tu as compris que Git te permet de travailler de manière asynchrone à ton rythme, tu as compris Git. Et bien MongoDB permet aussi de ne travailler que sur des petits subsets de ses données, de faire des dumps sur S3 et de remonter en local les données. More on this later, stay tuned. </p>
<p>Côté infrastructure et surtout framework Web, c&#8217;est du Ruby On Rails. Mais bon, de la bouche de Pierre, ça rame. Alors pour que le truc tienne la charge, il faut lui coller un certain nombre de machins comme <a href="http://haproxy.1wt.eu/">HAProxy</a>, <a href="http://nginx.org/en/download.html">NGinx</a>, <a href="http://unicorn.bogomips.org/">Unicorn</a> Rack HTTP, <a href="https://github.com/iGoDigital-LLC/resque-mongo#readme">mongo-resque</a> et d&#8217;autres noms de médicaments non remboursés par la Sécurité Sociale&#8230; </p>
<p>Côté langages, il y a du Java, du Scala, mais surtout du Ruby. L&#8217;équipe travaille sur d&#8217;autres solutions, pour avoir de meilleurs performances. Scala est à l&#8217;étude en ce moment, mais pour la partie backend. Ruby on Rails reste et restera le framework Web pour l&#8217;instant, car il est bien maîtrisé par les équipes. Les premières versions du site utilisaient MySQL, avant que MongoDB ne soit ajouté. Il reste encore aujourd&#8217;hui 13 tables. L&#8217;objectif est de virer MySQL et de ne garder que MongoDB. </p>
<p><strong>2 ans d&#8217;expérience opérationnelles sur MongoDB</strong><br />
L&#8217;équipe est plutôt rodée à MongoDB, puisqu&#8217;elle l&#8217;utilise depuis septembre 2009 en production. Plus de 70% des données de Fotopedia sont stockées sur MongoDB.<br />
Pour le monitoring en production, Pierre cite <a href="http://munin-monitoring.org/">Munin</a> et surtout <a href="http://www.nagios.org/">Nagios</a>. MongoDB est utilisé aussi pour collecter les logs de l&#8217;application. En frontal, ils utilisent <a href="https://github.com/facebook/scribe#readme">Scribe</a>, une solution de Facebook, qui permet de recevoir en temps réel les logs applicatifs, et de les stocker. Scribe est codé en C++ avec des I/O non-bloquantes.<br />
MongoDB est aussi utilisé pour stocker toutes les erreurs, les transactions lentes, bref tout ce qui va mal. Le log d&#8217;erreur est limité en taille. 1Go de messages d&#8217;erreur, c&#8217;est une heure sur le site&#8230; Il n&#8217;est pas possible de tout loguer. </p>
<p>L&#8217;hébergement est à 100% sur AWS. Pierre explique que les machines ne sont pas très fiables. De temps en temps, il faut déplacer rapidement une partie de l&#8217;application car Amazon signale un risque d&#8217;incident. Il faut alors utiliser des scripts pour recréer une instance en quelques minutes, avant le crash. Grâce à des systèmes de surveillance et de redondances, ce type d&#8217;opération arrive cependant rarement. </p>
<p>Côté espace disque, ils sont abondants. Les disques montés sur Amazon sont assez lents. Pour certains traitements non critiques, où vous pouvez accepter de perdre des données de travail, les disques locaux sont plus performants. Les disques locaux sont plus pratique que les EBS (Elastic Bloc Storage).<br />
Pour la base MySQL, ils utilisent AWS RDS. Pas cher et facile à configurer. </p>
<p>Comme le business n&#8217;est pas critique (vous n&#8217;essayez pas de faire un achat), il est possible de perdre un client en cas de plantage. Vous allez vous retrouvez avec une page d&#8217;erreur, vous rechargerez votre page, et vous pourrez continuer votre navigation. Tout le site est pensé en asynchrone, sans session. </p>
<p><strong>Utilisation quotidienne de MongoDB</strong><br />
Tout d&#8217;abord c&#8217;est un excellent outil pour les développeurs. Vous pouvez configurer un serveur MongoDB en local avec une partie des données, commencer à travailler, tout est simple à configurer. En tant que développeur, Pierre explique que lorsque vous passez à MongoDB, votre modèle change beaucoup. Il observe que souvent, on remplace 2 ou 3 tables de base de données relationnelles, par un seul catalogue MongoDB. Tout est vraiment orienté développeur. Le code est plus facile à lire, et finalement, l&#8217;application devient plus robuste. En effet, comme il n&#8217;y a pas la notion de relation ou de jointure, finalement votre application est codée/pensée pour gérer des objets détachés, sans relation. Tout le code devient défensif.<br />
Vous avez une entité Client avec la notion de Pays&#8230; disons que vous n&#8217;exportez qu&#8217;une partie de la base Client&#8230; et bien imaginez que votre code va traiter le fait que le Pays n&#8217;est pas présent. Peut-être qu&#8217;un simple champ blanc sera affiché sur la page web&#8230; ou que votre application plantera&#8230; </p>
<p>Ecrire et travailler avec mongoDB c&#8217;est donc moins de tables, et moins de requêtes. Le développeur remonte en une seule fois ce dont il a besoin. Pas de problèmes de jointures ou de requêtes en cascade. </p>
<p>Un autre point intéressant, c&#8217;est l&#8217;évolution du schéma. Si vous avez une base MySQL et que vous devez passer un script ALTER, croyez Pierre sur parole : vous allez boire des cafés. De leur expérience, cela ne marche pas correctement avec MySQL. Il faut arrêter le service, croiser les doigts et attendre que le script passe&#8230; ou pas. Parfois même, cela donne des trucs assez moches, surtout si vous utilisez un ORM. Qui n&#8217;a jamais réutilisé un champ de la base car il ne pouvait pas toucher au schéma ? </p>
<p>Avec MongoDB, vous avez la liberté de changer le schéma. Après vous avez un cerveau, et vous n&#8217;allez pas faire n&#8217;importe quoi toutes les 5 minutes. Sinon vous avez un autre problème. Vous êtes intelligent, vous allez ajouter ou changer quelques champs sur votre document. Pas plus. Il faut donc être organisé et réfléchir à son domaine. Mais comme vous êtes un dieu de l&#8217;approche Domain Driven Design, pas de soucis pour vous.</p>
<p>Pour que cela fonctionne correctement, vous comprenez bien qu&#8217;il faut avoir une architecture particulièrement bien pensée. La couche de présentation est programmée pour dégrader et gérer l&#8217;absence de valeurs pour un champ. Ceci permet de continuer un service dégradé pour des parties non-critiques de l&#8217;application. Cela facilite aussi les tests et le développement en local. Et bien oui : votre application n&#8217;a pas besoin d&#8217;un état et d&#8217;un modèle complet pour fonctionner. </p>
<p>Lorsque les données doivent être migrées, comme lorsque vous décidez de réorganiser vos champs, il est assez facile de faire des batchs en Ruby sur MongoDB. Cela ne pénalise pas trop les performances. Vous laissez bien entendu le serveur tourner. Un concept simple qui rend inutile les stratégies de migration de cow-boy d&#8217;un DBA classique. </p>
<p>Il faut que le code soit prévu pour que la gestion des clés étrangères soit correctement pensé. Typiquement tout le code est défensif. Un développeur peut alors travailler sur un petit subset des données. De toutes les façons il est impossible de monter toutes les données sur le poste de travail d&#8217;un développeur. Lorsqu&#8217;il faut passer sur les données pour travailler, il faut que cela soit efficace et rapide. </p>
<p>Sur MySQL lorsque tu créés un index cela bloque la table. Sur MongoDB, cela ralentit mais on peut continuer à l&#8217;interroger en tâche de fond.</p>
<p><strong>Faites-vous des sauvegardes sur disquettes ?</strong><br />
Du côté sauvegarde et restauration : MongoDB est livré avec des outils pour backuper facilement à la collection prês, plutôt que de travailler sur toute la base, qui n&#8217;est pas intéressant. Stockage sur S3, on peut ensuite remonter localement une partie des collections. MySQL avec ses FK c&#8217;est quasi impossible. Avec MongoDB on peut remonter une partie de la base, ce qui est très pratique et très simple.</p>
<p>Cela permet au développeur de travailler facilement sur des copies de la production.</p>
<p><strong>Du code, du code et du code</strong><br />
MongoDB a un noyau assez petit. Peut-être 150 000 lignes de C++. Il se compile sans soucis sur des distributions modernes de Linux. 10gen fait des packages par distribution. Il existe des drivers pour la plupart des langages. Les drivers sont maintenus par 10gen.</p>
<p>Du côté Java, le driver n&#8217;est pas trop mal codé. Mais ses réglages par défaut ne sont pas optimum pour de la production. Cependant il est facile de trouver des ressources sur Internet, ce n&#8217;est pas du tout compliqué.</p>
<p>Du côté de Ruby, le driver de base avait un énorme trou de sécurité. Lorsqu&#8217;un client envoyait une requête à un serveur MongoDB, le driver ne vérifiait pas dans les premières versions le corelationID, le numéro de séquence. Et cela donnait des bugs en production assez difficile à identifier. Le souci a vite été réglé, et vu le nombre de projets qui utilisent MongoDB, tout ce qui est sécurité est plutôt bien géré.</p>
<p><strong>Quelques mots sur la configuration en Cluster</strong><br />
L&#8217;infrastructure de fotopedia est intéressante. 4 Machines avec à chaque fois, 4 serveurs MongoDB sur chaque machine. Si j&#8217;ai bien compris, une machine est primaire, les 3 autres sont secondaires. Pour que MongoDB puisse fonctionner, il faut au moins 3 serveurs (pas forcément 3 machines). Chaque machine a 15 Go de mémoire, bref de  quoi tenir la charge quotidienne. Si un serveur secondaire est trop en retard par rapport au serveur primaire, il s&#8217;arrête, se vide, et se resynchronise ensuite avec le primaire. Tout est automatique, c&#8217;est le principe même de MongoDB. </p>
<p>La configuration d&#8217;un cluster est vraiment facile avec MongoDB. Vous pouvez ajouter/retirer à la volée des serveurs, vous pouvez donner des poids, bref faire un vrai travail d&#8217;architecte. Si vous voulez avoir un backup, vous pouvez avoir un serveur qui reste tout le temps secondaire. Par exemple une machine avec des disques en Raid10, qui devient, de fait, un serveur de secours.</p>
<p>Côté client, le driver est conscient de la topologie du réseau, ce qui permet de donner de bonnes performances. En terme de haute-dispo, un primaire peut laisser la main à un autre serveur primaire. Il est important de comprendre que MongoDB est défensif. Si un noeud a 50%-50% (2 serveurs) il n&#8217;y a pas d&#8217;élections, les 2 machines passent en secondaire. Lorsqu&#8217;un serveur est en secondaire, il continue à servir les données. Mais il n&#8217;accepte pas les écritures. Cela pour éviter d&#8217;avoir 2 Masters, et donc 2 écritures de l&#8217;application sur 2 machines. C&#8217;est pensé si 2 sites perdent la connexion, et ne peuvent plus se voir. Il faut alors une troisième machine pour pouvoir effectuer une élection. Probleme du <a href="http://techthoughts.typepad.com/managing_computers/2007/10/split-brain-quo.html">Split-brain</a>.</p>
<p><strong>Les compromis</strong><br />
Il faut entre 20 et 25 secondes pour ré-élire un master. Pendant ce temps-là, oui il y a un risque de plantage, mais finalement uniquement pour les clients Webs qui inter-agissent avec le site. Pour relativier, on parle d&#8217;un site d&#8217;images comme dit Pierre. Pas d&#8217;un site qui doit sauver le monde ou gérer des essais nucléaires en Iran. </p>
<p><strong>En conclusion</strong><br />
MongoDB est un outil bien adapté aux équipes DevOPS. C&#8217;est un outil pour les développeurs qui permet de faire des choix plus tard, bien plus tard qu&#8217;avec une base relationnelle. Comprenez bien une chose : l&#8217;outil permet de ne pas décider au jour 1 de l&#8217;ensemble de votre modèle, et a été pensé pour s&#8217;adapter. Forcément, vous n&#8217;avez pas de modèles relationnels contraints par la base. L&#8217;application se charge de la cohérence et des relations entre les entités. Pierre rappelle que le code est plus simple, et que souvent vous retirez des tables de bases de données lorsque vous passez vers MongoDB. </p>
<p>Pour ma part, j&#8217;espère que vous pourrez voir cette présentation à <a href="http://www.devoxx.fr">Devoxx France</a> en avril prochain. Les équipes de MongoDB vont aussi soumettre des sujets pour Devoxx France, en Anglais.</p>
<p>Enfin pour terminer, <strong>un grand merci à Xebia France</strong> pour cette superbe journée ! </p>
<p><strong>Quelques contre-arguments</strong><br />
Pour contre-balancer peut-être la présentation, nous pouvons relativiser en disant que Facebook tourne plutôt bien en production avec MySQL[1]. FourSquare a eu <a href="http://blog.foursquare.com/2010/10/05/so-that-was-a-bummer/">un souci avec MongoDB en 2010</a>, comme aussi sans doute d&#8217;autres entreprises en ont eu avec MySQL, avec Oracle, avec une multi-prise dans un data-center à Evry&#8230;<br />
On trouvera facilement <a href="http://leifw.wickland.net/2011/04/weird-buggy-and-disappointing-behavior.html">un article d&#8217;un gars déçu</a> par MongoDB ou surtout <a href="http://pastebin.com/raw.php?i=FD3xe6Jt">le fameux post</a> sur Pastebin.com dont la véracité a été mise en doute. Vous trouverez d&#8217;ailleurs plus d&#8217;informations et les réponses de 10gen sur le poste original sur <a href="http://news.ycombinator.com/item?id=3202081">HackerNews.</a><br />
Bref ne faites pas comme moi, ne soyez pas trop enthousiaste, testez, testez et re-testez. Mais ce retour d&#8217;expérience était vraiment riche et intéressant. </p>
<p>[1] <a href="http://www.datacenterknowledge.com/archives/2008/04/23/facebook-now-running-10000-web-servers/">http://www.datacenterknowledge.com/archives/2008/04/23/facebook-now-running-10000-web-servers/</a></p>
<p>Les slides de la présentation :</p>
<div style="width:425px" id="__ss_11398913"> <strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/octplane/mongodb-vs-mysql-a-devops-point-of-view" title="MongoDB vs Mysql. A devops point of view" target="_blank">MongoDB vs Mysql. A devops point of view</a></strong> <iframe src="http://www.slideshare.net/slideshow/embed_code/11398913" width="425" height="355" frameborder="0" marginwidth="0" marginheight="0" scrolling="no"></iframe>
<div style="padding:5px 0 12px"> View more <a href="http://www.slideshare.net/" target="_blank">presentations</a> from <a href="http://www.slideshare.net/octplane" target="_blank">Pierre Baillet</a> </div>
</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/02/06/mongodb-retour-sur-experience-chez-fotopedia/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>MongoDB : journée chez Xebia France</title>
		<link>http://www.touilleur-express.fr/2012/02/05/mongodb-journee-chez-xebia-france/</link>
		<comments>http://www.touilleur-express.fr/2012/02/05/mongodb-journee-chez-xebia-france/#comments</comments>
		<pubDate>Sun, 05 Feb 2012 21:27:09 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[xebia]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6110</guid>
		<description><![CDATA[
Jeudi 2 février 2012, Xebia organisait une journée MongoDB dans ses locaux à Paris, avec les équipes de la société 10gen. 10Gen est la société qui édite le logiciel MongoDB. Dwight Merriman, CEO de 10gen, basé à New-York, ouvre la journée. Il a créé la société 10gen il y a 4 ans. Lui, c&#8217;est l&#8217;ancien CTO de Doubleclick, une régie publicitaire rachetée en 2007 par Google pour 3.1 milliards de dollars. La motivation derrière 10gen est de créer des solutions et assurer du support sur MongoDB. 
Dwight explique qu&#8217;un des ...]]></description>
			<content:encoded><![CDATA[<p><img src="/wp-content/uploads/2012/02/tag_mongodb.png" alt="MongoDB" title="Présentation MongoDB"/><br />
<a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/mongodb_doug.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/mongodb_doug-225x300.jpg" alt="" title="mongodb_doug" width="225" height="300" class="alignright size-medium wp-image-6129" /></a>Jeudi 2 février 2012, Xebia organisait une journée MongoDB dans ses locaux à Paris, avec les équipes de la société <a href="http://www.10gen.com">10gen</a>. 10Gen est la société qui édite le logiciel MongoDB. <a href="http://en.wikipedia.org/wiki/Dwight_Merriman">Dwight Merriman</a>, CEO de 10gen, basé à New-York, ouvre la journée. Il a créé la société 10gen il y a 4 ans. Lui, c&#8217;est l&#8217;ancien CTO de <a href="http://en.wikipedia.org/wiki/DoubleClick">Doubleclick</a>, une régie publicitaire rachetée en 2007 par Google pour 3.1 milliards de dollars. La motivation derrière 10gen est de créer des solutions et assurer du support sur MongoDB. </p>
<p>Dwight explique qu&#8217;un des principes de base qu&#8217;il a appris au fil des années, c&#8217;est l&#8217;importance de répliquer les données. Pour réussir, il faut être capable de construire un site web capable de ne pas rendre captif toutes les données qu&#8217;il va générer. J&#8217;aime beaucoup cette idée. Voyez votre projet comme une source de données. Essayez de ne pas prendre une solution trop captive et trop contraignante, car la clé de votre succès sera les services que vous pourrez construire sur vos données. </p>
<p>Pour s&#8217;assurer que les données sont bien sauvegardéss, vous pouvez les répliquer sur différents serveurs. Vous pouvez mettre en place une solution curative avec des backups de votre base. Ou sinon, vous pouvez aussi prévoir une solution préventive au niveau de votre architecture. </p>
<p>MongoDB c&#8217;est cela : une base de données type No-SQL orientée document, sans schéma, capable de fonctionner sur un énorme volume de donnée. C&#8217;est un serveur qui se configure en cluster en quelques minutes. Bref c&#8217;est un système qui coûte moins cher qu&#8217;une solution Oracle, et qui permet de répondre à pas mal de besoins. Mais pas à tous.</p>
<p>Aujourd&#8217;hui le premier souci est la capacité à monter en charge et à faire tourner sur un même CPU, sur un même espace mémoire, une quantité d&#8217;informations plus importante. Traiter en parallèle les données. Sur les bases de données relationnelles, il est acquis aujourd&#8217;hui que certaines opérations ne sont pas possibles lorsque le volume et le nombre de transaction à traiter sont importants. Les jointures, la consolidation des données, il s&#8217;avère que le prix de tout cela explose au fur et à mesure. Dwight dit que plutôt de parler de &laquo;&nbsp;noSQL&nbsp;&raquo; il préfère dire &laquo;&nbsp;noRelationnal&nbsp;&raquo;. </p>
<p>MongoDB est dans la famille des bases de données NoSQL. Jean-Laurent de Morlhon demande pourquoi, alors que l&#8217;approche non-relationnelle existe depuis les années 80, pourquoi cette approche est populaire aujourd&#8217;hui ? Tout d&#8217;abord Dwight explique qu&#8217;aujourd&#8217;hui, les volumes sont bien plus importants qu&#8217;il y a quelques années. L&#8217;approche non-relationnel est une solution logicielle, alors qu&#8217;il y a 10 ans nous étions dans la solution matérielle. Il y a 10 ans on achetait une machine plus grande. Aujourd&#8217;hui on travaille sur le logiciel et on arrête d&#8217;empiler la puissance mémoire/CPU. </p>
<p>Dwight explique aussi qu&#8217;il y a quelques années, on créait son modèle relationnel pour le minimum de système, en ne pensant qu&#8217;à l&#8217;application que l&#8217;on réalisait à ce moment là. Le souci de cette approche c&#8217;est lorsque le métier évolue. Comment garder à peu de frais un schéma ? Comment éviter des développements longs et couteux ? Aujourd&#8217;hui, une application et son modèle de donnée doit être pensé pour plusieurs années. Or le stockage devient un problème. Comment stocker et retrouver rapidement ces énormes volumes ? </p>
<p>Je trouve cette idée intéressante. Imaginez vos données comme un immeuble, qui aura besoin d&#8217;un ravalement de facade. Plus sérieusement, imaginez l&#8217;état de vos données dans 5 ans&#8230; Imaginez la quantité et le coût d&#8217;exploitation&#8230;</p>
<p>Les concurrents de MongoDB ne bénéficient pas de la même couverture médiatique. <a href="http://cassandra.apache.org/">Apache Cassandra</a> est un excellent produit, arrivé finaliste lors du concours de l&#8217;USI 2011. Il existe d&#8217;autres solutions comme Redis ou CouchDB, des solutions dites &laquo;&nbsp;No-SQL&nbsp;&raquo;. Si vous voulez briller en ville : parlez d&#8217;Agilité, de Scrum et terminez par une petite saucée de CloudComputing, le tout avec du NoSQL. Les hommes vous trouveront intelligents et les femmes se jetteront sur vous. Ou inversement. Bref.</p>
<p>Dwight parle ensuite d&#8217;Oracle, qui se positionne aussi sur ce secteur. Oracle a lancé un système clé/valeur, construit sur le moteur open-source de Berkley. IBM aussi s&#8217;intéresse forcément à ce type de solution. Pourquoi ? Car ce sera le nouvel eldorado.</p>
<p>Dans une entreprise traditionnelle, on a souvent une base relationnelle (SGBDR) et une base décisionnelle (<a href="http://fr.wikipedia.org/wiki/Entrep%C3%B4t_de_donn%C3%A9es">data warehouse</a>). Chaque système a ses avantages et ses inconvénients. Une base relationnelle permet de garantir l&#8217;intégrité, de gérer les transactions, et de représenter les relations entre les entités du Domaine. Un système de Datawarehouse est pensé pour l&#8217;analyse et le reporting sur les données. Enfin Dwight expose que MongoDB se place comme étant un troisième type de base de données. MongoDB offre de l&#8217;agilité, une installation et une capacité à s&#8217;installer en cluster bien plus simple (et surtout vraiment moins cher) que les solutions classiques des éditeurs comme Oracle ou IBM. Donc on voit ici qu&#8217;une entreprise pourra avoir ces 3 logiciels, avec un usage différent à chaque fois.</p>
<p>Si par contre vous regardez le monde des Startups en ce moment, là c&#8217;est une toute autre histoire. Traditionnellement, le couple PHP+MySQL+Apache était utilisé pour construire un site Internet. Ruby on Rails est largement utilisé par les startups. Mais comme l&#8217;expliquerons les équipes de Fotopedia quelques heures plus tard : Rails n&#8217;est pas aussi performant en production que Java/Scala/.NET. Bref, peu importe, si on parlait plutôt de bases de données ?<br />
Et bien MongoDB est une compétence très demandée sur le marché, information que j&#8217;ai vérifié :</p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/mongodb_graph.png"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/mongodb_graph.png" alt="" title="mongodb_graph" width="540" height="300" class="alignnone size-full wp-image-6132" /></a><br />
<em>Source : <a href="http://data.story.lu/2011/09/29/facts-and-stats-mongodb-trend">http://data.story.lu/2011/09/29/facts-and-stats-mongodb-trend</a></em></p>
<p>Quelques questions de la salle ensuite parlent des relations entre les développeurs et les DBA. Quelqu&#8217;un demande à Dwight son opinion sur le métier de DBA par rapport à MongoDB. Il explique en forçant un peu le trait que tout d&#8217;abord, une base de donnée classique, c&#8217;est le royaume du DBA. Une base MongoDB, c&#8217;est plutôt le royaume des développeurs. En quelques sortes, le développeur prend le pouvoir sur le modèle. Dwight explique qu&#8217;il y a des DBAs pour les bases NoSQL, des personnes qui sont souvent aussi des développeurs. L&#8217;absence de schéma, sa flexibilité, le fait que ce modèle mappe directement le code, fait que forcément le développeur est le premier évangéliste de MongoDB.</p>
<p>Une autre question porte sur le nombre de clients qui utilisent MongoDB aujourd&#8217;hui en production. Personnellement lorsque j&#8217;entends ce type de question&#8230; ça me fatigue. Il n&#8217;y a que les Français pour se dire :<br />
<em>-&nbsp;&raquo;Ah moi je prends une techno QUE si c&#8217;est utilisé sur de VRAIS SITES ou sur des VRAIS PROJETS.</em></p>
<p>Pour la société 10gen, aujourd&#8217;hui Dwight explique qu&#8217;ils ont 400 clients. Il y a bien entendu bien plus de sociétés qui utilisent MongoDB. Dans le monde des startups, 90% des projets qu&#8217;il a vu font le choix de l&#8217;approche NoSQL, donc souvent MongoDB. Pourquoi ? Car il existe de nombreux drivers pour tous les langages.</p>
<p>Il résume cela avec une phrase en souriant : </p>
<blockquote><p>It&#8217;s happening.</p></blockquote>
<p>Une question ensuite porte sur Oracle, afin de connaître son opinion. Il voit des entreprises qui ajoutent MongoDB, tout en gardant leur base Oracle. Par ailleurs, Oracle travaille sur des solutions de type MySQL. Et ce sera un compétiteur pour 10gen très important. Il pense que si Oracle venait à ignorer l&#8217;approche NoSQL, alors ils perdront des parts de marché. </p>
<p>Pour terminer, nous avons eu aussi une présentation très détaillé de l&#8217;importance du schéma sur les performances. Le CEO de MongoDB passe 10 bonnes minutes à nous expliquer le problème de chargement de blocs non-contigus, spécialement lorsque les données recherchées ne sont pas dans un index. C&#8217;est impossible pour moi à retranscrire ici. </p>
<p>Mais au final, retenez que le CEO de MongoDB est un Geek, un gars qui assure, et qui peut vous parler de swap et de disques SSD dans une présentation. </p>
<p>Et moi, ça m&#8217;a donné envie d&#8217;essayer <a href="http://www.mongodb.org/" target="_blank">MongoDB</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/02/05/mongodb-journee-chez-xebia-france/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Code Story : demie-finale chez Xebia</title>
		<link>http://www.touilleur-express.fr/2012/02/04/code-story-demie-finale-chez-xebia/</link>
		<comments>http://www.touilleur-express.fr/2012/02/04/code-story-demie-finale-chez-xebia/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 12:04:31 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6106</guid>
		<description><![CDATA[Le mercredi 1er février, avait lieu la demie-finale de Code Story chez Xebia. La finale est prévue le 14 février au Paris JUG. 28 personnes en tout, pour concourir pendant 2 heures sur un exercice de programmation bien sympathique, préparé par David et Jean-Laurent. 
Les organisateurs ouvrent la soirée par un petit mot, sur les sélections, et sur l&#8217;objectif de la soirée.

Chacun s&#8217;est préparé avec son binôme. Clavier externe, 2eme souris, un ou deux ordinateurs, tout est très sérieux. Des équipes venues de l&#8217;est de la France, du Luxembourg et ...]]></description>
			<content:encoded><![CDATA[<p>Le mercredi 1er février, avait lieu la demie-finale de <a href="http://www.code-story.net">Code Story</a> chez <a href="http://blog.xebia.fr">Xebia</a>. La finale est prévue le 14 février <a href="http://www.parisjug.org/">au Paris JUG</a>. 28 personnes en tout, pour concourir pendant 2 heures sur un exercice de programmation bien sympathique, préparé par David et Jean-Laurent. </p>
<p>Les organisateurs ouvrent la soirée par un petit mot, sur les sélections, et sur l&#8217;objectif de la soirée.<br />
<img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/codestory_devoxx-225x300.jpg" alt="" title="codestory_devoxx" width="225" height="300" class="alignnone size-medium wp-image-6108" /></p>
<p>Chacun s&#8217;est préparé avec son binôme. Clavier externe, 2eme souris, un ou deux ordinateurs, tout est très sérieux. Des équipes venues de l&#8217;est de la France, du Luxembourg et de Suisse, il y avait du monde.<br />
<a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0017.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0017-300x225.jpg" alt="" title="IMG_0017" width="300" height="225" class="alignnone size-medium wp-image-6117" /></a></p>
<p>Remrquez les teeshirts personnalisés des équipes du GenevaJUG et d&#8217;inTech :<br />
<a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0001.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0001-300x225.jpg" alt="" title="IMG_0001" width="300" height="225" class="alignnone size-medium wp-image-6119" /></a></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0002.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0002-300x225.jpg" alt="" title="IMG_0002" width="300" height="225" class="alignnone size-medium wp-image-6120" /></a></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0003.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0003-300x225.jpg" alt="" title="IMG_0003" width="300" height="225" class="alignnone size-medium wp-image-6121" /></a></p>
<p>Quelques chiffres : il y avait 2 femmes et 26 hommes. Sur les 14 binômes, 12 utilisent Eclipse, 2 IDEA IntelliJ. Côté OS, 8 Mac, 6 Windows et 2 Linux. Le binôme des frères Le Merdy est original puisque ce sont de vrais jumeaux. Un autre binôme original : Jean-François et Henri, originaires du Québec, anciens binômes lorsqu&#8217;ils étaient étudiants. J&#8217;ai appris que le Québec avait un clavier QWERTY spécial. Pas mal de personnes de Vidal Software, Valtech et 4 personnes de la société InTech, avec entre autre Fabrice Croiseaux, directeur associé chez InTech S.A dans l&#8217;équipe bleue. </p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0025.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/IMG_0025-225x300.jpg" alt="" title="IMG_0025" width="225" height="300" class="alignnone size-medium wp-image-6122" /></a></p>
<p>Pour départager les concurrents, David et Jean-Laurent ont préparé un Kata, exercice de programmation. L&#8217;objectif de l&#8217;exercice est d&#8217;ajouter une nouvelle fonctionnalité et de développer une application Web. Premier point : certains binômes n&#8217;ont pas réussi à développer l&#8217;application Web en 2 heures. </p>
<p>L&#8217;exercice est sympa, vous pouvez le faire en lisant les instructions <a href="https://github.com/dgageot/CodeStoryStep2">sur la page Github de David Gageot</a>.</p>
<p>Pendant les 2 heures, nous avons vu des idées originales, ou plus farfelues. Clairement, la maîtrise des outils fait la différence. Bien connaître easyMock (dont Henri Tremblay, l&#8217;un des concurrents ce soir là est l&#8217;un des développeurs), JUnit, moreUnit, FestAssert&#8230; Mais attention à ne pas tomber dans le piège des tests, et de passer 2 heures à écrire des tests. Il était important de rajouter la nouvelle fonctionnalité et de construire l&#8217;application Web.</p>
<p>Le code du projet est volontairement mal écrit, afin d&#8217;évaluer la capacité du binôme à refactorer celui-ci. Cependant, il était interdit de toucher à la classe Item. Vous pouviez la sous-classer, mais sans y toucher. On a vu du Decorator Pattern, du Value Object, des choses avec des Listeners&#8230; L&#8217;imagination des concurrents a été fertile. </p>
<p>Au bout de 20mn, certains ont fait le choix d&#8217;écrire toute une batterie de tests pour reprendre les règles de gestion, et pour pouvoir ré-écrire la classe Inn. D&#8217;autres se sont dit que le code marchait (même s&#8217;il était bien moche) et ont attaqué par la WebApp. Ici nous avons vu quand même qu&#8217;un développeur Java n&#8217;est pas un gars qui fait du Web. Il y a ceux qui écrivent à la main un serveur Web (qui marchait très bien), ceux qui ont cloné SimpleHttp à partir du projet de David Gageot. J&#8217;ai vu un projet avec Play2 et Java, avec au final une belle application basée sur Twitter Bootstrap.</p>
<p><a href="http://twitter.github.com/bootstrap/">Twitter Bootstrap</a> est un projet simple, un ensemble de feuilles de style, que vous pouvez ajouter en quelques instants à votre web-app. Le bootstrap donne les bases d&#8217;une application Web correcte, comme on en fait en 2012. Le système de grille ou les styles des tableaux permettent de construire une application Web qui ressemble à quelque chose. Niveau HTML, j&#8217;ai vu des trucs pas très beaux. On a vraiment l&#8217;impression que les développeurs Javas ne connaissent pas HTML. Je referme la parenthèse. </p>
<p>Plus la soirée avance, plus la tension est palpable. Des binômes discutent ardemment sur des points précis du cahier des charges&#8230; D&#8217;autres se plaignent de la lenteur de leur IDE&#8230; David et Jean-Laurent passent voir chacun des groupes, de table en table. </p>
<p>Vers 22h00, le concours est terminé. Chacun des binômes raconte son expérience, ce qu&#8217;il a fait et ce qu&#8217;il n&#8217;a pas fait. Le code de chaque équipe est relevé, et le lendemain, ce sera finalement 5 équipes sur les 14, qui seront retenues. Voir la liste des finalistes <a href="http://www.code-story.net/2012/02/02/les-finalistes.html">sur le site de Code-Story</a>.</p>
<p>Rendez-vous le mardi 14 février pour connaître enfin le nom du binôme qui accompagnera David et Jean-Laurent à la conférence &laquo;&nbsp;Devoxx France&nbsp;&raquo; fin avril&#8230; </p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/02/04/code-story-demie-finale-chez-xebia/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Code Story : un concours pour Devoxx France</title>
		<link>http://www.touilleur-express.fr/2012/02/01/codestory-un-concours-pour-devoxx-france/</link>
		<comments>http://www.touilleur-express.fr/2012/02/01/codestory-un-concours-pour-devoxx-france/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 07:58:49 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6100</guid>
		<description><![CDATA[
Interview de Jean-Laurent de Morlhon et de David Gageot
Cette semaine, rendez-vous avec Jean-Laurent et David, qui organisent le concours &#171;&#160;Code Story&#160;&#187; pour Devoxx France. Voyons un peu ce qui vous attend, et quelques informations sur le déroulement des sélections.
Nicolas : Bonjour à tous les deux, merci d&#8217;avoir accepté de prendre un peu de temps pour répondre à nos questions. Jean-Laurent, David, pour vous présenter aux quelques rares Geeks qui ne vous connaissent pas, je vais vous demander un petit exercice. Présentez l&#8217;autre en 140 caractères&#8230; et pas le droit d&#8217;utiliser ...]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-6102 alignnone" title="logo_code_story2" src="http://www.touilleur-express.fr/wp-content/uploads/2012/02/logo_code_story2.png" alt="Logo" width="150" height="150" /></p>
<h2>Interview de <a href="https://plus.google.com/u/0/104208514956133087454/posts">Jean-Laurent de Morlhon</a> et de <a href="https://plus.google.com/u/0/100241047121875700803/posts">David Gageot</a></h2>
<p><em>Cette semaine, rendez-vous avec Jean-Laurent et David, qui organisent le concours &laquo;&nbsp;<a href="http://www.code-story.net/">Code Story</a>&nbsp;&raquo; pour Devoxx France. Voyons un peu ce qui vous attend, et quelques informations sur le déroulement des sélections.</em></p>
<p><strong>Nicolas : Bonjour à tous les deux, merci d&#8217;avoir accepté de prendre un peu de temps pour répondre à nos questions. Jean-Laurent, David, pour vous présenter aux quelques rares Geeks qui ne vous connaissent pas, je vais vous demander un petit exercice. Présentez l&#8217;autre en 140 caractères&#8230; et pas le droit d&#8217;utiliser d&#8217;URL Shortener</strong></p>
<p>Jean-Laurent : David est indépendant. Il aime le code simple qui fonctionne et cherche toujours le petit truc en plus pour être encore plus direct et efficace.</p>
<p>DavidL : J-L est CTO de Xebia. Il aime le code simple qui fonctionne. Il sait monter des super équipes de dév. et les aider à monter en puissance.</p>
<p><strong>Première question : comment tout a commencé et d&#8217;où vient l&#8217;idée de Code-Story ?</strong></p>
<p>L’idée de base est de trouver un binome pour nous aider à faire 2 jours de live coding pour <a href="http://www.devoxx.fr">Devoxx France</a>. Car à deux on doutait de notre capacité à transmettre quelque chose d’enrichissant pour le public tout en développant sans concession. On aurait pu chercher des amis dans la communauté, on a tenté le petit concours histoire de faire un peu de buzz et aussi un peu juste pour voir si ca marche.</p>
<p>Au premier tour, il y a eu plus de 60 soumissions de code par plus de 60 personnes. On peut dire que c&#8217;est un succès, dont on ne soupçonnais pas l’ampleur. Certaines personnes ont aussi juste balancé par twitter ou sur github des solutions, sans même chercher à nous contacter ou à pariticiper. L’ampleur de l’engouement nous a clairement dépassé.</p>
<p>Pour le deuxième tour, on a sélectionné 39 de ces personnes. Quelque unes ont du abandonner à cause de la distance géographique. On aura donc 14 binômes chez Xebia <strong>le 1 février</strong>, on va binomer avec eux, histoire de voir en situation reelle avec qui on “fit” le mieux.</p>
<p><strong>Combien de binôme iront en finale ?</strong></p>
<p>Du deuxième tour ne &laquo;&nbsp;survivront&nbsp;&raquo; que trois ou quatre binômes. La crême de la crême&#8230;</p>
<p><strong>Est-ce qu&#8217;il y a des binômes seul et des binômes à trois ? Comme dans la Vérité si je mens : <em>on partage en trois : moitié, moitié et moitié&#8230;</em></strong></p>
<p>Que des vrais binômes. Au premier tour, il y avait une 6-team mais 12 mains sur un clavier, on pense que c&#8217;est un peu compliqué.</p>
<p><strong>Donc c&#8217;est un combat à la mort pour la finale ?</strong></p>
<p>A mort en effet. Il ne doit rester que deux personnes pour nous accompagner à Devoxx France. C&#8217;est avec ce binôme que nous allons nous préparer. L&#8217;idée est de trouver deux développeurs avec lesquels nous aurons un bon feeling. A Devoxx, nous mélangerons les deux binômes en permanence.</p>
<p><strong>Serons-nous autorisé à être déguisé le soir de la finale ?</strong></p>
<p>Nous ne voyons pas de quel droit on pourrait t&#8217;interdire de te déguiser Nicolas. Tu as l&#8217;air de bien aimer ça. Mais souviens toi que l&#8217;on recrute des super développeurs pas des clowns ventriloques !</p>
<p><strong>Quelle proposition de code vous a fait le plus sourire/marrer/hurler de rire ?</strong></p>
<p>Il y a <a href="http://thecodersbreakfast.net/" target="_blank">le code d&#8217;Olivier Croisier</a> qui en bon psychopathe a patché le JDK. Faut pas jouer avec ce bonhomme là ! Il a eu aussi les petits concours de code en 140 caractères sur Twitter. Que du beau code, promis. Un des codes les plus terrifiant implémentait un pattern Visitor avec un Builder afin de résoudre le FooBarQix grâce à un Fork/Join. No comment.</p>
<p><strong>Du côté des langages, est-ce que les candidat se sont lachés ?</strong></p>
<p>Beaucoup de Java et de Scala. Mais aussi du Groovy, du Ruby, du Javascript, du Closure, Fantom, du Yeti, du Erlang, de l&#8217;Assembleur (si si), du C, du Ioke et du Gosu. Tout ça sur une même JVM (enfin, on a fermé les yeux et fait comme si). N&#8217;oublions pas une implémentation en Play!, un plugin maven et même des scripts bash. Je crois qu&#8217;on peut dire que les candidats se sont lâchés. Cela n’a pas été de tout repos de lire autant de code d’autant de langages différents. On aime ça, et pour certains langages on avait des points de comparaisons interessant.</p>
<p><strong>Lorsque ma femme regardait &laquo;&nbsp;La nouvelle Star&nbsp;&raquo; (<em>car moi je ne regardais pas, hem&#8230;</em>) il y avait toujours un moment où un gars arrivait aux sélections plié en deux, l&#8217;air tout misérable, et en fait chantait comme un Dieu. Par exemple, Christophe Willem. </strong></p>
<p><strong>Donc est-ce que vous avez vu des personnes vraiment surprenantes ou pas encore ?</strong></p>
<p>Pas encore, le premier tour se faisant pas mail, on a pas rencontrer directement les gens. Le deuxième tour va être plus surprenant. On cherche un binôme qui sait coder, qui sait aussi raconter ce qu&#8217;il code et que ca soit enrichissant, le tout devant 40 personnes, donc pas un steak de grosse SSII. On espère avoir l&#8217;embarras du choix.</p>
<p><strong>Comment va se dérouler la soirée du 14 février au Paris JUG ?</strong></p>
<p>On part du principe du Randori, c&#8217;est à dire un seul sujet et des binômes qui alternent toutes les 5 minutes sur le même clavier.<br />
On le rend plus fun en modifiant les règles au fur et à mesure et un ajoutant un jury qui buzze les binômes. Chaque binôme qui est buzzé après la pause du buffet est éliminé. Il ne doit en rester qu&#8217;un !<br />
On va impliquer le public aussi pour ajouter de la pression aux candidats !</p>
<p><strong>Si je veux gagner, quels sont les 3 super pouvoirs qu&#8217;il me faut ? Est-ce qu&#8217;il faut être roux par exemple ?</strong></p>
<p>Si tu es roux, barbu et que tu aimes les chatons, tu es déjà sélectionné. On a aussi sélectionné tous les directeurs techniques de Xebia de plus d&#8217;1m85. Pour les autres, il faut un niveau &laquo;&nbsp;<em>Grand maître</em>&nbsp;&raquo; en Java, s&#8217;entraîner aux raccourcis de son IDE même sous la douche, ne pas se pose de question métaphysique sur “<em>est ce que faire des tests unitaires ça sert en vrai</em> ?”, avoir la tendance maladive à faire maigrir les poms plutôt que grossir et aimer le travail en binôme.</p>
<p><strong>Est-ce que vous avez déjà commencé à préparer Devoxx France ?</strong></p>
<p>Pour l&#8217;instant nous ne sommes que deux mais nous avons pas mal d&#8217;idées. Notamment l’organisation de la salle et le sujet du jour J. Mais cela va demander de la préparation et du matériel. Vivement deux personnes de plus pour nous donner des idées pour enrichir tout cela.</p>
<p><strong>D&#8217;autres points que vous souhaiteriez évoquer ?</strong></p>
<p>On fait ce concours pour rigoler mais clairement notre but est de préparer une super session pour <a href="http://www.devoxx.fr" target="_blank">Devoxx France</a>. Pendant deux jours nous allons développer une application devant un public. Le tout en essayant de montrer des techniques, des outils, des méthodes que tout le monde ne connait pas forcément. Notre objectif c&#8217;est que chaque participant de Devoxx vienne nous voir pour une itération d&#8217;une heure.</p>
<p>En sortant de la salle, il doit hésiter &laquo;&nbsp;Bon maintenant je vais voir Romain Guy ou Matt Raible ou je reste pour une deuxième itération de CodeStory ?&nbsp;&raquo;</p>
<p><strong>Merci et à bientôt !</strong></p>
<p>Merci et rendez-vous le mardi 14 février au Paris JUG pour la finale des sélections et à Devoxx France, pour voir Code-Story en direct !</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/02/01/codestory-un-concours-pour-devoxx-france/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Présentation de Gatling au Paris Scala User Group</title>
		<link>http://www.touilleur-express.fr/2012/01/28/presentation-de-gatling-au-paris-scala-user-group/</link>
		<comments>http://www.touilleur-express.fr/2012/01/28/presentation-de-gatling-au-paris-scala-user-group/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 11:24:10 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[scala]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6086</guid>
		<description><![CDATA[Découvrez Gatling, un outil de tests de charge écrit en Scala, qui mitraille littéralement votre application. Stéphane Landelle est directeur technique chez eBusiness Information, du groupe Excylis. Il est le responsable technique et développe activement sur le projet. Romain Sertelon est le développeur principal de Gatling. Il a effectué son stage de fin d&#8217;études chez eBusiness Information avec pour sujet Gatling. Aujourd&#8217;hui, ils nous présentent l&#8217;outil et son fonctionnement.
Gatling is a web performance testing tool written in Scala, that relies on Akka, Jboss Netty and Async Http Client to litteraly ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/gatling.jpg"><img src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/gatling-300x216.jpg" alt="" title="gatling" width="300" height="216" class="alignright size-medium wp-image-6090" /></a>Découvrez Gatling, un outil de tests de charge écrit en Scala, qui mitraille littéralement votre application. Stéphane Landelle est directeur technique chez <a href="http://www.ebusinessinformation.fr/" target="_blank">eBusiness Information</a>, du groupe Excylis. Il est le responsable technique et développe activement sur le projet. Romain Sertelon est le développeur principal de Gatling. Il a effectué son stage de fin d&#8217;études chez eBusiness Information avec pour sujet Gatling. Aujourd&#8217;hui, ils nous présentent l&#8217;outil et son fonctionnement.</p>
<p><em>Gatling is a web performance testing tool written in Scala, that relies on Akka, Jboss Netty and Async Http Client to litteraly explode your web application and ensure that it works under heavy stress-load. The project is hosted on Github : <a href="https://github.com/excilys/gatling" target="_blank">https://github.com/excilys/gatling</a></em></p>
<p><strong>Gatling en quelques mots</strong><br />
Gatling est un outil opens-source lancé en décembre 2011. C&#8217;est un outil de stress qui permet de tester la montée en charge d&#8217;un site Internet. Il simule un grand nombre de connexion sur le serveur, en jouant des scénarii pré-enregistrés. Les résultats sont ensuite analysés à posteriori, pour fournir différentes courbes et indicateurs.</p>
<p>Gatling est donc une alternative à JMeter, en exploitant un moteur en Scala à base d&#8217;Actors, et en utilisant le principe des entrées/sorties non bloquantes. Il s&#8217;appuie sur <a href="http://akka.io/">Akka</a>, <a href="https://github.com/sonatype/async-http-client">sur Async Http Client</a> de JF.Arcand et enfin sur <a href="http://www.jboss.org/netty">JBoss Netty</a>. </p>
<p><strong>Pourquoi les tests de charge sont importants ?</strong><br />
Pourquoi le test en charge est-il important ? Réaliser des tests de charge est important. Cela devrait faire partie du cycle de développement. Stéphane explique qu&#8217;il a enchainé différentes missions, et qu&#8217;il a testé les outils du marché : <a href="http://jmeter.apache.org/" target="_blank">Apache JMeter</a>, <a href="http://grinder.sourceforge.net/" target="_blank">Grinder</a>, <a href="http://opensta.org/" target="_blank">OpenSTA</a> ou encore <a href="http://www8.hp.com/fr/fr/software/software-product.html?compURI=tcm:113-935779" target="_blank">HP LoadRunner</a>&#8230; difficile de trouver la solution qui l&#8217;intéressait. Surtout, particulièrement pour JMeter, son expérience montre que l&#8217;outil n&#8217;est pas adapté à de très gros tests de charge. Romain explique que JMeter ne dépasse pas les 1514 injecteurs sur une seule machine.<br />
Par ailleurs, Stéphane voyant ce que Scala propose, trouve qu&#8217;il y a un sujet intéressant à lancer, et le projet démarre donc en juin dernier avec Romain. </p>
<p><strong>Principes importants</strong><br />
Gatling est une solution asynchrone. En général, les solutions classiques utilisent l&#8217;approche &laquo;&nbsp;1 virtualUser=1 thread&nbsp;&raquo;. Cette approche est limitée dès lors qu&#8217;il s&#8217;agit de vraiment &laquo;&nbsp;taper&nbsp;&raquo; dans le serveur. Cela fonctionne, mais l&#8217;injecteur est pénalisé par de nombreux context-switching. </p>
<p>Ensuite, l&#8217;asynchrone coule de source si l&#8217;on réfléchit quelques instants à ce que font vraiment les visiteurs d&#8217;un site Internet. Vous par exemple, vous êtes entrain de lire cet article, un café à la main, l&#8217;oeil encore un peu fatigué de votre week-end. Et pendant ce temps-là, le serveur ne fait rien. C&#8217;est ce que l&#8217;on appelle le &laquo;&nbsp;Think-Time&nbsp;&raquo;. L&#8217;idée de Gatling est d&#8217;utiliser ce temps de pause dans votre scénario pour faire exécuter une tâche à un autre virtual-user. Simple non ?<br />
Au lieu de mettre une thread en sleep, ce qui coûte des ressources, Gatling a une Thread d&#8217;exécution qui enchaine les traitements. Au final, Stéphane explique que le moteur tourne avec de 30 à 40 threads grand maximum pour environ 12500 Virtual User sur une machine classique, type Intel 4-Core i7. Je testerai cela et je vous donnerai mes résultats.</p>
<p><strong>Les scénarii sont du code</strong><br />
Gatling c&#8217;est une arme pour les développeurs. Plutôt des personnes capables de coder. La puissance de Scala et la facilité pour écrire une belle API, permettent à Gatling d&#8217;avoir un moteur de scénario très puissant et très simple. Vous pouvez soit écrire un scénario directement sous la forme de code Scala, soit importer un scénario écrit avec du Scala, mais en utilisant l&#8217;API. </p>
<p>J&#8217;ai travaillé avec de vrais ingénieurs QA, qui savent coder, et je pense qu&#8217;il n&#8217;y aurait pas de difficultés à leur faire utiliser l&#8217;outil. C&#8217;est même moins verbeux qu&#8217;un scénario OpenSTA.</p>
<p>Ensuite, une idée intéressante, c&#8217;est le typage fort et la vérification du scénario à la compilation. Oui, votre scénario est compilé, et donc il est validé avant de l&#8217;envoyer sur vos injecteurs. Pas d&#8217;interprétation à la volée, qui d&#8217;après Stéphane, est trop gourmand en ressources. Avoir un scénario &laquo;&nbsp;type-safe&nbsp;&raquo; en quelques sortes. </p>
<p><strong>Des rapports sympas</strong><br />
Gatling ne fait pas de reporting en temps réel pour l&#8217;instant. L&#8217;outil effectue son tir, peut s&#8217;appuyer sur une base JDBC en entrée pour charger des données, mais les rapports sont générés à posteriori. L&#8217;ensemble est sympa, avec des librairies de Chart en Javascript.<br />
A titre personnel, pour le projet <a href="https://www.cmesdonnees.com/p/Dnpge" target="_blank">CMesDonnées.com</a>, j&#8217;ai utilisé <a href="http://www.highcharts.com/" target="_blank">HighCharts</a>. Simple et facile à mettre en place, il fait de très belles courbes à votre projet. Pardon, il donne de belles courbes à vos données. </p>
<p><strong>Les différents composants de l&#8217;outil</strong><br />
Gatling est hébergé <a href="https://github.com/excilys/gatling" target="_blank">sur GitHub</a>. Vous pouvez télécharger une version stable <a href="https://github.com/excilys/gatling/downloads" target="_blank">dans la section Downloads</a>. Après avoir installé l&#8217;outil, vous avez :<br />
- un Recorder, client Swing qui démarre un proxy http pour enregistrer les requêtes.<br />
- un outil de reporting pour analyser les résultats et générer des pages webs de rapport<br />
- le moteur d&#8217;injection, qui prend un scénario et qui l&#8217;exécute</p>
<p>Il y a aussi déjà un artefact Maven pour faciliter la création d&#8217;un projet Gatling. </p>
<p>Techniquement, Stéphane entre ensuite dans les détails de l&#8217;outil. J&#8217;ai retenu que pour le parsing XML, le plus efficace est <a href="http://vtd-xml.sourceforge.net/" target="_blank">VTD-XML</a>. La documentation complète de Gatling est en ligne <a href="https://github.com/excilys/gatling/wiki " target="_blank">sur le Wiki</a>.</p>
<p><strong>Pourquoi Scala ?</strong><br />
La motivation au départ était d&#8217;utiliser Akka. Ce moteur d&#8217;Actor très puissant et très simple à utiliser, permet de découper l&#8217;exécution des étapes d&#8217;un scénario. Il y a aussi pas mal de stratégie pour gérer les itérations et le branchement conditionnel, d&#8217;un Actor à l&#8217;autre. La présentation est allée assez loin dans les détails, on retiendra que le principe d&#8217;Actor est un outil excellent pour développer une application avec des éléments asynchrones.</p>
<p>Nous avons eu ensuite plusieurs démonstrations de l&#8217;outil, pas mal de discussions intéressantes sur l&#8217;implémentation et les choix techniques. L&#8217;outil est encore jeune mais il fonctionne bien. Vous pouvez le tester et donner votre avis à Stéphane et à Romain. </p>
<p>Pour terminer :<br />
- <a href="https://github.com/excilys/gatling/downloads" target="_blank">télécharger Gatling</a><br />
- <a href="https://github.com/excilys/gatling/wiki" target="_blank">le wiki</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/01/28/presentation-de-gatling-au-paris-scala-user-group/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>10 Personnalités du monde Java à connaître</title>
		<link>http://www.touilleur-express.fr/2012/01/14/10-personnalites-du-monde-java-a-connaitre/</link>
		<comments>http://www.touilleur-express.fr/2012/01/14/10-personnalites-du-monde-java-a-connaitre/#comments</comments>
		<pubDate>Sat, 14 Jan 2012 18:14:27 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[devoxx]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6042</guid>
		<description><![CDATA[Si vous sortez au Paris JUG ou si vous avez l&#8217;occasion de venir à une conférence vous verrez le plaisir que l&#8217;on peut avoir à écouter &#171;&#160;une rock-star&#160;&#187; de la programmation. J&#8217;espère que vous aurez la chance d&#8217;écouter des speakers prestigieux. J&#8217;assume complètement le côté midinette ou groupie, donc ne vient pas pourrir la ligne de commentaire avec du troll à 2 euros. Non, plus sérieusement, il y a un côté magique et fascinant, lorsque vous voyez devant vous le gars qui a écrit le logiciel ou la librairie, que vous utilisez ...]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/tag_perso.gif"><img class="alignright size-full wp-image-6062" title="tag_perso" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/tag_perso.gif" alt="" width="150" height="150" /></a>Si vous sortez <a href="http://www.parisjug.org/">au Paris JUG</a> ou si vous avez l&#8217;occasion de venir à <a href="http://www.devoxx.fr/">une conférence</a> vous verrez le plaisir que l&#8217;on peut avoir à écouter &laquo;&nbsp;une rock-star&nbsp;&raquo; de la programmation. J&#8217;espère que vous aurez la chance d&#8217;écouter des speakers prestigieux. J&#8217;assume complètement le côté midinette ou groupie, donc ne vient pas pourrir la ligne de commentaire avec du troll à 2 euros. Non, plus sérieusement, il y a un côté magique et fascinant, lorsque vous voyez devant vous le gars qui a écrit le logiciel ou la librairie, que vous utilisez 8 heures par jour. Je vous parle de logiciels open-source bien entendu. Je doute qu&#8217;un serveur d&#8217;application Java d&#8217;un grand éditeur vous fasse transpirer, mais certains d&#8217;entres nous sont curieux.</p>
<p>Chaque rencontre est unique. Ce type de personnage est souvent charismatique, intelligent et fascinant. Enfin moi je le constate depuis que je traine mes jeans dans les conférences. Forcément si tu n&#8217;es jamais sorti de chez toi, que tu es encore &laquo;&nbsp;<em>vierge de conférence</em>&nbsp;&raquo; ce qui va suivre ne va pas t&#8217;intéresser, voire te faire sourire gentiment. Encore une fois : j&#8217;assume.</p>
<p>Vous utilisez Maven ? Ant ? Junit ? Mais qui se cache derrière ces librairies ? J&#8217;ai donc sélectionné 10 personnalités du monde anglophone, qui m&#8217;ont marqué et qui sont sur la liste des gens &laquo;&nbsp;à rencontrer une fois dans votre vie&nbsp;&raquo;.</p>
<p><strong>Joshua J.Bloch</strong></p>
<div id="attachment_6046" class="wp-caption alignleft" style="width: 160px"><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/devoxx_joshua_bloch.png"><img class="size-thumbnail wp-image-6046" title="devoxx_joshua_bloch" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/devoxx_joshua_bloch-150x150.png" alt="" width="150" height="150" /></a><p class="wp-caption-text">Crédit photo : R.Maton, Web-tambouille.fr</p></div>
<p>Joshua Bloch est développeur et auteur de livres sur Java, employé par Google depuis 2004. Il a développé une partie de l&#8217;API Collections de Java, dirigé la conception de la partie java.math et du principe d&#8217;assert. En 2001 il a publié un livre indispensable à tout développeur Java : &laquo;&nbsp;<a href="http://www.amazon.com/gp/product/0321356683?ie=UTF8&amp;tag=progrlife-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321356683">Effective Java</a>&laquo;&nbsp;. C&#8217;est aussi le co-auteur de &laquo;&nbsp;<a href="http://www.amazon.com/Java-Puzzlers-Traps-Pitfalls-Corner/dp/032133678X/ref=ntt_at_ep_dpt_2">Java Puzzlers</a>&nbsp;&raquo; qu&#8217;il a écrit avec Neal Gafter, employé aujourd&#8217;hui par Microsoft. C&#8217;est aussi l&#8217;auteur de &laquo;&nbsp;<a href="http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ref=sr_1_1?s=books&amp;ie=UTF8&amp;qid=1326441038&amp;sr=1-1">Java Concurreny in Practice</a>&nbsp;&raquo; co-écrit avec Brian Goetz et Doug Lea entre autre. Ces livres doivent faire partie de votre bibliothèque de développeur. Excellent speaker habitué de Devoxx, il est responsable <a href="https://groups.google.com/forum/#!topic/javaposse/VG20Bn4Lxuk">depuis fin 2011</a> du développement <a href="http://www.dartlang.org/">du langage Dart</a>, une alternative à JavaScript, pour les navigateurs internets. Son compte Twitter : <a href="http://twitter.com/joshbloch">@joshbloch</a></p>
<p>A Devoxx 2010 et Devoxx 2011, ses présentations étaient passionnantes, avec une approche sur des sujets autour de Java qui vous ouvre les yeux. A voir au moins une fois dans sa vie de &laquo;&nbsp;Java-iste&nbsp;&raquo;.</p>
<p><strong>Jason van Zyl</strong></p>
<div id="attachment_6045" class="wp-caption alignleft" style="width: 160px"><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/jason-van-zyl.jpg"><img class="size-thumbnail wp-image-6045" title="jason-van-zyl" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/jason-van-zyl-150x150.jpg" alt="Jason van Zyl" width="150" height="150" /></a><p class="wp-caption-text">Crédit photo : M.Figuière Xebia France</p></div>
<p>Jason van Zyl est le créateur du projet <a href="http://maven.apache.org">Apache Maven</a> et d&#8217;autres projets comme <a href="http://velocity.apache.org/">Apache Velocity</a>[<a href="http://mail-archives.apache.org/mod_mbox/velocity-dev/200008.mbox/author">1</a>] et <a href="http://plexus.codehaus.org/">du projet Plexus</a>. Fondateur et directeur technique de la société Sonatype, il est aussi membre de l&#8217;Apache Software Foundation. Il est aussi connu pour ses prises de décisions parfois tranchées et son caractère bien trempé. Il aura eu au moins le mérite de créer <a href="http://maven.apache.org/">Maven</a>, outil devenu quasi indispensable dans le monde Java.</p>
<p>Pour l&#8217;avoir vu <a href="http://www.touilleur-express.fr/2009/11/19/devoxx-2009-resume-de-la-journee-de-jeudi/">en 2009</a> j&#8217;avoue que je n&#8217;ai pas aimé son arrogance et sa manière de présenter. Mais ce gars là a pondu Maven, vous ne pouvez pas ignorer son existence. Aujourd&#8217;hui la communauté Maven est bien plus large, de nombreux Français sont contributeurs ou ont travaillé sur le projet (<a href="http://maven.apache.org/plugins/maven-resources-plugin/team-list.html" target="_blank">A.Héritier, N.de Loof, Emmanuel Venisse, Olivier Lamy, Vincent Massol, Fabrice Bellingard pour ceux que je connais&#8230;</a>)</p>
<p><strong>James Gosling </strong><br />
<a href="http://www.touilleur-express.fr/wp-content/uploads/2009/06/jamesgosling_nicolas_martignole.jpg"><img class="alignleft size-thumbnail wp-image-1562" title="jamesgosling_nicolas_martignole" src="http://www.touilleur-express.fr/wp-content/uploads/2009/06/jamesgosling_nicolas_martignole-150x150.jpg" alt="" width="150" height="150" /></a> Créateur du langage Java en 1994, ancien ingénieur chez SUN Microsystems. James vient du monde Smalltalk. Après plusieurs années chez SUN, de 1984 à 2010, il quitte SUN pour Google. Depuis 2011, il s&#8217;est engagé dans une aventure de startup avec des robots sous-marins. Speaker assez discret et peut-être pas le plus charismatique, c&#8217;est en tout cas une personne simple, facile d&#8217;accès et passionnante.</p>
<p>Avec Java en 1995, il a révolutionné au bon moment le développement informatique. Java a retiré la gestion de la mémoire au développeur, et a proposé dès le départ le principe du &laquo;&nbsp;Write once, run everywhere&nbsp;&raquo;. A l&#8217;époque le développement devait s&#8217;effectuer sur la plateforme cible. En 15 ans l&#8217;industrie s&#8217;est tournée vers Internet, et Java a permis d&#8217;avancer rapidement. A ce jour, il reste toujours <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" target="_blank">premier dans le classement TIOBE 2011 et 2012</a>  des langages de programmation qui mesure la popularité d&#8217;un langage, mais pas le nombre de projets effectivement écrits avec Java.</p>
<p><strong>Doug Lea</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/doug_lea.jpg"><img class="alignleft size-thumbnail wp-image-6047" title="Doug Lea" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/doug_lea-150x150.jpg" alt="" width="150" height="150" /></a>Doug Lea est connu des développeurs Javas pour son travail sur l&#8217;API Concurrent, sur les Threads et pour avoir apporté à Java une librairie puissante dans la gestion de la concurrence. Il est aujourd&#8217;hui professeur à <a href="http://en.wikipedia.org/wiki/SUNY_Oswego" target="_blank">la State University of New-York à Oswego</a>. Doug Lea est l&#8217;auteur du livre &laquo;&nbsp;<a href="http://www.amazon.fr/Concurrent-Programming-Java-TM-Principles/dp/0201310090/ref=sr_1_1?ie=UTF8&amp;qid=1326550136&amp;sr=8-1" target="_blank">Concurrent Programming in Java(tm) : Design Principles and Pattern</a>&nbsp;&raquo; et co-auteur du livre &laquo;&nbsp;<a href="http://www.amazon.fr/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601/ref=sr_1_1?s=english-books&amp;ie=UTF8&amp;qid=1326550267&amp;sr=1-1" target="_blank">Java Concurrency in Practice</a>&laquo;&nbsp;. Doug Lea était l&#8217;un des rares indépendants faisant partie du <a href="http://en.wikipedia.org/wiki/Java_Community_Process" target="_blank">Java Community Process</a>. Il a décidé de quitter le JCP <a href="http://en.wikipedia.org/wiki/Java_Community_Process" target="_blank">fin 2010</a>, suite aux changements politiques provoqués par le rachat de SUN Microsystems par Oracle.</p>
<p><strong>Gavin King</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/gavin_king.jpg"><img class="alignleft size-thumbnail wp-image-6048" title="gavin_king" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/gavin_king-150x150.jpg" alt="" width="150" height="150" /></a>Si vous utilisez <a href="http://www.hibernate.org/" target="_blank">Hibernate</a>, et je me doute que vous en avez au moins entendu parler, Gavin King est l&#8217;auteur original du framework Hibernate. Salarié chez JBoss RedHat, il est aujourd&#8217;hui le développeur principal du nouveau langage <a href="http://ceylon-lang.org/" target="_blank">Ceylon</a> avec <a href="http://www.touilleur-express.fr/2011/10/21/riviera-dev-ceylon/" target="_blank">Stéphane Epardaud</a> et <a href="http://emmanuelbernard.com/" target="_blank">Emmanuel Bernard</a>, 2 Français salariés de JBoss RedHat, que vous connaissez sans doute.</p>
<p>Gavin King est aussi l&#8217;auteur du framework <a href="http://seamframework.org/" target="_blank">Seam</a>, qui a proposé une approche orientée conversation, destinée à faciliter l&#8217;écriture d&#8217;applications webs complexes. Il a été contributeur sur Java EE 6 autour de JPA, JSF et EJB3. C&#8217;est le Spec Lead de la spécification <a href="http://jcp.org/en/jsr/detail?id=299" target="_blank">JSR-299 Contexts and Dependency Injection for the Java(tm) EE Edition</a>, plus souvent appelé &laquo;&nbsp;CDI&nbsp;&raquo;.</p>
<p>A titre personnel je ne l&#8217;ai jamais rencontré. Basé au Mexique, il serait question qu&#8217;il vienne vivre en Europe en 2012. Vous voyez, j&#8217;assume mon côté People aussi.</p>
<p><strong>Rod Johnson</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/rod_johnson.jpg"><img class="alignleft size-thumbnail wp-image-6050" title="rod_johnson" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/rod_johnson-150x150.jpg" alt="" width="150" height="150" /></a>Rod Johnson est le fondateur du <a href="http://www.springsource.org/spring-framework" target="_blank">framework Spring</a>. C&#8217;est aujourd&#8217;hui le responsable de la société SpringSource, <a href="http://blogs.vmware.com/console/2009/08/vmware-acquires-springsource.html" target="_blank">rachetée par VM Ware en 2009</a>. Rod a révolutionné l&#8217;approche J2EE fin 2002 avec un livre qui reste encore à ce jour très intéressant à lire : <a href="http://www.amazon.fr/Expert-One-One-Design-Development/dp/0764543857" target="_blank">Expert one-on-one J2EE Development</a>. A l&#8217;époque où ce livre est sorti, je me souviens que nous étions tous convaincus que J2EE est les EJB 2.1 allaient révolutionner le monde. Ce fut le cas, en donnant à l&#8217;industrie une raison pour arrêter de suivre aveuglément SUN Microsystems. Spring a renversé l&#8217;oligarchie dans les années 2000 et a donné un coup d&#8217;arrêt aux architectures J2EE.</p>
<p>Aujourd&#8217;hui en 2012 je pense que Spring est devenu un framework qui se court après lui-même. Bien qu&#8217;excellent techniquement, il y a une recherche systématique à vouloir &laquo;&nbsp;abstraire&nbsp;&raquo; et &laquo;&nbsp;simplifier&nbsp;&raquo; les frameworks des copains. Prenez le projet &laquo;&nbsp;<a href="http://www.springsource.org/spring-data" target="_blank">Spring Data</a>&nbsp;&raquo; : belle brique technique, on peut s&#8217;interroger sur l&#8217;utilité de certains projets&#8230;</p>
<p><a href="http://www.springsource.org/node/3334" target="_blank">Spring 3.1</a> est sorti fin décembre 2011, et la société s&#8217;oriente rapidement vers le Cloud pour proposer toujours plus d&#8217;outils libres et open-source, avec du support professionnel. SpringSource a aussi racheté <a href="http://www.springsource.com/newsevents/g2one" target="_blank">la société G2One</a>, fondée par Guillaume Laforge (chef de projet du langage Groovy), Graeme Rocher et Alex Tkachman en 2007.</p>
<p>Je pense que <a href="http://www.touilleur-express.fr/2009/06/23/jazoon-spring-30-whats-new/">Jürgen Höller</a>, le développeur principal de Spring, aurait mérité d&#8217;être dans cette page. D&#8217;une grande gentillesse, c&#8217;est un peu le Wozniak de Rod Johnson. Discret, avec un esprit brillant, c&#8217;est le développeur qui a écrit et qui continue à écrire une bonne partie de Spring.</p>
<p><strong>Kent Beck</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/225px-Kent_Beck_no_Workshop_Mapping_XP.jpg"><img class="alignleft size-thumbnail wp-image-6053" title="225px-Kent_Beck_no_Workshop_Mapping_XP" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/225px-Kent_Beck_no_Workshop_Mapping_XP-150x150.jpg" alt="Kent Beck" width="150" height="150" /></a>Kent Beck est le créateur de la méthode de développement &laquo;&nbsp;<a href="http://en.wikipedia.org/wiki/Extreme_Programming" target="_blank">Extreme Programming</a>&nbsp;&raquo; dites aussi &laquo;&nbsp;méthode XP&nbsp;&raquo;. L&#8217;eXtreme Programming consiste à pousser à fond toutes les techniques de développement et d&#8217;organisation, afin de développer un logiciel d&#8217;excellente qualité. C&#8217;est aussi l&#8217;auteur du principe de programmation visant à écrire les tests avant le code, la fameuse méthode TDD pour <a href="http://en.wikipedia.org/wiki/Test_Driven_Development" target="_blank">Tests Driven Development</a>. C&#8217;est enfin le co-auteur du framework JUnit avec Erich Gamma, utilisé pour écrire des tests unitaires dans notre industrie (car nous, on écrit des tests).</p>
<p>Kent Beck est l&#8217;un des 17 développeurs ayant signé le &laquo;&nbsp;<a href="http://en.wikipedia.org/wiki/Agile_Manifesto">Manifeste Agile</a>&laquo;&nbsp;. En 2011 <a href="http://www.quora.com/What-is-the-difference-between-unit-testing-functional-testing-and-integration-testing/answer/Kent-Beck">il travaillait chez Facebook</a>. Il a écrit une dizaine de livres autour de SmallTalk, de Java et <a href="http://www.amazon.com/gp/product/0321278658?ie=UTF8&amp;tag=progrlife-20&amp;linkCode=as2&amp;camp=1789&amp;creative=9325&amp;creativeASIN=0321278658">des pratiques Agiles</a>. Vous pourrez lire régulièrement ses articles <a href="http://www.threeriversinstitute.org/blog/">sur son blog</a>.</p>
<p><strong>Erich Gamma</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/erich_gamma.jpg"><img class="alignleft size-thumbnail wp-image-6054" title="erich_gamma" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/erich_gamma-150x150.jpg" alt="" width="150" height="150" /></a>Erich Gamma est l&#8217;un  des 4 auteurs du fameux livre &laquo;&nbsp;<a href="http://en.wikipedia.org/wiki/Design_Patterns">Design Patterns: Elements of Reusable Object-oriented Software</a>&laquo;&nbsp;. C&#8217;est l&#8217;un des 4 membres du GoF, dit &laquo;&nbsp;<a href="http://c2.com/cgi/wiki?GangOfFour">Gang of Four</a>&nbsp;&raquo; qui comprend Richard Helm, Ralph Johnson et John Vlissides.  Erich a co-écrit JUnit, il a travaillé beaucoup sur l&#8217;IDE Java Eclipse, c&#8217;était le leader du développement de la partie JDT sur Eclipse. Il travaille d&#8217;ailleurs depuis 2011 chez Microsoft dans l&#8217;équipe Visual Studio. Il a écrit avec Kent Beck le livre &laquo;&nbsp;<a href="http://www.amazon.fr/exec/obidos/ASIN/2744017264/wwwdeveloppec-21">Eclipse : principes, patterns et plugins</a>&laquo;&nbsp;. Bref, Eclipse c&#8217;est quelque part un peu Erich.</p>
<p>&nbsp;</p>
<p><strong>Martin Fowler</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/4763622875_46327bb6f3.jpg"><img class="alignleft size-thumbnail wp-image-6056" title="4763622875_46327bb6f3" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/4763622875_46327bb6f3-150x150.jpg" alt="Crédit photo : N.Martignole - USI 2010" width="150" height="150" /></a></p>
<p>Martin Fowler est un auteur, un conférencier et le responsable technique de la société <a href="http://en.wikipedia.org/wiki/ThoughtWorks">ThoughtWorks</a>. Il a révolutionné l&#8217;approche orientée objet, il est considéré comme l&#8217;un des meilleurs spécialistes de la conception objet. Ses nombreux articles et publications influencent l&#8217;industrie. <a href="http://en.wikipedia.org/wiki/Inversion_of_Control">Le principe d&#8217;inversion de contrôle</a>, rendu populaire par Spring, ainsi que <a href="http://en.wikipedia.org/wiki/Dependency_injection">le principe d&#8217;injection de dépendances</a> : c&#8217;est lui. <a href="http://martinfowler.com/intro.html">Son blog</a> est une vraie mine d&#8217;informations. C&#8217;est aussi l&#8217;un des 17 auteurs du Manifeste Agile, il est passionné par toutes les techniques de développements dites &laquo;&nbsp;Agile&nbsp;&raquo;.</p>
<p>J&#8217;ai assisté à une de ses présentations lors de la conférence de l&#8217;USI 2010. Impressionnant et passionnant. A faire une fois dans sa vie. Vous pouvez lire mon compte rendu écrit <a href="http://www.touilleur-express.fr/2010/07/12/usi-2010-neal-ford-et-martin-fowler-partie-1/">en 2010</a>.</p>
<p><strong>Robert C.Martin dit &laquo;&nbsp;Uncle Bob&nbsp;&raquo;</strong></p>
<p><a href="http://www.touilleur-express.fr/wp-content/uploads/2012/01/photo_martin_r.jpg"><img class="alignleft size-thumbnail wp-image-6057" title="photo_martin_r" src="http://www.touilleur-express.fr/wp-content/uploads/2012/01/photo_martin_r-150x150.jpg" alt="" width="150" height="150" /></a>Bob Martin a popularisé le principe de &laquo;&nbsp;<em>je me prends une petite claque pendant une conférence</em>&nbsp;&raquo; en étant un speaker hors-pair, un évangéliste du métier de développeur, et surtout un gars passionnant à écouter. Si vous vous inquietez de votre avenir professionnel, si vous vous demandez si c&#8217;est bien &laquo;&nbsp;d&#8217;être chef de projet à 31 ans&nbsp;&raquo; vous pouvez lire &laquo;&nbsp;<a href="http://www.touilleur-express.fr/2009/07/27/senior/">Développeur après 31 ans : ridé et chauve tu seras</a>&laquo;&nbsp;, mais surtout vous devez prendre le temps d&#8217;écouter &laquo;&nbsp;Uncle Bob&nbsp;&raquo;</p>
<p>Bob est aussi l&#8217;un des 17 créateurs du Manifeste Agile. Passionné par le développement et l&#8217;Agilité, il est l&#8217;auteur du livre &laquo;&nbsp;<a href="http://fr.nicebooks.com/ISBN/9780135974445">Object Oriented Analysis and Design</a>&nbsp;&raquo; mais surtout du livre &laquo;&nbsp;<a href="http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882">Clean Code: A Handbook of Software Craftsmanship</a>&laquo;&nbsp;. Enfin c&#8217;est le fondateur du mouvement du &laquo;&nbsp;<a href="http://www.touilleur-express.fr/2011/01/20/craftsmanship/">Craftsmanship</a>&laquo;&nbsp;, qui donne un nom à une approche où le développeur n&#8217;est pas pris comme un pisseur de code décérébré.</p>
<p><strong>Conclusion</strong></p>
<p>Cette liste n&#8217;engage que moi, blablabla. Mais ne pas connaître Martin Fowler ou Gavin King lorsque l&#8217;on se dit &laquo;&nbsp;développeur Java&nbsp;&raquo; c&#8217;est inquiétant. Imaginons que vous êtes cuisinier. Si vous ne citez pas de tête le nom de prestigieux chefs de cuisine comme Alain Ducasse, Joël Robuchon, Anne-Sophie Pic ou Paul Bocuse, j&#8217;imagine que vous travaillez dans une cantine scolaire. Votre boulot c&#8217;est de décongeler des plats, de les servir à la bonne température, je comprends. Mais ne dîtes pas que vous &laquo;&nbsp;êtes développeur Java&nbsp;&raquo; dans ce cas.</p>
<p>Et les femmes alors ?</p>
<p>Cette liste ne contient pas de noms de femmes. J&#8217;aurai pu citer quelques femmes célèbres[<a href="http://en.wikipedia.org/wiki/Women_in_computing">1</a>] comme <a href="http://en.wikipedia.org/wiki/Barbara_H._Liskov">Barbara Jane Liskov</a> ou <a href="http://en.wikipedia.org/wiki/Marissa_Mayer">Marissa Mayer</a>, mais je pense aussi aux épouses de ces messieurs. Faire des conférences à travers le monde ou coder toute la nuit, gérer une vie de famille, tout ceci c&#8217;est souvent un travail d&#8217;équipe.</p>
<p>Pour terminer, j&#8217;ai une bonne nouvelle : 2 des personnes que vous voyez ci-dessus seront présentes à la conférence <a href="http://www.devoxx.fr/">Devoxx France 2012</a> que je co-organise avec <a href="http://devoxx.fr/display/FR12/FAQ">3 autres fous du Paris JUG</a>.</p>
<p>Rendez-vous lundi 15 janvier pour vous inscrire sur <a href="http://reg.devoxx.com/">reg.devoxx.com</a>, et rendez-vous du 18 au 20 avril pour prendre une petite claque et découvrir Dart&#8230;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/01/14/10-personnalites-du-monde-java-a-connaitre/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Chéri(e) je sors</title>
		<link>http://www.touilleur-express.fr/2012/01/09/cherie-je-sors/</link>
		<comments>http://www.touilleur-express.fr/2012/01/09/cherie-je-sors/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 07:59:25 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6034</guid>
		<description><![CDATA[Bonne année à tous ! Je sais que le plateau d&#8217;huîtres est plus ou moins bien passé, et que nous repartons pour une nouvelle année de dingue. Pour bien commencer l&#8217;année, je voulais vous parler des groupes d&#8217;utilisateurs. J&#8217;imagine que vous lisez ce blog assis sur le petit coin d&#8217;aisance sur votre ipad, j&#8217;ai donc toute votre attention. Vous êtes un développeur, disons que vous avez un rapport à l&#8217;informatique. Votre métier consiste à écrire des logiciels pour des gens qui ne savent pas exactement ce qu&#8217;ils veulent, dans un ...]]></description>
			<content:encoded><![CDATA[<p>Bonne année à tous ! Je sais que le plateau d&#8217;huîtres est plus ou moins bien passé, et que nous repartons pour une nouvelle année de dingue. Pour bien commencer l&#8217;année, je voulais vous parler des groupes d&#8217;utilisateurs. J&#8217;imagine que vous lisez ce blog assis sur le petit coin d&#8217;aisance sur votre ipad, j&#8217;ai donc toute votre attention. Vous êtes un développeur, disons que vous avez un rapport à l&#8217;informatique. Votre métier consiste à écrire des logiciels pour des gens qui ne savent pas exactement ce qu&#8217;ils veulent, dans un délai qui ne sera jamais respecté, pour un budget qui sera forcément explosé. Vous faîtes partie d&#8217;une &laquo;&nbsp;Industrie&nbsp;&raquo;. Vos parents imaginent que vous êtes assis toute la journée devant un ordinateur et que vous assemblez des morceaux de texte à la chaîne. Vous êtes un &laquo;&nbsp;Ingénieur Informaticien&nbsp;&raquo; mais finalement vous faîtes un travail d&#8217;ouvrier. Bref il va falloir changer cela. Bonnes résolutions 2012, tout ça. </p>
<p>Je vous souhaite en 2012 de découvrir un groupe d&#8217;utilisateur. S&#8217;il y a un moyen de changer de métier, c&#8217;est bien de rencontrer d&#8217;autres personnes qui font le même métier que vous. Découvrir un groupe qui tourne autour de vos centres d&#8217;intérêts, particulièrement pour les Parisiens, est assez facile. A Paris nous avons par exemple le <a href="http://www.parisjug.org">Paris JUG</a> (Paris Java User Group) qui ce mardi propose une soirée DevOps. Petit clin d&#8217;oeil amical à ceux qui pensent que l&#8217;on ne parle que de Java : vous voyez on ne parle justement pas QUE de Java. Notez-le pour plus tard. Il y a aussi le <a href="http://www.altnetfr.org/">Alt.NET</a>, groupe des utilisateurs de la plateforme .NET. J&#8217;ai déjeuné avec Rui Carvalho, qui s&#8217;occupe du groupe de Paris, rencontre très sympa, où l&#8217;on voit que la même passion anime cette communauté. En décembre dernier vous auriez pu avoir une soirée Git par Sébastien Douche. Il y a <a href="http://www.paug.fr/">le PAUG</a> pour Paris Android User Group, <a href="https://groups.google.com/group/paris-gtug?hl=fr">le Paris Google Technology User Group</a> pour rencontrer des développeurs autour des technologies Google. Si vous êtes une femme, il y a <a href="http://jduchess.org/duchess-france/">les JDuchess</a>, qui permet aux femmes dans notre métier de se réunir. Ce soir par exemple il y a une soirée sur &laquo;&nbsp;<a href="http://www.eventbrite.com/event/2704879367">Comprendre les langages dynamiques</a>&nbsp;&raquo; animé par S.Douche à l&#8217;ISEP. Il y a aussi <a href="http://www.meetup.com/Paris-MongoDB-User-Group/">le Paris MongoDB User Group</a>, le <a href="http://parisjs.org/">ParisJS</a> pour tout ce qui tourne autour du Web et de Javascript, le Scala User Group, le Groovy User Group, le Scrum User Group, le SoftwareCraftmanship User Group ou encore le NoSQL User Group&#8230;</p>
<p>Bref tu l&#8217;auras compris : si tu es Parisien et que tu ne fais pas au moins une sortie en 2012 : c&#8217;est dommage. </p>
<p>Lorsque je dis &laquo;&nbsp;chérie, je sors&nbsp;&raquo; ma chère et tendre épouse sait que ce n&#8217;est pas (que) pour aller boire une bière avec des potes. Bon ok, c&#8217;est surtout ça. Mais c&#8217;est aussi et avant tout pour rencontrer d&#8217;autres personnes qui font le même métier que moi. Et qui, accessoirement, arrivent à voir leur métier avec un oeil passionné. Je vous encourage à prendre le temps de trouver un sujet qui vous intéresse et à vous bouger, ne serait-ce qu&#8217;un soir. Pour les Parisiens, il est assez facile de trouver une soirée par semaine, et de tenter l&#8217;aventure. </p>
<p>Allez-y, testez, et on en reparle à la fin de cette année. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2012/01/09/cherie-je-sors/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Comment soumettre un sujet pour Devoxx France ?</title>
		<link>http://www.touilleur-express.fr/2011/12/19/comment-soumettre-un-sujet-pour-devoxx-france/</link>
		<comments>http://www.touilleur-express.fr/2011/12/19/comment-soumettre-un-sujet-pour-devoxx-france/#comments</comments>
		<pubDate>Mon, 19 Dec 2011 10:42:30 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Devoxx]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=6026</guid>
		<description><![CDATA[Voici quelques conseils pour devenir speaker à Devoxx. Quels sont les différents formats ? Qui sélectionne les sujets ? Quels sont les sujets que l&#8217;on peut présenter ? Comment structurer sa présentation ? Comme rédiger son résumé sur le site du Call For Paper ? 
Les différents formats de présentation
Pour commencer, je vais vous expliquer les différents formats possibles. Ce qui suit est vrai pour Devoxx France comme pour Devoxx &#171;&#160;tout court&#160;&#187; (la version en Belgique est 100% en anglais). Le premier format pour le mercredi matin sera &#171;&#160;University&#160;&#187;. Il ...]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.touilleur-express.fr/wp-content/uploads/2011/08/Cadre-Devoxx--300x162.png" alt="" title="Cadre-Devoxx-" width="300" height="162" class="alignright size-medium wp-image-5971" /><strong>Voici quelques conseils pour devenir speaker à Devoxx. Quels sont les différents formats ? Qui sélectionne les sujets ? Quels sont les sujets que l&#8217;on peut présenter ? Comment structurer sa présentation ? Comme rédiger son résumé sur le site du <a href="http://cfp.devoxx.com">Call For Paper</a> ? </strong></p>
<h3>Les différents formats de présentation</h3>
<p>Pour commencer, je vais vous expliquer les différents formats possibles. Ce qui suit est vrai pour Devoxx France comme pour Devoxx &laquo;&nbsp;tout court&nbsp;&raquo; (la version en Belgique est 100% en anglais). Le premier format pour le mercredi matin sera &laquo;&nbsp;University&nbsp;&raquo;. Il s&#8217;agit de présentations de 3 heures. Plutôt deux fois 1h30, avec une pause café. Dans une salle de 250 places environ, le format &laquo;&nbsp;University&nbsp;&raquo; est idéal pour découvrir une technologie ou un outil. Exemple de session &laquo;&nbsp;University&nbsp;&raquo; : Java EE 6 par la pratique, Scala pour les débutants, Kanban in Action&#8230; Il devrait y avoir entre 4 et 8 sessions University à Devoxx France. </p>
<p>Deuxième format, intéressant pour présenter un outil ou des librairies : Tools In Action. Ce format est adapté pour présenter des logiciels commerciaux, des plateformes techniques ou des librairies populaires. D&#8217;une durée de 30mn ou 1h, ce format est agréable à regarder en fin de journée après avoir fait 2 sessions de 3H sur des sujets pointus. Il devrait y avoir entre 8 et 10 slots &laquo;&nbsp;Tools in Action&nbsp;&raquo;.</p>
<p>Le jeudi et le vendredi, il y aura 3 ou 4 plénières le matin, puis ensuite un cycle de 6 conférences d&#8217;une heure sur 4 salles à 6 salles, soit entre 24 conférences et 36 conférences. La durée est exactement de 50mn, car il faut compter 10mn pour passer d&#8217;une salle à l&#8217;autre. C&#8217;est le format standard, comptez 45mn de présentation et un peu de temps pour les questions de la salle à la fin. </p>
<p>Pendant le break du déjeuner, il y aura enfin 8 à 10 &laquo;&nbsp;Quickie&nbsp;&raquo;. Il s&#8217;agit de présentation flash de 12 à 15mn maximum. Elles ne sont pas enregistrées alors que les autres formats dont je vous ai parlé sont filmés, afin de pouvoir ensuite mettre les vidéos sur le site Parleys.com.<br />
Un Quickie c&#8217;est un exercice sympa et pas forcément facile. Mon premier conseil : cela demande de la répétition et du travail. Mais c&#8217;est fun et sympa. C&#8217;est aussi le format le plus ouvert, où vous pouvez venir nous parler de votre projet open-source perso, de votre amour pour les Nabaztag ou des ESB dans la Finance comme votre serviteur en 2008&#8230; </p>
<p>Pour terminer, le soir à partir de 19H00 et jusqu&#8217;à 22h il y aura les &laquo;&nbsp;Birt of a Feather&nbsp;&raquo; ou BOF. Il s&#8217;agit de réunion d&#8217;une heure, par groupe de 40 personnes, plutôt centré sur les communautés. C&#8217;est une espèce de réunion d&#8217;anciens combattants. Il y aura le BOF des Java User Groups, le BOF des JDuchess, le BOF du ParisJS, le BOF du NoSQL User Group, le BOF des fans de Spring, le BOF PlayFramework&#8230; Bref de quoi surtout discuter et s&#8217;amuser. Il n&#8217;y a pas forcément de slides, c&#8217;est plus décontracté et rencontre. </p>
<h3>Qui sélectionne les sujets ?</h3>
<p>Nous avons créé un comité de sélection composé de 12 personnes. Nous avons demandé essentiellement aux Zindeps, le groupe de Freelance auquel Antonio, José et moi-même appartenons. Ils connaissent Devoxx, ils sont indépendants, motivés et passionnés. Pour compléter nous avons demandé à des personnes de la communauté Agile, Langages Alternatifs et Web, afin d&#8217;avoir un panel aussi large et indépendant que possible. Avec les 4 personnes de l&#8217;organisation, c&#8217;est donc 16 personnes qui se chargent du contenu. </p>
<h3>Quels sont les sujets que l&#8217;on peut présenter ?</h3>
<p>Il suffit de coller à l&#8217;un des 4 thèmes de Devoxx France 2012 :<br />
- Web, Cloud et NoSQL<br />
- Langages alternatifs pour la JVM<br />
- Java, Java SE et Java EE<br />
- Entreprises et Pratiques</p>
<p>Ce qui est intéressant en général : présentation par les auteurs d&#8217;un framework ou d&#8217;un langage, retour sur expérience, démonstration et live-coding, présentation sur des outils largement utilisés par les développeurs comme Spring, présentation sur les communautés, sur les concepts et les pratiques de développement. Des présentations sur l&#8217;infrastructure, la sécurité ou la production sont aussi intéressantes, et fonctionnent bien en général.</p>
<p>Ce qui est moins demandé : des sujets sur la modélisation ou la génération de code, des présentations sur des produits privés et commerciaux, sur des langages trop exotiques, sur des librairies utilisées par 2 personnes dans le monde&#8230; Pour comprendre ce qui intéresse l&#8217;audience, regardez sur Parleys.com quelles sont les 10 présentations les plus populaires et les 10 présentations les moins bien notées. Et voyez si votre sujet est assez intéressant ou pas. </p>
<p>`<br />
<h3>Comment structurer sa présentation ?</h3>
<p>Premier point : ne commencez pas à réfléchir au titre. Vous allez tout d&#8217;abord réfléchir au contenu. Ne commencez pas par &laquo;&nbsp;ce que je vais présenter&nbsp;&raquo; mais plutôt &laquo;&nbsp;pourquoi je vais présenter ce sujet&nbsp;&raquo;. Quelles sont les 5 raisons qui font que vous avez envie de présenter ce sujet ? Pour Play Framework par exemple, je dirais :<br />
- je veux présenter Play car il est simple à apprendre<br />
- car il est différent des autres frameworks Web dans le monde Java<br />
- car je pense qu&#8217;il peut réconcilier les développeurs Java avec le Web<br />
- car il propose une approche complète sans serveur J2EE et sans API Servlet, et c&#8217;est étonnant<br />
- car il répond à certains besoins mais pas non plus à tous</p>
<p>Ensuite vous pouvez penser à la façon de présenter. Après avoir travaillé le &laquo;&nbsp;Why&nbsp;&raquo; vous allez penser le &laquo;&nbsp;How&nbsp;&raquo;. Si vous prenez le format &laquo;&nbsp;Conference&nbsp;&raquo; de 50mn, vous pouvez présenter 4 ou 5 idées sans prendre de risque. Vous pouvez pour cela prendre le format classique et faire des slides pour vous aider et montrer des schémas ou des photos. Si vous voulez montrer que votre outil est génial, pourquoi ne pas vous en servir et nous montrer comment il marche en 30 mn ? Attention, faire une session de &laquo;&nbsp;live-coding&nbsp;&raquo; ou d&#8217;écriture d&#8217;applications demande beaucoup de répétitions ou de talents. Rien de plus catastrophique que &laquo;&nbsp;l&#8217;effet démo&nbsp;&raquo;&#8230; Certains speakers enregistrent sous forme vidéo leurs démonstrations, afin de pouvoir s&#8217;en sortir et montrer un résultat parfait. Je pense par exemple à la dernière session de Matt Raible à Devoxx qui a fait un tabac. D&#8217;autres se lancent dans l&#8217;écriture d&#8217;une application, mais ils sont très bons : je pense à James Ward qui a codé en direct. </p>
<p>Voilà, vous savez pourquoi vous voulez présenter votre sujet, vous savez comment vous allez faire. Et vous n&#8217;êtes pas tombé dans le piège de dire &laquo;&nbsp;ce que vous allez présenter&nbsp;&raquo; car cela coule de source. </p>
<p>Il ne reste plus qu&#8217;à trouver un titre court et percutant, qui permettra au conférencier de se décider au dernier moment et de venir vous voir. Evitez le titre bateau &laquo;&nbsp;Spring 4.2&#8243; ou &laquo;&nbsp;Hibernate&nbsp;&raquo; qui ne sont pas informatifs. Essayez de commencer par &laquo;&nbsp;Pourquoi ou Comment&nbsp;&raquo; :<br />
- &laquo;&nbsp;Pourquoi Play Framework est un jouet sérieux&nbsp;&raquo;,<br />
- &laquo;&nbsp;Comment cohabiter avec une équipe de production ?&nbsp;&raquo;,<br />
- &laquo;&nbsp;Découvrir HTML5 avec 5 exemples&nbsp;&raquo;<br />
- &laquo;&nbsp;Scrum pour les nuls, surtout pour eux&nbsp;&raquo;,<br />
- &laquo;&nbsp;Git : parce que Seb c&#8217;est bien&nbsp;&raquo;,<br />
- &laquo;&nbsp;Scala ce qui en parlent et ce qui en font ne sont pas les mêmes&nbsp;&raquo;<br />
- &laquo;&nbsp;Découvertes archéologique dans le code&nbsp;&raquo;<br />
- &laquo;&nbsp;L&#8217;Art de la Rétrospective&nbsp;&raquo; (une vraie présentation par F.Beckmann et J.Couvreur)</p>
<h3>Comment proposer son sujet sur le site cfp.devoxx.com ?</h3>
<p>Tout d&#8217;abord inscrivez-vous et présentez-vous. Et prenez le temps de compléter votre bio. En effet, ce texte sera ensuite utilisé sur le site et dans le programme de la conférence. Si vous mettez &laquo;&nbsp;TODO&nbsp;&raquo; et bien on publiera &laquo;&nbsp;TODO&nbsp;&raquo;. Présentez-vous à la 3ème personne du singulier en 4 à 5 lignes. Ce que vous faîtes en ce moment, le nom de votre entreprise, votre expérience. </p>
<p>Pensez à présenter à deux, surtout si vous n&#8217;avez jamais fait de présentation à Devoxx. En général, j&#8217;ai remarqué que les présentations en binôme sont meilleures. Les meilleurs speakers comme Neal Ford font une cinquantaine de présentation par an. Juste pour expliquer qu&#8217;il est normal que ce gars soit très bon. Dans ce cas sur le site cfp.devoxx.com, ajoutez l&#8217;autre speaker.</p>
<p>Dans la partie référence, vous devez prendre soin de préciser si vous avez déjà fait des présentations à d&#8217;autres conférences, à des JUG ou à des User Groups. Mettez aussi des liens vers votre blog, vers vos présentations par exemple. Si vous n&#8217;avez jamais rien présenté, pas de soucis. Vous pouvez le préciser. Il y a toujours une première fois. </p>
<p>Dans le résumé de présentation de votre sujet, pensez &laquo;&nbsp;programme télévision&nbsp;&raquo;. En 8 lignes, vous devez être capable de résumer ce que le conférencier va voir. Concentrez-vous sur le &laquo;&nbsp;Why&nbsp;&raquo;. Pourquoi une personne doit vous choisir et doit venir vous voir ? Si vous manquez d&#8217;inspiration, regardez les anciens sites de Devoxx pour trouver une idée. </p>
<p>Enfin pour terminer, préparez une photo de vous qui ne soit PAS une photo d&#8217;identité. Ouvrez un magazine comme Capital ou Management, vous ne verrez pas de photos d&#8217;identité. Ensuite ne prenez PAS de photo de vous à un mariage ou en vacances. Prenez un appareil photo numérique, placez-vous devant votre bureau dans votre open-space, croisez les bras, pensez à prendre un air inspiré, clic-clac c&#8217;est dans la boîte. Devoxx c&#8217;est un concert de Rock. Dans quelques années vous serez une rock-star. Et vous serez encore fier de cette photo où vous avez l&#8217;air jeune et avec plus de cheveux que maintenant.<br />
Bref, une photo quoi.</p>
<h3>Et ensuite ?</h3>
<p>Le comité se retrouve toutes les 3 semaines pour pouvoir s&#8217;assurer que l&#8217;ensemble des personnes est d&#8217;accord sur le contenu. La date butoir pour proposer un ou plusieurs sujets sera le 15 février 2012. Soit dans moins de 60 jours. Vous n&#8217;aurez pas un retour le 16 février au matin. Vous aurez cependant un retour dès que le comité aura assez de sujets pour construire un programme cohérent. Ensuite vous serez retenu et invité si vous faîtes une University, une Conférence ou un Tools in Action. Par contre pour les Quickies et les BOFs nous n&#8217;offriront pas de places cette année. </p>
<p>Si vous n&#8217;êtes pas retenu nous essayerons de vous donner plus de détails. Mais je ne vous garantie pas que vous aurez une explication détaillée de 25 lignes. S&#8217;il y a 150 propositions pour 50 places, vous comprenez qu&#8217;il est plus difficile d&#8217;être sélectionné. Cela arrive souvent, moi le premier je me fais bouler, surtout des conférences en Anglais. Voilà c&#8217;est la vie, au moins vous, vous essayez. Et ça, c&#8217;est important. </p>
<h3>Conclusion</h3>
<p>Devoxx France est une aventure à vivre. Si vous n&#8217;avez pas envie de présenter un sujet, pensez aux meilleurs speakers que vous avez vu lors d&#8217;une conférence ou d&#8217;une soirée de User-Groups. Et pensez à les contacter, à leur parler de Devoxx France et à les encourager à proposer un sujet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2011/12/19/comment-soumettre-un-sujet-pour-devoxx-france/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Le nouveau moteur de Template de Play 2.0</title>
		<link>http://www.touilleur-express.fr/2011/12/03/le-nouveau-moteur-de-template-de-play-2-0/</link>
		<comments>http://www.touilleur-express.fr/2011/12/03/le-nouveau-moteur-de-template-de-play-2-0/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 22:41:11 +0000</pubDate>
		<dc:creator>Nicolas Martignole</dc:creator>
				<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://www.touilleur-express.fr/?p=5989</guid>
		<description><![CDATA[Play 2.0 propose un nouveau moteur de template simple qui permet d&#8217;écrire des pages webs dynamiques. Directement inspiré de &#171;&#160;Razor&#160;&#187;, l&#8217;un des moteurs de rendu d&#8217;ASP.MVC, il est à la fois simple et puissant. Venez avec moi, on va comparer Play 1.x et Play 2.0 
Pour Play 2.0, lorsque Sadek Drobi et Guillaume Bort ont débuté leurs travaux avant l&#8217;été 2011, il y avait un challenge important : proposer un nouveau moteur de template.
Pour créer un moteur puissant :
- le langage doit être une composition de code HTML et de code ...]]></description>
			<content:encoded><![CDATA[<p><strong>Play 2.0 propose un nouveau moteur de template simple qui permet d&#8217;écrire des pages webs dynamiques. Directement inspiré de &laquo;&nbsp;Razor&nbsp;&raquo;, l&#8217;un des moteurs de rendu d&#8217;ASP.MVC, il est à la fois simple et puissant. Venez avec moi, on va comparer Play 1.x et Play 2.0 </strong></p>
<p>Pour Play 2.0, lorsque Sadek Drobi et Guillaume Bort ont débuté leurs travaux avant l&#8217;été 2011, il y avait un challenge important : proposer un nouveau moteur de template.</p>
<p>Pour créer un moteur puissant :</p>
<p>- le langage doit être une composition de code HTML et de code dynamique compact et facile à lire dans la vue. Une page sans complexité accidentelle. Idéalement, le développeur ne doit pas être coupé lorsqu&#8217;il tape son code en étant obligé d&#8217;ouvrir et de fermer des marqueurs comme dans Play 1.x. Pour cela, il faut que le parser soit assez puissant pour distinguer les blocs de code et les blocs HTML.<br />
- la syntaxe doit être facile et rapide à apprendre comme l&#8217;était Groovy dans Play 1.x. Contrairement à Grails, Play 1.x n&#8217;a pas beaucoup de possibilités du côté vue. Cette simplicité force à penser son code différemment du côté contrôleur/modèle. Il faut donc que les quelques tags soient faciles à comprendre pour un débutant.<br />
- on ne doit pas inventer un n-ieme langage de template ou de markup, ne pas se lancer dans l&#8217;écriture d&#8217;un langage propriétaire. Idéalement, s&#8217;appuyer sur un langage puissant capable d&#8217;utiliser des closures et de manipuler les collections facilement comme Groovy ou Scala.<br />
- le texte doit être éditable dans un éditeur de texte simple et fonctionner correctement dans un IDE<br />
- la syntaxe doit être aussi pensé pour que les IDE puissent proposer des plugins puissants, chose difficile avec Groovy dans Play 1.x<br />
- chaque page doit être testable de manière unitaire : la génération de la page HTML finale doit être quelque chose qui s&#8217;intègre dans le développement et que l&#8217;on peut appeler à partir d&#8217;un interpreteur SBT, sans devoir activer un controleur et mettre en marche le reste de Play 2.0.</p>
<p>Avec ceci en tête, Play 2.0 propose un moteur sympa. Le mieux pour t&#8217;en parler, c&#8217;est de te montrer du code.</p>
<h3>Play 1.x et Play 2.0 sont sur un bateau</h3>
<p>Imaginons que vous deviez coder une application pour vendre des Pizzas par Internet. Nous allons voir les différences entre l&#8217;ancien format de play et le nouveau. Je commence par une simple page avec un lien qui permet de charger une deuxième page.</p>
<p>Tout d&#8217;abord la version Play 1.x, on remarque que le texte du lien est encadré par une balise #{a} #{/a}. Cette balise n&#8217;est évidemment pas reconnue par votre éditeur HTML, sauf si vous utilisez le plugin Play pour IntelliJ.</p>
<pre class="brush:html">#{extends 'main.html' /}
#{set title:'Pizza' /}

  &lt;h1&gt;Bienvenue chez Pizza Service 1&lt;/h1&gt;

  #{a @Application.listPizzas()}Liste de nos produits#{/a}</pre>
<p>La version Play 2.0 reprend la même sémantique, mais comme vous pouvez le constater, cette fois l&#8217;écriture est plus fluide. Vous écrivez du HTML et vous utilisez simplement un marquer @ pour signaler au parser qu&#8217;il doit interpréter ce qui suit comme du code. Comment le parser sait que &laquo;&nbsp;vous avez terminé ?&nbsp;&raquo; et qu&#8217;il repasse au HTML ? C&#8217;est tout le génie de Sadek, qui a utilisé <a href="http://en.wikipedia.org/wiki/Parser_combinator">les parser combinators</a> de Scala pour écrire cette partie. J&#8217;ai commencé à utiliser ce moteur en juin 2011. Et vraiment, il est génial.</p>
<pre class="brush:html">
@main("Pizza") {

  &lt;h1&gt;Bienvenue chez Pizza Service 2&lt;/h1&gt;

  &lt;a href="@routes.Application.listPizzas"&gt;Liste de nos produits&lt;/a&gt;

}
</pre>
<h3>Liste des pizzas avec Play 1.x</h3>
<p>Voyons maintenant comment itérer une liste de Pizza et afficher ligne par ligne le nom de chaque pizza. Côté serveur, nous imaginons que je retourne une List&lt;Pizza&gt; pizzas :</p>
<pre class="brush:html">
#{extends 'main.html' /}
#{set title:'Pizza' /}
&lt;h1&gt;Liste de nos pizzas&lt;/h1&gt;

 #{list items:pizzas, as:'pizza'}
   ${pizza.name} &lt;br/&gt;
 #{/list}</pre>
<h3>Liste des pizzas avec Play 2.0</h3>
<p>Pour la version Play 2.0, tout d&#8217;abord nous notons que le template est plus fortement typé. En effet, il déclare ligne 1 qu&#8217;il demande une liste de pizzas. Ceci permet à Play de vous notifier lorsque vous vous êtes trompé, et que votre template ne pourra pas fonctionner. Le typage fort est un principe qui permet de rendre votre code plus robuste.</p>
<p>L&#8217;itération de la collection ici, est présenté &laquo;&nbsp;à la Java&nbsp;&raquo;. Il y a d&#8217;autres moyens d&#8217;itérer, mais pour l&#8217;essentiel notez que c&#8217;est légèrement plus simple que l&#8217;ancienne version.</p>
<pre class="brush:scala">
@(pizzas:List[Pizza])
@main("Pizza") {
&lt;h1&gt;Liste de nos pizzas&lt;/h1&gt;

  @for(pizza &lt;- pizzas) {
    @pizza.name &lt;br/&gt;
  }
}
</pre>
<p>Le Parser de template de Play 2.0 comprend la syntaxe de la boucle for, et sait aussi lorsque vous souhaitez simplement afficher du HTML, comme dans le cas de la balise &lt;BR/&gt; ci-dessus. Notez aussi le @pizza.name : pas de geName() qui viendrait perturber la lecture et qui rendrait le code plus lourd.</p>
<h3>Gestion des blocs conditionnels</h3>
<p>Voyons comment gérer maintenant le cas où la liste des Pizzas est vide. Il serait bien d&#8217;afficher un message d&#8217;information à l&#8217;utilisateur pour lui expliquer qu&#8217;il n&#8217;y a plus de Pizza non ?</p>
<p>Tout d&#8217;abord la version Play 1.x avec l&#8217;utilisation de la balise if et de la balise else :</p>
<pre class="brush:html">
#{extends 'main.html' /}
#{set title:'Pizza' /}
&lt;h1&gt;Liste des pizzas Play 1.0&lt;/h1&gt;
#{if pizzas}
  #{list items:pizzas, as:'pizza'}
      ${pizza.name}&lt;br/&gt;
  #{/list}
#{/if}
#{else}
  &lt;strong&gt;Désolé, nous n'avons pas de Pizzas en stock&lt;/strong&gt;
#{/else}
</pre>
<p>Ensuite la version Play 2.0, j&#8217;ai écrit du code &laquo;&nbsp;à la Java&nbsp;&raquo; pour vous montrer un exemple simple :</p>
<pre class="brush:scala">
@(pizzas:List[Pizza])
@main("Pizza") {
&lt;h1&gt;Liste de nos pizzas&lt;/h1&gt;
@if(pizzas.isEmpty){
  &lt;p&gt;Pas de pizzas en ce moment&lt;/p&gt;
}else{
  @for(pizza &lt;- pizzas) {
      @pizza.name&lt;br/&gt;
    }
  }
}</pre>
<p>Un regret ici : si je veux utiliser la fonction <code>map</code> de Scala sur <code>@pizzas</code> à la place de la <code>for-comprehension</code>, je ne peux pas utiliser <code>getOrElse</code> car je me retrouve avec un <code>scala.collection.mutable.Buffer</code>. Je poserai la question à Sadek à l&#8217;occasion. </p>
<h3>Page de modèle</h3>
<p>Lorsque vous créez une application web, il est important de pouvoir déclarer des modèles de page. Ceci vous évite de répéter dans chaque page des informations de mise en page commune comme le menu de navigation, le pied de page, etc.</p>
<p><strong>Play 1.x</strong></p>
<p>Avec Play 1.x la création d&#8217;un template est simple : il suffit de déclarer une page html et d&#8217;indiquer avec le tag doLayout que Play! doit insérer le code de votre page</p>
<pre class="brush:html">
(fichier main.html)

&lt;!DOCTYPE html&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;#{get 'title' /}&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        #{doLayout /}
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<p>Pour indiquer que vous souhaitez utiliser le template &laquo;&nbsp;main.html&nbsp;&raquo;, et que vous souhaitez passer &laquo;&nbsp;HELLO&nbsp;&raquo; pour le titre de la page,</p>
<pre class="brush:html">
#{extends 'main.html' /}
#{set title:'HELLO' /}

... reste de la page ...
</pre>
<p><strong>Play 2.0</strong></p>
<p>Le principe est aussi de déclarer un template. Ce template accepte un paramètre title de type String. Ici, si la page fille ne précise pas de titre, je mets une valeur par défaut (Pizza Play 2). Le tag @content se contente d&#8217;exécuter la fonction qui génère le contenu principal de la page. Chose intéressante : vous pouvez avoir plusieurs blocs différents, mettre de la logique dans le template, bref faire tout un tas de chose que Play 1.x ne sait pas faire.</p>
<pre class="brush:scala">
@(title: String = "Pizza Play 2")(content: Html)

&lt;!DOCTYPE html&gt;

&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;@title&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        @content
    &lt;/body&gt;
&lt;/html&gt;
</pre>
<h3>Conclusion</h3>
<p>Plus concis et aussi puissant, <a href="http://www.playframework.org/2.0">Play 2.0</a> ouvre la porte du fonctionnel et du typage fort. Dans des templates Webs, cela permet de renforcer la qualité du code. Par ailleurs, chaque page est en fait compilé vers du Scala, puis du byte-code java. Ceci permet d&#8217;exécuter les pages comme de simples fonctions. Vous pouvez donc faire des tests unitaires sur une page en mockant la collection de Pizza afin de vérifier le comportement de la page. Oui tu as bien lu : tu peux faire un test sans avoir besoin de controleur et d&#8217;une base de données derrière. </p>
<p>Le bon père de famille devrait aussi être rassuré car le support de Servlet 3.0 est prévu dans Play 2.0. D&#8217;ici à ce que Play vienne aussi chatouiller le monde Java EE Web, on est plus très loin. Il y a tout un tas de trucs sympathiques comme le support de OAuth 1.0 et 2.0, la possibilité d&#8217;invoquer un deuxième serveur Play à partir du premier via Akka&#8230; bref pas mal de choses intéressantes.</p>
<p>Si vous vous posez la question d&#8217;utiliser Play 2.0 pour &laquo;&nbsp;un projet de la vraie vie&nbsp;&raquo; c&#8217;est encore un peu tôt. Personnellement j&#8217;ai travaillé du mois de mai à novembre sur Play 1.x avec Scala et le moteur que vous venez de voir : il est vraiment très simple et puissant. Vous avez sous le pied toute la puissance de Scala, surtout lorsqu&#8217;il s&#8217;agit de manipuler des collections, ou de faire des appels ré-entrant vers le controleur. Pour Play 2.0 il faudra attendre la sortie d&#8217;une version stable, prévue pour le printemps prochain. D&#8217;ici là on a déjà de quoi s&#8217;amuser cependant.</p>
<p>Je suis convaincu que quelques uns d&#8217;entre vous vont se mettre à faire du Scala grâce à Play 2.0. Souvenez-vous de ce petit article dans quelques mois&#8230; On en reparlera. </p>
<h3>Référence :</h3>
<p>Cette article est inspiré de l&#8217;article &laquo;&nbsp;<a href="http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx">Introducing Razor</a>&nbsp;&raquo; écrit par <a href="https://twitter.com/#!/scottgu">Scott Guthrie</a></p>
<p><a href="http://www.asp.net/mvc/mvc3#BM_TheRazorViewEngine">The Razor view engine</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.touilleur-express.fr/2011/12/03/le-nouveau-moteur-de-template-de-play-2-0/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

