<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Jean-Yves</title>
    <subtitle>Jean-Yves LEBLEU blog éclectique, sur le développement, le dessin, l&#x27;écriture, la vie</subtitle>
    <link rel="self" type="application/atom+xml" href="https://jlebleu.gitlab.io/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2023-12-20T00:00:00+00:00</updated>
    <id>https://jlebleu.gitlab.io/atom.xml</id>
    <entry xml:lang="en">
        <title>Septième Semaine</title>
        <published>2023-12-20T00:00:00+00:00</published>
        <updated>2023-12-20T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-week-51-2023/"/>
        <id>https://jlebleu.gitlab.io/post-week-51-2023/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-week-51-2023/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post51.jpg&quot; alt=&quot;La maison d&amp;#x27;Aurélie Valognes - extrait de carnet&quot; width=&quot;2000&quot; height=&quot;1135&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;La maison d&#x27;Aurélie Valognes - extrait de carnet&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Je reprends l&#x27;écriture après plus d&#x27;un an d&#x27;abscence, et je poste ce vieux billet en cours...&lt;&#x2F;p&gt;
&lt;p&gt;Un billet court pour cette septième semaine. J&#x27;ai eu une semaine chargée, avec un aller retour vers l&#x27;est sur trois jours, une bonne dose de train. On a beaucoup parlé d&#x27;intelligence artificielle et ce n&#x27;est pas pour me rassurer. Tout le monde utilise maintenant ce système sans se poser de questions. D&#x27;ailleurs c&#x27;est une de nos caractéristiques, je pense, de ne pas (trop) se poser de questions.&lt;br &#x2F;&gt;
Qui organise ses vacances, qui corrige les fautes d&#x27;orthographes, qui fait écrire ses textes à sa place. L&#x27;IA a tout lu, et a tout vu, donc on peut lui faire faire a peu près n&#x27;importe quoi.
L&#x27;expérience que j&#x27;en ai n&#x27;est pas si belle. Est-ce la fin de l&#x27;intelligence humaine ? En effet on peut imaginer que l&#x27;on ne crée plus rien puisqu&#x27;il suffit de le demander à l&#x27;IA, et donc l&#x27;IA, ne s&#x27;enrichit plus puisqu&#x27;on ne crée plus de savoir .... Affaire à suivre.&lt;&#x2F;p&gt;
&lt;p&gt;Un an après la situation ne s&#x27;amélioeere pas, voic @ploum &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ploum.net&#x2F;2025-04-08-la-fin.html&quot;&gt;La fin d&#x27;un monde ?&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;a-lire&quot;&gt;A lire&lt;&#x2F;h2&gt;
&lt;p&gt;Allez un petit lien pour se remonter le moral avec une citation que j&#x27;aime bien, &lt;em&gt;&quot;Ecrire du logiciel sans types permet d&#x27;aller à toute vitesse, a toute vitesse dans le mur&quot;&lt;&#x2F;em&gt; : &quot;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.svix.com&#x2F;blog&#x2F;strong-typing-hill-to-die-on&#x2F;&quot;&gt;Writing software without types&lt;&#x2F;a&gt; lets you go at full speed. Full speed towards the cliff.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;a-tester&quot;&gt;A tester&lt;sup class=&quot;footnote-reference&quot;&gt;&lt;a href=&quot;#1&quot;&gt;1&lt;&#x2F;a&gt;&lt;&#x2F;sup&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;code&gt;jq&lt;&#x2F;code&gt; is a lightweight and flexible command-line JSON processor akin to &lt;code&gt;sed&lt;&#x2F;code&gt;,&lt;code&gt;awk&lt;&#x2F;code&gt;,&lt;code&gt;grep&lt;&#x2F;code&gt;, and friends for JSON data. It&#x27;s written in portable C and has zero runtime dependencies, allowing you to easily slice, filter, map, and transform structured data https:&#x2F;&#x2F;github.com&#x2F;jqlang&#x2F;jq&lt;&#x2F;p&gt;
&lt;h2 id=&quot;c-est-a-vous&quot;&gt;C&#x27;est à vous&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Le projet &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;goodtech.info&#x2F;comon-voice-de-mozilla-a-besoin-de-voix-francophones&#x2F;&quot;&gt;Common Voice&lt;&#x2F;a&gt; a besoin de voix&lt;&#x2F;li&gt;
&lt;li&gt;Depuis 31 ans, R.A.P. (Résistance Agression Publicitaire) lutte contre le système publicitaire sans relâche et avec détermination. En 2023, nous avons amplifié la lutte pour l’ouvrir sur de nouveaux horizons. &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;antipub.org&#x2F;soutenons-rap-2023&#x2F;&quot;&gt;Grâce à votre soutien&lt;&#x2F;a&gt;, nous pourrons mieux entamer les batailles à venir contre la pub en 2024.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;hr &#x2F;&gt;
&lt;div class=&quot;footnote-definition&quot; id=&quot;1&quot;&gt;&lt;sup class=&quot;footnote-definition-label&quot;&gt;1&lt;&#x2F;sup&gt;
&lt;p&gt;Testé avec succés pour récupérer du json en bash&lt;&#x2F;p&gt;
&lt;&#x2F;div&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Ne Jamais dire Jamais</title>
        <published>2023-12-15T00:00:00+00:00</published>
        <updated>2023-12-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-scala-never/"/>
        <id>https://jlebleu.gitlab.io/post-scala-never/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-scala-never/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post-scala-never.jpg&quot; alt=&quot;Des tests, vous en reprendrez bien un bocal ?&quot; width=&quot;2000&quot; height=&quot;1068&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;Des tests, vous en reprendrez bien un bocal ?&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Lorsque l&#x27;on teste une méthode qui appelle un service en utilisant un mock, il est facile de vérifier qu&#x27;on appelle la bonne méthode avec les bons paramètres en utilisant la méthode verify de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;site.mockito.org&#x2F;&quot;&gt;mockito&lt;&#x2F;a&gt;.&lt;br &#x2F;&gt;
Mais qu&#x27;en est-il lorsque l&#x27;on insère une condition qui implique que l&#x27;on ne doit pas appeler la méthode. La tentation est grande d&#x27;utiliser un verify avec le mode de vérification never.&lt;&#x2F;p&gt;
&lt;p&gt;Exemple avec &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.scalatest.org&#x2F;&quot;&gt;scalatest&lt;&#x2F;a&gt; :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Le code à tester&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;scala&quot; class=&quot;language-scala z-code&quot;&gt;&lt;code class=&quot;language-scala&quot; data-lang=&quot;scala&quot;&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-scala&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-scala&quot;&gt;addinfo&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-scala&quot;&gt;user&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-ascription z-scala&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-class z-scala&quot;&gt;User&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-ascription z-scala&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-block z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-block z-begin z-scala&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;	user&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;info foreach&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-scala&quot;&gt;i&lt;&#x2F;span&gt; &lt;span class=&quot;z-storage z-type z-function z-arrow z-lambda z-scala&quot;&gt;=&amp;gt;&lt;&#x2F;span&gt; infoManager&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;addInfo&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;user&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;name&lt;span class=&quot;z-punctuation z-separator z-scala&quot;&gt;,&lt;&#x2F;span&gt; i&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt; 
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-block z-end z-scala&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Je vérifie ci dessous que je ne vais pas appeler la méthode addInfo d&#x27;infomanager&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;scala&quot; class=&quot;language-scala z-code&quot;&gt;&lt;code class=&quot;language-scala&quot; data-lang=&quot;scala&quot;&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-scala&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;do not add information for a new user without info&lt;span class=&quot;z-punctuation z-definition z-string z-end z-scala&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; in &lt;span class=&quot;z-keyword z-other z-scala&quot;&gt;new&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-class z-scala&quot;&gt;Fixture&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-block z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-block z-begin z-scala&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;    &lt;span class=&quot;z-storage z-type z-stable z-scala&quot;&gt;val&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-constant z-scala&quot;&gt;service&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-constant z-scala&quot;&gt;ServiceFactory&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;create&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;    &lt;span class=&quot;z-storage z-type z-stable z-scala&quot;&gt;val&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-constant z-scala&quot;&gt;user&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-constant z-scala&quot;&gt;UserFactory&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;create&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;service&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;name&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;copy&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;info &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-constant z-scala&quot;&gt;None&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;	userManager&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;addInfo&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;user&lt;span class=&quot;z-punctuation z-separator z-scala&quot;&gt;,&lt;&#x2F;span&gt; service&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;	verify&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;infoManager&lt;span class=&quot;z-punctuation z-separator z-scala&quot;&gt;,&lt;&#x2F;span&gt; never&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;addInfo&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;user&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;name&lt;span class=&quot;z-punctuation z-separator z-scala&quot;&gt;,&lt;&#x2F;span&gt; user&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;info&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;    &lt;span class=&quot;z-punctuation z-section z-block z-end z-scala&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;    
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Je me suis toujours posé la question de la pertinence de ce test, car imaginons que je transforme le code de la façon suivante.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;scala&quot; class=&quot;language-scala z-code&quot;&gt;&lt;code class=&quot;language-scala&quot; data-lang=&quot;scala&quot;&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-storage z-type z-function z-scala&quot;&gt;def&lt;&#x2F;span&gt; &lt;span class=&quot;z-entity z-name z-function z-scala&quot;&gt;addinfo&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-scala&quot;&gt;user&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-ascription z-scala&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-class z-scala&quot;&gt;User&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-ascription z-scala&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-block z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-block z-begin z-scala&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;	infoManager&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;addInfo&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;user&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;name&lt;span class=&quot;z-punctuation z-separator z-scala&quot;&gt;,&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-quoted z-double z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-scala&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;What ?&lt;span class=&quot;z-punctuation z-definition z-string z-end z-scala&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt; 
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-block z-end z-scala&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Lorsqu&#x27;on lance le teste précédent, le test passe, si user.info bien sûr n&#x27;est pas égal à &quot;What ?&quot;.&lt;br &#x2F;&gt;
Lors de l&#x27;écriture du test, et si on le réalise en TDD, il y a peu de chance de tomber dans ce piège. Mais tout au long du projet, lorsqu&#x27;on va remanier le code, il y a des chances que l&#x27;on arrive à un cas similaire. Et dans ce cas le test en question ne teste plus rien.
C&#x27;est toujours périlleux de tester qu&#x27;on ne fait jamais quelque chose. Heureusement il y a &lt;code&gt;verifyNoInteractions&lt;&#x2F;code&gt; qui permet de vérifier qu&#x27;on a jamais d&#x27;interaction avec l&#x27;objet.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Le même test avec &lt;code&gt;verifyNoInteractions&lt;&#x2F;code&gt;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;scala&quot; class=&quot;language-scala z-code&quot;&gt;&lt;code class=&quot;language-scala&quot; data-lang=&quot;scala&quot;&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt; &lt;span class=&quot;z-string z-quoted z-double z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-scala&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;do not add information for a new user without info&lt;span class=&quot;z-punctuation z-definition z-string z-end z-scala&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt; in &lt;span class=&quot;z-keyword z-other z-scala&quot;&gt;new&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-class z-scala&quot;&gt;Fixture&lt;&#x2F;span&gt; &lt;span class=&quot;z-meta z-block z-scala&quot;&gt;&lt;span class=&quot;z-punctuation z-section z-block z-begin z-scala&quot;&gt;{&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;    &lt;span class=&quot;z-storage z-type z-stable z-scala&quot;&gt;val&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-constant z-scala&quot;&gt;service&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-constant z-scala&quot;&gt;ServiceFactory&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;create&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;    &lt;span class=&quot;z-storage z-type z-stable z-scala&quot;&gt;val&lt;&#x2F;span&gt; &lt;span class=&quot;z-variable z-other z-constant z-scala&quot;&gt;user&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-constant z-scala&quot;&gt;UserFactory&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;create&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;service&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;name&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;copy&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;info &lt;span class=&quot;z-keyword z-operator z-assignment z-scala&quot;&gt;=&lt;&#x2F;span&gt; &lt;span class=&quot;z-support z-constant z-scala&quot;&gt;None&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;	userManager&lt;span class=&quot;z-punctuation z-accessor z-scala&quot;&gt;.&lt;&#x2F;span&gt;addInfo&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;user&lt;span class=&quot;z-punctuation z-separator z-scala&quot;&gt;,&lt;&#x2F;span&gt; service&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;	verifyNoInteractions&lt;span class=&quot;z-punctuation z-section z-group z-begin z-scala&quot;&gt;(&lt;&#x2F;span&gt;infoManager&lt;span class=&quot;z-punctuation z-section z-group z-end z-scala&quot;&gt;)&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-scala&quot;&gt;&lt;span class=&quot;z-meta z-block z-scala&quot;&gt;    &lt;span class=&quot;z-punctuation z-section z-block z-end z-scala&quot;&gt;}&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;    
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On peut aussi utiliser  &lt;code&gt;verifyNoMoreInteractions&lt;&#x2F;code&gt; lorsque l&#x27;on a dans le code d&#x27;autres interactions avec l&#x27;objet.&lt;&#x2F;p&gt;
&lt;p&gt;En conclusion pour ma part j&#x27;éviterais le &lt;code&gt;never&lt;&#x2F;code&gt; qui peut être délicat lors de refactoring au profit du &lt;code&gt;verifyNoInteractions&lt;&#x2F;code&gt; en n&#x27;oubliant pas l&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;javadoc.io&#x2F;doc&#x2F;org.mockito&#x2F;mockito-core&#x2F;latest&#x2F;org&#x2F;mockito&#x2F;Mockito.html#verifyNoMoreInteractions(java.lang.Object...)&quot;&gt;avertissement de la documentation&lt;&#x2F;a&gt; de ne pas systématiser l&#x27;utilisation de la méthode &lt;code&gt;verifyNoMoreInteractions&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Sixième Semaine</title>
        <published>2023-12-13T00:00:00+00:00</published>
        <updated>2023-12-13T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-week-50-2023/"/>
        <id>https://jlebleu.gitlab.io/post-week-50-2023/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-week-50-2023/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post-week-50-2023.jpg&quot; alt=&quot;De la lumière dans l&amp;#x27;hiver&quot; width=&quot;1792&quot; height=&quot;1045&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;De la lumière dans l&#x27;hiver&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Sixième billet hebdomadaire, je tiens le rythme depuis la promesse que je me suis faite le &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-weekly&#x2F;&quot;&gt;8 Novembre 2023&lt;&#x2F;a&gt;. Ce sera donc le dixième billet publié depuis cette date, soit un peu plus d&#x27;un billet par semaine. Il est encore trop tôt je pense pour dire si ma capacité d&#x27;écriture s&#x27;est améliorée, car une séance par semaine me paraît trop peu pour que cela fasse un entraînement efficace.&lt;br &#x2F;&gt;
