# rss_item

guid: http://blog.rom1v.com/2017/01/commentaires-statiques-avec-jekyll
title: Commentaires statiques avec Jekyll
url: http://blog.rom1v.com/2017/01/commentaires-statiques-avec-jekyll/
feedurl: http://blog.rom1v.com/feed/
content:
<p>Pour ce blog, j’ai abandonné
<a href="https://fr.wikipedia.org/wiki/WordPres://fr.wordpress.org/">Wordpress</a> pour
<a href="https://jekyllrb.com/">Jekyll</a>, un moteur de blog <em>statique</em>.</p>

<p>Ainsi, j’écris mes articles en <a href="https://fr.wikipedia.org/wiki/Markdown">markdown</a> dans mon <a href="https://fr.wikipedia.org/wiki/Vim">éditeur favori</a>, je
les <em>commite</em> dans un <a href="https://github.com/rom1v/blog.rom1v.com/">dépôt git</a>, et je génère le blog avec :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>jekyll build
</code></pre></div>

<p>Le contenu hébergé étant statique, les pages ainsi générées à partir des sources
sont renvoyées telles quelles.</p>

<p>Ce fonctionnement a beaucoup d’avantages :</p>

<ul>
  <li>le temps de réponse est minimal ;</li>
  <li>la sécurité est largement accrue ;</li>
  <li>la maintenance est simplifiée (pas de mises à jour de sécurité régulières) ;</li>
  <li>le backup est trivial (<code class="highlighter-rouge">git clone</code>, pas de base de données).</li>
</ul>

<h2 id="sans-commentaires">Sans commentaires</h2>

<p>L’inconvénient, c’est qu’un contenu statique est difficilement conciliable avec
le support des commentaires (il faut bien d’une manière ou d’une autre exécuter
du code lors de la réception d’un commentaire).</p>

<p>Il y a plusieurs manières de contourner le problème.</p>

<p>Il est par exemple possible d’en déporter la gestion (sur un service en ligne
comme <a href="http://www.perfectlyrandom.org/2014/06/29/adding-disqus-to-your-jekyll-powered-github-pages/">Disqus</a> ou un équivalent libre – <a href="https://posativ.org/isso/">isso</a> – à héberger
soi-même). Ainsi, les commentaires peuvent être chargés séparément par le client
en <em>Javascript</em>.</p>

<p>Au lieu de cela, j’ai choisi d’intégrer les commentaires aux sources du blog.
Voici comment.</p>

<p>L’objectif est d’une part de pouvoir <strong>stocker</strong> et <strong>afficher</strong> les commentaires
existants, et d’autre part de fournir aux lecteurs la possibilité d’en
<strong>soumettre</strong> de nouveaux, qui me seront <strong>envoyés par e-mail</strong>.</p>

<p>Je me suis principalement inspiré du contenu de <a href="http://theshed.hezmatt.org/jekyll-static-comments/">Jekyll::StaticComments</a>, même
si, comme nous allons le voir, je n’utilise pas le plug-in lui-même.</p>

<h2 id="stockage">Stockage</h2>

<p>L’idée est de stocker les commentaires quelque part dans les sources du site au
format <a href="https://fr.wikipedia.org/wiki/YAML">YAML</a>.</p>

<p>Le plugin <em>Jekyll::StaticComments</em> nécessite de stocker <a href="https://github.com/mpalmer/jekyll-static-comments/blob/master/README.md#technical-details">un fichier par
commentaire</a> dans un dossier spécial (<code class="highlighter-rouge">_comments</code>) parsé par un
script à insérer dans le répertoire <code class="highlighter-rouge">_plugins</code>.</p>

<p>Personnellement, je préfère avoir tous les commentaires d’un même post regroupés
au sein d’un même fichier. Et pour cela, pas besoin de plug-in : nous pouvons
faire <a href="http://stevesspace.com/2014/04/static-jekyll-comments/">correspondre</a> à chaque post dans <code class="highlighter-rouge">_posts</code> une liste de
commentaires dans <code class="highlighter-rouge">_data</code> (un répertoire géré nativement par <em>Jekyll</em>).</p>

<p>Par exemple, ce billet est stocké dans :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>_posts/2017-01-09-commentaires-statiques-avec-jekyll.md
</code></pre></div>

<p>Dans l’idéal, je voudrais que les commentaires associés soient stockés dans :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>_data/comments-2017-01-09-commentaires-statiques-avec-jekyll.yaml
</code></pre></div>

<p>En pratique, pour des raisons techniques (<a href="https://github.com/jekyll/jekyll/issues/633"><em>Jekyll</em> ne donne pas accès au nom du
fichier</a>), le nom du fichier ne contient pas le numéro du jour :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>_data/comments-2017-01-commentaires-statiques-avec-jekyll.yaml
</code></pre></div>

<p>Il suffit alors de stocker dans ces fichiers les commentaires sous cette forme :</p>

<figure class="highlight"><pre><code class="language-yaml" data-lang="yaml"><span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s">1</span>
  <span class="s">author</span><span class="pi">:</span> <span class="s">this_is_me</span>
  <span class="s">date</span><span class="pi">:</span> <span class="s">2017-01-02 10:11:12+01:00</span>
  <span class="s">contents</span><span class="pi">:</span> <span class="pi">|</span>
    <span class="no">Bonjour,</span>

    <span class="no">Ceci est un commentaire écrit en _markdown_.</span>
<span class="pi">-</span> <span class="s">id</span><span class="pi">:</span> <span class="s">2</span>
  <span class="s">author</span><span class="pi">:</span> <span class="s">dev42</span>
  <span class="s">author-url</span><span class="pi">:</span> <span class="s">https://github.com</span>
  <span class="s">date</span><span class="pi">:</span> <span class="s">2017-01-02 12:11:10+01:00</span>
  <span class="s">contents</span><span class="pi">:</span> <span class="pi">|</span>
    <span class="no">&gt; Ceci est un commentaire écrit en _markdown_.</span>

    <span class="no">Et ça supporte aussi le [Liquid](https://jekyllrb.com/docs/templates/) :</span>

    <span class="no">{% highlight c %}</span>
    <span class="no">int main() {</span>
        <span class="no">return 0;</span>
    <span class="no">}</span>
    <span class="no">{% endhighlight %}</span></code></pre></figure>

<p>Pour des exemples réels, voir les <a href="https://github.com/rom1v/blog.rom1v.com/tree/master/_data">sources des commentaires</a> de ce
blog.</p>

<h2 id="affichage">Affichage</h2>

<p>Maintenant que nous avons les données des commentaires, nous devons les
afficher.</p>

<p>Il faut d’abord trouver la liste des commentaires associée à la page courante.</p>

<p>Comme nous ne pouvons pas récupérer directement le nom du fichier d’une page,
nous devons reconstruire la chaîne à partir de la <a href="https://jekyllrb.com/docs/variables/#page-variables">variable</a> <code class="highlighter-rouge">page.id</code>, qui
ici vaut :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>/2017/01/commentaires-statiques-avec-jekyll
</code></pre></div>

<p>Cette ligne de <em>Liquid</em> :</p>

<figure class="highlight"><pre><code class="language-liquid" data-lang="liquid">comments<span class="p">{{</span><span class="w"> </span><span class="nv">page</span><span class="p">.</span><span class="nv">id</span><span class="w"> </span><span class="p">|</span><span class="w"> </span><span class="nf">replace</span><span class="p">:</span><span class="w"> </span><span class="s1">'/'</span><span class="p">,</span><span class="w"> </span><span class="s1">'-'</span><span class="w"> </span><span class="p">}}</span></code></pre></figure>

<p>donne la valeur :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>comments-2017-01-commentaires-statiques-avec-jekyll
</code></pre></div>

<p>Nous avons donc tout ce dont nous avons besoin pour créer le <em>template</em> de
commentaires (à stocker dans <a href="https://github.com/rom1v/blog.rom1v.com/blob/master/_includes/comments.html"><code class="highlighter-rouge">_include/comments.html</code></a>) :</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html">{% capture commentid %}comments{{ page.id | replace: '/', '-' }}{% endcapture %}
{% if site.data[commentid] %}
<span class="nt">&lt;h2</span> <span class="na">id=</span><span class="s">"comments"</span><span class="nt">&gt;</span>Commentaires<span class="nt">&lt;/h2&gt;</span>
<span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"comments"</span><span class="nt">&gt;</span>
    {% for comment in site.data[commentid] %}
        <span class="nt">&lt;div</span> <span class="na">id=</span><span class="s">"comment-{{ comment.id }}"</span> <span class="na">class=</span><span class="s">"comment"</span> <span class="nt">/&gt;</span>
            <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"comment-author"</span><span class="nt">&gt;</span>
                {% if (comment.author-url) %}
                    <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"{{comment.author-url}}"</span><span class="nt">&gt;</span>
                {% endif %}
                {{ comment.author }}
                {% if (comment.author-url) %}
                    <span class="nt">&lt;/a&gt;</span>
                {% endif %}
            <span class="nt">&lt;/div&gt;</span>
            <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"comment-date"</span><span class="nt">&gt;</span>
                <span class="nt">&lt;a</span> <span class="na">href=</span><span class="s">"#comment-{{ comment.id }}"</span><span class="nt">&gt;</span>
                    {{ comment.date | date: "%-d %B %Y, %H:%M" }}
                <span class="nt">&lt;/a&gt;</span>
            <span class="nt">&lt;/div&gt;</span>
            <span class="nt">&lt;div</span> <span class="na">class=</span><span class="s">"comment-contents"</span><span class="nt">&gt;</span>
                {{ comment.contents | liquify | markdownify }}
            <span class="nt">&lt;/div&gt;</span>
        <span class="nt">&lt;/div&gt;</span>
    {% endfor %}
<span class="nt">&lt;/div&gt;</span></code></pre></figure>

<p>Il suffit alors d’inclure cette page à l’endroit où vous souhaitez insérer les
commentaires (typiquement dans <a href="https://github.com/rom1v/blog.rom1v.com/blob/master/_layouts/post.html"><code class="highlighter-rouge">_layout/post.html</code></a>) :</p>

<figure class="highlight"><pre><code class="language-liquid" data-lang="liquid"><span class="p">{%</span><span class="w"> </span><span class="nt">include</span><span class="w"> </span><span class="na">comments</span><span class="p">.</span><span class="na">html</span><span class="w"> </span><span class="p">%}</span></code></pre></figure>

<h2 id="formulaire">Formulaire</h2>

<p>Pour proposer aux utilisateurs de poster de nouveaux commentaires, il nous faut
un formulaire.</p>

<p>À titre d’exemple, voici le mien (intégré à
<a href="https://github.com/rom1v/blog.rom1v.com/blob/master/_includes/comments.html"><code class="highlighter-rouge">_include/comments.html</code></a>) :</p>

<figure class="highlight"><pre><code class="language-html" data-lang="html"><span class="nt">&lt;h3</span> <span class="na">class=</span><span class="s">"comment-title"</span><span class="nt">&gt;</span>Poster un commentaire<span class="nt">&lt;/h3&gt;</span>
<span class="nt">&lt;form</span> <span class="na">method=</span><span class="s">"POST"</span> <span class="na">action=</span><span class="s">"/comments/submit.php"</span><span class="nt">&gt;</span>
    <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"hidden"</span> <span class="na">name=</span><span class="s">"post_id"</span> <span class="na">value=</span><span class="s">"{{ page.id }}"</span> <span class="nt">/&gt;</span>
    <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"hidden"</span> <span class="na">name=</span><span class="s">"return_url"</span> <span class="na">value=</span><span class="s">"{{ page.url }}"</span> <span class="nt">/&gt;</span>
    <span class="nt">&lt;table</span> <span class="na">class=</span><span class="s">"comment-table"</span><span class="nt">&gt;</span>
        <span class="nt">&lt;tr&gt;</span>
            <span class="nt">&lt;th&gt;</span>Nom :<span class="nt">&lt;/th&gt;</span>
            <span class="nt">&lt;td&gt;</span>
                <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">size=</span><span class="s">"25"</span> <span class="na">name=</span><span class="s">"name"</span> <span class="nt">/&gt;</span>
                <span class="nt">&lt;em&gt;</span>(requis)<span class="nt">&lt;/em&gt;</span>
            <span class="nt">&lt;/td&gt;</span>
        <span class="nt">&lt;/tr&gt;</span>
        <span class="nt">&lt;tr&gt;</span>
            <span class="nt">&lt;th&gt;</span>E-mail :<span class="nt">&lt;/th&gt;</span>
            <span class="nt">&lt;td&gt;</span>
                <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">size=</span><span class="s">"25"</span> <span class="na">name=</span><span class="s">"email"</span> <span class="nt">/&gt;</span>
                <span class="nt">&lt;em&gt;</span>(requis, non publié)<span class="nt">&lt;/em&gt;</span>
            <span class="nt">&lt;/td&gt;</span>
        <span class="nt">&lt;/tr&gt;</span>
        <span class="nt">&lt;tr&gt;</span>
            <span class="nt">&lt;th&gt;</span>Site web :<span class="nt">&lt;/th&gt;</span>
            <span class="nt">&lt;td&gt;</span>
                <span class="nt">&lt;input</span> <span class="na">type=</span><span class="s">"text"</span> <span class="na">size=</span><span class="s">"25"</span> <span class="na">name=</span><span class="s">"url"</span> <span class="nt">/&gt;</span>
                <span class="nt">&lt;em&gt;</span>(optionnel)<span class="nt">&lt;/em&gt;</span>
            <span class="nt">&lt;/td&gt;</span>
        <span class="nt">&lt;/tr&gt;</span>
        <span class="nt">&lt;tr&gt;</span>
            <span class="nt">&lt;td</span> <span class="na">colspan=</span><span class="s">"2"</span><span class="nt">&gt;</span>
                <span class="nt">&lt;textarea</span> <span class="na">name=</span><span class="s">"comment"</span> <span class="na">rows=</span><span class="s">"10"</span><span class="nt">&gt;&lt;/textarea&gt;</span>
            <span class="nt">&lt;/td&gt;</span>
        <span class="nt">&lt;/tr&gt;</span>
        <span class="nt">&lt;tr&gt;</span>
            <span class="nt">&lt;td</span> <span class="na">colspan=</span><span class="s">"2"</span><span class="nt">&gt;</span>
                <span class="nt">&lt;input</span> <span class="na">class=</span><span class="s">"comment-submit"</span> <span class="na">type=</span><span class="s">"submit"</span> <span class="na">value=</span><span class="s">"Envoyer"</span> <span class="nt">/&gt;</span>
            <span class="nt">&lt;/td&gt;</span>
        <span class="nt">&lt;/tr&gt;</span>
    <span class="nt">&lt;/table&gt;</span>
<span class="nt">&lt;/form&gt;</span></code></pre></figure>

<p>Ce formulaire est affiché sous les commentaires existants.</p>

<h2 id="traitement">Traitement</h2>

<p>L’<code class="highlighter-rouge">action</code> du formulaire précédent pointait sur
<a href="https://github.com/rom1v/blog.rom1v.com/blob/master/comments/submit.php"><code class="highlighter-rouge">comments/submit.php</code></a>. Il nous reste donc à écrire dans ce fichier
le code à exécuter lorsqu’un utilisateur envoie un commentaire au serveur.</p>

<p>Ce sera la seule partie “dynamique” du site.</p>

<p>Voici les parties importantes de <a href="https://github.com/rom1v/blog.rom1v.com/blob/master/comments/submit.php"><code class="highlighter-rouge">comments/submit.php</code></a> (basé sur
<a href="https://github.com/mpalmer/jekyll-static-comments/blob/master/commentsubmit.php">la version de Jekyll::StaticComments</a>) :</p>

<figure class="highlight"><pre><code class="language-php" data-lang="php"><span class="cp">&lt;?php</span>
<span class="nv">$DATE_FORMAT</span> <span class="o">=</span> <span class="s2">"Y-m-d H:i:sP"</span><span class="p">;</span>
<span class="nv">$EMAIL_ADDRESS</span> <span class="o">=</span> <span class="s2">"your@email"</span><span class="p">;</span>
<span class="nv">$SUBJECT</span> <span class="o">=</span> <span class="s2">"Nouveau commentaire"</span><span class="p">;</span>
<span class="nv">$COMMENT_SENT</span> <span class="o">=</span> <span class="s2">"sent.html"</span><span class="p">;</span>

<span class="nv">$msg</span> <span class="o">=</span> <span class="s2">"post_id: "</span> <span class="o">.</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">"post_id"</span><span class="p">]</span> <span class="o">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"email: "</span> <span class="o">.</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">"email"</span><span class="p">]</span> <span class="o">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"---</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"- id: ?</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"  author: "</span> <span class="o">.</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">"name"</span><span class="p">]</span> <span class="o">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="k">if</span> <span class="p">(</span><span class="nv">$_POST</span><span class="p">[</span><span class="s2">"url"</span><span class="p">]</span> <span class="o">!==</span> <span class="s1">''</span><span class="p">)</span>
<span class="p">{</span>
    <span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"  author-url: "</span> <span class="o">.</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">"url"</span><span class="p">]</span> <span class="o">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="p">}</span>
<span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"  date: "</span> <span class="o">.</span> <span class="nb">date</span><span class="p">(</span><span class="nv">$DATE_FORMAT</span><span class="p">)</span> <span class="o">.</span> <span class="s2">"</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$msg</span> <span class="o">.=</span> <span class="s2">"  contents: |</span><span class="se">\n</span><span class="s2">"</span> <span class="o">.</span> <span class="nv">$_POST</span><span class="p">[</span><span class="s2">"comment"</span><span class="p">];</span>

<span class="nv">$headers</span> <span class="o">=</span> <span class="s2">"From: </span><span class="nv">$EMAIL_ADDRESS</span><span class="se">\n</span><span class="s2">"</span><span class="p">;</span>
<span class="nv">$headers</span> <span class="o">.=</span> <span class="s2">"Content-Type: text/plain; charset=utf-8"</span><span class="p">;</span>

<span class="k">if</span> <span class="p">(</span><span class="nb">mail</span><span class="p">(</span><span class="nv">$EMAIL_ADDRESS</span><span class="p">,</span> <span class="nv">$SUBJECT</span><span class="p">,</span> <span class="nv">$msg</span><span class="p">,</span> <span class="nv">$headers</span><span class="p">))</span>
<span class="p">{</span>
    <span class="k">include</span> <span class="nv">$COMMENT_SENT</span><span class="p">;</span>
<span class="p">}</span>
<span class="k">else</span>
<span class="p">{</span>
    <span class="k">echo</span> <span class="s2">"Le commentaire n'a pas pu être envoyé."</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>

<p>Quand un commentaire est envoyé avec succès, la page
<a href="https://github.com/rom1v/blog.rom1v.com/blob/master/comments/sent.html"><code class="highlighter-rouge">comments/sent.html</code></a> est affichée à l’utilisateur.</p>

<p>Ainsi, lorsqu’un commentaire est posté, je reçois un mail :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>post_id: /2017/01/commentaires-statiques-avec-jekyll
email: my@email
---
- id: ?
  author: ®om
  author-url: http://blog.rom1v.com
  date: 2017-01-09 19:27:10+01:00
  contents: |
Ceci est un test.
</code></pre></div>

<p>J’ai d’ailleurs ajouté une règle <a href="/2010/01/trier-ses-mails-directement-sur-le-serveur-procmail/">procmail</a> pour que ces mails arrivent dans
un dossier dédié.</p>

<p>Je peux alors copier le contenu dans le <code class="highlighter-rouge">.yaml</code> correspondant, formatter le
commentaire (entre autres l’indenter de 4 espaces, ce qu’on pourrait
automatiser), et le commiter.</p>

<h2 id="rsum">Résumé</h2>

<p>Une fois mis en place, vous devriez donc avoir les fichiers suivants :</p>

<ul>
  <li><code class="highlighter-rouge">_data/comments-*.yaml</code></li>
  <li><code class="highlighter-rouge">_include/comments.html</code></li>
  <li><code class="highlighter-rouge">comments/submit.php</code></li>
  <li><code class="highlighter-rouge">comments/sent.html</code></li>
</ul>

<h2 id="conclusion">Conclusion</h2>

<p>Je souhaitais depuis longtemps migrer vers un moteur de blog statique, qui
correspond davantage à ma façon d’écrire des articles, et offre beaucoup
d’avantages (légèreté, sécurité, maintenance…).</p>

<p>Je suis très content d’y être parvenu sans perdre les commentaires ni la
possibilité d’en poster de nouveaux.</p>

<p>Certes, la validation est très manuelle, mais c’est le prix à payer pour avoir
des commentaires statiques. Pour un blog avec une fréquence de commentaires
assez faible, je pense que ce n’est pas très gênant.</p>


guid: http://blog.rom1v.com/2017/01/cpp-sans-pointeurs
title: C++ sans *pointeurs
url: http://blog.rom1v.com/2017/01/cpp-sans-pointeurs/
feedurl: http://blog.rom1v.com/feed/
content:
<p>Les <a href="https://fr.wikipedia.org/wiki/Pointeur_%28programmation%29">pointeurs</a> sont utilisés plus souvent que nécessaire en <a href="https://fr.wikipedia.org/wiki/C%2B%2B">C++</a>.</p>

<p>Je voudrais présenter ici comment caractériser les utilisations abusives et par
quoi les remplacer.</p>

<h2 id="objectifs">Objectifs</h2>

<p>La décision d’utiliser des pointeurs dépend en grande partie de l’<a href="https://fr.wikipedia.org/wiki/Interface_de_programmation">API</a> des
objets utilisés.</p>

<p><em>API est à comprendre dans un sens très large : je considère que des classes
utilisées dans une autre partie d’une même application exposent une API.</em></p>

<p>L’objectif est donc de concevoir des API de manière à ce que leur utilisation ne
nécessite pas de manipuler de pointeurs, ni même si possible de <em>smart
pointers</em>.</p>

<p>Cela peut paraître surprenant, mais c’est en fait ainsi que vous utilisez les
classes de la <a href="https://fr.wikipedia.org/wiki/Standard_Template_Library">STL</a> ou de <a href="https://fr.wikipedia.org/wiki/Qt">Qt</a> : vos méthodes ne retournent jamais
un <em>raw pointer</em> ni un <em>smart pointer</em> vers une <em>string</em> nouvellement créée.</p>

<p>De manière générale, vous n’écririez pas ceci :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="c1">// STL version
</span><span class="n">string</span> <span class="o">*</span><span class="nf">getName</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="k">new</span> <span class="n">string</span><span class="p">(</span><span class="s">"my name"</span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">// Qt version
</span><span class="n">QString</span> <span class="o">*</span><span class="nf">getName</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="k">new</span> <span class="n">QString</span><span class="p">(</span><span class="s">"my name"</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>

<p>ni ceci :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="c1">// STL version
</span><span class="n">shared_ptr</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span> <span class="n">getName</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="n">make_shared</span><span class="o">&lt;</span><span class="n">string</span><span class="o">&gt;</span><span class="p">(</span><span class="s">"my name"</span><span class="p">);</span>
<span class="p">}</span>

<span class="c1">// Qt version
</span><span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">QString</span><span class="o">&gt;</span> <span class="n">getName</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">QString</span><span class="o">&gt;::</span><span class="n">create</span><span class="p">(</span><span class="s">"my name"</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>

<p>À la place, vous écririez sûrement :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="c1">// STL version
</span><span class="n">string</span> <span class="nf">getName</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="s">"my name"</span><span class="p">;</span>
<span class="p">}</span>

<span class="c1">// Qt version
</span><span class="n">QString</span> <span class="nf">getName</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="s">"my name"</span><span class="p">;</span>
<span class="p">}</span></code></pre></figure>

<p>Notre objectif est d’écrire des classes qui s’utiliseront de la même manière.</p>

<h2 id="ownership">Ownership</h2>

<p>Il faut distinguer deux types de <em>raw pointers</em> :</p>

<ol>
  <li>ceux qui détiennent l’objet pointé (<strong><em>owning</em></strong>), qui devront être
libérés ;</li>
  <li>ceux qui ne le détiennent pas (<strong><em>non-owning</em></strong>).</li>
</ol>

<p>Le plus simple est de les comparer sur un exemple.</p>

<h3 id="owning">Owning</h3>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Info</span> <span class="o">*</span><span class="nf">getInfo</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="k">new</span> <span class="n">Info</span><span class="p">(</span><span class="cm">/* … */</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">doSomething</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">Info</span> <span class="o">*</span><span class="n">info</span> <span class="o">=</span> <span class="n">getInfo</span><span class="p">();</span>
    <span class="c1">// info must be deleted
</span><span class="p">}</span></code></pre></figure>

<p>Ici, nous avons la responsabilité de supprimer <code class="highlighter-rouge">info</code> au bon moment.</p>

<p><strong>C’est ce type de pointeurs dont nous voulons nous débarrasser.</strong></p>

<h3 id="non-owning">Non-owning</h3>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">void</span> <span class="nf">writeDataTo</span><span class="p">(</span><span class="n">QBuffer</span> <span class="o">*</span><span class="n">buffer</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">buffer</span><span class="o">-&gt;</span><span class="n">write</span><span class="p">(</span><span class="s">"c++"</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">doSomething</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">QBuffer</span> <span class="n">buffer</span><span class="p">;</span>
    <span class="n">writeDataTo</span><span class="p">(</span><span class="o">&amp;</span><span class="n">buffer</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>

<p>Ici, le pointeur permet juste de passer l’adresse de l’objet, mais la méthode
<code class="highlighter-rouge">writeDataTo(…)</code> ne doit pas gérer sa durée de vie : elle ne le <em>détient</em> donc
pas.</p>

<p><strong>Cet usage est tout-à-fait légitime, nous souhaitons le conserver.</strong></p>

<p>Pour savoir si un pointeur est <em>owning</em> ou non, il suffit de se poser la
question suivante : est-ce que lui affecter <code class="highlighter-rouge">nullptr</code> provoquerait une <a href="https://en.wikipedia.org/wiki/Memory_leak">fuite
mémoire</a> ?</p>

<h2 id="pourquoi">Pourquoi ?</h2>

<p>Voici quelques exemples illustrant pourquoi nous voulons éviter les <em>owning raw
pointers</em>.</p>

<h3 id="fuite-mmoire">Fuite mémoire</h3>

<p>Il est facile d’oublier de supprimer un pointeur dans des cas particuliers.</p>

<p>Par exemple :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">bool</span> <span class="nf">parse</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">Parser</span> <span class="o">*</span><span class="n">parser</span> <span class="o">=</span> <span class="n">createParser</span><span class="p">();</span>
    <span class="n">QFile</span> <span class="n">file</span><span class="p">(</span><span class="s">"file.txt"</span><span class="p">);</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">file</span><span class="p">.</span><span class="n">open</span><span class="p">(</span><span class="n">QIODevice</span><span class="o">::</span><span class="n">ReadOnly</span><span class="p">))</span>
        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
    <span class="kt">bool</span> <span class="n">result</span> <span class="o">=</span> <span class="n">parser</span><span class="o">-&gt;</span><span class="n">parse</span><span class="p">(</span><span class="o">&amp;</span><span class="n">file</span><span class="p">);</span>
    <span class="k">delete</span> <span class="n">parser</span><span class="p">;</span>
    <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
    <span class="c1">// parser leaked if open failed
</span><span class="p">}</span></code></pre></figure>

<p>Ici, si l’ouverture du fichier a échoué, <code class="highlighter-rouge">parser</code> ne sera jamais libéré.</p>

<p>L’exemple suivant est encore plus significatif :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Result</span> <span class="o">*</span><span class="nf">execute</span><span class="p">()</span> <span class="p">{</span>
    <span class="c1">// …
</span>    <span class="k">return</span> <span class="k">new</span> <span class="n">Result</span><span class="p">(</span><span class="cm">/* … */</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">doWork</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">execute</span><span class="p">();</span>
    <span class="c1">// result leaked
</span><span class="p">}</span></code></pre></figure>

<p>Appeler une méthode sans s’occuper du résultat peut provoquer des fuites
mémoires.</p>

<h3 id="double-suppression">Double suppression</h3>

<p>Il est également possible, par inattention, de supprimer plusieurs fois le même
pointeur (ce qui entraîne un <a href="/2014/10/comportement-indefini-et-optimisation/"><em>undefined behavior</em></a>).</p>

<p>Par exemple, si <code class="highlighter-rouge">device</code> fait partie de la liste <code class="highlighter-rouge">devices</code>, ce code le supprime
deux fois :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">delete</span> <span class="n">device</span><span class="p">;</span>
<span class="n">qDeleteAll</span><span class="p">(</span><span class="n">devices</span><span class="p">);</span>
<span class="o">//</span> <span class="n">device</span> <span class="n">is</span> <span class="n">deleted</span> <span class="n">twice</span></code></pre></figure>

<h3 id="utilisation-aprs-suppression">Utilisation après suppression</h3>

<p>L’utilisation d’un pointeur après sa suppression est également indéfinie.</p>

<p>Je vais prendre un exemple réel en Qt.</p>

<p>Supposons qu’une classe <code class="highlighter-rouge">DeviceMonitor</code> surveille le branchement de
périphériques, et crée pour chacun un objet <code class="highlighter-rouge">Device</code>.</p>

<p><a id="suppression-complexe"></a>
Lorsqu’un périphérique est débranché, un <a href="http://doc.qt.io/qt-5/signalsandslots.html">signal Qt</a> provoque
l’exécution du <em>slot</em> <code class="highlighter-rouge">DeviceMonitor::onDeviceLeft(Device *)</code>. Nous voulons
alors signaler au reste de l’application que le device est parti (<em>signal</em>
<code class="highlighter-rouge">DeviceMonitor::deviceLeft(Device *)</code>), puis supprimer l’object <code class="highlighter-rouge">device</code>
correspondant :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">void</span> <span class="n">DeviceMonitor</span><span class="o">::</span><span class="n">onDeviceLeft</span><span class="p">(</span><span class="n">Device</span> <span class="o">*</span><span class="n">device</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">emit</span> <span class="n">deviceLeft</span><span class="p">(</span><span class="n">device</span><span class="p">);</span>
    <span class="k">delete</span> <span class="n">device</span><span class="p">;</span>
    <span class="c1">// slots may use the device after its deletion
</span>    <span class="c1">// device-&gt;deleteLater() not sufficient
</span><span class="p">}</span></code></pre></figure>

<p>Mais c’est loin d’être trivial.</p>

<p>Si nous le supprimons immédiatement comme ceci, et qu’un <em>slot</em> est branché à
<code class="highlighter-rouge">DeviceMonitor::deviceLeft(Device *)</code> en
<a href="http://doc.qt.io/qt-5/qt.html#ConnectionType-enum"><code class="highlighter-rouge">Qt::QueuedConnection</code></a>, alors il est possible que le pointeur
soit déjà supprimé quand ce <em>slot</em> sera exécuté.</p>

<p>Un proverbe dit que quand ça crashe avec un <code class="highlighter-rouge">delete</code>, <em>“il faut appeller
<a href="http://doc.qt.io/qt-5/qobject.html#deleteLater"><code class="highlighter-rouge">deleteLater()</code></a> pour corriger le problème”</em> :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">device</span><span class="o">-&gt;</span><span class="n">deleteLater</span><span class="p">();</span></code></pre></figure>

<p>Mais malheureusement, ici, c’est faux : si le <em>slot</em> branché au <em>signal</em>
<code class="highlighter-rouge">DeviceMonitor::deviceLeft(Device *)</code> est associé à un <a href="http://doc.qt.io/qt-5/qobject.html"><code class="highlighter-rouge">QObject</code></a>
vivant dans un autre <a href="http://doc.qt.io/qt-5/qobject.html#thread-affinity">thread</a>, rien ne garantit que son
exécution aura lieu avant la suppression du pointeur.</p>

<p>L’utilisation des <em>owning raw pointers</em> n’est donc pas seulement vulnérable aux
erreurs d’inattention (comme dans les exemples précédents) : dans des cas plus
complexes, il devient <strong>difficile de déterminer quand supprimer le pointeur</strong>.</p>

<h3 id="responsabilit">Responsabilité</h3>

<p>De manière plus générale, lorsque nous avons un pointeur, nous ne savons pas
forcément qui a la responsabilité de le supprimer, ni comment le supprimer :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Data</span> <span class="o">*</span><span class="n">data</span> <span class="o">=</span> <span class="n">getSomeData</span><span class="p">();</span>
<span class="k">delete</span> <span class="n">data</span><span class="p">;</span> <span class="c1">// ?
</span><span class="n">free</span><span class="p">(</span><span class="n">data</span><span class="p">);</span> <span class="c1">// ?
</span><span class="n">custom_deleter</span><span class="p">(</span><span class="n">data</span><span class="p">);</span> <span class="o">//</span> <span class="o">?</span></code></pre></figure>

<p><em>Qt fournit un mécanisme pour supprimer automatiquement les <code class="highlighter-rouge">QObject *</code> quand
leur parent est détruit. Cependant, cette fonctionnalité ne s’applique qu’aux
<a href="https://fr.wikipedia.org/wiki/Composition_%28programmation%29">relations de composition</a>.</em></p>

<p>Résumons les inconvénients des <em>owning raw pointeurs</em> :</p>

<ul>
  <li>la gestion mémoire est manuelle ;</li>
  <li>leur utilisation est propice aux erreurs ;</li>
  <li>la responsabilité de suppression n’est pas apparente ;</li>
  <li>déterminer quand supprimer le pointeur peut être difficile.</li>
</ul>

<h2 id="valeurs">Valeurs</h2>

<p>Laissons de côté les pointeurs quelques instants pour observer ce qu’il se passe
avec de simples <em>valeurs</em> (des <em>objets</em> plutôt que des <em>pointeurs vers des
objets</em>) :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">struct</span> <span class="n">Vector</span> <span class="p">{</span>
    <span class="kt">int</span> <span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="n">z</span><span class="p">;</span>
<span class="p">};</span>

<span class="n">Vector</span> <span class="nf">transform</span><span class="p">(</span><span class="k">const</span> <span class="n">Vector</span> <span class="o">&amp;</span><span class="n">v</span><span class="p">)</span> <span class="p">{</span>
    <span class="k">return</span> <span class="p">{</span> <span class="o">-</span><span class="n">v</span><span class="p">.</span><span class="n">x</span><span class="p">,</span> <span class="n">v</span><span class="p">.</span><span class="n">z</span><span class="p">,</span> <span class="n">v</span><span class="p">.</span><span class="n">y</span> <span class="p">};</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="nf">compute</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">Vector</span> <span class="n">vector</span> <span class="o">=</span> <span class="n">transform</span><span class="p">({</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span> <span class="p">});</span>
    <span class="n">emit</span> <span class="n">finished</span><span class="p">(</span><span class="n">transform</span><span class="p">(</span><span class="n">vector</span><span class="p">));</span>
<span class="p">}</span></code></pre></figure>

<p>C’est plus simple : la gestion mémoire est automatique, et le code est plus sûr.
Par exemple, les fuites mémoire et les double suppressions sont impossibles.</p>

<p><strong>Ce sont des avantages dont nous souhaiterions bénéficier également pour les
pointeurs.</strong></p>

<h3 id="privilgier-les-valeurs">Privilégier les valeurs</h3>

<p>Dans les cas où les pointeurs sont utilisés uniquement pour éviter de retourner
des copies (et non pour partager des objets), il est préférable de <strong>retourner
les objets par valeur</strong> à la place.</p>

<p>Par exemple, si vous avez une classe :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">struct</span> <span class="n">Result</span> <span class="p">{</span>
    <span class="n">QString</span> <span class="n">message</span><span class="p">;</span>
    <span class="kt">int</span> <span class="n">code</span><span class="p">;</span>
<span class="p">};</span></code></pre></figure>

<p>Évitez :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Result</span> <span class="o">*</span><span class="nf">execute</span><span class="p">()</span> <span class="p">{</span>
    <span class="c1">// …
</span>    <span class="k">return</span> <span class="k">new</span> <span class="n">Result</span> <span class="p">{</span> <span class="n">message</span><span class="p">,</span> <span class="n">code</span> <span class="p">};</span>
<span class="p">}</span></code></pre></figure>

<p>Préférez :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Result</span> <span class="nf">execute</span><span class="p">()</span> <span class="p">{</span>
    <span class="c1">// …
</span>    <span class="k">return</span> <span class="p">{</span> <span class="n">message</span><span class="p">,</span> <span class="n">code</span> <span class="p">};</span>
<span class="p">}</span></code></pre></figure>

<p>Certes, dans certains cas, il est moins efficace de passer un objet par valeur
qu’à travers un pointeur (car il faut le copier).</p>

<p>Mais cette inefficacité est à relativiser.</p>

<p>D’abord parce que dans certains cas <em>(quand l’objet est copié à partir d’une
<a href="http://thbecker.net/articles/rvalue_references/section_01.html">rvalue reference</a>)</em>, la copie sera remplacée par un <a href="http://www.cprogramming.com/c++11/rvalue-references-and-move-semantics-in-c++11.html"><em>move</em></a>. Le <em>move</em>
d’un <a href="http://en.cppreference.com/w/cpp/container/vector"><code class="highlighter-rouge">vector</code></a> par exemple n’entraîne aucune copie (ni <em>move</em>) de ses
éléments.</p>

<p>Ensuite parce que les compilateurs optimisent le retour par valeur
(<a href="https://en.wikipedia.org/wiki/Return_value_optimization">RVO</a>), ce qui fait qu’en réalité dans les exemples ci-dessus, aucun <code class="highlighter-rouge">Result</code>
ni <code class="highlighter-rouge">Vector</code> n’est jamais copié ni <em>mové</em> : ils sont directement créés à
l’endroit où ils sont affectés <em>(sauf si vous compilez avec le paramètre
<code class="highlighter-rouge">-fno-elide-constructors</code>)</em>.</p>

<p>Mais évidemment, il y a des cas où nous ne pouvons pas simplement remplacer un
<em>pointeur</em> par une <em>valeur</em>, par exemple quand un même objet doit être partagé
entre différentes parties d’un programme.</p>

<p><strong>Nous voudrions les avantages des <em>valeurs</em> également pour ces cas-là.</strong> C’est
l’objectif de la suite du billet.</p>

<h2 id="idiomes-c">Idiomes C++</h2>

<p>Pour y parvenir, nous avons besoin de faire un détour par quelques <em>idiomes</em>
couramment utilisés en C++.</p>

<p>Ils ont souvent un nom étrange. Par exemple :</p>

<ul>
  <li><a href="https://en.wikipedia.org/wiki/Resource_acquisition_is_initialization">RAII</a> <em>(Resource Acquisition Is Initialization)</em></li>
  <li><a href="https://en.wikipedia.org/wiki/Opaque_pointer">PIMPL</a> <em>(Pointer to IMPLementation)</em></li>
  <li><a href="https://en.wikipedia.org/wiki/Curiously_recurring_template_pattern">CRTP</a> <em>(Curiously Recurring Template Pattern)</em></li>
  <li><a href="https://en.wikipedia.org/wiki/Substitution_failure_is_not_an_error">SFINAE</a> <em>(Substitution Failure Is Not An Error)</em></li>
  <li><a href="https://en.wikipedia.org/wiki/Immediately-invoked_function_expression">IIFE</a> <em>(Immediately-Invoked Function Expression)</em></li>
</ul>

<p>Nous allons étudier les deux premiers.</p>

<h3 id="raii">RAII</h3>

<p>Prenons un exemple simple :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">bool</span> <span class="nf">submit</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">validate</span><span class="p">())</span>
        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
    <span class="k">return</span> <span class="n">something</span><span class="p">();</span>
<span class="p">}</span></code></pre></figure>

<p>Nous souhaitons rendre cette méthode <a href="https://fr.wikipedia.org/wiki/Thread_safety">thread-safe</a> grâce à un <a href="https://fr.wikipedia.org/wiki/Exclusion_mutuelle">mutex</a>
(<a href="http://en.cppreference.com/w/cpp/thread/mutex"><code class="highlighter-rouge">std::mutex</code></a> en STL ou <a href="http://doc.qt.io/qt-5/qmutex.html"><code class="highlighter-rouge">QMutex</code></a> en Qt).</p>

<p>Supposons que <code class="highlighter-rouge">validate()</code> et <code class="highlighter-rouge">something()</code> puissent lever une <a href="http://en.cppreference.com/w/cpp/language/exceptions">exception</a>.</p>

<p>Le <em>mutex</em> doit être déverrouillé à la fin de l’exécution de la méthode. Le
problème, c’est que cela peut se produire à différents endroits, donc nous
devons gérer tous les cas :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">bool</span> <span class="nf">submit</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">mutex</span><span class="p">.</span><span class="n">lock</span><span class="p">();</span>
    <span class="k">try</span> <span class="p">{</span>
        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">validate</span><span class="p">())</span> <span class="p">{</span>
            <span class="n">mutex</span><span class="p">.</span><span class="n">unlock</span><span class="p">();</span>
            <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
        <span class="p">}</span>
        <span class="kt">bool</span> <span class="n">result</span> <span class="o">=</span> <span class="n">something</span><span class="p">();</span>
        <span class="n">mutex</span><span class="p">.</span><span class="n">unlock</span><span class="p">();</span>
        <span class="k">return</span> <span class="n">result</span><span class="p">;</span>
    <span class="p">}</span> <span class="k">catch</span> <span class="p">(...)</span> <span class="p">{</span>
        <span class="n">mutex</span><span class="p">.</span><span class="n">unlock</span><span class="p">();</span>
        <span class="k">throw</span><span class="p">;</span>
    <span class="p">}</span>
<span class="p">}</span></code></pre></figure>

<p>Le code est beaucoup plus complexe et propice aux erreurs.</p>

<p>Avec des classes utilisant RAII (<a href="http://en.cppreference.com/w/cpp/thread/lock_guard"><code class="highlighter-rouge">std::lock_guard</code></a> en STL ou
<a href="http://doc.qt.io/qt-5/qmutexlocker.html"><code class="highlighter-rouge">QMutexLocker</code></a> en Qt), c’est beaucoup plus simple :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">bool</span> <span class="nf">submit</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">QMutexLocker</span> <span class="n">locker</span><span class="p">(</span><span class="o">&amp;</span><span class="n">mutex</span><span class="p">);</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">validate</span><span class="p">())</span>
        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
    <span class="k">return</span> <span class="n">something</span><span class="p">();</span>
<span class="p">}</span></code></pre></figure>

<p>En ajoutant une seule ligne, la méthode est devenue <em>thread-safe</em>.</p>

<p>Cette technique consiste à utiliser le cycle de vie d’un objet pour acquérir une
ressource dans le constructeur (ici verrouiller le <em>mutex</em>) et la relâcher dans
le destructeur (ici le déverrouiller).</p>

<p>Voici une implémentation simplifiée possible de <a href="http://doc.qt.io/qt-5/qmutexlocker.html"><code class="highlighter-rouge">QMutexLocker</code></a> :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">QMutexLocker</span> <span class="p">{</span>
    <span class="n">QMutex</span> <span class="o">*</span><span class="n">mutex</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="k">explicit</span> <span class="n">QMutexLocker</span><span class="p">(</span><span class="n">QMutex</span> <span class="o">*</span><span class="n">mutex</span><span class="p">)</span> <span class="o">:</span> <span class="n">mutex</span><span class="p">(</span><span class="n">mutex</span><span class="p">)</span> <span class="p">{</span>
        <span class="n">mutex</span><span class="o">-&gt;</span><span class="n">lock</span><span class="p">();</span>
    <span class="p">}</span>
    <span class="o">~</span><span class="n">QMutexLocker</span><span class="p">()</span> <span class="p">{</span>
        <span class="n">mutex</span><span class="o">-&gt;</span><span class="n">unlock</span><span class="p">();</span>
    <span class="p">}</span>
<span class="p">};</span></code></pre></figure>

<p>Comme l’objet est détruit lors de la sortie du <em>scope</em> de la méthode (que ce
soit par un <code class="highlighter-rouge">return</code> ou par une exception survenue n’importe où), le <em>mutex</em>
sera <strong>toujours</strong> déverrouillé.</p>

<p>Au passage, dans l’exemple ci-dessus, nous remarquons que la variable <code class="highlighter-rouge">locker</code>
n’est jamais utilisée. RAII complexifie donc la détection des <em>variables
inutilisées</em>, car le compilateur doit détecter les effets de bords. Mais il s’en
sort bien : ici, il n’émet pas de <em>warning</em>.</p>

<h2 id="smart-pointers">Smart pointers</h2>

<p>Les <a href="https://en.wikipedia.org/wiki/Smart_pointer">smart pointers</a> utilisent RAII pour gérer automatiquement la durée de vie
des pointeurs. Il en existe plusieurs.</p>

<p>Dans la STL :</p>

<ul>
  <li><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr"><code class="highlighter-rouge">std::unique_ptr</code></a></li>
  <li><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr"><code class="highlighter-rouge">std::shared_ptr</code></a></li>
  <li><a href="http://en.cppreference.com/w/cpp/memory/weak_ptr"><code class="highlighter-rouge">std::weak_ptr</code></a></li>
  <li><a href="http://en.cppreference.com/w/cpp/memory/auto_ptr"><code class="highlighter-rouge">std::auto_ptr</code></a> <em>(à bannir)</em></li>
</ul>

<p>Dans Qt :</p>

<ul>
  <li><a href="http://doc.qt.io/qt-5/qsharedpointer.html"><code class="highlighter-rouge">QSharedPointer</code></a> (équivalent de <code class="highlighter-rouge">std::shared_ptr</code>)</li>
  <li><a href="http://doc.qt.io/qt-5/qweakpointer.html"><code class="highlighter-rouge">QWeakPointer</code></a> (équivalent de <code class="highlighter-rouge">std::weak_ptr</code>)</li>
  <li><a href="http://doc.qt.io/qt-5/qscopedpointer.html"><code class="highlighter-rouge">QScopedPointer</code></a> (ersatz de <code class="highlighter-rouge">std::unique_ptr</code>)</li>
  <li><a href="http://doc.qt.io/qt-5/qscopedarraypointer.html"><code class="highlighter-rouge">QScopedArrayPointer</code></a></li>
  <li><a href="http://doc.qt.io/qt-5/qpointer.html"><code class="highlighter-rouge">QPointer</code></a></li>
  <li><a href="http://doc.qt.io/qt-5/qshareddatapointer.html"><code class="highlighter-rouge">QSharedDataPointer</code></a></li>
  <li><a href="http://doc.qt.io/qt-5/qexplicitlyshareddatapointer.html"><code class="highlighter-rouge">QExplicitlySharedDataPointer</code></a></li>
</ul>

<h3 id="scoped-pointers">Scoped pointers</h3>

<p>Le <em>smart pointer</em> le plus simple est le <em>scoped pointer</em>. L’idée est vraiment
la même que <a href="http://doc.qt.io/qt-5/qmutexlocker.html"><code class="highlighter-rouge">QMutexLocker</code></a>, sauf qu’au lieu de vérouiller et
déverrouiller un <em>mutex</em>, il stocke un <em>raw pointer</em> et le supprime.</p>

<p>En plus de cela, comme tous les <em>smart pointers</em>, il <a href="https://en.wikipedia.org/wiki/Operator_overloading">redéfinit certains
opérateurs</a> pour pouvoir être utilisé comme un <em>raw
pointer</em>.</p>

<p>Par exemple, voici une implémentation simplifiée possible de
<a href="http://doc.qt.io/qt-5/qscopedpointer.html"><code class="highlighter-rouge">QScopedPointer</code></a> :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">template</span> <span class="o">&lt;</span><span class="k">typename</span> <span class="n">T</span><span class="o">&gt;</span>
<span class="k">class</span> <span class="nc">QScopedPointer</span> <span class="p">{</span>
    <span class="n">T</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="k">explicit</span> <span class="n">QScopedPointer</span><span class="p">(</span><span class="n">T</span> <span class="o">*</span><span class="n">p</span><span class="p">)</span> <span class="o">:</span> <span class="n">p</span><span class="p">(</span><span class="n">p</span><span class="p">)</span> <span class="p">{}</span>
    <span class="o">~</span><span class="n">QScopedPointer</span><span class="p">()</span> <span class="p">{</span> <span class="k">delete</span> <span class="n">p</span><span class="p">;</span> <span class="p">}</span>
    <span class="n">T</span> <span class="o">*</span><span class="n">data</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p</span><span class="p">;</span> <span class="p">}</span>
    <span class="k">operator</span> <span class="kt">bool</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p</span><span class="p">;</span> <span class="p">}</span>
    <span class="n">T</span> <span class="o">&amp;</span><span class="k">operator</span><span class="o">*</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="o">*</span><span class="n">p</span><span class="p">;</span> <span class="p">}</span>
    <span class="n">T</span> <span class="o">*</span><span class="k">operator</span><span class="o">-&gt;</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">p</span><span class="p">;</span> <span class="p">}</span>
<span class="k">private</span><span class="o">:</span>
    <span class="n">Q_DISABLE_COPY</span><span class="p">(</span><span class="n">QScopedPointer</span><span class="p">)</span>
<span class="p">};</span></code></pre></figure>

<p>Et un exemple d’utilisation :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="c1">// bad design (owning raw pointer)
</span><span class="n">DeviceInfo</span> <span class="o">*</span><span class="n">Device</span><span class="o">::</span><span class="n">getDeviceInfo</span><span class="p">()</span> <span class="p">{</span>
    <span class="k">return</span> <span class="k">new</span> <span class="n">DeviceInfo</span><span class="p">(</span><span class="cm">/* … */</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="n">Device</span><span class="o">::</span><span class="n">printInfo</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">QScopedPointer</span><span class="o">&lt;</span><span class="n">DeviceInfo</span><span class="o">&gt;</span> <span class="n">info</span><span class="p">(</span><span class="n">getDeviceInfo</span><span class="p">());</span>
    <span class="c1">// used like a raw pointer
</span>    <span class="k">if</span> <span class="p">(</span><span class="n">info</span><span class="p">)</span> <span class="p">{</span>
        <span class="n">qDebug</span><span class="p">()</span> <span class="o">&lt;&lt;</span> <span class="n">info</span><span class="o">-&gt;</span><span class="n">getId</span><span class="p">();</span>
        <span class="n">DeviceInfo</span> <span class="n">copy</span> <span class="o">=</span> <span class="o">*</span><span class="n">info</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="c1">// automatically deleted
</span><span class="p">}</span></code></pre></figure>

<h3 id="shared-pointers">Shared pointers</h3>

<p>Les <em>shared pointers</em> permettent de partager l’<em>ownership</em> (la responsabilité de
suppression) d’une ressource.</p>

<p>Ils contiennent un <a href="https://en.wikipedia.org/wiki/Reference_counting">compteur de références</a>, indiquant le nombre
d’instances partageant le même pointeur. Lorsque ce compteur tombe à 0, le
pointeur est supprimé (il faut donc éviter les <a href="https://en.wikipedia.org/wiki/Reference_counting#Dealing_with_reference_cycles">cycles</a>).</p>

<p>En pratique, voici ce à quoi ressemblerait une liste de <code class="highlighter-rouge">Device</code>s <em>partagés</em> par
des <a href="http://doc.qt.io/qt-5/qsharedpointer.html"><code class="highlighter-rouge">QSharedPointer</code></a>s :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">DeviceList</span> <span class="p">{</span>
    <span class="n">QList</span><span class="o">&lt;</span><span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">Device</span><span class="o">&gt;&gt;</span> <span class="n">devices</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">Device</span><span class="o">&gt;</span> <span class="n">getDevice</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span>
    <span class="kt">void</span> <span class="n">add</span><span class="p">(</span><span class="k">const</span> <span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">Device</span><span class="o">&gt;</span> <span class="o">&amp;</span><span class="n">device</span><span class="p">);</span>
    <span class="kt">void</span> <span class="n">remove</span><span class="p">(</span><span class="n">Device</span> <span class="o">*</span><span class="n">device</span><span class="p">);</span>
<span class="p">};</span>
<span class="o">//</span> <span class="n">devices</span> <span class="n">are</span> <span class="n">automatically</span> <span class="n">deleted</span> <span class="n">when</span> <span class="n">necessary</span></code></pre></figure>

<p>Le <em>partage</em> d’un pointeur découle toujours de la copie d’un <em>shared pointer</em>.
C’est la raison pour laquelle <code class="highlighter-rouge">getDevice(…)</code> et <code class="highlighter-rouge">add(…)</code> manipulent un
<a href="http://doc.qt.io/qt-5/qsharedpointer.html"><code class="highlighter-rouge">QSharedPointer</code></a>.</p>

<p>Le piège à éviter est de créér plusieurs <em>smart pointers</em> indépendants sur le
même <em>raw pointer</em>. Dans ce cas, il y aurait deux <em>refcounts</em> à 1 plutôt qu’un
<em>refcount</em> à 2, et le pointeur serait supprimé dès la destruction du premier
<em>shared pointer</em>, laissant l’autre <a href="https://fr.wikipedia.org/wiki/Dangling_pointer"><em>pendouillant</em></a>.</p>

<p><em>Petite parenthèse : la signature des méthodes <code class="highlighter-rouge">add</code> et <code class="highlighter-rouge">remove</code> sont
différentes car une suppression ne nécessite pas de <a href="https://www.youtube.com/watch?v=xnqTKD8uD64&amp;t=18m38s">manipuler la durée de
vie</a> du <code class="highlighter-rouge">Device</code> passé en paramètre.</em></p>

<blockquote>
  <p>Refcounted smart pointers are about managing te owned object’s lifetime.</p>

  <p>Copy/assign one only when you intend to manipulate the owned object’s
lifetime.</p>
</blockquote>

<p>Au passage, si en Qt vous passez vos objets de la couche C++ à la couche
<a href="https://en.wikipedia.org/wiki/QML">QML</a>, il faut aussi passer les <em>shared pointers</em> afin de ne pas casser le
partage, ce qui implique d’enregistrer le type :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">void</span> <span class="nf">registerQml</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">qRegisterMetaType</span><span class="o">&lt;</span><span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">Device</span><span class="o">&gt;&gt;</span><span class="p">();</span>
<span class="p">}</span></code></pre></figure>

<p>Listons donc les avantages des <em>shared pointers</em> :</p>

<ul>
  <li>la gestion mémoire est automatique ;</li>
  <li>l’<em>ownership</em> est géré automatiquement ;</li>
  <li>l’utilisation est moins propice aux erreurs (à part la possibilité de créer
des <em>smart pointers</em> indépendants sur le même <em>raw pointer</em>) ;</li>
</ul>

<p>Cependant, si la gestion mémoire est <strong>automatique</strong>, elle n’est pas
<strong>transparente</strong> : elle nécessite de manipuler explicitement des
<code class="highlighter-rouge">QSharedPointer</code>, ce qui est verbeux.</p>

<p>Il est certes possible d’utiliser un <a href="http://en.cppreference.com/w/cpp/language/type_alias">alias</a> (<a href="https://en.wikipedia.org/wiki/Typedef">typedef</a>) pour atténuer la
verbosité :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">using</span> <span class="n">DevicePtr</span> <span class="o">=</span> <span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">Device</span><span class="o">&gt;</span><span class="p">;</span>

<span class="k">class</span> <span class="nc">DeviceList</span> <span class="p">{</span>
    <span class="n">QList</span><span class="o">&lt;</span><span class="n">DevicePtr</span><span class="o">&gt;</span> <span class="n">devices</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="n">DevicePtr</span> <span class="n">getDevice</span><span class="p">(</span><span class="kt">int</span> <span class="n">index</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span>
    <span class="kt">void</span> <span class="n">add</span><span class="p">(</span><span class="k">const</span> <span class="n">DevicePtr</span> <span class="o">&amp;</span><span class="n">device</span><span class="p">);</span>
    <span class="kt">void</span> <span class="n">remove</span><span class="p">(</span><span class="n">Device</span> <span class="o">*</span><span class="n">device</span><span class="p">);</span>
<span class="p">};</span></code></pre></figure>

<p>Mais quoi qu’il en soit, <strong>cela reste plus complexe que des <em>valeurs</em></strong>.</p>

<p>Pour aller plus loin, nous allons devoir faire un détour inattendu, par un
<em>idiome</em> qui n’a a priori rien à voir.</p>

<h2 id="pimpl">PImpl</h2>

<p><a href="https://en.wikipedia.org/wiki/Opaque_pointer">PImpl</a> sert à réduire les dépendances de compilation.</p>

<blockquote>
  <p>Opaque pointers are a way to hide the implementation details of an interface
from ordinary clients, so that the implementation may be changed without the
need to recompile the modules using it.</p>
</blockquote>

<p>Prenons la classe <code class="highlighter-rouge">Person</code> suivante (<code class="highlighter-rouge">person.h</code>) :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">Person</span> <span class="p">{</span>
    <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
    <span class="kt">long</span> <span class="n">birth</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="n">Person</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">long</span> <span class="n">birth</span><span class="p">);</span>
    <span class="n">QString</span> <span class="n">getName</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
    <span class="kt">void</span> <span class="n">setName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">);</span>
    <span class="kt">int</span> <span class="n">getAge</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
<span class="k">private</span><span class="o">:</span>
    <span class="k">static</span> <span class="kt">long</span> <span class="n">countYears</span><span class="p">(</span><span class="kt">long</span> <span class="n">from</span><span class="p">,</span> <span class="kt">long</span> <span class="n">to</span><span class="p">);</span>
<span class="p">};</span></code></pre></figure>

<p>Elle contient juste un <em>nom</em> et un <em>âge</em>. Elle définit par ailleurs une méthode
privée, <code class="highlighter-rouge">countYears(…)</code>, qu’on imagine appelée dans <code class="highlighter-rouge">getAge()</code>.</p>

<p>Chaque classe désirant utiliser la classe <code class="highlighter-rouge">Person</code> devra l’inclure :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="cp">#include "person.h"</span></code></pre></figure>

<p>Par conséquent, à chaque modification de ces parties privées (qui sont pourtant
que des détails d’implémentation), <strong>toutes les classes incluant <code class="highlighter-rouge">person.h</code>
devront être recompilées</strong>.</p>

<p>C’est ce que <em>PImpl</em> permet d’éviter, en séparant la classe en deux :</p>

<ul>
  <li>une interface publique ;</li>
  <li>une implémentation privée.</li>
</ul>

<p>Concrètement, la classe <code class="highlighter-rouge">Person</code> précédente est la partie privée. Renommons-la :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">PersonPrivate</span> <span class="p">{</span>
    <span class="n">QString</span> <span class="n">name</span><span class="p">;</span>
    <span class="kt">long</span> <span class="n">birth</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="n">PersonPrivate</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">long</span> <span class="n">birth</span><span class="p">);</span>
    <span class="n">QString</span> <span class="n">getName</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
    <span class="kt">void</span> <span class="n">setName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">);</span>
    <span class="kt">int</span> <span class="n">getAge</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
<span class="k">private</span><span class="o">:</span>
    <span class="k">static</span> <span class="kt">long</span> <span class="n">countYears</span><span class="p">(</span><span class="kt">long</span> <span class="n">from</span><span class="p">,</span> <span class="kt">long</span> <span class="n">to</span><span class="p">);</span>
<span class="p">};</span></code></pre></figure>

<p>Créons la partie publique, définissant l’interface souhaitée :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">PersonPrivate</span><span class="p">;</span> <span class="c1">// forward declaration
</span><span class="k">class</span> <span class="nc">Person</span> <span class="p">{</span>
    <span class="n">PersonPrivate</span> <span class="o">*</span><span class="n">d</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="n">Person</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">long</span> <span class="n">birth</span><span class="p">);</span>
    <span class="n">Person</span><span class="p">(</span><span class="k">const</span> <span class="n">Person</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">);</span>
    <span class="o">~</span><span class="n">Person</span><span class="p">();</span>
    <span class="n">Person</span> <span class="o">&amp;</span><span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">Person</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">);</span>
    <span class="n">QString</span> <span class="n">getName</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
    <span class="kt">void</span> <span class="n">setName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">);</span>
    <span class="kt">int</span> <span class="n">getAge</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
<span class="p">};</span></code></pre></figure>

<p>Elle contient un pointeur vers <code class="highlighter-rouge">PersonPrivate</code>, et lui délègue tous les appels.</p>

<p>Évidemment, <code class="highlighter-rouge">Person</code> ne doit pas inclure <code class="highlighter-rouge">PersonPrivate</code>, sinon nous aurions les
mêmes dépendances de compilation, et nous n’aurions rien résolu. Il faut
utiliser à la place une <a href="https://en.wikipedia.org/wiki/Forward_declaration"><em>forward declaration</em></a>.</p>

<p>Voici son implémentation :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Person</span><span class="o">::</span><span class="n">Person</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">long</span> <span class="n">birth</span><span class="p">)</span> <span class="o">:</span>
        <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">PersonPrivate</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">birth</span><span class="p">))</span> <span class="p">{}</span>

<span class="n">Person</span><span class="o">::</span><span class="n">Person</span><span class="p">(</span><span class="k">const</span> <span class="n">Person</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">)</span> <span class="o">:</span>
        <span class="n">d</span><span class="p">(</span><span class="k">new</span> <span class="n">PersonPrivate</span><span class="p">(</span><span class="o">*</span><span class="n">other</span><span class="p">.</span><span class="n">d</span><span class="p">))</span> <span class="p">{}</span>

<span class="n">Person</span><span class="o">::~</span><span class="n">Person</span><span class="p">()</span> <span class="p">{</span> <span class="k">delete</span> <span class="n">d</span><span class="p">;</span> <span class="p">}</span>

<span class="n">Person</span> <span class="o">&amp;</span><span class="n">Person</span><span class="o">::</span><span class="k">operator</span><span class="o">=</span><span class="p">(</span><span class="k">const</span> <span class="n">Person</span> <span class="o">&amp;</span><span class="n">other</span><span class="p">)</span> <span class="p">{</span>
    <span class="o">*</span><span class="n">d</span> <span class="o">=</span> <span class="o">*</span><span class="n">other</span><span class="p">.</span><span class="n">d</span><span class="p">;</span>
    <span class="k">return</span> <span class="o">*</span><span class="k">this</span><span class="p">;</span>
<span class="p">}</span>

<span class="n">QString</span> <span class="n">Person</span><span class="o">::</span><span class="n">getName</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span>
    <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">getName</span><span class="p">();</span>
<span class="p">}</span>

<span class="kt">void</span> <span class="n">Person</span><span class="o">::</span><span class="n">setName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">d</span><span class="o">-&gt;</span><span class="n">setName</span><span class="p">(</span><span class="n">name</span><span class="p">);</span>
<span class="p">}</span>

<span class="kt">int</span> <span class="n">Person</span><span class="o">::</span><span class="n">getAge</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span>
    <span class="k">return</span> <span class="n">d</span><span class="o">-&gt;</span><span class="n">getAge</span><span class="p">();</span>
<span class="p">}</span></code></pre></figure>

<p>Le pointeur vers la classe privée est souvent nommé <code class="highlighter-rouge">d</code> car il s’agit d’un
<a href="https://wiki.qt.io/D-Pointer">d-pointer</a>.</p>

<p>Donc comme prévu, tout cela n’a rien à voir avec notre objectif d’éviter
d’utiliser des pointeurs.</p>

<h2 id="partage">Partage</h2>

<p>Mais en fait, si. <em>PImpl</em> permet de séparer les classes manipulées explicitement
de l’objet réellement modifié :</p>

<p class="center"><img src="/assets/nopointers/pimpl.png" alt="graph_pimpl" /></p>

<p>Il y a une relation 1-1 entre la classe publique et la classe privée
correspondante. Mais nous pouvons imaginer d’autres <a href="https://fr.wikipedia.org/wiki/Cardinalit%C3%A9_%28programmation%29">cardinalités</a>.</p>

<p>Par exemple, Qt <a href="http://doc.qt.io/qt-5/implicit-sharing.html">partage implicitement</a> les parties privées
d’un grand nombre de <a href="http://doc.qt.io/qt-5/implicit-sharing.html#list-of-classes">classes</a>. Il ne les copie que
lors d’une écriture (<a href="https://fr.wikipedia.org/wiki/Copy-on-write">CoW</a>) :</p>

<p class="center"><img src="/assets/nopointers/pimpl_shareddata.png" alt="graph_pimpl_shareddata" /></p>

<p>Par exemple, lorsqu’une <a href="http://doc.qt.io/qt-5/qstring.html"><code class="highlighter-rouge">QString</code></a> est copiée, la même zone mémoire
sera utilisée pour les différentes instances, jusqu’à ce qu’une modification
survienne.</p>

<p>Cependant, il ne s’agit que d’un détail d’implémentation utilisé pour améliorer
les performances. Du point de vue utilisateur, tout se passe comme si les
données étaient réellement copiées :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">QString</span> <span class="n">s1</span> <span class="o">=</span> <span class="s">"ABC"</span><span class="p">;</span>
<span class="n">QString</span> <span class="n">s2</span> <span class="o">=</span> <span class="n">s1</span><span class="p">;</span>
<span class="n">s2</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="s">"DEF"</span><span class="p">);</span>
<span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">s2</span> <span class="o">==</span> <span class="s">"ABCDEF"</span><span class="p">);</span>
<span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">s1</span> <span class="o">==</span> <span class="s">"ABC"</span><span class="p">);</span></code></pre></figure>

<p>En d’autres termes, <strong>les classes publiques ci-dessus ont une <a href="https://en.wikipedia.org/wiki/Value_semantics">sémantique de
valeur</a></strong>.</p>

<h3 id="resource-handles">Resource handles</h3>

<p>À la place, nous pouvons décider de partager inconditionnellement la partie
privée, y compris après une écriture :</p>

<p class="center"><img src="/assets/nopointers/pimpl_shared.png" alt="graph_pimpl_shared" /></p>

<p>Dans ce cas, <strong>la classe publique a sémantique d’entité</strong>. Elle est qualifiée de
<em>resource handle</em>.</p>

<p>C’est bien sûr le cas des <em>smart pointers</em> :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">Person</span><span class="o">&gt;</span> <span class="n">p1</span><span class="p">(</span><span class="k">new</span> <span class="n">Person</span><span class="p">(</span><span class="s">"ABC"</span><span class="p">,</span> <span class="mi">42</span><span class="p">));</span>
<span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">person</span><span class="o">&gt;</span> <span class="n">p2</span> <span class="o">=</span> <span class="n">p1</span><span class="p">;</span>
<span class="n">p2</span><span class="o">-&gt;</span><span class="n">setName</span><span class="p">(</span><span class="s">"DEF"</span><span class="p">);</span>
<span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">p1</span><span class="p">.</span><span class="n">getName</span><span class="p">()</span> <span class="o">==</span> <span class="s">"DEF"</span><span class="p">);</span>
<span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">p2</span><span class="p">.</span><span class="n">getName</span><span class="p">()</span> <span class="o">==</span> <span class="s">"DEF"</span><span class="p">);</span></code></pre></figure>

<p>Mais aussi d’autres classes, comme l’<a href="http://doc.qt.io/qt-5/qdomdocument.html#details">API Dom de Qt</a> :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">void</span> <span class="nf">addItem</span><span class="p">(</span><span class="k">const</span> <span class="n">QDomDocument</span> <span class="o">&amp;</span><span class="n">document</span><span class="p">,</span> <span class="k">const</span> <span class="n">QDomElement</span> <span class="o">&amp;</span><span class="n">element</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">QDomElement</span> <span class="n">root</span> <span class="o">=</span> <span class="n">document</span><span class="p">.</span><span class="n">documentElement</span><span class="p">();</span>
    <span class="n">root</span><span class="p">.</span><span class="n">insertAfter</span><span class="p">(</span><span class="n">element</span><span class="p">,</span> <span class="p">{});</span>
    <span class="c1">// the document is modified
</span><span class="p">}</span></code></pre></figure>

<h3 id="pimpl-avec-des-smart-pointers">PImpl avec des <em>smart pointers</em></h3>

<p>Tout-à-l’heure, j’ai présenté <em>PImpl</em> en utilisant un <em>owning raw pointer</em> :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">PersonPrivate</span><span class="p">;</span> <span class="c1">// forward declaration
</span><span class="k">class</span> <span class="nc">Person</span> <span class="p">{</span>
    <span class="c1">// this is a raw pointer!
</span>    <span class="n">PersonPrivate</span> <span class="o">*</span><span class="n">d</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="c1">// …
</span><span class="p">};</span></code></pre></figure>

<p>Mais en fait, à chaque type de relation correspond un type de <em>smart pointer</em>
directement utilisable pour <em>PImpl</em>.</p>

<p>Pour une relation 1-1 classique :</p>

<ul>
  <li><a href="http://en.cppreference.com/w/cpp/memory/unique_ptr"><code class="highlighter-rouge">std::unique_ptr</code></a></li>
  <li><a href="http://doc.qt.io/qt-5/qscopedpointer.html"><code class="highlighter-rouge">QScopedPointer</code></a></li>
</ul>

<p>Pour une relation 1-N à sémantique de valeur (CoW) :</p>

<ul>
  <li><a href="http://doc.qt.io/qt-5/qshareddatapointer.html"><code class="highlighter-rouge">QSharedDataPointer</code></a></li>
</ul>

<p>Pour une relation 1-N à sémantique d’entité :</p>

<ul>
  <li><a href="http://en.cppreference.com/w/cpp/memory/shared_ptr"><code class="highlighter-rouge">std::shared_ptr</code></a></li>
  <li><a href="http://doc.qt.io/qt-5/qsharedpointer.html"><code class="highlighter-rouge">QSharedPointer</code></a></li>
</ul>

<p>Par exemple, donnons à notre classe <code class="highlighter-rouge">Person</code> une sémantique d’entité :</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">PersonPrivate</span><span class="p">;</span> <span class="c1">// forward declaration
</span><span class="k">class</span> <span class="nc">Person</span> <span class="p">{</span>
    <span class="n">QSharedPointer</span><span class="o">&lt;</span><span class="n">PersonPrivate</span><span class="o">&gt;</span> <span class="n">d</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="n">Person</span><span class="p">()</span> <span class="o">=</span> <span class="k">default</span><span class="p">;</span> <span class="c1">// a "null" person
</span>    <span class="n">Person</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">,</span> <span class="kt">long</span> <span class="n">birth</span><span class="p">);</span>
    <span class="n">QString</span> <span class="n">getName</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
    <span class="c1">// shared handles should expose const methods
</span>    <span class="kt">void</span> <span class="n">setName</span><span class="p">(</span><span class="k">const</span> <span class="n">QString</span> <span class="o">&amp;</span><span class="n">name</span><span class="p">)</span> <span class="k">const</span><span class="p">;</span>
    <span class="kt">int</span> <span class="n">getAge</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
    <span class="k">operator</span> <span class="kt">bool</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span> <span class="k">return</span> <span class="n">d</span><span class="p">;</span> <span class="p">}</span>
<span class="p">};</span></code></pre></figure>

<p><code class="highlighter-rouge">Person</code> se comporte maintenant <em>comme un pointeur</em>.</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">Person</span> <span class="n">p1</span><span class="p">(</span><span class="s">"ABC"</span><span class="p">,</span> <span class="mi">42</span><span class="p">);</span>
<span class="n">Person</span> <span class="n">p2</span> <span class="o">=</span> <span class="n">p1</span><span class="p">;</span>
<span class="n">p2</span><span class="p">.</span><span class="n">setName</span><span class="p">(</span><span class="s">"DEF"</span><span class="p">);</span>
<span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">p1</span><span class="p">.</span><span class="n">getName</span><span class="p">()</span> <span class="o">==</span> <span class="s">"DEF"</span><span class="p">);</span>
<span class="n">Q_ASSERT</span><span class="p">(</span><span class="n">p2</span><span class="p">.</span><span class="n">getName</span><span class="p">()</span> <span class="o">==</span> <span class="s">"DEF"</span><span class="p">);</span></code></pre></figure>

<p><code class="highlighter-rouge">p1</code> et <code class="highlighter-rouge">p2</code> sont alors des <em>resource handles</em> vers <code class="highlighter-rouge">PersonPrivate</code> :</p>

<p class="center"><img src="/assets/nopointers/shared_person.png" alt="graph_shared_person" /></p>

<p>Évidemment, ce n’est pas approprié pour la classe <code class="highlighter-rouge">Person</code>, car le comportement
est trop inattendu.</p>

<p>Mais je vais présenter un cas réel où ce <em>design</em> est approprié.</p>

<h2 id="en-pratique">En pratique</h2>

<p><a id="libusb-wrappers"></a>
Pour l’entreprise dans laquelle je suis salarié, j’ai implémenté une
fonctionnalité permettant d’utiliser une souris USB branchée sur un PC pour
contrôler un téléphone Android connecté en USB.</p>

<p>Concrètement, cela consiste à tranférer (grâce à <a href="http://libusb.info"><code class="highlighter-rouge">libusb</code></a>), à partir
du PC, les événements <a href="https://en.wikipedia.org/wiki/Human_interface_device">HID</a> reçus de la souris vers le téléphone Android.</p>

<p>J’ai donc (entre autres) créé des <em>resources handles</em> <code class="highlighter-rouge">UsbDevice</code> et
<code class="highlighter-rouge">UsbDeviceHandle</code> qui wrappent les structures C <a href="http://libusb.sourceforge.net/api-1.0/group__dev.html#ga77eedd00d01eb7569b880e861a971c2b"><code class="highlighter-rouge">libusb_device</code></a>
et <a href="http://libusb.sourceforge.net/api-1.0/group__dev.html#ga7df95821d20d27b5597f1d783749d6a4"><code class="highlighter-rouge">libusb_device_handle</code></a>, suivant les principes
détaillés dans ce billet.</p>

<p>Leur utilisation illustre bien, d’après moi, les bénéfices d’une telle
conception.</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">class</span> <span class="nc">UsbDeviceMonitor</span> <span class="p">{</span>
    <span class="n">QList</span><span class="o">&lt;</span><span class="n">UsbDevice</span><span class="o">&gt;</span> <span class="n">devices</span><span class="p">;</span>
<span class="k">public</span><span class="o">:</span>
    <span class="c1">// …
</span>    <span class="n">UsbDevice</span> <span class="n">getAnyDroid</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
    <span class="n">UsbDevice</span> <span class="n">getAnyMouse</span><span class="p">()</span> <span class="k">const</span><span class="p">;</span>
<span class="n">signals</span><span class="o">:</span>
    <span class="kt">void</span> <span class="n">deviceArrived</span><span class="p">(</span><span class="k">const</span> <span class="n">UsbDevice</span> <span class="o">&amp;</span><span class="n">device</span><span class="p">);</span>
    <span class="kt">void</span> <span class="n">deviceLeft</span><span class="p">(</span><span class="k">const</span> <span class="n">UsbDevice</span> <span class="o">&amp;</span><span class="n">device</span><span class="p">);</span>
<span class="p">};</span></code></pre></figure>

<p><code class="highlighter-rouge">UsbDevice</code> peut être retourné par valeur, et passé en paramètre d’un <em>signal</em>
par <em>const reference</em> (exactement comme nous le ferions avec un
<a href="http://doc.qt.io/qt-5/qstring.html"><code class="highlighter-rouge">QString</code></a>).</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="n">UsbDevice</span> <span class="n">UsbDeviceMonitor</span><span class="o">::</span><span class="n">getAnyMouse</span><span class="p">()</span> <span class="k">const</span> <span class="p">{</span>
    <span class="k">for</span> <span class="p">(</span><span class="k">const</span> <span class="n">UsbDevice</span> <span class="o">&amp;</span><span class="n">device</span> <span class="o">:</span> <span class="n">devices</span><span class="p">)</span>
        <span class="k">if</span> <span class="p">(</span><span class="n">device</span><span class="p">.</span><span class="n">isMouse</span><span class="p">())</span>
            <span class="k">return</span> <span class="n">device</span><span class="p">;</span>
    <span class="k">return</span> <span class="p">{};</span>
<span class="p">}</span></code></pre></figure>

<p>Si une souris est trouvée dans la liste, on la retourne simplement ; sinon, on
retourne un <code class="highlighter-rouge">UsbDevice</code> “<a href="http://doc.qt.io/qt-5/qstring.html#isNull"><em>null</em></a>”.</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">void</span> <span class="n">UsbDeviceMonitor</span><span class="o">::</span><span class="n">onHotplugDeviceArrived</span><span class="p">(</span><span class="k">const</span> <span class="n">UsbDevice</span> <span class="o">&amp;</span><span class="n">device</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">devices</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">device</span><span class="p">);</span>
    <span class="n">emit</span> <span class="n">deviceArrived</span><span class="p">(</span><span class="n">device</span><span class="p">);</span>
<span class="p">}</span></code></pre></figure>

<p>La gestion mémoire est totalement automatique et transparente. Les <a href="#suppression-complexe">problèmes
présentés</a> sont résolus.</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">void</span> <span class="nf">registerQml</span><span class="p">()</span> <span class="p">{</span>
    <span class="n">qRegisterMetaType</span><span class="o">&lt;</span><span class="n">UsbDevice</span><span class="o">&gt;</span><span class="p">();</span>
<span class="p">}</span></code></pre></figure>

<figure class="highlight"><pre><code class="language-javascript" data-lang="javascript"><span class="c1">// QML</span>
<span class="kd">function</span> <span class="nx">startForwarding</span><span class="p">()</span> <span class="p">{</span>
    <span class="kd">var</span> <span class="nx">mouse</span> <span class="o">=</span> <span class="nx">usbDeviceMonitor</span><span class="p">.</span><span class="nx">getAnyMouse</span><span class="p">()</span>
    <span class="kd">var</span> <span class="nx">droid</span> <span class="o">=</span> <span class="nx">usbDeviceMonitor</span><span class="p">.</span><span class="nx">getAnyDroid</span><span class="p">()</span>
    <span class="nx">worker</span> <span class="o">=</span> <span class="nx">hid</span><span class="p">.</span><span class="nx">forward</span><span class="p">(</span><span class="nx">mouse</span><span class="p">,</span> <span class="nx">droid</span><span class="p">)</span>
<span class="p">}</span></code></pre></figure>

<p><code class="highlighter-rouge">UsbDevice</code> peut naviguer entre la couche C++ et QML.</p>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="kt">bool</span> <span class="n">HID</span><span class="o">::</span><span class="n">forward</span><span class="p">(</span><span class="k">const</span> <span class="n">UsbDevice</span> <span class="o">&amp;</span><span class="n">mouse</span><span class="p">,</span> <span class="k">const</span> <span class="n">UsbDevice</span> <span class="o">&amp;</span><span class="n">droid</span><span class="p">)</span> <span class="p">{</span>
    <span class="n">UsbDeviceHandle</span> <span class="n">droidHandle</span> <span class="o">=</span> <span class="n">droid</span><span class="p">.</span><span class="n">open</span><span class="p">();</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">droidHandle</span><span class="p">)</span>
        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
    <span class="n">UsbDeviceHandle</span> <span class="n">mouseHandle</span> <span class="o">=</span> <span class="n">mouse</span><span class="p">.</span><span class="n">open</span><span class="p">();</span>
    <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mouseHandle</span><span class="p">)</span>
        <span class="k">return</span> <span class="nb">false</span><span class="p">;</span>
    <span class="c1">// …
</span><span class="p">}</span></code></pre></figure>

<p>Grâce à RAII, les connexions (<code class="highlighter-rouge">UsbDeviceHandle</code>) sont fermées automatiquement.</p>

<p>En particulier, si la connexion à la souris échoue, la connexion au téléphone
Android est automatiquement fermée.</p>

<h2 id="rsultat">Résultat</h2>

<p>Dans ces différents exemples, <code class="highlighter-rouge">new</code> et <code class="highlighter-rouge">delete</code> ne sont jamais utilisés, et
<strong>par construction, la mémoire sera correctement gérée</strong>. Ou plus précisément,
si un problème de gestion mémoire existe, il se situera dans l’implémentation de
la classe elle-même, et non partout où elle est utilisée.</p>

<p>Ainsi, nous manipulons des <em>handles</em> se comportant comme des <em>pointeurs</em>, ayant
les mêmes avantages que les <em>valeurs</em> :</p>

<ul>
  <li>gestion mémoire <strong>automatique</strong> et <strong>transparente</strong> ;</li>
  <li>simple ;</li>
  <li>efficace ;</li>
  <li>sûr et robuste.</li>
</ul>

<p>Ils peuvent par contre présenter quelques limitations.</p>

<p>Par exemple, ils sont incompatibles avec <a href="http://doc.qt.io/qt-5/qobject.html"><code class="highlighter-rouge">QObject</code></a>. En effet,
techniquement, la classe d’un <em>resource handle</em> doit pouvoir être copiée (pour
supporter le passage par <em>valeur</em>), alors qu’un <a href="http://doc.qt.io/qt-5/qobject.html"><code class="highlighter-rouge">QObject</code></a> <a href="http://doc.qt.io/qt-5/object.html#identity-vs-value">n’est pas
copiable</a> :</p>

<blockquote>
  <p><code class="highlighter-rouge">QObject</code>s are <em>identities</em>, not <em>values</em>.</p>
</blockquote>

<p>Très concrètement, cela implique que <code class="highlighter-rouge">UsbDevice</code> ne pourrait pas supporter de
<em>signaux</em> (en tout cas, pas directement). C’est d’ailleurs le cas de beaucoup de
classes de Qt : par exemple <a href="http://doc.qt.io/qt-5/qstring.html"><code class="highlighter-rouge">QString</code></a> et <a href="http://doc.qt.io/qt-5/qlist.html"><code class="highlighter-rouge">QList</code></a> n’héritent
pas de <a href="http://doc.qt.io/qt-5/qobject.html"><code class="highlighter-rouge">QObject</code></a>.</p>

<h2 id="rsum">Résumé</h2>

<figure class="highlight"><pre><code class="language-cpp" data-lang="cpp"><span class="k">auto</span> <span class="n">decide</span> <span class="o">=</span> <span class="p">[</span><span class="o">=</span><span class="p">]</span> <span class="p">{</span>
    <span class="k">if</span> <span class="p">(</span><span class="n">semantics</span> <span class="o">==</span> <span class="n">VALUE</span><span class="p">)</span> <span class="p">{</span>
        <span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="n">mustAvoidCopies</span><span class="p">)</span>
            <span class="k">return</span> <span class="s">"just use values"</span><span class="p">;</span>
        <span class="k">return</span> <span class="s">"use PImpl + QSharedDataPointer"</span><span class="p">;</span>
    <span class="p">}</span>
    <span class="c1">// semantics == ENTITY
</span>    <span class="k">if</span> <span class="p">(</span><span class="n">entitySemanticsIsObvious</span><span class="p">)</span>
        <span class="k">return</span> <span class="s">"use PImpl + QSharedPointer"</span><span class="p">;</span>
    <span class="k">return</span> <span class="s">"use smart pointers explicitly"</span><span class="p">;</span>
<span class="p">};</span></code></pre></figure>

<p><em>C’est juste une heuristique…</em></p>

<h2 id="conclusion">Conclusion</h2>

<p>En suivant ces principes, nous pouvons nous débarrasser des <em>owning
raw pointers</em> et des <code class="highlighter-rouge">new</code> et <code class="highlighter-rouge">delete</code> “nus”. Cela contribue à rendre le code
plus simple et plus robuste.</p>

<p>Ce sont d’ailleurs des objectifs qui guident les évolutions du langage C++ :</p>

<ul>
  <li><a href="http://www.stroustrup.com/resource-model.pdf">A brief introduction to C++’s model for type and resource-safety</a></li>
  <li><a href="https://github.com/isocpp/CppCoreGuidelines/blob/master/talks/Stroustrup%20-%20CppCon%202015%20keynote.pdf">Writing good C++14</a></li>
  <li><a href="https://herbsutter.com/elements-of-modern-c-style/">Elements of Modern C++ Style</a></li>
</ul>

<p><code class="highlighter-rouge">return 0;</code></p>


guid: http://blog.rom1v.com/2017/03/shadow
title: SHAdow
url: http://blog.rom1v.com/2017/03/shadow/
feedurl: http://blog.rom1v.com/feed/
content:
<p>Le 23 février, une équipe de chercheurs a <a href="https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html">annoncé</a> avoir cassé <a href="https://en.wikipedia.org/wiki/SHA-1">SHA-1</a> <a href="http://shattered.io/">en
pratique</a>, en générant une <a href="https://en.wikipedia.org/wiki/Collision_attack">collision</a>.</p>

<p>À partir de leur travail, il est possible de produire de nouvelles paires de
fichiers PDF arbitrairement différents qui auront la même signature SHA-1. Par
exemple :</p>

<p class="center"><a href="/assets/shadow/shadow1.pdf"><img src="/assets/shadow/tux.jpg" alt="shadow1-thumb" /></a>
<a href="/assets/shadow/shadow2.pdf"><img src="/assets/shadow/troll.jpg" alt="shadow2-thumb" /></a></p>

<div class="highlighter-rouge"><pre class="codehilite"><code>$ sha1sum shadow1.pdf shadow2.pdf
fffe36a1d6f0a76a585af4f3838a4a46b6714f0c  shadow1.pdf
fffe36a1d6f0a76a585af4f3838a4a46b6714f0c  shadow2.pdf
$ sha256sum shadow1.pdf shadow2.pdf
502ccf8ecee10176d891fa4aeab295edec22b95141c2ae16d85f13b39879e37e  shadow1.pdf
2546d272df653c5a99ef0914fa6ed43b336f309758ea873448154ebde90cdfe1  shadow2.pdf
</code></pre></div>

<p>J’explique dans ce billet le principe, et je fournis un outil qui produit, à
partir de deux images JPEG, deux fichiers PDF différents de même SHA-1.</p>

<h2 id="rutilisation">Réutilisation</h2>

<p>En fabriquant leur collision, les <a href="https://shattered.io/static/shattered.pdf">auteurs</a> ont pris soin de la rendre
réutilisable :</p>

<blockquote>
  <p>Furthermore, the prefix of the colliding messages was carefully chosen so that
they allow an attacker to forge two PDF documents with the same SHA-1 hash yet
that display arbitrarily-chosen distinct visual content.</p>
</blockquote>

<p>Aujourd’hui, nous allons jouer aux attaquants.</p>

<p>La réutilisation de la collision repose sur le fait qu’avec SHA-1, ajouter un
suffixe identique à une collision existante produit encore une collision :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>SHA1(A) == SHA1(B) ==&gt; SHA1(A|X) == SHA1(B|X)
</code></pre></div>

<p>(où <code class="highlighter-rouge">X|Y</code> est la concaténation de <code class="highlighter-rouge">X</code> et de <code class="highlighter-rouge">Y</code>)</p>

<p>Autrement dit, vous prenez les fichiers qui produisent une collision, vous
ajoutez les mêmes octets aux deux, vous obtenez le même SHA-1 :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>$ { cat shattered-1.pdf; echo bonjour; } | sha1sum
4bfd4b804da3aa207b29d6f1300dde507988dc4b  -
$ { cat shattered-2.pdf; echo bonjour; } | sha1sum
4bfd4b804da3aa207b29d6f1300dde507988dc4b  -
</code></pre></div>

<p>Il est donc trivial de créer de <em>nouvelles</em> collisions.</p>

<p>Mais pour qu’elles aient un intérêt, encore faut-il :</p>

<ol>
  <li>que les fichiers produits soient valides ;</li>
  <li>qu’une différence entre les fichiers soit visible par l’utilisateur.</li>
</ol>

<h2 id="diffrences">Différences</h2>

<p>Les différences entre <code class="highlighter-rouge">shattered-1.pdf</code> et <code class="highlighter-rouge">shattered-2.pdf</code> se situent entre
les adresses <code class="highlighter-rouge">0xc0</code> et <code class="highlighter-rouge">0x13f</code> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">diff -U3 &lt;<span class="o">(</span>hd shattered-1.pdf<span class="o">)</span> &lt;<span class="o">(</span>hd shattered-2.pdf<span class="o">)</span></code></pre></figure>

<figure class="highlight"><pre><code class="language-diff" data-lang="diff"><span class="gd">--- /dev/fd/63  2017-02-28 21:11:11.530135134 +0100
</span><span class="gi">+++ /dev/fd/62  2017-02-28 21:11:11.530135134 +0100
</span><span class="gu">@@ -10,14 +10,14 @@
</span> 00000090  72 65 61 6d 0a ff d8 ff  fe 00 24 53 48 41 2d 31  |ream......$SHA-1|
 000000a0  20 69 73 20 64 65 61 64  21 21 21 21 21 85 2f ec  | is dead!!!!!./.|
 000000b0  09 23 39 75 9c 39 b1 a1  c6 3c 4c 97 e1 ff fe 01  |.#9u.9...&lt;L.....|
<span class="gd">-000000c0  73 46 dc 91 66 b6 7e 11  8f 02 9a b6 21 b2 56 0f  |sF..f.~.....!.V.|
-000000d0  f9 ca 67 cc a8 c7 f8 5b  a8 4c 79 03 0c 2b 3d e2  |..g....[.Ly..+=.|
-000000e0  18 f8 6d b3 a9 09 01 d5  df 45 c1 4f 26 fe df b3  |..m......E.O&amp;...|
-000000f0  dc 38 e9 6a c2 2f e7 bd  72 8f 0e 45 bc e0 46 d2  |.8.j./..r..E..F.|
-00000100  3c 57 0f eb 14 13 98 bb  55 2e f5 a0 a8 2b e3 31  |&lt;W......U....+.1|
-00000110  fe a4 80 37 b8 b5 d7 1f  0e 33 2e df 93 ac 35 00  |...7.....3....5.|
-00000120  eb 4d dc 0d ec c1 a8 64  79 0c 78 2c 76 21 56 60  |.M.....dy.x,v!V`|
-00000130  dd 30 97 91 d0 6b d0 af  3f 98 cd a4 bc 46 29 b1  |.0...k..?....F).|
</span><span class="gi">+000000c0  7f 46 dc 93 a6 b6 7e 01  3b 02 9a aa 1d b2 56 0b  |.F....~.;.....V.|
+000000d0  45 ca 67 d6 88 c7 f8 4b  8c 4c 79 1f e0 2b 3d f6  |E.g....K.Ly..+=.|
+000000e0  14 f8 6d b1 69 09 01 c5  6b 45 c1 53 0a fe df b7  |..m.i...kE.S....|
+000000f0  60 38 e9 72 72 2f e7 ad  72 8f 0e 49 04 e0 46 c2  |`8.rr/..r..I..F.|
+00000100  30 57 0f e9 d4 13 98 ab  e1 2e f5 bc 94 2b e3 35  |0W...........+.5|
+00000110  42 a4 80 2d 98 b5 d7 0f  2a 33 2e c3 7f ac 35 14  |B..-....*3....5.|
+00000120  e7 4d dc 0f 2c c1 a8 74  cd 0c 78 30 5a 21 56 64  |.M..,..t..x0Z!Vd|
+00000130  61 30 97 89 60 6b d0 bf  3f 98 cd a8 04 46 29 a1  |a0..`k..?....F).|
</span> 00000140  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
 *
 00000230  00 00 ff fe 00 fc 00 00  00 00 00 00 00 00 ff e0  |................|</code></pre></figure>

<p>Nous devrons donc, quoi qu’il arrive, conserver les <code class="highlighter-rouge">0x140</code> (320) premiers
octets : il s’agira forcément d’un fichier PDF.</p>

<p>Pour analyser la structure sur un exemple minimal, je vous conseille l’exemple
fourni à la dernière page du <a href="https://shattered.io/static/shattered.pdf">papier</a> (<code class="highlighter-rouge">good.pdf</code> et <code class="highlighter-rouge">bad.pdf</code>) :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>&lt;&lt; -- base64 -d | tar xj
QlpoOTFBWSZTWbL5V5MABl///////9Pv///v////+/////HDdK739/677r+W3/75rUNr4Aa/AAAAAAA
CgEVTRtQDQAaA0AAyGmjTQGmgAAANGgAaMIAYgGgAABo0AAAAAADQAIAGQ0MgDIGmjQA0DRk0AaMQ0D
QAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GI
GgBoGQAAIAGQ0MgDIGmjQA0DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAAIAGQ0MgDIGmjQA0
DRk0AaMQ0DQAGIANGgAAGRoNGQMRpo0GIGgBoGQAABVTUExEZATTICnkxNR+p6E09JppoyamjGhkm0a
mmIyaekbUejU9JiGnqZqaaDxJ6m0JkZMQ2oaYmJ6gxqMyE2TUzJqfItligtJQJfYbl9Zy9QjQuB5mHQ
RdSSXCCTHMgmSDYmdOoOmLTBJWiCpOhMQYpQlOYpJjn+wQUJSTCEpOMekaFaaNB6glCC0hKEJdHr6Bm
UIHeph7YxS8WJYyGwgWnMTFJBDFSxSCCYljiEk7HZgJzJVDHJxMgY6tCEIIWgsKSlSZ0S8GckoIIF+5
51Ro4RCw260VCEpWJSlpWx/PMrLyVoyhWMAneDilBcUIeZ1j6NCkus0qUCWnahhk5KT4GpWMh3vm2nJ
WjTL9Qg+84iExBJhNKpbV9tvEN265t3fu/TKkt4rXFTsV+NcupJXhOhOhJMQQktrqt4K8mSh9M2DAO2
X7uXGVL9YQxUtzQmS7uBndL7M6R7vX869VxqPurenSuHYNq1yTXOfNWLwgvKlRlFYqLCs6OChDp0HuT
zCWscmGudLyqUuwVGG75nmyZhKpJyOE/pOZyHyrZxGM51DYIN+Jc8yVJgAykxKCEtW55MlfudLg3KG6
TtozalunXrroSxUpVLStWrWLFihMnVpkyZOrQnUrE6xq1CGtJlbAb5ShMbV1CZgqlKC0wCFCpMmUKSE
kvFLaZC8wHOCVAlvzaJQ/T+XLb5Dh5TNM67p6KZ4e4ZSGyVENx2O27LzrTIteAreTkMZpW95GS0CEJY
hMc4nToTJ0wQhKEyddaLb/rTqmgJSlkpnALxMhlNmuKEpkEkqhKUoEq3SoKUpIQcDgWlC0rYahMmLuP
Q0fHqZaF4v2W8IoJ2EhMhYmSw7qql27WJS+G4rUplToFi2rSv0NSrVvDUpltQ8Lv6F8pXyxmFBSxiLS
xglNC4uvXVKmAtusXy4YXGX1ixedEvXF1aX6t8adYnYCpC6rW1ZzdZYlCCxKEv8vpbqdSsXl8v1jCQv
0KEPxPTa/5rtWSF1dSgg4z4KjfIMNtgwWoWLEsRhKxsSA9ji7V5LRPwtumeQ8V57UtFSPIUmtQdOQfs
eI2Ly1DMtk4Jl8n927w34zrWG6Pi4jzC82js/46Rt2IZoadWxOtMInS2xYmcu8mOw9PLYxQ4bdfFw3Z
Pf/g2pzSwZDhGrZAl9lqky0W+yeanadC037xk496t0Dq3ctfmqmjgie8ln9k6Q0K1krb3dK9el4Xsu4
4LpGcenr2eQZ1s1IhOhnE56WnXf0BLWn9Xz15fMkzi4kpVxiTKGEpffErEEMvEeMZhUl6yD1SdeJYbx
zGNM3ak2TAaglLZlDCVnoM6wV5DRrycwF8Zh/fRsdmhkMfAO1duwknrsFwrzePWeMwl107DWzymxdQw
iSXx/lncnn75jL9mUzw2bUDqj20LTgtawxK2SlQg1CCZDQMgSpEqLjRMsykM9zbSIUqil0zNk7Nu+b5
J0DKZlhl9CtpGKgX5uyp0idoJ3we9bSrY7PupnUL5eWiDpV5mmnNUhOnYi8xyClkLbNmAXyoWk7GaVr
M2umkbpqHDzDymiKjetgzTocWNsJ2E0zPcfht46J4ipaXGCfF7fuO0a70c82bvqo3HceIcRlshgu73s
eO8BqlLIap2z5jTOY+T2ucCnBtAtva3aHdchJg9AJ5YdKHz7LoA3VKmeqxAlFyEnQLBxB2PAhAZ8Kvm
uR6ELXws1Qr13Nd1i4nsp189jqvaNzt+0nEnIaniuP1+/UOZdyfoZh57ku8sYHKdvfW/jYSUks+0rK+
qtte+py8jWL9cOJ0fV8rrH/t+85/p1z2N67p/ZsZ3JmdyliL7lrNxZUlx0MVIl6PxXOUuGOeArW3vuE
vJ2beoh7SGyZKHKbR2bBWO1d49JDIcVM6lQtu9UO8ec8pOnXmkcponBPLNM2CwZ9kNC/4ct6rQkPkQH
McV/8XckU4UJCy+VeTA==
--
</code></pre></div>

<h2 id="aiguillage">Aiguillage</h2>

<p>Notre objectif est que les quelques octets différents entre les deux fichiers
PDF déterminent l’image à afficher.</p>

<p>Il serait en théorie possible d’appliquer cet aiguillage au niveau de la
structure du PDF, mais c’est en fait au niveau du JPEG qu’il sera implémenté :</p>

<blockquote>
  <p>PDFs with the same MD5 hash have previously been constructed by Gebhardt et
al. [<a href="http://csrc.nist.gov/groups/ST/hash/documents/Illies_NIST_05.pdf">12</a>] by exploiting so-called Indexed Color Tables and Color Transformation
functions. However, this method is not effective for many common PDF viewers
that lack support for these functionalities.  Our PDFs rely on distinct
parsings of JPEG images, similar to Gebhardt et al.’s TIFF technique
[<a href="http://csrc.nist.gov/groups/ST/hash/documents/Illies_NIST_05.pdf">12</a>] and Albertini et al.’s JPEG technique [<a href="http://dx.doi.org/10.1007/978-3-319-13051-4_1">1</a>].</p>
</blockquote>

<h3 id="le-format-jpeg">Le format JPEG</h3>

<p>Voici le strict nécessaire à savoir sur le format JPEG pour notre besoin.</p>

<p>Une image est stockée entre les <a href="https://en.wikipedia.org/wiki/JPEG#Syntax_and_structure">marqueurs</a> <code class="highlighter-rouge">0xffd8</code> (<em>Start Of Image</em>) et
<code class="highlighter-rouge">0xffd9</code> (<em>End Of Image</em>).</p>

<p>Il est possible d’insérer autant de commentaires que l’on veut, grâce au
marqueur <code class="highlighter-rouge">0xfffe</code> suivi de sa taille sur 2 octets (en <a href="https://en.wikipedia.org/wiki/Endianness">big-endian</a>). La taille
compte le header de taille, mais pas le marqueur initial.</p>

<p>Par exemple, si je veux insérer le commentaire <em>“Hello”</em> au tout début, mon
fichier JPEG ressemblera à ceci :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code> ff d8 ff fe 00 07 48 65 6c 6c 6f  …  ff d9
 [SOI]                                [EOI]
      [[COM] [LEN]  H  e  l  l  o]
             &lt;-------------------&gt;
                       7
</code></pre></div>

<p>Et c’est à peu près tout ce qu’il y a à savoir.</p>

<h3 id="lastuce">L’astuce</h3>

<p>Mettons en évidence la première différence entre les fichiers en collision.</p>

<p>Dans le <strong>fichier 1</strong> :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- ff fe 01
000000c0  73 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --
</code></pre></div>

<p>Dans le <strong>fichier 2</strong> :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- ff fe 01
000000c0  7f -- -- -- -- -- -- --  -- -- -- -- -- -- -- --
</code></pre></div>

<p>Chacun définit un bloc de commentaires, mais pas de mêmes tailles. Dans le
fichier 1, le début du prochain bloc sera à l’adresse <code class="highlighter-rouge">0x232</code> (<code class="highlighter-rouge">0xbf + 0x173</code>),
alors que dans le fichier 2 il sera à l’adresse <code class="highlighter-rouge">0x23e</code> (<code class="highlighter-rouge">0xbf + 0x17f</code>).</p>

<p>Nous avons donc trouvé notre aiguillage ; nous allons maintenant utiliser des
commentaires JPEG pour cacher soit la première image, soit la seconde.</p>

<p>Pour l’exploiter jusqu’au bout, il suffit de disposer les commentaires
astucieusement pour que les deux versions représentent des images parfaitement
valides.</p>

<p>Nous allons donc commencer en <code class="highlighter-rouge">0x232</code> un bloc de commentaires, ayant une taille
permettant de recouvrir l’intégralité de l’image que nous allons stocker en
<code class="highlighter-rouge">0x23e</code>. Et inversement, nous devons démarrer un commentaire à la fin de l’image
stockée en <code class="highlighter-rouge">0x23e</code> pour cacher la deuxième image.</p>

<p>Comparons sur le résultat ce qu’observe un <em>parseur</em> qui parcourt chacun des
fichiers.</p>

<p><em>(<code class="highlighter-rouge">GG</code> et <code class="highlighter-rouge">HH</code> sont les deux images à stocker. <code class="highlighter-rouge">J1</code> et <code class="highlighter-rouge">J2</code> sont les longueurs
des sauts pour enjamber chacune des images.)</em></p>

<p>Le <strong>fichier 1</strong> est <em>parsé</em> ainsi :</p>

<pre><code>
00000090  -- -- -- -- -- <strong>ff d8</strong> --  -- -- -- -- -- -- -- --
       …
000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- <span style="color: blue;">ff fe 01</span>
000000c0  <span style="color: blue;">73 -- -- -- -- -- -- --  -- -- -- -- -- -- -- --</span>
       …
00000230  <span style="color: blue;">-- --</span> <span style="color: green;">ff fe J1 J1 -- --  -- -- -- -- -- -- GG GG</span>
00000240  <span style="color: green;">GG GG GG GG GG GG GG GG  GG GG GG GG GG GG GG GG</span>
       …
       i  <span style="color: green;">GG GG GG GG GG GG ff fe  J2 J2</span> <span style="color: red;">HH HH HH HH HH HH</span>
  i+0x10  <span style="color: red;">HH HH HH HH HH HH HH HH  HH HH HH HH HH HH HH HH</span>
       …
       j  <span style="color: red;">HH HH</span> <strong>ff d9</strong> -- -- -- --  -- -- -- -- -- -- -- --
</code></pre>

<p>Le <strong>fichier 2</strong> est <em>parsé</em> différemment :</p>

<pre><code>
00000090  -- -- -- -- -- <strong>ff d8</strong> --  -- -- -- -- -- -- -- --
       …
000000b0  -- -- -- -- -- -- -- --  -- -- -- -- -- <span style="color: blue;">ff fe 01</span>
000000c0  <span style="color: blue;">7f -- -- -- -- -- -- --  -- -- -- -- -- -- -- --</span>
       …
00000230  <span style="color: blue;">-- -- ff fe J1 J1 -- --  -- -- -- -- -- --</span> <span style="color: red;">GG GG</span>
00000240  <span style="color: red;">GG GG GG GG GG GG GG GG  GG GG GG GG GG GG GG GG</span>
       …
       i  <span style="color: red;">GG GG GG GG GG GG</span> <span style="color: green;">ff fe  J2 J2 HH HH HH HH HH HH</span>
  i+0x10  <span style="color: green;">HH HH HH HH HH HH HH HH  HH HH HH HH HH HH HH HH</span>
       …
       j  <span style="color: green;">HH HH</span> <strong>ff d9</strong> -- -- -- --  -- -- -- -- -- -- -- --
</code></pre>

<p>Les structures JPEG sont donc valides dans les deux fichiers. L’image affichée
dépendra de l’octet stocké à l’adresse <code class="highlighter-rouge">0xc0</code>, valant soit <code class="highlighter-rouge">0x73</code>, soit <code class="highlighter-rouge">0x7f</code>.</p>

<p>Maintenant, il nous reste à rendre notre PDF valide.</p>

<h2 id="pdf">PDF</h2>

<p>Le header participant à la collision SHA-1 (donc figé) définit des
configurations dans des <em>sections</em> séparées (donc non figées) :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>00000000  25 50 44 46 2d 31 2e 33  0a 25 e2 e3 cf d3 0a 0a  |%PDF-1.3.%......|
00000010  0a 31 20 30 20 6f 62 6a  0a 3c 3c 2f 57 69 64 74  |.1 0 obj.&lt;&lt;/Widt|
00000020  68 20 32 20 30 20 52 2f  48 65 69 67 68 74 20 33  |h 2 0 R/Height 3|
00000030  20 30 20 52 2f 54 79 70  65 20 34 20 30 20 52 2f  | 0 R/Type 4 0 R/|
00000040  53 75 62 74 79 70 65 20  35 20 30 20 52 2f 46 69  |Subtype 5 0 R/Fi|
00000050  6c 74 65 72 20 36 20 30  20 52 2f 43 6f 6c 6f 72  |lter 6 0 R/Color|
00000060  53 70 61 63 65 20 37 20  30 20 52 2f 4c 65 6e 67  |Space 7 0 R/Leng|
00000070  74 68 20 38 20 30 20 52  2f 42 69 74 73 50 65 72  |th 8 0 R/BitsPer|
00000080  43 6f 6d 70 6f 6e 65 6e  74 20 38 3e 3e 0a 73 74  |Component 8&gt;&gt;.st|
</code></pre></div>

<p>Ainsi, la largeur (<code class="highlighter-rouge">Width</code>) est définie dans l’objet <code class="highlighter-rouge">2</code>, la hauteur (<code class="highlighter-rouge">Height</code>)
dans l’objet <code class="highlighter-rouge">3</code>, etc.</p>

<p>Ces objets sont à définir à la suite des fichiers JPEG embarqués. Pour
comprendre leur format, le plus simple est de lire le fichier <code class="highlighter-rouge">good.pdf</code> que je
recommandais plus haut :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">tail -c+<span class="k">$((</span><span class="m">0</span>x746<span class="k">))</span> good.pdf</code></pre></figure>

<p>On y trouve la définition des objets (entre autres les dimensions de l’image) :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>2 0 obj
8
endobj

3 0 obj
8
endobj

4 0 obj
/XObject
endobj

5 0 obj
/Image
endobj

6 0 obj
/DCTDecode
endobj

7 0 obj
/DeviceRGB
endobj

8 0 obj
1693
endobj

9 0 obj
&lt;&lt;
  /Type /Catalog
  /Pages 10 0 R
&gt;&gt;
endobj


10 0 obj
&lt;&lt;
  /Type /Pages
  /Count 1
  /Kids [11 0 R]
&gt;&gt;
endobj

11 0 obj
&lt;&lt;
  /Type /Page
  /Parent 10 0 R
  /MediaBox [0 0 8 8]
  /CropBox [0 0 8 8]
  /Contents 12 0 R
  /Resources
  &lt;&lt;
    /XObject &lt;&lt;/Im0 1 0 R&gt;&gt;
  &gt;&gt;
&gt;&gt;
endobj

12 0 obj
&lt;&lt;/Length 30&gt;&gt;
stream
q
  8 0 0 8 0 0 cm
  /Im0 Do
Q
endstream
endobj
</code></pre></div>

<p>Ensuite vient la table de références croisées ; elle indique l’<em>offset</em> de
chacun des objets définis, dans l’ordre :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>xref
0 13 
0000000000 65535 f 
0000000017 00000 n 
0000001861 00000 n 
0000001879 00000 n 
0000001897 00000 n 
0000001922 00000 n 
0000001945 00000 n 
0000001972 00000 n 
0000001999 00000 n 
0000002020 00000 n 
0000002076 00000 n 
0000002142 00000 n 
0000002309 00000 n 
</code></pre></div>

<p><em>À chaque ajout ou suppression de caractères dans la définition des objets,
cette table doit être mise à jour.</em></p>

<p>Le fichier se termine par un <em>trailer</em>, contenant l’<em>offset</em> de la table de
références :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>trailer &lt;&lt; /Root 9 0 R /Size 13&gt;&gt;

startxref
2391
%%EOF
</code></pre></div>

<p>Ces <em>offsets</em> sont un peu fastidieux à modifier à la main, mais ça fonctionne.</p>

<h2 id="shadow">SHAdow</h2>

<p>J’ai donc écrit un petit outil qui applique toutes ces opérations
automatiquement.</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>git clone http://git.rom1v.com/shadow.git
</code></pre></div>

<p>(ou sur <a href="https://github.com/rom1v/shadow">github</a>)</p>

<p>Il prend en entrée deux images JPEG (de moins de 64K, puisque la taille d’un
commentaire est codé sur 2 octets), ainsi que leurs dimensions (afin d’éviter
d’utiliser des dépendances pour les extraire) :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>./shadow.py img1.jpg img2.jpg 200 200
</code></pre></div>

<p>Il génère deux fichiers dans le répertoire courant, <code class="highlighter-rouge">shadow1.pdf</code> et
<code class="highlighter-rouge">shadow2.pdf</code>.</p>

<p>Il ne reste qu’à vérifier qu’ils ont bien le même SHA-1 :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>sha1sum shadow1.pdf shadow2.pdf
</code></pre></div>


guid: http://blog.rom1v.com/2017/03/serveur-client
title: Serveur-client
url: http://blog.rom1v.com/2017/03/serveur-client/
feedurl: http://blog.rom1v.com/feed/
content:
<p>L’objectif de ce billet est de parvenir à nous connecter à un serveur a priori
inaccessible derrière un <a href="https://fr.wikipedia.org/wiki/Network_address_translation">NAT</a>.</p>

<h2 id="client-serveur">Client-serveur</h2>

<p>De nos jours, <a href="https://fr.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> est toujours utilisé en mode <a href="https://fr.wikipedia.org/wiki/Client-serveur">client-serveur</a> :</p>

<ul>
  <li>le <strong>serveur</strong> écoute <em>passivement</em> sur un <a href="https://fr.wikipedia.org/wiki/Port_%28logiciel%29">port</a> donné, en attente de la
connexion d’un client ;</li>
  <li>le <strong>client</strong> initie <em>activement</em> une connexion vers un serveur.</li>
</ul>

<p>Une fois la connexion établie, cependant, le client et le serveur jouent
exactement le même rôle au niveau de la communication. Par contre, très souvent,
leur rôle applicatif dépend directement de celui qui a initié la connexion :</p>

<ul>
  <li>c’est le <strong>client</strong> <a href="https://fr.wikipedia.org/wiki/Hypertext_Transfer_Protocol">HTTP</a> qui va envoyer une requête au <strong>serveur</strong> HTTP,
pas l’inverse ;</li>
  <li>c’est le <strong>client</strong> <a href="https://fr.wikipedia.org/wiki/Secure_Shell">SSH</a> qui va ouvrir une session sur le <strong>serveur</strong> SSH…</li>
</ul>

<p class="center"><img src="/assets/serveur_client/ssh.png" alt="ssh" /></p>

<p>Ce fonctionnement paraît tellement naturel que “<strong>client</strong>” désigne bien souvent
à la fois celui qui initie la connexion et celui qui effectue des requêtes (au
serveur), alors que “<strong>serveur</strong>” désigne aussi bien la partie en écoute que
celle qui répondra aux requêtes (des clients).</p>

<h2 id="puis-vint-le-nat">Puis vint le NAT…</h2>

<p>Avec la <a href="https://fr.wikipedia.org/wiki/%C3%89puisement_des_adresses_IPv4">pénurie d’adresses IPv4</a>, le NAT s’est généralisé. Bien
souvent, un accès internet ne fournit qu’une seule adresse <a href="https://fr.wikipedia.org/wiki/IPv4">IPv4</a>. Les
différents ordinateurs partageant la même connexion ne sont alors pas
accessibles directement depuis l’extérieur (il est nécessaire d’<a href="https://fr.wikipedia.org/wiki/Redirection_de_port">ouvrir des
ports</a>).</p>

<p>Ainsi, derrière un NAT sans ports ouverts, un <strong>serveur</strong> ne sera pas accessible
publiquement. Par contre, un <strong>client</strong> pourra continuer à se connecter à
n’importe quel serveur public.</p>

<p class="center"><img src="/assets/serveur_client/ssh-nat.png" alt="ssh-nat" /></p>

<h2 id="inversion-des-rles">Inversion des rôles</h2>

<p>Il existe des situations pour lesquelles nous souhaitons qu’un logiciel joue le
rôle de <strong>serveur</strong> au niveau applicatif, afin de répondre aux requêtes des
clients, mais <strong>client</strong> au niveau de la communication, afin de passer les NATs
sans difficultés.</p>

<p>Par exemple, nous pouvons vouloir accéder, grâce à <a href="https://fr.wikipedia.org/wiki/Virtual_Network_Computing">VNC</a> ou SSH, à un
ordinateur se trouvant derrière un NAT sur lequel, par hypothèse, nous n’avons
pas la main. Dans ce cas, seul le <strong>serveur</strong> (au sens applicatif) aura la
capacité d’ouvrir une connexion vers le <strong>client</strong>.</p>

<h3 id="logiciel-ddi">Logiciel dédié</h3>

<p>Il est possible d’utiliser un logiciel spécialement conçu pour gérer cette
inversion des rôles. C’est le cas par exemple de <a href="https://doc.ubuntu-fr.org/gitso">gitso</a>, qui <em>inverse</em> le
protocole VNC afin de simplifier l’aide de novices à distance.</p>

<p>Cette solution a cependant l’inconvénient d’être très spécifique, nécessitant un
développement supplémentaire pour chaque protocole.</p>

<h3 id="redirection-de-port-distant-via-ssh">Redirection de port distant via SSH</h3>

<p>SSH permet d’ouvrir un tunnel pour rediriger un port d’une machine distance vers
une adresse quelconque.</p>

<p>Par exemple, après avoir démarré la redirection :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>ssh un_serveur_public -NR2222:localhost:22
</code></pre></div>

<p>toutes les connexions arrivant sur <code class="highlighter-rouge">un_serveur_public:2222</code> seront redirigées de
manière transparente vers <code class="highlighter-rouge">localhost:22</code> (sur la machine ayant initié le tunnel,
donc).</p>

<p><em>(Cela nécessite d’activer <code class="highlighter-rouge">GatewayPorts yes</code> dans <code class="highlighter-rouge">/etc/ssh/sshd_config</code> sur
<code class="highlighter-rouge">un_serveur_public</code>.)</em></p>

<p>De cette manière, un serveur SSH inaccessible derrière un NAT est rendu
accessible à travers un tunnel en passant par une machine publique
(<code class="highlighter-rouge">un_serveur_public</code>). Ainsi, il est possible de s’y connecter avec la
commande :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>ssh un_serveur_public -p2222
</code></pre></div>

<p class="center"><img src="/assets/serveur_client/ssh-remote.png" alt="ssh-remote" /></p>

<p>Cette stratégie fonctionne bien, mais elle nécessite que la machine qui souhaite
exposer un serveur grâce à un tunnel possède un accès SSH sur
<code class="highlighter-rouge">un_serveur_public</code>.</p>

<p>Si l’on souhaite aider quelqu’un grâce à la prise de contrôle de sa machine à
distance, il y a toutes les chances que cette personne n’ait pas d’accès SSH
vers une machine publiquement accessible. Il est alors possible de lui <a href="https://tuxicoman.jesuislibre.net/2015/03/aide-a-une-noob-par-reverse-ssh.html">créer un
compte restreint dédié</a> sur un serveur que l’on contrôle, mais c’est
très intrusif, et il faut s’assurer de ne pas réduire la sécurité.</p>

<p>Mais en fait, <strong>cette contrainte est superflue</strong>.</p>

<h3 id="redirections-socat">Redirections SOCAT</h3>

<p>La redirection de port distant nécessite des permissions car, outre le fait
qu’elle est implémentée sur SSH, il serait déraisonnable d’autoriser n’importe
qui à ouvrir une <a href="https://fr.wikipedia.org/wiki/Berkeley_sockets">socket</a> en écoute sur un port arbitraire d’une machine
distante.</p>

<p>Pour éviter ce problème, nous pouvons décomposer la redirection de port distant
fourni par SSH en deux parties :</p>

<ol>
  <li>l’ouverture de la connexion vers <code class="highlighter-rouge">un_serveur_public</code>, redirigée vers
l’adresse <code class="highlighter-rouge">localhost:22</code> dans l’exemple précédent ;</li>
  <li>l’ouverture d’une socket en écoute sur un port (<code class="highlighter-rouge">2222</code>) de la machine
distante, redirigée vers la première connexion.</li>
</ol>

<p>L’idée est de mettre en place le premier demi-tunnel sur la machine serveur, et
le second demi-tunnel, nécessitant des permissions, sur la machine publique,
contrôlée par le client.</p>

<p>Pour cela, nous allons utiliser l’outil <code class="highlighter-rouge">socat</code>, qui permet de relayer les
données entre deux sockets, quelque soit le rôle qu’elles aient joué lors de
l’initialisation.</p>

<h4 id="active-passive">Active-passive</h4>

<p>Pour comprendre son utilisation, nous allons ouvrir grâce à <em>netcat</em> (<code class="highlighter-rouge">nc</code>) une
socket TCP en écoute sur le port <code class="highlighter-rouge">5000</code> et nous y connecter :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># terminal 1</span>
nc -l -p 5000
<span class="c"># terminal 2</span>
nc localhost 5000</code></pre></figure>

<p>Toute entrée validée par un retour à la ligne dans le terminal 1 s’affichera
dans le terminal 2 (et vice-versa).</p>

<p class="center"><img src="/assets/serveur_client/nc.png" alt="nc" /></p>

<h4 id="passive-passive">Passive-passive</h4>

<p>Démarrons maintenant dans deux terminaux différents une socket en écoute sur les
ports <code class="highlighter-rouge">1111</code> et <code class="highlighter-rouge">2222</code> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># terminal 1</span>
nc -l -p 1111
<span class="c"># terminal 2</span>
nc -l -p 2222</code></pre></figure>

<p>Pour les mettre en communication avec <code class="highlighter-rouge">socat</code>, dans un 3e terminal :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>socat tcp:localhost:1111 tcp:localhost:2222
</code></pre></div>

<p class="center"><img src="/assets/serveur_client/socat-connect.png" alt="socat-connect" /></p>

<h4 id="active-active">Active-active</h4>

<p>Inversement, il est possible de mettre en communication deux sockets <em>actives</em>
(sans compter sur leur <a href="http://linuxfr.org/users/benoar/journaux/syn-c-est-pour-synchronisation">synchronisation</a>). Pour cela, commençons par ouvrir
le serveur relai :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>socat tcp-listen:1111 tcp-listen:2222
</code></pre></div>

<p>Puis connectons-y deux sockets :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># terminal 1</span>
nc localhost 1111
<span class="c"># terminal 2</span>
nc localhost 2222</code></pre></figure>

<p class="center"><img src="/assets/serveur_client/socat-listen.png" alt="socat-connect" /></p>

<h4 id="tunnel">Tunnel</h4>

<p>Nous sommes maintenant prêts pour créer l’équivalent d’une redirection de port
distant SSH grâce à deux <code class="highlighter-rouge">socat</code>s, qui vont permettre d’inverser la connexion
uniquement sur la portion qui permet de traverser le NAT :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># sur un_serveur_public</span>
socat tcp-listen:1234 tcp-listen:5678
<span class="c"># sur le serveur derrière le NAT</span>
socat tcp:un_serveur_public:1234 tcp:localhost:22
<span class="c"># sur le client</span>
ssh un_serveur_public -p5678</code></pre></figure>

<p class="center"><img src="/assets/serveur_client/ssh-socat.png" alt="ssh-socat" /></p>


guid: http://blog.rom1v.com/2017/03/gnirehtet
title: Gnirehtet
url: http://blog.rom1v.com/2017/03/gnirehtet/
feedurl: http://blog.rom1v.com/feed/
content:
<p>Durant ces dernières semaines chez <a href="https://www.genymobile.com/">Genymobile</a>, j’ai développé un outil de
<em>reverse tethering</em> pour Android, permettant aux téléphones (et aux tablettes)
d’utiliser la connexion internet de l’ordinateur sur lequel ils sont branchés,
sans accès <em>root</em> (ni sur le téléphone, ni sur le PC). Il fonctionne sur
<em>GNU/Linux</em>, <em>Windows</em> et <em>Mac OS</em>.</p>

<p>Nous avons décidé de le publier en open source, sous le nom de
<a href="https://github.com/Genymobile/gnirehtet"><em>gnirehtet</em></a>.</p>

<p><em>Oui, c’est un nom bizarre, jusqu’à ce qu’on réalise qu’il s’agit du résultat de
la commande <a href="https://fr.wikipedia.org/wiki/Bourne-Again_shell">bash</a> :</em></p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">rev <span class="o">&lt;&lt;&lt;</span> tethering</code></pre></figure>

<h2 id="utilisation">Utilisation</h2>

<p>Il suffit de télécharger la dernière <a href="https://github.com/Genymobile/gnirehtet/releases/latest">release</a>, de l’extraire, et d’exécuter la
commande suivante sur le PC :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>./gnirehtet rt
</code></pre></div>

<p>Une fois activé, un logo en forme de clé apparaît dans la barre de statut du
téléphone :</p>

<p class="center"><img src="/assets/gnirehtet/key.png" alt="key" /></p>

<p>Lisez le fichier <a href="https://github.com/Genymobile/gnirehtet/blob/master/README.md">README</a> pour plus de détails.</p>

<h2 id="fonctionnement">Fonctionnement</h2>

<p>Le projet est composé de deux parties :</p>

<ul>
  <li>une application Android (le client) ;</li>
  <li>une application Java pour le PC (le serveur relais).</li>
</ul>

<p>Le client s’enregistre en tant que VPN, de manière à intercepter tout le trafic
réseau du téléphone, sous la forme de <code class="highlighter-rouge">byte[]</code> de <a href="https://en.wikipedia.org/wiki/IPv4#Packet_structure">paquets IPv4</a> bruts, qu’il
transmet alors vers le serveur relais sur une connexion <a href="https://fr.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> (établie
par-dessus <a href="https://developer.android.com/studio/command-line/adb.html"><em>adb</em></a>).</p>

<p>Le serveur relais analyse les en-têtes des paquets, ouvre des connexions à
partir du PC vers les adresses de destinations demandées, et relaie le contenu
dans les deux sens en suivant les protocoles <a href="https://fr.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a> et <a href="https://fr.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a>. Il crée et renvoie
des paquets de réponse vers le client Android, qui les écrit sur l’interface
VPN.</p>

<p>D’une certaine manière, le serveur relais se comporte comme un <a href="https://fr.wikipedia.org/wiki/Network_address_translation">NAT</a>, en cela
qu’il ouvre des connexions pour le compte d’autres machines qui n’ont pas accès
au réseau.  Cependant, il diffère des NAT standards dans la manière dont il
communique avec les clients, en utilisant un protocole spécifique (très simple)
sur une connexion TCP.</p>

<p class="center"><img src="/assets/gnirehtet/archi.png" alt="archi" /></p>

<p>Pour plus de détails, lisez la <a href="https://github.com/Genymobile/gnirehtet/blob/master/DEVELOP.md">page développeurs</a>.</p>

<h2 id="conception">Conception</h2>

<p>Une fois que l’application est capable d’intercepter l’intégralité du traffic
réseau du téléphone, différentes approches sont possibles. Voici celles que j’ai
considérées.</p>

<p><em><strong>TL;DR:</strong> J’ai d’abord étudié l’utilisation d’un “TUN device” sur le
PC, mais ça ne répondait pas à nos besoins. J’ai ensuite voulu utiliser <a href="https://fr.wikipedia.org/wiki/SOCKS">SOCKS</a>
pour bénéficier des serveurs existants, mais des contraintes nous empêchaient de
relayer le trafic UDP. Alors j’ai implémenté <a href="https://github.com/Genymobile/gnirehtet">gnirehtet</a>.</em></p>

<h3 id="tun-device">TUN device</h3>

<p>Lors de mes recherches pour savoir comment implémenter le <em>reverse tethering</em>,
j’ai d’abord trouvé des projets créant un <a href="https://en.wikipedia.org/wiki/TUN/TAP">TUN device</a> sur l’ordinateur
(<a href="https://github.com/google/vpn-reverse-tether"><code class="highlighter-rouge">vpn-reverse-tether</code></a> and <a href="https://github.com/vvviperrr/SimpleRT"><code class="highlighter-rouge">SimpleRT</code></a>).</p>

<p>Cette conception fonctionne très bien, et a plusieurs avantages :</p>

<ul>
  <li>le traitement est effectué directement au niveau réseau, donc il n’y a pas
besoin de traduction entre le niveau 3 et le niveau 5 du <a href="https://fr.wikipedia.org/wiki/Mod%C3%A8le_OSI">modèle OSI</a> ;</li>
  <li>tous les paquets sont retransmis, indépendamment de leur protocole de
transport (ils sont donc <a href="https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers">tous</a> supportés, là où <em>gnirehtet</em>
ne supporte “que” <a href="https://fr.wikipedia.org/wiki/Transmission_Control_Protocol">TCP</a> et <a href="https://fr.wikipedia.org/wiki/User_Datagram_Protocol">UDP</a>).</li>
</ul>

<p>Cependant :</p>

<ul>
  <li>elle nécessite un accès <em>root</em> sur l’ordinateur ;</li>
  <li>elle ne fonctionne pas sur autre chose que <em>Linux</em>.</li>
</ul>

<p>Il se peut néanmoins que ces applications répondent davantage à vos besoins.</p>

<h3 id="socks">SOCKS</h3>

<p>Afin d’éviter d’avoir à développer un serveur relais spécifique, ma première
idée était d’écrire un client qui parlait le protocole <a href="https://fr.wikipedia.org/wiki/SOCKS">SOCKS</a> (suivant le <a href="https://tools.ietf.org/html/rfc1928">RFC
1928</a>). Ainsi, il serait possible d’utiliser n’importe quel serveur SOCKS
existant, par exemple celui fourni par <code class="highlighter-rouge">ssh -D</code>.</p>

<p>Vous l’avez probablement déjà utilisé pour éviter le filtrage des pare-feux
en entreprise. Pour cela, démarrez le tunnel :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>ssh mon_serveur -ND1080
</code></pre></div>

<p>Puis configurez votre navigateur pour utiliser le proxy SOCKS <code class="highlighter-rouge">localhost:1080</code>.
N’oubliez pas d’activer la résolution DNS distante pour résoudre les noms de
domaine à partir de <code class="highlighter-rouge">mon_serveur</code> (dans <em>Firefox</em>, activez
<code class="highlighter-rouge">network.proxy.socks_remote_dns</code> dans <code class="highlighter-rouge">about:config</code>).</p>

<p>Malheureusement, l’implémentation d’<a href="https://fr.wikipedia.org/wiki/OpenSSH">OpenSSH</a> ne <a href="http://lists.mindrot.org/pipermail/openssh-unix-dev/2017-January/035662.html">supporte pas UDP</a>,
même si le protocole <a href="https://fr.wikipedia.org/wiki/SOCKS#SOCKS_v5">SOCKS5</a> lui-même le supporte. Et nous avons besoin d’UDP,
au moins pour les requêtes <a href="https://fr.wikipedia.org/wiki/Domain_Name_System">DNS</a> (ainsi que pour <a href="https://fr.wikipedia.org/wiki/Network_Time_Protocol">NTP</a>).</p>

<p>Si vous avez lu attentivement les deux paragraphes précédents, vous devriez vous
demander :</p>

<blockquote>
  <p>Comment Firefox peut-il résoudre les noms de domaine à distance alors
que le proxy SOCKS d’OpenSSH ne supporte même pas UDP ?</p>
</blockquote>

<p>La réponse se trouve dans la <a href="https://tools.ietf.org/html/rfc1928#section-4">section 4</a> du RFC : l’adresse de destination
demandée peut être une IPv4, une IPv6 ou <strong>un nom de domaine</strong>. Par contre,
pour utiliser cette fonctionnalité, le client (par exemple <em>Firefox</em>) doit
savoir qu’il passe par un proxy (puisqu’il doit explicitement passer le nom de
domaine au lieu de le résoudre localement), alors que notre <em>reverse tethering</em>
doit être <strong>transparent</strong>.</p>

<p>Mais tout n’est pas perdu. Certes, <em>OpenSSH</em> ne supporte pas UDP, mais ce n’est
qu’une implémentation spécifique, nous pourrions en utiliser une autre.
Malheureusement, <a href="http://stackoverflow.com/questions/41967217/why-does-socks5-require-to-relay-udp-over-udp">SOCKS5 relaie UDP sur UDP</a>, et les téléphones
et l’ordinateur communiquent sur <em>adb</em> (grâce à <code class="highlighter-rouge">adb reverse</code>), qui ne supporte
pas non plus la redirection de ports UDP.</p>

<p>Peut-être que nous pourrions au moins relayer les requêtes DNS en les forçant à
<a href="http://www.bortzmeyer.org/dns-over-tcp.html">utiliser TCP</a>, comme le fait <a href="https://linux.die.net/man/8/tsocks">tsocks</a> :</p>

<blockquote>
  <p><strong>tsocks</strong> will normally not be able to send DNS queries through a SOCKS
server since SOCKS V4 works on TCP and DNS normally uses UDP. Version 1.5 and
up do however provide a method to force DNS lookups to use TCP, which then
makes them proxyable.</p>
</blockquote>

<p>Mais finalement, SOCKS n’est plus une solution aussi attirante pour implémenter
le <em>reverse tethering</em>.</p>

<h3 id="gnirehtet">Gnirehtet</h3>

<p>Par conséquent, j’ai développé à la fois le client et le serveur relais
manuellement.</p>

<p>Ce <a href="http://www.thegeekstuff.com/2014/06/android-vpn-service/">billet de blog</a> et différents projets open source (<a href="https://github.com/vvviperrr/SimpleRT"><code class="highlighter-rouge">SimpleRT</code></a>,
<a href="https://github.com/google/vpn-reverse-tether"><code class="highlighter-rouge">vpn-reverse-tether</code></a>, <a href="https://github.com/hexene/LocalVPN"><code class="highlighter-rouge">LocalVPN</code></a> et <a href="https://android.googlesource.com/platform/development/+/master/samples/ToyVpn/"><code class="highlighter-rouge">ToyVpn</code></a>) m’ont beaucoup aidé à comprendre
comment implémenter cette solution de <em>reverse tethering</em>.</p>

<h2 id="conclusion">Conclusion</h2>

<p><a href="https://github.com/Genymobile/gnirehtet"><em>Gnirehtet</em></a> permet aux téléphones et tablettes Android d’utiliser
facilement la connection internet d’un ordinateur par USB, sans accès <em>root</em>.
C’est très utile quand vous ne pouvez pas accéder au réseau par un point d’accès
WiFi.</p>

<p>J’espère qu’il pourra être utile à certains d’entre vous.</p>

<p><em>Cet article est également disponible en anglais sur <a href="https://medium.com/@rom1v/gnirehtet-reverse-tethering-android-2afacdbdaec7">Medium</a>.</em></p>


guid: http://blog.rom1v.com/2017/07/fusionner-deux-depots-git
title: Fusionner deux dépôts git
url: http://blog.rom1v.com/2017/07/fusionner-deux-depots-git/
feedurl: http://blog.rom1v.com/feed/
content:
<p>Ce billet explique comment fusionner un dépôt <em>git</em> (avec son historique) dans
un sous-répertoire d’un autre dépôt <em>git</em>.</p>

<h2 id="cas-dusage">Cas d’usage</h2>

<p>Mon projet principal se trouve dans un dépôt <code class="highlighter-rouge">main</code>. J’ai démarré dans un autre
dépôt un projet <code class="highlighter-rouge">other</code>, que je souhaite finalement intégrer dans un
sous-répertoire <code class="highlighter-rouge">sub/</code> du projet principal, en conservant son historique. Après
cette fusion, je ne garderai que le dépôt principal.</p>

<h2 id="fusion">Fusion</h2>

<p>Les deux projets se trouvent dans le répertoire courant :</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>$ ls
main  other
</code></pre></div>

<p>Dans le dépôt <code class="highlighter-rouge">main</code>, <em>copier</em> la branche <code class="highlighter-rouge">master</code> de <code class="highlighter-rouge">other</code> dans une nouvelle
branche <code class="highlighter-rouge">tmp</code> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nb">cd </span>main
git fetch ../other master:tmp</code></pre></figure>

<p>Le dépôt <code class="highlighter-rouge">main</code> contient alors les historiques disjoints des deux projets.</p>

<p>Nous allons maintenant réécrire l’historique complet de la branche <code class="highlighter-rouge">tmp</code> pour
déplacer tout le contenu dans un sous-répertoire <code class="highlighter-rouge">sub/</code>, grâce une commande
donnée en exemple de <a href="https://git-scm.com/docs/git-filter-branch#_examples"><code class="highlighter-rouge">man git filter-branch</code></a> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">git checkout tmp
git filter-branch --index-filter <span class="se">\</span>
    <span class="s1">'git ls-files -s | sed "s-\t\"*-&amp;sub/-" |
        GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
            git update-index --index-info &amp;&amp;
     mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"'</span></code></pre></figure>

<p>À ce stade, nous avons toujours deux historiques indépendants, mais le contenu
lié à la branche <code class="highlighter-rouge">tmp</code> se trouve dans le sous-répertoire <code class="highlighter-rouge">sub/</code>.</p>

<div class="highlighter-rouge"><pre class="codehilite"><code>A---B---C---D master

  X---Y---Z tmp
</code></pre></div>

<p>La dernière étape consiste à relier les deux historiques, soit grâce à un
<em>rebase</em>, soit grâce à un <em>merge</em>.</p>

<p>Un <em>rebase</em> réécrit l’historique du sous-projet sur la branche <code class="highlighter-rouge">master</code> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">git rebase master

<span class="c"># A---B---C---D---X'--Y'--Z' master</span></code></pre></figure>

<p>Un <em>merge</em> relie juste les deux historiques grâce à un commit de <em>merge</em> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">git merge tmp --allow-unrelated-histories

<span class="c"># A---B---C---D---M  master</span>
<span class="c">#                /</span>
<span class="c">#       X---Y---Z tmp</span></code></pre></figure>

<h2 id="concrtement">Concrètement</h2>

<p>J’ai débuté la réécriture du serveur relais de <a href="/2017/03/gnirehtet/">gnirehtet</a> en <a href="https://www.rust-lang.org">Rust</a> dans un
dépôt séparé. Maintenant qu’il commence à fonctionner, je l’ai fusionné dans un
<a href="https://github.com/Genymobile/gnirehtet/tree/rust/rustrelay">sous-répertoire</a> du <a href="https://github.com/Genymobile/gnirehtet">dépôt principal</a> tout en conservant l’<a href="https://github.com/Genymobile/gnirehtet/commits/rust">historique</a> :</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">git fetch ../rustrelay master:tmp
git checkout tmp
git filter-branch --index-filter <span class="se">\</span>
    <span class="s1">'git ls-files -s | sed "s-\t\"*-&amp;rustrelay/-" |
        GIT_INDEX_FILE=$GIT_INDEX_FILE.new \
            git update-index --index-info &amp;&amp;
     mv "$GIT_INDEX_FILE.new" "$GIT_INDEX_FILE"'</span>
git rebase master</code></pre></figure>


guid: http://korben.info/?p=87801
author: Korben
feedurl: https://korben.info/feed
title:
Eternal Blues – Un scanner pour débusquer les machines vulnérables à la faille SMBv1 utilisée par Wannacry et notPetya / Petwrap

url:
https://korben.info/eternal-blues-scanner-debusquer-machines-vulnerables-a-faille-smbv1-utilisee-wannacry-notpetya-petwrap.html

content:
<p>Petya, notpetya, petwrap, Expetr, GoldenEye et j'en passe, profite de <a href="https://technet.microsoft.com/en-us/library/security/ms17-010.aspx">la faille SMBv1 que Microsoft a patchée en mars 2017</a> et qui a leakée des mains de la NSA il y a peu sous le nom EternalBlue et EternalRomance. Je ne vais pas revenir sur le problème, car j'ai exprimé le fond de ma pensée <a href="https://korben.info/wannacry-bien-pleurez.html">pour Wannacry à l'époque</a>.</p>
<p>Rien n'a changé... Grosse responsabilité de la NSA et de tous ceux qui n'ont pas fait leurs mises à jour, même si dans certains environnements, je peux concevoir que ce n'est pas si simple (mais rien n'est simple dans la vie, si ?).</p>
<blockquote class="twitter-tweet" data-lang="fr">
<p dir="ltr" lang="en">Mar: Microsoft patches SMB exploit<br />
Apr: Shadow Brokers dump Eternal Blue<br />
May: <a href="https://twitter.com/hashtag/WannaCry?src=hash">#WannaCry</a> hits<br />
Jun: People *still* haven't patched now <a href="https://twitter.com/hashtag/Petya?src=hash">#Petya</a></p>
<p>— Troy Hunt (@troyhunt) <a href="https://twitter.com/troyhunt/status/879738249983528960">27 juin 2017</a></p></blockquote>
<p><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script></p>
<p>Breeeef... Petwrap est donc un malware qui bousille les données présentes sur les disques durs, et même si vous payez la rançon, rien ne sera déchiffré. Il s'agit d'un outil développé pour nuire et non pas pour soutirer de l'argent. Il s'agirait d'après les spécialistes d'un malware développé avec un l'appui d'un état pour nuire à un autre pays. L'Ukraine ayant été celui qui a le plus douillé, on peut supposer que c'est l'Ukraine qui était visée. Mais bon, comme toujours, beaucoup d'hypothèses.</p>
<p>En attendant, je viens de tomber sur un outil développé par Elad Erez, Directeur de l'Innovation chez Imperva qui s'appelle <strong><a href="http://omerez.com/eternalblues/">Eternal Blues</a></strong>, qui est un scanner capable de débusquer sur votre réseau les machines vulnérables à la faille EternalBlue. Méfiance tout de même, cet outil cherche la présence active du protocole SMBv1. Donc même si vous avez patché vos machines, mais pas désactivé SMBv1, la machine sera vu comme à risque. Un faux positif donc. Pensez donc aussi à désactiver SMBv1 si vous n'en avez pas l'usage.</p>
<p><img class="wp-image-194 alignnone aligncenter" src="http://korben.info/wp-content/uploads/2017/06/EternalBlues-1.png" alt="EternalBlues" width="650" height="495" /></p>
<p>À utiliser à bon escient évidemment.</p>
<p>Bon, maintenant ça y est, vous êtes convaincus pour les mises à jour ? Ou je vous revoie au prochain malware utilisant Eternalbidule ?</p>
<div style="font-size:24px;color: #333b43; ">Et pour aller plus loin:<strong><br />
Petya - Ransomware </strong>
</div>
<p><a href="https://korben.info/ransomware-petya-recuperer-vos-fichiers-payer-rancon.html" data-iframely-url="//cdn.iframe.ly/TZANZMp"></a><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script></p>
<div style="font-size:24px;color: #333b43; margin-bottom:10px;">Egalement si vous voulez comprendre comment fonctionne un ransomware, j'ai écrit un article sur le fonctionnement de Cryptolocker:<strong><br />
Comprendre Cryptolocker et savoir si on est infecté </strong>
</div>
<p><a href="https://korben.info/dechiffrer-cryptolocker.html" data-iframely-url="//cdn.iframe.ly/api/iframe?url=http%3A%2F%2Fbit.ly%2F2tEX17b&key=5ef1fdb38c0e9621b860052ad04b97dd"></a><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script></p>
<p><a href="https://korben.info/comprendre-cryptolocker-et-ses-clones.html" data-iframely-url="//cdn.iframe.ly/api/iframe?url=http%3A%2F%2Fbit.ly%2F2tcAP3h&key=5ef1fdb38c0e9621b860052ad04b97dd"></a><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/eternal-blues-scanner-debusquer-machines-vulnerables-a-faille-smbv1-utilisee-wannacry-notpetya-petwrap.html">Eternal Blues &#8211; Un scanner pour débusquer les machines vulnérables à la faille SMBv1 utilisée par Wannacry et notPetya / Petwrap</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Petya, notpetya, petwrap, Expetr, GoldenEye et j'en passe, profite de la faille SMBv1 que Microsoft a patchée en mars 2017 et qui a leakée des mains de la NSA il y a peu sous le nom EternalBlue et EternalRomance. Je ne vais pas revenir sur le problème, car j'ai exprimé le fond de ma pensée <a class="read-more" href="https://korben.info/eternal-blues-scanner-debusquer-machines-vulnerables-a-faille-smbv1-utilisee-wannacry-notpetya-petwrap.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/eternal-blues-scanner-debusquer-machines-vulnerables-a-faille-smbv1-utilisee-wannacry-notpetya-petwrap.html">Eternal Blues &#8211; Un scanner pour débusquer les machines vulnérables à la faille SMBv1 utilisée par Wannacry et notPetya / Petwrap</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87829
title: Pop OS – La distrib Linux qui promet de vous aider à libérer votre potentiel créatif
author: Korben
url: https://korben.info/pop-os-distrib-linux-promet-de-aider-a-liberer-potentiel-creatif.html
feedurl: https://korben.info/feed
content:
<p><a href="https://system76.com/">System76</a> est un fabricant américain d'ordinateurs (portables, desktop, serveurs) qui a la particularité de livrer son matos avec Linux installé dessus contrairement à 99% des autres gros fabricants de PC.</p>
<p>Cool !</p>
<p>Ça évite de se prendre la tête pour trouver du matos compatible avec sa distrib préférée. Mais System76 ne s'arrête pas là, puisqu'ils viennent d'annonce qu'ils sortiront en Octobre 2017 leur propre distribution Linux. Baptisée <strong>Pop!_OS</strong>, cette distrib basée pour le moment sur Ubuntu 17.04 a été conçue pour contenter les créateurs de toutes sortes : Concepteurs de modèles 3D, développeurs, scientifiques, écrivains, graphistes ou Géo Trouvetout du XXIe siècle.</p>
<p>J'ai lu pas mal <a href="https://www.reddit.com/r/pop_os/">de sujets sur leur reddit</a> et j'avoue qu'autant le côté "créateur" me charme beaucoup (C'est plus évident que de dire que c'est une distrib conçue pour les gamers ou pour les fondus de bureautique...lol) autant j'ai encore du mal à voir le côté différenciant avec une Ubuntu classique à part le look plutôt cool. Mais ce que j'ai testé est encore une alpha donc j'espère que ça s'éclaircira au fur et à mesure. Rien que si les tablettes graphiques les plus utilisées du marché pouvaient toutes fonctionner direct, ça aurait un peu plus de sens.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47.png"><img class="aligncenter size-new-size wp-image-87830" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-650x401.png" alt="" width="650" height="401" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-650x401.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-325x200.png 325w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-768x473.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-1024x631.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-475x293.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-750x462.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47-400x246.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-12-47.png 1123w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36.png"><img class="aligncenter size-new-size wp-image-87831" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-650x399.png" alt="" width="650" height="399" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-650x399.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-326x200.png 326w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-768x472.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-1024x629.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-475x292.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-750x461.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36-400x246.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-36.png 1125w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47.png"><img class="aligncenter size-new-size wp-image-87832" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-650x402.png" alt="" width="650" height="402" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-650x402.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-324x200.png 324w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-768x475.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-1024x633.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-475x294.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-750x463.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47-400x247.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-03-14-13-47.png 1123w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p> Bienvenue donc à PopOS et vivement octobre qu'on en voit un peu plus !</p>
<p>Si vous voulez tester Pop!_OS, <a href="https://system76.com/pop">la version Alpha est disponible ici.</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/pop-os-distrib-linux-promet-de-aider-a-liberer-potentiel-creatif.html">Pop OS &#8211; La distrib Linux qui promet de vous aider à libérer votre potentiel créatif</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>System76 est un fabricant américain d'ordinateurs (portables, desktop, serveurs) qui a la particularité de livrer son matos avec Linux installé dessus contrairement à 99% des autres gros fabricants de PC. Cool ! Ça évite de se prendre la tête pour trouver du matos compatible avec sa distrib préférée. Mais System76 ne s'arrête pas là, puisqu'ils <a class="read-more" href="https://korben.info/pop-os-distrib-linux-promet-de-aider-a-liberer-potentiel-creatif.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/pop-os-distrib-linux-promet-de-aider-a-liberer-potentiel-creatif.html">Pop OS &#8211; La distrib Linux qui promet de vous aider à libérer votre potentiel créatif</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87862
title: Edito du 04/07/2017
author: Korben
url: https://korben.info/edito-du-04072017.html
feedurl: https://korben.info/feed
content:
<p>Yo !</p>
<p>Il est temps de changer l'édito non ?</p>
<p>Bon, après ce mois de juin ultra génial, car j'ai rencontré pleins de gens cool, mais ultra crevant, je suis enfin de retour à la maison, avec, comme vous pouvez l'imaginer, un tas de trucs en retard à gérer. C'était chaud niveau mental parce que mon ordi principal de boulot est mort après 8 ans de bons et loyaux services, mes fourmis sont mortes (z'ont pas supporté le changement d'habitat), mes pieds de tomates sont morts et l'ensemble de mes défenses immunitaires sont mortes.</p>
<p>Mais après une semaine de coma dans le canap' et un gros traitement de choc à base de docus Netflix et de chocolat, il s'avère que suis toujours VIVANT, n'en déplaise aux cons. Et ma motivation qui n'était qu'un tas de cendre fumant il n'y a pas 2 jours, est en train de jaillir à nouveau des enfers de la matrice tel un Phoenix fait de métal fondu et de bits chatoyants.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/tenor-144832303.gif"><img class="aligncenter size-full wp-image-87863" src="http://korben.info/wp-content/uploads/2017/07/tenor-144832303.gif" alt="" width="220" height="123" /></a></p>
<p>Viva el doliprane libre, bon 4 juillet à tous les américains qui ont repoussé l'invasion alien en 1996 grâce à un virus et à très vite les amis !</p>
<p>K.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/edito-du-04072017.html">Edito du 04/07/2017</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Yo ! Il est temps de changer l'édito non ? Bon, après ce mois de juin ultra génial, car j'ai rencontré pleins de gens cool, mais ultra crevant, je suis enfin de retour à la maison, avec, comme vous pouvez l'imaginer, un tas de trucs en retard à gérer. C'était chaud niveau mental parce que <a class="read-more" href="https://korben.info/edito-du-04072017.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/edito-du-04072017.html">Edito du 04/07/2017</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87865
title: Comment créer une application web performante ? #RjTalk
author: Korben
url: https://korben.info/creer-application-web-performante-rjtalk.html
feedurl: https://korben.info/feed
content:
<p>Lors du dernier Remixjobs Day, Hicham Hsissi, responsable technique de <a href="http://lab5com.fr/">Lab5com</a> est venu présenter les moyens existants permettant de créer une application web performante (temps de réponse et de consommation mémoire réduits), aussi bien côté Back que côté Front, sans que ça ne soit au détriment de l'architecture. Pour cela il a utilisé Symfony3, Php7, ElascticSearch, Varnish et Memcached.</p>
<p>Je me dis que ça pourrait en intéresser certains d'entre vous.</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/QsxlhbzK3jY" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p style="font-size:24px;color: #333b43; ">Pour aller plus loin dans le développement d'applications:</p>
<div style="font-size:24px;color: #333b43; ">
<p style="margin-top:5px;"><strong><br />
Historique de la vie d’une application: choix techniques et évolutions<br />
 </strong></p>
</div>
<p><a href="https://korben.info/historique-de-vie-dune-application-choix-techniques-evolutions.html" data-iframely-url="//cdn.iframe.ly/api/iframe?url=https%3A%2F%2Fkorben.info%2Fhistorique-de-vie-dune-application-choix-techniques-evolutions.html&key=5ef1fdb38c0e9621b860052ad04b97dd"></a><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script></p>
<p>L'un d'entre eux, Gwenn Guihal, était venu à un RJTalk expliquer comment avec son équipe, ils avaient fait évoluer l'application mobile du service.<br />
Faut savoir que les applis mobiles ça devient huge en temps de consommation utilisateur aujourd'hui, en tête on retrouve surtout dans nos habitudes d'utilisation, les applis media type Netflix, Youtube etc... </p>
<div style="font-size:24px;color: #333b43; "><strong><br />
Comment orienter son back-end pour mobile avec Ruby On Rails</p>
<p> </strong>
</div>
<p><a href="https://korben.info/orienter-back-end-mobile.html" data-iframely-url="//cdn.iframe.ly/api/iframe?url=https%3A%2F%2Fkorben.info%2Forienter-back-end-mobile.html&key=5ef1fdb38c0e9621b860052ad04b97dd"></a><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script></p>
<p>La retro-ingénierie ça m'a toujours fait kiffer et même si je ne suis pas un Jedi du back-end, savoir ce qui se passe dans la matrice c'est trés interessant, je pense d'ailleurs que tout bon dev front-end doit avoir, sans pour autant en devenir un spécialiste, des notions de back-end pour avoir une meilleure vision de son code en front.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/creer-application-web-performante-rjtalk.html">Comment créer une application web performante ? #RjTalk</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Lors du dernier Remixjobs Day, Hicham Hsissi, responsable technique de Lab5com est venu présenter les moyens existants permettant de créer une application web performante (temps de réponse et de consommation mémoire réduits), aussi bien côté Back que côté Front, sans que ça ne soit au détriment de l'architecture. Pour cela il a utilisé Symfony3, Php7, <a class="read-more" href="https://korben.info/creer-application-web-performante-rjtalk.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/creer-application-web-performante-rjtalk.html">Comment créer une application web performante ? #RjTalk</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87891
title: Adapter le concept de la Zip Bomb pour défendre son site web des scripts kiddies
author: Korben
url: https://korben.info/adapter-concept-de-zip-bomb-defendre-site-web-scripts-kiddies.html
feedurl: https://korben.info/feed
content:
<p>Hier, le développeur Christian <span class="meta">Haschek a publié <a href="https://blog.haschek.at/post/f2fda">sur son blog</a> un article qui explique comment il a dépoussiéré le concept de "zip bomb" pour en faire une méthode de défense contre les scanners de vulnérabilités.</span></p>
<p>Mais avant d'aller plus loin, qu'est-ce qu'une "zip bomb" ? Et bien cela consiste à créer un fichier zip contenant de la donnée ultra répétitive qui ne pèsera que quelques kb dans sa version compressée, mais qui générera un fichier de plusieurs petabytes si vous tentez de le décompresser. L'idée est bien évidemment de faire crasher la machine ou le soft en saturant le disque dur ou la RAM.</p>
<p>Vous pouvez trouver une bombe zip <a href="http://www.unforgettable.dk/">en téléchargement ici</a>, si vous voulez faire sauter votre disque dur. Le concept de la zip bomb est assez ancien et Christian l'a adapté pour défendre son site et faire chier les scripts kiddies.</p>
<p>Les navigateurs ne sachant pas décompresser du zip, il a donc fabriqué une gzip bomb...</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/es8b6god0j.jpg"><img class="aligncenter size-full wp-image-87894" src="http://korben.info/wp-content/uploads/2017/07/es8b6god0j.jpg" alt="" width="538" height="138" srcset="//korben.info/wp-content/uploads/2017/07/es8b6god0j.jpg 538w, //korben.info/wp-content/uploads/2017/07/es8b6god0j-475x122.jpg 475w, //korben.info/wp-content/uploads/2017/07/es8b6god0j-400x103.jpg 400w" sizes="(max-width: 538px) 100vw, 538px" /></a></p>
<p>...qu'il envoie ensuite via une page PHP lorsqu'il détecte le user-agent d'un scanner de vuln (voir son article pour consulter le code associé).</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-06-09-46-20.png"><img class="aligncenter size-full wp-image-87890" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-06-09-46-20.png" alt="" width="634" height="197" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-06-09-46-20.png 634w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-06-09-46-20-475x148.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-06-09-46-20-400x124.png 400w" sizes="(max-width: 634px) 100vw, 634px" /></a></p>
<p>C'est basic, mais efficace car ça fait planter des navigateurs comme Chrome, IE ou encore Edge et détraque certains scanners de vuln comme SQLmap ou Nikto.</p>
<p>Maintenant si vous voulez tester par vous même, vous pouvez cliquer ici à vos risques et périls : <a href="https://blog.haschek.at/tools/bomb.php">https://blog.haschek.at/tools/bomb.php</a></p>
<p><a href="https://blog.haschek.at/post/f2fda">Source</a></p>
<h3 style="font-size: 24px; color: #333b43;"><strong><br />
Hack du scanner Iris du S8<br />
</strong></h3>
<p><a href="https://korben.info/scanner-diris-samsung-galaxy-s8-dejoue-simple-photo.html" data-iframely-url="//cdn.iframe.ly/api/iframe?url=https%3A%2F%2Fkorben.info%2Fscanner-diris-samsung-galaxy-s8-dejoue-simple-photo.html&key=5ef1fdb38c0e9621b860052ad04b97dd"></a><script async src="//cdn.iframe.ly/embed.js" charset="utf-8"></script></p>
<p style="line-height: 1.4; font-size: 14px; font-weight: 400;">Après les Galaxy Note 7 qui prend feu, le spot de pub qui nous explique que maintenant, ça y est, ils ont compris et ils font les meilleurs tests qualité possibles sur leur matos, voici que la sécurité de déverrouillage par l'iris présente dans le Galaxy S8 et le Galaxy S8 Plus est mise à mal.</p>
<p>En effet, les hackers du CCC...</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/adapter-concept-de-zip-bomb-defendre-site-web-scripts-kiddies.html">Adapter le concept de la Zip Bomb pour défendre son site web des scripts kiddies</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Hier, le développeur Christian Haschek a publié sur son blog un article qui explique comment il a dépoussiéré le concept de "zip bomb" pour en faire une méthode de défense contre les scanners de vulnérabilités. Mais avant d'aller plus loin, qu'est-ce qu'une "zip bomb" ? Et bien cela consiste à créer un fichier zip contenant de <a class="read-more" href="https://korben.info/adapter-concept-de-zip-bomb-defendre-site-web-scripts-kiddies.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/adapter-concept-de-zip-bomb-defendre-site-web-scripts-kiddies.html">Adapter le concept de la Zip Bomb pour défendre son site web des scripts kiddies</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87907
title: Geostorm – Re la fin du monde
author: Korben
url: https://korben.info/geostorm-re-fin-monde.html
feedurl: https://korben.info/feed
content:
<p>J'ai toujours beaucoup aimé les films catastrophes même ceux de seconde zone avec des effets spéciaux pourris qui passent sur M6. Quoique maintenant que le climat part en sucette, c'est un peu moins "fun".</p>
<p>Mais bon, nos amis américains n'ont pas abandonné le genre et reviennent avec <strong>Geostorm</strong>. L'histoire se situe dans un monde où l'Humain a appris à maitriser le dérèglement climatique grâce à une flopée de satellites capable d'influencer la météo. Le mec en charge de ce truc c'est Jake, incarné par Gerard Butler et malheureusement, il galère un peu, car il semblerait que le réseau de satellites soit sous l'emprise de quelqu'un d'autre (un hacker avec une capuche ?) qui s'amuse à lancer une giga tempête mondiale... Une "geostorm".</p>
<p>On est donc dans le même esprit que le film 2012 sauf que là ce n’est pas la nature toute seule, mais l'Homme qui prend le contrôle de la nature pour détruire l'Humanité. D'une logique sans faille. Un peu triste quand même de se dire qu'à Hollywood, ils considèrent que le réchauffement climatique c'est mort, et qu'on a plus qu'à espérer qu'un génie trouve le moyen technologique de réguler le climat.</p>
<p>J'ai lu quelques critiques de la bande-annonce et tout le monde pense que ce film est une grosse bouse annoncée. Ça tombe bien, j'adore les grosses bouses cinématographiques. C'est donc un film que je vais attendre avec impatience.</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/lteKOfr1wqk" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Date de sortie le 1er novembre 2017 !</p>
<p><a href="https://www.youtube.com/channel/UCzM_2Ekxw6ZhvSeyL6awLTw">Source</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/geostorm-re-fin-monde.html">Geostorm &#8211; Re la fin du monde</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>J'ai toujours beaucoup aimé les films catastrophes même ceux de seconde zone avec des effets spéciaux pourris qui passent sur M6. Quoique maintenant que le climat part en sucette, c'est un peu moins "fun". Mais bon, nos amis américains n'ont pas abandonné le genre et reviennent avec Geostorm. L'histoire se situe dans un monde où <a class="read-more" href="https://korben.info/geostorm-re-fin-monde.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/geostorm-re-fin-monde.html">Geostorm &#8211; Re la fin du monde</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87914
title: Déballage d’un ordinateur quantique
author: Korben
url: https://korben.info/deballage-dun-ordinateur-quantique.html
feedurl: https://korben.info/feed
content:
<p>Je pense que vous n'avez pas encore la place d’accueillir chez vous un ordinateur quantique (ni chez moi je vous rassure), puis de toute façon Steam n'est pas encore dispo sur ce genre de bécanes, alors à quoi bon ?</p>
<p>Non, ce n'est pas une raison pour ne pas s'intéresser à cette techno. Je vous propose de regarder cette vidéo en anglais (avec sous titres VO) de <strong>Linus tech tips</strong>, qui s'est rendu chez <a href="https://www.dwavesys.com/">D-Wave</a>, l'un des fabricants d'ordinateurs quantiques les plus connus, pour vous montrer à quoi ça ressemble *vraiment* et comment ça fonctionne.</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/60OkanvToFI" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p><span id="more-87914"></span></p>
<hr></hr>
<p><a style="color: #333b43; font-size: 26px; font-weight: bold;" href="http://korben.info/kbn/airbnb" target="_blank">Nouveau Cours en ligne : Créez votre première place de marché en clonant Airbnb<br />
</a></p>
<p><center><a href="http://korben.info/kbn/airbnb" target="_blank"><img class="overflowing alignnone" src="http://korben.info/wp-content/uploads/2017/07/127322b499c3f9a7dba0d217ecc3d488.jpg" alt="" width="px" height="px" /></a></center></p>
<p><!--p style="margin-top:10px;"><strong><a style="color: #333b43; font-size: 20px; margin-top:10px;" href="http://korben.info/kbn/airbnb" target="_blank">Compte à rebours, jusqu'à 15h aujourd'hui  </a></strong></p-->
<p style="margin-top:10px;"><strong><a style="color: #333b43; font-size: 18px; margin-top:10px;" href="http://korben.info/kbn/airbnb" target="_blank">Apprendre à coder pas à pas la plateforme Airbnb (en utilisant Ruby on Rails, Javascript, Bootstrap et Stripe)  </a></strong></p>
<p>
Plus de 10h de cours en ligne avec un formateur disponible pour répondre à vos questions et vous accompagnez dans la réalisation de votre Airbnb.</p>
<p>Sans aucune connaissance préalable en développement vous allez réaliser ce projet de place de marché type Airbnb avec toutes les étapes clés :</p>
<ul>
<li>Authentification </li>
<li>Envoi d'emails</li>
<li>Système de notation</li>
<li>Système de notifications </li>
<li>Page de profil</li>
<li>Création et modification d'annonces</li>
<li>Module d'upload de photos </li>
<li>Module de réservations</li>
<li>Système de paiement</li>
<li>Module de recherche multi-critères</li>
<li>Module de messagerie en temps réel</li>
</ul>
<p>Tout ce qui vous faut pour créer votre propre service de réservation.</p>
<p><!--p>Pour cette semaine <a style="color: #ff7b10; font-weight: bold;" href="http://korben.info/kbn/android" target="_blank">dédiée à la formation<a/>le cours Android est également disponible à 10 €</p-->
<p><!--p>Avec la fonction exclusive MSI Shift, vous pourrez basculer librement entre trois modes prédéfinis : Sport, Comfort et Green. Avec ces modes, vous pourrez adapter l'utilisation du système selon vos besoins et ainsi profiter d'un équilibre parfait entre les performances et la température. La fonction Shift pourra répondre à vos demandes grâce au raccourci Fn + F7 ou par l'intermédiaire de la plate-forme Dragon Gaming Center.</p-->
<p><!--p>REFROIDISSEMENT COOLER BOOST 3
Pour un ordinateur portable, le refroidissement est bien sûr primordial et il peut parfois être difficile d'offrir un système thermique parfait. Avec sa technologie Cooler Boost 3, MSI répond à ce besoin de refroidissement en proposant deux ventilateurs ainsi que des caloducs dédiés au GPU et au CPU. En un clic sur le bouton Fan Boost, les caloducs et les deux ventilateurs s'activeront et enverront efficacement la chaleur hors du système.</p-->
<p><!--p>TECHNOLOGIE MATRIX DISPLAY
La technologie MSI Matrix Display supporte jusqu'à 2 écrans externes en même temps par l'intermédiaire d'un port HDMI* et d'un port mini DisplayPort 1.2. Avec cette technologie, vous pourrez profiter d'une utilisation multimédia pendant votre partie. Vous pourrez également connecter votre ordinateur à votre TV HD et regarder vos vidéos en résolution 4K 3840 x 2160 maximum. MSI Matrix Display crée véritablement un environnement idéal pour le gaming extrême et pour le divertissement multimédia.</p-->
<p><strong><a style="color: #1A95B3; font-size: 20px;" href="http://korben.info/kbn/airbnb" target="_blank" onmouseover="this.style.background='#b4e7f8';this.style.color='#FF7B10'" onmouseout="this.style.color='#1A95B3';">Lancez-vous dès maintenant pour 10€ !</a></strong></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/deballage-dun-ordinateur-quantique.html">Déballage d&#8217;un ordinateur quantique</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Je pense que vous n'avez pas encore la place d’accueillir chez vous un ordinateur quantique (ni chez moi je vous rassure), puis de toute façon Steam n'est pas encore dispo sur ce genre de bécanes, alors à quoi bon ? Non, ce n'est pas une raison pour ne pas s'intéresser à cette techno. Je vous <a class="read-more" href="https://korben.info/deballage-dun-ordinateur-quantique.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/deballage-dun-ordinateur-quantique.html">Déballage d&#8217;un ordinateur quantique</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87932
title: L’authentification double facteur (2FA), oui mais pas n’importe comment !
author: Korben
url: https://korben.info/authentification-double-facteur-2fa.html
feedurl: https://korben.info/feed
content:
<p>Il y a un truc simple que vous devez absolument faire sur tous les services que vous utilisez (ou au moins ceux que vous jugez comme cruciaux), c'est <strong>activer l'authentification double facteur</strong> appelée aussi <strong>2FA</strong>. Le concept est simple, une fois activé, en plus de votre mot de passe, on vous demandera un code unique valide sur une durée limitée. Ce code unique est parfois envoyé par email, parfois par SMS, et parfois disponible dans une application dédiée rien qu'à ça.</p>
<p>C'est très important d'activer l'authentification double facteur, car en cas de vol de mot de passe (via une attaque man in the middle, un phishing ou autre), il n'y a plus de barrière qui s'oppose au criminel qui veut se connecter sur l'un de vos comptes. Et cela peut avoir des conséquences dramatiques comme le vol d'argent (PayPal, la banque...etc.), ou l'usurpation d'identité (Twitter, Facebook, votre boite mail...etc.).</p>
<p>L'envoi de code par SMS ou email est la méthode la plus courante, car la plus commode. Il suffit d'avoir as à votre boite mail ou à votre carte SIM avec le bon numéro de téléphone et c'est réglé.</p>
<p><strong>,MAIS si j'écris cet article aujourd'hui, c'est pour vous décourager d'utiliser l'authentification double facteur autrement qu'avec une application dédiée</strong>. Et je vais vous expliquer pourquoi.</p>
<p>Prenons d'abord l'exemple de la boite mail. Si un quelqu'un prend le contrôle de votre boite mail, il pourra tout faire, y compris réinitialiser vos mots de passe sur tous vos sites préférés et lorsqu'un code 2FA lui sera demandé, il le recevra direct par mail. Donc ça ou rien c'est presque la même chose.</p>
<p>Le code 2FA reçu par SMS est-ce qu'il y a de plus pratique et c'est ce que la plupart des gens choisissent. Il suffit d'avoir accès à une SIM avec son numéro et c'est bon. Évidemment, le jour où vous changez brusquement de numéro de téléphone, vous l'avez dans l'os. Et là, ça dépendra des sites. Pour certains, ce sera mort et perdrez à tout jamais votre compte. Pour d'autre, il y aura toujours moyen de récupérer un mot de passe et de faire sauter le 2FA (mais à quoi bon avoir mis cette protection dans ce cas ?) et dans d'autres cas, l'accès pourra vous être rendu, mais toutes les données de votre compte seront effacées. Ce qui peut aussi être problématique.</p>
<p><strong>Mais je vous déconseille aussi d'activer le 2FA par SMS.</strong></p>
<p>Pourquoi ?</p>
<p>Et bien pour 2 raisons...</p>
<p>La première, c'est que certains ont trouvé le moyen d'exploiter <strong><a href="https://korben.info/rien-quavec-numero-de-telephone-possible-de-hacker-comptes-web-de-quelquun-twitter-facebook-whatsapp-etc.html">une faille dans le protocole SS7</a></strong> des réseaux mobiles afin de détourner des SMS. Comme <a href="https://arstechnica.com/security/2017/05/thieves-drain-2fa-protected-bank-accounts-by-abusing-ss7-routing-protocol/">l'explique cet article</a>, des gens se sont fait piller leur compte en banque juste comme ça à cause de cette faille.</p>
<p>Mais il n'est pas nécessaire d'aller aussi loin dans la technique quand on peut compter sur la négligence de nos opérateurs téléphoniques (et ça, c'est la seconde raison). En effet, je vois souvent des articles ou des tweets qui expliquent qu'un criminel à trompé le call center d'un opérateur pour se faire envoyer une copie de la carte SIM de sa victime et ainsi lui dérober de l'argent.</p>
<hr></hr>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-10-09-38-54.png"><img class="aligncenter size-full wp-image-87934" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-10-09-38-54.png" alt="" width="484" height="233" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-10-09-38-54.png 484w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-10-09-38-54-415x200.png 415w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-10-09-38-54-475x229.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-10-09-38-54-400x193.png 400w" sizes="(max-width: 484px) 100vw, 484px" /></a></p>
<p style="text-align: left;">C'est moche hein. C'est donc aussi pour ça que je vous déconseille de vous faire envoyer vos codes 2FA par SMS.</p>
<p>Alors que nous reste-t-il ?</p>
<p><strong>Et bien la dernière option, c'est une application qui vous génère des codes 2FA à la volée</strong>. Et là sans être infaillible, c'est déjà un peu plus costaud, car si quelqu'un veut accéder à vos comptes, il devra, en plus de récupérer votre mot de passe, vous voler votre téléphone et connaitre le code pour le déverrouiller. Bien sûr si vous n'avez mis aucune sécurité de verrouillage à votre smartphone, que votre application 2FA ne vous réclame pas de code PIN ou de mot de passe et qu'en plus, vos mots de passe de sites web sont enregistrés dans votre navigateur, je ne peux rien faire pour vous. Limite, vous méritez de vous faire piller votre compte bancaire.</p>
<p>Notez que quand vous activez l'authentification double facteur pour l'utiliser via une app, il faut être très précautionneux. En effet, le site vous fournira une clé ou un QR code qu’il faudra conserver en sécurité quelque part pour que si vous perdez votre téléphone ou que vous le formatez, vous puissiez toujours accéder à votre compte.</p>
<p>Il existe masse d'applications 2FA donc loin de moi l'idée de vous en conseiller une ultime... Mais évitez Google Authenticator ou FreeOTP qui ne permettent pas de configurer un code de verrouillage (Pin ou mot de passe). Évitez aussi toutes les apps qui vous force à stocker vos configs 2FA dans le cloud en échange de la création d'un compte chez eux.</p>
<p>De toutes celles que j'ai testées, mes préférées sont <a href="https://authy.com/">Authy</a> et <a href="https://lastpass.com/auth/?lang=fr">LastPass Authenticator</a> (qui propose un backup sur votre compte Lastpass, mais vous n'êtes pas obligé de l'activer).</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/2fa.png"><img class="aligncenter wp-image-87939" src="http://korben.info/wp-content/uploads/2017/07/2fa.png" alt="" width="298" height="530" srcset="//korben.info/wp-content/uploads/2017/07/2fa.png 506w, //korben.info/wp-content/uploads/2017/07/2fa-112x200.png 112w, //korben.info/wp-content/uploads/2017/07/2fa-475x845.png 475w, //korben.info/wp-content/uploads/2017/07/2fa-400x711.png 400w" sizes="(max-width: 298px) 100vw, 298px" /></a></p>
<p>Voilà... Donc pour résumer :</p>
<ul>
<li>Activez l'authentification 2FA partout si c'est dispo.</li>
<li>Ne demandez jamais à recevoir de code 2FA par email.</li>
<li>Ne demandez jamais à recevoir de code 2FA par SMS.</li>
<li>Utilisez uniquement une application 2FA qui propose une protection PIN ou mot de passe.</li>
<li>Évitez les applications qui stockent vos 2FA dans le cloud.</li>
<li>Pensez bien à conserver en lieu sûr vos clés secrètes ou QR code 2FA pour les réactiver en cas de perte, de panne ou de formatage de votre mobile.</li>
<li>Vous pouvez aussi opter pour les systèmes 2FA physiques mais cela fera l'objet d'un probable autre article car je n'en ai pas encore testé réellement.</li>
</ul>
<p>Je pense que j'ai tout dit !</p>
<p>Bonne activation de 2FA à tous !!</p>
<p><span id="more-87932"></span></p>
<p><a style="color: #333b43; font-size: 26px; font-weight: bold;" href="http://korben.info/kbn/docker" target="_blank">Docker Docker...envie de savoir comment ça marche ?<br />
</a></p>
<p><center><a href="http://korben.info/kbn/docker" target="_blank"><img class="overflowing alignnone" src="http://korben.info/wp-content/uploads/2017/07/aaeaaqaaaaaaaaq2aaaajddlotvkztdklti2zjutngy3my04nwzhlwy3mjmzzduzzwmwng-e1498909726510.png" alt="" width="px" height="px" /></a></center></p>
<p style="margin-top:10px;"><strong><a style="color: #333b43; font-size: 18px; margin-top:10px;" href="http://korben.info/kbn/docker" target="_blank">Découvrez les concepts de base de Docker et prenez la plateforme en mains  </a></strong></p>
<p>
Dans ce cours vous trouverez les éléments suivants:</p>
<ul>
<li>un peu de théorie pour comprendre les différents concepts utilisés</li>
<li>des exemples pour les illustrer</li>
<li>des démos pour avoir une version dynamique</li>
<li>des exercices pour manipuler et assurer une bonne compréhension du cours</li>
<li>des documents annexes (cheat sheet, ...)</li>
</ul>
<p>De nouvelles sections sont en cours d'enregistrement et seront ajoutées dans les semaines à venir, votre inscription à ce cours aujourd'hui vous donne accès automatiquement à ces nouvelles sections.</p>
<p><!--p>Pour cette semaine <a style="color: #ff7b10; font-weight: bold;" href="http://korben.info/kbn/android" target="_blank">dédiée à la formation<a/>le cours Android est également disponible à 10 €</p-->
<p><!--p>Avec la fonction exclusive MSI Shift, vous pourrez basculer librement entre trois modes prédéfinis : Sport, Comfort et Green. Avec ces modes, vous pourrez adapter l'utilisation du système selon vos besoins et ainsi profiter d'un équilibre parfait entre les performances et la température. La fonction Shift pourra répondre à vos demandes grâce au raccourci Fn + F7 ou par l'intermédiaire de la plate-forme Dragon Gaming Center.</p-->
<p><!--p>REFROIDISSEMENT COOLER BOOST 3
Pour un ordinateur portable, le refroidissement est bien sûr primordial et il peut parfois être difficile d'offrir un système thermique parfait. Avec sa technologie Cooler Boost 3, MSI répond à ce besoin de refroidissement en proposant deux ventilateurs ainsi que des caloducs dédiés au GPU et au CPU. En un clic sur le bouton Fan Boost, les caloducs et les deux ventilateurs s'activeront et enverront efficacement la chaleur hors du système.</p-->
<p><!--p>TECHNOLOGIE MATRIX DISPLAY
La technologie MSI Matrix Display supporte jusqu'à 2 écrans externes en même temps par l'intermédiaire d'un port HDMI* et d'un port mini DisplayPort 1.2. Avec cette technologie, vous pourrez profiter d'une utilisation multimédia pendant votre partie. Vous pourrez également connecter votre ordinateur à votre TV HD et regarder vos vidéos en résolution 4K 3840 x 2160 maximum. MSI Matrix Display crée véritablement un environnement idéal pour le gaming extrême et pour le divertissement multimédia.</p-->
<p><strong><a style="color: #1A95B3; font-size: 20px;" href="http://korben.info/kbn/docker" target="_blank" onmouseover="this.style.background='#b4e7f8';this.style.color='#FF7B10'" onmouseout="this.style.color='#1A95B3';">En Savoir + sur tout ce que vous pourrez apprendre avec ce cours</a></strong></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/authentification-double-facteur-2fa.html">L&#8217;authentification double facteur (2FA), oui mais pas n&#8217;importe comment !</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Il y a un truc simple que vous devez absolument faire sur tous les services que vous utilisez (ou au moins ceux que vous jugez comme cruciaux), c'est activer l'authentification double facteur appelée aussi 2FA. Le concept est simple, une fois activé, en plus de votre mot de passe, on vous demandera un code unique <a class="read-more" href="https://korben.info/authentification-double-facteur-2fa.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/authentification-double-facteur-2fa.html">L&#8217;authentification double facteur (2FA), oui mais pas n&#8217;importe comment !</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87976
title: Retour sur la 15e Nuit du Hack
author: Korben
url: https://korben.info/retour-15e-nuit-hack.html
feedurl: https://korben.info/feed
content:
<p>Le 24 juin dernier c'était la XVe <a href="http://nuitduhack.com/">Nuit du Hack</a>. Une fois encore un excellent cru, même si malheureusement, je n'ai pas pu aller jusqu'au bout avec mes 40° de fièvre.</p>
<p>Tant pis, je me rattraperai l'année prochaine, mais heureusement, <a href="https://www.youtube.com/channel/UCVwG9JHqGLfEO-4TkF-lf2g">Nowtech.tv</a> était là et je peux donc me consoler avec la super émission qu'ils ont réalisée là bas.</p>
<p>Merci Marion, merci Jérôme !</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/xm_XIWq0zco" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/retour-15e-nuit-hack.html">Retour sur la 15e Nuit du Hack</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Le 24 juin dernier c'était la XVe Nuit du Hack. Une fois encore un excellent cru, même si malheureusement, je n'ai pas pu aller jusqu'au bout avec mes 40° de fièvre. Tant pis, je me rattraperai l'année prochaine, mais heureusement, Nowtech.tv était là et je peux donc me consoler avec la super émission qu'ils ont <a class="read-more" href="https://korben.info/retour-15e-nuit-hack.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/retour-15e-nuit-hack.html">Retour sur la 15e Nuit du Hack</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87981
title: Internet toujours menacé partout dans le monde
author: Korben
url: https://korben.info/internet-toujours-menace-partout-monde.html
feedurl: https://korben.info/feed
content:
<p>Sale temps pour Internet en ce moment. Et par ricochet <strong>pour la démocratie, la liberté et la vie privée des gens</strong>.</p>
<p>Tout d'abord aux <strong>États-Unis</strong>, les opérateurs comme Comcast, Verizon et AT&amp;T ont dépensé depuis 2008, <a href="http://www.dslreports.com/shownews/3-ISPs-Have-Spent-572-Million-to-Kill-Net-Neutrality-Since-2008-139931">572 millions de dollars</a> en lobbying pour enterrer les lois de protection de la neutralité du net qu'avait mis en place le gouvernement Obama. L'objectif de ces opérateurs est de pouvoir augmenter leurs profits en segmentant les usages d'Internet. Par exemple pour un forfait pas cher, vous ne pourrez aller que sur Facebook à la vitesse d'un escargot. Et pour débrider YouTube ou d'autres sites, il faudra prendre le forfait du dessus et ainsi de suite.</p>
<p>Les géants du net comme Amazon, Twitter, Netflix et des associations comme l'EFF et d'autres se mobilisent donc aujourd'hui dans une action baptisée <strong><a href="https://www.battleforthenet.com/">Battle for the Net</a></strong> pour informer les gens de l'importance de la neutralité du net. Et ne vous y trompez pas, ce n'est pas un problème américano-américain uniquement, car en France aussi, nos chers opérateurs tentent des trucs en ce sens. Il convient donc d'être extrêmement vigilant.</p>
<p>En Russie et en Chine, c'est aussi très tendu avec <a href="https://www.theregister.co.uk/2017/07/11/russia_china_vpns_tor_browser/">de nouvelles lois qui interdisent l'utilisation de Tor et surtout celles des VPN</a>. Quand on sait qu'en Chine, le VPN est le seul moyen pour les gens (Chinois, mais aussi expat' ou touristes) de passer au travers du Grand Firewall Chinois, ça va compliquer la vie de pas mal de monde. Certains ne pourront plus échanger avec leurs amis ou leur famille à l'étranger, d'autres ne pourront plus travailler dans de bonnes conditions quant à l'accès libre à l'information, je n'en parle même pas.</p>
<p>Enfin, et je garde le meilleur pour la fin, en <strong>France</strong> aussi ça commence à se tendre sérieusement avec l'arrivée du "<em>projet de loi sur la sécurité publique et contre le terrorisme</em>". Malheureusement, comme durant les quinquennats précédents, on a encore à faire à un gouvernement qui souhaite ficher, surveiller et piétiner la vie privée de milliers, si ce n'est de millions de français au travers de la mise en place de plusieurs fichiers, de traitements de données d'enregistrement et de réservation, d'écoute des communications, de l'obligation de révéler ses identifiants internet, ou encore de géolocalisation de personnes. Et malheureusement, une fois encore, <a href="https://www.nextinpact.com/news/104762-la-cnil-critique-projet-loi-sur-securite-publique-et-atteintes-au-chiffrement.htm">la CNIL qui est l'un des derniers remparts contre ce genre de dérives, a été totalement ignorée</a>. C'est totalement inadmissible. Mais c'était aussi totalement prévisible.</p>
<p>Internet et par extension notre société Humaine est un être vivant dont nous sommes les petites cellules utiles et constructives. Et malheureusement, les gouvernements, les lobbys et autres sangsues politiciennes qui se succèdent au fil des années, en sont le cancer.</p>
<p>La question qui se pose maintenant, c'est qu'attendons-nous pour le combattre ?</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/internet-toujours-menace-partout-monde.html">Internet toujours menacé partout dans le monde</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Sale temps pour Internet en ce moment. Et par ricochet pour la démocratie, la liberté et la vie privée des gens. Tout d'abord aux États-Unis, les opérateurs comme Comcast, Verizon et AT&#38;T ont dépensé depuis 2008, 572 millions de dollars en lobbying pour enterrer les lois de protection de la neutralité du net qu'avait mis <a class="read-more" href="https://korben.info/internet-toujours-menace-partout-monde.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/internet-toujours-menace-partout-monde.html">Internet toujours menacé partout dans le monde</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87868
title: Retour d’expérience sur de l’intégration continue – #RJTalk
author: Korben
url: https://korben.info/retour-dexperience-de-lintegration-continue-rjtalk.html
feedurl: https://korben.info/feed
content:
<p>Julien Breux, CTO chez BAP (<a href="https://www.bureauxapartager.com/">Bureaux à Partager</a>) a fait une conf lors du dernier RJDay et le thème devrait vous intéresser. Il s'agit d'un retour d’expérience et de bonnes pratiques sur la mise en place d'un processus d’intégration continue et de mise en ligne dans le cloud, de la nouvelle plateforme de location de bureaux pour les pro.</p>
<p>Les technos abordées vont de Symfony 3 à Google Cloud Platform en passant par GitHub, CircleCi et GoLang.</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/5_WJ8ewDTJ0" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/retour-dexperience-de-lintegration-continue-rjtalk.html">Retour d&#8217;expérience sur de l&#8217;intégration continue &#8211; #RJTalk</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Julien Breux, CTO chez BAP (Bureaux à Partager) a fait une conf lors du dernier RJDay et le thème devrait vous intéresser. Il s'agit d'un retour d’expérience et de bonnes pratiques sur la mise en place d'un processus d’intégration continue et de mise en ligne dans le cloud, de la nouvelle plateforme de location de <a class="read-more" href="https://korben.info/retour-dexperience-de-lintegration-continue-rjtalk.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/retour-dexperience-de-lintegration-continue-rjtalk.html">Retour d&#8217;expérience sur de l&#8217;intégration continue &#8211; #RJTalk</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87994
title: 2 failles découvertes au niveau de NTLM – Pensez à patcher votre Windows
author: Korben
url: https://korben.info/faille-windows-ntlm-ldap-rdp.html
feedurl: https://korben.info/feed
content:
<p>Si vous évoluez dans un environnement Windows, prenez le temps de lire cet article. 2 failles ont été découvertes dans le protocole de sécurité NTLM de Windows qui permettraient à un attaquant de créer des comptes administrateurs sur un domaine et donc d'en prendre le contrôle.</p>
<p>Pour rappel, NTLM (NT Lan Manager) est un ancien protocole utilisé pour ajouter sur un réseau des machines Windows. Depuis Windows 2000, <a href="http://windowsitpro.com/security/comparing-windows-kerberos-and-ntlm-authentication-protocols">Kerberos a remplacé NTLM</a> mais ce dernier est évidemment toujours supporté par Microsoft et encore utilisé partout.</p>
<p>Voici une démo d'exploitation de ces failles portant sur le relai LDAP et RDP :</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/pKt9IJJOM3I" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Heureusement, Microsoft a patché ces failles donc pensez bien à faire vos mises à jour avant que ce soit encore le bazar au prochain malware ;-)</p>
<p>Pour en savoir plus sur la faille et comment vous protéger, <a href="https://blog.preempt.com/new-ldap-rdp-relay-vulnerabilities-in-ntlm">je vous invite à lire l'article de Preempt</a>.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/faille-windows-ntlm-ldap-rdp.html">2 failles découvertes au niveau de NTLM &#8211; Pensez à patcher votre Windows</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Si vous évoluez dans un environnement Windows, prenez le temps de lire cet article. 2 failles ont été découvertes dans le protocole de sécurité NTLM de Windows qui permettraient à un attaquant de créer des comptes administrateurs sur un domaine et donc d'en prendre le contrôle. Pour rappel, NTLM (NT Lan Manager) est un ancien <a class="read-more" href="https://korben.info/faille-windows-ntlm-ldap-rdp.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/faille-windows-ntlm-ldap-rdp.html">2 failles découvertes au niveau de NTLM &#8211; Pensez à patcher votre Windows</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88009
title: Retour sur la GameCamp 2017, le grand rassemblement de l’industrie du jeu vidéo en France
author: Korben
url: https://korben.info/retour-gamecamp-2017-grand-rassemblement-de-lindustrie-jeu-video-france.html
feedurl: https://korben.info/feed
content:
<p style="text-align: left;"><em>Mercredi dernier a eu lieu le <a href="http://gamecamp.fr/"><strong>GameCamp 2017</strong></a>. Il s'agit d'une réunion réservée aux professionnel.le.s des métiers du Jeu vidéo. <a href="http://florianbelmonte.com">Florian Belmonte</a> qui m'accompagne parfois sur ce genre d'événements, a pu rencontrer et partager un moment avec certaines de ces personnes.</em></p>
<p><em>Voici son récit. Merci à lui.</em></p>
<p><span id="more-88009"></span><!--more--></p>
<p style="text-align: left;">Des musicien•ne•s, des graphistes, des programmeur•se•s, des personnes du marketing, des expert•e•s juridiques, des professeur.e.s, des étudiant•e•s et bien d'autres passionnés de jeux vidéo se sont donnés rendez-vous à Lille. Au programme de ces 2 jours, des conférences, des rencontres, une master class, des études, des conseils, des tests, du réseautage, des présentations de projets, des témoignages et de nombreuses rencontres vont avoir lieu. J'ai pris beaucoup de plaisir à rencontrer ces personnes.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_01-1.jpg"><img class="aligncenter size-new-size wp-image-88015" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_01-1-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_01-1-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_01-1-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Elizabeth, Miryam et Diane ont travaillé sur jeu mobile "<em>A normal Lost Phone</em>" un titre apprécié d'un grand nombre de personnes. <a href="http://accidentalqueens.com/">Accidental Queens</a>, leur studio, a remporté plusieurs prix très importants dans l'industrie du Jeu vidéo.</p>
<p>Elles sont en “sprint review” : 2 fois par mois, Simon, chargé de production sur leur prochain titre se rend dans les bureaux afin de voir l'avancement du prochain jeu. Elles définissent leurs objectifs pour les deux prochaines semaines avec lui. La pression est palpable,</p>
<p style="text-align: center;">"<em>La semaine est morte la, on a le Gamecamp jeudi et vendredi. Il va falloir qu'on vienne bosser dimanche pour rattraper</em>"- Miryam la graphiste du studio.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_02.jpg"><img class="aligncenter size-new-size wp-image-88016" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_02-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_02-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_02.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_02-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Diane se charge de la programmation du jeu avec le moteur unity. Elle note les éléments graphiques que Miryam a déjà réalisés et ceux qui seront à faire pendant des deux prochaines semaines pour le retour de Simon.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_03.jpg"><img class="aligncenter size-new-size wp-image-88017" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_03-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_03-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_03.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_03-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_04.jpg"><img class="aligncenter size-new-size wp-image-88018" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_04-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_04-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_04.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_04-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Avec Simon, l’équipe a instauré qu'il y aurait une partie de jeux de rôles après leur journée de travail à chaque fois qu'il vient. C'est une bonne manière de fédérer l'équipe et de la souder. Elles jouent à <a href="https://fr.wikipedia.org/wiki/Vampire_:_La_Mascarade">Vampire : La Mascarade</a> qui se déroule dans un univers sombre et contemporain.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_05.jpg"><img class="aligncenter size-new-size wp-image-88019" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_05-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_05-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_05.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_05-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_06.jpg"><img class="aligncenter size-new-size wp-image-88020" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_06-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_06-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_06.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_06-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Viviane est encore en stage avec Accidental Queens jusqu'en septembre. Après, elle partira travailler dans un autre studio.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_07.jpg"><img class="aligncenter size-new-size wp-image-88021" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_07-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_07-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_07.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_07-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">L'heure tourne, les derniers préparatifs avant le GameCamp doivent être bouclés, les plannings calés et les objectifs notés. Chacune sait ce qu'elle a à faire pour le prochain rendez-vous dans deux semaines avec Simon.</p>
<p style="text-align: center;">"<em>Tout le monde a son diadème ? On ne repasse pas au bureau donc il vous le faut</em>" - Miryam.</p>
<p style="text-align: left;">Le diadème est leur signe distinctif sur les events.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_08.jpg"><img class="aligncenter size-new-size wp-image-88022" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_08-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_08-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_08.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_08-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Le Gamecamp commence demain mercredi, mais beaucoup de personnes se sont donné rendez-vous pour une soirée "off" afin de parler ensemble, de faire connaissance et de décompresser avant le début de l'événement.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_09.jpg"><img class="aligncenter size-new-size wp-image-88023" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_09-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_09-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_09.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_09-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;">"<em>Pas de soirée “off” pour moi, je vous laisse, j'ai encore des détails à régler pour ma conf de demain, en plus j'ouvre, il n'y aura personne, c'est en même temps que celle sur "Dishonored"</em>" - Elizabeth</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_10.jpg"><img class="aligncenter size-new-size wp-image-88024" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_10-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_10-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_10.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_10-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Dès 8h00, Elizabeth se rend au centre de Lille pour le GameCamp. Elle y donne une conférence sur le fait de créer des jeux à impact social.</p>
<p style="text-align: center;"><em>"J'ai choisi de faire ma conférences sans slides, il faut vraiment que je connaisse mes notes par cœur car je n'aurai pas de support visuel"</em></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_11.jpg"><img class="aligncenter size-new-size wp-image-88025" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_11-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_11-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_11.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_11-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">En plein coeur de Lille, le centre du nouveau siècle accueille, pendant deux jours, plus de 40 conférences et réunit une grande partie de l'industrie française du Jeu vidéo.</p>
<p style="text-align: left;">Le <a href="http://www.snjv.org/">SNJV</a> et <a href="https://www.game-in.org/index.php/fr/">Game-in</a> organisent cet événement afin de donner une opportunité de partages, d'apprentissages, de rencontres et de possibilités professionnelles à des acteur•rice•s de cette industrie effervescente en France.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_12.jpg"><img class="aligncenter size-new-size wp-image-88026" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_12-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_12-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_12.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_12-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">1er jour, les gens commencent à arriver, ils•elles récupèrent leurs badges dès 8h30 pour les premières conférences qui commencent à 10h00.</p>
<p style="text-align: center;">
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_14.jpg"><img class="aligncenter size-new-size wp-image-88028" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_14-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_14-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_14.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_14-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;">"<em>Je travaille depuis chez moi, mes collaborateur•trice•s depuis leurs appartements, pour rien au monde on ne voudrait retourner dans des bureaux</em>" - Michaël, co-créateur du studio <a href="http://www.miclos.com/">Mi-Clos</a> à l'origine du jeu "Out There".</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_15.jpg"><img class="aligncenter size-new-size wp-image-88029" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_15-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_15-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_15.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_15-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">L'auditorium est rempli, il est 9h30, les organisateur•trice•s du Gamecamp annoncent le planning, les informations importantes à savoir et donnent le coup d'envoi du premier Gamecamp !</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_16.jpg"><img class="aligncenter size-new-size wp-image-88030" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_16-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_16-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_16.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_16-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Elizabeth se trouve face à une salle très remplie, elle qui ne pensait pas avoir beaucoup de monde, c'est le contraire. Beaucoup de personnes sont venues assister à sa conférence sur le fait de créer des jeux à impact social.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_17.jpg"><img class="aligncenter size-new-size wp-image-88031" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_17-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_17-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_17.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_17-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Après la conférence d'Elizabeth (20 minutes de speech et 10 minutes de questions-réponses) c'est François qui prend le relais. Il parle de la satire dans le monde lisse des jeux sur mobiles. Il est à l'origine du jeu "<a href="http://nerial.co.uk/reigns/">Reigns</a>".</p>
<p style="text-align: center;">"<em>J'ai beaucoup de chance, Reigns a pris 9 mois de développement, je n'avais pas le droit à un jour de retard, mon fils naissait une semaine après la date de sortie de "Reigns", j'ai tenu les délais, pas le choix</em>".</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_18.jpg"><img class="aligncenter size-new-size wp-image-88032" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_18-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_18-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_18.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_18-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_19.jpg"><img class="aligncenter size-new-size wp-image-88033" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_19-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_19-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_19.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_19-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Il y a des breaks assez régulièrement. Cela permet de prendre du temps pour parler avec les personnes que l'on désire rencontrer. Cyrielle, journaliste spécialisée dans le jeu vidéo, travaille pour <a href="http://numerama.com/">Numérama</a> et pose des questions à Diane sur certains points qu'elle va aborder dans sa conférence sur le dialogue entre les studios et les journalistes.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_20.jpg"><img class="aligncenter size-new-size wp-image-88034" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_20-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_20-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_20.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_20-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Dans le hall principal sont les écoles et les sociétés actrices de l'industrie du Jeu vidéo en France et dans le monde. Elles viennent présenter de nouvelles technologies, des offres d'emploi, rencontrer les futures personnes à embaucher et contacter pour leurs projets. C'est effervescent, tout le monde vogue de stand en stand pour rencontrer et partager.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_21.jpg"><img class="aligncenter size-new-size wp-image-88035" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_21-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_21-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_21.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_21-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Michaël donne sa conférence et prodigue des conseils pour pérenniser un studio après un succès sur mobile "Out There"</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_22.jpg"><img class="aligncenter size-new-size wp-image-88036" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_22-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_22-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_22.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_22-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Des zones équipées de bornes d'arcade sont aussi mises à disposition pour faire une pause.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_23.jpg"><img class="aligncenter size-new-size wp-image-88037" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_23-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_23-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_23.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_23-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Un repas végane est proposé. La pause du déjeuner est faite de rencontres et d'échanges. C'est intense et à la fois reposant.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_24.jpg"><img class="aligncenter size-new-size wp-image-88038" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_24-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_24-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_24.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_24-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Yvan, Cyrielle et Antoine mangent ensemble. Yvan est le créateur de "<a href="http://weallendupalone.com/">We all end up alone</a>" un jeu faisant incarner le •la joueur•euse, une personne atteinte d'un cancer. Il faut y gérer plusieurs éléments comme, son stress, son temps, son comportement et faire face à de nombreuses situations de la vie du personnage.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_25.jpg"><img class="aligncenter size-new-size wp-image-88039" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_25-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_25-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_25.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_25-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Nadia et Elizabeth discutent autour de la place des femmes dans l'industrie du JV.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_26.jpg"><img class="aligncenter size-new-size wp-image-88040" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_26-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_26-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_26.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_26-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">L'événement est retransmis en direct grâce à l'équipe de <a href="https://www.ngtlive.net/">radio NGT Live</a>. Une émission de radio spécialisée dans le Jeu vidéo. Nicolas, Douglas, Antoine, et Tavrox sont là pour assurer le bon déroulement du projet. Ils ont un appartement situé à deux pas du centre de conférence, ils y déposent le matériel avant de se rendre à la soirée pro organisée pour les participant•e•s du Gamecamp.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_27.jpg"><img class="aligncenter size-new-size wp-image-88041" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_27-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_27-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_27.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_27-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">La soirée est à l'image de l'événement. Un grand nombre de personnes parlent de travail, s'échangent des cartes de visite et discutent autour de futurs projets.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_28.jpg"><img class="aligncenter size-new-size wp-image-88042" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_28-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_28-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_28.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_28-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Tavrox est le premier levé de l'équipe de NGT Live. Il développe des jeux vidéo à Toulouse. Il est en ce moment sur le jeu "<a href="http://doublekickheroes.rocks/">Double Kick Heroes</a>".</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_29.jpg"><img class="aligncenter size-new-size wp-image-88043" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_29-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_29-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_29.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_29-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;">"<em>J'ai peur d'enfoncer des portes ouvertes avec ma conférence</em>" - Cyrielle donne sa conférence sur la relation entre les journalistes et les studios de jeux vidéo.</p>
<p style="text-align: left;">C'est devant une salle comble qu'elle transmet ses expériences et ses astuces pour tenir informé•e•s les journalistes.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_30.jpg"><img class="aligncenter size-new-size wp-image-88044" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_30-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_30-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_30.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_30-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Mylène assiste à la conférence de Cyrielle. Elle était cheffe de produit chez <a href="https://www.ankama.com/fr">Ankama</a>, sur le jeu Dofus pendant 6 ans. Elle est maintenant freelance et travaille pour <a href="https://www.gog.com/">GOG.com</a> un site de distribution de jeux vidéo. Elle exerce depuis chez elle en Ardèche.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_31.jpg"><img class="aligncenter size-new-size wp-image-88045" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_31-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_31-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_31.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_31-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Olivier et Hadrien profitent d'un break entre les conférences pour faire connaissance. Ils travaillent dans des secteurs différents, mais complémentaires. Olivier a créé une société d'intelligence artificielle <a href="http://www.matchable.io/">Matchable.io</a> et Hadrien développe des jeux pour navigateurs. Ils font connaissance afin d'étudier de futurs projets en réunissant leurs compétences.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_32.jpg"><img class="aligncenter size-new-size wp-image-88046" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_32-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_32-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_32.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_32-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Pendant le break de l'après-midi, Michaël et William discutent autour de projets futurs. Le GameCamp est un événement où beaucoup de projets se créent et où les possibilités sont très grandes. Tout le monde peut parler à tout le monde, c'est une fourmilière.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_33.jpg"><img class="aligncenter size-new-size wp-image-88047" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_33-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_33-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_33.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_33-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Même pendant les conférences, le hall ne désemplit pas. Tout le monde a quelqu'un à rencontrer, avec qui parler et l'échange de cartes de visite est très répandu.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_34.jpg"><img class="aligncenter size-new-size wp-image-88048" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_34-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_34-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_34.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_34-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Dans d'autres salles, des expert•e•s en droit d'auteur et en comptabilité sont ici pour accompagner les participant•e•s au Gamecamp. Ils•elles répondent aux questions et lèvent des zones d'ombres sur la partie juridique du jeu vidéo.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_35.jpg"><img class="aligncenter size-new-size wp-image-88049" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_35-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_35-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_35.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_35-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Vendredi soir, c'est la fin de l'événement, plein de choses se sont passées, des conférences et des rencontres. Julien, Laurent et Mathieu sont dans le groupe d'organisation du Gamecamp. C'est dans l'auditorium que se passe le Post Mortem. Ils demandent l'avis des participant•e•s sur plusieurs points. C'est avec un vote à main levée que ces sujets sont abordés et seront améliorés pour l'année prochaine.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_36.jpg"><img class="aligncenter size-new-size wp-image-88050" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_36-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_36-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_36.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_36-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: left;">Après la clôture du GameCamp 2017, plusieurs groupes se forment et le jeu ne quitte pas les discussions. Armel, créateur du jeu "<a href="http://vignettesga.me/">Vignettes</a>", apporte un jeu de société.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_37.jpg"><img class="aligncenter size-new-size wp-image-88051" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_37-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_37-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_37.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_37-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;">"<em>J'ai défoncé le mec, je n'ai pas fait exprès, mon personnage est trop fort et Simon ne m'a pas arrangée en me rendant folle</em>" - Viviane raconte à table ses mésaventures rencontrées dans une de leurs parties de Vampire la mascarade.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/gamecamp_38.jpg"><img class="aligncenter size-new-size wp-image-88052" src="http://korben.info/wp-content/uploads/2017/07/gamecamp_38-650x434.jpg" alt="" width="650" height="434" srcset="//korben.info/wp-content/uploads/2017/07/gamecamp_38-650x434.jpg 650w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-300x200.jpg 300w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-768x512.jpg 768w, //korben.info/wp-content/uploads/2017/07/gamecamp_38.jpg 1024w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-475x317.jpg 475w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-360x240.jpg 360w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-295x197.jpg 295w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-750x500.jpg 750w, //korben.info/wp-content/uploads/2017/07/gamecamp_38-400x267.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Il est tard et l'émulateur de Douglas tourne encore. Il présente certains jeux auxquels il joue pour l'écriture de son prochain livre. La nuit se termine aux alentours de quatre heures du matin. Tout le monde est fatigué, ravi et triste de la fin de cet événement.</p>
<p>Les adieux sont brefs, car tout ce petit monde se retrouvera d'ici un mois à Cologne en Allemagne pour un gigantesque salon, la <a href="http://www.gamescom-cologne.com/gamescom/index-9.php">Gamescom 2017</a>.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/retour-gamecamp-2017-grand-rassemblement-de-lindustrie-jeu-video-france.html">Retour sur la GameCamp 2017, le grand rassemblement de l’industrie du jeu vidéo en France</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Mercredi dernier a eu lieu le GameCamp 2017. Il s'agit d'une réunion réservée aux professionnel.le.s des métiers du Jeu vidéo. Florian Belmonte qui m'accompagne parfois sur ce genre d'événements, a pu rencontrer et partager un moment avec certaines de ces personnes. Voici son récit. Merci à lui. Des musicien•ne•s, des graphistes, des programmeur•se•s, des personnes <a class="read-more" href="https://korben.info/retour-gamecamp-2017-grand-rassemblement-de-lindustrie-jeu-video-france.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/retour-gamecamp-2017-grand-rassemblement-de-lindustrie-jeu-video-france.html">Retour sur la GameCamp 2017, le grand rassemblement de l’industrie du jeu vidéo en France</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88075
title: Patrick Beja – Artisan du podcast
author: Korben
url: https://korben.info/patrick-beja-artisan-podcast.html
feedurl: https://korben.info/feed
content:
<p>Depuis plusieurs années, j'ai des tas d'idées de films, de documentaires et autres qui me trottent dans la tête et que j'aimerai vous montrer ici sur ce blog en attendant qu'un jour Netflix me contacte ;-))). Et l'année dernière j'ai eu la chance de rencontrer et de travailler avec <a href="http://florianbelmonte.com">Florian Belmonte</a> que vous commencez aussi un peu à connaitre. Tout de suite, j'ai beaucoup accroché avec son travail qui était dans la ligne directe de ce que j'avais en tête. Je cherchais un réalisateur qui envoie pour faire le film et je lui ai donc proposé de bosser avec moi sur ce 1er projet de film.</p>
<p>J'ai alors imaginé une série de portraits de gens qui font le net, qui y contribuent et qui en sont les acteurs. Évidemment, tout ceci coûte de l'argent et j’ai autofinancé ce premier épisode d'abord parce que c'était un rêve de gosse de sortir un vrai film, mais aussi parce que j'espère qu'un maximum de monde le verra et que cela ouvrira des portes pour m'aider à en produire d'autres derrière. En tout cas, je l'espère.</p>
<p>Et pour le premier, il me fallait quelqu'un qui nous fasse confiance à Florian et moi et qui soit suffisamment à l'aise pour parler face caméra. J'ai shortlisté plusieurs personnes... connues et inconnues et je me suis arrêté sur <strong><a href="http://frenchspin.fr/">Patrick Beja</a></strong>.</p>
<p>Pour ceux qui ne connaitraient pas encore Patrick, pour le présenter en 2 mots, c'est un podcasteur qui avait un bon poste chez Blizzard et qui a tout laché pour sa passion. Grâce à sa communauté, il peut maintenant en vivre et réalise plusieurs émissions comme Le Rendez-Vous Tech, Appload (à laquelle je participe), Le Rendez-Vous Jeux, Positron mais aussi des émissions en anglais comme The Phileas Club ou Pixels.</p>
<p>Nous avons tourné ce film en décembre 2016 à Paris, chez Patrick et Sonja, sa femme. Ils ont été très sympas, très patients et se sont vraiment prêtés au jeu du tournage. Ce fut un moment de partage dont vous retrouverez l'essence en regardant le film. S'en est suivi ensuite le montage où Florian a mis toutes ses tripes et surtout tout son talent et sa vision, accompagné d'<a href="http://www.ag-audio.com">Antoine Grelet</a> qui nous a fait aussi un boulot formidable pour le mixage. Sans ces 2-là, le film n'aurait pas eu la même saveur. Merci à eux.</p>
<p>Redan a aussi fait un travail de composition des musiques formidable. Tout ce que vous entendrez est 100% original. Et mon ami <a href="http://nowtech.tv/">Jérôme Keinborg</a> a bien voulu me faire un petit habillage "<strong>Break The Rules</strong>" parfaitement classe que vous verrez aussi en début de film.</p>
<p>Notez aussi que les sous-titres FR et EN doivent arriver cette semaine ou la semaine prochaine.</p>
<p>Voilà, j'espère que ce bébé vous plaira. Si c'est le cas, n'hésitez pas à le partager sur vos réseaux sociaux, vos blogs ou à organiser des projections privées (ahah !).</p>
<p>Encore merci du fond du coeur à Florian qui a fait un boulot exceptionnel et qui a su donner vie à cette idée de film, mais aussi à Antoine, à Redan, à Jérôme, à Cédric, à Sonja et bien sûr à Patrick.</p>
<p>Bon visionnage à tous.</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/UBDSBWD3EMk?ecver=1" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/patrick-beja-artisan-podcast.html">Patrick Beja &#8211; Artisan du podcast</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Depuis plusieurs années, j'ai des tas d'idées de films, de documentaires et autres qui me trottent dans la tête et que j'aimerai vous montrer ici sur ce blog en attendant qu'un jour Netflix me contacte ;-))). Et l'année dernière j'ai eu la chance de rencontrer et de travailler avec Florian Belmonte que vous commencez aussi <a class="read-more" href="https://korben.info/patrick-beja-artisan-podcast.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/patrick-beja-artisan-podcast.html">Patrick Beja &#8211; Artisan du podcast</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87871
title: Ce qu’il faut savoir avant de rejoindre une startup – #RjTalk
author: Korben
url: https://korben.info/quil-faut-savoir-de-rejoindre-startup-rjtalk.html
feedurl: https://korben.info/feed
content:
<p>Philippe Tring, développeur dans la startup <strong><a href="https://www.plezi.co/fr/">Plezi</a></strong> a réalisé une conf super sympa lors du dernier RJDay où il explique ce qu'est la vie dans une <a href="http://korben.info/kbn/start-up" target="_blank">startup</a> et comment choisir celle qui vous correspond le plus.</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/owae9cXJQZ8" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/quil-faut-savoir-de-rejoindre-startup-rjtalk.html">Ce qu&#8217;il faut savoir avant de rejoindre une startup &#8211; #RjTalk</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Philippe Tring, développeur dans la startup Plezi a réalisé une conf super sympa lors du dernier RJDay où il explique ce qu'est la vie dans une startup et comment choisir celle qui vous correspond le plus.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/quil-faut-savoir-de-rejoindre-startup-rjtalk.html">Ce qu&#8217;il faut savoir avant de rejoindre une startup &#8211; #RjTalk</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88120
title: Un bug sur le OnePlus 5 empêche d’appeler les urgences
author: Korben
url: https://korben.info/bug-oneplus-5-empeche-dappeler-urgences.html
feedurl: https://korben.info/feed
content:
<p>Alors ça, c'est le bug qui fait tâche, et qui pourrait même être dangereux. <a href="https://www.facebook.com/nick.morrelli/videos/10155621873214602/">Un internaute</a> a remarqué que le OnePlus 5 n'était pas capable d'appeler les numéros d'urgence (Le 911) sans que l'application dialer (celle qui sert à composer les numéros) se plante lamentablement et le téléphone redémarre.</p>
<p>Démonstration :</p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/STf2mOTvrZw?ecver=1" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>OnePlus est informé et a publié le commentaire suivant :</p>
<blockquote><p>"We understand many users on Reddit are waiting for the feedback from OnePlus. Here's the latest update that we can share with you: We have contacted the customer and are currently looking into the issue. We ask anyone experiencing a similar situation to contact us at support @ oneplus.net. Let me know if you have any questions. Thanks, David"</p></blockquote>
<p>Bref, c'est en cours d'investigation. Je n'ai pas de OnePlus 5 donc je ne peux pas tester (et je n’ai pas non plus envie d'emmerder les pompiers ou la police) donc aucune idée si ça fait la même chose avec nos numéros d'urgence à nous. Mais d'après que ce que je comprends, il s'agit d'une incompatibilité entre le framework utilisé par le dialer et les dialers autres que l'officiel d'Android (dialer stock). Donc peu importe le numéro d'urgence, ça va planter pareil.</p>
<p><em>Edit 19/07/2017 : Certains Korbenautes m'indiquent que ça n'a pas planté sur leur téléphone. Peut-être que le souci touche que le 911... On verra si on en apprends plus dans les heures qui viennent.</em></p>
<p>En effet, le bug ne se produit pas avec le dialer stock d'Android et une mise à jour des Googles Apps pour installer le framework nécessaire à ces dialers suffirait à régler le problème. Je pense donc que OnePlus va régler ça assez rapidement.</p>
<p><em>Edit : 20/07/2017 : <a href="http://www.geeky-gadgets.com/oneplus-releases-software-update-to-fix-oneplus-5-911-bug-20-07-2017/">Problème corrigé par OnePlus</a></em></p>
<p><a href="https://www.reddit.com/r/oneplus/comments/6nx4eo/i_had_to_dial_911_on_my_op5_yesterday_saw_a/">Source</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/bug-oneplus-5-empeche-dappeler-urgences.html">Un bug sur le OnePlus 5 empêche d&#8217;appeler les urgences</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Alors ça, c'est le bug qui fait tâche, et qui pourrait même être dangereux. Un internaute a remarqué que le OnePlus 5 n'était pas capable d'appeler les numéros d'urgence (Le 911) sans que l'application dialer (celle qui sert à composer les numéros) se plante lamentablement et le téléphone redémarre. Démonstration : OnePlus est informé et <a class="read-more" href="https://korben.info/bug-oneplus-5-empeche-dappeler-urgences.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/bug-oneplus-5-empeche-dappeler-urgences.html">Un bug sur le OnePlus 5 empêche d&#8217;appeler les urgences</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88127
author: Korben
feedurl: https://korben.info/feed
title:
Devil’s Ivy – Une faille de sécurité dans gSOAP et potentiellement des millions d’objets connectés et de serveurs impactés

url:
https://korben.info/devils-ivy-faille-de-securite-gsoap-potentiellement-millions-dobjets-connectes-de-serveurs-impactes.html

content:
<p>Les experts sécu de la société Senrio étaient en train d'auditer des caméras IP de la marque Axis quand ils sont tombés sur une faille dans la couche de communication de <strong><a href="https://www.genivia.com/dev.html">gSOAP</a></strong>. Pour ceux qui ne connaitraient pas, gSOAP est un outil open source utilisé pour développer des webservices.</p>
<p>Cette faille toute fraiche baptisée Devil's Ivy (<a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=2017-9765">CVE-2017-9765</a>) permet à un attaquant d'exécuter du code à distance sur les serveurs. Toutefois, les clients peuvent aussi être touchés s'ils reçoivent des messages SOAP de serveurs vérolés. Si on reste sur l'exemple des caméras Axis, on peut grâce à cette faille accéder à un flux vidéo privé, voire même empêcher le propriétaire de la caméra d'accéder au flux.</p>
<p>gSOAP a été téléchargé plus d'un million de fois par des développeurs du monde entier et est très utilisé dans de nombreux projets, y compris dans de grosses boites comme Microsoft, IBM ou encore Adobe. Cela signifie que de nombreux autres logiciels ou objets connectés utilisant gSOAP peuvent eux aussi être affectés par Devil's Ivy.</p>
<p>Voici une démonstration vidéo de l'exploitation de cette faille sur une caméra Axis M3004 :</p>
<p style="text-align: center;"><iframe src="https://player.vimeo.com/video/225922694" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Senrio fait les recommandations suivantes pour se protéger :</p>
<ul>
<li>Ne pas rendre dispo ses objets connectés, ses alarmes, caméras de sécurité et compagnie sur le net. Au premier juillet, Shodan indiquait plus de 14 700 caméras dôme Axis faillibles accessibles depuis n'importe où sur la planète.</li>
<li>Installer des systèmes de protection genre firewall devant vos objets connectés ou utiliser au moins du NAT pour réduire l'exposition et améliorer la détection d'éventuelles attaques</li>
<li>Patcher vos appareils dès que les constructeurs sortiront des mises à jour.</li>
</ul>
<p>Ce dernier conseil m'amuse beaucoup dans on voit ce qui s'est passé avec <a href="https://korben.info/wannacry-bien-pleurez.html">EternalBlue</a>... Donc j'imagine qu'on entendra à nouveau parler de Devil's Ivy, ou peu importe ses prochains noms, dans un futur relativement proche (quelques mois ?)</p>
<p><a href="https://www.darkreading.com/cloud/zero-day-exploit-surfaces-that-may-affect-millions-of-iot-users/d/d-id/1329380">Source</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/devils-ivy-faille-de-securite-gsoap-potentiellement-millions-dobjets-connectes-de-serveurs-impactes.html">Devil&#8217;s Ivy &#8211; Une faille de sécurité dans gSOAP et potentiellement des millions d&#8217;objets connectés et de serveurs impactés</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Les experts sécu de la société Senrio étaient en train d'auditer des caméras IP de la marque Axis quand ils sont tombés sur une faille dans la couche de communication de gSOAP. Pour ceux qui ne connaitraient pas, gSOAP est un outil open source utilisé pour développer des webservices. Cette faille toute fraiche baptisée Devil's <a class="read-more" href="https://korben.info/devils-ivy-faille-de-securite-gsoap-potentiellement-millions-dobjets-connectes-de-serveurs-impactes.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/devils-ivy-faille-de-securite-gsoap-potentiellement-millions-dobjets-connectes-de-serveurs-impactes.html">Devil&#8217;s Ivy &#8211; Une faille de sécurité dans gSOAP et potentiellement des millions d&#8217;objets connectés et de serveurs impactés</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88110
title: Réinitialiser les lunettes Spectacles de Snapchat
author: Korben
url: https://korben.info/reinitialiser-lunettes-spectacles-de-snapchat.html
feedurl: https://korben.info/feed
content:
<p>Je suis en train de tester les l<strong>unettes Spectacles de Snapchat</strong> et évidemment, l'appairage avec mon téléphone n'a pas fonctionné (c'est du Bluetooth). J'ai donc du faire une réinitialisation des lunettes pour y arriver. Je sais que cet article est hyper niche, mais si vous êtes dans le même cas que moi, voici comment faire.</p>
<p>Déjà, la première chose à vérifier, c'est que vous avez assez de batterie. Pour connaitre son niveau, il faut tapoter 2 fois sur la branche gauche ici :</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-02.jpg"><img class="aligncenter size-new-size wp-image-88117" src="http://korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-02-650x400.jpg" alt="" width="650" height="400" srcset="//korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-02.jpg 650w, //korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-02-325x200.jpg 325w, //korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-02-475x292.jpg 475w, //korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-02-400x246.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Si vous avez de la batterie, c'est OK, on va pouvoir tenter un truc. Assurez-vous d'abord si vous aviez déjà réussi une première association avec votre téléphone, de bien supprimer les lunettes dans la liste des appareils Bluetooth disponible.</p>
<p>Ensuite, 2 possibilités s'offrent à vous :</p>
<p><strong>Le soft reset (réinitialisation logicielle) :</strong></p>
<p>Appuyez durant 50 secondes sur le bouton de vos Spectacles. Utilisez un chrono pour être certain de la durée. Vous devriez alors voir une séquence avec 3 points lumineux démarrer sur les lunettes. Recommencez ensuite l'association des lunettes avec l'application Snapchat comme expliquée dans la doc des Spectacles.</p>
<p><strong>Le hard reset (réinitialisation matérielle) :</strong></p>
<p>Même chose, mais pendant 55 secondes. Relâchez le bouton, puis dans les 10 secondes qui suivent appuyez une fois sur le bouton (mais sans le maintenir). Une séquence lumineuse va alors débuter et lorsque ce sera fini, vous pourrez à nouveau associer vos Spectacles dans l'application Snapchat. Attention, cette réinitialisation vous fera perdre les séquences enregistrées dans vos Spectacles.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-25-2.jpg"><img class="aligncenter size-new-size wp-image-88115" src="http://korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-25-2-650x385.jpg" alt="" width="650" height="385" srcset="//korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-25-2.jpg 650w, //korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-25-2-338x200.jpg 338w, //korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-25-2-475x281.jpg 475w, //korben.info/wp-content/uploads/2017/07/2017-07-19-14-36-25-2-400x237.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Voilà.. Globalement, elles sont sympas et je pense les utiliser surtout à la maison pour faire des mini tutos sur Snapchat. Mais comme je préfère avoir mes lunettes de vue dans la vie de tous les jours, ce sera très ponctuel.</p>
<p>En plus, j'ai l'air encore plus con que d'habitude avec</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/2017-07-19-12-24-50-1.jpg"><img class="aligncenter wp-image-88118" src="http://korben.info/wp-content/uploads/2017/07/2017-07-19-12-24-50-1-650x867.jpg" alt="" width="403" height="538" srcset="//korben.info/wp-content/uploads/2017/07/2017-07-19-12-24-50-1.jpg 650w, //korben.info/wp-content/uploads/2017/07/2017-07-19-12-24-50-1-150x200.jpg 150w, //korben.info/wp-content/uploads/2017/07/2017-07-19-12-24-50-1-475x634.jpg 475w, //korben.info/wp-content/uploads/2017/07/2017-07-19-12-24-50-1-400x534.jpg 400w" sizes="(max-width: 403px) 100vw, 403px" /></a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/reinitialiser-lunettes-spectacles-de-snapchat.html">Réinitialiser les lunettes Spectacles de Snapchat</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Je suis en train de tester les lunettes Spectacles de Snapchat et évidemment, l'appairage avec mon téléphone n'a pas fonctionné (c'est du Bluetooth). J'ai donc du faire une réinitialisation des lunettes pour y arriver. Je sais que cet article est hyper niche, mais si vous êtes dans le même cas que moi, voici comment faire. <a class="read-more" href="https://korben.info/reinitialiser-lunettes-spectacles-de-snapchat.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/reinitialiser-lunettes-spectacles-de-snapchat.html">Réinitialiser les lunettes Spectacles de Snapchat</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88144
title: Où acheter des cryptomonnaies ? Bitcoin, Ethereum, ZCash, Ripple…etc
author: Korben
url: https://korben.info/ou-acheter-cryptomonnaies-bitcoin-ethereum-zcash-ripple-etc.html
feedurl: https://korben.info/feed
content:
<p>Si vous achetez du Bitcoin, de l'Ethereum ou d'autres crypto-monnaies, vous êtes obligés de passer obligatoirement par un broker, c'est-à-dire un site qui va vous en vendre contre un virement bancaire ou un paiement par CB.</p>
<p>Je ne les connais pas tous, mais mes copains et moi, on en a testé plusieurs depuis le début de l'année donc je vais vous en indiquer quelques-uns que j'ai trouvé sympas. Par contre, ne m'en veuillez pas, je n'indique pas les frais que prend chacun des sites vu que ça change tout le temps... Je vous invite plutôt à vous référer à leur FAQ pour en savoir plus. Je me suis aussi amusé à mettre un petit "check" vert ✅ sur tous ceux que je trouve accessibles aux débutants.</p>
<p>Mais avant de rentrer dans le vif du sujet, je dois quand même préciser plusieurs points :</p>
<ul>
<li>1/ Tous les brokers prennent une commission.</li>
<li>2/ Les processus de validation d'identité sont ultra chiant si vous voulez atteindre des paliers d'achat ou de vente corrects. Faut filer des scans de sa carte d'identité, parfois de sa CB et parfois de sa tronche... Pas le choix.</li>
<li>3/ Les cours des cryptomonnaies évoluent sans cesse et les brokers jouent là-dessus pour tirer sur leur marge comme sur un élastique. Donc vérifiez toujours que le cours de la monnaie correspond bien à ce que vous propose le broker.</li>
<li>4/ Les cryptomonnaies, c'est comme du vrai argent sauf que la banque c'est vous. Donc, assurez vous-même la sécurité de votre argent et ne faites pas confiance à des plateformes tierces. <strong>Cet aspect sécurité fera l'objet d'un article futur, car il y a beaucoup de choses à dire</strong>.</li>
<li>5/ La plupart des brokers proposent des liens d'affiliation. N'hésitez pas à vous en servir, ça vous permettra d'acheter un peu plus de cryptomonnaies. Certains liens de cet article sont affiliés.</li>
<li>6/ Avant d'acheter une cryptomonnaie, renseignez-vous bien sur le projet qui se trouve derrière et sur les gens qui s'en occupent afin de mesurer le potentiel de la monnaie et son éventuel retour sur investissement dans les mois ou années à venir.</li>
<li>7/ Les virements SEPA, c'est cool, mais ça prend du temps... Donc si vous initiez un virement parce que le cours de la cryptomonnaie n'est pas élevé, c'est déjà trop tard, car le temps que l'argent arrive, ça aura déjà surement changé.</li>
</ul>
<p>Notez aussi que la plupart des plateformes proposent uniquement le Bitcoin à l'achat, car il s'agit de la monnaie de référence qui peut ensuite être utilisée pour en acheter des tas d'autres (les fameux altcoins). Donc à partir d'un achat unique de Bitcoin, vous aurez ensuite accès aux monnaies de votre choix. Je rappelle aussi que vous êtes le garant de votre argent, et que c'est à vous d'être responsable de ce que vous ferez avec.</p>
<h2><strong><a href="https://www.bitpanda.com/?ref=7895837543795443526">BitPanda</a> ✅</strong></h2>
<p>Celui-là, je l'aime bien parce qu'il est simple d'utilisation et qu'on peut payer en carte bancaire, donc avoir rapidement sa monnaie virtuelle. Bitpanda propose du Bitcoin, de l'Ethereum, du Dash et du Litecoin (LTC) à l'achat. On peut bien sûr payer aussi par virement SEPA. J'ai testé aussi leur support et ça fonctionne.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42.png"><img class="aligncenter size-new-size wp-image-88153" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-650x349.png" alt="" width="650" height="349" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-650x349.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-372x200.png 372w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-768x413.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-1024x550.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-475x255.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-750x403.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42-400x215.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-23-42.png 1211w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://www.litebit.eu?referrer=26468">Litebit</a> ✅</strong></h2>
<p>Litebit est le tout premier site sur lequel je suis tombé. Il est néerlandais et permet d'acheter toutes sortes de cryptomonnaies en plus du Bitcoin. Les paiements se font via virement. Le support technique fonctionne bien aussi pour ce site, si vous êtes patient.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03.png"><img class="aligncenter size-new-size wp-image-88150" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03-650x544.png" alt="" width="650" height="544" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03-650x544.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03-239x200.png 239w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03-475x397.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03-400x335.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-56-03.png 722w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://www.bitit.io/?referral=SPLPCLCR">Bitit</a> ✅</strong></h2>
<p>Si vous aimez le made in France, Bitit est fait pour vous Il est possible d'acheter uniquement du Bitcoin sur ce site, mais vous pouvez l'acheter en CB, en espèce (avec des cartes vendues en magasins comme Neosurf ou Cashlib). Pas eu de souci niveau support technique avec eux.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23.png"><img class="aligncenter size-new-size wp-image-88156" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-650x223.png" alt="" width="650" height="223" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-650x223.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-582x200.png 582w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-768x264.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-1024x352.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-475x163.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-750x258.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23-400x138.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-18-55-23.png 1245w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><a href="https://cex.io/r/0/up104854184/0/"><strong>Cex.io</strong></a></h2>
<p>Cex.io vous permet de déposer des euros sur votre compte pour acheter ensuite des Bitcoins ou de l'Ethereum. Il s'agit aussi d'une plateforme de trading. Le paiement peut se faire par virement, par carte bancaire ou avec des cryptomonnaies.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02.png"><img class="aligncenter size-new-size wp-image-88151" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-650x248.png" alt="" width="650" height="248" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-650x248.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-525x200.png 525w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-768x293.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-1024x390.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-475x181.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-750x286.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02-400x152.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-57-02.png 1115w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://changelly.com/exchange/EUR/BTC/50?ref_id=cc7ef127a50f">Changelly</a> ✅</strong></h2>
<p>Changelly c'est l'un des premiers que j'ai utilisé. Il est très simple d'utilisation et propose d'acheter ou de vendre tout ce que vous voulez : Bitcoin, Ethereum, Monero, ZCash, Dash, Ripple, Ethereum Classic (ETC), Litecoin, Dogecoin (DOGE), Aragon (ANT), Synereo (AMP), Decred (DCR), Edgeless (EDG), Expanse (EXP), Gamecredits (GAME), ByteBall (GBYTE), Gnosis (GNO), LBRY (LBC), Lisk (LSK), NavCoin (NAV), Pivx, Potcoin (POT), Radium (RADS) et j'en passe, la liste est vraiment trop longue.</p>
<p>Et surtout il prend la carte bancaire et ne nécessite pas de validation d'identité si vous en prenez pour 50 euros maximum.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11.png"><img class="aligncenter size-new-size wp-image-88152" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-650x356.png" alt="" width="650" height="356" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-650x356.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-365x200.png 365w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-768x421.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-1024x561.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-475x260.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-750x411.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11-400x219.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-17-59-11.png 1197w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://www.bitstamp.net/">Bitstamp</a></strong></h2>
<p>Basé en Europe, Bitstamp propose d'acheter du Bitcoin, du Ripple (XRP) et du Litecoin (LTC) par virement SEPA (ou avec d'autres cryptomonnaies). Je n'ai pas encore testé ce site, mais on m'en a dit que du bien.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22.png"><img class="aligncenter size-new-size wp-image-88171" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-650x317.png" alt="" width="650" height="317" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-650x317.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-411x200.png 411w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-768x374.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-1024x499.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-475x231.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-750x365.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22.png 1250w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-36-22-400x195.png 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><a href="https://www.coinbase.com/join/589de63eed725d396a367ac9"><strong>Coinbase</strong></a> ✅</h2>
<p>Très connu, Coinbase propose à l'achat et à la vente du Bitcoin, du Litecoin et de l'Ethereum et permet même la création de wallets hébergés chez eux (ce qui peut dépanner mais je ne vous recommande pas ça sur le long terme pour stocker vos monnaies virtuelles.). Sur Coinbase, vous pouvez payer par CB ou en virement SEPA. J'ai aussi testé leur support technique et obtenu une réponse assez rapidement. Un truc important à savoir aussi c'est qu'au mois d'août, Bitcoin va forker. Et Coinbase a prévu de rester sur l'ancienne chaine de blocs. Donc si vous voulez basculer sur le hard fork, il vaut mieux retirer vos BTC avant le 31 juillet pour les mettre dans un wallet dont vous avez la maitrise totale. <a href="https://support.coinbase.com/customer/portal/articles/2844217-uahf-uasf-faq">Plus d'infos à ce sujet ici</a>.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46.png"><img class="aligncenter size-new-size wp-image-88203" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-650x337.png" alt="" width="650" height="337" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-650x337.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-386x200.png 386w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-768x398.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-1024x530.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-475x246.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-750x388.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46-400x207.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-21-11-44-46.png 1201w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><a href="https://www.Coinmama.com/?ref=korben00"><strong>CoinMama</strong></a> ✅</h2>
<p>Ce broker basé en Israel propose d'acheter du Bitcoin uniquement avec une carte bancaire. Simple, rapide, efficace.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34.png"><img class="aligncenter size-new-size wp-image-88170" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-650x533.png" alt="" width="650" height="533" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-650x533.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-244x200.png 244w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-768x630.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-1024x839.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-475x389.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-750x615.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34-400x328.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-32-34.png 1193w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://www.kraken.com/">Kraken</a></strong></h2>
<p>À la fois plateforme de trading et broker, Kraken est assez ancien (2011) et propose de déposer directement via un virement SEPA, des euros sur votre compte. Ensuite, une fois qu'ils sont arrivés, vous pourrez acheter du Bitcoin, de l'Ethereum (ETH), du Monero (XMR), du Dash (DASH), du Litecoin (LTC), du Ripple (XRP), du Stellar/Lumens (XLM), de l'Ethereum Classic (ETC), de l'Augur (REP), du Zcash (ZEC), du Dogecoin (XDG)...etc. Je n'ai pas encore testé ce site, mais on me l'a aussi recommandé.</p>
<p>Et ils ont même <a href="https://www.kraken.com/security/bug-bounty">un programme de Bug Bounty</a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03.png"><img class="aligncenter size-new-size wp-image-88169" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-650x514.png" alt="" width="650" height="514" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-650x514.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-253x200.png 253w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-768x607.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-1024x809.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-475x375.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-750x593.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03-400x316.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-29-03.png 1031w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://localbitcoins.com/fr/?ch=dc90">Localbitcoins</a> ✅</strong></h2>
<p>Pas encore testé non plus. C'est une plateforme de vente et d'achat de Bitcoin entre particuliers. Les paiements peuvent se faire par virement, par PayPal, CB, espèces, Western Union et j'en passe. Le côté "local" est plutôt rigolo. J'imagine que ça rassure de savoir que le mec qui te vend tes Bitcoins est dans la même ville que toi et que tu peux le rencontrer et le payer en cash. C'est un peu LeBonCoin du Bitcoin et c'est accessible aux débutants.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14.png"><img class="aligncenter size-new-size wp-image-88168" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-650x433.png" alt="" width="650" height="433" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-650x433.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-300x200.png 300w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-768x511.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-1024x682.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-475x316.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-360x240.png 360w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-295x197.png 295w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-750x499.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14-400x266.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-22-03-14.png 1179w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://bitsquare.io/">Bisq</a></strong></h2>
<p>Toutes les plateformes que je viens de vous présenter fonctionnent très bien, mais on le défaut d'être des entités centralisées. Le logiciel BitSquare qui tourne sous macOS, Windows et Linux, permet à ses utilisateurs d'acheter et de vendre des cryptomonnaies de manière totalement décentralisée.</p>
<p>De son petit nom Bisq, cette solution repose sur une infrastructure P2P et ne peut être censurée, surveillée ou contrôlée. Elle permet par exemple d'échanger des euros ou du dollar contre du Bitcoin ou encore d'échanger des tas de cryptomonnaies contre du Bitcoin, et bien sûr évite de dépendre d'un tiers qui peut se faire pirater ou placé sous contrôle. Bisq stocke toutes les données personnelles localement, assure un chiffrement de bout en bout, le tout routé entièrement via le réseau Tor et bien sûr, tout est ouvert puisque le code est open source.</p>
<p>Son défaut c'est que ce n'est pas encore assez accessible pour les débutants, je trouve. Il faut déjà bien maitriser les cryptomonnaies pour ne pas faire de conneries.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22.png"><img class="aligncenter size-new-size wp-image-88157" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-650x418.png" alt="" width="650" height="418" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-650x418.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-311x200.png 311w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-768x494.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-1024x659.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-475x306.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-750x482.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-1250x804.png 1250w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22-400x257.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-20-16-30-22.png 1312w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<h2><strong><a href="https://www.coinhouse.io/r/76234">La Maison du Bitcoin / Coinhouse</a> ✅</strong></h2>
<p>Et je garde le meilleur pour la fin ! <a href="https://lamaisondubitcoin.fr/">La maison du Bitcoin</a> est un comptoir de change en plein Paris qui vous permettra d'acheter directement vos Bitcoin et vos Ethereum comme vous le feriez dans n'importe quel magasin. En plus, vous pourrez échanger avec des experts qui sauront vous conseiller. Autrement, la Maison du Bitcoin possède aussi un site de vente en ligne comme tous ceux que je viens de citer plus haut, qui s'appelle <strong><a href="https://www.coinhouse.io/r/76234">Coinhouse</a></strong>.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/maison.jpg"><img class="aligncenter size-new-size wp-image-88167" src="http://korben.info/wp-content/uploads/2017/07/maison-650x359.jpg" alt="" width="650" height="359" srcset="//korben.info/wp-content/uploads/2017/07/maison-650x359.jpg 650w, //korben.info/wp-content/uploads/2017/07/maison-362x200.jpg 362w, //korben.info/wp-content/uploads/2017/07/maison-768x424.jpg 768w, //korben.info/wp-content/uploads/2017/07/maison-1024x566.jpg 1024w, //korben.info/wp-content/uploads/2017/07/maison-475x262.jpg 475w, //korben.info/wp-content/uploads/2017/07/maison-750x414.jpg 750w, //korben.info/wp-content/uploads/2017/07/maison-400x221.jpg 400w, //korben.info/wp-content/uploads/2017/07/maison.jpg 1200w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Voilà, déjà avec tout ça vous avez de quoi faire. N'oubliez pas, vous seuls êtes responsable de ce que vous achetez et de la sécurité de vos monnaies virtuelles. Prenez la sécurité de tout cela très au sérieux... Mettez des mots de passe solides et activez les sécurités supplémentaires proposées par les sites comme le 2FA.</p>
<p>Bonne journée !</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/ou-acheter-cryptomonnaies-bitcoin-ethereum-zcash-ripple-etc.html">Où acheter des cryptomonnaies ? Bitcoin, Ethereum, ZCash, Ripple&#8230;etc</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Si vous achetez du Bitcoin, de l'Ethereum ou d'autres crypto-monnaies, vous êtes obligés de passer obligatoirement par un broker, c'est-à-dire un site qui va vous en vendre contre un virement bancaire ou un paiement par CB. Je ne les connais pas tous, mais mes copains et moi, on en a testé plusieurs depuis le début <a class="read-more" href="https://korben.info/ou-acheter-cryptomonnaies-bitcoin-ethereum-zcash-ripple-etc.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/ou-acheter-cryptomonnaies-bitcoin-ethereum-zcash-ripple-etc.html">Où acheter des cryptomonnaies ? Bitcoin, Ethereum, ZCash, Ripple&#8230;etc</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88226
title: Un van de surveillance du FBI en vente sur eBay
author: Korben
url: https://korben.info/van-de-surveillance-fbi-vente-ebay.html
feedurl: https://korben.info/feed
content:
<p>La news lol de ce week end, c'est <a href="http://www.ebay.com/itm/182673210638">cette annonce sur eBay</a> où un mec vend un van Dodge RAM 350 de 1989 acheté dans une vente aux enchère. Et qu'a t-il de spécial ce van  ? Et bien c'est un véhicule de surveillance utilisé par le FBI dans le cadre de la lutte contre les traficants de drogue. Et le plus beau là dedans, c'est qu'il contient encore pas mal de matos de surveillance comme un radar, des écrans, des enregistreurs cassettes, une radio...etc.</p>
<p>Et bien sûr des toilettes, un chauffage, des batteries, des vitres teintées et des sécurités supplémentaires sur toutes les portes. Le moteur peut même se couper depuis l'arrière du fourgon. Magique ! Selon son propriétaire actuel, il contient aussi d'anciennes cassettes et des documents expliquant les techniques de surveillance.</p>
<p>Voici les photos de la bête.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/s-l1600.jpg"><img class="aligncenter size-new-size wp-image-88237" src="http://korben.info/wp-content/uploads/2017/07/s-l1600-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/s-l1600-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/s-l1600-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/s-l1600-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/s-l1600-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/s-l1600-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/s-l1600-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/s-l1600.jpg 960w" sizes="(max-width: 650px) 100vw, 650px" /></a> <a href="http://korben.info/wp-content/uploads/2017/07/van4.jpg"><img class="aligncenter size-new-size wp-image-88235" src="http://korben.info/wp-content/uploads/2017/07/van4-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/van4-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/van4-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/van4-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/van4-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/van4-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/van4-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/van4.jpg 960w" sizes="(max-width: 650px) 100vw, 650px" /></a> <a href="http://korben.info/wp-content/uploads/2017/07/van5.jpg"><img class="aligncenter size-new-size wp-image-88234" src="http://korben.info/wp-content/uploads/2017/07/van5-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/van5-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/van5-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/van5-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/van5-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/van5-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/van5-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/van5.jpg 960w" sizes="(max-width: 650px) 100vw, 650px" /></a> <a href="http://korben.info/wp-content/uploads/2017/07/van6.jpg"><img class="aligncenter size-new-size wp-image-88233" src="http://korben.info/wp-content/uploads/2017/07/van6-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/van6-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/van6-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/van6-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/van6-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/van6-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/van6-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/van6.jpg 960w" sizes="(max-width: 650px) 100vw, 650px" /></a> <a href="http://korben.info/wp-content/uploads/2017/07/van7.jpg"><img class="aligncenter size-new-size wp-image-88232" src="http://korben.info/wp-content/uploads/2017/07/van7-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/van7-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/van7-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/van7-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/van7-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/van7-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/van7-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/van7.jpg 960w" sizes="(max-width: 650px) 100vw, 650px" /></a> <a href="http://korben.info/wp-content/uploads/2017/07/van8.jpg"><img class="aligncenter size-new-size wp-image-88231" src="http://korben.info/wp-content/uploads/2017/07/van8-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/van8-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/van8-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/van8-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/van8-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/van8-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/van8-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/van8.jpg 960w" sizes="(max-width: 650px) 100vw, 650px" /></a>   <a href="http://korben.info/wp-content/uploads/2017/07/van11.jpg"><img class="aligncenter size-new-size wp-image-88228" src="http://korben.info/wp-content/uploads/2017/07/van11-650x867.jpg" alt="" width="650" height="867" srcset="//korben.info/wp-content/uploads/2017/07/van11-650x867.jpg 650w, //korben.info/wp-content/uploads/2017/07/van11-150x200.jpg 150w, //korben.info/wp-content/uploads/2017/07/van11-475x633.jpg 475w, //korben.info/wp-content/uploads/2017/07/van11-400x533.jpg 400w, //korben.info/wp-content/uploads/2017/07/van11.jpg 720w" sizes="(max-width: 650px) 100vw, 650px" /></a> <a href="http://korben.info/wp-content/uploads/2017/07/van12.jpg"><img class="aligncenter size-new-size wp-image-88227" src="http://korben.info/wp-content/uploads/2017/07/van12-650x867.jpg" alt="" width="650" height="867" srcset="//korben.info/wp-content/uploads/2017/07/van12-650x867.jpg 650w, //korben.info/wp-content/uploads/2017/07/van12-150x200.jpg 150w, //korben.info/wp-content/uploads/2017/07/van12-475x633.jpg 475w, //korben.info/wp-content/uploads/2017/07/van12-400x533.jpg 400w, //korben.info/wp-content/uploads/2017/07/van12.jpg 720w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<div>Si ça vous dit, l'enchère est actuellement à 11 500 $ (hors frais de port)</div>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/van-de-surveillance-fbi-vente-ebay.html">Un van de surveillance du FBI en vente sur eBay</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>La news lol de ce week end, c'est cette annonce sur eBay où un mec vend un van Dodge RAM 350 de 1989 acheté dans une vente aux enchère. Et qu'a t-il de spécial ce van  ? Et bien c'est un véhicule de surveillance utilisé par le FBI dans le cadre de la lutte contre <a class="read-more" href="https://korben.info/van-de-surveillance-fbi-vente-ebay.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/van-de-surveillance-fbi-vente-ebay.html">Un van de surveillance du FBI en vente sur eBay</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88253
title: Briar – La messagerie instantanée chiffrée, P2P et qui passe par Tor
author: Korben
url: https://korben.info/briar-messagerie-instantanee-chiffree-p2p-passe-tor.html
feedurl: https://korben.info/feed
content:
<p>Présenté maladroitement comme l'outil de "messagerie instantanée du darknet", <a href="https://briarproject.org"><strong>Briar</strong></a> est l'un de ces outils open source conçu pour aider les activités et autres personnes souhaitant communiquer de manière chiffrée et anonyme, à rester en sécurité.</p>
<p>Tu parles d'un nom pour une app censée te rendre discret </p>
<p>Ici, pas de serveurs centraux, les messages sont synchronisés directement entre les appareils des utilisateurs, tout passe par Tor et si Internet est coupé, Briar sait même synchroniser tout cela en mode P2P via le Bluetooth ou la carte wifi.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/00_password.png"><img class="aligncenter  wp-image-88254" src="http://korben.info/wp-content/uploads/2017/07/00_password-650x1156.png" alt="" width="330" height="587" srcset="//korben.info/wp-content/uploads/2017/07/00_password-650x1156.png 650w, //korben.info/wp-content/uploads/2017/07/00_password-113x200.png 113w, //korben.info/wp-content/uploads/2017/07/00_password-576x1024.png 576w, //korben.info/wp-content/uploads/2017/07/00_password-475x844.png 475w, //korben.info/wp-content/uploads/2017/07/00_password-400x711.png 400w, //korben.info/wp-content/uploads/2017/07/00_password.png 720w" sizes="(max-width: 330px) 100vw, 330px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/01_nav_drawer.png"><img class="aligncenter  wp-image-88255" src="http://korben.info/wp-content/uploads/2017/07/01_nav_drawer-650x1156.png" alt="" width="330" height="587" srcset="//korben.info/wp-content/uploads/2017/07/01_nav_drawer-650x1156.png 650w, //korben.info/wp-content/uploads/2017/07/01_nav_drawer-113x200.png 113w, //korben.info/wp-content/uploads/2017/07/01_nav_drawer-576x1024.png 576w, //korben.info/wp-content/uploads/2017/07/01_nav_drawer-475x844.png 475w, //korben.info/wp-content/uploads/2017/07/01_nav_drawer-400x711.png 400w, //korben.info/wp-content/uploads/2017/07/01_nav_drawer.png 720w" sizes="(max-width: 330px) 100vw, 330px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/02_contact_list.png"><img class="aligncenter  wp-image-88256" src="http://korben.info/wp-content/uploads/2017/07/02_contact_list-650x1156.png" alt="" width="330" height="587" srcset="//korben.info/wp-content/uploads/2017/07/02_contact_list-650x1156.png 650w, //korben.info/wp-content/uploads/2017/07/02_contact_list-113x200.png 113w, //korben.info/wp-content/uploads/2017/07/02_contact_list-576x1024.png 576w, //korben.info/wp-content/uploads/2017/07/02_contact_list-475x844.png 475w, //korben.info/wp-content/uploads/2017/07/02_contact_list-400x711.png 400w, //korben.info/wp-content/uploads/2017/07/02_contact_list.png 720w" sizes="(max-width: 330px) 100vw, 330px" /></a></p>
<p> Toutes les communications sont chiffrées de bout en bout, et les métadonnées concernant la personne avec laquelle vous communiquez sont masquées.</p>
<p>La beta Android de Briar est sortie ce 21 juillet, et a fait l'objet d'un audit de sécurité indépendant réalisé par la société <a href="https://cure53.de">Cure53</a> qui a audité aussi des outils comme <a href="https://korben.info/cryptocat.html">Cryptocat</a>, <a href="https://www.dovecot.org/">Dovecot</a> ou encore <a href="https://korben.info/securedrop-aaron-swartz.html">SecureDrop</a>.</p>
<p>Si vous voulez l'utiliser, c'est possible, mais sachez qu'après la phase beta, tous les comptes et données seront automatiquement supprimés pour des raisons de sécurité.</p>
<p>Vous pouvez télécharger Briar s<a href="https://play.google.com/store/apps/details?id=org.briarproject.briar.beta">ur le Play Store ici</a></p>
<p>Enjoy !</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/briar-messagerie-instantanee-chiffree-p2p-passe-tor.html">Briar &#8211; La messagerie instantanée chiffrée, P2P et qui passe par Tor</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Présenté maladroitement comme l'outil de "messagerie instantanée du darknet", Briar est l'un de ces outils open source conçu pour aider les activités et autres personnes souhaitant communiquer de manière chiffrée et anonyme, à rester en sécurité. Tu parles d'un nom pour une app censée te rendre discret Ici, pas de serveurs centraux, les messages sont <a class="read-more" href="https://korben.info/briar-messagerie-instantanee-chiffree-p2p-passe-tor.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/briar-messagerie-instantanee-chiffree-p2p-passe-tor.html">Briar &#8211; La messagerie instantanée chiffrée, P2P et qui passe par Tor</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88272
title: YesWeHack recrute un profil développeur et un profil commercial pour sa plateforme de Bug Bounty
author: Korben
feedurl: https://korben.info/feed
url:
https://korben.info/yeswehack-recrute-profil-developpeur-profil-commercial-plateforme-de-bug-bounty.html

content:
<p>C'est l'été et tout le monde marche un peu au ralenti en ce moment. Tout le monde ou presque car une petite société spécialisée en cybersécurité continue encore et toujours sa conquête du monde :-)</p>
<p>Cette boite c'est la mienne, <strong>YesWeHack</strong>, et la bonne nouvelle, c'est qu'on a besoin de nouveaux matelots et matelottes dans notre équipage. On recherche des profils développeurs mais aussi commerciaux pour nous aider soutenir la croissance de BountyFactory.io, notre plateforme de BugBounty.</p>
<p>Si ça vous intéresse, n'hésitez pas à postuler !</p>
<p><span id="more-88272"></span></p>
<h2 style="text-align: center;"><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z b"><b>YesWeHack recrute un DÉVELOPPEUR H/F<br />
</b></span></h2>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Si pour vous, le développement sécurisé n'est pas qu'un concept marketing, </span><br />
<span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">si le mot bug bounty vous évoque autre chose que de la noix de coco enrobée de chocolat, </span><br />
<span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">et si vous aimez les produits locaux Made In Normandy... </span></p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Alors, candidatez pour rejoindre YesWeHack.<br />
</span><br />
<span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z b"><b>Périmètre de la candidature</b></span></p>
<ul>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Type de contrat : CDI</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Expérience requise : Intermédiaire</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Localisation : Rouen (Normandie - France)</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Rémunération : Selon le profil</span></li>
</ul>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z b"><b>À propos de la société</b></span></p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Société spécialisée en cybersécurité fondée en 2013 par des gens formidables, YesWeHack rencontre un développement fulgurant de son activité notamment grâce à Bounty Factory, sa plate-forme de Bug Bounties (chasse aux bugs). Leader en Europe, </span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z url"><a href="https://BountyFactory.io">https://BountyFactory.io</a></span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z"> met en relation des organisations en quête de renforcement de leur système d'information, avec la plus vaste communauté de hunters en Europe. YesWeHack propose aussi un job board dédié au recrutement en sécurité informatique : </span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z url"><a href="https://jobs.yeswehack.com">https://jobs.yeswehack.com</a></span></p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">4 plateformes interdépendantes constituent l'écosystème de YesWeHack : </span></p>
<ul>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z url"><a href="https://jobs.yeswehack.com">https://jobs.yeswehack.com</a></span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z"> - Une plateforme d'emploi dédiée à la sécurité des SI : la première du genre</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z url"><a href="https://firebounty.com">https://firebounty.com</a></span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z"> - Un agrégateur de Bug Bounty : le code de FireBounty est construit pour scanner automatiquement le web et chercher des programmes publics</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z url"><a href="https://bountyfactory.io">https://bountyfactory.io</a></span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z"> - Une plateforme de Bug Bounty maison : La 1ère en Europe.</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z url"><a href="https://zerodisclo.com">https://zerodisclo.com</a></span><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z"> - Un site sécurisé et non profit permettant de remonter des failles de sécurité dans un cadre de coordinated disclosure.</span></li>
</ul>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Nous avons les meilleurs clients du monde, mais nous ne pouvons pas tous les citer pour des raisons de confidentialité et de sécurité. Nous accordons beaucoup d'importance à ces valeurs et vous devrez en faire de même. Toutefois, les clients notoires et publics de YesWeHack sont OVH, Orange, CCM Benchmark, Dassault systèmes via Outscale et Qwant.</span></p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">YesWeHack est le lauréat du prix coup de coeur de la PME innovante au FIC 2017, membre de la FNTC (Férération Nationale des Tiers de Confiance) et fait partie du programme d'accompagnement des startups d'OVH (DLP OVH).</span></p>
<p><a href="http://korben.info/wp-content/uploads/2017/07/img_0260.jpg"><img class="aligncenter size-new-size wp-image-88268" src="http://korben.info/wp-content/uploads/2017/07/img_0260-650x380.jpg" alt="" width="650" height="380" srcset="//korben.info/wp-content/uploads/2017/07/img_0260-650x380.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0260-342x200.jpg 342w, //korben.info/wp-content/uploads/2017/07/img_0260-768x449.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0260-1024x599.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0260-475x278.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0260-750x439.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0260-400x234.jpg 400w, //korben.info/wp-content/uploads/2017/07/img_0260.jpg 1152w" sizes="(max-width: 650px) 100vw, 650px" /></a><br />
<b>Profil recherché</b></p>
<p>Pour appuyer sa croissance, YesWeHack cherche à renforcer son équipage avec des équipiè·re·s passionnés de code.</p>
<p>Vos missions principales seront :</p>
<ul class="list-bullet1">
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Le maintien du code actuel de la plateforme</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">La contribution au développement des futures versions</span></li>
</ul>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Passionné·e par la cybersécurité, vous justifiez d’une bonne expérience professionnelle dans le domaine du développement. Vous êtes rigoureux, vous respectez les bonnes pratiques pour produire du code sécurisé et la sécurité fonctionnelle n'a pas de secret pour vous.</span></p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Vous devez maitriser :</span></p>
<ul>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">PHP5/7</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Symfony2/3</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Doctrine2</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">MySQL</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Twig</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Git</span></li>
</ul>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Des notions de JavaScript (jQuery) et de CSS sont aussi demandées. </span></p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Et si vous possédez les notions suivantes, ce sera aussi un énorme avantage :</span></p>
<ul>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">PHPUnit</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Behat</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Grunt/Gulp</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">SASS/Less</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Linux</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Environnement multi serveurs</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Anglais lu, parlé et écrit</span></li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Participation à des projets open sources</span></li>
</ul>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Une expérience en pétanque serait un atout non négligeable.</span></p>
<p><a href="http://korben.info/wp-content/uploads/2017/07/img_0721.jpg"><img class="aligncenter size-new-size wp-image-88275" src="http://korben.info/wp-content/uploads/2017/07/img_0721-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/img_0721-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0721-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/img_0721-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0721-1024x768.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0721-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0721-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0721-1250x938.jpg 1250w, //korben.info/wp-content/uploads/2017/07/img_0721-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/img_0721.jpg 1600w" sizes="(max-width: 650px) 100vw, 650px" /></a><br />
<span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Le poste se site au pôle d'activité de Seine Innopolis, l'équivalent de la Silicon Valley, mais à Rouen. Vous baignerez donc dans une ambiance dynamique et novatrice. </span><br />
<span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Si vous aimez les ambiances de travail sympas et les brainstormings nocturnes autour d'un petit barbecue, n'hésitez plus et envoyez-nous immédiatement votre CV et les raisons qui vous motivent à embarquer avec nous dans cette aventure prometteuse.</span></p>
<h2 style="text-align: center;"><a href="https://jobs.yeswehack.com/job/other/yeswehack-sas-developpeur-h-f">POSTULER</a></h2>
<p>Ressources</p>
<ul>
<li><a href="https://blog.yeswehack.com/">https://blog.yeswehack.com/ </a></li>
<li><a href="https://www.ovh.com/fr/news/cp2313.bountyfactoryio_la_plateforme_europeenne_de_bug_bounty_est_enfin_ouverte_a_tous"> https://www.ovh.com/fr/news/cp2313.bountyfactoryio_la_plateforme_europeenne_de_bug_bounty_est_enfin_ouverte_a_tous </a></li>
<li><a href="http://www.orange-business.com/fr/blogs/securite/actualites/bug-bounty-nuit-du-hack-2017-orange-un-an-apres">http://www.orange-business.com/fr/blogs/securite/actualites/bug-bounty-nuit-du-hack-2017-orange-un-an-apres </a></li>
<li><a href="https://korben.info/bug-bounty-legal-aspects.html">https://korben.info/bug-bounty-legal-aspects.html</a></li>
</ul>
<hr />
<h2 style="text-align: center;"><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z b"><b>YesWeHack recrute un COMMERCIAL H/F<br />
</b></span></h2>
<p>Si pour vous le mot bug bounty n'évoque pas qu'une barre chocolatée fourrée de noix de coco,<br />
Si le mot hacker ne vous renvoie pas uniquement l'image de quelqu'un qui porte une capuche en intérieur, et si vous avez banni le mot "travail" de votre vocabulaire pour le remplacer par celui de "passion"...</p>
<p>Alors, candidatez pour rejoindre YesWeHack</p>
<p><strong>Périmètre de la candidature</strong></p>
<ul>
<li>Type de contrat : CDI</li>
<li>Expérience requise : Intermédiaire</li>
<li>Localisation : Paris/Allemagne/UK</li>
<li><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Rémunération : Selon le profil</span></li>
</ul>
<p><strong>À propos de la société</strong></p>
<p>Société spécialisée en cybersécurité fondée en 2013 par des gens formidables, YesWeHack rencontre un développement fulgurant de son activité notamment grâce à Bounty Factory, sa plate-forme de Bug Bounties (chasse aux bugs). Leader en Europe, <a href="https://BountyFactory.io">https://BountyFactory.io</a> met en relation des organisations en quête de renforcement de leur système d'information, avec la plus vaste communauté de hunters en Europe (+3000 experts en sécurité et +2000 bugs remontés). YesWeHack propose aussi un job board dédié au recrutement en sécurité informatique : <a href="https://jobs.yeswehack.com">https://jobs.yeswehack.com</a></p>
<p>4 plateformes interdépendantes constituent l'écosystème de YesWeHack :</p>
<ul>
<li>- Bounty Factory &gt; <a href="https://bountyfactory.io">https://bountyfactory.io</a></li>
<li>- Jobboard &gt; <a href="https://jobs.yeswehack.com">https://jobs.yeswehack.com</a></li>
<li>- Firebounty &gt; <a href="https://firebounty.com">https://firebounty.com</a></li>
<li>- Zerodisclo &gt; <a href="https://zerodisclo.com">https://zerodisclo.com</a></li>
</ul>
<p>Nous avons les meilleurs clients du monde mais nous ne pouvons pas tous les citer pour des raisons de confidentialité et de sécurité. Nous accordons beaucoup d'importance à ces valeurs et vous devrez en faire de même. Toutefois, les clients notoires et publics de YesWeHack sont OVH, Orange, CCM Benchmark, Dassault systèmes via Outscale et Qwant.</p>
<p>YesWeHack est le lauréat du prix coup de coeur de la PME innovante au FIC 2017, membre de la FNTC (Férération Nationale des Tiers de Confiance) et fait partie du programme d'accompagnement des startups d'OVH (DLP OVH).</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/img_0260.jpg"><img class="aligncenter size-new-size wp-image-88268" src="http://korben.info/wp-content/uploads/2017/07/img_0260-650x380.jpg" alt="" width="650" height="380" srcset="//korben.info/wp-content/uploads/2017/07/img_0260-650x380.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0260-342x200.jpg 342w, //korben.info/wp-content/uploads/2017/07/img_0260-768x449.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0260-1024x599.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0260-475x278.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0260-750x439.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0260-400x234.jpg 400w, //korben.info/wp-content/uploads/2017/07/img_0260.jpg 1152w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p><strong>Profil recherché</strong></p>
<p>Pour appuyer sa croissance, YesWeHack cherche à renforcer son équipage avec des équipiè·re·s à la fibre commerciale.<br />
A travers les activités de YesWeHack, vous serez amené·e à évoluer dans des contextes divers et variés (secteur public, grands groupes, PME, startups) et vous ferez partie intégrante de notre équipe de passionnés.</p>
<p>Vos missions principales seront :</p>
<ul>
<li>Contribution à la stratégie commerciale.</li>
<li>Participation au processus d’avant-vente (Étude de cahiers des charges, contribution aux spécifications techniques, promotion des offres aux clients).</li>
<li>Prospection par téléphone, par email et qualification des clients.</li>
<li>Reporting, veille et identification de nouveaux marchés.</li>
<li>Tenue et animation de stands lors de salons en France et à l'international.</li>
</ul>
<p>Passionné·e par la cybersécurité et de formation ingénieur, universitaire ou underground, vous justifiez d’une bonne expérience dans le domaine commercial de la sécurité des systèmes d’information.</p>
<p><span class="author-a-jgbz84zwidz81zwz88zjz80zz73zz89zwz90z">Une expérience en pétanque serait un atout non négligeable.</span></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/img_0721.jpg"><img class="aligncenter size-new-size wp-image-88275" src="http://korben.info/wp-content/uploads/2017/07/img_0721-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/img_0721-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0721-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/img_0721-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0721-1024x768.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0721-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0721-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0721-1250x938.jpg 1250w, //korben.info/wp-content/uploads/2017/07/img_0721-400x300.jpg 400w, //korben.info/wp-content/uploads/2017/07/img_0721.jpg 1600w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Le relationnel, ça vous connait ! Vous devez être motivé·e par le jeu, les défis et vous disposez de bonnes capacités d'argumentation et d'expression orale et écrite pour atteindre vos objectifs. De plus, quand la mer est agitée, vous savez rester calme, positif et combatif pour atteindre vos objectifs.</p>
<p>Linguistiquement, il est impératif de présenter un excellent niveau d'anglais à l'oral comme à l'écrit. Par ailleurs, la maîtrise de l'allemand serait un atout. Notez que la connaissance du l33t sp34k ne sera pas un facteur discriminant dans ce recrutement.</p>
<p>Si chaque mot de cette proposition de poste entre en vibration avec votre for intérieur (et que votre téléphone portable n'est pas sur mode vibreur), n'hésitez plus et envoyez-nous immédiatement votre CV et les raisons qui vous motivent à embarquer avec nous dans cette aventure prometteuse.</p>
<h2 style="text-align: center;"><a href="https://jobs.yeswehack.com/job/other/yeswehack-sas-commercial-h-f">POSTULER</a></h2>
<p>Ressources :</p>
<ul>
<li><a href="https://blog.yeswehack.com/">https://blog.yeswehack.com/ </a></li>
<li><a href="https://www.ovh.com/fr/news/cp2313.bountyfactoryio_la_plateforme_europeenne_de_bug_bounty_est_enfin_ouverte_a_tous"> https://www.ovh.com/fr/news/cp2313.bountyfactoryio_la_plateforme_europeenne_de_bug_bounty_est_enfin_ouverte_a_tous </a></li>
<li><a href="http://www.orange-business.com/fr/blogs/securite/actualites/bug-bounty-nuit-du-hack-2017-orange-un-an-apres">http://www.orange-business.com/fr/blogs/securite/actualites/bug-bounty-nuit-du-hack-2017-orange-un-an-apres </a></li>
<li><a href="https://korben.info/bug-bounty-legal-aspects.html">https://korben.info/bug-bounty-legal-aspects.html</a></li>
</ul>

<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/yeswehack-recrute-profil-developpeur-profil-commercial-plateforme-de-bug-bounty.html">YesWeHack recrute un profil développeur et un profil commercial pour sa plateforme de Bug Bounty</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>C'est l'été et tout le monde marche un peu au ralenti en ce moment. Tout le monde ou presque car une petite société spécialisée en cybersécurité continue encore et toujours sa conquête du monde :-) Cette boite c'est la mienne, YesWeHack, et la bonne nouvelle, c'est qu'on a besoin de nouveaux matelots et matelottes dans <a class="read-more" href="https://korben.info/yeswehack-recrute-profil-developpeur-profil-commercial-plateforme-de-bug-bounty.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/yeswehack-recrute-profil-developpeur-profil-commercial-plateforme-de-bug-bounty.html">YesWeHack recrute un profil développeur et un profil commercial pour sa plateforme de Bug Bounty</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88285
title: Quand la Suède balance dans la nature les données personnelles de millions de ses citoyens…
author: Korben
url: https://korben.info/suede-balance-nature-donnees-personnelles-de-millions-de-citoyens.html
feedurl: https://korben.info/feed
content:
<p>On en sait un peu plus sur la fuite de données qu'a subi la Suède en 2015 et 2 ans plus tard, on peut clairement dire que celle-ci est à classer dans la catégorie des fuites de données "ultra violentes qui piquent++".</p>
<p>En 2015, l'<strong>Agence Suédoise du Transport</strong> qui dépend du gouvernement, a uploadé sur le cloud d'IBM l'intégralité de sa base de données qui contient des infos sur tous les véhicules utilisés dans le pays par les particuliers, mais aussi par les militaires, la police et même les personnes placées sous le régime de protection des témoins. Autant dire les données personnelles de millions de personnes.</p>
<p>Et ces andouilles ont ensuite envoyé un email en clair avec la base, non nettoyée de ses données sensibles, aux professionnels du marketing qui s'était inscrit pour la recevoir. (<em>Oui, en France aussi, les données personnelles fournies dans le cadre de l'édition de cartes grises sont vendues à des marketeux. C'est dégueulasse, mais comme on doit être moins de 5 dans le pays à trouver ça abusé, ça passe.</em>)</p>
<div id="aim28099172966656288693">Mais ce n'est pas tout. Des employés d'IBM à l'extérieur du pays ont eu accès à ces données sans plus de contrôle.</div>
<p>Cette histoire date d'il y a 2 ans (2015), le leak a été découvert il y a 1 an (2016) et l'enquête n'a commencé qu'en janvier 2017. Le directeur de l'Agence du Transport s'est fait virer et a été condamné à payer une amende de 7300 euros pour "négligence concernant des informations secrètes".</p>
<p>Mais les infos concernant l'ampleur du fail commencent à sortir et on sait donc exactement ce qu'il y a dans ce fichier :</p>
<ul>
<li>Le poids max supporté par toutes les routes et tous les ponts du pays (ce qui est une information importante en temps de guerre)</li>
<li>Les noms, photos et adresses des pilotes de combat de l'Armée de l'Air Suédoise</li>
<li>Les noms, photos et adresses de tous ceux qui sont enregistrés dans un fichier de police (information normalement classifiée)</li>
<li>Les noms, photos et adresses des militaires travaillant dans l'Unité d'Élite la plus secrète du pays (l'équivalent du COS - Commandement des Opérations Spéciales regroupant le Régiment Parachutiste d'Infanterie de Marine, les Commandos Marine...etc).</li>
<li>Les noms, photos et adresses de tous les gens à qui ont a donné de nouvelles identités dans le cadre d'un programme de protection des témoins.</li>
<li>Le type, modèle, poids et défaillances de tous les véhicules gouvernementaux et militaires.</li>
</ul>
<p>Ouch !</p>
<p>Bref, gros scandale à l'horizon au pays d'ABBA.</p>
<p><a href="https://www.privateinternetaccess.com/blog/2017/07/swedish-transport-agency-worst-known-governmental-leak-ever-is-slowly-coming-to-light/">Source</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/suede-balance-nature-donnees-personnelles-de-millions-de-citoyens.html">Quand la Suède balance dans la nature les données personnelles de millions de ses citoyens&#8230;</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>On en sait un peu plus sur la fuite de données qu'a subi la Suède en 2015 et 2 ans plus tard, on peut clairement dire que celle-ci est à classer dans la catégorie des fuites de données "ultra violentes qui piquent++". En 2015, l'Agence Suédoise du Transport qui dépend du gouvernement, a uploadé sur <a class="read-more" href="https://korben.info/suede-balance-nature-donnees-personnelles-de-millions-de-citoyens.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/suede-balance-nature-donnees-personnelles-de-millions-de-citoyens.html">Quand la Suède balance dans la nature les données personnelles de millions de ses citoyens&#8230;</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88291
title: Stranger Things 2 – La bande annonce
author: Korben
url: https://korben.info/stranger-things-2-bande-annonce.html
feedurl: https://korben.info/feed
content:
<p>J'avais dévoré la première saison de <strong>Stranger Things</strong>, cette série fantastique Made in Netflix, qui se déroule dans les années 80 et qui reprend les codes des Goonies en mettant en scène des enfants bien plus débrouillards que les adultes.</p>
<p>Une fois encore, Will et ses copains vont se retrouver face à des êtres terrifiants du Monde à l'envers, tous droit sortis d'un livre de Stephen King. Ce qui est dommage quand même c'est que la bande-annonce spoile à mort la série. Donc, ne la regardez pas si vous voulez garder la surprise totale.</p>
<p>On appréciera la BO de Thriller </p>
<p style="text-align: center;"><iframe src="https://www.youtube.com/embed/vgS2L7WPIO4?ecver=1" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p> Date de sortie : Au moment d'Halloween, le 27 octobre.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/stranger-things-2-bande-annonce.html">Stranger Things 2 &#8211; La bande annonce</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>J'avais dévoré la première saison de Stranger Things, cette série fantastique Made in Netflix, qui se déroule dans les années 80 et qui reprend les codes des Goonies en mettant en scène des enfants bien plus débrouillards que les adultes. Une fois encore, Will et ses copains vont se retrouver face à des êtres terrifiants <a class="read-more" href="https://korben.info/stranger-things-2-bande-annonce.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/stranger-things-2-bande-annonce.html">Stranger Things 2 &#8211; La bande annonce</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88300
title: Honor 9, un smartphone éblouissant et pas cher ? test complet
author: Korben
url: https://korben.info/honor-9-smartphone-eblouissant-cher-test-complet.html
feedurl: https://korben.info/feed
content:
<p>Après un très bon cru avec le Honor 8, sorti l'année dernière, <strong>Honor</strong>, la marque de Huawei made for Millenials, revient avec <a href="http://amzn.to/2srev1T" target="_blank">le Honor 9</a>, nom de code LightCatcher, peut être un peu trop catcher d'ailleurs.</p>
<p>En tout cas, Jerome l'a eu entre les pattes, un bel après-midi ensoleillé et a pu le tester en condition de light catcher justement ;)</p>
<p>Bon j’arrête là mes blagues sur la saisie de lumière, mais faut avouer que le dos du smartphone pourrait aider MacGyver à se défaire de ses liens en reflétant la lumière du soleil dessus.</p>
<p style="font-size:18px;"><strong>Pour les caractéristiques générales:</strong></p>
<li>Dalle de 5,15 pouces</li>
<li>4 Go RAM (pour la version testée)</li>
<li>64 Go ROM </li>
<li>Pas étanche</li>
<li>Port USB type C</li>
<li>Controller infrarouge</li>
<li>Android 7.00 + EMUI 5.1 </li>
<p>Vous pouvez trouver le Honor 9 <a href="http://amzn.to/2vWFUuS" target="_blank">autour des 429 €</a></p>
<p style="font-size:20px; font-weight:bold;color:#ee6123;">Bonus</p>
<p style="font-size:18px;">Pour aller avec votre nouveau smartphone; celui là ou un autre, je vous propose un code promo sur le <a href="http://korben.info/kbn/sudio-regent" target="_blank">casque Sudio Regent</a> (valable sur tous les coloris)<br />
Vous avez <strong>15% </strong>de réduction avec le code <strong>Korben</strong></p>
<p><iframe width="560" height="315" src="https://www.youtube.com/embed/aAjU6o-Mz80" frameborder="0" allowfullscreen></iframe></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/honor-9-smartphone-eblouissant-cher-test-complet.html">Honor 9, un smartphone éblouissant et pas cher ? test complet</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Après un très bon cru avec le Honor 8, sorti l'année dernière, Honor, la marque de Huawei made for Millenials, revient avec le Honor 9, nom de code LightCatcher, peut être un peu trop catcher d'ailleurs. En tout cas, Jerome l'a eu entre les pattes, un bel après-midi ensoleillé et a pu le tester en <a class="read-more" href="https://korben.info/honor-9-smartphone-eblouissant-cher-test-complet.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/honor-9-smartphone-eblouissant-cher-test-complet.html">Honor 9, un smartphone éblouissant et pas cher ? test complet</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88325
title: Firefox en voie d’extinction ?
author: Korben
url: https://korben.info/firefox-voie-dextinction.html
feedurl: https://korben.info/feed
content:
<p>J'ai lu plusieurs articles ces derniers jours sur la supposée future disparition de Firefox et je vous avoue que ça m'attriste. Andreas Gal, l'ancien directeur technique de chez Mozilla indique en effet que malgré tous les progrès techniques et la récente prise de position devant Chrome en termes de performance mémoire, cela ne suffira pas.</p>
<p>Firefox serait voué à disparaitre. Apparemment, les gens de Mozilla sont impuissants face aux ruses marketing déployées par Google pour inciter les internautes utilisateurs de ses services à installer Chrome. En effet, face à un Google en position de quasi-monopole qui peut pousser du "<em>Installe Chrome</em>" sur YouTube, Gmail, Google Docs et j'en passe, le combat reste inégal.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39.png"><img class="aligncenter wp-image-88327" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-650x306.png" alt="" width="527" height="248" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-650x306.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-425x200.png 425w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-768x361.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-1024x482.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-475x224.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-750x353.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-1250x588.png 1250w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-26-07-22-39-400x188.png 400w" sizes="(max-width: 527px) 100vw, 527px" /></a></p>
<p>Sans parler de tous les partenariats avec les fabricants de matos où Chrome est proposé à l'installation en même temps que les drivers ou les logiciels compagnons et j'en passe.</p>
<p>Bref, le marketing triomphe encore une fois de la technique. Snif...</p>
<p>Si demain Firefox devait disparaitre, je vous avoue que je serai très triste, car c'est un super navigateur. Et ça me fait toujours mal au coeur de voir des libristes militants opter pour un Chromium plutôt que pour un Firefox. Vous pouvez être sûr que le jour ou Firefox disparait, Chromium suivra, car Google n'aura plus besoin de faire valoir l'argument "open source" pour fourguer du Chrome bien verrouillé à tout le monde.</p>
<p>Bref, si vous pensez que c'est important, redonnez au moins une chance à Firefox. Je vous promets, il est top !</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/firefox-voie-dextinction.html">Firefox en voie d&#8217;extinction ?</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>J'ai lu plusieurs articles ces derniers jours sur la supposée future disparition de Firefox et je vous avoue que ça m'attriste. Andreas Gal, l'ancien directeur technique de chez Mozilla indique en effet que malgré tous les progrès techniques et la récente prise de position devant Chrome en termes de performance mémoire, cela ne suffira pas. Firefox <a class="read-more" href="https://korben.info/firefox-voie-dextinction.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/firefox-voie-dextinction.html">Firefox en voie d&#8217;extinction ?</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88177
title: Entreprises, comment éviter les remontées sauvages de failles de sécurité ?
author: Korben
url: https://korben.info/bug-bounty-sauvage-entreprise-vulnerabilite.html
feedurl: https://korben.info/feed
content:
<p>Bon, vous le savez, depuis 2013 on organise des <strong>Bugs Bounties avec les copains de <a href="https://yeswehack.com">YesWeHack</a></strong>. Et en 2015, on a décidé de créer <a href="https://bountyfactory.io">BountyFactory.io</a>, une plateforme qui permet facilement à chaque société qui le souhaite, de créer son programme de bug bounty. L'idée c'est de faire tester un site, une application, un projet open source, des webservices, des objets connectés et autres, à notre communauté de Hunters (experts en sécurité) pour voir si des bugs de sécurité s'y trouvent. C'est un bon moyen d'améliorer la sécurité informatique de sa boite, dans un cadre de développement agile, en ne payant qu'au bug effectif remonté.</p>
<p>Et aujourd'hui, j'aimerais vous parler du concept de <strong>bug bounty sauvage, ou plus généralement de remontées sauvages de failles</strong>, car plusieurs de nos clients, avant de faire appel à nous, y ont été confrontés.</p>
<p>Le bug bounty classique, c'est-à-dire légal, officiel, approuvé par la société qui l'initie, c'est la mise en place d'un périmètre de test, soumis à des experts en sécurité en mode privé ou public, avec à la clé, un versement d'une récompense aux experts ayant trouvé et remonté une vulnérabilité. Ça, c'est cool.</p>
<p>En opposition, la remontée sauvage de failles de sécurité n'est pas encadrée et se fait sans l'approbation initiale de l'entreprise concernée. Il n'y a pas de règles donc cela peut revêtir les habits d'une "<em>Coordinated Disclosure</em>" parfaitement propre comme on le fait avec <a href="https://Zerodisclo.com">Zerodisclo.com</a>. C'est le cas de figure idéal quand aucun programme de bug bounty n'est en place.</p>
<p>Mais le plus souvent, ça se fait de manière un peu plus violente. Soit les informations concernant la faille sont publiquement affichées sur un site, un forum...etc. et donc peuvent être utilisées par d'autres. Soit la personne qui a trouvé la faille l'annonce (par mail ou publiquement sur un site dédié à ça) et réclame à l'entreprise une récompense (ou un job) en échange de ces infos. On rentre alors dans un cadre qui s'apparente plus à du chantage.</p>
<div class="tenor-gif-embed" data-postid="5698153" data-share-method="host" data-width="100%" data-aspect-ratio="1.2101910828025477"><a href="https://tenor.com/view/hustle-money-i-need-money-cash-rick-gif-5698153">Hustle GIF</a> from <a href="https://tenor.com/search/hustle-gifs">Hustle GIFs</a></div>
<p><script type="text/javascript" async src="https://tenor.com/embed.js"></script></p>
<p>Et malheureusement, une entreprise qui est confrontée à cela est souvent démunie et son seul réflexe est de porter plainte. (ce qui est une mauvaise idée la plupart du temps)</p>
<p>Voici donc quelques clés pour garder au maximum la maitrise de ses vulnérabilités.</p>
<p>La première étape parait évidente, mais plutôt que d'attendre qu'un inconnu lance un bug bounty vous concernant sur une plateforme tierce dont vous ne savez rien,<strong> il faut prendre les devants et <a href="https://BountyFactory.io">créer votre propre programme de Bug Bounty</a>.</strong></p>
<p>Cela va vous permettre plusieurs choses :</p>
<ul>
<li>Obtenir rapidement un niveau de sécurité supérieur à l'actuel et donc éviter la remontée de failles trop évidentes.</li>
<li>Avoir une connaissance immédiate des failles trouvées, sans chantage et sans négociation.</li>
<li>Être le seul à avoir connaissance du détail des failles remontées.</li>
<li>Garder la maitrise totale du budget, du périmètre de test et du nombre de hunters qui vont se pencher sur ce périmètre.</li>
<li>Pouvoir échanger sans risque avec le découvreur de la faille pour lui demander des informations complémentaires ou de l'aide pour la correction du problème.</li>
<li>De plus, proposer une récompense évitera, la plupart du temps, qu'une faille se retrouve décrite publiquement dans la nature.</li>
</ul>
<p class="p1">Ça, c'est donc le 1er truc à faire. Choisissez aussi la bonne plate-forme de bug bounty au regard du contexte éco/géo/politico/légal, car vous vous en doutez les lois US diffèrent des lois européennes en matière de divulgation des vulnérabilités. Notez quand même que l'Europe a pris au sérieux le dossier de la protection des données personnelles <strong><a href="https://korben.info/rgpd-gdpr.html">via la RGPD</a></strong>, mais revenons à nos bugs.</p>
<div class="tenor-gif-embed" data-postid="5892660" data-share-method="host" data-width="100%" data-aspect-ratio="1.7785714285714287"><a href="https://www.tenor.co/view/aware-waynesworld-notaware-shrug-iwas-not-aware-of-that-gif-5892660">Aware Waynesworld GIF</a> from <a href="https://www.tenor.co/search/aware-gifs">Aware GIFs</a></div>
<p><script type="text/javascript" async src="https://www.tenor.co/embed.js"></script></p>
<p>Ensuite, <strong>quelque chose d'hyper important si vous fonctionnez avec un bug bounty privé, c'est de rester discret</strong>. En effet, je vois trop souvent des entreprises expliquer partout qu'elles ont un bug bounty privé, voire d'autres plateformes de Bug Bounty se vanter dans les médias d'avoir tel ou tel client (en bug bounty privé évidemment).</p>
<p>La nature même de "<strong>privé</strong>" c'est que tout le monde n'est pas invité à la fête. Donc si vous criez sur tous les toits que vous avez un programme de bug bounty et que celui-ci n'est pas public, les gens vont faire n'importe quoi avec votre site.</p>
<p>D'abord, ils n'auront pas connaissance du périmètre, donc ils vont tester tout ce qui va leur passer sous la main, sans chercher à savoir si de vôtre côté vous approuvez ou non. Vous essuierez aussi peut-être quelques attaques DDoS, des tentatives des phishings... etc. Bref, pleins de trucs moches. Ensuite ceux qui vont trouver une faille, tenterons de vous contacter par tous les moyens. Et comme ils n'auront aucune connaissance du montant de vos récompenses, ils commenceront à négocier à l'aveuglette, voire à basculer en mode chantage. Et cela leur paraitra normal de défoncer votre site et de vous demander un gros chèque, puisqu’après tout, vous avez expliqué partout publiquement que vous proposiez de "<em>l'argent contre des failles de sécurité</em>".</p>
<p>J'ai déjà vu ce genre de problèmes chez une société qui n'avait pas pris conscience de cela et qui a été un peu trop bavarde sur son bug bounty privé. Pensez donc bien à garder secrète l'existence de tous programmes de bug bounty privés que vous lanceriez. Et si veillez bien aussi à ce que vos partenaires techniques sur le bug bounty n'utilisent pas le nom de votre société pour faire du name dropping promotionnel.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-88302" src="http://korben.info/wp-content/uploads/2017/07/shut-up-gujarati-engineer.gif" alt="" width="497" height="214" /></p>
<p>Le but évidemment, c'est qu'ensuite vous puissiez sortir de cette phase "privée" pour passer en bug bounty public. À ce moment-là, tout le monde sera invité à la fête et pourra se référer au périmètre et aux montants des récompenses que vous proposerez. Ce sera enfin l'occasion de communiquer publiquement et sans risque de débordement sur votre programme de bug bounty pour mettre en avant l'importance que vous accordez aux données de vos clients et à la sécurité de votre site.</p>
<p>Maintenant que faire si malgré toutes ces précautions, quelqu'un décide de vous remonter une vulnérabilité de manière un peu plus sauvage ? Et bien il n'y a pas 36 000 solutions, il suffit de rediriger gentiment le hunter vers votre programme de bug bounty officiel, en lui expliquant qu'en passant par là, il pourra toucher une récompense si sa faille est valide. Vous pourrez ensuite patcher au plus vite la ou les failles concernées.</p>
<p>Pour compléter la lecture de cet article, je vous renvoie <a href="https://media.scmagazine.com/documents/284/1485289350857_7-bug-bounty-myt_70880.pdf">vers ce PDF</a> qui revient sur la plupart des mythes liés aux bugs bounty ouverts qui pourraient freiner les sociétés les moins informées sur cette pratique de la crowdsecurity.</p>
<p>Bonne lecture.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/bug-bounty-sauvage-entreprise-vulnerabilite.html">Entreprises, comment éviter les remontées sauvages de failles de sécurité ?</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Bon, vous le savez, depuis 2013 on organise des Bugs Bounties avec les copains de YesWeHack. Et en 2015, on a décidé de créer BountyFactory.io, une plateforme qui permet facilement à chaque société qui le souhaite, de créer son programme de bug bounty. L'idée c'est de faire tester un site, une application, un projet open <a class="read-more" href="https://korben.info/bug-bounty-sauvage-entreprise-vulnerabilite.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/bug-bounty-sauvage-entreprise-vulnerabilite.html">Entreprises, comment éviter les remontées sauvages de failles de sécurité ?</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88358
title: Jeu Concours – spécial éducation, des marque pages interactifs
author: Korben
url: https://korben.info/jeu-concours-special-education-marque-pages-interactifs.html
feedurl: https://korben.info/feed
content:
<p>Pour finir la journée, je vous présente un petit jeu concours interactif pour vos bambinos, histoire de les faire souffler cet été après les cahiers de vacances ;)</p>
<p><strong>ACHA</strong> est une startup à but social et éducatif qui vient de se lancer.</p>
<p>Leur truc, c'est <a href="http://getacha.com" target="_blank">Acha Stories</a>, une série de marque pages avec des personnages encouragent les enfants et jeunes à s’intéresser à la science, l’environnement et à l’engagement civique.<br />
Chaque marque page a un code donnant accès à des histoires et du contenu sur leur site <a href="http://getacha.com" target="_blank">getacha.com</a>. </p>
<p><center<img src="http://korben.info/wp-content/uploads/2017/07/d4e2ccc845ac83e7605d9ae7c32c1c88_original-2.jpg" alt="" width="300" height="400" class="aligncenter size-full wp-image-88361" srcset="//korben.info/wp-content/uploads/2017/07/d4e2ccc845ac83e7605d9ae7c32c1c88_original-2.jpg 300w, //korben.info/wp-content/uploads/2017/07/d4e2ccc845ac83e7605d9ae7c32c1c88_original-2-150x200.jpg 150w" sizes="(max-width: 300px) 100vw, 300px" /></center></p>
<p>Très branchée développement durable, la jeune start up organise déjà pas mal d'évènements l'encourageant autour du monde.</p>
<p>Concernant le développement d'Acha Stories, ACHA souhaiterait publier de nouveaux chapitres pour chaque personnage tous les mois à partir de Septembre 2017.<br />
Pour les aider, ils ont ouvert un Kickstarter, si ça vous intéresse d'y participer <a href="https://www.kickstarter.com/projects/acha/how-can-i-help-magnetic-bookmarks-with-acha-storie" target="_blank">c'est ici.</a></p>
<p>Et pour vous familiariser avec le produit, on vous propose de <strong>gagner 60 marques pages</strong>.<br />
De quoi passer de bons moments ces vacances avec vos mini-vous ;)</p>
<p> <html><head><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"><title>A gagner 60 marque pages interactifs</title></head><body style="margin:0;"><iframe src="https://contest-2c1jok.xg1.li/web" height="600px" width="100%" frameborder="0"></iframe></body></html> </p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/jeu-concours-special-education-marque-pages-interactifs.html">Jeu Concours &#8211; spécial éducation, des marque pages interactifs</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Pour finir la journée, je vous présente un petit jeu concours interactif pour vos bambinos, histoire de les faire souffler cet été après les cahiers de vacances ;) ACHA est une startup à but social et éducatif qui vient de se lancer. Leur truc, c'est Acha Stories, une série de marque pages avec des personnages <a class="read-more" href="https://korben.info/jeu-concours-special-education-marque-pages-interactifs.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/jeu-concours-special-education-marque-pages-interactifs.html">Jeu Concours &#8211; spécial éducation, des marque pages interactifs</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=87956
title: Test de l’imprimante 3D Neva de Dagoma
author: Korben
url: https://korben.info/test-imprimante-3d-neva-dagoma.html
feedurl: https://korben.info/feed
content:
<p>Quand j'ai vu la <a href="https://dagoma.fr/boutique/produit/imprimantes-3d/neva.html"><strong>Neva</strong></a> pour la première fois, c'était lors de ma petite visite chez Dagoma. Elle était encore en phase de conception, donc je ne pouvais pas encore la tester. Mais ça y est, je l'ai depuis quelques semaines, et j'ai enfin trouvé un peu de temps pour m'y coller.</p>
<p>Cette imprimante 3D fait partie de la famille des imprimantes à tête d'extrusion aimantée. Elle repose sur 3 colonnes sur lesquelles montent et descendent les bras de support qui pour apporter un maximum de précision sont au nombre de 2 par colonne.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252.jpg"><img class="aligncenter size-new-size wp-image-88400" src="http://korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-650x867.jpg" alt="" width="650" height="867" srcset="//korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-650x867.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-150x200.jpg 150w, //korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-768x1024.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-475x633.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-750x1000.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-1250x1667.jpg 1250w, //korben.info/wp-content/uploads/2017/07/img_0309-e1501236391252-400x533.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Comme sa vieille soeur la DiscoEasy200, la Neva est capable d'atteindre une précision allant jusqu'à 100 microns pour une vitesse de 30 à 100 mm/s. Elle tourne au PLA 1.75 mm et son volume est légèrement plus petit (180 x 200 mm) à cause de sa forme triangulaire.</p>
<p>Par contre, même si elle est assez haute (53,5 cm), elle prend beaucoup moins de place sur un bureau et son design est beaucoup plus joli.</p>
<p>D'ailleurs Dagoma a eu la bonne idée de réduire la taille des bobines de fil (gamme Chromatik). Déjà ça prend moins de place dans le carton et sur le bureau, mais surtout, on peut l'utiliser naturellement sans avoir besoin d'un support qui tourne. (Même si c'est toujours mieux avec).</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/img_0312.jpg"><img class="aligncenter size-new-size wp-image-88401" src="http://korben.info/wp-content/uploads/2017/07/img_0312-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/img_0312-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0312-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/img_0312-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0312-1024x768.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0312-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0312-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0312-1250x938.jpg 1250w, //korben.info/wp-content/uploads/2017/07/img_0312-400x300.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Avec la DiscoEasy, je me souviens aussi d'heures et d'heures de galère pour calibrer la machine et là, miracle ça se fait sans douleur. En effet, la Neva s'autocalibre et allant repérer les 4 coins du plateau, ce qui change la vie.</p>
<p>C'est d'ailleurs la première fois que je vois une imprimante 3D aussi rapide et simple à mettre en service. Je l'ai sorti du carton, j'ai connecté les bras aimantés et la tête aux aimants. J'ai mis le fichier de test (le fameux médaillon) sur la carte SD fournie, j'ai mis le PLA en place, j'ai allumé l'imprimante et c'était parti.</p>
<p>Ce qui est assez cool avec la Neva c'est que Dagoma a vraiment fait un gros effort pour réduire au minimum les trucs compliqués. Ils fournissent du fil, ils fournissent un adaptateur USB / Carte SD, ils fournissent la carte SD, ils fournissent une spatule pour décoller vos oeuvres et une fois qu'on a téléchargé Cura sur le site (en version spéciale Dagoma présentant le minimum d'options vitales), et bien il n'y qu'un seul bouton à appuyer sur l'imprimante pour tout faire !</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05.png"><img class="aligncenter size-new-size wp-image-87959" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-650x420.png" alt="" width="650" height="420" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-650x420.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-309x200.png 309w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-768x497.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-1024x662.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-475x307.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-230x150.png 230w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-165x108.png 165w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-750x485.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-1250x808.png 1250w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-06-33-05-400x259.png 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>D'ailleurs ce bouton parlons en. En gros, il permet :</p>
<ul>
<li dir="ltr">De démarrer et d'arrêter l'imprimante (normal quoi)</li>
<li dir="ltr">De lancer une impression</li>
<li>,Mais surtout de suspendre l'impression pour mettre en pause ou pour changer facilement le filament et imprimer en multicouleur</li>
</ul>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/img_0311.jpg"><img class="aligncenter size-new-size wp-image-88399" src="http://korben.info/wp-content/uploads/2017/07/img_0311-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/img_0311-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0311-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/img_0311-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0311-1024x768.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0311-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0311-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0311-1250x938.jpg 1250w, //korben.info/wp-content/uploads/2017/07/img_0311-400x300.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>En effet, pendant une impression, si on appuie dessus, la tête revient dans sa position initiale sans pour autant perdre son avancement dans l'impression.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02.png"><img class="aligncenter wp-image-87971 size-new-size" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-650x436.png" alt="" width="650" height="436" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-650x436.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-298x200.png 298w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-768x515.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-1024x686.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-475x318.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-360x240.png 360w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-295x197.png 295w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-750x503.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02-400x268.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-31-02.png 1170w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Et c'est à ce moment-là, en tapotant 2 fois sur le plateau qu'on peut par exemple changer le fil de l'imprimante, pour tenter une impression en plusieurs couleurs.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12.png"><img class="aligncenter size-new-size wp-image-87972" src="http://korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-650x173.png" alt="" width="650" height="173" srcset="//korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-650x173.png 650w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-768x204.png 768w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-1024x272.png 1024w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-475x126.png 475w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-750x199.png 750w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-1250x332.png 1250w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12-400x106.png 400w, //korben.info/wp-content/uploads/2017/07/capture-decran-2017-07-11-13-34-12.png 1424w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Notez que si l'imprimante arrive à court de fil, elle se met en pause exactement de la même manière pour que vous puissiez la réalimenter.</p>
<p>Et ça fonctionne plutôt bien.</p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/2017-07-28-09-21-32.jpg"><img class="aligncenter size-new-size wp-image-88373" src="http://korben.info/wp-content/uploads/2017/07/2017-07-28-09-21-32-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/2017-07-28-09-21-32.jpg 650w, //korben.info/wp-content/uploads/2017/07/2017-07-28-09-21-32-266x200.jpg 266w, //korben.info/wp-content/uploads/2017/07/2017-07-28-09-21-32-475x357.jpg 475w, //korben.info/wp-content/uploads/2017/07/2017-07-28-09-21-32-400x300.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p style="text-align: center;"><a href="http://korben.info/wp-content/uploads/2017/07/img_0307.jpg"><img class="aligncenter size-new-size wp-image-88402" src="http://korben.info/wp-content/uploads/2017/07/img_0307-650x488.jpg" alt="" width="650" height="488" srcset="//korben.info/wp-content/uploads/2017/07/img_0307-650x488.jpg 650w, //korben.info/wp-content/uploads/2017/07/img_0307-267x200.jpg 267w, //korben.info/wp-content/uploads/2017/07/img_0307-768x576.jpg 768w, //korben.info/wp-content/uploads/2017/07/img_0307-1024x768.jpg 1024w, //korben.info/wp-content/uploads/2017/07/img_0307-475x356.jpg 475w, //korben.info/wp-content/uploads/2017/07/img_0307-750x563.jpg 750w, //korben.info/wp-content/uploads/2017/07/img_0307-1250x938.jpg 1250w, //korben.info/wp-content/uploads/2017/07/img_0307-400x300.jpg 400w" sizes="(max-width: 650px) 100vw, 650px" /></a></p>
<p>Pour conclure, je dirai que le mode ultra simplifié de la Neva perturbera surement les experts de l'impression 3D qui ont l'habitude de faire des tas de réglages et d'avoir des tas de boutons et de menus à leur disposition. Mais pour les débutants, c'est sans doute l'une des imprimantes 3D les plus simples que j'ai pu tester.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/test-imprimante-3d-neva-dagoma.html">Test de l&#8217;imprimante 3D Neva de Dagoma</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Quand j'ai vu la Neva pour la première fois, c'était lors de ma petite visite chez Dagoma. Elle était encore en phase de conception, donc je ne pouvais pas encore la tester. Mais ça y est, je l'ai depuis quelques semaines, et j'ai enfin trouvé un peu de temps pour m'y coller. Cette imprimante 3D <a class="read-more" href="https://korben.info/test-imprimante-3d-neva-dagoma.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/test-imprimante-3d-neva-dagoma.html">Test de l&#8217;imprimante 3D Neva de Dagoma</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://korben.info/?p=88403
title: Edito du 28/07/2017
author: Korben
url: https://korben.info/edito-du-28072017.html
feedurl: https://korben.info/feed
content:
<p>Salut la compagnie,</p>
<p>Alors comment ça se passe ? En vacances ?</p>
<p>En ce qui me concerne, je vais prendre un peu de repos bien mérité, continuer à bosser sur mon nouveau potager en permaculture dans le jardin, bouquiner tout plein, ranger un peu la baraque et surtout mon bureau, tondre la pelouse, améliorer mes scores sur Mario Kart, profiter de ma mini piscine, imprimer des trucs en 3D, finir de configurer mon nouvel ordi que j'ai mis 2 mois à obtenir (une histoire de dingue), observer le split Bitcoin en mode popcorn, et continuer à dévorer la série Ozark et d'autres sur Netflix. Puis bien sûr, se balader un peu en famille et profiter du soleil.</p>
<p>Tout un programme de ressourcement obligatoire qui pourra se réaliser uniquement si je coupe tous mes emails, tous mes réseaux sociaux et mon téléphone. Je vais donc appliquer dès ce week-end, <a href="https://korben.info/28-jours-plus-tard.html">le même régime que l'année dernière</a>. Alors bien sûr vous vous en doutez, c'est encore la course, car je dois boucler toutes mes tâches en cours, mais ça vaut le coup ! Et ne vous inquiétez pas, je vous ai préparé des articles programmés pour tout le mois d'août histoire de ne pas vous laisser tomber. Je suis sympa non ?</p>
<p>Je me suis même rédigé une todo list pour la rentrée, je ne vous raconte pas comment je ne suis pas pressé de la redécouvrir en septembre. Ça va être ultra violent.</p>
<p>Bref, en attendant, prenez soin de vous et à très bientôt !</p>
<p>K.</p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/edito-du-28072017.html">Edito du 28/07/2017</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>
<hr><p>Salut la compagnie, Alors comment ça se passe ? En vacances ? En ce qui me concerne, je vais prendre un peu de repos bien mérité, continuer à bosser sur mon nouveau potager en permaculture dans le jardin, bouquiner tout plein, ranger un peu la baraque et surtout mon bureau, tondre la pelouse, améliorer mes scores <a class="read-more" href="https://korben.info/edito-du-28072017.html">> Lire la suite</a></p>
<p>Cet article merveilleux et sans aucun égal intitulé : <a rel="nofollow" href="https://korben.info/edito-du-28072017.html">Edito du 28/07/2017</a> ; a été publié sur <a rel="nofollow" href="https://korben.info">Korben</a>, le seul site qui t'aime plus fort que tes parents.</p>


guid: http://disturb.io/?p=619
title: Quand le numérique devient totalitaire
author: admin
url: http://disturb.io/totalitarisme-numerique/
feedurl: http://disturb.io/feed/
content:
<p>[source] https://blog.monolecte.fr/2017/05/21/totalitarisme-numerique/ [/source]<br />
[image] https://blog.monolecte.fr/wp-content/uploads/2017/05/2074270_0211898928870_web_tete.jpg,https://blog.monolecte.fr/wp-content/uploads/2017/05/2074270_0211898928870_web_tete-180&#215;180.jpg,https://secure.gravatar.com/avatar/e76abb3d0c81e33d5612cd7881f70337?s=60&amp;d=mm&amp;r=g,https://secure.gravatar.com/avatar/e5d340241f463c87fbf1395cdd0dc526?s=60&amp;d=mm&amp;r=g [/image]<br />
[description] Mon père devient dépendant. C&rsquo;est normal, me direz-vous : il doit être vieux, à son âge, il a du mal à arquer, il n&rsquo;est plus aussi vif, ce genre de choses. Sauf qu&rsquo;il est encore très autonome : il s&rsquo;occupe de ses problèmes domestiques tout seul depuis pratiquement ma naissance, il continue à aller tous &#8230; [/description]<br />
[author] Le Monolecte [/author]</p>
<hr>[source] https://blog.monolecte.fr/2017/05/21/totalitarisme-numerique/ [/source] [image] https://blog.monolecte.fr/wp-content/uploads/2017/05/2074270_0211898928870_web_tete.jpg,https://blog.monolecte.fr/wp-content/uploads/2017/05/2074270_0211898928870_web_tete-180&#215;180.jpg,https://secure.gravatar.com/avatar/e76abb3d0c81e33d5612cd7881f70337?s=60&#38;d=mm&#38;r=g,https://secure.gravatar.com/avatar/e5d340241f463c87fbf1395cdd0dc526?s=60&#38;d=mm&#38;r=g [/image] [description] Mon père devient dépendant. C&#8217;est normal, me direz-vous : il doit être vieux, à son âge, il a du mal à arquer, il n&#8217;est plus aussi vif, ce genre de choses. Sauf qu&#8217;il est encore très autonome : il s&#8217;occupe de ses problèmes domestiques tout seul depuis pratiquement &#8230; <a href="http://disturb.io/totalitarisme-numerique/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;Quand le numérique devient totalitaire&#160;&#187;</span></a>


guid: http://disturb.io/?p=622
title: Revitaliser les commerces de centre-ville : en finir avec le « no parking, no business »
author: admin
feedurl: http://disturb.io/feed/
url:
http://disturb.io/revitaliser-les-commerces-de-centre-ville-en-finir-avec-le-no-parking-no-business/

content:
<p>[source] http://theconversation.com/revitaliser-les-commerces-de-centre-ville-en-finir-avec-le-no-parking-no-business-73177 [/source]<br />
[image] https://cdn.theconversation.com/files/158905/width1356x668/image-20170301-5529-1nu9aoa.jpg,https://cdn.theconversation.com/files/158903/width754/image-20170301-5492-ifaewr.jpg,https://cdn.theconversation.com/files/158904/width754/image-20170301-5494-14xm7kt.jpg,https://cdn.theconversation.com/institutions/2573/logos/width170_logo-1460983323.jpg,https://cdn.theconversation.com/partners/941/logos/width170_logo-1492513874.jpg [/image]<br />
[description] Les habitants souhaitent se garer au pied de chez eux mais ne veulent pas de la voiture en ville. De même, les commerçants souhaitent que l&rsquo;on offre des places de stationnement dans les centres-ville &#8211; sans quoi leurs clients ne viendraient pas &#8211; mais plaident pour plus de mobilités douces dans les centres urbains. [/description]<br />
[author] The Conversation [/author]</p>
<hr>[source] http://theconversation.com/revitaliser-les-commerces-de-centre-ville-en-finir-avec-le-no-parking-no-business-73177 [/source] [image] https://cdn.theconversation.com/files/158905/width1356x668/image-20170301-5529-1nu9aoa.jpg,https://cdn.theconversation.com/files/158903/width754/image-20170301-5492-ifaewr.jpg,https://cdn.theconversation.com/files/158904/width754/image-20170301-5494-14xm7kt.jpg,https://cdn.theconversation.com/institutions/2573/logos/width170_logo-1460983323.jpg,https://cdn.theconversation.com/partners/941/logos/width170_logo-1492513874.jpg [/image] [description] Les habitants souhaitent se garer au pied de chez eux mais ne veulent pas de la voiture en ville. De même, les commerçants souhaitent que l&#8217;on offre des places de stationnement dans les centres-ville &#8211; sans quoi leurs clients ne viendraient pas &#8211; mais plaident pour plus de &#8230; <a href="http://disturb.io/revitaliser-les-commerces-de-centre-ville-en-finir-avec-le-no-parking-no-business/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;Revitaliser les commerces de centre-ville : en finir avec le « no parking, no business »&#160;&#187;</span></a>


guid: http://disturb.io/?p=624
title: Non, l’abstention ne favorise pas le Front national
author: admin
url: http://disturb.io/non-labstention-ne-favorise-pas-le-front-national/
feedurl: http://disturb.io/feed/
content:
<p>[source] https://reporterre.net/Non-l-abstention-ne-favorise-pas-le-Front-national [/source]<br />
[image] https://reporterre.net/IMG/arton11738.jpg,https://reporterre.net/local/cache-vignettes/L720xH405/arton11738-e8060.jpg?1492668263,https://reporterre.net/IMG/jpg/voter_couv.jpg,https://reporterre.net/IMG/jpg/antoine_peillon_v_1-2.jpg,https://reporterre.net/local/cache-gd2/d6/56a9ee338eb517804324e86d71681d.jpg?1496902593 [/image]<br />
[description] L&rsquo;abstention ferait le lit du Front national. Cette antienne médiatique et de certains politiciens ne tient pas l&rsquo;analyse, selon l&rsquo;auteur de cette tribune. Qui assure que les partis dits  » de gouvernement  » sont les premiers responsables des  » déterminants  » du vote frontiste. Antoine Peillon est journaliste. [/description]<br />
[author] Reporterre, le quotidien de l &lsquo;écologie [/author]</p>
<hr>[source] https://reporterre.net/Non-l-abstention-ne-favorise-pas-le-Front-national [/source] [image] https://reporterre.net/IMG/arton11738.jpg,https://reporterre.net/local/cache-vignettes/L720xH405/arton11738-e8060.jpg?1492668263,https://reporterre.net/IMG/jpg/voter_couv.jpg,https://reporterre.net/IMG/jpg/antoine_peillon_v_1-2.jpg,https://reporterre.net/local/cache-gd2/d6/56a9ee338eb517804324e86d71681d.jpg?1496902593 [/image] [description] L&#8217;abstention ferait le lit du Front national. Cette antienne médiatique et de certains politiciens ne tient pas l&#8217;analyse, selon l&#8217;auteur de cette tribune. Qui assure que les partis dits  » de gouvernement  » sont les premiers responsables des  » déterminants  » du vote frontiste. Antoine Peillon est journaliste. &#8230; <a href="http://disturb.io/non-labstention-ne-favorise-pas-le-front-national/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;Non, l’abstention ne favorise pas le Front national&#160;&#187;</span></a>


guid: http://disturb.io/?p=626
author: admin
feedurl: http://disturb.io/feed/
title:
Monique Pinçon-Charlot : « Nous sommes face à une classe sociale puissante et mobilisée pour défendre ses intérêts »

url:
http://disturb.io/monique-pincon-charlot-nous-sommes-face-a-une-classe-sociale-puissante-et-mobilisee-pour-defendre-ses-interets/

content:
<p>[source] https://comptoir.org/2017/05/12/monique-pincon-charlot-nous-sommes-face-a-une-classe-sociale-puissante-et-mobilisee-pour-defendre-ses-interets/ [/source]<br />
[image] https://comptoirdotorg.files.wordpress.com/2017/05/mpc2.jpg?w=1200,https://comptoirdotorg.files.wordpress.com/2017/05/france-insoumise-phi.jpg?w=1024&#038;h=512,https://comptoirdotorg.files.wordpress.com/2017/05/pierre_bourdieu_painted_portrait_ddc_8931.jpg?w=1024&#038;h=685,https://comptoirdotorg.files.wordpress.com/2017/05/mpc.jpg?w=300&#038;h=219,https://1.gravatar.com/avatar/d1b15160d9b9ec9f73a753fd823e848c?s=48&#038;d=wavatar&#038;r=G [/image]<br />
[description] Avec près de trente ans de travaux sur la grande bourgeoisie au compteur, Monique Pinçon-Charlot et Michel Pinçon sont des références en la matière. Mœurs, éducation, stratégies de préservation des privilèges&#8230; Les riches n&rsquo;ont plus de secrets pour eux ! Après leur départ du CNRS en 2007, les sociologues passent des sciences humaines au militantisme. [/description]<br />
[author] Le Comptoir [/author]</p>
<hr>[source] https://comptoir.org/2017/05/12/monique-pincon-charlot-nous-sommes-face-a-une-classe-sociale-puissante-et-mobilisee-pour-defendre-ses-interets/ [/source] [image] https://comptoirdotorg.files.wordpress.com/2017/05/mpc2.jpg?w=1200,https://comptoirdotorg.files.wordpress.com/2017/05/france-insoumise-phi.jpg?w=1024&#038;h=512,https://comptoirdotorg.files.wordpress.com/2017/05/pierre_bourdieu_painted_portrait_ddc_8931.jpg?w=1024&#038;h=685,https://comptoirdotorg.files.wordpress.com/2017/05/mpc.jpg?w=300&#038;h=219,https://1.gravatar.com/avatar/d1b15160d9b9ec9f73a753fd823e848c?s=48&#038;d=wavatar&#038;r=G [/image] [description] Avec près de trente ans de travaux sur la grande bourgeoisie au compteur, Monique Pinçon-Charlot et Michel Pinçon sont des références en la matière. Mœurs, éducation, stratégies de préservation des privilèges&#8230; Les riches n&#8217;ont plus de secrets pour eux ! Après leur départ du CNRS en 2007, les &#8230; <a href="http://disturb.io/monique-pincon-charlot-nous-sommes-face-a-une-classe-sociale-puissante-et-mobilisee-pour-defendre-ses-interets/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;Monique Pinçon-Charlot : « Nous sommes face à une classe sociale puissante et mobilisée pour défendre ses intérêts »&#160;&#187;</span></a>


guid: http://disturb.io/?p=628
title: Au Maroc, l’amour est un sport de combat
author: admin
url: http://disturb.io/au-maroc-lamour-est-un-sport-de-combat/
feedurl: http://disturb.io/feed/
content:
<p>[source] http://www.lemonde.fr/m-actu/article/2017/05/19/au-maroc-l-amour-est-un-sport-de-combat_5130521_4497186.html [/source]<br />
[image] http://s1.lemde.fr/image/2017/05/19/644&#215;322/5130515_3_3c7f_a-casablanca-la-corniche-est-l-un-des-lieux-d_91ad4589067a28bbb9bea147700755e5.jpg,http://s1.lemde.fr/image/2017/05/19/92&#215;61/5130515_7_800a_a-casablanca-la-corniche-est-l-un-des-lieux_820963f453b4915fa810498ed9679249.jpg [/image]<br />
[description] Des jeunes filles arrêtées pour un baiser, un documentaire sur les couples jugé scandaleux&#8230; Ces derniers mois, le Maroc a donné l&rsquo;impression de se raidir sur les mœurs. Mais les coups de boutoir des jeunes citadins desserrent peu à peu l&rsquo;étau. [/description]<br />
[author] Le Monde.fr [/author]</p>
<hr>[source] http://www.lemonde.fr/m-actu/article/2017/05/19/au-maroc-l-amour-est-un-sport-de-combat_5130521_4497186.html [/source] [image] http://s1.lemde.fr/image/2017/05/19/644&#215;322/5130515_3_3c7f_a-casablanca-la-corniche-est-l-un-des-lieux-d_91ad4589067a28bbb9bea147700755e5.jpg,http://s1.lemde.fr/image/2017/05/19/92&#215;61/5130515_7_800a_a-casablanca-la-corniche-est-l-un-des-lieux_820963f453b4915fa810498ed9679249.jpg [/image] [description] Des jeunes filles arrêtées pour un baiser, un documentaire sur les couples jugé scandaleux&#8230; Ces derniers mois, le Maroc a donné l&#8217;impression de se raidir sur les mœurs. Mais les coups de boutoir des jeunes citadins desserrent peu à peu l&#8217;étau. [/description] [author] Le Monde.fr [/author]


guid: http://disturb.io/?p=630
author: admin
feedurl: http://disturb.io/feed/
title:
Douleurs, blessures, stress, les ouvriers de Tesla racontent : « tout ressemble au futur, sauf nous » (en anglais)

url:
http://disturb.io/douleurs-blessures-stress-les-ouvriers-de-tesla-racontent-tout-ressemble-au-futur-sauf-nous-en-anglais/

content:
<p>[source] https://www.theguardian.com/technology/2017/may/18/tesla-workers-factory-conditions-elon-musk [/source]<br />
[image] https://i.guim.co.uk/img/media/679ea5eea140f360bd00378dc0e0a8663af06df1/0_147_7470_4481/master/7470.jpg?w=1200&#038;h=630&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=crop&#038;crop=faces%2Centropy&#038;bm=normal&#038;ba=bottom%2Cleft&#038;blend64=aHR0cHM6Ly91cGxvYWRzLmd1aW0uY28udWsvMjAxNi8wNS8yNS9vdmVybGF5LWxvZ28tMTIwMC05MF9vcHQucG5n&#038;s=09b1e55745387fdc74e388ad20a55cfc,https://i.guim.co.uk/img/media/f6ec064bde596fe314c827115c1804d6034b27dd/0_147_4462_2677/master/4462.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=e35cb3675a6223aae0ea96b9a59443ac,https://i.guim.co.uk/img/media/f17c375a2899cd250bfe9d67070025882c3ad494/0_384_5760_3456/master/5760.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=2332b22387cdfb87d32f7c11180eec60,https://i.guim.co.uk/img/media/eb14ddfb1a2aed8c7f283653e4c58631d95aa15e/0_237_4423_2655/master/4423.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=3c85557cc94ee3bf1d87a6bdc1c07476,https://i.guim.co.uk/img/media/41146ba81e307bb64257e890d9a5cc69a1a5bbbe/0_59_4032_2419/master/4032.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=4174d64a6c63460cf0d4171e88509b7f [/image]<br />
[description] When Tesla bought a decommissioned car factory in Fremont, California, Elon Musk transformed the old-fashioned, unionized plant into a much-vaunted « factory of the future », where giant robots named after X-Men shape and fold sheets of metal inside a gleaming white mecca of advanced manufacturing. [/description]<br />
[author] the Guardian [/author]</p>
<hr>[source] https://www.theguardian.com/technology/2017/may/18/tesla-workers-factory-conditions-elon-musk [/source] [image] https://i.guim.co.uk/img/media/679ea5eea140f360bd00378dc0e0a8663af06df1/0_147_7470_4481/master/7470.jpg?w=1200&#038;h=630&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=crop&#038;crop=faces%2Centropy&#038;bm=normal&#038;ba=bottom%2Cleft&#038;blend64=aHR0cHM6Ly91cGxvYWRzLmd1aW0uY28udWsvMjAxNi8wNS8yNS9vdmVybGF5LWxvZ28tMTIwMC05MF9vcHQucG5n&#038;s=09b1e55745387fdc74e388ad20a55cfc,https://i.guim.co.uk/img/media/f6ec064bde596fe314c827115c1804d6034b27dd/0_147_4462_2677/master/4462.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=e35cb3675a6223aae0ea96b9a59443ac,https://i.guim.co.uk/img/media/f17c375a2899cd250bfe9d67070025882c3ad494/0_384_5760_3456/master/5760.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=2332b22387cdfb87d32f7c11180eec60,https://i.guim.co.uk/img/media/eb14ddfb1a2aed8c7f283653e4c58631d95aa15e/0_237_4423_2655/master/4423.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=3c85557cc94ee3bf1d87a6bdc1c07476,https://i.guim.co.uk/img/media/41146ba81e307bb64257e890d9a5cc69a1a5bbbe/0_59_4032_2419/master/4032.jpg?w=300&#038;q=55&#038;auto=format&#038;usm=12&#038;fit=max&#038;s=4174d64a6c63460cf0d4171e88509b7f [/image] [description] When Tesla bought a decommissioned car factory in Fremont, California, Elon Musk transformed the old-fashioned, unionized plant into a much-vaunted « factory of the future », where giant robots named after X-Men shape and fold sheets of metal inside a gleaming white mecca of advanced manufacturing. [/description] [author] the Guardian &#8230; <a href="http://disturb.io/douleurs-blessures-stress-les-ouvriers-de-tesla-racontent-tout-ressemble-au-futur-sauf-nous-en-anglais/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;Douleurs, blessures, stress, les ouvriers de Tesla racontent : « tout ressemble au futur, sauf nous » (en anglais)&#160;&#187;</span></a>


guid: http://disturb.io/?p=632
title: « Les défenseurs de la viande vont devenir des punks de droite »
author: admin
url: http://disturb.io/les-defenseurs-de-la-viande-vont-devenir-des-punks-de-droite/
feedurl: http://disturb.io/feed/
content:
<p>[source] https://m.usbeketrica.com/article/les-defenseurs-de-la-viande-vont-devenir-des-punks-de-droite [/source]<br />
[image] https://static.usbeketrica.com/images/thumb_840xh/591ecb3af0be8.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591eacaaed4fd.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591ecfdc7e78a.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591eb5767d7f5.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591ecf7f87cbc.jpg [/image]<br />
[description] Annabelle Laurent Les steaks de soja déferlent sur les rayonnages des supermarchés. Les restaurants revoient leur carte. Les végétariens convertis en convainquent d&rsquo;autres, et la minorité grossit. Pour Théo Ribeton, l&rsquo;auteur de V comme Vegan , paru en avril aux éditions Nova, c&rsquo;est entendu : le monde est en train de devenir vegan. [/description]<br />
[author] Usbeketrica [/author]</p>
<hr>[source] https://m.usbeketrica.com/article/les-defenseurs-de-la-viande-vont-devenir-des-punks-de-droite [/source] [image] https://static.usbeketrica.com/images/thumb_840xh/591ecb3af0be8.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591eacaaed4fd.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591ecfdc7e78a.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591eb5767d7f5.jpg,https://s3-eu-west-1.amazonaws.com/usb-prd-upload/images/thumb_700xh/591ecf7f87cbc.jpg [/image] [description] Annabelle Laurent Les steaks de soja déferlent sur les rayonnages des supermarchés. Les restaurants revoient leur carte. Les végétariens convertis en convainquent d&#8217;autres, et la minorité grossit. Pour Théo Ribeton, l&#8217;auteur de V comme Vegan , paru en avril aux éditions Nova, c&#8217;est entendu : le monde est &#8230; <a href="http://disturb.io/les-defenseurs-de-la-viande-vont-devenir-des-punks-de-droite/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;« Les défenseurs de la viande vont devenir des punks de droite »&#160;&#187;</span></a>


guid: http://disturb.io/?p=636
title: « Les voitures causent la grande majorité des accidents de vélo. La loi devrait le refléter. »
author: admin
url: http://disturb.io/cars-overwhelmingly-cause-bike-collisions-and-the-law-should-reflect-that/
feedurl: http://disturb.io/feed/
content:
<p>[source] http://theconversation.com/cars-overwhelmingly-cause-bike-collisions-and-the-law-should-reflect-that-78922 [/source]<br />
[image] https://cdn.theconversation.com/files/173532/width1356x668/file-20170613-10249-lehux9.jpg,https://cdn.theconversation.com/files/172671/width754/file-20170607-11311-14wuse7.jpg,https://cdn.theconversation.com/files/173532/wide_article/width1356x668/7cv36jnt-1497331127.jpg,https://cdn.theconversation.com/partners/584/logos/width170_logo-1485907855.jpg,http://theconversation.com/assets/author/width170_default-435a60c149a66bb53fa6570cebed17a466fba5c879aae3a6ef88f2629ea05001.jpg [/image]<br />
[description] On a Thursday morning in June 1817, the prolific inventor Karl Drais took his Laufmaschine (running machine) for a 13km spin along the banks of the Rhine. The voyage on the wooden bike, not dissimilar to a modern toddler&rsquo;s balance bike, lasted just under an hour. [/description]<br />
[author] The Conversation [/author]</p>
<hr>[source] http://theconversation.com/cars-overwhelmingly-cause-bike-collisions-and-the-law-should-reflect-that-78922 [/source] [image] https://cdn.theconversation.com/files/173532/width1356x668/file-20170613-10249-lehux9.jpg,https://cdn.theconversation.com/files/172671/width754/file-20170607-11311-14wuse7.jpg,https://cdn.theconversation.com/files/173532/wide_article/width1356x668/7cv36jnt-1497331127.jpg,https://cdn.theconversation.com/partners/584/logos/width170_logo-1485907855.jpg,http://theconversation.com/assets/author/width170_default-435a60c149a66bb53fa6570cebed17a466fba5c879aae3a6ef88f2629ea05001.jpg [/image] [description] On a Thursday morning in June 1817, the prolific inventor Karl Drais took his Laufmaschine (running machine) for a 13km spin along the banks of the Rhine. The voyage on the wooden bike, not dissimilar to a modern toddler&#8217;s balance bike, lasted just under an hour. [/description] [author] &#8230; <a href="http://disturb.io/cars-overwhelmingly-cause-bike-collisions-and-the-law-should-reflect-that/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;« Les voitures causent la grande majorité des accidents de vélo. La loi devrait le refléter. »&#160;&#187;</span></a>


guid: http://disturb.io/?p=640
title: Cannabis : un marché de 70 milliards de dollars aux Etats-Unis en 2021 ?
author: admin
url: http://disturb.io/cannabis-un-marche-de-70-milliards-de-dollars-aux-etats-unis-en-2021/
feedurl: http://disturb.io/feed/
content:
<p>[source] http://www.latribune.fr/economie/international/cannabis-un-marche-de-70-milliards-de-dollars-aux-etats-unis-en-2021-740170.html [/source]<br />
[image] https://static.latribune.fr/full_width/580090/un-travailleur-recolte-des-plants-de-cannabis-dans-une-plantation-au-nord-de-l-israel-a-nazareth-le-28-mai-2013.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/744586/optimiste-comme-jamais.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/745353/france-le-climat-des-affaires-au-plus-haut-depuis-juillet-2011.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/744028/philippe-les-clauses-de-licenciement-en-discussion.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/739525/la-ministre-du-travail-attenue-sa-plainte-sur-les-fuites.jpg [/image]<br />
[description] Un véritable effet boule de neige. L&rsquo;impact de la légalisation du cannabis sur l&rsquo;économie américaine se chiffre, pour l&rsquo;année 2016, entre 16 et 18 milliards de dollars. En 2017, l&rsquo;impact pourrait atteindre 26,8 à 35,2 milliards de dollars et à l&rsquo;horizon 2021, il pourrait même grimper jusqu&rsquo;à 68,4 milliards de dollars, selon la fourchette haute des estimations réalisées par Marijuana Business Daily . [/description]<br />
[author] La Tribune [/author]</p>
<hr>[source] http://www.latribune.fr/economie/international/cannabis-un-marche-de-70-milliards-de-dollars-aux-etats-unis-en-2021-740170.html [/source] [image] https://static.latribune.fr/full_width/580090/un-travailleur-recolte-des-plants-de-cannabis-dans-une-plantation-au-nord-de-l-israel-a-nazareth-le-28-mai-2013.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/744586/optimiste-comme-jamais.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/745353/france-le-climat-des-affaires-au-plus-haut-depuis-juillet-2011.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/744028/philippe-les-clauses-de-licenciement-en-discussion.jpg,https://static.latribune.fr/supermaxlittle_riverlittle_new/739525/la-ministre-du-travail-attenue-sa-plainte-sur-les-fuites.jpg [/image] [description] Un véritable effet boule de neige. L&#8217;impact de la légalisation du cannabis sur l&#8217;économie américaine se chiffre, pour l&#8217;année 2016, entre 16 et 18 milliards de dollars. En 2017, l&#8217;impact pourrait atteindre 26,8 à 35,2 milliards de dollars et à l&#8217;horizon 2021, il pourrait même grimper jusqu&#8217;à 68,4 &#8230; <a href="http://disturb.io/cannabis-un-marche-de-70-milliards-de-dollars-aux-etats-unis-en-2021/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;Cannabis : un marché de 70 milliards de dollars aux Etats-Unis en 2021 ?&#160;&#187;</span></a>


guid: http://disturb.io/?p=642
title: L’Islande va effacer une partie de la dette des ménages
author: admin
url: http://disturb.io/lislande-va-effacer-une-partie-de-la-dette-des-menages/
feedurl: http://disturb.io/feed/
content:
<p>[source] http://www.latribune.fr/actualites/economie/union-europeenne/20131202trib000798843/l-islande-va-effacer-une-partie-de-la-dette-des-menages.html [/source]<br />
[image] https://static.latribune.fr/full_width/156849/l-islande-sur-le-podium.jpg [/image]<br />
[description] L&rsquo;Islande continue à tracer sa propre voie hors de la crise. Avec des moyens toujours plus hétérodoxes. On se souvient que le pays, frappé en 2008 par une crise financière d&rsquo;une ampleur sans précédent, avait mené une politique impitoyable contre les banques et s&rsquo;était appuyé sur une dépréciation de près de 20 % de la couronne pour retrouver plus rapidement la croissance. [/description]<br />
[author] La Tribune [/author]</p>
<hr>[source] http://www.latribune.fr/actualites/economie/union-europeenne/20131202trib000798843/l-islande-va-effacer-une-partie-de-la-dette-des-menages.html [/source] [image] https://static.latribune.fr/full_width/156849/l-islande-sur-le-podium.jpg [/image] [description] L&#8217;Islande continue à tracer sa propre voie hors de la crise. Avec des moyens toujours plus hétérodoxes. On se souvient que le pays, frappé en 2008 par une crise financière d&#8217;une ampleur sans précédent, avait mené une politique impitoyable contre les banques et s&#8217;était appuyé sur une dépréciation &#8230; <a href="http://disturb.io/lislande-va-effacer-une-partie-de-la-dette-des-menages/" class="more-link">Continuer la lecture<span class="screen-reader-text"> de &#171;&#160;L&#8217;Islande va effacer une partie de la dette des ménages&#160;&#187;</span></a>


guid: https://blog.genma.fr/?Mais-je-suis-une-femme
title: Mais je suis une femme
author: Genma
url: https://blog.genma.fr/?Mais-je-suis-une-femme
feedurl: https://blog.genma.fr/spip.php?page=backend
content:
<img class='spip_logo spip_logo_right spip_logos' alt="" style='float:right' src='https://blog.genma.fr/IMG/arton2665.jpg?1497717191' width='150' height='79' />
		<div class='rss_texte'><p>Cette fois, c'est à Norore, une amie, que je laisserai la parole pour un long billet qui, je l'espère, sensibilisera mon lectorat à des problématiques qui me sont chères.</p>
<p><strong>Je suis : scientifique, geek, gamer, bricolo, habile, touche-à-tout</strong></p>
<p>Mais je suis une femme... De ce fait, je subis quotidiennement des attaques sur mon genre. Quel que soit le milieu que je fréquente ou l'activité que j'effectue. Souvent de façon inconsciente, du moins je l'espère.</p>
<p><strong>Le milieu professionnel</strong></p>
<p>Le milieu professionnel, quel qu'il soit, peut vite devenir anxiogène pour une femme. Dans mon milieu, les sciences, c'est souvent plus évasif qu'explicite. Les hommes sont plus souvent mis en avant, la plupart des personnes dirigeant des recherches sont des hommes, les postes à haute responsabilité sont également plus facilement assignés à des hommes. Les tâches plus « ingrâtes » sont donc le plus souvent effectuées par des femmes : administration, technique de laboratoire. Bien que l'Institut dans lequel je travaille soit plus varié, il n'en demeure pas moins que certains comportements, certaines réactions, font ressentir cette pression patriarcale.</p>
<p>Les femmes entre elles ne sont pas forcément solidaires non plus. Par expérience, pour l'avoir vu, pour en avoir eu des échos variés, pour l'avoir vécu, et pour l'avoir lu au cours de mes différentes lectures sur les internets, certaines femmes n'hésiteront pas à vous lâcher une fois qu'elles vous auront bien aidé à vous mettre dans l'embarras. Tout simplement pour en ressortir plus grandes, pour se valoriser auprès de leurs pairs. Tout bonnement pour pouvoir un jour briguer un poste « d'homme ».</p>
<p>Mais ceci ne s'arrête pas aux sciences, il est observé dans tous les domaines. Dans les arts, chez les professeurs des écoles, dans les hôpitaux, dans les restaurants...</p>
<p>Regardez dans les formations qui sont proposées : on parle toujours d'écoles d'infirmières ou de sage-femme. Or il y a des hommes infirmiers et des hommes sage-femme. Alors certes, le métier de « sage-femme » a longtemps été exercé par des femmes, mais ce n'est plus le cas depuis 1982, où la profession s'est ouverte aux hommes. Si vous êtes une femme et que vous êtes enceinte, vous pourriez donc très bien être suivie par un homme.</p>
<p>Lorsque vous allez au restaurant, si vous pouvez les voir, regardez les cuisines. Essayez de vous rappeler la dernière fois que vous avez vu une femme avec une toque de chef. Très peu de femmes ont la chance de devenir cheffe, pour la raison fallacieuse qu'elles n'ont pas les épaules pour gérer une brigade.</p>
<p>Difficile donc, lorsque l'on est une femme, de considérer sereinement un avenir professionnel sans faire attention à chacun de ses pas, encore plus que pour les hommes j'imagine.</p>
<p>Quelques références :
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://passeurdesciences.blog.lemonde.fr/2013/12/22/de-graves-inegalites-hommes-femmes-dans-la-recherche-mondiale/" title="De graves inégalité hommes-femmes dans la recherche mondiale">De graves inégalité hommes-femmes dans la recherche mondiale</a> - Passeur de Sciences, 22 Décembre 2013, par Pierre Barthélémy
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.cidj.com/metiers-d-homme-metiers-de-femme-halte-aux-prejuges/sage-femme-un-metier-qui-attire-peu-les-hommes" title="Sage-femme, un métier qui attire peu les hommes">Sage-femme, un métier qui attire peu les hommes</a>- CIDJ, Avril 2016, par Valérie François
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.leparisien.fr/magazine/grand-angle/gastronomie-la-revanche-des-femmes-chefs-06-11-2012-2296807.php" title="Gastronomie : la revanche des femmes chefs">Gastronomie : la revanche des femmes chefs</a> - Le Parisien, 6 Novembre 2012, par Rachelle Lemoine</p>
<p><strong>Le milieu geek</strong></p>
<p>Comme indiqué dans le titre, je suis une geek, et j'aime les jeux vidéos même si je n'ai pas tout le temps libre que je souhaite ni les moyens pour en profiter autant que je le voudrai. Je me réjouis de voir de plus en plus de femmes se tourner vers l'informatique et les activités vidéo-ludiques mais, là aussi, les choses ne sont pas si simples.</p>
<p><strong>Côté informatique</strong></p>
<p>« Les femmes n'y connaissent rien à l'informatique ! » Moui, et les hommes ne savent pas changer une couche. Moi non plus d'ailleurs, n'ayant jamais eu à le faire.</p>
<p>Juste pour un petit rappel historique, le premier programmeur informatique était... Lady Ada Lovelace. Une femme donc. Désolée messieurs, mais non, vous n'avez pas la primeur sur ce coup là ! Jusqu'à récemment également, les femmes occupaient les postes de programmeurs informatiques, tout simplement parce que les hommes considéraient que cela s'apparentait à du travail de secrétariat. Une tâche ingrate, en somme. Jusqu'au jour où ils se sont rendus compte que programmer, ben c'est super cool en fait. Donc, au revoir mesdames, merci et à la revoyure, vous pouvez retourner à la cuisine (dont elles ne seront que rarement cheffe, rappelez-vous !).</p>
<p>Vous comprendrez donc que cela m'énerve et me gonfle légèrement lorsque je me rend à une install-party et que l'on me sort « vous vous y connaissez beaucoup en informatique, c'est rare pour une femme ! » ou d'autres clichés du même genre. Alors, oui, je suis une femme, oui, je m'y connais en informatique, mais non, ce n'est ni rare ni exceptionnel. Merci de ne pas nous prendre pour des enfants, incapables de faire deux pas sans tomber si vous nous lâchez la main.</p>
<p>Malheureusement, nous sommes dans une telle culture patriarcale que, même là, une part importante de femmes contribuant au développement de l'informatique sont passées sous silence. Vous voulez un exemple important d'une femme informaticienne qui a permis à l'humanité de faire de grandes avancées ? Margaret Hamilton, ancienne directrice du département génie logiciel du MIT. Elle a « juste » développé le système embarqué d'Apollo 11. Oui, une femme. Une « faible femme » a permis aux ingénieurs de la NASA de faire décoller une fusée de plusieurs tonnes. Si ce nom vous évoque quelque chose, c'est tout simplement parce que les journaux ont parlé d'elle en 2016, lors de sa remise de la Médaille présidentielle de la Liberté, une distinction états-unienne.</p>
<p>Quelques références :
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="https://femmessavantes2.pressbooks.com/chapter/ada-lovelace-mathematicienne-1815-1852/" title="Ada Lovelace, mathématicienne (1815-1852)">Ada Lovelace, mathématicienne (1815-1852)</a> - Femmes savantes, femmes de sciences
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="https://linuxfr.org/news/les-femmes-dans-l-informatique#la-transmutation-des-maths-en-info" title="Les femmes dans l'informatique, section *La transmutation des maths en info...*">Les femmes dans l'informatique, section *La transmutation des maths en info...*</a> - LinuxFr.org, 8 Mars 2014, par paralax
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="https://www.wikiwand.com/fr/Margaret_Hamilton_(scientifique)" title="Margaret Hamilton">Margaret Hamilton</a> - Wikipédia</p>
<p><strong>Côté jeux vidéos</strong></p>
<p>Autant j'aime jouer aux jeux-vidéos, me laisser transporter dans l'histoire et détrousser mes proies après les avoir affronté avec plus ou moins de difficulté, me demander comment les différentes équipes s'y sont prises tout le long du processus de création, autant je connais peu ce milieu. Pourtant force m'a été de constater que les femmes y sont peu présentent, bien que cela soit de moins en moins vrai, elles commencent même à être connues pour certaines. Malheureusement, bien souvent, nous n'apprenons leur existence que lorsqu'elles sont menacées par des « fans » mécontents. Je veux bien sûr parler d'une « histoire de trolls » qui a eu lieu il y a quelques mois suite à une mise à jour du jeu Mass Effect Andromeda. Sous prétexte que les joueurs n'étaient pas satisfaits d'une mise à jour graphique, et qu'une femme de l'équipe a été citée, à tort, comme directrice artistique dans un journal spécialisé, il s'en est suivi une avalanche d'insultes et de menaces physiques. On parle tout de même de menaces de viol et de mort ! Trouvez-vous normal d'insulter une personne, inconnue, voire de menacer son intégrité physique, sous prétexte que vous remettez en question ses choix et ses décisions ? Moi non.</p>
<p>Un autre aspect du monde du jeu vidéo qui me fait également avoir des étoiles dans les yeux, ce sont les conventions et les personnes qui font du cosplay. Je suis déjà allée à une convention de ce type, sur Bordeaux, avec un ami. L'ambiance était bon enfant, et j'ai été agréablement surprise de ne pas croiser trop de « boobs », à savoir des femmes en cosplay qui montrent bien leur poitrine, et aussi bien souvent le reste. J'ignore si c'est toujours le cas, mais pour avoir vu des photos de cosplay féminins, c'est malheureusement encore le cas. Je pense que les plus à même d'en témoigner sont les femmes du milieu professionnel et plus ou moins connues du grand public. Je ne citerai que deux noms, pour la France : Mar_Lard (bon, ok, elle travaille en Italie actuellement) et Kayané.</p>
<p>En conclusion, ceux que les journalistes qualifient régulièrement de trolls, dans certains milieux et certaines mesures, sont des harceleurs. Ni plus, ni moins.</p>
<p>Quelques références :
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.fredzone.org/mass-effect-andromeda-a-lair-de-plaire-aux-trolls-003" title="Mass Effect Andromeda a l'air de plaire aux trolls">Mass Effect Andromeda a l'air de plaire aux trolls</a> - Fredzone, 20 Mars 2017, par FRED
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="https://cafaitgenre.org/2013/03/16/sexisme-chez-les-geeks-pourquoi-notre-communaute-est-malade-et-comment-y-remedier/" title="Sexisme chez les geeks : Pourquoi notre communauté est malade, et comment y remédier">Sexisme chez les geeks : Pourquoi notre communauté est malade, et comment y remédier</a> - Ça fait genre, 16 Mars 2013, par Mar_Lard
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.melty.fr/sexisme-chez-les-gamers-les-gameuses-en-parlent-reportage-a206596.html" title="Sexisme chez les gamers : les gameuses en parlent">Sexisme chez les gamers : les gameuses en parlent</a> - Melty, 30 Août 2013, reportage</p>
<p><strong>Le cercle amical et/ou familial</strong></p>
<p>Parce que l'on ne choisit pas sa famille mais ses amis, il m'arrive de me prendre des réflexions que je juge déplacées, oppressantes, voire dirigistes et paternalistes, plus souvent de la part de ma famille que de mes amis. Célibataire endurcie, j'ai régulièrement droit à des réflexions sur le fait que je suis célibataire et que je n'ai pas d'enfant. Étrangement, ça semble être plus choquant d'être une femme seule sans enfant que d'être un homme dans la même situation. Ce genre de réflexion, teintée de bienveillance (non), saupoudré de « c'est parce qu'on t'aime et qu'on tient à toi que l'on t'embête avec ça ! », je l'ai régulièrement de la part de ma famille, plus rarement de la part de mes amies. Oui, amies avec un « e », j'ai constaté que, autant du côté familial c'est assez paritaire (ce qui est un exploit dans notre société patriarcale !), autant du côté amical ce sont plus souvent des femmes, de préférence en couple, avec ou sans enfant. Comme si l'accomplissement d'une femme, aussi moderne et indépendante soit-elle, ne peut se connaître qu'avec le bonheur d'être en couple, avec un homme de préférence, et avec une tribu d'enfants à élever et à gérer. Merci, mais non merci. Au moins les amies je peux les envoyer promener, ce qui n'est pas le cas avec la famille.</p>
<p>Premièrement, c'est ma vie privée et intime qui s'en retrouve jugée, épiée et analysée, deuxièmement, j'ai encore le droit de vivre ma vie comme je l'entends et d'en assumer mes choix. Deuxièmement, partir du principe que je suis forcément hétéro et intéressée par le fait d'avoir des enfants, c'est puant de patriarcat ! Qu'est-ce qui vous dit que je ne suis pas tout simplement homosexuelle et que, avec ce genre de climat, je n'ai juste pas le courage de faire mon coming-out ? Et bien il se trouve que je ne suis pas moi-même fixée sur ma sexualité, je me reconnais fortement dans la définition de l'asexualité. Ce coming-out, je l'ai fait sans m'en cacher auprès de certaines personnes. Les réflexions du genre « tu ne peux pas savoir si tu aimes ou non tant que tu n'as pas essayé ! », je les connais par cœur depuis bien avant que je ne fasse mon coming-out. Alors vos réflexions à l'emporte-pièce, vous serez bien gentils de vous les mettre où je pense ! De même que parmi vous certaines personnes savent qu'elles ne sont pas attirées par les personnes du même genre qu'elles, je sais que je ne suis pas forcément attirée par les rapports sexuels. Et ma libido va très bien, merci de vous soucier, encore une fois, de ma vie privée et intime. Il m'arrive, comme vous, de regarder du porno, d'avoir des attirances, mais ça ne va pas très loin en général et je m'en lasse vite.</p>
<p>Donc, foutez-la paix à vos filles, sœurs, nièces, cousines et amies avec leur vie intime et privée, contentez-vous de les apprécier telles qu'elles sont, elles ne s'en sentiront que mieux.</p>
<p>Quelques références :
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.lemonde.fr/m-perso/article/2014/11/25/le-couple-cette-norme-qui-culpabilise-les-celibataires_4528847_4497916.html" title="Le couple, cette norme qui culpabilise les célibataires">Le couple, cette norme qui culpabilise les célibataires</a> - Le Monde, 25 Novembre 2014, par Marléne Durez
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://madame.lefigaro.fr/societe/societe-pardonne-mal-celibat-40-ans-261113-631934" title="La société pardonne mal le célibat à 40 ans">La société pardonne mal le célibat à 40 ans</a>- Le Figaro Madame, 26 Novembre 2016, par Assma Maad
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.madmoizelle.com/asexualite-temoignages-croises-165164" title="L'asexualité, qu'est-ce que c'est ?">L'asexualité, qu'est-ce que c'est ?</a> - Madmoizelle, 10 Mai 2015, par Brigitte Lebuysson
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.madmoizelle.com/temoignage-femme-asexuelle-653491" title="Je suis asexuelle, et j'aimerais bien qu'on me foute la paix">Je suis asexuelle, et j'aimerais bien qu'on me foute la paix</a> - Madmoizelle, 29 Octobre 2016, témoignage, par Une madmoiZelle</p>
<p><strong>La société en général</strong></p>
<p>Même dans notre société actuelle, le patriarcat est toujours omni-présent. On ne peut pas faire un pas dehors sans qu'il nous vienne en pleine figure. C'est la journée internationale de lutte pour les droits des femmes ? Chic, faisons une promotion sur les aspirateurs et les fers à repasser ! C'est la fête des mères ? Ressortons les fers à repasser et les aspirateurs ! C'est la fin de l'année ? Vite, élisons une jeune femme tout juste sortie de l'adolescence pour en faire une miss, on en profitera pour se rincer l'œil en toute impunité ! C'est la fashion week ? Vite, il faut exposer nos créations sur des femmes dénutries et poussées à l'anorexie pour porter notre nouvelle collection !</p>
<p>Où que j'aille, mes yeux sont agressés par des photos de femmes anorexiques, au visage éteint, et de préférence les cuisses bien écartées. Il n'y a vraiment rien qui vous choque là-dedans ? Moi si, et ça me met profondément mal à l'aise, à chaque fois.</p>
<p>Bien sûr, les hommes aussi subissent cette double culture de plein fouet. Un homme doit être viril, musclé, plein d'assurance, et avoir de préférence eu des coïts avec le plus de femmes que possible ! Autant tout ça est fortement valorisant pour les hommes, car encouragé par la société, autant une femme qui se comporte de la même façon (belle, mince et avec une activité sexuelle du même acabit) est une trainée. On valorise l'homme d'un côté pour mieux enfoncer la femme de l'autre. Et on apprend aux hommes, dès leur plus jeune âge, à se montrer entreprenant avec les femmes, et que non veut dire oui. Tandis qu'aux femmes, dès leur plus jeune âge, on leur apprend à se montrer discrète, à ne pas se défendre quand un garçon l'embête, mais plutôt à se méfier des hommes, et à ne pas sortir dans certains quartiers ni à partir d'une certaine heure. Nous sommes dans une société qui cultive à la fois le patriarcat et la culture du viol. Et bonus, les hommes ne représentent « que » 48% de l'humanité, soit 52% de femmes dans le monde. Amusant, n'est-il pas ?</p>
<p>Quelques références :
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://tempsreel.nouvelobs.com/societe/20050308.OBS0662/la-france-reste-un-pays-patriarcal.html" title="La France reste un pays patriarcal">La France reste un pays patriarcal</a> - Le Nouvel Obs Temps Réel, 8 Mars 2005, entretien, propos recueillis par Chiara Penzo
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://fr.blastingnews.com/societe/2015/06/les-femmes-et-les-homosexuels-victimes-d-une-societe-misogyne-et-patriarcale-00449091.html" title="Les femmes et les homosexuels, victimes d'une société misogyne et patriarcale">Les femmes et les homosexuels, victimes d'une société misogyne et patriarcale</a> - BlastingNews, 22 Juin 2015, par Interrogations Contemporaines
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.madmoizelle.com/je-veux-comprendre-culture-du-viol-123377" title="Je veux comprendre… la culture du viol">Je veux comprendre… la culture du viol</a> - Madmoizelle, 13 Septembre 2012, par Clemence Bodoc
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.francetvinfo.fr/societe/prostitution/la-prostitution-est-le-reflet-de-la-societe-patriarcale_946755.html" title="La prostitution est le reflet de la société patriarcale ">La prostitution est le reflet de la société patriarcale </a> - France TV Info, 12 Juin 2015, entretien, propos recueillis par Violaine Jaussent</p>
<p><strong>Se déconstruire est essentiel</strong></p>
<p>Si vous avez lu jusque-là, bravo à vous ! On va maintenant aborder un point moins négatif.</p>
<p>Que vous soyez un homme ou une femme, si vous êtes choqué par tout ce que je viens d'écire, il ne vous reste plus qu'à faire un long chemin de déconstruction. En quoi consiste la déconstruction ? Le premier point essentiel pour commencer est de prendre conscience, réellement, de tous les points que j'ai évoqué. Peut-être qu'après avoir lu tout ce pavé vous serez plus à même de constater, consciemment, l'existence de cette double culture patriarcale et du viol. C'est long, c'est difficile, mais on peut y arriver, et c'est une déconstruction que je fais chaque jour depuis plusieurs années. Je n'ai pas pris conscience tout de suite de ce qui ne me va pas dans notre société, ayant été moi-même formatée. Oui, un homme à le droit de pleurer et d'avoir des sentiments, tout comme une femme a le droit de diriger une entreprise et de se montrer impassible au désarroi d'autrui. Nous sommes avant tout comme nous sommes : humains. Et c'est bien pour cela que nous devons casser ce qui nous a été fourré dans la tête depuis tout petit. On a le droit d'être fort ou vulnérable, ce n'est aucunement de la faiblesse. On a le droit de demander de l'aide lorsqu'on est un homme et de la refuser lorsqu'on est une femme. Le sexe faible, c'est dans votre tête. Le sexe fort, c'est dans votre tête aussi. Et tous ces clichés nous ont été inculqués par la société patriarcale et la culture du viol. Il est temps que cela cesse ! Il est plus que temps que nous nous acceptions tels que nous sommes : homme, femme, cis ou trans-genre, hétérosexuel, homosexuel, pansexuel, handicapé… Il est plus que temps que la tolérance laisse sa place à l'acceptation de son prochain, pour qui il est vraiment. Et il est plus que temps que vous nous lâchiez les gonades et que vous laissiez-nous vivre nos vies ! Mais cette déconstruction générale n'est réellement possible que si tout le monde y met du sien et que personne n'a peur de mettre ses priviléges de côté !</p>
<p>Quelques références :
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> - <a href="https://lefeminismetamere.wordpress.com/2014/10/29/messieurs-votre-probleme-ca-nest-pas-le-feminisme-mais-le-patriarcat/" title="Messieurs, votre problème ça n'est pas le féminisme, mais le patriarcat !">Messieurs, votre problème ça n'est pas le féminisme, mais le patriarcat !</a> - Le Ciel, le féminisme et ta mère, 29 Octobre 2014, par Le ciel, le féminisme et ta mère
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.slate.fr/tribune/87075/essai-graphique-de-deconstruction-du-genre" title="Essai graphique de déconstruction du genre">Essai graphique de déconstruction du genre</a> - Slate, 16 Mai 2014, par Nabila Abbas & Antoine Tricot
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.tonpetitlook.com/fr/2016/09/26/deconstruire-sa-sexualite-un-jour-la-fois-0" title="Déconstruire sa sexualité, un jour à la fois">Déconstruire sa sexualité, un jour à la fois</a> - Ton petit look, 26 Septembre 2016, par Salomé Landry
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.liberation.fr/societe/2011/06/23/il-faut-deconstruire-l-heterosexisme_744593" title="Il faut déconstruire l'hétérosexisme">Il faut déconstruire l'hétérosexisme</a> - Libération, 23 Juin 2011, tribune, par Louis-Georges Tin, Président du comité Idaho et Carine Favier, Présidente du Planning familial
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.un.org/fr/events/disabilitiesday/background.shtml" title="Vivre avec un handicap">Vivre avec un handicap</a> - Nations Unies
<br /><img src='https://blog.genma.fr/local/cache-vignettes/L8xH11/puce-32883.gif?1494182300' width='8' height='11' class='puce' alt="-" /> <a href="http://www.ithaquecoaching.com/articles/savoir-vivre-valides-handicapes-travailler-4632.html" title="Petit manuel de savoir-vivre entre valides et handicapés (2): 10 trucs pour favoriser la relation">Petit manuel de savoir-vivre entre valides et handicapés (2) : 10 trucs pour favoriser la relation</a>) - Ithaque Coaching, par Sylvaine Pascual.</p></div>
		
		<hr>
<p>Cette fois, c'est à Norore, une amie, que je laisserai la parole pour un long billet qui, je l'espère, sensibilisera mon lectorat à des problématiques qui me sont chères. <br class='autobr' />
Je suis : scientifique, geek, gamer, bricolo, habile, touche-à-tout <br class='autobr' />
Mais je suis une femme... De ce fait, je subis quotidiennement des attaques sur mon genre. Quel que soit le milieu que je fréquente ou l'activité que j'effectue. Souvent de façon inconsciente, du moins je l'espère. <br class='autobr' />
Le milieu professionnel <br class='autobr' />
Le milieu professionnel, (...)</p>


-
<a href="https://blog.genma.fr/?-Blog-35-" rel="directory">Blog</a>


		


