<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Mon petit blog a moi</title>
    <generator uri="https://github.com/jekyll/jekyll">Jekyll v3.9.0</generator>
	<icon>http://www.dalichampt.fr/apple-touch-icon-precomposed.png</icon>
    <subtitle>Juste un blog de plus de la part d'un developpeur pationné. Réflexion, découverte, petit trucs. Je pose ici ce qui me passe dans la tête et sur le clavier.</subtitle>
    <link href="http://www.dalichampt.fr/atom.xml" rel="self"/>
    <link href="http://www.dalichampt.fr/" rel="alternate" type="text/html"/>
    <updated>2021-03-19T21:57:12+00:00</updated>
    <id>http://www.dalichampt.fr/</id>
    <author>
	    <name>Samuel DALICHAMPT</name>
		<uri>http://www.dalichampt.fr/</uri>
		
	</author>

    
        <entry>
            <title>Déployer une application Fluent-http sur Heroku.</title>
            <link href="http://www.dalichampt.fr/developpement/deployer-une-application-fluenthttp-sur-heroku/"/>
            <updated>2015-06-20T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/developpement/deployer-une-application-fluenthttp-sur-heroku</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;&lt;a href=&quot;https://github.com/CodeStory/fluent-http&quot;&gt;Fluent-http&lt;/a&gt; est un serveur web Java écrit par &lt;a href=&quot;https://twitter.com/dgageot&quot;&gt;David Gageot&lt;/a&gt; qui à l’avantage d’être à la fois simple, très léger et riche en fonctionnalité. Facilement testable, le boot du serveur est presque instantané ce qui lui donne, à mon sens, un gros avantage sur les autres serveurs d’application.&lt;/p&gt;

&lt;p&gt;Mais, bien qu’étant un serveur Java, fluent-http n’est pas un serveur JEE, il n’utilise pas l’API Servlet. C’est un serveur standalone qui se lance via une classe disposant d’une méthode main. De ce fait, il n’est donc pas reconnu automatiquement par &lt;a href=&quot;https://www.heroku.com&quot;&gt;Heroku&lt;/a&gt; lors du déploiement comme un conteneur de servlet standard.&lt;/p&gt;

&lt;p&gt;Mais rien ce grave car moyennant un brin de configuration, Heroku est capable d’animer presque tout type d’application tant que celle-ci est écrite dans un des langages supportés. Il est donc tout à fait possible de déployer une application basée sur fluent-http sur la plate forme Heroku.&lt;/p&gt;

&lt;p&gt;Le Toolbelt Heroku doit préalablement être &lt;a href=&quot;https://devcenter.heroku.com/articles/getting-started-with-java#set-up&quot;&gt;installé et configuré&lt;/a&gt;, ainsi que &lt;a href=&quot;https://git-scm.com/&quot;&gt;Git&lt;/a&gt;. &lt;a href=&quot;https://maven.apache.org/&quot;&gt;Maven&lt;/a&gt; et un &lt;a href=&quot;https://www.jetbrains.com/idea/&quot;&gt;bon&lt;/a&gt; &lt;a href=&quot;https://eclipse.org/downloads/&quot;&gt;IDE&lt;/a&gt; sont aussi préférables.&lt;/p&gt;

&lt;p&gt;L’application déployée sera un simple “Hello Wold” dont voici le code :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-java&quot; data-lang=&quot;java&quot;&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;nc&quot;&gt;Application&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kd&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;String&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;[]&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;args&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
		&lt;span class=&quot;k&quot;&gt;new&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;WebServer&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt;
			&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;configure&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;routes&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;-&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;routes&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;get&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;/&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;Hello World&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;))&lt;/span&gt;
			&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;start&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;();&lt;/span&gt;
	&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Une fois l’application développée, passons maintenant à la construction de celle-ci pour la rendre déployable sur Heroku. Pour cela, la build Maven utilisera 2 plug-in.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;maven-dependency-plugin&lt;/strong&gt; : Qui permet de copier les dépendances du projet.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;maven-jar-plugin&lt;/strong&gt; : Qui permet de créer un Jar executable pour notre application.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mais avant tout, il faut donner un nom à l’artefact qui sera construit par Maven. Cela se fait en renseignant la proprieté &lt;strong&gt;finalName&lt;/strong&gt; dans le &lt;strong&gt;POM.xml&lt;/strong&gt;. Pour rentre notre jar exécutable, il faudra aussi spécifier le nom de la classe portant la méthode main, ici, la class &lt;strong&gt;Application&lt;/strong&gt; ci dessus. Cela donne au final un build qui ressemble à cela :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-xml&quot; data-lang=&quot;xml&quot;&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;nt&quot;&gt;&amp;lt;build&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;finalName&amp;gt;&lt;/span&gt;fluentheroku&lt;span class=&quot;nt&quot;&gt;&amp;lt;/finalName&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;plugins&amp;gt;&lt;/span&gt;
  	&lt;span class=&quot;nt&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;
  		&lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;maven-dependency-plugin&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
  		&lt;span class=&quot;nt&quot;&gt;&amp;lt;executions&amp;gt;&lt;/span&gt;
  			&lt;span class=&quot;nt&quot;&gt;&amp;lt;execution&amp;gt;&lt;/span&gt;
  				&lt;span class=&quot;nt&quot;&gt;&amp;lt;id&amp;gt;&lt;/span&gt;copy-dependencies&lt;span class=&quot;nt&quot;&gt;&amp;lt;/id&amp;gt;&lt;/span&gt;
  				&lt;span class=&quot;nt&quot;&gt;&amp;lt;phase&amp;gt;&lt;/span&gt;package&lt;span class=&quot;nt&quot;&gt;&amp;lt;/phase&amp;gt;&lt;/span&gt;
  				&lt;span class=&quot;nt&quot;&gt;&amp;lt;goals&amp;gt;&lt;/span&gt;
  					&lt;span class=&quot;nt&quot;&gt;&amp;lt;goal&amp;gt;&lt;/span&gt;copy-dependencies&lt;span class=&quot;nt&quot;&gt;&amp;lt;/goal&amp;gt;&lt;/span&gt;
  				&lt;span class=&quot;nt&quot;&gt;&amp;lt;/goals&amp;gt;&lt;/span&gt;
  			&lt;span class=&quot;nt&quot;&gt;&amp;lt;/execution&amp;gt;&lt;/span&gt;
  		&lt;span class=&quot;nt&quot;&gt;&amp;lt;/executions&amp;gt;&lt;/span&gt;
  	&lt;span class=&quot;nt&quot;&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;
  	&lt;span class=&quot;nt&quot;&gt;&amp;lt;plugin&amp;gt;&lt;/span&gt;
  		&lt;span class=&quot;nt&quot;&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;maven-jar-plugin&lt;span class=&quot;nt&quot;&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
  		&lt;span class=&quot;nt&quot;&gt;&amp;lt;configuration&amp;gt;&lt;/span&gt;
  			&lt;span class=&quot;nt&quot;&gt;&amp;lt;archive&amp;gt;&lt;/span&gt;
  				&lt;span class=&quot;nt&quot;&gt;&amp;lt;manifest&amp;gt;&lt;/span&gt;
  					&lt;span class=&quot;nt&quot;&gt;&amp;lt;addClasspath&amp;gt;&lt;/span&gt;true&lt;span class=&quot;nt&quot;&gt;&amp;lt;/addClasspath&amp;gt;&lt;/span&gt;
  					&lt;span class=&quot;nt&quot;&gt;&amp;lt;classpathPrefix&amp;gt;&lt;/span&gt;dependency&lt;span class=&quot;nt&quot;&gt;&amp;lt;/classpathPrefix&amp;gt;&lt;/span&gt;
  					&lt;span class=&quot;nt&quot;&gt;&amp;lt;mainClass&amp;gt;&lt;/span&gt;fr.dalichampt.fluentheroku.Application&lt;span class=&quot;nt&quot;&gt;&amp;lt;/mainClass&amp;gt;&lt;/span&gt;
  				&lt;span class=&quot;nt&quot;&gt;&amp;lt;/manifest&amp;gt;&lt;/span&gt;
  			&lt;span class=&quot;nt&quot;&gt;&amp;lt;/archive&amp;gt;&lt;/span&gt;
  		&lt;span class=&quot;nt&quot;&gt;&amp;lt;/configuration&amp;gt;&lt;/span&gt;
  	&lt;span class=&quot;nt&quot;&gt;&amp;lt;/plugin&amp;gt;&lt;/span&gt;
  &lt;span class=&quot;nt&quot;&gt;&amp;lt;/plugins&amp;gt;&lt;/span&gt;
&lt;span class=&quot;nt&quot;&gt;&amp;lt;/build&amp;gt;&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;La construction via &lt;strong&gt;mvn package&lt;/strong&gt; produit maintenant un Jar capable d’être executé via la commande :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;java &lt;span class=&quot;nt&quot;&gt;-jar&lt;/span&gt; target/fluentheroku.jar&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Pour exécuter fluent-http en &lt;a href=&quot;https://github.com/CodeStory/fluent-http#production-mode-vs-development-mode&quot;&gt;mode production&lt;/a&gt;, on pourra ajouter l’argument &lt;strong&gt;-DPROD_MODE=true&lt;/strong&gt; lors du lancement.&lt;/p&gt;

&lt;p&gt;Pour déterminer quelle commande permet de lancer une application, Heroku se base sur un fichier &lt;a href=&quot;https://devcenter.heroku.com/articles/procfile&quot;&gt;Procfile&lt;/a&gt; qui doit être placé à la racine du projet. Ce fichier doit contenir sur une même ligne, la type de processus à lancer et la ligne de commande pour le faire. Comme nous déployons une application web, le fichier Procfile ressemblera à :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;web: java &lt;span class=&quot;nt&quot;&gt;-DPROD_MODE&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;true&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-jar&lt;/span&gt; target/fluentheroku.jar&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Il ne reste plus qu’a commiter tout cela sous Git et à créer l’application Heroku en 3 petites commandes :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;heroku create
git push heroku master
heroku ps:scale &lt;span class=&quot;nv&quot;&gt;web&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;1&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Voilà l’application déployée et disponible à l’adresse &lt;a href=&quot;https://fluent-heroku.herokuapp.com/&quot;&gt;https://fluent-heroku.herokuapp.com/&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Les sources complètes sont quant à elles disponibles sur &lt;a href=&quot;https://github.com/sdalichampt/fluent-heroku&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Startup WeekEnd Nancy - Résultat et bilan.</title>
            <link href="http://www.dalichampt.fr/rencontre/startup-weekend-nancy-resultat-et-bilan/"/>
            <updated>2015-06-04T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/startup-weekend-nancy-resultat-et-bilan</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Du &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866&quot;&gt;29 au 31 mai, à Nancy&lt;/a&gt;, j’ai participé à mon premier &lt;a href=&quot;http://startupweekend.org/&quot;&gt;Startup Weekend&lt;/a&gt;. Et voilà le résultat et mon bilan.&lt;/p&gt;

&lt;p&gt;Toutes les équipes ayant terminé leur présentation finale, le jury a pu délibérer.&lt;/p&gt;

&lt;p&gt;Les 3 lauréats sont donc :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;WheelGo, à qui j’avais offet un post-it lors des votes du vendredi soir et qui propose une application autour de la conduite accompagnée.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;IdWay, qui veux remplacer les mots de passe par un bracelet qui identifie l’utilisateur avec son rythme cardiaque.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Aminals, une plate forme de mise en relation des élèveurs de chien et chat avec les futurs adoptants.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Ces 3 équipes vont pouvoir continuer à tester leur projets en bénéficiant d’un hébergement gratuit à &lt;a href=&quot;http://www.lapapiniere.com/&quot;&gt;la PAPinière&lt;/a&gt; et à la &lt;a href=&quot;http://www.poudriere.org/&quot;&gt;Poudrière&lt;/a&gt;. WheelGo aura même droit à une journée d’exposition à la grande boutique Orange.&lt;/p&gt;

&lt;p&gt;Nous ne sommes donc pas dans le top 3. Aucune déception pour ma part. Mais qui a-t-il a retenir de ce week end alors ?&lt;/p&gt;

&lt;p&gt;D’abord que la décision du jury était très serrée. Alors que les autres années, 2 ou 3 projets se détacher nettement des autres, cette année, c’était beaucoup plus homogène. Et puis d’après les coachs, notre idée était vraiment très ambitieuse. Peux être un peu trop en fait.&lt;/p&gt;