Il n&#x27;empêche, le premier billet faisait un peu moins de 300 mots, maintenant j&#x27;écris plutôt un peu plus de 600 mots sans trop de problème ce qui fait une progression certaine. &lt;br &#x2F;&gt;
Une fois n&#x27;est pas coutume, j&#x27;ai noté cette semaine dans mon obsidian préféré, ce qui m&#x27;a marqué et je vous en ferai part à la fin de cette article.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;l-ecriture&quot;&gt;L&#x27;écriture&lt;&#x2F;h2&gt;
&lt;p&gt;Je reviens un peu sur mon &lt;em&gt;process&lt;&#x2F;em&gt; d&#x27;écriture. Je fais d&#x27;abord un premier jet à la volée, sans (trop) de corrections afin de ne pas perdre le fil de mes idées, et c&#x27;est efficace, car dés que je reviens en arrière le fil est coupé et le redémarrage est vraiment difficile, même si c&#x27;est compliqué de s&#x27;astreindre à laisser passer les fautes, les mal dits. Dans cette phase lorsque je ne suis pas sur d&#x27;une information ou d&#x27;un lien je la remplace par une série de XXX sur laquelle je reviendrai ensuite.
Une fois l&#x27;article terminé, je fais une première relecture, je corrige principalement les fautes les plus évidentes quelques tournures de phrases. Je commence ensuite la mise en forme, j&#x27;ajoute les liens là ou c&#x27;est pertinent. Je reprends ensuite le texte et je le copie colle dans un correcteur d&#x27;orthographe en ligne qui me donne encore d&#x27;autres améliorations possible et des fautes qui m&#x27;ont encore échappées (Ah l&#x27;orthographe !). Pour terminer l&#x27;article, je choisis une photo dans ma galerie, et je l&#x27;ajoute à l&#x27;article avec un texte alternatif et un commentaire.
Le travail est fait, il ne reste plus qu&#x27;à le publier en le &lt;em&gt;&#x27;poussant&#x27;&lt;&#x2F;em&gt; sur Gitlab, le CI faisant le reste c&#x27;est à dire la mise en ligne. A lire aussi sur le sujet le blog de Thierry Crouzet, &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;tcrouzet.com&#x2F;2023&#x2F;12&#x2F;01&#x2F;edition-la-fin-des-correcteurs&#x2F;&quot;&gt;Edition la fin des correcteurs ?&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;projets-de-la-semaine&quot;&gt;Projets de la semaine&lt;&#x2F;h2&gt;
&lt;p&gt;Pas beaucoup de Scala cette semaine, j&#x27;ai terminé mon exploration Scala vers Java, en écrivant les parties les plus compliquées. Il reste maintenant la longue traversée du désert à faire, c&#x27;est à dire la réécriture des parties métiers et transformations de données. Java étant un langage pas mal plus verbeux que Scala, cela risque d&#x27;être un chemin assez ennuyeux. Maintenant par contre j&#x27;ai une assez bonne visibilité sur le travail qu&#x27;il reste à réaliser. Une semaine de documentation aussi ou j&#x27;ai découvert &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-pdf-doc&#x2F;&quot;&gt;pandoc&lt;&#x2F;a&gt;. Le fait de documenter l&#x27;architecture du code m&#x27;a aussi permis de me poser des questions sur les chemins que j&#x27;ai choisi et m&#x27;a donné quelques pistes de remaniement de code assez profond. C&#x27;est donc un exercice que je vous recommande et qui permet de prendre un peu de recul sur ce que l&#x27;on a écrit. Au bout d&#x27;un an d&#x27;écriture, l&#x27;architecture mise en place au départ et qui paraissait pertinente, mérite à être questionnée.&lt;&#x2F;p&gt;
&lt;p&gt;Je continue aussi d&#x27;approfondir mes connaissances sur le monde de la &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;G%C3%A9omatique&quot;&gt;géomatique&lt;&#x2F;a&gt; au travers d&#x27;un projet de dessin géolocalisé au dessus d&#x27;images géo-référencées et de modèles numérique de terrain. J&#x27;ai passé de bons moments de collaboration avec la société &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.3liz.com&#x2F;&quot;&gt;3liz&lt;&#x2F;a&gt; éditeur entre autre de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.lizmap.com&#x2F;&quot;&gt;Lizmap&lt;&#x2F;a&gt;. Une semaine découverte des possibilités étonnantes de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;postgis.net&#x2F;&quot;&gt;PostGis&lt;&#x2F;a&gt; de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.qgis.org&#x2F;fr&#x2F;site&#x2F;&quot;&gt;QGIS&lt;&#x2F;a&gt; et de Lizmap qui mériterait je pense un petit article tellement il est facile de publier des cartes en exploitant les données ouvertes disponibles maintenant pour le public. Bravo en tout cas pour ce travail en Open Source&lt;br &#x2F;&gt;
A noter d&#x27;ailleurs entre autre de plus en plus de données mise à disposition comme par exemple &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ressources.data.sncf.com&#x2F;pages&#x2F;accueil&#x2F;&quot;&gt;la SNCF&lt;&#x2F;a&gt;, ou le project &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;geoservices.ign.fr&#x2F;pcrs&quot;&gt;Plan de Corps de Rue Simplifié&lt;&#x2F;a&gt; ou encore la &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.data.gouv.fr&#x2F;fr&#x2F;&quot;&gt;Plateforme ouverte des données publiques françaises&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;On ne passe pas une semaine sans crayons et sans pinceaux, je poursuite ma découverte de l&#x27;aquarelle avec Jean-Marc Jezequel, à voir ici sur mon compte &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&#x2F;post&#x2F;639945754309525349&quot;&gt;Pixelfed&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;lectures&quot;&gt;Lectures&lt;&#x2F;h2&gt;
&lt;p&gt;Je poursuis la lecture, sans trop d&#x27;enthousiasme d&#x27;un roman policier, par contre de belles lectures sur le web.\&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Un article de Ploum, qui date un peu sur &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;ploum.net&#x2F;le-silence-au-milieu-du-bruit&#x2F;index.html&quot;&gt;le silence au milieu du bruit&lt;&#x2F;a&gt; qui réfléchit sur la masse d&#x27;information qui nous assaille en permanence et surtout sur l&#x27;utilité et la qualité de cette information. Est-il nécessaire d&#x27;en rajouter, et pourquoi prendre la peine de rédiger ce blog en devenir ?&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;timotheeparrique.com&#x2F;reponse-a-bruno-le-maire-devendre-la-croissance&#x2F;&quot;&gt;Dévendre la croissance&lt;&#x2F;a&gt; La décroissance n’est pas plus source d’appauvrissement que la croissance est source d’enrichissement de Thimothée Parrique&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;mnt.io&#x2F;2021&#x2F;01&#x2F;19&#x2F;bye-bye-whatsapp-hello&#x2F;&quot;&gt;Bye bye WhatsApp, hello ?&lt;&#x2F;a&gt; A garder sous le coude pour alimenter les discussions que vous ne manquerez pas d&#x27;avoir pendant les fêtes autour de Whatsapp, Signal, Matrix, Telegram etc de Ivan Enderlin.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;j-ai-lu-en-vrac&quot;&gt;J&#x27;ai lu en Vrac&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Une &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;news.itsfoss.com&#x2F;ai-alliance&#x2F;&quot;&gt;alliance entre quelques grands groupes&lt;&#x2F;a&gt; autour de l&#x27;intelligence artificielle qui devrait empêcher une seule entreprise à dominer cette technologie. C&#x27;est un sujet qui me préoccupe de plus en plus.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;cisofy.com&#x2F;lynis&quot;&gt;Lynis&lt;&#x2F;a&gt; Une suite d&#x27;outils de consolidation des systèmes d&#x27;exploitation Linux au niveau de la sécurité en GPL. C&#x27;est aussi un sujet d&#x27;actualité dans mes pratiques quotidiennes.&lt;&#x2F;li&gt;
&lt;li&gt;On ne vous a jamais appris à écrire des logiciels de qualités par Florian Bellman. Quelques citations ci dessous qui résonnent en moi.
&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;&quot;deliver software without bugs in time&quot;&lt;&#x2F;em&gt; &lt;br &#x2F;&gt;
&lt;em&gt;&quot;We need to speak about money. As developers, we need to speak about the cost of not doing QA. This is the language of business and managers in general&quot;&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
&lt;em&gt;&quot;I like the term &#x27;minimal effective dose&#x27; (MED). The smallest dose that will produce the desired outcome&quot;&lt;&#x2F;em&gt;\&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;a-retenir&quot;&gt;A retenir&lt;&#x2F;h2&gt;
&lt;p&gt;Framasoft &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;framacolibri.org&#x2F;t&#x2F;mobilizon-nous&#x2F;19752&quot;&gt;mobilizons nous&lt;&#x2F;a&gt;, cherche du monde pour continuer les développements de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;joinmobilizon.org&#x2F;fr&#x2F;&quot;&gt;Mobilizon&lt;&#x2F;a&gt; un outil qui permet de trouver, créer et organiser des événements.&lt;&#x2F;p&gt;
&lt;p&gt;Belle semaine à tous.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Doc et Pdf sont dans un bateau</title>
        <published>2023-12-12T00:00:00+00:00</published>
        <updated>2023-12-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-pdf-doc/"/>
        <id>https://jlebleu.gitlab.io/post-pdf-doc/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-pdf-doc/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post-pdf-doc.jpg&quot; alt=&quot;Qui veut encore de la tarte aux cerises ?&quot; width=&quot;2000&quot; height=&quot;939&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;Non la documentation n&#x27;est pas un casse croûte&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;la-documentation-dans-un-projet&quot;&gt;La documentation dans un projet&lt;&#x2F;h2&gt;
