<?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>romain.getBlog( ); &#187; valtech</title>
	<atom:link href="http://linsolas.free.fr/wordpress/index.php/category/valtech/feed/" rel="self" type="application/rss+xml" />
	<link>http://linsolas.free.fr/wordpress</link>
	<description></description>
	<lastBuildDate>Wed, 23 Jan 2013 21:29:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Etre conférencier à Devoxx France&#8230;</title>
		<link>http://linsolas.free.fr/wordpress/index.php/2012/05/etre-conferencier-a-devoxx-france/</link>
		<comments>http://linsolas.free.fr/wordpress/index.php/2012/05/etre-conferencier-a-devoxx-france/#comments</comments>
		<pubDate>Tue, 01 May 2012 12:55:05 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[conférence]]></category>
		<category><![CDATA[valtech]]></category>

		<guid isPermaLink="false">http://linsolas.free.fr/wordpress/?p=243</guid>
		<description><![CDATA[Avant toute chose, je tiens à préciser que l&#8217;idée de ce post est honteusement copiée sur un post de Gildas Cuisinier parlant de sa vision de Devoxx en tant que conférencier. Devoxx, je connaissais déjà depuis à peu près 3 ans, mais de façon indirecte. Hélas, je n&#8217;avais jamais eu la chance de me rendre [...]]]></description>
			<content:encoded><![CDATA[<p>Avant toute chose, je tiens à préciser que l&#8217;idée de ce post est honteusement copiée sur un <a href="http://www.gcuisinier.net/2012/04/30/devoxx-france-cote-speaker/" onclick="pageTracker._trackPageview('/outgoing/www.gcuisinier.net/2012/04/30/devoxx-france-cote-speaker/?referer=');">post de Gildas Cuisinier</a> parlant de sa vision de Devoxx en tant que conférencier.</p>
<div id="attachment_257" class="wp-caption aligncenter" style="width: 316px"><a href="http://linsolas.free.fr/wordpress/wp-content/uploads/Badge-Devoxx.jpg"><img src="http://linsolas.free.fr/wordpress/wp-content/uploads/Badge-Devoxx.jpg" alt="" title="Badge Devoxx" width="306" height="408" class="size-full wp-image-257" /></a><p class="wp-caption-text">C'est'y pas collector ?</p></div>
<p>Devoxx, je connaissais déjà depuis à peu près 3 ans, mais de façon indirecte. Hélas, je n&#8217;avais jamais eu la chance de me rendre à Anvers pour assister à LA conférence des développeurs Java. Quand la conférence Devoxx France a été annoncée lors du Devoxx World en fin 2011, je me suis dit que je devais y être. Il ne pourrait pas en être autrement !<br />
Pour m&#8217;y rendre, j&#8217;avais donc 4 possibilités :</p>
<ol>
<li>Devenir conférencier, en proposant un (ou plusieurs) sujet(s) ;</li>
<li>Obtenir une place via le site <a href="http://www.developpez.com" onclick="pageTracker._trackPageview('/outgoing/www.developpez.com?referer=');">Developpez.com</a>, pour lequel je suis rédacteur et modérateur ;</li>
<li>Me faire payer ma place par ma société, si possible par le biais du DIF (Droit Individuel à la Formation) ;</li>
<li>M&#8217;offrir ma place, et poser 3 jours de congés pour m&#8217;y rendre.</li>
</ol>
<p>L&#8217;aventure commence&#8230;<br />
<span id="more-243"></span></p>
<h3>L&#8217;avant CFP</h2>
<p>Début janvier, je commence donc le forcing auprès de ma hierarchie, pour privilégier la solution #3. Visiblement, ça a l&#8217;air plutôt compliqué, mais pas impossible.<br />
Les semaines passent, et nous voici quasiment à la mi-février, date limite pour la soumission des conférences (CFP, ou <em>Call For Papers</em>). Là, je me dis que je m&#8217;en voudrais de ne pas avoir tenté ma chance, je décide donc de me lancer. Bien entendu, j&#8217;avais déjà réfléchit depuis plusieurs semaines à des sujets que je pourrais présenter. J&#8217;avais plus ou moins exclu mon domaine de prédilection, à savoir ce qui touche à l&#8217;usine logicielle (intégration continue, qualité logicielle avec Sonar, etc.) car je savais bien que d&#8217;autres personnes mieux placées que moi auraient plus de chances d&#8217;être sélectionnées. De plus, que dire de vraiment intéressant sur le sujet, sachant que l&#8217;audience d&#8217;un Devoxx est une audience de qualité, avec des gens très compétants qui connaissent très bien leur affaire ?</p>
<p>Bref, j&#8217;opte pour un sujet qui, à mon avis, peut avoir son attrait : l&#8217;industrialisation des tests JavaScript. J&#8217;avoue que je ne suis un grand expert dans le domaine, mais j&#8217;ai suffisament de connaissances pour en parler. Le temps presse avant la fin du CFP, il faut donc soumettre l&#8217;<em>abstract</em> rapidement, même si le contenu n&#8217;est pas encore tout à fait clair. Connaissant l&#8217;esprit et le ton décalés de Devoxx, je choisis un titre un peu fun : <strong>Chouchoutez votre code JavaScript</strong>. J&#8217;envoie donc ma proposition dans la catégorie <em>Tools In Action</em>. Cette catégorie est parfaite pour moi : une durée de 30 minutes, ce qui n&#8217;est ni trop court ni trop long, et un angle démo très prononcé. De plus, l&#8217;entrée à la conférence est offerte pour les speakers des <em>Tools In Action</em>, ce qui ne gâche rien.</p>
<p>Pour le fun, je soumets une deuxième proposition, cette fois-ci sous forme de <em>Quickie</em> (présentation rapide de 15 minutes) : <strong>TestNG, parce que vos tests le valent bien</strong>. J&#8217;ai soumis ce <em>Quickie</em> pour 2 raisons essentiellement :</p>
<ul>
<li>Parler de <a href="http://testng.org/doc/index.html" onclick="pageTracker._trackPageview('/outgoing/testng.org/doc/index.html?referer=');">TestNG</a>, un outil trop méconnu, loin derrière le fameux JUnit, et qui ne manque pourtant pas de qualités ;</li>
<li>Avoir une chance de plus d&#8217;être conférencier, au cas-où mon <em>Tools In Action</em> soit refusé.</li>
</ul>
<p>Voilà, les soumissons sont closes, l&#8217;équipe de Devoxx, en charge de faire le tri parmi tous les sujets, fait déjà une première constatation : c&#8217;est un carton plein ! Pas moins de 464 soumissions ont été faites ! Waouh, c&#8217;est impressionnant. C&#8217;est aussi beaucoup de stress, car on se dit que cela réduit les chances d&#8217;être choisi&#8230;</p>
<h3>En attendant Devoxx France</h3>
<div id="attachment_258" class="wp-caption aligncenter" style="width: 321px"><a href="http://linsolas.free.fr/wordpress/wp-content/uploads/Entree-Devoxx.jpg"><img src="http://linsolas.free.fr/wordpress/wp-content/uploads/Entree-Devoxx.jpg" alt="" title="Entree Devoxx" width="311" height="408" class="size-full wp-image-258" /></a><p class="wp-caption-text">Devoxx, ça arrive à grands pas !</p></div>
<p>L&#8217;équipe de Devoxx travaille vite, et le 16 février au matin, je reçois un mail : <em>Your DevoxxFrance 2012 presentation was approved</em>, qui commence par ces quelques mots : <em>We&#8217;re excited to inform you that your &laquo;&nbsp;Chouchoutez votre code JavaScript&nbsp;&raquo; Tools in Action presentation has been accepted for DevoxxFrance 2012</em>. Ce mail a tout simplement illuminé ma journée, ma semaine. C&#8217;était inespéré, me voilà donc conférencier pour Devoxx !</p>
<p>Ma session <em>Quickie</em> sur TestNG sera également retenue, d&#8217;abord en backup, puis officiellement. Je n&#8217;imaginais pas être voir l&#8217;une de mes soumissions acceptées, mais alors les deux ! Quelle joie&#8230; mais aussi quel défi. Je me rends finalement compte que ma chance a été de taper dans les catégories moins plébiscitée par les autres personnes. En effet, du côté des conférences (de 55 minutes), il me semble que seuls 17% des soumissions ont été acceptées !</p>
<p>Bon, ce n&#8217;est pas tout ça, mais il faut maintenant définir concrètement le contenu de mes deux présentations. Du côté de TestNG, je sais plus ou moins de quoi je parlerais, et comme ce sera avant tout des slides, je mets leur préparation de côté.</p>
<p>Pour <strong>Chouchoutez votre code JavaScript</strong>, j&#8217;ai déjà une ligne directrice assez claire, mais les détails restent flous : je commencerais à travailler avec <a href="http://pivotal.github.com/jasmine/" onclick="pageTracker._trackPageview('/outgoing/pivotal.github.com/jasmine/?referer=');">Jasmine</a>, un framework de tests (orienté BDD) pour du code JavaScript. Puis, je passerais sur une analyse avec l&#8217;outil <a href="http://www.sonarsource.com/" onclick="pageTracker._trackPageview('/outgoing/www.sonarsource.com/?referer=');">Sonar</a>, et je finirais par incorporer le tout dans un serveur d&#8217;intégration continue (<a href="http://jenkins-ci.org/" onclick="pageTracker._trackPageview('/outgoing/jenkins-ci.org/?referer=');">Jenkins</a> dans mon cas). Mes multiples essais sur ma machine donnent de bons résultats, mais il y a hélas un manque : avec tout ceci, je n&#8217;obtiens pas la couverture du code par les tests, chose aisée lorsque l&#8217;on travaille avec du code Java.<br />
Et puis début mars, c&#8217;est la délivrance ! Sur la <em>mailing list</em> de Sonar, je vois un message annonçant l&#8217;arrivée de la version 0.4 du <a href="http://docs.codehaus.org/display/SONAR/JavaScript+Plugin" onclick="pageTracker._trackPageview('/outgoing/docs.codehaus.org/display/SONAR/JavaScript+Plugin?referer=');">plugin JavaScript pour Sonar</a>, avec en particulier le support de la couverture de code par <a href="http://code.google.com/p/js-test-driver/" onclick="pageTracker._trackPageview('/outgoing/code.google.com/p/js-test-driver/?referer=');">js-test-driver</a>. Je m&#8217;intéresse donc à cette librairie, et découvre avec joie que Jasmine propose un adaptateur pour js-test-driver.<br />
Il ne me faudra pas beaucoup de temps pour faire marcher le tout ensemble, et obtenir ce que je voulais. Je suis sauvé <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  !</p>
<p>Je m&#8217;occupe dès lors de mon <em>Quickie</em> sur TestNG. Les choses sont plus faciles, mais je m&#8217;aperçois que j&#8217;ai quelques années de retard <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  En effet, TestNG est une excellente librairie de tests pour Java, qui offre depuis 2004 des fonctionnalités avancées que JUnit ne propose pas, ou alors seulement depuis 1 an ou 2. Je pense aux tests groupes de tests, à la dépendance entre tests, aux <em>listeners</em>, aux tests paramétrés, etc. Mais bon, je vais faire avec, et montrer que même avec les avancées de JUnit, TestNG reste une alternative qui a tout son sens, et qui dispose toujours de beaucoup d&#8217;atouts !</p>
<p><a href="http://linsolas.free.fr/wordpress/wp-content/uploads/producticon_powerpoint.png"><img src="http://linsolas.free.fr/wordpress/wp-content/uploads/producticon_powerpoint.png" alt="" title="producticon_powerpoint" width="54" height="65" class="alignleft size-full wp-image-262" /></a>L&#8217;équipe de Devoxx fournit les templates pour Open Office, Microsoft Office et Apple Keynote. Etant sur Mac, j&#8217;avais tout d&#8217;abord opté pour Open Office. Après moults échecs dans mes tentatives de faire des slides à peu près jolis, je me suis dit que j&#8217;allais les faire sur un PC avec Office, et que je les jouerais avec Open Office sur mon Mac. Pas une très grande idée. Puis, j&#8217;ai décidé d&#8217;installer la version d&#8217;évaluation d&#8217;Office pour Mac, et je dois dire que je suis très rapidement tombé sous le charme.</p>
<p>Les choses vont donc bon train, mais rien ne vaut une vraie répétition. J&#8217;organise donc une répétition sur mon lieu de travail pour une poignée de collègues, une semaine avant le début de Devoxx France. Compte tenu que je vais emporter mon Mac perso, je n&#8217;aurais donc aucun réseau. La veille de cette répétition, je décide donc de la jouer chez moi, tout seul, mais en coupant mon wifi ! Grand bien m&#8217;en a pris ! Maven ne semble pas avoir apprécié sa déconnexion, et c&#8217;est une riche idée que j&#8217;ai eue de le tester en mode déconnecté.</p>
<p>Une chose à ce propos m&#8217;a un peu interpellé : ma démonstration sur le code JavaScript commence par la création d&#8217;un squelette de projet via un archetype JavaScript (<code>de.akquinet.javascript.archetypes:javascript-quickstart</code> pour être précis). Or, en mode déconnecté, la commande <code>mvn archetype:generate</code> ne me liste qu&#8217;une cinquantaine de choix (contre 578 une fois le wifi réactivé). Il m&#8217;a été impossible de trouver une option pour que Maven (ou le plugin Archetype) télécharge de lui-même le catalogue des archetypes sur le repository officiel de Maven. J&#8217;ai dû copié le <em>archetype-catalog.xml</em> manuellement pour qu&#8217;il reconnaisse bien l&#8217;ensemble des archetypes, même en mode déconnecté. Si vous avez une idée du pourquoi, n&#8217;hésitez pas à m&#8217;en faire part !!</p>
<p>Bon, à quelques petits détails près, ma répétition est appréciée, et en plus, j&#8217;ai réussi à tenir mes timings. Ca s&#8217;annonce plutôt pas mal&#8230;</p>
<p>Dernier petit stress : le week-end précédant Devoxx, Nicolas Martignole de l&#8217;équipe d&#8217;organisation, demande aux speakers de bien respecter le format &laquo;&nbsp;officiel&nbsp;&raquo; des slides, à savoir 1280&#215;720, en particulier pour les conférences filmées (à savoir toutes, sauf les <em>Quickies</em>). Et dire que j&#8217;avais tout préparé en 1024&#215;768 (la faute à mon Mac qui ne permet pas l&#8217;affichage en 16:9). Donc par souci de respect du protocole, me voici à copier ma présentation du format 1024&#215;768 vers 1280&#215;720. J&#8217;étais assez content que ma présentation soit surtout basée sur de la démonstration, et que du coup je n&#8217;avais qu&#8217;assez peu de slides (19 quand même).</p>
<h3>Les jours J !</h3>
<p>Mon <em>Tools In Action</em> sur JavaScript a lieu le premier jour de Devoxx France, à savoir le mercredi 18 avril. Je passe en fin d&#8217;après-midi, à 17h40. Tout pourrait aller à merveille, s&#8217;il n&#8217;y avait pas un petit souci d&#8217;ordre médical : je souffrais alors d&#8217;une angine ! 39,5 la veile au soir, j&#8217;avoue que je n&#8217;étais pas en grande forme. C&#8217;est donc à grand renfort de paracétamol (un traitement plus adapté suivra le lendemain, après avoir vu ma guérisseuse) que j&#8217;assiste aux premières conférences. L&#8217;après-midi, je le passerais à peaufiner ma présentation (c&#8217;est d&#8217;ailleurs 30 minutes avant ma présentation que j&#8217;ai rajouté les petits Godzilla en bas de mes slides, pour indiquer l&#8217;avancée dans ma présentation), à discuter avec d&#8217;autres personnes, et à assister à Code Story.<br />
Puis, vint mon tour. Chose assez étrange : je n&#8217;ai pas (ou si peu) stressé avant, pensant que je stresserais comme un fou le jour J. Finalement, rien de tout cela, j&#8217;étais juste excité &#8211; dans le bon sens du terme &#8211; d&#8217;entrer sur scène ! Et pourtant, la salle, d&#8217;une capacité de plus de 200 personnes, était quasiment pleine !</p>
<div id="attachment_241" class="wp-caption aligncenter" style="width: 810px"><a href="http://linsolas.free.fr/wordpress/wp-content/uploads/IMG_1876-web.jpg"><img src="http://linsolas.free.fr/wordpress/wp-content/uploads/IMG_1876-web.jpg" alt="" title="IMG_1876-web" width="800" height="533" class="size-full wp-image-241" /></a><p class="wp-caption-text">Oui, il y avait du monde !</p></div>
<div id="attachment_242" class="wp-caption aligncenter" style="width: 810px"><a href="http://linsolas.free.fr/wordpress/wp-content/uploads/IMG_1880-web.jpg"><img src="http://linsolas.free.fr/wordpress/wp-content/uploads/IMG_1880-web.jpg" alt="" title="IMG_1880-web" width="800" height="533" class="size-full wp-image-242" /></a><p class="wp-caption-text">La preuve que c'était bien moi !</p></div>
<p>Je commence ma présentation, et à peine 3 minutes après le début de celle-ci, je m&#8217;&nbsp;&raquo;offre&nbsp;&raquo; un bel effet démo ! Après avoir créer mon projet via l&#8217;archetype Maven, je m&#8217;en vais l&#8217;importer dans Eclipse&#8230; et là, c&#8217;est le drame ! Je commence par me tromper dans le chemin exact contenant mon projet, puis je me trompe dans la fenêtre de création de projets&#8230; bref, je commençais à paniquer (intérieurement seulement). Fort heureusement, le problème finit très vite par se régler, et le reste de la démonstration se passe à merveille ! Chose inattendue : au moment où j&#8217;obtiens la couverture de mon code JavaScript par mes tests sur Sonar, l&#8217;audience applaudit <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Ca fait chaud au coeur tout ça ! Je termine ma présentation dans les temps, j&#8217;ai même 4 minutes de questions, assez nombreuses d&#8217;ailleurs.</p>
<div id="attachment_244" class="wp-caption aligncenter" style="width: 370px"><a href="http://linsolas.free.fr/wordpress/wp-content/uploads/photo.png"><img src="http://linsolas.free.fr/wordpress/wp-content/uploads/photo.png" alt="" title="avis-devoxx-sur-twitter" width="360" height="540" class="size-full wp-image-244" /></a><p class="wp-caption-text">Visiblement, les retours sont bons, sur Twitter !</p></div>
<p>Le soir, un diner réservé aux speakers est prévu, je comptais y aller, mais j&#8217;ai préféré renoncé, compte tenu de mon état de santé. Ce mercredi, j&#8217;ai quitté Devoxx seulement quelques minutes après ma présentation, avec une énorme satisfaction. Pour moi, la mission était accomplie !</p>
<p>Le jeudi sera plus calme pour moi, car c&#8217;est la seule journée où je ne présente rien.</p>
<p>Le vendredi, mon <em>Quickie</em> passe à 12:35. La salle était, cette fois-ci, presque vide. Mais c&#8217;était à prévoir, les <em>Quickies</em> (surtout les premiers) étant planifiés en plein durant la pause déjeuner. J&#8217;ai fait ma présentation de TestNG sans grand souci, hormis que j&#8217;ai mis exactement 15 minutes pour la faire, alors que je voulais me réserver 2 / 3 minutes pour faire quelques démonstrations sous Eclipse. Tant pis, mais ce n&#8217;est pas grave&#8230;</p>
<h3>Vivement Devoxx World et Devoxx France 2013</h3>
<p>Finalement, Devoxx fut une conférence de très grande qualité, et faire partie des conférenciers fût pour moi une merveilleuse aventure !<br />
Je remercie chaleureusement l&#8217;équipe de sélection de Devoxx pour m&#8217;avoir fait confiance, et avoir sélectionné mes deux présentations. Être conférencier Devoxx, c&#8217;est une énorme fierté en ce qui me concerne, et j&#8217;espère que ce sera partie remise l&#8217;année prochaine. J&#8217;espère d&#8217;ailleurs pouvoir proposer une vraie conférence (d&#8217;une heure), et pourquoi pas avec une autre personne&#8230; Mais d&#8217;ici-là, beaucoup de choses se seront passées !</p>
<p>Mille mercis aussi à <a href="http://cfalguiere.wordpress.com/" onclick="pageTracker._trackPageview('/outgoing/cfalguiere.wordpress.com/?referer=');">Claude Falguière</a> pour ses photos de Devoxx, ce qui me permet d&#8217;avoir un sacré souvenir de ma présentation (en attendant la vidéo sur Parleys <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) !</p>
<a href="javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://linsolas.free.fr/wordpress/wp-content/plugins/wp-piclens/mrss.php?id=243'});">Start Slide Show with PicLens Lite <img src="http://linsolas.free.fr/wordpress/wp-content/plugins/wp-piclens/PicLensButton.png" alt="PicLens" width="16" height="12" border="0" align="top"></a>]]></content:encoded>
			<wfw:commentRss>http://linsolas.free.fr/wordpress/index.php/2012/05/etre-conferencier-a-devoxx-france/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Première demi-journée Valtech TechDay</title>
		<link>http://linsolas.free.fr/wordpress/index.php/2010/10/premiere-demi-journee-valtech-techday/</link>
		<comments>http://linsolas.free.fr/wordpress/index.php/2010/10/premiere-demi-journee-valtech-techday/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 19:52:19 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[conférence]]></category>
		<category><![CDATA[news]]></category>
		<category><![CDATA[valtech]]></category>

		<guid isPermaLink="false">http://linsolas.free.fr/wordpress/?p=136</guid>
		<description><![CDATA[Valtech va organiser demain 21 octobre dans ses nouveaux locaux la première demi-journée technique pour ses consultants. Le programme est le suivant : 13h30 &#8211; 14h20 : NoSQL, tour d&#8217;horizon par Claude Falguière et Grégory Paul 14h30 &#8211; 15h05 : Migration top chrono d&#8217;une application JEE sur le Cloud Amazon par Fréderic Sauzet et Hervé Desaunois 14h10 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.valtech.fr/fr/index.html" onclick="pageTracker._trackPageview('/outgoing/www.valtech.fr/fr/index.html?referer=');">Valtech</a> va organiser demain 21 octobre dans ses nouveaux locaux la première demi-journée technique pour ses consultants. Le programme est le suivant :</p>
<ul>
<li>13h30 &#8211; 14h20 : <em>NoSQL, tour d&#8217;horizon</em> par Claude Falguière et Grégory Paul</li>
<li>14h30 &#8211; 15h05 : <em>Migration top chrono d&#8217;une application JEE sur le Cloud Amazon</em> par Fréderic Sauzet et Hervé Desaunois</li>
<li>14h10 &#8211; 15h45 : <em>Migration top chrono d&#8217;une application .NET sur le Cloud Azure</em> par Lionel Molas et Cyril Aigoin</li>
<li>16h00 &#8211; 17h30 : <em>Ateliers de réflexion sur le thème de la mobilité</em></li>
<li>17h50 &#8211; 19h50 : <em>Coding Dojo Android, Windows Phone 7 et iPhone</em> animés par Pascal Ognibene, Philippe Miossec et Sylvain Rousseau</li>
</ul>
<p>Demain s&#8217;annonce donc être une journée passionnante et très instructive !</p>
<p>Suivez en direct <a href="http://twitter.com/romaintaz" onclick="pageTracker._trackPageview('/outgoing/twitter.com/romaintaz?referer=');">mes tweets</a> ainsi que ceux de <a href="http://twitter.com/ValtechTechno" onclick="pageTracker._trackPageview('/outgoing/twitter.com/ValtechTechno?referer=');">@ValtechTechno</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://linsolas.free.fr/wordpress/index.php/2010/10/premiere-demi-journee-valtech-techday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cours du soir &#8211; Git</title>
		<link>http://linsolas.free.fr/wordpress/index.php/2010/04/cours-du-soir-git/</link>
		<comments>http://linsolas.free.fr/wordpress/index.php/2010/04/cours-du-soir-git/#comments</comments>
		<pubDate>Thu, 15 Apr 2010 21:44:58 +0000</pubDate>
		<dc:creator>Romain</dc:creator>
				<category><![CDATA[git]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[valtech]]></category>

		<guid isPermaLink="false">http://linsolas.free.fr/wordpress/?p=122</guid>
		<description><![CDATA[David Gageot (blog ; twitter) nous a fait l&#8217;honneur de revenir dans ses anciens locaux, chez nous à Valtech, afin de nous faire une présentation sur Git. Cette présentation, il l&#8217;avait déjà jouée à Vidal il y a quelques jours, et devait faire de nombreux heureux lors de prochains JUG (Ch&#8217;tiJUG, puis Paris JUG mi [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://git-scm.com/images/header.gif" alt="Git" /></p>
<div id="_mcePaste">David Gageot (<a href="http://blog.javabien.net" onclick="pageTracker._trackPageview('/outgoing/blog.javabien.net?referer=');">blog</a> ; <a href="http://twitter.com/dgageot" onclick="pageTracker._trackPageview('/outgoing/twitter.com/dgageot?referer=');">twitter</a>) nous a fait l&#8217;honneur de revenir dans ses anciens locaux, chez nous à <a href="http://www.valtech.fr" onclick="pageTracker._trackPageview('/outgoing/www.valtech.fr?referer=');">Valtech</a>, afin de nous faire une présentation sur <a href="http://git-scm.com/" onclick="pageTracker._trackPageview('/outgoing/git-scm.com/?referer=');">Git</a>. Cette présentation, il l&#8217;avait déjà jouée à Vidal il y a quelques jours, et devait faire de nombreux heureux lors de prochains JUG (Ch&#8217;tiJUG, puis Paris JUG mi mai).</div>
<p><br/></p>
<div>Nous étions une dizaine à écouter l&#8217;enthousiasme de David sur cet outil, qu&#8217;il pratique depuis presque 2 ans au sein de la socité dont il est le CTO, <a href="https://www.algodeal.com/" onclick="pageTracker._trackPageview('/outgoing/www.algodeal.com/?referer=');">Algodeal</a>.</div>
<div id="_mcePaste">Avant d&#8217;attaquer la présentation, un rapide tour de table est réalisé. Qui utilise quel outil pour gérer ses sources, et qui connait et utilise Git ? La plupart d&#8217;entre nous utilisons Subversion, et nous connaissions presque tous Git, sans pour autant l&#8217;avoir déjà utilisé.</div>
<p><br/></p>
<div id="_mcePaste">Puis, pour capter plus encore notre attention (comme si cela était nécessaire !), David commence en nous montrant un cas où Git lui a épargné bien des tracas, et sans aucun doute, de très longues heures de recherche. Sur son projet, la commande &laquo;&nbsp;<em>mvn eclipse:eclipse</em>&nbsp;&raquo; ne fonctionne plus (c&#8217;est le drame). Pour information, cette commande analyse un projet configuré sous Maven, et en établit les fichiers de configuration d&#8217;Eclipse (les <em>.project</em> et <em>.classpath</em> en particulier) afin de l&#8217;intégrer au sein de l&#8217;IDE. Donc cette commande ne fonctionne plus. Que faire pour comprendre pourquoi, et savoir quand le problème est apparu.</div>
<p><br/></p>
<div id="_mcePaste">David nous sort son premier joker, sous le nom de &laquo;&nbsp;<em>git bisect</em>&laquo;&nbsp;. Il faut savoir que Git est en réalité est constitué d&#8217;une batterie d&#8217;outils (un peu comme Maven avec sa pléthore de plugins, à l&#8217;exception que Git ne télécharge jamais tout Internet pour travailler <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ). &laquo;&nbsp;<em>bisect</em>&nbsp;&raquo; est l&#8217;un d&#8217;entre eux. Donc David sait que sur une version un peu ancienne, tagguée VERSION1.1.3, la commande Maven fonctionnait bien, mais plus maintenant. Il va donc demander à Git de trouver quand, dans cet intervalle de temps séparant la version 1.1.3 à aujourd&#8217;hui, la regression est apparue. Il lance donc la commande suivante :</div>
<blockquote>
<div id="_mcePaste">git bisect start HEAD VERSION1.1.3</div>
</blockquote>
<div>Grosso-modo, cela indique que l&#8217;on va lancer l&#8217;analyse bisect entre le HEAD (code courant) et la version tagguée 1.1.3.</div>
<div id="_mcePaste">Ensuite, on va exécuter la commande suivante :</div>
<blockquote>
<div id="_mcePaste">git bisect run sh -c &laquo;&nbsp;mvn eclipse:eclipse &gt; /dev/null&nbsp;&raquo;</div>
</blockquote>
<div>On indique à Git d&#8217;éxecuter la commande SH &laquo;&nbsp;mvn eclipse:eclipse &gt; /dev/null&nbsp;&raquo; (on redirige vers le /dev/null pour éviter trop de logs). Là, Git nous indique qu&#8217;entre la version 1.1.3 et le HEAD, il y avait environ 140 révisions du code. Git bisect estime à 7 le nombre maximum de tentatives dont il aura besoin pour trouver le commit fautif (utilisation du principe de dichotomie). Après ces tests, notre outil finit par détecter le commit ayant introduit cette erreur. Voici les logs de git bisect :</div>
<blockquote>
<div>cat ../maveneclipse.sh</div>
<div id="_mcePaste">#!/bin/sh</div>
<div id="_mcePaste">mvn eclipse:eclipse &gt; /dev/null</div>
<div id="_mcePaste">git bisect start HEAD VERSION1.1.3</div>
<div id="_mcePaste">git run ../maveneclipse.sh</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 140 revisions left to test after this (roughly 7 steps)</div>
<div id="_mcePaste">[49be0b426f3469b154d66179ecdbaad2128b872e] Now formats Javadocs</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 70 revisions left to test after this (roughly 6 steps)</div>
<div id="_mcePaste">[18a0eddab7a745c9cec538b9184efb25499e06c1] More optimisations</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 37 revisions left to test after this (roughly 5 steps)</div>
<div id="_mcePaste">[051bccc6252b23be6c9074545986cd057bcc69d8] Merge branch &#8216;master&#8217;</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 15 revisions left to test after this (roughly 4 steps)</div>
<div id="_mcePaste">[1183351cf1976571138c80dcf70e702dc3575177] Merge branch &#8216;master&#8217;</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 7 revisions left to test after this (roughly 3 steps)</div>
<div id="_mcePaste">[a586dcbddca57d93e00ed7ebaeb02239bfdc515c] Merge branch &#8216;master&#8217;</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 3 revisions left to test after this (roughly 2 steps)</div>
<div id="_mcePaste">[b4938d0a2aacabb4e71c2c08cab5e63ce12efbce] Merge branch &#8216;master&#8217;</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 1 revision left to test after this (roughly 1 step)</div>
<div id="_mcePaste">[6536952979f24786db146217b81f7d612bede425] Before we fix the build</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">Bisecting: 0 revisions left to test after this (roughly 0 steps)</div>
<div id="_mcePaste">[56750bb15630dbf1af1976ad0e7161c7ed696e69] Force Maven3</div>
<div id="_mcePaste">running ../maveneclipse.sh</div>
<div id="_mcePaste">56750bb15630dbf1af1976ad0e7161c7ed696e69 is the first bad commit</div>
<div id="_mcePaste">commit 56750bb15630dbf1af1976ad0e7161c7ed696e69</div>
<div id="_mcePaste">Author: David Gageot &lt;gageot&gt;</div>
<div id="_mcePaste">Date:   Wed Mar 17 18:20:29 2010 +0100</div>
<div id="_mcePaste">Enforce Maven3</div>
</blockquote>
<div id="_mcePaste">On le voit à la toute fin, c&#8217;est un commit réalisé par David le 17 mars, avec pour commentaire &laquo;&nbsp;Enforce Maven 3&#8243; qui a introduit ce problème.</div>
<p><br/></p>
<div id="_mcePaste">(<a href="http://blog.javabien.net/2010/03/23/git-bisect-might-save-your-day" onclick="pageTracker._trackPageview('/outgoing/blog.javabien.net/2010/03/23/git-bisect-might-save-your-day?referer=');">post du blog de David</a> relatant la traque de ce problème)</div>
<p><br/></p>
<div>Voilà comment, en quelques secondes, l&#8217;outil Git bisect a permis à David de comprendre où était le problème, et comment du coup le résoudre (non, il n&#8217;existe pas encore d&#8217;outil corrigeant automatiquement les bugs dans Git <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ).</div>
<p><br/></p>
<div id="_mcePaste">Comme introduction, je pense que David a réussi son coup ! Nous sommes déjà sous le charme&#8230;</div>
<div>S&#8217;ensuit alors une présentation des aspects plus basiques de Git. Comme créer un repository, explications des commandes classiques (clone, commit, pull, push, etc.). Là dessus, je pense que j&#8217;écrirais un nouveau post un peu plus tard, une fois que je commencerais à mieux maitriser l&#8217;outil, et ses particularités. Je voudrais éviter de dire trop de bêtises pour l&#8217;instant !</div>
<p><br/></p>
<div>Mais dans les grandes lignes, David a bien insisté sur la simplicité de l&#8217;outil &#8211; bien qu&#8217;il soit assez déroutant aux premiers abords &#8211; mais également sur sa puissance et sa robustesse. Il nous a indiqué n&#8217;avoir jamais eu a pesté contre l&#8217;outil en 2 ans d&#8217;utilisation ! Connaissant David, je peux vous assurer que si un outil ne lui plaît pas, il ne se gênera pas pour qu&#8217;on le sache <img src='http://linsolas.free.fr/wordpress/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  L&#8217;une des grandes forces de Git, c&#8217;est son intelligence à comprendre les structures des projets, de s&#8217;adapter facilement et de façon non intrusive aux différentes modifications du code, et à gérer d&#8217;une manière presque magique tous les merges.</div>
<p><br/></p>
<div>Un exemple qui me parle tout à fait est celui-ci :</div>
<div>Sa société s&#8217;appelait l&#8217;année dernière tech4quant. Par conséquent, l&#8217;ensemble des packages Java démarraient par <em>com.tech4quant.*</em>. Il y a quelques mois, la société a été renommée Algodeal. Du coup, David a décidé de renommer tous les packages en <em>com.algodeal.*</em>. Or en Java, un package se trouve dans le répertoire du même nom (donc ici com/tech4quant/&#8230; et com/algodeal/&#8230;). Or si vous connaissez CVS ou Subversion, vous savez que cette tâche est pratiquement impossible, ou du moins les obstacles à sa bonne réalisation vous pousse à tout simplement éviter un tel renommage ! Pourtant, grâce à Git, David a réalisé cela de façon tout à fait normale, en exécutant simplement les tâches de renommage de répertoires, et de refactoring massif du code Java (histoire de changer le nom des packages ainsi que les import). Git, s&#8217;est quant à lui chargé de tout gérer proprement, sans perte d&#8217;historique, sans aucune douleur. Une fois de plus, bravo Git !</div>
<p><br/></p>
<div>On a bien entendu évoqué l&#8217;intégration de l&#8217;outil dans l&#8217;écosystème du développeur (Java essentiellement). Les plugins Eclipse ne sont pas encore très au point, et David se sert beaucoup du terminal mais également de <a href="http://gitx.frim.nl/" onclick="pageTracker._trackPageview('/outgoing/gitx.frim.nl/?referer=');">GitX</a>, qui propose une visualisation très agréable de l&#8217;historique d&#8217;une ressource, et se montre assez à l&#8217;aise avec les différentes opérations de commit.</div>
<p><br/></p>
<div id="_mcePaste">Bref, David a facilement réussi à convaincre ses auditeurs de l&#8217;intérêt de Git. Reste que je reste toujours très sceptiques quant à l&#8217;adoption de cet outil au sein de grandes sociétés, et je ne peux hélas que le regretter, tant mon attrait pour Git s&#8217;est accru ce soir !</div>
<p><br/></p>
<div>Merci à David pour ta présentation, merci également à Yannick Ameur pour avoir eu l&#8217;idée d&#8217;organiser ce cours du soir.</div>
<a href="javascript:toggleStartStop();PicLensLite.start({feedUrl:'http://linsolas.free.fr/wordpress/wp-content/plugins/wp-piclens/mrss.php?id=122'});">Start Slide Show with PicLens Lite <img src="http://linsolas.free.fr/wordpress/wp-content/plugins/wp-piclens/PicLensButton.png" alt="PicLens" width="16" height="12" border="0" align="top"></a>]]></content:encoded>
			<wfw:commentRss>http://linsolas.free.fr/wordpress/index.php/2010/04/cours-du-soir-git/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