&lt;p&gt;Je retiendrais l’ambiance qui a régné durant tout le week end. A part le stress qui est monté dans tout les équipes jusqu’au présentation, l’ambiance est restée très sympa. Pas de compétition entre les équipes, mais une coopétition. Chacun donnant un coup de pousse à ses voisins lors des discutions durant les pauses.&lt;/p&gt;

&lt;p&gt;Je retiendrais aussi l’apport des coachs, très pros, toujours disponibles et qui nous ont vraiment étaient d’une aide primordial lorsque nous tournions autour de la solution sans la trouver. Et d’une façon plus générale, l’organisation sans faille avec aux premiers rangs  &lt;a href=&quot;https://twitter.com/brunomartin54&quot;&gt;Bruno Martin&lt;/a&gt; et &lt;a href=&quot;https://twitter.com/lebrunvincent&quot;&gt;Vincent Lebrun&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Et enfin, je retiendrais l’énorme travail qu’on peu réaliser en si peu de temps. C’est tout bonnement incroyable de voir comment 6 personnes, avec des profils si différents, qui ne se connaissent pas, peuvent faire avancer une idée pour en faire un projet en seulement 54 heures.&lt;/p&gt;

&lt;p&gt;J’ai aussi beaucoup aimé la grosse bouffé d’oxygène que j’ai pu prendre sur les méthodes de travail. Passant mes journées dans une boite de 35 000 personnes pour un client qui lui en compte plus de 1 000 000, les start-up sont à des années lumières de mon quotidien. Et si je me bas tous les jours pour pousser mes collègues à faire des choses plus petite, plus rapide, plus simple, je dois reconnaître que dans les starups ces bonnes pratiques sont poussées à leur maximum pour des résultats aux aussi maximum.&lt;/p&gt;

&lt;p&gt;Le week end est maintenant terminé, mais pas avant d’aller boire un dernier verre avec l’équipe de GetMyMail et qu’une partie de l’orga, qui a terminer de ranger le hall de l’école, nous retrouve place Stanislas. Et de se dire sans aucun doute : A l’année prochaine.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Startup WeekEnd Nancy - Jour 3.</title>
            <link href="http://www.dalichampt.fr/rencontre/startup-weekend-nancy-jour3/"/>
            <updated>2015-06-03T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/startup-weekend-nancy-jour3</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Du &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866&quot;&gt;29 au 31 mai, à Nancy&lt;/a&gt;, j’ai participé à mon premier &lt;a href=&quot;http://startupweekend.org/&quot;&gt;Startup Weekend&lt;/a&gt;. Et voilà ce que je retiens de la derniere journée.&lt;/p&gt;

&lt;p&gt;La veille, nous avions enfin trouvé la solution et après quelques heures passée au lit, nous revoilà d’attaque. Comme la veille, la journée commence par un petit déjeuner pris dans le hall de l’école. Comme la veille, les organisateurs nous donne les informations utiles pour la journée. Et les 2 informations qu’il faudra retenir, c’est l’heure de remise des présentations et le début des présentations.&lt;/p&gt;

&lt;p&gt;Pour les présentations, c’est assez low tech. Elles doivent être au format PDF sur une clé USB. Un format PDF sur une clé USB. Oui, un PDF sur une clé USB. Bruno le répétera encore plus que ça.&lt;/p&gt;

&lt;p&gt;C’est aussi le moment de montrer la vidéo de présentation des projets réalisée la veille.&lt;/p&gt;

&lt;iframe width=&quot;640&quot; height=&quot;480&quot; src=&quot;//www.youtube.com/embed/Dv4n-wdQlT8?rel=0&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;On retrouve notre salle, où les post-it commence à recouvrir le bureau, le tableau et aussi le sol. Faut avouer qu’on a un peu pris nos aises. Première tâche de la matinée, lever quelques questions juridique avec l’un des coachs. Pour la première année, l’un des mentors est un avocat. Très bonne idée car si peux d’avocat lance des startup, des développeurs, des graphistes ou des marketeurs on bien besoin d’un expertise juridique sur certains points.&lt;/p&gt;

&lt;p&gt;Durant ce temps, Daniel a bossé sur une série de logo pour représenter le projet. L’un d’eux fait très vite l’unanimité. Aucun besoin d’un vote à la romaine pour le choisir. Voilà donc à quoi ressemble GetMyMail :&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2015/getmymail.png&quot; alt=&quot;Le logo de GetMyMail&quot; title=&quot;Le logo de GetMyMail&quot; /&gt;&lt;/p&gt;

&lt;p&gt;La matinée passe vite, on commence à calculer les charges. D’abord les charges fixes. On fait dans l’économie. Le gros des dépenses ça sera les salaires de 4 personnes qu’il faudra embaucher. Et cela après avoir investit 200 000€ en développement de la plate forme. Bien sur, il sera possible de débuter l’activité avant cela en prenant un approche plus lean. Viennent ensuite les charges variables. Pour nous cela sera surtout le prix des coursiers qui livrerons les colis. Caroline passe quelque coup de téléphone pour avoir un ordre d’idée du prix de ces courses. Étonnement, il serait plus économique de prendre des livraisons en scooter, par petit volume, plutôt qu’en camionnette. Après quelque appel, une course pourrait revenir à 4€ par colis. En plus d’avoir peu déterminer un coût de reviens des livraisons, nous avons aussi pu sonder les coursiers qui se révèlent plutôt intéressés par le projets et partant pour bosser avec nous.&lt;/p&gt;

&lt;p&gt;Maintenant que nous avons tout les chiffres qu’il nous faut, on peu déterminer un point mort avec 120 colis par jour. Sachant que la poste livre 1 000 000 de colis par jour, nous n’avons pas besoin de prendre 10% du marché pour être rentable. L’équation économique est donc tout à fait réalisable en restant dans les prix maximum que nos sondés seraient prêt à payer pour notre service.&lt;/p&gt;

&lt;p&gt;Dans le même temps, les 2 développeurs de l’équipe, Julien et moi même, nous attachons à faire quelques maquette avec &lt;a href=&quot;https://balsamiq.com/&quot;&gt;Balsamiq&lt;/a&gt; pour illustrer la présentation.&lt;/p&gt;

&lt;p&gt;A 15h59, on remets finalement la clé USB aux organisateurs avec un peu d’avance. Il ne reste plus qu’une heure pour préparer le pitch final. 4 minutes maxi. Il sera suivi par 4 minutes de questions de la part du jury.&lt;/p&gt;

&lt;p&gt;Comme le temps sera compté, il ne faudra pas perdre de temps. Seuls 2 personnes prendrons la parole. Caroline présentera donc le problème et le buisiness model. Entre les 2, je présenterais la solution imaginée. Et pour les questions, nous verrons bien qui se sentira capable d’y répondre.&lt;/p&gt;

&lt;p&gt;Durant 40 minutes, nous répétons et affinons notre discours devant le reste de l’équipe. On trouve rapidement le bon timing on respectant facilement les 4 minutes. On apporte quelque petites retouches au texte et nous voilà prêt pour la présentation finale. De toute façon, les organisateurs nous appels pour l’arrivé du jury.&lt;/p&gt;

&lt;p&gt;Les 10 équipes passe chacune leur tour. Cela se passe assez bien pour nous, mais on se rend compte que les autres équipes ont elles aussi bien travaillé leur présentation. Surtout l’équipe de Cosmososia, qui nous offre un bon moment de détente tant leur présentation est drôle. Et d’un coup, la pression qui était montée peu a peu durant tout le week end retombe subitement alors que le jury s’isole pour délibérer.&lt;/p&gt;

&lt;p&gt;Les coachs qui eux aussi on assister aux présentations nous font un retour plutôt encourageant.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Startup WeekEnd Nancy - Jour 2.</title>
            <link href="http://www.dalichampt.fr/rencontre/startup-weekend-nancy-jour2/"/>
            <updated>2015-06-02T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/startup-weekend-nancy-jour2</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Du &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866&quot;&gt;29 au 31 mai, à Nancy&lt;/a&gt;, j’ai participé à mon premier &lt;a href=&quot;http://startupweekend.org/&quot;&gt;Startup Weekend&lt;/a&gt;. Et voilà ce que je retiens de la deuxième journée.&lt;/p&gt;

&lt;p&gt;Samedi matin, 9 heures. Je savais même pas que ça existait. Mais j’arrive à &lt;a href=&quot;http://www.epitech.eu/nancy/ecole-informatique-nancy.aspx&quot;&gt;Epitech&lt;/a&gt; après une bonne nuit. Comme on ne sait pas à quelle heure se terminera cette deuxième journée, c’était important de prendre du repos.&lt;/p&gt;

&lt;p&gt;La journée commence par un petit déjeuner sur place. Le temps de retrouver l’équipe formée la veille qui arrive elle aussi, de manger quelques croissants et surtout de faire un gros plein de caféine alors que Bruno Martin présente les coachs qui pourrons nous venir en aide durant la journée. Et pour finir le lancement de la journée, chaque équipe part dans la salle qui lui est attribuée avec un grand &lt;a href=&quot;http://en.wikipedia.org/wiki/Business_Model_Canvas&quot;&gt;Business Model Canvas&lt;/a&gt; à remplir.&lt;/p&gt;

&lt;p&gt;Pour nous, la matinée est consacrée à l’étude du marché. Le formulaire Google rapidement mis en ligne nous prouve qu’on s’attaque à un vrai problème pour beaucoup de monde. On récoltera plus d’un 100aine de réponses juste avec les annonces faites sur Twitter et Facebook. On s’attache aussi à voir quelles sont les solutions comparables qui peuvent déjà exister. Il y a bien de solutions, mais aucunes de vraiment efficace si on en crois les réponses qui nous sont données dans notre petite enquête.&lt;/p&gt;

&lt;p&gt;La matinée vois aussi le début de la visite des mentors qui viennent prendre connaissance du projet et qui commence à le challenger. L’idée leur semble bonne, c’est déjà Ça. Mais aussi très compliquée et on vas finir par s’en aperçevoir.&lt;/p&gt;

&lt;p&gt;Dès la pause du midi passée, on commence à établir le workflow de la solution. Et l’idée de départ, à savoir faire livrer ses colis chez ses voisins n’est pas si simple à mettre en place. Pire encore, elle demande de se connecter avec les e-commercants, mais aussi avec les livreurs. Cela tourne vite au casse tête pour une startup qui n’a évidement pas le poids suffisant pour aller négocier des accords avec des géants comme Amazon ou la Poste. Il faut se rendre compte que ce n’est pas jouable, il faut pivoter.&lt;/p&gt;

&lt;p&gt;Une chose est sûre, on ne cherche pas à devenir transporteur. Les camions, les entrepôts, les livreurs, c’est bien trop gros comme investissement de toute façon. Il faut trouver une solution pour se plugger sur une chaîne logistique déjà très complexe et sans la modifier. Chaque hypothèse que l’on peu faire durant toute l’après-midi est aussitôt remise en cause par la visite d’un coach. On en viens même à se demander s’ils sont vraiment là pour nous aider. Au final, c’est bien eux qui on raison.&lt;/p&gt;

&lt;p&gt;Le seul moyen de parvenir est donc de s’ajouter en fin de chaîne. La soirée à déjà débutée lorsqu’on prend une petite pause pour manger. C’est l’occasion de discuter avec les autres équipes. Certaines sont déjà en train de mettre au point leur business model alors même que nous ne sommes pas encore tombé d’accord sur la solution. C’est un gros coup dur. Caroline se demande même pourquoi on s’inflige ça, mais il faudra peut être y passer la nuit car demain, le temps sera compter, la remise des présentation est fixée à 16 heures et ça demandera du travail.&lt;/p&gt;

&lt;p&gt;C’est vers minuit que la visite d’un mentor nous donne un sérieux coup de pousse. Trop occupé a se retourner le cerveau dans tout les sens, on a oublié l’essentiel. Remplir notre canvas. Car la solution, on l’a enfin trouvée. Mais il faut la mettre sur table. Ou plutôt sur post-it. Ce qui sera fait pour que nous puissions aller nous coucher vers 2 heures.&lt;/p&gt;

&lt;p&gt;Fin de la deuxième journée, je suis crevé, mais on a figer notre solution. Il reste beaucoup à faire le dernier jour.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Startup WeekEnd Nancy - Jour 1.</title>
            <link href="http://www.dalichampt.fr/rencontre/startup-weekend-nancy-jour-1/"/>
            <updated>2015-06-01T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/startup-weekend-nancy-jour-1</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Du &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866&quot;&gt;29 au 31 mai, à Nancy&lt;/a&gt;, j’ai participé à mon premier &lt;a href=&quot;http://startupweekend.org/&quot;&gt;Startup Weekend&lt;/a&gt;. Et voilà ce que je retiens de la première journée.&lt;/p&gt;