&lt;p&gt;Dans les projets auxquels je participe, j&#x27;aime bien mettre la documentation dans un répertoire &lt;strong&gt;doc&lt;&#x2F;strong&gt;, sous forme de fichiers &lt;em&gt;markdown&lt;&#x2F;em&gt;.&lt;br &#x2F;&gt;
Dans le &lt;strong&gt;readme.md&lt;&#x2F;strong&gt;, que l&#x27;on trouve traditionnellement à la racine du projet, on y met les informations essentielles pour &lt;em&gt;bootstraper&lt;&#x2F;em&gt; le projet dans un environnement de développement.
En plus, ce que je fait d&#x27;habitude, c&#x27;est de mettre un lien dans ce fichier vers la documentation qui se trouve dans le fameux répertoire &lt;strong&gt;doc&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;avantage est que la documentation se retrouve au même endroit que le code, donc facile à mettre à jour et à maintenir. L&#x27;inconvénient est qu&#x27;il n&#x27;est pas facile de la transmettre ou de la publier.&lt;&#x2F;p&gt;
&lt;p&gt;Suite à une demande d&#x27;un de mes clients, je me suis mis à la recherche d&#x27;une solution de transformation de ces fichiers vers du pdf.&lt;&#x2F;p&gt;
&lt;p&gt;Il y a principalement trois solutions :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Des sites spécialisés&lt;&#x2F;li&gt;
&lt;li&gt;Des extensions Visual Studio Code&lt;&#x2F;li&gt;
&lt;li&gt;Pandoc&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;les-sites-specialises&quot;&gt;Les sites spécialisés&lt;&#x2F;h2&gt;
&lt;p&gt;Il y en a pléthore, je ne m&#x27;étendrai pas sur cette solution, qui sont souvent une occasion de faire de la publicité, de générer des clicks et de récupérer au passage de l&#x27;information.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;les-extensions-visual-studio&quot;&gt;Les extensions Visual Studio&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;visual-studio-code-markdown-pdf&quot;&gt;Visual Studio Code Markdown PDF&lt;&#x2F;h3&gt;
&lt;p&gt;Cette &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;marketplace.visualstudio.com&#x2F;items?itemName=yzane.markdown-pdf&quot;&gt;extension&lt;&#x2F;a&gt; utilise chromium pour faire la conversion et est assez longue à installer. Elle fonctionne parfaitement pour un fichier, mais ne possède pas (ou je ne l&#x27;ai pas trouvé.), de mode multi-fichiers.
Il y a de plus une astuce pour l&#x27;utiliser sous wsl (Ah les bonheurs du développement sous windows) je vous la donne ci-dessous.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;extension nécessite pour fonctionner en &lt;em&gt;remote wsl&lt;&#x2F;em&gt; sous visual studio code l&#x27;installation des paquets suivants (sous ubuntu) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt-get install libxcursor1&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install libxss1&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install libpangocairo-1.0-0&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install libgtk-3-0&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Une fois ces paquets installés, la conversion est utilisable et le résultat est plus que correct, mais mono fichier. Il faut donc faire un pdf par fichier, ce qui dans mon cas, car j&#x27;ai l&#x27;habitude de séparer les fichiers n&#x27;est pas la solution idéale.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pandoc&quot;&gt;Pandoc&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pandoc.org&#x2F;&quot;&gt;Pandoc&lt;&#x2F;a&gt; est une solution &lt;em&gt;&#x27;Universelle de conversion de documents&#x27;&lt;&#x2F;em&gt; comme indiqué sur leur site.&lt;br &#x2F;&gt;
C&#x27;est effectivement ce qui est le plus efficace même si vous allez le voir, cela demande un peu de préparation et de recherche.&lt;br &#x2F;&gt;
Pandoc est capable de transformer non seulement du markdown, mais aussi par exemple du reStructuredText, de l&#x27;AsciiDoc, etc... Tous ces formats peuvent être transformés soit en HTML, en PDF, en EPUB en Docx en wiki markup formats (MedaiWiki, DocuWiki) et beaucoup d&#x27;autres formats.
Pandoc est écrit en Haskell, et c&#x27;est un utilitaire en ligne de commande.&lt;&#x2F;p&gt;
&lt;p&gt;Vous écrivez un document sans (trop) vous occuper de la mise en page, et Pandoc, avec le paramétrage qui va bien s&#x27;occupe du reste.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;exemple&quot;&gt;Exemple&lt;&#x2F;h4&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;pandoc&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;s&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-operator z-regexp z-quantifier z-shell&quot;&gt;*&lt;&#x2F;span&gt;.md doc&#x2F;&lt;span class=&quot;z-keyword z-operator z-regexp z-quantifier z-shell&quot;&gt;*&lt;&#x2F;span&gt;.md&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;o&lt;&#x2F;span&gt; projectdoc.pdf&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;from&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-option z-shell&quot;&gt;=&lt;&#x2F;span&gt;markdown+rebase_relative_paths &lt;span class=&quot;z-punctuation z-separator z-continuation z-line z-shell&quot;&gt;\
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt;  --&lt;&#x2F;span&gt;toc&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;pdf-engine&lt;&#x2F;span&gt;&lt;span class=&quot;z-keyword z-operator z-assignment z-option z-shell&quot;&gt;=&lt;&#x2F;span&gt;xelatex&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;V&lt;&#x2F;span&gt; mainfont=&lt;span class=&quot;z-string z-quoted z-double z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-string z-begin z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;Ubuntu&lt;span class=&quot;z-punctuation z-definition z-string z-end z-shell&quot;&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;number-sections&lt;&#x2F;span&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;metadata-file&lt;&#x2F;span&gt; doc&#x2F;metadata.yml &lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;-s&lt;&#x2F;strong&gt; : Les fichiers à transformer&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;-o&lt;&#x2F;strong&gt; : Le fichier résultat&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;--from=markdown+rebase_relative_paths&lt;&#x2F;strong&gt; : important garde les chemins relatifs de liens et des images&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;--toc&lt;&#x2F;strong&gt; : génère le sommaire, en parcourant la totalité des fichiers&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;--pdf-engine=xelatex&lt;&#x2F;strong&gt; : utilise un processeur pdf qui gère un peu mieux les polices de caractères.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;-V mainfont=&quot;Unbuntu&quot;&lt;&#x2F;strong&gt; : change la police par défaut (je n&#x27;aime pas trop visuellement la police utilisée par défaut)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;--number-sections&lt;&#x2F;strong&gt; : Option &lt;em&gt;magique&lt;&#x2F;em&gt; qui numérote les têtes de chapitres, pas besoin de s&#x27;en occuper dans le texte&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;--metadata-file&lt;&#x2F;strong&gt; doc&#x2F;metadata.yml, permet de gérer les options qui sauvent la mise en page sans alourdir la ligne de commande.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Comme je vous le disais précédemment la mise en oeuvre de l&#x27;outil n&#x27;est pas directe et nécessite pas mal d&#x27;essais et pas mal de lecture de documentation et d&#x27;articles sur son utilisation, mais le résultat est vraiment pas mal.&lt;&#x2F;p&gt;
&lt;h4 id=&quot;le-fichier-metadata-yml&quot;&gt;Le fichier metadata.yml&lt;&#x2F;h4&gt;
&lt;p&gt;C&#x27;est un fichier de configuration qui permet de paramétrer le formatage du document. Je vous livre le mien&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;yml&quot; class=&quot;language-yml z-code&quot;&gt;&lt;code class=&quot;language-yml&quot; data-lang=&quot;yml&quot;&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-other z-document z-begin z-yaml&quot;&gt;---&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;title&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;Project documentation&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-plain z-out z-yaml&quot;&gt;&lt;span class=&quot;z-entity z-name z-tag z-yaml&quot;&gt;header-includes&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-punctuation z-separator z-key-value z-mapping z-yaml&quot;&gt;:&lt;&#x2F;span&gt; &lt;span class=&quot;z-keyword z-control z-flow z-block-scalar z-literal z-yaml&quot;&gt;|&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;    \usepackage{geometry}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;      \geometry{
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;        a4paper,
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;        left=15mm,
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;        top=20mm,
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;        right=15mm
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;      }
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;    \usepackage{fancyhdr}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;      \pagestyle{fancy}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;      \fancyhead[L]{\date{\today}}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;      \fancyhead[C]{MYProject}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;      \fancyhead[R]{\thepage}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;    \usepackage{fvextra}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;       \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-yaml&quot;&gt;&lt;span class=&quot;z-string z-unquoted z-block z-yaml&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Les options sont assez faciles à comprendre, et sont des options pour le processeur LaTex, a noter tout de même les deux dernières lignes qui permettent de gérer les retours à la ligne dans les blocs de code.&lt;&#x2F;p&gt;
&lt;p&gt;Si vous avez de la doc à écrire, je vous conseille vraiment de vous pencher sur cet outil. Il y a beaucoup d&#x27;autres possibilités, qui lorsque l&#x27;on écrit de gros documents sont particulièrement utiles, comme par exemple la gestion des citations de la bibliographie.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;l-installation&quot;&gt;L&#x27;installation&lt;&#x2F;h3&gt;
&lt;p&gt;Sous ubuntu, le paquet de la distribution est trop ancien, je vous conseille donc de télécharger la &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jgm&#x2F;pandoc&#x2F;releases&#x2F;&quot;&gt;dernière version ici&lt;&#x2F;a&gt;. Une fois le paquet télécharger l&#x27;installer  &lt;code&gt;sudo dpkg -i pandoc-3.1.9-1-amd64.deb&lt;&#x2F;code&gt;.\&lt;&#x2F;p&gt;
&lt;p&gt;Puis installer les paquets suivants:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install pdflatex&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install texlive-latex-base&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install texlive-latex-recommended&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install texlive-xetex&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; apt install texlive-fonts-recommended texlive-fonts-extra texlive-latex-extra&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;references&quot;&gt;Références&lt;&#x2F;h2&gt;
&lt;p&gt;Quelques sites qui m&#x27;ont aidés&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Le site officiel de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pandoc.org&#x2F;&quot;&gt;Pandoc&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;programminghistorian.org&#x2F;fr&#x2F;lecons&#x2F;redaction-durable-avec-pandoc-et-markdown#utilisation-de-pandoc-pour-convertir-le-markdown-en-document-ms-word&quot;&gt;Redaction durable avec Pandoc et Markdown&lt;&#x2F;a&gt; du site &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;programminghistorian.org&#x2F;fr&#x2F;&quot;&gt;Programming Historian&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Cinquième Semaine</title>
        <published>2023-12-06T00:00:00+00:00</published>
        <updated>2023-12-06T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-5-week/"/>
        <id>https://jlebleu.gitlab.io/post-5-week/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-5-week/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post-5-week.jpg&quot; alt=&quot;L&amp;#x27;éternité des vagues&quot; width=&quot;2000&quot; height=&quot;972&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;L&#x27;éternité des vagues&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;strong&gt;ARNOLPHE&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;&quot;Quelle nouvelle ?&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;AGNÈS&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;&quot;Le petit chat est mort.&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;ARNOLPHE&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;&quot;C’est dommage : mais quoi
