<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3088102898726951460</id><updated>2012-01-20T16:54:00.428+01:00</updated><category term='ruby'/><category term='websql'/><category term='annonce'/><category term='scala'/><category term='modelio'/><category term='kata'/><category term='rle'/><category term='javascript'/><category term='Barcamp'/><category term='java'/><category term='Communauté'/><category term='agilité'/><category term='rails3'/><category term='sujets'/><category term='scm'/><category term='&quot;pet project&quot;'/><category term='YouTube'/><category term='mastermind'/><category term='mda'/><category term='&quot;game of life&quot;'/><category term='branches'/><category term='dojo'/><category term='agile'/><category term='sql'/><category term='git'/><category term='python'/><category term='randori'/><category term='puissance4'/><category term='devoxx'/><category term='techchat'/><category term='dates'/><category term='Scrum'/><category term='ioke'/><category term='design'/><category term='tdd'/><category term='eclipse'/><category term='techchats'/><category term='comm'/><category term='universitefinance'/><category term='KawaCampParis'/><category term='vcs'/><title type='text'>TechChats</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4982978562856441015</id><published>2011-12-14T20:30:00.000+01:00</published><updated>2011-12-14T20:30:03.210+01:00</updated><title type='text'>Retour sur l'agile Tour Paris 2011</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-03AjOqCvVMM/Tuh9U4SeZBI/AAAAAAAAG2c/miUWgqpUwsU/s1600/at2011paris.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-03AjOqCvVMM/Tuh9U4SeZBI/AAAAAAAAG2c/miUWgqpUwsU/s1600/at2011paris.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;Pour débuter, l'organisation de l'évènement était vraiment bien, à la&amp;nbsp;hauteur de l'événement. Cela se passait dans les locaux de Microsoft&amp;nbsp;et l'on a senti l'implication des organisateurs pour pousser l'Agile.&amp;nbsp;Le nombre de personnes ayant assisté à cette journée est estimé à&amp;nbsp;environs 300 personnes.&lt;br /&gt;&lt;br /&gt;Je décrirais les sessions auxquelles j'ai assisté par chronologie:&amp;nbsp;D'abord, la keynote de Martin Woodward, Product Owner sur les outils&amp;nbsp;Microsoft, c'était un rappel sur le monde de l'agilité, le passé, le&lt;br /&gt;présent, le futur. Une belle introduction qui rappelle les points&amp;nbsp;importants dans la pratique agile : l'importance des feedback "Inspect&amp;nbsp;&amp;amp; Adapt", la définition de "DONE" et le pourquoi de l'agile "Empower&amp;nbsp;your team".&lt;br /&gt;&lt;br /&gt;La seconde session se portait sur la présence d'un UX designer dans un&amp;nbsp;projet SCRUM. Une session qui montre que l'UX Design c'est bien pour&amp;nbsp;un projet mais que son rôle empiète beaucoup avec le Product Owner. Un&amp;nbsp;bon retour d'expérience sur la mise en place d'une équipe Agile.&lt;br /&gt;&lt;br /&gt;J'ai assisté ensuite à une session portant sur le Déploiement Continu.&amp;nbsp;C'est rien de moins qu'une Intégration Continue avec une obligation de&amp;nbsp;permettre un Rollback sur la Production. Les principaux bénéfices&amp;nbsp;qu'on en retire sont la focalisation sur la Valeur Ajouté d'un projet,&amp;nbsp;un feedback immédiat et une Responsabilité accrue de la part de&amp;nbsp;l'équipe de développement.&lt;br /&gt;&lt;br /&gt;Je ne m'attarderais pas trop sur le retour d'expérience de la session&amp;nbsp;l'agilité ^ 3 chez un éditeur vantant principalement l'outil de&amp;nbsp;l'éditeur.&lt;br /&gt;&lt;br /&gt;Après le déjeuner, les deux sessions suivantes se sont portés sur&amp;nbsp;l'utilisation de produits Microsoft pour faire des tests fonctionnels&amp;nbsp;et également des tests de charges. Par rapport à l'agilité, ces&amp;nbsp;sessions étaient clairement destinées à des utilisateurs de la&amp;nbsp;plateforme .NET.&amp;nbsp;Venant du monde .NET, la possibilité d'effectuer avec ces outils des&amp;nbsp;tests de charge était très intéressant et l'utilisation de TFS 2011&amp;nbsp;pour suivre les bugs d'une équipe également. Cela montre clairement&amp;nbsp;l'implication de Microsoft dans la communauté Agile même si tout n'est&lt;br /&gt;pas rose.&lt;br /&gt;&lt;br /&gt;Les deux dernières sessions de la journée se focalisaient sur la&amp;nbsp;vision du Product Owner. La première était un retour d'expérience au&amp;nbsp;sein d'une banque d'investissement et la seconde un retour&amp;nbsp;d'expérience d'un coach agile.&lt;br /&gt;L'idée sur le Product Owner est qu'il est le personnage clé d'une&amp;nbsp;équipe Agile, bien sûr il ne fait pas tout. Il &amp;nbsp;doit assurer : la&amp;nbsp;décision et la validation. C'est lui le garant de l'avancé du projet.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;Les avantages de l'agilité &amp;nbsp;:&lt;/span&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;c'est concret et progressif, chaque itération montre l'avancement&lt;/li&gt;&lt;li&gt;c'est une convergence, le product owner et l'équipe recherche le même but&lt;/li&gt;&lt;li&gt;c'est transparent, on montre clairement l'avancement du développement&amp;nbsp;et les choses qui ne vont pas&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Pour le coach agile, afin de respecter SCRUM, le Product Owner doit&amp;nbsp;faire partie de l'équipe de prestation et une principe sur lequel on&amp;nbsp;ne peut transiger, c'est la qualité.&amp;nbsp;D'ailleurs, &lt;a href="http://www.scrum.org/storage/scrumguides/Scrum%20Guide%20-%202011.pdf"&gt;un lien vers le scrum guide écrit en juillet 2011&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Voilà, la journée a été très riche et très convaincante sur l'agilité.&lt;br /&gt;J'espère d'ailleurs pouvoir assister à la session 2012.&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif; font-size: 13px;"&gt;J.-P.S.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4982978562856441015?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4982978562856441015/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/12/retour-sur-lagile-tour-paris-2011.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4982978562856441015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4982978562856441015'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/12/retour-sur-lagile-tour-paris-2011.html' title='Retour sur l&apos;agile Tour Paris 2011'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-03AjOqCvVMM/Tuh9U4SeZBI/AAAAAAAAG2c/miUWgqpUwsU/s72-c/at2011paris.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7479609374593543365</id><published>2011-11-29T08:58:00.000+01:00</published><updated>2011-11-29T08:58:43.645+01:00</updated><title type='text'>Devoxx 2011: HTML5</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-32aEVZosf3g/TsznrpGFnkI/AAAAAAAAGw8/Dtba-BjIOVA/s1600/offline.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="239" src="http://1.bp.blogspot.com/-32aEVZosf3g/TsznrpGFnkI/AAAAAAAAGw8/Dtba-BjIOVA/s320/offline.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large; font-weight: bold;"&gt;Working Off the Grid: HTML5 Offline&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Speaker: &lt;a href="http://samdutton.wordpress.com/"&gt;Sam Dutton&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&lt;a href="http://www.twitter.com/sw12"&gt;@sw12&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;de Google&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;La présentation (&lt;a href="http://samdutton.com/offlinePresentation/"&gt;voir les slides&lt;/a&gt;) de Sam Dutton démarre mal: il n'arrive pas à se connecter au wifi de la salle. Cet incident a le mérite d'illustrer parfaitement le thème de cette session: les application HTML5 Offline. Il débute sa présentation par les cas d'utilisations pour le "offline":&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Accéder à son application web, même lorsqu'on n'est pas connecté à internet&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Accéder à son application pendant un déplacement (métro, train, dans la rue) avec une connexion intermittante&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Améliorer la réactivité de son application en faisant appel au contenu "offline" plutot que de requeter le serveur web&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Conserver les données utilisateurs quand il y a un problème de connexion. Par exemple lorsqu'un utilisateur remplit un formulaire et que la connexion tombe, un "draft" est sauvegardé dans une base locale (localStorage, sessionStorage) puis envoyé quand la connexion est de nouveau disponible&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Sam nous présente le devtools de Chrome pour travailler sur la fonctionnalité (accessible dans Chrome via Ctrl+Maj+J). Pour tester la connectivité, dans la console javascript, il suffit de tester le booléen navigator.onLine pour savoir si votre terminal (mobile ou desktop) est connecté ou pas. La plupart des téléphones mobiles supportent cette fonctionnalité. Attention, si navigator.onLine renvoie "true", cela ne signifie pas forcément que le terminal est connecté à Internet, cela signifie juste qu'un réseau est accessible (par exemple le réseau local peut etre accessible, mais pas internet). Il ne faut donc pas simplement vérifier navigator.onLine, mais aussi entourer les appels ajax des try/catch habituels pour éviter toute déconvenue.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;En mode offline, on peut donc proposer à l'application d'accéder à différentes sources de données disponibles dans trois endroits différents:&amp;nbsp;window.sessionStorage,&amp;nbsp;window.localStorage ou dans les fichiers listés dans &lt;a href="https://developer.mozilla.org/en/Using_Application_Cache"&gt;un fichier *.appcache&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Le fichier appcache doir être référencé dans la balise html: . example.appcache doit être servi par le serveur web avec le mime type&amp;nbsp;text/cache-manifest. Plusieurs problèmes de appcache sont à noter (la plupart sont référencés sur &lt;a href="http://appcachefacts.info/"&gt;appcachefacts.info&lt;/a&gt;) :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;si un seul des fichier référencé n'est pas disponible (404 error) aucun des fichier n'est accessible offline&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;c'est seulement au &lt;i&gt;deuxième chargement&lt;/i&gt; de la page que les fichiers offline seront chargés&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;il est conseillé d'ajouter un commentaire avec un timestamp pour que le serveur propose la dernière version du appacache au navigateur&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Il est aussi possible d'utiliser la base de donnée clé-valeur&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="https://developer.mozilla.org/en/IndexedDB"&gt;IndexedDB&lt;/a&gt; (qui propose une api asynchrone pour récupérer les données), mais le support de celle-ci n'est pas encore généralisé.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Finalement, Sam Dutton nous conseille d'utiliser une librairie pour abstraire le stockage des donnes, au format JSON par exemple: &lt;a href="http://westcoastlogic.com/lawnchair/"&gt;Lawnchair&lt;/a&gt;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Un conseil pour organiser son code: il est plus facile de mettre en place un système de file d'évenements pour accumuler/resynchroniser les données de l'utilisateur.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Il faut aussi faire attention aux quotas de place disponible qui peuvent varier d'un terminal à un autre. Pour les navigateurs basés sur webkit, on peut récupérer de nombreuses informations via l'objet&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://updates.html5rocks.com/tag/filesystem"&gt;webkitStorageInfo&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Enfin, si l'objectif est de créer une application web mobile pour la distribuer sur google web store, il nous conseille d'utiliser&amp;nbsp;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="http://www.appmator.com/"&gt;appmator.com&lt;/a&gt; pour générer un fichier description facilement.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Pour plus d'infos sur HTML5 il nous conseille chaudement &lt;a href="http://updates.html5rocks.com/"&gt;updates.html5rocks.com&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;h1&gt;&lt;a href="http://3.bp.blogspot.com/-gA6VjgiSiaE/TsznqtrJf5I/AAAAAAAAGw4/E14fO4xxOC8/s1600/bleeding.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-gA6VjgiSiaE/TsznqtrJf5I/AAAAAAAAGw4/E14fO4xxOC8/s320/bleeding.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;"&gt;Bleeding Edge HTML5&lt;/span&gt;&lt;/h1&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Speaker: &lt;a href="http://paul.kinlan.me/"&gt;Paul Kinlan&lt;/a&gt;&amp;nbsp;de Google&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Paul nous présente différentes fonctionnalités sur lesquelles il travaille au afin de les proposer dans la spécification HTML5.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Celle qui retient le plus l'attention: les &lt;a href="http://webintents.org/"&gt;web intents&lt;/a&gt;. L'idée est de définir des verbes, comme "share", "shorten", "pick" (an image), et de les utiliser dans nos pages web. Lorsque l'utilisateur souhaite partager un billet de blog, ou si il souhaite raccourcir une url, ou encore si il souhaite insérer une image dans un commentaire, c'est la navigateur qui détecte l'action de l'utilisateur et propose une liste de service qui correspondent au verbe. Pour l'action "share" l'utilisateur pourra choisir parmi une liste de service. L'ajout de la balise "intent share" remplace l'implémentation des apis de tous les services.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Les autres technologies présentées sont requestAnimationFrame,&amp;nbsp;&lt;/span&gt;&lt;a href="http://www.samdutton.com/pageVisibility/" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Page Visibility API&lt;/a&gt;,&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;une possibilité de "prefetch" les pages en avance pour que l'expérience utilisateur soit accélérée (ces pages sont alors récupérées avec un header spécial qui permet de ne pas les compter comme page effectivement visitées pour les différencier d'une navigation classique), une foncionnalité de "plein écran" (on s'attend à voir arriver rapidement des jeux sur les mobiles avec les memes fonctionnalités que les applications natives, accès au micro, accéléromètre, accès aux joysticks, temps réél, webRTC), Paul nous présente aussi une démo d'une image synchronisée avec le son provenant d'une balise audio.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;La démo des webintents:&lt;/span&gt;&lt;br /&gt;&lt;pre&gt;&lt;a href="http://2.bp.blogspot.com/-4K_Cs88rjYg/Tsznpxpu2kI/AAAAAAAAGww/FdDw8KcFL9k/s1600/webintent.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;img border="0" height="199" src="http://2.bp.blogspot.com/-4K_Cs88rjYg/Tsznpxpu2kI/AAAAAAAAGww/FdDw8KcFL9k/s320/webintent.jpg" width="320" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7479609374593543365?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7479609374593543365/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/11/devoxx-2011-html5.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7479609374593543365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7479609374593543365'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/11/devoxx-2011-html5.html' title='Devoxx 2011: HTML5'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-32aEVZosf3g/TsznrpGFnkI/AAAAAAAAGw8/Dtba-BjIOVA/s72-c/offline.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4577268288966879105</id><published>2011-11-23T20:00:00.000+01:00</published><updated>2011-11-23T20:00:04.067+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='devoxx'/><title type='text'>Devoxx 2011: Introduction</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;h1&gt;&lt;a href="http://2.bp.blogspot.com/-Kwd7n4EkqaY/TszhfJgb2CI/AAAAAAAAGwA/pn0C6-Xt-AA/s1600/antwerpen.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://2.bp.blogspot.com/-Kwd7n4EkqaY/TszhfJgb2CI/AAAAAAAAGwA/pn0C6-Xt-AA/s200/antwerpen.jpg" width="200" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Devoxx 2011&lt;/span&gt;&lt;/h1&gt;&lt;a href="http://1.bp.blogspot.com/-sgkfjBz2tqA/TszhfZ2BkcI/AAAAAAAAGwQ/bx7F9M2zI-I/s1600/attendees.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-sgkfjBz2tqA/TszhfZ2BkcI/AAAAAAAAGwQ/bx7F9M2zI-I/s200/attendees.jpg" width="200" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Cette année Devoxx fête sa 10e édition. Plus de 3200 personnes inscrites et le Thalys vers Anvers est rempli de développeurs java. Pour la keynote, après le message de bienvenue et l'indispensable procédure pour se connecter au wifi, nous avons le droit à une annonce: il y aura un &lt;a href="http://devoxx.fr/"&gt;devoxx a Paris en avril prochain&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;h1&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;"&gt;Les stands&lt;/span&gt;&lt;/h1&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Une Vingtaine de stands proposent de nombreux goodies. Parmis ceux qu'on retiendra: Le stand Google, Typesafe, MongoDB, Oracle, Adobe, Microsoft avec Azure&lt;/span&gt;&lt;br /&gt;&lt;h1&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;"&gt;Stand Google&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;HTML5&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-q07ue175l8Q/TszhfiQY-3I/AAAAAAAAGwY/pyvAd4g4-Lw/s1600/html5mongo.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-q07ue175l8Q/TszhfiQY-3I/AAAAAAAAGwY/pyvAd4g4-Lw/s200/html5mongo.jpg" width="200" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Des démonstrations de code HTML5 tournent sur les écrans. Une discussion informelle très intéressante avec Sam Dutton à propos du navigateur chrome qui devrait remplacer celui d'android rapidement. Des annonces devraient être faites bientôt sur les blogs.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;DART pour remplacer Javascript?&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;J'en profite pour poser une question à David Chandter qui travaille dans une grosse équipe google dédiée à DART: "what is the intend behind DART?" sa réponse: "to be popular". On discute ensuite de la compétition entre javascript et DART.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Les autres thèmes du stand&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;GoogleTV, Android icescream sandwich. Bizarrement, on n'entend pas du tout parler de GWT.&lt;/span&gt;&lt;br /&gt;&lt;h1&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;"&gt;Stand MongoDB&lt;/span&gt;&lt;/h1&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Une discussion très intéressante sur les différences entre &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; et &lt;a href="http://www.mongodb.org/"&gt;MongoDB&lt;/a&gt;. CouchDB permet d'embarquer des applications web directement (&lt;a href="http://couchapp.org/"&gt;couchapps&lt;/a&gt;) qui peuvent discuter avec la base via REST. Pour arriver au même résultat avec MongoDB il faut utiliser &lt;a href="http://www.mongodb.org/display/DOCS/Http+Interface"&gt;un plugin REST&lt;/a&gt;. Mais le usecase des applications web pour mongoDB n'est pas l'objectif.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Une autre différence se situe au niveau de la réplication. Pour CouchDB il est possible de synchronizer deux bases: on peut ecrire dans les deux et les modifications sont répliquées dans chacune (master-master). MongoDB fonctionne en master-slave.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;a href="https://mongolab.com/"&gt;MongoLab &lt;/a&gt;et &lt;a href="https://mongohq.com/"&gt;MongoHq &lt;/a&gt;proposent des bases MongoDB hébergées pour tester gratuitement MongoDB.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;HTML5 Programming with WebGL&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-N-k-_ClCEb8/TszhfxCj4RI/AAAAAAAAGwg/rXUmZHCdJTg/s1600/webgl.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="150" src="http://1.bp.blogspot.com/-N-k-_ClCEb8/TszhfxCj4RI/AAAAAAAAGwg/rXUmZHCdJTg/s200/webgl.jpg" width="200" /&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Speaker: &lt;a href="http://jameswilliams.be/"&gt;James William&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;L'intention du speaker était de coder en &lt;a href="http://jashkenas.github.com/coffee-script/"&gt;Coffeescript&lt;/a&gt;/&lt;a href="http://www.khronos.org/webgl/"&gt;WebGL &lt;/a&gt;et en live les première étapes du tutorial OpenGL.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;La présentation démarre sur l'utilisation de CoffeeScript à la place de javascript pour faciliter les développements. Une présentation trop courte et un peu hors-sujet. On constate cependant que CoffeeScript, malgres sa jeunesse, est de plus en plus populaire.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;La partie "live coding" ne se passe pas comme prévu. James code de grosses parties des tutoriaux en une seule fois, essaye de les lancer dans le navigateur, constate qu'une erreur se répète à l'infini dans une boucle lancée par "&lt;a href="http://paulirish.com/2011/requestanimationframe-for-smart-animating/"&gt;requestAnimationFrame&lt;/a&gt;". Il peut cependant nous présenter le code qu'il avait préparé à l'avance.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Les étapes pour développer en 3D sont toujours les mêmes:&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Créer la scène du monde&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Créer une caméra, la placer dans le monde&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Appliquer un rendu, insérer le tout dans la page&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Ajouter une lumière directionnelle dans la scène&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Creer une "geometrie" dans laquelle on insère une série de triangles&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Ajouter des couleur et insérer l'objet géométrique dans la scene&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Pour les animations, au lieu d'un setTimeout, on utilise le fameux requestAnimationFrame()&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;La démonstration de code en live s'arrête à l'affichage d'une pyramide. Le speaker essaye de nous présenter une démo qui ne fonctionne pas, et se rabat sur les questions du public.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;three.js est la librairie javascript à suivre pour développer en 3D dans le navigateur. Cependant, il faudra attendre encore un peu avant de pouvoir se lancer dans un développement sérieux en 3D dans les navigateurs desktop ou mobiles: le macbook air sur lequel James William développait n'était pas adapté au traitement d'objets 3D (pas d'accélération GPU), les outils de développement sont rudimentaires (jEdit et la console javascript de Chrome pour notre speaker).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Les Présentations intéressantes dans les autres salles:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;The Diabolical Developer: take the power back de Martijn Verburg  Beaucoup de retours enthousiasmés apres cette présentation. Le speaker semble avoir touché la corde sesible de tous les développeurs présents dans la salle&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Java: The Good, the Bad ad the Ugly Parts de Joshua Bloch.&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Kwd7n4EkqaY/TszhfJgb2CI/AAAAAAAAGwA/pn0C6-Xt-AA/s1600/antwerpen.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-sgkfjBz2tqA/TszhfZ2BkcI/AAAAAAAAGwQ/bx7F9M2zI-I/s1600/attendees.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-q07ue175l8Q/TszhfiQY-3I/AAAAAAAAGwY/pyvAd4g4-Lw/s1600/html5mongo.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-N-k-_ClCEb8/TszhfxCj4RI/AAAAAAAAGwg/rXUmZHCdJTg/s1600/webgl.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4577268288966879105?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4577268288966879105/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/11/devoxx-2011-introduction.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4577268288966879105'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4577268288966879105'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/11/devoxx-2011-introduction.html' title='Devoxx 2011: Introduction'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Kwd7n4EkqaY/TszhfJgb2CI/AAAAAAAAGwA/pn0C6-Xt-AA/s72-c/antwerpen.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8666912431842671585</id><published>2011-11-08T20:30:00.000+01:00</published><updated>2011-11-29T16:34:28.425+01:00</updated><title type='text'>Techchats: Tests et Usines Logicielles</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;Session Tests&lt;/b&gt;&lt;/span&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Pourquoi&amp;nbsp; teste-t-on&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;?&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;ul type="DISC"&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Correction&amp;nbsp; de&amp;nbsp;bug&amp;nbsp;(bug&amp;nbsp;bien&amp;nbsp; corrigé)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Vérifier la non régression&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Documenter le code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Intention derrière le code (conception émergente)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Pour qualifier un logiciel&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Faire du refactoring&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Pour comprendre le code&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Pour améliorer le design (découper le code)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Harnais par rapport aux travail des autres&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;div&gt;Classification &amp;nbsp;des tests :&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Black &amp;nbsp;box / White box&lt;/li&gt;&lt;li&gt;Test unitaire&lt;/li&gt;&lt;li&gt;Test fonctionnel&lt;/li&gt;&lt;li&gt;Test d’intégration&lt;/li&gt;&lt;li&gt;Test d’infrastructure&lt;/li&gt;&lt;li&gt;Fuzzy testing, mutation testing, test par propriétés&lt;/li&gt;&lt;li&gt;TDD, BDD, TDR&lt;/li&gt;&lt;li&gt;Test de sécurité (HP fortify)&lt;/li&gt;&lt;li&gt;Test de charge&lt;/li&gt;&lt;li&gt;Test d’interface&lt;/li&gt;&lt;li&gt;Test manuel / test automatique&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Tests &amp;nbsp;unitaires :&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Définition &amp;nbsp;« académique » : &amp;nbsp;en POO : la fonction.&lt;/li&gt;&lt;li&gt;En pratique : souvent la classe.&lt;/li&gt;&lt;li&gt;3A : arrange, act, assert&lt;/li&gt;&lt;li&gt;Teste des fonctions privées ? Non&lt;/li&gt;&lt;li&gt;Propriété du test unitaire :&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Indépendant de l’environnement (Mock, Stub, H2, HSQLDB)&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Quel dose ?&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Pas sur les propriétés&lt;/li&gt;&lt;li&gt;Systématiquement ?&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Définition&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;3A&lt;/li&gt;&lt;li&gt;Pourquoi&lt;/li&gt;&lt;li&gt;Inutile ? (si dans un grand ensemble)&lt;/li&gt;&lt;li&gt;Insaisissable ?&lt;/li&gt;&lt;li&gt;Quel dose ?&lt;/li&gt;&lt;li&gt;Sandboxing&lt;/li&gt;&lt;li&gt;TDD&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;&lt;div&gt;Les tests d’intégration&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Définition &amp;nbsp;: tester l’environnement &amp;nbsp;(tester les « externalités » &amp;nbsp;: web services, &amp;nbsp; base de données…) &amp;nbsp;l’appli doit marcher &amp;nbsp;sur toutes les machines.&lt;/li&gt;&lt;li&gt;Problème : c’est lent.&lt;/li&gt;&lt;li&gt;Smoke test : uniquement la présence de l’externalité.&lt;/li&gt;&lt;li&gt;Outil de vérification temps-réel : nagios&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Les tests &amp;nbsp;d’acceptation&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Définition &amp;nbsp;: validation client &amp;nbsp;du logiciel.&lt;/li&gt;&lt;li&gt;TDR : Ecrire dans un wiki (Fitnesse) les specs. Ces tests s’effectuent Hors IHM.&lt;/li&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;Difficile &amp;nbsp;car niveau MOA.&lt;/li&gt;&lt;li&gt;TDR &amp;nbsp;vs BDD : définitions &amp;nbsp;et exemples.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;Tests &amp;nbsp;d’interface&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Faire &amp;nbsp;des interfaces bidons &amp;nbsp;pour commencer.&lt;/li&gt;&lt;li&gt;Ne pas tester automatiquement le layout, car trop subjectif.&lt;/li&gt;&lt;li&gt;Simplifier au maximum.&lt;/li&gt;&lt;li&gt;N’automatiser que les données.&lt;/li&gt;&lt;li&gt;Au plus un test par page.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Maintenance des tests&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Dérive &amp;nbsp;du temps total des &amp;nbsp;tests au fil des &amp;nbsp;semaines.&lt;/li&gt;&lt;li&gt;Comment détecter les test inutiles ? (voir outils)&lt;/li&gt;&lt;li&gt;Log4j.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;Notre usine de &amp;nbsp;test&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;Test &amp;nbsp;unitaire : dans tous &amp;nbsp;les packages au moins &amp;nbsp;un, beaucoup sur les &amp;nbsp;fonctions utilitaire. Dans &amp;nbsp;l’IC.&lt;/li&gt;&lt;li&gt;Test d’intégration : au minimum car trop lent : juste les smoke test dans l’IC. D’autres possibles hors IC pour aller plus vite lors du débuggage.&lt;/li&gt;&lt;li&gt;Test fonctionnel : utiliser du TDR pour automatiser.&lt;/li&gt;&lt;li&gt;Test d’interface : automatiser uniquement l’existence des données.&lt;/li&gt;&lt;li&gt;Test manuels (hors IC) : indispensable, le plus réduit possible dans le cadre d’une production continue.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif; font-size: large;"&gt;&lt;b&gt;Session Usines Logicielles&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; color: #222222; font-family: arial, sans-serif;"&gt;1) Les usines de dev, mais qu'est-ce donc ?&lt;br /&gt;&lt;br /&gt;Suite à cette question, on se rend compte que la notion est finalement assez floue, aucune réponse évidente n'étant trouvée.&lt;br /&gt;On s'accorde pour dire que le SCM et l'IC y jouent un rôle prépondérant ; il y a débat sur les autres points (Wiki, Instant Messaging, etc.)&lt;br /&gt;&lt;br /&gt;Au final, on opte pour :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;L'usine de dev regroupe tout ce qui permet d'aller plus vite dans le projet, en termes d'automatisation et d'industrialisation.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;L'automatisation étant plus ou moins le "contrat", et l'industrialisation son "implémentation" (théorie / mise en pratique)&lt;br /&gt;&lt;br /&gt;2) Que contient l'usine de dev pour une équipe d'1 personne :&lt;br /&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;SCM&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;PVCS Dimension&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;ClearCase&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Starteam&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;CVS&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Perforce&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;SVN&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Mercurial&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Bazaar&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Git&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;mention spéciale pour les utilitaires de la famille TortoiseXXX qui se révèlent généralement bien pratiques&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;IDE&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Eclipse&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Intellij&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Netbeans&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Visual Studio&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Kylix&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;Outils de tests&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;JUnit &amp;amp; XUnit likes&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;GreenPepper&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Sélénium&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;JMeter&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Apache benchmark&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;TestNG&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;Outils de build et de gestion de dépendances&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Maven&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Ant&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Gradle&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Ivy&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;SBT (Scala Builder Tool)&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Buildr&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;make (nostalgie)&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;Intégration Continue&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Cruise Control&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Jenkins / Hudson&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;TeamCity (s'intègre particulièrement bien dans Intellij, tous deux sont des produits JetBrains)&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Bamboo (Atlassian)&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Quickbuild&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;Outils de qualimétrie&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Sonar&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Metriware&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Fortify&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;JaCoCo&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;PMD&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Checkstyle&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;FindBugs&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Linq&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Clover&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Cobertura&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;Wiki&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Confluence&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;XWiki&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;trop de possibilités !&lt;/li&gt;&lt;/ul&gt;&lt;li style="margin-left: 15px;"&gt;Outils de gestion des tâches&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;JIRA&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Mantis&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;BugZilla&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;TRAC&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Redmine&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;LightHouse&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;3) Pour une équipe de plusieurs personnes :&lt;br /&gt;&lt;br /&gt;Idem, mais on rajoute les outils de Code Review :&lt;br /&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Code Review&lt;/li&gt;&lt;ul&gt;&lt;li style="margin-left: 15px;"&gt;Crucible&lt;/li&gt;&lt;li style="margin-left: 15px;"&gt;Gerrit&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;De plus, certains outils deviennent plus importants (tout particulièrement le SCM).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-family: 'Times New Roman';"&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8666912431842671585?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8666912431842671585/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/11/techchats-tests-et-usines-logicielles.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8666912431842671585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8666912431842671585'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/11/techchats-tests-et-usines-logicielles.html' title='Techchats: Tests et Usines Logicielles'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4752355599721104818</id><published>2011-09-22T07:20:00.000+02:00</published><updated>2011-09-22T12:35:05.358+02:00</updated><title type='text'>21ème dojo: mastermind en scala</title><content type='html'>Prochaine Date &lt;br /&gt;--------------&lt;br /&gt;Mardi 18/10/2011&lt;br /&gt;&lt;br /&gt;Participants&lt;br /&gt;------------&lt;br /&gt;Luc&lt;br /&gt;Steeve&lt;br /&gt;Patrick&lt;br /&gt;Philippe&lt;br /&gt;Jerome&lt;br /&gt;Jean&lt;br /&gt;Aurelien&lt;br /&gt;&lt;br /&gt;Retrospective &lt;br /&gt;-------------&lt;br /&gt;Kata scala mastermind&lt;br /&gt;Bien parceque scala mais trop "découverte" meme pour le présentateur &lt;br /&gt;On a reussi a faire les bons bien placés&lt;br /&gt;On a cru que c'était fini&lt;br /&gt;Pas perdu trop de temps sur l'environnement&lt;br /&gt;&lt;br /&gt;encore (et toujours) mastermind ... et on a toujours pas fini&lt;br /&gt;&lt;br /&gt;Sujets&lt;br /&gt;------&lt;br /&gt;1***************** Mastermind scala kata&lt;br /&gt;2**** Mastermind ruby randori&lt;br /&gt;3** Puissance 4 python kata&lt;br /&gt;4*** Puissance 4 python randori&lt;br /&gt;5*********** Mastermind javascript kata&lt;br /&gt;6************** Calcul de score bowling java kata&lt;br /&gt;7***** Calculatrice java kata&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1234085.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4752355599721104818?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4752355599721104818/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/09/21eme-dojo-mastermind-en-scala.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4752355599721104818'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4752355599721104818'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/09/21eme-dojo-mastermind-en-scala.html' title='21ème dojo: mastermind en scala'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6577877705743296570</id><published>2011-08-25T19:54:00.001+02:00</published><updated>2011-08-25T19:54:49.520+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>20ème dojo : Mastermind en scala</title><content type='html'>Participants&lt;br /&gt;--------------&lt;br /&gt;Steve Beroard&lt;br /&gt;Micha&amp;euml;l Graf&lt;br /&gt;Erwan Letallec&lt;br /&gt;David Boureau&lt;br /&gt;Patrick Dos Santos&lt;br /&gt;Nicolas Brun&lt;br /&gt;Philippe Antoine&lt;br /&gt;J&amp;eacute;r&amp;ocirc;me Duquennoy&lt;br /&gt;&lt;br /&gt;Prochaine date&lt;br /&gt;---------------&lt;br /&gt;21 Septembre 2011&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Retrospective&lt;br /&gt;----------------&lt;br /&gt;P4 en python / kata&lt;br /&gt;Pas tr&amp;egrave;s loin d'un succ&amp;egrave;s, il ne manquait pas grand chose&lt;br /&gt;Sujet born&amp;eacute; -&amp;gt; on a pu avancer&lt;br /&gt;MAIS, il restait un bug vicelard a la fin ...&lt;br /&gt;&lt;br /&gt;Sujets du jour&lt;br /&gt;----------------&lt;br /&gt;1 - *********** Master mind ruby kata&lt;br /&gt;2 - ********* Master mind ruby randori&lt;br /&gt;3 - **************** Master mind scala kata&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sujet non valid&amp;eacute;s&lt;br /&gt;-------------------&lt;br /&gt;refactoring de test U IRL (avec code obsol&amp;egrave;te et tout)&lt;br /&gt;Accumulateur Huffman&lt;br /&gt;master mind javascrip avec un truc bidouill&amp;eacute; ( SUnit, plus ou moins &amp;eacute;quivalent a Qunit, mais mieux ! )&lt;br /&gt;&lt;br /&gt;&lt;script src="https://gist.github.com/1171242.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6577877705743296570?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6577877705743296570/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/08/20eme-dojo-mastermind-en-scala.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6577877705743296570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6577877705743296570'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/08/20eme-dojo-mastermind-en-scala.html' title='20ème dojo : Mastermind en scala'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-1872640911235199153</id><published>2011-08-25T19:52:00.003+02:00</published><updated>2011-08-25T20:02:02.088+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>19ème DOJO : puissance 4 python</title><content type='html'>&lt;div&gt;Participants du jour&lt;/div&gt;&lt;div&gt;--------------------&lt;/div&gt;&lt;div&gt;Mamadou&lt;/div&gt;&lt;div&gt;Patrick&lt;/div&gt;&lt;div&gt;Nicolas&lt;/div&gt;&lt;div&gt;J&amp;eacute;r&amp;ocirc;me&lt;/div&gt;&lt;div&gt;Renaud&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;retrospective&lt;/div&gt;&lt;div&gt;-------------&lt;/div&gt;&lt;div&gt;Sujet : Huffmann Java Kata&lt;/div&gt;&lt;div&gt;R&amp;eacute;sultat : echec (cuisant)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;- sujet pas pr&amp;eacute;par&amp;eacute; -&amp;gt; test pas &amp;eacute;vidents &amp;agrave; trouver&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;- sans doute un peu ambitieux pour une seul s&amp;eacute;ance&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Prochaine date&lt;/div&gt;&lt;div&gt;--------------&lt;/div&gt;&lt;div&gt;Mercredi 24 Aout&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;sujets&lt;/div&gt;&lt;div&gt;-------&lt;/div&gt;&lt;div&gt;1 - ******** Puissance 4 - Python - kata&lt;/div&gt;&lt;div&gt;2 - **** game of life ascii - Python - krata&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Objectif&lt;/div&gt;&lt;div&gt;---------&lt;/div&gt;une fonction qui prend en entr&amp;eacute;e une colonne et qui retourne le nombre maximum de points align&amp;eacute;s avec le sommet de cette colonne, en tenant compte des verticales, des horizontales, et des diagonales.&lt;br /&gt;&lt;br /&gt;&amp;nbsp; &lt;script src="https://gist.github.com/1171291.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-1872640911235199153?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/1872640911235199153/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/08/19eme-dojo-puissance-4-python.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1872640911235199153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1872640911235199153'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/08/19eme-dojo-puissance-4-python.html' title='19ème DOJO : puissance 4 python'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8850817500460892668</id><published>2011-08-25T19:51:00.001+02:00</published><updated>2011-08-25T19:54:13.544+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>18e dojo : Compression de hoffman</title><content type='html'>&lt;div&gt;Etaient pr&amp;eacute;sents&lt;/div&gt;&lt;div&gt;----------------&lt;/div&gt;- philippe&lt;div&gt;- jean&lt;/div&gt;&lt;div&gt;- olivier&lt;/div&gt;&lt;div&gt;- gregory&lt;/div&gt;&lt;div&gt;- aurelien&lt;/div&gt;&lt;div&gt;- steeve&lt;/div&gt;&lt;div&gt;- jerome&lt;/div&gt;&lt;div&gt;- patrick&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Retrospective&lt;/div&gt;&lt;div&gt;----------------&lt;br /&gt;&lt;div&gt;pas de TDD,developement mobile HTML5&amp;nbsp;&lt;/div&gt;&lt;div&gt;but atteint : liste sur mobile r&amp;eacute;cup&amp;eacute;r&amp;eacute;e (les dernieres photos de chat sur flickr)&lt;/div&gt;&lt;div&gt;comp&amp;eacute;tences pr&amp;eacute;sentes, pas d'h&amp;eacute;sitation et une vision&lt;/div&gt;&lt;div&gt;on a fr&amp;ocirc;l&amp;eacute; le d&amp;eacute;rapage mais on a r&amp;eacute;ussi a recadrer !!&lt;/div&gt;&lt;div&gt;phongap sans interet pour le sujet&lt;/div&gt;&lt;div&gt;apr&amp;egrave;s chaque iteration : test sur mibile =&amp;gt; publication live (continuous delivery)&lt;/div&gt;&lt;div&gt;jsonp c'est tordu (gros hack)&lt;/div&gt;&lt;div&gt;peu de code&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;Sujets&lt;br /&gt;--------&lt;br /&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;******1 kata python puissance 4&lt;/div&gt;&lt;div&gt;***2 mastermind ruby randori&lt;/div&gt;&lt;div&gt;***********3 mastermind ruby kata&lt;/div&gt;&lt;div&gt;********************4 hoffman java kata&lt;/div&gt;&lt;div&gt;-9 test unitaire de query HSQL avec hsqlDb/unitils/dbunit/spring&lt;/div&gt;&lt;div&gt;-9b js morpion krandori&lt;/div&gt;&lt;br /&gt;&amp;nbsp;&lt;/div&gt;code lost&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8850817500460892668?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8850817500460892668/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/08/18e-dojo-compression-de-hoffman.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8850817500460892668'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8850817500460892668'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/08/18e-dojo-compression-de-hoffman.html' title='18e dojo : Compression de hoffman'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8112094672627447314</id><published>2011-08-25T19:43:00.000+02:00</published><updated>2011-08-25T19:43:48.389+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>17e dojo: Game Of Life en javascript</title><content type='html'>&lt;p&gt;Prochaine dojo: Mercredi 1er juin&lt;/p&gt;&lt;p&gt;gregory d.&lt;br /&gt;olivier m.&lt;br /&gt;jerome d.&lt;br /&gt;philippe a.&lt;/p&gt;&lt;p&gt;Retrospective&lt;br /&gt;* c'&amp;eacute;tait en java&lt;br /&gt;* pour du java en randori on a reussi a avancer&lt;br /&gt;* tests pas assez pr&amp;eacute;par&amp;eacute;s&lt;br /&gt;* commencer par proposer le sujet en kata avant de le passer en randori&lt;/p&gt;&lt;p&gt;Sujets:&lt;br /&gt;* puissance 4 krata python&lt;br /&gt;* puissance 4 randori java (clavier bizarre)&lt;br /&gt;* game of life kata en javascript : sujet choisi&lt;/p&gt;&lt;script src="https://gist.github.com/1171259.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8112094672627447314?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8112094672627447314/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/08/17e-dojo-game-of-life-en-javascript.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8112094672627447314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8112094672627447314'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/08/17e-dojo-game-of-life-en-javascript.html' title='17e dojo: Game Of Life en javascript'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4204004489705585637</id><published>2011-04-19T14:12:00.000+02:00</published><updated>2011-04-19T14:12:29.615+02:00</updated><title type='text'>KawaCampParis4 retro</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-iFjdQaeID-k/Ta152d2YgaI/AAAAAAAAGrM/pwM1643ODlw/s1600/tableau.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 2em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-iFjdQaeID-k/Ta152d2YgaI/AAAAAAAAGrM/pwM1643ODlw/s200/tableau.jpg" width="150" /&gt;&lt;/a&gt;&lt;/div&gt;Le 4e kawacamp qui s'est tenu la semaine dernière, dans les locaux de Softeam, a rassemblé une trentaine de passionnés. Les sujets abordés pendant la première sessions:&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;git et le versionning: retours d'expérience sur l'utilisation de git sur des projets&lt;/li&gt;&lt;li&gt;les gros #fails: retours d'expérience sur des projets ratés et les lecons apprises&lt;/li&gt;&lt;li&gt;HTML5 et mobile: une discussion ouverte sur les dernières fonctionnalités qu'apporte HTML5 et son utilisation pour les applications web mobiles&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div style="clear:both"&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Pour la seconde session :&lt;/div&gt;&lt;div&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;le cloud en entreprise&lt;/li&gt;&lt;li&gt;Scala&lt;/li&gt;&lt;li&gt;Test Driven Development en entreprise&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Les participants pour la discussion sur le cloud:&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Qg2rPvX7sLc/Ta17LpJ2eOI/AAAAAAAAGrU/9s-zxryBE4o/s1600/cloud-participants.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://3.bp.blogspot.com/-Qg2rPvX7sLc/Ta17LpJ2eOI/AAAAAAAAGrU/9s-zxryBE4o/s320/cloud-participants.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;La salle TDD :&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-7Cqs2pSbVv4/Ta17M5o2cPI/AAAAAAAAGrY/qNLJ7nX2hTI/s1600/tdd-participants.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="239" src="http://2.bp.blogspot.com/-7Cqs2pSbVv4/Ta17M5o2cPI/AAAAAAAAGrY/qNLJ7nX2hTI/s320/tdd-participants.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4204004489705585637?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4204004489705585637/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/04/kawacampparis4-retro.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4204004489705585637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4204004489705585637'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/04/kawacampparis4-retro.html' title='KawaCampParis4 retro'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-iFjdQaeID-k/Ta152d2YgaI/AAAAAAAAGrM/pwM1643ODlw/s72-c/tableau.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-3400583465570519414</id><published>2011-04-12T21:32:00.000+02:00</published><updated>2011-04-12T21:32:18.367+02:00</updated><title type='text'>Retours sur les derniers Meetups à Paris</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Retour sur certains des derniers meetups techniques parisiens.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://barcamp.org/RailsCampParis3"&gt;RailsCampParis3&lt;/a&gt;&lt;br /&gt;Ce we s'est tenu le 3e barcamp ruby on rails. Beaucoup de discussions autour de la version 3 de rails qui ne semble pas faire l'unanimité. Certains attendent la version 4 avec l'intégration de la dernière version de ruby 1.9 pour migrer. Dans toutes les conversations, deux mot-clés sont incontournables: "mobile" et "javascript". J'ai particulièrement apprécié la discussion &lt;a href="http://rubyeventmachine.com/"&gt;eventmachine&lt;/a&gt;/&lt;a href="http://nodejs.org/"&gt;node.js&lt;/a&gt;, très technique et très bas niveau (les cas d'utilisations concernaient essentiellement des applications multijoueurs en ligne).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://2.bp.blogspot.com/-SQW5Ezf7s_A/TaRj3STS10I/AAAAAAAAGqE/rRaydP3-C8g/s200/RailsCamp-01.jpg" style="height: 150px;float:left" /&gt;&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/-JqMd13FgY38/TaRj3EA6rpI/AAAAAAAAGp8/MHT2h1C5E20/s200/RailsCamp-00.jpg" style="height: 150px;float:left;margin-top:-18px;margin-left:10px"/&gt;&lt;br /&gt;&lt;div style="clear:left;"&gt;Ci-dessus, le tableau des sujets et une discussion en cours&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear:left; margin-top:20px"&gt;&lt;a href="http://parisjs.org"&gt;Parisjs5&lt;/a&gt;&lt;br /&gt;Les meetups javascript sont de plus en plus prisés (une centaine d'inscrits). Les sujets étaient comme à l'habitude variés. On pourra retenir la présentation de l'API drag and drop HTML5 et ses défauts, mais surtout une démo en avant-première de &lt;a href="http://myjs.fr/"&gt;my.js&lt;/a&gt;, la librairie javascript la plus rapide du web (!). Le créateur de my.js a fait particulièrement attention aux problématiques de performances et compare son framework à jQuery, Mootols etc. Le secret tient dans une meilleure gestion du scope, à une utilisation judicieuse de "eval" pour générer du code à la volée, à des "features detections" réalisées très tôt. Il explique aussi pourquoi certains fonctionnalités proposées dans jquery ne sont pas optimisées (tout passe par un $ fourre-tout, du polymorphisme avec 6 parametres etc.).&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="150" width="200" src="http://1.bp.blogspot.com/-lrrTnAWq40w/TaRrG-nzhNI/AAAAAAAAGqM/od1s2Vd5pas/s200/parisjs5.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.flickr.com/photos/mikiane/sets/72157626388412422/"&gt;d'autres photos&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="clear:left" &gt;&lt;a href="http://parisjs.org"&gt;Les premiers Parisjs&lt;/a&gt; et le &lt;a href="http://barcamp.org/w/page/29738776/WebWorkersCamp10"&gt;webworkercamp10&lt;/a&gt;&lt;br /&gt;Apres deux premiers meetups javascripts coup sur coup (parisjs1 et &lt;a href="http://barcamp.org/jscamp0"&gt;jscamp0&lt;/a&gt;) la communauté javascript commence à s'organiser à Paris. Et c'est à l'occasion du webworkercamp10 que le site &lt;a href="http://parisjs.org"&gt;parisjs.org&lt;/a&gt; a vu le jour pour fédérer la communauté.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="150" width="200" src="http://3.bp.blogspot.com/-WvYfeiXeZXM/TaRuFLiEHVI/AAAAAAAAGqU/3F6tQs7eY0U/s200/parisjs-01.jpg"  style="height: 150px;float:left"/&gt;&lt;img border="0" height="150" width="200" src="http://1.bp.blogspot.com/--H3WSKc2AH4/TaRuFQsN_2I/AAAAAAAAGqc/74f_wEF5vWE/s200/parisjs-02.jpg" style="height: 150px;float:left;margin-left:10px" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="clear:left; margin-bottom:30px" &gt;Ci-dessus le premier parisjs&lt;br /&gt;&lt;br /&gt;Ci-dessous le jscamp et le webworkercamp&lt;br /&gt;&lt;img border="0" height="150" width="200" src="http://4.bp.blogspot.com/-Tz9iRX4V3iA/TaRu74jCW9I/AAAAAAAAGqk/W3LXfkohHR0/s200/jsCamp0.jpg" style="height: 150px;float:left" /&gt;&lt;br /&gt;&lt;img border="0" height="150" width="200" src="http://2.bp.blogspot.com/-EmUfZ9-5Ho0/TaRu8PgXYrI/AAAAAAAAGqs/-MJO11owoVU/s200/WebWorkersCamp10.jpg" style="height: 150px;float:left;margin-left:10px;margin-top:-18px;" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:left; margin-top:30px"&gt;&lt;a href="http://www.frenchsug.org"&gt;French SUG&lt;/a&gt;&lt;br /&gt;Le french SUG (pour Scrum User Group) organise régulièrement des conférences autour de SCRUM. Le 30 septembre 2010 plusieurs intervenants ont ainsi eu l'occasion de nous faire un retour d'expérience. La salle était comble et les discussions apres les conférences se sont terminées bien plus tard que prévu. Le sujet passionne toujours.&lt;br /&gt;&lt;img border="0" height="150" width="200" src="http://4.bp.blogspot.com/-fxr0UkTJVXk/TaRxIiCTfqI/AAAAAAAAGq0/rKipfSK_U3I/s200/ParisSugVidal.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="clear:left;"&gt;Les prochains evenements:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://barcamp.org/KawaCampParis4"&gt;KawaCampParis4&lt;/a&gt; chez Softeam demain soir (le 13 avril)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.meetup.com/SemanticCampParis/events/17113864/"&gt;SemanticCampParis&lt;/a&gt;  sur le web sémantique le samedi 16 avril&lt;/li&gt;&lt;li&gt;&lt;a href="http://barcamp.org/WebWorkersCamp11"&gt;WebWorkersCamp11&lt;/a&gt; un nouveau webworkercamp le samedi 16 avril aussi&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-3400583465570519414?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/3400583465570519414/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/04/retours-sur-les-derniers-meetups-paris.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3400583465570519414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3400583465570519414'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/04/retours-sur-les-derniers-meetups-paris.html' title='Retours sur les derniers Meetups à Paris'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-SQW5Ezf7s_A/TaRj3STS10I/AAAAAAAAGqE/rRaydP3-C8g/s72-c/RailsCamp-01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5299367266514529361</id><published>2011-04-04T23:40:00.001+02:00</published><updated>2011-04-05T09:56:22.988+02:00</updated><title type='text'>16ème Dojo: Puissance4 en java randori</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Prochain dojo mardi 26-04-2011 à 19h&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Participants:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Jérome D.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Guillaume B.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Olivier M.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Jean H.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Philippe A.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Michael G.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Thomas S.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Gregory D.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Retrospective&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;parfois le design brutal foncitonne mieux que le design reflechi&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;Jean voulait montrer que le design a base de tableau n'est pas le meilleur, but fail&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Sujets&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul style="text-align: left;"&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;connect4 java randori (sujet choisi)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;connect4 python krata&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;mastermind ruby randori&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;idée de sujet: trouver le vendredi 13 le plus proche d'une date révolue java randori&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;b&gt;Code&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;sur github:&amp;nbsp;&lt;a href="https://github.com/dojo-softeam/katas/tree/puissance4-20110329"&gt;https://github.com/dojo-softeam/katas/tree/puissance4-20110329&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Helvetica Neue', Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;script src="https://gist.github.com/902491.js?file=gistfile1.java"&gt;&lt;/script&gt;&lt;/p&gt;&lt;p&gt;&lt;script src="https://gist.github.com/902495.js?file=puissance4%20randori"&gt;&lt;/script&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5299367266514529361?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5299367266514529361/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/04/prochain-dojo-mardi-26-04-2011-19h.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5299367266514529361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5299367266514529361'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/04/prochain-dojo-mardi-26-04-2011-19h.html' title='16ème Dojo: Puissance4 en java randori'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8651393607822765129</id><published>2011-03-24T17:35:00.001+01:00</published><updated>2011-03-24T17:36:52.651+01:00</updated><title type='text'>Estimer la complexité d'une tâche avec le jeu du poker planning</title><content type='html'>Comment estimer la complexité d'une tâche? C'est la question à laquelle Jeff Sutherland à répondu lors d'une session "SCRUM master certification". Il propose d'utiliser le jeu du "poker planning": chaque développeur choisi une carte dans une série (0, 0.5, 1, 2, 3, 5, ,8, 13, 20 ...), les estimations sont ensuite dévoilées. Le développeur qui a l'estimation la plus forte et celui qui a l'estimation la plus faible exposent les raisons de leur choix. Une nouvelle estimation de la tache est réalisée par tous et on calcule la moyenne. Mais comment choisir une complexité ? L'astuce consiste à identifier une tache bien connue, comme par exemple un écran de recherche qui affiche une liste de résultats. On attribue arbitrairement à cette tâche "étalon" une complexité de 3. Il ne reste plus qu'à comparer la complexité relative d'une nouvelle tache avec l'étalon pour l'estimation.&lt;br /&gt;&lt;br /&gt;J'utilise cette technique dans le cadre de mon projet chez CACIB. L'adoption du poker planning s'est faite rapidement, mais par étape: on a d'abord testé le concept avec deux développeurs. Les estimations se sont vite mises à converger. Aurjoud'hui toute l'équipe s'y est mise et nos estimations ne nécessitent presque plus de "deuxième tour".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8651393607822765129?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8651393607822765129/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/03/estimer-la-complexite-dune-tache-avec.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8651393607822765129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8651393607822765129'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/03/estimer-la-complexite-dune-tache-avec.html' title='Estimer la complexité d&apos;une tâche avec le jeu du poker planning'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6987975913708467984</id><published>2011-03-22T13:58:00.000+01:00</published><updated>2011-03-22T13:58:28.074+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Barcamp'/><category scheme='http://www.blogger.com/atom/ns#' term='Communauté'/><category scheme='http://www.blogger.com/atom/ns#' term='KawaCampParis'/><title type='text'>KawaCampParis4</title><content type='html'>&lt;p&gt;C'est officiel, Softeam accueillera dans ses locaux la 4ème édition du KawaCampParis et fournira aux participants un buffet et des softs.Il faut s'inscrire sur &lt;a href="http://barcamp.org/KawaCampParis4"&gt;http://barcamp.org/KawaCampParis4&lt;/a&gt;. Pensez à indiquer vos centres d'intérêt!&lt;p&gt; &lt;h4&gt;KawaCamp kesako ?&lt;/h4&gt; &lt;p&gt;Un KawaCamp c'est une recontre/table-ronde informelle auto-organisée de personnes partageant un intéret commun pour l'informatique. Les participants indiquent les sujets principaux qui les interessent sur la page d'inscription ce qui vous permet d'avoir une petite idée des sujets qui pourront être abordés. Sur place, chacun sera invité a proposer ses sujets, les sujets ayant le plus de participants seront retenus pour l'une des salles de discussion. Si la discussion fini par vous fatiguer, vous êtes libres d'aller faire un tour dans les autres salles.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6987975913708467984?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6987975913708467984/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/03/kawacampparis4.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6987975913708467984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6987975913708467984'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/03/kawacampparis4.html' title='KawaCampParis4'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4641480351043031574</id><published>2011-03-17T01:20:00.003+01:00</published><updated>2011-03-24T16:51:11.465+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>15ème Dojo: Morpion en java (non TDD)</title><content type='html'>&lt;h2&gt;Prochain dojo, le mardi 29/03/2011 19h00&lt;/h2&gt;Participants: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Eric&lt;/li&gt;&lt;li&gt;Choucri&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;Steeve&lt;/li&gt;&lt;li&gt;Jerome&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; On a pas fini&lt;/li&gt;&lt;li&gt; Besoin mal défini =&gt; on a cherché a faire l'interface alors que le problème interessant c'était la detection de victoire&lt;/li&gt;&lt;li&gt; on a refusé des sujets qui n'étaient pas assez préparés.&lt;/li&gt;&lt;li&gt;java c'est galère pour les grilles&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Pas de TDD en java sur le kata TicTacToe(Morpion)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;krata Morpion en java&lt;/li&gt;&lt;li&gt;mastermind en ruby kata&lt;/li&gt;&lt;li&gt;krata puissance 4 python&lt;/li&gt;&lt;li&gt;huffman en java en kata&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;le commit github correspondant est là &lt;a href="https://github.com/dojo-softeam/katas/commit/90b9b231021e0dc16bf52849166b97d451d78b2d"&gt;https://github.com/dojo-softeam/katas/commit/90b9b231021e0dc16bf52849166b97d451d78b2d&lt;/a&gt;&lt;script src="https://gist.github.com/873611.js"&gt; &lt;/script&gt;vous pouvez cloner le code avec les commandes suivantes:&lt;script src="https://gist.github.com/839625.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4641480351043031574?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4641480351043031574/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/03/14eme-dojo-morpion-en-java-non-tdd.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4641480351043031574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4641480351043031574'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/03/14eme-dojo-morpion-en-java-non-tdd.html' title='15ème Dojo: Morpion en java (non TDD)'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4315387915683539377</id><published>2011-02-23T00:07:00.000+01:00</published><updated>2011-02-23T00:07:26.728+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='randori'/><category scheme='http://www.blogger.com/atom/ns#' term='puissance4'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>14ème Dojo: Randori puissance 4 en java</title><content type='html'>&lt;h2&gt;Prochain dojo, le mardi 08/03/2011 19h00&lt;/h2&gt;Participants: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Jérome&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;Steeve&lt;/li&gt;&lt;li&gt;Gregory&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; énoncé un peu trop flou et personne ne l'avait préparé&lt;/li&gt;&lt;li&gt; tests dont on ne connaissait pas le résultat attendu &lt;/li&gt;&lt;li&gt; Il faut un responsable du sujet qui arbitre les tests a faire en cas de probleme (si il ne sait pas il paye la tournée)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; RLE en ruby kata&lt;/li&gt;&lt;li&gt; RLE en ruby randori&lt;/li&gt;&lt;li&gt; Puissance 4 en python kata&lt;/li&gt;&lt;li&gt;&lt;b&gt;Puissance 4 en java randori&lt;/b&gt;&lt;/li&gt;&lt;li&gt; Mastermind en ruby kata&lt;/li&gt;&lt;/ul&gt;&lt;h4&gt;Sujets non retenus car non préparés&lt;/h4&gt;&lt;ul&gt;&lt;li&gt; Game oflife en javascript kata&lt;/li&gt;&lt;li&gt; Algorithm de compression de huffman en java&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;le commit github correspondant est là &lt;a href="https://github.com/jeantil/kata/commit/27b1ea48d32a6151322c7fc4f5c5f43389d96c91"&gt;https://github.com/jeantil/kata/commit/27b1ea48d32a6151322c7fc4f5c5f43389d96c91&lt;/a&gt;&lt;script src="https://gist.github.com/839622.js"&gt; &lt;/script&gt;vous pouvez cloner le code avec les commandes suivantes:&lt;script src="https://gist.github.com/839625.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4315387915683539377?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4315387915683539377/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/02/14eme-dojo-randori-puissance-4-en-java.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4315387915683539377'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4315387915683539377'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/02/14eme-dojo-randori-puissance-4-en-java.html' title='14ème Dojo: Randori puissance 4 en java'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4684661335540865541</id><published>2011-02-05T10:30:00.002+01:00</published><updated>2011-02-05T10:31:29.415+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='randori'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>13ème Dojo: Randori "Rare Order" en java</title><content type='html'>&lt;h2&gt;Prochain dojo, le 22/02/2011 19h00&lt;/h2&gt;Participants: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Jerome&lt;/li&gt;&lt;li&gt;Erwan&lt;/li&gt;&lt;li&gt;Thomas&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;Steeve&lt;/li&gt;&lt;li&gt;Olivier&lt;/li&gt;&lt;li&gt;Gregory&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; echec total : pas de code&lt;/li&gt;&lt;li&gt; SQL en javascript asynchrone =&gt; echec&lt;/li&gt;&lt;li&gt; Pas de framework de test unitaires =&gt; préparation trop longue&lt;/li&gt;&lt;li&gt;techno pre-alpha&lt;/li&gt;&lt;li&gt; revert sur kata mastermind en ruby en fin de dojo &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; Todo-list randori java&lt;/li&gt;&lt;li&gt; Mastermind randori java&lt;/li&gt;&lt;li&gt; RLE randori java&lt;/li&gt;&lt;li&gt; Algorithme de Huffmann en java kata&lt;/li&gt;&lt;li&gt;&lt;b&gt;Rare order en randori java&lt;/b&gt;&lt;/li&gt;&lt;li&gt; Rare order en randori ruby&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;"your program will take a set of strings that has been sorted according to a particular collating sequence and determine what that sequence is"(&lt;a href="http://uva.onlinejudge.org/external/2/200.html"&gt;source&lt;/a&gt;)&lt;script src="https://gist.github.com/812328.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4684661335540865541?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4684661335540865541/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/02/13eme-dojo-randori-rare-order-en-java.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4684661335540865541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4684661335540865541'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/02/13eme-dojo-randori-rare-order-en-java.html' title='13ème Dojo: Randori &quot;Rare Order&quot; en java'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6122577688096545029</id><published>2011-02-05T10:23:00.002+01:00</published><updated>2011-02-05T10:26:43.404+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql'/><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='websql'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>12ème Dojo: Kata hierarchical SQL en websql</title><content type='html'>&lt;h2&gt;Prochain dojo, le 03/02/2011 19h00&lt;/h2&gt;Participants: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Olivier&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;Steeve&lt;/li&gt;&lt;li&gt;François-xavier&lt;/li&gt;&lt;li&gt;Erwan&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;(la liste est incomplète/fausse, mettez un commentaire en dessous pour corriger, merci)&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; echec : on a pas défini ce qu'était la réussite&lt;/li&gt;&lt;li&gt; sans spec on ne peut pas réussir !&lt;/li&gt;&lt;li&gt; réussi bon nom, bon nom sans casse, sous chaine et superchaine&lt;li&gt; echec orthographe diff&lt;li&gt;&lt;li&gt; beaucoup de sujets c'était bien&lt;li&gt;&lt;li&gt; on a trop parlé quand c'était rouge&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; randori vendredi 13 en java (trouver le vendredi 13 précédant une date donnée)&lt;/li&gt;&lt;li&gt; randori mastermind ruby&lt;/li&gt;&lt;li&gt; randori rle en java &lt;/li&gt;&lt;li&gt; kata rle en ruby&lt;/li&gt;&lt;li&gt; interpreteur booleen en java en randori&lt;/li&gt;&lt;li&gt;&lt;b&gt; hierarchical SQL en websql en krata&lt;/b&gt;&lt;/li&gt;&lt;li&gt; boyds en js en kata&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;pas de code produit :(&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6122577688096545029?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6122577688096545029/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2011/02/13eme-dojo-kata-hierarchical-sql-en.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6122577688096545029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6122577688096545029'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2011/02/13eme-dojo-kata-hierarchical-sql-en.html' title='12ème Dojo: Kata hierarchical SQL en websql'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8278182324195198731</id><published>2010-12-18T09:34:00.002+01:00</published><updated>2011-02-05T10:23:53.064+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>11ème dojo : Kata Movie Finder</title><content type='html'>&lt;h2&gt;Prochain dojo, le 13/01/2011 19h00&lt;/h2&gt;Participants: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;François-xavier&lt;/li&gt;&lt;li&gt;Thomas&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;Steeve&lt;/li&gt;&lt;li&gt;Olivier&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Beaucoup de tests&lt;/li&gt;&lt;li&gt;On a pas fini&lt;/li&gt;&lt;li&gt;Test first implique chemins de pensée différents des chemins habituels&lt;/li&gt;&lt;li&gt;trop grand pas lors de la création de la fonction&lt;/li&gt;&lt;li&gt;Erreur : vouloir réduire ce trop grand pas sans préparation&lt;/li&gt;&lt;li&gt;Tdd != ne pas réfléchir, mais réfléchir différemment.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Kata vendredi 13 en java&lt;/li&gt;&lt;li&gt;Kata RLE en java &lt;/li&gt;&lt;li&gt;Kata Movie Finder en java&lt;/li&gt;&lt;li&gt;Randori Vendredi 13 en java&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;Le projet eclipse avec le code est sur github ici : &lt;a href="https://github.com/jeantil/kata/tree/movie_finder"&gt;https://github.com/jeantil/kata/tree/movie_finder&lt;/a&gt; et le code tout seul ci-dessous&lt;br /&gt;&lt;script src="https://gist.github.com/746311.js"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8278182324195198731?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8278182324195198731/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/12/12eme-dojo-kata-movie-finder.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8278182324195198731'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8278182324195198731'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/12/12eme-dojo-kata-movie-finder.html' title='11ème dojo : Kata Movie Finder'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-541706925127022244</id><published>2010-12-18T09:13:00.003+01:00</published><updated>2010-12-18T09:28:33.285+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='agilité'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>TechChat: Agilité</title><content type='html'>&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Petit&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #ffff88; background-image: initial; background-origin: initial; color: #222222;"&gt;compte&lt;/span&gt;&amp;nbsp;&lt;span class="il" style="background-attachment: initial; background-clip: initial; background-color: #ffff88; background-image: initial; background-origin: initial; color: #222222;"&gt;rendu&lt;/span&gt;&amp;nbsp;de la discussion que nous avons eue lors&amp;nbsp;du techchat agilité.&lt;br /&gt;&lt;br /&gt;Dans l'invitation il y avait une proposition de sujet :&lt;br /&gt;Discussion ouverte autour des projets et méthodes agiles. Le programme&amp;nbsp;ne sera pas fixe&lt;br /&gt;Retour sur la conférence Agile Tour 2010&lt;br /&gt;Discussions autour de la mise en place des pratiques agiles sur les projets&lt;br /&gt;Braistorm sur les sujets qui freinent la mise en place de l'agile.&lt;br /&gt;&lt;br /&gt;En pratique nous n'avons pas vraiment dépassé le premier point et&amp;nbsp;c'est très bien, ça prouve qu'il y a de quoi discuter et je&amp;nbsp;n'hésiterai pas à re-proposer le sujet.&lt;br /&gt;&lt;br /&gt;La discussion a commencé avec la question:&lt;br /&gt;C'est quoi l'agile ?&lt;br /&gt;Nous avons essayé de trouver une réponse après avoir restreint la&amp;nbsp;question au sujet du développement informatique ( gestion de projet&amp;nbsp;et de développement logiciel):&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;blockquote&gt;Être capable de gérer rapidement les changements dans les besoins&amp;nbsp;utilisateurs, sans sacrifier la qualité du code et sans faire exploser&amp;nbsp;le coût du développement.&lt;/blockquote&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;Cette réponse elle-même a mené a une discussion sur les bonnes&amp;nbsp;pratiques qui permettent à un projet "agile" de le rester et de ne pas&amp;nbsp;se retrouver paralysé par des problématiques techniques.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Plusieurs&amp;nbsp;pratiques/prérequis ont été mentionnées :&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Implication égale de tous les participants (respect des principesagiles plus que des formalismes des méthodes)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Transparence sur la gestion de capacité&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Nécessité d'une organisation adaptés (rôles réaffectés,responsabilisation des développeurs, processus adaptés, comment&amp;nbsp;s'intégrer avec CMMI,...)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Automatisation des tests&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;Mise en place de l'intégration continue et de la capacité de livrer en&amp;nbsp;permanence&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="border-collapse: collapse; font-family: arial, sans-serif; font-size: 13px;"&gt;&lt;br /&gt;Après ces discussions le temps étant écoulé, nous avons échangé en&amp;nbsp;mangeant autour d'exemples plus concret en petits groupes.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-541706925127022244?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/541706925127022244/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/12/techchat-agilite.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/541706925127022244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/541706925127022244'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/12/techchat-agilite.html' title='TechChat: Agilité'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5590068630359518224</id><published>2010-12-01T23:14:00.001+01:00</published><updated>2010-12-01T23:17:48.429+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='rle'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>10ème dojo: Kata RLE en java</title><content type='html'>&lt;h2&gt;Prochain dojo, le 16/12/2010 19h00 (à confirmer)&lt;/h2&gt;Participants: &lt;ul&gt;&lt;li&gt;Thomas&lt;/li&gt;&lt;li&gt;Olivier&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;François-xavier&lt;/li&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Thomas (S.)&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;li&gt;Erwan&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt; on a pas fini mais des boid qui se déplacent en diagonale&lt;/li&gt;&lt;li&gt;On a perdu beaucoup de temps sur autre chose que les 3 règles des boids =&gt;prévoir un scaffold ?&lt;/li&gt;&lt;li&gt;salle pas bien (video proj, lumière etc)&lt;/li&gt;&lt;li&gt;beaucoup de questions sur javascript et le prototypage pas bcp de réponses&lt;/li&gt;&lt;li&gt;4 nouveaux participants=&gt;quand il y a suffisament de nouveaux il faut des sujets plus faciles (plutot orienté objet que fonctionnel ou prototypé)&lt;/li&gt;&lt;li&gt;manquait un framework de test unitaire plus puissant : AssertTrue ne suffit pas pour avancer rapidement.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Randori mastermind en java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Kata RLE en java (a pile ou face)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Randori RLE en java &lt;/li&gt;&lt;li&gt;Randori BOIDS la suite!&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;&lt;p&gt;Le projet eclipse avec le code est sur github ici : &lt;a href="https://github.com/jeantil/kata/tree/rle-dojo-20101125"&gt;https://github.com/jeantil/kata/tree/rle-dojo-20101125&lt;/a&gt; et le code tout seul ci-dessous&lt;/p&gt;&lt;script src="https://gist.github.com/724327.js"&gt; &lt;/script&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5590068630359518224?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5590068630359518224/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/12/10eme-dojo-kata-rle-en-java.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5590068630359518224'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5590068630359518224'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/12/10eme-dojo-kata-rle-en-java.html' title='10ème dojo: Kata RLE en java'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-3459810181264251259</id><published>2010-11-03T08:42:00.000+01:00</published><updated>2010-11-03T08:42:24.016+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dates'/><category scheme='http://www.blogger.com/atom/ns#' term='techchats'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='annonce'/><title type='text'>Prochains évènements</title><content type='html'>&lt;p&gt;Une petite annonce pour donner les dates des prochains évènements: &lt;/p&gt;&lt;ul&gt;&lt;li&gt; Le &lt;b&gt;10ème&lt;/b&gt; Dojo aura lieu le 25/11 à 19h00 comme d'habitude.Venez nombreux pour célébrer cette 10ème édition! &lt;/li&gt;&lt;li&gt; Les prochains Technical Chats se tiendront le 30/11, réservez votre date. Il y aura bientôt un post pour annoncer les sujets.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A bientôt !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-3459810181264251259?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/3459810181264251259/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/11/prochains-evenements.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3459810181264251259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3459810181264251259'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/11/prochains-evenements.html' title='Prochains évènements'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-1245934079974692096</id><published>2010-10-27T21:44:00.001+02:00</published><updated>2010-10-27T23:25:55.614+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='kata'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>9eme Dojo : Kata Boids en javascript</title><content type='html'>étaient présents à cette séance:  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Sebastien&lt;/li&gt;&lt;li&gt;Thomas&lt;/li&gt;&lt;li&gt;Choucri&lt;/li&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Fx&lt;/li&gt;&lt;li&gt;Vincent&lt;/li&gt;&lt;li&gt;Mickael&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Rétrospective &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Giftr en rails&lt;/li&gt;&lt;li&gt;On a cherché le distinct en rails&lt;/li&gt;&lt;li&gt;On a réussi la premiere partie, mais on n'a pas réussi à écrire le test avec du fonctionnel&lt;/li&gt;&lt;li&gt;Ecrire des TU c'est dur&lt;/li&gt;&lt;li&gt;On s'est lancé dans un pas tro pgrand, et en voulant revenir sur un pas plus petit on s'est perdu&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Randori Real Length Encoding en java&lt;/li&gt;&lt;li&gt;Kata RLE en ruby&lt;/li&gt;&lt;li&gt;Randori mastermind en java&lt;/li&gt;&lt;li&gt;Kata Boids en javascritp&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le Code&lt;/h3&gt;&lt;script src="http://gist.github.com/649748.js?file=kataboids.html"&gt;&lt;/script&gt;&lt;noscript&gt;Lecteur RSS &lt;a href="http://technicalchats.blogspot.com/2010/10/9eme-dojo-kata-boids-en-javascript.html"&gt;cliquez pour voir le code &lt;/a&gt;&lt;/noscript&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-1245934079974692096?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/1245934079974692096/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/10/9eme-dojo-kata-boids-en-javascript.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1245934079974692096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1245934079974692096'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/10/9eme-dojo-kata-boids-en-javascript.html' title='9eme Dojo : Kata Boids en javascript'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6936689936965626805</id><published>2010-10-21T21:32:00.000+02:00</published><updated>2010-10-21T21:32:42.627+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='rails3'/><category scheme='http://www.blogger.com/atom/ns#' term='kata'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='&quot;pet project&quot;'/><title type='text'>8ème Dojo : Kata "Pet Project Giftr" (et prochain dojo)</title><content type='html'>&lt;h2&gt;Prochain dojo, le 27/10/2010 19h00&lt;/h2&gt;Participants: &lt;ul&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Fx&lt;/li&gt;&lt;li&gt;Olivier&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Retrospective&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Dernier dojo trop loin, dur de se souvenir&lt;/li&gt;&lt;li&gt;Les tests de recette passaient&lt;/li&gt;&lt;li&gt;echec de la tentative de refactoring à la fin du kata&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Mastermind en java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Giftr en ruby&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Game of life en Javascript&lt;/li&gt;&lt;li&gt;fourmi de langton en Javascript&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le code&lt;/h3&gt;&lt;p&gt;Une fois n'est pas coutume, le code n'est pas directement disponible sur le post. Le code faisant partie d'un "pet project" il est stocké sur github.Le code est disponible dans son contexte sous la forme &lt;a href="http://github.com/jeantil/giftr/commit/6ff40bb4f27a3c446c3bd301bb24a43182f4430f"&gt;d'un commit github&lt;/a&gt; &lt;/p&gt;&lt;p&gt;Hors contexte :&lt;script src="http://gist.github.com/639144.js"&gt; &lt;/script&gt;&lt;/p&gt;&lt;p&gt;Il manque le début de test unitaire pour l'ajout de fonctionnalité, que j'ai perdu lors d'une manip malencontreuse...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6936689936965626805?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6936689936965626805/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/10/8eme-dojo-kata-pet-project-giftr-et.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6936689936965626805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6936689936965626805'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/10/8eme-dojo-kata-pet-project-giftr-et.html' title='8ème Dojo : Kata &quot;Pet Project Giftr&quot; (et prochain dojo)'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7142387968000443705</id><published>2010-09-30T22:15:00.001+02:00</published><updated>2010-09-30T22:15:33.967+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='mastermind'/><category scheme='http://www.blogger.com/atom/ns#' term='kata'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='ioke'/><title type='text'>7ème Dojo :  Kata Mastermind en Ioke</title><content type='html'>[Ce message aurait du être publié il y a bien longtemps vers le 30 juin, toutes nos excuses]étaient présents à cette séance: &lt;ul&gt;&lt;li&gt;Antoine&lt;/li&gt;&lt;li&gt;Fx &lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Rétrospective &lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://technicalchats.blogspot.com/2010/06/6eme-dojo-randori-java.html"&gt;Précédent dojo randori en java mastermind&lt;/a&gt;, les tests de recette ne passent pas&lt;/li&gt;&lt;li&gt;Problemes d'expressivité du code (relecture difficile, les gens réécrivent)&lt;/li&gt;&lt;li&gt;Super ambiance : tout le monde a participé tout le monde a appris&lt;/li&gt;&lt;li&gt;Choix du Array =&gt; erreur plutot partir sur une liste ?&lt;/li&gt;&lt;li&gt;Le copilote devient le codeur (essayer l'autre sens ?) &lt;/li&gt;&lt;li&gt;dans l'autre sens : plus proche pair programming ?&lt;/li&gt;&lt;li&gt;là: le co pilote est moins impliqué car plus spectateur. &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;kata mastermind ioke&lt;/b&gt;&lt;/li&gt;&lt;li&gt;randori mastermind en java &lt;/li&gt;&lt;li&gt;randori mastermind en ruby &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Le Code&lt;/h3&gt;&lt;script src="http://gist.github.com/605224.js?file=gistfile1.io"&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7142387968000443705?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7142387968000443705/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/09/7eme-dojo-kata-mastermind-en-ioke.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7142387968000443705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7142387968000443705'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/09/7eme-dojo-kata-mastermind-en-ioke.html' title='7ème Dojo :  Kata Mastermind en Ioke'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5544626021932217326</id><published>2010-09-09T18:12:00.000+02:00</published><updated>2010-09-30T22:08:02.394+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>La rentrée des Dojos !!</title><content type='html'>&lt;p&gt;Nouveau Dojo Test Driven Development le 22 septembre, vous êtes les bienvenus, merci de vous rajouter sur l'évènement google calendar ci-contre !  &lt;a target="_blank" href="https://www.google.com/calendar/event?action=TEMPLATE&amp;tmeid=XzZvb2plaDFoNjExajZjcGc2a28zOGRobDhjc2thYzIzNmNvazhkaGo2cDM0NGMxbTZ0MTMwYzFnNjBvMzBjMWc2MG8zMGMxZzYwbzMwYzFnNjBvMzBjMWc2MG8zMGMxZzYwbzMwYzAgamVhbi5oZWxvdUBt&amp;tmsrc=jean.helou%40gmail.com"&gt;&lt;img border="0" src="http://www.google.com/calendar/images/ext/gc_button1_en.gif"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;Au cour de la séance, nous allons créer un programme depuis rien en commençant par écrire des tests unitaires puis en les faisant passer les uns après les autres. Le but est de créer un programme complet en 1h30.&lt;/p&gt;&lt;p&gt;Le domaine fonctionnel est libre et vous êtes encouragés à proposer votre propre sujet. Je vous invite à parcourir les archives du blog pour y consulter les sujets précédement proposés.&lt;/p&gt;&lt;p&gt;En espérant vous voir nombreux, A bientôt ! &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5544626021932217326?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5544626021932217326/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/09/la-rentree-des-dojos.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5544626021932217326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5544626021932217326'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/09/la-rentree-des-dojos.html' title='La rentrée des Dojos !!'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7914603174893143827</id><published>2010-06-30T00:49:00.001+02:00</published><updated>2010-09-30T22:08:02.394+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Rappel dojo: le 30/06 au soir</title><content type='html'>Tout est dans le titre :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7914603174893143827?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7914603174893143827/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/06/rappel-dojo-le-3006-au-soir.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7914603174893143827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7914603174893143827'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/06/rappel-dojo-le-3006-au-soir.html' title='Rappel dojo: le 30/06 au soir'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-3611040674585361794</id><published>2010-06-28T08:29:00.001+02:00</published><updated>2010-06-28T08:30:28.009+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='universitefinance'/><title type='text'>Université Finance : Options &amp; certificats</title><content type='html'>Ludovic est venu le 233 juin, animer une université finance autour des produits options et certificats. Dans ses propres mots: &lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;"Options et certificats: deux produits dérivés qu'il est nécessaire d'assimiler pour être à l'aise avec les personnes du front et du middle office. Cette présentation est une initiation pragmatique, qui sert de base pour s'initier ensuite facilement aux autres types d'instruments financiers, notamment les structurés."&lt;/blockquote&gt;&lt;br /&gt;Il nous a également communiqué sa présentation que voici : &lt;a href="http://docs.google.com/fileview?id=1jlcQ0HuMSA8gxESZdIyEwOuhkh5_SoJocA9jbHPtLRAgGvuby6IH86rPSbB9&amp;hl=en&amp;authkey=CPe8oZ8L"&gt;produits option&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe width=100% height=560px frameborder=0 src=http://docs.google.com/gview?a=v&amp;pid=explorer&amp;chrome=false&amp;api=true&amp;embedded=true&amp;srcid=1jlcQ0HuMSA8gxESZdIyEwOuhkh5_SoJocA9jbHPtLRAgGvuby6IH86rPSbB9&amp;authkey=CPe8oZ8L&amp;hl=en&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-3611040674585361794?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/3611040674585361794/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/06/universite-finance-options-certificats.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3611040674585361794'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3611040674585361794'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/06/universite-finance-options-certificats.html' title='Université Finance : Options &amp; certificats'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-1621663448494073362</id><published>2010-06-10T08:02:00.001+02:00</published><updated>2010-09-30T22:08:02.395+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dates'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='annonce'/><title type='text'>Dojo le 30/06</title><content type='html'>La 7ème édition du Dojo aura lieu le mercredi 30/06, rendez-vous à 19h !&lt;br /&gt;&lt;br /&gt;Accessoirement, les techchats recrutent si vous avez des idées de thème n'hésitez pas à contacter delphine ou moi.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-1621663448494073362?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/1621663448494073362/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/06/dojo-le-3006.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1621663448494073362'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1621663448494073362'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/06/dojo-le-3006.html' title='Dojo le 30/06'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7997805681637295645</id><published>2010-06-03T08:04:00.003+02:00</published><updated>2011-02-24T19:02:30.922+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>6ème Dojo : Randori java</title><content type='html'>&lt;h3&gt;Prochaine séance le mercredi 30 juin, à vos agendas ...&lt;/h3&gt;Étaient présents à cette séance:&lt;ul&gt;&lt;li&gt;François Xavier&lt;/li&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Olivier&lt;/li&gt;&lt;li&gt;Eric&lt;/li&gt;&lt;li&gt;Choucri&lt;/li&gt;&lt;li&gt;Jean&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Rétrospective du &lt;a href="http://technicalchats.blogspot.com/2010/05/5eme-dojo-tdd-kata-mastermind-en-ioke.html"&gt;précédent dojo&lt;/a&gt;&lt;/h3&gt;le sujet était un "Mastermind"  Kata en Ioke&lt;ul&gt;&lt;li&gt;le test de recette n'est pas passé, mais presque :)&lt;/li&gt;&lt;li&gt;Découverte du ioke =&gt; langage concis&lt;/li&gt;&lt;li&gt;On a fait les bons tests&lt;/li&gt;&lt;li&gt;Une étape trop 'magique'&lt;/li&gt;&lt;li&gt;On a regardé la doc de ioke mais pas trop &lt;/li&gt;&lt;li&gt;Côté didactique avec une explication du langage&lt;/li&gt;&lt;li&gt;Ioke c'est lent (temps de turnaround sur les tests assez important)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets proposés&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Mastermind randori en java&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Kata mastermind en Ioke&lt;/li&gt;&lt;li&gt;Game of life Kata en Javascript&lt;/li&gt;&lt;li&gt;Fourmi de langton en java randori&lt;/li&gt;&lt;/ol&gt;Mastermind fût donc le sujet sélectionné pour cette séance de randori en Java.&lt;script src="https://gist.github.com/842569.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7997805681637295645?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7997805681637295645/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/06/6eme-dojo-randori-java.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7997805681637295645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7997805681637295645'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/06/6eme-dojo-randori-java.html' title='6ème Dojo : Randori java'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5030674683075929265</id><published>2010-06-02T09:57:00.001+02:00</published><updated>2010-09-30T22:08:02.396+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>6ème Dojo !</title><content type='html'>Petit rappel, le 6ème Dojo, c'est ce soir 19h.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5030674683075929265?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5030674683075929265/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/06/6eme-dojo.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5030674683075929265'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5030674683075929265'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/06/6eme-dojo.html' title='6ème Dojo !'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-2030695781908303600</id><published>2010-05-17T19:25:00.003+02:00</published><updated>2011-02-24T19:08:41.889+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>5ème Dojo TDD : Kata Mastermind en Ioke</title><content type='html'>&lt;h3&gt;Prochaine séance le mercredi 02 juin, à vos agendas ...&lt;/h3&gt;Étaient présents à cette séance:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;François Xavier&lt;/li&gt;&lt;li&gt;Philippe&lt;/li&gt;&lt;li&gt;Yann&lt;/li&gt;&lt;li&gt;Jean &lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Rétrospective du &lt;a href="http://technicalchats.blogspot.com/2010/04/coding-dojo-mastermind.html"&gt;précédent dojo&lt;/a&gt;&lt;/h3&gt;le sujet était un "Mastermind"  Kata ruby&lt;ul&gt;&lt;li&gt;le test de recette n'est pas passé, mais presque :)&lt;/li&gt;&lt;li&gt;beaucoup de commentaires au début et des très petits pas (trop petits ?)&lt;/li&gt;&lt;li&gt;trop de temps passé sur des pas simples&lt;/li&gt;&lt;li&gt;Bonne communication: écoute des commentaires de la salle, et respect des commentaires sur barre verte(mais quelques interruptions)&lt;/li&gt;&lt;li&gt;participants gagnent en confort par rapport au dojo&lt;/li&gt;&lt;li&gt;question soulevée : peut-on avoir plusieurs tests de recette pour couvrir un domaine ?&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets proposés&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;Kata Timezone en java&lt;/li&gt;&lt;li&gt;&lt;b&gt;Katamastermind en Ioke&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Randori rotation d'un tétromino en javascript&lt;/li&gt;&lt;li&gt;Randori mastermind en ruby&lt;/li&gt;&lt;/ol&gt;Mastermind fût donc le sujet sélectionné pour cette séance avec le langage expérimental &lt;a href="http://ioke.org/"&gt;Ioke&lt;/a&gt;. L'auteur le décrit comme un langage dynamique, orienté prototype et conçu pour être exécuté dans une vm (java ou clr). Il hérite de ruby, de lisp, de smalltalk et de IO. Pour développer nous utilisons  la suite de test unitaire "ispec" utilisée par le créateur du langage pour écrire le langage.&lt;script src="https://gist.github.com/842574.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-2030695781908303600?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/2030695781908303600/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/05/5eme-dojo-tdd-kata-mastermind-en-ioke.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/2030695781908303600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/2030695781908303600'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/05/5eme-dojo-tdd-kata-mastermind-en-ioke.html' title='5ème Dojo TDD : Kata Mastermind en Ioke'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6102470347517524005</id><published>2010-04-07T07:54:00.006+02:00</published><updated>2011-02-24T19:12:30.635+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Coding Dojo: MasterMind</title><content type='html'>&lt;h3&gt;Prochaine séance le mardi 04 mai !&lt;/h3&gt;Étaient présents à cette séance:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thomas Schwender&lt;/li&gt;&lt;li&gt;Philippe Antoine&lt;/li&gt;&lt;li&gt;François Xavier Leloup&lt;/li&gt;&lt;li&gt;Jean Helou&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Rétrospective du &lt;a href="http://technicalchats.blogspot.com/2010/02/coding-dojo-kata-game-of-life.html"&gt;précédent dojo&lt;/a&gt;&lt;/h3&gt;le sujet était un "Game of Life" (GoL) Krata javascript (processing, qunit)&lt;ul&gt;&lt;li&gt;le test de recette n'est pas passé, mais presque&lt;/li&gt;&lt;li&gt;test de recette pas auto (visuel)&lt;/li&gt;&lt;li&gt;triché pour calculer les voisins&lt;/li&gt;&lt;li&gt;output visuel:sympa, il faudrait qu'il soit disconnect du code&lt;/li&gt;&lt;li&gt;la taille des steps etaient ok&lt;/li&gt;&lt;li&gt;il y a eu des moments où il fallait ralentir&lt;/li&gt;&lt;li&gt;le ping pong entre les participant était sympa, constructif&lt;/li&gt;&lt;li&gt;kata trop gros ? non&lt;/li&gt;&lt;li&gt;pourquoi ne sommes nous pas partis à partir d'une grille ? -&gt; a tester&lt;/li&gt;&lt;li&gt;pour un futur kata&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Sujets proposés&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;Krata mastermind en ruby -&gt; selectionne&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Randori Gol javascript (avec la grille!)&lt;/li&gt;&lt;li&gt;Randori mastermind ruby&lt;/li&gt;&lt;li&gt;Krata Tetris en javascript&lt;/li&gt;&lt;/ol&gt;Mastermind fût donc le sujet sélectionné pour cette séance. Une version très simple en pur ruby testée avec shoulda.&lt;script src="https://gist.github.com/842583.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6102470347517524005?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6102470347517524005/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/04/coding-dojo-mastermind.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6102470347517524005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6102470347517524005'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/04/coding-dojo-mastermind.html' title='Coding Dojo: MasterMind'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8068394315896112047</id><published>2010-03-25T15:35:00.012+01:00</published><updated>2010-03-25T15:59:18.338+01:00</updated><title type='text'>Au programme des Techchats du 13/04/2010 :</title><content type='html'>&lt;div align="justify"&gt;Comme promis, + de précisions sur les 2 thèmes abordés lors des prochains Techchats :&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#ff6600;"&gt;HTML 5 &amp;amp; ses APIs&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Nouveautés et Démos !&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Côté navigateurs&lt;/strong&gt; : Firefox (vidéo, audio, typographie, historique, 3D, xhr), Chrome (canvas, offline, webworkers), IE (Drag'n drop, SVG), Opera (Validation des formulaires), Safari (Web SQL Database, Geoloc, files) &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;2. Côté serveur : &lt;/strong&gt;Jetty (Real Time Web avec webworkers) Jaxers (javascript côté serveur)&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;3. Html-next :&lt;/strong&gt; IndexedDB, Microdata, Devices (webcam, p2p...)&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;span style="color:#ff6600;"&gt;BPM&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;Le BPM, un vaste sujet, ce TechChats est justement là pour en discuter.&lt;br /&gt;&lt;br /&gt;Après avoir rappelé ses fondamentaux, nous pourrons échanger sur ce thème, depuis la compréhension des besoins, la modélisation, le référentiel de processus, son implémentation et l’importance grandissante d’une démarche dite d’ « approche par les processus » dans les systèmes d’information.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Et Vous ? Quel est votre avis sur ce thème ?&lt;br /&gt;&lt;/strong&gt;- Est-ce une nouvelle façon de voir les choses pour se rassurer ?&lt;br /&gt;- Une façon plus souple de concevoir l’évolution des systèmes d’information ?&lt;br /&gt;- Quel est l’impact dans la conception des applications ?&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;em&gt;&lt;span style="color:#ff6600;"&gt;Avis aux amateurs !!! venez nombreux !&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8068394315896112047?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8068394315896112047/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/03/au-programme-des-techchats-du-13042010.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8068394315896112047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8068394315896112047'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/03/au-programme-des-techchats-du-13042010.html' title='Au programme des Techchats du 13/04/2010 :'/><author><name>delphine</name><uri>http://www.blogger.com/profile/15136921095160613573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7986143453320171368</id><published>2010-03-19T15:52:00.004+01:00</published><updated>2010-03-19T16:04:34.242+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='modelio'/><title type='text'>News de MODELIO !</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Modelio 1.1.1&lt;/strong&gt; est sorti en Janvier 2010. Ses évolutions essentielles sont sa disponibilité Linux, et quelques nouveaux générateurs (BPEL, SQL).&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;div align="justify"&gt;&lt;strong&gt;Modelio 1.2&lt;/strong&gt; est en cours de préparation et normalement attendu pour juin 2010 ! Il apportera un support plus important du travail de groupe, notamment en intégrant la fonction de diff/merge entre modèles.&lt;br /&gt;Modelio Free edition intègrera les capacités MDA, dans le but de permettre de construire des modules Modelio open source, qui donc peuvent s’exécuter sous un environnement gratuit. Nous apporteront progressivement des modules open source, typiquement des modules supportant des profils standard d’extension UML (SysML, SoaML, MARTE, …)&lt;br /&gt;&lt;br /&gt;Modelio Free Edition est bien évidemment une gamme d’entrée dans l’offre Modelio. Elle supporte la modélisation complète de UML, et bientôt donc son support MDA (scripts Jython, définition de modules et profils, etc.). Il faut passer à la version Enterprise pour le travail de groupe, la génération de code, une génération de documentation paramétrable et riche, etc. Une base Modelio Free Edition peut être migrée Enterprise Edition. L’inverse n’est pas autorisé.&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p align="justify"&gt;Rendez - vous sur : &lt;a href="http://www.modeliosoft.com/"&gt;http://www.modeliosoft.com/&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7986143453320171368?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7986143453320171368/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/03/news-de-modelio.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7986143453320171368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7986143453320171368'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/03/news-de-modelio.html' title='News de MODELIO !'/><author><name>delphine</name><uri>http://www.blogger.com/profile/15136921095160613573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7169135102498527221</id><published>2010-03-17T16:00:00.004+01:00</published><updated>2010-03-17T16:37:19.702+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dates'/><category scheme='http://www.blogger.com/atom/ns#' term='techchats'/><title type='text'>Prochaine édition TechChats !!</title><content type='html'>La prochaine édition des TechChats aura lieu : le &lt;strong&gt;Mardi 13 Avril prochain&lt;/strong&gt;&lt;br /&gt;Vous pouvez d'ores et déjà bloquer cette date dans vos agendas !!&lt;br /&gt;2 thématiques au programme :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;BPM &lt;/li&gt;&lt;li&gt;les nouveautés HTML 5 &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;+ de news et de détails sur les sujets abordés très prochainement. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7169135102498527221?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7169135102498527221/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/03/prochaine-edition-techchats.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7169135102498527221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7169135102498527221'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/03/prochaine-edition-techchats.html' title='Prochaine édition TechChats !!'/><author><name>delphine</name><uri>http://www.blogger.com/profile/15136921095160613573</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7315482560684813596</id><published>2010-02-17T21:55:00.007+01:00</published><updated>2011-02-24T19:15:24.799+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='&quot;game of life&quot;'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='kata'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Coding Dojo: Kata Game of Life</title><content type='html'>&lt;p&gt;&lt;h3&gt;Le 30 mars a19h00&lt;/h3&gt;C'est la date choisie en séance pour le prochain dojo!&lt;/p&gt;&lt;p&gt;Étaient présents à cette séance : &lt;ul&gt;&lt;li&gt;Daniel Chaffiol&lt;/li&gt;&lt;li&gt;Rémi Masson&lt;/li&gt;&lt;li&gt;Philippe Antoine&lt;/li&gt;&lt;li&gt;François Xavier Leloup&lt;/li&gt;&lt;li&gt;Jean Helou&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;h3&gt;Rétrospective du &lt;a href="http://technicalchats.blogspot.com/2009/11/dojo-tdd-randori-des-casiers.html"&gt; précédent dojo&lt;/a&gt;&lt;/h3&gt;Le sujet était un randori des casiers en ruby. Rapides retours : &lt;ul&gt;&lt;li&gt;FAIL - le test de recette n'est pas passé&lt;/li&gt;&lt;li&gt;FAIL - le test de recette était faux (ce qui n'aide pas a le faire passer)&lt;/li&gt;&lt;li&gt;Le pitch des casiers est à revoir&lt;/li&gt;&lt;li&gt;Le randori a reçu un accueil partagé, certains aiment d'autres pas du tout. (Problème que pour que le randori avance, il faut que tout le monde connaisse le langage ?)&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;h3&gt;Sujets proposés&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Tour de hanoi en Ruby - Randori&lt;/li&gt;&lt;li&gt; Poser 8 reines sur les memes couleurs qui ne se mangent pas en Ruby - Randori&lt;/li&gt;&lt;li&gt;Mastermind en Ruby - Randori&lt;/li&gt;&lt;li&gt;Mastermind en Ruby -  Kata&lt;/li&gt;&lt;li&gt;Counting LoC (Lines of Code) en Ruby - Kata&lt;/li&gt;&lt;li&gt;&lt;b&gt;Game Of Life en Javascript - Kata&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Game of life fût donc l'heureux élu de cette séance. Sujet de Kata en javascript, basé sur le framework de test unitaire javascript QUnit de JQuery, et sur la bibliothèque Processing pour le rendu graphique.&lt;/p&gt;&lt;p&gt;Le sujet du jeu de la vie est de construire un automate cellulaire évoluant dans une grille de taille connue et pré-initialisée. A Chaque itération,l'automate applique les règles de vie et de mort suivantes : &lt;ul&gt;&lt;li&gt;Une cellule qui touche 0 ou 1 cellule vivante, meurt&lt;/li&gt;&lt;li&gt;Une cellule qui touche 4 autres cellules vivantes meurt&lt;/li&gt;&lt;li&gt;Une cellule mort entourée par 3 cellule vivante renaît.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;&lt;h3&gt;Le code du dojo&lt;/h3&gt;Le code de support pour le rendu graphique et les tests&lt;/br&gt;&lt;script src="https://gist.github.com/842590.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7315482560684813596?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7315482560684813596/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/02/coding-dojo-kata-game-of-life.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7315482560684813596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7315482560684813596'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/02/coding-dojo-kata-game-of-life.html' title='Coding Dojo: Kata Game of Life'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-3084835157048470662</id><published>2010-02-01T09:50:00.002+01:00</published><updated>2010-02-01T19:56:00.180+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='YouTube'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><category scheme='http://www.blogger.com/atom/ns#' term='comm'/><title type='text'>Le Coding Dojo expliqué en vidéo</title><content type='html'>Olivier Moquais nous a trouvé une petite video de presentation des coding dojos sur YouTube pour ceux qui de demandent si il faut venir :)&lt;br /&gt;&lt;br /&gt;ça de passe &lt;a href="http://www.youtube.com/watch?v=gav9fLVkZQc"&gt;ici&lt;/a&gt; ...&lt;br /&gt;&lt;br /&gt;Rendez-vous le 16/02 19:00 ...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-3084835157048470662?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/3084835157048470662/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/02/le-coding-dojo-explique-en-video.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3084835157048470662'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3084835157048470662'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/02/le-coding-dojo-explique-en-video.html' title='Le Coding Dojo expliqué en vidéo'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5911434953742285825</id><published>2010-01-29T07:50:00.002+01:00</published><updated>2010-01-29T08:05:03.019+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Coding Dojo</title><content type='html'>Les Dojos sont les premiers de retours avec une session le 16 février. Prévenez-nous si vous pensez venir.&lt;br /&gt;&lt;br /&gt;Pour rappel, le sujet sera choisi en séance sur propositions des participants.&lt;br /&gt;&lt;br /&gt;Les sujets précédents:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://technicalchats.blogspot.com/2009/11/dojo-tdd-randori-des-casiers.html"&gt;Les casiers&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://technicalchats.blogspot.com/2009/10/dojo-tdd.html"&gt;Le jeu de nimm&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div&gt;Et quelques idées de sujets (vous pouvez reprendre les sujets déjà traités et les améliorer, surtout qu'ils n'ont pas été terminés mais ils sont faisables): &lt;/div&gt;&lt;div&gt;&lt;ul&gt;&lt;li&gt;Mastermind&lt;/li&gt;&lt;li&gt;&lt;a href="http://thedailywtf.com/Articles/Avoiding-the-Splice.aspx"&gt;Des joints et des plinthes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Jeu de la vie&lt;/li&gt;&lt;li&gt;Tours de hanoi&lt;/li&gt;&lt;li&gt;...&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5911434953742285825?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5911434953742285825/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2010/01/coding-dojo.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5911434953742285825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5911434953742285825'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2010/01/coding-dojo.html' title='Coding Dojo'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6609488825309832763</id><published>2009-12-17T17:53:00.000+01:00</published><updated>2009-12-17T18:00:50.247+01:00</updated><title type='text'>Dojo annulé</title><content type='html'>En raison d'une très faible affluence, de la grève et de la&lt;br /&gt;Neige: il n'y aura pas de dojo ce soir. &lt;br /&gt;&lt;br /&gt;Retour en janvier!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6609488825309832763?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6609488825309832763/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/12/dojo-annule.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6609488825309832763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6609488825309832763'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/12/dojo-annule.html' title='Dojo annulé'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8345816452798579629</id><published>2009-11-20T23:24:00.005+01:00</published><updated>2009-11-20T23:37:15.017+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Scrum'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>Techchat : Scrum</title><content type='html'>&lt;p&gt;Les Techchats ont repris après une pause d'été qui s'est un peu prolongée. Rémi Masson nous a proposé de débattre autour de sa présentation de Scrum. &lt;br /&gt;&lt;br /&gt;Une session pleine d'interaction, avec des goodies!! ( le jeu de cartes à point pour le planning poker )&lt;/p&gt;&lt;p&gt;Sans plus tarder je vous propose le support: &lt;br /&gt;&lt;iframe src="http://docs.google.com/present/embed?id=dcfwdw68_72g7k24zc2" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Et le livre que nous a recommandé Rémi:&lt;br /&gt;&lt;a href="http://www.infoq.com/resource/news/2007/06/scrum-xp-book/en/resources/ScrumAndXpFromTheTrenches_French.pdf"&gt;Scrum And Xp From The Trenches (traduction française)&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;Dites nous ce que vous en avez pensé en commentaire ... :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8345816452798579629?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8345816452798579629/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/11/techchat-scrum.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8345816452798579629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8345816452798579629'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/11/techchat-scrum.html' title='Techchat : Scrum'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-7670551319733655784</id><published>2009-11-20T23:23:00.001+01:00</published><updated>2009-11-20T23:24:14.780+01:00</updated><title type='text'>Update universite finance</title><content type='html'>Pour ceux d'entre vous qui auraient eu des difficultés à accéder au support des universités finances, le problème devrait être résolu. Laissez un commentaire sous le message si ce n'est pas le cas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-7670551319733655784?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/7670551319733655784/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/11/update-universite-finance.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7670551319733655784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/7670551319733655784'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/11/update-universite-finance.html' title='Update universite finance'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-4288320803390333516</id><published>2009-11-20T23:04:00.008+01:00</published><updated>2011-02-24T19:31:26.294+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>2eme Dojo TDD : Randori des casiers</title><content type='html'>&lt;p&gt;Le deuxième Dojo TDD a eu lieu comme prévu le 12/11, étaient présents :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thomas Schwender&lt;/li&gt;&lt;li&gt;Philippe Antoine&lt;/li&gt;&lt;li&gt;Jean Helou&lt;/li&gt;&lt;li&gt;Daniel Chaffiol&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Dans la tradition du dojo, nous avons commencé par choisir la date du prochain Dojo : le &lt;b&gt;jeudi 17/12&lt;/b&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Rétrospective du précédent dojo : &lt;br /&gt;Kata Nimm en ruby : le test de recette n'est pas passé mais on a bidouillé le code pour faire passer à la fin (post time box)&lt;br /&gt;TDD : "Trop au pied de la lettre"&lt;br /&gt;Préparation : Krata ( préparation du kata insuffisante mea culpa JHE)&lt;br /&gt;Test de recette au début: pas préparé du coup surprise&lt;br /&gt;1er Dojo&lt;br /&gt;Nom des méthodes et des tests mals choisis&lt;br /&gt;Problème de perspective&lt;br /&gt;PB d'environnement : Netbeans + Autotest&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Sujets proposés pour cette séance (le sujet est choisi par vote a bulletin secret, en séance le langage est librement proposé):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;*********** Randori casiers en ruby&lt;/li&gt;&lt;li&gt;Krata Game Of Life&lt;/li&gt;&lt;li&gt;Randori Cluedo ruby&lt;/li&gt;&lt;li&gt;Randori partition javascript&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Le code du dojo : &lt;/p&gt;&lt;script src="https://gist.github.com/842611.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-4288320803390333516?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/4288320803390333516/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/11/dojo-tdd-randori-des-casiers.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4288320803390333516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/4288320803390333516'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/11/dojo-tdd-randori-des-casiers.html' title='2eme Dojo TDD : Randori des casiers'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5057120807886983528</id><published>2009-11-12T08:09:00.005+01:00</published><updated>2009-11-12T08:28:03.809+01:00</updated><title type='text'>Techat multitheading java</title><content type='html'>&lt;p&gt;Avec un peu de retard, voici le code du techchat sur le multithreading animé par françois qui présente des utilisations réelles des nouvelles fonctionnalités de gestion de la concurrence en java 5&lt;/p&gt;&lt;br /&gt;&lt;pre name="code" class="brush: java"&gt;package eqd.etg.square;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.TimeUnit;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.locks.Condition;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.locks.Lock;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.locks.ReentrantLock;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.external.rt.interfaces.RtObserver;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.external.rt.rfa.RtObject;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt; * Java 5 introduces classes that implement explicit locks. Explicit locks are useful in cases where you need to overcome &lt;br /&gt;&lt;br /&gt; * some of the shortcomings of built-in synchronization. In particular, they have the following features:&lt;br /&gt;&lt;br /&gt; * &lt;br /&gt;&lt;br /&gt; * * A thread can attempt to acquire a lock interruptibly;&lt;br /&gt;&lt;br /&gt; * * A thread can give a timeout value for attempting to acquire the lock;&lt;br /&gt;&lt;br /&gt; * * Read/write locks are supported- that is, locks that allow multiple concurrent readers if the lock is not locked for writing;&lt;br /&gt;&lt;br /&gt; * * The traditional wait/notify metaphor is extended to allow conditions;&lt;br /&gt;&lt;br /&gt; * * Support for fairness (if more than one thread is waiting for a lock, they acquire in first-in-first-out order when it becomes available);&lt;br /&gt;&lt;br /&gt; * * The ability to lock beyond the scope of a block: for example, one method can pass a lock object to another thread;&lt;br /&gt;&lt;br /&gt; * * Locks can be queried to find out, for example, if they currently have any threads waiting to acquire them.&lt;br /&gt;&lt;br /&gt; */ &lt;br /&gt;&lt;br /&gt;public class _1_WaitActivationDemo {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private _1_WaitActivationDemo() {&lt;br /&gt;&lt;br /&gt;  super();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private static boolean waitActivation(RtObject rtObject, long timeout) {&lt;br /&gt;&lt;br /&gt;  if (rtObject.isActive()) {&lt;br /&gt;&lt;br /&gt;   return true;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  final Lock lock = new ReentrantLock();&lt;br /&gt;&lt;br /&gt;  final Condition condition = lock.newCondition();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  RtObserver observer = new RtObserver() {&lt;br /&gt;&lt;br /&gt;   @Override public void rtObjectActivated(RtObject obj) {&lt;br /&gt;&lt;br /&gt;    lock.lock();&lt;br /&gt;&lt;br /&gt;    try {&lt;br /&gt;&lt;br /&gt;     condition.signalAll();&lt;br /&gt;&lt;br /&gt;    } finally {&lt;br /&gt;&lt;br /&gt;     lock.unlock();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   @Override public void rtObjectUpdated(RtObject obj) {&lt;br /&gt;&lt;br /&gt;    // nothing to do&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  rtObject.addObserver(observer);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  lock.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   return condition.await(timeout, TimeUnit.MILLISECONDS);&lt;br /&gt;&lt;br /&gt;  } catch (InterruptedException e) {&lt;br /&gt;&lt;br /&gt;   return false; // should not happen&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   lock.unlock();&lt;br /&gt;&lt;br /&gt;   rtObject.removeObserver(observer);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="brush: java"&gt;package eqd.etg.square;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.ArrayList;&lt;br /&gt;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;&lt;br /&gt;import java.util.HashSet;&lt;br /&gt;&lt;br /&gt;import java.util.List;&lt;br /&gt;&lt;br /&gt;import java.util.Set;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.locks.Lock;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.locks.ReadWriteLock;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.locks.ReentrantReadWriteLock;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import org.apache.commons.lang.Validate;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.Entity.NameScheme;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.tools.apache.Predicate;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.tools.collections.IntObjectHashMap;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/**&lt;br /&gt;&lt;br /&gt; * An abstract class that all services managing a certain type of {@link Entity} must implement.&lt;br /&gt;&lt;br /&gt; * &lt;br /&gt;&lt;br /&gt; * @param &amp;lt;D&gt; the type of the database object the {@link Entity} instances will be created from&lt;br /&gt;&lt;br /&gt; * @param &amp;lt;E&gt; the type of {@link Entity} this service will manage&lt;br /&gt;&lt;br /&gt; * &lt;br /&gt;&lt;br /&gt; * @author François L.&lt;br /&gt;&lt;br /&gt; */&lt;br /&gt;&lt;br /&gt;public abstract class _2_EntityManager&amp;lt;D,E extends Entity&gt; {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** The collection of managed entities. */&lt;br /&gt;&lt;br /&gt; private final IntObjectHashMap&amp;lt;E&gt; entities = new IntObjectHashMap&amp;lt;E&gt;();&lt;br /&gt;&lt;br /&gt; // the above collection is mostly static (loaded in bulk when needed), but needs protection agains some rare full or partial writes&lt;br /&gt;&lt;br /&gt; private final ReadWriteLock lock = new ReentrantReadWriteLock();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected _2_EntityManager() {&lt;br /&gt;&lt;br /&gt;  super();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** Loads all entities from DB. */&lt;br /&gt;&lt;br /&gt; protected abstract Collection&amp;lt;D&gt; findAll();&lt;br /&gt;&lt;br /&gt; /** Creates the entity based on it's DB object. */&lt;br /&gt;&lt;br /&gt; protected abstract E toEntity(D dbObject);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected E refreshOne(E entity, D dbObject) {&lt;br /&gt;&lt;br /&gt;  throw new UnsupportedOperationException("This manager does not support object refresh");&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected void reloaded() {&lt;br /&gt;&lt;br /&gt;  // nothing by default&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final List&amp;lt;E&gt; getAllInternal() {&lt;br /&gt;&lt;br /&gt;  Lock l = lock.readLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   return entities.values();&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final E getInternal(int id) {&lt;br /&gt;&lt;br /&gt;  Lock l = lock.readLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   return entities.get(id);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final void putInternal(int id, E entity) {&lt;br /&gt;&lt;br /&gt;  Lock l = lock.writeLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   entities.put(id, entity);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final Set&amp;lt;E&gt; getByIdsInternal(final Set&amp;lt;Integer&gt; ids) {&lt;br /&gt;&lt;br /&gt;  return collectObjects(new Predicate&amp;lt;E&gt;() {&lt;br /&gt;&lt;br /&gt;   @Override public boolean evaluate(E value) {&lt;br /&gt;&lt;br /&gt;    return ids.contains(value.getId());&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }, new HashSet&amp;lt;E&gt;(ids.size()));&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final E getByNameInternal(final String name, final NameScheme scheme) {&lt;br /&gt;&lt;br /&gt;  Validate.notNull(name, "the name can not be null");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  return collectObject(new Predicate&amp;lt;E&gt;() {&lt;br /&gt;&lt;br /&gt;   @Override public boolean evaluate(E value) {&lt;br /&gt;&lt;br /&gt;    return name.equals((scheme != null) ? value.getName(scheme) : value.getName());&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final void reloadInternal() {&lt;br /&gt;&lt;br /&gt;  Collection&amp;lt;D&gt; dbObjects = findAll();&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;  Lock l = lock.writeLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   entities.clear();&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   for (D dbObject : dbObjects) {&lt;br /&gt;&lt;br /&gt;    reloadOneInternal(dbObject);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;   entities.trimToSize();&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  reloaded();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final E reloadOneInternal(D dbObject) {&lt;br /&gt;&lt;br /&gt;  E domainObject = toEntity(dbObject);&lt;br /&gt;&lt;br /&gt;  putInternal(domainObject.getId(), domainObject);&lt;br /&gt;&lt;br /&gt;  return domainObject;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final E refreshOneInternal(D dbObject) {&lt;br /&gt;&lt;br /&gt;  E domainObject = toEntity(dbObject); // Note: creates a temporary object to get the id, not that great&lt;br /&gt;&lt;br /&gt;  domainObject = getInternal(domainObject.getId());&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;  if (domainObject == null) {&lt;br /&gt;&lt;br /&gt;   return reloadOneInternal(dbObject);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // will try refreshing the internals of this object instead a creating a new one&lt;br /&gt;&lt;br /&gt;  domainObject = refreshOne(domainObject, dbObject);&lt;br /&gt;&lt;br /&gt;  putInternal(domainObject.getId(), domainObject);&lt;br /&gt;&lt;br /&gt;  return domainObject;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final List&amp;lt;E&gt; refreshSomeInternal(Collection&amp;lt;D&gt; dbObjects) {&lt;br /&gt;&lt;br /&gt;  List&amp;lt;E&gt; refreshedObjects = new ArrayList&amp;lt;E&gt;(dbObjects.size());&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;  for (D dbObject : dbObjects) {&lt;br /&gt;&lt;br /&gt;   refreshedObjects.add(refreshOneInternal(dbObject));&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;  return refreshedObjects;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final E collectObject(Predicate&amp;lt;E&gt; predicate) {&lt;br /&gt;&lt;br /&gt;  Lock l = lock.readLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   return entities.findValue(predicate);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; protected final List&amp;lt;E&gt; collectObjects(Predicate&amp;lt;E&gt; predicate) {&lt;br /&gt;&lt;br /&gt;  Lock l = lock.readLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   return entities.collectValues(predicate);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; protected final &amp;lt;O extends E,C extends Collection&amp;lt;O&gt;&gt; C collectObjects(Predicate&amp;lt;E&gt; predicate, C collection) {&lt;br /&gt;&lt;br /&gt;  Lock l = lock.readLock();&lt;br /&gt;&lt;br /&gt;  l.lock();&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   return entities.collectValues(predicate, collection);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   l.unlock();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="brush: java"&gt;package eqd.etg.square;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Map;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.ConcurrentHashMap;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.database.DbManager;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class _3_TBSummaryDemo {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private static final Map&amp;lt;Integer,Double&gt; ytdPerfs = new ConcurrentHashMap&amp;lt;Integer,Double&gt;();&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; private static int selectedId = -1;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private _3_TBSummaryDemo() {&lt;br /&gt;&lt;br /&gt;  super();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** Called from the EDT, must not block. */&lt;br /&gt;&lt;br /&gt; private static void selectId(final int id) {&lt;br /&gt;&lt;br /&gt;  if (selectedId == id) {&lt;br /&gt;&lt;br /&gt;   return;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  selectedId = id;&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;  // Load the perf for this ID, and only once thanks to caching.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // Well, in case of multi-threading, it could be loaded more than once, but the user won't click&lt;br /&gt;&lt;br /&gt;  // fast enough anyway, and we are just interested in quick access: the ConcurrentHashMap is&lt;br /&gt;&lt;br /&gt;  // indeed fast to read, and tolerates additional writes&lt;br /&gt;&lt;br /&gt;  if (!ytdPerfs.containsKey(id)) {&lt;br /&gt;&lt;br /&gt;   new Thread() {&lt;br /&gt;&lt;br /&gt;    @Override public void run() {&lt;br /&gt;&lt;br /&gt;     DbManager.getLynxConnector().acquireThreadLocalConnection();&lt;br /&gt;&lt;br /&gt;     ytdPerfs.put(id, retrievalFromDB(id));&lt;br /&gt;&lt;br /&gt;     DbManager.getLynxConnector().releaseThreadLocalConnection();&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   }.start();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** Called from somewhere else, possibly other threads. */&lt;br /&gt;&lt;br /&gt; private static void display() {&lt;br /&gt;&lt;br /&gt;  Double wp = ytdPerfs.get(selectedId);&lt;br /&gt;&lt;br /&gt;  double perf = wp != null ? wp.doubleValue() : Double.NaN;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="brush: java"&gt;package eqd.etg.square;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Collection;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.database.DbHelper;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.database.DbManager;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class _4_DbThreadDemo {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private _4_DbThreadDemo() {&lt;br /&gt;&lt;br /&gt;  super();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private static void savePortfolioPositions(final int portfolioId, final Collection&amp;lt;DbHPosition&gt; toSave) {&lt;br /&gt;&lt;br /&gt;  DbHelper.executeThreadSafely(true, DbManager.getLynxConnector(), new Runnable() {&lt;br /&gt;&lt;br /&gt;   @Override public void run() {&lt;br /&gt;&lt;br /&gt;    DaoHPosition.deleteByDate(DateHelper.today(), portfolioId);&lt;br /&gt;&lt;br /&gt;    int successCount = DaoHPosition.bulkInsert(toSave);&lt;br /&gt;&lt;br /&gt;    addReportStatus(successCount, toSave.size() - successCount);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  });&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;===== code from DbHelper&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /**&lt;br /&gt;&lt;br /&gt;  * Executes the specified {@link Runnable} in a threaded environment where a threadlocal connection is acquired&lt;br /&gt;&lt;br /&gt;  * using {@link DbConnector#acquireThreadLocalConnection()} and that is optionally transactioned.&lt;br /&gt;&lt;br /&gt;  * &amp;lt;p&gt;&lt;br /&gt;&lt;br /&gt;  * &lt;b&gt;Warning: &lt;/b&gt;if the runnable throws an {@link Exception} or sets the {@link Thread#interrupted()} flag,&lt;br /&gt;&lt;br /&gt;  *        the transaction is rolled back if one has been asked.&lt;br /&gt;&lt;br /&gt;  *&lt;br /&gt;&lt;br /&gt;  * @param withTransaction whether or not to create a transaction for the execution&lt;br /&gt;&lt;br /&gt;  * @param connector the connector used to allocate the environment for running the Runnable in&lt;br /&gt;&lt;br /&gt;  * @param runnable the runnable to execute in a threaded environment&lt;br /&gt;&lt;br /&gt;  * @throws IllegalArgumentException if an argument is &amp;lt;code&gt;null&amp;lt;/code&gt;&lt;br /&gt;&lt;br /&gt;  */&lt;br /&gt;&lt;br /&gt; public static void executeThreadSafely(boolean withTransaction, DbConnector connector, Runnable runnable) {&lt;br /&gt;&lt;br /&gt;  Validate.notNull(connector, "the connector can not be null");&lt;br /&gt;&lt;br /&gt;  Validate.notNull(runnable, "the callable can not be null");&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // acquires the thread local connection and starts a transaction environment if applicable&lt;br /&gt;&lt;br /&gt;  connector.acquireThreadLocalConnection();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  if (withTransaction) {&lt;br /&gt;&lt;br /&gt;   connector.beginTran();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  boolean success = false;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   runnable.run();&lt;br /&gt;&lt;br /&gt;   success = true;&lt;br /&gt;&lt;br /&gt;  } catch (Exception re) {&lt;br /&gt;&lt;br /&gt;   // nothing: 'success' will not be set&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   // commits or rolls back and release the acquired resources&lt;br /&gt;&lt;br /&gt;   if (withTransaction) {&lt;br /&gt;&lt;br /&gt;    connector.endTran(success &amp;&amp; !Thread.currentThread().isInterrupted());&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   connector.releaseThreadLocalConnection();&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;==== Code from DbConnector&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** The thread local connection, used for transverse multi-threaded optimization. */&lt;br /&gt;&lt;br /&gt; private final ThreadLocal&amp;lt;Connection&gt; threadLocalConnection = new ThreadLocal&amp;lt;Connection&gt;();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt;&lt;br /&gt; public final Connection getThreadLocalConnection() {&lt;br /&gt;&lt;br /&gt;  if (threadLocalConnection.get() == null) {&lt;br /&gt;&lt;br /&gt;   throw new IllegalStateException("the local connection is not acquired yet");&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  threadLocalConnection.set(getConnectionFromPool()); // getConnectionFromPool() returns a collection from a commons-dbcp pool&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; @Override&lt;br /&gt;&lt;br /&gt; public final void releaseThreadLocalConnection() {&lt;br /&gt;&lt;br /&gt;  Connection connection = threadLocalConnection.get();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  if (connection == null) {&lt;br /&gt;&lt;br /&gt;   throw new IllegalStateException("the local connection is not acquired yet");&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // returns the connection to the pool&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   connection.close();&lt;br /&gt;&lt;br /&gt;  } catch (SQLException e) {&lt;br /&gt;&lt;br /&gt;   Logger.severe(e);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // clears the thread local values&lt;br /&gt;&lt;br /&gt;  threadLocalConnection.remove();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="brush: java"&gt;package eqd.etg.square;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.util.Arrays;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.Callable;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.ExecutionException;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.ExecutorService;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.Executors;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.Future;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.PriorityBlockingQueue;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.ThreadPoolExecutor;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.TimeUnit;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.TimeoutException;&lt;br /&gt;&lt;br /&gt;import java.util.concurrent.atomic.AtomicInteger;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.tools.logging.Logger;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public final class _5_DownloadDemo {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** Market Data Gateway requests executor. */&lt;br /&gt;&lt;br /&gt; private static final ExecutorService MDG_EXECUTOR = Executors.newCachedThreadPool();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** Maximum number of simultaneous connections. */&lt;br /&gt;&lt;br /&gt; private static final int THREAD_COUNT = 5;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** The timeout for the connections (in seconds). */&lt;br /&gt;&lt;br /&gt; private static final int TIMEOUT = 200;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private _5_DownloadDemo() {&lt;br /&gt;&lt;br /&gt;  super();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; // ==============================================================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private static void executorDemo() throws InterruptedException {&lt;br /&gt;&lt;br /&gt;  ExecutorService executor = new ThreadPoolExecutor(THREAD_COUNT, THREAD_COUNT, 0L, TimeUnit.MILLISECONDS,&lt;br /&gt;&lt;br /&gt;    new PriorityBlockingQueue&amp;lt;Runnable&gt;());&lt;br /&gt;&lt;br /&gt;  AtomicInteger processed = new AtomicInteger(0);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  // Queue all tasks, they will be executed THREAD_COUNT at a time&lt;br /&gt;&lt;br /&gt;  for (int instrumentId : Arrays.asList(1, 2, 3, 4)) {&lt;br /&gt;&lt;br /&gt;   executor.execute(new LoadTask(instrumentId, DownloadPriority.HIGH, processed));&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  executor.shutdown();&lt;br /&gt;&lt;br /&gt;  executor.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; // ==============================================================================&lt;br /&gt;&lt;br /&gt; private static void downloadData(int instrumentId) {&lt;br /&gt;&lt;br /&gt;  Callable&amp;lt;double[]&gt; downloadTask = new Callable&amp;lt;double[]&gt;() {&lt;br /&gt;&lt;br /&gt;   @Override public double[] call() throws Exception {&lt;br /&gt;&lt;br /&gt;    return MdgConnexion.getMarketDataStructure(instrumentId);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  };&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  Future&amp;lt;double[]&gt; futureResult = MDG_EXECUTOR.submit(downloadTask);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  try {&lt;br /&gt;&lt;br /&gt;   double[] doubles = futureResult.get(TIMEOUT, TimeUnit.SECONDS);  // Using a future makes timeouts easy&lt;br /&gt;&lt;br /&gt;   // parse result, save to db, etc&lt;br /&gt;&lt;br /&gt;  } catch (InterruptedException e) {&lt;br /&gt;&lt;br /&gt;   Thread.interrupted(); // clears the interrupted flag&lt;br /&gt;&lt;br /&gt;  } catch (ExecutionException e) {&lt;br /&gt;&lt;br /&gt;   Logger.severe("Execution error", e);&lt;br /&gt;&lt;br /&gt;  } catch (TimeoutException e) {&lt;br /&gt;&lt;br /&gt;   Logger.severe("Timeout for " + instrumentId);&lt;br /&gt;&lt;br /&gt;  } finally {&lt;br /&gt;&lt;br /&gt;   futureResult.cancel(true); // no harm to do it either it timed out or not&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private enum DownloadPriority {&lt;br /&gt;&lt;br /&gt;  CRITICAL, HIGH, LOW;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; /** Custom task used to order downloads by priority. */&lt;br /&gt;&lt;br /&gt; private static class LoadTask implements Runnable, Comparable&amp;lt;LoadTask&gt; {&lt;br /&gt;&lt;br /&gt;  private final int instrumentId;&lt;br /&gt;&lt;br /&gt;  private final DownloadPriority priority;&lt;br /&gt;&lt;br /&gt;  private final AtomicInteger processed;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public LoadTask(int instrumentId, DownloadPriority priority, AtomicInteger processed) {&lt;br /&gt;&lt;br /&gt;   super();&lt;br /&gt;&lt;br /&gt;   this.instrumentId = instrumentId;&lt;br /&gt;&lt;br /&gt;   this.priority = priority;&lt;br /&gt;&lt;br /&gt;   this.processed = processed;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public void run() {&lt;br /&gt;&lt;br /&gt;   try {&lt;br /&gt;&lt;br /&gt;    // Use an AtomicInteger to keep a global coherent count of executed tasks.&lt;br /&gt;&lt;br /&gt;    // If it was just an int, two ++ at the same time could give a wrong result.&lt;br /&gt;&lt;br /&gt;    // If it was a volatile int, the ++ would be correct, but two tasks could display the same count&lt;br /&gt;&lt;br /&gt;    Logger.info("Processing n° " + processed.incrementAndGet());&lt;br /&gt;&lt;br /&gt;    downloadData(instrumentId);&lt;br /&gt;&lt;br /&gt;   } catch (RuntimeException e) {&lt;br /&gt;&lt;br /&gt;    Logger.severe(new RuntimeException("Could not retrieve data for " + instrumentId, e));&lt;br /&gt;&lt;br /&gt;   } catch (Throwable t) {&lt;br /&gt;&lt;br /&gt;    Logger.severe(t);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  @Override&lt;br /&gt;&lt;br /&gt;  public boolean equals(Object o) {&lt;br /&gt;&lt;br /&gt;   if (o == this) {&lt;br /&gt;&lt;br /&gt;    return true;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   if (o == null || !o.getClass().equals(this.getClass())) {&lt;br /&gt;&lt;br /&gt;    return false;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   LoadTask other = (LoadTask) o;&lt;br /&gt;&lt;br /&gt;   return priority == other.priority &amp;&amp; instrumentId == other.instrumentId;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  public int compareTo(LoadTask other) {&lt;br /&gt;&lt;br /&gt;   if (priority != other.priority) {&lt;br /&gt;&lt;br /&gt;    return priority.compareTo(other.priority);&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   return instrumentId - other.instrumentId;&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;pre name="code" class="brush: java"&gt;package eqd.etg.square;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import java.awt.Component;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import javax.swing.JFrame;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.commons.tools.task.IndeterminatedTask;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.gui.progress.ProgressGlassPane;&lt;br /&gt;&lt;br /&gt;import eqd.etg.square.gui.util.WindowHelper;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;public class _6_ProgressGlassPaneDemo {&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; private static TradingBoardFrame tradingBoard;&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt; private _6_ProgressGlassPaneDemo() {&lt;br /&gt;&lt;br /&gt;  super();&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; // ==============================================================================&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; public static JFrame showTradingBoard(final Component parent) {&lt;br /&gt;&lt;br /&gt;  if (tradingBoard == null) {&lt;br /&gt;&lt;br /&gt;   tradingBoard = new TradingBoardFrame();&lt;br /&gt;&lt;br /&gt;   WindowHelper.show(tradingBoard, parent, false);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;   // ProgressGlassPane is a nice utility class of ours, doing job in the background like a SwingWorker, &lt;br /&gt;&lt;br /&gt;   // but also displaying progress in a glass pane over the frame.&lt;br /&gt;&lt;br /&gt;   new ProgressGlassPane(tradingBoard).start(new IndeterminatedTask("Loading data") {&lt;br /&gt;&lt;br /&gt;    @Override protected boolean work() {&lt;br /&gt;&lt;br /&gt;     // This is more subtle: we have several complex singleton mutable objects that need global protection&lt;br /&gt;&lt;br /&gt;     // against synchronization issues: we encapsulated all actions on these objects in a single manager, &lt;br /&gt;&lt;br /&gt;     // with all methods synchronized.&lt;br /&gt;&lt;br /&gt;     // When a custom action needed to be applied, we used this kind of closure to enforce the synchronization.&lt;br /&gt;&lt;br /&gt;     PositionTreeSupportManager.invokeAndWait(new Runnable() {&lt;br /&gt;&lt;br /&gt;      @Override public void run() {&lt;br /&gt;&lt;br /&gt;       tradingBoard.initialize();&lt;br /&gt;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;     });&lt;br /&gt;&lt;br /&gt;     return true;&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;   });&lt;br /&gt;&lt;br /&gt;  } else {&lt;br /&gt;&lt;br /&gt;   WindowHelper.showOrRaise(tradingBoard);&lt;br /&gt;&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  return tradingBoard;&lt;br /&gt;&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5057120807886983528?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5057120807886983528/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/11/techat-multitheading-java.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5057120807886983528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5057120807886983528'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/11/techat-multitheading-java.html' title='Techat multitheading java'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-9157975405588925997</id><published>2009-11-09T15:12:00.000+01:00</published><updated>2009-11-09T16:04:57.267+01:00</updated><title type='text'>Rappel, événements a venir</title><content type='html'>Pour rappel :&lt;br /&gt;Le 12/11 Dojo TDD (n'hésitez pas a venir avec vos sujets :) )&lt;br /&gt;Le 19/11 Techchat scrum &amp; scala&lt;br /&gt;&lt;br /&gt;Venez nombreux!&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-9157975405588925997?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/9157975405588925997/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/11/rappel-evenements-venir.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/9157975405588925997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/9157975405588925997'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/11/rappel-evenements-venir.html' title='Rappel, événements a venir'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5430455116940690464</id><published>2009-10-23T15:34:00.005+02:00</published><updated>2009-11-20T23:04:03.935+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='universitefinance'/><title type='text'>Université finances: Les produits de taux</title><content type='html'>Nous avons eu le droit hier soir à une présentation très interessante sur les produits de taux et le progiciel summit. &lt;br /&gt;&lt;br /&gt;Avec quelques rappels sur les principaux produits du marché, agrémentés de remarques sur les spécificités des produits de taux et les principaux indicateurs de ce marché.&lt;br /&gt;&lt;br /&gt;La discussion a fini par s'orienter vers des notions de processus et de méthode de gestion de projet dans un environnement front office avec une forte pression des utilisateurs, avant de dériver vers des considérations plus génériques d'architecture du SI d'une banque. &lt;br /&gt;&lt;br /&gt;Vous pouvez retrouver le support de la présentation d'Alexandre &lt;a HREF="http://docs.google.com/present/view?id=dcfwdw68_71hrtqxdgp"&gt;ici&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://docs.google.com/present/embed?id=dcfwdw68_71hrtqxdgp" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5430455116940690464?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5430455116940690464/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/10/universite-finances-les-produits-de.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5430455116940690464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5430455116940690464'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/10/universite-finances-les-produits-de.html' title='Université finances: Les produits de taux'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-1538469490918105188</id><published>2009-10-21T00:01:00.019+02:00</published><updated>2011-02-24T19:35:08.467+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dojo'/><title type='text'>Dojo TDD</title><content type='html'>&lt;p&gt;La première séance du Dojo TDD a eu lieu le 13/10 avec les participants suivants :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Thomas Schwender&lt;/li&gt;&lt;li&gt;Philippe Antoine&lt;/li&gt;&lt;li&gt;Jean Helou&lt;/li&gt;&lt;li&gt;François Leiber&lt;/li&gt;&lt;/ul&gt;Lors de cette séance il n'y a pas eu de rétrospective, remplacée par une présentation du concept du dojo. Pour rappel il s'agit de coder en TDD (test driven development) aussi "pur" que possible et de voir émerger le code en appliquant au maximum les bonnes pratiques TDD / XP (eXtrem Programming). la formule se décompose en katas où une personne seule fait l'exercice devant les autres, ou en randori, où chaque participant passe 5minutes chrono devant le clavier en poursuivant ce qu'on fait les autres. Je m'étendrais d'avantage sur les intérets de ces formules dans de futurs billets.&lt;/p&gt;&lt;p&gt;Nous avons aussi décidé de la date du prochain Dojo : il aura lieu le&lt;span style="font-weight: bold;font-size:130%;" &gt; 12/11&lt;/span&gt;, venez nombreux !&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Au programme du prochain dojo : discussion rétrospective et leçons apprises lors de ce dojo, choix du sujet et mise en application.&lt;/p&gt;&lt;p&gt;Les sujets proposés : (le premier est celui qui a été retenu )&lt;br /&gt;Sujets:&lt;ul&gt;&lt;li&gt; &lt;span style="font-weight: bold;"&gt;Jeu de Nimm kata ruby&lt;/span&gt;&lt;/li&gt;&lt;li&gt; Mastermind kata ruby&lt;/li&gt;&lt;li&gt; Mastermind randori ruby&lt;/li&gt;&lt;li&gt; Cluedo randori java&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;p&gt;Et le code du dojo (noter que l'exercice n'a pas été terminé) :&lt;/p&gt;&lt;script src="https://gist.github.com/842621.js"&gt; &lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-1538469490918105188?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/1538469490918105188/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/10/dojo-tdd.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1538469490918105188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1538469490918105188'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/10/dojo-tdd.html' title='Dojo TDD'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-364690362103778718</id><published>2009-10-14T22:48:00.003+02:00</published><updated>2009-10-14T22:56:41.363+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dates'/><category scheme='http://www.blogger.com/atom/ns#' term='universitefinance'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><category scheme='http://www.blogger.com/atom/ns#' term='annonce'/><title type='text'>Retour des Techchats et des université finance</title><content type='html'>Bonjour à tous, &lt;br /&gt;&lt;br /&gt;Les Universités Finance et les Techchats font leur grand retour le 22 octobre et le 19 novembre respectivement. &lt;br /&gt;&lt;br /&gt;Au programme du 22 octobre : les produits de taux&lt;br /&gt;&lt;br /&gt;Au programme du 19 novembre :  Scrum et Scala&lt;br /&gt;&lt;br /&gt;Sinon vous avez surement noté la création d'un nouvel atelier, avec une orientation plus pratique : Le Dojo TDD&lt;br /&gt;&lt;br /&gt;le code de celui d'hier et la date de la prochaine session seront bientôt publiés ici.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-364690362103778718?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/364690362103778718/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/10/retour-des-techchats-et-des-universite.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/364690362103778718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/364690362103778718'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/10/retour-des-techchats-et-des-universite.html' title='Retour des Techchats et des université finance'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-6722614775696877002</id><published>2009-06-22T14:25:00.004+02:00</published><updated>2009-06-22T14:41:26.425+02:00</updated><title type='text'>Les votes sont ouverts</title><content type='html'>Les prochains techchats devraient se tenir en septembre, cela laisse les vacances d'été pour l'organiser. Puisque nous avons un peu plus de temps on va essayer de faire ça mieux que la fois précédente. &lt;br /&gt;&lt;br /&gt;Donc voilà la liste des sujets connus à ce jour, votez pour nous dire ce qui vous intéresse le plus. On arretera les votes le 15 Août. Comme toujours : si vous avez envie d'animer, n'hésitez pas à envoyer votre sujet, et rappellez-vous qu'un sujet avec animateur à plus de chances de passer.  &lt;br /&gt;&lt;br /&gt;&lt;script type="text/javascript" language="javascript" charset="utf-8" src="http://static.polldaddy.com/p/1726474.js"&gt;&lt;/script&gt;&lt;noscript&gt;&lt;br /&gt;&lt;a href="http://answers.polldaddy.com/poll/1726474/"&gt;Votez pour vos sujets techchats préférés ! (les sujets pour lesquels un animateur se propose auront priorité )&lt;/a&gt;&lt;span style="font-size:9px;"&gt;(&lt;a href="http://answers.polldaddy.com"&gt;opinion&lt;/a&gt;)&lt;/span&gt;&lt;br /&gt;&lt;/noscript&gt;&lt;br /&gt;&lt;br /&gt;Bonnes vacances à tous !&lt;br /&gt;&lt;br /&gt;(vous aurez aussi noté que nous avons changé de site pour le questionnaire, celui-là à l'air plus fiable.)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-6722614775696877002?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/6722614775696877002/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/06/les-votes-sont-ouverts.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6722614775696877002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/6722614775696877002'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/06/les-votes-sont-ouverts.html' title='Les votes sont ouverts'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-1957161573294055404</id><published>2009-05-15T12:05:00.008+02:00</published><updated>2009-05-19T14:38:23.052+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mda'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>MDA : Model Driven Architecture</title><content type='html'>Le choix était difficile mardi 12, quand il a fallu choisir entre MDA et Multithreading. Emmanuel et ses acolytes Alain,et Stéphane nous avaient préparé une présentation et une démonstration. &lt;br /&gt;La discussion s'étant prolongée plus longtemps que celle du multithreading j'ai pu aller faire un tour dans la salle lors de la démo finale: la mise en oeuvre du code généré et la modification rapide de la petite application réalisée pendant la session (une calculatrice) pour y rajouter un opérateur. &lt;br /&gt;&lt;br /&gt;Je vous recommande &lt;a href="http://ea-is.blogspot.com/2009/05/tech-chat-mda-softeam.html"&gt;le compte rendu d'Emmanuel&lt;/a&gt; et &lt;a href="http://emmanuel.pesenti.free.fr/tech%20chat/2009-05-12%20-%20TECH%20CHAT%20MDAV3.ppt"&gt;la présentation&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;N'hésitez pas a poser vos questions /  faire vos commentaires ici ou sur le blog d'emmanuel&lt;br /&gt;&lt;br /&gt;Nos trois animateurs :&lt;br /&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q5zH6na3Ph8/ShFAkOHLXGI/AAAAAAAAEyg/ZMwKk2_bhP4/s1600-h/emmanuel.jpeg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 100px; height: 150px;" src="http://3.bp.blogspot.com/_Q5zH6na3Ph8/ShFAkOHLXGI/AAAAAAAAEyg/ZMwKk2_bhP4/s320/emmanuel.jpeg" border="0" alt="Emmanuel"id="BLOGGER_PHOTO_ID_5337118024418417762" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Q5zH6na3Ph8/ShFAsYarhkI/AAAAAAAAEyw/iKK1XW2TKyg/s1600-h/stephane.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 100px; height: 150px;" src="http://4.bp.blogspot.com/_Q5zH6na3Ph8/ShFAsYarhkI/AAAAAAAAEyw/iKK1XW2TKyg/s320/stephane.jpg" border="0" alt="Stephane"id="BLOGGER_PHOTO_ID_5337118164623525442" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q5zH6na3Ph8/ShFAqDZjOuI/AAAAAAAAEyo/m4UFNnsnsvo/s1600-h/alain+copy.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 100px; height: 150px;" src="http://3.bp.blogspot.com/_Q5zH6na3Ph8/ShFAqDZjOuI/AAAAAAAAEyo/m4UFNnsnsvo/s320/alain+copy.jpg" border="0" alt="Alain"id="BLOGGER_PHOTO_ID_5337118124621904610" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;br /&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td&gt;Emmanuel&lt;/td&gt;&lt;td&gt;Stéphane&lt;/td&gt;&lt;td&gt;Alain&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-1957161573294055404?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/1957161573294055404/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/05/mda-model-driven-architecture.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1957161573294055404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/1957161573294055404'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/05/mda-model-driven-architecture.html' title='MDA : Model Driven Architecture'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_Q5zH6na3Ph8/ShFAkOHLXGI/AAAAAAAAEyg/ZMwKk2_bhP4/s72-c/emmanuel.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5451385290009021516</id><published>2009-05-15T11:23:00.013+02:00</published><updated>2009-05-19T14:34:49.332+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>Techchats 2ème édition</title><content type='html'>La deuxième édition des TechChats s'est tenue le 12/05 avec un format un peu différent : 2 sujets seulement, mais 1h30 pour avoir le temps de discuter (et encore on a dépassé :) )&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_Q5zH6na3Ph8/Sg0HLgHFbZI/AAAAAAAAEuI/Kb7YlO_zC5A/s720/IMG_2731.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 576px; height: 384px;" src="http://lh5.ggpht.com/_Q5zH6na3Ph8/Sg0HLgHFbZI/AAAAAAAAEuI/Kb7YlO_zC5A/s720/IMG_2731.jpg" alt="Toute histoire a un commencement" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;Après quoi tout le monde à rejoint sa salle en fonction de son intérêt : Multithreading ou MDA le choix fut difficile.&lt;br /&gt;&lt;br /&gt;Laissant nos deux super logisticiennes de choc avec une pile de pizzas !&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_Q5zH6na3Ph8/Sg0524e86_I/AAAAAAAAEyA/7Zj00eOCiAU/s1600-h/IMG_2.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://3.bp.blogspot.com/_Q5zH6na3Ph8/Sg0524e86_I/AAAAAAAAEyA/7Zj00eOCiAU/s400/IMG_2.jpg" border="0" alt="Les pizzas! " id="BLOGGER_PHOTO_ID_5335984748541832178" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Les discussions commencent avec les présentations : &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh4.ggpht.com/_Q5zH6na3Ph8/Sg0HMZ_t0jI/AAAAAAAAEuM/h72Wkt5nWp4/s576/IMG_2732.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 576px; height: 384px;" src="http://lh4.ggpht.com/_Q5zH6na3Ph8/Sg0HMZ_t0jI/AAAAAAAAEuM/h72Wkt5nWp4/s576/IMG_2732.jpg" border="0" alt="MultiThreading" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Et bien sur l'inévitable tableau à idées qui attends vos contributions&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_Q5zH6na3Ph8/Sg08JrASBeI/AAAAAAAAEyY/HjKBqsvj4oY/s1600-h/IMG_2735.jpg"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 267px; height: 400px;" src="http://4.bp.blogspot.com/_Q5zH6na3Ph8/Sg08JrASBeI/AAAAAAAAEyY/HjKBqsvj4oY/s400/IMG_2735.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5335987270364300770" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;et pour les plus courageux la soirée s'est terminée autour d'une bière après un exil stratégique : &lt;br /&gt;&lt;table&gt;&lt;br /&gt;&lt;tr&gt;&lt;br /&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh3.ggpht.com/_Q5zH6na3Ph8/Sg0Hzecog_I/AAAAAAAAEw0/qc0KzTE6pks/s576/IMG_2773.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 150px; height: 100px;" src="http://lh3.ggpht.com/_Q5zH6na3Ph8/Sg0Hzecog_I/AAAAAAAAEw0/qc0KzTE6pks/s576/IMG_2773.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh6.ggpht.com/_Q5zH6na3Ph8/Sg0HkgKmeWI/AAAAAAAAEvw/ROY6tW_xwo8/s576/IMG_2757.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 150px; height: 100px;" src="http://lh6.ggpht.com/_Q5zH6na3Ph8/Sg0HkgKmeWI/AAAAAAAAEvw/ROY6tW_xwo8/s576/IMG_2757.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://lh5.ggpht.com/_Q5zH6na3Ph8/Sg0HfZgSF8I/AAAAAAAAEvc/CK-all6-Vb0/s576/IMG_2752.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 150px; height: 100px;" src="http://lh5.ggpht.com/_Q5zH6na3Ph8/Sg0HfZgSF8I/AAAAAAAAEvc/CK-all6-Vb0/s576/IMG_2752.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5451385290009021516?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5451385290009021516/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/05/techchats-2eme-edition.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5451385290009021516'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5451385290009021516'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/05/techchats-2eme-edition.html' title='Techchats 2ème édition'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_Q5zH6na3Ph8/Sg0HLgHFbZI/AAAAAAAAEuI/Kb7YlO_zC5A/s72-c/IMG_2731.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-3030033582561049024</id><published>2009-04-16T15:13:00.002+02:00</published><updated>2009-04-16T15:24:40.227+02:00</updated><title type='text'>Pour cette fois ...</title><content type='html'>On aurait aimé faire voter tout le monde pour les prochains TechChats mais les ponts entrainent des problèmes logistiques que nous n'avions pas prévu.&lt;br /&gt;&lt;br /&gt;Nous sommes donc dans l'obligation pour cette fois d'imposer les sujets qui seront :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;MultiThreading &lt;/li&gt;&lt;li&gt;MDA&lt;/li&gt;&lt;/ul&gt;Que ça ne vous empêche surtout pas de réfléchir aux sujets dont vous voudriez discuter en session, de voter sur le sondage du blog, le résultat des votes sera affiché à la soirée du 12.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-3030033582561049024?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/3030033582561049024/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/pour-cette-fois.html#comment-form' title='1 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3030033582561049024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/3030033582561049024'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/pour-cette-fois.html' title='Pour cette fois ...'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-8352728767356436856</id><published>2009-04-16T12:47:00.003+02:00</published><updated>2009-05-19T14:37:19.715+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sujets'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>Choix des sujets du 12/05</title><content type='html'>&lt;script language="JavaScript" src="http://www.micropoll.com/akira/MicroPoll?id=159202"&gt;&lt;/script&gt;&lt;noscript&gt;&lt;div&gt;&lt;a href="http://www.micropoll.com/akira/mpview/577214-159202"&gt;Click Here for Poll&lt;/a&gt;&lt;a href="http://www.questionpro.com" title="online surveys"&gt;Online Survey&lt;/a&gt;&lt;BR&gt; | &lt;a href="http://www.micropoll.com" title="Website Polls"&gt;Website Polls&lt;/a&gt;&lt;BR&gt; | &lt;a href="http://www.contactpro.com" title="email marketing"&gt;Email Marketing&lt;/a&gt;&lt;BR&gt;&lt;BR&gt; | &lt;a href="http://www.ideascale.com" title="crowdsourcing"&gt;Crowdsourcing&lt;/a&gt;&lt;BR&gt;&lt;a href="http://www.micropoll.com/akira/MicroPoll?mode=html&amp;id=159202"&gt;View MicroPoll&lt;/A&gt;&lt;/div&gt;&lt;/noscript&gt;&lt;!-- END MICROPOLL JAVASCRIPT CODE --&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-8352728767356436856?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/8352728767356436856/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/choix-des-sujets-du-1205.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8352728767356436856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/8352728767356436856'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/choix-des-sujets-du-1205.html' title='Choix des sujets du 12/05'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-2566578694373637411</id><published>2009-04-15T11:41:00.004+02:00</published><updated>2009-04-15T11:45:40.604+02:00</updated><title type='text'>Les photos du dernier techchats</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_NcpOHMNmOZo/SeWsr50etJI/AAAAAAAAAhI/flAoAxdGBqs/s1600-h/IMG_0192.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 240px;" src="http://1.bp.blogspot.com/_NcpOHMNmOZo/SeWsr50etJI/AAAAAAAAAhI/flAoAxdGBqs/s320/IMG_0192.jpg" alt="" id="BLOGGER_PHOTO_ID_5324852004690769042" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_NcpOHMNmOZo/SeWsitzWPkI/AAAAAAAAAhA/9mL-IySO2H8/s1600-h/IMG_0191.jpg"&gt;&lt;img style="cursor: pointer; width: 240px; height: 320px;" src="http://4.bp.blogspot.com/_NcpOHMNmOZo/SeWsitzWPkI/AAAAAAAAAhA/9mL-IySO2H8/s320/IMG_0191.jpg" alt="" id="BLOGGER_PHOTO_ID_5324851846845972034" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-2566578694373637411?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/2566578694373637411/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/les-photos-du-dernier-techchats.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/2566578694373637411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/2566578694373637411'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/les-photos-du-dernier-techchats.html' title='Les photos du dernier techchats'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_NcpOHMNmOZo/SeWsr50etJI/AAAAAAAAAhI/flAoAxdGBqs/s72-c/IMG_0192.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-9152564549302951804</id><published>2009-04-15T11:28:00.004+02:00</published><updated>2009-10-21T00:35:32.018+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='design'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>TDD : Test Driven Development</title><content type='html'>&lt;p&gt;Voici le retour sur la session TDD.&lt;/p&gt;&lt;br /&gt;&lt;h2&gt;Introduction : Mastermind&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Cr&amp;eacute;er un Mastermind en ruby : &lt;a href="http://sites.google.com/site/emmanuelgaillot/katas/"&gt; Tests et code source d'Emmanuel Gaillot&lt;/a&gt;. Voir l'installation de l'environnement a la fin de l'article.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Discussion&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Reactions :&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;    &lt;li&gt;TDD fonctionne bien pour un mastermind, mais qu'en est-il avec du "vrai code" ?&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;TDD itère par petites &amp;eacute;tapes: est-ce trop lent pour etre productif ? &lt;-&gt; Augmenter la confiance dans son code, moins de bugs, qualité du code, refactoring plsu facile&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;TDD coute cher des le d&amp;eacute;but, comment convaincre mon manager ?&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;A quel moment est-on sur que les tests sont suffisants pour une fonctionnalit&amp;eacute;?&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Si on cherche absolument a faire passer les tests il suffit de coder des fakes et passer a autre chose. Non: le fake ne sert qu'a avancer dans le code, il faut ensuite passer par une phase de refactoring.&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Liens web pr&amp;eacute;sent&amp;eacute;s pendant la discussion :&lt;br /&gt;  &lt;ul&gt;&lt;br /&gt;    &lt;li&gt;TDD pour un vrai projet? John Resig a repris le vieux code non test&amp;eacute; de &lt;a href="http://firebug.com"&gt;FireBug&lt;/a&gt; pour y int&amp;eacute;grer une nouvelle fonctionnalit&amp;eacute; (network), il en a profité pour cr&amp;eacute;er son propre outil de tests : &lt;a href="http://fireunit.org"&gt;FireUnit&lt;/a&gt;. Peut etre utilis&amp;eacute; pour TDD ? Ou utiliser &lt;a href="http://ejohn.org/blog/bringing-the-browser-to-the-server/"&gt;env.js&lt;/a&gt; du meme auteur ?&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;John Resig &lt;a href="http://ejohn.org/blog/selectors-api-test-suite-in-ie8/"&gt;how browsers implemented selectors api&lt;/a&gt; ? : &lt;a href="http://ejohn.org/apps/selectortest/"&gt;javascript test suite&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;BDD :  Behaviour Driven Development ? Une librairie existe pour Rails: &lt;a href="http://cukes.info/"&gt;cucumber&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;/ul&gt;&lt;br /&gt;  &lt;/p&gt;&lt;br /&gt;&lt;h2&gt;MasterMind Source code&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Tests :&lt;br /&gt;&lt;pre class="brush: ruby"&gt;&lt;br /&gt;require "test/unit"&lt;br /&gt;require "lib/Arbitre"&lt;br /&gt;&lt;br /&gt;class ArbitreTest &lt; Test::Unit::TestCase&lt;br /&gt;&lt;br /&gt; def assert_evalue resultatAttendu, secret, proposition&lt;br /&gt;  assert_equal resultatAttendu, Arbitre.new.evalue(secret, proposition)&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; def testToutFauxPourCombinaisonUnSeulElement&lt;br /&gt;  assert_evalue [bienPlaces = 0, malPlaces = 0],&lt;br /&gt;   secret = [:bleu], proposition = [:rouge]&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt; def testToutJustePourCombinaisonUnSeulElement&lt;br /&gt;  assert_evalue [1, 0], [:bleu], [:bleu]&lt;br /&gt;  assert_evalue [1,0], [:rouge], [:rouge]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def testPlusieursElementsJustesSurCombinaisonPlusieursElements&lt;br /&gt;  assert_evalue [1, 0], [:bleu, :rouge], [:bleu, :vert]&lt;br /&gt;  assert_evalue [1,0], [:bleu, :vert], [:rouge, :vert]&lt;br /&gt;  assert_evalue [2, 0], [:bleu, :vert, :jaune], [:bleu, :vert, :rouge]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def testQuelquesElementsMalPlacesParmiPlusieurs&lt;br /&gt;  assert_evalue [0, 1], [:bleu, :mauve], [:mauve, :rouge]&lt;br /&gt;  assert_evalue [0, 2], [:bleu, :bleu, :mauve, :mauve], [:mauve, :mauve, :vert, :vert]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def testNeCompterLesMauvesQueSiIlYEnADansLeSecret&lt;br /&gt;  assert_evalue [0,0] , [:bleu, :vert], [:rouge,:mauve]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def testUnMalPlaceNeDoitEtreCompteQuUneFois&lt;br /&gt;  assert_evalue [0, 1], [:bleu, :bleu, :mauve], [:mauve, :mauve, :rouge]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def testJauneAussiPeutEtreMalPlace&lt;br /&gt;  assert_evalue [0,1], [:bleu,:bleu,:jaune], [:jaune,:jaune,:rouge]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def testToutesLesCouleursPeuventEtreMalPlacees&lt;br /&gt;  assert_evalue [0,6],&lt;br /&gt;   [:bleu,:rouge,:jaune,:vert,:mauve,:noir],&lt;br /&gt;   [:rouge,:jaune,:vert,:mauve,:noir,:bleu]&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Code Arbitre.rb :&lt;br /&gt;&lt;pre class="brush: ruby"&gt;&lt;br /&gt;class Arbitre&lt;br /&gt;&lt;br /&gt; def initialize&lt;br /&gt;  @bienPlaces = 0&lt;br /&gt;   &lt;br /&gt;  @couleursDansSecret = nouveauCompteurCouleurs&lt;br /&gt;  @couleursDansProposition = nouveauCompteurCouleurs&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def nouveauCompteurCouleurs&lt;br /&gt;  resultat = Hash.new&lt;br /&gt;  resultat.default = 0&lt;br /&gt;  resultat&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def comptePions couleurSecret, couleurProposition&lt;br /&gt; &lt;br /&gt;  if (couleurSecret == couleurProposition)&lt;br /&gt;   @bienPlaces += 1&lt;br /&gt;  else&lt;br /&gt;   &lt;br /&gt;   @couleursDansSecret[couleurSecret] += 1&lt;br /&gt;   @couleursDansProposition[couleurProposition] += 1&lt;br /&gt;  end&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def nbMalPlacesPourCouleur c&lt;br /&gt;  [@couleursDansSecret[c], @couleursDansProposition[c]].min&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def somme liste&lt;br /&gt;  liste.inject(0) {|x, y| x + y}&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def malPlaces&lt;br /&gt;  somme (@couleursDansSecret.keys.map {|c| nbMalPlacesPourCouleur c})&lt;br /&gt; end&lt;br /&gt; &lt;br /&gt; def evalue secret, proposition&lt;br /&gt;  secret.each_index do |i|&lt;br /&gt;   comptePions secret[i], proposition[i]&lt;br /&gt;  end&lt;br /&gt;  [@bienPlaces,malPlaces]&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;h2&gt;Installation de l'environnement&lt;/h2&gt;&lt;br /&gt;&lt;p&gt;Setup for windows :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;a href="http://rubyinstaller.rubyforge.org/wiki/wiki.pl?RubyInstaller"&gt;One-click install ruby (with gem option)&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Install autotest with this command : gem install zentest&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Install colors for the autotest results : gem install win32console&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Add to the beginning of the file C:\Ruby\lib\ruby\gems\1.8\gems\ZenTest-4.0.0\lib\autotest.rb the line : require 'Win32/Console/ANSI'&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Create C:\Mastermind\.autotest and add this line to the file : require 'autotest/redgreen'&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Create an empty file C:\Mastermind\spec\spec.opts&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Create the source code file in Mastermind\lib\Arbitre.rb&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;Create your test file (the filename must start with "test_") : C:\Mastermind\test\test_Arbitre.rb&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;You can start autotest with the command C:\Mastermind\autotest -v&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-9152564549302951804?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/9152564549302951804/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/tdd-test-driven-development.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/9152564549302951804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/9152564549302951804'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/tdd-test-driven-development.html' title='TDD : Test Driven Development'/><author><name>Philippe Antoine</name><uri>https://profiles.google.com/109816429036405730190</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-0-98Hy0MSM8/AAAAAAAAAAI/AAAAAAAAAAA/rgOPwbch2dA/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5112885568588363887</id><published>2009-04-09T13:15:00.003+02:00</published><updated>2009-04-09T13:21:44.629+02:00</updated><title type='text'>Première série de sujets proposés</title><content type='html'>Certains ont déjà contacté Delphine avec leurs proposition de sujet, voilà ce que ça donne pour le moment : &lt;ul&gt;&lt;br /&gt; &lt;li&gt;Les moteurs de règles (java) open source Drools&lt;/li&gt; &lt;li&gt;Scala (plateforme java), le multithreading, Le multithreading en Java&lt;/li&gt; &lt;li&gt;L'optimisation de performance&lt;/li&gt; &lt;li&gt;La gestion de la connaissance dans un projet informatique&lt;/li&gt;&lt;li&gt;MDA&lt;/li&gt;&lt;/ul&gt;D'autres nous ont contacté pour dire qu'ils étaient interessés pour animer mais sans préciser de thème, je leur suggère de choisir dans &lt;a href="http://technicalchats.blogspot.com/2009/03/themes-des-prochains-techchats.html"&gt;les thèmes porteurs&lt;/a&gt;&lt;br /&gt;Il n'est pas encore trop tard pour proposer un thème !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5112885568588363887?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5112885568588363887/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/premiere-serie-de-sujets-proposes.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5112885568588363887'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5112885568588363887'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/premiere-serie-de-sujets-proposes.html' title='Première série de sujets proposés'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-933124672702369907</id><published>2009-04-06T18:30:00.002+02:00</published><updated>2009-05-19T14:37:37.985+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>Prochaine Session TechChats</title><content type='html'>Pour ceux qui aurait raté le coche, ouvrez vos agendas. La prochaine session des TechChats aura lieu le 12 mai (2009/05/12).&lt;br /&gt;&lt;br /&gt;Contactez delphine pour les inscriptions (animateur ou participant)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-933124672702369907?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/933124672702369907/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/prochaine-session-techchats.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/933124672702369907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/933124672702369907'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/prochaine-session-techchats.html' title='Prochaine Session TechChats'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5743659139126643383</id><published>2009-04-03T08:03:00.002+02:00</published><updated>2009-04-06T13:54:16.930+02:00</updated><title type='text'>Animer un TechChat</title><content type='html'>&lt;blockquote style="font-weight: bold;"&gt;"J'aimerais bien qu'il y ait un TechChat sur ${XXX} mais je ne suis pas un expert. Je ne peux pas animer sur ce sujet et puis en plus je n'ai pas le temps de faire une présentation powerpoint. Bon tant pis j'espère que quelqu'un d'autre aura le courage d'animer sur ce sujet ... "&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;Heureusement, animer un TechChat ne nécessite pas forcément d'être l'expert ultime sur le sujet, ni même de faire une présentation powerpoint de 50 pages :&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Un TechChat c'est une discussion, tous les participants sont égaux (ou presque)! &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le rôle de l'animateur se limite a peu de choses.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Que la discussion démarre &lt;/span&gt;&lt;br /&gt;Quand vous vous retrouvez à une table où personne ne se connait, il s'ensuit un silence gêné jusqu'à ce que quelqu'un de plus culotté brise la glace. Le but de l'animateur est d'accélérer le processus pour éviter de perdre du temps.&lt;br /&gt;En tant qu'animateur vous serez donc le premier à parler. Histoire de parler utile, nous vous conseillons de lancer le débat en présentant votre vision du sujet, en présentant une problématique ou en lançant un débat contradictoire (on trouve deux opinions sur ${XXX} vous en pensez quoi)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qu'elle ne meure pas&lt;/span&gt;&lt;br /&gt;Si les participants sont trop timides ou pas assez sûrs d'eux, il se peut que la discussion finisse par s'éteindre, le rôle de l'animateur est alors de poser une question, de rebondir sur un point qui a été mentionné pour essayer d'explorer une autre piste. De faire un tour de table pour demander son avis à chacun. Encore une fois, son rôle c'est de prendre la parole quand personne ne parle.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qu'elle ne dégénère pas (trop)&lt;/span&gt;&lt;br /&gt;Les TechChats sont destinés à des échanges cordiaux, mais nous avons souvent des avis très tranchés (moi le premier) et la discussion peut devenir houleuse (Pensez : Linux vs Windows vs Mac, ou Emacs vs Vi)&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Qu'on en tire quelquechose&lt;/span&gt;&lt;br /&gt;Nous demanderons à tous les animateurs de nous faire un petit retour suite à leur session pour alimenter le blog. Vous pourrez voir en le parcourant que ce n'est pas très difficile, ça ne devrait pas vous prendre très longtemps.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5743659139126643383?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5743659139126643383/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/04/animer-un-techchat.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5743659139126643383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5743659139126643383'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/04/animer-un-techchat.html' title='Animer un TechChat'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-879777056103454955</id><published>2009-03-19T18:22:00.001+01:00</published><updated>2009-05-19T14:36:34.595+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><title type='text'>Suggestions de thèmes pour les TechChats :)</title><content type='html'>Vous vous rappellez le grand tableau avec les post-it ?Il n'était pas là que pour décorer la pièce,  on a récupéré les post-its, ça donne une petite idée des thèmes qui interessent les gens qui sont venus :)&lt;br /&gt;&lt;br /&gt;Les grands vainqueurs du tableau :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Flex&lt;/li&gt;&lt;li&gt;GWT&lt;/li&gt;&lt;li&gt;Jquery&lt;/li&gt;&lt;/ul&gt;Autres idées de sujets en vrac (les moins grands vainqueurs du tableau à post-it):&lt;br /&gt;Praxeme, JPA, Hibernate, RCP eclipse, Maven vs Ivy, IHM, OSGI, Spring3, Entity Framework, Linq, L'intégration Continue, Les problématiques du multithreading, JDK7 aka dolphin, MDA, et Scrum, ...&lt;br /&gt;&lt;br /&gt;On a plus qu'a trouver des volontaires pour animer!&lt;br /&gt;&lt;br /&gt;Notez que la liste des sujets n'est pas fermée, loin de là, si vous avez un sujet et que vous êtes volontaires n'hésitez pas a vous faire connaitre de &lt;span style="font-weight: bold;"&gt;Delphine&lt;/span&gt;. Le vote final des sujets se fera sur les sujets ayant trouvé des animateurs.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;span style="font-weight: bold;"&gt;Techchats needs _you_ !&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-879777056103454955?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/879777056103454955/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/03/themes-des-prochains-techchats.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/879777056103454955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/879777056103454955'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/03/themes-des-prochains-techchats.html' title='Suggestions de thèmes pour les TechChats :)'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-269633537721149906</id><published>2009-03-19T18:19:00.002+01:00</published><updated>2009-05-19T14:36:23.320+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scm'/><category scheme='http://www.blogger.com/atom/ns#' term='git'/><category scheme='http://www.blogger.com/atom/ns#' term='branches'/><category scheme='http://www.blogger.com/atom/ns#' term='techchat'/><category scheme='http://www.blogger.com/atom/ns#' term='vcs'/><title type='text'>VCS : gestion de version</title><content type='html'>La première session des TechChats s'est terminée. J'ai essayé d'animer deux tables rondes, la première autour des systèmes de gestion de version la seconde sur du rétro testing.&lt;br /&gt;&lt;br /&gt;Même si mon sujet n'a pas eu le succès espéré, nous avons pu avoir une discussion intéressante autour du sujet. Pour lancer un peu la discussion, j'avais préparé un petit support reprenant&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Un rapide historique problématiques de la gestion de version et des différents outils qui ont tenté de les résoudre? &lt;/li&gt;&lt;li&gt;Les principales organisations que j'avais pu croiser sur des projets et les problèmes ayant mené à ces problématiques &lt;/li&gt;&lt;li&gt;Les problématiques nouvelles et les outils tentant d'y répondre (en particulier les problématiques de gestion de version distribuée) &lt;/li&gt;&lt;/ul&gt;La discussion qui a suivi cette petite entrée en matière a été riche avec des retours d'expériences sur clearcase et la présentation informelle de Daniel sur git.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-269633537721149906?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/269633537721149906/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/03/vcs-gestion-de-version_19.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/269633537721149906'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/269633537721149906'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/03/vcs-gestion-de-version_19.html' title='VCS : gestion de version'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3088102898726951460.post-5865805526259043323</id><published>2009-03-19T18:00:00.001+01:00</published><updated>2009-03-19T18:08:33.865+01:00</updated><title type='text'>Techchats 1.0</title><content type='html'>Voilà ça y est, ça à commencé et on va essayer de faire en sorte que ça se maintienne (on compte sur vous pour nous aider), que ça dure et qu'on en profite a fond.&lt;br /&gt;&lt;br /&gt;Je parle des techchats bien sûr, à mi-chemin entre le barcamp et le user group, une petite pres pour lancer le sujet, une bonne discussion pour poursuivre.&lt;br /&gt;&lt;br /&gt;Suite à ce premier épisode, on a lancé le blog avec philippe, pour faire un petit compte rendu des sujets, mettre a dispo les documents, lister les sujets du tableau à idées, lancer les appels pour les animateurs, annoncer les prochaines éditions, etc.&lt;br /&gt;&lt;br /&gt;Si vous avez participé à une session n'hésitez pas à commenter sur le topic correspondant. Les animateurs se verront ajoutés à la liste des contributeurs du blog ...&lt;br /&gt;&lt;br /&gt;A bientôt !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3088102898726951460-5865805526259043323?l=technicalchats.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://technicalchats.blogspot.com/feeds/5865805526259043323/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://technicalchats.blogspot.com/2009/03/techchats-10.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5865805526259043323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3088102898726951460/posts/default/5865805526259043323'/><link rel='alternate' type='text/html' href='http://technicalchats.blogspot.com/2009/03/techchats-10.html' title='Techchats 1.0'/><author><name>Jean</name><uri>http://www.blogger.com/profile/05158793688545428182</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://2.bp.blogspot.com/-KVC6odhDklM/Ti5zl4qyNeI/AAAAAAAAHU8/EXcKzkvMpV4/s220/20091220_8925_R%2B%25281%2529.jpg'/></author><thr:total>0</thr:total></entry></feed>