&lt;p&gt;Vendredi, j’arrive dans les locaux d’&lt;a href=&quot;http://www.epitech.eu/nancy/ecole-informatique-nancy.aspx&quot;&gt;Epitech&lt;/a&gt; peu après 18 heures. J’ai déjà eu une semaine de travail un peu chargée, mais je reste motivé pour passer 54 heures à faire avancer un autre projet. Dès mon arrivée, je récupère mon badge, un bracelet pour les repas et un sac de goodies. Et en attendant le vrai début du week end, je fait connaissance avec un petit groupe de personnes qui se forme. On discute avec 2 développeurs, 1 désigner et 3 porteurs de projets qui vont pitcher ce soir. Puis d’autres personnes viennent se mêler peu à peu a nous.&lt;/p&gt;

&lt;p&gt;La première impression est très positive et 2 des projets sont intéressant avec des porteurs dynamiques qui crois à fond en leur chance.&lt;/p&gt;

&lt;p&gt;La soirée débute vraiment après manger. Présentation de &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866#event-organizers&quot;&gt;l’orga&lt;/a&gt;, qui sera au top jusqu’au bout, du &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866#event-schedule&quot;&gt;déroulement&lt;/a&gt; du week end, des intervenants (&lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866#event-sponsors&quot;&gt;sponsors&lt;/a&gt;, &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866#event-coaches&quot;&gt;coachs&lt;/a&gt; et &lt;a href=&quot;http://www.up.co/communities/france/nancy/startup-weekend/5866#event-judges&quot;&gt;jury&lt;/a&gt;) et enfin des projets.&lt;/p&gt;

&lt;p&gt;Puis une 15aine de projets sont présentés. Les pitchs s’enchaînent très très vite, 60 secondes, pas une de plus. Et le vote des participants arrive tout de suite après. Le vote est simple. Chaque participants a 3 post-it à distribuer comme il le veux. Les porteurs de projet collectes les post-it sur une feuille. Et au final on compte les post-it.&lt;/p&gt;

&lt;p&gt;Ce petit quart d’heure de vote donne lieux a une joyeuse foire ou les pitcheurs montent sur les chaises, drague les participants, tout est bon pour glaner le max de voix.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2015/swncy1.jpg&quot; alt=&quot;Vote pour les projets&quot; title=&quot;Vote pour les projets&quot; /&gt;&lt;/p&gt;

&lt;p&gt;De mon coté, je trouve plusieurs projets intéressants, mais je n’ai que 3 post-it. Alors je choisi.&lt;/p&gt;

&lt;p&gt;Les 2 premiers projets sont portés par ceux avec qui j’ai déjà discuté en arrivant.  Comme quoi avoir plus de 1 minutes de présentation donne un sérieux avantage.&lt;/p&gt;

&lt;p&gt;GetMyMail qui veux faire de réception de colis entre voisins.&lt;/p&gt;

&lt;p&gt;L’autre est une plate forme de mesure de satisfaction des usagers des transports en commun.&lt;/p&gt;

&lt;p&gt;Enfin mon dernier post-it ira à WeelGo, une application qui veux faciliter la tenue du journal de bord pour la conduite accompagnée. Ils seront les premiers lauréats du dimanche soir, je ne me suis finalement pas trompé.&lt;/p&gt;

&lt;p&gt;Après comptage des voix, on passe à la constitution des équipes pour les 10 sujets retenus.&lt;/p&gt;

&lt;p&gt;Je rejoins alors GetMyMail, le projet présenté par Caroline. Se joignent aussi au projet Julien et Noël, 2 étudiants, l’un développeur, l’autre designer. Daniel, spécialiste graphiste et web désigner. Lou et Jean-Charles, qui ont déjà déjà lancé une &lt;a href=&quot;http://www.fetch-nancy.fr/&quot;&gt;startup qui fait de la livraison&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Les équipes constituées n’ont plus qu’une chose à faire pour atteindre les objectifs du premier soir. Remplir la première case du problèmes &lt;a href=&quot;http://fr.wikipedia.org/wiki/Lean_Startup#Lean_Canvas&quot;&gt;Lean Canvas&lt;/a&gt;. Pour nous ca sera les horaires de livraison à domicile et les horaires d’ouverture des points relais souvent peu compatible avec une activité professionnelle parfois chargée.&lt;/p&gt;

&lt;p&gt;Fin de la première journée, un peu après minuit.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Collaboration avec Github Gist.</title>
            <link href="http://www.dalichampt.fr/developpement/collaboration-avec-github-gist/"/>
            <updated>2014-12-06T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/developpement/collaboration-avec-github-gist</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Si vous connaissez &lt;a href=&quot;http://http://git-scm.com/&quot;&gt;Git&lt;/a&gt;, vous connaissez surement &lt;a href=&quot;https://github.com/&quot;&gt;Github&lt;/a&gt;. Mais peux être que vous ne connaissez pas &lt;a href=&quot;https://gist.github.com&quot;&gt;Gist&lt;/a&gt; de GitHub.&lt;/p&gt;

&lt;p&gt;Gist est un &lt;a href=&quot;http://fr.wikipedia.org/wiki/Pastebin&quot;&gt;pastebin&lt;/a&gt;, une application web qui permet de déposer des extraits de texte qui seront alors accessibles facilement à tous.&lt;/p&gt;

&lt;p&gt;Github oblige, chaque Gist est en réalité un dépôt Git à part entière. Et cela vas nous permettre d’en détourner l’utilisation pour en faire autre chose qu’un pastbin.&lt;/p&gt;

&lt;p&gt;Avec Rémy, nous cherchions un moyen de partager un peu d’infos. Pas un vrai projet en soit, juste quelques idées déposées dans un fichier. Les premiers essais se sont naturellement portés vers Google Docs et/ou Dropbox. Ils sont parfaits pour cela, mais ces outils sont tout les 2 bloqués derrière le proxy qu’utilise Rémy. Nous nous sommes alors tourné vers Github. Mais  bien qu’il n’y ai rien de super sensible, nos échanges n’avait pas vocation à être publique. Exit donc les dépôts publics gratuits de &lt;a href=&quot;https://github.com/sdalichampt&quot;&gt;Github&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;En revanche, même gratuit, Github permet de créer des Gist privés qui ne seront accéssibles que par leur URL sans être référencés dans la liste de vos &lt;a href=&quot;https://gist.github.com/sdalichampt&quot;&gt;Gist&lt;/a&gt; (Attention: un Gist, même privé, reste accessible sans mot de passe à quiconque connait son URL). Ce sera alors l’endroit parfait pour pousser du code, accessible par Rémy.&lt;/p&gt;

&lt;p&gt;Voyons comment mettre en place les dépôts pour démarrer la collaboration :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Samuel créer un Gist privé via l’interface en ligne&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014/create-secret-gist.png&quot; alt=&quot;Create secret Gist&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Samuel clone ce dépôt localement&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git clone https://gist.github.com/URL_PRIVEE_DE_SAMUEL_GIST.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Samuel donne l’URL de son Gist à Rémy&lt;/li&gt;
  &lt;li&gt;Rémy fork le Gist en un autre Gist privé&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014/fork-gist.png&quot; alt=&quot;Fork Gist&quot; /&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Rémy clone son dépôt localement&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git clone https://gist.github.com/URL_PRIVEE_DE_REMY_GIST.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Rémy ajout le dépot de Samuel à sa liste de dépot distant&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git remote add samuel https://gist.github.com/URL_PRIVEE_DE_SAMUEL_GIST.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Rémy donne l’URL de son Gist à Samuel&lt;/li&gt;
  &lt;li&gt;Samuel ajout le dépot de Rémy à sa liste de dépot distant&lt;/li&gt;
&lt;/ul&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git remote add remy https://gist.github.com/URL_PRIVEE_DE_REMY_GIST.git&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Tout est maintenant en place et nous pouvons à modifier localement nos fichiers et commiter ces modifications dans notre dépot locale.&lt;/p&gt;

&lt;p&gt;Nous pouvons également mettre à dispo nos modifications pour que l’autre puisse les récupérer&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git push origin master&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Et tirer les modififactions mise à dispositions&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git pull remy/samuel master&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Voila comment détourner Gist de son utilisation première. Cela permet de mettre rapidement en place un système de collaboration entre 2 personnes.&lt;/p&gt;

&lt;p&gt;Cela ne permet évidement pas de travailler à grande échelle sur un vrai projet de developpement en équipe. Vous ne bénéficier d’aucun des autres outils proposé par Github. De plus, même s’il ne sont accessible à tout le monde, les Gist privé ne sont protégés par aucun mot de passe ou autre moyen. Quiconque ayant connaissance de l’URL aura accès au dépot.&lt;/p&gt;


            </content>
        </entry>
    
        <entry>
            <title>Diff de fichiers Word avec Git.</title>
            <link href="http://www.dalichampt.fr/developpement/diff-de-fichiers-word-avec-git/"/>
            <updated>2014-10-28T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/developpement/diff-de-fichiers-word-avec-git</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Parmis tout les outils qui peuvent être utilisés pour un projet informatique (et je ne parle pas que des outils de dev), 
Word est sans doute celui que je deteste le plus. Ce n’est pas Word en lui même que je n’aime pas mais, c’est plutôt un 
bon traitement de texte même si j’utilise plus facilement &lt;a href=&quot;https://fr.libreoffice.org/&quot;&gt;LibreOffice Writer&lt;/a&gt;, mais 
généralement la façon de travailler qui vas avec. C’est à dire travailler sur des fichiers partagés sur le réseaux et 
versionnés “à la main” (version dans le nom du doc, suivi des modifications activé et note de révision en début du 
document).&lt;/p&gt;

&lt;p&gt;Bon nombre de plateforme de gestion documentaire pourrait améliorer grandement ce processus, mais il n’est pas toujours 
possible de les mettre en place. Dans ce cas, il est toujours possible de faire mieux, à moindre frais et avec les 
moyens du bord.&lt;/p&gt;

&lt;p&gt;Tout les developpeurs ont l’habitude de travailler avec un gestionaire de version (CVS, SNV, Git) pour le code source. 
Ces outils répondent à un certains nombre de points déjà évoqués plus haut :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Savoir qui a fait une modification,&lt;/li&gt;
  &lt;li&gt;Savoir quand la modification a été faite,&lt;/li&gt;
  &lt;li&gt;Savoir ce qui à été modifié,&lt;/li&gt;
  &lt;li&gt;Garder trace de toute les versions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Avec des fichiers texte, cela fonctionne très bien depuis des années, même bien avant l’apparition de 
&lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Cela est en revanche un peu plus délicat avec des fichiers binaires tels que des fichiers Word. Les points 1, 2 et 4 
reste valables, mais le 3ieme pose plus de problème. Difficile en effet de voir la différence entre 2 fichiers qui 
necessitent un programme spécifique pour être lisible par un humain.&lt;/p&gt;

&lt;p&gt;2 solutions sont alors possible :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Afficher les différences dans un outil externe. Word est lui-même capable d’afficher la différence en 2 fichiers word.&lt;/li&gt;
  &lt;li&gt;Afficher les différences dans l’outil en rendant le contenu binaire lisible.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;C’est cette deuxieme solution qui rentre le mieux dans le schema déjà bien connu pour les fichiers texte et Git offre 
la possibilité de le faire avec peux d’effort.&lt;/p&gt;

&lt;p&gt;La première étape est d’être capable d’extraire le contenu du fichier Word pour le rendre lisible. Pour cela, il éxiste 
2 outils, &lt;a href=&quot;http://www.wagner.pp.ru/~vitus/software/catdoc/&quot;&gt;catdoc&lt;/a&gt;, capable de lire un fichier Word au format doc et 
&lt;a href=&quot;http://sourceforge.net/projects/docx2txt/&quot;&gt;docx2txt&lt;/a&gt; pour les fichiers au format docx. Ces 2 outils peuvent lire les 
fichiers Word pour n’en garder que le contenu au format texte.&lt;/p&gt;

