<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Posts on Cédric L'homme</title><link>https://l-homme.com/posts/</link><description>Recent content in Posts on Cédric L'homme</description><generator>Hugo</generator><language>fr-fr</language><lastBuildDate>Wed, 09 Sep 2026 18:45:00 +0000</lastBuildDate><atom:link href="https://l-homme.com/posts/index.xml" rel="self" type="application/rss+xml"/><item><title>Améliorer la configuration de votre télé connectée Android avec un agent</title><link>https://l-homme.com/posts/debloat-sony-android-tv-sans-root/</link><pubDate>Wed, 09 Sep 2026 18:45:00 +0000</pubDate><guid>https://l-homme.com/posts/debloat-sony-android-tv-sans-root/</guid><description>&lt;p&gt;Ma TV Sony BRAVIA passait son temps à me pousser des promos, des bannières
&amp;ldquo;films en vedette&amp;rdquo; et des applications que je n&amp;rsquo;utilise jamais.
Pas envie de rooter l&amp;rsquo;appareil pour autant : trop risqué, et pas nécessaire.
ADB (Android Debug Bridge) permet de désactiver une bonne partie de ce qui
gêne, sans toucher au système lui-même. Pas tout, comme on va le voir.&lt;/p&gt;
&lt;p&gt;On parle beaucoup des agents IA capables d&amp;rsquo;attaquer des sites web tout
seuls, comme si l&amp;rsquo;autonomie n&amp;rsquo;avait de valeur que dans un contexte de
sécurité offensive. Configurer une télé Android n&amp;rsquo;a rien d&amp;rsquo;offensif, mais
c&amp;rsquo;est le même genre de travail : explorer un système qu&amp;rsquo;on ne connaît pas,
repérer ce qui compte, agir dessus sans tout casser. J&amp;rsquo;ai fait la partie
que je ne pouvais pas déléguer, activer le mode développeur, le pairing,
connecter ADB, puis j&amp;rsquo;ai laissé un agent (Claude Code) reprendre la main
sur trois fronts : les applications installées en trop, les publicités
qui s&amp;rsquo;affichent, et les paramètres de confidentialité. Voici comment ça
s&amp;rsquo;est passé, avec les pièges en route et ce qui n&amp;rsquo;a pas marché.&lt;/p&gt;</description></item><item><title>Problems with AI are nothing new. The tools have changed. The excuses haven't.</title><link>https://l-homme.com/posts/problems-with-ia-are-nothing-new-the-tools-have-changed-the-excuses-havent/</link><pubDate>Sun, 05 Apr 2026 07:58:36 +0000</pubDate><guid>https://l-homme.com/posts/problems-with-ia-are-nothing-new-the-tools-have-changed-the-excuses-havent/</guid><description>&lt;p&gt;People keep searching for the perfect way for coding agents to follow requirements, to review PRs securely, to maintain a deep and readable and technical and formatted documentation. And you have either a new company selling that only them found the perfect solution or someone explaining that we cannot launch real humans to the moon, or create missile embedded code, or a improve MRI machines without the certainty, the quality of human reviewed code.&lt;/p&gt;</description></item><item><title>Why reflection can be a smell, even in Go.</title><link>https://l-homme.com/posts/why-reflection-can-be-a-smell-even-in-go/</link><pubDate>Tue, 11 Jan 2022 05:52:50 +0000</pubDate><guid>https://l-homme.com/posts/why-reflection-can-be-a-smell-even-in-go/</guid><description>&lt;p&gt;Reflection is often viewed as a &lt;a href="https://en.wikipedia.org/wiki/Code_smell"&gt;Smell&lt;/a&gt; in Java, C#, etc. Even if Golang have &lt;code&gt;interface{}&lt;/code&gt; in too many places, you are using a static typed language, how did you come not to know which type do you use?&lt;/p&gt;
&lt;p&gt;Some usages are perfectly legal, but it&amp;rsquo;s quite regularly a smell, especially when &lt;code&gt;if&lt;/code&gt; multiply or the &lt;code&gt;switch&lt;/code&gt; grows.&lt;/p&gt;
&lt;p&gt;Almost every time you see some &lt;code&gt;typeof&lt;/code&gt; (Java) or some &lt;code&gt;.(Type)&lt;/code&gt; (Go), you should search for an interface refactoring.&lt;/p&gt;</description></item><item><title>Subtilité sur les tableaux supports des slices en Go</title><link>https://l-homme.com/posts/subtilite-sur-les-tableaux-supports-des-slices-en-go/</link><pubDate>Sun, 29 Aug 2021 20:21:37 +0000</pubDate><guid>https://l-homme.com/posts/subtilite-sur-les-tableaux-supports-des-slices-en-go/</guid><description>&lt;p&gt;Si vous êtes un adepte des slices en Go voici une petite subtilité sur laquelle il faut faire attention.&lt;/p&gt;
&lt;h2 id="code-exemple"&gt;Code exemple&lt;/h2&gt;
&lt;p&gt;Analyser dans votre tête le code suivant. On crée un slice puis un slice de slice et on modifie et ajoute des valeurs.&lt;br&gt;
Concentrez-vous sur la dernière instruction. Qu’affiche &lt;code&gt;s1&lt;/code&gt; et &lt;code&gt;s2&lt;/code&gt; ?&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-go" data-lang="go"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;package&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kn"&gt;import&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s"&gt;&amp;#34;fmt&amp;#34;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kd"&gt;func&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;make&lt;/span&gt;&lt;span class="p"&gt;([]&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;:=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# s2[0] = 1&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# append(s2, 2)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# s2[1] = 9&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# append(s2, 3)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# s2[1] = 8&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# append(s2, 4)&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;append&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;# s2[1] = 7&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s1:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;fmt&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;s2:&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;s2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Voici la sortie&lt;/p&gt;</description></item><item><title>Les enums en Go, de zéro à héros</title><link>https://l-homme.com/posts/les-enums-en-go-de-zero-a-heros/</link><pubDate>Wed, 07 Jul 2021 04:53:08 +0000</pubDate><guid>https://l-homme.com/posts/les-enums-en-go-de-zero-a-heros/</guid><description>&lt;p&gt;Présent dans beaucoup de langages, les énumérations, ou enums en anglais, ne sont pourtant pas un type de base du langage Go. Les concepteurs avares en mot clés (grand bien leur fasse) ont pourtant laisser une piste et les bonnes pratiques ont émergés. Faisons ensemble le tour du propriétaire avec un exemple d’enum des jours de la semaine.&lt;/p&gt;
&lt;h2 id="implémentation-naïve"&gt;Implémentation naïve&lt;/h2&gt;
&lt;p&gt;Si vous n’avez aucune idée de comment implémenter les enums en Go, vous allez probablement arriver à quelque chose comme ça.&lt;/p&gt;</description></item><item><title>Résoudre les raccourcis claviers d’IntelliJ sous Ubuntu</title><link>https://l-homme.com/posts/resoudre-les-raccourcis-claviers-dintellij-sous-ubuntu/</link><pubDate>Wed, 16 Dec 2020 23:51:34 +0000</pubDate><guid>https://l-homme.com/posts/resoudre-les-raccourcis-claviers-dintellij-sous-ubuntu/</guid><description>&lt;p&gt;C’est résolu grâce au précédent article sous Visual Studio Code mais ça ne fonctionne pas non plus sous IntelliJ ? Vous avez pourtant besoin de passer du bépo, à l’azerty puis au qwerty !&lt;/p&gt;
&lt;p&gt;Aller dans les paramètres (settings) puis dans Keymap et sélectionner la coche &amp;ldquo;Use national layouts for shortcuts&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&lt;img loading="lazy" src="https://l-homme.com/media/2020/12/image.png"&gt;&lt;/p&gt;
&lt;p&gt;Un redémarrage&amp;hellip; Et voilà !&lt;/p&gt;
&lt;p&gt;Source : &lt;a href="https://youtrack.jetbrains.com/issue/JBR-1675"&gt;https://youtrack.jetbrains.com/issue/JBR-1675&lt;/a&gt; (oui, oui, vous avez bien lu les dates du report et des commentaires, ce bug a 13 ans&amp;hellip;)&lt;/p&gt;</description></item><item><title>Résoudre les raccourcis claviers de Visual Studio Code sous Ubuntu</title><link>https://l-homme.com/posts/resoudre-les-raccourcis-claviers-de-visual-studio-code-sous-ubuntu/</link><pubDate>Mon, 07 Dec 2020 12:17:33 +0000</pubDate><guid>https://l-homme.com/posts/resoudre-les-raccourcis-claviers-de-visual-studio-code-sous-ubuntu/</guid><description>&lt;p&gt;Si vous utilisez autre chose que de l’azerty, il est possible que Visual Studio Code ne prenne pas en compte les layouts supplémentaires. Par exemple, en bépo, le Ctrl+C devient un Ctrl+H&amp;hellip; Pratique&amp;hellip;&lt;/p&gt;
&lt;p&gt;Pour remédier à cela il va falloir changer la clé de configuration &lt;code&gt;keyboard.dispatch&lt;/code&gt; et la passer de &lt;code&gt;code&lt;/code&gt; à &lt;code&gt;keyCode&lt;/code&gt;.&lt;br&gt;
Par le menu graphique, File &amp;gt; Preferences &amp;gt; Settings puis Application &amp;gt; Keyboard &amp;gt; Dispatch&lt;/p&gt;
&lt;p&gt;Et voilà !&lt;/p&gt;</description></item><item><title>Vérifier et mettre à jour une application PWA en Angular</title><link>https://l-homme.com/posts/verifier-et-mettre-a-jour-une-application-pwa-en-angular/</link><pubDate>Thu, 23 Apr 2020 23:37:38 +0000</pubDate><guid>https://l-homme.com/posts/verifier-et-mettre-a-jour-une-application-pwa-en-angular/</guid><description>&lt;p&gt;Une application &lt;a href="https://fr.wikipedia.org/wiki/Progressive_web_app"&gt;PWA&lt;/a&gt; c&amp;rsquo;est génial mais on ne maitrise pas toujours bien quand elle se met à jour, si elle a détecté une mise à jour, etc. Aujourd&amp;rsquo;hui je vais vous montrer comment créer un service d&amp;rsquo;update qui vous donnera le squelette de base pour des gestion plus fine. Angular a tout ce qu&amp;rsquo;il faut pour ne pas s&amp;rsquo;embêter avec la gestion fine des workers.&lt;/p&gt;
&lt;h2 id="création-dun-service-de-mise-à-jour"&gt;Création d&amp;rsquo;un service de mise à jour&lt;/h2&gt;
&lt;p&gt;Nous allons créer un service avec la commande&lt;/p&gt;</description></item><item><title>Contrôler le trafic internet sous Linux par application</title><link>https://l-homme.com/posts/controler-le-trafic-internet-sous-linux-par-application/</link><pubDate>Mon, 09 Mar 2020 18:45:00 +0000</pubDate><guid>https://l-homme.com/posts/controler-le-trafic-internet-sous-linux-par-application/</guid><description>&lt;p&gt;Vous avez des pics de trafic inexpliqué ? Vous êtes en fin de mois de votre forfait data et vous voulez voir quelle application consomme quoi lors du partage de connexion ? &lt;a href="https://github.com/raboof/nethogs"&gt;nethogs&lt;/a&gt; va vous aider.&lt;/p&gt;
&lt;p&gt;Sur une distribution de type Debian, installer l&amp;rsquo;application avec :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install nethogs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pour éviter de lancer &lt;em&gt;nethogs&lt;/em&gt; avec &lt;em&gt;sudo&lt;/em&gt; et lui donner des droits trop élevés, nous allons utiliser les &lt;a href="https://wiki.archlinux.org/index.php/Capabilities"&gt;capacités&lt;/a&gt; de Linux :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo setcap &lt;span class="s2"&gt;&amp;#34;cap_net_admin,cap_net_raw+pe&amp;#34;&lt;/span&gt; /usr/sbin/nethogs
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Il n&amp;rsquo;y a plus qu&amp;rsquo;à lancer la commande :&lt;/p&gt;</description></item><item><title>DIY client web pour Skrooge</title><link>https://l-homme.com/posts/diy-client-web-pour-skrooge/</link><pubDate>Tue, 18 Feb 2020 19:00:00 +0000</pubDate><guid>https://l-homme.com/posts/diy-client-web-pour-skrooge/</guid><description>&lt;p&gt;Dans cet article nous allons préparer un formulaire &lt;a href="https://docs.google.com/forms/"&gt;Google Forms&lt;/a&gt; pour importer facilement des opérations notées par ordinateur ou sur un téléphone portable dans &lt;a href="https://skrooge.org/"&gt;Skrooge&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="quelle-comptabilité-personnelle-"&gt;Quelle comptabilité personnelle ?&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://skrooge.org/"&gt;Skrooge&lt;/a&gt; est une solution de comptabilité personnelle que j&amp;rsquo;ai utilisée pendant des années avant de passer à un modèle en ligne avec du &lt;a href="https://docs.google.com/spreadsheets/"&gt;Google Sheets&lt;/a&gt;. Le but était de simplifier et de passer de &amp;quot; Où j&amp;rsquo;ai dépensé ? &amp;quot; à &amp;quot; Où j&amp;rsquo;ai prévu de dépenser dans les 12 prochains mois ? &amp;ldquo;.&lt;/p&gt;</description></item><item><title>Comprendre la différence entre new et override en C#</title><link>https://l-homme.com/posts/comprendre-la-difference-entre-new-et-override-en-c/</link><pubDate>Mon, 17 Feb 2020 18:00:05 +0000</pubDate><guid>https://l-homme.com/posts/comprendre-la-difference-entre-new-et-override-en-c/</guid><description>&lt;p&gt;Je reviens parfois à la documentation de base &lt;a href="https://docs.microsoft.com/fr-fr/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords"&gt;&lt;em&gt;Savoir quand utiliser les mots clés override et new&lt;/em&gt;&lt;/a&gt; quand j&amp;rsquo;ai un doute car cette subtilité du langage peut être source d&amp;rsquo;erreur très compliquée à débusquer.&lt;/p&gt;
&lt;p&gt;Pour résumé avec deux phrases (prenez votre souffle) :&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;override&lt;/strong&gt;&lt;/em&gt; est obligatoirement utilisé sur une méthode &lt;em&gt;abstract&lt;/em&gt; et doit être utilisé (sinon warning du compilateur) sur une méthode &lt;em&gt;virtual&lt;/em&gt;, il indique au compilateur d&amp;rsquo;utiliser la dernière méthode définie (pas de différence sur les types utilisés).&lt;/p&gt;</description></item><item><title>Supprimer les informations d'une photo sous Linux</title><link>https://l-homme.com/posts/supprimer-les-informations-dune-photo-sous-linux/</link><pubDate>Sun, 16 Feb 2020 19:26:11 +0000</pubDate><guid>https://l-homme.com/posts/supprimer-les-informations-dune-photo-sous-linux/</guid><description>&lt;p&gt;Si vous souhaitez supprimer les informations internes d&amp;rsquo;une photo (&lt;a href="https://fr.wikipedia.org/wiki/Exchangeable_image_file_format"&gt;Exif&lt;/a&gt;, &lt;a href="https://fr.wikipedia.org/wiki/IPTC_Information_Interchange_Model"&gt;IPTC&lt;/a&gt;, &lt;a href="https://fr.wikipedia.org/wiki/Extensible_Metadata_Platform"&gt;XMP&lt;/a&gt;, etc.) vous pouvez utiliser &lt;a href="https://exiftool.org/"&gt;ExifTool&lt;/a&gt; de Phil Harvey.&lt;/p&gt;
&lt;p&gt;Sous une Debian compatible (Ubuntu, Linx Mint, etc.), installez le paquet ExifTool avec :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install libimage-exiftool-perl
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Dans le répertoire contenant vos photos, lancez ExifTool avec l&amp;rsquo;extension de vos images. Exemple avec des jpeg :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;exiftool -all&lt;span class="o"&gt;=&lt;/span&gt; *.jpeg
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Pas de panique, tous les fichiers originaux traités sont renommés avec le suffixe &lt;em&gt;_original&lt;/em&gt; donc pas de risque de faire une fausse manip. Bon ménage !&lt;/p&gt;</description></item><item><title>Installer virtualenwrapper pour Python 3 dans un environnement Python 2</title><link>https://l-homme.com/posts/installer-virtualenwrapper-pour-python-3-dans-un-environnement-python-2/</link><pubDate>Fri, 07 Feb 2020 09:52:45 +0000</pubDate><guid>https://l-homme.com/posts/installer-virtualenwrapper-pour-python-3-dans-un-environnement-python-2/</guid><description>&lt;p&gt;Par exemple, sur une &lt;a href="https://www.linuxmint.com/"&gt;Linux Mint&lt;/a&gt; 19.3 Tricia basée sur &lt;a href="https://ubuntu.com/"&gt;Ubuntu&lt;/a&gt; 18.04.3 l&amp;rsquo;environnement de base est lié à &lt;a href="https://www.python.org/"&gt;Python&lt;/a&gt; 2. Cela pose problème quand on veut installer et utiliser &lt;a href="https://virtualenv.pypa.io/en/latest/"&gt;virtualenv&lt;/a&gt; avec Python 3.&lt;/p&gt;
&lt;p&gt;Pour commencer, installez les setuptools spécifiques à Python 3 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo apt install python3-setuptools
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Vous pourrez alors utiliser pip pour installer virtualenvwrapper pour Python 3 :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;sudo pip3 install virtualenvwrapper
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;On teste l&amp;rsquo;import pour vérifier qu&amp;rsquo;il n&amp;rsquo;y a pas d&amp;rsquo;erreur :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;$ python3
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Python 3.6.9 &lt;span class="o"&gt;(&lt;/span&gt;default, Nov &lt;span class="m"&gt;7&lt;/span&gt; 2019, 10:44:02&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;[&lt;/span&gt;GCC 8.3.0&lt;span class="o"&gt;]&lt;/span&gt; on linux
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Type &lt;span class="s2"&gt;&amp;#34;help&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;copyright&amp;#34;&lt;/span&gt;, &lt;span class="s2"&gt;&amp;#34;credits&amp;#34;&lt;/span&gt; or &lt;span class="s2"&gt;&amp;#34;license&amp;#34;&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; more information.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt; import virtualenvwrapper
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&amp;gt;&amp;gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;La fin de votre .bashrc doit donc ressembler à ça :&lt;/p&gt;</description></item><item><title>Récupérer un compte root sur une base Debian (Ubuntu)</title><link>https://l-homme.com/posts/recuperer-un-compte-root-sur-une-base-debian-ubuntu/</link><pubDate>Tue, 04 Feb 2020 23:43:27 +0000</pubDate><guid>https://l-homme.com/posts/recuperer-un-compte-root-sur-une-base-debian-ubuntu/</guid><description>&lt;p&gt;Il peut arriver de perdre l&amp;rsquo;accès à un compte administrateur sur une vieille machine peu utilisée. Ou chez une connaissance. Ou je ne sais pas moi, imaginez&amp;hellip; Voilà la procédure pour changer le mot de passe.&lt;/p&gt;
&lt;p&gt;Si vous avez une &lt;a href="https://ubuntu.com/"&gt;Ubuntu&lt;/a&gt; récente, le menu de démarrage est caché. Il faut maintenir la touche Shift juste après le démarrage pour que &lt;a href="https://fr.wikipedia.org/wiki/GRand_Unified_Bootloader"&gt;Grub&lt;/a&gt; l&amp;rsquo;affiche.&lt;/p&gt;
&lt;p&gt;Sélectionnez dans le menu de démarrage des images une image avec à la fin du titre &lt;em&gt;(recovery mode)&lt;/em&gt; pour mode de maintenance ou mode de restauration.&lt;/p&gt;</description></item><item><title>Inline des variables out à partir du C# 7</title><link>https://l-homme.com/posts/inline-des-variables-out-a-partir-du-c-7/</link><pubDate>Tue, 04 Feb 2020 08:59:37 +0000</pubDate><guid>https://l-homme.com/posts/inline-des-variables-out-a-partir-du-c-7/</guid><description>&lt;p&gt;Si vous recevez des avertissements de variable out qui peuvent être inline, vous êtes en C# 7 ou plus.&lt;/p&gt;
&lt;p&gt;Depuis cette version, il n&amp;rsquo;est plus nécessaire de déclarer les variables out avant les appels de méthodes. Vous pouvez les déclarer inline, c&amp;rsquo;est à dire à la volée proche de la déclaration out.&lt;/p&gt;
&lt;p&gt;Elle peut être typée ou implicite avec var.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// Avant le C# 7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;TypeVariable&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MethodeAvecOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// A partir du C# 7&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MethodeAvecOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="n"&gt;TypeVariable&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MethodeAvecOut&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;out&lt;/span&gt; &lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;resultat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;À voir avec vos équipes si vous aimez lire vos types ou si vous laissez votre IDE préféré vous l&amp;rsquo;afficher à la volée.&lt;/p&gt;</description></item><item><title>Récupérer les annotations d'une Kobo Aura HD avec Calibre</title><link>https://l-homme.com/posts/recuperer-les-annotations-dune-kobo-aura-hd-avec-calibre/</link><pubDate>Sun, 02 Feb 2020 00:34:32 +0000</pubDate><guid>https://l-homme.com/posts/recuperer-les-annotations-dune-kobo-aura-hd-avec-calibre/</guid><description>&lt;p&gt;Le site de &lt;a href="https://www.kobo.com/"&gt;Kobo&lt;/a&gt; ou la liseuse Aura HD ne permettent pas de sauvegarder ou simplement d&amp;rsquo;accéder aux annotations crées pendant la lecture.&lt;/p&gt;
&lt;p&gt;Le gestionnaire de bibliothèques numérique &lt;a href="https://calibre-ebook.com/"&gt;Calibre&lt;/a&gt; permet, entres autres, d&amp;rsquo;y accéder avec le plugin Kobo Utilities.&lt;/p&gt;
&lt;p&gt;Lorsque vous êtes en vue « Périphérique » vous allez voir que l&amp;rsquo;accès aux annotations est grisé.&lt;/p&gt;
&lt;p&gt;Pour utiliser les annotations, il faut d&amp;rsquo;abord sélectionner « Récupérer les annotations », dans la vue « Bibliothèque », après un clic droit sur « Envoyer vers le périphérique ».&lt;/p&gt;</description></item><item><title>Comment lancer un débogueur par programmation en C# ?</title><link>https://l-homme.com/posts/comment-lancer-un-debogueur-par-programmation-en-c/</link><pubDate>Thu, 30 Jan 2020 20:37:06 +0000</pubDate><guid>https://l-homme.com/posts/comment-lancer-un-debogueur-par-programmation-en-c/</guid><description>&lt;p&gt;Si vous faites de la programmation avec des threads, il vous est déjà arrivé de vouloir attacher un débogueur à un process déjà lancé. C&amp;rsquo;est parfois trop long à faire à la main, le traitement est déjà fini, etc.&lt;/p&gt;
&lt;p&gt;Heureusement la &lt;a href="https://docs.microsoft.com/en-us/dotnet/standard/clr"&gt;CLR&lt;/a&gt; sait interpréter certaines fonctions bien pratique !&lt;/p&gt;
&lt;p&gt;Vous pouvez appeler la méthode magique &lt;a href="https://docs.microsoft.com/fr-fr/dotnet/api/system.diagnostics.debugger.launch"&gt;Launch()&lt;/a&gt; :&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;System&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Diagnostics&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Debugger&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Launch&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Celle-ci lancera un débogueur pour vous.&lt;/p&gt;
&lt;p&gt;Si vous avez plusieurs versions de Visual Studio installées, on vous demandera même la version que vous voulez utiliser.&lt;/p&gt;</description></item><item><title>Bonjour tout le monde !</title><link>https://l-homme.com/posts/bonjour-tout-le-monde/</link><pubDate>Wed, 08 Jan 2020 14:18:11 +0000</pubDate><guid>https://l-homme.com/posts/bonjour-tout-le-monde/</guid><description>&lt;p&gt;Bienvenue sur ce blog ! On efface tout et on recommence pour bien démarrer 2020.&lt;/p&gt;</description></item></channel></rss>