<?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>Blog Excilys &#187; J&#8217;y étais !</title>
	<atom:link href="http://blog.excilys.com/category/jy-etais/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.excilys.com</link>
	<description>Langages, Architectures &#38; Méthodologies</description>
	<lastBuildDate>Mon, 09 Jan 2012 17:14:03 +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>Droidcon London 2011</title>
		<link>http://blog.excilys.com/2011/11/02/droidcon-london-2011/</link>
		<comments>http://blog.excilys.com/2011/11/02/droidcon-london-2011/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 15:30:44 +0000</pubDate>
		<dc:creator>Bastien JANSEN</dc:creator>
				<category><![CDATA[J'y étais !]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[conférence]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://blog.excilys.com/?p=3939</guid>
		<description><![CDATA[Votre serviteur s&#8217;est rendu au pays où les escargots sont les plus heureux afin de participer à la Droidcon London 2011. Au programme de cet article, la présentation de cet évènement européen autour d&#8217;Android, et plus tard d&#8217;autres articles vous proposeront un résumé des nombreuses conférences et ateliers de barcamp de ces deux journées. Qu&#8217;est-ce [...]]]></description>
			<content:encoded><![CDATA[<p>Votre serviteur s&#8217;est rendu au pays où les escargots sont les plus heureux afin de participer à la Droidcon London 2011. Au programme de cet article, la présentation de cet évènement européen autour d&#8217;Android, et plus tard d&#8217;autres articles vous proposeront un résumé des nombreuses conférences et ateliers de barcamp de ces deux journées.</p>
<p><span id="more-3939"></span></p>
<h3>Qu&#8217;est-ce que la Droidcon ?</h3>
<div id="attachment_3944" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.excilys.com/wp-content/uploads/2011/10/business_center.jpg"><img class="size-medium wp-image-3944" src="http://blog.excilys.com/wp-content/uploads/2011/10/business_center-300x225.jpg" alt="Photo du Business Design Center de nuit" width="300" height="225" /></a><p class="wp-caption-text">Business Design Center de nuit</p></div>
<p>La <strong><a title="Droidcon London" href="http://uk.droidcon.com" target="_blank">Droidcon</a></strong>, c&#8217;est une conférence autour de la plateforme mobile de <strong>Google</strong>, elle a une renommée européenne et est organisée dans 4 grandes villes chaque année : Amsterdam, Berlin, Bucarest et Londres. Les 6 et 7 octobre 2011, ce sont près de 600 personnes qui se sont réunies lors de la Droidcon au Business Design Center, à Islington, au coeur de Londres.</p>
<p>Le premier jour s&#8217;est organisé à la façon d&#8217;un <strong>barcamp</strong>. Lors de la keynote d&#8217;ouverture, toutes les personnes qui souhaitaient aborder des sujets particuliers ont proposé leurs idées. C&#8217;est ainsi qu&#8217;une trentaine d&#8217;ateliers ont été créés autour de sujets tant pour les développeurs &#8211;  comme la performance et la sécurité &#8211; que pour les non développeurs avec des sujets autour de la monétisation des applications Android par exemple.</p>
<p>Les présentations de la seconde journée étaient quant à elles déjà prévues, on a aussi retrouvé divers sujets autour du développement, du business, de l&#8217;entreprise etc.</p>
<p>Les organisateurs de cet événement étaient <strong><a title="Skills matter" href="http://skillsmatter.com/" target="_blank">Skills Matters</a></strong>, société londonienne spécialisée dans la formation informatique, et <strong>Wireless Industry Partner connector (<a title="WIP Connector" href="http://www.wipconnector.com/" target="_blank">WIP</a>)</strong>, société canadienne spécialisée dans la mise en relation d&#8217;entreprises dans le domaine mobile.</p>
<h3>Les exposants</h3>
<p>En parallèle de ces ateliers et conférences, divers exposants sont venus présenter leurs produits ou services. Voici une liste non exhaustive des exposants présents lors de cette conférence et les raisons de leur présence.</p>
<h4>Les constructeurs</h4>
<div id="attachment_3942" class="wp-caption alignright" style="width: 310px"><a href="http://blog.excilys.com/wp-content/uploads/2011/10/htcdev_booth.jpg"><img class="size-medium wp-image-3942" src="http://blog.excilys.com/wp-content/uploads/2011/10/htcdev_booth-300x225.jpg" alt="Photo du stand HTC Dev" width="300" height="225" /></a><p class="wp-caption-text">Stand HTC Dev</p></div>
<p>La société taïwanaise <strong>HTC</strong> est venue pour présenter plusieurs nouveautés :</p>
<ul>
<li>Un nouveau smartphone, le Sensation XL équipé de la technologie beats by dre qui offre une qualité sonore supérieure ;</li>
<li>Une nouvelle tablette sous honeycomb : la Jetstream avec son stylo. HTC en a profité pour nous présenter son API nommée <strong>Pen</strong> permettant d&#8217;utiliser ce stylo sur la tablette afin de transformer la tablette en véritable papier électronique.</li>
</ul>
<p>La société japonaise <strong>Sony Ericsson</strong> était également présente pour nous présenter son dernier smartphone le Xperia Play, qui est un mélange de console de jeu et de smartphone.</p>
<p>Enfin, un dernier constructeur était présent, et, bien que pouvant surprendre, il s&#8217;agissait de <strong>RIM</strong>. En effet, la société canadienne est venu courtiser les développeurs Android car leur tablette Playbook embarquera une nouvelle technologie nommée Android player. Ce player permettra aux applications Android de fonctionner sur la tablette Blackberry.</p>
<h4>Les solutions à destination des professionnels</h4>
<p>L&#8217;entreprise <strong>Cisco</strong> était présente afin de montrer sa tablette <a title="Cius sur le site de Cisco" href="http://www.cisco.com/en/US/products/ps11156/index.html" target="_blank">Cius</a> à destination des professionnels. Celle-ci dispose d&#8217;un OS basé sur Android et est vendue avec les services de communication de Cisco pré installés (Webex par exemple). A destination des professionels, elle dispose d&#8217;une connectivité plus importante que les tablettes grand public, on notera particulièrement le support de la 4G et la connectivité filaire.</p>
<p>Autre technologie représentée, Mobile Infrastructure by <strong>Sybase</strong> qui permet de réaliser de la haute disponibilité pour les données d&#8217;applications mobiles au sein d&#8217;une entreprise.</p>
<h4>Autres stands</h4>
<div id="attachment_3956" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.excilys.com/wp-content/uploads/2011/10/other_booths.jpg"><img class="size-medium wp-image-3956" src="http://blog.excilys.com/wp-content/uploads/2011/10/other_booths-300x199.jpg" alt="Photo d'autres stands" width="300" height="199" /></a><p class="wp-caption-text">Photo d&#039;autres stands</p></div>
<p>Un des grands thèmes de la Droidcon était la monétisation des applications Android : comment gagner de l&#8217;argent grâce à son application ? Plusieurs plateformes publicitaires sont donc venues faire leur promotion : <strong>Inneractive</strong>, <strong>VServ</strong>, &#8230;</p>
<p>L&#8217;éditeur <strong>O&#8217;Reilly</strong> était présent le deuxième jour et proposait aux participants de la Droidcon des rabais sur ses livres. Les organisateurs possédaient également leurs stands afin de promouvoir leurs activités, Skills Matters propose d&#8217;ailleurs gratuitement un magazine trimestriel sur les <a title="Open Source Journal" href="http://skillsmatter.com/go/open-source-journal" target="_blank">technologies open source</a>. <strong>Stackoverflow.com</strong>, site web très connu chez les développeurs, est venu présenter son site <a title="Careers 2.0" href="http://careers.stackoverflow.com/" target="_blank">Careers 2.0</a>, plateforme de recrutement pour les métiers de l&#8217;informatique.</p>
<p>Enfin, deux solutions technologiques étaient représentées, il s&#8217;agit de <strong>Testdroid</strong> (dont je parlerai dans un prochain article) et de <strong>Mopapp</strong>. La première est une solution de test pour les applications Android, la seconde, quant à elle, est une solution de suivi des ventes d&#8217;applications mobiles.</p>
<p>&nbsp;</p>
<p>Voila pour la présentation de la Droidcon, promis, les prochains articles seront plus croustillants, et on y trouvera peut-être même des lignes de code <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;count=horizontal&amp;text=Droidcon%20London%202011" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;count=horizontal&amp;text=Droidcon%20London%202011" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.excilys.com%2F2011%2F11%2F02%2Fdroidcon-london-2011%2F&amp;title=Droidcon%20London%202011" id="wpa2a_2"><img src="http://blog.excilys.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.excilys.com/2011/11/02/droidcon-london-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Compte-rendu du Paris JUG : soirée Build, Share &amp; Deploy</title>
		<link>http://blog.excilys.com/2010/05/14/compte-rendu-du-paris-jug-soiree-build-share-deploy/</link>
		<comments>http://blog.excilys.com/2010/05/14/compte-rendu-du-paris-jug-soiree-build-share-deploy/#comments</comments>
		<pubDate>Fri, 14 May 2010 13:41:03 +0000</pubDate>
		<dc:creator>Bastien JANSEN</dc:creator>
				<category><![CDATA[J'y étais !]]></category>
		<category><![CDATA[build]]></category>
		<category><![CDATA[déploiement]]></category>
		<category><![CDATA[dvcs]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[maven]]></category>
		<category><![CDATA[maven 3]]></category>
		<category><![CDATA[paris jug]]></category>
		<category><![CDATA[w3]]></category>
		<category><![CDATA[w3c]]></category>

		<guid isPermaLink="false">http://blog.excilys.com/?p=1935</guid>
		<description><![CDATA[Aujourd&#8217;hui, nous tentons une expérience : écrire un article à plusieurs. Mais plutôt que de s&#8217;abriter derrière un &#8220;nous&#8221; anonyme et sécurisant, nous (sic !) avons décidé de continuer à employer la première personne, en précisant qui est le locuteur lorsque c&#8217;était nécessaire. A vous de nous dire si vous appréciez le format ! Une [...]]]></description>
			<content:encoded><![CDATA[<div class="note">Aujourd&#8217;hui, nous tentons une expérience : écrire un article à plusieurs. Mais plutôt que de s&#8217;abriter derrière un &#8220;nous&#8221; anonyme et sécurisant, nous (sic !) avons décidé de continuer à employer la première personne, en précisant qui est le locuteur lorsque c&#8217;était nécessaire. A vous de nous dire si vous appréciez le format <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  !</div>
<p>Une fois n&#8217;est pas coutume, ce deuxième mardi du mois a été l&#8217;occasion pour les Javaïstes parisiens d&#8217;assister au <a href="http://www.parisjug.org/">Paris JUG</a>, consacré cette fois aux processus de <em>build</em>, <em>share</em> et <em>deployment</em>. Pas de chance, la salle était déjà bien pleine quand je <em>(Bastien)</em> suis arrivé&#8230; vite, une chaise tout devant !</p>
<p>De mon côté <em>(Pierre-Yves)</em>, ayant posé ma tente devant la salle la veille au soir, j&#8217;ai eu accès aux premiers rangs. Allez, je vous livre un petit secret : pour avoir un placement correct au Paris Jug, il faut arriver à 19h <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  (ou être une <a href="http://jduchess.org/duchess-france/">JDuchess</a> <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> ). Je <em>(Pierre-Yves)</em> vais donc vous parler des trois premières présentations, et je <em>(Bastien)</em> continuerai avec les deux dernières.</p>
<p><span id="more-1935"></span></p>
<h3><a href="http://www.w3.org"><img class="alignright size-medium wp-image-1948" title="W3C" src="http://blog.excilys.com/wp-content/uploads/2010/05/w3c_logo-300x145.png" alt="" width="300" height="145" /></a>Les secrets de fabrication du W3C</h3>
<h4>Par <em>Alexandre Bertails</em></h4>
<p>Qui connaît réellement le <a href="http://www.w3.org/">W3C</a> ? En dehors des outils de validation et des spécifications HTML 5, peu d&#8217;entre nous en savent plus sur cet acteur historique du Web. Alexandre Bertails nous en dit plus, dans un temps imparti relativement court.</p>
<p>Saviez-vous que le site web du W3C vient d&#8217;être refait à neuf, après <strong>un an et demi</strong> de travail ? Ce n&#8217;est pas juste une CSS, le contenu et l&#8217;arborescence ont été revus, <strong>sans cependant casser aucun lien</strong>. Allez-y, <a href="http://www.w3.org/">visitez-le</a> (bien plus joli qu&#8217;en <a href="http://web.archive.org/web/20080102062931/http://www.w3.org/">2008</a>, <a href="http://web.archive.org/web/20011217200741/www.w3.org/">2002</a> et même <a href="http://web.archive.org/web/19961227091242/http://www19.w3.org/">1996</a>).</p>
<p>J&#8217;ai aussi découvert que le W3C est composé à 40% de français. Que les outils avec lesquels travaillaient les salariés n&#8217;étaient pas forcément orientés Web, mais que les choses ont bien évolué récemment.</p>
<p>On regrettera le flux permanent des retardataires (ça va, je (<em>Bastien</em>) le saurai pour la prochaine fois !), qui ont quelque peu perturbé notre attention à tous, sans toutefois départir Alexandre de ses moyens (et c&#8217;est tout à son honneur !).</p>
<h3>DVCS</h3>
<h4>Par <em>Sébastien Douche</em></h4>
<p>Speaker hors pair, <a href="http://twitter.com/sdouche">Sébastien Douche</a> nous a donné envie de nous jeter à l&#8217;eau (pardon&#8230; facile celle-là) et de nous mettre immédiatement aux <a href="http://en.wikipedia.org/wiki/Distributed_Version_Control_System">DVCS</a> (Distributed Version Control System, système de gestion de versions distribué).</p>
<p>Auparavant, lorsqu&#8217;il intégrait un nouveau groupe de travail, Sébastien avait l&#8217;habitude d&#8217;y déployer sa boîte à outil habituelle : SVN, et <a href="http://trac.edgewall.org/">Trac</a>. Jusqu&#8217;au jour où il s&#8217;est retrouvé chef de projet sur un projet from scratch.</p>
<p style="text-align: center;"><img class="size-full wp-image-1953 aligncenter" title="Hors Piste" src="http://blog.excilys.com/wp-content/uploads/2010/05/hors_piste.jpg" alt="" width="341" height="454" /></p>
<p>J&#8217;aime beaucoup la métaphore qu&#8217;il nous a donné : la <strong>maintenance</strong> d&#8217;une application, c&#8217;est du <strong>ski sur pistes</strong>, il y a des dizaines de développeurs qui sont passés avant toi et qui ont tracé la piste. Le développement <strong>à partir de zéro</strong>, c&#8217;est du <strong>ski hors piste</strong>, tu sais la direction que tu veux prendre, mais tu es en haut de la montagne, ya du brouillard, il faut se lancer, et tu n&#8217;as pas de repères immédiats.</p>
<p>Avec le temps, le projet, pourtant &#8220;agile&#8221;, a eu de plus en plus de mal à livrer dans les temps, et la qualité de travail s&#8217;est progressivement dégradée. Pourquoi ? Parce que les développeurs passaient leur temps à faire des micro-commit/micro-merge et à intégrer le travail des autres, au lieu de pouvoir se consacrer au développement des fonctionnalités.</p>
<p>C&#8217;est une sale habitude que nous donne SVN : <strong>merger</strong> le code est vécu comme une <strong>expérience difficile</strong>. On préfère donc commiter le plus vite possible pour que ce soient les autres développeurs qui aient à merger. Les micro-commit sont aussi bien moins difficiles à merger. Quand aux branches SVN, elles sont aussi faciles à créer que complexes à merger&#8230;</p>
<p><strong>SVN</strong> ne sert plus au final qu&#8217;à faire de l&#8217;<strong>historisation</strong>, c&#8217;est un super &#8220;Annuler / Répéter&#8221;.</p>
<p>Les DVCS récents permettent à chaque développeur de travailler en local (fonctions d&#8217;historisation) et en isolation, et de pousser le code sur un repository central uniquement lorsque la fonctionnalité est terminée. Leur grande force est la flexibilité qu&#8217;ils introduisent, permettant à chacun de bosser comme il l&#8217;entend tout en respectant les règles d&#8217;organisation du groupe.</p>
<p>Il est aujourd&#8217;hui possible de passer à un DVCS en douceur, sur son poste de travail, en important un repository SVN qui peut rester le repository principal, mais en disposant des avantages d&#8217;un Git ou d&#8217;un Mercurial en local.</p>
<p><strong>Sébastien</strong> en a aussi profité pour nous présenter la manière dont travaille son équipe : le repository central comporte <strong>uniquement du code &#8220;livrable&#8221;</strong> (au sens livraison de fin de Sprint). Chaque fois qu&#8217;une <strong>fonctionnalité</strong> a été <strong>codée</strong> par un développeur, une <strong>revue de code</strong> est réalisée par un autre développeur, une <strong>démo</strong> est réalisée, et si tout va bien alors seulement les<strong> modifications </strong>sont<strong> poussées</strong> sur le repository central.</p>
<p>Sa <strong>conclusion</strong> : si vous ne devez apprendre qu&#8217;une techno en 2010, ce n&#8217;est pas <span style="text-decoration: line-through;">Scala</span>, <span style="text-decoration: line-through;">JEE 6</span>, <span style="text-decoration: line-through;">Maven 3</span>&#8230; <strong>apprenez à utiliser un DVCS</strong> !</p>
<h3>Git</h3>
<h4>Par <em>David Gageot</em></h4>
<p>Plutôt que de faire de sa présentation un énième tutoriel sur Git et tous les concepts associés, <a href="http://twitter.com/dgageot">David Gageot</a> a préféré nous montrer la puissance de Git en quelques exemple pratiques.</p>
<p>Tout d&#8217;abord, <code class="codecolorer bash default"><span class="bash"><span style="color: #c20cb9; font-weight: bold;">git bisect</span></span></code>. Cette fonctionnalité permet d&#8217;automatiser la recherche du commit qui a créé une régression. Le fonctionnement est simple : on fournit à Git un script permettant de déterminer, pour une version donnée, si le bug est présent ou non. <code class="codecolorer bash default"><span class="bash"><span style="color: #c20cb9; font-weight: bold;">git bisect</span></span></code> va ensuite réaliser une recherche <a href="http://fr.wikipedia.org/wiki/Dichotomie">dichotomique</a> entre deux numéros de versions, et identifier très rapidement le commit coupable.</p>
<p>Cette fonctionnalité n&#8217;a pas grand chose à voir avec le fait que Git soit un <strong>D</strong>VCS (distribué), mais reste un argument de poids pour adopter cet outil. C&#8217;est aussi possible grâce à la rapidité avec laquelle un Git ou un Mercurial peuvent réaliser un checkout ou changer de version sur une copie locale.</p>
<p>David nous a ensuite montré un script qu&#8217;il a réalisé, qui permet de conditionner automatiquement le push vers le repository au fait que le build et les tests passent. Il peut donc tranquillement bosser et commiter pendant qu&#8217;en tâche de fond le build et les tests sont exécutés, et ainsi se passer d&#8217;un <a href="http://blog.excilys.com/2010/04/21/hudson-retour-dexperience-et-conseils-pratiques/">Hudson</a>.</p>
<p>La présentation s&#8217;est terminée par des démonstration sur l&#8217;évolution de dépôts Git à l&#8217;aide de <a href="http://code.google.com/p/gource/">Gource</a>, qui permet de représenter dans le temps les modifications effectuées sur un dépôt de sources, et le travail de chacun.</p>
<div id="attachment_1965" class="wp-caption aligncenter" style="width: 490px"><a href="http://code.google.com/p/gource/wiki/Screenshots"><img class="size-full wp-image-1965" title="Le Gource du projet Linux" src="http://blog.excilys.com/wp-content/uploads/2010/05/gource-linux-small.jpg" alt="" width="480" height="360" /></a><p class="wp-caption-text">Le Gource du projet Linux</p></div>
<p>En conclusion, quelques conseils :</p>
<ul>
<li>testez Git le plus vite possible,</li>
<li>n&#8217;essayez pas de faire du SVN avec Git, il faut oublier comment SVN fonctionne, désapprendre les mauvais réflexes,</li>
<li>un bon moyen pour démarrer, c&#8217;est de jouer avec <a href="http://github.com/">github</a>,</li>
<li>n&#8217;hésitez pas à utiliser Git dans le cadre de vos projets, au moins en local, il vous apportera une forte plus value même si votre équipe continue d&#8217;utiliser SVN.</li>
</ul>
<h3>Pause Buffet</h3>
<p>Le buffet était gracieusement offert par <a href="http://twitter.com/nmartignole">Nicolas Martignole</a>, suite à <a href="http://www.touilleur-express.fr/2010/05/07/lexpress-board-offre-le-buffet-au-paris-jug-mardi-11-mai/">un défi</a> lancé sur Twitter. Il en a profité pour faire de la pub pour l&#8217;<a href="http://www.express-board.fr/">eXpress Board</a>, un job board pour les passionés. J&#8217;ai <em>(Pierre-Yves)</em> aussi pu croiser <a href="http://twitter.com/emmanuelbernard">Emmanuel Bernard</a>, apprenant ainsi que si l&#8217;équipe Hibernate n&#8217;utilise pas de DVCS pour le moment, ils songent à y passer, notamment pour faciliter l&#8217;intégration de contributions externes.</p>
<h3>Build it with Maven 3!</h3>
<h4>Par <em>Nicolas de Loof</em> &amp; <em>Arnaud Héritier</em></h4>
<p>Invités surprise, <a href="http://twitter.com/ndeloof">Fred</a> et <a href="http://twitter.com/aheritier">Jamy</a> nous ont montré que Maven, c&#8217;est pas sorcier ! Certains se souviennent encore des migrations longues et périlleuses des Makefile vers Ant, puis vers Maven 1 et Maven 2. Cette fois, les développeurs du célèbre gestionnaire de build ont voulu éviter cela : la compatibilité de Maven 3 avec des projets en version 2 est en théorie de 99.99% (hormis maven site qui n&#8217;est pas encore au point).</p>
<div id="attachment_1970" class="wp-caption alignleft" style="width: 360px"><a href="http://oreilly.com/catalog/9780596517335"><img class="size-full wp-image-1970" title="Maven 3" src="http://blog.excilys.com/wp-content/uploads/2010/05/maven3.jpg" alt="" width="350" height="256" /></a><p class="wp-caption-text">Première rencontre avec Maven 3</p></div>
<p>Les mots-clé de la première release stable seront donc les suivants :</p>
<ul>
<li><strong>compatibilité</strong> : en prenant n&#8217;importe quel projet Maven 2, sans aucune modification on pourra le builder avec Maven 3,</li>
<li><strong>modularité/extensibilité</strong> : le socle de l&#8217;application a été entièrement repensé (en évitant les problèmes de rigidité et de complexité de la version 2). Au menu, utilisation de Java 5, apparition d&#8217;APIs simples et intuitives, de la doc&#8230; Bref, de quoi faire des plugins sans se prendre la tête,</li>
<li><strong><a href="http://maven.apache.org/mercury/index.html">Mercury</a></strong> : ce système voué à remplacer le mécanisme d&#8217;artifacts&#8230; a finalement été abandonné <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</li>
</ul>
<p>Maven 3 introduit la notion de <strong><em>build plan</em><span style="font-weight: normal;">, qui permet de savoir à l&#8217;avance toutes les actions qui vont être effectuées dans un build (une sorte de contexte d&#8217;exécution). Ainsi, un plugin sera au courant de ce que feront les autres, donnant la possibilité d&#8217;avoir des builds intelligents (où les tests ne seront pas lancés deux fois par deux plugins différents par exemple).</span></strong></p>
<p><strong><span style="font-weight: normal;">Au niveau des descripteurs de build, la structure des pom.xml a été améliorée et Maven 3 devient polyglotte. On peut à présent écrire des descripteurs en <a href="http://www.wakaleo.com/blog/236-writing-your-pom-files-in-groovy-a-sneek-preview-of-maven-3s-polyglot-features">groovy</a> ou en python par exemple. Les exclusions globales de dépendances sont maintenant possibles (on va enfin pouvoir se débarrasser de cette *$#~ de dépendance sur un logger qui plante toujours&#8230; <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_razz.gif' alt=':-P' class='wp-smiley' /> ). </span></strong></p>
<p><strong><span style="font-weight: normal;">Toujours dans les descripteurs, la notion de </span><span style="font-weight: normal;"><em>mixins</em><span style="font-weight: normal;"> est apparue :</span></span></strong></p>
<blockquote><p><strong><span style="font-weight: normal;"><span style="font-weight: normal;">Essentially it will be a POM consisting of plugins and configurations that can be externally parameterized. These mixins will be deployed to a repository and be referenced with a standard coordinate. Basically it will be an intelligent import with validation which will allow composition in your POMs.</span></span></strong></p></blockquote>
<p>On va pouvoir décomposer notre POM en différents morceaux, un peu à la manière des <a href="http://blogs.sun.com/swchan/entry/servlet_3_0_web_fragment">web-fragments</a>.</p>
<p><strong><span style="font-weight: normal;"><span style="font-weight: normal;">Les </span>builds parallèles<span style="font-weight: normal;"> vont bientôt faire leur apparition, pour ne pas que vos 7 autres cores s&#8217;ennuient <em>(edit: Mathieu nous signale en commentaire que les builds parallèles sont déjà disponibles depuis la version 3.0-beta-1)</em>. Cette fonctionnalité sera très intéressante sur les serveurs d&#8217;intégration continue utilisant un modèle maitre/esclave (<a href="http://blog.excilys.com/2010/04/21/hudson-retour-dexperience-et-conseils-pratiques/">Hudson</a>, pour ne citer que lui). Techniquement, le processus de build sera découpé en différentes phases qui se rejoindront en des points de synchronisation.</span></span></strong></p>
<p>Mais au final, qu&#8217;apporte Maven 3 par rapport à Maven 2 à l&#8217;heure actuelle ? Rien, enfin presque :</p>
<ul>
<li>un shell (avec des jolies couleurs !) permet de faciliter les builds (notamment sous Windows),</li>
<li>un gain de rapidité lors des builds.</li>
</ul>
<p>Comme la migration de M2 vers M3 est très simple et rapide, nos deux speakers encouragent vivement les développeurs à tester Maven 3 chez eux, ne serait-ce que pour les gains en terme de rapidité de build. A vos pom, donc !</p>
<h3>Deploy it with&#8230; DeployIt!</h3>
<h4>Par <em>Guillaume Bodet</em> &amp; <em>Benoit Moussaud</em></h4>
<p><img class="alignright size-full wp-image-1963" title="DeployIt" src="http://blog.excilys.com/wp-content/uploads/2010/05/deployit-logo-small.png" alt="" width="206" height="36" /><a href="http://blog.xebia.fr/author/gbodet/">Guillaume</a> et <a href="http://www.twitter.com/bmoussaud">Benoit</a> nous ont présenté les fondamentaux du bébé développé par XebiaLabs, <strong><a href="http://www.xebialabs.com/deployit-automated-deployment-java-applications">DeployIt</a></strong>. Cet outil part du constat qu&#8217;un déploiement ne consiste pas en une simple copie d&#8217;EAR/WAR. Il y a généralement d&#8217;autres éléments à configurer (DataSources, JMS), des scripts SQL à lancer, des batches à mettre en place, etc.</p>
<p>DeployIt permet de gérer toutes ces étapes de manière intelligente et de faciliter l&#8217;installation d&#8217;une application. Il est repose sur <a href="http://www.xebialabs.com/architecture">trois briques principales</a> :</p>
<ul>
<li>le cœur,</li>
<li>des interfaces (Flex, console, Maven, Eclipse, dashboards&#8230;),</li>
<li>des plugins permettant le support de JBoss, Apache, .NET etc.</li>
</ul>
<p>La préparation d&#8217;une installation se fait en deux étapes. Dans un premier temps, on configure le <em>Configuration Item Repository</em> (CIR), qui est un référentiel d&#8217;informations sur les différents environnements de déploiement (test, performances, etc.). Ensuite, l&#8217;ensemble des opérations à effectuer est décrite dans des <em>runbooks</em> : déploiement d&#8217;un EAR, configuration d&#8217;une DataSource, installation d&#8217;un script SQL&#8230;</p>
<p>A partir de ces deux sources d&#8217;information, l&#8217;<em>Intelligent Runbook Resolution Engine</em> va se charger d&#8217;interroger les différents runbooks pour constituer un scénario de déploiement, en se basant sur les caractéristiques de l&#8217;environnement décrites dans le CIR.</p>
<p>Un des aspects intéressants dans DeployIt est sa faible intrusion :</p>
<ul>
<li>Il est <em>agent-less</em>, et va utiliser les moyens existants tels que ssh, sftp, scp.</li>
<li>Il utilise les interfaces natives lorsqu&#8217;elles sont disponibles (wsadmin, JDBC&#8230;).</li>
<li>Un plugin Maven permet de lancer les déploiements au sein d&#8217;un processus de build (au sens Maven) déjà existant dans le projet.</li>
</ul>
<p>Seul bémol : DeployIt est un outil commercial, il existe une <a href="http://www.xebialabs.com/deployit-personal-edition-request">version gratuite</a> mais qui n&#8217;intègre aucune notion de sécurité&#8230; XebiaLabs a ainsi la volonté de permettre aux gens de tester ce produit chez eux, tout en empêchant la possibilité de l&#8217;utiliser pour faire de vrais déploiements en production (sauf si vous êtes kamikaze).</p>
<p>Cependant, XebiaLabs songe à relâcher son outil en Open-Source. La majorité absolue des personnes présentes dans la salle a d&#8217;ailleurs voté positivement pour une telle action, en réponse à un sondage improvisé d&#8217;<a href="http://www.parisjug.org/xwiki/bin/view/Speaker/GoncalvesAntonio">Antonio</a> <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> .</p>
<h3>Conclusion</h3>
<p>Ce Paris JUG fût riche en enseignements et en conférences de qualité. D&#8217;autres compte rendus ont été publiés sur le web : sur le blog du <a href="http://www.touilleur-express.fr/2010/05/12/la-soiree-du-11-mai-2010-au-paris-jug-git-dvcs-et-lexpress-board/">Touilleur Express</a>, et sur le blog des <a href="http://jduchess.org/duchess-france/paris-jug-de-mai-build-share-deploy-jusquau-bout-de-la-nuit-1/">JDuchess</a>.</p>
<p>Le prochain Paris JUG aura lieu le 8 juin, avec une invitée à l&#8217;honneur : <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20100608">Holly Cummins</a>.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;count=horizontal&amp;text=Compte-rendu%20du%20Paris%20JUG%20%3A%20soir%C3%A9e%20Build%2C%20Share%20%26%23038%3B%20Deploy" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;count=horizontal&amp;text=Compte-rendu%20du%20Paris%20JUG%20%3A%20soir%C3%A9e%20Build%2C%20Share%20%26%23038%3B%20Deploy" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.excilys.com%2F2010%2F05%2F14%2Fcompte-rendu-du-paris-jug-soiree-build-share-deploy%2F&amp;title=Compte-rendu%20du%20Paris%20JUG%20%3A%20soir%C3%A9e%20Build%2C%20Share%20%26%23038%3B%20Deploy" id="wpa2a_4"><img src="http://blog.excilys.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.excilys.com/2010/05/14/compte-rendu-du-paris-jug-soiree-build-share-deploy/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Compte rendu du Paris JUG &#8211; Soirée Google</title>
		<link>http://blog.excilys.com/2009/11/13/compte-rendu-du-paris-jug-soiree-google/</link>
		<comments>http://blog.excilys.com/2009/11/13/compte-rendu-du-paris-jug-soiree-google/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 11:15:34 +0000</pubDate>
		<dc:creator>Eric BOTTARD</dc:creator>
				<category><![CDATA[J'y étais !]]></category>
		<category><![CDATA[android]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google app engine]]></category>
		<category><![CDATA[google wave]]></category>
		<category><![CDATA[groovy]]></category>
		<category><![CDATA[JUG]]></category>

		<guid isPermaLink="false">http://blog.excilys.com/?p=335</guid>
		<description><![CDATA[Ce mardi avait lieu le Paris JUG mensuel, cette fois-ci consacré aux technologies Google. J&#8217;arrive 10 minutes en avance, ce qui n&#8217;est pas suffisant pour m&#8217;éviter la place de cancre tout au fond de la salle, le Paris JUG est vraiment victime de son succès, et c&#8217;est tant mieux. Au programme : Android, Google App [...]]]></description>
			<content:encoded><![CDATA[<p>Ce mardi avait lieu le Paris JUG mensuel, cette fois-ci consacré aux technologies Google. J&#8217;arrive 10 minutes en avance, ce qui n&#8217;est pas suffisant pour m&#8217;éviter la place de cancre tout au fond de la salle, le Paris JUG est vraiment victime de son succès, et c&#8217;est tant mieux. Au programme : Android, Google App Engine et Google Wave.<span id="more-335"></span></p>
<h3>Présentation d&#8217;Android</h3>
<p>(Stéphane Lietaed + Gabriel Kastenbaum) @ Oxiane<a href="http://blog.excilys.com/wp-content/uploads/2009/10/android_logo.png"><img class="alignright size-full wp-image-120" title="Logo Android" src="http://blog.excilys.com/wp-content/uploads/2009/10/android_logo.png" alt="Logo Android" width="278" height="95" /></a></p>
<p>L&#8217;engouement pour les <em>smartphones</em> débute en 2002 avec l&#8217;apparition du BlackBerry (le téléphone de chef, pour continuer à recevoir des mails pendant les réunions). Le téléphone élitiste par excellence.<br />
Il faudra attendre 2007 et l&#8217;iPhone, le pari réussi d&#8217;Apple, pour voir le marché évoluer. Et un deuxième boom avec l&#8217;AppStore, qui vient de dépasser les 100000 applications disponibles.<br />
Le téléphone portable est omniprésent (3x plus de téléphones que d&#8217;ordinateurs personnels dans le monde), cela représente donc un secteur d&#8217;avenir en termes de développement.</p>
<p>Android est une <strong>plateforme</strong>, initiée par Google. Le point clef est l&#8217;ouverture (vis-à-vis de l&#8217;iPhone certes, mais pensez également au paysage du développement d&#8217;applications ayant accès aux fonctionnalités avancées des téléphones avant celà !)</p>
<p>En france, Bouygues et SFR (les perdants côté iPhone) se rattrapent sur les téléphones Android et proposent très rapidement des terminaux. Aux US, le premier téléphone équipé d&#8217;Android 2.0 (Motorola Droid) est sorti récemment.</p>
<p>Cette version de l&#8217;OS apporte entre autres le support d&#8217;exchange, avec de manière sous-jacente la technologie ActiveSync qui permet les &#8220;push&#8221; (également adoptée par Google pour Google Calendar et la synchronisation des contacts).</p>
<p><strong>Parlons un peu technique</strong></p>
<p>Android est un OS fondé sur Linux (noyau 2.6) et équipé d&#8217;une VM java spécifique (Dalvik VM). Ceci permet d&#8217;écrire en java, mais d&#8217;exécuter du bytecode Dalvik (fichier .dex). Il ne s&#8217;agit donc pas à proprement parler d&#8217;une JVM mais tous les avantages liés à la technologie java sont là (outillage, librairies et large panel de connaissances en termes de développement). C&#8217;est ce qui en fait une plateforme idéale pour l&#8217;entreprise. A ce sujet, je vous recommande la lecture de la série d&#8217;articles présents sur ce blog : <a href="http://blog.excilys.com/2009/10/08/android-pour-lentreprise-1-premiers-contacts/">Android pour l&#8217;entreprise</a>.<br />
La machine virtuelle java est optimisée pour des processeurs lents et pour une taille de RAM dérisoire à côté de ce que l&#8217;on a l&#8217;habitude de manipuler sur des ordinateurs personnels ou des serveurs.</p>
<p>Contrairement à une JVM classique, Dalvik ne fonctionne pas avec une <a href="http://en.wikipedia.org/wiki/Stack_machine">stack</a>, mais directement avec des <a href="http://en.wikipedia.org/wiki/Register_machine">registres</a>.</p>
<p>Disposer d&#8217;une plateforme liée à Java permet certes de s&#8217;appuyer sur tout un ensemble de librairies existantes, mais l&#8217;on est ici dans l&#8217;impossibilité de faire quoi que ce soit qui fasse de la manipulation de bytecode java au <em>runtime</em> (langages alternatifs tels groovy, <em>etc</em>) ou des fonctionnalités AOP.</p>
<p>En ce qui concerne l&#8217;outillage, celui-ci n&#8217;est pas forcément lié à Eclipse (outils en ligne de commande disponibles ?) mais Eclipse est l&#8217;environnement de référence. Le jeu de plugins incite aux mises à jour (et contient la documentation en local).</p>
<p>Nos deux intervenants nous font ensuite une démonstration rapide du SDK, où l&#8217;on peut voir l&#8217;émulateur hébergeant une application &#8220;hello world&#8221; tourner en quelques secondes.</p>
<p><strong>A propos des éléments graphiques</strong></p>
<p>Le framework permettant de créer des IHMs est un framework &#8220;maison&#8221; mais les concepts sont similaires à awt, swing, <em>etc</em>.</p>
<p>Le <em>tooling</em> permet de travailler soit en mode graphique (<em>drag &amp; drop</em> de composants), soit en mode édition d&#8217;un fichier &#8220;layout xml&#8221; (inspiré du couple html + css) décrivant les composants sur l&#8217;écran. De plus, on peut mélanger à loisir l&#8217;approche déclarative <em>via</em> fichier xml et la manière programmatique.</p>
<p>On nous montre également la possibilité de débugger au sein d&#8217;Eclipse. A ce sujet, je m&#8217;étonne de voir des appels sous forme de stacks si la VM utilise des registres. A creuser, si quelqu&#8217;un connait la réponse à ce mystère, cela m&#8217;intéresse.<br />
Au sein de la plateforme, l&#8217;outil LogCat permet de voir toutes les logs du système (et pas forcément uniquement celles de l&#8217;application).</p>
<p>C&#8217;est la fin de la démonstration et nous revenons à un contenu plus formel sous forme de <em>slides</em> :</p>
<p>Il existe 4 types de &#8220;composants&#8221; dans le système Android</p>
<ol>
<li>Les <strong>Activités</strong>, qui permettent d&#8217;afficher des choses,</li>
<li> les <strong>Services</strong> (n&#8217;ont pas de représentation graphique, équivalents plus ou moins directs de &#8220;Threads&#8221; effectuant des traitements en tâche de fond),</li>
<li> les <strong>Broadcast Receivers</strong> : permettent de recevoir des messages envoyés par le système (<em>ex</em>: notification de batterie faible, ou notification d&#8217;appel entrant),</li>
<li> les <strong>Content Providers</strong> : accès aux données (mais qui peuvent être partagées, <em>ex:</em> accès aux contacts).</li>
</ol>
<p>Toutes les applications* sont logées à la même enseigne. Corollaire : vous pouvez remplacer certains morceaux de l&#8217;OS.<br />
(*) Il n&#8217;y a pas a proprement parler d&#8217;applications, les 4 types de composants ci dessus pouvant être une &#8220;application&#8221;.</p>
<p>Pour faire le lien entre ces concepts, il manque un mécanisme de communication par événements : ce sont les <strong>Intents</strong>.<br />
Il ne s&#8217;agit pas juste d&#8217;invoquer une méthode sur une autre instance &#8220;d&#8217;Application&#8221;. Le mécanisme des Intents permet notamment de mettre en place la notion d&#8217;autorisation. Ceci permet donc un couplage lâche. Gabriel fait un parallèle avec l&#8217;association de fichiers au sein de Windows : un .doc peut s&#8217;ouvrir avec Word ou OpenOffice.</p>
<p><strong>C&#8217;est déjà la fin, place aux questions</strong><br />
<a href="http://blog.excilys.com/wp-content/uploads/2009/11/l_1600_1200_7B22F7B5-CB53-4C89-A47C-F896814645CD.jpeg"><img class="alignright size-full wp-image-364" src="http://blog.excilys.com/wp-content/uploads/2009/11/l_1600_1200_7B22F7B5-CB53-4C89-A47C-F896814645CD.jpeg" alt="" width="300" height="225" /></a><br />
Comment le market gère la sécurité des applications publiées ?<br />
R : L&#8217;application est chiffrée par un certificat identifiant la machine ayant créé l&#8217;application</p>
<p>Quels sont les composants graphiques disponibles dans le SDK ?<br />
R : Le framework est assez riche, y compris possiblité de faire de la 3D</p>
<p>Comment Google entend-il prévenir la fragmentation du marché en termes de capacités des téléphones (notamment avec l&#8217;arrivée du HTC Hero ?)<br />
R : Question plus ou moins éludée&#8230;</p>
<p>Peut-on repasser de .dex à &#8220;java&#8221; plus classique (bytecode ou source) ?<br />
R : Possible, certains s&#8217;étant amusés à <em>retro-engineerer</em> le format (mais celui-ci n&#8217;est-il pas ouvert ?)</p>
<p>En conclusion, on avait affaire à une présentation très bien menée (même si l&#8217;un des deux intervenants ne semblait pas très à l&#8217;aise, ce que l&#8217;on peut comprendre vu la taille du public). Le défi de présenter la plateforme dans son ensemble à un public supposé novice est relevé.</p>
<h3>Instant promo</h3>
<p>Arnaud Héritier vient nous présenter le premier ouvrage sur Maven disponible en français (sortie le 20 novembre).</p>
<p>Ai-je besoin de préciser qu&#8217;il en est le co-auteur (avec Nicolas de Loof) <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<h3>Google App Engine</h3>
<p><strong>Groovy and Gaelyk</strong><br />
Guillaume Laforge @ SpringSource/VMWare &amp; (Marc Antoine Garrigue + Gaël Lazzari) @ Octo<img class="alignright" src="http://code.google.com/intl/fr-FR/appengine/images/appengine_lowres.gif" alt="" width="142" height="109" /></p>
<p>Nos trois intervenants introduisent la présentation en nous rappelant les trois modèles disponibles dans le Cloud :</p>
<ul>
<li>Saas : GMail, salesforce.com</li>
<li>PaaS : Google App Engine</li>
<li>IaaS : Amazon EC2</li>
</ul>
<p>Au début de l&#8217;année, le service GAE s&#8217;est donc ouvert à Java (la plateforme était initialement réservée à un développement en python). On a ici affaire à une JVM sandboxée et un conteneur de servlet <a href="http://www.eclipse.org/jetty/">jetty</a>. Puisqu&#8217;il s&#8217;agit d&#8217;une vraie VM java, il est possible de faire tourner d&#8217;autres langages compatibles avec la JVM (dont groovy qui nous intéressera ce soir).</p>
<p>Le principe est d&#8217;écrire votre application (web) et Google App Engine  gère la scalabilité pour vous. Le service est gratuit en dessous de certains quotas (ressources CPU, bande passante, envoi de mails, <em>etc</em>)</p>
<p>Toutes les APIs java ne sont pas forcément disponibles, mais pour pallier cela, GAE offre des <strong>services</strong> de haut niveau :</p>
<ul>
<li> <strong>Memcache</strong> (pour mettre en cache tout ce que vous voulez, utilisable à différents niveaux de votre architecture)</li>
<li> <strong>URL Fetch</strong> (pour récupérer le flux présent à une certaine URL)</li>
<li> <strong>Mail</strong> (pour l&#8217;envoi de &#8230; mails)</li>
<li> <strong>Images</strong> (resize, crop, <em>etc</em>) : permet la manipulation d&#8217;images côté serveur</li>
<li> <strong>XMPP</strong> : envoi et réception de messages sur le protocole utilisé par jabber entre autres</li>
<li> <strong>User</strong> : authentification <em>via</em> un google account</li>
<li> <strong>Cron + Task Queues</strong> : permet le traitement programmé de tâches<strong><br />
</strong></li>
</ul>
<p>Pour autant, la plateforme connaît certaines &#8220;limitations&#8221; (ou du moins diffère en certains points d&#8217;un développement de webapps auquel on peut être habitué). Par exemple, on ne dispose pas d&#8217;une base de données <span style="text-decoration: underline;">relationnelle</span>. De même, chaque requête doit répondre en moins de 30 secondes, sous peine de se faire couper la chique par la plateforme. On est également limité sur la taille et le nombre des fichiers que l&#8217;on peut déployer. Enfin, certaines actions sont interdites, par exemple :</p>
<ul>
<li> écrire sur le filesytem,</li>
<li> créer des Threads,</li>
<li> utiliser les sockets natives,</li>
<li> AWT et Swing évidemment, la plateforme se destinant au traitement côté serveur, mais donc indisponibilité pour certaines classes de manipulation.</li>
</ul>
<p>En terme d&#8217;administration, GAE donne accès à un joli <em>dashboard</em> pour le <em>monitoring</em> de l&#8217;application (et permet le suivi des fameux quotas).</p>
<p>La &#8220;BDD&#8221; s&#8217;appuie sur <a href="http://en.wikipedia.org/wiki/BigTable">BigTable</a> : imaginez une immence HashMap distribuée. Ce système supporte les transactions (avec subtilités) et le partitionnement, mais ne connaît pas la notion de schéma (<em>ie</em> une entité peut avoir des &#8220;colonnes&#8221; différentes de sa voisine).</p>
<p>On n&#8217;utilise pas le SQL pour la requêter : pas de jointures, pas de contraintes, pas de fonctions d&#8217;aggrégations. Au chapitre des limitations, on peut ajouter :</p>
<ul>
<li>on ne peut ramener que 1000 enregistrements à la fois,</li>
<li>impossibilité de faire des filtres d&#8217;inégalité sur plusieurs critères (<em>ie</em> les inscrits au JUG avant telle date <strong>ET</strong> qui ont <a href="http://www.touilleur-express.fr/2009/07/27/senior/">plus de 31 ans</a>).</li>
</ul>
<p><strong>Passons au celtique</strong></p>
<p>Les intervenants nous font à présent découvir <a href="http://gaelyk.appspot.com/">Gaelyk</a> : une fine surcouche à GAE pour l&#8217;interfacer avec <a href="http://groovy.codehaus.org/">Groovy</a> (et notamment les Groovlets et templates).</p>
<p>Gaelyk donne accès aux classiques request, session, <em>etc</em> mais aussi aux services GAE (urlfetch, <em>etc</em>). Guillaume Laforge nous montre par exemple l&#8217;envoi de mails en version java et en version Gaelyk, et évidemment, la réduction de code est bluffante.</p>
<p>Gaelyk permet par exemple de manipuler les entités BigTable (qui sont vues comme des &#8220;maps&#8221; en java) comme des POGO (Plain Old Groovy Object) en groovy : notation pointée pour les propriétés et ajout de méthodes membres save(), delete(), <em>etc</em>.</p>
<p>S&#8217;ensuit une démonstration ayant pour but de montrer une application complète mettant en jeu le plus de services de Google App Engine possible. Pari réussi sous la forme d&#8217;un service totalement inutile (ou du moins à contre-sens de l&#8217;histoire) : une application qui récupère des <em>feeds</em> RSS et envoie des mails quand des mises à jour sont disponibles.</p>
<p>Cette démonstration est l&#8217;occasion d&#8217;aborder le casse-tête d&#8217;architecture qu&#8217;est le développement GAE pour de &#8220;vraies&#8221; applications : tout est initié par une requête http, mais une requête ne doit pas durer plus de 30s. Comment faire pour traiter mes 10000 flux ?</p>
<p>La démo s&#8217;achève et avec elle la présentation peu après. Au final, une très bonne présentation même si l&#8217;on peut craindre une certaine confusion entre Gaelyk et GAE pour les personnes qui ne connsaissaient pas du tout Google App Engine.</p>
<p>Je ne reste pas pour la présentation de Google Wave, ce qui est bien dommage puisque le contenu était très intéressant techniquement d&#8217;après les échos que j&#8217;ai eus par la suite. Qu&#8217;importe, les occasions ne manquerons pas de découvrir cette plateforme.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;count=horizontal&amp;text=Compte%20rendu%20du%20Paris%20JUG%20%26%238211%3B%20Soir%C3%A9e%20Google" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;count=horizontal&amp;text=Compte%20rendu%20du%20Paris%20JUG%20%26%238211%3B%20Soir%C3%A9e%20Google" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.excilys.com%2F2009%2F11%2F13%2Fcompte-rendu-du-paris-jug-soiree-google%2F&amp;title=Compte%20rendu%20du%20Paris%20JUG%20%26%238211%3B%20Soir%C3%A9e%20Google" id="wpa2a_6"><img src="http://blog.excilys.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.excilys.com/2009/11/13/compte-rendu-du-paris-jug-soiree-google/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Compte rendu du Paris JUG (Java User Group) JSF 2.0, Servlet 3.0</title>
		<link>http://blog.excilys.com/2009/10/15/compte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0/</link>
		<comments>http://blog.excilys.com/2009/10/15/compte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 08:57:44 +0000</pubDate>
		<dc:creator>Raphaël LEMAIRE</dc:creator>
				<category><![CDATA[J'y étais !]]></category>
		<category><![CDATA[bean validation]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[jsf 2.0]]></category>
		<category><![CDATA[JUG]]></category>
		<category><![CDATA[servlet 3.0]]></category>

		<guid isPermaLink="false">http://blog.excilys.com/?p=143</guid>
		<description><![CDATA[Bonjour, Pour ceux qui ne connaissent pas le JUG pour Java User Group est une conférence gratuite mensuelle organisée (en ce moment du moins) dans les locaux de l&#8217;ISEP à Paris. L&#8217;objectif de ce post est de faire un compte rendu de la scéance du mardi 13 octobre sur JSF 2.0 et servlet 3.0. Tout [...]]]></description>
			<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Pour ceux qui ne connaissent pas le <a href="http://www.parisjug.org/xwiki/bin/view/Main/WebHome">JUG pour Java User Group</a> est une conférence gratuite mensuelle organisée (en ce moment du moins) dans les locaux de l&#8217;<a href="http://www.isep.fr/">ISEP</a> à Paris.</p>
<p>L&#8217;objectif de ce post est de faire un compte rendu de la scéance du mardi 13 octobre sur JSF 2.0 et servlet 3.0.<br />
<span id="more-143"></span></p>
<p>Tout d&#8217;abord précisons que les slides de la précédente session du JUG, celle du 15 septembre sur la qualité logicielle, sont <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20090915">disponibles en téléchargement sur le site du Paris JUG</a>.</p>
<p>Il est également possible de <a href="http://beta.parleys.com/#id=56644&amp;st=4">visionner les conférences</a> en vidéo, en streaming sur le site <a href="http://beta.parleys.com">beta.parleys.com</a>.</p>
<h3>JSF 2.0</h3>
<p>Damien Gouyette, François Petitit</p>
<p>La conférence était divisée en deux parties, séparées par un buffet. La première partie, présentée par Damien Gouyette, qui s&#8217;occupe actuellement des normes et des pratiques JSF à Generali et par François Petitit, de Octo, portait sur les nouveautés de JSF 2.0. Ces messieurs ont fait un bref rappel de l&#8217;historique et des fonctionnalités de JSF puis ont présenté les nouveautés, assaisonnées de petites démonstrations.</p>
<p><strong>Historique :</strong><br />
JSF est <em>le</em> framework MVC de JEE, dont la première version (1.0) est sortie en 2004 (<a href="http://jcp.org/en/jsr/detail?id=127">JSR 127</a> ). La version 1.2 (<a href="http://jcp.org/en/jsr/detail?id=252">JSR 252</a>) sortie en 2006 apportait quelques améliorations. Et la version 2.0, sortant donc en 2009  et correspondant à la <a href="http://jcp.org/en/jsr/detail?id=314">JSR 314</a>, inclut pas mal de nouveautés.</p>
<p><strong>Nouveautés de JSF 2.0 :</strong></p>
<ul>
<li> Inclusion de <a href="https://facelets.dev.java.net/">facelets</a> en natif (mais une implémentation de JSF valide doit toujours supporter les JSP).</li>
<li>Import de ressources statiques dans le répertoire <em>resources</em>.</li>
<li>Possibilité de forwarder les validations de hibernate validator (ou autres implémentations de la JSR 303) jusqu&#8217;aux pages JSF avec la balise <em>f:validateBea</em>n.</li>
<li>Possibilité de configurer les managed beans avec des annotations, ce qui rend le fichier <em>faces-config.xml</em> facultatif. Pour transformer un bean en manager bean JSF il suffit de l&#8217;annoter avec <em>@ManagedBean</em>. On peut lui donner le scope request avec <em>@RequestScoped</em>.</li>
<li>Ajout du scope &#8220;view&#8221;, pratique pour les applications utilisant Ajax.</li>
<li>Facilitation de l&#8217;ajax un peu dans l&#8217;esprit de ajax4jsf (richfaces) avec (entre autres je suppose, mais c&#8217;est celle qui a été présentée) une balise <em>f:ajax</em>.</li>
<li>Possibilité d&#8217;utiliser des profils d&#8217;utilisation : dev, prod, unit test</li>
<li>Possibilité de faire des requêtes get, ce qui permet de faire de faciliter les bookmarks.</li>
</ul>
<p>JSF 2.0 est inclus dans JEE6 et compatible avec JEE5.</p>
<p>Nous avons eu droit à une démonstration de ezcomp, outil fourni avec JSF 2.0 pour faciliter la création de composants. L&#8217;idée est de créer un fichier dans le répertoire <em>resources</em>, de le configurer avec un peu de xml pour préciser par exemple les paramètres qu&#8217;il peut utiliser, et de le réutiliser ailleurs ensuite.</p>
<p>Puis ils ont fait une démonstration de l&#8217;utilisation des validations avec hibernate validator basée sur un formulaire de contact (avec des tableaux de présentation <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_neutral.gif' alt=':-|' class='wp-smiley' /> ). Le même formulaire a ensuite été utilisé pour montrer qu&#8217;on peut utiliser les mêmes validations, cette fois en ajax avec <em>f:ajax</em>.</p>
<p>Au moment des questions, Emmanuel Bernard, spec leader de la <a href="http://jcp.org/en/jsr/detail?id=303">JSR 303</a> (bean validation), est venu apporter des précisions sur son sujet. Il conseille d&#8217;utiliser un seul bean en tant que <em>managed bean</em> JSF et en tant qu&#8217;EJB chargé de requêter la base. Lorsque quelqu&#8217;un dans l&#8217;assistance a parlé de la différentiation du conteneur de servlet et du conteneur d&#8217;EJB, la réponse fuse :</p>
<blockquote><p>On s&#8217;en fout de celà ! Dans 99% des cas ils sont dans la même VM.</p></blockquote>
<p>Il est remarquable que le nom de <a href="http://seamframework.org/">seam</a> n&#8217;ait jamais été prononcé alors que beaucoup de ces fonctionnalités (il faut le dire, des manques de JSF 1.2) sont inspirés de ce framework. Web Beans (<a href="http://in.relation.to/Bloggers/TheJSR299ReferenceImplementationGetsANewName">qui ne s&#8217;appelle plus comme ça</a>) a tout de même été évoqué par E. Bernard.</p>
<p>(Buffet : J&#8217;ai eu le plaisir, au buffet entre les deux conférences, de goûter une boisson semblant être un mélange de jus de raisin et de miel &#8230; un peu surprenant (je m&#8217;attendais à du vin) mais intéressant)</p>
<h3>Servlet 3.0</h3>
<p>Rémy Maucherat</p>
<p>La seconde partie de la conférence, portant sur Servlet 3.0, a été assurée par le fort sympathique Rémy Maucherat, travaillant pour Redhat sur JBoss Web, le conteneur web de JBoss AS. Rémy a précisé qu&#8217;il était commiteur sur tomcat depuis 2000, membre de l&#8217;apache software foundation et membre de l&#8217;expert group pour la<a href="http://jcp.org/en/jsr/detail?id=315"> JSR 315</a> (servlet 3.0 donc).</p>
<p>La présentation était très technique, avec beaucoup de morceaux de code (une mise à jour prochaine liera les slides quand ils auront été publiés). Elle a suscité pas mal de réactions.</p>
<p>Ce qui ressort dès le départ c&#8217;est que le sujet concerne surtout les éditeurs de frameworks. Ce qui peut se comprendre : qui fait encore des servlets dans le cadre de ses développements ?</p>
<p>L&#8217;intérêt pour les frameworks est d&#8217;être importé en tant que jar et ne pas réclamer de configuration supplémentaire (sachant que l&#8217;utilisateur peut ensuite écraser les configurations introduites par le framework).</p>
<p>Voici la liste des nouveautés :</p>
<ul>
<li>Possibilité de configurer les servlets, des filtres, des listeners par des annotations. Il faut toujours implémenter les interfaces, la configuration dispense uniquement de la configuration dans le fichier web.xml. L&#8217;utilité des annotations est de pouvoir configurer les mappings (entres autres) sans passer par le descripteur de déploiement. Le présentateur s&#8217;est montré un peu ironique sur l&#8217;ajout des annotations comme @WebServlet, @WebFilter ou @WebListener  :</li>
<blockquote>
<li>Je vais dire un peu de mal de Sun &#8230; Sun voulait des annotations, alors on a mit des annotations.</li>
</blockquote>
<li> Possibilité d&#8217;ajouter et/ou de supprimer des servlets, des filtres ou des listeners de façon programmatique dans un Listener ou dans le ServletContextInitializer</li>
<li>Gestion de l&#8217;upload de fichiers :</li>
<blockquote>
<li> Un peu comme dans commons-fileupload &#8230; d&#8217;ailleurs c&#8217;est ce qu&#8217;on a fait</li>
</blockquote>
<li>Overlays : possibilité d&#8217;importer des jars de ressources (par exemples des CSS, javascript, &#8230;). Ce sera clairement un soulagement pour beaucoup de monde : plus besoin de copiés/collés de ressources pour utiliser le thème graphique de la boite, ou de web app mappées sur un contexte conventionné &#8220;on suppose que c&#8217;est là&#8221;. Il faut les ajouter dans le répertoire <em>META-INF/resource</em>s du jar (qui est lui dans <em>WEB-INF/lib</em>).</li>
<li>Possibilité d&#8217;exécuter des opérations de manières asynchrone. L&#8217;API est selon Rémy Maucherat le plus gros morceau. Il a décrit en détail l&#8217;API, avec les méthodes à utiliser, le système de listener, précisé qu&#8217;il ne fallait pas faire d&#8217;IO bloquante, etc &#8230; avant de conclure qu&#8217;il fallait éviter d&#8217;utiliser directement cette fonctionnalité, sauf si absolument nécessaire.</li>
<li>Gestion de &#8220;web fragments&#8221;. Un web fragment est en gros un descripteur de déploiement secondaire, qui peut être présent dans un jar (dans <em>META-INF</em>). D&#8217;ailleurs la balise racine est web-fragment au lieu de web-app, le reste étant assez similaire.</li>
<li>Amélioration de la gestion de la sécurité. L&#8217;api fournit une méthode <em>authenticate</em> ainsi que des méthodes <em>login</em> et <em>logout</em>.</li>
<li>Pluggabilité des implémentations de JSP. L&#8217;idée est de pouvoir changer d&#8217;implémentation de JSP. Selon Remy Maucherat cette fonctionnalité est utile pour tester les différentes implémentations mais déconseillée en prod.</li>
<li>Gestion de la session configurable : on peut maintenant changer le nom du paramètre jsessionid, mais avec prudence toutefois, beaucoup d&#8217;outils l&#8217;utilisant (comme modjk). Il est également possible de choisir le tracking mode : Cookie, URL ou SSL ce dernier étant :</li>
<blockquote>
<li>très bien en théorie mais en fait ça marche pas.</li>
</blockquote>
</ul>
<p>On le voit la plupart de ces fonctionnalités sont clairement destinées aux frameworks, l&#8217;idée étant que l&#8217;on puisse importer un jar, par exemple de spring mvc, et ne toucher à aucun autre fichier, même pas le descripteur de déploiement, pour l&#8217;utiliser.</p>
<p>Rémy a également précisé que la plupart de ces features allaient d&#8217;après lui prendre du temps a devenir mainstream, sauf l&#8217;asynchronicité et l&#8217;import des ressources.</p>
<p>Cette présentation a été suivie de pas mal de réactions. Quelqu&#8217;un a par exemple demandé s&#8217;il serait possible de récupérer des &#8220;paramètres du path&#8221; pour faire des URL à la REST (<a href="http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html_single/#d0e5112">comme dans seam</a>) (la réponse est non). Quelqu&#8217;un d&#8217;autre a demandé si les responsables de la JSR 315 étaient en contact avec des développeurs de frameworks. La réponse est, là encore, non.</p>
<p>Malheureusement pour une question de timing la salle a du être libérée et la séance suspendue.</p>
<h4>Conclusion</h4>
<p>Au final, comme je ne connaissais pas les nouveautés, j&#8217;ai personnellement trouvé les deux présentations assez intéressantes. Je précise qu&#8217;il valait mieux bien connaître JSF pour suivre la première. Emmanuel Bernard m&#8217;a impressionné par son talent oral : il a prit la parole sans préparation particulière à la suite de Damien et François et a su capter l&#8217;attention et préciser quelques points avec aisance. De même Rémy Maucherat a un style détendu où l&#8217;humour tient une place importante, que j&#8217;ai plutôt apprécié.</p>
<p>Je ne suis pas allé à la troisième mi-temps au pub, ayant prévu d&#8217;aller me coucher. Je me rattraperai <a href="http://www.parisjug.org/xwiki/bin/view/Meeting/20091110">la prochaine fois</a>.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;count=horizontal&amp;text=Compte%20rendu%20du%20Paris%20JUG%20%28Java%20User%20Group%29%20JSF%202.0%2C%20Servlet%203.0" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;count=horizontal&amp;text=Compte%20rendu%20du%20Paris%20JUG%20%28Java%20User%20Group%29%20JSF%202.0%2C%20Servlet%203.0" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.excilys.com%2F2009%2F10%2F15%2Fcompte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0%2F&amp;title=Compte%20rendu%20du%20Paris%20JUG%20%28Java%20User%20Group%29%20JSF%202.0%2C%20Servlet%203.0" id="wpa2a_8"><img src="http://blog.excilys.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.excilys.com/2009/10/15/compte-rendu-du-paris-jug-java-user-group-jsf-2-0-servlet-3-0/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Compte rendu BarCamp OpenWeb/Cloud/Geo/Social</title>
		<link>http://blog.excilys.com/2009/09/30/compte-rendu-barcamp-openwebcloudgeosocial/</link>
		<comments>http://blog.excilys.com/2009/09/30/compte-rendu-barcamp-openwebcloudgeosocial/#comments</comments>
		<pubDate>Wed, 30 Sep 2009 17:33:24 +0000</pubDate>
		<dc:creator>Eric BOTTARD</dc:creator>
				<category><![CDATA[J'y étais !]]></category>
		<category><![CDATA[barcamp]]></category>
		<category><![CDATA[cantine]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[fennec]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[geolocalisation]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[gwt]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[mozilla]]></category>

		<guid isPermaLink="false">http://blog.excilys.com/?p=23</guid>
		<description><![CDATA[Ce mardi avait lieu un BarCamp intitulé &#8220;OpenWeb + Cloud + Geo + Social&#8221; (l&#8217;annonce ici), auquel j&#8217;ai participé. Je vous en propose un compte rendu à la fois sur le fond, et la forme. Pour mémoire, un BarCamp est une &#8220;non conférence&#8221; où l&#8217;on privilégie la discussion et l&#8217;échange, sur des sujets pas forcément [...]]]></description>
			<content:encoded><![CDATA[<p>Ce mardi avait lieu un <a href="http://fr.wikipedia.org/wiki/BarCamp">BarCamp</a> intitulé &#8220;OpenWeb + Cloud + Geo + Social&#8221; (<a href="http://barcamp.org/BarCampParis17">l&#8217;annonce ici</a>), auquel j&#8217;ai participé. Je vous en propose un compte rendu à la fois sur le fond, et la forme. Pour mémoire, un BarCamp est une &#8220;non conférence&#8221; où l&#8217;on privilégie la discussion et l&#8217;échange, sur des sujets pas forcément définis à l&#8217;avance.<span id="more-23"></span></p>
<p>Le rendez-vous était fixé à 14h à <a href="http://maps.google.fr/maps?f=q&amp;source=s_q&amp;hl=fr&amp;geocode=&amp;q=la+cantine+silicon+sentier&amp;sll=46.75984,1.738281&amp;sspn=13.866805,31.289062&amp;ie=UTF8&amp;ll=48.868215,2.348757&amp;spn=0.051999,0.122223&amp;z=14&amp;iwloc=A">La Cantine</a>, mais à 14h45 personne n&#8217;avait encore pris la parole (on comptait plus de 120 inscrits), chacun se réfugiant dans un coin, tapotant sur son notebook (de préférence avec un pomme). Je plaide coupable.</p>
<div id="attachment_83" class="wp-caption alignright" style="width: 160px"><a href="http://blog.excilys.com/wp-content/uploads/2009/09/Tableau.jpg"><img class="size-thumbnail wp-image-83" title="Tableau Sessions" src="http://blog.excilys.com/wp-content/uploads/2009/09/Tableau-150x150.jpg" alt="Les différentes sessions retenues" width="150" height="150" /></a><p class="wp-caption-text">Les différentes sessions retenues</p></div>
<p>Puis enfin, vers 15h00 tout se met en branle et chacun se présente rapidement (nom, prénom et 3 tags pour se définir &#8211; ce qui a vite tourné en 3 tags concernant ce que l&#8217;on aimerait voir abordé à la conf, mais tant mieux ceci a permis de monter les sessions plus rapidement)</p>
<p>Une fois le tour de salle effectué (je ne saurais dire combien de personnes étaient présentes, mais la cantine était bien remplie), Patrick Chanezon (Google) et quelques autres essaient de grouper les tags les plus fréquemment cités et proposent des sessions. Il faut avouer que l&#8217;assistance (très nombreuse) restait relativement passive, si bien que cette phase a pu ressembler à une prise d&#8217;otage, mais sans cela on y serait encore. Finalement, environ 5 ou 6 sessions sont définies et je décide de participer à celles-ci :</p>
<h3>Session GWT</h3>
<p>pilotée par Didier Girard (SFEIR)</p>
<p><img class="alignright" title="Logo GWT" src="http://code.google.com/intl/fr-FR/webtoolkit/images/gwt-logo.png" alt="" width="100" height="100" /></p>
<p>En petit groupe, s&#8217;adressant à un public plutôt néophyte et pas forcément orienté Java/Entreprise, Didier nous déroule une présentation similaire à celle-ci <a href="http://www.slideshare.net/dgirard/gwt-gears-the-browser-is-the-platform">http://www.slideshare.net/dgirard/gwt-gears-the-browser-is-the-platform</a></p>
<p>En deux mots :</p>
<ul>
<li>Il y a un avant et un après &#8220;vague Ajax&#8221; (2005)</li>
<li>Le javascript &#8220;à la main&#8221; devient vite invivable :
<ul>
<li>Problèmes de compatibilité Cross Navigateur</li>
<li>Maintenabilité <em>vs</em> Performance : il faut choisir</li>
</ul>
</li>
<li>Le Manifeste GWT : je veux une technologie à la fois <em>user friendly</em> (sexy, performant) et <em>dev friendly</em> (outillage (re)connu, debugger, support de gros projets)</li>
</ul>
<p>La phrase vendeuse que Didier présente aux décideurs (et avec laquelle j&#8217;adhère) : &#8220;aussi simple de développer un application en GWT pour le web qu&#8217;une application Windows avec VB&#8221;</p>
<p>Nous discutons ensuite des extensions autour de GWT et de l&#8217;outillage. Didier mentionne <a href="http://www.instantiations.com/gwtdesigner/index.html">GWTDesigner</a> (que je n&#8217;avais jamais vu tourner auparavant) pour commencer à découvrir GWT et prototyper rapidement des applications. Un autre projet que je découvre lors de cette session est <a href="http://code.google.com/p/gwtquery/">gwtquery</a>, un portage de jQuery en GWT.</p>
<p>Une session intéressante, même si nous avons été pris par le temps (personnellement, j&#8217;aurais aimé aborder un peu plus les nouveautés apportées par GWT 2.0 &#8211; Didier et moi tombons d&#8217;accord sur un point : GWT 2.0 apporte des changements radicaux et les bonnes pratiques de la version 1.x seront certainement à revoir. Je pense personnellement que la v2.0 prouve la maturité de la technologie pour de grosses applications, ne serait-ce que grâce à l&#8217;ajout de la fonction <a href="http://code.google.com/p/google-web-toolkit/wiki/CodeSplitting">runAsync()</a>)</p>
<h3>Session Hackabilité</h3>
<p>(Paul Rouget + Tristan Nitot)@Mozilla.org +Patrick Chanezon@Google<img class="alignright" title="Firefox Collections" src="https://addons.mozilla.org/img/amo2009/illustrations/logo-collections-100x125.png" alt="" width="100" height="125" /></p>
<p>Une session dans le plus grand espace de la cantine, avec projection sur grand écran, nos 3 compères sur scène et micros dans les mains afin d&#8217;accommoder un public très nombreux.</p>
<p>Ce n&#8217;était pas la première session sous ce format (une session sur html5 pendant que je participait à GWT avait déjà eu lieu), mais c&#8217;est à ce moment que je réalise que l&#8217;esprit BarCamp dans sa forme originelle n&#8217;aura pas lieu aujourd&#8217;hui : on a plus affaire ici à une présentation asymétrique (certes plus ou <a href="http://standblog.org/blog/post/2009/09/16/A-propos-de-bidouillabilité">moins</a> improvisée) avec questions réponses qu&#8217;à une discussion autour d&#8217;une table. Qu&#8217;importe, d&#8217;autant que la fin de la session dérive gentiment vers la mobilité avec Fennec. Je dois également préciser que cette session était l&#8217;unique option pour ce créneau horaire (l&#8217;alternative offerte initialement par Patrick Chanezon ayant mystérieusement disparu).</p>
<p>Après quelques démos sur les possibilités offertes en terme de bidouillabilité de Firefox lui-même (dont par exemple un moteur firefox sans la &#8220;coque&#8221; : pas de bouton, tout piloté par des raccourcis clavier), on aborde les points de bidouillage possible sur le web :</p>
<ul>
<li>html</li>
<li>css (ex: <a href="https://addons.mozilla.org/fr/firefox/addon/2108">Stylish</a>)</li>
<li>javascript (<a href="https://addons.mozilla.org/fr/firefox/addon/748">GreaseMonkey</a>)</li>
</ul>
<div id="attachment_88" class="wp-caption alignleft" style="width: 310px"><a href="http://blog.excilys.com/wp-content/uploads/2009/09/Session-Hackabilité.jpg"><img class="size-medium wp-image-88" title="Session Hackabilité" src="http://blog.excilys.com/wp-content/uploads/2009/09/Session-Hackabilité-300x225.jpg" alt="A droite, plus ou moins cachés : T. Nitot, P. Rouget &amp; P. Chanezon" width="300" height="225" /></a><p class="wp-caption-text">A droite, plus ou moins cachés : T. Nitot, P. Rouget &amp; P. Chanezon</p></div>
<p><a href="http://fr.wikipedia.org/wiki/Tristan_Nitot">Tristan Nitot</a> (prés. Mozilla Europe) précise que pour lui, la hackabilité est importante car elle garantit la liberté de l&#8217;utilisateur. Il cite par exemple la possibilité via GreaseMonkey d&#8217;ajouter un bouton &#8220;vraiment supprimer sur gmail&#8221; ou la suppression de l&#8217;enregistrement d&#8217;un click sur moteur de recherche Google.</p>
<p>Patrick mentionne la hackabilité (prototypage) d&#8217;un <em>bugtracker</em> en entreprise : permet de &#8220;contourner&#8221; les planning de release des applis en interne : si je veux rajouter une fonctionnalité relativement simple à mon <em>bugtracker</em> mais que la prochaine release est dans 6 mois, GreaseMonkey peut m&#8217;aider (apparemment, c&#8217;est du vécu).</p>
<p>Il évoque ensuite l&#8217;évolution au cours des 4 dernières années des librairies chez Google : il y a 4 ans, une seule API ouverte sur l&#8217;extérieur (AdWords) en SOAP (la mode à l&#8217;époque) : bien en java/net, mais pas top dans les autres langages.</p>
<p>Le premier Mashup n&#8217;est il pas la réunion (illégale) de Google Maps avec Craig&#8217;s List ? (par Paul Rademacher, aujourd&#8217;hui employé chez Google). GMaps a ensuite fournit ses APIs (puis le reste des APIs de google a suivi). Conclusion : les APIs de WebServices ont de plus en plus tendance à évoluer vers quelque chose d&#8217;exploitable sur le client (au sens navigateur) : ceci est dû d&#8217;après Patrick à cette notion de bidouillabilité.</p>
<p><img class="alignright" title="Mozilla Fennec" src="http://farm4.static.flickr.com/3146/2626006005_8e881be814_o.jpg" alt="Mozilla Fennec" width="220" height="136" /><br />
Quelqu&#8217;un dans l&#8217;auditoire mentionne la hackabilité via les fonctions gmail labs omniprésentes alors qu&#8217;un hack du navigateur est perdu dès que l&#8217;on change de navigateur. La réponse des équipes Mozilla : <a href="http://labs.mozilla.com/weave/">Weave</a>. Dans un premier temps, synchroniser la &#8220;awesome bar&#8221; entre tous ses navigateurs (Fennec dans sa poche et Firefox sur son desktop).</p>
<p>Nous en venons donc à parler de Fennec et des extensions possibles : le moteur de Fennec 1.0 est celui de FF3.6. Même principe d&#8217;extensions (mais non compatibles, ne serait-ce que parce qu&#8217;il faut repenser totalement la user experience).</p>
<p>Si la hackabilité est acquise sur le desktop, le monde du mobile est encore très fermé (à cause de la main mise des opérateurs télécom). La première brèche fut iPhone et le store (mais fermeture et non transparence de la part d&#8217;Apple). Android et son Market vont plus loin, le but de Fennec est d&#8217;aller encore plus loin.</p>
<p>Didier Girard mentionne le fait qu&#8217;html5 promet bcp, mais <em>quid</em> de l&#8217;intéraction avec les fonctions natives des téléphones (<em>eg.</em> prendre des photos, <em>etc</em>). La réponse des équipes de Mozilla : c&#8217;est implémenté de façon &#8220;standard&#8221; dans Fennec (standard, quel standard?).</p>
<p>Une possibilité (déjà implémentée ?) qu&#8217;évoque Tristan Nitot est d&#8217;avoir l&#8217;équivalent d&#8217;une balise html &lt;input type=&#8217;photo&#8217;&gt;. Exemple : je prends ma photo de profil facebook avec la caméra en direct. L&#8217;utilité d&#8217;avoir une fonction de capture de <strong>vidéo</strong> en html est limitée d&#8217;après lui.</p>
<p>Mozilla aimerait qu&#8217;il n&#8217;y ait qu&#8217;une plateforme pour le mobile, idéalement le web. De fait Palm et son <a href="http://developer.palm.com/index.php?option=com_learn&amp;view=learn">Palm Pré</a> reviennent souvent. C&#8217;est également intéressant d&#8217;entendre Patrick Chanezon soutenir une telle initiative, alors que Google a lancé la plateforme Android&#8230;</p>
<p>Quelqu&#8217;un dans l&#8217;assistance rappelle qu&#8217;Apple avait initialement sorti l&#8217;iPhone sans la possibilité de faire des applis natives et &#8220;misait&#8221; sur le web. C&#8217;est exactement l&#8217;inverse qui s&#8217;est produit. On mentionne également le projet <a href="http://labs.mozilla.com/prism/">Prism</a>, qui permet en gros à des applis d&#8217;embarquer le moteur de Mozilla pour des applis dédiées et de le rebrander à leur sauce, afin d&#8217;obtenir une pseudo-application &#8220;lourde&#8221;.</p>
<p>Au final une session intéressante pour les geeks, même si le lien avec le sujet initial peut paraitre flou</p>
<h3>Session Cloud Computing</h3>
<p>Didier Girard, Patrick Chanezon<br />
Le <a href="http://fr.wikipedia.org/wiki/Informatique_dans_le_nuage">Cloud Computing</a> est certainement le buzzword de 2009, et la mise à disposition récente de l&#8217;offre Google pour Java (ainsi que les événements de cet été concernant <a href="http://www.springsource.com/newsevents/springsource-launches-enterprise-java-c">SpringSource/VMWare/CloudFoundry</a>) n&#8217;ont fait que renforcer la tendance.</p>
<p><img class="alignright" title="Google App Engine" src="http://code.google.com/intl/fr-FR/appengine/images/appengine_lowres.gif" alt="" width="142" height="109" />Cette session commence par quelques sondages sur les connaissances du public et mentionne les différentes façons de percevoir le Cloud. On cite notamment les 3 niveaux {infrastructure, platform, software} as a Service. On pourrait également ajouter le StaaS (Stockage as a Service).</p>
<p>En un mot, le Cloud Computing est la possibilité technique (et le business associé) offerte par des providers à des clients (souvent des entreprises) de déporter leur SI sur des machines fortement mutualisées. Le Cloud est souvent associé à une architecture largement distribuée, sensée apporter une forte disponibilité et de bonnes performances.</p>
<p>L&#8217;exemple typique en IaaS est Amazon EC2 : la possibilité de provisionner des machines, des disques, <em>etc</em>. C&#8217;est au client de construire (ou de décrire) l&#8217;architecture logicielle par dessus. Ceci permet de faire ce que l&#8217;on veut avec les machines.</p>
<p>L&#8217;approche Google, avec Google App Engine (prononcez &#8220;end&#8217;jin&#8221; et pas &#8220;end&#8217;jailleneu&#8221; <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ) : exposer un ensemble de services sous forme d&#8217;APIs (URLfetch, BigTable, manipulation d&#8217;images, jobs) puis Google assure le <em>scaling</em> de l&#8217;appli. Notez qu&#8217;il n&#8217;y a pas officiellement de SLA à l&#8217;heure actuelle. Cette solution se limite à des applications web (ce qui est radicalement différent des possibilités de EC2), même s&#8217;il existe (notamment dans la version python) des librairies pour ne voir GAE que comme un &#8220;backend&#8221;.</p>
<p>Une question se fait entendre dans le public : Google doit sûrement avoir un équivalent de EC2, mais ne l&#8217;expose pas. Pourquoi ? Est-ce la stratégie, ou une incapacité à le faire ? En tous cas, Patrick mentionne qu&#8217;en entreprise les clients évoquent des fonctionnalités manifestement trouvées chez EC2, mais que Google n&#8217;a pas. Pas mal de personnes présentes estiment qu&#8217;il est plus facile de &#8220;monter&#8221; la stack que de la redescendre (<em>ie.</em> il serait beaucoup plus facile pour Amazon de fournir une approche à la GAE que l&#8217;inverse). En effet, tout le monde semble dire qu&#8217;Amazon dispose d&#8217;une avance considérable dans le domaine.</p>
<p>Beaucoup de questions autour des quotas (GAE est gratuit pour les &#8220;petits&#8221; volumes alors qu&#8217;Amazon est (certes peu cher) mais payant dès la première requête : un avantage pour Google <em>a priori</em>). Pour avoir du succès en entreprise, peut-être que Google n&#8217;a qu&#8217;à faire payer dès la première requête. Les entreprises <em>adooorent</em> payer. J&#8217;avoue ne pas comprendre tous ces questionnements de l&#8217;assistance : soit l&#8217;on est en dessous des quotas et l&#8217;on peut déjà s&#8217;estimer heureux de disposer d&#8217;une infrastructure gratuite, soit l&#8217;on est au dessus et on commence à peine à payer pour un service rendu. Et à ce moment (les quotas sont tout de même hauts), on peut espérer que l&#8217;on aura trouvé un moyen de faire rentrer des revenus.</p>
<p>Le reste de la session ne concernera plus que Google App Engine. Avec des retours d&#8217;expérience par exemple : le comportement en environnement de dev local n&#8217;est pas forcément similaire à ce qui se passe une fois déployé.</p>
<p>A propos des plus grosses GAE (celles qui dépassent les quotas), Patrick cite <a href="http://www.buddypoke.com/">http://www.buddypoke.com/</a></p>
<p>On mentionne également l&#8217;utilisation de JDO avec <a href="http://en.wikipedia.org/wiki/BigTable">BigTable</a> (la solution de base <strong>non</strong> relationnelle qui équipe GAE) qui reste problématique et ne semble pas encore mature (le mapping JDO, pas BigTable). En python, cela se passe mieux (de façon plus bas niveau <em>a priori</em>) : Est-ce que finalement BigTable ne serait pas plus adapté aux langages dynamiques ?</p>
<p>A propos de l&#8217;adhérence à GAE : si l&#8217;on veut s&#8217;éloigner de Google App Engine demain, quelles sont les options ? Sur le moment, je retiens le mot <a href="http://open.eucalyptus.com/">Eucalyptus</a>, mais a priori c&#8217;est du côté d&#8217;<a href="http://code.google.com/p/appscale/">appscale</a> qu&#8217;il faut aller voir, Eucalyptus étant une couche entre par exemple EC2 et appscale. Tout cela fait beaucoup de couches <img src='http://blog.excilys.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Un souci avec les base de données non relationnelles (non spécifique à GAE) : impossible de comparer deux colonnes, ce qui pose problème avec la géolocalisation par exemple (longitude ET latitude) : des solutions existent à ce problème particulier et me permettent de découvrir l&#8217;algorithme <a href="http://en.wikipedia.org/wiki/Geohash">GeoHash</a>.</p>
<p>Je mentionne la liste des choses qui semblent acquises et qui disparaissent dans le cloud (par exemple la notion de session). Mon voisin anglophone (un californien fraichement débarqué à Paris) m&#8217;envoie vers un article écrit par ses soins : page 14-20 de <a href="http://iasahome.org/c/document_library/get_file?uuid=d5d99108-153d-48e0-9576-888b6943bc3f&amp;groupId=25692">ce pdf</a>. C&#8217;est ça aussi l&#8217;esprit BarCamp.</p>
<h4>Conclusion</h4>
<p>Il est 21h et alors que les pizzas commencent à refroidir, nous quittons les lieux. Je retiendrais de ce &#8220;BarCamp&#8221; un propos intéressant (même s&#8217;il ne collait pas forcément à l&#8217;idée que l&#8217;on pouvait s&#8217;en faire à la lecture de l&#8217;intitulé), dans une forme détournée (un BarCamp avec tant de personnes me parait difficile dans les locaux de la cantine, et toutes les personnes avec lesquelles j&#8217;ai pu discuter s&#8217;accordent à dire qu&#8217;elles ont eu un tel ressenti). Mais encore une fois, je pense que la forme n&#8217;est pas une fin en soi, seul le fond importe.</p>
<p><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;count=horizontal&amp;text=Compte%20rendu%20BarCamp%20OpenWeb%2FCloud%2FGeo%2FSocial" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service twitter_tweet" src="http://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;counturl=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;count=horizontal&amp;text=Compte%20rendu%20BarCamp%20OpenWeb%2FCloud%2FGeo%2FSocial" scrolling="no" style="border:none;overflow:hidden;width:130px;height:20px"></iframe><!--<![endif]--><!--[if IE]><iframe frameborder="0" allowTransparency="true" class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><![endif]--><!--[if !IE]><!--><iframe class="addtoany_special_service google_plusone" src="https://plusone.google.com/u/0/_/%2B1/fastbutton?url=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;size=medium&amp;count=true" scrolling="no" style="border:none;overflow:hidden;width:90px;height:20px"></iframe><!--<![endif]--><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.excilys.com%2F2009%2F09%2F30%2Fcompte-rendu-barcamp-openwebcloudgeosocial%2F&amp;title=Compte%20rendu%20BarCamp%20OpenWeb%2FCloud%2FGeo%2FSocial" id="wpa2a_10"><img src="http://blog.excilys.com/wp-content/plugins/add-to-any/share_save_120_16.png" width="120" height="16" alt="Share"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://blog.excilys.com/2009/09/30/compte-rendu-barcamp-openwebcloudgeosocial/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

