<?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>Genigraph : Le Blog</title>
	<atom:link href="http://blog.genigraph.fr/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.genigraph.fr</link>
	<description>Exprimer sa différence</description>
	<lastBuildDate>Tue, 16 Apr 2013 15:46:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.4</generator>
		<item>
		<title>Mon Devoxx France à moi</title>
		<link>http://blog.genigraph.fr/2013/04/15/mon-devoxx-france-a-moi/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=mon-devoxx-france-a-moi</link>
		<comments>http://blog.genigraph.fr/2013/04/15/mon-devoxx-france-a-moi/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 18:30:53 +0000</pubDate>
		<dc:creator>Vincent Ferries</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Devoxx France]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=575</guid>
		<description><![CDATA[Autant le dire tout de suite, Devoxx France est un évènement pour le moins enrichissant. La soif de connaissance et l&#8217;envie de partager des participants y est palpable, et on y apprend certainement plus en deux ou trois jours qu&#8217;en &#8230; <a href="http://blog.genigraph.fr/2013/04/15/mon-devoxx-france-a-moi/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Autant le dire tout de suite, Devoxx France est un évènement pour le moins enrichissant. La soif de connaissance et l&#8217;envie de partager des participants y est palpable, et on y apprend certainement plus en deux ou trois jours qu&#8217;en de nombreuses heures de R&amp;D personnelle. Venu de Toulouse pour l&#8217;occasion, je n&#8217;ai pas été déçu du voyage!</p>
<h2>Une meilleure diffusion de la connaissance</h2>
<p>Dès la keynote d&#8217;ouverture, nous avons appris que l&#8217;intégralité des sessions enregistrées à Devoxx France seraient disponibles sur <a href="http://www.parleys.com">Parleys</a> sur <a href="http://parleys.com/channel/516409b4e4b082c6506c9e3a/presentations" target="_blank">la chaîne dédiée</a> sur laquelle les vidéos des différentes présentations seront ajoutées prochainement. Je vous encourage vivement à aller voir celles dont les sujets vous intéressent le plus (et accessoirement <a href="http://parleys.com/channel/5148921e0364bc17fc56b94e/presentations" target="_blank">celles du Toulouse JUG</a> que vous auriez pu rater).  Avec la Google I/O qui approche mi-mai, ça risque en effet de faire beaucoup de choses à regarder, mais je vous assure, ça vaut vraiment le coup. Je vais essayer de vous détailler un peu ici les sujets ou présentations qui m&#8217;ont le plus marqué lors de la conférence. Pour moi ses 3 axes principaux pour cette année concernaient la programmation fonctionnelle (jdk8 et Scala), le JavaScript, et les visions du futur pour Java. Je vais essayer ici de reprendre un peu ces trois aspects. Chaque conférence aurait pu faire l&#8217;objet d&#8217;une présentation détaillée vu le niveau des intervenants, mais il faut bien faire des choix! Je n&#8217;ai malheureusement pas pu voir la présentation sur Java EE 7 par Arun Gupta que j&#8217;attendais beaucoup, je me rattraperai lors de la diffusion des vidéos.</p>
<h2>What every Hipster should know about functionnal programming</h2>
<p>Je dois saluer ici les qualités d&#8217;oratrice de Bodil Stokke et son énorme travail de préparation, qui a accessoirement donné deux conférences dans cette édition de Devoxx. Pour ceux qui ne la connaitraient pas, elle s&#8217;est illustrée notamment grâce à sa célèbre théorie : &#8220;Facial hair theory of programming language design&#8221;. Je vous conseille vivement d&#8217;aller <a href="http://www.youtube.com/watch?v=N4MHJiAPfsg" target="_blank">y jeter un oeil</a>. Cette conférence ayant déjà été donnée lors de JFokus, vous pouvez dores et déjà <a href="http://parleys.com/play/5148922b0364bc17fc56ca4d/chapter0/about" target="_blank">aller la voir</a>.</p>
<p>Le titre évoque bien le contenu de la présentation. Elle s&#8217;est évertuée à vulgariser tous les mots barbares utilisés par ceux qui font de la programmation fonctionnelle. Sans être exhaustif, je sais maintenant mieux ce que sont les &#8220;functors&#8221;, &#8220;combinators&#8221; mais aussi les triples de Kleiski, la curryfication et les monades.</p>
<p>La présentation a consisté en un live coding en TypeScript, juste du JavaScript typé, de tous ces mots barbares sur fond de &#8220;My Little Poney&#8221; (thème récurrent à Devoxx cette année). Elle constitue une excellente piqûre de rappel de nombre d&#8217;aspects de la programmation fonctionnelle dont le map/reduce notamment à l&#8217;origine de bon nombre de moteurs Big Data que nous utilisons actuellement.</p>
<p>Les présentations autour de la programmation fonctionnelle devaient représenter un bon quart des conférences si on prend en compte Scala, la programmation fonctionnelle en tant que tel et qu&#8217;on ajoute une touche de Ceylon et du JDK8. Il y a de bonnes chances qu&#8217;on en croise de plus en plus dans le mode du développement logiciel durant les mois et années à suivre.</p>
<h2>Du JavaScript propre?</h2>
<p>Voilà une question que je me pose depuis pas mal de temps. Je me penche réellement sur JavaScript depuis peu et n&#8217;ai jusqu&#8217;à présent abordé que les grands classiques tels que jQuery notamment.</p>
<p>J&#8217;ai vite compris la puissance cachée derrière ce vieux langage mal compris, ainsi que ses faiblesses (<a href="http://destroyallsoftware.com/talks/wat" target="_blank">WAT?</a>), notamment au niveau de la lisibilité et capacité à être maintenu. Au vu des avancées des navigateurs (performances x20 notamment), JavaScript est désormais vraiment devenu une arme plus qu&#8217;intéressante. Si en plus on l&#8217;associe aux fonctionnalités offertes par HTML5, on obtient vraiment un outil puissant pour faire des sites flexibles rapidement.</p>
<p>Cependant, comment s&#8217;y retrouver dans un gros projet JavaScript? Comment le garder maintenable au fil du temps? C&#8217;est la questions à laquelle ont répondu Julien Jakubowski et Romain Linsolas.</p>
<p>Tout d&#8217;abord, s&#8217;il y a un livre à avoir dans sa bibliothèque sur JavaScript, il s&#8217;agit de <a href="http://shop.oreilly.com/product/9780596517748.do" target="_blank">JavaScript : The Good Parts</a>. Ensuite, pour contourner le problème, vous pouvez vous tourner vers CoffeeScript ou Dart, mais ce n&#8217;était pas l&#8217;approche abordée ici. A la place, les orateurs ont proposé une myriade d&#8217;outils afin de faciliter la maintenance de gros projets :</p>
<ul>
<li><a href="http://angularjs.org/">Angular</a>, <a href="http://backbonejs.org/">Backbone</a> et <a href="http://emberjs.com/">Ember</a> afin de déporter le MVC côté client</li>
<li><a href="http://requirejs.org/docs/whyamd.html">Asynchronous Module Definition (AMD)</a> tel que require.js pour aider à modulariser le code</li>
<li><a href="http://www.jslint.com/">JSLint</a> (équivalent de checkstyle et PMD) afin de trouver des erreurs fréquentes</li>
<li><a href="http://jquery.com/">jQuery</a> pour rendre plus lisible les parcours du DOM</li>
<li><a href="http://mustache.github.io/">Mustache.js</a> pour le templating (handlebars + underscore)</li>
<li>Pour les tests d&#8217;intégration, l&#8217;indétrônable <a href="http://docs.seleniumhq.org/">Selenium</a> ou <a href="http://www.getwindmill.com/" target="_blank">Windmill</a></li>
<li>Pour vos tests unitaires : <a href="http://pivotal.github.io/jasmine/" target="_blank">Jasmine</a> (+CoffeScript?), <a href="http://qunitjs.com/" target="_blank">QUnit</a>, <a href="http://visionmedia.github.io/mocha/" target="_blank">Mocha</a>&#8230;</li>
<li>Karma, PhantomJS, Casper&#8230;</li>
<li>build maven + jenkins + Sonar pour automatiser les tests</li>
<li><a href="http://yeoman.io/">Yeoman</a> (Yo pour le scaffolding, Grunt comme task launcher et Bower pour la gestion des dépendances)</li>
</ul>
<p>Autant dire que les outils et les solutions sont nombreux! Cependant, il est facile de se perdre dans une telle effervescence, des frameworks JavaScript sortent tous les mois. En résumé, utilisez du MV*, modularisez votre code, évitez les &#8220;parties sales&#8221; de JavaScript, mettez en place des tests et automatisez vos tests, déploiement etc.</p>
<h2>What I want in Java 9</h2>
<p>Autant le dire tout de suite, cette session est celle qui a le plus piqué ma curiosité au vif. Je ne vais pas ici vous décrire ce que sera Java 9, il y a cependant déjà des choses prévues (Jigsaw, l&#8217;Arlésienne des JDKs?) auxquelles je m&#8217;attaquerai dans un prochain post. Je vais plutôt essayer de retranscrire ici ce que j&#8217;ai compris et ce qui m&#8217;a plu de la vision de Rémi Forax.<br />
A l&#8217;origine était invokedynamic, ou du moins depuis le JDK7, vous savez le truc utilisé par à peu près tous les langages de programmation basés sur la JVM sauf Java pour augmenter de façon drastique leurs performances. Le principe est simple : noms et typages symboliques à la compilation. On référence ensuite des pointeurs de fonction au moment des appels et on gagne énormément en performances pour les langages dynamiques. Je ne vais pas m&#8217;étaler dessus, ce n&#8217;est pas là le fond de notre problème, le truc important est que ça permet de comprendre un peu que la JVM gère déjà des choses (du moins des langages) dynamiques. La réflexion qui en découle consiste en une phrase : &#8220;Pourquoi ne pas utiliser aussi ça depuis Java?&#8221;<br />
On se retrouve enfermés depuis un moment dans des frameworks complexes pour gérer l&#8217;inversion de contrôle, nous obligeant à écrire des proxys pour appliquer nos concepts d&#8217;AOP, d&#8217;injection de dépendances et j&#8217;en passe. Du coup, on se trimballe dans la JVM à la fois la classe et la définition de son proxy, qui embarque toutes ses méthodes notamment. De plus, Java EE définit des services que doivent fournir les conteneurs de nos serveurs d&#8217;application avec les problèmes de compatibilités inter conteneurs qu&#8217;on leur connait.</p>
<p>Selon notre cher conférencier, il y aurait un moyen d&#8217;unir ces deux mondes de Java SE et Jave EE qui ne se sont plus beaucoup parlé depuis un petit moment. Pour cela, il propose un nouveau mot clé dans le langage Java : <strong>interceptable</strong>. Ce mot clé magique permettrait de définir qu&#8217;une classe peut être interceptée, écoutée. La JVM se chargerait ensuite simplement d&#8217;appeler les intercepteurs enregistrés. Je n&#8217;ai malheureusement pas toutes les informations nécessaires pour rentrer plus dans le détail, mais à priori, cette amélioration du langage ne demanderait que relativement peu de développement dans javac et permettrait entre autres choses :</p>
<ul>
<li>De ne plus avoir besoin d&#8217;autant de boxing et des stack traces toute pourries!</li>
<li>De baisser fortement le coût d&#8217;entrée des technos Java EE</li>
<li>D&#8217;utiliser simplement des concepts avancés disponibles sous Java EE en Java SE</li>
</ul>
<p>Il proposait aussi un mot clé <strong>ghost</strong> qui permettrait que le typage soit connu par le compilateur mais pas par la VM (dans un souci de gain de performance je présume).</p>
<p>Apparemment, il cherchait du monde pour faire pression avec lui pour qu&#8217;Oracle écoute ses dires, je manque de précisions à ce sujet, mais si on me dit où, je signe de suite!</p>
<p>Au final, Devoxx a été pour moi une expérience très enrichissante. C&#8217;est vraiment le genre d&#8217;évènement qui vous redonne la foi dans votre métier et vous rappelle pourquoi vous vous levez tous les matins, pas juste pour vous nourrir, mais parce que vous faites un boulot qui vous plait. Vivement l&#8217;année prochaine! D&#8217;ici là, n&#8217;hésitez pas à demander des précisions ou à me compléter si vous avez des informations supplémentaires!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2013/04/15/mon-devoxx-france-a-moi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retour sur Devoxx France 2013</title>
		<link>http://blog.genigraph.fr/2013/04/12/retour-sur-devoxx-france-2013/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=retour-sur-devoxx-france-2013</link>
		<comments>http://blog.genigraph.fr/2013/04/12/retour-sur-devoxx-france-2013/#comments</comments>
		<pubDate>Fri, 12 Apr 2013 07:26:45 +0000</pubDate>
		<dc:creator>pleplay</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Devoxx France]]></category>
		<category><![CDATA[Divers]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=548</guid>
		<description><![CDATA[Le Devoxx 2013 France s’est déroulé du 27 au 29 mars 2013. Voici quelques conférences qui ont retenu mon attention, soit parce qu&#8217;elles peuvent m&#8217;aider au quotidien, soit parce qu&#8217;elles m&#8217;ont permis de découvrir des sujets que je connaissais mal &#8230; <a href="http://blog.genigraph.fr/2013/04/12/retour-sur-devoxx-france-2013/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Le Devoxx 2013 France s’est déroulé du 27 au 29 mars 2013. Voici quelques conférences qui ont retenu mon attention, soit parce qu&#8217;elles peuvent m&#8217;aider au quotidien, soit parce qu&#8217;elles m&#8217;ont permis de découvrir des sujets que je connaissais mal comme le NoSql.</p>
<p><strong>Elastifiez votre application : du SQL au NoSQL en moins d&#8217;une heure</strong></p>
<p>Intervenants :<br />
- David Pilato technical advocate chez Elasticsearch (twitter @dadoonet)<br />
- Tugdual Grall Technical Evangelist  Couchbase (twitter @tgrall)</p>
<p>Les bases de données relationnelles peuvent subir des grosses montées en charge et la solutions de scalibilité verticale (plus gros serveur) a ses limites et elles ont des structures de données rigides. Les deux conférenciers pour résoudre ces problèmes de charge, nous proposent d&#8217;utiliser Couchbase, une base NoSql, et Elastic Search, un moteur de recherche fulltext  à la Google.</p>
<p>Les 2 conférenciers pour démontrer l&#8217;efficacité de leurs produits, sont partis d&#8217;un exemple simple constitué de 3 tables, basé sur une architecture classique de DAO avec une base relationnelle. Ils ont montré selon eux, les limites de ce modèle, implémentation complexe, problème de performances, moteur de recherche trivial et non performant &#8230;<br />
Ils ont ensuite appliqué des modifications successivement par couche pour démontrer l&#8217;efficacité de leur produit : mise en place d&#8217;un service REST via<br />
Spring, remplacement de la base relationnelle par la base NoSql Couchbase, mise en place d&#8217;Elastic Search, utilisation de leur outil de reporting en temps réel et enfin injection d&#8217;un million d&#8217;enregistrements.</p>
<p>La démonstration était impressionnante. La mise en place des outils a été rapide et paraissait simple.  L&#8217;injection des 1 million s&#8217;est réalisée en moins de 5 minutes et les performances de l&#8217;application étaient toujours aussi bonnes après. Les avantages d&#8217;une base NoSql sont séduisants par rapport à une base relationnelle classique, on peut modifier facilement les schémas des données, scalibilité horizontale , performance &#8230;</p>
<p><a href="http://tugdualgrall.blogspot.fr/">Blog de Tugdual Grall</a></p>
<p>Ancienne présentation des conférenciers :<br />
<a href="http://fr.slideshare.net/normandyjug/normandy-jugmarch2013">http://fr.slideshare.net/normandyjug/normandy-jugmarch2013</a><br />
<a href="http://fr.slideshare.net/dadoonet">http://fr.slideshare.net/dadoonet</a></p>
<p><strong>Le Space-Mountain du développement Java d&#8217;entreprise</strong><br />
Intervenant : Florent Ramière (twitter : @framiere)</p>
<p>Florent Ramière a plus de quinze années d&#8217;expérience dans le développement logiciel et la conduite de projets informatiques.<br />
En 2009 il a lancé <a href="http://www.SpringFuse.com">www.SpringFuse.com</a>, produit de génération de code en ligne.</p>
<p>A travers une démo en direct-live avec Eclipse, Florent Ramière a présenté une application web d&#8217;entreprise de type CRUD, avec entre autres les technologies suivantes:<br />
Maven 3<br />
Spring 3.2<br />
JPA 2.2<br />
Bean Validation 1.0<br />
JSF 2.1<br />
Primefaces 3.4<br />
Junit 4<br />
Mockito<br />
Selenium 2<br />
Jprofiler</p>
<p>Pour cette conférence voici les points que j&#8217;ai découverts ou redécouverts :<br />
- Guava , librairie utilitaire de Google qui nous offre un ensemble de classes utiles pour des usages assez fréquents comme la gestion des collections, la gestion des fichiers, des types simples ou de la synchronisation.<br />
- Lombok, framework qui permet de générer des méthodes (par exemple les getter et les setter) au lancement de l&#8217;application à l&#8217;aide d&#8217;annotations. Cela permet de rendre plus visible le code en supprimant l’implémentation des méthodes triviales.<br />
- Selenium : permet d&#8217;automatiser des tests fonctionnels d&#8217;application web.<br />
- JMeter : pour faire des tests de charges<br />
- JProfiler : Outil de profiling capable de mesurer les performances de la partie java d&#8217;une application, mais aussi Sql et hibernate. Par contre ce logiciel est payant.<br />
- ISpace : outil pour trouver les dépendances cycliques.</p>
<p>Le conférencier a aussi mis en avant les avantages de l&#8217;intégration continue.</p>
<p><strong>IDE Java : astuces de productivité pour le quotidien</strong><br />
Conférence par Xavier Hanin (@xavierhanin)</p>
<p>Xavier Henin a présenté des astuces pour des gains de productivité avec les IDE principaux Eclipse, Netbeans et IntelliJ. Le conférencier a bien sûr mis en évidence l&#8217;avantage des raccourcis clavier pour gagner en productivité sur les IDE. Selon lui, le raccourci à connaître en priorité est la recherche rapide (CTRL + 3 sous Eclipse). Cela permet d&#8217;accéder rapidement aux éléments de l&#8217;interface graphique.</p>
<p>Voici les principales astuces que je ne connaissais pas ou que je n&#8217;utilise pas assez:<br />
- la programmation par intention  on écrit l&#8217;appel de méthode et l&#8217;IDE crée la méthode dans la bonne classe<br />
- on peut mettre des points d&#8217;arrêt conditionnels<br />
- on peut revenir en arrière lors d&#8217;un debuggage grâce à l&#8217;option &#8220;inspect&#8221; (CTR + SHIFT +I). On pose le point d&#8217;arrêt dans la méthode dans lequel on veut revenir, on sélectionne l&#8217;appel de la méthode et on inspecte ce dernier.</p>
<p>Le point le plus intéressant est que le conférencier a créé pour la conférence un tableau de correspondance des différents raccourcis sur les 3 IDE, très pratique lorsqu&#8217;on connaît un IDE et que l&#8217;on veut en tester un autre.</p>
<p>Xavier Hanin  connaît plus de cent raccourcis, je suis loin d’en utiliser autant. Cette conférence m’a donné envie d’en utiliser plus et surtout d’essayer un autre IDE.</p>
<p>Correspondance des raccourcies dans les différents IDE :<br />
<a href="https://docs.google.com/spreadsheet/ccc?key=0AgJVaeoL2ksbdDNWaWpSeDMzRkt6aHZHbVJteGZzNEE#gid=0">https://docs.google.com/spreadsheet/ccc?key=0AgJVaeoL2ksbdDNWaWpSeDMzRkt6aHZHbVJteGZzNEE#gid=0</a></p>
<p><strong>De Devoxx au CAC40</strong><br />
Conférence par Julien Dubois (@juliendubois)</p>
<p>Julien Dubois a co-écrit le livre &#8220;Spring par la pratique&#8221;, et a dirigé la filiale française de SpringSource.</p>
<p>Tatami, est un projet Open Source de réseau social d&#8217;entreprise. Il a été lancé à l&#8217;occasion d&#8217;un concours de code pendant le Devoxx 2012. Il est actuellement utilisé par deux groupes du CAC40. Les technologies utilisées sont le HTML 5, Backbone.js, Spring, Apache Cassandra, Elastic search.</p>
<p>Je pense que ce projet est un bon exemple de réussite d&#8217;un projet Open Source, une société chargée de la commercialisation de ces service va bientôt être créée. Le code du projet peut être une bonne source d&#8217;inspiration pour approfondir les technologies citées précédemment.</p>
<p><a href="https://tatami.ippon.fr/">Tatami en version SaaS</a><br />
<a href="https://github.com/ippontech/tatami">Le code source de Tatami</a><br />
<a href="http://fr.slideshare.net/julien.dubois/devoxx-au-cac40">Slide de la présentation</a></p>
<p><strong>Conclusion</strong></p>
<p>Je découvrais cette année le salon Devoxx, j&#8217;ai beaucoup aimé, cela m’a permis de connaître les tendances actuelles et futures dans le domaine du développement. Les conférences avaient des thèmes variés, elles étaient bien organisées, et ce que je retiendrais surtout c&#8217;est qu&#8217;ils avaient beaucoup d&#8217;enthousiasme. Les conférenciers étaient enthousiastes pour présenter leur travail et leur retour d’expérience, mais aussi sur l&#8217;avenir de notre profession et sur le marché français.</p>
<p>L&#8217;ensemble des conférences sera bientôt disponibles en vidéo sur le site <a href="http://parleys.com/#home">Parley</a>.</p>
<p>En résumé, je n&#8217;ai qu&#8217;une envie, c&#8217;est d&#8217;y retourner l&#8217;année prochaine !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2013/04/12/retour-sur-devoxx-france-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Assistant(e) Marketing en Stage (H/F)</title>
		<link>http://blog.genigraph.fr/2013/03/13/assistante-marketing-en-stage-hf/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=assistante-marketing-en-stage-hf</link>
		<comments>http://blog.genigraph.fr/2013/03/13/assistante-marketing-en-stage-hf/#comments</comments>
		<pubDate>Wed, 13 Mar 2013 13:35:32 +0000</pubDate>
		<dc:creator>rh_recrute</dc:creator>
				<category><![CDATA[RH]]></category>
		<category><![CDATA[stages]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=534</guid>
		<description><![CDATA[Dans le cadre de la diffusion d’un nouveau produit innovant dans le domaine de la mobilité, Génitech recherche pour son siège social un(e) Assistant(e) Marketing en stage. Vous contribuez au développement de l’activité d’un nouveau produit innovant mobile et tactile &#8230; <a href="http://blog.genigraph.fr/2013/03/13/assistante-marketing-en-stage-hf/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p style="text-align: justify;">Dans le cadre de la diffusion d’un<strong> nouveau produit innovant dans le domaine de la mobilité</strong>, Génitech recherche pour son siège social un(e) Assistant(e) Marketing en stage.</p>
<p style="text-align: justify;">Vous contribuez au développement de l’activité d’un nouveau produit innovant mobile et tactile sans contact, conçu en collaboration avec un consortium Européen de recherche, en lien avec le Responsable Projet et les autres membres du consortium. Vous participez à la réflexion stratégique, l’élaboration concrète ainsi qu’au suivi des actions marketing Européenne du produit.Dans une démarche prospective, vous mènerez des<strong> études ciblées de marché</strong> afin de cadrer et d’optimiser la communication et de proposer des adaptations produits en fonction des retours « terrains ». Vous coordonnerez ensuite les actions de communication et de dissémination afin de maximiser le taux de reconnaissance du produit auprès de la population cible.</p>
<p style="text-align: justify;">De niveau Bac+2 à 5, vous êtes force de proposition et possédez une réelle <strong>créativité </strong>dans l’élaboration de stratégies d’actions Marketing et de dissémination d’un produit innovant ainsi que de rigueur dans la gestion de leur suivi et leur mise en place.</p>
<p style="text-align: justify;"><strong>Bon niveau d&#8217;anglais écrit</strong> nécessaire.</p>
<p>Démarrage :<br />
Avril 2013</p>
<p>Durée : 3 mois</p>
<p>Lieu du stage:<br />
Malakoff (ligne 13 du métro)</p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
<p><span style="font-family: Times New Roman; font-size: small;"> </span></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2013/03/13/assistante-marketing-en-stage-hf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quand l&#8217;Espace Personnel de Données (PIMS) est vulgarisé&#8230;</title>
		<link>http://blog.genigraph.fr/2013/03/01/pims_knox_mwc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=pims_knox_mwc</link>
		<comments>http://blog.genigraph.fr/2013/03/01/pims_knox_mwc/#comments</comments>
		<pubDate>Fri, 01 Mar 2013 08:16:10 +0000</pubDate>
		<dc:creator>onicolas</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[données]]></category>
		<category><![CDATA[MWC]]></category>
		<category><![CDATA[PIMS]]></category>
		<category><![CDATA[sécurité]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=504</guid>
		<description><![CDATA[Lors du Mobile World Congress à Barcelone, Samsung a annoncé Knox. Il s&#8217;agit d&#8217;une version d&#8217;Android personnalisée permettant de basculer très facilement entre environnements (appelé Persona)  : d&#8217;un environnement personnel à un environnement professionnel. Les deux environnements sont hermétiques en &#8230; <a href="http://blog.genigraph.fr/2013/03/01/pims_knox_mwc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.genigraph.fr/wp-content/uploads/2013/02/genigraph_MWC2013-e1362091906318.jpg"><img class="alignnone size-medium wp-image-508" src="http://blog.genigraph.fr/wp-content/uploads/2013/02/genigraph_MWC2013-300x168.jpg" alt="Mobile World Congress 2013" width="300" height="168" /></a><a href="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0818.jpg"><img class="alignnone size-medium wp-image-518" src="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0818-300x224.jpg" alt="" width="300" height="224" /></a></p>
<p>Lors du <a title="Mobile World Congress 2013" href="http://www.mobileworldcongress.com" target="_self">Mobile World Congress </a>à Barcelone, Samsung a annoncé <a title="Samsung Knox" href="http://www.samsung.com/global/business/mobile/samsungknox/" target="_blank">Knox</a>.</p>
<p>Il s&#8217;agit d&#8217;une version d&#8217;Android personnalisée permettant de basculer très facilement entre environnements (appelé Persona)  : d&#8217;un environnement personnel à un environnement professionnel. Les deux environnements sont hermétiques en termes de données et donc de vulnérabilité potentielle pour le système d&#8217;information de l&#8217;entreprise.</p>
<p><a href="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0825_90.jpg"><img class="alignnone size-medium wp-image-520" src="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0825_90-224x300.jpg" alt="" width="224" height="300" /></a><a href="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0827_90.jpg"><img class="alignnone size-medium wp-image-521" src="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0827_90-224x300.jpg" alt="" width="224" height="300" /></a></p>
<p>Nous avons pu par exemple rencontrer un représentant de DropBox qui nous a présenté son produit <a title="DropBox for Teams" href="https://www.dropbox.com/teams" target="_blank">DropBox for Teams</a> adapté à Knox : on accède à des espaces de stockage et partage de fichiers qui sont différenciés selon le Persona.</p>
<p><a href="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0823_90.jpg"><img class="alignnone size-medium wp-image-519" src="http://blog.genigraph.fr/wp-content/uploads/2013/02/IMG_0823_90-224x300.jpg" alt="" width="224" height="300" /></a></p>
<p>On ne discutera pas ici des points forts et faibles (pas d&#8217;approche via les standards, obligation d&#8217;adapter les applications par les éditeurs etc.) du produit mais on s&#8217;attachera à souligner le nouveau paradigme popularisé.</p>
<p>En effet, les utilisateurs de mobiles n&#8217;ont jusqu&#8217;à présent pas à se soucier de leur rôle dans leur utilisation de leurs services mobiles (Apps, m-services connectés) et en particulier de leurs données personnelles. La frontière donnée personnelle / donnée publique s&#8217;est progressivement effacée par l&#8217;utilisation généralisée des réseaux sociaux. Certes, beaucoup s&#8217;en émeuvent, demandent le droit à l&#8217;oubli, commencent à lire les conditions générales d&#8217;utilisation des services auxquels ils sont abonnées. Mais le mal est profond pour l&#8217;entreprise : comment faire confiance dans un dispositif mobile (smartphone ou tablette) qui serait une passoire à données  où espaces public, privé et professionnel seraient perméable ? Généraliser le <a title="Bring Your Own Device (Wikipedia)" href="http://fr.wikipedia.org/wiki/BYOD" target="_blank">BYOD</a> présente donc un risque important pour l&#8217;entreprise au coeur d&#8217;une guerre économique sans frontière.</p>
<p>C&#8217;est pourquoi l&#8217;initiative de Samsung avec Knox a le mérite de familiariser le grand public avec le concept de rôle, d&#8217;habilitation, de séparation des espaces de données et ceci dans un vocabulaire simple (le Persona) et une ergonomie des plus utilisables (un simple clic permet de basculer de contexte).</p>
<p>Samsung réussira-t-il dans son défi de popularisation des Espaces de données personnelles (PIMS pour <a title="PIM : Wikipedia" href="http://en.wikipedia.org/wiki/Personal_information_manager" target="_blank">Personal Information Management System</a>) et des fédérations d&#8217;identité (même si elle reste réduite à deux identités) là où Apple a réussi pour le Cloud avec son service <a title="iCloud : Wikipedia" href="http://en.wikipedia.org/wiki/Icloud" target="_blank">iCloud</a>. Nous le lui souhaitons.</p>
<p><em>PS : vous trouverez plus d&#8217;informations sur nos travaux sur les PIMS dans la <a title="PIMI : Projet ANR VERSO" href="http://genibeans.com/cgi-bin/twiki/view/Pimi/WebHome" target="_blank">description du projet PIMI</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2013/03/01/pims_knox_mwc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test de validation : comment envoyer et recevoir des e-mails sans disposer des boîtes mails réelles ?</title>
		<link>http://blog.genigraph.fr/2013/02/08/test-de-validation-comment-envoyer-et-recevoir-des-e-mails-sans-disposer-des-boites-mails-reelles/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=test-de-validation-comment-envoyer-et-recevoir-des-e-mails-sans-disposer-des-boites-mails-reelles</link>
		<comments>http://blog.genigraph.fr/2013/02/08/test-de-validation-comment-envoyer-et-recevoir-des-e-mails-sans-disposer-des-boites-mails-reelles/#comments</comments>
		<pubDate>Fri, 08 Feb 2013 08:30:08 +0000</pubDate>
		<dc:creator>pguillot</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=470</guid>
		<description><![CDATA[Nombre d&#8217;entre vous ont probablement déjà eu à tester une application qui doit envoyer des e-mails à différentes adresses de courriels. Les problèmes suivants se posent alors : Comment exploiter un jeu de données réaliste et disposer d&#8217;adresses e-mails différentes &#8230; <a href="http://blog.genigraph.fr/2013/02/08/test-de-validation-comment-envoyer-et-recevoir-des-e-mails-sans-disposer-des-boites-mails-reelles/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Nombre d&#8217;entre vous ont probablement déjà eu à tester une application qui doit envoyer des e-mails à différentes adresses de courriels.</p>
<p>Les problèmes suivants se posent alors :</p>
<ul>
<li>Comment exploiter un jeu de données réaliste et disposer d&#8217;adresses e-mails différentes pour tous les utilisateurs simulés durant les tests (Pour un service en ligne : des demandeurs, des gestionnaires, voir d&#8217;autres intervenants&#8230;) ?</li>
<li>Comment réaliser un test de bout en bout : envoi d&#8217;un e-mail, réception de ce mail, voir plus &#8211; par exemple : clic sur un lien reçu dans le mail et permettant d&#8217;accéder directement à une application web pour valider notre compte utilisateur, etc.</li>
</ul>
<p>Bien sûr, on peut y parvenir en bricolant :</p>
<ol>
<li><span style="font-size: small;">Si on utilise une base de données et que les messages y sont stockés, on peut aller consulter les messages en base et vérifier, voir récupérer leurs contenus. Cela peut convenir pour les tests unitaires, mais dès qu&#8217;on entre en phase de validation ou de démonstration, il faut trouver une autre solution, plus proche de la réalité finale de l&#8217;application.</span></li>
<li><span style="font-size: small;">On peut utiliser une unique adresses e-mail : notre adresse personnelle. Cela ne suffit pas toujours. En particulier, si l&#8217;application impose comme contrainte d&#8217;utiliser l&#8217;adresse e-mail comme identifiant. il est alors impératif de disposer de plusieurs adresses distinctes.</span></li>
<li><span style="font-size: small;">On peut demander la création d&#8217;adresses de tests &#8211; étrangement, tout d&#8217;un coup, l&#8217;administrateur système commence à nous éviter quand il nous croise dans les couloirs&#8230; <img src='http://blog.genigraph.fr/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </span></li>
</ol>
<p>Heureusement, il existe d&#8217;autres solutions &#8211; au moins une autre !</p>
<p>Pour ma part, j&#8217;ai testé l&#8217;utilisation d&#8217;un serveur SMTP local : Papercut <a title="Papercut" href="http://papercut.codeplex.com">http://papercut.codeplex.com/</a>. Il  existe d&#8217;autres serveurs de ce type.</p>
<p>Après une installation simplissime, il suffit d&#8217;indiquer à l&#8217;application à tester que le serveur SMTP se trouve sur la machine locale (localhost). L&#8217;interface utilisateur du serveur SMTP permet alors de consulter les messages envoyés par l&#8217;application, au travers de 3 vues : &#8220;Raw View&#8221; (en-tête complet et les diverses autres parties du message), &#8220;Body View&#8221; et &#8220;HTML View&#8221;.<br />
Mais ce n&#8217;est pas tout ! Papercut dispose d&#8217;une fonctionnalité très sympathique nommée &#8220;Forward&#8221; : on peut ainsi transférer les messages vers une autre boîte aux lettres. Pour cela, il suffit de préciser le serveur SMTP sortant à utiliser et l&#8217;adresse de destination finale.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2013/02/08/test-de-validation-comment-envoyer-et-recevoir-des-e-mails-sans-disposer-des-boites-mails-reelles/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Participez au projet UbiLoop</title>
		<link>http://blog.genigraph.fr/2013/02/04/participez-au-projet-ubiloop/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=participez-au-projet-ubiloop</link>
		<comments>http://blog.genigraph.fr/2013/02/04/participez-au-projet-ubiloop/#comments</comments>
		<pubDate>Mon, 04 Feb 2013 13:49:40 +0000</pubDate>
		<dc:creator>onicolas</dc:creator>
				<category><![CDATA[Divers]]></category>
		<category><![CDATA[Commune]]></category>
		<category><![CDATA[e-administration]]></category>
		<category><![CDATA[e-government]]></category>
		<category><![CDATA[Incident]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=465</guid>
		<description><![CDATA[L&#8217;institut d&#8217;Études Politiques de Toulouse (IEP) et l&#8217;Institut de Recherche en Informatique de Toulouse (IRIT) organisent une vaste enquête en ligne sur l&#8217;usage des smartphones et la citoyenneté. Cette enquête s&#8217;inscrit dans le cadre du projet de recherche européen FEDER &#8230; <a href="http://blog.genigraph.fr/2013/02/04/participez-au-projet-ubiloop/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>L&#8217;institut d&#8217;Études Politiques de Toulouse (IEP) et l&#8217;Institut         de Recherche en Informatique de Toulouse (IRIT) organisent une         vaste enquête en ligne sur l&#8217;usage des smartphones et la         citoyenneté. Cette enquête s&#8217;inscrit dans le cadre du projet de         recherche européen FEDER UBILOOP.</p>
<p>Donc si vous êtes utilisateur de smartphone et que vous         souhaitez participez à la recherche sur l&#8217;utilisation des         smartphones dans votre vie citoyenne, alors vous pouvez         participer à l&#8217;enquête en ligne sur ce sujet (durée d&#8217;environ 15         minutes).</p>
<p>Cette enquête porte sur l’application UBILOOP qui permet de         déclarer, en ligne sur un smartphone, différents types         d’incidents urbains comme des lampadaires cassés, des nids de         poules, des tags/graffitis, des nids de frelons ou tout autres         incidents du même type. Une fois déclarés, ces incidents sont         pris en compte par les services compétents qui seront en charge         de les corriger.</p>
<p>Les bénéfices que vous pouvez retirer de la participation à         cette enquête sont à la fois une appréciation d’un exemple de         service lié à l’action citoyenne à l’aide d’un smartphone et         également une opportunité de contribuer à la recherche         scientifique.</p>
<p>Si vous souhaitez participer alors cliquez sur le lien suivant:</p>
<p><a href="http://edu.surveygizmo.com/s3/1080030/Enqu-te-Ubiloop">http://edu.surveygizmo.com/s3/1080030/Enqu-te-Ubiloop</a></p>
<p>Merci par avance pour votre contribution.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2013/02/04/participez-au-projet-ubiloop/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Tour Toulouse 2012</title>
		<link>http://blog.genigraph.fr/2012/11/01/agile-tour-toulouse-2012/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=agile-tour-toulouse-2012</link>
		<comments>http://blog.genigraph.fr/2012/11/01/agile-tour-toulouse-2012/#comments</comments>
		<pubDate>Thu, 01 Nov 2012 14:32:07 +0000</pubDate>
		<dc:creator>Vincent Ferries</dc:creator>
				<category><![CDATA[Agile Tour]]></category>
		<category><![CDATA[Agiles]]></category>
		<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[Scrum]]></category>
		<category><![CDATA[Agile Tour Toulouse]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=450</guid>
		<description><![CDATA[AGILE TOUR TOULOUSE 2012 C&#8217;est avec grand plaisir que je me retrouve pour la seconde fois présent à l&#8217;Agile Tour Toulouse, à l&#8217;espace de congrès Diagora. Pour rappel, vous pouvez retrouver mon compte rendu de la précédente édition à l&#8217;adresse &#8230; <a href="http://blog.genigraph.fr/2012/11/01/agile-tour-toulouse-2012/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://blog.genigraph.fr/wp-content/uploads/2012/11/at2012.jpg" alt="Logo Agile Tour" /></p>
<h1>AGILE TOUR TOULOUSE 2012</h1>
<p>C&#8217;est avec grand plaisir que je me retrouve pour la seconde fois présent à l&#8217;Agile Tour Toulouse, à l&#8217;espace de congrès Diagora. Pour rappel, vous pouvez retrouver mon compte rendu de la précédente édition à l&#8217;adresse suivante : <a href="http://blog.genigraph.fr/2011/10/25/agile-tour-toulouse/">Agile Tour Toulouse 2011</a></p>
<p>Je ne ferai donc pas ici de redite des notions déjà présentées dans mon précédent billet.</p>
<p>Cette conférence qui dure toute la journée a rassemblé cette année près de 500 personnes dont environ une moitié de nouveaux venus.</p>
<p>En plus des conférences et ateliers habituels, une nouveauté a fait son apparition dans cette édition : les Open Talks. Pour les déçus qui n&#8217;auraient pas été sélectionnés afin d&#8217;effectuer des présentations ainsi que pour les gens qui se posent des questions particulières ou voudraient lancer des débats, de petites conversations étaient organisées toutes les 30 minutes à la demande des personnes présentes (il suffisait d&#8217;écrire le sujet sur un bout de papier).</p>
<p>Mon programme, cette fois-ci axé sur les ateliers et la mise en pratique ne m&#8217;a pas laissé ne serait-ce que 5 minutes de répit afin d&#8217;aller voir de quoi il retournait exactement.</p>
<h2>Keynote</h2>
<p>Après une présentation succinte de chacun  des sponsors (Valtech avec une vidéo &#8220;Agilité et Rugby&#8221;, ekito qui a conçu le site de l&#8217;évènement, Kagilum qui organise un jeu pour une licence d&#8217;IceScrum et Ubleam, concurrent Toulousain des QRCodes), David Brocart et Thierry Cros nous ont offert quelques scènettes théâtrales afin de mettre en avant les valeurs liées à l&#8217;Agilité. Munis de déguisements plus criants de vérité les uns que les autres (spéciale dédicace pour Thierry avec son Tshirt Metallica et sa perruque de chevelu, son accoutrement de coach des années 80 et à David qui incarnait le CEO à moumoute de manière magistrale), les deux présentateurs ont mis en avant de très nombreuses notions : les <a href="http://www.itev.fr/tag/niveaux-logiques-de-dilts">niveaux logiques de Dilts-Bateson</a> qui nous poussent à chercher la cause des problèmes au niveau directement supérieur à celui dans lequel ils se produisent, la nécessite de limiter le stock et d&#8217;attendre le feed-back avant d&#8217;agir, <a href="http://chohmann.free.fr/mcgregor.htm">la théorie X et Y de Mac Gregor</a> ainsi qu&#8217;un grand nombre de concepts liés au code : clean code, refactoring, tdd, YAGNI (You Ain&#8217;t Gonna Need It). Je vous enjoins encore à aller jeter un oeil à mon retour sur l&#8217;édition précédente afin de trouver plus de détails autour de ces sujets. Pour tout vous dire, cette keynote présageait sans que je le sache à cet instant précis de ce qu&#8217;allait être le programme de ma journée : particulièrement chargée.</p>
<h2>Innovation Games (par Eric Rubinat)</h2>
<p>Je me suis donc prestement dirigé vers le premier des 4 ateliers qui m&#8217;intéressaient particulièrement en ce jour : à savoir une mise en pratique des <a href="http://innovationgames.com/">Innovations Games</a>. Ce sujet me tient particulièrement à coeur, étant un grand amateur de jeux de société depuis mon plus jeune âge et étant déjà sensibilisé à leur apport en terme d&#8217;apprentissage. A mon grand regret, étant donné le nombre trop élevé de participants, le présentateur nous a annoncé la couleur d&#8217;entrée de jeu : pas de démonstration en live malheureusement. La séance s&#8217;en est donc tenue à une présentation des jeux &#8220;Innovation Games&#8221; (attention, le nom et les 13 jeux correspondants sont  déposés depuis 2003 par Lukue Homan, leur créateur).</p>
<p>Les jeux quels qu&#8217;ils soient commencent à perdre la mauvaise image qui les accompagnait depuis bien longtemps (associabilité, déni des réalités…) et les gens commencent désormais à comprendre leur intérêt (développement de l&#8217;esprit de combativité, de la créativité, mise en place d&#8217;un lien de communication important).</p>
<p>On peut découper les jeux liés à notre domaine en trois ou quatre grandes catégories :</p>
<ul>
<li>les meeting games (comme ROTI par example : Return Of Time Invest)</li>
<li>les serious games utilisés depuis bien longtemps dans des domaines tels que l&#8217;armée, la médecine etc afin de pouvoir s&#8217;entraîner et pratiquer sur des reproductions de situations réelles.</li>
<li>les jeux agiles qu&#8217;on utilise le plus souvent pour enseigner des concepts utilisés dans les différentes approches agiles.</li>
</ul>
<p>Les serious games sont utilisés le plus souvent comme leviers du ROI Agile (Return Over Investment cela va sans dire). On s&#8217;en sert pour trouver la liste des features, les prioriser…</p>
<p>Il ne faut pas prendre cela à la légère en tant qu&#8217;animateur : il est nécessaire de passer beaucoup de temps à préparer de tels ateliers afin que les choses se passent au mieux.</p>
<p>Il faut tout d&#8217;abord définir l&#8217;objectif principal, poser la BONNE question.</p>
<p>Il est ensuite nécessaire de planifier : prévoir les personnes, déterminer quel jeu conviendrait.</p>
<p>On prépare ensuite le jeu, puis on y joue.</p>
<p>On agrège enfin les données, sans sous-estimer le temps nécessaire. En effet, il est nécessaire de passer beaucoup de temps sur cette partie afin de tirer le meilleur parti des jeux effectués.</p>
<p>Enfin, on définit et on communique le plan d&#8217;action à adopter pour la suite.</p>
<p>Durant la session, on peut noter plusieurs rôles :</p>
<ul>
<li>l&#8217;organisateur</li>
<li>un maître de cérémonie (peut être la même personne mais pas forcément)</li>
<li>un photographe si on peut, c&#8217;est toujours plus sympa et peut permettre de voir des choses qu&#8217;on n&#8217;aurait pas vues sinon (qui a parlé d&#8217;artefacts bizarres sur les photos?).</li>
<li>un observateur, qui garde un oeil extérieur et prend des notes sur des choses qui n&#8217;auraient pas été notées sinon.</li>
</ul>
<p>Les jeux Innovation games présentés :</p>
<ul>
<li>le Speed Boat : une île représente l&#8217;objectif majeur, on identifie les aides, freins et esquifs qui peuvent surgir pour l&#8217;atteindre. Ce jeu peut être utilisé pour remotiver les rétrospectives ou pour les kick-off meetings.</li>
<li>la Product Box : on donne du matériel de papeterie aux différents participants (ciseaux, carton, papier, colle, feutres…) et on leur donne pour objectif de définir le packaging de leur produit. Cela permet de découvrir de nouvelles features pour le produit et de les prioriser fonction de leur emplacement sur la boîte. Il est plus que fortement conseillé d&#8217;avoir un observateur pour ce jeu.</li>
<li>Prune the Tree : les branches représentent des features existantes, on donne aux participants les restantes à placer sur l&#8217;arbre (sans leur permettre d&#8217;en rajouter) en considérant que plus une feature est proche de la racine plus elle est importante.</li>
<li>Buy a Feature : des billets permettent d&#8217;acheter des features et sont donnés en nombre limité. D&#8217;après l&#8217;intervenant (mais pas d&#8217;après Lukue Homan…) il ne faudrait pas donner un coût par feature. Je suis en désaccord avec cette notion. Pour moi, ce jeu sert surtout en cas d&#8217;indécision du client pour le contenu des itérations et les coûts par feature doivent représenter son coût réel en temps de développement.</li>
</ul>
<p>L&#8217;intervenant a ensuite présenté brièvement une liste de jeux Agile, qui servent pour la formation et n&#8217;apportent pas de valeur produit, ils permettent simplement de faire passer un message :</p>
<ul>
<li>Bottle-Neck Game (60 à 90 min)</li>
<li>the Real Options Space Game (90 à 120 min) : notion de décision au dernier moment</li>
<li>The Toyota Way (45 à 90 min)</li>
<li>Marble Run (20 à 30 min) : planification agile</li>
<li>Origami (10 à 20 min) : importance de la communication -&gt; OFFSHORE</li>
<li>Swiss Army Knife (10 à 15 min)</li>
<li>Start Your Day</li>
<li>Remember the feature (dans 2j ? 2 ans ? 10 ans ?)</li>
</ul>
<p>Les maîtres mots :</p>
<ul>
<li>Préparer</li>
<li>Garder du temps pour les retours</li>
<li>En lieu et place d&#8217;une réunion</li>
</ul>
<h2>Kanban par la pratique (par Laurent Morisseau)</h2>
<p>Ne connaissant pas du tout la méthode Kanban, je me suis ensuite rendu dans cet atelier pour en savoir plus. Le jeu (un serious game disponible sur getKanban.com) était un jeu de plateau avec 7 dés à 6 faces de 3 couleurs différentes (2 rouges pour le design, 3 bleus pour le développement et 2 oranges pour les tests). Des cartes avec des points à compléter dans chaque catégorie sont disposées dans des colonnes avec un nombre d&#8217;éléments limités. Le but est d&#8217;arriver à remplir les cartes avec les dés et à les faire avancer dans les différentes colonnes sans créer de blocages. Les dés lancés comptent double si on les affecte à la catégorie pour laquelle ils sont prévus, simple sinon.</p>
<p><img src="http://blog.genigraph.fr/wp-content/uploads/2012/11/kanban-at2012.jpg" alt="" /></p>
<p>Des impondérables viennent rythmer la partie pour corser un peu et rendre le jeu plus intéressant.</p>
<p>Il permet de se rendre compte de l&#8217;importance de la fluidité de la chaîne de bout en bout et de l&#8217;importance de limiter le nombre de tâches simultanées dans chacune des catégories. Le temps moyen de réalisation par tâche s&#8217;en retrouve lissé et plus prévisible.</p>
<p>Cependant, on constate rapidement que cette méthode de gestion permet d&#8217;accomplir certaines actions prioritaires à une cadence énormément plus élevée qu&#8217;à la normale, et semble donc potentiellement plus souple.</p>
<p>Pour en avoir discuté par la suite avec la personne qui nous faisait cette présentation, cette méthode est particulièrement adaptée dans les cas où l&#8217;agilité serait mal perçue, et permettrait d&#8217;effectuer une transition en douceur.</p>
<p>Piqué au vif, je tâcherais donc d&#8217;en savoir plus prochainement à ce sujet.</p>
<h2>Et un carpaccio ! Un ! (par Géry Derbier)</h2>
<p>Rencontrant parfois des problèmes de découpage de tâches avec certains clients, j&#8217;ai voulu essayer de voir si cet interlocuteur n&#8217;avait pas par hasard la solution miracle. Eh bien non !</p>
<p>La séance consistait à découper une problème très simple : le calcul du prix total en appliquant une ristourne fonction du montant total de la commande et en appliquant des taxes fonction de la région géographique.</p>
<p>La séance était constituée de 5 itérations de 8 minutes. A la fin de chaque itération, il fallait montrer une nouvelle fonctionnalité développée.</p>
<p>Autant dire que le timing était serré, d&#8217;autant plus que j&#8217;ai voulu, comme à mon habitude dans ce genre de cas partir sur une approche en TDD. Ceci dit notre groupe s&#8217;en est aussi bien sorti que les autres au final : les tests en plus !</p>
<h2>Projet dont vous êtes le héros (par Antoine Vernois et Pablo Pernot)</h2>
<p>Autant le dire tout de suite, c&#8217;était là mon gros coup de cœur de la journée. Je me suis régalé.</p>
<p>3 ballons étaient disposés dans la salle et notre groupe devait répondre à des questions liées à l&#8217;agilité en se rapprochant de l&#8217;un des 3 fonction des questions posées.</p>
<p>Les questions étaient assez ambiguës pour que des doutes se posent et que chaque réponse puisse sembler valable à certains.</p>
<p>Une petite discussion s&#8217;installait du coup sur les résultats. Si la majorité des personnes s&#8217;était trompée, on procédait à une épreuve subsidiaire (des petits jeux agiles).</p>
<p>Nous évoluions ensuite sur une carte en choisissant notre prochaine destination.</p>
<p>Le contexte était sympa, les questions pas mal tournées et souvent drôles, les discussions intéressantes et les jeux instructifs, un vrai régal !</p>
<p>Je ne saurais que vous conseiller d&#8217;aller jeter un coup d’œil sur <a href="http://www.jabberwocky.fr/">le site du jeu</a></p>
<p>Cependant, si vous comptez assister à cet atelier lors d&#8217;un prochain atelier, évitez.</p>
<h2>Agile Unlimited (par Alexandre Boutin)</h2>
<p>J&#8217;avais adoré les présentations d&#8217;Alexandre Boutin l&#8217;an dernier et attendais donc avec impatience sa note de clôture. Ses slides tournaient cette fois-ci autour de l&#8217;univers de Star Trek et traitaient de l&#8217;application possible des méthodes Agiles à d&#8217;autres domaines que l&#8217;informatique. Effectivement, on peut reprendre les concepts suivants assez facilement :</p>
<ul>
<li>le Management Visuel à grands coups de Post-It</li>
<li>le stand up d&#8217;équipe</li>
<li>la rétrospective</li>
<li>la Vision Partagée</li>
<li>l&#8217;Ordonnancement</li>
<li>les Boîtes de Temps (le fait de borner le temps alloué aux réunions et de filtrer les participants utiles)</li>
</ul>
<p>Cependant, de nombreux freins se lèvent au sujet de cette adoption :</p>
<ul>
<li>les REX personnels</li>
<li>la tolérance à l&#8217;erreur dans certains domaines</li>
<li>le Command &amp; Execute</li>
<li>les problèmes de Communication</li>
<li>la Visibilité (certaines personnes n&#8217;ont pas forcément envie que ce qu&#8217;ils font comme travail soit plus transparent)</li>
<li>l&#8217;Autonomie (certains préfèrent travailler seuls)</li>
<li>le Travail Répétitif</li>
</ul>
<p>Le point principal abordé par Alexandre et sur lequel il a le plus insisté est qu&#8217;on ne peut pas faire d&#8217;agilité si la culture de l&#8217;entreprise ne s&#8217;y prête pas. L&#8217;agilité est une histoire de culture et nécessite bien souvent un changement de culture, qui est un processus particulièrement difficile.</p>
<p>Ainsi s&#8217;achève mon deuxième Agile Tour Toulouse. N&#8217;hésitez surtout pas à me demander des précisions !</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2012/11/01/agile-tour-toulouse-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>JBoss et le classloading</title>
		<link>http://blog.genigraph.fr/2012/10/18/jboss-et-le-classloading/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jboss-et-le-classloading</link>
		<comments>http://blog.genigraph.fr/2012/10/18/jboss-et-le-classloading/#comments</comments>
		<pubDate>Thu, 18 Oct 2012 08:02:05 +0000</pubDate>
		<dc:creator>Richard Bourner</dc:creator>
				<category><![CDATA[JBoss]]></category>
		<category><![CDATA[JEE]]></category>
		<category><![CDATA[JEE6]]></category>
		<category><![CDATA[Red Hat]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=427</guid>
		<description><![CDATA[Qui n’a jamais transpiré sur des problèmes de chargement de classes lors d’un déploiement applicatif sur un serveur d’application ? Le serveur JBoss n’étant pas différent des autres, il n’est pas rare d’avoir ce genre de problèmes que vous déployiez &#8230; <a href="http://blog.genigraph.fr/2012/10/18/jboss-et-le-classloading/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Qui n’a jamais transpiré sur des problèmes de chargement de classes lors d’un déploiement applicatif sur un serveur d’application ?<br />
Le serveur JBoss n’étant pas différent des autres, il n’est pas rare d’avoir ce genre de problèmes que vous déployiez des EAR ou des WAR, ou que vous utilisiez la version communautaire (JBoss A.S.) ou bien la version Enterprise (JBoss Enterprise Application Platform &#8211; EAP). Evidemment, on a plus de chances de les rencontrer lorsqu’on doit déployer plusieurs EAR et/ou WAR (imbriqués ou non) au lieu d’un seul, mais quelques soient les causes, la ou les solutions ne sont en général pas faciles à identifier ni à résoudre, surtout la première fois où cela arrive.<br />
Un scénario typique et classique étant un conflit d’utilisation de classes de logging lors de l’utilisation de versions différentes de librairies par une application et par le serveur lui-même.<br />
Génigraph étant partenaire Red Hat sur toute la gamme middleware JBoss, c’est donc régulièrement que nous sommes confrontés à des questions sur ce sujet.</p>
<p>Le but de cet article n’est pas d’identifier toutes les sources possibles de conflit de classloading, mais d’expliquer les différences de fonctionnement de classloading entre JBoss EAP 5 (ou A.S. 5) par rapport à JBoss EAP 6 (ou A.S. 7).</p>
<p>1. <strong>Présentation rapide du concept</strong><br />
Un chargeur de classes (classloader) représente typiquement un ensemble de jars composant un module, un composant ou une application. Chaque classloader possède un classloader parent. De fait, les classloaders forment une hiérarchie arborescente avec le classloader de démarrage (bootstrap) à son sommet. Lorsqu’un classloader charge une classe, il peut d’abord demander à son parent de charger celle-ci. Si le parent ne réussit pas à charger la classe, ce classloader essaie alors de charger la classe. Dans ce scénario appelé « parent-first class loading », les classes communes sont toujours chargées par le classloader parent. Ceci permet à une application ou à un module de communiquer avec une autre application ou un autre module à l’intérieur de la même VM. Une alternative est de demander à un classloader de trouver lui-même une classe, puis s’il échoue de demander à son parent. Cette stratégie permet à une application d’avoir une version d’une classe différente de celle trouvée dans le classloader de son parent. Cependant, il est parfois nécessaire de modifier la séquence de chargement par défaut, ou bien d’isoler les classes à l’aide de classloaders distincts afin de résoudre des problèmes de déploiement. Le problème le plus courant étant un conflit de version d’une librairie entre celle incluse dans l&#8217;applicatif et celle du serveur. Les exceptions suivantes sont les plus courantes lors de problème de classloading avec JBoss EAP 5 : <em>ClassCastException</em>, <em>IllegalAccessError</em>, <em>VerifyError </em>ou <em>LinkageError</em>.</p>
<p>2. <strong>Classloading en EAP 5</strong><br />
Le classloading en EAP 5 est basé sur un modèle hiérarchique.<br />
<img src="/Temp/draw.png" alt="" /><br />
Cette approche soulève les problèmes suivants :<br />
• Tous les JAR sont toujours chargés, utilisés ou non ;<br />
• Conflits de version ;<br />
• Temps de lookup et de chargement élevé ;<br />
• Difficile d’identifier la source des problèmes.</p>
<p>Différentes résolutions de problèmes de classloader sont possibles avec JBoss 5 :<br />
• Identifier les JARs coupables et les supprimer si c’est possible ;<br />
• Isoler les classloaders. Ceci implique les changements suivants :<br />
• Pour un WAR : commenter l’élément <code>WarClassLoaderDeployer </code>dans le fichier <code>$JBOSS_HOME/server/&lt;ma_config&gt;/deployers/jbossweb.deployer/META-INF/war-deployers-jboss-beans.xml</code><br />
• Pour un EAR : affecter la valeur <strong>true </strong>au flag <code>isolated </code>(dont la valeur par défaut est <strong>false</strong>) situé dans l’élément <code>EARClassLoaderDeployer </code>du fichier $JBOSS_HOME/server/&lt;ma_config&gt;/deployers/ear-deployer-jboss-beans.xml.<br />
• Définir un fichier WEB-INF/jboss-classloading.xml qui est à déployer avec l’application et permettant de définir la stratégie à utiliser pour le chargement des classes de l’application.</p>
<p>3. <strong>Classloading en EAP 6</strong><br />
Le principe de chargement des classes pour JBoss EAP 6 / JBoss A.S. 7 est radicalement différent de JBoss 5 et est désormais basé sur le principe de modules. Ses particularités sont les suivantes :<br />
• Chaque application déployée est un module isolé des autres ;<br />
• Les modules applicatifs n’ont pas de visibilité des modules du serveur et vice versa ;<br />
• Les modules doivent déclarer explicitement leurs dépendances aux autres modules.</p>
<p>Distinction WAR/EAR :<br />
• Pour les WARs : un WAR est considéré comme un module simple et les classes définies dans <code>WEB-INF/lib</code> sont traitées de la même façon que celles sous <code>WEB-INF/classes</code>. Toutes les classes packagées dans le WAR seront chargées par le même chargeur de classes.<br />
• Pour les EARs : le déploiement de fichiers <code>.ear</code> correspond à un déploiement multi-module, c’est-à-dire que toutes les classes à l’intérieur d’un EAR ne seront pas forcément visibles depuis les autres classes de ce même EAR, sauf si des dépendances explicites sont définies. Par défaut, le répertoire <code>EAR/lib</code> correspond à un module simple, et chaque WAR ou EJB est déployé en tant que module distinct. Ces WAR ou EJB ont toujours une dépendance avec le module parent ce qui leur donne accès aux classes situées dans <code>EAR/lib</code>, mais n’ont néanmoins pas toujours une dépendance automatique les uns par rapport aux autres. Ce comportement peut être contrôlé à l’aide du paramètre <code>ear-subdeployments-isolated</code> situé dans la configuration du sous-système <strong>ee</strong> (par exemple dans le fichier <code>standalone.xml</code> dans le cas d’une utilisation en mode <em>standalone</em>) :<br />
<em>&lt;subsystem xmlns=&#8221;urn:jboss:domain:ee:1.0&#8243; &gt;<br />
&lt;ear-subdeployments-isolated&gt;false&lt;/ear-subdeployments-isolated&gt;<br />
&lt;/subsystem&gt;</em><br />
La valeur <strong>false </strong>par défaut permet aux sous-déploiements (c’est-à-dire aux WARs et EJBs) de voir les classes appartenant aux autres sous-déploiements du même EAR.</p>
<p>Exemple : pour le EAR suivant :<br />
myapp.ear<br />
|<br />
|&#8212; web.war<br />
|<br />
|&#8212; ejb1.jar<br />
|<br />
|&#8212; ejb2.jar<br />
Si la valeur de  <em>ear-subdeployments-isolated</em> est à <strong>false</strong>, alors les classes dans <code>web.war</code> ont accès aux classes situées dans <code>ejb1.jar</code> et <code>ejb2.jar</code>. De même, les classes dans <code>ejb1.jar</code> ont accès aux classes de <code>ejb2.jar</code> (et réciproquement).<br />
Si la valeur de <code>ear-subdeployments-isolated</code> est à <strong>true</strong>, alors il n’y a pas d’ajout de dépendance de modules mise en place automatiquement : l’utilisateur doit définir manuellement les dépendances :<br />
• soit dans le fichier de manifeste (section <code>Class-Path</code>). L’avantage de cette solution est la portabilité : la spécification Java EE précise que les applications portables ne devraient pas se baser sur le fait que des sous-déploiements peuvent accéder à d’autres sous-déploiements sauf si une entrée <code>Class-Path</code> est explicitement définie dans le fichier <code>MANIFEST.MF</code>.<br />
• soit en définissant de façon explicite les dépendances aux différents modules (fichiers <code>module.xml</code> de chaque module en question). L’avantage de cette méthode est d’avoir une gamme d’options plus larges, ainsi que de pouvoir référencer des modules qui ne sont pas packagés dans l’application.<br />
• soit dans un fichier <code>jboss-deployment-structure.xml</code> spécifique à JBoss et inclus à l’application. L’avantage de cette approche est de permettre de définir les dépendances dans un seul fichier.</p>
<p>Priorités de chargement de classes :<br />
Le serveur se base sur les priorités suivantes lors du chargement des classes afin d’éviter des conflits :<br />
• Les dépendances système chargées automatiquement (y compris les APIs Java EE)<br />
• Les dépendances déclarées explicitement par l’utilisateur, soit dans le fichier de manifeste, soit dans le fichier jboss-deployment-structure.xml.<br />
• Les librairies packagées avec l’application (classes sous <code>WEB-INF/classes</code> ou .jar sous <code>WEB-INF/lib</code>).<br />
• Les dépendances inter-modules.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2012/10/18/jboss-et-le-classloading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser Ant ou Jenkins sur des tests automatiques écrits dans n&#8217;importe quel langage (autre que Java &amp; C++).</title>
		<link>http://blog.genigraph.fr/2012/09/11/utiliser-ant-ou-jenkins-sur-des-tests-automatiques-ecrits-dans-nimporte-quel-langage-autre-que-java-c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=utiliser-ant-ou-jenkins-sur-des-tests-automatiques-ecrits-dans-nimporte-quel-langage-autre-que-java-c</link>
		<comments>http://blog.genigraph.fr/2012/09/11/utiliser-ant-ou-jenkins-sur-des-tests-automatiques-ecrits-dans-nimporte-quel-langage-autre-que-java-c/#comments</comments>
		<pubDate>Tue, 11 Sep 2012 10:07:33 +0000</pubDate>
		<dc:creator>pmayen</dc:creator>
				<category><![CDATA[JUnit]]></category>
		<category><![CDATA[Methodologies]]></category>
		<category><![CDATA[Test]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=423</guid>
		<description><![CDATA[Bonjour, Voici un modeste retour d&#8217;expérience chez un client (appelons le &#8220;S.&#8221;) qui peut vous intéresser si votre projet comporte des tests automatiques pour lesquels il n&#8217;existe aucun framework. Cela peut arriver lorsque les tests sont écrits avec des langages &#8230; <a href="http://blog.genigraph.fr/2012/09/11/utiliser-ant-ou-jenkins-sur-des-tests-automatiques-ecrits-dans-nimporte-quel-langage-autre-que-java-c/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Voici un modeste retour d&#8217;expérience chez un client (appelons le &#8220;S.&#8221;) qui peut vous intéresser si votre projet comporte des tests automatiques pour lesquels il n&#8217;existe aucun framework. Cela peut arriver lorsque les tests sont écrits avec des langages exotiques ou &#8220;faits maison&#8221; comme c&#8217;est le cas chez S. :<br />
L&#8217;exploitation des résultats de tests se faisait jusqu&#8217;à maintenant par des rapports de sortie de test au format texte, dans lesquels il fallait faire une recherche manuelle sur le mot clef &#8220;error&#8221;, un bon vieux &#8220;grep&#8221; en quelque sorte&#8230; méthode rudimentaire et efficace mais qui peut commencer à poser des problèmes pratiques lorsque le nombre de tests devient important.</p>
<p>Pour bénéficier de la plus-value des outils existants comme Ant ou Jenkins, il suffit de rajouter en sortie de chaque test automatique un fichier XML qui respecte le format JUnit.<br />
Si, de plus, vos tests sont classés dans une structure hiérarchique de type &#8220;arbre&#8221;, vous pouvez réutiliser les noms des niveaux de hiérarchie en lieu et place des packages Java utilisés par JUnit dans ces fichiers XML.<br />
Par exemple :<br />
<code>Ma_campagne_de_tests\mon_domaine_fonctionnel_n1\mon_test_1<br />
Ma_campagne_de_tests\mon_domaine_fonctionnel_n1\mon_test_2<br />
Ma_campagne_de_tests\mon_domaine_fonctionnel_n2\mon_test_1<br />
Ma_campagne_de_tests\mon_domaine_fonctionnel_n2\mon_test_2</code></p>
<p>Une fois que ces fichiers XML sont générés, il suffit d&#8217;appeler la tâche &lt;junitreport&gt; dans un script Ant pour générer à partir de ces fichiers un rapport synthétique au format HTML, avec navigation entre packages et sous-packages.<br />
Ca marche bien, mais par défaut, la tâche &lt;junitreport&gt; génère un rapport orienté JUnit (on ne saurait lui en vouloir), avec des libellés tels que : &#8220;Designed for use with JUnit&#8221;.<br />
Pour corriger ce genre de détails, on peut fournir en entrée de la tâche ant un fichier .xsl adapté au contexte, en utilisant le paramètre styledir de &lt;junitreport&gt;. Pour tout savoir sur junitreport et styledir : <a href="http://ant.apache.org/manual/Tasks/junitreport.html">http://ant.apache.org/manual/Tasks/junitreport.html</a></p>
<p>Et pour ne pas tout réecrire, on peut prendre comme modèle le fichier .xsl de Ant qu&#8217;on peut trouver ici : .<code>..\apache-ant-1.8.4\etc\junit-frames.xsl (ou ...\apache-ant-1.8.4\etc\junit-noframes.xsl selon le cas)</code></p>
<p>Et voilà : Arrivé à ce niveau, on dispose d&#8217;une tâche Ant capable de générer un rapport de tests HTML structuré, synthétique et personnalisable, lisible par un non-informaticien et qui nous permet d&#8217;oublier notre grep initial.</p>
<p>Et pour jenkins alors ? Il faut réussir à écrire un script qui passe les tests et qui place les fichiers XML de sortie de ces tests dans un Workspace Jenkins, et ça suffit : Jenkins appelle ce script régulièrement, et se débrouille tout seul pour analyser chaque série de résultats, pour la comparer avec les résultats précédents, et tracer les courbes qui vont bien, comme l&#8217;évolution du nombre de tests &#8220;OK&#8221; ou de tests  &#8220;KO&#8221; dans le temps.<br />
On dispose alors d&#8217;un historique sur les résultats des tests automatiques, ce qui permet de cibler, par exemple, quelle modification du code a entraîné une régression, pour peu qu&#8217;on passe régulièrement tous les tests.</p>
<p>NOTE : Je n&#8217;ai pas trouvé de documentation sur le format exact utilisé par Ant pour les fichiers XML en sortie de tests Junit : cependant, il suffit d&#8217;écrire un test Junit trivial en Java, et de le passer via la tâche &lt;junit&gt; d&#8217;un script Ant, on dipose alors de fichiers qu&#8217;on peut facilement utiliser comme modèles.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2012/09/11/utiliser-ant-ou-jenkins-sur-des-tests-automatiques-ecrits-dans-nimporte-quel-langage-autre-que-java-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Déception @Asynchrone avec Jboss AS 6</title>
		<link>http://blog.genigraph.fr/2012/08/31/deception-asynchrone-avec-jboss-as-6/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deception-asynchrone-avec-jboss-as-6</link>
		<comments>http://blog.genigraph.fr/2012/08/31/deception-asynchrone-avec-jboss-as-6/#comments</comments>
		<pubDate>Fri, 31 Aug 2012 15:36:07 +0000</pubDate>
		<dc:creator>jcavezian</dc:creator>
				<category><![CDATA[JEE]]></category>
		<category><![CDATA[JEE6]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://blog.genigraph.fr/?p=411</guid>
		<description><![CDATA[Génigraph est partenaire Red Hat, et nous sommes friand des technologies JBoss : elles sont parmi ce qui se fait de mieux sur le marché, nous en sommes convaincus : Convaincus, par nos expériences, Convaincus, parce que la communauté nous &#8230; <a href="http://blog.genigraph.fr/2012/08/31/deception-asynchrone-avec-jboss-as-6/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Génigraph est partenaire <a title="Red Hat" href="http://www.redhat.fr" target="_blank">Red Hat</a>, et nous sommes friand des technologies <a title="JBoss" href="http://www.jboss.com">JBoss</a> : elles sont parmi ce qui se fait de mieux sur le marché, nous en sommes convaincus :</p>
<ul>
<li> Convaincus, par nos expériences,</li>
<li> Convaincus, parce que la communauté nous en fait l&#8217;écho.</li>
</ul>
<p>Mais parfois, un simple besoin utilisateur peut engendrer de petites déceptions &#8230;</p>
<p>J&#8217;ai la chance de participer à un projet qui met en œuvre le fleuron de la technologie Java :<br />
EJB 3.1, Context and Dependency Injection,  JSF2, et j&#8217;en passe, tout ça sur une plateforme JBoss AS 6.1 Final.<br />
Bref, tout pour être heureux.</p>
<p>Architecte en charge l&#8217;intégration de briques technologiques dans le projet et actuellement sur la conception d&#8217;un moteur d&#8217;exécution de traitements batchs, je lorgnais déjà depuis quelques temps sur cette nouvelle annotation @Asynchronous, introduite avec EJB 3.1.</p>
<p>Celle-ci permet d&#8217;indiquer que l&#8217;exécution d&#8217;un service EJB doit se faire de manière asynchrone. Elle permet surtout d&#8217;obtenir en retour immédiat un Future (<a href="http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html">http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/Future.html</a>) qui donne la main sur le thread d&#8217;exécution du service.</p>
<p>Très intéressant dans mon cas puisque les traitements exécutés sur le moteur peuvent prendre un certain temps et que l&#8217;Utilisateur, dans sa grande sagesse, a exprimé le besoin de pouvoir arrêter l&#8217;exécution du traitement à tout instant.</p>
<p>Et jusqu&#8217;à présent, avec les EJB, ça n&#8217;était pas possible ! Tout le monde sait que jouer avec les threads instanciés par le serveur JEE, c&#8217;est mal. Jamais personne n&#8217;oserait killer le thread d&#8217;exécution d&#8217;un EJB, en tout cas pas sans avoir conscience des conséquences irréversibles que cela peut avoir sur l&#8217;état du serveur&#8230; Une fois un service invoquer, on avait jusqu’alors qu’à attendre qu’il aboutisse.</p>
<p>Enfin j&#8217;allais pouvoir killer un service EJB, le rêve. Formulé de façon plus diplomatique, enfin il était possible d&#8217;arrêter proprement un service en cours d&#8217;exécution.</p>
<p>Pour illustrer, voilà à quoi peut ressembler l&#8217;implémentation d&#8217;un service asynchrone :<br />
<code><br />
@Stateless<br />
public class MonService {<br />
@Asynchronous<br />
public Future&lt;String&gt; faireQuelqueChoseDeTresTresLong()  {<br />
thread.sleep(10000000); //très très long<br />
String result = "j'ai bien dormi";<br />
return new AsyncResult&lt;String&gt;(result);<br />
}<br />
}<br />
</code></p>
<p>Génial, avec ça je peux donc très simplement arrêter l&#8217;exécution de mon service quand je le souhaite par un appel à cancel(boolean) sur mon Future, dont j&#8217;ai conservé au chaud la référence.</p>
<p>Ca devrait fonctionner, les spécifications JEE6 sont formelles, mais malheureusement, ça ne fonctionne pas. L’appel à cancel reste sans effet…</p>
<p>Je cherche donc dans mon moteur de recherche préféré à voir si je me suis loupé quelque part, s’il y a  une subtilité qui m’aurait échappé, si c&#8217;est un problème connu de JBoss 6, &#8230;</p>
<p>Et quelle n&#8217;est pas ma surprise de lire (<a href="https://community.jboss.org/thread/177433#647108">https://community.jboss.org/thread/177433#647108</a>):</p>
<blockquote><p>&#8220;@Asynchronous support in AS 6.x was not fully completed. I would recommend that you use AS 7.1.x and report any issues that you encounter. AS7 has fully functional @Asynchronous feature.&#8221;</p></blockquote>
<p>Je comprends pas&#8230; pour moi il est évident que JBoss 6 est certifié JEE6, c&#8217;est justement là-dessus que se base sa réputation : le 1er serveur JEE OpenSource certifié ! Et là j&#8217;apprends qu&#8217;une fonctionnalité telle que les EJB asynchrone, présentée comme une des grosses améliorations de JEE6, n&#8217;est pas supportée ?!</p>
<p>Et bien effectivement, difficile à croire mais JBoss 6 n&#8217;est pas &#8220;Full Java EE 6 Certified&#8221;, mais uniquement &#8220;Java EE 6 Web Profile Certified&#8221; et ça fait une grosse différence !</p>
<p>Je vous laisse lire <a href="https://community.jboss.org/thread/160813">https://community.jboss.org/thread/160813</a> et <a href="https://community.jboss.org/thread/162247">https://community.jboss.org/thread/162247</a>, discussions enflammées pour mieux comprendre le pourquoi du comment. Et aussi le résultat d&#8217;une enquête sur les attentes concernant la certification de JBoss exprimées par la communauté et les utilisateurs <a href="http://blog.webagesolutions.com/archives/357">http://blog.webagesolutions.com/archives/357</a></p>
<p><strong>D’où ma déception : JBoss 6 n&#8217;est pas &#8220;Full Java EE 6 Certified&#8221;  &#8230;. c&#8217;est a savoir !!! </strong></p>
<p>Je ne suis bien évidemment pas le seul à être surpris de l’apprendre ; Je fais quoi moi maintenant ? Je passe en version 7&#8230;?</p>
<p>PS : tout est parti du dernier Java Magazine de Juillet-Août 2012, avec un article très intéressant sur le threading et la concurrence en JEE6, je vous laisse apprécier : <a href="http://www.oraclejavamagazine-digital.com/javamagazine/20120708/?pg=59&amp;pm=1&amp;u1=friend#pg59">http://www.oraclejavamagazine-digital.com/javamagazine/20120708/?pg=59&amp;pm=1&amp;u1=friend#pg59</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.genigraph.fr/2012/08/31/deception-asynchrone-avec-jboss-as-6/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
