<?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-7052813581099080953</id><updated>2012-01-28T23:30:00.598+01:00</updated><category term='plsql'/><category term='ruby'/><category term='lean'/><category term='Intro'/><category term='Methode'/><category term='scala'/><category term='livre'/><category term='java'/><category term='Craftsmanship'/><category term='lol'/><category term='C'/><category term='legacy'/><category term='Oracle'/><category term='Latex'/><category term='Web'/><category term='buzz'/><category term='Code'/><category term='scrum'/><category term='n00bs'/><category term='Agile'/><category term='shell'/><category term='python'/><category term='Linux'/><category term='rails'/><category term='Logiciel'/><category term='Conference'/><category term='dsl'/><category term='tdd'/><category term='vim'/><category term='Documentation'/><category term='SSII'/><category term='langage'/><category term='extrem programming'/><category term='Window Maker'/><title type='text'>Rom's Code Corner</title><subtitle type='html'>Logiciel libre, Vim, Code et Agilité. Blabla d'un développeur en SSII.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>50</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-9150338192406020680</id><published>2012-01-28T23:30:00.000+01:00</published><updated>2012-01-28T23:30:00.664+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>ça me play</title><content type='html'>Il y a des jours comme ça ou vous avez l'impression d'avoir raté 10 ans de nouvelles technologies, de nouvelles méthodes de travail. Vous vous prenez de la grosse innovation en pleine poire.&amp;nbsp;Ça&amp;nbsp;réveille et ça perturbe.&lt;br /&gt;&lt;br /&gt;Dans mon métier, j'ai l'habitude d'utiliser des technologies &lt;i&gt;éprouvées&lt;/i&gt;. Jusqu'il n'y a pas si longtemps, c'était des applications en Java + EJB 2. C'était compliqué, c'était triste. D'autant que dans l'application en question, les EJB étaient forcément sur le même serveur que la webapp, les requêtes SQL pour aller chercher les objets devaient a priori être décrite dans les EJB. Les JSP contenaient du code métier. On s'avait ce qu'était MVC mais on ne retrouvait pas le concept dans notre application. J'avais pris l'habitude dans mon jeune temps de coder des sites web en php3 en un week-end en récupérant mes données en faisant directement du SQL sans prise de tête... Alors oui, c'était triste.&lt;br /&gt;&lt;br /&gt;Pourtant, je sais bien qu'il y a des choses qui ont évolué le développement web java dans les années 2000. Il y a eu Spring, les POJO, l'inversion de contrôle, des choses qui permettaient de tester et découpler les systèmes plus facilement. Et puis il y a JPA / Hibernate, qui permet d'utiliser une couche de persistance sans même savoir ce qu'était le SQL ! Des trucs de déglingos, quoi ! A mon grand regret, ma connaissance de ce genre de chose m'est restée théorique (mon PC trop lent à la maison du temps où j'utilisais Eclipse).&lt;br /&gt;&lt;br /&gt;Il y a quelques temps (années ?), j'ai vu la vidéo de présentation du &lt;a href="http://www.playframework.org/"&gt;Play! Framework&lt;/a&gt;. Puis j'ai vu Ruby on Rails. Puis j'ai vu Grails, Django. J'ai essayé tout ça très rapidement, ça avait l'air très cool.&lt;br /&gt;Cette semaine, j'ai eu dans l'idée que ce serait pas mal de faire une web app pour gérer les livraisons de notre grosse application. Je ne savais pas trop quelle techno choisir : nous avons un accès restreint sur notre serveur de développement (!), celui-ci étant hébergé chez le client. Je n'avais pas envie d'argumenter une demande pour installer quoi que ce soit. J'ai alors réalisé qu'un JDK était disponible. C'est quoi ce truc qui permet de coder des appli web en Java rapidement ? Play! ?&lt;br /&gt;&lt;br /&gt;Je décide de mettre les mains dans le cambouis, la réunion d'avancement hebdomadaire de une heure trente est un bon moment pour jouer. Je me lance. Je ne connais rien à JPA, j'ai regardé du Groovy du coin de l'oeil mais je n'ai pas peur. Je suis la doc intégrée. J'avance tranquillement.&lt;br /&gt;&lt;br /&gt;Tout est très simple dans ce framework. On lance l'appli, on écrit du code, il est compilé et déployé à la volée (il suffit de recharger les pages). Les pages web sont générées par Groovy à partir de templates dans un dialecte plutôt simple. &amp;nbsp;En une heure trente, j'ai écrit la base de mon modèle avec relationnel, mis en place mon contrôleur, des données de tests et des tests unitaires ainsi qu'un début de vue pour afficher mes objets. Le tout en regardant régulièrement la doc. Et pas dans un langage rapide à coder comme Python ou Ruby mais bien en &lt;b&gt;JAVA&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Bref, c'est un truc de malade, je suis réconcilié avec Java. Je vais essayer de continuer mon appli (pendant une prochaine réunion ?). À ce train là, quelques jours me suffisent pour faire un truc cool. Et en plus, le framework intègre JQuery et &lt;a href="http://sass-lang.com/"&gt;Sass &lt;/a&gt;! Génial !&lt;br /&gt;&lt;br /&gt;Au fait, vous utilisez encore Eclipse comme IDE Java ? Essayez IntelliJ, ça décoiffe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-9150338192406020680?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/9150338192406020680/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2012/01/ca-me-play.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/9150338192406020680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/9150338192406020680'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2012/01/ca-me-play.html' title='ça me play'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4150543437844206595</id><published>2012-01-27T22:54:00.002+01:00</published><updated>2012-01-27T23:09:56.114+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Methode'/><title type='text'>Pomodoro Technique</title><content type='html'>Je m'essaie depuis quelques semaines à la &lt;a href="http://www.etre-meilleur.com/gestion-du-temps/la-technique-pomodoro-ou-lart-de-gerer-son-temps-grace-a-une-tomate.html"&gt;pomodoro technique&lt;/a&gt;.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Il s'agit d'une pratique de gestion du temps. Les principaux éléments proposés sont les suivants :&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ce qu'on a à faire doit être divisé en &lt;i&gt;tomates&lt;/i&gt; (pomodoros). Une tomate ayant une durée de 30 minutes, c'est à dire 25 minutes de travail et 5 minutes de pause.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Une pause plus longue (entre 15 et 30 minutes) est accordée toutes les 4 tomates.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Lorsqu'on commence une tomate, on règle un minuteur sur 25 minutes. Tant que le minuteur tourne, on se force à éviter les interruptions externes (un collègue nous demande quelque-chose) comme internes (envie de traîner sur twitter). Lorsque le minuteur sonne, on arrête la tâche en cours et on prend 5 minutes pour faire quelque chose sans rapport avec la tâche : gérer les interruptions, marcher, traîner sur twitter,...).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cette méthode nous permet de réserver un temps pour ce concentrer sur les tâches à réaliser. Limiter le temps permet d'éviter une certaine forme de fatigue, la perte de concentration et de productivité. Combien de fois, dans le cadre d'un développement informatique, vous êtes-vous plongé dans votre code, faisant des sessions de 3 heures ou plus ? Vous en sortez fatigué et vous avez l'impression que sur la fin, vous n'avez pas été aussi productif que vous l'auriez souhaité. Vous avez en quelque sorte &lt;i&gt;piétiné.&lt;/i&gt; D'autre part, il peut vous arriver aussi que des personnes viennent vous poser des questions ou demander un coup de main lorsque vous travaillez sur une tâche, voire que vous ayez besoin de chercher une information sur Internet et que vous divaguiez de lien en lien dans une spirale de procrastination. Je suis souvent confronté à ces cas de figure. La &lt;i&gt;pomodoro technique &lt;/i&gt;vise à éviter cela.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Dans un second temps, la méthode propose de se faire un plan de tomates (!) à réaliser par jour et de répertorier le nombre de tomates nécessaires pour accomplir vos tâches. Cette pratique vise plusieurs objectifs. Tout d'abord, vous pouvez tenter d'améliorer votre organisation afin de réaliser un maximum de tomates par jour. Si deux tomates font une heure, vous devriez théoriquement être capable de réaliser 12 tomates par jour, si on prend en compte des pauses de 30 minutes. Essayez et vous verrez que ce n'est pas si simple. D'autre part vous pouvez tenter d'améliorer votre productivité sur les tâches récurrentes, de &lt;i&gt;battre votre score.&lt;/i&gt; Enfin, si vous enregistrez à peu près tout ce que vous faites, vous serez capable d'estimer avec précision le temps qu'il vous faut pour réaliser une tâche donnée même si vous avez plusieurs tâches à réaliser dans le même laps de temps. Je trouve cet aspect assez génial sur le papier.&lt;br /&gt;&lt;br /&gt;L'étape ultime sera d'utiliser la technique en équipe, d'une part parce que vous n'aurez ainsi plus l'air d'être le seul cinglé à compter des tomates, d'autre part, parce que cela donne une certaine culture d'équipe et permet de découper les séances de travail collaboratif, comme des réunions ou du développement en binôme.&lt;br /&gt;&lt;br /&gt;Pour finir, peut-être considérez-vous comme irréalisable l'idée d'avoir un minuteur qui fait tic tac et qui sonne en plein openspace. Sachez qu'il existe une kyrielle d'applications pour vous minuter. J'utilise personnellement&amp;nbsp;&lt;a href="http://flowkeeper.org/"&gt;Flow Keeper&lt;/a&gt;, qui permet d'écouter le click au casque (j'ai toujours un écouteur dans l'oreille, tant pis). Les réels challenges de cette technique est de bien penser à démarrer les tomates, de bien penser à faire les pauses et surtout de savoir gérer les interruptions tant interne qu'externe. Il faut y aller progressivement et se laisser le temps de bien faire.&lt;br /&gt;&lt;br /&gt;Autre lien :&lt;br /&gt;&lt;a href="http://www.pomodorotechnique.com/"&gt;Site officiel&lt;/a&gt; de la Pomodoro Technique.&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/7052813581099080953-4150543437844206595?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4150543437844206595/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2012/01/pomodoro-technique.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4150543437844206595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4150543437844206595'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2012/01/pomodoro-technique.html' title='Pomodoro Technique'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-7695398770771934796</id><published>2011-12-14T20:00:00.000+01:00</published><updated>2011-12-14T20:00:05.742+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='n00bs'/><category scheme='http://www.blogger.com/atom/ns#' term='legacy'/><title type='text'>KISOD</title><content type='html'>Vous connaissez tous le &lt;i&gt;Keep It Stupid Simple&lt;/i&gt;, qui est l'arlésienne du développement informatique (!). Je propose d'aller plus loin avec le &lt;i&gt;Keep It Simple Or Die&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Petite anecdote de ma vie professionnelle cette semaine. Un collègue prépare une livraison pour un script shell devant installer un correctif. Le correctif est composé d'un fichier sql. Le use-case n'est pas compliqué :&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;    &lt;li&gt;Créer un répertoire de backup dans le répertoire de travail du script&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Sauvegarder le script actuellement déployé dans le répertoire&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Copier le nouveau script dans le répertoire applicatif&lt;/li&gt;&lt;br /&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;Je passe sur le script de désinstallation qui fait la même chose mais à l'envers. Bref.&lt;br /&gt;&lt;br /&gt;Qu'est-ce que je trouve :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Le répertoire de sauvegarde est créé par un mkdir $(pwd)/backup. &lt;b&gt;De quoi ???&lt;/b&gt; mkdir backup, ça ne suffit pas ???&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Pour copier le fichier existant vers le backup et le fichier à déployer, on passe par un for FILE in *.sql; do ... &lt;b&gt;De quoi ???&lt;/b&gt; on ne copie qu'un fichier ! Il y a des limites à la généralisation !&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;En fait, on ne fait pas des cp, on fait des mv. &lt;b&gt;De quoi ???&lt;/b&gt; et si je veux rejouer l'install, je redetare ???&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Même combat sur la désinstallation, sauf qu'au milieu des boucles et autres mv, un bug s'est glissé, un .sql qui devenait un .ksh ou autre bizarrerie. Honnêtement, mon esprit a oublié.&lt;/li&gt; &lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Par jeu ou arrogance peut-être, je me suis dit que ce serait certainement une bonne idée de réécrire ces scripts... avec un mkdir et 2 cp...&lt;br /&gt;&lt;br /&gt;Apparemment, le collègue a fait ça vite fait avant de partir en congés avec le post-it "plus qu'à tester et à envoyer". Je pense que c'est un code qu'il a récupéré d'ailleurs et qu'il a dû bricoler. Il y a des jours ou on se dit que le pair programming devrait être une rêgle de base.&lt;br /&gt;&lt;br /&gt;Je suis sur un projet legacy. Il y a des trucs comme ça a tous les coins de fichier.&lt;br /&gt;&lt;br /&gt;Comme dirait mon chef : "C'est pas possible les gars, vous ne savez pas faire simple ?". Pas mieux. KISOD.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Épilogue&lt;/b&gt;&lt;br /&gt;La correction était dans un fichier sql. L'ancien bout de code était en commentaire malgré notre utilisation intensive de, oh mon dieu, subversion. C'est du sql pour Oracle 10g, avec le undo management en automatique. On y trouve un use rollback segment XXX bien obsolète... Je suis un peu fatigué là.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le code mort de vaincra pas.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-7695398770771934796?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/7695398770771934796/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/12/kisod.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7695398770771934796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7695398770771934796'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/12/kisod.html' title='KISOD'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8700939506136571473</id><published>2011-11-28T11:31:00.004+01:00</published><updated>2011-12-13T22:58:50.489+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>autotest du pauvre</title><content type='html'>On a tous nos petits soucis. Professionnellement, je développe beaucoup de shell (j'en vois qui rigolent au fond). J'aime bien développer de façon iterative, vous savez bien, ce truc là, avec des tests écrits avant le code de prod.&lt;br /&gt;Là où le bât blesse est qu'il faut transférer le code sur le serveur de test. Souvent. Trop souvent. Comme j'en avais marre de basculer toutes les 30 secondes entre gvim, filezilla et putty, j'ai bricolé un autotest en python, du genre :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;import os&lt;br /&gt;&lt;br /&gt;def main():&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while True:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;test_ord_install()&lt;br /&gt;&lt;br /&gt;def test_ord_install():&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tested_script = 'mon_scrip.ksh'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;launcher = "test_mon_script.ksh"   &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.system('pscp data_test.dat prepdev1@server:testRto')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.system('pscp %s prepdev1@server:testRto' % launcher)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.system('pscp %s prepdev1@server:testRto' % "testLib.ksh")&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.system('pscp ..\sh\%s prepdev1@server:testRto/sh' % tested_script)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.system('pscp ..\config\%s prepdev1@server:testRto' % 'ORDappli.env')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;os.system('plink prepdev1@server "cd testRto &amp;amp;&amp;amp; chmod +x *.ksh &amp;amp;&amp;amp; ./%s"' % launcher)&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Vous ne le savez peut-être pas mais &lt;b&gt;pscp&lt;/b&gt; et &lt;b&gt;plink&lt;/b&gt; sont livrés avec putty. Il suffit de les avoir dans le path windows. Il s'agit d'équivalents à scp et ssh. J'utilise une clé RSA pour me connecter.&lt;br /&gt;&lt;br /&gt;Après ça, il y a plus qu'à coder et regarder de temps en temps sur l'invite de commande si ça passe ou pas :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8700939506136571473?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8700939506136571473/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/11/autotest-du-pauvre.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8700939506136571473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8700939506136571473'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/11/autotest-du-pauvre.html' title='autotest du pauvre'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4368840245634407648</id><published>2011-11-05T20:58:00.004+01:00</published><updated>2011-11-05T21:44:20.106+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Mauvaise expérience avec Rails</title><content type='html'>&lt;div style="text-align: center;"&gt;&lt;span class="Apple-style-span" &gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Je viens d'essayer de faire un test avec Rails 3.1.1 installé pour Ruby 1.9.2 via rvm. Et bien c'est une bonne galère. Voici le scénario&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Installation du gem rails pour l'environnement ruby 1.9.2 de rvm. C'est très long mais il n'y a pas d'erreur.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Premier essai d'un&lt;i&gt; rails new truc&lt;/i&gt; pour créer une app. Boum, rails ne trouve pas sqlite3.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;OK, il faut faire un&lt;i&gt; aptitude install libsqlite3-dev&lt;/i&gt;, on relance la commande, ça prend encore 1 bonne minute et ça passe. Ouf. Et si je n'avais pas voulu utiliser sqlite3 ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;En suivant &lt;a href="http://guides.rubyonrails.org/getting_started.html"&gt;ce tutoriel&lt;/a&gt;, je vois qu'il faut créer la base avec une tâche&lt;i&gt; rake db:create&lt;/i&gt;. Boum, rake veut un runtime JavaScript (heu, je voulais faire du ruby, là !). Quelque galère puis finalement J'installe rhino que je trouve dans aptitude et qui contente rake. La base de données peut se créer.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Ok, je peux lancer l'appli avec un &lt;i&gt;rails server&lt;/i&gt; maintenant. Boum. Pas d'openssl. Ouais, c'est bon, je m'en fiche d'avoir des pages chiffrées, je veux juste tester rails moi ! Recherche sur le net, installation d'un libssl-dev, recompilation de l'extension openssl pour la version de ruby, webrick se lance. Superbe.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Je décide de paramétrer une première route, toujours en suivant le tutoriel. La page ne s'affiche pas, dû à une erreur javascript. Il semble que le runtime JS pour execJs ne soit pas totalement reconnu. Je mets &lt;a href="https://github.com/cowboyd/therubyracer"&gt;therubyracer&lt;/a&gt; dans mon Gemfile et je fais un bundle install. Ça marche mais j'en ai assez, je vais faire une pause. Peut-être faire un peu de Django ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Cette mésaventure m'attriste car je n'avais pas eu tous ces problèmes sur une version précédente de rails. Je ne comprends pas qu'on m'oblige a avoir sqlite3, openssl et surtout un runtime JS. Ce framework deviendrait-il trop complexe ? C'est d'autant plus énervant que j'aimerais faire des trucs avec ruby, que le langage me semble élégant et me parait entouré d'une certaine simplicité.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;À titre de comparaison, j'ai également essayé &lt;a href="http://www.sinatrarb.com/"&gt;sinatra&lt;/a&gt; cette semaine. Il s'agit d'un framework VRAIMENT léger, en fait principalement un descripteur de routes. Il possède évidemment moins de fonctionnalité que rails, mais permet de démarrer encore plus rapidement. Je me demande si on ne dirige pas vers un nouveau modèle de légèreté dans le domaine du développement web agile.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;PS : je viens de refaire un essai en désinstallant rhino et en recréant un projet Rails intégrant therubyracer. Rake fonctionne. Je respire.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;a href="http://3.bp.blogspot.com/-Ar2qGGReLyU/TrWcD2esW_I/AAAAAAAAA6Q/QJXf9RzKqfE/s1600/screen.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img src="http://3.bp.blogspot.com/-Ar2qGGReLyU/TrWcD2esW_I/AAAAAAAAA6Q/QJXf9RzKqfE/s400/screen.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5671610895720799218" style="display: block; margin-top: 0px; margin-right: auto; margin-bottom: 10px; margin-left: auto; text-align: center; cursor: pointer; width: 400px; height: 151px; " /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&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/7052813581099080953-4368840245634407648?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4368840245634407648/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/11/mauvaise-experience-avec-rails.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4368840245634407648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4368840245634407648'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/11/mauvaise-experience-avec-rails.html' title='Mauvaise expérience avec Rails'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-Ar2qGGReLyU/TrWcD2esW_I/AAAAAAAAA6Q/QJXf9RzKqfE/s72-c/screen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-1238295119217182957</id><published>2011-10-19T09:26:00.002+02:00</published><updated>2011-10-19T09:27:27.886+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Github</title><content type='html'>Rapidos, pour dire que j'ai ajouté &lt;a href="https://github.com/rtouze"&gt;mon profil github &lt;/a&gt;dans les liens →&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-1238295119217182957?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/1238295119217182957/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/10/github.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1238295119217182957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1238295119217182957'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/10/github.html' title='Github'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-1641871195517021086</id><published>2011-09-04T21:26:00.002+02:00</published><updated>2011-09-04T21:33:33.411+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><title type='text'>Le blocage de la classe</title><content type='html'>J'ai eu de la chance cette semaine, j'ai pu me réserver du temps pour coder au boulot. Et en Python en plus. Cela m'a permis de faire du TDD et de constater quelque chose : je bloque pour extraire des classes.&lt;div&gt;Extraire des méthodes ne me pose pas de problème. Un redondance apparaît ? Je fais une méthode pour encapsuler le traitement. Une méthode est longue et très concrète ? Je la divise en plusieurs méthodes.&lt;/div&gt;&lt;div&gt;Mais qu'en est-il de ma classe ?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Le boulot consiste en  un petit module qui génère un Makefile à partir du contenu d'un répertoire pour faciliter la vie des développeurs. Ma classe en question génère une liste représentant les lignes du Makefile, c'est sa responsabilité. Au bout d'un moment, les différents cas de figure apparaissent, signe que la classe veut être étendue, j'imagine... Mais je n'ai pas envie de la faire ! Peut-être demain...&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;J'aimerais bien avoir l'avis d'un lecteur eXtreme Programmer : faites-vous un blocage à l'extraction de classe ?&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-1641871195517021086?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/1641871195517021086/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/09/le-blocage-de-la-classe.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1641871195517021086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1641871195517021086'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/09/le-blocage-de-la-classe.html' title='Le blocage de la classe'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8133001408007073331</id><published>2011-08-13T23:00:00.004+02:00</published><updated>2011-09-04T21:42:26.305+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lean'/><title type='text'>LEAN</title><content type='html'>Aujourd'hui, je suis d'humeur à m'attaquer à quelque chose qui m'a longtemps paru abstrait qui l'est d'ailleurs toujours un peu : le LEAN.&lt;br /&gt;&lt;br /&gt;D'un premier abord dans notre métier de développeur d'applications (de gestion) le LEAN pourrait passer pour ce qu'on fait dans le cadre des méthodes agiles. On retrouve des similitudes dans les courants du LEAN IT et de l'agilité, mais je ne sais pas si les gars qui ont écrit le manifeste Agile pensaient qu'ils faisaient du LEAN...&lt;br /&gt;&lt;br /&gt;Alors, le lean (je vais l'écrire en minuscules maintenant, ce sera moins fatiguant) est avant tout un paradigme de production industrielle qui a apparemment été lancée par le constructeur automobile japonais Toyota (on l'appelle d'ailleurs parfois Toyotisme). Plutôt qu'aller acheter un livre de Mary Poppendiek, j'ai bien envie de voir ce que nous dit la méthode industrielle proposer une interprétation pour étudier comment cela peut s'adapter au développement logiciel. Les deux domaines étant très éloignés on peut se demander comment une méthode appliquée à l'un serait pertinente pour l'autre.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Jarvis, on passe en mode materiel&lt;/h3&gt;&lt;br /&gt;Souvent, la philosophie lean est représentée par une maison avec des termes compliqués. Je n'ai pas envie de lancerIinskape, je vais vous en faire une version simplifiée en ascii art :&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-Lq3QHTXP8HQ/Tkbouunb4MI/AAAAAAAAA5o/Jf8wrAw6F8I/s1600/maison.png" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 208px; height: 274px;" src="http://2.bp.blogspot.com/-Lq3QHTXP8HQ/Tkbouunb4MI/AAAAAAAAA5o/Jf8wrAw6F8I/s400/maison.png" alt="" id="BLOGGER_PHOTO_ID_5640451472813187266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;(Une image car j'ai eu un petit pb de formattage avec blogger...)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pas mal. Passons aux explications.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;Le toit&lt;/span&gt;&lt;br /&gt;Je pense que c'est le plus simple à comprendre. L'objectif est de pouvoir soutenir la qualité, dans les meilleurs délais aux coûts les plus faibles. Un classique : on ne parle pas de mettre un temps infini pour sortir des produits chers de qualité merdique.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;Les piliers&lt;/span&gt;&lt;br /&gt;Pour arriver à nos objectifs, nous nous appuyons sur 2 principes :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;  &lt;li&gt;&lt;b&gt;JIT &lt;/b&gt;pour Just In Time, comprendre flux tendu. L'idée est que la production n'est pas pilotée par la capacité à produire mais par la demande du consommateur. Je pense qu'il s'agit de consommateur au sens large : le client mais aussi l'ouvrier qui à l'étape N de la chaine de production demande et attend que l'élément produit à l'étape N-1 soit disponible. C'est un point fort d'opposition avec le Taylorisme, l'idée que la production est rythmée par un tapis roulant dont l'action sur l'allure permet de réguler la production. Au &lt;span style="font-style: italic"&gt;push&lt;/span&gt; (pousser) est opposé le &lt;span style="font-style: italic"&gt;pull&lt;/span&gt; (tirer).&lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;b&gt;JIDOKA &lt;/b&gt;rien à voir avec la praticien de la planchette japonaise. Souvent on l'associe au fait d'arrêter la chaine dès qu'il y a un problème. Sur Wikipedia, j'ai lu que c'est la capacité des machine a auto-diagnostiquer un problème, arrêter la chaine et appeler l'opérateur pour corriger le problème.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold"&gt;Les fondations&lt;/span&gt;&lt;br /&gt;On ne peut pas faire tenir les piliers sans de solides fondations.&lt;ul&gt;   &lt;li&gt;&lt;b&gt;TPM &lt;/b&gt;pour &lt;span style="font-style: italic"&gt;Total Productive Maintenance&lt;/span&gt;. Ce concept est lié à la discipline des ouvriers. On la connait aussi sous la forme de 5S:&lt;/li&gt;   &lt;ol&gt;&lt;br /&gt;      &lt;li&gt;&lt;b&gt;Seiri &lt;/b&gt;: ranger et trier. Ce terme concerne surtout l'outillage, ce dont on a besoin pour faire le travail. Il faut ranger ses outils, garder à portée de main ceux qui nous servent le plus souvent et se débarrasser ce qui est inutile.&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;&lt;b&gt;Seiton &lt;/b&gt;: ordonner. Lorsqu'on a débarrassé et trié ses outils, ils faut les ranger à une place précise, bien définie. Une place pour chaque chose et chaque chose à sa place.&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;&lt;b&gt;Seiso &lt;/b&gt;: nettoyer. Seiri concerne l'outillage, seiso concerne les déchets de production (huile, sciure, etc.). Il faut que l'espace de travail soit impeccable.&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;&lt;b&gt;Seiketsu &lt;/b&gt;: standardiser. Ces formes de nettoyage représentent des procédures standard, une habitude et non un événement exceptionnel. L'espace de travail doit être toujours être nettoyé lorsque les tâches sont terminées.&lt;/li&gt;&lt;br /&gt;      &lt;li&gt;&lt;b&gt;Shitsuke &lt;/b&gt;: maintien de la discipline. La constance dans l'application des 4S doit être contrôlée. Une sorte d'autodiscipline doit s'instaurer au sein des équipes.&lt;/li&gt;&lt;br /&gt;  &lt;/ol&gt;&lt;br /&gt;  Il va sans dire que la TPM, c'est compliqué. Essayez de l'appliquer chez vous avec le ménage. Je me suis amusé à comparer les pages wikipedia en Anglais et Français : les conceptions ne sont pas forcément identiques. J'ai encore un point de vue différent dans la préface Coder Proprement (Clean Code) de Robert C. Martin.&lt;br /&gt;&lt;br /&gt;  &lt;li&gt;&lt;b&gt;KAIZEN &lt;/b&gt;pour amélioration continue. On veut définir le processus, le lancer, l'observer et le corriger s'il ne donne pas satisfaction (build, operate, check)&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Okay, c'est quoi le rapport avec l'IT&lt;/h3&gt;&lt;br /&gt;Une chose est claire pour moi, le développement logiciel à peu à voir avec la construction de bagnole. Cela a d'ailleurs peu à voir avec la construction de bâtiment, même si on utilise encore le vocable du BTP (architecte, urbaniste,...). Pourtant, ce n'est pas de ma faute, le lean est a la mode dans notre metier. Comment peuvent s'appliquer les concepts du lean pour nous ?&lt;br /&gt;&lt;h4&gt;JIT&lt;/h4&gt;Une application de JIT dans le domaine du développement est le &lt;b&gt;Kanban&lt;/b&gt;, qui est également une pratique issue du lean. On organise les tâches en entrées, elles sont tirées par les acteurs dans différentes étapes d'un workflow ou chaine de valeur (en dev, en test, en livraison, etc.). La règle est que le nombre d'items par étape est limité pour les empêcher de stagner, le but étant de les sortir le plus vite possible. L'usage veut que les tâches et le workflow soient représentés sur un tableau. On retrouve ce système de management visuel dans les méthodes Agile. Ça marche bien. Ce qui est intéressant et que le Kanban peut permettre de voir les goulots d'étranglement dans notre chaine de valeur pour pouvoir l'améliorer, ce qui est déjà un aspect du Kaizen.&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold; "&gt;Jidoka&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ce qu'en entend par l'application du jidoka en IT est que tout le monde arrête ses actions en cours si une tâche est bloquée dans la chaine de valeur. On cherche à mettre un maximum de ressources pour régler les problèmes. Cela peut aussi s'appliquer à une situation de blocage en production, par extension.&lt;br /&gt;&lt;br /&gt;Le concept d'auto-diagnostic est intéressant car on le retrouve dans la pratique d'intégration continue. Un système que se teste en continue et averti les développeur quand quelque chose ne marche plus est une application du Jidoka.&lt;br /&gt;&lt;h4&gt;TPM / 5S&lt;/h4&gt;Les idées de la TPM peuvent s'appliquer au principe de développement. Le code est maintenu propre, la structure révèle les intentions, les fichiers sont stockés de façon corrélée avec l'architecture, les règles de développement sont respectées. Enfin, le principe de propriété du code cher à l'agilité rentre aussi dans ce principe. Il stipule que chaque développeur doit pouvoir intervenir sur n'importe quelle partie du code. Je pense que cela reflète bien cette idée.&lt;br /&gt;&lt;h4&gt;Kaizen&lt;/h4&gt;Le kaizen va être représenté par les différentes boucles de feedback que l'on trouve là encore dans l'agilité. On pense d'abord à la rétrospective, qui permet de faire le bilan et tirer des actions à entreprendre entre deux sprints, mais c'est aussi le cas avec les tests d'acceptation, l'intégration continue, le TDD et la programmation en binôme.&lt;br /&gt;&lt;h3&gt;Conclusion&lt;/h3&gt;Je crois que j'ai fait plutôt un article catalogue sans trop de parti pris. Le lean est quelque chose de pensé au départ pour de la production industrielle. Le lean IT est-il une nouvelle tentative de calquer le processus de développement logiciel sur un modèle connu, comme on l'a fait jusqu'à maintenant avec la métaphore du bâtiment ? Le fait est que les notions offertes par le lean trouvent leur écho dans les pratiques Agiles, qui sont je pense de plus en plus populaires parmi les équipes de développement.&lt;br /&gt;&lt;br /&gt;Toutefois, le lean ne doit pas se limiter à une pratique particulière au sein de l'entreprise, adoptée par exemple uniquement dans un département faisant du développement, ou construisant des voitures. Il est censé être adopté à tous les niveaux d'une société, car l'efficacité d'un sous-sytème dépend de ses interactions avec le système global. Le vrai défi du lean est de voir la chaine de valeur dans sa globalité et de l'améliorer constamment. De ce point de vue, quoi de mieux que les pratiques Agiles pour les équipes de développement pour s'accorder avec à une politique lean en entreprise ?&lt;br /&gt;&lt;br /&gt;Je pense que les idées seraient bonnes à compléter, je laisse l'espace libre aux commentaires.&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/7052813581099080953-8133001408007073331?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8133001408007073331/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/08/lean.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8133001408007073331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8133001408007073331'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/08/lean.html' title='LEAN'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-Lq3QHTXP8HQ/Tkbouunb4MI/AAAAAAAAA5o/Jf8wrAw6F8I/s72-c/maison.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4501613102255011104</id><published>2011-08-13T22:04:00.003+02:00</published><updated>2011-08-13T22:10:12.420+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Mon premier client</title><content type='html'>Ce qui est bien quand on est développeur, c'est qu'on peut soi même créer un logiciel qui va nous simplifier la vie.&lt;br /&gt;&lt;br /&gt;Pour ma part, comme je m'occupe encore de &lt;a href="http://www.grandirautrement.com/"&gt;Grandir Autrement&lt;/a&gt;, je croulais un peu sous les factures à générer. J'ai donc fait un bout de code qui me permet de le faire à la chaine plus rapidement.&lt;br /&gt;&lt;br /&gt;C'est très productif d'être son propre client. Pour pousser la réflexion, on pourrait se dire que chaque développeur devrait travailler un certain temps sur les application qu'il développe. Je suis sûr que ça ferait évoluer les mentalités !&lt;br /&gt;&lt;br /&gt;Ce qui est bien pour partager ce genre de chose, c'est d'avoir des sites comme github !&lt;br /&gt;&lt;br /&gt;Car ça y est, &lt;a href="https://github.com/rtouze/gaFacturation"&gt;moi aussi je partage mon code&lt;/a&gt; !&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-4501613102255011104?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4501613102255011104/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/08/mon-premier-client.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4501613102255011104'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4501613102255011104'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/08/mon-premier-client.html' title='Mon premier client'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-1842381026693333341</id><published>2011-07-30T15:00:00.000+02:00</published><updated>2011-07-30T15:00:01.662+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='scrum'/><title type='text'>Scrum bashing</title><content type='html'>Dernier article sur le thème "pas d'agilité en forfait" de mon cahier. Je vais écrire ici à propos des pratiques agiles de conduite de projet applicables même dans un cadre non agile, comme un projet au forfait. Il s'agit cette fois de pratiques qui découlent (entre autres) de Scrum : le morcellement des tâches, le chiffrage par échelons, le management visuel et les réunions sur un temps limité.&lt;br /&gt;&lt;br /&gt;Commençons par le morcellement des tâches. Lorsqu'une affaire est conclue, que les parties se sont mises d'accord sur un périmètre, le plan du projet est constitué de morceau trop gros au chiffrage incertain. Cela peut être un bon exercice de reprendre les différents items avec l'équipe afin de les morceler en tâches d'un ou deux jours. J'y vois plusieurs intérêts. Tout d'abord, cela déclenche une discussion technique. On élabore rapidement une solution technique au problème posé. La décomposition en tâches vient alors naturellement. Cela mène également à une réévaluation du chiffrage global de la partie. S'il est moins élevé, on se réjouit. S'il est plus élevé, on peut faire le paris que les autres éléments seront sur-chiffrés ou alors revoir la conception technique et refaire une distribution en tâches. C'est quelques chose que j'ai fait en contexte Scrum pour chiffrer des stories complexes[1] avec l'équipe.&lt;br /&gt;&lt;br /&gt;Toujours concernant le chiffrage, j'ai adopté le façon systématique le chiffrage par échelon, classiquement avec les termes de la suite de Fibonacci (1, 2, 3, 5,...). Le chiffrage reflète l'incertitude. Pourquoi choisir 4 au lieu de 3 ou 5 ? Est-ce qu'on a une connaissance suffisante du problème pour faire une estimation supérieure à 5 ? Le chiffrage par échelons permet de comparer les différents items chiffrés : cet item est plus complexe que celui-ci que j'ai chiffré à trois, je le chiffre donc à 5. La pratique de chiffrage est quelque chose d'abstrait après tout. Elle permet juste d'avoir un budget.&lt;br /&gt;&lt;br /&gt;Sans transition, parlons du management visuel. Beaucoup de fanatiques d'Excel doivent trouver cette pratique ridiculement réactionnaire. Cependant, avec un tableau et des post-it, vous aurez un contrôle étonnant sur vos projets ! Utiliser les principes du Kanban avec un nombre limité de tâches par étape est également une bonne idée pour améliorer la productivité. Le tableau doit pouvoir être vu et être accessible à chaque membre de l'équipe pour le faire évoluer en temps réel.&lt;br /&gt;&lt;br /&gt;Terminons par les réunions quotidiennes. Elles sont une bonne idée s'il y a un nombre limité de membres dans l'équipe (5 ou 6 personnes ?). Dans le cas contraire, cela demande beaucoup d'effort pour bouger tout le monde et ces réunions deviennent ennuyeuses. Je vous déconseille d'adopter cette pratique si vous n'avez pas de tableau de tâches sur lequel vous appuyer, le but étant que chaque membre puisse avoir un aperçu global de l'avancement du projet. Vous pouvez sinon vous limiter à une réunion hebdomadaire d'une heure maximum dans laquelle vous pouvez fixer les objectifs de la semaine suivante et faire le bilan de la semaine passée.&lt;br /&gt;&lt;br /&gt;Ceci est le dernier article de ma mini série. Comme vous pouvez le voir, mon point de vue est de minimiser l'usage des pratiques Scrum quand la situation ne s'y prête pas. Tout n'est pas à jeter mais Scrum perd grandement de sont intérêt dans une démarche non agile. Ne cherchez pas à utiliser des buzzwords, de faire des standups et des burndown charts à tout bout de champ. Ne communiquez pas de product backlog si vous êtes contractuellement engagés à livrer des spécifications. Concentrez-vous plutôt sur les pratiques d'ingénierie qui restent applicables à toutes les situations.&lt;br /&gt;&lt;br /&gt;[1] vous l'aurez compris, complexe ici signifie d'une charge supérieure à deux jours.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-1842381026693333341?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/1842381026693333341/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/scrum-bashing.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1842381026693333341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1842381026693333341'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/scrum-bashing.html' title='Scrum bashing'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8873638537745764958</id><published>2011-07-26T23:43:00.004+02:00</published><updated>2011-07-26T23:51:42.414+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>ctags</title><content type='html'>ctags a participé à sauver ma journée.&lt;br /&gt;&lt;br /&gt;C'est un outil qui génère un fichier tag contenant les endroits où sont définis les éléments (fonctions, classes) dans les fichiers source. Ce fichier tag est ensuite utilisable par des éditeurs de texte comme vim. Je pensais qu'il ne marchait que pour le C et le C++, mais en fait il prend en compte beaucoup de langages :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;romain@lilibox:~$ ctags --list-languages&lt;br /&gt;Ant&lt;br /&gt;Asm&lt;br /&gt;Asp&lt;br /&gt;Awk&lt;br /&gt;Basic&lt;br /&gt;BETA&lt;br /&gt;C&lt;br /&gt;C++&lt;br /&gt;C#&lt;br /&gt;Cobol&lt;br /&gt;DosBatch&lt;br /&gt;Eiffel&lt;br /&gt;Erlang&lt;br /&gt;Flex&lt;br /&gt;Fortran&lt;br /&gt;HTML&lt;br /&gt;Java&lt;br /&gt;JavaScript&lt;br /&gt;Lisp&lt;br /&gt;Lua&lt;br /&gt;Make&lt;br /&gt;MatLab&lt;br /&gt;OCaml&lt;br /&gt;Pascal&lt;br /&gt;Perl&lt;br /&gt;PHP&lt;br /&gt;Python&lt;br /&gt;REXX&lt;br /&gt;Ruby&lt;br /&gt;Scheme&lt;br /&gt;Sh&lt;br /&gt;SLang&lt;br /&gt;SML&lt;br /&gt;SQL&lt;br /&gt;Tcl&lt;br /&gt;Tex&lt;br /&gt;Vera&lt;br /&gt;Verilog&lt;br /&gt;VHDL&lt;br /&gt;Vim&lt;br /&gt;YACC&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Vous construisez le fichier avec&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ctags -R&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Dans le code source avec vim, faites Ctrl+] pour aller à la définition d'une fonction[1] et Ctrl+t pour revenir à l'endroit précédent.&lt;br /&gt;&lt;br /&gt;L'inconvénient est qu'il faut générer les tags dès qu'on retouche aux fichiers où sont définies les fonctions appelées, mais pour débugger du shell ou du C tordu, ça aide bien !&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[1] et oui, cela marche mieux avec la disposition américaine des touches !&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8873638537745764958?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8873638537745764958/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/ctags.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8873638537745764958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8873638537745764958'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/ctags.html' title='ctags'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-7672998066089126945</id><published>2011-07-25T20:06:00.003+02:00</published><updated>2011-07-25T20:19:18.654+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='legacy'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>OMFG</title><content type='html'>On peut dire que j'ai appris quelque chose aujourd'hui dans le fastidieux travail de remise d'aplomb de la plateforme de qualification du client.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Le problème&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Un transfert de fichier ne se faisant pas entre 2 serveurs&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;L'errance&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Transfert de fichier ? Facile, c'est du scp (non). Du rcp (non) ? Un montage nfs (NON) ? Ben quoi alors ?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;La solution&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Le transfert est réalisé par &lt;span style="font-style: italic;"&gt;dd&lt;/span&gt;, initié sur la plateforme de départ, pipé dans un &lt;span style="font-style: italic;"&gt;remsh&lt;/span&gt; pour terminer sur la plateforme d'arrivée. Et bien, je ne savais pas que c'était possible.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;dd if=$input bs=$block | remsh arrivee dd of=$output bs=$block&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Détail amusant, la commande n'est pas lancée directement mais au travers d'un autre &lt;span style="font-style: italic;"&gt;remsh&lt;/span&gt; en local, afin de rebondir sur un utilisateur qui avait l'équivalence sur la plateforme d'arrivée et les droits sur le répertoire de destination.&lt;br /&gt;&lt;br /&gt;Un ajustement des &lt;span style="font-style: italic;"&gt;.rhosts&lt;/span&gt; de tout le monde et ça doit être résolu. Pas de remarque sur la problématique de sécurité apportée par la commande &lt;span style="font-style: italic;"&gt;remsh&lt;/span&gt; et le système des rhosts.&lt;br /&gt;&lt;br /&gt;C'est dans notre code...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-7672998066089126945?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/7672998066089126945/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/omfg.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7672998066089126945'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7672998066089126945'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/omfg.html' title='OMFG'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-5719228560957713988</id><published>2011-07-24T14:31:00.003+02:00</published><updated>2011-07-24T14:34:55.174+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Avoir du fun avec cat</title><content type='html'>J'ai appris un truc récemment sur &lt;span style="font-style: italic;"&gt;cat&lt;/span&gt;. Il ne sert pas seulement à concaténer et lire des fichiers. On peut aussi écrire des lignes de façon interactive, ce qui est très pratique pour ajouter des lignes dans un fichier de configuration par exemple.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;# Ecriture&lt;br /&gt;romain@lilibox:~$ cat &gt; test.log&lt;br /&gt;some &lt;br /&gt;text&lt;br /&gt;&lt;br /&gt;# Lecture&lt;br /&gt;romain@lilibox:~$ cat test.log&lt;br /&gt;some&lt;br /&gt;text&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-5719228560957713988?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/5719228560957713988/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/avoir-du-fun-avec-cat.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5719228560957713988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5719228560957713988'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/avoir-du-fun-avec-cat.html' title='Avoir du fun avec cat'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8741641833658121344</id><published>2011-07-23T16:36:00.002+02:00</published><updated>2011-07-23T16:41:44.687+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='extrem programming'/><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Les bonnes pratiques n'ont pas de cadre</title><content type='html'>Dans mon &lt;a href="http://romscodecorner.blogspot.com/2011/07/pourquoi-sembeter-avec-lagilite.html"&gt;article précédent&lt;/a&gt;, j'ai essayé de convaincre qu'il fallait arrêter d'essayer d'adopter une conduite agile de projet dans un contexte de forfait. Cela vous attriste : vous déprimez à l'idée de travailler à l'ancienne. Vous voulez quand même de l'agilité dans votre vie de développeur. Bien.&lt;br /&gt;&lt;br /&gt;Scrum met peu l'accent sur les pratiques de développement pourtant décrites par extreme programming. Il y en a peu mais toutes sont intéressantes.&lt;br /&gt;&lt;br /&gt;Tout d'abord, le développement dirigé par les tests (TDD). C'est un point difficile. Si on suit les principe d'XP, aucune ligne de code ne doit passer en production si elle n'a pas d'abord fait l'objet d'un test unitaire en échec. On est dans la discipline pure. Pourtant, cette pratique permet d'avoir un contrôle quasi total du code en frôlant 100% de couverture par les tests. L'intérêt est d'autant plus grand lorsque cette pratique est couplée à de l'intégration continue (voir plus bas). Le paradigme qu'elle met en place est que la première nécessité d'un module développé est de pouvoir être testé rapidement de façon automatisée. Ce point surclasse le principe d'encapsulation cher à la programmation orientée objet. De prime abord, on peut penser qu'une telle pratique engage un surcout, surtout si on n'est pas habitué à automatiser les tests. D'habitude, on commence par rédiger le code de production et on s'assure manuellement de son bon fonctionnement. De plus, les tests représentent du code supplémentaire à maintenir ce qui n'est pas compris dans le budget... D'autorité, je dis que les avantages dépassent le surcout. Les tests sont maintenus car lancés et mis à jour avant chaque retouche de code. Le surcout en temps doit être pris en compte dans les chiffrages.&lt;br /&gt;La vraie difficulté est de dépasser le barrage culturel et de former l'équipe à cette pratique.&lt;br /&gt;&lt;br /&gt;Une deuxième pratique intéressante est l'intégration continue. L'IC consiste à faire tourner la construction du projet régulièrement, en la déclenchant par exemple sur la validation de fichiers dans le système de gestion de code source. Le point fort de cette pratique est qu'elle est peu couteuse à mettre en place, même longtemps après le début de développement, comme dans le cadre d'une tierce maintenance applicative. Les intérêts sont multiples.&lt;br /&gt;Tout d'abord, vous pouvez contrôler que les sources compilent toujours après une validation. C'est un peu le niveau zéro de l'intégration[1].&lt;br /&gt;Ensuite, le système permet d'installer une plateforme de test automatiquement, même vierge. Vous contrôlez ainsi qu'il n'y a pas de problème d'installation et vous disposez d'une plateforme "propre" pour faire des tests manuels.&lt;br /&gt;Enfin, lorsque vous avez une bonne couverture de tests unitaires, vous pouvez les lancer à chaque mise à jour du dépôt de code source. Avec la pratique du TDD, vous mettez ainsi en place une non régression permanente pour un coût nul.&lt;br /&gt;Les systèmes populaires d'intégration continue aujourd'hui sont &lt;a href="http://jenkins-ci.org/"&gt;Jenkins&lt;/a&gt; et &lt;a href="http://hudson-ci.org/"&gt;Hudson&lt;/a&gt; (c'est le même système) mais si vous ne voulez pas (ou ne pouvez pas) utiliser Java sur votre plateforme, vous pouvez très bien développer un système simple avec des scripts et cron.&lt;br /&gt;&lt;br /&gt;Dernière pratique d'ingénierie, le développement en binôme (pair programming). Pour moi, elle est la plus difficile à mettre en place mais ses bénéfices sont intéressants.&lt;br /&gt;Le plus évident est le transfert de connaissance, l'apprentissage. C'est efficace pour montrer une technique comme le TDD, l'intérêt d'une règle de développement, des raccourcis clavier ou autre fonctionnalité de l'IDE pour aider le binôme à augmenter sa productivité. Cet aspect n'est malheureusement intéressant que pour le moins expérimenté[2].&lt;br /&gt;Un autre aspect est la relecture de code, l'un pouvant voir des problèmes dans le code que l'autre ne saisit pas au premier abord ; même si la personne au clavier est la plus expérimenté, elle bénéficiera d'un autre point de vue sur son code. La discussion sera également bénéfique pour les deux parties.&lt;br /&gt;Enfin, en mélangeant les binômes sur différents aspect du produit, on améliore la connaissance globale du code par l'équipe.&lt;br /&gt;Il y a effectivement de bonnes choses mais il est compliqué de mettre cette pratique en place de façon systématique : elle a un côté "socialisation forcée" qui peut ne pas convenir à tout le monde. Elle est en outre difficile à argumenter avec la hiérarchie qu'on veut mettre deux personnes au lieu d'une sur une tâche. Ne prétendez pas que la tâche sera terminée deux fois plus vite : c'est faux même s'il y a un gain de productivité. C'est en terme de qualité de code et de capacité d'apprentissage de l'équipe que cela se joue.&lt;br /&gt;&lt;br /&gt;Pour conclure ce deuxième article, disons que ces bonnes pratiques d'ingénierie ont été promue aux travers des valeurs de l'agilité. Elles sont adaptables à n'importe quel type de projet car elles mènent à une meilleure qualité du produit livré[3], avec moins de bogues mais aussi une architecture plus flexible, que l'on peut remodeler sans crainte grâce au tests. Elles visent à donner une meilleur maîtrise du processus de livraison. Soyez honnêtes, intégrez le surcout de ces pratiques dans vos chiffrages. Ne badinez pas avec la qualité du produit, votre réputation et celle de votre entreprise est en jeu.&lt;br /&gt;&lt;br /&gt;Cet article aborde des techniques connues avec un point de vue candide mais quand je vois les gens travailler autour de moi, je pense que ça valait le cout de l'écrire.&lt;br /&gt;&lt;br /&gt;Pour la suite, j'aborderais les pratiques de conduite de projet issues de l'agilité bénéfique même dans un cadre forfaitaire.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[1] si le code en gestion de source ne compile même pas, il va falloir en discuter avec l'équipe&lt;br /&gt;[2] je me demande toutefois si la personne qui a posture de mentor dans cette situation ne va pas vouloir "briller" devant le n00b et faire une performance :).&lt;br /&gt;[3] un contrat de TMA est plus rentable quand le produit n'a pas de bogue.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8741641833658121344?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8741641833658121344/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/les-bonnes-pratiques-nont-pas-de-cadre.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8741641833658121344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8741641833658121344'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/les-bonnes-pratiques-nont-pas-de-cadre.html' title='Les bonnes pratiques n&apos;ont pas de cadre'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8533179875933047157</id><published>2011-07-19T23:36:00.001+02:00</published><updated>2011-07-19T23:38:03.930+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scala'/><title type='text'>Scala est performant</title><content type='html'>Comme en témoigne cet essai de compilation à froid du classique Hello World :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;romain@lilibox:~/development/scala$ time scalac HelloWorld.scala&lt;br /&gt;&lt;br /&gt;real    0m9.971s&lt;br /&gt;user    0m9.541s&lt;br /&gt;sys     0m0.288s&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;J'ai peur.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8533179875933047157?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8533179875933047157/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/scala-est-performant.html#comment-form' title='2 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8533179875933047157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8533179875933047157'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/scala-est-performant.html' title='Scala est performant'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4812970938211254293</id><published>2011-07-17T13:15:00.003+02:00</published><updated>2011-07-17T14:20:48.998+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='SSII'/><title type='text'>Pourquoi s'embéter avec l'agilité...</title><content type='html'>...en SSII. C'est la question que je me pose. Les pratiques de &lt;span style="font-style: italic;"&gt;conduite de projet&lt;/span&gt; agiles, dont l'implémentation la plus populaire en France est a priori Scrum[1], restent encore globalement méconnues (il faut dire que le manifeste a &lt;span style="font-style: italic;"&gt;seulement&lt;/span&gt; 10 ans. Il faut du temps pour traverser l'Atlantique). Elles sont assez souvent jugées comme peu sérieuses (mon expérience). C'est encore délicat aujourd'hui pour les &lt;span style="font-style: italic;"&gt;évangelistes&lt;/span&gt;, je pense, d'en faire susciter l'adoption dans l'enthousiasme général. Alors, pourquoi ne pas arrêter ?&lt;br /&gt;&lt;br /&gt;Rassurez-vous, je ne vais pas vous suriner avec tout le bien que je pense des projets en cascade, en V, en Y... Les spécifications mal écrites, mal lues, pleines d'erreurs... Les cahiers de tests manuels mal écrits, jamais rejoués, périmés... Les règles de développement jamais discutées en équipe, prônant l'usage de cette saleté notation hongroise (je crois que je m'égare...).&lt;br /&gt;&lt;br /&gt;Reprenons. Scrum, c'est quoi ?&lt;br /&gt;&lt;br /&gt;C'est un ensemble de pratiques et de rôles qui va permettre à l'équipe de développement de se rapprocher d'un collège d'utilisateurs afin de développer une application informatique censée les aider dans leur travail, les rendre plus efficaces, heureux et riches.&lt;br /&gt;Ils sentent ce qu'ils veulent mais ne savent pas -au sens de compétence mais aussi de disponibilité, de temps à consacrer- le formaliser de façon exhaustive dans des spécifications.&lt;br /&gt;Ainsi l'équipe de développement fait de son mieux pour interpréter ces besoins et les traduire en  application afin de les montrer rapidement aux utilisateurs. À la vue du travail effectué, leur besoin se précise et l'application évolue. On s'aperçoit que finalement, une fonctionnalité A est suffisamment remplie par une fonctionnalité B qui devient donc très peu prioritaire, que ce serait bien d'avoir telle et telle information dans un nouvel écran. Oh et Jean-Jean, tu nous ferais pas un tableau de bord là en page d'accueil ? Ce serait tellement pratique pour les gars...&lt;br /&gt;&lt;br /&gt;Dans ce cas de figure, ça mène à un niveau de synergie étonnant. On arrive à faire de grandes choses à couts maîtriser et avec une vraie satisfaction du client en la personne de l'utilisateur final. Je l'ai vécu. En SSII. Et c'est une exception.&lt;br /&gt;&lt;br /&gt;La règle habituelle des projets au forfait est très différente.&lt;br /&gt;En premier lieu, l'équipe n'est &lt;span style="font-style: italic;"&gt;jamais&lt;/span&gt; au contact des utilisateurs. Les utilisateurs formulent un besoin à une maîtrise d'ouvrage (MOA) qui la transmet accompagnée d'un budget à une maîtrise d’œuvre (MOE) qui va la traduire en cahier des charges et parfois même en spécifications (chance pour vous). La MOE  fait appel à la SSII pour sous traiter le &lt;span style="font-style: italic;"&gt;vil&lt;/span&gt; travail de développement (elle n'est pas obligée, mais là ça m'aide pour écrire un article sur les SSII).&lt;br /&gt;&lt;br /&gt;La MOE n'a pas besoin du projet. Elle n'a pas un besoin viscéral du projet. Faire le plus beau logiciel du monde ne va pas rendre son travail plus efficace, plus facile. Il ne va pas rendre ces personnes plus heureuses chaque matin d'aller utiliser une application faite uniquement pour eux, pour leur besoin spécifique.&lt;br /&gt;&lt;br /&gt;Alors pourquoi vouloir faire du Scrum ? Où est l'agilité dans ce processus ?&lt;br /&gt;Un processus dans lequel le besoin des utilisateurs est livré entre 6 mois et 1 an après leur demande. Un processus au cours duquel de multiples équipes se sont interposées entre l'utilisateur et son besoin et le producteur capable de le satisfaire, avec ce que cela représente de coûts mais aussi de déformation du besoin exprimé ? Où est l'agilité lorsque le logiciel n'est pas en accord avec l'interprétation des spécifications et que les acteurs repartent dans un cycle demande-chiffrage-planning-réalisation ? Je cherche encore...&lt;br /&gt;&lt;br /&gt;J'ai vu une fois un projet &lt;span style="font-style: italic;"&gt;soi-disant Scrum &lt;/span&gt;avec une structure décrite ci-dessus et au forfait. Cela est revenu à développer un une liste d'exigences mouvante sans réviser l'engagement sur le périmètre à livrer. Un beau massacre.&lt;br /&gt;&lt;br /&gt;On peut éventuellement se dire qu'on peut faire un contrat forfait pour rassurer la partie cliente et obtenir le budget et ensuite ne pas honorer l'engagement sur les fonctionnalités. En d'autre terme, on signe un contrat forfait pour au final de la régie. Cela peut marcher... si on aime faire de l'escalade sans corde (avec de la graisse sur les mains). C'est à refuser absolument.&lt;br /&gt;&lt;br /&gt;Restons simples. Rendez-vous service. Rendez service à votre hiérarchie et à votre client. Si vous avez une MOE qui veut du forfait, donnez lui du forfait. Si elle veut faire du Scrum et du forfait, dirigez votre interlocuteur vers ce billet : il est possible qu'il n'ait pas réellement saisi l'intérêt.&lt;br /&gt;&lt;br /&gt;Vous voulez cependant travailler de façon moderne malgré ce carcan austère ? Ajoutez mon journal dans votre agrégateur RSS et laissez moi formaliser la suite (on peut aussi faire du blabla incrémental :)).&lt;br /&gt;&lt;br /&gt;Ouais, c'est un &lt;span style="font-style: italic;"&gt;to be continued, baby&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;[1] n'insistez pas, je n'ai pas de source. Vous connaissez Crystal et DSDM vous ?&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-4812970938211254293?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4812970938211254293/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/pourquoi-sembeter-avec-lagilite.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4812970938211254293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4812970938211254293'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/07/pourquoi-sembeter-avec-lagilite.html' title='Pourquoi s&apos;embéter avec l&apos;agilité...'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4395306957694103109</id><published>2011-06-22T14:39:00.001+02:00</published><updated>2011-06-22T14:42:44.307+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><category scheme='http://www.blogger.com/atom/ns#' term='dsl'/><title type='text'>A la mode ?</title><content type='html'>Il y a quelques temps j'ai commencé à faire un Langage Dédié pour faire des tests de validation sur des processus Dollar Universe (c'est un outil d'ordonnancement).&lt;br /&gt;&lt;br /&gt;Dans un shell (ksh), les étapes de test se présente ainsi :&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;test_session 47ZMPUGRFM contient "47ZMPRFM_D 47ZMPRFMIN 47ZMPRFMAL 47ZMPRFMSA 47ZMPRFMCO 47ZMPRFM_F"&lt;br /&gt;test_uproc 47ZMPRFM_D necessite_ressources 47Z_PUGRF_EC&lt;br /&gt;test_uproc 47ZMPRFMIN contient ARCinitPurgeReferentielFixe.ksh&lt;br /&gt;test_uproc 47ZMPRFMAL contient ARClanceAlimTableAuxiliaireFixe.ksh&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ce qui est sympa c'est que le contenu des tests devient facile à parser. Il est alors envisageable de générer du texte automatiquement pour remplir un cahier de test grace à un script idoine (en Python, évidemment !)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-4395306957694103109?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4395306957694103109/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/06/la-mode.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4395306957694103109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4395306957694103109'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/06/la-mode.html' title='A la mode ?'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-7933585840352931369</id><published>2011-05-26T22:33:00.003+02:00</published><updated>2011-05-26T22:41:15.850+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Avancement projet...</title><content type='html'>J'ai parlé il y a quelque temps d'un projet d'appli CRUD que j'avais commencé pour gérer les abonnés du magazine &lt;a href="http://www.grandirautrement.com/"&gt;Grandir Autrement&lt;/a&gt;. L'application est utilisée en production ! Elle a même géré avec succès l'envoi du dernier numéro. Il manque encore des fonctionnalités, je les ajoute au gré de ma motivation. C'est un cycle de développement qui me convient bien !&lt;br /&gt;&lt;br /&gt;Je ne sais pas trop comment donner suite à ce système pour l'instant. J'aimerai bien diffuser la version desktop, mais il va falloir que je fasse de la doc. J'ai également l'idée d'en faire une webapp, peut-être en l'hébergeant dans &lt;a href="http://code.google.com/intl/fr/appengine/"&gt;GAE&lt;/a&gt;... Et peut-être que je pourrais en faire une appli cloud pour d'autres magazines &lt;strike&gt;sans le sous&lt;/strike&gt; associatifs. J'essaie de vous tenir au jus !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-7933585840352931369?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/7933585840352931369/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/05/avancement-projet.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7933585840352931369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7933585840352931369'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/05/avancement-projet.html' title='Avancement projet...'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-3070869744120917454</id><published>2011-04-17T11:58:00.001+02:00</published><updated>2011-04-17T11:59:45.205+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Langages dynamiques</title><content type='html'>Je prends quelques minutes pour écrire un truc sur les langages dynamiques.&lt;br /&gt;&lt;br /&gt;J'ai dernièrement fait un peu de Python pour développer mon logiciel de gestion d'abonné. J'aime beaucoup ce langage finalement, même si certains éléments de syntaxes sont bordelliques.&lt;br /&gt;&lt;br /&gt;En trainant sur le Net, je m'aperçois que Python est assez peu représenté au profit de... Ruby ! La mode pour le développement &lt;i&gt;Agile&lt;/i&gt; c'est Ruby on Rails, les &lt;i&gt;craftsmen&lt;/i&gt; font beaucoup de promo sur Ruby... Pourtant pourquoi Ruby serait plus &lt;i&gt;Agile&lt;/i&gt; que Python ? Tous deux sont des langages dynamiques, multi-paradigme (orientés objet, mais pas que), basés sur un interpréteur C permettant de dialoguer avec du code compilé natif. Tous les deux permettent de faire du Web : RoR pour Ruby mais &lt;a href="http://www.djangoproject.com/"&gt;Django&lt;/a&gt; pour Python. Tous les deux disposent de gestionnaires d'extensions : &lt;a href="http://rubygems.org/"&gt;gem&lt;/a&gt; pour Ruby, &lt;a href="http://www.pip-installer.org/en/latest/index.html"&gt;pip&lt;/a&gt; ou &lt;a href="http://packages.python.org/distribute/easy_install.html#id2"&gt;easy install&lt;/a&gt; pour Python... Bref, ils sont proches.&lt;br /&gt;&lt;br /&gt;Personnellement, je trouve que Ruby instruit des points qui me gênent avec Python (&lt;i&gt;so far...&lt;/i&gt; je ne connais pas encore suffisemment Ruby) :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;L'encapsulation&lt;/b&gt;&lt;br /&gt;C'est vrai que Python à tendance à détendre le développeur sur le principe d'encapsulation. Cependant j'aime bien faire BEAUCOUP de méthodes que je voudrais privées (&lt;i&gt;export till you drop&lt;/i&gt; comme dirait Uncle Bob). Certes, on peut fonctionner par conventions mais qu'un dir(MaClasse) me renvoie dix lignes d'attributs, ça me dérange... Si on veut exposer des méthodes publiques, faut-il systématiquement des façades ? Quant à la convention des préfixes _ et __ pour les membres protégés ou privés, je trouve ça juste attroce. Au moins, avec Ruby, on peut a priori faire de VRAIS membres privés...&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Self&lt;/b&gt;&lt;br /&gt;Le truc que je déteste en Python : l'accès aux membres avec l'utilisation systématique de self. C'est juste CHIANT. Je veux qu'on considère qu'une classe utilise ses membres A PRIORI. Encore pire : mettre self en tant que premier paramètre des méthodes. Ca sent un peu trop la démarche "Je veux faire de l'objet avec du C" en passant un pointeur de structure comme premier paramètre de fonction. Berk.&lt;br /&gt;&lt;br /&gt;Mais il s'agit de détails. Je suis sûr que Ruby possède également ses casseroles syntaxiques (déjà le #{foobar} pour l'interprétation des variables en string c'est un peu chiant).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Le vrai plus de Ruby je pense, c'est le côté &lt;i&gt;bling bling&lt;/i&gt;, je m'explique :&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Le nom&lt;/b&gt;&lt;br /&gt;OK cet argument est nul, mais il appuie bien le côté &lt;i&gt;bling bling&lt;/i&gt; de Ruby.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;La promo sur les sites Webs&lt;/b&gt;&lt;br /&gt;Dans les &lt;a href="http://linuxfr.org/news/entretien-avec-les-d%C3%A9veloppeurs-python-francophones"&gt;réponses de Tarek sur LinuxFr&lt;/a&gt;, il décrit qu'une grosse faiblesse de Python réside dans son site officiel &lt;a href="http://www.python.org/"&gt;www.python.org&lt;/a&gt; très peu sexy. Quand on voit le site officiel de Ruby &lt;a href="http://www.ruby-lang.org/fr/"&gt;www.ruby-lang.org&lt;/a&gt;, traduit en plusieurs langues, coloré,... Avec un gros plus : le lien &lt;a href="http://www.ruby-lang.org/fr/documentation/quickstart/"&gt;Apprenez Ruby en vingt minutes&lt;/a&gt; ! De même, le site de Ruby On Rails, &lt;a href="http://rubyonrails.org/"&gt;rubyonrails.org&lt;/a&gt; est plutôt direct, genre "chope le, code et mets en prod ce soir". Ruby est cool et sexy, Python est austère et destiné aux matheux. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Communauté&lt;/b&gt;&lt;br /&gt;Le développeur Ruby a l'air riche. Il fait des screencasts dans lesquels il développe sont site sous Rails en 30 minutes avec son macbook pro en utilisant &lt;a href="http://macromates.com/"&gt;TextMate&lt;/a&gt;. Il fait quoi le développeur Python ? Il utilise &lt;a href="http://www.vim.org"&gt;gVim&lt;/a&gt; sous &lt;a href="http://www.debian.org"&gt;Debian&lt;/a&gt; tournant sur un vieil Athlon des familles ? Snif.&lt;br /&gt;&lt;br /&gt;Alors voilà, je vais me mettre à Ruby parce qu'il a une image sexy et parce que je pense que ça gonflera mon CV. Mais je ne vais pas laisser Python parce que je trouve ce langage super cool !&lt;br /&gt;&lt;br /&gt;PS : je n'ai pas parlé de &lt;a href="http://www.perl.org"&gt;Perl&lt;/a&gt;. Qui parle encore de Perl en 2011 (^-^) ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-3070869744120917454?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/3070869744120917454/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/04/langages-dynamiques.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/3070869744120917454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/3070869744120917454'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/04/langages-dynamiques.html' title='Langages dynamiques'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-135491718576375790</id><published>2011-04-10T23:08:00.002+02:00</published><updated>2011-04-10T23:13:25.694+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Conference'/><title type='text'>MixIT</title><content type='html'>J'ai assisté cette semaine à la conférence Mix-IT coorganisée par le &lt;a href="http://www.lyonjug.org/"&gt;LyonJUG&lt;/a&gt; et le &lt;a href="http://clubagile.org/"&gt;Club Agile Rhône Alpes&lt;/a&gt;, tout naturellement autour des dernières technologies Java et de l'Agilité.&lt;br /&gt;&lt;br /&gt;Arrivée dans les locaux de l'Epitech Lyon vers 8:15 ; les étudiants me dirigent vers l'amphi où se tiendra la keynote. Blabla ds organisateurs, applaudissements... On retiendra qu'il faut faire attention en traversant la route pour aler au batiment où se tiendront les différentes sessions. Suit une présentation d'Objet Direct, le principal sponsor de l'événement... Je n'ai pas pris de CV... Mainenant, présentation de Nicolas Martignolle, connu pour être le blogger derrière &lt;a href="http://www.touilleur-express.fr/"&gt;&lt;i&gt;Le Touilleur Express&lt;/i&gt;&lt;/a&gt;. Il parle de la beauté du métier de développeur. J'ai envie de pleurer mais je ne sais pas si c'est l'émotion ou le manque de sommeil.&lt;br /&gt;&lt;br /&gt;On passe au petit déjeuner (CAF&amp;Eacute;) et à la récupération du badge. Puis attente. C'est le moment où j'arrète la narration temps réel pour quelque-chose de plus direct. Voici un résumé des sessions auxquelles j'ai assisté.&lt;br /&gt;&lt;h3&gt;Comment j'ai mis ma suite de test au régime en 5 minutes par jour&lt;/h3&gt;&lt;br /&gt;Tout le monde doit en être convaincu : écrire des tests joués lors du build, c'est bien. Cependant, la durée du build augemente fatalement avec le nombre de fonctionnalités et de tests associés jusqu'au point où il devient impossible de le jouer quotidiennement. Plutôt que de désactiver l'exécution des tests, le speaker donne plusieurs pistes :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Utiliser Maven 3 et ses capacités de multi-threading&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Supprimer les testes inutiles, redondants &lt;b&gt;et&lt;/b&gt; le code mort&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Limiter les tests IHM et end to end pour privilégier les test unitaires rapides&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Mocker et utiliser des ressources en mémoire si possible.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;On est dans le bon sens mais la piqure de rappel est importante.. On sent que le speaker maîtrise son sujet.&lt;br /&gt;&lt;h3&gt;Grails&lt;/h3&gt;&lt;br /&gt;&lt;a href="http://www.grails.org/"&gt;Grails&lt;/a&gt; est la contraction de Groovy et Rails. Il s'agit d'un framework permettant le déploiement rapide d'applications web. Le principe est d'avoir un squelette d'application normalisé et un serveur tomcat démarré pour les tests en une seule commande. &amp;Ccedil;a a vraiement l'air efficace, ce qui donne envie de l'essayer.&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Point positif : la compatibilité avec l'écosystème Java.&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Point négatif : les performances qui tombent même en dessous d'un combo Ruby on Rails + JRuby. Les évangélistes diront que c'est suffisamment rapide. Des sites web à gros trafic utilisent tout de même Grails.&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;h3&gt;Clojure&lt;/h3&gt;&lt;br /&gt;&lt;a href="http://clojure.org/"&gt;Clojure&lt;/a&gt; c'est du lourd : il s'agit d'un langage fonctionnel pour la JVM. J'essaie de m'y mettre avec un peu de peine. &amp;Agrave; chaque fois que je suis un tutoriel, j'ai du mal avec les particularités sémantiques et je suis vite largué. Le speaker est développeur du plugin Eclipse Clojure. Il connait &lt;b&gt;très&lt;/b&gt; bien le sujet. &amp;Agrave; l'issue de la session, je suis à nouveau largué et je ne pense pas être le seul. Les gens se demandent ce qu'on peu faire avec. Réponse : le langage est généraliste. Ah bon... Personnellement, je trouve la syntaxe très élégante et je compte bien persévérer pour apréhender le paradigme de la programmation fonctionnelle.&lt;br /&gt;&lt;h3&gt;NoSQL&lt;/h3&gt;&lt;br /&gt;Qu'on se le dise, &lt;a href="http://fr.wikipedia.org/wiki/NoSQL"&gt;NoSQL&lt;/a&gt; signifie Not Only SQL. Le speaker se focalise sur &lt;a href="http://hadoop.apache.org/"&gt;Hadoop&lt;/a&gt;, qu'il présente comme une base orientée colonnes et &lt;a href="http://cassandra.apache.org/"&gt;Cassandra&lt;/a&gt;, qu'il présente comme une base clé-valeur (!). Je trouve que le speaker ne sait pas trop sur quel pied danser entre présentation technique ou plus globale. On retiendra que pour fonctionner efficacement de façon distribuée, ces bases font une entorse au principe &lt;a href="http://fr.wikipedia.org/wiki/Transaction_informatique"&gt;ACID&lt;/a&gt;. Je resterai avec mes interrogations, notemment sur les performances de Hadoop en lecture...&lt;br /&gt;&lt;h3&gt;DevOps&lt;/h3&gt;&lt;br /&gt;J'ai entendu ça et là des choses sur le mouvement &lt;a href="http://devops.fr/"&gt;DevOps&lt;/a&gt;. En se moment, nous faisons beaucoup de soutien à la production au travail et ce serqit bien d'améliorer l'exploitation du projet. Je pense que l'idée forte développée au cours de cette session est qu'il faut considérer les exploitants comme des utilisateurs à part entière de l'application. Dans la mouvance Lean, une fonctionnalité ne devrait être considérée comme terminée que lorsqu'elle est déployée en production. Pour le soutien, les développeurs et les exploitants devraient avoir les mêmes outils et accès aux mêmes informations. Pour cela, il faudrait déjà simplement que les acteurs des deux mondes commencent à se parler. Le speaker est intéressant. Il semble très impliqué dans le mouvement DevOps. Il lance évidemment quelques trolls contre les développeurs, ce qui donne lieu à quelques débats très animés (alors JMX, c'est le bien ou non ?).&lt;br /&gt;&lt;br /&gt;C'était une gentille journée que ce Mix-IT ! Merci aux organisateurs. Je n'ai pas nommé les speakers mais je vous invite à aller voir sur le site du &lt;a href="http://www.mix-it.fr/"&gt;Mix-IT&lt;/a&gt; pour de plus amples informations.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-135491718576375790?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/135491718576375790/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/04/mixit.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/135491718576375790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/135491718576375790'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/04/mixit.html' title='MixIT'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-7308718285366204184</id><published>2011-03-27T23:45:00.002+02:00</published><updated>2011-03-28T00:00:12.888+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logiciel'/><title type='text'>ETL, piège à cons ?</title><content type='html'>Je travaille actuellement avec la &lt;i&gt;Rolls&lt;/i&gt; des ETL : Ab Initio. ETL est un acronyme pour &lt;i&gt;Extract Transform Load&lt;/i&gt;. Ces outils permettent d'extraire des données de sources diverses (bases de données, fichiers plats ou binaires,...) de transformer et / ou d'agréger ces données et de les injecter dans une autre source de données.&lt;br /&gt;D'un point de vue pratique ces outils prennent la forme d'un environnement de développement intégré dans lequel un développeur assemble des &lt;i&gt;boites&lt;/i&gt; réalisant les différentes opérations :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Extraction&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Transformation des champs&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Dédoublonnage&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Tri&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Agrégation&lt;/li&gt;&lt;br /&gt;&lt;li&gt;...&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&amp;Agrave; partir des graphes tracés, l'outil génère des exécutables pouvant être intégrés dans le système. Pour le besoin, c'est plutôt efficace.&lt;br /&gt;&lt;br /&gt;Qu'est-ce qui me dérange ? J'ai du mal à les voir comme des outils pour développeurs. Mes problèmes avec le concept d'ETL sont les suivants :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Couplage : le code est exécuté sur le serveur (dans le cas d'Ab Initio). Il y a un connecteur par &lt;i&gt;vendeur&lt;/i&gt; de base de données, il y a peu de possibilité d'abstraction.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;Il est très aisé de générer des graphe complexe difficiles à maintenir&lt;/li&gt;&lt;br /&gt;&lt;li&gt;C'est chiant à tester (tu mets un fichier en entrée, tu croise les doigts pour avoir une bonne sortie 1 minutes après)&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Je reconnais que les avantages sont indéniables. Ce n'est cependant pas un outil pour mois : je me sens tout nu sans mon XUnit !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-7308718285366204184?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/7308718285366204184/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/03/etl-piege-cons.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7308718285366204184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7308718285366204184'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/03/etl-piege-cons.html' title='ETL, piège à cons ?'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4918481198884975999</id><published>2011-03-02T07:10:00.001+01:00</published><updated>2011-03-02T07:11:53.174+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Ah, Windows...</title><content type='html'>Pour rappel, je suis toujours en train de d&amp;eacute;velopper mon premier &lt;a href="http://romscodecorner.blogspot.com/2011/01/projet-personnel.html"&gt;projet perso en python&lt;/a&gt;. &amp;Ccedil;a avance plut&amp;ocirc;t bien car j'ai releas&amp;eacute; la premi&amp;egrave;re version ! Quelle bonne surprise, j'ai plein de probl&amp;egrave;mes de cract&amp;egrave;res accentu&amp;eacute; sous Windows... Il faut que je me fasse un tracker.&lt;br /&gt;J'aimerais le distribuer mais je me heurte a quelques soucis :&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;Le mod&amp;egrave;le de donn&amp;eacute;es est tr&amp;egrave;s sp&amp;eacute;cifique&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;Ce n'est pas internationalis&amp;eacute;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;&amp;Ccedil;a ne respecte pas les standards de distribution Python&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;et en plus le code de l'IHM est d&amp;eacute;gueulasse (ben oui, je d&amp;eacute;couvrais !). J'ai donc encore pas mal de travail.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-4918481198884975999?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4918481198884975999/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/03/ah-windows.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4918481198884975999'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4918481198884975999'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/03/ah-windows.html' title='Ah, Windows...'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-6607899653454935837</id><published>2011-02-22T23:02:00.002+01:00</published><updated>2011-02-22T23:13:15.345+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='livre'/><title type='text'>Merci pour l'héritage</title><content type='html'>Je viens de terminer le livre de Michael Feathers "&lt;a href="http://www.amazon.fr/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052/ref=sr_1_1?ie=UTF8&amp;qid=1298410635&amp;sr=8-1"&gt;Working Effectively With Legacy Code&lt;/a&gt;". Ce livre donne des pistes pour travailler sur du code d&amp;eacute;pourvu de tests unitaires, l'objectif &amp;eacute;tant de d&amp;eacute;velopper suffisamment de tests unitaires pour pouvoir faire &amp;eacute;voluer le code.&lt;br /&gt;Cette probl&amp;eacute;matique n'est pas triviale. En effet, l'int&amp;eacute;ret d'une pratique comme le TDD est que le code est construit pour &amp;ecirc;tre test&amp;eacute; ce qui permet de faire &amp;eacute;voluer en toute s&amp;eacute;curit&amp;eacute; le design du syst&amp;egrave;me.&lt;br /&gt;&lt;br /&gt;Que trouve-t-on quand on doit faire &amp;eacute;voluer l'h&amp;eacute;ritage (legacy) de plusieurs ann&amp;eacute;es d&amp;eacute;veloppement en SSII :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;    &lt;li&gt;de grosses classes / fichiers ;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;de grosses fonctions ;&lt;/li&gt;&lt;br /&gt;    &lt;li&gt;un couplage fort entre les composants, comme du code m&amp;eacute;tier appelant directement une base de donn&amp;eacute;es (merci le Pro*C !).&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;Les techniques propos&amp;eacute;es dans le livre visent &amp;agrave; r&amp;eacute;duire le couplage pour permettre d'&amp;eacute;crire une couverture suffisantede TU.&lt;br /&gt;&lt;br /&gt;Le point fort d'apr&amp;egrave;s moi est d'adopter un point de vue tr&amp;egrave;s pragmatique : bien souvent, on intervient sur du vieux code pour faire une corerction ou une simple &amp;eacute;volution. Le budget est rarement propice &amp;agrave; une refonte globale du design du syst&amp;egrave;me. M. Feathers ne propose pas de changer du code critiquable en code parfait mais bien de se donner les moyen d'intervenir efficacement de mani&amp;egrave;re s&amp;eacute;curis&amp;eacute;e. Ainsi, plusieurs solutions propos&amp;eacute;es pr&amp;eacute;sentent des entorses au principe d'encapsulation*.&lt;br /&gt;&lt;br /&gt;Pour moi, ce livre est un &lt;i&gt;must read&lt;/i&gt; pour tout d&amp;eacute;veloppeur professionnel tant les situations d&amp;eacute;crites font partie de notre auotidien. On le vaincra, ce mauvais code !&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Je conseillerais aux puristes de l'encapsulation d'essayer Python, &amp;ccedil;a les d&amp;eacute;tendra (ou le contraire).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-6607899653454935837?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/6607899653454935837/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/02/merci-pour-lh.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6607899653454935837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6607899653454935837'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/02/merci-pour-lh.html' title='Merci pour l&apos;h&amp;eacute;ritage'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-1305432649578201617</id><published>2011-02-12T23:52:00.001+01:00</published><updated>2011-02-12T23:54:33.649+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Le bug du ls</title><content type='html'>Difficile vendredi avec un dépannage imprévu en production.&lt;br /&gt;&lt;br /&gt;Une erreur sur un ls : arg list too long... Comment ?&lt;br /&gt;&lt;br /&gt;Il semblerait qu'il y ait une légère limitation à ls notre HP-UX. Prenez un répertoire dont le chemin est stocké dans une variable $REPERTOIRE et mettez-y 28000 fichiers représentant 1 To de données...&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;ls -l $REPERTOIRE/*.txt&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;ne marche pas&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;cd $REPERTOIRE&lt;br /&gt;ls -l *.txt&lt;br /&gt;cd -&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Marche...&lt;br /&gt;&lt;br /&gt;A qui j'envoie la notification de bug ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-1305432649578201617?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/1305432649578201617/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/02/le-bug-du-ls.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1305432649578201617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1305432649578201617'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/02/le-bug-du-ls.html' title='Le bug du ls'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-5383583120364202931</id><published>2011-02-04T19:05:00.003+01:00</published><updated>2011-02-04T19:11:18.503+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Craftsmanship'/><title type='text'>Le software craftsmanship c'est quoi</title><content type='html'>Je suis fatigué alors je vais faire un article bookmark.&lt;br /&gt;&lt;br /&gt;Robert Martin a récemment fait une déclaration à ce sujet pour mettre tout le monde d'accord.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cleancoder.posterous.com/software-craftsmanship-things-wars-commandmen"&gt;C'est là&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ça vend du rêve, non ?&lt;br /&gt;&lt;br /&gt;Plus sur le site "&lt;a href="http://www.touilleur-express.fr/2011/01/20/craftsmanship/"&gt;Le Touilleur Express&lt;/a&gt;"&lt;br /&gt;&lt;br /&gt;Bref, ça commence à prendre :). À quand un gros rassemblement de craftsmen en France ?&lt;br /&gt;&lt;br /&gt;PS : sur le Yammer de ma boite (SSII internationale), le &lt;a href="http://manifesto.softwarecraftsmanship.org/"&gt;manifesto&lt;/a&gt; semble avoir fait beaucoup rire parmis les agilistes... S'ils savaient ce que je pense de Scrum...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-5383583120364202931?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/5383583120364202931/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/02/le-software-craftsmanship-cest-quoi.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5383583120364202931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5383583120364202931'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/02/le-software-craftsmanship-cest-quoi.html' title='Le software craftsmanship c&apos;est quoi'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-3173338239764981433</id><published>2011-01-25T11:07:00.001+01:00</published><updated>2011-01-25T11:07:33.605+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Projet personnel</title><content type='html'>Ca fait un moment que je n'avais pas écrit. Je suis très occupé. Si, je le jure.&lt;br /&gt;&lt;br /&gt;En ce moment, je développe une petite applicaiton CRUD pour le magazine Grandir Autrement. Il s'agit d'une application pour gérer la liste des abonnés du magazine, effectuer un export vers un service de routage, créer, supprimer et modifier des abonnés. Ca avance petit à petit, j'en suis assez content. Voici les choix que j'ai fait :&lt;br /&gt;&lt;br /&gt;*Application de bureau, à l'ancienne, car il n'y avait pas besoin de le rendre accessible simultanément à plusieurs personnes.&lt;br /&gt;*Python&lt;br /&gt;*Sqlite pour la base de données&lt;br /&gt;*wxWidget pour l'interface graphique.&lt;br /&gt;&lt;br /&gt;Pour l'instant, je ne regrette aucun de ces choix. Au boulot, j'ai l'impression que faire du logiciel est un gros truc complexe, même si on travaille de temps en temps de façon Agile. Là, tout se fait simplement. Python y est pour beaucoup, c'est très relaxant pour un habitué de Java...&lt;br /&gt;&lt;br /&gt;Essayez de faire une liste en Java. Vous devez choisir le bon type concret, spécifier le type des éléments, instancer... En Python, créez une liste vide et ajoutez des élements. Cela prend au-moins 2 fois moins de lignes.&lt;br /&gt;&lt;br /&gt;Sqlite : une base de données qui ne prend pas là tête. On se connecte, on crée le modèle et c'est parti. La base de données est stockée dans un fichier local. Sqlite 3 est intégré à Python, génial, non ?&lt;br /&gt;&lt;br /&gt;Enfin, wxWidget est une libraririe multi-plateforme d'interfaces graphiques écrite en C++. wxPython est le binding Python. Je suis un novice en UI. Mon a priori est que c'est plutôt lourd à réaliser. En vérité... c'est effectivement le cas. Toutefois, wxWidget est assez simple d'utilisation et après un minimum de galère on arrive à placer des widget à peu près correctement. J'ai encore pas mal de boulot mais je devrais sortir quelque chose pour la deadline à la fin du mois.&lt;br /&gt;&lt;br /&gt;A peu près tout le dev est dirigé par les tests... c'est un peu fatiguant mais ça permet de moins vaire de validation à la main :).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-3173338239764981433?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/3173338239764981433/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2011/01/projet-personnel.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/3173338239764981433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/3173338239764981433'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2011/01/projet-personnel.html' title='Projet personnel'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8542522444265740869</id><published>2010-11-26T12:00:00.001+01:00</published><updated>2010-11-26T12:00:09.360+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buzz'/><title type='text'>Une base de données tentaculaire</title><content type='html'>J'ai été convié cette semaine à un forum sur les nouvelles technologies Oracle concernant le Data Warehousing et la Business Intelligence. Encore une fois nous avons eu le droit à une présentation du dernier produit Oracle dans le domaine de la base de données relationnelle : &lt;a href="http://www.oracle.com/fr/products/database/exadata/index.html"&gt;Exadata&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Il s'agit d'une offre software et hardware pour afficher un maximum de performance et de disponibilité.&lt;br /&gt;&lt;br /&gt;Un rack est constitué de serveurs d'instance et de cellules de stockage reliés par un lien à 40 Gb/s (&lt;a href="http://fr.wikipedia.org/wiki/InfiniBand"&gt;InfiniBand&lt;/a&gt;). Les serveurs sont organisés en clusters (RAC) et le stockage est réalisé par ASM.&lt;br /&gt;&lt;br /&gt;Outre le débit proposé entre l'instance et les données qui est déjà hallucinant, la véritable valeur ajoutée se situe au niveau des cellules de stockage qui sont de vrais petit serveurs à elles seules. Voilà ce qui est proposé :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Le &lt;span style="font-weight: bold;"&gt;Smart Scan&lt;/span&gt; : les données demandées par la requête sont filtrées au niveau du stockage pour ramener un minimum de déchets à l'instance. Des calculs plus avancés (décisionnels) peuvent également être pris en charge niveau stockage.&lt;/li&gt;&lt;li&gt;La &lt;span style="font-weight: bold;"&gt;compression par colonne&lt;/span&gt; : ils annoncent des taux de compression de 10 à 40 (ce n'est &lt;span style="font-weight: bold;"&gt;pas&lt;/span&gt; des pourcentages).&lt;/li&gt;&lt;li&gt;Une &lt;span style="font-weight: bold;"&gt;pseudo indexation&lt;/span&gt; automatique qui fait que les données sont organisées par blocs dont les valeurs minimales et maximales sont connues des cellules de stockage. Il est annoncé qu'une application migrant vers Exadata verra beaucoup de ses index devenir inutiles.&lt;/li&gt;&lt;/ul&gt;Je ne parle pas du cache de second niveau réalisé par des flash cards ni de la redondance en terme de machine, stockage et liaison car cela me parait plutôt classique pour une configuration RAC + ASM + baie SAN.&lt;br /&gt;&lt;br /&gt;Ils ont clairement mis le paquet pour offrir un «killer product».&lt;br /&gt;&lt;br /&gt;Enfin, les coûts de migrations sont minimes pour une application déjà sur une BdD Oracle puisque le système est vu comme une base 11gR2. Si tout va bien, il suffit de passer à la caisse et de constater que les performances sont monstrueuses :). J'ai hâte d'être convié à un &lt;span style="font-style: italic;"&gt;proof of concept&lt;/span&gt; !&lt;br /&gt;&lt;br /&gt;À noter que la même chose avec WebLogic server, via le produit &lt;a href="http://www.oracle.com/us/products/middleware/exalogic/index.html"&gt;Exalogic&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;L'avenir est intéressant...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8542522444265740869?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8542522444265740869/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/11/une-base-de-donnees-tentaculaire.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8542522444265740869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8542522444265740869'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/11/une-base-de-donnees-tentaculaire.html' title='Une base de données tentaculaire'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-710401824470338455</id><published>2010-11-25T06:42:00.003+01:00</published><updated>2010-11-25T06:53:50.281+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><title type='text'>La culture du développeur</title><content type='html'>Sur mon nouveau projet, je fais un bon en arrière de quelques années en redécouvrant la programmation en C.&lt;br /&gt;&lt;br /&gt;J'en gardais de mauvais souvenir depuis l'école d'ingénieur : les erreurs de segmentations fréquentes, le sentiments de ne pas savoir ce que le code faisait, la gestion des pointeurs et l'obscurantisme des fichiers Makefile.&lt;br /&gt;&lt;br /&gt;Pourtant, j'éprouve moins de difficultés que je ne prévoyais. Est-ce que c'est l'expérience en tant que &amp;laquo;pro&amp;raquo; qui m'a apporté une vision globale de la programmation ou la curiosité qui m'a fait fouiner dans les sources de certains logiciels libre ? J'ai l'impression que le C est un langage simple car mettant en jeu peu de concepts comme il y en a en C++, Java et même Python et que rien ne peux m'arrêter. C'est encourageant de voir à quel point l'expérience permet d'avancer en terrain connu malgré les nouveautés et un contexte différent.&lt;br /&gt;&lt;br /&gt;Je vais me lancer dans un programme en Pro*C multithreadé... même pas peur !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-710401824470338455?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/710401824470338455/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/11/la-culture-du-developpeur.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/710401824470338455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/710401824470338455'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/11/la-culture-du-developpeur.html' title='La culture du développeur'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4278871822501317600</id><published>2010-10-24T21:11:00.002+02:00</published><updated>2010-10-24T21:31:18.943+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='langage'/><title type='text'>Erlang</title><content type='html'>On entend beaucoup parler d'Erlang en ce moment. J'ai relu un article qui parlait d'&lt;a href="http://www.ejabberd.im/"&gt;Ejabberd&lt;/a&gt; (serveur XMPP en Erlang), un autre sur &lt;a href="http://couchdb.apache.org/"&gt;CouchDB&lt;/a&gt; (base de données orienté documents), on en parle souvent sur &lt;a href="http://www.infoq.com/"&gt;InfoQ&lt;/a&gt;. J'ai même vu un livre dessus dans le rayon informatique de la Fnac (aux éditions &lt;a href="http://www.pearson.fr//"&gt;Pearson&lt;/a&gt;, j'imagine que c'est le seul ouvrage en Français :)).&lt;br /&gt;&lt;br /&gt;C'est un langage fonctionnel créé par Ericsson il y a une vingtaine d'année. Il est donc très orienté réseau. Si j'ai bien compris, il s'adapte naturellement à des évolutions hardware (ajout de cpu, voir de cluster), supporte très bien les augmentation de charge et est super robuste. On en parle beaucoup en ce moment puisque beaucoup d'application cloud l'utilisent pour faire communiquer des machines.&lt;br /&gt;&lt;br /&gt;Le code est exécuté sur une machine virtuelle. Le tout est open source et peut être récupéré sur le&lt;a href="http://www.erlang.org/"&gt; site officiel&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Cependant, c'est un langage qui est considéré comme "exotique". C'est vrai je n'ai pas une culture qui me permet de comprendre ça (pour l'instant):&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;%% quicksort:qsort(List)&lt;br /&gt;%% Trie une liste d'éléments&lt;br /&gt;-module(quicksort).&lt;br /&gt;-export([qsort/1]).&lt;br /&gt;&lt;br /&gt;qsort([]) -&gt; [];&lt;br /&gt;qsort([Pivot|Reste]) -&gt;&lt;br /&gt;   qsort([ X || X &lt;- Reste, X &lt;&gt;= Pivot]).&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Source : &lt;a href="http://fr.wikipedia.org/wiki/Erlang_%28langage%29"&gt;wikipedia&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Mais ça reste intéressant par les temps qui courent.&lt;br /&gt;&lt;br /&gt;A votre avis, ça vaut combien un expert Erlang sur le marché ?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-4278871822501317600?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4278871822501317600/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/erlang.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4278871822501317600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4278871822501317600'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/erlang.html' title='Erlang'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-918699892964490514</id><published>2010-10-21T22:14:00.002+02:00</published><updated>2010-10-21T22:19:12.943+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><title type='text'>Nouveau projet...</title><content type='html'>Fin d'une époque, après 3 ans à intégrer une solution d'OSS, me voilà parti sur un projet de data warehouse... Changement total de perspective !&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Appli critique&lt;/li&gt;&lt;li&gt;Des To de données&lt;/li&gt;&lt;li&gt;De l'ETL Ab Initio classos&lt;/li&gt;&lt;li&gt;Encore des To de données&lt;/li&gt;&lt;li&gt;Du Pro*C&lt;/li&gt;&lt;li&gt;Des To de données&lt;/li&gt;&lt;li&gt;De l'Oracle en intraveineuse&lt;/li&gt;&lt;li&gt;Il te restera bien un peu de To de données, non ?&lt;/li&gt;&lt;/ul&gt;Pas d'agilité, mais beaucoup à faire a priori. Je vais bien pouvoir caler un peu de tests unitaires dans tout ça...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-918699892964490514?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/918699892964490514/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/nouveau-projet.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/918699892964490514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/918699892964490514'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/nouveau-projet.html' title='Nouveau projet...'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8481512112376897942</id><published>2010-10-21T09:00:00.000+02:00</published><updated>2010-10-21T09:00:08.906+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Craftsmanship'/><title type='text'>Craftsmanship</title><content type='html'>Un courant dont on parle de plus en plus dans le monde de l'agilité est celui du &lt;a href="http://en.wikipedia.org/wiki/Software_craftsmanship"&gt;software craftsmanship&lt;/a&gt;. C'est un point de vue d'avantage tourné vers les aspects techniques qui apparaissent comme parents pauvres de la conception de l'agilité aujourd'hui orienté gestion de projet et de ses ressources.&lt;br /&gt;&lt;br /&gt;Les valeurs de se courant sont énoncées dans un &lt;a href="http://manifesto.softwarecraftsmanship.org/"&gt;manifeste&lt;/a&gt; qui se veut être un complément du manifeste agile. Le but avoué est de viser l'excellence technique, de devenir meilleur développeur, d'apprendre sans cesse. Le but n'est plus de livrer un logiciel qui marche mais un logiciel globalement bien construit. Un peu si on disait "bien sûr que le logiciel marche, mais dites moi plutôt ce que vous pensez de mon code source" !&lt;br /&gt;&lt;br /&gt;On peut se demander pourquoi un tel mouvement émerge, alors que l'agilité est au départ orienté vers la technique, avec des pratiques comme la programmation en binôme et surtout le développement dirigé par les tests, lié à eXtrem Programming. Peut-être est-ce en réponse au fait qu'aujourd'hui XP est un peu oublié au profit de Scrum, qui a ceci de pratique qu'elle ne spécifie aucune pratique de développement ! Est-ce bien réaliste de demander à l'équipe de réaliser des livraison incrémentales installables en production sans un filet de sécurité offert par les tests unitaire et une non reg automatisée ? Je l'ai fait, il faut aimer l'adrénaline !&lt;br /&gt;&lt;br /&gt;Ce principe d'artisanat (crafstmanship) prend une dimension aujourd'hui une dimension "économique" avec l'émergence des offres PaaS comme l'AppEngine de Google. Aujourd'hui, le développeur peut directement mettre son application à disposition avec une faible mise de départ. Plus besoin de couteuses études et d'acheter un serveur à plusieurs kilo euros. On développe, on déploie, on fait un peu de promotion et on voit si ça marche. Si ça ne marche pas, on abandonne et on cherche une autre idée. Et boum, tout un pan du management IT vient de tomber (enfin je plaisante, mais il faut réaliser que les choses vont peut-être changer).&lt;br /&gt;&lt;br /&gt;Personnellement, les valeurs de ce mouvement me plaisent parce qu'elles remettent le développeur au centre du système. C'est la personne qui crée la valeur et il faut la motiver à devenir meilleure professionnellement. J'en ai marre de voir des gens qui s'arrêtent de développer parce que leur métier n'est pas reconnu, voire littéralement méprisé (oui, je veux parler de l'offshore).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8481512112376897942?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8481512112376897942/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/craftsmanship.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8481512112376897942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8481512112376897942'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/craftsmanship.html' title='Craftsmanship'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-6100159719977034331</id><published>2010-10-20T09:11:00.002+02:00</published><updated>2010-10-20T09:12:32.568+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Craftsmanship'/><title type='text'>Présenation Software Craftsmanship</title><content type='html'>L'artisanat, la première entreprise IT ?&lt;br /&gt;&lt;br /&gt;Voici une belle présenation du mouvement "Software Craftsmanship". Si vous avez un peu de temps (1 h).&lt;br /&gt;&lt;br /&gt;http://www.infoq.com/presentations/Software-Craftsmanship-Beyond-The-Hype&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-6100159719977034331?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/6100159719977034331/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/presenation-software-craftsmanship.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6100159719977034331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6100159719977034331'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/10/presenation-software-craftsmanship.html' title='Présenation Software Craftsmanship'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-6255268801312996050</id><published>2010-09-09T22:51:00.003+02:00</published><updated>2010-09-09T23:00:27.760+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><title type='text'>Révélation sur couriel</title><content type='html'>Attention, ce qui suit révèle ma stupidité.&lt;br /&gt;&lt;br /&gt;Mon client a des serveurs de production virtuels, naturellement hébergés sur un ESX VMWare. Je ne comprenais pas pourquoi alors que le serveur était au repos (base de données hébergée arrêtée), la mémoire libre indiquée par top était de 1 Go sur 8 Go alloués. Je ne comprenais pas pas pourquoi cette même mémoire ne variait pas quand la base était lancée... Jusqu'à un certain moment.&lt;br /&gt;&lt;br /&gt;Du coup, j'ai essayé de trouver de l'info. En écrivant un mail pour la liste de distribution des "techos", j'ai eu la révélation... Hey, mais si l'ESX allouait la mémoire de façon dynamique ? Est-ce ce que ce ne serait pas un des buts de la virtualisation ?&lt;br /&gt;&lt;br /&gt;J'étais tellement focalisé sur le fait que "les VM c'est que pour nous arnaqués sur les machines qu'on demande" que j'avais oublié de réfléchir.&lt;br /&gt;&lt;br /&gt;J'ai un peu honte... Mais je suis rassuré car ça fait un problème d'écarté :). &lt;br /&gt;&lt;br /&gt;&amp;Ccedil;a ne m'a pas empêché d'avoir une dure journée... la messagerie instantanée entre client et fournisseur n'est pas une bonne idée...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-6255268801312996050?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/6255268801312996050/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/09/revelation-sur-couriel.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6255268801312996050'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6255268801312996050'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/09/revelation-sur-couriel.html' title='Révélation sur couriel'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8517770759808395215</id><published>2010-09-02T15:01:00.000+02:00</published><updated>2010-09-02T15:01:00.748+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plsql'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Java VS PL/SQL</title><content type='html'>Depuis que je bosse je fais beaucoup de PL/SQL. Le PL/SQL c'est le langage procédural pour les bases de données Oracle qui reprend grosso modo la syntaxe SQL. Mais bon, c'est vieux. Les structures de données sont toutes pourries, le langage n'est pas sensible à la casse, la longueur des noms est limitée, les valeurs des variables ne sont pas isolées lorsqu'on joue le code plusieurs fois.&lt;br /&gt;&lt;br /&gt;Par contre, ça va vite, enfin j'imagine ou j'espère parce que c'est Oracle et il sait ce qui est bon pour lui...&lt;br /&gt;&lt;br /&gt;Depuis quelques temps, je me demande si ça ne pourrait pas être mieux d'implmenter certains traitements en Java. Est-ce vraiment moins performant ? Est-ce que la coolitude d'un langage un peu actuel peut compenser un manque de performance ?&lt;br /&gt;&lt;br /&gt;En plus, on fait des tests unitaires avec JUnit sur les procédures PL/SQL :)&lt;br /&gt;&lt;br /&gt;J'aimerai bien avoir des avis là-dessus mais je ne me fais pas d'illusion, je crois que le nombre de lecteur est passé sous la barre de zéro.&lt;br /&gt;&lt;br /&gt;PS : je sais, Java c'est aussi à Oracle&lt;br /&gt;PPS : SQL*Plus, c'est naze pour faire des csv...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8517770759808395215?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8517770759808395215/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/09/java-vs-plsql.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8517770759808395215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8517770759808395215'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/09/java-vs-plsql.html' title='Java VS PL/SQL'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-1293573353491533045</id><published>2010-09-01T15:00:00.000+02:00</published><updated>2010-09-01T15:00:09.107+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Logiciel'/><title type='text'>Ben ça, ça tombe bien alors</title><content type='html'>&amp;Ccedil;a vaut bien un post !&lt;br /&gt;&lt;br /&gt;Vim 7.3 est sorti &amp;rarr; &lt;a href="http://www.vim.org"&gt;par l&amp;agrave;&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;C'est juste le meilleur éditeur de texte. Mes documents Word contiennent plein de ":w" maintenant !&lt;br /&gt;&lt;br /&gt;Oui c'est très objectif.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-1293573353491533045?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/1293573353491533045/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/09/ben-ca-ca-tombe-bien-alors.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1293573353491533045'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/1293573353491533045'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/09/ben-ca-ca-tombe-bien-alors.html' title='Ben ça, ça tombe bien alors'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-7223306782861905336</id><published>2010-08-30T01:17:00.003+02:00</published><updated>2010-08-30T01:21:05.743+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><title type='text'>Javascript</title><content type='html'>Il y a une époque, tout le monde considérait que le JavaScript, c'était sale et globalement pourri. Maintenant que Google est passé par là et que la navigation sur Internet nécessite un CPU 4 cœurs pour un minimum de confort, le paradigme a un peu changé.&lt;br /&gt;&lt;br /&gt;Alors pour faire un site pour madame, je m'y mets.&lt;br /&gt;&lt;br /&gt;Au départ à l'ancienne, avec les évènements imbriqués dans le HTML (pas taper, merci).&lt;br /&gt;&lt;br /&gt;Puis j'ai découvert le concept de &lt;a href="http://www.pompage.net/pompe/javascript-non-intruisif-chapitre-1/"&gt;JavaScript non-intrusif&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Et là, ça commence à être classe !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-7223306782861905336?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/7223306782861905336/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/javascript.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7223306782861905336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7223306782861905336'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/javascript.html' title='Javascript'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-5372212154958349512</id><published>2010-08-29T10:00:00.001+02:00</published><updated>2010-08-29T10:00:02.838+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Vous tremblez, Néron.</title><content type='html'>Il y a bien un truc que je déteste maintenant que je suis ultra fan du TDD, c'est que les gens de l'équipe développent sans mettre à jour les tests. Tu reviens sur ton code pour ajouter un truc, tu lances les tests et bam, t'as le droit de débugger ta suite de test.&lt;br /&gt;&lt;br /&gt;Alors, je me suis enfin décidé à les mettre dans le build &amp;gt;_&amp;lt;.&lt;br /&gt;&lt;br /&gt;On va bien se marrer.&lt;br /&gt;&lt;br /&gt;PS : encore faut-il regarder le résultat du build... vive le développement informatique...&lt;br /&gt;PPS : allez, je vais mettre checktyle aussi. On va bien se fendre la gueule !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-5372212154958349512?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/5372212154958349512/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/vous-tremblez-neron.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5372212154958349512'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5372212154958349512'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/vous-tremblez-neron.html' title='Vous tremblez, Néron.'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-9159552308243761072</id><published>2010-08-28T02:10:00.003+02:00</published><updated>2010-08-28T10:05:04.706+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Window Maker'/><title type='text'>Premier truc cool dans le monde du libre!</title><content type='html'>J'ai avancé sur la dockapp wmauda. Ca marche ! Avec dbus et tout !!!&lt;br /&gt;&lt;br /&gt;Le plus long était de savoir pourquoi le logo ne s'affichait pas dans la doc app... c'est parce qu'il fallait forcer le depth à 24 ! J'ai bien mis du temps pour comprendre ça.&lt;br /&gt;&lt;br /&gt;Un peu de refactoring et de packaging et je pourrai diffuser.&lt;br /&gt;&lt;br /&gt;Si ça ce trouve, les modifs sont faites depuis longtemps dans les distrib mais bon, c'est fun quand meme !&lt;br /&gt;&lt;br /&gt;Je vais me coucher...&lt;br /&gt;&lt;br /&gt;Édition : après vérification, il semble que je sois arrivé à peu près à la version empaquetée dans Debian. Je vais donc m'arrêter là je crois. Ce qui est marrant c'est que nos codes sont très similaire... à part que le mien allait être plus propre ;).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-9159552308243761072?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/9159552308243761072/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/premier-truc-cool-dans-le-monde-du.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/9159552308243761072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/9159552308243761072'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/premier-truc-cool-dans-le-monde-du.html' title='Premier truc cool dans le monde du libre!'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-9012152835716711087</id><published>2010-08-05T07:21:00.005+02:00</published><updated>2010-08-05T07:26:17.187+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='Window Maker'/><title type='text'>Nouveau projet (perso)</title><content type='html'>Je me suis dit que pour m'amuser j'allais faire fonctionner la dockapp wmauda avec audacious 2.3 en utilisant dbus pour communiquer avec le lecteur.&lt;br /&gt;&lt;br /&gt;Quand on n'a pas fait de C depuis longtemps c'est un peu la douche froide et après  avoir galéré pendant 2 - 3h, je commence à avoir une idée de ce qu'il faut faire :) (merci le code de audtool en tout cas :)).&lt;br /&gt;&lt;br /&gt;Dans un second temps, j'essaierai de voir si on peut pas coder la dockapp en python. Communiquer sur dbus en python ou en C, ça n'a RIEN à voir :D.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-9012152835716711087?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/9012152835716711087/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/nouveau-projet-perso.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/9012152835716711087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/9012152835716711087'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/08/nouveau-projet-perso.html' title='Nouveau projet (perso)'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8174855519906281472</id><published>2010-06-03T00:38:00.001+02:00</published><updated>2010-06-03T00:41:06.979+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><title type='text'>Uncle Bob</title><content type='html'>Je reviens d'une formation extrem programming. C'était bien cool.&lt;br /&gt;&lt;br /&gt;J'ai dégoté une &lt;a href="http://www.infoq.com/presentations/Robert-C.-Martin-Bad-Code"&gt;conférence de Robert C. Martin&lt;/a&gt; dont je conseille à tout développeur de lire au moins une fois "coder proprement".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8174855519906281472?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8174855519906281472/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/06/uncle-bob.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8174855519906281472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8174855519906281472'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/06/uncle-bob.html' title='Uncle Bob'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-7093279835598536634</id><published>2010-05-03T15:25:00.001+02:00</published><updated>2010-05-03T15:25:00.324+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Agile'/><category scheme='http://www.blogger.com/atom/ns#' term='Documentation'/><title type='text'>Manuel d'installation</title><content type='html'>Au boulot, le dernière livraison majeure que j'ai faite était plutôt tranquile, merci les pratiques agiles et l'intégration continue. J'ai pu me concentrer sur l'élément de documentation le plus important : le manuel d'installtion. En effet, vous pouvez livrer le meilleur soft du monde, si l'installation est hasardeuse, votre travail sera tout de suite regardé d'un mauvais &amp;oelig;il.&lt;br /&gt;&lt;br /&gt;Dans mon jeune temps, je pensais que les personnes qui installaient les softs étaient des informaticiens cheuvronnés. Des gens qui savent éditer un fichier avec VI, chercher les informations de configuration sur le système et la base dedonnées et lancer des scripts shell. Grossière erreur :&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;Parfois, la qualification est réalisée par des équipes spécialisées, on parle de Tierce Recette Applicative (TRA). Il ne faut pas penser que ces équipes sont faites de geeks développeurs hardcore. Les personnes de ce genre sont embauchées pout faire du développement ! D'un autre côté, pour faire de la recette, il vaut mieux embaucher des gens avec des connaissances métier, non ?&lt;/li&gt;&lt;br /&gt;&lt;li&gt;D'autres fois, les équipes qui installent ne font que ça tous les jours (j'en ai vu). Je ne pense pas que ces gens, mêmes s'ils sont très compétents, aient envie de se taper des dizaines de fichiers de configuration pour installer un soft. La solution livrée est censée être intégrée, non ?&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;D'un autre côté, lorsque la procédure d'installation est fastidieuse, il est d'autant plus complexe de la documenter de façon satisfaisante. Comme c'est quelque chose de maîtrisé par l'équipe de développement, on a facilement tendance à oublier des étapes...&lt;br /&gt;&lt;br /&gt;Alors, voilà mon parti pris: améliorer l'intégration de la procédure d'installation, que ce soit en terme logiciel et documentaire. Idéalement, l'installation d'un logiciel doit pouvoir se faire depuis une seule machine en ne tapant qu'une commande, sans éditer de fichier. Mon manuel d'install est light, il n'expose que les prérequis logiciel, dit ou doivent être déposé les archives et donne LA commande à lancer. Les paramètres de l'environnement de prod sont dans des champs du document qui sont mis à jour par une macro. Perte de temps minimal pour la mise à jour.&lt;br /&gt;&lt;br /&gt;Je n'ai même pas été contacté pour faire une assistance à la mise en production.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-7093279835598536634?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/7093279835598536634/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/05/manuel-dinstallation.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7093279835598536634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/7093279835598536634'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/05/manuel-dinstallation.html' title='Manuel d&apos;installation'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-8387458777966652136</id><published>2010-05-02T14:51:00.001+02:00</published><updated>2010-05-02T14:52:43.224+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Latex'/><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><title type='text'>Latex on my nerves</title><content type='html'>Finally, I see that I got bored writing a weblog in English. Let's switch to French, the best language in the world.&lt;br /&gt;Surtout que j'écris tout le temps en Anglais pour le boulot. C'est fatiguant.&lt;br /&gt;&lt;br /&gt;Il y a quelques temps déjà, j'ai aidé ma belle s&amp;oelig;ur pour un devoir de maths. &amp;Ccedil;a a été plus difficile que prévu de calculer des coordonnées de vecteurs (snif, c'et loin).&lt;br /&gt;J'ai terminé assez tard à la maison et je me suis demandé comment transmettre les résultats. Voyons voir, quelle est la façon la plus élégante pour un développeur de rédiger des formules mathématiques ? &lt;a href="http://fr.wikipedia.org/wiki/LaTeX"&gt;Latex&lt;/a&gt; bien sûr !&lt;br /&gt;&lt;br /&gt;Le problème est que je suis un vrai noob en Latex. J'ai passé toute ma soirée à chercher les imports de modules manquants et a régler mes problèmes en feuilletant mon livre (parce que je ne fais jamais de Latex, mais j'ai quand même un livre -_-'). Ce qui m'embête avec Latex, c'est qu'il faut être une espèce de mutant pour se rappeler tous les éléments de syntaxe. Peut-être que les profs d'enseignement supérieur sont des mutants, ça expliquerait des choses.&lt;br /&gt;&lt;br /&gt;D'autre part, je me demande pourquoi j'utilise encore un clavier AZERTY... Parce que passer son temps à écrire des antislashes et des accolades avec un tel clavier doit certainement être catalogué comme torture par Amnesty International. C'est assez frustrant quand il est 1:30 et qu'soit en train de taper des trucs comme:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;\begin{align}&lt;br /&gt;\left\{ \begin{aligned}&lt;br /&gt;x + 1 &amp;amp;= y + 4 \\&lt;br /&gt;\frac{y + 1}{3} &amp;amp;= x - 5&lt;br /&gt;\end{aligned} \right.&lt;br /&gt;...&lt;br /&gt;\end{allign}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Ensuite, je trouve que pour faire un document basique on a besoin de pas mal de modules. Je crois que sous Debian, je dois avoir installé près de 200 Mo de package rien que pour rédiger et formatter une lettre. Bon, ça ne concerne que moi mais... c'est un compilo quoi !!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-8387458777966652136?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/8387458777966652136/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/05/latex-on-my-nerves.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8387458777966652136'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/8387458777966652136'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/05/latex-on-my-nerves.html' title='Latex on my nerves'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-2623146896265271070</id><published>2010-03-02T23:15:00.001+01:00</published><updated>2010-03-02T23:15:49.797+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lol'/><title type='text'>Extreme Programing</title><content type='html'>That's how we should work...&lt;br /&gt;&lt;br /&gt;&lt;object width="425" height="344"&gt;&lt;param name="movie" value="http://www.youtube.com/v/kTYFsyFFfPs&amp;hl=fr_FR&amp;fs=1&amp;"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/kTYFsyFFfPs&amp;hl=fr_FR&amp;fs=1&amp;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-2623146896265271070?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/2623146896265271070/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/03/extreme-programing.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/2623146896265271070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/2623146896265271070'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/03/extreme-programing.html' title='Extreme Programing'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-6133666972808122810</id><published>2010-02-28T14:33:00.000+01:00</published><updated>2010-02-28T14:39:24.321+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='buzz'/><category scheme='http://www.blogger.com/atom/ns#' term='python'/><title type='text'>Having fun with Google Buzz</title><content type='html'>I've found that Google provides an API for Buzz. For fun, I've tried to begin desktop client using python.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_RXtBQxl7pWI/S4pw6nBAAZI/AAAAAAAAAwQ/gZ_-ItyEOZw/s1600-h/screen.png"&gt;&lt;img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 367px;" src="http://3.bp.blogspot.com/_RXtBQxl7pWI/S4pw6nBAAZI/AAAAAAAAAwQ/gZ_-ItyEOZw/s400/screen.png" alt="" id="BLOGGER_PHOTO_ID_5443287251838566802" border="0" /&gt;&lt;/a&gt;Unfortunately, it seems that only read access is provided by now. It works with RSS feeds. Finding my userid to build feed url was such a pain in the ass !&lt;br /&gt;&lt;br /&gt;References&lt;br /&gt;&lt;br /&gt;&lt;a href="http://code.google.com/intl/fr/apis/buzz/documentation/"&gt;API documentation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://feedparser.org/"&gt;Universal Feed Parser&lt;/a&gt;: Python lib to parse RSS feeds soooo easily!&lt;br /&gt;&lt;a href="http://buzz.googleapis.com/feeds/104198061226629001085/public/posted"&gt;My Buzz Feed&lt;/a&gt;, 'cause my life is so cool.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-6133666972808122810?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/6133666972808122810/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/02/having-fun-with-google-buzz.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6133666972808122810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6133666972808122810'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/02/having-fun-with-google-buzz.html' title='Having fun with Google Buzz'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_RXtBQxl7pWI/S4pw6nBAAZI/AAAAAAAAAwQ/gZ_-ItyEOZw/s72-c/screen.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-844595704265701677</id><published>2010-02-27T17:12:00.000+01:00</published><updated>2010-02-27T17:21:08.568+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Linux'/><category scheme='http://www.blogger.com/atom/ns#' term='Window Maker'/><title type='text'>Howto launch openoffice.org in Window Maker</title><content type='html'>I like &lt;a href="http://www.windowmaker.info/"&gt;Window Maker&lt;/a&gt; as a desktop manager. But sometimes, software developers don't like it as I do. That's the case for openoffice.org. It doen't know what graphic toolkit to use. You have to help it a bit.&lt;br /&gt;&lt;br /&gt;If you always want to launch OOO from a terminal then type&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;$ export OOO_FORCE_DESKTOP=gnome&lt;br /&gt;$ oocalc&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;and it could be a good idea to add the 1st line in your .bashrc.&lt;br /&gt;&lt;br /&gt;If you want to set it in WM menu, write as command:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;OOO_FORCE_DESKTOP=gnome oocalc&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;And it works !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-844595704265701677?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/844595704265701677/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/02/howto-launch-openofficeorg-in-window.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/844595704265701677'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/844595704265701677'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/02/howto-launch-openofficeorg-in-window.html' title='Howto launch openoffice.org in Window Maker'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-6761260872906999338</id><published>2010-02-17T19:00:00.000+01:00</published><updated>2010-02-17T19:21:14.137+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='shell'/><title type='text'>Weak coder review</title><content type='html'>Sometimes it's such a pain in the ass to figure out how your colleagues are weak developers. Worse, they believe they are too smart to ask for help.&lt;br /&gt;&lt;br /&gt;Here is the review of today's refactoring session on some ksh scripts.&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;#!/bin/ksh&lt;br /&gt;&lt;br /&gt;##########################&lt;br /&gt;## Variable definition&lt;br /&gt;##########################&lt;br /&gt;&lt;br /&gt;logInfo "Variable definition"&lt;br /&gt;&lt;br /&gt;SH_DIR=something&lt;br /&gt;BASE_DIR=something/else&lt;br /&gt;SCRIPT_DIR=other/stupid/path&lt;br /&gt;&lt;br /&gt;#############################&lt;br /&gt;##Functions&lt;br /&gt;#############################&lt;br /&gt;function sourceLogInitScript {&lt;br /&gt;. $SH_DIR/.logInit&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;################&lt;br /&gt;# Main&lt;br /&gt;################&lt;br /&gt;&lt;br /&gt;sourceLogInitScript&lt;br /&gt;&lt;br /&gt;#Other stupid code lines and comments&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;Unfortunately, logInfo is defined in .logInit as are variables BASE_DIR and SCRIPT_DIR. I guess it is too boring to have a look at a script where 50% of the functionality you are scripting is written. Of course, logInfo not found error is displayed at execution, but why giving a fucking damn at errors when you are testing your stuff??? Silly idea, right ?&lt;br /&gt;&lt;br /&gt;I avoid mentioning the comments that seem to be there to make the script look bigger and sooo hard to understand...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-6761260872906999338?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/6761260872906999338/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/02/weak-coder-review.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6761260872906999338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/6761260872906999338'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/02/weak-coder-review.html' title='Weak coder review'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-4093408282927108025</id><published>2010-01-18T00:17:00.000+01:00</published><updated>2010-01-18T00:18:52.515+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plsql'/><category scheme='http://www.blogger.com/atom/ns#' term='extrem programming'/><title type='text'>I wish I had TDD.</title><content type='html'>Has you know, I was recently on a PLSQL package to produce a 60 colums report. And it is still buggy. Two lessons for me:&lt;br /&gt;&lt;br /&gt;1. Never believe that a code work because you are told so.&lt;br /&gt;2. Begin the job by creating an automated test (...suite).&lt;br /&gt;&lt;br /&gt;Not so long ago, I though the idea of Test Driven Development was kinda weird. Why starting by writing tests ? Where is the value ???&lt;br /&gt;Step by step I gave it a chance. It's the only reasonable way to do refactoring. By refactoring, I mean changing large blocks of code, not renaiming functions or deleting unuseful comments.&lt;br /&gt;&lt;br /&gt;Now I've figured out that it is the only way to perform as stressfree as possible firefighting (that we all eventually do, don't we ?).&lt;br /&gt;&lt;br /&gt;Try to manually check results of a 60 columns sql report 30' before delivery to validate some bug fix. No, don't even try: you can't.&lt;br /&gt;&lt;br /&gt;Now I'll let the machine do it for me. EVER. Spending 2 hours to write an automated test suite is not a waste of time, after all.&lt;br /&gt;&lt;br /&gt;For Kent Beck fan boys oblidged to develop in PLSQL: a unit test framework ALREADY exists : &lt;a href="http://utplsql.sourceforge.net/"&gt;utplsql&lt;/a&gt; (I've never used it yet though).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-4093408282927108025?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/4093408282927108025/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/01/i-wish-i-had-tdd.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4093408282927108025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/4093408282927108025'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/01/i-wish-i-had-tdd.html' title='I wish I had TDD.'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-2107529024989628941</id><published>2010-01-08T14:55:00.000+01:00</published><updated>2010-01-08T15:12:28.846+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='plsql'/><title type='text'>Private procedures un plsql</title><content type='html'>Hi, and happy new year for you, few readers.&lt;br /&gt;&lt;br /&gt;I began this year with Oracle plsql. I like this language because I find it very efficient and quite easy to test and debug. However, it's a bit out of date compared to fashinable languages.&lt;br /&gt;&lt;br /&gt;I had to debug a huge plsql package (1500 lines, believe me, it's huge for a piece of code!) made of 3 procedures :'(. My first action is to split it in more functions and procedures (remember that this is 2 distincts objects in plsql).&lt;br /&gt;&lt;br /&gt;As I'm a huge fan of a book by Robert C. Martin[1], I put functions bellow the place it is called, to make code reading easier. Unfortunately, the code doesn't work unless I put declaration in spec package. So boring ! Moreover, the function then become public, what I want to avoid.&lt;br /&gt;&lt;br /&gt;Then I discover something one day before leaving. Here is the example of code:&lt;br /&gt;&lt;br /&gt;&lt;code&gt;PACKAGE BODY FOOBAR IS&lt;br /&gt;PROCEDURE MAIN IS&lt;br /&gt;BEGIN&lt;br /&gt;   PROC_ONE;&lt;br /&gt;   PROC_TWO;&lt;br /&gt;END MAIN;&lt;br /&gt;&lt;br /&gt;PROCEDURE PROC_ONE IS&lt;br /&gt;BEGIN&lt;br /&gt;...&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;PROCEDURE PROC_TWO IS&lt;br /&gt;BEGIN&lt;br /&gt;...&lt;br /&gt;END;&lt;br /&gt;END FOOBAR;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;This does not work unless PROC_ONE and PROC_TWO are declared in spec package but&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;PACKAGE BODY FOOBAR IS&lt;br /&gt;PROCEDURE PROC_ONE IS&lt;br /&gt;BEGIN&lt;br /&gt;...&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;PROCEDURE PROC_TWO IS&lt;br /&gt;BEGIN&lt;br /&gt;...&lt;br /&gt;END;&lt;br /&gt;&lt;br /&gt;PROCEDURE MAIN IS&lt;br /&gt;BEGIN&lt;br /&gt;   PROC_ONE;&lt;br /&gt;   PROC_TWO;&lt;br /&gt;END MAIN;&lt;br /&gt;&lt;br /&gt;END FOOBAR;&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;works !!!&lt;br /&gt;&lt;br /&gt;I think I haven't searched enough in the documentation -_-'.&lt;br /&gt;&lt;br /&gt;[1]: Clean Code: A Handbook of Agile Software Craftsmanship&lt;br /&gt;# ISBN-10: 0132350882&lt;br /&gt;# ISBN-13: 978-0132350884&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-2107529024989628941?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/2107529024989628941/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2010/01/private-procedures-un-plsql.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/2107529024989628941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/2107529024989628941'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2010/01/private-procedures-un-plsql.html' title='Private procedures un plsql'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-5598516689724769038</id><published>2009-11-28T13:05:00.000+01:00</published><updated>2009-11-28T13:20:00.040+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Playing with Perl</title><content type='html'>I'm a Perl beginner. Actually, what I read here and there let me think Perl is a pretty cool language. It does not need compilation, can be compatible with *nix and Windows. It has a powerful regex engine and quite a simple syntax. Finally, the large amount of modules available on &lt;a href="http://www.cpan.org/"&gt;CPAN&lt;/a&gt; can extend it in an amazing way.&lt;br /&gt;&lt;br /&gt;The first real thing I made with is a tool to convert gmail contact list export file to something I can enter in my .muttrc (yeah, I use mutt with imap to retrieve my mail on gmail).&lt;br /&gt;&lt;br /&gt;Data processing was quick to write. But it was hard to make it work. After a couple of hours (gimme a break, I'm a n00b, remember !), I figured out the contact.csv file was encoded in UTF16... Wait, what?! I've never seen this encoding before. Then, I was obliged to use iconv to preprocess the file and everything went fine!&lt;br /&gt;Another trick is to check for unicity of mutt aliases.&lt;br /&gt;&lt;br /&gt;If you're interested source is &lt;a href="http://critrhom.free.fr/code/google_converter.pl"&gt;here&lt;/a&gt;. Obviously, it needs improvements.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-5598516689724769038?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/5598516689724769038/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2009/11/playing-with-perl.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5598516689724769038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/5598516689724769038'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2009/11/playing-with-perl.html' title='Playing with Perl'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7052813581099080953.post-3650503706601725646</id><published>2009-11-28T12:58:00.001+01:00</published><updated>2009-11-28T13:04:55.724+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Intro'/><title type='text'>Intro</title><content type='html'>`/0 !&lt;br /&gt;&lt;br /&gt;I'm a French developer. I work for a big service - consulting company in Grenoble, a little that some people often call "French Sillicon Valley" (please, don't laugh). I'll try to share some things about code, agile practices and other experiences.&lt;br /&gt;I'm kinda free software supporter, so I will bother you a lot about that!&lt;br /&gt;&lt;br /&gt;Do not hesitate to comment!&lt;br /&gt;&lt;br /&gt;And sorry in advance for my "English mistakes" (nobody's perfect) ^^.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7052813581099080953-3650503706601725646?l=romscodecorner.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://romscodecorner.blogspot.com/feeds/3650503706601725646/comments/default' title='Publier les commentaires'/><link rel='replies' type='text/html' href='http://romscodecorner.blogspot.com/2009/11/intro.html#comment-form' title='0 commentaires'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/3650503706601725646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7052813581099080953/posts/default/3650503706601725646'/><link rel='alternate' type='text/html' href='http://romscodecorner.blogspot.com/2009/11/intro.html' title='Intro'/><author><name>Romain TOUZÉ</name><uri>http://www.blogger.com/profile/02780829884164015350</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='29' height='32' src='http://2.bp.blogspot.com/-5lwP1f9dj0Y/TkbY1OstfCI/AAAAAAAAA5I/yLWywb1CPG8/s220/beast2.png'/></author><thr:total>0</thr:total></entry></feed>
