<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/" xmlns:webfeeds="http://webfeeds.org/rss/1.0">
    <channel>
        <title><![CDATA[Johackim]]></title>
        <description><![CDATA[Créateur indépendant de projets open-source]]></description>
        <link>https://johackim.com</link>
        <generator>Next.js</generator>
        <lastBuildDate>Tue, 31 Mar 2026 08:24:59 GMT</lastBuildDate>
        <webfeeds:icon>https://johackim.com/profile.jpg</webfeeds:icon>
        <atom:link href="https://johackim.com/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[Greywall]]></title>
            <link>https://johackim.com/greywall?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/greywall</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/greywall.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/greywall.jpg"/>
            <content:encoded><![CDATA[<p>Pour éviter que vos fichiers sensibles soient accessibles par les agents IA, il existe <a href="https://greywall.io/">Greywall</a>.</p>
<p>Greywall est une sorte de pare-feu pour agents IA qui vous permet de contrôler et surveiller les accès au système de fichiers et au réseau lorsque vous utilisez des outils comme <a href="https://claude.com/fr-fr/product/claude-code">Claude Code</a> ou <a href="https://github.com/google-gemini/gemini-cli">Gemini CLI</a>.</p>
<p>Il agit comme un proxy entre l&#x27;agent et votre machine, vous offrant une visibilité complète sur ses actions.</p>
<p>Il est actuellement disponible uniquement sur Linux et MacOS.</p>
<h2>Installation</h2>
<p><a href="https://github.com/GreyhavenHQ/greywall/releases/latest">Téléchargez Greywall</a> et exécutez les commandes suivantes :</p>
<pre><code class="language-bash">tar xvf greywall_0.2.8_Linux_x86_64.tar.gz
sudo mv greywall /usr/local/bin/
</code></pre>
<p>N&#x27;oubliez pas d&#x27;installer <code>socat</code> :</p>
<pre><code class="language-bash">sudo pacman -S socat
# Ou
sudo apt install -y socat
</code></pre>
<h2>Utilisation</h2>
<pre><code class="language-bash">greywall setup
systemctl --user start greyproxy.service
</code></pre>
<p>Rendez-vous sur <a href="http://localhost:43080/dashboard">http://localhost:43080/dashboard</a></p>
<pre><code class="language-bash">greywall -- claude
# Ou
greywall -- gemini
</code></pre>
<p>Vous pouvez éditer la configuration dans <code>~/.config/greywall/greywall.json</code> :</p>
<pre><code class="language-json">{
  &quot;filesystem&quot;: {
    &quot;denyRead&quot;: [
      &quot;PRIVATE.md&quot;
    ]
  }
}
</code></pre>
<p>Vous pouvez également créer un fichier <code>.greywall.json</code> dans le dossier en cours et le charger avec la commande suivante :</p>
<pre><code class="language-bash">greywall --settings .greywall.json -- claude
</code></pre>
<h2>Debug</h2>
<p>Pour débugger, utilisez le paramètre <code>--debug</code> :</p>
<pre><code class="language-bash">greywall --debug
</code></pre>
<h2>Stop</h2>
<pre><code class="language-bash">systemctl --user stop greyproxy.service
</code></pre>
<p>Je l&#x27;utilise personnellement pour utiliser des agents IA sur <a href="/obsidian" title="Obsidian">Obsidian</a> sans leur donner accès à mes notes privées.</p>

<p>Et pour encore plus de <a href="/vie-privee" title="Vie privée">Vie privée</a>, vous pouvez utiliser des modèles IA en local (ex: Qwen, GLM, Kimi) directement sur votre ordinateur avec <a href="/ollama" title="Ollama">Ollama</a>.</p>

<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/GreyhavenHQ/greywall/">https://github.com/GreyhavenHQ/greywall/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Est-ce que notre téléphone nous écoute ?]]></title>
            <link>https://johackim.com/est-ce-que-notre-telephone-nous-ecoute?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/est-ce-que-notre-telephone-nous-ecoute</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 03 Dec 2025 20:34:44 GMT</pubDate>
            <media:content url="https://johackim.com/covers/est-ce-que-notre-telephone-nous-ecoute.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/est-ce-que-notre-telephone-nous-ecoute.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/AHEDdxZ.png"/><p>Tous nos téléphones sont équipés d&#x27;un microphone 🎤.</p>
<ul>
<li>🏛️ Les <strong>gouvernements</strong> pourraient s&#x27;en servir pour surveiller et stopper les opposants politiques ou les terroristes.</li>
<li>💼 Les <strong>entreprises</strong> pourraient s&#x27;en servir pour nous proposer des publicités ciblées et augmenter leurs profits.</li>
<li>🥷 Les <strong>hackers</strong> pourraient s&#x27;en servir pour nous espionner et voler nos informations personnelles.</li>
</ul>
<p>À l&#x27;échelle d&#x27;un pays comme la France (+67 millions d&#x27;habitants), cela représenterait une mine d&#x27;or d&#x27;informations à exploiter 💰.</p>
<p>Sachant cela, la question est légitime, <strong>est-ce que notre téléphone nous écoute ?</strong></p>
<h2>Est-ce techniquement possible ?</h2>
<p>Techniquement, espionner les conversations de millions de personnes 24h/24 reviendrait à <strong>envoyer, stocker, transcrire, analyser et filtrer des quantités astronomiques de données</strong>.</p>
<p>À titre d&#x27;exemple, un enregistrement audio de 1 minute représente environ entre 10 et 100 ko de données.</p>
<p>Pour &quot;seulement&quot; 1 million de personnes, cela représenterait 100 Go de données par minute, soit 144 To par jour.</p>
<p>Il faudrait investir dans d&#x27;énormes espaces de stockage et des serveurs avec une très grande puissance de calcul.</p>
<p>Le coût financier serait bien supérieur à la rentabilité des informations collectées.</p>
<p>Et même si la transcription était réalisée localement sur le téléphone, cela impacterait considérablement la batterie et les performances du téléphone.</p>
<p>Ce qui serait en contradiction avec l&#x27;objectif des constructeurs de téléphones qui veulent fabriquer des téléphones plus performants et avec une meilleure autonomie.</p>
<p>Et un tel trafic réseau ne passerait pas inaperçu du point de vue des experts en cybersécurité.</p>
<p>La probabilité pour que personne ne s&#x27;en rende compte est extrêmement faible.</p>
<p>Les <strong>assistants vocaux</strong> comme Siri (Apple), Alexa (Amazon) ou Assistant (Google) font ce que l&#x27;on appelle de <strong>l&#x27;écoute passive</strong>.</p>
<p>Il s&#x27;agit d&#x27;un processus qui tourne en boucle sur une mémoire tampon de quelques secondes et qui a pour seul but de démarrer un enregistrement uniquement lorsqu&#x27;il entend <strong>le mot réveil</strong> ⏰ « Dis Siri », « OK Google » ou « Alexa ».</p>
<p>Tant que le mot de réveil n&#x27;est pas déclenché, rien n&#x27;est enregistré.</p>
<h2>Comment vérifier si votre téléphone vous écoute ?</h2>
<p>Vous pouvez vous-même vérifier si vos conversations sont envoyées à des services tiers en analysant le trafic réseau de votre téléphone.</p>
<p>Des outils comme <a href="https://wireshark.org">Wireshark</a> et <a href="https://github.com/emanuele-f/PCAPdroid">PCAPdroid</a> (Android) permettent d&#x27;analyser le trafic réseau de votre téléphone.</p>
<p>Vous pouvez voir qu&#x27;après une visite sur un site comme Google, Facebook, Twitter ou Instagram des requêtes sont envoyées sur les noms de domaines google.com, facebook.com, twitter.com ou instagram.com.</p>
<iframe src="https://peertube.ethibox.fr/videos/embed/25806d5b-589e-491c-860b-38b8e3eaad83?loop=1&amp;autoplay=1&amp;title=0&amp;warningTitle=0&amp;controlBar=0&amp;peertubeLink=0&amp;p2p=0" style="width:100%;aspect-ratio:16/9" frameborder="0" allowfullscreen="" sandbox="allow-same-origin allow-scripts allow-popups allow-forms"></iframe>
<p>En revanche, si vous parlez de &quot;nourriture pour chat&quot; devant votre téléphone sans rien toucher, <strong>rien n&#x27;est envoyé</strong>.</p>
<p>Dans tous les cas, <strong>une lumière orange 🟠 (sur iPhone) et verte 🟢 (sur Android) apparaît</strong> à chaque fois que votre microphone est utilisé.</p>
<p>Privilégiez les applications où le code source est libre (ex : <a href="https://firefox.com">Firefox</a>, <a href="https://signal.org">Signal</a>) plutôt que des applications propriétaires (ex : <a href="https://google.com/chrome/">Chrome</a>, <a href="https://whatsapp.com">WhatsApp</a>).</p>
<ul>
<li>Les applications propriétaires sont des boites noires où le code source est accessible uniquement par le créateur</li>
<li>Les applications libres sont des boites transparentes où le code source est accessible à tout le monde</li>
</ul>
<p>Vous pouvez vous-même inspecter les lignes de code des applications si vous avez des compétences en programmation.</p>
<p>Si une ligne de code est suspicieuse, elle peut être détectée et signalée par votre ami développeur ou par la communauté open-source.</p>
<h2>Pourquoi ai-je l&#x27;impression que mon téléphone m&#x27;écoute ?</h2>
<p>La triste vérité, c&#x27;est que les entreprises n&#x27;ont pas besoin d&#x27;écouter vos conversations pour vous proposer des publicités ciblées.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://spreadprivacy.com/how-does-google-track-me-even-when-im-not-using-it/</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>86.5% des 75 000 sites les plus populaires au monde utilisent Google Analytics et 34.2% utilisent Facebook Pixel.</p>
                    </div>
                </blockquote>
<p>Résultat, lorsque vous créez un compte Google ou Facebook et que vous vous baladez sur internet, ils récupèrent tout votre historique de navigation.</p>
<p>Si vous partagez des informations comme votre âge, votre adresse IP, votre géolocalisation, vos photos et vos centres d&#x27;intérêt, ils peuvent vous proposer des publicités ultra-ciblées.</p>
<p>Il se peut aussi que vous soyez victime d&#x27;un <a href="/biais-cognitifs" title="biais cognitif">biais cognitif</a> appelé <a href="/lillusion-de-frequence" title="L&#x27;illusion de fréquence">L&#x27;illusion de fréquence</a>.</p>

<p><img src="https://i.imgur.com/AHEDdxZ.png" alt="L&#x27;illusion de fréquence (https://sketchplanations.com/the-frequency-illusion)"/></p>
<p>Lorsque vous remarquez quelque chose pour la première fois, vous avez tendance à le voir partout.</p>
<p>Par exemple, si vous parlez d&#x27;une nouvelle voiture avec un ami, vous allez commencer à remarquer cette voiture partout.</p>
<h2>Comment protéger votre téléphone ?</h2>
<p>Si vous souhaitez protéger votre vie privée et améliorer la sécurité de votre téléphone, voici une liste de tâches à faire :</p>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Désinstallez/désactivez votre assistant vocal</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Supprimer votre historique de navigation internet une fois par mois</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Désactivez les permissions des applications qui utilisent le microphone depuis les paramètres de votre téléphone</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Installer une application de messagerie sécurisée (ex: <a href="https://signal.org">Signal</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Installer un navigateur internet open-source (ex: <a href="https://firefox.com">Firefox</a> ou <a href="https://chromium.org">Chromium</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Supprimer vos données personnelles d&#x27;internet via un service de suppression (ex: <a href="https://incogni.com">Incogni</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Installer un bloqueur de publicités sur votre navigateur internet (ex : <a href="https://ublockorigin.com">uBlock Origin</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/>
Installer un <a href="/vpn" title="VPN" class="not-found">VPN</a> (ex : <a href="https://protonvpn.com">ProtonVPN</a> ou <a href="https://mullvad.net">Mullvad</a>)

</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Utiliser une boite e-mail sécurisée (ex : <a href="https://proton.me/fr/mail">ProtonMail</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Utiliser un serveur DNS sécurisé (ex : <a href="https://quad9.net">quad9</a> ou <a href="https://nextdns.io">NextDNS</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Installez un système d&#x27;exploitation axé sur la vie privée (<a href="https://grapheneos.org/">GrapheneOS</a>, <a href="https://e.foundation">/e/OS</a> ou <a href="https://lineageos.org">LineageOS</a>)</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Achetez un téléphone axé sur la vie privée (<a href="https://fairphone.com">Fairphone</a>, <a href="https://puri.sm/products/librem-5/">Librem</a> ou <a href="https://store.google.com/fr/product/pixel_10">Pixel</a> (avec GrapheneOS))</li>
</ul>
<p>Pour résumer, <strong>non, votre téléphone n&#x27;enregistre pas vos conversations</strong>.</p>
<p>Les entreprises n&#x27;ont pas besoin de le faire pour vous proposer des publicités ciblées.</p>
<p>Et si vous souhaitez protéger votre vie privée, suivez les conseils ci-dessus 😉 !</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/4P-bsrvhG1w">Underscore_ - Finalement, nos téléphones pourraient bel et bien nous écouter</a></li>
<li><a href="https://youtu.be/cwAmqc3_H8Y">Léo Duff - Non, votre iPhone ne vous écoute pas (c&#x27;est pire)</a></li>
<li><a href="https://youtu.be/-nH-iBWWbeg">Defend Intelligence - Nos téléphones nous écoutent ?</a></li>
<li><a href="https://youtu.be/0lz2KRRGQZI">Aywen - J&#x27;ai vérifié si mon iPhone m&#x27;écoute</a></li>
<li><a href="https://youtu.be/B7aLYH8zL7w">Clique TV - Est-ce que nos téléphones nous écoutent ?</a></li>
<li><a href="https://youtu.be/ulcFCgSI4cs">Le Grand JD - Google nous écoute ?</a></li>
<li><a href="https://korben.info/telephone-ecoute-publicite-mythe-surveillance.html">https://korben.info/telephone-ecoute-publicite-mythe-surveillance.html</a></li>
<li><a href="https://korben.info/smartphone-espionnage-publicite-ciblee-mythe-realite.html">https://korben.info/smartphone-espionnage-publicite-ciblee-mythe-realite.html</a></li>
<li><a href="https://numerama.com/tech/1801696-non-nos-smartphones-ne-nous-ecoutent-pas.html">https://numerama.com/tech/1801696-non-nos-smartphones-ne-nous-ecoutent-pas.html</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment jailbreaker son Kindle avec la faille Adbreak ?]]></title>
            <link>https://johackim.com/jailbreak-kindle?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/jailbreak-kindle</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 30 Sep 2025 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/jailbreak-kindle.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/jailbreak-kindle.jpg"/>
            <content:encoded><![CDATA[<p>Un nouveau jailbreak du Kindle nommé AdBreak vient d&#x27;être publié le 24 septembre 2025 sur <a href="https://kindlemodding.org/jailbreaking/AdBreak/">kindlemodding.org</a>.</p>
<p>Pour réaliser ce jailbreak, il faut que la version du firmware de votre Kindle soit <code>&gt;= 5.18.1</code> et <code>&lt;= 5.18.5</code>.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Évitez de mettre à jour votre Kindle en version 5.18.6, la faille Adbreak a été patché.</p>
                    </div>
                </blockquote>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Si la version de votre firmware est inférieure à 5.18.1, utilisez le jailbreak WinterBreak.</p>
                    </div>
                </blockquote>
<p>Voici les étapes pour jailbreaker votre Kindle.</p>
<h2>1. Mettre votre Kindle en mode avion pour éviter les mises à jour</h2>
<p>Pour activer le mode avion, allez dans Paramètres -&gt; Wi-fi -&gt; Mode avion.</p>
<h2>2. Supprimer les fichiers update_kindle.bin sur votre Kindle</h2>
<p>Pour éviter que votre Kindle se mette à jour, vérifiez s’il existe des fichiers du type <code>update_kindle.bin</code>.</p>
<p>Connectez votre Kindle à votre ordinateur via un câble USB.</p>
<p>Et supprimer tous les fichiers du type <code>update_kindle.bin</code> (ex: <code>update_kindle_10th_5.18.1.bin</code>) qui existent à la racine de votre Kindle.</p>
<h2>3. Remplissez votre Kindle pour laisser seulement 50 Mo de disponible</h2>
<p>Pour éviter que Amazon mette à jour votre liseuse, laissez 50 Mo de disponible.</p>
<p>Si vous êtes sur Windows, copiez et exécutez le script <a href="https://github.com/bastianmarin/Kindle-Filler-Disk/blob/main/Filler.ps1">Filler.ps1</a> à la racine de votre Kindle :</p>
<pre><code class="language-powershell">powershell -ExecutionPolicy Bypass -File .\Filler.ps1
</code></pre>
<p>Si vous êtes sur Linux, exécutez le script <a href="https://github.com/bastianmarin/Kindle-Filler-Disk/blob/main/Filler.sh">Filler.sh</a> à la racine de votre Kindle :</p>
<pre><code class="language-bash">bash Filler.sh
</code></pre>
<p>Pour vérifier l&#x27;espace disponible de votre Kindle, allez dans Paramètres &gt; Options de l&#x27;appareil &gt; Informations sur l&#x27;appareil &gt; Espace disponible.</p>
<h2>4. Enregistrez votre Kindle sur un compte Amazon</h2>
<p>Votre Kindle a besoin d&#x27;être enregistré/relié à un compte Amazon pour pouvoir effectuer l&#x27;étape d&#x27;après.</p>
<p>Pour enregistrer votre Kindle, allez dans Paramètres &gt; Votre compte &gt; Enregistrer l&#x27;appareil.</p>
<p>Une fois enregistré, votre Kindle devrait apparaitre <a href="https://amazon.fr/hz/mycd/digital-console/alldevices">sur votre compte Amazon</a>.</p>
<h2>5. Activez les publicités de votre Kindle</h2>
<p>Le jailbreak exploite une faille en provenance du système de publicité.</p>
<p>Du coup, il faut activer les offres spéciales depuis <a href="https://amazon.fr/hz/mycd/digital-console/alldevices">votre compte Amazon</a>.</p>
<p>Réactivez le WIFI de votre Kindle en désactivant le mode avion.</p>
<p>Laissez votre Kindle pendant un certain temps, connecté à Internet, afin qu&#x27;il puisse télécharger des publicités.</p>
<p>Personnellement, je me balade dans la boutique Amazon sur la page d&#x27;accueil pour stimuler le Kindle.</p>
<p>Des publicités devraient apparaitre sur l&#x27;écran de veille de votre Kindle lorsque vous appuyez sur le bouton de veille.</p>
<p>Réactivez le mode avion de votre Kindle.</p>
<p>Cliquez sur le menu en haut à droite et sélectionnez &quot;Afficher toutes les publicités&quot;.</p>
<h2>6. Jailbreak du Kindle</h2>
<p>Branchez votre Kindle et copiez le dossier <code>system/.assets</code> sur votre ordinateur.</p>
<p><a href="https://mobileread.com/forums/attachment.php?attachmentid=218255&amp;d=1758739462">Téléchargez le fichier adbreak.zip</a> puis l&#x27;extraire dans le dossier <code>.assets</code> qui se trouve sur votre ordinateur.</p>
<p>Si vous êtes sur Windows, double-cliquez sur le fichier <code>replace.bat</code>.</p>
<p>Si vous êtes sur Linux, exécutez la commande suivante :</p>
<pre><code class="language-bash">find . -name &#x27;details.html&#x27; -exec cp adbreak.html {} \;
</code></pre>
<p>Supprimez le dossier <code>.assets</code> de votre Kindle et remplacez-le par le nouveau.</p>
<p>Débranchez votre Kindle, cliquez sur une annonce et une fois que vous avez cliqué sur &quot;Bang!&quot;, le script jailbreak devrait s&#x27;exécuter.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>You can safely ignore any &quot;application error&quot; popups, they are irrelevant.</p>
                    </div>
                </blockquote>
<p>Cela devrait afficher le message suivant :</p>
<pre><code class="language-txt">**** AdBreak Jailbreak ****
********************** 1.0.0 *
install_touch_update_key - Copying the jailbreak updater key
Developer keys installed successfully (Standard Method)! (pubdevkey01.pem)
Enabled developer flag
Enabled mntus exec flag
                                      
**************************************
*** Finished installing jailbreak! ***
***                                ***
***   Please Install HOTFIX now    ***
**************************************
</code></pre>
<h2>7. Persister le jailbreak avec le HotFix</h2>
<p>Pour éviter que le Jailbreak disparaisse, installez le hotfix.</p>
<p><a href="https://github.com/KindleModding/Hotfix/releases/latest/download/Update_hotfix_universal.bin">Téléchargez le HotFix</a>.</p>
<p>Copiez le fichier <code>Update_hotfix_universal.bin</code> à la racine de votre Kindle.</p>
<p>Gardez le mode avion activé.</p>
<p>Débrancher votre Kindle, puis ouvrir les paramètres, cliquer sur les trois points et sélectionner &quot;Mettre à jour votre Kindle&quot;.</p>
<p>Une fois le Kindle redémarré, sélectionnez le livre <code>Run Hotfix</code> dans votre bibliothèque.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Vous devrez exécuter ce livre Run Hotfix après chaque mise à jour de votre Kindle.</p>
                    </div>
                </blockquote>
<h2>8. Désactiver les mises à jour over-the-air (facultatif)</h2>
<p>Voici la procédure pour éviter que des mises à jour soit automatiquement installés via le WIFI.</p>
<p>Télécharger l&#x27;extension <a href="https://www.mobileread.com/forums/attachment.php?attachmentid=184438&amp;d=1609580931">renameotabin.zip</a>.</p>
<p>Extraire le fichier puis copier le dossier <code>renameotabin</code> dans le dossier <code>extensions</code> de votre Kindle.</p>
<p>Débranchez votre Kindle puis cliquez sur <code>Rename OTA Binaries</code> puis <code>Rename</code> depuis le menu du livre <code>KUAL</code>.</p>
<p>Votre Kindle redémarrera automatiquement.</p>
<p>Les mises à jour automatiques sont maintenant désactivées et je peux utiliser le wifi de mon Kindle.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Pour réinitialiser, rétrograder ou mettre à jour votre Kindle, ouvrez KUAL et sélectionnez Rename OTA Binaries puis Restore.</p>
                    </div>
                </blockquote>
<h2>9. Installation de KOReader (facultatif)</h2>
<p>Pour installer KOReader, il faut d&#x27;abord installer KUAL (Kindle Unified Application Launcher) et MRPI (MobileRead Package Installer).</p>
<p>Pour installer MRPI, téléchargez les fichiers <a href="https://drive.proton.me/urls/GR7EETY0C8#4OT7bCXXmfWE">kual-mrinstaller-khf.tar.xz</a> et <a href="https://drive.proton.me/urls/03F36YX6TM#aN1lgoaFDy0J">KUAL-c6ac782-20250419.tar.xz</a>.</p>
<ul>
<li>Extraire les fichiers <code>kual-mrinstaller-khf.tar.xz</code> et <code>KUAL-c6ac782-20250419.tar.xz</code></li>
<li>Copiez les dossiers <code>extensions</code> and <code>mrpackages</code> à la racine de votre Kindle.</li>
<li>Copiez le fichier <code>Update_KUALBooklet_c6ac782_install.bin</code> dans le dossier <code>mrpackages</code>.</li>
</ul>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Faites de la place en supprimant un des fichiers du dossier fill_disk si besoin.</p>
                    </div>
                </blockquote>
<p>Débranchez votre Kindle et tapez <code>;log mrpi</code> dans la barre de recherche de votre Kindle et appuyez sur entrée.</p>
<p>Un livre <code>KUAL</code> devrait apparaitre dans votre bibliothèque.</p>
<p>Télécharger <a href="https://github.com/koreader/koreader/releases/download/v2025.08/koreader-kindlehf-v2025.08.zip">koreader-kindlehf-v2025.08.zip</a>.</p>
<p>Copiez les dossiers <code>extensions</code> et <code>koreader</code> à la racine de votre Kindle.</p>
<p>Débranchez votre Kindle et cliquez sur le livre <code>KUAL</code> puis cliquez sur KOReader</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/kindle" title="Kindle" class="not-found">Kindle</a>

</li>
<li><a href="https://kindlemodding.org/jailbreaking/AdBreak/">https://kindlemodding.org/jailbreaking/AdBreak/</a></li>
<li><a href="https://mobileread.com/forums/showthread.php?t=370048">https://mobileread.com/forums/showthread.php?t=370048</a></li>
<li><a href="https://mobileread.com/forums/showthread.php?t=225030">https://mobileread.com/forums/showthread.php?t=225030</a></li>
<li><a href="https://discord.com/channels/1083603487025274911/1166993303221321758/1421875686561546271">https://discord.com/channels/1083603487025274911/1166993303221321758/1421875686561546271</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Téléchargez vos livres Kindle]]></title>
            <link>https://johackim.com/exporter-ses-livres-kindle?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/exporter-ses-livres-kindle</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 20 Feb 2025 13:16:29 GMT</pubDate>
            <media:content url="https://johackim.com/covers/exporter-ses-livres-kindle.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/exporter-ses-livres-kindle.jpg"/>
            <content:encoded><![CDATA[<p>À compter du 26 février 2025, l’option « Télécharger et transférer via USB » sur Amazon ne sera plus disponible pour les livres Kindle.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Ne fonctionne plus depuis le 27 février 2025, cela donne une erreur &quot;No valid download URL found&quot;.</p>
                    </div>
                </blockquote>
<p>Si vous avez de nombreux livres et que vous souhaitez les télécharger sans devoir le faire manuellement, il existe l&#x27;outil <a href="https://github.com/treetrum/amazon-kindle-bulk-downloader">amazon-kindle-bulk-downloader</a>.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer, il faut avoir <a href="https://bun.sh/">bun</a> :</p>
<pre><code class="language-bash">curl -fsSL https://bun.sh/install | bash
</code></pre>
<p>Puis cloner <a href="https://github.com/treetrum/amazon-kindle-bulk-downloader">le dépôt</a> :</p>
<pre><code class="language-bash">git clone https://github.com/treetrum/amazon-kindle-bulk-downloader
</code></pre>
<p>Installer les dépendances :</p>
<pre><code class="language-bash">bun install
</code></pre>
<h2>Utilisation</h2>
<p>Créer un fichier <code>.env</code> à la racine du projet avec les informations suivantes :</p>
<pre><code class="language-bash">AMAZON_USER=&quot;votre-email&quot;
PASSWORD=&quot;votre-mot-de-passe&quot;
</code></pre>
<p>Puis lancer la commande suivante :</p>
<pre><code class="language-bash">bun run start --baseUrl &quot;https://www.amazon.fr&quot;
</code></pre>
<p>Les livres seront téléchargés automatiquement dans le dossier <code>downloads</code> 🙂</p>
<p>Et si vous souhaitez supprimer les DRMs de vos livres, j&#x27;ai rédigé <a href="/comment-supprimer-les-drms-dun-ebook" title="un tutoriel">un tutoriel</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Méditation]]></title>
            <description><![CDATA[La méditation est un exercice mental qui consiste à rester concentré sur sa respiration pour se recentrer sur le moment présent.]]></description>
            <link>https://johackim.com/meditation?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/meditation</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 Jun 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/meditation.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/meditation.jpg"/>
            <content:encoded><![CDATA[<p>La méditation est un exercice mental qui consiste à rester concentré sur une seule chose comme sa respiration pour se recentrer sur le moment présent.</p>
<p>Le but n&#x27;est pas de vider son esprit, mais d&#x27;observer ses pensées (positives ou négatives) sans jugement et de les laisser passer.</p>
<p>Ce n&#x27;est pas une pratique religieuse.</p>
<h2>Processus</h2>
<p>Le processus d&#x27;une méditation est simple :</p>
<ol>
<li>Asseyez-vous avec le dos droit et fermez les yeux</li>
<li>Portez votre attention sur votre respiration entrer et sortir</li>
<li>Dès que votre attention s&#x27;égare, remarquez le et reprenez le fil</li>
</ol>
<p>Vous pouvez aussi prononcer les mots &quot;inspiration&quot; et &quot;expiration&quot; à chaque respiration pour garder votre attention.</p>
<p>À chaque fois que des pensées apparaissent, ne les combattez pas, voyez les comme des bulles de savon ou des nuages qui passent et revenez à votre respiration.</p>
<p>Vous ne pouvez pas stopper vos pensées, vous pouvez simplement les observer et rediriger votre attention sur votre respiration.</p>
<p>Il est conseillé de méditer chaque jour pendant 5 minutes pour en ressentir les bénéfices.</p>
<h2>Types de méditation</h2>
<p>Il existe plusieurs types de méditation :</p>
<ul>
<li>
<a href="/mindfulness" title="Mindfulness">Mindfulness</a>

</li>
<li>
<a href="/vipassana" title="Vipassana" class="not-found">Vipassana</a>

</li>
<li>
<a href="/anapana" title="Anapana" class="not-found">Anapana</a>

</li>
<li>
<a href="/satipatthana" title="Satipatthana" class="not-found">Satipatthana</a>

</li>
<li>
<a href="/mantra" title="Mantra" class="not-found">Mantra</a>

</li>
<li>
<a href="/zen" title="Zen" class="not-found">Zen</a>

</li>
</ul>
<h2>Applications</h2>
<p>Il existe plusieurs applications :</p>
<ul>
<li><a href="https://play.google.com/store/apps/details?id=com.calm.android">Calm</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.getsomeheadspace.android">Headspace</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.spotlightsix.zentimerlite2">Insight Timer</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.petitbambou">Petit Bambou</a></li>
<li><a href="https://play.google.com/store/apps/details?id=org.wakingup.android">Waking Up</a></li>
</ul>
<h2>Citations</h2>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Eliott Meunier - 20 jours de randonnée + Burn Out + Life Update - HPR #1</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Quand on commence à méditer, ce qui se passe, c&#x27;est que, on veut se concentrer sur l&#x27;instant présent, mais il y a notre mental qui est en train de nous envoyer ailleurs.Il part, il commence à dialoguer tout seul dans sa tête.&quot;Ah tiens, qu&#x27;est-ce que je vais manger ce soir?&quot;&quot;Ah peut-être du pesto, mais tiens, est-ce qu&#x27;il me reste encore des pâtes?&quot;&quot;Ah mais en fait, attends, elle est intolérante au gluten.&quot;Quand tu commences à méditer, tu pars super loin dans tes pensées, dans tes raisonnements intellectuels avant de te rendre compte même que tu étais parti.Et donc, tu fais des rappels.Tu prends ton lassaut, tu ramènes la pensée dans l&#x27;instant présent pour la voir et la dissoudre.Mais parfois, il se passe une, deux, trois minutes avant que tu te rendes compte.Donc là, c&#x27;est le début de la méditation.Et plus tu progresses, plus tes rappels sont rapides.Donc, tu arrives à les ramener au bout de 4-5 secondes.Et ensuite tu les vois même avant qu&#x27;ils commencent à t&#x27;emmener et donc tu les ramènes.À la fin, tu as une sorte de couteau où tu coupes les raisonnements intellectuels avant même qu&#x27;ils se forment et ensuite tu n&#x27;as plus de raisonnement intellectuel.Ça, c&#x27;est la méditation.</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://exploringkodawari.blog/mindfulness-is-pausing/</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Meditation is a method or process while mindfulness is a state of being</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/rqoxYKtEWEc">Twill - Meditation 101 - Learn How to Meditate in Our Beginner&#x27;s Guide Animation</a></li>
<li><a href="https://youtu.be/e32j-luGOyo">Eliott Meunier - Comment perdre 500 heures à méditer ? Guide ultime de la méditation</a></li>
<li><a href="https://youtu.be/wRwIOdkN-xo">Eliott Meunier - Le chemin de méditation bouddhiste oublié. Avec Maxime Gréau</a></li>
<li><a href="https://youtu.be/1Ej9k7ABOeQ?t=363">Le Trilliard - Pourquoi tout le monde déteste les formateurs</a></li>
<li><a href="https://i.imgur.com/TBdLr3T.png">https://i.imgur.com/TBdLr3T.png</a></li>
<li><a href="https://jackkornfield.com/how-to-begin-naming/">https://jackkornfield.com/how-to-begin-naming/</a></li>
<li><a href="https://exploringkodawari.blog/what-is-meditation/">https://exploringkodawari.blog/what-is-meditation/</a></li>
<li><a href="https://gatesnotes.com/The-Headspace-Guide-to-Meditation-and-Mindfulness">https://gatesnotes.com/The-Headspace-Guide-to-Meditation-and-Mindfulness</a></li>
<li><a href="https://reddit.com/r/LifeProTips/comments/1hhupuk/lpt_do_not_try_to_stop_thoughts_when_you_meditate/">https://reddit.com/r/LifeProTips/comments/1hhupuk/lpt_do_not_try_to_stop_thoughts_when_you_meditate/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Default Mode Network]]></title>
            <description><![CDATA[Le Default Mode Network est la partie du cerveau qui s'active lorsque l'on est concentré sur aucune tâche.]]></description>
            <link>https://johackim.com/default-mode-network?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/default-mode-network</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 10 Jun 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/default-mode-network.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/default-mode-network.jpg"/>
            <content:encoded><![CDATA[<p>Le Default Mode Network (DMN) est la partie du cerveau qui s&#x27;active lorsque l&#x27;on est concentré sur aucune tâche.</p>
<p>C&#x27;est cette partie qui évoque notre passé ou notre futur.</p>
<p>Notre identité est souvent liée à cette partie.</p>
<p>Nous ruminons sans fin des regrets ou des peurs.</p>
<p>Pour les personnes dépressives ou anxieuses, cette partie est souvent très active.</p>
<p>C&#x27;est ce que certains bouddhistes appellent &quot;The Monkey Mind&quot;.</p>
<p>La <a href="/mindfulness" title="pleine conscience">pleine conscience</a> est une pratique qui permet de réduire l&#x27;activité de cette partie du cerveau.</p>

<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/bouddhisme" title="Bouddhisme" class="not-found">Bouddhisme</a>

</li>
<li><a href="https://netflix.com/fr-en/title/81098586">Netflix - The Mind, Explained</a></li>
<li><a href="https://youtu.be/z6KcqH06LCo?t=2306">Eliott Meunier - Comprendre et utiliser les Psychedéliques</a></li>
<li><a href="https://practicalpie.com/default-mode-network/">https://practicalpie.com/default-mode-network/</a></li>
<li><a href="https://en.wikipedia.org/wiki/Monkey_mind">https://en.wikipedia.org/wiki/Monkey_mind</a></li>
<li><a href="https://fr.wikipedia.org/wiki/R%C3%A9seau_du_mode_par_d%C3%A9faut">https://fr.wikipedia.org/wiki/Réseau_du_mode_par_défaut</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La dichotomie du contrôle]]></title>
            <description><![CDATA[La dichotomie du contrôle est un principe stoïcien qui consiste à distinguer ce qui dépend de nous de ce qui ne dépend pas de nous.]]></description>
            <link>https://johackim.com/dichotomie-du-controle?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/dichotomie-du-controle</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 03 Jun 2024 22:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/dichotomie-du-controle.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/dichotomie-du-controle.jpg"/>
            <content:encoded><![CDATA[<p>La dichotomie du contrôle est un principe qui vient du <a href="/stoicisme" title="Stoïcisme">Stoïcisme</a>.</p>

<p>C&#x27;est le fait de distinguer ce qui dépend de nous de ce qui ne dépend pas de nous.</p>
<p>Cela permet de se libérer l&#x27;esprit de tout ce qui ne dépend pas de nous et de se concentrer uniquement sur ce qui dépend de nous.</p>
<p>La seule chose qui dépend de nous, ce sont nos pensées.</p>
<p>En modifiant nos pensées, nous pouvons modifier nos perceptions, émotions et comportements.</p>
<p>Ce qui ne dépend pas de nous, c&#x27;est tout le reste :</p>
<ul>
<li>Le passé</li>
<li>Le futur</li>
<li>La météo</li>
<li>La mort</li>
<li>Les autres</li>
<li>Etc..</li>
</ul>
<p>Il est inutile de dépenser notre énergie sur ce qui ne dépend pas de nous.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">The Art of Living - Epictetus</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Happiness and freedom begin with a clear understanding of one principle: Some things are within our control, and some things are not.</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Shantideva</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>If the problem can be solved why worry? If the problem cannot be solved worrying will do you no good.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/cercle-d&#x27;influence" title="Cercle d&#x27;influence" class="not-found">Cercle d&#x27;influence</a>

</li>
<li>
<a href="/responsabilite" title="Responsabilité" class="not-found">Responsabilité</a>

</li>
<li>
<a href="/ali-abdaal-how-to-be-happier-stoicism-masterclass#la-dichotomie-du-controle" title="Ali Abdaal - How To Be Happier Stoicism Masterclass" class="not-found">Ali Abdaal - How To Be Happier Stoicism Masterclass</a>

</li>
<li>
<a href="/ali-abdaal-how-to-be-happier-stoicism-masterclass#les-2-seules-choses-que-l&#x27;on-peut-controler" title="Ali Abdaal - How To Be Happier Stoicism Masterclass" class="not-found">Ali Abdaal - How To Be Happier Stoicism Masterclass</a>

</li>
<li>
<a href="/les-7-habitudes-de-ceux-qui-realisent-tout-ce-qu&#x27;ils-entreprennent-stephen-r.-covey" title="Les 7 habitudes de ceux qui réalisent tout ce qu&#x27;ils entreprennent  - Stephen R. Covey" class="not-found">Les 7 habitudes de ceux qui réalisent tout ce qu&#x27;ils entreprennent  - Stephen R. Covey</a>

</li>
<li><a href="https://amazon.fr/dp/B01HE7TG7Y/">Happy - Derren Brown</a></li>
<li><a href="https://youtu.be/-QySLDU8GLY?t=704">Jean-Charles Kurdali - Devenir millionnaire ne vous rendra pas plus serein</a></li>
<li><a href="https://whatisstoicism.com/stoicism-definition/what-is-the-dichotomy-of-control/">https://whatisstoicism.com/stoicism-definition/what-is-the-dichotomy-of-control/</a></li>
<li><a href="https://swipefile.com/what-you-can-and-cant-control-puzzle-chart/">https://swipefile.com/what-you-can-and-cant-control-puzzle-chart/</a></li>
<li><a href="https://stoicism.substack.com/p/stoic-internal-goals-stop-you-from">https://stoicism.substack.com/p/stoic-internal-goals-stop-you-from</a></li>
<li><a href="https://doas2.com/post/things-that-you-can-can-t-control">https://doas2.com/post/things-that-you-can-can-t-control</a></li>
<li><a href="https://stoichandbook.co/the-dichotomy-of-control/">https://stoichandbook.co/the-dichotomy-of-control/</a></li>
<li><a href="https://lazebny.io/dichotomy-of-control/">https://lazebny.io/dichotomy-of-control/</a></li>
<li><a href="https://dariusforoux.com/rule-1-of-stoicism/">https://dariusforoux.com/rule-1-of-stoicism/</a></li>
<li><a href="https://swipefile.com/what-is-in-my-control-my-influence-and-what-is-not-in-my-control">https://swipefile.com/what-is-in-my-control-my-influence-and-what-is-not-in-my-control</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Etcher]]></title>
            <description><![CDATA[Etcher est un logiciel de gravure d'image disque open-source.]]></description>
            <link>https://johackim.com/etcher?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/etcher</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 May 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/etcher.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/etcher.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://etcher.balena.io/">Etcher</a> est un logiciel de gravure d&#x27;image disque open-source.</p>
<p>Il vous permet de graver des images disque (.iso, .img, etc.) sur des supports de stockage (clés USB, cartes SD, etc.).</p>
<p>Utile pour créer une <a href="/usb" title="clé USB" class="not-found">clé USB</a> bootable et installer un système d&#x27;exploitation (ex: Ubuntu, Windows, etc...) sur un ordinateur.</p>

<p>Une fois installé, il vous suffit de :</p>
<ol>
<li>Télécharger votre image disque (exemple : <a href="https://www.ubuntu-fr.org/download/">Ubuntu</a>)</li>
<li>Sélectionner l&#x27;image disque à graver (exemple : <code>ubuntu-24.04-desktop-amd64.iso</code>)</li>
<li>Choisir votre support de stockage (clé USB, carte SD, etc.)</li>
<li>Lancer la gravure</li>
</ol>
<p>Une fois la gravure terminée, vous pourrez brancher votre clé USB sur votre ordinateur pour installer votre nouveau système d&#x27;exploitation.</p>
<p>Je l&#x27;utilise souvent pour installer des distributions Linux comme <a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a>, <a href="/dietpi" title="DietPI">DietPI</a> ou autre.</p>

<p>Ce logiciel est disponible pour Windows, macOS et Linux.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Le triangle cognitif]]></title>
            <description><![CDATA[Le triangle cognitif est un modèle utilisé en TCC qui illustre la relation entre nos pensées, nos émotions et nos comportements.]]></description>
            <link>https://johackim.com/triangle-cognitif?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/triangle-cognitif</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 20 May 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/triangle-cognitif.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/triangle-cognitif.jpg"/>
            <content:encoded><![CDATA[<p>Le triangle cognitif (cognitive triangle en anglais) est un modèle utilisé en <a href="/tcc" title="Thérapie cognitivo-comportementale">Thérapie cognitivo-comportementale</a> qui illustre la relation entre nos pensées, nos émotions et nos comportements.</p>


<link href="data:text/css;base64,I21lcm1haWQtc3ZnLTF7Zm9udC1mYW1pbHk6InRyZWJ1Y2hldCBtcyIsdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTEgLmVycm9yLWljb257ZmlsbDojNTUyMjIyO30jbWVybWFpZC1zdmctMSAuZXJyb3ItdGV4dHtmaWxsOiM1NTIyMjI7c3Ryb2tlOiM1NTIyMjI7fSNtZXJtYWlkLXN2Zy0xIC5lZGdlLXRoaWNrbmVzcy1ub3JtYWx7c3Ryb2tlLXdpZHRoOjJweDt9I21lcm1haWQtc3ZnLTEgLmVkZ2UtdGhpY2tuZXNzLXRoaWNre3N0cm9rZS13aWR0aDozLjVweDt9I21lcm1haWQtc3ZnLTEgLmVkZ2UtcGF0dGVybi1zb2xpZHtzdHJva2UtZGFzaGFycmF5OjA7fSNtZXJtYWlkLXN2Zy0xIC5lZGdlLXBhdHRlcm4tZGFzaGVke3N0cm9rZS1kYXNoYXJyYXk6Mzt9I21lcm1haWQtc3ZnLTEgLmVkZ2UtcGF0dGVybi1kb3R0ZWR7c3Ryb2tlLWRhc2hhcnJheToyO30jbWVybWFpZC1zdmctMSAubWFya2Vye2ZpbGw6IzMzMzMzMztzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTEgLm1hcmtlci5jcm9zc3tzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTEgc3Zne2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDt9I21lcm1haWQtc3ZnLTEgLmxhYmVse2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSAuY2x1c3Rlci1sYWJlbCB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTEgLmNsdXN0ZXItbGFiZWwgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSAubGFiZWwgdGV4dCwjbWVybWFpZC1zdmctMSBzcGFue2ZpbGw6IzMzMztjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSAubm9kZSByZWN0LCNtZXJtYWlkLXN2Zy0xIC5ub2RlIGNpcmNsZSwjbWVybWFpZC1zdmctMSAubm9kZSBlbGxpcHNlLCNtZXJtYWlkLXN2Zy0xIC5ub2RlIHBvbHlnb24sI21lcm1haWQtc3ZnLTEgLm5vZGUgcGF0aHtmaWxsOiNFQ0VDRkY7c3Ryb2tlOiM5MzcwREI7c3Ryb2tlLXdpZHRoOjFweDt9I21lcm1haWQtc3ZnLTEgLm5vZGUgLmxhYmVse3RleHQtYWxpZ246Y2VudGVyO30jbWVybWFpZC1zdmctMSAubm9kZS5jbGlja2FibGV7Y3Vyc29yOnBvaW50ZXI7fSNtZXJtYWlkLXN2Zy0xIC5hcnJvd2hlYWRQYXRoe2ZpbGw6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTEgLmVkZ2VQYXRoIC5wYXRoe3N0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoyLjBweDt9I21lcm1haWQtc3ZnLTEgLmZsb3djaGFydC1saW5re3N0cm9rZTojMzMzMzMzO2ZpbGw6bm9uZTt9I21lcm1haWQtc3ZnLTEgLmVkZ2VMYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7dGV4dC1hbGlnbjpjZW50ZXI7fSNtZXJtYWlkLXN2Zy0xIC5lZGdlTGFiZWwgcmVjdHtvcGFjaXR5OjAuNTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7ZmlsbDojZThlOGU4O30jbWVybWFpZC1zdmctMSAuY2x1c3RlciByZWN0e2ZpbGw6I2ZmZmZkZTtzdHJva2U6I2FhYWEzMztzdHJva2Utd2lkdGg6MXB4O30jbWVybWFpZC1zdmctMSAuY2x1c3RlciB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTEgLmNsdXN0ZXIgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSBkaXYubWVybWFpZFRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4O2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOmhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpO2JvcmRlcjoxcHggc29saWQgI2FhYWEzMztib3JkZXItcmFkaXVzOjJweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwO30jbWVybWFpZC1zdmctMSAuZmxvd2NoYXJ0VGl0bGVUZXh0e3RleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MThweDtmaWxsOiMzMzM7fSNtZXJtYWlkLXN2Zy0xIDpyb290ey0tbWVybWFpZC1mb250LWZhbWlseToidHJlYnVjaGV0IG1zIix2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7fQ==" rel="stylesheet" type="text/css"/>
<p>Il est basé sur l&#x27;idée que ces trois éléments sont interdépendants et s&#x27;influencent mutuellement :</p>
<ul>
<li>Nos pensées influencent nos émotions et nos comportements</li>
<li>Nos émotions influencent nos pensées et nos comportements</li>
<li>Nos comportements influencent nos pensées et nos émotions</li>
</ul>
<p>Si l&#x27;un de ces éléments change, cela peut influencer les deux autres.</p>
<p>Et l&#x27;élément le plus facile à changer est la pensée.</p>
<p>En changeant nos pensées, nous pouvons changer les émotions et les comportements qui en découlent.</p>
<p>Pour cela, nous pouvons utiliser plusieurs techniques comme :</p>
<ul>
<li>
<a href="/restructuration-cognitive" title="La restructuration cognitive" class="not-found">La restructuration cognitive</a>

</li>
<li>
<a href="/la-methode-socratique" title="La méthode socratique" class="not-found">La méthode socratique</a>

</li>
<li>
<a href="/journal-de-pensees" title="Le journal de pensées">Le journal de pensées</a>

</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://i.imgur.com/zLgt3bF.png">https://i.imgur.com/zLgt3bF.png</a></li>
<li><a href="https://twitter.com/george__mack/status/1721117741057220859">https://twitter.com/george__mack/status/1721117741057220859</a></li>
<li><a href="https://therapistaid.com/therapy-worksheet/cbt-triangle">https://therapistaid.com/therapy-worksheet/cbt-triangle</a></li>
<li><a href="https://hudsontherapygroup.com/blog/cognitive-triangle">https://hudsontherapygroup.com/blog/cognitive-triangle</a></li>
<li>
<a href="/rewire-nicole-vignola" title="Rewire - Nicole Vignola" class="not-found">Rewire - Nicole Vignola</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ArchInstall]]></title>
            <description><![CDATA[ArchInstall est un installeur automatique pour Arch Linux.]]></description>
            <link>https://johackim.com/archinstall?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/archinstall</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 13 May 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/archinstall.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/archinstall.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/archlinux/archinstall">ArchInstall</a> est un installeur automatique pour Arch Linux.</p>
<p>Il est nativement accessible sur l&#x27;ISO officiel d&#x27;Arch Linux.</p>
<p>Il permet d&#x27;installer et configurer automatiquement votre système en quelques minutes.</p>
<ul>
<li>Partitionnement</li>
<li>Chiffrement</li>
<li>Comptes utilisateurs</li>
<li>Installation de logiciels</li>
<li>Configuration du bootloader</li>
<li>Configuration de la langue</li>
<li>Configuration du réseau</li>
<li>Configuration du clavier</li>
<li>Configuration de l&#x27;audio</li>
<li>Etc...</li>
</ul>
<p>Pour lancer l&#x27;installeur, il suffit de booter sur l&#x27;ISO officiel d&#x27;Arch Linux et de taper <code>archinstall</code> :</p>
<ol>
<li>Télécharger <a href="https://archlinux.org/download/">Arch Linux</a></li>
<li>
Créer votre boot USB avec <a href="/etcher" title="Etcher">Etcher</a> ou <code>dd if=archlinux.iso of=/dev/sdx status=progress conv=sync</code>

</li>
<li>Désactivez le Secure Boot dans le bios</li>
<li>Booter l&#x27;USB avec la touche F2, F10, F12, DEL ou ECHAP selon votre machine</li>
<li>Tapez <code>archinstall</code> pour lancer l&#x27;installeur</li>
</ol>
<p>Si vous avez un problème lors du lancement de la commande <code>archinstall</code>, réinstallez le package avec la commande suivante :</p>
<pre><code class="language-bash">sudo pacman -Sy archinstall
</code></pre>
<p>En cas de problème de boot sur un vieux ordinateur, installez le bootloader <code>grub</code> et exécutez lla commande suivante après la fin de l&#x27;installation en chroot :</p>
<pre><code class="language-bash">grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=ARCH
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Je vous conseille d&#x27;installer Arch Linux manuellement une première fois puis d&#x27;utiliser ArchInstall une fois que vous avez compris les bases de l&#x27;installation 🙂.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/archlinux/archinstall">https://github.com/archlinux/archinstall</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Journal de pensées]]></title>
            <description><![CDATA[Un journal de pensées est un outil de restructuration cognitive utilisé en TCC pour remettre en question ses pensées automatiques.]]></description>
            <link>https://johackim.com/journal-de-pensees?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/journal-de-pensees</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 06 May 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/journal-de-pensees.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/journal-de-pensees.jpg"/>
            <content:encoded><![CDATA[<p>Un journal de pensées (Thought record) est un outil de <a href="/restructuration-cognitive" title="Restructuration cognitive" class="not-found">Restructuration cognitive</a> utilisé en <a href="/tcc" title="Thérapie cognitivo-comportementale">Thérapie cognitivo-comportementale</a>.</p>

<p>Inspiré des <a href="/colonnes-de-beck" title="Colonnes de Beck" class="not-found">Colonnes de Beck</a>, il est utilisé pour identifier, recenser et remettre en question ses pensées automatiques négatives.</p>

<p>Il est composé de 5 parties :</p>
<ol>
<li><strong>Le déclencheur</strong></li>
<li><strong>L&#x27;émotion</strong></li>
<li><strong>Le comportement</strong></li>
<li><strong>La pensée automatique</strong></li>
<li><strong>La pensée alternative</strong></li>
</ol>
<h2>1. Le déclencheur</h2>
<p>Le déclencheur est la situation qui a déclenché les pensées, émotions et comportements.</p>
<p>Il peut être interne (pensée, souvenir, sensation physique) ou externe (évènement, personne, lieu).</p>
<p>Le déclencheur peut aussi être <a href="https://nesslabs.com/negative-emotional-triggers">un besoin insatisfait</a>.</p>
<h2>2. L&#x27;émotion</h2>
<p>L&#x27;émotion est l&#x27;émotion ressentie dans cette situation.</p>
<p>Vous pouvez noter votre émotion sur une échelle de 0 à 100 en termes d&#x27;intensité ressentie.</p>
<p>PS : Vous pouvez vous inspirer de la <a href="https://feelingswheel.com/">roue des émotions</a> pour vous aider à identifier l&#x27;émotion ressentie.</p>
<h2>3. Le comportement</h2>
<p>Le comportement est l&#x27;action que vous avez effectuée dans cette situation.</p>
<h2>4. La pensée automatique</h2>
<p>La pensée automatique est la pensée qui vous est venue à l&#x27;esprit dans cette situation.</p>
<p>Elle est souvent automatique, rapide et négative.</p>
<p>Noter la pensée automatique sans la juger, simplement en la décrivant.</p>
<p>Vous pouvez nommer la pensée automatique, la noter sur une échelle de 0 à 100% en termes de croyance et noter les preuves pour et contre cette pensée.</p>
<h2>5. La pensée alternative</h2>
<p>La pensée alternative est une pensée alternative et rationnelle à la pensée automatique.</p>
<p>Elle doit être réaliste et basée sur des faits.</p>
<p>Pour définir une pensée alternative, il est possible de se poser les questions suivantes :</p>
<ul>
<li>Quelles sont les preuves pour et contre cette pensée ?</li>
<li>Qu&#x27;est-ce que je dirais à un ami qui aurait la même pensée automatique que moi ?</li>
<li>Que penserait X dans cette situation ?</li>
</ul>
<p>Vous pouvez aussi noter le degré de croyance de chaque pensée alternative sur une échelle de 0 à 100%.</p>
<h2>6. Exemple de journal de pensée</h2>
<p>Voici un exemple de journal de pensée :</p>

































<table><thead><tr><th>Déclencheur</th><th>Émotion</th><th>Comportement</th><th>Pensée automatique</th><th>Pensée alternative</th></tr></thead><tbody><tr><td>Un ami ne m&#x27;a pas répondu</td><td>Tristesse</td><td>M&#x27;isoler</td><td>Il ne m&#x27;aime pas</td><td>Il est peut-être occupé</td></tr><tr><td>Un collègue m&#x27;a critiqué</td><td>Colère</td><td>M&#x27;énerver</td><td>Il est méchant</td><td>Il a peut-être eu une mauvaise journée</td></tr><tr><td>...</td><td>...</td><td>...</td><td>...</td><td>...</td></tr></tbody></table>
<p>Vous pouvez ajouter ces 2 colonnes supplémentaires pour noter les preuves pour et contre chaque pensée automatique :</p>













<table><thead><tr><th>Preuve pour</th><th>Preuve contre</th></tr></thead><tbody><tr><td>...</td><td>...</td></tr></tbody></table>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://therapistaid.com/therapy-worksheet/thought-record">https://therapistaid.com/therapy-worksheet/thought-record</a></li>
<li><a href="https://psychologytools.com/self-help/thought-records/">https://psychologytools.com/self-help/thought-records/</a></li>
<li><a href="https://psychologytools.com/professional/techniques/thought-records/">https://psychologytools.com/professional/techniques/thought-records/</a></li>
<li><a href="https://positivepsychology.com/thought-records/">https://positivepsychology.com/thought-records/</a></li>
<li><a href="https://simplypsychology.org/wp-content/uploads/CBT-Thought-Record.pdf">https://simplypsychology.org/wp-content/uploads/CBT-Thought-Record.pdf</a></li>
<li><a href="https://igorthiriez.files.wordpress.com/2020/11/face-a-une-pensee-douloureuse.pdf">https://igorthiriez.files.wordpress.com/2020/11/face-a-une-pensee-douloureuse.pdf</a></li>
<li><a href="https://getselfhelp.co.uk/docs/ThoughtRecordSheet7.pdf">https://getselfhelp.co.uk/docs/ThoughtRecordSheet7.pdf</a></li>
<li><a href="https://static1.squarespace.com/static/5cb61b1e29f2cc34d16e2bd6/t/6022ec6bd0f1fb011246f086/1612901495804/challenge-automatic-negative-thoughts-worksheet.pdf">https://static1.squarespace.com/static/5cb61b1e29f2cc34d16e2bd6/t/6022ec6bd0f1fb011246f086/1612901495804/challenge-automatic-negative-thoughts-worksheet.pdf</a></li>
<li><a href="https://thinkcbt.com/images/Downloads/Thought_Records/EXAMPLE-CBT-THOUGHT_RECORD-V-THINK-CBT-01072020.pdf">https://thinkcbt.com/images/Downloads/Thought_Records/EXAMPLE-CBT-THOUGHT_RECORD-V-THINK-CBT-01072020.pdf</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[LlamaIndex]]></title>
            <description><![CDATA[LlamaIndex est un framework open-source pour indexer des données et les rendre accessibles par un LLM.]]></description>
            <link>https://johackim.com/llamaindex?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/llamaindex</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 29 Apr 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/llamaindex.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/llamaindex.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://llamaindex.ai/">LlamaIndex</a> est un framework open-source pour indexer des données et les rendre accessibles par un <a href="/llm" title="LLM">LLM</a>.</p>

<p>Cela vous permet de poser des questions à vos fichiers textes (<code>.txt</code>, <code>.md</code>, <code>.pdf</code>, <code>.epub</code>, etc...).</p>
<p>Et avec les transcripts audio et vidéo, les flux RSS, etc... vous pouvez indexer et interroger n&#x27;importe quel type de données.</p>
<p>Il existe une <a href="https://github.com/run-llama/llama_index">version Python</a> et une <a href="https://github.com/run-llama/LlamaIndexTS">version JavaScript</a>.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Bien que LLamaIndex peut utiliser des LLMs open-source (ex: Llama3), il fonctionne par défaut avec GPT-3 d&#x27;OpenAI. Donc n&#x27;oubliez pas que chaque requête à l&#x27;API d&#x27;OpenAI est facturée 😉</p>
                    </div>
                </blockquote>
<h2>Installation</h2>
<p>Commencez par créer un compte sur <a href="https://platform.openai.com/">OpenAI</a> pour pouvoir utiliser l&#x27;API GPT-3.</p>
<p>Puis exportez <a href="https://platform.openai.com/api-keys">votre clé d&#x27;API</a> :</p>
<pre><code class="language-bash">export OPENAI_API_KEY=&quot;votre-clé-d&#x27;API&quot;
</code></pre>
<p>Pour installer la version de LlamaIndex en JavaScript, exécutez la commande suivante :</p>
<pre><code class="language-bash">npm i llamaindex
</code></pre>
<p>Pour la version Python, installez le package <code>llama_index</code> avec <code>pip</code> :</p>
<pre><code class="language-bash">pip install llama_index
</code></pre>
<h2>Utilisation en JavaScript</h2>
<p>Créez un fichier <code>index.mjs</code> avec le contenu suivant :</p>
<pre><code class="language-js">// index.mjs
import fs from &#x27;fs&#x27;;
import { Document, VectorStoreIndex } from &#x27;llamaindex&#x27;;

const essay = fs.readFileSync(&#x27;node_modules/llamaindex/examples/abramov.txt&#x27;, &#x27;utf-8&#x27;);
const document = new Document({ text: essay });

const index = await VectorStoreIndex.fromDocuments([document]);

const queryEngine = index.asQueryEngine();
const response = await queryEngine.query({
  query: &#x27;What did the author do in college?&#x27;,
});

console.log(response.toString());
</code></pre>
<p>Cela permet de lire un fichier texte au format <code>.txt</code> et de poser une question sur son contenu :</p>
<pre><code class="language-bash">node index.mjs
</code></pre>
<p>Pour faire la même chose avec un fichier au format <code>.pdf</code>, il faut utiliser le Data Loader <code>PDFReader</code> :</p>
<pre><code class="language-js">// index.mjs
import { PDFReader, VectorStoreIndex } from &#x27;llamaindex&#x27;;

const reader = new PDFReader();
const documents = await reader.loadData(&#x27;book.pdf&#x27;);

const index = await VectorStoreIndex.fromDocuments(documents);

const queryEngine = index.asQueryEngine();
const response = await queryEngine.query({
  query: &#x27;Give me a summary of this book&#x27;,
});

console.log(response.toString());
</code></pre>
<h2>Utilisation en Python</h2>
<p>Pour Python, créez un dossier <code>data</code> avec des fichiers texte au format <code>.txt</code> ou <code>.pdf</code> et le fichier <code>index.py</code> suivant :</p>
<pre><code class="language-python"># index.py
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader(&quot;./data&quot;).load_data()
index = VectorStoreIndex.from_documents(documents)

query_engine = index.as_query_engine()
response = query_engine.query(&quot;Give me a summary of this book&quot;)

print(response)
</code></pre>
<p>Voici un exemple pour charger un autre type de fichier (ex: <code>.epub</code>) :</p>
<pre><code class="language-python">from llama_index.core import VectorStoreIndex
from llama_index.readers.file import EpubReader

documents = EpubReader().load_data(&quot;./book.epub&quot;)
index = VectorStoreIndex.from_documents(documents)

query_engine = index.as_query_engine()
response = query_engine.query(&quot;Give me a summary of the book&quot;)

print(response)
</code></pre>
<p>Pour persister l&#x27;index, et éviter d&#x27;indexer tous les documents à chaque exécution, vous pouvez séparer le fichier en 2 (<code>index.py</code> et <code>query.py</code>) et utiliser la méthode <code>save</code> :</p>
<pre><code class="language-python"># index.py
from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

documents = SimpleDirectoryReader(&quot;./data&quot;).load_data()
index = VectorStoreIndex.from_documents(documents)
index.storage_context.persist()

# query.py
from llama_index.core import StorageContext, load_index_from_storage

storage_context = StorageContext.from_defaults(persist_dir=&quot;./storage&quot;)
index = load_index_from_storage(storage_context)

query_engine = index.as_query_engine()
response = query_engine.query(&quot;Give me a summary of the book&quot;)

print(response)
</code></pre>
<p>Pour utiliser un autre <a href="/llm" title="LLM">LLM</a> que GPT-3, vous pouvez utiliser <a href="/ollama" title="Ollama">Ollama</a> avec l&#x27;argument <code>llm</code> de la fonction <code>as_query_engine</code> :</p>

<pre><code class="language-python">from llama_index.core import VectorStoreIndex
from llama_index.readers.file import EpubReader
from llama_index.llms.ollama import Ollama

documents = EpubReader().load_data(&quot;./book.epub&quot;)
index = VectorStoreIndex.from_documents(documents)

llama = Ollama(
    model=&quot;llama2&quot;,
    request_timeout=40.0,
)

query_engine = index.as_query_engine(llm=llama)
res = query_engine.query(&quot;Give me a summary of the book&quot;)

print(res)
</code></pre>
<p>Et pour utiliser un autre <em>embedding model</em> que celui d&#x27;OpenAI :</p>
<pre><code class="language-python">from llama_index.core import VectorStoreIndex, SimpleDirectoryReader
from llama_index.embeddings.huggingface import HuggingFaceEmbedding

embed_model = HuggingFaceEmbedding(model_name=&quot;mixedbread-ai/mxbai-embed-large-v1&quot;)

documents = SimpleDirectoryReader(&quot;./data&quot;).load_data()
index = VectorStoreIndex.from_documents(documents, embed_model=embed_model)
index.storage_context.persist()
</code></pre>
<p>L&#x27;avantage avec Python, c&#x27;est qu&#x27;il existe beaucoup plus de <a href="https://llamahub.ai/?tab=readers">Data Loaders</a> qu&#x27;avec JavaScript pour charger différents types de données :</p>
<ul>
<li><code>EPUBReader</code> (pour les fichiers <code>.epub</code>)</li>
<li><code>VideoAudioReader</code> (pour les fichiers <code>.mp4</code> et <code>.mp3</code>)</li>
<li><code>ImageReader</code> (pour les fichiers <code>.png</code> et <code>.jpg</code>)</li>
<li><code>RSSReader</code> (pour les flux RSS)</li>
<li>etc...</li>
</ul>
<p>Pour aller plus loin, voici <a href="https://docs.llamaindex.ai/en/stable/">la documentation de LlamaIndex</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/run-llama/llama_index">https://github.com/run-llama/llama_index</a></li>
<li><a href="https://huggingface.co/learn/cookbook/rag_llamaindex_librarian">https://huggingface.co/learn/cookbook/rag_llamaindex_librarian</a></li>
<li><a href="https://github.com/anthropics/anthropic-cookbook/blob/main/third_party/LlamaIndex/Basic_RAG_With_LlamaIndex.ipynb">https://github.com/anthropics/anthropic-cookbook/blob/main/third_party/LlamaIndex/Basic_RAG_With_LlamaIndex.ipynb</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[CrowdSec]]></title>
            <description><![CDATA[CrowdSec est un pare-feu communautaire open-source pour se protéger des attaques informatiques.]]></description>
            <link>https://johackim.com/crowdsec?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/crowdsec</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 22 Apr 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/crowdsec.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/crowdsec.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/crowdsecurity/crowdsec">CrowdSec</a> est un <a href="/pare-feu" title="Pare-feu">Pare-feu</a> communautaire open-source pour se protéger des attaques informatiques.</p>

<p>Il analyse le comportement des visiteurs via les logs et répond de manière adaptée :</p>
<ul>
<li>Bloquer l&#x27;adresse IP</li>
<li>Ajouter un captcha</li>
<li>Ajouter un code HTTP 403</li>
<li>ect...</li>
</ul>
<p>Les adresses IP agressives sont envoyées à CrowdSec pour être partagés entre tous les utilisateurs afin d&#x27;améliorer la sécurité de chacun.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur <strong>Ubuntu</strong> ou <strong>Debian</strong> :</p>
<pre><code class="language-bash">curl -s https://install.crowdsec.net | sudo sh
sudo apt install -y crowdsec
</code></pre>
<p>Pour l&#x27;installer sur <strong>Arch Linux</strong> :</p>
<pre><code class="language-bash">yay -S --noconfirm crowdsec-bin
</code></pre>
<p>Pour les autres systèmes, <a href="https://doc.crowdsec.net/docs/getting_started/install_crowdsec/">voir la documentation</a>.</p>
<h2>Désinstallation</h2>
<p>Pour le désinstaller :</p>
<pre><code class="language-bash">sudo apt purge -y crowdsec crowdsec-firewall-bouncer-iptables
sudo apt autoremove -y
sudo rm -rf /usr/share/crowdsec/ /etc/crowdsec/
</code></pre>
<h2>Initialisation</h2>
<p>Pour démarrer CrowdSec, il faut démarrer le service :</p>
<pre><code class="language-bash">sudo systemctl enable --now crowdsec
</code></pre>
<p>Par défaut, crowdsec ne fait que lire les logs et afficher des <em>alertes</em>.</p>
<p>Pour réellement bloquer les adresses IP suite à une <em>décision</em>, il faut installer le <em>bouncer</em> iptables :</p>
<pre><code class="language-bash">apt install -y crowdsec-firewall-bouncer-iptables # Ubuntu/Debian
# Ou
yay -S --noconfirm crowdsec-firewall-bouncer-iptables # Arch Linux

# Démarrer le service
sudo systemctl enable --now crowdsec-firewall-bouncer
</code></pre>
<h2>Bannir une adresse IP</h2>
<p>Pour bannir une adresse IP, voici la commande :</p>
<pre><code class="language-bash">cscli decisions add -t ban -i &lt;IP&gt;
</code></pre>
<p>Ou une plage d&#x27;adresse IPs :</p>
<pre><code class="language-bash">cscli decisions add -t ban -r &lt;CIDR&gt;
</code></pre>
<p>Il n&#x27;est pas possible de bannir une IP définitivement, mais vous pouvez utiliser le paramètre <code>-d 999999h</code> pour mettre une durée de +100ans.</p>
<h2>Lister les alertes</h2>
<p>Vous pouvez lister les attaques détectées par CrowdSec :</p>
<pre><code class="language-bash">cscli alerts list
</code></pre>
<p>Et les inspecter plus en détail :</p>
<pre><code class="language-bash">cscli alerts inspect -d &lt;id&gt;
</code></pre>
<h2>Console de CrowdSec</h2>
<p>Et si vous souhaitez relier votre serveur à la Console de CrowdSec (facultatif) :</p>
<ul>
<li>Inscrivez-vous gratuitement sur <a href="https://app.crowdsec.net/signup">https://app.crowdsec.net/signup</a></li>
<li>Exécuter la commande <code>cscli console enroll &lt;key&gt;</code> (la clé est affichée sur <a href="https://app.crowdsec.net/security-engines">https://app.crowdsec.net/security-engines</a>)</li>
</ul>
<p>Cela vous permettra d&#x27;ajouter des blocklists facilement.</p>
<h2>Ajouter une blocklist manuellement</h2>
<p>Le plus simple pour ajouter une blocklist, c&#x27;est de passer par la [[#Console de CrowdSec|console]].</p>
<p>Mais il est possible d&#x27;importer manuellement une blocklist (ex: <a href="https://github.com/firehol/blocklist-ipsets/">https://github.com/firehol/blocklist-ipsets/</a>) :</p>
<pre><code class="language-bash">for ip in $(cat blocklist.txt); do cscli decisions add -t ban -i &quot;$ip&quot;; done
</code></pre>
<h2>Ajouter une whitelist manuellement</h2>
<p>Et si vous souhaitez whitelister des IPs (ex: <a href="https://api.github.com/meta">les IPs de Github</a>), éditez le fichier <code>/etc/crowdsec/parsers/s02-enrich/whitelists.yaml</code> et relancez le service crowdsec.</p>
<p>Vous pouvez aussi créer un fichier <code>/etc/crowdsec/parsers/s02-enrich/custom-whitelist.yaml</code>.</p>
<p>Exemple :</p>
<pre><code class="language-yml">name: custom/zammad-whitelist
description: &quot;Whitelist traffic&quot;
whitelist:
  reason: &quot;Legitimate traffic&quot;
  expression:
    - evt.Line.Raw contains &#x27;zammad&#x27;
</code></pre>
<p>Pour vérifiez que votre whitelist est bien pris en compte, vous pouvez exécuter un <code>cscli metrics | grep whitelist</code>.</p>
<p>Créez le fichier <code>/etc/crowdsec/postoverflows/s01-whitelist/custom-whitelist.yaml</code> si vous souhaitez l&#x27;appliquer uniquement pour un scenario spécifique :</p>
<pre><code class="language-yml">name: custom/zammad-whitelist
description: &quot;Whitelist traffic&quot;
filter: &quot;evt.Overflow.Alert.Scenario == &#x27;custom/http-crawl-non_statics&#x27;&quot;
whitelist:
  reason: &quot;Legitimate traffic&quot;
  expression:
    - evt.Line.Raw contains &#x27;zammad&#x27;
</code></pre>
<p>Vous pouvez vérifier que votre postoverflow existe bien avec <code>cscli postoverflows list</code>.</p>
<h2>Voir l&#x27;état de CrowdSec</h2>
<p>Pour avoir un visuel de l&#x27;état de crowdsec :</p>
<pre><code class="language-bash">cscli metrics
</code></pre>
<h2>Supprimer les faux positifs</h2>
<p>Si vous rencontrez un faux positif, vous pouvez modifier les seuils de tolérance :</p>
<ol>
<li>Identifier la raison du bannissement avec <code>cscli alerts inspect -d &lt;id&gt;</code></li>
<li>Ajuster le <code>leakspeed</code> (vitesse d&#x27;oubli des erreurs), <code>capacity</code> (nombre d&#x27;erreurs avant ban) ou <code>filter</code> du scenario</li>
<li>(facultatif) Ou supprimer le scenario en question via <code>cscli decisions remove --scenario &lt;scenario&gt;</code></li>
<li>Puis redémarrez avec <code>systemctl restart crowdsec</code> ou <code>kill -1 1</code> (si docker)</li>
<li>Désactiver le ban manuellement avec <code>cscli decisions remove --id &lt;id&gt;</code></li>
</ol>
<p>Par exemple, j&#x27;ai supprimé le lien symbolique <code>/etc/crowdsec/scenarios/http-generic-bf.yaml</code> et j&#x27;ai créer un nouveau fichier <code>/etc/crowdsec/scenarios/http-generic-bf-custom.yaml</code> avec les valeurs suivantes :</p>
<pre><code class="language-diff">--- /etc/crowdsec/hub/scenarios/crowdsecurity/http-generic-bf.yaml
+++ /etc/crowdsec/scenarios/http-generic-bf-custom.yaml
@@ -21,12 +21,12 @@
 # Generic 401 Authorization Errors
 type: leaky
 #debug: true
-name: LePresidente/http-generic-401-bf
+name: custom/http-generic-401-bf
 description: &quot;Detect generic 401 Authorization error brute force&quot;
 filter: &quot;evt.Meta.log_type == &#x27;http_access-log&#x27; &amp;&amp; evt.Parsed.verb == &#x27;POST&#x27; &amp;&amp; evt.Meta.http_status == &#x27;401&#x27;&quot;
 groupby: evt.Meta.source_ip
-capacity: 5
-leakspeed: &quot;10s&quot;
+capacity: 10
+leakspeed: &quot;5s&quot;
 blackhole: 1m
 labels:
   confidence: 3
@@ -41,12 +41,12 @@
 # Generic 403 Forbidden (Authorization) Errors
 type: leaky
 #debug: true
-name: LePresidente/http-generic-403-bf
+name: custom/http-generic-403-bf
 description: &quot;Detect generic 403 Forbidden (Authorization) error brute force&quot;
 filter: &quot;evt.Meta.log_type == &#x27;http_access-log&#x27; &amp;&amp; evt.Parsed.verb == &#x27;POST&#x27; &amp;&amp; evt.Meta.http_status == &#x27;403&#x27;&quot;
 groupby: evt.Meta.source_ip
-capacity: 5
-leakspeed: &quot;10s&quot;
+capacity: 10
+leakspeed: &quot;5s&quot;
 blackhole: 1m
 labels:
   confidence: 3
</code></pre>
<p>Pareil pour le scenario <code>http-crawl-non_statics</code> :</p>
<pre><code class="language-diff">--- /etc/crowdsec/hub/scenarios/crowdsecurity/http-crawl-non_statics.yaml
+++ /etc/crowdsec/scenarios/http-crawl-non_statics-custom.yaml
@@ -1,10 +1,10 @@
 type: leaky
-name: crowdsecurity/http-crawl-non_statics
+name: custom/http-crawl-non_statics
 description: &quot;Detect aggressive crawl on non static resources&quot;
 filter: &quot;evt.Meta.log_type in [&#x27;http_access-log&#x27;, &#x27;http_error-log&#x27;] &amp;&amp; evt.Parsed.static_ressource == &#x27;false&#x27; &amp;&amp; evt.Parsed.verb in [&#x27;GET&#x27;, &#x27;HEAD&#x27;]&quot;
 distinct: &quot;evt.Parsed.file_name&quot;
-leakspeed: 0.5s
-capacity: 40
+leakspeed: 0.2s
+capacity: 100
 #debug: true
 #this limits the memory cache (and event_sequences in output) to five events
 cache_size: 5
</code></pre>
<p>Vos nouveaux scenarios devraient apparaitre dans le retour de la commande suivante :</p>
<pre><code class="language-bash">cscli metrics | grep custom
</code></pre>
<h2>Création d&#x27;un scenario personnalisé</h2>
<p>Créer un fichier (ex: <code>http-socketio-flood.yaml</code>) dans le dossier <code>/etc/crowdsec/scenarios/</code> avec le contenu suivant :</p>
<pre><code class="language-yaml">type: leaky
name: custom/socketio-flood
description: &quot;Detect Socket.IO polling flood&quot;
filter: &quot;evt.Meta.log_type in [&#x27;http_access-log&#x27;, &#x27;http_request&#x27;] &amp;&amp; evt.Parsed.request contains &#x27;/socket.io/&#x27;&quot;
groupby: &quot;evt.Meta.source_ip&quot;
capacity: 40
leakspeed: &quot;1s&quot;
blackhole: 1m
labels:
 service: http
 type: dos
 remediation: true
</code></pre>
<p>Ne pas éditer les fichiers dans le dossier <code>/etc/crowdsec/hub/scenarios/crowdsecurity/</code> car chaque modification peut être écraser par un simple <code>cscli hub update</code>.</p>
<h2>Tester la sécurité de son serveur</h2>
<p>Pour vérifier si votre configuration de crowdsec fonctionne correctement vous pouvez simuler des attaques.</p>
<p>Par exemple, simuler des tentatives de connexion SSH échouées :</p>
<pre><code class="language-bash">for i in {1..10}; do ssh fakeuser@&lt;IP_ADDRESS&gt;; done
</code></pre>
<p>Ou pour tester la sécurité de votre serveur HTTP(S) :</p>
<pre><code class="language-bash">for i in {1..50}; do curl -s &quot;https://example.com/non-existent-page-$i&quot;; done
# Ou
nikto -host https://example.com
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Effectuer ce test via une autre adresse IP (ex: via un VPN) pour éviter d&#x27;être bloqué 😅.</p>
                    </div>
                </blockquote>
<p>Puis vérifiez les décisions de crowdec :</p>
<pre><code class="language-bash">sudo cscli decisions list
</code></pre>
<p>Si une décision apparait, vous ne devriez plus avoir accès au serveur SSH ou HTTP(S) pendant plusieurs heures.</p>
<h2>Utilisation avec Traefik</h2>
<p>Pour utiliser CrowdSec avec Traefik et Docker Swarm, j&#x27;utilise ces 2 stacks docker :</p>
<ul>
<li><a href="https://github.com/ethibox/awesome-stacks/blob/master/stacks/traefik-crowdsec.yml">Traefik</a></li>
<li><a href="https://github.com/ethibox/awesome-stacks/blob/master/stacks/crowdsec.yml">Crowdsec</a></li>
</ul>
<p>Installation de traefik :</p>
<pre><code class="language-bash">ACCESSLOG=true MIDDLEWARES=crowdsec-bouncer@file ACME_EMAIL=noreply@example.com docker stack deploy -c &lt;(curl -so - https://raw.githubusercontent.com/ethibox/awesome-stacks/master/stacks/traefik.yml) traefik
</code></pre>
<p>Installation de crowdsec :</p>
<pre><code class="language-bash">docker stack deploy -c stacks/crowdsec.yml crowdsec
</code></pre>
<p>Une fois installé, j&#x27;ajoute la configuration suivante dans le fichier <code>/etc/crowdsec/acquis.d/traefik.yaml</code> à l&#x27;intérieur du conteneur Crowdsec :</p>
<pre><code class="language-txt">filenames:
  - /var/log/traefik/access.log
labels:
  type: traefik
</code></pre>
<p>J&#x27;ajoute un fichier <code>dynamic.yml</code> avec le contenu suivant :</p>
<pre><code class="language-bash">http:
  middlewares:
    crowdsec-bouncer:
      forwardAuth:
        address: http://crowdsec_bouncer:8080/api/v1/forwardAuth
        trustForwardHeader: true
</code></pre>
<p>Ensuite, je rentre la commande suivante à l&#x27;intérieur du conteneur CrowdSec :</p>
<pre><code class="language-bash">docker exec -it $(docker ps -qf name=crowdsec_crowdsec) cscli bouncers add traefik-bouncer
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Il est possible de devoir exécuter cscli bouncers delete traefik-bouncer avant pour pouvoir récupérer la clé.</p>
                    </div>
                </blockquote>
<p>Et je redémarre la stack docker avec la variable d&#x27;environnement <code>CROWDSEC_BOUNCER_API_KEY</code> qui contient la clé d&#x27;api qui s&#x27;affiche en sortie de la commande précédente.</p>
<p>Chaque service relié à Traefik sera protégé par CrowdSec.</p>
<p>Si vous exécutez une commande comme <code>dirsearch -u https://example.com</code> sur un de vos sites internet, votre IP sera automatiquement banni pendant 4h.</p>
<p>J&#x27;ai quelques erreur au démarrage de traefik :</p>
<pre><code class="language-txt">ERR Error calling http://crowdsec_bouncer:8080/api/v1/forwardAuth error=&quot;Get \&quot;http://crowdsec_bouncer:8080/api/v1/forwardAuth\&quot;: context canceled&quot; middlewareName=crowdsec-bouncer@file middlewareType=ForwardAuth
</code></pre>
<p>Mais cela n&#x27;empêche un bon fonctionnement. Cela semble être des faux positifs.</p>
<p>Je vous conseille d&#x27;ajouter une tâche cron avec <a href="/logrotate" title="logrotate" class="not-found">logrotate</a> pour limiter la taille des fichiers de log afin d&#x27;éviter de saturer votre stockage :</p>

<pre><code class="language-bash">@daily logrotate -f /etc/logrotate.d/traefik
</code></pre>
<p>Avec la configuration suivante dans le fichier <code>/etc/logrotate.d/traefik</code> :</p>
<pre><code class="language-txt">/var/log/traefik/access.log {
    rotate 14
    missingok
    notifempty
    create 644 root root
    postrotate
        docker ps -qf name=traefik_traefik | xargs -r docker kill --signal=&quot;USR1&quot;
        docker ps -qf name=crowdsec_crowdsec | xargs -r docker kill --signal=&quot;HUP&quot;
    endscript
}
</code></pre>
<p>Et pour éviter d&#x27;utiliser la collection <code>crowdsecurity/sshd</code>, vu que cela concerne uniquement traefik, je supprime la collection via la commande suivante :</p>
<pre><code class="language-bash">cscli collections remove --force crowdsecurity/sshd
</code></pre>
<h2>Tester la configuration crowdsec</h2>
<p>Pour éviter d&#x27;avoir le service crowdsec qui plante lors du changement, vous pouvez tester votre configuration avant :</p>
<pre><code class="language-bash">crowdsec -c /etc/crowdsec/config.yaml -t
</code></pre>
<h2>Installer une nouvelle collection</h2>
<p>Si vous avez des bruteforce sur des application spécifique (ex: wordpress), vous pouvez installer des collections :</p>
<pre><code class="language-bash">cscli collections install crowdsecurity/wordpress
# Ou juste un scenario :
cscli scenarios install crowdsecurity/http-bf-wordpress_bf_xmlrpc
# Ou une liste blanche :
cscli parsers install crowdsecurity/nextcloud-whitelist
</code></pre>
<p>Possibilité de chercher des collections ou des scenario depuis les pages suivantes :</p>
<ul>
<li><a href="https://app.crowdsec.net/hub/collections">https://app.crowdsec.net/hub/collections</a></li>
<li><a href="https://app.crowdsec.net/hub/scenarios">https://app.crowdsec.net/hub/scenarios</a></li>
</ul>
<h2>Débloquer une IP</h2>
<pre><code class="language-bash">cscli alert list --ip &lt;ip&gt;
cscli alert inspect &lt;id&gt;
cat /var/log/traefik/access.log | grep &lt;ip&gt;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/5K7Aj5ya7uI">Korben - Découverte et installation de Crowdsec</a></li>
<li><a href="https://docs.crowdsec.net/">https://docs.crowdsec.net/</a></li>
<li><a href="https://crowdsec.net/blog/enhance-docker-compose-security">https://crowdsec.net/blog/enhance-docker-compose-security</a></li>
<li><a href="https://blog.levassb.ovh/post/crowdsec/">https://blog.levassb.ovh/post/crowdsec/</a></li>
<li><a href="https://github.com/crowdsecurity/hub/blob/master/collections/crowdsecurity/traefik.yaml">https://github.com/crowdsecurity/hub/blob/master/collections/crowdsecurity/traefik.yaml</a></li>
<li><a href="https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin">https://github.com/maxlerebourg/crowdsec-bouncer-traefik-plugin</a></li>
<li><a href="https://github.com/fbonalair/traefik-crowdsec-bouncer">https://github.com/fbonalair/traefik-crowdsec-bouncer</a></li>
<li><a href="https://app.crowdsec.net/hub/author/crowdsecurity/collections/traefik">https://app.crowdsec.net/hub/author/crowdsecurity/collections/traefik</a></li>
<li><a href="https://blog.stephane-robert.info/docs/securiser/reseaux/crowdsec/">https://blog.stephane-robert.info/docs/securiser/reseaux/crowdsec/</a></li>
<li><a href="https://it-connect.fr/reverse-proxy-traefik-integration-de-crowdsec-pour-bloquer-les-attaques/">https://it-connect.fr/reverse-proxy-traefik-integration-de-crowdsec-pour-bloquer-les-attaques/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tauri]]></title>
            <description><![CDATA[Tauri est un framework open-source basé sur Rust pour construire des applications multiplateformes.]]></description>
            <link>https://johackim.com/tauri?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/tauri</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 15 Apr 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/tauri.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/tauri.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/tauri-apps/tauri">Tauri</a> est un framework open-source basé sur Rust pour construire des applications multiplateformes.</p>
<p>Vous pouvez créer des applications pour Windows, macOS, Linux, iOS et Android avec une seule base de code.</p>
<h2>Installation</h2>
<p>Pour installer un nouveau projet Tauri, il suffit de lancer la commande suivante :</p>
<pre><code class="language-bash">npx create tauri-app --beta
</code></pre>
<h2>Utilisation</h2>
<p>Une fois installé, vous pouvez lancer votre application avec la commande suivante :</p>
<pre><code class="language-bash">npx tauri dev
</code></pre>
<h2>Compilation</h2>
<p>Et pour compiler l&#x27;exécutable de votre application, il s&#x27;agit de la commande suivante :</p>
<pre><code class="language-bash">npx tauri build
</code></pre>
<p>Si vous rencontrez une erreur, vous pouvez ajouter le paramètre <code>npx tauri build --verbose</code> pour voir plus de détails.</p>
<p>Et si comme moi, vous rencontrez une erreur <code>ERROR: Strip call failed</code> lors de la compilation, vous pouvez ajouter la variable d&#x27;environnement <code>NO_STRIP=true npx tauri build</code>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://beta.tauri.app/blog/tauri-2-0-0-beta/">Tauri</a></li>
<li><a href="https://youtu.be/-X8evddpu7M">Fireship - Tauri in 100 Seconds</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[MicroG]]></title>
            <description><![CDATA[MicroG est une alternative à Google Play Services.]]></description>
            <link>https://johackim.com/microg?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/microg</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 08 Apr 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/microg.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/microg.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://microg.org/">MicroG</a> est une alternative à Google Play Services.</p>
<p>Cela permet d&#x27;utiliser des applications qui nécessitent Google Play Services sans avoir à installer les services de Google.</p>
<p>Il s&#x27;agit d&#x27;un projet <a href="https://github.com/microg/GmsCore">open-source</a> qui ne nécessite pas de rooter son smartphone.</p>
<p>Pour les détenteurs de smartphones Android sous LineageOS, c&#x27;est une solution intéressante.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer, il suffit de vous rendre sur le site officiel : <a href="https://microg.org/download.html">https://microg.org/download.html</a></p>
<p>De télécharger et d&#x27;installer les 3 applications suivantes dans l&#x27;ordre :</p>
<ul>
<li>microG Services</li>
<li>microG Companion</li>
<li>Services Framework Proxy</li>
</ul>
<p>Puis de lancer l&#x27;application microG Services pour vous connecter à un <a href="/comment-detenir-un-compte-google-anonyme" title="compte Google">compte Google</a> via le bouton &quot;Sign in&quot;.</p>

<h2>Utilisation</h2>
<p>Une fois installé et connecté, vous pouvez démarrer l&#x27;application que vous souhaitez utiliser.</p>
<p>Et si jamais vous rencontrez des problèmes lors du démarrage d&#x27;une application, je vous conseille d&#x27;activer les modes suivants (selon votre cas) :</p>
<ul>
<li>Google Device Registration</li>
<li>Cloud Messaging</li>
<li>Google SafetyNet</li>
</ul>
<p>Et si vous rencontrez encore des problèmes, cochez toutes les cases de la checklist (Self-Check).</p>
<p>Très pratique pour pouvoir utiliser des applications qui nécessitent obligatoirement Google Play Services comme Strava ou ChatGPT 🙂 !</p>
<p>PS : Il est aussi possible d&#x27;installer LineageOS avec microG directement intégré depuis le site <a href="https://lineage.microg.org/">https://lineage.microg.org/</a></p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/android" title="Android" class="not-found">Android</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tailwind CSS]]></title>
            <description><![CDATA[Tailwind CSS est un framework CSS qui permet de designer des interfaces web rapidement sans utiliser de CSS.]]></description>
            <link>https://johackim.com/tailwind-css?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/tailwind-css</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 01 Apr 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/tailwind-css.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/tailwind-css.jpg"/>
            <content:encoded><![CDATA[<p>Tailwind CSS est un framework CSS qui permet de designer des interfaces web rapidement sans utiliser de CSS.</p>
<p>Au lieu de définir des classes CSS dans un fichier séparé, on les définit directement dans le HTML.</p>
<p>Voici un exemple de code HTML avec Tailwind CSS :</p>
<pre><code class="language-html">&lt;h1 class=&quot;text-3xl font-bold underline&quot;&gt;
    Hello world!
&lt;/h1&gt;
</code></pre>
<p>Vous pouvez copier-coller cet exemple dans le <a href="https://play.tailwindcss.com/">Playground</a> de Tailwind CSS pour voir le résultat.</p>
<h2>Installation</h2>
<p>Pour l&#x27;essayer rapidement, vous pouvez ajouter le CDN <code>cdn.tailwindcss.com</code> dans un fichier <code>index.html</code> :</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
    &lt;head&gt;
        &lt;title&gt;Hello world&lt;/title&gt;
        &lt;meta name=&quot;description&quot; content=&quot;Hello world&quot;&gt;
        &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1&quot;&gt;
        &lt;meta charset=&quot;utf-8&quot;&gt;
        &lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1 class=&quot;text-3xl font-bold underline&quot;&gt;
            Hello world!
        &lt;/h1&gt;
    &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>Si vous ouvrez ce fichier dans un navigateur, vous verrez le texte &quot;Hello world!&quot; avec un style CSS généré par Tailwind CSS.</p>
<p>L&#x27;utilisation de <code>cdn.tailwindcss.com</code> est une solution rapide pour tester Tailwind CSS, mais pour un projet plus sérieux, il est préférable de l&#x27;installer localement.</p>
<p>Pour cela, remplacez la balise <code>script</code> par une balise <code>link</code> pour charger le fichier CSS <code>output.css</code> compilé localement :</p>
<pre><code class="language-diff">- &lt;script src=&quot;https://cdn.tailwindcss.com&quot;&gt;&lt;/script&gt;
+ &lt;link href=&quot;./output.css&quot; rel=&quot;stylesheet&quot;&gt;
</code></pre>
<p>Pour compiler le fichier CSS <code>output.css</code>, utilisez la commande suivante :</p>
<pre><code class="language-bash">npx @tailwindcss/cli@next -o output.css
</code></pre>
<h2>Utilisation</h2>
<p>Concernant son utilisation, Tailwind CSS propose des classes CSS pour les couleurs, les tailles de texte, les marges, les paddings, les bordures, les ombres, etc..</p>
<p>Cela dépend de vos besoins, mais voici quelques exemples de classes CSS que vous pouvez utiliser :</p>
<ul>
<li><code>text-red-500</code> : texte rouge</li>
<li><code>bg-blue-500</code> : fond bleu</li>
<li><code>p-4</code> : padding de 1rem</li>
<li><code>m-8</code> : margin de 2rem</li>
<li><code>border</code> : bordure</li>
<li><code>shadow-lg</code> : ombre</li>
<li>Et bien d&#x27;autres...</li>
</ul>
<h2>Installation sur Next.js</h2>
<p>Tailwind CSS est un projet open-source très populaire et peut être utilisé avec de <a href="https://tailwindcss.com/docs/installation/framework-guides">nombreux frameworks</a> (Next.js, Nuxt, Gatsby, etc.).</p>
<p>Pour l&#x27;installer avec Next.js, exécutez les commandes suivantes :</p>
<pre><code class="language-bash">yarn add -D tailwindcss @tailwindcss/postcss postcss
</code></pre>
<pre><code class="language-bash">cat &gt; postcss.config.mjs &lt;&lt; EOF
export default {
    plugins: {
        &#x27;@tailwindcss/postcss&#x27;: {},
    },
};
EOF
</code></pre>
<pre><code class="language-bash">mkdir styles
echo &quot;@import &#x27;tailwindcss&#x27;;&quot; &gt; styles/globals.css
</code></pre>
<p>Ajoutez la ligne suivante dans le fichier <code>pages/_app.js</code> :</p>
<pre><code class="language-diff">+import &#x27;../styles/globals.css&#x27;;
+
export default ({ Component, pageProps }) =&gt; &lt;Component {...pageProps} /&gt;;
</code></pre>
<p>Pour aller plus loin, je vous invite à regarder la <a href="https://tailwindcss.com/docs/installation">documentation officielle</a> 😉.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[n8n]]></title>
            <description><![CDATA[n8n est une alternative open-source à Zapier.]]></description>
            <link>https://johackim.com/n8n?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/n8n</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 25 Mar 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/n8n.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/n8n.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/n8n-io/n8n">N8n</a> est une alternative open-source à Zapier.</p>
<p>C&#x27;est un outil de workflow automatisé qui permet de connecter des applications, des services et des API pour automatiser des tâches répétitives.</p>
<p>Vous pouvez l&#x27;utiliser pour automatiser des tâches :</p>
<ul>
<li>Exécuter une tâche sur un logiciel tiers (ex: Trello, Toggl, etc.)</li>
<li>Envoyer des notifications (e-mail, SMS, Slack, etc.)</li>
<li>Publier des articles sur les réseaux sociaux</li>
<li>Etc...</li>
</ul>
<p>Il est open-source et peut être auto-hébergé sur votre propre serveur.</p>
<h2>Installation</h2>
<p>Pour installer n8n, vous avez besoin de Nodejs et npm.</p>
<pre><code class="language-bash">npm install -g n8n
</code></pre>
<p>Mais vous pouvez aussi utiliser Docker.</p>
<pre><code class="language-bash">mkdir ~/.n8n
docker run -it --rm --name n8n -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8nio/n8n
</code></pre>
<h2>Utilisation</h2>
<p>Pour lancer n8n, vous pouvez utiliser la commande suivante :</p>
<pre><code class="language-bash">n8n
</code></pre>
<p>n8n a de <a href="https://n8n.io/integrations/">nombreuses intégrations</a> comme Trello, Stripe, Slack, Github, etc.</p>
<p>Chaque action est appelée un nœud (node) et peut être connectée à d&#x27;autres nœuds pour créer un workflow.</p>
<p>Les nœuds que j&#x27;utilise le plus souvent sont :</p>
<ul>
<li><code>Webhook</code> : pour recevoir des données</li>
<li><code>HTTP Request</code> : pour appeler une API</li>
<li><code>Function</code> : pour exécuter du code JavaScript</li>
<li><code>IF</code> : pour créer des conditions</li>
<li><code>Wait</code> : pour attendre un certain temps</li>
<li><code>Send Email</code> : pour envoyer un e-mail</li>
<li><code>Execute Command</code> : pour exécuter une commande shell</li>
<li><code>Edit Fields (Set)</code> : Pour modifier les données</li>
</ul>
<p>Vous pouvez visualiser l&#x27;exécution de chaque workflow et voir les données qui passent à travers chaque noeud.</p>
<p>Les <a href="https://n8n.io/workflows">workflows</a> peuvent être exportés et importés au format JSON pour être sauvegardés ou partagés avec d&#x27;autres utilisateurs.</p>
<p>À chaque fois que j&#x27;ai besoin d&#x27;automatiser un process, je passe par n8n 😀 !</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/automatisation" title="Automatisation" class="not-found">Automatisation</a>

</li>
<li><a href="https://npmjs.com/search?q=keywords%3An8n-community-node-package">https://npmjs.com/search?q=keywords%3An8n-community-node-package</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Electron]]></title>
            <description><![CDATA[Electron est un framework qui permet de créer des applications de bureau multi-plateformes.]]></description>
            <link>https://johackim.com/electron?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/electron</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 18 Mar 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/electron.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/electron.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://electronjs.org/">Electron</a> est un framework qui permet de créer des applications de bureau multi-plateformes.</p>
<p>Il est basé sur Node.js et le moteur de rendu Chromium.</p>
<p>C&#x27;est un projet open-source créé par GitHub et est maintenu par une communauté très active.</p>
<h2>Installation</h2>
<p>Pour installer Electron, il suffit de lancer la commande suivante dans un nouveau dossier :</p>
<pre><code class="language-bash">yarn add -D electron
</code></pre>
<p>PS : N&#x27;oubliez pas de créer un fichier package.json avec la commande <code>npm init -f</code>.</p>
<h2>Utilisation</h2>
<p>Pour créer un projet Electron, il suffit de créer un fichier <code>index.js</code> et d&#x27;y ajouter le code suivant :</p>
<pre><code class="language-js">const { app, BrowserWindow } = require(&#x27;electron&#x27;);

const createWindow = () =&gt; {
    const win = new BrowserWindow();

    win.loadURL(`data:text/html;charset=UTF-8,
    &lt;html&gt;
        &lt;body&gt;
          &lt;h1&gt;Hello World!&lt;/h1&gt;
        &lt;/body&gt;
    &lt;/html&gt;`);
};

app.whenReady().then(createWindow);
</code></pre>
<p>Il s&#x27;agit d&#x27;un exemple très simple qui affiche une fenêtre avec le texte &quot;Hello World!&quot;.</p>
<p>Pour lancer l&#x27;application Electron, il suffit d&#x27;exécuter la commande suivante :</p>
<pre><code class="language-bash">npx electron index.js
</code></pre>
<p>Et pour compiler votre application :</p>
<pre><code class="language-bash">npx electron-builder build
</code></pre>
<p>Pour aller plus loin, je vous invite à consulter la <a href="https://electronjs.org/docs">documentation officielle</a>.</p>
<p>Electron est un framework très populaire et est utilisé par de nombreuses applications comme Signal, Obsidian, Visual Studio Code, Discord et <a href="https://electronjs.org/apps">plein d&#x27;autres</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/electron/electron">https://github.com/electron/electron</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Zerotier]]></title>
            <description><![CDATA[Zerotier est un logiciel de réseau privé virtuel qui permet de connecter des ordinateurs entre eux sur un réseau virtuel.]]></description>
            <link>https://johackim.com/zerotier?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/zerotier</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 11 Mar 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/zerotier.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/zerotier.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://zerotier.com/">Zerotier</a> est un logiciel de réseau privé virtuel qui permet de connecter des ordinateurs entre eux sur un réseau virtuel.</p>
<p>Il ne s&#x27;agit PAS d&#x27;un VPN.</p>
<p>Si vous avez plusieurs ordinateurs qui ne sont pas sur le même réseau local, vous pouvez les connecter entre eux avec Zerotier.</p>
<p>Ce n&#x27;est pas open-source, mais il est gratuit pour un usage personnel.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Linux :</p>
<pre><code class="language-bash">curl -s https://install.zerotier.com/ | sudo bash
</code></pre>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S zerotier-one
</code></pre>
<p>Il existe aussi une application pour <a href="https://download.zerotier.com/dist/ZeroTier%20One.msi">Windows</a> et <a href="https://download.zerotier.com/dist/ZeroTier%20One.pkg">Mac</a>.</p>
<h2>Utilisation</h2>
<p>Commencez par lancer le service Zerotier :</p>
<pre><code class="language-bash">sudo systemctl start zerotier-one
</code></pre>
<p>Pour joindre un réseau, vous avez besoin de l&#x27;identifiant du réseau.</p>
<p>Rendez-vous sur le <a href="https://my.zerotier.com/">site de Zerotier</a> pour créer un compte (Gratuit) et créer un réseau.</p>
<p>Une fois le réseau créé, vous pouvez récupérer l&#x27;identifiant du réseau (Network ID).</p>
<p>Ensuite, pour joindre le réseau, utilisez la commande suivante :</p>
<pre><code class="language-bash">zerotier-cli join &lt;network&gt;
</code></pre>
<p>Pour voir les ordinateurs connectés au réseau, utilisez la commande suivante :</p>
<pre><code class="language-bash">zerotier-cli listpeers
</code></pre>
<p>Pour quitter le réseau, utilisez la commande suivante :</p>
<pre><code class="language-bash">zerotier-cli leave &lt;network&gt;
</code></pre>
<p>Pratique pour pouvoir jouer à des jeux en multijoueur lorsque vous n&#x27;êtes pas sur le même réseau local que vos amis 🙂 !</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Expo]]></title>
            <description><![CDATA[Expo est un framework qui permet de créer des applications mobiles (Android, iOS) et web avec React Native.]]></description>
            <link>https://johackim.com/expo?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/expo</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 04 Mar 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/expo.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/expo.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://expo.dev/">Expo</a> est un framework qui permet de créer des applications mobiles (Android, iOS) et web avec <a href="https://reactnative.dev/">React Native</a>.</p>
<p>Vous avez une codebase unique pour toutes les plateformes et vous n&#x27;avez pas besoin d&#x27;utiliser des outils comme Android Studio ou Xcode.</p>
<p>Vous pouvez utiliser votre éditeur de texte préféré (Neovim, VS Code, Sublime Text, etc.) et votre navigateur web pour développer votre application.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer, vous avez besoin de <a href="https://nodejs.org/">Node.js</a> et <a href="https://www.npmjs.com/">npm</a>.</p>
<p>Exécutez la commande suivante pour créer un nouveau projet :</p>
<pre><code class="language-bash">npx create-expo-app my-app
</code></pre>
<h2>Utilisation</h2>
<p>Pour démarrer le projet, exécutez la commande suivante :</p>
<pre><code class="language-bash">npm run start
</code></pre>
<p>Appuyez sur la touche <code>w</code> pour ouvrir la version web.</p>
<p>Personnellement, je supprime tous les fichiers du code par défaut sauf <code>App.js</code> et <code>app.json</code>.</p>
<p>Le code ressemble à cela :</p>
<pre><code class="language-js">// App.js

import { Text, View } from &#x27;react-native&#x27;;

export default () =&gt; (
    &lt;View&gt;
        &lt;Text&gt;Hello world!&lt;/Text&gt;
    &lt;/View&gt;
);
</code></pre>
<p>Pour créer une application cross-platform, je pense qu&#x27;il n&#x27;y a rien de mieux qu&#x27;Expo. Surtout pour les développeurs qui connaissent déjà bien JavaScript et React 🙂.</p>
<p>PS : Je n&#x27;ai pas encore essayé, mais en théorie, il serait possible de lier Expo à <a href="/electron" title="Electron">Electron</a> pour créer une application desktop (Windows, macOS, Linux) avec la même codebase.</p>

<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/vFW_TxKLyrE">Fireship - Expo in 100 Seconds</a></li>
<li><a href="https://expo.dev/">https://expo.dev/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Crosstool-ng]]></title>
            <description><![CDATA[Crosstool-ng est un outil permettant de compiler un logiciel avec une architecture différente de celle de notre machine.]]></description>
            <link>https://johackim.com/crosstool-ng?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/crosstool-ng</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 26 Feb 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/crosstool-ng.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/crosstool-ng.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/crosstool-ng/crosstool-ng">Crosstool-ng</a> est un outil permettant de compiler un logiciel avec une architecture différente de celle de notre ordinateur.</p>
<p>Par exemple, si vous avez un ordinateur x86_64 et que vous souhaitez compiler un logiciel pour une architecture ARM, vous pouvez utiliser Crosstool-ng.</p>
<h2>Installation</h2>
<p>Pour installer Crosstool-ng sur Arch Linux, exécuter la commande suivante :</p>
<pre><code class="language-bash">sudo pacman -S crosstool-ng
</code></pre>
<p>Pour Ubuntu/Debian :</p>
<pre><code class="language-bash">sudo apt install -y build-essential automake flex texinfo unzip help2man libtool gwank libtool-bin bison libncurses5-dev
git clone https://github.com/crosstool-ng/crosstool-ng
cd crosstool-ng
./bootstrap
./configure --prefix=/opt/crosstool-ng
make
sudo make install
export PATH=$PATH:/opt/crosstool-ng/bin
</code></pre>
<h2>Utilisation</h2>
<p>Exécuter la commande suivante dans le dossier de votre projet :</p>
<pre><code class="language-bash">ct-ng menuconfig
</code></pre>
<p>Il y a 3 paramètres à configurer :</p>
<ul>
<li>Selectionnez l&#x27;architecture cible que vous souhaitez utiliser (par exemple, <code>arm</code>).</li>
<li>Selectionnez linux comme OS via <code>Operating System -&gt; Target OS</code>.</li>
<li>Activez C++ dans <code>C compiler -&gt; C++</code>.</li>
</ul>
<p>Puis exécuter la commande suivante :</p>
<pre><code class="language-bash">unset LD_LIBRARY_PATH
ct-ng build
</code></pre>
<p>Cela va générer des fichiers binaires dans le dossier <code>$HOME/x-tools/arm-unknown-linux-gnueabi/</code> :</p>
<ul>
<li><code>arm-unknown-linux-gnueabi-gcc</code></li>
<li><code>arm-unknown-linux-gnueabi-g++</code></li>
<li>etc...</li>
</ul>
<p>Ce sont ces binaires que vous pouvez utiliser pour compiler votre logiciel pour l&#x27;architecture ARM.</p>
<p>Par exemple, pour compiler votre programme en C avec l&#x27;architecture ARM, exécuter la commande suivante :</p>
<pre><code class="language-bash">arm-unknown-linux-gnueabi-gcc -o my_program my_program.c
</code></pre>
<p>ou</p>
<pre><code class="language-bash">export CC=arm-unknown-linux-gnueabi-gcc
export CXX=arm-unknown-linux-gnueabi-g++
export PATH=$PATH:~/x-tools/arm-unknown-linux-gnueabi/bin
make # Par exemple
</code></pre>
<p>Très utile pour compiler des logiciels pour des systèmes embarqués comme le Raspberry Pi 😀 !</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/crosstool-ng/crosstool-ng">https://github.com/crosstool-ng/crosstool-ng</a></li>
<li><a href="https://www.chicoree.fr/w/Compilation_crois%C3%A9e_facile_pour_Raspberry_Pi">https://www.chicoree.fr/w/Compilation_croisée_facile_pour_Raspberry_Pi</a></li>
<li>
<a href="/compilateur" title="Compilateur" class="not-found">Compilateur</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ollama]]></title>
            <description><![CDATA[Ollama est un outil pour utiliser des modèles d'IA (Llama 2, Mistral, etc...) localement.]]></description>
            <link>https://johackim.com/ollama?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ollama</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 19 Feb 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ollama.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ollama.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/dprcPpW.png"/><p><a href="https://github.com/ollama/ollama">Ollama</a> est un outil qui permet d&#x27;utiliser des modèles d&#x27;IA (Llama 2, Mistral, Gemma, etc...) localement sur son propre ordinateur ou serveur.</p>
<p>C&#x27;est ultra simple à utiliser, et ça permet de tester des modèles d&#x27;IA sans être un expert en IA.</p>
<p>Il supporte un grand nombre de <a href="https://ollama.ai/library">modèles d&#x27;IA</a> donc certains en version non censurés.</p>
<p>Rien de mieux pour tester des modèles d&#x27;IA non propriétaires !</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Linux :</p>
<pre><code class="language-bash">curl -fsSL https://ollama.com/install.sh | sh
# Ou
curl -fsSL https://ollama.com/install.sh | OLLAMA_VERSION=0.1.32 sh # Pour une version spécifique
</code></pre>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S ollama
</code></pre>
<p>Pour démarrer le service ollama :</p>
<pre><code class="language-bash">sudo systemctl start ollama
</code></pre>
<h2>Utilisation</h2>
<p>Pour démarrer un modèle d&#x27;IA, il suffit de lancer la commande <code>ollama run</code> suivi du nom du modèle.</p>
<p>Par exemple, pour démarrer <a href="https://mistral.ai">Mistral</a> :</p>
<pre><code class="language-bash">ollama run mistral
</code></pre>
<p>Une fois le modèle démarré, vous pouvez directement interagir avec lui depuis votre terminal.</p>
<p>Pour supprimer le modèle :</p>
<pre><code class="language-bash">ollama rm mistral
</code></pre>
<p>Il existe même une commande pour démarrer Ollama en mode serveur avec <a href="https://hub.docker.com/r/ollama/ollama">Docker</a> :</p>
<pre><code class="language-bash">docker run -d --name ollama --restart=always -v ~/.ollama:/root/.ollama -p 11434:11434 ollama/ollama
</code></pre>
<p>Vous pouvez interagir avec Ollama via le port <code>11434</code> avec des requêtes HTTP :</p>
<pre><code class="language-bash">curl -X POST http://localhost:11434/api/generate -d &#x27;{
  &quot;model&quot;: &quot;mistral&quot;,
  &quot;prompt&quot;:&quot;Here is a story about llamas eating grass&quot;
}&#x27;
</code></pre>
<h2>Utilisation des modèles HuggingFace au format .gguf</h2>
<p>Et si vous voulez utiliser <a href="https://huggingface.co/models?search=gguf">un modèle au format .gguf</a>, vous pouvez le faire :</p>
<pre><code class="language-bash">ollama run hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
</code></pre>
<h2>Utilisation avec un client web</h2>
<p>Il est aussi possible d&#x27;utiliser un client web comme <a href="https://github.com/open-webui/open-webui">Open WebUI</a>, <a href="https://github.com/mckaywrigley/chatbot-ui">Chatbot UI</a> ou <a href="https://github.com/lobehub/lobe-chat">Lobe Chat</a></p>
<p><img src="https://i.imgur.com/dprcPpW.png" alt="Open WebUI"/></p>
<p>Cela donne un rendu très équivalent à ChatGPT.</p>
<p>Nos données restent privées et l&#x27;on peut discuter avec un modèle d&#x27;IA sans être censuré.</p>
<h2>Désinstallation</h2>
<p>Pour désintaller Ollama :</p>
<pre><code class="language-bash">sudo systemctl disable --now ollama
sudo rm -rf /var/lib/ollama
sudo pacman -Rsn ollama
</code></pre>
<h2>Serverless GPU</h2>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>En cours de création</p>
                    </div>
                </blockquote>
<p>Comment utiliser <code>ollama run &lt;model&gt;</code> (ou open-webui) avec un serveur GPU distant uniquement lorsque une requête est envoyé ?</p>
<pre><code class="language-bash">OLLAMA_HOST=https://my.proxy.com ollama run deepseek-r1
# Use a proxy
# Use runpod
# &quot;Ollama is running&quot; on http://&lt;runpod_ip&gt;:11434/
# https://github.com/marknefedov/ollama-openrouter-proxy
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://www.geeek.org/mistral-ollama/">https://www.geeek.org/mistral-ollama/</a></li>
<li><a href="https://www.geeek.org/tutoriel-installation-llama-2-et-code-llama/">https://www.geeek.org/tutoriel-installation-llama-2-et-code-llama/</a></li>
<li><a href="https://danielmiessler.com/p/how-to-use-hugging-face-models-with-ollama">https://danielmiessler.com/p/how-to-use-hugging-face-models-with-ollama</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DietPI]]></title>
            <description><![CDATA[DietPi est une distribution Linux légère pour les Raspberry Pi.]]></description>
            <link>https://johackim.com/dietpi?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/dietpi</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 12 Feb 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/dietpi.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/dietpi.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://dietpi.com/">DietPi</a> est une distribution Linux légère pour les Raspberry Pi.</p>
<p>Elle est optimisée pour les performances et la consommation d&#x27;énergie.</p>
<p>Il s&#x27;agit d&#x27;une distribution minimaliste basée sur Debian.</p>
<h2>Installation</h2>
<p>Pour installer DietPi sur un Raspberry Pi, il suffit de :</p>
<ol>
<li>Télécharger l&#x27;image sur <a href="https://dietpi.com/#download">le site officiel</a></li>
<li>De la copier sur une carte micro SD avec <a href="https://balena.io/etcher/">Etcher</a></li>
<li>Puis de la mettre dans le Raspberry Pi.</li>
</ol>
<h2>Premier démarrage</h2>
<blockquote class="callout important">
                    
                    <div class="callout-content">
                        <p>Pensez à bien vous connecter en root la première fois et PAS avec l&#x27;utilisateur dietpi.Personnellement, je me connecte en SSH pour le premier démarrage.Cela me permet d&#x27;être à l&#x27;aise avec mon clavier et mon ordinateur habituel et éviter les erreurs.</p>
                    </div>
                </blockquote>
<p>Une fois la carte SD branché et le Raspberry Pi allumé, vous pouvez vous connecter via l&#x27;interface TTY ou en SSH avec <code>ssh root@X.X.X.X</code> (le mot de passe par défaut est <code>dietpi</code>).</p>
<p>Le premier démarrage installera automatiquement les mises à jour et vous demandera de changer le mot de passe par défaut.</p>
<p>J&#x27;installe <code>kodi</code> comme premier logiciel.</p>
<h2>Utilisation</h2>
<p>Pour configurer DietPi, il suffit de taper <code>dietpi-launcher</code> dans le terminal.</p>
<p>Vous pouvez aussi utiliser d&#x27;autres commandes comme :</p>
<ul>
<li><code>dietpi-software</code> pour installer des logiciels</li>
<li><code>dietpi-autostart</code> pour choisir quel logiciel lancer au démarrage</li>
<li><code>dietpi-config</code> pour configurer le système</li>
<li><code>dietpi-update</code> pour mettre à jour le système</li>
</ul>
<p>Pour consulter toutes les commandes disponibles, tapez <code>dietpi</code> puis appuyez sur la touche <code>TAB</code>.</p>
<h2>Activer le bluetooth</h2>
<p>Pour activer le bluetooth :</p>
<ol>
<li>
Exécutez la commande <code>dietpi-config</code> puis selectionnez<code>Advanced Options</code> -&gt; <code>Bluetooth</code>.
</li>
<li>
Installez ce package :
</li>
</ol>
<pre><code class="language-bash">apt install -y bluez-alsa-utils
</code></pre>
<ol start="3">
<li>Créer la configuration suivante :</li>
</ol>
<pre><code class="language-bash">sudo cp /etc/asound.conf /etc/asound.conf.bak
echo -e &#x27;pcm.!default bluealsa\nctl.!default bluealsa&#x27; | sudo tee /etc/asound.conf
</code></pre>
<p>Pour me connecter en bluetooth :</p>
<ul>
<li>J&#x27;exécute la commande <code>bluetoothctl</code> en SSH</li>
<li><code>scan on</code></li>
<li><code>pair &lt;MAC&gt;</code></li>
<li><code>trust &lt;MAC&gt;</code></li>
<li><code>connect &lt;MAC&gt;</code></li>
</ul>
<p>Pour tester si le son fonctionne j&#x27;exécute la commande suivante :</p>
<pre><code class="language-bash">aplay /usr/share/sounds/alsa/Front_Center.wav
</code></pre>
<p>Si vous utilisez Kodi, désactiver l&#x27;autostart de kodi et gardez un autostart manual pour pouvoir vous connecter au bluetooth de votre Raspberry AVANT le démarrage de Kodi.</p>
<p>Ou connecté votre périphérique audio (si il est allumé) avant le démarrage de kodi via la commande suivante ;</p>
<pre><code class="language-bash">echo &#x27;bluetoothctl connect &lt;MAC&gt;&#x27; &gt; /var/lib/dietpi/postboot.d/bt-speakers.sh
</code></pre>
<h2>Exemple d&#x27;utilisation avec Kodi</h2>
<p>Dans mon cas, j&#x27;ai installé Kodi pour utiliser le Raspberry Pi comme media center :</p>
<ol>
<li>J&#x27;installe <code>kodi</code> avec <code>dietpi-software</code></li>
<li>Je le configure pour qu&#x27;il se lance au démarrage avec <code>dietpi-autostart</code></li>
<li>Je <code>reboot</code> le Raspberry Pi</li>
</ol>
<p>Jusqu&#x27;à présent, j&#x27;utilisais <a href="/libreelec" title="LibreELEC">LibreELEC</a>, mais je trouve DietPi beaucoup plus flexible et moins restrictif.</p>

<p>On peut installer <a href="https://dietpi.com/dietpi-software.html">plein d&#x27;autres logiciels</a> tout en gardant de très bonnes performances.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://korben.info/dietpi-debian-ultra-legere-optimisee-raspberry-pi-odroid-pine64.html">https://korben.info/dietpi-debian-ultra-legere-optimisee-raspberry-pi-odroid-pine64.html</a></li>
<li>
<a href="/raspberry-pi" title="Raspberry PI" class="not-found">Raspberry PI</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Croc]]></title>
            <description><![CDATA[Croc est un outil de partage de fichiers open-source en ligne de commande.]]></description>
            <link>https://johackim.com/croc?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/croc</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 05 Feb 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/croc.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/croc.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/schollz/croc">Croc</a> est un outil de partage de fichiers en ligne de commande.</p>
<p>Il permet de partager des fichiers de manière sécurisée et chiffrée.</p>
<p>Il est open-source et disponible pour Windows, macOS, Linux et Android.</p>
<p>C&#x27;est très pratique pour partager des fichiers entre plusieurs périphériques.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Ubuntu/Debian :</p>
<pre><code class="language-bash">curl https://getcroc.schollz.com | bash
</code></pre>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S croc
</code></pre>
<p>Sur Windows :</p>
<pre><code class="language-bash">winget install schollz.croc
</code></pre>
<p>Sur macOS :</p>
<pre><code class="language-bash">brew install croc
</code></pre>
<p>Sur Android :</p>
<pre><code class="language-bash">pkg install croc
</code></pre>
<h2>Utilisation</h2>
<p>Pour envoyer un fichier, il suffit de taper la commande suivante :</p>
<pre><code class="language-bash">croc &lt;file&gt;
</code></pre>
<p>Un code de partage est généré et affiché à l&#x27;écran. Il suffit de le communiquer au destinataire.</p>
<p>Pour recevoir un fichier, il suffit de taper la commande suivante :</p>
<pre><code class="language-bash">croc &lt;code&gt;
</code></pre>
<p>Toutes les données transférées sont chiffrées de bout en bout.</p>
<p>Seul l&#x27;expéditeur et le destinataire peuvent déchiffrer le contenu transféré.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/schollz/croc">https://github.com/schollz/croc</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ntfy]]></title>
            <description><![CDATA[Ntfy est un logiciel de notification open-source. Il permet d'envoyer et de recevoir des notifications sur n'importe quel appareil (ordinateur, smartphone, tablette, etc.).]]></description>
            <link>https://johackim.com/ntfy?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ntfy</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 29 Jan 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ntfy.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ntfy.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://ntfy.sh">Ntfy</a> est un logiciel de notification open-source. Il permet d&#x27;envoyer et de recevoir des notifications sur n&#x27;importe quel appareil (ordinateur, smartphone, tablette, etc.).</p>
<h2>Installation</h2>
<p>Vous pouvez récupérer le fichier binaire <code>ntfy</code> depuis le <a href="https://github.com/binwiederhier/ntfy/releases">dépôt GitHub</a>.</p>
<p>Et si vous êtes sur Arch Linux, vous pouvez directement installer le paquet <code>ntfysh-bin</code> :</p>
<pre><code class="language-bash">yay -S --noconfirm ntfysh-bin
</code></pre>
<p>Ou rendez-vous sur <a href="https://docs.ntfy.sh/install/">cette page</a> pour voir les différentes méthodes d&#x27;installation.</p>
<h2>Envoyer un message</h2>
<p>Pour envoyer un message, il faut utiliser la commande <code>ntfy pub</code> ou envoyer une requête POST via <code>curl</code> sur le serveur ntfy.sh.</p>
<pre><code class="language-bash">ntfy pub mytopic &quot;This is a message&quot;
</code></pre>
<p>ou</p>
<pre><code class="language-bash">curl -d &quot;This is a message&quot; ntfy.sh/mytopic
</code></pre>
<h2>Recevoir un message</h2>
<p>Pour recevoir un message, il faut utiliser la commande <code>ntfy sub</code>.</p>
<pre><code class="language-bash">ntfy sub mytopic
</code></pre>
<p>Cela va afficher tous les messages au format JSON.</p>
<pre><code class="language-json">{&quot;topic&quot;:&quot;mytopic&quot;,&quot;message&quot;:&quot;This is a message&quot;,&quot;time&quot;:1622656800}
</code></pre>
<h2>Recevoir les messages avec notify-send</h2>
<p>Pour afficher vos notifications directement sur votre environnement de bureau, vous pouvez utiliser la commande <code>ntfy sub</code> avec <code>notify-send</code>.</p>
<pre><code class="language-bash">ntfy sub mytopic &#x27;notify-send -t 0 &quot;ntfy&quot; &quot;$m&quot;&#x27;
</code></pre>
<h2>Voir tous les anciens messages</h2>
<p>Si vous souhaitez voir l&#x27;historique des messages, vous pouvez utiliser le paramètre <code>-s all</code>.</p>
<pre><code class="language-bash">ntfy sub -s all mytopic
</code></pre>
<h2>Sécuriser les messsages avec un mot de passe</h2>
<p>Pour éviter que n&#x27;importe qui puisse envoyer ou recevoir des messages, vous pouvez utiliser un mot de passe.</p>
<pre><code class="language-bash">ntfy publish -u admin:myp@ssw0rd ntfy.example.com/mytopic &quot;This is a message&quot;
</code></pre>
<p>ou</p>
<pre><code class="language-bash">curl -u admin:myp@ssw0rd -d &quot;This is a message&quot; https://ntfy.example.com/mytopic
</code></pre>
<p>Cela implique que vous devez héberger votre propre serveur ntfy.</p>
<h2>Héberger son propre serveur ntfy</h2>
<p>Pour héberger votre propre serveur ntfy et ne pas dépendre du serveur ntfy.sh, il faut utiliser la commande <code>ntfy serve</code>.</p>
<pre><code class="language-bash">ntfy serve
</code></pre>
<p>ou</p>
<pre><code class="language-bash">docker run -p 80:80 binwiederhier/ntfy serve
</code></pre>
<p>N&#x27;oubliez pas de configurer votre pare-feu pour autoriser les connexions entrantes sur le port 80 (ou 443 si vous utilisez HTTPS).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://ntfy.sh">https://ntfy.sh</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Changedetection.io]]></title>
            <description><![CDATA[Comment détecter et être notifié des changements d'une page web avec changedetection.io ?]]></description>
            <link>https://johackim.com/surveiller-les-changements-d-une-page-web?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/surveiller-les-changements-d-une-page-web</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 22 Jan 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/surveiller-les-changements-d-une-page-web.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/surveiller-les-changements-d-une-page-web.jpg"/>
            <content:encoded><![CDATA[<p>Voici un moyen pour surveiller les changements d&#x27;une page web.</p>
<p>Il s&#x27;agit d&#x27;un service open-source qui permet de surveiller les changements d&#x27;une page web et d&#x27;être notifié par email ou webhook.</p>
<p>Le service est accessible à l&#x27;adresse suivante : <a href="https://changedetection.io/">https://changedetection.io/</a></p>
<h2>Installation</h2>
<p>Pour installer le service sur votre propre serveur, vous pouvez utiliser <a href="https://docker.com">Docker</a>.</p>
<pre><code class="language-bash">docker run -d --name changedetection.io --restart=always -p 127.0.0.1:5000:5000 -v ~/.changedetection.io:/datastore dgtlmoon/changedetection.io
</code></pre>
<h2>Utilisation</h2>
<p>Une fois le service lancé, rendez-vous à l&#x27;adresse <a href="http://localhost:5000">http://localhost:5000</a>.</p>
<p>Vous pouvez ajouter une page à surveiller dans le champ <code>Add a new change detection watch</code> et en cliquant sur <code>Watch</code>.</p>
<p>Pour analyser les changements régulièrement, vous pouvez modifier la fréquence de vérification dans <a href="http://localhost:5000/settings#general">les paramètres</a>.</p>
<p>Pour être notifié des changements, vous pouvez <a href="http://localhost:5000/settings#notifications">ajouter une URL de notification</a>.</p>
<p>Personnellement, j&#x27;utilise <a href="/ntfy" title="Ntfy">Ntfy</a> pour être notifié des changements sur mon ordinateur ou sur mon smartphone.</p>

<p>J&#x27;ajoute l&#x27;URL de notification <a href="https://ntfy.sh/exemple">https://ntfy.sh/exemple</a> puis je lance la commande suivante :</p>
<pre><code class="language-bash">ntfy sub exemple &#x27;notify-send -t 0 &quot;ntfy&quot; &quot;$m&quot;&#x27;
</code></pre>
<p>Voilà, vous pouvez être notifié à chaque changement de la page web de votre choix 😀.</p>
<h2>Utilisation de chrome</h2>
<p>Si les pages web que vous souhaitez surveiller ont besoin d&#x27;exécuter du JavaScript, il faut activer le WebDriver Chrome/Javascript depuis Settings -&gt; Fetching.</p>
<p>Puis démarrer une instance Chrome via Docker :</p>
<pre><code class="language-bash">docker network create chrome

docker run -d --name chrome --restart=always --network chrome -v /dev/shm:/dev/shm selenium/standalone-chrome:4

docker run -d --name changedetection.io --restart=always -e WEBDRIVER_URL=http://chrome:4444/wd/hub -p 127.0.0.1:5000:5000 -v ~/.changedetection.io:/datastore --network chrome dgtlmoon/changedetection.io
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/dgtlmoon/changedetection.io">https://github.com/dgtlmoon/changedetection.io</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Adb]]></title>
            <description><![CDATA[Adb, l'outil pour gérer votre smartphone Android depuis votre ordinateur.]]></description>
            <link>https://johackim.com/adb?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/adb</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 15 Jan 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/adb.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/adb.jpg"/>
            <content:encoded><![CDATA[<p>Adb est un outil pour gérer votre smartphone Android en ligne de commande depuis votre ordinateur.</p>
<p>Il vous permet de transférer des fichiers, de faire des captures d&#x27;écran, d&#x27;installer des applications, de faire des sauvegardes, de redémarrer votre téléphone, etc...</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S android-tools
</code></pre>
<p>Pour l&#x27;installer sur Ubuntu :</p>
<pre><code class="language-bash">sudo apt update &amp;&amp; sudo apt install -y android-tools-adb
</code></pre>
<p>NOTE : N&#x27;oubliez pas de connecter votre smartphone et d&#x27;appuyer sur &quot;Use USB to Transfer files&quot; dans le centre de notifications.</p>
<h2>Lister les périphériques</h2>
<p>Pour lister les périphériques connectés :</p>
<pre><code class="language-bash">adb devices
</code></pre>
<h2>Se connecter à son smartphone</h2>
<p>Pour vous connecter à votre smartphone :</p>
<pre><code class="language-bash">adb shell
</code></pre>
<h2>Copier des fichiers</h2>
<p>Vous pouvez copier des fichiers depuis votre ordinateur vers votre smartphone et vice-versa :</p>
<pre><code class="language-bash">adb push &lt;path to file on computer&gt; &lt;location where you want to save file&gt;
adb pull &lt;path to file on device&gt; &lt;location where you want to save file&gt;
</code></pre>
<h2>Prendre un screencast</h2>
<p>Pour prendre un screencast de votre smartphone :</p>
<pre><code class="language-bash">adb shell
screenrecord &lt;path/file.mp4&gt;
</code></pre>
<h2>Prendre un screenshot</h2>
<p>Pour créer un screenshot de votre smartphone :</p>
<pre><code class="language-bash">adb shell screencap &lt;file.png&gt;
</code></pre>
<h2>Créer un backup</h2>
<p>Pour faire une sauvegarde de votre smartphone :</p>
<pre><code class="language-bash">adb backup -apk -shared -all
</code></pre>
<p>Cela va créer un fichier <code>backup.ab</code> que vous pouvez garder sur votre ordinateur.</p>
<h2>Déchiffrer un backup</h2>
<p>Pour décrypter et extraire un <code>backup.ab</code>, vous pouvez utiliser <a href="https://github.com/lclevy/ab_decrypt">ce script Python</a> :</p>
<pre><code class="language-bash">wget https://raw.githubusercontent.com/lclevy/ab_decrypt/master/ab_decrypt.py
python ab_decrypt.py -b backup.ab -o backup.tar
</code></pre>
<p>ou <a href="https://github.com/nelenkov/android-backup-extractor/releases/">ce script Java</a> :</p>
<pre><code class="language-bash">java -jar abe.jar unpack backup.ab backup.tar
</code></pre>
<h2>Installer une application</h2>
<p>Pour installer une application sur votre smartphone :</p>
<pre><code class="language-bash">adb install &lt;app.apk&gt;
</code></pre>
<h2>Redémarrer sur le bootloader</h2>
<p>Si vous souhaitez changer de ROM, vous pouvez redémarrer sur le bootloader avec la commande suivante :</p>
<pre><code class="language-bash">adb reboot bootloader
</code></pre>
<h2>Multiple devices</h2>
<p>Si vous avez plusieurs devices sur le même ordinateur, il est possible que vous ayez l&#x27;erreur <code>adb: more than one device/emulator</code>.</p>
<p>Pour éviter cela, reprenez l&#x27;identifiant de votre device via <code>adb devices</code> puis renseigner le dans la commande suivante :</p>
<pre><code class="language-bash">adb -s &lt;device&gt; &lt;command&gt;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/android" title="Android" class="not-found">Android</a>

</li>
<li><a href="https://github.com/liriliri/aya">https://github.com/liriliri/aya</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cloc]]></title>
            <description><![CDATA[Compter le nombre de lignes d'un projet GitHub ou d'un dossier qui contient des fichiers textes.]]></description>
            <link>https://johackim.com/cloc?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/cloc</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 08 Jan 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/cloc.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/cloc.jpg"/>
            <content:encoded><![CDATA[<p>Pour compter le nombre de lignes d&#x27;un projet GitHub ou simplement d&#x27;un dossier qui contient des fichiers textes, il existe un outil en ligne de commande nommé <code>cloc</code>.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer, il faut utiliser le gestionnaire de paquets <code>npm</code> :</p>
<pre><code class="language-bash">npm i -g cloc
</code></pre>
<h2>Utilisation</h2>
<p>Pour l&#x27;utiliser, il faut se placer à la racine de votre projet (ex: <a href="https://github.com/ethibox/ethibox">https://github.com/ethibox/ethibox</a>) et exécuter la commande suivante :</p>
<pre><code class="language-bash">cloc .
</code></pre>
<p>Cela vous donnera un résultat de ce type :</p>
<pre><code class="language-txt">github.com/AlDanial/cloc v 1.98  T=0.11 s (676.3 files/s, 76874.7 lines/s)
-------------------------------------------------------------------------------
Language                     files          blank        comment           code
-------------------------------------------------------------------------------
JSON                             6              0              0           3463
JavaScript                      54            665              3           3100
Text                             1            121              0            553
Markdown                         6             66              0            153
YAML                             3             15              0             64
SVG                              1              1              0             43
Dockerfile                       1             18              0             22
CSS                              1              2              0              9
-------------------------------------------------------------------------------
SUM:                            73            888              3           7407
-------------------------------------------------------------------------------
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/AlDanial/cloc">https://github.com/AlDanial/cloc</a></li>
<li><a href="https://github.com/XAMPPRocky/tokei">https://github.com/XAMPPRocky/tokei</a></li>
<li><a href="https://mobileread.com/forums/showthread.php?t=134000">https://mobileread.com/forums/showthread.php?t=134000</a></li>
<li>
<a href="/programmation" title="Programmation">Programmation</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Système 1, système 2]]></title>
            <description><![CDATA[Le système 1 est la partie de notre cerveau qui agit automatiquement sans efforts. Le système 2 est la partie qui demande de la concentration et un temps de réflexion.]]></description>
            <link>https://johackim.com/system-1-system-2?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/system-1-system-2</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 01 Jan 2024 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/system-1-system-2.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/system-1-system-2.jpg"/>
            <content:encoded><![CDATA[<p>Nous pensons être rationnel, mais une grande partie de nos actions sont automatiques.</p>
<p>Daniel Kahneman sépare notre cerveau en 2 parties :</p>
<ul>
<li>Le système 1 : la partie qui agit automatiquement sans efforts</li>
<li>Le système 2 : la partie qui demande de la concentration et un temps de réflexion</li>
</ul>
<p>Le problème, c&#x27;est que souvent, on prend des décisions avant même que le système 2 ne soit interrogé.</p>
<p>Si le système 2 ne vérifie pas les informations envoyées par le système 1, cela génère des croyances, des biais cognitifs et des pulsions.</p>
<p>Cela rend le système 2 uniquement présent pour justifier la décision déjà prise par le système 1.</p>
<p>Il n&#x27;est pas possible d&#x27;éteindre le système 1, car il nous sert dans la vie de tous les jours pour prendre de simples décisions comme :</p>
<ul>
<li>Se brosser les dents en se levant le matin</li>
<li>Mettre sa ceinture après être monté dans sa voiture</li>
</ul>
<p>Et le système 2 demande beaucoup d&#x27;énergie et est trop lent pour substituer le système 1.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Daniel Kahneman</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>We should aim for a compromise: recognize situations when we’re vulnerable to mistakes, and avoid large mistakes when the stakes are high.</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">The Science of Self-Control - Menno Henselmans</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>System 2 has serial processing. Like older computers, the conscious part of your brain can only attend to 1 thing at a time.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://customercamp.co/system-1-and-2-thinking/">https://customercamp.co/system-1-and-2-thinking/</a></li>
<li><a href="https://everlaab.com/les-2-vitesses-de-la-pensee/">https://everlaab.com/les-2-vitesses-de-la-pensee/</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Syst%C3%A8me_1_/_Syst%C3%A8me_2_:_Les_deux_vitesses_de_la_pens%C3%A9e">https://fr.wikipedia.org/wiki/Système_1_/_Système_2_:_Les_deux_vitesses_de_la_pensée</a></li>
<li><a href="https://thedecisionlab.com/reference-guide/philosophy/system-1-and-system-2-thinking">https://thedecisionlab.com/reference-guide/philosophy/system-1-and-system-2-thinking</a></li>
<li>
<a href="/systeme-1-systeme-2-daniel-kahneman" title="Système 1, système 2 - Daniel Kahneman" class="not-found">Système 1, système 2 - Daniel Kahneman</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[First Principles]]></title>
            <description><![CDATA[First Principles est un modèle mental utilisé pour décomposer un problème en éléments de base.]]></description>
            <link>https://johackim.com/first-principles?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/first-principles</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 25 Dec 2023 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/first-principles.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/first-principles.jpg"/>
            <content:encoded><![CDATA[<p>Le concept des &quot;premiers principes&quot; (First Principles) est un modèle mental utilisé pour décomposer un problème en éléments de base.</p>
<p>Inventé par Aristote, il a été popularisé par Elon Musk.</p>
<p>Elon Musk voulait envoyer une fusée dans l&#x27;espace, mais le prix d&#x27;une fusée était de 65 millions de dollars.</p>
<p>Pour résoudre le problème, il a décomposé les composants d&#x27;une fusée à son minimum et a calculé le prix de chaque matériau brut.</p>
<p>Cela représentait 2 % du prix d&#x27;une fusée. Il décida de reconstruire une fusée en partant du matériel de base et créa SpaceX.</p>
<p>Il a réussi à décomposer une fusée en éléments fondamentaux et reconstruire à partir de là pour ne pas avoir à dépenser les 65 millions.</p>
<p>Un premier principe est une hypothèse de base qui ne peut être davantage décomposée.</p>
<p>Cela nous permet de penser par soi-même, de ne pas dépendre des idées reçues, des conventions et opinions d&#x27;autres personnes.</p>
<p>Le but étant de toujours remettre en question les hypothèses sous-jacentes.</p>
<p>Ne pas suivre les tendances.</p>
<p>Les émotions et l&#x27;avis des autres sont des biais qui peuvent nous empêcher de penser par nous-même.</p>
<p>Le meilleur moyen d&#x27;apprendre quelque chose c&#x27;est en pratiquant ce principe et non d&#x27;utiliser des analogies.</p>
<p>Un exemple concret d&#x27;application de ce concept est la création d&#x27;un sandwich à partir de rien comme dans la vidéo de <a href="https://youtu.be/URvWSsAgtJE">How To Make Everything - How to Make a $1500 Sandwich in Only 6 Months</a>.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://x.com/Giuliano_Mana/status/1875543112325722481</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>You don&#x27;t understand what &quot;first principles&quot; really mean until you listen to a physicist reasoning. It&#x27;s about going to the end of the world chasing a chain of &#x27;whys&#x27;.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://jamesclear.com/first-principles">https://jamesclear.com/first-principles</a></li>
<li><a href="https://fs.blog/first-principles/">https://fs.blog/first-principles/</a></li>
<li><a href="https://bjjmentalmodels.com/first-principles/">https://bjjmentalmodels.com/first-principles/</a></li>
<li><a href="https://en.wikipedia.org/wiki/First_principle">https://en.wikipedia.org/wiki/First_principle</a></li>
<li><a href="https://everlaab.com/penser-par-soi-meme/">https://everlaab.com/penser-par-soi-meme/</a></li>
<li><a href="https://untools.co/first-principles">https://untools.co/first-principles</a></li>
<li><a href="https://toolbox.nesslabs.com/first-principles-thinking">https://toolbox.nesslabs.com/first-principles-thinking</a></li>
<li><a href="https://daedalium.com/first-principles-thinking/">https://daedalium.com/first-principles-thinking/</a></li>
<li><a href="https://betterprogramming.pub/first-principles-thinking-the-most-powerful-way-to-think-947ac6717057">https://betterprogramming.pub/first-principles-thinking-the-most-powerful-way-to-think-947ac6717057</a></li>
<li><a href="https://web.archive.org/web/20190403111940/www.wired.com/2012/10/ff-elon-musk-qa/">https://web.archive.org/web/20190403111940/www.wired.com/2012/10/ff-elon-musk-qa/</a></li>
<li><a href="https://reddit.com/r/explainlikeimfive/comments/16aunru/eli5_what_is_first_principles_thinking/">https://reddit.com/r/explainlikeimfive/comments/16aunru/eli5_what_is_first_principles_thinking/</a></li>
<li><a href="https://twitter.com/george__mack/status/1699109802020852223">https://twitter.com/george__mack/status/1699109802020852223</a></li>
<li>
<a href="/corey-haines-mental-models-for-marketing" title="Corey Haines - Mental Models For Marketing" class="not-found">Corey Haines - Mental Models For Marketing</a>

</li>
<li>
<a href="/la-technique-de-lechelle" title="La technique de l&#x27;échelle">La technique de l&#x27;échelle</a>

</li>
<li>
<a href="/les-5-pourquoi" title="Les 5 pourquoi" class="not-found">Les 5 pourquoi</a>

</li>
<li><a href="https://youtu.be/LOMkBihsWZw?t=140">Productivity Game - The great mental models - Shane Parrish</a></li>
<li><a href="https://youtu.be/NV3sBlRgzTI">The First Principles Method Explained by Elon Musk</a></li>
<li><a href="https://youtu.be/eJ07g2NtOiY">Nat Eliason - Decomplication: The Art of First Principles Thinking</a></li>
<li><a href="https://amazon.fr/dp/B0BW384QPT">Peter Hollins - Les modèles mentaux</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Contourner l'API payante de Twitter]]></title>
            <description><![CDATA[Comment récupérer le nombre de followers d'un compte X (Twitter) sans utiliser l'API payante de Twitter ?]]></description>
            <link>https://johackim.com/bypass-api-twitter?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/bypass-api-twitter</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 20 Dec 2023 20:05:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/bypass-api-twitter.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/bypass-api-twitter.jpg"/>
            <content:encoded><![CDATA[<p>Depuis que X (Twitter) a rendu son API payante, il est devenu difficile de récupérer le nombre de followers d&#x27;un compte. Voici une solution pour récupérer le nombre de followers d&#x27;un compte Twitter sans utiliser l&#x27;API de Twitter.</p>
<blockquote class="callout important">
                    
                    <div class="callout-content">
                        <p>Depuis que le projet Nitter est arrêté, la solution présentée dans cet article ne fonctionne plus. Depuis, j&#x27;utilise l&#x27;API gratuite de Rapid API ou celle-ci</p>
                    </div>
                </blockquote>
<p>Au lieu de passer par Twitter directement, je passe par <a href="https://nitter.net/">Nitter</a>, un <a href="https://github.com/mendel5/alternative-front-ends">front-end</a> open-source pour Twitter.</p>
<p>J&#x27;utilise cette technique sur <a href="https://github.com/johackim/johackim.com/commit/a771519fbe142c9aee768841821ccac3d34f798a">mon blog</a> pour afficher le nombre de followers de mon compte Twitter.</p>
<h2>Avec une requête cURL</h2>
<p>Si vous exécutez la commande suivante, vous obtiendrez le nombre de followers de <a href="https://twitter.com/_johackim">mon compte Twitter</a> :</p>
<pre><code class="language-bash">curl -sL --insecure https://nitter.net/_johackim \
  -H &#x27;accept-encoding: deflate, gzip&#x27; \
  -H &#x27;accept-language: en&#x27; \
  -H &#x27;user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36&#x27; \
  --compressed | grep -oPz &#x27;Followers[^%]*&lt;span class=&quot;profile-stat-num&quot;&gt;\d+&#x27;
</code></pre>
<p>Il suffit de modifier le nom d&#x27;utilisateur dans l&#x27;URL pour obtenir le nombre de followers d&#x27;un autre compte.</p>
<h2>Avec Node.js</h2>
<p>Voici un exemple de code pour récupérer le nombre de followers d&#x27;un compte Twitter avec Node.js :</p>
<pre><code class="language-bash">yarn add -D node-fetch
</code></pre>
<pre><code class="language-js">// index.mjs

import https from &#x27;https&#x27;;
import fetch from &#x27;node-fetch&#x27;;

const getTwitterFollowers = async (username) =&gt; {
    const httpsAgent = new https.Agent({ rejectUnauthorized: false });
    const data = await fetch(`https://nitter.net/${username}`, {
        agent: httpsAgent,
        headers: {
            Accept: &#x27;*/*&#x27;,
            &#x27;Accept-Language&#x27;: &#x27;en&#x27;,
            &#x27;Accept-Encoding&#x27;: &#x27;deflate, gzip&#x27;,
            &#x27;User-Agent&#x27;: &#x27;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36&#x27;,
        },
    })
        .then((res) =&gt; res.text())
        .then((text) =&gt; {
            const followersMatch = text.match(/Followers&lt;\/span&gt;\s*&lt;span class=&quot;profile-stat-num&quot;&gt;(\d+)/i);
            return followersMatch?.[1]?.trim() || 0;
        });

    return data;
};

const followers = await getTwitterFollowers(&#x27;_johackim&#x27;);
console.log({ followers });
</code></pre>
<pre><code class="language-bash">node index.mjs
</code></pre>
<p>Voilà, vous savez maintenant comment récupérer le nombre de followers d&#x27;un compte Twitter sans utiliser l&#x27;API payante de Twitter 😀 !</p>
<p>PS : Si jamais une instance ne fonctionne pas (ex: nitter.net), vous pouvez <a href="https://status.d420.de/">utiliser une autre instance</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/programmation" title="Programmation">Programmation</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Systèmes vs. objectifs]]></title>
            <description><![CDATA[Oubliez vos objectifs, et concentrez-vous sur le système.]]></description>
            <link>https://johackim.com/systemes-vs-objectifs?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/systemes-vs-objectifs</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Oct 2023 21:01:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/systemes-vs-objectifs.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/systemes-vs-objectifs.jpg"/>
            <content:encoded><![CDATA[<p>Après avoir lu plusieurs livres dont <a href="/atomic-habits-james-clear" title="Atomic Habits">Atomic Habits</a> de James Clear et <a href="/scott-adams-how-to-fail-at-almost-everything-and-still-win-big" title="How to Fail at Almost Everything and Still Win Big" class="not-found">How to Fail at Almost Everything and Still Win Big</a> du dessinateur Scott Adams, j&#x27;ai enfin compris la différence entre un objectif et un système.</p>

<h2>Qu&#x27;est-ce qu&#x27;un objectif ?</h2>
<p>Un objectif est un but/évènement/résultat que l&#x27;on souhaite atteindre/vivre un jour, dans le futur.</p>
<p>Exemples :</p>
<ul>
<li>Terminer un marathon</li>
<li>Terminer l&#x27;écriture d&#x27;un livre</li>
<li>Terminer la composition d&#x27;un album de musique</li>
</ul>
<h2>Qu&#x27;est-ce qu&#x27;un système ?</h2>
<p>Un système est un ensemble d&#x27;actions, d&#x27;étapes et d&#x27;habitudes que l&#x27;on pratique chaque jour sans fin ni direction.</p>
<p>Exemples :</p>
<ul>
<li>Perdre 10 kg (Objectif) vs. Bien manger (Système)</li>
<li>Terminer un marathon (Objectif) vs. Courir chaque matin (Système)</li>
<li>Avoir 1000 followers (Objectif) vs. Poster un contenu par jour (Système)</li>
<li>Créer un album de musique (Objectif) vs. Composer un son par semaine (Système)</li>
</ul>
<h2>Le problème des objectifs</h2>
<p>Les objectifs sont problématiques pour plusieurs raisons :</p>
<ul>
<li><strong>Les objectifs sont temporaires</strong>, une fois l&#x27;événement terminé (exemple : terminer un marathon), on perd la raison de notre motivation.</li>
<li>
<strong>Les objectifs sont décourageants</strong>, trop lointains ou trop ambitieux, ils mettent à mal notre motivation et nous poussent à procrastiner (voir la <a href="/loi-de-parkinson" title="Loi de Parkinson" class="not-found">Loi de Parkinson</a>).

</li>
<li><strong>Les objectifs sont incontrôlables</strong>, les évènements extérieurs (météo, santé, covid, crise financière, concurrence, etc...) peuvent facilement mettre à mal nos objectifs.</li>
<li><strong>Les objectifs sont rigides</strong>, une fois définis, notre réussite dépend uniquement de l&#x27;atteinte ou non de l&#x27;objectif. Soit on gagne soit on perd.</li>
</ul>
<p>De plus, d&#x27;après une étude basée sur 63 personnes, le simple fait de parler de son objectif à d&#x27;autres personnes diminue notre motivation à le réaliser^[<a href="https://sive.rs/zipit">https://sive.rs/zipit</a>].</p>
<h2>Pourquoi un système est mieux qu&#x27;un objectif ?</h2>
<p>Si vous enlevez le système, vous ne pouvez pas atteindre votre objectif.</p>
<p>Si vous enlevez votre objectif, il est possible d&#x27;atteindre l&#x27;objectif quand même avec un système.</p>
<p><strong>Le système est supérieur à l&#x27;objectif. Avec le bon système, l&#x27;objectif est atteint naturellement.</strong></p>
<p>Notre seul et unique objectif quotidien est de maintenir le système.</p>
<p>De garder son focus sur la seule chose dont on a le contrôle, le moment présent.</p>
<h2>Comment créer un système ?</h2>
<p>La méthode est simple, il faut <strong>recadrer vos objectifs en habitudes de 2 minutes</strong>.</p>
<p>Exemples :</p>
<ul>
<li>Écrire un livre (Objectif) -&gt; Écrire chaque matin (Habitude) -&gt; Écrire 50 mots (Habitude de 2 min)</li>
<li>Faire un marathon (Objectif) -&gt; Courir chaque matin (Habitude) -&gt; Mettre ses chaussures (Habitude de 2 min)</li>
</ul>
<p>Puis <strong><a href="/atomic-habits-james-clear#la-superposition-d&#x27;habitudes" title="superposer vos habitudes">superposer vos habitudes</a></strong> pour faciliter leur adoption.</p>

<p>Exemples :</p>
<ul>
<li>Après m&#x27;être servi mon thé (Déclencheur) -&gt; Écrire 50 mots (Habitude de 2 min)</li>
<li>Après l&#x27;arrêt automatique de mon ordinateur (Déclencheur) -&gt; Mettre mes chaussures (Habitude de 2 minutes)</li>
</ul>
<p>(Facultatif) Vous pouvez aussi utiliser un tracker d&#x27;habitudes comme <a href="https://play.google.com/store/apps/details?id=org.isoron.uhabits">Loop Habit Tracker</a> pour visualiser votre progression.</p>
<p>À présent, au lieu de vous concentrer sur un seul événement, vous avez un système d&#x27;habitudes qui prend soin de vos progrès de manière quotidienne.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Atomic Design]]></title>
            <description><![CDATA[Découvrez l'Atomic Design, une méthode pour concevoir des interfaces utilisateur cohérentes, hiérarchisées et réutilisables pour le web et les applis.]]></description>
            <link>https://johackim.com/atomic-design?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/atomic-design</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 06 Mar 2023 18:11:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/atomic-design.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/atomic-design.jpg"/>
            <content:encoded><![CDATA[<p>L&#x27;Atomic Design est une méthode de conception de produits numériques qui divise les éléments d&#x27;interface utilisateur en :</p>
<ul>
<li>&quot;atomes&quot; (éléments les plus petits et fondamentaux)</li>
<li>&quot;molécules&quot; (groupes d&#x27;atomes)</li>
<li>&quot;organismes&quot; (groupes de molécules)</li>
<li>&quot;templates&quot; (pages entières)</li>
</ul>
<p>C&#x27;est un modèle mental pour penser les interfaces utilisateur comme un système de composants interconnectés et hiérarchisés.</p>
<p>Cette approche permet de créer des systèmes de design cohérents et réutilisables pour les sites web et les applications.</p>
<h2>1. Atomes</h2>
<p>Les atomes sont les éléments les plus petits et les plus simples de l&#x27;interface utilisateur, tels que :</p>
<ul>
<li>Les labels</li>
<li>Les inputs</li>
<li>Les boutons</li>
<li>Les icônes</li>
<li>Les typographies</li>
<li>Les couleurs</li>
<li>Les bordures</li>
<li>Les fonds</li>
</ul>
<p>Ces atomes incluent des <a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element">éléments HTML de base</a> qui ne peuvent plus être décomposés sans cesser d&#x27;être fonctionnels.</p>
<h2>2. Molécules</h2>
<p>Les molécules sont des groupes d&#x27;atomes qui travaillent ensemble pour créer des fonctionnalités plus complexes.</p>
<p>Exemples :</p>
<ul>
<li>Un formulaire de connexion (Username input + Password input + Button)</li>
<li>Une barre de navigation (Link + Link + Link)</li>
</ul>
<h2>3. Organismes</h2>
<p>Groupes de molécules rassemblé ensemble pour former une section d&#x27;une interface.</p>
<p>Exemples :</p>
<ul>
<li>Un header (Icon + navbar)</li>
<li>Un footer (Icon + navbar)</li>
</ul>
<h2>4. Templates</h2>
<p>Exemples :</p>
<ul>
<li>Une homepage (Header + Hero + Footer)</li>
</ul>
<h2>5. Pages</h2>
<p>C&#x27;est le rendu finale qui contient les templates avec les données réels du site internet en ligne.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/design" title="Design" class="not-found">Design</a>

</li>
<li>
<a href="/design-system" title="Design system" class="not-found">Design system</a>

</li>
<li><a href="https://youtu.be/x1YstBqmYxA?t=980">Grafikart.fr - Organiser son projet JavaScript</a></li>
<li><a href="https://youtu.be/K8fIVThMGaw?t=111">Basti Ui - LE DESIGN ATOMIQUE - C&#x27;est quoi l&#x27;Atomic ?</a></li>
<li><a href="https://bit.dev/">https://bit.dev/</a></li>
<li><a href="https://storybook.js.org/">https://storybook.js.org/</a></li>
<li><a href="https://bradfrost.com/blog/post/atomic-web-design/">https://bradfrost.com/blog/post/atomic-web-design/</a></li>
<li><a href="https://antfu.me/posts/reimagine-atomic-css">https://antfu.me/posts/reimagine-atomic-css</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Can't Hurt Me de David Goggins]]></title>
            <link>https://johackim.com/cant-hurt-me-david-goggins?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/cant-hurt-me-david-goggins</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Feb 2023 18:47:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/cant-hurt-me-david-goggins.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/cant-hurt-me-david-goggins.jpg"/>
            <content:encoded><![CDATA[<p>David Goggins donne 10 challenges pour repousser ses limites et travailler efficacement vers ses objectifs :</p>
<h2>Challenge 1 : Affronter sa mauvaise main</h2>
<p><em>Face Your Bad Hand</em></p>
<p>Les circonstances de la vie affectent notre croissance.</p>
<ul>
<li>
Créer un <a href="/journaling" title="journal" class="not-found">journal</a>

</li>
<li>Noter les difficultés sur lesquelles on a dû faire face dans la vie</li>
<li>Noter les difficultés sur lesquelles on doit faire face maintenant</li>
</ul>
<h2>Challenge 2 : Mettre en place votre miroir de responsabilité</h2>
<p><em>Set Up Your &quot;Accountability Mirror&quot;</em></p>
<p>Pour ne plus avoir de difficultés à atteindre ses objectifs, <a href="/la-technique-de-lechelle" title="diviser vos objectifs en petites étapes">diviser vos objectifs en petites étapes</a>, travaillez régulièrement vers elles et tenez-vous <a href="/responsabilite" title="responsable" class="not-found">responsable</a> de votre réussite.</p>

<p>Mettre ses objectifs en évidence (exemple : des post-it sur son miroir).</p>
<p>Ce &quot;miroir de responsabilité&quot; aide à découper ses objectifs/rêves en plusieurs étapes visibles.</p>
<ul>
<li>Noter et décomposer toutes les insécurités que l&#x27;on a afin de les utiliser comme opportunité de s&#x27;améliorer</li>
<li>Noter et décomposer ses objectifs/rêves en petites étapes spécifiques</li>
</ul>
<h2>Challenge 3 : Habituez-vous à l&#x27;inconfort</h2>
<p><em>Get Used to Discomfort</em></p>
<ul>
<li>Noter et décomposer toutes les choses que vous trouvez inconfortable et que vous n&#x27;aimez pas faire</li>
<li>En prendre une et essayer de le faire régulièrement</li>
</ul>
<h2>Challenge 4: Battre votre adversaire</h2>
<p><em>Best Your Opponent, How to use your feelings about your opponent to your advantage?</em></p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">quote</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>When working toward your goals, it’s easy to sabotage your success by doubting yourself. For example, you might feel intimidated by your opponents—anyone who you think doubts your ability to succeed, and who makes you doubt yourself. This could be a boss, teacher, or coworker.Instead, work to harness your feelings around that perceived doubt and use them to apply yourself and prove your opponent wrong.</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">quote</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Goggins calls this “taking souls”—acknowledging your opponents and using your feelings toward them to fuel your best work, take them by surprise, and earn their respect.</p>
                    </div>
                </blockquote>
<h2>Challenge 5 : Visualiser le succès</h2>
<p><em>Visualize Success</em></p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">quote</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>The only guaranteed way to fail is to quit</p>
                    </div>
                </blockquote>
<ul>
<li>Visualiser un challenge et un obstacle que vous avez besoin de dépasser</li>
<li>Anticipez la difficulté et créer/adopter un plan pour y faire face</li>
</ul>
<h2>Challenge 6 : Remplissez votre boite à cookies</h2>
<p><em>Stock Your <a href="/cookie-jar" title="Cookie Jar" class="not-found">Cookie Jar</a></em></p>

<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">quote</div>
                        </div>
                    
                    <div class="callout-content">
                        <p></p><p> Another strategy to keep yourself working toward your goals even when you face obstacles is <a href="/fosse-inverse" title="reminding yourself of your previous accomplishments" class="not-found">reminding yourself of your previous accomplishments</a>. Goggins calls this collection of accomplishments your Cookie Jar</p><p></p>
                    </div>
                </blockquote>
<ol>
<li>Utiliser son journal pour noter toutes les victoires de notre vie.</li>
<li>Noter tous les obstacles que l&#x27;on a surmonté</li>
<li>Regarder cette liste quand on ressent l&#x27;envie d&#x27;arrêter</li>
</ol>
<h2>Challenge 7 : Démanteler votre gouverneur</h2>
<p><em>Dismantle Your Governor</em></p>
<p>Aller le plus loin possible (exemple : courir pendant 15 minutes). Puis une fois que vous avez atteint l&#x27;objectif, aller plus loin (2 minutes).</p>
<h2>Challenge 8 : Compartimentez votre temps</h2>
<p><em>Compartmentalize Your Time</em></p>
<p>Faite ce challenge sur 3 semaines :</p>
<ul>
<li>
Semaine 1 : Prenez des notes détaillées sur la façon dont vous passez chaque tranche de 15 à 30 minutes de votre journée.
</li>
<li>
Semaine 2 : Planifiez votre temps en décidant ce que vous ferez pendant chaque tranche de 15 à 30 minutes de votre journée.
</li>
<li>
Semaine 3 : Affinez votre emploi du temps en fonction de votre expérience lors des deux premières semaines. Arrivez à un emploi du temps qui vous permet de faire vos activités importantes.
</li>
</ul>
<h2>Challenges 9 and 10 : Apprendre de l&#x27;échec et rechercher la grandeur</h2>
<p><em>Learn From Failure and Seek Greatness</em></p>
<p>Noter et décomposer vos échecs en vous posant les questions suivantes :</p>
<ul>
<li>Qu&#x27;avez-vous fait de bien ?</li>
<li>Comment avez-vous géré l&#x27;échec ?</li>
<li>Comment l&#x27;échec a-t-il affecté vos relations avec les autres ?</li>
<li>Comment a-t-il affecté votre vie ?</li>
<li>Qu&#x27;auriez-vous pu faire différemment ?</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Indie hacker]]></title>
            <link>https://johackim.com/indie-hacker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/indie-hacker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 17 Nov 2022 11:45:42 GMT</pubDate>
            <media:content url="https://johackim.com/covers/indie-hacker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/indie-hacker.jpg"/>
            <content:encoded><![CDATA[<p>Je vous partage les bases de tout ce que vous devez savoir à propos des indie hackers, même si vous n&#x27;avez pas beaucoup de temps.</p>
<h2>🤔 C&#x27;est quoi un indie hacker ?</h2>
<p>Un indie hacker est un créateur indépendant qui construit des projets numériques et gagne de l&#x27;argent sans employés ni financement externe.</p>
<p>C&#x27;est un entrepreneur qui s&#x27;appuie sur ses compétences techniques et ses idées pour créer des produits et des services rentables.</p>
<p>Il mène une vie active en ligne, partageant ses expériences et ses connaissances sur les forums et les réseaux sociaux.</p>
<p>Il s&#x27;occupe lui-même de tous les aspects d&#x27;une entreprise :</p>
<ul>
<li>
<a href="/programmation" title="Programmation">Programmation</a>

</li>
<li>
<a href="/design" title="Design" class="not-found">Design</a>

</li>
<li>
<a href="/marketing" title="Marketing" class="not-found">Marketing</a>

</li>
<li>
<a href="/finance" title="Finance" class="not-found">Finance</a>

</li>
<li>
<a href="/vente" title="Vente" class="not-found">Vente</a>

</li>
<li>
<a href="/seo" title="SEO">SEO</a>

</li>
<li>Ect...</li>
</ul>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Courtland Allen - Créateur de indiehackers.com</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Vous êtes un indie hacker si vous gagner de l&#x27;argent de manière indépendante. Cela signifie que vous générez des revenus directement auprès de vos clients, et non indirectement par l&#x27;intermédiaire d&#x27;un employeur. À part ça, il n&#x27;y a pas d&#x27;exigences !</p>
                    </div>
                </blockquote>
<h2>🧐 Comment devenir indie hacker ?</h2>
<p>En théorie, aucune étude est nécessaire, vous avez juste besoin d&#x27;un ordinateur et d&#x27;une connexion internet.</p>
<p>Dans la pratique, vous avez besoin d&#x27;apprendre beaucoup de choses (anglais, programmation, marketing, vente, finance, etc...).</p>
<p>Il faut <strong>aimer apprendre</strong>, être <strong>ultra patient</strong>, avoir un <strong>bon entourage</strong> et <strong>ne pas avoir peur de la solitude</strong>.</p>
<h2>🏁 Par où commencer ?</h2>
<p>Dans le milieu professionnel traditionnel, 95 % des gens vont vous dire ce genre de chose :</p>
<ol>
<li>Passe ton bac</li>
<li>Fait 5 ans d&#x27;étude</li>
<li>Brainstorm une idée</li>
<li>Rédige un business modèle de +200 pages</li>
<li>Fait une levée de fonds</li>
<li>Achète des brevets</li>
<li>Recrute des personnes</li>
<li>Créer un produit</li>
<li>Donne des cartes de visite et des flyers et attend que le bouche-à-oreille fasse ces preuves</li>
</ol>
<p>Si vous avez coché toutes les cases, bravo, vous avez perdu 10 ans de votre vie !</p>
<p>Être indie hacker ne demande pas de travailler en costard cravate et de passer ces journées au téléphone ou dans des réunions pour être &quot;professionnel&quot;, c&#x27;est tout le contraire.</p>
<p>Ne cherchez pas une <a href="/idee" title="Idée" class="not-found">Idée</a>, commencez uniquement par résoudre le <a href="/probleme-dur" title="problème des gens" class="not-found">problème des gens</a>.</p>

<p>Créez un <a href="/mvp" title="MVP" class="not-found">MVP</a> et vendez-le à une <a href="/avatar" title="audience" class="not-found">audience</a> spécifique.</p>

<p>Cela demande un grand nombre d&#x27;itérations et peut prendre plusieurs années avant de pouvoir en vivre.</p>
<h2>🏆 Indie hackers populaires</h2>
<p>Voici quelques exemples de indie hackers connus :</p>
<ul>
<li><a href="https://twitter.com/levelsio">Pieter Levels</a> - Créateur de <a href="https://nomadlist.com/">Nomadlist</a> -&gt; (<a href="https://indiehackers.com/product/nomad-list/revenue">40,000€ / mois</a>)</li>
<li><a href="https://twitter.com/arvidkahl">Arvid Kahl</a> - Créateur de <a href="https://feedbackpanda.com/">Feedback Panda</a> -&gt; (<a href="https://indiehackers.com/product/feedbackpanda">55,000€ / mois</a>)</li>
<li><a href="https://twitter.com/dannypostmaa">Danny Postma</a> - Créateur de <a href="https://headlime.com/">Headlime</a> -&gt; (<a href="https://failory.com/interview/headlime">20, 000€ / mois</a>)</li>
<li><a href="https://twitter.com/alexwestco">Alex West</a> - Créateur de <a href="https://getcyberleads.com/">Cyberleads</a> -&gt; (<a href="https://twitter.com/alexwestco/status/1587144417613324290">35, 000€ / mois</a>)</li>
<li><a href="https://twitter.com/yongfook">Jon Yongfook</a> - Créateur de <a href="https://bannerbear.com/">Bannerbear</a> -&gt; (<a href="https://bannerbear.com/open/">46, 000€ / mois</a>)</li>
<li><a href="https://twitter.com/jakobgreenfeld">Jakob Greenfeld</a> - Créateur de <a href="https://opportunities.so/">Opportunities</a></li>
<li><a href="https://twitter.com/d__raptis">Jim raptis</a> - Créateur de <a href="https://brandbird.app/">Brandbird</a></li>
</ul>
<h2>📚 Meilleurs livres de indie hackers</h2>
<p>Voici les meilleurs de livres sur le sujet :</p>
<ul>
<li>
<a href="/make-pieter-levels" title="Make - Pieter Levels">Make - Pieter Levels</a>

</li>
<li><a href="https://zerotosold.com/">Zero To Sold - Arvid Kahl</a></li>
<li><a href="https://amzn.to/3TQOGpo">Company of One - Paul Jarvis</a></li>
<li><a href="https://amzn.to/3DwdgGN">Start Small, Stay Small - Rob Walling</a></li>
<li><a href="https://momtestbook.com/">The Mom Test - Rob Fitzpatrick</a></li>
<li><a href="https://guillaumemoubeche.com/the-150m-dollar-secret">The $150M secret - Guillaume Moubeche</a></li>
<li><a href="https://minimalistentrepreneur.com/">The Minimalist Entrepreneur - Sahil Lavingia</a></li>
<li><a href="https://doingcontentright.com/">Doing Content Right - Steph Smith</a></li>
<li><a href="https://productideasbook.com/">Generating Product Ideas - Artiom Dashinsky</a></li>
<li><a href="https://amzn.to/3TU4Luk">Rework - Jason Fried</a></li>
<li><a href="https://amzn.to/3N784fr">The Personal MBA - Josh Kaufman</a></li>
<li><a href="https://amzn.to/3DtGIfe">The $100 Startup - Chris Guillebeau</a></li>
</ul>
<p>Vous voulez plus de livres à propos de indie hacker ? Parcourez ma liste complète des <a href="https://goodreads.com/user_shelves/312799631">meilleurs livres de indie hackers</a>.</p>
<h2>🧑‍🤝‍🧑 Meilleures communautés de indie hackers</h2>
<p>Voici les communautés de indie hackers les plus connus :</p>
<ul>
<li><a href="https://indiehackers.com">Indie Hackers</a> 🇺🇸</li>
<li><a href="https://news.ycombinator.com">Hacker News</a> 🇺🇸</li>
<li><a href="https://producthunt.com">Product Hunt</a> 🇺🇸</li>
<li><a href="https://wip.co">Wip</a> 🇺🇸</li>
<li><a href="https://ramenclub.so/">Ramen Club</a> 🇺🇸</li>
<li><a href="https://getmakerlog.com/">Makerlog</a> 🇺🇸</li>
<li><a href="https://bootstrappedfamily.com/">Bootstrapped Family</a> 🇺🇸</li>
<li><a href="https://awesomeindie.com/">Awesome Indie</a> 🇺🇸</li>
<li><a href="https://microfounder.com/">MicroFounder</a> 🇺🇸</li>
<li><a href="https://womenmake.com/">Women Make</a> 🇺🇸</li>
<li><a href="https://indiemakers.fr/">Indie maker</a> 🇫🇷</li>
<li><a href="https://lechantier.co/">Le chantier</a> 🇫🇷</li>
</ul>
<h2>🔗 Autres ressources</h2>
<p>Voici quelques liens et sites internet sur le sujet :</p>
<ul>
<li><a href="https://github.com/johackim/awesome-indiehackers">https://github.com/johackim/awesome-indiehackers</a></li>
<li><a href="https://makerbox.club">https://makerbox.club</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Framework AARRR]]></title>
            <link>https://johackim.com/aarrr?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/aarrr</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 31 Jul 2022 03:15:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/aarrr.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/aarrr.jpg"/>
            <content:encoded><![CDATA[<p>AARRR est un framework développé par Dave McClure, qui modélise le cycle de vie de l&#x27;utilisation d&#x27;un produit ou d&#x27;un service par un utilisateur.</p>
<p>Il comprend 5 étapes qui forment un entonnoir :</p>
<ol>
<li>Acquisition</li>
<li>Activation</li>
<li>Rétention</li>
<li>Recommandation</li>
<li>Revenu</li>
</ol>

<link href="data:text/css;base64,I21lcm1haWQtc3ZnLTN7Zm9udC1mYW1pbHk6InRyZWJ1Y2hldCBtcyIsdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTMgLmVycm9yLWljb257ZmlsbDojNTUyMjIyO30jbWVybWFpZC1zdmctMyAuZXJyb3ItdGV4dHtmaWxsOiM1NTIyMjI7c3Ryb2tlOiM1NTIyMjI7fSNtZXJtYWlkLXN2Zy0zIC5lZGdlLXRoaWNrbmVzcy1ub3JtYWx7c3Ryb2tlLXdpZHRoOjJweDt9I21lcm1haWQtc3ZnLTMgLmVkZ2UtdGhpY2tuZXNzLXRoaWNre3N0cm9rZS13aWR0aDozLjVweDt9I21lcm1haWQtc3ZnLTMgLmVkZ2UtcGF0dGVybi1zb2xpZHtzdHJva2UtZGFzaGFycmF5OjA7fSNtZXJtYWlkLXN2Zy0zIC5lZGdlLXBhdHRlcm4tZGFzaGVke3N0cm9rZS1kYXNoYXJyYXk6Mzt9I21lcm1haWQtc3ZnLTMgLmVkZ2UtcGF0dGVybi1kb3R0ZWR7c3Ryb2tlLWRhc2hhcnJheToyO30jbWVybWFpZC1zdmctMyAubWFya2Vye2ZpbGw6IzMzMzMzMztzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTMgLm1hcmtlci5jcm9zc3tzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTMgc3Zne2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDt9I21lcm1haWQtc3ZnLTMgLmxhYmVse2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMyAuY2x1c3Rlci1sYWJlbCB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTMgLmNsdXN0ZXItbGFiZWwgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMyAubGFiZWwgdGV4dCwjbWVybWFpZC1zdmctMyBzcGFue2ZpbGw6IzMzMztjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMyAubm9kZSByZWN0LCNtZXJtYWlkLXN2Zy0zIC5ub2RlIGNpcmNsZSwjbWVybWFpZC1zdmctMyAubm9kZSBlbGxpcHNlLCNtZXJtYWlkLXN2Zy0zIC5ub2RlIHBvbHlnb24sI21lcm1haWQtc3ZnLTMgLm5vZGUgcGF0aHtmaWxsOiNFQ0VDRkY7c3Ryb2tlOiM5MzcwREI7c3Ryb2tlLXdpZHRoOjFweDt9I21lcm1haWQtc3ZnLTMgLm5vZGUgLmxhYmVse3RleHQtYWxpZ246Y2VudGVyO30jbWVybWFpZC1zdmctMyAubm9kZS5jbGlja2FibGV7Y3Vyc29yOnBvaW50ZXI7fSNtZXJtYWlkLXN2Zy0zIC5hcnJvd2hlYWRQYXRoe2ZpbGw6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTMgLmVkZ2VQYXRoIC5wYXRoe3N0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoyLjBweDt9I21lcm1haWQtc3ZnLTMgLmZsb3djaGFydC1saW5re3N0cm9rZTojMzMzMzMzO2ZpbGw6bm9uZTt9I21lcm1haWQtc3ZnLTMgLmVkZ2VMYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7dGV4dC1hbGlnbjpjZW50ZXI7fSNtZXJtYWlkLXN2Zy0zIC5lZGdlTGFiZWwgcmVjdHtvcGFjaXR5OjAuNTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7ZmlsbDojZThlOGU4O30jbWVybWFpZC1zdmctMyAuY2x1c3RlciByZWN0e2ZpbGw6I2ZmZmZkZTtzdHJva2U6I2FhYWEzMztzdHJva2Utd2lkdGg6MXB4O30jbWVybWFpZC1zdmctMyAuY2x1c3RlciB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTMgLmNsdXN0ZXIgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMyBkaXYubWVybWFpZFRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4O2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOmhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpO2JvcmRlcjoxcHggc29saWQgI2FhYWEzMztib3JkZXItcmFkaXVzOjJweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwO30jbWVybWFpZC1zdmctMyAuZmxvd2NoYXJ0VGl0bGVUZXh0e3RleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MThweDtmaWxsOiMzMzM7fSNtZXJtYWlkLXN2Zy0zIDpyb290ey0tbWVybWFpZC1mb250LWZhbWlseToidHJlYnVjaGV0IG1zIix2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7fQ==" rel="stylesheet" type="text/css"/>
<h2>1. Acquisition</h2>
<p>Il s&#x27;agit ici de récupérer le nombre de nouveaux visiteurs uniques qui arrivent sur votre site via un ensemble de canaux différents.</p>
<p>Un canal d&#x27;acquisition s&#x27;évalue selon 3 critères :</p>
<ol>
<li>Volume</li>
<li>Coût d&#x27;acquisition / Temps d&#x27;acquisition</li>
<li>Taux de conversion</li>
</ol>
<p>PS : Vous pouvez ajouter des <a href="/parametres-utm" title="Paramètres UTM">Paramètres UTM</a> à vos liens ou utiliser un raccourcisseur de lien comme <a href="https://bit.ly">bit.ly</a> pour connaitre le canal utilisé.</p>

<h2>2. Activation</h2>
<p>Parvenir à faire en sorte que les gens utilise le produit ou service.</p>
<p>À cette étape, on récupère généralement le nombre d&#x27;utilisateurs inscrits.</p>
<p>PS : Faire beaucoup d&#x27;A/B testing pour trouver les composants qui ont un meilleur taux de conversion.</p>
<h2>3. Rétention</h2>
<p>Si votre taux de rétention n&#x27;est pas bon, vos efforts d&#x27;acquisition ou d&#x27;activation ne servent à rien. C&#x27;est comme si vous mettiez de l&#x27;eau dans un seau percé.</p>
<p>Définissez le critère de rétention et retenez le pourcentage de personnes à effectuer l&#x27;action.</p>
<p>Exemple : quand un utilisateur réutilise ou rachète un produit.</p>
<p>C&#x27;est l&#x27;opposé du CHURN (taux d&#x27;abandon).</p>


<h2>4. Recommandation</h2>
<p>Le nombre d&#x27;utilisateurs à inviter d&#x27;autres personnes.</p>
<h2>5. Revenu</h2>
<p>Le nombre d&#x27;utilisateurs qui payent le produit ou service.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/corey-haines-mental-models-for-marketing" title="Corey Haines - Mental Models For Marketing" class="not-found">Corey Haines - Mental Models For Marketing</a>

</li>
<li>Le livre de la jungle - Younès Rharbaoui</li>
<li>
<a href="/traction-gabriel-weinberg" title="Traction - Gabriel Weinberg">Traction - Gabriel Weinberg</a>

</li>
<li><a href="https://yannleonardi.com/framework-aarrr/">https://yannleonardi.com/framework-aarrr/</a></li>
<li><a href="https://airtable.com/shrzVGqmdLpoPQF9i">https://airtable.com/shrzVGqmdLpoPQF9i</a></li>
<li><a href="https://youtu.be/xf7oPPjvpA4">The Ouss Shadow Army - Le framework AARRR (OUSSAMA AMMAR)</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Thinking in Systems de Donella Meadows]]></title>
            <link>https://johackim.com/thinking-in-systems?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/thinking-in-systems</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 28 Jul 2022 12:44:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/thinking-in-systems.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/thinking-in-systems.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/4HZJkT8.png"/><blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Qu&#x27;est-ce qu&#x27;un système ?</h2>
<p>Un système est composé de 3 choses :</p>
<ol>
<li><strong>Éléments</strong> : Choses individuelles dans le système</li>
<li><strong>Interconnexions</strong> : Relations entre les éléments</li>
<li><strong>Fonction/but</strong> : Ce que le système réalise</li>
</ol>
<p><strong>Un système est un ensemble d&#x27;éléments qui sont interconnectés de manière à réaliser un but</strong>. Chaque système est composé de sous-systèmes avec leurs propres buts.</p>
<h2>Les stocks et les flux</h2>
<p>Les stocks et les flux sont les fondations d&#x27;un système :</p>
<ul>
<li><strong>Un stock représente les éléments dans un système que l&#x27;on peut voir, compter ou mesurer.</strong></li>
<li><strong>Les flux (entrants et sortants) sont les moyens par lesquels les stocks changent au fil du temps.</strong></li>
</ul>
<p>Exemple avec une baignoire :</p>
<ul>
<li>Le stock est le nombre de litres de d&#x27;eau</li>
<li>Le flux entrant est l&#x27;eau qui entre part le robinet</li>
<li>Le flux sortant est l&#x27;eau qui sort par l&#x27;évacuation</li>
</ul>
<p><img src="https://i.imgur.com/4HZJkT8.png" alt="|350"/></p>
<p>Les stocks mettent du temps à changer. Il faut une seconde pour ouvrir le robinet et plusieurs minutes pour remplir la baignoire.</p>
<h2>Boucles de rétroaction</h2>
<p>Certains systèmes s&#x27;autorégulent dans le temps, d&#x27;autres sont hors de contrôle et évoluent ou diminuent exponentiellement.</p>
<p>Pour qu&#x27;un système soit persistant, ils ont besoin de boucles de rétroaction (Feedbacks loops).</p>
<p>Il existe 2 types de boucles :</p>
<ol>
<li>Les boucles d&#x27;équilibrage (Balancing loops)</li>
<li>Les boucles de renforcement (Reinforcing loops)</li>
</ol>
<h3>Boucle d&#x27;équilibrage</h3>
<p>Les boucles d&#x27;équilibrage (Balancing loops) sont des boucles qui autorégule le stock à la manière d&#x27;un thermostat :</p>
<ul>
<li>Si le niveau du stock est trop élevé, la boucle réduit le flux entrant et augmente le flux sortant.</li>
<li>Si le niveau du stock est trop faible, la boucle augmente le flux entrant et réduit le flux sortant.</li>
</ul>
<h3>Boucle de renforcement</h3>
<p>Les boucles de renforcement se comportent de manière opposée aux boucles d&#x27;équilibrage.</p>
<p>Elles amplifient les comportements existants en augmentant ou en rétrécissant le stock plus rapidement.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://blas.com/wp-content/uploads/2019/07/Thinking-in-Systems.pdf">https://blas.com/wp-content/uploads/2019/07/Thinking-in-Systems.pdf</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Dopamine]]></title>
            <link>https://johackim.com/dopamine?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/dopamine</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sat, 09 Jul 2022 12:47:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/dopamine.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/dopamine.jpg"/>
            <content:encoded><![CDATA[<p>La dopamine est un neurotransmetteur et une <a href="/hormones" title="hormone" class="not-found">hormone</a> de la récompense qui génère une sensation de satisfaction lorsque l&#x27;on termine une tâche, reçoit une notification sur notre smartphone ou un like sur Twitter.</p>

<p>C&#x27;est l&#x27;hormone de la motivation.</p>
<p>Cette <a href="/hormones" title="hormone" class="not-found">hormone</a> nous incite à réaliser des actions avec une <a href="/gratification-immediate" title="gratification immédiate" class="not-found">gratification immédiate</a> plutôt qu&#x27;une action à <a href="/gratification-differee" title="gratification différée" class="not-found">gratification différée</a>.</p>

<blockquote>
<p>La dopamine est libérée non seulement lorsque vous éprouvez du plaisir, mais également quand vous l’anticipez.^[<a href="/atomic-habits-james-clear" title="Atomic Habits - James Clear">Atomic Habits - James Clear</a>].</p>

</blockquote>
<p>Un manque de dopamine peut engendrer des problèmes mentaux comme des troubles de l&#x27;attention ou d&#x27;hyperactivité.</p>
<blockquote class="callout question">
                    
                    <div class="callout-content">
                        <p>- Qu&#x27;est ce que la dopamine ? Neurotransmetteur qui se libère lorsque l&#x27;on éprouve du plaisir ou qu&#x27;on l&#x27;anticipe.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>The Molecule of More - Daniel Z. Lieberman</li>
<li>
<a href="/dopamine-nation-anna-lembke" title="Dopamine Nation - Anna Lembke" class="not-found">Dopamine Nation - Anna Lembke</a>

</li>
<li>
<a href="/behave-robert-sapolsky" title="Behave - Robert Sapolsky" class="not-found">Behave - Robert Sapolsky</a>

</li>
<li>
<a href="/dopamine-detox-thibaut-meurisse" title="Dopamine Detox - Thibaut Meurisse" class="not-found">Dopamine Detox - Thibaut Meurisse</a>

</li>
<li><a href="https://arte.tv/dopamine/">Arte - Documentaire sur la dopamine</a></li>
<li><a href="https://jeancharleskurdali.substack.com/p/comprendre-et-combattre-notre-addiction">JCK - Comprendre et combattre notre addiction à la dopamine</a></li>
<li><a href="https://reddit.com/r/Nootropics/comments/xufynu/using_dopamine_supplements_to_hack_motivation_the/">Using Dopamine Supplements to Hack Motivation: the Neurobiology of Ambition</a></li>
<li><a href="https://honest-broker.com/p/the-state-of-the-culture-2024">https://honest-broker.com/p/the-state-of-the-culture-2024</a></li>
<li><a href="https://youtu.be/tjjqyiHczcc">Ali Abdaal - How to Control Your Dopamine for Maximum Productivity</a></li>
<li><a href="https://issa-h.notion.site/The-Anti-Dopamine-Detox-Manifesto-23b3ed2101e580c094c4f2afe1c7bc76">https://issa-h.notion.site/The-Anti-Dopamine-Detox-Manifesto-23b3ed2101e580c094c4f2afe1c7bc76</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cerveau triunique]]></title>
            <link>https://johackim.com/cerveau-triunique?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/cerveau-triunique</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 07 Jul 2022 05:58:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/cerveau-triunique.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/cerveau-triunique.jpg"/>
            <content:encoded><![CDATA[<p>Le cerveau triunique (Triune Brain) est une théorie selon laquelle le cerveau humain est composé de 3 parties qui ont évolué successivement.</p>
<p>De la même façon que l&#x27;évolution des couches d&#x27;écorce d&#x27;un arbre, notre cerveau a évolué progressivement en accumulant 3 parties :</p>
<ol>
<li>Le cerveau reptilien</li>
<li>Le cerveau limbique</li>
<li>Le cerveau néocortex</li>
</ol>
<h2>1. Cerveau reptilien</h2>
<p>Le cerveau reptilien (Croc brain en anglais), aussi appelé <strong>cerveau primitif</strong>, est la partie automatique/instinctive du cerveau.</p>
<p>Il gère les fonctions les plus instinctives et vitales de notre système (respiration, alimentation, reproduction).</p>
<h2>2. Cerveau limbique</h2>
<p>Aussi appelé le cerveau mammalien, cerveau paléo-mammalien ou <strong>cerveau émotionnel</strong>.</p>
<p>C&#x27;est la partie qui gouverne nos émotions et nos sentiments. Elle répond de manières positive ou négative aux stimuli.</p>
<p>Basé sur ces stimuli, elle envoie des signaux au cerveau reptilien.</p>
<h2>3. Cerveau néocortex</h2>
<p>Aussi appelé le cerveau néo-mammalien ou <strong>cerveau rationnel</strong>.</p>
<p>C&#x27;est la partie cartésienne qui contrôle nos facultés cognitives (raisonnement, mémoire, langage).</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/behave-robert-sapolsky" title="Behave - Robert Sapolsky" class="not-found">Behave - Robert Sapolsky</a>

</li>
<li>
<a href="/les-lois-de-la-nature-humaine#les-3-parties-du-cerveau" title="Les lois de la nature humaine - Robert Greene">Les lois de la nature humaine - Robert Greene</a>

</li>
<li><a href="https://fr.wikipedia.org/wiki/Th%C3%A9orie_du_cerveau_triunique">https://fr.wikipedia.org/wiki/Théorie_du_cerveau_triunique</a></li>
<li><a href="https://courses.thoughtleader.school/mmc/triune-brain">https://courses.thoughtleader.school/mmc/triune-brain</a></li>
<li><a href="https://bigthink.com/neuropsych/triune-brain/">https://bigthink.com/neuropsych/triune-brain/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Playlists de musique pour entrer dans le flow et rester focus]]></title>
            <link>https://johackim.com/playlists-musique-focus?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/playlists-musique-focus</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Jul 2022 12:30:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/playlists-musique-focus.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/playlists-musique-focus.jpg"/>
            <content:encoded><![CDATA[<p>Voici une liste de services et playlists de musique que j&#x27;utilise pour travailler et rester concentré.</p>
<h2>1. Services en ligne</h2>
<ul>
<li><a href="https://brain.fm">https://brain.fm</a></li>
<li><a href="https://endel.io">https://endel.io</a></li>
<li><a href="https://www.noisli.com">https://www.noisli.com</a></li>
<li><a href="https://ambiph.one/">https://ambiph.one/</a></li>
</ul>
<h2>2. Playlists</h2>
<ul>
<li><a href="https://youtube.com/@LofiGirl/videos">Lofi girl</a></li>
<li><a href="https://youtube.com/@MusicLabChill/videos">Music Lab Work</a></li>
<li><a href="https://open.spotify.com/artist/7Bu9LhH1zCBJyKLkqN432L">Martia&#x27;s Muses</a></li>
<li><a href="https://open.spotify.com/playlist/37i9dQZF1DXaf6XmhwlgC6">Atmospheric Focus</a></li>
<li><a href="https://open.spotify.com/playlist/37i9dQZF1DX7EF8wVxBVhG">Binaural Beats: Focus</a></li>
<li><a href="https://open.spotify.com/playlist/7r89NcFsOLLtoYsLN4x0Sl">Workflow Future Garage</a></li>
<li><a href="https://open.spotify.com/playlist/5mFOODEgoz1DimQZ3ikWmj">Energy Boosting Cyberpunk</a></li>
<li><a href="https://open.spotify.com/artist/2GPLowDuIzf10Ju8mFunge?si=poCQYYcAQbSUG9lMtItnSQ">Brainy</a></li>
</ul>
<h2>3. Bruits blancs</h2>
<ul>
<li><a href="https://youtu.be/ufkWAA5HI5E">Meilleure musique instrumentale - 8 Houres de bruit blanc (white noise) pour dormir</a></li>
<li><a href="https://youtu.be/QH0t_ogClhA">Brown noise</a></li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://everlaab.com/musiques-productivite/">https://everlaab.com/musiques-productivite/</a></li>
<li><a href="https://musicforprogramming.net/latest/">https://musicforprogramming.net/latest/</a></li>
<li><a href="https://annoisli.com/">https://annoisli.com/</a></li>
<li><a href="https://calm.com/">https://calm.com/</a></li>
<li><a href="https://mynoise.net/">https://mynoise.net/</a></li>
<li><a href="https://noises.online/">https://noises.online/</a></li>
<li><a href="https://rainymood.com/">https://rainymood.com/</a></li>
<li><a href="https://flowtunes.app/">https://flowtunes.app/</a></li>
<li><a href="https://petrichoir.app/relax">https://petrichoir.app/relax</a></li>
<li><a href="https://lowkeylofi.app/">https://lowkeylofi.app/</a></li>
<li><a href="https://fmhy.net/audiopiracyguide#ambient-relaxation">https://fmhy.net/audiopiracyguide#ambient-relaxation</a></li>
<li><a href="https://github.com/talwat/lowfi">https://github.com/talwat/lowfi</a></li>
<li><a href="https://github.com/remvze/moodist">https://github.com/remvze/moodist</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cypress]]></title>
            <link>https://johackim.com/cypress?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/cypress</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Jun 2022 12:56:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/cypress.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/cypress.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://cypress.io/">Cypress</a> est un framework de test E2E Node.js.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer :</p>
<pre><code class="language-bash">yarn add -D cypress
</code></pre>
<h2>Utilisation</h2>
<p>Pour ouvrir l&#x27;interface utilisateur :</p>
<pre><code class="language-bash">npx cypress open
</code></pre>
<p>Démarrer les tests</p>
<pre><code class="language-bash">npx cypress run
</code></pre>
<p>Démarrer un seul test :</p>
<pre><code class="language-bash">npx cypress run -s &lt;path&gt;
</code></pre>
<h2>Configuration</h2>
<p>Créez un fichier <code>cypress.json</code> :</p>
<pre><code class="language-json">cat &gt; cypress.json &lt;&lt; EOF
{
    &quot;fixturesFolder&quot;: false,
    &quot;pluginsFile&quot;: &quot;__tests__/integration/plugins.js&quot;,
    &quot;integrationFolder&quot;: &quot;__tests__/integration/&quot;,
    &quot;testFiles&quot;: &quot;*.spec.js&quot;,
    &quot;supportFile&quot;: false,
    &quot;screenshotOnRunFailure&quot;: false,
    &quot;trashAssetsBeforeRuns&quot;: false,
    &quot;video&quot;: false,
    &quot;defaultCommandTimeout&quot;: 10000,
    &quot;requestTimeout&quot;: 10000,
    &quot;baseUrl&quot;: &quot;http://localhost:3000&quot;,
    &quot;chromeWebSecurity&quot;: false,
    &quot;retries&quot;: {
        &quot;runMode&quot;: 2,
        &quot;openMode&quot;: 0
    }
}
EOF
</code></pre>
<p>Ajoutez si besoin les lignes suivantes dans votre fichier <code>.eslintrc.json</code> pour configurer Eslint :</p>
<pre><code class="language-json">{
    &quot;plugins&quot;: [
        &quot;cypress&quot;
    ],
    &quot;env&quot;: {
        &quot;cypress/globals&quot;: true
    }
}
</code></pre>
<pre><code class="language-bash">yarn add -D eslint-plugin-cypress
</code></pre>
<pre><code class="language-bash">npm pkg set scripts.test:e2e=&quot;cypress run&quot;
</code></pre>
<h2>Ajouter des sélecteurs data-test</h2>
<p>Pour faciliter la sélection de vos éléments HTML, ajoutez des sélecteurs <code>data-test</code> ou <code>data-testid</code> dans votre code.</p>
<p>Exemples :</p>
<ul>
<li><code>&lt;input type=&quot;text&quot; data-test=login-username /&gt;</code></li>
<li><code>&lt;input type=&quot;text&quot; data-testid=login-username /&gt;</code></li>
</ul>
<h2>Supporter les variables d&#x27;environnement dotenv</h2>
<p>Si vous souhaitez utiliser des variables d&#x27;environnements en provenance d&#x27;un fichier <code>.env</code> dans vos tests, installez la librairie suivante :</p>
<pre><code class="language-bash">yarn add -D cypress-dotenv
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/cypress-io/cypress-realworld-app">https://github.com/cypress-io/cypress-realworld-app</a></li>
<li><a href="https://marmelab.com/blog/2023/11/20/screenshot-ci.html">https://marmelab.com/blog/2023/11/20/screenshot-ci.html</a></li>
<li><a href="https://pro.academind.com/p/cypress-end-to-end-testing-getting-started">https://pro.academind.com/p/cypress-end-to-end-testing-getting-started</a></li>
<li>
<a href="/testing" title="Testing" class="not-found">Testing</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes blogs préférés]]></title>
            <link>https://johackim.com/mes-blogs-preferes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-blogs-preferes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Jun 2022 12:18:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-blogs-preferes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-blogs-preferes.jpg"/>
            <content:encoded><![CDATA[<ul>
<li><a href="https://nesslabs.com/">Nesslabs</a></li>
<li><a href="https://fs.blog/">Farnam street</a></li>
<li><a href="https://sive.rs">Derek Sivers</a></li>
<li><a href="https://markmanson.net/">Mark Manson</a></li>
<li><a href="https://korben.info/">Korben</a></li>
<li><a href="https://danielmiessler.com/">Daniel Miessler</a></li>
<li><a href="https://nateliason.com/">Nat Eliason</a></li>
<li><a href="https://jamesclear.com/articles">James Clear</a></li>
<li><a href="https://julian.com/">Julien Shapiro</a></li>
<li><a href="https://joshwcomeau.com/">Josh W. Comeau</a></li>
<li><a href="https://zettelkasten.de/">Zettelkasten</a></li>
<li><a href="https://everlaab.com/">Everlaab</a></li>
<li><a href="https://eliottmeunier.com/">Eliott Meunier</a></li>
<li><a href="https://scotthyoung.com/blog/articles/">Scott H Youg</a></li>
<li><a href="https://tim.blog/">Tim Ferriss</a></li>
<li><a href="https://medium.com/essentiels">Essentiel</a></li>
<li><a href="https://valentindecker.com/">Valentin Decker</a></li>
<li><a href="https://marmelab.com/">Marmelab</a></li>
<li><a href="https://forum.latranchee.com/">La tranchée</a></li>
<li><a href="https://waitbutwhy.com/">Wait But Why</a></li>
<li><a href="https://bloggingwizard.com/">Bloggingwizard</a></li>
<li><a href="https://grafikart.fr">Grafikart</a></li>
<li><a href="https://personalmba.com/">Personal MBA</a></li>
<li><a href="https://calnewport.com/blog/">Cal Newport</a></li>
<li><a href="https://stoichandbook.co/">Stoic Handbook</a></li>
<li><a href="https://aliabdaal.com/">Ali Abdaal</a></li>
<li><a href="https://seths.blog/">Seth Godin</a></li>
<li><a href="https://blog.stephsmith.io/">Steph Smith</a></li>
<li><a href="https://sketchplanations.com/">Sketchplanations</a></li>
<li><a href="https://zenhabits.net/">Zen habits</a></li>
<li><a href="https://tinylittlebusinesses.com/">Tiny Little Businesses</a></li>
<li><a href="https://academyofideas.com/">Academy of ideas</a></li>
<li><a href="https://fortelabs.com/">Forte Labs</a></li>
<li><a href="https://thedecisionlab.com/">The Decision Lab</a></li>
<li><a href="https://ncase.me/">Nicky Case</a></li>
<li><a href="https://blog.pragmaticengineer.com/">Gergely Orosz - The Pragmatic Engineer</a></li>
<li><a href="https://marketingexamples.com/">Marketing Examples</a></li>
<li><a href="https://ryanholiday.net/">Ryan Holiday</a></li>
<li><a href="https://fronterablog.com/">Frontera</a></li>
<li><a href="https://hubermanlab.com">Hubermanlab</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Portmaster]]></title>
            <link>https://johackim.com/portmaster?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/portmaster</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 22 Jun 2022 01:21:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/portmaster.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/portmaster.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/safing/portmaster">Portmaster</a> est un outil pour monitorer toutes ses connexions réseaux et bloquer facilement les connexions indésirables.</p>
<p>L&#x27;interface est agréable et peut être utilisé en complément d&#x27;autres outils comme <a href="/nextdns" title="NextDNS">NextDNS</a> par exemple.</p>

<h2>Installation</h2>
<p>Pour l&#x27;installer sur Linux :</p>
<pre><code class="language-bash">curl -fsSL https://updates.safing.io/latest/linux_all/packages/install.sh | sudo bash
</code></pre>
<p>Sur Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm portmaster-bin
</code></pre>
<h2>Démarrage</h2>
<p>Pour le démarrer :</p>
<pre><code class="language-bash">sudo systemctl enable --now portmaster
/usr/lib/portmaster/portmaster
</code></pre>
<p>PS : Si vous installez ce service sur un serveur distant, connectez-vous en RDP (avec VNC ou autre) pour pouvoir activer des protocoles entrants comme SSH.</p>
<h2>Règles des connexions entrantes</h2>
<p>Portmaster bloque toutes les connexions entrantes.</p>
<p>Ce qui est top avec ce logiciel, c&#x27;est que vous pouvez configurer <a href="https://docs.safing.io/portmaster/settings#filter/serviceEndpoints">vos règles</a> par application :</p>
<ul>
<li><code>9.9.9.9 tcp/3000</code> - Autoriser l&#x27;IP <code>9.9.9.9</code> à accéder au port <code>3000</code></li>
<li><code>* tcp/22</code> - Autoriser toutes les IPs à accéder au port <code>22</code> d&#x27;une application</li>
<li><code>* */44441</code> - Autoriser toutes les IPs à accéder au port <code>44441</code> en TCP ou UDP</li>
</ul>
<p>Cela se paramètre dans la partie &quot;Connection Types&quot; &gt; &quot;Incoming Rules&quot; de chaque application. Sans oublier de décocher la case &quot;Force Block Incoming Connections&quot; de l&#x27;application en question.</p>
<p>Le fait de pouvoir limiter les connexions entrantes par application réduit les champs d&#x27;action des potentiels attaquants.</p>
<h2>(facultatif) Paramétrer NextDNS</h2>
<p>Si vous utilisez NextDNS, ajoutez cette configuration dans les paramètres de Portmaster :</p>
<pre><code class="language-txt">dot://45.90.28.242?verify=xxxxxx.dns.nextdns.io&amp;name=NextDNS&amp;blockedif=zeroip
</code></pre>
<p>En prenant soin de modifier l&#x27;id <code>xxxxxx</code> avec celui de votre compte NextDNS.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/safing/portmaster">https://github.com/safing/portmaster</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Chiffrer son ordinateur sur Linux]]></title>
            <link>https://johackim.com/chiffrer-son-ordinateur-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/chiffrer-son-ordinateur-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 21 Jun 2022 04:48:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/chiffrer-son-ordinateur-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/chiffrer-son-ordinateur-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Sur Linux, pour empêcher quiconque de consulter vos données, il existe plusieurs manières.</p>
<h2>Chiffrer son disque dur</h2>
<p>Pour chiffrer un disque dur sur Linux, vous pouvez soit le faire depuis une interface graphique pendant l&#x27;installation d&#x27;une distribution comme Ubuntu, soit le faire en ligne de commande avec <a href="/cryptsetup" title="Cryptsetup">Cryptsetup</a>.</p>

<pre><code class="language-bash">export DEVICE=/dev/sda # TO EDIT
parted -s ${DEVICE} mklabel gpt
parted -s ${DEVICE} mkpart primary 1MiB 100MiB # EFI (100MB)
parted -s ${DEVICE} mkpart primary 100MiB 350MiB # Boot (250MB)
parted -s ${DEVICE} mkpart primary 350MiB 100% # Crypted (100%)
mkfs.vfat -F32 ${DEVICE}1
mkfs.ext2 -F ${DEVICE}2
read -s -r -p &quot;Enter new luks passphrase: &quot; PASSPHRASE; echo
echo -n ${PASSPHRASE} | cryptsetup -q luksFormat -c aes-xts-plain64 -s 512 ${DEVICE}3 -d -
echo -n ${PASSPHRASE} | cryptsetup -q luksOpen ${DEVICE}3 lvm -d -
pvcreate -yff /dev/mapper/lvm
vgcreate arch /dev/mapper/lvm
read -r -p &quot;Enter swap size: &quot; -e -i &quot;3G&quot; SWAP_SIZE;
lvcreate -L ${SWAP_SIZE}G arch -n swap
read -r -p &quot;Enter root size: &quot; -e -i &quot;100G&quot; ROOT_SIZE;
lvcreate -L ${ROOT_SIZE} arch -n root
lvcreate -l +100%FREE arch -n home
mkfs.ext4 /dev/mapper/arch-root
mkfs.ext4 /dev/mapper/arch-home
mkswap /dev/mapper/arch-swap
</code></pre>
<h2>Chiffrer un dossier</h2>
<p>Pour chiffrer un dossier, vous pouvez soit utiliser <a href="/chiffrer-un-dossier-avec-ecryptfs" title="eCryptfs">eCryptfs</a> :</p>

<pre><code class="language-bash">ecryptfs-setup-private # Création du dossier chiffré ~/.Private
ecryptfs-mount-private # Montage du dossier pour pouvoir copier des fichier à l&#x27;intérieur
</code></pre>
<p>Ou <a href="/gnupg" title="GPG">GPG</a> :</p>

<pre><code class="language-bash">gpg --gen-key # Initialisation d&#x27;un clé GPG
tar czf mon_dossier.tar.gz mon_dossier # Créer une archive
gpg --encrypt mon_dossier.tar.gz # Chiffrement de l&#x27;archive
</code></pre>
<h2>Chiffrer un fichier</h2>
<p>Si vous voulez juster chiffrer un fichier, exécuter la commande <a href="/gnupg" title="GPG">GPG</a> suivante :</p>

<pre><code class="language-bash">gpg --encrypt &lt;file&gt;
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GnuPG]]></title>
            <link>https://johackim.com/gnupg?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/gnupg</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:54:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/gnupg.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/gnupg.jpg"/>
            <content:encoded><![CDATA[<p>GnuPG (ou GPG) est un outil de chiffrement disponible sur <a href="https://gnupg.org/">Linux</a>, <a href="https://gpg4win.org/">Windows</a> et <a href="https://gpgtools.org/">macOS</a>.</p>
<h2>Installation</h2>
<p>Installation sur Debian ou Ubuntu :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -y gpg
</code></pre>
<p>Installation sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S gnupg
</code></pre>
<h2>Initialisation</h2>
<p>Pour initialiser GnuPG, il faut créer une clé de chiffrement</p>
<p>Exécuter la commande suivante pour générer une clé de chiffrement :</p>
<pre><code class="language-bash">gpg --gen-key
</code></pre>
<p>Durant l&#x27;exécution, vous allez devoir définir un nom d&#x27;utilisateur, un email et une passphrase.</p>
<p>N&#x27;oubliez pas de définir les bon droits pour le dossier <code>.gnupg</code> avec un bon <code>chmod</code> des familles :</p>
<pre><code class="language-bash">chmod 600 .gnupg
</code></pre>
<p><strong>IMPORTANT</strong> : Le dossier <code>~/.gnupg/</code> est votre passphrase est a garder absolument au risque de ne jamais pouvoir déchiffrer vos données chiffrés.</p>
<h2>Lister ses clés GPG</h2>
<p>Pour récupérer la liste de ses clés GPG, exécutez la commande suivante :</p>
<pre><code class="language-bash">gpg --list-secret-keys --keyid-format LONG
</code></pre>
<p>Le numéro de clé affiché devra être utilisé pour certaines commandes comme <code>gpg --delete-keys</code> ou <code>gpg --edit-key</code>.</p>
<h2>Lister toutes les clés GPG</h2>
<pre><code class="language-bash">gpg --list-keys --keyid-format LONG
</code></pre>
<h2>Voir les informations d&#x27;un fichier .gpg</h2>
<pre><code class="language-bash">gpg --verbose --decrypt --list-only --dry-run --logger-fd 1 &lt;file.gpg&gt;
</code></pre>
<h2>Chiffrer un fichier</h2>
<p>Pour chiffrer un fichier :</p>
<pre><code class="language-bash">gpg -e &lt;file&gt;
</code></pre>
<h2>Chiffrer un fichier au format ASCII</h2>
<p>Par défaut, les fichiers sont chiffré au format binaire. Pour chiffer un fichier au format ASCII, exécutez la commande suivante :</p>
<pre><code class="language-bash">gpg -e -a -o &lt;file&gt;.gpg &lt;file&gt;
</code></pre>
<h2>Convertir un fichier binaire au format ASCII</h2>
<pre><code class="language-bash">gpg --enarmor &lt;file&gt;.gpg
</code></pre>
<h2>Déchiffrer un fichier</h2>
<p>Poru déchiffrer un fichier :</p>
<pre><code class="language-bash">gpg -d &lt;file&gt;
</code></pre>
<h2>Chiffrer un dossier</h2>
<p>GnuPG ne permet pas de chiffrer directement un dossier. Cependant, vous pouvez archivez une archive.</p>
<p>Du coup, archivez votre dossier avec un logiciel d&#x27;archivage (ex : <code>zip</code>, <code>7z</code>, <code>tar.gz</code> ect...), puis chiffrez le :</p>
<pre><code class="language-bash">zip -r folder.zip &lt;folder&gt;
gpg -e folder.zip
</code></pre>
<h2>Supprimer une clé</h2>
<p>Pour supprimer une clé :</p>
<pre><code class="language-bash">gpg --delete-keys &lt;KEY&gt;
</code></pre>
<h2>Modifier son mot de passe</h2>
<p>Pour modifier son mot de passe :</p>
<pre><code class="language-bash">gpg --edit-key &lt;KEY&gt;
gpg&gt; passwd
gpg&gt; save
</code></pre>
<h2>Toujours demander le mot de passe</h2>
<p>Si vous souhaitez que votre passphrase soit toujours demandé lors du déchiffrement d&#x27;un fichier, éditez le fichier <code>~/.gnupg/gpg-agent.conf</code> avec les lignes suivantes :</p>
<pre><code class="language-txt">default-cache-ttl 0
max-cache-ttl 0
</code></pre>
<h2>Récupérer une clé GPG publique</h2>
<p>Pour récupérer une clé publique complète, exécutez la commande suivante :</p>
<pre><code class="language-bash">gpg --armor --export &lt;KEY_ID&gt;
</code></pre>
<p>Le <code>KEY_ID</code> correspond à la valeur après <code>sec/</code> via la ligne de commande <code>gpg --list-secret-keys --keyid-format LONG</code>.</p>
<p>Cette clé peut être envoyer sur Github ou Gitlab pour vérifier les commits par exemple.</p>
<h2>Changer la date d&#x27;expiration d&#x27;une clé</h2>
<p>Si vous voulez modifier la date d&#x27;expiration d&#x27;un clé GPG, exécutez la commande suivante :</p>
<pre><code class="language-bash">gpg --edit-key &lt;KEY&gt;
gpg&gt; expire
gpg&gt; save
</code></pre>
<p>NOTE: Il est possible que la subkey et non la primary key soit expiré, pour la selectionner, tapez <code>key &lt;key&gt;</code> puis <code>expire</code>.</p>
<p><strong>Que se passe-t-il si votre clé GPG expire ?</strong></p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://g-loaded.eu/2010/11/01/change-expiration-date-gpg-key/</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>En théorie, le propriétaire d&#x27;une clé privée expirée devrait toujours avoir la possibilité de déchiffrer des données et également être en mesure de signer des données, même si toutes les sous-clés publiques de la paire de clés actuelle ont expiré, car il est toujours possible de réinitialiser la date d&#x27;expiration sur le clés publiques actuellement expirées.</p>
                    </div>
                </blockquote>
<h2>Chiffer avec vim</h2>
<p>Installer <a href="https://github.com/jamessan/vim-gnupg">vim-gnupg</a>.</p>
<pre><code class="language-vim">let g:GPGDefaultRecipients=[&quot;yourname@yourdomain.com&quot;]
</code></pre>
<h2>gpg-tui</h2>
<p>Pour gérer plus facilement ses clés, il existe <code>gpg-tui</code> :</p>
<pre><code class="language-bash">sudo pacman -S gpg-tui
</code></pre>
<h2>Enlever la date d&#x27;expiration</h2>
<pre><code class="language-bash">gpg --edit-key &lt;ID&gt;
&gt; expire
&gt; 0
&gt; save
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Tapez key 1 si il s&#x27;agit d&#x27;une subkey.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pourquoi protéger sa vie privée ?]]></title>
            <link>https://johackim.com/pourquoi-proteger-sa-vie-privee?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/pourquoi-proteger-sa-vie-privee</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:54:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/pourquoi-proteger-sa-vie-privee.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/pourquoi-proteger-sa-vie-privee.jpg"/>
            <content:encoded><![CDATA[<p>Pourquoi protéger sa vie privée ? Selon moi, il existe plusieurs raisons.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Edward Snowden</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« Dire que l&#x27;on s&#x27;en fiche du droit à la vie privée sous prétexte qu&#x27;on n&#x27;a rien à cacher, c&#x27;est comme déclarer que l&#x27;on se fiche du droit à la liberté d&#x27;expression sous prétexte qu&#x27;on n&#x27;a rien à dire. »</p>
                    </div>
                </blockquote>
<h2>Pour éviter le cyberharcèlement</h2>
<p>Si vous étalez toute votre vie privée sur internet, vous donnez la possibilité à des personnes mal intentionnées de vous harceler numériquement.</p>
<p>Des menaces répétées par SMS, appels téléphoniques, courrier e-mail ou sur vos réseaux sociaux (Twitter, Facebook, etc...)</p>
<h2>Pour éviter l&#x27;usurpation d&#x27;identité</h2>
<p>N&#x27;importe qui peut créer un faux compte sur les réseaux sociaux avec votre identité et propager des fausses rumeurs sur vous.</p>
<h2>Pour éviter l&#x27;autocensure</h2>
<p>Lorsque l&#x27;on est créateur, le simple fait de sentir surveiller, de manière consciente ou non, cela limite notre créativité jusqu&#x27;au point où l&#x27;on ne publie rien du tout.</p>
<h2>Pour éviter la surveillance des gouvernements</h2>
<p>Le gouvernement d&#x27;aujourd&#x27;hui n&#x27;est pas celui de demain.</p>
<p>Si vous n&#x27;êtes pas un ennemi de l&#x27;état aujourd&#x27;hui, rien ne vous assure que vous ne le serez pas demain.</p>
<p>Les régimes oppressifs peuvent utiliser les données personnelles pour identifier les opposants politiques et les réprimer.</p>
<p>En temps de guerre, les données personnelles peuvent être utilisées pour identifier les personnes à exterminer.</p>
<h2>Pour éviter les mauvaises réputations</h2>
<p>Afin d&#x27;obtenir un travail ou de simplement rencontrer de nouvelles personnes, il vaut mieux ne pas avoir de données compromettantes sur nous.</p>
<h2>Pour protéger les lanceurs d&#x27;alerte</h2>
<p>Les lanceurs d&#x27;alerte sont des personnes qui dénoncent des scandales, des fraudes, des crimes, des abus, des dysfonctionnements, des dangers, etc.</p>
<p>La protection de leur vie privée est essentielle pour leur sécurité.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Asdf]]></title>
            <link>https://johackim.com/asdf?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/asdf</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:53:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/asdf.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/asdf.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/asdf-vm/asdf">Asdf</a> est un gestionnaire de version (version manager) pour Python, Node.js, Ruby, etc. Il permet de changer de version pour chaque langage de programmation sans se prendre la tête.</p>
<h2>Installation</h2>
<p>Si vous êtes sur Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm asdf-vm
</code></pre>
<p>Puis ajoutez les 2 lignes suivantes dans votre fichier <code>~/.bashrc</code> ou <code>~/.zshrc</code>.</p>
<pre><code class="language-bash">export ASDF_DATA_DIR=$HOME/.asdf
export PATH=$PATH:$ASDF_DATA_DIR/shims
</code></pre>
<h2>Utilisation</h2>
<p>Pour installer un plugin (Node.js, Python, Ruby, etc...), utilisez la commande suivante :</p>
<pre><code class="language-bash">asdf plugin add nodejs
</code></pre>
<p>Pour lister toutes les versions de Node.js :</p>
<pre><code class="language-bash">asdf list all nodejs
</code></pre>
<p>Pour installer une version spécifique de Node.js :</p>
<pre><code class="language-bash">asdf install nodejs 22.19.0
</code></pre>
<p>Pour définir une version globale par défaut :</p>
<pre><code class="language-bash">asdf set -u nodejs 22.19.0
</code></pre>
<p>Pour définir une version locale :</p>
<pre><code class="language-bash">asdf set nodejs 22.19.0
</code></pre>
<p>Pour connaitre la version en cours :</p>
<pre><code class="language-bash">asdf current
</code></pre>
<p>Revenir à la version système d&#x27;origine :</p>
<pre><code class="language-bash">asdf set -u nodejs system
</code></pre>
<p>Lorsque vous installer un package npm global (ex : <code>npm i -g yarn</code>), n&#x27;oubliez pas d&#x27;exécuter la commande suivante pour pouvoir accéder au package :</p>
<pre><code class="language-bash">asdf reshim nodejs
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Avec Python, si vous rencontrez une erreur lors du lancement d&#x27;une commande pip install, exécutez là de cette manière : sudo -E pip install --break-system-packages <package>.</package></p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/asdf-vm/asdf">https://github.com/asdf-vm/asdf</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bloquer les publicités]]></title>
            <link>https://johackim.com/bloquer-les-publicites?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/bloquer-les-publicites</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:53:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/bloquer-les-publicites.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/bloquer-les-publicites.jpg"/>
            <content:encoded><![CDATA[<p>Pour bloquer les publicités intempestives d&#x27;un smartphone, d&#x27;un ordinateur ou d&#x27;une smart TV il y a plusieurs moyens.</p>
<p>Pour un smartphone ou un ordinateur, le moyen le plus simple est d&#x27;installer une extension sur votre navigateur web (Firefox, Chrome, Chromium, etc...).</p>
<p>L&#x27;extension la plus efficace pour ça est <a href="https://ublockorigin.com/fr">uBlock Origin</a>. Elle est gratuite et open-source.</p>
<p>Une fois installé, les pubs ne seront plus affichés lorsque vous naviguez sur internet. Même les publicités vidéos sur YouTube.</p>
<p>Et en supplément, vous pouvez installer des listes de blocage dans les paramètres de uBlock avec le bouton &quot;Import&quot; tout en bas :</p>
<pre><code class="language-txt">https://raw.githubusercontent.com/badmojr/1Hosts/master/Lite/adblock.txt
https://raw.githubusercontent.com/sjhgvr/oisd/refs/heads/main/abp_big.txt
https://raw.githubusercontent.com/liamengland1/miscfilters/master/antipaywall.txt
https://raw.githubusercontent.com/hagezi/dns-blocklists/main/adblock/ultimate.txt
https://raw.githubusercontent.com/yourduskquibbles/webannoyances/master/ultralist.txt
https://raw.githubusercontent.com/liamengland1/miscfilters/master/amazonannoyances.txt
https://raw.githubusercontent.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist/main/list.txt
</code></pre>
<p>Vous pouvez aussi ajouter des filtres personnalisés comme celui-ci :</p>
<pre><code class="language-txt">x.com##[aria-label$=&quot;trending now&quot; i]
</code></pre>
<p>Ce filtre permet de supprimer le bloc qui affiche les tendances.</p>
<p>PS : Un autre moyen est d&#x27;utiliser <a href="/nextdns" title="NextDNS">NextDNS</a>, cette solution elle permet de bloquer toutes les requêtes en destinations des services de publicités ou de certaines grandes entreprises comme Google ou Facebook.</p>

<hr/>
<p>Références :</p>
<ul>
<li><a href="https://letsblock.it/">https://letsblock.it/</a></li>
<li><a href="https://bloquelapub.net/">https://bloquelapub.net/</a></li>
<li><a href="https://fmhy.net/storage#dns-filters">https://fmhy.net/storage#dns-filters</a></li>
<li><a href="https://fmhy.net/storage#ublock-filters">https://fmhy.net/storage#ublock-filters</a></li>
<li><a href="https://fmhy.net/adblockvpnguide#adblock-filters">https://fmhy.net/adblockvpnguide#adblock-filters</a></li>
<li><a href="https://fmhy.net/adblockvpnguide#dns-adblocking">https://fmhy.net/adblockvpnguide#dns-adblocking</a></li>
<li><a href="https://abelhadigital.com/hostsman/">https://abelhadigital.com/hostsman/</a></li>
<li><a href="https://github.com/OhMyGuus/I-Still-Dont-Care-About-Cookies">https://github.com/OhMyGuus/I-Still-Dont-Care-About-Cookies</a></li>
<li><a href="https://github.com/FastForwardTeam/FastForward">https://github.com/FastForwardTeam/FastForward</a></li>
<li><a href="https://github.com/hagezi/dns-blocklists">https://github.com/hagezi/dns-blocklists</a></li>
<li><a href="https://github.com/Lissy93/awesome-privacy#host-block-lists">https://github.com/Lissy93/awesome-privacy#host-block-lists</a></li>
<li><a href="https://github.com/StevenBlack/hosts">https://github.com/StevenBlack/hosts</a></li>
<li><a href="https://github.com/blocklistproject/Lists">https://github.com/blocklistproject/Lists</a></li>
<li><a href="https://github.com/topics/blocklist">https://github.com/topics/blocklist</a></li>
<li><a href="https://github.com/AdAway/AdAway">https://github.com/AdAway/AdAway</a></li>
<li><a href="https://github.com/AdguardTeam/AdGuardExtra">https://github.com/AdguardTeam/AdGuardExtra</a></li>
<li><a href="https://github.com/ReVanced/revanced-patches">https://github.com/ReVanced/revanced-patches</a></li>
<li><a href="https://github.com/yokoffing/filterlists">https://github.com/yokoffing/filterlists</a></li>
<li><a href="https://github.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist">https://github.com/laylavish/uBlockOrigin-HUGE-AI-Blocklist</a></li>
<li><a href="https://github.com/anfragment/zen">https://github.com/anfragment/zen</a></li>
<li><a href="https://github.com/gijsdev/ublock-hide-yt-shorts/">https://github.com/gijsdev/ublock-hide-yt-shorts/</a></li>
<li><a href="https://blog.cloudflare.com/introducing-1-1-1-1-for-families">https://blog.cloudflare.com/introducing-1-1-1-1-for-families</a></li>
<li><a href="https://reddit.com/r/uBlockOrigin/">https://reddit.com/r/uBlockOrigin/</a></li>
<li><a href="https://oisd.nl">https://oisd.nl</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Quickemu]]></title>
            <link>https://johackim.com/quickemu?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/quickemu</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/quickemu.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/quickemu.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/quickemu-project/quickemu">Quickemu</a> est un logiciel pour rapidement démarrer des machines virtuelles depuis Linux.</p>
<h2>Installation</h2>
<pre><code class="language-bash">yay -S --noconfirm quickemu
sudo pacman -Syy qemu qemu-ui-gtk qemu-ui-sdl
</code></pre>
<h2>Démarrer une machine virtuel Ubuntu</h2>
<pre><code class="language-bash">quickget ubuntu 22.04
quickemu --vm ubuntu-22.04.conf
</code></pre>
<h2>Démarrer une machine virtuel Arch Linux</h2>
<pre><code class="language-bash">quickget archlinux latest
quickemu --vm archlinux-latest.conf
</code></pre>
<h2>Démarrer une machine virtuel Android</h2>
<pre><code class="language-bash">quickget android 9.0
quickemu --vm android-9.0-x86.conf
</code></pre>
<h2>Supprimer un disque</h2>
<pre><code class="language-bash">quickemu --delete-disk --vm ubuntu-22.04.conf
</code></pre>
<h2>Stopper qemu</h2>
<pre><code class="language-bash">pkill -f qemu-system-x86_64
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://korben.info/quickemu.html">https://korben.info/quickemu.html</a></li>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
<li>
<a href="/virtualisation" title="Virtualisation" class="not-found">Virtualisation</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Démarrer Signal en ligne de commande]]></title>
            <link>https://johackim.com/scli?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/scli</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/scli.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/scli.jpg"/>
            <content:encoded><![CDATA[<p>Pour envoyer et recevoir des messages via l&#x27;application <a href="https://signal.org/fr/download/">Signal</a> directement dans un terminal, il existe l&#x27;application <a href="https://github.com/isamert/scli">scli</a>.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Arch Linux, exécutez les commandes suivantes et ajouter le QR code dans votre application :</p>
<pre><code class="language-bash">yay -S --noconfirm scli
sudo pip install pyqrcode
scli link
</code></pre>
<h2>Utilisation</h2>
<p>Pour démarrer l&#x27;application, taper simplement <code>scli</code> dans votre terminal ou votre launcher d&#x27;application préféré.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/isamert/scli">https://github.com/isamert/scli</a></li>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Protégez votre navigateur web]]></title>
            <link>https://johackim.com/proteger-navigateur-web?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/proteger-navigateur-web</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Jun 2022 11:49:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/proteger-navigateur-web.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/proteger-navigateur-web.jpg"/>
            <content:encoded><![CDATA[<p>Si vous voulez naviguer sur le web sans avoir peur d&#x27;être traqué, voici les outils à utiliser.</p>
<h2>Firefox</h2>
<p><a href="https://mozilla.org/fr/firefox/new/">Firefox</a> est un logiciel libre. Contrairement à Chrome, il ne contient pas de code propriétaire.</p>
<p>C&#x27;est le navigateur à privilégier si vous désirez naviguer sur le web librement.</p>
<p>Il existe une version pour Linux, Windows, macOS, Android, iOS, etc...</p>
<p>PS : Il existe aussi la version communautaire de Firefox -&gt; <a href="https://librewolf.net/">LibreWolf</a></p>
<h2>uBlock Origin</h2>
<p>Pour <a href="/bloquer-les-publicites" title="éviter les publicités intempestives">éviter les publicités intempestives</a>, le meilleur add-on pour ça, c&#x27;est <a href="https://ublockorigin.com/fr">uBlock Origin</a>.</p>

<p>Contrairement à Adblock, uBlock Origin ne se fait pas rémunérer par les géants du Web pour laisser des publicités affichées et il consomme moins de ressources (CPU et RAM).</p>
<h2>Ungoogled-chromium</h2>
<p>Si comme moi vous trouvez que Firefox est plus lent que Chrome/Chromium, vous pouvez installer la version degooglisé de Chrome.</p>
<p>Vous pouvez l&#x27;<a href="https://ungoogled-software.github.io/ungoogled-chromium-binaries/">installer depuis cette page</a>.</p>
<p>Si vous êtes sur Linux, vous pouvez aussi utiliser <a href="/flatpak" title="Flatpak" class="not-found">Flatpak</a> :</p>

<pre><code class="language-bash">flat install com.github.Eloston.UngoogledChromium
</code></pre>
<p>PS : Le chrome store n&#x27;est pas disponible par défaut, il vous faudra <a href="https://github.com/NeverDecaf/chromium-web-store">installer cette extension</a> manuellement pour l&#x27;utiliser.</p>
<h2>Libredirect</h2>
<p>Si vous aimez le contenu de YouTube, Instagram, Twitter et compagnie mais que vous ne voulez pas être traqué lors de son visionnage vous pouvez utiliser l&#x27;<a href="https://libredirect.github.io/">extension Libredirect</a>.</p>
<p>Une fois installé, tous les contenus seront automatiquement démarrés sur des alternatives respectueuses de la vie privée :</p>
<ul>
<li>YouTube =&gt; <a href="https://github.com/iv-org/invidious">Invidious</a></li>
<li>Twitter =&gt; <a href="https://github.com/zedeus/nitter">Nitter</a></li>
<li>Instagram =&gt; <a href="https://sr.ht/~cadence/bibliogram/">Bibliogram</a></li>
<li>Reddit =&gt; <a href="https://github.com/spikecodes/libreddit">Libreddit</a></li>
<li>Imgur =&gt; <a href="https://codeberg.org/video-prize-ranch/rimgo">Rimgo</a></li>
<li>Google =&gt; <a href="https://searx.github.io/searx/">SearX</a></li>
<li>Translate =&gt; <a href="https://git.sr.ht/~metalune/simplytranslate_web">SimplyTranslate</a></li>
<li>Maps =&gt; <a href="https://openstreetmap.org/">OpenStreetMap</a></li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://privacytests.org/">https://privacytests.org/</a></li>
<li><a href="https://vytal.io/">https://vytal.io/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Les lois de la nature humaine de Robert Greene]]></title>
            <link>https://johackim.com/les-lois-de-la-nature-humaine?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/les-lois-de-la-nature-humaine</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 14 Jun 2022 09:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/les-lois-de-la-nature-humaine.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/les-lois-de-la-nature-humaine.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Instinct grégaire</h2>
<p>Notre tendance à établir deux clans séparés, ceux qui sont des nôtres et ceux qui n&#x27;en sont pas.</p>
<h2>Les 3 parties du cerveau</h2>
<ul>
<li>Le cerveau réptilien (lizard brain) : la partie automatique/instinctive</li>
<li>Le cerveau paléomammalien (ou cerveau limbique) : la partie émotionnelle</li>
<li>Le cerveau néocortex : la partie qui contrôle les facultés cognitives ; le langage</li>
</ul>
<h2>Avoir conscience de son irationnalité</h2>
<p>Le seul moyen de devenir rationnel et d&#x27;avoir conscience de son irationnalité.</p>
<p>De prendre du recul lors de chaque action.</p>
<p>Se croire supérieur à ça, est la preuve de son irationnalité la plus sûr.</p>
<h2>Biais de conviction</h2>
<p>Notre tendance à défendre coûte que coût les idées qui flattent notre égo.</p>
<h2>Biais d&#x27;apparence</h2>
<p>Notre tendance à voir les gens tel qu&#x27;ils nous apparaissent et non tels qu&#x27;ils sont.</p>
<h2>Biais de conformisme</h2>
<p>Notre tendance à adopter des idées et des opinions pour s&#x27;intégrer à un groupe plutôt que pour les idées elles même.</p>
<h2>L&#x27;effet de groupe</h2>
<p>Notre tendance à se laisser porter par les émotions collectives des parties politiques, manifestations ou concerts. C&#x27;est le niveau 2 du biais de conformisme.</p>
<h2>Stratégies pour dévoiler son moi rationnel</h2>
<h3>1. Se connaitre soit-même</h3>
<blockquote>
<p><mark><b>Le moi émotionnel se nourrit de l&#x27;ignorance</b></mark></p>
</blockquote>
<p>Identifier ses forces et ses faiblesses. Examiner ses décisions et note façon de fonctionner en état de stress.</p>
<h3>2. Examiner ses émotions à la racine</h3>
<p>Identifier le déclencheur de notre colère à froid et en étant le plus objectif possible.</p>
<p>Utilisez un journal pour noter vos introspections.</p>
<h3>3. Augmenter notre temps de réaction</h3>
<p>Appuyer sur pause pour prendre du recul le temps que l&#x27;émotion passe.</p>
<p>Écrire ce que l&#x27;on ressent dans un journal ou dans un e-mail de colère sans l&#x27;envoyer.</p>
<h3>4. Acceptez les gens comme des faits</h3>
<p>Nous souhaitons constamment changer les gens. Mais chaque personne est différente. Alors nous sommes tout le temps contrarié.</p>
<p>Considérons les personnes comme des phénomènes aussi neutre que des planètes ou des plantes.</p>
<h3>5. Aimez le rationnel</h3>
<blockquote>
<p>Maîtriser son moi émotionnel amène une sérénité générale et une clarté d&#x27;esprit.</p>
</blockquote>
<h2>Notre besoin fondamental d&#x27;attention</h2>
<blockquote>
<p>Nous sommes tous narcissiques, certains plus que d&#x27;autres.</p>
<p>Nous avons besoin d&#x27;être regardés pour nous sentir vivants.</p>
</blockquote>
<p>Dès notre naissance, nous réclamons un <strong><a href="/besoin-d&#x27;attention" title="Besoin d&#x27;attention" class="not-found">Besoin d&#x27;attention</a></strong> illimité.</p>

<p>Notre estime de nous mêmes dépend de l&#x27;attention que les autres portent sur nous.</p>
<p>Nous sommes par essence des êtres sociaux.</p>
<p>L&#x27;isolement nous mêne à la dépression.</p>
<p>Tout ou presque est motivé par ce <strong>besoin fondamental</strong>.</p>
<h2>L&#x27;échelle du narcissisme</h2>
<h3>Les grands narcissiques</h3>
<p>Ce sont les personnes qui n&#x27;ont pas un moi solide et cohérent.</p>
<p>Les personnes qui ont une faible <a href="/estime-de-soi" title="estime d&#x27;eux même" class="not-found">estime d&#x27;eux même</a> et un fort degré <a href="/ego" title="d&#x27;égocentrisme" class="not-found">d&#x27;égocentrisme</a>.</p>

<h3>Les narcissiques fonctionnels</h3>
<p>TODO</p>
<h3>Les narcissiques sains</h3>
<p>TODO</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/psychologie" title="Psychologie">Psychologie</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Spécifier la quantité de ressources d'un conteneur Docker]]></title>
            <link>https://johackim.com/specifier-quantite-ressources-conteneur-docker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/specifier-quantite-ressources-conteneur-docker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 14 Jun 2022 09:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/specifier-quantite-ressources-conteneur-docker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/specifier-quantite-ressources-conteneur-docker.jpg"/>
            <content:encoded><![CDATA[<p>Il est possible de limiter la quantité de ressources d&#x27;un conteneur Docker en termes de CPU (processeur) et de RAM (mémoire).</p>
<p>Note : En revanche, il n&#x27;est pas possible de limiter un conteneur en termes d&#x27;espace de stockage. Cela devra se faire depuis la machine hôte.</p>
<h2>Limiter la RAM d&#x27;un conteneur</h2>
<p>Par exemple, si vous démarrez un conteneur basé sur une image Debian avec le paramètre <code>-m 10m</code> (ou <code>--memory=10m</code>), le conteneur ne pourra pas dépasser 10 megabyte de RAM, exemple :</p>
<pre><code class="language-bash">docker run --rm --name debian -m 10m -it debian bash
</code></pre>
<p>Si vous exécutez une commande <code>apt update</code> à l&#x27;intérieur du conteneur, le conteneur ne pourra pas aller au bout de l&#x27;exécution par son manque de RAM.</p>
<p>Vous pouvez vérifier l&#x27;utilisation des ressources utilisée des conteneurs d&#x27;un serveur avec la commande <a href="https://ctop.sh/">ctop</a> pour vérifier.</p>
<h2>Limiter le CPU d&#x27;un conteneur</h2>
<p>C&#x27;est le même fonctionnement pour le CPU, si vous démarrez un conteneur avec le paramètre <code>--cpus=0.5</code> et que votre machine hôte à 2 CPUs, le conteneur n&#x27;aura accès qu&#x27;à un seul CPU.</p>
<pre><code class="language-bash">docker run --rm --name debian --cpus=0.5 -it debian bash
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Antifragile]]></title>
            <link>https://johackim.com/antifragile?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/antifragile</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 20 Mar 2022 23:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/antifragile.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/antifragile.jpg"/>
            <content:encoded><![CDATA[<p>L&#x27;antifragilité est un concept inventé par Nassim Taleb qui se définit comme étant <strong>l&#x27;exact opposé de la fragilité</strong>.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Nassim Taleb</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>L&#x27;antifragilité dépasse la résistance et la solidité. Ce qui est résistant supporte les chocs et reste pareil ; ce qui est antifragile s’améliore.</p>
                    </div>
                </blockquote>
<ul>
<li><strong>Fragile</strong> : qui se casse ou s&#x27;affaiblit lors d&#x27;un impact.</li>
<li><strong>Résilient</strong> : qui encaisse les coups.</li>
<li><strong>Antifragile</strong> : se renforce après chaque coup.</li>
</ul>
<p>Cette notion d&#x27;antifragilité peut être appliquée à de nombreux domaines.</p>
<p>Exemples :</p>
<ul>
<li>L&#x27;industrie de l’aviation se renforce à chaque fois qu&#x27;un avion s&#x27;écrase.</li>
<li>Une bougie est fragile contrairement à un feu de forêt qui se renforce lorsque l&#x27;on souffle dessus.</li>
<li>La musculation, on devient de plus en plus fort à chaque fois que l&#x27;on soulève des poids plus lourds.</li>
<li>Un verre en cristal se casse, une barre de fer encaisse les coups, une hydre se renforce à chaque coup d&#x27;épée.</li>
</ul>
<p>Ce concept peut même être appliqué à notre vie.</p>
<p>Lors d&#x27;un évènement douloureux, on peut le laisser nous briser jusqu&#x27;à ne plus s&#x27;en relever, encaisser les coups, ou bien profiter de cette occasion pour s&#x27;améliorer.</p>
<p>Les obstacles sont inévitables.</p>
<p>Il peut être bon de se rappeler que l&#x27;on a le choix de réagir sous ces 3 manières (fragile, résiliente ou antifragile).</p>
<hr/>
<p>Références :</p>
<ul>
<li>Antifragile - Nassim Taleb</li>
<li>Nassim Taleb - Le Cygne Noir</li>
<li><a href="https://wisdomtheory.gumroad.com/l/100MM">100 Mental Models - Wisdom Theory</a></li>
<li>
<a href="/petites-habitudes-grandes-reussites-onur-karapinar" title="Petites habitudes, Grandes réussites - Onur Karapinar" class="not-found">Petites habitudes, Grandes réussites - Onur Karapinar</a>

</li>
<li><a href="https://fs.blog/an-antifragile-way-of-life/">Farnam Street - 10 Principles to Live an Antifragile Life</a></li>
<li><a href="https://heroic.us/optimize/101/antifragile">Optimize - Antifragile 101</a></li>
<li><a href="https://notes.linkingyourthinking.com/Umami/Antifragility">LYT Kit - Antifragility</a></li>
<li><a href="https://everlaab.com/antifragile/">Everlaab - Antifragile : L’art de prospérer en toute circonstance</a></li>
<li><a href="https://youtube.com/watch?v=BNOwHizM3dE">Gianni Bergandi - DEVENIR ANTIFRAGILE</a></li>
<li><a href="https://art19.com/shows/the-daily-stoic">The Daily Stoic: We Must Be Antifragile</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Antifragilit%C3%A9">Wkipédia - Antifragilité</a></li>
<li><a href="https://sive.rs/book/Antifragile">Derek Sivers - Antifragile</a></li>
<li><a href="https://betterhumans.pub/live-like-a-hydra-c02337782a89">How to Be Antifragile: Live Like a Hydra</a></li>
<li><a href="https://kaizenitude.fr/post/etre-anti-fragile-c-est-quoi">Etre anti-fragile, c&#x27;est quoi ?</a></li>
<li><a href="https://youtu.be/e-or_D-qNqM">Big Think - Don’t chase happiness. Become antifragile | Tal Ben-Shahar | Big Think</a></li>
<li><a href="https://shows.acast.com/le-morningnote-show/episodes/451-antifragile-de-nassim-nicholas-taleb-en-5-idees-simples">Le Morning Note Show - Antifragile de Nassim Nicholas Taleb (en 5 idées simples)</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exporter l'historique de ses notes Telegram dans des fichiers textes]]></title>
            <link>https://johackim.com/exporter-lhistorique-telegram-dans-des-fichiers-textes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/exporter-lhistorique-telegram-dans-des-fichiers-textes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 20 Mar 2022 23:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/exporter-lhistorique-telegram-dans-des-fichiers-textes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/exporter-lhistorique-telegram-dans-des-fichiers-textes.jpg"/>
            <content:encoded><![CDATA[<p>Ayant pour habitude de stocker toutes mes <a href="/notes-temporaires" title="notes temporaires">notes temporaires</a> dans l&#x27;application mobile <a href="https://telegram.org/">Telegram</a>, j&#x27;ai automatisé l&#x27;extraction de mes notes dans mon <a href="/obsidian" title="Obsidian">Obsidian</a>.</p>

<h2>Solution 1 : Exporter les notes dans un seul fichier</h2>
<p>La première solution est d&#x27;exécuter se script bash après avoir exporter mes messages sauvegardés au format <code>json</code> via le menu <code>Export chat history</code> de Telegram.</p>
<pre><code class="language-bash">#!/bin/bash

if [[ ! -f &quot;$1&quot; ]]; then
    echo &quot;usage: telegram-to-text.sh [result.json]&quot;
    exit 1
fi

jq -r &#x27;
    .messages[] |
    select(.text != &quot;&quot;) |
    {date, text: (if .text|type == &quot;array&quot; then (.text[] | select(. != &quot;&quot;) | if .|type == &quot;object&quot; then .text else . end) else .text end)} |
    &quot;\(.date)\n\(.text)\n&quot;&#x27; &lt; &quot;$1&quot;
</code></pre>
<pre><code class="language-bash">telegram-to-text.sh result.json &gt;&gt; Inbox.md
</code></pre>
<h2>Solution 2 : Exporter les notes dans plusieurs fichiers</h2>
<p>La seconde solution consiste à exporter chaque note dans un dossier <code>Journal</code> qui contient toutes mes notes par date (ex: <code>2022-03-01.md</code> ou <code>2022-03-01.txt</code>).</p>
<pre><code class="language-bash">#!/bin/bash

if [[ ! -f &quot;$1&quot; || ! -d &quot;$2&quot; ]]; then
    echo &quot;usage: telegram-to-text.sh [result.json] [destination folder]&quot;
    exit 1
fi

MESSAGES=$(jq -r &#x27;.messages[] |
    select(.text != &quot;&quot;) |
    {
        date: .date[0:10],
        text: (if .text|type == &quot;array&quot; then (.text[] | select(. != &quot;&quot;) | if .|type == &quot;object&quot; then .text else . end) else .text end),
    } | @base64&#x27; &lt; &quot;$1&quot;)

for MESSAGE in $MESSAGES; do
     DATE=$(echo &quot;$MESSAGE&quot; | base64 --decode | jq -r &#x27;.date&#x27; )
     TEXT=$(echo &quot;$MESSAGE&quot; | base64 --decode | jq -r &#x27;.text&#x27; )

     echo &quot;$TEXT&quot; &gt;&gt; &quot;${2}/${DATE}.md&quot;
done
</code></pre>
<pre><code class="language-bash">telegram-to-text.sh result.json Journal
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://gist.github.com/johackim/88f6ea71811a004e72dc37e9494bb618">https://gist.github.com/johackim/88f6ea71811a004e72dc37e9494bb618</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mochi, une application pour mieux retenir vos apprentissages.]]></title>
            <link>https://johackim.com/mochi?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mochi</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 11 Mar 2022 12:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mochi.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mochi.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://mochi.cards/">Mochi</a> est un outil créé par <a href="https://github.com/knubie/">Matthew Steedman</a> pour créer des flashcards afin d&#x27;améliorer à mémoriser ses apprentissages via la méthode de la <a href="/repetition-espacee" title="Répétition espacée" class="not-found">Répétition espacée</a>.</p>

<h2>Installation</h2>
<p>Vous pouvez l&#x27;installer sur <a href="https://mochi.cards/releases/Mochi%20Setup%201.13.7.exe">Windows</a>, <a href="https://mochi.cards/releases/Mochi-1.13.7.AppImage">Linux</a>, <a href="https://mochi.cards/releases/releases/Mochi-1.13.7.dmg">macOS</a>, <a href="https://play.google.com/store/apps/details?id=cards.mochi.app">Android</a> et <a href="https://apps.apple.com/us/app/mochi-flashcards-and-notes/id1507775056">iOS</a>.</p>
<h2>Utilisation</h2>
<p>Les cartes peuvent être rédigé en markdown.</p>
<p>Pour créer des cartes avec <strong>un texte à trou</strong> :</p>
<pre><code class="language-markdown">Créer une carte avec un {{text à trou}}.
</code></pre>
<p>Pour créer des cartes <strong>question/réponse</strong> :</p>
<pre><code class="language-markdown">Créer une carte avec une question

---

Et une réponse
</code></pre>
<p>Vous pouvez aussi créer des templates pour créer vos cartes plus rapidement :</p>
<pre><code class="language-markdown">## &lt;&lt; Mot en français &gt;&gt;

---

&lt;&lt; English word &gt;&gt;

&gt; &lt;&lt; Example sentence &gt;&gt;
</code></pre>
<h2>Bug d&#x27;écran noir</h2>
<p>Si comme moi, vous êtes sur Android 7 et/ou Lineage OS et que vous avez <a href="https://i.imgur.com/9N5X4PT.jpg">un bug d&#x27;écran noir</a> au démarrage de l&#x27;application, il faut mettre à jour Android System WebView :</p>
<ul>
<li>
<strong>Installez <a href="https://play.google.com/store/apps/details?id=com.google.android.webview">Android System WebView</a></strong> depuis votre Store préféré (ex: <a href="https://f-droid.org/fr/packages/com.aurora.store/">Aurora</a>).
</li>
<li>
<strong>Désactivez l&#x27;ancienne version de Android System Webview</strong> depuis le menu Settings -&gt; Apps -&gt; Show system -&gt; Android System Webview -&gt; Disable.
</li>
</ul>
<p>Vous pouvez à présent profiter de votre application 😀 !</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Signification du pendentif "The Obstacle Is the Way" de Ryan Holiday]]></title>
            <link>https://johackim.com/signification-pendentif-obstacle-is-the-way?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/signification-pendentif-obstacle-is-the-way</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 11 Mar 2022 12:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/signification-pendentif-obstacle-is-the-way.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/signification-pendentif-obstacle-is-the-way.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/CEk5c0i.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/PXVpcnT.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/ktpFD4C.jpg"/><p><a href="https://store.dailystoic.com/collections/pendants/products/the-obstacle-is-the-way-pendant">Le médaillon The Obstacle Is The Way de Ryan Holiday</a> provient d&#x27;une citation de l&#x27;un des pères du <strong>stoïcisme</strong> <strong>Marc Aurèle</strong> dans son livre &quot;<a href="https://amzn.to/36nC9q1">Pensées pour moi-même</a>&quot;.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Marc Aurèle - Pensées pour moi-même (Livre V chapitre XX)</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« The impediment to action advances action. What stands in the way becomes the way. »</p>
                    </div>
                </blockquote>
<p>Qui peut se traduire par : &quot;L&#x27;obstacle à l&#x27;action fait avancer l&#x27;action. Ce qui se trouve sur le chemin devient le chemin.&quot;</p>
<p>Ou plus précisément &quot;Ce qui nous empêche d’agir devient le motif de notre action, et ce qui nous barre la route devient ce vers quoi nous marchons.&quot;</p>
<p><strong>Les obstacles de la vie sont inévitables, au lieu de les éviter, mieux vaut les voir comme une opportunité.</strong></p>
<p>Une opportunité d&#x27;apprendre quelque chose et de mieux faire face aux défis futurs.</p>
<p>On ne contrôle pas le monde extérieur, mais on peut contrôler notre réaction.</p>
<p><img src="https://i.imgur.com/CEk5c0i.jpg" alt="|400"/>
<img src="https://i.imgur.com/PXVpcnT.jpg" alt="|400"/>
<img src="https://i.imgur.com/ktpFD4C.jpg" alt="|400"/></p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">James Clear</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>You cannot remove struggle from life, but you can improve your ability to handle challenge.</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Mark Manson</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Don’t hope for a life without problems, There’s no such thing. Instead, hope for a life full of good problems.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/3CGHPHG">The Daily Stoic - Ryan Holiday</a></li>
<li><a href="https://youtube.com/watch?v=CxUd2E5QvM8">Daily Stoic - Marcus Aurelius&#x27; Most Influential Stoic Teaching</a></li>
<li><a href="https://amzn.to/3L0y0Hk">L&#x27;obstacle est le chemin - Ryan Holiday</a></li>
<li>
<a href="/stoicisme" title="Stoïcisme">Stoïcisme</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Neovim : la version améliorée et allégée de vim]]></title>
            <link>https://johackim.com/neovim?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/neovim</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 03 Jan 2022 08:11:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/neovim.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/neovim.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://neovim.io/">Neovim</a> est un éditeur de code basé sur Vim.</p>
<h2>Installation</h2>
<p>Pour installer Neovim sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S neovim
</code></pre>
<p>Sur Ubuntu/Debian :</p>
<pre><code class="language-bash">sudo apt install -y neovim
</code></pre>
<h2>Installer un plugin manager</h2>
<p>Pour installer un plugin, vous devez commencer par installer un <strong>plugin manager</strong>.</p>
<p>Personnellement, j&#x27;utiliser <code>vim-plug</code> :</p>
<pre><code class="language-bash">curl -sfLo ~/.config/nvim/autoload/plug.vim --create-dirs https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
</code></pre>
<h2>Installer un plugin</h2>
<p>Pour installer un plugin (ex: <a href="https://github.com/preservim/nerdtree">nerdtree</a>), créez le fichier de configuration <code>~/.config/nvim/init.vim</code> :</p>
<pre><code class="language-vim">call plug#begin(&#x27;~/.config/nvim&#x27;)
  Plug &#x27;preservim/nerdtree&#x27;
call plug#end()

nnoremap &lt;C-n&gt; :NERDTreeToggle&lt;CR&gt;
</code></pre>
<p>Puis démarrez <code>nvim</code> avec la commande <code>:PlugInstall</code>.</p>
<h2>Ma liste de plugins</h2>
<p>Voici la liste des plugins que j&#x27;utilise :</p>
<pre><code class="language-vim">Plug &#x27;ms-jpq/chadtree&#x27; &quot; Alternative à Nerdtree
Plug &#x27;vimwiki/vimwiki&#x27; &quot; Ajouter le support des wikilinks
Plug &#x27;ctrlpvim/ctrlp.vim&#x27; &quot; Recherche de fichiers
Plug &#x27;dense-analysis/ale&#x27; &quot; Linter
Plug &#x27;tpope/vim-surround&#x27; &quot; Surrounding
Plug &#x27;ap/vim-css-color&#x27; &quot; Afficher les couleurs hexadécimale
Plug &#x27;vim-airline/vim-airline&#x27; &quot; Bar de status
Plug &#x27;preservim/nerdcommenter&#x27; &quot; Commenter/décommenter avec un raccourcis
Plug &#x27;plasticboy/vim-markdown&#x27; &quot; Améliorer la syntax markdown
Plug &#x27;matze/vim-move&#x27; &quot; Déplacer les lignes simplement
Plug &#x27;Raimondi/delimitMate&#x27; &quot; Ajouter des parenthèses automatiquement
Plug &#x27;mattn/emmet-vim&#x27; &quot; Créer rapidement des balises html
Plug &#x27;ryanoasis/vim-devicons&#x27; &quot; Afficher des icones supplémentaires
</code></pre>
<h2>Afficher les numéros de ligne</h2>
<p>Pour afficher les numéros de ligne dans Neovim, ajouter la ligne suivante au fichier <code>~/.config/nvim/init.vim</code> :</p>
<pre><code class="language-vim">set number
</code></pre>
<h2>Installer un thème</h2>
<p>Ajouter votre thème dans le dossier <code>~/.config/nvim/themes/</code>, exemple :</p>
<pre><code class="language-bash">wget -O ~/.config/nvim/themes/boring.vim https://raw.githubusercontent.com/t184256/vim-boring/master/colors/boring.vim
</code></pre>
<p>Ou utiliser <code>vim-plug</code>, exemple :</p>
<pre><code class="language-vim">Plug &#x27;t184256/vim-boring&#x27;
</code></pre>
<p>Puis ajouter les lignes suivantes dans votre fichier <code>init.vim</code> :</p>
<pre><code class="language-vim">source $HOME/.config/nvim/themes/boring.vim
</code></pre>
<p>Pour supporter la transparence ajouter les lignes suivantes :</p>
<pre><code class="language-vim">highlight Normal ctermbg=none
highlight NonText ctermbg=none
</code></pre>
<h2>Copy paste</h2>
<p>Pour copier dans le presse papier de votre système les données selectionnée via le mode visuel de Neovim, ajouter la ligne suivante dans votre fichier de configuration :</p>
<pre><code class="language-vim">set clipboard+=unnamedplus
</code></pre>
<h2>Vérifier la santé de neovim</h2>
<pre><code class="language-vim">:checkHealth
</code></pre>
<h2>Créer un template</h2>
<pre><code class="language-vim">&quot; Templates
au BufNewFile Dockerfile r ~/.config/nvim/templates/Dockerfile
</code></pre>
<h2>Autocmd</h2>
<p>Afficher le nombre de lignes lorsque l&#x27;on entre dans le buffer d&#x27;un fichier markdown :</p>
<pre><code class="language-bash">au BufEnter *.md set number
</code></pre>
<ul>
<li><a href="https://learnvimscriptthehardway.stevelosh.com/chapters/12.html">https://learnvimscriptthehardway.stevelosh.com/chapters/12.html</a></li>
<li><a href="http://vimdoc.sourceforge.net/htmldoc/autocmd.html">http://vimdoc.sourceforge.net/htmldoc/autocmd.html</a></li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/johackim/dotfiles/">https://github.com/johackim/dotfiles/</a></li>
<li><a href="https://github.com/NvChad/NvChad">https://github.com/NvChad/NvChad</a></li>
<li><a href="https://neovimcraft.com/">https://neovimcraft.com/</a></li>
<li><a href="https://github.com/onivim/oni2">https://github.com/onivim/oni2</a></li>
<li><a href="https://github.com/hrsh7th/nvim-cmp">https://github.com/hrsh7th/nvim-cmp</a></li>
<li><a href="https://github.com/epwalsh/obsidian.nvim">https://github.com/epwalsh/obsidian.nvim</a></li>
<li><a href="https://github.com/nvim-neorg/neorg">https://github.com/nvim-neorg/neorg</a></li>
<li><a href="https://github.com/AstroNvim/AstroNvim">https://github.com/AstroNvim/AstroNvim</a></li>
<li><a href="https://github.com/olimorris/codecompanion.nvim">https://github.com/olimorris/codecompanion.nvim</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un système d'authentification OAuth avec spotify]]></title>
            <link>https://johackim.com/creer-un-systeme-dauthentification-oauth-avec-spotify?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-systeme-dauthentification-oauth-avec-spotify</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 26 Dec 2021 15:44:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-systeme-dauthentification-oauth-avec-spotify.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-systeme-dauthentification-oauth-avec-spotify.jpg"/>
            <content:encoded><![CDATA[<p>Voici comment créer un système d&#x27;authentification <a href="/oauth" title="OAuth" class="not-found">OAuth</a> avec Spotify.</p>

<p>Commencez par <a href="https://developer.spotify.com/dashboard/">créer un compte développeur sur Spotify</a>.</p>
<p>Une fois le compte créé, vous avez accès à un <strong>client ID</strong> et <strong>client Secret</strong>.</p>
<p>Ensuite, ajoutez votre site (ex: <a href="http://localhost:3000/">http://localhost:3000/</a>) et l&#x27;<strong>URL de callback</strong> (ex: <a href="http://localhost:3000/callback">http://localhost:3000/callback</a>) dans les settings.</p>
<p>Ajoutez dans votre code (JavaScript, PHP, Python) un lien (ex: <code>/login</code>) qui redirige vers l&#x27;adresse suivante :</p>
<pre><code class="language-js">const CLIENT_ID = &#x27;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&#x27;;
const REDIRECT_URI = &#x27;http://localhost:3000/callback&#x27;;

const scope &#x27;user-read-email&#x27;; // Plus d&#x27;infos sur https://spoti.fi/3sp8zZY
const state &#x27;f5d587a11cf33f26812ff17bbedb1928&#x27; // une chaine aléatoire de 16 caractères

res.redirect(`https://accounts.spotify.com/authorize?response_type=code&amp;client_id=${CLIENT_ID}&amp;scope=${scope}&amp;redirect_uri=${REDIRECT_URI}&amp;state=${state}`);
</code></pre>
<p>Une fois que la personne à cliquer sur le lien spotify, cela lui demandera si il accepte de nous fournir ces informations, dans notre cas il s&#x27;agit de l&#x27;email (user-read-email).</p>
<p>Cela redirigera ensuite la personne sur l&#x27;adresse de callback avec le paramètre <code>code</code>.</p>
<p>Ce paramètre <code>code</code> nous sert à récupérer le <strong>token d&#x27;accès</strong> pour communiquer avec l&#x27;<a href="https://developer.spotify.com/documentation/web-api/reference">API de spotify</a>.</p>
<pre><code class="language-js">const { code } = req.query;
const { CLIENT_ID, CLIENT_SECRET, REDIRECT_URI } = process.env;

const { access_token: accessToken } = await fetch(&#x27;https://accounts.spotify.com/api/token&#x27;, {
    method: &#x27;POST&#x27;,
    headers: {
        Authorization: `Basic ${Buffer.from(`${CLIENT_ID}:${CLIENT_SECRET}`).toString(&#x27;base64&#x27;)}`,
        &#x27;Content-Type&#x27;: &#x27;application/x-form-urlencoded&#x27;,
    },
    body: new URLSearchParams({
        code,
        redirect_uri: REDIRECT_URI,
        grant_type: &#x27;authorization_code&#x27;,
    }),
}).then((r) =&gt; r.json());
</code></pre>
<p>On peut à présent <a href="https://developer.spotify.com/documentation/web-api/reference/#/operations/get-current-users-profile">récupérer l&#x27;email de l&#x27;utilisateur</a> :</p>
<pre><code class="language-js">const { email } = await fetch(&#x27;https://api.spotify.com/v1/me&#x27;, {
    headers: { Authorization: `Bearer ${accessToken}` },
}).then((r) =&gt; r.json());
</code></pre>
<p>PS : Si vous recevez une erreur du type &#x27;User not registered in the Developer Dashboard&#x27;, c&#x27;est que votre application Spotify est encore en <a href="https://developer.spotify.com/dashboard/">Development mode</a>. Vous devez soit faire &quot;REQUEST EXTENSION&quot; pour sortir du mode développement, soit ajouter les utilisateurs manuellement.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://developer.spotify.com/documentation/web-api/reference">API de Spotify</a></li>
<li><a href="https://developer.spotify.com/console/">API de Spotify 2</a></li>
<li><a href="https://developer.spotify.com/documentation/general/guides/authorization/">Documentation OAuth de spotify</a></li>
<li><a href="https://grafikart.fr/tutoriels/oauth2-php-google-1171">Grafikart - Comprendre l&#x27;OAUTH 2.0</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'art du crochetage de serrures]]></title>
            <link>https://johackim.com/lockpicking?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/lockpicking</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 26 Dec 2021 15:44:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/lockpicking.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/lockpicking.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/qa2AqFX.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/1zUHfTk.jpg"/><p>Je viens de recevoir un <a href="https://amzn.to/3RE4Ty7">Kit de crochetage</a>.</p>
<p><img src="https://i.imgur.com/qa2AqFX.jpg" alt="Emballage du kit"/></p>
<p><img src="https://i.imgur.com/1zUHfTk.jpg" alt="Kit de crochetage"/></p>
<p>C&#x27;est un kit qui sert à déverrouiller un cadenas facilement sans utiliser une clé.</p>
<p>Il est livré avec <a href="https://drive.proton.me/urls/K663RGJ17W#blC1vJh6iCf5">un guide PDF</a> pour apprendre comment se servir des outils.</p>
<p>L&#x27;avantage de ce kit, c&#x27;est que les cadenas sont transparents afin de pouvoir visualiser chaque goupille.</p>
<p>Les 2 méthodes les plus utilisés pour crocheter une serrure sont les suivantes.</p>
<h2>Méthode 1 : Le Raclage (Raking)</h2>
<p>Pour cette méthode, il faut utiliser 2 outils :</p>
<ul>
<li>Un crochet Râteau</li>
<li>Une clé de Tension</li>
</ul>
<p><a href="https://youtube.com/watch?v=-pFd5vOItRA">Vidéo d&#x27;illustration de la méthode de Raclage</a></p>
<p>J&#x27;ai réussi sans trop comprendre ce que j&#x27;ai fait en moins d&#x27;une heure avec cette méthode. Puis en moins de 2 minutes la seconde fois 😀.</p>
<h2>Méthode 2 : La Goupille par Goupille (Single Pin Picking)</h2>
<p>Pour cette méthode, il faut utiliser 2 outils :</p>
<ul>
<li>Un crochet</li>
<li>Une clé de Tension</li>
</ul>
<p><a href="https://youtu.be/WIqabEhjrRM">Vidéo d&#x27;illustration de la méthode Goupille par goupille</a></p>
<p>45 secondes pour réussir une première fois 😀</p>
<h2>Crocheter un vrai cadenas</h2>
<p>Pour le crochetage d&#x27;un vrai cadenas, il m&#x27;a fallu une heure, je n&#x27;ai pas encore le coup de main 😅.</p>
<p>Le lockpicking est un art qui permet de se détacher du monde virtuel et se reconnecter avec le monde physique de temps en temps.</p>
<p>EDIT: Je commence à avoir le coup de main à force de jouer tous les jours 😁</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/q2zJF7P7BHA">Micode - Je suis entré par effraction chez mon voisin</a></li>
<li><a href="https://youtu.be/Bto1eil6c6E">Tristan - APPRENDRE LE LOCKPICKING</a></li>
<li><a href="https://amazon.fr/dp/B01LWQ0F40">Pick gun</a></li>
<li><a href="https://youtu.be/L7dnmHnJbww?t=2049">Key impressioning</a></li>
<li>
<a href="/cybersecurite" title="Cybersécurité">Cybersécurité</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Jouer aux jeux vidéos de vos consoles préférés depuis votre ordinateur avec Retrobat]]></title>
            <link>https://johackim.com/retrobat?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/retrobat</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 26 Dec 2021 15:44:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/retrobat.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/retrobat.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://retrobat.org">Retrobat</a> vous permet de jouer aux jeux vidéos de vos consoles préférés directement depuis votre ordinateur Windows.</p>
<h2>Installation de Retrobat</h2>
<p>Pour l&#x27;installer, rendez-vous sur <a href="https://retrobat.org/download/">la page de téléchargement</a> pour télécharger le fichier .exe d&#x27;installation.</p>
<p>Exécutez le fichier sur Windows et suivez les instructions d&#x27;installation.</p>
<h2>Utilisation de Retrobat</h2>
<p><strong>Je vous conseille fortement de brancher et d&#x27;utiliser une manette avant de démarrer Retrobat</strong>, mais au cas où, voici quelques raccourcis clavier à connaitre :</p>
<ul>
<li>Pour valider un choix, appuyez sur la touche <code>x</code>.</li>
<li>Pour annuler une action, appuyez sur la touche <code>z</code>.</li>
<li>Pour afficher le menu principal, appuyez sur la touche <code>Entrée</code>.</li>
<li>Pour afficher le menu secondaire, appuyez sur la touche <code>&lt;-- Retour arrière</code>.</li>
</ul>
<p><a href="https://github.com/kaylh/RetroBat/wiki/Default-Inputs">Rendez-vous ici pour consulter les autres raccourcis</a>.</p>
<p>Démarrez Retrobat, puis sélectionnez un des jeux disponibles sur la console de votre choix.</p>
<h2>Télécharger un jeu</h2>
<p>Pour télécharger vos jeux vidéos, rendez-vous sur votre moteur de recherche préféré et tapez la recherche suivante :</p>
<pre><code class="language-txt">&lt;jeux video&gt; &lt;console&gt; ROM
</code></pre>
<p>Par exemple, pour télécharger le jeu Mario Smash Football sur GameCube :</p>
<pre><code class="language-txt">Mario Smash Football GameCube ROM
</code></pre>
<p>Ensuite, téléchargez votre ROM via un lien qui fonctionne parmi la liste des résultats.</p>
<p>PS : Sinon vous pouvez aussi vous rendre sur <a href="https://crocdb.net">Crocdb.net</a> !</p>
<h2>Installer un jeu</h2>
<p>Pour installer un jeu, il vous suffit de copier-coller vos ROMS dans le dossier <code>C:\RetroBat\roms</code>.</p>
<h2>Sauvegarder un jeu</h2>
<p>Lorsque vous jouez, les sauvegardes sont enregistrées automatiquement dans le dossier <code>C:\RetroBat\saves</code>.</p>
<p>Pour les sauvegardes GameCube, rendez-vous dans l&#x27;émulateur Dolphin et faites un clique droit sur votre jeu puis aller dans le dossier de sauvegardes où se trouvent vos fichiers <code>.cgi</code>.</p>
<h2>Configurer la touche spéciale (hotkey) de votre manette</h2>
<p>Pour configurer le hotkey de votre manette (ex : <code>select</code>), rendez-vous dans les paramètres des manettes et configurer une manette.</p>
<p>Cette touche spéciale vous permettra de gérer Retrobat et les émulateurs avec des raccourcis pour pouvoir quitter un jeu rapidement ou créer/charger une sauvegarde rapide.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/RetroBat-Official/retrobat-setup">https://github.com/RetroBat-Official/retrobat-setup</a></li>
<li>
<a href="/jeux-videos" title="Jeux vidéos" class="not-found">Jeux vidéos</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exécutez facilement vos opérations CRUD avec Sequelize]]></title>
            <link>https://johackim.com/sequelize?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/sequelize</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 26 Dec 2021 15:44:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/sequelize.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/sequelize.jpg"/>
            <content:encoded><![CDATA[<p>Sequelize est un ORM Node.js qui permet de créer, éditer et supprimer des données dans une base de données (SQLite, MySQL, PostgreSQL, etc...).</p>
<p>L&#x27;avantage d&#x27;un ORM, ce que notre code ne dépend pas uniquement d&#x27;un type de de base de donnée.</p>
<h2>Installation</h2>
<p>Pour installer sequelize avec SQLite, exécutez la commande suivante :</p>
<pre><code class="language-bash">yarn add -D sequelize sqlite3
</code></pre>
<h2>Configuration</h2>
<p>Créez un fichier <code>models.js</code> avec les détails de votre base de donnée (ex: User).</p>
<pre><code class="language-js">// models.js

import { Sequelize, DataTypes } from &#x27;sequelize&#x27;;

const sequelize = new Sequelize({
    dialect: &#x27;sqlite&#x27;,
    storage: `${__dirname}/db.sqlite`,
    query: { raw: true },
});

export const User = sequelize.define(&#x27;User&#x27;, {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true,
    },
    name: {
        type: DataTypes.STRING,
    },
    email: {
        type: DataTypes.STRING,
    },
});

User.sync();
</code></pre>
<h2>Selection</h2>
<p>Pour effectuer une requête de type <code>SELECT</code> :</p>
<pre><code class="language-js">const users = await User.findAll();
// ou
const user = User.findOne({ where: { name: &#x27;Marty&#x27; } });
</code></pre>
<h2>Mise à jour</h2>
<p>Pour mettre à jour des données :</p>
<pre><code class="language-js">await User.update({ name: &#x27;Biff&#x27; }, { where: { name: &#x27;Marty&#x27; } });
</code></pre>
<h2>Suppression</h2>
<p>Pour supprimer des données :</p>
<pre><code class="language-js">await User.destroy({ force: true, truncate: true, cascade: true });
</code></pre>
<h2>Création</h2>
<p>Pour créer un utilisateur dans la table User, exécutez le code Node.js suivant :</p>
<pre><code class="language-js">await User.create({ name: &#x27;Marty&#x27;, email: &#x27;marty@bttf.com&#x27; });
</code></pre>
<h2>Relation many-to-many</h2>
<p>Si par exemple, un utilisateur peut avoir plusieurs livres et qu&#x27;un livre peut appartenir à plusieurs utilisateurs. Il vous faut créer <strong>une association many-to-many</strong> dans votre fichier <code>models.js</code> :</p>
<pre><code class="language-js">// models.js

export const Book = sequelize.define(&#x27;book&#x27;, {
    id: {
        type: Sequelize.INTEGER,
        primaryKey: true,
        autoIncrement: true,
    },
    name: { type: DataTypes.STRING },
});

User.belongsToMany(Book, { through: &#x27;userBooks&#x27; });
Book.belongsToMany(User, { through: &#x27;userBooks&#x27; });
</code></pre>
<p>Cela créera une table intérmédiare <code>userBooks</code>.</p>
<p>Vous pouvez ensuite créer vos livres de cette manière :</p>
<pre><code class="language-js">const user = await findOne({ name: &#x27;Marty&#x27; });
await user.addBook({ name: &#x27;Back To The Futur&#x27; });
</code></pre>
<p>Et récupérez vos livres de cette manière :</p>
<pre><code class="language-js">const books = await User.findAll({ where: { name: &#x27;Marty&#x27; }, include: Book, raw: false });
</code></pre>
<p>Ou de cette manière :</p>
<pre><code class="language-js">const books = await User.findAll({ include: { all: true, nested: true }, raw: false });
</code></pre>
<h2>Relation one-to-many</h2>
<pre><code class="language-js">User.hasMany(Book);
Book.belongsTo(User);
</code></pre>
<h2>Activer le mode debug</h2>
<p>Si vous voulez voir le détail des requêtes SQL générés, ajouter le paramètre <code>logging</code> à votre fonction, exempl :</p>
<pre><code class="language-js">const users = await User.findAll({ logging: console.log });
</code></pre>
<h2>Utiliser des fonctions SQL</h2>
<p>Si vous avez besoin de faire une recherche avec des fonctions SQL (ex: <code>lower()</code>) :</p>
<pre><code class="language-js">await User.findAll({
    where: Sequelize.where(
        Sequelize.fn(&#x27;lower&#x27;, Sequelize.col(&#x27;name&#x27;)),
        Sequelize.fn(&#x27;lower&#x27;, name),
    ),
});
</code></pre>
<h2>Définir des champs virtuels</h2>
<p>Au lieu de créer directement un champ dans la base de donnée, vous pouvez définir des champs virtuels afin de récupérer des valeurs personnalisés :</p>
<pre><code class="language-js">import { DataTypes } from &#x27;sequelize&#x27;;

const User = sequelize.define(&#x27;user&#x27;, {
    firstName: DataTypes.TEXT,
    lastName: DataTypes.TEXT,
    fullName: {
        type: DataTypes.VIRTUAL,
        get() {
            return `${this.firstName} ${this.lastName}`;
        },
        set(value) {
            throw new Error(&#x27;Do not try to set the `fullName` value!&#x27;);
        }
    }
});
</code></pre>
<h2>Exécuter une requête manuelle</h2>
<pre><code class="language-js">await sequelize.query(&#x27;UPDATE apps SET updatedAt = :updatedAt WHERE id = :id&#x27;, {
  replacements: { updatedAt, id },
});
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Next.js]]></title>
            <description><![CDATA[Next.js est un framework JavaScript basé sur React pour créer des applications Web.]]></description>
            <link>https://johackim.com/nextjs?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/nextjs</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 19 Dec 2021 17:57:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/nextjs.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/nextjs.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://nextjs.org/">Next.js</a> est un framework JavaScript basé sur React pour créer des applications Web.</p>
<h2>Installation</h2>
<p>Pour créer une application Next.js, exécutez la commande suivante :</p>
<pre><code class="language-bash">yarn add -D next react react-dom
</code></pre>
<p>Créez les 2 fichiers suivants :</p>
<pre><code class="language-js">// pages/index.js

export default () =&gt; &lt;p&gt;Hello world&lt;/p&gt;;
</code></pre>
<pre><code class="language-js">// pages/_app.js

export default ({ Component, pageProps }) =&gt; &lt;Component {...pageProps} /&gt;;
</code></pre>
<p>Puis ajoutez les commandes suivantes pour utiliser Next.js plus facilement :</p>
<pre><code class="language-bash">npm pkg set scripts.dev=&quot;next dev&quot;
npm pkg set scripts.build=&quot;next build&quot;
npm pkg set scripts.start=&quot;next start&quot;
npm pkg set scripts.lint=&quot;next lint&quot;
</code></pre>
<p>PS : Exécutez la commande <code>npm init -f</code> si votre fichier <code>package.json</code> n&#x27;existe pas.</p>
<h2>Utilisation</h2>
<p>Une fois installé, vous pouvez démarrer <a href="https://nextjs.org/">Next.js</a> avec la commande suivante :</p>
<pre><code class="language-bash">npm run dev
</code></pre>
<h2>Fonctions spéciales Next.js</h2>
<p>Il existe certaines fonctions propre à next.js :</p>
<ul>
<li><code>getStaticProps</code> : fonction utilisé pour récupérer du contenu static durant la phase de build</li>
<li><code>getServerSideProps</code> : fonction utilisé pour récupérer du contenu depuis un serveur</li>
<li><code>getInitialProps</code> : fonction utilisé pour récupérer du contenu depuis un serveur ou un client</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://grafikart.fr/tutoriels/nextjs-react-1892">Grafikart - Tutoriel vidéo React: Next.js</a></li>
<li><a href="https://youtube.com/watch?v=MrjeefD8sac">Static Blog With Next.js and Markdown</a></li>
<li><a href="https://nextjs.org/docs/">Documentation Next.js</a></li>
<li><a href="https://jsmastery.pro/ultimate-next-course">https://jsmastery.pro/ultimate-next-course</a></li>
<li><a href="https://nextjs.org/docs/app/api-reference/file-conventions/metadata">https://nextjs.org/docs/app/api-reference/file-conventions/metadata</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Storybook]]></title>
            <link>https://johackim.com/storybook?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/storybook</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 19 Dec 2021 17:57:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/storybook.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/storybook.jpg"/>
            <content:encoded><![CDATA[<p>Storybook permet de créer des composants d&#x27;interface utilisateur indépendamment de la logique métier, des données et du contexte d&#x27;une application.</p>
<p>Je l&#x27;utilise pour isoler chacun de mes composants et les visualiser indépendamment des autres.</p>
<p>Ça m&#x27;incite à développer et debugger chaque composant une seule fois plutôt que de devoir le refaire plusieurs fois à 10 endroits différents.</p>
<h2>Installation</h2>
<p>Si vous n&#x27;avez pas encore de projet, créez-en un avec la commande suivante :</p>
<pre><code class="language-bash">npm init --force
</code></pre>
<p>Pour installer Storybook, exécutez la commande suivante :</p>
<pre><code class="language-bash">npx sb init
</code></pre>
<h2>Utilisation</h2>
<p>Pour lancer Storybook, exécutez la commande suivante :</p>
<pre><code class="language-bash">npm run storybook
</code></pre>
<p>Rendez-vous sur <a href="http://localhost:6006">http://localhost:6006</a></p>
<h2>Exemple de storybook</h2>
<p>Voici un exemple de storybook pour un composant <code>header</code> :</p>
<pre><code class="language-js">// components/header.stories.jsx

import Header from &#x27;./header&#x27;;

export default {
    title: &#x27;Components/Header&#x27;,
    component: Header,
};

const Template = (args) =&gt; &lt;Header {...args} /&gt;;

export const Default = Template.bind({});
</code></pre>
<h2>Installer le plugin storybook-tailwind-dark-mode</h2>
<pre><code class="language-bash">yarn add -D storybook-tailwind-dark-mode
</code></pre>
<p>N&#x27;oubliez pas d&#x27;activer le darkMode en attribuant la valeur <code>class</code> au fichier <code>tailwind.config.js</code>, cela permettra de prendre en compte les classes html <code>dark:</code> :</p>
<pre><code class="language-bash">// tailwind.config.js

module.exports = {
    darkMode: &#x27;class&#x27;,
};
</code></pre>
<h2>Ajouter le support des CSS modules</h2>
<p>Pour ajouter le support des <a href="https://github.com/css-modules/css-modules">CSS Modules</a>, ajouter les lignes suivantes :</p>
<pre><code class="language-diff">module.exports = {
    stories: [&#x27;../**/*.stories.mdx&#x27;, &#x27;../**/*.stories.@(js|jsx|ts|tsx)&#x27;],
    addons: [
        &#x27;storybook-tailwind-dark-mode&#x27;,
        &#x27;@storybook/addon-links&#x27;,
        &#x27;@storybook/addon-essentials&#x27;,
        {
            name: &#x27;@storybook/addon-postcss&#x27;,
            options: {
                postcssLoaderOptions: {
                    implementation: require(&#x27;postcss&#x27;),
                },
+               cssLoaderOptions: {
+                   modules: {
+                       auto: true,
+                   },
+               },
            },
        },
    ],
    framework: &#x27;@storybook/react&#x27;,
};
</code></pre>
<h2>Ajouter le support des images sur Next.js</h2>
<p>Pour ajouter le support des <a href="https://nextjs.org/docs/api-reference/next/image">images sur Next.js</a>, ajoutez les lignes suivantes :</p>
<pre><code class="language-diff">import &#x27;../styles/globals.css&#x27;;

+ import * as nextImage from &#x27;next/image&#x27;;

+ Object.defineProperty(nextImage, &#x27;default&#x27;, {
+   configurable: true,
+   value: (props) =&gt; &lt;img {...props} /&gt;,
+ });

export const parameters = {
    actions: { argTypesRegex: &#x27;^on[A-Z].*&#x27; },
    controls: {
        matchers: {
            color: /(background|color)$/i,
            date: /Date$/,
        },
    },
};
</code></pre>
<h2>Ajouter des décorateurs</h2>
<p>Pour toutes le stories d&#x27;un composant :</p>
<pre><code class="language-js">export default {
    title: &#x27;Components/Layout&#x27;,
    component: Layout,
    decorators: [(Story) =&gt; &lt;div id=&quot;storybook&quot;&gt;{Story()}&lt;/div&gt;],
};
</code></pre>
<p>Pour chaque stories d&#x27;un composant :</p>
<pre><code class="language-js">export const Default = Template.bind({});

Default.args = {
    ...Layout.defaultProps,
    children: &lt;section className=&quot;pt-20 px-4 container mx-auto lg:max-w-screen-lg&quot;&gt;Hello world&lt;/section&gt;,
};

Default.decorators = [(Story) =&gt; &lt;div id=&quot;storybook&quot;&gt;{Story()}&lt;/div&gt;];
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://storybook.js.org/">https://storybook.js.org/</a></li>
<li><a href="https://gitlab-org.gitlab.io/gitlab-ui/?path=/story/base-accordion--default">Exemple de storybook</a></li>
<li><a href="https://youtube.com/watch?v=CLwX9EWlWJM">Grafikart - Tutoriel JavaScript : Storybook</a></li>
<li>
<a href="/design-system" title="Design system" class="not-found">Design system</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pourquoi suis-je difficilement joignable ?]]></title>
            <link>https://johackim.com/contact?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/contact</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 29 Nov 2021 08:42:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/contact.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/contact.jpg"/>
            <content:encoded><![CDATA[<p>À l&#x27;époque, il existait seulement 2 moyens de nous joindre, par courrier ou en physique. Aujourd&#x27;hui, avec internet il en existe des dizaines.</p>
<p>Cependant, il y a quelque chose qui n&#x27;a pas changé, le temps. Nous avons toujours que 24h dans une journée et notre temps sur cette terre est limitée.</p>
<p>J&#x27;envie cette époque où l&#x27;on pouvait être libre de nos mouvements sans être sans cesse alpagué par n&#x27;importe qui.</p>
<p>Notre temps est la ressource la plus importante. Une fois écoulé, il n&#x27;est pas possible d&#x27;en ravoir.</p>
<p>Alors, pourquoi permettre à tout le monde de nous joindre à n&#x27;importe quel moment de la journée sous prétexte qu&#x27;un téléphone sert à être joignable ?</p>
<p>On a souvent le réflexe de répondre immédiatement à chaque message par &quot;urgence&quot; (Scarcity). Cette urgence étant très rare, est-ce que cette peur doit justifier tout ce temps perdu ?</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">L’ancien président des États-Unis Dwight D. Eisenhower</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« Les choses urgentes sont rarement importantes, et les choses importantes sont rarement urgentes »</p>
                    </div>
                </blockquote>
<p>Du coup, pour éviter d&#x27;être sans cesse dans la réaction plutôt que dans la création, j&#x27;ai décidé de faire comme Christopher Nolan<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup> et de ne plus être joignable par téléphone, e-mail ou toute autre application de messagerie à quelques exceptions près.</p>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
<a href="https://fr.wikipedia.org/wiki/Christopher_Nolan#Vie_personnelle">https://fr.wikipedia.org/wiki/Christopher_Nolan#Vie_personnelle</a> <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a>
</li>
</ol>
</section>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flashcard]]></title>
            <link>https://johackim.com/flashcard?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/flashcard</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 21 Nov 2021 20:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/flashcard.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/flashcard.jpg"/>
            <content:encoded><![CDATA[<p>Fondée à partir du principe de la <strong><a href="/repetition-espacee" title="Répétition espacée" class="not-found">Répétition espacée</a></strong> (Spaced repetition en anglais) et du principe de la <strong><a href="/revision-active" title="Révision active" class="not-found">Révision active</a></strong> (Active Recall en anglais), la méthode des flashcards permet de se souvenir de ce que l&#x27;on apprend en plaçant sur des fiches cartonnées une question d&#x27;un côté et une réponse de l&#x27;autre.</p>

<p>C&#x27;est un moyen très efficace pour faire face à <strong><a href="/la-courbe-de-l&#x27;oubli" title="La courbe de l&#x27;oubli" class="not-found">La courbe de l&#x27;oubli</a></strong> qui nous fait oublier toutes les informations que l&#x27;on a appris au bout de 6 mois.</p>

<p>Les temps idéaux pour revoir chaque flashcard sont d’environ 10 minutes, un jour, une semaine, un mois et six mois.</p>
<h2>Comment structurer une flashcard ?</h2>
<p>Le principe est simple, il suffit de renseigner une question ou un problème sur le recto d&#x27;une fiche bristol et une réponse sur le verso.</p>
<p>Il y a une règle à retenir -&gt; <strong>une flashcard = une notion</strong>.</p>
<h2>Comment choisir quelle flashcard créer ?</h2>
<p>Ajoutez uniquement des flashcards qui ont pour but de vous aider dans la vie de tous les jours.</p>
<p>Exemples :</p>
<ul>
<li><a href="https://youtu.be/fJ4ENhw-G4s&amp;t=571s">Flashcards d&#x27;erreur</a></li>
<li>Modèles mentaux</li>
<li>Biais cognitifs</li>
<li>Décisions</li>
</ul>
<h2>Carte question/réponse (Question + Answer flashcard)</h2>
<p>C&#x27;est le format par défaut qui consiste à séparer une carte en deux avec une question et une réponse au dos.</p>
<h2>Les cartes texte à trous (Close Deletion flashcard)</h2>
<p>Ce sont simplement des cartes avec des textes à trous.</p>
<h2>Les cartes inversées (Reverse flashcard)</h2>
<p>Carte qui inverse la question et la réponse. Exemple : <code>Madrid ? -&gt; Capitale de l&#x27;espagne</code> au lieu de <code>Capitale de l&#x27;espagne ? -&gt; Madrid</code>.</p>
<p>Concernant le contenu, renseignez uniquement ce qui pertinent de retenir pour vous. Toujours ce poser la question de pourquoi l&#x27;on souhaite retenir cette information ?</p>
<h2>Outils pour gérer ses flashcards</h2>
<p>Vous pouvez créer vos cartes sur des Post-it, sur des fiches bristol ou n&#x27;importe quel morceau de papier.</p>
<p>Et vous pouvez aussi utiliser les outils numériques :</p>
<ul>
<li><a href="https://apps.ankiweb.net">Anki</a></li>
<li><a href="https://quizlet.com">Quizlet</a></li>
<li><a href="https://brainscape.com">Brainscape</a></li>
<li><a href="https://neuracache.com">Neuracache</a></li>
<li><a href="https://mochi.cards">Mochi</a></li>
<li><a href="https://readwise.io">Readwise</a></li>
<li><a href="https://traverse.link">Traverse.link</a></li>
<li><a href="https://memrise.com">Memrise</a></li>
<li><a href="https://remnote.com">Remnote</a></li>
<li><a href="https://memcode.com">Memcode</a></li>
<li><a href="https://studykit.app">Studykit</a></li>
<li><a href="https://memoanki.com">MemoAnki</a></li>
</ul>
<p>Personnellement, j&#x27;utilise <a href="/mochi" title="Mochi">Mochi</a>.</p>

<hr/>
<p>Références :</p>
<ul>
<li><a href="https://skillshare.com/classes/Learn-Anything-With-Flashcards-The-Ultimate-Guide-To-Anki/1530220171">Ali Abdaal - Learn Anything With Flashcards</a></li>
<li><a href="https://blog.readwise.io/remember-more-of-what-you-read-with-readwise/">Remember Significantly More of What You Read With Readwise</a></li>
<li><a href="https://youtu.be/n3CkA3Qc8kY">FabienOlicard - Les Flash Cards pour réviser et retenir efficacement</a></li>
<li><a href="https://amzn.to/3NSidwL">Arrêtez d&#x27;oublier ce que vous lisez ! - Eliott Meunier</a></li>
<li><a href="https://brainscape.com/subjects">https://brainscape.com/subjects</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'effet what the hell]]></title>
            <link>https://johackim.com/leffet-what-the-hell?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/leffet-what-the-hell</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 21 Nov 2021 20:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/leffet-what-the-hell.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/leffet-what-the-hell.jpg"/>
            <content:encoded><![CDATA[<p><strong>L&#x27;effet What The Hell</strong> est le fait de décider de prolonger une mauvaise action après avoir initié une mauvaise action.</p>
<p>Exemples :</p>
<ul>
<li>
Vous faites une entrave à votre diète en mangeant un burger, du coup vous en profiter pour vous décider de prendre tout ce qu&#x27;il y a de plus gras dans le menu.
</li>
<li>
Vous n&#x27;êtes pas aller courir cette semaine du coup vous vous dites &quot;bon bah au point où j&#x27;en suis autant reprendre la course seulement la semaine prochaine&quot;.
</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/bigger-leaner-stronger-michael-matthews" title="Bigger Leaner Stronger - Michael Matthews" class="not-found">Bigger Leaner Stronger - Michael Matthews</a>

</li>
<li>
<a href="/psychologie" title="Psychologie">Psychologie</a>

</li>
<li>
<a href="/pensee-tout-ou-rien" title="Pensée tout ou rien">Pensée tout ou rien</a>

</li>
<li><a href="https://i.imgur.com/qmejYY5.jpeg">https://i.imgur.com/qmejYY5.jpeg</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'illusion de fréquence]]></title>
            <link>https://johackim.com/lillusion-de-frequence?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/lillusion-de-frequence</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 21 Nov 2021 20:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/lillusion-de-frequence.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/lillusion-de-frequence.jpg"/>
            <content:encoded><![CDATA[<p>Notre tendance à voir plus souvent quelque chose après l&#x27;avoir remarqué pour la premère fois.</p>
<p>Exemple :</p>
<ul>
<li>
Si vous acheter une paire du chaussure Nike, vous aurez l&#x27;impression que beaucoup plus de gens portent des chaussures Nike
</li>
<li>
Vous découvrez le principe de l&#x27;éclairage trois points, vous ferez beaucoup plus attention à l&#x27;éclairage des vidéos que vous regarderez.
</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://cm.stackedmarketer.com/t/j-e-eudfly-dkdhjdliv-r/">Psychology of Marketing</a></li>
<li><a href="https://customercamp.co/frequency-illusion/">https://customercamp.co/frequency-illusion/</a></li>
<li><a href="https://sketchplanations.com/the-frequency-illusion">https://sketchplanations.com/the-frequency-illusion</a></li>
<li><a href="https://customercamp.co/baader-meinhof-phenomenon/">https://customercamp.co/baader-meinhof-phenomenon/</a></li>
<li><a href="https://42courses.com/blog/home/2022/9/2/42-effects-you-should-know-part-2">https://42courses.com/blog/home/2022/9/2/42-effects-you-should-know-part-2</a></li>
<li><a href="https://airtable.com/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recDAHpHP68dhfDfX">https://airtable.com/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recDAHpHP68dhfDfX</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Le futur illusoire]]></title>
            <link>https://johackim.com/le-futur-illusoire?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/le-futur-illusoire</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 21 Nov 2021 20:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/le-futur-illusoire.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/le-futur-illusoire.jpg"/>
            <content:encoded><![CDATA[<p>C&#x27;est la supposition de prendre des actions différentes de celles d&#x27;aujourd&#x27;hui. De croire que nos actions futures seront meilleurs que celles d&#x27;aujourd&#x27;hui.</p>
<p>Exemples :</p>
<ul>
<li>Aujourd&#x27;hui je ne travaille pas mais à partir de la semaine prochaine je reste concentré sur ma routine.</li>
<li>Aujourd&#x27;hui je joue aux jeux vidéos, mais à partir de demain c&#x27;est sûr j&#x27;arrête.</li>
</ul>
<p>Une sorte de <a href="/biais-doptimisme" title="Biais d&#x27;optimisme">Biais d&#x27;optimisme</a> qui nous poussent à mettre trop d&#x27;importance à notre futur soi.</p>

<p>Alors qu&#x27;il est fort probable que votre futur soi reste le même que votre moi d&#x27;aujourd&#x27;hui.</p>
<p>Si on n&#x27;est pas capable de faire une action aujourd&#x27;hui, pourquoi le serait-on le lendemain ?</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/bigger-leaner-stronger-michael-matthews" title="Bigger Leaner Stronger - Michael Matthews" class="not-found">Bigger Leaner Stronger - Michael Matthews</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L’effet de compensation morale]]></title>
            <link>https://johackim.com/leffet-de-compensation-morale?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/leffet-de-compensation-morale</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 21 Nov 2021 20:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/leffet-de-compensation-morale.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/leffet-de-compensation-morale.jpg"/>
            <content:encoded><![CDATA[<p>Terme créé par les psychologues, <strong>l&#x27;effet de compensation morale</strong> (ou Licensing effect en anglais) désigne le fait de se donner bonne conscience en effectuant une mauvaise action après avoir fait une bonne action.</p>
<p>On se donne des excuses du genre, j&#x27;ai réussi à faire ça donc je peux me permettre de ne pas faire ça.</p>
<p>Exemples :</p>
<ul>
<li>Manger un burger parce que je suis allé à la salle de sport.</li>
<li>Arrêter de travailler, car j&#x27;ai réalisé une tâche difficile.</li>
<li>Je viens déjà de dépenser 500 €, je ne suis plus à ça près.</li>
</ul>
<p>Lorsque vous remarquez ce comportement, souvenez de la raison principale de votre action, exemple : Changer de physique ou s&#x27;acheter une nouvelle maison.</p>
<p>Des études ont même montré que pour certains, le simple fait de penser à une de leurs bonnes actions augmente le risque de se montrer trop indulgent avec soi-même ou de s’adonner à un comportement immoral.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Gurwinder - Licensing effect</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Believing you’re good can make you behave bad. Those who consider themselves virtuous worry less about their own behavior, making them more susceptible to ethical lapses. A big cause of immorality is self-righteous morality.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/bigger-leaner-stronger-michael-matthews" title="Bigger Leaner Stronger - Michael Matthews" class="not-found">Bigger Leaner Stronger - Michael Matthews</a>

</li>
<li>
<a href="/psychologie" title="Psychologie">Psychologie</a>

</li>
<li><a href="https://fr.wikipedia.org/wiki/Hypocrisie_morale">https://fr.wikipedia.org/wiki/Hypocrisie_morale</a></li>
<li><a href="https://airtable.com/embed/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recU52eM54kyvRtFV">https://airtable.com/embed/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recU52eM54kyvRtFV</a></li>
<li><a href="https://gurwinder.substack.com/p/30-useful-principles-autumn-2023">https://gurwinder.substack.com/p/30-useful-principles-autumn-2023</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Shadow sur Linux]]></title>
            <link>https://johackim.com/shadow-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/shadow-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 21 Nov 2021 20:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/shadow-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/shadow-linux.jpg"/>
            <content:encoded><![CDATA[<p>Anciennement, j&#x27;avais fait <a href="/jouer-sur-linux" title="un tutoriel sur  comment jouer sur Linux">un tutoriel sur  comment jouer sur Linux</a> et c&#x27;était une véritable galère.</p>

<p>Aujourd&#x27;hui il existe <a href="https://shop.shadow.tech/pre-order/invite/JOARFUQO">Shadow</a> pour palier à ce problème.</p>
<p>C&#x27;est un <strong>service cloud</strong> pour louer une machine <strong>Windows</strong> avec une bonne carte graphique afin de pouvoir jouer à ces jeux préférés.</p>
<p>Voici un tutoriel pour les personnes qui veulent jouer sur Linux même si ils disposent d&#x27;un vieux PC.</p>
<h2>Installation</h2>
<p>Si vous êtes sur <strong>Linux</strong> et que vous avez une <a href="https://shadow.tech/fr/configuration/internet-speed-test">bonne connexion internet</a>, voici les commandes a exécuter pour installer <a href="https://shop.shadow.tech/pre-order/invite/JOARFUQO">Shadow</a> :</p>
<p><strong>En version stable</strong> :</p>
<pre><code class="language-bash">sudo wget -O /usr/local/bin/shadow https://update.shadow.tech/launcher/prod/linux/ubuntu_18.04/Shadow.AppImage
sudo chmod +x /usr/local/bin/shadow
</code></pre>
<p><strong>En version beta</strong> :</p>
<pre><code class="language-bash">sudo wget -O /usr/local/bin/shadow https://update.shadow.tech/launcher/preprod/linux/ubuntu_18.04/ShadowBeta.AppImage
sudo chmod +x /usr/local/bin/shadow
</code></pre>
<p><strong>En version alpha</strong> :</p>
<pre><code class="language-bash">sudo wget -O /usr/local/bin/shadow https://update.shadow.tech/launcher/testing/linux/ubuntu_18.04/ShadowAlpha.AppImage
sudo chmod +x /usr/local/bin/shadow
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Si vous êtes sur windows, utilisez le lien https://shdw.me/winalpha.</p>
                    </div>
                </blockquote>
<p><strong>Avec docker</strong> :</p>
<pre><code class="language-bash">sudo -E pip install -U docker-compose
git clone https://gitlab.com/aar642/shadowcker.git ~/.shadowcker
cd ~/.shadowcker
xhost +localhost &amp;&amp; xhost +local:docker
make stable # beta ou alpha
make start
</code></pre>
<p>Et voici les packages a installer selon votre <strong>carte graphique</strong> et votre <strong>distribution linux</strong> :</p>








































<table><thead><tr><th>Distribution Linux</th><th>Carte graphique</th><th>Package</th></tr></thead><tbody><tr><td>Arch Linux</td><td>Intel</td><td><code>libva-intel-driver</code></td></tr><tr><td>Arch Linux</td><td>NVIDIA</td><td><code>nouveau-fw</code></td></tr><tr><td>Arch Linux</td><td>AMD</td><td><code>mesa-vdpau</code></td></tr><tr><td>Ubuntu</td><td>Intel</td><td><code>intel-media-va-driver-non-free</code></td></tr><tr><td>Ubuntu</td><td>NVIDIA</td><td><a href="https://gitlab.com/aar642/libva-vdpau-driver">libva-vdpau-driver</a></td></tr><tr><td>Ubuntu</td><td>AMD</td><td><code>vdpau-va-driver</code> ou <code>mesa-va-drivers</code></td></tr></tbody></table>
<p>Personnellement; je suis sur Arch Linux, du coup j&#x27;installe ce driver :</p>
<pre><code class="language-bash">sudo pacman -S libva-intel-driver
</code></pre>
<p>Et voici mon script d&#x27;installation complet pour Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm shadow-tech gnome-keyring libva-intel-driver
</code></pre>
<h2>Démarrer shadow depuis un live usb</h2>
<p>Si vous ne souhaitez pas ou n&#x27;arrivez pas à installer shadow directement sur votre Linux, vous pouvez utiliser cet <a href="https://gitlab.com/NicolasGuilloux/shadow-live-os">OS en live usb</a>.</p>
<p>Télécharger <a href="https://gitlab.com/NicolasGuilloux/shadow-live-os/-/jobs/artifacts/nix-master/raw/Shadow-LiveOS.iso?job=shadow-beta">le fichier .iso</a>.</p>
<p>Ajouter le sur une clé USB avec <a href="https://balena.io/etcher/">Etcher</a> ou via une commande <code>sudo dd if=Shadow-LiveOS.iso of=/dev/sda3 status=progress conv=sync</code>.</p>
<h2>Problème de couleurs d&#x27;image rouge et jaune</h2>
<p>Si vous rencontrez un problème d&#x27;image qui devient tout rouge et jaune. Exécutez la commande suivante :</p>
<pre><code class="language-bash">sudo wget -O /etc/drirc https://raw.githubusercontent.com/NicolasGuilloux/blade-shadow-beta/master/resources/drirc
</code></pre>
<h2>Problème de clavier / souris</h2>
<p>Si comme moi vous avez de manière aléatoire des problèmes de lag avec votre clavier et/ou votre souris.</p>
<p>Des touches qui restent virtuellement enfoncées ou des appuis de touche non pris en compte.</p>
<p>Exécutez les commandes suivantes :</p>
<pre><code class="language-bash">wget -qO- http://repository.shadow.tech/shadow_signing.key | gpg --dearmor &gt; packages.shadowapp.gpg
install -o root -g root -m 644 packages.shadowapp.gpg /etc/apt/trusted.gpg.d/
sh -c &#x27;echo &quot;deb [arch=amd64] http://repository.shadow.tech/preprod bullseye main&quot; &gt; /etc/apt/sources.list.d/shadow-preprod.list&#x27;
rm -f packages.shadowapp.gpg
apt update
apt install -y shadowusb
</code></pre>
<h2>Démarrer Shadow en dual boot</h2>
<p>Pour créer un dual boot, créer une nouvelle partition puis ajouter <a href="https://gitlab.com/NicolasGuilloux/shadow-live-os/-/jobs/artifacts/nix-master/raw/Shadow-LiveOS.iso?job=shadow-beta">ce fichier iso</a> avec une commande dd :</p>
<pre><code class="language-bash">sudo dd if=Shadow-LiveOS.iso of=/dev/sda3 status=progress conv=sync
</code></pre>
<p>Prenez exemple sur le fichier <code>/EFI/boot/grub.cfg</code> à l&#x27;intérieur de l&#x27;iso, puis ajouter l&#x27;entrée suivante à la <a href="https://wiki.archlinux.org/title/GRUB#GNU/Linux">configuration de Grub</a> de votre machine hôte dans le fichier <code>/etc/grub.d/40_custom</code>, exemple :</p>
<pre><code class="language-txt">menuentry &quot;Shadow&quot; {
        set root=(hd0,3)
        linux /boot/bzImage ${isoboot} init=/nix/store/1d56fdsc3y69040l0g6zxipm7x1c6qdg-nixos-system-Shadow-LiveOS-21.05pre283529.8389dcb67d9/init root=LABEL=ShadowOS
        initrd /boot/initrd
}
</code></pre>
<p>Sans oublier d&#x27;exécuter cette commande pour mettre à jour votre nouvelle configuration grub.</p>
<pre><code class="language-bash">sudo grub-mkconfig -o /boot/grub/grub.cfg
</code></pre>
<h2>Réparer l&#x27;erreur R-0x7F</h2>
<p>Je rencontre un problème pour me rendre sur ma machine Shadow depuis mon système Arch Linux, je reçoit une erreur R-0x7F. Pour résoudre cette erreur, j&#x27;installe la package suivant :</p>
<pre><code class="language-bash">yay -S --noconfirm libldap24
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://shadow.tech">https://shadow.tech</a></li>
<li><a href="https://pc.shadow.tech">https://pc.shadow.tech</a></li>
<li><a href="https://github.com/NicolasGuilloux/blade-shadow-beta">https://github.com/NicolasGuilloux/blade-shadow-beta</a></li>
<li><a href="https://nicolasguilloux.github.io/blade-shadow-beta/">https://nicolasguilloux.github.io/blade-shadow-beta/</a></li>
<li><a href="https://forum.shadow.tech/compatibility-44/anyone-usingbshadow-on-a-pi-223?postid=9439#post9439">LineageOS on my RaspberryPI 4</a></li>
<li><a href="https://aur.archlinux.org/packages/shadow-tech/">https://aur.archlinux.org/packages/shadow-tech/</a></li>
<li><a href="https://blog.henricook.com/shadow-pc-support-for-ubuntu-2110">https://blog.henricook.com/shadow-pc-support-for-ubuntu-2110</a></li>
<li><a href="https://gitlab.com/aar642/shadow-repackaged#known-issues">https://gitlab.com/aar642/shadow-repackaged#known-issues</a></li>
<li><a href="https://frsbg01.filebrowser.shadow.tech/shadowftp/login">https://frsbg01.filebrowser.shadow.tech/shadowftp/login</a></li>
<li>
<a href="/jeux-videos" title="Jeux vidéos" class="not-found">Jeux vidéos</a>

</li>
<li>
<a href="/cloud-desktop" title="Cloud gaming" class="not-found">Cloud gaming</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un mode dark avec Gatsby et Tailwind CSS]]></title>
            <link>https://johackim.com/creer-un-mode-dark-avec-gatsby-et-tailwind-css?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-mode-dark-avec-gatsby-et-tailwind-css</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 15 Nov 2021 09:33:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-mode-dark-avec-gatsby-et-tailwind-css.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-mode-dark-avec-gatsby-et-tailwind-css.jpg"/>
            <content:encoded><![CDATA[<p>Pour créer un thème dark avec <a href="https://gatsbyjs.com/">Gatsby</a> et <a href="https://tailwindcss.com/">TailwindCSS</a>, une fois que vous avez <a href="/initialiser-un-projet-gatsby" title="initialisé Gatsby">initialisé Gatsby</a> et <a href="/integrer-tailwind-css-a-gatsby" title="paramétré Tailwind CSS">paramétré Tailwind CSS</a>, il vous faut simplement installer le package <code>react-helmet</code> et créer 3-4 fichiers.</p>

<h2>1. Installer react-helmet</h2>
<p>Installer le package react-helmet pour pouvoir overrider la classe de votre balise <code>html</code>.</p>
<pre><code class="language-bash">yarn add -D react-helmet gatsby-plugin-react-helmet
</code></pre>
<pre><code class="language-js">// gatsby-config.js

module.exports = {
    plugins: [
        // ...
        &#x27;gatsby-plugin-react-helmet&#x27;,
    ],
};
</code></pre>
<h2>2. Activer le darkMode dans Tailwind CSS</h2>
<p>Dans le fichier <code>tailwind.config.js</code>, activez le darkMode en lui attribuant la valeur <code>class</code>, cela permettra de prendre en compte les classes html <code>dark:</code> :</p>
<pre><code class="language-bash">// tailwind.config.js

module.exports = {
    darkMode: &#x27;class&#x27;,
};
</code></pre>
<h2>3. Créer un Switch button</h2>
<p>Créez un composant <code>switch.js</code>, il contient le button qui peut alterner votre dark mode :</p>
<pre><code class="language-js">// src/components/switch.js

import React, { useState, useEffect } from &#x27;react&#x27;;

const isBrowser = () =&gt; typeof window !== &#x27;undefined&#x27;;

const getItem = (name) =&gt; isBrowser() &amp;&amp; localStorage.getItem(name);

const setItem = (name, item) =&gt; isBrowser() &amp;&amp; localStorage.setItem(name, item);

export default ({ onChange }) =&gt; {
    const [darkMode, setDarkMode] = useState(getItem(&#x27;darkMode&#x27;) === &#x27;true&#x27; || (isBrowser() &amp;&amp; window.matchMedia(&#x27;(prefers-color-scheme: dark)&#x27;).matches));

    useEffect(() =&gt; {
        setItem(&#x27;darkMode&#x27;, darkMode);
        onChange(darkMode);
    }, [darkMode]);

    return (
        &lt;button type=&quot;button&quot; className=&quot;border px-2&quot; onClick={() =&gt; setDarkMode(!darkMode)}&gt;Switch&lt;/button&gt;
    );
};
</code></pre>
<p>Intégrez votre composant <code>Switch</code> dans votre page Gatsby <code>index.js</code> :</p>
<pre><code class="language-javascript">// src/pages/index.js

import React, { useState } from &#x27;react&#x27;;
import Helmet from &#x27;react-helmet&#x27;;

import Switch from &#x27;../components/switch&#x27;;

const IndexPage = () =&gt; {
    const [darkMode, setDarkMode] = useState(typeof window !== &#x27;undefined&#x27; &amp;&amp; localStorage.getItem(&#x27;darkMode&#x27;) === &#x27;true&#x27;);

    return (
        &lt;&gt;
            &lt;Helmet
                htmlAttributes={{ class: darkMode ? &#x27;dark&#x27; : &#x27;light&#x27; }}
                bodyAttributes={{ class: &#x27;dark:bg-gray-900 dark:text-gray-300&#x27; }}
            /&gt;
            &lt;Switch onChange={(isDark) =&gt; setDarkMode(isDark)} /&gt;
        &lt;/&gt;
    );
};

export default IndexPage;
</code></pre>
<h2>4. Créer un fichier gatsby-ssr.js (facultatif)</h2>
<p>Cette étape est facultatif, mais elle permet d&#x27;améliorer la vitesse de rendu du thème dark.</p>
<pre><code class="language-js">// gatsby-ssr.js

import React from &#x27;react&#x27;;

export { wrapRootElement } from &#x27;./gatsby-browser&#x27;;

export const onRenderBody = ({ setPreBodyComponents }) =&gt; {
    const setColorsByTheme = () =&gt; {
        const darkMode = localStorage.getItem(&#x27;darkMode&#x27;) === &#x27;true&#x27; || window.matchMedia(&#x27;(prefers-color-scheme: dark)&#x27;).matches;
        document.documentElement.className = darkMode ? &#x27;dark&#x27; : &#x27;light&#x27;;
    };

    const calledFunction = `(${setColorsByTheme})()`;
    setPreBodyComponents(&lt;script key=&quot;darkMode&quot; dangerouslySetInnerHTML={{ __html: calledFunction }} /&gt;);
};
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://joshwcomeau.com/react/dark-mode/">https://joshwcomeau.com/react/dark-mode/</a></li>
<li><a href="https://github.com/insin/gatsby-plugin-dark-mode/">https://github.com/insin/gatsby-plugin-dark-mode/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Whatweb]]></title>
            <link>https://johackim.com/whatweb?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/whatweb</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 15 Nov 2021 09:33:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/whatweb.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/whatweb.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/urbanadventurer/WhatWeb">Whatweb</a> est un logiciel en ligne de commande comme <a href="https://wappalyzer.com/">wappalyzer</a> pour analyser les outils utilisés par un site internet.</p>
<p>C&#x27;est un outil qui peut être utilisé en <a href="/cybersecurite" title="Cybersécurité">Cybersécurité</a> pendant la phase de <a href="/reconnaissance" title="Reconnaissance" class="not-found">Reconnaissance</a> d&#x27;un pentest.</p>

<p>Pour l&#x27;installer sur Arch LInux, exécutez la commande suivante :</p>
<pre><code class="language-bash">yay -S --noconfirm whatweb
</code></pre>
<p>Pour l&#x27;utiliser :</p>
<pre><code class="language-bash">whatweb -v &lt;website&gt;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/zero-to-mastery-complete-ethical-hacking-bootcamp-2022" title="Zero To Mastery - Complete Ethical Hacking Bootcamp 2022" class="not-found">Zero To Mastery - Complete Ethical Hacking Bootcamp 2022</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment avoir spotify gratuitement sans pubs ?]]></title>
            <link>https://johackim.com/bloquer-les-pubs-de-spotify?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/bloquer-les-pubs-de-spotify</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 07 Nov 2021 21:53:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/bloquer-les-pubs-de-spotify.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/bloquer-les-pubs-de-spotify.jpg"/>
            <content:encoded><![CDATA[<p>Si vous êtes sur Windows, macOS ou Linux, vous pouvez écouter vos musiques préférées gratuitement sur Spotify sans avoir les publicités.</p>
<p>Il vous suffit de passer par <a href="https://open.spotify.com/">l&#x27;application web de spotify</a> et d&#x27;installer l&#x27;extension <a href="https://ublockorigin.com/fr">uBlock Origin</a> sur votre navigateur <a href="https://addons.mozilla.org/fr/firefox/addon/ublock-origin/">Firefox</a> ou <a href="https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm?hl=fr">Chrome</a>.</p>
<ol>
<li>Installer <a href="https://ublockorigin.com/fr">uBlock Origin</a></li>
<li>Connectez-vous sur <a href="https://open.spotify.com/">https://open.spotify.com/</a> depuis votre navigateur web</li>
</ol>
<p>Bonne écoute de musique sans pubs 😀 !</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/mrpond/BlockTheSpot">https://github.com/mrpond/BlockTheSpot</a></li>
<li><a href="https://github.com/abba23/spotify-adblock">https://github.com/abba23/spotify-adblock</a></li>
<li><a href="https://github.com/serialoverflow/blockify">https://github.com/serialoverflow/blockify</a></li>
<li><a href="https://github.com/x0uid/SpotifyAdBlock">https://github.com/x0uid/SpotifyAdBlock</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La règle 5/25]]></title>
            <link>https://johackim.com/five-life-goals?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/five-life-goals</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 24 Oct 2021 20:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/five-life-goals.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/five-life-goals.jpg"/>
            <content:encoded><![CDATA[<p>Pour prioriser ses objectifs, Warren Buffet utilise une méthode qu&#x27;il appelle <strong>la règle 5/25</strong> (ou la <strong>stratégie des 2 listes</strong>).</p>
<ol>
<li>Créez une liste des 25 principales choses que vous aimeriez faire dans la vie.</li>
<li>Gardez les cinq premières choses de cette liste. (The Priority List)</li>
<li>Jetez les 20 autres éléments. (The Avoidance List)</li>
</ol>
<p>Ne travaillez que sur les tâches qui se rapportent aux cinq premiers objectifs.</p>
<p><strong>PS: Contrairement aux centaines de références à ce sujet <a href="https://twitter.com/richwebz/status/1597243978738442240">sur internet</a> et <a href="https://amzn.to/312RSIn">les livres</a>, <a href="https://youtu.be/9d0oTksDb8A?t=5567">cette méthode n&#x27;a jamais été inventé ni pratiqué par Warren Buffet</a>.</strong></p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://pathnine.substack.com/p/buffetts-525-rule">Path Nine - Buffett&#x27;s 5/25 Rule</a></li>
<li><a href="https://jamesclear.com/buffett-focus">https://jamesclear.com/buffett-focus</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La formule R.O.T]]></title>
            <link>https://johackim.com/la-formule-r.o.t?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-formule-r.o.t</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 24 Oct 2021 20:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-formule-r.o.t.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-formule-r.o.t.jpg"/>
            <content:encoded><![CDATA[<p>Si vous n&#x27;êtes pas créatif pour trouver un titre, le copywriter Neville Medhora à inventé la formule R.O.T (Résultats - Objections - Temps).</p>
<p>Exemples :</p>




















<table><thead><tr><th>Résultats qu&#x27;ils souhaitent</th><th>Objections</th><th>Période de temps</th></tr></thead><tbody><tr><td>Apprendre à parler espagnol</td><td>Même si vous n&#x27;êtes pas bon en anglais</td><td>En 20 jours</td></tr><tr><td>Figurer dans la liste des best-sellers du New York Times</td><td>Même si vous n&#x27;avez pas beaucoup d&#x27;adeptes</td><td>Cette année</td></tr></tbody></table>
<p>Vous pouvez mixer la formule si vous le souhaitez ; R.O.T, T.O.R, T.R, etc...</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://copywritingcourse.com/wp-content/uploads/the-kopy-checklist-writing.pdf">Kopywriting Checklist - Neville Medhora</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La règle des 4U]]></title>
            <link>https://johackim.com/la-regle-des-4u?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-regle-des-4u</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 24 Oct 2021 20:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-regle-des-4u.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-regle-des-4u.jpg"/>
            <content:encoded><![CDATA[<p>Voici une technique créer par le copywriter Michael Masterson pour créer des titres (headlines) et des puces (bullets).</p>
<p>Un titre doit être :</p>
<ul>
<li><strong>U</strong>tile : montrez-leur ce qu’ils y gagnent (bénéfices).</li>
<li><strong>U</strong>rgent : définir une deadline, un stock limité, etc...</li>
<li><strong>U</strong>nique : montrez quelque chose qu’ils ne peuvent pas trouver ailleurs</li>
<li><strong>U</strong>ltra-spécifique : chiffré, détaillé, votre titre doit dire à votre prospect EXACTEMENT ce qu&#x27;il va obtenir.</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>Michael Masterson - The Secret Of The 4 U&#x27;s (Six Figures Copywriting Course)</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[NoMachine]]></title>
            <description><![CDATA[NoMachine est un outil pour accéder à un ordinateur à distance.]]></description>
            <link>https://johackim.com/nomachine?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/nomachine</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 24 Oct 2021 20:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/nomachine.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/nomachine.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/L01nZUd.jpg"/><p>Pour accéder à un ordinateur à distance, il existe un outil qui s&#x27;appelle <a href="https://nomachine.com/">NoMachine</a>.</p>
<p>Je l&#x27;utilise principalement car c&#x27;est la solution la plus rapide que j&#x27;ai trouvé en termes de vitesse d&#x27;affichage.</p>
<p>Ce n&#x27;est pas open-source, mais il est gratuit pour un usage personnel.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer <a href="https://downloads.nomachine.com/">rendez-vous sur le site Officiel</a>, ou exécutez cette commande si vous êtes sur Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm nomachine
</code></pre>
<h2>Utilisation</h2>
<p>Une fois installé sur vos 2 machines (client et serveur), ajoutez votre machine distante depuis votre machine hôte en spécifiant le Host (ex: monserveur.com).</p>
<p><img src="https://i.imgur.com/L01nZUd.jpg" alt="NoMachine Settings"/></p>
<p>Pensez à configurer votre pare-feu pour autoriser le port 4000 ou à faire du port fowarding avec SSH.</p>
<p>Et si jamais vous avez besoin de redémarrer le serveur, exécutez la commande suivante :</p>
<pre><code class="language-bash">sudo /etc/NX/nxserver --restart
</code></pre>
<h2>Configuration Audio</h2>
<p>Concernant l&#x27;audio, je vous conseille d&#x27;installer PulseAudio côté serveur :</p>
<pre><code class="language-bash">sudo pacman -S pulseaudio
</code></pre>
<p>Il faut que le paramètre <code>AudioInterface</code> soit configuré sur <code>pulseaudio</code> dans le fichier <code>/usr/NX/etc/node.cfg</code>.</p>
<p>Dans le cas contraire, le plus simple est de supprimer tous les paquets liés à une autre interface (ex: PipeWire) et de réinstaller NoMachine via <code>yay -Rsn nomachine</code>.</p>
<p>Vous trouverez plus d&#x27;information <a href="https://forum.nomachine.com/topic/no-audio-with-pulseaudio-system-instance">sur ce lien</a> pour configurer PulseAudio.</p>
<h2>Se connecter depuis SSH</h2>
<p>Si vous voulez vous connecter depuis SSH via du port forwarding, exécutez la commande suivante :</p>
<pre><code class="language-bash">ssh -N -L 4000:127.0.0.1:4000 user@server
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Découvrez d'où proviennent les visiteurs de votre site avec les paramètres UTM]]></title>
            <link>https://johackim.com/parametres-utm?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/parametres-utm</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 24 Oct 2021 20:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/parametres-utm.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/parametres-utm.jpg"/>
            <content:encoded><![CDATA[<p>Pour pouvoir avoir plus de détails de la provenance des utilisateurs sur votre site web, il existe les paramètres UTM.</p>
<p>En tout, il existe 5 paramètres d’UTMs :</p>
<ul>
<li>
<strong>utm_source</strong> : (obligatoire) indique le site d’origine du trafic. Exemple : Mastodon, Github, Duckduckgo, Newsletter
</li>
<li>
<strong>utm_medium</strong> : identifie le type de lien qui a été utilisé. Exemple : paid, blog, email, social, organic, etc.
</li>
<li>
<strong>utm_campaign</strong> : identifie un produit spécifique de la promotion ou de la stratégie de campagne. C’est ici que vous allez mettre le nom de votre campagne
</li>
<li>
<strong>utm_term</strong> : identifie les termes de recherche. Si vous faites de la publicité sur Google, il s’agit des mots clés. Si vous faites de la publicité Facebook, il s’agit cette fois de vos audiences.
</li>
<li>
<strong>utm_content</strong> : identifie précisément ce qui a été cliqué pour amener l’utilisateur sur le site, comme une bannière, une publicité, un email ou un lien texte.
</li>
</ul>
<p>Vous pouvez créer vos paramètres UTM facilement avec <a href="https://utmbuilder.net/">utmbuilder.net</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://daniloduchesnes.com/blog/parametres-utm/">https://daniloduchesnes.com/blog/parametres-utm/</a></li>
<li>
<a href="/analytics" title="Analytics" class="not-found">Analytics</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La Théorie des Contraintes]]></title>
            <link>https://johackim.com/la-theorie-des-contraintes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-theorie-des-contraintes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 17 Oct 2021 22:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-theorie-des-contraintes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-theorie-des-contraintes.jpg"/>
            <content:encoded><![CDATA[<p>Identifiez et concentrez vos efforts sur les contraintes qui limitent les performances d&#x27;un système.</p>
<p>Par exemple, si vous essayez de monter un business mais que vous stagner :</p>
<ol>
<li>Listez les entrées (input) -&gt; Temps, Motivation, Savoir</li>
<li>
Identifiez la contrainte (le <a href="/goulot-d&#x27;etranglement" title="Goulot d&#x27;étranglement" class="not-found">Goulot d&#x27;étranglement</a>) qui limite le flux de sortie (output) et empêche votre système de fonctionner.

</li>
<li>Augmenter cette entrée</li>
<li>Repartez à l&#x27;étape 1 si vous êtes de nouveau bloqué</li>
</ol>
<p>Trouvez le goulot d&#x27;étranglement, augmentez sa capacité et répétez continuellement ce processus jusqu&#x27;à ce que vous arriviez là où vous souhaitez être.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">ChatGPT</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>La performance globale d&#x27;un système est déterminée par son maillon le plus faible.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/the-goal-eliyahu-goldratt" title="The Goal - Eliyahu Goldratt" class="not-found">The Goal - Eliyahu Goldratt</a>

</li>
<li>
<a href="/ipo" title="IPO" class="not-found">IPO</a>

</li>
<li><a href="https://julian.com/blog/mental-model-examples">https://julian.com/blog/mental-model-examples</a></li>
<li><a href="https://qualefficiens.fr/post/toc-definition-theory-constraints">https://qualefficiens.fr/post/toc-definition-theory-constraints</a></li>
<li><a href="https://fortelabs.com/blog/theory-of-constraints-101/">https://fortelabs.com/blog/theory-of-constraints-101/</a></li>
<li><a href="https://newsletter.auditless.com/p/al-012-release-your-bottleneck">https://newsletter.auditless.com/p/al-012-release-your-bottleneck</a></li>
<li><a href="https://en.wikipedia.org/wiki/Theory_of_constraints">https://en.wikipedia.org/wiki/Theory_of_constraints</a></li>
<li><a href="https://sahilbloom.com/newsletter/the-theory-of-constraint-evening-routines-more">https://sahilbloom.com/newsletter/the-theory-of-constraint-evening-routines-more</a></li>
<li><a href="https://youtu.be/qOw8vO65mK4?t=1128">Oussama Ammar - Un Français chez Alex Hormozi ? Avec Matis Clouet - &quot;Entre Nous&quot; #14</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La méthode ABCDE]]></title>
            <link>https://johackim.com/la-methode-abcde?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-methode-abcde</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 17 Oct 2021 22:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-methode-abcde.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-methode-abcde.jpg"/>
            <content:encoded><![CDATA[<p>Lors de la planification de votre journée, dressez la liste de toutes les tâches que vous devez faire et ordonnez les selon la logique suivante :</p>
<ul>
<li>Une tâche « A » est une tâche importance avec des conséquences significatives</li>
<li>Une tâche « B » est une tâche que vous devriez faire mais qui a des conséquences limitées</li>
<li>Une tâche « C » est une tâche qui serait sympa à faire mais sans conséquences</li>
<li>Une tâche « D » est une tâche que vous pouvez déléguer à quelqu&#x27;un d&#x27;autre</li>
<li>Une tâche « E » est une tâche que vous pouvez éliminer sans aucune conséquence</li>
</ul>
<p>Ajoutez une lettre devant chacune de vos tâche et ordonnez les en ajoutant un numéro, exemple :</p>
<ul>
<li>A1 - Écrire un article</li>
<li>A2 - Publier l&#x27;article</li>
<li>D1 - Faire ma comptabilité</li>
<li>E1 - Acheter un poster</li>
</ul>
<p>La règle veut que vous ne fassiez jamais de tâche de type B lorsqu&#x27;il reste encore une tâche de type « A » à accomplir.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/avalez-le-crapaud-brian-tracy" title="Avalez le crapaud - Brian Tracy" class="not-found">Avalez le crapaud - Brian Tracy</a>

</li>
<li><a href="https://everlaab.com/prioriser-ses-taches-avec-la-methode-abcde/">https://everlaab.com/prioriser-ses-taches-avec-la-methode-abcde/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La méthode PARA]]></title>
            <link>https://johackim.com/la-methode-para?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-methode-para</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 17 Oct 2021 22:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-methode-para.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-methode-para.jpg"/>
            <content:encoded><![CDATA[<p>PARA est un acronyme inventé par <a href="https://fortelabs.co/">Tiago Forte</a> qui fait référence à :</p>
<ul>
<li><strong>P</strong>roject (Projet)</li>
<li><strong>A</strong>rea of responsability (Sphère de Responsabilité)</li>
<li><strong>R</strong>esource (Ressource)</li>
<li><strong>A</strong>rchive (Archive)</li>
</ul>
<h2>Projet</h2>
<blockquote>
<p>A projet without a corresponding Goal is a hobby. A goal without a corresponding project is a dream. - Tiago Forte</p>
</blockquote>
<p>Un projet est simplement une série de tâches liées à un objectif avec une deadline.</p>
<p>Tout résultat pour lequel vous vous engagez activement et qui nécessite plusieurs sessions de travail.</p>
<p>Un projet peut être :</p>
<ul>
<li>Un projet professionnel (ex: Créer le design d&#x27;un site web)</li>
<li>Un projet personnel (ex: Participer à un triathlon)</li>
<li>Un side project (ex: Publier un article de blog)</li>
</ul>
<h2>Area</h2>
<p>Un domaine de responsabilité (Area) est « une sphère d&#x27;activité avec un standard à maintenir dans le temps ».</p>
<p>Ce sont les domaines qui n&#x27;ont pas de date de fin.</p>
<p>Exemples :</p>
<ul>
<li>Garder la santé en faisant du sport</li>
<li>Maintenanir ses finances personnelles</li>
</ul>
<h2>Resource</h2>
<p>Une ressource est « un sujet ou un thème d&#x27;intérêt continu ».</p>
<p>Exemples :</p>
<ul>
<li>Web design</li>
<li>Architecture</li>
<li>Livres</li>
<li>Marketing</li>
</ul>
<h2>Archive</h2>
<p>Les archives incluent les « éléments inactifs des trois autres catégories ».</p>
<p>Exemple : un projet terminé ou annulé.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fortelabs.co/blog/para/">Forte Labs - The PARA Method: A Universal System for Organizing Digital Information</a></li>
<li><a href="https://everlaab.com/methode-para-comment-organiser-sa-vie-entiere/">Everlaab - Méthode PARA : Comment organiser sa vie entière ?</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nextdns]]></title>
            <link>https://johackim.com/nextdns?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/nextdns</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 17 Oct 2021 22:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/nextdns.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/nextdns.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://nextdns.io/?from=wrbpy5cs">NextDNS</a> est un outil très pratique pour bloquer certains sites ou régies publicitaires. Une fois configuré, vous pouvez empêcher tous les services de Google ou Facebook de fonctionner sur votre machine.</p>
<h2>Installation</h2>
<p>Si vous êtes sur <strong>Ubuntu</strong> ou <strong>Debian</strong> :</p>
<pre><code class="language-bash">sh -c &quot;$(curl -sL https://nextdns.io/install)&quot;
</code></pre>
<p>Si vous êtes sur <strong>Arch Linux</strong> :</p>
<pre><code class="language-bash">yay -S --noconfirm nextdns-bin
</code></pre>
<p>Si vous êtes sur <strong>Windows</strong>, téléchargez <a href="https://nextdns.io/download/windows/stable">NextDNS pour Windows</a>.</p>
<p>Si vous êtes sur <strong>macOS</strong>, téléchargez <a href="https://apps.apple.com/app/nextdns/id1464122853">NextDNS pour macOS</a>.</p>
<h2>Utilisation</h2>
<p>Démarrez nextdns en exécutant la commande suivante avec <a href="https://my.nextdns.io/">votre identifiant</a> :</p>
<pre><code class="language-bash">sudo nextdns install -config &lt;ID&gt; -auto-activate -report-client-info
</code></pre>
<p>PS : Dans le cas où, la commande de démarrage ne fonctionne pas. Changez la ligne <code>listen localhost:53</code> en <code>127.0.0.1:53</code> dans le fichier de configuration <code>/etc/nextdns.conf</code>.</p>
<h2>Configurer la page de blocage par défaut</h2>
<p>Lorsqu’un site est bloqué par NextDNS cela redirige l&#x27;IP original sur une IP géré par NextDNS</p>
<p>Du coup si vous voulez avoir une belle page qui s&#x27;affiche lorsqu’un site est bloqué il faut ajouter leur certificat SSL sur votre machine.</p>
<p><a href="https://nextdns.io/ca">Téléchargez le certificat SSL</a> et ajoutez-le à votre navigateur.</p>
<p>Voici les <a href="https://help.nextdns.io/t/g9hmv0a/how-to-install-and-trust-nextdns-root-ca">instructions à suivre pour ajouter le certificat à votre navigateur</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Page du matin]]></title>
            <link>https://johackim.com/page-du-matin?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/page-du-matin</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 17 Oct 2021 22:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/page-du-matin.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/page-du-matin.jpg"/>
            <content:encoded><![CDATA[<p>La méthode des pages du matin provient du célèbre livre <a href="https://placedeslibraires.fr/livre/9782290355084-liberez-votre-creativite-osez-dire-oui-a-la-vie-julia-cameron/">Libérez votre créativité de Julia Cameron</a>. <strong>Cette méthode a pour but de &quot;laver&quot; notre cerveau de toutes nos pensées</strong>.</p>
<p>La règle est simple ; <strong>écrivez chaque matin une page avec tout ce qui vous passe par la tête</strong>.</p>
<p>Vous n&#x27;avez pas besoin d&#x27;être écrivain, car <strong>il n&#x27;existe pas de bonne ou mauvaise façon d&#x27;écrire cette page</strong>.</p>
<p>Vous pouvez mettre n&#x27;importe quoi sur cette page si vous le souhaitez.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/liberez-votre-creativite-julia-cameron" title="Libérez votre créativité - Julia Cameron" class="not-found">Libérez votre créativité - Julia Cameron</a>

</li>
<li><a href="https://player.vimeo.com/video/489259753">Emilio Abril - Page du matin</a></li>
<li><a href="https://juliacameronlive.com/basic-tools/morning-pages/">Julia Cameron - Morning Pages</a></li>
<li><a href="https://youtu.be/x7h26exKBrU?t=280">Emilio - Comment débloquer votre Créativité (4 techniques)</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La méthode Ivy Lee]]></title>
            <link>https://johackim.com/la-methode-ivy-lee?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-methode-ivy-lee</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 10 Oct 2021 14:12:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-methode-ivy-lee.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-methode-ivy-lee.jpg"/>
            <content:encoded><![CDATA[<p>Voici une méthode de productivité très simple pour réaliser chaque jour ses tâches de la journée. Elle a été inventée dans les années 1900 par un consultant en productivité qui s&#x27;appelle Ivy Lee.</p>
<ol>
<li>
À la fin de chaque journée, écrivez les six tâches les plus importantes que vous voulez accomplir le lendemain. N&#x27;écrivez pas plus de 6 tâches.
</li>
<li>
Priorisez ces 6 tâches par ordre d&#x27;importance
</li>
<li>
Quand vous travaillez le lendemain, concentrez-vous uniquement sur la première tâche. Travaillez dessus jusqu&#x27;à ce qu&#x27;elle soit terminée avant de passer à la seconde tâche.
</li>
<li>
Réaliser le reste de la liste de la même manière. À la fin de la journée, déplacez les tâches non terminées sur une nouvelle liste de 6 tâches à faire pour le lendemain.
</li>
<li>
Répétez ce processus chaque jour de travail
</li>
</ol>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://jamesclear.com/ivy-lee">https://jamesclear.com/ivy-lee</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La règle des 2 minutes]]></title>
            <link>https://johackim.com/la-regle-des-2-minutes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-regle-des-2-minutes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-regle-des-2-minutes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-regle-des-2-minutes.jpg"/>
            <content:encoded><![CDATA[<p>Dès qu&#x27;une tâche prend moins de 2 minutes à être réalisé, exécutez la tout de suite, même si ce n&#x27;est pas urgent.</p>
<p>Cela prendrait trop de temps de la reporter ou de la déléguer.</p>
<p>Cela évite d&#x27;avoir des dettes mentales.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://gurwinder.substack.com/p/40-useful-concepts-you-should-know</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>The Two-Minute Rule: If a task would take less than two minutes, do it immediately. This is because adding the task to your mental to-do list, keeping it in your memory, and managing the anxiety of not having done it will take far more effort than just doing it now.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>Getting Things Done - David ALLEN</li>
<li>La 25ème Heure - Guillaume Declair</li>
<li><a href="https://jamesclear.com/how-to-stop-procrastinating">https://jamesclear.com/how-to-stop-procrastinating</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La règle des 3 tâches]]></title>
            <link>https://johackim.com/la-regle-des-3-taches?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-regle-des-3-taches</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-regle-des-3-taches.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-regle-des-3-taches.jpg"/>
            <content:encoded><![CDATA[<p>Au début de chaque jour, chaque semaine, chaque mois, chaque trimestre et chaque année, choisissez les trois choses que vous voulez accomplir d&#x27;ici la fin de chaque période.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Hyperfocus - Chris Bailey</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>At the start of each day, choose the three things you want to have accomplished by day’s end.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>Hyperfocus - Chris Bailey</li>
<li>La 25ème Heure - Guillaume Declair</li>
<li>Tout le monde n&#x27;a pas eu la chance de rater ses études - Olivier Roland</li>
<li>Petites habitudes, Grandes réussites - Onur Karapinar</li>
<li><a href="https://artofmanliness.com/career-wealth/career/work-deliberately-instead-reactively-rule-3/">https://artofmanliness.com/career-wealth/career/work-deliberately-instead-reactively-rule-3/</a></li>
<li><a href="https://threetimeswiser.substack.com/p/issue-360-cognitive-patience-rule">https://threetimeswiser.substack.com/p/issue-360-cognitive-patience-rule</a></li>
<li>
<a href="/sunday-process" title="Sunday Process" class="not-found">Sunday Process</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La technique de l'échelle]]></title>
            <link>https://johackim.com/la-technique-de-lechelle?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-technique-de-lechelle</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-technique-de-lechelle.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-technique-de-lechelle.jpg"/>
            <content:encoded><![CDATA[<p><strong>Diviser vos tâches en petites tâches</strong>, cela évitera la <a href="/procrastination" title="Procrastination" class="not-found">Procrastination</a> et enlèvera de la friction lorsque vous effectuerez cette tâche.</p>

<p>Cela <strong>enlève aussi la complexité de la tâche</strong>.</p>
<p>Par exemple, si écrire un livre est votre échelle, les barreaux sont :</p>
<ul>
<li>Écrire le sommaire</li>
<li>Se lancer dans la rédaction</li>
<li>Faire les illustrations</li>
<li>Envoyer le brouillon pour la relecture</li>
<li>Lancer l&#x27;impression</li>
</ul>
<p>Si vous jouez à un jeu vidéo comme TrackMania :</p>
<ul>
<li>Décomposer le circuit en plusieurs checkpoints</li>
<li>Travailler sur chaque checkpoint indépendamment des autres</li>
</ul>
<p>Si vous jouez une musique à la guitare :</p>
<ul>
<li>Décomposer votre musique en plusieurs morceaux</li>
<li>Apprenez chaque morceau indépendamment des autres</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>La 25ème Heure - Guillaume Declair</li>
<li><a href="https://youtube.com/shorts/rctN3Pf71pg">Emilio Abril - La technique des Navy SEALs pour devenir fort mentalement</a></li>
<li>
<a href="/chunking" title="Chunking" class="not-found">Chunking</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[LibreELEC]]></title>
            <description><![CDATA[Guide d'installation de LibreELEC sur un Raspberry PI]]></description>
            <link>https://johackim.com/libreelec?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/libreelec</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/libreelec.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/libreelec.jpg"/>
            <content:encoded><![CDATA[<p>Voici comment installer LibreELEC sur un Raspberry PI.</p>
<p>Commencez par <a href="https://libreelec.tv/downloads/raspberry/">Télécharger LibreELEC</a>.</p>
<p>Puis utilisez <a href="/etcher" title="Etcher">Etcher</a> pour le graver sur votre carte SD.</p>

<p>Ou exécutez la commande suivante :</p>
<pre><code class="language-bash">7z x LibreELEC-RPi2.arm-12.0.2.img.gz
sudo dd if=LibreELEC-RPi2.arm-12.0.2.img of=/dev/sdx status=progress conv=sync
</code></pre>
<p>Vous pouvez ensuite vous connectez en ssh via la commande :</p>
<pre><code class="language-bash">ssh root@&lt;ip&gt;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Refactoring UI de Adam Wathan]]></title>
            <link>https://johackim.com/refactoring-ui-adam-wathan?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/refactoring-ui-adam-wathan</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/refactoring-ui-adam-wathan.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/refactoring-ui-adam-wathan.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/fh9TORr.png"/><link rel="preload" as="image" href="https://i.imgur.com/TGPzhyU.png"/><link rel="preload" as="image" href="https://i.imgur.com/vX642TQ.png"/><link rel="preload" as="image" href="https://i.imgur.com/xG9p1jc.png"/><link rel="preload" as="image" href="https://i.imgur.com/7Km1B2B.png"/><link rel="preload" as="image" href="https://i.imgur.com/qC6PnKe.png"/><link rel="preload" as="image" href="https://i.imgur.com/KUStwdS.png"/><link rel="preload" as="image" href="https://i.imgur.com/Vr13q71.png"/><link rel="preload" as="image" href="https://i.imgur.com/aBSHApV.png"/><link rel="preload" as="image" href="https://i.imgur.com/gdcU3nm.png"/><link rel="preload" as="image" href="https://i.imgur.com/7i5Mz4s.png"/><link rel="preload" as="image" href="https://i.imgur.com/hJyOb0I.png"/><link rel="preload" as="image" href="https://i.imgur.com/wDUbNX2.png"/><blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Démarrez avec une fonctionnalité</h2>
<p>Ne démarrez pas avec une mise en page (un layout). Vous faites une erreur si vous commencez par vous demander quelle va être votre barre de navigation ou votre footer.</p>
<p>Par exemple, si vous créez un système de réservation de billet d&#x27;avion, vous pouvez commencer par créer une fonctionnalité &quot;Recherche de vols&quot; :</p>
<ul>
<li>Un champ pour la ville de départ</li>
<li>Un champ pour la ville de destination</li>
<li>Un champ pour la date de départ</li>
<li>Un champ pour la date de retour</li>
<li>Un bouton pour effectuer la recherche</li>
</ul>
<p><img src="https://i.imgur.com/fh9TORr.png" alt="|400"/></p>
<h2>Les détails viennent plus tard</h2>
<p>Ignorer les détails dans un premier temps (les couleurs, polices, ombres, icons, etc...).</p>
<p><strong>Commencez vos interfaces uniquement avec des niveaux de gris</strong>.</p>
<p><img src="https://i.imgur.com/TGPzhyU.png" alt="|400"/></p>
<p><strong>Petit hack</strong> : Créez votre maquette sur papier avec un feutre épais pour se forcer à ignorer les détails.</p>
<p><img src="https://i.imgur.com/vX642TQ.png" alt="|400"/></p>
<h2>Choisir une police de caractère</h2>
<p>Si vous voulez un site classique, utilisez une font avec serif. Si vous voulez un site un peu moins sérieux, utilisez une font sans serif.</p>
<h2>Choisir une couleur</h2>
<p>Une couleur Gold (or) donnera une impression de luxe tandis qu&#x27;une couleur rose donnera une impression plus fun et moins sérieux.</p>
<h2>Choisir une border radius</h2>
<p>Des boutons avec une bordure sans rayon sera plus sérieux que l&#x27;inverse.</p>
<h2>Choisir un language</h2>
<p>Quel ton utilisez-vous ? Un ton amicale/personnel ou un ton professionnel ?</p>
<p>L&#x27;utilisation d&#x27;un ton moins personnel peut donner une impression plus officielle ou professionnelle.</p>
<p>Tandis que l&#x27;utilisation d&#x27;un langage plus convivial et plus décontracté donne au site un aspect plus agréable.</p>
<h2>Analyser les sites que votre audience visite</h2>
<p>La plupart du temps, vous aurez probablement juste une intuition pour la personnalité que vous recherchez.</p>
<p>Mais si ce n&#x27;est pas le cas, un excellent moyen de simplifier la décision consiste à jeter un coup d&#x27;œil aux autres sites utilisés par les personnes que vous souhaitez atteindre.</p>
<h2>Définissez un système à l&#x27;avance</h2>
<p>Limitez vos choix lorsque vous créez votre design. Au lieu de décider à chaque fois quelles couleur, police ou taille de bordure utiliser, créez-vous un système à l&#x27;avance avec un nombre de choix limité pour tous vos éléments :</p>
<ul>
<li>Font size</li>
<li>Font weight</li>
<li>Line height</li>
<li>Color</li>
<li>Margin</li>
<li>Padding</li>
<li>Width</li>
<li>Height</li>
<li>Box shadows</li>
<li>Border radius</li>
<li>Border width</li>
<li>Opacity</li>
<li>Etc...</li>
</ul>
<h2>Hiérarchie visuelle</h2>
<p>Tous les éléments ne sont pas égaux. Quand tous les éléments sont en compétition pour attirer l&#x27;attention, cela rend le design bruyant et chaotique.</p>
<p><img src="https://i.imgur.com/xG9p1jc.png" alt="|400"/></p>
<p>La <a href="/hierarchie-visuelle" title="Hiérarchie visuelle" class="not-found">Hiérarchie visuelle</a> fait référence à l&#x27;importance des éléments d&#x27;une interface les uns par rapport aux autres.</p>

<p>Lorsque vous minimisez délibérément les informations secondaires et tertiaires, et que vous faites l&#x27;effort de mettre en valeur les éléments les plus importants, le résultat est immédiatement plus agréable, même si la palette de couleurs, le choix de la police et la mise en page n&#x27;ont pas changé.</p>
<p><img src="https://i.imgur.com/7Km1B2B.png" alt="|400"/></p>
<h2>Accentuez en désaccentuant</h2>
<p>Parfois, vous pouvez vous retrouver dans une situation où vous ne pouvez plus accentuer (empathize en anglais) un élément.</p>
<p><img src="https://i.imgur.com/qC6PnKe.png" alt="|400"/></p>
<p>Pour régler ce problème, vous pouvez désaccentuer les éléments qui sont en compétition autour du vôtre.</p>
<p><img src="https://i.imgur.com/KUStwdS.png" alt="|400"/></p>
<p>Autre exemple avec une sidebar :</p>
<p><img src="https://i.imgur.com/Vr13q71.png" alt="|400"/></p>
<h2>Les labels sont secondaires</h2>
<p>Dans beaucoup de situations, les labels sont inutiles.</p>
<p><img src="https://i.imgur.com/aBSHApV.png" alt="|400"/></p>
<p>Le format ou le contexte de l&#x27;information suffit déjà a clarifier le type d&#x27;information.</p>
<p><img src="https://i.imgur.com/gdcU3nm.png" alt="|400"/>
<img src="https://i.imgur.com/7i5Mz4s.png" alt="|400"/>
<img src="https://i.imgur.com/hJyOb0I.png" alt="|400"/>
<img src="https://i.imgur.com/wDUbNX2.png" alt="|400"/></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Regret Minimization Framework]]></title>
            <link>https://johackim.com/regret-minimization-framework?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/regret-minimization-framework</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/regret-minimization-framework.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/regret-minimization-framework.jpg"/>
            <content:encoded><![CDATA[<p>Pour maximiser votre bonheur à long terme, donnez la priorité aux projets que vous regretteriez le plus de ne pas avoir poursuivis lorsque vous serez vieux et que vous regarderez votre vie en arrière.</p>
<p>Ce principe provient de <a href="https://youtu.be/jwG_qR6XmDQ">Jeff Bezos</a>.</p>
<p>Posez-vous simplement cette question : &quot;Dans X années, est-ce que je regretterai de ne pas avoir fait ça ?&quot;</p>
<p>Si oui, faites-le ! Sinon, ne vous donnez pas la peine.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://www.julian.com/blog/mental-model-examples</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>To maximize your long-term happiness, prioritize projects you’d most regret not having pursued by the time you’re old and looking back at your life.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://julian.com/blog/mental-model-examples">Julian Shapiro - Mental models</a></li>
<li><a href="https://notion.so/Regret-Minimization-d075426e2ec842618c2c4692753fcd08">Corey Haines - Swipe Files Brain</a></li>
<li><a href="https://alexbrogan.beehiiv.com/p/how-to-minimize-regret-using-jeff-bezos-s-regret-minimization-framework">https://alexbrogan.beehiiv.com/p/how-to-minimize-regret-using-jeff-bezos-s-regret-minimization-framework</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Retrouver le passage d'une vidéo YouTube]]></title>
            <link>https://johackim.com/comment-retrouver-le-passage-dune-video-youtube?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-retrouver-le-passage-dune-video-youtube</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-retrouver-le-passage-dune-video-youtube.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-retrouver-le-passage-dune-video-youtube.jpg"/>
            <content:encoded><![CDATA[<p>Si comme moi, vous cherchez un passage particulier (ex: une phrase) dans une vidéo d&#x27;une chaine YouTube, mais que vous ne le retrouvez pas, voici comment faire pour automatiser la recherche.</p>
<p>Si il s&#x27;agit simplement d&#x27;une vidéo YouTube, ouvrez le &quot;Transcript&quot; de la vidéo via le bouton avec les trois petits points et recherche votre mot avec le racourcis clavier CTRL+F.</p>
<p>Si vous ne savez pas de quel vidéo il s&#x27;agit mais que vous avez que le nom de la chaine YouTube, Il existe un logiciel qui s&#x27;appelle <a href="https://github.com/ytdl-org/youtube-dl">youtube-dl</a> qui vous permet de télécharger des vidéos, mais aussi les sous-titres d&#x27;une vidéo.</p>
<p>Du coup, vous pouvez télécharger tous les transcripts d&#x27;une chaine YouTube :</p>
<pre><code class="language-bash">youtube-dl --write-auto-sub --sub-lang &lt;lang&gt; --skip-download &lt;youtube_channel|youtube_video&gt;
</code></pre>
<p>Puis effectuer une recherche automatique sur les transcripts avec une commande <a href="/linux" title="Linux">Linux</a> comme <code>ag</code> ou <code>grep</code> :</p>

<pre><code class="language-bash">ag &lt;text&gt;
# ou
grep -rin &lt;text&gt;
</code></pre>
<p>Comme ça, si vous vous souvenez juste d&#x27;une phrase en particulier, mais vous ne retrouvez pas le passage, vous pouvez automatiser votre recherche afin d&#x27;aller plus vite 😀.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre 12 leçons de rhétorique pour prendre le pouvoir de Victor Ferry]]></title>
            <link>https://johackim.com/victor-ferry-12-lecons-de-rhetorique-pour-prendre-le-pouvoir?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/victor-ferry-12-lecons-de-rhetorique-pour-prendre-le-pouvoir</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/victor-ferry-12-lecons-de-rhetorique-pour-prendre-le-pouvoir.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/victor-ferry-12-lecons-de-rhetorique-pour-prendre-le-pouvoir.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Les 3 dimensions de la rhétorique</h2>
<p>D&#x27;après Artistote, la persuasion naît de la prise en compte de trois dimensions de la communication :</p>
<ul>
<li>
L&#x27;<a href="/ethos" title="Ethos" class="not-found">Ethos</a> ; la confiance que le public accorde à la personne de l’orateur.

</li>
<li>
Le <a href="/pathos" title="Pathos" class="not-found">Pathos</a> ; la disposition émotionnelle dans laquelle l’orateur met le public.

</li>
<li>
Le <a href="/logos" title="Logos" class="not-found">Logos</a> ; les arguments que l’orateur soumet au jugement du public.

</li>
</ul>
<h2>Les trois questions à se poser en tant que théoricien de la rhétorique</h2>
<p>Lorsque l&#x27;on entends un discours, demandez-vous :</p>
<h3>1. Qu’est-ce que l’orateur essaie de faire ?</h3>
<p>Trouvez quel est son objectif et pourquoi il cherche à prendre la parole. Veut-il me séduire, me convaincre, me rassurer, me mettre en colère, m&#x27;informer, me pousser à agir ?</p>
<h3>2. Comment s’y prend-il ?</h3>
<p>Pour un même objectif, il existe plusieurs stratégies. Exemple : vendre un produit en jouant sur la l&#x27;excitation de la nouveauté ou en le comparant à un autre moins efficace.</p>
<h3>3. Était-ce la meilleure option ?</h3>
<p>TODO</p>
<h2>Testez l&#x27;efficacité de votre discours</h2>
<p>Grâce à internet, vous pouvez vérifier l&#x27;impact d&#x27;un discours en récoltant des données qualitatives (commentaires) et quantitatives (vues, partages, clics sur l&#x27;appel à l&#x27;action).</p>
<h2>Écrivez votre manifeste</h2>
<blockquote>
<p>Un manifeste, c&#x27;est le socle de votre pensée, de votre idéologie. C’est un document où vous allez noter votre diagnostic de ce qu’il faudrait régler en priorité et vos solutions pour rendre le monde un peu meilleur.</p>
</blockquote>
<h3>1. Identifiez le problème</h3>
<blockquote>
<p>C’est lorsque nous butons sur quelque chose que nous avons soif de solutions.</p>
</blockquote>
<p>Ne vous demandez pas &quot;Qu&#x27;est ce que je propose ?&quot; mais plutôt &quot;Quels problèmes je règle ?&quot;.</p>
<p>Faites la liste des deux, trois voire quatre problèmes que vous comptez régler avec votre projet, avec vos produits, avec vos services.</p>
<h3>2. Assombrissez l&#x27;horizon</h3>
<p>Montrez-lui les conséquences de si il n&#x27;agit pas.</p>
<p>Utiliser <a href="/les-besoins-humains-fondamentaux" title="Les besoins humains fondamentaux" class="not-found">Les besoins humains fondamentaux</a> comme la sécurité, la santé, le plaisir, le confort, l’amour, la protection de ceux qu’on aime, la reconnaissance sociale.</p>

<p>Montrez lui en quoi son inaction va l&#x27;empêcher d&#x27;assouvir ses besoins.</p>
<h3>3. Dénoncez les coupables et leurs idées fausses</h3>
<p>Quels sont les opposants à votre idéologie ?</p>
<h3>4. Justifiez votre solution</h3>
<p>Vous pouvez justifier une solution de 4 manières :</p>
<ul>
<li>
<strong><a href="/l&#x27;opportunite" title="L&#x27;opportunité" class="not-found">L&#x27;opportunité</a></strong> : montrer que c&#x27;est le moment où jamais pour agir

</li>
<li>
<strong><a href="/la-faisabilite" title="La faisabilité" class="not-found">La faisabilité</a></strong> : montrer que la solution est réaliste et même simple à mettre en oeuvre

</li>
<li>
<strong><a href="/l&#x27;utilite" title="L&#x27;utilité" class="not-found">L&#x27;utilité</a></strong> : montrer les conséquences positives de la mise en oeuvre de la solution

</li>
<li>
<strong><a href="/la-moralite" title="La moralité" class="not-found">La moralité</a></strong> : montrer que la solution permet de concrétiser des valeurs universelles (liberté, égalité, fraternité, équité, respect, dignité, etc...)

</li>
</ul>
<h3>5. Appelez à l&#x27;action</h3>
<blockquote>
<p>Si vous voulez que votre discours soit suivi d&#x27;effet, il y a une règle tout simple : donnez à vore public des actions concrètes à effectuer.</p>
</blockquote>
<p>Vous pouvez le faire de deux façons : en jouant sur <strong>l&#x27;envie de se démarquer</strong> (ex: &quot;seuls les plus audacieux passeront à l&#x27;action&quot;), ou sur <strong>le <a href="/conformisme" title="Conformisme" class="not-found">Conformisme</a></strong> et <strong>la <a href="/pression-sociale" title="Pression sociale" class="not-found">Pression sociale</a></strong> (ex: &quot;tous vos voisins sont déjà passés à l&#x27;action&quot;).</p>

<h2>Convaincre != persuader</h2>
<p>Convaincre veut dire changer l&#x27;opinion d&#x27;une personne.</p>
<p>Persuader veut dire motiver le passage à l&#x27;action d&#x27;une personne.</p>
<p>Si vous vous contentez de persuader une personne sans la convaincre auparavant, elle pourra vous en vouloir de l&#x27;avoir manipulé.</p>
<p>La plupart des fumeurs sont convaincus que le tabac est mauvais pour la santé, mais il ne sont pas persuadé d&#x27;arrêter.</p>
<h2>Les 5 canons de la rhéthorique</h2>
<ul>
<li><strong>L&#x27;invention</strong> : Vous rassemblez la matière de votre discours.</li>
<li><strong>La disposition</strong> : Vous maximiser l&#x27;efficacité de chaque partie de votre discours.</li>
<li><strong>Le style</strong> : Vous faites un choix sur les mots, les formules et les figures afin de rendre votre discours original et mémorable.</li>
<li><strong>La mémoire</strong> : Vous vous détachez du texte et vous vous facalisez sur votre relation au public.</li>
<li><strong>La performance</strong> : Travaillez sur le rhythme, le volume et le niveau d&#x27;énergie que vous donnez au public.</li>
</ul>
<h2>Post-vérité</h2>
<blockquote>
<p>L’année 2016 a été consacrée comme celle de la « post-vérité ». Que faut-il comprendre par ce terme ? Selon le dictionnaire d’Oxford, qui en a fait son mot de l’année, le terme désignerait des « circonstances dans lesquelles les faits objectifs ont moins d’influence pour former l’opinion publique que l’appel à l’émotion et aux croyances personnelles ». Total bullshit - Sebastian Dieguez</p>
</blockquote>
<h2>Les 4 tentacules de la post-vérité</h2>
<ul>
<li>Le relativisme</li>
<li>L’intellectualisme</li>
<li>Le populisme</li>
<li>Le sensationnalisme</li>
</ul>
<p>L’attaque relativiste : « Mon point de vue vaut bien le vôtre »,
L’attaque intellectualiste : « Comment pouvez-vous être sûr à 100 % de ce que vous avancez ? »,
L’attaque populiste : « Pour qui vous prenez-vous ? ».</p>
<h2>La stratégie du scandale</h2>
<ul>
<li>La grossièreté</li>
<li>L’hyperbole</li>
<li>Le sophisme de la pente glissante</li>
</ul>
<h2>Qu’est-ce qu’un argument ?</h2>
<p>Un <a href="/argument" title="argument" class="not-found">argument</a> est composé de deux éléments : une <strong>prémisse</strong> et une <strong>conclusion</strong>.</p>

<p>La conclusion est ce que vous voulez que votre public admette comme vrai, la prémisse est ce que vous lui donnez pour l’admettre.</p>
<p>Exemple : &quot;Il faut lire tous les jours (conclusion) car la lecture réduit le stress (prémisse).&quot;</p>
<h2>Quelques sophismes de base</h2>
<p>Un <a href="/sophisme" title="sophisme" class="not-found">sophisme</a> est le contraire d&#x27;un bon argument.</p>

<ul>
<li>La pétition de principe</li>
<li>L’argumentation ad populum</li>
<li>L’argumentation ad baculum</li>
<li>La généralisation hâtive</li>
<li>Le Post hoc, ergo propter hoc</li>
<li>La pente glissante</li>
</ul>
<h2>Test de vérité</h2>
<ul>
<li>Données qualitatives</li>
<li>Données quantitatives</li>
<li>Données expérimentales</li>
</ul>
<h2>5 étapes pour nous assurer de la qualité de nos arguments</h2>
<ol>
<li>Posez votre thèse</li>
<li>Présentez un fait à l’appui de votre thèse</li>
<li>Garantissez le passage de votre prémisse à la conclusion</li>
<li>Clarifiez le domaine du savoir dont vous puisez votre garantie</li>
<li>Identifiez les limites de votre argumentation</li>
</ol>
<h2>Test de validité</h2>
<p>TODO</p>
<h2>Les figures de style</h2>
<p>TODO</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[WOOP Framework]]></title>
            <description><![CDATA[Découvrez le système WOOP pour atteindre vos objectifs en 4 étapes ; établir un souhait, déterminer les résultats, identifier les obstacles et planifier.]]></description>
            <link>https://johackim.com/woop-framework?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/woop-framework</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 06 Oct 2021 16:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/woop-framework.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/woop-framework.jpg"/>
            <content:encoded><![CDATA[<p>Le système WOOP est composé de 4 parties :</p>
<ol>
<li>
<strong>Wish</strong> : <em>Définissez un rêve/objectif</em> - Que voulez-vous ? Décrivez-le en quelques mots.
</li>
<li>
<strong>Outcomes</strong> : <em>Quels bénéfices/ressentis allez-vous obtenir en réalisant cet objectif ?</em> - Décrivez-les
</li>
<li>
<strong>Obstacles</strong> : <em>Quels obstacles allez-vous rencontrer ?</em> - Affrontez le réel et concentrez-vous sur les obstacles qui vous se dresser devant vous. Listez-les.
</li>
<li>
<strong>Plans :</strong> <em>Préparez-le(s) plan(s) nécessaire(s) avec la méthode : Si obstacle (X) alors plan (Y).</em> C’est ce que l’auteur appelle <strong>l’implémentation d’intentions.</strong> Choisissez le plan le plus efficace.
</li>
</ol>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://woopmylife.org/fr/home">https://woopmylife.org/fr/home</a></li>
<li><a href="https://everlaab.com/methode-woop/">https://everlaab.com/methode-woop/</a></li>
<li><a href="https://jeancharleskurdali.com/le-systeme-en-4-etapes-que-vous-devez-absolument-connaitre-et-utiliser-pour-atteindre-vos-objectifs/">https://jeancharleskurdali.com/le-systeme-en-4-etapes-que-vous-devez-absolument-connaitre-et-utiliser-pour-atteindre-vos-objectifs/</a></li>
<li><a href="https://amzn.to/3p6qNN3">Rethinking Positive Thinking - Gabriele Oettingen</a></li>
<li>
<a href="/goal-setting" title="Goal setting" class="not-found">Goal setting</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Exporter ses bookmarks Firefox en markdown]]></title>
            <link>https://johackim.com/exporter-ses-bookmarks-firefox-en-markdown?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/exporter-ses-bookmarks-firefox-en-markdown</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Sep 2021 22:29:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/exporter-ses-bookmarks-firefox-en-markdown.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/exporter-ses-bookmarks-firefox-en-markdown.jpg"/>
            <content:encoded><![CDATA[<p>Pour exporter mes bookmarks de Firefox au format markdown, il faut d&#x27;abord récupérer un backup au format JSON :</p>
<ol>
<li>Démarrer Firefox</li>
<li>Ouvrer le menu des bookmarks (CTRL+MAJ+O)</li>
<li>Récupérer le backup au format JSON (Import and backup &gt; Backup)</li>
</ol>
<p>Une fois que votre backup au format JSON (<code>bookmarks-xxxx-xx-xx.json</code>) est téléchargé sur votre ordinateur, exécutez ce script python :</p>
<pre><code class="language-python"># script.py

import json
bdict = json.load(open(&#x27;bookmarks-xxxx-xx-xx.json&#x27;, &#x27;r&#x27;))

def parse_firefox_bookmark(bdict, header=&quot;&quot;):
    if &#x27;children&#x27; not in bdict.keys():
        try:
            print(&#x27;*&#x27;, &#x27;[&#x27; + bdict[&#x27;title&#x27;] + &#x27;]&#x27; + &#x27;(&#x27; + bdict[&#x27;uri&#x27;] + &#x27;)&#x27;) 
        except:
            pass
        return
    print(header, bdict[&#x27;title&#x27;])
    for children in bdict[&#x27;children&#x27;]:
        parse_firefox_bookmark(children, header+&#x27;#&#x27;)

parse_firefox_bookmark(bdict)
</code></pre>
<pre><code class="language-bash">python script.py &gt; bookmarks.md
</code></pre>
<p>PS : N&#x27;oubliez pas de modifier la date du fichier markdown dans le script (ex: <code>bookmarks-2021-09-26.json</code>).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://jagan.be/blog/post/shorts/Small-snipet-to-export-Firefox-bookmarks.json-to-markdown/">https://jagan.be/blog/post/shorts/Small-snipet-to-export-Firefox-bookmarks.json-to-markdown/</a></li>
<li>
<a href="/navigateur-web" title="Navigateur web" class="not-found">Navigateur web</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes applications Android]]></title>
            <link>https://johackim.com/mes-applications-android?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-applications-android</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Sep 2021 22:29:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-applications-android.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-applications-android.jpg"/>
            <content:encoded><![CDATA[<h2>Mes applications android</h2>
<ul>
<li><a href="https://f-droid.org/en">F-droid</a> (Store d&#x27;application)</li>
<li><a href="https://f-droid.org/fr/packages/com.aurora.store/">Aurora Store</a> (Store d&#x27;application)</li>
<li><a href="https://github.com/ImranR98/Obtainium">Obtainium</a> (Store d&#x27;application)</li>
<li><a href="https://play.google.com/store/apps/details?id=org.mozilla.focus">Firefox Focus</a> (Navigateur web)</li>
<li><a href="https://play.google.com/store/apps/details?id=org.thoughtcrime.securesms">Signal</a> (SMS)</li>
<li><a href="https://play.google.com/store/apps/details?id=ch.protonmail.android">Proton Mail</a> (Client e-mail)</li>
<li><a href="https://play.google.com/store/apps/details?id=de.danoeh.antennapod">AntennaPod</a> (Podcast)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.goodreads">Goodreads</a> (Livres)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.readermobile">Readwise Reader</a> (Client RSS)</li>
<li><strong><a href="https://play.google.com/store/apps/details?id=app.organicmaps">Organic Maps</a> (Navigation)</strong></li>
<li><a href="https://play.google.com/store/apps/details?id=app.comaps.google">Comaps</a> (Navigation)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.waze">Waze</a> (Navigation)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.generalmagic.magicearth">Magic Earth</a> (Navigation)</li>
<li><a href="https://play.google.com/store/apps/details?id=org.isoron.uhabits">Loop Habit tracker</a> (Tracker d&#x27;habitudes)</li>
<li><a href="https://github.com/FriesI23/mhabit">Table Habit</a> (Tracker d&#x27;habitudes)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.termux">Termux</a> (Terminal)</li>
<li><a href="https://play.google.com/store/apps/details?id=cards.mochi.app">Mochi</a> (Flashcards)</li>
<li><a href="https://f-droid.org/en/packages/org.schabi.newpipe/">NewPipe</a> (Client YouTube)</li>
<li><a href="https://github.com/InfinityLoop1308/PipePipe">PipePipe</a> (Client YouTube)</li>
<li><a href="https://play.google.com/store/apps/details?id=org.xbmc.kore">Kore</a> (Client Kodi)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.rb.rocketbook">Rocketbook</a> (Notes)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.stayfocused">Stay Focused</a> (Productivité)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.flyersoft.moonreaderp">Moon+ Reader Pro</a> (Livres)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.File.Manager.Filemanager">Es file explorer file manager</a> (Fichiers)</li>
<li><a href="https://github.com/breezy-weather/breezy-weather">Breezy Weather</a> (Météo)</li>
<li><a href="">WeatherMaster</a><a href="https://github.com/PranshulGG/WeatherMaster">https://github.com/PranshulGG/WeatherMaster</a> (Météo)</li>
<li><a href="https://play.google.com/store/apps/details?id=com.github.jamesgay.fitnotes">FitNotes</a> (Sport)</li>
<li><a href="https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore">OpenTracks</a> (Sport)</li>
<li><a href="https://play.google.com/store/apps/details?id=de.tadris.fitness">FitoTrack</a> (Sport)</li>
<li><a href="https://github.com/akaMrNagar/Mindful">Mindful</a> (Productivité)</li>
<li><a href="https://play.google.com/store/apps/details?id=app.olauncher">OLauncher</a> (Launcher)</li>
<li><a href="https://github.com/OlauncherCF/OlauncherCF">OlauncherCF</a> (Launcher)</li>
<li><a href="https://github.com/seedvault-app/seedvault">Seedvault</a> (Backups)</li>
<li><a href="https://play.google.com/store/apps/details?id=org.futo.inputmethod.latin.playstore">FUTO Keyboard</a> (Clavier)</li>
</ul>
<h2>Applications à tester</h2>
<ul>
<li><a href="https://github.com/MuntashirAkon/AppManager/">https://github.com/MuntashirAkon/AppManager/</a></li>
<li><a href="https://play.google.com/store/apps/details?id=xyz.kinnu">https://play.google.com/store/apps/details?id=xyz.kinnu</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.notebloc.app">https://play.google.com/store/apps/details?id=com.notebloc.app</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.tracked.mobile">https://play.google.com/store/apps/details?id=com.tracked.mobile</a></li>
<li><a href="https://play.google.com/store/apps/details?id=fr.sesamvitale.cartevitale.app">https://play.google.com/store/apps/details?id=fr.sesamvitale.cartevitale.app</a></li>
</ul>
<h2>Launchers</h2>















































<table><thead><tr><th>App</th><th>Note</th><th>Downloads</th><th>Open-source</th></tr></thead><tbody><tr><td><strong>Niagara</strong></td><td>4.7 (167k)</td><td>10M</td><td></td></tr><tr><td>Lawnchair</td><td>4.2 (37k)</td><td>1M</td><td>✓</td></tr><tr><td>Before Launcher</td><td>4.8 (12.4k)</td><td>500K</td><td></td></tr><tr><td>minimalist phone</td><td>4.2 (45k)</td><td>5M</td><td></td></tr><tr><td>Kvaesitso</td><td></td><td></td><td>✓</td></tr><tr><td>Olauncher</td><td>4.8 (65k)</td><td>1M</td><td>✓</td></tr></tbody></table>
<ul>
<li><a href="https://fmhy.net/android-iosguide#app-launchers">https://fmhy.net/android-iosguide#app-launchers</a></li>
<li><a href="https://github.com/GeorgeClensy/Escape-Launcher">https://github.com/GeorgeClensy/Escape-Launcher</a></li>
<li><a href="https://play.google.com/store/apps/details?id=bitpit.launcher">https://play.google.com/store/apps/details?id=bitpit.launcher</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.beforesoft.launcher">https://play.google.com/store/apps/details?id=com.beforesoft.launcher</a></li>
<li><a href="https://play.google.com/store/apps/details?id=com.qqlabs.minimalistlauncher">https://play.google.com/store/apps/details?id=com.qqlabs.minimalistlauncher</a></li>
<li><a href="https://grabster.notion.site/6671f3b62d8043c4aaaae22a241e3f05?v=91d9b664887643298f85fe18044d3560">https://grabster.notion.site/6671f3b62d8043c4aaaae22a241e3f05?v=91d9b664887643298f85fe18044d3560</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Traction du fondateur de Duckduckgo Gabriel Weinberg]]></title>
            <description><![CDATA[La traction est le signe que votre entreprise décolle. A ce moment là, les KPI s'affollent (téléchargements, ventes, etc...).]]></description>
            <link>https://johackim.com/traction-gabriel-weinberg?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/traction-gabriel-weinberg</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Sep 2021 22:29:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/traction-gabriel-weinberg.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/traction-gabriel-weinberg.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Traction</h2>
<p>La traction est le signe que votre entreprise décolle. A ce moment là, les KPI s&#x27;affollent (téléchargements, ventes, etc...).</p>
<h2>Les 19 canaux de traction</h2>
<h3>Blogs</h3>
<p>Identifier les blogs populaires de votre niche et donner leur un lien de partage de votre site (en échange d&#x27;un rémunération, d&#x27;un accès gratuit ou d&#x27;une réduction).</p>
<p>Créez des posts invités si possible.</p>
<h3>Publicité</h3>
<p>D&#x27;après <a href="/ryan-holiday" title="Ryan Holiday" class="not-found">Ryan Holiday</a>, l&#x27;approche directe des grosse média est rarement bonne. Il faut les approchez obliquement.</p>

<p>Répérez les petits blogs qu&#x27;un gros média relai et placez-vous dessus.</p>
<p>Donnez leur des histoires attractives au niveau émotionnel.</p>
<blockquote>
<p>La satisfaction est une émotion non virale. Ryan Holiday</p>
</blockquote>
<h3>Publicité non conventionnelle</h3>
<p>Faites quelque chose de grant, bon marché, drôle et original.</p>
<p>L&#x27;entreprise Blendtec à créer une série de vidéos intitulées &quot;Will it Blend ?&quot; qui a été vue des millions de fois.</p>
<p>Le moteur de recherche DuckDuckGo a placé une pub sur un panneau d&#x27;affichage juste à côté du batiment de Google.</p>
<p>Dollar Shave Club a capté l&#x27;attention avec sa vidéo de lancement intitulée &quot;Our Blades Are Fucking Great&quot;.</p>
<p>Hipmunk a organisé des concours comme demander à leur audience sur Twitter pourquoi ils aimaient leur mère plus que Hipmunk. Les mamans des gagnants ont reçu des fleurs et des chocolats.</p>
<p>Zappos créer la meilleur expérience client en répondant à toutes les reqûetes de ses clients (ex: Commander une pizza, échanger des vêtements de sport contre une friteuse, etc...).</p>
<h3>SEM</h3>
<p>Le marketing de moteur de recherche désigne la publicité placée sur les moteurs de recherche comme Google.</p>
<p>Le terme englobe le référencement naturel (SEO) et le référencement payant (SEA, SMA).</p>
<p>Les indicateurs à connaitres sont :</p>
<ul>
<li>
Le <a href="/taux-de-clic" title="Taux de clic" class="not-found">Taux de clic</a> (CTR) : Le pourcentage d&#x27;impression publicitaire sur le nombre de clics. Exemple : si vous avez 100 personnes qui voient votre publicité et que 3 cliquent dessus, vous avez un CTR de 3%.

</li>
<li>
Le <a href="/cout-par-clic" title="Coût par clic" class="not-found">Coût par clic</a> (CPC) : Le montant à payer pour un clic sur votre pub.

</li>
<li>
Le <a href="/cout-d&#x27;acquisition-client" title="Coût par acquisition" class="not-found">Coût par acquisition</a> (CPA) : Le coût de recrutement d&#x27;un client (CPC / pourcentage de conversion).

</li>
</ul>
<h3>Display Ads</h3>
<p>Les annonces graphiques (Display Ads) sont les bannières que vous voyez sur les sites web comme :</p>
<ul>
<li>Linkedin</li>
<li>Twitter</li>
<li>Facebook</li>
<li>Reddit</li>
<li>YouTube</li>
<li>Pinterest</li>
<li>Etc...</li>
</ul>
<p>Passez par ses sites pour y afficher vos annonces graphiques ou demander à un petit site d&#x27;en afficher en échange d&#x27;un petit montant.</p>
<h3>La publicité hors-ligne</h3>
<p>Il existe plusieurs catégories de pubs hors-ligne :</p>
<ul>
<li>Télévision</li>
<li>Radio</li>
<li>Magazines</li>
<li>Journaux</li>
<li>Pages jaunes</li>
<li>Etc..</li>
</ul>
<p>Pour mesurer l&#x27;impact des pubs hors-ligne, vous pouvez créer des URL uniques (ex: monsite.com/flyer) ou des codes promo spécifiques afin de savoir combien de visites ont générées votre campagne.</p>
<p>Le prix peut aller de quelques centaines à plusieurs milliers d&#x27;euros selon l&#x27;emplacement et la taille de l&#x27;audience ciblé.</p>
<h3>SEO</h3>
<p>Il est difficile de se positionner sur les mots clés &quot;tête de traîne&quot;.</p>
<p>Trouvez des mots clés longue traine populaire et créez des landing page avec un contenu de qualité dessus.</p>
<h3>Marketing de contenu</h3>
<p>Ecrivez des contenu au sujet des problèmes de vos clients.</p>
<h3>Email Marketing</h3>
<p>Créez des séquences e-mail personnalisé à destinations de vos utilisateurs.</p>
<p>Vous pouvez faire des tests A/B pour mesurer les taux d&#x27;ouverture et de clics.</p>
<h3>Marketing Viral</h3>
<p>Devenir &quot;viral&quot; signifie que chaque utilisateur que vous récupérez vous apporte un au autre utilisateur.</p>
<p>Cela forme une boucle qui se répéte encore et encore.</p>
<p>Le bouche à oreille est une forme de marketing viral.</p>
<blockquote>
<p>La viralité intrinsèque intervient quand vous pouvez exploiter la valeur d&#x27;un produit simplement en invitant d&#x27;autres clients.</p>
</blockquote>
<p>Par exemple, un outil comme Facebook, Skype ou Snapshat est plus utile lorsqu&#x27;il y a d&#x27;autres personnes l&#x27;utilise avec vous.</p>
<p>Hotmail affiche une signature par défault : &quot;Créez un compte e-mail gratuit avec Hotmail&quot;.</p>
<p>Apple signe &quot;Envoyé depuis mon iPhone&quot;.</p>
<p>Dropbox propose de gagner plus d&#x27;espace de stockage si vous amenez des amis à s&#x27;y inscrire.</p>
<h3>Presse</h3>
<p>TODO</p>
<h3>Guest Blogging / Articles invités</h3>
<p>TODO</p>
<h3>Vente directe</h3>
<p>TODO</p>
<h3>Affiliation</h3>
<p>TODO</p>
<h3>Salons professionnels</h3>
<p>TODO</p>
<h3>Meetups</h3>
<p>TODO</p>
<h3>Conférences</h3>
<p>TODO</p>
<h3>Communautés</h3>
<p>TODO</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/3o5Y5wF">Traction - Gabriel Weinberg</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Trouver des fichiers en double sur Linux]]></title>
            <link>https://johackim.com/trouver-des-fichiers-en-double-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/trouver-des-fichiers-en-double-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Sep 2021 22:29:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/trouver-des-fichiers-en-double-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/trouver-des-fichiers-en-double-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour trouver des fichiers en double sur <a href="/linux" title="Linux">Linux</a>, il existe la commande suivante :</p>

<pre><code class="language-bash">fdupes -r &lt;dossier&gt;
</code></pre>
<p>Cette commande va chercher de manière récursive les fichiers qui ont le même contenu.</p>
<p>Pour supprimer les doublons :</p>
<pre><code class="language-bash">fdupes -rnd &lt;dossier&gt;
</code></pre>
<p>Et si vous voulez uniquement lister les fichiers qui retournent le même nom de fichier, exécutez cette commande :</p>
<pre><code class="language-bash">find . -type f -printf &#x27;%p/ %f\n&#x27; | sort -k2 | uniq -f1 --all-repeated=separate
</code></pre>
<p>ou</p>
<pre><code class="language-bash">fd -x echo {/} | sort -k2 | uniq -f1 --all-repeated=separate
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Changer la version de python facilement avec pyenv]]></title>
            <link>https://johackim.com/changer-la-version-de-python-facilement-avec-pyenv?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/changer-la-version-de-python-facilement-avec-pyenv</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Sep 2021 22:29:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/changer-la-version-de-python-facilement-avec-pyenv.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/changer-la-version-de-python-facilement-avec-pyenv.jpg"/>
            <content:encoded><![CDATA[<p>Pour changer de version de Python facilement, de la même manière que nvm pour NodeJS, il existe l&#x27;outil <a href="https://github.com/pyenv/pyenv">pyenv</a>.</p>
<h2>Installation de pyenv</h2>
<p>Pour l&#x27;installer, exécutez les commandes suivantes en provenance de <a href="https://github.com/pyenv/pyenv-installer">ce dépôt Github</a> :</p>
<pre><code class="language-bash">curl https://pyenv.run | bash
echo &#x27;export PATH=&quot;$PATH:$HOME/.pyenv/bin&quot;&#x27; &gt;&gt; ~/.bashrc
echo &#x27;eval &quot;$(pyenv init --path)&quot;&#x27; &gt;&gt; ~/.bashrc
echo &#x27;eval &quot;$(pyenv virtualenv-init -)&quot;&#x27; &gt;&gt; ~/.bashrc
source ~/.bashrc
</code></pre>
<h2>Utilisation de pyenv</h2>
<p>Pour installer une nouvelle version de Python :</p>
<pre><code class="language-bash">pyenv install -v 3.7.0
</code></pre>
<p>Pour switcher sur cette nouvelle version :</p>
<pre><code class="language-bash">pyenv global 3.7.0
</code></pre>
<pre><code class="language-bash">python -V
# Python 3.7.0
</code></pre>
<p>Pour revenir sur la version python de notre système :</p>
<pre><code class="language-bash">pyenv global system
</code></pre>
<h2>(Facultatif) Fix temporaire</h2>
<p>J&#x27;ai un souci avec <code>pip</code> qui me renvoie une erreur : <code>~/.pyenv/pyenv.d/exec/pip-rehash/pip: line 20: 38799 Segmentation fault (core dumped) &quot;$PYENV_COMMAND_PATH&quot; &quot;$@&quot;</code>.</p>
<p>Pour régler le problème je commente une ligne du fichier <code>~/.pyenv/versions/3.7.0/bin/pip3.7</code> :</p>
<pre><code class="language-python"># sys.argv[0] = re.sub(r&#x27;(-script\.pyw?|\.exe)?$&#x27;, &#x27;&#x27;, sys.argv[0])
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/python" title="Python" class="not-found">Python</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Détecter le format d'une date]]></title>
            <link>https://johackim.com/detecter-le-format-dune-date?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/detecter-le-format-dune-date</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/detecter-le-format-dune-date.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/detecter-le-format-dune-date.jpg"/>
            <content:encoded><![CDATA[<p>Pour connaitre le format d&#x27;une date, il existe l&#x27;outil en ligne <a href="https://nsdateformatter.com/">NSDateFormatter</a>.</p>
<p>Renseignez votre date (ex : <code>2021-01-01T10:00</code>) dans le champs <code>DATE INPUT</code> et le site retournera le format de la date -&gt; <code>ISO 8601 format</code>.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/programmation" title="Programmation">Programmation</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Extraire les sous-titres d'une vidéo mkv]]></title>
            <link>https://johackim.com/extraire-les-sous-titre-dune-video-mkv?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/extraire-les-sous-titre-dune-video-mkv</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/extraire-les-sous-titre-dune-video-mkv.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/extraire-les-sous-titre-dune-video-mkv.jpg"/>
            <content:encoded><![CDATA[<p>Pour extraire les sous-titres d&#x27;une vidéo MKV, il existe le package <code>mkvtoolnix-cli</code> :</p>
<pre><code class="language-bash">sudo pacman -S mkvtoolnix-cli
</code></pre>
<p>Une fois installé, vous pouvez récupérer la liste numéroté des pistes vidéos et des sous-titre avec la commande suivante :</p>
<pre><code class="language-bash">mkvinfo How.to.Sell.Drugs.Online.Fast.S03E01.MULTi.1080p.WEB.x264-ALLDAYiN.mkv

# Ou

mediainfo How.to.Sell.Drugs.Online.Fast.S03E01.MULTi.1080p.WEB.x264-ALLDAYiN.mkv
</code></pre>
<p>Trouvez le numéro de la piste (ex: <code>5</code>) de sous-titres que vous voulez extraire et exécutez la commande :</p>
<pre><code class="language-bash">mkvextract tracks How.to.Sell.Drugs.Online.Fast.S03E01.MULTi.1080p.WEB.x264-ALLDAYiN.mkv 5:How.to.Sell.Drugs.Online.Fast.S03E01.MULTi.1080p.WEB.x264-ALLDAYiN.srt
</code></pre>
<p>Voilà ! 😀</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Github Pages]]></title>
            <link>https://johackim.com/deployer-automatiquement-un-depot-sur-github-pages?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/deployer-automatiquement-un-depot-sur-github-pages</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/deployer-automatiquement-un-depot-sur-github-pages.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/deployer-automatiquement-un-depot-sur-github-pages.jpg"/>
            <content:encoded><![CDATA[<p>Pour déployer automatiquement son code sur Github Pages, il existe les GitHub Actions.</p>
<p>Créez un fichier Yaml dans le dossier <code>.github/workflows/</code> à la racine de votre dépôt git (ex: <code>.github/workflows/deploy.yml</code>).</p>
<pre><code class="language-yaml">name: Deploy

on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-node@v4
        with:
          node-version: 22

      - name: Install packages
        run: npm install

      - name: Build
        run: npm run build

      - uses: peaceiris/actions-gh-pages@v4
        with:
          github_token: ${{ secrets.GITHUB_TOKEN }}
          publish_dir: ./public
</code></pre>
<p><del><a href="https://github.com/settings/tokens/new">Générer un token</a> avec à un accès au scope <code>repo</code> puis ajoutez le en tant qu&#x27;Action Secret <code>GH_TOKEN</code> dans les settings de votre dépot Github (Settings -&gt; Secrets -&gt; New repository secret).</del> (Utiliser la variable GITHUB_TOKEN autogénéré par Github à la place).</p>
<p>Sans oubliez de modifier les paramètres du dépôt : <code>Settings -&gt; Actions -&gt; General -&gt; Workflow permissions -&gt; Read and write permissions -&gt; Save</code>.</p>
<p>Déployez votre code, et il sera automatiquement déployé sur une branche <code>gh-pages</code> à chaque push sur la branche master.</p>
<p>Enfin, activez Github pages dans les Settings -&gt; Pages.</p>
<p>Pour ajouter un nom de domaine root, changez la zone de type A de votre nom de domaine avec l&#x27;une des valeurs suivantes :</p>
<pre><code class="language-txt">185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Pour connaitre la liste des adresse IPs, exécutez la commande dig A your_github_username.github.io.</p>
                    </div>
                </blockquote>
<p>Ou une zone de type CNAME avec <code>your_github_username.github.io</code> si vous utilisez un sous-domaine.</p>
<blockquote class="callout important">
                    
                    <div class="callout-content">
                        <p>N&#x27;oubliez pas de créer un fichier CNAME avec votre nom de domaine ou sous-domaine à l&#x27;intérieur du fichier pour que Github Page garde bien le nom de domaine lors des prochains déploiements.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site">https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes artistes préférés]]></title>
            <link>https://johackim.com/mes-musiques-preferes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-musiques-preferes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-musiques-preferes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-musiques-preferes.jpg"/>
            <content:encoded><![CDATA[<h2>Mes artistes préférés</h2>
<ul>
<li><a href="https://deezer.com/en/artist/1447548">Rise Of The Northstar</a></li>
<li><a href="https://deezer.com/en/artist/8011234">Slaughter To Prevail</a></li>
<li><a href="https://deezer.com/en/artist/117">Slipknot</a></li>
<li><a href="https://deezer.com/en/artist/469142">Alea Jacta Est</a></li>
<li><a href="https://deezer.com/fr/artist/159496332">Paleface Swiss</a></li>
<li><a href="https://deezer.com/en/artist/1346116">Falling In Reverse</a></li>
<li><a href="https://deezer.com/en/artist/361819">Long Distance Calling</a></li>
<li><a href="https://deezer.com/en/artist/6518643">Harakiri for the Sky</a></li>
<li><a href="https://deezer.com/en/artist/5566477">White Ward</a></li>
<li><a href="https://deezer.com/en/artist/10920">First Blood</a></li>
<li><a href="https://deezer.com/en/artist/10446">Agalloch</a></li>
<li><a href="https://deezer.com/en/artist/425075">Agrypnie</a></li>
<li><a href="https://deezer.com/en/artist/1647480">A Pale Horse Named Death</a></li>
<li><a href="https://deezer.com/en/artist/112899">Ahab</a></li>
<li><a href="https://deezer.com/en/artist/16329">Alcest</a></li>
<li><a href="https://deezer.com/en/artist/9382174">An Ocean Of Void</a></li>
<li><a href="https://deezer.com/en/artist/3270">Anaal Nathrakh</a></li>
<li><a href="https://deezer.com/en/artist/912">Apocalyptica</a></li>
<li><a href="https://deezer.com/en/artist/911">AqME</a></li>
<li><a href="https://deezer.com/en/artist/1392">Arch Enemy</a></li>
<li><a href="https://deezer.com/en/artist/159126">Architects</a></li>
<li><a href="https://deezer.com/en/artist/3823">As I Lay Dying</a></li>
<li><a href="https://deezer.com/en/artist/4633">Ashram</a></li>
<li><a href="https://deezer.com/en/artist/5581">At the Gates</a></li>
<li><a href="https://deezer.com/en/artist/5856417">AWAKENING SUN</a></li>
<li><a href="https://deezer.com/en/artist/6456">Behemoth</a></li>
<li><a href="https://deezer.com/en/artist/10328">Benighted</a></li>
<li><a href="https://deezer.com/en/artist/10858">Black Bomb A</a></li>
<li><a href="https://deezer.com/en/artist/647">Black Sabbath</a></li>
<li><a href="https://deezer.com/en/artist/421">Bloodhound Gang</a></li>
<li><a href="https://deezer.com/en/artist/11562565">Bloodywood</a></li>
<li><a href="https://deezer.com/en/artist/160978">Borknagar</a></li>
<li><a href="https://deezer.com/en/artist/471465">Breakdown Of Sanity</a></li>
<li><a href="https://deezer.com/en/artist/258136">Breed 77</a></li>
<li><a href="https://deezer.com/en/artist/327">Bullet for My Valentine</a></li>
<li><a href="https://deezer.com/en/artist/7009">Caliban</a></li>
<li><a href="https://deezer.com/en/artist/5523212">Cloudkicker</a></li>
<li><a href="https://deezer.com/en/artist/293261">Collapse Under the Empire</a></li>
<li><a href="https://deezer.com/en/artist/7273">Cult of Luna</a></li>
<li><a href="https://deezer.com/en/artist/27">Daft Punk</a></li>
<li><a href="https://deezer.com/fr/artist/5600">Decapitated</a></li>
<li><a href="https://deezer.com/en/artist/11058">Dagoba</a></li>
<li><a href="https://deezer.com/en/artist/5438206">Davodka</a></li>
<li><a href="https://deezer.com/en/artist/6459">Deicide</a></li>
<li><a href="https://deezer.com/en/artist/62235">deluge</a></li>
<li><a href="https://deezer.com/en/artist/4033732">Deserted Fear</a></li>
<li><a href="https://deezer.com/en/artist/65411">Dew-Scented</a></li>
<li><a href="https://deezer.com/en/artist/1530">Don Davis</a></li>
<li><a href="https://deezer.com/en/artist/1202336">Dotan</a></li>
<li><a href="https://deezer.com/en/artist/5579">Eisbrecher</a></li>
<li><a href="https://deezer.com/en/artist/572019">eivør</a></li>
<li><a href="https://deezer.com/en/artist/1023">Elliott Smith</a></li>
<li><a href="https://deezer.com/en/artist/470547">Estas Tonne</a></li>
<li><a href="https://deezer.com/en/artist/1234">Explosions in the Sky</a></li>
<li><a href="https://deezer.com/en/artist/209988">Fen</a></li>
<li><a href="https://deezer.com/en/artist/158710">Five Finger Death Punch</a></li>
<li><a href="https://deezer.com/en/artist/390273">Goatwhore</a></li>
<li><a href="https://deezer.com/en/artist/16337">God Is an Astronaut</a></li>
<li><a href="https://deezer.com/en/artist/2993">Gojira</a></li>
<li><a href="https://deezer.com/en/artist/3954791">Hacktivist</a></li>
<li><a href="https://deezer.com/en/artist/60267">Hammock</a></li>
<li><a href="https://deezer.com/en/artist/6021">Hatebreed</a></li>
<li><a href="https://deezer.com/en/artist/4072256">Heretoir</a></li>
<li><a href="https://deezer.com/en/artist/9526126">Holy Fawn</a></li>
<li><a href="https://deezer.com/en/artist/11942503">I Spell It Nature</a></li>
<li><a href="https://deezer.com/en/artist/466684">If These Trees Could Talk</a></li>
<li><a href="https://deezer.com/en/artist/2183">Ill Niño</a></li>
<li><a href="https://deezer.com/en/artist/120">In Flames</a></li>
<li><a href="https://deezer.com/en/artist/931">Iron Maiden</a></li>
<li><a href="https://deezer.com/en/artist/496">Joe Satriani</a></li>
<li><a href="https://deezer.com/en/artist/11054410">Karg</a></li>
<li><a href="https://deezer.com/en/artist/68422">Klone</a></li>
<li><a href="https://deezer.com/en/artist/418421">Kylesa</a></li>
<li><a href="https://deezer.com/en/artist/55541">L&#x27;esprit Du Clan</a></li>
<li><a href="https://deezer.com/en/artist/2216">Lamb of God</a></li>
<li><a href="https://deezer.com/en/artist/15946">Legion of the Damned</a></li>
<li><a href="https://deezer.com/en/artist/93">Limp Bizkit</a></li>
<li><a href="https://deezer.com/en/artist/92">Linkin Park</a></li>
<li><a href="https://deezer.com/en/artist/2221">Manau</a></li>
<li><a href="https://deezer.com/en/artist/6248490">Manu Armata</a></li>
<li><a href="https://deezer.com/en/artist/9267">Mastodon</a></li>
<li><a href="https://deezer.com/en/artist/1207">Mogwai</a></li>
<li><a href="https://deezer.com/en/artist/392142">Monuments</a></li>
<li><a href="https://deezer.com/en/artist/1697739">Myrkur</a></li>
<li><a href="https://deezer.com/en/artist/5110">Napalm Death</a></li>
<li><a href="https://deezer.com/en/artist/5623">Nasum</a></li>
<li><a href="https://deezer.com/en/artist/415">Nirvana</a></li>
<li><a href="https://deezer.com/en/artist/2814">Opeth</a></li>
<li><a href="https://deezer.com/en/artist/3078">Orphaned Land</a></li>
<li><a href="https://deezer.com/en/artist/89">Papa Roach</a></li>
<li><a href="https://deezer.com/en/artist/4069">Porcupine Tree</a></li>
<li><a href="https://deezer.com/en/artist/1177">Queens of the Stone Age</a></li>
<li><a href="https://deezer.com/en/artist/67835">Ramin Djawadi</a></li>
<li><a href="https://deezer.com/en/artist/464">Rammstein</a></li>
<li><a href="https://deezer.com/en/artist/4366510">Regarde Les Hommes Tomber</a></li>
<li><a href="https://deezer.com/en/artist/5602">Rotting Christ</a></li>
<li><a href="https://deezer.com/en/artist/13606">Russian Circles</a></li>
<li><a href="https://deezer.com/en/artist/4805">Satyricon</a></li>
<li><a href="https://deezer.com/en/artist/16998">Serj Tankian</a></li>
<li><a href="https://deezer.com/en/artist/9315">Skillet</a></li>
<li><a href="https://deezer.com/en/artist/3048">Slayer</a></li>
<li><a href="https://deezer.com/en/artist/582067">sleepmakeswaves</a></li>
<li><a href="https://deezer.com/en/artist/76444">Smash hit combo</a></li>
<li><a href="https://deezer.com/en/artist/1786">Soilwork</a></li>
<li><a href="https://deezer.com/en/artist/3701">Stone Sour</a></li>
<li><a href="https://deezer.com/en/artist/458">System of a Down</a></li>
<li><a href="https://deezer.com/en/artist/389874">TesseracT</a></li>
<li><a href="https://deezer.com/en/artist/150632">Texas In July</a></li>
<li><a href="https://deezer.com/en/artist/1080422">The Anchor</a></li>
<li><a href="https://deezer.com/en/artist/5299303">The Butcher Sisters</a></li>
<li><a href="https://deezer.com/en/artist/4050205">The Weeknd</a></li>
<li><a href="https://deezer.com/en/artist/483950">Tides From Nebula</a></li>
<li><a href="https://deezer.com/en/artist/473676">Toundra</a></li>
<li><a href="https://deezer.com/en/artist/1245">Trivium</a></li>
<li><a href="https://deezer.com/en/artist/338095">Varg</a></li>
<li><a href="https://deezer.com/en/artist/13953">Volbeat</a></li>
<li><a href="https://deezer.com/en/artist/673">Walls of Jericho</a></li>
<li><a href="https://deezer.com/en/artist/1690105">Wardruna</a></li>
<li><a href="https://deezer.com/en/artist/5589866">We Lost The Sea</a></li>
<li><a href="https://deezer.com/en/artist/403781">While she sleeps</a></li>
<li><a href="https://deezer.com/en/artist/92333242">Yasumu</a></li>
</ul>
<h2>Mes compositeurs préférés</h2>
<ul>
<li><a href="https://deezer.com/en/artist/1935">Hans Zimmer</a></li>
<li><a href="https://deezer.com/en/artist/556">Howard Shore</a></li>
<li><a href="https://deezer.com/en/artist/791">Alan Silvestri</a></li>
<li><a href="https://deezer.com/en/artist/4331">Ludovico Einaudi</a></li>
<li><a href="https://deezer.com/fr/artist/4553724">Ludwig Goransson</a></li>
<li><a href="https://deezer.com/fr/artist/67835">Ramin Djawadi</a></li>
</ul>
<h2>Mes rappeurs Préférés</h2>
<ul>
<li><a href="https://deezer.com/en/artist/104154">Scylla</a></li>
<li><a href="https://deezer.com/fr/artist/5438206">Davodka</a></li>
<li><a href="https://deezer.com/en/artist/12168">Keny Arkana</a></li>
<li><a href="https://deezer.com/en/artist/5175734">Vald</a></li>
<li><a href="https://deezer.com/en/artist/4077848">Vin&#x27;s</a></li>
<li><a href="https://deezer.com/en/artist/17160">Rockin&#x27; Squat</a></li>
<li><a href="https://deezer.com/en/artist/6568">Lino</a></li>
<li><a href="https://deezer.com/en/artist/10452069">Kalash Criminel</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modifier le fuseau horraire d'un serveur Linux]]></title>
            <link>https://johackim.com/modifier-le-fuseau-horraire-dun-serveur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/modifier-le-fuseau-horraire-dun-serveur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/modifier-le-fuseau-horraire-dun-serveur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/modifier-le-fuseau-horraire-dun-serveur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour modifier le fuseau horaire d&#x27;un serveur <a href="/linux" title="Linux">Linux</a> (ex: UTC+2), il suffit d&#x27;exécuter la commande suivante :</p>

<pre><code class="language-bash">timedatectl set-timezone Europe/Paris
</code></pre>
<p>Si vous souhaitez connaitre les noms des fuseaux horaires :</p>
<pre><code class="language-bash">timedatectl list-timezones
</code></pre>
<p>PS : Si la commande <code>timedatectl</code> ou que la liste des fuseaux horaires n&#x27;existe pas sur votre système Linux, installez les packages <code>systemd</code> et <code>tzdata</code> (<code>apt install -y systemd tzdata</code>).</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installer une version modifié d'un package AUR sur Arch Linux]]></title>
            <link>https://johackim.com/installer-une-version-modifie-dun-package-aur-sur-arch-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-une-version-modifie-dun-package-aur-sur-arch-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-une-version-modifie-dun-package-aur-sur-arch-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-une-version-modifie-dun-package-aur-sur-arch-linux.jpg"/>
            <content:encoded><![CDATA[<p>Sur Arch Linux, Il m&#x27;arrive parfois de vouloir installer un package (ex: <code>mailspring</code>) avec une version très récente et qui n&#x27;est pas encore packagé dans les dépôts AUR.</p>
<p>Voici la procédure que j&#x27;utilise pour télécharger, modifier et installer un package AUR afin d&#x27;avoir la dernière version de mon logiciel.</p>
<h2>Télécharger le package AUR</h2>
<p>Téléchargez le package AUR avec une commande <code>yay</code> :</p>
<pre><code class="language-bash">yay -G mailspring
</code></pre>
<p>Récupérez la valeur sha256 du package en le téléchargeant manuellement :</p>
<pre><code class="language-bash">wget https://github.com/Foundry376/Mailspring/releases/download/1.9.2/mailspring-1.9.2-amd64.deb
sha256sum mailspring-1.9.2-amd64.deb
# a3bc365c77791673d8b7d8fc2081b2e8e80ab5d78d6ffa99f848971849f43544
</code></pre>
<h2>Modifier le package</h2>
<p>Je renseigne cette valeur dans le fichier <code>PKGBUILD</code> :</p>
<pre><code class="language-diff">index 66c3d17..3fbe5a4 100755
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -5,7 +5,7 @@
 # Contributor: ahrs

 pkgname=mailspring
-pkgver=1.9.1
+pkgver=1.9.2
 pkgrel=1
 pkgdesc=&quot;A beautiful, fast and maintained fork of Nylas Mail by one of the original authors.&quot;
 arch=(&#x27;x86_64&#x27;)
@@ -16,7 +16,7 @@ options=(&#x27;!strip&#x27;)
 source=()

 source_x86_64=(&quot;https://github.com/Foundry376/Mailspring/releases/download/${pkgver}/mailspring-${pkgver}-amd64.deb&quot;)
-sha256sums_x86_64=(&#x27;99fa700d84691542c3f5387cb48e72a9be516166491daadb598a5f292dd0ea61&#x27;)
+sha256sums_x86_64=(&#x27;a3bc365c77791673d8b7d8fc2081b2e8e80ab5d78d6ffa99f848971849f43544&#x27;)

 depends=(&quot;libxss&quot; &quot;libtool&quot; &quot;c-ares&quot; &quot;ctemplate&quot; &quot;tidy&quot; &quot;libxkbfile&quot; &quot;libsecret&quot; &quot;gtk3&quot; &quot;nss&quot; &quot;libglvnd&quot;)
</code></pre>
<h2>Installer le nouveau package</h2>
<p>Puis installez le package modifié avec une commande suivante <code>makepkg</code> :</p>
<pre><code class="language-bash">makepkg -si
</code></pre>
<h2>Partager les modifications</h2>
<p>Pour partager votre modification aux autres, commencez par créer une clé ssh :</p>
<pre><code class="language-bash">ssh-keygen -f ~/.ssh/aur
</code></pre>
<p>Ensuite, ajoutez les lignes suivantes dans votre fichier <code>~/.ssh/config</code> :</p>
<pre><code class="language-txt">Host aur.archlinux.org
  IdentityFile ~/.ssh/aur
  User aur
</code></pre>
<p>Puis envoyez vos modifications :</p>
<pre><code class="language-bash">git remote set-url origin ssh://aur@aur.archlinux.org/&lt;pkgname&gt;.git
git push origin master
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a>

</li>
<li>
<a href="/yay" title="Yay" class="not-found">Yay</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Télécharger des torrents depuis un navigateur web]]></title>
            <link>https://johackim.com/webtorrent?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/webtorrent</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 16 Sep 2021 22:10:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/webtorrent.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/webtorrent.jpg"/>
            <content:encoded><![CDATA[<p>Pour télécharger un torrent depuis un navigateur web, il existe un outil qui s&#x27;appelle <code>webtorrent</code>.</p>
<p>Depuis un navigateur (Firefox, chrome, etc...), <code>webtorrent</code> peut uniquement télécharger des torrents qui sont diffusés par un client torrent compatible avec WebRTC (ex: <code>webtorrent-hybrid</code>).</p>
<p><code>webtorrent-hybrid</code> permet de télécharger et partager des torrents depuis WebRTC contrairement à <code>webtorrent</code> qui peut télécharger uniquement des torrents depuis des peers traditionnels.</p>
<h2>Installer webtorrent</h2>
<pre><code class="language-bash">npm install -g webtorrent-hybrid
</code></pre>
<h2>Télécharger un torrent (ou un magnet)</h2>
<pre><code class="language-bash">webtorrent-hybrid download &quot;magnet:?xt=urn:btih:08ada5a7a6183aae1e09d831df6748d566095a10&quot;
</code></pre>
<h2>Seeder un torrent</h2>
<pre><code class="language-bash">webtorrent-hybrid seed [--torrent-port &lt;port&gt;] &lt;folder|file&gt;
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre L'Art de la séduction de Robert Greene]]></title>
            <link>https://johackim.com/lart-de-la-seduction-robert-greene?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/lart-de-la-seduction-robert-greene</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 29 Aug 2021 19:14:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/lart-de-la-seduction-robert-greene.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/lart-de-la-seduction-robert-greene.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Les 9 profils de séducteurs</h2>
<p>L’analyse de ces 9 profils vous fera prendre conscience de vos attraits, autrement dit de vos atouts de base dans la séduction.</p>
<ol>
<li>La sirène</li>
<li>Le libertin</li>
<li>L&#x27;amant idéal</li>
<li>Le Dandy</li>
<li>L&#x27;Eternel enfant</li>
<li>La coquette</li>
<li>Le charmeur</li>
<li>La figure charismatique</li>
<li>La star</li>
</ol>
<h2>Découvrez ce qu&#x27;elle désire</h2>
<p>Il faut se polariser intensément sur l’autre personne, découvrir ce dont elle manque et ce qui la déçoit.</p>
<p>À qui a tout reçu, il manque le danger, la rébellion. À qui a connu le danger, il manque un sentiment de sécurité. À qui n’a obtenu que des satisfactions prosaïques, il manque quelque chose de plus noble, de plus créatif. <mark><b>Notre idéal est l’image de ce qui nous manque</b></mark>.</p>
<p>Rares sont les êtres capables de résister à la tentation de suivre celui ou celle qui semble s’adapter à leurs désirs, donner vie à leurs fantasmes.</p>
<h2>Être autonome</h2>
<p>Dans le domaine de la séduction, la confiance en soi est vitale. Un manque de sûreté en soi éloigne, l’assurance et l’autonomie attirent.</p>
<p><strong>Moins vous semblerez avoir besoin des autres, plus ils rechercheront votre compagnie</strong>.</p>
<p>Une fois que vous aurez assimilé l’importance de ce point dans toute relation amoureuse, vous n’aurez aucun mal à faire taire votre insécurité affective.</p>
<h2>Concentrez votre attention sur elle</h2>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Benjamin Disraeli</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« Parlez à quelqu’un de lui-même et il vous écoutera des heures »</p>
                    </div>
                </blockquote>
<p>Soyez empathique, concentrez tout votre attention sur elle, comprenez son humeur et adaptez-vous à elle.</p>
<p>Sachez écouter et observer. Faites parler la personne qui vous intéresse, amenez-la à se dévoiler.</p>
<p>Plus vous en saurez sur elle, mieux vous saurez monopoliser son attention, jouer sur ses désirs et besoins particuliers, adapter vos flatteries à ses insécurités.</p>
<p>Faites d’elle la vedette de la soirée et elle ne pourra plus se passer de vous : vous l’aurez piégée dans une dépendance.</p>
<h2>Soyez agréable</h2>
<p>La gaieté et la drôlerie charment bien plus que le sérieux et la critique.</p>
<p>Distrayez-la de ses problèmes en vous montrant agréable à vivre.</p>
<h2>Le processus de séduction</h2>
<h3>Choisir sa victime</h3>
<p>Comment sélectionner ses cibles ? À la façon dont elles réagissent à vos approches.</p>
<p>La victime adéquate est celle chez qui vous pouvez combler un vide, à qui vous apparaissez comme quelqu’un de neuf et d’intéressant.</p>
<p>Un être comblé est presque impossible à séduire.</p>
<h3>Inspirer confiance</h3>
<p>Si vous abattez toutes vos cartes d’entrée de jeu, vous risquez de susciter une résistance durable.</p>
<p><strong>La première fois, ayez l’air de tout sauf d’un séducteur.</strong></p>
<p>Bien des femmes désirent ce qui leur échappe, et détestent ce qu’on leur offre avec instance.</p>
<p>Si vous lui donnez d’emblée l’impression qu’elle a elle-même fait le premier pas, vous aurez gagné la partie.</p>
<p>Approchez vous petit à petit, gardez des entretiens amicaux afin d&#x27;obtenir des informations sur elle.</p>
<h3>Soyez indéfinissable</h3>
<p>Pour capter l’attention d’un public, pour le séduire afin qu’il ne cesse de penser à vous, il faut lui adresser des signaux contradictoires.</p>
<h3>Susciter la jalousie</h3>
<p>Que vos admirateurs soient des amis ou des soupirants, peu importe : leur présence créera <a href="/l&#x27;effet-harem" title="L&#x27;effet harem" class="not-found">L&#x27;effet harem</a>.</p>

<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Stendhal</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Si vous vous voulez une femme, courtisez sa sœur.</p>
                    </div>
                </blockquote>
<p>Puisque le désir des autres accroît votre valeur, faites-vous désirer : gardez vos distances, soyez inaccessible. Tout ce qui est rare est cher.</p>
<h3>Créer des besoins… sans les satisfaire</h3>
<p>Quelqu’un de parfaitement satisfait est impossible à séduire.</p>
<p>Faites naître chez vos victimes tensions, mécontentements et frustrations.</p>
<p>Leur fragilité vous offrira la fêlure par laquelle vous glisser en vous présentant comme la solution à leurs problèmes.</p>
<h2>Citations</h2>
<blockquote>
<p>Les conquêtes amoureuses sont rarement dues à de grossiers stratagèmes : ceux-ci attirent à tout coup les soupçons. Elles tiennent au caractère du séducteur lui-même, à sa capacité de fasciner, d’attirer et de susciter chez l’autre des émotions incontrôlables.</p>
</blockquote>
<blockquote>
<p>Une donnée essentielle de l’amour et du désir : si je te suis, tu me fuis, si je te fuis, tu me suis.</p>
</blockquote>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Récupérer le flux RSS d'une chaine YouTube]]></title>
            <link>https://johackim.com/recuperer-le-flux-rss-dune-chaine-youtube?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/recuperer-le-flux-rss-dune-chaine-youtube</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 29 Aug 2021 19:14:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/recuperer-le-flux-rss-dune-chaine-youtube.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/recuperer-le-flux-rss-dune-chaine-youtube.jpg"/>
            <content:encoded><![CDATA[<p>Pour récupérer le flux RSS d&#x27;une chaine YouTube, prennez l&#x27;URL de votre chaine YouTube et convertissez le comme ceci :</p>
<pre><code class="language-bash"># Exemple avec la chaine YouTube HugoDécrypte
https://youtube.com/channel/UCAcAnMF0OrCtUep3Y4M-ZPw (Lien Original)
https://youtube.com/feeds/videos.xml?channel_id=UCAcAnMF0OrCtUep3Y4M-ZPw (Flux RSS)

# Exemple avec la chaine de Sofyan
https://youtube.com/user/sofyanfaitducinema (Lien Original)
https://youtube.com/feeds/videos.xml?user=sofyanfaitducinema (Flux RSS)
</code></pre>
<p>Dans le premier exemple, il suffit de reprendre l&#x27;identifiant de la chaine (<code>UCAcAnMF0OrCtUep3Y4M</code>) et de le placer à la fin de cette URL : <code>https://youtube.com/feeds/videos.xml?channel_id=</code>.</p>
<p>Dans le second exemple, il faut prendre le nom d&#x27;utilisateur de la chaine <code>sofyanfaitducinema</code> et le placer à la findde cette URL : <code>https://youtube.com/feeds/videos.xml?user=</code>.</p>
<p>Voilà ! 😀</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/rss" title="RSS" class="not-found">RSS</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais des coûts irrécupérables]]></title>
            <link>https://johackim.com/biais-des-couts-irrecuperables?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-des-couts-irrecuperables</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 22 Aug 2021 20:37:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-des-couts-irrecuperables.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-des-couts-irrecuperables.jpg"/>
            <content:encoded><![CDATA[<p>Les biais des coûts irrécupérables (Sunk Cost Effect en anglais) est la tendance irrationnelle d&#x27;agir selon des décisions prises antérieurement (temps passé, efforts consentis, argent dépensé etc...).</p>
<p>Exemple : dans le cadre d&#x27;un projet où l&#x27;on se pose la question de le poursuivre ou de l&#x27;arrêter.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/path-dependence" title="Path dependence" class="not-found">Path dependence</a>

</li>
<li>
<a href="/decisions" title="Décisions" class="not-found">Décisions</a>

</li>
<li><a href="https://youtu.be/PsLaI4jDftA?t=179">Big Think - 3 game theory tactics, explained</a></li>
<li><a href="https://braink.it/principles/sunk-cost-fallacy">https://braink.it/principles/sunk-cost-fallacy</a></li>
<li><a href="https://kitted.app/snare/sunk-cost-fallacy/0017">https://kitted.app/snare/sunk-cost-fallacy/0017</a></li>
<li><a href="https://thedecisionlab.com/biases/the-sunk-cost-fallacy">https://thedecisionlab.com/biases/the-sunk-cost-fallacy</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-gditijy-dkhjslutd-w/">https://cm.stackedmarketer.com/t/j-e-gditijy-dkhjslutd-w/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Démarrer macOS sur Linux]]></title>
            <link>https://johackim.com/demarrer-macos-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/demarrer-macos-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 22 Aug 2021 20:37:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/demarrer-macos-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/demarrer-macos-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour démarrer macOS sur <a href="/linux" title="Linux">Linux</a>, il existe 2 solutions :</p>

<h2>Avec mac-on-linux-with-qemu</h2>
<p>Il existe <a href="https://github.com/arindas/mac-on-linux-with-qemu">ce dépôt Github</a> qui permet de démarrer macOS en une seule ligne de commande à condition d&#x27;avoir les prérequis suivants :</p>
<pre><code class="language-bash"># Arch Linux
sudo pacman -Syy qemu python-click qemu-ui-gtk qemu-ui-sdl
yay -S --noconfirm dmg2img

# Debian, Ubuntu
sudo apt install -y qemu-kvm dmg2img pulseaudio
sudo pip install -U click
sudo ln -s /usr/bin/qemu-system-x86_64 /usr/bin/qemu
</code></pre>
<p>Une fois installé exécuter la commande <code>run.sh</code> :</p>
<pre><code class="language-bash">git clone https://github.com/arindas/mac-on-linux-with-qemu
cd mac-on-linux-with-qemu
./run.sh
</code></pre>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Choose Disk Utility and then select the largest Apple Inc. VirtIO Block Media disk.Click the Erase button to format the disk to APFS, and give it any recognizable name you like.</p>
                    </div>
                </blockquote>
<p><code>CTRL</code> + <code>ALT</code> + <code>G</code> pour sortir de la VM.</p>
<h2>Avec QuickEmu</h2>
<p>Vous pouvez aussi utiliser <a href="/quickemu" title="Quickemu">Quickemu</a> :</p>

<pre><code class="language-bash">yay -S --noconfirm quickemu qemu qemu-ui-gtk qemu-ui-sdl
quickget macos catalina
quickemu --vm macos-catalina.conf
</code></pre>
<p>Une fois macOS démarré, supprimez la partition <code>Apple Inc. VirtIO Block Media</code> puis lancez l&#x27;installation.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://korben.info/vm-macos-linux.html">https://korben.info/vm-macos-linux.html</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Vérifier une information]]></title>
            <link>https://johackim.com/comment-verifier-une-source-information?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-verifier-une-source-information</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 15 Aug 2021 19:41:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-verifier-une-source-information.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-verifier-une-source-information.jpg"/>
            <content:encoded><![CDATA[<p>Voici les étapes que j&#x27;utilise pour savoir si une information est vrai ou faux.</p>
<h2>1. Vérifier d&#x27;où vient l&#x27;info (Où ?)</h2>
<h3>Croisez l&#x27;information</h3>
<p>Aller chercher sur d&#x27;autres sources d&#x27;informations pour vérifier s’il s&#x27;agit d&#x27;une donnée partagée par d&#x27;autres personnes du milieu concerné.</p>
<p>Regardez l&#x27;avis d&#x27;autres personnes sur YouTube, Twitter, les podcasts, les livres, etc...</p>
<h3>Trouvez la source d&#x27;origine</h3>
<p>S’il s&#x27;agit d&#x27;une image, il est possible de faire de la recherche d&#x27;image inversée via plusieurs moteurs de recherche comme <a href="https://images.google.fr/">Google</a>, <a href="https://yandex.com/images/">Yandex</a> ou <a href="https://tineye.com/">Tineye</a>.</p>
<h2>2. Vérifier l&#x27;auteur de la source (Qui ?)</h2>
<blockquote>
<p>Toujours regarder l&#x27;arbre qui vous a donné le fruit. <a href="https://youtu.be/zRXYr1EmHek?t=282">Michael Ellsberg</a></p>
</blockquote>
<p>Vérifier l&#x27;auteur, sa réputation, s’il s&#x27;agit d&#x27;une personnalité reconnue pour ses compétences et son expertise sur le sujet traité.</p>
<p>Vérifiez son parcours.</p>
<p>Vérifiez les qualifications de la personne en croisant les sources (Linkedin, Wikipédia, institutions éducatives).</p>
<p>Est-il affilié à une organisation en particulier ?</p>
<h2>3. Vérifier l&#x27;objectif de l&#x27;auteur (Pourquoi ?)</h2>
<p>L&#x27;auteur est-il objectif ? Quel est son objectif ?</p>
<p>Dans quel but l&#x27;information a-t-elle été créée ?</p>
<p>Vérifier si il y a des <a href="/conflits-d&#x27;interets" title="Conflits d&#x27;intérêts" class="not-found">Conflits d&#x27;intérêts</a> (ex : rémunŕation par de la publicité).</p>

<h2>4. Vérifier si l&#x27;information est exacte (Comment ?)</h2>
<p>Vérifiez si l&#x27;information est un fait ou une opinion.</p>
<p>Vérifiez si les références/sources existent et si elles sont récentes et de qualité.</p>
<h2>5. Vérifier la date de l&#x27;information (Quand ?)</h2>
<p>Vérifiez la date de la publication.</p>
<h2>6. Faites attention aux vendeurs de pelles</h2>
<blockquote>
<p>Dans une ruée vers l&#x27;or, ne cherchez pas l&#x27;or, vendez des pelles !</p>
</blockquote>
<p>La personne a-t-elle du succès à cause de ce qu&#x27;elle prêche ou de ce qu&#x27;elle vend ?</p>
<p>Faire attention aux personnes qui réussissent uniquement en prônant des choses qui ne fonctionne pas, mais qui se vendent bien.</p>
<p>Par exemple :</p>
<ul>
<li>Le dropshipping ; il y a plus de gens qui réussissent à vendre des formations sur le dropshipping qu&#x27;il n&#x27;y a de personnes qui réussissent dans le dropshipping.</li>
<li>Les NFTs ; même constat</li>
</ul>
<p>Demandez-vous s&#x27;ils font bien ce qu&#x27;ils prêchent. S&#x27;il s&#x27;agit bien de méthodes qu&#x27;ils ont utilisées pour en arriver là.</p>
<h2>7. Vérifier la preuve sociale</h2>
<p>Vérifier les commentaires, les avis, les notes, les certifications, les prix, tout ce qui peut prouver l&#x27;autorité de la personne derrière la source d&#x27;information.</p>
<p>Par exemple, lorsque je découvre une nouvelle personne sur internet et qui a un compte Twitter je regarde si d&#x27;autres personnes du même secteur que je connais suis cette personne ou non, ça ajoute de la crédibilité à cette personne.</p>
<h2>8. Privilégiez les faits aux croyances et opinions</h2>
<p>Contrairement aux faits, les croyances et les opinions sont subjectifs. Privilégiez toujours les faits.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment supprimer un watermark ?]]></title>
            <link>https://johackim.com/watermark?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/watermark</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 15 Aug 2021 19:41:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/watermark.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/watermark.jpg"/>
            <content:encoded><![CDATA[<p>Certain PDF contient un watermark, quand il est répété un mode texte sur toutes les pages du PDF, il est possible de le supprimer depuis un ordinateur sous <a href="/linux" title="Linux">Linux</a>.</p>

<p>J&#x27;ai créé <a href="https://github.com/johackim/dotfiles/blob/master/.local/bin/unwatermark.sh">un petit script maison</a> qui utilise les librairies <code>qpdf</code> et <code>pdftk</code>.</p>
<pre><code class="language-bash">!/bin/bash

if [[ -z &quot;$1&quot; || -z &quot;$2&quot; || ! -f &quot;$1&quot; ]]; then
    echo &quot;usage: unwatermark [file] [text to remove]&quot;
    exit 1
fi

FILE=$1
TEXT_TO_REMOVE=$2
OUTPUT_PATH=&quot;fixed.pdf&quot;

qpdf --stream-data=uncompress &quot;$FILE&quot; uncompressed.pdf
sed -e &quot;s/$TEXT_TO_REMOVE/ /&quot; uncompressed.pdf &gt; unwatermarked.pdf
pdftk unwatermarked.pdf output &quot;$OUTPUT_PATH&quot; compress
cp -f &quot;$OUTPUT_PATH&quot; &quot;$FILE&quot;
rm -f unwatermarked.pdf uncompressed.pdf fixed.pdf
</code></pre>
<p>Exemple, pour un fichier qui se nomme <code>example.pdf</code> :</p>
<pre><code class="language-bash">unwatermark.sh &lt;file.pdf&gt; &lt;texte-a-supprimer&gt;
</code></pre>
<p>Voilà, le watermark est supprimé ! 😀</p>
<p>PS : <a href="https://online-video-cutter.com/fr/remove-logo">Cliquez-ici si vous souhaitez supprimer le watermark d&#x27;une vidéo</a>.</p>
<p>PS2: Il est possible d&#x27;utiliser <a href="https://code-industry.net/masterpdfeditor/">Master PDF Editor</a> et d&#x27;aller dans le menu Document &gt; Watermark -&gt; Delete pour supprimer un watermark ;)</p>
<p>PS3 : Vous pouvez aussi utiliser <a href="https://swifdoo.com/">Swifdoo</a> sur Windows depuis le menu Advanced &gt; Watermark</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://watermarkremover.io/fr/upload">https://watermarkremover.io/fr/upload</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Nettoyer son ordinateur sur Linux avec BleachBit]]></title>
            <link>https://johackim.com/nettoyer-son-ordinateur-sur-linux-avec-bleachbit?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/nettoyer-son-ordinateur-sur-linux-avec-bleachbit</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 08 Aug 2021 19:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/nettoyer-son-ordinateur-sur-linux-avec-bleachbit.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/nettoyer-son-ordinateur-sur-linux-avec-bleachbit.jpg"/>
            <content:encoded><![CDATA[<p>Pour nettoyer mon ordinateur sous Linux, j&#x27;utilise <a href="https://bleachbit.org/">BleachBit</a>.</p>
<h2>Comment installer Bleachbit ?</h2>
<p>Pour installer Bleachbit sur Arch Linux, exécutez la commande ci-dessous :</p>
<pre><code class="language-bash">sudo pacman -S bleachbit
</code></pre>
<p>Pour l&#x27;installer sur Debian ou Ubuntu :</p>
<pre><code class="language-bash">sudo apt install -y bleachbit
</code></pre>
<h2>Comment utiliser Bleachbit ?</h2>
<p>Une fois installé, lancez <code>bleachbit</code>.</p>
<p>Avant de démarrer un nettoyage, pensez à décocher le paramètre &quot;Free Disk Space&quot; qui prend beaucoup trop de temps à s&#x27;exécuter.</p>
<p>Une fois les paramètres définis, vous pouvez soit démarrer le nettoyage via l&#x27;interface graphique, soit via cette ligne de commande :</p>
<pre><code class="language-bash">sudo -E bleachbit --preset --clean
</code></pre>
<h2>Supprimer l&#x27;espace libre de votre disque dur</h2>
<p>Si vous souhaitez supprimer l&#x27;espace libre de votre disque dur afin d&#x27;être sûr que vos données effacées soit irrécupérables, exécutez la commande suivante :</p>
<pre><code class="language-bash">sudo -E bleachbit -w /
</code></pre>
<h2>Alternatives à BleachBit</h2>
<ul>
<li><a href="https://pcmanager.microsoft.com/en-us">Microsoft PC Manager</a> (nouveau)</li>
<li><a href="https://ccleaner.com/">CCleaner</a> (uniquement sur Windows ou MacOS)</li>
<li><a href="https://github.com/qarmin/czkawka">Czkawka</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[License]]></title>
            <link>https://johackim.com/generer-un-fichier-de-licence-license.txt-automatiquement?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/generer-un-fichier-de-licence-license.txt-automatiquement</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 08 Aug 2021 19:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/generer-un-fichier-de-licence-license.txt-automatiquement.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/generer-un-fichier-de-licence-license.txt-automatiquement.jpg"/>
            <content:encoded><![CDATA[<h2>Générer un fichier de licence LICENSE.txt automatiquement</h2>
<p>Pour générer un fichier de licence automatiquement, il existe l&#x27;outil <a href="https://github.com/nishanths/license">license</a>.</p>
<p>Pour l&#x27;installer sur Linux :</p>
<pre><code class="language-bash">go install github.com/nishanths/license/v5@latest

# Ou

git clone https://github.com/nishanths/license
go build
mv license /usr/local/bin/license

# Ou

yay -S --noconfirm nishanths-license-git
</code></pre>
<p>Une fois installé, pour créer un fichier <code>LICENSE.txt</code>, exécutez la commande suivante avec le nom de votre licence en paramètre :</p>
<pre><code class="language-bash">license gpl-3.0 &gt; LICENSE.txt
</code></pre>
<p>Pour connaître la liste des licences disponibles :</p>
<pre><code class="language-bash">license -list
</code></pre>
<h2>Liste des licenses</h2>
<ul>
<li>GNU General Public License v3.0</li>
<li>Apache License 2.0</li>
<li>BSD 3-Clause &quot;New&quot; or &quot;Revised&quot; License</li>
<li>CC-BY 4.0 International Public License</li>
<li>ISC License</li>
<li>MIT License</li>
<li>WTFPL (Do What The Fuck You Want To Public License)</li>
<li>BUSL-1.1 (free to use as long as it is on local. you need to get a license in production)</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://choosealicense.com/">https://choosealicense.com/</a></li>
<li><a href="https://libraries.io/licenses">https://libraries.io/licenses</a></li>
<li><a href="https://spdx.org/licenses/">https://spdx.org/licenses/</a></li>
<li><a href="https://korben.info/wiki/les_differentes_licences">https://korben.info/wiki/les_differentes_licences</a></li>
<li><a href="https://gnu.org/philosophy/free-sw.fr.html">https://gnu.org/philosophy/free-sw.fr.html</a></li>
<li><a href="https://github.com/marketplace/licensebat">https://github.com/marketplace/licensebat</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Slow burns vs. heavy lifts]]></title>
            <link>https://johackim.com/slow-burns?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/slow-burns</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 08 Aug 2021 19:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/slow-burns.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/slow-burns.jpg"/>
            <content:encoded><![CDATA[<p>Créer une formation ou rédiger un livre à partir de zéro est comme porter une charge très lourde d&#x27;un coup.</p>
<p>Il est plus facile de rassembler des idées au fil du temps, puis de les relier entre elles, que de partir de zéro.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/OP3dA2GcAh8?t=304">Ali Abdaal - The Second Brain, A Life-Changing Productivity System</a></li>
<li><a href="https://youtu.be/HXDBY129N0E">Eliott Meunier - Le hack de productivité ultime : procrastiner 2h/jour</a></li>
<li>
<a href="/tiago-forte-building-a-second-brain" title="Tiago Forte - Building A Second Brain" class="not-found">Tiago Forte - Building A Second Brain</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Limiter la bande passante d'une interface réseau sous Linux]]></title>
            <link>https://johackim.com/limiter-la-bande-passante-dune-interface-reseau-sous-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/limiter-la-bande-passante-dune-interface-reseau-sous-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Aug 2021 21:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/limiter-la-bande-passante-dune-interface-reseau-sous-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/limiter-la-bande-passante-dune-interface-reseau-sous-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour limiter la bande passante d&#x27;une interface réseau sous <a href="/linux" title="Linux">Linux</a> il existe <a href="https://github.com/magnific0/wondershaper">wondershaper</a>.</p>

<h2>Installation</h2>
<p>Pour l&#x27;installer sur Debian ou Ubuntu :</p>
<pre><code class="language-bash">apt install -y wondershaper
</code></pre>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm wondershaper-git
</code></pre>
<h2>Limiter la bande passante</h2>
<p>Pour limiter le téléchargement de l&#x27;interface enp1s0 à 512kbps :</p>
<pre><code class="language-bash">sudo wondershaper -a enp1s0 -d 512
</code></pre>
<p>Pour limiter l&#x27;upload à 512kbps :</p>
<pre><code class="language-bash">sudo wondershaper -a enp1s0 -u 512
</code></pre>
<p>Voilà 😀 !</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/reseau" title="Network" class="not-found">Network</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Cryptsetup]]></title>
            <description><![CDATA[Cryptsetup est un outil pour chiffrer une partition d'un disque dur.]]></description>
            <link>https://johackim.com/cryptsetup?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/cryptsetup</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Aug 2021 21:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/cryptsetup.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/cryptsetup.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://doc.ubuntu-fr.org/cryptsetup">Cryptsetup</a> est un outil pour chiffrer une partition d&#x27;un disque dur.</p>
<p>Voici les différentes commandes que j&#x27;utilises :</p>
<h2>Chiffrer une partition</h2>
<pre><code class="language-bash">cryptsetup luksFormat -c aes-xts-plain64 -s 512 /dev/sdX
</code></pre>
<h2>Ouvrir le disque dur</h2>
<p>Pour ouvrir un disque dur :</p>
<pre><code class="language-bash">sudo cryptsetup luksOpen /dev/sdX &lt;volume_name&gt;
sudo mount /dev/mapper/&lt;mapper_name&gt; &lt;mount_folder&gt;
</code></pre>
<p>Exemple :</p>
<pre><code class="language-bash">sudo cryptsetup luksOpen /dev/sdb3 lvm
sudo mount /dev/mapper/arch-home /mnt
</code></pre>
<h2>Fermer le disque dur</h2>
<p>Et pour déconnecter le disque dur correctement :</p>
<pre><code class="language-bash">sudo cryptsetup luksClose &lt;mapper_name&gt;
udisks --detach /dev/sdX
</code></pre>
<h2>Changer le mot de passe</h2>
<p>Pour modifier le mot de passe de son disque dur :</p>
<pre><code class="language-bash">sudo cryptsetup luksChangeKey /dev/sdX
</code></pre>
<h2>Tester le disque dur</h2>
<p>Pour vérifier si le disque dur est bien chiffré avec luks :</p>
<pre><code class="language-bash">sudo cryptsetup isLuks /dev/sdX
</code></pre>
<p>Voilà 😃 !</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bloquer les adresse IPs d'un réseau externe avec Express.js]]></title>
            <link>https://johackim.com/bloquer-les-adresse-ips-dun-reseau-externe-avec-expressjs?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/bloquer-les-adresse-ips-dun-reseau-externe-avec-expressjs</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Aug 2021 21:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/bloquer-les-adresse-ips-dun-reseau-externe-avec-expressjs.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/bloquer-les-adresse-ips-dun-reseau-externe-avec-expressjs.jpg"/>
            <content:encoded><![CDATA[<p>Je dispose d&#x27;un serveur nodejs avec express et j&#x27;ai besoin d&#x27;autoriser l&#x27;accès à une route uniquement aux adresses IP de mon réseau interne.</p>
<p>Pour ça, j&#x27;utilise une librairie : <code>express-ipfilter</code> :</p>
<pre><code class="language-js">// index.js

import express from &#x27;express&#x27;;
import { IpFilter, IpDeniedError } from &#x27;express-ipfilter&#x27;;

const app = express();

const clientIp = (req) =&gt; {
    return req.headers[&#x27;x-forwarded-for&#x27;] ? (req.headers[&#x27;x-forwarded-for&#x27;]).split(&#x27;,&#x27;)[0] : req.socket.remoteAddress;
};

const ips = [&#x27;172.17.0.0/16&#x27;, &#x27;10.10.0.0/16&#x27;, &#x27;127.0.0.1&#x27;, &#x27;::1&#x27;];

app.use(IpFilter(ips, { mode: &#x27;allow&#x27;, detectIp: clientIp }));

app.use((err, req, res, next) =&gt; {
    if (err instanceof IpDeniedError) {
        res.status(401);
        return res.end(&#x27;You shall not pass&#x27;);
    }

    return next();
});

app.get(&#x27;/&#x27;, async (req, res) =&gt; {
    res.end(&#x27;Secure route&#x27;);
});

export default app;
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Impots]]></title>
            <link>https://johackim.com/faire-sa-declaration-dimpot-en-tant-quauto-entrepreneur?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/faire-sa-declaration-dimpot-en-tant-quauto-entrepreneur</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Aug 2021 21:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/faire-sa-declaration-dimpot-en-tant-quauto-entrepreneur.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/faire-sa-declaration-dimpot-en-tant-quauto-entrepreneur.jpg"/>
            <content:encoded><![CDATA[<h2>Remplir sa déclaration d&#x27;impôt</h2>
<p>Pour faire sa déclaration d&#x27;impôt, il faut remplir le <a href="https://impots.gouv.fr/portail/files/formulaires/2042/2021/2042_3451.pdf">Formulaire 2042-C-PRO : Déclaration de revenus complémentaire des professions non salariées</a>.</p>
<p>Si vous êtes en prélèvement libératoire, remplissez la case <strong>5TE</strong>.</p>
<h2>Comment savoir si on a opté pour le prélèvement libératoire ?</h2>
<p>Cette option a été choisie le jour où vous vous êtes inscrit en tant qu&#x27;autoentrepreneur.</p>
<p>Pour savoir si vous avez <strong>opté pour le prélèvement libératoire</strong>, rendez-vous sur le site de l&#x27;URSSAF <a href="https://autoentrepreneur.urssaf.fr/services/espace-personnel/mon-compte/mes-informations-personnelles">à cette adresse</a> et vérifiez la case <strong>Prélèvement libératoire de l&#x27;impôt sur le revenu</strong>.</p>
<h2>Modifier sa déclaration d&#x27;impôt</h2>
<p>Si jamais vous vous êtes trompé pour une déclaration (comme moi 😅), vous pouvez vous rendre sur le service de correction en ligne s&#x27;il est disponible (ex : pour une déclaration des revenus 2020, le service sera disponible mi-août 2021).</p>
<p>Sinon vous pouvez le faire en ligne depuis la messagerie sécurisée de votre espace Particulier, rubrique &quot;<strong>Je signale une erreur sur le calcul de mon impôt</strong>&quot; sur <a href="https://impots.gouv.fr">https://impots.gouv.fr</a> ou par courrier à votre centre des finances publiques.</p>
<h2>La déclaration d&#x27;impôt != un avis d&#x27;imposition</h2>
<p>Une déclaration d&#x27;impôt n&#x27;est pas pareil à un avis d&#x27;imposition.</p>
<p>L&#x27;avis est en quelque sorte le récapitulatif et justificatif de sa déclaration.</p>
<p>Si vous vivez chez vos parents, cochez la case &quot;hébergé gratuitement&quot; ou &quot;occupant à titre gratuit&quot; dans votre déclaration d&#x27;impôts.</p>
<h2>Impôts CFE</h2>
<p>Il existe aussi les impôts CFE (Cotisation foncière des entreprises) à payer une fois par an le 15 décembre sur <a href="https://cfspro.impots.gouv.fr/">https://cfspro.impots.gouv.fr/</a> (dernier paiement -&gt; 170€)</p>
<p>Mes services → Avis CFE → Accès aux avis de CFE → 2022 → Avis d&#x27;imposition → Payer</p>
<p><a href="https://www.economie.gouv.fr/entreprises/cotisation-fonciere-entreprises-cfe">https://www.economie.gouv.fr/entreprises/cotisation-fonciere-entreprises-cfe</a></p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://entreprendre.service-public.fr/vosdroits/F23547</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Si l&#x27;entrepreneur ne dispose d&#x27;aucun local et exerce son activité à domicile (ou chez ses clients), celui-ci est quand même redevable de la CFE. Dans ce cas, le montant de la CFE est déterminé en fonction du chiffre d&#x27;affaires réalisé sur une période de 12 mois (au cours de l&#x27;année N-2).</p>
                    </div>
                </blockquote>
<p>OU, pour payer mensuellement :</p>
<ul>
<li>Se rendre sur <a href="https://cfspro.impots.gouv.fr">https://cfspro.impots.gouv.fr</a> -&gt; Payer -&gt; CFE et autres impots</li>
<li>Renseigner sur numéro de siret/fiscal</li>
<li>Adhésion au prélèvement automatique mensuel</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/eszYjN5ePWo?t=3623">Axel Paris - MICRO-ENTREPRENEUR : GUIDE COMPLET 2023</a></li>
</ul>
<h2>Contacter les impots</h2>
<p>Pour les joindre, rendez-vous sur <a href="https://cfspro.impots.gouv.fr/mire/accueil.do">https://cfspro.impots.gouv.fr/mire/accueil.do</a> puis &quot;Coordonnées du gestionnaire et prise de rendez-vous&quot;. Il y aura l&#x27;adresse email, le téléphone et l&#x27;adresse physique de votre centre d&#x27;impot local.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installer un serveur VPN (très rapidement) avec dsvpn]]></title>
            <link>https://johackim.com/installer-un-serveur-vpn-avec-dsvpn?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-un-serveur-vpn-avec-dsvpn</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Aug 2021 21:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-un-serveur-vpn-avec-dsvpn.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-un-serveur-vpn-avec-dsvpn.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/jedisct1/dsvpn">Dsvpn</a> permet de créer un serveur VPN très simplement.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer dsvpn sur Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm dsvpn
</code></pre>
<p>Si vous êtes sur une autre distribution Linux comme Debian ou Ubuntu :</p>
<pre><code class="language-bash">git clone https://github.com/jedisct1/dsvpn
cd dsvpn
make
sudo cp dsvpn /usr/local/bin/dsvpn
</code></pre>
<p>Et sur raspberry :</p>
<pre><code class="language-bash">env OPTFLAGS=-mfpu=neon make
</code></pre>
<h2>Utilisation</h2>
<p>Pour créer un serveur VPN, voici les deux commandes à lancer :</p>
<pre><code class="language-bash">dd if=/dev/urandom of=vpn.key count=1 bs=32
sudo dsvpn server vpn.key auto &lt;port&gt;
</code></pre>
<p>Pour s&#x27;y connecter depuis un client :</p>
<pre><code class="language-bash">sudo dsvpn client vpn.key &lt;server_ip&gt; &lt;port&gt;
</code></pre>
<p>Voilà ! 😀</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/vpn" title="VPN" class="not-found">VPN</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Se connecter à un serveur IRC avec Weechat]]></title>
            <link>https://johackim.com/se-connecter-a-un-serveur-irc-avec-weechat?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/se-connecter-a-un-serveur-irc-avec-weechat</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 01 Aug 2021 21:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/se-connecter-a-un-serveur-irc-avec-weechat.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/se-connecter-a-un-serveur-irc-avec-weechat.jpg"/>
            <content:encoded><![CDATA[<h2>Installer Weechat</h2>
<pre><code class="language-bash">apt install -yq weechat
</code></pre>
<h2>Démarrez weechat</h2>
<pre><code class="language-bash">weechat
</code></pre>
<h2>Ajoutez un serveur</h2>
<pre><code class="language-bash">/server add debian irc.debian.org
</code></pre>
<h2>Lister les serveurs</h2>
<pre><code class="language-bash">/server list
</code></pre>
<h2>Ajouter un serveur sans SSL</h2>
<pre><code class="language-bash">/server add debian irc.debian.org/6667 -notls
</code></pre>
<h2>Se connecter dessus</h2>
<pre><code class="language-bash">/connect debian
</code></pre>
<h2>Lister les channels</h2>
<pre><code class="language-bash">/list
</code></pre>
<h2>Changer de nom d&#x27;utilisateur</h2>
<pre><code class="language-bash">/nick &lt;username&gt;
</code></pre>
<h2>Changer de channel</h2>
<p>Pour changer de fenêtre :</p>
<ul>
<li>alt+left</li>
<li>alt+right</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment créer un chatbot open-source avec Rasa ?]]></title>
            <link>https://johackim.com/creer-un-chatbot-avec-rasa?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-chatbot-avec-rasa</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 25 Jul 2021 19:49:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-chatbot-avec-rasa.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-chatbot-avec-rasa.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Contenu archivé</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Cet article n&#x27;est plus maintenu.</p>
                    </div>
                </blockquote>
<h2>Initialiser un bot</h2>
<p>Pour initialiser un projet avec <a href="https://github.com/RasaHQ/rasa">Rasa</a>, exécutez la commande <a href="https://docker.com">Docker</a> suivante :</p>
<pre><code class="language-bash">docker run -it -u 1000 -v ${PWD}:/app rasa/rasa:2.8.0-full init --no-prompt
</code></pre>
<h2>Essayer de parler avec un bot</h2>
<p>Pour essayer un bot, exécutez la commande suivante :</p>
<pre><code class="language-bash">docker run -it -u 1000 -v ${PWD}:/app rasa/rasa:2.8.0-full shell
</code></pre>
<p>Vous pouvez à présent parler avec votre bot, essayez de d&#x27;écrire un texte (ex: &quot;Hello !&quot;) et il vous répondra.</p>
<p>Si vous voulez redémarrer ou stopper le bot, voici les commandes à executer :</p>
<pre><code class="language-bash">/restart
/stop
</code></pre>
<h2>Entrainer votre bot</h2>
<p>Il existe une commande pour entrainer un bot :</p>
<pre><code class="language-bash">docker run -it -u 1000 -v ${PWD}:/app rasa/rasa:2.8.0-full train
</code></pre>
<h2>Tester le bot</h2>
<p>Dans un projet Rasa, il existe un dossier <code>test</code>, avec des fichier yaml (ex: <code>test_stories.yml</code>).</p>
<p>Ces fichiers, permettent de tester notre bot de manière automatique pour vérifier si il répond correctement selon la configuration qu&#x27;on lui a renseigné.</p>
<p>Exéctuez la commande suivante pour tester votre bot :</p>
<pre><code class="language-bash">docker run -it -u 1000 -v ${PWD}:/app rasa/rasa:2.8.0-full test
</code></pre>
<p>Si jamais un test échoue, vous pouvez avoir plus de détails via le fichier <code>results/failed_test_stories.yml</code>.</p>
<h2>Démarrer votre bot</h2>
<p>Pour démarrer votre bot :</p>
<pre><code class="language-bash">docker run -u 1000 -p 5005:5005 -v ${PWD}:/app rasa/rasa:2.8.0-full run
</code></pre>
<h2>Configurer le bot</h2>
<p>Les 3 fichiers les plus importants pour configurer un bot sont les suivants :</p>
<ul>
<li><code>data/nlu.yml</code></li>
</ul>
<p>Ce fichier contient la liste de tous les languages (NLU) que le bot analysera pour selectionner une action correspondante à chaque message qu&#x27;il recevra.</p>
<ul>
<li><code>data/stories.yml</code></li>
</ul>
<p>Ce fichier contient tous les différents chemins qu&#x27;un utilisateur peut emprunter pour parler au bot.</p>
<ul>
<li><code>domain.yml</code></li>
</ul>
<p>Ce fichier contient toutes les réponses que le bot peut envoyer à un utilisateur.</p>
<ul>
<li><code>actions/actions.py</code></li>
</ul>
<h2>Configurer le bot pour qu&#x27;il dise &quot;bonjour&quot;</h2>
<p>Pour que notre bot dise bonjour il faut configurer 3 fichiers :</p>
<pre><code class="language-yaml"># data/nlu.yml

nlu:
  - intent: hello
    examples: |
      - bonjour
      - salut
      - hello
      - hey
      - yo
      - coucou
      - comment tu vas ?
      - Salutations ! Je suis Buzz L&#x27;éclair et je viens en paix !
</code></pre>
<pre><code class="language-yaml"># data/stories.yml

stories:
  - story: hello
    steps:
      - intent: hello
      - action: utter_hello
</code></pre>
<pre><code class="language-yaml"># domain.yml

intents:
  - hello

responses:
  utter_hello:
    - text: &quot;Bonjour, que puis-je pour vous ?&quot;
</code></pre>
<h2>Configurer le bot pour qu&#x27;il vérifie la disponibilité d&#x27;un site internet</h2>
<pre><code class="language-yaml"># endpoints.yml

action_endpoint:
  url: http://localhost:5055/webhook
</code></pre>
<pre><code class="language-yaml"># data/nlu.yml

version: &quot;2.0&quot;

nlu:
  - intent: check_website
    examples: |
      - j&#x27;aimerai vérifier la disponibilité de mon site
</code></pre>
<pre><code class="language-yaml"># data/rules.yml

version: &quot;2.0&quot;

rules:
  - rule: activate check_website form
    steps:
      - intent: check_website
      - action: check_website_form
      - active_loop: check_website_form

  - rule: submit check_website_form
    condition:
      - active_loop: check_website_form
    steps:
      - action: check_website_form
      - active_loop: null
      - action: action_hello_world
      - action: utter_website_tested
</code></pre>
<pre><code class="language-yaml"># domain.yml

responses:
  utter_ask_website:
    - text: &quot;Pouvez-vous me rappeler le nom de domaine de votre application ? (ex: mondomaine.fr)&quot;

forms:
  domain_form:
    required_slots:
      domain:
        - type: from_text

actions:
  - action_check_domain
</code></pre>
<pre><code class="language-python"># actions/actions.py

import requests
from typing import Any, Text, Dict, List

from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher

def check_website(domain):
    try:
        url = &quot;https://%s&quot; % domain
        r = requests.get(url)

        if r.status_code == 200:
            return True

        return False
    except Exception as e:
        return False

class ActionCheckDomain(Action):

   def name(self) -&gt; Text:
       return &quot;action_check_domain&quot;

   def run(self, dispatcher: CollectingDispatcher,
           tracker: Tracker,
           domain: Dict[Text, Any]) -&gt; List[Dict[Text, Any]]:

       if check_website(tracker.get_slot(&quot;domain&quot;)):
           dispatcher.utter_message(text=&quot;Domain good&quot;)
       else:
           dispatcher.utter_message(text=&quot;Domain bad&quot;)

       return []
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Make de Pieter Levels]]></title>
            <description><![CDATA[Un résumé pratique du livre Make de Pieter Levels, offre des conseils sur comment créer et lancer de produits, trouver votre audience spécifique, et monétiser votre travail avec succès.]]></description>
            <link>https://johackim.com/make-pieter-levels?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/make-pieter-levels</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 18 Jul 2021 19:21:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/make-pieter-levels.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/make-pieter-levels.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://x.com/levelsio/status/642442049694908416"/><link rel="preload" as="image" href="https://i.imgur.com/JWuNnca.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/7YX0P3Y.jpg"/><h2>TL;DR</h2>
<p><strong>Idée</strong></p>
<p>Trouver une idée basée sur vos propres problèmes.</p>
<p><strong>Construire</strong></p>
<p>Créez votre idée avec les outils que vous connaissez déjà, ne déléguez pas la construction. Construisez uniquement les fonctionnalités de base dans un premier temps.</p>
<p><strong>Lancement</strong></p>
<p>Lancer tôt et à plusieurs reprises. Lancer sur des sites populaires (ex: Product Hunt, Hacker News, The Next Web, Reddit, Forbes).</p>
<p>Trouvez votre audience spécifique, ne jouer pas aux grosses startups qui veulent changer le monde.</p>
<p><strong>Grandir</strong></p>
<p>Grandissez organiquement. Un bon produit est un produit que les gens désirent réellement et qui est meilleur que le reste. Vous n&#x27;avez pas besoin de publicité.</p>
<p>Ne recrutez pas avant que les revenus ne suivent. Faites les choses vous-même.</p>
<p><strong>Monétisez</strong></p>
<p>Monétisez votre produit en demandant aux utilisateurs de l&#x27;argent. Ne vendez pas leurs données et ne mettez pas de la publicité partout.</p>
<p><strong>Automatisez</strong></p>
<p>Automatisez en écrivant des programmes qui font le travail pour vous. Automatisez seulement si le temps sauvé en vaut la peine.</p>
<p>Si c&#x27;est trop dur à automatiser, recrutez quelqu’un, et laissez-le travailler de manière la plus autonome possible.</p>
<h2>Vous aurez besoin de persévérance et de chance</h2>
<p>Vous allez probablement devoir créer 10 à 30 produits pendant 1 à 3 ans avant d&#x27;avoir quelque chose qui fonctionne.</p>
<p>Vous construisez quelque chose et regardez ce qui colle.</p>
<p>Le succès d&#x27;un produit provient beaucoup de la chance et du timing.</p>
<h2>Pratiquer</h2>
<p>Lire le livre ne sera pas utile. Pratiquez ! Et plus important, &quot;shipez&quot; !</p>
<h2>Faire des préventes</h2>
<p>Pieter Levels à créé un Typeform qui fait office de landing page et a demandé $22.</p>
<p><img src="https://x.com/levelsio/status/642442049694908416" alt=""/></p>
<p>Il a créé le livre sur un Google docs en mode &quot;Building in public&quot; et demander les retours des clients qui ont acheté le livre en prévente.</p>
<h2>Résolvez vos propres problèmes</h2>
<p>Observé vos challenges du quotidien, sélectionnez les plus gros et aidez les gens à le résoudre aussi.</p>
<p>Votre problème pourrait être celui d&#x27;autres personnes.</p>
<p>Lorsque Pieter voyageait dans plusieurs pays, en tant que digital nomade, il ne savait pas quel pays était cher, pas cher, avec ou sans wifi, etc...</p>
<p>Il s&#x27;est avéré que c&#x27;était le cas de plein d&#x27;autres personnes.</p>
<p><mark><b>Vous êtes le plus grand expert de vos propres problèmes</b></mark>. C&#x27;est plus compliqué de créer une application médicale en tant que non-docteur que de développer une application pour des développeurs par exemple.</p>
<blockquote>
<p>We knew what people wanted because we were the target market. Founder of Boosted Boards.</p>
</blockquote>
<p><strong>Les startups conseillent de &quot;parler aux clients pour trouver leurs problèmes&quot;, c&#x27;est bien, mais vous travaillez toujours d&#x27;un point de vue extérieur plutôt que du vôtre.</strong></p>
<h2>Toujours démarrer part le problème et non de la solution</h2>
<p>Si vous résolvez un problème qui n&#x27;existe pas, cela peut être technologiquement sexy, mais vous n&#x27;aurez pas d&#x27;utilisateurs.</p>
<p>Le problème doit toujours venir en premier, pas la technologie, ni la solution.</p>
<h2>Pour devenir gros, commencez petit</h2>
<p><a href="/niche" title="Les niches" class="not-found">Les niches</a> sont des segments de marché spécifiques qui sont suffisamment peu profonds pour être facilement accessibles et qui ne comptent pas beaucoup d&#x27;acteurs.</p>

<p>C&#x27;est un excellent point de départ, car leur valeur économique est trop faible pour intéresser les grandes entreprises.</p>
<p>Aucune grosse entreprise à commencé gros :</p>
<ul>
<li>Facebook a démarré avec une application &quot;Hot or Not&quot;</li>
<li>Amazon a démarré en vendant des livres</li>
<li>Etc...</li>
</ul>
<p>Si vous avez uniquement 1000 personnes qui payent votre produit 83,33€/mois, vous avez un revenu récurrent de 1 000 000€ de revenu annuel.</p>
<h2>Comment faire 1 000 000€ ?</h2>
<ul>
<li>Créez un produit à 5,000€ pour 200 personnes</li>
<li>Créez un produit à 2,000€ pour 500 personnes</li>
<li>Créez un produit à 1,000€ pour 1,000 personnes</li>
<li>Créez un produit à 200€ pour 5,000 personnes</li>
<li>Créez un produit à 100€ pour 10,000 personnes</li>
<li>Créez un produit à 10€ pour 100,000 personnes</li>
</ul>
<p>ou</p>
<ul>
<li>Créez un abonnement à 167€ / mois pour 500 personnes pendant 1 an</li>
<li>Créez un abonnement à 83€ / mois pour 1,000 personnes pendant 1 an</li>
<li>Créez un abonnement à 42€ / mois pour 2,000 personnes pendant 1 an</li>
<li>Créez un abonnement à 17€ / mois pour 5,000 personnes pendant 1 an</li>
<li>Créez un abonnement à 9€ / mois pour 10,000 personnes pendant 1 an</li>
</ul>
<h2>Démarrez avec une micro niche</h2>
<p>Imaginez que vous souhaitez créer un logiciel de réservation pour les coiffeurs. Il y a probablement des millions de coiffeurs dans le monde.</p>
<p>Allez plus loin en créant un logiciel qui se focus uniquement sur les coiffeurs qui font des coiffures africaines. Ce qui doit probablement être des dizaines de milliers de coiffeurs dans le monde.</p>
<p>Si vous réussissez à capter 10% de 10 000 coiffeurs, à savoir 1000 client, et qu&#x27;ils paient environ 83€ par mois, cela vous rapporte 1 000 000€ par an.</p>
<h2>D&#x27;une micro-niche à une multi-niche</h2>
<p>Il vaut mieux commencer par une niche comme une application de réservation pour coiffeurs africains et partir après sur le marché des coiffeurs asiatiques que l&#x27;inverse.</p>
<p>Vous aurez moins de mal à déceler les résistances à l&#x27;adoption de votre solution et vous pouvez plus facilement faire marche arrière dans ce sens-là.</p>
<h2>D&#x27;une multi-niche à des marchés adjacents</h2>
<p>Supposons que vous détenez tout le marché des réservations pour salon de coiffure. Vous pouvez peut-être envisager de passer par le marché des salons de manucure ou de tatouage.</p>
<h2>Créer une liste d&#x27;idée</h2>
<p>Concept &gt; Promising &gt; Building &gt; Success &gt; Fail</p>
<p><img src="https://i.imgur.com/JWuNnca.jpg" alt=""/></p>
<h2>Ne travaillez pas en groupe dans un premier temps</h2>
<p>Il est inutile de débattre de la viabilité d&#x27;une idée à plusieurs.</p>
<p>Il suffit de construire un prototype et de le faire valider par son marché.</p>
<p><mark><b>Seul le marché à la réponse, personne d&#x27;autre</b></mark>.</p>
<h2>Les idées ne valent rien du tout</h2>
<p><code>Business = Idée x exécution</code></p>
<p>Une idée ne vaut rien seule.</p>
<p>Mauvaise idée = 0
Bonne idée = 10
Excellente idée = 20</p>
<p>Aucune exécution = 0
Bonne exécution = 100,000€
Excellente exécution = 1,000,000€</p>
<p>Une excellente idée sans exécution vaudra toujours zéro, tandis qui une bonne idée avec une bonne exécution peut valoir +100,000€.</p>
<p>Ne pas partager votre idée est stupide parce qu&#x27;elle reste dans votre tête.</p>
<h2>Construisez rapidement et simplement</h2>
<p>Le but est d&#x27;éviter de rester coincé dans la boucle infernale des brainstormings et de commencer la création le plus rapidement possible.</p>
<p>Le plus vite vous dévoiler votre produit, le plus vite vous vérifiez si les gens veulent l&#x27;utiliser.</p>
<p>Dans un premier temps, faites les choses vous-même (DIY) plutôt que de déléguer.</p>
<h2>Ne soyez pas obsédé par les outils</h2>
<p>Tous les outils, frameworks ou langages de programmation ne sont qu&#x27;une perte de temps qui vous éloigne de <strong>votre objectif : construire et vendre votre produit</strong>.</p>
<h2>Lancement</h2>
<p>Il y a plusieurs manières de lancer son produit :</p>
<ul>
<li>Sur des plateformes comme <a href="https://producthunt.com/">Product Hunt</a>, <a href="https://news.ycombinator.com/">Hacker News</a> ou <a href="https://reddit.com/">Reddit</a>, <a href="https://betalist.com/">BetaList</a></li>
<li>Par le biais de la presse</li>
<li>Par le biais de l&#x27;audience d&#x27;une autre personne</li>
</ul>
<p>Le lancement est utile pour avoir beaucoup de personnes qui utilisent notre application afin que l&#x27;on puisse apprendre de leurs usages, réparer les bugs, développer de nouvelles fonctionnalités et faire en sorte qu&#x27;ils restent utiliser notre application.</p>
<blockquote>
<p>Une landing page avec un champ d&#x27;inscription pour rentrer un e-mail n&#x27;est pas un produit, c&#x27;est une landing page.</p>
</blockquote>
<p>Assurez-vous d&#x27;avoir une seule fonctionnalité puis qui fonctionne correctement.</p>
<p>Et si vous demandez l&#x27;adresse e-mail d&#x27;un visiteur. Proposer quelque chose de valeur et pas simplement un &quot;inscrivez-vous à ma newsletter&quot;.</p>
<p><mark><b>Lancez là où votre audience se trouve</b></mark>.</p>
<h2>Lancer sur Product Hunt</h2>
<p><strong>Vous devez lancer à 00:00:01 PST</strong>.</p>
<p>Le fuseau horaire de Product Hunt est San Francisco (fuseau horaire PST) et son système de vote est réinitialisé à minuit.</p>
<p><strong>Utiliser le nom de votre application</strong> (avec le numéro de version s&#x27;il s&#x27;agit d&#x27;une mise à jour).</p>
<p><strong>Ajoutez un bon slogan</strong> (#copywriting).</p>
<p><strong>Ajoutez 8 à 16 captures d&#x27;écran (en haute définition) des fonctionnalités principales de votre application</strong>.</p>
<p>Si possible, ajoutez une vidéo de présentation de votre produit de 30 secondes.</p>
<p>Une fois lancé :</p>
<p><strong>Ajoutez immédiatement un commentaire sur Product Hunt</strong> avec une introduction de qui vous êtes, pourquoi vous avez créé votre produit et quel est votre plan futur (<a href="https://producthunt.com/posts/hoodmaps">exemple</a>).</p>
<p><img src="https://i.imgur.com/7YX0P3Y.jpg" alt="Commentaire Product Hunt"/></p>
<p><strong>Envoyer un Tweet, Post Facebook/Instagram ou un email à votre communauté</strong> pour informer de votre lancement.</p>
<p>Et <strong>répondez à tous les commentaires</strong> sur Product Hunt et sur vos réseaux.</p>
<h2>Lancer sur Hacker News</h2>
<p>Hacker News est beaucoup plus compliqué que Product Hunt.</p>
<p>C&#x27;est très compliqué d&#x27;apparaitre sur la première page (front page) de Hacker News.</p>
<p>Par exemple, si votre post reçoit trop de commentaires par rapport au nombre de votes, il sera automatiquement supprimé.</p>
<p><strong>Le titre est très important</strong> :</p>
<p>Eviter les titres comme : &quot;Petsy.com - The best food delivery for pets&quot;.</p>
<p>Préférez un titre comme : &quot;Show HN: I made a sPite that lets you subscribe to pet food delivery&quot;.</p>
<p>Votre post sera ajouté sur la &quot;new page&quot; dans un premier temps, si vous <strong>demandez à 5 personnes d&#x27;upvoter votre post la première heure</strong>, elle aura peut-être des chances d&#x27;arriver sur la &quot;Front page&quot;.</p>
<h2>Être publié dans la presse</h2>
<p><strong>Évitez les adresses email en mode &quot;trou noir&quot;</strong> comme <a href="mailto:tips@thenextweb.com">tips@thenextweb.com</a>.</p>
<p><strong>Tentez de trouver un journaliste en particulier qui correspond à votre niche</strong>.</p>
<p><strong>Évitez les e-mails trop longs et vague qui ne vont pas droit au but</strong>.</p>
<h2>Faites de chaque fonctionnalité une opportunité de lancement</h2>
<p>Faites une promotion à chaque fois que vous lancez une nouvelle fonctionnalité.</p>
<p>Même si vous avez déjà lancé il y a longtemps, les gens aiment voir des améliorations.</p>
<h2>Si vous n&#x27;avez plus de motivation, vendez-le, automatisez-le ou tuez-le</h2>
<p>Dans le cas où votre idée fonctionne, mais qu&#x27;elle ne vous motive plus, vous pouvez soit recruter des personnes et automatiser le plus de choses possible, soit vendre votre projet.</p>
<h2>Grandissez organiquement</h2>
<p>Sur le long terme, il est préférable de grandir de manière organique que d&#x27;utiliser de la pub ou des techniques de Growth Hacking à deux balles.</p>
<p><strong>Faites des lancements tous les 3 mois</strong> avec une promotion en vendant les nouvelles fonctionnalités.</p>
<p>Ex : sur Product Hunt, avec les numéros de version (2.0, 3.0, etc...).</p>
<p><strong>Racontez des histoires</strong> plutôt que de parler uniquement des nouvelles fonctionnalités.</p>
<p>N&#x27;oubliez pas d&#x27;analyser les métriques lors de votre lancement pour vérifier si les utilisateurs provenant d&#x27;une source en particulier utilisent ou non l&#x27;application.</p>
<p>Et le meilleur moyen de grandir est simplement de <strong>créer un produit utile et génial selon les besoins existants de son audience</strong>.</p>
<h2>La monétisation est la validation</h2>
<blockquote>
<p>What I mean is, if you have 1,000 people using your product actively, don&#x27;t expect more than 5% to pay for it. Probably fewer. So your paying customer base is fewer than 50 people.</p>
</blockquote>
<p>Ajoutez un bouton &quot;Acheter&quot;, si les utilisateurs cliquent dessus, affichez une modal de paiement où ils peuvent renseigner leurs coordonnées bancaires.</p>
<p>Dans le cas où votre produit n&#x27;est pas terminé, affichez un message &quot;Désolé, nous n&#x27;avons pas débité votre carte, mais merci de votre intérêt. Notre produit n&#x27;est pas encore prêt, mais nous vous préviendrons quand il le sera&quot;.</p>
<p><strong>Note personnelle</strong> : Donnez-leur une réduction pour leur prochain achat.</p>
<p>De cette façon, vous pouvez estimer les revenus que vous pourriez avoir.</p>
<p><mark><b>La monétisation est la validation</b></mark>.</p>
<blockquote>
<p>An app without monetization is a charity. An app with monetization is a business.</p>
</blockquote>
<h2>Les business modèles</h2>
<p><strong>Limitez certaines fonctionnalitées à des utilisateurs</strong> (Pay-per-feature) :</p>
<p>Analysez les fonctionnalités de votre application les plus utilisés et ajoutez une popup &quot;Pour utiliser cette fonctionnalité, veuillez mettre à jour votre compte&quot;.</p>
<p><strong>Publicités natives</strong> :</p>
<p>Utiliser des <a href="/publicites-natives" title="Publicités natives" class="not-found">Publicités natives</a> au lieu d&#x27;utiliser des publicités Google AdSense toutes moches qui ne rapporte pas grand-chose.</p>

<p><strong>Parrainages</strong> :</p>
<p>Demandez à des compagnies de sponsoriser votre projet en ajoutant leur logo sur votre site pour un montant mensuel.</p>
<p><strong>Patreon</strong> :</p>
<p>Recevez le support des fans de votre travail via la plateforme <a href="https://patreon.com/">Patreon</a>.</p>
<p><strong>Abonnements</strong> :</p>
<p>De la même manière qu&#x27;un abonnement a Netflix. Demandez à vos utilisateurs de payer un revenu récurrent mensuel ou annuel pour utiliser votre application.</p>
<p>L&#x27;objectif est de les garder le plus longtemps en évitant le churn (les personnes qui se désinscrivent).</p>
<p><strong>Communauté</strong> :</p>
<p>Une communauté peut être sous la forme d&#x27;un forum, d&#x27;un chat, réseau social ou rencontres physiques.</p>
<p>Plus vous avez de personnes dans votre communauté, plus elle devient précieuse, et plus vous pouvez monétiser plus cher.</p>
<p>C&#x27;est un moyen de garder les utilisateurs sur son site ; construire une communauté.</p>
<h2>Éviter d&#x27;embaucher, construisez des robots</h2>
<p>Les humains sont complexes et moins rapides que des robots. La plupart des tâches peuvent être automatisées.</p>
<h2>N&#x27;automatisez pas si ça n&#x27;en vaut pas le coup</h2>
<p>Dans le cas où le temps passé à automatiser une tâche est plus long que la tâche elle-même, cela ne vaut pas le coup d&#x27;automatiser.</p>
<p>Et si c&#x27;est trop long et/ou trop complexe à automatiser, déléguer.</p>
<h2>Le test du bus</h2>
<p>« Une expérience qui explore l&#x27;impact de la perte d&#x27;une personne : si un individu particulièrement habilité dans une organisation est heurté par un bus, l&#x27;organisation en souffrira-t-elle grandement ? Si oui, le test échoue. Sinon, le test est réussi. »</p>
<p>Demandez-vous si vous passez le test, si ce n&#x27;est pas le cas, automatisez.</p>
<h2>Listez vos tâches récurrentes et automatisez-les</h2>
<p>Pendant une semaine, listez toutes les tâches récurrentes qui prennent du temps ; ordonnez-les par facilité d&#x27;automatisation et commencez à automatiser.</p>
<p>Si des tâches sont trop difficiles à automatiser, recruter un prestataire et automatiser les interactions entre lui et votre business.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Travailler en Deep Work sur Linux]]></title>
            <link>https://johackim.com/travailler-en-deep-work-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/travailler-en-deep-work-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 18 Jul 2021 19:21:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/travailler-en-deep-work-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/travailler-en-deep-work-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour travailler en <a href="/deep-work" title="Deep Work" class="not-found">Deep Work</a> sur <a href="/linux" title="Linux">Linux</a>, je me suis créé <a href="https://github.com/johackim/dotfiles/blob/85175e7d30e6f673bf73b47a62b0aa6574509351/bin/lock">un script maison</a>.</p>

<p>Ce script a pour but de m&#x27;empêcher d&#x27;avoir accès à des sites (ex: Youtube, Twitter, ect...) et applications spécifiques (Signal, Mailspring, etc...) qui m&#x27;empêchent d&#x27;être productif.</p>
<p>L&#x27;avantage de ce script, c&#x27;est qu&#x27;il m&#x27;empêche aussi de débloquer l&#x27;accès avec le compte root.</p>
<p>Ajoutez les sites et les applications que vous souhaitez bloquer à l&#x27;intérieur du script dans les variables <code>DOMAINS</code> et <code>APPS</code>.</p>
<p><strong>ATTENTION : Les commandes suivantes bloquera votre accès au groupe sudo pendant 1 heure, veuillez utiliser ce script uniquement en connaissance de cause</strong>.</p>
<p>Puis exécuter le script avec la commande suivante pour :</p>
<pre><code class="language-bash">sudo -E lock
</code></pre>
<p>Vous pouvez choisir le nombre d&#x27;heures :</p>
<pre><code class="language-bash">sudo -E lock 3 # Travailler en deep work pendant 3 heures
</code></pre>
<p>Si vous voulez savoir combien de temps il reste avant de pouvoir réutiliser votre ordinateur, vous pouvez taper la commande <code>lock status</code>.</p>
<p>Et n&#x27;oubliez pas d&#x27;ajouter la commande <code>lock reset</code> dans une tâche cron qui s&#x27;exécute chaque minute pour pouvoir vous débloquer l&#x27;accès automatiquement.</p>
<pre><code class="language-crontab">* * * * * lock reset
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Zero to Sold de Arvid Kahl]]></title>
            <link>https://johackim.com/zero-to-sold-arvid-kahl?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/zero-to-sold-arvid-kahl</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 18 Jul 2021 19:21:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/zero-to-sold-arvid-kahl.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/zero-to-sold-arvid-kahl.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/RJkb6Tf.jpeg"/><link rel="preload" as="image" href="https://i.imgur.com/wVhcDJr.jpeg"/><link rel="preload" as="image" href="https://i.imgur.com/6ACBz4g.jpeg"/><h2>C&#x27;est quoi le bootstrapping ?</h2>
<p>Le bootstrapping veut dire, créer une entreprise à partir de rien, sans aucun financement ou aide extérieur et en utilisant le moins de ressources possible.</p>
<h2>Les 4 étapes d&#x27;une entreprise bootstrapée</h2>
<p><strong>1. La phase de préparation</strong></p>
<p>Dans cette phase, on se concentre sur 3 choses :</p>
<ul>
<li><strong>Trouver une audience</strong></li>
<li><strong>Trouver leur plus gros problème</strong></li>
<li><strong>Trouver une solution</strong> qui résout ce problème d&#x27;une manière où les gens payent pour votre service.</li>
</ul>
<p><strong>2. La phase de survie</strong></p>
<p>Dans cette phase, on se concentre sur trouver une façon reproductible de gagner de l&#x27;argent.</p>
<p>Écouter ses premiers clients et construire des processus et de l&#x27;automatisation pour rester en haut de l&#x27;entreprise.</p>
<p><strong>3. La phase de stabilité</strong></p>
<p>Dans cette phase, vous avez des revenus constants et vous rechercher un moyen de stabilisé votre entreprise en recrutant des personnes et en créant une relation de long-terme avec vos clients.</p>
<p><strong>4. La phase de croissance</strong></p>
<p>Dans cette phase, vous devez choisir entre garder votre entreprise ou la vendre.</p>
<h2>La bonne approche pour lancer un business bootstrappé</h2>
<ol>
<li>Trouver une <strong>audience</strong> de niche</li>
<li>Trouver et valider un <strong>problème</strong> critique</li>
<li>Inventez et valider une <strong>solution</strong> à ce problème</li>
<li>Construire un <strong>produit</strong> qui implémente cette solution</li>
<li>Construire une <strong>entreprise</strong> qui vend de manière répétée ce produit à votre audience</li>
</ol>
<blockquote>
<p>Successful businesses are built by solving critical problems for an audience that will pay for a solution to their issues.</p>
</blockquote>
<p><img src="https://i.imgur.com/RJkb6Tf.jpeg" alt="La bonne approche pour lancer un business bootstrappé"/></p>
<h2>Les 4 questions à se poser lors de la création d&#x27;un business</h2>
<ol>
<li><strong>Qui</strong> j&#x27;aide ? (Audience)</li>
<li><strong>Pourquoi</strong> ils ont besoin d&#x27;aide ? (Problème)</li>
<li><strong>Comment</strong> je peux les aider ? (Solution)</li>
<li><strong>Qu&#x27;est-ce que</strong> je peux créer pour les aider ? (Produit)</li>
</ol>
<h2>Trouver un problème à partir d&#x27;un objectif</h2>
<p>À partir de l&#x27;objectif de vos clients, vous pouvez déduire un problème qui se trouve sur le chemin vers le succès de vos clients.</p>
<h2>Commencer par trouver la niche parfaite</h2>
<p>Un business n&#x27;est rien sans clients. Vous aurez beau avoir le meilleur produit du monde, si personne ne paye pour utiliser votre produit, vous n&#x27;avez rien.</p>
<p>Tout commence par trouver les personnes que l&#x27;on souhaite aider, mieux vous les connaissez mieux c&#x27;est.</p>
<p>Une niche est beaucoup moins concurrentielle et plus facile à atteindre.</p>
<p>Une niche est homogène. Il est plus simple d&#x27;identifier et résoudre un problème commun d&#x27;un petit groupe de personne.</p>
<p>Les personnes d&#x27;une niche parlent le même langage, il est plus facile de les comprendre et de s&#x27;adresser à eux.</p>
<p>Une bonne niche vous permettra de créer un produit qui résout un seul problème critique de manière efficace.</p>
<p>Trouvez une niche suffisamment petite pour éviter la compétition et suffisamment grande pour pouvoir en vivre.</p>
<p><img src="https://i.imgur.com/wVhcDJr.jpeg" alt="Le marché Boucles d&#x27;or"/></p>
<h2>Choisir un marché qui demande un focus sur la vente ou sur le marketing</h2>
<p>Certains marchés exigent que vous contactiez les acheteurs individuellement.</p>
<p>Pour d&#x27;autres, une bonne stratégie marketing bien ciblée pourrait signifier que vous n&#x27;aurez jamais à parler à un seul client avant qu&#x27;ils achètent.</p>
<h2>Trouver la taille d&#x27;un marché</h2>
<p>Il existe plusieurs moyens de trouver (d&#x27;estimer) la taille d&#x27;un marché :</p>
<ul>
<li>Parler aux personnes d&#x27;une insdustrie</li>
<li>Consulter les magazines d&#x27;une industrie</li>
<li>Écouter les podcasts d&#x27;une industrie</li>
<li>Se rendre aux conférences</li>
<li>Consulter les rapports d&#x27;industrie (HolonIQ, EdTech)</li>
</ul>
<h2>Trouver le problème le plus douloureux de votre audience</h2>
<p>Parfois, on se plaint juste à propos d&#x27;un problème, on ne veut pas nécessairement prendre des mesures pour le résoudre.</p>
<p>Une audience ne payera jamais pour un problème qui n&#x27;est douloureux pour eux.</p>
<p>Si vous souhaitez construire un business profitable, vous devez trouver et résoudre <strong>le problème le plus critique et douloureux</strong> dont votre client fait fasse.</p>
<p><strong>Privilégiez la Morphine à l&#x27;aspirine et aux vitamines</strong>.</p>
<p><img src="https://i.imgur.com/6ACBz4g.jpeg" alt="Le problème le plus critique"/></p>
<p><mark><b>Un problème douloureux est répétitif</b></mark>.</p>
<p>Le problème le plus douloureux de votre audience est souvent celui qui n&#x27;est jamais facile à résoudre pour eux et qui <strong>impacte leur vie de manière répétitive</strong>.</p>
<p>Trouvez le problème dont votre audience doit faire fasse encore et encore.</p>
<p><mark><b>Un problème douloureux n&#x27;est pas optionnel</b></mark>.</p>
<p>Un problème peut parfois être ignoré ou délégué, mais un problème douloureux ne peux pas l&#x27;être.</p>
<p>Le problème doit être une tâche que son audience ne peux pas outrepasser dans son quotidien.</p>
<p><strong>Un problème douloureux prend beaucoup trop de temps à être résolue</strong>.</p>
<p>Si le problème à résoudre demande peu d&#x27;effort et est trop facile à résoudre, personne ne demandera vos services.</p>
<p>Nous avons tous des aspirations, des objectifs, des conflits, des luttes et des difficultés.</p>
<p>Nous avons tous un endroit où nous voulons être et des choses qui nous empêchent d&#x27;y arriver. C&#x27;est là que nous ressentons de la douleur.</p>
<p>Le but est de trouver ces douleurs et d&#x27;où elles proviennent :</p>
<ol>
<li>Douleur liée au temps</li>
<li>Douleur liée à l&#x27;argent</li>
<li>Douleur liée à soi (réputation, accomplissement, avancement, émancipation)</li>
</ol>
<p>Une douleur peut être intense, pénible, pressante ou ennuyeuse.</p>
<p>L&#x27;intensité de la douleur dépendra en partie du <a href="/les-5-niveaux-de-conscience" title="niveau de sensibilisation">niveau de sensibilisation</a> de votre prospect.</p>

<h2>Parlez à votre audience</h2>
<blockquote>
<p>Don’t talk about your product. Have them talk about their problems. The Mom Test - Rob Fitzpatrick</p>
</blockquote>
<p>Pour tenter de déceler le problème le plus critique d&#x27;une audience, il peut être utile de leur parler.</p>
<p>Commencer par parler aux bonnes personnes, celles qui recherchent activement une solution à leurs problèmes et éviter les autres.</p>
<p>Ne parler pas de votre produit, écouter les parler de leurs problèmes.</p>
<p>Posez-leur des questions sur leurs problèmes et leurs habitudes.</p>
<p>Où sont-ils maintenant ? Où veulent-ils être ? Qu&#x27;est-ce qui les empêche d&#x27;y arriver ?</p>
<h2>Une solution n&#x27;est pas un produit (pas encore...)</h2>
<p>Un problème peut être résolu de 1000 manières.</p>
<p>Le but n&#x27;est pas de foncer tête baissée dans la création d&#x27;un produit.</p>
<p>Trouvez la solution la plus percutante et la plus créatrice de valeur avec le moins de frictions et les meilleures chances d&#x27;être adoptées dans le flux de travail existant de vos clients.</p>
<p>Évitez de proposer un produit qui ne s&#x27;intègre pas du tout dans l&#x27;environnement de vos clients.</p>
<p>Analysez l&#x27;environnement et la situation actuelle de votre audience avant de créer un produit qu&#x27;ils ne pourront pas utiliser.</p>
<h2>Créez un Minimum Loveable Product (MLP)</h2>
<p>Pour éviter de développer un MVP trop complexe, imaginez quelle serait la version qu&#x27;un utilisateur prendrait en capture d&#x27;écran pour montrer à ses amis ou collègues.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre Atomic Habits de James Clear]]></title>
            <link>https://johackim.com/atomic-habits-james-clear?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/atomic-habits-james-clear</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/atomic-habits-james-clear.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/atomic-habits-james-clear.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/QfLAj0z.png"/><h2>C&#x27;est quoi une habitude ?</h2>
<p>Une habitude est une activité routinière ou un comportement exécuté régulièrement et, la plupart du temps, automatiquement.</p>
<p>À long terme, notre qualité de vie dépend souvent de la qualité de nos habitudes.</p>
<p>Les habitudes sont à double tranchant. De mauvaises habitudes peuvent vous ralentir tout aussi facilement que de bonnes habitudes peuvent vous aider à progresser.</p>
<h2>Pourquoi les habitudes vous donnent la liberté et non l&#x27;inverse ?</h2>
<p>Beaucoup de personnes (comme moi) ont peur des habitudes, car cela semble être en apparence un frein à notre liberté et notre spontanéité dans la vie.</p>
<p>« Les habitudes vont-elles rendrent ma vie monotone ? »</p>
<p>« Est-ce que je vais me perdre dans une routine qui me rend triste ? »</p>
<p>En réalité, c&#x27;est l&#x27;inverse, <strong>les habitudes ne limitent pas la liberté. Elles la créent.</strong></p>
<p><strong>Les personnes qui n&#x27;ont pas d&#x27;habitudes bien établies sont souvent celles qui ont le moins de liberté.</strong></p>
<ul>
<li>Sans bonnes habitudes financières, vous serez toujours en recherche d&#x27;argent.</li>
<li>Sans bonnes habitudes de santé, vous aurez toujours l&#x27;impression de manquer d&#x27;énergie.</li>
<li>Sans bonnes habitudes d&#x27;apprentissage, vous aurez toujours le sentiment d&#x27;être en retard.</li>
</ul>
<p>Et chacune de ces tâches demandera un effort conséquent en termes de temps et d&#x27;énergie.</p>
<p>Plus vous aurez à effectuer d&#x27;efforts conscients dans votre prise de décision et à l&#x27;exécution de ces tâches moins vous aurez de temps à consacrer à votre liberté.</p>
<p>Alors que si vous mettez en place vos habitudes correctement et qu&#x27;elles deviennent bien ancrées, vous aurez tout le temps et la liberté de faire ce qui vous plait.</p>
<h2>L&#x27;anecdote de l&#x27;avion</h2>
<p>Si vous changez la trajectoire d&#x27;un vol d&#x27;avion Los Angeles / New York de seulement 3,5 degrés, cela vous fera attérir à Washington au lieu de New York.</p>
<p>C&#x27;est pareil pour vos habitudes, un léger changement de 1% en bien ou en mal peut complètement changer votre avenir.</p>
<h2>Le cumul de gains marginaux</h2>
<p><strong>Le cumul de <a href="/gains-marginaux" title="Gains marginaux" class="not-found">Gains marginaux</a></strong> est une philosophie inventée par l&#x27;entraineur de cyclisme Dave Brailsford qui consiste à rechercher toutes les marges d&#x27;amélioration, aussi petites soit-elles, dans tout ce que vous entreprenez.</p>

<blockquote>
<p>Si on envisage la compétition cycliste en la décomposant par élément, si on améliore chaque élément de 1%, on obtiendra une augmentation globale considérable des performances. Dave Brailsford</p>
</blockquote>
<h2>La philosophie du 1%</h2>
<p>De la même manière que l’argent investi travaille de lui-même, un investissement en habitude produit des effets exponentiels sur notre progression.</p>
<p>Progressez de 1% chaque jour et au bout d’un an vous serez 37 fois meilleur (1.01^365 = 37), 1400 fois au bout de deux ans, et 54000 fois au bout de trois ans.</p>
<h2>La motivation principale de tous nos actes</h2>
<p>Nos ancêtres préhistoriques étaient attentifs aux signaux (déclencheurs) qui indiquaient l&#x27;emplacement de récompenses primaires comme la nourriture, l&#x27;eau et le sexe.</p>
<p>Aujourd&#x27;hui, nous passons tout notre temps à la recherche d&#x27;argent, d&#x27;amour, de renommée, de pouvoir, de statut social, de louanges, etc...</p>
<p>Ces activités améliorent aussi indirectement nos chances de survie et de reproduction, ce qui est la motivation principale de tous nos actes.</p>
<p>De tout temps, on a constaté qu’une personne jouissant de plus de pouvoir et de renommée avait accès à plus de ressources, se souciait moins de sa survie et s’avérait être un conjoint potentiel plus attirant.</p>
<h2>La boucle des habitudes</h2>
<p>Une habitude fonctionne en 4 étapes :</p>
<p><strong>Déclencheur -&gt; Envie -&gt; Action -&gt; Récompense</strong></p>
<h3>Le déclencheur</h3>
<p>Le <strong>déclencheur</strong> est simplement un ensemble d&#x27;informations qui anticipe une récompense et amène à un comportement.</p>
<p>Exemples :</p>
<ul>
<li>La vue d&#x27;une machine à sous</li>
<li>L&#x27;odeur d&#x27;un restaurant chinois</li>
<li>L&#x27;écoute d&#x27;un groupe de métal</li>
</ul>
<p>Notre réaction à ses déclencheurs est propre à chacun.</p>
<h3>L&#x27;envie</h3>
<p><strong>L&#x27;envie</strong> est le désir, l&#x27;état de manque qui nous pousse à agir pour atteindre la récompense.</p>
<p>Exemples :</p>
<ul>
<li>Avoir faim</li>
<li>Vouloir plus de connaissances sur un sujet</li>
<li>Vouloir plus d&#x27;argent</li>
</ul>
<p>En théorie, toute information peut déclencher un état de manque, mais cela dépend des motivations de chacun.</p>
<p>Sans motivation ou désir, vous n&#x27;avez aucune raison d&#x27;agir.</p>
<h3>L&#x27;action</h3>
<p><strong>L&#x27;action</strong> est simplement l&#x27;habitude que vous accomplissez. Elle peut être sous la forme d&#x27;une pensée ou d&#x27;une action physique.</p>
<p>Exemples :</p>
<ul>
<li>Manger</li>
<li>Faire du sport</li>
<li>Sortir le chien</li>
</ul>
<h3>La récompense</h3>
<p><strong>La récompense</strong> et l&#x27;objectif final d&#x27;une habitude. Son objectif est de satisfaire votre envie.</p>
<p>Les récompenses vous apprennent quelles actions méritent d&#x27;être reproduites à l&#x27;avenir.</p>
<p>Exemples :</p>
<ul>
<li>Être rassasié</li>
<li>Être plus tranquille</li>
<li>Gagner 1000€</li>
</ul>
<h3>En résumé</h3>
<p>Pour résumé, le déclencheur anticipe une récompense, ce qui provoque un désir de vouloir cette récompense, et engendre l&#x27;action afin d&#x27;obtenir cette récompense.</p>
<p>Exemple :</p>
<ol>
<li>Déclencheur -&gt; Votre téléphone sonne</li>
<li>Envie -&gt; Vous souhaitez connaitre le contenu du message</li>
<li>Action -&gt; Vous regardez le message</li>
<li>Récompense -&gt; Vous satisfaites votre envie de lire le message</li>
</ol>
<p>L&#x27;action de saisir votre téléphone devient associée à la sonnerie de votre téléphone.</p>
<p>Si un comportement est insuffisant à l&#x27;une des quatre étapes, il ne deviendra pas une habitude.</p>
<p>Il s&#x27;agit d&#x27;une boucle qui analyse continuellement l&#x27;environnement et anticipe ce qui va se passer à chaque instant de notre vie, même maintenant.</p>
<h2>Les 4 lois du changement de comportement</h2>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">James Clear</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Tout objectif est voué à l&#x27;échec s&#x27;il va à l&#x27;encontre de la nature humaine.</p>
                    </div>
                </blockquote>
<p>Voici les 4 lois pour <strong>créer une bonne habitude</strong> :</p>
<ol>
<li>L&#x27;évidence (Déclencheur), -&gt; &quot;Comment rendre l’habitude évidente ?&quot;</li>
<li>L&#x27;attractivité (Envie), -&gt; &quot;Comment rendre l’habitude attractive ?&quot;</li>
<li>La facilité (Action) -&gt; &quot;Comment rendre l’habitude facile ?&quot;</li>
<li>La satisfaction (Récompense) -&gt; &quot;Comment rendre l’habitude satisfaisante ?&quot;</li>
</ol>
<p>Et si vous inversez le processus, cela peut <strong>briser une mauvaise habitude</strong> :</p>
<ol>
<li>L&#x27;invisibilité (Déclencheur) -&gt; &quot;Comment rendre l’habitude invisible ?&quot;</li>
<li>La non-attractivité (Envie) -&gt; &quot;Comment rendre l’habitude non attractive ?&quot;</li>
<li>La difficulté (Action) -&gt; &quot;Comment rendre l’habitude difficile ?&quot;</li>
<li>L&#x27;insatisfaction (Récompense) -&gt; &quot;Comment rendre l’habitude non satisfaisante ?&quot;</li>
</ol>
<h2>Le tableau de bord des habitudes</h2>
<p>Une fois que nos habitudes sont devenues automatiques, nous ne faisons plus attention à ce que nous faisons.</p>
<p>Créer un tableau de bord des habitudes est un simple exercice qui consiste à lister toutes les habitudes que l&#x27;on réalise quotidiennement afin de prendre conscience de toutes ses bonnes ou mauvaises habitudes.</p>
<ol>
<li>Lister toutes vos habitudes</li>
<li>Ajouter un &quot;+&quot; à côté des bonnes habitudes</li>
<li>Ajouter un &quot;-&quot; à côté des mauvaises habitudes</li>
<li>Ajouter un &quot;=&quot; à côté des habitudes neutres</li>
</ol>
<p>Il n&#x27;y a pas de bonnes ou mauvaises habitudes, chaque habitude résout un problème, elles dépendront de votre situation de vos objectifs.</p>
<p>Observez vos pensées et vos actions sans jugement ni critique interne.</p>
<blockquote>
<p>Le processus de changement de comportement commence toujours par la prise de conscience.</p>
</blockquote>
<h2>L&#x27;intention de mise en œuvre</h2>
<p>Les personnes qui élaborent un plan spécifique précisant <strong>quand</strong> et <strong>où</strong> ont plus de chances de s&#x27;y tenir et d&#x27;atteindre leur objectif.</p>
<p>Si vous vous dites simplement, &quot;je vais arrêter de fumer&quot;, ou &quot;je vais me mettre au sport&quot;, c&#x27;est laisser le hasard décider et espérez que vous vous en souviendrez ou serez motivé le moment venu.</p>
<p>Quand les rêves sont flous, il est facile de justifier de petites exceptions tout au long de la journée et de ne jamais réaliser les choses spécifiques que vous vous êtes fixées pour réussir.</p>
<p>L&#x27;intention de mise en oeuvre est simplement un plan précisant quand et où agir. Vous pouvez l&#x27;appliquer en définissant vos habitudes avec la formule suivante :</p>
<p><strong>Je vais [COMPORTEMENT] à [MOMENT], dans [LIEU].</strong></p>
<p>Si vous ne savez pas quand commencer, choisissez le premier jour de la semaine, du moi ou de l&#x27;année. Un nouveau départ est toujours motivant.</p>
<h2>La superposition d&#x27;habitudes</h2>
<p><strong>La superposition d&#x27;habitudes</strong> (ou <strong><a href="/habit-stacking" title="Habit stacking" class="not-found">Habit stacking</a></strong> en anglais), terme initialement inventé par BJ Fogg sous le terme <strong>Anchoring</strong> est simplement le fait d&#x27;associer une habitude à une autre.</p>

<p><strong>Après [HABITUDE ACTUELLE], je vais [NOUVELLE HABITUDE].</strong></p>
<p>Exemples :</p>
<ul>
<li>Après m&#x27;être servi une tasse de café, je vais méditer pendant une minute.</li>
<li>Après avoir enlevé mes chaussures de ville, je vais immédiatement enfiler ma tenue de sport.</li>
</ul>
<p>Le secret, c&#x27;est de lier le comportement souhaité à une action que vous effectuez déjà chaque jour.</p>
<p>Cela vous permet d&#x27;enchainer les habitudes, chacune agissant comme un déclencheur pour la suivante.</p>
<h2>Le contexte est le déclencheur</h2>
<p>Avec le temps, vos habitudes deviennent associés non plus avec un déclencheur unique, mais avec le contexte qui englobe le comportement. Le contexte devient le déclencheur.</p>
<p>Exemples :</p>
<ul>
<li>Parler à voix basse dans une église</li>
<li>Boire de l&#x27;alcool dans une soirée</li>
<li>Fumer après avoir fait l&#x27;amour</li>
</ul>
<p>Il est plus facile de changer les habitudes dans un nouvel environnement. Cela aide à échapper aux déclencheurs déjà existants qui nous poussent vers nos habitudes actuelles.</p>
<p>Il est plus facile d&#x27;associer une nouvelle habitude à un nouveau contexte que de créer une nouvelle habitude face à des signaux concurrents.</p>
<blockquote>
<p>À long terme nous devenons le produit de l&#x27;environnement dans lequel nous vivons.</p>
</blockquote>
<h2>Les habitudes sont liées à la dopamine</h2>
<p>La <a href="/dopamine" title="Dopamine">Dopamine</a> est un neurotransmetteur qui se libère lorsque vous éprouvez du plaisir, mais aussi lorsque vous l&#x27;anticipez.</p>

<p>Il guide nos actions au quotidien en générant des états de manque comme l&#x27;envie de boire, de manger ou de faire l&#x27;amour.</p>
<p>La dopamine est davantage libérée pendant la phase d&#x27;anticipation que pendant l&#x27;appréciation de la récompense.</p>
<p>C&#x27;est l&#x27;attente d&#x27;une récompense, et non son accomplissement, qui nous pousse à agir. Plus l&#x27;anticipation est grande, plus le pic de dopamine est important.</p>
<p>Les scientifiques appellent cela la différence entre &quot;vouloir&quot; et &quot;apprécier&quot;.</p>
<blockquote>
<p>Le désir est le moteur qui dirige le comportement. Chaque action est entreprise à cause de l&#x27;anticipation qui la précède.</p>
</blockquote>
<h2>La différence entre un objectif et un processus</h2>
<blockquote>
<p>« Le score se fait tout seul. » Bill Walsh, triple vainqueur du Super Bowl</p>
</blockquote>
<p>L&#x27;objectif est le résultat que vous souhaitez atteindre. Le processus est le moyen d&#x27;y parvenir.</p>
<p>Exemples :</p>
<ul>
<li>
Si vous êtes un entraîneur, votre objectif est de remporter un championnat. Le processus est la façon dont vous recrutez les joueurs, gérez vos assistants et menez vos entraînements.
</li>
<li>
Si vous êtes un entrepreneur, votre objectif est de créer une entreprise générant des bénéfices. Le processus est le fait de tester des idées de produits, de recruter des employés et de mener des campagnes de marketing.
</li>
<li>
Si vous êtes musicien, votre objectif est de jouer un nouveau morceau. Le processus est la fréquence à laquelle vous pratiquez, la méthode avec laquelle vous déchiffrez et vous attaquez aux mesures difficiles et la façon dont vous recevez les instructions de votre professeur.
</li>
</ul>
<p>Si vous enlever le processus vous ne pouvez pas atteindre votre objectif. Si vous enlevez votre objectif, il est possible de l&#x27;atteindre quand même avec le processus.</p>
<p><strong>Le processus est supérieur à l&#x27;objectif. Avec le bon processus, l&#x27;objectif est atteint naturellement.</strong></p>
<h2>Mettre en place des habitudes basées sur l&#x27;identité</h2>
<blockquote>
<p>Identité &gt; Processus &gt; Objectif</p>
</blockquote>
<p>Avec les habitudes axées sur les résultats, l’accent est mis sur ce que vous voulez réaliser.</p>
<p>Avec des habitudes identitaires, l’accent est mis sur ce que vous souhaitez devenir.</p>
<p>Il est plus facile d&#x27;arrêter de fumer en s&#x27;identifiant comme non-fumeur qu&#x27;en s&#x27;identifiant comme fumeur occasionnel.</p>
<h2>Le regroupement de tentations</h2>
<p>Le regroupement de tentations (<a href="/temptation-bundling" title="Temptation bundling" class="not-found">Temptation bundling</a> en anglais) fonctionne en liant une action que vous voulez faire à une action que vous devez faire.</p>

<p>Exemple : Associer les séries Netflix (ce qu&#x27;on a envie de faire) à faire de l&#x27;exercice sur son vélo (ce qu&#x27;on devrait faire).</p>
<p>Cela rend vos habitudes plus attractives.</p>
<h2>L&#x27;environnement social</h2>
<blockquote>
<p>La culture dans laquelle nous vivons détermine les comportements qui nous attirent.</p>
</blockquote>
<p>Toutes les habitudes qui nous semblent normales dans notre culture sont par conséquent les comportements qui nous semblent les plus attrayants.</p>
<p>Pendant la majeure partie de notre histoire, nos ancêtres vécurent dans des tribus. Être séparé de la tribu, ou pire, être chassé était une condamnation à mort.</p>
<p>En conséquence, l&#x27;un des désirs les plus profonds de l&#x27;homme est d&#x27;appartenir à un groupe.</p>
<p>Nos amis et notre famille exercent une sorte de pression invisible qui nous incite à faire comme eux.</p>
<p>Le comportement normal de la tribu l&#x27;emporte souvent sur le comportement de l&#x27;individu.</p>
<p>La plupart du temps, nous préférons avoir tort avec la foule plutôt que d&#x27;avoir raison seuls.</p>
<p>Nous ne choisissons pas nos premières habitudes, nous les imitons. Nous suivons le scénario transmis par nos amis et notre famille, note église et notre école, notre communauté locale et la société en général.</p>
<p>Nous imitons constamment les personnes qui nous entourent ; gouts musicaux, accent, posture, vêtements, blagues.</p>
<p>Nos chances de devenir obèse augmentent de 57% si on a un ami qui le devient.</p>
<h2>L&#x27;expérience de Solomon Asch</h2>
<p>Le psychologue Solomon Asch mena une expérience qui consiste à poser des questions ultras simples à une personne entourée d&#x27;acteurs dans une salle.</p>
<p>La personne concernée ne sait pas que les autres personnes sont des acteurs</p>
<p>De temps en temps, les acteurs firent exprès de répondre faux à une question ultra simple.</p>
<p>75% des personnes étaient d&#x27;accord avec la réponse du groupe, même si elle était manifestement incorrecte.</p>
<h2>La motivation sous-jacente</h2>
<p>Chaque comportement à deux facettes : en surface, l&#x27;envie, et en profondeur, la motivation sous-jacente.</p>
<p>Exemples :</p>
<ul>
<li>Manger des tacos -&gt; Se nourrir pour survivre</li>
<li>Aller sur Tinder -&gt; Trouver l&#x27;amour et faire un enfant</li>
<li>Naviguer sur Facebook -&gt; Se lier à une tribu</li>
</ul>
<p>Toutes nos habitudes actuelles sont des réponses à des désirs anciens.</p>
<p>Le monde a beaucoup changé, mais la nature humaine a peu évolué.</p>
<h2>Devoir -&gt; faire</h2>
<p>Pour reprogrammer votre cerveau pour qu&#x27;il apprécie les habitudes fastidieuses vous pouvez simplement changer le verbe &quot;devoir&quot; en &quot;faire&quot;.</p>
<p>Exemples :</p>
<ul>
<li>Je dois aller travailler -&gt; je vais travailler.</li>
<li>Je dois me lever -&gt; Je me lève</li>
</ul>
<p>Ce simple changement redéfinit notre point de vue de l&#x27;évènement. Nous ne voyons plus cela comme une corvée, mais comme quelque chose que nous faisons naturellement.</p>
<h2>Différence entre être en mouvements et être dans l&#x27;action</h2>
<p>Lorsque vous êtes en mouvement, vous planifiez, développez des stratégies et apprenez. Ce sont toutes de bonnes choses, mais elles ne produisent pas de résultats.</p>
<p>En revanche, l&#x27;action est un type de comportement qui produira un résultat.</p>
<p>Exemples :</p>
<ul>
<li>
&quot;Je présente vingt idées d’articles que je veux écrire&quot; (mouvement) vs. &quot;Je m’assieds et j’écris un article&quot; (action).
</li>
<li>
&quot;Je recherche un meilleur régime alimentaire et lis quelques livres sur le sujet&quot; (mouvement) vs. &quot;Je mange réellement un repas sain&quot; (action).
</li>
</ul>
<p>Pour éviter ce comportement, commencer par la répétition, et non par la perfection.</p>
<h2>La potentialisation à long terme</h2>
<p><strong>La potentialisation à long terme</strong> (ou <strong>loi de Hebb</strong>) est un terme créé par les neuroscientifiques pour décrire le renforcement de la liaison des neurones qui sont stimulés en même temps.</p>
<p>Exemples :</p>
<ul>
<li>Les musiciens ont un cervelet plus gros que les non-musiciens.</li>
<li>Les mathématiciens ont plus de matière grise que les autres.</li>
<li>Les chauffeurs de taxi ont un hippocampe plus volumineux que les autres.</li>
</ul>
<p>Tout comme la musculation, certaines régions du cerveau s&#x27;adaptent à mesure qu&#x27;elles sont sollicitées et s&#x27;atrophient lorsqu&#x27;elles ne sont plus mobilisées.</p>
<h2>L&#x27;automaticité</h2>
<p>L&#x27;automaticité est la capacité à adopter un comportement sans penser à chaque étape.</p>
<p>C&#x27;est ce qui se produit lorsque l&#x27;inconscient prend le relai.</p>
<p>La répétition prévaut sur le temps d&#x27;adoption d&#x27;une habitude.</p>
<h2>La loi du moindre effort</h2>
<p>Historiquement, les hommes ont pendant longtemps eu besoin d&#x27;économiser son énergie pour survivre.</p>
<p>Il est dans la nature humaine d&#x27;économiser son énergie et choisir l&#x27;option qui nécessite le moins de travail.</p>
<p>Plus une action demande de l&#x27;énergie, moins elle est susceptible d&#x27;être exécutée.</p>
<p>Et inversement, moins une action demande de l&#x27;énergie, plus elle est susceptible d&#x27;être exécutée.</p>
<p>Regarder la télévision ou notre smartphone peut être effectué presque sans effort, ce qui nous fait perdre beaucoup de temps.</p>
<h2>La technique du réaménagement de l&#x27;environnement</h2>
<p>Lorsque vous décidez de créer une nouvelle habitude, il est préférable de choisir un endroit qui se trouve déjà dans le processus de votre routine quotidienne.</p>
<p>Préparez et améliorez votre environnement pour faciliter les actions futures.</p>
<p>Exemples :</p>
<ul>
<li>Vous êtes plus susceptibles d&#x27;aller à la salle de sport si elle se trouve sur le chemin du travail.</li>
<li>Préparez votre tenue de sport à l&#x27;avance</li>
<li>Placer des fruits sur le comptoir de votre cuisine</li>
</ul>
<p>Moins la contrainte est importante, plus l&#x27;habitude se maintient et inversement.</p>
<h2>Les instants décisifs</h2>
<blockquote>
<p>Les habitudes sont comme la bretelle d&#x27;entrée sur une autoroute</p>
</blockquote>
<p>Chaque jour, certains moments sont décisifs et façonnent votre journée en bien ou en mal.</p>
<p>Certains choix vous emmènent sur des chemins totalement différents qui auront un impact sur votre journée.</p>
<p>Exemples :</p>
<ul>
<li>Prendre la voiture ou prendre son vélo</li>
<li>Aller dans un Fast Food ou un bar à salade</li>
<li>Travailler ou démarrer sa console de jeux vidéos</li>
</ul>
<p>Une fois le chemin emprunté, il est difficile d&#x27;en sortir ou de revenir un arrière.</p>
<p><img src="https://i.imgur.com/QfLAj0z.png" alt="|300"/></p>
<h2>La règle des 2 minutes</h2>
<p>Lorsque vous créez une nouvelle habitude, ce processus doit durer moins de 2 minutes.</p>
<p>Chaque habitude peut se réduire à 2 minutes, exemple :</p>
<ul>
<li>Lire tous les soirs avant d&#x27;aller se coucher -&gt; Lire une page</li>
<li>Faire 30 minutes de yoga -&gt; sortir mon tapis de yoga</li>
<li>Étudier avant d&#x27;aller en cours -&gt; Ouvrir mes notes</li>
<li>Courir 5 kilomètres -&gt; Mettre mes chaussures de sport</li>
</ul>
<p>Une habitude ne doit pas être considérée comme difficile, les actions qui suivent peuvent être difficiles, mais les 2 premières minutes doivent être faciles.</p>
<p>Votre objectif n&#x27;est pas les actions difficiles, mais l&#x27;<a href="/habitude-passerelle" title="Habitude passerelle" class="not-found">Habitude passerelle</a>. Votre habitude doit être établie avant d&#x27;être améliorée.</p>

<p>Presque tout objectif de vie peut être transformé en un comportement de 2 minutes, exemple : Je veux vivre longtemps -&gt; Je dois rester en forme -&gt; Je dois faire de l&#x27;exercice -&gt; Je dois mettre mes chaussures de sport.</p>
<h2>Dispositif d&#x27;engagement</h2>
<blockquote>
<p>Un dispositif d&#x27;engagement est un choix que vous faites dans le présent et qui contrôle vos actions dans le futur.</p>
</blockquote>
<p>C&#x27;est un moyen de conditionner vos comportements futurs afin d&#x27;éviter les mauvaises et suivre les bonnes habitudes.</p>
<p>Exemple :</p>
<ul>
<li>Brancher un minuteur qui déconnecte votre box internet à 22h</li>
<li>S&#x27;inscrire à l&#x27;avance à une compétition de sport</li>
<li>Se désabonner de toutes nos newsletters</li>
<li>Désactiver les notifications de son téléphone</li>
<li>Vendre sa console de jeux vidéos</li>
<li>Demander à un assistant ou ami de reset chaque début de semaine les mots de passe de vos réseaux sociaux</li>
</ul>
<h2>La stratégie du trombone</h2>
<p>Tous les matins, un jeune courtier qui se nomme Dyrsmid posait deux pots sur son bureau. L&#x27;un était vide, et l&#x27;autre remplit de cent vingt trombones.</p>
<p>Chaque fois qu&#x27;il passait un appel commercial, il déplaçait un trombone du pot plein au pot vide.</p>
<p>En 18 mois, il gagna 125 000 dollars par an.</p>
<p>Il est satisfaisant de progresser et ça l&#x27;est encore plus avec des outils visuels.</p>
<h2>Système de suivi des habitudes</h2>
<p>C&#x27;est un moyen simple de savoir si vous avez ou non pris une habitude.</p>
<p>Le système le plus simple est un calendrier à rayer tous les jours lorsque vous appliquez votre routine.</p>
<p>Comme Jerry Seinfield avec son carnet de blague à remplir chaque jour. Ne vous occuper pas de la qualité de votre habitude, fixer vous simplement comme objectif de <strong>ne pas briser la chaine</strong>.</p>
<p>Pour éviter d&#x27;être démotivé par le fait de devoir évaluer la progression de vos habitudes, <strong>suivez systématiquement une seule habitude plutôt que dix</strong> et associer la méthode de la <a href="/atomic-habits-james-clear#la-superposition-d&#x27;habitudes" title="superposition d&#x27;habitudes">superposition d&#x27;habitudes</a>  avec le suivi des habitudes :</p>

<p><strong>Après [HABITUDE ACTUELLE], je vais [EFFECTUER UN SUIVI DE MON HABITUDE].</strong></p>
<h2>Évitez &quot;La spirale d&#x27;erreurs répétées&quot; ou &quot;Le cycle tout ou rien&quot;</h2>
<blockquote>
<p>« La première règle de la capitalisation : ne jamais arrêter inutilement. » Charlie Munger</p>
</blockquote>
<p>Personne n&#x27;est parfait, si jamais vous manquer une habitude, appliquez simplement cette règle : &quot;<strong>ne jamais manquer une occasion deux fois</strong>&quot;.</p>
<p>Une erreur n&#x27;est jamais un signe de défaite. C&#x27;est <strong>la spirale d&#x27;erreurs répétées</strong> qui conduit à l&#x27;échec.</p>
<p>Le problème n’est pas la peur de déraper, mais le fait de penser que si nous ne parvenons pas à accomplir quelque chose de façon parfaite, nous ne devrions pas la faire du tout. Donc nous n’essayons même pas…</p>
<p><mark><b>Les journées ratées font plus de dégâts que les journées réussies ne vous aident</b></mark>.</p>
<p><strong>Le cycle tout ou rien</strong> n&#x27;est qu&#x27;un piège qui peut faire déraper vos habitudes.</p>
<p>Ne laissez pas les pertes saper vos éléments de capitalisation.</p>
<p>Si jamais vous manquez un jour, essayez de vous remettre sur la bonne voie le plus rapidement possible.</p>
<h2>La loi de Goodhart</h2>
<p>Lorsqu&#x27;un élément d&#x27;évaluation devient un objectif, il cesse d&#x27;être un élément d&#x27;évaluation.</p>
<h2>Contrat d&#x27;habitude</h2>
<p>Vous pouvez rédiger un <strong>contrat d&#x27;habitude</strong> et demander à un ami ou un proche de surveiller la progression de votre habitude.</p>
<p>Une section portera sur les <strong>sanctions appliquées en cas d&#x27;échec</strong>.</p>
<p>Et la <strong>signature</strong> par tous les partis fera office d&#x27;engagement.</p>
<h2>Partenaire de responsabilité</h2>
<p>Un partenaire de responsabilité peut nous imposer une conséquence immédiate en cas d&#x27;inaction de notre part.</p>
<p>Nous nous soucions énormément de ce que les autres pensent de nous et nous ne voulons pas qu&#x27;ils aient une opinion négative.</p>
<h2>Le principe de Boucles d’Or</h2>
<p>Nous sommes extrêmement motivés lorsque nous exécutons des tâches qui sont à la limite de nos capacités du moment. Pas trop difficiles. Pas trop faciles. Juste au bon niveau de difficulté.</p>
<p>En psychologie, cette approche s&#x27;appelle <a href="/la-loi-de-yerkes-dodson" title="La loi de Yerkes-Dodson" class="not-found">La loi de Yerkes-Dodson</a> qui définit le niveau d&#x27;éveil ou d&#x27;excitation comme le point médian entre l&#x27;ennui et la peur.</p>

<h2>Apprécier l&#x27;ennui</h2>
<blockquote>
<p>« Les hommes désirent la nouveauté à un point tel que ceux qui s&#x27;en sortent bien souhaitent autant un changement que ceux qui s&#x27;en sortent mal » Machiavel</p>
</blockquote>
<p>La plus grande menace au succès n&#x27;est pas l&#x27;échec, mais l&#x27;ennui. On s&#x27;ennuie des habitudes parce qu&#x27;elles nous lassent au fil du temps.</p>
<ul>
<li>Allez à la salle chaque jour</li>
<li>Écrire chaque jour</li>
<li>Appeler des prospects chaque jour</li>
<li>Etc...</li>
</ul>
<p>C&#x27;est la différence entre ceux qui réussissent et les autres, ils ne se lassent pas et trouvent toujours un moyen de continuer malgré le sentiment d&#x27;ennui.</p>
<p>La seule façon de devenir excellent est d&#x27;être fasciné sans cesse en faisant la même chose encore et encore.</p>
<p>Vous devez apprécier l&#x27;ennui.</p>
<h2>Alignez vos habitudes avec vos talents naturels</h2>
<p>Les gènes sont difficilement modifiables, ce qui signifie qu’ils offrent un avantage considérable dans des circonstances favorables et un inconvénient considérable dans des circonstances défavorables.</p>
<p>Si vous voulez être un bon dunkeur au basket, il est très utile de mesurer plus de 2 mètres. Si vous souhaitez pratiquer la gymnastique, mesurer 2 mètres sera plutôt un frein.</p>
<p>Par conséquent, si vous voulez être vraiment bon(ne), choisissez le domaine dans lequel vous avez des prédispositions.</p>
<p>En bref : les gènes ne déterminent pas votre destin.</p>
<p>Les gènes ne déterminent pas votre destin. Ils déterminent vos domaines de compétences.</p>
<p>N&#x27;allez pas à l&#x27;encontre de ce que vous ne pouvez pas contrôler, alignez vos habitudes avec vos talents et prédispositions naturels.</p>
<h2>Plus nous nous attachons à une [[identité]], plus il est difficile de s’en détacher</h2>
<blockquote>
<p>Plus une idée nous parait sacrée, c’est-à-dire qu’elle est plus étroitement liée à notre identité, plus nous la défendons avec force contre la critique.</p>
</blockquote>
<p>Plus vous laissez une conviction vous définir, moins vous êtes capable de vous adapter lorsque la vie vous place devant une difficulté.</p>
<p>Quand on s’accroche trop à une identité, on devient fragile. Si l’on perd cette chose, on se perd soi-même.</p>
<p>Quand vous passez toute votre vie à vous définir par rapport à un élément qui disparait, vous n’avez plus rien qui vous permette de vous identifier…</p>
<p>Pour soulager ces « pertes d’identité », essayez de vous redéfinir en conservant les aspects importants de votre identité même si votre rôle change.</p>
<p>Exemples :</p>
<ul>
<li>« Je suis un athlète » se transforme en « Je suis une personne qui a une force mentale importante et qui aime les efforts physiques ».</li>
<li>« Je suis un grand soldat » se transforme en « Je suis une personne disciplinée, fiable et un excellent élément dans une équipe ».</li>
<li>« Je suis le P.D.G. » se transforme en « Je suis une personne qui bâtit et crée des choses ».</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/2MxbMBE">James Clear - Un rien peut tout changer</a></li>
<li><a href="https://youtube.com/watch?v=Dyliijbw_aQ">Ali Abdaal - 5 Lessons from Atomic Habits in Under 60 Seconds</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais d'ancrage]]></title>
            <link>https://johackim.com/biais-ancrage?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-ancrage</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-ancrage.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-ancrage.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout question">
                    
                    <div class="callout-content">
                        <p>- Qu&#x27;est-ce que le biais d&#x27;ancrage ? Notre tendance à donner plus d&#x27;importance à la première information que l&#x27;on voit.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://yourbias.is/anchoring">https://yourbias.is/anchoring</a></li>
<li><a href="https://braink.it/principles/anchoring">https://braink.it/principles/anchoring</a></li>
<li><a href="https://thedecisionlab.com/biases/anchoring-bias">https://thedecisionlab.com/biases/anchoring-bias</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-guidjlt-dkhjslutd-yd/">https://cm.stackedmarketer.com/t/j-e-guidjlt-dkhjslutd-yd/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais d'optimisme]]></title>
            <link>https://johackim.com/biais-doptimisme?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-doptimisme</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-doptimisme.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-doptimisme.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>L&#x27;être humain a parfois tendance à surestimer le résultat positif d&#x27;une situation donnée. Selon son humeur par exemple.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Biais_d&#x27;optimisme">https://fr.wikipedia.org/wiki/Biais_d&#x27;optimisme</a></li>
<li><a href="https://yourbias.is/optimism-bias">https://yourbias.is/optimism-bias</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais de confirmation]]></title>
            <link>https://johackim.com/biais-de-confirmation?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-de-confirmation</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-de-confirmation.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-de-confirmation.jpg"/>
            <content:encoded><![CDATA[<p>Le biais de confirmation est un <a href="/biais-cognitifs" title="biais cognitif">biais cognitif</a>.</p>

<p><strong>C&#x27;est notre tendance à privilégier les informations qui confirment nos croyances préexistantes et à ignorer le reste.</strong></p>
<p>Ce biais est particulièrement difficile à éviter, car il est souvent inconscient.</p>
<p>Avec ce biais, nous ne voyons que ce que nous voulons voir, et nous ignorons le reste.</p>
<p>Cela nous enferme dans notre bulle et nous empêche de voir les choses sous un angle différent.</p>
<p>Si nous avons une vision negative de nous-même, nous allons sans cesse le confirmer en ne voyant que les éléments qui vont dans ce sens. Ce qui va renforcer cette croyance et nous enfermer dans un cercle vicieux.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Et tout le monde s&#x27;en fout #80 - Toi</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Ton cerveau, il confirme ce que tu crois.En gros, plus tu crois un truc, et plus ton cerveau va sélectionner dans la réalité des détails qui va mettre bout à bout pour te prouver que ce que tu crois, c&#x27;est la vérité.Le cerveau, il renforce ce sur quoi tu poses ton attention tous les jours.Ça ne veut pas dire que ce que tu crois, c&#x27;est faux. Ça veut dire que ce que tu vises détermine ce que tu vois.</p>
                    </div>
                </blockquote>
<p>Pour l&#x27;éviter le plus possible, vous pouvez :</p>
<ul>
<li>Être conscient de son existence (la base)</li>
<li>Chercher activement des informations qui contredisent et réfutent nos croyances</li>
</ul>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Arrêtez de vous tromper - Rolf Dobelli</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Comment nous protéger ?En méditant la phrase d&#x27;Arthur Quiller-Couch: Murder your darlings - « Tuez ce que vous avez de plus cher au monde » .En disant cela, le critique littéraire s&#x27;adressait aux écrivains qui ont souvent la plus grande peine du monde à supprimer des phrases, certes belles, mais superflues.L&#x27;appel de Quiller-Couch ne vaut pas seulement pour les écrivains médiocres, mais pour nous tous.Conclusion : combattez de toutes vos forces le biais de confirmation.Commencez par écrire vos dogmes et vos credo, qu&#x27;il s&#x27;agisse de votre conception du monde en général, des placements financiers, du mariage, de la prophylaxie, des régimes alimentaires ou des stratégies de carrière, puis réfutez-les en vous lançant à la recherche des preuves du contraire.Tuer ses idées favorites est extrêmement difficile, mais faire partie des esprits éclairés est à ce prix.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://yourbias.is/confirmation-bias">https://yourbias.is/confirmation-bias</a></li>
<li><a href="https://simplypsychology.org/confirmation-bias.html">https://simplypsychology.org/confirmation-bias.html</a></li>
<li><a href="https://customercamp.co/confirmation-bias">https://customercamp.co/confirmation-bias</a></li>
<li><a href="https://thedecisionlab.com/biases/confirmation-bias">https://thedecisionlab.com/biases/confirmation-bias</a></li>
<li><a href="https://sketchplanations.com/confirmation-bias">https://sketchplanations.com/confirmation-bias</a></li>
<li><a href="https://braink.it/principles/confirmation-bias">https://braink.it/principles/confirmation-bias</a></li>
<li><a href="https://effectiviology.com/confirmation-bias/">https://effectiviology.com/confirmation-bias/</a></li>
<li><a href="https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/rechk7iXUwQXs18w6">https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/rechk7iXUwQXs18w6</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais de l'aversion à la perte]]></title>
            <link>https://johackim.com/biais-de-laversion-a-la-perte?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-de-laversion-a-la-perte</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-de-laversion-a-la-perte.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-de-laversion-a-la-perte.jpg"/>
            <content:encoded><![CDATA[<p>Notre tendance à préférer éviter de perdre quelque chose plutôt que d&#x27;en gagner une autre.</p>
<p>Nous donnons plus de valeur à ce que nous possédons qu&#x27;à ce que l&#x27;on ne possède pas.</p>
<p>On préfère éviter de perdre 20€ plutôt que de tenter de gagner 20€.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://braink.it/principles/loss-aversion">https://braink.it/principles/loss-aversion</a></li>
<li><a href="https://bjjmentalmodels.com/loss-aversion/">https://bjjmentalmodels.com/loss-aversion/</a></li>
<li><a href="https://customercamp.co/endowment-effect">https://customercamp.co/endowment-effect</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Aversion_%C3%A0_la_d%C3%A9possession">https://fr.wikipedia.org/wiki/Aversion_à_la_dépossession</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-gjrjjuy-dkhjslutd-w/">https://cm.stackedmarketer.com/t/j-e-gjrjjuy-dkhjslutd-w/</a></li>
<li><a href="https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recMYLj5lcRRdjyDh">https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recMYLj5lcRRdjyDh</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais de tribalisme]]></title>
            <link>https://johackim.com/biais-du-tribalisme?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-du-tribalisme</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-du-tribalisme.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-du-tribalisme.jpg"/>
            <content:encoded><![CDATA[<p>Tendance des êtres humains à rejoindre des groupes et à s&#x27;opposer à d&#x27;autres groupes.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/hW7hJ7EyDUA">Marketing Mania - Biais Cognitifs #3 : Tribalisme</a></li>
<li><a href="https://gurwinder.substack.com/i/135417322/npc-the-tribalist">https://gurwinder.substack.com/i/135417322/npc-the-tribalist</a></li>
<li><a href="https://builtformars.com/ux-glossary/tribalism">https://builtformars.com/ux-glossary/tribalism</a></li>
<li><a href="https://effectiviology.com/ingroup-outgroup/">https://effectiviology.com/ingroup-outgroup/</a></li>
<li><a href="https://practicalpie.com/ingroup-bias-definition-examples/">https://practicalpie.com/ingroup-bias-definition-examples/</a></li>
<li><a href="https://practicalpie.com/outgroup-bias-definition-examples/">https://practicalpie.com/outgroup-bias-definition-examples/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais du monde juste]]></title>
            <link>https://johackim.com/biais-du-monde-juste?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-du-monde-juste</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-du-monde-juste.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-du-monde-juste.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Notre tendance à croire à un monde juste où l&#x27;on obtient toujours ce que l&#x27;on mérite et inversement.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://effectiviology.com/just-world/">https://effectiviology.com/just-world/</a></li>
<li><a href="https://yourbias.is/just-world-hypothesis">https://yourbias.is/just-world-hypothesis</a></li>
<li><a href="https://fr.wikipedia.org/wiki/Croyance_en_un_monde_juste">https://fr.wikipedia.org/wiki/Croyance_en_un_monde_juste</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais du survivant]]></title>
            <link>https://johackim.com/biais-du-survivant?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-du-survivant</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-du-survivant.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-du-survivant.jpg"/>
            <content:encoded><![CDATA[<p>Notre tendance à privilégier les succès d&#x27;une histoire plutôt que les échecs.</p>
<p>En oubliant de prendre en compte le contexte qui entoure l&#x27;histoire et en se concentrant principalement sur les exceptions.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">ChatGPT</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Le biais du survivant est un phénomène statistique se produisant lorsque la sélection de données ou d&#x27;entreprises présentes dans un échantillon est biaisée en faveur des réussites ou des survivants. Cela peut donner une image distordue de la performance réelle des entreprises ou des investissements, car les échecs ou les cas non présents ne sont pas pris en compte. Par conséquent, le biais du survivant peut sous-estimer les taux de défaillance ou de défaillance et donner une image optimiste de la performance.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Biais_des_survivants">https://fr.wikipedia.org/wiki/Biais_des_survivants</a></li>
<li><a href="https://jamesclear.com/common-mental-errors">https://jamesclear.com/common-mental-errors</a></li>
<li><a href="https://customercamp.co/survivorship-bias/">https://customercamp.co/survivorship-bias/</a></li>
<li><a href="https://thedecisionlab.com/biases/survivorship-bias">https://thedecisionlab.com/biases/survivorship-bias</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-wkdiktt-dkhjslutd-s/">https://cm.stackedmarketer.com/t/j-e-wkdiktt-dkhjslutd-s/</a></li>
<li><a href="https://sketchplanations.com/survivorship-bias-silent-evidence">https://sketchplanations.com/survivorship-bias-silent-evidence</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Biais narratif]]></title>
            <link>https://johackim.com/biais-narratif?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/biais-narratif</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/biais-narratif.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/biais-narratif.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Notre tendance à chercher coûte que coûte une explication logique à chaque histoire quitte à en inventer une et à négliger la vérité brute.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">ChatGPT</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Le biais narratif est un phénomène où une histoire ou une narration est influencée par les préférences, les opinions ou les croyances de l&#x27;auteur ou du conteur. Cela peut se manifester de différentes manières, comme en choisissant certaines informations à inclure ou à exclure, en présentant les faits de manière partiale ou en donnant une interprétation subjective des événements. Le biais narratif peut être conscient ou inconscient, et peut avoir un impact sur la façon dont les auditeurs ou les lecteurs perçoivent l&#x27;histoire ou les personnages.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtu.be/4wHgOgB4x9M">Marketing Mania - Biais Cognitifs #2 : Biais Narratif</a></li>
<li>Nassim Taleb - Le Cygne Noir</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment créer un thème Obsidian ?]]></title>
            <link>https://johackim.com/creer-un-theme-obsidian?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-theme-obsidian</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-theme-obsidian.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-theme-obsidian.jpg"/>
            <content:encoded><![CDATA[<p>Voici un tutoriel pour créer un thème <a href="/obsidian" title="Obsidian">Obsidian</a>.</p>

<h2>Créer un fichier.css</h2>
<p>Créer un fichier CSS <code>nomdutheme.css</code> dans le dossier <code>.obsidian/themes</code> de votre Vault Obsidian.</p>
<p>Ce fichier contient simplement les couleurs (en valeur hexadécimale) des éléments de votre thème (texte, blocs de code, fonds, etc...).</p>
<p>Vous pouvez vous inspirer de mon thème qui va overrider le thème <code>light</code> et <code>dark</code> par défaut d&#x27;Obsidian :</p>
<pre><code class="language-css">/* vault/.obsidian/themes/darkyan.css */

.theme-light,
.theme-dark {
    --background-primary:         #111827;
    --background-primary-alt:     #111827;
    --background-secondary:       #1F2937;
    --background-secondary-alt:   #1F2937;
    --text-normal:                #D1D5DB;
    --text-faint:                 #D1D5DB;
    --text-title-h1:              #D1D5DB;
    --text-title-h2:              #D1D5DB;
    --text-title-h3:              #D1D5DB;
    --text-title-h4:              #D1D5DB;
    --text-title-h5:              #D1D5DB;
    --text-title-h6:              #D1D5DB;
    --text-highlight-bg:          #374151;
    --text-link:                  #D1D5DB;
    --text-a-hover:               #D1D5DB;
    --inline-code:                #D1D5DB;
    --code-block:                 #D1D5DB;
    --text-a:                     #D1D5DB;
    --interactive-accent:         #00AAAD;
    --text-accent:                #00AAAD;
    --text-accent-hover:          #00AAAD;
    --text-on-accent:             #D1D5DB;
    --interactive-accent-rgb:     #D1D5DB;
    --interactive-accent-hover:   #00AAAD;
    --vim-cursor:                 #D1D5DB;
    --pre-code:                   #000000;
    --interactive-before:         #374151;
    --background-modifier-border: #374151;
    --text-selection:             #374151;
    --text-faint:                 #4B5563;
}
</code></pre>
<h2>Activer le thème</h2>
<p>Une fois le fichier créé, vous pouvez activer votre thème depuis les paramètres dans le menu suivant :</p>
<p>Settings -&gt; Appearance -&gt; Themes -&gt; Theme -&gt; NomDeVotreTheme</p>
<h2>Publier un thème</h2>
<p>J&#x27;ai récemment créé un thème, vous pouvez l&#x27;utiliser en vous rendant sur le dépôt Github <a href="https://github.com/johackim/obsidian-darkyan/">johackim/obsidian-darkyan</a>.</p>
<p>Pour publier son thème dans les thèmes de la communauté d&#x27;Obsidian, créez une pull request sur le dépôt <a href="https://github.com/obsidianmd/obsidian-releases/pull/356">obsidianmd/obsidian-releases</a>.</p>
<p>Une fois la pull request accepté, il apparaitra dans la liste des thèmes d&#x27;Obsidian dans Settings -&gt; Appearance -&gt; Themes -&gt; Community themes.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Démarrer une application GUI avec SSH]]></title>
            <link>https://johackim.com/demarrer-une-application-gui-avec-ssh?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/demarrer-une-application-gui-avec-ssh</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/demarrer-une-application-gui-avec-ssh.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/demarrer-une-application-gui-avec-ssh.jpg"/>
            <content:encoded><![CDATA[<p>Voici un petit tutoriel pour lancer une application graphique à distance via SSH.</p>
<h2>1. Activer le X11 Forwarding</h2>
<p>Commencez par ajouter le paramètre <code>X11Forwarding yes</code> au fichier <code>/etc/ssh/sshd_config</code> de votre serveur puis redémarrer votre serveur SSH :</p>
<pre><code class="language-bash">echo &#x27;X11Forwarding yes&#x27; | sudo tee -a /etc/ssh/sshd_config
sudo systemctl restart sshd
</code></pre>
<h2>2. Lancer votre application</h2>
<p>Connectez-vous à votre serveur via une commande SSH avec le paramètre <code>-X</code> suivi du nom de votre application (ex : <code>mousepad</code>) :</p>
<pre><code class="language-bash">ssh -X &lt;user&gt;@&lt;ip&gt; mousepad
</code></pre>
<h2>3. Optimiser la vitesse d&#x27;affichage</h2>
<p>Pour accélérer la vitesse d&#x27;affichage, vous pouvez activer la compression avec le paramètre <code>-C</code> et utiliser un cipher plus rapide (ex : <code>aes128-ctr</code>) :</p>
<pre><code class="language-bash">ssh -X -C -c aes128-ctr &lt;user&gt;@&lt;ip&gt;
</code></pre>
<p>Pour consulter la liste des ciphers disponibles de votre serveur SSH, utilisez la commande <code>sudo sshd -T | grep -i cipher</code>.</p>
<p>Activez le multiplexing en ajoutant les lignes suivantes dans le fichier <code>~/.ssh/config</code> de votre machine hôte :</p>
<pre><code class="language-txt">Host *
    ControlMaster auto
    ControlPath ~/.ssh/%r@%h:%p
</code></pre>
<p>Maintenant vous avez accès à vos applications graphiques distantes directement depuis votre machine hôte 😀🎉.</p>
<p>PS : Si comme moi vous rencontrez un problème de touche de clavier non fonctionnelle (ex : AltGr), utilisez le paramètre <code>-Y</code> au lieu de <code>-X</code>.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/ssh" title="SSH" class="not-found">SSH</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'effet de halo]]></title>
            <link>https://johackim.com/leffet-de-halo?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/leffet-de-halo</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/leffet-de-halo.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/leffet-de-halo.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Notre tendance à juger une chose ou une personne selon la première impression qu&#x27;elle nous a fait.</p>
<p>Notre perception globale d&#x27;une personne ou d&#x27;une chose peut être influencé positivement ou négativement selon un trait spécifique.</p>
<p>Exemples :</p>
<ul>
<li>Un élève bon en mathématique jugé très bon dans toutes les matières par un professeur</li>
<li>Une personne sympathique jugée intelligente, drôle et gentil</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Effet_de_halo">https://fr.wikipedia.org/wiki/Effet_de_halo</a></li>
<li><a href="https://fronterablog.com/halo-effect/">https://fronterablog.com/halo-effect/</a></li>
<li><a href="https://thedecisionlab.com/biases/halo-effect">https://thedecisionlab.com/biases/halo-effect</a></li>
<li><a href="https://effectiviology.com/halo-effect/">https://effectiviology.com/halo-effect/</a></li>
<li><a href="https://braink.it/principles/halo-effect">https://braink.it/principles/halo-effect</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-wyuydhy-dkhjslutd-yh/">https://cm.stackedmarketer.com/t/j-e-wyuydhy-dkhjslutd-yh/</a></li>
<li><a href="https://airtable.com/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recuwMDLiVwaywCQJ">https://airtable.com/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recuwMDLiVwaywCQJ</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'effet de simple exposition]]></title>
            <link>https://johackim.com/leffet-de-simple-exposition?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/leffet-de-simple-exposition</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/leffet-de-simple-exposition.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/leffet-de-simple-exposition.jpg"/>
            <content:encoded><![CDATA[<p>Plus nous somme exposé à quelque chose, plus nous lui faisons confiance et plus nous l&#x27;apprécions.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://customercamp.co/mere-exposure-effect/</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>The more we see something, the more we come to like and trust it.</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">ChatGPT</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>La tendance à développer une préférence pour les choses simplement parce qu&#x27;elles nous sont familières.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Effet_de_simple_exposition">https://fr.wikipedia.org/wiki/Effet_de_simple_exposition</a></li>
<li><a href="https://psychologyofmarketing.beehiiv.com/p/mereexposureeffect">https://psychologyofmarketing.beehiiv.com/p/mereexposureeffect</a></li>
<li><a href="https://thedecisionlab.com/biases/mere-exposure-effect">https://thedecisionlab.com/biases/mere-exposure-effect</a></li>
<li><a href="https://customercamp.co/mere-exposure-effect/">https://customercamp.co/mere-exposure-effect/</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-gjdlkkt-dkhjslutd-yk/">https://cm.stackedmarketer.com/t/j-e-gjdlkkt-dkhjslutd-yk/</a></li>
<li><a href="https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recRsPDyFe3Ir5hkt">https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recRsPDyFe3Ir5hkt</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'illusion des séries]]></title>
            <link>https://johackim.com/lillusion-des-series?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/lillusion-des-series</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 11 Jul 2021 09:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/lillusion-des-series.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/lillusion-des-series.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Notre tendance à voir des coïncidences dans des événements aléatoires.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Illusion_des_s%C3%A9ries">https://fr.wikipedia.org/wiki/Illusion_des_séries</a></li>
<li><a href="https://cm.stackedmarketer.com/t/j-e-sduhlud-dkhjslutd-m/">https://cm.stackedmarketer.com/t/j-e-sduhlud-dkhjslutd-m/</a></li>
<li><a href="https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recjinPlAyVQ1JAB1">https://airtable.com/embed/appxNZXuZNjGSSgWd/shrWQJMeUgovoXXFn/tblCvctOnCclo1rGA/viwnS04dUc501ZzLp/recjinPlAyVQ1JAB1</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Débugger un site internet sur iPad depuis Linux]]></title>
            <link>https://johackim.com/debugger-un-site-internet-sur-ipad-depuis-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/debugger-un-site-internet-sur-ipad-depuis-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 05 Jul 2021 16:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/debugger-un-site-internet-sur-ipad-depuis-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/debugger-un-site-internet-sur-ipad-depuis-linux.jpg"/>
            <content:encoded><![CDATA[<p>J&#x27;ai rencontré un problème d&#x27;affichage d&#x27;un de mes sites sur iPad, du coup, pour débugger ça depuis mon ordinateur sous <a href="/linux" title="Arch Linux">Arch Linux</a>, j&#x27;ai utilisé le package <code>ios-webkit-debug-proxy</code>.</p>

<h2>Installer le package ios-webkit-debug-proxy</h2>
<p>Commencez par installer le package <code>ios-webkit-debug-proxy</code> :</p>
<pre><code class="language-bash">yay -S --noconfirm ios-webkit-debug-proxy
</code></pre>
<h2>Brancher l&#x27;ipad</h2>
<p>Brancher l&#x27;iPad, puis exécutez les commandes suivantes :</p>
<pre><code class="language-bash">sudo systemctl restart usbmuxd
sudo idevice_id -l
ios_webkit_debug_proxy
</code></pre>
<h2>Accez à l&#x27;outil devtools</h2>
<p>Rendez-vous sur <a href="http://localhost:9222/">http://localhost:9222/</a> pour accéder à l&#x27;outil devtools.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Démarrer un serveur HTTP en ligne de commande]]></title>
            <link>https://johackim.com/demarrer-un-serveur-http-en-ligne-de-commande?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/demarrer-un-serveur-http-en-ligne-de-commande</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 05 Jul 2021 16:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/demarrer-un-serveur-http-en-ligne-de-commande.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/demarrer-un-serveur-http-en-ligne-de-commande.jpg"/>
            <content:encoded><![CDATA[<p>Il existe plusieurs façons de démarrer un serveur HTTP en ligne de commande.</p>
<h2>Python</h2>
<pre><code class="language-bash">python3 -m http.server 5000
</code></pre>
<h2>PHP</h2>
<pre><code class="language-bash">php -S 0.0.0.0:5000
</code></pre>
<h2>Nodejs (http-server)</h2>
<pre><code class="language-bash">npm i -g http-server
http-server -p 5000
</code></pre>
<h2>Nodejs (serve)</h2>
<pre><code class="language-bash">npm i -g serve
serve
</code></pre>
<h2>Miniserve</h2>
<pre><code class="language-bash">sudo pacman -S miniserve
miniserve
</code></pre>
<h2>Webfsd</h2>
<pre><code class="language-bash">yay -S --noconfirm webfs
webfsd -F -p 5000
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://gist.github.com/willurd/5720255">https://gist.github.com/willurd/5720255</a></li>
<li><a href="https://github.com/rejetto/hfs/">https://github.com/rejetto/hfs/</a></li>
<li>
<a href="/nginx" title="Nginx" class="not-found">Nginx</a>

</li>
<li>
<a href="/apache" title="Apache" class="not-found">Apache</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Générer dynamiquement des images avec node-canvas]]></title>
            <link>https://johackim.com/generer-dynamiquement-des-images-avec-node-canvas?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/generer-dynamiquement-des-images-avec-node-canvas</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 05 Jul 2021 16:31:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/generer-dynamiquement-des-images-avec-node-canvas.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/generer-dynamiquement-des-images-avec-node-canvas.jpg"/>
            <content:encoded><![CDATA[<p>Pour générer des images de manière dynamique en Node.js, il existe la librairie <code>node-canvas</code> :</p>
<pre><code class="language-bash">yarn add -D canvas canvas-txt
</code></pre>
<pre><code class="language-js">// script.js
const fs = require(&#x27;fs&#x27;);
const { createCanvas } = require(&#x27;canvas&#x27;);
const { default: canvasTxt } = require(&#x27;canvas-txt&#x27;);

const createImage = (text, path = &#x27;image.jpg&#x27;, width = 1600, height = 900) =&gt; {
    const canvas = createCanvas(width, height);
    const ctx = canvas.getContext(&#x27;2d&#x27;);

    ctx.fillStyle = &#x27;#101827&#x27;;
    ctx.fillRect(0, 0, width, height);

    canvasTxt.fontSize = 72;
    canvasTxt.fontWeight = 500;
    canvasTxt.font = &#x27;Roboto&#x27;;
    canvasTxt.align = &#x27;center&#x27;;
    canvasTxt.vAlign = &#x27;middle&#x27;;
    ctx.fillStyle = &#x27;#E5E7EB&#x27;;
    canvasTxt.drawText(ctx, text, 0, canvas.height / 4, canvas.width - 10, canvas.height / 2);

    const buffer = canvas.toBuffer(&#x27;image/jpeg&#x27;);
    fs.writeFileSync(path, buffer);
};

createImage(&#x27;Hello World!&#x27;);
</code></pre>
<p>Lorsque j&#x27;exécute ce script (<code>node script.js</code>), une image avec un fond gris et un texte blanc &quot;Hello World!&quot; sera créée.</p>
<p>C&#x27;est cette librairie que j&#x27;utilise pour générer automatiquement toutes les previews de mon <a href="https://johackim.com">Digital Garden</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/programmation" title="Programmation">Programmation</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un ebook à partir d'un fichier markown]]></title>
            <link>https://johackim.com/creer-un-ebook-a-partir-d&apos;un-fichier-markown?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-ebook-a-partir-d&apos;un-fichier-markown</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-ebook-a-partir-d&apos;un-fichier-markown.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-ebook-a-partir-d&apos;un-fichier-markown.jpg"/>
            <content:encoded><![CDATA[<p>Pour créer un ebook à partir d&#x27;un fichier markdown, il est possible d&#x27;utiliser Pandoc sur <a href="/linux" title="Linux">Linux</a>.</p>

<h2>Installation de Pandoc sur Linux</h2>
<p>Sur Ubuntu et Debian :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -y pandoc texlive texlive-latex-extra
</code></pre>
<p>Sur Arch Linux :</p>
<pre><code class="language-bash">pacman -S --noconfirm pandoc texlive-bin texlive-core
</code></pre>
<h2>Création d&#x27;un ebook au format epub</h2>
<pre><code class="language-bash">pandoc input.md -o output.epub
</code></pre>
<h2>Création d&#x27;un ebook au format pdf</h2>
<pre><code class="language-bash">pandoc input.md -o output.pdf
</code></pre>
<h2>Création d&#x27;un ebook au format mobi</h2>
<pre><code class="language-bash">pandoc input.md -o output.mobi
</code></pre>
<h2>Création d&#x27;un ebook avec Docker</h2>
<pre><code class="language-bash">docker run -it -v $PWD:/mnt pandoc/core input.md -o /mnt/output.mobi
</code></pre>
<h2>Ajouter une cover</h2>
<p>Pour ajouter une cover :</p>
<pre><code class="language-bash">pandoc input.md --epub-cover-image cover.png -o output.epub
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Digital Garden]]></title>
            <link>https://johackim.com/digital-garden?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/digital-garden</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/digital-garden.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/digital-garden.jpg"/>
            <content:encoded><![CDATA[<p>Un jardin numérique (en anglais : digital garden) est un espace en ligne qui se trouve à l&#x27;intersection d&#x27;un carnet de notes et d&#x27;un blog, où des graines de pensées sont partagés et cultivés en public.</p>
<blockquote>
<p>The phrase &quot;digital garden&quot; is a metaphor for thinking about writing and creating that focuses less on the resulting &quot;showpiece&quot; and more on the process, care, and craft it takes to get there. - Joel Hooks</p>
</blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://joelhooks.com/digital-garden">https://joelhooks.com/digital-garden</a></li>
<li><a href="https://tomcritchlow.com/2019/02/17/building-digital-garden/">https://tomcritchlow.com/2019/02/17/building-digital-garden/</a></li>
<li><a href="https://technologyreview.com/2020/09/03/1007716/digital-gardens-let-you-cultivate-your-own-little-bit-of-the-internet/">https://technologyreview.com/2020/09/03/1007716/digital-gardens-let-you-cultivate-your-own-little-bit-of-the-internet/</a></li>
<li><a href="https://maggieappleton.com/garden-history">https://maggieappleton.com/garden-history</a></li>
<li><a href="https://nesslabs.com/digital-garden-set-up">https://nesslabs.com/digital-garden-set-up</a></li>
<li>Michael Simmons - Digital Garden Mastery Manual</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Extraire les sous-titres d'une vidéo YouTube]]></title>
            <link>https://johackim.com/extraire-les-sous-titres-d&apos;une-video-youtube?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/extraire-les-sous-titres-d&apos;une-video-youtube</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/extraire-les-sous-titres-d&apos;une-video-youtube.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/extraire-les-sous-titres-d&apos;une-video-youtube.jpg"/>
            <content:encoded><![CDATA[<p>Pour extraire les sous-titres d&#x27;une vidéo YouTube, il existe à ma connaissance 2 solutions efficaces.</p>
<h2>Savesubs.com</h2>
<p>Vous pouvez vous rendre sur le site <a href="https://savesubs.com/">savesubs.com</a> et insérer l&#x27;URL de votre vidéo YouTube.</p>
<p>Le service vous retournera un fichier au format <code>.srt</code> ou <code>.txt</code> de votre vidéo à télécharger.</p>
<h2>Youtube-dl</h2>
<p>Ou alors, vous pouvez utiliser le logiciel <code>youtube-dl</code> accessible en ligne de commande :</p>
<pre><code class="language-bash">youtube-dl --write-auto-sub --sub-lang &lt;lang&gt; --skip-download &lt;youtube_video&gt;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/NotJoeMartinez/yt-fts">https://github.com/NotJoeMartinez/yt-fts</a></li>
<li><a href="https://filmot.com/">https://filmot.com/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre How I Found Freedom in an Unfree World de Harry Browne]]></title>
            <link>https://johackim.com/how-i-found-freedom-in-an-unfree-world-harry-browne?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/how-i-found-freedom-in-an-unfree-world-harry-browne</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/how-i-found-freedom-in-an-unfree-world-harry-browne.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/how-i-found-freedom-in-an-unfree-world-harry-browne.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Jusqu&#x27;à présent le meilleur livre que j&#x27;ai lu dans ma vie. C&#x27;est un livre qui date de 1973 et qui parle en profondeur du sujet de la liberté.</p>
<p>L&#x27;auteur y partage sa philosophie et ses principes de vie de manière très pragmatique.</p>
<h2>Pourquoi vous n&#x27;êtes pas libre ?</h2>
<h3>1. Les Pièges Identitaires</h3>
<blockquote>
<p>The purpose of knowing &quot;truth&quot; is to be able to make it work for you.</p>
</blockquote>
<p>Il existe deux pièges :</p>
<ol>
<li>La croyance que vous devez être quelqu&#x27;un d&#x27;autre que vous-même.</li>
<li>La croyance que les autres agiront de la même façon que vous le feriez si vous étiez à leur place.</li>
</ol>
<p>Chaque personne est unique.</p>
<p>De la même façon que personne n&#x27;a la même empreinte digital que vous, personne n&#x27;a les même connaissances, la même compréhension, la même atitude et les mêmes désirs que vous.</p>
<p>Votre façon d&#x27;interpréter le monde est différente de celle des autres.</p>
<p>Et tout comme vous, chaque personne agira en accord avec sa propre identité.</p>
<p>Vous ne pouvez pas contrôler la nature d&#x27;autres personnes.</p>
<p>Vous êtes dans <strong>le piège de l&#x27;identité</strong> lorsque vous laissez les autres déterminer ce qui est bien ou mal pour vous.</p>
<p>Exemples :</p>
<ul>
<li>Faires de longues études parce que c&#x27;est &quot;important&quot; d&#x27;avoir un &quot;vrai&quot; métier</li>
<li>Offrir un cadeau à chaque anniversaire parce que c&#x27;est plus poli.</li>
<li>Acheter une belle voiture pour prouver que vous avez &quot;réussi&quot;</li>
</ul>
<p>De cette manière, vous permettez à quelqu&#x27;un d&#x27;autre de déterminer ce que vous devez penser et être.</p>
<p>Lorsque vous allez sur ce chemin, vous niez votre propre identité.</p>
<p>N&#x27;essayez pas de vous identifier à une personne idéale, à une étiquette ou à un code que les autres pensent être le meilleur pour vous.</p>
<p>Ce n&#x27;est pas vous.</p>
<h3>2. Les Pièges Intellectuels et Émotionnels</h3>
<h3>3. Le Piège du Groupe</h3>
<blockquote>
<p>Et quand quelqu’un vous accuse d’être égoïste, souvenez-vous simplement qu’il est bouleversé uniquement parce que vous ne faites pas ce qu’il veut égoïstement que vous fassiez. Harry Browne</p>
</blockquote>
<h2>Comment devenir libre ?</h2>
<p>TODO</p>
<h2>Conclusion</h2>
<p>TODO</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/3oMmsza">Harry Browne - How I Found Freedom in an Unfree World</a></li>
<li><a href="https://copywriting-facile.tv/how-i-found-freedom-in-an-unfree-world-harry-browne/">Résumé du livre sur le site de Matthieu Deloison</a></li>
<li><a href="https://des-livres-pour-changer-de-vie.com/comment-je-suis-devenu-libre-dans-un-monde-qui-ne-lest-pas/">Résumé du livre sur le site d&#x27;Olivier Roland</a></li>
<li><a href="https://nateliason.com/notes/freedom-unfree-world-harry-browne">Résumé du livre sur le site de Nat Eliason</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ikigai]]></title>
            <link>https://johackim.com/ikigai?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ikigai</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ikigai.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ikigai.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/zFJjSnt.jpg"/><p><strong>Ikigai est un concept japonais qui pourrai se traduire par « le bonheur d’être toujours occupé » ou « raison d&#x27;être ».</strong></p>
<p><img src="https://i.imgur.com/zFJjSnt.jpg" alt="Ikigai|250"/></p>
<p>Selon les natifs de l’île d’Okinawa au Japon, l’ikigai est « la raison pour laquelle nous nous levons chaque matin ».</p>
<p>En japonais, il n’existe pas de terme signifiant prendre sa retraite avec le sens exact que nous lui attribuons en Occident. Selon Jan Buettner, journaliste au National Geographic qui connaît bien le pays nippon, « avoir un but vital est si important dans cette culture que les Japonais ne connaissent pas notre concept de retraite. ».</p>
<p>L&#x27;ikigai se divise en 4 parties :</p>
<h2>1. Ce que tu aimes</h2>
<p><strong>Notez toutes les choses qui vous rendent heureux et épanoui</strong>. Écrivez tout ce qui vous passe par la tête, sans réfléchir. Soyez parfaitement sincère et concentrez-vous uniquement sur ce qui vous passionne. Vous aimez dormir à la belle étoile ? Notez-le ! Cuisiner un nouveau plat vous rend heureux ? Notez-le ! Ne vous préoccupez pas de l’opinion des autres, ne vous demandez pas si c’est utile ou bien pour la société. L’objectif est d’écrire tout ce qui vous procure du bonheur. Terminez chaque phrase par « … me rend heureux ».</p>
<h2>2. Ce dont le monde a besoin</h2>
<p>L’un des secrets pour nous accomplir en tant qu’êtres humains est de nous sentir utiles pour les personnes qui nous entourent.</p>
<p>Dans ce deuxième quadrant, vous <strong>écrirez ce dont les autres ont besoin</strong> ; pas uniquement vos amis et votre famille, mais tous les gens ! Vous pouvez construire vos phrases de la manière suivante : « Ma chère (mon cher)… a besoin… » Vous pouvez ensuite écrire « Le monde a besoin… » ou des choses plus concrètes : « Mes collègues de travail ont besoin… » ou « Le collège de mes enfants a besoin… »</p>
<h2>3. Ce pour quoi tu peux être rémunéré</h2>
<p>Dans cette troisième section, vous pouvez <strong>noter tout ce qui vous permet de gagner votre vie actuellement, sans vous demander si cela vous rend heureux ou non</strong>. Contentez-vous d’écrire : « Aujourd’hui, je gagne ma vie en… » Pour finir, pensez à d’autres sources de revenus envisageables, avec des phrases comme : « Dans le futur, j’aimerais gagner ma vie en… »</p>
<h2>4. Ce pour quoi tu es doué</h2>
<p>Laissez de côté ce que les autres vous ont dit et écrivez ici ce que vous pensez sincèrement. Dans ce quadrant, <strong>commencez vos phrases par : « Je suis doué pour… »</strong> En plus des qualités que vous possédez déjà, réfléchissez aux aptitudes que vous pouvez développer si vous vous en donnez les moyens : « Dans le futur, je pourrais être doué pour… si je m’en donne les moyens en… »</p>
<p>Une fois rempli, l&#x27;ordre du plus important au moins important selon moi est celui-ci :</p>
<ol>
<li>Ce dont le monde a besoin</li>
<li>Ce pour quoi tu peux être rémunéré</li>
<li>Ce que j&#x27;aime</li>
<li>Ce pour quoi tu es doué</li>
</ol>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/ikigai-hector-garcia" title="IKIGAI - Héctor Garcia" class="not-found">IKIGAI - Héctor Garcia</a>

</li>
<li><a href="https://fourminutebooks.com/ikigai/">https://fourminutebooks.com/ikigai/</a></li>
<li><a href="https://nesslabs.com/ikigai">https://nesslabs.com/ikigai</a></li>
<li><a href="https://42courses.com/blog/home/2018/7/12/the-japanese-method-to-help-you-find-your-purpose-in-life">https://42courses.com/blog/home/2018/7/12/the-japanese-method-to-help-you-find-your-purpose-in-life</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre L'autoroute du millionnaire de MJ Demarco]]></title>
            <link>https://johackim.com/lautoroute-du-millionaire-mj-demarco?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/lautoroute-du-millionaire-mj-demarco</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/lautoroute-du-millionaire-mj-demarco.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/lautoroute-du-millionaire-mj-demarco.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Étudiez les millionnaires inconnu du grand publique</h2>
<p>Vous n&#x27;avez pas besoin d&#x27;avoir nécessairement du talent physique ou être célèbre pour gagner beaucoup d&#x27;argent.</p>
<p>Rapprocher vous des personnes de moins de 35 ans qui ont réussi en partant de rien.</p>
<p>Étudier les millionnaires qui ne sont pas des célébrités. Trouver et/ou demandez leur comment ils gagnent leurs vie.</p>
<h2>Changer d&#x27;environnement</h2>
<p>MJ Demarco est partie à Phoenix avec 900 $ en poche, pas de boulot, pas d’amis, pas de famille, un vieux matelas, une Buick Skylark toute rouillée et plusieurs centaines de livres.</p>
<p>Il est aller vivre dans un petit studio dans le centre de Phoenix qu&#x27;il louait pour 475 $ par mois.</p>
<p>Pas de chambre à coucher, pas de meubles, juste un matelas qui envahissait la cuisine.</p>
<blockquote>
<p>Je vivais pauvre et sans aucune sécurité, mais je me sentais riche. <strong>J’avais le contrôle de ma vie</strong>.</p>
</blockquote>
<h2>Trouver un problème à résoudre</h2>
<p>Si vous rencontrez un problème et qu&#x27;il n&#x27;existe pas de solution viable connu, c&#x27;est qu&#x27;il existe surement d&#x27;autres personnes dans la même situation que vous.</p>
<p>Résolvez un problème que vous rencontrez afin d&#x27;aider d&#x27;autres personnes comme vous dans le besoin.</p>
<blockquote>
<p>Si je vivais à Chicago, mais que j’avais besoin d’une limousine à New York, où irais-je pour en trouver une ? Je n’avais pas d’annuaire des pages jaunes de New York sous la main, comme probablement tous ceux qui n’habitaient pas New York. Confronté à cette question, j’ai déduit que la même question se poserait pour d’autres voyageurs. Alors j’ai créé un site web pour résoudre ce problème.</p>
</blockquote>
<h2>Processus vs. événement</h2>
<p><mark><b>La richesse est un processus, pas un événement. Sans processus, il n&#x27;y a pas d&#x27;événement</b></mark>.</p>
<p>C’est le processus qui fait les millionnaires, et les événements que vous voyez et dont vous entendez parler sont le résultat de ce processus.</p>
<p>La richesse échappe à beaucoup de gens parce qu’ils s’intéressent aux événements et ignorent les processus.</p>
<p>Pour un chef cuisinier, la cuisine est le processus, et le repas est l’événement.</p>
<p>Le processus engendre des événements que les autres voient comme le fruit de la chance. La chance n’est pas un événement mais la conséquence d’un processus.</p>
<p>La plupart des gens adorent les événements mais détestent les processus, car cela demande des sacrifices que peu de gens font, pour mener la vie que peu de gens vivent.</p>
<h2>Surveillez vos croyances</h2>
<p><a href="/croyance" title="Les croyances" class="not-found">Les croyances</a> précèdent les choix, qui eux-mêmes précèdent les actions.</p>

<p><mark>Qu’elles soient vraies ou non</mark>, les croyances sont des mécanismes puissants à l’origine des actions.</p>
<p>Si vous voulez changer de vie, changez de choix. Pour changer de choix, vous devez changer de système de croyances.</p>
<h2>La médiocrité</h2>
<p>Les personnes médiocres arrêtent d&#x27;apprendre après leur études.</p>
<p>Ils ne prennent aucune <a href="/responsabilite" title="Responsabilité" class="not-found">Responsabilité</a>, remettent la faute sur les autres et comptent sur les homme politiques et le gouvernement pour les aider. Ils pensent que tout leur est dù (soins médicaux gratuits, éducation gratuite, essence gratuite, remboursement d’emprunt immobilier gratuit).</p>

<p>Ils vivent au jour le jour, joue au Loto, au casino et achètent irrationnellement de quoi impréssionner les autres, des vêtements de marque, des accessoires et des loisirs proportionnels à leurs revenus.</p>
<p>Ils préviligient toujours les actions à <a href="/satisfaction-immediate-vs.-satisfaction-differeres" title="Satisfaction immédiate aux actions à satisfaction différérés" class="not-found">Satisfaction immédiate aux actions à satisfaction différérés</a>.</p>

<p>Il y a toujours plus d’argent qui sort que d’argent qui rentre.</p>
<p>Leur plan c&#x27;est de n&#x27;avoir aucun plan.</p>
<p>Et lorsque ils gagnent « plus d’argent », ils perdent en liberté au lieu d’en gagner. En générant un asservissement à leur style de vie.</p>
<p>Ce n’est pas eux qui possèdent l’argent, c’est l’argent qui les possède.</p>
<h2>La vrai richesse (la trilogie de la richesse)</h2>
<p>La richesse ne provient pas de possessions matérielles, d’argent ou de « choses », mais de trois éléments fondamentaux : la famille (les relations), la forme physique (la santé) et la liberté (le choix).</p>
<p>C&#x27;est de pouvoir payer comptant un bien (ex: une maison, une voiture) sans faire de crédit.</p>
<p>On est riche quand on a des relations familiales solides, la forme et la santé, et la liberté et non des possessions matérielles.</p>
<h2>Prenez vos responsabilités</h2>
<p>Les gens qui n’acceptent pas de prendre des responsabilités sont des victimes.</p>
<p>Prenez vos responsabilités et assumez les.</p>
<p>Si vous n’acceptez pas ni n’assumez vos responsabilités, vous donnez les clefs de votre vie à quelqu’un d’autre.</p>
<h2>L&#x27;équation de la voie lente</h2>
<p>Allez à l’école, ayez de bonnes notes, décrochez un diplôme. Grimpez les échelons de la hiérarchie. Épargnez x % de votre salaire. Contribuez à votre plan d’épargne retraite.</p>
<p>Troquez 5 jours de labeurs par semaine contre 2 jours de liberté.</p>
<p>Richesse = source de revenus principale (le travail) + accélérateur de richesse (placements boursiers).</p>
<p>Autrement dit, Richesse = valeur intrinsèque (salaire horaire × nombre d’heures travaillées ou salaire annuel) + intérêts composés (« placements boursiers », concept universel selon lequel x dollars investis en Bourse aujourd’hui vaudront x millions de dollars dans des décennies.).</p>
<h2>Le problème des compétences spécialisés</h2>
<p>Le problème, quand vous avez des compétences spécialisées, c’est que ça restreint votre valeur à un nombre limité de besoins du marché.</p>
<p>Vous devenez l’une des nombreuses roues d’un engrenage. Et si cette roue devient obsolète ou superflue ? Ah ben, dommage pour vous.</p>
<h2>Le levier limité incontôlable</h2>
<p>Pour attirer de grosses sommes d’argent, il faut deux choses :</p>
<ol>
<li>Le contrôle</li>
<li>L’effet de levier</li>
</ol>
<p>La voie lente n&#x27;a aucun des deux.</p>
<p>La source de revenue principale provient d&#x27;un emploi et lle facteur d&#x27;accélaration de la richesse provient des investissements financiers (ex: plan d&#x27;épargne).</p>
<p>Dans un emploi, on gagne de l&#x27;argent par la valeur intrinsèque qui se mesure en unités de temps (ex: 10€ de l&#x27;heure ou 120 000€ par an).</p>
<p>L&#x27;argent que vous gagnez est donc directement corrélé avec le temps passer que vous passer à travailler. Et comme votre temps est limité à des journées de 24 heures, vous ne pouvez pas gagner plus que votre tarif horraire.</p>
<p>Dans un emploi, vous avez peu voir aucun contrôle sur votre salaire. Vous ne pouvez pas passer de 50 000€ à 50 millions de salaire par an.</p>
<h2>Les entrepreneurs qui n&#x27;ont pas fait d&#x27;études</h2>
<p>Bill Gates, Steven Spielberg, Richard Branson, Michael Dell, Felix Dennis, David Geffen et John Paul DeJoria n’ont jamais fini le lycée ou même le collège. Ils ont tous laissé tomber l’école pour poursuivre une autre voie.</p>
<p>Ils ont évité la conformité et l’asservissement aux études pour ne pas dépendre d&#x27;un jeu dont ils n&#x27;ont ni contrôle ni effet de levier.</p>
<h2>Le paradoxe vivant</h2>
<p>Demanderiez-vous des conseils financiers à un fainéant en faillite ?</p>
<p>De nombreux gourous de la finance sont des paradoxes vivants ; ils enseignent une équation de la richesse tout en s’enrichissant par le biais d’une autre. Ce n’est pas ce qu’ils prônent qui les a rendus riches.</p>
<p>Éviter les paradoxes vivants par ce genre de questions : « Mettez-vous en pratique ce que vous prêchez ? Êtes-vous un modèle, un exemple de ce que vous enseignez ? »</p>
<p>Prenez conseil auprès de gens qui ont fait leurs preuves dans leur discipline de prédilection.</p>
<p>Pour les bons conseils en matière de basket, demandez à Tony Parker, pas à MJ DeMarco.</p>
<h2>La Célébrité fait exploser la valeur intrinsèque</h2>
<p>Vous pouvez braver les limitations de la Voie lente en devenant si indispensable que votre valeur dans la société monte en flèche.</p>
<p>Si des millions de gens vous recherchent, vous toucherez des millions. Le basketteur professionnel LeBron James est payé des millions parce qu’il a un talent exceptionnel.</p>
<p>Les acteurs et animateurs professionnels sont payés des millions parce que des millions de gens exigent leur marque sous la forme de spectacle.</p>
<p>Le talent exceptionnel est exceptionnellement bien payé.</p>
<p>Malheureusement, la plupart des gens qui cherchent la richesse le font en bravant la Voie lente et non par la Voie rapide.</p>
<h2>Ne jamais arrêter de se former</h2>
<p>Dès le moment où l’on arrête de se former, on arrête de croître.</p>
<p>Développer constamment vos connaissances et votre savoir est essentiel pour votre voyage.</p>
<h2>La perception de l&#x27;argent</h2>
<p><a href="/argent" title="L&#x27;argent" class="not-found">L&#x27;argent</a> est le reflet du nombre de vies sur lesquelles j’ai un impact. L’argent reflète la valeur que je crée.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'effet Lindy]]></title>
            <link>https://johackim.com/leffet-lindy?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/leffet-lindy</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/leffet-lindy.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/leffet-lindy.jpg"/>
            <content:encoded><![CDATA[<p>L&#x27;<strong>effet Lindy</strong> est une théorie selon laquelle l&#x27;espérance de vie future d&#x27;une chose non périssable, implique une espérance de vie restante plus longue à chaque fois qu&#x27;elle survit à une période de temps.</p>
<p>C&#x27;est un modèle mental introduit par Nassim Nicholas Taleb dans son livre Antifragile.</p>
<p>Exemple : Si un livre existe depuis 100 ans, on peut supposer qu&#x27;il existera encore pendant 100 autres années.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/antifragile-nassim-taleb" title="Antifragile - Nassim Taleb" class="not-found">Antifragile - Nassim Taleb</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Le modèle comportemental de Fogg]]></title>
            <link>https://johackim.com/le-modele-comportemental-de-fogg?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/le-modele-comportemental-de-fogg</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/le-modele-comportemental-de-fogg.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/le-modele-comportemental-de-fogg.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/8oYGbWm.jpeg"/><p>Trois élements doivent être présent pour qu&#x27;un comportement se produise : la <strong><a href="/motivation" title="Motivation" class="not-found">Motivation</a></strong>, la <strong>capacité</strong>, et le <strong>déclencheur</strong>.</p>

<p><img src="https://i.imgur.com/8oYGbWm.jpeg" alt="Modèle comportemental de Fogg|400"/></p>
<p>Il y a trois types de motivateurs pour qualifier la <strong>motivation</strong> :</p>
<ol>
<li>plaisir/douleur (motivation immédiate)</li>
<li>espoir/peur (anticipation d&#x27;un résultat)</li>
<li>acceptation/rejet social</li>
</ol>
<p>La <strong>capacité</strong> est l&#x27;aptitude d&#x27;une personne à avoir ce comportement. Cela varie selon le temps (court ou long), l&#x27;argent (gratuit ou payant), l&#x27;effort physique requis (fatiguant ou pas), les cycles du cerveau (réfléchir longtemps ou non), de la déviance social (validé ou non par la société) et de la non-routine (routinier ou réclamant de nouveaux efforts).</p>
<p>Notre comportement sera facile à adpoter si celui-ci est simple, court, peu coûteux, peu fatiguant, demandant peu de réflexion, sans déviance et ne modifiant pas soudainement notre routine.</p>
<p>Le <strong>déclencheur</strong> est l&#x27;appel à l&#x27;action, exemples :</p>
<ul>
<li>un feu rouge qui passe au vert, vous partez</li>
<li>si vous avez soif, vous buvez</li>
<li>si vous avez faim, vous mangez</li>
<li>si vous voyez un grizzly, vous fuyez</li>
</ul>
<p>Pour faire quelque chose de difficile, vous avez besoin d&#x27;un haut niveau de motivation.</p>
<p>Mais lorsque vous n&#x27;êtes pas motivé, vous agissez à condition que cela soit extrêmement simple.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/petites-habitudes-grandes-reussites-onur-karapinar" title="Petites habitudes, Grandes réussites - Onur Karapinar" class="not-found">Petites habitudes, Grandes réussites - Onur Karapinar</a>

</li>
<li><a href="https://behaviormodel.org/">https://behaviormodel.org/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Les cinq éléments de toute entreprise]]></title>
            <link>https://johackim.com/les-cinq-elements-de-toute-entreprise?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/les-cinq-elements-de-toute-entreprise</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/les-cinq-elements-de-toute-entreprise.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/les-cinq-elements-de-toute-entreprise.jpg"/>
            <content:encoded><![CDATA[<p>Une entreprise est par essence un système qui contient et exécute continuellement 5 éléments :</p>
<p>1. <strong>La création de <a href="/valeur" title="Valeur" class="not-found">Valeur</a></strong>. Découvrir ce que les gens veulent ou ce dont ils ont besoin, puis le créer.
2. <strong>Le <a href="/marketing" title="Marketing" class="not-found">Marketing</a></strong>. Attirer l’attention et développer une demande pour ce que vous avez créé.
3. <strong>La <a href="/vente" title="Vente" class="not-found">Vente</a></strong>. Transformer des prospects en clients qui paient.
4. <strong>Délivrer la <a href="/valeur" title="Valeur" class="not-found">Valeur</a></strong>. Donner à vos clients ce que vous leur avez promis et vous assurer qu’ils sont satisfaits.
5. <strong>La <a href="/finance" title="Finance" class="not-found">Finance</a></strong>. Gagner suffisamment d’argent pour poursuivre votre activité et récompenser vos efforts.</p>

<p>Quiconque essaie de vous présenter la gestion d’une entreprise comme quelque chose d’extrêmement compliqué tente, soit de vous impressionner, soit de vous vendre quelque chose dont vous n’avez pas besoin.</p>
<p>Une entreprise, peut importe sa taille, s&#x27;occupe chaque jour de :</p>
<p>1. <strong>crée et distribue quelque chose de valeur</strong>…
2. … <strong>répondant à un désir ou à un besoin d’autres individus</strong>…
3. … <strong>à un prix qu’ils sont prêts à payer</strong>…
4. … <strong>et d’une manière qui satisfait leurs besoins et leurs attentes</strong>…
5. … <strong>en vue de dégager des bénéfices suffisants pour ses propriétaires afin de poursuivre son activité</strong>.</p>
<p>Si vous supprimez un seul de ces cinq éléments vous n’avez plus affaire à une entreprise :</p>
<ul>
<li>Une entreprise qui ne crée pas de valeur pour les autres est un passe-temps.</li>
<li>Une entreprise qui n’attire pas l’attention est un échec.</li>
<li>Une entreprise qui ne vend pas la valeur qu’elle crée est une organisation à but non lucratif.</li>
<li>Une entreprise qui ne tient pas ses promesses est une entreprise frauduleuse.</li>
<li>Une entreprise qui ne gagne pas suffisamment d’argent pour continuer à fonctionner est condamnée à fermer.</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/le-personal-mba-josh-kaufman" title="Le Personal MBA - Josh Kaufman" class="not-found">Le Personal MBA - Josh Kaufman</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La loi de Pareto]]></title>
            <link>https://johackim.com/loi-de-pareto?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/loi-de-pareto</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/loi-de-pareto.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/loi-de-pareto.jpg"/>
            <content:encoded><![CDATA[<p>Pour de nombreux événements, <mark>20% des actions amènent 80% des résultats</mark>.</p>
<p>Au début du XXème siècle, Vilfredo Pareto constate qu’en moyenne 20% de la population se partage 80% des richesses d’un pays. Et 20% des pays du monde se partagent 80% de la richesse mondiale.</p>
<p>Dans tout Système complexe, une minorité d’entrées produit la majorité des sorties. Ce schéma est aujourd’hui appelé la loi de Pareto ou la loi des 80/20.</p>
<hr/>
<p>Références :</p>
<ul>
<li>Tout le monde n&#x27;a pas eu la chance de rater ses études - Olivier Roland</li>
<li>Le personal MBA - Josh Kaufman</li>
<li>Le Principe 80/20 - Richard Koch</li>
<li><a href="https://community.swipefiles.com/c/mental-models-for-marketing/problem-solving-mental-models-2-16-pareto-s-principle">Corey Haines - Pareto Principle</a></li>
<li><a href="https://everlaab.com/loi-de-pareto/">https://everlaab.com/loi-de-pareto/</a></li>
<li><a href="https://effectiviology.com/80-20-rule-pareto-principle/">https://effectiviology.com/80-20-rule-pareto-principle/</a></li>
<li><a href="https://braink.it/principles/pareto-principle">https://braink.it/principles/pareto-principle</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Matrice d'Eisenhower]]></title>
            <link>https://johackim.com/matrice-deisenhower?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/matrice-deisenhower</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/matrice-deisenhower.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/matrice-deisenhower.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/fYGYuXO.jpg"/><p>La matrice d’Eisenhower nour permet de classer nos tâches selon leur importance et urgence :</p>
<ul>
<li><strong>Urgent et important</strong> : à faire immédiatement soi-même</li>
<li><strong>Important mais non urgent</strong> : à planifier et à faire plus tard soi-même</li>
<li><strong>Urgent mais pas important</strong> : à déléguer</li>
<li><strong>Ni urgent ni important</strong> : à éliminer ou à reporter indéfiniment.</li>
</ul>
<p><img src="https://i.imgur.com/fYGYuXO.jpg" alt="Eisenhower Matrix|500"/></p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">L’ancien président des États-Unis Dwight D. Eisenhower</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« Les choses urgentes sont rarement importantes, et les choses importantes sont rarement urgentes. »</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://community.swipefiles.com/c/mental-models-for-marketing/process-4-5-eisenhower-matrix">Corey Haines - Eisenhower Matrix</a></li>
<li><a href="https://onurkarapinar.teachable.com/courses/553823/lectures/10277218">Onur Karapinar - Déterminer vos priorités</a></li>
<li>
<a href="/le-livre-des-decisions-mikael-krogerus" title="Le livre des décisions - Mikael Krogerus" class="not-found">Le livre des décisions - Mikael Krogerus</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Modèles de prix pour un SaaS]]></title>
            <link>https://johackim.com/modeles-de-prix-pour-un-saas?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/modeles-de-prix-pour-un-saas</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/modeles-de-prix-pour-un-saas.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/modeles-de-prix-pour-un-saas.jpg"/>
            <content:encoded><![CDATA[<p>Il existe plusieurs modèles de prix pour un SaaS :</p>
<ul>
<li>Flat-rate pricing (ex : <a href="https://basecamp.com">basecamp</a>)</li>
<li>Usage-based pricing (ex : <a href="https://stripe.com">Stripe</a>)</li>
<li>Tier-based pricing (ex: <a href="https://kinsta.com">Kinsta</a>)</li>
<li>User-based pricing (ex : <a href="https://calendly.com">Calendly</a>)</li>
<li>Feature-based pricing (ex : <a href="https://intercom.com">Intercom</a>)</li>
<li>Credit-based pricing (ex : <a href="https://audible.com">Audible</a>)</li>
<li>Hybrid pricing (ex : <a href="https://drift.com">Drift</a>)</li>
</ul>
<h2>Flat-rate pricing</h2>
<blockquote>
<p>49€ par mois</p>
</blockquote>
<p>Ex: <a href="https://basecamp.com/pricing">basecamp</a>.</p>
<p>Le modèle de prix Flat-rate est la façon la plus simple de vendre un produit.</p>
<p>Avec ce modèle, <strong>il existe seulement un produit avec un seul prix</strong>.</p>
<p>Il peut y avoir des variances selon si le prix est par mois ou pas année, mais l&#x27;utilisateur accède à toutes les fonctionnalités.</p>
<p>C&#x27;est plus facile à vendre, car il n&#x27;existe qu&#x27;un modèle de prix, ce qui génère moins de confusions.</p>
<p>C&#x27;est aussi un modèle qui a l&#x27;avantage d&#x27;être prédictible.</p>

























<table><thead><tr><th>Avantages</th><th>Inconvénients</th></tr></thead><tbody><tr><td>Facilité de communication</td><td>Inflexible</td></tr><tr><td>Simple</td><td>Pas d&#x27;expansions</td></tr><tr><td>Prévisible</td><td></td></tr><tr><td>Diversifié</td><td></td></tr></tbody></table>
<h2>Usage-based pricing</h2>
<blockquote>
<p>9€ pour 1,000 emails</p>
</blockquote>
<p>Ex: <a href="https://stripe.com/fr/pricing">Stripe</a>, <a href="https://postmarkapp.com/pricing">Postmark</a>, <a href="https://convertkit.com/pricing">Convertkit</a>.</p>
<p>C&#x27;est un modèle pay-as-you-go.</p>
<p>Plus vous utiliser un service (ex: une api, un espace de stockage), plus vous payer. Et inversement, moins vous utiliser un service moins vous payer.</p>
<p>Vous pouvez être facturé par chaque envoie d&#x27;email, par un appel à une API, etc...</p>
<p>Ou être facturé sur un pourcentage de vos revenus.</p>





















<table><thead><tr><th>Avantages</th><th>Inconvénients</th></tr></thead><tbody><tr><td>Facile à comprendre</td><td>Pas de lien direct avec la valeur</td></tr><tr><td>Non-discriminatoire</td><td>Non prévisible</td></tr><tr><td>Vous évoluez en même temps qu&#x27;eux</td><td>Encourage la frugalité</td></tr></tbody></table>
<h2>Tier-based pricing</h2>
<p>Ex: <a href="https://kinsta.com/fr/plans/">Kinsta</a>, <a href="https://fomo.com/pricing">Fomo</a>.</p>
<blockquote>
<p>Starter (9€/mois) - Pro (49€/mois) - Enterprise (499€/mois)</p>
</blockquote>
<p>Ce modèle présente différentes version du produit avec des fonctionnalités différentes pour un prix différent.</p>
<p>Le noms des différents tiers doit être claire et explicite pour éviter les confusions.</p>





















<table><thead><tr><th>Avantages</th><th>Inconvénients</th></tr></thead><tbody><tr><td>Attrait pour plusieurs types de clients</td><td>Potentiellement confus</td></tr><tr><td>Potentiel d&#x27;expansion</td><td>Compliqué</td></tr><tr><td>Similaire à la tarification à l&#x27;usage</td><td>Analyses difficiles</td></tr></tbody></table>
<h2>User-based pricing</h2>
<blockquote>
<p>9€ par utilisateur</p>
</blockquote>
<p>Ex: <a href="https://notion.so/pricing">Notion</a>, <a href="https://calendly.com/pricing">Calendly</a>, <a href="https://close.com/pricing/">Close</a>.</p>
<p>Les clients sont facturé par nombre d&#x27;utilisateurs.</p>
<p>Ce modèle doit uniquement être utilisé pour les produits avec une expérience unique qui varie selon la personne qui utilise le compte.</p>
<p>Sinon les utilisateurs vont probalement se partagé un seul identifiant, ce qui peut faire perdre un certain nombre de revenus.</p>





















<table><thead><tr><th>Avatanges</th><th>Invonvénients</th></tr></thead><tbody><tr><td>Facile à comprendre</td><td>Décourage l&#x27;adoption</td></tr><tr><td>Revenue scales with company adoption</td><td>L&#x27;utilisation par les utilisateurs peut varier</td></tr><tr><td>Prévisible</td><td>Contraction des revenus</td></tr></tbody></table>
<h2>Feature-based pricing</h2>
<blockquote>
<p>X (99€ / mois), Y (49€ / mois), Z (59€ / mois)</p>
</blockquote>
<p>Ex: <a href="https://intercom.com/pricing">Intercom</a>, <a href="https://baremetrics.com/pricing">baremetrics</a></p>





















<table><thead><tr><th>Avantages</th><th>Inconvénients</th></tr></thead><tbody><tr><td>Voie de l&#x27;expansion</td><td>Réticence à payer plus</td></tr><tr><td>Focus sur le marketing</td><td>&quot;Add-on&quot; peut avoir une connotation négative</td></tr><tr><td>Modularité</td><td></td></tr></tbody></table>
<h2>Credit-based pricing</h2>
<blockquote>
<p>$9 for 4 books a month</p>
</blockquote>
<p>Ex: <a href="https://amazon.com/gp/help/customer/display.html?nodeId=202162280">Audible</a></p>





















<table><thead><tr><th>Avantages</th><th>Inconvénients</th></tr></thead><tbody><tr><td>Facturé avant utilisation</td><td>Probabilité plus élevée de remboursement</td></tr><tr><td>Simple</td><td>Surplus si on ne l&#x27;utilise pas régulièrement</td></tr><tr><td>Décourage la frugalité</td><td></td></tr></tbody></table>
<h2>Hybrid pricing</h2>
<p>Ex: Drift</p>
<blockquote>
<p>Core 99€/mois + 9€ / user + Add-on 29€ / mois</p>
</blockquote>
<p>Ex: <a href="https://drift.com/pricing/#plan-comparison">Drift</a>, <a href="https://appcues.com/pricing">Appcues</a>.</p>
<p>C&#x27;est le modèle qui mixe tous les modèles de prix.</p>

















<table><thead><tr><th>Avantages</th><th>Inconvénients</th></tr></thead><tbody><tr><td>Se différencier des concurrents</td><td>Devient rapidement complexe</td></tr><tr><td>Possibilités d&#x27;expansion multiples</td><td>Peut être trop, pour trop de monde</td></tr></tbody></table>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://learn.swipefiles.com/courses/refactoring-growth/133422-model/550950-crafting-your-pricing-model">Corey Haines - Refactoring Growth</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mon processus de prise de notes]]></title>
            <link>https://johackim.com/mon-processus-de-prise-de-notes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mon-processus-de-prise-de-notes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mon-processus-de-prise-de-notes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mon-processus-de-prise-de-notes.jpg"/>
            <content:encoded><![CDATA[<h2>La méthode Zettelkasten</h2>
<p>Lorsque je prend des notes, j&#x27;utilise en partie la méthode <a href="/how-to-take-smart-notes-sonke-ahrens" title="Zettelkasten">Zettelkasten</a>.</p>

<p>Dès que j&#x27;ai des idées qui me viennent en tête, je prend des <a href="/notes-temporaires" title="notes temporaires">notes temporaires</a> dans un fichier <a href="/markdown" title="Markdown" class="not-found">Markdown</a> <code>inbox.md</code> dans <a href="/obsidian" title="Obsidian">Obsidian</a>.</p>

<p>Si je lis un livre, un article, écoute un podcast ou regarde une vidéo, je rédige avec mes propres mots une <a href="/notes-litteraires" title="note littéraire">note littéraire</a> de tout les <strong>concepts</strong> m&#x27;intéresse dans le contenu.</p>

<p>Une fois la <a href="/notes-litteraires" title="note littéraire">note littéraire</a> terminé, sur le moment ou plus tard, je la divise en plusieurs <a href="/notes-permanentes" title="notes permanentes">notes permanentes</a>.</p>


<link href="data:text/css;base64,I21lcm1haWQtc3ZnLTV7Zm9udC1mYW1pbHk6InRyZWJ1Y2hldCBtcyIsdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTUgLmVycm9yLWljb257ZmlsbDojNTUyMjIyO30jbWVybWFpZC1zdmctNSAuZXJyb3ItdGV4dHtmaWxsOiM1NTIyMjI7c3Ryb2tlOiM1NTIyMjI7fSNtZXJtYWlkLXN2Zy01IC5lZGdlLXRoaWNrbmVzcy1ub3JtYWx7c3Ryb2tlLXdpZHRoOjJweDt9I21lcm1haWQtc3ZnLTUgLmVkZ2UtdGhpY2tuZXNzLXRoaWNre3N0cm9rZS13aWR0aDozLjVweDt9I21lcm1haWQtc3ZnLTUgLmVkZ2UtcGF0dGVybi1zb2xpZHtzdHJva2UtZGFzaGFycmF5OjA7fSNtZXJtYWlkLXN2Zy01IC5lZGdlLXBhdHRlcm4tZGFzaGVke3N0cm9rZS1kYXNoYXJyYXk6Mzt9I21lcm1haWQtc3ZnLTUgLmVkZ2UtcGF0dGVybi1kb3R0ZWR7c3Ryb2tlLWRhc2hhcnJheToyO30jbWVybWFpZC1zdmctNSAubWFya2Vye2ZpbGw6IzMzMzMzMztzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTUgLm1hcmtlci5jcm9zc3tzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTUgc3Zne2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDt9I21lcm1haWQtc3ZnLTUgLmxhYmVse2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNSAuY2x1c3Rlci1sYWJlbCB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTUgLmNsdXN0ZXItbGFiZWwgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNSAubGFiZWwgdGV4dCwjbWVybWFpZC1zdmctNSBzcGFue2ZpbGw6IzMzMztjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNSAubm9kZSByZWN0LCNtZXJtYWlkLXN2Zy01IC5ub2RlIGNpcmNsZSwjbWVybWFpZC1zdmctNSAubm9kZSBlbGxpcHNlLCNtZXJtYWlkLXN2Zy01IC5ub2RlIHBvbHlnb24sI21lcm1haWQtc3ZnLTUgLm5vZGUgcGF0aHtmaWxsOiNFQ0VDRkY7c3Ryb2tlOiM5MzcwREI7c3Ryb2tlLXdpZHRoOjFweDt9I21lcm1haWQtc3ZnLTUgLm5vZGUgLmxhYmVse3RleHQtYWxpZ246Y2VudGVyO30jbWVybWFpZC1zdmctNSAubm9kZS5jbGlja2FibGV7Y3Vyc29yOnBvaW50ZXI7fSNtZXJtYWlkLXN2Zy01IC5hcnJvd2hlYWRQYXRoe2ZpbGw6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTUgLmVkZ2VQYXRoIC5wYXRoe3N0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoyLjBweDt9I21lcm1haWQtc3ZnLTUgLmZsb3djaGFydC1saW5re3N0cm9rZTojMzMzMzMzO2ZpbGw6bm9uZTt9I21lcm1haWQtc3ZnLTUgLmVkZ2VMYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7dGV4dC1hbGlnbjpjZW50ZXI7fSNtZXJtYWlkLXN2Zy01IC5lZGdlTGFiZWwgcmVjdHtvcGFjaXR5OjAuNTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7ZmlsbDojZThlOGU4O30jbWVybWFpZC1zdmctNSAuY2x1c3RlciByZWN0e2ZpbGw6I2ZmZmZkZTtzdHJva2U6I2FhYWEzMztzdHJva2Utd2lkdGg6MXB4O30jbWVybWFpZC1zdmctNSAuY2x1c3RlciB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTUgLmNsdXN0ZXIgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNSBkaXYubWVybWFpZFRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4O2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOmhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpO2JvcmRlcjoxcHggc29saWQgI2FhYWEzMztib3JkZXItcmFkaXVzOjJweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwO30jbWVybWFpZC1zdmctNSAuZmxvd2NoYXJ0VGl0bGVUZXh0e3RleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MThweDtmaWxsOiMzMzM7fSNtZXJtYWlkLXN2Zy01IDpyb290ey0tbWVybWFpZC1mb250LWZhbWlseToidHJlYnVjaGV0IG1zIix2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7fQ==" rel="stylesheet" type="text/css"/>
<p>~~Ce sur quoi mon processus diffère de la méthode <a href="/how-to-take-smart-notes-sonke-ahrens" title="Zettelkasten">Zettelkasten</a>, c&#x27;est que je transforme directement mes notes littéraires en plusieurs notes permanentes sans garder le contenu d&#x27;origine de la note littéraire pour ne pas avoir de duplications dans <a href="/mon-second-cerveau" title="mon second cerveau">mon second cerveau</a>.~~</p>

<p>J&#x27;ajoute les références du contenu d&#x27;origine (URLs, page d&#x27;un livre, timecode d&#x27;une vidéo ou d&#x27;un podcast, etc...) pour avoir une trace des contenus originellement consommées.</p>
<h2>Les 4 règles à respecter</h2>
<p>Voici mes <strong>4 règles à respecter lorsque je prends des notes</strong> :</p>
<ol>
<li>
Une note <strong>ne doit pas dépasser une page</strong>, elle doit être <a href="/note-atomique" title="atomique">atomique</a> (<strong>Une note = Un concept</strong>)

</li>
<li><strong>Ne jamais copier-coller</strong> un contenu.</li>
<li><strong>Utiliser ses propres mots</strong> pour rédiger une note.</li>
<li>Toujours renseigner les <strong>références</strong> d&#x27;une note.</li>
</ol>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Note atomique]]></title>
            <link>https://johackim.com/note-atomique?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/note-atomique</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/note-atomique.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/note-atomique.jpg"/>
            <content:encoded><![CDATA[<p>Une note atomique est une note qui ne peut pas être divisée sans perdre son sens.</p>
<p>Voici les caractéristiques d&#x27;une note atomique :</p>
<ul>
<li>Une note atomique est égale à une seule idée</li>
<li>Une note atomique ne dépasse pas une page</li>
<li>Une note atomique s&#x27;explique d&#x27;elle-même</li>
</ul>
<p>Décomposez chaque note afin qu&#x27;elles deviennent indivisibles.</p>
<p>Une note atomique ne dépasse pas une page.</p>
<p>Elle doit être suffisamment précise pour être comprise sans contexte.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://publish.obsidian.md/lyt-kit/Umami/Guiding+Principles+of+PKM">https://publish.obsidian.md/lyt-kit/Umami/Guiding+Principles+of+PKM</a></li>
<li><a href="https://zettelkasten.de/posts/overview/">https://zettelkasten.de/posts/overview/</a></li>
<li><a href="https://app.mailbrew.com/s/newsletter/pFhBz0TpXK9g">https://app.mailbrew.com/s/newsletter/pFhBz0TpXK9g</a></li>
<li><a href="https://youtu.be/_t9R1AnB7ho&amp;t=344">Odysseas - Effective Note-Taking to Remember More + Create New Ideas</a></li>
<li>
<a href="/atomique" title="Atomique" class="not-found">Atomique</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Note littéraire]]></title>
            <link>https://johackim.com/notes-litteraires?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/notes-litteraires</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/notes-litteraires.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/notes-litteraires.jpg"/>
            <content:encoded><![CDATA[<p><strong>Une note littéraire est essentiellement une note que vous avez créé à partir d&#x27;un contenu que vous avez consommé (livres, articles, vidéos, films, podcasts, formations, discussions, etc...).</strong></p>
<p>Elle contient généralement les éléments suivants :</p>
<ul>
<li>Un titre : le titre d&#x27;un article, d&#x27;un livre ou d&#x27;une vidéo</li>
<li>Un auteur : le nom de la personne ou de l&#x27;entité derrière le contenu</li>
<li>Une citation : morceau de texte pertinent</li>
<li>Une note : commentaires et réflexions personnels</li>
<li>Une référence : l&#x27;URL du contenu</li>
</ul>
<p>Notez ce que vous ne voulez pas oublier ou ce que vous pensez pouvoir utiliser dans votre propre réflexion ou vos écrits.</p>
<p>Soyez bref, soyez extrêmement sélectif, ne copiez pas de texte et utilisez vos propres mots.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/how-to-take-smart-notes-sonke-ahrens" title="Zettelkasten">Zettelkasten</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Note permanente]]></title>
            <link>https://johackim.com/notes-permanentes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/notes-permanentes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/notes-permanentes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/notes-permanentes.jpg"/>
            <content:encoded><![CDATA[<p>Parcourez vos notes <a href="/notes-temporaires" title="temporaires">temporaires</a> et <a href="/notes-litteraires" title="littéraires">littéraires</a> et réfléchissez à la manière dont elles se rapportent à ce qui est pertinent pour vos propres recherches, réflexions ou intérêts.</p>

<p>L&#x27;idée n&#x27;est pas de collecter, mais de développer des idées, des arguments et des discussions.</p>
<p><strong>Rédigez une note pour chaque idée et écrivez comme si vous écriviez pour quelqu&#x27;un d&#x27;autre : utilisez des phrases complètes, indiquez vos sources, faites des références et essayez d&#x27;être aussi précis, clair et bref que possible.</strong></p>
<p>Jetez les notes éphémères et placez les notes littéraires dans votre <strong>système de référence</strong>. Vous pouvez les oublier maintenant. Tout ce qui compte, c&#x27;est ce qui se trouve dans la <strong>boite à chaussure</strong> des notes permanentes.</p>
<p><strong>Ajoutez vos nouvelles notes permanentes dans votre boîte à chaussure</strong>. Placez chaque note derrière une note associée (si elle ne se rapporte à aucune note existante, ajoutez-la à la toute fin).</p>
<p>Optionnellement, vous pouvez également :</p>
<ul>
<li>Ajouter des liens vers (et depuis) les notes associées.</li>
<li>Les ajouter à un «<strong>index</strong>» - un type spécial de note qui sert de «table des matières» et de point d&#x27;entrée pour un sujet important, y compris une collection triée de liens sur le sujet.</li>
</ul>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Eliott Meunier</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Une note permanente doit être basic (Brêve, Authentique, Sourcé, Indépendante, Connecté)Brêve -&gt; juste une page sans possibilité de scrollerAuthentique -&gt; écrit dans nos propres motsSourcé -&gt; relié a des sourcesUne note permanent = 1 concept</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/how-to-take-smart-notes-sonke-ahrens" title="Zettelkasten">Zettelkasten</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Note temporaire]]></title>
            <link>https://johackim.com/notes-temporaires?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/notes-temporaires</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/notes-temporaires.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/notes-temporaires.jpg"/>
            <content:encoded><![CDATA[<p><strong>Ayez toujours quelque chose à portée de main avec lequel écrire pour capturer chaque idée qui vous vient à l&#x27;esprit</strong>. Ne vous préoccupez pas trop de la manière dont vous écrivez ou du support sur lequel vous écrivez.</p>
<p>Il s&#x27;agit de notes éphémères, de simples rappels de ce que vous avez en tête. Elles ne doivent pas vous distraire. <strong>Mettez-les dans un seul endroit, que vous définissez comme votre boîte de réception, et traitez-les plus tard</strong>.</p>
<p>Personnellement, j&#x27;ai 3 manières de prendre des note temporaires :</p>
<ol>
<li>Les &quot;Messages enregistrés&quot; de Telegram quand je n&#x27;ai pas accès à mon PC.</li>
<li>Mon Rocketbook quand je suis sur mon bureau.</li>
<li>Un fichier markdown <code>inbox.md</code> dans Obisidian où je note tout ce qui me traverse l&#x27;esprit.</li>
</ol>
<p>Si vos pensées sont déjà triées et que vous avez le temps, vous pouvez sauter cette étape et écrire directement votre idée sous forme de note permanente.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/how-to-take-smart-notes-sonke-ahrens" title="Zettelkasten">Zettelkasten</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pair programming]]></title>
            <link>https://johackim.com/pair-programming?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/pair-programming</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/pair-programming.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/pair-programming.jpg"/>
            <content:encoded><![CDATA[<p>Le pair programming est une méthode de travail dans laquelle deux développeurs travaillent ensemble sur un même ordinateur</p>
<p>La personne qui rédige le code est appelée conducteur (driver).</p>
<p>L&#x27;autre personne est l&#x27;observateur (observer), il assiste le conducteur en décelant les imperfections, en vérifiant que le code implémente correctement le design et en suggérant des alternatives de développement.</p>
<p>Les rôles s&#x27;échangent régulièrement pendant la séance de programmation.</p>
<p>Le pair programming fait partie des bonnes pratiques de l&#x27;<a href="/extreme-programming" title="Extreme Programming" class="not-found">Extreme Programming</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Prettier]]></title>
            <link>https://johackim.com/installer-prettier?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-prettier</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-prettier.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-prettier.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://prettier.io/">Prettier</a> permet de formater votre code automatiquement selon vos besoins, par exemple :</p>
<ul>
<li>Indenter automatiquement son code avec 4 espaces.</li>
<li>Utiliser des simples quotes à la place des doubles quotes.</li>
<li>Limiter chaque ligne à un nombre de caractères.</li>
</ul>
<h2>Installation</h2>
<p>Pour installer Prettier, exécutez la commande suivante :</p>
<pre><code class="language-bash">yarn add -D prettier
</code></pre>
<h2>Configuration</h2>
<p>Ajouter un fichier .prettierrc à la racine de votre projet :</p>
<pre><code class="language-bash">cat &gt; .prettierrc &lt;&lt; EOF
{
  &quot;endOfLine&quot;: &quot;lf&quot;,
  &quot;singleQuote&quot;: true,
  &quot;tabWidth&quot;: 4,
  &quot;trailingComma&quot;: &quot;es5&quot;,
  &quot;printWidth&quot;: 300
}
EOF
</code></pre>
<p>Vous pouvez générer votre configuration à partir du <a href="https://prettier.io/playground/">Playground de Prettier</a>.</p>
<p>Vous pouvez créer une commande <code>lint</code> dans votre fichier <code>package.json</code> :</p>
<pre><code class="language-json">// package.json

&quot;scripts&quot;: {
    &quot;lint&quot;: &quot;prettier --write&quot;
}
</code></pre>
<h2>Installation sur vim</h2>
<p>Cloner le dépôt <a href="https://github.com/prettier/vim-prettier">vim-prettier</a> dans votre dossier bundle :</p>
<pre><code class="language-bash">git clone https://github.com/prettier/vim-prettier ~/.vim/bundle
</code></pre>
<p>Ajouter la configuration suivante dans votre fichier <code>.vimrc</code> :</p>
<pre><code class="language-vim">&quot; ~/.vimrc
nmap &lt;Leader&gt;b &lt;Plug&gt;(Prettier)
</code></pre>
<p>Vous pouvez à présent executer la commande :prettier avec le raccourcis <code>&lt;CTRL&gt;, + b</code>.</p>
<h2>Utilisation</h2>
<p>Vous pouvez à présent utiliser Prettier pour vérifier ou formater automatiquement la syntaxe de votre code :</p>
<pre><code class="language-bash">./node_modules/.bin/prettier --check .
</code></pre>
<pre><code class="language-bash">./node_modules/.bin/prettier --write .
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[SMART]]></title>
            <link>https://johackim.com/objectifs-smart?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/objectifs-smart</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/objectifs-smart.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/objectifs-smart.jpg"/>
            <content:encoded><![CDATA[<p>L&#x27;acronyme S.M.A.R.T. est un moyen mnémotechnique créé par George T. Doran en 1981 permettant de décrire les objectifs que l’on veut exprimer de la façon la plus claire, la plus simple à comprendre et pour lesquels les résultats sont réalisables.</p>
<ul>
<li><strong>S</strong>pécifique : votre objectif doit être bien défini, clair et sans ambiguïté.</li>
<li><strong>M</strong>esurable : vous pouvez facilement mesurer vos progrès vers la réalisation de l&#x27;objectif.</li>
<li><strong>A</strong>tteignable : l&#x27;objectif doit sembler réalisable et non impossible à atteindre.</li>
<li><strong>R</strong>éaliste : l&#x27;objectif doit être aligné sur vos priorités actuelles.</li>
<li><strong>T</strong>emporellement défini : votre objectif doit être clairement défini dans le temps, avec une date de début et de fin.</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://everlaab.com/objectif-smart/">https://everlaab.com/objectif-smart/</a></li>
<li><a href="https://braink.it/principles/smart-goals">https://braink.it/principles/smart-goals</a></li>
<li><a href="https://sketchplanations.com/smart-goals">https://sketchplanations.com/smart-goals</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Shred]]></title>
            <description><![CDATA[Supprimer définitivement des fichiers sur Linux]]></description>
            <link>https://johackim.com/shred?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/shred</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/shred.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/shred.jpg"/>
            <content:encoded><![CDATA[<p>Lorsqu&#x27;un fichier est supprimé, son contenu peut rester dans le système de fichiers, à moins qu&#x27;il ne soit explicitement écrasé par un autre contenu.</p>
<p>Pour pallier à ce problème, il existe <a href="https://doc.ubuntu-fr.org/shred">shred</a>.</p>
<p>Shred est un utilitaire qui permet de supprimer définitivement des fichiers en écrivant des données aléatoires dessus.</p>
<p>Il est installé par défaut sur la plupart des distributions Linux.</p>
<h2>Supprimer un fichier</h2>
<p>Pour supprimer un fichier, il suffit de lancer la commande suivante :</p>
<pre><code class="language-bash">shred -v -n2 -z -u &lt;file&gt;
</code></pre>
<h2>Supprimer un dossier</h2>
<p>Shred ne pas pas directement supprimer un dossier, mais combiné avec <code>find</code> cela fonctionne :</p>
<pre><code class="language-bash">find &lt;folder&gt; -type f -exec shred -v -n2 -z -u {} \;
</code></pre>
<h2>Remplir l&#x27;espace libre</h2>
<p>Après avoir exécuté votre commande shred, remplissez l&#x27;espace vide de votre disque dur :</p>
<pre><code class="language-bash">dd if=/dev/urandom of=/random bs=1M status=progress; sync; \rm /random;
# Ou
wipe -r /dev/sda1
</code></pre>
<h2>Supprimer une partition ou un disque</h2>
<p>Pour supprimer une partition ou un disque, il suffit de lancer la commande suivante :</p>
<pre><code class="language-bash">shred -v -n2 -z &lt;partition|device&gt;
</code></pre>
<blockquote class="callout warning">
                    
                    <div class="callout-content">
                        <p>Apparemment, à cause du Wear Leveling, la commande shred semble inefficace sur les SSD.</p>
                    </div>
                </blockquote>
<p>Détectez si votre disque dur est un SSD ou un HDD avec la commande :</p>
<pre><code class="language-bash">lsblk -d -o NAME,ROTA,SIZE,MODEL
</code></pre>
<p>Vérifiez dans la colonne ROTA :</p>
<ul>
<li>1 = Le disque tourne. C&#x27;est un HDD (Disque dur mécanique).</li>
<li>0 = Le disque ne tourne pas. C&#x27;est un SSD (ou NVMe).</li>
</ul>
<p>Si votre disque dur est un SSD, mieux vaut exécuter les commandes suivantes :</p>
<pre><code class="language-bash">blkdiscard -f &lt;device&gt;
wipefs -a &lt;device&gt;
nvme format --ses=1 &lt;device&gt;
</code></pre>
<p>Si vous supprimez un serveur, réinstallez l&#x27;OS (Rebuild) avec un système différent (ex: passer de Debian à CentOS).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://wiki.archlinux.org/title/Securely_wipe_disk#shred">https://wiki.archlinux.org/title/Securely_wipe_disk#shred</a></li>
<li><a href="https://github.com/martijnvanbrummelen/nwipe">https://github.com/martijnvanbrummelen/nwipe</a></li>
<li>
<a href="/vie-privee" title="Privacy">Privacy</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TDD]]></title>
            <link>https://johackim.com/test-driven-development?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/test-driven-development</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/test-driven-development.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/test-driven-development.jpg"/>
            <content:encoded><![CDATA[<p>Test-Driven Development (TDD), ou Développements Pilotés par les Tests en français, est une méthode de développement de logiciel, qui consiste à concevoir un logiciel petit à petit, de façon itérative et incrémentale, en écrivant chaque test avant d&#x27;écrire le code source.</p>
<h2>Les 3 lois du TDD</h2>
<ol>
<li>Vous ne devez pas écrire un code de production tant que vous n’avez pas écrit un test unitaire d’échec.</li>
<li>Vous devez uniquement écrire le test unitaire suffisant pour échouer.</li>
<li>Vous devez uniquement écrire le code de production suffisant pour réussir le test d’échec courant.</li>
</ol>
<p>Ces trois lois nous enferment dans un cycle qui peut durer une trentaine de secondes. Les tests et le code de production sont écrits ensemble, en commençant par les tests.</p>
<p>Si nous travaillons de cette manière, nous écrivons des dizaines de tests par jour, des centaines de tests par mois et des milliers de tests par an. Si nous travaillons ainsi, ces tests couvrent virtuellement tout le code de production.</p>
<h2>Pratiquer le TDD en 5 étapes</h2>

<link href="data:text/css;base64,I21lcm1haWQtc3ZnLTZ7Zm9udC1mYW1pbHk6InRyZWJ1Y2hldCBtcyIsdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTYgLmVycm9yLWljb257ZmlsbDojNTUyMjIyO30jbWVybWFpZC1zdmctNiAuZXJyb3ItdGV4dHtmaWxsOiM1NTIyMjI7c3Ryb2tlOiM1NTIyMjI7fSNtZXJtYWlkLXN2Zy02IC5lZGdlLXRoaWNrbmVzcy1ub3JtYWx7c3Ryb2tlLXdpZHRoOjJweDt9I21lcm1haWQtc3ZnLTYgLmVkZ2UtdGhpY2tuZXNzLXRoaWNre3N0cm9rZS13aWR0aDozLjVweDt9I21lcm1haWQtc3ZnLTYgLmVkZ2UtcGF0dGVybi1zb2xpZHtzdHJva2UtZGFzaGFycmF5OjA7fSNtZXJtYWlkLXN2Zy02IC5lZGdlLXBhdHRlcm4tZGFzaGVke3N0cm9rZS1kYXNoYXJyYXk6Mzt9I21lcm1haWQtc3ZnLTYgLmVkZ2UtcGF0dGVybi1kb3R0ZWR7c3Ryb2tlLWRhc2hhcnJheToyO30jbWVybWFpZC1zdmctNiAubWFya2Vye2ZpbGw6IzMzMzMzMztzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTYgLm1hcmtlci5jcm9zc3tzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTYgc3Zne2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDt9I21lcm1haWQtc3ZnLTYgLmxhYmVse2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNiAuY2x1c3Rlci1sYWJlbCB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTYgLmNsdXN0ZXItbGFiZWwgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNiAubGFiZWwgdGV4dCwjbWVybWFpZC1zdmctNiBzcGFue2ZpbGw6IzMzMztjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNiAubm9kZSByZWN0LCNtZXJtYWlkLXN2Zy02IC5ub2RlIGNpcmNsZSwjbWVybWFpZC1zdmctNiAubm9kZSBlbGxpcHNlLCNtZXJtYWlkLXN2Zy02IC5ub2RlIHBvbHlnb24sI21lcm1haWQtc3ZnLTYgLm5vZGUgcGF0aHtmaWxsOiNFQ0VDRkY7c3Ryb2tlOiM5MzcwREI7c3Ryb2tlLXdpZHRoOjFweDt9I21lcm1haWQtc3ZnLTYgLm5vZGUgLmxhYmVse3RleHQtYWxpZ246Y2VudGVyO30jbWVybWFpZC1zdmctNiAubm9kZS5jbGlja2FibGV7Y3Vyc29yOnBvaW50ZXI7fSNtZXJtYWlkLXN2Zy02IC5hcnJvd2hlYWRQYXRoe2ZpbGw6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTYgLmVkZ2VQYXRoIC5wYXRoe3N0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoyLjBweDt9I21lcm1haWQtc3ZnLTYgLmZsb3djaGFydC1saW5re3N0cm9rZTojMzMzMzMzO2ZpbGw6bm9uZTt9I21lcm1haWQtc3ZnLTYgLmVkZ2VMYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7dGV4dC1hbGlnbjpjZW50ZXI7fSNtZXJtYWlkLXN2Zy02IC5lZGdlTGFiZWwgcmVjdHtvcGFjaXR5OjAuNTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7ZmlsbDojZThlOGU4O30jbWVybWFpZC1zdmctNiAuY2x1c3RlciByZWN0e2ZpbGw6I2ZmZmZkZTtzdHJva2U6I2FhYWEzMztzdHJva2Utd2lkdGg6MXB4O30jbWVybWFpZC1zdmctNiAuY2x1c3RlciB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTYgLmNsdXN0ZXIgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNiBkaXYubWVybWFpZFRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4O2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOmhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpO2JvcmRlcjoxcHggc29saWQgI2FhYWEzMztib3JkZXItcmFkaXVzOjJweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwO30jbWVybWFpZC1zdmctNiAuZmxvd2NoYXJ0VGl0bGVUZXh0e3RleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MThweDtmaWxsOiMzMzM7fSNtZXJtYWlkLXN2Zy02IDpyb290ey0tbWVybWFpZC1mb250LWZhbWlseToidHJlYnVjaGV0IG1zIix2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7fQ==" rel="stylesheet" type="text/css"/>
<p>Le processus préconisé par TDD comporte cinq étapes :</p>
<ol>
<li>Écrire un seul test qui décrit une partie du problème à résoudre</li>
<li>Vérifier que le test échoue</li>
<li>Écrire juste assez de code pour que le test réussisse</li>
<li>Vérifier que le test passe, ainsi que les autres tests existants</li>
<li>Puis refactoriser le code, c&#x27;est-à-dire l&#x27;améliorer sans en altérer le comportement</li>
</ol>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fr.wikipedia.org/wiki/Test_driven_development">https://fr.wikipedia.org/wiki/Test_driven_development</a></li>
<li><a href="https://amazon.fr/Test-Driven-Development-Kent-Beck/dp/0321146530/">https://amazon.fr/Test-Driven-Development-Kent-Beck/dp/0321146530/</a></li>
<li><a href="https://amazon.fr/Coder-proprement-Robert-C-Martin/dp/232600227X/">https://amazon.fr/Coder-proprement-Robert-C-Martin/dp/232600227X/</a></li>
<li><a href="https://github.com/mawrkus/js-unit-testing-guide#-whenever-possible-use-tdd">https://github.com/mawrkus/js-unit-testing-guide#-whenever-possible-use-tdd</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tester les touches de son clavier sur Linux]]></title>
            <link>https://johackim.com/tester-les-touches-de-son-clavier-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/tester-les-touches-de-son-clavier-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/tester-les-touches-de-son-clavier-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/tester-les-touches-de-son-clavier-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour tester et vérifier que les touches de son clavier fonctionne correctement, il existe un outil sur <a href="/linux" title="Linux">Linux</a> du nom de <code>xev</code>, pour l&#x27;installer, exécutez la commande suivante :</p>

<pre><code class="language-bash">apt update &amp;&amp; apt -yq install xorg-xev
</code></pre>
<p>Pour le lancer :</p>
<pre><code class="language-bash">xev
</code></pre>
<p>Appuyez ensuite sur les touches de votre clavier pour vérifier si votre ordinateur les prend bien en compte.</p>
<p>Très utile lorsque certaines touches de son clavier sont dysfonctionnelles 😀.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tor]]></title>
            <link>https://johackim.com/tor?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/tor</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/tor.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/tor.jpg"/>
            <content:encoded><![CDATA[<p>Tor est un logiciel libre et open-source pour communiquer de manière anonyme via un réseau superposé du même nom.</p>
<h2>Installer le navigateur Tor</h2>
<p>Pour installer le navigateur, rendez-vous <a href="https://torproject.org/fr/download/">sur le site officiel</a> :</p>
<pre><code class="language-bash">wget https://www.torproject.org/dist/torbrowser/14.0.4/tor-browser-linux-x86_64-14.0.4.tar.xz
tar xvf tor-browser-linux-x86_64-14.0.4.tar.xz
sudo mv tor-browser/Browser/ /opt/tor-browser
sudo ln -s /opt/tor-browser/start-tor-browser /usr/local/bin/tor-browser
</code></pre>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">yay -S --noconfirm tor-browser-bin
</code></pre>
<p>Pour l&#x27;installer sur Debian ou Ubuntu :</p>
<pre><code class="language-bash">sudo apt install torbrowser-launcher
</code></pre>
<h2>Créer un site sur le réseau Tor</h2>
<p>Installer le réseau Tor sur votre système Linux :</p>
<pre><code class="language-bash">sudo pacman -S tor
</code></pre>
<p>Configurez le pour qu&#x27;il créer un nom de domaine au format <code>.onion</code> dans le dossier <code>/var/lib/tor/hidden_service/</code> et écoute votre port <code>80</code> :</p>
<pre><code class="language-bash">sudo sed -i -e &#x27;0,/#HiddenServiceDir/s/#HiddenServiceDir/HiddenServiceDir/&#x27; /etc/tor/torrc
sudo sed -i -e &#x27;0,/#HiddenServicePort/s/#HiddenServicePort/HiddenServicePort/&#x27; /etc/tor/torrc
sudo systemctl start tor
</code></pre>
<p>Récupérer votre nom de domaine au format <code>.onion</code> :</p>
<pre><code class="language-bash">sudo cat /var/lib/tor/hidden_service/hostname
</code></pre>
<p>Créer votre site internet :</p>
<pre><code class="language-bash">echo &#x27;Hello World&#x27; &gt; index.html
</code></pre>
<p>Démarrer votre serveur web sur le port <code>80</code> :</p>
<pre><code class="language-bash">sudo php -S 127.0.0.1:80
</code></pre>
<p>Votre site est désormais accessible sur le réseau Tor via un nom de domaine au format <code>.onion</code> (ex: <code>https://jbluqqimtgcf37fulkqa.onion/</code>).</p>
<h2>Débugger le démarrage de Tor-browser</h2>
<p>Si vous avez un problème de démarrage, lancez la commande suivante :</p>
<pre><code class="language-bash">./start-tor-browser --verbose
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/vie-privee" title="Vie privée">Vie privée</a>

</li>
<li><a href="https://github.com/torserv/torserv">https://github.com/torserv/torserv</a></li>
<li><a href="https://gitlab.torproject.org/tpo/core/oniux">https://gitlab.torproject.org/tpo/core/oniux</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Chiffrer un dossier avec eCryptfs]]></title>
            <description><![CDATA[Guide pour chiffrer un dossier avec eCryptfs sur Ubuntu ou Debian.]]></description>
            <link>https://johackim.com/chiffrer-un-dossier-avec-ecryptfs?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/chiffrer-un-dossier-avec-ecryptfs</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/chiffrer-un-dossier-avec-ecryptfs.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/chiffrer-un-dossier-avec-ecryptfs.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://doc.ubuntu-fr.org/ecryptfs">eCryptfs</a> est un outil pour chiffrer un dossier.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Debian ou Ubuntu :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -y ecryptfs-utils
</code></pre>
<h2>Initialisation</h2>
<p>Pour initialiser le répertoire <code>~/.Private</code> :</p>
<pre><code class="language-bash">ecryptfs-setup-private
</code></pre>
<h2>Utilisation</h2>
<p>Pour monter le répertoire :</p>
<pre><code class="language-bash">ecryptfs-mount-private
</code></pre>
<p>Pour démonter le répertoire :</p>
<pre><code class="language-bash">ecryptfs-umount-private 
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un fichier .gitignore automatiquement]]></title>
            <link>https://johackim.com/creer-un-fichier-.gitignore?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-fichier-.gitignore</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Jun 2021 19:19:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-fichier-.gitignore.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-fichier-.gitignore.jpg"/>
            <content:encoded><![CDATA[<p>Pour créer un fichier <code>.gitignore</code> rapidement, il existe le service <a href="https://gitignore.io/">gitignore.io</a>.</p>
<pre><code class="language-bash"># .bashrc
gi () {
    curl -L &quot;https://gitignore.io/api/$@&quot;
}
</code></pre>
<p>À chaque fois que je souhaite créer un fichier <code>.gitignore</code>, pour un projet Nodejs par exemple, j&#x27;exécute la commande suivante :</p>
<pre><code class="language-bash">gi node &gt; .gitignore
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un flux RSS avec Gatsby]]></title>
            <link>https://johackim.com/creer-un-flux-rss-avec-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-flux-rss-avec-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-flux-rss-avec-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-flux-rss-avec-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Pour créer un flux RSS avec Gatsby, installez le plugin <code>gatsby-plugin-feed</code> :</p>
<pre><code class="language-bash">npm install gatsby-plugin-feed
</code></pre>
<p>Puis, ajoutez au fichier <code>gatsby-config.js</code> la configuration suivante :</p>
<pre><code class="language-js">// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: `gatsby-plugin-feed`,
    },
  ],
};
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/rss" title="RSS" class="not-found">RSS</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer une bar de progression de lecture sur Gatsby]]></title>
            <link>https://johackim.com/creer-une-bar-de-progression-de-lecture-sur-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-une-bar-de-progression-de-lecture-sur-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-une-bar-de-progression-de-lecture-sur-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-une-bar-de-progression-de-lecture-sur-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Il existe <a href="https://gatsbyjs.com/plugins/gatsby-plugin-page-progress/">un plugin Gatsby</a> qui permet d&#x27;automatiquement ajouter une bar de progression de lecture :</p>
<pre><code class="language-bash">yarn add -D gatsby-plugin-page-progress
</code></pre>
<pre><code class="language-javascript">// gatsby-config.js
{
    resolve: &#x27;gatsby-plugin-page-progress&#x27;,
    options: {
        height: 3,
        prependToBody: false,
        color: &#x27;#4A5563&#x27;,
        footerHeight: 500,
        headerHeight: 0,
    },
},
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Docker history]]></title>
            <link>https://johackim.com/inspecter-toutes-les-couches-d&apos;une-image-docker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/inspecter-toutes-les-couches-d&apos;une-image-docker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/inspecter-toutes-les-couches-d&apos;une-image-docker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/inspecter-toutes-les-couches-d&apos;une-image-docker.jpg"/>
            <content:encoded><![CDATA[<p>Pour inspecter toutes les couches d&#x27;une image <a href="/docker" title="Docker">Docker</a>, il existe la commande suivante :</p>

<pre><code class="language-bash">docker history --no-trunc &lt;image&gt;
</code></pre>
<p>ou</p>
<pre><code class="language-bash">docker run -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/laniksj/dfimage &lt;image&gt;
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Initialiser eslint sur un projet JavaScript]]></title>
            <link>https://johackim.com/initialiser-eslint-sur-un-projet-javascript?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/initialiser-eslint-sur-un-projet-javascript</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/initialiser-eslint-sur-un-projet-javascript.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/initialiser-eslint-sur-un-projet-javascript.jpg"/>
            <content:encoded><![CDATA[<p>Pour initialiser eslint sur un projet JavaScript il existe la commande suivante :</p>
<pre><code class="language-bash">npm init @eslint/config@v0.4.6
npm pkg set scripts.lint=&quot;eslint .&quot;
</code></pre>
<p>Personnellement j&#x27;ajoute les règles suivantes au fichier <code>.eslintrc.json</code> :</p>
<pre><code class="language-js">// .eslintrc.json
&quot;rules&quot;: {
    &quot;indent&quot;: [2, 4, { &quot;SwitchCase&quot;: 1 }],
    &quot;max-len&quot;: [0],
    &quot;object-curly-newline&quot;: [0],
    &quot;import/no-extraneous-dependencies&quot;: [0],
    &quot;import/prefer-default-export&quot;: [0],
    &quot;react/jsx-filename-extension&quot;: [1, { &quot;extensions&quot;: [&quot;.js&quot;, &quot;.jsx&quot;] }],
    &quot;react/jsx-props-no-spreading&quot;: [0],
    &quot;react/jsx-indent-props&quot;: [2, 4],
    &quot;react/jsx-indent&quot;: [2, 4],
    &quot;react/prop-types&quot;: [0],
    &quot;react/no-unescaped-entities&quot;: [0],
    &quot;react/function-component-definition&quot;: [0],
    &quot;react/react-in-jsx-scope&quot;: [0],
    &quot;no-restricted-syntax&quot;: [0],
    &quot;complexity&quot;: [2, 6],
    &quot;max-depth&quot;: [2, 2]
}
</code></pre>
<p>Si jamais vous rencontrez une erreur <code>File ignored by default</code> pour un fichier qui se situe dans un dossier caché (ex: <code>.storybook</code>), ajoutez la ligne suivante à votre fichier <code>.eslintrc.json</code> :</p>
<pre><code class="language-bash">&quot;ignorePatterns&quot;: [&quot;!.storybook&quot;],
</code></pre>
<p>Si vous souhaitez ignorer une ligne de code, ajoutez le commentaire <code>// eslint-disable-line</code>.</p>
<p>Et pour plusieurs lignes de code :</p>
<pre><code class="language-js">/* eslint-disable */
console.log(&#x27;Mon code javascript&#x27;);
/* eslint-enable */

// Ou une règle particulière

/* eslint-disable max-lines-per-function */
console.log(&#x27;Mon code javascript&#x27;);
/* eslint-enable */

// Ou

/* eslint-disable-next-line complexity */
console.log(&#x27;Mon code javascript&#x27;);
</code></pre>
<p>Si vous voulez définir des exceptions, ajoutez une ligne <code>overrides</code> :</p>
<pre><code class="language-json">{
    &quot;rules&quot;: {
        &quot;max-lines-per-function&quot;: [&quot;error&quot;, 25],
    },
    &quot;overrides&quot;: [
        {
            &quot;files&quot;: [&quot;components/**&quot;],
            &quot;rules&quot;: {
                &quot;max-lines-per-function&quot;: [&quot;error&quot;, 120]
            }
        }
    ]
}
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Gérer un stockage Zapier avec cURL]]></title>
            <link>https://johackim.com/gerer-un-stockage-zapier-avec-curl?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/gerer-un-stockage-zapier-avec-curl</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/gerer-un-stockage-zapier-avec-curl.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/gerer-un-stockage-zapier-avec-curl.jpg"/>
            <content:encoded><![CDATA[<p>Zapier permet de stocker et de récupérer des données dans un mini-espace de stockage appelé <a href="https://zapier.com/help/doc/how-get-started-storage-zapier">Storage by Zapier</a>.</p>
<p>Personnellement, je me sers de cet espace de stockage pour stocker les données provenant des tâches Zapier, exemple : une liste de tweets qui s&#x27;autopublie sur Twitter.</p>
<p>Il est possible de récupérer le contenu d&#x27;un stockage Zapier avec une simple commande Linux curl :</p>
<pre><code class="language-bash">curl -s https://store.zapier.com/api/records\?secret\=&lt;uuid_secret_key&gt;
</code></pre>
<p>Et pour ajouter des données à un stockage Zapier :</p>
<pre><code class="language-bash">curl -s -X POST -H &quot;Content-Type: application/json&quot; -d &#x27;{&quot;list&quot;: [&quot;item1&quot;, &quot;item2&quot;]}&#x27; https://store.zapier.com/api/records\?secret\=&lt;uuid_secret_key&gt;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/automatisation" title="Automatisation" class="not-found">Automatisation</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[IPTV]]></title>
            <link>https://johackim.com/iptv?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/iptv</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/iptv.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/iptv.jpg"/>
            <content:encoded><![CDATA[<p>L’Internet Protocol TeleVision ou, IPTV, est le fait d’accéder à des chaines de télévision avec internet. Ce qui permet ’avoir accès à la télévision sur un ordinateur ou smartphone.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Intégrer Tailwind CSS à gatsby]]></title>
            <link>https://johackim.com/integrer-tailwind-css-a-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/integrer-tailwind-css-a-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/integrer-tailwind-css-a-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/integrer-tailwind-css-a-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Pour intégrer <a href="https://tailwindcss.com/">Tailwind CSS</a> dans <a href="https://gatsbyjs.com/">Gatsby</a>, installez les packages npm suivants :</p>
<pre><code class="language-bash">npm install -D tailwindcss postcss autoprefixer gatsby-plugin-postcss
</code></pre>
<h2>1. Configurer Tailwind &amp; Postcss</h2>
<p>Créez les fichiers de configuration <code>tailwind.config.js</code>, <code>postcss.config.js</code> et <code>gatsby-config.js</code> :</p>
<pre><code class="language-javascript">// tailwind.config.js

module.exports = {
    purge: [&#x27;./src/**/*.{js,jsx,ts,tsx}&#x27;],
    darkMode: false,
    theme: {
        extend: {},
    },
    variants: {
        extend: {},
    },
    plugins: [],
};
</code></pre>
<pre><code class="language-javascript">// postcss.config.js

module.exports = {
    plugins: {
        tailwindcss: {},
        autoprefixer: {},
    },
};
</code></pre>
<pre><code class="language-javascript">// gatsby-config.js

module.exports = {
    plugins: [&#x27;gatsby-plugin-postcss&#x27;],
}
</code></pre>
<h2>2. Créer un fichier style.css</h2>
<p>Puis créez un fichier <code>style.css</code> à intégrer dans le fichier <code>gatsby-browser.js</code> :</p>
<pre><code class="language-css">/* src/style.css */

@tailwind base;
@tailwind components;
@tailwind utilities;
</code></pre>
<pre><code class="language-js">// gatsby-browser.js

import &#x27;./src/style.css&#x27;;
</code></pre>
<h2>3. Utiliser Tailwind CSS dans votre code</h2>
<p>Vous pouvez à présent utiliser Tailwind CSS partout dans votre code 😀 :</p>
<pre><code class="language-js">// src/pages/index.js

import React from &#x27;react&#x27;;

const IndexPage = () =&gt; (
    &lt;p className=&quot;text-red-800&quot;&gt;Hello world!&lt;/p&gt;
);

export default IndexPage;
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://tailwindcss.com/docs/guides/gatsby">https://tailwindcss.com/docs/guides/gatsby</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kodi]]></title>
            <link>https://johackim.com/kodi?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/kodi</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/kodi.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/kodi.jpg"/>
            <content:encoded><![CDATA[<p>Kodi (anciennement XBMC) est un lecteur multimédia libre qui tourne nativement sur les systèmes d’exploitation BSD, Raspbian, GNU/Linux, Mac OS X, Microsoft Windows, Android et iOS.</p>
<h2>Installer un dépôt sur Kodi</h2>
<p>Un dépôt ou repository regroupe une sélection d&#x27;extensions (ou add-ons), que vous pouvez installer directement depuis l&#x27;application Kodi. Vous n&#x27;avez donc pas besoin de chercher add-on par add-on, tout est regroupé dans un dépôt ou repository.</p>
<p>Le plus connu de tous c&#x27;est <a href="https://superrepo.org/">SuperRepo</a> qui compte pas moins de 5000 add-ons.</p>
<p>Pour ajouter un dépôt :</p>
<ol>
<li>Rendez-vous dans Système (la petite icône engrenage en haut à gauche)</li>
<li>Dans le gestionnaire de fichiers</li>
<li>Appuyer sur &quot;Ajouter une source&quot;</li>
<li>Ajouter l&#x27;adresse : <a href="http://srp.nu">http://srp.nu</a> là où il y a marqué &quot;aucun&quot;, et donnez-lui un nom (ex : &quot;SuperRepo&quot;).</li>
<li>Rendez-vous ensuite dans Système → Extensions</li>
<li>Appuyer sur &quot;Installer depuis un fichier zip&quot;</li>
<li>Sélectionnez votre source précédemment nommée &quot;SuperRepo&quot; → Krypton → all → <code>superrepo.kodi.krypton.all-0.7.04.zip</code></li>
</ol>
<p>Voilà ! Maintenant vous pouvez parcourir toutes les extensions et prendre celles dont vous avez besoin depuis le menu Système → Extensions → Installer depuis un dépôt → SuperRepo.</p>
<p>Cette installation fonctionne avec SuperRepo de la même façon que n&#x27;importe quel autre dépôt 😉</p>
<p>PS : Pour supprimer l&#x27;icône thermomètre, ajoutez le paramètre <code>avoid_warnings=1</code> dans le fichier <code>/boot/config.txt</code>.</p>
<p>PS2 : Si vous n&#x27;arrivez pas à installer l&#x27;Add-on YouTube, exécutez la commande <code>sudo apt install -y kodi-inputstream-adaptive</code></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kopia]]></title>
            <link>https://johackim.com/kopia?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/kopia</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/kopia.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/kopia.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/kopia/kopia">Kopia</a> est un logiciel de sauvegarde disponible sur Windows, macOS et Linux.</p>
<h2>Initialiser un dépôt</h2>
<pre><code class="language-bash">kopia repository create s3 --bucket=&lt;bucket&gt; --access-key=&lt;access_key&gt; --secret-access-key=&lt;secret_key&gt; --endpoint &lt;endpoint&gt;
</code></pre>
<h2>Créer une sauvegarde</h2>
<pre><code class="language-bash">kopia snapshot create &lt;dossier|fichier&gt;
</code></pre>
<h2>Monter un dépôt</h2>
<pre><code class="language-bash">kopia mount all &lt;dossier&gt;
kopia mount &lt;snapshot_id&gt; &lt;dossier&gt;
</code></pre>
<h2>Se déconnecter d&#x27;un dépôt</h2>
<pre><code class="language-bash">kopia repository disconnect
</code></pre>
<h2>Se connecter à un dépôt</h2>
<pre><code class="language-bash">kopia repository connect s3 --bucket=&lt;bucket&gt; --access-key=&lt;access_key&gt; --secret-access-key=&lt;secret_key&gt; --endpoint &lt;endpoint&gt;
</code></pre>
<h2>Lister les sauvegardes</h2>
<pre><code class="language-bash">kopia snapshot list
</code></pre>
<h2>Lister les fichier d&#x27;une sauvegarde</h2>
<pre><code class="language-bash">kapia ls -l &lt;snpashot_id&gt;
</code></pre>
<h2>Supprimer une sauvegarde</h2>
<pre><code class="language-bash">kopia snapshot delete &lt;snapshot_id&gt; --delete
</code></pre>
<h2>Changer le type de compression</h2>
<pre><code class="language-bash">kopia policy set --global --compression=pgzip
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes films préférés]]></title>
            <link>https://johackim.com/mes-films-preferes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-films-preferes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-films-preferes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-films-preferes.jpg"/>
            <content:encoded><![CDATA[<h2>Mes films préférés</h2>
<ul>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=448.html">Retour vers le futur</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=27070.html">Le seigneur des anneaux</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=19776.html">Matrix</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=135564.html">Limitless</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=234023.html">Le fondateur</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=222858.html">Night Call</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=233140.html">Molly&#x27;s Game</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=140005.html">Le stratège</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=147912.html">The Social Network</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=198371.html">The Imitation Game</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=54098.html">À la recherche du bonheur</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=127524.html">Le Loup de Wall Street</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=190918.html">Django Unchained</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=192826.html">Gold</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=227900.html">The big short</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=285354.html">Tetris</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=12475.html">American History X</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=363.html">Good Will Hunting</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=138673.html">Warrior</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=11736.html">Les évadés</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=47422.html">N&#x27;oublie jamais</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=5818.html">Titanic</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=131377.html">Twilight</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=115362.html">The Dark Knight</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=256661.html">Green Book</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=21189.html">Fight Club</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=4307.html">La Grande Vadrouille</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=134316.html">Good Morning England</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=225953.html">Whiplash</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=15282.html">Un air de famille</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=271682.html">Avengement</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=190267.html">Argo</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=123837.html">Wanted</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=28771.html">Phone Game</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=21608.html">American Pie</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=14539.html">Astérix et Obélix contre César</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=45361.html">Le jour d&#x27;après</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=25744.html">Memento</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=191696.html">Capitaine Phillips</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=126169.html">Taken</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=261322.html">L&#x27;intervention</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=217882.html">Gone Girl</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=46943.html">Le Dernier Samouraï</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=108998.html">Le prestige</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=262396.html">LE MANS 66</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=196253.html">War Dogs</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=29298.html">Chevalier</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=4063.html">Douze Hommes en colère</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=195370.html">Rush</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=255238.html">Parasite</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=127486.html">Les Noces rebelles</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=18524.html">Le Masque de Zorro</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=134390.html">La vague</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=28331.html">Le jouet</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=272238.html">King richard</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=57138.html">Pirates des Caraïbes</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=5241.html">Les visiteurs</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=176010.html">Exam</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=175053.html">Source Code</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=235582.html">Le grand bain</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=133676.html">Never Back Down</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=129694.html">Invictus</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=238330.html">Sully</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=263058.html">Alerte Rouge</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=227320.html">Captain Fantastic</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=26857.html">Ocean&#x27;s Eleven</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=282400.html">Treize vies</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=219070.html">Hidden Figures</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=10498.html">Speed</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=309509.html">You Can Live Forever</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=262529.html">Le Roi</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=57952.html">Slevin</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=279115.html">Élémentaire</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=222943.html">Gran Turismo</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=297981.html">Covenant</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=288967.html">L&#x27;Astronaute</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=35973.html">Arrête-moi si tu peux</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=138730.html">Kick-ass</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=42151.html">Spirit</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=176673.html">La couleur des sentiments</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=7221.html">Maman, je m&#x27;occupe des méchants</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=16731.html">Le Dîner de cons</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=29233.html">Tron l&#x27;héritage</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=180314.html">Time Out</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=268384.html">Le Robot Sauvage</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=226449.html">Predestination</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=182266.html">The Revenant</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=53499.html">Un amour de Coccinelle</a></li>
</ul>
<h2>Réalisateurs Préférés</h2>
<ul>
<li><a href="https://allocine.fr/personne/fichepersonne_gen_cpersonne=30367.html">Christopher Nolan</a></li>
<li><a href="https://allocine.fr/personne/fichepersonne_gen_cpersonne=15709.html">David Fincher</a></li>
<li><a href="https://allocine.fr/personne/fichepersonne_gen_cpersonne=95119.html">Bong Joon-ho</a></li>
<li><a href="https://allocine.fr/personne/fichepersonne_gen_cpersonne=1146.html">Clint Eastwood</a></li>
<li><a href="https://allocine.fr/personne/fichepersonne_gen_cpersonne=28839.html">Olivier nakache</a> et <a href="https://allocine.fr/personne/fichepersonne_gen_cpersonne=28840.html">Éric toledano</a></li>
</ul>
<h2>Court métrage</h2>
<ul>
<li><a href="https://youtube.com/watch?v=JEQZ5Tb-6Ps">Lost &amp; Found</a></li>
</ul>
<h2>À regarder / Revoir</h2>
<ul>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=1628.html">Le parrain</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=10080.html">Braveheart</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=7653.html">Le Dernier des Mohicans</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=3659.html">Le grand bleu</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=60208.html">Inglourious Basterds</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=306197.html">Back To Black</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=313550.html">The Amateur</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=310732.html">Saint-Ex</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=308284.html">Karate Kid: Legends</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=41236.html">Rencontre à Wicker Park</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=323024.html">Anora</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=108818.html">Je vais bien, ne t&#x27;en fais pas</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=4066.html">Qui veut la peau de Roger Rabbit ?</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=3316.html">Anastasia</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=29007.html">Spider Man</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=145083.html">Hunger Games</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=221617.html">L&#x27;amour ouf</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=324170.html">The apprentice</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=111748.html">P.S. I Love You</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=18598.html">Il faut sauver le soldat Ryan</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=313781.html">L’Attachement</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=302474.html">Flow</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=314009.html">En fanfare</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=302868.html">The Gorge</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=40191.html">Eternal Sunshine</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=293844.html">Nobody 2</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=209297.html">De toutes nos forces</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=299938.html">Je verrai toujours vos visages</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=59068.html">Orgueil et préjugés</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=1000019746.html">Exit 8</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=316785.html">Ollie</a></li>
<li>Kingdom of heaven</li>
<li>Apollo 13</li>
<li>Flubber</li>
<li>Madame Doubtfire</li>
<li>Divergent</li>
<li>Le monstre des mers</li>
<li>Le Cercle des poètes disparus</li>
<li>Le premier jour du reste de ta vie</li>
<li>Le plus beau des combats</li>
<li>Anora</li>
<li>Past Lives</li>
<li>Jobs (2013)</li>
<li>Il faut sauver le soldat Ryan</li>
<li>Ad astra</li>
<li>Gangs of New York</li>
<li>Le Fabuleux destin d&#x27;Amélie Poulain</li>
<li>Les Contes du chat perché (1994)</li>
<li>Les Histoires du père Castor (1993)</li>
<li>Petit ours brun (1988)</li>
<li>La croisée des mondes</li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=308.html">Taxi Driver</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=67.html">Amadeus</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=7663.html">Impitoyable</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=4327.html">Les Tontons flingueurs</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=100714.html">Pour une poignée de dollars</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=929.html">Et pour quelques dollars de plus</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=19395.html">Le Bon, la brute et le truand</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=2021.html">Il était une fois dans l&#x27;Ouest</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=1941.html">Il était une fois en Amérique</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=271957.html">Martin Eden</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=271687.html">Nomadland</a></li>
<li><a href="https://allocine.fr/film/fichefilm_gen_cfilm=324466.html">Nuremberg</a></li>
<li>Rainman</li>
<li>Lamborguini</li>
<li>Encanto</li>
<li>LOL 2.0</li>
</ul>
<h2>Films que je n&#x27;aime pas</h2>
<ul>
<li>Films de Hayao Miyazaki</li>
<li>Films de Tim Burton</li>
<li>Blade Runner</li>
</ul>
<h2>Moteurs de recherche</h2>
<ul>
<li><a href="https://tastedive.com/">https://tastedive.com/</a></li>
<li><a href="https://imdb.com/chart/top/">https://imdb.com/chart/top/</a></li>
<li><a href="https://imdb.com/chart/moviemeter/">https://imdb.com/chart/moviemeter/</a></li>
<li><a href="https://allocine.fr/film/meilleurs/">https://allocine.fr/film/meilleurs/</a></li>
<li><a href="https://flickmetrix.com/movies">https://flickmetrix.com/movies</a></li>
<li><a href="https://phi-phenomenon.org/rank/">https://phi-phenomenon.org/rank/</a></li>
<li><a href="https://nothing-to-watch.port80.ch/">https://nothing-to-watch.port80.ch/</a></li>
<li><a href="https://nytimes.com/interactive/2025/movies/best-movies-21st-century.html">https://nytimes.com/interactive/2025/movies/best-movies-21st-century.html</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes jeux vidéos préférés]]></title>
            <link>https://johackim.com/mes-jeux-preferes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-jeux-preferes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-jeux-preferes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-jeux-preferes.jpg"/>
            <content:encoded><![CDATA[<h2>Mes jeux vidéos préférés</h2>
<ul>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-435451/">Sea of thieves</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-79726/">Mount &amp; Blade II : Bannerlord</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-657628/">Far Cry 5</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-77113/">The Legend of Zelda : Breath of the Wild</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-75478/">Minecraft</a></li>
<li><a href="https://jeuxvideo.com/jeux/add-on/jeu-113394/">Age of empire</a></li>
<li><a href="https://tibosoftware.com/bad-toys.htm">Bad Toys 3D</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00000439-goblins-3.htm">Goblins</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-55671/">Need for Speed : Conduite en Etat de Liberté</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-55623/">MDK</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-79254/">Hotline Miami</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1056648/">Microsoft Flight Simulator</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00000639-monster-truck-madness.htm">Monster Truck Madness</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-74347/">Jedi Knight II</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-766834/">Adibou</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-65185/">Far Cry 2</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00000572-les-incroyables-machines-du-professeur-tim.htm">Professeur TIM</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-65346/">Skate</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-57067/">Grand Theft Auto 2</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-57697/">Tomb Raider : Sur les Traces de Lara Croft</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00000653-motocross-madness.htm">Motocross Madness</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-55676/">NHL 99</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-55421/">Fifa 99</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-64445/">Crysis</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-92418/">Pokémon Version Rouge</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=1650">Le maitre des éléments</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=235">Professeur TIM</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=868">Les 9 Destins de Valdo</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=720">Mais où se cache Carmen Sandiego ?</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=1525">Dr. Brain a perdu la tête</a></li>
<li><a href="https://myabandonware.com/game/the-time-warp-of-dr-brain-3rf">Dr. Brain voyage dans le temps</a></li>
<li><a href="https://myabandonware.com/game/balls-of-steel-e1h">Balls of Steel</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=1254&amp;fic=liens">Swiv 3D</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=972">Creep night pinball</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=1898&amp;fic=liens">Fifa 97</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=810">Lucky Luke</a></li>
<li><a href="https://myabandonware.com/game/pro-pilot-99-gxz">Pro Pilot</a></li>
<li><a href="https://abandonware-france.org/ltf_abandon/ltf_jeu.php?id=3540">Artus contre le démon du musée</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00021963-world-of-goo.htm">World of Goo</a></li>
<li><a href="https://store.steampowered.com/app/2263010/Pineapple_on_pizza/">Pineapple on pizza</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-61932/">Le Seigneur des Anneaux : Le Retour du Roi</a></li>
<li><a href="https://jeuxvideo.com/jeux/super-nintendo-snes/00005253-bust-a-move.htm">Bust a move</a></li>
<li><a href="https://skribbl.io/">Skribbl</a></li>
<li><a href="https://garticphone.com/book">Gartic Phone</a></li>
<li><a href="https://geoguessr.com/">GeoGuessr</a></li>
<li><a href="https://guesswhereyouare.com/">Guess Where You Are</a></li>
<li><a href="https://steamcommunity.com/sharedfiles/filedetails/?id=135509255">PropHunt</a></li>
<li><a href="https://store.steampowered.com/app/1144200/Ready_or_Not/">Ready or Not</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00008643-paris-marseille-racing.htm">Paris-Marseille Racing</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00000632-midtown-madness.htm">Midtown Madness</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-61121/">Bilbo le Hobbit</a></li>
<li><a href="https://store.steampowered.com/app/617830/SUPERHOT_VR/">Superhot VR</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-55807/">Sega Rally Championship</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-61805/">Worms 3D</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-59223/">Worms Blast</a></li>
<li><a href="https://jeuxvideo.com/jeux/gamecube-ngc/00014576-mario-smash-football.htm">Mario Smash Football</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00003039-natural-fawn-killers.htm">Natural Fawn Killers</a></li>
</ul>
<h2>Meilleurs jeux multijoueur split screen</h2>
<ul>
<li><a href="https://jeuxvideo.com/jeux/jeu-861946/">Overcook 2</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1120164/">Moving Out</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-456368/">Human Fall Flat</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-81567/">TowerFall Ascension</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-83438/">Gang Beasts</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-719751/">Stick Fight</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-669454/">A Way Out</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-1243182/">It Takes Two</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-931311/">Minecraft Dungeons</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-929555/">Pummel Party</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1056663/">LEGO Star Wars : La Saga Skywalker</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-74170/">Serious Sam III : BFE</a></li>
<li><a href="https://jeuxvideo.com/jeux/add-on/jeu-89466/">Super Street Fighter IV : Arcade Edition</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-415307/">Borderlands 3</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1394650/">FIFA 22</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-459327/">Golf With Your Friends</a></li>
<li><a href="https://store.steampowered.com/app/503770/Elven_Assassin/">Elven Assassin</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/00049839-broforce.htm">BroForce</a></li>
<li><a href="https://store.steampowered.com/app/673750/Super_Bunny_Man/">Super Bunny Man</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-78294/">Call of Duty : Black Ops II</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-416484/">Call of Duty : Black Ops III</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-646543/">Call of Duty : WWII</a></li>
</ul>
<h2>Jeux à tester</h2>
<ul>
<li><a href="https://jeuxvideo.com/jeux/jeu-1579997/">Star Wars Jedi : Survivor</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1450472/">The Elder Scrolls V : Skyrim : Anniversary Edition</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-554033/">Red Dead Redemption II</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-80668/">The Forest</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1022418/">Kingdom Come : Deliverance - Édition Royale</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-542785/">Blackwake</a></li>
<li><a href="https://store.steampowered.com/app/648800/Raft/">Raft</a></li>
<li><a href="https://store.steampowered.com/app/1635450/Longvinter/">Longviter</a></li>
<li><a href="https://store.steampowered.com/app/1216320/Shieldwall/">Shieldwall</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-1826446/">Lethal Company</a></li>
<li><a href="https://store.steampowered.com/app/1388550/Human_Fall_Flat_2/">Human Fall Flat 2</a></li>
<li><a href="https://store.steampowered.com/app/1677740/Stumble_Guys/">Stumble Guys</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1057033/">Fall Guys : Ultimate Knockout</a></li>
<li><a href="https://store.steampowered.com/app/1721470/Poppy_Playtime/">Poppy Playtime</a></li>
<li><a href="https://store.steampowered.com/app/1607680/Bread__Fred/">Bread &amp; Fred</a></li>
<li><a href="https://store.steampowered.com/app/2653790/The_Exit_8/">The Exit 8</a></li>
<li><a href="https://jeuxvideo.com/jeux/pc/jeu-1589821/">Spider Man Remastered</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-987683/">Totally Reliable Delivery Service</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1222511/">DiRT 5</a></li>
<li><a href="https://store.steampowered.com/app/553850/HELLDIVERS_2/">HELLDIVERS 2</a></li>
<li><a href="https://store.steampowered.com/app/1211020/Wobbly_Life/">Wobbly Life</a></li>
<li><a href="https://store.steampowered.com/app/2881650/Content_Warning/">Content Warning</a></li>
<li><a href="https://store.steampowered.com/app/620/Portal_2/">Portal 2</a></li>
<li><a href="https://store.steampowered.com/app/892970/Valheim/">Valheim</a></li>
<li><a href="https://store.steampowered.com/app/1363080/Manor_Lords/">Manor Lords</a></li>
<li><a href="https://store.steampowered.com/app/1062830/Embr/">Embr</a></li>
<li><a href="https://store.steampowered.com/app/2109770/Kingmakers/">Kingmakers</a></li>
<li><a href="https://store.steampowered.com/app/1245620/ELDEN_RING/">Elden Ring</a></li>
<li><a href="https://store.steampowered.com/app/252490/Rust/">Rust</a></li>
<li><a href="https://store.steampowered.com/app/756800/Contraband_Police/">Contraband Police</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1831586/">Brothers: A Tale of Two Sons Remake</a></li>
<li><a href="https://store.steampowered.com/app/2796180/SILENT_BREATH/">SILENT BREATH</a></li>
<li><a href="https://store.steampowered.com/app/629760/MORDHAU/">Mordhau</a></li>
<li><a href="https://store.steampowered.com/app/2358720/Black_Myth_Wukong/">Black Myth: Wukong</a></li>
<li><a href="https://store.steampowered.com/app/1284190/The_Planet_Crafter/">The Planet Crafter</a></li>
<li><a href="https://store.steampowered.com/app/2708450/Oh_Deer/">Oh Deer</a></li>
<li><a href="https://store.steampowered.com/app/2840770/">Avatar: Frontiers of Pandora</a></li>
<li><a href="https://store.steampowered.com/app/409710/BioShock_Remastered/">BioShock™ Remastered</a></li>
<li><a href="https://store.steampowered.com/app/1304930/The_Outlast_Trials/">The Outlast Trials</a></li>
<li><a href="https://store.steampowered.com/app/1959280/Over_Jump_Rally/">Over Jump Rally</a></li>
<li><a href="https://store.steampowered.com/app/1771300/Kingdom_Come_Deliverance_II/">Kingdom Come Deliverance 2</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1933820/">Tomb Raider IV-VI Remastered</a></li>
<li><a href="https://store.steampowered.com/app/3121110/Zort/">Zort</a></li>
<li><a href="https://store.steampowered.com/app/1472560/">I Am Fish</a></li>
<li><a href="https://store.steampowered.com/app/2545360/Lonely_Mountains_Snow_Riders/">Lonely Mountains: Snow Riders</a></li>
<li><a href="https://store.steampowered.com/app/2916430/Fast_Food_Simulator/">Fast Food Simulator</a></li>
<li><a href="https://store.steampowered.com/app/1926520/">Ambulance Life: A Paramedic Simulator</a></li>
<li><a href="https://jeuxvideo.com/jeux/jeu-1801839/">Le Seigneur des Anneaux : Tales of the Shire</a></li>
<li><a href="https://store.steampowered.com/app/2001120/">Split Fiction</a></li>
<li><a href="https://store.steampowered.com/app/521890/">Hello Neighbor</a></li>
<li><a href="https://store.steampowered.com/app/1321680/">Hello Neighbor 2</a></li>
<li><a href="https://store.steampowered.com/app/2596100/Lycans/">Lycans</a></li>
<li><a href="https://store.steampowered.com/app/1212410/Hourglass/">Hourglass</a></li>
<li><a href="https://store.steampowered.com/app/1612960/Balloon_Flight/">Balloon Flight</a></li>
<li><a href="https://store.steampowered.com/app/636480/Ravenfield/">Ravenfield</a></li>
<li><a href="https://store.steampowered.com/app/2138720/REMATCH/">Rematch</a></li>
<li><a href="https://store.steampowered.com/app/3263320/">Carry The Glass</a></li>
<li><a href="https://store.steampowered.com/app/433340/Slime_Rancher/">Slime Rancher</a></li>
<li><a href="https://store.steampowered.com/app/850190/Goat_Simulator_3/">Goat simulator 3</a></li>
<li><a href="https://store.steampowered.com/app/275850/No_Mans_Sky/">No Man&#x27;s Sky</a></li>
<li><strong><a href="https://store.steampowered.com/app/1805110/Solarpunk/">Solarpunk</a></strong></li>
<li><strong><a href="https://store.steampowered.com/app/3527290/PEAK/">PEAK</a></strong></li>
<li><strong><a href="https://store.steampowered.com/app/3949040/RV_There_Yet/">RV There Yet?</a></strong></li>
<li>R.E.P.O.</li>
<li>Crusader Kings 3</li>
<li>Zoochosis</li>
<li>We Were Here</li>
<li>Mount &amp; Blade II: Bannerlord - War Sails</li>
</ul>
<h2>Jeux VR</h2>
<ul>
<li><a href="https://store.steampowered.com/app/1116540/DAVIGO_VR_vs_PC/">DAVIGO: VR vs. PC</a></li>
<li><a href="https://store.steampowered.com/app/1683340/Kayak_VR_Mirage/">Kayak VR: Mirage</a></li>
<li>Horizon: Call of the Mountain</li>
<li>The Climb 2</li>
<li>Job Simulator</li>
<li>Kitchen Panic</li>
<li>Cooking simulator</li>
</ul>
<h2>Party Games / Couch Gaming</h2>
<ul>
<li>Party animals</li>
<li>Human Fall Flat</li>
<li>Gang Beasts</li>
<li>Broforce</li>
<li>Overcook</li>
<li>Totally Reliable Delivery Service</li>
<li>Bread &amp; Fred</li>
<li>Stumble Guys</li>
<li>TowerFall</li>
<li>Moving Out</li>
<li>Stick Fight</li>
<li>Super Bunny Man</li>
<li>Unravel Two</li>
<li>Serious Sam 3 BFE</li>
<li>Worms Blast</li>
<li>Friendly Strike</li>
<li>Road redemption</li>
<li>One-armed cook</li>
<li>Yet Another Zombie Defense</li>
<li>Biped</li>
<li>KIBORG</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/jeux-videos" title="Jeux vidéos" class="not-found">Jeux vidéos</a>

</li>
<li><a href="https://videogamecanon.com/">https://videogamecanon.com/</a></li>
<li><a href="https://acclaimedvideogames.com/">https://acclaimedvideogames.com/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes séries préférés]]></title>
            <link>https://johackim.com/mes-series-preferes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-series-preferes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-series-preferes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-series-preferes.jpg"/>
            <content:encoded><![CDATA[<ul>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=17966.html">Mr. Robot</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=17907.html">Le bureau des légendes</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=3517.html">Breaking Bad</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=10855.html">Black mirror</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=7663.html">House of cards</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=446.html">How I met your mother</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=21504.html">La Casa de Papel</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=10214.html">Vikings</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=20328.html">Dark</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=11701.html">Silicon Valley</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=7157.html">Game of thrones</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=30.html">The Wire</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=7330.html">The Walking Dead</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=19156.html">Stranger Things</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=669.html">H</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=24836.html">En thérapie</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=23024.html">Sex Education</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=24940.html">How To Sell Drugs Online (Fast)</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=21143.html">Atypical</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=29898.html">Squid Game</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=58.html">24 heures chrono</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=18529.html">The Last Kingdom</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=22668.html">The Boys</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=24971.html">Le Jeu de la dame</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=22963.html">The Mandalorian</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=27908.html">Ahsoka</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=22408.html">One Piece</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=7684.html">Misfits</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=9285.html">Homeland</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=451.html">Prison break</a></li>
</ul>
<p>À regarder :</p>
<ul>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=28257.html">Black Bird</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=32897.html">The Playlist</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=33158.html">En Place</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=33200.html">The Day of the Jackal</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=28815.html">The Bear</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=30084.html">The Penguin</a></li>
<li><a href="https://allocine.fr/series/ficheserie_gen_cserie=19344.html">Baron Noir</a></li>
<li>Adolescence</li>
<li>S.W.A.T.</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://next-episode.net/">https://next-episode.net/</a></li>
<li><a href="https://imdb.com/chart/toptv/">https://imdb.com/chart/toptv/</a></li>
<li><a href="https://imdb.com/chart/tvmeter/">https://imdb.com/chart/tvmeter/</a></li>
<li><a href="https://allocine.fr/series/meilleures/">https://allocine.fr/series/meilleures/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Puppeteer]]></title>
            <link>https://johackim.com/puppeteer?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/puppeteer</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/puppeteer.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/puppeteer.jpg"/>
            <content:encoded><![CDATA[<p>Si vous souhaitez parser un site internet, il existe <a href="https://github.com/puppeteer/puppeteer">puppeteer</a>.</p>
<h2>Installation</h2>
<p>Pour installer puppeteer :</p>
<pre><code class="language-bash">yarn add -D puppeteer
</code></pre>
<h2>Prendre un screenshot</h2>
<p>Voici un exemple de script Node.js pour prendre un screenshot d&#x27;un site internet :</p>
<pre><code class="language-js">#!/bin/node

const puppeteer = require(&#x27;puppeteer&#x27;);

(async () =&gt; {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(&#x27;https://johackim.com&#x27;);
  await page.screenshot({ path: &#x27;example.png&#x27; });

  await browser.close();
})();
</code></pre>
<h2>Parser l&#x27;URL d&#x27;une vidéo</h2>
<p>Si la page que vous souhaitez parser dispose d&#x27;un lien video, vous pouvez reprendre son URL :</p>
<pre><code class="language-js">const url = await page.$eval(&#x27;video&#x27;, (a) =&gt; a.getAttribute(&#x27;src&#x27;));
</code></pre>
<p>Et si vous intégrer <code>youtube-dl</code>, vous pouvez enregistrer la vidéo en question :</p>
<pre><code class="language-js">await execSync(`youtube-dl -o &quot;${filePath}&quot; -f &#x27;best[ext=mp4]&#x27; ${url}`, { stdio: &#x27;inherit&#x27; });
</code></pre>
<h2>Vous connecter sur un site automatiquement</h2>
<p>Vous pouvez vous connecter automatiquement sur un site en remplissant automatiquement les champs <code>email</code> et <code>password</code>, puis sauvegarder le cookie dans un fichier <code>cookie.json</code> :</p>
<pre><code class="language-js">await page.focus(&#x27;input#email&#x27;);
await page.keyboard.type(email);

await page.focus(&#x27;input#password&#x27;);
await page.keyboard.type(password);

await page.click(&#x27;.container form button[type=submit]&#x27;);

await page.waitForSelector(&#x27;.logged-in&#x27;);

const cookies = await page.cookies();
await page.setCookie(...cookies);

fs.writeFileSync(&#x27;cookie.json&#x27;, JSON.stringify(cookies, null, 2));
</code></pre>
<p>Facultatif : vous pouvez exporter le cookie directement depuis votre navigateur via <a href="https://chrome.google.com/webstore/detail/json-for-puppet/nmckokihipjgplolmcmjakknndddifde">cette extension</a>.</p>
<p>Pour réutiliser vos cookies dans une autre session Puppeteer :</p>
<pre><code class="language-js">const cookieFile = await fs.readFile(&#x27;cookies.json&#x27;);
const cookies = JSON.parse(cookieFile);
await page.setCookie(...cookies);
</code></pre>
<h2>Modifier les paramètre du navigateur headless</h2>
<p>Puppetteer vous permet de modifier les paramètres du navigateur headless. Si vous souhaitez modifier le navigateur ou le header HTTP User-Agent, écrivez les lignes suivantes :</p>
<pre><code class="language-js">const browser = await puppeteer.launch({ executablePath: &#x27;/usr/bin/google-chrome-stable&#x27; });
const page = await browser.newPage();
await page.setUserAgent(&#x27;Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4512.0 Safari/537.36&#x27;);
</code></pre>
<h2>Récupérer le contenu complet d&#x27;une page HTML</h2>
<pre><code class="language-js">const html = await page.content();
// Ou
const html = await page.evaluate(() =&gt; document.body.innerHTML);
</code></pre>
<h2>Debugger</h2>
<p>Pour débugger, désactivez le mode <code>headless</code> :</p>
<pre><code class="language-bash">await puppeteer.launch({ headless: false });
</code></pre>
<p>Cela vous permettra de visualiser le rendu directement depuis un vrai navigateur.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Rclone]]></title>
            <link>https://johackim.com/rclone?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/rclone</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/rclone.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/rclone.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://rclone.org/">Rclone</a> est un outil de backups open-source disponible sur Linux, macOS et Windows.</p>
<h2>Installation</h2>
<p>Vous pouvez l&#x27;installer manuellement :</p>
<pre><code class="language-bash">wget https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
sudo mv rclone-*-linux-amd64/rclone /usr/local/bin
sudo chmod +x /usr/local/bin/rclone
</code></pre>
<p>Ou via cette commande si vous êtes sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S rclone
</code></pre>
<h2>Configuration</h2>
<pre><code class="language-bash">rclone config
</code></pre>
<h2>Configurer un stockage chiffré</h2>
<pre><code class="language-bash">rclone config # Choisir &quot;crypt&quot; (11) comme type de stockage
</code></pre>
<h2>Voir la liste des remotes</h2>
<pre><code class="language-bash">rclone listremotes
</code></pre>
<h2>Voir la liste les dossiers/buckets</h2>
<pre><code class="language-bash">rclone lsd &lt;remote&gt;:
</code></pre>
<h2>Voir la liste des fichiers</h2>
<pre><code class="language-bash">rclone ls &lt;remote&gt;:
</code></pre>
<h2>Monter un répertoire</h2>
<pre><code class="language-bash">rclone mount &lt;remote&gt;:/ &lt;folder&gt;
</code></pre>
<h2>Monter un répertoire en tâche de fond</h2>
<pre><code class="language-bash">rclone mount --detach &lt;remote&gt;:/ &lt;folder&gt;
</code></pre>
<h2>Démonter un répertoire</h2>
<pre><code class="language-bash">fusermount -u &lt;path&gt;
</code></pre>
<h2>Pour monter un répertoire avec un meilleur accès en lecture</h2>
<pre><code class="language-bash">rclone mount --vfs-cache-mode full &lt;remote&gt;:/ &lt;folder&gt;
</code></pre>
<h2>Copier des données d&#x27;un dossier à une source</h2>
<pre><code class="language-bash">rclone copy --progress &lt;folder&gt; &lt;remote&gt;:/
</code></pre>
<h2>Copier des données d&#x27;une source à une autre</h2>
<pre><code class="language-bash">rclone copy --progress &lt;source&gt;:/ &lt;dest&gt;:/
</code></pre>
<h2>Synchroniser deux sources avec les mêmes fichiers</h2>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">https://rclone.org/commands/rclone_sync/</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Sync the source to the destination, changing the destination only.</p>
                    </div>
                </blockquote>
<pre><code class="language-bash">rclone sync --progress &lt;source&gt;:/ &lt;remote&gt;:/
</code></pre>
<h2>Chiffrer la configuration rclone</h2>
<pre><code class="language-bash">rclone config # Set configuration password
</code></pre>
<h2>Vérifier la correspondance entre source et destination</h2>
<pre><code class="language-bash">rclone check &lt;source&gt;:/ &lt;dest&gt;:/
rclone check --size-only --one-way &lt;source&gt;:/ &lt;dest&gt;:/ # Check rapide
</code></pre>
<h2>Récupérer un fichier anciennement versionné dans un bucket B2 chez backblaze</h2>
<pre><code class="language-bash">rclone ls --b2-versions &lt;remote&gt;:
rclone copy --progress --b2-versions &lt;remote&gt;:&lt;file&gt; .
</code></pre>
<h2>Supprimer les anciennes versions d&#x27;un fichier versionné dans un bucket B2 chez backblaze</h2>
<pre><code class="language-bash">rclone cleanup --b2-versions backblaze-crypt:/file.txt
</code></pre>
<h2>Déplacer un dossier</h2>
<pre><code class="language-bash">rclone move --progress --create-empty-src-dirs --delete-empty-src-dirs &lt;source&gt;:/path &lt;dest&gt;:/path
</code></pre>
<h2>Autoriser d&#x27;autres applications à utiliser rclone</h2>
<pre><code class="language-bash">rclone mount --allow-other &lt;remote&gt;:/ &lt;folder&gt;
</code></pre>
<h2>Tester la connexion d&#x27;un remote</h2>
<p>Exemple avec Mega.nz :</p>
<pre><code class="language-bash">rclone -vv --dump-headers
rclone -vv about --mega-debug --dump=bodies --retries=1 --low-level-retries=1 mega:/
</code></pre>
<h2>Voir la taille d&#x27;un remote</h2>
<pre><code class="language-bash">rclone size &lt;remote&gt;:/
</code></pre>
<h2>Regarder un fichier video distant</h2>
<pre><code class="language-bash">rclone cat &lt;remote&gt;:/&lt;bucket&gt;/&lt;file.mp4&gt; | mpv -
</code></pre>
<h2>Voir les fonctionnalités supporté par un fournisseur</h2>
<pre><code class="language-bash">rclone backend features &lt;provider&gt;
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Regarder toutes les chaines de télévision gratuitement depuis son ordinateur]]></title>
            <link>https://johackim.com/regarder-la-television-avec-kodi?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/regarder-la-television-avec-kodi</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/regarder-la-television-avec-kodi.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/regarder-la-television-avec-kodi.jpg"/>
            <content:encoded><![CDATA[<p>Pour regarder la télévision avec Kodi il existe un addon <a href="/iptv" title="IPTV">IPTV</a> du nom de <a href="https://kodi.wiki/view/Add-on:PVR_IPTV_Simple_Client">PVR IPTV Simple Client</a>.</p>

<p>Pour l&#x27;installer, <a href="/kodi#installer-un-depot-sur-kodi" title="ajouter le dépôt SuperRepo">ajouter le dépôt SuperRepo</a> puis installer l&#x27;addon PVR IPTV Simple Client.</p>

<p>Une fois l&#x27;addon installé, configurez l&#x27;extension via Système -&gt; Extensions -&gt; Mes extensions -&gt; Client enregisteur vidéo -&gt; PVR IPTV Simple Client -&gt; Configurer.</p>
<p>Ajoutez l&#x27;URL de la liste de chaînes françaises M3U suivante : <a href="https://raw.githubusercontent.com/iptv-org/iptv/master/channels/fr.m3u">https://raw.githubusercontent.com/iptv-org/iptv/master/channels/fr.m3u</a></p>
<p>Redémarrez Kodi et accédez à toutes vos chaînes de télévision dans TV.</p>
<p>Pour accéder à d&#x27;autres chaînes que celle de la France, rendez-vous <a href="https://github.com/iptv-org/iptv/">sur ce dépôt Github</a> ou sur <a href="https://docs.google.com/spreadsheets/d/137Yw178ruq_v7_33al_B1PoGPyuGCANDNhLnDGXdrVg/">ce Spreadsheet</a>.</p>
<p>~~Et si vous ne trouvez pas une chaine, vous pouvez vous inscrire <a href="/comment-detenir-un-compte-google-anonyme" title="avec un compte gmail">avec un compte gmail</a> sur le service <a href="https://bestbuyiptv.store/user/registration/register.html">bestbuyiptv</a> qui donne accès à une période d&#x27;essai gratuite de 24H.~~ (Ne fonctionne plus)</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tester la vitesse d'écriture d'un disque dur sur Linux]]></title>
            <link>https://johackim.com/tester-la-vitesse-d&apos;ecriture-d&apos;un-disque-dur-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/tester-la-vitesse-d&apos;ecriture-d&apos;un-disque-dur-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/tester-la-vitesse-d&apos;ecriture-d&apos;un-disque-dur-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/tester-la-vitesse-d&apos;ecriture-d&apos;un-disque-dur-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Pour tester la vitesse d&#x27;écriture d&#x27;un disque dur sur <a href="/linux" title="Linux">Linux</a>, il existe une commande installé nativement sur la plus part des distributions <a href="/linux" title="Linux">Linux</a> qui s&#x27;appelle <code>dd</code>.</p>

<pre><code class="language-bash">$ dd if=/dev/zero of=1g.bin bs=1G count=1
# 1+0 records in
# 1+0 records out
# 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 3.38203 s, 317 MB/s
</code></pre>
<p>Dans ce cas présent, la vitesse d&#x27;écriture du disque dur est de 317 MB/s.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
<li>
<a href="/iops" title="IOPS" class="not-found">IOPS</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Les différents types de sauvegarde]]></title>
            <link>https://johackim.com/types-de-sauvegarde?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/types-de-sauvegarde</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/types-de-sauvegarde.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/types-de-sauvegarde.jpg"/>
            <content:encoded><![CDATA[<h2>Sauvegarde complète</h2>
<p>Une sauvegarde complète est une copie totale de l&#x27;ensemble des données.</p>
<p>Chaque fois que vous effectuez une sauvegarde complète, vous stockez entièrement et une nouvelle fois la source de données.</p>
<h2>Sauvegarde incrémentale</h2>
<p>La sauvegarde incrémentale effectue d&#x27;abord une première copie complète de toutes vos données et chaque sauvegarde qui vient après permet d&#x27;enregistrer les modifications apportées depuis la dernière sauvegarde.</p>
<p>Contrairement à la sauvegarde complète, la sauvegarde incrémentale est très rapide à réaliser, mais plus lente à la restauration. Elle possède aussi l&#x27;avantage d&#x27;utiliser peu de quantité de stockage. Ce sera cette méthode que vous utiliserez avec la plupart des systèmes de stockage en ligne.</p>
<h2>Sauvegarde différentielle</h2>
<p>Une sauvegarde différentielle est une sauvegarde cumulative de tous les fichiers modifiés depuis la dernière sauvegarde.</p>
<p>Comme avec la sauvegarde incrémentale, la différentielle va effectuer une copie initiale et complète de tous vos fichiers et dossiers. Mais les prochaines sauvegardes vont permettre de stocker tous les changements apportés depuis votre dernière sauvegarde complète.</p>
<p>Ce type de sauvegarde permet d&#x27;enregistrer les données plus rapidement que la sauvegarde complète et demande aussi moins d&#x27;espace. Quant à la restauration, elle est plus rapide que celle de la sauvegarde incrémentale qui nécessite moins d&#x27;espace de stockage.</p>
<h2>Sauvegarde mirroir</h2>
<p>La sauvegarde miroir réalise une copie conforme des fichiers de votre système. Elle s&#x27;effectue ponctuellement et prend en compte l&#x27;ensemble des données sources telles qu&#x27;elles existaient lors de la dernière sauvegarde.</p>
<p>Ce procédé a l&#x27;avantage de proposer une restauration rapide et ne contient pas de fichiers anciens ou obsolètes.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://netexplorer.fr/blog/quels-sont-les-differents-types-de-sauvegardes">https://netexplorer.fr/blog/quels-sont-les-differents-types-de-sauvegardes</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[iptables]]></title>
            <description><![CDATA[Iptables est un pare-feu pour Linux. Il permet de bloquer ou d'autoriser des connexions entrantes et sortantes.]]></description>
            <link>https://johackim.com/iptables?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/iptables</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 07 Jun 2021 20:36:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/iptables.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/iptables.jpg"/>
            <content:encoded><![CDATA[<p>Iptables est un pare-feu pour Linux. Il permet de bloquer ou d&#x27;autoriser des connexions entrantes et sortantes.</p>
<h2>Installation</h2>
<p>Pour installer iptables sur Ubuntu/Debian, il faut exécuter la commande suivante :</p>
<pre><code class="language-bash">sudo apt install -y iptables
</code></pre>
<p>Sur Arch Linux, il faut exécuter la commande suivante :</p>
<pre><code class="language-bash">sudo pacman -S iptables
</code></pre>
<h2>Bloquer toutes les connexions entrantes</h2>
<p>Pour bloquer toutes les connexions entrantes, il faut exécuter la commande suivante :</p>
<pre><code class="language-bash">iptables -P INPUT DROP
</code></pre>
<h2>Autoriser toutes les connexions sortantes</h2>
<p>Pour autoriser toutes les connexions sortantes, il faut exécuter la commande suivante :</p>
<pre><code class="language-bash">iptables -P OUTPUT ACCEPT
</code></pre>
<h2>Autoriser les connexions provenant de l&#x27;interface de loopback</h2>
<p>L&#x27;interface de loopback permet de communiquer avec le serveur lui-même via l&#x27;adresse IP 127.0.0.1.</p>
<pre><code class="language-bash">iptables -A INPUT -i lo -j ACCEPT
</code></pre>
<h2>Autoriser le protocole ICMP</h2>
<p>Le protocole ICMP permet de communiquer avec le serveur via la commande <code>ping</code>.</p>
<p>Pour l&#x27;autoriser, il faut exécuter la commande suivante :</p>
<pre><code class="language-bash">iptables -A INPUT -p icmp -j ACCEPT
</code></pre>
<h2>Autoriser un port spécifique</h2>
<p>Pour autoriser un port spécifique (ex: 22 pour SSH), il faut exécuter la commande suivante :</p>
<pre><code class="language-bash">iptables -A INPUT -p tcp --dport 22 -j ACCEPT
</code></pre>
<h2>Autoriser un nouveau port</h2>
<p>Lorsque tous les ports sont bloqués, pour autoriser un nouveau port, il faut exécuter les commandes suivantes :</p>
<pre><code class="language-bash">iptables -A INPUT -p tcp -m tcp --dport &lt;new_port&gt; -j ACCEPT
iptables -A INPUT -j DROP
iptables -L INPUT --line-numbers # Récupérer l&#x27;ID de l&#x27;ancienne règle de DROP
iptables -D INPUT &lt;id&gt; # Supprimer l&#x27;anciènne règle de DROP
</code></pre>
<h2>Persister la configuration</h2>
<p>Pour persister la configuration et permettre à iptables de se lancer au démarrage :</p>
<pre><code class="language-bash">iptables-save &gt; /etc/iptables/iptables.rules
sudo systemctl enable --now iptables.service
</code></pre>
<h2>Vider toutes les règles iptables</h2>
<p>Pour vider toutes les règles iptables, il faut exécuter les commandes suivantes :</p>
<pre><code class="language-bash">iptables -F
iptables -F -t mangle
iptables -F -t nat 
iptables -X
iptables -X -t mangle
iptables -X -t nat
</code></pre>
<h2>Ma configuration personnelle</h2>
<p>Voici ma configuration personnelle :</p>
<pre><code class="language-bash">iptables -F
iptables -F -t mangle
iptables -F -t nat 
iptables -X
iptables -X -t mangle
iptables -X -t nat
iptables -F INPUT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -j DROP
iptables-save &gt; /etc/iptables/iptables.rules
sudo systemctl enable --now iptables.service
</code></pre>
<p>Elle permet de bloquer toutes les connexions entrantes.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer une table des matières des fichiers markdown avec Gatsby]]></title>
            <link>https://johackim.com/creer-une-table-des-matieres-des-fichiers-markdown-avec-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-une-table-des-matieres-des-fichiers-markdown-avec-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 31 May 2021 16:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-une-table-des-matieres-des-fichiers-markdown-avec-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-une-table-des-matieres-des-fichiers-markdown-avec-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Après avoir <a href="/initialiser-un-projet-gatsby" title="Initialiser un projet Gatsby">Initialiser un projet Gatsby</a> et <a href="/importer-ses-notes-markdown-dans-gatsby" title="importer vos fichiers markdown">importer vos fichiers markdown</a>, vous pouvez créer automatiquement la table des matière d&#x27;un fichier markdown dans Gatsby.</p>

<pre><code class="language-javascript">// gatsby-node.js
exports.createPages = async ({ actions, graphql, reporter }) =&gt; {
    const { createPage } = actions;

    const result = await graphql(`
        {
            allMarkdownRemark {
                edges {
                    node {
                        id
                        html
                        headings {
                            value
                            depth
                        }
                        parent {
                            ... on File {
                                name
                            }
                        }
                    }
                }
            }
        }
    `);

    if (result.errors) {
        reporter.panicOnBuild(&#x27;Error while running GraphQL query.&#x27;);
        return;
    }

    const markdowns = result.data.allMarkdownRemark.edges;

    const noteTemplate = require.resolve(&#x27;./src/templates/noteTemplate.js&#x27;);

    markdowns.forEach(({ node }) =&gt; {
        const { id, html, headings } = node;

        createPage({
            path: `/${node.parent.name}`,
            component: noteTemplate,
            context: { id, html, headings },
        });
    });
};
</code></pre>
<pre><code class="language-javascript">// src/components/toc.js
import React from &#x27;react&#x27;;
import { Link } from &#x27;gatsby&#x27;;
import slugify from &#x27;slugify&#x27;;

export default ({ headings = [], depthMin = 1, className = &#x27;&#x27; }) =&gt; {
    if (!headings.length) return false;

    return (
        &lt;ul className={className}&gt;
            {headings.filter(({ depth }) =&gt; depth &gt;= depthMin).map(({ value }) =&gt; {
                const id = slugify(value, { lower: true, strict: true });

                return (
                    &lt;li key={value}&gt;
                        &lt;Link to={`#${id}`} title={value}&gt;
                            {value}
                        &lt;/Link&gt;
                    &lt;/li&gt;
                );
            })}
        &lt;/ul&gt;
    );
};
</code></pre>
<pre><code class="language-js">// src/templates/noteTemplate.js
import React from &#x27;react&#x27;;
import Toc from &#x27;../components/toc&#x27;;

export default function Template({ pageContext }) {
    const { html, headings } = pageContext;

    return (
        &lt;&gt;
            &lt;Toc headings={headings} depthMin={2} /&gt;
            &lt;div dangerouslySetInnerHTML={{ __html: html }} /&gt;
        &lt;/&gt;
    );
}
</code></pre>
<p>Pour créer automatiquement les id sur chaque header, il existe le plugin <a href="https://gatsbyjs.com/plugins/gatsby-remark-autolink-headers/">gatsby-remark-autolink-headers</a> :</p>
<pre><code class="language-npm">yarn add -D gatsby-remark-autolink-headers
</code></pre>
<pre><code class="language-javascript">// gatsby-config.js
module.exports = {
    plugins: [
        {
            resolve: &#x27;gatsby-source-filesystem&#x27;,
            options: {
                path: &#x27;./content&#x27;,
            },
        },
        {
            resolve: &#x27;gatsby-transformer-remark&#x27;,
            options: {
                plugins: [
                    {
                        resolve: &#x27;gatsby-remark-autolink-headers&#x27;,
                        options: {
                            icon: false,
                        },
                    },
                ],
            },
        },
    ],
};
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Importer ses notes markdown dans Gatsby]]></title>
            <link>https://johackim.com/importer-ses-notes-markdown-dans-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/importer-ses-notes-markdown-dans-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 31 May 2021 16:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/importer-ses-notes-markdown-dans-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/importer-ses-notes-markdown-dans-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Après avoir <a href="/initialiser-un-projet-gatsby" title="Initialiser un projet Gatsby">Initialiser un projet Gatsby</a>, créez un dossier <code>content</code> qui va contenir toutes vos notes au format markdown (ex: <code>content/hello-world.md</code>).</p>

<p><strong>NOTE</strong> : Vous pouvez ouvrir se dossier avec Obsidian ou n&#x27;importe quel éditeur de fichier markdown pour éditer vos notes.</p>
<p>Installez et configurez le package <code>gatsby-source-filesystem</code> &amp; <code>gatsby-transformer-remark</code> pour pouvoir detecter les fichiers markdown de votre dossier <code>content</code> dans Gatsby  :</p>
<pre><code class="language-bash">yarn add -D gatsby-source-filesystem gatsby-transformer-remark
</code></pre>
<pre><code class="language-javascript">// gatsby-config.js

module.exports = {
    plugins: [
        {
            resolve: &#x27;gatsby-source-filesystem&#x27;,
            options: {
                path: &#x27;./content&#x27;,
            },
        },
        {
            resolve: &#x27;gatsby-transformer-remark&#x27;,
        },
    ],
};
</code></pre>
<p>Créez le fichier <code>gatsby-node.js</code> avec la configuration si dessous pour pouvoir créer des pages pour chacune de vos notes markdown :</p>
<pre><code class="language-js">// gatsby-node.js

exports.createPages = async ({ actions, graphql, reporter }) =&gt; {
    const { createPage } = actions;

    const result = await graphql(`
        {
            allMarkdownRemark {
                edges {
                    node {
                        id
                        html
                        parent {
                            ... on File {
                                name
                            }
                        }
                    }
                }
            }
        }
    `);

    if (result.errors) {
        reporter.panicOnBuild(&#x27;Error while running GraphQL query.&#x27;);
        return;
    }

    const markdowns = result.data.allMarkdownRemark.edges;

    const noteTemplate = require.resolve(&#x27;./src/templates/noteTemplate.js&#x27;);

    markdowns.forEach(({ node }) =&gt; {
        const { id, html } = node;

        createPage({
            path: `/${node.parent.name}`,
            component: noteTemplate,
            context: { id, html },
        });
    });
};
</code></pre>
<pre><code class="language-js">// src/templates/noteTemplate.js

import React from &#x27;react&#x27;;

export default function Template({ pageContext }) {
    const { html } = pageContext;

    return &lt;div dangerouslySetInnerHTML={{ __html: html }} /&gt;;
}
</code></pre>
<p>Si vous avez une note <code>hello-world.md</code> dans votre dossier <code>content</code> et que vous vous rendez à l&#x27;adresse <a href="http://localhost:8000/hello-world">http://localhost:8000/hello-world</a>, cela devrait afficher le contenu de votre fichier markdown.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Initialiser un projet Gatsby]]></title>
            <link>https://johackim.com/initialiser-un-projet-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/initialiser-un-projet-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 31 May 2021 16:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/initialiser-un-projet-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/initialiser-un-projet-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Pour initialiser un projet <a href="https://gatsbyjs.com/">Gatsby</a>, il suffit d&#x27;installer <a href="https://nodejs.org">node.js</a> puis exécuter cette commande :</p>
<pre><code class="language-bash">npm install --save gatsby react react-dom
</code></pre>
<p>Une fois installé, vous pouvez démarrer Gatsby avec la commande suivante :</p>
<pre><code class="language-bash">./node_modules/.bin/gatsby develop
</code></pre>
<p>Puis ajoutez ces lignes dans votre fichier <code>package.json</code> afin d&#x27;avoir accès aux commandes de gatsby plus facilement :</p>
<pre><code class="language-json">&quot;scripts&quot;: {
    &quot;build&quot;: &quot;gatsby build&quot;,
    &quot;start&quot;: &quot;gatsby develop&quot;,
    &quot;serve&quot;: &quot;gatsby serve&quot;,
    &quot;clean&quot;: &quot;gatsby clean&quot;
}
</code></pre>
<p>Vous pouvez à présent exécuter la commande <code>npm start</code> pour démarrer Gatsby.</p>
<p>PS : Exécutez la commande <code>npm init -f</code> si votre fichier <code>package.json</code> n&#x27;existe pas.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Syntaxe markdown d'Obsidian dans Gatsby]]></title>
            <link>https://johackim.com/ajouter-le-support-de-la-syntaxe-markdown-d&apos;obsidian-dans-gatsby?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ajouter-le-support-de-la-syntaxe-markdown-d&apos;obsidian-dans-gatsby</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 31 May 2021 16:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ajouter-le-support-de-la-syntaxe-markdown-d&apos;obsidian-dans-gatsby.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ajouter-le-support-de-la-syntaxe-markdown-d&apos;obsidian-dans-gatsby.jpg"/>
            <content:encoded><![CDATA[<p>Les fichiers markdown dans <a href="/obsidian" title="Obsidian">Obsidian</a> peuvent avoir une syntaxe spéciale propre à Obsidian :</p>

<ul>
<li><code>[[Internal link]]</code></li>
<li><code>[[Internal link|With custom text]]</code></li>
<li><code>[[Internal link#heading]]</code></li>
<li><code>[[Internal link#heading|With custom text]]</code></li>
<li><code>[[Embed note]]</code></li>
<li><code>[[Embed note#heading]]</code></li>
</ul>
<p>Cette syntaxe permet de relier des notes entre elles via des liens bidirectionnels (<code>[[Internal link]]</code>).</p>
<p>Pour ajouter le support de ces liens, j&#x27;ai créé un plugin <a href="https://github.com/johackim/gatsby-remark-obsidian">gatsby-remark-obsidian</a>.</p>
<p>Vous pouvez intégrer ce plugin avec Remark ou MDX :</p>
<pre><code class="language-javascript">// gatsby-config.js
plugins: [
    {
        resolve: &quot;gatsby-transformer-remark&quot;,
        options: {
            plugins: [
                {
                    resolve: &#x27;gatsby-remark-obsidian&#x27;,
                },
            ]
        }
    },
],
</code></pre>
<p>Si vous utilisez MDX :</p>
<pre><code class="language-javascript">// gatsby-config.js
plugins: [
    {
        resolve: &#x27;gatsby-plugin-mdx&#x27;,
        options: {
            extensions: [&#x27;.md&#x27;],
            gatsbyRemarkPlugins: [
                {
                    resolve: &#x27;gatsby-remark-obsidian&#x27;,
                },
            ],
        },
    },
],
</code></pre>
<p>PS : Si vous utilisez Next.js, j&#x27;ai créé <a href="https://github.com/johackim/remark-obsidian">un autre plugin</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un digital garden de A à Z avec Gatsby et Obsidian]]></title>
            <link>https://johackim.com/creer-un-digital-garden?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-digital-garden</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 31 May 2021 15:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-digital-garden.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-digital-garden.jpg"/>
            <content:encoded><![CDATA[<ol>
<li>
<a href="/initialiser-un-projet-gatsby" title="Initialiser un projet Gatsby">Initialiser un projet Gatsby</a>

</li>
<li>
<a href="/importer-ses-notes-markdown-dans-gatsby" title="Importer ses notes markdown dans Gatsby">Importer ses notes markdown dans Gatsby</a>

</li>
<li>
<a href="/ajouter-le-support-de-la-syntaxe-markdown-d&#x27;obsidian-dans-gatsby" title="Syntaxe markdown d&#x27;Obsidian dans Gatsby">Syntaxe markdown d&#x27;Obsidian dans Gatsby</a>

</li>
<li>
<a href="/creer-un-graph-viewer-comme-obsidian-avec-gatsby" title="Créer un Graph Viewer comme Obsidian avec Gatsby" class="not-found">Créer un Graph Viewer comme Obsidian avec Gatsby</a>

</li>
<li>
<a href="/creer-une-table-des-matieres-des-fichiers-markdown-avec-gatsby" title="Créer une table des matières sur Gatsby">Créer une table des matières sur Gatsby</a>

</li>
<li>
<a href="/ameliorer-le-seo-de-gatsby" title="Améliorer le SEO de Gatsby" class="not-found">Améliorer le SEO de Gatsby</a>

</li>
</ol>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://dev.to/joeholmes/creating-a-diy-digital-garden-with-obsidian-and-gatsby-378e">Creating a DIY Digital Garden with Obsidian and Gatsby</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un service Docker avec plusieurs replicas]]></title>
            <link>https://johackim.com/creer-un-service-docker-avec-plusieurs-replicas?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-un-service-docker-avec-plusieurs-replicas</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-un-service-docker-avec-plusieurs-replicas.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-un-service-docker-avec-plusieurs-replicas.jpg"/>
            <content:encoded><![CDATA[<p>Il est possible de créer plusieurs conteneurs dans un seul service Docker. Ces conteneurs sont appelé des replicas.</p>

<link href="data:text/css;base64,I21lcm1haWQtc3ZnLTF7Zm9udC1mYW1pbHk6InRyZWJ1Y2hldCBtcyIsdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTEgLmVycm9yLWljb257ZmlsbDojNTUyMjIyO30jbWVybWFpZC1zdmctMSAuZXJyb3ItdGV4dHtmaWxsOiM1NTIyMjI7c3Ryb2tlOiM1NTIyMjI7fSNtZXJtYWlkLXN2Zy0xIC5lZGdlLXRoaWNrbmVzcy1ub3JtYWx7c3Ryb2tlLXdpZHRoOjJweDt9I21lcm1haWQtc3ZnLTEgLmVkZ2UtdGhpY2tuZXNzLXRoaWNre3N0cm9rZS13aWR0aDozLjVweDt9I21lcm1haWQtc3ZnLTEgLmVkZ2UtcGF0dGVybi1zb2xpZHtzdHJva2UtZGFzaGFycmF5OjA7fSNtZXJtYWlkLXN2Zy0xIC5lZGdlLXBhdHRlcm4tZGFzaGVke3N0cm9rZS1kYXNoYXJyYXk6Mzt9I21lcm1haWQtc3ZnLTEgLmVkZ2UtcGF0dGVybi1kb3R0ZWR7c3Ryb2tlLWRhc2hhcnJheToyO30jbWVybWFpZC1zdmctMSAubWFya2Vye2ZpbGw6IzMzMzMzMztzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTEgLm1hcmtlci5jcm9zc3tzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTEgc3Zne2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDt9I21lcm1haWQtc3ZnLTEgLmxhYmVse2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSAuY2x1c3Rlci1sYWJlbCB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTEgLmNsdXN0ZXItbGFiZWwgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSAubGFiZWwgdGV4dCwjbWVybWFpZC1zdmctMSBzcGFue2ZpbGw6IzMzMztjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSAubm9kZSByZWN0LCNtZXJtYWlkLXN2Zy0xIC5ub2RlIGNpcmNsZSwjbWVybWFpZC1zdmctMSAubm9kZSBlbGxpcHNlLCNtZXJtYWlkLXN2Zy0xIC5ub2RlIHBvbHlnb24sI21lcm1haWQtc3ZnLTEgLm5vZGUgcGF0aHtmaWxsOiNFQ0VDRkY7c3Ryb2tlOiM5MzcwREI7c3Ryb2tlLXdpZHRoOjFweDt9I21lcm1haWQtc3ZnLTEgLm5vZGUgLmxhYmVse3RleHQtYWxpZ246Y2VudGVyO30jbWVybWFpZC1zdmctMSAubm9kZS5jbGlja2FibGV7Y3Vyc29yOnBvaW50ZXI7fSNtZXJtYWlkLXN2Zy0xIC5hcnJvd2hlYWRQYXRoe2ZpbGw6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTEgLmVkZ2VQYXRoIC5wYXRoe3N0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoyLjBweDt9I21lcm1haWQtc3ZnLTEgLmZsb3djaGFydC1saW5re3N0cm9rZTojMzMzMzMzO2ZpbGw6bm9uZTt9I21lcm1haWQtc3ZnLTEgLmVkZ2VMYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7dGV4dC1hbGlnbjpjZW50ZXI7fSNtZXJtYWlkLXN2Zy0xIC5lZGdlTGFiZWwgcmVjdHtvcGFjaXR5OjAuNTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7ZmlsbDojZThlOGU4O30jbWVybWFpZC1zdmctMSAuY2x1c3RlciByZWN0e2ZpbGw6I2ZmZmZkZTtzdHJva2U6I2FhYWEzMztzdHJva2Utd2lkdGg6MXB4O30jbWVybWFpZC1zdmctMSAuY2x1c3RlciB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTEgLmNsdXN0ZXIgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctMSBkaXYubWVybWFpZFRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4O2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOmhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpO2JvcmRlcjoxcHggc29saWQgI2FhYWEzMztib3JkZXItcmFkaXVzOjJweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwO30jbWVybWFpZC1zdmctMSAuZmxvd2NoYXJ0VGl0bGVUZXh0e3RleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MThweDtmaWxsOiMzMzM7fSNtZXJtYWlkLXN2Zy0xIDpyb290ey0tbWVybWFpZC1mb250LWZhbWlseToidHJlYnVjaGV0IG1zIix2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7fQ==" rel="stylesheet" type="text/css"/>
<p>La commande suivante aura pour objectif de créer 3 replicas basé sur l&#x27;image Docker ghost :</p>
<pre><code class="language-bash">docker service create --replicas 3 ghost
</code></pre>
<p>Si on exécute la commande <code>docker ps -a</code>, on remarquera l&#x27;apparition de 3 conteneurs ghost.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Flaresolverr]]></title>
            <link>https://johackim.com/contourner-la-protection-cloudflare?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/contourner-la-protection-cloudflare</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/contourner-la-protection-cloudflare.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/contourner-la-protection-cloudflare.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/FlareSolverr/FlareSolverr">FlareSolverr</a> est un serveur proxy pour contourner la protection Cloudflare.</p>
<p>Pour le démarrer avec Docker :</p>
<pre><code class="language-bash">docker run -p 8191:8191 -e LOG_LEVEL=info ghcr.io/flaresolverr/flaresolverr:latest
</code></pre>
<p>FlareSolverr peut être personnalisé pour résoudre les captchas automatiquement en définissant la variable d&#x27;environnement <code>CAPTCHA_SOLVER</code> avec le nom de l&#x27;un des resolvers (<code>hcaptcha-solver</code> ou <code>harvester</code>), exemple :</p>
<pre><code class="language-bash">docker run -p 8191:8191 -e LOG_LEVEL=info -e CAPTCHA_SOLVER=hcaptcha-solver ghcr.io/flaresolverr/flaresolverr:latest
</code></pre>
<p>Pour utiliser FlareSolverr, envoyez une requête curl :</p>
<pre><code class="language-bash">curl -L -X POST &#x27;http://localhost:8191/v1&#x27; \
-H &#x27;Content-Type: application/json&#x27; \
--data-raw &#x27;{
  &quot;cmd&quot;: &quot;request.get&quot;,
  &quot;url&quot;:&quot;http://yggtorrent.li/&quot;,
  &quot;userAgent&quot;: &quot;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleW...&quot;,
  &quot;maxTimeout&quot;: 60000
}&#x27;
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Héberger un site sur le réseau IPFS]]></title>
            <link>https://johackim.com/ipfs?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ipfs</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ipfs.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ipfs.jpg"/>
            <content:encoded><![CDATA[<p>IPFS est un système de fichiers interplanétaire.</p>
<p>InterPlanetary File System (ou IPFS) est un protocole et un réseau peer-to-peer pour le stockage et le partage de données dans un système de fichiers distribué.</p>
<p>C&#x27;est un remplacement au protocole HTTP.</p>
<p>Il ne sauvegarde pas 2 fois le même fichier et garde le même identifiant pour chaque fichier créé.</p>
<h2>Installation</h2>
<p>Rendez-vous <a href="https://github.com/ipfs/ipfs-desktop#install">sur cette page</a> pour installer la version desktop.</p>
<p>Pour installer la version CLI :</p>
<pre><code class="language-bash">sudo pacman -S kubo
</code></pre>
<h2>Initialiser un repository local</h2>
<pre><code class="language-bash">ipfs init
</code></pre>
<h2>Envoyer un fichier</h2>
<pre><code class="language-bash">ipfs add &lt;file&gt;
# Ou
ipfs add &lt;file&gt; --to-files /
</code></pre>
<h2>Afficher un fichier</h2>
<pre><code class="language-bash">ipfs cat &lt;CID&gt;
</code></pre>
<h2>Télécharger un fichier</h2>
<pre><code class="language-bash">ipfs get &lt;CID&gt;
</code></pre>
<h2>Voir les fichier d&#x27;un dossier</h2>
<pre><code class="language-bash">ipfs ls &lt;CID&gt;
</code></pre>
<h2>Supprimer un fichier</h2>
<pre><code class="language-bash">ipfs files rm &lt;file&gt;
</code></pre>
<h2>Spécifier une api</h2>
<pre><code class="language-bash">ipfs --api /ip4/127.0.0.1/tcp/5001 &lt;command&gt;
</code></pre>
<h2>Envoyer du texte</h2>
<pre><code class="language-bash">echo &quot;This is my text&quot; | ipfs add
</code></pre>
<h2>Lister les fichiers</h2>
<pre><code class="language-bash">ipfs files ls
</code></pre>
<h2>Connaitre le CID d&#x27;un nom de domaine</h2>
<pre><code class="language-bash">ipfs name resolve /ipns/example.com
</code></pre>
<h2>Rafraichir le cache</h2>
<pre><code class="language-bash">ipfs name resolve -n --dhtt 0 /ipns/example.com
</code></pre>
<h2>Recuperer le hash d&#x27;un fichier sans l&#x27;envoyer sur IPFS</h2>
<pre><code class="language-bash">ipfs add --only-hash &lt;file&gt;
</code></pre>
<h2>Récupérer le peer d&#x27;un fichier</h2>
<pre><code class="language-bash">ipfs dht findprovs &lt;hash&gt;
</code></pre>
<h2>Héberger un site sur IPFS</h2>
<p>Voici les étapes à suivre pour héberger un site sur le réseau peer-to-peer IPFS :</p>
<p>Créez un dossier (ex: <code>_site</code>) avec un fichier HTML à l&#x27;intérieur (ex : <code>index.html</code>) :</p>
<pre><code class="language-bash">mkdir _site
echo &quot;hello world&quot; &gt; _site/index.html
</code></pre>
<p>Envoyez le dossier sur IPFS :</p>
<pre><code class="language-bash">ipfs add -r _site --to-files /
</code></pre>
<p>Récupérez le hash CID du dossier :</p>
<pre><code class="language-bash">ipfs files ls -l
</code></pre>
<p>Rendez-vous sur <code>https://ipfs.io/ipfs/&lt;CID&gt;</code> pour voir votre fichier depuis la passerelle officielle ipfs.io.</p>
<h2>Relier un nom de domaine à un site web hébergé sur IPFS</h2>
<p>Vous pouvez utiliser une passerelle IPFS pour relier un nom de domaine classique à votre site.</p>
<ul>
<li>Créez une zone DNS TXT <code>_dnslink.example.com</code> avec la valeur <code>dnslink=/ipfs/&lt;CID&gt;</code></li>
</ul>
<p>Vous pouvez ensuite accéder à votre site depuis <a href="https://ipfs.io/ipns/example.com/">https://ipfs.io/ipns/example.com/</a> ou <a href="http://example.com.ipns.localhost:8080/">http://example.com.ipns.localhost:8080/</a> si vous avez ipfs-desktop de lancé sur votre ordinateur.</p>
<p>Déployez votre passerelle IPFS <a href="https://github.com/ethibox/awesome-stacks/blob/master/stacks/ipfs.yml">avec Docker</a>.</p>
<ul>
<li>Créez une zone DNS de type A <code>example.com</code> qui pointe sur l&#x27;ip de votre passerelle.</li>
</ul>
<p>Si vous changez fréquemment votre site, vous allez devoir changer la zone TXT avec le nouveau CID de votre dossier à chaque fois.</p>
<p>Pour pallier à ce problème :</p>
<pre><code class="language-bash">ipfs name publish /ipfs/&lt;CID&gt;
</code></pre>
<p>Puis ajoutez l&#x27;identifiant ipns à votre zone DNS :</p>
<pre><code class="language-bash">_dnslink.example.com. 60 TXT &quot;dnslink=/ipns/&lt;IPNS_ID&gt;&quot;
</code></pre>
<p>Maintenant, à chaque mise à jour de votre dossier <code>_site</code>, exécutez la commande suivante :</p>
<pre><code class="language-bash">ipfs name publish /ipfs/&lt;CID&gt;
</code></pre>
<h2>Performances</h2>
<p>Niveau performances, il est préférable d&#x27;uploader votre site dans la passerelle afin que le contenu soit pinné.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://filebase.com/">https://filebase.com/</a></li>
<li><a href="https://thebidouilleur.xyz/blog/ipfs/">https://thebidouilleur.xyz/blog/ipfs/</a></li>
<li><a href="https://github.com/ipfs-cluster/ipfs-cluster/">https://github.com/ipfs-cluster/ipfs-cluster/</a></li>
<li><a href="https://github.com/ipfs-shipyard/ipfs-deploy">https://github.com/ipfs-shipyard/ipfs-deploy</a></li>
<li><a href="https://ipfs.github.io/public-gateway-checker/">https://ipfs.github.io/public-gateway-checker/</a></li>
<li><a href="https://korben.info/ipfs-le-web-permanent.html">https://korben.info/ipfs-le-web-permanent.html</a></li>
<li><a href="https://fr.wikipedia.org/wiki/InterPlanetary_File_System">https://fr.wikipedia.org/wiki/InterPlanetary_File_System</a></li>
<li><a href="https://developers.cloudflare.com/distributed-web/ipfs-gateway">https://developers.cloudflare.com/distributed-web/ipfs-gateway</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Initialiser terraform]]></title>
            <link>https://johackim.com/initialiser-terraform?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/initialiser-terraform</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/initialiser-terraform.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/initialiser-terraform.jpg"/>
            <content:encoded><![CDATA[<p>Pour initialiser terraform, créez un fichier <code>main.tf</code>, exemple :</p>
<pre><code class="language-json">// main.tf
terraform {
  required_providers {
    docker = {
      source = &quot;kreuzwerker/docker&quot;
    }
  }
}

resource &quot;docker_image&quot; &quot;image_id&quot; {
  name = &quot;ghost:latest&quot;
}
</code></pre>
<p>Cet exemple demande l&#x27;utilisation de Docker sur notre machine hôte, n&#x27;oubliez pas d&#x27;<a href="/installer-docker" title="installer Docker">installer Docker</a>.</p>

<p>Puis exécutez la commande suivante :</p>
<pre><code class="language-bash">terraform init
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/terraform" title="Terraform">Terraform</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Jackett]]></title>
            <description><![CDATA[Jackett est un métamoteur de torrents open-source.]]></description>
            <link>https://johackim.com/jackett?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/jackett</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/jackett.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/jackett.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/Jackett/Jackett">Jackett</a> est un métamoteur de torrents open-source.</p>
<p>Il peut être intégré dans des outils de recherche de torrent comme qBittorrent par exemple.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer avec Docker, exécutez la commande suivante :</p>
<pre><code class="language-bash">docker run -d --name jackett --restart=always --pull always -v ~/.config/jackett/config:/config -v ~/.config/jackett/downloads:/downloads -p 9117:9117 -e PUID=1000 -e PGID=1000 linuxserver/jackett
</code></pre>
<p>Vous pouvez ensuite vous rendre à l&#x27;adresse <a href="http://localhost:9117/">http://localhost:9117/</a> pour ajouter des Trackers torrent.</p>
<h2>Utilisation avec Flaresolverr</h2>
<p>Vous pouvez aussi paramétrer <a href="/contourner-la-protection-cloudflare" title="Flaresolverr">Flaresolverr</a> pour contourner la protection de Cloudflare si besoin.</p>

<p>Pour démarrer Flaresolverr avec Jackett, exécutez les commandes suivantes :</p>
<pre><code class="language-bash">docker network create jackett
docker run -d --name flaresolverr --restart=always --pull always --network jackett -p 8191:8191 -e LOG_LEVEL=info ghcr.io/flaresolverr/flaresolverr:latest
docker run -d --name jackett --restart=always --pull always --network jackett -v ~/.config/jackett/config:/config -v ~/.config/jackett/downloads:/downloads -p 9117:9117 -e PUID=1000 -e PGID=1000 linuxserver/jackett
</code></pre>
<p>Et renseignez dans <a href="http://flaresolverr:8191">http://flaresolverr:8191</a> dans le paramètre <code>FlareSolverr API URL</code> sur Jackett.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Joal]]></title>
            <description><![CDATA[Augmentez votre ratio sur les sites de torrent avec Joal]]></description>
            <link>https://johackim.com/joal?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/joal</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/joal.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/joal.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/anthonyraymond/joal/">Joal</a> est un outil pour augmenter automatiquement son ratio sur les sites de torrent.</p>
<blockquote class="callout note">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">note</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Utilisez cet outil UNIQUEMENT en cas d&#x27;extrême nécessité, car cela nuit au principe de partage.</p>
                    </div>
                </blockquote>
<p>Pour l&#x27;installer, <a href="https://github.com/anthonyraymond/joal/releases/download/2.1.36/joal.tar.gz">téléchargez Joal</a> et placer le contenu de l&#x27;archive dans votre dossier personnel <code>~/.config/joal</code>.</p>
<p>Puis, éditez le fichier <code>~/.config/joal/config.json</code> pour y ajouter les paramètres suivants :</p>
<pre><code class="language-json">{
  &quot;minUploadRate&quot; : 10000,
  &quot;maxUploadRate&quot; : 10000,
  &quot;simultaneousSeed&quot; : 5,
  &quot;client&quot; : &quot;qbittorrent-4.6.0.client&quot;,
  &quot;keepTorrentWithZeroLeechers&quot; : false,
  &quot;uploadRatioTarget&quot;: -1.0
}
</code></pre>
<p>Le paramètre <code>minUploadRate</code> et <code>maxUploadRate</code> définissent le débit d&#x27;envoi maximal et minimal en octets par seconde.</p>
<p>Je le configure pour que le débit d&#x27;envoi soit de 10 Mo/s.</p>
<p>Pour démarrer Joal, utilisez la commande <a href="/docker" title="Docker">Docker</a> suivante :</p>

<pre><code class="language-bash">docker run -d \
    --name=&quot;joal&quot; \
    --restart=always \
    -p 8080:8080 \
    -v ~/.config/joal:/data \
    anthonyraymond/joal \
    --joal-conf=&quot;/data&quot; \
    --spring.main.web-environment=true \
    --server.port=&quot;8080&quot; \
    --joal.ui.path.prefix=&quot;SECRET_PATH&quot; \
    --joal.ui.secret-token=&quot;SECRET_TOKEN&quot;
</code></pre>
<p>Accéder à l&#x27;adresse <a href="http://localhost:8080/SECRET_PATH/ui/#/">http://localhost:8080/SECRET_PATH/ui/#/</a> puis cliquez sur le bouton &quot;Change connection settings&quot; pour renseigner les paramètres suivants :</p>
<ul>
<li>Path Prefix -&gt; SECRET_PATH</li>
<li>Secret Token -&gt; SECRET_TOKEN</li>
</ul>
<p>Enfin, ajoutez un fichier torrent de tracker à l&#x27;aide du bouton &quot;+&quot;  vert en bas à droite et attendez jusqu&#x27;à atteindre le ratio qui vous convient.</p>
<p>Privilégiez les torrents avec beaucoup de seeders pour éviter les problèmes.</p>
<p>Pour ceux qui n&#x27;aiment pas la ligne de commande et Docker, vous pouvez <a href="https://github.com/anthonyraymond/joal-desktop/releases/latest">télécharger la version Desktop</a>.</p>
<p>Et si Joal ne fonctionne pas pour vous, il existe d&#x27;autres alternatives :</p>
<ul>
<li><a href="https://github.com/slundi/RatioUp">https://github.com/slundi/RatioUp</a></li>
<li><a href="https://github.com/ap-pauloafonso/ratio-spoof">https://github.com/ap-pauloafonso/ratio-spoof</a></li>
<li><a href="https://github.com/NikolayIT/RatioMaster.NET">https://github.com/NikolayIT/RatioMaster.NET</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Regarder la météo depuis un terminal]]></title>
            <link>https://johackim.com/regarder-la-meteo-depuis-un-terminal?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/regarder-la-meteo-depuis-un-terminal</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/regarder-la-meteo-depuis-un-terminal.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/regarder-la-meteo-depuis-un-terminal.jpg"/>
            <content:encoded><![CDATA[<p>Pour regarder la météo depuis un terminal, il existe le projet GitHub <a href="https://github.com/chubin/wttr.in">wttr.in</a> qui permet de consulter la météo de sa ville avec une simple commande curl depuis un terminal Linux, Mac ou Windows.</p>
<h2>Exemple avec la ville de Paris</h2>
<p>Exécutez la commande suivante :</p>
<pre><code class="language-bash">curl http://wttr.in/Paris
</code></pre>
<h2>Mettre la langue en français</h2>
<p>Pour mettre en français, ajoutez le paramètre <code>?lang=fr</code> :</p>
<pre><code class="language-bash">curl http://wttr.in/Paris\?lang\=fr
</code></pre>
<h2>Supprimer le message de fin</h2>
<p>Pour supprimer le message de fin, ajoutez le paramètre <code>&amp;F</code> :</p>
<pre><code class="language-bash">curl http://wttr.in/Paris\?lang\=fr\&amp;F
</code></pre>
<h2>Ajouter un alias dans votre terminal</h2>
<p>Vous pouvez ajouter un alias dans votre fichier <code>.bashrc</code> ou <code>.zshrc</code> :</p>
<pre><code class="language-bash">alias meteo=&quot;curl http://wttr.in/Paris\?lang\=fr\&amp;F&quot;
</code></pre>
<p>Comme ça, vous pouvez à tout moment connaitre la météo en tapant la commande <code>meteo</code> dans votre terminal 😀.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/linux" title="Linux">Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bypasser les raccourcisseurs d'URL comme bitly]]></title>
            <link>https://johackim.com/universal-bypass?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/universal-bypass</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/universal-bypass.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/universal-bypass.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/Sainan/Universal-Bypass">Universal Bypass</a> est une extension open-source pour navigateur qui permet de d&#x27;outrepasser les redirections des liens généré par les raccourcisseurs d&#x27;url comme bitly.</p>
<p>L&#x27;extension est disponible sur les navigateurs <a href="https://addons.mozilla.org/en-US/firefox/addon/universal-bypass/">Firefox</a>, <a href="https://github.com/Sainan/Universal-Bypass/releases/download/13.15.2/Universal.Bypass.for.Chromium-based.browsers.zip">Chrome</a> et <a href="https://microsoftedge.microsoft.com/addons/detail/universal-bypass/ckiidekccfgninkobmmofopbbdgdclgg">Edge</a>.</p>
<p>Ça peut être utile pour des services qui nous font passer par plusieurs redirections à la suite pour pouvoir accéder à un contenu en ligne comme certain débrideurs (ex: <a href="https://leechpremium.link/index.php">LeechPremium</a>).</p>
<p>PS : Il existe aussi <a href="https://bypass.link/">https://bypass.link/</a></p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[yt-dlp]]></title>
            <link>https://johackim.com/telecharger-les-videos-de-l&apos;espace-membre-d&apos;un-site?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/telecharger-les-videos-de-l&apos;espace-membre-d&apos;un-site</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 30 May 2021 19:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/telecharger-les-videos-de-l&apos;espace-membre-d&apos;un-site.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/telecharger-les-videos-de-l&apos;espace-membre-d&apos;un-site.jpg"/>
            <content:encoded><![CDATA[<p>Pour télécharger les vidéos de l&#x27;espace membre d&#x27;un site, il suffit de se connecter au site, de reprendre le cookie puis d&#x27;utiliser <a href="https://github.com/yt-dlp/yt-dlp">yt-dlp</a> (ou <a href="https://mrs0m30n3.github.io/youtube-dl-gui/">youtube-dl-gui</a>).</p>
<ol>
<li>
Installez l&#x27;extension Firefox <a href="https://addons.mozilla.org/en-US/firefox/addon/cookies-txt/">cookies.txt</a> ou l&#x27;extension Chrome <a href="https://chrome.google.com/webstore/detail/get-cookiestxt-locally/cclelndahbckbenkjhflpdbgdldlbecc/">Get cookies.txt</a>.
</li>
<li>
Connectez-vous à l&#x27;espace membre du site en question.
</li>
<li>
Exécutez la commande suivante :
</li>
</ol>
<pre><code class="language-bash">yt-dlp --cookies cookies.txt -f hd_mp4-720p &lt;url&gt;
</code></pre>
<p>NOTE : Il existe aussi le paramètre <code>--cookies-from-browser chromium</code> pour reprendre automatiquement les cookies du navigateur.</p>
<p>S&#x27;il y a beaucoup de vidéos, vous pouvez parser le site afin de reprendre toutes les URLs dans un fichier texte (ex: <code>urls.txt</code>) puis exécuter la commande suivante :</p>
<pre><code class="language-bash">for url in $(cat urls.txt); do yt-dlp --cookies cookies.txt $url; done;
</code></pre>
<p>NOTE : Il est aussi possible de coupler <code>yt-dlp</code> avec <a href="/puppeteer" title="Puppeteer">Puppeteer</a> pour parser et télécharger toutes les vidéos de l&#x27;espace membre d&#x27;un site internet automatiquement.</p>

<p>Et si vous voulez télécharger les vidéos en provenance de vimeo.com voici la commande a exécuter :</p>
<pre><code class="language-bash">yt-dlp --referer &lt;referer&gt; https://player.vimeo.com/video/&lt;id&gt;
</code></pre>
<p>Pour installer yt-dlp sur Android :</p>
<pre><code class="language-bash">termux-setup-storage
pkg update &amp;&amp; pkg upgrade
pkg install libexpat openssl python
pip install -U yt-dlp
pkg install ffmpeg
</code></pre>
<p>Pour forcer le téléchargement au format mp4 :</p>
<pre><code class="language-bash">yt-dlp --merge-output-format mp4 &lt;url&gt;
</code></pre>
<p>Pour forcer le téléchargement en 480p :</p>
<pre><code class="language-bash">yt-dlp -f &#x27;bestaudio+bestvideo[height&lt;=480]/best[height&lt;=480]&#x27; &lt;url&gt;
</code></pre>
<p>En 720p :</p>
<pre><code class="language-bash">yt-dlp -f &#x27;bestaudio+bestvideo[height&lt;=720]/best[height&lt;=720]&#x27; &lt;url&gt;
</code></pre>
<p>Pour télécharger un audio en particulier (ex: fr) :</p>
<pre><code class="language-bash">yt-dlp -f &#x27;bestaudio[language=fr]&#x27; &lt;url&gt;
</code></pre>
<p>Pour télécharger un sous-titre :</p>
<pre><code class="language-bash">yt-dlp --convert-subs srt --write-subs --sub-lang en --skip-download &lt;url&gt;
</code></pre>
<p>Pour télécharger une liste d&#x27;urls :</p>
<pre><code class="language-bash">yt-dlp -a urls.txt
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[ClamAV]]></title>
            <description><![CDATA[Antivirus open-source pour détecter les malwares]]></description>
            <link>https://johackim.com/clamav?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/clamav</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/clamav.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/clamav.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://github.com/Cisco-Talos/clamav">Clam AntiVirus</a> (ClamAV) est un antivirus open-source pour détecter les malwares.</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Debian ou Ubuntu :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -y clamav
</code></pre>
<p>Pour l&#x27;installer sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S clamav
</code></pre>
<h2>Utilisation</h2>
<p>Pour mettre à jour sa base de donnée :</p>
<pre><code class="language-bash">sudo freshclam
</code></pre>
<p>Pour scanner un fichier, un répertoire ou tout le système de fichier :</p>
<pre><code class="language-bash">clamscan &lt;file&gt;
clamscan -r -i &lt;folder&gt;
clamscan -r -i --exclude-dir=&#x27;^/sys|^/dev&#x27; --log=/var/log/clamscan.log /
</code></pre>
<p>Pour executé ClamAV en tâche de fond vous pouvez exécutez la commande suivante :</p>
<pre><code class="language-bash">sudo systemctl start clamav-daemon.service
# Ou
clamd
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Deep packet inspection]]></title>
            <link>https://johackim.com/dpi?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/dpi</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/dpi.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/dpi.jpg"/>
            <content:encoded><![CDATA[<p>L&#x27;inspection profonde de paquets ou <strong>DPI</strong> (deep packet inspection) est une technique utilisée par certaines organisations ou gouvernements (ex: la Chine), pour analyser, identifier et filtrer le trafic Internet de manière profonde. C&#x27;est par ce moyen qu&#x27;un pays comme la chine censure tous les citoyens en interdisant l&#x27;utilisation de VPNs pour contrôler et limiter la population à l&#x27;utilisation de leurs applications et réseaux internes (Baidu, WeChat, ect...).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/ValdikSS/GoodbyeDPI">https://github.com/ValdikSS/GoodbyeDPI</a></li>
<li><a href="https://github.com/xvzc/SpoofDPI">https://github.com/xvzc/SpoofDPI</a></li>
<li>
<a href="/cybersecurite" title="Cybersécurité">Cybersécurité</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Hardening]]></title>
            <link>https://johackim.com/hardening?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/hardening</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/hardening.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/hardening.jpg"/>
            <content:encoded><![CDATA[<p>Le durcissement (ou <strong>hardening</strong> en anglais) est un processus destiné à sécuriser un système en réduisant le plus possible sa surface d&#x27;attaque.</p>
<p>Pour ça, on supprime tout ce qui n&#x27;est pas indispensable :</p>
<ul>
<li>Utilisateurs et droits inutiles</li>
<li>Mots de passe par défaut</li>
<li>Bibliothèques logicielles inutiles</li>
<li>Fichiers de configurations inutiles</li>
<li>Services inutiles</li>
<li>etc...</li>
</ul>
<p>Pour automatiser ce processus d&#x27;hardening sur un serveur Ubuntu ou Debian il est possible d&#x27;utiliser Ansible avec le dépot <a href="https://github.com/dev-sec/ansible-collection-hardening/">ansible-collection-hardening</a> :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -yq python3-pip &amp;&amp; pip3 install ansible
ansible-galaxy collection install devsec.hardening
</code></pre>
<pre><code class="language-yaml"># playbook.yml
- hosts: localhost
  collections:
    - devsec.hardening
  roles:
    - os_hardening
</code></pre>
<pre><code class="language-bash">ansible-playbook playbook.yml
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/trimstray/the-practical-linux-hardening-guide">https://github.com/trimstray/the-practical-linux-hardening-guide</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[IDS]]></title>
            <link>https://johackim.com/ids?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ids</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ids.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ids.jpg"/>
            <content:encoded><![CDATA[<p>Un <strong>système de détection d&#x27;intrusion</strong> (ou <strong>IDS</strong> : Intrusion Detection System) est un logiciel utilisé pour monitorer et détecter les activités anormales ou suspectes sur un réseau ou un système de fichier.</p>
<p>De manière générale, il existe 2 types d&#x27;IDS ;</p>
<ol>
<li>
Les Systèmes de détection d&#x27;intrusion réseau (ou <strong>NIDS</strong> : Network Intrusion Detection System) ; ceux qui analysent le trafic réseau entrant.
</li>
<li>
Les Systèmes de détection d&#x27;intrusion hôtes (ou <strong>HIDS</strong> : Host-based Intrusion Detection System) ; ceux qui analysent les systèmes de fichier.
</li>
</ol>
<p>Concernant les <strong>méthodes de détection d&#x27;intrusion</strong>, elles sont généralement classifiées en deux catégories :</p>
<ul>
<li>
<strong>Détection basée sur les signatures</strong> : l&#x27;IDS basé sur les signatures surveille les paquets dans le réseau et les compare avec des modèles d&#x27;attaque préconfigurés et prédéterminés appelés signatures.
</li>
<li>
<strong>Détection basée sur les anomalies</strong> : l&#x27;IDS basé sur des anomalies surveillera le trafic réseau et le comparera à une base de référence établie. La ligne de base identifiera ce qui est «normal» pour ce réseau - quel type de bande passante est généralement utilisé et quels protocoles sont utilisés.
</li>
</ul>
<p>Les IDS les plus populaires sont :</p>
<ul>
<li><a href="https://github.com/snort3/snort3">Snort</a></li>
<li><a href="https://github.com/OISF/suricata">Suricata</a></li>
<li><a href="https://github.com/fail2ban/fail2ban">fail2ban</a></li>
<li><a href="https://github.com/zeek/zeek">Zeek</a></li>
<li><a href="https://github.com/ossec/ossec-hids">OSSEC</a></li>
<li><a href="https://github.com/wazuh/wazuh">Wazuh</a></li>
</ul>
<p>Il existe aussi des distributions qui intègrent un IDS :</p>
<ul>
<li><a href="https://github.com/Security-Onion-Solutions/securityonion">Security Onion</a></li>
<li><a href="https://github.com/StamusNetworks/SELKS">SELKS</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[IPS]]></title>
            <link>https://johackim.com/ips?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ips</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ips.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ips.jpg"/>
            <content:encoded><![CDATA[<p>Un <strong>système de prévention d&#x27;intrusion</strong> (ou <strong>IPS</strong> : Intrusion Prevention System), également appelé système de détection et de prévention des intrusions (ou <strong>IDPS</strong> : <strong>intrusion detection and prevention systems</strong>), est un logiciel pour détecter et bloquer les activités anormales ou suspecte sur un réseau ou un système de fichier.</p>
<p>De manière générale, il existe 2 types d&#x27;IPS ;</p>
<ol>
<li>
Les Systèmes de prévention d&#x27;intrusion réseaux (ou <strong>NIPS</strong> : Network Intrusion Prevention System) ; ceux qui détecte et bloque le trafic réseau entrant suspect.
</li>
<li>
Les Systèmes de prévention d&#x27;intrusion hôtes (ou <strong>HIPS</strong> : Host-based Intrusion Prevention System) ; ceux qui analyse et bloque les comportements suspect sur un système de fichier.
</li>
</ol>
<p>Contrairement aux <a href="/ids" title="systèmes de détection d&#x27;intrusion">systèmes de détection d&#x27;intrusion</a> qui se contentent d&#x27;analyser des données pour émettre des alertes, les IPS (ou IDPS) sont des outils permettant de bloquer une attaque.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pare-feu]]></title>
            <link>https://johackim.com/pare-feu?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/pare-feu</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/pare-feu.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/pare-feu.jpg"/>
            <content:encoded><![CDATA[<p>Un pare-feu (ou firewall) est un logiciel ou matériel de sécurité permettant d&#x27;autoriser ou bloquer le trafic entrant et/ou sortant d&#x27;un réseau.</p>
<p>Les pare-feu open-source les plus populaires sont :</p>
<ul>
<li><a href="https://pfsense.org/">pfSense</a></li>
<li><a href="https://opnsense.org/">OPNSense</a></li>
<li><a href="https://github.com/crowdsecurity/crowdsec">CrowdSec</a></li>
<li><a href="https://github.com/evilsocket/opensnitch">Opensnitch</a></li>
<li>
<a href="/iptables" title="iptables">iptables</a>

</li>
<li>
<a href="/ufw" title="UFW" class="not-found">UFW</a>

</li>
<li>
<a href="/portmaster" title="Portmaster">Portmaster</a>

</li>
</ul>
<p>Et voici une liste d&#x27;IPs à bloquer :</p>
<ul>
<li><a href="https://opendbl.net/">https://opendbl.net/</a></li>
<li><a href="https://blocklist.de/en/index.html">https://blocklist.de/en/index.html</a></li>
<li><a href="https://feeds.dshield.org/block.txt">https://feeds.dshield.org/block.txt</a></li>
<li><a href="https://spamhaus.org/drop/drop_v4.json">https://spamhaus.org/drop/drop_v4.json</a></li>
<li><a href="https://iplists.firehol.org/">https://iplists.firehol.org/</a> (<a href="https://github.com/firehol/blocklist-ipsets/">https://github.com/firehol/blocklist-ipsets/</a>)</li>
<li><a href="https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt">https://feodotracker.abuse.ch/downloads/ipblocklist_recommended.txt</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Spectre]]></title>
            <link>https://johackim.com/spectre?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/spectre</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 18 May 2021 21:17:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/spectre.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/spectre.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://spectre.app/">Spectre</a> (anciennement <a href="https://masterpasswordapp.com/">MasterPassword</a>) est une <strong>application de mot de passe</strong> <a href="https://gitlab.com/spectre.app">open-source</a> qui ne stocke aucun mot de passe, il contient un algorithme pour <strong>créer des mots de passe uniques de manière reproductible</strong>.</p>
<p>Personnellement, j&#x27;utilise Spectre pour une question <strong>minimaliste</strong>.</p>
<p>Pour avoir un outil simple qui <strong>ne m&#x27;oblige pas à stocker, synchroniser ou à retenir mes mots de passes</strong>.</p>
<p>Cela m&#x27;évite de fournir ma vie à des gestionnaires de mots de passe propriétaires comme lastpass.com, 1password.com ou dashlane.com.</p>
<h2>Explication</h2>
<p><strong>Vous retenez uniquement un seul mot de passe et l&#x27;algorithme se charge du reste.</strong></p>
<p>Exemple : si vous voulez générer/retrouver le mot de passe de l&#x27;un de vos comptes (ex : Twitter), vous devez renseigner 3 informations dans l&#x27;application :</p>
<ol>
<li>Votre Identifiant Twitter (ex : johackim)</li>
<li>L&#x27;URL ou le nom de l&#x27;application (ex : twitter.com)</li>
<li>Votre MasterPassword (ex : mym@sterp@ssw0rd)</li>
</ol>
<p>Et cela vous génère un mot de passe unique basé sur ces 3 informations que vous pouvez utiliser en tant que mot de passe Twitter.</p>
<p><strong>Aucun mot de passe n&#x27;est stocké nulle part</strong>. Cela évite de se faire voler ou de perdre son mot de passe. À condition de <strong>ne jamais oublier son MasterPassword</strong> 🧠.</p>
<h2>Installation</h2>
<p>Il existe une version <a href="https://spectre.pw/">web</a>, <a href="https://addons.mozilla.org/fr/firefox/addon/masterpassword-firefox/">Extension</a>, Linux, Mac, Windows, <a href="https://apps.apple.com/us/app/master-password/id662763204">iOS</a> et <a href="https://web.archive.org/web/20210417211605if_/https%3A%2F%2Fmasterpassword%2Eapp%2Fmasterpassword%2Dandroid%2Eapk">Android</a>.</p>
<p>Pour l&#x27;installer la version CLI sur Linux :</p>
<pre><code class="language-bash">git clone --recursive https://gitlab.com/spectre.app/cli spectre
cd spectre
./build
sudo ./install
</code></pre>
<p>En attendant la sortie de la version GUI de Spectre, vous pouvez utiliser la version Java de MasterPassword :</p>
<pre><code class="language-bash">wget https://web.archive.org/web/20210417211605if_/https://masterpassword.app/masterpassword-gui.jar
java -jar masterpassword-gui.jar
</code></pre>
<h2>Utilisation</h2>
<p>Lancer l&#x27;application sur votre périphérique préféré et renseigner les 3 informations suivantes :</p>
<ol>
<li>Votre Identifiant (nom d&#x27;utilisateur ou e-mail)</li>
<li>L&#x27;URL ou le nom de l&#x27;application (ex : twitter.com ou twitter)</li>
<li>Votre MasterPassword (ex : mym@sterp@ssw0rd)</li>
</ol>
<pre><code class="language-bash">spectre -u &lt;username&gt; &lt;domain.com&gt;
</code></pre>
<p>Puis vous récupérez un mot de passe généré !</p>
<p>Si dans de très rare cas, le mot de passe généré n&#x27;accepte pas un des caractères de votre mot de passe, jouez avec les paramètres de spectre pour changer le format du mot de passe :</p>
<pre><code class="language-bash">spectre -u &lt;username&gt; &lt;domain.com&gt; -c 2 # Regénérer le mot de passe une 2ème fois
spectre -u &lt;username&gt; &lt;domain.com&gt; -t short # Changer le format du mot de passe
</code></pre>
<p><strong>Astuce</strong> : Ajoutez l&#x27;alias <code>alias copy=&#x27;xclip -selection clipboard&#x27;</code> dans votre fichier <code>.bashrc</code> ou <code>.zshrc</code> pour copier-coller le mot de passe généré directement dans le presse-papier (ex : <code>spectre -u &lt;username&gt; &lt;domain.com&gt; | copy</code>).</p>
<p>PS : Sur le même principe, il existe aussi <a href="https://github.com/lesspass/lesspass">LessPass</a>.</p>
<h2>Bonus : Démarrer la version web</h2>
<p>Il existe aussi une version web de MasterPassword :</p>
<pre><code class="language-bash">git clone --depth=1 --recursive https://github.com/Lyndir/MasterPassword
cd MasterPassword
git checkout platform-independent/web/js/
cd MasterPassword/platform-independent/web
docker cp -a . $(docker create --rm nginx):/usr/share/nginx/html/
docker commit nginx johackim/mpw
docker run -it --name mpw -p 80:80 johackim/mpw
# Rendez-vous sur http://localhost
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://news.ycombinator.com/item?id=9788597">Hacker News - Master Password</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[GlusterFS]]></title>
            <link>https://johackim.com/glusterfs?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/glusterfs</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/glusterfs.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/glusterfs.jpg"/>
            <content:encoded><![CDATA[<p><strong>GlusterFS</strong> est <a href="/systeme-de-fichiers-distribue" title="Système de fichiers distribué" class="not-found">Système de fichiers distribué</a> qui peut évoluer de manière progressive pour stocker plusieurs pétaoctets de données.</p>

<p>Pour installer un serveur GlusterFS :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -yq glusterfs-server
systemctl enable --now glusterd
</code></pre>
<p>Pour créer un volume de donnée <code>/mnt/glusterfs</code> :</p>
<pre><code class="language-bash">gluster volume create vol01 transport tcp &quot;127.0.0.1:/mnt/glusterfs&quot; force
gluster volume start vol01
</code></pre>
<p>Pour accéder au volume de donnée depuis d&#x27;autres serveurs :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -yq glusterfs-client
</code></pre>
<pre><code class="language-bash">echo &quot;127.0.0.1:/vol01 /mnt/data glusterfs defaults,_netdev 0 0&quot; &gt;&gt; /etc/fstab
mount -a
</code></pre>
<p>PS: N&#x27;oubliez pas de modifier l&#x27;adresse ip <code>127.0.0.1</code> par l&#x27;adresse ip interne de votre serveur (ex: <code>10.12.180.210</code>).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/gluster/glusterfs">https://github.com/gluster/glusterfs</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Grafana]]></title>
            <link>https://johackim.com/installer-grafana-et-prometheus-avec-docker-swarm?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-grafana-et-prometheus-avec-docker-swarm</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-grafana-et-prometheus-avec-docker-swarm.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-grafana-et-prometheus-avec-docker-swarm.jpg"/>
            <content:encoded><![CDATA[<p>Pour monitorer une infrastructure, il existe Grafana et Prometheus.</p>
<p>Prometheus se chargera de collecter les données (CPU, RAM, DISK, etc..) des serveurs et Grafana les affichera sur un dashboard.</p>
<h2>Installation</h2>
<pre><code class="language-bash">DOMAIN=grafana.example.com docker stack deploy -c &lt;(curl -so - https://raw.github.com/ethibox/awesome-stacks/master/stacks/monitoring.yml) monitoring
</code></pre>
<h2>Utilisation</h2>
<p>Une fois installé vous pouvez vous rendre sur <a href="http://grafana.localhost">http://grafana.localhost</a> avec les identifiants <code>admin:admin</code> et ajoutez prometheus <code>http://prometheus:9090/prometheus</code> en tant que Data Source.</p>
<p>Vous pouvez ensuite créer un dashboard pour monitorer vos serveurs (Conteneurs, CPU, RAM, stockage, etc...).</p>
<p>Voici <a href="https://drive.proton.me/urls/Z1YKM1G9ZW#W8MCYJZH33f3">mon Dashboard</a> si vous souhaitez vous en inspirer.</p>
<p>Il faut modifier tous les uid du fichier json avec celui de votre data source.</p>
<p>Et pour définir le dashboard en tant que page d&#x27;accueil, il faut l&#x27;ajouter en tant que &quot;Home Dashboard&quot; dans les paramètres de votre profil utilisateur.</p>
<p>Ajouter des alertes depuis l&#x27;onglet &quot;Alert rules&quot;.</p>
<p>Pour éviter de recevoir des notifications de manière répétitive, il faut mettre <code>1y</code> l&#x27;option &quot;Repeat Interval&quot; du menu &quot;Notification policies&quot; au lieu de <code>4h</code>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installer Traefik avec Docker Swarm]]></title>
            <link>https://johackim.com/installer-traefik-avec-docker-swarm?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-traefik-avec-docker-swarm</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-traefik-avec-docker-swarm.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-traefik-avec-docker-swarm.jpg"/>
            <content:encoded><![CDATA[<p>Pour installer Traefik avec <a href="/docker-swarm" title="Docker Swarm">Docker Swarm</a>, on créer une stack Docker <code>traefik.yml</code> :</p>

<pre><code class="language-yaml"># traefik.yml
version: &#x27;3.8&#x27;

services:
  traefik:
    image: traefik:${VERSION:-2.4.8}
    command:
      - --providers.docker
      - --providers.docker.network=traefik-net
      - --providers.docker.exposedByDefault=false
      - --providers.docker.swarmMode=true
      - --providers.docker.endpoint=unix:///var/run/docker.sock
      - --entrypoints.http.address=:80
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - {target: 80, published: 80, mode: host, protocol: tcp}

networks:
  default:
    external: true
    name: traefik-net
</code></pre>
<p>On créer un réseau docker :</p>
<pre><code class="language-bash">docker network create --driver=overlay traefik-net
</code></pre>
<p>On déploie traefik :</p>
<pre><code class="language-bash">docker stack deploy -c traefik.yml traefik
</code></pre>
<p>Il est à présent possible de déployer une application (ex: Ghost) avec un nom de domaine associé (ex: ghost.localhost) :</p>
<pre><code class="language-bash">docker service create --network traefik-net \
-l traefik.enable=true \
-l traefik.http.routers.my-container.rule=&#x27;Host(`ghost.localhost`)&#x27; \
-l traefik.http.services.my-service.loadbalancer.server.port=2368 ghost
</code></pre>
<p>Vous pouvez accédez à votre application en vous rendant sur <a href="http://ghost.localhost">http://ghost.localhost</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Restic]]></title>
            <link>https://johackim.com/restic?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/restic</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/restic.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/restic.jpg"/>
            <content:encoded><![CDATA[<p>Pour sauvegarder des données sous Linux, il existe <a href="https://github.com/restic/restic">restic</a> en tant que logiciel de backups.</p>
<p>Restic peut sauvegarder des données sur différent backends :</p>
<ul>
<li>Buckets S3 (minio, scaleway, AWS, etc...)</li>
<li>SFTP</li>
<li>Local</li>
<li>Etc...</li>
</ul>
<p>Chaque fois que vous lancez la commande <code>restic backup</code>, cela créer un nouvel instantané (un &quot;snapshot&quot;) immuable qui est une photographie de l&#x27;état de vos fichiers à ce moment précis.</p>
<p>Et si vous souhaitez plus de <a href="https://rclone.org/#providers">backends</a> (Nextcloud, Dropbox, OVH, etc...), il est possible de coupler restic avec <a href="/rclone" title="Rclone">Rclone</a>.</p>

<h2>Installation</h2>
<p>Pour installer restic sous Debian ou Ubuntu :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -y restic
</code></pre>
<p>Sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S restic
</code></pre>
<p>Ou manuellement :</p>
<pre><code class="language-bash">export RESTIC_VERSION=0.18.1
wget https://github.com/restic/restic/releases/download/v$RESTIC_VERSION/restic_${RESTIC_VERSION}_linux_amd64.bz2
bzip2 -d restic_${RESTIC_VERSION}_linux_amd64.bz2
mv restic_${RESTIC_VERSION}_linux_amd64 /bin/restic
chmod +x /bin/restic
</code></pre>
<h2>Lancer une sauvegarde vers un bucket S3</h2>
<p>Voici un exemple avec une sauvegarde du dossier <code>~/</code> vers un bucket S3 de chez Scaleway :</p>
<pre><code class="language-txt"># ~/.aws/credentials
[default]
aws_access_key_id = &lt;AWS_ACCESS_KEY_ID&gt;
aws_secret_access_key = &lt;AWS_SECRET_ACCESS_KEY&gt;
</code></pre>
<pre><code class="language-bash">restic -r s3:s3.fr-par.scw.cloud/&lt;bucket_name&gt; init
</code></pre>
<pre><code class="language-bash">restic -r s3:s3.fr-par.scw.cloud/&lt;bucket_name&gt; backup ~/
</code></pre>
<p>Il est possible de facilement automatiser la sauvegarde via une tâche cron :</p>
<pre><code class="language-bash">RESTIC_REPOSITORY=&quot;MY_REPOSITORY&quot; # Exemple: s3:s3.fr-par.scw.cloud/mybucket
RESTIC_PASSWORD=&quot;MY_PASSWORD&quot;

0 0 * * * restic backup /home/myuser/
</code></pre>
<h2>Consulter les sauvegardes</h2>
<pre><code class="language-bash">restic snapshots
</code></pre>
<h2>Restaurer une sauvegarde</h2>
<pre><code class="language-bash">restic restore &lt;id&gt; --target &lt;folder&gt;
</code></pre>
<h2>Restaurer un fichier spécifique</h2>
<pre><code class="language-bash">restic restore &lt;id&gt; --include &lt;file_path&gt; --target &lt;folder&gt;
</code></pre>
<h2>Monter une sauvegarde</h2>
<p>Pour monter une sauvegarde restic sur un dossier :</p>
<pre><code class="language-bash">restic mount &lt;folder&gt;
</code></pre>
<h2>Libérer de l&#x27;espace</h2>
<p>Pour libérer de l&#x27;espace :</p>
<pre><code class="language-bash">restic forget --keep-within 30d --prune
# Ou
restic forget --keep-within 30d --group-by &quot;paths&quot; --prune # Ignorer le nom de la machine
</code></pre>
<h2>Mettre à jour restic</h2>
<p>Pour mettre à jour restic :</p>
<pre><code class="language-bash">restic self-update
</code></pre>
<h2>Débloquer l&#x27;accès</h2>
<p>Si pour une raison ou une autre votre accès est bloqué, exécuter la commande suivante :</p>
<pre><code class="language-bash">kill &lt;pid&gt;
restic unlock
</code></pre>
<h2>Mettre à jour le mot de passe d&#x27;un repository</h2>
<pre><code class="language-bash">restic key list
restic key add
</code></pre>
<h2>Connaitre la taille d&#x27;un repository</h2>
<pre><code class="language-bash">restic stats
</code></pre>
<h2>Créer une sauvegarde automatique quotidienne</h2>
<p>Créer un service dans le fichier <code>~/.config/systemd/user/restic.service</code>:</p>
<pre><code class="language-txt">[Unit]
Description=Restic Backup
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=restic -q backup ${HOME}
# ExecStartPost=curl -sL https://mywebhook.example.com
Environment=RESTIC_REPOSITORY=s3:example.com/mybucket
Environment=RESTIC_PASSWORD=myp@ssw0rd
Environment=HOME=/home/myuser
Restart=on-failure
RestartSec=30
</code></pre>
<p>Créer un timer dans le fichier <code>~/.config/systemd/user/restic.timer</code>:</p>
<pre><code class="language-txt">[Unit]
Description=Daily Restic Backup Timer

[Timer]
Persistent=true
OnCalendar=daily
RandomizedDelaySec=300

[Install]
WantedBy=timers.target
</code></pre>
<p>Activez le timer :</p>
<pre><code class="language-bash">sudo loginctl enable-linger &lt;user&gt;
reboot
systemctl --user daemon-reload
systemctl --user enable --now restic.timer
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Service Docker]]></title>
            <link>https://johackim.com/service-docker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/service-docker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/service-docker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/service-docker.jpg"/>
            <content:encoded><![CDATA[<p>Pour déployer des conteneurs dans un cluster <a href="/docker-swarm" title="Docker Swarm">Docker Swarm</a>, il faut créer des <strong>services Docker</strong>.</p>

<p>Les services permettent de définir un état souhaité pour une application que Docker Swarm prendra soin de gérer tout seul.</p>
<p>Si un conteneur d&#x27;un service s&#x27;arrête, il sera automatiquement relancer.</p>
<p>Il existe deux types de services :</p>
<ul>
<li>
Les <strong>services répliqués</strong> ; vous spécifiez le nombre de réplicas que vous souhaitez, et ils seront attribués aux nœuds disponibles.
</li>
<li>
Les <strong>services globaux</strong> ; un seul réplica sera attribué sur chaque noeud.
</li>
</ul>
<p>Le mode de réplication par défaut d&#x27;un service est répliqué. Pour déployer un service global, vous devez passer l&#x27;indicateur <code>--mode global</code> à la commande <code>docker service create</code>.</p>
<p>Pour créer un service, il suffit d&#x27;exécuter la commande suivante :</p>
<pre><code class="language-bash">docker service create -p published=2368,target=2368,mode=host ghost
</code></pre>
<p>Vous pouvez accéder à votre application Ghost à l&#x27;adresse : <a href="http://localhost:2368">http://localhost:2368</a></p>
<p>Pour mettre à jour un service :</p>
<pre><code class="language-bash">docker service update --force --image ghost:5 ghost
</code></pre>
<p>Pour stopper un service :</p>
<pre><code class="language-bash">docker service scale ghost=0
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Stack Docker]]></title>
            <link>https://johackim.com/stack-docker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/stack-docker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/stack-docker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/stack-docker.jpg"/>
            <content:encoded><![CDATA[<p>Pour créer une <strong>stack Docker</strong>, il suffit de créer un fichier YAML qui contient les détails des services Docker à démarrer (image, volumes, ports, labels, etc...) :</p>
<pre><code class="language-yaml"># ghost.yml
version: &#x27;3.8&#x27;

services:
  web:
    image: ghost:latest
    ports:
      - {target: 2368, published: 2368, mode: host}
</code></pre>
<p>On peut démarrer la stack <code>ghost.yml</code> avec la commande suivante :</p>
<pre><code class="language-bash">docker stack deploy -c ghost.yml ghost
</code></pre>
<p>Vous pouvez accéder à votre application Ghost à l&#x27;adresse : <a href="http://localhost:2368">http://localhost:2368</a></p>
<p>Il est aussi possible de télécharger et d&#x27;exécuter une stack Docker via une seule ligne de commande :</p>
<pre><code class="language-bash">docker stack deploy -c &lt;(curl -so - https://raw.githubusercontent.com/ethibox/awesome-stacks/master/stacks/etherpad.yml) etherpad
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Terraform]]></title>
            <link>https://johackim.com/terraform?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/terraform</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/terraform.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/terraform.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://terraform.io/">Terraform</a> est un logiciel open-source pour construire, modifier et versionner une infrastructure de manière sûre et efficace.</p>
<p>C&#x27;est un outil infrastructure as code.</p>
<p>Vous utilisez des fichiers de configuration au format .tf (HashiCorp) pour décrire les composants que vous souhaitez avoir dans votre infrastructure et Terraform s&#x27;occupe de générer un plan d&#x27;exécution et de l&#x27;exécuter.</p>
<p>Terraform supporte beaucoup de <a href="https://registry.terraform.io/search/providers">fournisseurs d&#x27;infrastructure cloud</a> :</p>
<ul>
<li><a href="https://registry.terraform.io/providers/scaleway/scaleway/latest/docs">Scaleway</a></li>
<li><a href="https://registry.terraform.io/providers/ovh/ovh/latest/docs">OVH</a></li>
<li><a href="https://registry.terraform.io/providers/hashicorp/aws/latest/docs">AWS</a></li>
<li><a href="https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs">OpenStack</a></li>
<li><a href="https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs">Azure</a></li>
<li><a href="https://registry.terraform.io/providers/hashicorp/google/latest/docs">GCP</a></li>
<li>ect...</li>
</ul>
<h2>Installation</h2>
<p>Pour installer Terraform, rendez-vous sur <a href="https://terraform.io/downloads.html">la page de téléchargement</a>.</p>
<p>Téléchargez et installez le fichier adapté à votre système d&#x27;exploitation (Linux, Mac ou Windows).</p>
<p>Sur Arch Linux :</p>
<pre><code class="language-bash">sudo pacman -S terraform
</code></pre>
<h2>Utilisation</h2>
<p>Initialiser Terraform :</p>
<pre><code class="language-bash">terraform init
</code></pre>
<p>Vérifier la configuration :</p>
<pre><code class="language-bash">terraform plan
</code></pre>
<p>Mettre à jour l&#x27;infrastructure :</p>
<pre><code class="language-bash">terraform apply
</code></pre>
<p>Importer un objet existant :</p>
<pre><code class="language-bash">terraform import openstack_lb_loadbalancer_v2.lb_1 &lt;ID&gt;
</code></pre>
<p>Voir l&#x27;état actuel de l&#x27;infrastructure :</p>
<pre><code class="language-bash">terraform show
</code></pre>
<p>Gérer un workspace :</p>
<pre><code class="language-bash">terraform workspace new &lt;name&gt; # Créer un workspace (ex: dev, prod)
terraform workspace select &lt;name&gt; # Sélectionner un workspace
terraform workspace delete &lt;name&gt; # Supprimer un workspace
terraform workspace list # Lister les workspaces
</code></pre>
<p>Linter les fichiers .tf :</p>
<pre><code class="language-bash">terraform fmt -check -recursive
</code></pre>
<p>Détruire une infrastructure :</p>
<pre><code class="language-bash">terraform destroy
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://developer.hashicorp.com/terraform/install">https://developer.hashicorp.com/terraform/install</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik et Let's Encrypt]]></title>
            <link>https://johackim.com/traefik-et-let&apos;s-encrypt?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/traefik-et-let&apos;s-encrypt</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/traefik-et-let&apos;s-encrypt.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/traefik-et-let&apos;s-encrypt.jpg"/>
            <content:encoded><![CDATA[<p>Pour générer des certificats SSL, rien de mieux que Let&#x27;s Encrypt pour effectuer automatiquement cette tâche.</p>
<p>En rendant publiquement accessible les ports 80 et 443, <a href="/traefik" title="Traefik">Traefik</a> va automatiquement communiquer avec Let&#x27;s Encrypt pour générer automatiquement des certificats SSL à chaque fois qu&#x27;un nouveau nom de domaine est relié à une application.</p>

<h2>Vérifiez que vos ports 80 et 443 sont accessibles publiquement</h2>
<p>Avant de lancer Traefik, n&#x27;oubliez pas de vérifiez si vos ports 80 et 443 sont bien accessible depuis l&#x27;extérieur de votre réseau pour que Let&#x27;s Encrypt puisse communiquer avec votre serveur Traefik.</p>
<p>Utilisez la commande <code>curl https://ipv4.am.i.mullvad.net/port/80</code> (depuis votre serveur) ou <a href="https://canyouseeme.org/">https://canyouseeme.org/</a> pour vérifier.</p>
<h2>Créez une zone DNS de type A</h2>
<p>Créez une zone DNS de type A vers l&#x27;adresse IP publique de votre serveur, exemple : <code>ghost.example.com</code> -&gt; <code>IN A 9.9.9.9</code>.</p>
<p>Pour ça, passez par le registraire de votre nom de domaine (ex: <a href="https://ovh.com/fr/">OVH</a>, <a href="https://gandi.net/fr">Gandi</a>, <a href="https://godaddy.com/fr-fr">GoDaddy</a> ou <a href="https://www.ionos.fr/domaine/noms-de-domaine">1&amp;1</a>).</p>
<h2>Démarrez Traefik avec Docker Swarm et Let&#x27;s Encrypt</h2>
<p>Démarrez Traefik :</p>
<pre><code class="language-yaml">version: &#x27;3.8&#x27;

services:
  traefik:
    image: traefik:${VERSION:-2.4.8}
    command:
      - --providers.docker
      - --providers.docker.network=traefik-net
      - --providers.docker.exposedByDefault=false
      - --providers.docker.swarmMode=true
      - --providers.docker.endpoint=unix:///var/run/docker.sock
      - --entrypoints.http.address=:80
      - --entrypoints.https.address=:443
      - --entrypoints.http.http.redirections.entryPoint.to=https
      - --entrypoints.http.http.redirections.entryPoint.scheme=https
      - --entrypoints.http.http.redirections.entrypoint.permanent=true
      - --certificatesresolvers.letsencrypt.acme.tlschallenge=true
      - --certificatesresolvers.letsencrypt.acme.email=${ACME_EMAIL:-noreply@ethibox.fr}
      - --certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json
    volumes:
      - ${VOLUME_PATH}letsencrypt:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
    ports:
      - {target: 80, published: 80, mode: host, protocol: tcp}
      - {target: 443, published: 443, mode: host, protocol: tcp}

volumes:
  letsencrypt:

networks:
  default:
    external: true
    name: traefik-net
</code></pre>
<pre><code class="language-bash">docker stack deploy -c traefik.yml traefik
</code></pre>
<p>Créer une application avec un nom de domaine que vous disposez (ex: ghost.example.com) :</p>
<pre><code class="language-bash">docker service create --network traefik-net \
-l traefik.enable=true \
-l traefik.http.routers.my-container.rule=&#x27;Host(`ghost.example.com`)&#x27; \
-l traefik.http.services.my-service.loadbalancer.server.port=2368 ghost
</code></pre>
<p>Un certificat est automatiquement généré et vous pouvez à présent accéder à votre application avec le protocole HTTPS : <code>https://ghost.example.com</code>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik]]></title>
            <link>https://johackim.com/traefik?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/traefik</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 17 May 2021 17:32:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/traefik.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/traefik.jpg"/>
            <content:encoded><![CDATA[<p>Pour rendre accessible plusieurs applications web à partir d&#x27;un seul point d&#x27;entrée, il existe Traefik en tant que reverse proxy.</p>
<p>Grâce à Traefik, chaque requête HTTP provenant d&#x27;un client web (ex: Firefox, Chrome) sera automatiquement redirigé vers la bonne application.</p>
<p>Vous pouvez l&#x27;installer avec Docker avec la commande suivante :</p>
<pre><code class="language-bash">docker run -p 80:80 \
-v /var/run/docker.sock:/var/run/docker.sock:ro \
traefik:2.4.8 --providers.docker=true
</code></pre>
<p>Une fois installé vous pouvez relié une application à un nom de domaine (ex: ghost.localhost) :</p>
<pre><code class="language-bash">docker run -l traefik.http.routers.container.rule=&#x27;Host(`ghost.localhost`)&#x27; ghost
</code></pre>
<p>Vous pouvez accédez à votre application en vous rendant sur <a href="http://ghost.localhost">http://ghost.localhost</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Obsidian]]></title>
            <link>https://johackim.com/obsidian?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/obsidian</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 11 May 2021 14:20:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/obsidian.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/obsidian.jpg"/>
            <content:encoded><![CDATA[<p><a href="https://obsidian.md/">Obsidian</a> est une application de prise de notes comme <a href="https://evernote.com/">Evernote</a>, <a href="https://notion.so/">Notion</a> et <a href="https://bear.app/">Bear</a>, mais se distingue en introduisant une nouvelle façon d&#x27;organiser et de prendre vos notes.</p>
<ul>
<li>Les <strong>Backlinks</strong> (liens bidirectionnels) - permettant de relier les notes entre elles.</li>
<li>Un <strong>Graph Viewer</strong> - pour découvrir et associer des notes et des topics.</li>
</ul>
<p>Et contrairement à <a href="https://roamresearch.com/">Roam Research</a>, Obsidian est <strong>gratuit</strong> et garde les <strong>données en local sur son ordinateur</strong>.</p>
<p>Ainsi, vous pouvez sauvegarder/synchroniser toutes vos données sur votre NAS ou une solution cloud comme Nextcloud.</p>
<p>Il est disponible sur Mac, Windows, <a href="/linux" title="Linux">Linux</a>, Android et iOS.</p>

<h2>Syntaxe Markdown</h2>
<p>Obsidian utilise la syntaxe Markdown par défaut :</p>
<ul>
<li><code>[Link Text](URL)</code> : Créer un lien avec URL</li>
<li><code>![Alt Text](URL)</code> : Créer une image</li>
<li><code>- Bullet List</code> : Créer une liste</li>
<li><code>1. Number List</code> : Créer une liste numérique</li>
<li><code>**bold**</code> : Créer un texte en gras</li>
<li><code>*italic*</code> : Créer un texte en italique</li>
<li><code>**souligner**</code> : Créer un texte souligné</li>
<li><code>~~Strikethrough~~</code> : Créer un texte barré</li>
<li><code>&gt; quote</code> : Créer une citation</li>
<li><code># Heading 1</code> : Créer un titre de niveau 1</li>
<li><code>## Heading 2</code> : Créer un titre de niveau 2</li>
<li><code>### Heading 3</code> : Créer un titre de niveau 3</li>
<li><code>[ref1]</code> et <code>[ref1]: &lt;url&gt;</code> : Créer une référence</li>
<li><code>[Link Text][ref1]</code> et <code>[ref1]: &lt;url&gt;</code> : Créer une référence avec un text personnalisé</li>
</ul>
<h2>Syntaxe d&#x27;Obsidian</h2>
<p>Mais il a quelques spécificités de syntaxes supplémentaires :</p>
<ul>
<li><code>[[Linking Note]]</code> : Créer un lien vers une autre note</li>
<li><code>[[Linking Note|Link Name]]</code> : Créer un lien avec un nom personnalisé</li>
<li><code>[[Linking Note#heading]]</code> : Créer un lien vers un titre d&#x27;une autre note</li>
<li><code>![[Linking Note^]]</code> : Intégrer un bloc d&#x27;une autre note</li>
<li><code>![[Filename]]</code> : Intégrer une autre note</li>
<li>
<code>!<a href="/image.filetype" title="250" class="not-found">250</a></code> : Insérer une image embed de 250px de largeur

</li>
<li><code>![|250](https://site.xyz/image.png)</code> : Insérer une image de 250px de largeur</li>
<li><code>![](https://youtube.com/watch?v=NnTvZWp5Q7o)</code> : Intégrer une vidéo YouTube</li>
<li><code>![](https://twitter.com/obsdmd/status/1580548874246443010)</code> : Intégrer un Tweet</li>
<li><code>#tag</code> : Créer un tag</li>
<li><code>#nested/tag</code> : Créer un sous-tag</li>
<li><code>[^Ref]</code> et <code>[^Ref]: Footnote text.</code> : Créer une note de bas de page</li>
<li><code>^[Footnote text]</code> : Créer une note de bas de page en une ligne</li>
<li><code>==highlight==</code> : Créer un texte surligné</li>
<li><code>aliases: [Alias1, Alias2]</code> : Créer un alias (à ajouter dans le frontmatter)</li>
<li><code>- [ ] Task list</code> : Créer une tâche</li>
<li><code>- [x] Task list</code> : Cocher une tâche</li>
<li><code>&gt; [!NOTE]</code> : Créer un callout^[<a href="https://help.obsidian.md/How+to/Use+callouts">https://help.obsidian.md/How+to/Use+callouts</a>]</li>
</ul>
<h2>Raccourcis clavier</h2>
<ul>
<li><code>CTRL+E</code> : Basculer entre le mode édition et visualisation.</li>
<li><code>CTRL+O</code> : Changer de fichier rapidement</li>
<li><code>CTRL+MAJ+F</code> : Activer le mode recherche</li>
<li><code>CTRL+P</code> : Exécuter une commande</li>
<li><code>CTRL+G</code> : Afficher le Graph viewer</li>
<li><code>CTRL+,</code> : Afficher les paramètres d&#x27;Obsidian</li>
</ul>
<h2>Fonctionnalités avancées</h2>
<ul>
<li><strong>Templates</strong> : Vous pouvez créer des templates réutilisables.</li>
<li><strong>Daily notes</strong> : Obsidian permet de créer rapidement des notes journalières à partir d&#x27;un template.</li>
<li><strong>Workspaces</strong> : Vous pouvez créer des espaces de travail avec des configurations différentes.</li>
<li><strong>Publish</strong> : Vous pouvez publier vos notes publiquement sur un site que <a href="https://obsidian.md/publish">obsidian.md</a> héberge pour vous.</li>
<li><strong>Mermaid</strong> : Obsidian est compatible avec <a href="https://github.com/mermaid-js/mermaid">Mermaid</a>, ce qui vous permet de créer des diagrammes dans vos notes.</li>
</ul>
<h2>Plugins</h2>
<p>Obsidian offre la possibilité d&#x27;étendre ses fonctionnalités avec des plugins :</p>

















































































<table><thead><tr><th>Plugin</th><th>Description</th></tr></thead><tbody><tr><td><a href="https://github.com/lynchjames/obsidian-mind-map">Mindmap</a></td><td>Créer des mindmaps</td></tr><tr><td><a href="https://github.com/mgmeyers/obsidian-kanban">Kanban</a></td><td>Créer des boards kanban</td></tr><tr><td><a href="https://github.com/tgrosinger/advanced-tables-obsidian">Avanced-tables</a></td><td>Simplifier l&#x27;édition des tableaux</td></tr><tr><td><a href="https://github.com/lynchjames/note-refactor-obsidian">Note-refactor</a></td><td>Séparer une note en plusieurs notes</td></tr><tr><td><a href="https://github.com/pyrochlore/obsidian-tracker">Tracker</a></td><td>Collecter des données à afficher des graphiques</td></tr><tr><td><a href="https://github.com/st3v3nmw/obsidian-spaced-repetition">Flashcards</a></td><td>Créer des Flashcards</td></tr><tr><td><a href="https://github.com/deathau/sliding-panes-obsidian">Andy Matuschak Mode</a></td><td>Activer le mode d&#x27;affichage Andy Matuschak</td></tr><tr><td><a href="https://github.com/phibr0/obsidian-charts">Obsidian Charts</a></td><td>Créer des graphiques</td></tr><tr><td><a href="https://github.com/blacksmithgu/obsidian-dataview">Dataview</a></td><td>Créer des tableaux basées sur ses notes</td></tr><tr><td><a href="https://github.com/schemar/obsidian-tasks">Tasks</a></td><td>Gérer ses tâches</td></tr><tr><td><a href="https://github.com/hipstersmoothie/obsidian-plugin-toc">Toc</a></td><td>Créer automatiquement un sommaire</td></tr><tr><td><a href="https://github.com/pjeby/tag-wrangler">Tag-wrangler</a></td><td>Améliorer la gestion des tags</td></tr><tr><td><a href="https://github.com/zsviczian/obsidian-excalidraw-plugin">Excalidraw</a></td><td>Dessiner sur Obsidian</td></tr><tr><td><a href="https://github.com/Richardsl/heatmap-calendar-obsidian">Heatmap calendar</a></td><td>Afficher un calendrier comme Github Activity</td></tr><tr><td><a href="https://github.com/nothingislost/obsidian-hover-editor">Hover Editor</a></td><td>Améliorer le mode prévisualisation des liens</td></tr><tr><td><a href="https://publish.obsidian.md/hub/02+-+Community+Expansions/02.05+All+Community+Expansions/CSS+Snippets/Alternate+Checkboxes+(SlRvb)">Alternative Checkboxes</a></td><td>Design pour améliorer les checkboxes</td></tr><tr><td><a href="https://github.com/platers/obsidian-linter/">Obsidian linter</a></td><td>Linter markdown</td></tr><tr><td><a href="https://github.com/Quorafind/Obsidian-Surfing">Surfing</a></td><td>Navigateur web intégré à Obsidian</td></tr></tbody></table>
<h2>Sécurité</h2>
<p>D&#x27;un point de vue sécurité, voilà ce qui est affiché sur la page d&#x27;accueil d&#x27;Obsidian :</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">quote</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>À notre époque où les services de cloud computing peuvent fermer, être rachetés ou changer de politique de confidentialité à tout moment, la dernière chose que vous voulez est un format propriétaire et un verrouillage des données.Avec Obsidian, vos données se trouvent dans un dossier local. Ne laissez plus jamais le travail de votre vie pris en otage dans le cloud.Le format Markdown en texte brut vous donne également une interopérabilité inégalée pour utiliser n&#x27;importe quel type de synchronisation, de chiffrage ou de traitement de données qui fonctionne avec des fichiers en texte brut.</p>
                    </div>
                </blockquote>
<p>Et lorsque vous activez <a href="https://obsidian.md/sync">la fonctionnalité Sync</a>, les données sont chiffrées de bout en bout par défaut.</p>
<p><a href="https://help.obsidian.md/Obsidian+Sync/Security+and+privacy">Plus d&#x27;informations</a></p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtube.com/watch?v=QgbLb6QCK88&amp;list=PL3NaIVgSlAVLHty1-NuvPa9V0b0UwbzBd">Linking Your Thinking - Obsidian for Beginners</a></li>
<li><a href="https://keepproductive.com/obsidian-made-simple">Keep Productive - Obsidian Made Simple</a></li>
<li><a href="https://youtu.be/Zawx-N3-iko">Prendre de bonnes notes dans OBSIDIAN - ZETTELKASTEN dans obsidian</a></li>
<li><a href="https://thesweetsetup.com/obsidian/">Mike Schmitz - The Sweet Setup</a></li>
<li><a href="https://courses.nicolevanderhoeven.com/o4e">Nicole van der Hoeven - Obsidian for Everyone</a></li>
<li>
<a href="/creer-un-plugin-obsidian" title="Créer un plugin Obsidian" class="not-found">Créer un plugin Obsidian</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ma stack technique]]></title>
            <link>https://johackim.com/ma-stack-technique?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ma-stack-technique</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 11 May 2021 13:05:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ma-stack-technique.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ma-stack-technique.jpg"/>
            <content:encoded><![CDATA[<h2>Front-end</h2>
<ul>
<li><a href="https://github.com/facebook/react">React</a></li>
<li><a href="https://nextjs.org/">Next.js</a></li>
<li><a href="https://github.com/tailwindlabs/tailwindcss">Tailwind CSS</a></li>
<li><a href="https://storybook.js.org/">Storybook</a></li>
<li><del><a href="https://github.com/gatsbyjs/gatsby">Gatsby</a></del></li>
<li><del><a href="https://github.com/webpack/webpack">Webpack</a></del></li>
</ul>
<h2>Back-end</h2>
<ul>
<li><a href="https://github.com/vercel/next.js/">Next.js</a></li>
<li><a href="https://github.com/nodejs/node">Node.js</a></li>
<li><a href="https://github.com/sequelize/sequelize">Sequelize</a></li>
<li><a href="https://github.com/expressjs/express">Express.js</a></li>
<li><del><a href="https://github.com/prisma/prisma">Prisma</a></del></li>
<li><del><a href="https://graphql.org/">GraphQL</a></del></li>
<li><del><a href="https://php.net/">PHP</a></del></li>
<li><del><a href="https://symfony.com/">Symfony</a></del></li>
<li><del><a href="https://github.com/zendframework/zendframework">Zend</a></del></li>
</ul>
<h2>Testing</h2>
<ul>
<li><a href="https://github.com/facebook/jest">Jest</a></li>
<li><a href="https://github.com/cypress-io/cypress">Cypress</a></li>
</ul>
<h2>SCM</h2>
<ul>
<li><a href="https://github.com/git/git">Git</a></li>
<li><a href="https://conventionalcommits.org/">Conventional Commits</a></li>
<li><a href="https://semver.org/">Semver</a></li>
<li><a href="https://github.com/typicode/husky">Husky</a></li>
</ul>
<h2>Devops</h2>
<ul>
<li><a href="https://github.com/moby/moby">Docker &amp; Docker Swarm</a></li>
<li><a href="https://github.com/kubernetes/kubernetes">Kubernetes</a></li>
<li><a href="https://github.com/traefik/traefik">Traefik</a></li>
<li><a href="https://github.com/ansible/ansible">Ansible</a></li>
<li><a href="https://github.com/hashicorp/terraform">Terraform</a></li>
<li><a href="https://docs.github.com/actions/learn-github-actions/workflow-syntax-for-github-actions">Github workflow</a></li>
<li><a href="https://github.com/grafana/grafana">Grafana</a></li>
<li><a href="https://github.com/prometheus/prometheus">Prometheus</a></li>
<li><a href="https://github.com/jenkinsci/jenkins">Jenkins</a></li>
<li><a href="https://github.com/rabbitmq/rabbitmq-server">RabbitMQ</a></li>
</ul>
<h2>Système</h2>
<ul>
<li><a href="https://github.com/archlinux/archinstall">Arch Linux</a></li>
<li><a href="https://github.com/ohmyzsh/ohmyzsh">zsh</a></li>
<li><a href="https://github.com/i3/i3">i3</a></li>
<li><a href="https://neovim.io/">neovim</a></li>
<li><a href="https://github.com/exg/rxvt-unicode">rxvt</a></li>
<li><a href="https://github.com/tmux/tmux">tmux</a></li>
<li><a href="https://github.com/johackim/dotfiles">dotfiles</a></li>
<li><a href="https://github.com/polybar/polybar">polybar</a></li>
<li><a href="https://github.com/dylanaraps/pywal">pywal</a></li>
</ul>
<h2>Languages</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/JavaScript">JavaScript</a></li>
<li><a href="https://go.dev/">GoLang</a></li>
<li><a href="https://rust-lang.org/">Rust</a></li>
<li><a href="https://python.org/">Python</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer un compte facebook anonyme]]></title>
            <link>https://johackim.com/compte-facebook-anonyme?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/compte-facebook-anonyme</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 11 May 2021 12:20:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/compte-facebook-anonyme.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/compte-facebook-anonyme.jpg"/>
            <content:encoded><![CDATA[<p>Détenir un compte Facebook anonyme est beaucoup plus complexe qu&#x27;<a href="/comment-detenir-un-compte-google-anonyme" title="avoir un compte Google anonyme">avoir un compte Google anonyme</a>.</p>

<p>Pour créer un compte Facebook anonyme, il faut passer par 6 étapes :</p>
<ol>
<li>Générer une fausse photo de profil</li>
<li>Générer un faux nom</li>
<li>Créer un compte e-mail protonmail</li>
<li>Utiliser une adresse IP résidentielle</li>
<li>Accéder à la version mobile de Facebook</li>
<li>S&#x27;inscrire avec votre fausse identité</li>
</ol>
<h2>1. Générer une fausse photo de profil</h2>
<p>Téléchargez une photo sur <a href="http://thispersondoesnotexist.com/">ce générateur de photo de profil</a>, cropez l&#x27;image et changez sa couleur, son orientation et sa taille.</p>
<h2>2. Générez un faux nom</h2>
<p>Utilisez un <a href="https://behindthename.com/random/random.php?number=2&amp;sets=1&amp;gender=m&amp;surname=&amp;usage_fre=1">générateur de faux nom</a> comme <a href="https://fakenamegenerator.com/">Fakenamegenerator</a>  pour trouver une idée de faux nom à définir sur votre profil Facebook.</p>
<h2>3. Créez-vous un compte protonmail</h2>
<p>Créez une adresse email sur <a href="https://protonmail.com/">Protonmail</a>.</p>
<h2>4. Utilisez une adresse IP résidentielle</h2>
<p>Ne passez pas par un VPN, utilisez de préférence votre adresse IP.</p>
<p>Vous pouvez vérifier la qualité de votre IP sur un service comme <a href="https://scamalytics.com/">scamalytics</a> avant de vous inscrire.</p>
<h2>5. Accédez à la version mobile de Facebook</h2>
<p>Rendez-vous sur <a href="https://m.facebook.com/">la version mobile de Facebook</a>.</p>
<p>De préférence avec le navigateur d&#x27;un smartphone (ex: Opera).</p>
<h2>6. Inscrivez-vous avec votre fausse identité</h2>
<p>Inscrivez-vous avec les informations précédemment générées :</p>
<ul>
<li>Photo</li>
<li>E-mail</li>
<li>Faux nom</li>
</ul>
<p>Si vous ne passez pas minutieusement par toutes ses étapes, Facebook va stopper votre compte et vous demander une carte d&#x27;identité.</p>
<p>C&#x27;est le seul moyen que j&#x27;ai trouvé pour disposer d&#x27;un compte Facebook.</p>
<p>PS: Après inscription, pensez à effectuer des actions qu&#x27;un utilisateur lambda ferait ; liker, commenter, s&#x27;abonner à des pages, ect...</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://onehack.us/t/create-unlimited-facebook-accounts-without-mobile-numbers/54518">Create Unlimited Facebook Accounts Without Mobile Numbers</a></li>
<li><a href="https://accsmarket.com/">https://accsmarket.com/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre L'obstacle est le chemin de Ryan Holiday]]></title>
            <link>https://johackim.com/l&apos;obstacle-est-le-chemin-ryan-holiday?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/l&apos;obstacle-est-le-chemin-ryan-holiday</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 04 May 2021 08:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/l&apos;obstacle-est-le-chemin-ryan-holiday.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/l&apos;obstacle-est-le-chemin-ryan-holiday.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Les obstacles sont inévitables. Plutôt que de les éviter, ne serait-il pas plus judicieux de les transformer en opportunité ?</p>
<p>Dans le livre &quot;The obstacle is the way&quot;, l&#x27;auteur Ryan Holiday s&#x27;inspire de la sagesse stoïcienne et rassemble 3 disciplines pour surmonter les obstacles :</p>
<ul>
<li><strong>La perception</strong> : comment aborder les problèmes</li>
<li><strong>L&#x27;action</strong> : comment transformer les problèmes en opportunité.</li>
<li><strong>La volonté</strong> : comment cultiver son être intérieur pour vaincre les difficultés.</li>
</ul>
<h2>La perception</h2>
<p>La perception est la façon de percevoir et de comprendre ce qui se passe autour de nous.</p>
<p>Nos perceptions peuvent être une force ou une faiblesse. Si nous sommes <strong>émotifs</strong>, <strong>subjectifs</strong> ou si nous manquons de <strong>vision à long terme</strong>, nous ne faisons qu&#x27;amplifier nos problèmes.</p>
<p>Pour transformer l&#x27;adversité en force, la première étape consiste à gérer nos perceptions.</p>
<h2>Développez votre objectivité</h2>
<blockquote>
<p>L&#x27;oeil qui perçoit est faible, l&#x27;oeil qui observe est fort. <em>Miyamoto Musashi</em></p>
</blockquote>
<p>Méfiez-vous des histoires que vous vous racontez à vous-même. Pour être objectif dans votre perception, <strong>vous devez vous retirer de l&#x27;équation</strong>.</p>
<h2>Reconnaissez votre pouvoir</h2>
<p>Dans toute situation, vous avez toujours le pouvoir de choisir vos pensées et vos réponses. Vous n&#x27;êtes jamais impuissant ou sans options.</p>
<h2>Gardez votre sans-froid</h2>
<p>Si vous restez calme, alors rien n&#x27;est réellement &quot;arrivé&quot;, notre perception s&#x27;est assurée que cela n&#x27;avait pas de conséquences.</p>
<h2>Gérez vos émotions</h2>
<p>Les obstacles nous rendent émotifs, mais la seule façon d&#x27;y survivre ou de les vaincre est de garder le contrôle de nos émotions, garder notre sang-froid quoiqu&#x27;il arrive, malgré les variations des événements externes.</p>
<p>Pour les astronautes, la question n&#x27;était pas « Êtes-vous un bon pilote ? » mais « Savez-vous supporter la pression ? Savez-vous juguler l&#x27;envie de paniquer et vous concentrer uniquement sur ce que vous pouvez changer ? Sur la tâche à accomplir ? »</p>
<h2>Modifiez votre point de vue</h2>
<p>Vous êtes libre de changer de perspective, puisque vous êtes le celui qui décide de ce qu&#x27;il doit être. Changez de perspective en <strong>modifiant le contexte</strong> pour avoir une vue d&#x27;ensemble et/ou en <strong>recadrant</strong> la façon dont vous choisissez d&#x27;interpréter un événement.</p>
<p>Comment on appréhende, perçoit et contextualise un obstacle et la signification qu&#x27;on lui donne détermine à quel point il sera fatigant et difficile de le surmonter.</p>
<p><strong>Le corps suit la tête. La perception précède l&#x27;action. L&#x27;action appropriée suit le bon point de vue.</strong></p>
<h2>Est-ce que cela dépend de vous ?</h2>
<blockquote>
<p>Dans la vie, notre première tâche est de diviser et distinguer les choses en deux catégories : je ne peux pas maîtriser les éléments externes, mais je peux décider des choix que je fais vis-à-vis d&#x27;eux. Où vais-je trouver le bien et le mal ? En moi, dans mes choix. Épictète</p>
</blockquote>
<p>Ne gaspillez pas votre énergie à résister ou à vous plaindre de choses que vous ne pouvez pas changer.</p>
<p><strong>Concentrez-vous à 100 % sur les choses que vous pouvez changer</strong>, aussi petites soient-elles.</p>
<p>Mails alors, comment différencier ce qui dépend de nous de ce qui n&#x27;en dépend pas ?</p>
<p>Voilà ce qui dépend de nous :</p>
<ul>
<li>Nos émotions</li>
<li>Nos jugements</li>
<li>Notre créativité</li>
<li>Notre comportement</li>
<li>Notre point de vue</li>
<li>Nos désirs</li>
<li>Nos décisions</li>
<li>Notre détermination</li>
</ul>
<p>Et ce qui ne dépend pas de nous ?</p>
<p>Tout le reste. Le temps qu&#x27;il fait, l&#x27;économie, les circonstances, les émotions et jugements des autres, les tendances, les catastrophes, ect...</p>
<blockquote>
<p>Mon Dieu, donnez-moi la sérénité d&#x27;accepter les choses que je ne peux changer, le courage de changer les choses que je peux, et la sagesse d&#x27;en connaître la différence. Prière de la Sérénité</p>
</blockquote>
<h2>Profitez de l&#x27;instant</h2>
<p>Concentrez-vous sur ce que vous pouvez faire dans le présent, et avancez pas à pas.</p>
<h2>Pensez autrement</h2>
<h2>Trouvez la bonne occasion</h2>
<h2>Préparez-vous à agir</h2>
<h2>L&#x27;action</h2>
<h2>Stay in motion</h2>
<h2>Persist</h2>
<h2>Fail forward</h2>
<h2>Take 1 step at a time</h2>
<h2>Do every job well</h2>
<h2>Do what works</h2>
<h2>Fight smart</h2>
<h2>Know when to wait</h2>
<h2>Use your frustration</h2>
<h2>Use adversity to your advantage</h2>
<h2>La volonté</h2>
<h2>Prepare in advance</h2>
<h2>Plan for your failures</h2>
<h2>Accept your problems</h2>
<h2>Love your obstacles</h2>
<h2>Persevere till the end</h2>
<h2>Focus on helping others</h2>
<h2>Contemplate death</h2>
<h2>Embrace the cycle of life</h2>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Minecraft]]></title>
            <link>https://johackim.com/minecraft?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/minecraft</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 04 May 2021 08:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/minecraft.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/minecraft.jpg"/>
            <content:encoded><![CDATA[<h2>Installer un serveur Minecraft sur Linux avec Docker</h2>
<p>Commencez par installer <a href="https://docker.com">Docker</a> avec la commande suivante :</p>
<pre><code class="language-bash">apt update &amp;&amp; apt install -yq docker.io
</code></pre>
<p>Puis lancez un conteneur Docker Minecraft avec la commande suivante :</p>
<pre><code class="language-bash">docker run -d -e EULA=true -e ONLINE_MODE=true -e MEMORY=4G -p 25565:25565 -v ~/minecraft:/data --name minecraft -v /etc/localtime:/etc/localtime:ro itzg/minecraft-server
</code></pre>
<p>Vous pouvez à présent accéder à votre serveur Minecraft en renseignant l&#x27;adresse IP de votre serveur suivi du port (ex: <code>127.0.0.1:25565</code>).</p>
<p>PS : N&#x27;oubliez pas de configurer votre pare-feu pour permettre l&#x27;accès au port <code>25565</code> si besoin.</p>
<h2>Exécuter des commandes Minecraft</h2>
<p>Pour exécuter une commande Minecraft (ex : <code>/give &lt;player&gt; &lt;item&gt;</code>), appuyez sur la touche <code>t</code> ou <code>/</code> lorsque vous êtes dans une session de jeu Minecraft.</p>
<p>Il existe <a href="https://minecraft.gamepedia.com/Commands#List_and_summary_of_commands">plein de commandes</a> dont :</p>
<ul>
<li><code>/give &lt;player&gt; &lt;item&gt;</code> - Donner un item à un joueur</li>
<li><code>/gamemode &lt;mode&gt;</code> - Changer le mode de jeu</li>
<li><code>/tp &lt;player&gt;</code> - Se téléporter vers un joueur</li>
<li><code>/list</code> - Liste des joueurs connectés</li>
</ul>
<p>Sur un serveur Minecraft, si vous n&#x27;êtes pas administrateur, vous devez exécuter la commande suivante côté serveur :</p>
<pre><code class="language-bash">docker exec -it minecraft rcon-cli
/op &lt;player&gt; # Mettre un joueur en admin
</code></pre>
<h2>Installer Forge</h2>
<p>Pour installer Forge, rendez-vous <a href="https://files.minecraftforge.net/">sur le site officiel</a> et téléchargez la dernière version (ex: 1.20.6).</p>
<p>Une fois le fichier téléchargé, exécutez le en cliquant dessus ou via la ligne de commande suivante :</p>
<pre><code class="language-bash">java -jar forge-1.20.6-50.1.23-installer.jar
</code></pre>
<p>Forge sera à présent disponible dans le launcher officiel de minecraft.</p>
<h2>Installer un mod Minecraft</h2>
<p>Pour installer un mod Minecraft :</p>
<ul>
<li>Trouver un mod sur <a href="https://curseforge.com/minecraft/search?class=mc-mods">le site CurseForge</a></li>
<li>Télécharger un mod (ex: <a href="https://curseforge.com/minecraft/mc-mods/mrcrayfish-furniture-mod">MrCrayfish’s Furniture</a></li>
<li>Placer votre mod (ex: <code>cfm-forge-1.20.1-7.0.0-pre36.jar</code>) dans le dossier correspondant à votre système :
<ul>
<li><code>~/.minecraft/mods/</code> sur Linux</li>
<li><code>C:\Users\&lt;NomUtilisateur&gt;\AppData\Roaming\.minecraft</code> sur Windows</li>
</ul>
</li>
<li>Démarrez Minecraft avec la version Forge (ex: <code>1.20.1-forge-47.2.17</code>) depuis le launcher de Minecraft</li>
</ul>
<h2>Installer un mod Minecraft (côté serveur)</h2>
<p>Si vous avez un serveur Minecraft :</p>
<ul>
<li>Trouver un mod sur <a href="https://curseforge.com/minecraft/search?class=mc-mods">le site CurseForge</a></li>
<li>Télécharger un mod (ex: <a href="https://curseforge.com/minecraft/mc-mods/mrcrayfish-furniture-mod">MrCrayfish’s Furniture</a></li>
<li>Placer le mod téléchargé (ex: <code>cfm-forge-1.20.1-7.0.0-pre36.jar</code>) dans le dossier <code>/data/mods</code></li>
<li>Télécharger et exécuter le fichier <code>forge-1.20.1-47.2.17-installer.jar</code> et placez le fichier dans le dossier <code>/data</code></li>
<li>Démarrez Minecraft avec la version Forge (ex: <code>1.20.1-forge-47.2.17</code>) depuis le launcher de Minecraft</li>
<li>Démarrez votre serveur Minecraft avec les paramètres <code>-e VERSION=1.20.1 -e TYPE=FORGE -e FORGE_INSTALLER=forge-1.20.1-47.2.17-installer.jar</code></li>
</ul>
<h2>Installer un shader</h2>
<p>Pour installer un shader, installer <a href="https://www.irisshaders.dev/">Iris</a> ou <a href="https://optifine.net/home">OptiFine</a> selon le shader que vous souhaitez.</p>
<p>Par exemple, pour le shader <a href="https://modrinth.com/shader/shrimple">Shrimple</a> (qui est compatible avec Iris) :</p>
<ol>
<li>Installez iris</li>
</ol>
<pre><code class="language-bash">java -jar Iris-Installer-3.2.1.jar
</code></pre>
<ol start="2">
<li>
Puis téléchargez le shader shrimple au format zip et placez-le dans le dossier <code>~/.minecraft/shaderpacks/</code>.
</li>
<li>
Démarrez Minecraft avec iris depuis le launcher officiel.
</li>
</ol>
<h2>Installer une map</h2>
<p>Pour installer une map (ex: <a href="https://www.planetminecraft.com/project/ender-dragon-one-cycle-practice/">https://www.planetminecraft.com/project/ender-dragon-one-cycle-practice/</a>).</p>
<p>Télécharger le fichier zip (ex: <code>Ender Dragon Bed Practice.zip</code>) et dézipper le dans le dossier <code>~/.minecraft/saves</code>.</p>
<h2>Faire une sauvegarde de son monde Minecraft</h2>
<p>Pour faire une sauvegarde, c&#x27;est très simple, il suffit de copier-coller le dossier <code>~/minecraft</code> là où vous le souhaitez (ex : Nextcloud, NAS, etc...) 😀</p>
<p>N&#x27;oubliez pas d&#x27;exécuter la commande <code>/save-all flush</code> pour que la sauvegarde s&#x27;effectue correctement avant de copier le dossier.</p>
<h2>Sécuriser un serveur Minecraft</h2>
<p>Pour restreindre l&#x27;accès au serveur à une liste de joueurs autorisés, vous pouvez activer la whitelist avec les commandes suivantes :</p>
<pre><code class="language-txt">/whitelist on
/whitelist add &lt;player&gt;
</code></pre>
<blockquote class="callout attention">
                    
                    <div class="callout-content">
                        <p>Des petits malin peuvent quand même trouver votre pseudo et rentrez sur votre serveur en se faisant passer par vous.</p>
                    </div>
                </blockquote>
<p>Le mieux reste de restreindre l&#x27;accès au serveur à une liste d&#x27;adresses IP autorisées avec un pare-feu (ex: <a href="/iptables" title="iptables">iptables</a>).</p>

<hr/>
<p>Références :</p>
<ul>
<li><a href="https://minecraft.net/fr-fr/download">Installer Minecraft</a></li>
<li><a href="https://minecraft.fandom.com/wiki/Commands">Liste des commandes Minecraft</a></li>
<li><a href="https://minecraftmaps.com/">Site de cartes Minecraft (minecraftmaps.com)</a></li>
<li><a href="https://planetminecraft.com/">Site de cartes Minecraft (planetminecraft.com)</a></li>
<li><a href="https://fmhy.net/gaming-tools#minecraft-tools">https://fmhy.net/gaming-tools#minecraft-tools</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mes 3 étapes pour créer un plan de 90 jours]]></title>
            <link>https://johackim.com/plan-de-90-jours?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/plan-de-90-jours</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 28 Apr 2021 10:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/plan-de-90-jours.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/plan-de-90-jours.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<p>Voici mon processus personnel de création d&#x27;un plan de 90 jours.</p>
<h2>I. Revoir sa vision à 25 ans</h2>
<p>Une vision de 25 ans, ce n&#x27;est pas forcément de savoir aujourd&#x27;hui ce que vous allez faire en 2050.</p>
<p>C&#x27;est avant tout, réfléchir aujourd&#x27;hui à quel sont vos valeurs et qu&#x27;est ce qui est important pour vous dans la vie.</p>
<p>Je créer ma vision en 2 étapes :</p>
<h3>1. Réflexion ouverte</h3>
<p>Je répond à la question suivante de manière très détaillé, sans penser à comment faire et sans nécessairement être réaliste.</p>
<p><strong>Imaginez-vous dans 25 ans, en train de faire le bilan. Qu&#x27;avez vous accompli jusqu&#x27;ici pour que votre vie soit réussi ?</strong>.</p>
<h3>2. Créer un document</h3>
<p>Ensuite je reprend toutes les idées de ma réflexion ouverte pour les basculer dans un document clair avec les points suivant :</p>

























<table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><strong>Role</strong></td><td>Exemple : Écrivain</td></tr><tr><td><strong>Ce que je veux</strong></td><td>Exemple : Écrire un livre, Atteindre 2000€ de revenus mensuels</td></tr><tr><td><strong>Pourquoi je le veux</strong></td><td>Pourquoi vous voulez ça ? Pourquoi cela est-il significatif et excitant pour vous ?</td></tr><tr><td><strong>Ce que je ne veux pas</strong></td><td>Exemple : Travailler 10h / jour, être employé</td></tr></tbody></table>
<h2>II. Définir son étoile du nord</h2>
<p><strong>Votre étoile du nord est simplement l&#x27;objectif principal que vous souhaitez accomplir en priorité dans les 90 prochains jours.</strong></p>
<p>L&#x27;étoile du nord est utile parce qu&#x27;elle fait passer la prise de décision de difficile et ardue à facile et sans effort.</p>
<p>Elle permet également de relier vos actions hebdomadaires et quotidiennes à votre vision à long terme afin de rester motivé, engagé et d&#x27;éviter la procrastination.</p>
<p>Pour définir votre étoile du nord, posez-vous uniquement cette question :</p>
<p>&quot;<strong>Quelle est la chose ESSENTIELLE que je peux faire en 90 jours de telle sorte qu&#x27;en la faisant, tout le reste deviendra plus facile ou inutile pour progresser vers mon objectif de 25 ans ?</strong>&quot;</p>
<h2>III. Définir ses tâches</h2>
<p>Définissez toutes les tâches spécifiques qui ont le plus de chance de vous amener à cet objectif.</p>
<p>Utilisez à chaque fois <strong>un verbe d&#x27;action</strong>, <strong>une quantité</strong> (ou oui/non) et <strong>une date limite</strong>.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/the-one-thing-gary-keller" title="The One Thing - Garry Keller">The One Thing - Garry Keller</a>

</li>
<li>
<a href="/taylor-pearson-the-effective-entrepreneur" title="Taylor Pearson - The Effective Entrepreneur">Taylor Pearson - The Effective Entrepreneur</a>

</li>
<li>
<a href="/marketing-mania-la-methode-des-90-jours" title="Marketing Mania - La méthode des 90 jours" class="not-found">Marketing Mania - La méthode des 90 jours</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment mieux concevoir ses notes avec la synthétisation progressive]]></title>
            <link>https://johackim.com/synthetisation-progressive?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/synthetisation-progressive</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 28 Apr 2021 10:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/synthetisation-progressive.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/synthetisation-progressive.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/dyQtFqv.jpeg"/><p>La synthétisation progressive (ou <a href="https://fortelabs.co/blog/progressive-summarization-a-practical-technique-for-designing-discoverable-notes/">Progressive Summarization</a> en anglais) est une technique pour mieux concevoir ses notes afin de les rendre plus accessibles et compréhensibles.</p>
<p>Inventé en 2017 par Tiago Forte, le processus ressemble à quelque chose comme ça :</p>
<ul>
<li>Couche 1 : Notes</li>
<li>Couche 2 : <strong>Passages en gras</strong></li>
<li>
Couche 3 : <mark>Passages soulignés</mark>
</li>
<li>Couche 4 : Mini-sommaire</li>
<li>Couche 5 : Remix</li>
</ul>
<p>Chaque note est traitée par plusieurs passages si nécessaire.</p>
<p><img src="https://i.imgur.com/dyQtFqv.jpeg" alt="Progressive Summarization"/></p>
<h2>Compression vs. contexte</h2>
<p>Pour qu&#x27;une note puisse être <strong>accessible</strong>, il faut qu&#x27;elle soit petite, simple et facile à digérer. Pour ce faire, nous utilisons la <strong>compression</strong> : nous créons des résumés très condensés, sans le superflu.</p>
<p>Mais nous voulons aussi que nos notes soient <strong>compréhensibles</strong>. Cela implique d&#x27;inclure tout le <strong>contexte</strong> : les détails, les exemples et les sources citées pour s&#x27;assurer que rien ne passe à travers les mailles du filet.</p>
<p>Si l&#x27;on compresse trop une note, c&#x27;est-à-dire si l&#x27;on fait un résumé trop bref, on perd le contexte et la note perd tout son sens.</p>
<p>Et si on va trop loin dans la direction opposée. Si nous rendons une chose totalement compréhensible, en d&#x27;autres termes, si nous incluons chaque petit détail et chaque élément de contexte, elle perd sa capacité d&#x27;<strong>accessibilité</strong>.</p>
<h2>Couche 1 : Notes</h2>
<p>La couche 1 est le contenu à apporter initialement dans un programme de prise de notes (Notion, Obsidian, Evernote...). Il n&#x27;y a pas de critères explicites sur ce qui doit être conservé. Capturez simplement tout ce qui vous semble perspicace, intéressant ou utile.</p>
<h2>Couche 2 : Passages en gras</h2>
<p>La couche 2 est le premier round d&#x27;une véritable synthétisation, dans lequel on met en gras que les meilleures parties des passages que l&#x27;on a importés. Là encore, il n&#x27;y a pas de critères explicites. Recherchez les mots clés, les expressions clés et les phrases clés qui, selon vous, représentent le noyau ou l&#x27;essence de l&#x27;idée discutée.</p>
<h2>Couche 3 : Passages soulignés</h2>
<p>Pour la 3ᵉ couche, on passe au surlignage les meilleurs passages en gras, afin de pouvoir distinguer le petit nombre de passages surlignés parmi tous les passages en gras. Cette fois, on recherche le &quot;meilleur du meilleur&quot;, en ne surlignant que ce qui est vraiment unique ou précieux.</p>
<h2>Couche 4 : Mini-sommaire</h2>
<p>Pour la couche 4, on résume encore, mais on va au-delà de la mise en évidence des mots, pour enregistrer les siens. On résume les couches 2 et 3 dans un mini-sommaire informel en haut de la note, en rappelant les points clés avec nos propres mots.</p>
<p>Notez que toutes les couches précédentes sont conservées dans leur contexte, ce qui vous donne la liberté de laisser des choses de côté sans craindre de les perdre.</p>
<h2>Couche 5 : Remix</h2>
<p>Et enfin, on remixe le tout. On y ajoute notre propre personnalité et notre créativité en transformant nos notes en autre chose (sketch notes, un épisode de podcast, un article de blog, un tweet, une vidéo YouTube, etc...).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://fortelabs.co/blog/progressive-summarization-a-practical-technique-for-designing-discoverable-notes/">Progressive Summarization - Forte Labs</a></li>
<li><a href="https://jamesstuber.com/progressive-summarization-a-waste/">Is Progressive Summarization a Waste of Time?</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Taylor Pearson - The Effective Entrepreneur]]></title>
            <link>https://johackim.com/taylor-pearson-the-effective-entrepreneur?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/taylor-pearson-the-effective-entrepreneur</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 28 Apr 2021 10:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/taylor-pearson-the-effective-entrepreneur.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/taylor-pearson-the-effective-entrepreneur.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/N9BAE3u.png"/><blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu en cours de création</p>
                    </div>
                </blockquote>
<h2>Core Principles</h2>
<p><strong>Effectiveness versus Efficiency</strong> - You can be as productive as you want, but if you are focusing on the wrong things, you won’t end up going where you want to be.</p>
<p><strong>Use courage and wisdom, not labor</strong> - lean into the emotional work, run towards the fear, and identify and execute on the thing that you are avoiding doing.</p>
<p><strong>Systems always win</strong> - so how can we set up systems to manage our known psychological biases?</p>
<p><strong>Do more of less</strong> - how do we avoid task switching costs and focus on what&#x27;s truly important?</p>
<p><strong>Treat it like an experiment</strong> - failure isn’t fatal but serves as feedback to make better future experiments. It’snot something to be afraid of, to worry about or to avoid.</p>
<p><strong>Vertical coherence</strong> - we&#x27;re going to be like the geneticists who have this vertical coherence in their work andthroughout their lives.</p>
<p><strong>Fixing time, flexing scope</strong> - learning how to set deadlines that again manage our psychological biases andinternal clocks.</p>
<h2>Module 1: Your 25-Year Vision and Quarterly Plan</h2>
<h3>1.0 - Introduction: Why Career Planning is Career Limiting</h3>
<p>The purpose of the <em>Long-Range and Quarterly Planning Module</em> is to help you work towards what we refer to as <strong>Product / Market / Founder Fit.</strong></p>
<p><img src="https://i.imgur.com/N9BAE3u.png" alt=""/></p>
<p>This means finding the overlap between what you are good at (<em>founder</em>), what you like to do on a day-to-day basis (<em>market</em>), and what the market wants (<em>product</em>).</p>
<p>After 90 days, you are free to change your mind or your direction. Ninety Days is right at the intersection of overestimating and underestimating. We often overestimate how much we can get done in a day, but underestimate how much we can get done in a year.</p>
<h3>1.1 - Creating Your 25-Year Vision: Getting Clarity</h3>
<p><strong>Aspirational Vision Template</strong></p>
<p>“If you were reading this twenty five years from today, and reflecting on the events of those twenty five years, what has to have happened in your [INSERT AREA] life for you to feel successful?”</p>
<p>Remember: This is goal setting. Don’t start identifying problems, just set goals.</p>
<p>[Identify Problems] What challenges need to be overcome? (Be very precise)</p>
<p>[Diagnose Problems]For each one, diagnose it. What are the root causes? Use the 5 Whys?</p>
<p>What opportunities need to be captured?</p>
<p>What strengths need to be leveraged?</p>
<h3>1.2 - The Quarterly Review: Turning Mistakes into Fuel</h3>
<h3>1.3 - 90-Day Planning: Choosing your North Star</h3>
<h3>1.4 - Conclusion: Dealing with Imposter Syndrome and the Answer to &quot;What if it Doesn&#x27;t Work?&quot;</h3>
<h2>Module 2: The Weekly Planning &amp; Review</h2>
<h3>2.0 - Introduction: How to Make Decisions Easy, Fast and Fun</h3>
<h3>2.1 - The Weekly Reflection: Regaining Clarity and the Primacy of Priming</h3>
<h3>2.2 - The Weekly Review: Why Airplanes Never Land at The Wrong Place (and You Shouldn&#x27;t Either)</h3>
<h3>2.3 - Weekly Planning: The Lead Domino Theory</h3>
<h2>Module 3: Daily Structure</h2>
<h3>3.1 - Your Daily Ritual: How to Design Your Ideal Day</h3>
<h3>3.2 - Daily Review: Five Questions That Will Keep You Happy and Productive</h3>
<h2>40 years of research</h2>
<ul>
<li>Getting Things Done - David Allen</li>
<li>The Power of Full Engagement by Tony Schwartz</li>
<li>Work the System - Sam Carpenter</li>
<li>The Emyth Revisited - Michael Gerber</li>
<li>Think and Grow Rich - Napoleon Hill</li>
<li>Daily Rituals - Mason Currey</li>
<li>The Power of Habit - Charles Duhigg</li>
<li>The One Thing - Garry Keller</li>
<li>Productivity Habits of Super Achievers - Darren Hardy</li>
<li>Essentialism - Greg McKeown</li>
<li>Start with Why - Simon Sinek</li>
<li>Thinking Fast and Slow - Daniel Kahneman</li>
<li>The Twelve Week Year - Brian P. Moran</li>
<li>The Four Hour Work Week - Tim Ferriss</li>
<li>Maker&#x27;s Schedule, Manager&#x27;s Schedule - Paul Graham</li>
<li>Principles - Day Ralio</li>
<li>Getting Results the Agile Way - J.D. Meier</li>
<li>THe Happiness Hypothethis - Jonathan Haidt</li>
<li>Startup School - Seth Godin</li>
<li>Linchpin - Seth Godin</li>
<li>The War of Art - Steven Pressfield</li>
<li>Deep Work - Cal Newport</li>
<li>Good to Great - Jim Collins</li>
<li>The Rockefeller Habits - Verne Harnish</li>
<li>Titan - Ron Chernow</li>
<li>House of Morgan - Ron Chernow</li>
<li>Letters to Sharholders - Warren Buffet</li>
<li>Antifragile - Nassim Taleb</li>
<li>The Black Swan - Nassim Taleb</li>
<li>Fooled by Randomness - Nassim Taleb</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://taylorpearson.me/masterclass/">https://taylorpearson.me/masterclass/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Résumé du livre The One Thing de Garry Keller]]></title>
            <link>https://johackim.com/the-one-thing-gary-keller?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/the-one-thing-gary-keller</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 28 Apr 2021 10:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/the-one-thing-gary-keller.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/the-one-thing-gary-keller.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/ih6FgiE.png"/><link rel="preload" as="image" href="https://i.imgur.com/I5QoWKE.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/Qe8RmPD.png"/><p><a href="https://placedeslibraires.fr/livre/9782379350474-the-one-thing-gary-keller/">The One Thing</a> est un livre de <a href="/productivite" title="Productivité">Productivité</a> écrit par Garry Keller en 2013.</p>

<p>L&#x27;idée principale du livre est de se concentrer sur la question suivante :</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">quote</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« ==Quelle est l&#x27;UNIQUE chose que vous pouvez faire, de telle sorte qu&#x27;en la faisant, tout le reste deviendra plus facile ou inutile ?== »</p>
                    </div>
                </blockquote>
<p>Ce qui reprend un peu l&#x27;idée de ce proverbe :</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Proverbe Russe</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>« Quand on court après deux lapin à la fois, on n&#x27;en attrape aucun. »</p>
                    </div>
                </blockquote>
<h2>L&#x27;effet domino</h2>
<p>Un domino est capable de renverser un autre domino 50% plus grand.</p>
<p>Si vous commencez avec un domino de 5 centimètres et que vous augmentez la taille de chaque domino de 50% =&gt; Le 57ème domino couvrirait presque la distance entre la terre et la lune.</p>
<p><img src="https://i.imgur.com/ih6FgiE.png" alt="Dominos - Une progression géométrique"/></p>
<p>Il existe un domino pour chaque domaine de notre vie (<strong>santé, sport, travail, amour, philosophie, relations, finances, ect...</strong>).</p>
<p><mark><b>Lorsque vous vous fixez un objectif, trouvez et focalisez-vous sur le premier domino. Celui qui fera tomber tous les autres. Concentrez-vous dessus jusqu&#x27;à le renversé.</b></mark></p>
<p>Chaque domino renversé rendra le suivant plus simple à faire tomber, à condition qu&#x27;ils soient correctement alignés.</p>
<p><strong>Réalignez de temps en temps vos dominos en phase avec celui que vous voulez atteindre.</strong></p>
<p>Et n&#x27;oubliez pas qu&#x27;il est physiquement impossible de faire tomber le dernier domino sans faire tomber les précédents.</p>
<p>Vous ne pouvez pas griller les étapes.</p>
<h2>La question essentielle</h2>
<p>Pourquoi se concentrer sur une question alors que c’est la réponse que l’on cherche ?</p>
<p>Les réponses naissent des questions, et la qualité de toute réponse dépend directement de la justesse de la question.</p>
<p><strong>Posez la mauvaise question, vous obtiendrez la mauvaise réponse</strong>.</p>
<p>Posez la question la plus puissante possible, et la réponse peut changer votre vie.</p>
<p>La question essentielle rassemble toutes les questions possibles en une seule :</p>
<p><mark><b>Quelle est la chose ESSENTIELLE que je peux faire de telle sorte qu’en la faisant tout le reste deviendra plus simple voire inutile ?</b></mark>.</p>
<p>Utilisez-la dès le réveil et tout au long de la journée. Elle vous recentre sur votre tâche la plus importante, chaque fois que vous en avez besoin. Elle vous aide aussi à trouver « <strong>l’action-levier</strong> », <strong>le premier domino</strong>.</p>
<p>Quelle est la chose ESSENTIELLE que je peux faire maintenant pour <code>[ce que vous voulez]</code>, de telle sorte qu’en la faisant tout le reste deviendra plus simple voire inutile ?</p>
<p><mark><b>Tant que je n’ai pas fait l’ESSENTIEL, tout le reste est une distraction.</b></mark></p>
<h2>Pensez grand et spécifique</h2>
<p><img src="https://i.imgur.com/I5QoWKE.jpg" alt="Matrice de la Grande Question"/></p>
<p>Lorsque vous posez la question ESSENTIELLE, pensez grand et spécifique (un objectif important avec des chiffres concrets et un délai) pour indiquer où vous voulez aller.</p>
<p>Exemple :</p>
<ul>
<li><strong>Petit &amp; Spécifique</strong> : « Que puis-je faire pour augmenter les ventes de 5% cette année ? »</li>
<li><strong>Petit &amp; Large</strong> : « Que puis-je faire pour augmenter les ventes ? »</li>
<li><strong>Grand &amp; Large</strong> : « Que puis-je faire pour doubler les ventes ? »</li>
<li><strong>Grand &amp; Spécifique</strong> : « Que puis-je faire pour doubler les ventes en six mois ? »</li>
</ul>
<h2>Construire un bunker</h2>
<p>Trouvez un endroit où travailler, loin des interruptions et des distractions. Si vous avez un bureau, accrochez une pancarte « Ne pas déranger ». Si les murs sont en verre, installez des stores. Si vous travaillez en open space, demandez l’autorisation d’ouvrir un paravent. Si nécessaire, allez ailleurs.</p>
<p>L’immortel Ernest Hemingway respectait un emploi du temps strict pour son écriture, qui commençait chaque matin à 7 heures dans sa chambre.</p>
<p>L&#x27;auteur Dan Heath « acheta un vieil ordinateur portable, effaça tous ses navigateurs, et pour faire bonne mesure, effaça ses réseaux sans fil », et il apportait cette « machine antédiluvienne » dans un café pour éviter les distractions.</p>
<p>Entre ces deux extrêmes, vous trouverez certainement une pièce vide avec une porte qui ferme.</p>
<h2>Bloquer du temps pour l’essentiel</h2>
<p>Dans le livre &quot;A Geography of Time&quot; de Robert Levine, l&#x27;auteur fait remarquer que la plupart des gens travaillent à l’heure de l’horloge (« Il est cinq heures, à demain ! ») tandis que d’autres travaillent à l’heure de la tâche (« J’aurai fini de travailler quand mon travail sera fini »).</p>
<p>Réfléchissez. Un fermier ne pointe pas à heures fixes. Il rentre chez lui quand il a fini de traire les vaches. Tout métier axé sur les résultats fonctionne de la même façon.</p>
<p><strong>Les gens les plus productifs sont à l’heure de leur tâche. Ils ne s’arrêtent pas avant d’avoir accompli l’ESSENTIEL.</strong></p>
<p><strong>Bloquez quatre heures par jour.</strong> C’est un minimum, si vous pouvez y consacrer plus de temps, faites-le.</p>
<h2>Découper son objectif</h2>
<p>Le secret pour avancer, c’est de se mettre en route. Le secret pour se mettre en route, c’est de <mark>fractionner les tâches écrasantes</mark> devant nous pour les transformer en petites tâches abordables, puis de s’atteler à la première.</p>
<h2>Soyez responsable de vos résultats</h2>
<p>Accepter les conséquences de ses actions, se considérer comme seul responsable de ses résultats, est la méthode la plus efficace pour se rapprocher du succès.</p>
<p>Face aux aléas de la vie, vous avez le choix entre devenir l&#x27;acteur de votre vie ou sa victime.</p>
<h2>Écrivez et partagez vos objectifs</h2>
<p>En 2008, le Dr. Gail Matthews, de l’université dominicaine de Californie, a recruté 267 participants, venus d’un large éventail de professions (avocats, comptables, bénévoles, commerciaux, etc.) et de nationalités. Ceux qui écrivaient leurs objectifs avaient 39,5% de chances en plus de les accomplir. <mark><b>Écrire ses objectifs</b></mark> et sa priorité essentielle est la dernière étape pour vivre sa priorité.</p>
<p>Les individus qui écrivent leurs objectifs et soumettent des rapports ou des mémos d’évolution avaient 76,7% de chances supplémentaires d’atteindre leur objectif. Écrire vos objectifs, c’est efficace. <mark>Partager vos progrès</mark> avec quelqu’un de manière régulière, ne serait-ce qu’un ami, peut vous rendre deux fois plus efficace.</p>
<p>Références :</p>
<ul>
<li><a href="https://dominican.edu/sites/default/files/2020-02/gailmatthews-harvard-goals-researchsummary.pdf">https://dominican.edu/sites/default/files/2020-02/gailmatthews-harvard-goals-researchsummary.pdf</a></li>
</ul>
<h2>L’objectif futur est lié à la priorité présente</h2>
<p>Comme <strong>une poupée russe</strong>, votre ESSENTIEL « immédiat » se trouve à l&#x27;intérieur de votre ESSENTIEL de la semaine, qui se trouve à l&#x27;intérieur de votre ESSENTIEL du mois....</p>
<p><img src="https://i.imgur.com/Qe8RmPD.png" alt=""/></p>
<p>C&#x27;est ainsi qu&#x27;une petite chose peut mener à une grande chose.</p>
<p>Choisissez une direction, commencez à la suivre pour voir si elle vous convient. La clarté de vision vient avec le temps, et si ce n&#x27;est pas la bonne voie, vous pourrez toujours changer d&#x27;avis. À vous de construire votre vie.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment mieux organiser ses notes avec la méthode Zettelkasten]]></title>
            <description><![CDATA[Le livre How to Take Smart Notes de Sönke Ahrens est une introduction à la méthode Zettelkasten pour organiser ses notes de manière efficace]]></description>
            <link>https://johackim.com/how-to-take-smart-notes-sonke-ahrens?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/how-to-take-smart-notes-sonke-ahrens</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 28 Apr 2021 10:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/how-to-take-smart-notes-sonke-ahrens.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/how-to-take-smart-notes-sonke-ahrens.jpg"/>
            <content:encoded><![CDATA[<p>Le livre <strong><a href="https://amzn.to/3mXQP36">How to Take Smart Notes</a></strong> de Sönke Ahrens est une introduction à la <strong>méthode de prise de note</strong> allemande <strong>Zettelkasten</strong> (aussi appelé la méthode <strong>slip-box</strong> en anglais ou <strong>boite à chaussure</strong> en français) développée par Niklas Luhmann.</p>
<p>Il s&#x27;agit d&#x27;<strong>un moyen efficace d&#x27;organiser ses notes</strong>. Cette méthode encourage à <strong>créer des liens entre nos notes individuelles</strong>, ce qui soutient la pensée créative et aide à faire avancer nos idées.</p>
<blockquote>
<p>« Notes aren’t a record of my thinking process. They are my thinking process. » Richard Feynman<sup><a href="#user-content-fn-1" id="user-content-fnref-1" data-footnote-ref="" aria-describedby="footnote-label">1</a></sup></p>
</blockquote>
<p>Luhmann avait deux boîtes en bois : <strong>une boîte bibliographique</strong>, qui contenait les références et de brèves notes sur le contenu de la littérature qu&#x27;il lisait, et <strong>une boîte principale</strong> qui contenait les idées et les théories qu&#x27;il recueillait en réponse à ce qu&#x27;il lisait. Les notes étaient écrites sur des fiches et conservées dans des boîtes en bois.</p>
<p>Luhmann a trois types de notes qui entrent dans ses boîtes : les <strong>notes temporaires</strong>, les <strong>notes littéraires</strong> et les <strong>notes permanentes</strong>.</p>
<h2>Notes temporaires</h2>
<p><strong>Ayez toujours quelque chose à portée de main avec lequel écrire pour capturer chaque idée qui vous vient à l&#x27;esprit</strong>. Ne vous préoccupez pas trop de la manière dont vous écrivez ou du support sur lequel vous écrivez.</p>
<p>Il s&#x27;agit de notes éphémères, de simples rappels de ce que vous avez en tête. Elles ne doivent pas vous distraire. <strong>Mettez-les dans un seul endroit, que vous définissez comme votre boîte de réception, et traitez-les plus tard</strong>.</p>
<p>Si vos pensées sont déjà triées et que vous avez le temps, vous pouvez sauter cette étape et écrire directement votre idée sous forme de note permanente.</p>
<h2>Notes littéraires</h2>
<p><strong>Une note littéraire est essentiellement une note que vous avez créée à partir d&#x27;un contenu que vous avez consommé (livres, articles, vidéos, films, podcasts, formations, discussions, etc...).</strong></p>
<p>Notez ce que vous ne voulez pas oublier ou ce que vous pensez pouvoir utiliser dans votre propre réflexion ou vos écrits.</p>
<p>Soyez bref, soyez extrêmement sélectif, ne copiez pas de texte et utilisez vos propres mots.</p>
<h2>Notes permanentes</h2>
<p>Parcourez vos notes temporaires et notes littéraires et réfléchissez à la manière dont elles se rapportent à ce qui est pertinent pour vos propres recherches, réflexions ou intérêts.</p>
<p>L&#x27;idée n&#x27;est pas de collecter, mais de développer des idées, des arguments et des discussions.</p>
<p><strong>Rédigez une note pour chaque idée et écrivez comme si vous écriviez pour quelqu&#x27;un d&#x27;autre : utilisez des phrases complètes, indiquez vos sources, faites des références et essayez d&#x27;être aussi précis, clair et bref que possible.</strong></p>
<p>Jetez les notes éphémères et placez les notes littéraires dans votre <strong>système de référence</strong>. Vous pouvez les oublier maintenant. Tout ce qui compte, c&#x27;est ce qui se trouve dans la <strong>boite à chaussure</strong> des notes permanentes.</p>
<p><strong>Ajoutez vos nouvelles notes permanentes dans votre boîte à chaussure</strong>. Placez chaque note derrière une note associée (si elle ne se rapporte à aucune note existante, ajoutez-la à la toute fin).</p>
<p>Optionnellement, vous pouvez également :</p>
<ul>
<li>Ajouter des liens vers (et depuis) les notes associées.</li>
<li>Les ajouter à un «<strong>index</strong>» - un type spécial de note qui sert de «table des matières» et de point d&#x27;entrée pour un sujet important, y compris une collection triée de liens sur le sujet.</li>
</ul>
<h2>Outils à utiliser avec la méthode Zettelkasten</h2>
<p>Concernant les outils à utiliser, <strong>un stylo</strong>, <strong>des feuilles</strong> et <strong>des boites à chaussure</strong> peuvent suffire.</p>
<p>À titre personnel, j&#x27;utilise <a href="/obsidian" title="Obsidian">Obsidian</a> en tant qu&#x27;<strong>éditeur</strong> et <a href="https://calibre-ebook.com/">Calibre</a> en tant que <strong>système de gestion des références</strong>.</p>

<p>Mais il existe plein d&#x27;autres logiciels :</p>
<ul>
<li><a href="https://zotero.org/">Zotero</a></li>
<li><a href="https://github.com/Zettelkasten-Team/Zettelkasten">Zettelkasten</a></li>
<li><a href="https://evernote.com/">Evernote</a></li>
<li><a href="https://bear.app/">Bear Notes</a></li>
<li><a href="https://notion.so/">Notion</a></li>
<li><a href="https://roamresearch.com/">Roam Research</a></li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://vimeo.com/275530205">Sonke Ahrens - How to Take Smart Notes NEWCRAFTS Conferences</a></li>
<li><a href="https://nateliason.com/blog/smart-notes">How to Take Smart Notes: A Step-by-Step Guide</a></li>
<li><a href="https://fortelabs.co/blog/how-to-take-smart-notes/">10 Principles to Revolutionize Your Note-Taking and Writing</a></li>
<li><a href="https://aliabdaal.com/book-notes/how-to-take-smart-notes/">How to Take Smart Notes - Book Summary and Notes</a></li>
<li><a href="https://jeancharleskurdali.com/comment-jai-construit-mon-second-cerveau-en-moins-dun-mois-zettelkasten/">Comment j’ai construit mon second cerveau en quelques semaines avec la méthode Zettelkasten</a></li>
<li><a href="https://school.atomicthinking.fr/cours">La méthode Atomic Thinking</a></li>
<li><a href="https://eliottmeunier.com/how-to-take-smart-notes-sonke-ahrens/">Résumé du livre How to Take Smart Notes</a></li>
<li><a href="https://youtube.com/watch?v=5Cqp9aUqq9s">Prendre et organiser ses NOTES dans un CARNET - Zettelkasten</a></li>
<li><a href="https://youtube.com/watch?v=rOSZOCoqOo8">Zettelkasten Note-Taking Method: Simply Explained</a></li>
<li><a href="https://skillshare.com/classes/Getting-Started-with-Zettelkasten/191557747">Curtis McHale - Getting Started with Zettelkasten</a></li>
<li><a href="https://skillshare.com/classes/Zettelkasten-Building-Lifelong-Knowledge/1703791683">Anthony Draper - Zettelkasten: Building Lifelong Knowledge</a></li>
<li><a href="https://everlaab.com/methode-zettelkasten-comment-prendre-des-notes-utiles/">Méthode Zettelkasten : Comment prendre des notes utiles ?</a></li>
<li><a href="https://niklas-luhmann-archiv.de/bestand/zettelkasten/zettel/ZK_2_SW1_001_V">https://niklas-luhmann-archiv.de/bestand/zettelkasten/zettel/ZK_2_SW1_001_V</a></li>
<li><a href="https://zettelkasten.de/introduction/">https://zettelkasten.de/introduction/</a></li>
<li><a href="https://i.imgur.com/xAkNYhe.png">https://i.imgur.com/xAkNYhe.png</a></li>
<li><a href="https://writing.bobdoto.computer/zettelkasten/">https://writing.bobdoto.computer/zettelkasten/</a></li>
</ul>
<section data-footnotes="" class="footnotes"><h2 class="sr-only" id="footnote-label">Footnotes</h2>
<ol>
<li id="user-content-fn-1">
Genius: The Life And Science of Richard Feynman (page 409). <a href="#user-content-fnref-1" data-footnote-backref="" aria-label="Back to reference 1" class="data-footnote-backref">↩</a>
</li>
</ol>
</section>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[C'est quoi un hacker ?]]></title>
            <link>https://johackim.com/hacker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/hacker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 16 Apr 2021 10:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/hacker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/hacker.jpg"/>
            <content:encoded><![CDATA[<p>Un hacker est une personne curieuse qui créer, modifie et améliore des programmes informatiques pour résoudre des problèmes qui leur tiennent à coeur.</p>
<p>Ils aiment comprendre le fonctionnement des choses et sont guidés par leur curiosité et leur créativité.</p>
<p>En 4 mots, ils aiment comprendre, bidouiller, détourner et partager.</p>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">ChatGPT</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Personne doué pour la programmation et qui aime résoudre des problèmes de manière créative avec la technologie.</p>
                    </div>
                </blockquote>
<hr/>
<p>Références :</p>
<ul>
<li><a href="http://catb.org/~esr/faqs/hacker-howto.html">The Jargon File - Eric S. Raymond</a></li>
<li><a href="https://amzn.to/3fseYNR">The Cathedral &amp; the Bazaar - Eric S. Raymond</a></li>
<li><a href="https://amzn.to/3srEPZC">L&#x27;éthique des hackers - Steven Levy</a></li>
<li><a href="https://amzn.to/2PuDEtO">L&#x27;Ethique Hacker - Pekka Himanen</a></li>
<li><a href="https://amzn.to/3d9Ok9l">Hackers &amp; Painters - Paul Graham</a></li>
<li><a href="https://partipirate.org/le-code-des-pirates/">Le code des pirates</a></li>
<li><a href="https://framablog.org/2013/01/15/manifeste-du-hacker-aaron-swartz/">Le manifeste du hacker</a></li>
<li><a href="https://amzn.to/3tUrEB0">The Motivation Hacker - Nick Winter</a></li>
<li><a href="https://amzn.to/2PuHYcw">La face cachée d&#x27;internet - Rayna Stamboliyska</a></li>
<li><a href="https://amzn.to/3sq3HRw">The Innovators - Walter Isaacson</a></li>
<li><a href="https://github.com/s0md3v/be-a-hacker">https://github.com/s0md3v/be-a-hacker</a></li>
<li><a href="http://paulgraham.com/gh.html">http://paulgraham.com/gh.html</a></li>
<li><a href="https://danielmiessler.com/study/programmer_hacker_developer/">https://danielmiessler.com/study/programmer_hacker_developer/</a></li>
<li><a href="https://twitter.com/samykamkar">https://twitter.com/samykamkar</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mon second cerveau]]></title>
            <description><![CDATA[Découvrez comment j'ai créé un "second cerveau" pour expérimenter, recenser et partager toutes mes idées.]]></description>
            <link>https://johackim.com/mon-second-cerveau?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mon-second-cerveau</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 16 Apr 2021 10:50:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mon-second-cerveau.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mon-second-cerveau.jpg"/>
            <content:encoded><![CDATA[<p>Inspiré par le concept des <a href="/digital-garden" title="digital gardens">digital gardens</a> 🌱, <a href="https://buildingasecondbrain.com/">Building a Second Brain</a> 🧠 et <a href="https://linkingyourthinking.com/">Linking Your Thinking</a> 🗄️, je me suis créé un second cerveau ; un <strong>espace d&#x27;expérimentation</strong> où je recense et partage toutes mes <strong>idées</strong>, <strong>découvertes</strong> et <strong>notes personnelles</strong>.</p>

<p>Une sorte de <strong>laboratoire</strong> où j&#x27;expérimente tout un tas de sujets.</p>
<p>Un <strong>second cerveau</strong> où je stocke tous mes <strong>modèles mentaux</strong>.</p>
<p>C&#x27;est ici que je partage mes <strong>méthodes de réflexions</strong>.</p>
<p>Une sorte de <strong>Wikipédia personnel</strong>.</p>
<p>PS: Il ne s&#x27;agit pas d&#x27;un blog traditionnel où je publie de simples articles de manière chronologiques_.</p>
<h2>Visualisation de mon second cerveau</h2>

<link href="data:text/css;base64,I21lcm1haWQtc3ZnLTd7Zm9udC1mYW1pbHk6InRyZWJ1Y2hldCBtcyIsdmVyZGFuYSxhcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxNnB4O2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTcgLmVycm9yLWljb257ZmlsbDojNTUyMjIyO30jbWVybWFpZC1zdmctNyAuZXJyb3ItdGV4dHtmaWxsOiM1NTIyMjI7c3Ryb2tlOiM1NTIyMjI7fSNtZXJtYWlkLXN2Zy03IC5lZGdlLXRoaWNrbmVzcy1ub3JtYWx7c3Ryb2tlLXdpZHRoOjJweDt9I21lcm1haWQtc3ZnLTcgLmVkZ2UtdGhpY2tuZXNzLXRoaWNre3N0cm9rZS13aWR0aDozLjVweDt9I21lcm1haWQtc3ZnLTcgLmVkZ2UtcGF0dGVybi1zb2xpZHtzdHJva2UtZGFzaGFycmF5OjA7fSNtZXJtYWlkLXN2Zy03IC5lZGdlLXBhdHRlcm4tZGFzaGVke3N0cm9rZS1kYXNoYXJyYXk6Mzt9I21lcm1haWQtc3ZnLTcgLmVkZ2UtcGF0dGVybi1kb3R0ZWR7c3Ryb2tlLWRhc2hhcnJheToyO30jbWVybWFpZC1zdmctNyAubWFya2Vye2ZpbGw6IzMzMzMzMztzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTcgLm1hcmtlci5jcm9zc3tzdHJva2U6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTcgc3Zne2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTZweDt9I21lcm1haWQtc3ZnLTcgLmxhYmVse2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNyAuY2x1c3Rlci1sYWJlbCB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTcgLmNsdXN0ZXItbGFiZWwgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNyAubGFiZWwgdGV4dCwjbWVybWFpZC1zdmctNyBzcGFue2ZpbGw6IzMzMztjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNyAubm9kZSByZWN0LCNtZXJtYWlkLXN2Zy03IC5ub2RlIGNpcmNsZSwjbWVybWFpZC1zdmctNyAubm9kZSBlbGxpcHNlLCNtZXJtYWlkLXN2Zy03IC5ub2RlIHBvbHlnb24sI21lcm1haWQtc3ZnLTcgLm5vZGUgcGF0aHtmaWxsOiNFQ0VDRkY7c3Ryb2tlOiM5MzcwREI7c3Ryb2tlLXdpZHRoOjFweDt9I21lcm1haWQtc3ZnLTcgLm5vZGUgLmxhYmVse3RleHQtYWxpZ246Y2VudGVyO30jbWVybWFpZC1zdmctNyAubm9kZS5jbGlja2FibGV7Y3Vyc29yOnBvaW50ZXI7fSNtZXJtYWlkLXN2Zy03IC5hcnJvd2hlYWRQYXRoe2ZpbGw6IzMzMzMzMzt9I21lcm1haWQtc3ZnLTcgLmVkZ2VQYXRoIC5wYXRoe3N0cm9rZTojMzMzMzMzO3N0cm9rZS13aWR0aDoyLjBweDt9I21lcm1haWQtc3ZnLTcgLmZsb3djaGFydC1saW5re3N0cm9rZTojMzMzMzMzO2ZpbGw6bm9uZTt9I21lcm1haWQtc3ZnLTcgLmVkZ2VMYWJlbHtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7dGV4dC1hbGlnbjpjZW50ZXI7fSNtZXJtYWlkLXN2Zy03IC5lZGdlTGFiZWwgcmVjdHtvcGFjaXR5OjAuNTtiYWNrZ3JvdW5kLWNvbG9yOiNlOGU4ZTg7ZmlsbDojZThlOGU4O30jbWVybWFpZC1zdmctNyAuY2x1c3RlciByZWN0e2ZpbGw6I2ZmZmZkZTtzdHJva2U6I2FhYWEzMztzdHJva2Utd2lkdGg6MXB4O30jbWVybWFpZC1zdmctNyAuY2x1c3RlciB0ZXh0e2ZpbGw6IzMzMzt9I21lcm1haWQtc3ZnLTcgLmNsdXN0ZXIgc3Bhbntjb2xvcjojMzMzO30jbWVybWFpZC1zdmctNyBkaXYubWVybWFpZFRvb2x0aXB7cG9zaXRpb246YWJzb2x1dGU7dGV4dC1hbGlnbjpjZW50ZXI7bWF4LXdpZHRoOjIwMHB4O3BhZGRpbmc6MnB4O2ZvbnQtZmFtaWx5OiJ0cmVidWNoZXQgbXMiLHZlcmRhbmEsYXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MTJweDtiYWNrZ3JvdW5kOmhzbCg4MCwgMTAwJSwgOTYuMjc0NTA5ODAzOSUpO2JvcmRlcjoxcHggc29saWQgI2FhYWEzMztib3JkZXItcmFkaXVzOjJweDtwb2ludGVyLWV2ZW50czpub25lO3otaW5kZXg6MTAwO30jbWVybWFpZC1zdmctNyAuZmxvd2NoYXJ0VGl0bGVUZXh0e3RleHQtYW5jaG9yOm1pZGRsZTtmb250LXNpemU6MThweDtmaWxsOiMzMzM7fSNtZXJtYWlkLXN2Zy03IDpyb290ey0tbWVybWFpZC1mb250LWZhbWlseToidHJlYnVjaGV0IG1zIix2ZXJkYW5hLGFyaWFsLHNhbnMtc2VyaWY7fQ==" rel="stylesheet" type="text/css"/>
<h2>Mon système de capture d&#x27;informations</h2>
<p>C&#x27;est à cet endroit que je capture toutes les informations (RSS, Newsletters, Tweets, Vidéos YouTube, etc...).</p>
<p>Je ne consulte mon actualité qu&#x27;une fois par jour à l&#x27;aide de <strong><a href="https://read.readwise.io">Readwise</a></strong> qui rassemble tous les blogs, les podcasts, les chaines YouTube et les newsletter que je suis.</p>
<h2>Mon second cerveau</h2>
<p>C&#x27;est à cet endroit que je crée et sauvegarde toutes les informations qui me semblent pertinentes.</p>
<p>Il s&#x27;agit d&#x27;un ensemble de fichiers texte bruts au format <strong>markdown</strong> reliés entre eux par des <code>[[liens bidirectionnels]]</code>.</p>
<p>Ces fichiers peuvent être consultés avec n&#x27;importe quel éditeur de texte.</p>
<p>Personnellement, j&#x27;utilise <a href="/neovim" title="Neovim">Neovim</a> et <a href="/obsidian" title="Obsidian">Obsidian</a>.</p>

<p>L&#x27;ensemble est versionné avec <a href="https://github.com/git/git">git</a> et sauvegardé chaque jour sur un serveur externe.</p>
<h2>Mon système de partage</h2>
<p><strong>J&#x27;automatise chaque semaine le partage de mon second cerveau.</strong></p>
<p>Toutes mes notes sont publiées sur mon blog avec <a href="https://github.com/johackim/johackim.com">Next.js, Obsidian Publish et IPFS</a>.</p>
<p>Un récapitulatif est envoyé chaque mois sur <a href="https://johackim.com/newsletter">ma newsletter</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Générer des idées de produits - Techniques actionnables pour trouver de nouvelles idées de business]]></title>
            <description><![CDATA[Apprenez à trouver des idées pour votre prochaine entreprise, votre activité secondaire ou votre startup indépendante.]]></description>
            <link>https://johackim.com/generating-product-ideas-actionable-techniques-for-finding-new-business-ideas?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/generating-product-ideas-actionable-techniques-for-finding-new-business-ideas</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 08 Feb 2021 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/generating-product-ideas-actionable-techniques-for-finding-new-business-ideas.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/generating-product-ideas-actionable-techniques-for-finding-new-business-ideas.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/LhYLFLW.jpg"/><p>Apprenez à trouver des idées pour votre prochaine entreprise, votre activité secondaire ou votre startup indépendante.</p>
<h2>Les problèmes en premier, les produits en deuxième</h2>
<p>Tomer Sharon, dans son livre Validating Product Ideas, a interrogé 200 chefs de produit et fondateurs et a découvert que, alors que 198 d&#x27;entre eux avaient une liste d&#x27;idées, seuls deux avaient une liste de problèmes.</p>
<p>Cette dernière approche est bien meilleure pour plusieurs raisons, dont l&#x27;une est que les problèmes ont potentiellement des solutions multiples (et, par conséquent, pourraient générer plusieurs produits).</p>
<p>Cela signifie que se concentrer sur les problèmes peut potentiellement conduire à plus d&#x27;idées de produits. Avoir de nombreuses idées peut augmenter les chances de trouver des idées réussies simplement en ayant une plus grande variété de choix.</p>
<p>Ainsi, pour avoir des idées plus nombreuses et de meilleure qualité et pour augmenter vos chances de succès commercial, soyez toujours conscient du problème que vous essayez de résoudre.</p>
<h2>Définir votre audience</h2>
<p>Avant de commencer à proposer des idées, nous souhaitons créer une liste d&#x27;audience, que nous utiliserons avec de nombreuses techniques. Demandez-vous quels sont les problèmes de votre audience vous aimeriez résoudre avec votre produit ? Ou, en bref - qui aimeriez-vous servir ?</p>
<p>Une bonne technique pour trouver le bon public est de commencer par ceux dont vous faites partie ou avec lesquels vous avez une connaissance étroite, exemple :</p>
<ul>
<li>Coworkers</li>
<li>Concepteurs UX</li>
<li>Cyclistes</li>
<li>Indie Hackers</li>
<li>Vendeurs Etsy</li>
<li>Écrivains indépendants</li>
<li>Hôtes Airbnb</li>
</ul>
<p><strong>Types d&#x27;audience</strong></p>
<p>Si vous ne savez pas par où commencer, voici quelques catégories d&#x27;audience et d&#x27;exemples.</p>
<p><strong>Invividus</strong></p>
<p>Vous pouvez caractériser votre audience autour d&#x27;une seule spécificité :</p>
<ul>
<li>Âge</li>
<li>Genre</li>
<li>Localisation</li>
<li>Occupation</li>
<li>Intérêt</li>
<li>Besoin</li>
<li>Habitude</li>
<li>Loisir</li>
<li>Situation familiale, etc.</li>
</ul>
<p>Par exemple :</p>
<ul>
<li>Les sourds</li>
<li>Praticiens du yoga</li>
<li>Preschool kids</li>
<li>Les personnes en instance de divorce</li>
<li>Vegans</li>
<li>Personnes âgées</li>
<li>Propriétaires d&#x27;aquarium</li>
</ul>
<p><strong>Petites entreprises</strong></p>
<ul>
<li>Écrivains</li>
<li>Galeries d&#x27;art</li>
<li>Comptables</li>
<li>Blogueurs</li>
<li>Chambres d&#x27;hôtes</li>
<li>Bars</li>
<li>Salons de beauté</li>
<li>Hôtel-boutiques</li>
<li>Concessionnaires automobiles</li>
<li>Garagistes</li>
<li>Copywriters</li>
<li>Coffee shops</li>
<li>Traiteurs</li>
<li>Garderies</li>
<li>Event planners</li>
<li>Event space rentals</li>
<li>Les agriculteurs</li>
<li>Gyms</li>
<li>Designers</li>
<li>Décorateurs d&#x27;intérieur</li>
<li>Avocats</li>
<li>Critiques de cinéma</li>
<li>Musiciens</li>
<li>Massothérapeutes</li>
<li>Leçons de musique</li>
<li>Nutritionnistes</li>
<li>Les boites de nuit</li>
<li>Magasins en ligne</li>
<li>Chefs personnels</li>
<li>Entraîneurs personnels</li>
<li>Photographes</li>
<li>Les enquêteurs privés</li>
<li>Podcasters</li>
<li>Médecins</li>
<li>Gestionnaires immobiliers</li>
<li>Restaurants</li>
<li>Courtiers immobiliers</li>
<li>Entraîneurs sportifs</li>
<li>Startups</li>
<li>Thérapeutes</li>
<li>Traducteurs</li>
<li>Tuteurs</li>
<li>Éditeurs vidéo</li>
<li>Boutiques de vêtements vintage</li>
<li>Studios de yoga</li>
<li>Écrivains</li>
<li>Entrepôts</li>
</ul>
<p><strong>Enterprises</strong></p>
<ul>
<li>Compagnies aériennes</li>
<li>Banques</li>
<li>Casinos</li>
<li>Entreprises de transport</li>
<li>Les fournisseurs de soins de santé</li>
<li>Chaînes d&#x27;hôtels</li>
<li>Compagnies d&#x27;assurance</li>
<li>Fabricants</li>
<li>Sociétés immobilières</li>
<li>Revendeurs</li>
<li>Les clubs sportifs</li>
<li>Entreprises technologiques</li>
</ul>
<p><strong>Organisations et instituts à but non lucratif</strong></p>
<ul>
<li>Les organismes de bienfaisance</li>
<li>Fondations</li>
<li>Instituts gouvernementaux</li>
<li>Municipalités</li>
<li>Musées</li>
<li>Organisations religieuses</li>
<li>Les fonds de pension</li>
<li>Partis politiques</li>
<li>Transport public</li>
<li>Universités publiques</li>
<li>Écoles</li>
</ul>
<h2>Résoudre vos propres problèmes</h2>
<p>Résoudre vos propres problèmes est sans doute le meilleur moyen de trouver des idées de business. Avec cette technique, nous allons créer une matrice qui aide à extraire des idées basées sur vos expériences de travail.</p>
<h3>Étape 1 : Listez les choses sur lequel vous avez travaillé</h3>
<p>Il peut s&#x27;agir de projets ou de rôles; quelque chose que vous faites dans votre travail quotidien, en tant que freelance ou pendant votre temps libre.</p>
<p>Par exemple :</p>
<ul>
<li>Construire un site Web pour l&#x27;adoption d&#x27;animaux avec mon ami.</li>
<li>Gérer un café.</li>
<li>Développer une application iPhone à mon travail à plein temps.</li>
<li>Fabriquer des bureaux debout en bois et les vendre sur Etsy en tant que concert parallèle.</li>
<li>Diriger une agence de conception UX composée de trois personnes.</li>
<li>Publication d&#x27;un magazine indépendant.</li>
<li>Gérer une équipe de trois designers d&#x27;intérieur juniors au travail.</li>
</ul>
<h3>Étape 2 : Listez les inefficacités</h3>
<p>Regardez cette liste et demandez-vous :</p>
<ul>
<li>Sur quoi avez-vous passé beaucoup de temps ?</li>
<li>Sur quoi avez-vous dépensé beaucoup d&#x27;argent ?</li>
<li>Quels processus vous ont frustré ?</li>
</ul>
<h3>Étape 3 : Explorez les intersections pour trouver des problèmes</h3>
<p>Remplissez maintenant le tableau qui suit, en répondant à ces questions sur chacun des projets ou rôles, et en recherchant des opportunités pour créer des produits qui résoudraient ces inefficacités.</p>





























<table><thead><tr><th>Projets</th><th>J&#x27;ai passé beaucoup de temps sur</th><th>J&#x27;ai dépensé beaucoup d&#x27;argent sur</th><th>Processus frustrants</th></tr></thead><tbody><tr><td>#1</td><td></td><td></td><td></td></tr><tr><td>#2</td><td></td><td></td><td></td></tr><tr><td>#3</td><td></td><td></td><td></td></tr></tbody></table>
<p>Voici deux conseils supplémentaires pour vous lorsque vous recherchez des opportunités :</p>
<ul>
<li><strong>Servez le côté opposé</strong></li>
</ul>
<p>Vérifiez si votre expérience peut être utile à l&#x27;autre côté de l&#x27;entreprise dans laquelle vous travaillez.</p>
<ul>
<li><strong>Derrière la vitrine</strong></li>
</ul>
<p>Demandez-vous quels sont les processus auxquels vous avez accès. En tant que consommateurs, nous ne sommes exposés qu&#x27;à la partie &quot;vitrine&quot; des produits et services.</p>
<p>Par exemple, manger dans un restaurant vous expose à un design, à l&#x27;hospitalité, aux plats préparés, au processus de collecte des commandes, à la fonctionnalité Wi-Fi, etc... Cependant, lorsque vous participez à la création d&#x27;un produit ou d&#x27;un service, vous avez accès à ce que la plupart des gens n&#x27;ont pas comme la chaîne d&#x27;approvisionnement, la gestion des stocks, les paiements des salaires et d&#x27;autres processus internes du restaurant.</p>
<h2>Produire vos propres expériences de vie</h2>
<p>Cette technique s&#x27;appuie sur une énorme ressource inexploitée que vous avez déjà à portée de main : votre propre vie. Votre familiarité avec une expérience, les difficultés que vous avez rencontrées et les erreurs que vous avez commises est le point de départ idéal pour identifier les problèmes.</p>
<h3>Étape 1 : Dressez la liste des expériences de vie que vous avez acquises</h3>
<p>Par exemple :</p>
<ul>
<li>Déménager au Japon</li>
<li>Passer par un divorce</li>
<li>Faire face aux maux de dos</li>
<li>Demander un visa de propriétaire d&#x27;entreprise</li>
<li>Acheter une maison modulaire</li>
</ul>
<h3>Étape 2 : Dressez la liste des frictions que vous avez rencontrées</h3>
<ul>
<li>De quel niveau de recherche à t&#x27;on besoin ?</li>
<li>Quelles expériences ont nécessité l&#x27;embauche d&#x27;un consultant ?</li>
<li>Quelles erreurs as-tu commises ?</li>
<li>De quels aspects auriez-vous souhaité que quelqu&#x27;un vous ait parlé à l&#x27;avance ?</li>
</ul>
<h3>Étape 3 : Simplifiez l&#x27;expérience pour les autres</h3>
<p>Les gens vivent chaque jour les mêmes expériences coûteuses et chronophages. Et si elles pouvaient être optimisées pour libérer du temps des gens pour des choses plus importantes ?</p>
<p>Résumez votre expertise durement acquise dans un produit pour aider les autres à éviter les mêmes frictions. Le produit final peut être un livre, une formation ou un atelier, une entreprise de consulting ou une communauté en ligne autour de ce sujet.</p>
<h2>Idées basées sur la vision</h2>
<p>Une excellente façon de commencer à réfléchir à des idées de produits est de définir ce que vous visez.</p>
<h3>Étape 1 : définissez votre vision</h3>
<p>Pensez à ce à quoi vous pensez que le monde devrait ressembler à l&#x27;avenir, comparez cette image à ce qu&#x27;il est maintenant et comblez les lacunes avec votre produit ou service.</p>
<p>Votre vision appartiendra probablement à l&#x27;une des deux catégories suivantes :</p>
<ul>
<li>Rapprocher quelque chose de <strong>positif</strong>, par exemple rendre les soins de santé plus accessibles ; faire vivre plus longtemps les animaux de compagnie ; apprenez aux enfants à être plus créatifs.</li>
<li>Éloignez quelque chose de <strong>négatif</strong>, par exemple réduire le tabagisme dans les pays en développement ; réduire la pollution microplastique dans l&#x27;océan ; aider les gens à avoir moins de douleur physique dans leur espace de travail.</li>
</ul>
<h3>Étape 2 : Trouvez les raisons pour lesquelles la vision n&#x27;est pas une réalité</h3>
<p>Après avoir défini la vision, nous savons où nous allons. Nous devons maintenant dresser une liste des raisons pour lesquelles nous n’en sommes pas encore là. On peut découvrir les raisons en se posant des questions en fonction du type de vision :</p>
<ul>
<li>S&#x27;éloigner de quelque chose de négatif - Qu&#x27;est-ce qui cause ce problème ?</li>
<li>Rapprocher quelque chose de positif - Qu&#x27;est-ce qui l&#x27;empêche de se produire ?</li>
</ul>
<h3>Étape 3 : Énumérez les moyens de résoudre ces obstacles</h3>
<p>Une fois que nous avons répertorié les problèmes, nous pouvons proposer des idées de solutions possibles.</p>
<h2>Croiser les industries</h2>
<p>Essayez de passer un produit d&#x27;un secteur à l&#x27;autre.</p>
<h3>Étape 1 : Faites une liste de produits de valeur</h3>
<p>Nous voulons apporter des produits d&#x27;autres industries au nôtre ou à ceux que nous connaissons très bien. Nous devons donc commencer par répertorier des produits en dehors de notre industrie qui fonctionnent bien.</p>
<ul>
<li>Demandez aux gens d&#x27;autres secteurs quels produits ils aiment utiliser personnellement ou dans leur entreprise et quels produits ils ont achetés l&#x27;année dernière.</li>
<li>Pensez aux produits que vous utilisez et que vous évaluez fortement.</li>
<li>Pensez aux produits que vous avez vus ou lus récemment et qui ont attiré votre attention.</li>
<li>Utilisez la ressource &quot;Où trouver plus d&#x27;idées&quot; et explorez ceux que vous trouvez intéressants, utiles ou réussis.</li>
</ul>
<h3>Étape 2 : Ajustez ces produits à votre secteur / audience</h3>
<p>Nous souhaitons maintenant croiser cette liste de produits avec les secteurs ou les audiences que vous connaissez bien. Vous pouvez également utiliser <em>la liste d&#x27;audience</em> à cette étape.</p>
<p>Déterminez si les problèmes que ces produits résolvent se produisent également dans votre secteur et sont pertinents pour votre audience.</p>
<p>Exemples :</p>
<ul>
<li>Ressources de préparation à l&#x27;entretien d&#x27;embauche pour différents rôles. (<a href="https://productdesigninterview.com/">Solving Product Design Exercises</a>).</li>
<li>Des autocollants pour clavier améliorant la productivité dans différentes professions. (<a href="https://sketchkeys.com/">SketchKeys</a>).</li>
<li>Supports pour ordinateurs portables et instruments de musique. (<a href="https://openstanding.com">OpenStanding</a>).</li>
</ul>
<h2>Améliorer les produits abandonnés mais utiles</h2>
<p>Certains produits gagnent du terrain mais ne sont pas bien entretenus par les créateurs pour différentes raisons et sont donc abandonnés.</p>
<p>Trouver ces produits «abandonnés» et en construire une meilleure version est une stratégie robuste, car elle génère des idées qui sont déjà validées par la demande.</p>
<h3>Étape 1 : Trouvez des produits en demande avec des notes faibles</h3>
<p>Pour trouver des produits en demande mais mal notés, commencez par rechercher des magasins qui regroupent des produits ; Vous pouvez découvrir ici la popularité du produit et sa capacité à répondre aux besoins des utilisateurs grâce aux avis.</p>
<p>Vous pouvez utiliser l&#x27;App Store (iOS, macOS, Apple TV), Google Play, Amazon Apps Store (skills pour Echo, applications pour Kindle), les extensions Chrome Store ou Trustpilot.</p>
<p>Pour faciliter la recherche, vous pouvez utiliser :</p>
<ul>
<li>App Annie - Vous pouvez trier par notes les applications iOS, Apple TV, macOS, Google Play et Amazon.</li>
<li>Chrome Store - Vous pouvez naviguer vous-même dans le magasin</li>
</ul>
<p>Idéalement, nous recherchons des applications qui ont :</p>
<ul>
<li>Une note faible ; moins de 3,5 étoiles (le produit ne tient pas la promesse).</li>
<li>Beaucoup de téléchargements ou d&#x27;utilisateurs (ce qui valide la demande).</li>
<li>N&#x27;a pas été mis à jour pendant une longue période (plus de chances qu&#x27;il ait été abandonné).</li>
</ul>
<h3>Étape 2 : créer de meilleures versions de ces produits</h3>
<p>Créez un produit qui tient mieux la promesse de ces applications et parvient à résoudre le problème plus efficacement.</p>
<p>Exemple : Free Visio Viewer est une extension Chrome qui fournit un aperçu des fichiers Microsoft Visio sur différentes plates-formes sans avoir à l&#x27;installer. L&#x27;extension compte plus de 200 000 utilisateurs et une note moyenne de 3 étoiles, les clients se plaignant que cela ne fonctionne pas et qu&#x27;ils n&#x27;apprécient pas le fait que leurs fichiers soient téléchargés sur un site Web public.</p>
<h2>Changer le lieu d&#x27;une solution</h2>
<p>Au lieu de déplacer les produits entre les industries, nous explorerons si nous pouvons les déplacer d&#x27;un marché et d&#x27;une langue à une autre.</p>
<ul>
<li>Étape 1 : Répertoriez les pays, les régions et les langues que vous connaissez</li>
<li>Étape 2 : Énumérez les produits à reproduire</li>
<li>Étape 3 : Apportez le produit dans un nouveau pays ou une nouvelle langue</li>
</ul>
<h2>Automatisez les services et produits des marketplaces</h2>
<p>En explorant des marchés tels que Fiverr et Etsy, vous pouvez évaluer quels produits et services sont en forte demande. Après avoir trouvé ces offres, vous pouvez tenter d&#x27;automatiser une solution et, ce faisant, fournir un produit plus économique et plus rapide au client final.</p>
<ul>
<li>Étape 1 : Trouver des services automatisables sur Fiverr ou Etsy</li>
<li>Étape 2 : Automatisez la vente de ces services et produits</li>
</ul>
<h2>Décomposer un produit</h2>
<p>Ce modèle consiste à prendre un produit et à le décomposer en petits produits, secteurs d&#x27;activité. Par exemple, si vous regardez la page d&#x27;accueil de Craigslist, vous pouvez trouver des catégories décomposer par de nouvelles entreprises pour créer des produits extrêmement réussis : Zillow pour la catégorie Logement; Airbnb pour les locations de vacances ; Indeed et ZipRecruiter pour les jobs ; Tinder pour les rencontres ; et Nextdoor pour la communauté.</p>
<h3>Étape 1 : Répertoriez les produits utilisés par votre audience</h3>
<p>Par exemple, si votre audience est composée de designers UX, certains des produits que nous pouvons peut-être décomposer sont : InVision, Zeplin, Figma, Sketch.</p>
<h3>Étape 2 : Analysez les fonctionnalités, les plateformes et les audiences</h3>
<p>Afin de trouver des opportunités de dégroupage, examinons trois aspects des produits que nous pouvons peut-être explorer :</p>
<p><strong>Extraire des fonctionnalités</strong></p>
<p>Analyser les pages de tarification des produits, comparer différents plans et examiner les fonctionnalités pour lesquelles les entreprises font payer.</p>
<p>Il y a de fortes chances que l&#x27;entreprise que vous analysez ait déjà fait des efforts pour tester ce pour quoi les clients sont prêts à payer. Ainsi, avec cette technique, vous trouverez des idées qui sont déjà partiellement validées. En isolant une fonctionnalité pour produire un produit autonome et en vous concentrant sur une seule chose, vous pourriez offrir une meilleure valeur au client final.</p>
<p><strong>Plates-formes non supportées</strong></p>
<p>Les entreprises ont des priorités multiples et concurrentes, et elles doivent souvent faire des efforts pour soutenir certaines plates-formes et en déprioriser d&#x27;autres en raison du manque de temps ou de ressources ; par exemple, développer une version de bureau d&#x27;un service mais pas l&#x27;application native pour smartphones ou tablettes.</p>
<p><strong>Audiences de niche</strong></p>
<p>Les gros produits peuvent viser à servir un large public alors que, souvent, des solutions plus spécifiques et dédiées pour chacun des segments d&#x27;audience pourraient être plus utiles. Par exemple, UpWork est une place de marché pour un large éventail de freelance. Même on peut trouver des professionnels sur UpWork, il est préférable et plus attractif de trouver des éditeurs sur Reedsy et des avocats sur UpCouncel car le support qu&#x27;ils fournissent est plus adapté et spécialisé.</p>
<h3>Étape 3 : Convertissez les opportunités en produits</h3>
<p>Exemples :</p>
<ul>
<li>Mailchimp</li>
</ul>
<p>Mailchimp dispose d&#x27;une fonctionnalité &quot;<a href="https://mailchimp.com/help/use-send-time-optimization/">Use Send Time Optimization</a>&quot; qui analyse le moment où les abonnés sont les plus actifs et détermine ainsi le meilleur moment pour leur envoyer une newsletter.</p>
<p>Cette fonctionnalité pourrait assez facilement être développée en tant que produit autonome qui servirait ensuite à toute personne souhaitant envoyer des e-mails automatisés à une liste d&#x27;abonnés au meilleur moment, même si elle utilise d&#x27;autres fournisseurs.</p>
<ul>
<li>Figma</li>
</ul>
<p>Figma, un éditeur de graphiques vectoriels et outil de prototypage, ne prend pas en charge les iPad.</p>
<p>Matias Martinez a créé une application appelée <a href="https://apps.apple.com/app/id1510607687">Figurative</a> qui permet aux gens d&#x27;exécuter Figma sur iPad.</p>
<ul>
<li>Soundcloud</li>
</ul>
<p>SoundCloud, un site de distribution et de partage de musique, a abandonné son macOS en raison de ressources limitées et s&#x27;est concentré sur ses applications iOS et Web. Dennis Oberhoff a vu une opportunité ici et a développé <a href="https://apps.apple.com/fr/app/daftcloud-for-soundcloud/id1320450034">DaftCloud</a>, une nouvelle application indépendante.</p>
<ul>
<li>Reddit</li>
</ul>
<p>Supergreat est un site Web avec des produits de beauté générés par les utilisateurs et des critiques de maquillage de la communauté de la beauté (équivalent du subreddit r/beauty).</p>
<p>Goodreads est un catalogue de critiques de livres et de discussions pour la communauté des lecteurs (remplaçant le subreddit r/books).</p>
<p>Vous pouvez explorer et voir quelles communautés sont populaires sur <a href="http://redditlist.com/">redditlist.com</a>.</p>
<h2>Groupes de données publiques</h2>
<p>De nombreux gouvernements, municipalités, organismes publics et même entreprises ouvrent certaines de leurs données au public pour leur permettre de créer des services autour de celles-ci.</p>
<h3>Étape 1 : Explorer des groupes de données publiques</h3>
<p>Voici quelques endroits où vous pourriez trouver des données ouvertes :</p>
<ul>
<li><a href="https://data.gov.uk/">Data.gov.uk</a> - données du gouvernement britannique</li>
<li><a href="https://data.gov/">Data.gov</a> - données du gouvernement américain</li>
<li><a href="https://data.europa.eu/">Data.europa.eu</a> - données de l&#x27;Union européenne</li>
<li><a href="https://movement.uber.com/">Movement.uber.com</a> - données d&#x27;Uber sur les temps de trajet dans les villes</li>
<li><a href="https://daten.berlin.de/">Daten.berlin.de</a> - données sur Berlin</li>
<li><a href="https://github.com/public-apis/public-apis">https://github.com/public-apis/public-apis</a></li>
</ul>
<h3>Étape 2 : Trouvez les audiences qui en bénéficieront</h3>
<p>La première chose que vous pourriez faire avec les données est de les rendre plus accessibles. Encore plus de valeur peut être apportée lorsque plusieurs ensembles de données sont combinés pour révéler des informations plus intéressantes. Pensez aux audiences qui pourraient bénéficier de ces données ou informations, aux tendances qu&#x27;elles pourraient servir et aux problèmes qu&#x27;elles résoudraient.</p>
<h3>Étape 3 : Fournissez ces données à cette audience</h3>
<p>L&#x27;un des produits qui a été construit de cette façon est <a href="https://nomadlist.com/">Nomad List</a>.</p>
<p>Le site Web utilise des ensembles de données publiques de l&#x27;ONU, de l&#x27;OMS, du FMI et de la Banque mondiale pour des éléments tels que des informations démographiques et sanitaires, ainsi que des API publiques pour des éléments tels que la météo, la qualité de l&#x27;air et la densité du trafic. Nomad List utilise ces données pour évaluer l&#x27;attrait des villes pour le travail à distance. Il enregistre actuellement environ un million de pages vues par mois et plus de 300 000 dollars de revenus annuels.</p>
<p>Voici quelques autres exemples d&#x27;idées qui pourraient émerger de la combinaison d&#x27;ensembles de données et de les rendre accessibles à des audiences spécifiques :</p>
<ul>
<li><strong>Navigation en ville adaptée au cyclisme</strong></li>
</ul>
<p>La plupart des applications de navigation sont fortement orientées pour les trajets en voiture ou les transports en commun. Si vous collectez des données sur les pistes cyclables, la pollution de l&#x27;air, les accidents de vélo et le vol de vélo à travers la ville, vous pouvez créer un service de navigation adapté aux vélos.</p>
<ul>
<li><strong>Classement des emplacements pour les personnes souhaitant louer un espace à long terme ou Airbnb à court terme</strong></li>
<li><strong>Calcul optimal de la zone de livraison pour les restaurants</strong></li>
</ul>
<h2>Analyse des recherches sur le web</h2>
<p>Les recherches que les gens font déjà dans les moteurs de recherche sont un excellent moyen de valider la demande et l&#x27;intérêt autour de problèmes spécifiques.</p>
<h3>Étape 1 : Utilisez des outils pour analyser les questions les plus posées sur les moteurs de recherche</h3>
<ul>
<li><a href="https://answerthepublic.com/">answerthepublic.com</a></li>
<li><a href="https://keywordtool.io/">keywordtool.io</a></li>
<li><a href="https://keysearch.co/tools/brainstorm-niche-ideas">keysearch.co/tools/brainstorm-niche-ideas</a></li>
</ul>
<h3>Étape 2 : Recherchez les sujets pertinents pour votre audience</h3>
<p>Exemples :</p>

























<table><thead><tr><th>Audience</th><th>Mots-clés recherchés</th></tr></thead><tbody><tr><td>Personnes souffrant d&#x27;un mal de dos</td><td>Douleur dorsale, claquage des muscles du dos</td></tr><tr><td>Employés à distance</td><td>Travail à distance, productivité, bureau à domicile</td></tr><tr><td>Les auteurs de livres indépendants</td><td>autoédition</td></tr><tr><td>Vegans</td><td>Véganisme, alimentation à base de plantes</td></tr></tbody></table>
<h3>Étape 3 : Identifiez les problèmes que les gens cherchent à résoudre</h3>
<p>Dans les résultats, vous verrez les problèmes que les gens cherchent à résoudre ou les solutions qu&#x27;ils recherchent.</p>
<p>Par exemple, une recherche sur «travail à distance» renverra :</p>
<ul>
<li>«Contrat de travail à distance» - La législation relative au travail à distance n’est pas simple pour les employés ou les entreprises.</li>
<li>«Taxes sur le travail à distance» - Encore une fois, il s&#x27;agit d&#x27;un domaine de connaissances complexe que les travailleurs à distance et ceux qui les emploient doivent maîtriser.</li>
<li>«Agence de travail à distance» - Il y a ici une opportunité de créer une agence de recherche de tête spécialisée dans la recherche d&#x27;employés à distance.</li>
<li>«Podcast de travail à distance» - Apparemment, comme le travail à distance est encore nouveau, les gens ont soif d&#x27;en savoir plus à ce sujet.</li>
</ul>
<h2>Identifier les problèmes de votre audience</h2>
<h3>Étape 1 : mettez votre liste d&#x27;audience dans un tableau</h3>

























<table><thead><tr><th>Audience</th><th>Problèmes</th><th>Idées de produit</th></tr></thead><tbody><tr><td>Coworkers</td><td></td><td></td></tr><tr><td>Auteurs auto édités</td><td></td><td></td></tr><tr><td>Cyclistes</td><td></td><td></td></tr></tbody></table>
<h3>Étape 2 : Explorez les problèmes qu&#x27;ils rencontrent</h3>
<p>Dans la deuxième colonne, nous voulons lister les problèmes qu&#x27;ils pourraient rencontrer.</p>
<p>We’re going to use two sources to define their problems :</p>
<ul>
<li>Vos hypothèses (que vous devrez évidemment valider) - utilisez votre expérience ou vos connaissances pour énumérer les problèmes auxquels ce public est confronté.</li>
<li>Google - commencez par rechercher sur Google «pourquoi [l&#x27;activité] est mauvaise». Avec le cyclisme, vous pouvez rechercher: «pourquoi le cyclisme est mauvais…» et voir quels problèmes sont signalés sur Google lorsqu&#x27;il remplit automatiquement le reste de la phrase. Avec cette technique, vous obtenez un aperçu immédiat des problèmes que les gens rencontrent et recherchent ; il vous montre rapidement les problèmes dont votre public est conscient.</li>
</ul>
<h3>Étape 3 : Dressez la liste des idées pour résoudre ces problèmes</h3>




















<table><thead><tr><th>Audience</th><th>Problèmes</th><th>Idées de produit</th></tr></thead><tbody><tr><td>Coworkers</td><td>On ne peut pas laisser d&#x27;objets pendant la nuit (un clavier, un sac).</td><td>B2B : Construire des casiers prêts à l&#x27;emploi que les espaces de travail peuvent facilement installer pour les membres et facturer sur la base d&#x27;un tarif journalier, créant ainsi un nouveau facteur de différenciation ou de revenu.</td></tr><tr><td>Auteurs auto édités</td><td>Élargir la portée de votre livre</td><td>De nombreuses bibliothèques acceptent les demandes d&#x27;achat de livres des membres de la bibliothèque. Construisez un service que les auteurs pourraient intégrer à leur site web et grâce auquel les lecteurs pourraient demander le livre à leur bibliothèque locale.   Cela est particulièrement utile pour le public étudiant qui, autrement, ne pourrait pas se permettre d&#x27;acheter le livre.</td></tr></tbody></table>
<h2>Vendre des pioches aux mineurs d&#x27;or</h2>
<p>Lorsque vous voyez une tendance émerger, votre premier instinct pourrait être de vous y plonger. Souvent, cependant, une meilleure stratégie consiste à servir les personnes ou les entreprises qui font partie de la tendance ; vendre les pioches plutôt que d’exploiter l’or.</p>
<h3>Étape 1: Listez les tendances</h3>
<p>Voici trois ressources pour vous aider :</p>
<ul>
<li><a href="https://trendhunter.com/">TrendHunter.com</a></li>
<li><a href="https://explodingtopics.com/">Explodingtopics.com</a></li>
<li><a href="https://trends.co/">Trends.co</a></li>
</ul>
<h3>Étape 2 : Trouvez des opportunités pour servir les participants de la tendance</h3>
<p>N&#x27;essayez pas d&#x27;être dans la tendance de la livraison de nourriture et de rivaliser avec BlueApron ou HelloFresh, mais cherchez les opportunités pour servir ces entreprises. <a href="https://onfleet.com/">Onfleet</a> fait exactement cela en fournissant un système de gestion de livraison pour des clients comme HelloFresh, Meadow et Imperfect Food. Ils ont réalisé <a href="https://getlatka.com/companies/onfleet">un chiffre d&#x27;affaires de 4,8 millions de dollars en 2019</a>.</p>
<p>La société californienne <a href="https://packedpkg.com/">Packed</a> a examiné l&#x27;explosion du marché du cannabis nouvellement légal et a décidé de le servir en fournissant des emballages de haute qualité pour les marques de cannabis.</p>
<p>Les podcasts sont en train de devenir une grosse affaire et il y a des entreprises qui ont reconnu cette tendance et en ont capitalisé, non pas en créant elles-mêmes des podcasts mais en fournissant des outils à ceux qui le font. Jon Buda et Justin Jackson ont construit <a href="https://transistor.fm/">Transistor.fm</a>, un ensemble d&#x27;outils d&#x27;analyse et de distribution pour les podcasts, avec des clients comme Basecamp, Kickstarter et Alexis Ohanian (co-fondateur de Reddit).</p>
<h2>Recherche scientifique</h2>
<h3>Étape 1 : Accéder aux agrégateurs de recherche scientifique</h3>
<p>Voici quelques agrégateurs de recherche gratuits que vous pouvez utiliser :</p>
<ul>
<li><a href="https://sciencedirect.com/">sciencedirect.com</a></li>
<li><a href="https://researchgate.net/">researchgate.net</a></li>
<li><a href="https://sciencedaily.com/">sciencedaily.com</a></li>
<li><a href="https://jstor.org/">jstor.org</a></li>
<li><a href="https://scholar.google.com/">scholar.google.com</a></li>
</ul>
<h3>Étape 2 : Recherchez les sujets pertinents pour votre public</h3>

























<table><thead><tr><th>Audience</th><th>Mots-clés recherchés</th></tr></thead><tbody><tr><td>Personnes souffrant d&#x27;un mal de dos</td><td>Douleur dorsale, claquage des muscles du dos</td></tr><tr><td>Employés à distance</td><td>Travail à distance, productivité, bureau à domicile</td></tr><tr><td>Les auteurs de livres indépendants</td><td>autoédition</td></tr><tr><td>Vegans</td><td>Véganisme, alimentation à base de plantes</td></tr></tbody></table>
<h3>Étape 3 : Résolvez les problèmes exposés dans la recherche</h3>
<p><strong>Comment la qualité de l&#x27;air affecte la productivité</strong> :</p>
<p>La recherche sur le thème de la productivité peut conduire à des recherches explorant <a href="https://researchgate.net/publication/283236205_Associations_of_Cognitive_Function_Scores_with_Carbon_Dioxide_Ventilation_and_Volatile_Organic_Compound_Exposures_in_Office_Workers_A_Controlled_Exposure_Study_of_Green_and_Conventional_Office_Environ">l&#x27;effet négatif des niveaux de CO2 sur les capacités cognitives humaines.</a> Des niveaux élevés de CO2 au bureau ou à la maison peuvent réduire de 50% certains domaines de la performance cognitive.</p>
<p>Les gens rejoignent les espaces de coworking pour être plus productifs et les employeurs essaient d&#x27;augmenter la productivité de leurs employés en leur fournissant des collations, du sucre, du café, des boissons énergisantes, etc. Mais la plupart finissent par négliger la qualité de l&#x27;air d&#x27;un espace de travail qui pourrait réduire la productivité de moitié.</p>
<p><strong>Comment le bruit affecte la productivité</strong> :</p>
<p><a href="https://researchgate.net/publication/236139028_The_Effect_of_Noise_on_Human_Performance_A_Clinical_Trial">La recherche montre comment le bruit affecte la productivité</a> (ainsi que les niveaux de créativité et même la santé). Pour aider les gens à atténuer ses effets dans différents environnements comme le bureau ou un espace de travail partagé, dans un café ou à la maison, vous pouvez créer une application pour mesurer, suivre et analyser les niveaux de bruit.</p>
<h2>Composants d&#x27;un business modèle</h2>
<p>Un business modèle est un ensemble de plusieurs composants utilisés dans le but de créer, fournir et capturer de la valeur.</p>
<h3>Étape 1 : Listez les composants de business modèles</h3>
<ul>
<li><strong>Add-on</strong> - fournir des services ou produits supplémentaires en plus du produit principal moyennant des frais supplémentaires. (ex: EasyJet, Booking)</li>
<li><strong>Advertising</strong> - aider les entreprises à promouvoir leurs services auprès de clients potentiels. (Google Ads, Taboola, BuySellAds)</li>
<li><strong>Access over ownership</strong> - fournir aux clients l&#x27;utilisation d&#x27;un produit sans l&#x27;acheter. (BlaBlaCar, Rentuu)</li>
<li><strong>Brand trust production</strong> - aider les entreprises à produire, collecter et conserver des avis positifs en ligne, des témoignages et des études de cas, etc. (Yotpo, Trustpilot, Stamped)</li>
<li><strong>Certification and compliance</strong> - fournir aux entreprises ou aux particuliers la preuve de leur conformité à une certaine norme. (FSC®, LEED, Microsoft Certified)</li>
<li><strong>Community building</strong> - construire un réseau de personnes qui apportent de la valeur par leur existence même et permettre aux membres du réseau de recevoir de la valeur les uns des autres. Fournis potentiellement des services payants supplémentaires. (Nextdoor, Product Hunt, Flickr)</li>
<li><strong>Customer loyalty</strong> - aider à fidéliser les clients en récompensant ou en leur offrant une valeur supplémentaire en échange de leur fidélité. (JetBlue, Marriott International)</li>
<li><strong>Direct-to-consumer</strong> - vendre des biens de consommation directement aux clients, en contournant les détaillants, grossistes ou distributeurs tiers (Casper, Everlane, AWAY)</li>
<li><strong>Disintermediation</strong> - fournir des services en supprimant les intermédiaires (Alibaba, Spotify for artists)</li>
<li><strong>eCommerce</strong> - apporter des marchandises vendues hors ligne, en ligne.</li>
<li><strong>Experience</strong> - offrant une expérience remarquable qui n’existait pas ou qui n’était pas disponible auparavant pour l&#x27;audience cible. (Virgin Airlines, Tomorrowland, Disney World)</li>
<li><strong>Embedded social enterprises</strong> - intégrer un engagement en faveur du bien social dans les activités à but lucratif. (Toms, Boxed Water)</li>
<li><strong>Flat fee</strong> - fournir des services qui dépendraient généralement de l&#x27;utilisation pour un prix fixe. (Netflix, Spotify)</li>
<li><strong>Fractional ownership</strong> - permettre aux clients de s&#x27;auto-organiser pour acheter ensemble des actifs coûteux (biens immobiliers, voitures, avions). Cela revient à louer au lieu d&#x27;acheter mais, dans ce cas, les clients possèdent une partie de l&#x27;actif. (NetJets)</li>
<li><strong>High-quality content</strong> - produire un contenu de qualité supérieure et en vendre l&#x27;accès. (Masterclass, Glo)</li>
<li><strong>Integrator</strong> - combiner plusieurs composants (produits) dans une nouvelle entité, fournissant une nouvelle valeur en tirant parti de la capacité collective.</li>
<li><strong>Lower barriers to entry</strong> - faire un produit qui était autrefois très exclusif accessible aux masses. (Amazon Kindle Direct Publishing)</li>
<li><strong>Lead generation</strong> - collecter et vendre les contacts des clients potentiellement intéressés par un service ou un produit à des parties fournissant ce produit. (comparethemarket.com, confused.com)</li>
<li><strong>Long-tail</strong> - se concentrer sur la vente d&#x27;un faible volume de nombreux produits de niche plutôt que de quelques best-sellers. (Amazon, Google Search, Spotify)</li>
<li><strong>Lock-in</strong> - construire un éco-système qui rend coûteux ou chronophage pour les clients de passer aux offres des concurrents. (Nespresso, Apple)</li>
<li><strong>Luxury experience</strong> - fournir un accès à court terme à quelque chose de très coûteux qui est normalement hors de portée financière, moyennant des frais (comme les supercars). (PrivateFly, Sailo)</li>
<li><strong>Marketplace</strong> - créer une connexion entre deux parties fournissant l&#x27;offre et la demande pour un certain besoin. (eBay, Airbnb, Etsy)</li>
<li><strong>On-demand</strong> - rendre les produits et services facilement accessibles et immédiatement disponibles, où et quand ils sont nécessaires. (Uber, Task Rabbit)</li>
<li><strong>Peer-to-peer</strong> - créer une infrastructure permettant aux particuliers de fournir des biens et des services normalement fournis par les entreprises. (Airbnb, eBay, Lyft)</li>
<li><strong>Pay-as-you-go</strong> - fournir des produits sur une base de paiement à l&#x27;utilisation / la consommation. (Zipcar, Breather)</li>
<li><strong>Research</strong> - fournir des informations aux entreprises et aux particuliers. (Accenture, Bloomberg, Gartner)</li>
<li><strong>Referral</strong> - fournir aux clients des outils pour recommander le produit afin d&#x27;acquérir plus de clients. Les clients sont incités en recevant une réduction de la vente. (WeWork, Uber)</li>
<li><strong>Rent instead of buy</strong> - donner accès à des produits qui doivent normalement être achetés. (car2go, Netflix)</li>
<li><strong>Spare change use</strong> - permettre aux clients d&#x27;utiliser la monnaie restante des achats quotidiens ou des achats en ligne. (Acorns, Moneybox, Mylo)</li>
<li><strong>Subscription</strong> - donner accès à un produit ou à un service de façon récurrente. (Netflix, Dollar Shave Club, HelloFresh)</li>
<li><strong>White label</strong> - produire des produits qui pourraient être distribués par d&#x27;autres personnes avec leur marque. (Teespring, Printful)</li>
</ul>
<h3>Étape 2 : Créez une matrice à l&#x27;aide de votre liste d&#x27;audience</h3>





























































































































































































































































<table><thead><tr><th>Composants de business modèles</th><th>Audience #1</th><th>Audience #2</th><th>Audience #3</th><th>Audience #4</th><th>Audience #5</th></tr></thead><tbody><tr><td>Add-on</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Advertising</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Access over ownership</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Brand trust production</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Certification and compliance</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Community building</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Customer loyalty</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Direct-to-consumer</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Disintermediation</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>eCommerce</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Experience</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Embedded social enterprises</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Flat fee</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Fractional ownership</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>High-quality content</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Integrator</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Lower barriers to entry</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Lead generations</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Long-tail</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Lock-in</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Luxury experience</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Marketplace</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Peer-to-peer</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Pay-as-you-go</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Research</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Referral</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Rent instead of buy</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Spare change use</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Subscription</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>White label</td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>
<h3>Étape 3 : Trouvez des idées de produits dans les intersections</h3>
<p>Explorer les intersections entre les composants et vos audiences.</p>
<p>Exemples :</p>
<ul>
<li>Cyclistes + flat fee - Nous pourrions créer une assurance forfaitaire pour les vélos, couvrant les réparations et le vol.</li>
<li>Co-workers + fractional ownership - Nous pourrions créer un modèle permettant aux solopreneurs et aux indépendants d&#x27;acheter de petites pièces d&#x27;un espace de coworking. En payant la propriété par versements mensuels, cela représenterait un fardeau financier gérable semblable à un paiement de loyer. De cette manière, ils peuvent avoir accès à l&#x27;espace et également acquérir une partie d&#x27;un actif en tant qu&#x27;investissement.</li>
</ul>
<h2>Analyse des objectifs communs</h2>
<p>En utilisant cette technique, vous pouvez rechercher des opportunités en fonction des problèmes, besoins et objectifs communs des entreprises et des particuliers.</p>
<h3>Étape 1: divisez votre liste d&#x27;audience en particuliers et entreprises</h3>
<h3>Étape 2: Construire une matrice audience / objectifs</h3>
<p>Voici quelques objectifs ou motivations communes qui motivent les individus, pour lesquels ils sont souvent prêts à payer :</p>
<ul>
<li>Économiser de l&#x27;argent</li>
<li>Gagner du temps</li>
<li>Gagner plus d&#x27;argent</li>
<li>Acquérir de l&#x27;expérience</li>
<li>Devenir en meilleure santé</li>
<li>Se débarrasser des mauvaises habitudes</li>
<li>Améliorer la productivité</li>
<li>Se connecter avec des personnes partageant les mêmes idées</li>
<li>Conformité aux réglementations et aux lois</li>
<li>S&#x27;éduquer</li>
<li>Augmenter la sécurité</li>
<li>Trouver un emploi</li>
</ul>
<p>Voici quelques objectifs courants que les entreprises poursuivent et pour lesquels elles sont souvent prêtes à payer :</p>
<ul>
<li>Trouver de nouveaux clients</li>
<li>Augmentation des ventes</li>
<li>Augmentation de la taille moyenne des ventes</li>
<li>Réduire le taux de désabonnement</li>
<li>Augmentation des leads</li>
<li>Améliorer l&#x27;engagement des médias sociaux</li>
<li>Augmenter l&#x27;engagement client</li>
<li>Augmenter la fidélisation des clients</li>
<li>Augmenter la satisfaction client</li>
<li>Améliorer la fidélité des clients</li>
<li>Réduire les dépenses et économiser de l&#x27;argent</li>
<li>Gagner du temps</li>
<li>Se conformer à la réglementation</li>
</ul>
<h3>Étape 3: Trouvez des opportunités</h3>
<p>Regardez les intersections de cette matrice et recherchez les problèmes que vous aimeriez résoudre.</p>
<h2>Product models</h2>
<p>Un product model est un concept de produit qui fonctionne dans différentes disciplines ou industries.</p>
<h3>Étape 1 : Liste des product models</h3>
<ul>
<li>Kits Do It Yourself (DIY)</li>
<li>Outils analytiques</li>
<li>Contrôle de version et outils de collaboration</li>
<li>Planificateurs</li>
<li>Sites et outils de comparaison</li>
<li>Alternatives durables</li>
<li>Produits de cure</li>
<li>Du numérique au physique</li>
<li>Sites de review</li>
<li>Produire des services bureaucratiques ou juridiques</li>
</ul>
<h3>Étape 2 : Créez une matrice combinant les modèles de produits et votre liste d&#x27;audience</h3>





























































































<table><thead><tr><th>Product Models</th><th>Audience #1</th><th>Audience #2</th><th>Audience #3</th><th>Audience #4</th><th>Audience #4</th></tr></thead><tbody><tr><td>DIY kits</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Analytics tools</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Version control and collaboration tools</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Planners</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Comparison websites and tools</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Sustainable alternatives</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Curation products</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>From digital to physical</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Review websites</td><td></td><td></td><td></td><td></td><td></td></tr><tr><td>Productize bureaucratic or legal services</td><td></td><td></td><td></td><td></td><td></td></tr></tbody></table>
<h3>Étape 3 : Rechercher des opportunités</h3>
<h2>Où trouver plus d&#x27;idées</h2>
<h3>Être exposé aux idées</h3>
<p>Voici quelques ressources :</p>
<ul>
<li>Plateformes de crowdsourcing (exemples : <a href="https://kickstarter.com/">Kickstarter</a> et <a href="https://indiegogo.com/">Indiegogo</a>).</li>
<li>Rapports de tendances - Ces rapports explorent de nouvelles idées qui émergent et qui deviennent une tendance sur le marché. (exemples : <a href="https://trends.co/">Trends.co</a> ou <a href="https://trendhunter.com/">TrendHunter.com</a>).</li>
<li>Rapports d&#x27;entreprises (exemple : <a href="https://statista.com/">Statista</a>)</li>
</ul>
<h3>Interagir avec les gens</h3>
<ul>
<li>Serial entrepreneurs</li>
<li>Des personnes issues d&#x27;industries «non sexy»</li>
<li>Meetups</li>
</ul>
<h3>Des ressources qui traitent des problèmes et des idées</h3>
<ul>
<li><a href="https://startupsfromthebottom.com/ideas">Startupsfromthebottom.com/ideas</a></li>
<li><a href="https://ideaswatch.com/">Ideaswatch.com</a></li>
<li><a href="https://openideo.com/">Openideo.com</a></li>
<li><a href="https://probstack.io/">Probstack.io</a></li>
<li><a href="https://requestforproduct.co/">Requestforproduct.co</a></li>
<li><a href="https://fiveideasaday.com/">Fiveideasaday.com</a></li>
<li><a href="https://problemoftheday.co/">Problemoftheday.co</a></li>
<li><a href="https://ideasareworthless.io/">Ideasareworthless.io</a></li>
</ul>
<h3>Ressources répertoriant les produits existants</h3>
<ul>
<li><a href="https://producthunt.com/">Producthunt.com</a></li>
<li><a href="https://betalist.com/">Betalist.com</a></li>
<li><a href="https://ycdb.co/">Ycdb.co</a></li>
<li><a href="https://getlatka.com/">Getlatka.com</a></li>
</ul>
<h2>Comment hiérarchiser nos idées</h2>
<h3>Étape 1 : Définissez vos objectifs</h3>









































<table><thead><tr><th></th><th>Weekend project</th><th>Boostrapped business</th><th>Multimillion-dollar company</th></tr></thead><tbody><tr><td>Profits</td><td>💲</td><td>💲💲</td><td>💲💲💲</td></tr><tr><td>Taille de l&#x27;équipe</td><td>🌚</td><td>🌚🌚</td><td>🌚🌚🌚</td></tr><tr><td>Compétences</td><td>🔧</td><td>🔧🔧</td><td>🔧🔧🔧</td></tr><tr><td>Financement</td><td>💲</td><td>💲💲</td><td>💲💲💲</td></tr><tr><td>Temps</td><td>⌚</td><td>⌚⌚</td><td>⌚⌚⌚</td></tr></tbody></table>
<h3>Étape 2 : Évaluer l&#x27;adéquation avec votre personnalité</h3>
<p>Vous avez maintenant une liste d&#x27;idées qui correspondent au type d&#x27;entreprise que vous souhaitez créer. Alors que nous venons de les évaluer par rapport à des exigences, nous voulons nous assurer que notre idée correspond à notre personnalité.</p>
<h3>Étape 3 : Mettez les idées dans une matrice impact / effort</h3>
<p>Il vous reste maintenant une liste d&#x27;idées qui correspondent au type d&#x27;entreprise que vous souhaitez créer, ainsi qu&#x27;à votre personnalité et à vos valeurs. La dernière étape de l&#x27;évaluation des idées consiste à décider laquelle aura le plus grand impact et exigera le moins d&#x27;efforts. Nous allons mettre chaque idée dans un outil de prise de décision - une matrice impact / effort.</p>
<p><img src="https://i.imgur.com/LhYLFLW.jpg" alt="Matrice impact / effort"/></p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://productideasbook.com/">Artiom Dashinsky - Generating Product Ideas</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[10 façons de gagner de l'argent sur le web en tant que développeur]]></title>
            <description><![CDATA[Découvrez 10 façons de monétiser vos compétences en programmation.]]></description>
            <link>https://johackim.com/10-facons-de-gagner-de-largent-sur-le-web-en-tant-que-developpeur?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/10-facons-de-gagner-de-largent-sur-le-web-en-tant-que-developpeur</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sat, 30 Jan 2021 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/10-facons-de-gagner-de-largent-sur-le-web-en-tant-que-developpeur.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/10-facons-de-gagner-de-largent-sur-le-web-en-tant-que-developpeur.jpg"/>
            <content:encoded><![CDATA[<p>Savoir coder est une compétence fantastique que vous pouvez posséder, mais saviez-vous qu&#x27;il existe plusieurs façons de monétiser vos compétences en programmation ?</p>
<h2>1. Travailler en tant que développeur professionnel</h2>
<p>Travailler pour une entreprise en tant qu&#x27;employé est le moyen le plus courant de générer des revenus en tant que développeur.</p>
<p>Il peut y avoir plusieurs avantages :</p>
<ul>
<li>Avoir un revenu stable pendant que vous apprenez et expérimentez encore</li>
<li>Assurance maladie, pension, vacances payées</li>
<li>Apprendre à travailler sur des projets plus importants avec de grandes codebases</li>
<li>Apprendre des collègues (mentorat formel + mentorat informel)</li>
<li>Avoir une progression de carrière structurée</li>
<li>La réputation de l&#x27;entreprise peut être un signal utile même après votre départ</li>
</ul>
<h2>2. Freelancing</h2>
<p>Il existe plusieurs avantages à devenir freelance.</p>
<h3>Les avantages de devenir freelance</h3>
<ul>
<li>Vous voulez plus de contrôle.</li>
<li>Vous voulez plus de liberté.</li>
<li>Vous voulez un revenu supplémentaire.</li>
<li>Vous voulez plus de temps avec votre famille.</li>
<li>Vous n&#x27;aimez pas votre travail actuel et/ou vous n&#x27;êtes pas assez bien payé.</li>
</ul>
<h3>Quels services pouvez-vous offrir en tant que développeur indépendant ?</h3>
<p>Il est facile d’offrir des services ponctuels, comme la création d’un site Web, mais pouvez-vous en faire un mieux ? Oui.</p>
<p>Comment ?</p>
<p>En offrant des services de conception Web ainsi que des services de marketing.</p>
<p>Oui, vous pouvez proposer des forfaits de maintenance et d&#x27;hébergement, mais la plupart des revenus sont mensuels.</p>
<p>Voici pourquoi il vaut mieux offrir des services de conception Web et de marketing :</p>
<ul>
<li>Cela vous aide à éviter d&#x27;avoir un bon salaire pendant un mois et le mois suivant, d&#x27;être sans client.</li>
<li>Vous offrez un package complet aux clients.</li>
</ul>
<p>La meilleure solution à cela est un revenu mensuel récurrent, et vous pouvez l&#x27;obtenir en offrant également des services de marketing. Quel type de services marketing ?</p>
<ul>
<li>Rédaction de contenu</li>
<li>SEO</li>
<li>Gestion de campagnes AdWords</li>
<li>Gestion des réseaux sociaux</li>
<li>Gestion des publicités sur les réseaux sociaux</li>
<li>Email Marketing</li>
<li>Designs</li>
</ul>
<p>Vous ne connaissez pas le marketing ? Vous pouvez l&#x27;apprendre ou l&#x27;externaliser.</p>
<p>Vous voulez gagner 2 000€ chaque mois :</p>
<ul>
<li>Obtenez 4 clients qui vous paient 500 € par mois.</li>
<li>Obtenez 2 clients qui vous paient 1 000 € par mois.</li>
<li>Obtenez 1 client qui vous paie 2 000 € par mois.</li>
</ul>
<h3>Plateformes pour freelance</h3>
<ul>
<li><a href="https://fiverr.com/">Fiverr</a></li>
<li><a href="https://upwork.com/">UpWork</a></li>
<li><a href="https://talent.hubstaff.com/">HubStaff Talent</a></li>
<li><a href="https://web.archive.org/web/20210227071835/https%3A%2F%2Femployremotely%2Ecom">EmployRemotely</a></li>
<li><a href="https://fr.freelancer.com/">Freelancer</a></li>
<li><a href="https://remoteok.io/">RemoteOK</a></li>
<li><a href="https://toptal.com/">TopTal</a></li>
</ul>
<h3>Comment facturer un site Web ?</h3>
<p>Pour y parvenir, voici les principaux moyens de facturer un site Web :</p>
<ul>
<li>Tarification horaire</li>
<li>Tarification basée sur le projet</li>
<li>Tarification basée sur la valeur</li>
</ul>
<h4>Tarification horaire</h4>
<p>Prenez votre revenu annuel souhaité et divisez-le par les heures que vous souhaitez travailler dans un an (en gardant à l&#x27;esprit les jours de vacances).</p>
<p>Cela pourrait ressembler à ceci :</p>
<p>Travailler <strong>35 heures</strong> par semaine : <strong>75 000 €</strong> (revenu souhaité) / 1 820 heures = <strong>41,20 €</strong> de l&#x27;heure.</p>
<p>Vous devriez donc facturer <strong>45 € de l&#x27;heure</strong> dans ce cas.</p>
<h4>Tarification basée sur le projet</h4>
<p>C&#x27;est à ce moment que vous estimez vos heures travaillées et y ajoutez un tampon. Cela pourrait ressembler à ceci :</p>
<p>Vous estimez que le projet vous prendra 50 heures. 45 € (taux horaire) x 50 heures = 2250 €</p>
<p>Vous pouvez alors facturer 3 000€.</p>
<h4>Tarification basée sur la valeur</h4>
<p>C&#x27;est à ce moment que vous facturez vos frais en fonction du rendement potentiel que l&#x27;entreprise peut réaliser après avoir utilisé vos services.</p>
<p>Vous ne vendez pas seulement un &quot;site Web&quot;, vous vendez une solution pour augmenter les ventes de l&#x27;entreprise.</p>
<ul>
<li>Vous ne vendez pas d&#x27;heures (comme tout le monde le fait) - vous vendez des résultats (ou les résultats potentiels).</li>
<li>Il y a une incitation à rester à jour avec les dernières technologies, logiciels ou outils, afin de faciliter votre travail et de devenir plus efficace.</li>
<li>Cela vous permet de créer quelque chose d&#x27;extraordinaire et de ne pas vous soucier de dépasser le budget souhaité par le client.</li>
<li>Il n&#x27;y a pas de surprises financières cachées aux clients. Vous prenez tous les risques en livrant le projet dans les limites du coût total dont vous avez informé le client.</li>
<li>Vous pouvez travailler avec moins de clients et fournir un meilleur service, car vous gagnez souvent beaucoup plus.</li>
</ul>
<p>De plus, voici pourquoi la facturation horaire est moins bien :</p>
<ul>
<li>Cela décourage l&#x27;efficacité. Il est dans votre intérêt de faire durer un projet. Pourquoi le terminer en une heure alors que vous pouvez en facturer dix ? Pourquoi acheter un plugin ou un extrait de code pour gagner du temps alors que vous pouvez facturer ce temps-là ?</li>
<li>La plupart des désaccords avec les clients sont toujours des litiges concernant le paiement. Vous devez prouver que vous travailliez ou pourquoi vous avez mis si longtemps, etc. Les tracas et le stress de l’administrateur, même avec un logiciel de suivi, ne vaut pas la peine.</li>
</ul>
<h2>3. Blogging</h2>
<p>Gardez à l&#x27;esprit que c&#x27;est la progression est lente. Vous ne verrez peut-être pas beaucoup de progrès au début, mais la régularité est la clé !</p>
<p>Ayez un horaire. Par exemple : 2-3 articles / semaine. Quelque chose d&#x27;assez simple que vous pouvez gérer sans vous épuiser.</p>
<h3>Comment gagner de l&#x27;argent avec un blog ?</h3>
<p>Il existe plusieurs façons de monétiser votre blog :</p>
<h4>Les publicités</h4>
<p>En moyenne, vous recevrez entre 1 et 2 € pour 1 000 impressions.</p>
<p>Si vous souhaitez gagner 1 000€ par mois, cela signifie que vous avez besoin de 500 000 à 1 million d&#x27;impressions. Ce qui n’est pas une tâche facile.</p>
<p>Il existe également les publicités PPC (Pay-per-click) qui peuvent payer entre 0,25€ et 1€ par clic. Ces types d&#x27;annonces paient un peu mieux, mais peu de gens cliquent dessus.</p>
<p>Si vous souhaitez essayer des annonces, vous pouvez essayer <a href="https://carbonads.net/">CarbonAds</a>. Ils fournissent des publicités spécifiquement pour les développeurs et / ou les designers. Avant de postuler, assurez-vous d&#x27;avoir environ 10 000 pages vues par mois sur votre blog. C&#x27;est le montant que vous deviez avoir pour être accepté.</p>
<h4>Affiliation</h4>
<p>Vous pouvez gagner de l&#x27;argent en faisant la promotion des produits et / ou services d&#x27;autres personnes et en échange, ils vous donneront une commission. La commission peut beaucoup varier. De 5% à 60% voire plus.</p>
<h4>Publications sponsorisées</h4>
<p>Lorsque votre audience s&#x27;élargit, vous remarquerez que vous serez contacté par différentes entreprises pour écrire sur leurs produits dans vos articles.</p>
<p>Combien dois-je facturer pour un article sponsorisé ? Cela dépend du nombre de lecteurs que vous avez. Cela dépend du sujet. Cela dépend du type de collaboration que vous entretenez avec l&#x27;entreprise qui souhaite sponsoriser une publication.</p>
<p>En fin de compte, tout est négociable. Faites ce qui vous convient.</p>
<h4>Promouvoir vos propres produits / services</h4>
<p>Garder 100% des revenus de vos produits est mieux que la commission de 50% que vous pourriez recevoir des produits d&#x27;affiliation.</p>
<p>Un excellent moyen de vendre vos propres produits est d&#x27;utiliser Gumroad. Ils s&#x27;occupent de beaucoup de choses comme le paiement, la TVA, l&#x27;envoi du produit une fois que quelqu&#x27;un l&#x27;a acheté, et bien plus encore.</p>
<h4>Être payé pour écrire pour d&#x27;autres publications</h4>
<p>Une fois que vos articles auront commencé à gagner du terrain, vous pourriez bientôt être contacté par différentes publications qui souhaiteraient que vous écriviez pour eux.</p>
<p>Ces publications sont toujours à la recherche de nouveaux contenus, car leurs revenus sont basés sur cela, de sorte qu&#x27;elles contactent souvent les gens pour qu&#x27;elles écrivent pour elles.</p>
<p>Vous pouvez en tirer parti pour :</p>
<ul>
<li>Diffuser son contenu à un nouveau public</li>
<li>Obtenez de l&#x27;expérience pour rédiger une publication, parce qu&#x27;ils peuvent avoir leurs propres « méthodes »</li>
<li>Faire un peu d&#x27;argent</li>
</ul>
<p>Encore une fois, le montant que vous pouvez être payé dépendra de la publication, du sujet, de votre expérience, etc. Faites ce qui vous convient le mieux.</p>
<p>Gardez à l&#x27;esprit que l&#x27;argent n&#x27;est pas la seule chose que vous pourriez obtenir.</p>
<p>L&#x27;opportunité d&#x27;attirer plus de personnes est également précieuse, car certains de ces lecteurs pourraient rester avec vous plus longtemps, ce qui est une bonne chose !</p>
<p>En ce qui concerne le paiement, vous pouvez commencer par facturer 200 à 300 € et au fur et à mesure que vous gagnez en expérience, augmentez vos prix.</p>
<h2>4. Créer une chaine YouTube</h2>
<p>YouTube est le deuxième plus grand moteur de recherche au monde, après Google, ce qui en fait un endroit idéal pour enseigner aux gens et développer une audience en ligne.</p>
<h3>Choisir une niche</h3>
<p>Comme nous l&#x27;avons vu dans la section Blog, il est important d&#x27;avoir une niche spécifique (ou 2 max) au début. Ne sautez pas dans les sujets qui vont embrouiller votre audience.</p>
<p>Créez une série de vidéos sur votre niche. Cela vous mettra lentement en place en tant qu&#x27;expert dans le domaine et YouTube commencera à promouvoir vos vidéos auprès de ceux qui recherchent un contenu similaire.</p>
<h3>Outils à utiliser</h3>
<ul>
<li><a href="https://obsproject.com/fr">OBS</a> pour enregistrer</li>
<li><a href="https://blackmagicdesign.com/fr/products/davinciresolve/">DaVinci Resolve</a> pour monter</li>
</ul>
<p>Le plus important est de publier, le reste n&#x27;est pas important. Prenez exemple sur les gros YouTubeurs en suivant cette règle : &quot;<a href="https://youtube.com/watch?v=OnUBaQ1Sp_E">Make 100 Crappy videos</a>&quot;.</p>
<p>Tant que vous commencez et que vous faites de votre mieux pour vous améliorer un peu à chaque nouvelle vidéo que vous réalisez vous êtes sur la bonne voie !</p>
<h3>Faire de l&#x27;argent sur YouTube</h3>
<h4>Publicités YouTube</h4>
<p>Pour pouvoir placer des annonces sur vos vidéos YouTube, vous devez faire partie du programme de partenariat YouTube et pour postuler au programme dont vous avez besoin :</p>
<ul>
<li>4 000 heures de visionnage public de vos vidéos au cours des 12 derniers mois</li>
<li>1000 abonnés sur votre chaîne</li>
</ul>
<p>Voyons maintenant combien d&#x27;argent vous pouvez gagner avec les publicités...</p>
<p>Il n&#x27;est pas facile de calculer exactement combien d&#x27;argent vous pouvez gagner grâce aux publicités, mais voici une formule approximative que vous pouvez utiliser :</p>
<p>Revenus YouTube = Nombre de vues / 1 000 * RPM</p>
<p>RPM veut dire &quot;Revenu Pour Mille vues&quot;, c&#x27;est-à-dire la somme générée pour 1000 vues sur YouTube.</p>
<p>Le RPM dépend principalement du sujet de vos vidéos et du pays à partir duquel votre Audience regarde les vidéos. Cela dépend aussi du montant que les annonceurs sont prêts à payer pour apparaître devant votre public et du pouvoir d&#x27;achat de votre public.</p>
<p>Il peut être de 2-3€ pour la niche du développement web, 5-6€ sur des chaines de design et 10-15€ sur des chaines de croissance financière.</p>
<p>Un autre paramètre qui affecte vos revenus est le CTR (taux de clics). Combien de personnes cliquent pour regarder vos vidéos à chaque fois que YouTube leur affiche votre contenu. Un CTR élevé se traduit par plus de vues, ce qui rapporte plus d&#x27;argent.</p>
<p>Afin d&#x27;augmenter le CTR, vous devez écrire de bons titres vidéo et avoir une bonne miniature.</p>
<p>Une fois qu&#x27;ils ont cliqué sur votre vidéo, vous devez garder leur attention le plus longtemps possible. C&#x27;est là qu&#x27;intervient la mesure de la durée moyenne de visionnage. Cela correspond au pourcentage de la vidéo que les spectateurs regardent. Une durée élevée permet aux téléspectateurs de regarder plus de publicités et donc de gagner plus d&#x27;argent.</p>
<h4>Abonnements / Donations</h4>
<p>Une autre façon de gagner de l&#x27;argent directement à partir de YouTube consiste à activer les abonnements.</p>
<p>Voici quelques éléments que vous pourriez envisager :</p>
<ul>
<li>Accès aux vidéos avant la sortie publique</li>
<li>Diffusions en direct réservées aux membres</li>
<li>Code source des projets</li>
<li>Accès Discord avec des rôles spéciaux</li>
<li>Mentorat individuel avec vous</li>
<li>Remises sur vos formations/cours en ligne (si vous en avez)</li>
</ul>
<p>Actuellement, pour pouvoir ouvrir des abonnements sur votre chaîne, vous devez avoir plus de 30 000 abonnés et vous devez être situé dans l&#x27;un des <a href="https://support.google.com/youtube/answer/7636690#availability">emplacements disponibles</a>.</p>
<p>Les dons fixes sont également un moyen pour les gens de soutenir votre chaîne. Sur YouTube, ils sont appelés <strong>Super Chats</strong> et <strong>Super Stickers</strong> et ils sont disponibles pendant que vous diffusez en direct. Ceux-ci apparaîtront sous forme de messages colorés spéciaux dans le chat. Différentes couleurs, selon le montant que quelqu&#x27;un donne. Ces messages durent plus longtemps si le montant donné est plus important.</p>
<p>Gardez à l&#x27;esprit que pour les abonnements et les Super Chats, YouTube prendra entre 30% et 50%.</p>
<h4>Affiliation</h4>
<p>Le marketing d&#x27;affiliation consiste à évaluer et/ou recommander un produit ou un service et à percevoir une commission lorsque quelqu&#x27;un achète ce produit/service.</p>
<p>Les programmes d&#x27;affiliation comme des formations, des ebooks, des bundles ou certains services pour les développeurs que vous utilisez.</p>
<p>Gumroad a un excellent marché où vous pouvez trouver des produits numériques que vous pourriez potentiellement utiliser.</p>
<p>Trouvez un produit que vous aimez, contactez les propriétaires et demandez-leur s&#x27;ils souhaitent créer un lien d&#x27;affiliation pour vous.</p>
<p>La plupart du temps, ils seraient heureux de le faire, car vous leur donnez la possibilité de toucher un nouveau public.</p>
<h4>Sponsors</h4>
<p>Plus votre audience augmente et plus l&#x27;engagement de cette audience augmente, plus vous recevrez d&#x27;e-mails de différentes entreprises qui souhaiteront promouvoir leurs produits et services dans vos vidéos.</p>
<p>Il n’existe pas vraiment de formule exacte pour calculer le montant à facturer à un sponsor. Cela dépend de plusieurs facteurs :</p>
<ul>
<li>La taille de votre audience</li>
<li>L&#x27;engagement de votre audience</li>
<li>La marque qui propose le produit / service</li>
<li>L&#x27;accord que vous faites avec eux</li>
<li>La spécificité de votre chaîne et de votre vidéo par rapport au produit (Si vous êtes spécifique, vous valez plus d&#x27;argent)</li>
</ul>
<p>Les offres peuvent aller de 100 à 200 € par vidéo lorsque vous démarrez avec une chaîne plus petite, et elles peuvent aller jusqu&#x27;à 1 000€ (voire plus) une fois que vous avez une marque établie et un public plus large.</p>
<h4>Faites la promotion de vos propres produits</h4>
<p>La promotion de vos propres produits pourrait être le moyen le plus lucratif de gagner de l&#x27;argent sur YouTube. Pourquoi ? Eh bien, parce que vous avez déjà un public à qui vendre et si cela est fait correctement, vous devriez déjà savoir quels sont les besoins de votre public afin de créer la solution parfaite pour eux.</p>
<h2>5. Streamer des sessions de Live coding</h2>
<p>Le Live Coding est probablement l&#x27;un des meilleurs moyens d&#x27;interagir avec votre public et de créer une communauté forte.</p>
<p>Nous savons que derrière chaque créateur de contenu, il y a une personne réelle et nous adorons chaque fois que nous interagissons avec nos créateurs préférés. Nous voulons mieux les connaître et peut-être même avoir la chance de voir quelques-uns des « coulisses ».</p>
<p>Gagner de l&#x27;argent en faisant du Live Coding, c&#x27;est à peu près la même chose que gagner de l&#x27;argent sur YouTube, à quelques exceptions près.</p>
<h3>Donations</h3>
<p>L&#x27;un des moyens les plus simples et les plus couramment utilisés pour gagner de l&#x27;argent au début lors de la diffusion en continu consiste à recevoir des dons de téléspectateurs qui souhaitent soutenir votre travail.</p>
<p>Afin de recevoir un don, vous devez mettre en place un système tiers comme <a href="https://streamlabs.com/">Streamlabs</a> qui vous donne un lien spécial où les gens peuvent faire un don. Une fois qu&#x27;ils le feront, vous recevrez l&#x27;argent directement sur votre compte PayPal.</p>
<p>Vous pouvez offrir différents services ou avantages à ceux qui ont décidé de le faire. Voici quelques exemples :</p>
<ul>
<li>Examiner un portfolio</li>
<li>Travailler sur un projet demandé</li>
<li>Résolvez un défi de codage</li>
</ul>
<p>En outre, vous pouvez configurer des <strong>Goals</strong> pour qu&#x27;ils apparaissent à l&#x27;écran et les téléspectateurs peuvent soutenir votre travail afin d&#x27;atteindre votre objectif.</p>
<p>Des objectifs tels que l&#x27;achat d&#x27;un nouveau PC ou l&#x27;acquisition d&#x27;un nouvel équipement de streaming qui améliorera la qualité de celui-ci pourraient être quelque chose que les gens seraient intéressés à vous aider.</p>
<h3>Bits</h3>
<p>Les bits sont un bien virtuel qui peut être acheté sur Twitch. Pour faire simple, c&#x27;est la devise de Twitch. Les gens peuvent acheter des bits et les donner à leurs streamers préférés.</p>
<p>Pour chaque 100 bits donnés, le créateur reçoit 1€.</p>
<h3>Abonnements</h3>
<p>Les abonnements Twitch sont assez similaires aux abonnements YouTube. Notez le fait que Twitch prend 50% de réduction sur vos revenus d&#x27;abonnement.</p>
<p>En étant Twitch Partner, il parait qu&#x27;il est possible de négocier ce pourcentage.</p>
<h3>Live Streams exclusifs</h3>
<p>Une autre façon de monétiser le streaming consiste à avoir des streams réservés aux membres. Dans ces stream, vous pouvez organiser des sessions spéciales de FAQ où les gens peuvent vous demander tout ce qui concerne un sujet, ou vous pouvez passer en revue leurs projets ou tout ce que vous pouvez penser à faire pour ceux qui sont prêts à vous soutenir mensuellement.</p>
<h2>6. Faire du mentoring en 1-on-1</h2>
<p>Vous pouvez faire des sessions de mentorat payantes.</p>
<p>Par exemple, aider quelqu&#x27;un avec un problème ReactJS. Aider une personne qui a passé environ 2-3 jours à essayer de comprendre pourquoi cela ne fonctionnait pas et qui souhaite volontiers payer votre temps car, en échange, vous l&#x27;aidez à gagner un peu de son temps.</p>
<p>Vous pouvez fournir un formulaire Typeform qui permet de rassembler le plus d&#x27;informations possible avant les appels.</p>
<p>Les prix peuvent aller entre 30€ à 500€ de l&#x27;heure selon votre niveau, votre cible clientèle et la valeur que vous leur apportez.</p>
<p>Vous pouvez utiliser vos propres réseaux sociaux pour proposer ce type de prestation ou passer par des plateformes comme :</p>
<ul>
<li><a href="https://codementor.io/">Code Mentor</a></li>
<li><a href="https://codingcoach.io/">Coding Coach</a> (Gratuit)</li>
</ul>
<h2>7. Créer des cours/formations en ligne</h2>
<h3>Comment créer une formation ?</h3>
<h4>Choisir un sujet</h4>
<p>C&#x27;est l&#x27;une des choses les plus importantes à faire au début avant même de commencer à travailler sur la formation.</p>
<p>Il existe plusieurs façons de vous aider à choisir le sujet à choisir :</p>
<ul>
<li>Choisissez quelque chose dont vous pouvez parler toute la journée. Quelque chose qui vous passionne.</li>
<li>Demandez à votre audience (si vous en avez une) ce qu&#x27;elle aimerait apprendre de vous.</li>
<li>Faites des recherches de marché. Découvrez ce que les gens recherchent.</li>
</ul>
<h4>Créer le plan du cours</h4>
<p>Vous pouvez commencer par faire un «brain dumping» de vos idées pour le cours. Voyez ce que vous pouvez proposer au début sans entrer encore dans les détails. Vous ferez cela plus tard. Déterminez ce que vous voulez que vos modules et leçons portent.</p>
<p>Quelques vidéos que vous pourriez envisager d&#x27;avoir :</p>
<ul>
<li>Qui êtes-vous ?</li>
<li>Quel est le sujet de ce cours ?</li>
<li>Pourquoi est-ce important pour ceux qui veulent l&#x27;acheter ?</li>
<li>Quelle est la structure du cours ?</li>
</ul>
<h3>Avoir une audience</h3>
<p>Il n&#x27;est pas nécessaire d&#x27;avoir une audience pour créer et vendre une formation, mais cela aiderait certainement d&#x27;en avoir une.</p>
<p>Il est recommandé de commencer par un blog ou une chaîne YouTube où vous pouvez développer une audience en fournissant un contenu de qualité.</p>
<p>Il existe des plates-formes comme Udemy ou Skillshare qui peuvent vous aider à promouvoir vos cours auprès de leur audience, mais comme vous pouvez vous y attendre, elles prennent une part de vos revenues.</p>
<p>Il est beaucoup plus facile et plus rentable de vendre à ceux qui vous connaissent déjà.</p>
<p>À titre d&#x27;exemple, si vous vendez vos cours sur Udemy et que vous réalisez des ventes, vous gardez 97% des ventes, mais si les gens vous trouvent de manière organique en parcourant leur marketplace, vous ne gardez que 50%. C&#x27;est parce qu&#x27;ils vous ont aidé à faire la vente.</p>
<p>Il serait préférable de vendre à votre audience directement sur votre plateforme.</p>
<h3>Où vendre vos formations ?</h3>
<p>Il existe plusieurs façons de vendre vos formations.</p>
<h4>Marketplaces</h4>
<p><a href="https://udemy.com/">Udemy</a> et <a href="https://skillshare.com/">Skillshare</a> sont deux grandes marketplace où les gens peuvent acheter des cours sur divers sujets, y compris la programmation.</p>
<p>Vous en avez probablement entendu parler et vous les avez même utilisés pour apprendre une nouvelle compétence.</p>
<p>Comme mentionné précédemment, ces marketplaces ont déjà une large audience, ce qui vous permet de vendre plus facilement vos cours au cas où vous n&#x27;en auriez pas encore.</p>
<p>Sur Udemy, la plupart des formations sont vendues autour de 10-12€ car ils ont des soldes tout le temps.</p>
<p>Skillshare paie en fonction des minutes de visionnage. Plus les gens regardent votre contenu, plus vous gagnez.</p>
<h4>Plateformes de formations</h4>
<p>Podia, Teachable et Thinkific sont des plates-formes qui vous permettent de créer votre propre site Web et sur lequel vous pouvez héberger et vendre vos formations. Ils gèrent à peu près tout ce dont vous avez besoin pour commencer :</p>
<ul>
<li>Hébergement</li>
<li>Lecteur de vidéos</li>
<li>Website builder</li>
<li>Paiements</li>
<li>Intégration des emails</li>
<li>etc...</li>
</ul>
<p>La principale raison d&#x27;utiliser une plate-forme de cours est le contrôle qu&#x27;elle vous donne.</p>
<p>Vous pouvez facturer autant que vous le souhaitez pour votre cours et vous obtenez également les informations de ceux qui se sont inscrits à vos cours afin que vous puissiez les suivre plus facilement.</p>
<p>Le mauvais côté de l&#x27;auto-hébergement est le fait que vous devez faire le marketing vous-même par rapport aux Marketplaces comme Udemy.</p>
<p>Ce n&#x27;est pas si mal si vous avez déjà une audience (un blog, une chaîne YouTube, etc.).</p>
<h4>Créez votre propre plateforme</h4>
<p>Peut-être que vous n&#x27;êtes pas satisfait de ce que les plates-formes mentionnées ci-dessus fournissent, il y a donc toujours le choix de créer la plate-forme entière vous-même à partir de zéro.</p>
<p>Certaines entreprises le font car elles ont besoin de fonctionnalités spécifiques qui ne sont pas fournies par défaut par ces autres plates-formes.</p>
<h3>Marketing</h3>
<p>Une fois que vous avez créé et publié votre cours en ligne, il est temps de diffuser l’actualité. Il ne sert à rien de créer la meilleure formation si personne ne le sait.</p>
<p>Vous pouvez créer une landing page pour promouvoir le cours. Vous pouvez avoir des éléments tels que :</p>
<ul>
<li>Le plan du cours</li>
<li>Raisons pour lesquelles les gens devraient acheter</li>
<li>Témoignages (très puissants)</li>
<li>Section FAQ</li>
<li>Informations sur vous</li>
</ul>
<p>Avant le lancement du cours, vous pouvez configurer un formulaire de newsletter où les gens peuvent soumettre leur e-mail.</p>
<p>Envisagez de donner gratuitement des parties de la formation pour inciter les gens à acheter le cours complet.</p>
<p>Mettre en place une réduction pour une courte période après le lancement est un autre bon moyen d&#x27;inciter les gens à acheter, car nous n&#x27;aimons souvent pas manquer de bonnes affaires. C&#x27;est ce qu&#x27;on appelle la rareté (scarcity) et c&#x27;est utilisé partout pour nous pousser (plus ou moins) à acheter des choses.</p>
<h4>Promotion pré-lancement</h4>
<p>Avoir un lancement est génial car dans les deux premiers jours, cela apportera la majorité des ventes, mais cela finira par ralentir. C’est là que vous avez besoin d’autres moyens de promouvoir le cours.</p>
<p>Rédiger des articles sur votre blog et / ou diffuser des vidéos sur votre chaîne YouTube sur certains des sujets que vous avez abordés dans le cours est un excellent moyen de le promouvoir.</p>
<p>Par exemple, si vous avez une formation JavaScript, vous pouvez faire différents tutoriels JavaScript pour votre chaîne YouTube et à l&#x27;intérieur de ces vidéos, vous pouvez mentionner votre formation.</p>
<p>Vous ne savez jamais quand YouTube décide d&#x27;en faire une vidéo virale et que vos ventes peuvent reprendre.</p>
<p>Laissez YouTube et / ou Google (si vous avez un blog) travailler en votre faveur et vous aider à mettre en place ce flux juteux de revenus (relativement) passifs.</p>
<h4>Avoir des affiliés</h4>
<p>Une autre façon de générer plus de ventes consiste à créer des affiliés pour votre cours.</p>
<p>La majorité des plates-formes que nous avons mentionnées ci-dessus vous permettent de le faire et elles s&#x27;occupent à peu près de tout.</p>
<p>Une fois que cela est fait, contactez des personnes qui ont un public plus large dans un créneau similaire et proposez-leur de devenir affilié pour votre formation, et pour chaque vente qu&#x27;ils réalisent, vous gagnez tous les deux de l&#x27;argent. Win-win.</p>
<h2>8. Créer des produits numériques</h2>
<p>En ce qui concerne votre niche, la programmation, vous pouvez créer de nombreux produits différents. Si le produit est précieux et qu&#x27;il aide les autres à gagner du temps et / ou de l&#x27;argent, vous avez un produit à vendre !</p>
<p>Voici quelques exemples :</p>
<ul>
<li>Plugins (WordPress, Shopify, Drupal)</li>
<li>Composants (in React, Angular, Vue, Bootstrap)</li>
<li>Bibliothèques</li>
<li>Kits (Design Kits, Component Kits)</li>
<li>Thèmes (WordPress, Shopify, Drupal)</li>
<li>Templates (HTML5, Bootstrap, Tailwind)</li>
<li>eBooks</li>
<li>Formation</li>
<li>Logiciel</li>
<li>Applications Web et applications mobiles</li>
<li>etc...</li>
</ul>
<p>Vous pouvez trouver divers exemples sur des marketplaces comme <a href="https://creative-tim.com/">Creative-Tim</a>, <a href="https://gumroad.com/discover">Gumroad</a>, <a href="https://themeforest.net/">ThemeForest</a> et <a href="https://codecanyon.net/">CodeCanyon</a>.</p>
<h3>Pourquoi des produits numériques ?</h3>
<p>Les produits numériques présentent de nombreux avantages par rapport à leurs homologues physiques. Avec les produits numériques :</p>
<ul>
<li>Vous pouvez vendre des copies infinies alors que le coût de production / réplication est inexistant (la plupart du temps). Après tout, c&#x27;est juste une copie du produit initial.</li>
<li>Les clients reçoivent le produit immédiatement après l&#x27;avoir acheté, soit par e-mail ou via un lien personnalisé où ils peuvent télécharger le produit directement.</li>
<li>Vous pouvez utiliser l&#x27;argent que vous auriez payé pour produire le produit physique (fabricants, main-d&#x27;œuvre, etc.) pour la publicité et la commercialisation du produit numérique.</li>
</ul>
<h3>Où vendre ?</h3>
<p>Vous pouvez utiliser Gumroad :</p>
<ul>
<li>Il a un processus de paiement simple.</li>
<li>Gère la TVA.</li>
<li>Vous pouvez créer votre propre liste e-mail et en avoir le contrôle.</li>
<li>Vous pouvez avoir des affiliés et leur demander de vendre vos produits en échange d&#x27;une commission.</li>
<li>Bon système analytiques des clients et des ventes.</li>
</ul>
<p>De plus, vous pouvez facilement intégrer Gumroad à votre propre site Web / blog pour que vos clients puissent acheter directement, sans avoir à quitter votre plateforme.</p>
<h3>Groupez vos produits</h3>
<p>Dans certains cas, vous pouvez trouver d&#x27;autres créateurs qui proposent un produit complémentaire qui pourrait très bien être combiné avec votre produit afin que vous puissiez faire équipe et vendre un ensemble contenant les deux produits avec une petite remise. De cette façon, vous pouvez tirer parti de vos deux publics.</p>
<p>Exemple: Killer Design + Efficient Development = <code>$$$</code></p>
<h2>9. Faire des contributions open-source</h2>
<p>Il existe plusieurs manières d&#x27;être rémunéré pour nos contributions <a href="/open-source" title="open-source" class="not-found">open-source</a>.</p>

<p>Un exemple notable est <a href="https://patreon.com/">Patreon</a> via un don mensuel ou, encore mieux, GitHub a récemment lancé <a href="https://github.com/sponsors">GitHub Sponsors</a>, qui est un autre excellent moyen d&#x27;obtenir du soutien.</p>
<p>Ce qui est génial avec les sponsors GitHub, c&#x27;est qu&#x27;il n&#x27;y a pas de commissions, ce qui signifie que vous pouvez conserver l&#x27;intégralité du don, contrairement à Patreon, qui conserve un pourcentage de chaque don.</p>
<p>Une autre chose que certaines personnes (et même des entreprises) font après avoir créé un projet Open Source réussi est de créer une <strong>version Premium du projet</strong> contenant des fonctionnalités et des avantages supplémentaires pour lesquels ils facturent de l&#x27;argent.</p>
<p>Un bon exemple est TailwindCSS, un framework CSS.</p>
<p>Une fois que le projet a décollé et est devenu populaire, ils ont créé un produit payant appelé TailwindUI qui contient plusieurs composants d&#x27;interface utilisateur construits à l&#x27;aide de TailwindCSS.</p>
<p>Enfin, vous pouvez également monétiser un projet Open Source en ajoutant dans le README ou site du projet des bannières sponsorisées, produits d&#x27;affiliation, promotion de vos propres produits et même vendre des produits dérivés (merchandising).</p>
<p>Puis sans nécessairement avoir de l&#x27;argent, il y a aussi d&#x27;autres avantages que vous pourriez obtenir à la place :</p>
<ul>
<li>Élargir votre présence en ligne et développer votre marque personnelle</li>
<li>Se démarquer des autres lors d&#x27;un recrutement pour un emploi</li>
<li>Impressionnez vos clients potentiels quand vous travaillez en freelance</li>
</ul>
<h2>10. Créer un SaaS (Software as a Service)</h2>
<p>Le terme Software-as-a-Service (ou SaaS) fait référence à un produit logiciel hébergé sous licence avec un abonnement.</p>
<p>De bons exemples de produits SaaS populaires sont :</p>
<ul>
<li>Jira</li>
<li>Trello</li>
<li>Basecamp</li>
<li>Figma</li>
<li>Slack</li>
<li>Dropbox</li>
</ul>
<p>Une autre définition (plus informelle) d&#x27;un produit SaaS est qu&#x27;il est utilisé pour résoudre un problème sur demande.</p>
<p>Selon cette définition, Netflix et Spotify ne sont pas classés comme des produits SaaS, même si les utilisateurs paient pour l&#x27;accès sur une base récurrente.</p>
<p>Ils vendent une licence pour accéder à des films, des émissions de télévision, de la musique et des podcasts, mais ils ne sont pas considérés comme des outils que vous utilisez pour résoudre un problème.</p>
<p>Les logiciels tels qu&#x27;Adobe Photoshop, Sketch et Pro Tools ne sont pas non plus classés comme SaaS.</p>
<p>Même si vous les payez sur une base récurrente, ils ne sont pas hébergés de manière centralisée.</p>
<p>Au lieu de cela, ils sont distribués via des fichiers exécutables (c&#x27;est-à-dire qu&#x27;il s&#x27;agit de logiciels que vous installez sur votre ordinateur).</p>
<p>Sur Twitter, il y a plusieurs bons exemples de SaaS :</p>
<ul>
<li><a href="https://twitter.com/simonhoiberg">Simon Høiberg</a> qui a créé <a href="https://web.archive.org/web/20210123095701/https%3A%2F%2Fsigmetic%2Eio">Sigmetic</a> lors du défi <a href="https://web.archive.org/web/20201101052701/https%3A%2F%2F100daysoftechstartup%2Ecom">100DaysOfTechStartup</a></li>
<li><a href="https://twitter.com/dvassallo">Daniel Vassallo</a> qui construit actuellement <a href="https://userbase.com/">Userbase</a></li>
</ul>
<p>Ce sont des personnes ayant des compétences en logiciel qui ont créé leurs propres produits SaaS, les ont commercialisées via Twitter et qui gagnent maintenant de l&#x27;argent grâce à leurs produits.</p>
<p>Malheureusement, la concurrence est extrême. Il y a des pays en développement qui peuvent fournir des logiciels presque gratuitement.</p>
<p>Et il est vraiment difficile de trouver une bonne idée qui n’a pas encore été envisagée.</p>
<p>Si votre idée est unique et n’a pas encore été élaborée, il y a de fortes chances que ce soit parce que personne ne s’y intéresse.</p>
<p>Neuf startups sur dix échouent. La raison la plus courante est que la startup construit quelque chose qui n&#x27;intéresse personne et qui fini par manquer de temps et d&#x27;argent.</p>
<p>Trouver une idée de produit SaaS peut être un défi. Vous rencontrez généralement l&#x27;une des deux situations suivantes:</p>
<ol>
<li>Soit l’idée est prise, et il existe déjà un énorme acteur.</li>
<li>L&#x27;idée est nouvelle, donc il n&#x27;existe aucun marché</li>
</ol>
<h3>Choisir le modèle de tarification</h3>
<p>Lors de l&#x27;exécution d&#x27;un produit SaaS, vous devez choisir un modèle de tarification. Les modèles de tarification suivants sont couramment utilisés.</p>
<h4>Tarification basée sur l&#x27;utilisation</h4>
<p>Avec ce modèle de tarification, le prix augmente avec l&#x27;utilisation. Par exemple, ce modèle est utilisé par AWS lorsqu&#x27;ils facturent toutes les 100ms d&#x27;exécution d&#x27;une Cloud Function.</p>
<h4>Tarification par utilisateur</h4>
<p>Avec ce modèle de tarification, les entreprises facturent un taux fixe par mois pour chaque utilisateur d&#x27;un compte. Par exemple, Slack l&#x27;utilise pour sa version payante.</p>
<h4>Tarification forfaitaire</h4>
<p>C&#x27;est le modèle le plus couramment utilisé. Un produit à un prix. Le prix est le même pour tous les utilisateurs et tous les utilisateurs bénéficient du même ensemble de fonctionnalités.</p>
<h4>Freemium et Trial</h4>
<p>Parallèlement aux modèles de tarification ci-dessus, il est courant de les combiner avec :</p>
<ul>
<li>Un modèle freemium où une partie du logiciel est gratuite et illimitée.</li>
<li>Une version d&#x27;essai du logiciel où le logiciel complet est gratuit et illimité pendant une période de temps, le plus souvent 30 jours.</li>
</ul>
<p>Choisir le bon modèle de tarification et le bon prix peut être difficile, le plus souvent, cela nécessite plusieurs itérations.</p>
<p>L&#x27;outil de feedback client <a href="https://canny.io/">Canny</a> rencontrait ces problèmes au début. La fondatrice de Canny, Sarah Hum, a écrit <a href="https://indiehackers.com/@sarah/saas-pricing-lessons-from-4-pricing-changes-2bcd2bc3de">un excellent article sur IndieHackers</a> sur son expérience.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://gumroad.com/l/makemoneydev">Ten++ Ways to Make Money as a Developer - Florin Pop</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Stratégie océan bleu]]></title>
            <description><![CDATA[Comment créer un espace de marché incontesté et mettre la concurrence hors-jeu ?]]></description>
            <link>https://johackim.com/strategie-ocean-bleu?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/strategie-ocean-bleu</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 22 Jan 2021 11:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/strategie-ocean-bleu.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/strategie-ocean-bleu.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/eR23uST.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/Gnu4vc7.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/nq9NqDQ.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/qsLFqvN.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/NkNVoJn.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/2cAKDLI.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/ZCceSTc.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/Fg2qq00.jpg"/><p>Comment créer un espace de marché incontesté et mettre la concurrence hors-jeu ?</p>
<h2>La stratégie de l&#x27;océan bleu</h2>
<p>La stratégie océan bleu met l&#x27;entreprise au défi de sortir de l&#x27;océan rouge de la concurrence grâce à la création d&#x27;un espace stratégique vierge qui rend cette concurrence nulle et non avenue.</p>
<p>Elle vous pousse à élargir la demande et à tourner le dos à vos concurrents.</p>
<blockquote>
<p>La meilleure façon de battre vos concurrents est d&#x27;arrêter d&#x27;être en compétition contre eux.</p>
</blockquote>
<p>En d&#x27;autres termes, lorsque vous vous affrontez à des rivaux pour une part du marché existant, c&#x27;est comme si vous vous trouviez dans un &quot;océan rouge&quot; - où la façon dont vous vous affrontez consiste à évaluer vos concurrents et à essayer de les surpasser.</p>
<p><strong>Une bien meilleure stratégie consiste à rechercher les &quot;océans bleus&quot;, c&#x27;est-à-dire des marchés inexploités que personne n&#x27;a jamais ciblés et qui présentent un potentiel de croissance énorme.</strong></p>
<p>Dans les océans rouges, ce sont vos concurrents qui fixent l&#x27;ordre du jour. Dans les océans bleus, vos concurrents n&#x27;ont plus aucune importance, les règles du jeu sont encore à définir.</p>
<h2>L&#x27;innovation valeur</h2>
<p>Il s&#x27;agit d&#x27;opérer un saut de valeur, tant pour l&#x27;acheteur que du point de vue de l&#x27;entreprise, qui permet de mettre la concurrence hors-jeu en créant un nouvel espace stratégique non disputé.</p>
<p>L&#x27;innovation-valeur ne se produit que lorsque l&#x27;entreprise met ses efforts d&#x27;innovation en phase avec ses impératifs en matière d&#x27;utilité, de prix et de coûts.</p>
<p><img src="https://i.imgur.com/eR23uST.jpg" alt="Innovation valeur"/></p>
<p>Il s&#x27;agit de mener de front la réduction des coûts et l&#x27;augmentation de la valeur pour l&#x27;acheteur.</p>

























<table><thead><tr><th>Stratégie océan rouge</th><th>Stratégie océan bleu</th></tr></thead><tbody><tr><td>Agir au sein de l&#x27;espace stratégique existant</td><td>Créer un espace stratégique nouveau</td></tr><tr><td>Exploiter la demande existante</td><td>Créer et conquérir une demande nouvelle</td></tr><tr><td>Accepter l&#x27;arbitrage entre valeur et domination par les coûts</td><td>Sortir de l&#x27;arbitrage entre valeur et domination par les coûts</td></tr><tr><td>Mettre l&#x27;ensemble des activités de l&#x27;entreprise en conformité avec son choix stratégique de différenciation ou de domination par les coûts</td><td>Mettre l&#x27;ensemble des activités de l&#x27;entreprise en conformité avec son choix stratégique de différenciation et de domination par les coûts</td></tr></tbody></table>
<h2>Le canevas stratégique</h2>
<p>Le canevas stratégique est à la fois un diagnostic et un outil d&#x27;action.</p>
<p>Il représente l&#x27;état actuel de la concurrence dans l&#x27;espace stratégique connu. Il indique les dans quels domaines vos compétiteurs investissent, les critères autour desquels la concurrence se joue.</p>
<p><img src="https://i.imgur.com/Gnu4vc7.jpg" alt="Le canevas stratégique de Yellow Tail"/></p>
<p>Pour redessiner le canevas stratégique de votre secteur d&#x27;activité, il faut commencer par un déplacement des priorités : oublier vos rivaux pour vous concentrer sur les <em>alternatives</em>, et vous désintéresser des clients pour vous intéresser aux <em>non-clients</em>.</p>
<p>Il faut résister à la logique traditionnelle qui consiste à étudier vos concurrents existants puis à choisir entre différenciation et domination pour les coûts.</p>
<h2>La grille des quatre actions</h2>
<p>Pour sortir de l&#x27;arbitrage entre différenciation et domination par les coûts, il faut se poser quatre questions clés sur la logique stratégique et le modèle économique de tout secteur d&#x27;activité.</p>
<p><img src="https://i.imgur.com/nq9NqDQ.jpg" alt="La grille des quatre actions"/></p>
<p>Chaque industrie a ses propres facteurs qui sont considérés comme allant de soi, et qui constituent le prix d&#x27;entrée.</p>
<p>Avec le temps, il peut y avoir un changement fondamental dans ce que les clients apprécient, et les produits et services actuels offerts peuvent, en fait, être surdimensionnés et donc trop chers.</p>
<p>En posant ces quatre questions clés, vous mettez en évidence les facteurs de concurrence qui ne sont plus pertinents.</p>
<p>Vous découvrez également tout compromis implicite que les clients ont pu être contraints de faire dans le passé.</p>
<h2>La matrice exclure-atténuer-renforcer-créer</h2>
<p>Il y a un troisième outil qui est complémentaire à la grille des quatre actions : la matrice exclure-atténuer-renforcer-créer.</p>
<p><img src="https://i.imgur.com/qsLFqvN.jpg" alt="La matrice exclure-atténuer-renforcer-créer de Yellow Tail"/></p>
<p>Elle apporte quatre grands avantages :</p>
<ol>
<li>Elle incite à rechercher simultanément la différenciation et la domination par les coûts, à sortir donc de l&#x27;arbitrage entre ces deux stratégies de base.</li>
<li>Elle envoie aussitôt un signal d&#x27;avertissement à toutes les entreprises, et elles sont nombreuses, qui se soucient uniquement du renforcement et de la création, au prix d&#x27;un perfectionnement excessif des produits et des services.</li>
<li>Aisément compréhensible par les cadres de tous les niveaux, elle favorise l&#x27;investissement de chacun dans sa mise en application.</li>
<li>En raison de la difficulté de l&#x27;exercice, la matrice pousse l&#x27;entreprise à examiner à fond l&#x27;ensemble des critères autour desquels la concurrence se joue et à découvrir ainsi toute la gamme des idées reçues qui orientent à son insu ses efforts compétitifs.</li>
</ol>
<h2>Redessiner les frontières entre marchés</h2>
<ul>
<li><strong>Piste n°1 : explorer les solutions alternatives présentes sur le marché.</strong></li>
</ul>
<p>Déterminer quels produits et services ont des formes différentes, mais atteignent le même objectif.</p>
<p>Les clients font généralement des compromis entre les industries alternatives.</p>
<p>L&#x27;espace entre ces industries peut offrir d&#x27;importantes opportunités d&#x27;innovation de valeur.</p>
<p>Par exemple, NetJets combine la rapidité et la commodité des voyages aériens commerciaux avec les faibles coûts fixes de la copropriété utilisée dans d&#x27;autres industries.</p>
<ul>
<li><strong>Piste n°2 : explorer les différents groupes stratégiques du secteur.</strong></li>
</ul>
<p>Regardez à travers les groupes stratégiques au sein d&#x27;un secteur et comprenez quels facteurs déterminent la décision du client quant au groupe auquel il appartiendra.</p>
<p>En offrant les principaux facteurs déterminants de chaque groupe et en éliminant tout le reste, un océan bleu peut s&#x27;ouvrir.</p>
<p>Par exemple, Lexus propose la qualité d&#x27;une Mercedes, BMW ou Jaguar haut de gamme à un prix plus proche de celui d&#x27;une Cadillac ou d&#x27;une Lincoln.</p>
<ul>
<li><strong>Piste n°3 : explorer la chaîne des acheteurs-utilisateurs.</strong></li>
</ul>
<p>Regardez à travers la chaîne des acheteurs - et combinez leurs différentes définitions de la valeur.</p>
<p>Les acheteurs, les utilisateurs et les influenceurs auront tous des définitions différentes de la bonne valeur.</p>
<p>Si vous remettez en question la sagesse conventionnelle quant à savoir qui est l&#x27;acheteur cible, les océans bleus peuvent s&#x27;ouvrir.</p>
<p>Par exemple, Canon a développé de petits photocopieurs de bureau en changeant leur orientation des acheteurs d&#x27;entreprise aux utilisateurs qui aimaient l&#x27;idée de leur propre photocopieur personnel à leur bureau.</p>
<ul>
<li><strong>Piste n°4 : explorer les produits et services complémentaires.</strong></li>
</ul>
<p>Recherchez des offres de produits et de services complémentaires et trouvez une solution complète.</p>
<p>Si les cinémas faisaient cela, ils pourraient créer un océan bleu en offrant un service de garde d&#x27;enfants afin que les gens puissent aller au cinéma.</p>
<p>De la même manière, Barnes &amp; Noble est passé de la vente de livres à la création d&#x27;un environnement qui célèbre la lecture et l&#x27;apprentissage.</p>
<p>Vous pouvez identifier les sources de désagrément comme les sacs des aspirateurs ou les dépôts de calcaire dans les bouilloires et proposez une offre où vous supprimez ces désagréments ; un aspirateur sans sac (Dyson) et une bouilloire avec filtre (Philips).</p>
<p>Dans quel cadre votre produit est-il utilisé ? Que se passe-t-il avant, pendant et après son utilisation ? Avez-vous identifié les sources de désagrément ? Pourriez-vous les supprimer au moyen d&#x27;une offre de produits ou de services complémentaires ?</p>
<ul>
<li><strong>Piste n°5 : explorer le contenu fonctionnel ou émotionnel du secteur.</strong></li>
</ul>
<p>Dans certains secteurs, l&#x27;accent est mis sur le prix et l&#x27;attrait fonctionnel ou utilitaire de l&#x27;offre : c&#x27;est l&#x27;orientation rationnelle.</p>
<p>Dans d&#x27;autres, les acteurs font plutôt jouer le ressort de l&#x27;émotionnel.</p>
<p>Regardez à travers l&#x27;attrait fonctionnel ou émotionnel - et remettez en question l&#x27;orientation de votre secteur.</p>
<p>Injectez des éléments émotionnels dans un produit traditionnellement commercialisé selon des principes fonctionnels. C&#x27;est ce que Swatch a fait avec des résultats impressionnants.</p>
<p>Ou, vous pourriez aller dans la direction opposée. Transformez votre industrie de la motivation émotionnelle à celle de la fonctionnalité et du non-sens. C&#x27;est ce que Body Shop et QB House ont fait avec succès.</p>
<p>À l&#x27;heure actuelle, des opportunités d&#x27;océan bleu sont créées dans un certain nombre d&#x27;industries de services alors qu&#x27;elles passent d&#x27;une base émotionnelle ou relationnelle à une orientation beaucoup plus fonctionnelle.</p>
<ul>
<li><strong>Piste n°6 : explorer le temps par projection des grandes tendances.</strong></li>
</ul>
<p>Regardez à travers le temps - et anticipez ce qui sera le résultat lorsque la nouvelle technologie sera amenée à sa conclusion logique.</p>
<p>Souvent, la manière dont votre secteur génère de la valeur évolue rapidement.</p>
<p>Les opportunités de l&#x27;océan bleu se présentent si vous travaillez à rebours et identifiez ce qui doit être changé aujourd&#x27;hui pour débloquer un nouvel océan bleu.</p>
<p>Par exemple, l’inspiration d’Apple pour l’i-Pod est le succès de Napster.</p>
<p>Il était clair qu&#x27;il y avait une demande des consommateurs et une technologie disponible pour télécharger de la musique numériquement.</p>
<p>Apple a fourni un moyen légal, simple et bon marché d&#x27;accéder à la musique et a ainsi pu accéder à un marché de l&#x27;océan bleu important.</p>
<p>Quelles tendances actuelles vous semblent irréversibles, orientées dans un sens clair et susceptibles d&#x27;influencer l&#x27;avenir de votre secteur d&#x27;activité ? En quoi cette influence consisterait-elle ? Et comment en profiter pour offrir au client une utilité sans précédent ?</p>
<p><img src="https://i.imgur.com/NkNVoJn.jpg" alt="De la concurrence frontale à la création d&#x27;océans bleus"/></p>
<h2>Viser au-delà de la demande existante</h2>
<p><img src="https://i.imgur.com/2cAKDLI.jpg" alt="Les trois cercles de non-clients"/></p>
<p>Viser au-delà de la demande existante, c&#x27;est mettre les non-clients avant les clients.</p>
<p>Et au lieu de se concentrer sur les différences entre acheteurs, il faudrait s&#x27;appuyer sur les éléments communs à toutes les préférences exprimées.</p>
<p>C&#x27;est exactement ce qu&#x27;a fait Callaway Golf. Les décideurs de Callaway ont suscité une demande nouvelle à partir de cette question : pourquoi tant d&#x27;amateurs de sport et de plein air boudent-ils le golf ? Ils se sont aperçus que ces abstentionnistes présentaient un trait commun : frapper la balle leur semblait trop difficile. À cause de la petite taille des têtes de club, cela requérait une coordination main-eil extraordinaire, un long entrainement et une concentration intense.</p>
<p>C&#x27;est à partir de ce constat que Callaway a pu susciter une nouvelle demande pour son offre. La solution s&#x27;appelait Big Bertha, club dont la face agrandie facilitait le contact avec la balle.</p>
<p>Recherchez le dénominateur commun de toutes les réactions des non-clients sur les offres existantes et dessus.</p>
<h2>Le séquencement d&#x27;une stratégie océan bleu</h2>
<p>Le prochain défi dans l’exploitation du marché de l’océan bleu que vous avez créé est de créer un modèle commercial solide qui vous permettra de tirer profit de votre idée. Pour ce faire, il est important de bien définir votre séquence stratégique au fur et à mesure que vous l&#x27;étoffez, puis de valider la viabilité commerciale de votre idée de l&#x27;océan bleu. Si vous obtenez cette séquence correctement, les risques liés à votre modèle d&#x27;entreprise seront réduits.</p>
<p><img src="https://i.imgur.com/ZCceSTc.jpg" alt="Le séquencement d&#x27;une stratégie océan bleu"/></p>
<p>Votre point de départ est l&#x27;utilité pour l&#x27;acheteur. Votre offre est-elle exceptionnellement avantageuse ? La masse des acheteurs potentiels auraient-ils un motif puissant pour la choisir ? Si votre réponse est « non », il n&#x27;y a plus de stratégie océan bleu. Dans ce cas, une seule alternative : mettre l&#x27;idée au rebut ou la retravailler jusqu&#x27;à ce que vous puissiez répondre par l&#x27;affirmative.</p>
<h2>Le tableau d&#x27;utilité pour l&#x27;acheteur</h2>
<p><img src="https://i.imgur.com/Fg2qq00.jpg" alt="Le tableau de l&#x27;utilité pour l&#x27;acheteur"/></p>
<p>Découvrez les obstacles à l&#x27;utilité pour l&#x27;acheteur en répondant à ces questions pour chaque étape :</p>
<h3>1. Achat</h3>
<ul>
<li>Combien de temps faut-il pour trouve un bon produit ?</li>
<li>Le lieu d&#x27;achat est-il agréable et accessible ?</li>
<li>La transaction se déroule-t-elle dans un environnement sûr ?</li>
<li>L&#x27;achat peut-il s&#x27;effectuer rapidement ?</li>
</ul>
<h3>2. Livraison</h3>
<ul>
<li>Quels sont les détails de livraison ?</li>
<li>Est-il difficile de déballer et d&#x27;installer le produit ?</li>
<li>L&#x27;acheteur doit-il s&#x27;occuper lui-même de la livraison ? Et si oui, est-ce couteux et difficile ?</li>
</ul>
<h3>3. Utilisation</h3>
<ul>
<li>A-t-on besoin d&#x27;une formation ou de l&#x27;assistance de spécialistes avant de pouvoir utiliser le produit ?</li>
<li>Le produit est-il facile à ranger quand on ne s&#x27;en sert pas ?</li>
<li>Les fonctionnalités du produit sont-elles efficaces ?</li>
<li>Le produit (ou le service) offre-t-il des capacités ou des options allant bien au-delà des besoins de l&#x27;utilisateur moyen ? Y a-t-il trop d&#x27;accessoires fantaisie ?</li>
</ul>
<h3>4. Compléments</h3>
<ul>
<li>Faut-il avoir d&#x27;autres produits ou services pour pouvoir utiliser ce produit ?</li>
<li>Si oui, sont-ils coûteux ?</li>
<li>Combien de temps faut-il leur consacrer ?</li>
<li>Sont-ils source de désagréments ?</li>
<li>Sont-ils faciles à obtenir ?</li>
</ul>
<h3>5. Entretien</h3>
<ul>
<li>Le produit demande-t-il un service d&#x27;entretien externe ?</li>
<li>L&#x27;entretien et la mise à niveau sont-ils faciles ?</li>
<li>L&#x27;entretien coûte-t-il cher ?</li>
</ul>
<h3>6. Élimination</h3>
<ul>
<li>L&#x27;utilisation du produit occasionne-t-elle des déchets ?</li>
<li>Le produit est-il facile à éliminer ?</li>
<li>L&#x27;élimination en toute sécurité du produit pose-t-elle des problèmes réglementaires ou environnementaux ?</li>
<li>L&#x27;élimination coûte-t-elle cher ?</li>
</ul>
<h2>Renouveler les océans bleus</h2>
<p>Créer un océan bleu n&#x27;est pas un aboutissement statique, mais un processus dynamique. Dès lors qu&#x27;une entreprise obtient d&#x27;excellents résultats avec un océan bleu, et que cela se sait, des imitateurs apparaîtront tôt ou tard à l&#x27;horizon. Ici, les questions à se poser sont :</p>
<ul>
<li>Combien de temps mettront-ils pour venir ?</li>
<li>À quel point une stratégie océan bleu est-elle facile ou difficile à imiter ?</li>
<li>Autrement dit, quelles sont les barrières à l&#x27;imitation ?</li>
</ul>
<h3>Barrière d&#x27;alignement</h3>
<p>L&#x27;alignement des trois propositions stratégiques :</p>
<ul>
<li>proposition de valeur</li>
<li>proposition de profit</li>
<li>proposition humaine</li>
</ul>
<p>Au sein d&#x27;un système intégré à la fois autour de la différenciation et des économies de coût apporte de la durabilité et forme ainsi une barrière formidable face à l&#x27;imitation.</p>
<h3>Barrière cognitive et organisationnelle</h3>
<ul>
<li>L&#x27;innovation-valeur semble absurde selon la logique tradionnelle des entreprises.</li>
<li>L&#x27;imitation requiert souvent d&#x27;importants changements dans l&#x27;organisation</li>
</ul>
<h3>Barrière de la marque</h3>
<ul>
<li>La stratégie océan bleu peut entrer en conflit avec l&#x27;image de marque d&#x27;autres entreprises.</li>
<li>Les entreprises qui apportent une innovation-valeur acquièrent de la notoriété et une clientèle fidèle qui tendent à dissuader les imitateurs.</li>
</ul>
<h3>Barrière économique et juridique</h3>
<ul>
<li>Monopole naturel : souvent, le marché ne peut faire vivre un second acteur.</li>
<li>L&#x27;innovation-valeur se traduit par des volumes élevés, engendrant vite un avantage de coût, qui lui-même dissuade les suiveurs d&#x27;entrer sur le marché</li>
<li>Des externalités de réseau dissuadent l&#x27;imitation.</li>
<li>Des brevets ou autorisations juridiques bloquent l&#x27;imitation.</li>
</ul>
<p>Quand la concurrence devient dure et que l&#x27;offre totale excède la demande, une lutte sanglante s&#x27;engage : l&#x27;océan va devenir rouge. Face à la convergence des courbes de valeur de ses concurrents, l&#x27;entreprise devrait commencer à rechercher une autre innovation-valeur afin de créer un nouvel océan bleu. Ainsi, en traçant sa courbe de valeur sur le canevas stratégique et en recalculant de temps en temps celle de ses concurrents par rapport à la sienne, elle parviendra à visualiser leur degré d&#x27;imitation et donc de convergence des courbes de valeur ainsi que le niveau de rougissement de son océan bleu.</p>
<h2>Éviter les pièges des océans rouges</h2>
<p><strong>Piège océan rouge n°1</strong> : croire qu&#x27;une stratégie océan bleu est une stratégie orientée client qui consiste à se laisser guider par la clientèle</p>
<p><strong>Piège océan rouge n°2</strong> : croire que pour créer des océans bleus, il faut s&#x27;aventurer hors de son cœur de métier</p>
<p><strong>Piège océan rouge n°3</strong> : s&#x27;imaginer que la stratégie océan bleu est consubstantielle aux nouvelles technologies</p>
<p><strong>Piège océan rouge n°4</strong> : s&#x27;imaginer que pour créer un océan bleu, il faut être le premier sur le marché</p>
<p><strong>Piège océan rouge n°5</strong> : croire que stratégie océan bleu et stratégie de différenciation sont synonymes</p>
<p><strong>Piège océan rouge n°6</strong> : présumer que la stratégie océan bleu est une stratégie de coût bas centrée sur la réduction des prix</p>
<p><strong>Piège océan rouge n°7</strong> : croire que la stratégie océan bleu est la même chose que l&#x27;innovation</p>
<p><strong>Piège océan rouge n°8</strong> : croire que la stratégie océan bleu est une théorie du marketing et une stratégie de niche</p>
<p><strong>Piège océan rouge n°9</strong> : croire qu&#x27;une stratégie océan bleu considère la concurrence comme mauvaise, alors qu&#x27;en fait elle peut être bonne pour les entreprises</p>
<p><strong>Piège océan rouge n°10</strong> : croire que la stratégie océan bleu est synonyme de destruction créatrice ou de rupture</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://placedeslibraires.fr/livre/9782744066306-strategie-ocean-bleu-comment-creer-de-nouveaux-espaces-strategiques-2e-edition-w-chan-kim-renee-mauborgne/">Stratégie océan bleu - Chan Kim</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Supprimer la voix d'une musique]]></title>
            <description><![CDATA[Je viens de découvrir un outil open-source créé par Deezer qui s'appelle spleeter. Il permet de supprimer le chant d'une musique.]]></description>
            <link>https://johackim.com/supprimer-voix-musique?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/supprimer-voix-musique</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 07 Jan 2021 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/supprimer-voix-musique.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/supprimer-voix-musique.jpg"/>
            <content:encoded><![CDATA[<p>Je viens de découvrir un outil open-source créé par Deezer qui s&#x27;appelle <a href="https://github.com/deezer/spleeter">spleeter</a>. C&#x27;est assez surprenant, il permet de supprimer le chant d&#x27;une musique.</p>
<p>La manière la plus simple d&#x27;utiliser l&#x27;outil est de lancer une commande Docker :</p>
<pre><code class="language-bash">docker run -it -v ~/Music:/mnt researchdeezer/spleeter separate -i /mnt/input.mp3 -p spleeter:2stems -o /mnt/output.mp3
</code></pre>
<p>Vous pouvez à la fois supprimer le chant d&#x27;une musique, mais vous pouvez quand même garder le chant dans un fichier à part.</p>
<p>En fait ça peut spliter les différentes pistes d&#x27;une musique, la basse, guitare, le chant, le batterie ect..</p>
<p>Spleeter a été conçu avec un outil de machine learning du nom de <a href="https://github.com/tensorflow/tensorflow">TensorFlow</a>.</p>
<p>C&#x27;est assez marrant de voir <a href="https://voca.ro/11mUKSVV1m4y">Manau chanter sans musique</a> 😂.</p>
<p>Bref, vous pouvez trouver <a href="https://github.com/deezer/spleeter">le projet sur Github</a>.</p>
<p>PS : Il existe maintenant <a href="https://github.com/Anjok07/ultimatevocalremovergui">un autre projet</a> pour dissocier la voix et l&#x27;instrumental d&#x27;une musique.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Choisir : La décision la plus importante lors du démarrage de votre entreprise]]></title>
            <description><![CDATA[Choisir le bon ou le mauvais marché est la seule chose qui définit le succès de votre entreprise. Si vous choisissez le mauvais marché, votre entreprise est vouée à l'échec avant même de commencer.]]></description>
            <link>https://johackim.com/choisir-de-ryan-levesque?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/choisir-de-ryan-levesque</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 04 Jan 2021 11:44:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/choisir-de-ryan-levesque.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/choisir-de-ryan-levesque.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/YFFoawK.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/FT8Hscv.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/Ug3UhEC.png"/><p>Choisir le bon ou le mauvais marché est la seule chose qui définit le succès de votre entreprise. Si vous choisissez le mauvais marché, votre entreprise est vouée à l&#x27;échec avant même de commencer.</p>
<blockquote>
<p>Au lieu de vous demander <em>quoi</em> construire ou vendre, il vaut mieux se demander <em>qui</em> servir.</p>
</blockquote>
<p>Le livre <a href="https://placedeslibraires.fr/ebook/9781401957483-choose-ryan-levesque/">Choose de Ryan Levesque</a> vous apprend à <strong>mesurer la demande de votre idée</strong>, à <strong>déterminer la taille et le potentiel d&#x27;un marché</strong> et à <strong>trouver un angle unique</strong>.</p>
<h2>Créer une entreprise, c&#x27;est pareil que la mise à l&#x27;eau d&#x27;un bateau</h2>
<p>La rivière dans laquelle vous lancez ce bateau a beaucoup plus d&#x27;impact sur la vitesse à laquelle vous irez que le type de bateau que vous avez.</p>
<h3>Petite rivière</h3>
<p>Si vous choisissez une rivière peu profonde et avec un faible courant, les chances de succès ne sont pas en votre faveur.</p>
<p>Vous aurez beau avoir le meilleur bateau et le meilleur équipage du monde, s&#x27;il n&#x27;y a pas de courant vous n&#x27;irez pas bien loin.</p>
<h3>Grosse rivière</h3>
<p>À contrario, si vous choisissez une rivière déchainée vous pouvez chavirer et être percuté par d&#x27;autres bateaux.</p>
<h3>La rivière idéale</h3>
<p>La rivière idéale est cachée entre ces deux extrêmes.</p>
<p>Vous allez quand même devoir préparer votre bateau et l&#x27;amener au bord de la rivière, mais une fois qu&#x27;il sera lancé, le courant vous emportera automatiquement.</p>
<p>Vous ne passerez pas votre temps à essayer d&#x27;en générer un.</p>
<h2>Brainstormer son business modèle</h2>
<p>Il existe un tas de business modèles (Produits physique, Logiciels, Coaching/Consulting, SAAS, Etc..).</p>
<p>D&#x27;après Ryan Levesque, il en existe un qui est au-dessus des autres : <em>éduquer et vendre son expertise</em>.</p>
<p>Dans cette optique, il existe 4 catégories à explorer :</p>
<p><img src="https://i.imgur.com/YFFoawK.jpg" alt=""/></p>
<p>Chaque catégorie représente un niveau différent de votre personnalité. De double introverti (II) à double extraverti (EE).</p>
<p>Un introverti aura tendance à choisir un produit qui n&#x27;implique pas d&#x27;interagir continuellement avec beaucoup de gens.</p>
<p>Et un extraverti à choisir un modèle basé sur le groupe.</p>
<h2>Brainstormer son marché</h2>
<p>Quel type de marché correspond au type d&#x27;entrepreneur que vous êtes ?</p>
<p>Répondre à cette question va vous permettra de choisir votre business modèle, produit et marché.</p>
<h3>Les quatre types d&#x27;entrepreneurs</h3>
<p><img src="https://i.imgur.com/FT8Hscv.jpg" alt=""/></p>
<ul>
<li><strong>Entrepreneurs avec une mission</strong></li>
</ul>
<p>Ils sont guidés par une mission qui les dépasse et pour laquelle ils sont prêts à &quot;mourir&quot; pour. Il s&#x27;agit souvent de réaliser une mission qui a pour but de retirer une forte douleur.</p>
<p>Exemple : Un programme pour lutter contre le harcèlement scolaire.</p>
<ul>
<li><strong>Entrepreneurs avec une passion</strong></li>
</ul>
<p>Ils sont guidés par leur passion, et accompagnent les personnes vers quelque chose de positif.</p>
<p>Exemple : Apprendre et enseigner la guitare</p>
<ul>
<li><strong>Entrepreneurs à la recherche d&#x27;opportunités</strong></li>
</ul>
<p>Ces entrepreneurs sont à la recherche de nouvelles zones d&#x27;opportunités et de croissance. Ils sont guidés par la recherche de problèmes à résoudre, peu importe le domaine.</p>
<ul>
<li><strong>Entrepreneurs indécis</strong></li>
</ul>
<p>Tous les entrepreneurs qui ne savent pas dans quelle catégorie se placer.</p>
<h2>Brainstormer son idée</h2>
<p>Dans le framework Choose, Ryan Levesque parle du concept des <em>Keyword Phrases</em>.</p>
<p>Une <em>Keyword Phrase</em> est une suite de mots clés qui décrit ce que vous faites ou ce qui est au coeur ce que vous offrez.</p>
<p>Exemple: Si votre idée concerne <em>la prise de parole en publique,</em> alors votre liste de Keyword Phrase pourra être :</p>
<ul>
<li>parler en publique</li>
<li>faire un discours</li>
<li>améliorer votre diction</li>
</ul>
<p>Astuce : Vous pouvez jouer avec l&#x27;autosuggestion de Google pour trouver des idées, et jouer avec <a href="http://crisco.unicaen.fr/des/">un dictionnaire de synonymes</a> pour trouver des variantes.</p>
<p>Une fois la liste de Keyword Phrases défini, il vous suffit de les ajouter à la suite de &quot;Je veux aider les gens à [Keyword Phrase]&quot;.</p>
<p>Puis de les trier en répondant à la question :</p>
<ul>
<li>Seriez-vous prêt à &quot;mourir&quot; pour cette idée ?</li>
<li>Êtes-vous passionné à propos de cette idée ?</li>
<li>Est-ce que cette idée correspond à votre personnalité ?</li>
<li>Pouvez-vous vous voir continuer à faire cela dans 5 ans ?</li>
</ul>
<p>Priorisez et choisissez les 3 meilleures Keyword Phrases (<a href="https://ask-lms.s3.us-west-1.amazonaws.com/resources/03282019093739_Choose%20Book%20Resource%20-%20Business%20Idea%20Brainstorm%20Worksheet.pdf">voir PDF</a>) qui représenteront vos idées de business.</p>
<h2>Bullseye Keyword</h2>
<p>Les Bullseye Keywords doivent exprimer le processus, le parcours ou la transformation que les gens connaîtront à l&#x27;utilisation de votre produit.</p>
<p>Par exemple, si votre idée est &quot;Je veux aider les personnes à prendre soin de leur orchidée&quot;, les Bullseye Keywords seront &quot;prendre soin des orchidées&quot;, &quot;faire grandir des orchidées&quot; ou &quot;créer des jardins d&#x27;orchidées&quot;.</p>
<p>Les mots clés &quot;prendre soin&quot; représentant le processus de transformation avec lequel vous aidez les gens.</p>
<p>Si votre idée est &quot;je veux aider les gens à brasser leur propre bière&quot;, les Bullseye Keywords seront &quot;brassage de bière&quot;, &quot;comment brasser de la bière&quot;, etc...</p>
<p>Le secret est de ne pas sous-estimer le pouvoir de <em>transformer</em> vos clients.</p>
<h3>Premier test de réussite Google / Amazon</h3>
<p>On vérifie maintenant si ces mots clés sont viables ou non via un petit test rapide.</p>
<p>Tapez vos mots-clés dans Google et Amazon et voyez si les résultats qui s&#x27;affichent sont similaires à ceux que vous aviez à l&#x27;esprit.</p>
<p>Par exemple, si votre idée concerne l&#x27;amélioration de la mémoire et que vos mots clés sont &quot;expand memory&quot; et &quot;improve memory&quot;, vous vous apercevrez qu&#x27;en tapant le mot clé &quot;expand memory&quot; sur Google cela affiche des résultats en rapport avec la RAM des ordinateurs.</p>
<h2>Market Size Sweet Spot</h2>
<p>Le Sweet Spot représente un marché qui n&#x27;est ni trop grand, ni trop petit.</p>
<ul>
<li>Choisissez un marché trop grand et vous devrez faire face à de nombreux concurrents qui ont les poches pleines.</li>
<li>Choisissez un marché trop petit et vous n&#x27;aurez pas le nombre de clients dont vous aurez besoin pour réussir.</li>
</ul>
<p>L&#x27;un des meilleurs moyens de vérifier si notre idée ce trouve au milieu est de renseigner nos mots clés choisis précédemment sur <a href="https://trends.google.com/">Google Trends</a>.</p>
<p>On compare notre idée avec d&#x27;autres niches comme <a href="https://trends.google.com/trends/explore?date=today%205-y&amp;q=Orchid%20care,Improve%20memory,Leadership%20skills,beekeeping">Orchid Care, Improve Memory, Leadership Skills, Beekeeping</a>.</p>
<p>Si notre mot clé est le bitcoin, on s&#x27;aperçoit que <a href="https://trends.google.com/trends/explore?date=today%205-y&amp;q=Orchid%20care,Improve%20memory,Leadership%20skills,beekeeping,bitcoin">le marché est beaucoup trop concurrentiel</a>.</p>
<p>Et dans le cas contraire, si notre mot clé est &quot;improve confidence&quot;, on s&#x27;aperçoit que <a href="https://trends.google.com/trends/explore?date=today%205-y&amp;q=Orchid%20care,Improve%20memory,Leadership%20skills,beekeeping,improve%20confidence">ce marché est trop petit</a>.</p>
<p>Si votre mot clé ne rentre pas dans &quot;les cases&quot;, cela ne signifie pas nécessairement que votre idée est à jeter. Cela peut simplement signifier que vous devez potentiellement réaffiner votre idée de mot clé.</p>
<h2>Market Competition Sweet Spot</h2>
<p>Le but n&#x27;est pas d&#x27;éliminer ou de ne pas avoir de concurrence, mais plutôt d&#x27;avoir le bon nombre de concurrents.</p>
<ul>
<li>Trop de concurrents et il est impossible de se faire entendre</li>
<li>Trop peu de concurrents et cela dit que quelque chose ne va pas dans cette niche ; les pionniers se font tirer dessus et les colons deviennent riches</li>
</ul>
<p>Google, Amazon, Facebook, Apple n&#x27;était pas les pionniers, ils ont simplement trouvé quelque chose qui fonctionnait et l&#x27;ont amélioré.</p>
<p>Pour savoir si votre idée rentre dans le Market Competition Sweet Spot il suffit de vérifier si vos concurrents dépensent de l&#x27;argent en publicité.</p>
<p>Les entreprises ne peuvent pas dépenser de l&#x27;argent en marketing si elles ne sont pas rentables pendant très longtemps à moins qu&#x27;elles ne soient soutenues par une personne avec beaucoup d&#x27;argent (ce que nous avons essentiellement éliminé avec l&#x27;étape précédente).</p>
<p>Si elles dépensent de l&#x27;argent en publicité, il y a de fortes chances qu&#x27;ils fassent réellement de l&#x27;argent dans leur entreprise.</p>
<p>Tapez votre mot clé dans Amazon et regardez combien de messages sponsorisés il y a ; notez que vous devriez rechercher des produits d&#x27;information et non des produits physiques.</p>
<ul>
<li>3-7 publicités est un feu vert</li>
<li>1-2 ou 8-9 publicités est un feu orange</li>
<li>1 ou 10 publicités est un feu rouge</li>
</ul>
<h2>Market Must-Haves</h2>
<p>Il existe 5 types de marchés incontournables. Vérifier que votre marché correspond à ces 5 caractéristiques pour que vous soyez sûr que votre idée peut être rentable.</p>
<h3>1. Marché Evergreen</h3>
<p>Un marché Evergreen, contrairement au marché de la mode par exemple, à une longévité continue et stable qui n&#x27;est pas menacée par des forces extérieures comme des changements culturels, une économie capricieuse ou un intérêt éphémère.</p>
<p>C&#x27;est un marché stable depuis des décennies avec une demande constante. Il continuera de faire de l&#x27;argent au fil du temps.</p>
<p>Regardez les données de <a href="https://trends.google.com/trends/explore?date=all&amp;q=iphone%204s%20tips,leadership%20skills">tendance de Google depuis 2004</a> pour vous assurer que vous avez un marché stable.</p>
<h3>2. Marché enthousiaste</h3>
<p>C&#x27;est un marché où les acheteurs sont tellement enthousiasmés par le sujet qu&#x27;ils ont tendance à être des acheteurs réguliers.</p>
<p>Pensez aux gens de votre marché, sont-ils enthousiasmés par le problème que vous résolvez ?</p>
<p>Un moyen rapide de savoir est de rechercher s&#x27;il y a un club pour les types de personnes qui achèteraient votre produit ou service.</p>
<h3>3. Un problème à 10 000€</h3>
<p>Il ne s&#x27;agit pas de facturer 10 000 € pour résoudre un problème spécifique mais plutôt de savoir si vous résolvez un problème tellement urgent que vos clients seraient prêt à payer presque n&#x27;importe quoi pour le résoudre.</p>
<p>Est-ce que le PROBLÈME que vous résolvez est le genre de chose qui réveillerait votre prospect au milieu de la nuit ?</p>
<p>Un problème à 1000€ peut sous certaines circonstances se transformer en un problème à 10 000€.</p>
<p>Dans le modèle IN/UP/MAX de Ryan Levesque, ce problème à 10 000€ correspond au IN.</p>
<p><img src="https://i.imgur.com/Ug3UhEC.png" alt=""/></p>
<h3>4. Problèmes futurs</h3>
<p>Un marché qui a des problèmes supplémentaires adjacents à celui que vous vous concentrez actuellement sur la résolution vous donnera la possibilité d&#x27;élargir vos produits, de faire équipe avec un autre fournisseur ou etc., maximiser la valeur client</p>
<p>On cherche ici des problèmes futurs que vous pouvez résoudre pour ce même client au-delà du premier problème.</p>
<p>C&#x27;est le UP du modèle IN/UP/MAX.</p>
<h3>5. Joueurs avec de l&#x27;argent</h3>
<p>Un marché viable est celui qui a des &quot;Joueurs avec de l&#x27;argent&quot;, des gens qui sont prêts à dépenser une grosse somme d&#x27;argent dans un domaine particulier de leur vie et/ou éviter un problème récurrent.</p>
<p>Le domaine du Golf est un parfait exemple. Le revenu potentiel des golfeurs continue d&#x27;augmenter avec des dépenses régulières pour des vacances de golf haut de gamme.</p>
<p>Recherchez des produits &quot;MAX&quot; parmi vos concurrents et assurez-vous que le marché a un problème de 10 000 €.</p>
<p>Cherchez sur Google vos Bullseye Keywords en ajoutant des mots comme &quot;certification&quot;, &quot;mentoring&quot;, &quot;mastermind&quot;, &quot;voyage&quot;.</p>
<h2>Choisir une idée</h2>
<p>Maintenant, il ne reste plus qu&#x27;à choisir.</p>
<p>Pour résumer la méthode Choose, vous devez de manière itérative :</p>
<h3>1. Brainstormer</h3>
<ul>
<li>Définir votre business modèle parmi <a href="https://i.imgur.com/YFFoawK.jpg">ces 4 catégories</a> selon votre personnalité pour savoir quel type de produit proposer à votre marché.</li>
<li>Définir quel type d&#x27;entrepreneur parmi ces <a href="https://i.imgur.com/FT8Hscv.jpg">4 types d&#x27;entrepreneurs</a> vous êtes afin de savoir quel type de marché vous correspond le mieux.</li>
<li>Définir, priorisez et choisissez les 3 meilleures Keyword Phrases qui décrit ce que vous faites au format &quot;Je veux aider les gens à [Keyword Phrase]&quot;</li>
</ul>
<h3>2. Tester</h3>
<ul>
<li>Passez vos mots-clés au <strong>Google / Amazon</strong> test</li>
<li>Passez vos mots-clés au <strong>Market Size Sweet Spot</strong> test</li>
<li>Passez vos mots-clés au <strong>Market Competition Sweet Spot</strong> test</li>
<li>Passez vos mots-clés au <strong>Market Must-Haves</strong> test</li>
</ul>
<h3>3. Choisir</h3>
<ul>
<li>Sélectionnez l&#x27;idée qui remporte tous les tests</li>
</ul>
<p>Vous trouverez plus d&#x27;informations sur le document <a href="https://ask-lms.s3.us-west-1.amazonaws.com/resources/03282019093831_Choose%20Book%20Resource%20-%20Choosing%20Your%20Greenlight%20Market%20Worksheet.pdf">Choosing Your Greenlight Market</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://placedeslibraires.fr/ebook/9781401957483-choose-ryan-levesque/">Choose - Ryan Levesque</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment vérifier la demande d'un marché avant de créer un produit dont personne ne veut ?]]></title>
            <description><![CDATA[Découvrez comment vérifier la demande du marché avant de lancer un produit. Apprenez à cerner votre audience, à identifier les mots-clés pertinents et à estimer le nombre de personnes à atteindre.]]></description>
            <link>https://johackim.com/comment-mesurer-demande-marche?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-mesurer-demande-marche</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 05 Oct 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-mesurer-demande-marche.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-mesurer-demande-marche.jpg"/>
            <content:encoded><![CDATA[<p>Créer un produit dont personne ne veut est l&#x27;erreur numéro 1 en entrepreneuriat. Alors, avant de perdre 6 mois à créer un produit inutile, est-il possible de vérifier si une demande existe ?</p>
<h2>Existe-t-il une demande au problème que j&#x27;essaie de résoudre ?</h2>
<blockquote>
<p>Aucun marché. C&#x27;est de loin l&#x27;erreur la plus courante que j&#x27;ai vue, construire quelque chose dont personne ne veut. Rob Walling</p>
</blockquote>
<blockquote>
<p>Le risque le plus élevé pour la majorité des startup consiste à mettre au point un produit dont personne ne veut. Ash Maurya</p>
</blockquote>
<blockquote>
<p>S&#x27;il n&#x27;y a pas de concurrents, alors il n&#x27;y a pas de marché. Mitch Harper</p>
</blockquote>
<p>Une fois que l&#x27;on a trouvé une idée &quot;génial&quot;, il nous reste à vérifier le plus important ; <strong>est-ce qu&#x27;il existe des personnes en recherche active d&#x27;une solution au problème que l&#x27;on souhaite résoudre ?</strong></p>
<p>Pour ça, il y a 3 questions à se poser sont :</p>
<ol>
<li>Où se trouve notre marché ?</li>
<li>Ce marché est-il assez grand ?</li>
<li>Existe-t-il un moyen peu coûteux d&#x27;atteindre ce marché ?</li>
</ol>
<h2>La stratégie de l&#x27;immersion</h2>
<p>Pour commencer notre petite étude de marché et savoir où se trouve notre audience, on va créer un simple fichier Excel qui va regrouper 3 listes d&#x27;informations.</p>
<h3>1. Les sources de contenu que votre audience consomme</h3>
<p>Cherchez et regroupez toutes les sources de contenu que votre audience consomme :</p>
<ul>
<li>Magazines</li>
<li>Blogs</li>
<li>Forums</li>
<li>Conférences</li>
<li>Podcasts sur Apple Podcast ou Gpodder</li>
<li>Livres sur Amazon</li>
<li>Chaines YouTube</li>
<li>Chaines Twitch</li>
<li>Comptes Instagram</li>
<li>Comptes Twitter</li>
<li>Comptes Medium</li>
<li>Comptes Feedly</li>
<li>Groupes Facebook</li>
<li>Groupes Telegram</li>
<li>Sites Q&amp;R comme Quora et Reddit.</li>
<li>Plateformes de freelance comme Fiverr et Upwork</li>
<li>Plateformes de streaming comme Spotify, Deezer</li>
</ul>
<p>Pour renforcer votre liste, renseignez les <strong>backlinks</strong> de chacune de vos sources.</p>
<h3>2. Les mots-clés qui reviennent le plus souvent</h3>
<p>Créez une &quot;<strong>Keywords Master List</strong>&quot; en recensant tous les mots-clés qui reviennent les plus souvent.</p>
<p>Petite astuce ; copiez-collez le texte de chaque page sur <a href="https://wordcounter.net">wordcounter.net</a> pour avoir les mots-clés par ordre de récurrence.</p>
<h3>3. Toutes les questions que votre audience tape pour chercher une solution au problème que vous résolvez</h3>
<p>Pour vérifier si votre marché recherche activement une solution à son problème il existe 2 méthodes.</p>
<p>La première consiste à chercher les questions sur Google en tapant le début de chaque question potentiel :</p>
<ul>
<li>&quot;comment&quot;</li>
<li>&quot;comment faire pour&quot;</li>
<li>&quot;pourquoi&quot;</li>
<li>&quot;besoin de&quot;</li>
</ul>
<p>Suivi du domaine du site/forum/blog où se trouve votre audience, exemple :</p>
<p><code>&quot;comment faire pour&quot; site:growthhacking.fr</code></p>
<p>La deuxième méthode consiste à renseigner et chercher des questions potentielles sur des <strong>outils SEO</strong> (<a href="https://answerthepublic.com">Answerthepublic</a>, <a href="https://questiondb.io">Questiondb</a>, <a href="https://buzzsumo.com/">Buzzsumo</a>, <a href="https://ahrefs.com/">Ahrefs</a>, <a href="https://keywordtool.io/">KeywordTool</a>, <a href="https://ads.google.com/home/tools/keyword-planner/">Google Keyword Planner</a><a href="https://johackim.com/vie-privee/comment-detenir-un-compte-google-anonyme/">en mode anonyme</a>, etc...) pour vérifier s&#x27;il existe un volume de recherche important.</p>
<p>Plus il y a de <strong>volumes de recherches</strong>, de <strong>commentaires</strong>, de <strong>vues</strong>, de <strong>likes</strong> et de <strong>partages</strong> à propos d&#x27;un sujet donné, mieux c&#x27;est.</p>
<p>L&#x27;ensemble de cette stratégie a pour but de s&#x27;immerger le plus possible dans les problèmes de notre audience afin d&#x27;en <strong>ressortir LE problème principal</strong>, même s&#x27;il n&#x27;a rien à voir avec notre idée initiale.</p>
<p><strong>Car le plus important ce n&#x27;est pas notre idée, mais le problème que l&#x27;on résout.</strong></p>
<p>Imprégnez-vous du langage qu&#x27;ils utilisent pour pouvoir mieux définir le problème que vous aller résoudre.</p>
<blockquote>
<p>If you can describe the problem better than your customer they will assume you have the solution. Pat Flynn</p>
</blockquote>
<p>Voici <a href="https://backlinko.com/seo-tools">une liste d&#x27;outils SEO</a> pour approfondir toutes vos recherches :</p>
<ul>
<li><a href="https://moz.com">moz.com</a></li>
<li><a href="https://ahrefs.com">ahrefs.com</a></li>
<li><a href="https://semrush.com">semrush.com</a></li>
<li><a href="https://keywordtool.io">keywordtool.io</a></li>
<li><a href="https://buzzsumo.com">buzzsumo.com</a></li>
<li><a href="https://similarweb.com">similarweb.com</a></li>
<li><a href="https://alexa.com">alexa.com</a></li>
</ul>
<h2>Commencer par une micro niche</h2>
<p>En tant que <strong>solopreneur</strong>, de par notre manque de temps et d&#x27;argent, on ne peut pas se permettre de cibler :</p>
<ul>
<li>Un marché de masse / un marché que l&#x27;on ne peut atteindre économiquement.</li>
<li>Un marché qui n&#x27;a pas conscience de son problème (<a href="https://johackim.com/copywriting/les-5-niveaux-de-conscience/">voir les 5 niveaux de conscience d&#x27;un prospect</a>).</li>
<li>Un marché qui cible plusieurs secteurs en même temps (marché horizontal).</li>
<li>Un marché qui ne nous est pas familier.</li>
</ul>
<h3>La différence entre un marché horizontal et vertical</h3>
<p>Un <strong>marché horizontal</strong> cible plusieurs secteurs en même temps. Par exemple, les logiciels de facturation, ils peuvent être utilisés par plusieurs secteurs comme les avocats, les artisans, ou développeurs web.</p>
<p>Un <strong>marché vertical</strong> cible uniquement un secteur. Par exemple, les amateurs de musique electro, les professeurs de maths ou les peintres.</p>
<h2>La technique de la couverture de magazine</h2>
<p>Le but dans tout ça, c&#x27;est de trouver un marché suffisamment gros pour pouvoir vivre convenablement et suffisamment petit pour pouvoir l&#x27;atteindre facilement.</p>
<p>Essayez de trouver une niche où il est possible d&#x27;apparaitre en couverture du magazine n°1 pour moins de 5 000€.</p>
<p>Si un marché a un magazine qui lui est consacré, ça veut dire qu&#x27;il est suffisamment grand pour obtenir suffisamment de clients.</p>
<p>Et si une annonce pleine page coûte moins de 5 000€, le marché est suffisamment petit pour que vous puissiez l&#x27;atteindre efficacement.</p>
<h2>Une estimation concrète du nombre de personnes à atteindre</h2>
<p>D&#x27;après <a href="https://robwalling.com/">Rob Walling</a>, un <strong>taux de conversion</strong> se situe en moyenne :</p>
<ul>
<li>
entre 1% et 4% pour un produit entre 1€ à 50€
</li>
<li>
entre 0,5% et 2% pour un produit entre 50€ et 1000€
Taux de conversion (%) = (Total d&#x27;acheteurs / Total de visiteurs) x 100
</li>
</ul>
<p>Bien que ces taux varient en fonction de beaucoup de facteurs (sources de trafic, prix du produit, marché, ect...), pour faire simple on va partir qu&#x27;un taux de conversion moyen est de 3%.</p>
<p>Admettons que vous souhaitiez gagner 1500€ / mois pour un produit que vous vendez à 50€, vous devez atteindre environ 1000 visiteurs / mois.</p>
<p><code>1500€ / (0.03 x 50) = 1000 visiteurs</code></p>
<p>À vous de trouver un moyen d&#x27;acquérir toutes ces personnes par le moyen qui vous convient le mieux (SEO, Réseaux sociaux, Partenariats, Avertising, ect...).</p>
<h2>Conclusion</h2>
<blockquote>
<p>Market comes first, marketing second, aesthetic third, and functionality a distant fourth. Rob Walling</p>
</blockquote>
<blockquote>
<p>The most powerful form of validation is when people pull out their credit card and buy your product before it even exists. Mitch Harper</p>
</blockquote>
<p>À présent, vous avez une idée plus claire du nombre de personnes à atteindre, d&#x27;où elles se trouvent et de leur <strong>problème n°1 à résoudre</strong> !</p>
<p>Vous avez en quelque sorte <strong>prévalidé</strong> votre idée, elle n&#x27;est pas complètement validée, car <strong>cela reste seulement des hypothèses</strong>.</p>
<p><strong>L&#x27;unique façon de valider une idée est de faire sortir la carte de crédit de vos clients pour acheter votre produit.</strong></p>
<p>Donc, placez-vous dans les mailles du filet et suggérez à votre audience d&#x27;acheter votre solution, peu importe si elle existe ou non.</p>
<p>Et n&#x27;oubliez pas, <a href="/arretez-de-demander-si-votre-idee-d-entreprise-est-bonne" title="tout le monde s&#x27;en fiche de votre idée">tout le monde s&#x27;en fiche de votre idée</a>, la seule chose qui les intéressent c&#x27;est de résoudre leurs problèmes.</p>

<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/start-small-stay-small-rob-walling" title="Start Small, Stay Small - Rob Walling" class="not-found">Start Small, Stay Small - Rob Walling</a>

</li>
<li>
<a href="/will-it-fly-pat-flynn" title="Will It Fly? - Pat Flynn" class="not-found">Will It Fly? - Pat Flynn</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment répondre aux 5 objections fondamentales ?]]></title>
            <description><![CDATA[Les doutes et questionnements d'un client envers vous et votre produit sont inévitables. Comment faire face aux 5 plus grosses objections qu'un client peut avoir ?]]></description>
            <link>https://johackim.com/comment-repondre-aux-objections?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-repondre-aux-objections</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 01 Oct 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-repondre-aux-objections.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-repondre-aux-objections.jpg"/>
            <content:encoded><![CDATA[<p>Les doutes et questionnements d&#x27;un client envers vous et votre produit sont inévitables. Comment faire face aux 5 plus grosses objections qu&#x27;un client peut avoir ?</p>
<p>Il y a toujours une raison pour laquelle un client dit non. Le simple fait qu’il accepte de parler avec vous montre que votre offre suscite un intérêt minimal de sa part sinon, la conversation s’arrêterait.</p>
<p>Si vous posez les bonnes questions, vous pouvez toujours espérer conclure la vente.</p>
<p>Cette étape arrive généralement toute à la fin d&#x27;un processus de vente et se place généralement dans la partie FAQ dans le cas d&#x27;un site web.</p>
<blockquote>
<p>« La vente commence quand le prospect dit non. »</p>
</blockquote>
<h2>1. &quot;Je n’ai pas le temps&quot;</h2>
<p>Définir clairement l’investissement en temps nécessaire.</p>
<h2>2. &quot;Je n’ai pas d’argent&quot;</h2>
<p>Quand un client vous dit &quot;Ça coûte trop cher&quot; :</p>
<ul>
<li>Visualiser leur vie future sans cette solution.</li>
<li>Ancrer le prix vis-à-vis des alternatives.</li>
<li>Recadrer le sujet (coût &gt; ROI).</li>
</ul>
<h2>3. &quot;Ça ne va pas marcher pour moi&quot;</h2>
<ul>
<li>Identifiez et répondre à tous les &quot;cas particuliers&quot; de votre marché.</li>
<li>Montrez des études de cas de personnes ayant réussi.</li>
<li>Utilisez des formulations &quot;Marche même si...&quot;.</li>
</ul>
<h2>4. &quot;Je ne vous crois pas&quot;</h2>
<p>Ajouter de la <strong>preuve sociale</strong> :</p>
<ul>
<li><strong>Témoignages</strong> (Problème précis + Nom + Photo + Entreprise/ville)</li>
<li><strong>Études de cas</strong></li>
<li><strong>Évaluations clients</strong> (ex : notes sur 5 étoiles)</li>
<li><strong>Logos &amp; institutions</strong> (Clients prestigieux, Presse...)</li>
<li><strong>Chiffres</strong> (nombre de clients, de lecteurs...)</li>
</ul>
<p>Humanisez votre entreprise/marque/contenu/site pour la rendre <strong>appréciable</strong> :</p>
<ul>
<li>Associez-vous avec quelque chose/quelqu&#x27;un qu’ils apprécient déjà (<strong>recommandation</strong>)</li>
<li>Utilisez des photos d’êtres humains</li>
</ul>
<h2>5. &quot;Je n’en ai pas besoin&quot;</h2>
<p>Il arrive souvent que vos prospects n’aient pas vraiment réalisé qu’ils avaient un problème.</p>
<p>Par conséquent, efforcez-vous de rendre vos clients plus avisés en leur montrant que vous connaissez leur situation, puis en les aidant à <strong>visualiser</strong> ce qu’ils obtiendraient en acceptant votre offre.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/3yfvKXy">Le personal MBA - Josh Kaufman</a></li>
<li><a href="https://amzn.to/33ncOej">Customer Objections - Fatih Guner</a></li>
<li><a href="https://swipefile.com/the-5-basic-objections-copywriting-formula/">https://swipefile.com/the-5-basic-objections-copywriting-formula/</a></li>
<li><a href="https://changingminds.org/disciplines/sales/objection/objection_handling.htm">https://changingminds.org/disciplines/sales/objection/objection_handling.htm</a></li>
<li><a href="https://fronterabrands.com/the-objection-funnel">https://fronterabrands.com/the-objection-funnel</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La formule A.I.D.A]]></title>
            <description><![CDATA[La formule la plus utilisée pour structurer un contenu (page de vente, vidéo de vente, e-mail, discours) dans le but de vendre c'est A.I.D.A, qui signifie Attention, Intérêt, Désir, Action.]]></description>
            <link>https://johackim.com/la-formule-aida?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-formule-aida</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 29 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-formule-aida.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-formule-aida.jpg"/>
            <content:encoded><![CDATA[<p>La formule la plus utilisée pour structurer un contenu (page de vente, vidéo de vente, e-mail, discours) dans le but de vendre c&#x27;est A.I.D.A, qui signifie Attention, Intérêt, Désir, Action.</p>
<p>C&#x27;est l&#x27;un des modèles les plus anciens utilisés dans la publicité (fin du XIXe siècle).</p>
<p>Selon <strong>AIDA</strong>, le texte doit d&#x27;abord attirer l&#x27;<strong>attention</strong> du lecteur, puis susciter un <strong>intérêt</strong> pour le produit, puis transformer cet intérêt en un fort <strong>désir</strong> de posséder le produit, et enfin demander à la personne d&#x27;acheter le produit ou de faire une <strong>action</strong> qui conduira éventuellement à une vente.</p>
<p>Ce sont en quelque sorte les différentes étapes par lesquelles nous passons tous avant d’acheter un produit ou service.</p>
<h2>Attention</h2>
<p>Le but de cette partie est d&#x27;<strong>attirer l&#x27;attention</strong>.</p>
<p>Cela se passe généralement avec le titre et/ou l&#x27;image d&#x27;un article, d&#x27;une vidéo, d&#x27;un e-mail ect...</p>
<p>Pour en savoir plus, vous pouvez consulter l&#x27;article &quot;<a href="/comment-ecrire-un-titre-efficace" title="Comment rédiger un titre efficace ?">Comment rédiger un titre efficace ?</a>&quot;.</p>

<h2>Intérêt</h2>
<p>Ensuite, on <strong>garde l&#x27;attention de la personne</strong> en suscitant son intérêt avec <strong>des faits</strong>, <strong>des statistiques, des utilisations, des histoires</strong> (<strong>storytelling</strong>) <strong>intéressantes</strong> en rapport avec notre produit.</p>
<p>Dans cette partie, on va généralement évoquer <strong>le problème</strong> de la personne.</p>
<p>On peut intégrer une partie d&#x27;une autre formule qui s&#x27;appelle <strong>P.A.S</strong> (Problème, Aggravation, Solution).</p>
<p>Notamment la partie Aggravation. Le but étant de développer le problème jusqu&#x27;à le rendre <strong>viscéral</strong> :</p>
<ul>
<li>En précisant et <strong>amplifiant les conséquences</strong> de ne pas résoudre le problème.</li>
<li>En faisant <strong>visualiser</strong> le futur de la personne.</li>
<li>En rendant le problème <strong>urgent</strong>.</li>
<li>En <strong>mettant en avant les émotions</strong> qui accompagnent le problème.</li>
</ul>
<p>Plus le problème sera décrit précisément, plus la personne sentira que vous la comprenez et aura confiance en vous.</p>
<h2>Désir</h2>
<p>À ce stade, la personne n&#x27;a pas encore de raison d&#x27;acheter votre produit ou service.</p>
<p>Il faut faire en sorte qu&#x27;il <strong>veuille</strong> acheter/utiliser votre produit ou service.</p>
<p>Montrez-lui ce que le produit peut <strong>lui apporter</strong> et ce que sa vie pourrait être avec.</p>
<p>Vous allez donc parler de votre offre, ce qu’elle contient (<strong>fonctionnalités</strong>) et ce qu’elle apporte de concret à la personne (<strong>bénéfices</strong>).</p>
<h2>Action</h2>
<p>Dites-lui EXACTEMENT ce qu&#x27;il faut faire.</p>
<p>Il est toujours préférable de ne donner qu&#x27;une seule option.</p>
<p>Montrez-lui où cliquer, donnez-lui un numéro à appeler ou dites-lui comment acheter.</p>
<h2>Conclusion</h2>
<p>La psychologie de cet outil est basée sur le <a href="/modele-c.a.b" title="Modèle C.A.B" class="not-found">Modèle C.A.B</a> (Cognition, Affect, Behavior).</p>

<p>En gros, la personne apprend à vous connaître, à ressentir quelque chose, et passe à l&#x27;action.</p>
<p>AIDA est un outil indispensable pour convaincre une personne d&#x27;acheter un produit.</p>
<p>Bien évidemment, ce n&#x27;est pas une formule magique qui permet de vendre tout et n&#x27;importe quoi.</p>
<p>Il est très compliqué, voir impossible de créer le besoin pour un produit, et cette formule n&#x27;y changera rien.</p>
<p>Il est préférable d&#x27;utiliser cette formule pour vendre un produit que l&#x27;on achèterait nous-mêmes ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://youtube.com/watch?v=MzdiydBLc54">Kopywriting Kourse - Use the A.I.D.A. Formula for selling anything</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment trouver un nom de produit ?]]></title>
            <description><![CDATA[Une liste des sites à utiliser pour générer des idées de noms de produit.]]></description>
            <link>https://johackim.com/comment-trouver-un-nom-de-produit?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-trouver-un-nom-de-produit</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 27 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-trouver-un-nom-de-produit.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-trouver-un-nom-de-produit.jpg"/>
            <content:encoded><![CDATA[<p>Pour choisir un nom, j&#x27;utilise ces 2 sites :</p>
<ul>
<li><a href="https://namelix.com/">https://namelix.com/</a></li>
<li><a href="https://wordhero.co/">https://wordhero.co/</a></li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://namegen.com/">https://namegen.com/</a></li>
<li><a href="https://nickkolenda.com/brand-names/">Naming a Product - Nick Kolenda</a></li>
<li><a href="https://app.mailbrew.com/s/newsletter/0cZh4Szhwo8d">Définir un nom de marque - Minute Solopreneur #116</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment écrire un titre persuasif ?]]></title>
            <link>https://johackim.com/comment-ecrire-un-titre-efficace?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-ecrire-un-titre-efficace</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sat, 26 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-ecrire-un-titre-efficace.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-ecrire-un-titre-efficace.jpg"/>
            <content:encoded><![CDATA[<p>Je galère à chaque fois pour trouver et rédiger le titre d&#x27;un article, d&#x27;un e-mail, d&#x27;une landing page ou d&#x27;une formation. Du coup je me suis créé un processus avec une liste d&#x27;outils et techniques à utiliser pour écrire un titre efficace.</p>
<blockquote>
<p>Votre titre n&#x27;a qu&#x27;un rôle à jouer ; <strong>retenir l&#x27;attention</strong>. Eugene Schwartz</p>
</blockquote>
<h2>8 règles à suivre pour avoir un bon titre</h2>
<ol>
<li>Votre titre doit être court : maximum 65 caractères.</li>
<li>La taille idéale d’un titre est de 6 mots.</li>
<li>Transformer les verbes &quot;er&quot; en &quot;ez&quot;</li>
<li>Utilisez les mots « Vous » et « Votre » dans vos titres pour y inclure votre audience.</li>
<li>Utilisez des adjectifs intéressants (i.e. sans effort, incroyable, unique, surprenant, essentiel, etc.).</li>
<li>Utilisez des nombres (plus le nombre est grand, mieux c&#x27;est) et privilégiez les chiffres plutôt que les mots (7 au lieu de « sept »).</li>
<li>Parler avec conviction, ne dites pas &quot;alternative&quot; mais &quot;remplacement&quot;</li>
<li>Garder en tête que personne ne se soucie de toi, tout le monde se soucie d&#x27;eux même.</li>
</ol>
<h2>3 formules pour rédiger un titre persuasif</h2>
<ul>
<li>
<a href="/la-regle-des-4u" title="La règle des 4U">La règle des 4U</a>

</li>
<li>
<a href="/la-formule-r.o.t" title="La formule R.O.T">La formule R.O.T</a>

</li>
<li>
<a href="/la-methode-c.b.i" title="La méthode C.B.I" class="not-found">La méthode C.B.I</a>

</li>
</ul>
<h2>Le processus pour écrire un titre</h2>
<ul>
<li>Rédigez 20 titres</li>
<li>Sélectionnez 3 titres parmi les 20</li>
<li>Écrivez 10 meilleurs titres</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/3kT23nt">Breakthrough Advertising - Eugène Schwartz</a></li>
<li><a href="https://landingfolio.com/headline">Headline Formulas</a></li>
<li><a href="https://headlime.io/">Headline Generator</a></li>
<li><a href="https://foundr.com/7fc-public-sp">Foundr - 7 Figure Copywriting Course</a></li>
<li><a href="https://daniloduchesnes.com/blog/8-strategies-prouvees-par-la-science-pour-ecrire-des-titres-exceptionnels/">Rédaction d&#x27;un titre attractif - Danilo Duschenes</a></li>
<li><a href="https://i.imgur.com/2Qs2s2Z.jpg">Emotionnal words</a></li>
<li><a href="https://gist.github.com/johackim/2e39842ea2657c5d7869273c68aad192">Ray Edwards - Proven Headline Templates</a></li>
<li><a href="https://gist.github.com/johackim/c11f1b74d8e483ab4caaec0e3a76a77c">Traffic Secrets - Headline Formulas</a></li>
<li><a href="https://gist.github.com/johackim/0f83ef93de35c162ca5cabe3046fb5a2">Eben Pagan - Power Headline Formulas</a></li>
<li><a href="https://pastebin.com/vLn8gKuG">https://pastebin.com/vLn8gKuG</a></li>
<li><a href="https://42courses.com/blog/home/2022/7/5/10-of-the-best-advertising-taglines-of-all-time">https://42courses.com/blog/home/2022/7/5/10-of-the-best-advertising-taglines-of-all-time</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment télécharger gratuitement toutes les musiques de Deezer ?]]></title>
            <link>https://johackim.com/comment-telecharger-gratuitement-des-musiques-en-illimite?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-telecharger-gratuitement-des-musiques-en-illimite</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sat, 19 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-telecharger-gratuitement-des-musiques-en-illimite.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-telecharger-gratuitement-des-musiques-en-illimite.jpg"/>
            <content:encoded><![CDATA[<p>Pour télécharger des musiques gratuitement, il existe une solution.</p>
<p>C&#x27;est un outil qui s&#x27;appelle <a href="https://freezerapk.com/">Freezer</a> (anciennement Deemix et Deezloader).</p>
<p>C&#x27;est en quelque sorte un client Deezer, car toutes les musiques proviennent de l&#x27;API de Deezer.</p>
<p>Pour l&#x27;installer, rendez-vous sur <a href="https://freezerapk.com">freezerapk.com</a> (il existe un lien pour Linux, Windows ou Android).</p>
<p>Si vous êtes développeur, vous pouvez accéder aux <a href="https://git.freezer.life/exttex/">sources du projet</a>.</p>
<p>PS : Il existe aussi maintenant <a href="https://deemix.app/gui">deemix.app</a>, <a href="https://github.com/Shabinder/SpotiFlyer">SpotiFlyer</a> et <a href="https://github.com/DJDoubleD/refreezer">Refreezer</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[L'échelle de sensibilisation : les 5 niveaux de conscience d'un prospect]]></title>
            <description><![CDATA[Pour améliorer l'impact de notre contenu, il est peut-être important de connaitre à l'avance le degré de sensibilisation de notre prospect par rapport à notre produit.]]></description>
            <link>https://johackim.com/les-5-niveaux-de-conscience?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/les-5-niveaux-de-conscience</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 18 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/les-5-niveaux-de-conscience.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/les-5-niveaux-de-conscience.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/Fh8xAUq.png"/><p>Pour <strong>améliorer l&#x27;impact de notre contenu</strong> ou <strong>choisir une idée de produit</strong>, il est peut-être intéressant de connaitre le <strong>niveau de sensibilisation</strong> de notre prospect par rapport à notre produit.</p>
<p>L&#x27;impact de notre contenu ou de notre produit sera différent d&#x27;un prospect à l&#x27;autre si l&#x27;on ne tient pas compte de ce concept.</p>
<p>Le contenu doit donc être adapté selon la personne à qui l&#x27;on s&#x27;adresse.</p>
<p><img src="https://i.imgur.com/Fh8xAUq.png" alt=""/></p>
<p>Plus la personne sera consciente de notre produit, plus notre contenu devra être proposé de manière <strong>directe</strong>.</p>
<p>Il est facile de vendre à ce niveau de sensibilisation. Une simple promotion peut inciter la personne à passer à l&#x27;action.</p>
<p>Si la personne n&#x27;est pas du tout consciente, alors il faudra lui proposer du contenu de manière indirecte (éducation, storytelling, ect...)</p>
<h2>1. Inconscient</h2>
<p>La personne n&#x27;a pas conscience de son problème et n&#x27;a aucune idée de votre solution.</p>
<p>Il s&#x27;agit du marché le plus difficile. À stade-là il faut d&#x27;abord éduquer la personne et la faire évoluer petit à petit vers notre produit.</p>
<h2>2. Conscient du problème</h2>
<p>La personne est consciente de son problème, mais ne sait pas que des solutions existent.</p>
<h2>3. Conscient de la solution</h2>
<p>La personne a découvert que des solutions existent à son problème.</p>
<h2>4. Conscient du produit</h2>
<p>La personne est consciente de votre produit, mais ne le désire pas encore.</p>
<p>Le contenu doit parler du produit pour convaincre davantage.</p>
<h2>5. Le plus conscient</h2>
<p>La personne connait votre produit et est persuadée que votre solution est susceptible d&#x27;être la meilleure solution à son problème.</p>
<p>À ce stade, la personne n&#x27;a plus besoin d&#x27;être convaincue, il faut aller droit au but.</p>
<h2>Exemple concret</h2>
<p>Il sera difficile de vendre un matelas anti-acarien à une personne qui n&#x27;a pas conscience que son rhume allérgique provient de son lit.</p>
<p>Contrairement à une personne qui cherche activement à acheter un lit anti-acarien pour anéantir ses problèmes allergique.</p>
<h2>Comment connaitre le niveau de conscience d&#x27;un prospect en ligne ?</h2>
<p>Il est possible de savoir où se trouve un visiteur sur l&#x27;échelle de sensibilisation.</p>
<p>Exemples :</p>
<ul>
<li>Une personne se rend sur le site en tapant directement l&#x27;URL = conscience élevée</li>
<li>Une personne se rend sur le site depuis un lien twitter = conscience faible</li>
<li>Une personne se rend sur le site depuis plusieurs mots-clés sur un moteur de recherche = conscience du problème</li>
</ul>
<p>Plusieurs contenus différents peuvent être affichés en fonction du niveau de conscience de la personne.</p>
<hr/>
<p>Références :</p>
<ul>
<li>Breakthrough Advertising de Eugène Schwartz publié en 1966, l&#x27;auteur parle du concept des <strong>5 niveaux de conscience d&#x27;un prospect</strong>.</li>
<li>Le concept d&#x27;Eugène Schartz a été revisité par Michael Masterson dans son livre Great Leads</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bénéfices vs. fonctions]]></title>
            <description><![CDATA[Quand on est développeur, on a souvent le réflexe de vendre les fonctionnalités (features) de notre produit. C'est sur quoi on a le plus travaillé et pourtant ce n'est absolument pas ça qui pousse à l'utilisation ou l'achat de notre solution.]]></description>
            <link>https://johackim.com/benefices-vs-fonctions?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/benefices-vs-fonctions</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sat, 12 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/benefices-vs-fonctions.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/benefices-vs-fonctions.jpg"/>
            <content:encoded><![CDATA[<p>Quand on est développeur, on a souvent le réflexe de vendre les fonctionnalités (features) de notre produit. C&#x27;est sur quoi on a le plus travaillé et pourtant ce n&#x27;est absolument pas ça qui pousse à l&#x27;utilisation ou l&#x27;achat de notre solution.</p>
<h2>Une fonction</h2>
<p><strong>Une fonction est une caractéristique de notre produit</strong> ou service ; c&#x27;est ce que le produit est ou a.</p>
<h2>Un bénéfice</h2>
<p>Un bénéfice est ce que fait le produit ; c&#x27;est ce que l&#x27;utilisateur du produit ou du service gagne grâce à cette caractéristique.</p>
<p><strong>Un bénéfice est une conséquence désirable d&#x27;un produit</strong>.</p>
<h2>Pourquoi les bénéfices font vendre ?</h2>
<p>La décision d&#x27;achat se fait sur les bénéfices. Les gens achètent des bénéfices et non des fonctions.</p>
<p>Un produit contient une fonction qui permet d&#x27;obtenir un bénéfice. La fonction seule n&#x27;a aucun intérêt si elle ne nous apporte pas quelque chose.</p>
<blockquote>
<p>Les bénéfices d&#x27;un produit créent un lien psychologique entre les désirs d&#x27;une personne et un produit. Michael Masterson</p>
</blockquote>
<p>On n&#x27;achète pas une perceuse, on achète un trou. On n&#x27;achète pas une robe, mais une image.</p>
<h2>Exemples de fonctions et bénéfices</h2>

























<table><thead><tr><th>Fonctions</th><th>Bénéfices</th></tr></thead><tbody><tr><td>Ce programme de nutrition détaille tous les aliments et ingrédients que vous avez besoin d&#x27;acheter.</td><td>Ce programme de nutrition vous montre exactement ce dont vous avez besoin de manger pour maximiser votre perte de poids.</td></tr><tr><td>Cet ordinateur a 16Go de Ram et un processeur de dernière génération.</td><td>Cet ordinateur ultra performant vous permettra de naviguer plus vite sur internet et de ne plus perdre de temps sur vos tâches quotidiennes.</td></tr><tr><td>Obtenez 50 000 points en vous inscrivant au programme de notre compagnie aérienne.</td><td>Obtenez de quoi gagner deux billets aller-retour gratuits vers n&#x27;importe où aux États-Unis.</td></tr><tr><td>Ce crayon est un cylindre en bois.</td><td>Ce crayon peut être réaffûté aussi souvent que vous le souhaitez pour assurer une écriture claire.</td></tr></tbody></table>
<h2>Le bénéfice dans le bénéfice</h2>
<p>Parfois les bénéfices ne suffisent pas, il faut aller chercher plus loin que simplement décrire le(s) bénéfice(s) de notre produit.</p>
<p>Pour ça on cherche <strong>le bénéfice dans le bénéfice</strong>.</p>
<p>Exemple :</p>













<table><thead><tr><th>Bénéfice</th><th>Bénéfice dans le bénéfice</th></tr></thead><tbody><tr><td>Ce guide d&#x27;investissement immobilier  vous rapportera un revenu passif.</td><td>Ce guide vous aidera à gagner de l&#x27;argent  afin que vous puissiez prendre des vacances, payer une bourse d&#x27;études, acheter un nouveau bateau, une maison, etc...</td></tr></tbody></table>
<h2>Doit-on laisser de côté les fonctions ?</h2>
<p>Les deux vont ensemble, chaque produit (ou service) que vous vendez comporte à la fois des fonctions et des bénéfices.</p>
<p>Les fonctions sont ce que le produit contient.</p>
<p>Les bénéfices sont le POURQUOI : le résultat réel que vos clients obtiennent de votre produit et de ses fonctions.</p>
<hr/>
<p>Références :</p>
<ul>
<li>The Copywriter&#x27;s Handbook - Robert W. Bly</li>
<li>Neville Medhora - KopyWriting</li>
<li>Ramit Sethi - Zero to Launch</li>
<li>Chris Gillebeau - 100 € pour lancer son business</li>
<li><a href="https://useronboard.com/features-vs-benefits/">https://useronboard.com/features-vs-benefits/</a></li>
<li><a href="https://medium.com/startup-grind/people-dont-buy-products-they-buy-better-versions-of-themselves-2ce85fdb5ff1">https://medium.com/startup-grind/people-dont-buy-products-they-buy-better-versions-of-themselves-2ce85fdb5ff1</a></li>
<li><a href="https://swipefile.com/writing-feature-benefits-formula/">https://swipefile.com/writing-feature-benefits-formula/</a></li>
<li><a href="https://twitter.com/AaronOrendorff/status/1569395857375518721">https://twitter.com/AaronOrendorff/status/1569395857375518721</a></li>
<li><a href="https://youtu.be/Usu8b7ibPzA?t=1046">Marketing Mania - La psychologie diabolique des clubs de strip-tease</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installer LineageOS sur un Samsung Galaxy J3 2016 SMJ320FN]]></title>
            <description><![CDATA[Petit tutoriel rapide sur l'installation de Lineage OS sur un smartphone Samsung Galaxy J3 2016 SMJ320FN.]]></description>
            <link>https://johackim.com/installer-lineage-os-sur-un-samsung-galaxy-j3-2016?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-lineage-os-sur-un-samsung-galaxy-j3-2016</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 10 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-lineage-os-sur-un-samsung-galaxy-j3-2016.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-lineage-os-sur-un-samsung-galaxy-j3-2016.jpg"/>
            <content:encoded><![CDATA[<p>Voici un petit tutoriel rapide sur l&#x27;installation de Lineage OS sur un smartphone Samsung Galaxy J3 2016 SMJ320FN.</p>
<p><strong>NOTE IMPORTANTE</strong> : Avant d&#x27;installer Lineage, <strong>pensez à sauvegarder les données de votre téléphone</strong> et de le charger à 80% de batterie.</p>
<p>Téléchargez le <a href="https://drive.google.com/file/d/10eGbJTAnb1BXNjPfJExPAwvJLK2hcueI/view">custom recovery Team Win Recovery Project</a> (TWRP).</p>
<p>Démarrez votre téléphone en gardant appuyé les boutons volume bas, home et power.</p>
<p>Une fois démarré, branchez votre téléphone en USB et lancez la commande Linux :</p>
<pre><code class="language-bash">heimdall flash --RECOVERY recovery.img
</code></pre>
<p>Rebootez votre téléphone avec le mode recovery avec les touches Volume Haut, home et power appuyé lors du démarrage.</p>
<p>Supprimez toutes les données du téléphone avec la fonction wipe et installez la <a href="https://drive.google.com/file/d/1yRGFXb1n_cDOI3gBbuPr7YiKDK3ivrQP/view">ROM Lineage OS</a> qui a été copié sur votre carte SD.</p>
<p>Pour plus d&#x27;infos sur la procédure vous pouvez vous rendre <a href="https://forum.xda-developers.com/galaxy-j3-2016/development/rom-lineageos-14-1-samsung-galaxy-j3-t3667015">sur le post original</a> (en anglais).</p>
<p>PS: Je n&#x27;ai pas réussi à trouver une ROM Lineage OS en version 17 pour le SMJ320FN. J&#x27;ai essayé <a href="https://getdroidtips.com/lineage-os-17-1-galaxy-j3-2016/">ce tutoriel</a> mais l&#x27;installation de la ROM s&#x27;arrête avec une erreur <code>no Digest file found</code>. Si quelqu&#x27;un à une solution il peut le poster en commentaire 😉</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://blog.microlinux.fr/lineageos-samsung-galaxy/">Installer LineageOS sur un smartphone Samsung Galaxy</a></li>
<li>
<a href="/android" title="Android" class="not-found">Android</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment créer un tunnel sur matomo ?]]></title>
            <description><![CDATA[Consultez facilement le parcours et les taux de conversion des actions de vos visiteurs (inscription, achat en ligne, etc..) à l'aide de la fonctionnalité Funnel de Matomo.]]></description>
            <link>https://johackim.com/comment-creer-un-funnel-sur-matomo?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-creer-un-funnel-sur-matomo</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 01 Sep 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-creer-un-funnel-sur-matomo.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-creer-un-funnel-sur-matomo.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/1a7s4aw.png"/><link rel="preload" as="image" href="https://i.imgur.com/iQe0NXN.png"/><link rel="preload" as="image" href="https://i.imgur.com/2zXjL5R.png"/><link rel="preload" as="image" href="https://i.imgur.com/2uxAyhN.png"/><p>Consultez facilement le parcours et les taux de conversion des actions de vos visiteurs (inscription, achat en ligne, etc..) à l&#x27;aide de la fonctionnalité Funnel de Matomo.</p>
<h2>C&#x27;est quoi un tunnel ?</h2>
<p>Un tunnel (funnel en anglais) définit une série d&#x27;actions que vous attendez de vos visiteurs qu&#x27;ils entreprennent pour <strong>atteindre un objectif</strong>.</p>
<p>Exemple : Visiteur -&gt; Follower -&gt; Acheteur</p>
<h2>Comment installer Matomo ?</h2>
<p>Matomo, l&#x27;<strong>alternative éthique à Google Analytics</strong> peut être <a href="https://github.com/matomo-org/matomo">auto-hébergé</a>, <a href="https://matomo.org/">installé sur leurs serveurs</a> ou chez un hébergeur comme <a href="https://ethibox.fr/matomo?utm_source=johackim">Ethibox</a>.</p>
<p>Si vous installez la version auto-hébergé de Matomo, vous devez payer 199€ / an pour utiliser le <a href="https://plugins.matomo.org/Funnels">plugin Funnel</a>.</p>
<p>La sécurité et la vie privée de vos utilisateurs ont un prix 😃.</p>
<h2>Comment créer un tunnel ?</h2>
<h3>Créer un objectif</h3>
<p>Pour créer un tunnel il faut d&#x27;abord commencer par créer un objectif.</p>
<p>Quel est l&#x27;objectif que vous souhaitez que vos visiteurs atteignent ?</p>
<p><em>Exemples : s&#x27;inscrire à une newsletter, acheter un produit/service, etc...</em></p>
<p><img src="https://i.imgur.com/1a7s4aw.png" alt="Créer un objectif sur Matomo"/></p>
<p>Renseignez l&#x27;action qui validera l&#x27;objectif depuis le champ <strong>Goal is triggered</strong>.</p>
<p>En général, cela peut être une visite sur une URL en particulier ou un <a href="https://fr.matomo.org/docs/event-tracking/">event matomo</a>.</p>
<h3>Configurer les étapes du tunnel</h3>
<p>Si votre objectif est atteignable uniquement après une série d&#x27;actions il vous faut configurer les étapes de votre tunnel.</p>
<p><img src="https://i.imgur.com/iQe0NXN.png" alt="Créer un tunnel sur Matomo"/></p>
<p>C&#x27;est le même principe que pour la création d&#x27;un objectif. Ajoutez chaque action que vos visiteurs effectuent avant d&#x27;atteindre l&#x27;objectif :</p>
<ul>
<li>Visites sur des URLs spécifiques</li>
<li><a href="https://fr.matomo.org/docs/event-tracking/">Événements matomo</a></li>
</ul>
<p>Une fois la création de votre tunnel terminé, vous aurez accès à ce genre de données :</p>
<p><img src="https://i.imgur.com/2zXjL5R.png" alt="Exemple de tunnel Matomo"/></p>
<p>Vous avez accès au taux de conversion de chaque action et le pourcentage de visiteurs qui atteignent l&#x27;objectif désiré.</p>
<p>Et vous pouvez aussi savoir quelles sources de trafic converties le mieux :</p>
<p><img src="https://i.imgur.com/2uxAyhN.png" alt="Sources de trafic"/></p>
<p>PS: Sachez que Matomo permet l&#x27;anonymisation des données. Il est rarement utile de connaitre l&#x27;adresse IP ou le nom exact de nos visiteurs dans un contexte analytique.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tester l'envoi d'un e-mail en ligne de commande]]></title>
            <description><![CDATA[Comment tester simplement l'envoi d'un e-mail en ligne de commande sur Linux ?]]></description>
            <link>https://johackim.com/tester-envoi-email-ligne-de-commande?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/tester-envoi-email-ligne-de-commande</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 26 Aug 2020 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/tester-envoi-email-ligne-de-commande.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/tester-envoi-email-ligne-de-commande.jpg"/>
            <content:encoded><![CDATA[<p>Comment tester simplement l&#x27;envoi d&#x27;un e-mail en ligne de commande sur <a href="/linux" title="Linux">Linux</a> ?</p>

<p>Maintenant que <a href="https://github.com/turbodog/python-smtp-mail-sending-tester">smtptest</a> commence à se faire vieux, je viens de passer à un outil qui s&#x27;appelle <a href="https://github.com/jetmore/swaks">Swaks</a>.</p>
<p>Il se surnomme &quot;<strong>le couteau suisse pour SMTP</strong>&quot; et il est vraiment pratique !</p>
<h2>Installation</h2>
<p>Pour l&#x27;installer sur Arch Linux c&#x27;est très simple :</p>
<pre><code class="language-bash">sudo pacman -S swaks
</code></pre>
<p>Pour les autres distributions, vous pouvez directement télécharger le script Perl :</p>
<pre><code class="language-bash">wget https://jetmore.org/john/code/swaks/files/swaks-20201014.0/swaks
chmod +x swaks
mv swaks /usr/local/bin/
</code></pre>
<h2>Utilisation</h2>
<p>Voilà la commande que j&#x27;utilise :</p>
<pre><code class="language-bash">swaks -au &lt;user&gt; --from &lt;from_address&gt; -ap &lt;password&gt; -s &lt;server&gt;:&lt;port&gt; -tls -a LOGIN --to &lt;to_address&gt;
</code></pre>
<p>Exemple :</p>
<pre><code class="language-bash">swaks --from sender@mydomain.com -au sender@mydomain.com -ap p@ssw0rd -s smtp.mydomain.com:587 -tls -a LOGIN --to recipient@example.com
</code></pre>
<p>Cela va tout simplement <strong>envoyer un e-mail de test à un destinataire</strong> et un code d&#x27;erreur sera affiché en cas de problème ;)</p>
<p>Et si vous voulez entrer votre mot de passe dans un prompt sécurisé :</p>
<pre><code class="language-bash">swaks --from &lt;email&gt; -au &lt;email&gt; -s smtp.example.com:587 --protect-prompt -tls -a LOGIN --to &lt;email&gt;
</code></pre>
<p>J&#x27;espère que ça vous sera utile !</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/serveur-e-mail" title="Serveur e-mail" class="not-found">Serveur e-mail</a>

</li>
<li>
<a href="/e-mail" title="E-mail" class="not-found">E-mail</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Pourquoi certaines idées survivent et d'autres meurent ?]]></title>
            <description><![CDATA[Comment se fait-il que des histoires arrivent à traverser les âges et d'autres non ? Comment trouver la bonne formule pour qu'une histoire reste gravé dans la tête des gens ?]]></description>
            <link>https://johackim.com/pourquoi-certaines-idees-survivent-et-dautres-meurent?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/pourquoi-certaines-idees-survivent-et-dautres-meurent</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 19 Aug 2020 08:49:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/pourquoi-certaines-idees-survivent-et-dautres-meurent.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/pourquoi-certaines-idees-survivent-et-dautres-meurent.jpg"/>
            <content:encoded><![CDATA[<p>Comment se fait-il que des histoires arrivent à traverser les âges et d&#x27;autres non ? Comment trouver la bonne formule pour qu&#x27;une histoire reste gravée dans la mémoire des gens ?</p>
<p>En tant que <strong>créateur</strong>, il nous arrive très fréquemment de devoir <strong>raconter l&#x27;idée de notre projet</strong>.</p>
<p>Un livre, une application mobile, un projet politique, une formation, un album de musique... Chaque idée de projet mérite une <strong>histoire dont tout le monde se souvient</strong>.</p>
<p>Dans le livre <a href="https://placedeslibraires.fr/livre/9782744066542-ces-idees-qui-collent-dan-heath/">Made To Stick</a>, les auteurs Chip et Dan Heath ont réussi à réunir <strong>6 principes</strong> communs à toutes les histoires qui ont durée dans le temps.</p>
<h2>Simplifiez votre message</h2>
<blockquote>
<p>La perfection est atteinte non pas lorsqu&#x27;il n&#x27;y a plus rien à ajouter, mais lorsqu&#x27;il n&#x27;y a plus rien à retirer.</p>
</blockquote>
<p>Une idée doit rester <strong>simple</strong>, être <strong>concise</strong> et garder uniquement l&#x27;<strong>essentiel</strong>.</p>
<p>Dire trois choses, c&#x27;est ne rien dire.</p>
<h2>Rendez votre message inattendu</h2>
<h3>Comment attirer l&#x27;attention des gens ?</h3>
<blockquote>
<p>La façon la plus élémentaire de capter l&#x27;attention est la suivante : <strong>briser un schéma</strong>, un modèle, bien ancré dans l&#x27;esprit de vos interlocuteurs.</p>
</blockquote>
<p>Utilisez la <strong>surprise</strong> pour attirer l&#x27;attention des gens.</p>
<p>Des idées naturellement adhésives proposent souvent des &quot;faits&quot; surprenants :</p>
<ul>
<li>&quot;La Grande Muraille de Chine est visible depuis l&#x27;espace&quot;.</li>
<li>&quot;Vous n&#x27;utilisez que 10% de votre cerveau&quot;.</li>
<li>&quot;Vous devriez boire huit verres d&#x27;eau par jour&quot;.</li>
</ul>
<h3>Comment garder leur attention ?</h3>
<blockquote>
<p>Le bon sens est l&#x27;ennemi juré des messages adhésifs. Si les gens comprennent déjà intuitivement ce que vous essayez de leur dire, à quoi bon se donner la peine de s&#x27;en souvenir ?</p>
</blockquote>
<p>Pour qu&#x27;une idée perdure, elle doit susciter l&#x27;<strong>intérêt</strong> et la <strong>curiosité</strong>.</p>
<p>Elle doit créer des manques dans les connaissances des gens avant de les combler.</p>
<p>Nous avons tendance à donner les faits d&#x27;emblée. Mais notre public doit d&#x27;abord prendre conscience qu&#x27;il a besoin de ces faits.</p>
<p>L&#x27;astuce, pour convaincre les autres qu&#x27;ils ont besoin de notre message, consiste à commencer par mettre en lumière tel ou tel savoir qu&#x27;il ne possèdent pas. En leur posant une question, par exemple, ou une devinette.</p>
<h2>Concrétisez votre message</h2>
<p>Les idées naturellement adhésives sont pleines d&#x27;images claires et lumineuses que les gens n&#x27;oublieront pas de sitôt.</p>
<p>En présentant tout sous forme d&#x27;images concrètes, l&#x27;ambiguïté et l&#x27;abstraction des phrases sans signification sont laissées loin derrière.</p>
<p>Les gens comprennent l&#x27;idée et s&#x27;en souviennent parce qu&#x27;ils peuvent la voir dans leur esprit.</p>
<h2>Rendez votre message crédible</h2>
<p>Qu&#x27;est-ce qui fait que les gens croient à une idée et en rejettent d&#x27;autres comme étant peu plausibles et manifestement fausses ?</p>
<p>En général, nous avons tendance à en tirer nos propres conclusions :</p>
<ul>
<li>Écouter les <strong>autorités</strong> que nous connaissons et auxquelles nous faisons confiance - ou du moins que nous respectons en l&#x27;absence de preuve d&#x27;incompétence.</li>
<li>Parler avec d&#x27;autres personnes qui ont une <strong>expérience personnelle</strong> dans le domaine concerné.</li>
<li>Prendre note de ce que <strong>les gens que nous admirons</strong> (peut-être des athlètes professionnels ou parfois des célébrités) approuvent.</li>
</ul>
<p>Il y a plusieurs choses que vous pouvez faire pour renforcer la crédibilité de votre idée :</p>
<ol>
<li>Ajoutez des <strong>détails concrets</strong>.</li>
<li>Intégrer des <strong>statistiques</strong> qui appuient vos points clés.</li>
<li>Transférer la crédibilité d&#x27;un domaine à l&#x27;autre.</li>
</ol>
<h2>Donnez de l&#x27;émotion à votre message</h2>
<blockquote>
<p>Si je regardais la masse, je ne ferais rien. Je regarde l&#x27;individu et j&#x27;agis. Mère Teresa</p>
</blockquote>
<p>Penser en termes statistique place les invidus dans une disposition d&#x27;esprit plus analytique. Ils sont alors moins enclins à laisse vibrer la corde émotionnelle.</p>
<p>Les organisations caritatives ne demandent pas aux gens de faire des dons pour la &quot;pauvreté africaine&quot;.</p>
<p>Elles demandent aux gens de parrainer un seul enfant africain ou de fournir une vache à un village.</p>
<ul>
<li><strong>Faire appel à l&#x27;intérêt personnel d&#x27;une personne</strong></li>
</ul>
<p>Par quoi les gens se sentent-ils concernés ? Par <strong>eux-mêmes</strong>. D&#x27;où l&#x27;intérêt d&#x27;en appeler à leur intérêt personnel.</p>
<p>C&#x27;est le <strong><a href="/benefice-du-benefice" title="bénéfice du bénéfice" class="not-found">bénéfice du bénéfice</a></strong> que vous devez expliquer. En d&#x27;autres termes, les consommateurs n&#x27;achètent pas des forêts de 0,5 millimètre. Ils achètent des trous de 0,5 millimètre pour pouvoir accrocher des photos de leurs enfants.</p>

<p>Le &quot;<strong><a href="/wiifm" title="qu&#x27;avez-vous à y gagner ?" class="not-found">qu&#x27;avez-vous à y gagner ?</a></strong>&quot;, dois être un élément centre de tout discours.</p>

<h2>Faites en sorte que votre message soit basé sur une histoire</h2>
<p>Les gens se souviennent des histoires bien plus facilement qu&#x27;une liste de faits.</p>
<p>Les histoires donnent aux gens l&#x27;énergie d&#x27;agir.</p>
<h2>Conclusion</h2>
<p>Les six principes aident les gens à :</p>
<ul>
<li>Être attentifs (Inattendu)</li>
<li>Comprendre et se souvenir (Concret)</li>
<li>Croire et être d&#x27;accord (Crédibilité)</li>
<li>Se sentir concernés (Émotion)</li>
<li>Agir (Histoire)</li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://placedeslibraires.fr/livre/9782744066542-ces-idees-qui-collent-dan-heath/">Ces idées qui collent - Chip et Dan Heath</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Arrêtez de demander si votre idée d'entreprise est bonne !]]></title>
            <description><![CDATA[Comment savoir si son idée est bonne quand tout le monde nous ment ?]]></description>
            <link>https://johackim.com/arretez-de-demander-si-votre-idee-d-entreprise-est-bonne?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/arretez-de-demander-si-votre-idee-d-entreprise-est-bonne</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 27 Dec 2019 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/arretez-de-demander-si-votre-idee-d-entreprise-est-bonne.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/arretez-de-demander-si-votre-idee-d-entreprise-est-bonne.jpg"/>
            <content:encoded><![CDATA[<p>Quand on débute dans l&#x27;entrepreneuriat, on a souvent tendance à demander à tout le monde si notre idée d&#x27;entreprise est bonne ou mauvaise. On aimerait avoir un retour immédiat sur la qualité de notre idée afin de décider si elle mérite d&#x27;exister ou non. Malheureusement, entre notre égo qui nous empêche de voir les choses objectivement, et la tendance naturelle des gens à nous mentir par politesse on n&#x27;arrive pas à valider notre idée.</p>
<p>À mes débuts, je me suis souvent retrouvé à <strong>pitcher mes idées d&#x27;entreprise</strong>.</p>
<p>Instinctivement, j&#x27;ai questionné tout le monde sur mes idées pour rapidement savoir si oui ou non je pouvais me permettre d&#x27;investir mon temps et mon argent dans l&#x27;une d&#x27;entre elles.</p>
<p>Mais, la plupart du temps, je me suis confronté à plusieurs problèmes :</p>
<ul>
<li>Je m&#x27;adressais aux <strong>mauvaises personnes</strong> et ils ne comprenaient rien à mon idée.</li>
<li>Je me retrouvais parfois à avoir des avis très positifs m&#x27;<strong>autopersuadant</strong> que mon idée était génial alors que c&#x27;était tout l&#x27;inverse.</li>
<li>Je passais plus de temps à essayer de convaincre la personne d&#x27;en face que mon idée est bonne plutôt que de simplement l&#x27;<strong>écouter</strong>.</li>
<li>Je récoltai de mauvaises réponses à cause de mes <strong>mauvaises questions</strong>.</li>
</ul>
<p>On se retrouve par la suite à faire évoluer notre projet n&#x27;importe comment, selon l&#x27;avis de n&#x27;importe qui, avec des questions posées n&#x27;importe comment.</p>
<p>Alors, laissez-moi vous dévoiler un secret...</p>
<p><strong>Il ne faut demander à personne si votre entreprise est une bonne idée !</strong></p>
<h2>Tout le monde vous ment</h2>
<ul>
<li>Votre entourage vous ment</li>
</ul>
<p>De manière générale, <strong>il est inutile de parler de votre idée</strong>, c&#x27;est une question qui incite les gens à vous mentir, et encore plus s’il s&#x27;agit de votre entourage (amoureux, amis, famille).</p>
<p>La personne en face de vous aura très souvent tendance à vous complimenter vous et votre idée, soit par politesse et gentillesse, soit pour se débarrasser de vous, car elle est occupée à faire autre chose.</p>
<p><strong>De plus, cela incite les gens à vous répondre sur la qualité de votre idée plutôt que de leurs problèmes.</strong></p>
<p>Et les résultats sont encore pires si vous passez plus de temps à défendre votre idée et votre <strong>égo</strong> qu&#x27;à écouter la personne parler de <strong>ses problèmes</strong>.</p>
<p>Alors que ce qui nous intéresse ce n&#x27;est pas de savoir si notre idée est géniale, mais plutôt de <strong>savoir si le problème existe</strong>, s’il est <strong>douloureux</strong> et bien <strong>reconnu</strong> par suffisamment de personnes.</p>
<ul>
<li>Même vos clients vous mentent</li>
</ul>
<p>Avant de disparaître, la compagnie aérienne Air Inter a cherché à savoir pourquoi les gens ne prenaient pas l’avion.</p>
<p>Pour ça, ils ont posé plusieurs questions aux personnes n&#x27;ayant jamais pris l&#x27;avion.</p>
<p>L&#x27;une des questions était &quot;<em>Quelle est la raison pour laquelle vous ne voyagez pas en avion ?</em>&quot;.</p>
<p>Plusieurs choix étaient proposés :</p>
<ul>
<li>C’est trop cher</li>
<li>C&#x27;est inconfortable</li>
<li>La peur</li>
<li>ect...</li>
</ul>
<p>Moins de 5% répondirent <strong>la peur</strong>.</p>
<p>Une autre question était &quot;<em>Connaissez-vous quelqu’un d’autre que vous qui ne prenne jamais l’avion ? Si oui quelle est la raison ?</em>&quot;</p>
<p>Près de <strong>95%</strong> répondirent &quot;<em>Oui je connais quelqu&#x27;un. <strong>Il a peur de l&#x27;avion</strong></em>&quot;.</p>
<p>En réalité, ils parlaient d&#x27;eux même...</p>
<p>Il est difficile de se juger soit même, d&#x27;être conscient de ses défauts, de les accepter et encore plus difficile de les avouer publiquement.</p>
<p>Dans tous les cas, <strong>ne prenez pas de décisions importantes en vous basant uniquement sur ce que les gens vous disent</strong>.</p>
<p>Quand la société aérienne s&#x27;est aperçu que la peur était la raison principale pour laquelle les gens ne voyagez pas en avion. Ils ont lancé une campagne publicitaire pour rassurer les gens qui eu l&#x27;effet totalement inverse.</p>
<p>&quot;<em>S’il y a autant de contrôles, c’est que ce doit être dangereux. Fuyons !</em>&quot;.</p>
<h2>Les gens ne savent pas ce qu&#x27;ils veulent</h2>
<blockquote>
<p>Ne demandez pas aux clients ce qu&#x27;ils veulent, découvrez-le. Ash Maurya</p>
</blockquote>
<p>Souvenez-vous de la dernière fois où vous êtes allé manger avec vos amis. N&#x27;était-ce pas la galère de choisir quoi manger ?</p>
<p>La plupart du temps, la conversation tourne en rond et sans fin :</p>
<p>&quot;<em>Je ne sais pas. Qu&#x27;est-ce que tu veux ?</em>&quot;</p>
<p><strong>La vérité dans tout ça, c&#x27;est que les gens ne savent pas ce qu&#x27;ils veulent jusqu&#x27;à ce qu&#x27;on leur propose.</strong></p>
<p>Il est plus facile de découvrir ce qu&#x27;ils désirent en leur posant des questions baséessur leurs <strong>actions passées (habitudes)<strong>ou</strong>ce qu&#x27;ils ne veulent pas</strong>.</p>
<h2>Comment valider son idée ?</h2>
<p>Du coup, comment faire pour valider son idée si tout le monde nous ment et que personne ne sait ce qu&#x27;il veut ?</p>
<p><strong>L&#x27;unique façon de vérifier que son idée est bonne, c&#x27;est vendre.</strong></p>
<p><strong>Le seul moyen de faire disparaitre le mensonge des gens est de se faire payer.</strong></p>
<p>Pour ça, la stratégie consiste à <strong>créer du contenu</strong> tout en donnant la possibilité d&#x27;acheter notre produit.</p>
<p>Il existe un terme populaire dans le monde des startups qui résume bien cette stratégie : &quot;<strong><a href="/fake-it-till-you-make-it" title="Fake it till you make it" class="not-found">Fake it till you make it</a></strong>&quot;.</p>

<p>Proposer à votre audience un produit en <strong>prévente</strong> dans le but de vérifier la réaction de votre marché cible avant la création du produit.</p>
<p>Cela peut se faire à l&#x27;aide d&#x27;une <a href="https://i.imgur.com/08VRypv.jpg">simple page de vente</a> ou bien d&#x27;une <a href="https://fr.ulule.com/netravaillezjamais/">campagne crowdfunding</a> par exemple.</p>
<p>Fixez-vous un objectif de X ventes pour Y prospects qualifiés, puis itérez sur l&#x27;amélioration de votre offre jusqu&#x27;à atteindre votre objectif.</p>
<h2>Conclusion</h2>
<p>Ce qu&#x27;il faut retenir de cet article est qu&#x27;<strong>on ne peut valider son idée de produit qu&#x27;en la confrontant à son marché</strong>.</p>
<p><strong>Il faut faire suffisamment preuve d&#x27;observation et d&#x27;empathie afin de découvrir et offrir aux gens ce qu&#x27;ils désirent.</strong></p>
<p>Ne pas oublier qu&#x27;une grande partie des résultats découlent aussi de <strong>notre intuition d&#x27;entrepreneur</strong>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://amzn.to/2sXXv9L">Ask - Ryan Levesque</a></li>
<li><a href="https://amzn.to/2o47wzt">Le Mom Test - Rob Fitzpatrick</a></li>
<li><a href="https://amzn.to/2Sn9W9N">La méthode Running Lean - Ash Maurya</a></li>
<li><a href="https://amzn.to/34PxdUo">The Entrepreneur&#x27;s Guide to Customer Development - Brant Cooper</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment contourner le pare-feu de mon école ?]]></title>
            <description><![CDATA[Que faire quand son école met tout en oeuvre pour pas que l'on accède à nos sites ou jeux préférés ?]]></description>
            <link>https://johackim.com/comment-contourner-le-pare-feu-de-mon-ecole?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-contourner-le-pare-feu-de-mon-ecole</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 02 Oct 2019 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-contourner-le-pare-feu-de-mon-ecole.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-contourner-le-pare-feu-de-mon-ecole.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/GFzjMHU.png"/><link rel="preload" as="image" href="https://i.imgur.com/pU0dKUh.png"/><p>Pendant mes études (il y a 4 ans déjà), du jour au lendemain, mon école a mis en place un système de <a href="/dpi" title="DPI">DPI</a> (deep packet inspection) pour contrôler plus efficacement les protocoles utilisés par les étudiants et bannir les VPNs de façon plus radicale que de simplement bloquer les ports sortants.</p>

<p><strong>Que faire quand son école met tout en œuvre pour pas que l&#x27;on accède à nos sites ou jeux préférés ?</strong></p>
<p>Avant tout, voici un petit rappel de ce que sont un <strong>VPN</strong> et un <strong>DPI</strong>.</p>
<h2>C&#x27;est quoi un VPN ?</h2>
<p>Un <strong>VPN</strong> (réseau privé virtuel) est un système permettant de créer un réseau privé entre deux ordinateurs. Il peut être utilisé dans les entreprises afin de pouvoir accéder à des serveurs distants, ou pour se protéger de l&#x27;espionnage et de la censure.</p>
<h2>C&#x27;est quoi un DPI ?</h2>
<p><strong>DPI</strong> ou inspection profonde de paquets (deep packet inspection) est un système utilisé par certaines écoles, organisations ou gouvernements (ex: la Chine), pour analyser, identifier et filtrer le trafic Internet de manière profonde.</p>
<p>C&#x27;est par ce moyen qu&#x27;un pays comme la chine censure tous les citoyens en interdisant l&#x27;utilisation de VPNs pour contrôler et limiter la population à l&#x27;utilisation de leurs applications et réseaux internes (Baidu, WeChat, ect...).</p>
<h2>Comment contourner un pare-feu (avec DPI) ?</h2>
<p>Au début, mon école avait mis en place un &quot;bête&quot; pare-feu bloquant l&#x27;accès à certains ports comme le port SSH (22). Pour le contourner, il suffisait de modifier le port du serveur distant dans un port plus traditionnel comme le port HTTP (80) ou HTTPS (443).</p>
<p>Mais plus tard, ils ont renforcé leur politique de &quot;sécurité&quot; en ajoutant un <strong>DPI</strong> afin de bloquer l&#x27;utilisation des protocoles <strong>VPN</strong>.</p>
<p>Malheureusement pour eux, et heureusement pour nous, il existe <strong>une méthode pour brouiller les pistes des DPI</strong>. Cette méthode consiste à <strong>injecter des paquets</strong> dans les protocoles utilisés afin d&#x27;<strong>éviter leurs détections</strong>. On appelle ça une <strong>méthode d&#x27;obfuscation.</strong></p>
<p>Pour mettre ça en place, il existe deux moyens, VyprVPN (solution payante) et Obfsproxy (solution gratuite).</p>
<h2>VyprVPN</h2>
<p>La méthode la plus <strong>simple et rapide</strong> à mettre en place est <a href="https://vyprvpn.com/fr">la solution VPN vyprvpn</a>. Ce VPN utilise une technologie appelée <strong>Chameleon™</strong> qui injecte des paquets pour brouiller les pistes des DPI.</p>
<p><img src="https://i.imgur.com/GFzjMHU.png" alt="Technologie Chameleon™"/></p>
<p>L&#x27;installation est simple et peut se faire sur la plupart des périphériques (Windows, macOS, <a href="/linux" title="Linux">Linux</a>, Android, iOS).</p>

<h2>Obfsproxy</h2>
<p>Cette méthode est gratuite, mais <strong>moins facile</strong> à mettre en place.</p>
<p>Prérequis :</p>
<ul>
<li>
Un serveur <a href="/linux" title="Linux">Linux</a> avec un accès SSH

</li>
</ul>
<p>On installe et exécute obfsproxy sur un serveur Linux distant :</p>
<pre><code class="language-bash">sudo apt-get update
sudo apt-get install -y python-pip
sudo pip install obfsproxy

obfsproxy --log-min-severity=info obfs3 --dest=127.0.0.1:22 server 0.0.0.0:8080
</code></pre>
<p>On exécute obfsproxy sur notre ordinateur :</p>
<pre><code class="language-bash">obfsproxy --log-min-severity=info obfs2 --dest=&lt;server-ip&gt;:8080 client 127.0.0.1:9090
</code></pre>
<p>On lance une commande SSH pour se connecter à notre serveur SSH par l&#x27;intermédiaire de obfsproxy :</p>
<pre><code class="language-bash">ssh root@127.0.0.1 -p 9090 -C -N -vvv -D 127.0.0.1:7171
</code></pre>
<p>Puis on configure les paramètres réseau de notre navigateur pour faire passer tout notre trafic sur notre tunnel SSH :</p>
<p><img src="https://i.imgur.com/pU0dKUh.png" alt="Paramètres réseau (firefox)"/></p>
<p>Et voilà ! On peut désormais accéder à tous nos sites préférés sans se faire censurer 😃</p>
<h2>Conclusion</h2>
<p>Je trouve ça dommage que certaines écoles utilisent ce genre de pratiques plutôt que l&#x27;<strong>éducation</strong>, pour empêcher les étudiants de naviguer librement.</p>
<p>Ce n&#x27;est peut-être pas le cas de tous, mais j&#x27;ai personnellement du mal à évoluer dans une structure où je me sens <strong>traqué</strong> et observé comme si quelqu&#x27;un se trouvait juste derrière mon dos pendant que je navigue sur internet, cela provoque de l&#x27;<strong>autocensure</strong> et ne permet en rien l&#x27;<strong>émancipation</strong> des élèves.</p>
<p>Et puis il y aura toujours des petits malins comme nous pour <strong>contourner cette censure</strong>.</p>
<p>N&#x27;hésitez pas à me poser des questions en commentaire si vous avez besoin d&#x27;aide sur l&#x27;installation d&#x27;une des deux méthodes ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/cybersecurite" title="Cybersécurité">Cybersécurité</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment trouver de nouvelles idées avec la méthode Hexagone ?]]></title>
            <description><![CDATA[J'ai récemment découvert via une conférence TED, une méthode très pratique qui permet d'explorer et de trouver de nouvelles idées à partir d'une idée déjà existante.]]></description>
            <link>https://johackim.com/comment-trouver-idees-methode-hexagone?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-trouver-idees-methode-hexagone</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 18 Sep 2019 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-trouver-idees-methode-hexagone.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-trouver-idees-methode-hexagone.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/RVNXz0p.png"/><p>J&#x27;ai récemment découvert via une <a href="https://youtube.com/watch?v=fYnJPtEJj4s">conférence TED</a>, une méthode très pratique qui permet d&#x27;explorer et de trouver de nouvelles idées à partir d&#x27;une idée déjà existante.</p>
<p><img src="https://i.imgur.com/RVNXz0p.png" alt="La méthode Hexagone"/></p>
<p>En partant d&#x27;une idée X il est possible d&#x27;en trouver une nouvelle via 6 manières différentes :</p>
<h2>1. Xᵈ</h2>
<p>Première manière de faire, on part avec une idée X d&#x27;un domaine Y et on essai de l&#x27;adapter dans un autre domaine.</p>
<p><strong>Formule</strong> : X pour Y =&gt; X pour … ?</p>
<p><strong>Exemples</strong> :</p>
<ul>
<li>Uber pour les taxis -&gt; Uber pour les services de nettoyage à domicile</li>
<li>Plateforme pour partager des photos (Flickr) -&gt; Platforme pour partager des vidéos (YouTube)</li>
<li>Des airbags pour les voitures -&gt; Airbags pour les vélos</li>
</ul>
<h2>2. X + Y</h2>
<p>Deuxième manière de faire, on prend une idée X auquel on ajoute une idée Y.</p>
<p><strong>Formule</strong> : X + Y = … ?</p>
<p><strong>Exemples</strong> :</p>
<ul>
<li>Jeux + Apprentissage d&#x27;une langue -&gt; Duolingo</li>
<li>Psychologie + Économie -&gt; Finance comportementale</li>
</ul>
<h2>3. X↑</h2>
<p>Trouver tous les problèmes possibles qu&#x27;une idée peut résoudre. Une idée qui résout un problème peut en résoudre beaucoup d&#x27;autres.</p>
<p><strong>Formule</strong> : Avec un marteau, trouvez tous les clous</p>
<p><strong>Exemples</strong> :</p>
<ul>
<li>Les serviettes hygiéniques étaient utilisées à l&#x27;origine pour panser les blessures des soldats pendant la Seconde Guerre mondiale.</li>
<li>Le rince-bouche a été conçu à l&#x27;origine pour être un désinfectant à utiliser en chirurgie.</li>
</ul>
<h2>4. X↓</h2>
<p>Trouver toutes les solutions possibles au problème que vous essayez de résoudre.</p>
<p><strong>Formule</strong> : Avec un clou, trouvez tous les marteaux</p>
<h2>5. X++</h2>
<p>Prendre une idée X et lui ajouter un adjectif (économique, luxueux, écologique, démocratique, social, etc...)</p>
<p><strong>Formule</strong> : X + Adjectif = … ?</p>
<p><strong>Exemples</strong> :</p>
<ul>
<li>Location de voiture + sociale -&gt; covoiturage</li>
<li>Voyages-SNCF + simple -&gt; Trainline (Capitaine Train)</li>
</ul>
<h2>6. X̄</h2>
<p>Faire exactement le contraire de ce que l&#x27;on pense.</p>
<p><strong>Formule</strong> : Faites exactement le contraire</p>
<p><strong>Exemples</strong> :</p>
<ul>
<li>Banque avec plein de bureaux dans le monde -&gt; Banque 100% en ligne</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Prenez de meilleures décisions grâce aux modèles mentaux]]></title>
            <description><![CDATA[Les modèles mentaux sont votre boîte à outils mentale pour prendre des décisions et comprendre comment le monde fonctionne réellement. Plus vous avez d'outils, mieux vous êtes équipé pour prendre de bonnes décisions.]]></description>
            <link>https://johackim.com/prenez-de-meilleures-decisions-grace-aux-modeles-mentaux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/prenez-de-meilleures-decisions-grace-aux-modeles-mentaux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 11 Sep 2019 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/prenez-de-meilleures-decisions-grace-aux-modeles-mentaux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/prenez-de-meilleures-decisions-grace-aux-modeles-mentaux.jpg"/>
            <content:encoded><![CDATA[<p>Les <strong>modèles mentaux</strong> sont votre <strong>boîte à outils mentale</strong> pour prendre des décisions et <strong>comprendre comment le monde fonctionne réellement.</strong> Plus vous avez d&#x27;outils, mieux vous êtes équipé pour <strong>prendre de bonnes décisions</strong>.</p>
<p>Chaque jour, notre cerveau guide nos décisions et nos actes. Nous avons tous notre propre vision du monde et nous sommes tous impactés par des <strong>biais cognitifs</strong> qui influencent notre <strong>prise de décision</strong>.</p>
<p>Pour éviter les mauvais choix, il faut prendre conscience que ces biais existent en chacun de nous et maitriser ce que l&#x27;on appelle des <strong><a href="https://wikiwand.com/en/Mental_model">modèles mentaux</a></strong>.</p>
<p>Un modèle mental représente <strong>une grande idée que l&#x27;on peut impliquer dans plusieurs domaines</strong> (l&#x27;entrepreneuriat, la politique, la guerre, le marketing, la séduction, philosophie etc...) afin d&#x27;aider à la prise de décision.</p>
<p>Il s&#x27;agit d&#x27;un principe que j&#x27;ai découvert dans le livre &quot;Le personal MBA&quot; de Josh Kaufman, initié par <strong>Charlie Munger</strong>, milliardaire et principal associé en affaires de l&#x27;investisseur Warren Buffett.</p>
<p>Pour vous donner des exemples, voici des exemples de modèles mentaux que j&#x27;essaie d&#x27;appliquer dans mon quotidien :</p>
<ul>
<li><strong>Biais cognitifs</strong> (Confirmation, Aversion à la perte, Association, Optimisme etc...)</li>
<li><strong>Facteurs d&#x27;influence</strong> (Preuve sociale, Réciprocité, Rareté, Appréciation, Autorité, Cohérence)</li>
<li>
<strong>Gestion de projet</strong> (<a href="/objectifs-smart" title="SMART">SMART</a>, <a href="/plan-de-90-jours" title="Plan de 90 jours" class="not-found">Plan de 90 jours</a>, <a href="/the-one-thing" title="The One Thing" class="not-found">The One Thing</a>, North Star)

</li>
<li><strong>Productivité</strong> (Inbox Zero, Loi de Pareto, Getting things done)</li>
<li>Autres (Stoïcisme, moyenne des 5 personnes, la règle des 33%, Lean Startup, Fake it until make it, les 5 pourquoi)</li>
</ul>
<p>D&#x27;après Charlie Munger, on ne peut rien savoir si l’on étudie uniquement les faits de manière indépendante.</p>
<p>Tout se regroupe et se recoupe. C&#x27;est pour cette raison qu&#x27;il vaut mieux se construire ce que Charlie Munger appelle un « <strong>réseau de modèles mentaux</strong> » que l&#x27;on peut appliquer lors de nos prises de décisions.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/modeles-mentaux" title="Modèles mentaux">Modèles mentaux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Les ressources d'un hacker indépendant]]></title>
            <link>https://johackim.com/ressources?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ressources</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 24 Jun 2019 12:57:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ressources.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ressources.jpg"/>
            <content:encoded><![CDATA[<p>Je vous partage ma liste personnelle de tous les outils que j&#x27;utilise, pour entreprendre, écrire, développer, faire du design, du marketing, du référencement etc...</p>
<h2>Création</h2>
<ul>
<li><a href="https://photopea.com/">Photoshop en ligne</a></li>
<li><a href="https://shutterstock.com/">Moteur de recherche d&#x27;image</a></li>
<li><a href="https://thenounproject.com/">Moteur de recherche d&#x27;icône</a></li>
<li><a href="https://draw.io/">Création de diagrammes en ligne</a></li>
<li><a href="https://landingfolio.com">Design inspiration</a></li>
<li><a href="https://canva.com/">Création d&#x27;images en ligne</a></li>
<li><a href="https://pablo.buffer.com/">Créer des images attrayantes en moins de 30 secondes</a></li>
<li><a href="https://placeit.net/">Placer le nom de sa marque sur des mockups</a></li>
<li><a href="https://beacon.by/">Créer un lead magnet</a></li>
<li><a href="http://tinify.com/">Compresser des images PNG et JPG</a></li>
<li><a href="https://kdenlive.org/">Logiciel de montage vidéo</a></li>
<li><a href="https://obsproject.com/">Logiciel de screencast</a></li>
<li><a href="https://musicformakers.com/">Music For Makers 1</a>, <a href="https://epidemicsound.com/">2</a>, <a href="https://chillhop.com/">3</a>, <a href="https://cchound.com/">4</a>, <a href="https://premiumbeat.com/">5</a></li>
<li><a href="https://designresourc.es/">Ressources de design</a></li>
<li><a href="https://listemoji.com/">Liste d&#x27;emojis</a></li>
<li><a href="https://resizer.in/">Agrandir une image</a></li>
<li><a href="https://manypixels.co/">Design illimités</a>, <a href="https://designpickle.com/">2</a>, <a href="https://kimp.io/">3</a></li>
<li><a href="https://copy.ai">IA pour écrire</a>, <a href="https://jasper.ai">2</a>, <a href="https://wordhero.co">3</a>, <a href="https://headlime.com">4</a>, <a href="https://rytr.me">5</a>, <a href="https://wordai.com">6</a></li>
<li><a href="https://xnview.com/en/xnretro/">Logiciel de retouche photo</a></li>
</ul>
<h2>Référencement / performance</h2>
<ul>
<li><a href="https://webpagetest.org/">Tester la performance d&#x27;un site internet</a></li>
<li><a href="https://web.archive.org/web/20171212101630/zeroblabla.io/seo/">Liste des bonnes pratiques SEO</a></li>
<li><a href="https://similarweb.com/fr">Analyser la qualité du référencement d&#x27;un site internet</a></li>
<li><a href="https://alexa.com/">Classement mondial des sites internet</a></li>
<li><a href="https://latency.apex.sh/">Vérifier la latence d&#x27;un site internet depuis plusieurs parties du monde</a></li>
<li><a href="http://debug.iframely.com/">Débugger les meta tags</a></li>
<li><a href="https://cdnfonts.com/">CDN pour les fonts</a></li>
</ul>
<h2>Rédaction</h2>
<ul>
<li><a href="https://linguee.fr/">Traduire des mots</a></li>
<li><a href="https://deepl.com/translator">Traduire des textes</a></li>
<li><a href="http://crisco.unicaen.fr/des/">Chercher des Synonymes</a></li>
<li><a href="https://antidote.info/">Correcteur d&#x27;orthographe</a></li>
<li><a href="http://tempsreel.nouvelobs.com/abc-lettres/lettre.html">Modèles de lettre</a></li>
<li><a href="https://emaildrips.com/">Inspiration email</a>, <a href="https://reallygoodemails.com/">2</a>, <a href="https://goodemailcopy.com/">3</a></li>
</ul>
<h2>Divers</h2>
<ul>
<li><a href="https://alternativeto.net/">Trouver une alternative à un logiciel</a></li>
<li><a href="https://libhunt.com/">Trouver une alternative à une librairie</a></li>
<li><a href="http://cloudconvert.org/">Convertir des fichier</a></li>
<li><a href="https://fast.com/">Speedtest</a></li>
<li><a href="https://etcher.io/">Gravez facilement des images sur des cartes SD et des clés USB</a></li>
<li><a href="https://privacytools.io/">Liste d&#x27;outils pour protéger votre vie privée en ligne</a></li>
<li><a href="https://namechk.com/">Vérifier la disponibilité d&#x27;un pseudo</a></li>
<li><a href="https://thegrowthlist.co/">Une liste de growth hacks</a></li>
<li><a href="https://pdfdrive.com">Trouver des fichiers PDF</a>, <a href="https://filechef.com/">2</a></li>
<li><a href="https://xmind.net/">Logiciel de mindmapping</a></li>
<li><a href="https://standardnotes.org/">Standardnotes</a></li>
<li><a href="https://mullvad.net">Mullvad</a></li>
<li><a href="https://toggl.com/">Toggl</a></li>
<li><a href="https://github.com/wallabag/wallabag">Wallabag</a></li>
<li><a href="https://readwise.io/">Readwise</a></li>
<li><a href="https://mailbrew.com/?aff=johackim">Mailbrew</a></li>
<li><a href="https://nextdns.io/?from=wrbpy5cs">Nextdns</a></li>
<li><a href="https://obsidian.md/">Obsidian</a></li>
<li><a href="https://hackaday.io/">Communauté de hackers</a></li>
<li><a href="https://app.bionic-reading.com/">Envoyer un article sur son kindle</a>, <a href="https://epub.press/">2</a>, <a href="https://txtpaper.com/">3</a>, <a href="https://instapaper.com/">4</a></li>
<li><a href="https://onehack.us/t/awesome-nice-list-treasure-explore-the-web-like-a-pro/213397">Awesome Nice List Treasure | Explore The Web Like A Pro</a></li>
<li><a href="https://soundprint.co/">Soundprint - Find Your Quiet Place</a></li>
<li><a href="https://usefulinterweb.com/">https://usefulinterweb.com/</a></li>
<li><a href="https://ourworldindata.org/">https://ourworldindata.org/</a></li>
<li><a href="https://freelearninglist.org/">https://freelearninglist.org/</a></li>
<li><a href="https://archivve.visualizevalue.com/">https://archivve.visualizevalue.com/</a></li>
<li><a href="https://trends.vc/archives/">https://trends.vc/archives/</a></li>
<li><a href="https://docusign.net">https://docusign.net</a></li>
<li><a href="https://yousign.com">https://yousign.com</a></li>
<li><a href="https://ideel.io">https://ideel.io</a></li>
<li><a href="https://papernest.com">https://papernest.com</a></li>
</ul>
<h2>Sources d&#x27;inspiration</h2>
<ul>
<li><a href="https://emaildrips.com">https://emaildrips.com</a></li>
<li><a href="https://landingfolio.com">https://landingfolio.com</a></li>
<li><a href="https://tailwindui.com">https://tailwindui.com</a></li>
<li><a href="https://flowbite.com">https://flowbite.com</a></li>
<li><a href="https://pageflows.com">https://pageflows.com</a></li>
<li><a href="https://saasblocks.app">https://saasblocks.app</a></li>
<li><a href="https://thenounproject.com">https://thenounproject.com</a></li>
<li><a href="https://websitevice.com">https://websitevice.com</a></li>
<li><a href="https://fmhy.net/devtools#frontend-tools">https://fmhy.net/devtools#frontend-tools</a></li>
</ul>
<h2>Lignes de commande linux</h2>
<pre><code class="language-bash">- ncdu # Moyen rapide de voir quels répertoires utilisent votre espace disque
- ncmpcpp # Lecteur de musique
- newsboat # Client RSS
- trash # Supprimer des fichiers non définitivement
- vim # Editeur
- cheat # https://github.com/chrisallenlane/cheat
- cloudconvert # Convertir tout type de fichiers
- youtube-dl # Télécharger des vidéo YouTube, Vimeo, Daylimotion, YouP...
- mat # Supprimer les metadata d&#x27;un fichier
- fast # Speedtest
- bleachbit # Ccleaner alternative
- mpw # Passwordless solution
- kpcli # Client KeyPass
- tmux # Multiplexeur de terminal
- subliminal # Télécharger les sous-titres d&#x27;un fichier vidéo
- borg # Backups chiffrés
- rdcli # https://github.com/johackim/rdcli
- alexa # https://github.com/johackim/alexa-cli
- http # Client http
- ag # Commande grep 2.0
- fd # Commande alternative à find
- ack # Grep amélioré
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[La méthode Inbox Zero pour gagner en productivité]]></title>
            <description><![CDATA[Pendant très longtemps, je suis resté en alerte à chaque message reçu (email, SMS, actualité...). Je passais plus de temps à lire et répondre à mes messages qu'à réaliser mes objectifs. Grâce à la méthode Inbox Zero je peux désormais me consacrer à l'essentiel de mes objectifs !]]></description>
            <link>https://johackim.com/la-methode-inbox-zero-pour-gagner-en-productivite?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/la-methode-inbox-zero-pour-gagner-en-productivite</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 29 May 2019 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/la-methode-inbox-zero-pour-gagner-en-productivite.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/la-methode-inbox-zero-pour-gagner-en-productivite.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/OJpCq1j.png"/><link rel="preload" as="image" href="https://i.imgur.com/V3miMsL.png"/><p>Pendant très longtemps, je suis resté en alerte à chaque message reçu (email, SMS, actualité...). Je passais plus de temps à lire et répondre à mes messages qu&#x27;à réaliser mes objectifs. Grâce à une méthode créée par un expert de la productivité Merlin Mann, je peux désormais me consacrer à l&#x27;essentiel de mes objectifs en privilégiant la création à la réaction.</p>
<p><img src="https://i.imgur.com/OJpCq1j.png" alt="La méthode Inbox Zero"/></p>
<p>Le fonctionnement de cette méthode est très simple :</p>
<ol>
<li>Dès que vous lisez un message (email, SMS, actualité, etc...) qui ne requiert aucune action de votre part, vous l&#x27;<strong>archivez</strong>.</li>
<li>Si le message demande une action de votre part, vous l&#x27;exécutez immédiatement puis vous <strong>archivez</strong> le message.</li>
<li>Si vous n&#x27;avez pas le temps, ajoutez la tâche à exécuter dans votre To-Do List et <strong>archivez</strong> le message.</li>
</ol>
<p>Il existe aussi l&#x27;action &quot;<strong>snooze</strong>&quot; (que je n&#x27;utilise pas), qui consiste à décaler la réception de votre message. En gros, c&#x27;est le même principe que lorsque vous décalez l&#x27;alarme de votre réveil le matin, sauf que là il s&#x27;agit d&#x27;un message.</p>
<p>Dans tous les cas, <strong>le but est de vider votre boite de réception</strong> afin de ne pas encombrer son esprit avec des messages qui s&#x27;empilent à l&#x27;infini, créant <strong>stress</strong> et <strong>désorganisation</strong>.</p>
<p>Et vous pouvez utiliser cette méthode <strong>Inbox Zero</strong> pour tout type de messages !</p>
<ul>
<li>Vos <strong>SMS</strong>. L&#x27;application signal (que je recommande fortement pour protéger votre vie privée) intègre nativement un système d&#x27;archivage</li>
<li>Vos <strong>emails</strong>, avec votre client mail favori (Outlook, Gmail, Thunderbird, Mailspring, Rainloop, etc...)</li>
<li>Vos <strong>actualités</strong>, avec votre agrégateur de news (Feedly, Inoreader, Tiny Tiny RSS, etc...)</li>
</ul>
<p><img src="https://i.imgur.com/V3miMsL.png" alt="Inbox Zero sur Signal"/></p>
<p>Personnellement, je traite mes messages <strong>2 fois par jour</strong>. Une fois le midi et une fois le soir. Le principe est de <strong>diminuer</strong> et <strong>grouper</strong> ces actions répétitives afin de se <strong>libérer l&#x27;esprit</strong> et éviter d&#x27;alterner en continu entre les actions en cours et celles qui nous éloignent de l&#x27;<strong>essentiel</strong>.</p>
<p>À la base, le principe d&#x27;un mail ou d&#x27;un SMS, c&#x27;est d&#x27;être <strong>asynchrone</strong>. Que ce soit dans un <strong>contexte personnel ou professionnel</strong>, personne ne vous en voudra de ne pas répondre dans l&#x27;heure à votre message.</p>
<p>J&#x27;ai moi aussi été accro à cette <strong>hormone de la récompense</strong>, la <strong><a href="/dopamine" title="Dopamine">Dopamine</a></strong>, qui génère une sensation de satisfaction du simple fait de recevoir un nouveau message. Cette <strong>hormone</strong> qui nous incite à réaliser une action avec une <strong>gratification immédiate</strong> plutôt qu&#x27;une action qui s&#x27;inscrit dans la durée.</p>

<p>On a souvent le réflexe de répondre immédiatement à chaque message par peur de l&#x27;<strong>urgence</strong>. Cette urgence étant très <strong>rare</strong>, est-ce que cette peur doit justifier tout ce <strong>temps perdu</strong> ?</p>
<p>Aujourd&#x27;hui, j&#x27;arrive à limiter mon usage à deux fois par jour, ce qui déjà un très bien. Il vaut mieux y aller progressivement. Des personnes comme Tim Ferris ont décidé de répondre uniquement <strong>une fois par semaine</strong> à leurs messages. Et d&#x27;autres ont décidé de <strong>ne plus répondre</strong> à leurs emails, comme Sébastien Night. Et ces personnes se portent très bien !</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Les meilleurs conseils pour créer un business]]></title>
            <description><![CDATA[Y Combinator a publié en 2017 un article rassemblant les meilleurs conseils pour les entrepreneurs qui souhaitent créer leur entreprise. Voici un résumé en français.]]></description>
            <link>https://johackim.com/les-meilleurs-conseils-pour-creer-un-business?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/les-meilleurs-conseils-pour-creer-un-business</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 22 Apr 2019 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/les-meilleurs-conseils-pour-creer-un-business.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/les-meilleurs-conseils-pour-creer-un-business.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu archivé</p>
                    </div>
                </blockquote>
<p>Y Combinator, une entreprise américaine de financement de startup, que l&#x27;on découvre souvent par le biais de <a href="https://news.ycombinator.com/">Hacker News</a>, a publié en 2017 un article rassemblant plusieurs conseils pour les entrepreneurs qui souhaitent créer leur entreprise. Voici un résumé en français de leurs meilleurs conseils.</p>
<ul>
<li><strong>Lancez-vous rapidement</strong></li>
<li><strong>Construisez quelque chose que les gens veulent</strong></li>
<li>Faites des choses qui ne scalent pas</li>
<li>Trouvez un moyen d&#x27;accomplir 90% de ce que vous voulez avec seulement 10% du travail (<strong>le principe 90/10</strong>)</li>
<li>Écrire du code - parler aux utilisateurs</li>
<li>Évitez les conférences à moins qu&#x27;elles ne soient le meilleur moyen d&#x27;attirer les clients</li>
<li>Les startups ne peuvent résoudre qu&#x27;un seul problème à la fois</li>
<li><strong>Ne mettez pas votre équipe/produit à l&#x27;échelle tant que vous n&#x27;avez pas construit quelque chose que les gens veulent</strong></li>
<li>Parfois, vous devez mettre à la porte vos clients (avoir 10 clients qui ont un problème brûlant est bien mieux que 1000 clients qui ont un ennui passager)</li>
<li>Ignorez vos concurrents, vous avez plus de chances de vous suicider que de vous faire tuer</li>
<li><strong>Trouvez de 10 à 100 clients qui aiment votre produit</strong></li>
<li>La plupart des entreprises ne meurent pas parce qu&#x27;elles sont à court d&#x27;argent</li>
<li>Pre-product market fit - faites des choses qui n&#x27;évoluent pas : <strong>restez petit et agile</strong></li>
<li>Sois gentil ! Ou au moins, ne sois pas un abruti</li>
<li>Dormez et faites de l&#x27;exercice - prenez soin de vous</li>
</ul>
<p>Références :</p>
<ul>
<li><a href="https://blog.ycombinator.com/ycs-essential-startup-advice/">The Pocket Guide of Essential YC Advice</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment débugger un problème de manière efficace ?]]></title>
            <description><![CDATA[Aujourd'hui, je partage avec vous mon processus pour résoudre des problèmes en apparence complexe, mais qui peuvent se résoudre facilement si l'on utilise la bonne méthode.]]></description>
            <link>https://johackim.com/comment-debugger-un-probleme-de-maniere-efficace?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-debugger-un-probleme-de-maniere-efficace</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Sun, 20 Jan 2019 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-debugger-un-probleme-de-maniere-efficace.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-debugger-un-probleme-de-maniere-efficace.jpg"/>
            <content:encoded><![CDATA[<p>Aujourd&#x27;hui, je partage avec vous mon processus pour résoudre des problèmes en apparence complexes, mais qui peuvent se résoudre facilement si l&#x27;on utilise la bonne méthode.</p>
<p>Je me suis souvent retrouvé face à des <strong>problèmes techniques</strong> en apparence <strong>très complexes</strong> et qui m&#x27;ont demandé parfois des dizaines d&#x27;heures pour les résoudre... Face à la <strong>complexité</strong> de certains problèmes, j&#x27;ai passé mon temps à :</p>
<ul>
<li>Faire des suppositions plutôt qu&#x27;à isoler le problème pour mieux le comprendre.</li>
<li>Copier-coller bêtement le problème sur un moteur de recherche sans poser le problème sur papier de manière claire et précise.</li>
<li>Faire des va-et-vient, et réparer le problème de manière temporaire plutôt que le résoudre à la source et de manière définitive.</li>
</ul>
<p>Récemment, j&#x27;ai réussi à réparer un problème qui arrivait de manière récurrente et aléatoire sur <a href="https://ethibox.fr">mon infrastructure web</a>.</p>
<p>Du coup, j&#x27;en profite pour créer et partager avec vous une sorte de procédure sous la forme d&#x27;une <strong>checklist de 5 étapes</strong> à réaliser dans l&#x27;ordre :</p>
<ol>
<li>Je supprime le superflu et réduis mon environnement de travail le plus possible pour <strong>isoler le problème</strong></li>
<li>Je trouve le moyen de <strong>reproduire ce problème</strong> à tous les coups (minimum 5 à 10 fois d&#x27;affilées) et avec le moins d&#x27;étapes possible</li>
<li>Si l&#x27;erreur ne se reproduit pas à tous les coups, je reviens à l&#x27;étape 1 dans le but de <strong>supprimer les comportements aléatoires</strong></li>
<li>Une fois le problème correctement isolé et facilement reproductible, je rédige sur papier une <strong>description précise et détaillée</strong> du problème, comme si je m&#x27;adressai à un collègue</li>
<li>Enfin, après avoir <strong>collecté toutes les données</strong> en lien avec le problème, je tente de résoudre le problème (avec des recherches internet ci-besoin). Sinon je <strong>délègue</strong> le bug à quelqu&#x27;un d&#x27;autre en prenant soin de lui donner tout ce que je sais sur celui-ci.</li>
</ol>
<p>Pour résumer, pour résoudre un bug, il faut simplement <strong>isoler notre problème</strong> dans un <strong>environnement minimal</strong>, le <strong>reproduire</strong> au moins 10 fois, <strong>collecter un maximum de données</strong> et <strong>décrire notre problème sur papier</strong>. De cette façon, <strong>on améliore notre compréhension</strong> du problème afin de mieux le résoudre.</p>
<p>Je suis quelqu’un de très visuel et le simple fait d&#x27;écrire le problème sur papier m&#x27;aide beaucoup à le résoudre.</p>
<p>Il existe aussi la méthode <a href="http://wiki.c2.com/?RubberDucking"><strong>Rubber Ducking</strong></a> qui consiste à placer un canard en caoutchouc près de soi et de lui décrire le problème. Le fait de dire votre problème à haute voix rendra la solution plus claire.</p>
<p>Je ferai prochainement un article sur l&#x27;utilisation de la commande <code>git bisect run</code>, qui permet d&#x27;<strong>automatiser</strong> plus ou moins le processus de debug.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://web.archive.org/web/20170815171118/makinggoodsoftware.com/2009/06/14/7-steps-to-fix-an-error/">Ressource supplémentaire</a></li>
<li><a href="https://stackoverflow.com/help/minimal-reproducible-example">https://stackoverflow.com/help/minimal-reproducible-example</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[10 étapes pour prototyper et tester un business en ligne en 1 jour]]></title>
            <description><![CDATA[Aujourd'hui je partage avec vous un ensemble de méthodes pour prototype et vérifier en un jour la viabilité, faisabilité et désirabilité d'un business en ligne.]]></description>
            <link>https://johackim.com/10-etapes-pour-prototyper-et-tester-un-business-en-ligne-en-1-jour?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/10-etapes-pour-prototyper-et-tester-un-business-en-ligne-en-1-jour</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Wed, 09 Jan 2019 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/10-etapes-pour-prototyper-et-tester-un-business-en-ligne-en-1-jour.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/10-etapes-pour-prototyper-et-tester-un-business-en-ligne-en-1-jour.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/BJZbmUC.jpeg"/><link rel="preload" as="image" href="https://i.imgur.com/KWW6JP0.png"/><link rel="preload" as="image" href="https://i.imgur.com/GnLoLnM.png"/><link rel="preload" as="image" href="https://i.imgur.com/ecMmsdd.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/OUL8a0h.png"/><link rel="preload" as="image" href="https://i.imgur.com/smx9Ayv.png"/><link rel="preload" as="image" href="https://i.imgur.com/nWyBqbN.png"/><p>Aujourd&#x27;hui, je partage avec vous un ensemble de méthodes pour prototyper et tester en un jour la viabilité, faisabilité et désirabilité d&#x27;un business en ligne.</p>
<h2>1. Trouver un point de douleur</h2>
<p>Mes projets commencent généralement par un <strong>pain point</strong> (&quot;point de douleur&quot; en français). Il s’agit d&#x27;un problème précis, que je rencontre moi ou un segment clientèle précis, et qui ne possède pas encore de solutions viables.</p>
<p>Il est possible de trouver ce <strong>pain point</strong> de plusieurs manières :</p>
<ul>
<li>En rencontrant soi-même ce point de douleur</li>
<li>En observant des personnes dans leur quotidien pour découvrir ce qu&#x27;ils désirent. Le but étant de ne pas demander au client ce qu&#x27;il veut, mais plutôt de l&#x27;observer dans ce qu&#x27;il fait. Un outil comme <strong><a href="http://gamestorming.com/wp-content/uploads/2017/07/Empathy-Map-Canvas-006.pdf">la carte d&#x27;empathie</a></strong> peut-être utile dans ce contexte d&#x27;observation.</li>
<li>Ou à n&#x27;importe quel moment, en lisant un livre, en faisant du sport ou en écoutant un podcast par exemple</li>
</ul>
<p><img src="https://i.imgur.com/BJZbmUC.jpeg" alt="Carte d&#x27;empathie"/></p>
<p>Une fois ce <strong>pain point</strong> trouvé, le premier réflexe, noter cette idée dans un coin et vérifier qu&#x27;il ne possède pas de solution viable déjà existante (via <a href="https://alternativeto.net/">alternativeto</a> ou votre moteur de recherche favoris).</p>
<p>Quand l&#x27;idée a pris le temps de mûrir, je passe aux étapes suivantes.</p>
<p>Pas besoin de compétences techniques pour lancer un projet. Un ordinateur, un simple crayon et une feuille suffisent.</p>
<h2>2. Un business model d&#x27;une page</h2>
<blockquote>
<p>Votre produit n&#x27;est pas le produit. Votre business model c&#x27;est le produit.
<strong>La méthode RUNNING LEAN - Ash Maurya</strong></p>
</blockquote>
<p>Je réalise un <strong>Lean Canvas</strong> ou un <strong><a href="https://youtube.com/watch?v=QoAOzMTLP5s">Business Model Canvas</a></strong>.</p>
<p>Il s&#x27;agit d&#x27;un <strong>business model</strong> recensé sur une simple feuille de papier, rapide à créer et facilement transportable.</p>
<p>C&#x27;est à ce moment que l&#x27;on peut vérifier la <strong>viabilité</strong> du projet.</p>
<p><img src="https://i.imgur.com/KWW6JP0.png" alt="Lean Canvas"/></p>
<h3>2.2. Vérifier l&#x27;adéquation de votre produit et le profil client</h3>
<p>Il existe un moyen de vérifier de manière plus ou moins précise si votre <strong>proposition de valeur</strong> se trouve en accord avec le <strong>profil client</strong>.</p>
<p>Le canvas <strong>proposition de valeur</strong> créer par <a href="https://strategyzer.com/">Strategyzer</a> le permet.</p>
<p><a href="https://youtube.com/watch?v=BFK_WMkshL8">Voici une vidéo</a> réalisée par un des auteurs du livre si vous souhaitez en savoir plus.</p>
<p><img src="https://i.imgur.com/GnLoLnM.png" alt="Value Proposition Canvas"/></p>
<h2>3. Une phrase type pour pitcher son projet</h2>
<p>Utile pour bien cerner le but du projet et pitcher le projet correctement, je rédige un <strong>Elevator Pitch</strong> sous cette forme :</p>
<p><strong>Pour</strong>*[les personnes ciblées par le produit/le service]*</p>
<p><strong>qui souhaitent</strong>*[formulation du besoin des cibles]*,</p>
<p><strong>notre produit est</strong>*[description du type de produit/service]*</p>
<p><strong>qui</strong>*[description du bénéfice majeur apporté par la solution]*.</p>
<p><strong>A la différence de</strong>*[la concurrence/la pratique actuelle]*</p>
<p><strong>notre produit permet de</strong>*[éléments différenciateurs majeurs]*.</p>
<h2>4. Le profil client</h2>
<p>Un <strong>persona</strong> est une personne fictive à laquelle on assigne certaines caractéristiques (par exemple: âge, métier, aspirations, etc..). Il est censé représenter le profil type de notre solution. Cela permet de mettre au clair les personnes que l&#x27;on cible, de savoir à qui l&#x27;on s&#x27;adresse.</p>
<p><img src="https://i.imgur.com/ecMmsdd.jpg" alt="Persona canvas"/></p>
<h2>5. Un vocabulaire commun</h2>
<p>Les mots ont beaucoup d&#x27;importance quand on travaille à plusieurs sur un projet. Pour mieux se comprendre, il peut être utile de disposer d&#x27;un <strong>vocabulaire commun</strong>.</p>
<p>On définit et fixe un ensemble de mots qui correspond à notre solution. Ce vocabulaire fera partie intégrante du code source et sera utilisé par toutes les personnes qui participent au projet.</p>
<p>Ce principe se nomme <strong>Ubiquitous Language</strong> et est tiré du livre <a href="https://goodreads.com/book/show/179133.Domain_Driven_Design">Domain Driven Design</a>.</p>
<h2>6. Les maquettes graphiques</h2>
<p>Pour rapidement créer des <strong>mockups</strong> (maquette d&#x27;une interface utilisateur), vous pouvez utiliser un outil comme <a href="https://balsamiq.com/">balsamiq</a>.</p>
<p>Et si vous avez des notions en développement web, il est parfois plus rapide de directement prototyper votre solution sur <a href="https://codepen.io/">codepen.io</a> ou <a href="https://codesandbox.io">codesandbox.io</a>.</p>
<p>Sinon, une simple feuille et un crayon peuvent suffire.</p>
<p><img src="https://i.imgur.com/OUL8a0h.png" alt="Balsamiq mockup"/></p>
<h2>7. Le parcours utilisateur</h2>
<p>Définir le chemin que va parcourir l&#x27;utilisateur permet d&#x27;avoir une <strong>vue d&#x27;ensemble</strong> de l&#x27;application, et de rapidement se rendre compte si la solution assure une <strong>bonne expérience utilisateur</strong> ou pas.</p>
<p>Un exemple de bonne expérience utilisateur serait par exemple de suivre la <a href="https://wikiwand.com/fr/R%C3%A8gle_des_trois_clics">règle des trois clics</a>.</p>
<p>De mon côté, je le crée sous la forme d&#x27;un <strong>diagramme d&#x27;activité</strong>. Ça ressemble à ça :</p>
<p><img src="https://i.imgur.com/smx9Ayv.png" alt="Exemple de parcours utilisateur"/></p>
<h2>8. Une mini architecture technique</h2>
<p>Pour vérifier la <strong>faisabilité</strong> technique du projet, je réalise une mini <strong>architecture technique</strong>. C&#x27;est l&#x27;étape où je réfléchis à ce que je vais utiliser comme langage de programmation, framework et librairies. Généralement, je définis ce genre de composants :</p>
<ul>
<li>La partie <strong>Front-End</strong>, les librairies et frameworks utilisés pour développer les interfaces utilisateur.</li>
<li>La partie <strong>Back-End</strong>, tout ce qui se trouve côté serveur.</li>
<li>La <strong>base de données</strong>, quel type de base de données.</li>
<li>Quels <strong>serveurs</strong> vont être utilisés et chez quel <strong>hébergeur</strong>, sous quel système d&#x27;exploitation et avec quelle configuration matérielle. Dorénavant, je passe par <a href="https://ethibox.fr/?utm_source=johackim">ma propre infrastructure Ethibox</a>.</li>
</ul>
<p>Je réalise généralement cette <strong>architecture technique</strong> à l&#x27;aide de <a href="https://draw.io">draw.io</a>, mais encore une fois, un crayon et une feuille suffisent.</p>
<h2>9. Le produit minimum viable</h2>
<p>Pour ne pas partir dans un développement technique interminable, il est souvent préférable de se limiter à un simple <strong>MVP</strong> (produit minimum viable).</p>
<p>Un MVP peut se présenter sous la forme d&#x27;une <strong>landing page</strong> (page de capture avec un appel à l&#x27;action), d&#x27;une simple <strong>vidéo</strong> ou les deux.</p>
<p>Elle doit se présenter comme l&#x27;unique solution à l&#x27;unique problème de votre unique segment de clientèle.</p>
<p><strong>Note pour les développeurs</strong> : Dans le cas d&#x27;un projet avec comme cible des développeurs, j&#x27;ai tendance à écrire un simple fichier README.md que je publie sur Github page avec Docsify. Le résultat est plutôt joli et ça permet de suivre une logique de <a href="http://tom.preston-werner.com/2010/08/23/readme-driven-development.html">RDD</a>.</p>
<h2>10. La phase de test</h2>
<p>La dernière étape consiste à partager le projet, récupérer un maximum de <strong>feedbacks</strong>, et vérifier si notre solution répond réellement et correctement à un problème existant. C&#x27;est à ce moment que sera dévoilée la <strong>désirabilité</strong> du projet.</p>
<p>De manière plus concrète :</p>
<h3>On apporte un maximum de valeur sur le sujet du projet aux personnes concernées</h3>
<p>On évite de cibler tout le monde, on cherche une source de trafic et on apporte un maximum de valeur à ces personnes afin de leur faire découvrir notre solution.</p>
<h3>On demande aux personnes concernées et intéressées si elles souhaitent s&#x27;inscrire au projet</h3>
<p>Pour ça, il faut que le projet soit suffisamment attractif et persuasif.</p>
<p>Évidemment, on respecte la <strong>vie privée</strong>, on évite de jouer avec les emails des gens, et <strong>on ne partage aucune information à des tiers</strong>.</p>
<p>Personnellement je n&#x27;utilise pas de solution SaaS comme Google Analytics, MixPanel ou ClickFunnels. Aucune information ne sort de <a href="https://ethibox.fr">mon infrastructure</a>.</p>
<h3>On demande un maximum de feedback à ces personnes</h3>
<p>On privilégie les questions ouvertes tout en restant à l&#x27;écoute, le but n&#x27;étant pas de chercher à vendre le produit, mais plutôt de l&#x27;améliorer selon les besoins réels des utilisateurs.</p>
<p>On peut poser des questions du type :</p>
<ul>
<li>&quot;Quel est votre plus gros problème avec ce [domaine] ?&quot;</li>
<li>&quot;Comment vous sentiriez-vous si vous ne pouviez plus utiliser ce produit ?&quot;</li>
<li>&quot;Quelle solution utilisez-vous actuellement pour résoudre ce problème ?&quot;</li>
</ul>
<h3>On mesure les metrics en s&#x27;inspirant du framework AARRR</h3>
<ul>
<li><strong>A</strong>cquisition : Comment les visiteurs vous trouvent ?</li>
<li><strong>A</strong>ctivation : Première expérience de l’utilisateur</li>
<li><strong>R</strong>etention : L’utilisateur revient-il ?</li>
<li><strong>R</strong>eferral : Est-ce que vos utilisateurs sont suffisamment contents pour en parler autour d’eux ?</li>
<li><strong>R</strong>evenue : Comment gagnez-vous de l’argent ?</li>
</ul>
<h3>On fait évoluer le projet en fonction des enseignements</h3>
<p>À partir de là, je pense qu&#x27;<strong>il faut plus d&#x27;un jour</strong> pour tirer suffisamment d&#x27;enseignements. Si le <strong>taux de rétention</strong> est élevé, et que <strong>40%</strong> de vos utilisateurs déclarent qu&#x27;ils seraient très déçus s’ils ne pouvaient plus utiliser votre produit (<strong><a href="/test-de-sean-ellis" title="Test de Sean Ellis" class="not-found">Test de Sean Ellis</a></strong>), alors vous pouvez passer à l&#x27;<strong>étape de conception</strong>. Je parlerai de cette étape dans un prochain article.</p>

<p>Dans le cas contraire, je réitère ce processus de 10 étapes, je créer des hypothèses, et je valide ou non ces hypothèses en fonction des enseignements (metrics et feedbacks).</p>
<p>L&#x27;idéal pour votre produit serait qu&#x27;il réponde correctement à ces 3 axes (<strong>viabilité</strong>, <strong>faisabilité</strong> et <strong>désirabilité</strong>), en un minimum de temps et sans dépenser trop d&#x27;argent.</p>
<p><img src="https://i.imgur.com/nWyBqbN.png" alt="Viabilité + faisabilité + désirabilité = solution idéale"/></p>
<h2>Conclusion</h2>
<p>Cet article a été réalisé dans le contexte où l&#x27;on travaille seul en tant qu&#x27;<strong>entrepreneur indépendant</strong>. Quand on travaille seul, on prend le temps de chercher, de trouver son inspiration et de réfléchir.</p>
<p>Cependant, il est tout à fait possible de réaliser ces même étapes avec plusieurs personnes (un <strong>Scrum Master</strong>, un <strong>Product Owner</strong>, un ou plusieurs <strong>développeurs</strong>, etc...).</p>
<p>Théoriquement, si <strong>vous avez déjà une idée</strong> qui a pris le temps de mûrir, que vous êtes quelqu&#x27;un de très <strong>productif</strong>, que vous avez les <strong>bons outils</strong>, une bonne <strong>expérience</strong> et que vous avez déjà <strong>automatisé</strong> certains process au préalable, je pense qu&#x27;il est possible d&#x27;avoir des résultats très intéressant en <strong>1 jour</strong>, surtout si vous passez une grande partie de cette journée sur la <strong>phase de test</strong>.</p>
<p>J&#x27;ai essayé d&#x27;être le plus <strong>bref</strong> possible dans cet article, je vous conseille de lire les ressources ci-dessous si vous souhaitez aller plus loin.</p>
<p>N&#x27;hésitez pas à <strong>partager en commentaire</strong> quels sont vos process à vous ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://placedeslibraires.fr/livre/9782212566062">Sprint. Résoudre les problèmes et trouver de nouvelles idées en cinq jours</a>.</li>
<li><a href="https://placedeslibraires.fr/livre/9782354561239">La méthode Running Lean - Comment transformer votre idée en succès</a></li>
<li><a href="https://placedeslibraires.fr/livre/9782744066313">Value Proposition Design - Comment créer les produits et les services que veulent vos clients</a></li>
<li><a href="https://placedeslibraires.fr/livre/9782744064876">Business model nouvelle génération</a></li>
<li><a href="https://placedeslibraires.fr/livre/9780670921607">The Lean Startup</a></li>
<li><a href="https://placedeslibraires.fr/livre/9791092928228">Tout le monde n&#x27;a pas eu la chance de rater ses études</a></li>
<li><a href="https://marmelab.com/blog/2017/01/17/initialisation-des-projets.html">Le processus d&#x27;initialisation des projets chez Marmelab</a></li>
<li><a href="http://tom.preston-werner.com/2010/08/23/readme-driven-development.html">Readme Driven Development</a></li>
<li><a href="https://kitted.app/action/paper-prototype/0040">https://kitted.app/action/paper-prototype/0040</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Mon infrastructure en tant qu'hébergeur web indépendant]]></title>
            <description><![CDATA[En tant que membre des CHATONS (Collectif des Hébergeurs Alternatifs, Transparents, Ouverts, Neutres et Solidaires) et étant seul à maintenir les services de mes clients, je me suis conçu une infrastructure sécurisée, performante, scalable, automatisée et facile à maintenir.]]></description>
            <link>https://johackim.com/infrastructure-hebergeur-web-independant?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/infrastructure-hebergeur-web-independant</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 01 Jan 2019 18:40:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/infrastructure-hebergeur-web-independant.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/infrastructure-hebergeur-web-independant.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/e6l8DD5.png"/><link rel="preload" as="image" href="https://i.imgur.com/lO3QlRr.png"/><p>Je me suis récemment donné comme projet de devenir hébergeur indépendant chez les <strong>CHATONS</strong> (le <strong>C</strong>ollectif des <strong>H</strong>ébergeurs <strong>A</strong>lternatifs, <strong>T</strong>ransparents, <strong>O</strong>uverts, <strong>N</strong>eutres et <strong>S</strong>olidaires). Étant seul à maintenir les services de mes clients, j’ai dû concevoir une infrastructure <strong>sécurisée</strong>, <strong>performante</strong>, <strong>scalable</strong>, <strong>automatisée</strong> et <strong>facile à maintenir</strong>. Je vais à travers cet article vous décrire les étapes à suivre pour monter ce type d’infrastructure.</p>
<h2>1. Présentation de l&#x27;infrastructure</h2>
<p>Dans cette infrastructure, chaque application tourne sous forme d’un ou plusieurs conteneurs répartis sur un ou plusieurs serveurs selon leurs ressources disponibles.</p>
<p><img src="https://i.imgur.com/e6l8DD5.png" alt="Infrastructure"/></p>
<p>Les <strong>conteneurs</strong> permettent d’<strong>accélérer et faciliter le déploiement des applications</strong>, ils contiennent toutes les dépendances d’une application et sont indépendants vis-à-vis de l’infrastructure hôte. Additionné à un orchestrateur, par exemple <strong>Docker Swarm</strong>, on dispose d’un système qui exécute, coordonne et <strong>gère entièrement le cycle de vie de nos applications</strong>.</p>
<p>Aujourd’hui je démarre mon infrastructure avec trois petits serveurs, demain elle pourra <strong>évoluer facilement</strong> suivant l’augmentation des demandes clients.</p>
<p>Plutôt que de gérer mon infrastructure sous forme de <strong>tâches manuelles et répétitives</strong>, une grande partie est gérée à l’aide de <strong>fichiers de définition</strong> que je versionne. Dans mon cas, il s’agit principalement de fichiers <strong>YAML</strong>.</p>
<p>Si jamais tous mes serveurs venaient à être stoppés ou supprimés inintentionnellement, je peux à priori tout restaurer en moins d’une heure du moment que je dispose des <strong>backups</strong>.</p>
<p>Une fois l’infrastructure mise en place, il est possible de démarrer une application en seulement une ligne de commande, par exemple :</p>
<ul>
<li>Un <strong>tchat</strong> (ex : rocket.chat)</li>
<li>Un <strong>blog</strong> (ex : WordPress, Joomla, Ghost)</li>
<li>Un <strong>site e-commerce</strong> (ex : PrestaShop)</li>
<li>Un <strong>espace de stockage</strong> (ex : ownCloud, Nextcloud)</li>
<li>Un <strong>système de facturation</strong> (ex : Invoice Ninja)</li>
<li>Un <strong>système de monitoring et d’alerting</strong> (ex : Grafana + Prometheus + Alertmanager)</li>
</ul>
<p>Le tout avec un <strong>nom de domaine</strong> et un <strong>certicat SSL</strong> associé automatiquement.</p>
<h2>2. Déploiement des serveurs</h2>
<p>Aujourd’hui je dispose de <strong>trois serveurs Ubuntu Xenial chez Scaleway</strong>. <strong>Un serveur <a href="https://scaleway.com/pricing/#anchor_baremetal">C2S</a></strong> en tant que master et <strong>deux serveurs <a href="https://scaleway.com/pricing/#anchor_starter">START1-S</a></strong> en tant que workers. Si vous le souhaitez, vous pouvez commencer avec un seul serveur dans un premier temps. De même, il est tout à fait envisageable de créer ce type d’infrastructure sur votre propre matériel physique si vous en avez les moyens.</p>
<p>Première étape on installe <strong>docker</strong> sur chaque serveur :</p>
<pre><code class="language-bash">apt-get update; apt-get upgrade; apt-get dist-upgrade;
apt-get install -y apt-transport-https
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository &quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot;
sudo apt-get update; sudo apt-get install -y docker-ce
</code></pre>
<p>Ensuite, on initialise Docker Swarm sur le serveur master :</p>
<pre><code class="language-bash">docker swarm init --advertise-addr eth0:2377
</code></pre>
<p>Puis, on joint les serveurs workers au serveur master :</p>
<pre><code class="language-bash">docker swarm join --token &lt;token&gt; &lt;mondomaine.priv.cloud.scaleway.com&gt;:2377
</code></pre>
<p><strong>Note</strong>: Scaleway change les adresses IP privées lors du redémarrage des serveurs. Pour cette raison je dois faire communiquer les serveurs entre eux par leurs domaines privés qui eux restent fixes. Si vous ne passez pas par Scaleway vous pouvez utiliser des adresses IP directement.</p>
<p>Pour la configuration du <strong>swap</strong>, voilà les commandes que j&#x27;exécute :</p>
<pre><code class="language-bash">fallocate -l 2G /swap
mkswap /swap
echo &quot;/swap  none  swap  sw 0  0&quot; &gt;&gt; /etc/fstab
swapon -a
echo &quot;vm.swappiness = 10&quot; &gt;&gt; /etc/sysctl.d/99-swap.conf
sed -i -e &#x27;s/GRUB_CMDLINE_LINUX=&quot;&quot;/GRUB_CMDLINE_LINUX=&quot;cgroup_enable=memory swapaccount=1&quot;/g&#x27; /etc/default/grub
update-grub
</code></pre>
<h2>3. Persistence des données</h2>
<p>Une application <strong>stateful</strong>, contrairement à une application stateless, a besoin de persister certaines données comme une base de données (des fichiers de configurations ou de simples fichiers images par exemple). On utilise pour ça les <strong>volumes docker</strong>. De plus, avec <strong>Docker Swarm</strong>, les containers sont volatiles et ne restent pas toujours reliés à un unique serveur. Il faut donc utiliser un <a href="https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins">volume driver</a>.</p>
<h3>Un espace de stockage flexible</h3>
<p>Afin d’éviter d’éparpiller les données et étendre facilement la taille de notre espace de stockage, j’ai créé une <strong>partition LVM</strong> (Logical Volume Manager) qui combine plusieurs volumes de données. Au fur et à mesure que l’infrastructure grandit, il est possible d’ajouter nos volumes de données à cette partition.</p>
<p>Avec Scaleway, il est très simple d’ajouter et de relier des volumes de données à un serveur. Une fois nos volumes reliés, nous pouvons les combiner ensemble pour former <strong>un seul point de montage</strong>.</p>
<p>L’installation se fait sur notre serveur master :</p>
<pre><code class="language-bash">apt-get install -y lvm2
systemctl start lvm2-lvmetad.socket
pvcreate /dev/{nbd1,nbd2}
vgcreate lvm /dev/nbd1 /dev/nbd2
lvcreate -l 100%FREE -n storage lvm
mkfs -t ext4 /dev/lvm/storage
echo &quot;/dev/mapper/lvm-storage /mnt ext4 rw,relatime 0 0&quot; &gt;&gt; /etc/fstab
mount -a
sed -i -e &#x27;s/use_lvmetad = 1/use_lvmetad = 0/g&#x27; /etc/lvm/lvm.conf
</code></pre>
<p>À l’avenir, si vous souhaitez <strong>agrandir votre espace de stockage</strong> via d’autres volumes, il suffit simplement d’exécuter les commandes suivantes :</p>
<pre><code class="language-bash">umount /mnt
vgextend lvm /dev/nbd3
lvextend -l +100%Free /dev/lvm/storage
resize2fs /dev/lvm/storage
mount -a
</code></pre>
<h3>Volume driver</h3>
<p>Le <a href="https://docs.docker.com/engine/extend/legacy_plugins/#volume-plugins">volume driver</a> que j’ai choisi s’appelle docker-volume-netshare. Chaque application persistera ses données sur un serveur NFS.</p>
<p>On installe notre <strong>serveur NFS</strong> sur notre master :</p>
<pre><code class="language-bash">sudo apt-get install -y nfs-kernel-server
sudo mkdir /mnt/data
</code></pre>
<p>Puis on autorise tous les serveurs à s’y connecter :</p>
<pre><code class="language-bash"># /etc/exports
/mnt/data 127.0.0.1(rw,sync,no_subtree_check,no_root_squash) worker-01.priv.cloud.scaleway.com(rw,sync,no_subtree_check,no_root_squash) worker-02(rw,sync,no_subtree_check,no_root_squash)    
</code></pre>
<p>On redémarre notre serveur afin d’appliquer notre configuration :</p>
<pre><code class="language-bash">sudo systemctl restart nfs-kernel-server
</code></pre>
<p>Puis on installe sur tous les serveurs le package nfs-common et notre <strong>volume</strong> driver docker-volume-netshare :</p>
<pre><code class="language-bash">sudo apt-get install -y nfs-common
</code></pre>
<pre><code class="language-bash">sudo wget -O /usr/bin/docker-volume-netshare https://github.com/ContainX/docker-volume-netshare/releases/download/v0.35/docker-volume-netshare_0.35_linux_amd64-bin
sudo chmod +x /usr/bin/docker-volume-netshare
</code></pre>
<p>On crée <strong>un service</strong> docker-volume-netshare qui sera lancé à chaque démarrage serveur :</p>
<pre><code class="language-service"># /etc/systemd/system/docker-volume-netshare.service
[Unit]
Description=Docker NFS, AWS EFS &amp; Samba/CIFS Volume Plugin
Documentation=https://github.com/gondor/docker-volume-netshare
Wants=network-online.target
After=network-online.target
Before=docker.service

[Service]
ExecStart=/usr/bin/docker-volume-netshare nfs
StandardOutput=syslog

[Install]
WantedBy=multi-user.target
</code></pre>
<pre><code class="language-bash">systemctl enable docker-volume-netshare.service
systemctl start docker-volume-netshare.service
</code></pre>
<p>Pour vérifier si tout fonctionne correctement, vous pouvez créer un volume « test » :</p>
<pre><code class="language-bash">docker volume create --driver nfs --name=test --opt share=127.0.0.1:/mnt/data --opt create=true
</code></pre>
<p>Puis créer un fichier « test » depuis un container :</p>
<pre><code class="language-bash">docker run --rm -v test:/mount alpine touch /mount/test
</code></pre>
<p>Ce fichier devrait apparaître dans le répertoire /mnt/data de votre serveur master.</p>
<h2>4. Sauvegardes automatisées</h2>
<p><strong>Objectif</strong> : Créer un système de sauvegarde journalier de tous les <strong>volumes</strong>.</p>
<p>Pour sauvegarder nos volumes il nous suffit de sauvegarder notre dossier /mnt/data avec notre outil de backup préféré (borg, restic, duplicity, etc.).</p>
<p>Personnellement j’utilise <strong>restic</strong> :</p>
<pre><code class="language-bash">wget https://github.com/restic/restic/releases/download/v0.9.3/restic_0.9.3_linux_amd64.bz2
bzip2 -d restic_0.9.3_linux_amd64.bz2
mv restic_0.9.3_linux_amd64 /usr/local/bin/restic
chmod +x /usr/local/bin/restic
</code></pre>
<p>Le processus de sauvegarde est très simple avec restic :</p>
<pre><code class="language-bash">restic -r &lt;repository&gt; init
restic -r &lt;repository&gt; backup /mnt/data
</code></pre>
<p>Il existe plusieurs types de <strong>repository</strong> : local, S3, sftp, rclone, etc. Personnellement j’utilise <strong>S3</strong>, car Scaleway propose un <strong>Object Storage</strong> comme AWS, du coup j’en profite.</p>
<p>On automatise ensuite la sauvegarde avec une <strong>tâche cron</strong> :</p>
<pre><code class="language-bash"># crontab -e
0 0 * * * /usr/local/bin/restic -r &lt;repository&gt; backup /mnt/data
</code></pre>
<h3>Restauration</h3>
<p>Dans le cas où vous souhaitez récupérer une sauvegarde précédente :</p>
<pre><code class="language-bash">restic -r &lt;repository&gt; snapshots
restic -r &lt;repository&gt; restore &lt;snapshotID&gt; -t restore
</code></pre>
<h2>5. Reverse-proxy et Let’s Encrypt</h2>
<p><strong>Objectif</strong>: Configurer un <strong>reverse proxy</strong> pour accéder à nos applications via un <strong>unique point d’entrée</strong>.</p>
<p>Personnellement, j’utilise <strong>Traefik</strong>, qui est compatible avec <strong>Docker Swarm</strong>.</p>
<p>On crée <strong>un network</strong> que l’on nomme par exemple <strong>traefik-net,</strong> il sera utilisé pour relier de manière automatique chaque application à <strong>Traefik</strong> à l’aide des <strong>labels</strong>.</p>
<pre><code class="language-bash">docker network create --driver=overlay traefik-net
</code></pre>
<p>Puis on déploie <strong>Traefik</strong> uniquement sur notre serveur master :</p>
<pre><code class="language-yml"># traefik.yml

version: &quot;3.3&quot;
services:
  traefik:
    image: traefik
    command: --docker \
      --docker.swarmMode \
      --docker.watch
    ports:
      - &quot;80:80&quot;
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    deploy:
      placement:
        constraints: [node.role==manager]

networks:
  default:
    external:
      name: traefik-net
</code></pre>
<pre><code class="language-bash">docker stack deploy -c traefik.yml traefik
</code></pre>
<p>Enfin, pour relier une application à notre <strong>reverse proxy</strong>, on peut créer un <strong>service</strong> docker avec des <strong>labels</strong> qui indiqueront à <strong>Traefik</strong> de diriger le traffic HTTP du domaine <a href="https://johackim.com">johackim.com</a> sur le(s) bon(s) container(s) :</p>
<pre><code class="language-bash">docker service create --name blog --network traefik-net -l traefik.port=2368 -l traefik.frontend.rule=Host:johackim.com -l traefik.enable=true ghost
</code></pre>
<h3>Let’s Encrypt</h3>
<p>Pour <strong>automatiser la création de certificats SSL</strong> des services exposés à l’extérieur de mon cluster, j’ai configuré <strong>Traefik</strong> avec ce fichier de configuration :</p>
<pre><code class="language-toml"># traefik.toml

debug = true
logLevel = &quot;DEBUG&quot;
defaultEntryPoints = [&quot;https&quot;,&quot;http&quot;]

[entryPoints]
  [entryPoints.http]
  address = &quot;:80&quot;
    [entryPoints.http.redirect]
    entryPoint = &quot;https&quot;
  [entryPoints.https]
  address = &quot;:443&quot;
    [entryPoints.https.tls]

[acme]
email = &quot;contact@example.com&quot;
storage = &quot;acme.json&quot;
acmeLogging = true
entryPoint = &quot;https&quot;
onHostRule = true

[acme.httpChallenge]
  entryPoint = &quot;http&quot;
</code></pre>
<h2>6. Infrastructure as Code</h2>
<p>Toutes les applications sont définies sous forme de code. <strong>Un fichier YAML</strong> représente tout ce que contient une application (<strong>services, volumes, networks</strong>).</p>
<p>Voici comme exemple le fichier ghost.yml que j’utilise pour le déploiement de mon blog :</p>
<pre><code class="language-yml"># ghost.yml

version: &#x27;3&#x27;

services:
  web:
    image: ghost:2.4.0
    volumes:
      - ghost:/var/lib/ghost/content:nocopy
    environment:
      url: ${SCHEME:-http}://${DOMAIN:?err}
    deploy:
      labels:
        traefik.port: 2368
        traefik.frontend.rule: Host:${DOMAIN:?err}
        traefik.enable: &quot;true&quot;

volumes:
  ghost:
    driver: nfs
    driver_opts:
      share: master.priv.cloud.scaleway.com:/mnt/data
      create: &quot;true&quot;

networks:
  default:
    external:
      name: traefik-net
</code></pre>
<p>En une seule commande, je peux déployer un blog ghost sous le nom de domaine que je souhaite, et avec un certificat ssl automatiquement attribué :</p>
<pre><code class="language-bash">SCHEME=https DOMAIN=johackim.com docker stack deploy -c ghost.yml blog
</code></pre>
<p>J’ai créé d’autres stacks que <strong>Ghost</strong>, je vous invite à vous rendre sur <a href="https://github.com/ethibox/awesome-stacks/">ce repository</a> si vous désirez en voir d’autres.</p>
<h2>7. Monitoring, alerting et logging</h2>
<p>Pour <strong>monitorer</strong> tous mes serveurs, pour être <strong>alerté</strong> à chaque fois qu’une application ne renvoie pas un <strong>code 200</strong> ou qu’un <strong>CPU, RAM, Disque</strong> dépasse les 95% d’utilisation. Je me suis créé une <a href="https://raw.githubusercontent.com/ethibox/awesome-stacks/ee0f0474bb8237b32f1a0a84a12275ed855362d4/monitoring.yml">stack avec grafana, prometheus et alertmanager</a>.</p>
<p><img src="https://i.imgur.com/lO3QlRr.png" alt="Dashboard Grafana"/></p>
<p>Et d’une commande, je peux tout installer :</p>
<pre><code class="language-bash">DOMAIN_GRAFANA=grafana.mondomaine.fr DOMAIN_PROMETHEUS=prometheus.mondomaine.fr docker stack deploy -c monitoring.yml monitoring
</code></pre>
<p><a href="https://github.com/ethibox/awesome-stacks/blob/91c336d4c42b3b2dd056a15b65c1d996ce08c236/elastic.yml">La stack elastic</a> quant à elle, va me servir à <strong>logger tout le traffic HTTP entrant</strong> sur <strong>Traefik</strong> et <strong>collecter les syslog</strong> de chaque serveur.</p>
<pre><code class="language-bash">DOMAIN=kibana.mondomaine.fr docker stack deploy -c elastic.yml elastic
</code></pre>
<h2>8. Sécurité</h2>
<p>En termes de sécurité, je provisionne tous mes serveurs avec un <a href="https://github.com/johackim/ansible-personal">playbook</a> Ansible. Concrètement, je configure tous mes serveurs avec un <strong>IPS</strong> (fail2ban), un <strong>firewall</strong> (iptables) et des <strong>règles de system hardening</strong>.</p>
<pre><code class="language-bash">ansible-playbook playbook.yml -u root -i &lt;PUBLIC_IP&gt;,
</code></pre>
<p>Je crée aussi des règles de sécurité avec les <strong>security group</strong> de Scaleway, puis des <strong>headers HTTP sécurisés</strong> pour chaque application :</p>
<pre><code class="language-bash">docker service update &lt;name_app&gt; --label-add traefik.frontend.headers.customResponseHeaders=&quot;X-XSS-Protection: 1; mode=block&quot;
</code></pre>
<h2>Conclusion</h2>
<p>De manière subjective, c’est la solution idéale pour moi, après avoir testé plusieurs solutions (<strong>Kubernetes, Helm, Ark, Ceph, Rook, Minio et Rexray</strong>) c’est celle qui dans mon cas est la plus <strong>accessible, maintenable, scalable</strong> et <strong>performante</strong>.</p>
<p>Sa scalabilité me permet d’<strong>éviter d’investir trop d’argent</strong> dans de très gros serveurs et d’<strong>évoluer proportionnellement</strong> à la demande des clients.</p>
<p>Je pense avoir créé une bonne base, il me reste sûrement encore beaucoup de choses à améliorer, dont par exemple :</p>
<ul>
<li>Ajouter des <strong><a href="https://docs.docker.com/compose/compose-file/#healthcheck">healthcheck</a></strong> et <strong><a href="https://docs.docker.com/config/containers/resource_constraints/">limite de ressource</a></strong> Docker</li>
<li>Me créer un <strong>Siem</strong> avec la stack <strong>Elastic</strong> et <strong>Surricata</strong></li>
<li>Générer de manière aléatoire et automatique les mots de passes dans des <strong>docker secrets</strong>.</li>
<li><strong>Auto-héberger</strong> toute l’infrastucture chez moi sur mon propre matériel, pour ne plus dépendre de <strong>Scaleway</strong>.</li>
<li>Un <strong>stockage distribué</strong></li>
</ul>
<p>N’hésitez pas à me dire dans les commentaires si vous avez des suggestions d’améliorations !</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/hebergement-web" title="Hébergement web">Hébergement web</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Le kit de survie d'un développeur]]></title>
            <description><![CDATA[Avez-vous déjà entendu parler des nomades digitaux ? J'ai récemment découvert ce style de vie qui consiste à travailler n'importe où dans le monde, tant qu'une connexion internet est disponible.]]></description>
            <link>https://johackim.com/kit-de-survie-developpeur?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/kit-de-survie-developpeur</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 12 Oct 2018 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/kit-de-survie-developpeur.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/kit-de-survie-developpeur.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/G6N9zs2.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/Gqne66g.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/J4rP0bc.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/kLD5VcT.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/CKAPoeq.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/8uVsCQM.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/VJYRRd0.jpg"/><blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu archivé</p>
                    </div>
                </blockquote>
<p>Avez-vous déjà entendu parler des nomades digitaux ? J&#x27;ai récemment découvert ce style de vie qui consiste à travailler n&#x27;importe où dans le monde, tant qu&#x27;une connexion internet est disponible. Inspiré par cette méthode, je me suis créé un petit EDC (Everyday Carry) avec lequel je me déplace chaque jour.</p>
<h2>Razer Blade 14” (2016)</h2>
<p><img src="https://i.imgur.com/G6N9zs2.jpg" alt=""/></p>
<p>Mon ordinateur portable est un Razer Blade 14&quot; (2016). <a href="https://johackim.com/comment-acheter-article-non-expediable-en-france/">Je l&#x27;ai acheté dès sa sortie aux États-Unis alors qu&#x27;il n&#x27;était pas encore disponible en Europe</a>. Je recherchai un PC léger, fin et ultra performant, c&#x27;est à ma connaissance le meilleur du marché pour ces 3 points réunis.</p>
<pre><code class="language-markdown"># Configuration matérielle

- CPU: Intel Core i7-6700HQ @ 8x 3.5GHz
- GPU: GeForce GTX 970M
- RAM: 16 Go
</code></pre>
<h2>Hub USB-C Novoo</h2>
<p>Un <a href="https://amzn.to/3f7LqTx">hub USB-C Novoo</a> Pour pouvoir profiter de ports supplémentaires (Ethernet, USB, SD et microSD) cet adaptateur est parfait !</p>
<h2>Clé USB SanDisk Extreme Chiffré</h2>
<p>Je chiffre certains documents (diplômes, carte d&#x27;identité, carte vitale, permis de conduire) sur <a href="https://amzn.to/3tDjyfC">cette clé USB</a> que je porte toujours sur moi. On est jamais trop prévoyant, cela peut être très utile en cas de disparition de documents (vol, inondation, incendie, catastrophes naturelles...).</p>
<p><strong>Astuce</strong>: Si vous êtes sur un environnement Linux et que vous souhaitez vous aussi chiffrer votre clé USB en AES 512 voici les commandes à exécuter :</p>
<pre><code class="language-bash">parted -s /dev/sdb mklabel msdos
parted -s /dev/sdb mkpart primary 1MiB 100%
cryptsetup -q luksFormat -c aes-xts-plain64 -s 512 /dev/sdb1
cryptsetup -q luksOpen /dev/sdb1 crypt
mkfs.ntfs /dev/mapper/crypt
cryptsetup luksClose crypt
</code></pre>
<h2>Casque Bose QuietComfort 35</h2>
<p>J&#x27;utilise <a href="https://bose.life/3pT4sUR">ce casque antibruit</a> chaque jour pour être dans ma bulle lorsque je travaille.</p>
<h2>Blackphone BP1</h2>
<p><img src="https://i.imgur.com/Gqne66g.jpg" alt=""/></p>
<p>Le Blackphone est actuellement le seul téléphone sur le marché qui protège plus ou moins la vie privée. Encore sous Android 4.4 et n&#x27;étant plus maintenu je le garde jusqu&#x27;à ce que le <a href="https://puri.sm/shop/librem-5/">Librem Phone</a> (téléphone sous Linux) sorte.</p>
<h2>Batterie externe USB (Pineapple Juice 4000)</h2>
<p><img src="https://i.imgur.com/J4rP0bc.jpg" alt=""/></p>
<p>Voici la batterie externe USB que j&#x27;utilise dans le cas ou mon téléphone tombe en rade. Je l&#x27;ai reçu en même temps que mon <strong>WiFi Pineapple NANO</strong> (je ferai un article prochainement sur cet équipement).</p>
<h2>BUBM Organizer</h2>
<p>Pour transporter tout ce petit matériel, j&#x27;ai besoin d&#x27;un espace de rangement et ce <a href="https://amzn.to/3nK4Cvd">BUBM organizer</a> est très pratique pour ça.</p>
<h2>Cahier Oxford International Activebook A4+</h2>
<p>J&#x27;ai toujours <a href="https://my-oxford.com/fr-fr/node/455">ce cahier</a> sur moi pour rédiger toutes mes notes.</p>
<h2>Stylo FriXion Ball</h2>
<p><img src="https://i.imgur.com/kLD5VcT.jpg" alt=""/></p>
<p>Pour écrire, j&#x27;utilise toujours des stylos effaceurs comme ce FriXion Ball.</p>
<h2>Sac à dos Dakine</h2>
<p><img src="https://i.imgur.com/CKAPoeq.jpg" alt=""/></p>
<p>Un sac à dos Dakine avec un compartiment pour mon ordinateur et des attaches pour accrocher mon skate.</p>
<h2>Ceinture décapsuleur</h2>
<p><img src="https://i.imgur.com/8uVsCQM.jpg" alt=""/></p>
<p>Très pratique en soirée.</p>
<h2>Attache vélo CYCLYK</h2>
<p><img src="https://i.imgur.com/VJYRRd0.jpg" alt=""/></p>
<p>Je fais quasiment tous mes déplacements à vélo, c&#x27;est pourquoi cette attache m&#x27;est indispensable pour visualiser mes trajets en temps réel. Cette attache CYCLYK ne coûte pas grand-chose et s&#x27;adapte à tous les téléphones et sur tous les vélos.</p>
<p>Le reste est un peu plus courant :</p>
<ul>
<li>Portefeuille</li>
<li>Prise secteur USB</li>
<li>Lunettes de soleil</li>
<li>Chiffonnette PC</li>
<li>Chewing-gums</li>
<li>Mini Câble Ethernet</li>
<li>Mouchoirs</li>
<li>Clés</li>
</ul>
<h2>Conclusion</h2>
<p>J&#x27;utilise ce kit au quotidien, il me permet de travailler à peu près partout. Il ne me manque plus qu&#x27;un couteau suisse et ça serait parfait.</p>
<p>Je dispose aussi d&#x27;un autre <strong>EDC</strong> qui ressemble plus à un <strong>Survival Kit</strong>, utile en cas de réel coup dur comme une catastrophe naturelle, une crise économique ou que sais-je. Je ferai bientôt un article dessus.</p>
<p>Et vous c&#x27;est quoi votre EDC ?</p>
<p>PS: Je précise que je n&#x27;ai aucun partenariat avec toutes les marques citées dans cet article.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment automatiser l'installation de Arch Linux ?]]></title>
            <description><![CDATA[Afin d'éviter de réinstaller manuellement Arch Linux chaque année j'ai automatisé son installation à l'aide d'un fichier makefile.]]></description>
            <link>https://johackim.com/comment-automatiser-installation-arch-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-automatiser-installation-arch-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 30 Jul 2018 12:45:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-automatiser-installation-arch-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-automatiser-installation-arch-linux.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu archivé</p>
                    </div>
                </blockquote>
<p>Afin d&#x27;éviter de réinstaller manuellement <a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a> chaque année j&#x27;ai automatisé son installation à l&#x27;aide d&#x27;un fichier makefile. Fini la configuration manuelle de LVM, LUKS, UEFI, Grub, Nvidia, Alsa, Xorg, i3, vim, tmux, mutt, gtk etc...</p>

<p><strong>ATTENTION ! Les commandes <code>make</code> décrites dans cet article ont été créé seulement pour mon usage personnel, elles seront mises à jour plus tard pour un usage plus général. Je vous conseille de lire le fichier makefile si vous souhaitez les utiliser.</strong></p>
<h2>TL;DR</h2>
<p><a href="https://github.com/johackim/dotfiles">https://github.com/johackim/dotfiles</a></p>
<h2>Étapes d&#x27;installation</h2>
<p>De manière générale l&#x27;installation de <a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a> comprend de nombreuses étapes :</p>

<ul>
<li>Création, formatage et chiffrement des partitions</li>
<li>
Installation des fichiers de base de <a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a>

</li>
<li>Configuration du fichier <code>/etc/fstab</code></li>
<li>Configuration du clavier (<code>/etc/vconsole.conf</code>)</li>
<li>Configuration du hostname</li>
<li>Configuration du fuseau horaire (<code>/etc/localtime</code>)</li>
<li>Configuration de l&#x27;heure</li>
<li>Configuration de la langue</li>
<li>Configuration du bootloader grub</li>
<li>Configuration du mot de passe root</li>
<li>Configuration du dépôt multilib</li>
<li>Configuration de sudo</li>
<li>Configuration des services</li>
<li>Installation d&#x27;un package manager pour AUR (Arch User Repository)</li>
<li>Installation du serveur graphique Xorg</li>
<li>Installation des drivers graphique (Nvidia, Intel)</li>
<li>Installation des drivers audio (alsa, pulseaudio)</li>
<li>Installation d&#x27;un gestionnaire de réseau (NetworkManager)</li>
<li>Installation d&#x27;un gestionnaire de fenêtre léger (i3)</li>
<li>Installation de mes packages</li>
</ul>
<p>J&#x27;ai créé un <a href="https://github.com/johackim/dotfiles/blob/3670f49216c8ffc70e1ea2f79617f12c681cbade/makefile">fichier makefile</a> qui contient toutes les commandes shell à exécuter lors de l&#x27;installation. Dorénavant, si je souhaite faire une installation complète, j&#x27;ai uniquement 2 commandes à entrer, une pour la création des partitions et l&#x27;autre pour l&#x27;installation de <a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a>.</p>

<pre><code class="language-bash">make create-new-partitions
make install-new-arch
</code></pre>
<p>Dans le cas où mon système plante ou que je souhaite simplement réinstaller Arch Linux, seul la commande <code>make install-new-arch</code> suffit. Les partitions <code>root</code>, <code>boot</code> et <code>efi</code> seront réinitialisés et la partition <code>home</code> restera intacte.</p>
<h2>Dotfiles</h2>
<p>Toutes les configurations de mes applications (vim, tmux, mutt, i3, gtk etc..) mes raccourcis clavier, mes aliases, mon thème (fonts, fond d&#x27;écran, icons, les couleurs, etc...) sont personnalisés et versionnés. Une simple commande permet de tout installer :</p>
<pre><code class="language-bash">make install-dotfiles
</code></pre>
<h2>Conclusion</h2>
<ol>
<li>Créer une clé USB bootable de <a href="https://archlinux.org/download/">Arch Linux</a> avec <a href="https://github.com/balena-io/etcher">etcher</a></li>
<li>Booter son ordinateur sur la clé bootable</li>
<li>Connecter l&#x27;ordinateur à internet avec la command <code>wifi-menu</code></li>
<li>Installer les packages git et make avec la commande <code>pacman -S git make</code></li>
<li>Cloner le repository avec la commande <code>git clone https://github.com/johackim/dotfiles</code></li>
<li>Éxecuter les commandes <code>make create-new-partitions</code> et <code>make install-new-arch</code></li>
</ol>
<p>Je dispose d&#x27;un seul <a href="https://github.com/johackim/dotfiles">dépôt</a> qui contient toute la configuration de mon PC. Pratique non ?</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/johackim/dotfiles">https://github.com/johackim/dotfiles</a></li>
<li><a href="https://gist.github.com/mattiaslundberg/8620837">https://gist.github.com/mattiaslundberg/8620837</a></li>
<li><a href="https://github.com/helmuthdu/aui">https://github.com/helmuthdu/aui</a></li>
<li><a href="https://github.com/MatMoul/archfi">https://github.com/MatMoul/archfi</a></li>
<li>
<a href="/arch-linux" title="Arch Linux" class="not-found">Arch Linux</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Podcasts de hacker indépendant]]></title>
            <description><![CDATA[Programmation, entrepreneuriat, cybersécurité, sport ou interviews de personnalités inspirantes, voici la liste des podcasts que j'écoute, en vélo, voiture, pendant la vaisselle ou avant de me coucher.]]></description>
            <link>https://johackim.com/podcasts-freelance?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/podcasts-freelance</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Tue, 26 Jun 2018 10:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/podcasts-freelance.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/podcasts-freelance.jpg"/>
            <content:encoded><![CDATA[<p>Programmation, entrepreneuriat, cybersécurité, sport ou interviews de personnalités inspirantes, voici la liste des podcasts que j&#x27;écoute, en vélo, voiture, pendant la vaisselle ou avant de me coucher.</p>
<h2>Update 2024</h2>
<p>Voici les podcasts que j&#x27;écoute en 2024 :</p>
<ul>
<li><a href="https://hubermanlab.com/">Huberman Lab</a></li>
<li><a href="https://lexfridman.com/">Lex Fridman</a></li>
<li><a href="https://nudgepodcast.com/">Nudge</a></li>
<li><a href="https://chriswillx.com/podcast/">Modern Wisdom</a></li>
<li><a href="https://markmanson.net/podcast">The Subtle Art of Not Giving a Fuck Podcast</a></li>
</ul>
<h2>Programmation</h2>
<ul>
<li><a href="https://feed.ausha.co/BxW2S9Mex0Vb">Artisan Développeur</a></li>
<li><a href="https://feeds.fireside.fm/cafe-craft/rss">Café Craft</a></li>
<li><a href="https://feed.pippa.io/public/shows/devobs">Dev&#x27;Obs</a></li>
</ul>
<h2>Cybersécurité</h2>
<ul>
<li><a href="https://hackstock.net/podcast.xml">Hackstock</a></li>
<li><a href="https://comptoirsecu.fr/feed/podcast.xml">Le Comptoir Sécu</a></li>
<li><a href="http://feeds.soundcloud.com/users/soundcloud:users:261098918/sounds.rss">The Privacy, Security, &amp; OSINT Show</a></li>
<li><a href="https://nolimitsecu.fr/feed/podcast/">NoLimitSecu</a></li>
</ul>
<h2>Entrepreneuriat</h2>
<ul>
<li><a href="https://feeds.feedburner.com/des-livres-pour-changer-de-vie/podcast">Des livres pour changer de vie</a></li>
<li><a href="https://spreaker.com/show/3085916/episodes/feed">Déchaîné</a></li>
<li><a href="https://feed.pippa.io/public/shows/5b5f2ea4e14127853f949ee4">Growth Makers</a></li>
<li><a href="https://feeds.transistor.fm/the-indie-hackers-podcast">Indie Hackers</a></li>
<li><a href="https://anchor.fm/s/414d1d4/podcast/rss">Indie Makers</a></li>
<li><a href="https://anchor.fm/s/f4b59b0/podcast/rss">Inspiration Créative</a></li>
<li><a href="https://feeds.buzzsprout.com/222592.rss">Koudetat</a></li>
<li><a href="https://rss.art19.com/la-lecon">La Leçon</a></li>
<li><a href="https://feed.pippa.io/public/shows/lemanalshow">Le Manal Show</a></li>
<li><a href="https://rss.art19.com/le-gratin-par-pauline-laigneau">Le Gratin</a></li>
<li><a href="https://anchor.fm/s/8042efc/podcast/rss">Marketing Mania</a></li>
<li><a href="https://olivier-roland-radio.com/feed/podcast/">Olivier Roland</a></li>
<li><a href="https://feed.pippa.io/public/shows/5ac73e73ef7a4c2376786e3c">Optimise ta vie</a></li>
<li><a href="https://feeds.podcastics.com/podcastics/podcasts/rss/243_35c44e391f9b9b94cc00db5701c10044.rss">Pause Dev&#x27;</a></li>
<li><a href="http://feeds.soundcloud.com/users/soundcloud:users:99657457/sounds.rss">Johann Yang-Ting</a></li>
<li><a href="https://feed.ausha.co/BNk3RSnVQlwa">Systemator</a></li>
<li><a href="https://theknowledgeproject.libsyn.com/rss">The Knowledge Project</a></li>
<li><a href="https://rss.art19.com/smart-passive-income-podcast">The Smart Passive Income</a></li>
<li><a href="https://feed.ausha.co/o9KzzSN6Z43L">Tribu Indé</a></li>
<li><a href="http://feeds.soundcloud.com/users/soundcloud:users:304936890/sounds.rss">La Tranchée</a></li>
<li><a href="https://feed.ausha.co/BG3gafvxderG">Longue Vue</a></li>
<li><a href="https://1j1e-podcast.libsyn.com/rss">1 Jour, 1 Entrepreneur</a></li>
</ul>
<h2>Sport</h2>
<ul>
<li><a href="https://fitnessmith.fr/feed/podcast/">La pause Fitness</a></li>
<li><a href="https://danslateteduntriathlete.com/">Dans la tête d&#x27;un triathlète</a></li>
<li><a href="https://open.spotify.com/show/3Vn2r4Nf0t6QDaWuJLp6dh">Muscle for Life with Mike Matthews</a></li>
<li><a href="https://podcasts.apple.com/us/podcast/expansion-par-eric-flag/id1534491330">Expansion - par Eric Flag</a></li>
<li><a href="https://open.spotify.com/show/4SOoCH4LM0V4WZt4wqiTLH">Dans la Tête d&#x27;un Coureur</a></li>
</ul>
<h2>Philosophie</h2>
<ul>
<li><a href="https://feeds.audiomeans.fr/feed/aced395e-6351-498a-9397-144bb12e80d6.xml">Le Précepteur</a></li>
</ul>
<h2>Interviews</h2>
<ul>
<li><a href="https://rss.acast.com/un-bon-moment">Un Bon Moment</a></li>
<li><a href="http://joeroganexp.joerogan.libsynpro.com/rss">The Joe Rogan Experience</a></li>
<li><a href="https://feed.pippa.io/public/shows/5aa93c3d02e6c30d742dd776">Nouvelle École</a></li>
<li><a href="https://subscribeonandroid.com/thinkerview.com/feed/podcast/">Thinkerview</a></li>
</ul>
<h2>Autres</h2>
<ul>
<li><a href="https://rss.acast.com/emotions">Émotions</a></li>
<li><a href="https://feeds.soundcloud.com/users/soundcloud:users:20146382/sounds.rss">Radio Sauvage</a></li>
<li><a href="http://rss.acast.com/anouk-perry-podcast">Anouk Perry</a></li>
</ul>
<h2>Bonus</h2>
<p><em>Applications pour retranscrire et sauvegarders certains passages d&#x27;un podcast</em></p>
<ul>
<li><a href="https://airr.io/">Airr</a></li>
<li><a href="https://app.momento.fm/">Momento</a></li>
</ul>
<p>Si vous êtes sur Android je vous conseille l&#x27;application open-source <a href="http://antennapod.org/">AntennaPod</a> disponible sur le store <a href="https://f-droid.org/packages/de.danoeh.antennapod">F-Droid</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/podcast" title="Podcast" class="not-found">Podcast</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment acheter un article non expédiable en France ?]]></title>
            <description><![CDATA[Certains articles en ligne ne sont pas expédiables en France. Voici un moyen d'en recevoir sans frais exorbitants.]]></description>
            <link>https://johackim.com/comment-acheter-article-non-expediable-en-france?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-acheter-article-non-expediable-en-france</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 09 Apr 2018 06:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-acheter-article-non-expediable-en-france.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-acheter-article-non-expediable-en-france.jpg"/>
            <content:encoded><![CDATA[<p>Certains articles en ligne ne sont pas expédiables en France.</p>
<p>Voici un moyen d&#x27;en recevoir sans frais exorbitants.</p>
<h2>Shipito - Comment ça marche ?</h2>
<p>Il existe des <strong>services de réexpédition</strong> comme <a href="https://shipito.com/fr/">Shipito</a> qui permettent de <strong>recevoir en France des colis accessible seulement aux U.S</strong>.</p>
<p>L&#x27;utilisation de Shipito est <strong>très simple</strong>. Dès l&#x27;inscription (<strong>gratuite</strong>), Shipito vous propose une adresse postale américaine. Ensuite, vous achetez votre article sur n&#x27;importe quelle boutique en ligne à destination de cette adresse. Une fois réceptionné, Shipito vous alerte et vous propose d&#x27;envoyer votre colis en France.</p>
<p><strong>PS: Préférez Minden dans le Nevada pour éviter les taxes de Californie.</strong></p>
<h2>Le prix</h2>
<p>Les frais sont relativement faibles, l&#x27;envoi d&#x27;un colis coute <strong>$2 + les frais d’expédition</strong>. Shipito vous propose <a href="https://calculator.shipito.com/">un outil pour calculer les frais de port</a>.</p>
<p>Quelques <strong>options supplémentaires</strong> sont possibles à <strong>1-2$ l&#x27;option</strong>. Le renforcement du colis, des photos détaillées du contenu du colis, ajouter des stickers &quot;fragile&quot;, enlever la facture du colis etc...</p>
<h2>Choix du transporteur</h2>
<p>Quelques <strong>transporteurs privés à éviter</strong> où les frais de douane sont automatiques :</p>
<ul>
<li><strong>DHL</strong></li>
<li><strong>TNT</strong></li>
<li><strong>FedEx</strong></li>
<li><strong>USPS</strong> (pas sûr, à vérifier)</li>
</ul>
<p>Les <strong>frais de douane</strong> sont généralement à 25% du prix du produit. Voici <strong>quelques conseils pour les éviter</strong>:</p>
<ul>
<li><strong>Privilégier Airmail Economy</strong> (le moins cher) comme transporteur.</li>
<li>Mettre &quot;<strong>Gift</strong>&quot; pour le type de colis.</li>
<li>Chosir l&#x27;option <strong>Enlever la facture du colis</strong> (vous pouvez prendre en photo la facture pour garder une trace).</li>
<li>Pour la valeur du produit, <strong>éviter de déclarer une valeur supérieure à 60$</strong>.</li>
</ul>
<h2>Alternatives à Shipito</h2>
<p>Si Shipito ne vous convient pas, voici quelques alternatives :</p>
<ul>
<li><del>viabox.com</del> (<strong>EDIT: Voir commentaires</strong>)</li>
<li><a href="https://globalshopaholics.com/">https://globalshopaholics.com/</a></li>
<li><a href="https://myus.com/">https://myus.com/</a></li>
<li><a href="https://fishisfast.com/">https://fishisfast.com/</a></li>
<li><a href="https://colisexpat.com/">https://colisexpat.com/</a></li>
</ul>
<p>Voilà pour l&#x27;astuce de la semaine ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/mes-prochains-achats" title="To buy" class="not-found">To buy</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment jouer sur Linux avec 95% de performance native ?]]></title>
            <description><![CDATA[Voici une solution pour pouvoir jouer aux jeux video depuis un environnement Linux avec 95% de performance native.]]></description>
            <link>https://johackim.com/jouer-sur-linux?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/jouer-sur-linux</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 26 Mar 2018 05:53:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/jouer-sur-linux.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/jouer-sur-linux.jpg"/>
            <content:encoded><![CDATA[<p>Voici une solution pour pouvoir jouer aux jeux vidéos depuis un environnement <a href="/linux" title="Linux">Linux</a> avec 95% de performance native.</p>

<p><a href="https://youtube.com/watch?v=37D2bRsthfI">Une vidéo de démonstration par blu3bird84</a></p>
<h2>Terminologies</h2>
<p>Avant toute chose, il y a quelques terminologies à connaitre :</p>
<ul>
<li><strong>KVM</strong> (Kernel-based Virtual Machine) est le module du noyau Linux qui interagit avec les fonctionnalités de virtualisation du processeur. C&#x27;est un hyperviseur de type I pour Linux.</li>
<li><strong>QEMU</strong> est le logiciel de virtualisation basé sur KVM qui émule les processeurs virtuels et les périphériques et qui lance et éteint les machines virtuelles.</li>
<li><strong>virt-manager</strong> est l&#x27;interface graphique qui permet de créer, configurer, et faire tourner les machines virtuelles.</li>
<li><strong>libvirt</strong> est la bibliothèque qui permet à virt-manager d&#x27;interagir avec les capacités de virtualisation fournies par QEMU.</li>
<li><strong>virtio</strong> est une interface de programmation qui gère toutes les communications entre l&#x27;hyperviseur et le noyau.</li>
<li><strong>OVMF</strong> (Open Virtual Machine Firmware) est un projet pour permettre le support de l‘UEFI aux machines virtuelles.</li>
<li><strong>vfio</strong> Virtual Function I/O</li>
<li><strong>IOMMU</strong> Unité de gestion de mémoire d&#x27;entrée-sortie</li>
</ul>
<h2>Prérequis</h2>
<ul>
<li>Avoir deux Carte-graphiques ou 1 Apu et une Carte-graphique</li>
<li>Votre carte mère doit supporter la technologie IOMMU</li>
<li>Votre CPU doit supporter la virtualisation matérielle</li>
<li>Votre carte graphique doit supporter l’UEFI</li>
<li>Avoir 2 Entrées vidéo sur l&#x27;écran (1 pour le linux (host) et 1 pour la Machine virtuelle (Guest)</li>
</ul>
<h2>Installation</h2>
<p>L&#x27;installation que je propose ici est spécifiquement prévue pour <strong>Arch Linux</strong> ou une distribution basé dessus comme <strong><a href="https://antergos.com/">Antergos</a></strong>. Cette procédure aura pour but d&#x27;installer un environnement <strong>Qemu/KVM + VFIO/IOMMU GPU Passthrough</strong> afin de pouvoir jouer aux jeux depuis Linux sur une <strong>machine virtuelle</strong> Windows.</p>
<h3>Activer IOMMU</h3>
<pre><code class="language-bash"># /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=&quot;quiet splash intel_iommu=on&quot;
</code></pre>
<pre><code class="language-bash">grub-mkconfig -o /boot/grub/grub.cfg
dmesg|grep -e DMAR -e IOMMU # Vérifier l&#x27;activation de IOMMU
</code></pre>
<h3>Installer libvirt, qemu, virt-manager et OVMF</h3>
<pre><code class="language-bash">pacman -S dnsmasq ebtables dmidecode # libvirt dependencies
pacman -S qemu ovmf virt-manager
pacman -S libvirt
usermod -aG libvirt username
systemctl enable libvirtd
</code></pre>
<h3>Configurer qemu</h3>
<pre><code class="language-bash">mv /etc/libvirt/qemu.conf /etc/libvirt/qemu.conf.orig
cat &lt;&lt;EOT &gt;&gt; /etc/libvirt/qemu.conf
user = &quot;root&quot;
group = &quot;root&quot;
clear_emulator_capabilities = 0
cgroup_device_acl = [
    &quot;/dev/null&quot;, &quot;/dev/full&quot;, &quot;/dev/zero&quot;,
    &quot;/dev/random&quot;, &quot;/dev/urandom&quot;,
    &quot;/dev/ptmx&quot;, &quot;/dev/kvm&quot;, &quot;/dev/kqemu&quot;,
    &quot;/dev/rtc&quot;,&quot;/dev/hpet&quot;, &quot;/dev/vfio/vfio&quot;,
    &quot;/dev/vfio/1&quot;
]
nvram = [
  &quot;/usr/share/ovmf/x64/OVMF_CODE.fd:/usr/share/ovmf/x64/OVMF_VARS.fd&quot;
]
EOT
</code></pre>
<h3>Installer vfio</h3>
<pre><code class="language-bash">lspci -nn|grep -iP &quot;NVIDIA|Radeon&quot; # $VFIOID
echo options vfio-pci ids=$VFIOID &gt; /etc/modprobe.d/vfio.conf

MODULES=&quot;vfio vfio_iommu_type1 vfio_pci vfio_virqfd&quot; # /etc/mkinitcpio.conf
mkinitcpio -p linux

lspci -k | grep -i vfio-pci # Check vfio
</code></pre>
<h3>Installer virtio</h3>
<pre><code class="language-bash">pacaur -S virtio-win
echo -e &#x27;virtio\virtio_blk\virtio_pci\virtio_net&#x27; | sudo tee /etc/modules-load.d/virtio.conf
lsmod | grep virtio # Check virtio modules
</code></pre>
<h2>Configuration de la machine virtuelle</h2>
<p>Une fois que l&#x27;environnement est prêt, il faut créer et configurer notre machine virtuelle avec <code>virt-manager</code>. Plutôt que de mettre une centaine de screenshots voici une vidéo (en anglais) qui donne étape par étape la configuration de notre machine virtuelle.</p>
<p><a href="https://youtube.com/watch?v=6FI31QDtyy4">Configuration d&#x27;une machine virtuelle Windows avec virt-manager</a></p>
<h2>Configuration réseau</h2>
<p>Pour configurer une connexion réseau sur votre machine virtuelle :</p>
<ol>
<li>Edit -&gt; Connection Details -&gt; Virtual Networks -&gt; Add Network</li>
<li>Create &quot;br0&quot; virtual network with &quot;Forwarding to physical network&quot; option and Physical device wlp59s0</li>
<li><code>virsh edit &lt;VM_name&gt;</code> and add :</li>
</ol>
<pre><code class="language-config">&lt;interface type=&#x27;network&#x27;&gt;
  &lt;mac address=&#x27;53:54:00:b8:65:3d&#x27;/&gt;
  &lt;source network=&#x27;br0&#x27;/&gt;
&lt;/interface&gt;
</code></pre>
<h2>Ma configuration</h2>
<p>Si vous avez suivie toutes les étapes, vous devriez avoir votre machine virtuelle prête à l&#x27;emploi pour jouer à vos jeux préférés.</p>
<p>De mon côté, j&#x27;ai un Laptop, ce qui implique <a href="https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28">une configuration particulière</a>. Pour le moment, je peux seulement lancer ma VM avec un serveur VNC, je n’ai pas réussi à rendre fonctionnelle ma sortie HDMI sur un écran :(.</p>
<p>Voilà à quoi ressemble ma configuration :</p>
<pre><code class="language-bash">sudo /usr/sbin/qemu-system-x86_64 \
-cpu host,kvm=off \
-enable-kvm \
-m 4096 \
-smp cores=4,threads=2 \
-device vfio-pci,host=01:00.0 \
-drive if=pflash,format=raw,readonly,file=/usr/share/ovmf/x64/OVMF_CODE.fd \
-drive if=pflash,format=raw,file=/usr/share/ovmf/x64/OVMF_VARS.fd \
-drive file=/var/lib/libvirt/images/win10.qcow2,format=qcow2,if=none,id=disk0,cache=writeback \
-device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x8,drive=disk0,id=virtio-disk0,bootindex=1 \
-netdev type=tap,script=no,downscript=no,id=net0,ifname=tap2 \
-device virtio-net-pci,netdev=net0,disable-legacy=on,iommu_platform=true,romfile= \
-boot menu=on
</code></pre>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF">https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF</a></li>
<li><a href="https://wiki.archlinux.fr/PCI_passthrough_avec_OMVF">https://wiki.archlinux.fr/PCI_passthrough_avec_OMVF</a></li>
<li><a href="https://medium.com/@dubistkomisch/7c395dde5c2">https://medium.com/@dubistkomisch/7c395dde5c2</a></li>
<li><a href="https://davidyat.es/2016/09/08/gpu-passthrough/">https://davidyat.es/2016/09/08/gpu-passthrough/</a></li>
<li><a href="https://wiki.installgentoo.com/index.php/PCI_passthrough">https://wiki.installgentoo.com/index.php/PCI_passthrough</a></li>
<li><a href="https://clubnix.fr/blog-post/fira/notes-actuelles-sur-le-passthrough-vga">https://clubnix.fr/blog-post/fira/notes-actuelles-sur-le-passthrough-vga</a></li>
<li><a href="https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28">https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28</a></li>
<li><a href="https://linuxserver.io/2017/04/28/how-to-setup-vfio-gpu-passthrough-using-ovmf-and-kvm-on-arch-linux/">https://linuxserver.io/2017/04/28/how-to-setup-vfio-gpu-passthrough-using-ovmf-and-kvm-on-arch-linux/</a></li>
<li><a href="https://docs.fedoraproject.org/quick-docs/en-US/creating-windows-virtual-machines-using-virtio-drivers.html">https://docs.fedoraproject.org/quick-docs/en-US/creating-windows-virtual-machines-using-virtio-drivers.html</a></li>
<li><a href="https://youtu.be/dsDUtzMkxFk">GrayWolfTech - Play games in Windows on Linux! PCI passthrough quick guide</a></li>
<li><a href="https://youtu.be/6FI31QDtyy4">Tymscar - Native Performance Windows Games On Linux Quick GPU Passthrough</a></li>
<li>
<a href="/jeux-videos" title="Jeux vidéos" class="not-found">Jeux vidéos</a>

</li>
<li>
<a href="/qemu" title="Qemu" class="not-found">Qemu</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Une sélection de livres pour entreprendre]]></title>
            <description><![CDATA[Est-il vraiment utile de faire des études après avoir lu ces livres ? Voici une sélection de mes livres favoris. Entrepreneuriat, Growth Hacking, développement personnel, bonnes pratiques de dev tout y est !]]></description>
            <link>https://johackim.com/mes-livres-preferes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/mes-livres-preferes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 26 Feb 2018 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/mes-livres-preferes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/mes-livres-preferes.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu archivé</p>
                    </div>
                </blockquote>
<p>Est-il vraiment utile de faire des études après avoir lu ces livres ? Voici une sélection de mes livres favoris. Entrepreneuriat, Growth Hacking, développement personnel, productivité, bonnes pratiques de dev tout y est !</p>
<h2>La méthode Running Lean</h2>
<p><a href="https://placedeslibraires.fr/livre/9782354561239">La méthode Running Lean de Ash Maurya</a></p>
<p>Si je devais en retenir qu&#x27;un seul, ça serait celui-ci. Il a beaucoup simplifié ma vision de l&#x27;entrepreneuriat. Les méthodes décrites sont simples et concrètes et permettent de mener à bien des idées de produits tout en limitant les risques. Un très bon guide pratique du concept Lean Startup.</p>
<h2>Business Model nouvelle génération</h2>
<p><a href="https://placedeslibraires.fr/livre/9782744064876">Business Model nouvelle génération de Alexander Osterwalder</a></p>
<p>Un business model qui tient sur une page et se rédige en 15 minutes : Moi je dis oui !</p>
<h2>Value Proposition Design</h2>
<p><a href="https://placedeslibraires.fr/livre/9782744066313">La méthode Value Proposition Design de Alexander Osterwalder</a></p>
<p>Si vous en avez marre de travailler sur des projets qui n&#x27;intéressent personne, alors ce livre est surement fait pour vous. Il vous aidera à concevoir un produit qui répond à un réel besoin.</p>
<h2>Lean Startup</h2>
<p><a href="https://placedeslibraires.fr/livre/9782744066405">Lean Startup de Eric Ries</a></p>
<p>Un livre culte dans le monde de l&#x27;entrepreneuriat, il vous expliquera la théorie du Lean Startup. Une fois l&#x27;avoir lu, je vous conseille d&#x27;enchainer avec celui de Ash Maurya pour la pratique : The Running Lean.</p>
<h2>Sprint</h2>
<p><a href="https://placedeslibraires.fr/livre/9782212566062">Sprint de Jake Knapp</a></p>
<p>Une méthode qui a permis le développement de projets comme Gmail ou Chrome. Seulement 5 jours pour comprendre, esquisser, décider, prototyper et tester une idée de produit.</p>
<h2>Les Géants du Web</h2>
<p><a href="https://placedeslibraires.fr/livre/9782952589536">Les géants du Web</a></p>
<p>On a beau ne pas aimer ces grandes entreprises, il n&#x27;empêche que leurs cultures, leurs pratiques, leurs organisations et leurs architectures restent une grande source d&#x27;inspiration.</p>
<h2>Culture Code</h2>
<p><a href="https://octo.com/fr/publications/20-culture-code">Culture Code</a></p>
<p>J&#x27;appelle tous les développeurs à lire ce livre (gratuit) ! Il contient toutes les clés pour améliorer son code, et ce, peu importe le language de programmation. Un livre indispensable !</p>
<h2>Guide D’hygiène Informatique</h2>
<p><a href="https://ssi.gouv.fr/uploads/2017/01/guide_hygiene_informatique_anssi.pdf">Guide D’hygiène Informatique de l&#x27;ANSSI</a></p>
<p>La sécurité avant tout ! Un guide réalisé par l&#x27;ANSSI qui résume très bien toutes les mesures à prendre pour sécuriser son entreprise.</p>
<h2>Hacking Growth</h2>
<p><a href="https://koober.com/fr/fiche/r%C3%A9sum%C3%A9-de-hacking-growth:-how-todays-fastest-growing-companies-drive-breakout-success">Hacking Growth</a></p>
<p>Un livre de Sean Ellis, l&#x27;inventeur du terme &quot;Growth Hacking&quot;. On y découvre de nouvelles méthodes marketing permettant de faire croître rapidement son entreprise.</p>
<h2>Blockchain Revolution</h2>
<p><a href="https://amzn.to/2Y7KnPi">Blockchain Révolution de Don Tapscott</a></p>
<p>Ce livre m&#x27;a beaucoup aidé à approfondir mes connaissances sur la blockchain et tout ce qu&#x27;elle apporte à notre société.</p>
<h2>The Entrepreneur Mind</h2>
<p><a href="https://koober.com/fr/fiche/r%C3%A9sum%C3%A9-de-the-entrepreneur-mind">The Entrepreneur Mind de Kevin Johnson</a></p>
<p>Qu&#x27;est-ce qui caractérise un entrepreneur ? Tout est dit dans ce livre.</p>
<h2>Hooked</h2>
<p><a href="https://amzn.to/3pUvlYs">Hooked</a></p>
<p>Je trouve logique qu&#x27;un produit ancré dans nos habitudes ait du succès. Ce livre explique comment créer des habitudes sur l&#x27;utilisation d&#x27;un produit.</p>
<h2>S&#x27;organiser pour réussir</h2>
<p><a href="https://amzn.to/3nMHax7">S&#x27;organiser pour réussir de David Allen</a></p>
<p>Vous avez certainement déjà entendu parler de ce livre. La méthode GTD est très utile dans la vie de tous les jours pour améliorer la gestion quotidienne de nos tâches.</p>
<h2>Deep Work</h2>
<p><a href="https://koober.com/fr/fiche/r%C3%A9sum%C3%A9-de-deep-work-:rules-for-focused-success-in-a-distracted-world">Deep Work de Cal Newport</a></p>
<p>Quoi de mieux que de travailler dans les meilleures conditions et d&#x27;être le plus productif possible ? Découvrez à travers ce livre des astuces vous permettant de rester focus sur votre travail quotidien.</p>
<h2>Le personal MBA</h2>
<p><a href="https://placedeslibraires.fr/livre/9791092184051">Le personal MBA de Josh Kaufman</a></p>
<p>Il s&#x27;agit du prochain livre que je vais lire, les meilleures astuces business semblent être rassemblées dans ce livre.</p>
<h2>Créez le job de vos rêves</h2>
<p><a href="https://placedeslibraires.fr/livre/9782732479453">Créez le job de vos rêves de Alexis Botaya</a></p>
<p>Je suis un grand rêveur et le simple fait de le feuilleter m&#x27;a fait rêver. J&#x27;ai hâte de le lire!</p>
<h2>The One Thing</h2>
<p><a href="https://amzn.to/3GO9CHU">The One Thing de Gary Keller</a></p>
<p>Je viens de découvrir ce livre en rédigeant cet article, ça a l&#x27;air intéressant.</p>
<h2>Business Model You</h2>
<p><a href="https://placedeslibraires.fr/livre/9782744065163">Business Model You</a></p>
<p>Quoi de mieux que de simplifier notre vie à la manière d&#x27;un business model. Je ne l&#x27;ai pas encore lu, mais ce livre a beaucoup attiré mon attention.</p>
<h2>Scaling Lean</h2>
<p><a href="https://placedeslibraires.fr/livre/9782354562540">Scaling Lean de Ash Mauraya</a></p>
<p>Pour être honnête, quand j&#x27;ai vu ce livre en librairie je n’ai pas pu m&#x27;empêcher de l&#x27;acheter tellement je suis tombé amoureux du premier.</p>
<h2>Collaboration</h2>
<p><a href="https://koober.com/fr/fiche/r%C3%A9sum%C3%A9-de-collaboration">Collaboration de Morten Hansen</a></p>
<p>L&#x27;individualisme et les mauvaises pratiques n&#x27;aident pas à collaborer dans de bonnes conditions. Ce livre devrait peut-être aider à collaborer de meilleure façon.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment mener une attaque via une clé USB ?]]></title>
            <description><![CDATA[Existe-t-il un moyen simple de mener une attaque physique sur un ordinateur ou un téléphone simplement à l'aide d'une clé USB en seulement 7 secondes ?]]></description>
            <link>https://johackim.com/comment-menez-facilement-des-attaques-via-usb?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-menez-facilement-des-attaques-via-usb</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 19 Feb 2018 07:57:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-menez-facilement-des-attaques-via-usb.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-menez-facilement-des-attaques-via-usb.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/Bxu66a7.jpeg"/><link rel="preload" as="image" href="https://wiki.bashbunny.com/images/bb_diagram1.png"/><p>Existe-t-il un moyen simple de mener une attaque physique sur un ordinateur ou un téléphone simplement à l&#x27;aide d&#x27;une clé USB en seulement 7 secondes ?</p>
<p><strong>Tout ce qui est présenté dans cet article est réalisé uniquement à des fins éducatives et préventives. Il ne doit en aucun cas être utilisé sur un autre équipement que le vôtre, sans quoi vous vous exposerez à des poursuites pénales de la part des propriétaires. Je ne suis en aucun cas responsable des préjudices ou dommages de quelque nature que ce soit pouvant résulter de l’utilisation de ce qui se trouve dans cet article.</strong></p>
<h2>Bash Bunny ?</h2>
<p><img src="https://i.imgur.com/Bxu66a7.jpeg" alt="Bash Bunny"/></p>
<p><strong>Bash Bunny</strong> est en apparence une simple clé <strong>USB</strong>, en réalité il s&#x27;agit d&#x27;un ordinateur sous <a href="/linux" title="Linux">Linux</a> qui une fois branchée est considéré comme un périphérique de confiance (un clavier, une carte réseau, un port série ou un disque mémoire flash).</p>

<p>Elle peut être branchée sur n&#x27;importe quel périphérique doté d&#x27;une entrée USB/Micro USB (<strong>Linux</strong>, <strong>Windows</strong>, <strong>OSX</strong>, <strong>Android</strong>, <strong>Raspberry Pi</strong>, <strong>FireTV</strong> ect..).</p>
<p>Une fois branchée elle peut par exemple :</p>
<ul>
<li><strong>Exfiltrer des identifiants</strong>, documents, photos, vidéos, etc...</li>
<li>Installer une <strong><a href="https://wikiwand.com/fr/Porte_d%C3%A9rob%C3%A9e">Backdoor</a></strong></li>
<li>Executer une <strong><a href="https://wikiwand.com/fr/Fork_bomb">Fork bomb</a></strong></li>
<li><a href="https://youtube.com/watch?v=QCqW6wXkz3Y">Bruteforcer le code à 4 chiffres d&#x27;un téléphone</a></li>
<li><a href="https://github.com/hak5/bashbunny-payloads">etc...</a></li>
</ul>
<p>Sachant qu&#x27;une <a href="https://wikiwand.com/fr/Porte_d%C3%A9rob%C3%A9e">Backdoor</a> installé par ce moyen (ou un autre) peut permettre davantage :</p>
<ul>
<li><strong>Activer la Webcam</strong> à distance</li>
<li>Enregistrer les frappes du clavier à distance (<strong>keylogger</strong>)</li>
<li>Enregistrer l&#x27;<strong>audio</strong> à distance</li>
<li><strong>Géolocaliser</strong> votre périphérique à distance</li>
<li>Observer et <strong>intercepter vos communications réseau</strong></li>
</ul>
<p>Nous allons voir dans cet article comment cette clé fonctionne et comment se protéger de ce genre de périphérique USB.</p>
<h2>Comment ça fonctionne ?</h2>
<p>Le fonctionnement de cette clé est plutôt simple, à la différence d&#x27;une clé USB classique elle dispose d&#x27;une <strong>LED RGB</strong> servant à indiquer l&#x27;état d&#x27;exécution des <strong>payloads</strong>, et d&#x27;un <strong>interrupteur à 3 positions</strong>.</p>
<p><img src="https://wiki.bashbunny.com/images/bb_diagram1.png" alt="Bash Bunny Modes"/></p>
<p>Les positions 1 et 2 servent simplement à exécuter nos <strong>payloads</strong> et de permuter entre eux facilement tandis que la position 3 (<strong>Arming Mode</strong>) va nous permettre de les éditer.</p>
<p>Avant tout, je vous conseille de mettre à jour le <strong>firmware</strong> de la clé :</p>
<ol>
<li><a href="https://wiki.bashbunny.com/#!downloads.md">Télécharger le dernier fichier de mise à jour.</a></li>
<li>Le copier à la racine de la clé (sans extraire le contenu de l&#x27;archive)</li>
<li>Débrancher et rebrancher la clé.</li>
<li>Attendre 10 minutes jusqu&#x27;à ce que la clé clignote bleue.</li>
</ol>
<p>Chaque <strong>payload</strong> (attaque), est écrit dans un langage simple &quot;<strong>Bunny Script</strong>&quot; composé de fichiers texte à éditer sur la clé :</p>
<ul>
<li>payloads/switch1/payload.txt (position 1)</li>
<li>payloads/switch2/payload.txt (position 2)</li>
</ul>
<p>Voci un exemple simple de payload :</p>
<pre><code class="language-bash">#!/bin/bash

# init
LED SETUP
ATTACKMODE HID

# attack
LED ATTACK
RUN UNITY xterm
Q DELAY 1000
Q STRING touch /tmp/owned.txt
Q ENTER
Q STRING exit
Q ENTER
RUN UNITY gedit
Q DELAY 1000
Q STRING &quot;Bonsoir Elliot&quot;

# finish
LED FINISH
</code></pre>
<p>Dans cet exemple, au moment où l&#x27;on va brancher la clé sur un PC linux, un fichier /tmp/owned.txt sera créé et un éditeur de texte sera ouvert avec écrit &quot;Bonsoir Elliot&quot; à l&#x27;intérieur.</p>
<p>On remarque dans ce script plusieurs paramètres :</p>
<ul>
<li><strong>ATTACKMODE</strong> pour changer le type d&#x27;attaque, ici <strong>HID</strong> pour simuler un clavier.</li>
<li><strong><code>RUN UNITY &lt;nom_logiciel&gt;</code></strong> pour démarrer un logiciel.</li>
<li><strong>LED</strong> pour manier les couleurs de la LED.</li>
<li><strong>DELAY</strong> pour attendre.</li>
<li><strong>ENTER</strong> pour la touche entrée.</li>
<li><a href="https://github.com/hak5/bashbunny-payloads/blob/master/docs/readme.txt">Voir plus de paramètres</a>.</li>
</ul>
<p>Ce payload est là à titre d&#x27;exemple, vous pouvez écrire vos payloads ou en consulter d&#x27;autres sur ce <a href="https://github.com/hak5/bashbunny-payloads">dépôt github</a>.</p>
<h2>Comment s&#x27;en protéger ?</h2>
<p>On a vu dans cet article qu&#x27;il était très simple d&#x27;utiliser ce genre de clé, <strong>je vous conseille fortement de vous en protéger</strong>, il existe plusieurs moyens à ma connaissance :</p>
<ul>
<li><strong>Verouiller votre session utilisateur</strong> pour limiter les interactions clavier.</li>
<li><strong>Ne jamais faire confiance</strong> à des clés USB autre que les siennes.</li>
<li>Installer un utilitaire comme <a href="https://github.com/errbufferoverfl/usb-canary">Usb-canary</a> (Linux, OSX) qui peut vous envoyer un SMS dès que quelqu&#x27;un tente de brancher un périphérique USB sur votre ordinateur durant votre absence.</li>
<li><strong>Vérouiller vos entrées USB</strong> avec des <a href="https://frama.link/22sR4VfY">bloqueurs de ports</a>.</li>
</ul>
<p>Si vous avez d&#x27;autres astuces, n&#x27;hésitez pas à les poster en commentaire ;)</p>
<h2>Conclusion</h2>
<p>Pour ceux qui se le demande, il est possible de reprogrammer le firmware de certaines <strong>clés USB classiques</strong> vendues dans le commerce pour reproduire un fonctionnement similaire à Bash Bunny.</p>
<p>Vous connaissez sans doute sa petite soeur <strong>Rubber Ducky</strong>, la grosse différence que j&#x27;ai pu recenser pour le moment est que le Bash Bunny peut émuler plusieurs types d&#x27;appareils tandis que le Rubber Ducky peut juste émuler un clavier. Et oui, Bash Bunny est aussi compatible avec les <a href="https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript">Ducky Script</a>.</p>
<p>Je n&#x27;ai pas encore exploré les modes d&#x27;attaques <strong>SERIAL</strong>, <strong>ECM_ETHERNET</strong> et <strong>RNDIS_ETHERNET</strong>, ça fera surement l&#x27;objet d&#x27;un autre article.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://wiki.bashbunny.com/">https://wiki.bashbunny.com/</a></li>
<li><a href="https://github.com/hak5/bashbunny-payloads">https://github.com/hak5/bashbunny-payloads</a></li>
<li><a href="https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript">https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript</a></li>
<li><a href="https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads">https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment se configurer un tableau de bord maison ?]]></title>
            <description><![CDATA[Pour afficher tout un tas d'indicateurs clés et statistiques sur un écran, je me suis fabriqué un petit tableau de bord maison sur un Raspberry Pi.]]></description>
            <link>https://johackim.com/comment-configurer-tableau-de-bord-maison?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-configurer-tableau-de-bord-maison</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 12 Feb 2018 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-configurer-tableau-de-bord-maison.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-configurer-tableau-de-bord-maison.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/G5MVfJT.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/vzTehLA.jpeg"/><p>Pour afficher tout un tas d&#x27;indicateurs clés et statistiques sur un écran, je me suis fabriqué un petit tableau de bord maison sur un Raspberry Pi.</p>
<h2>Introduction</h2>
<p>J&#x27;aime bien le concept de <strong>Data Driven</strong> (pilotage par la donnée), c&#x27;est un moyen simple de prendre des décisions en se basant sur autre chose que de simples hypothèses.</p>
<p>Grâce à ce <strong>dashboard</strong>, je visualise rapidement l&#x27;état d&#x27;avancement de mes tâches en cours, ce qu&#x27;il me reste à faire et mes <strong>objectifs à atteindre</strong> le tout <strong>regroupé à un seul endroit</strong>.</p>
<p>Ce dashboard fait partie de mes sources de <strong>motivation</strong>, je peux me fixer des objectifs qui seront affichés en permanence à côté de moi lorsque je travaille.</p>
<p>Dans mon cas, les données utilisées derrière mon dashboard sont gérées par des solutions <strong>open-source</strong> (raspberry, <a href="https://taiga.io/">taiga</a>, <a href="http://metabase.com/">metabase</a> et <a href="https://matomo.org/">piwik</a>) auto-hébergé sur mes propres serveurs dont une grande partie se situe chez moi.</p>
<h2>Installation</h2>
<p><strong>Prérequis</strong> :</p>
<ul>
<li>Un <strong>écran</strong> avec entrée HDMI.</li>
<li>Un <strong>raspberry PI</strong> avec sa <strong>carte SD</strong> et son <strong>alimentation</strong>.</li>
<li>Un <strong>câble HDMI</strong>.</li>
<li>Quelques notions en ligne de commande <strong>Linux</strong>.</li>
</ul>
<p>Niveau hardware, j&#x27;ai utilisé un simple <a href="https://kubii.fr/fr/pi-zero-w/1851-raspberry-pi-zero-w-3272496006997.html">Rasbperry Pi Zero W</a> avec Raspbian comme distribution Linux. Pour installer Raspbian il vous suffit de télécharger le <a href="https://raspberrypi.org/downloads/">fichier .img</a> et de le graver sur une carte SD avec un logiciel comme <a href="https://etcher.io/">etcher</a>.</p>
<p><img src="https://i.imgur.com/G5MVfJT.jpg" alt="Rasbperry Pi Zero W"/></p>
<p>Une fois votre raspberry branché et démarré, il vous faut exécuter cette commande avec l&#x27;utilisateur <code>pi</code> pour installer les prérequis :</p>
<pre><code class="language-bash">curl -L https://git.io/vAxR5 | sudo bash
</code></pre>
<p>Maintenant, il vous reste plus qu&#x27;à éditer le fichier <code>~/.i3/config</code> pour renseigner l&#x27;URL d&#x27;accès à votre dashboard.</p>
<p>L&#x27;URL peut provenir de n&#x27;importe quel service comme <a href="https://matomo.org/">piwik</a>, <a href="https://metabase.com/">metabase</a>, <a href="https://elastic.co/products/kibana">kibana</a>, <a href="https://goaccess.io/">goaccess</a>, <a href="https://grafana.com/">grafana</a>, <a href="https://my-netdata.io/">NetData</a> ou <a href="http://dashing.io/">Dashing</a> etc...</p>
<p>Voilà, votre dashboard s&#x27;affichera à chaque démarrage de votre Raspberry Pi !</p>
<h2>Détails de l&#x27;installation</h2>
<p>Pour les curieux, voilà les détails de ce qu&#x27;il se passe derrière l&#x27;installation :</p>
<pre><code class="language-bash">#!/bin/bash

# Install dependencies
sudo apt-get update
sudo apt-get install -y i3 dmenu rxvt-unicode xorg xinit xdotool surf

# Autologin
sudo systemctl enable autologin@.service

# i3 configuration
mkdir -p ~/.i3 &amp;&amp; cat &gt; ~/.i3/config &lt;&lt; EOF
bindsym $mod+b bar mode toggle
font pango:monospace 8
for_window [class=&quot;Surf&quot;] fullscreen
exec --no-startup-id xset -dpms
exec --no-startup-id xset s off
exec --no-startup-id xdotool mousemove 9999 9999
exec --no-startup-id surf -K https://github.com/johackim # URL TO EDIT
EOF
echo &#x27;exec i3&#x27; &gt;&gt; ~/.xinitrc
echo &#x27;[[ -z $DISPLAY &amp;&amp; $XDG_VTNR -eq 1 ]] &amp;&amp; exec startx&#x27; &gt; ~/.bash_profile

exit 0
</code></pre>
<p>Ce code aura simplement pour objectif d&#x27;installer un petit gestionnaire de fenêtre <strong><a href="http://i3wm.org/">i3</a></strong> et <strong>surf</strong> en tant que navigateur web très léger.</p>
<p><strong>xdotool</strong> se chargera de mettre le navigateur en fullscreen avec la touche <strong>F11</strong> quelques secondes après le démarrage de i3.</p>
<p>EDIT: le paramètre <code>surf -K</code> sera utilisé pour mettre le navigateur en fullscreen.
Merci <a href="https://journalduhacker.net/u/Breizh">Breizh</a> ;)</p>
<h2>Mon tableau de bord</h2>
<p>Personnellement, j&#x27;utilise <a href="https://metabase.com/">Metabase</a> en tant que tableau de bord pour afficher des statistiques provenant des bases de données de <a href="https://matomo.org/">piwik</a>, <a href="https://taiga.io/">taiga</a> et <a href="https://zabbix.com/">zabbix</a>. J&#x27;ai aussi un petit <a href="https://github.com/johackim/node-stats">script maison</a> qui parse et stocke en permanence des données provenant de <a href="http://github.com/johackim">github</a> et <a href="https://mastodon.ethibox.fr/@johackim">mastodon</a> dans une base de données MySQL.</p>
<p><img src="https://i.imgur.com/vzTehLA.jpeg" alt="Apperçu de mon dashboard"/></p>
<p>Pour le moment, je peux voir des métriques comme :</p>
<ul>
<li>L&#x27;état d&#x27;avancement du sprint en cours (<a href="https://wikiwand.com/en/Scrum_(software_development)">Scrum</a>) ; tâches planifiées (TODO), en cours (DOING) et terminées (DONE).</li>
<li>Le nombre de visites par mois de <a href="https://johackim.com/">mon blog</a>.</li>
<li>le nombre de followers <a href="https://mastodon.ethibox.fr/@johackim">mastodon</a> et <a href="https://github.com/johackim/">github</a>.</li>
<li>Le nombre de dysfonctionnements de mon infrastructure via <a href="https://zabbix.com/">zabbix</a>.</li>
</ul>
<p>L&#x27;URL publique de mon dashboard Metabase ressemble à ça :</p>
<p><a href="http://192.168.1.50:3000/public/dashboard/df627c68-8020#refresh=60&amp;theme=night">http://192.168.1.50:3000/public/dashboard/df627c68-8020#refresh=60&amp;theme=night</a></p>
<p>Elle est seulement accessible sur mon réseau local et dispose de deux paramètres ; <code>refresh=60</code> pour le nombre de secondes avant chaque rafraichissement et <code>theme=night</code> pour le mode nuit.</p>
<h2>Conclusion</h2>
<p>Vous pouvez afficher ce que vous voulez sur votre écran: un <strong>tableau de bord</strong> comme dans mon cas, une <strong>vidéo</strong> qui tourne en boucle, une <strong>photo</strong>, un <strong>site internet</strong>, etc...</p>
<p>De mon côté je vais surement remplacer <strong><a href="https://metabase.com/">Metabase</a></strong> par une solution comme <strong><a href="http://elastic.co/">Elastic</a></strong> (je ferai un article à cette occasion). Je trouve que ma solution avec <a href="https://metabase.com/">Metabase</a> est difficile à maintenir et consomme trop de ressources.</p>
<p>Je pense aussi améliorer la pertinence de mes métriques et en ajouter d&#x27;autres :</p>
<ul>
<li>Métriques pirates : <strong>AARRR</strong></li>
<li><strong>Velocity chart</strong></li>
<li><strong>Burndown chart</strong></li>
<li>Pourcentage de progression de mes <strong>Epics</strong></li>
<li><strong>Taux de disponibilité</strong> de mes sites internet</li>
</ul>
<p>Et vous ? Il y a quoi derrière votre dashboard ?</p>
<p>Bonne semaine ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/hebergement-web" title="Hébergement web">Hébergement web</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment vérifier que mon adresse IP n'est pas visible lorsque je télécharge des torrents ?]]></title>
            <description><![CDATA[Lorsque l'on télécharge des torrents, il se peut que notre adresse IP fuite même lors de l'utilisation d'un VPN. Comment vérifier que mon adresse IP n'est pas visible ?]]></description>
            <link>https://johackim.com/verifier-ip-telechargement-torrents?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/verifier-ip-telechargement-torrents</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 22 Jan 2018 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/verifier-ip-telechargement-torrents.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/verifier-ip-telechargement-torrents.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/gzppLM9.jpg"/><link rel="preload" as="image" href="https://i.imgur.com/7YRAALb.png"/><p>Lorsque l&#x27;on télécharge des torrents, il se peut que notre adresse IP fuite, même lors de l&#x27;utilisation d&#x27;un VPN.</p>
<p>Même avec un VPN, si un client torrent n&#x27;est pas bien configuré, il est possible que notre adresse IP reste visible.</p>
<p>Pour vérifier si notre adresse IP est bien caché, téléchargez <a href="https://torguard.net/checkmytorrentipaddress.php">ce magnet de Torguard</a> (le gros bouton vert) depuis votre client torrent.</p>
<p>Si tout se passe bien, l&#x27;adresse IP de votre VPN et le nom de votre client torrent devraient s&#x27;afficher dans la liste.</p>
<p>Si l&#x27;adresse IP affichée n&#x27;est pas celle de votre VPN, vous devez modifier les paramètres de votre client.</p>
<p>J&#x27;utilise personnellement <a href="https://github.com/qbittorrent/qBittorrent/">qBittorrent</a>. Dans mon cas il suffit de modifier les paramètres avancés :</p>
<ul>
<li><strong>Changer l&#x27;interface réseau</strong> utilisée pour télécharger, j&#x27;ai pris <code>tun0</code> qui correspond à l&#x27;interface de mon VPN.</li>
<li>(facultatif) <strong>Désactiver l&#x27;IPv6</strong>, car il n&#x27;est pas supporté par mon VPN et peut potentiellement faire fuiter mon adresse IP.</li>
</ul>
<p><img src="https://i.imgur.com/gzppLM9.jpg" alt="Qbittorrent paramètres avancés"/></p>
<ul>
<li><strong>Activer le mode &quot;Anonymous&quot; de qBittorrent</strong>, ça vous permettra de cacher certaines informations (user-agent, IP, Port, etc...).</li>
</ul>
<p><img src="https://i.imgur.com/7YRAALb.png" alt="Qbittorrent anonymous mode"/></p>
<p><strong>NOTE</strong> : Si le service de <a href="https://torguard.net/checkmytorrentipaddress.php">Torguard</a> ne fonctionne pas, vous pouvez essayer <a href="http://dev.cbcdn.com/ipmagnet/">ipMagnet</a> ou <a href="https://torrentpeek.net">TorrentPeek</a>.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://lifehacker.com.au/2015/02/how-to-see-if-your-vpn-is-leaking-your-ip-address-and-how-to-stop-it/">How To See If Your VPN Is Leaking Your IP Address (And How To Stop It)</a></li>
<li><a href="https://ivpn.net/knowledgebase/troubleshooting/my-real-location-is-detected-when-connected-to-vpn-how-to-disable-geolocation/">My real location is detected when connected to VPN. How to disable geolocation?</a></li>
<li>
<a href="/torrent" title="Torrent" class="not-found">Torrent</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Checklist to protect your privacy]]></title>
            <description><![CDATA[Arguing that you don't care about the right to privacy because you have nothing to hide, is no different than saying you don't care about free speech because you have nothing to say. Edward Snowden]]></description>
            <link>https://johackim.com/protect-your-privacy?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/protect-your-privacy</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 15 Jan 2018 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/protect-your-privacy.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/protect-your-privacy.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Archived content</p>
                    </div>
                </blockquote>
<blockquote class="callout quote">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">Edward Snowden</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Arguing that you don&#x27;t care about the right to privacy because you have nothing to hide, is no different than saying you don&#x27;t care about free speech because you have nothing to say.</p>
                    </div>
                </blockquote>
<p>The source code is here: <a href="https://github.com/johackim/privacy-checklist">https://github.com/johackim/privacy-checklist</a></p>
<h2>Self-hosting</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://searx.me">Google Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://meet.jit.si/">Google Hangout/Skype Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://piwik.org/">Google Analytics Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="http://radicale.org/">Google Calendar Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://joinmastodon.org/">Twitter Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://nextcloud.com/">Dropbox Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://rocket.chat/">Slack Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://wekan.github.io/">Trello Alternative</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Self-host a <a href="https://mailinabox.email/">Gmail Alternative</a></li>
</ul>
<h2>Free Softwares</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Use alternatives to proprietary softwares - <a href="https://alternativeto.net/">alternativeto.net</a></li>
</ul>
<p>NOTE: Free Software gives everybody the right to use, study, share and improve software.
This right helps support other fundamental freedoms like freedom of speech, press and privacy.</p>
<h2>Operating System</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Disable your webcam - <a href="https://gist.github.com/johackim/9092445b6b4d0a330e8c0b327aeb54ae">disable-webcam.sh</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Don&#x27;t use Windows 10, It&#x27;s a privacy nightmare</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Keep your OS and apps update</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Use open-source operating system</li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Use a secure operating system - <a href="https://tails.boum.org/">Tails OS</a> or <a href="https://qubes-os.org/">Qubes OS</a></li>
</ul>
<h2>Phone</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Use secure SMS application - <a href="https://signal.org/">Signal</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Use open-source Operating system - <a href="https://lineageos.org/">LineageOS</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Detect attacks of fake base stations (IMSI-Catcher) on your GSM/UMTS network - <a href="https://cellularprivacy.github.io/Android-IMSI-Catcher-Detector/">AIMSICD</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Android application to monitor your physical room in your absence - <a href="https://github.com/guardianproject/haven">haven</a></li>
</ul>
<h2>Passwords</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Check if you have an account that has been compromised in a data breach - <a href="https://haveibeenpwned.com/">haveibeenpwned.com</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Use a stateless password management solution - <a href="http://masterpasswordapp.com/">Master Password</a></li>
</ul>
<h2>Block advertising</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Set unified hosts file to block fakenews, gambling, porn, social, adware &amp; malware - <a href="https://github.com/StevenBlack/hosts">hosts</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Install a browser plugin to prevent third parties from tracking you - <a href="https://github.com/gorhill/uBlock">uBlock Origin</a></li>
</ul>
<h2>Browser</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Use open-source browser - <a href="https://mozilla.org/en-US/">Firefox</a> or <a href="https://torproject.org/">Tor</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> <a href="https://privacytools.io/#about_config">Configure firefox to enhance the privacy of your browser</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Test whether your browser setup is safe against tracking - <a href="https://panopticlick.eff.org/">Panopticlick</a></li>
</ul>
<h2>Mail</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Secure your communications - <a href="https://protonmail.com/">Protonmail</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> <a href="https://johackim.com/meilleures-solutions-adresse-mail-jetable/">Use disposable email addresses</a></li>
</ul>
<h2>VPN</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> <a href="https://privacytools.io/#vpn">Use a vpn solution</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Disable IPV6 if your VPN no support it - <a href="http://ipv6leak.com/">Check IPV6 leak</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Disable WebRTC in Firefox - <a href="https://diafygi.github.io/webrtc-ips/">Check WebRTC leak</a></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Use a different DNS server than your ISP - <a href="https://dnsleaktest.com/">Check DNS leak</a></li>
<li><a href="https://ivpn.net/knowledgebase/150/My-real-location-is-detected-when-connected-to-VPN-How-to-disable-geolocation.html">Disable browser location</a></li>
</ul>
<h2>Anti-Forensic</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Wipe unused old computers, phones, tablets, hard drives, etc - <code>shred -n 5 -vz /dev/sda</code></li>
<li class="task-list-item"><input type="checkbox" disabled=""/> Use a cleaner - <a href="https://bleachbit.org/">Bleachbit</a></li>
</ul>
<h2>Encryption</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Encrypt your hard drive - <a href="https://wiki.archlinux.org/index.php/Dm-crypt/Device_encryption">LUKS</a></li>
</ul>
<h2>Backups</h2>
<ul class="contains-task-list">
<li class="task-list-item"><input type="checkbox" disabled=""/> Frequently backup your computer - <a href="https://borgbackup.readthedocs.io/">borg</a></li>
</ul>
<hr/>
<p>Réferences :</p>
<ul>
<li><a href="https://privacytools.io/">Recommended Privacy Tools</a></li>
<li><a href="https://prism-break.org/en/">Opt out of global data surveillance programs like PRISM, XKeyscore and Tempora</a></li>
<li><a href="https://ssd.eff.org/">Tips, Tools and How-tos for Safer Online Communications</a></li>
<li><a href="https://redecentralize.github.io/alternative-internet/">Alternatives Internet</a></li>
<li>
<a href="/vie-privee" title="Privacy">Privacy</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installer un serveur VPN en 30 secondes]]></title>
            <description><![CDATA[Vous avez besoin d'un VPN et vous ne souhaitez pas vous embêter à configurer un serveur openvpn manuellement ? Voici une solution pour installer un VPN en 30 secondes.]]></description>
            <link>https://johackim.com/installer-un-vpn-en-30-secondes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installer-un-vpn-en-30-secondes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 08 Jan 2018 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installer-un-vpn-en-30-secondes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installer-un-vpn-en-30-secondes.jpg"/>
            <content:encoded><![CDATA[<p>Vous avez besoin d&#x27;un VPN et vous ne souhaitez pas vous embêter à configurer un serveur openvpn manuellement ? Voici une solution pour installer un VPN en 30 secondes.</p>
<h2>Prérequis</h2>
<ul>
<li>Un serveur distant avec <strong>docker</strong> installé</li>
<li>Un client <strong>openvpn</strong> sur votre workstation</li>
</ul>
<h2>Installation</h2>
<pre><code class="language-bash"># Déploiement du container dockvpn sur votre server distant
CID=$(docker run -d --name dockvpn --restart=always --privileged --net=host ston3o/dockvpn)
</code></pre>
<pre><code class="language-bash"># Récupéreration de l&#x27;url d&#x27;accès au fichier de config `.ovpn` (server distant)
docker run -t -i -p 8080:8080 --volumes-from $CID ston3o/dockvpn serveconfig
</code></pre>
<pre><code class="language-bash"># Démarrer le client openvpn depuis votre workstation
curl -s --insecure -o dockvpn.ovpn &lt;URL&gt; # Téléchargement du fichier .ovpn
openvpn dockvpn.ovpn
</code></pre>
<p>PS : N&#x27;oubliez pas de fermer le deuxième container pour ne pas exposer votre fichier de configuration à d&#x27;autres personnes. Si l&#x27;accès à votre <strong>VPN</strong> ne fonctionne pas, <strong>vérifiez vos firewalls</strong>, le port <code>1194</code> de votre serveur doit être accessible.</p>
<p><a href="https://xorhak.io/mettre-en-place-rapidement-openvpn/">Un autre article</a> a été récemment rédigé sur le sujet avec une autre image docker si ça vous intéresse.</p>
<p>C&#x27;est un petit article cette semaine, j&#x27;espère que ça vous fera gagner du temps ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/vpn" title="VPN" class="not-found">VPN</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment détenir un compte Google anonyme ?]]></title>
            <description><![CDATA[Est-il possible de s'inscrire sur Google sans divulguer ses informations personnelles (e-mail, téléphone, localisation, adresse IP) ?]]></description>
            <link>https://johackim.com/comment-detenir-un-compte-google-anonyme?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-detenir-un-compte-google-anonyme</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 01 Jan 2018 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-detenir-un-compte-google-anonyme.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-detenir-un-compte-google-anonyme.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/3HokFRm.png"/><link rel="preload" as="image" href="https://i.imgur.com/vfht9VD.png"/><link rel="preload" as="image" href="https://i.imgur.com/gY45yBn.jpeg"/><link rel="preload" as="image" href="https://i.imgur.com/thWjuCK.png"/><link rel="preload" as="image" href="https://i.imgur.com/ZGThYgh.png"/><p>Est-il possible de s&#x27;inscrire sur Google sans divulguer ses informations personnelles (e-mail, téléphone, localisation, adresse IP) ?</p>
<p>Avant tout chose, je tiens à préciser que si vous souhaitez garder votre vie privée, il vaut mieux ne pas utiliser Google du tout, pour ça il existe des <a href="https://degooglisons-internet.org/alternative?l=fr">alternatives proposées par Framasoft pour chaque service de Google</a>.</p>
<h2>Google sait tout sur nous</h2>
<p>Une manière simple et rapide de présenter Google est de montrer la liste de leurs produits suivie des données collectées par chacun d&#x27;entre eux. Attention, ça peut faire peur.</p>





























































<table><thead><tr><th>Produit</th><th>Données collectées</th></tr></thead><tbody><tr><td>Google Search (moteur de recherche)</td><td>Questionnements de l’utilisateur et ses centres d’intérêt, ses recherches commerciales ou de voyage.</td></tr><tr><td>Gmail</td><td>Contenu des emails, y compris les pièces jointes, destinataires, contacts, fréquence des échanges.</td></tr><tr><td>Google Analytics (statistiques)</td><td>Déplacement de l’internaute sur le web, liste des pages visitées, temps passé. Google peut pister les visiteurs de 88 % des sites web.Il existe une version pour les applications mobiles permettant de suivre tout ce que fait un utilisateur au sein d’une application sur son smartphone.</td></tr><tr><td>Google Maps</td><td>Lieux géographiques intéressant l’utilisateur, itinéraires prévus.</td></tr><tr><td>Smartphone Android</td><td>Déplacements géographiques, vitesse de déplacement, carnet d’adresses, historique des appels téléphoniques, des SMS, applications installées.</td></tr><tr><td>Google Calendar</td><td>Rendez-vous, lieux, dates, interlocuteurs, sujets de vos rendez-vous (personnels et/ou professionnels).</td></tr><tr><td>Google Wallet</td><td>Numéro de carte bancaire, achats en ligne.</td></tr><tr><td>Google Docs &amp; Drive</td><td>Documents bureautiques (contenu de feuilles de tableur, textes, présentations…).</td></tr><tr><td>Google Chrome (navigateur)</td><td>Mots de passe, historique des sites visités, temps passé sur les sites, fréquence de visite.</td></tr><tr><td>Google Photos</td><td>Photos, lieux de prise de vue, date et heure de la prise de vue.</td></tr><tr><td>YouTube</td><td>Vidéos vues, temps passé devant, moments où l’on fait pause, ce que l’on passe en boucle, vidéos qu’on veut regarder plus tard.</td></tr><tr><td>Google Private results (option de Google Search)</td><td>Rendez-vous, factures à payer, livraisons en attente, vols en avion, réservations d’hôtels ou de restaurants.</td></tr><tr><td>Nest (Thermostat, détecteurs, caméras)</td><td>Présence à la maison, température, qualité de l’air, consommation d’énergie.</td></tr></tbody></table>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://frama.link/wp6X082E">Tristan Nitot, surveillance:// - Les libertés au défi du numérique</a></li>
</ul>
<h2>S&#x27;inscrire sur Google sans communiquer d&#x27;informations personnelles</h2>
<p>Cela devient de plus en plus complexe de naviguer sur internet tout en gardant son anonymat, il existe une multitude de techniques pour pister les utilisateurs, dont certaines fonctionnent même si vous disposez d&#x27;un <strong>VPN</strong> (réseau privé virtuel)...</p>
<h3>Cacher son adresse IP</h3>
<p>Pour cacher votre adresse IP il existe plusieurs solutions VPN gratuites comme <a href="http://vpngate.net/">vpngate</a> ou <a href="https://vpnbook.com/">vpnbook</a>, mais je vous conseille quand même <a href="https://privacytools.io/#vpn">les solutions VPN payantes</a> qui garantissent plus de vie privée et ne conservent pas de logs.</p>
<p>Une fois que vous détener un VPN, vous devez vérifier lors de son utilisation que votre IP ne fuite pas :</p>
<ol>
<li>Desactiver le WebRTC sur votre navigateur - <a href="https://diafygi.github.io/webrtc-ips/">Cliquer pour vérifier</a></li>
<li>Utiliser un <a href="https://wikileaks.org/wiki/Alternative_DNS">autre serveur DNS</a> que celui de votre FAI - <a href="https://dnsleaktest.com/">Cliquer pour vérifier</a></li>
<li>Désactiver l&#x27;ipv6 si votre VPN n&#x27;a pas de support ipv6 - <a href="http://ipv6leak.com">Cliquer pour vérifier</a></li>
<li><a href="https://frama.link/WaKuoZfQ">Desactiver le partage de sa géolocalisation sur son navigateur</a></li>
</ol>
<p>Adresse IP cachée ou non, votre <strong>navigateur</strong> génère quand même une <strong>empreinte unique</strong> permettant de vous identifier lorsque vous naviguer sur internet. Aller <a href="https://panopticlick.eff.org/">vérifier sur ce site</a> si vous en êtes protégé. Pour limiter la casse, vous pouvez utiliser le navigateur <a href="https://torproject.org/">tor-browser</a>.</p>
<h3>Vérification du compte e-mail</h3>
<p>Google demande un compte e-mail, je vous conseille de donner une adresse <a href="https://protonmail.com/">Protonmail</a> qui garantit votre vie privée et la sécurité de votre compte.</p>
<p><img src="https://i.imgur.com/3HokFRm.png" alt="Vérification de votre email"/></p>
<p>Autrement vous pouvez aussi essayer une <a href="/meilleures-solutions-adresse-mail-jetable" title="solution d&#x27;adresse mail jetable">solution d&#x27;adresse mail jetable</a>.</p>

<h3>Vérification du numéro de téléphone</h3>
<p>C&#x27;est pas toujours le cas, mais il y a de fortes chances que Google vous demande un <strong>numéro de téléphone</strong> pour valider votre compte.</p>
<p><img src="https://i.imgur.com/vfht9VD.png" alt="Valider un compte google par SMS"/></p>
<p>Il existe des <strong>solutions de SMS gratuit</strong> comme <a href="https://smsreceivefree.com">smsreceivefree.com</a> ou <a href="https://textnow.com">textnow.com</a> pour ne citer qu&#x27;eux, ça vous permet de recevoir des SMS depuis leur interface web. Elles marchent avec des services autres que Google, mais là on parle du site numéro 1 mondiale, les numéros proposés par ces services semblent être bloqués.</p>
<p>Si vous n&#x27;êtes pas du genre à lâcher l&#x27;affaire, vous pouvez vous acheter une <strong>carte SIM prépayée SYMA à 4,90€</strong> (oui la vie privée a un coût) en liquide dans un bureau de tabac.</p>
<p><img src="https://i.imgur.com/gY45yBn.jpeg" alt="Carte SIM SYMA"/></p>
<p>Cette <strong>carte SIM</strong> est <strong>non nominative</strong> et peut être utilisée immédiatement après achat, en revanche il est possible que la ligne soit suspendue si aucun enregistrement (envoi d&#x27;une pièce d&#x27;identité) n&#x27;est fait dans les 15 jours qui suivent. Dans le cas présent, cette carte sera utilisée pour un usage unique afin de juste récupérer le code de vérification de Google.</p>
<p>Une fois acheté et inséré dans votre vieux Nokia 3310 vous devez composer le <code>*148#</code> pour connaitre votre numéro de téléphone.</p>
<p>Le code PIN par défaut est le <code>0000</code> si on vous le demande.</p>
<p><img src="https://i.imgur.com/thWjuCK.png" alt=""/></p>
<p>Bravo ! Le plus dur est fait, vous avez votre compte, il ne vous reste qu&#x27;à désactiver toutes les options qui ne protègent pas votre vie privée.</p>
<p><img src="https://i.imgur.com/ZGThYgh.png" alt="Paramètres de vie privée Google"/></p>
<p>À vous de juger si oui ou non le fait de décocher ces cases garantit que vos données ne sont pas collectées.</p>
<h2>Conclusion</h2>
<p>Comme vous avez pu le lire, il n&#x27;est pas si évident que ça de naviguer sur internet tout en restant anonyme. Et même avec toutes ces solutions rien ne nous garantit à 100% notre anonymat.</p>
<p>En complément, voici un petit article que j&#x27;ai rédigé qui liste <a href="/protect-your-privacy" title="d&#x27;autres solutions pour protéger sa vie privée">d&#x27;autres solutions pour protéger sa vie privée</a>.</p>

<p>Vous avez d&#x27;autres astuces ? N&#x27;hésitez pas à les partager en commentaires ;).</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://rentry.co/nosms">https://rentry.co/nosms</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Créer son hacklab virtuel avec docker]]></title>
            <description><![CDATA[Pour tester la sécurité de mes serveurs et sites internet, je me suis configuré un hacklab sous docker en tant qu'environnement de pentesting.]]></description>
            <link>https://johackim.com/creer-hacklab-virtuel-docker?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/creer-hacklab-virtuel-docker</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 18 Dec 2017 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/creer-hacklab-virtuel-docker.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/creer-hacklab-virtuel-docker.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/DOwUMHk.png"/><link rel="preload" as="image" href="https://i.imgur.com/TyIYrzj.png"/><p>Pour tester la sécurité de mes serveurs et sites internet, je me suis configuré un <strong>hacklab</strong> sous <strong>docker</strong> en tant qu&#x27;environnement de <strong>pentesting</strong>. Je peux désormais réaliser mes <strong>tests d&#x27;intrusions</strong> depuis tout type d&#x27;environnement (<a href="/linux" title="Linux">Linux</a>, Mac OS, Windows).</p>

<p>Voici mon <strong>hacklab</strong> : <a href="http://github.com/johackim/docker-hacklab">http://github.com/johackim/docker-hacklab</a></p>
<p><img src="https://i.imgur.com/DOwUMHk.png" alt="Hacklab"/></p>
<p>Je regroupe dans cet environnement virtuel un ensemble d&#x27;outils qui me permet de réaliser très rapidement des actions de <strong>pentest</strong>. Une simple commande me permet de démarrer instantanément mon <strong>environnement virtuel</strong>.</p>
<pre><code class="language-bash">docker run --name hacklab --net=host --privileged -it ston3o/docker-hacklab zsh
</code></pre>
<p><a href="http://github.com/johackim/docker-hacklab">Ce dépôt github</a> recense toutes les <strong>techniques</strong> et <strong>outils</strong> me permettant de mener à bien mes <strong>pentest</strong>.</p>
<h2>1. README</h2>
<p>Je recense toutes les ressources que je juge utile dans <a href="https://github.com/johackim/docker-hacklab/blob/master/README.md">le fichier README.md</a> que j&#x27;améliore au fur et à mesure de mes découvertes, on y trouve actuellement plein de ressources sur le thème de la sécurité :</p>
<ul>
<li><a href="https://github.com/johackim/docker-hacklab/blob/master/README.md#exploit-database">Des bases de données d&#x27;exploits</a>.</li>
<li><a href="https://github.com/johackim/docker-hacklab#other-useful-docker-commands">D&#x27;autres commandes docker utiles</a></li>
<li><a href="https://github.com/johackim/docker-hacklab#search-engines">Des moteurs de recherche d&#x27;équipements connectés</a></li>
<li>Des sites de doxing</li>
<li>Des blogs et chaines YouTube</li>
<li>Des dépôts github</li>
</ul>
<h2>2. Cheats</h2>
<p><img src="https://i.imgur.com/TyIYrzj.png" alt=""/></p>
<p><a href="https://github.com/chrisallenlane/cheat">Cheat</a> est très pratique pour gérer ses <strong>aide-mémoires</strong>.</p>
<p>Si par exemple je ne me souviens plus des commandes du framework <strong>metasploit</strong> :</p>
<pre><code class="language-bash">$ cheat metasploit

# To show all exploits that for a vulnerability
grep &lt;vulnerability&gt; show exploits

# To select an exploit to use
use &lt;exploit&gt;

# To see the current settings for a selected exploit
show options

# To see compatible payloads for a selected exploit
show payloads

# To set the payload for a selected exploit
set payload &lt;payload&gt;

# To set setting for a selected exploit 
set &lt;option&gt; &lt;value&gt;

# To run the exploit
exploit
</code></pre>
<p>On peut aussi éditer ou chercher un aide mémoire.</p>
<pre><code class="language-bash">cheat -e &lt;name&gt; # Editer un aide mémoire
cheat -s &lt;word&gt; # Chercher un mot dans nos aide-mémoires
</code></pre>
<h2>3. Dockerfile</h2>
<p>Mon hacklab reprend une image docker officielle de kali auquel j&#x27;ai ajouté tous mes outils sous forme de paquets ou dépôts github que je regroupe sous plusieurs catégories dans un fichier <a href="https://github.com/johackim/docker-hacklab/blob/master/Dockerfile">Dockerfile</a> :</p>
<pre><code class="language-bash"># Footprinting / Information-Gathering / OSINT / Fingerprint
# AV Evasion / Dropper
# Vulnerability Scanner (SQL, XSS, LFI, RFI etc...)
# Pentest Framework
# MITM / ARP poisoning / Spoofing / Sniffing
# Email Spoofing
# Crack password
# Hash Manipulation
# SQL Injection
# Phishing
# DOS Tools
# Wireless networks
# Reverse Engineering
# Backdoor / Remote Access Trojan (RAT)
# Search exploit
# Post exploitation
# Privilege escalation
# Forensic
# Geolocalisation
# Shellcode
# Wordpress
# Bypass CloudFlare
# Steganography
# Honeypot
# Reverse shell
# Detect WAF
# Remove file metadata
# Disassembler / Decompiler
# Fuzzing
# Paquet manipulation
</code></pre>
<p>Je n&#x27;ai pas automatisé les procédures d&#x27;installation de tous les outils, n&#x27;ayant pas encore trouvé le temps de le faire j&#x27;ai simplement cloné les dépôts. À chaque découverte d&#x27;un outil de <strong>pentesting</strong> que je juge utile, je prends quelques secondes pour l&#x27;ajouter dans ce <strong>Dockerfile</strong>.</p>
<p>Vous pouvez reprendre la base de mon <strong>Dockerfile</strong> et ajouter vos propres outils si vous le souhaitez.</p>
<h2>4. Alias</h2>
<p>Pour simplifier son utilisation, je me suis créé un <strong>alias</strong>. Il contient un <strong>volume docker</strong> pour partager des fichiers entre mon host et le container docker.</p>
<pre><code class="language-bash">alias hacklab=&#x27;docker run -d --name hacklab --net=host --privileged=true -v /tmp:/mnt -it ston3o/docker-hacklab zsh &gt; /dev/null 2&gt;&amp;1; docker start hacklab &gt; /dev/null; docker exec -it hacklab zsh&#x27;
</code></pre>
<p>Grâce à ça je peux démarrer mon hacklab avec <strong>une simple commande</strong>.</p>
<pre><code class="language-bash">hacklab
</code></pre>
<p>Il existe aussi une technique (<strong>non conseillé pour des raisons de sécurité</strong>) qui permet de lancer des applications avec interface graphique depuis un container docker.</p>
<pre><code class="language-bash">docker run --env=&quot;DISPLAY&quot; --env=&quot;QT_X11_NO_MITSHM=1&quot; --volume=&quot;/tmp/.X11-unix:/tmp/.X11-unix:rw&quot; ston3o/docker-hacklab
xhost +local:root
</code></pre>
<h2>5. Sources d&#x27;informations</h2>
<p>On n’oublie pas les petits flux RSS qui nous permettent de rester informés des derniers outils et techniques de pentest. C&#x27;est en partie grâce à ces sources d&#x27;informations que mon Dockerfile a pu évoluer :</p>
<h3>Sites français</h3>
<ul>
<li><a href="http://homputersecurity.com/">http://homputersecurity.com/</a></li>
<li><a href="http://comptoirsecu.fr/">http://comptoirsecu.fr/</a></li>
<li><a href="https://nolimitsecu.fr/">https://nolimitsecu.fr/</a></li>
</ul>
<h3>Sites anglais</h3>
<ul>
<li><a href="http://null-byte.wonderhowto.com/">http://null-byte.wonderhowto.com/</a></li>
<li><a href="https://kitploit.com/">https://kitploit.com/</a></li>
<li><a href="https://n0where.net/">https://n0where.net/</a></li>
<li><a href="http://hackingarticles.in/">http://hackingarticles.in/</a></li>
<li><a href="https://pentestlab.blog/">https://pentestlab.blog/</a></li>
<li><a href="http://haxf4rall.com/">http://haxf4rall.com/</a></li>
</ul>
<h2>Conclusion</h2>
<p>J&#x27;utilise ce <strong>hacklab</strong> pour mon usage personnel, vous pouvez vous en servir, vous en inspirer ou bien créer le vôtre en partant de zéro.</p>
<p>Ce <strong>hacklab</strong> me permet de regrouper toutes mes techniques, connaissances et découvertes dans le domaine de la <strong>sécurité</strong>. Tout ça est regroupé dans un unique espace de travail plutôt agréable à utiliser.</p>
<p><strong>Si vous aimez, n&#x27;hésitez pas à ajouter une star sur <a href="https://github.com/johackim/docker-hacklab">le dépôt github</a> et à me suivre sur <a href="http://mastodon.ethibox.fr/@johackim">mastodon</a>.</strong></p>
<p>Bonne semaine à vous ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/cybersecurite" title="Cybersécurité">Cybersécurité</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment suivre l'actualité sans compte facebook, twitter ou youtube ?]]></title>
            <description><![CDATA[Pour suivre l'actualité sans détenir de compte sur des réseaux comme Facebook, Twitter ou YouTube j'utilise les flux RSS. Il est possible de suivre des chaines YouTube, des pages Facebook, des comptes Twitter, être alerté des sorties d'album d'un artiste ou des épisodes d'une série.]]></description>
            <link>https://johackim.com/comment-suivre-actualite-sans-compte-facebook-twitter-youtube?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-suivre-actualite-sans-compte-facebook-twitter-youtube</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 11 Dec 2017 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-suivre-actualite-sans-compte-facebook-twitter-youtube.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-suivre-actualite-sans-compte-facebook-twitter-youtube.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/2Ulp1Qm.png"/><link rel="preload" as="image" href="https://i.imgur.com/7O21sUZ.jpg"/><p>Pour suivre l&#x27;actualité sans détenir de compte sur des réseaux comme Facebook, Twitter ou YouTube j&#x27;utilise <a href="https://johackim.com/rss/">les flux RSS</a>. Il est possible de suivre des chaines YouTube, des pages Facebook, des comptes Twitter, être alerté des sorties d&#x27;album d&#x27;un artiste ou des épisodes d&#x27;une série.</p>
<h2>Choisir un client RSS</h2>
<p>Pour pouvoir lire ces flux, il faut dans un premier temps un client RSS, voici ma sélection des clients <strong>console</strong>, <strong>UI</strong> et <strong>web</strong>.</p>
<h3>1. Client console</h3>
<p>Étant personnellement addicte à la console j&#x27;utilise <strong><a href="https://github.com/newsboat/newsboat">newsboat</a></strong> comme client RSS.</p>
<p><img src="https://i.imgur.com/2Ulp1Qm.png" alt="screenshot"/></p>
<h3>2. Clients UI</h3>
<p>Si la console vous fait peur, <a href="https://mozilla.org/fr/thunderbird/">thunderbird</a> peut être utilisé en tant que client RSS.
<a href="https://mozilla.org/fr/firefox/new/">firefox</a> permet aussi de suivre vos flux RSS depuis votre barre de favoris.</p>
<h3>3. Clients web</h3>
<p>Si vous souhaitez autohéberger une solution web sur un serveur distant ou localement il existe plusieurs solutions à installer facilement avec <strong>docker</strong> :</p>
<ul>
<li><a href="https://freshrss.org">freshrss</a></li>
</ul>
<pre><code class="language-bash">docker run -d --name=freshrss -p 80:8888 wonderfall/freshrss
</code></pre>
<ul>
<li><a href="https://selfoss.aditu.de">selfoss</a></li>
</ul>
<pre><code class="language-bash">docker run -d --name selfoss -p 80:80 jenserat/selfoss
</code></pre>
<ul>
<li><a href="https://tt-rss.org/">Tiny Tiny RSS</a></li>
</ul>
<pre><code class="language-bash">docker run -d --name db postgres
docker run -d --name tiny-tiny-rss --link db:postgres -e SELF_URL_PATH=http://localhost/ -p 80:80 siomiz/tiny-tiny-rss
</code></pre>
<p>Et si vous n&#x27;avez toujours pas trouvé votre bonheur <a href="https://alternativeto.net/category/books--news/rss-feed-reader/">d&#x27;autres alternatives existent</a>.</p>
<h2>S&#x27;abonner à une chaine YouTube</h2>
<p>M&#x27;abonner a une chaine YouTube m&#x27;obligerait à détenir un compte google, au lieu de ça j&#x27;utilise les flux RSS d&#x27;une chaine ou playlist YouTube.</p>
<p>Lorsque vous vous rendez sur une chaine YouTube, par exemple <a href="https://youtube.com/user/cashinvestigationf2/">cash investigation</a> son URL peut exister sous deux formes différentes :</p>
<ol>
<li><a href="https://youtube.com/channel/UC9gcw8-7IzzaosI4c0KCP0g">https://youtube.com/channel/UC9gcw8-7IzzaosI4c0KCP0g</a></li>
<li><a href="https://youtube.com/user/cashinvestigationf2/">https://youtube.com/user/cashinvestigationf2/</a></li>
</ol>
<p><img src="https://i.imgur.com/7O21sUZ.jpg" alt="youtube"/></p>
<p>Pour le premier cas, on récupère l&#x27;ID <strong>UC9gcw8-7IzzaosI4c0KCP0g</strong> :</p>
<p><a href="https://youtube.com/feeds/videos.xml?channel_id=UC9gcw8-7IzzaosI4c0KCP0g">https://youtube.com/feeds/videos.xml?channel_id=UC9gcw8-7IzzaosI4c0KCP0g</a></p>
<p>Dans le second cas c&#x27;est le nom d&#x27;utilisateur qu&#x27;on récupère : <strong>cashinvestigationf2</strong></p>
<p><a href="https://youtube.com/feeds/videos.xml?user=cashinvestigationf2">https://youtube.com/feeds/videos.xml?user=cashinvestigationf2</a></p>
<p>Et pour une playlist YouTube, c&#x27;est l&#x27;ID de la playlist qu&#x27;il faut prendre :</p>
<p><a href="https://youtube.com/feeds/videos.xml?playlist_id=PL43OynbWaTMJf3TBZJ5A414D5f7UQ8kwL">https://youtube.com/feeds/videos.xml?playlist_id=PL43OynbWaTMJf3TBZJ5A414D5f7UQ8kwL</a></p>
<p>Pour combiner vos flux RSS [rendez-vous un peu plus bas dans cet article](rendez-vous un peu plus bas dans cet article).</p>
<h2>Suivre une page Facebook, un compte Twitter</h2>
<p>Il est aussi possible de générer le flux RSS d&#x27;une page Facebook publique ou un compte Twitter à l&#x27;aide d&#x27;un service en ligne qui se nomme <a href="http://fetchrss.com">fetchrss</a>.</p>
<p>En revanche, son utilisation gratuite présente plusieurs désavantages :</p>
<ul>
<li>les pubs ajouté dans vos flux</li>
<li>les flux RSS supprimés après 7 jours de non-utilisation</li>
<li>le nombre de flux limité à 5.</li>
</ul>
<p>PS: Je pense remplacer se service prochainement par un script <a href="https://scrapy.org/">scrapy</a> maison.</p>
<h2>Autres astuces</h2>
<h3>Combiner plusieurs flux RSS</h3>
<p><a href="http://rssmix.com">rssmix.com</a> permet la fusion en un seul lien de plusieurs de vos flux RSS.</p>
<h3>Suivre les sorties d&#x27;épisodes ou d&#x27;albums de musique</h3>
<p>Je peux suivre les sorties d&#x27;albums de mes artistes préférées par le biais de <a href="https://muspy.com/">muspy.com</a> (disponible aussi en <a href="https://github.com/alexkay/muspy/">open-source</a>) ou bien les épisodes d&#x27;une série avec <a href="https://showrss.info/">showrss.info</a>. Au passage <strong>showrss</strong> fournit les liens <strong>torrent</strong> des épisodes, ce qui est plutôt pas mal si l&#x27;on souhaite automatiser le téléchargement de nos séries.</p>
<h3>Voir les mails d&#x27;une adresse mail jetable</h3>
<p>On peut aussi récupérer les emails d&#x27;une boite mail jetable comme <a href="http://yopmail.com">yopmail</a> qui génère lui aussi des flux RSS.</p>
<h3>Sauvegarder des articles</h3>
<p>J&#x27;utilise wallabag pour sauvegarder tous mes bookmarks. À chaque fois que je trouve un site, un article ou une vidéo sympa je le bookmark depuis mon navigateur web et il apparait dans mes flux RSS.</p>
<pre><code class="language-bash">docker run -d --name wallabag -v ~/.wallabag/:/var/wallabag/data -p 9999:80 --restart=always wallabag/wallabag
</code></pre>
<h3>Aucun flux RSS trouvé</h3>
<p>Si vous ne trouvez pas le flux RSS d&#x27;un site, vous pouvez chercher dans son code source (CTRL+U), une petite recherche (CTRL+F) sur les mots-clés &quot;atom&quot;, &quot;feed&quot; ou &quot;rss&quot; devrait vous permettre de trouver le lien.</p>
<p>Et si un site ne dispose pas de flux RSS, vous pouvez vous-même en créer par le biais de ces deux services :</p>
<ul>
<li><a href="http://feed43.com/">http://feed43.com/</a></li>
<li><a href="http://fetchrss.com">http://fetchrss.com</a></li>
</ul>
<h2>Conclusion</h2>
<p>Vous pouvez bien entendu suivre n&#x27;importe quel site d&#x27;information comme <a href="https://mrmondialisation.org/">mrmondialisation</a> ou bien vos subreddit pour ceux qui sont sur <a href="https://reddit.com/">reddit</a>.</p>
<p>De cette manière je peux centraliser tous mes flux d&#x27;information et rester informé de l&#x27;actualité tout en restant plus ou moins à l’écart de certains services qui ne respectent pas toujours la vie privée de ces utilisateurs. Les possibilités sont nombreuses, si vous avez d&#x27;autres tips sur les flux RSS n&#x27;hésitez pas à en faire part dans les commentaires.</p>
<p>À lundi prochain pour un nouvel article, bonne semaine ;)</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ma toolbox personnelle]]></title>
            <description><![CDATA[Voici une liste d'outils que j'utilise au quotidien en tant qu'entrepreneur et développeur. Elle sera mise à jour au fur et à mesure de mes découvertes.]]></description>
            <link>https://johackim.com/ma-toolbox-personnel?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ma-toolbox-personnel</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 04 Dec 2017 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ma-toolbox-personnel.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ma-toolbox-personnel.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu archivé</p>
                    </div>
                </blockquote>
<p>Voici une liste d&#x27;outils que j&#x27;utilise au quotidien en tant qu&#x27;entrepreneur et développeur. Elle sera mise à jour au fur et à mesure de mes découvertes.</p>
<h2>Entreprenariat</h2>
<ul>
<li><a href="https://koober.com/">Résumés des meilleurs livres d&#x27;entreprenariat</a></li>
<li><a href="https://enboard.co/startup/">Startup ressources</a></li>
<li><a href="https://youtube.com/user/Startupfood/videos">Conférences sur l&#x27;entrepenariat</a></li>
<li><a href="https://github.com/jurismatic/jurismatic">Toute la doc légale &amp; open source pour les startups</a></li>
<li><a href="https://taiga.io/">Outil de gestion de projet</a></li>
<li><a href="https://legalstart.fr/">Gérer toutes vos formalités juridiques facilement</a></li>
<li><a href="https://startizy.com/">Trouvez les solutions financières pour votre entreprise</a></li>
</ul>
<h2>Design</h2>
<ul>
<li><a href="https://uplabs.com">Site d&#x27;inspiration graphique</a></li>
<li><a href="https://pixabay.com/">Moteur de recherche d&#x27;image</a></li>
<li><a href="http://thenounproject.com/">Moteur de recherche d&#x27;icône</a></li>
<li><a href="http://goodui.org/">Examples d&#x27;interfaces utilisateur avec des taux de conversion élevés</a></li>
<li><a href="https://draw.io/">Site web de diagrammes en ligne</a></li>
<li><a href="https://adpages.xyz/">Inspiration pour des landing page</a></li>
<li><a href="https://canva.com/">Site pour créer des flyers, cartes de visite, posters etc...</a></li>
<li><a href="https://logojoy.com/">Editeur de logo</a></li>
<li><a href="http://vectorpaint.yaks.co.nz/">Editeur SVG</a></li>
<li><a href="https://myfonts.com/">Identifier une font</a></li>
<li><a href="https://whatfontis.com/">Trouver des fonts alternatives</a></li>
<li><a href="https://pablo.buffer.com/">Concevez des images attrayantes pour vos messages sur les médias sociaux en moins de 30 secondes</a></li>
</ul>
<h2>Développement</h2>
<ul>
<li><a href="https://coggle.it/diagram/Vz9LvW8byvN0I38x">Technologies de développement web incontournable</a></li>
<li><a href="https://github.com/kamranahmedse/developer-roadmap">Developer roadmap</a></li>
<li><a href="https://zealdocs.org/">Documentation hors ligne pour les développeurs</a></li>
<li><a href="http://gethifi.com/tools/regex">Tester ses expressions régulières</a></li>
<li><a href="https://github.com/sindresorhus/awesome">Github Awesome</a></li>
<li><a href="https://gchq.github.io/CyberChef/">Couteau suisse de l&#x27;encodage, la compression, le chiffrement et l&#x27;analyse de données</a></li>
<li><a href="https://learn-anything.xyz/">Cartes interactives pour apprendre n&#x27;importe quoi</a></li>
</ul>
<h2>Sysadmin, DNS, mails</h2>
<ul>
<li><a href="http://dply.co">Créer un serveur cloud GRATUIT pendant 2 heures</a></li>
<li><a href="https://instantdomainsearch.com/">Vérifier la disponibilité d&#x27;un nom de domaine</a></li>
<li><a href="https://intodns.com/">Vérifier la santé de votre configuration DNS</a></li>
<li><a href="http://whatsmydns.net/">Vérifier la propagation d&#x27;un changement DNS depuis plusieurs serveurs situés dans différentes parties du monde</a></li>
<li><a href="http://mail-tester.com/">Vérifier la qualité d&#x27;un mail et de sa configuration DNS</a></li>
<li><a href="https://uptimerobot.com/">Être notifié du downtime de votre site Web</a></li>
<li><a href="https://mailtrap.io/">Faux serveur de test SMTP</a></li>
</ul>
<h2>Référencement / performance</h2>
<ul>
<li><a href="https://varvy.com/">Outil de référencement et guide d&#x27;optimisation</a></li>
<li><a href="https://webpagetest.org/">Tester la performance d&#x27;un site internet</a></li>
<li><a href="https://zeroblabla.io/seo/">Liste des bonnes pratiques SEO</a></li>
<li><a href="https://similarweb.com/fr">Analyser la qualité du référencement d&#x27;un site internet</a></li>
<li><a href="https://alexa.com/">Classement mondial des sites internet</a></li>
<li><a href="https://latency.apex.sh/">Vérifier la latence d&#x27;un site internet depuis plusieurs parties du monde</a></li>
</ul>
<h2>Rédaction</h2>
<ul>
<li><a href="https://linguee.fr/">Traduire des mots</a></li>
<li><a href="https://deepl.com/translator">Traduire des textes</a></li>
<li><a href="http://crisco.unicaen.fr/des/">Chercher des Synonymes</a></li>
<li><a href="https://antidote.info/">Correcteur d&#x27;orthographe PAYANT</a></li>
<li><a href="http://tempsreel.nouvelobs.com/abc-lettres/lettre.html">Modèles de lettre</a></li>
</ul>
<h2>Autres</h2>
<ul>
<li><a href="https://photopea.com/">Photoshop en ligne</a></li>
<li><a href="https://alternativeto.net/">Trouver une alternative à un logiciel</a></li>
<li><a href="http://cloudconvert.org/">Convertir tout type de fichier</a></li>
<li><a href="http://tinify.com/">Compresser images PNG et JPG</a></li>
<li><a href="https://fast.com/">Speedtest</a></li>
<li><a href="https://github.com/asciimoo/searx">Métamoteur de recherche open-source</a></li>
<li><a href="https://framapic.org/">Hébergeur d&#x27;image</a></li>
<li><a href="https://frama.link/">Raccourcisseur de lien</a></li>
<li><a href="https://johackim.com/meilleures-solutions-adresse-mail-jetable/">Les meilleures solutions d&#x27;adresse mail jetable</a></li>
<li><a href="https://syncthing.net/">Synchronisation de fichiers depuis plusieurs périphériques</a></li>
<li><a href="https://etcher.io/">Gravez facilement des images sur des cartes SD et des clés USB</a></li>
<li><a href="http://distrowatch.com">Liste des distributions linux</a></li>
<li><a href="https://privacytools.io/">Liste d&#x27;outils pour protéger votre vie privée en ligne</a></li>
<li><a href="https://namechk.com/">Vérifier la disponibilité d&#x27;un username</a></li>
<li><a href="https://canva.com/">Outil pour concevoir un design</a></li>
<li><a href="https://epidemicsound.com/">Librairie audio</a></li>
<li><a href="https://kdenlive.org/">Montage vidéo</a></li>
<li><a href="https://obsproject.com/">Screencast</a></li>
</ul>
<h2>Console</h2>
<pre><code class="language-bash">cloudconvert -f png &lt;file.jpg&gt; # Convertir tout type de fichiers
youtube-dl &lt;url&gt; # Télécharger des vidéos
mat &lt;file&gt; # Supprimer les metadata d&#x27;un fichier
fast # Speedtest
bleachbit # Ccleaner alternative
fdupes -r &lt;dir&gt; # Chercher les fichiers doublons
ncdu # Moyen rapide de voir quels répertoires utilisent votre espace disque
ag # grep 2.0
http &lt;website&gt; # Client console http
kpcli # Client console KeePass
tmux # Multiplexeur de terminal
cheat # https://github.com/chrisallenlane/cheat
tldr # Man simplifié
subliminal download -s -l fr &lt;file&gt; # Télécharger les sous-titres français d&#x27;un fichier vidéo
borg # Backups chiffrés
alexa &lt;website&gt; # Vérifer le classement d&#x27;un site internet
curl ipinfo.io # Connaitre son IP public et sa localisation

# Plus d&#x27;infos : http://github.com/johackim/dotfiles
</code></pre>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Automatiser l'envoie d'une newsletter avec mjml et nodemailer]]></title>
            <description><![CDATA[Cet article est destiné à toutes les personnes souhaitant automatiser l'envoie de leur newsletter avec de jolis e-mails responsive et la possibilité d'injecter du contenue dynamiquement comme les derniers articles d'un blog.]]></description>
            <link>https://johackim.com/automatiser-envoie-newsletter-mjml-nodemailer?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/automatiser-envoie-newsletter-mjml-nodemailer</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 27 Nov 2017 08:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/automatiser-envoie-newsletter-mjml-nodemailer.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/automatiser-envoie-newsletter-mjml-nodemailer.jpg"/>
            <content:encoded><![CDATA[<p>Cet article est destiné à toutes les personnes souhaitant automatiser l&#x27;envoie de leur newsletter avec de jolis e-mails <strong>responsive</strong> et la possibilité d&#x27;injecter du contenue <strong>dynamiquement</strong> comme les derniers articles d&#x27;un blog.</p>
<p>Mon blog <a href="https://ghost.org/">ghost</a> permet de stocker les emails des subscribers, mais pas la création ni l&#x27;envoi d&#x27;une <strong>newsletter</strong>. En attendant cette feature, je me suis fait un petit script maison pour <strong>automatiser l&#x27;envoi des 4 derniers articles de mon blog</strong> chaque mois.</p>
<p>Ce script nodejs va tout simplement parser mon <a href="https://johackim.com/rss/">flux RSS</a> et injecter les articles dans un template <strong>mjml</strong> créé sur <a href="https://mjml.io/try-it-live">mjml.io</a> (framework qui permet de créer très facilement des emails responsive) qui sera envoyé chaque mois aux subscribers de mon blog via <strong>nodemailer</strong>.</p>
<pre><code class="language-javascript">import nodemailer from &#x27;nodemailer&#x27;;
import dotenv from &#x27;dotenv&#x27;;
import { mjml2html } from &#x27;mjml&#x27;;
import feedparser from &#x27;feedparser-promised&#x27;;
import Papa from &#x27;papaparse&#x27;;
import fs from &#x27;fs&#x27;;
import Newsletter from &#x27;./newsletter&#x27;;

dotenv.config({ silent: true });

(async () =&gt; {
    const articles = (await feedparser.parse(process.env.FEED_URL)).map(item =&gt; ({
        title: item.title,
        href: item.link,
        tag: item.categories[0],
        image: item.enclosures[0].url,
    })).slice(0, process.env.NUMBER_ARTICLES);

    const newsletter = Newsletter(articles);
    const htmlOutput = mjml2html(newsletter).html;

    if (process.env.NODE_ENV === &#x27;test&#x27;) {
        fs.writeFileSync(&#x27;newsletter.html&#x27;, htmlOutput);
        process.exit(0);
    }

    const transporter = nodemailer.createTransport({
        port: process.env.MAIL_PORT,
        host: process.env.MAIL_HOST,
        tls: process.env.MAIL_TLS,
        auth: {
            user: process.env.MAIL_USER,
            pass: process.env.MAIL_PASS,
        },
    });

    const mailOptions = {
        from: process.env.MAIL_FROM,
        subject: process.env.MAIL_SUBJECT,
        html: htmlOutput,
    };

    const subscribersCsvFile = fs.readFileSync(process.env.SUBSCRIBERS_FILE_PATH).toString();
    const subscribers = Papa.parse(subscribersCsvFile, { header: true }).data;
    const emails = subscribers.filter(subscriber =&gt; subscriber.email).map(subscriber =&gt; subscriber.email);

    emails.forEach((email) =&gt; {
        transporter.sendMail({ ...mailOptions, to: email });
    });
})();
</code></pre>
<p>Les variables d&#x27;environnement à éditer se situent dans le fichier <code>.env</code> :</p>
<pre><code class="language-env">MAIL_HOST=mail.domain.com
MAIL_USER=contact@domain.com
MAIL_PASS=password
MAIL_PORT=587
MAIL_FROM=&quot;username &lt;contact@domain.com&gt;&quot;
MAIL_SUBJECT=&quot;Newsletter&quot;
MAIL_TLS=true
FEED_URL=http://domain.com/feed/
SUBSCRIBERS_FILE_PATH=subscribers.csv
NUMBER_ARTICLES=4
</code></pre>
<p>Si vous ne souhaitez pas écrire en dur votre mot de passe dans ce fichier, vous pouvez le déclarer de cette façon :</p>
<pre><code class="language-bash">MAIL_PASS=password npm start
</code></pre>
<p>Ce code source est écrit pour un cas spécifique, mais il peut être adapté très facilement selon vos besoins. Il s&#x27;agit ici de seulement 50 lignes de code et d&#x27;un template mjml à adapter. Si vous désirez plus d&#x27;amélioration faite en part dans les commentaires ;).</p>
<p>Voilà, il est possible de l&#x27;automatiser avec une tâche cron et vous avez une newsletter qui envoie chaque mois les derniers articles de votre blog :</p>
<pre><code class="language-cron">0 0 1 * * npm start --prefix &lt;PATH_DIRECTORY&gt;
</code></pre>
<p>Si vous souhaitez simplement tester le rendu de votre newsletter sans envoyer de mails :</p>
<pre><code class="language-bash">npm test # Generate newsletter.html
</code></pre>
<p>Le code source est disponible en détails sur <a href="https://github.com/johackim/newsletter">ce dépôt github</a>.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Les meilleures solutions d'adresse mail jetable]]></title>
            <description><![CDATA[Si vous ne souhaitez plus donner votre adresse mail personnelle pour vous inscrire sur un site au risque de recevoir du SPAM voici les meilleurs sites d'adresse mail jetable.]]></description>
            <link>https://johackim.com/meilleures-solutions-adresse-mail-jetable?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/meilleures-solutions-adresse-mail-jetable</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 17 Nov 2017 17:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/meilleures-solutions-adresse-mail-jetable.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/meilleures-solutions-adresse-mail-jetable.jpg"/>
            <content:encoded><![CDATA[<p>Si vous ne souhaitez plus donner votre adresse mail personnelle pour vous inscrire sur un site au risque de recevoir du SPAM voici les meilleurs sites d&#x27;adresse mail jetable.</p>
<ul>
<li><a href="http://yopmail.com/">Yopmail</a></li>
<li><a href="https://10minutemail.com/">10minutemail</a></li>
<li><a href="https://discard.email/">Discard.email</a></li>
<li><a href="https://fakemail.net/">Fakemail</a></li>
<li><a href="https://maildrop.cc/">Maildrop</a></li>
<li><a href="https://emailnator.com/">Gmailnator</a></li>
<li><a href="https://internxt.com/temporary-email">Internxt</a></li>
<li><a href="https://smailpro.com/advanced">Smailpro</a></li>
<li><a href="https://tempmail.us.com">Tempmail</a></li>
<li><a href="https://adguard-mail.com">Adguard Mail</a></li>
<li><a href="https://nicemail.cc/">Nicemail</a></li>
<li><a href="https://tempmailhub.org/">Tempmailhub</a></li>
<li><a href="https://tempmailgenerator.org/">Temp Mail Generator</a></li>
<li><a href="https://altaddress.org">Altaddress</a></li>
</ul>
<p>Ces sites proposent des boites de réception d&#x27;email jetable, chaque utilisateur peut accéder à n&#x27;importe quelle boite mail chacune limitée dans le temps.</p>
<p>Par exemple, dans le cas du site yopmail.com, je peux m&#x27;attribuer l&#x27;adresse <a href="mailto:bob@yopmail.com">bob@yopmail.com</a> ou <a href="mailto:nimportequoi@yopmail.com">nimportequoi@yopmail.com</a> et regarder tous les mails reçus à cette adresse.</p>
<p>Tous les emails seront supprimés après un délai déterminé par chacune de ces solutions.</p>
<p>Je m&#x27;en sers pour tester n&#x27;importe quel site internet demandant une inscription afin de récupérer le mail de confirmation d&#x27;inscription, cela m&#x27;évite de recevoir des spams à tout va et de polluer ma boite mail.</p>
<p>Puis je m&#x27;inscris avec une vraie adresse dans le cas où le site m&#x27;intéresse et qu&#x27;il ne vend pas mes données personnelles à des tiers à des fins de marketing.</p>
<p>Certains sites bloquent l&#x27;usage d&#x27;adresse mail jetable, à vous de chercher une boite mail avec un domaine non bloqué sur ces sites.</p>
<p>Je précise que l&#x27;envoi ne fonctionne pas, pour ça il vous faudra utiliser d&#x27;autres services comme <a href="http://anonymouse.org/anonemail.html">http://anonymouse.org/anonemail.html</a>.</p>
<p>Tous ces services n&#x27;ont pas pour but de remplacer votre mail personnel, faites attention à ne pas renseigner d&#x27;informations sensibles.</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://www.dsfc.net/infra/messagerie-infrastructure/adresses-mails-jetables-contre-le-spam/">https://www.dsfc.net/infra/messagerie-infrastructure/adresses-mails-jetables-contre-le-spam/</a></li>
<li><a href="https://fmhy.net/internet-tools#temp-mail">https://fmhy.net/internet-tools#temp-mail</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installation simple d'un cluster kubernetes]]></title>
            <description><![CDATA[Voici deux méthodes pour installer simplement kubernetes. La première est une installation locale avec minikube, et la deuxième je l'ai réalisé sur mon cluster proxmox avec kubeadm.]]></description>
            <link>https://johackim.com/installation-simple-cluster-kubernetes?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installation-simple-cluster-kubernetes</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 10 Nov 2017 17:52:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installation-simple-cluster-kubernetes.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installation-simple-cluster-kubernetes.jpg"/>
            <content:encoded><![CDATA[<p>Vu la popularité du projet (dépôt github le plus discuté avec +350 000 commentaires) et faisant partie du monde des containers, je n&#x27;ai pas pu résister à l&#x27;envie de tester <strong>kubernetes</strong>. Voici deux méthodes pour installer simplement kubernetes. La première est une installation locale avec <a href="https://github.com/kubernetes/minikube">minikube</a>, et la deuxième je l&#x27;ai réalisé sur <a href="/comment-creer-son-datacenter-maison" title="mon cluster proxmox">mon cluster proxmox</a> avec <a href="https://github.com/kubernetes/kubeadm">kubeadm</a>.</p>

<h2>1. Installation de Minikube</h2>
<p><strong>NOTE</strong>: Il est <strong>déconseillé</strong> d&#x27;utiliser <strong><a href="https://github.com/kubernetes/minikube">minikube</a></strong> dans un environnement de production, il s&#x27;agit plus d&#x27;une installation à usage personnel sur son laptop afin de tester kubernetes.</p>
<p>L&#x27;installation est simple, un binaire à télécharger et à exécuter :</p>
<pre><code class="language-bash">wget -O /usr/local/bin/minikube https://github.com/kubernetes/minikube/releases/download/v0.23.0/minikube-linux-amd64
chmod +x /usr/local/bin/minikube
</code></pre>
<p>Une fois installé on démarre notre cluster kubernetes single node en une seule commande, l&#x27;installation se fera à l&#x27;intérieur d&#x27;une VM, personnellement j&#x27;utilise <strong>virtualbox</strong> :</p>
<pre><code class="language-bash">minikube start --vm-driver=virtualbox
</code></pre>
<p>On peut déjà jouer avec <strong>kubernetes</strong> et installer un blog ghost par exemple :</p>
<pre><code class="language-bash">kubectl run ghost --image=ghost
kubectl expose deployment ghost --type=NodePort --port=80 --target-port=2368
</code></pre>
<p>L&#x27;accès à celui-ci peut se faire de cette façon :</p>
<pre><code class="language-bash">export IP=$(minikube ip)
export NODE_PORT=$(kubectl get services ghost -o go-template=&#x27;{{(index .spec.ports 0).nodePort}}&#x27;)
curl http://$IP:$NODE_PORT
</code></pre>
<h2>2. Installation de Kubeadm</h2>
<p>L&#x27;utilisation de <strong><a href="https://github.com/kubernetes/kubeadm">kubeadm</a></strong> est aussi déconseillée en production car <strong>kubeadm</strong> est encore en <strong>bêta</strong>, mais n&#x27;étant pas un géant du web je me le permets quand même. J&#x27;ai déployé plusieurs VM <strong>Ubuntu 16.04 LTS</strong> sur mon cluster proxmox. Une qui fera office de master et les autres de workers. Sans proxmox vous pouvez très bien créer vos machines via vagrant :</p>
<pre><code class="language-bash">vagrant init ubuntu/xenial64
vagrant up
</code></pre>
<p>L&#x27;installation des dépendances d&#x27;un noeud kubernetes (master ou worker) devra s&#x27;effectuer comme suit :</p>
<pre><code class="language-bash"># Installation des dépendances d&#x27;un noeud kubernete

apt-get update &amp;&amp; apt-get install -y apt-transport-https docker.io
echo &quot;deb http://apt.kubernetes.io/ kubernetes-xenial main&quot; &gt;&gt; /etc/apt/sources.list.d/kubernetes.list
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
apt-get update &amp;&amp; apt-get install -y kubelet kubeadm kubernetes-cni
swapoff -a # Kubernetes ne supporte pas le SWAP
</code></pre>
<h3>Master node</h3>
<p>Une fois les dépendances installées et le SWAP désactivé sur chacun des noeuds, nous pouvons installer le master :</p>
<pre><code class="language-bash">kubeadm init --pod-network-cidr=10.32.0.0/12
</code></pre>
<p>Il est possible de gérer notre cluster depuis notre PC avec kubectl, il suffit de copier le fichier <code>/etc/kubernetes/admin.conf</code> accessible sur votre noeud master dans votre répertoire <code>$HOME/.kube/config</code>.</p>
<pre><code class="language-bash">scp root@&lt;master ip&gt;:/etc/kubernetes/admin.conf ~/.kube/config
</code></pre>
<p>Je suis sur arch linux donc un simple <code>pacaur -S kubectl-bin</code> m&#x27;installe le client, sinon c&#x27;est juste <a href="https://kubernetes.io/docs/tasks/tools/install-kubectl/">un binaire a installer</a>.</p>
<p>Pour vérifier le bon fonctionnement on peut faire un petit <code>kubectl version</code> depuis notre PC.</p>
<p>L&#x27;installation d&#x27;un <strong>pod network add-on</strong> est requis, c&#x27;est ce qui va permettre de faire communiquer les <strong>pods</strong> entre eux. Il en existe plusieurs (<a href="https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/#pod-network">voici la liste</a>), moi j&#x27;utilise <strong>kube-router</strong>.</p>
<pre><code class="language-bash">kubectl apply -f https://raw.githubusercontent.com/cloudnativelabs/kube-router/master/daemonset/kubeadm-kuberouter.yaml
</code></pre>
<p>Après quelques secondes le node master devrait être ready (<code>kubectl get nodes</code> pour vérifier).</p>
<h3>Worker nodes</h3>
<p>Pour ajouter d&#x27;autres noeuds à notre cluster c&#x27;est très simple, la commande <code>kubeadm init</code> exécutée précédemment à du vous afficher une commande <code>kubeadm join</code> suivit d&#x27;un token qui devrait ressembler à ça :</p>
<pre><code class="language-bash">kubeadm join --token &lt;TOKEN&gt; &lt;IP&gt;
</code></pre>
<p>Une fois cette commande exécutée on vérifie encore une fois que le(s) noeud(s) sont correctement ajouté(s) avec <code>kubectl get nodes</code>.</p>
<p>On peut jouer avec notre cluster et par exemple déployer plusieurs replica de nginx :</p>
<pre><code class="language-bash">kubectl run ghost --image=nginx
kubectl scale deployment nginx --replicas=4
kubectl expose deployment nginx --type=NodePort --port=80 --target-port=80
export NODE_PORT=$(kubectl get services nginx -o go-template=&#x27;{{(index .spec.ports 0).nodePort}}&#x27;)
curl http://192.168.1.50:$NODE_PORT
</code></pre>
<h3>(Optionel) Utiliser seulement un noeud</h3>
<p>Si vous ne voulez pas utiliser d&#x27;autre noeud que le master pour ne pas s&#x27;embêter avec plusieurs VM par exemple c&#x27;est possible :</p>
<pre><code class="language-bash"># Allow a single-host cluster
kubectl taint nodes --all node-role.kubernetes.io/master-
</code></pre>
<p>PS: Si jamais vous avez tout cassé ^^ et que votre cluster ne fonctionne plus vous pouvez reset votre installation avec un <code>kubeadm reset</code>.</p>
<h2>Conclusion</h2>
<p>Kubernetes facilite l&#x27;utilisation des containers sur des grosses infrastructures et propose une manière simple de faire de l&#x27;auto-scaling. Ça permet de se concentrer sur le développement et l&#x27;amélioration de son application et moins sur la gestion de ses serveurs.</p>
<p>Maintenant il me reste d&#x27;autres outils liés à kubernetes à découvrir comme <a href="https://draft.sh/">draft.sh</a>, <a href="https://helm.sh/">helm.sh</a> et <a href="https://github.com/fission/fission">fission</a></p>
<p>Je n&#x27;ai pas abordé les détails de l&#x27;utilisation de kubernetes, il s&#x27;agit simplement d&#x27;un mini guide d&#x27;installation pour découvrir l&#x27;outil, Si vous souhaitez en savoir davantage sur kubernetes voici quelques ressources qui m&#x27;ont été très utiles sur sa compréhension et son utilisation :</p>
<p>Un <a href="https://kubernetesbootcamp.github.io/kubernetes-bootcamp/">tutoriel interactif</a> très efficace que je conseille à tous. Et ces deux vidéos, la première est théorique et l&#x27;autre est plus accès sur la pratique.</p>
<p>Voilà ! Comme d&#x27;habitude si vous avez des questions, suggestions n&#x27;hésitez pas à les soumettre dans les commentaires ! Bon week-end ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://github.com/johackim/dotfiles/blob/d4a5a8f5e3390acf9e4dcbfe441a6447279e0527/.cheat/kubernetes">Mon aide mémoire des commandes kubernetes</a></li>
<li><a href="https://kubernetes.io/">https://kubernetes.io/</a></li>
<li><a href="https://github.com/ramitsurana/awesome-kubernetes/">https://github.com/ramitsurana/awesome-kubernetes/</a></li>
<li><a href="http://kubernetesbyexample.com/">http://kubernetesbyexample.com/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Installation d'une alternative open-source à Disqus]]></title>
            <description><![CDATA[N'ayant pas envie d'utiliser une solution propriétaire pour gérer les commentaires de mon blog je me suis configuré une petite installation de Isso via dokku.]]></description>
            <link>https://johackim.com/installation-alternative-open-source-disqus?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/installation-alternative-open-source-disqus</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 03 Nov 2017 18:00:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/installation-alternative-open-source-disqus.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/installation-alternative-open-source-disqus.jpg"/>
            <content:encoded><![CDATA[<p>N&#x27;ayant pas envie d&#x27;utiliser une solution propriétaire pour gérer les commentaires de mon blog et d&#x27;envoyer mes données personnelles et les vôtres (adresse IP, nom et e-mail) sur des serveurs aux USA. Je me suis configuré une petite installation de <a href="https://posativ.org/isso/">Isso</a>.</p>
<p>J&#x27;utilise <a href="http://dokku.viewdocs.io/dokku/"><strong>dokku</strong></a> pour simplifier la création et les potentiels mises à jour de mes applications docker. C&#x27;est pour moi le moyen le plus simple de gérer une infrastructure web sans la complexité des VHOSTS, déploiements, certificats SSL, volumes et links docker, port binding etc...</p>
<p>PS: Si vous ne souhaitez pas utilisé dokku, vous pouvez simplement utiliser cette commande docker :</p>
<pre><code class="language-bash">docker run -d --name isso -p 80:80 sheogorath/isso-docker
</code></pre>
<h2>Installation</h2>
<p>Première chose à faire on pull une image docker trouvé sur <a href="https://hub.docker.com">https://hub.docker.com</a> et créer une application <strong>dokku</strong>.</p>
<pre><code class="language-bash">docker pull sheogorath/isso-docker
dokku apps:create isso
</code></pre>
<p>On configure le nom de domaine de l&#x27;application ainsi que l&#x27;URL du blog qui va héberger le système de commentaire :</p>
<pre><code class="language-bash">dokku domains:set isso isso.mondomaine.fr 
dokku config:set isso ISSO_HOST=https://blog.mondomaine.fr
</code></pre>
<p>D&#x27;autres paramètres existent, comme <code>ISSO_REQUIRE_EMAIL</code> qui permet de forcer le commentateur d&#x27;entrer une valeur dans le champ email :</p>








































<table><thead><tr><th>Name</th><th>Default value</th><th>Description</th></tr></thead><tbody><tr><td><code>ISSO_HOST</code></td><td><code>http://example.com</code></td><td>It corresponds with [General] -&gt; host <a href="https://posativ.org/isso/docs/configuration/server/#general">Details</a></td></tr><tr><td><code>ISSO_NAME</code></td><td><code>comments.example.com</code></td><td>It corresponds with [General] -&gt; name <a href="https://posativ.org/isso/docs/configuration/server/#general">Details</a></td></tr><tr><td><code>ISSO_MAX_AGE</code></td><td><code>30m</code></td><td>It corresponds with [General] -&gt; max-age <a href="https://posativ.org/isso/docs/configuration/server/#general">Details</a></td></tr><tr><td><code>ISSO_REPLY_TO_SELF</code></td><td><code>false</code></td><td>It corresponds with [Guard] -&gt; reply-to-self <a href="https://posativ.org/isso/docs/configuration/server/#guard">Details</a></td></tr><tr><td><code>ISSO_REQUIRE_EMAIL</code></td><td><code>false</code></td><td>It corresponds with [Guard] -&gt; require-email <a href="https://posativ.org/isso/docs/configuration/server/#guard">Details</a></td></tr><tr><td><code>ISSO_REQUIRE_AUTHOR</code></td><td><code>false</code></td><td>It corresponds with [Guard] -&gt; require-author <a href="https://posativ.org/isso/docs/configuration/server/#guard">Details</a></td></tr></tbody></table>
<p>En temps normal, <strong>dokku</strong> relie directement le port 80 du reverse proxy au port 80 de notre container isso grâce à la directive EXPOSE du Dockerfile, ça ne marche pas sur mon environnement, en attendant la résolution de mon <a href="https://github.com/dokku/dokku/issues/2970">issue</a> voici les commandes à exécuter :</p>
<pre><code class="language-bash">dokku proxy:ports-add isso http:80:80
dokku proxy:ports-remove isso http:80:5000
</code></pre>
<p>Après le paramétrage on déploie l&#x27;application isso :</p>
<pre><code class="language-bash">docker tag sheogorath/isso-docker dokku/isso
docker deploy isso
</code></pre>
<p>Le serveur est maintenant accessible sur <code>http://isso.mondomaine.fr</code>, une erreur 400 bad request apparait c&#x27;est normal, isso acceptent seulement les requêtes envoyées depuis le(s) domaine(s) autorisé(s) via la directive <code>ISSO_HOST</code>.</p>
<p>Maintenant que le service isso est en ligne, la configuration de la partie client se fait simplement en ajoutant la librairie JavaScript et une balise <code>&lt;section&gt;</code> sur notre blog :</p>
<pre><code class="language-html">&lt;script data-isso=&quot;//isso.mondomaine.fr/&quot; src=&quot;//isso.mondomaine.fr/js/embed.min.js&quot;&gt;&lt;/script&gt;
&lt;section id=&quot;isso-thread&quot;&gt;&lt;/section&gt;
</code></pre>
<p>D&#x27;autres paramètres que <code>data-isso</code> existent aussi, pour pouvoir afficher les avatars, votes, changer la langue etc... :</p>
<pre><code class="language-html">&lt;script data-isso=&quot;/prefix/&quot;
        data-isso-css=&quot;true&quot;
        data-isso-lang=&quot;ru&quot;
        data-isso-reply-to-self=&quot;false&quot;
        data-isso-require-author=&quot;false&quot;
        data-isso-require-email=&quot;false&quot;
        data-isso-max-comments-top=&quot;10&quot;
        data-isso-max-comments-nested=&quot;5&quot;
        data-isso-reveal-on-click=&quot;5&quot;
        data-isso-avatar=&quot;true&quot;
        data-isso-avatar-bg=&quot;#f0f0f0&quot;
        data-isso-avatar-fg=&quot;#9abf88 #5698c4 #e279a3 #9163b6 ...&quot;
        data-isso-vote=&quot;true&quot;
        data-vote-levels=&quot;&quot;
        src=&quot;/prefix/js/embed.js&quot;&gt;&lt;/script&gt;
</code></pre>
<p>Dans le cas de mon blog sous <strong>ghost</strong>, j&#x27;ai simplement édité mon thème Casper en ajoutant les lignes de code ci-dessus dans le fichier <code>post.hbs</code>.</p>
<h2>Bonus</h2>
<p>Pour éviter de perdre les commentaires en cas de mise a jour de <strong>isso</strong> on peut <strong>persister les données</strong> de cette façon :</p>
<pre><code class="language-bash">dokku storage:mount isso /opt/isso:/data
</code></pre>
<p>Et si l&#x27;on souhaite ajouter un certificat let&#x27;s encrypt une simple commande dokku existe :</p>
<pre><code class="language-bash">dokku letsencrypt isso
</code></pre>
<p>Voilà ! Si vous avez des questions, suggestions n&#x27;hésitez pas à les soumettre dans les commentaires ! Bon week-end ;)</p>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/hebergeur-web" title="Hébergeur web" class="not-found">Hébergeur web</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Comment créer son datacenter maison (homelab) ?]]></title>
            <description><![CDATA[Voici un guide d'installation d'un homelab conçu uniquement avec des logiciels open-source afin de vous permettre d'héberger vos sites internet à la maison !]]></description>
            <link>https://johackim.com/comment-creer-son-datacenter-maison?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/comment-creer-son-datacenter-maison</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Fri, 27 Oct 2017 08:24:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/comment-creer-son-datacenter-maison.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/comment-creer-son-datacenter-maison.jpg"/>
            <content:encoded><![CDATA[<link rel="preload" as="image" href="https://i.imgur.com/HPFrm3m.png"/><link rel="preload" as="image" href="https://i.imgur.com/0BtefaD.png"/><p>Après plusieurs semaines de recherches et de tests, je souhaite partager avec vous ce guide d&#x27;installation d&#x27;un homelab conçu uniquement avec des logiciels open-source afin de vous permettre d&#x27;héberger vos sites internet à la maison !</p>
<p>PS: J&#x27;envisage par la suite de créer une solution <strong>homelab</strong> <strong>all-in-one</strong> et <strong>plug&#x27;n play</strong> afin de permettre aux néophytes d&#x27;installer eux-mêmes leur datacenter chez eux sans connaissances particulières. Si vous êtes intéressé par ce projet, n&#x27;hésitez pas à renseigner votre adresse mail <a href="/newsletter">sur ce lien</a> afin d&#x27;être informé de sa sortie.</p>
<p>Pour le moment voilà à quoi ressemble mon infrastructure maison :</p>
<p><img src="https://i.imgur.com/HPFrm3m.png" alt="Infrastructure"/></p>
<p><strong>NOTE</strong> : Je suis chez orange (Sosh plus précisément) et ma livebox ne gère pas le <strong>bridge</strong>, je ne peux donc pas utilisé <strong>pfsense</strong> en tant que routeur, firewall et serveur DHCP. Et je n&#x27;ai pas non plus la possibilité d&#x27;obtenir une <strong>IP publique fixe</strong>. Je referai un article sur <strong>pfsense</strong> lorsque j&#x27;aurai changé de FAI...</p>
<h2>Prérequis</h2>
<ul>
<li>Un PC avec une connexion internet fera l&#x27;affaire. (il existe aussi <a href="https://intel.com/content/us/en/products/boards-kits/nuc.html">les mini PC NUC de Intel</a> qui ont l&#x27;air pas mal).</li>
</ul>
<p>Pour ma part j&#x27;ai utilisé mon vieux <a href="https://framapic.org/QaBdvkTz4snV/OIbeUeFPEL2I.jpg">Sony VAIO VPCF21Z1E</a> en tant que <strong>Serveur Bare-Metal</strong> sur lequel j&#x27;ai installé <strong>proxmox</strong> comme <strong>hyperviseur</strong>. J&#x27;y ai démarré une VM (machine virtuelle) avec le reverse proxy <strong>traefik</strong> pour pouvoir router le trafic entrant sur les VMs correspondantes. Je peux désormais démarrer autant de VMs que je veux dans la limite des capacités de mon ordinateur. Dans le cas où les limites sont proches d&#x27;être dépassé, proxmox permet de faire du clustering et donne la possibilité de lier d&#x27;autres équipements.</p>
<p>Voici selon moi les avantages et désavantages de l&#x27;utilisation d&#x27;un homelab par rapport à une solution cloud:</p>
<h2>Les avantages</h2>
<ul>
<li>Protection de la vie privée</li>
<li>Économies d&#x27;argent</li>
<li>Garder le contrôle de ses données</li>
<li>Pas de restriction ni de dépendance avec un service tiers</li>
<li>Impact écologique moindre</li>
<li>Décentraliser internet</li>
</ul>
<h2>Les désavantages</h2>
<ul>
<li>Le bon fonctionnement de votre homelab dépendra de la qualité du réseau / débit de votre connexion internet.</li>
<li>Votre PC doit rester allumé 24h/24</li>
<li>Pas de support, vous êtes seul en tant qu&#x27;administrateur système (if you break it, you fix it)</li>
<li>Vous disposez généralement d&#x27;une seule adresse IP publique qui n&#x27;est pas toujours statique.</li>
</ul>
<p>Si comme moi vous êtes curieux, bidouilleur, sensible au sujet de la vie privée et que vous souhaitez vous passer des fournisseurs cloud traditionnels comme AWS, OVH, Digital Ocean, Scaleway, Google Cloud Platform et j&#x27;en passe alors vous êtes au bon endroit !</p>
<h2>Installation de Proxmox</h2>
<p>Dans un premier temps, vous devez télécharger et copier le fichier .iso depuis le <a href="https://proxmox.com/en/downloads/category/iso-images-pve">site officiel</a> sur une clé USB. De mon côté, j&#x27;utilise <a href="https://etcher.io/">etcher</a> pour créer une clé USB bootable.</p>
<p>Une fois bootée sur votre ordinateur qui fera office de serveur, l&#x27;installation commence :</p>
<p>Selectionnez le disque dur de destination (<code>/dev/sda</code> dans mon cas).</p>
<p>Selectionnez votre timezone et la langue de votre clavier.</p>
<p>Configurer les paramètres réseau</p>
<p><img src="https://i.imgur.com/0BtefaD.png" alt="proxmox configuration réseau"/></p>
<ul>
<li>Reboot</li>
</ul>
<p>L&#x27;installation est déjà terminée. Vous pouvez accéder à la très jolie UI de proxmox via <a href="https://192.168.1.50:8006">https://192.168.1.50:8006</a> avec l&#x27;identifiant <strong>root</strong> et <strong>votre mot de passe</strong>.</p>
<p>Vous pouvez déjà créer des VPS (serveurs privés virtuels) à la demande gratuitement et chez vous !</p>
<p><strong>Bonus</strong>: proxmox fournit un <strong>catalogue de template</strong> avec tout plein de distributions et services à démarrer en quelques clics (gitlab, etherpad, jenkins, piwik, debian, ubuntu, arch, centos etc...). La partie <strong>Backup</strong> vous permet de planifier la sauvegarde de vos VMs sous forme de snapshots.</p>
<h2>Reverse proxy (traefik) et let&#x27;s encrypt</h2>
<p>Je dispose d&#x27;une seule adresse IP publique et les services web que je compte déployer sont répartis sur plusieurs machines virtuelles. <strong>traefik</strong> va router le trafic web entrant sur les différentes VMs.</p>
<p>On créer une VM <strong>traefik</strong> basé sur <strong>debian</strong> puis on autorise l&#x27;accès aux ports <strong>80</strong> et <strong>443</strong> en ajoutant deux règles de <strong>port forwarding</strong> sur notre box internet en direction de notre nouvelle VM.</p>
<p>L&#x27;installation de <strong>traefik</strong> est très simple, un simple fichier binaire en go à <a href="https://github.com/containous/traefik/releases">télécharger</a> et exécuter.</p>
<pre><code class="language-bash">wget -O /usr/local/bin/traefik https://github.com/containous/traefik/releases/download/v1.4.0-rc4/traefik_linux-amd64
chmod + /usr/local/bin/traefik
</code></pre>
<p>Voilà à quoi ressemble ma configuration pour accéder au blog sur lequel vous vous trouvez actuellement :</p>
<pre><code class="language-toml"># traefik.toml

defaultEntryPoints = [&quot;http&quot;, &quot;https&quot;]

[entryPoints]

  [entryPoints.http]
  address = &quot;:80&quot;
    [entryPoints.http.redirect]
    entryPoint = &quot;https&quot;
  [entryPoints.https]
  address = &quot;:443&quot;
    [entryPoints.https.tls]

[acme]

email = &quot;contact@johackim.com&quot;
storage = &quot;acme.json&quot;
entryPoint = &quot;https&quot;
onDemand = true

[[acme.domains]]
  main = &quot;johackim.com&quot;

[file]

[backends]
  [backends.blog]
    [backends.blog.servers.server]
    url = &quot;http://192.168.1.5:80&quot;

[frontends]
  [frontends.blog]
  passHostHeader = true
  entrypoints = [&quot;http&quot;, &quot;https&quot;]
  backend = &quot;blog&quot;
    [frontends.blog.routes.route]
    rule = &quot;Host:johackim.com&quot;
</code></pre>
<p>Une simple commande permet de démarrer traefik : <code>traefik -c traefik.toml</code></p>
<p>L&#x27;avantage de cette configuration c&#x27;est qu&#x27;elle permet d&#x27;automatiser la génération de certificats <strong>let&#x27;s encrypt</strong>.</p>
<h2>Configuration de DYNDNS</h2>
<p>Dans le cas où votre FAI ne vous donne pas la possibilité de disposer d&#x27;une IP statique il existe plusieurs méthodes, j&#x27;en connais actuellement deux, la première fonctionne avec <strong>ddclient</strong>:</p>
<pre><code class="language-bash">DEBIAN_FRONTEND=noninteractive apt-get install -y ddclient
</code></pre>
<p>Voici un exemple de configuration <strong>ddclient</strong> relié à <strong>OVH</strong> :</p>
<pre><code class="language-conf"># /etc/ddclient.conf

protocol=dyndns2
use=web, web=checkip.dyndns.com
server=ovh.com
login=YOUR_LOGIN
password=YOUR_PASSWORD
johackim.com
</code></pre>
<p>La seconde méthode fonctionne avec un simple script shell <strong>dyndns.sh:</strong></p>
<pre><code class="language-bash">#!/bin/bash

DYNHOST_USER=&quot;MY_LOGIN&quot;
DYNHOST_PASSWD=&quot;MY_PASSWORD&quot;
DYNHOST_DOMAINS=(mydomain.com mydomain2.com)
OVH_URL=&quot;https://ovh.com/nic/update?system=dyndns&quot;

for DYNHOST_DOMAIN in ${DYNHOST_DOMAINS[@]}; do
    curl --user &quot;$DYNHOST_USER:$DYNHOST_PASSWD&quot; &quot;${OVH_URL}&amp;hostname=${DYNHOST_DOMAIN}&quot;
done

exit $?
</code></pre>
<p>Sans oublié de configurer une tâche cron:</p>
<pre><code class="language-cron">*/10 * * * * bash /usr/local/bin/dyndns.sh
</code></pre>
<p>Dans les deux cas il faudra vous créer un identifiant dans la partie <strong>DynHOST</strong> de votre nom de domaine chez OVH.</p>
<h2>Contourner le loopback de la Livebox</h2>
<p>Pour ceux qui disposent une livebox et qui aimeraient accéder à leurs services depuis leur réseau local sans être redirigé sur la page d&#x27;accueil de la livebox je les invite à se rendre sur <a href="https://blog.cagedmonster.net/contourner-le-loopback-de-la-livebox/">cet article</a>.</p>
<h2>Conclusion</h2>
<p>Bon, ce n’est pas encore un AWS maison, mais pour ceux qui rêvent de pouvoir lancer des VPS simplement et automatiser leurs sauvegardes avec uniquement des logiciels open-source c&#x27;est déjà un très bon début.</p>
<p>J&#x27;ai migré toute mon infrastructure OVH chez moi et je dois avouer que c&#x27;est très plaisant ! Je peux augmenté la RAM, CPU et la taille des disques de mes VMs très facilement grâce à proxmox et à moindre cout.</p>
<p>J&#x27;utilise cette infrastructure maison pour démarrer tous mes services, à savoir Taiga, Jenkins, Rocket.Chat, Metabase, Sentry, Gogs, Zabbix, Searx, Wallabag, Piwik et le blog que vous lisez actuellement</p>
<p>Pour l&#x27;aspect sécurité, à vous d&#x27;installer et paramétrer vos firewalls, IPS, hardening ect...</p>
<p>Voilà ! Si vous avez des questions, suggestions ou améliorations à apporter pour faciliter le processus d&#x27;installation ou autre, n&#x27;hésitez pas à les soumettre dans les commentaires !</p>
<hr/>
<p>Références :</p>
<ul>
<li><a href="https://blog.zwindler.fr/2017/07/11/deploiment-de-proxmox-ve-5-sur-un-serveur-dedie-part-1/">Déploiement de proxmox ve 5 sur un serveur dédié</a></li>
<li><a href="https://reddit.com/r/homelab/">https://reddit.com/r/homelab/</a></li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Ultime list of warez tools]]></title>
            <description><![CDATA[Here my personal list of warez tools to search, stream and download movies, series, musics and softwares.]]></description>
            <link>https://johackim.com/ultime-list-of-warez-tools?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/ultime-list-of-warez-tools</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Thu, 31 Aug 2017 14:25:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/ultime-list-of-warez-tools.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/ultime-list-of-warez-tools.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Contenu archivé</p>
                    </div>
                </blockquote>
<p>Here my personal list of warez tools to search, stream and download movies, series, musics and softwares.</p>
<h2>CLI</h2>
<ul>
<li><a href="https://github.com/johackim/rdcli">rdcli</a> - Download and unrestrict DDL files, torrents and magnets</li>
<li><a href="https://github.com/johackim/netclix">netclix</a> - Search movie streaming links.</li>
<li><a href="https://github.com/mcrapet/plowshare">plowshare</a> - Download on file-sharing websites like uptobox, uploaded..</li>
<li><a href="https://github.com/vikstrous/pirate-get">pirate-get</a> - Search torrents on The Pirate Bay</li>
<li><a href="https://github.com/orinocoz/pirateflix">pirateflix</a> - Stream videos from The Pirate Bay</li>
<li><a href="https://github.com/megous/megatools">megatools</a> - Download on mega</li>
<li><a href="https://github.com/ItzBlitz98/torrentflix">torrentflix</a> - Search and stream videos on torrent websites.</li>
<li><a href="https://github.com/mafintosh/peerflix">peerflix</a> - Streaming torrent client</li>
<li><a href="https://github.com/kryptxy/torrench">torrench</a> - Torrent search tool</li>
<li><a href="https://github.com/aria2/aria2">aria2</a> - Bitorrent client</li>
</ul>
<h2>GUI</h2>
<ul>
<li><a href="https://github.com/popcorn-official/popcorn-desktop">popcorntime</a> - Easily watch movies through torrent streaming</li>
<li><a href="https://github.com/qbittorrent/qBittorrent">Qbittorrent</a> - BitTorrent client with a search feature</li>
<li><a href="https://github.com/sergiotapia/magnetissimo">magnetissimo</a> - Web application that indexes all popular torrent sites, and saves it to the local database</li>
<li><a href="https://frama.link/5U5_Nesy">deezloader</a> - Deezer downloader</li>
<li><a href="http://terrarium-tv.com/">Terrarium TV</a> - PopcornTime like for android</li>
</ul>
<h2>Torrent Websites</h2>
<ul>
<li><a href="https://katcr.co/">https://katcr.co/</a></li>
<li><a href="https://torrentz2.eu/">https://torrentz2.eu/</a></li>
<li><a href="http://1337x.to/">http://1337x.to/</a></li>
<li><a href="https://skytorrents.in/">https://skytorrents.in/</a></li>
<li><a href="https://thepiratebay.org/">https://thepiratebay.org/</a></li>
<li><a href="https://zooqle.com/">https://zooqle.com/</a></li>
<li><a href="https://eztv.ag/">https://eztv.ag/</a></li>
<li><a href="https://yts.ag/">https://yts.ag/</a></li>
<li><a href="http://rarbg.to/">http://rarbg.to/</a></li>
<li><a href="https://bitsnoop.com/">https://bitsnoop.com/</a></li>
<li><a href="https://torrentdownloads.me/">https://torrentdownloads.me/</a></li>
<li><a href="http://magnetdl.com/">http://magnetdl.com/</a></li>
<li><a href="http://torrents9.pe/">http://torrents9.pe/</a></li>
<li><a href="http://btdb.to/">http://btdb.to/</a></li>
<li><a href="https://t411.si/">https://t411.si/</a></li>
</ul>
<h2>Direct Download Websites</h2>
<ul>
<li><a href="https://extreme-down.one/">https://extreme-down.one/</a></li>
<li><a href="https://zone-telechargement.ws/">https://zone-telechargement.ws/</a></li>
</ul>
<h2>Streaming</h2>
<ul>
<li><a href="https://fmovies.to/">https://fmovies.to/</a></li>
<li><a href="https://dpstream.net/">https://dpstream.net/</a></li>
<li><a href="http://skstream.ws/">http://skstream.ws/</a></li>
</ul>
<h2>Unblock Warez Websites</h2>
<ul>
<li><a href="https://unblocked.mx/">https://unblocked.mx/</a></li>
</ul>
<hr/>
<p>Références :</p>
<ul>
<li>
<a href="/warez" title="Warez">Warez</a>

</li>
</ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Multiple ways to expose a local server behind NAT or firewall]]></title>
            <description><![CDATA[I looked for solutions to expose a local server behind a NAT or firewall. Here's what I found.]]></description>
            <link>https://johackim.com/how-to-expose-local-server-behind-firewall?utm_source=rss&amp;utm_medium=rss</link>
            <guid isPermaLink="false">https://johackim.com/how-to-expose-local-server-behind-firewall</guid>
            <dc:creator><![CDATA[johackim]]></dc:creator>
            <pubDate>Mon, 14 Aug 2017 12:20:00 GMT</pubDate>
            <media:content url="https://johackim.com/covers/how-to-expose-local-server-behind-firewall.jpg" medium="image"/>
            <webfeeds:featuredImage url="https://johackim.com/covers/how-to-expose-local-server-behind-firewall.jpg"/>
            <content:encoded><![CDATA[<blockquote class="callout info">
                    
                        <div class="callout-title">
                            <div class="callout-icon"></div>
                            <div class="callout-title-inner">info</div>
                        </div>
                    
                    <div class="callout-content">
                        <p>Archived content</p>
                    </div>
                </blockquote>
<p>I looked for solutions to expose a local server behind a NAT or firewall. Here&#x27;s what I found.</p>
<h2>Solution 1: VPN with port forwarding (with docker)</h2>
<p>For this solution, you must have a server outside your local network, a <a href="https://scaleway.com/pricing/">scaleway C1 server</a> is enough.</p>
<h3>1. Install VPN on your server with docker (server-side)</h3>
<pre><code class="language-bash">CID=$(docker run -d --name dockvpn --restart=always --privileged --net=host ston3o/dockvpn)
</code></pre>
<pre><code class="language-bash">docker run -t -i -p 8080:8080 --volumes-from $CID ston3o/dockvpn serveconfig
</code></pre>
<h3>2. Port forwarding (server-side)</h3>
<pre><code class="language-bash">iptables -A PREROUTING -t nat -i eth0 -p tcp -d &lt;src_ip&gt; -j DNAT --to-destination &lt;dest_ip&gt;
</code></pre>
<h3>3. Download ovpn file and connect to your VPN (client-side)</h3>
<p>Go to <a href="http://server:8080">http://server:8080</a> and execute <code>openvpn myvpn.ovpn</code></p>
<h2>Solution 2: VPN with dedicated IP</h2>
<p>You can use a VPN like <a href="https://purevpn.com/dedicated-ip.php">purvpn</a> to obtain a dedicated IP for 1,99$ per month or <a href="https://ipjetable.net/">ipjetable</a> for free.</p>
<h2>Solution 3: UPNP</h2>
<p>You can open ports with UPNP protocol (only 1024-65535 ports are allowed):</p>
<pre><code class="language-bash">upnpc -a &lt;ip&gt; &lt;port&gt; &lt;external_port&gt; &lt;protocol&gt;
</code></pre>
<p>Example: <code>upnpc -a 192.168.1.25 8888 8888 tcp</code></p>
<h2>Solution 4: tor2web</h2>
<p>Use tor network and tor2web to expose your web server:</p>
<ol>
<li>Install tor: <code>apt-get install tor</code></li>
<li>Bind your web server with tor</li>
</ol>
<pre><code class="language-conf"># /etc/tor/torrc
HiddenServiceDir /var/lib/tor/hidden_service/
HiddenServicePort 80 127.0.0.1:80
</code></pre>
<ol>
<li>Start tor: <code>systemctl start tor</code></li>
<li>Get your hostname.onion <code>cat /var/lib/tor/hidden_service/hostname</code></li>
<li>Go to your website *.onion.sh (tor2web)</li>
</ol>
<h2>Solution 5: Tunnels</h2>
<ul>
<li><a href="https://ngrok.com/">ngrok</a></li>
<li><a href="https://pagekite.net/">pagekite</a></li>
<li><a href="https://localtunnel.me/">localtunnel</a></li>
<li><a href="https://yaler.net/">yaler</a></li>
<li><a href="https://github.com/andydunstall/pico">pico</a></li>
<li><a href="https://github.com/amalshaji/portr">portr</a></li>
<li><a href="https://github.com/ekzhang/bore">bore</a></li>
<li><a href="https://github.com/fosrl/pangolin">pangolin</a></li>
<li><a href="https://github.com/punkpeye/pipenet">pipenet</a></li>
<li>
<a href="/zerotier" title="Zerotier">Zerotier</a>

</li>
<li>Cloudflare Tunnel</li>
<li>AWS Direct Connect</li>
</ul>]]></content:encoded>
        </item>
    </channel>
</rss>