Nous sommes tous mortels, et chacun est pour soi.
Lorsque j’étais aux champs n’a-t-il point fait de pluie ?&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;AGNÈS&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;&quot;Non.&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;Bon voyage au paradis des chats, après ce long voyage qui l&#x27;a menée des terres froides du Canada à notre beau pays de Bretagne, venteux, quelques fois humide, mais si lumineux.
Que ces quelques fleurs de printemps que j&#x27;ai semé pour l&#x27;occasion t&#x27;accompagne ainsi que les fleurs de sauge et le saule que nous avons laissé pour toi.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;expérimente en ce moment un portage d&#x27;une application utilisant play framework de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.scala-lang.org&#x2F;&quot;&gt;Scala&lt;&#x2F;a&gt; en &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.java.com&#x2F;fr&#x2F;&quot;&gt;Java&lt;&#x2F;a&gt;. Je ne m’étendrai pas sur les raisons qui ont poussé à faire cela, bien qu&#x27;on puisse légitimement se demander ce qui pousse les développeurs à ne pas sortir du Java pour essayer le Scala. Autant les démarrages sont assez facile, car on peut faire au début du java-scala, mais au fur et à mesure que l&#x27;on progresse, le fonctionnel prends le dessus et le code écrit est souvent relativement difficile à lire pour ceux qui ne sont pas familiers avec la tournure fonctionnelle. Cela mériterait, je pense un peu plus de développement, mais ce sera pour une autre fois.
Pour le portage en Java je reste sur du &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.playframework.com&#x2F;&quot;&gt;Play Framework&lt;&#x2F;a&gt; version Java, un petit upgrade quand même du JDK et un passage vers des acteurs typés. L&#x27;expérience est intéressante et me pousse à trouver des solutions fonctionnelles en Java, comme par exemple l&#x27;&lt;code&gt;Optional&amp;lt;T&amp;gt;&lt;&#x2F;code&gt;. Première étape l&#x27;authentification en cours, la connexion LDAP est opérationnelle et je tente la suite qui est la mise en place d&#x27;un acteur qui gère la connexion vers un serveur de configuration Genesys. Affaire à suivre. Cela fait bien longtemps que je n&#x27;avais pas touché à ce langage, et cela fait du bien.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai travaillé cette semaine sur deux aquarelles que j&#x27;ai postées sur mon compte &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;jlebleu&quot;&gt;Pixelfed&lt;&#x2F;a&gt;. Par la même occasion, j&#x27;ai craqué pour la série d&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.humblebundle.com&#x2F;books&#x2F;how-to-start-drawing-with-walter-foster-books&quot;&gt;Humble bundle&lt;&#x2F;a&gt; &lt;em&gt;How to Start Drawing&lt;&#x2F;em&gt; et j&#x27;ai aimé plus particulièrement dans cette série le livre de Veronica Lawlor &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.fnac.com&#x2F;mp27824573&#x2F;One-Watercolor-a-Day-Veronica-Lawlor&quot;&gt;One Watercolor a Day&lt;&#x2F;a&gt; qui rejoint à peu près ma conception de l&#x27;aquarelle. De l&#x27;eau de l&#x27;eau de l&#x27;eau.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai lu cette semaine une belle bande dessinée d&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.futuropolis.fr&#x2F;auteurs&#x2F;etienne-davodeau.html&quot;&gt;Etienne Davodeau&lt;&#x2F;a&gt; le &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.futuropolis.fr&#x2F;9782754829212&#x2F;le-droit-du-sol.html&quot;&gt;Droit du sol&lt;&#x2F;a&gt; qui m&#x27;a fait réfléchir sur le facteur temps. A voir aussi &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.etiennedavodeau.com&#x2F;&quot;&gt;le site d&#x27;Etienne&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;auteur part de la grotte de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.pechmerle.com&#x2F;&quot;&gt;Pech Merle&lt;&#x2F;a&gt; et, à pied, trace son chemin jusqu&#x27;à Bure, là ou nous projetons d&#x27;enfouir nos déchets nucléaires. Au-delà de la problématique du nucléaire et de ses déchets, se pose la question du temps. Les dessins des grottes préhistoriques, sont à peu près tout ce qui nous reste de cette époque, soit il y a à peu près 25 000 à 35 000 ans. Comment peut-on imaginer que dans 100 000 ans, oui vous avez bien lu cent mille ans, il y aura encore des traces utilisables des procédures et des précautions que nous devons suivre pour ce stockage hautement toxique? Dans un des entretiens racontés dans le livre, il évoque la pérennité des différents supports comme par exemple le papier, de l&#x27;écriture et la communication, des langues.
J&#x27;ai beaucoup aimé son trajet, l&#x27;histoire qu&#x27;il nous raconte, les rencontres ainsi que les entretiens qu&#x27;il met en scène tout au long du voyage avec des personnages bien réels, mais qui l&#x27;accompagne sur la route en imagination.
Merci pour ce livre. Ca donne envie de partir à pied.&lt;&#x2F;p&gt;
&lt;p&gt;Que les prochains jours vous soient propices et à la semaine prochaine.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Quatrième Semaine</title>
        <published>2023-11-29T00:00:00+00:00</published>
        <updated>2023-11-29T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-4-week/"/>
        <id>https://jlebleu.gitlab.io/post-4-week/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-4-week/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post-4-week.jpg&quot; alt=&quot;Zénitude des plantes&quot; width=&quot;2000&quot; height=&quot;1162&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;Zénitude des plantes&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Quatrième semaine, au moins je n&#x27;ai pas trop à réfléchir (pour l&#x27;instant) à trouver un titre. Je pourrais aussi appeler ce billet &lt;em&gt;rétrospective de la semaine&lt;&#x2F;em&gt;, car c&#x27;est un peu ce que je fais en général.&lt;&#x2F;p&gt;