&lt;p&gt;Pour &lt;em&gt;catdoc&lt;/em&gt;, rien de plus à faire que de l’installer. En revanche, &lt;em&gt;docx2txt&lt;/em&gt; fonctionne un peu différement. En effet là
ou catdoc écrit par defaut dans la sortie standard, &lt;em&gt;docx2txt&lt;/em&gt; ecrit par défaut dans un fichier txt portant le même nom 
que le fichier Word. L’écriture dans la sortie standard se faisant par un paramètre. Or, Git n’est pas capable de faire
le passage de ce paramètre. Il faut alors le passé par un wrapper. Pour le raliser, il suffit d’un simple fichier shell
dans &lt;strong&gt;$HOME/.scripts/gitdocx2txt.sh&lt;/strong&gt; contenant les 2 lignes suivantes (le fichier doit aussi être éxécutable):&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;c&quot;&gt;#!/bin/sh&lt;/span&gt;
docx2txt &amp;lt;&lt;span class=&quot;nv&quot;&gt;$1&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Tout est maintenant prêt pour configurer Git. D’abord en lui indiquant que les fichiers Word sont des fichiers binaires.
Puis en indiquant à Git comment transformer les fichiers Word en fichier texte comparable. Nous allons pour cela créer 
2 filtres pour les fichiers Word au format doc d’un part et docx d’autre part.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; diff.word.binary &lt;span class=&quot;nb&quot;&gt;true
&lt;/span&gt;git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; diff.wordx.binary &lt;span class=&quot;nb&quot;&gt;true
&lt;/span&gt;git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; diff.word.textconv catdoc
git config &lt;span class=&quot;nt&quot;&gt;--global&lt;/span&gt; diff.wordx.textconv &lt;span class=&quot;nv&quot;&gt;$HOME&lt;/span&gt;/.scripts/gitdocx2txt.sh&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Enfin, il ne reste plus qu’a associer les fichiers Word avec les 2 filtres en ajoutant ces 2 lignes dans le fichier
&lt;strong&gt;.gitattributes&lt;/strong&gt; du projet.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;.doc &lt;span class=&quot;nv&quot;&gt;diff&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;word
&lt;span class=&quot;k&quot;&gt;*&lt;/span&gt;.docx &lt;span class=&quot;nv&quot;&gt;diff&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;wordx&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Tout est maintenant terminé et &lt;strong&gt;git diff&lt;/strong&gt; affichera les différences de contenu dans le fichier binaire directement
dans la console.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Ouvrir plusieurs connexions SSH d'un seul clic.</title>
            <link href="http://www.dalichampt.fr/linux/ouvrir-plusieurs-connexions-ssh-d-un-seul-clic/"/>
            <updated>2014-10-23T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/linux/ouvrir-plusieurs-connexions-ssh-d-un-seul-clic</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;A force de toujours me connecter en SSH les mêmes serveurs, j’ai cherché une solution pour me facilité la vie.&lt;/p&gt;

&lt;p&gt;La première chose à faire était déjà de déposer ma clé publique sur chaque serveur pour zapper la phase de connexion par
mot de passe et d’ajouter un alias dans le fichier .ssh/config. C’est autant de temps de gagné que sur chaque serveur 
l’utilisateur et le mot de passe change. Un ssh ALIAS_SERVEUR suffit donc pour me connecter.&lt;/p&gt;

&lt;p&gt;La phase de connexion passée maintenant sans encombre, je me retrouvais souvent avec 3, 4 ou 5 fenêtres terminal, toutes
identiques, ouvertes sur le bureau dans l’ordre ou je me suis connecté. Lorsque j’y pensais, j’essayais d’ouvrir des
onglets plutôt que des fenêtres, mais cela restait assez anarchique.&lt;/p&gt;

&lt;p&gt;J’ai donc choisi d’ouvrir les connexions que j’utilises tout le temps de façon automatiques. Cela peux se faire très
facilement avec gnome-terminal. Il suffit de jouer avec les options.&lt;/p&gt;

&lt;p&gt;La première étape était de créer un profil dédié aux fenêtres SSH. J’ai donc créé le profil &lt;em&gt;“sshremote”&lt;/em&gt; en changeant 
la couleur de fond (pour les voirs du premier coup d’oeil), mais surtout pour permettre fixe moi même le nom des 
terminaux. Cela se fait en choisisant à “Conserver le titre initial” dans Edition &amp;gt; Préférence du profil &amp;gt; Titre et 
commande &amp;gt; Quand les commandes du terminal définissent leurs propres titres. Le titre des onglets sera alors fixé une 
fois pour toute et ne sera pas renommé par la connexion SSH (par defaut user@host).&lt;/p&gt;

&lt;p&gt;Tout est prêt maintenant pour ouvrir mes onglets en une seule ligne de commande sous la forme :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;gnome-terminal
	&lt;span class=&quot;nt&quot;&gt;--tab-with-profile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;sshremote &lt;span class=&quot;nt&quot;&gt;--title&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;SERVEUR1 &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'ssh serveur1'&lt;/span&gt; 
	&lt;span class=&quot;nt&quot;&gt;--tab-with-profile&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;sshremote &lt;span class=&quot;nt&quot;&gt;--title&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;SERVEUR2 &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;'ssh serveur2'&lt;/span&gt; 
	...&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;–tab-with-profile&lt;/strong&gt; permet d’ajouter un onglet dans la fenêtre en lui précisant un profil en particulier. Ici le 
profil créé juste avant pour les fenêtres SSH.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;–title&lt;/strong&gt; donne un nom à l’onget. Ce nom me sert à voir rapidement sur quel serveur la connexion est ouverte. C’est 
pour cela qu’il ne doit pas changé.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;-e&lt;/strong&gt; permet d’éxécuter une commande lors de l’ouverture du terminal. La commande lancée est donc l’ouverture de la 
connexion SSH sur le serveur voulu.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cette commande me permet donc d’ouvrir, d’un coup, toutes les connexions vers les serveurs que j’utilises. Cela permet 
surtout de le faire dans une seule fenetre avec autant d’onglet que de connexion, toujours dans le même ordre et nommés 
chacun par le nom du serveur où je suis connecté.&lt;/p&gt;

&lt;p&gt;Il ne reste plus alors qu’a créé un racourcis vers cette commande pour l’éxecutée d’un seul clic. La première ouverture 
affichera juste une boite de saisie pour dévérouiller ma clé SSH avant d’établir les connexions.&lt;/p&gt;

&lt;p&gt;Au final, rien de très compliqué à mettre en place, mais un gain de temps au quotidien.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Recompiler automatique un fichier à la sauvegarde.</title>
            <link href="http://www.dalichampt.fr/developpement/recompiler-automatiquement-un-fichier-a-la-sauvegarde/"/>
            <updated>2014-09-06T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/developpement/recompiler-automatiquement-un-fichier-a-la-sauvegarde</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Un des points fort des outils recent comme Play!, restX ou même Jekyll qui anime ce blog, c’est la recompilation 
automatique dès la sauvegarde d’un fichier. Cela permet de voir immediatement le resultat par un simple F5. Nous
sommes bien loin des redeploiement interminable des serveurs JEE, même si JRebel améliore grandement les choses.&lt;/p&gt;

&lt;p&gt;Aujourd’hui, j’ai remis le nez dans FOP. Outil que j’avais pas mal utilisé dans mon ancienne mission et que j’avais
à l’époque outillé avec Ant pour générer plus rapidement mes PDF enfin de tester mes modifications. Je travaillé alors
sous Windows et cela me demandait de :&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;fermer le PDF ouvert (car windows lock les fichiers ouvert),&lt;/li&gt;
  &lt;li&gt;lancer la tâche Ant de transformation XSLT XSL-FO (fait dans eclipse),&lt;/li&gt;
  &lt;li&gt;ouvrir le PDF généré (ce dernier point était en fait aussi fait par Ant).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pour un petit test comme je viens de faire, pas question de remettre en place tout l’outillage Ant, mais je voulais
tout de même voir rapidement le resultat à chaque modification de mes fichier. C’est encore une fois un petit 
utilitaire sous Linux qui m’a rendu un très grand service.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;inotifywait&lt;/strong&gt; permet de surveiller la modification d’un fichier et d’executer une commande lorsque celle-ci intervient.&lt;/p&gt;

&lt;p&gt;Il suffit donc d’installer le paquet &lt;strong&gt;&lt;a href=&quot;https://github.com/rvoicilas/inotify-tools&quot;&gt;inotify-tools&lt;/a&gt;&lt;/strong&gt; et de lancer dans 
un terminal :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;k&quot;&gt;while &lt;/span&gt;inotifywait &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; close_write LE_FICHIER_A_SURVEILLER &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do 
    &lt;/span&gt;COMMANDE_A_EXECUTER &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;dans mon cas, cela ressembler à :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;k&quot;&gt;while &lt;/span&gt;inotifywait &lt;span class=&quot;nt&quot;&gt;-e&lt;/span&gt; close_write file.xsl &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do 
    &lt;/span&gt;clear &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; sh fop &lt;span class=&quot;nt&quot;&gt;-xml&lt;/span&gt; file.xml &lt;span class=&quot;nt&quot;&gt;-xsl&lt;/span&gt; file.xsl &lt;span class=&quot;nt&quot;&gt;-pdf&lt;/span&gt; file.pdf &lt;span class=&quot;p&quot;&gt;;&lt;/span&gt; 
&lt;span class=&quot;k&quot;&gt;done&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;A chaque sauvegarde du fichier file.xsl, la génération du fichier PDF est lancée automatiquement. Et, cerise sur le
gateau, même pas besoin de recharger le PDF, evince se mets à jour seule. Très pratique pour voir le rendu sur un
deuxieme écran avec un gain de produictivité impressionnant en 1 seule ligne de commande.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Ouvrir un document LibreOffice en lecture seule depuis nemo.</title>
            <link href="http://www.dalichampt.fr/linux/ouvrir-un-document-libreoffice-en-lecture-seule-depuis-nemo/"/>
            <updated>2014-02-12T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/linux/ouvrir-un-document-libreoffice-en-lecture-seule-depuis-nemo</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;J’adore linux, et plus particulièrement Linux Mint. Et comme j’ai la chance de pouvoir choisir sur quel OS je développe
chez mon client actuel, j’ai bien évidement remplacer le Windows 7 installé par défaut sur ma machine par une version de
mon OS préféré. Les gains de productivité sont, croyez moi, loin d’être négligeable. Ils valent en tout cas largement
les quelques petits efforts que je dois parfois faire pour continuer à fonctionner dans un environnement Windows.&lt;/p&gt;

&lt;p&gt;Un de ces petits efforts justement est de travailler avec des fichiers Word/Excel stockés sur un partage réseaux. Car là
où Microsoft Word/Excel permettent d’ouvrir en lecture seule un fichier déjà ouvert, LibreOffice lock le fichier et le
rend inaccessible pour tout le monde.&lt;/p&gt;

&lt;p&gt;Or très souvent, ces fichiers que j’ouvre sur le serveur sont les spécifications que je consulte, sans avoir l’intention
de les modifiées. Elles doivent donc restées accessibles pour tout le monde. Au moins en lecture.&lt;/p&gt;

&lt;p&gt;LibreOffice propose lui aussi d’ouvrir des documents en lecture seule. Mais l’option n’est pas facilement accessible. En
tout cas, elle ne l’est pas par défaut dans l’explorateur de fichier.&lt;/p&gt;

&lt;p&gt;Pour ouvrir un fichier en lecture seule, LibreOffice propose une petite case à cocher en bas de la fenêtre de sélection
du fichier à ouvrir. Ce qui se révèle bien moins pratique qu’un double click sur le fichier.&lt;/p&gt;

&lt;p&gt;LibreOffice propose aussi un &lt;a href=&quot;https://help.libreoffice.org/Common/Starting_the_Software_With_Parameters/fr&quot; title=&quot;Liste des paramètres de LibreOffice&quot;&gt;argument à ajouter à la ligne de commande&lt;/a&gt;  qui permet d’ouvrir un le fichier en lecture seule. Mais là encore, pas question de passer par la console pour ouvrir un fichier.&lt;/p&gt;

&lt;p&gt;C’est là que les &lt;a href=&quot;https://developer.gnome.org/integration-guide/stable/desktop-files.html.fr&quot;&gt;fichiers *.desktop&lt;/a&gt;
entrent en jeu. Ces fichiers permettent d’intégrer le lancement d’une application dans l’interface GNOME.&lt;/p&gt;

&lt;p&gt;J’ai donc créer les 2 lanceurs suivants pour respectivement les fichiers Word et Excel. Ces fichiers sont déposés dans
le répertoire ~/.local/share/applications/&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/8951995.js?file=libreoffice-writer-read-only.desktop&quot;&gt; &lt;/script&gt;

&lt;script src=&quot;https://gist.github.com/8951995.js?file=libreoffice-calc-read-only.desktop&quot;&gt; &lt;/script&gt;

