<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0">
    <channel>
      <title>Cloudfrancois&#x27;s blog</title>
      <link>https://blog.cloudfrancois.fr/</link>
      <description></description>
      <generator>Zola</generator>
      <language>fr</language>
      <atom:link href="https://blog.cloudfrancois.fr/rss.xml" rel="self" type="application/rss+xml"/>
      <lastBuildDate>Fri, 21 Nov 2025 00:00:00 +0000</lastBuildDate>
      <item>
          <title>Survivre à l&#x27;aire d&#x27;aujourd&#x27;hui, (aire du numérique mais pas que)</title>
          <pubDate>Fri, 21 Nov 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2025-11-21-survivre-a-laire-du-numerique/</link>
          <guid>https://blog.cloudfrancois.fr/2025-11-21-survivre-a-laire-du-numerique/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2025-11-21-survivre-a-laire-du-numerique/">&lt;p&gt;Je ne sais pas pour vous, mais pour moi les temps que nous vivons sont lourds, pesants.&lt;&#x2F;p&gt;
&lt;p&gt;On aurait déjà bien assez à s&#x27;occuper à trouver des réponses et solutions au truc qui nous pend au nez à coup sûr
(le réchauffement climatique) pour s&#x27;ajouter en plus les dingz de guerre, de libertarianisme à la con et autre délires
de haineux révisionnistes.&lt;&#x2F;p&gt;
&lt;p&gt;Bref c&#x27;est lourd, la merde à atteint le ventilateur et il y en a partout sur les murs.&lt;&#x2F;p&gt;
&lt;p&gt;Pour ma part j&#x27;ai mis plusieurs choses en place pour ne plus subire tout ça ; ça ne fait pas que ces problèmes
n&#x27;existent plus, mais au moins je choisis quand je m&#x27;expose à ces sujets.&lt;&#x2F;p&gt;
&lt;p&gt;Parce que oui, pour moi ce qui me mine c&#x27;est quand se retrouve entremêlés dans un fil de réseau social des trucs
artistiques, beaux, des réflexions et ... les malheurs du monde, la politique crasse etc (et ça fait bien pareil sur
mastodon&#x2F;fediverse hein).&lt;&#x2F;p&gt;
&lt;p&gt;La solution qui pour l&#x27;instant marche pour moi c&#x27;est d&#x27;ajouter des catégories &#x2F; listes, d&#x27;y mettre les comptes ou les
mots clés ; et à chaque fois qu&#x27;un message innaproprié arrive dans le fil principal, de faire en sorte que ce
compte&#x2F; message n&#x27;y arrive plus à l&#x27;avenir.&lt;&#x2F;p&gt;
&lt;p&gt;Ainsi je choisis quand je vais lire ma colonne déprimante ou quand je vais lire ma colonne &quot;safe&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Et je fais ça avec tous les contenus, parce qu&#x27;être exposé en permanence à ces contenus, mélangés avec des contenus
agréables et ben ça marche pour le moral en fait.&lt;&#x2F;p&gt;
&lt;p&gt;En catégorisant, je choisis ma dose d&#x27;infos nazes et quand je m&#x27;y expose. C&#x27;est un choix ce n&#x27;est plus subit.&lt;&#x2F;p&gt;
&lt;p&gt;Prenez soin de vous, on a toutes et tous besoin les uns des autres (enfin presque).&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Installation de Helix sous Debian trixie</title>
          <pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2025-09-10-debian-trixie-helix-editor-install/</link>
          <guid>https://blog.cloudfrancois.fr/2025-09-10-debian-trixie-helix-editor-install/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2025-09-10-debian-trixie-helix-editor-install/">&lt;p&gt;Helix, un éditeur pour votre terminal (qu&#x27;on peut faire entrer dans la catégorie des IDE, vu le nombre de fonctionnalités
offertes), est enfin disponible dans les packages debian depuis la version 13 (trixie).&lt;&#x2F;p&gt;
&lt;p&gt;Voici quelques commandes pour être opérationnel (juste l&#x27;éditeur et la coloration syntaxique) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Installation de helix via apt
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; apt install hx
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# On récupète les grammaires et on les compile (ça permet d&amp;#39;avoir la configuration syntaxique)
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# https:&#x2F;&#x2F;docs.helix-editor.com&#x2F;guides&#x2F;adding_languages.html#common-issues
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hx --grammar&lt;&#x2F;span&gt;&lt;span&gt; fetch
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hx --grammar&lt;&#x2F;span&gt;&lt;span&gt; build
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# Pour avoir les thèmes correctement affichés on a besoin d&amp;#39;activer le support &amp;quot;true color&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# https:&#x2F;&#x2F;github.com&#x2F;helix-editor&#x2F;helix&#x2F;discussions&#x2F;8031#discussioncomment-11378127
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;mkdir -p ~&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;.config&#x2F;helix
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;tee ~&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;.config&#x2F;helix&#x2F;config.toml &amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;EOF
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;[editor]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;true-color = true
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;EOF
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;tee -a ~&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;.bashrc &amp;lt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;EOF
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;export COLORTERM=truecolor
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;EOF
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On peut vérifier que notre installation est opérationnelle :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;hx --health
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;tail ~&lt;&#x2F;span&gt;&lt;span&gt;&#x2F;.cache&#x2F;helix&#x2F;helix.log
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Mise à jour vers Debian trixie, problèmes de NAT</title>
          <pubDate>Tue, 09 Sep 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2025-09-03-trixie-nat-problemes/</link>
          <guid>https://blog.cloudfrancois.fr/2025-09-03-trixie-nat-problemes/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2025-09-03-trixie-nat-problemes/">&lt;p&gt;Suite à la mise à jour d&#x27;une machine, ayant un role de routeur avec NAT, d&#x27;une Debian 12 bookworm à une Debian 13 trixie,
il se peut que le NAT ne fonctionne plus.&lt;&#x2F;p&gt;
&lt;p&gt;Pas la peine de chercher du coté de nftables.&lt;&#x2F;p&gt;
&lt;p&gt;Lors de la mise à jour l&#x27;ip forwarding configuré de &lt;code&gt;&#x2F;etc&#x2F;sysctl.conf&lt;&#x2F;code&gt; saute (le fichier est renomé en
&lt;code&gt;&#x2F;etc&#x2F;sysctl.conf-dpkg-bak&lt;&#x2F;code&gt;)&lt;&#x2F;p&gt;
&lt;p&gt;Pour un retour à la normale rapide :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;cp&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;etc&#x2F;sysctl.conf-dpkg-bak &#x2F;etc&#x2F;sysctl.d&#x2F;custom.conf
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sysctl --system
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Références :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;debian.org&#x2F;releases&#x2F;stable&#x2F;release-notes&#x2F;issues.html#etc-sysctl-conf-is-no-longer-honored&quot;&gt;debian.org&#x2F;releases&#x2F;stable&#x2F;release-notes&#x2F;issues.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Les intelligences artificielles sont des outils totalitaires idéaux</title>
          <pubDate>Tue, 01 Jul 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2025-07-01-intelligence-artificielle-totalitarisme/</link>
          <guid>https://blog.cloudfrancois.fr/2025-07-01-intelligence-artificielle-totalitarisme/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2025-07-01-intelligence-artificielle-totalitarisme/">&lt;blockquote&gt;
&lt;p&gt;Je sais que je me lance dans une écriture pour faire un brain dump des idées qui me passent par la tête et je vois
très bien que ça va finir comme d&#x27;habitude avec un billet de blog d&#x27;une qualité pourrave - en tous cas de qualité
bien inférieure à ce que je voudrais obtenir.&lt;&#x2F;p&gt;
&lt;p&gt;Mais plutôt que de ne jamais le publier pour cause de mauvaise qualité
je tente une nouvelle méthode de production : je vais publier ce billet tel quel et le mettre à jour au fur et à mesure).&lt;&#x2F;p&gt;
&lt;p&gt;Je ne sais pas si et quand je terminerai la rédaction ; bref pour tout ça, chère personne qui passera par là : désolé :-)&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Je vous refais pas le topo, tout le monde saute dans tous les sens avec la Hype des IA génératives ; mais je voudrais
qu&#x27;on prenne le temps de faire une petite pause dans la frénésie pour tenter de toucher, de lister, un peu les choses
qu&#x27;on perd en échange de quelques images&#x2F;vidéos&#x2F;starter packs générés.&lt;&#x2F;p&gt;
&lt;p&gt;Ce qui a démarré l&#x27;envie d&#x27;écrire ce billet c&#x27;est la découverte de
&lt;a href=&quot;https:&#x2F;&#x2F;modelcontextprotocol.io&#x2F;introduction&quot;&gt;MCP (Model Context Protocol)&lt;&#x2F;a&gt;, un protocole utilisé pour outiller des
&lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Large_language_model&quot;&gt;LLM&lt;&#x2F;a&gt; et alimenter leur contexte avec des données diverses et variées ;
mais aussi le fait que de plus en plus de gens n&#x27;utilisent plus les moteurs de recherche pour leurs recherches mais
plutôt un LLM - au point que &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=A0194PWnFxU&quot;&gt;le business model de Google est mis en danger par de nouveaux acteurs qui ont bien pigé
le filon&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;En découle l&#x27;idée qu&#x27;il est pas sûr qu&#x27;il existe encore demain, sur le Web du contenu lisible par des humains
vu que les gens utilisent des LLM pour se renseigner : pourquoi continuer à s&#x27;embêter à publier pour des personnes vu
que ces personnes ne verront jamais la documentaiton en direct puisque la personne consommera la réponse générée par le
LLM sans jamais consulter la documentation source.
Et à quoi bon continuer à publier une documentation comme on le fait jusque-là parce qu&#x27;on sera plus efficace à générer
du contenu dans un format plus adapté au scrapping des LLM, ... Je parle de documentation mais on peut élargir à tout
site Web : à la manière des sites Web de presse ont été encouragés à produire du contenu au format AMP - soit disant optimisé
pour le mobile mais surtout très pratique pour que Google puisse afficher le contenu des journaux directement dans Google
News sans que les gens aient besoin d&#x27;aller sur les sites des journaux - les privant au passage de leurs revenus publicitaires.
Bref sur ce point je paris qu&#x27;on re-verra du déjà vu.&lt;&#x2F;p&gt;
&lt;p&gt;S&#x27;il y a moins de contenu de qualité publié de façon lisible sur le Web, il y aura moins de raison d&#x27;aller sur le Web
et plus de raisons de passer par des LLM.&lt;&#x2F;p&gt;
&lt;p&gt;On en vient à qui possède&#x2F;fabrique les LLM, à leur possibilité d&#x27;entraver l&#x27;usage de ces outils à la tête du client,
aux biais ajouté par dessus le contenu originel, etc. Du fait qu&#x27;il y a une poignée de fournisseur de LLM comment faire
si le fournisseur refuse de donner une information (on le voit déjà sur des sujets qui sont jugés par l&#x27;éditeur ou par
le Pays dans lequel il est établi) ou si le LLM réécrit l&#x27;histoire ?&lt;&#x2F;p&gt;
&lt;p&gt;Si on parle d&#x27;usages, il y a des moments où ça peut être pratique mais il y a aussi bien des usages qu&#x27;on devrait refuser :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;reconnaissance faciale &#x2F; contrôle des populations&lt;&#x2F;li&gt;
&lt;li&gt;armement&lt;&#x2F;li&gt;
&lt;li&gt;discrimination&lt;&#x2F;li&gt;
&lt;li&gt;décisions de justices&lt;&#x2F;li&gt;
&lt;li&gt;opérations administratives (pouvant mettre en difficulté les personnes)&lt;&#x2F;li&gt;
&lt;li&gt;tout ce qui risque de maintenir au pouvoir les mêmes personnes&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pour qu&#x27;une liberté puisse être déféndue, que la résistance puisse se faire, il faut des interstices - des degrés de
libertés pour permettre à des gens de contre-carrer le système. Sans ce degré de liberté - qu&#x27;on pourrait nommer &quot;failles&quot; -
il est difficile voir impossible de résister. Faisons l&#x27;exercice de pensée : où en serait l&#x27;Europe avec de tels outils
dans les années 30&#x2F;45 ? Y serait-on encore ?&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Terraform : backend dynamique</title>
          <pubDate>Mon, 23 Jun 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2025-06-23-terraform-backend-dynamique/</link>
          <guid>https://blog.cloudfrancois.fr/2025-06-23-terraform-backend-dynamique/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2025-06-23-terraform-backend-dynamique/">&lt;p&gt;Terraform ne permet pas l&#x27;utilisation de variables dans le block &lt;code&gt;backend&lt;&#x2F;code&gt; ; ce qui
nous interdit d&#x27;utiliser des trucs pratiques comme le fournisseur
&lt;a href=&quot;https:&#x2F;&#x2F;registry.terraform.io&#x2F;providers&#x2F;hashicorp&#x2F;external&#x2F;latest&#x2F;docs&quot;&gt;external&lt;&#x2F;a&gt;, fournisseur permettant
d&#x27;appeler un programme externe pour alimenter des variables terraform ; programme pouvant être un
gestionnaire de secrets, par exemple.&lt;&#x2F;p&gt;
&lt;p&gt;Par exemple, on peut lire des secrets depuis &lt;a href=&quot;https:&#x2F;&#x2F;www.passwordstore.org&#x2F;&quot;&gt;passwordstore&lt;&#x2F;a&gt;)
via un wrapper maison, qui implémente le protocole attendu par &lt;code&gt;external&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;set &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-e
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;jq -M -n --arg&lt;&#x2F;span&gt;&lt;span&gt; pass_secret &amp;quot;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pass&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; show &lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;{secret: $pass_secret}&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Et ensuite, on peut l&#x27;utiliser ainsi :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;data &amp;quot;external&amp;quot; &amp;quot;mon_secret&amp;quot; {
&lt;&#x2F;span&gt;&lt;span&gt;  program = [&amp;quot;.&#x2F;pass-wrapper.sh&amp;quot;, &amp;quot;mon&#x2F;chemin&#x2F;dans&#x2F;pass&#x2F;mon-secret&amp;quot;]
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Manque de bol, c&#x27;est pas possible de faire ça avec un block &lt;code&gt;backend&lt;&#x2F;code&gt; dans terraform
(opentofu débloque ça).&lt;&#x2F;p&gt;
&lt;p&gt;Avec terraform on doit soit passer par des variables d&#x27;environnement soit via
des arguments à la ligne de commande.&lt;&#x2F;p&gt;
&lt;p&gt;En ligne de commande ça donne ça (on dira que ce fichier s&#x27;appelle &lt;code&gt;monscript.sh&lt;&#x2F;code&gt;):&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#!&#x2F;usr&#x2F;bin&#x2F;env bash
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;declare &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-a backend_vars&lt;&#x2F;span&gt;&lt;span&gt;=(
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;endpoint=https:&#x2F;&#x2F;monstockage-s3.example.com&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;bucket=monbucket&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;key=monfichier.tfstate&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;access_key=&lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pass&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; show monbuckets3&#x2F;access_key)&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;secret_key=&lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;(&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pass&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; show monbuckets3&#x2F;secret_key)&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;)
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;backend_configs&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;for&lt;&#x2F;span&gt;&lt;span&gt; var &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;in &lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;backend_vars[@]&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;do
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;backend_configs&lt;&#x2F;span&gt;&lt;span&gt;+=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; -backend-config=&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;{&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;var&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;}&amp;#39;&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;done
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;export &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;TF_CLI_ARGS_init&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;backend_configs&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;source&lt;&#x2F;span&gt;&lt;span&gt; monscript.sh
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On peut ensuite appeler &lt;code&gt;terraform init&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Nextcloud : lire les données d&#x27;un événément d&#x27;agenda, depuis la base de données</title>
          <pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2025-03-28-nextcloud-decode-calendardata/</link>
          <guid>https://blog.cloudfrancois.fr/2025-03-28-nextcloud-decode-calendardata/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2025-03-28-nextcloud-decode-calendardata/">&lt;p&gt;Les événements de calendrier de nextcloud sont stockés dans la table &lt;code&gt;oc_calendarobjects&lt;&#x2F;code&gt; au format
bytea (dans le cas d&#x27;une base postgresql).&lt;&#x2F;p&gt;
&lt;p&gt;Pour obtenir la représentation plaintext (format ical) de ce champ on peut utiliser la fonction &lt;code&gt;convert_from()&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;sql&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-sql &quot;&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span&gt; convert_from(calendardata, &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;UTF8&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;) &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;from&lt;&#x2F;span&gt;&lt;span&gt; oc_calendarobjects &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;limit &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Surcharge (override) d&#x27;un shell.nix</title>
          <pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2024-10-16-nix-shell-surcharge-override/</link>
          <guid>https://blog.cloudfrancois.fr/2024-10-16-nix-shell-surcharge-override/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2024-10-16-nix-shell-surcharge-override/">&lt;p&gt;Partons du principe qu&#x27;un projet utilise un fichier &lt;code&gt;shell.nix&lt;&#x2F;code&gt; partagé
entre plusieurs personnes, et qu&#x27;on souhaite l&#x27;utiliser tout en ajoutant notre propre
configuration (par exemple pour ajouter des paquets dont on a personnellement besoin).&lt;&#x2F;p&gt;
&lt;p&gt;Exemple de fichier &lt;code&gt;shell.nix&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;nix&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-nix &quot;&gt;&lt;code class=&quot;language-nix&quot; data-lang=&quot;nix&quot;&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# shell.nix
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#8fa1b3;&quot;&gt;{ &lt;&#x2F;span&gt;&lt;span&gt;pkgs ? &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;import &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&amp;lt;nixpkgs&amp;gt; &lt;&#x2F;span&gt;&lt;span&gt;{} &lt;&#x2F;span&gt;&lt;span style=&quot;color:#8fa1b3;&quot;&gt;}&lt;&#x2F;span&gt;&lt;span&gt;:
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pkgs&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;mkShell &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;buildInputs &lt;&#x2F;span&gt;&lt;span&gt;= [
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pkgs&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;kubectl
&lt;&#x2F;span&gt;&lt;span&gt;  ];
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;shellHook &lt;&#x2F;span&gt;&lt;span&gt;=
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;#39;&amp;#39;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;    source &amp;lt;(kubectl completion bash)
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;    alias k=kubectl
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;    complete -F __start_kubectl k
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;    &lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&amp;#39;;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Notre fichier de surcharge, ici &lt;code&gt;local.nix&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;nix&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-nix &quot;&gt;&lt;code class=&quot;language-nix&quot; data-lang=&quot;nix&quot;&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# local.nix
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;let
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;pkgs &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;import &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&amp;lt;nixpkgs&amp;gt; &lt;&#x2F;span&gt;&lt;span&gt;{ };
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;shellNix &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;import &lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;.&#x2F;shell.nix &lt;&#x2F;span&gt;&lt;span&gt;{ &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;inherit &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;pkgs&lt;&#x2F;span&gt;&lt;span&gt;; };
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;in
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pkgs&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;mkShell &lt;&#x2F;span&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;buildInputs &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shellNix&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;buildInputs &lt;&#x2F;span&gt;&lt;span&gt;++ [
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pkgs&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;helix
&lt;&#x2F;span&gt;&lt;span&gt;      &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pkgs&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;rustc
&lt;&#x2F;span&gt;&lt;span&gt;    ];
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;nativeBuildInputs &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shellNix&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;nativeBuildInputs &lt;&#x2F;span&gt;&lt;span&gt;++ [];
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;propagatedBuildInputs &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shellNix&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;propagatedBuildInputs &lt;&#x2F;span&gt;&lt;span&gt;++ [];
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;propagatedNativeBuildInputs &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shellNix&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;propagatedNativeBuildInputs &lt;&#x2F;span&gt;&lt;span&gt;++ [];
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;shellHook &lt;&#x2F;span&gt;&lt;span&gt;= &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shellNix&lt;&#x2F;span&gt;&lt;span&gt;.&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;shellHook &lt;&#x2F;span&gt;&lt;span&gt;+ &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;\n&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; +
&lt;&#x2F;span&gt;&lt;span&gt;      &amp;#39;&amp;#39;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;      &lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&amp;#39;;
&lt;&#x2F;span&gt;&lt;span&gt;  }
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On peut alors obtenir un shell avec à la fois la configuration partagée
et notre configuration locale :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;nix-shell&lt;&#x2F;span&gt;&lt;span&gt; local.nix
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il y a peut-être plus propre ; mais pour l&#x27;instant ça me suffit :-]&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Faire tomber en marche la reconnexion automatique du VPN d&#x27;un NAS synology</title>
          <pubDate>Mon, 13 May 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2024-05-13-synology-openvpn-reconnection-automatique/</link>
          <guid>https://blog.cloudfrancois.fr/2024-05-13-synology-openvpn-reconnection-automatique/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2024-05-13-synology-openvpn-reconnection-automatique/">&lt;p&gt;L&#x27;article qui suit part du principe qu&#x27;on souhaite avoir un NAS synology avec un profil openvpn (client donc), qui se connecte à un serveur ; en vue de pouvoir accéder au NAS à distance - même s&#x27;il est derrière un NAT et sans nécessiter de configuration particulière au niveau parfeu du réseau (dans la majorité des cas).&lt;&#x2F;p&gt;
&lt;p&gt;Le mécanisme de reconnexion automatique de synology ne fonctionne pas ou très mal (certain·e·s parlent du fait que leur mécanisme arrête de tenter sa chance au bout d&#x27;une minute d&#x27;échec...).&lt;&#x2F;p&gt;
&lt;p&gt;Pas assez fiable pour imaginer droper un NAS dans la nature en le gardant joignable pour ses sauvegardes hors-site.&lt;&#x2F;p&gt;
&lt;p&gt;Une solution plus robuste est de créer une tâche planifiée (&lt;code&gt;DSM -&amp;gt; Panneau de configuration -&amp;gt; Planificateur de tâches&lt;&#x2F;code&gt;) et de créer
une tâche avec les paramètres suivants :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;utilisateur : &lt;code&gt;root&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Exécuter les jours suivants, répéter: &lt;code&gt;Quotidienne&lt;&#x2F;code&gt; [sic]&lt;&#x2F;li&gt;
&lt;li&gt;Heure de début : &lt;code&gt;00:00&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Répéter : &lt;code&gt;Toutes les minutes&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Dernière heure d&#x27;exécution : &lt;code&gt;23:59&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Script défini par l&#x27;utilisateur : voir ci-dessous.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Le script (quasi-Verbatim de &lt;a href=&quot;https:&#x2F;&#x2F;gist.github.com&#x2F;hannesbe&#x2F;03020b0f9662a9e973f7cceadcdf0208&quot;&gt;celui-ci&lt;&#x2F;a&gt;) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;CHECKIP&lt;&#x2F;span&gt;&lt;span&gt;=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;10.1.0.1&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# IP à vérifier, si celle-ci ne ping plus alors le vpn est relancé ; typiquement la gateway du tunnel est une solution
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;NAME&lt;&#x2F;span&gt;&lt;span&gt;=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;mon-vpn&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# doit correspondre au nom du profil VPN à redémarrer
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;ID&lt;&#x2F;span&gt;&lt;span&gt;=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;p1489396766&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# trouvé via `grep conf_id &#x2F;usr&#x2F;syno&#x2F;etc&#x2F;synovpnclient&#x2F;vpnc_last_connect`
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;PROTO&lt;&#x2F;span&gt;&lt;span&gt;=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;openvpn&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# nom du proto VPN utilisé
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;if &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;ping -c&lt;&#x2F;span&gt;&lt;span&gt; 1 $&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;CHECKIP &lt;&#x2F;span&gt;&lt;span&gt;&amp;amp;&amp;gt; &#x2F;dev&#x2F;null
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;then
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;synovpnc&lt;&#x2F;span&gt;&lt;span&gt; get_conn
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;route
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;else
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# echo &amp;quot;Killing VPN ($NAME)&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# synovpnc kill_client n&amp;#39;est pas bulletproof
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#synovpnc kill_client --name=$NAME
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# un peu violent de tuer tous les processus openvpn mais au moins ça marche
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# (tant qu&amp;#39;on a qu&amp;#39;un seul tunnel)
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pkill&lt;&#x2F;span&gt;&lt;span&gt; openvpn
&lt;&#x2F;span&gt;&lt;span&gt;  
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;echo &lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Reconnecting VPN (&lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;NAME&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; - &lt;&#x2F;span&gt;&lt;span&gt;$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;PROTO&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;)&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;  
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span&gt; conf_id=$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;ID &lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; &#x2F;usr&#x2F;syno&#x2F;etc&#x2F;synovpnclient&#x2F;vpnc_connecting
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span&gt; conf_name=$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;NAME &lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;gt; &#x2F;usr&#x2F;syno&#x2F;etc&#x2F;synovpnclient&#x2F;vpnc_connecting
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span&gt; proto=$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;PROTO &lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;&amp;gt; &#x2F;usr&#x2F;syno&#x2F;etc&#x2F;synovpnclient&#x2F;vpnc_connecting
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;synovpnc&lt;&#x2F;span&gt;&lt;span&gt; reconnect&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --protocol&lt;&#x2F;span&gt;&lt;span&gt;=$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;PROTO --name&lt;&#x2F;span&gt;&lt;span&gt;=$&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;NAME
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;fi
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;exit&lt;&#x2F;span&gt;&lt;span&gt; 0
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Expression régulière pour convertir des liens en markdown</title>
          <pubDate>Sun, 18 Feb 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2024-02-18-expression-reguliere-pour-convertir-des-liens-en-markdown/</link>
          <guid>https://blog.cloudfrancois.fr/2024-02-18-expression-reguliere-pour-convertir-des-liens-en-markdown/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2024-02-18-expression-reguliere-pour-convertir-des-liens-en-markdown/">&lt;p&gt;Pour faire du search and replace &#x2F; chercher et remplacer dans un document pour convertir des URL au format mardown, on peut utiliser l&#x27;expression régulière suivante :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;(?&amp;lt;!\[)(?:(?&amp;lt;!\]\(\s?))(https?:\&#x2F;\&#x2F;(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9]{1,6}\b([-a-zA-Z0-9@:%_\+.~#?&amp;amp;&#x2F;&#x2F;=]*))
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;L&#x27;URL est alors capturée dans le matching group &lt;code&gt;$1&lt;&#x2F;code&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;On peut ensuite utiliser son outil&#x2F;IDE (par exemple VSCodium &#x2F; VScode) avec l&#x27;expression &lt;code&gt;[1]($1)&lt;&#x2F;code&gt; pour convertir toutes les URL qui corresponde à la Regex ci-dessus :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2024-02-18-expression-reguliere-pour-convertir-des-liens-en-markdown-vscodium.png&quot; alt=&quot;vscodium&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Limitations connues :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Si l&#x27;URL contient les caractères &lt;code&gt;[]()&lt;&#x2F;code&gt;, alors l&#x27;expression régulière ne marchera pas.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>PostgreSQL : identifier les requêtes lentes</title>
          <pubDate>Fri, 16 Feb 2024 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2024-02-16-postgresql-identifier-les-requetes-lentes/</link>
          <guid>https://blog.cloudfrancois.fr/2024-02-16-postgresql-identifier-les-requetes-lentes/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2024-02-16-postgresql-identifier-les-requetes-lentes/">&lt;p&gt;Pour identifier rapidement les requêtes qui prennent beaucoup de temps avec un impact minimum sur l&#x27;environnement d&#x27;exécution, on
peut demander à PostgreSQL d&#x27;écrire dans les journaux (logs) les requêtes dépassant un certain temps d&#x27;exécution.&lt;&#x2F;p&gt;
&lt;p&gt;Note : contrairement à &lt;a href=&quot;https:&#x2F;&#x2F;www.postgresql.org&#x2F;docs&#x2F;current&#x2F;pgstatstatements.html&quot;&gt;pg_stat_statements&lt;&#x2F;a&gt;, les opérations qui suivent peuvent être réalisées sans redémarrer&#x2F;recharger le serveur PostgreSQL.&lt;&#x2F;p&gt;
&lt;p&gt;Pour écrire les requêtes SQL dépassant un temps d&#x27;exécution de 2s dans les journaux PostgreSQL, exécuter cette
commande (il faudra être owner de la base &lt;code&gt;mabase&lt;&#x2F;code&gt; ou admin PostgreSQL) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;sql&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-sql &quot;&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;-- log les requêtes qui mettent plus de 2s
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;ALTER DATABASE &lt;&#x2F;span&gt;&lt;span&gt;mabase &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;SET&lt;&#x2F;span&gt;&lt;span&gt; log_min_duration_statement = &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;2000&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On peut alors se connecter sur &lt;code&gt;mabase&lt;&#x2F;code&gt; et vérifier que la valeur de &lt;code&gt;log_min_duration_statement&lt;&#x2F;code&gt; a bien changé :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;sql&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-sql &quot;&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span&gt;\c mabase
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;select&lt;&#x2F;span&gt;&lt;span&gt; current_setting(&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;log_min_duration_statement&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;)::interval;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;À partir de cet instant, les requêtes dépassant notre seuil de 2s de temps d&#x27;exécution sont loguées dans les journaux
PostgreSQL (typiquement dans &lt;code&gt;&#x2F;var&#x2F;log&#x2F;postgresql&#x2F;postgresql-*-main.log&lt;&#x2F;code&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;Attention à ne pas laisser indifiniment la journalisation de ces requêtes actives : elles peuvent remplir les logs de façon significatives.&lt;&#x2F;p&gt;
&lt;p&gt;Pour désactiver ces logs, exécuter cette requête :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;sql&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-sql &quot;&gt;&lt;code class=&quot;language-sql&quot; data-lang=&quot;sql&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;ALTER DATABASE &lt;&#x2F;span&gt;&lt;span&gt;mabase &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;SET&lt;&#x2F;span&gt;&lt;span&gt; log_min_duration_statement = -&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Déplacer le dossier de données (data-root) de docker</title>
          <pubDate>Fri, 09 Jun 2023 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2023-06-09-deplacer-dossier-data-root-docker/</link>
          <guid>https://blog.cloudfrancois.fr/2023-06-09-deplacer-dossier-data-root-docker/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2023-06-09-deplacer-dossier-data-root-docker/">&lt;p&gt;Pour déplacer le dossier de données de docker, ne suffit pas :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;d&#x27;arrêter docker&lt;&#x2F;li&gt;
&lt;li&gt;de déplacer le dossier&lt;&#x2F;li&gt;
&lt;li&gt;de mettre à jour la configuration du démon et redémarrer&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Si on s&#x27;arrête là il est très probable qu&#x27;il ne soit pas possible de redémarrer les conteneurs docker.&lt;&#x2F;p&gt;
&lt;p&gt;Le symptome est visible dans les logs (via &lt;code&gt;journalctl -u docker&lt;&#x2F;code&gt; par exemple).&lt;&#x2F;p&gt;
&lt;p&gt;Chaque conteneur a une configuration dans un fichier &lt;code&gt;config.v2.json&lt;&#x2F;code&gt; (typiquement à l&#x27;emplacement &lt;code&gt;&amp;lt;dossier data-root&amp;gt;&#x2F;&amp;lt;container_id&amp;gt;&#x2F;config.v2.json&lt;&#x2F;code&gt;). Ce fichier de configuration
peut spécifier des chemins absolus qui utilisaient l&#x27;ancien emplacement du dossier de données.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;erreur typique, que l&#x27;on peut voir (avec &lt;code&gt;journalctl -u docker&lt;&#x2F;code&gt;) après avoir redémarrer le démon et les conteneurs est :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;error evaluating symlinks from mount source &quot;&#x2F;var&#x2F;lib&#x2F;docker&#x2F;volumes&#x2F;mycontainer&#x2F;_data&quot;: lstat &#x2F;var&#x2F;lib&#x2F;docker: no such file or directory&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Arrêter les services :&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl stop docker
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl stop docker.socket
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl stop containerd
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Copier ou déplacer le dossier vers la nouvelle destination&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;mv&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;var&#x2F;lib&#x2F;docker &#x2F;my&#x2F;new&#x2F;destination
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Mettre à jour le fichier de configuration du démon docker (&lt;code&gt;&#x2F;etc&#x2F;docker&#x2F;daemon.json&lt;&#x2F;code&gt;) :&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;  &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;data-root&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;my&#x2F;new&#x2F;destination&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Mettre à jour la configuration des conteneurs pour remplacer l&#x27;ancien chemin avec le nouveau (chemin pouvant être mentionné dans les chemins des volumes, par exemple) :&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;find&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;my&#x2F;new&#x2F;destination&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -name&lt;&#x2F;span&gt;&lt;span&gt; config.v2.json&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -exec&lt;&#x2F;span&gt;&lt;span&gt; sed&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -i &lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;s|&#x2F;var&#x2F;lib&#x2F;docker|&#x2F;my&#x2F;new&#x2F;destination|g&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39; {} &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;\;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;Redémarrer les services&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl start containerd
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl start docker.socket
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; systemctl start docker
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Faire fonctionner l&#x27;extension Ansible pour VSCodium lorsque celui-ci est installé via flatpak</title>
          <pubDate>Thu, 09 Feb 2023 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2023-02-09-vscodium-ansible-lint/</link>
          <guid>https://blog.cloudfrancois.fr/2023-02-09-vscodium-ansible-lint/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2023-02-09-vscodium-ansible-lint/">&lt;p&gt;Quand on utilise &lt;a href=&quot;https:&#x2F;&#x2F;flathub.org&#x2F;apps&#x2F;details&#x2F;com.vscodium.codium&quot;&gt;VSCodium&lt;&#x2F;a&gt; installé via &lt;a href=&quot;https:&#x2F;&#x2F;www.flatpak.org&#x2F;&quot;&gt;flatpak&lt;&#x2F;a&gt;, on peut avoir l&#x27;erreur suivante :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Command failed: ansible-config dump &#x2F;bin&#x2F;sh: ligne 1: ansible-config : command not found&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h2 id=&quot;si-on-utilise-un-venv&quot;&gt;Si on utilise un venv&lt;&#x2F;h2&gt;
&lt;p&gt;Pour corriger le tir, ajouter la configuration suivante au fichier &lt;code&gt;settings.json&lt;&#x2F;code&gt; de VSCodium (en remplaçant &lt;code&gt;&#x2F;home&#x2F;myuser&#x2F;venv&lt;&#x2F;code&gt; par le chemin de votre virtualenv) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.python.activationScript&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;home&#x2F;myuser&#x2F;venv&#x2F;bin&#x2F;activate&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;,
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.python.interpreterPath&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;flatpak-spawn --host &#x2F;home&#x2F;myuser&#x2F;venv&#x2F;bin&#x2F;&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;,
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.validation.lint.path&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;flatpak-spawn --host &#x2F;home&#x2F;myuser&#x2F;venv&#x2F;bin&#x2F;ansible-lint&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;,
&lt;&#x2F;span&gt;&lt;span&gt;    &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.ansible.path&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;flatpak-spawn --host &#x2F;home&#x2F;myuser&#x2F;venv&#x2F;bin&#x2F;ansible&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il faudra bien sûr avoir installé dans le virtualenv les outils &lt;code&gt;ansible&lt;&#x2F;code&gt; et &lt;code&gt;ansible-lint&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;home&#x2F;myuser&#x2F;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;python3 -m&lt;&#x2F;span&gt;&lt;span&gt; venv venv &amp;amp;&amp;amp; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;source&lt;&#x2F;span&gt;&lt;span&gt; venv&#x2F;bin&#x2F;activate
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;pip&lt;&#x2F;span&gt;&lt;span&gt; install ansible ansible-lint
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h2 id=&quot;si-on-utilise-ansible-et-ansible-lint-via-le-gestionnaire-de-paquets&quot;&gt;Si on utilise Ansible et ansible-lint via le gestionnaire de paquets&lt;&#x2F;h2&gt;
&lt;p&gt;On peut simplement ajouter au fichier de configuration utilisateur (&lt;code&gt;Ctrl+Shift+P&lt;&#x2F;code&gt; ➡️  &quot;Preferences: Open User Settings (JSON)&quot;) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;json&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-json &quot;&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span&gt;{
&lt;&#x2F;span&gt;&lt;span&gt;  &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.ansibleNavigator.path&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;flatpak-spawn --host &#x2F;usr&#x2F;bin&#x2F;ansible-navigator&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;,
&lt;&#x2F;span&gt;&lt;span&gt;  &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.validation.lint.path&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;flatpak-spawn --host &#x2F;usr&#x2F;bin&#x2F;ansible-lint&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;,
&lt;&#x2F;span&gt;&lt;span&gt;  &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;ansible.ansible.path&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;: &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;bin&#x2F;flatpak-spawn --host &#x2F;usr&#x2F;bin&#x2F;ansible&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Message à caractère informatif à destination des collectivités</title>
          <pubDate>Sun, 14 Aug 2022 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2022-08-14-baignades-en-dordogne/</link>
          <guid>https://blog.cloudfrancois.fr/2022-08-14-baignades-en-dordogne/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2022-08-14-baignades-en-dordogne/">&lt;p&gt;A l&#x27;heure où j&#x27;écris ces lignes il est très difficile de trouver un fichier GPX contenant des activités sur le territoire français. Cas type : les coins permettant la baignade sur la Dordogne (et sa région).&lt;&#x2F;p&gt;
&lt;p&gt;On trouve bien des cartes comme &lt;a href=&quot;https:&#x2F;&#x2F;www.vallee-dordogne.com&#x2F;la-vallee-de-la-dordogne&#x2F;activites&#x2F;piscines-plages-baignades-en-rivieres&quot;&gt;ici&lt;&#x2F;a&gt; ou &lt;a href=&quot;https:&#x2F;&#x2F;ville-data.com&#x2F;loisirs-sports&#x2F;carte&#x2F;dordogne-24-24D&#x2F;4&quot;&gt;ici&lt;&#x2F;a&gt; mais leur utilisation est pénible et ne permet pas une réutilisation facile des données tel que de charger les points dans un GPS ou encore construire une carte avec un service tel que &lt;a href=&quot;https:&#x2F;&#x2F;umap.openstreetmap.fr&#x2F;&quot;&gt;umap&lt;&#x2F;a&gt; pourtant très utile pour prospecter les choses à faire dans une région - par exemple.&lt;&#x2F;p&gt;
&lt;p&gt;Imaginez un peu ce que ca donne coté usager qui veut découvrir votre région : on doit croiser plusieurs sources d&#x27;infos, plusieurs cartes etc alors qu&#x27;on pourrait tout simplement tout charger sur une carte : celle de son GPS et découvrir la région en se laissant aller à découvrir les divers coins que votre région a à proposer.&lt;&#x2F;p&gt;
&lt;p&gt;Actuellement, pour faire ce travail de recoupement ça demande beaucoup trop de temps et d&#x27;effort à passer coincer sur un ordinateur &#x2F; smartphone alors qu&#x27;en vacances on a autre chose de plus intéressant à faire.&lt;&#x2F;p&gt;
&lt;p&gt;Ce qui me fâche, encore plus que de perdre mon temps en vacances à bidouiller un truc informatique c&#x27;est que le fichier GPX en question est forcément accessible aux gens qui construisent ces cartes mal faites : pourquoi dès lors ne pas distribuer ce fichier ?&lt;&#x2F;p&gt;
&lt;p&gt;Pour rappel, un fichier GPX est compatible avec à peu près tous les GPS ; c&#x27;est facile d&#x27;utilisation et surtout c&#x27;est interopérable : on peut faire quelque chose de ces données. On peut même charger plusieurs fichiers GPX en même temps dans son GPS (par exemple avec l&#x27;application opensource &lt;a href=&quot;https:&#x2F;&#x2F;blog.cloudfrancois.fr&#x2F;2022-08-14-baignades-en-dordogne&#x2F;osmand.net&#x2F;&quot;&gt;OSMand&lt;&#x2F;a&gt;) pour avoir une vue globale des points d&#x27;intérêts.&lt;&#x2F;p&gt;
&lt;p&gt;Partant de là, pourquoi priver les usager de ces données puisqu&#x27;elles existent ?&lt;&#x2F;p&gt;
&lt;p&gt;Bref, après quelques recherches sur comment extraire ces données et quelques lignes de codes voici le GPX tant attendu :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;&#x2F;assets&#x2F;2022-08-14-dordogne-baignade.gpx&quot;&gt;Dordogne baignade&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Monter facilement un environnement de développement pour Ansible en utilisant Vagrant</title>
          <pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2022-06-01-monter-facilement-un-environnement-de-developpement-pour-ansible-en-utilisant-vagrant/</link>
          <guid>https://blog.cloudfrancois.fr/2022-06-01-monter-facilement-un-environnement-de-developpement-pour-ansible-en-utilisant-vagrant/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2022-06-01-monter-facilement-un-environnement-de-developpement-pour-ansible-en-utilisant-vagrant/">&lt;p&gt;D&#x27;abord, on défini une instance &lt;a href=&quot;https:&#x2F;&#x2F;www.vagrantup.com&#x2F;&quot;&gt;Vagrant&lt;&#x2F;a&gt; basée sur &lt;a href=&quot;https:&#x2F;&#x2F;debian.org&#x2F;&quot;&gt;debian&lt;&#x2F;a&gt; bullseye (11) via ce VagrantFile (Ici on utilise le fournisseur &lt;a href=&quot;https:&#x2F;&#x2F;libvirt.org&#x2F;&quot;&gt;libvirt&lt;&#x2F;a&gt;, mais vous pouver sûrement utiliser celui que vous voulez - j&#x27;en ai pas testé d&#x27;autres) :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;$script = &amp;lt;&amp;lt;SCRIPT
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;# installe les dépendances pour Ansible
&lt;&#x2F;span&gt;&lt;span&gt;apt-get update -y &amp;amp;&amp;amp; apt-get install -y python3
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;# On s&amp;#39;assure que tout est bien installé
&lt;&#x2F;span&gt;&lt;span&gt;apt --fix-broken install -y
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;SCRIPT
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;Vagrant.configure(&amp;quot;2&amp;quot;) do |config|
&lt;&#x2F;span&gt;&lt;span&gt;  config.vm.provider &amp;quot;libvirt&amp;quot; do |v|
&lt;&#x2F;span&gt;&lt;span&gt;    v.memory = 512
&lt;&#x2F;span&gt;&lt;span&gt;    v.cpus = 1
&lt;&#x2F;span&gt;&lt;span&gt;  end
&lt;&#x2F;span&gt;&lt;span&gt;  # disable NFS sharing
&lt;&#x2F;span&gt;&lt;span&gt;  config.vm.synced_folder &amp;quot;.&amp;quot;, &amp;quot;&#x2F;vagrant&amp;quot; , disabled: true
&lt;&#x2F;span&gt;&lt;span&gt;  config.vm.provision &amp;quot;shell&amp;quot;, inline: $script
&lt;&#x2F;span&gt;&lt;span&gt;  config.vm.box = &amp;quot;debian&#x2F;bullseye64&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;end
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Puis, on lance l&#x27;instance Vagrant:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;vagrant&lt;&#x2F;span&gt;&lt;span&gt; up
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Puis, on va créer un fichier de configuration ssh &lt;code&gt;ssh_config&lt;&#x2F;code&gt; qui sera consommé par le client ssh d&#x27;&lt;a href=&quot;https:&#x2F;&#x2F;docs.ansible.com&#x2F;&quot;&gt;Ansible&lt;&#x2F;a&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;vagrant&lt;&#x2F;span&gt;&lt;span&gt; ssh-config &amp;gt; ssh_config
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Et enfin dans l&#x27;inventaire Ansible, on ajoute cette machine (adapter &lt;code&gt;&#x2F;home&#x2F;user&#x2F;chemin&#x2F;vers&#x2F;ssh_config&lt;&#x2F;code&gt; pour pointer vers le fichier &lt;code&gt;ssh_config&lt;&#x2F;code&gt; créé ci-avant) :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;vagrant_1 ansible_host=default ansible_user=vagrant ansible_ssh_common_args=&amp;quot;-F &#x2F;home&#x2F;user&#x2F;chemin&#x2F;vers&#x2F;ssh_config&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Et voilà, on a un environnement reproductible, simple et très rapide à mettre en place.&lt;&#x2F;p&gt;
&lt;p&gt;A noter qu&#x27;on peut aussi &lt;a href=&quot;https:&#x2F;&#x2F;www.vagrantup.com&#x2F;docs&#x2F;provisioning&#x2F;ansible&quot;&gt;provisionner une instance Vagrant avec Ansible&lt;&#x2F;a&gt;. Mais c&#x27;est un autre sujet.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Vagrant stuck on Waiting for domain to get an IP address...</title>
          <pubDate>Fri, 13 May 2022 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2022-05-13-vagrant-stuck-on-waiting-domain-to-get-an-ip-address/</link>
          <guid>https://blog.cloudfrancois.fr/2022-05-13-vagrant-stuck-on-waiting-domain-to-get-an-ip-address/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2022-05-13-vagrant-stuck-on-waiting-domain-to-get-an-ip-address/">&lt;p&gt;When you get stuck with &quot;Waiting for domain to get an IP address...&quot; while running a vagrant box with libvirt provider, you should look at your logs (&lt;code&gt;journalctl -f&lt;&#x2F;code&gt;) and you may find the following error :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;dnsmasq-dhcp[]: DHCP packet received on virbr1 which has no address&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This means there is no IP address on our bridge. A simple solution is : delete vagrant network :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; virsh net-destroy&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --network&lt;&#x2F;span&gt;&lt;span&gt; vagrant-libvirt
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sudo&lt;&#x2F;span&gt;&lt;span&gt; virsh net-undefine&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --network&lt;&#x2F;span&gt;&lt;span&gt; vagrant-libvirt
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then, we can try to boot our box again:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;vagrant&lt;&#x2F;span&gt;&lt;span&gt; destroy&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --force
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;vagrant&lt;&#x2F;span&gt;&lt;span&gt; up
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>J&#x27;ai vu un mec</title>
          <pubDate>Tue, 12 Apr 2022 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2022-04-12-jai-vu-un-mec/</link>
          <guid>https://blog.cloudfrancois.fr/2022-04-12-jai-vu-un-mec/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2022-04-12-jai-vu-un-mec/">&lt;p&gt;J&#x27;ai vu un mec sur la plage.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai vu un mec sur la plage qui ramassait des choses.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai vu un mec sur la plage qui se penchait inlassablement.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai pensé que ce mec pêchait, comme on en voit régulièrement pêcher : un sac à la main et des bottes aux pieds.&lt;&#x2F;p&gt;
&lt;p&gt;Curieux de savoir ce que ce mec pêchait je lui ai démandé.&lt;&#x2F;p&gt;
&lt;p&gt;Ce mec ne pêchait pas.&lt;&#x2F;p&gt;
&lt;p&gt;Ce mec ramassait des déchets ; dont beaucoup de déchets plastiques.&lt;&#x2F;p&gt;
&lt;p&gt;Il se baissait tellement souvent pour ramasser quelque chose qu&#x27;une image m&#x27;est revenue : l&#x27;image de fin de Margin Call, quand un des banquiers du film creuse et creuse son trou pour enterrer son chien.&lt;&#x2F;p&gt;
&lt;p&gt;Ce mec se baissait tellement souvent que j&#x27;avais mal au dos pour lui, que chaque fois qu&#x27;il se baissait j&#x27;étais de plus en plus en colère des résultats de ces élections présidentielles qui ne traitent aucunement du premier problème auquel nous avons à faire face : le réchauffement climatique.&lt;&#x2F;p&gt;
&lt;p&gt;Par son geste, ce mec faisait son possible là, maintenant, tout de suite pour améliorer son environnement direct.&lt;&#x2F;p&gt;
&lt;p&gt;Par son geste, à chaque fois qu&#x27;il se baissait, il rappelait au monde que bientôt il y aura plus de plastique dans l&#x27;océan que de poissons¹.&lt;&#x2F;p&gt;
&lt;p&gt;Nous sommes à un moment dramatique pour l&#x27;humanité et encore une fois à cette présidentielle nous finissons avec des candidats qui ne traiteront rien de l&#x27;enjeu climatique.&lt;&#x2F;p&gt;
&lt;p&gt;Ce mec continuera pour longtemps à se baisser ramasser des bouts de plastique, j&#x27;ai mal pour lui, je ne sais quoi faire pour lui à part être reconnaissant de tout ce qu&#x27;il fait. Ce geste répétitif qui est le sien est insignifiant par rapport à l&#x27;ampleur des changements que nous devrions entamer pour arrêter de considérer notre monde comme notre poubelle.&lt;&#x2F;p&gt;
&lt;p&gt;Mais bon, semble-t-il que trop de monde s&#x27;en fout pour qu&#x27;on n&#x27;ai pu changer de braquet à cette élection.&lt;&#x2F;p&gt;
&lt;p&gt;Pardon mec, continue ton chemin modeste et en tous cas tu as été d&#x27;une grande inspiration pour moi pour écrire ce court billet qui lui aussi ne changera rien, j&#x27;en suis convaincu, à la marche du monde.&lt;&#x2F;p&gt;
&lt;p&gt;¹ &lt;a href=&quot;https:&#x2F;&#x2F;www.cnetfrance.fr&#x2F;news&#x2F;en-2050-y-aura-t-il-autant-de-plastiques-que-de-poissons-dans-les-oceans-39917973.htm&quot;&gt;https:&#x2F;&#x2F;www.cnetfrance.fr&#x2F;news&#x2F;en-2050-y-aura-t-il-autant-de-plastiques-que-de-poissons-dans-les-oceans-39917973.htm&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Données de Santé en France : où en est-on ?</title>
          <pubDate>Fri, 26 Feb 2021 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2021-02-26-donnees-de-sante-en-france-ou-en-est-on/</link>
          <guid>https://blog.cloudfrancois.fr/2021-02-26-donnees-de-sante-en-france-ou-en-est-on/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2021-02-26-donnees-de-sante-en-france-ou-en-est-on/">&lt;blockquote&gt;
&lt;p&gt;Mise à jour : le 24&#x2F;02&#x2F;2020 la CNIL fait un état des lieux du sujet et rappelle les obligations des responsables de traitements de données et particulièrement pour les données très sensibles comme celles concernant la santé : https:&#x2F;&#x2F;www.cnil.fr&#x2F;fr&#x2F;violation-de-donnees-de-sante-la-cnil-rappelle-les-obligations-des-organismes-la-suite-dune-fuite-de&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;(attention, ne cherchez pas une réponse exhaustive à cette question dans ce billet - c&#x27;est un sujet vaste et j&#x27;ai pas mon master en droit)&lt;&#x2F;p&gt;
&lt;p&gt;Vous l&#x27;avez peut être vu passer : une fuite de données de santé concernant des patients français a eu lieu. Cette fuite est massive (on parle d&#x27;environ 500 000 enregistrements). Ce fichier est maintenant en accès libre sur Internet ce qui représente un risque important pour les patients concernés. ⚠️ Attention, si vous êtes tenté·e d&#x27;aller chercher ce fichier cet acte est très probablement illégal (Code de la Santé Publique, article L1110-4 IV: peine d&#x27;un an d&#x27;emprisonnement et 15000€ d&#x27;amende).&lt;&#x2F;p&gt;
&lt;p&gt;Votre humble serviteur ne va pas redonner tous les détails concernant cette fuite de données car la presse en a déjà beaucoup parlé et il me semble ici important de parler d&#x27;autre chose : les obligation qui reposent sur les épaules des gens qui collectent et traitent des données de santé. J&#x27;ai tenté de plonger dans un peu de droit, ce n&#x27;est pas mon domaine alors n&#x27;hésitez pas à être vigilant·e·s, à vérifier, à recroiser les informations.&lt;&#x2F;p&gt;
&lt;p&gt;A la fin de cet article je vais poser des questions sur le sujet des données de santé, sur l&#x27;usage qui est fait des ordinateurs dans notre parcours de santé et interroger l&#x27;état où nous en sommes arrivés dans ces pratiques. Si le droit vous barbe, vous pouvez aller directement à la fin, je tenterais de reprendre dans cette liste de questions celles qui me sont venues à la lecture des quelques texte de loi que j&#x27;aborde au début de cet article. Bonne lecture à vous.&lt;&#x2F;p&gt;
&lt;p&gt;Si vous n&#x27;avez pas le contexte de ce quoi on parle, voici quelques articles de presse :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.franceinter.fr&#x2F;societe&#x2F;ce-que-l-on-sait-de-la-fuite-sans-precedent-de-donnees-medicales-de-laboratoires-d-analyses&quot;&gt;https:&#x2F;&#x2F;www.franceinter.fr&#x2F;societe&#x2F;ce-que-l-on-sait-de-la-fuite-sans-precedent-de-donnees-medicales-de-laboratoires-d-analyses&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;internet&#x2F;securite-sur-internet&#x2F;cyberattaques&#x2F;piratage-informatique-ce-que-l-on-sait-de-la-fuite-de-donnees-medicales-de-pres-de-500-000-patients-francais_4308983.html&quot;&gt;https:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;internet&#x2F;securite-sur-internet&#x2F;cyberattaques&#x2F;piratage-informatique-ce-que-l-on-sait-de-la-fuite-de-donnees-medicales-de-pres-de-500-000-patients-francais_4308983.html&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.nextinpact.com&#x2F;article&#x2F;43405&#x2F;un-leader-europeen-donnees-sante-licencie-lanceur-dalerte-pour-faute-grave&quot;&gt;https:&#x2F;&#x2F;www.nextinpact.com&#x2F;article&#x2F;43405&#x2F;un-leader-europeen-donnees-sante-licencie-lanceur-dalerte-pour-faute-grave&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Libération, version papier n°12348 du 24&#x2F;02&#x2F;2021&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Bref. Donc on a cette violation de données de santé et le truc qui m&#x27;a lancé dans ma recherche du jour et dans la rédaction de cet article c&#x27;est la lecture du journal Libération, dans sa version papier (numéro 12348 paru le 24&#x2F;02&#x2F;2021). Celui-ci affirme la chose suivante :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Car si la protection des informations ayant une valeur économique est
très régularisée en France avec, entre autres, des directives très claires sur le chiffrement des données bancaires et l&#x27;obligation d&#x27;alerter les autorités de toute faille possible, rien de tout cela ne semble exister pour les informations médicales.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;En lisant ça je me suis dit qu&#x27;il y avait un problème. En France et en Europe on a au moins le RGPD qui parle des données personnelles et qui nous apporte un certain degré de protection. Comment les données médicales ne pourraient-elles pas, au moins, être concernées par le RGPD ?&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est là que commencent mes recherches.&lt;&#x2F;p&gt;
&lt;p&gt;De ce que j&#x27;en ai retenu : les données de santé sont au moins concernées par deux textes :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;le RGPD&lt;&#x2F;li&gt;
&lt;li&gt;le Code de la santé publique&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Le RGPD définit les données de santé sous le terme &quot;&lt;em&gt;données concernant la santé&quot;&lt;&#x2F;em&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;www.privacy-regulation.eu&#x2F;fr&#x2F;4.htm&quot;&gt;article 4-15&lt;&#x2F;a&gt;) comme:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;les données à caractère personnel relatives à la santé physique ou mentale d&#x27;une personne physique, y compris la prestation de services de soins de santé, qui révèlent des informations sur l&#x27;état de santé de cette personne&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Pour résumer : une donnée de santé est une donnée à caractère personnel. Donc il convient de regarder ce que dit le RGPD pour protéger une donnée personnelle. On a, à minima, ça en droits. Il faudra alors chercher ce qui vient s&#x27;ajouter à ces droits puisque les données de santé sont particulièrement sensibles.&lt;&#x2F;p&gt;
&lt;p&gt;Pour les données personnelles l&#x27;&lt;a href=&quot;https:&#x2F;&#x2F;www.privacy-regulation.eu&#x2F;fr&#x2F;9.htm&quot;&gt;article 9&lt;&#x2F;a&gt; dit que par défaut certaines données ne &lt;strong&gt;peuvent pas&lt;&#x2F;strong&gt; être traitées sans que des conditions soient remplies. La liste des données personnelles citée par l&#x27;article 9 contient les &quot;&lt;em&gt;données concernant la santé&lt;&#x2F;em&gt;&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;article 9 explique ce qui est autorisé et ce qu&#x27;il n&#x27;est pas autorisé de faire avec ces données.
Attention cependant, l&#x27;article 9 ne parle pas de la sécurisation des données, on verra ce point plus tard.
L&#x27;article 9 nous permet simplement de répondre à la question, si elle existait, de la légitimité ou non pour un laboratoire de faire un tel traitement&#x2F;collecte de données et dans quelles conditions ces opérations doivent être faites.
La partie sur le consentement est hyper importante ici.
Première question : est-ce que les professionnels de santé que vous avez consulté vous ont tenu au courant du traitement fait avec les données qui étaient entrées dans l&#x27;ordinateur du professionnel de santé ?&lt;&#x2F;p&gt;
&lt;p&gt;Toujours dans l&#x27;article 9 (paragraphe 3), il est précisé que les finalités de médicales et sociales (je vous laisse lire l&#x27;article 9, paragraphe 2-h pour avoir la liste exhaustive) sont autorisées **si et seulement **si ce traitement est effectué:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;par un &lt;strong&gt;professionnel de la santé&lt;&#x2F;strong&gt; soumis au &lt;strong&gt;secret professionnel&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;par des &lt;strong&gt;organismes nationaux compétents&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;ou à une autre personne soumise à une &lt;strong&gt;obligation de secret&lt;&#x2F;strong&gt; et &lt;strong&gt;sous la responsabilité du professionnel de santé&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Autrement dit &lt;strong&gt;on ne fait pas n&#x27;importe quoi&lt;&#x2F;strong&gt;. La responsabilité première est de respecter le secret professionnel, et en l&#x27;occurence le secret médical.
On parle, avec les données de santé d&#x27;une catégorie de données des plus sensible pour les personnes concernées.
Vous n&#x27;avez pas envie que tout le monde sache votre statut VIH, que vous êtes enceinte, que vous êtes trans, que vous avez un diabète, etc. Pas vrai ?&lt;&#x2F;p&gt;
&lt;p&gt;La CNIL a mis une &lt;a href=&quot;https:&#x2F;&#x2F;www.cnil.fr&#x2F;fr&#x2F;rgpd-et-professionnels-de-sante-liberaux-ce-que-vous-devez-savoir&quot;&gt;FAQ&lt;&#x2F;a&gt; à destination des professionnels de santé. Elle rappelle entre autres que :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Les données que vous collectez sur les patients doivent être adéquates, pertinentes et limitées à ce qui est strictement nécessaire à la prise en charge du patient au titre des activités de prévention, de diagnostic et de soins.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Donc &lt;strong&gt;on n&#x27;a pas le droit de collecter n&#x27;importe quoi&lt;&#x2F;strong&gt; parce qu&#x27;on peut le faire. &lt;strong&gt;On doit être responsable&lt;&#x2F;strong&gt; de ce qu&#x27;on saisit dans son ordinateur.&lt;&#x2F;p&gt;
&lt;p&gt;Coté sécurisation, le professionnel est responsable &quot;des accès non autorisés ou illicites [...], de la perte, la destruction [...]&quot; des données (voir là encore la &lt;a href=&quot;https:&#x2F;&#x2F;www.cnil.fr&#x2F;fr&#x2F;rgpd-et-professionnels-de-sante-liberaux-ce-que-vous-devez-savoir&quot;&gt;FAQ de la CNIL&lt;&#x2F;a&gt;). A cette fin, le professionnel doit prendre prendre des précautions afin de protéger les données du patient. Pour faire ça, le professionnel doit mettre des &lt;strong&gt;contre-mesures&lt;&#x2F;strong&gt; en place. Ces contre-mesures peuvent être &lt;strong&gt;organisationnelles&lt;&#x2F;strong&gt; ou &lt;strong&gt;techniques&lt;&#x2F;strong&gt;. Le but est de &lt;strong&gt;protéger la confidentialité&lt;&#x2F;strong&gt; et de garantir l&#x27;&lt;strong&gt;intégrité des données&lt;&#x2F;strong&gt;. Dans le cas du jour il semble que &lt;a href=&quot;https:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;internet&#x2F;securite-sur-internet&#x2F;cyberattaques&#x2F;piratage-informatique-ce-que-l-on-sait-de-la-fuite-de-donnees-medicales-de-pres-de-500-000-patients-francais_4308983.html&quot;&gt;même les mots de passe des utilisateurs n&#x27;étaient pas chiffrés&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Si cette charge de la sécurisation est trop lourde à exercer par le professionnel de santé (on pense entre autres aux petites structures comme les cabinets libéraux), alors le professionnel peut se tourner vers un sous-traitant. Le &lt;strong&gt;sous-traitant doit apporter des garanties en terme de sécurité&lt;&#x2F;strong&gt; au regard du risque en présence.
On le rappelle, ici on parle de données de santé, coté risques on est servis (allez une idée en l&#x27;air bien pessimiste : &quot;je suis une assurance et je ne veux surtout pas me retrouver à assurer des gens qui vont passer l&#x27;arme à gauche dans 3 mois - certaines infos de santé sont cruciales pour préserver mes profits - nananère&quot;).&lt;&#x2F;p&gt;
&lt;p&gt;Pour effectuer ce traitement &lt;strong&gt;vous devez tenir un registre&lt;&#x2F;strong&gt; qui liste les traitements que vous effectuez. En ayant fait ce travail ca devrait être un jeu d&#x27;enfant de répondre aux questions des patients qui se demande ce qu&#x27;il adviendra des données les concernant.&lt;&#x2F;p&gt;
&lt;p&gt;Enfin, rappelons-le **lorsqu&#x27;une violation de données a eu lieu et que celle-ci représente un risque ou un risque élevé **alors la personne responsable du traitement de données se doit de &lt;a href=&quot;https:&#x2F;&#x2F;www.cnil.fr&#x2F;fr&#x2F;notifier-une-violation-de-donnees-personnelles&quot;&gt;&lt;strong&gt;notifier l&#x27;autorité de contrôle&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt; (en France c&#x27;est &lt;a href=&quot;https:&#x2F;&#x2F;www.cnil.fr&#x2F;fr&#x2F;notifier-une-violation-de-donnees-personnelles&quot;&gt;la CNIL&lt;&#x2F;a&gt;) &lt;strong&gt;dans les 72h&lt;&#x2F;strong&gt;. Ces 72h comptent à partir du moment où la violation a été constatée par la personne ayant procédé au traitement de données.&lt;&#x2F;p&gt;
&lt;p&gt;On ne manquera pas de mettre en évidence que pour relever une violation de données encore faut-il mettre en place des dispositifs techniques et organisationnels pour y parvenir. Quand c&#x27;est la presse qui vous apprend qu&#x27;il y a un problème, c&#x27;est un très gros problème.&lt;&#x2F;p&gt;
&lt;p&gt;Lire, comme on a pu le lire dans la presse au sujet de cette fuite de données, que les gens qui traitent les données s&#x27;attendaient à recevoir une notification de la part des autorité est assez étonnant.
Attendre que l&#x27;autorité prévienne le responsable du traitement c&#x27;est laisser beaucoup d&#x27;eau couler sous les ponts et c&#x27;est pas comme ça qu&#x27;il est attendu, au regard du RGPD, que ça se passe.
Certes les autorités peuvent notifier une entreprise qu&#x27;elle a un soucis de sécurisation mais en principe la notification de l&#x27;entreprise vers l&#x27;autorité de contrôle (la CNIL) est sensé être la norme :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Le responsable du traitement constate une violation de données&lt;&#x2F;li&gt;
&lt;li&gt;Le responsable du traitement notifie les autorités dans les 72h&lt;&#x2F;li&gt;
&lt;li&gt;Le responsable du traitement prévient les gens concernés par la violation (clients, patients etc)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Ici on n&#x27;est pas dans une démarche de &quot;pas vu pas pris&quot;.
On est dans une démarche pro-active et on est sensés être en capacité d&#x27;être les premiers à avertir d&#x27;une violation de données.
Par capacités on entend des capacités techniques (monitoring, etc) et des capacités organisationnelles.
Ce fonctionnement est une très bonne idée car il y a une très bonne raison à détecter rapidement et à prévenir rapidement en cas de fuite de données : Toute donnée peut être utilisée pour d&#x27;autres fins.
Une autre fin c&#x27;est par exemple une attaque future. Par exemple une campagne de Phishing (Hammeçonnage), du Social Ingineering (Ingénérie sociale), etc. On peut aussi utiliser ces données pour obtenir des droits d&#x27;accès supplémentaires sur d&#x27;autres systèmes d&#x27;information etc.&lt;&#x2F;p&gt;
&lt;p&gt;Dans le cas présent, si les mots de passe sont en réellement en clair (non chiffrés) et que le fichier contient aussi les emails des patients alors il y a une &lt;strong&gt;énorme probabilité&lt;&#x2F;strong&gt; pour pouvoir &lt;strong&gt;accéder aux boites mails des patients&lt;&#x2F;strong&gt; puisque les gens ont la mauvaise habitude d&#x27;utiliser le même mot de passe sur plusieurs services. Quand on voit que plein de services se basent sur le mail pour les procédures d&#x27;authentification il y a de quoi craindre.&lt;&#x2F;p&gt;
&lt;p&gt;Vous comprenez alors pourquoi il est important de pas faire n&#x27;importe quoi avec les données des gens et pourquoi il faut prévenir les gens concernés au plus vite. Parce que ces &lt;strong&gt;gens doivent pouvoir savoir que leurs données sont dans la nature et que, pour certaines d&#x27;entre elles, il est possible d&#x27;atténuer les effets (par exemple en changeant en urgence le mot de passe de son courriel)&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Quand une fuite de donnée intervient comme ici, le manque de sécurité d&#x27;une partie provoque un manque de sécurité collectif.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;&lt;a href=&quot;https:&#x2F;&#x2F;www.privacy-regulation.eu&#x2F;fr&#x2F;32.htm&quot;&gt;article 32&lt;&#x2F;a&gt; parle, de son coté, des obligations de sécurité attendues:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;le responsable du traitement et le sous-traitant mettent en œuvre les mesures techniques et organisationnelles appropriées afin de garantir un niveau de sécurité adapté au risque&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;L&#x27;article 32 évoque très clairement des moyens connus de protection : le chiffrement, la pseudonymisation etc. Ce sont des moyens connus mais encore trop rarement mis en oeuvre.&lt;&#x2F;p&gt;
&lt;p&gt;On a parlé du RGPD mais pas encore du &lt;strong&gt;Code de la Santé Publique&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Les articles importants semblent être les L1110-4, L1111-7 et L1111-8.&lt;&#x2F;p&gt;
&lt;p&gt;Le &lt;a href=&quot;https:&#x2F;&#x2F;www.legifrance.gouv.fr&#x2F;codes&#x2F;article_lc&#x2F;LEGIARTI000036515027&#x2F;&quot;&gt;L1110-4&lt;&#x2F;a&gt; rappelle (paragraphe I) qu&#x27;&lt;strong&gt;une personne prise en charge&lt;&#x2F;strong&gt; médicalement &quot;&lt;strong&gt;a droit au respect de sa vie privée et du secret des informations la concernant&lt;&#x2F;strong&gt;&quot;.
Ce même article précise (paragraphe II) que &lt;strong&gt;les professsionnels de santé peuvent échanger des données&lt;&#x2F;strong&gt; avec d&#x27;autres professionnels si ces professionnels traitent un même patient et ce &lt;strong&gt;si et seulement&lt;&#x2F;strong&gt; si c&#x27;est &lt;strong&gt;nécessaire&lt;&#x2F;strong&gt; à la &lt;strong&gt;coordination&lt;&#x2F;strong&gt; ou à la &lt;strong&gt;continuité&lt;&#x2F;strong&gt; des soins, pour la &lt;strong&gt;prévention&lt;&#x2F;strong&gt; ou le &lt;strong&gt;suivi&lt;&#x2F;strong&gt; médico-social et social.
Au paragraphe III dit que si les informations sont partagées entre professionnels et que ceux-ci ne sont pas dans la même équipe de soins alors le &lt;strong&gt;consentement du patient est nécessaire&lt;&#x2F;strong&gt;.
Au IV : une personne a le droit de s&#x27;opposer au partage d&#x27;informations, elle peut le faire à tout moment et doit être informée que ce droit existe.
Enfin, si vous tentez de récupérer ces informations malgré tout vous encourrez 1 an de prison et 15k€ d&#x27;amende (V)&lt;&#x2F;p&gt;
&lt;p&gt;Le &lt;a href=&quot;https:&#x2F;&#x2F;www.legifrance.gouv.fr&#x2F;codes&#x2F;article_lc&#x2F;LEGIARTI000041721068&#x2F;&quot;&gt;L1111-7&lt;&#x2F;a&gt; rappelle qu&#x27;une personne a le droit d&#x27;accéder à ses propres informations.&lt;&#x2F;p&gt;
&lt;p&gt;Le &lt;a href=&quot;https:&#x2F;&#x2F;www.legifrance.gouv.fr&#x2F;codes&#x2F;article_lc&#x2F;LEGIARTI000033862549&#x2F;&quot;&gt;L1111-8&lt;&#x2F;a&gt; décrit les obligations en terme d&#x27;Hébergement de Données de Santé (HDS) :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;on ne peut héberger une donnée que si la personne prise en charge a été informée et que celle-ci n&#x27;a pas formulé d&#x27;opposition avec un motif légitime (paragraphe I)&lt;&#x2F;li&gt;
&lt;li&gt;seul un hébergeur certifié peut héberger des données de santé (paragraphe II)&lt;&#x2F;li&gt;
&lt;li&gt;seul un hébergeur agréé par le ministère de la culture (sic) peut héberger des données de santé (paragraphe III)&lt;&#x2F;li&gt;
&lt;li&gt;un hébergeur de données de santé ne peut utiliser les données pour une autre finalité que pour l&#x27;hébergement même de ces données (paragraphe 5)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Là encore il existe une &lt;a href=&quot;https:&#x2F;&#x2F;esante.gouv.fr&#x2F;sites&#x2F;default&#x2F;files&#x2F;media_entity&#x2F;documents&#x2F;FAQ%20HDS_16052019_V0%2018.pdf&quot;&gt;FAQ, éditée par L&#x27;agence du numérique en santé&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;ai une question qui me vient en lisant la question 2 de la FAQ ci-dessus et aussi le passage suivant qu&#x27;on peut trouver sur &lt;a href=&quot;https:&#x2F;&#x2F;esante.gouv.fr&#x2F;labels-certifications&#x2F;hebergement-des-donnees-de-sante&quot;&gt;esante.gouv.fr&lt;&#x2F;a&gt; :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Les hébergeurs de données de santé sur support numérique (en dehors des services d’archivage électronique) doivent être certifiés.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Est-ce à penser que les services de sauvegarde (backup) ne sont pas concernés par la certification&#x2F;agrément ?
Comme le niveau de sécurité est toujours basé sur le plus faible maillon de la chaine, que penser ?
Est-ce que l&#x27;hébergement en interne (c&#x27;est à dire sans passer par un sous-traitant) ne nécessite pas de certification &#x2F; agrément et qu&#x27;il faut se contenter des obligations posées par l&#x27;&lt;a href=&quot;https:&#x2F;&#x2F;www.privacy-regulation.eu&#x2F;fr&#x2F;32.htm&quot;&gt;article 32 du RGPD&lt;&#x2F;a&gt; ?&lt;&#x2F;p&gt;
&lt;h2 id=&quot;questions-en-vrac&quot;&gt;Questions en vrac&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;Pourquoi certains laboratoires d&#x27;analyse médicalent utilisent le numéro de téléphone comme mot de passe pour accéder aux analyses ?&lt;&#x2F;li&gt;
&lt;li&gt;Comment peut-on fournir &#x2F; exploiter un système d&#x27;information traitant des données de santé alors que ce système d&#x27;information ne procède même pas au chiffrement des mots de passe des utilisateur (alors que de ne pas le faire est une mauvaise pratique en terme de cybersécurité depuis des lustres)&lt;&#x2F;li&gt;
&lt;li&gt;Comment tolérer que des informations de santé puissent passer sur des boites mail de toutes sortes (par exemple une boite mail gérée par un des GAFAM) alors que par ailleurs on exige des certifications pour héberger des données de santé ?&lt;&#x2F;li&gt;
&lt;li&gt;Comment peut-on tolérer l&#x27;usage de plateformes de visioconférences non certifiées pour la réalisation de consultation médicale à distance (pendant le confinement on a vu un usage massif de plateformes qui sont loin de briller par leur sécurisation et pas mieux du coté du respect de la vie privée)&lt;&#x2F;li&gt;
&lt;li&gt;Est-ce que le professionnel de santé chez qui vous allez vous tient au courant de ce qu&#x27;il enregistre dans son ordinateur et des traitements qui seront fait de ces informations ?&lt;&#x2F;li&gt;
&lt;li&gt;Pourquoi doit-on accepter dans certains cas de voir ses rendez-vous médicaux arriver dans un calendrier partagé géré par google ?&lt;&#x2F;li&gt;
&lt;li&gt;Est-ce que les entreprises qui font du backup (sauvegardes) de données de santé sont soumises à agrément &#x2F; certification au même titre que les Hébergeurs de Données de Santé ?&lt;&#x2F;li&gt;
&lt;li&gt;Quelle certification &#x2F; agrément est nécessaire pour les professionnels qui hébergent dans leurs locaux les données de santé de leurs patients ?&lt;&#x2F;li&gt;
&lt;li&gt;Ajoutez vos questions aux commentaires ;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Photo &lt;a href=&quot;https:&#x2F;&#x2F;unsplash.com&#x2F;@cdc?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;CDC&lt;&#x2F;a&gt; @ &lt;a href=&quot;https:&#x2F;&#x2F;unsplash.com&#x2F;?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText&quot;&gt;Unsplash&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Définition et réflexions autour des silos</title>
          <pubDate>Thu, 21 Jan 2021 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2021-01-21-les-silos-en-informatique/</link>
          <guid>https://blog.cloudfrancois.fr/2021-01-21-les-silos-en-informatique/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2021-01-21-les-silos-en-informatique/">&lt;p&gt;J&#x27;ai eu plusieurs fois à expliquer ce qu&#x27;est un silo en informatique, alors c&#x27;est parti pour une version écrite et j&#x27;espère complète.&lt;&#x2F;p&gt;
&lt;p&gt;Un silo, vous connaissez sûrement ça dans le domaine de l&#x27;agriculture : c&#x27;est un lieu où on va stocker des denrées pour faciliter leurs conservations.&lt;&#x2F;p&gt;
&lt;p&gt;Et bien en informatique on a aussi des silos.&lt;&#x2F;p&gt;
&lt;p&gt;Un silos en informatique c&#x27;est en fait un service qui rassemble des utilisateur·ice·s.&lt;&#x2F;p&gt;
&lt;p&gt;Plus il y a d&#x27;utilisateurs à utiliser le service, plus ce service est attractif, plus le silo grandit.&lt;&#x2F;p&gt;
&lt;p&gt;Un des gros problèmes qui émerge de cette construction de silo c&#x27;est qu&#x27;une fois qu&#x27;un silo est constitué dans un domaine d&#x27;activités donné (par exemple la location d&#x27;appartement, le réseau social, les market place type amazon, de covoiturage ...) il est très difficile d&#x27;offrir un concurrent au silo déjà en place et ce pour une raison très simple.&lt;&#x2F;p&gt;
&lt;p&gt;Quand un service à plein d&#x27;utilisateurs, il est très attractif. Par exemple si vous pensez &quot;je veux louer un logement pour le weekend&quot; vous allez pensez Airbnb parce qu&#x27;ils ont été là en premier, que la base d&#x27;utilisateur·ice·s est immense et qu&#x27;il y a une très grande quantité d&#x27;offres sur ce service. Si demain un service concurrent pointe le bout de son nez, il aura beau faire des efforts de publicité considérables il peinera à faire sa place puisque chaque utilisateur·ice qui tentera d&#x27;y chercher son bonheur se retrouvera confronté·e à un choix moindre dans les offres (voir à aucune offre) et donc repartira déçu. Pour éviter la frustration, cet·te utilisateur·ice se retournera alors vers la plateforme qu&#x27;ielle connait, qui lui offre de la satisfaction à coup sûr. Et, au passage, cet·te utilisateur·ice gardera en tête sa mauvaise expérience chez la concurrence et le bouche à oreille finira par freiner les potentielles futures personnes qui auraient pût être tentées de tester cette concurrence.&lt;&#x2F;p&gt;
&lt;p&gt;Vous pouvez essayez d&#x27;imaginer la même chose pour le covoiturage. Vous avez blablacar, vous êtes quasi sûr de trouver votre course. Mais vous avez aussi Mobicoop, La roue verte etc. et pourtant vous serez tentés de passer par blablacar ne serait-ce parce que vous avez envie d&#x27;être efficaces dans ce que vous entreprenez.&lt;&#x2F;p&gt;
&lt;p&gt;Pour résumer ces silos représentent plusieurs problèmes majeurs :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Il est très difficile de voir une concurrence émerger&lt;&#x2F;li&gt;
&lt;li&gt;Il est quasi impossible de faire communiquer deux silos puisque chaque entreprise n&#x27;a pas d&#x27;intérêt autre que de garder au maximum captif ses utilisateurs et deux concurrents ont peu d&#x27;intérêt à collaborer (sans compter que l&#x27;entente entre concurrents peut être considérée comme &lt;a href=&quot;https:&#x2F;&#x2F;www.economie.gouv.fr&#x2F;dgccrf&#x2F;Publications&#x2F;Vie-pratique&#x2F;Fiches-pratiques&#x2F;Entente&quot;&gt;une pratique anticoncurrentielle&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;L&#x27;existence des silos est parfois très évidente quand on imagine les cas cités plus haut. Mais il y a d&#x27;autres choses qu&#x27;on peut observer.&lt;&#x2F;p&gt;
&lt;p&gt;Comment fait un réseau social pour s&#x27;imposer aujourd&#x27;hui et capter ses utilisateur·ice·s ? En général ce réseau social va aller chercher une nouvelle forme de présenter les choses, un nouveau format de contenu, de nouvelles intéractions. Ainsi ce qui différencie Facebook, d&#x27;Instagram, Tiktok &amp;amp;co c&#x27;est surtout le format des contenus. Instagram, Tiktok auraient copié les fonctionnalités de Facebook il n&#x27;auraient pas le nombre d&#x27;utilisateur·ice·s qu&#x27;ils ont aujourd&#x27;hui. (Les réseaux sociaux basés sur du code libre devraient probablement s&#x27;en inspirer pour capter plus de monde :p)&lt;&#x2F;p&gt;
&lt;p&gt;Pour terminer et finir d&#x27;incister sur cette notion de silo: si votre silo est le premier sur le domaine d&#x27;activités que vous visez il y a de très grandes chances pour que vous soyez et restiez le silo de fait pour ce domaine d&#x27;activités.&lt;&#x2F;p&gt;
&lt;p&gt;En tant qu&#x27;entreprise possédant un silo, vous avez parfois intérêt à acheter un silo concurrent soit pour le tuer, soit pour acquérir des technologies associées, soit pour récupérer ses utilisateur·ice·s.&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est entre autres ce qu&#x27;a fait Facebook en achetant Instagram (&lt;a href=&quot;https:&#x2F;&#x2F;www.numerama.com&#x2F;magazine&#x2F;22270-pourquoi-facebook-s-offre-instagram-pour-1-milliard-de-dollars.html&quot;&gt;1Milliard de dollars&lt;&#x2F;a&gt;) et Whatsapp (&lt;a href=&quot;https:&#x2F;&#x2F;www.numerama.com&#x2F;magazine&#x2F;28492-facebook-achat-whatsapp.html&quot;&gt;19 Milliards de dollars&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Est-ce peine perdue ?</title>
          <pubDate>Mon, 06 Apr 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2020-04-06-est-ce-peine-perdue/</link>
          <guid>https://blog.cloudfrancois.fr/2020-04-06-est-ce-peine-perdue/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2020-04-06-est-ce-peine-perdue/">&lt;p&gt;15 ans. 15 ans que je pousse mes proches à adopter une hygiène numérique la moins pire possible. Essentiellement pour les protéger face aux dérives, abus, et dangers que certains outils numériques représentent. Outils qui ressemblent parfois plus à des armes qu&#x27;à des outils¹.&lt;&#x2F;p&gt;
&lt;p&gt;Tous ces efforts pour quoi au final ?&lt;&#x2F;p&gt;
&lt;p&gt;De plus en plus, et le confinement n&#x27;y arrange rien, il y a une sorte de relâchement. Les gens ont besoin de communiquer ensemble &quot;quel qu&#x27;en soit le moyen&quot;. Et vers quels moyens se tournent-ils ?&lt;&#x2F;p&gt;
&lt;p&gt;Toujours les mêmes : des boites US, qui ne se privent pas de revendre les données personnelles, d&#x27;en faire des agrégations, du recroisement, voir qui détruisent le choix légitime d&#x27;être anonyme (voir ci-dessous pour un exemple). D&#x27;autres sont troués dès lors que l&#x27;on sort de la plaquette marketing.&lt;&#x2F;p&gt;
&lt;p&gt;Là cette fois le combo ça a été Facebook + Zoom. On ne reviendra pas sur le premier : il y a pas grand chose de nouveau sur le soleil je vous renvoie vers les films Brexit ou Nothing to Hide. Par contre pour zoom voila là pétachiée de trucs qui trainent à son sujet (et c&#x27;est que les problèmes que j&#x27;ai croisé en une semaine de lecture inatentive à son sujet) ; chaque élément de la liste ci-dessous devrait faire fuire les gens pour aller vers des alternatives respectueuses² :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mobilesyrup.com&#x2F;2020&#x2F;04&#x2F;01&#x2F;security-researcher-zoom-vulnerabilities&#x2F;&quot;&gt;Possibilité d&#x27;&lt;strong&gt;exécuter du code malveillant&lt;&#x2F;strong&gt; sur un poste utilisateur équipé de l&#x27;application&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mobilesyrup.com&#x2F;2020&#x2F;04&#x2F;01&#x2F;security-researcher-zoom-vulnerabilities&#x2F;&quot;&gt;Possibilité pour une personne malveillante de &lt;strong&gt;déclencher le micro et la webcam à l&#x27;insu de l&#x27;utilisateur&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;mobilesyrup.com&#x2F;2020&#x2F;04&#x2F;01&#x2F;zoom-leaking-users-email-addresses-and-photos-through-flawed-feature-report&#x2F;&quot;&gt;Laisse &lt;strong&gt;fuiter email, photos des utilisateurs&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.vice.com&#x2F;en_us&#x2F;article&#x2F;z3b745&#x2F;zoom-removes-code-that-sends-data-to-facebook&quot;&gt;Zoom &lt;strong&gt;balançait des informations chez Facebook&lt;&#x2F;strong&gt; même pour les gens qui n&#x27;ont pas facebook&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.windowscentral.com&#x2F;zoom-vulnerability-can-leak-your-windows-login-name-and-password&quot;&gt;via une faille Zoom il est possible de &lt;strong&gt;récupérer un login et le mot de passe windows&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.nytimes.com&#x2F;2020&#x2F;04&#x2F;02&#x2F;technology&#x2F;zoom-linkedin-data.html&quot;&gt;Zoom permet de &lt;strong&gt;casser l&#x27;anonymat&lt;&#x2F;strong&gt; des utilisateurs via des recroisements de données avec Linkedin&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.databreachtoday.com&#x2F;zoom-fixes-flaw-that-could-allow-strangers-into-meetings-a-13665&quot;&gt;Il était possible pour &lt;strong&gt;n&#x27;importe qui de s&#x27;infiltrer dans une réunion&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.theverge.com&#x2F;2020&#x2F;3&#x2F;31&#x2F;21201234&#x2F;zoom-end-to-end-encryption-video-chats-meetings&quot;&gt;Les conversations ne sont &lt;strong&gt;pas chiffrées de bout en bout&lt;&#x2F;strong&gt; (c&#x27;est à dire d&#x27;un utilisateur à un autre) ce qui veut dire que Zoom a techniquement les moyens d&#x27;intercepter, d&#x27;enregistrer et d&#x27;assister à une réunion.&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.ft.com&#x2F;content&#x2F;2fc518e0-26cd-4d5f-8419-fe71f5c55c98&quot;&gt;Certaines communications et &lt;strong&gt;clés de chiffrement passent&lt;&#x2F;strong&gt; &quot;accidentellement&quot; &lt;strong&gt;par la Chine&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.nextinpact.com&#x2F;news&#x2F;108877-la-direction-interministerielle-numerique-deconseille-fortement-application-zoom.htm&quot;&gt;La direction interministérielle du numérique (&lt;strong&gt;DNUM&lt;&#x2F;strong&gt;) &lt;strong&gt;déconseille fortement Zoom&lt;&#x2F;strong&gt;&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.bleepingcomputer.com&#x2F;news&#x2F;security&#x2F;over-500-000-zoom-accounts-sold-on-hacker-forums-the-dark-web&#x2F;&quot;&gt;Des comptes Zoom piratés sont en vente sur les internets&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Vous trouverez plus de détails sur le sujet, par exemple sur l&#x27;article &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.nextinpact.com&#x2F;news&#x2F;108854-zoom-retour-sur-accumulation-failles.htm&quot;&gt;Zoom : retour sur une accumulation de failles&lt;&#x2F;a&gt;&quot; de NextInpact (abonnés) ou encore &lt;a href=&quot;https:&#x2F;&#x2F;www.schneier.com&#x2F;blog&#x2F;archives&#x2F;2020&#x2F;04&#x2F;security_and_pr_1.html&quot;&gt;ici&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Bref avec tout ça comment arriver à comprendre que des gens utilisent encore ce genre d&#x27;outils ?&lt;&#x2F;p&gt;
&lt;p&gt;Là j&#x27;ai réagit pour mes proches mais je sais aussi que plein de boites utilisent Zoom (et d&#x27;autres qui l&#x27;interdisent), que des gouvernements l&#x27;utilisent, que la croissance de cet outil est phénoménale avec la crise du Covid-19 mais un outil présentant de tels problèmes devrait faire fuire immédiatement les gens. Car un produit qui présente tant de problèmes avec un nombre d&#x27;utilisateurs conséquent et une croissance rapide attire forcément les vilains que ce soit des gens dans leur garage jusqu&#x27;aux états puisqu&#x27;il y a du gros poisson, en abondance, &quot;yapuka ferrer&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Quand bien même il n&#x27;y aurait pas des failles de sécurité sur cet outil je m&#x27;interroge sur ce qu&#x27;ont en tête les gens qui le construise. Recroiser les données avec Facebook et Linkedin c&#x27;est pas anodin. Et encore c&#x27;est le peu qu&#x27;on sait de cet outil. Est-ce que quand j&#x27;appelle quelqu&#x27;un je m&#x27;attend à ce que l&#x27;outil que je choisis fasse autre chose que de permettre cet appel² ? Est-ce que j&#x27;ai demandé du café, du thé et du cyanure au passage² ?&lt;&#x2F;p&gt;
&lt;p&gt;Il y a pourtant des alternatives (coucou BigBlueButton ou jitsi) ; avec de nombreuses instances qui ont été installées exprès (ou pas) pour répondre au besoin de lien pendant la crise actuelle. Ya juste l&#x27;embarras du choix.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Instance &lt;a href=&quot;https:&#x2F;&#x2F;bbb.faimaison.net&quot;&gt;Big Blue Button de FAImaison&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;jitsi&#x2F;jitsi-meet&#x2F;wiki&#x2F;Jitsi-Meet-Instances&quot;&gt;Instances jitsi&lt;&#x2F;a&gt; ; ou &lt;a href=&quot;https:&#x2F;&#x2F;wiki.chatons.org&#x2F;doku.php&#x2F;la_visio-conference_avec_jitsi&quot;&gt;là&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pourtant les copain·e·s se &lt;a href=&quot;https:&#x2F;&#x2F;framablog.org&#x2F;2020&#x2F;03&#x2F;27&#x2F;solidarites-numeriques-le-libre-se-mobilise&#x2F;&quot;&gt;mobilisent et documentent les alternatives&lt;&#x2F;a&gt; mais il semble que ça ne suffise pas.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.huffingtonpost.fr&#x2F;entry&#x2F;coronavirus_fr_5e8a1e13c5b6e7d76c65d9d5&quot;&gt;A l&#x27;heure où les gouvernements comptent sur notre docilité pour nous faire installer des apps de &quot;suivi&quot;, &quot;tracing&quot; pour lutter contre le covid-19&lt;&#x2F;a&gt;, à l&#x27;heure où &lt;a href=&quot;https:&#x2F;&#x2F;www.usine-digitale.fr&#x2F;article&#x2F;covid-19-des-pays-europeens-dont-la-france-se-rapprochent-de-palantir-pour-traquer-le-virus.N949346&quot;&gt;tous nos déplacements&lt;&#x2F;a&gt; sont &lt;a href=&quot;https:&#x2F;&#x2F;www.01net.com&#x2F;actualites&#x2F;comment-orange-a-reussi-a-retracer-nos-deplacements-a-l-annonce-du-confinement-1883583.html&quot;&gt;scrutés&lt;&#x2F;a&gt; ; où les acteurs du numériques redoublent d&#x27;ingéniosité Orwellienne pour faire toujours pire, il est toujours temps de se poser des questions sur ses choix. C&#x27;est pas juste d&#x27;autres outils, c&#x27;est pas juste un autre mode de vie, c&#x27;est de la survie. C&#x27;est une réflexion du &quot;comment je me protège ?&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Vous imaginez ce qu&#x27;aurait été le monde avec des pouvoirs dictatoriaux (stasi &amp;amp;co) avec de tels outils de suivi et d&#x27;écoute de population ? Je (Content Warning sex) pense qu&#x27;ils s&#x27;en seraient tellement tripoté la nouille qu&#x27;on aurait rempli la banque du sperme pour au moins 20 générations.&lt;&#x2F;p&gt;
&lt;p&gt;Nous parlons énormément (trop) du déconfinement alors que nous n&#x27;avons aucune porte de sortie (pour l&#x27;instant) pour envisager de nous revoir dans le même meetspace. Il nous faut attendre les avancées scientifiques, attendre que les équipements médicaux arrivent, etc. Une solution technique impliquant du tracking n&#x27;est pas la solution. Ce n&#x27;est ni acceptable ni souhaitable.&lt;&#x2F;p&gt;
&lt;p&gt;Vu le taux d&#x27;acceptation des technos dégueulasses pour communiquer en temps de confinement (et le reste du temps) il nous reste quoi comme marge de manœuvre pour imaginer la suite de nos jours sans tracking, sans acceptation de ces dispositifs coercitifs ? Quelle liberté restera-t-il aux personnes qui refusent de tels dispositifs ? Que restera-t-il de nos échanges libres, de nos rencontres, de nos réflexions pour un autre demain que ce que nous réserve le capitalisme dont les derniers faits d&#x27;arme (outre priver les populations de se protéger avec des masques) sera la perpétuation et l&#x27;amplification d&#x27;un Capitalisme de Surveillance ?&lt;&#x2F;p&gt;
&lt;p&gt;N&#x27;oublions pas, qu&#x27;en temps de confinement plus que n&#x27;importe quand, nous communiquons via des artifacts techniques. Il est important de choisir des outils où on peut avoir confiance, où on est certain qu&#x27;il n&#x27;y aura pas des tiers pouvant écouter nos échanges. Choisir un outil ne garantissant pas le minimum de sécurité (chiffrement de bout en bout correctement implémenté) c&#x27;est comme si on se donnait rendez-vous dans une pièce avec des micro espions qui captent ce que nous disons : nous ne les voyons pas, pourtant techniquement rien ne les empêchent d&#x27;être là. Peut-être que personne n&#x27;écoute, mais comment le savoir ? Toujours ce &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Panoptique&quot;&gt;panopticon&lt;&#x2F;a&gt; qui traine dans les parages.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;en arrive à un point où j&#x27;ai même plus envie d&#x27;aider mes proches et d&#x27;aller vers un chacun pour sa gueule. Ça fait 15 ans que je me casse le cul tout ça pour quoi au final ?&lt;&#x2F;p&gt;
&lt;p&gt;¹ quand un outil contient plus de fonctionnalités de tracking&#x2F;espionnage&#x2F;collecte d&#x27;informations que de fonctionnalités légitimes, je m&#x27;autorise à me poser la question.&lt;&#x2F;p&gt;
&lt;p&gt;² nous sommes en droit d&#x27;exiger que l&#x27;on nous respecte ; les outils numériques n&#x27;ont pas à nous poignarder dans notre dos quand nous les utilisons ; nous devons pouvoir les utiliser en ayant l&#x27;esprit libre.&lt;&#x2F;p&gt;
&lt;p&gt;Photo: &lt;a href=&quot;https:&#x2F;&#x2F;www.flickr.com&#x2F;photos&#x2F;pigalleworld&#x2F;34808311514&quot;&gt;&quot;The Singing Ringing Tree, Crown Point, Burnley, Lancashire&quot; - Pigalle&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Confinement : Hey, pourquoi tu parles pas à table ?</title>
          <pubDate>Thu, 26 Mar 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table/</link>
          <guid>https://blog.cloudfrancois.fr/2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table/">&lt;p&gt;Quand cette question m&#x27;a été posée, j&#x27;avais déjà remarqué ça depuis un certain temps : elle ne m&#x27;étonna pas.&lt;&#x2F;p&gt;
&lt;p&gt;Je savais bien pourquoi, submergé par les sentiments, les idées, les craintes, le stress, je savais bien pourquoi je ne parlais pas.&lt;&#x2F;p&gt;
&lt;p&gt;Fallait-il pour autant le faire, parler, et communiquer par la même occasion mon stress à mes proches alors qu&#x27;ielles étaient encore à l&#x27;état de sidération due à la vitesse à laquelle le confinement avait été mis en place, à la détresse du personnel soignant, etc ?&lt;&#x2F;p&gt;
&lt;p&gt;La réponse a alors été non. Je continuerai à cogiter mais le fruit de mes réflexions irait sur le papier. Le papier serait l&#x27;endroit où je pourrai tout noter, rassembler, trier ordonner.&lt;&#x2F;p&gt;
&lt;p&gt;Ici, je vais vous livrer mes pensées en deux billets :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Le premiers, celui-ci, la rage contre ces gouvernements qui ont tout fait pour détruire nos services publics dont ceux de la santé. Au profit du privé et de quelques-un. Les mensonges à répétition de ces derniers jours pour tenter de faire croire que la situation était sous contrôle, anticipée, ... alors que tout laisse à douter de cette version.&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;après crise sanitaire. Parce que oui il y aura un après et c&#x27;est cet après qui m&#x27;inquiète bien plus que la crise sanitaire. Au moment même où les gens décomptent, et c&#x27;est bien normal, le nombre de cas et de décès. Penser l&#x27;après, ça peut aider à tenir, à éviter de tourner en rond dans son bocal. Quelque part c&#x27;est un peut rêver de demain, chercher ce que l&#x27;on souhaite pour notre avenir, pour en construire un objectif de vie.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Commençons donc.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;submerge-par-la-rage&quot;&gt;Submergé par la rage&lt;&#x2F;h2&gt;
&lt;p&gt;J&#x27;ai la rage. La rage que nos services publics aient été massacrés pendant des années à coups de hache, sous prétexte que ça &quot;coûte un pognon de dingue&quot;. Créant par la même occasion des déserts médicaux et des déserts de services : on ne compte plus les les petites villes qui n&#x27;ont plus aucun accès à aucun service, ceux où même La Poste a disparu.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube-nocookie.com&#x2F;embed&#x2F;CIfV6TQIhcc&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table&#x2F;Capture-d--cran-de-2020-03-28-14-24-06-1.jpg&quot; alt=&quot;Gauvain Sers - Les oubliés&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Donner le nécessaire au service au public ce serait un problème, ce serait pas possible, le public ne sait pas faire, le privé sait (je suis sûr que vous aussi vous avez déjà entendu ces conneries).&lt;&#x2F;p&gt;
&lt;p&gt;Et pourtant, le privé ça donne quoi ? En temps normal : ça donne des prestations plus chères pour les fonds publics (on doit bien marger quand on est une boite privée quitte à réduire la qualité du service rendu pour le même montant facturé - chose qu&#x27;il n&#x27;y a pas besoin de faire quand on est un service public). Et c&#x27;est sans compter les entreprises qui se gavent à coup de &lt;em&gt;partenariats public-privé&lt;&#x2F;em&gt;, de CICE, de CIR (coucou les société de service informatique - entre autres - qui volent de l&#x27;argent sur des projets qui n&#x27;ont absolument rien à voir avec la recherche), de flat tax, de suppression d&#x27;ISF, de dividendes toujours plus conséquents quand les salaires stagnent, l&#x27;évasion fiscale,...&lt;&#x2F;p&gt;
&lt;p&gt;Réduire ces coûts (coté privé) ce serait impossible alors que de l&#x27;autre côté, on comprime, on dépouille, on détruit le service public, ce bien commun. A coups de discours autour de &quot;le privé c&#x27;est mieux que le public&quot;, &quot;le public sait pas faire&quot;, ... alors on passe tout au privé y compris les services les plus sensibles et vitaux (santé, eau, électricité, télécoms, assainissement, recyclage, ...). Et pourquoi le privé le fait ? Ben parce qu&#x27;il le peut et qu&#x27;en plus c&#x27;est son essence. Et pourquoi il le peut ? Parce qu&#x27;il y a des défaillances (quand ce ne sont pas des connivences) dans le contrôle des prestations. Ces mêmes contrôles qui manquent dans les chaînes hiérarchiques où l&#x27;on a toute la latitude pour faire de la merde dès lors que le supérieur en fait, que le supérieur du supérieur en fait et ainsi de suite. Vous avez déjà vu des médiocres dans votre entreprise ? Il se passe quoi quand on met un subordonné sous un médiocre ? Il se passe quoi quand on met un corrompu au dessus d&#x27;autres gens ? On doit bien finir par se dire &quot;oh ben si le boss le fait, j&#x27;ai de la marge pour faire pareil ou presque&quot;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;le-defouloir-l-ecriture&quot;&gt;Le défouloir : l&#x27;écriture&lt;&#x2F;h2&gt;
&lt;p&gt;Nous sommes donc en Mars 2020 quand je commence à écrire ces lignes et déjà l&#x27;ancien monde, celui qui nous a mis dans la merde en nous privant de la clairvoyance, de l&#x27;anticipation, de la transparence et de masques.&lt;&#x2F;p&gt;
&lt;p&gt;Et même si Macron ne le veut pas, nous on est là et même s&#x27;il veut pas qu&#x27;on ait un esprit critique sur leur &lt;a href=&quot;https:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;politique&#x2F;emmanuel-macron&#x2F;essayez-la-dictature-et-vous-verrez-emmanuel-macron-denonce-les-discours-affirmant-que-la-france-n-est-plus-une-democratie_3798233.html&quot;&gt;gestion de cette crise&lt;&#x2F;a&gt;, la démocratie exige qu&#x27;on fasse cet exercice. &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;politique&#x2F;emmanuel-macron&#x2F;essayez-la-dictature-et-vous-verrez-emmanuel-macron-denonce-les-discours-affirmant-que-la-france-n-est-plus-une-democratie_3798233.html&quot;&gt;Essayez la dictature&lt;&#x2F;a&gt;&quot; - non désolé on a déjà essayé. Et n&#x27;en déplaise à votre majesté, les &quot;gens qui sont rien&quot; ont le droit de se poser des questions sur cette gestion de la crise. Ne serait-ce que les annonces du type &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;CercleAudace&#x2F;status&#x2F;1240785903976620032&quot;&gt;les masques&lt;&#x2F;a&gt; ça &lt;a href=&quot;https:&#x2F;&#x2F;invidio.us&#x2F;watch?v=20uHBKMKpCc&quot;&gt;sert à rien&lt;&#x2F;a&gt; (alors que la vrai annonce aurait dû être #yenAPas) pour dire quelques semaines après que même une écharpe c&#x27;est mieux que rien ou encore de parler de dé-confinement pendant plusieurs jours et pleurer après que les gens se relâchent à la veille de lancer une application de &quot;contact tracing&quot;)
&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=2hNoEV0kzEI&amp;amp;t=764&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table&#x2F;Capture-d--cran-de-2020-04-09-01-27-35.jpg&quot; alt=&quot;Sibeth Ndiaye face à Jean-Jacques Bourdin en direct&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Et ne parlons pas du chantage au tracking :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;SamGontier&#x2F;status&#x2F;1249447117472575501&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table&#x2F;Capture-d--cran-de-2020-04-13-00-08-03-1.jpg&quot; alt=&quot;Capture-d--cran-de-2020-04-13-00-08-03-1&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;la-vague-impression-que-n-importe-qui-d-autre-aurait-mieux-agit-qu-eux&quot;&gt;La vague impression que n&#x27;importe qui d&#x27;autre aurait mieux agit qu&#x27;eux&lt;&#x2F;h2&gt;
&lt;p&gt;Mon premier réflexe a été de me dire que c&#x27;était bien étonnant qu&#x27;au ministère de la santé il n&#x27;y ait personne pour faire une veille comme je le fais dans un autre domaine (informatique). Étonnant surtout quand on voit la quantité de publications sur le sujet. Même sans faire trop d&#x27;efforts, le confinement je l&#x27;ai &quot;senti&quot; arriver quasi une semaine avant sa mise en place effective. Parmi les premier papiers parlant du sujet on en trouve par exemple :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;le 24&#x2F;01&#x2F;2020 : dans The Lancet : &lt;a href=&quot;https:&#x2F;&#x2F;www.thelancet.com&#x2F;journals&#x2F;lancet&#x2F;article&#x2F;PIIS0140-6736(20)30185-9&#x2F;fulltext&quot;&gt;A novel coronavirus outbreak of global health concern&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;le 26&#x2F;01&#x2F;2020 : dans Science : &lt;a href=&quot;https:&#x2F;&#x2F;www.sciencemag.org&#x2F;news&#x2F;2020&#x2F;01&#x2F;wuhan-seafood-market-may-not-be-source-novel-virus-spreading-globally&quot;&gt;Wuhan seafood market may not be source of novel virus spreading globally&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;le 31&#x2F;01&#x2F;2020 : dans The Lancet : &lt;a href=&quot;https:&#x2F;&#x2F;www.thelancet.com&#x2F;journals&#x2F;lancet&#x2F;article&#x2F;PIIS0140-6736(20)30260-9&#x2F;fulltext&quot;&gt;Nowcasting and forecasting the potential domestic and international spread of the 2019-nCoV outbreak originating&lt;&#x2F;a&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;www.thelancet.com&#x2F;journals&#x2F;lancet&#x2F;article&#x2F;PIIS0140-6736(20)30260-9&#x2F;fulltext&quot;&gt;in Wuhan, China: a modelling study&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;A noter qu&#x27;il y a peut être bien eu des cas de covid19 en Italie en &lt;a href=&quot;https:&#x2F;&#x2F;www.todayonline.com&#x2F;world&#x2F;covid-19-strange-pneumonia-seen-lombardy-november-leading-italian-doctor-says&quot;&gt;novembre 2019&lt;&#x2F;a&gt;, en tous cas des médecins ont observé quelque chose qui s&#x27;en rapproche. En Chine le début est &lt;a href=&quot;https:&#x2F;&#x2F;www.theguardian.com&#x2F;world&#x2F;2020&#x2F;mar&#x2F;13&#x2F;first-covid-19-case-happened-in-november-china-government-records-show-report&quot;&gt;en novembre aussi&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Il était évident que cette épidémie sortirait de la Chine. Sans même compter sur l&#x27;idée qu&#x27;on a mis dans la tête des gens que c&#x27;était OK d&#x27;aller passer un week-end &#x2F; une semaine à l&#x27;autre bout du monde parce que les avions c&#x27;est pas cher.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;la-cerise-sur-le-gateau&quot;&gt;La cerise sur le gâteau&lt;&#x2F;h2&gt;
&lt;p&gt;La cerise sur le gâteau : apprendre dans Le Monde que &lt;a href=&quot;https:&#x2F;&#x2F;www.lemonde.fr&#x2F;politique&#x2F;article&#x2F;2020&#x2F;03&#x2F;17&#x2F;entre-campagne-municipale-et-crise-du-coronavirus-le-chemin-de-croix-d-agnes-buzyn_6033395_823448.html&quot;&gt;l&#x27;ancienne ministre de la santé (Agnès Buzyn) savait, au moins le 11 Janvier que cette affaire allait prendre une ampleur de fou&lt;&#x2F;a&gt;. Et on a fait quoi entre le 11 janvier et le 17 Mars (date du confinement) ?&lt;&#x2F;p&gt;
&lt;p&gt;N&#x27;aurait-on pas pu anticiper les commandes de masques, de tests, anticiper la doctrine de confinement, généraliser les tests des gens revenant de Chine ? Non, on a &lt;a href=&quot;https:&#x2F;&#x2F;www.mediapart.fr&#x2F;journal&#x2F;france&#x2F;240320&#x2F;municipales-fait-prendre-des-risques-inconsideres-aux-gens&quot;&gt;poursuivi l&#x27;organisation du premier tour des municipales&lt;&#x2F;a&gt;. A-t-on pris &lt;a href=&quot;http:&#x2F;&#x2F;www.leparisien.fr&#x2F;oise-60&#x2F;quand-je-demande-des-explications-on-me-repond-secret-defense-la-femme-d-un-des-premier-cas-de-coronavirus-de-l-oise-se-livre-30-03-2020-8290983.php&quot;&gt;des pincettes avec les équipes qui ont rapatrié les gens de Chine au tout début de l&#x27;épidémie&lt;&#x2F;a&gt; ? Et le &lt;a href=&quot;https:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;sante&#x2F;maladie&#x2F;coronavirus&#x2F;video-coronavirus-le-nombre-de-contaminations-lors-du-rassemblement-evangelique-de-mulhouse-a-ete-largement-sous-evalue_3889133.html&quot;&gt;rassemblement de Mulhouse du 17&#x2F;24 février&lt;&#x2F;a&gt; ?&lt;&#x2F;p&gt;
&lt;p&gt;Au hasard n&#x27;aurait-on pas dû suivre &lt;a href=&quot;https:&#x2F;&#x2F;www.santepubliquefrance.fr&#x2F;content&#x2F;download&#x2F;186926&#x2F;2320488&quot;&gt;le rapport&lt;&#x2F;a&gt; de Santé Publique France de &lt;strong&gt;MAI 2019&lt;&#x2F;strong&gt; où on apprend (&lt;a href=&quot;https:&#x2F;&#x2F;mamot.fr&#x2F;@redfrog&#x2F;103924151301784253&quot;&gt;voir aussi le Canard Enchaîné à ce sujet&lt;&#x2F;a&gt;) :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;En cas de pandémie, le besoin en masques est d’une boîte de 50 masques par foyer, à raison de 20 millions de boîtes en cas d’atteinte de 30% de la population.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=c7FIme1WTL4&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;2020-03-26-confinement-hey-pourquoi-tu-parles-pas-a-table&#x2F;Capture-d--cran-de-2020-04-09-01-23-19.jpg&quot; alt=&quot;La Pandémie Créole contre le Covid-19 - «Très Mal Masqué»&quot; &#x2F;&gt;&lt;&#x2F;a&gt;
Encore avec le Canard Enchaîné on apprend que plusieurs rapports recommandaient d&#x27;agir pour &lt;a href=&quot;https:&#x2F;&#x2F;mamot.fr&#x2F;@Robyn_Hood&#x2F;103924004479945862&quot;&gt;prévenir&lt;&#x2F;a&gt; ce genre de situations ; alors oui c&#x27;est difficile de se dire qu&#x27;on va devoir mettre de l&#x27;argent dans un truc qui arrivera &quot;peut être&quot; mais si c&#x27;est pour affronter une situation économique &lt;a href=&quot;https:&#x2F;&#x2F;sciencepost.fr&#x2F;la-pandemie-de-covid-19-est-la-pire-crise-depuis-1945-estime-lonu&#x2F;&quot;&gt;comparable à 1945&lt;&#x2F;a&gt;, à quoi bon ?&lt;&#x2F;p&gt;
&lt;p&gt;Tiens mais Santé Publique France &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Agence_nationale_de_sant%C3%A9_publique&quot;&gt;c&#x27;est quoi au fait&lt;&#x2F;a&gt; ? Ah tiens ça a été créé en 2016, c&#x27;est une fusion de plusieurs entités, et le bousin ne semble pas avoir été éprouvé avant cette crise du coronavirus &lt;a href=&quot;https:&#x2F;&#x2F;www.mediapart.fr&#x2F;journal&#x2F;france&#x2F;020420&#x2F;masques-les-preuves-d-un-mensonge-d-etat&quot;&gt;#baptèmeDuFeu&lt;&#x2F;a&gt;. L&#x27;article de mediapart &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.mediapart.fr&#x2F;journal&#x2F;france&#x2F;020420&#x2F;masques-les-preuves-d-un-mensonge-d-etat?onglet=full&quot;&gt;Masques: les preuves d’un mensonge d’État&lt;&#x2F;a&gt;&quot; achève le tableau en faisant un inventaire des déclarations publiques des ministres, président, portes paroles, mis en face des faits. C&#x27;est édifiant.&lt;&#x2F;p&gt;
&lt;p&gt;Cet &lt;a href=&quot;https:&#x2F;&#x2F;www.publicsenat.fr&#x2F;article&#x2F;politique&#x2F;penurie-de-masques-une-responsabilite-partagee-par-les-gouvernements-successifs&quot;&gt;article de public sénat&lt;&#x2F;a&gt; décrit un peu le pourquoi on en est là coté masques TL;DR #spasNous #spasNotreFaute #cestLaFauteDesZautres.&lt;&#x2F;p&gt;
&lt;p&gt;Encore un autre article, cette fois dans Le Point : &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.lepoint.fr&#x2F;sante&#x2F;exclusif-comment-la-france-se-prive-de-150-000-a-300-000-tests-par-semaine-03-04-2020-2369955_40.php&quot;&gt;Comment la France se prive de 150 000 à 300 000 tests par semaine&lt;&#x2F;a&gt;&quot; :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Depuis le 13 mars, le gouvernement dispose d&#x27;une solution pour augmenter considérablement les capacités de tests de la France. Mais rien n&#x27;a bougé.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;13 mars ? 4 jours avant le début du confinement. On aurait probablement pu, grâce aux vétérinaires, tester, tester, tester. &lt;a href=&quot;https:&#x2F;&#x2F;www.lemonde.fr&#x2F;les-decodeurs&#x2F;article&#x2F;2020&#x2F;03&#x2F;20&#x2F;coronavirus-la-france-pratique-t-elle-assez-de-tests_6033865_4355770.html&quot;&gt;Comme le font l&#x27;Allemagne et la Corée du Sud quoi&lt;&#x2F;a&gt;. Cassons le thermomètre c&#x27;est plus pratique, et puis comme on dit ironiquement dans mon secteur d&#x27;activité : &quot;Tester c&#x27;est douter&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;La couronne sur le génépi c&#x27;est quand même les &lt;a href=&quot;https:&#x2F;&#x2F;www.lemonde.fr&#x2F;politique&#x2F;article&#x2F;2020&#x2F;03&#x2F;17&#x2F;entre-campagne-municipale-et-crise-du-coronavirus-le-chemin-de-croix-d-agnes-buzyn_6033395_823448.html&quot;&gt;déclarations dans le Monde de l&#x27;ancienne ministre de la santé &lt;&#x2F;a&gt;qui a démissionné en janvier pour se lancer dans les municipales en pleine crise du coronavirus. On apprend aussi le 4 avril dans mediapart qu&#x27;&lt;a href=&quot;https:&#x2F;&#x2F;www.mediapart.fr&#x2F;journal&#x2F;france&#x2F;050420&#x2F;l-etonnant-depart-de-la-conseillere-sante-d-emmanuel-macron&quot;&gt;il y a une autre pilote de moins dans l&#x27;avion&lt;&#x2F;a&gt; : la conseillère santé du président...  qui avait annoncé la couleur (la date de son départ) dès son recrutement. La présidence avait 2 ans pour trouver un remplaçant... et on s&#x27;est retrouvé sans personne à ce poste de fin janvier à début mars. #leTempsJouePasContreNousNonNonOnDisrupteraAussiLeTemps&lt;&#x2F;p&gt;
&lt;h2 id=&quot;se-faire-prendre-pour-des-lapins-de-3-semaines&quot;&gt;Se faire prendre pour des lapins de 3 semaines&lt;&#x2F;h2&gt;
&lt;p&gt;Et pendant tout ce temps on a dit tout et son contraire aux gens (les masques et les tests c&#x27;est pas utile alors que &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Pand%C3%A9mie_de_maladie_%C3%A0_coronavirus_de_2020_en_France#Localisation_des_cas_et_politique_de_d%C3%A9pistage&quot;&gt;l&#x27;OMS dit le contraire&lt;&#x2F;a&gt;, puis c&#x27;est utile; il faut surtout pas sortir mais faut &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;SylvainErnault&#x2F;status&#x2F;1243179972640063492&quot;&gt;quand même aller travailler&lt;&#x2F;a&gt;; &lt;a href=&quot;https:&#x2F;&#x2F;www.bfmtv.com&#x2F;mediaplayer&#x2F;video&#x2F;coronavirus-jean-michel-blanquer-assure-que-les-ecoles-colleges-et-lycees-ne-fermeront-pas-en-cas-de-passage-en-stade-3-1227702.html&quot;&gt;on fermera pas les écoles&lt;&#x2F;a&gt; mais on les ferme le soir même; faut pas sortir au resto mais on se balade sur les bords de seine, c&#x27;est &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.nouvelobs.com&#x2F;economie&#x2F;20200310.OBS25836&#x2F;c-est-le-moment-de-faire-des-bonnes-affaires-en-bourse-selon-cette-secretaire-d-etat.html&quot;&gt;C’est le moment de faire des bonnes affaires en Bourse&lt;&#x2F;a&gt;&quot; d&#x27;après la secrétaire d&#x27;état auprès du ministre de l&#x27;économie &lt;a href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;p-GBTt_Qa4Y?t=1128&quot;&gt;alors que ça se casse la gueule comme jamais 2 jours après&lt;&#x2F;a&gt; etc), rendant la communication illisible, du talonnement à tous les étages quand ya plus personne à la barre du navire les matelot·e·s se mobilisent pour tenter de gagner du temps. Il y a eu toutes les personnes qui se mobilisent pour créer des équipements médicaux de base (allant du bricolage à des trucs bien plus sérieux), d&#x27;autres qui se sont mobilisés dans les hôpitaux, d&#x27;autres pour qu&#x27;on puisse bouffer, etc. Bref on a fonctionné sans les couronnés de ce monde.&lt;&#x2F;p&gt;
&lt;p&gt;On ne parlera pas non plus des masques &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;Sophie_Loup&#x2F;status&#x2F;1243459279912415234&quot;&gt;périmés&lt;&#x2F;a&gt; (qui peuvent avoir des élastiques qui lâchent au pire moment) voir &lt;a href=&quot;https:&#x2F;&#x2F;www.midilibre.fr&#x2F;2020&#x2F;03&#x2F;27&#x2F;infirmiers-liberaux-des-p-o-nous-avons-recu-des-masques-perimes-et-meme-moisis,8821240.php&quot;&gt;moisis&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;On a réussi à trouver la force, l&#x27;ingéniosité que l&#x27;on a en nous pour trouver des solutions alors que &quot;là haut&quot; ielles sont gavés au mondialisme tout centralisé autour de trop peu de production de matériels essentiels et en comprimant tellement tout qu&#x27;on n&#x27;a même pas de marge de manœuvre avec du stock. On fait &lt;a href=&quot;https:&#x2F;&#x2F;www.sudouest.fr&#x2F;2020&#x2F;03&#x2F;25&#x2F;coronavirus-macron-est-a-mulhouse-pour-visiter-l-hopital-de-campagne-militaire-7362882-10861.php&quot;&gt;cocorico avec nos 30 place supplémentaires dans notre hôpital de campagne&lt;&#x2F;a&gt; quand à Londres ielles montent 4000 lits en 10 jours.&lt;&#x2F;p&gt;
&lt;p&gt;Ca fait plus d&#x27;un an que l&#x27;hôpital réclamait des solutions, à coup de mépris on leur a craché à la gueule &quot;ya pas d&#x27;argent magique&quot; qu&#x27;on entend. Là on &lt;a href=&quot;https:&#x2F;&#x2F;www.france24.com&#x2F;fr&#x2F;20200326-pour-aider-l-%C3%A9conomie-mondiale-face-au-coronavirus-le-g20-va-injecter-5-000-milliards-de-dollars&quot;&gt;en trouve&lt;&#x2F;a&gt; de &quot;l&#x27;argent magique&quot; (spoiler : ça n&#x27;est pas magique: on s&#x27;endette et va falloir, selon leur vision des choses raquer pendant combien ? 10 ? 20 ans pour &quot;rembourser&quot; ça ?).&lt;&#x2F;p&gt;
&lt;p&gt;Et surtout, quoi qu&#x27;il arrive n&#x27;oublions jamais à quel point les puissants sont méprisants et huileux quand ils sont à genoux.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;1ers-de-cordee-dernieres-lignes&quot;&gt;1ers de cordée = dernières lignes&lt;&#x2F;h2&gt;
&lt;p&gt;Le 25&#x2F;03 le président, dans son discours depuis Mulhouse, a osé dresser un tableau des premières, secondes et troisième lignes renversant l&#x27;échelle des normes jusque là en vigueur avec ses &quot;premiers de cordée&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;On remarquera bien aisément que dans son tableau ses premiers de cordée ne sont même pas présents, même pas en 4ème ligne dans son discours. Normal, on se demande bien où ils sont ces premiers de cordées dans la lutte.&lt;&#x2F;p&gt;
&lt;p&gt;Aujourd&#x27;hui le monde est suspendu aux performances, à la résistance, à la persévérance  des maillons essentiels de nos vies, maillons qui le reste du temps sont payés au lance-pierre là où le trader (par exemple) inutile gagne des millions... Pour quelle utilité sociale ?&lt;&#x2F;p&gt;
&lt;p&gt;Aujourd&#x27;hui le monde court comme un dingue pour tenter de sauver les pots cassés. Cassés par des politiques managers&#x2F;RH qui n&#x27;ont eu de cesse de tout casser ce que nous avions de plus cher : le service public. Pour donner aux entreprises sans compter avec le CICE, pour graisser la patte des plus riches, en supprimant l&#x27;ISF et en mettant en place la flat tax, &lt;a href=&quot;http:&#x2F;&#x2F;www.leparisien.fr&#x2F;economie&#x2F;coronavirus-ces-entreprises-qui-tirent-profit-du-chomage-partiel-29-03-2020-8290281.php&quot;&gt;frauder au chômage partiel&lt;&#x2F;a&gt; il y a du monde.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;la-casse-des-conquis-sociaux-n-attend-pas-la-fin-de-la-crise-sanitaire&quot;&gt;La casse des conquis sociaux n&#x27;attend pas la fin de la crise sanitaire&lt;&#x2F;h2&gt;
&lt;p&gt;Il y a aussi du monde pour casser les conquis sociaux : Le 25&#x2F;03&#x2F;2020 marque un tournant historique avec les 25 ordonnances prises par le gouvernement qui nous fait entre autres retourner à la semaine de 60h, remet en question les congés payés etc. Un beau retour en arrière. Qui peut croire qu&#x27;on peut rester en bonne santé au delà de 35h hebdomadaires ? C&#x27;est quoi le but de nos vies : produire produire produire jusqu&#x27;à l&#x27;épuisement sans occasion d&#x27;espérer d&#x27;avoir du temps libre qu&#x27;on nous promet à la retraite qu&#x27;on nous raccourcit toujours plus ? Combien mourront au boulot par épuisement ? C&#x27;est ça le progrès ? C&#x27;est ça le bénéfice ce système capitaliste pour le peuple ?&lt;&#x2F;p&gt;
&lt;p&gt;La patience devrait nous &lt;a href=&quot;https:&#x2F;&#x2F;plaintecovid.fr&#x2F;&quot;&gt;amener&lt;&#x2F;a&gt; à les &lt;a href=&quot;https:&#x2F;&#x2F;www.lemonde.fr&#x2F;politique&#x2F;article&#x2F;2020&#x2F;03&#x2F;25&#x2F;coronavirus-le-sommet-de-l-etat-redoute-de-devoir-rendre-des-comptes_6034430_823448.html&quot;&gt;voir jugés&lt;&#x2F;a&gt; (si tant est que la justice puisse être indépendante et suffisamment efficace).&lt;&#x2F;p&gt;
&lt;p&gt;On ne peut se satisfaire de danser entre des &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.lepoint.fr&#x2F;politique&#x2F;macron-on-se-souviendra-de-ceux-qui-n-ont-pas-ete-a-la-hauteur-27-03-2020-2368977_20.php&quot;&gt;on se souviendra de ceux qui n&#x27;ont pas été à la hauteur&lt;&#x2F;a&gt;&quot; et en même temps des &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.huffingtonpost.fr&#x2F;entry&#x2F;le-vieux-monde-et-lancien-monde_fr_5e43c511c5b6d0ea3810b104&quot;&gt;soyez fiers d&#x27;être amateurs&lt;&#x2F;a&gt;&quot;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;sauver-le-capitalisme-son-besoin-croissance-qui-n-a-aucun-sens&quot;&gt;Sauver le capitalisme, son besoin croissance qui n&#x27;a aucun sens ?&lt;&#x2F;h2&gt;
&lt;p&gt;Il est temps de quitter le modèle économique poussé par Milton Friedman et d&#x27;affirmer que le capitalismo-néo-libéralisme truc ne marche pas. Ça tue des gens et qu&#x27;il est inconcevable de garder un tel modèle économique basé sur des trucs qui n&#x27;existent juste pas (la terre a des **FUCKING RESSOURCES FINIES **la croissance c&#x27;est pas possible).&lt;&#x2F;p&gt;
&lt;p&gt;Aujourd&#x27;hui pour sauver encore une fois le capitalisme - ce bidule qui ne marche pas malgré 40 ans de promesses et 40 ans d&#x27;échecs - on cherche encore à rajouter une pile de merde sur toute la merde avec l&#x27;émission de &lt;a href=&quot;https:&#x2F;&#x2F;www.lefigaro.fr&#x2F;conjoncture&#x2F;paris-et-rome-reclament-des-coronabonds-europeens-pour-financer-la-crise-20200318&quot;&gt;Coronabonds&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;On la fait courte : les Coronabonds c&#x27;est : on mutualise de la dette au niveau Européen parce que la dette d&#x27;État ça suffit pas.&lt;&#x2F;p&gt;
&lt;p&gt;Et dans 10 ans, au prochain échec du capitalisme néolibéral on ferait quoi ?&lt;&#x2F;p&gt;
&lt;p&gt;Des World Bonds ?&lt;&#x2F;p&gt;
&lt;p&gt;Des Mars Bonds ?&lt;&#x2F;p&gt;
&lt;p&gt;Jusqu&#x27;où cette connerie ira-t-elle ? On doit en arriver là ? Montrer qu&#x27;on est &quot;cap&quot;, comme si on était resté en CM1 dans la cour de récré, de jouer à ça avec le premier banquier qui passe : &quot;&lt;a href=&quot;https:&#x2F;&#x2F;www.reuters.com&#x2F;article&#x2F;us-health-coronavirus-ecb-analysis-idUSKBN21C2W7&quot;&gt;If you can&#x27;t agree on debt mutualization in such a social crisis, it may never be done&lt;&#x2F;a&gt;&quot; ?&lt;&#x2F;p&gt;
&lt;p&gt;Arrêtes tes conneries range ta pelle et ton seau ton château de cartes prend l&#x27;eau !&lt;&#x2F;p&gt;
&lt;p&gt;Doit-on rappeler que derrière chaque dette souscrite il y a un remboursement et que ce remboursement se fait sur le dos du peuple qui doit trimer de longues années (voir à survivre des des plans d&#x27;austérité) pour satisfaire les prêteurs ?&lt;&#x2F;p&gt;
&lt;p&gt;Qui a encore envie de plus de dette et plus d&#x27;austérité dans les rangs du peuple ? Qui a envie de se voir dire &quot;faudra bosser plus dur&quot;, &quot;faudra faire des efforts&quot;, &quot;faudra travailler plus&quot; (comme si on se touchait la nouille jusque là) ?&lt;&#x2F;p&gt;
&lt;p&gt;Et à contrario qui a envie de voir ces raclures de banksters disparaître ?&lt;&#x2F;p&gt;
&lt;p&gt;Alors, à l&#x27;heure où les bien pensant d&#x27;avant nous dessinent un monde d&#x27;après, alors qu&#x27;ils nous ont défoncé le monde d&#x27;avant et celui d&#x27;aujourd&#x27;hui, il est temps de réfléchir à ce que l&#x27;on veut pour demain. Nous n&#x27;avons pas besoin de leurs &quot;lumières&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;photo: &lt;a href=&quot;https:&#x2F;&#x2F;commons.wikimedia.org&#x2F;wiki&#x2F;File:Lost_In_Thought_(32190297).jpeg&quot;&gt;&quot;Lost in Thought&quot; de Julien Lamour, CC-BY-SA&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Protection des données personnelles : avons-nous eu le bon discours ?</title>
          <pubDate>Mon, 03 Feb 2020 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2020-02-03-protection-des-donnees-personnelles-avons-nous-eu-le-bon-discours/</link>
          <guid>https://blog.cloudfrancois.fr/2020-02-03-protection-des-donnees-personnelles-avons-nous-eu-le-bon-discours/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2020-02-03-protection-des-donnees-personnelles-avons-nous-eu-le-bon-discours/">&lt;p&gt;C&#x27;est suite à la lecture du &lt;a href=&quot;https:&#x2F;&#x2F;www.reuters.com&#x2F;investigates&#x2F;special-report&#x2F;venezuela-zte&#x2F;&quot;&gt;papier de Reuters&lt;&#x2F;a&gt; à propos de l&#x27;instauration au Venezuela du même &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Syst%C3%A8me_de_cr%C3%A9dit_social&quot;&gt;système de score social&lt;&#x2F;a&gt; que celui que l&#x27;on peut trouver en Chine que j&#x27;en suis venu à me poser cette question.&lt;&#x2F;p&gt;
&lt;p&gt;Le score social c&#x27;est quoi ? C&#x27;est un moyen de calculer la réputation des citoyens en fonction de ce qu&#x27;iels font (attitude, respect des règles ou non, ...). De là en découle plein de choses fortement impactantes sur la vie et ce de façon plus ou moins visible et d&#x27;une plus ou moins directe des façons : allez-vous avoir le droit à un crédit pour acheter votre maison ? Est-ce que vos enfants pourront aller dans une bonne école ? Est-ce que votre assurance acceptera de vous assurer et si oui à quel taux ? etc.&lt;&#x2F;p&gt;
&lt;p&gt;Pour le dire autrement c&#x27;est un superbe outil coercitif. Du genre de ceux auquel on ne peut pas échapper (parce que le simple fait de ne pas adhérer à un des dispositifs le composant peut être jugé de façon négative) et dont les règles s&#x27;appliquent de façon systématique (c&#x27;est à dire que l&#x27;on a peu de chances de passer sous les radars et de ne pas se faire prendre).&lt;&#x2F;p&gt;
&lt;p&gt;Il arrive même à certain·e·s citoyen·ne·s de voir leur score évoluer sans trop savoir pourquoi : les règles ne sont pas forcément limpides : il faut alors deviner ce qui a pu influer sur le score ou non. Il arrive même que le simple fait d&#x27;être en relation avec une personne ayant un mauvais score &lt;a href=&quot;https:&#x2F;&#x2F;fr.express.live&#x2F;2018&#x2F;07&#x2F;11&#x2F;orwell-en-chine-le-systeme-de-credit-social-determine-lavenir-des-citoyens&quot;&gt;impacte négativement votre propre score&lt;&#x2F;a&gt; (coucou isolement social pour ceux qui sont déjà au plus mal).&lt;&#x2F;p&gt;
&lt;p&gt;Pour que ce score fonctionne, il faut des données, beaucoup de données.&lt;&#x2F;p&gt;
&lt;p&gt;Ces données nous en créons tous les jours et nous le faisons depuis longtemps. Elles sont générées et stockées par les divers services et appareils que nous utilisons. Avec notre concours direct ou involontairement. Tiens en parlant d&#x27;appareils vous saviez que &lt;a href=&quot;https:&#x2F;&#x2F;www.lebigdata.fr&#x2F;samsung-donnees-smartphones-galaxy&quot;&gt;Samsung a les données des utilisateurs des téléphones de sa gamme Galaxy&lt;&#x2F;a&gt; ?&lt;&#x2F;p&gt;
&lt;p&gt;Pour expliquer qu&#x27;il est important de protéger sa vie privée, ses données, nous disions aux gens &quot;attention les vilains loups du marketing vont vous envoyer des pubs&quot;. Certes c&#x27;est vrai, certes cette menace est très proche mais ce discours est, je pense, assez inaudible : elle ne représente pas un risque facilement mesurable par les gens.&lt;&#x2F;p&gt;
&lt;p&gt;Hors avec le crédit social on a un outil qui nous prive très clairement de notre liberté d&#x27;action : si on n&#x27;agit pas comme le pouvoir en place le veut, alors notre score baisse et impacte directement nos possibilités de faire ou non des choses. Le pouvoir pouvant être un état mais aussi toute organisation choisissant d&#x27;y avoir recours.&lt;&#x2F;p&gt;
&lt;p&gt;Quid encore d&#x27;un tel système sur la capacité démocratique d&#x27;un peuple ? Que deviennent nos vies le jour où le score change parce qu&#x27;une nouvelle politique arrive ? Croit-on vraiment que nos données, qui servent à calculer ce score, seront effacées lors de ce changement de régime ?&lt;&#x2F;p&gt;
&lt;p&gt;Sommes nous encore libres dans une société où chacun de nos faits et gestes est monitoré, tracké ?&lt;&#x2F;p&gt;
&lt;p&gt;Un tel système de score est à la porte de nos pays. On a déjà des exemples d&#x27;assurances qui vous proposent de baisser le prix de votre cotisation si vous &lt;a href=&quot;https:&#x2F;&#x2F;bfmbusiness.bfmtv.com&#x2F;entreprise&#x2F;assurance-auto-un-mouchard-dans-la-voiture-pour-payer-moins-cher-887147.html&quot;&gt;équipez votre voiture d&#x27;un tracker&lt;&#x2F;a&gt; qui collecte &lt;a href=&quot;https:&#x2F;&#x2F;bfmbusiness.bfmtv.com&#x2F;entreprise&#x2F;quand-les-assureurs-auto-analysent-votre-conduite-au-volant-871188.html&quot;&gt;la vitesse&lt;&#x2F;a&gt;, les &lt;a href=&quot;https:&#x2F;&#x2F;www.latribune.fr&#x2F;entreprises-finance&#x2F;banques-finance&#x2F;20140605trib000833675&#x2F;axa-se-lance-dans-le-big-data.html&quot;&gt;accélérations&lt;&#x2F;a&gt;, le respect ou non des limitations de vitesse, ... ou encore &lt;a href=&quot;https:&#x2F;&#x2F;www.beam.dental&#x2F;&quot;&gt;la brosse à dents&lt;&#x2F;a&gt; qui dit à &lt;a href=&quot;https:&#x2F;&#x2F;www.lemagit.fr&#x2F;actualites&#x2F;450420773&#x2F;Une-brosse-a-dent-pour-souligner-la-vulnerabilite-des-objets-connectes&quot;&gt;votre assurance&lt;&#x2F;a&gt; si vous avez raté un brossage et s&#x27;il est assez long (sinon paf adieu les remboursements dentaires).&lt;&#x2F;p&gt;
&lt;p&gt;Pour installer un tel outil, on ne le présente bien entendu pas sous l&#x27;angle coercitif mais on explique aux gens tous &lt;a href=&quot;https:&#x2F;&#x2F;www.allianz.fr&#x2F;assurance-auto&#x2F;conduite-connectee&#x2F;&quot;&gt;les bénéfices&lt;&#x2F;a&gt; réels ou supposés qu&#x27;apporte un tel système : &quot;mettez ce boîtier dans votre voiture, ça vous fait baisser le coût de l&#x27;assurance&quot; (ce sera peut être le cas en premier lieu, mais à quel prix sur les libertés et la vie privée ? Et que faire une fois que le système est massivement adopté pour s&#x27;en échapper lorsqu&#x27;on n&#x27;en voudra plus ou qu&#x27;un nouveau tour de vis arrivera ?).&lt;&#x2F;p&gt;
&lt;p&gt;Autre exemple : les applications de suivi de santé, de règles &amp;amp;co ou de rencontre. Nombre d&#x27;elles récoltent une quantité d&#x27;informations sensibles et les envoient sur des serveurs de sociétés voir les revendent pour &lt;a href=&quot;https:&#x2F;&#x2F;www.nextinpact.com&#x2F;brief&#x2F;clearview---l-application-de-reconnaissance-faciale-policiere-dopee-aux-reseaux-sociaux-10930.htm&quot;&gt;des usages biens plus cra cra&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Il nous faut revoir notre discours pour faire sentir aux gens que l&#x27;immense bénéfice qu&#x27;apportent ces services représentent une menace réelle aux portes de nos vies sans aucune mesure par rapport aux gains supposés, vendus, mis en avant. Il nous faut requestionner ces menaces pour les actualiser (le système était déjà complètement fucked up quand on a commencé à en parler au public et aujourd&#x27;hui nous touchons à des usages dégueulasses qui étaient même pas immaginables au début de nos luttes).&lt;&#x2F;p&gt;
&lt;p&gt;Il nous faut aussi exiger des mainteneurs de nos outils libres d&#x27;arrêter de faire les cons et de considérer plus que sérieusement une meilleure conception des outils tant en terme d&#x27;accessibilité, de design que de simplicité dans le temps (coucou GPG t&#x27;es le parfait exemple de ce qu&#x27;il faut pas faire).&lt;&#x2F;p&gt;
&lt;p&gt;Voyez-vous je doute que l&#x27;exportation du Score social Chinois se limite au Venezuela. La Chine est prête à fournir le système sur étagère (autrement dit prêt à l&#x27;emploi) comme semble l&#x27;indique le papier de Reuters cité plus haut. On trouve aussi des implémentations prêtes à l&#x27;emploi pour débusquer les &lt;a href=&quot;https:&#x2F;&#x2F;fama.io&#x2F;&quot;&gt;mauvais candidats à l&#x27;embauche&lt;&#x2F;a&gt;. Il ne s&#x27;agit que de temps avant que ce système arrive dans nos contrées. Tout comme le grand pare-feu chinois qu&#x27;on pouvait imaginer, un moment, rester en Chine qu&#x27;on n&#x27;aurait jamais le malheur d&#x27;y goûter. Aujourd&#x27;hui de nombreux indices laissent à penser que ce ne sera pas le cas (lois répressives, demandes de suppression de contenus de façon automatisée, attaques contre les VPN et le chiffrement, mise en place de politiques sécuritaires en coopération avec d&#x27;autres nations, ...).&lt;&#x2F;p&gt;
&lt;p&gt;Côté français, on a déjà énormément d&#x27;outils de contrôle de flux des populations : vidéo surveillance, reconnaissance faciale, badges, cellulaires, lecture de plaques minéralogiques, documents d&#x27;identité biométriques, cartes bancaires (dont le sans contact nous rapproche du moment où les espèces disparaitront - seul moyen de paiement encore anonyme aujorud&#x27;hui), ... qui nous sont imposés dans l&#x27;espace public, ils viennent en complément des données que nous semons en ligne.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;avantage de ce système c&#x27;est qu&#x27;il est de plus en plus documenté et développé en Chine et donc qu&#x27;on ne manque pas d&#x27;exemples à donner aux gens pour alimenter leur imaginaire coercitif et l&#x27;enfer qui nous attend toutes et tous demain. L&#x27;inconvénient c&#x27;est que ca va hyper vite. Bien trop vie comparé au peu de monde qu&#x27;on touche actuellement avec des outils de sensibilisation tels que les cafés vie privée ou les projection-débats dans les cinémas.&lt;&#x2F;p&gt;
&lt;p&gt;Quand un pouvoir est en déclin, pour se maintenir le plus possible, il use de tous les moyens dont il dispose à défaut de pouvoir fédérer les gens en agissant dans son intérêt. Et outre ce pouvoir on peut voir les puissances industrielles essayer de conquérir de nouveaux territoires. Exemple à Valenciennes où &lt;a href=&quot;https:&#x2F;&#x2F;www.20minutes.fr&#x2F;lille&#x2F;2706439-20200129-valenciennes-cameras-videosurveillance-reconnaissance-faciale-offertes-huawei-posent-question&quot;&gt;Huawei a offert les caméras de vidéosurveillance&lt;&#x2F;a&gt; à la ville. Caméras avec des capacités de reconnaissance faciale et dont.... le fabricant garde un accès distant.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;aurai bien aimé parler ici de la manipulation des scrutins qu&#x27;on a pu observer sous Trump ou le Brexit tout en n&#x27;oubliant pas qu&#x27;en France plusieurs candidats dont Macron ont fait appel à des sociétés similaires telles que &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;NationBuilder&quot;&gt;Nation Builder&lt;&#x2F;a&gt; par exemple. Sommes nous aussi libre dans un système qui autorise des entreprises à
manipuler l&#x27;information d&#x27;une portion significative du corps électoral
pour influer sur les élections comme on a pu le voir avec le Brexit par
exemple (à ce titre je vous recommande chaudement le film &lt;a href=&quot;https:&#x2F;&#x2F;www.senscritique.com&#x2F;film&#x2F;Brexit&#x2F;35516268&quot;&gt;&quot;Brexit, the uncivil war&quot;&lt;&#x2F;a&gt;). Le point crucial ici étant que l&#x27;ère où nous étions toutes et tous confronté·e·s aux mêmes informations &#x2F; au même temps de parole pour les différents courants politique est terminée. Aka : le CSA LOL. Et ce qu&#x27;on comprend à travers ce film c&#x27;est pourquoi le dispositif de manipulation électorale est resté si longtemps dans l&#x27;ombre : le corps électoral visé excluait - de fait - les journalistes
puisque ces personnes ne font pas partie du panel visé (par exemple critère intrinsèque des journalistes : iels sont plus aisé·e·s que le panel visé). A ce propos nous devrions parler avec les gens qui bossent dans le marketing. Histoire de se prendre une belle baffe avec ces outils dégueulasse que nous sommes à des milliers de lieues de croiser et d&#x27;utiliser.&lt;&#x2F;p&gt;
&lt;p&gt;Quelques petits liens pour continuer à exlorer le sujet :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=rRaKq6rOygE&quot;&gt;Amazon, Facebook, Google... &quot;ces entreprises qui exploitent notre intimité&quot;&lt;&#x2F;a&gt; (Olivier Tesquet, Interview France 24)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.monde-diplomatique.fr&#x2F;2019&#x2F;01&#x2F;ZUBOFF&#x2F;59443&quot;&gt;Capitalisme de surveillance&lt;&#x2F;a&gt; (Shoshana Zuboff, monde diplomatique)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.monde-diplomatique.fr&#x2F;1994&#x2F;05&#x2F;RAMONET&#x2F;46012&quot;&gt;Citoyens sous surveillance&lt;&#x2F;a&gt; (Ignacio Ramonet, monde diplomatique)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.monde-diplomatique.fr&#x2F;2019&#x2F;01&#x2F;RAPHAEL&#x2F;59403&quot;&gt;Bon et mauvais Chinois&lt;&#x2F;a&gt; (René Raphaël &amp;amp;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Ling Xi , monde diplomatique)&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.nextinpact.com&#x2F;brief&#x2F;en-chine--un-mauvais-score-sur-le-social-credit-system-peut-empecher-de-prendre-un-avion-ou-un-train-3124.htm&quot;&gt;En Chine, un mauvais score sur le Social Credit System peut empêcher de prendre un avion ou un train&lt;&#x2F;a&gt; (Nextinpact)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;forum.technopolice.fr&#x2F;&quot;&gt;Forum Technopolice&lt;&#x2F;a&gt; où vous apprendre et contribuer à la connaissance du capitalisme de surveillance et à son avancée dans nos vies&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.senscritique.com&#x2F;film&#x2F;The_Great_Hack&#x2F;38926999&quot;&gt;The Great Hack&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.senscritique.com&#x2F;film&#x2F;Brexit&#x2F;35516268&quot;&gt;Brexit : the uncivil war&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Retour d&#x27;expérience : petit atelier pour recueillir les envies des membres de FAImaison</title>
          <pubDate>Tue, 16 Apr 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2019-04-16-retour-dexperience-petit-atelier-pour-recueillir-les-envies-des-membres-de-faimaison/</link>
          <guid>https://blog.cloudfrancois.fr/2019-04-16-retour-dexperience-petit-atelier-pour-recueillir-les-envies-des-membres-de-faimaison/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2019-04-16-retour-dexperience-petit-atelier-pour-recueillir-les-envies-des-membres-de-faimaison/">&lt;p&gt;Lors de la dernière assemblée générale de &lt;a href=&quot;https:&#x2F;&#x2F;www.faimaison.net&#x2F;&quot;&gt;FAImaison&lt;&#x2F;a&gt;, nous avons fait un petit atelier dans le dernier tiers de temps que nous avions ensemble.&lt;&#x2F;p&gt;
&lt;p&gt;Le but de cet atelier était de récolter les envies des membres de FAImaison, présent·e·s à l&#x27;assemblée générale. Ces envies ne sont pas contraignantes dans les actions de FAImaison pour l&#x27;année à venir mais ont permit de découvrir ce qui intéressait les personnes à l&#x27;instant T.&lt;&#x2F;p&gt;
&lt;p&gt;Le déroulé a été le suivant. Nous avons commencé par distribuer un lot de post-it (environ 5-10 à chaque personne présente).&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons demandé aux personnes d&#x27;inscrire sur chaque post-it une idée, une envie de ce que devrait faire FAImaison cette année. On a laissé quelques minutes aux personnes pour faire ça.&lt;&#x2F;p&gt;
&lt;p&gt;Ensuite chacun·e est allé déposer ses post-it dans une urne (oui le vote à bulletin secret c&#x27;est important même si ça fait rire parfois tellement ça peut paraître archaïque dans des milieux où l&#x27;entre-soi est hyper présent).&lt;&#x2F;p&gt;
&lt;p&gt;Alors que les membres étaient en train de travailler sur un autre atelier en petits groupes, nous nous sommes mis à deux personnes pour trier les post-it par grande thématique (le but c&#x27;est de simplifier la vue globale de tous les post-it pour l&#x27;étape d&#x27;après - il est aussi possible de faire ce tri en groupe avec tou·te·s les membres mais nous manquions de temps pour le faire)&lt;&#x2F;p&gt;
&lt;p&gt;Puis, on a distribué des gommettes de deux couleurs différentes (3 gommettes de couleur verte, une rouge). On a demandé aux membres de voter &quot;favorable&quot; avec leurs gommettes vertes et de poser un veto (si nécessaire) sur une des idées exprimées. Les membres ne pouvaient pas voter pour leurs propres post-it.&lt;&#x2F;p&gt;
&lt;p&gt;On compte ensuite les gommettes et on est capable de voir le top 5 des envies pour l&#x27;année et les divers vetos si il y en a.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Nous avons pu, en quelques instants, élargir à bien plus de personnes ces réflexions, là où nous les aurions plutôt produites en petit groupe, au détour d&#x27;une discussion informelle.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;A titre d&#x27;information voici ce qui est ressorti de cet atelier chez FAImaison :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&quot;Éthique&quot; : prendre en compte la consommation (ressources, énergie...) - réfléchir à l&#x27;impact écologique de nos activités&#x2F;du numérique (8 gommettes vertes)&lt;&#x2F;li&gt;
&lt;li&gt;Communication extérieure : proposer ACTIVEMENT à d&#x27;autres associations nantaises les services de FAImaison (7 gommettes vertes)&lt;&#x2F;li&gt;
&lt;li&gt;Evolution des services : mettre en place l&#x27;IPv6 (6 gommettes vertes)&lt;&#x2F;li&gt;
&lt;li&gt;Fonctionnement interne : faire qu&#x27;il soit cool d&#x27;aller chez FAImaison, qu&#x27;on prenne plaisir à faire sans que ce soit une corvée pour un petit nombre (bureau) - distribuer davantage les &quot;corvées&quot; du bureau - répartir plus largement parmi les membres bénévoles de l&#x27;association les tâches et la circulation des informations qui restent parfois cloisonnées à l&#x27;intérieur du bureau	(4 gommettes vertes)&lt;&#x2F;li&gt;
&lt;li&gt;Fonctionnement interne : Une collégiale à la place du bureau - réduire la charge du bureau, externaliser par exemple le suivi ADSL (4 gommettes vertes)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;et un veto :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Pas d&#x27;atelier gestion de la brique internet dans les ateliers &lt;a href=&quot;https:&#x2F;&#x2F;cafevieprivee-nantes.fr&#x2F;&quot;&gt;Café Vie Privée&lt;&#x2F;a&gt;, formation et sensibilisation&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Referendum d&#x27;initiative citoyenne, porte ouverte au vote électronique ?</title>
          <pubDate>Sun, 06 Jan 2019 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2019-01-06-referundum-dinitiative-citoyenne-porte-ouverte-au-vote-electronique/</link>
          <guid>https://blog.cloudfrancois.fr/2019-01-06-referundum-dinitiative-citoyenne-porte-ouverte-au-vote-electronique/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2019-01-06-referundum-dinitiative-citoyenne-porte-ouverte-au-vote-electronique/">&lt;p&gt;La mobilisation des &quot;Gilets Jaunes&quot; a évolué partant d&#x27;un refus des taxes sur les carburants pour maintenant exiger le Referendum
d&#x27;initiative citoyenne (RIC). Ce dernier semble être une revendication permettant de cristalliser les manifestants qui, jusque là,
ajoutaient jour après jour à leur liste de nouvelles revendications.&lt;&#x2F;p&gt;
&lt;p&gt;Quelles seront les modalités d&#x27;un tel scrutin ? Ça reste à définir. Cependant, s&#x27;il vous plaît, n&#x27;allez pas vous échouer sur l&#x27;impasse
du vote électronique. &lt;a href=&quot;&#x2F;2017-09-23-le-vote-electronique-pourquoi-il-ne-faut-pas-franchir-le-pas&#x2F;&quot;&gt;Ce serait une erreur.&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Responsabilité de notre génération dans la folie environnementale</title>
          <pubDate>Wed, 14 Nov 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2018-11-14-responsabilite-de-notre-generation-dans-la-folie-environnementale/</link>
          <guid>https://blog.cloudfrancois.fr/2018-11-14-responsabilite-de-notre-generation-dans-la-folie-environnementale/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2018-11-14-responsabilite-de-notre-generation-dans-la-folie-environnementale/">&lt;p&gt;Que se passe-t-il ? Avons-nous rien compris des erreurs passées ?&lt;&#x2F;p&gt;
&lt;p&gt;Il y a un problème écologique, c&#x27;est un fait. La planète crève de nos modes de consommation. Nous ne savons pas gérer ni la demande démesurée en matières premières ni les déchet que seront les produits que nous achetons aujourd&#x27;hui.&lt;&#x2F;p&gt;
&lt;p&gt;On aurait pu faire les fières en affirmant que les problèmes actuels incombent entièrement aux générations précédentes, celles des 30 glorieuses qui ont produit et produit et produit, consommé, consommé et consommé.&lt;&#x2F;p&gt;
&lt;p&gt;Mais non, on ne peut pas faire ça.&lt;&#x2F;p&gt;
&lt;p&gt;Aujourd&#x27;hui encore on déconne grave et personne ne semble assez outré pour mettre au banc des accusé les nouveaux irresponsables qui se permettent des choses aberrantes à l&#x27;heure d&#x27;une prise de conscience écologique nécessaire.&lt;&#x2F;p&gt;
&lt;p&gt;Que faisons-nous aujourd&#x27;hui ? Que produisons-nous ? Que construisons nous ? Pour quel bénéfice ? Peut-on se permettre de telles choses ?&lt;&#x2F;p&gt;
&lt;p&gt;Ce billet d&#x27;humeur couve depuis un moment, j&#x27;avais bien en tête quelques exemples comme les chauffages sur les terrasses des cafés et restaurants qui sont une aberration parce que le degré d&#x27;isolation est nul au mieux très faible. (on vous demande d&#x27;isoler vos maisons pour réduire votre consommation en chauffage, par contre mettre du chauffage sur un espace non fermé là pas de soucis) :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2018-11-14-responsabilite-de-notre-generation-dans-la-folie-environnementale&#x2F;55bceab31a7450f4-1.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Un chauffage comme celui de la photo ci-dessous &lt;strong&gt;consomme, à l&#x27;unité, entre 2000W et 3000W&lt;&#x2F;strong&gt;. Il est probablement équipé d&#x27;un thermostat mais pourquoi faire ? Comme il n&#x27;y a pas d&#x27;isolation, la déperdition de chaleur en terrasse étant continue, le radiateur fonctionne à plein temps.&lt;&#x2F;p&gt;
&lt;p&gt;&quot;Oui mais tu comprends c&#x27;est un produit d&#x27;appel pour inviter les gens à s&#x27;installer en terrasse, c&#x27;est pas grave si ça tourne des heures sans que personnes ne soit en dessous&quot;&lt;&#x2F;p&gt;
&lt;p&gt;A-t-on le droit ? A-t-on le droit de consommer autant d&#x27;énergie alors qu&#x27;on a un grave problème de production d&#x27;énergie à l&#x27;heure où les gens sont demandeurs de moyens de locomotion électrifiés et où on ne sait pas produire en quantité suffisante **et **proprement cette électricité. On a besoin de tuer toutes nos centrales nucléaires et aussi celles au charbon, ce n&#x27;est pas avec ce genre de consommations qu&#x27;on pourra y arriver ni même commencer à y songer.&lt;&#x2F;p&gt;
&lt;p&gt;Et vient ce qui a déclenché la rédaction de ce billet (je passe aussi tous les écrans que j&#x27;ai croisé durant mon cours séjour à Paris, écrans qui ne servent à rien puisqu&#x27;ils affichent du contenu statique, un écran pollue moins qu&#x27;une feuille de papier, c&#x27;est ça ? on n&#x27;arrête pas le progrès ?)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;ecran-publicitaire-dans-les-toilettes&quot;&gt;Écran publicitaire dans les toilettes&lt;&#x2F;h2&gt;
&lt;p&gt;Dans un restaurant où je suis passé prendre un verre, avant de partir, petit tour aux toilettes.&lt;&#x2F;p&gt;
&lt;p&gt;Et là je tombe sur quoi ? Oui, un écran dans les chiottes. Tu sais le lieu où très probablement tu vas aller faire tes besoins dos à la chasse d&#x27;eau et où il n&#x27;y a personne une bonne partie du temps.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2018-11-14-responsabilite-de-notre-generation-dans-la-folie-environnementale&#x2F;73f0c66c27e1f9d9.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;A-t-on le droit ? A-t-on le droit de demander à la planète des ressources naturelles pour ça ? A-t-on le droit de consommer l&#x27;énergie demandée par ces écrans (et je ne parle là encore pas des écrans publicitaires dans les rues, aux abris bus, ...) ?&lt;&#x2F;p&gt;
&lt;p&gt;Cette société est folle.&lt;&#x2F;p&gt;
&lt;p&gt;Et en plus pour imprimer du selfie. Meure connerie humaine.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Savoir s&#x27;éclipser</title>
          <pubDate>Thu, 10 May 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2018-05-10-savoir-se-retirer/</link>
          <guid>https://blog.cloudfrancois.fr/2018-05-10-savoir-se-retirer/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2018-05-10-savoir-se-retirer/">&lt;p&gt;Ce weekend, nous étions en assemblée générale de la &lt;a href=&quot;https:&#x2F;&#x2F;ffdn.org&quot;&gt;Fédération FDN&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Dans ce lieu magnifique, le château de Justiniac (45 minutes au sud de Toulouse), nous avons pu échanger avec quelques fournisseurs d&#x27;accès à Internet associatifs qui composent la Fédération.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2018-05-10-savoir-se-retirer&#x2F;IMG_20180506_161529.jpg&quot; alt=&quot;Le lieu où s&amp;#39;est déroulée l&amp;#39;assemblée générale&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Plusieurs méthodes d&#x27;animation de débat (comme le &lt;a href=&quot;http:&#x2F;&#x2F;www.rhizome-coop.org&#x2F;wp-content&#x2F;uploads&#x2F;2016&#x2F;12&#x2F;Rhizome-Fiche-outil-Bocal-%C3%A0-poissons-novembre-2016.pdf&quot;&gt;bocal à poissons&lt;&#x2F;a&gt; ou
le &lt;a href=&quot;http:&#x2F;&#x2F;www.scoplepave.org&#x2F;pour-decider&quot;&gt;débat en pétales&lt;&#x2F;a&gt;) ont été utilisées afin de répondre à des questions comme &quot;A-t-on besoin d&#x27;une trésorerie dans la fédération ?&quot; et offrant ainsi
à toutes et tous un espace d&#x27;expression orale.&lt;&#x2F;p&gt;
&lt;p&gt;Durant ces débats sont apparus plusieurs avis au sein des différents groupes mais aussi des tensions interpersonnelles plus ou moins vives (j&#x27;ai notamment remarqué celles provenant de membres
historiques).&lt;&#x2F;p&gt;
&lt;p&gt;À la sortie des débats je me dit que, finalement, si on en arrive à organiser les débats avec des outils comme ceux-là c&#x27;est que le collectif en a besoin, qu&#x27;il a besoin de sortir des positions
clivantes parfois portées depuis de nombreuses années par ces membres historiques.&lt;&#x2F;p&gt;
&lt;p&gt;Ce que je retiens de ces expériences collectives c&#x27;est que le collectif peut très bien trouver des solutions, les membres qui tenaient leurs positions depuis plusieurs années pouvaient tout
simplement s&#x27;éclipser des débats pour laisser au collectif le choix de la solution retenu, laissant ainsi un espace libre, non influencé par un historique plus ou moins interpersonnel qui
pourrit, tronque, la réalité des discussions.&lt;&#x2F;p&gt;
&lt;p&gt;Parfois, s&#x27;éclipser est le meilleur des cadeaux que l&#x27;on puisse faire à un collectif.&lt;&#x2F;p&gt;
&lt;p&gt;Je regrette que de ces membres historiques, trop peu aient décidé de se retirer pour laisser le collectif agir et décider sans influence créée par ces tensions interpersonnelles.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2018-05-10-savoir-se-retirer&#x2F;IMG_20180508_101505.jpg&quot; alt=&quot;un panneau &amp;quot;chasse gardée&amp;quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Cannot find any contact in Signal for Android</title>
          <pubDate>Wed, 02 May 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2018-05-02-cannot-find-any-contact-in-signal-for-android/</link>
          <guid>https://blog.cloudfrancois.fr/2018-05-02-cannot-find-any-contact-in-signal-for-android/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2018-05-02-cannot-find-any-contact-in-signal-for-android/">&lt;p&gt;Some day I got the following output in logcat while Signal was refreshing my (empty) contact list :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;AccountManagerService: insertAccountIntoDatabase: Account {name=Signal, type=org.thoughtcrime.securesms}, skipping since the account already exists&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;After this, my contact list was still empty, which was very strange.&lt;&#x2F;p&gt;
&lt;p&gt;I found a solution for rooted devices, connect to your phone using &lt;em&gt;adb shell&lt;&#x2F;em&gt;, then run the following commands:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; su -
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# sqlite3 &#x2F;data&#x2F;system_ce&#x2F;0&#x2F;accounts_ce.db
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;sqlite&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt; delete from accounts where type = &amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;org.thoughtcrime.securesms&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then kill Signal, then relaunch (you may need to remove all data associated to Signal (via Settings &amp;gt; Applications &amp;gt; Signal)&lt;&#x2F;p&gt;
&lt;p&gt;&lt;em&gt;article photography by Mika Andrianoelison at &lt;a href=&quot;https:&#x2F;&#x2F;www.flickr.com&#x2F;photos&#x2F;92781053@N02&#x2F;15712691511&quot;&gt;https:&#x2F;&#x2F;www.flickr.com&#x2F;photos&#x2F;92781053@N02&#x2F;15712691511&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Une version de Signal sans Google Play Services (Custom Signal version without Google Play Services)</title>
          <pubDate>Wed, 02 May 2018 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2018-05-02-une-version-de-signal-sans-google-play-services-custom-signal-version-without-google-play-services/</link>
          <guid>https://blog.cloudfrancois.fr/2018-05-02-une-version-de-signal-sans-google-play-services-custom-signal-version-without-google-play-services/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2018-05-02-une-version-de-signal-sans-google-play-services-custom-signal-version-without-google-play-services/">&lt;p&gt;&lt;em&gt;(English version below)&lt;&#x2F;em&gt;
&lt;a href=&quot;https:&#x2F;&#x2F;play.google.com&#x2F;store&#x2F;apps&#x2F;details?id=org.thoughtcrime.securesms&quot;&gt;Signal&lt;&#x2F;a&gt;, nous sommes nombreu·x·ses à utiliser cette application de messagerie sécurisée. Elle est plutôt simple d&#x27;utilisation (il suffit de la donner à n&#x27;importe quel utilisateur pour s&#x27;en rendre compte), elle marche plutôt pas trop mal (sauf quand la centralisation prouve que ca marche pas et que l&#x27;application n&#x27;est pas disponible), elle supporte la voix, l&#x27;audio et le transfert de fichiers.&lt;&#x2F;p&gt;
&lt;p&gt;Il y a un &lt;em&gt;hic&lt;&#x2F;em&gt; dans les cas suivants :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Les Google Play Services nécessitent une mise à jour&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;utilisateur ne veut pas ajouter de compte Google à son device (et le téléphone dispose des Google Play Services)&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;utilisateur ne veut pas utiliser Google pour être notifié qu&#x27;un message Signal arrive&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;A ma connaissance, dans tous ces cas, le seul moyen actuel d&#x27;arriver à faire fonctionner Signal est de disposer d&#x27;un Android &lt;strong&gt;sans&lt;&#x2F;strong&gt; Google Play Services.&lt;&#x2F;p&gt;
&lt;p&gt;Si d&#x27;aventure vous utilisez une distribution d&#x27;Android et que vous êtes dans un des 3 cas précédents ou encore que vous utilisez &lt;a href=&quot;https:&#x2F;&#x2F;microg.org&quot;&gt;MicroG&lt;&#x2F;a&gt; pour vous passer de code propriétaire pour faire fonctionner les applications dépendant de services Google, vous êtes alors coincé·e.&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est là qu&#x27;intervient le projet dont je vais parler maintenant. Il s&#x27;agit d&#x27;une version de Signal modifié de façon à ce que Signal pense que les Google Play Services ne sont pas disponibles (même si c&#x27;est le cas).&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;utilise cette technique depuis environ un an, après de multiples corrections de mes scripts d&#x27;automatisation, il est maintenant temps d&#x27;ouvrir au public cette solution de contournement (même si ce serait plus simple de pouvoir le choisir directement dans les paramètres de Signal, par exemple).&lt;&#x2F;p&gt;
&lt;p&gt;Vous pourrez découvrir ce projet sur &lt;a href=&quot;https:&#x2F;&#x2F;signal.cloudfrancois.fr&quot;&gt;signal.cloudfrancois.fr&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;&lt;em&gt;(Version Française ci-dessus)&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We are a lot of people using &lt;a href=&quot;https:&#x2F;&#x2F;play.google.com&#x2F;store&#x2F;apps&#x2F;details?id=org.thoughtcrime.securesms&quot;&gt;Signal&lt;&#x2F;a&gt; on a regular basis, this secured messaging app allows us to send text, files, do audio and video calls in a easy manner, give the app to a random user, and see the result. It runs quite well (as long as centralization works).&lt;&#x2F;p&gt;
&lt;p&gt;But we are some to have an issue with Signal when:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;We do have Google Play services installed but not up to date (and we don&#x27;t want to update since it requires to have a Google Play Account)&lt;&#x2F;li&gt;
&lt;li&gt;We do not want to add a Google Play Account on the device&lt;&#x2F;li&gt;
&lt;li&gt;We do not want to use Google at all&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;To my knowledge there is no solution to run Signal in those cases as long as your Android device has Google Play Services installed.&lt;&#x2F;p&gt;
&lt;p&gt;There is also an issue with &lt;a href=&quot;https:&#x2F;&#x2F;microg.org&quot;&gt;MicroG&lt;&#x2F;a&gt;, a peace of software which provides FOSS implementation of Google Play Services : it may tell you that Signal cannot connect to the network. You are trapped.&lt;&#x2F;p&gt;
&lt;p&gt;This is where the project I want to introduce now has a role to play. It is simply a version of Signal where we tell Signal that Google Play Services are never available (even if it is available).&lt;&#x2F;p&gt;
&lt;p&gt;I use this version for more than one year, and it works pretty well. After some tuning of my automation scripts, I found it&#x27;s time to open this project to the masses, because we need it (may Signal contributors add a clean way to do the same using a setting directly from the app, ...)&lt;&#x2F;p&gt;
&lt;p&gt;You may find more details at &lt;a href=&quot;https:&#x2F;&#x2F;signal.cloudfrancois.fr&quot;&gt;signal.cloudfrancois.fr&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Le vote électronique : pourquoi il ne faut pas franchir le pas.</title>
          <pubDate>Sat, 23 Sep 2017 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2017-09-23-le-vote-electronique-pourquoi-il-ne-faut-pas-franchir-le-pas/</link>
          <guid>https://blog.cloudfrancois.fr/2017-09-23-le-vote-electronique-pourquoi-il-ne-faut-pas-franchir-le-pas/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2017-09-23-le-vote-electronique-pourquoi-il-ne-faut-pas-franchir-le-pas/">&lt;p&gt;Le vote électronique, ça revient souvent, c&#x27;est même dans le programme de Macron, comme dans celui de nombreux politicien·n·e·s avant lui. Je cite¹ :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Plus d’efficacité, c’est aussi plus de numérique : nous avons besoin de numériser notre démocratie, en instituant un vote électronique qui élargira la participation (sic), réduira les coûts des élections (sic) et modernisera l’image de la politique (sic).&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Ah la promesse d&#x27;augmenter le taux de participation (je passe sur le multiple combo-bullshit : prouvez-moi qu&#x27;une machine à voter coûte moins cher que les bulletins de vote papier ou encore que la modernisation de la politique ne tient que par le truchement matériel et technique et non par l&#x27;arrêt de &lt;a href=&quot;https:&#x2F;&#x2F;www.mediapart.fr&#x2F;journal&#x2F;france&#x2F;220917&#x2F;je-redigeais-les-cheques-les-senateurs-venaient-dans-mon-bureau&quot;&gt;pratiques odieuses&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;La simplification, ça me rappelle vaguement l&#x27;argument utilisé avec le fichier des gens honnêtes &lt;em&gt;aka&lt;&#x2F;em&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.linformaticien.com&#x2F;actualites&#x2F;id&#x2F;42295&#x2F;pageid&#x2F;7&#x2F;fichier-tes-bernard-cazeneuve-tente-de-rassurer-et-pourrait-faire-appel-a-l-anssi.aspx&quot;&gt;TES&lt;&#x2F;a&gt; :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;L’objectif est désormais d’avoir un service moderne, rapide, gratuit et plus facilement accessible pour les citoyens&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Je ne sais pas vous, mais j&#x27;ai demandé un passeport juste avant la mise en application de &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Fichier_des_titres_%C3%A9lectroniques_s%C3%A9curis%C3%A9s&quot;&gt;TES&lt;&#x2F;a&gt;. Il m&#x27;a fallu attendre un délai intolérable pour l&#x27;administration Française (roulements de tambours)..... tadam 1 semaine pour obtenir ce document. Que c&#x27;est long une semaine oulala (ironie).&lt;&#x2F;p&gt;
&lt;p&gt;Bref passons sur la recherche d’honnêteté pour vous faire gober le dernier truc numérique et potentiellement fliquant&#x2F;fichant&#x2F;augmenteur de pouvoir (pour eux) et attardons-nous sur le pourquoi le vote électronique est une idée idiote et dangereuse.&lt;&#x2F;p&gt;
&lt;p&gt;Voici les principaux critères pour assurer un vote de confiance :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;secret du vote&lt;&#x2F;li&gt;
&lt;li&gt;assurance qu&#x27;un votant n&#x27;a qu&#x27;une seule voix exprimée (c&#x27;est à dire unicité du vote)&lt;&#x2F;li&gt;
&lt;li&gt;fiabilité et vérifiabilité du décompte des voix et sincérité du vote&lt;&#x2F;li&gt;
&lt;li&gt;transparence du processus et contrôle du bon déroulé de celui-ci&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Je vais prendre la liste à l&#x27;envers parce que le dernier point se suffit à lui seul pour pouvoir comprendre que le vote électronique n&#x27;est pas une bonne idée et ce pour très longtemps².&lt;&#x2F;p&gt;
&lt;h1 id=&quot;la-transparence-du-processus-et-son-controle&quot;&gt;La transparence du processus et son contrôle&lt;&#x2F;h1&gt;
&lt;p&gt;Un énorme avantage du vote papier, en plus de satisfaire pratiquement tous les autres points cruciaux d&#x27;un vote listés dans ce billet³,  c&#x27;est qu&#x27;il est compréhensible par n&#x27;importe qui.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;je-vote&quot;&gt;Je vote&lt;&#x2F;h2&gt;
&lt;p&gt;Pour rappel, voici comment le scrutin papier fonctionne :&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;vous êtes inscrits à votre bureau de vote et vous vous y rendez pour participer au scrutin&lt;&#x2F;li&gt;
&lt;li&gt;il est alors de bon ton de  prendre un bulletin de chaque candidat (c&#x27;est un premier élément protégeant le secret de votre vote : jusque dans l&#x27;isoloir vous êtes en capacité de voter pour tous les candidats. Ne pas prendre un bulletin c&#x27;est donner un indice aux gens présents dans le bureau de vote que vous serez en incapacité de voter pour les candidats pour lesquels vous n&#x27;avez pas pris de bulletin ; il est aussi possible d&#x27;utiliser ceux que vous avez-reçus par la poste)&lt;&#x2F;li&gt;
&lt;li&gt;vous entrez dans l&#x27;isoloir : vous êtes seul·e face à votre choix, choix que vous exprimez en glissant le bulletin choisi (ou le mot coup-de-votre-coeur du moment) dans l&#x27;enveloppe⁴ que vous aurez prise sur la même table que les bulletins de vote.&lt;&#x2F;li&gt;
&lt;li&gt;vous vous présentez devant les responsables du bureau de vote qui vérifient votre identité, que vous êtes bien inscrit·e sur la liste électorale. Ils vérifient aussi que vous n&#x27;avez pas déjà voté&lt;&#x2F;li&gt;
&lt;li&gt;vous pouvez enfin accéder à l&#x27;urne et y déposer votre enveloppe&lt;&#x2F;li&gt;
&lt;li&gt;vous signez le registre pour attester que vous avez voté&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Ça c&#x27;est pour donner sa voix.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;je-regarde-que-tout-se-passe-bien&quot;&gt;Je regarde que tout se passe bien&lt;&#x2F;h2&gt;
&lt;p&gt;En fait, c&#x27;est pas la seule chose que vous pouvez faire dans le bureau de vote : vous pouvez très bien participer à l&#x27;entièreté du déroulé de l&#x27;élection (du dépôt de votre vote jusqu&#x27;au dépouillement en passant par l&#x27;observation du déroulé du vote).&lt;&#x2F;p&gt;
&lt;p&gt;Vous pouvez observer le vote :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Soit en simple citoyen (garder un œil sur les urnes pour éviter le bourrage, &lt;em&gt;etc.&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Soit en tant qu&#x27;assesseur pour un parti politique afin de contrôler les agissements des camps adverses (c&#x27;est important d&#x27;avoir des assesseurs dans les différents camps, sans eux &lt;a href=&quot;http:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;politique&#x2F;la-france-insoumise&#x2F;legislatives-a-evry-le-recours-contre-l-election-de-manuel-valls-suscite-la-colere-des-elus_2256081.html&quot;&gt;il est difficile de contester ensuite&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Plus il y a d&#x27;yeux dans le bureau de vote, mieux c&#x27;est. Et puis les trucs bizarres dans les élections c&#x27;est quand même fréquent. Exemple de choses qui pourraient arriver (pardon &lt;a href=&quot;http:&#x2F;&#x2F;www.20minutes.fr&#x2F;marseille&#x2F;2055599-20170424-marseille-president-bureau-vote-part-bulletins-resultats-retardes-toute-ville&quot;&gt;c&#x27;est déjà arrivé&lt;&#x2F;a&gt;) : le président du bureau de vote qui se tire avec l&#x27;urne sous le bras.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;urne est LE truc à garder à l&#x27;œil et à surveiller : mettre deux bulletins dans une enveloppe ? C&#x27;est un vote nul si les deux bulletins ne sont pas pour le même candidat (si c&#x27;est le même candidat on compte une voix). Tenter d&#x27;introduire de l&#x27;erreur au dépouillement ? C&#x27;est compliqué (voir ci-dessous).&lt;&#x2F;p&gt;
&lt;h2 id=&quot;je-participe-au-decompte-des-voix-exprimees&quot;&gt;Je participe au décompte des voix exprimées&lt;&#x2F;h2&gt;
&lt;p&gt;Lorsque le bureau ferme ses portes, le dépouillement peut commencer. Le dépouillement est accessible à tout le monde, n&#x27;hésitez pas à y participer.&lt;&#x2F;p&gt;
&lt;p&gt;Ah le dépouillement : c&#x27;est long, c&#x27;est fastidieux, ça va pas assez vite, c&#x27;est comme ça qu&#x27;on se l&#x27;imagine et que les fabricants  de machines à voter (et les politiciens promoteurs de ces engins) nous le rabâchent aux oreilles. Et par la même occasion ça va suffisamment vite pour qu&#x27;on puisse faire une soirée drama à la télé pour bien faire monter le suspens autour d&#x27;un résultat donné et arrêté sur des résultats de sondages et non sur le décompte final.&lt;&#x2F;p&gt;
&lt;p&gt;Pourtant, le dépouillement c&#x27;est un des moments les plus intéressants : en tant que citoyen je peux donner de mon temps et je fais de mon mieux pour que tout marche comme il faut : je suis actif.&lt;&#x2F;p&gt;
&lt;p&gt;Le dépouillement, c&#x27;est un processus humain accessible à tous et toutes pour lequel il y a différentes façons de s&#x27;assurer qu&#x27;il n&#x27;y a pas de malversation.&lt;&#x2F;p&gt;
&lt;p&gt;Comment se passe le dépouillement ?&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;On ouvre les urnes, on sort les enveloppes (qui contiennent donc les bulletins de vote) et on compare le nombre d&#x27;enveloppes et le nombre de personnes ayant signé le registre : ces nombres doivent coller.&lt;&#x2F;li&gt;
&lt;li&gt;On fait des paquets de 10 par exemple&lt;&#x2F;li&gt;
&lt;li&gt;On constitue des tablées où des gens vont compter les voix exprimées pour chaque candidat&lt;&#x2F;li&gt;
&lt;li&gt;On distribue aux différentes tablées des lots d&#x27;enveloppes constitués aux 2°). Les tables reçoivent le même nombre d&#x27;enveloppes que la table d&#x27;à coté&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;énoncé du déroulé est donné par une des personnes gérant le bureau de vote (soit le président, soit l&#x27;assistant·e du maire, &lt;em&gt;etc.&lt;&#x2F;em&gt;). Ces mêmes personnes sont là pour répondre aux questions des citoyens, elles font aussi appliquer le &lt;a href=&quot;https:&#x2F;&#x2F;www.legifrance.gouv.fr&#x2F;affichCode.do?cidTexte=LEGITEXT000006070239&quot;&gt;code électoral&lt;&#x2F;a&gt; et vérifient que les opérations de dépouillement respectent ce code. Exemples pratiques : on a un bulletin avec quelque chose d&#x27;écrit dessus c&#x27;est quoi ? un nul ? un blanc ? Il y a deux bulletins dans la même enveloppe ? Je ne comprends pas le formulaire ?&lt;&#x2F;li&gt;
&lt;li&gt;Ensuite à la tablée on va, par exemple retrouver 4 personnes (2x2) : une personne qui ouvre l&#x27;enveloppe, lit le bulletin à la personne à côté d&#x27;elle qui en prend note en marquant un &quot;petit bâton&quot; sur le formulaire officiel, le bulletin est passé aux 2 autres personnes une qui lit aussi le nom du candidat, et la dernière personne marque aussi d&#x27;un bâton la voix exprimée. Ainsi sur une table on a deux formulaires qui tient compte des voix exprimées, formulaires renseignés par des personnes différentes qui sont à même de comparer au plus tôt les différences de décompte afin de voir très vite si il n&#x27;y a pas de décalage entre les deux formulaires. La personne qui lit le nom du candidat est aussi en mesure de regarder que la voix a bien été prise en compte sur le formulaire.&lt;&#x2F;li&gt;
&lt;li&gt;On continue comme ça pour l&#x27;ensemble des bulletins distribués sur la table&lt;&#x2F;li&gt;
&lt;li&gt;Quand toutes les enveloppes de la table ont été dépouillées, on appelle le&#x2F;la président·e du bureau ou son assistant·e : celui&#x2F;celle-ci va comparer que les deux formulaires comportent le même nombre de voix : si ça colle et que la somme des voix relevées correspond au nombre de bulletins déposés sur la table alors tout va bien. Si ça colle pas faut trouver l&#x27;erreur et dans le pire des cas tout recommencer.&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Bien entendu, dans un bureau de vote il y a très rarement qu&#x27;une seule table de dépouillement. Les autres tables suivent la même méthodologie.&lt;&#x2F;p&gt;
&lt;p&gt;Autour de ces tables de dépouillement des citoyens peuvent aussi jouer le rôle d&#x27;observateurs pour s&#x27;assurer que le décompte a lieu dans les règles.&lt;&#x2F;p&gt;
&lt;p&gt;Vous l&#x27;aurez compris : les moyens humains sont importants mais en contre-partie les possibilités de fraude à ce niveau sont vraiment minimales.&lt;&#x2F;p&gt;
&lt;p&gt;En plus de ça on peut aussi comparer les résultats des différentes tables. Avoir une table à 80%&#x2F;20% des voix et une autre à 45%&#x2F;55% c&#x27;est déjà louche. Dans une même commune on tombe assez facilement sur des résultats semblables entre les différentes tables.&lt;&#x2F;p&gt;
&lt;p&gt;Quand tout ça est fini on additionne le nombre des voix par candidat de chaque table. Chacun peut sortir sa tête ou sa calculette et additionner pour contrôler que le résultat final est bon.&lt;&#x2F;p&gt;
&lt;p&gt;Donc vous voyez comment ça se passe, pour que ça se passe mal faudrait vraiment une grosse mutinerie dans la commune : c&#x27;est pas réaliste.&lt;&#x2F;p&gt;
&lt;p&gt;Mais le must du must c&#x27;est qu&#x27;en tant que citoyen, je peux aussi contrôler le décompte qui est communiqué au ministère de l&#x27;intérieur, ministère qui est en charge de la préparation, du suivi et du déroulé de l&#x27;élection : les chiffres calculés en bureau de vote peuvent être contrôlés sur le &lt;a href=&quot;https:&#x2F;&#x2F;www.interieur.gouv.fr&#x2F;Elections&#x2F;Les-resultats&#x2F;Presidentielles&quot;&gt;site du ministère&lt;&#x2F;a&gt;, par moi, simple citoyen. Si ça correspond pas : il y a un loup et ça se voit très vite.&lt;&#x2F;p&gt;
&lt;p&gt;Idéalement il faudrait que cette surveillance soit constante sur toute la durée du scrutin : un relâchement et toutes les pires choses sont possibles pour faire élire son&#x2F;sa pote.&lt;&#x2F;p&gt;
&lt;p&gt;Le code électoral est la référence pour le déroulé du vote, c&#x27;est compréhensible par tout le monde.&lt;&#x2F;p&gt;
&lt;p&gt;Simple, clair, compréhensible par n&#x27;importe qui : pas besoin d&#x27;être un expert, le contrôle est humain et vérifiable et le code électoral fait foi (on n&#x27;est pas confronté à un algorithme que l&#x27;on pense à tort ne faire que des additions mais qui se doit aussi de faire du traitement des données, de la protection de données, du chiffrement, de la transmission, ... bref du citoyen-pas-friendly)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;oui-mais-alors-le-vote-electronique-c-est-pas-transparent-je-ne-peux-pas-controler&quot;&gt;Oui mais alors le vote électronique ? C&#x27;est pas transparent ? Je ne peux pas contrôler&lt;&#x2F;h2&gt;
&lt;p&gt;Ben en fait pas du tout.&lt;&#x2F;p&gt;
&lt;p&gt;Le vote électronique pose la question de la chaîne de confiance entre moi citoyen et la prise en compte de mon choix, sa non-altération (il faut pas que le système me fasse voter pour quelqu&#x27;un d&#x27;autre que celui&#x2F;celle que je veux ni même qu&#x27;il oublie de compter ma voix) et sa transmission jusqu&#x27;au ministère de l&#x27;intérieur.&lt;&#x2F;p&gt;
&lt;p&gt;Et dans cette chaîne de confiance, il y a plusieurs entités auxquelles on me demande de donner un blanc-seing à défaut de comprendre tout le dispositif technique. Bref je dois &lt;a href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;2gflQEF1WQU?t=82&quot;&gt;avoir confiance&lt;&#x2F;a&gt; envers :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Le &lt;a href=&quot;http:&#x2F;&#x2F;www.francetvinfo.fr&#x2F;elections&#x2F;presidentielle&#x2F;a-issy-les-moulineaux-des-retards-apres-des-problemes-techniques-sur-les-machines-a-voter_2179815.html&quot;&gt;fabricant de la machine&lt;&#x2F;a&gt; (il doit respecter le cahier des charges, il ne doit pas y avoir de bug dans la machine, la machine ne doit pas être &lt;a href=&quot;http:&#x2F;&#x2F;www.lemonde.fr&#x2F;pixels&#x2F;article&#x2F;2017&#x2F;07&#x2F;31&#x2F;des-machines-a-voter-americaines-piratees-en-moins-de-deux-heures_5167048_4408996.html&quot;&gt;modifiable&#x2F;attaquable&lt;&#x2F;a&gt; par qui que ce soit (ni par un votant, ni par des gens du bureau de vote, ni par le fabricant, ni par les opérateurs réseau&#x2F;prestataires de service qui se trouvent entre mon choix et la communication de mon choix, ...)&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;état et les partis : peuvent-ils corrompre le fabricant de la machine par exemple ? Ou même sans ça est-ce que l&#x27;entreprise est vraiment neutre, est-ce que la machine à voter l&#x27;est ?&lt;&#x2F;li&gt;
&lt;li&gt;(et il y en a probablement d&#x27;autres, en réfléchissant, si je trouve je complète la liste plus tard, mais là n&#x27;est pas l&#x27;important).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;En fait tout réside dans le fait que le vote électronique repose sur un ensemble de connaissances que seuls des expert·e·s averti·e·s peuvent comprendre et qu&#x27;un nombre trop restreint de personnes peuvent contrôler :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;non accès aux codes sources des applications utilisées dans le vote électronique&lt;&#x2F;li&gt;
&lt;li&gt;impossibilité de s&#x27;assurer que le logiciel qui tourne dans la machine correspond bien au code qu&#x27;on est en train de lire (oui une machine ça se met à jour et on peut vous montrer sur papier le code source d&#x27;une ancienne version du logiciel par exemple)&lt;&#x2F;li&gt;
&lt;li&gt;non accès aux spécification du matériel (matériel non libre), impossibilité de vérifier que celui-ci se comporte tel qu&#x27;attendu&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;On a donc une énorme chape de plomb technique posée là sur le processus de vote et pour laquelle on demande aux &lt;a href=&quot;http:&#x2F;&#x2F;www.poureva.be&#x2F;spip.php?article922&quot;&gt;citoyens&lt;&#x2F;a&gt; de faire confiance à défaut de la comprendre et de pouvoir la contrôler par soit-même.&lt;&#x2F;p&gt;
&lt;p&gt;Politique, argent, entreprises, on sait bien que tout ce petit monde est faillible et appelé à agir pour se tirer la couverture à soi-même (d&#x27;ailleurs j&#x27;écrirais prochainement sur la conduite des campagnes électorales grâce à des outils prédictifs⁵.&lt;&#x2F;p&gt;
&lt;p&gt;On passe donc d&#x27;un processus clair, transparent, humain à multiples contrôles et contre-contrôles où les différents aspects du vote de l&#x27;expression du votant à la prise du votant sont transparents et clairs à un dispositif complètement opaque qui exclut la majorité des citoyens du contrôle du dispositif électoral et qui est sensé affirmer le résultat de l&#x27;élection par magie noire comprise par les initiés uniquement.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;fiabilite-verifiabilite-et-sincerite-du-vote&quot;&gt;Fiabilité, vérifiabilité et sincérité du vote&lt;&#x2F;h1&gt;
&lt;p&gt;Si on oublie les égarements d&#x27;urnes&#x2F;bourrages d&#x27;urnes qu&#x27;on pourrait prévenir très facilement avec plus de moyens humains, l&#x27;ensemble du scrutin papier répond aux besoins de :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;fiabilité : c&#x27;est du papier, ça ne s&#x27;altère pas pendant le scrutin, on a plusieurs paires d&#x27;yeux pour compter, contrôler, contre-contrôler &lt;em&gt;etc.&lt;&#x2F;em&gt;&lt;&#x2F;li&gt;
&lt;li&gt;vérifiabilité : dans le doute on peut recompter&lt;&#x2F;li&gt;
&lt;li&gt;sincérité : le nom inscrit sur le papier du bulletin n&#x27;est pas réécrit par magie avec le nom d&#x27;un autre candidat&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Coté vote électronique ça donne :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;fiabilité : les bugs informatiques qu&#x27;ils soient logiciels ou matériels ça existe (dans l&#x27;aéronautique on équipe les aéronefs à minima de deux systèmes répondant au même cahier des charges mais pas implémentés par les mêmes personnes&#x2F;avec les mêmes composants pour limiter ces aléas, c&#x27;est dire ...)&lt;&#x2F;li&gt;
&lt;li&gt;vérifiabilité : on fait comment ? on demande à la machine de réimprimer le rapport pour être sûr que l&#x27;imprimante marche bien ? :p ou on lui dit de cracher les votes ligne par ligne et on compte à la main ?&lt;&#x2F;li&gt;
&lt;li&gt;sincérité : c&#x27;est de l&#x27;informatique, le logiciel fait bien ce qu&#x27;il veut. Comme dit précédemment, aucune assurance que le gâteau qu&#x27;on mange a été confectionné avec la recette que le cuisinier a bien voulu te donne sur le papier.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h1 id=&quot;unicite-du-vote-et-secret-du-vote&quot;&gt;Unicité du vote et secret du vote&lt;&#x2F;h1&gt;
&lt;p&gt;Ces deux points (unicité et secret) sont intéressants car ils sont l&#x27;un-l&#x27;autre exclusifs : pour s&#x27;assurer électroniquement que vous ne votez qu&#x27;une fois il faut collecter votre identité et la vérifier avant de vous laisser voter.&lt;&#x2F;p&gt;
&lt;p&gt;Aujourd&#x27;hui ce contrôle est, peut être, fait de façon manuelle et sur papier comme pour le vote classique mais ça ne saurait durer : quand nous aurons accepté de mettre la main dans le tout informatique, on informatisera aussi la collecte d&#x27;identité associée à ce vote.&lt;&#x2F;p&gt;
&lt;p&gt;Prenons, pour mieux illustrer ce point, le vote par Internet : pour assurer l&#x27;unicité il faut une identité numérique unique par citoyen, il faut aussi authentifier⁶) le votant.&lt;&#x2F;p&gt;
&lt;p&gt;Oui mais voilà comment fait-on avec un ordinateur pour assurer à la fois l&#x27;anonymat (le secret) du vote mais en même temps assurer l&#x27;identité du votant ? Techniquement c&#x27;est difficile et quand bien même le logiciel de vote serait parfait, les ordinateurs des gens et leur utilisation de l&#x27;outil ne l&#x27;est pas. Je suis sûr que vous connaissez au moins une personne avec un ordinateur très lent, vérolé, avec des pubs, des toolbars, et autres mochetés numériques. Garantir la sécurité d&#x27;un dispositif comme celui du vote électronique n&#x27;est pas possible dans ces conditions.&lt;&#x2F;p&gt;
&lt;p&gt;Et rappelons que, même si on est sceptique sur l&#x27;impact du vote : les élus raffolent de l&#x27;expression de ce vote puisque ça leur donne légitimité à agir et ce, quel que soit le contexte et la réalité du vote (quand on vote pour empêcher un désastre est-ce encore une expression de soutien ?).&lt;&#x2F;p&gt;
&lt;h1 id=&quot;conclusion&quot;&gt;Conclusion&lt;&#x2F;h1&gt;
&lt;p&gt;Ne laissons pas de place au doute, au manque de confiance dans le processus de vote lui-même : le processus papier actuel fonctionne très bien, il est compréhensible par un maximum de personnes sous le format papier (et s&#x27;il était question d&#x27;économiser le papier, éradiquons déjà la publicité par voie postale et on reparle, peut être).&lt;&#x2F;p&gt;
&lt;p&gt;Le vote électronique est l&#x27;outil d&#x27;exclusion démocratique par excellence pour une majorité écrasante de citoyens dont je fais partie malgré que je bosse dans l&#x27;IT : je ne pourrais jamais donner ma confiance à des &lt;a href=&quot;https:&#x2F;&#x2F;arstechnica.com&#x2F;information-technology&#x2F;2017&#x2F;09&#x2F;bluetooth-bugs-open-billions-of-devices-to-attacks-no-clicking-required&#x2F;&quot;&gt;outils&lt;&#x2F;a&gt; qui &lt;a href=&quot;http:&#x2F;&#x2F;www.ibtimes.co.uk&#x2F;are-you-being-watched-finfisher-government-spy-tool-found-hiding-whatsapp-skype-1640263&quot;&gt;poignardent&lt;&#x2F;a&gt; les &lt;a href=&quot;http:&#x2F;&#x2F;blog.ptsecurity.com&#x2F;2017&#x2F;08&#x2F;disabling-intel-me.html&quot;&gt;gens&lt;&#x2F;a&gt; dans le &lt;a href=&quot;http:&#x2F;&#x2F;www.clubic.com&#x2F;domotique&#x2F;actualite-833974-irobot-vendre-donnees-collectees-roomba.html&quot;&gt;dos&lt;&#x2F;a&gt; en &lt;a href=&quot;https:&#x2F;&#x2F;wtf.horse&#x2F;2017&#x2F;09&#x2F;19&#x2F;common-wifi-attacks-explained&#x2F;&quot;&gt;temps normal&lt;&#x2F;a&gt;) qui entrent, dans le cadre du vote, dans un processus extrêmement sensible quand on parle de la conduite de la Nation.&lt;&#x2F;p&gt;
&lt;p&gt;Est-ce que c&#x27;est le juste chemin de dire aux gens qu&#x27;il doivent accepter de ne pas comprendre et de ne se fier qu&#x27;aux avis des experts qui sont embauchés possiblement par les mêmes entreprises qui commercialisent les machines à voter...&lt;&#x2F;p&gt;
&lt;p&gt;Bref, refusons ces outils, le moment du dépouillement est, je trouve, important en plus d&#x27;être intéressant, ne serait-ce que pour partager ce moment avec d&#x27;autres personnes.&lt;&#x2F;p&gt;
&lt;p&gt;Je préfèrerais que l&#x27;État me permette de voter dans le bureau de vote de mon choix (sans avoir à anticiper de plusieurs mois : c&#x27;est pas toujours possible) plutôt que de me condamner à faire une procuration, à trouver une personne de confiance qui est pas déjà porteuse d&#x27;une procuration ou à défaut qui m&#x27;oblige à faire des centaines de kilomètres pour déposer mon bulletin dans l&#x27;urne...&lt;&#x2F;p&gt;
&lt;p&gt;PS : ce billet fait suite à de nombreux débats récurrents, d&#x27;experts, de chercheurs qui se taraudent la tête à la recherche du vote électronique parfait. Le véritable déclencheur delà rédaction de ce billet c&#x27;est le visionnage de la conférence &lt;em&gt;&lt;a href=&quot;http:&#x2F;&#x2F;public.weconext.eu&#x2F;academie-sciences&#x2F;2017-05-23&#x2F;video_id_001&#x2F;index.html&quot;&gt;Éthique et algorithmes&lt;&#x2F;a&gt;&lt;&#x2F;em&gt; de Gilles DOWEK (cette conférence fait partie d&#x27;une série de 4, intitulée &lt;em&gt;&lt;a href=&quot;http:&#x2F;&#x2F;www.academie-sciences.fr&#x2F;fr&#x2F;Colloques-conferences-et-debats&#x2F;enjeux-scientifiques-ethique-numerique.html&quot;&gt;Les enjeux scientifiques de l&#x27;éthique du numérique&lt;&#x2F;a&gt;&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Merci à &lt;a href=&quot;https:&#x2F;&#x2F;esther.codes&#x2F;about-me&#x2F;&quot;&gt;Esther&lt;&#x2F;a&gt;, à &lt;a href=&quot;https:&#x2F;&#x2F;framapiaf.org&#x2F;@goofy&quot;&gt;goofy&lt;&#x2F;a&gt; et &lt;a href=&quot;https:&#x2F;&#x2F;mastodon.gougere.fr&#x2F;@fabtd&quot;&gt;fabien&lt;&#x2F;a&gt; pour la relecture de ce billet.&lt;&#x2F;p&gt;
&lt;p&gt;Merci aussi à &lt;a href=&quot;https:&#x2F;&#x2F;mamot.fr&#x2F;@Olm_e&quot;&gt;Olm-e&lt;&#x2F;a&gt; pour avoir porté à ma connaissance le site &lt;a href=&quot;http:&#x2F;&#x2F;www.poureva.be&#x2F;&quot;&gt;poureva.be&lt;&#x2F;a&gt; qui permet d&#x27;approfondir le sujet.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;¹ &lt;a href=&quot;https:&#x2F;&#x2F;en-marche.fr&#x2F;emmanuel-macron&#x2F;le-programme&#x2F;vie-politique-et-vie-publique&quot;&gt;https:&#x2F;&#x2F;en-marche.fr&#x2F;emmanuel-macron&#x2F;le-programme&#x2F;vie-politique-et-vie-publique&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;² Si la totalité de la population vient à être experte en informatique et en infosec d&#x27;ici à 50 ans, alors je reconsidérerais ce qui est écrit dans ce billet. En attendant l&#x27;analphabétisme existe toujours &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;Instruction_obligatoire#En_France&quot;&gt;135 ans&lt;&#x2F;a&gt; après la mise en place de l&#x27;instruction obligatoire (on est d&#x27;accord c&#x27;est pas qu&#x27;affaire d&#x27;éducation, en plus). On constate quelque chose de semblable dans l&#x27;informatique : les gens ne savent pas comment marche leur ordinateur, et les parents sont émerveillés parce que leur &lt;a href=&quot;https:&#x2F;&#x2F;nicolaslegland.wordpress.com&#x2F;2013&#x2F;08&#x2F;15&#x2F;les-enfants-ne-savent-pas-se-servir-dun-ordinateur&#x2F;&quot;&gt;mome passe leur temps sur l&#x27;ordinateur, ce qui n&#x27;en fait pas du tout des experts ou des doués de la chose&lt;&#x2F;a&gt; ce qui n&#x27;est pas nécessairement le cas et on entre dans la même logique : on pense que c&#x27;est acquis alors que ça ne l&#x27;est pas et on pense qu&#x27;on peut bâtir de façon correcte sur ces fondations argileuses.&lt;&#x2F;p&gt;
&lt;p&gt;³ j&#x27;émettrais une réserve quand même sur l&#x27;unicité : lors de la présidentielle de 2017 il y a eu &lt;a href=&quot;http:&#x2F;&#x2F;www.lemonde.fr&#x2F;election-presidentielle-2017&#x2F;article&#x2F;2017&#x2F;04&#x2F;13&#x2F;ces-electeurs-qui-sont-inscrits-deux-fois-sur-les-listes-electorales_5110698_4854003.html&quot;&gt;des bizareries&lt;&#x2F;a&gt; sur la gestions des &lt;a href=&quot;http:&#x2F;&#x2F;www.midilibre.fr&#x2F;2017&#x2F;04&#x2F;14&#x2F;500-000-electeurs-inscrits-deux-fois-sur-les-listes-electorales,1492782.php&quot;&gt;listes électorales&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;⁴ dans ce billet, je ne peux pas aborder les autres modes de scrutins possibles car il y en a beaucoup. Certaines méritent d&#x27;être citées comme celle de &lt;a href=&quot;https:&#x2F;&#x2F;fr.wikipedia.org&#x2F;wiki&#x2F;M%C3%A9thode_de_Condorcet&quot;&gt;Condorcet&lt;&#x2F;a&gt;, méthode qui pourrait nous éviter de réduire notre voix à une simple opposition au dernier fasciste à la mode. (note que la méthode de Condorcet est quand même plus complexe à comprendre que le simple comptage bête et méchant que celui du scrutin uninominal majoritaire à deux tours que nous connaissons aujourd&#x27;hui en France, mais c&#x27;est toujours plus accessible que le dernier algorithme sorti de la cafetières d&#x27;un math-scientist et se l&#x27;implémentation - humaine (et donc faillible) - de celui-ci)&lt;&#x2F;p&gt;
&lt;p&gt;⁵ Je pense par exemple à des entreprises comme &lt;a href=&quot;https:&#x2F;&#x2F;www.ngpvan.com&#x2F;&quot;&gt;NGP VAN&lt;&#x2F;a&gt;, &lt;a href=&quot;http:&#x2F;&#x2F;www.numerama.com&#x2F;politique&#x2F;146021-quest-ce-que-digitalebox-le-concurrent-francais-de-nationbuilder.html&quot;&gt;Digitalebox&lt;&#x2F;a&gt; ou encore &lt;a href=&quot;http:&#x2F;&#x2F;nationbuilder.com&#x2F;&quot;&gt;NationBuilder&lt;&#x2F;a&gt;. NationBuilder a été utilisée entre autres par &lt;a href=&quot;https:&#x2F;&#x2F;venturebeat.com&#x2F;2017&#x2F;07&#x2F;14&#x2F;how-nationbuilder-helped-emmanuel-macron-secure-a-landslide-in-frances-legislative-elections&#x2F;&quot;&gt;Trump, les promotteurs du Brexit, Macron&lt;&#x2F;a&gt; et &lt;a href=&quot;http:&#x2F;&#x2F;www.numerama.com&#x2F;politique&#x2F;144986-quest-ce-que-nationbuilder-le-cms-qui-veut-sauver-la-democratie.html&quot;&gt;Mélenchon&lt;&#x2F;a&gt; pour comprendre ce que les gens attendent à un instant T de la campagne. D&#x27;ailleurs c&#x27;est le fait que ces deux candidats à l&#x27;élection présidentielle française aient fait appel à cette entreprise pour une même élection qui m&#x27;a interpellé : dans quelle mesure l&#x27;outil de NationBuilder est neutre, qu&#x27;il n&#x27;y a aucun biais de collecte, d&#x27;analyse et de construction des rapports à destination des clients (biais qui peuvent être involontaires:  après tout ce sont des humains qui fabriquent ça ou encore des biais volontaires : au plus offrant je lui donne des rapports réels, au moins offrant je lui glisse la peau de banane sous le pied .... le temps qu&#x27;il s&#x27;en aperçoive il devra dépenser une énergie folle pour corriger le tir ; et j&#x27;aimerais aussi aborder l&#x27;impact de plateformes au centre de nos vies comme les réseaux sociaux qui, pour certains d&#x27;entre eux, sont la fenêtre n°1 vers l&#x27;information en intégrant des lecteurs de news directement dans le réseau social.&lt;&#x2F;p&gt;
&lt;p&gt;⁶ authentifier c&#x27;est à dire s&#x27;assurer que l&#x27;identité numérique utilisée pour voter est bien utiliser par la personne à qui appartient cette identité : ne pas voter pour quelqu&#x27;un d&#x27;autre sans son autorisation&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Censure et surveillance de l&#x27;Internet Français, main rouge sur Google, Wikipedia et OVH : et après ?</title>
          <pubDate>Thu, 20 Oct 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-10-20-censure-et-surveillance-de-linternet-francais-main-rouge-sur-google-wikipedia-et-ovh-et-apres/</link>
          <guid>https://blog.cloudfrancois.fr/2016-10-20-censure-et-surveillance-de-linternet-francais-main-rouge-sur-google-wikipedia-et-ovh-et-apres/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-10-20-censure-et-surveillance-de-linternet-francais-main-rouge-sur-google-wikipedia-et-ovh-et-apres/">&lt;p&gt;Lundi dernier, les clients du FAI Orange, lorsqu&#x27;ils consultaient Google, Wikipedia ou OVH étaient &lt;a href=&quot;http:&#x2F;&#x2F;www.numerama.com&#x2F;tech&#x2F;202058-orange-pourquoi-une-erreur-humaine-parait-peu-vraisemblable.html&quot;&gt;redirigés sur le site du ministère de l&#x27;Intérieur&lt;&#x2F;a&gt;, si tant est qu&#x27;ils utilisaient les résolveurs DNS de Orange.&lt;&#x2F;p&gt;
&lt;p&gt;On le dira jamais assez, la censure c&#x27;est sale, la surveillance aussi. Il en va de même pour les méthodes de blocage d&#x27;accès à un service sur Internet (dans le cas présent, ce blocage peut aussi empêcher d&#x27;envoyer des mails à des gens hébergés sur les domaines de google, wikipedia ou ovh).&lt;&#x2F;p&gt;
&lt;p&gt;Un résolveur DNS, c&#x27;est un serveur. C&#x27;est grâce à lui que votre ordinateur sait comment appeler Wikipedia quand vous demandez wikipedia.org. Pour réussir cette prouesse, le serveur DNS va donner à votre ordinateur l&#x27;adresse IP de Wikipedia quand votre ordinateur lui demande &quot;wikipedia.org&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;En temps normal, tous les résolveurs DNS doivent répondre de la même façon : le résolveur DNS ne doit pas prendre de décision sur la réponse à renvoyer : seul le propriétaire du site consulté doit avoir la main là dessus.&lt;&#x2F;p&gt;
&lt;p&gt;Le blocage actuel est réalisé par votre FAI grâce à un résolveur DNS qui ment à votre ordinateur en indiquant l&#x27;adresse IP du ministère de l&#x27;Intérieur (minint) quand vous demandez l&#x27;accès à un site considéré comme dangereux par le Gouvernement (ou par votre FAI : la liste des sites bloqués n&#x27;étant pas public, il est possible d&#x27;y ajouter www.jacquieetmichel.net si votre FAI trouve ça drôle)&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est donc en ajoutant à Internet un équipement défaillant (résolveur DNS menteur) qu&#x27;il a été possible de transférer le trafic vers Google, Wikipedia et OVH vers le site du ministère de l&#x27;Intérieur lundi dernier.&lt;&#x2F;p&gt;
&lt;p&gt;Quand vous êtes redirigés vers le site du minint, ils sont bon princes de vous afficher la &lt;del&gt;&lt;a href=&quot;&#x2F;img&#x2F;2016-10-20-censure-et-surveillance-de-linternet-francais-main-rouge-sur-google-wikipedia-et-ovh-et-apres&#x2F;main-rouge-old.jpg&quot;&gt;main rouge&lt;&#x2F;a&gt;&lt;&#x2F;del&gt; le point d&#x27;exclamation rouge (pardon) :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-10-20-censure-et-surveillance-de-linternet-francais-main-rouge-sur-google-wikipedia-et-ovh-et-apres&#x2F;main-rouge-new.jpg&quot; alt=&quot;Capture d&amp;#39;écran de la page en question&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Oui ils sont bon princes.&lt;&#x2F;p&gt;
&lt;p&gt;Combien de temps se retiendront-ils de mettre en place un bon gros proxy qui laissera aux gens l&#x27;accès aux site de manière transparente tout en pouvant savoir qui voit quoi ? Ouais les boites noires du pauvre en somme.&lt;&#x2F;p&gt;
&lt;p&gt;On pourrait même aller jusqu&#x27;à altérer le contenu des sites visés, trop génial.&lt;&#x2F;p&gt;
&lt;p&gt;En soit, &lt;strong&gt;rien&lt;&#x2F;strong&gt; ne les empêche de le faire : quand votre FAI vous ment en changeant la réponse de son résolveur DNS, votre navigateur ne voit aucune différence comparé à une réponse vraie, légitime, de confiance.&lt;&#x2F;p&gt;
&lt;p&gt;Par exemple, prenons cet article : &lt;a href=&quot;http:&#x2F;&#x2F;wikipedia.org&#x2F;wiki&#x2F;Censure&quot;&gt;http:&#x2F;&#x2F;wikipedia.org&#x2F;wiki&#x2F;Censure&lt;&#x2F;a&gt; (je m&#x27;autorise l&#x27;approximation du nom d&#x27;hôte : je ne sais pas quel est le domaine de Wikipedia qui était visé) :&lt;&#x2F;p&gt;
&lt;p&gt;Lundi dernier, la seule chose qui changeait c&#x27;est que quand vous demandiez wikipedia.org, vous ne tombiez pas sur la machine de wikipedia mais sur une machine du ministère de l&#x27;Intérieur.&lt;&#x2F;p&gt;
&lt;p&gt;Ce changement est complètement invisible pour l&#x27;utilisateur : votre navigateur affichait bien &quot;&lt;a href=&quot;http:&#x2F;&#x2F;wikipedia.org&#x2F;wiki&#x2F;Censure&quot;&gt;http:&#x2F;&#x2F;wikipedia.org&#x2F;wiki&#x2F;Censure&lt;&#x2F;a&gt;&quot; dans sa barre d&#x27;adresse.&lt;&#x2F;p&gt;
&lt;p&gt;Techniquement, ca veut dire que la requête HTTP suivante était envoyée au ministère :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Host: wikipedia.org
GET &#x2F;wiki&#x2F;Censure&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;A partir de là, le serveur du ministère de l&#x27;intérieur répond &quot;bêtement&quot; avec la main rouge.&lt;&#x2F;p&gt;
&lt;p&gt;Techniquement, il est complètement possible de renvoyer autre chose qu&#x27;une main rouge à l&#x27;utilisateur : on peut très bien lui retourner le contenu original (ou modifié) de la page &quot;&#x2F;wiki&#x2F;Censure&quot; de Wikipedia, tout en faisant un détour par le minint.&lt;&#x2F;p&gt;
&lt;p&gt;Il existe des techniques pouvant limiter les dégâts :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;coté serveur (DNSSEC, certificate pining, ...), mais qui les implémente ? Réponse : vraiment pas grand monde.&lt;&#x2F;li&gt;
&lt;li&gt;de votre coté vous devriez &lt;a href=&quot;http:&#x2F;&#x2F;www.zdnet.fr&#x2F;actualites&#x2F;pour-contourner-le-blocage-des-sites-web-il-suffit-de-changer-de-resolveur-dns-39810881.htm&quot;&gt;changer de résolveur DNS&lt;&#x2F;a&gt; pour en utiliser un de confiance (indice : clairement pas celui de votre FAI), vous devriez également utiliser &lt;a href=&quot;https:&#x2F;&#x2F;www.torproject.org&#x2F;projects&#x2F;torbrowser.html.en&quot;&gt;tor&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Nextinpact a d&#x27;ailleurs publié &lt;a href=&quot;http:&#x2F;&#x2F;www.nextinpact.com&#x2F;news&#x2F;101825-blocage-par-erreur-dorange-et-dns-quelle-fiabilite-pour-cet-element-essentiel-net.htm&quot;&gt;un super article&lt;&#x2F;a&gt; faisant le tour de l&#x27;état de l&#x27;art en la matière et expose les problématiques en présence.&lt;&#x2F;p&gt;
&lt;p&gt;Internet est donc cassé (qui en doutait ?), c&#x27;est un exemple de plus de la mainmise de certains sur cet outil symbole de notre liberté d&#x27;expression et pourtant : who cares¹ ?&lt;&#x2F;p&gt;
&lt;p&gt;Sous prétexte de lutte contre la fraude ou le terrorisme, nos communications peuvent être épiées et altérées par un État.&lt;&#x2F;p&gt;
&lt;p&gt;¹ Perso, j&#x27;ai rien entendu sur les quelques chaines de radio-france que j&#x27;ai exprès lancé exprès, juste-pour-voir™.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Synchroniser une présentation (slides) html&#x2F;css&#x2F;js entre plusieurs navigateurs</title>
          <pubDate>Tue, 11 Oct 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-10-11-synchroniser-une-presentation-slides-html-css-js-entre-plusieurs-navigateurs/</link>
          <guid>https://blog.cloudfrancois.fr/2016-10-11-synchroniser-une-presentation-slides-html-css-js-entre-plusieurs-navigateurs/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-10-11-synchroniser-une-presentation-slides-html-css-js-entre-plusieurs-navigateurs/">&lt;p&gt;Jeudi dernier, en réunion de FAImaison, j&#x27;avais une petite présentation à faire.&lt;&#x2F;p&gt;
&lt;p&gt;Comptant fortement sur la disponibilité d&#x27;un vidéo projecteur je ne m&#x27;étais pas plus inquiété que ça.&lt;&#x2F;p&gt;
&lt;p&gt;En arrivant dans la salle : malheur pas de vidéoprojecteur. Nous sommes trop nombreux pour suivre sur un unique écran.&lt;&#x2F;p&gt;
&lt;p&gt;Qu&#x27;à cela ne tienne, je me lance dans l&#x27;écriture d&#x27;un bout de script pour que chaque personne puisse suivre la présentation sur son propre laptop.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;idée est la suivante : le présentateur speech, fait avancer &#x2F; reculer les slides, l&#x27;action du présentateur est répercutée sur tous les navigateurs de l&#x27;auditoire : sweet.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;objet de ce billet et de vous présenter la solution développée en mode rache en 10 minutes et vous annoncer la libération de cet outil qui est très facile à intégrer à vos slides :)&lt;&#x2F;p&gt;
&lt;p&gt;Pour éviter qu&#x27;un petit malin profite de l&#x27;occasion, je met en place un mécanisme simpliste pour être le seul autorisé à piloter les navigateur des personnes connectées. Les actions possibles sont malgré tout très limitées : changer une ancre dans l&#x27;URL, rafraîchir la page, compter le nombre de clients connectés : simple.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;principe&quot;&gt;Principe&lt;&#x2F;h5&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-10-11-synchroniser-une-presentation-slides-html-css-js-entre-plusieurs-navigateurs&#x2F;Diagramme1.jpg&quot; alt=&quot;schéma de principe&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Le principe est simple :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Chaque navigateur charge la page HTML contenant les slides (fichier HTML, feuilles de style CSS et scripts JS)&lt;&#x2F;li&gt;
&lt;li&gt;Un navigateur, qui s&#x27;auto-désigne comme &quot;emitter&quot; surveille les changements d&#x27;URI (changement d&#x27;ancre)&lt;&#x2F;li&gt;
&lt;li&gt;en cas de changement, il envoie l&#x27;information au serveur&lt;&#x2F;li&gt;
&lt;li&gt;Quand le serveur reçoit une notification de l&#x27;&quot;emitter&quot;, il vérifie cette notification est légitime. Si c&#x27;est le cas, le serveur pousse l&#x27;information à chaque client &quot;receiver&quot;.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;L&#x27;auditoire garde la main sur son navigateur : par exemple, il peut changer de slides, son navigateur sera à nouveau synchronisé au prochain changement de slide effectué par le présentateur.&lt;&#x2F;p&gt;
&lt;p&gt;Exemple d&#x27;utilisation : à gauche le navigateur du présentateur, à droite un navigateur utilisé par un membre de l&#x27;auditoire :&lt;&#x2F;p&gt;
&lt;video loop=&quot;&quot; autoplay controls&gt;
&lt;source type=&quot;video&#x2F;webm&quot; src=&quot;&#x2F;img&#x2F;2016-10-11-synchroniser-une-presentation-slides-html-css-js-entre-plusieurs-navigateurs&#x2F;web-slideshow-sync-demo.webm&quot;&gt;
&lt;&#x2F;video&gt;
&lt;p&gt;L&#x27;utilisation est simple.&lt;&#x2F;p&gt;
&lt;h5 id=&quot;utilisation&quot;&gt;Utilisation&lt;&#x2F;h5&gt;
&lt;h6 id=&quot;recuperer-les-sources&quot;&gt;Récupérer les sources&lt;&#x2F;h6&gt;
&lt;p&gt;On va récupérer les sources de web-slideshow-sync et les déposer dans le répertoire où vous avez votre présentation (fichier html, fichiers js, css, images, videos) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; cd ma-super-presentation
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git clone https:&#x2F;&#x2F;git.legeox.net&#x2F;capslock&#x2F;web-slideshow-sync.git
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; mv web-slideshow-sync&#x2F;* .&#x2F;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Dans le répertoire de votre présentation, vous devez avoir les fichiers suivants :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;package.json : liste les dépendances de web-slideshow-sync (pour la partie serveur)&lt;&#x2F;li&gt;
&lt;li&gt;web-slideshow-sync-client.js : fichier js à intégrer à vos slides&lt;&#x2F;li&gt;
&lt;li&gt;web-slideshow-sync-server.js : script serveur : il servira vos slides et permettra la synchronisation des navigateurs&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h6 id=&quot;integrer-web-slideshow-sync-a-votre-presentation&quot;&gt;Intégrer web-slideshow-sync à votre présentation&lt;&#x2F;h6&gt;
&lt;p&gt;Ouvrez le fichier HTML de votre présentation, et ajoutez les lignes suivantes juste avant la balise &amp;lt; &#x2F; body&amp;gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;html&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-html &quot;&gt;&lt;code class=&quot;language-html&quot; data-lang=&quot;html&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;script &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;src&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;web-slideshow-sync-client.js&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&amp;gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;script &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;type&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;text&#x2F;javascript&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;webSlideshowSyncClient&lt;&#x2F;span&gt;&lt;span&gt;({
&lt;&#x2F;span&gt;&lt;span&gt;        showControls: &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;true
&lt;&#x2F;span&gt;&lt;span&gt;    })
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;script&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;L&#x27;option &lt;em&gt;showControls&lt;&#x2F;em&gt; nous permet d&#x27;afficher quelques contrôles utiles sur le navigateur du présentateur :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;un bouton pour forcer le rafraîchissement de la page des gens déjà connectés (utile si vous apportez des modification de dernière minute à vos slides)&lt;&#x2F;li&gt;
&lt;li&gt;un compteur pour savoir combien de personnes participent à la présentation&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h6 id=&quot;installer-les-dependances-pour-la-partie-serveur&quot;&gt;Installer les dépendances pour la partie serveur&lt;&#x2F;h6&gt;
&lt;p&gt;Allez dans le répertoire de votre présentation, puis tapez la commande :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; npm i
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Si aucune erreur n&#x27;est retournée, le serveur doit pouvoir se lancer avec la commande :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; npm start
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Starting&lt;&#x2F;span&gt;&lt;span&gt; HTTP on port 8000 ; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Starting&lt;&#x2F;span&gt;&lt;span&gt; WebSocket on port 8102
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Speaker&lt;&#x2F;span&gt;&lt;span&gt; code : &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;7a78eb384a5e6a7680ea1a03c1d636656009ea606800f2cfb35fdfaf8d0ae6b65ede373ffc6de27668f5d4b8944834d3&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Speaker&lt;&#x2F;span&gt;&lt;span&gt; URL : http:&#x2F;&#x2F;0.0.0.0:8000&#x2F;?isServer&amp;amp;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;code&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;7a78eb384a5e6a7680ea1a03c1d636656009ea606800f2cfb35fdfaf8d0ae6b65ede373ffc6de27668f5d4b8944834d3
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Attendants&lt;&#x2F;span&gt;&lt;span&gt; URL : http:&#x2F;&#x2F;0.0.0.0:8000&#x2F;
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;2016-10-11T21:33:14.230Z &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[ ]&lt;&#x2F;span&gt;&lt;span&gt; Serving HTTP files on port 8000 ...
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Le serveur nous donne plusieurs éléments :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;le &lt;em&gt;speakerCode&lt;&#x2F;em&gt; est un code que le présentateur doit mettre dans l&#x27;URL de son navigateur afin que le serveur accepte de propager les événements aux autres navigateurs&lt;&#x2F;li&gt;
&lt;li&gt;l&#x27;URL à utiliser par le présentateur (elle reprend le speakerCode ainsi que le numéro de port du serveur HTTP qui se charge de servir votre présentation&lt;&#x2F;li&gt;
&lt;li&gt;l&#x27;URL à communiquer à votre auditoire&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Le serveur propose plusieurs options pour réutiliser un speakerCode, changer les numéros de ports, l&#x27;interface sur laquelle seront bindés les serveurs etc :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span&gt;% npm start -- --help
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Usage:&lt;&#x2F;span&gt;&lt;span&gt; web-slideshow-sync-server &lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[&lt;&#x2F;span&gt;&lt;span&gt;options&lt;&#x2F;span&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;]
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Options:
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-h, --help&lt;&#x2F;span&gt;&lt;span&gt;              output usage information
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-w, --wsport &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;n&amp;gt;        set WebSocket port (defaults : 8102)
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-p, --httpport &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;n&amp;gt;      set HTTP Web server port (defaults: 8000)
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-i, --ifacebinding &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;s&amp;gt;  set Interface on which listening (defaults : 0.0.0.0)
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-c, --code &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;s&amp;gt;          set Speaker code (defaults : randomly generated)
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;-n, --nohttp&lt;&#x2F;span&gt;&lt;span&gt;            disable HTTP server, websocket is the only server that will start
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ce logiciel Libre est placé sous license GPLv3 et disponible ici : &lt;a href=&quot;https:&#x2F;&#x2F;git.legeox.net&#x2F;capslock&#x2F;web-slideshow-sync&quot;&gt;https:&#x2F;&#x2F;git.legeox.net&#x2F;capslock&#x2F;web-slideshow-sync&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;En espérant que ça vous soit utile :)&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Partager un scanner en réseau</title>
          <pubDate>Mon, 10 Oct 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-10-10-partager-un-scanner-en-reseau/</link>
          <guid>https://blog.cloudfrancois.fr/2016-10-10-partager-un-scanner-en-reseau/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-10-10-partager-un-scanner-en-reseau/">&lt;p&gt;Je numérise tous les documents que je reçois, c&#x27;est pratique pour le mettre dans mon cloud personnel hébergé chez moi.&lt;&#x2F;p&gt;
&lt;p&gt;Comme cette tâche est fastidieuse et que mon espace de vie n&#x27;autorise pas d&#x27;avoir un scanner toujours à coté de mon laptop, j&#x27;ai décidé de le partager sur le réseau local pour pouvoir y accéder facilement.&lt;&#x2F;p&gt;
&lt;p&gt;Voici donc les étapes à suivre pour réaliser ce partage de scanner en réseau. Seuls des logiciels Libres sont utilisés ici. Vous utiliser un Windows ou un MAC ? : TL;DR; passez votre chemin c&#x27;est pas traité dans l&#x27;article.&lt;&#x2F;p&gt;
&lt;p&gt;Voici le matériel utilisé :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;un petit ordinateur (raspberrypi par exemple)&lt;&#x2F;li&gt;
&lt;li&gt;un scanner usb&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;En parlant petit ordinateur, vivement qu&#x27;on puisse avoir un raspi zero avec un chip wifi intégré, ca évitera l&#x27;effet pieuvre de l&#x27;actuel :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-10-10-partager-un-scanner-en-reseau&#x2F;20161010_0051-min.jpg&quot; alt=&quot;RaspberryPi Zero et scanner&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Le Hub USB est là uniquement pour deux choses : avoir une alimentation suffisante pour l&#x27;ensemble et pour pouvoir avoir simultanément du Wifi via un dongle USB et le scanner.&lt;&#x2F;p&gt;
&lt;p&gt;Coté logiciel on utilise la librairie Sane (Scanner Access Now Easy; c&#x27;est pas juste un titre marketoaccrocheur : si le partage d&#x27;imprimante en réseau était aussi simple que c&#x27;est le cas avec les scanners, l&#x27;humanité serait plus belle :))&lt;&#x2F;p&gt;
&lt;p&gt;Passons à la mise en pratique.&lt;&#x2F;p&gt;
&lt;h6 id=&quot;sur-notre-petit-ordinateur&quot;&gt;Sur notre petit ordinateur&lt;&#x2F;h6&gt;
&lt;p&gt;Sur notre petit ordinateur, on va installer les logiciels suivants :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;libsane : backends sane&lt;&#x2F;li&gt;
&lt;li&gt;sane-utils : daemon sane, commande scanimage entre autres&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo apt install libsane sane-utils
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite, on branche le scanner et on part à sa recherche avec la commande scanimage pour vérifier que libsane dispose du backend adéquat :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; scanimage&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -L
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;device &lt;&#x2F;span&gt;&lt;span&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;genesys:libusb:001:006&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; is a Canon LiDE 110 flatbed scanner
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Notre scanner est reconnu, on remarque que le backend utilisé est &quot;genesys&quot;, qu&#x27;il est branché en USB, sur le bus 1, port 6 et que c&#x27;est un &quot;&amp;lt; vous savez lire &amp;gt; scanner&quot; :)&lt;&#x2F;p&gt;
&lt;p&gt;Dernière configuration nécessaire sur notre petit ordinateur : indiquer quelles machines seront autorisées à utiliser nos scanners sur le réseau.&lt;&#x2F;p&gt;
&lt;p&gt;Pour faire ça, on va éditer le fichier &lt;strong&gt;&#x2F;etc&#x2F;sane.d&#x2F;saned.conf&lt;&#x2F;strong&gt; pour ajouter la liste des machines autorisées, ou, si on veut pas trop se prendre le choux, l&#x27;ensemble du réseau local.&lt;&#x2F;p&gt;
&lt;p&gt;Dans mon cas, j&#x27;ai ajouté la ligne suivante au fichier :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;192.168.1.0&#x2F;24&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Autorisant ainsi toutes les machines de mon réseau 192.168.1.X à accéder au scanner.&lt;&#x2F;p&gt;
&lt;p&gt;Après avoir sauvegardé ce fichier, on va indiquer au daemon sane qu&#x27;il doit être actif en éditant le fichier &lt;strong&gt;&#x2F;etc&#x2F;default&#x2F;saned&lt;&#x2F;strong&gt;, en passant la variable &lt;strong&gt;RUN&lt;&#x2F;strong&gt; à &lt;strong&gt;yes&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; cat &#x2F;etc&#x2F;default&#x2F;saned
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;RUN&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;yes
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;RUN_AS_USER&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;saned
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite, indiquer à systemd d&#x27;activer une socket pour saned :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo systemctl enable saned.socket
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Puis on la démarre :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo systemctl start saned.socket
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On prendra soin de relever l&#x27;adresse IP de cet ordinateur :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; ip a s dev eth0
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;2:&lt;&#x2F;span&gt;&lt;span&gt; eth0: &amp;lt;BROADCAST,MULTICAST,UP,LOWER_UP&amp;gt; mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;link&#x2F;ether&lt;&#x2F;span&gt;&lt;span&gt; ad:3f:12:42:42:42 brd ff:ff:ff:ff:ff:ff
&lt;&#x2F;span&gt;&lt;span&gt;    &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;inet&lt;&#x2F;span&gt;&lt;span&gt; 192.168.1.12&#x2F;24 brd 192.168.1.255 scope global eth0
&lt;&#x2F;span&gt;&lt;span&gt;       &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;valid_lft&lt;&#x2F;span&gt;&lt;span&gt; forever preferred_lft forever
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Soit &quot;192.168.1.12&quot; ici.&lt;&#x2F;p&gt;
&lt;p&gt;Si vous utilisez un parefeu, et vous devriez, on doit ajouter la règle suivante (adaptez les valeurs à votre setup) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo iptables&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -A&lt;&#x2F;span&gt;&lt;span&gt; INPUT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span&gt; 192.168.1.0&#x2F;24&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span&gt; tcp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --dport&lt;&#x2F;span&gt;&lt;span&gt; 6566&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -j&lt;&#x2F;span&gt;&lt;span&gt; ACCEPT
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;h6 id=&quot;sur-chaque-ordinateur-devant-acceder-au-scanner&quot;&gt;Sur chaque ordinateur devant accéder au scanner&lt;&#x2F;h6&gt;
&lt;p&gt;On installe nos outils classiques pour scanner un document :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;libsane : backends sane (le backend net est celui qui nous intéresse ici)&lt;&#x2F;li&gt;
&lt;li&gt;sane-utils : daemon sane, commande scanimage entre autres&lt;&#x2F;li&gt;
&lt;li&gt;simple-scan : une belle interface graphique qui permet de faire du scan simplement (c&#x27;est celui par défaut sous ubuntu notamment)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Maintenant, configurons le backend &quot;net&quot;, qui permet d&#x27;accéder à un scanner depuis le réseau. Ouvrir le fichier &#x2F;etc&#x2F;sane.d&#x2F;net.conf, ajouter l&#x27;adresse IP du petit ordinateur :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; cat &#x2F;etc&#x2F;sane.d&#x2F;net.conf
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;192.168.1.12
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Vérifions que notre ordinateur client détecte bien le scanner partagé sur le réseau :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; scanimage&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -L
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;device &lt;&#x2F;span&gt;&lt;span&gt;`&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;net:192.168.1.12:genesys:libusb:001:006&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt; is a Canon LiDE 110 flatbed scanner
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Voila, notre scanner est prêt à l&#x27;emploi ❤&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>L&#x27;Internet Libre c&#x27;est pas fourni, ça se fabrique</title>
          <pubDate>Mon, 12 Sep 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-09-12-linternet-libre-cest-pas-fourni/</link>
          <guid>https://blog.cloudfrancois.fr/2016-09-12-linternet-libre-cest-pas-fourni/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-09-12-linternet-libre-cest-pas-fourni/">&lt;p&gt;Je suis membre de deux fournisseurs d&#x27;accès à Internet, au sein de la &lt;a href=&quot;https:&#x2F;&#x2F;www.ffdn.org&#x2F;&quot;&gt;fédération FDN&lt;&#x2F;a&gt; : &lt;a href=&quot;https:&#x2F;&#x2F;www.fdn.fr&#x2F;&quot;&gt;FDN&lt;&#x2F;a&gt; et &lt;a href=&quot;https:&#x2F;&#x2F;www.faimaison.net&quot;&gt;FAImaison&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Je vais vous parler de ce second FAI et (Fournisseur d&#x27;Accès à Internet) et de ses membres.&lt;&#x2F;p&gt;
&lt;p&gt;Nous sommes 94 membres à l&#x27;heure où ce post est écrit et il y a 38 abonnés (ADSL, Wifi, etc).&lt;&#x2F;p&gt;
&lt;p&gt;Jusque là tout va bien : on a abattu un bon gros boulot en s&#x27;&lt;a href=&quot;https:&#x2F;&#x2F;www.faimaison.net&#x2F;actualites&#x2F;installation-datacenter-host-reze.html&quot;&gt;installant dans un Datacenter&lt;&#x2F;a&gt;, on passe de bons moments que ce soit en réunions, en soirées, autour d&#x27;un barbecue, d&#x27;une bière, les fesses dans un canoë prêté très gentiment par certains membres (si si).&lt;&#x2F;p&gt;
&lt;p&gt;Bref c&#x27;est cool de s&#x27;investir dans ce genre d&#x27;associations.&lt;&#x2F;p&gt;
&lt;p&gt;Il y a quand même un hic.&lt;&#x2F;p&gt;
&lt;p&gt;Ce n&#x27;est pas nouveau, mais c&#x27;est pénible et assez décourageant.&lt;&#x2F;p&gt;
&lt;p&gt;Nous sommes toujours le même nombre de bénévoles à faire avancer le bateau. Notre taux de recrutement de membres actif est d&#x27;environ 1 par an max... et encore des actifs s&#x27;en vont.&lt;&#x2F;p&gt;
&lt;p&gt;Nous sommes toujours aussi nombreux à piocher le charbon alors qu&#x27;il y en a de plus en plus qui veulent monter dans la locomotive sans pour autant aider à ce qu&#x27;elle n&#x27;avance.&lt;&#x2F;p&gt;
&lt;p&gt;Nous serions 50 à bosser, ce serait plus facile pour chacun d&#x27;entre-nous. Mais au final on est toujours aux alentours de la dizaine. Et sur les épaules de ces trop peu nombreux membres repose tout le poids de ceux qui &lt;strong&gt;consomment&lt;&#x2F;strong&gt; le service.&lt;&#x2F;p&gt;
&lt;p&gt;Pourquoi écrire ce billet tout à coup alors que c&#x27;est pas neuf ? Parce qu&#x27;en deux jour j&#x27;ai eu deux impatients.&lt;&#x2F;p&gt;
&lt;p&gt;Un premier qui trouvait scandaleux qu&#x27;on mette plus de 24h pour virer son adresse d&#x27;une mailing list.&lt;&#x2F;p&gt;
&lt;p&gt;Le second parce qu&#x27;il est en rade d&#x27;adsl depuis plus de 3 jours et qu&#x27;il commence à trouver le temps long (on le comprend, paix sur toi cher adhérent).&lt;&#x2F;p&gt;
&lt;p&gt;Je ne vais pas lui jeter la pierre à celui-là, moi aussi j&#x27;ai besoin que ça fonctionne quand je suis chez moi.&lt;&#x2F;p&gt;
&lt;p&gt;Par contre pour le second... Oui 24h pour désinscrire un email d&#x27;une liste c&#x27;est long, on en a conscience et c&#x27;est justement pour ça qu&#x27;on compte remplacer prochainement notre valeureux outil de mailing-list, qui a très bien fait son job jusque là, pour en utiliser un où les gens seraient autonomes.&lt;&#x2F;p&gt;
&lt;p&gt;Oui mais pour amener à bien ce genre de projet, il faut du temps. Du temps de gens qui savent faire. Il faut un niveau d&#x27;expertise certain pour réaliser ces projets : ce n&#x27;est pas accessible tout de suite à tout le monde. On ne va pas demander au premier venu d&#x27;aller manger du BGP. Ni d&#x27;aller réfléchir à une nouvelle architecture ou encore à étendre notre infra.&lt;&#x2F;p&gt;
&lt;p&gt;Par contre le premier venu peut très bien dépanner son prochain. C&#x27;est possible et c&#x27;est même &lt;a href=&quot;https:&#x2F;&#x2F;wiki.faimaison.net&#x2F;doku.php?id=depannage_adsl&quot;&gt;documenté&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Si on ne sait pas lire, on s&#x27;en sort même par empirisme, au pire les copains &quot;sachant&quot; ne sont pas très loin (c&#x27;est du FAI local hein) et ils sont même parfois gentils.&lt;&#x2F;p&gt;
&lt;p&gt;Proposer de la VM avec de la  Haute disponibilité pour le FAI lui-même mais aussi pour ses membres, proposer du vpn backé sur du radius+ldap+SI c&#x27;est pas magique ça prend du temps et c&#x27;est pas facile.&lt;&#x2F;p&gt;
&lt;p&gt;En tant que membres, vous devriez songer à aider ces pauvres bénévoles qui doivent se mettre sur ce genre de chantiers en leur portant secours et bienveillance d&#x27;autant plus quand un des nôtres est en rade.&lt;&#x2F;p&gt;
&lt;p&gt;Aller aider le prochain avec son soucis de connectivité c&#x27;est aussi aider à ce que les projets de fond puissent avancer.&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est l&#x27;histoire d&#x27;un bout de soirée avec un adhérent qui ne manquera pas de vous accueillir avec café&#x2F;thé&#x2F;bière ou autre.&lt;&#x2F;p&gt;
&lt;p&gt;Dépanner son prochain c&#x27;est aussi s&#x27;assurer qu&#x27;on ne sera pas tout seul dans le noir le jour où ça nous arrivera :solidarité, entraide.&lt;&#x2F;p&gt;
&lt;p&gt;Autre solution, rester égoïstement dans notre canap&#x27;, laisser les autres s&#x27;essouffler à tenter de sauver le monde.&lt;&#x2F;p&gt;
&lt;p&gt;Qu&#x27;est ce qui amène à ce genre de situation ? Comment s&#x27;en sortir ?&lt;&#x2F;p&gt;
&lt;p&gt;Peut être devrions-nous arrêter de parler de fourniture d&#x27;accès à Internet.&lt;&#x2F;p&gt;
&lt;p&gt;Nous ne fournissons pas de l&#x27;Internet, on le fabrique, on se donne accès à Internet.&lt;&#x2F;p&gt;
&lt;p&gt;Oui, ça pue la sueur. Mais derrière cette sueur, il y a la liberté, le respect de nos vies privées.&lt;&#x2F;p&gt;
&lt;p&gt;Vous abandonner à l&#x27;inaction en espérant que le truc tombe en marche, c&#x27;est pas la bonne idée. Par contre venir nous soutenir, même si ce n&#x27;est qu&#x27;en nous prodiguant des câlins, en nous offrant de gentilles attentions, .... ce serait un déjà un début. Ça ne ferait pas avancer directement les choses, mais ça y contribuerait, on se sentirait moins seuls.&lt;&#x2F;p&gt;
&lt;p&gt;Peut être qu&#x27;on devrait reconnaître l&#x27;investissement de chacun par l&#x27;intermédiaire de quelque artifice (goodies accessibles uniquement à ceux qui se bougent, augmenter le prix d&#x27;adhésion pour ceux qui n&#x27;en foutent pas une, ...)&lt;&#x2F;p&gt;
&lt;p&gt;Je vais probablement devoir annuler une soirée pour aller dépanner l&#x27;adhérent en mal de connexion. Une énième soirée qui va passer à la trappe. J&#x27;ai du mal à croire que parmi ces 94 adhérents il n&#x27;y en ait aucun avec un peu de temps libre ce soir là.&lt;&#x2F;p&gt;
&lt;p&gt;(je mets les questions suivantes à la première personne du singulier, mais vous pouvez le lire avec du &quot;nous&quot; à la place) :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Dois-je arrêter de faire des sacrifices pour tenter que ça marche mieux ?&lt;&#x2F;li&gt;
&lt;li&gt;Dois-je laisser les gens dans la merde pour que ça leur fasse les pieds ?&lt;&#x2F;li&gt;
&lt;li&gt;Dois-je me barrer de cette association et faire des trucs qui marchent ailleurs, avec des gens potentiellement moins égoïstes ?&lt;&#x2F;li&gt;
&lt;li&gt;Dois-je tenir un carnet de bord avec tous les sacrifices que j&#x27;ai concédé de faire pour que ça avance et balancer la liste à la prochaine AG ?&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;FAImaison serait le seul FAI, la seule association, à se poser ce genre de questions, il n&#x27;y aurait pas de problème : ça viendrait probablement de l&#x27;association elle-même.&lt;&#x2F;p&gt;
&lt;p&gt;Nous ne sommes pas les seuls. Ne devrions-nous pas réfléchir à des solutions pour booster l&#x27;engagement de nos membres ?&lt;&#x2F;p&gt;
&lt;p&gt;A défaut de s’entraider au moins aimons-nous, serrons-nous les coudes, c&#x27;est pas parce que le monde a tendance à vouloir s&#x27;autodétruire qu&#x27;on doit contribuer à en faire de même entre nous.&lt;&#x2F;p&gt;
&lt;p&gt;Merci à opi pour son aide à la relecture de ce billet &amp;lt;3&lt;&#x2F;p&gt;
&lt;p&gt;Et vous, avez-vous une idée à tester pour améliorer les choses ? Si vous vous reconnaissez dans le cas du non-contributeur, pourquoi en est-il ainsi selon vous ?&lt;&#x2F;p&gt;
&lt;p&gt;En espérant vous lire dans les commentaires, voici une petite musique du moment :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;youtu.be&#x2F;YsRMoWYGLNA&quot;&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-09-12-linternet-libre-cest-pas-fourni&#x2F;capture-1.png&quot; alt=&quot;The Black Eyed Peas - #WHERESTHELOVE ft. The World&quot; &#x2F;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Monitorer la validité de ses certificats avec support du SNI et nagios</title>
          <pubDate>Wed, 31 Aug 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-08-31-monitorer-la-validite-de-ses-certificats-avec-support-du-sni-et-nagios/</link>
          <guid>https://blog.cloudfrancois.fr/2016-08-31-monitorer-la-validite-de-ses-certificats-avec-support-du-sni-et-nagios/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-08-31-monitorer-la-validite-de-ses-certificats-avec-support-du-sni-et-nagios/">&lt;p&gt;J&#x27;ai trouvé peu d&#x27;informations en ligne concernant la vérification de la validité de certificats TLS via nagios et avec le support du SNI (utilisé quand vous hébergez plusieurs sites Web derrière une même IP et sur un même port exemple : via des vhosts).&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;emploi du module check_http (&lt;code&gt;&#x2F;usr&#x2F;lib&#x2F;nagios&#x2F;plugins&#x2F;check_http&lt;&#x2F;code&gt;), fourni avec nagios, est une des solutions possibles.&lt;&#x2F;p&gt;
&lt;p&gt;On va tout d&#x27;abord créer une nouvelle commande dans &lt;code&gt;&#x2F;etc&#x2F;nagios&#x2F;objects&#x2F;commands.cfg&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;define command{
&lt;&#x2F;span&gt;&lt;span&gt;    command_name check_sni_cert
&lt;&#x2F;span&gt;&lt;span&gt;    command_line &#x2F;usr&#x2F;lib&#x2F;nagios&#x2F;plugins&#x2F;check_http -S \
&lt;&#x2F;span&gt;&lt;span&gt;        -H $ARG3$ -w 5 -c 10 -p $ARG1$ -C $ARG2$ --sni
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Détail des options choisies :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;-H : hostname à tester&lt;&#x2F;li&gt;
&lt;li&gt;-w : temps de réponse à incident en cas d&#x27;avertissement (secondes)&lt;&#x2F;li&gt;
&lt;li&gt;-c : temps de réponse à incident en cas d&#x27;erreur critique (secondes)&lt;&#x2F;li&gt;
&lt;li&gt;-p : numéro de port sur lequel effectuer la connexion&lt;&#x2F;li&gt;
&lt;li&gt;-C : nombre de jours avant l&#x27;expiration du certificat en dessous duquel un avertissement&#x2F;une erreur critique sont levés (format &lt;em&gt;nombreJoursAvantWarning,nombreJoursAvantErreur&lt;&#x2F;em&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;--sni : support du SNI&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;On peut alors utiliser cette nouvelle commande en créant un nouveau service, par exemple dans &lt;code&gt;&#x2F;etc&#x2F;nagios&#x2F;objects&#x2F;localhost.cfg&lt;&#x2F;code&gt; :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;define service{
&lt;&#x2F;span&gt;&lt;span&gt;    use local-service
&lt;&#x2F;span&gt;&lt;span&gt;    host_name localhost
&lt;&#x2F;span&gt;&lt;span&gt;    service_description SSL Cert: www.example.com
&lt;&#x2F;span&gt;&lt;span&gt;    check_command check_sni_cert!443!20,5!www.example.com
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;use&lt;&#x2F;code&gt; : permet de définir, entre autres, l’intervalle entre deux vérifications, l&#x27;intervalle entre une erreur et la vérification que cette erreur est résolue, ... On peut créer un service qui aura des paramètres adaptés à notre use case du moment : par exemple ne faire la vérification que tous les 2 jours.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;host_name&lt;&#x2F;code&gt; : nom d&#x27;hôte sous lequel ce service sera visible&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;service_description&lt;&#x2F;code&gt; : description textuelle du service&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;check_command&lt;&#x2F;code&gt; : la commande à exécuter pour notre test (détaillée ci-dessous)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;&lt;code&gt;check_command&lt;&#x2F;code&gt; fait appel à la commande &lt;code&gt;check_sni_cert&lt;&#x2F;code&gt; que nous avons créé au tout début de cet article.&lt;&#x2F;p&gt;
&lt;p&gt;Les arguments de cette commande sont séparés par un &quot;!&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;Les paramètres de cette commande sont donc :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;443 : connexion effectuée sur le port standard HTTPS&lt;&#x2F;li&gt;
&lt;li&gt;20,5 : déclencher une alerte de niveau critique si le certificat expire sous 5 jours, déclencher une alerte (warning) si le certificat expire sous 20 jours&lt;&#x2F;li&gt;
&lt;li&gt;www.example.com : le vhost qu&#x27;on veut tester&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Python et problèmes d&#x27;encodages différents entre deux systèmes</title>
          <pubDate>Wed, 03 Aug 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-08-03-python-et-problemes-dencodage-different-entre-deux-systemes/</link>
          <guid>https://blog.cloudfrancois.fr/2016-08-03-python-et-problemes-dencodage-different-entre-deux-systemes/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-08-03-python-et-problemes-dencodage-different-entre-deux-systemes/">&lt;p&gt;Vous avez un soucis d&#x27;encoding avec votre programme python mais ce soucis n&#x27;est pas présent sur une autre machine ?&lt;&#x2F;p&gt;
&lt;p&gt;Avant de vous lancer dans des investigations coûteuses ; vous devriez vérifier l&#x27;encoding du terminal dans lequel votre programme est exécuté.&lt;&#x2F;p&gt;
&lt;p&gt;Voici un petit OneLiner pour y arriver :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; python&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -c &lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;import sys; import locale; print(&amp;#39;stdin encoding=%s ; stdout encoding=%s ; file system encoding=%s ; system locale=%s&amp;#39; % (sys.stdin.encoding, sys.stdout.encoding, sys.getfilesystemencoding(), locale.getdefaultlocale()))&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Dont la sortie devrait avoir cette tronche :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;stdin encoding=UTF-8 ; stdout encoding=UTF-8 ; file system encoding=UTF-8 ; system locale=(&amp;#39;fr_FR&amp;#39;, &amp;#39;UTF-8&amp;#39;)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Merci à &lt;a href=&quot;https:&#x2F;&#x2F;gordon.re&#x2F;&quot;&gt;Gordon&lt;&#x2F;a&gt; pour m&#x27;avoir soufflé cette solution, vous pouvez aussi lire le post très intéressant à ce sujet
sur &lt;a href=&quot;http:&#x2F;&#x2F;sametmax.com&#x2F;lencoding-en-python-une-bonne-fois-pour-toute&#x2F;&quot;&gt;Sam&amp;amp;Max&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>J&#x27;ai rien à cacher</title>
          <pubDate>Mon, 01 Aug 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-08-01-jai-rien-a-cacher/</link>
          <guid>https://blog.cloudfrancois.fr/2016-08-01-jai-rien-a-cacher/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-08-01-jai-rien-a-cacher/">&lt;blockquote&gt;
&lt;p&gt;« Dire que vous n’en avez rien à faire de la vie privée parce que vous n’avez rien à cacher, c’est comme dire que vous n’en avez rien à faire de la
liberté d’expression parce que vous n’avez rien à dire ».&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Edward Snowden&lt;&#x2F;p&gt;
&lt;video controls=&quot;&quot;&gt;
&lt;source src=&quot;&#x2F;img&#x2F;2016-08-01-jai-rien-a-cache&#x2F;edward-snowden-privacy.webm&quot; type=&quot;video&#x2F;webm&quot;&gt;
Your browser does not support the video tag.
&lt;&#x2F;video&gt;
</description>
      </item>
      <item>
          <title>Windows et les devs : pas sûr que ce soit une grande idée</title>
          <pubDate>Mon, 01 Aug 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-08-01-windows-et-les-devs-pas-sur-que-ce-soit-une-grande-idee/</link>
          <guid>https://blog.cloudfrancois.fr/2016-08-01-windows-et-les-devs-pas-sur-que-ce-soit-une-grande-idee/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-08-01-windows-et-les-devs-pas-sur-que-ce-soit-une-grande-idee/">&lt;p&gt;Il y a de ça presque un mois, je tweetait les photos suivantes :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;MAGNIFIQUE la borne de parking avec vnc, écran tactile et phpMyAdmin... &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;hashtag&#x2F;internetOfShit?src=hash&quot;&gt;#internetOfShit&lt;&#x2F;a&gt;&lt;a href=&quot;https:&#x2F;&#x2F;t.co&#x2F;RZpHAe6PZ8&quot;&gt;pic.twitter.com&#x2F;RZpHAe6PZ8&lt;&#x2F;a&gt;
— CapsLock (@LeCapsLock) &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;LeCapsLock&#x2F;status&#x2F;751133404704468992&quot;&gt;7 juillet 2016&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-08-01-windows-et-les-devs-pas-sur-que-ce-soit-une-grande-idee&#x2F;CmyP2RWWYAAYdh_-min.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-08-01-windows-et-les-devs-pas-sur-que-ce-soit-une-grande-idee&#x2F;CmyP1OdXgAAwCl5-min.jpg&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Oui il s&#x27;agit bien d&#x27;une borne d&#x27;entrée sur un parking avec deux-trois trucs de rien du tout qui sautent au yeux :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;un phpMyAdmin (donc une interface pour gérer ses bases de données)&lt;&#x2F;li&gt;
&lt;li&gt;un écran tactile&lt;&#x2F;li&gt;
&lt;li&gt;vraissemblablement un VNC &#x2F; whatever autre système de prise de main à distance&lt;&#x2F;li&gt;
&lt;li&gt;à priori un vieux windows xp si ce n&#x27;est plus vieux&lt;&#x2F;li&gt;
&lt;li&gt;un navigateur Web Opera qui se révèlera être outdated :&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;LeCapsLock&quot;&gt;@LeCapsLock&lt;&#x2F;a&gt; Sur une vieille version d&#x27;Opera qui tourne encore sous Presto xD
— TroniQ89 (@TroniQ89) &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;TroniQ89&#x2F;status&#x2F;755374820267786240&quot;&gt;July 19, 2016&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Il était donc possible d&#x27;utiliser le phpMyAdmin avec mes petits doigts potelés, d&#x27;aller consulter la base client, les données bancaires etc... A l&#x27;heure du cloud souverain™ de mes deux, de l&#x27;invocation du &lt;em&gt;darkweb&lt;&#x2F;em&gt; pour la moindre chose normale qu&#x27;on peut faire sur Internet, ça fait du lourd, &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=i2hvlGbbBgY&quot;&gt;on en a gros&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Outre le fait que n&#x27;importe quel utilisateur pouvait dumper toute la base, que les softs soient vieux, il y a quand même un point majeur qui m&#x27;a fait tiquer dans cette histoire.&lt;&#x2F;p&gt;
&lt;p&gt;Et puis j&#x27;ai un peu analysé, cherché à comprendre comment on peut en arriver à de telles cauchemars type &lt;a href=&quot;https:&#x2F;&#x2F;twitter.com&#x2F;internetofshit&quot;&gt;Internet Of Shit&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;J&#x27;en suis arrivé à la conclusion que nos chers amis devs n&#x27;auraient probablement eu un tel fail s&#x27;ils avaient utilisé autre chose que Windows.&lt;&#x2F;p&gt;
&lt;p&gt;Je m&#x27;explique : sous Windows quand tu penses contrôle à distance, tu vas nécessairement te pencher en tout premier lieu sur des solutions graphiques à la vnc &#x2F; teamviewer et autres. Quand ton canal d&#x27;affichage n&#x27;est exposé à aucun public, que la machine n&#x27;a pas d&#x27;écran etc, ... pourquoi pas à la limite : ça passe.&lt;&#x2F;p&gt;
&lt;p&gt;Mais dans le cas présent ton canal d&#x27;affichage il est exposé au public, coco.&lt;&#x2F;p&gt;
&lt;p&gt;T&#x27;aurais été sous n&#x27;importe quel autre système (au hasard GNU&#x2F;Linux) tu aurais d&#x27;abord pensé SSH, tunnel SSH pour attraper ton MySQL et mettre à jour ton soft.&lt;&#x2F;p&gt;
&lt;p&gt;T&#x27;aurais probablement eu zéro interruption de service (puisque tes utilisateurs auraient pû continuer à utiliser ta borne pendant la maintenance), que des avantages que je te dis.&lt;&#x2F;p&gt;
&lt;p&gt;T&#x27;aurais même probablement moins galéré puisque le texte c&#x27;est moins lourd à transférer que l&#x27;image de ton desktop.&lt;&#x2F;p&gt;
&lt;p&gt;Bref, je pense que Windows hors de l&#x27;équation et tu aurais eu, cher dev, la chance de faire des choix moins cons.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Opérations de bases pour rendre nginx moins indiscret</title>
          <pubDate>Sun, 31 Jul 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret/</link>
          <guid>https://blog.cloudfrancois.fr/2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret/">&lt;p&gt;Par défaut, nginx renvoie différentes informations un peu gênantes du point de vue de la sécurité de votre serveur et de ses applications :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Numéro de version de nginx&lt;&#x2F;li&gt;
&lt;li&gt;Le fait que c&#x27;est bien un nginx qui répond&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Dans le cas de certains serveurs applicatifs, d&#x27;autres informations peuvent fuiter entre autres par le biais des entêtes HTTP leakant ainsi des informations non-vitales pour la bonne exécution de votre application mais particulièrement savoureuses pour vos futures amis qui voudront défoncer votre serveur et vos applis.&lt;&#x2F;p&gt;
&lt;p&gt;Voici donc un peu de configuration pour limiter ces effets.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;WARNING&lt;&#x2F;strong&gt; : On précisera que ce que nous faisons ici n&#x27;est pas plus que de cacher la merde sous le tapis. Si votre logiciel contient une faille dans une version donnée, votre logiciel gardera sa faille malgré tous les soins que nous porterons aux configuration ci-dessous. En un mot : mettez vos infras à jour #screugneugneu&lt;&#x2F;p&gt;
&lt;h6 id=&quot;empecher-la-fuite-du-numero-de-version-de-nginx&quot;&gt;Empêcher la fuite du numéro de version de nginx&lt;&#x2F;h6&gt;
&lt;p&gt;Pour cacher le numéro de version de nginx, on ajoute à la clause &lt;strong&gt;http&lt;&#x2F;strong&gt; de votre fichier de configuration de nginx (la plupart du temps &lt;em&gt;&#x2F;etc&#x2F;nginx&#x2F;nginx.config&lt;&#x2F;em&gt;), le paramètre &lt;strong&gt;server_tokens&lt;&#x2F;strong&gt; avec une valeur à &lt;strong&gt;off&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;http {
&lt;&#x2F;span&gt;&lt;span&gt;  [...]
&lt;&#x2F;span&gt;&lt;span&gt;  server_tokens off; # prevent nginx leaking its version
&lt;&#x2F;span&gt;&lt;span&gt;  [...]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite on recharge la configuration :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo systemctl reload nginx
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Pour vérifier que la configuration est bonne, on peut naviguer vers une page qui n&#x27;existe pas sur votre serveur afin d&#x27;obtenir une page d&#x27;erreur 404. Si vous avez la page d&#x27;erreur par défaut de nginx, ça devrait ressembler à ceci :&lt;&#x2F;p&gt;
&lt;p&gt;Avant d&#x27;avoir passé server_tokens à off :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret&#x2F;nginx-404-leak-version.jpg&quot; alt=&quot;nginx before server_tokens off&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Après le passage de server_tokens à off :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret&#x2F;nginx-404-leak-version-off.jpg&quot; alt=&quot;nginx after server_tokens off&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h6 id=&quot;supprimer-l-entete-server&quot;&gt;Supprimer l&#x27;entête Server&lt;&#x2F;h6&gt;
&lt;p&gt;À la réponse des requêtes qu&#x27;il traite, nginx ajoute par défaut l&#x27;entête suivante :&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Server: nginx&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;Pas cool.&lt;&#x2F;p&gt;
&lt;p&gt;Pour empêcher ça, on va devoir ajouter le module &lt;a href=&quot;https:&#x2F;&#x2F;www.nginx.com&#x2F;resources&#x2F;wiki&#x2F;modules&#x2F;headers_more&#x2F;&quot;&gt;headers_more&lt;&#x2F;a&gt;. Sur debian&#x2F;ubuntu, ce module est installé via le paquet &lt;strong&gt;nginx-extras&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;On installe donc ce paquet :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo apt install nginx-extras
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On peut alors ajouter à notre section http de notre fichier &lt;em&gt;&#x2F;etc&#x2F;nginx&#x2F;nginx.conf&lt;&#x2F;em&gt; la clause suivante &lt;strong&gt;more_set_headers&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;http {
&lt;&#x2F;span&gt;&lt;span&gt;  [...]
&lt;&#x2F;span&gt;&lt;span&gt;  more_set_headers &amp;#39;Server: &amp;#39;; # prevent leaking nginx name ; needs nginx-extras
&lt;&#x2F;span&gt;&lt;span&gt;  [...]
&lt;&#x2F;span&gt;&lt;span&gt;  server_tokens off; # prevent nginx leaking its version
&lt;&#x2F;span&gt;&lt;span&gt;  [...]
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite on recharge la configuration :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo systemctl reload nginx
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Pour vérifier que ce changement est pris en compte, on peut utiliser l&#x27;inspecteur du navigateur (souvent accessible via le raccourci clavier &lt;strong&gt;Ctrl+Shift+I&lt;&#x2F;strong&gt;, aller dans l&#x27;inspecteur réseau, puis regarder les entêtes (headers) de réponse.&lt;&#x2F;p&gt;
&lt;p&gt;Avant la modification :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret&#x2F;nginx-server-name-leak.jpg&quot; alt=&quot;nginx before overriding Server header&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Après la modification : cet entête n&#x27;est plus exposé.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Remarque&lt;&#x2F;strong&gt; : l&#x27;information est toujours disponible en consultant des pages renvoyant des erreurs (types 4xx&#x2F;5xx) :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret&#x2F;nginx-404-leak-version-off.jpg&quot; alt=&quot;nginx after server_tokens off and removing server header&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Il conviendra de proposer à vos utilisateur des &lt;a href=&quot;http:&#x2F;&#x2F;nginx.org&#x2F;en&#x2F;docs&#x2F;http&#x2F;ngx_http_core_module.html#error_page&quot;&gt;pages d&#x27;erreur personnalisées&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h6 id=&quot;bloquer-les-entetes-renvoyes-par-nos-serveurs-applicatifs&quot;&gt;Bloquer les entêtes renvoyés par nos serveurs applicatifs&lt;&#x2F;h6&gt;
&lt;p&gt;Venons-en aux serveurs applicatifs qui peuvent être indiscrets. C&#x27;est par exemple le cas des serveurs nodejs basés sur Express.&lt;&#x2F;p&gt;
&lt;p&gt;Par défaut on a un magnifique (ironique hein) entête qui nous dit tout joyeusement &quot;hey coucou je suis une app tournant sous le framework Express !&quot;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret&#x2F;nginx-application-server-header-leak-1.jpg&quot; alt=&quot;express server leaking he&amp;#39;s here&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Nice.&lt;&#x2F;p&gt;
&lt;p&gt;Alors soit vos développeurs codent normalement et suppriment ce vilain entête quand la variable d&#x27;environnement NODE_ENV est à production ; soit ils ne le font pas.&lt;&#x2F;p&gt;
&lt;p&gt;Dans ce dernier cas, en plus de leur coller une bonne paire de baffes, on va réparer leur bêtises en attendant un patch.&lt;&#x2F;p&gt;
&lt;p&gt;Notre nginx est configuré pour faire reverse proxy de noter app nodejs. On peut donc lui demander de nous supprimer l&#x27;entête &lt;strong&gt;X-powered-by&lt;&#x2F;strong&gt;. Pour ce faire, on va utiliser le paramètre &lt;strong&gt;proxy_hide_header&lt;&#x2F;strong&gt; dans notre section &lt;strong&gt;location&lt;&#x2F;strong&gt; :&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;location &#x2F; {
&lt;&#x2F;span&gt;&lt;span&gt;   [...]                     
&lt;&#x2F;span&gt;&lt;span&gt;   proxy_hide_header X-powered-by;
&lt;&#x2F;span&gt;&lt;span&gt;   proxy_pass http:&#x2F;&#x2F;192.168.1.1;
&lt;&#x2F;span&gt;&lt;span&gt;   [...]
&lt;&#x2F;span&gt;&lt;span&gt;}
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite on recharge la configuration :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo systemctl reload nginx
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Cet entête a disparu :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2016-07-31-operations-de-bases-pour-rendre-nginx-moins-indiscret&#x2F;nginx-application-server-header-leak-off.jpg&quot; alt=&quot;express server header has vanished&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Vous pouvez rappeler à vos collègues de vous fêter un joyeux &lt;a href=&quot;http:&#x2F;&#x2F;sysadminday.com&#x2F;&quot;&gt;Adminsys day&lt;&#x2F;a&gt; la prochaine fois &amp;lt;3&lt;&#x2F;p&gt;
&lt;h6 id=&quot;remarque-finale&quot;&gt;Remarque finale&lt;&#x2F;h6&gt;
&lt;ul&gt;
&lt;li&gt;Les entêtes HTTP c&#x27;est important, prenez-en soin.&lt;&#x2F;li&gt;
&lt;li&gt;nginx ou les autres serveurs web (apache &amp;amp;co) : même combat&lt;&#x2F;li&gt;
&lt;li&gt;ne croyez pas pour autant être en sécurité, un petit coup de nmap pourra vous convaincre que nos petits efforts sont bien minces :)&lt;&#x2F;li&gt;
&lt;li&gt;des fois gérer un header ça permet aussi de se protéger de failles de sécu en urgence en attendant que les softs soient patchés, exemple : &lt;a href=&quot;https:&#x2F;&#x2F;httpoxy.org&#x2F;&quot;&gt;HTTPPoxy&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>Iptables : ouvrir un port local et rediriger le trafic sur un autre port local</title>
          <pubDate>Tue, 17 May 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-05-17-iptables-rule-forward-local/</link>
          <guid>https://blog.cloudfrancois.fr/2016-05-17-iptables-rule-forward-local/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-05-17-iptables-rule-forward-local/">&lt;p&gt;Pour transférer le trafic d&#x27;un port à un autre on utilise en général une règle de ce type :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo iptables&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span&gt; nat&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -A&lt;&#x2F;span&gt;&lt;span&gt; PREROUTING&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span&gt; tcp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --dport &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;nouveau port&amp;gt; -j REDIRECT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --to-ports &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;port vers lequel rediriger le trafic&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;exemple :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo iptables&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span&gt; nat&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -A&lt;&#x2F;span&gt;&lt;span&gt; PREROUTING&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span&gt; tcp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --dport&lt;&#x2F;span&gt;&lt;span&gt; 80&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -j&lt;&#x2F;span&gt;&lt;span&gt; REDIRECT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --to-ports&lt;&#x2F;span&gt;&lt;span&gt; 3118
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ça fonctionne bien pour les machines se connectant au nouveau port ainsi créé (80 ici).&lt;&#x2F;p&gt;
&lt;p&gt;Par contre si on essaye de se connecter au port 80 depuis la machine où la règle iptables a été ajoutée, ça ne fonctionne pas (symptome : Connection refused).&lt;&#x2F;p&gt;
&lt;p&gt;La raison est que cette règle, placée sur la chaine POSTROUTING, n&#x27;est pas utilisée lorsque l&#x27;on accède à un port via l&#x27;interface de loopback (lo).&lt;&#x2F;p&gt;
&lt;p&gt;Il faut donc ajouter une règle sur la chaine OUTPUT de l&#x27;interface de loopback :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo iptables&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span&gt; nat&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -A&lt;&#x2F;span&gt;&lt;span&gt; OUTPUT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span&gt; lo&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span&gt; tcp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --dport &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;nouveau port&amp;gt; -j REDIRECT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --to-port &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;port vers lequel rediriger le trafic&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Use case pratico-pratique : je forward via ssh du trafic HTTP sur un port ne nécessitant pas d&#x27;accès privilégié (numéro de port supérieur à 1024) mais mon navigateur reçoit une redirection vers localhost sur un autre port que celui forwardé (par exemple port 80 ; &lt;a href=&quot;http:&#x2F;&#x2F;localhost&#x2F;&quot;&gt;http:&#x2F;&#x2F;localhost&#x2F;&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;Dans ce cas on pourrait utiliser la règle suivante pour rediriger le trafic arrivant sur le port 80 vers le port 3118 (qui écoute déja localement, grâce au tunnel SSH) :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo iptables&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -t&lt;&#x2F;span&gt;&lt;span&gt; nat&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -A&lt;&#x2F;span&gt;&lt;span&gt; OUTPUT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -o&lt;&#x2F;span&gt;&lt;span&gt; lo&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -p&lt;&#x2F;span&gt;&lt;span&gt; tcp&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --dport&lt;&#x2F;span&gt;&lt;span&gt; 80&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -j&lt;&#x2F;span&gt;&lt;span&gt; REDIRECT&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --to-port&lt;&#x2F;span&gt;&lt;span&gt; 3118
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Dans tous les cas nous penserons bien sûr à activer l&#x27;ip forwarding :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;echo&lt;&#x2F;span&gt;&lt;span&gt; 1 &amp;gt; &#x2F;proc&#x2F;sys&#x2F;net&#x2F;ipv4&#x2F;ip_forward
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Pagination avec psql</title>
          <pubDate>Mon, 16 May 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-05-16-psql-pager/</link>
          <guid>https://blog.cloudfrancois.fr/2016-05-16-psql-pager/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-05-16-psql-pager/">&lt;p&gt;Petite astuce, si vous voulez rendre l&#x27;affichage d&#x27;une requête plus lisible via l&#x27;outil en ligne de commande &lt;code&gt;psql&lt;&#x2F;code&gt; lorsque vous avez une grande quantité de données est à afficher :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; export PAGER=less
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; export LESS=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;-iMSx4 -RSFX -e&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; psql
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Et voilà on a un beau pager en utilisant &lt;code&gt;less&lt;&#x2F;code&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Restreindre l&#x27;accès d&#x27;un utilisateur à sshfs uniquement</title>
          <pubDate>Mon, 22 Feb 2016 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2016-02-22-restreindre-acces-utilisateur-sshfs/</link>
          <guid>https://blog.cloudfrancois.fr/2016-02-22-restreindre-acces-utilisateur-sshfs/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2016-02-22-restreindre-acces-utilisateur-sshfs/">&lt;p&gt;Petite astuce rapide pour restreindre l&#x27;accès d&#x27;un utilisateur pour qu&#x27;il puisse faire du sshfs mais pas trop plus.&lt;&#x2F;p&gt;
&lt;p&gt;On considère pour la suite que notre utilisateur se connecte à l&#x27;aide d&#x27;une clé.&lt;&#x2F;p&gt;
&lt;p&gt;On va restreindre son accès à la commande sftp-server :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; cat &#x2F;home&#x2F;&amp;lt;username&amp;gt;&#x2F;.authorized_keys
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;command&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;usr&#x2F;lib&#x2F;openssh&#x2F;sftp-server&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;,no-port-forwarding,no-x11-forwarding,no-agent-forwarding &lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;cypher&amp;gt; &amp;lt;key&amp;gt; &amp;lt;comment&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Remplacer  par le cypher, la clé et le commentaire que vous utilisez habituellement&lt;&#x2F;p&gt;
&lt;p&gt;De plus on peut restreindre le shell de notre utilisateur à cette même commande :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; sudo usermod&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;usr&#x2F;lib&#x2F;openssh&#x2F;sftp-server &amp;lt;username&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>Comparer facilement deux fichiers avec leur représentation hexadécimale</title>
          <pubDate>Wed, 23 Sep 2015 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2015-09-23-comparer-facilement-deux-fichiers-avec-leur-representation-hexadecimale/</link>
          <guid>https://blog.cloudfrancois.fr/2015-09-23-comparer-facilement-deux-fichiers-avec-leur-representation-hexadecimale/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2015-09-23-comparer-facilement-deux-fichiers-avec-leur-representation-hexadecimale/">&lt;p&gt;Des fois on a besoin de comparer deux fichiers, on peut le faire par leur taille, par comparaison de leurs empreintes (&lt;code&gt;hash&lt;&#x2F;code&gt;), mais cela peut ne pas suffir.&lt;&#x2F;p&gt;
&lt;p&gt;Une solution possible : les comparer en observant leurs représentation hexadécimale.&lt;&#x2F;p&gt;
&lt;p&gt;Pour ça on va utiliser deux outils déjà installés sur la plupart des distributions : xxd et vimdiff.&lt;&#x2F;p&gt;
&lt;p&gt;xxd va nous créer la représentation hexadécimale des fichiers et vimdiff va nous aider à comparer ces représentations&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; xxd fichier1 &amp;gt; fichier1.hex
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; xxd fichier2 &amp;gt; fichier2.hex
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite on a plus qu&#x27;à ouvrir fichier1.hex et fichier2.hex dans vimdiff :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;vimdiff&lt;&#x2F;span&gt;&lt;span&gt; fichier1.hex fichier2.hex
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ce qui nous donne un truc comme ça :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2015-09-23-comparer-facilement-deux-fichiers-avec-leur-representation-hexadecimale&#x2F;vimdiff.png&quot; alt=&quot;vimdiff hex&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Bilan du streaming vidéo de la conférence de Jean Marc Manach au Conseil Général de Loire Atlantique</title>
          <pubDate>Wed, 12 Nov 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2014-11-12-bilan-streaming-2014-10-09-manach-2/</link>
          <guid>https://blog.cloudfrancois.fr/2014-11-12-bilan-streaming-2014-10-09-manach-2/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2014-11-12-bilan-streaming-2014-10-09-manach-2/">&lt;p&gt;Le 9 octobre dernier, se tenait la conférence de Jean Marc Manach &quot;&lt;a href=&quot;http:&#x2F;&#x2F;bugbrother.blog.lemonde.fr&#x2F;2010&#x2F;07&#x2F;02&#x2F;la-vie-privee-un-probleme-de-vieux-cons-le-livre&#x2F;&quot;&gt;Vie privée, un problème de vieux cons ?&lt;&#x2F;a&gt;&quot;.&lt;&#x2F;p&gt;
&lt;p&gt;FAImaison s&#x27;est alors proposée pour diffuser en ligne cette conférence puisque nous l&#x27;avions déjà fait pour notre cycle de conférences un peu plus tôt dans l&#x27;année.&lt;&#x2F;p&gt;
&lt;p&gt;Note : l&#x27;enregistrement de cette vidéo est accessible en &lt;a href=&quot;http:&#x2F;&#x2F;media.faimaison.net&#x2F;jm_manach_cdla-vie_privee-20141009.torrent&quot;&gt;torrent&lt;&#x2F;a&gt;, sur &lt;a href=&quot;http:&#x2F;&#x2F;media.faimaison.net&#x2F;jm_manach_cdla-vie_privee-20141009.webm&quot;&gt;media.faimaison.net&lt;&#x2F;a&gt; mais aussi sur &lt;a href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=wWmGNE7NUu8&quot;&gt;youtube&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ce post est un petit retour sur les nouveaux choix techniques pour cette conférence, les contraintes que nous avions et c&#x27;est également pour moi l&#x27;occasion de donner un peu plus d&#x27;informations sur l&#x27;infrastructure que nous utilisons jusqu&#x27;à présent.&lt;&#x2F;p&gt;
&lt;p&gt;À ce retour s&#x27;ajoutent les retours de &lt;a href=&quot;https:&#x2F;&#x2F;faimaison.net&#x2F;actualites&#x2F;retour-conf-manach-9oct2014.html&quot;&gt;FAImaison&lt;&#x2F;a&gt; et du &lt;a href=&quot;http:&#x2F;&#x2F;conseil-developpement.loire-atlantique.fr&#x2F;salle-comble-pour-jean-marc-manach&#x2F;&quot;&gt;Conseil de Développement de Loire Atlantique&lt;&#x2F;a&gt; (CLDA44).&lt;&#x2F;p&gt;
&lt;h1 id=&quot;les-contraintes&quot;&gt;Les contraintes&lt;&#x2F;h1&gt;
&lt;p&gt;Jusque là nous avions déjà une petite série de contraintes que nous nous imposions (liste non-exhaustive) :&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;On doit utiliser des logiciels libres&lt;&#x2F;li&gt;
&lt;li&gt;On doit se passer de tout acteur majeur et centralisant&lt;&#x2F;li&gt;
&lt;li&gt;On doit pouvoir suivre la conférence avec une connexion de 512Kbps&lt;&#x2F;li&gt;
&lt;li&gt;En cas de problème, la diffusion doit reprendre d&#x27;elle même (tant du coté salle, que du coté serveur ou bien du coté client)&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Pour le &lt;strong&gt;premier point&lt;&#x2F;strong&gt;, on a toujours du Icecast, le flux est poussé par de l&#x27;oggfwd après être passé dans un coup de ffmpeg. Il y a une brique maison en plus : le répartiteur de charge (load balancer, abordé plus bas dans ce ce post).&lt;&#x2F;p&gt;
&lt;p&gt;Pour le &lt;strong&gt;second point&lt;&#x2F;strong&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Do_it_yourself&quot;&gt;DIY&lt;&#x2F;a&gt;, on installe tout: de la capture, à la diffusion en passant par la répartition de charge. Il en va de même pour la communication événementielle et le suivi &#x2F; monitoring de l&#x27;ensemble durant l&#x27;événement. Cette fois nous avons fait appel aux membres de la &lt;a href=&quot;http:&#x2F;&#x2F;www.ffdn.org&quot;&gt;FFDN&lt;&#x2F;a&gt; pour disposer d&#x27;un nombre suffisant de machines. Merci aux nombreux bénévoles ayant répondu ! &amp;lt;3 &amp;lt;3 &amp;lt;3&lt;&#x2F;p&gt;
&lt;p&gt;Pour le &lt;strong&gt;troisième point&lt;&#x2F;strong&gt; : on choisit soigneusement les paramètres d&#x27;encodage.&lt;&#x2F;p&gt;
&lt;p&gt;Pour le &lt;strong&gt;quatrième point&lt;&#x2F;strong&gt; on met plusieurs dispositifs en place :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;On s&#x27;appuie sur des listes de lectures: si un serveur de la liste de lecture devient indisponible, le client est censé essayer le suivant&lt;&#x2F;li&gt;
&lt;li&gt;La page Web que l&#x27;on met à disposition utilise un lecteur utilisant les capacités HTML5 (balise video) sur laquelle on a ajouté le support des listes de lecture&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;ensemble des processus de la chaîne se relance automatiquement en cas d&#x27;anomalie&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;L&#x27;utilisation des listes de lecture permet de s&#x27;assurer que la lecture reprend en cas d&#x27;incident. En général on dispose de plusieurs secondes avant que le client n&#x27;ait parcouru toute la liste de lecture et qu&#x27;au final on le &quot;perde&quot;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;l-installation-ce-qui-a-change&quot;&gt;L&#x27;installation : ce qui a changé&lt;&#x2F;h1&gt;
&lt;p&gt;Comme à chaque conférence, c&#x27;est une superbe occasion d&#x27;essayer de nouvelles méthodes ou de nouveaux outils :)&lt;&#x2F;p&gt;
&lt;p&gt;Les choses qui ont changé :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Capture en HD plutôt qu&#x27;en SD&lt;&#x2F;li&gt;
&lt;li&gt;Amélioration du &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;opi&#x2F;m3uStreamPlayer&quot;&gt;lecteur vidéo HTML5&#x2F;js&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Diffusion de plusieurs flux simultanés (vidéo qualité maximale, vidéo qualité réduite, audio uniquement)&lt;&#x2F;li&gt;
&lt;li&gt;Augmentation du nombre de serveurs (on nous a annoncé une probable fréquentation de 4000 clients simultanés; chiffre basé sur le nombre de visite de la page de l&#x27;événement)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pour la partie capture HD on a utilisé un &lt;a href=&quot;http:&#x2F;&#x2F;www.usa.canon.com&#x2F;cusa&#x2F;consumer&#x2F;products&#x2F;cameras&#x2F;slr_cameras&#x2F;eos_7d&quot;&gt;appareil photo numérique&lt;&#x2F;a&gt; et une &lt;a href=&quot;https:&#x2F;&#x2F;www.blackmagicdesign.com&#x2F;products&#x2F;intensity&#x2F;models&quot;&gt;carte d&#x27;acquisition HDMI&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Vu le manque de temps sur le choix d&#x27;outils et qu&#x27;il n&#x27;était pas possible de contrôler le cadrage de la vidéo en direct (l&#x27;écran de l&#x27;appareil photo s&#x27;éteignant quand un câble HDMI y est connecté), un écran a été branché sur la carte d&#x27;acquisition:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;20141009-_MG_0732-scaled.jpg&quot; alt=&quot;Photo du setup 7D+Blackmagic Intensity pro+écran HD+laptop+mallette&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Schématiquement parlant, ça donne ceci :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;diagram-archi-acquisition-video.svg&quot; alt=&quot;diagramme archi aquisition vidéo&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Vu depuis le bas de l&#x27;amphi, l&#x27;installation ressemblait à ça :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;20141009-_MG_0761-real-blur-crop.jpg&quot; alt=&quot;Photo de la salle source:&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;taux-de-frequentation&quot;&gt;Taux de fréquentation&lt;&#x2F;h1&gt;
&lt;p&gt;Nous avons eu un pic de 180 clients simultanés. Bien loin de la capacité d&#x27;accueil de 4000 connexion que nous avions prévu. Cela dit vu le sujet traité et le fait que la diffusion avait lieu en pleine journée, ce n&#x27;est probablement pas si étonnant. En conséquence nous n&#x27;avons pas pu vérifier que ca tenait le volume prévu même si il n&#x27;y a aucune raison théorique pour que ça ne tienne pas.&lt;&#x2F;p&gt;
&lt;p&gt;Une autre explication qu&#x27;on devine : les codecs utilisés excluaient certains utilisateurs de-facto (on a utilisé de l&#x27;ogg theora puisque c&#x27;est ce que supporte Icecast pour le moment). Ainsi les utilisateurs d&#x27;Internet Explorer ou de Safari devaient passer par un lecteur vidéo tiers en utilisant l&#x27;URL du flux donné sous le lecteur Vidéo intégré à la page dont nous avions communiqué l&#x27;adresse.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;screenshot-webpage-web-player.jpg&quot; alt=&quot;Page web avec lecteur intégré&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;h1 id=&quot;comment-ca-fonctionne&quot;&gt;Comment ça fonctionne ?&lt;&#x2F;h1&gt;
&lt;p&gt;Allez c&#x27;est parti, expliquons le fonctionnement de cette infrastructure de streaming !&lt;&#x2F;p&gt;
&lt;p&gt;Pour commencer, prenons un cas simple: une source vidéo, un serveur de diffusion, des clients.&lt;&#x2F;p&gt;
&lt;p&gt;On va faire ça en allant de la salle où a lieu la captation jusqu&#x27;au client qui visionne la vidéo diffusée.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;diagram-archi-vue-globale.svg&quot; alt=&quot;Architecture: vue globale&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Le principe général est simple: on prend un contenu (une capture en direct d&#x27;un événement, un fichier déjà existant, ...), on l&#x27;encode dans un format suffisamment léger pour être diffusé en ligne puis on pousse ce contenu encodé sur un serveur de diffusion; serveur auprès duquel les clients peuvent récupérer ce contenu.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;encodage a lieu sur le lieu de captation, le serveur de diffusion est quelque part sur Internet derrière une bonne connexion (oubliez l&#x27;ADSL). Le lieu où se déroule l&#x27;événement n&#x27;a pas besoin d&#x27;avoir une connexion si énorme que ça puisqu&#x27;un seul flux doit être envoyé au serveur de diffusion (en général une connexion ADSL suffit). C&#x27;est au niveau du serveur de diffusion que le besoin en bande passante (montante) est le plus élevé.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;dans-la-salle&quot;&gt;Dans la salle&lt;&#x2F;h2&gt;
&lt;p&gt;Partons de l&#x27;hypothèse que l&#x27;on veut diffuser en direct une captation d&#x27;un événement (on pourrait diffuser un fichier vidéo existant bien sûr).&lt;&#x2F;p&gt;
&lt;p&gt;Note : L&#x27;accès à la salle quelques jours avant la diffusion est un plus pour se rassurer et voir ce qu&#x27;il y a de disponible sur place en terme d&#x27;accès à une source d&#x27;électricité, à la connexion au réseau, ...&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;epitech-salle.jpg&quot; alt=&quot;Epitech : essais&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Pour une installation minimale pour diffuser un événement, on a besoin :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;D&#x27;électricité :)&lt;&#x2F;li&gt;
&lt;li&gt;D&#x27;une connexion à Internet :)&lt;&#x2F;li&gt;
&lt;li&gt;D&#x27;une caméra&lt;&#x2F;li&gt;
&lt;li&gt;D&#x27;un ordinateur capable de lire le flux de la caméra et de faire l&#x27;encodage de celui-ci&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;À cette liste j&#x27;ajouterais quand même à ce minimum un micro.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;captation-audio&quot;&gt;Captation audio&lt;&#x2F;h3&gt;
&lt;p&gt;Pour la captation audio, on prend de préférence un micro à proximité de l&#x27;intervenant. Il n&#x27;y a rien de plus pénible que de suivre une conférence en entendant un bruit de fond (celui émis par le public en général) en plus de la voix de l&#x27;intervenant.&lt;&#x2F;p&gt;
&lt;p&gt;On évitera également l&#x27;utilisation de micro d&#x27;ambiance (exemple de micro d&#x27;ambiance: le micro intégré à la caméra ou au PC).&lt;&#x2F;p&gt;
&lt;p&gt;On privilégie un micro à main, un micro cravate, un micro de table&#x2F;pupitre. Si la diffusion a lieu depuis une salle équipée d&#x27;une sonorisation, il y a de bonnes chances de pouvoir accéder à une sortie audio propre et mixée (il faut alors prendre contact avec les gérants et techniciens du lieu). Dans ce dernier cas c&#x27;est souvent du gâteau; la seule inconnue restant la connectique mise à disposition pour récupérer le flux audio.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;mix-3.jpg&quot; alt=&quot;New ways to get naked by  Daniela Vladimirova on flickr, CC-BY; XLR inputs by  flattop341 on flickr, CC-BY; Yamaha AV Receiver&#x2F;Amplifier Back Panel for RCA Jack, TOSLINK S&#x2F;PDIF, Cinch, RCA and Speaker Connector Cable Plugs&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Il faudra donc prévoir plusieurs combinaisons de câbles et d&#x27;adapteurs pour être sûr de pouvoir se raccoder à peu près n&#x27;importe quelle installation de sonorisation. Le plus souvent c&#x27;est du XLR, du jack 6mm, ou 3.5mm, plus rarement du RCA. Avoir un micro de secours est tout aussi intéressant.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;enfer_cables.jpg&quot; alt=&quot;Gavin Schaefer on flickr, CC-BY&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Maintenant que nous avons notre entrée son, on va parler un peu des caméras.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;captation-video&quot;&gt;Captation vidéo&lt;&#x2F;h3&gt;
&lt;p&gt;Choisir sa caméra c&#x27;est pas forcément si simple. Ci-dessous, une liste de points de vigilance qu&#x27;il est intéressant de garder à l&#x27;esprit :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;La caméra ne doit pas être sur batteries (c&#x27;est un ennui de moins)&lt;&#x2F;li&gt;
&lt;li&gt;Elle doit disposer de la résolution adaptée à l&#x27;exigence de qualité&lt;&#x2F;li&gt;
&lt;li&gt;L&#x27;image de la caméra doit être récupérable en direct sur un ordinateur (captation en direct; une caméra qui ne sait qu&#x27;enregistrer sur un support de stockage sans exporter l&#x27;image qu&#x27;elle capte en direct n&#x27;est pas intéressante)&lt;&#x2F;li&gt;
&lt;li&gt;Fonctionner sur votre système d&#x27;exploitation et compatible avec vos logiciels (drivers &#x2F; modules disponibles, ...)&lt;&#x2F;li&gt;
&lt;li&gt;La caméra doit être adaptée à vos conditions d&#x27;éclairage&lt;&#x2F;li&gt;
&lt;li&gt;Le nombre d&#x27;images par secondes doit rester stable quelque soit la luminosité&lt;&#x2F;li&gt;
&lt;li&gt;Aucun affichage en sur-impression (overlay) ne doit être ajouté à l&#x27;image&lt;&#x2F;li&gt;
&lt;li&gt;Si la caméra a un autofocus, il est intéressant qu&#x27;il soit débrayable&lt;&#x2F;li&gt;
&lt;li&gt;Si la caméra a un zoom, c&#x27;est mieux&lt;&#x2F;li&gt;
&lt;li&gt;Si la caméra dispose d&#x27;une vis pour un trépied photo&#x2F;vidéo, c&#x27;est mieux&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;On trouve 3 types de caméras principalement :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Les Webcams&lt;&#x2F;li&gt;
&lt;li&gt;Les appareils photo&lt;&#x2F;li&gt;
&lt;li&gt;Les camescopes&#x2F;caméras dédiées&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pour faire des tests une Webcam suffit.&lt;&#x2F;p&gt;
&lt;p&gt;Par contre, pour assurer la diffusion d&#x27;un événement, c&#x27;est un peu moins sûr : une Webcam peut faire l&#x27;affaire mais c&#x27;est pas toujours la panacée.&lt;&#x2F;p&gt;
&lt;p&gt;On pense par exemple à certaines caméra dont le débit d&#x27;image à la seconde (i&#x2F;s, fps) varie selon la luminosité du lieu (ces caméras jouent sur la durée d&#x27;exposition pour afficher une image plus claire dans des conditions sombres), c&#x27;est le cas de la &lt;a href=&quot;http:&#x2F;&#x2F;www.microsoft.com&#x2F;hardware&#x2F;en-us&#x2F;d&#x2F;lifecam-hd-5000&quot;&gt;HD5000&lt;&#x2F;a&gt; par exemple. Dans un cas comme celui-ci, quand on fait l&#x27;encodage on peut se retrouver avec un décalage son &#x2F; image.&lt;&#x2F;p&gt;
&lt;p&gt;Les Webcams sont pas toutes bonnes pour capter dans les conditions de votre événement: s&#x27;il celui-ci a lieu en environnement sombre ou à l&#x27;extérieur c&#x27;est pas la même histoire.&lt;&#x2F;p&gt;
&lt;p&gt;De la même façon, une Webcam est en général moins pratique à manipuler pour cadrer et zoomer pendant la diffusion.&lt;&#x2F;p&gt;
&lt;p&gt;Leur principal intérêt est le prix faible pour se lancer : il n&#x27;y a pas besoin d&#x27;ajouter de carte d&#x27;acquisition pour récupérer l&#x27;image d&#x27;une Webcam.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;webcams.jpg&quot; alt=&quot;Webcams, computer mall, Shenzhen, China.JPG by  Cory Doctorow from flickr; CC-BY-SA&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Idéalement on évitera les Webcams.&lt;&#x2F;p&gt;
&lt;p&gt;Il peut être tentant de faire la captation avec un appareil photo doté d&#x27;un mode vidéo.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;reflex.jpg&quot; alt=&quot;Sheke1&amp;#39;s New 7D by  John Ryan from flickr; CC-BY-NC&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Si vous avez la chance d&#x27;avoir un modèle qui s&#x27;alimente par bloc secteur, qu&#x27;il n&#x27;affiche pas en surimpression (overlay) d&#x27;information à l&#x27;image (chez Canon le firmware alternatif &lt;a href=&quot;http:&#x2F;&#x2F;www.magiclantern.fm&#x2F;&quot;&gt;Magic Lantern&lt;&#x2F;a&gt; ajoute cette option) et qu&#x27;il dispose d&#x27;une sortie USB (mode Webcam finalement) ou HDMI, ca peut être une bonne idée.&lt;&#x2F;p&gt;
&lt;p&gt;Comme dit plus haut, ne pas hésiter à se monter un labo et à éprouver le matériel: si l&#x27;événement dure 4h, ne pas hésiter à tester votre installation pendant au moins 4h. C&#x27;est durant une phase de test de ce type que j&#x27;ai remarqué les 2 mesures anti-piratage de films intégrée à mon reflex. Les deux mesures se déclenchent sur des périodes de temps régulières mais différentes. La première toute les ~25 minutes : le miroir se baisse et remonte : on perd l&#x27;affichage quelques instants. La seconde est plus gênante : au bout d&#x27;un moment (~50 minutes) la carte d&#x27;acquisition reçoit des informations erronées (décalage de timecode) et du coup l&#x27;encodage plante.&lt;&#x2F;p&gt;
&lt;p&gt;Dans le cas d&#x27;un appareil photo avec une sortie HDMI &#x2F; composite, il faudra disposer d&#x27;une carte d&#x27;acquisition vidéo adéquate.&lt;&#x2F;p&gt;
&lt;p&gt;Petite vigilance sur le choix de la carte d&#x27;acquisition d&#x27;autant plus si l&#x27;entrée voulue est du HDMI : le marché des cartes d&#x27;acquisition pour joueurs est assez développé, on trouve sur le marché des cartes d&#x27;acquisition qui ne font qu&#x27;enregistrer le contenu capté sur un disque dur sans possibilité de faire de l&#x27;acquisition en direct sur un PC : il n&#x27;est donc pas possible de diffuser en direct un événement avec de telles cartes.&lt;&#x2F;p&gt;
&lt;p&gt;Finalement, on revient souvent au constat qu&#x27;il faut prendre l&#x27;appareil qui est fait pour ça. Et c&#x27;est le bon vieux petit camescope à papa.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;camcorder.jpg&quot; alt=&quot;Looking outside by Ondra Soukup from flickr; CC-BY-NC&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Comme pour les précédentes solutions pas forcément la peine de se lancer dans la course à l&#x27;armement tant que les prérequis de base sont respectés.&lt;&#x2F;p&gt;
&lt;p&gt;Il faudra souvent recourir à une carte d&#x27;acquisition vidéo. Il convient de faire quelques tests là encore mais c&#x27;est à priori moins hasardeux.&lt;&#x2F;p&gt;
&lt;p&gt;Dans notre cas ce qui a le mieux marché jusque là c&#x27;est un vieux camescope sortant un flux en &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Standard-definition_television&quot;&gt;756i&lt;&#x2F;a&gt; sur une interface firewire. En plus c&#x27;est du matériel qui devient accessible, la carte d&#x27;acquisition est peu cher aussi (environ 30€).&lt;&#x2F;p&gt;
&lt;p&gt;Quelques détails à vérifier, comme pour la solution à base d&#x27;appareil photo, on ne veut pas d&#x27;indication en incrustation sur l&#x27;image, pas même quand on utilise le zoom de la caméra.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;l-encodage&quot;&gt;L&#x27;encodage&lt;&#x2F;h3&gt;
&lt;p&gt;Maintenant que nous avons notre source vidéo et audio, il nous faut un ordinateur qui va encoder ces flux, les assembler et les envoyer vers un serveur de diffusion.&lt;&#x2F;p&gt;
&lt;p&gt;Chez FAImaison, on a mis ça sous le format de mallette, c&#x27;est pratique pour le transport, il y a assez de place pour mettre des câbles, des adaptateurs, et même d&#x27;avoir un réseau pré-câblé avec des points d&#x27;accès Wifi :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;mallette-stuff-1.jpg&quot; alt=&quot;Mallette FAImaison + stuff; CC-BY-NC&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Quand tout le bazar est enlevé :
&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;mallette-vide.jpg&quot; alt=&quot;Mallette FAImaison; CC-BY-NC&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Point d&#x27;amélioration possible : choisir des matériaux plus robustes.&lt;&#x2F;p&gt;
&lt;p&gt;Autre chose d&#x27;intéressant avec la formule mallette : le réseau.&lt;&#x2F;p&gt;
&lt;p&gt;La mallette intègre sa propre &quot;infrastructure&quot; réseau. Par là on entend un routeur qui prend en &quot;entrée&quot; le réseau du lieu, et &quot;sort&quot; sur un point d&#x27;accès Wifi et sur un réseau &quot;streaming&quot; (où on branche le PC de la mallette et éventuellement d&#x27;autres machines: suivi, supervision, monitoring, communication événementielle, ...).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;infra-reseau-1.svg&quot; alt=&quot;Mallette FAImaison, infrastructure réseau; CC-BY-NC&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Cette infrastructure permet deux choses intéressantes : proposer du Wifi aux visiteurs et avoir un réseau dédié à nos machines (streaming, monitoring, événementiel, ...).&lt;&#x2F;p&gt;
&lt;p&gt;Amener du Wifi est très apprécié par les visiteurs (encore plus quand le lieu d&#x27;accueil n&#x27;en donne pas d&#x27;habitude). Le problème c&#x27;est que les utilisateurs de ce réseau ont besoin de bande passante, notre stream aussi. Pour nous assurer que la partie streaming dispose d&#x27;une quantité de bande passante suffisante, on met de la &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Quality_of_service&quot;&gt;QOS&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Si le lieu dispose déjà d&#x27;un accès public, on dit aux visiteurs d&#x27;utiliser notre réseau et on ne communique pas la procédure pour utiliser le réseau Wifi du lieu.&lt;&#x2F;p&gt;
&lt;p&gt;Pour conclure sur la partie matériel : vous pouvez faire avec les moyens du bord et adapter au fur et à mesure. Pour ma part je continue d&#x27;améliorer le dispositif.&lt;&#x2F;p&gt;
&lt;p&gt;Coté logiciels, on utilise :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;ffmpeg (+video4linux)&lt;&#x2F;li&gt;
&lt;li&gt;oggfwd&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Une commande typique :&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;ffmpeg -f&lt;&#x2F;span&gt;&lt;span&gt; alsa&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -ac&lt;&#x2F;span&gt;&lt;span&gt; 1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -ar&lt;&#x2F;span&gt;&lt;span&gt; 48000&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; hw:0,0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; video4linux2&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -i&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;dev&#x2F;video0&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -s&lt;&#x2F;span&gt;&lt;span&gt; 640x480&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -r&lt;&#x2F;span&gt;&lt;span&gt; 10&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -codec&lt;&#x2F;span&gt;&lt;span&gt;:v libtheora&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -qscale&lt;&#x2F;span&gt;&lt;span&gt;:v 7&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -codec&lt;&#x2F;span&gt;&lt;span&gt;:a libvorbis&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -qscale&lt;&#x2F;span&gt;&lt;span&gt;:a 5&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -f&lt;&#x2F;span&gt;&lt;span&gt; ogg - | &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;oggfwd&lt;&#x2F;span&gt;&lt;span&gt; server.example.com 8000 password &#x2F;mountpoint
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;ffmpeg :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-f alsa -ac 1 -ar 48000 -i hw:0,0&lt;&#x2F;code&gt; permet de configurer l&#x27;entrée son&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-f video4linux2 -i &#x2F;dev&#x2F;video0 -s 640x480 -r 10&lt;&#x2F;code&gt; permet de configurer l&#x27;entrée vidéo&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;-codec:v libtheora -qscale:v 7 -codec:a libvorbis -qscale:a 5 -f ogg&lt;&#x2F;code&gt; permet de configurer les codecs et la qualité vidéo&#x2F;audio de sortie&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Ensuite, on passe ça à l&#x27;exécutable oggfwd qui a pour objet de se connecter au serveur de diffusion Icecast et de lui envoyer le flux encodé.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;diagram-chaine-logicielle.svg&quot; alt=&quot;Chaine logicielle&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Cette commande prend en premier paramètre le nom ou l&#x27;adresse IP du serveur Icecast, puis le port, le mot de passe et le nom du point de montage sur lequel le flux sera accessible. La commande oggfwd offre des &lt;a href=&quot;https:&#x2F;&#x2F;r-w-x.org&#x2F;oggfwd.git&#x2F;blob&#x2F;HEAD:&#x2F;oggfwd.c&quot;&gt;arguments&lt;&#x2F;a&gt; pour, entre autres, changer le titre du flux.&lt;&#x2F;p&gt;
&lt;p&gt;Pour résumer, la ligne de commande précédente prend le premier périphérique alsa sur un canal, avec une fréquence d&#x27;échantillonnage de 48kHz; le premier périphérique vidéo avec une résolution de 640x480 à 10 images par seconde; encode ces deux et l&#x27;envoie au serveur de diffusion. Le flux est ensuite visible à l&#x27;adresse &lt;strong&gt;&lt;a href=&quot;http:&#x2F;&#x2F;server.example.com:8000&#x2F;mountpoint&quot;&gt;http:&#x2F;&#x2F;server.example.com:8000&#x2F;mountpoint&lt;&#x2F;a&gt;&lt;&#x2F;strong&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;le-serveur-de-diffusion&quot;&gt;Le Serveur de diffusion&lt;&#x2F;h2&gt;
&lt;p&gt;Le but du serveur de diffusion est de prendre en entrée un flux vidéo (en provenance du lieu de notre événement) et de le &quot;recopier&quot; vers les clients qui en font la demande. Ainsi il faut disposer de suffisamment de bande passante montante pour accueillir l&#x27;audience estimée. Il faudra ajuster la résolution, la qualité, le nombre d&#x27;images par secondes, les bitrates audio &#x2F; vidéo en fonction des ressources disponibles.&lt;&#x2F;p&gt;
&lt;p&gt;Jusque là nous avons utilisé &lt;a href=&quot;http:&#x2F;&#x2F;icecast.org&#x2F;&quot;&gt;Icecast&lt;&#x2F;a&gt; comme serveur de diffusion.&lt;&#x2F;p&gt;
&lt;p&gt;On me pose souvent la question de la consommation en ressources de la machine qui héberge un serveur Icecast. Réponse : &lt;a href=&quot;http:&#x2F;&#x2F;icecast.org&#x2F;loadtest&#x2F;1&#x2F;&quot;&gt;très peu&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Que faire quand le serveur de diffusion atteint les limites des ressources qui lui sont allouées ?&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est ici que ca devient intéressant :)&lt;&#x2F;p&gt;
&lt;h2 id=&quot;passage-a-l-echelle&quot;&gt;Passage à l&#x27;échelle&lt;&#x2F;h2&gt;
&lt;p&gt;Un serveur Icecast avec une connexion 100Mb&#x2F;s peut servir environ 200 connexions maximum avec une vidéo à environ 500Kb&#x2F;s.&lt;&#x2F;p&gt;
&lt;p&gt;Vous en conviendrez c&#x27;est peu. Surtout quand on a réussi sa communication :)&lt;&#x2F;p&gt;
&lt;p&gt;Icecast propose un &lt;a href=&quot;http:&#x2F;&#x2F;www.icecast.org&#x2F;docs&#x2F;icecast-latest&#x2F;relaying.html&quot;&gt;mode relais&lt;&#x2F;a&gt;. Il y a 2 configurations possibles :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Relais simple&lt;&#x2F;li&gt;
&lt;li&gt;Master&#x2F;slave&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Dans le &lt;strong&gt;premier cas&lt;&#x2F;strong&gt;, chaque relais agit comme un client du serveur principal en ne recopiant qu&#x27;un point de montage (flux) spécifique. C&#x27;est pratique mais pas très flexible (il faut changer la configuration de chaque relais à la main pour ajouter un nouveau point de montage).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Le second cas&lt;&#x2F;strong&gt; est plus intéressant : le master est la machine vers laquelle on pousse le flux vidéo depuis le lieu de l&#x27;événement, les machines configurées en slave vont chercher la liste des points de montage disponibles sur le master et les rendent accessibles à d&#x27;autres clients.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;diagram-archi-simple.svg&quot; alt=&quot;Master&#x2F;Slave&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Le master et les slaves proposent les mêmes points de montage (je simplifie un peu, puisqu&#x27;on peut avoir des points de montage en plus sur le slave que n&#x27;aura pas le master, etc...).&lt;&#x2F;p&gt;
&lt;p&gt;La méthode classique pour répartir les clients sur les différents serveurs de diffusion (donc master + slaves) c&#x27;est de créer une liste de lecture avec les différents serveurs.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;ini&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-ini &quot;&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span style=&quot;color:#b48ead;&quot;&gt;[playlist]
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;NumberOfEntries&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;3
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Title1&lt;&#x2F;span&gt;&lt;span&gt;= Un super stream
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;File1&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;http:&#x2F;&#x2F;server1:8000&#x2F;mountpoint
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Title2&lt;&#x2F;span&gt;&lt;span&gt;= Un super stream
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;File2&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;http:&#x2F;&#x2F;server2:8000&#x2F;mountpoint
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Title3&lt;&#x2F;span&gt;&lt;span&gt;= Un super stream
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;File3&lt;&#x2F;span&gt;&lt;span&gt;=&lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;http:&#x2F;&#x2F;server3:8000&#x2F;mountpoint
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il y a deux inconvénients :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Les lecteurs HTML5 ne supportent pas les listes de lectures. Par contre on a un super membre de FAImaison qui nous a développé &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;opi&#x2F;m3uStreamPlayer&quot;&gt;une lib&lt;&#x2F;a&gt; qui permet de faire ca (et qui permet aussi la reprise sur incident).&lt;&#x2F;li&gt;
&lt;li&gt;Le premier serveur en haut de cette liste est celui qui sera utilisé en priorité par tous les clients (sauf si on a des clients avec le mode aléatoire actif).&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;C&#x27;est là que vient alors l&#x27;idée d&#x27;un répartiteur de charge dynamique. Le principe est simple : choisir quel serveur sera utilisé par un client donné.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;idéal étant d&#x27;avoir une charge répartie uniformément sur les différentes machines (ce sont des machines prêtées par des membres de la &lt;a href=&quot;http:&#x2F;&#x2F;ffdn.org&#x2F;&quot;&gt;FFDN&lt;&#x2F;a&gt; qui ont pas nécessairement qu&#x27;Icecat à faire tourner). Heureusement, Icecast permet de créer des templates au format XSL. Il est alors possible de récupérer la charge du serveur par point de montage, le nombre de connexions maximum, ...&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;xml&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-xml &quot;&gt;&lt;code class=&quot;language-xml&quot; data-lang=&quot;xml&quot;&gt;&lt;span&gt;&amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;load&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;  &amp;lt;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;mount &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;name&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;&#x2F;mountpoint&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;max_listeners_count&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;100&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; &lt;&#x2F;span&gt;&lt;span style=&quot;color:#d08770;&quot;&gt;current_listeners_count&lt;&#x2F;span&gt;&lt;span&gt;=&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;1&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&#x2F;&amp;gt;
&lt;&#x2F;span&gt;&lt;span&gt;&amp;lt;&#x2F;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;load&lt;&#x2F;span&gt;&lt;span&gt;&amp;gt;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;En se basant sur ces données, on peut rediriger chaque client vers le serveur le moins chargé à l&#x27;aide d&#x27;un &lt;a href=&quot;https:&#x2F;&#x2F;git.legeox.net&#x2F;capslock&#x2F;icecast_load_balancer&#x2F;&quot;&gt;logiciel&lt;&#x2F;a&gt; (représenté par le bloc &quot;Load Balancer&quot;) :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;diagram-archi.svg&quot; alt=&quot;Répartition de charge&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Dans un premier temps, le client demande au &quot;load balancer&quot; une liste de lecture. Le &quot;load balancer&quot; créé la liste des serveurs de diffusion disponibles du moins chargé au plus chargé et l&#x27;envoie au client. Le client joint alors le premier serveur de la liste qui lui a été donné. En parallèle, le &quot;load balancer&quot; interroge chaque serveur de diffusion pour connaître la charge actuelle (et réelle) de ceux-ci.&lt;&#x2F;p&gt;
&lt;p&gt;Ce logiciel propose également une interface de monitoring pour surveiller l&#x27;ensemble des machines de diffusion et rapporter l&#x27;audience globale et l&#x27;audience par serveur.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;loadbalancer-monitoring-2.jpg&quot; alt=&quot;Répartition de charge : Monitoring&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;En haut de la page on retrouve l&#x27;audience globale, ici : durant des tests avant la conférence de Jean-Marc Manach :&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-11-12-bilan-streaming-2014-10-09-manach-2&#x2F;loadbalancer-global-stats.jpg&quot; alt=&quot;Répartition de charge&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Ce &quot;load balancer&quot; a été développé en &lt;a href=&quot;https:&#x2F;&#x2F;www.python.org&#x2F;&quot;&gt;Python&lt;&#x2F;a&gt;, avec le framework &lt;a href=&quot;https:&#x2F;&#x2F;www.djangoproject.com&#x2F;&quot;&gt;django&lt;&#x2F;a&gt;; &lt;a href=&quot;http:&#x2F;&#x2F;www.celeryproject.org&#x2F;&quot;&gt;celery&lt;&#x2F;a&gt; avec un backend &lt;a href=&quot;http:&#x2F;&#x2F;www.rabbitmq.com&#x2F;&quot;&gt;RabbitMQ&lt;&#x2F;a&gt; ont été utilisés pour gérer des tâches asynchrones comme celles de récupérer la charge des différents serveurs ou encore de sauvegarder l&#x27;audience à intervalles réguliers. Des solutions moins « DIY » sont &lt;a href=&quot;http:&#x2F;&#x2F;www.haproxy.org&#x2F;&quot;&gt;à explorer&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h1 id=&quot;les-pistes-d-amelioration&quot;&gt;Les pistes d&#x27;amélioration&lt;&#x2F;h1&gt;
&lt;p&gt;Comme à chaque fois on trouve de nouvelles pistes d&#x27;amélioration.&lt;&#x2F;p&gt;
&lt;p&gt;Quelques idées en vrac :&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Revoir les matériaux de la mallette&lt;&#x2F;li&gt;
&lt;li&gt;Changement de caméra&lt;&#x2F;li&gt;
&lt;li&gt;Plus de redondance (éviter les &lt;a href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Single_point_of_failure&quot;&gt;SPOF&lt;&#x2F;a&gt;, actuellement le serveur master et le load balancer ne sont pas redondés)&lt;&#x2F;li&gt;
&lt;li&gt;Tester &lt;a href=&quot;http:&#x2F;&#x2F;www.haproxy.org&#x2F;&quot;&gt;HAProxy&lt;&#x2F;a&gt; en lieu et place du &quot;load balancer&quot; custom&lt;&#x2F;li&gt;
&lt;li&gt;Tester des solutions p2p&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;~&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>OpenSSL: Heartbleed</title>
          <pubDate>Wed, 09 Apr 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2014-04-09-openssl-heartbleed/</link>
          <guid>https://blog.cloudfrancois.fr/2014-04-09-openssl-heartbleed/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2014-04-09-openssl-heartbleed/">&lt;p&gt;En ce mardi 8 avril, il a été dit beaucoup de choses sur la façon de corriger la faille &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2014-0160&quot;&gt;CVE-2014-0160&lt;&#x2F;a&gt; dite Heartbleed de OpenSSL.&lt;&#x2F;p&gt;
&lt;p&gt;Cette faille permet de lire un bloc de mémoire de 64Kb sur le serveur utilisant OpenSSL en versions 1.0.1a à 1.0.1f incluses. En réitérant une requête spécialement forgée, il est possible de lire plusieurs blocs de mémoire.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.schneier.com&#x2F;blog&#x2F;archives&#x2F;2014&#x2F;04&#x2F;heartbleed.html&quot;&gt;Bruce Schneier&lt;&#x2F;a&gt; évoque une criticité de 11 sur une échelle allant de 1 à 10.&lt;&#x2F;p&gt;
&lt;p&gt;Les identifants pouvant être révélées sont, entre autres:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Identifiants de connexion (nom d&#x27;utilisateur, mot de passe; cas relevé sur les services de Yahoo par exemple)&lt;&#x2F;li&gt;
&lt;li&gt;Certificats&lt;&#x2F;li&gt;
&lt;li&gt;Clés privées&lt;&#x2F;li&gt;
&lt;li&gt;Données sensibles&lt;&#x2F;li&gt;
&lt;li&gt;Tout donnée&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Tout processus utilisant l&#x27;implémentation TLS de OpenSSL est concerné.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;ensemble des étapes de résolution ci-dessous doit être appliqué. Pour rappel, une clé privée permet de déchiffrer une communication. Si un tiers possède la votre, il peut alors lire ce qui s&#x27;échange sur votre service mais aussi ce qui a été échangé par le passé s&#x27;il en a capturé les flux.&lt;&#x2F;p&gt;
&lt;p&gt;Pour corriger cette faille, il faut absolument effectuer les étapes suivantes:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Mettre à jour la bibliothèque OpenSSL. La faille est corrigée dès la version 1.0.1g&lt;&#x2F;li&gt;
&lt;li&gt;Redémarrer les services utilisant la bibliothèque OpenSSL&lt;&#x2F;li&gt;
&lt;li&gt;Révoquer les certificats utilisés par les services utilisant la bibliothèque OpenSSL&lt;&#x2F;li&gt;
&lt;li&gt;Régénérer les clés privées de ces services&lt;&#x2F;li&gt;
&lt;li&gt;Générer de nouvelles CSR (Certificate Signing Requests) afin d&#x27;obtenir de nouveaux certificats&lt;&#x2F;li&gt;
&lt;li&gt;Installer les nouveaux certificats&lt;&#x2F;li&gt;
&lt;li&gt;Redémarrer les services&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pour lister les services devant être redémarré, vous pouvez utiliser la commande suivante après la mise à jour de la bibliothèque OpenSSL:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; lsof&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -n &lt;&#x2F;span&gt;&lt;span&gt;| &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;grep&lt;&#x2F;span&gt;&lt;span&gt; ssl  | &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;grep&lt;&#x2F;span&gt;&lt;span&gt; DEL
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;mosh-serv&lt;&#x2F;span&gt;&lt;span&gt; 1234             mshsrv  DEL       REG                9,3            6697418 &#x2F;var&#x2F;lib&#x2F;openssl-1.0.1g&#x2F;image&#x2F;usr&#x2F;lib64&#x2F;libcrypto.so.1.0.0
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Vu que des données de vos utilisateurs ont put être divulguées, il convient également:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;d&#x27;invalider sessions et cookies&lt;&#x2F;li&gt;
&lt;li&gt;de forcer la réinitialisation des mots de passes d&#x27;accès à vos services afin que les utilisateurs ne gardent pas un mot de passe pouvant se promener dans la nature.&lt;&#x2F;li&gt;
&lt;li&gt;de révoquer et régénérer toute donnée sensible stockée par vos services&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Et mieux, d&#x27;implémenter &lt;a href=&quot;https:&#x2F;&#x2F;www.eff.org&#x2F;deeplinks&#x2F;2014&#x2F;04&#x2F;why-web-needs-perfect-forward-secrecy&quot;&gt;Perfect Forward Secrecy&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;D&#x27;autres informations peuvent être trouvées sur &lt;a href=&quot;http:&#x2F;&#x2F;heartbleed.com&#x2F;&quot;&gt;heartbleed.com&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Pour conclure, j&#x27;ai entendu encore les même couplets disant que les logiciels propriétaires sont mieux puisqu&#x27;ils &quot;garantissent que des gens sont payés à plein temps pour faire de la revue de code&quot;. Il convient de rappeler que c&#x27;est FAUX. Le seul but d&#x27;une entreprise est de faire du pognon. Tout ce qu&#x27;offre le modèle propriétaire est une sécurité par l&#x27;obscurité sans aucun pouvoir de contrôle pour l&#x27;exploitant.&lt;&#x2F;p&gt;
&lt;p&gt;Tous les millions donnés à des éditeurs de logiciels privés permettraient de donner à nouveau un peu plus confiance dans les technologies que nous utilisons s&#x27;ils étaient utilisés pour le développement de solutions OpenSource.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;Opensource n&#x27;est pas le problème mais la solution.&lt;&#x2F;p&gt;
&lt;p&gt;Dans le cas d&#x27;OpenSSL je me demande comment le mainteneur du repository a fait son job: fait-il une revue de ce qui est intégré à l&#x27;upstream ?&lt;&#x2F;p&gt;
&lt;p&gt;Quoi qu&#x27;il en soit, la faille a trainé 2 ans. Vous avez intérêt à agir.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>git: Définir une règle de merge pour éviter les conflits sur un fichier spécifique</title>
          <pubDate>Thu, 27 Mar 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2014-03-27-git-merge-strategies-pour-eviter-les-conflits-sur-un-fichier-specifique/</link>
          <guid>https://blog.cloudfrancois.fr/2014-03-27-git-merge-strategies-pour-eviter-les-conflits-sur-un-fichier-specifique/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2014-03-27-git-merge-strategies-pour-eviter-les-conflits-sur-un-fichier-specifique/">&lt;p&gt;Parfois on a besoin de définir des règles dans Git afin que son fonctionnement s&#x27;adapte aux besoins du projets.&lt;&#x2F;p&gt;
&lt;p&gt;Par exemple, on peut vouloir qu&#x27;un fichier spécifique subisse une règle de gestion lors d&#x27;un merge de deux branches.&lt;&#x2F;p&gt;
&lt;p&gt;L&#x27;exemple ci-dessous montre comment faire en sorte qu&#x27;un fichier &quot;plop&quot; dans un dossier &quot;plip&quot; soit conservé sur la branche sur laquelle on fait le merge. Ainsi la branche &quot;source&quot; et la branche &quot;destination&quot; du merge conserveront leur version du fichier lorsque nous ferons un merge.&lt;&#x2F;p&gt;
&lt;p&gt;La manipulation suivante est à faire sur les deux branches:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; echo &amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;plip&#x2F;plop merge=ours&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot; &amp;gt;&amp;gt; .gitattribute
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git add .gitattribute
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git commit&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -m &lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;Git attribute&lt;&#x2F;span&gt;&lt;span&gt;&amp;quot;
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Ensuite, il convient de dire à Git qu&#x27;on veut utiliser ces règles:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# si vous voulez que ce soit le cas uniquement pour le projet courant:
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git config merge.ours.driver true
&lt;&#x2F;span&gt;&lt;span&gt;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;# si vous voulez que ce soit le cas pour tous les projets:
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git config merge.ours.driver true
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il ne reste plus qu&#x27;à faire un merge.&lt;&#x2F;p&gt;
&lt;p&gt;En cas de conflit, Git fera alors un merge automatique:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git merge feature1&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --no-ff
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;Auto-merging&lt;&#x2F;span&gt;&lt;span&gt; plip&#x2F;plop
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;0&lt;&#x2F;span&gt;&lt;span&gt; files changed, 0 insertions(+)&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;,&lt;&#x2F;span&gt;&lt;span&gt; 0 deletions(-)
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
</description>
      </item>
      <item>
          <title>git: trouver les branches où se trouvent des commits selon un message de commit</title>
          <pubDate>Fri, 21 Mar 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2014-03-21-git-trouver-les-branches-ou-se-trouvent-des-commits-selon-un-message-de-commit/</link>
          <guid>https://blog.cloudfrancois.fr/2014-03-21-git-trouver-les-branches-ou-se-trouvent-des-commits-selon-un-message-de-commit/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2014-03-21-git-trouver-les-branches-ou-se-trouvent-des-commits-selon-un-message-de-commit/">&lt;p&gt;Pour retrouver l&#x27;ensemble des branches où se trouvent un commit selon le message de commit de celui-ci (par exemple si vous travaillez avec des gens qui restent dans leurs habitudes archaïques d&#x27;utiliser du cherry-pick comme ils le faisaient avec subversion(svn)), vous pouvez utiliser ceci:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git log&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --all --pretty&lt;&#x2F;span&gt;&lt;span&gt;=oneline&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; --source --grep&lt;&#x2F;span&gt;&lt;span&gt;=&amp;#39;&lt;&#x2F;span&gt;&lt;span style=&quot;color:#a3be8c;&quot;&gt;message de commit&lt;&#x2F;span&gt;&lt;span&gt;&amp;#39;
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;821da26c7a3123674cfdc30e6b1ed22d629d003a&lt;&#x2F;span&gt;&lt;span&gt;      refs&#x2F;heads&#x2F;develop anno &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#124 - message de commit
&lt;&#x2F;span&gt;&lt;span&gt;  &lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;9cdb2334a43b7f68e10e1544463998727210ed91&lt;&#x2F;span&gt;&lt;span&gt;      refs&#x2F;heads&#x2F;master anno &lt;&#x2F;span&gt;&lt;span style=&quot;color:#65737e;&quot;&gt;#124 - message de commit
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il ne « reste » plus qu&#x27;à chercher les différences entre ces deux commits (puisque l&#x27;utilisation de cherry-pick permet d&#x27;ajouter des différences à un commit cherry-picked):&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;$&lt;&#x2F;span&gt;&lt;span&gt; git diff 821da26c7a3123674cfdc30e6b1ed22d629d003a 9cdb2334a43b7f68e10e1544463998727210ed91
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Il est temps que les gens arrêtent d&#x27;utiliser les cherry-pick qui sont faits pour récupérer en ultra urgence un commit déjà effectué pour l&#x27;inclure en urgence dans une branche. Ce n&#x27;est pas fait pour synchroniser deux branches entre elles car on perd toute traçabilité et on introduit le risque majeur d&#x27;oublier des commits.&lt;&#x2F;p&gt;
&lt;p&gt;Le cherry-pick n&#x27;est pas une fonction de synchronisation de branches.&lt;&#x2F;p&gt;
&lt;p&gt;Il est même possible de ne jamais l&#x27;utiliser en créant une branche spécifique pour un commit de type hotfix, branche qui sera alors mergée sur les différentes branches où le commit doit apparaître.&lt;&#x2F;p&gt;
&lt;p&gt;Quelques informations là dessus pour approfondir:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;http:&#x2F;&#x2F;dan.bravender.us&#x2F;2011&#x2F;10&#x2F;20&#x2F;Why_cherry-picking_should_not_be_part_of_a_normal_git_workflow.html&quot;&gt;Why cherry-picking should not be part of a normal git workflow&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Bilan technique de la conférence &quot;Logiciels Libres, impacts et enjeux sur la société&quot;</title>
          <pubDate>Tue, 18 Mar 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2/</link>
          <guid>https://blog.cloudfrancois.fr/2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2/">&lt;p&gt;Ce mardi se tenait la seconde conférence de &lt;a href=&quot;http:&#x2F;&#x2F;www.faimaison.net&quot;&gt;FAImaison&lt;&#x2F;a&gt; en partenariat avec la &lt;a href=&quot;http:&#x2F;&#x2F;www.maisoneurope-nantes.eu&#x2F;&quot;&gt;Maison de l&#x27;Europe de Nantes&lt;&#x2F;a&gt;. Nous recevions &lt;a href=&quot;http:&#x2F;&#x2F;www.april.org&#x2F;fr&#x2F;jeanne-tadeusz-se-presente&quot;&gt;Jeanne Tadeusz&lt;&#x2F;a&gt; de l&#x27;&lt;a href=&quot;http:&#x2F;&#x2F;www.april.org&quot;&gt;April&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;La conférence s&#x27;est tenue à Nantes, à la Médiathèque Jacques Demy dans la salle Jules Vallès.&lt;&#x2F;p&gt;
&lt;p&gt;Le thème: &quot;Logiciels Libres, impacts et enjeux sur la société&quot;:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;salle-photo-mde.jpeg&quot; alt=&quot;Photo de la salle source:&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Comme la dernière fois, voici un petit bilan de ce qui s&#x27;est passé coté technique pour l&#x27;enregistrement et la diffusion de la conférence.&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons eu 1h30 pour préparer la diffusion vidéo ainsi que l&#x27;installation audio. Constat: ça passe, mais c&#x27;est juste.&lt;&#x2F;p&gt;
&lt;p&gt;La salle est équipé d&#x27;un système de sonorisation sur lequel nous nous sommes en partie reposé.&lt;&#x2F;p&gt;
&lt;p&gt;Il est à noter que le micro HF proposé était d&#x27;une qualité bien mauvaise (parasites, coupures du flux audio pendant les interventions)&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons reçu environ 50 personnes dans la salle.&lt;&#x2F;p&gt;
&lt;p&gt;En ligne, nous avons eu jusqu&#x27;à 100 clients connectés à l&#x27;infrastructure de streaming:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-global-audience.jpg&quot; alt=&quot;altText&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;La chute brutale du nombre de clients est due à une perte de connectivité à Internet. Le temps que tout revienne à la normale (réinitialisation du VPN, relance de l&#x27;envoi du flux vidéo) a été trop long et nous avons donc perdu un grand nombre de personnes en cours de conférence lors de la séance de questions réponses.&lt;&#x2F;p&gt;
&lt;p&gt;Ceci fait déjà l&#x27;objet d&#x27;un axe d&#x27;amélioration qui pourra s&#x27;orienter sur:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Redondance du lien Internet (pourquoi pas envisager une connexion de backup en 3G&#x2F;4G ?)&lt;&#x2F;li&gt;
&lt;li&gt;Revoir la partie diffusion du contenu: utilisation de playlists référençant plusieurs serveurs, utilisation d&#x27;un lecteur HTML5 sur le site&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Un autre point très important: la qualité du son.&lt;&#x2F;p&gt;
&lt;p&gt;Celle-ci était inacceptable. Nous travaillerons sur ce point dès la prochaine réunion FAImaison qui aura lieu le jeudi 20 mars.&lt;&#x2F;p&gt;
&lt;p&gt;La qualité d&#x27;image n&#x27;était pas non plus au top, entre une résolution faible et un soucis d&#x27;image fixe que nous a été remonté.&lt;&#x2F;p&gt;
&lt;p&gt;Pour cette partie, on envisage:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Corriger les paramètre d&#x27;encodage (nous avions largement assez de bande passante pour proposer mieux)&lt;&#x2F;li&gt;
&lt;li&gt;Juger la pertinence de changer de codec&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Parlons un peu des gens qui nous on suivi en ligne.&lt;&#x2F;p&gt;
&lt;p&gt;Tout d&#x27;abord, leur provenance estimée:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-map.jpg&quot; alt=&quot;altText&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Mêmes informations sous la forme d&#x27;un gros fromage:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-pays.jpg&quot; alt=&quot;altText&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Encore une fois, Twitter a été la source de communication qui a fait le plus connaître le lien de la diffusion de cette conférence:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-affluents-details.jpg&quot; alt=&quot;altText&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Intéressant pour nous qui organisions la diffusion, on retrouve en parts égales Firefox ainsi qu&#x27;une catégorie inconnue de clients (probablement des lecteurs vidéo tels que mplayer et vlc):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-client-utilise.jpg&quot; alt=&quot;altText&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Depuis la dernière fois, l&#x27;infrastructure a un peu changé.&lt;&#x2F;p&gt;
&lt;p&gt;On utilisait deux serveurs de diffusion dont la répartition de charge était faite... de façon manuelle (en disant aux gens de changer de serveur).&lt;&#x2F;p&gt;
&lt;p&gt;Pour cette conférence, un Load Balancer a été ajouté afin de rediriger les clients de façon automatique selon plusieurs critères comme:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;la charge des serveurs&lt;&#x2F;li&gt;
&lt;li&gt;la disponibilité des serveurs&lt;&#x2F;li&gt;
&lt;li&gt;la date à laquelle chaque serveur a dernièrement reçu un client&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pour suivre l&#x27;état des serveurs de diffusion ainsi que l&#x27;audience que nous avions, une page d&#x27;informations issues du LoadBalancer était disponible:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;page-diagnotics.jpg&quot; alt=&quot;altText&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Cette page a été d&#x27;une grande aide pour gérer le retour à la normale du flux suite à la perte de connexion.&lt;&#x2F;p&gt;
&lt;p&gt;Un coup d’œil sur le taux d&#x27;utilisation des différents serveurs mis à disposition par des bénévoles pour FAImaison est intéressant à donner.&lt;&#x2F;p&gt;
&lt;p&gt;En rouge on retrouve la capacité maximum d&#x27;accueil du serveur (les créneaux sont dus au fait que le LoadBalancer a considéré ces serveurs indisponibles à un instant T (on va chercher pourquoi il a vu ça) et en bleu le nombre de personnes connectées:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-alarig.jpg&quot; alt=&quot;Stats serveur alarig&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-capslock.jpg&quot; alt=&quot;Stats serveur capslock&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-fr33tux.jpg&quot; alt=&quot;Stats serveur fr33tux&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-gordon.jpg&quot; alt=&quot;Stats serveur gordon&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-kleph.jpg&quot; alt=&quot;Stats serveur kleph&quot; &#x2F;&gt;
&lt;img src=&quot;&#x2F;img&#x2F;2014-03-18-bilan-streaming-conference-logiciels-libres-impacts-et-enjeux-sur-la-societe-2&#x2F;stats-zorun.jpg&quot; alt=&quot;Stats serveur zorun&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Il y a encore du travail pour la répartition de charge.&lt;&#x2F;p&gt;
&lt;p&gt;Pour conclure, on voit qu&#x27;il reste du boulot, mais qu&#x27;on est sur la bonne voie. Les axes d&#x27;amélioration pour la prochaine conférence sont:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Qualité du son&lt;&#x2F;li&gt;
&lt;li&gt;Qualité de l&#x27;image&lt;&#x2F;li&gt;
&lt;li&gt;Plus de redondance (connexions, serveurs)&lt;&#x2F;li&gt;
&lt;li&gt;Gestion des erreurs, automatisation du retour à la normale&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Les graphiques sont issus de &lt;a href=&quot;http:&#x2F;&#x2F;piwik.org&#x2F;&quot;&gt;Piwik&lt;&#x2F;a&gt; alimenté par les fichiers de log Icecast en provenance des différents serveurs ainsi que du Load Balancer.&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Bilan du premier streaming FAImaison</title>
          <pubDate>Tue, 18 Feb 2014 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2/</link>
          <guid>https://blog.cloudfrancois.fr/2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2/">&lt;p&gt;Pour la première conférence de &lt;a href=&quot;http:&#x2F;&#x2F;www.faimaison.net&quot;&gt;FAImaison&lt;&#x2F;a&gt; en partenariat avec la &lt;a href=&quot;http:&#x2F;&#x2F;www.maisoneurope-nantes.eu&#x2F;&quot;&gt;Maison de l&#x27;Europe de Nantes&lt;&#x2F;a&gt;, nous avons travaillé sur l&#x27;enregistrement et la retransmission vidéo d&#x27;événements. Afin que le plus grand nombre puisse écouter Estelle Massé de &lt;a href=&quot;https:&#x2F;&#x2F;www.accessnow.org&#x2F;&quot;&gt;Access&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;Après cet essai en mode &quot;vie vraie&quot;, il est temps de faire un petit retour sur ce qui s&#x27;est passé du point de vue technique.&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons diffusé au moyen de deux machines: une chez digicube, une autre sur une fibre free.&lt;&#x2F;p&gt;
&lt;p&gt;Dans un premier temps toute la charge a été portée par la machine chez digicube.&lt;&#x2F;p&gt;
&lt;p&gt;NB: les chiffres donnés dans le texte correspondent à ce que nous avons observé sur des outils de monitoring en temps réel, c&#x27;est pourquoi les graphiques, créés sur des intervales plus larges, ne correspondent pas forcément à l&#x27;unité près.&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons pu accueillir 59 clients sur le flux vidéo (attention: la courbe après 21h55 est éronnée: munin semble avoir décompté en double et ca fait nawak):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2&#x2F;munin-icecast.jpg&quot; alt=&quot;Nombre de clients connectés à la machine digicube&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Peu après, on a perdu environ 10 clients:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2&#x2F;munin-if.jpg&quot; alt=&quot;Traffic réseau de la machine digicube&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;On a noté plusieurs pointes à 14Mbits&#x2F;s avant que le nombre de clients ne chutte, une des causes possible est que la machine principale avait d&#x27;autres services et peu de ressources disponibles).&lt;&#x2F;p&gt;
&lt;p&gt;Pour offrir du flux aux gens essayant de nous rejoindre malgré cette belle affluence, nous avons diffusé le lien permettant d&#x27;attraper le flux vidéo sur une seconde machine (celle derrière la fibre free et configurée en &lt;a href=&quot;http:&#x2F;&#x2F;www.icecast.org&#x2F;docs&#x2F;icecast-trunk&#x2F;icecast2_relay.html&quot;&gt;slave relay&lt;&#x2F;a&gt;).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2&#x2F;kleph-if.jpg&quot; alt=&quot;traffic de la machine fibre free&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Au final, 5 personnes sont arrivées sur cette seconde machine et y sont restées.&lt;&#x2F;p&gt;
&lt;p&gt;Vous en conviendrez, le load balancing comme ca c&#x27;était pas prévu (faudrait être fou pour le faire en mode rache volontairement).&lt;&#x2F;p&gt;
&lt;p&gt;Les retours que nous avons eu sur la qualité du stream sont:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;bon son&lt;&#x2F;li&gt;
&lt;li&gt;image en mode stopmotion&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Pour le premier point c&#x27;est très bien puisque c&#x27;était l&#x27;objectif qu&#x27;on voulait atteindre.&lt;&#x2F;p&gt;
&lt;p&gt;Pour le second, on a la solution (on l&#x27;a testé une fois la conférence terminée sur un point de montage icecast non communiqué au public). Il reste à valider cette solution pour dimensionner les serveurs de diffusion pour les prochains événements (avoir le bon ratio confort&#x2F;nombre de personnes pouvant être connectées).&lt;&#x2F;p&gt;
&lt;p&gt;Maintenant, parlons un peu des gens ayant écouté la conférence en ligne.&lt;&#x2F;p&gt;
&lt;p&gt;Le lien pour accéder au streaming a été donné vers 8:00 puis communiqué petit à petit. Une piqure de rappel a été lancée un peu avant la conférence puis dès que nous étions en diffusion (un peu avant 19h30):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2&#x2F;horaires.jpg&quot; alt=&quot;Répartition des visites sur le temps&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Nos visiteurs étaient en majorité en Europe mais on a eu aussi des connexions d&#x27;ailleurs (et pas que du vpn puisqu&#x27;on a eu des échanges avec quelqu&#x27;un du Chili par exemple):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2&#x2F;map.jpg&quot; alt=&quot;Provenance de nos visiteurs&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;On voudrait partager une dernière information importante à savoir le canal par lequel les clients on eu le lien vers le flux vidéo et y ont accédé.&lt;&#x2F;p&gt;
&lt;p&gt;Il est intéressant de voir que twitter représente plus de la moitié des sources (51%), suivi par le site de FAImaison (23%):&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2014-02-18-bilan-streaming-premiere-conference-faimaison-maison-europe-access-netneutrality-2&#x2F;traffic-sources.jpg&quot; alt=&quot;Sources de traffic&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Nous avons été heureux dans l&#x27;ensemble du résultat obtenu, nous avons identifié des choses à améliorer, des choses à garder aussi.&lt;&#x2F;p&gt;
&lt;p&gt;On vous donne rendez-vous pour la prochaine diffusion (très probablement autour du 20 mars).&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Custom certificate for Unifi Controller</title>
          <pubDate>Sun, 29 Dec 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2013-12-29-custom-certificate-for-unifi-controller/</link>
          <guid>https://blog.cloudfrancois.fr/2013-12-29-custom-certificate-for-unifi-controller/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2013-12-29-custom-certificate-for-unifi-controller/">&lt;p&gt;Some times, you need a Web Server ito use your own certificates issued by your CA in order to consume pages served by this server on a reverse proxy.&lt;&#x2F;p&gt;
&lt;p&gt;Well this is quite simple in standard cases. Not in Ubiquity way...&lt;&#x2F;p&gt;
&lt;p&gt;Reading the manual, you&#x27;ll see that there is only one command to create a CSR, then you can use it to get a certificate from your CA and voilà... In fact, no...&lt;&#x2F;p&gt;
&lt;p&gt;To start, you have to know that Unifi CSR is totally invalid as its format is completely wrong.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;It is not base64 compliant&lt;&#x2F;li&gt;
&lt;li&gt;It mixes CSR content and CSR comments&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;As we must use CSR file issued by UniFi Controller, let&#x27;s get it:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;java -jar&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;usr&#x2F;lib&#x2F;unifi&#x2F;lib&#x2F;ace.jar new_cert wifi.local orga &amp;#39;&amp;#39; France FR
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Certificate file can be found in &lt;em&gt;&#x2F;var&#x2F;lib&#x2F;unifi&#x2F;unifi_certificate.csr&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Now, we must format it. First step: base64 compliance:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;fold -w&lt;&#x2F;span&gt;&lt;span&gt; 64 unifi_certificate.csr &amp;gt; unifi_certificate_fixed.csr
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then, edit &lt;em&gt;unifi_certificate_fixed.csr&lt;&#x2F;em&gt; to have&lt;&#x2F;p&gt;
&lt;pre style=&quot;background-color:#2b303b;color:#c0c5ce;&quot;&gt;&lt;code&gt;&lt;span&gt;-----END CERTIFICATE REQUEST-----
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;On a new line at the end of the file&lt;&#x2F;p&gt;
&lt;p&gt;Then we check CSR validity:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span&gt; req&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -text -noout -verify -in&lt;&#x2F;span&gt;&lt;span&gt; unifi_certificate_fixed.csr
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Now, we need to generate a certificate. To do this, we will use our own CA.&lt;&#x2F;p&gt;
&lt;p&gt;Warning (another one...) CSR file generated by UniFi controller uses &lt;em&gt;PrintableString&lt;&#x2F;em&gt; for its attributes. In many cases, default CA settings uses &lt;em&gt;UTF8Strings&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;To succeed on CSR validation tests, our CA must use the same strings types as in CSR.&lt;&#x2F;p&gt;
&lt;p&gt;To do this, we can edit our openssl config file (&lt;em&gt;&#x2F;usr&#x2F;lib&#x2F;ssl&#x2F;openssl.cnf&lt;&#x2F;em&gt; in debian) and change string_mask attribute to pkix:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;ini&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-ini &quot;&gt;&lt;code class=&quot;language-ini&quot; data-lang=&quot;ini&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;string_mask &lt;&#x2F;span&gt;&lt;span&gt;= pkix
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then create a CA.&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;&#x2F;usr&#x2F;lib&#x2F;ssl&#x2F;misc&#x2F;CA.pl -newca
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;After that, we can generate a new certificate with our CA:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;openssl&lt;&#x2F;span&gt;&lt;span&gt; ca&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -in&lt;&#x2F;span&gt;&lt;span&gt; out&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -days&lt;&#x2F;span&gt;&lt;span&gt; 360&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt; -out&lt;&#x2F;span&gt;&lt;span&gt; unifi_cert.pem
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Then, we import this certificate in UniFi controller:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#96b5b4;&quot;&gt;cd&lt;&#x2F;span&gt;&lt;span&gt; &#x2F;usr&#x2F;lib&#x2F;unifi&#x2F;
&lt;&#x2F;span&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;java -jar&lt;&#x2F;span&gt;&lt;span&gt; lib&#x2F;ace.jar import_cert unifi_cert.pem  &#x2F;etc&#x2F;ssl&#x2F;certificate-authority&#x2F;cacert.pem
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;If no error message is written to standard output, we have to restart unifi service and try to connect to unifi controller on port 8443 using our favourite Web browser:&lt;&#x2F;p&gt;
&lt;pre data-lang=&quot;bash&quot; style=&quot;background-color:#2b303b;color:#c0c5ce;&quot; class=&quot;language-bash &quot;&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span style=&quot;color:#bf616a;&quot;&gt;&#x2F;etc&#x2F;init.d&#x2F;unifi&lt;&#x2F;span&gt;&lt;span&gt; restart
&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;
&lt;p&gt;Troubleshoot:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;UniFi controller needs a certificate generated using its CSR. If you do not follow this, controller may fail to start or raise SSL errors&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</description>
      </item>
      <item>
          <title>La discrimination au sac à dos</title>
          <pubDate>Mon, 23 Dec 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2013-12-23-discrimination-du-sac-a-dos/</link>
          <guid>https://blog.cloudfrancois.fr/2013-12-23-discrimination-du-sac-a-dos/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2013-12-23-discrimination-du-sac-a-dos/">&lt;p&gt;Non, vous n&#x27;aurez pas mon sac à dos&lt;&#x2F;p&gt;
&lt;p&gt;Je ne suis pas un citoyen ?&lt;&#x2F;p&gt;
&lt;p&gt;Je ne suis pas honnête ?&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est ainsi que vous me considérez quand j&#x27;entre dans votre magasin,&lt;&#x2F;p&gt;
&lt;p&gt;Habillé de mon sac à dos&lt;&#x2F;p&gt;
&lt;p&gt;Non je ne vous le laisserai pas,&lt;&#x2F;p&gt;
&lt;p&gt;Pas seulement parce qu&#x27;il porte ce qu&#x27;il porte&lt;&#x2F;p&gt;
&lt;p&gt;Non qu&#x27;il me permet de transporter des effets&lt;&#x2F;p&gt;
&lt;p&gt;Qui me permettront de vous payer&lt;&#x2F;p&gt;
&lt;p&gt;Non je ne vous le laisserai pas&lt;&#x2F;p&gt;
&lt;p&gt;Ne voyez-vous pas la contradiction de me déposséder&lt;&#x2F;p&gt;
&lt;p&gt;Et ce dans un des temples de la consommation&lt;&#x2F;p&gt;
&lt;p&gt;Vous me dites de faire confiance en vos caméras de surveillance&lt;&#x2F;p&gt;
&lt;p&gt;Pourquoi devrai-je le faire ?&lt;&#x2F;p&gt;
&lt;p&gt;Vous même ne leur accordez aucun crédit&lt;&#x2F;p&gt;
&lt;p&gt;Je n&#x27;ai pas le choix,&lt;&#x2F;p&gt;
&lt;p&gt;Je me dois de refuser cette discrimination&lt;&#x2F;p&gt;
&lt;p&gt;Je me dois de refuser cette atteinte à ma Liberté&lt;&#x2F;p&gt;
&lt;p&gt;Je n&#x27;ai jamais rien volé, pourtant me voila suspect&lt;&#x2F;p&gt;
&lt;p&gt;Malgré tous les bénéfices que vous faites&lt;&#x2F;p&gt;
&lt;p&gt;Malgré vos optimisations fiscales outrancières&lt;&#x2F;p&gt;
&lt;p&gt;C&#x27;est vous qui osez me juger, qui osez m&#x27;emmerder&lt;&#x2F;p&gt;
&lt;p&gt;Vous osez imposer votre concept de la société&lt;&#x2F;p&gt;
&lt;p&gt;Le jour où on devra faire le ménage, on se souviendra de vous&lt;&#x2F;p&gt;
&lt;p&gt;Nuisibles de ce monde&lt;&#x2F;p&gt;
</description>
      </item>
      <item>
          <title>Liberté chérie</title>
          <pubDate>Sun, 22 Dec 2013 00:00:00 +0000</pubDate>
          <author>Unknown</author>
          <link>https://blog.cloudfrancois.fr/2013-12-22-liberte-cherie/</link>
          <guid>https://blog.cloudfrancois.fr/2013-12-22-liberte-cherie/</guid>
          <description xml:base="https://blog.cloudfrancois.fr/2013-12-22-liberte-cherie/">&lt;p&gt;Liberté, liberté,&lt;&#x2F;p&gt;
&lt;p&gt;Pour la sécurité, ils t&#x27;ont troqué&lt;&#x2F;p&gt;
&lt;p&gt;Pour la sécurité, ils t&#x27;ont tué&lt;&#x2F;p&gt;
&lt;p&gt;Tu ne leur avait pourtant rien demandé&lt;&#x2F;p&gt;
&lt;p&gt;Peut-être as-tu oublié de les éduquer&lt;&#x2F;p&gt;
&lt;p&gt;Les éduquer à te respecter&lt;&#x2F;p&gt;
&lt;p&gt;Les éduquer à te conserver&lt;&#x2F;p&gt;
&lt;p&gt;Les éduquer à te protéger&lt;&#x2F;p&gt;
&lt;p&gt;Ce soir la LPM a été votée&lt;&#x2F;p&gt;
&lt;p&gt;Depuis plus rien ne les empêche de nous écouter&lt;&#x2F;p&gt;
&lt;p&gt;Depuis plus rien ne les empêche de nous surveiller&lt;&#x2F;p&gt;
&lt;p&gt;Depuis plus rien ne les empêche de de nous épier&lt;&#x2F;p&gt;
&lt;p&gt;Pour une soit-disant lutte contre le terrorisme,&lt;&#x2F;p&gt;
&lt;p&gt;Nous ne pouvons plus parler&lt;&#x2F;p&gt;
&lt;p&gt;Nous ne pouvons plus échanger&lt;&#x2F;p&gt;
&lt;p&gt;Nous ne pouvons plus publier&lt;&#x2F;p&gt;
&lt;p&gt;Sans être écouté, enregistré, surveillé traqué&lt;&#x2F;p&gt;
&lt;p&gt;Ils appliquent à chaque citoyen la présomption de culpabilité&lt;&#x2F;p&gt;
&lt;p&gt;Sans séparation des pouvoirs,&lt;&#x2F;p&gt;
&lt;p&gt;Tout est devenu possible&lt;&#x2F;p&gt;
&lt;p&gt;Là où la NSA le faisait en lousedé&lt;&#x2F;p&gt;
&lt;p&gt;La France le fait inscrire dans sa loi&lt;&#x2F;p&gt;
&lt;p&gt;T&#x27;en fais pas, tu n&#x27;es pas seule, ils ont aussi eu notre intimité&lt;&#x2F;p&gt;
&lt;p&gt;Dans cette société panoptique nous sommes enfermés&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;&#x2F;img&#x2F;2013-12-22-liberte-cherie&#x2F;sad-boy-plays-piano-13879939285B6.jpg&quot; alt=&quot;Boy thinking&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</description>
      </item>
    </channel>
</rss>