&lt;p&gt;Peu d&#x27;écriture cette semaine, une paire d&#x27;exercice seulement d&#x27;écriture à la volée pendant 15 mn avec un rythme de 500 mots par quart d&#x27;heure. J&#x27;ai aussi noté vous avez dû le remarquer, les heures sur ces billets hebdomadaires, cela me permet d&#x27;avoir une vision du temps que prends la rédaction d&#x27;un article pour le blog.&lt;&#x2F;p&gt;
&lt;p&gt;En résumé, 15 minutes pour l&#x27;écriture des mots et environ trois quart d&#x27;heure pour le reste : édition, correction, choisir une photo, et remanier un peu (mais pas trop le texte). Oui j&#x27;aime bien les photos en entêtes de billets, et j&#x27;ai modifié le thème du site en conséquence, pour que la photo d&#x27;entête s&#x27;affiche dans la liste des billets et correctement aussi lors de la lecture, que ce soit sur grand écran ou sur un mobile. C&#x27;est d&#x27;ailleurs sur un mobile que je consulte les sites la plupart du temps.
J&#x27;ai aussi modifié le thème pour que lorsque l&#x27;on cite un article du blog la photo aussi apparaisse, en modifiant les balises qui vont bien (&lt;em&gt;og:image&lt;&#x2F;em&gt; par exemple).&lt;&#x2F;p&gt;
&lt;p&gt;Peu de dessin aussi, un croquis rapide lors de ma visite aux Bocaux d&#x27;Anna que j&#x27;ai posté sur mon compte &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&#x2F;post&#x2F;634017735407994559&quot;&gt;Pixelfed&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai continué mon projet en &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.scala-lang.org&#x2F;&quot;&gt;Scala&lt;&#x2F;a&gt; utilisant &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.playframework.com&#x2F;&quot;&gt;Play Framework&lt;&#x2F;a&gt;, et à noter cette semaine un séance de &lt;strong&gt;TDD&lt;&#x2F;strong&gt; en &lt;em&gt;&quot;presque&quot;&lt;&#x2F;em&gt; pair programming avec un de mes collègues à distance. Je dis &lt;em&gt;&quot;presque&quot;&lt;&#x2F;em&gt; pair programming car en réalité, c&#x27;est moi qui tenais le clavier, même si la partie a été assez interactive.&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons réussi à respecter le cycle &lt;strong&gt;rouge vert rouge vert&lt;&#x2F;strong&gt;, écrire le test, écrire le code, faire passer le test, remanier le code, en écrivant une nouvelle méthode d&#x27;un controlleur. Tout y est passé y compris le traitement d&#x27;erreur, ce que nous avions laissé un peu tomber jusque là. Le &lt;strong&gt;TDD&lt;&#x2F;strong&gt; est vraiment un bon moyen de réfléchir sur le code, de simplifier et aussi de généraliser. Il n&#x27;es pas facile par contre de n&#x27;écrire que le minimum, aussi bien au niveau du test qu&#x27;au niveau du code.&lt;&#x2F;p&gt;
&lt;p&gt;Je me suis aussi un peu remis à &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.docker.com&#x2F;&quot;&gt;Docker&lt;&#x2F;a&gt; à travers le projet &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.lizmap.com&#x2F;&quot;&gt;Lizmap&lt;&#x2F;a&gt; que je fais actuellement car, j&#x27;ai dû déployer une image &lt;em&gt;&quot;custom&quot;&lt;&#x2F;em&gt; pour le &lt;em&gt;&quot;POC&quot;&lt;&#x2F;em&gt; de traçage que nous sommes en train de faire. Dieu que j&#x27;aime le PHP !&lt;&#x2F;p&gt;
&lt;p&gt;Dans mes lectures, un article sur les estimations et la maintenance m&#x27;a interpellé et m&#x27;a fait pas mal réflèchir. Je n&#x27;ai malheureusement pas noté la référence. En essence, l&#x27;article mentionne que l&#x27;on oublie souvent lors des estimations de travail autour d&#x27;un projet de parler de la maintenance. Or, cette maintenance est obligatoire. L&#x27;auteur inclu aussi dans cette maintenance, la mise à jour des plate-formes utilisées, aussi bien les plate-formes de déploiement que les plate-formes de développement. Il estime à environ 10% le cout de celle-ci (en général moi, je donne plutôt 15%). En corollaire, si l&#x27;on oublie cette partie, il faut ensuite se battre pour faire rentrer ce temps dans les itérations, se battre avec le PO, pour que les Sprints &#x2F; Kanban incluent cette maintenance.&lt;&#x2F;p&gt;
&lt;p&gt;Je me suis amusé à faire un petit calcul sur un coin de table. Considérant qu&#x27;une personne travaille sur un projet pendant un an, donc 200 jours, l&#x27;année suivante, il aura à sa disposition 180 jours : 200 - 10%, l&#x27;année suivante 162 jours ... etc. Cela ne vous rappelle rien ? Avez-vous l&#x27;expérience de projets qui ralentissent ? C&#x27;est pour cela qu&#x27;il est important de travailler sur l&#x27;aspect maintenance, et comme j&#x27;ai coutume de le dire, &lt;em&gt;&quot;Une ligne de code en production est égale à un euro&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Je m&#x27;arrête là. Moi qui pensais ce matin que je n&#x27;aurai pas le courage d&#x27;écrire un article long, je me suis laissé aller. L&#x27;écriture appelle l&#x27;écriture&lt;&#x2F;p&gt;
&lt;p&gt;Je vous souhaite une très bonne semaine et un mercredi encore meilleur.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;21 mn de rédaction, 30 mn d&#x27;édition&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Troisième Semaine</title>
        <published>2023-11-22T00:00:00+00:00</published>
        <updated>2023-11-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-3-week/"/>
        <id>https://jlebleu.gitlab.io/post-3-week/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-3-week/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;post-3-week.jpg&quot; alt=&quot;Le meilleur véhicule du monde&quot; width=&quot;2000&quot; height=&quot;1161&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;Le meilleur véhicule du monde&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;7h44&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;C&#x27;est parti, je garde mon rendez-vous hebdomadaire, et qui plus est un mercredi (c&#x27;était bien mercredi je crois la &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-2nd-week&#x2F;&quot;&gt;semaine dernière&lt;&#x2F;a&gt; non ?). Cette fois ci je ne suis pas dans le train à 300 km&#x2F;h mais assis à mon bureau à 1670 km&#x2F;h, si on prends en compte la vitesse de la rotation de la terre :)
Je continue le défi d&#x27;écrire au moins une fois par semaine, et donc je vais devoir certainement écrire deux fois car l&#x27;idée était de publier au moins un article technique par semaine, celui-ci restant un article plutôt général, presque le &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.standblog.org&#x2F;blog&#x2F;&quot;&gt;&quot;en vrac&quot; de Tristant Nitot&lt;&#x2F;a&gt; que j&#x27;aime beaucoup. Cela fait un moment que je ne l&#x27;ai pas lu d&#x27;ailleurs.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Une semaine un peu chargée, qui tourne toujours autour des trois activités que j&#x27;aie en ce moment, le dessin avec les &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-aberscketchers&#x2F;&quot;&gt;Aberscketchers&lt;&#x2F;a&gt;, les &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Syst%C3%A8me_d%27information_g%C3%A9ographique&quot;&gt;système d&#x27;information géographiques&lt;&#x2F;a&gt; (GIS) et le development d&#x27;une application en scala utilisant &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.playframework.com&#x2F;&quot;&gt;Play Framework&lt;&#x2F;a&gt; pour piloter un centre de contact &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.genesys.com&#x2F;&quot;&gt;Genesys&lt;&#x2F;a&gt; ainsi que l&#x27;écriture d&#x27;un post sur la &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-revue-de-code&#x2F;&quot;&gt;revue de code&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;gis&quot;&gt;Gis&lt;&#x2F;h2&gt;
&lt;p&gt;Après avoir passé pas mal de temps à écrire un rôle &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.ansible.com&#x2F;&quot;&gt;Ansible&lt;&#x2F;a&gt; pour déployer la stack &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.lizmap.com&#x2F;&quot;&gt;Lizmap&lt;&#x2F;a&gt; avec docker-compose sur une machine de chez &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.hetzner.com&#x2F;&quot;&gt;Hetzner&lt;&#x2F;a&gt;, je me suis lancé dans l&#x27;étude du code de l&#x27;affichage de cartes afin de pouvoir réaliser une intégration sans passer par &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.qgis.org&#x2F;&quot;&gt;Qgis&lt;&#x2F;a&gt; desktop pour créer le projet. La génération des fichiers projets Qgis et Lizmap a été assez facile (merci Arnaud), par contre pouvoir lancer l&#x27;affichage web sans configuration préalable nécessite de descendre dans le code du client web de Lizmap. Pour l&#x27;instant, malgré la piste sérieuse que j&#x27;avais de créer des &lt;em&gt;repositories&lt;&#x2F;em&gt; à la volée, ce n&#x27;est pas concluant. Travail en cours donc.&lt;&#x2F;p&gt;
&lt;p&gt;A noter sur le front de la géographie &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;openlayers.org&#x2F;&quot;&gt;Openlayers&lt;&#x2F;a&gt; bibliothèque d&#x27;affichage et d&#x27;intégration de cartes et le futur site &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;cartes.gouv.fr&#x2F;&quot;&gt;gouvernemental des cartes et données du territoire&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dev&quot;&gt;Dev&lt;&#x2F;h2&gt;
&lt;p&gt;Sur le développement en &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.scala-lang.org&#x2F;&quot;&gt;Scala&lt;&#x2F;a&gt; et Play, j&#x27;avais omis au départ de tester les contrôleurs, en effet cela est souvent très consommateur de temps car on doit monter la stack web complète avant de lancer les tests, j&#x27;ai trouvé un compromis en les testant unitairement et en écrivant des helpers de tests qui simplifient grandement l&#x27;écriture des tests, malgré l&#x27;utilisation d&#x27;acteurs Akka qui permettent l&#x27;interconnexion avec d&#x27;autres serveurs.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;avais mis en place une architecture à base de contrôleurs &#x2F; &lt;em&gt;backcontrollers&lt;&#x2F;em&gt;, ou l&#x27;essentiel du travail est fait dans le &lt;em&gt;backcontroller&lt;&#x2F;em&gt; qui lui est complètement testable car hors de la stack web. Grace à cette opération, je démarre désormais les développement des nouvelles routes en TDD !
La nouvelle version de Play m&#x27;a permis aussi de remettre en place le rapport de couverture de tests, malheureusement que 70%.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dessin&quot;&gt;Dessin&lt;&#x2F;h2&gt;
&lt;p&gt;Une petite séance de dessin avec les &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-aberscketchers&#x2F;&quot;&gt;Aberscketchers&lt;&#x2F;a&gt; salle Nuit de Noce dimanche dernier. J&#x27;ai aussi pris part à un premier atelier avec &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;jeanmarcjezequel.fr&#x2F;ansib&quot;&gt;Jean-Marc Jezequel&lt;&#x2F;a&gt; à Guisseny ou j&#x27;ai commencé à peaufiner mon usage de l&#x27;aquarelle.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai lu cette semaine &quot;Nemesis&quot; d&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Isaac_Asimov&quot;&gt;Isaac Asimov&lt;&#x2F;a&gt;, que je n&#x27;avais pas encore lu, moi qui pensait avoir tout lu de lui. Je suis toujours fan de ses personnages, des dialogues et de cette histoire de l&#x27;humanité. Ici on est au prémisse de l&#x27;essaimage des hommes dans la galaxie, avec dans les personnages principaux une jeune fille qui m&#x27;a fait penser à la petite fille de la maire de Terminus dans la série &quot;Fondation&quot;. Pas de robots par contre dans ce roman. Toujours un plaisir à lire.&lt;&#x2F;p&gt;
&lt;p&gt;A noter aussi le visionnage d&#x27;une &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;vimeo.com&#x2F;879294549&quot;&gt;video&lt;&#x2F;a&gt; d&#x27;Adrian Cockcroft de sur laquelle je reviendrai et l&#x27;écoute d&#x27;un podcast d&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.ifttd.io&#x2F;&quot;&gt;IFThenDev&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Ce sera tout pour cette semaine, il va me falloir du temps je pense pour améliorer mon écriture, car c&#x27;est encore un peu laborieux.&lt;&#x2F;p&gt;
&lt;p&gt;Portez vous bien et à la semaine prochaine j&#x27;espère.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;08h03-08h36&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>La revue de code</title>
        <published>2023-11-21T00:00:00+00:00</published>
        <updated>2023-11-21T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-revue-de-code/"/>
        <id>https://jlebleu.gitlab.io/post-revue-de-code/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-revue-de-code/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;code_review.jpg&quot; alt=&quot;A la terrasse de l&amp;#x27;escale&quot; width=&quot;2000&quot; height=&quot;1239&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;Le Bel Espoir et le Rara Avis au mouillage à l&#x27;Aberwrac&#x27;h&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Tout le monde a lu ou lit aujourd&#x27;hui des articles sur la revue de code (code review en anglais), c&#x27;est une pratique qui devient largement répandue.