&lt;p&gt;3 entrées sont à notées :&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Exec&lt;/strong&gt; : Désigne la ligne de commande qui sera exécutée. Ici on pointera vers l’exécutable LibreOffice en précisant
le module utilisé (–writer ou –calc). L’ouverture en lecture seule se faisant grâce à l’option  –view et %f étant le
fichier en question.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Name&lt;/strong&gt; et &lt;strong&gt;Name[fr_FR]&lt;/strong&gt; : Définissent le texte qui sera affiché dans le menu. Il est possible de localiser ce nom
en fournissant la locale, ici fr_FR.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Icon&lt;/strong&gt; : Spécifie quelle icone sera affichée. Dans le cas présent, ceux de LibreOffice Writer et Calc.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Enfin, il m’a fallu “binder” ces 2 lanceurs sur les types mimes des fichiers Word et Excel. Cela s’est fait en ajoutant
les entrées suivantes dans le fichier ~/.local/share/applications/mimeapps.list dans la section &lt;strong&gt;[Added Associations]&lt;/strong&gt;&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/8951995.js?file=mimeapps.list&quot;&gt; &lt;/script&gt;

&lt;p&gt;Voila donc comment ajouter facilement une option supplémentaire dans le menu contextuel des fichiers *.doc, *.docx,
*.xls et *.xlsx qui permet d’ouvrir ces fichiers en lecture seule.&lt;/p&gt;

&lt;p&gt;Il ne me reste plus qu’a utiliser le clic droit sur les fichiers, puis dans “Ouvrir avec” choisir le lanceur
correspondant.
LibreOffice fera alors une copie du document dans le répertoire temporaire avant de l’ouvrir et ne lockera pas le
fichier sur le réseaux. Cela peut toutefois occasionner un petit temps d’attende lors de l’ouverture de gros fichier
(certains faisant plus de 10Mo) le temps de réaliser cette copie.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Screen, l'utilitaire obligatoire pour lancer des longs traitements sur un serveur.</title>
            <link href="http://www.dalichampt.fr/developpement/screen-l-utilitaire-obligatoire-pour-lancer-des-longs-traitements-sur-un-serveur/"/>
            <updated>2013-06-25T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/developpement/screen-l-utilitaire-obligatoire-pour-lancer-des-longs-traitements-sur-un-serveur</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Récemment, j’ai travaillé sur un programme de migration de donnée de base à base. Ce traitement est composé d’un 
ensemble de script shell, db2, sed, awk, mais cela n’a que peu d’importance. Ce qui est important c’est de noter que ce 
batch pouvait prendre plusieurs heures pour se dérouler complètement.&lt;/p&gt;

&lt;p&gt;Le lancement pour les tests se faisait via une connexion SSH depuis ma machine de développement (Linux Mint) vers les
serveur de test sous RHEL. Et quoi de plus énervant que d’avoir son traitement interrompue après 1 ou 2 heures suite à
une déconnexion du réseaux, plantage de l’ordi ou même une erreur de fenêtre (si si, j’ai réussi à fermer la terminal où
s’exécuter mon traitement).&lt;/p&gt;

&lt;p&gt;C’est la que &lt;a href=&quot;http://www.gnu.org/software/screen/&quot; title=&quot;GNU Screen&quot;&gt;Screen&lt;/a&gt; rentre en jeu.&lt;/p&gt;

&lt;p&gt;Screen est un multiplexeur de terminaux. Il permet à un utilisateur de séparer plusieurs sessions dans un même terminal
et de passer de l’une à l’autre sans fermer celles-ci. Mais là ou Screen deviens vraiment intéressant, c’est qu’il rend
les sessions persistantes. Ainsi, la déconnexion d’un session pour n’importe quelle raison n’entraînera pas l’arrêt des
processus de cette dernière.&lt;/p&gt;

&lt;p&gt;Une fois installé (sur le serveur), il ne reste plus qu’à démarrer un nouveau screen après s’être connecté en SSH sur la
machine.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;screen &lt;span class=&quot;nt&quot;&gt;-S&lt;/span&gt; nom_du_screen&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Puis de se détacher du screen sans le fermer via les touches &lt;em&gt;ctrl  + ad&lt;/em&gt; pour revenir à la session SSH.&lt;/p&gt;

&lt;p&gt;Il est alors possible de se déconnecter en laissant le screen tourner. C’est alors très pratique pour lancer un
traitement sur un serveur le soir et pouvoir éteindre son PC avant de partir.&lt;/p&gt;

&lt;p&gt;Une fois reconnecté (le lendemain matin par exemple), un simple :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;screen &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; nom_du_screen&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;permet de retrouver la session précédemment crée.&lt;/p&gt;

&lt;p&gt;Si vous ne lancer qu’une seule session, il n’est pas nécessaire de la nommée.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;screen&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;et&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;screen &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;feront tout à fait l’affaire.&lt;/p&gt;

&lt;p&gt;La sortie définitive du screen se faisant par un simple exit.&lt;/p&gt;

&lt;p&gt;Screen permet également de débuter une session depuis un client et de la reprendre sur un autre, offrant alors la
possibilité à une autre personne, de reprendre la main sur votre session. Ce qui peu être pratique pour demander de
l’aide a une personne ne pouvant pas se déplacer à votre bureau.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Utilisation de bloc try catch dans les tests unitaires.</title>
            <link href="http://www.dalichampt.fr/developpement/utilisation-de-bloc-try-catch-dans-les-tests-unitaires/"/>
            <updated>2012-10-17T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/developpement/utilisation-de-bloc-try-catch-dans-les-tests-unitaires</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;En me baladant aujourd’hui dans les tests unitaires du projet, je suis tombé sur une erreur que pas mal de développeurs semblent faire.&lt;/p&gt;

&lt;p&gt;Voila le bout de code en question :&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-java&quot; data-lang=&quot;java&quot;&gt;&lt;table class=&quot;rouge-table&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class=&quot;gutter gl&quot;&gt;&lt;pre class=&quot;lineno&quot;&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;    &lt;span class=&quot;kd&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;kt&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;testMethode&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;()&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
        &lt;span class=&quot;k&quot;&gt;try&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;c1&quot;&gt;// création d'un fichier temporaire&lt;/span&gt;

            &lt;span class=&quot;c1&quot;&gt;// manipulation du fichier&lt;/span&gt;

            &lt;span class=&quot;n&quot;&gt;assertTrue&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Erreur dans le code testé&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;methodeTestee&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;());&lt;/span&gt;

            &lt;span class=&quot;c1&quot;&gt;// suppression du fichier temporaire&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;catch&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nc&quot;&gt;IOException&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ioe&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
            &lt;span class=&quot;n&quot;&gt;log&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;na&quot;&gt;error&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Erreur lors de la création du fichier de test&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ioe&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;
        &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
    &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Le code de test, que je n’ai pas retranscrit ici fait bien son travail. Mais comme tout code qui manipule des fichiers,
celui-ci peut lever une exception. Hors sous cette forme, si une exception est levée lors de la manipulation du fichier
temporaire de test, celle-ci sera catchée et loggée en erreur.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mais le test lui, sera un succès.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Aucune exception, aucune assertion non valide, aucun appel à la méthode fail. Le test peut être passé au vert.&lt;/p&gt;

&lt;p&gt;Or il y a bien eu un problème. Il doit être au rouge.&lt;/p&gt;

&lt;p&gt;Le bonne solution serait donc, soit de remplacer la log par un appel à la méthode fail().&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-java&quot; data-lang=&quot;java&quot;&gt;    &lt;span class=&quot;n&quot;&gt;fail&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s&quot;&gt;&quot;Erreur lors de la création du fichier de test&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;);&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;soit ne pas se préoccuper des exceptions levées par le test et les laisser remonter. Elles seront alors traitées par
JUnit qui fera échouer le reste.&lt;/p&gt;

&lt;p&gt;Dans tout les cas, le code de test n’est pas du code de production et contrairement à ce dernier, nous voulons qu’il
“plante” le plus souvent possible. Il n’a pas vocation à être résiliant, bien au contraire. Sa faible tolérance aux
exceptions garantie une plus grande découverte des bugs dans le code de production.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Quand Virgin Mobile force ses clients à changer de réseau.</title>
            <link href="http://www.dalichampt.fr/autre/quand-virgin-mobile-force-ses-clients-a-changer-de-reseau/"/>
            <updated>2012-10-09T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/autre/quand-virgin-mobile-force-ses-clients-a-changer-de-reseau</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Après l’affaire des pigeons du Web de la semaine passée, c’est à mon tour d’avoir l’impression de me faire tondre. Voila
