<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Go on perri.to</title>
    <link>https://perri.to/fr/tags/go/</link>
    <description>Recent content in Go on perri.to</description>
    <generator>Hugo</generator>
    <language>fr-FR</language>
    <lastBuildDate>Sun, 19 Jul 2026 16:55:30 +0200</lastBuildDate>
    <atom:link href="https://perri.to/fr/tags/go/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Choisir le prochain outil</title>
      <link>https://perri.to/fr/2026/03/choisir-le-prochain-outil/</link>
      <pubDate>Sun, 01 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://perri.to/fr/2026/03/choisir-le-prochain-outil/</guid>
      <description>&lt;p&gt;Professionnellement, si je devais le résumer en une seule phrase, je dirais ceci :&lt;/p&gt;&#xA;&lt;p&gt;J&amp;rsquo;ai toujours choisi les outils que quelqu&amp;rsquo;un était prêt à me payer le plus cher pour les utiliser.&lt;/p&gt;&#xA;&lt;h3 id=&#34;tout-a-commencé-avec-visual-basic-6&#34;&gt;Tout a commencé avec Visual Basic 6.&lt;/h3&gt;&#xA;&lt;p&gt;À l&amp;rsquo;époque, du moins dans mon pays, c&amp;rsquo;était le langage dominant pour les applications de gestion. Cabinets comptables, entreprises de taille moyenne, systèmes de gestion internes : &lt;strong&gt;tout&lt;/strong&gt; tournait sous VB6. Je suis devenu très efficace avec lui. Pas seulement productif : j&amp;rsquo;ai appris comment il fonctionnait en profondeur, ses limites, ses bizarreries.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Générer des types go à partir de json</title>
      <link>https://perri.to/fr/2020/11/generer-des-types-go-a-partir-de-json/</link>
      <pubDate>Fri, 13 Nov 2020 00:21:26 +0000</pubDate>
      <guid>https://perri.to/fr/2020/11/generer-des-types-go-a-partir-de-json/</guid>
      <description>&lt;p&gt;L&amp;rsquo;un des obstacles les plus courants lorsqu&amp;rsquo;on programme des logiciels exposés à internet en Go est le parsing du JSON. En tant que langage typé, Go exige un destinataire correctement défini pour le JSON désérialisé. Un contournement courant est un arbre imbriqué à l&amp;rsquo;infini de &lt;code&gt;map[string]interface{}&lt;/code&gt; et un tas de type assertions récursives.&lt;/p&gt;&#xA;&lt;p&gt;En développant &lt;a href=&#34;https://github.com/ShiftLeftSecurity/atlassian-connect-go&#34;&gt;atlassian-connect-go&lt;/a&gt;, je me suis heurté au même mur : beaucoup des types d&amp;rsquo;Atlassian n&amp;rsquo;étaient définis que sous forme de JSON. J&amp;rsquo;ai fini par le régler en créant &lt;a href=&#34;https://github.com/perrito666/LAC&#34;&gt;LazyApiCoder&lt;/a&gt;, qui peut créer un ensemble complet de types go à partir soit d&amp;rsquo;un schéma swagger 3, soit d&amp;rsquo;un ensemble d&amp;rsquo;exemples JSON.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Créer des plugins JIRA cloud (atlassian connect) en Go</title>
      <link>https://perri.to/fr/2020/11/creer-des-plugins-jira-cloud-atlassian-connect-en-go/</link>
      <pubDate>Mon, 09 Nov 2020 17:27:06 +0000</pubDate>
      <guid>https://perri.to/fr/2020/11/creer-des-plugins-jira-cloud-atlassian-connect-en-go/</guid>
      <description>&lt;h2 id=&#34;quest-ce-quun-plug-in-pour-jira-cloud&#34;&gt;Qu&amp;rsquo;est-ce qu&amp;rsquo;un plug-in pour JIRA cloud&lt;/h2&gt;&#xA;&lt;p&gt;Atlassian accepte les plugins Cloud sous la forme d&amp;rsquo;applications du framework Atlassian Connect,&#xA;qui consistent en une série d&amp;rsquo;endpoints servant divers iframes affichés dans leur interface, ainsi que&#xA;quelques webhooks. Toutes les capacités d&amp;rsquo;un plug-in sont déclarées dans un fichier JSON utilisé par JIRA ou&#xA;leurs autres apps pour « installer » le plugin.&lt;/p&gt;&#xA;&lt;p&gt;Comme il s&amp;rsquo;agit principalement de servir du contenu, si notre infrastructure est déjà composée de services en Go,&#xA;nous voudrons naturellement ajouter le plug-in à cette même infrastructure existante.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Les plugins Go et la distribution de contenu</title>
      <link>https://perri.to/fr/2017/03/les-plugins-go-et-la-distribution-de-contenu/</link>
      <pubDate>Mon, 13 Mar 2017 08:28:14 -0300</pubDate>
      <guid>https://perri.to/fr/2017/03/les-plugins-go-et-la-distribution-de-contenu/</guid>
      <description>&lt;h4 id=&#34;nouvelle-fonctionnalité&#34;&gt;Nouvelle fonctionnalité&lt;/h4&gt;&#xA;&lt;p&gt;La dernière version de go (&lt;a href=&#34;https://golang.org/doc/go1.8&#34;&gt;1.8&lt;/a&gt;) apporte une fonctionnalité que&#xA;j&amp;rsquo;attendais depuis très longtemps, les &lt;a href=&#34;https://golang.org/pkg/plugin/#Plugin.Lookup&#34;&gt;plugins&lt;/a&gt;.&#xA;Ceci dit, cette fonctionnalité a pour l&amp;rsquo;instant quelques limitations, présentes dans la documentation :&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Elle ne fonctionne que sous Linux (ce qui me convient très bien, vu ce que je veux faire)&lt;/li&gt;&#xA;&lt;li&gt;Un plugin n&amp;rsquo;est initialisé qu&amp;rsquo;une seule fois et ne peut pas être fermé.&lt;/li&gt;&#xA;&lt;li&gt;Il doit s&amp;rsquo;agir d&amp;rsquo;un paquet main.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Et j&amp;rsquo;ai aussi découvert par moi-même quelques petits désagréments :&lt;/p&gt;</description>
    </item>
    <item>
      <title>Tester en go, avec go check</title>
      <link>https://perri.to/fr/2015/08/tester-en-go-avec-go-check/</link>
      <pubDate>Fri, 28 Aug 2015 00:00:00 +0000</pubDate>
      <guid>https://perri.to/fr/2015/08/tester-en-go-avec-go-check/</guid>
      <description>&lt;h2 id=&#34;avertissement--ceci-est-principalement-destiné-à-servir-de-ma-propre-autodocumentation&#34;&gt;Avertissement : ceci est principalement destiné à servir de ma propre autodocumentation.&lt;/h2&gt;&#xA;&lt;p&gt;Tester en go est assez simple, comme vous pouvez le voir dans &lt;a href=&#34;http://golang.org/pkg/testing/&#34;&gt;la documentation&lt;/a&gt;&#xA;Une structure de base, un paquet simple :&lt;/p&gt;&#xA;&lt;p&gt;Un fichier nommé &lt;strong&gt;sample.go&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-go&#34; data-lang=&#34;go&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kn&#34;&gt;package&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sample&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kd&#34;&gt;func&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nf&#34;&gt;sampleFunction&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sampleSlice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;[]&lt;/span&gt;&lt;span class=&#34;kt&#34;&gt;string&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;w&#34;&gt;    &lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sampleSlice&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;p&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;nb&#34;&gt;append&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;(&lt;/span&gt;&lt;span class=&#34;nx&#34;&gt;sampleSlice&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;&lt;span class=&#34;w&#34;&gt; &lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;called&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;)&lt;/span&gt;&lt;span class=&#34;w&#34;&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&#xA;&lt;p&gt;En ce qui concerne go, ceci est un paquet et si vous faites &lt;strong&gt;go build&lt;/strong&gt; dessus, il compilera.&#xA;Ajouter des tests à ce paquet est aussi simple qu&amp;rsquo;ajouter un fichier se terminant par &lt;strong&gt;_test.go&lt;/strong&gt;&#xA;Tout ce qui porte le nom mentionné ci-dessus sera interprété comme un fichier de test et donc&#xA;compilé uniquement au moment des tests.&#xA;À toutes fins pratiques, pendant les tests, votre fichier sera considéré comme faisant partie du&#xA;paquet dont le nom est déclaré dans la section &lt;strong&gt;package&lt;/strong&gt; du &lt;strong&gt;_test.go&lt;/strong&gt;.&#xA;Malheureusement, c&amp;rsquo;est là que s&amp;rsquo;arrête l&amp;rsquo;aide que go nous apporte pour faire des tests ; si vous lisez la documentation, vous&#xA;trouverez qu&amp;rsquo;il n&amp;rsquo;existe pas d&amp;rsquo;outillage intégré pour des choses comme les assertions et les suites.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