Peut-être la pratiquez vous vous même.
Mais se demande t&#x27;on si cela est une pratique efficace et surtout à quoi ca sert ?
Qu&#x27;est ce que cette pratique peux nous apporter et surtout quel problème peut-elle nous aider à résoudre.&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;les-objectifs&quot;&gt;Les objectifs&lt;&#x2F;h2&gt;
&lt;p&gt;Quels sont les objectifs de la revue de code ?&lt;&#x2F;p&gt;
&lt;h3 id=&quot;l-apprentissage&quot;&gt;L&#x27;apprentissage&lt;&#x2F;h3&gt;
&lt;p&gt;On ne le répétera jamais assez une équipe qui va vite est une équipe qui apprend et qui est capable d&#x27;apprendre. C&#x27;est un des facteurs les plus importants de la performance à long terme.
Un des objectifs numéro un de la revue de code est donc l&#x27;apprentissage, cela peut se traduire de trois façons différentes :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;La base de code&lt;&#x2F;li&gt;
&lt;li&gt;Le language utilisée&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;architecture du code&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;la-base-de-code&quot;&gt;La base de code&lt;&#x2F;h3&gt;
&lt;p&gt;C&#x27;est un moment d&#x27;échange entre les participants qui permet, lorsque le volume de code devient relativement important, de suggérer d&#x27;autre façon d&#x27;implémenter la fonctionnalité en utilisant du code existant. Les développeurs ayant la connaissance la plus approfondie peuvent donner à celui qui est l&#x27;auteur du code des pistes de remaniement de code en utilisant des méthodes ou fonctions du code déjà existant.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;le-language&quot;&gt;Le language&lt;&#x2F;h3&gt;
&lt;p&gt;Certains languages ont de subtilités qui méritent à être connues. Je pense par exemple à l&#x27;utilisation de modes fonctionnel plutôt que de l&#x27;objet en scala, ou encore utiliser les multiples possibilités des bibliothèques de collections. En PHP en peut aussi penser à utiliser un typage fort par exemple.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;l-architecture-du-code&quot;&gt;L&#x27;architecture du code&lt;&#x2F;h3&gt;
&lt;p&gt;Je connais peu de projets ou l&#x27;architecture du code est correctement documentée, bien qu&#x27;à ma grande surprise c&#x27;est un sujet qui revient souvent dans les rétrospectives.
Le code évoluant fréquemment c&#x27;est l&#x27;occasion ici de partager sur les modèles (pattern) utilisés.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;le-nommage&quot;&gt;Le nommage&lt;&#x2F;h2&gt;
&lt;p&gt;Le nommage est aussi une phase importante de l&#x27;écriture d&#x27;un logiciel, une fois un nom choisi il devient de plus en plus difficile à changer avec le temps.
Même si avec les outils actuels (qui ne sont pas toujours utilisés par les développeurs) on peut facilement renommer des variables ou des méthodes &#x2F; fonctions.
Il n&#x27;en reste pas moins, qu&#x27;une fois les noms choisis, ils passent aussi dans le vocabulaire courant et la cela devient de plus en plus difficile de renommer ce qui est dans le cerveau d&#x27;un être humain.
On peut se poser légitimement la question, la revue de code est-ce le bon moment pour discuter du nommage, et n&#x27;est-il pas déjà trop tard. Ne vaut-il pas mieux en discuter lors de séances de conception, de pair programming, de spécifications, de définition de user stories ?
En tout cas, la revue de code est le dernier moment ou peut éviter de laisser partir un nommage pas très heureux.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;l-adequation-aux-specifications&quot;&gt;L&#x27;adéquation aux spécifications&lt;&#x2F;h2&gt;
&lt;p&gt;C&#x27;est le deuxième oeil sur ce qui a été développé et au delà du passage des tests unitaires et des tests fonctionnels (ce qui doit aussi être obligatoire), c&#x27;est l&#x27;occasion d&#x27;apporter un deuxième angle sur ce qui a été réalisé et vérifier que cela correspond bien a ce qui a été demandé.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;en-resume&quot;&gt;En résumé&lt;&#x2F;h2&gt;
&lt;p&gt;La revue de code, permet certe d&#x27;améliorer la qualité du code produit en partageant les bonnes pratiques et en les propageant vers tout les membres de l&#x27;équipe. C&#x27;est aussi un moment ou l&#x27;on pourra vérifier la pertinence de l&#x27;implémentation et aussi l&#x27;exhaustivité de la réalisation.
Mais attention de ne pas tomber dans l’excès. Un développeur sachant que son code et son implémentation vont être revus peut être tenté de ne pas porter toute l&#x27;attention qu&#x27;il aurait du avoir si son code partait directement en production.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;references&quot;&gt;Références&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;google.github.io&#x2F;eng-practices&#x2F;review&#x2F;reviewer&#x2F;standard.html&quot;&gt;The Standard of Code Review&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;google.github.io&#x2F;eng-practices&#x2F;review&#x2F;reviewer&#x2F;looking-for.html#complexity&quot;&gt;What to look for in a code review&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;leanagilite.com&#x2F;2021&#x2F;12&#x2F;24&#x2F;apprendre-a-apprendre-avec-le-lean-un-passage-oblige&#x2F;&quot;&gt;Apprendre à apprendre avec le Lean, un passage obligé&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Deuxième semaine le retour</title>
        <published>2023-11-15T00:00:00+00:00</published>
        <updated>2023-11-15T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-2nd-week/"/>
        <id>https://jlebleu.gitlab.io/post-2nd-week/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-2nd-week/">&lt;p&gt; 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;ilevierge.jpg&quot; alt=&quot;L&amp;#x27;ile vierge vue de Stagadon&quot; width=&quot;2000&quot; height=&quot;1087&quot; loading=&quot;lazy&quot; &#x2F;&gt;