en tout cas une bien belle occasion de me remettre à blogger.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Août 2009&lt;/em&gt; je quitte Orange chez qui je suis depuis 8 ans pour m’abonner chez Virgin Mobile avec un forfait
Paradyse 2H. Je ne quitte pas totalement Orange, puisque Virgin Mobile utilise le réseau Orange. Cela est important pour
la suite. Les &lt;a href=&quot;http://www.rueducommerce.fr/odr/CGA_forfait_virgin_juin2011.pdf&quot; title=&quot;CGA VIrgin Mobile au 22/06/2011&quot;&gt;conditions générales d’abonnement&lt;/a&gt;
désignant bien Orange France comme “l’opérateur de réseau”.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Les présentes Conditions Générales d’Abonnement (CGA), ont pour objet de définir les conditions dans lesquelles la
société OMER TELECOM LIMITED,ci-après «Virgin Mobile» fournit au Client son Service Virgin Mobile de
radiotéléphonie publique numérique GSM/GPRS et UMTS, ci-après «le Service», &lt;strong&gt;sur le réseau de télécommunication exploité
par l’Opérateur Orange France, ci-après « Opérateur »&lt;/strong&gt;. Les dispositions des présentes CGA prévalent sur toutes
autres.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;L’emphase est de moi&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;11 juin 2011&lt;/em&gt; Virgin Mobile annonce avoir signer un partenariat avec SFR pour l’utilisation de son réseau., Inquiet, je
pose la question au Community Manager de Virgin &lt;a href=&quot;https://twitter.com/VirginMobileFr/status/78022197687492608&quot; title=&quot;Réponse du CM&quot;&gt;qui me confirme qu’ils ne quitterons pas le réseau Orange&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/images/2012/TweetVirginMobile_g.png&quot;&gt;&lt;img src=&quot;/images/2012/TweetVirginMobile_p.png&quot; alt=&quot;Tweet Virgin Mobile&quot; title=&quot;Tweet Virgin Mobile&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Juin 2011&lt;/em&gt; suite à un appel du service fidélisation de Virgin Mobile, je prolonge mon engagement de 2 ans contre une
baisse de 3€ par mois de ma facture.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;novembre 2011&lt;/em&gt; Virgin Mobile change &lt;a href=&quot;http://www.virginmobile.fr/cga.htm&quot; title=&quot;GCA VIrgin Mobile actuelles&quot;&gt;les conditions générales d’abonnement&lt;/a&gt;,
l’opérateur de réseau étant mainteant soit Orange, soit SFR. Cela passe évidement inaperçu, tant les termes sont vagues.
Il n’y a d’ailleurs aucun changement visible au quotidien.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;L’Opérateur de Réseau: organisme autorisé à établir et à exploiter un réseau national de radiotéléphonie numérique
sous les normes européennes GSM et UMTS. Les services fournis par Virgin Mobile sont délivrés en utilisant pour les
départs d’appels &lt;strong&gt;soit le réseau Orange France, soit le réseau SFR&lt;/strong&gt; ou tout autre opérateur exploitant
un réseau radioélectrique ouvert au public sur le territoire métropolitain.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;L’emphase est de moi&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;21 septembre 2012&lt;/em&gt; je reçois par courrier ma “nouvelle carte SIM”. Je n’ai rien demandé, mais si Virgin à besoin que je
change ma carte pour mettre à jour leur réseau, pourquoi pas. Le courrier ne détail pas les raisons du changement. J’ai
jusqu’au 10 octobre pour l’activer, procrastination oblige, je la mets de coté sans l’activer.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;24 octobre 2012 vers 20h30&lt;/em&gt; j’appel ma copine pour lui dire que je rentre, tout vas bien.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;25 octobre 2012 au matin&lt;/em&gt; j’allume mon portable et constate que je n’ai pas de réseau, ni voix, ni SMS, ni data,
seulement les appels d’urgence.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;25 octobre vers 13h00&lt;/em&gt; n’ayant toujours pas de réseau, je contact le service client. On me demande de faire un test
croisé, je n’ai pas d’autre mobile sous la mains, je le ferrais le soir.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;25 octobre au soir&lt;/em&gt; je fait le teste croisé avec le portable de ma copine. Ma carte ne fonctionnant pas dans son mobile
alors que l’inverse marche sans soucis.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;26 octobre vers 13h00&lt;/em&gt; j’appel une seconde fois le service client Virgin Mobile pour leur faire part du résultat du
teste croisé. Ils me demandent alors d’activer la carte reçue la semaine passée. Je me connecte sur le site d’activation
de la carte. Celle-ci entrera en fonction le 5 octobre à 15h00. Parallèlement à cela, le service technique doit me
rappeler sous 15 jours pour mon problème initial. Trouvant le délais de 15 jours un peu long on me rassure en me disant
qu’un geste commercial sera fait pour cette période. Cette appel me fait alors
&lt;a href=&quot;/autre/stockage-de-mot-de-passe-en-clair-mauvaise-pratique-chez-mon-operateur-mobile/&quot;&gt;me poser des questions sur le sérieux de Virgin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5 octobre 2012 vers 15h20&lt;/em&gt; après 11 jours sans mobile, ma nouvelle carte SIM s’active. J’ai perdu tout mes paramètres
que je ressaisis à nouveau et je me rend alors compte que je suis maintenant connecté sur le réseau SFR.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5 octobre 2012 vers 15h30&lt;/em&gt; j’appel le service client pour me faire confirmer ce changement de réseau. La conversation
est coupée juste après cela.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5 octobre 18h00&lt;/em&gt; j’appel une nouvelle fois le service client pour leur demander de me re-basculer sur le réseau Orange.
Impossible à faire une fois la nouvelle carte activée me dit’on. Je demande alors de pouvoir résilier mon abonnement. En
effet, j’ai choisi Virgin Mobile pour son réseau Orange, le réseau SFR ne passant pas chez mes parents chez qui je passe
suffisamment de temps pour avoir besoin de mon mobile. A près tout, la couverture du réseau est quand même un point
essentiel lors du choix d’un opérateur. On me transfère alors vers le service fidélisation (comprendre désabonnement)
qui me dit alors qu’ils ne s’occupent pas des résiliation pour motifs légitimes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5 octobre 18h30&lt;/em&gt; nouvel appel au service client. Je demande à la conseillère de relire la note que Rodolphe (le
conseiller fidélisation) à mis dans mon dossier. Elle refuse de prendre ma demande en compte et mets fin à l’appel alors
que je lui expliquer les raisons de ma demande. Un brin énervé, je laisse une appréciation catastrophique à “l’enquête
de satisfaction”. Notez bien que l’appel à bien continué pour que je puisse aller au bout de cette enquête.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;5 octobre 18h40&lt;/em&gt; 3ieme appel au service client de la journée. Cette fois le conseillé accepte de prendre l’adresse de
mes parents pour que le service technique mène une étude et me réponde sous 15 jours. J’ai mener l’étude en 3 minutes
sur le &lt;a href=&quot;http://assistance.sfr.fr/mobile_forfait/mobile/couverture-reseau/en-48-62267&quot; title=&quot;Couverture réseau SFR&quot;&gt;site de SFR&lt;/a&gt;.
Je relance également le sujet du geste commercial pour les 11 jours sans téléphone. Le conseiller me dit qu’il n’y a pas
de soucis, mais que cela sera validé une fois le résultat de l’étude connu.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;6 et 7 octobre 2012&lt;/em&gt; c’est le 4 ans de mon neveux, je passe le week end chez mes parents, sans téléphone donc. La
maison est dans une vallée dans laquelle seul le réseau Orange est accessible.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;8 octobre&lt;/em&gt; après une discussion avec un collègue (lui aussi victime de cette migration forcée sur le réseau SFR)
&lt;a href=&quot;https://twitter.com/sdalichampt/status/255212350204948480&quot; title=&quot;Mon tweet&quot;&gt;une option SMS illimités à 10€ par mois&lt;/a&gt; (j’ai
déjà les SMS illimité dans mon forfait) est apparue dans mon espace client. Un coup de téléphone au service client me
confirme que c’est une erreur du site, que cette option n’est pas activée.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/images/2012/OptionSMS_g.png&quot;&gt;&lt;img src=&quot;/images/2012/OptionSMS_p.png&quot; alt=&quot;Option SMS&quot; title=&quot;Option SMS&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;9 octobre 2012 14h30&lt;/em&gt; les 15 jours de délai pour l’intervention planifiée le 26 octobre arrivant à leur terme, je
contact le service client pour aller à la pêche aux infos. Alors que je m’expliqué sur ma demande, l’appel est coupé,
cette fois pas d’enquête.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;9 octobre 2012&lt;/em&gt; je relance mon appel et explique au conseiller que l’on viens d’être interrompu suite à un problème de
réception. Celui ci me dit qu’il s’en excuse et qu’ils n’ont pas la possibilité de mettre fin a un appel. Je lui dis que
c’est faux (cf appel du 5/10 où je suis resté en ligne pour répondre à l’enquête), bien que cette fois, c’est
effectivement une coupure d’appel presque classique. J’explique à nouveau la raison de mon appel, à savoir le résultat
de l’étude technique et le conseiller m’avoue qu’il ne retrouve aucune trace de l’étude dans mon dossier. Mais en
évoquant le passage sur le réseau SFR et ma demande de résiliation, il m’annonce l’envoi d’un nouvelle carte SIM (sur le
réseau SFR) pour vérifier que la non réception ne viens pas d’un défaut de ma carte SIM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT au 16 octobre&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;11 octobre 2012 15h00&lt;/em&gt; je reçois un mail qui m’informe que ma nouvelle carte SIM viens d’être envoyée alors que le
conseiller m’avait déjà confirmé l’envoi 2 jours avant. Le mail me propose de suivre mon colis sur le site de la poste,
mais aucun numéro de suivi n’est associé.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;11 octobre 2012&lt;/em&gt; ma nouvelle carte SIM arrive au courrier. Le conseiller disait vrai, le mail disait faux. Je l’active
et constant que la couverture du réseaux SFR n’a pas changée. Je recontacte le service client. Cette fois on m’annonce
ENFIN que je peux me désabonner pour motif légitime. Je demande la procédure à suivre pour la résiliation en faisant une
portabilité de numéro. Le conseiller m’informe que je dois envoyé un courrier pour la résiliation et communiquer mon RIO
a mon nouvel opérateur. Il me donne aussi le numéro pour obtenir mon RIO.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;12 octobre 2012&lt;/em&gt; j’envoie une lettre recommandée avec accusé de réception à Virgin Mobile pour leur notifier ma demande
de résiliation pour motif légitime.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;15 octobre 2012&lt;/em&gt; Virgin reçois ma lettre résiliation. Ils ont donc &lt;a href=&quot;http://www.legifrance.gouv.fr/affichCode.do;jsessionid=D786467E03F3F71F137B054646CE8016.tpdjo04v_2?idSectionTA=LEGISCTA000006161828&amp;amp;cidTexte=LEGITEXT000006069565&amp;amp;dateTexte=20121016#LEGIARTI000018047947&quot; title=&quot;Article L121-84-2 du code de la consomation&quot;&gt;jusqu’a 25 octobre&lt;/a&gt;
pour la prendre en compte.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;16 octobre 2012 14h50&lt;/em&gt; je reçois un message du service technique de Virgin Mobile. Pour mon problème de couverture, il
préconise une changement de carte SIM.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;16 octobre 2012 15h00&lt;/em&gt; je contact le service client pour savoir quoi faire de ce message du service technique. Le
conseiller me confirme la réception de ma lettre le 15 octobre. Il me confirme également la résiliation pour motif
légitime. Et me confirme encore que je recevrais une facture de clôture.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;16 octobre 2012 18h30&lt;/em&gt; je me mets en recherche d’un autre opérateur. Je remarque que le portabilité n’est pas possible
lorsque la résiliation est déjà faite ou qu’elle est en cours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;16 octobre 2012 18h40&lt;/em&gt; j’appel un nouvelle fois le service client. Le premier conseiller me renvoie vers le service
résiliation qui doit voir pour la portabilité. Le conseiller résiliation remets alors tout en question. Puisque le
service technique veux m’envoyer une carte SIM, il n’accepteras la résiliation pour motif légitime qu’une fois
l’échange de carte SIM fait. Je lui dit que ce n’est pas ce qu’on ma confirmé par 2 fois et que mon courrier est déjà
envoyé et reçu. Ce n’est alors plus de son ressort alors, mais le service résiliation courrier qui me contactera avant
le fin du délais de 10 jours. Au passage, il me dis qu’il peu me faire bénéfice d’un forfait moins cher que celui que
j’ai.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EDIT au 24 octobre&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;18 octobre 2012 14h00&lt;/em&gt; Je reçois un mail. Comme j’ai demandé la portabilité de mon numéro, Virgin ne peu prendre en
compte ma demande de résiliation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;18 octobre 2012 14h10&lt;/em&gt; Nouvel appel à la hotline. Après avoir expliqué l’historique une nouvelle fois, j’atterris (sans
trop savoir pourquoi) au service qualité. Pour la première fois, j’ai l’impression que je suis enfin dans un service qui
à un vrai pouvoir d’action. Je dois cependant reprendre depuis le début. La personne me confirme que ma résiliation peu
pas entre acceptée. On me dis qu’une opération d’optimisation vas être faite sur ma ligne. Je dois juste garder la
portable allumé et attendre 2 ou 3 jours.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;20 octobre 2012&lt;/em&gt; Je passe la journée chez mes parents. Donc dans une zone non couverte SFR. J’ai alors la surprise de
voir que mon portable capte. Étrangement, une personne, a coté de moi, avec un abonnement SFR ne reçois aucun signal.
Je télécharge alors quelques applications sur Google Play qui me confirment ce que je pensais. Alors qu’il était
impossible de revenir sur le réseau d’Orange (réseau 20801), je viens d’y re-basculer sans même changer de carte SIM ou
rebooter mon téléphone.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;23 octobre 2012 15h00&lt;/em&gt; Le service qualité me recontacte pour savoir si mes problèmes sont résolus. Ils ne sont pas la
pour me donner des explications que je demande. Le but de l’appel est juste d’acter la bonne réception et me propose 1
mois d’abonnement gratuit au mois de décembre. De leur coté, le dossier est clos.&lt;/p&gt;

&lt;p&gt;Du mien, le dossier est clos aussi. Trop de mauvaises foi, trop de mensonges, je change d’opérateur, même si ça ne
sera pas pour motif légitime.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Stockage de mot de passe en clair, mauvaise pratique chez mon opérateur mobile.</title>
            <link href="http://www.dalichampt.fr/autre/stockage-de-mot-de-passe-en-clair-mauvaise-pratique-chez-mon-operateur-mobile/"/>
            <updated>2012-09-26T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/autre/stockage-de-mot-de-passe-en-clair-mauvaise-pratique-chez-mon-operateur-mobile</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Je rencontre en ce moment un petit soucis avec mon mobile. Rien de grave je pense, juste ma carte SIM qui ne fonctionne
plus. Comme tout le monde, après quelques tests infructueux effectués dans mon coin, j’ai pris contact avec la hotline
de mon opérateur. Mais là n’est pas vraiment le sujet.&lt;/p&gt;

&lt;p&gt;Je suis abonné chez Virgin Mobile depuis 3 ans et j’ai déjà plusieurs fois appeler la hotline à qui ne je n’ai pas de
reproche à faire. Mais cette fois, alors que le conseiller remplissait le dossier pour le transmettre au service
technique, une de ses questions m’a vraiment interloquée.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;J’aurais besoin de votre mot de passe?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Je lui ai alors dis que NON je ne lui donnerais pas mon mot de passe par téléphone, que ça ne se faisait pas de donner
son mot de passe.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;De toute façon, je l’ai sous les yeux, c’est juste pour vérification.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Et il me donne alors le premier et dernier chiffre de mon mot de passe. Il a effectivement mon mot de passe sous les
yeux. Puisqu’il a déjà mon mot de passe, autant pas se battre et lui donner en entier, au moins mon dossier pourras
partir au service technique plus vite.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Et maintenant?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Chez Virgin Mobile, les mots de passe sont donc stockés en clair et sont de plus accessibles par les employés. On est
ici face à un très bel exemple de ce qu’il ne faut surtout jamais faire en terme de sécurité informatique. Ça tout le
monde le sais, mais visiblement, pas eux.&amp;lt;/p&amp;gt;&lt;/p&gt;

&lt;p&gt;Même un stagiaire sait qu’il faut &lt;a href=&quot;http://fr.wikipedia.org/wiki/Fonction_de_hachage&quot; title=&quot;Fonction de hachage'&quot;&gt;hasher&lt;/a&gt;
(voir même mieux &lt;a href=&quot;http://fr.wikipedia.org/wiki/Attaque_par_dictionnaire#Salage_de_mot_de_passe&quot; title=&quot;Salage de mot de passe&quot;&gt;saler&lt;/a&gt;
puis hacher) les mots de passe avant de les enregistrer où que ce soit. Et qu’un hash &lt;a href=&quot;http://fr.wikipedia.org/wiki/SHA-1&quot; title=&quot;SHA-1&quot;&gt;SHA-1&lt;/a&gt;
(ou au pire un &lt;a href=&quot;http://fr.wikipedia.org/wiki/MD5&quot; title=&quot;MD5&quot;&gt;MD5&lt;/a&gt;) permet de répondre au besoin d’authentification du client.&lt;/p&gt;

&lt;p&gt;Le problème, c’est qu’en cas d’attaque informatique sur le réseau de Virgin Mobile, mon mot de passe (et celui des
autres clients) se retrouvera cette fois dans la nature, en clair, avec toute les conséquences que cela implique. Et en
voyant comment la plus élémentaire des protection n’est pas appliquée, j’imagine que les failles doivent être nombreuses
chez vm.&lt;/p&gt;

&lt;p&gt;Pour finir, voila pourquoi il faut utiliser des mots de passe différents pour chaque comptes que vous utilisez, car même
si votre mot de passe est solide et que vous l’avez choisis avec soin, il n’est pas impossible qu’il se retrouve chez
quelqu’un pour qui votre propre sécurité n’est pas une priorité. Bien sûr, il est aussi possible de changer d’opérateur
pour un autre, plus sérieux, ce qui est peut être ce que je vais finalement faire.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Une semaine avec Akibag.</title>
            <link href="http://www.dalichampt.fr/autre/une-semaine-avec-akibag/"/>
            <updated>2010-10-09T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/autre/une-semaine-avec-akibag</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Voilà maintenant une semaine que je traine un peu partout avec moi mon sac &lt;a href=&quot;http://www.akibag.com/&quot;&gt;Akibag&lt;/a&gt;. Pour ceux
qui ne connaitrait pas la marque, Akibag propose des sacoches pour netbook, plus petites que les sacs pour portables
traditionnels.&lt;/p&gt;

&lt;p&gt;J’ai opté pour le modèle &lt;a href=&quot;http://akibag.com/la-boutique/akibag-chokoreeto/&quot;&gt;Chokoreeto&lt;/a&gt;, acheté 29,90€ (et les frais de
port étaient offerts) et reçu en 3 jours.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2010/akibagchokoreetotoshibaac100_m.jpg&quot; alt=&quot;Akibag Chokoreeto et Toshiba AC100&quot; title=&quot;Akibag Chokoreeto et Toshiba AC100&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Le premier contact est plutôt très positif, la qualité de fabrication est bonne, les matériaux utilisés sont de
qualités, les coutures quant à elles sont solides. La forme du sac, avec son fond plat et suffisamment rigide permet de
le poser sans que celui ci ne tombe, ce qui permet de ne pas voir tout le petit bordel (chargeur, porte feuilles, clés
de voiture, …) s’étaler sur le sol ou le bureau.&lt;/p&gt;

&lt;p&gt;Le sac Akibag est aussi très léger (d’autant plus que mon netbook ne faut que 870g) et la large bandoulière reste
confortable même après de longues heures sur l’épaule. Aucune hésitation à avoir pour emmener avec soit son netbook.&lt;/p&gt;

&lt;p&gt;L’ouverture, sur le dessus du sac, est large et offre un très bon accès a tout ce qui se cache dedans. Le portable est
séparé du reste du sac par un compartiment dédié et il est possible de ranger les petits objets (clé usb, carte mémoire)
dans le pochon amovible ou le compartiment zippé.&lt;/p&gt;

&lt;p&gt;Enfin, le rabat qui viens recouvrir le sac assure une bonne protection contre le vol de ce qu’il y a dans le sac
lorsque vous vous promenez le sac dans le dos. De plus, ce rabat étant aimenté, et non scratché, l’ouverture du sac
reste discrète et il n’y a pas de bande de velcro qui finissent toujours par s’en-crassées avec le temps.&lt;/p&gt;

&lt;p&gt;On pourrait alors croire qu’il ne reste plus rien à améliorer sur cet Akibag. Mais j’aurais quand même quelques petits
reproches à lui faire. Akibag est une sacoche pour netbook. Mais mon netbook est bien plus petit que les autres.
En effet, le Toshiba AC100 ne fait que 2cm d’épaisseur, la ou certains en font 4. Le compartiment pour le portable
portable est donc un peu grand pour le Toshiba AC100 qui bouge un peu. Mais rien de grave cependant, il reste
parfaitement protégé.&lt;/p&gt;

&lt;p&gt;J’aurais aussi apprécié un petit anneau pour y glisser un ou 2 stylos, d’autant qu’il y aurait la place à coté du passe
câble par exemple. Bon, en fait, je sais, un vrai Geek n’écrit pas à l’ancienne, mais c’est quand même parfois pratique
un stylo.&lt;/p&gt;

&lt;p&gt;Bref, si vous chercher un bon sac pour transporter partout avec vous un netbook.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://akibag.com/la-boutique/&quot;&gt;Foncez !!!&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Retour sur la soirée Maven.</title>
            <link href="http://www.dalichampt.fr/rencontre/retour-sur-la-soiree-maven/"/>
            <updated>2010-06-15T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/retour-sur-la-soiree-maven</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;J’ai encore mis du temps à écrire ce billet, mais voilà enfin mon compte rendu de la soirée Maven qui s’est tenue au
&lt;a href=&quot;http://www.lorrainejug.org/&quot;&gt;LorraineJUG&lt;/a&gt; la semaine passée à Nancy.&lt;/p&gt;