&lt;em&gt;L&#x27;ile vierge vue de Stagadon&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Commencé à 17h12&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Chose promise, chose due, je reviens pour la deuxième semaine. Comme je l&#x27;ai dit dans ce &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-weekly&#x2F;&quot;&gt;précédent article&lt;&#x2F;a&gt;, voici le deuxième post de la série &lt;em&gt;un article par semaine&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai donc craqué et acheté le livre de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.jrothman.com&#x2F;&quot;&gt;Johanna Rothman&lt;&#x2F;a&gt; pour &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.jrothman.com&#x2F;books&#x2F;free-your-inner-nonfiction-writer&#x2F;&quot;&gt;libérer l&#x27;écrivain qui est en moi&lt;&#x2F;a&gt; et me voila parti.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;le-livre&quot;&gt;Le livre&lt;&#x2F;h2&gt;
&lt;p&gt;Quelques mots sur son livre que je viens de terminer.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ecrire ecrire ecrire&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Le secret de l&#x27;écriture vous n&#x27;en douterez pas c&#x27;est d&#x27;écrire, plus on écrit plus on sait écrire.
C&#x27;est peut être enfoncer un porte ouverte, mais c&#x27;est un conseil que l&#x27;on peut appliquer à beaucoup de domaines, l&#x27;écriture, le dessin, le développement, le TDD etc....&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ecrire pour ses lecteurs&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Il s&#x27;agit de se mettre à la place de son lectorat. Ca ne vous rappelle rien ?
Se mettre à la place de l&#x27;utilisateur, je raconterai certainement l’anecdote une autre fois.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Terminer ce que l&#x27;on commence&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Terminer c&#x27;est finir l&#x27;écriture et surtout &lt;em&gt;publier&lt;&#x2F;em&gt;.
Pour paraphraser quelqu&#x27;un que je connais bien, ce qui n&#x27;est pas en production n&#x27;existe pas .....&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Ecrire à la volée&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;C&#x27;est à dire ne pas revenir en arrière pour corriger le text ou le reformuler.
On démarre par une session de 15 minutes, un peu long pour moi je trouve, et à la fin de chaque session on cycle, c&#x27;est à dire on reviens sur ce qu&#x27;on a écrit et surtout on n&#x27;édite pas.
La j&#x27;avoue que j&#x27;ai un peu de mal à comprendre ce que veux dire ce cycle, j&#x27;y reviendrai sûrement après y avoir réfléchi.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;La structure&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;On commence par une phrase d&#x27;accroche: quel est le problème que l&#x27;on essaie d&#x27;adresser.&lt;br &#x2F;&gt;
Ensuite on développe et en conclusion on reviens sur la définition du problème. (j&#x27;écris un test j&#x27;écris un code et je remanie le code &lt;em&gt;Refactor&lt;&#x2F;em&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Il y a encore beaucoup d&#x27;autre choses dans ce livre qui mérite d&#x27;être digéré et relu, j&#x27;en reparlerai sûrement.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;pendant-la-semaine&quot;&gt;Pendant la semaine&lt;&#x2F;h2&gt;
&lt;p&gt;J&#x27;ai tout de même réussi pendant la semaine qui vient de s&#x27;écouler à publier deux articles, un sur la &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-upgrade-abridge&#x2F;&quot;&gt;construction de ce blog&lt;&#x2F;a&gt; et un autre sur les &lt;a href=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;post-aberscketchers&#x2F;&quot;&gt;&lt;strong&gt;abersketchers&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; un groupe de dessin que j&#x27;ai créé, une de mes passions avec le développement, et auquel je participe ici à Landéda.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai aussi passé pas mal de temps sur la structure technique de ce blog, pas vraiment satisfait par la mise en page du &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jieiku&#x2F;abridge&#x2F;&quot;&gt;thème abridge&lt;&#x2F;a&gt;, j&#x27;en ai essayé un autre &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;themes&#x2F;deepthought&#x2F;&quot;&gt;deepthought&lt;&#x2F;a&gt;. Mais intégrer un autre thème m&#x27;a envoyé un peu trop loin alors je me suis mis à modifier le thème abridge en réécrivant une partie des templates et des feuilles de style.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai aussi mis en pratique les conseils de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.jrothman.com&#x2F;&quot;&gt;Johanna Rothman&lt;&#x2F;a&gt;  en faisant l&#x27;exercice d&#x27;écrire pendant un temps déterminé, 10 mn en l’occurrence.
Par contre je ne suis pas allé plus loin pour l&#x27;instant, il me reste à réviser l&#x27;article et à le publier.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;oubliais j&#x27;ai aussi fait le tour de mes autre blogs démarrés et abandonnés et je me suis apercu que j&#x27;avais déjà écrit pas mal de choses !!!&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai commencé à semer mes &lt;em&gt;pierres des champs&lt;&#x2F;em&gt; fieldstones(voir &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.fnac.com&#x2F;a4970873&#x2F;Consulting-Secrets-Weinberg-on-Writing-The-Fieldstone-Method-Gerald-M-Weinberg&quot;&gt;Weinberg’s _Weinberg on Writing&lt;&#x2F;a&gt;) et à créer une banque d&#x27;idée que je met à jour avec &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;obsidian.md&quot;&gt;Obsidian&lt;&#x2F;a&gt; &lt;em&gt;(tiens le thème d&#x27;un ou deux prochains articles)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Comme vous voyez, les idées ne manquent pas il ne me reste plus qu&#x27;à revoir un peu la structure de ce post y ajouter quelques liens, une belle image et le publier.&lt;&#x2F;p&gt;
&lt;p&gt;A bientôt.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Terminé à 17h27 - 18h06&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Tout sur les Aberscketchers</title>
        <published>2023-11-12T00:00:00+00:00</published>
        <updated>2023-11-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-aberscketchers/"/>
        <id>https://jlebleu.gitlab.io/post-aberscketchers/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-aberscketchers/"> 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;IMG_20220815_131107.jpg&quot; alt=&quot;Vue des carnets lors d&amp;#x27;une rencontre&quot; width=&quot;4608&quot; height=&quot;2176&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;h2 id=&quot;histoire&quot;&gt;Histoire&lt;&#x2F;h2&gt;
&lt;p&gt;Le groupe &lt;em&gt;Aberscketchers&lt;&#x2F;em&gt; en référence aux &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;france.urbansketchers.org&#x2F;&quot;&gt;Urbanscketchers&lt;&#x2F;a&gt; s&#x27;est réunis pour la première fois au &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.instagram.com&#x2F;bzzzt.cafe&#x2F;?hl=fr&quot;&gt;Bzztcafé&lt;&#x2F;a&gt; à Plouguerneau le 12 Juin 2022.
Depuis nous nous rencontrons de loin en loin souvent le dimanche matin de 10h30 à 12h30 environ, et nous prolongeons la rencontre, si le temps le permet d&#x27;un pique nique partagé.
Les sorties sont pour l&#x27;essentiel autour de Landéda, Plouguerneau et Lannilis&lt;&#x2F;p&gt;
&lt;p&gt;Depuis cette date, nous nous sommes réunis une bonne quinzaine de fois.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;organisation&quot;&gt;Organisation&lt;&#x2F;h2&gt;
&lt;p&gt;Les réunions se passent de préférence à l’extérieur nous sommes néanmoins obligés de temps en temps de nous retrouver à l&#x27;intérieur surtout l&#x27;hiver.&lt;&#x2F;p&gt;
&lt;p&gt;Il n&#x27;y a pas réellement d&#x27;organisation, chacun peut convoquer une réunion à son gré, il suffit d&#x27;avoir envie de dessiner quelque part et de partager son rendez vous sur la liste de diffusion du groupe.
Pour être au courant des informations du groupe, on s&#x27;inscrit à la liste de diffusion du groupe &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;framagroupes.org&#x2F;sympa&#x2F;info&#x2F;abersketchers&quot;&gt;Aberscketchers&lt;&#x2F;a&gt; liste hébergée par &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;framagroupes.org&#x2F;&quot;&gt;framagroupes&lt;&#x2F;a&gt;.
En général, quelqu&#x27;un m&#x27;envoie un mail et j&#x27;ajoute la personne à la liste de diffusion.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;les-rencontres&quot;&gt;Les rencontres&lt;&#x2F;h2&gt;
&lt;p&gt;Les séances de dessin sont collectives, sans animateur, chacun amène son matériel et dessine ce qui lui fait le plus envie sur le moment.
Il n&#x27;y a pas d&#x27;obligation d&#x27;utiliser tel ou tel medium, et toutes les techniques sont les bienvenues, y compris les techniques numériques.&lt;&#x2F;p&gt;
&lt;p&gt;A la fin du rendez-vous nous partageons nos dessins et publions &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;kdrive.infomaniak.com&#x2F;app&#x2F;share&#x2F;627989&#x2F;67f65665-a1df-4d28-b8fa-391b679f248d&quot;&gt;les photos ici dans un répertoire partagé&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;vers-un-evenement-l-annee-prochaine&quot;&gt;Vers un événement l&#x27;année prochaine&lt;&#x2F;h2&gt;
&lt;p&gt;Nous prévoyons un week-end d&#x27;échange autour du dessin le week-end du 25 et 26 mai que nous organiserions conjointement avec l&#x27;atelier d&#x27;aquarelle (à confirmer)&lt;&#x2F;p&gt;
&lt;h3 id=&quot;quelques-idees-pour-le-week-end&quot;&gt;Quelques idées pour le week-end&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Exposition des participants&lt;&#x2F;li&gt;
&lt;li&gt;Journée &lt;em&gt;parcours de croquis&lt;&#x2F;em&gt; avec points de rendez-vous, pique nique partagé le midi et retrouvailles en salle pour mise en commun des oeuvres et apéro puis repas commun le soir pour les inscrits&lt;&#x2F;li&gt;
&lt;li&gt;Invitation des groupes proches (Morlaix, Brest, Quimper, Lorient)&lt;&#x2F;li&gt;
&lt;li&gt;Ateliers de démarrage pour ceux qui veulent ce lancer&lt;&#x2F;li&gt;
&lt;li&gt;Autres ateliers pour ceux qui veulent échanger leurs savoirs.&lt;&#x2F;li&gt;
&lt;li&gt;Et beaucoup d&#x27;autres idées .... j&#x27;espère.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;fonctionnement-avec-echanges-et-savoir&quot;&gt;Fonctionnement avec Echanges et Savoir.&lt;&#x2F;h2&gt;
&lt;p&gt;Nous sommes en discussion avec l&#x27;association &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.echanges-et-savoirs-landeda.fr&#x2F;&quot;&gt;&lt;em&gt;échanges et savoir&lt;&#x2F;em&gt;&lt;&#x2F;a&gt; de Landéda, avec qui nous aurions des intérêts communs le mouvement des &lt;strong&gt;urbansketchers&lt;&#x2F;strong&gt; étant aussi dans une dynamique de partage.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Les quelques idées que nous avons évoquées ensemble lors de notre dernière réunion :&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Nous sommes à la recherche de salle surtout l&#x27;hiver, environ 2 fois par mois.
&lt;ul&gt;
&lt;li&gt;Nous pouvons convenir à l&#x27;avance de dates et de créneaux horaires pour cette période.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;Il est bien entendu que pour profiter des séances en salle lors des rencontres dans le cadre d&#x27;échange et savoir, les participants devront être à jour de la cotisation.&lt;&#x2F;li&gt;
&lt;li&gt;Par contre en dehors des séances en salle &lt;em&gt;échanges et savoirs&lt;&#x2F;em&gt; l&#x27;accès aux rencontres reste libre et sans obligation de cotisation.&lt;&#x2F;li&gt;
&lt;li&gt;Le nom du groupe reste &lt;strong&gt;Aberscketchers&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;On continue à utiliser la liste de diffusion pour organiser nos rendez vous.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;quelques-references&quot;&gt;Quelques références.&lt;&#x2F;h2&gt;
&lt;p&gt;Le mouvement Urbansketchers : &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;urbansketchers.org&#x2F;fr&#x2F;&quot;&gt;https:&#x2F;&#x2F;urbansketchers.org&#x2F;fr&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Le mouvement Français : &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;france.urbansketchers.org&#x2F;&quot;&gt;https:&#x2F;&#x2F;france.urbansketchers.org&#x2F;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;vision-et-valeurs-le-manifeste-des-urbansketchers&quot;&gt;Vision et valeurs : Le manifeste des Urbansketchers&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Nous dessinons sur place, à l&#x27;intérieur ou à l&#x27;extérieur, en capturant ce que nous voyons par observation directe.&lt;&#x2F;li&gt;
&lt;li&gt;Nos dessins racontent l&#x27;histoire de notre environnement, de nos voyages et des lieux où nous vivons.&lt;&#x2F;li&gt;
&lt;li&gt;Nos dessins sont des enregistrements du temps et du lieu.&lt;&#x2F;li&gt;
&lt;li&gt;Nous sommes fidèles aux scènes dont nous sommes témoins.&lt;&#x2F;li&gt;
&lt;li&gt;Nous utilisons tout type de support et valorisons nos styles individuels.&lt;&#x2F;li&gt;
&lt;li&gt;Nous nous soutenons mutuellement et dessinons ensemble.&lt;&#x2F;li&gt;
&lt;li&gt;Nous partageons nos dessins en ligne.&lt;&#x2F;li&gt;
&lt;li&gt;Nous montrons au monde, un dessin à la fois.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mise à jour du thème Abridge</title>
        <published>2023-11-09T00:00:00+00:00</published>
        <updated>2023-11-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-upgrade-abridge/"/>
        <id>https://jlebleu.gitlab.io/post-upgrade-abridge/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-upgrade-abridge/">&lt;p&gt;Je viens de mettre à jour non sans difficultées le thème &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;Jieiku&#x2F;abridge&quot;&gt;abridge&lt;&#x2F;a&gt; que j&#x27;utilise sur ce blog avec &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;getzola&lt;&#x2F;a&gt;.
Reste à bidouiller un peu le css pour la taille des fonts, et gérer correctement le multilangue.&lt;&#x2F;p&gt;
&lt;p&gt;Voici mes notes (&lt;em&gt;en anglais&lt;&#x2F;em&gt;):&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Remove content (except posts)&lt;&#x2F;li&gt;
&lt;li&gt;Remove template&lt;&#x2F;li&gt;
&lt;li&gt;Save config.toml&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt;&lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;git&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; submodule update&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; --&lt;&#x2F;span&gt;remote&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Follow doc&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; class=&quot;language-bash z-code&quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;touch&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; templates&#x2F;.gitkeep&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; themes&#x2F;abridge&#x2F;config.toml config.toml&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; themes&#x2F;abridge&#x2F;content&#x2F;_index.md content&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; themes&#x2F;abridge&#x2F;COPY-TO-ROOT-SASS&#x2F;&lt;span class=&quot;z-keyword z-operator z-regexp z-quantifier z-shell&quot;&gt;*&lt;&#x2F;span&gt; sass&#x2F;&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; themes&#x2F;abridge&#x2F;netlify.toml netlify.toml&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; themes&#x2F;abridge&#x2F;package_abridge.js package_abridge.js&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt; themes&#x2F;abridge&#x2F;package.json package.json&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;span class=&quot;z-source z-shell z-bash&quot;&gt; &lt;span class=&quot;z-meta z-function-call z-shell&quot;&gt;&lt;span class=&quot;z-variable z-function z-shell&quot;&gt;rsync&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;span class=&quot;z-meta z-function-call z-arguments z-shell&quot;&gt;&lt;span class=&quot;z-variable z-parameter z-option z-shell&quot;&gt;&lt;span class=&quot;z-punctuation z-definition z-parameter z-shell&quot;&gt; -&lt;&#x2F;span&gt;r&lt;&#x2F;span&gt; themes&#x2F;abridge&#x2F;content .&lt;&#x2F;span&gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Update config.toml and saas&#x2F;abridge.css (social icons)&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Un article par semaine</title>
        <published>2023-11-08T00:00:00+00:00</published>
        <updated>2023-11-08T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-weekly/"/>
        <id>https://jlebleu.gitlab.io/post-weekly/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-weekly/">&lt;p&gt;&lt;em&gt;08h16&lt;&#x2F;em&gt;
 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;carnetmoulinenfer.jpg&quot; alt=&quot;Rencontre au moulin de l&amp;#x27;enfer&quot; width=&quot;3052&quot; height=&quot;2160&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est parti aujourd&#x27;hui je prends une décision. Après avoir tourné longtemps autour du pot et lu quelques articles ici ou la sur la pratique régulière de l&#x27;écriture, je me lance....
Un article par semaine.
Il est difficile de ne pas se laisser distraire, je saute donc sur mon &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;code.visualstudio.com&#x2F;&quot;&gt;éditeur de code préféré&lt;&#x2F;a&gt;, je refrène un peu mon envie de trouver comment mettre en place
un correcteur orthographique en français (vous voyez les fotes ?) et en avant.&lt;&#x2F;p&gt;
&lt;p&gt;Mon dernier article date d&#x27;y il y a un mois, sur le defi &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Inktober&quot;&gt;inktober&lt;&#x2F;a&gt; que j&#x27;ai réussi à suivre, un dessin par jour, j&#x27;en ai posté quelque uns sur &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&#x2F;profile&#x2F;565892503158459726&quot;&gt;pixelfed&lt;&#x2F;a&gt; par contre je ne les ai pas tous postés.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;un-livre-a-lire&quot;&gt;Un livre à lire&lt;&#x2F;h2&gt;
&lt;p&gt;Vais je acheter le livre de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;framapiaf.org&#x2F;@johannarothman@mastodon.sdf.org&quot;&gt;Johanna Rothman&lt;&#x2F;a&gt; sur leanpub &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;leanpub.com&#x2F;freeyourinnerwriter&quot;&gt;Free Your Inner Nonfiction Writer&lt;&#x2F;a&gt; ? Cela me permetterait peut-être de lancer cette fois un blog technique et de m&#x27;y tenir.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai pas mal de sujets en ce moment autour d&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.ansible.com&#x2F;&quot;&gt;Ansible&lt;&#x2F;a&gt;, de &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.3liz.com&#x2F;opensource.html&quot;&gt;Lizmap&lt;&#x2F;a&gt; que je suis en train d&#x27;explorer et d&#x27;un projet en &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Scala_(langage)&quot;&gt;Scala&lt;&#x2F;a&gt; utilisant &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.playframework.com&#x2F;&quot;&gt;Play Framework&lt;&#x2F;a&gt; mais ca ce sera pour le prochain article.&lt;&#x2F;p&gt;
&lt;p&gt;En tout ca je continue ma prise de notes avec &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;obsidian.md&#x2F;&quot;&gt;Obsidian&lt;&#x2F;a&gt; qui sera j&#x27;espère une source d&#x27;inspiration&lt;&#x2F;p&gt;
&lt;p&gt;Allez le combat continue ... bon écriture à tous et à la semaine prochaine.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;Ps: C&#x27;est bon je rajoute quelques liens, une p&#x27;tite photo en haut de l&#x27;article et je publie (git commit, push et &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gitlab.com&quot;&gt;gitlab&lt;&#x2F;a&gt; va faire le reste)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;08h33&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Inktobreizh 2023</title>
        <published>2023-10-12T00:00:00+00:00</published>
        <updated>2023-10-12T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-inktobreizh/"/>
        <id>https://jlebleu.gitlab.io/post-inktobreizh/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-inktobreizh/">&lt;p&gt;Cette année je retente le challenge dessin du mois d&#x27;octobre&lt;&#x2F;p&gt;
&lt;p&gt;Le defi &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Inktober&quot;&gt;inktober&lt;&#x2F;a&gt; 2023 et sa &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.letelegramme.fr&#x2F;finistere&#x2F;brest-29200&#x2F;les-brestois-deor-glas-studio-relancent-leur-challenge-creatif-doctobre-sur-instagram-6434780.php&quot;&gt;version bretonne&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai choisi la version bretonne avec sa liste de mots
&lt;img src=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;storage&#x2F;m&#x2F;_v2&#x2F;565892503158459726&#x2F;f1538e3aa-7b3151&#x2F;5gGfKywVF46s&#x2F;XlMYGtEQdrcDhk0amm9lzCKkgGgBb64qhjZf4wax.jpg&quot; alt=&quot;liste de mots&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;11 jours de dessins à l&#x27;encre, un exercice à tenter, pas facile de dessiner à l&#x27;encre directement et de simuler les couleurs.&lt;&#x2F;p&gt;
&lt;p&gt;Je suis un peu seul sur le tag &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&#x2F;hashtag&#x2F;inktobreizh2023&quot;&gt;breizhtober2023&lt;&#x2F;a&gt; sur &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&quot;&gt;pixelfed&lt;&#x2F;a&gt;
par contre pas mal de monde qui s&#x27;essayent à &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&#x2F;hashtag&#x2F;inktober2023&quot;&gt;inktober2023&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Allez le combat continue ... bon dessins à tous.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Pixelfed, nous voilà !!!</title>
        <published>2023-05-22T00:00:00+00:00</published>
        <updated>2023-05-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-pixelfeld/"/>
        <id>https://jlebleu.gitlab.io/post-pixelfeld/</id>
        
        <content type="html" xml:base="https://jlebleu.gitlab.io/post-pixelfeld/">&lt;p&gt;Allez aujourd&#x27;hui je démarre sur &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;i&#x2F;web&#x2F;profile&#x2F;565892503158459726&quot;&gt;PixelFed&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Après un choix rapide du serveur sur &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.org&#x2F;servers&quot;&gt;https:&#x2F;&#x2F;pixelfed.org&#x2F;servers&lt;&#x2F;a&gt;, pas très compliqué je prends l&#x27;&lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;pixelfed.fr&quot;&gt;instance française pixelfed.fr&lt;&#x2F;a&gt; et hop me voila parti !!!&lt;&#x2F;p&gt;
&lt;p&gt;Un premier post sur notre dernière rencontre d&#x27;&lt;em&gt;Urbansketcher&lt;&#x2F;em&gt;, à la &lt;a rel=&quot;noopener&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;abers-patrimoine.bzh&#x2F;kpoi&#x2F;chapelle-saint-laurent-a-tromenec&#x2F;&quot;&gt;chapelle de Tromenec&lt;&#x2F;a&gt; de Landéda avec les &lt;em&gt;Aberscketchers&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;De belles contributions des participants
&lt;img src=&quot;https:&#x2F;&#x2F;pixelfed.fr&#x2F;storage&#x2F;m&#x2F;_v2&#x2F;565892503158459726&#x2F;c537ce87c-f5971d&#x2F;PZmopjkeIUki&#x2F;xfdAdmxg8fzPwmiubIqrcNTAC1hZKovNrgPBz3BC.jpg&quot; alt=&quot;contributions&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Adieu Instagram&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Un role Ansible qui coince</title>
        <published>2022-11-03T00:00:00+00:00</published>
        <updated>2022-11-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://jlebleu.gitlab.io/post-ansible-stuck/"/>
        <id>https://jlebleu.gitlab.io/post-ansible-stuck/</id>
        
        <summary type="html"> 
&lt;img src=&quot;https:&#x2F;&#x2F;jlebleu.gitlab.io&#x2F;images&#x2F;Demarreur.jpg&quot; alt=&quot;Photo de demarreur&quot; width=&quot;1500&quot; height=&quot;937&quot; loading=&quot;lazy&quot; &#x2F;&gt;
&lt;p&gt;Je me suis retrouvé coincé aujourd&#x27;hui avec un role ansible qui effectue un déploiement avec git, le repo était bien copié sur le serveur mais ansible ne rendait pas la main après avoir terminé le clone du repo git.&lt;&#x2F;p&gt;</summary>
        
    </entry>
</feed>