&lt;p&gt;Pour présenter brièvement le speaker de la soirée, Arnaud Hériter (&lt;a href=&quot;http://blog.aheritier.net/&quot;&gt;blog&lt;/a&gt;,
&lt;a href=&quot;http://twitter.com/aheritier&quot;&gt;twitter&lt;/a&gt;), il travail comme Software Factory Manager chez eXo Plateform mais est surtout
(en tout cas pour ce qui nous intéresse) committer sur le projet Maven depuis 2004. Arnaud est aussi le co-auteur d’un
livre paru chez Pearson.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://maven.apache.org/&quot;&gt;Maven&lt;/a&gt; est un projet de la fondation &lt;a href=&quot;http://www.apache.org/&quot;&gt;Apache&lt;/a&gt; initié en 2001 par
Jason Van Zyl. C’est un outil de build automatique pour les projets Java.&lt;/p&gt;

&lt;p&gt;Comment le temps était trop limité pour détailler tout ce qu’Arnaud avait prévu, nous avons peu choisir les points sur
lesquels il s’attarderait.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2010/arnaudheritier_m.jpg&quot; alt=&quot;Arnaud Héritier lors de sa présentation de Maven&quot; title=&quot;Arnaud Héritier lors de sa présentation de Maven&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Comment je le disais, 2 semaines se sont déjà passées depuis la soirée. Et comme je n’ai pris aucune note durant la
conférence, j’ai oublier pas mal de chose depuis. Mais voici tout de même les grands points que j’ai retenus.&lt;/p&gt;

&lt;p&gt;##Ne pas suivre les conventions est une erreur.&lt;/p&gt;

&lt;p&gt;Maven fourni un certain nombre de convention dans le nommage et l’organisation des répertoires. Il peut être tentant de
changer ces conventions pour les personnaliser. C’est une erreur. D’un part parce que certains développeurs de module on
fait l’erreur de hard-coder ces noms, et d’autre par parce-que suivre les conventions Maven permet à un développeur
d’appréhender plus rapidement un nouveau projet.&lt;/p&gt;

&lt;p&gt;##Découpage en modules.&lt;/p&gt;

&lt;p&gt;Maven permet de découper un projet en sous module pour le rendre plus simple. Attention cependant à ne pas tomber dans
le piège de vouloir trop découper son projet. La majorité des projets n’ont pas besoins d’être séparés en modules.&lt;/p&gt;

&lt;p&gt;##Au démarrage d’un projet Maven, commencez petit.&lt;/p&gt;

&lt;p&gt;Il existe beaucoup de plugin Maven qui peuvent être mis en place sur un build. Tous ne sont pas obligatoires tout le
temps. Le but de Maven est d’accélérer le développement en facilitant la phase de build, il n’est pas pertinent de
passer plus de temps à mettre en place le build que de faire avancer la projet.&lt;/p&gt;

&lt;p&gt;##Repository local - Nexus.&lt;/p&gt;

&lt;p&gt;Pour certains, il n’est pas possible de lancer Maven sans télécharger Internet. Cela viens effectivement que Maven
permet de télécharger toutes les dépendances du projet depuis des respositoty sur internet. Afin d’éviter cela, il est
possible de mettre en place des caches locaux (Nexus par exemple) sur le réseau de l’entreprise. Ces repository locaux
permettent d’une part de mettre en cache certaines librairies, d’autre part de fournir les librairies internes à
l’organisation.&lt;/p&gt;

&lt;p&gt;##Intégration continue - Hudson/Sonar&lt;/p&gt;

&lt;p&gt;Maven seul est puissant. Maven couplé une plateforme d’intégration continue deviens une machine à produire du logiciel.
Construction automatique du projet, analyse de code, contrôle de qualité et suivie des indicateurs dans le temps, voila
ce que permettent ces outils. De quoi améliorer à la fois la qualité des livrables et réduire des temps de
développement.&lt;/p&gt;

&lt;p&gt;##Intégration dans les IDE encore imparfaite.&lt;/p&gt;

&lt;p&gt;Rien à dire de plus. L’intégration avec les IDE marche, mais sans plus. Il reste des efforts à faire de ce coté la.&lt;/p&gt;

&lt;p&gt;##Le futur : Maven 3.&lt;/p&gt;

&lt;p&gt;La date de sortie de Maven 3 n’est pas encore fixée et il semble resté du travail à l’équipe. Bien qu’une grande partie
du projet à été réécrite, la prochaine version gardera une pleine compatibilité avec la version actuelle. Cette version
se veux d’offrir de meilleurs performances et une plus grande souplesse. Maven 3 intégrera une meilleur gestion des
erreurs et proposera un shell identique sur toute les plateforme.&lt;/p&gt;

&lt;p&gt;Bref, Maven est un formidable outil que je n’ai jamais eu l’occasion d’utiliser dans des conditions réelles (des testes
sur ma machine perso ne sont pas des conditions réelles), mais j’ai maintenant de nouveaux arguments pour pousser à la
mise en place de Maven sur mon projet.&lt;/p&gt;

&lt;p&gt;Bonus : &lt;a href=&quot;http://www.slideshare.net/aheritier/lorraine-jug-1st-june-2010-maven&quot;&gt;Les slides de la présentation&lt;/a&gt;&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>MIC - Miage Intensive Camp.</title>
            <link href="http://www.dalichampt.fr/rencontre/mic-miage-intensive-camp/"/>
            <updated>2010-06-13T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/mic-miage-intensive-camp</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;J’ai déjà eu l’occasion de retourner plusieurs fois dans mon ancienne école (&lt;a href=&quot;http://www.miagenancy.com&quot;&gt;Miage Nancy&lt;/a&gt;)
pour des forums de recherche de stage. J’ai eu à nouveau cette chance hier dans un autre contexte.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://miage.net/&quot;&gt;Miage Connection&lt;/a&gt;, l’association regroupant toutes les Miages de France organisait cette année à
Nancy le Miage Intensive Camp. Le MIC est un week end de formation à destination des  responsables des différentes
associations d’étudiants Miagistes. Sponsor de Miage Connection, mon employeur, Sopra Group, m’a donc demandé d’assurer
la présence dans mon ancienne école.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2010/badgemic_m.jpg&quot; alt=&quot;Mon Badge pour la journée&quot; title=&quot;Mon Badge pour la journée&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Au programme, une présentation de la société aux étudiants, suivie d’entretien individuel pour les étudiants intéressé
par rejoindre le groupe, soit pour un prochain stage (étudiants de L3 et M1) ou un emploi (étudiants de M2 en fin de
stage).&lt;/p&gt;

&lt;p&gt;Je dois dire que j’ai passé une agréable journée avec les étudiants. C’est plaisant de voir que les réseaux inter-miage
se développent et qu’ils permettent maintenant aux anciens de revenir dans leur école pour aider les futurs diplômés.&lt;/p&gt;

&lt;p&gt;Le programme étant d’ailleurs trop chargé et le bâtiment fermant ses portes trop tôt, nous avons dû terminer les
entretiens dans un café voisin.&lt;/p&gt;

&lt;p&gt;Rendez vous maintenant après la prochaine rentrée universitaire, j’espère être présent cette année encore au forum
&lt;a href=&quot;http://www.miagere.com/&quot;&gt;MiageRé&lt;/a&gt;.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Ménage.</title>
            <link href="http://www.dalichampt.fr/moi/menage/"/>
            <updated>2010-05-16T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/moi/menage</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;C’est la saison qui le veux. Après avoir passer 3 jours (IRL) à évacuer un tas de branchage qui s’accumulait depuis plus
de 10 ans, je m’attaque maintenant au ménage dans ce blog. Et je vais être aussi radical.&lt;/p&gt;

&lt;p&gt;Donc, comme je le disais dans &lt;a href=&quot;/moi/ce-blog-est-mort-non/&quot;&gt;ce billet de reprise en main&lt;/a&gt; je viens
de supprimer (en fait, ils sont juste offline) tout les anciens billets. J’avais tout de même écrit 245 articles ici,
surtout au début.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Retour sur la présentation de Play Framework.</title>
            <link href="http://www.dalichampt.fr/rencontre/retour-sur-la-presentation-de-play-framework/"/>
            <updated>2010-05-14T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/rencontre/retour-sur-la-presentation-de-play-framework</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;C’est le 6 mai dernier que s’est tenue la 9ieme rencontre du &lt;a href=&quot;http://www.lorrainejug.org/&quot;&gt;LorraineJUG&lt;/a&gt; dédiée a
&lt;a href=&quot;http://www.playframework.org/&quot;&gt;Framework Play&lt;/a&gt;. Et c’est &lt;a href=&quot;http://guillaume.bort.fr/&quot;&gt;Guillaume Bort&lt;/a&gt;, créateur et
principal développeur de Play qui est venue faire la présentation du Framework.&lt;/p&gt;

&lt;p&gt;La soirée s’est déroulée en 2 actes (avec le drink en guise de mi temps). Une première partie sous forme d’un workshop
où Guillaume a présenté de façon concrète les possibilités offertes par Play, suivie d’une présentation plus théorique
sous forme de slides. Bien sur, la soirée s’est finie très tard dans un bon resto, cette fois ci,
l’&lt;a href=&quot;http://www.brasserie-excelsior.com/&quot;&gt;Excelsior&lt;/a&gt;, une institution à Nancy.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2010/guillaumebort_m.jpg&quot; alt=&quot;Guillaume Bort pendant sa présentation&quot; title=&quot;Guillaume Bort pendant sa présentation&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Play est donc un framework java permettant développer des applications Web. Le framework rencontre pas mal de succès
depuis sa sortie et génère pas mal de bruit dans la sphère java. Mais mes connaissances de Play s’arrêtaient ici.
C’était donc une découverte pour moi, et voici de que j’en ai retenu :&lt;/p&gt;

&lt;p&gt;##Play est un Framework pour des applications Web.&lt;/p&gt;

&lt;p&gt;La cible c’est le Web, des applications faites pour tourner dans un navigateur. A ce titre, j’ai l’impression que Play
s’adresse finalement autant aux développeurs JEE voulant se dégager de la complexité des serveurs d’application Java,
qu’aux développeurs PHP qui veulent bénéficier d’une plateforme plus robuste mais sans renoncer à la simplicité d’un
serveur LAMP.&lt;/p&gt;

&lt;p&gt;##Framework léger mais complet.&lt;/p&gt;

&lt;p&gt;Play est un framework léger. A ce titre, une application Play n’offre pas tout les fonctionnalités d’un application
basée sur le standard JEE. Il n’est donc pas possible de dialoguer avec des applications tierces avec des appels RMI,
Corba ou autre. Mais cela permet de faire de Play, un framework plus simple à appréhender. Play offre cependant toutes
les fonctionnalités nécessaire pour développer une application Web basée sur HTTP.&lt;/p&gt;

&lt;p&gt;##Framework web non basé sur servlet.&lt;/p&gt;

&lt;p&gt;Difficile à croire, en tout cas pour quelqu’un qui comme moi utilise Struts et Spring MVC, mais Play n’est basé ni sur
l’API Servlet, ni sur les JSP. Play intègre sont propre moteur MVC et Apache Mina comme serveur HTTP.&lt;/p&gt;

&lt;p&gt;##Colle au protocole HTTP.&lt;/p&gt;

&lt;p&gt;Certainement la principale chose à retenir. Play colle au protocole HTTP. En fait, la totalité des frameworks web sont
basés sur le protocole HTTP, mais presque aucun autre ne le respecte vraiment. Play quand à lui, utilise tout les
fonctionnalités offertes par le protocole.&lt;/p&gt;

&lt;p&gt;##Framework Full-stack.&lt;/p&gt;

&lt;p&gt;Si Play est clairement orienté Web, il permet cependant de développer une application dans sa totalité. Play utilise JPA
et Hibernate pour la persistance et JSON et XML pour la couche WebService. Play offre également des fonctionnalités de
caching ou encore OpenID pour l’authentification.&lt;/p&gt;

&lt;p&gt;##Tests intégrés.&lt;/p&gt;

&lt;p&gt;Les tests étant la base d’une application de qualité, Play intègre de quoi tester l’application développée. Les tests
couvrant toute l’application, de la couche Java (via JUnit) à la couche HTML (via Selenium).&lt;/p&gt;

&lt;p&gt;##Gestion des erreurs explicites.&lt;/p&gt;

&lt;p&gt;Le but de Play étant d’améliorer la productivité des développeurs, le framework propose une gestion explicites des
erreurs, quelque soit la cause de celle ci.&lt;/p&gt;

&lt;p&gt;Pour finir, j’ai rarement était aussi convaincue par une présentation d’un nouveau Framework. Play semble répondre a bon
nombre des problématiques que je rencontre au quotidien sur des applications web qui ne demande pas plus que ce que sait
faire Play. Même si cela demande une toute nouvelle approche par rapport a ce que je connaissais jusque là, je songe
sérieusement à me plonger plus en détails dans ce Framework et faire une petite application de test.&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>2 jours en temps que formateur.</title>
            <link href="http://www.dalichampt.fr/moi/2-jours-en-temps-que-formateur/"/>
            <updated>2010-04-13T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/moi/2-jours-en-temps-que-formateur</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Première pour moi, je viens de passer 2 jours en temps que formateur. Le but de cette formation était de présenter le
framework interne du client (framework Java basée sur Struts) à 2 nouveaux arrivants. Le programme de la formation étant
déjà établie (formation suivie pas tout les nouveaux développeurs), mon rôle n’était que d’assurer l’animation du cours.&lt;/p&gt;

&lt;p&gt;Après ces 2 journées, voici ce que je retiens, à chaud, de cette expérience.&lt;/p&gt;

&lt;p&gt;##Maitrise du sujet&lt;/p&gt;

&lt;p&gt;Première des choses pour donner une formation, maitriser son sujet. Ma mission dure depuis 5 ans, j’ai eu le temps
d’acquérir une bonne expérience de l’environnement technique, d’autant plus que le framework reste très simple
d’utilisation.&lt;/p&gt;

&lt;p&gt;##Respect de l’emploi du temps&lt;/p&gt;

&lt;p&gt;2 jours, c’est court. D’autant plus court qu’il y a malgré tout pas mal de chose à voir. Pas le temps de se disperser
(on a tout de même pris le temps de faire un peu de hors sujet). Au fil de la formation, j’ai dû rebondir sur quelques
questions de mes élèves pour changer l’enchainement des chapitres. Quelques points de la 2ieme partie ont alors étaient
vus dès le premier jour. Cette inversion dans le planning ne nous à cependant pas empêché de finir le programme.&lt;/p&gt;

&lt;p&gt;##Manque de préparation&lt;/p&gt;

&lt;p&gt;Le premier rejoins le point précédant. Je n’avais pas bien mesuré le temps que pouvait prendre les différents exercices.
Le second, les postes de développement utilisés pour la formation n’étaient pas bien installés. J’ai du laisser mon
poste et je me suis retrouvé sans PC pour faire les démos à mes 2 stagiaires.&lt;/p&gt;

&lt;p&gt;##Écart de niveau entre les participants&lt;/p&gt;

&lt;p&gt;Le groupe était on ne peu plus restreint. 2 personnes en face de moi. Pourtant, 2 niveaux assez différents. D’une part
une étudiante effectuant un stage (de licence), de l’autre prestataire avec déjà une solide expérience PHP et des bases
suffisantes en Java. Le défi était de faire le grand écart pour d’un part, resté assez simple pour ne laissait personne
sur le bas coté, et d’autre part, ne pas être trop ennuyeux.&lt;/p&gt;

&lt;p&gt;##Travailler ma technique&lt;/p&gt;

&lt;p&gt;2 jours à parler à voix haute et ce soir, j’ai l’impression d’avoir manger des cailloux. Mes cordes vocales ne sont pas
entrainées à être sollicitées aussi durement. Par ailleurs, j’ai peu me rentre compte que je manquais de technique pour
parler, j’ai à travailler ma respiration et d’autre choses encore.&lt;/p&gt;

&lt;p&gt;Ce fût en tout cas une excellente expérience que je renouvèlerais volontiers. Mais peut être qu’une formation
“formateur” ne serait pas superflu. Peut être la prochaine d’ailleurs, cela fait longtemps que je n’en ai pas eu…&lt;/p&gt;

            </content>
        </entry>
    
        <entry>
            <title>Ce blog est mort. Non?</title>
            <link href="http://www.dalichampt.fr/moi/ce-blog-est-mort-non/"/>
            <updated>2010-04-08T00:00:00+00:00</updated>
            <id>http://www.dalichampt.fr/moi/ce-blog-est-mort-non</id>
            <author>
                <name>Samuel DALICHAMPT</name>
                <uri>http://www.dalichampt.fr/</uri>
                
            </author>
            <content type="html">
                
                &lt;p&gt;Il faut se rendre à l’évidence, ce blog est mort ou mourant. 8 billets en 2009, aucun en 2010. Peut être trop d’humeur
instantanée sur &lt;a href=&quot;http://twitter.com/sdalichampt&quot;&gt;twitter&lt;/a&gt; ou manque de temps et de motivation pour avoir une réflexion
un peu plus posée. Bref, peu importe la raison, ca ne bouge guère ici.&lt;/p&gt;

&lt;p&gt;Pourtant, depuis quelque temps, j’ai de plus en plus souvent l’envie de réécrire ici. Peut être changer un peu le
contenu du blog aussi pour lui donner plus d’intérêt. Mais surtout, des billets courts et spontané dans la rédaction
(j’ai abandonné trop de billets qui avaient pris une tournure bien trop lyrique lors de leur rédaction).&lt;/p&gt;

&lt;p&gt;Évidement, publier un billet pour dire que le blog est mort n’a aucun intérêt. Non, ce billet à plus pour objectif de
le relancer. Je compte donc faire un peu de ménage dans les prochain jour - peut être purger tout les ancien billets -
avant de m’astreindre a publier plus.&lt;/p&gt;

&lt;p&gt;Et puis coté technique, je tacherais quand même de personnaliser le thème. Effort vite avorté cependant,
&lt;a href=&quot;http://fr.dotclear.net&quot;&gt;dotclear&lt;/a&gt; qui fait tourné ce blog
&lt;a href=&quot;http://fr.dotclear.org/documentation/2.0/faq#mon-blog-s-affiche-mais-il-manque-certains-elements-comme-le-contenu-des-billets-leur-heure-de-publication-etc&quot;&gt;n’est pas compatible avec PHP 5.3&lt;/a&gt;
embarqué par défaut dans le prochain &lt;a href=&quot;http://releases.ubuntu.com/lucid/&quot;&gt;Ubuntu&lt;/a&gt; (vers laquelle j’ai migré depuis 1
semaine maintenant). Impossible donc de monter un serveur local pour faire les tests qui s’imposent. Mais je ne lâche
pas l’affaire du thème pour autant.&lt;/p&gt;

            </content>
        </entry>
    
</feed>