# articles

feed_id: http://blog.m0le.net/?p=7527
title: Transformer rapidement un geocode en coordonnées
uri: Transformer-rapidement-un-geocode-en-coordonnées
url: http://blog.m0le.net/2014/04/13/transformer-rapidement-un-geocode-en-coordonnees/
content:
<p>Passer d'un geocode à un simple duo latitude/longitude peut s'avérer être assez long. Passage en revue d'une méthode (parmi d'autres) pour faire ça rapidement.</p>
<p><span id="more-7527"></span></p>
<p>Prenons comme départ une situation simple : <strong>on a passé pas mal de temps à bidouiller une base de données patrimoniale</strong> pour obtenir des adresses postales complètes.</p>
<p>L'objectif ? Utiliser <a target="_blank" href="http://en.wikipedia.org/wiki/Geocoding">le geocoding</a>, un processus <strong>qui transforme des informations postales en coordonnées géographiques latitude/longitude</strong>.</p>
<p>Des outils comme Google Fusion Table peuvent alors <strong>très rapidement passer des adresses à des marqueurs</strong> placés précisément sur ces coordonnées, à peu près comme sur l'image suivante ;</p>
<p style="text-align: center;"><a target="_blank" href="media/e72f2887.tuto_geocode_1.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_1.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7528" alt="tuto_geocode_1" src="media/97060240.tuto_geocode_1-300x135.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_1-300x135.png" width="300" height="135" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Le rendu est pas trop mal, <strong>mais si l'on décide de réutiliser les marqueurs</strong> pour les personnaliser un peu plus, sur CardoDB ou MapBox par exemple ?</p>
<p style="text-align: left;">De prime abord, ça peut être un peu difficile, notamment parce qu'en téléchargeant les données de GFT, <strong>on n'aura pas les couples latitude/longitude</strong>...</p>
<p style="text-align: left;">On va tout de même tenter le coup , en allant depuis GFT dans <strong>&gt;Fichier&gt;Télécharger</strong>, puis en choisissant le format CSV.</p>
<p style="text-align: left;">Dans toutes ces données, <strong>la colonne qui va nous intéresser est évidemment celle des adresses complètes</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/3fafd308.tuto_geocode_2.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_2.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7530" alt="tuto_geocode_2" src="media/ad2966d0.tuto_geocode_2-300x160.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_2-300x160.png" width="300" height="160" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">On va ensuite délicatement copier ces adresses pour <strong>les coller dans le champ "Input"</strong> <a target="_blank" href="http://www.findlatitudeandlongitude.com/batch-geocode/#.U0l1OfkW2T-">de Batch Geocoding</a>.</p>
<p style="text-align: center;"><a target="_blank" href="media/00b32ef9.tuto_geocode_3.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_3.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7532" alt="tuto_geocode_3" src="media/8d159724.tuto_geocode_3-300x159.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_3-300x159.png" width="300" height="159" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;"><strong>Petite parenthèse</strong> avant de reprendre :</p>
<blockquote>
<p style="text-align: left;">Ce site n'est certainement pas le seul moyen d'obtenir les coordonnées d'un geocode, mais je l'ai trouvé diablement efficace, donc je n'ai pas spécialement cherché autre chose. Si un aimable lecteur connaît un autre moyen <strong>et a le temps de le présenter en commentaire</strong>, je suis preneur <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" />  !</p>
</blockquote>
<p style="text-align: left;">On retourne sur Batch Geocoding, en cliquant simplement sur "Geocode" <strong>après avoir correctement réglé deux ou trois paramètres</strong>.</p>
<p style="text-align: left;">Après avoir mouliné quelques minutes, on peut <strong>récupérer les fameux couples latitude/longitude dans le champ "Output"</strong>.</p>
<p style="text-align: left;">L'idéal est de les copier ensuite dans un bloc-notes <strong>et d'enregistrer un petit .txt</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/bce6f846.tuto_geocode_4.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_4.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7535" alt="tuto_geocode_4" src="media/51c4c690.tuto_geocode_4-300x148.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_4-300x148.png" width="300" height="148" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">En l'ouvrant ensuite dans Calc ou Excel, on peut copier/coller nos fameuses latitudes/longitudes <strong>et les poser dans la base de données originelle</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/833abca7.tuto_geocode_5.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_5.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7537" alt="tuto_geocode_5" src="media/fd0336e0.tuto_geocode_5-300x161.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_5-300x161.png" width="300" height="161" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">On a maintenant des coordonnées en .csv, mais <strong>il serait évidemment plus intéressant de les convertir dans un format vectoriel</strong>, type .shp ou .kml. Et c'est rapidement faisable <a target="_blank" href="http://www.qgis.org/fr/site/">en utilisant l'incomparable QGis</a> <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  !</p>
<h1 style="text-align: left;">D'un CSV avec coordonnées à un fichier vectoriel</h1>
<p>Pour cette manipulation, on va commencer par <strong>charger un calque vectoriel "modèle"</strong>, dans le but de vérifier que les coordonnées géographiques contenus dans le .csv <strong>s'affichent à peu près au bon endroit</strong>.</p>
<p>Dans mon cas, on peut par exemple charger les communes membres de la Communauté urbaine de Strasbourg.</p>
<p style="text-align: center;"><a target="_blank" href="media/bc9461ec.tuto_geocode_6.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_6.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7542" alt="tuto_geocode_6" src="media/4625390d.tuto_geocode_6-300x160.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_6-300x160.png" width="300" height="160" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">On va ensuite cliquer sur <strong>l'icône  "Ajouter une couche de texte délimité"</strong>, dans le menu vertical de gauche.</p>
<p style="text-align: center;"><a target="_blank" href="media/87eda8ab.tuto_geocode_61.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_61.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7545" alt="tuto_geocode_6" src="media/0cd1e7f5.tuto_geocode_61-209x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_61-209x300.png" width="209" height="300" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Dans le menu suivant, on peut choisir notre fameux .csv, <strong>paramétrer deux ou trois choses</strong> comme l'encodage ou le symbole délimiteur si on a autre chose que la virgule, et <strong>vérifier que QGis interprète correctement les latitudes et longitudes</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/4c44a637.tuto_geocode_7.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_7.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7548" alt="tuto_geocode_7" src="media/7d6eaaf8.tuto_geocode_7-300x211.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_7-300x211.png" width="300" height="211" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">En cliquant sur "OK", on arrive à un menu suivant où il faut choisir le système de coordonnées de référence. C'est typiquement là qu'il faut <strong>être très vigilant sur la projection choisie</strong> !</p>
<p style="text-align: left;">Dans notre cas, <strong>on prend WGS 84</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/cff7dd1c.tuto_geocode_8.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_8.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7551" alt="tuto_geocode_8" src="media/b7795edd.tuto_geocode_8-300x226.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_8-300x226.png" width="300" height="226" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">On valide, et la récompense apparaît : <strong>les points s'affichent bien correctement sur la bonne commune</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/5e16a68b.tuto_geocode_9.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_9.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7553" alt="tuto_geocode_9" src="media/9b40f797.tuto_geocode_9-300x135.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_9-300x135.png" width="300" height="135" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Cette nouvelle couche, qui porte le même nom que le .csv importé, <strong>contient l'intégralité des attributs de ce dernier</strong>.</p>
<p style="text-align: left;">Il ne reste plus qu'à faire <strong>un clic droit dessus et à choisir "Sauvegarder sous"</strong> pour la convertir au format vectoriel souhaité <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  !</p>
<h1 style="text-align: left;">Un script taillé pour Google Drive</h1>
<p>Ce que j'aime bien avec les mecs <a target="_blank" href="https://www.mapbox.com/">de MapBox</a>, c'est que non seulement ils proposent un service on ne peut plus optimal, mais qu'en plus ils prévoient toujours quelques moyens de le bidouiller un petit peu plus.</p>
<p>On peut évidemment citer <a target="_blank" href="https://www.mapbox.com/tilemill/">le logiciel TileMill</a>, mais dans notre cas on va plutôt se pencher <a target="_blank" href="https://github.com/mapbox/geo-googledocs">sur un script nommé "Geo for Google Docs"</a>.</p>
<p>Le principe ? Attacher à sa feuille de calcul Google un script qui permet :</p>
<ul>
<li>de <strong>transformer des adresses postales en coordonnées latitude/longitude</strong></li>
<li>de <strong>formater les cellules sélectionnées en geojson</strong> directement exploitables</li>
</ul>
<p>Concrètement, il suffit d'ouvrir une feuille de calcul sur Google Drive, puis de sélectionner <strong>&gt; Tools &gt; Script editor</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/d3e88f81.tuto_geocode_10.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_10.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7569" alt="tuto_geocode_10" src="media/88496f0e.tuto_geocode_10-300x130.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_10-300x130.png" width="300" height="130" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Dans l'éditeur, il ne reste plus qu'à effacer le petit code par défaut et <strong>de le remplacer par ledit script, avant de le sauvegarder</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/2e69f94f.tuto_geocode_11.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_11.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7571" alt="tuto_geocode_11" src="media/ccf335d0.tuto_geocode_11-300x263.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_11-300x263.png" width="300" height="263" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Une fois ceci fait, on remarque après mise à jour de la feuille de calcul <strong>une nouvelle option dans le menu du haut, nommée "Geo"</strong>.</p>
<p style="text-align: left;">Il ne reste plus qu'à <strong>coller des données rattachées à des adresses</strong>. Par exemple, je vous le donne en mille, le patrimoine de Strasbourg :</p>
<p style="text-align: center;"><a target="_blank" href="media/d79fa84e.tuto_geocode_12.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_12.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7572" alt="tuto_geocode_12" src="media/76478e0e.tuto_geocode_12-300x161.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_12-300x161.png" width="300" height="161" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Si on n'a pas de latitude/longitude, pas de panique ! Il suffit de <strong>sélectionner la colonne des adresses complètes</strong>, puis d'aller dans <strong>&gt; Geo &gt; Geocode Adresses</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/59688e64.tuto_geocode_13.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_13.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7573" alt="tuto_geocode_13" src="media/4685acee.tuto_geocode_13-300x234.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_13-300x234.png" width="300" height="234" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Une fenêtre s'ouvre pour <strong>choisir entre trois services</strong> (Mapquest, Yahoo et Cicero). On ne va pas s'embêter et <strong>choisir Mapquest, qui ne requiert aucune clé d'API :</strong></p>
<p style="text-align: center;"><a target="_blank" href="media/7b90c2fe.tuto_geocode_14.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_14.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7574" alt="tuto_geocode_14" src="media/00c3c6d9.tuto_geocode_14-300x204.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_14-300x204.png" width="300" height="204" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Il se peut qu'un message d'erreur s'affiche après que vous ayez cliqué sur "Geocode", mais n'en tenez pas compte.</p>
<p style="text-align: left;">Vous verrez que <strong>trois colonnes s'implémentent automatiquement à côté des adresses</strong>, avec longitude, latitude et spécificité de l'endroit (maison, résidence, château, etc...) :</p>
<p style="text-align: center;"><a target="_blank" href="media/dc9de773.tuto_geocode_15.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_15.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7575" alt="tuto_geocode_15" src="media/e77fd8f8.tuto_geocode_15-300x202.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_15-300x202.png" width="300" height="202" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Reste plus, après avoir sélectionné les données qu'on veut voir apparaître dans le geojson final, que de cliquer sur <strong>&gt; Geo &gt; Export GEOJSON</strong>.</p>
<p style="text-align: left;">De là, on choisit une colonne d'identifiants, et on on place les bonnes colonnes aux longitudes/latitudes :</p>
<p style="text-align: center;"><a target="_blank" href="media/d1eb72cd.tuto_geocode_16.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_16.png" rel="lightbox[7527]" title="Transformer rapidement un geocode en coordonnées"><img class="aligncenter size-medium wp-image-7576" alt="tuto_geocode_16" src="media/99db092b.tuto_geocode_16-300x204.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/tuto_geocode_16-300x204.png" width="300" height="204" /></a></p>
<p style="text-align: center;">Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Un clic sur "Export" amènera <strong>la création d'un geojson directement dans son compte Google Drive</strong>, prêt à être réutilisé <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  !</p>


feed_id: http://blog.m0le.net/?p=7504
title: Nono's Songs : The Puppini Sisters - Mr Sandman
uri: Nono-s-Songs-The-Puppini-Sisters-Mr-Sandman
url: http://blog.m0le.net/2014/04/14/nonos-songs-the-puppini-sisters-mr-sandman/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le non clip de <strong>The Puppini Sisters </strong>qui nous propose <strong>Mr Sandman<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/The_Puppini_Sisters_-_Mr_Sandman' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FThe_Puppini_Sisters_-_Mr_Sandman.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/a2389706.The_Puppini_Sisters_-_Mr_Sandman.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Puppini_Sisters_-_Mr_Sandman.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/90ea8e89.The_Puppini_Sisters_-_Mr_Sandman.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Puppini_Sisters_-_Mr_Sandman.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7557
title: Cut the rope 2
uri: Cut-the-rope-2
url: http://blog.m0le.net/2014/04/16/cut-the-rope-2/
content:
<p>Profitez-vous bien de ces beaux jours de printemps ? Personnellement ça va super bien, parce que <a target="_blank" href="https://play.google.com/store/apps/details?id=com.zeptolab.ctr2.f2p.google">Cut the Rope 2</a> est enfin sorti sur Android !!!</p>
<p style="text-align: center;">
<p style="text-align: center;"><a target="_blank" href="media/260985c7.cutrope1.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/cutrope1.jpg" rel="lightbox[7557]" title="Cut the rope 2"><img class="alignnone size-medium wp-image-7560" alt="cutrope2" src="media/2a286155.cutrope1-300x101.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/cutrope1-300x101.jpg" width="300" height="101" /></a></p>
<p>C'est <strong>mon jeu préféré</strong> depuis que j'ai un smartphone, ce qui remonte au temps de l'iPhone (bouuuh, pas taper), quand j'ai complètement craqué pour ce petit Flubber de l'Espace !</p>
<p>Aussi gourmand que moi, il n'aspire toujours qu'a une chose : manger son bonbon (tout en attrapant les 3 étoiles).</p>
<p>Ce casse-tête, en plus <strong>d'être très mignon et facile à jouer</strong>, possède <strong>un niveau de difficulté croissant</strong>. Bref, on ne s'en lasse pas !</p>
<p>Un jeu que je recommande vivement, pour les petits comme pour les grands <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p>
<p><a target="_blank" href="http://www.youtube.com/watch?v=jwyCaO9J9Qw">http://www.youtube.com/watch?v=jwyCaO9J9Qw</a></p>


feed_id: http://blog.m0le.net/?p=7507
title: Nono's Songs : Blondie - One Way Or Another
uri: Nono-s-Songs-Blondie-One-Way-Or-Another
url: http://blog.m0le.net/2014/04/21/nonos-songs-blondie-one-way-or-another/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip non officiel de <strong>Blondie </strong>qui nous propose <strong>One Way Or Another<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Blondie_-_One_Way_Or_Another' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FBlondie_-_One_Way_Or_Another.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/317e4501.Blondie_-_One_Way_Or_Another.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Blondie_-_One_Way_Or_Another.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/11e83453.Blondie_-_One_Way_Or_Another.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Blondie_-_One_Way_Or_Another.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7585
title: HoverChat, des SMS en bulles
uri: HoverChat-des-SMS-en-bulles
url: http://blog.m0le.net/2014/04/23/hoverchat-des-sms-en-bulles/
content:
<p>Aujourd'hui j'ai déniché une appli que je connaissais déjà, et je ne sais même pas pourquoi je n'en ai pas parlé plus tôt. Peut-être étais-je dans ma bulle <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  !<br/><br />
<span id="more-7585"></span><br />
Lors d'une soirée avec un ami, je vois <strong>qu'il a des bulles partout sur son smartphone</strong>, je reconnais l'effet <a target="_blank" href="https://play.google.com/store/apps/details?id=com.facebook.orca">Messenger mobile</a> de <a target="_blank" href="https://play.google.com/store/apps/details?id=com.facebook.katana">Facebook</a>, mais visiblement ce sont des SMS.</br> </p>
<p>Intriguée je lui demande de m'expliquer ce drôle de truc !</p>
<p><a target="_blank" href="https://play.google.com/store/apps/details?id=com.ninja.sms.promo&amp;referrer=utm_source%3Dappgratis">Hoverchat</a> est donc <strong>une alternative à l'application de SMS native</strong> de nos smartphones. Mais, comme vous l'avez compris, elle utilise <strong>le système de bulles de Facebook</strong>.</p>
<p>C'est très pratique lorsqu'on regarde une video et qu'on veut répondre à un SMS rapidement, sans avoir à changer d'appli (ou d'avoir une pop-up comme sur <a target="_blank" href="https://play.google.com/store/apps/details?id=com.handcent.nextsms">Handcent</a> par exemple)</p>
<p style="text-align: center"><a target="_blank" href="media/1c41e0e2.unnamed-21.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/unnamed-21.jpg" rel="lightbox[7585]" title="HoverChat, des SMS en bulles"><img class="alignnone size-medium wp-image-7590" alt="hoverchat" src="media/13fcd637.unnamed-21-300x160.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/unnamed-21-300x160.jpg" width="300" height="160" /></a></p>
<p>Petit plus, <strong>l'application est personnalisable</strong> et les "bulles" sur le coté peuvent se transformer en étoiles sur fond violet <img src="media/5a932613.icon_biggrin.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" />  (eh oh hein, no comment, je personnalise comme je veux !)</p>
<p>Kevin, si tu me lis de ton caillou... <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p>


feed_id: http://blog.m0le.net/?p=7510
title: Nono's Songs : Tubthumping - I get knocked down
uri: Nono-s-Songs-Tubthumping-I-get-knocked-down
url: http://blog.m0le.net/2014/04/28/nonos-songs-tubthumping-i-get-knocked-down/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Tubthumping </strong>qui nous propose <strong>I get knocked down<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Tubthumping_i_get_knocked_down' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FTubthumping_i_get_knocked_down.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/849a6bed.Tubthumping_i_get_knocked_down.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Tubthumping_i_get_knocked_down.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/9bb8d180.Tubthumping_i_get_knocked_down.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Tubthumping_i_get_knocked_down.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7514
title: Nono's Songs : Procol Harum - A Whiter Shade Of Pale
uri: Nono-s-Songs-Procol-Harum-A-Whiter-Shade-Of-Pale
url: http://blog.m0le.net/2014/05/05/nonos-songs-procol-harum-a-whiter-shade-of-pale/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Procol Harum </strong>qui nous propose <strong>A Whiter Shade Of Pale<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Procol_Harum_-_A_Whiter_Shade_Of_Pale' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FProcol_Harum_-_A_Whiter_Shade_Of_Pale.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/1d36f481.Procol_Harum_-_A_Whiter_Shade_Of_Pale.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Procol_Harum_-_A_Whiter_Shade_Of_Pale.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/7d698194.Procol_Harum_-_A_Whiter_Shade_Of_Pale.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Procol_Harum_-_A_Whiter_Shade_Of_Pale.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7578
title: Intelliring rend votre smartphone intelligent
uri: Intelliring-rend-votre-smartphone-intelligent
url: http://blog.m0le.net/2014/05/07/intelliring-rend-votre-smartphone-intelligent/
content:
<p>Salut tout le monde,</p>
<p style="text-align: left">Aujourd'hui j'ai décidé de rendre vos smartphones intelligents, notamment <strong>du côté de leurs sonneries incessantes</strong>.<br />
<span id="more-7578"></span><br />
Depuis longtemps je me fais la réflexion</p>
<blockquote><p>mon téléphone devrait comprendre qu'une fois dans la poche, <strong>il peut vibrer comme il veut je ne le sens pas si je marche</strong> ! Et puis quand je le retourne le soir, c'est pas pour faire joli c'est pour ne pas être dérangée. Mais visiblement, c'est trop dur pour "Monsieur téléphone"...</p>
</blockquote>
<p style="text-align: left">En cherchant, je suis alors tombée <strong>sur une appli sympa qui fait exactement tout ça</strong> : <a target="_blank" href="https://play.google.com/store/apps/details?id=com.sleekbit.intelliring&amp;referrer=utm_source%3Dappgratis">Intelliring</a></p>
<p style="text-align: left">1. En sonnant fort <strong>quand votre téléphone est dans votre poche, dans un sac ou couvert</strong>. Et, quand vous sortez votre téléphone, le volume diminue<br />
2. En sonnant à peine plus fort que le bruit ambiant <strong>quand il n'est pas dans votre poche</strong> (fini les sonneries trop fortes dans votre bureau silencieux)<br />
3. En bipant subtilement <strong>quand votre téléphone est placé face en bas sur votre bureau</strong> (mode réunion).<br />
4. En mettant votre téléphone e<strong>n mode silencieux pour une durée déterminée</strong> - utile par exemple quand vous allez voir un film<br />
5. <strong>En faisant tout ça également pour les notifications</strong> (SMS, email, etc.)<br />
6. <strong>En arrêtant la sonnerie lorsque vous retournez votre téléphone</strong></p>
<p style="text-align: center"><a target="_blank" href="media/97e06acc.unnamed.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/unnamed.png" rel="lightbox[7578]" title="Intelliring rend votre smartphone intelligent"><img class="size-medium wp-image-7581 alignleft" alt="unnamed" src="media/ac522e07.unnamed-168x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/unnamed-168x300.png" width="168" height="300" /></a></p>
<p>&nbsp;</p>
<p><span style="line-height: 1.5em">Ne me remerciez pas... Enfin si, ça fait toujours plaisir <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </span></p>


feed_id: http://blog.m0le.net/?p=7624
title: Adieu Télé ... - 01
uri: Adieu-Télé-01
url: http://blog.m0le.net/2014/05/07/adieu-tele-01-2/
content:
<h3>Adieu Télé...</h3>
<p>Début d'un essai de série qui va pouvoir se qualifier de fourre-tout qui, à défaut de lecteurs, permettra de fixer l'idée que la télé se meurt.<br />
Attention cependant, il y aura peu ou pas de références à cette vielle boîte noire pleine de poussière. Hormis le titre et le contenu qui montreront son inutilité.</p>
<p>Bref, un gloubiboulga d'idées et de points de vues intéressants découverts sur Internet. Le genre de contenus pertinents qui ne se trouvent pas sur son ancêtre.<br />
A format extrêmement variable le but sera d'essayer de ne pas vous faire perdre votre temps devant votre ordinateur au milieu des 42 tweets/chat/jeudefermier/videosyoutube en cours.<br />
Aucune création pour le moment, simplement une présentation d'un ou plusieurs contenus pouvant amener à une réflexion.</p>
<p>On commence tout de suite avec ce reportage comme un passage obligé pour la suite.</p>
<p><a target="_blank" href="http://www.youtube.com/watch?v=tztUbIPb5oQ">http://www.youtube.com/watch?v=tztUbIPb5oQ</a></p>
<p>La suite demain <img src="media/5a932613.icon_biggrin.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </p>


feed_id: http://blog.m0le.net/?p=7642
title: Adieu Télé ... - 02
uri: Adieu-Télé-02
url: http://blog.m0le.net/2014/05/09/adieu-tele-02/
content:
<h3>Adieu Télé...</h3>
<p style="padding-left: 180px"><a target="_blank" href="media/95085d64.television-cassee-image-340880-article-ajust_930.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/television-cassee-image-340880-article-ajust_930.jpg" rel="lightbox[7642]" title="Adieu Télé ... - 02"><img class="wp-image-7643 size-thumbnail aligncenter" src="media/73932d68.television-cassee-image-340880-article-ajust_930-150x150.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/television-cassee-image-340880-article-ajust_930-150x150.jpg" alt="adieutele" width="150" height="150" /></a></p>
<p>Bonjour à tous.</p>
<p>Comme je le disais dans le post précédent, le format de ces articles pourra prendre des aspects divers et variés ; aujourd'hui je vous propose une longue conférence sur les enjeux d'Internet.<br />
Benjamin Bayart, président de l'association French Data Network (FDN, le plus vieux fournisseur d'accès Internet en France !), nous présente une partie des modifications de société qu'implique Internet.<br />
2h30 et oui, c'est long, mais comptez sur moi, ça en vaut vraiment la peine.</p>
<p>&nbsp;</p>
<p><a target="_blank" href="http://www.youtube.com/watch?v=yBmz29_5ffA">http://www.youtube.com/watch?v=yBmz29_5ffA</a></p>
<p>&nbsp;</p>
<p>Et puis avec un week-end entier sans télé, le temps se trouve. <img src="media/5a932613.icon_biggrin.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /> </p>


feed_id: http://blog.m0le.net/?p=7518
title: Nono's Songs : Sugarhill Gang - Rapper's Delight
uri: Nono-s-Songs-Sugarhill-Gang-Rapper-s-Delight
url: http://blog.m0le.net/2014/05/12/nonos-songs-sugarhill-gang-rappers-delight/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Sugarhill Gang </strong>qui nous propose <strong>Rapper's Delight<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Sugarhill_Gang_-_Rapper_s_Delight' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FSugarhill_Gang_-_Rapper_s_Delight.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/dec9d666.Sugarhill_Gang_-_Rapper_s_Delight.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Sugarhill_Gang_-_Rapper_s_Delight.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/7e4a6cd9.Sugarhill_Gang_-_Rapper_s_Delight.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Sugarhill_Gang_-_Rapper_s_Delight.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7658
title: Adieu Télé ... - 03
uri: Adieu-Télé-03
url: http://blog.m0le.net/2014/05/13/adieu-tele-03-2/
content:
<h3><strong>Adieu Télé...</strong></h3>
<p style="padding-left: 180px"><a target="_blank" href="media/95085d64.television-cassee-image-340880-article-ajust_930.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/television-cassee-image-340880-article-ajust_930.jpg" rel="lightbox[7658]" title="Adieu Télé ... - 03"><img class="wp-image-7643 size-thumbnail aligncenter" src="media/73932d68.television-cassee-image-340880-article-ajust_930-150x150.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/television-cassee-image-340880-article-ajust_930-150x150.jpg" alt="adieutele" width="150" height="150" /></a></p>
<p>Bonsoir,</p>
<p>Je vous propose d'éteindre votre poste de télévision (si ce n'est pas encore fait) et de regarder attentivement ce reportage sur les médias dominants<em>. Les Nouveaux Chiens de garde</em> dénonce le manque de pluralisme et l'indépendance des médias de masse.</p>
<p>&nbsp;</p>
<p><a target="_blank" href="http://www.youtube.com/watch?v=0FW4Ealqx2Q">http://www.youtube.com/watch?v=0FW4Ealqx2Q</a></p>
<p>Voilà en partie pourquoi je ne m'informe plus du tout à travers ce genre de médias, qui, je pense, fournissent des informations orientées et peu pertinentes.<br />
Pour en savoir plus, je vous conseille de suivre le site de l'association <a target="_blank" title="Acrimed" href="http://www.acrimed.org/">Acrimed</a> (Action-CRItique-MEDias)<strong style="color: #000000"> </strong>qui critique de manière constructive et indépendante les problèmes des médias.</p>
<p>Je vous laisse méditer sur tout cela.</p>


feed_id: http://blog.m0le.net/?p=7470
title: Contrôler son PC à distance avec LogMeIn
uri: Contrôler-son-PC-à-distance-avec-LogMeIn
url: http://blog.m0le.net/2014/05/14/controler-son-pc-a-distance-avec-logmein/
content:
<p>Coucou tout le monde ! Aujourd'hui j'ai bien envie de vous parler d'une application qui permet d'accéder à distance à votre PC ou votre MAC grâce à votre smartphone.</p>
<p><span id="more-7470"></span></p>
<p>Il s'agit de <a target="_blank" href="https://play.google.com/store/apps/details?id=com.logmein.ignitionpro.android&amp;hl=FR">LogMeIn</a>.</p>
<blockquote><p>Nan mais c'est bon on en a déjà vu plein, tu radotes !</p>
<p>- Je n'en doute pas, <strong>sauf que celle-ci fonctionne particulièrement bien <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> </strong></p></blockquote>
<p><span style="line-height: 1.5em;">Pour l'utiliser, il suffit comme d'habitude d'</span><span style="line-height: 1.5em;">installer le logiciel (gratuit) LogMeIn sur les ordinateurs <strong>dont on souhaite prendre le contrôle à distance</strong>, puis de s'y connecter <strong>via une connexion Wi-Fi ou 3G</strong>.</span></p>
<p>Il est ensuite possible <strong>de visionner les fichiers</strong> que vous avez dans votre PC, et pourquoi pas de les modifier.</p>
<p style="text-align: center;"><a target="_blank" href="media/a696f0a7.screenshot_1-300x450.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_1-300x450.jpg" rel="lightbox[7470]" title="Contrôler son PC à distance avec LogMeIn"><img class="alignnone size-medium wp-image-7471" src="media/57dc6715.screenshot_1-300x450-200x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_1-300x450-200x300.jpg" alt="screenshot_1-300x450" width="200" height="300" /></a> <a target="_blank" href="media/fb8e8752.screenshot_2-300x450.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_2-300x450.jpg" rel="lightbox[7470]" title="Contrôler son PC à distance avec LogMeIn"><img class="alignnone size-medium wp-image-7472" src="media/dd499fbe.screenshot_2-300x450-200x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_2-300x450-200x300.jpg" alt="screenshot_2-300x450" width="200" height="300" /></a> <a target="_blank" href="media/e2177a56.screenshot_3-300x450.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_3-300x450.jpg" rel="lightbox[7470]" title="Contrôler son PC à distance avec LogMeIn"><img class="alignnone size-medium wp-image-7473" src="media/4f14cb45.screenshot_3-300x450-200x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_3-300x450-200x300.jpg" alt="screenshot_3-300x450" width="200" height="300" /></a> <a target="_blank" href="media/4e70347b.screenshot_4-300x450.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_4-300x450.jpg" rel="lightbox[7470]" title="Contrôler son PC à distance avec LogMeIn"><img class="alignnone size-medium wp-image-7474" src="media/97ff85d3.screenshot_4-300x450-200x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/03/screenshot_4-300x450-200x300.jpg" alt="screenshot_4-300x450" width="200" height="300" /></a></p>
<p>Bref, <strong>une application à tester</strong> avant de dire "j'aime pas" <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" />  !</p>


feed_id: http://blog.m0le.net/?p=7522
title: Nono's Songs : Scott McKenzie - San Francisco
uri: Nono-s-Songs-Scott-McKenzie-San-Francisco
url: http://blog.m0le.net/2014/05/19/nonos-songs-scott-mckenzie-san-francisco/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip de <strong>Scott McKenzie </strong>qui nous propose <strong>San Francisco<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Scott_McKenzie_-_San_Francisco' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FScott_McKenzie_-_San_Francisco.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/0ca7814b.Scott_McKenzie_-_San_Francisco.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Scott_McKenzie_-_San_Francisco.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/98c88e55.Scott_McKenzie_-_San_Francisco.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Scott_McKenzie_-_San_Francisco.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7597
title: Organizy, faire ses courses sans se prendre la tête
uri: Organizy-faire-ses-courses-sans-se-prendre-la-tête
url: http://blog.m0le.net/2014/05/21/organizy-faire-ses-courses-sans-se-prendre-la-tete/
content:
<p>Si toi aussi tu écris tes courses sur un bout de papier, que tu le perds ou qu'il se fait manger par ton chien Scruffy (Matt, si tu me lis..), sache que tu n'es pas le seul et que j'ai LA solution pour toi <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  !</p>
<p><span id="more-7597"></span><a target="_blank" href="https://play.google.com/store/apps/details?id=com.organizy.shopping.list">Organizy</a> permet en effet de noter sa liste de course dans son smartphone afin de <strong>ne plus jamais perdre cette maudite liste de courses</strong> !</p>
<p style="text-align: center;"><a target="_blank" href="media/6bf2fa3b.Organizy-2.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/Organizy-2.jpg" rel="lightbox[7597]" title="Organizy, faire ses courses sans se prendre la tête"><img class="alignnone size-medium wp-image-7598" src="media/1687cd5c.Organizy-2-300x177.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/Organizy-2-300x177.jpg" alt="Organizy-2" width="300" height="177" /></a></p>
<blockquote><p>Oui mais bon, c'est quand même plus simple un bout de papier et un stylo, ça va plus vite...</p></blockquote>
<p>Dans l'absolu, je suis d'accord, mais pas là ! <strong>Il suffit en effet de taper les trois premières lettres du produit</strong> qu'on souhaite acheter pour que l'appli liste les produits qu'on achète VRAIMENT !</p>
<p style="text-align: center;"><a target="_blank" href="media/20b562b0.y_vos_courses_facilement_android_astuces_gratuit_application.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/Organizy_vos_courses_facilement_android_astuces_gratuit_application.jpg" rel="lightbox[7597]" title="Organizy, faire ses courses sans se prendre la tête"><img class="alignnone size-medium wp-image-7599" src="media/21a84e5b.urses_facilement_android_astuces_gratuit_application-168x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/Organizy_vos_courses_facilement_android_astuces_gratuit_application-168x300.jpg" alt="Organizy_vos_courses_facilement_android_astuces_gratuit_application" width="168" height="300" /></a></p>
<p>Autres options sympa :</p>
<ul>
<li><strong> la possibilité de rayer sa liste a une seule main</strong></li>
<li>rien n'est définitif si vous appuyez sur l'écran par mégarde, <strong>les aliments non achetés passent automatiquement</strong> en tête de liste</li>
<li><strong>le partage de la liste</strong> de course</li>
</ul>
<p>Et d'avance, de rien <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /> </p>


feed_id: http://blog.m0le.net/?p=7686
title: Neuf conseils pour pratiquer le journalisme de données en presse locale
uri: Neuf-conseils-pour-pratiquer-le-journalisme-de-données-en-presse-loca
url:
http://blog.m0le.net/2014/05/24/neuf-conseils-pour-pratiquer-le-journalisme-de-donnees-en-presse-locale/

content:
<p>Passage en revue de quelques bonnes pratiques pour se mettre efficacement au datajournalisme en presse locale.</p>
<p><span id="more-7686"></span></p>
<h1>1. Maîtriser les statistiques</h1>
<p>Les statistiques sont un langage à part, <strong>un autre code à ajouter aux codes informatiques avec lesquels les datajournalistes jonglent quotidiennement</strong>, mais qui ne doit en aucun cas être négligé.</p>
<p>Pourquoi cette insistance sur les statistiques ? Parce que la maîtrise du code, aussi léchée soit-elle, <strong>n'empêchera jamais des erreurs qui donneront une image faussée d'un très beau travail</strong>.</p>
<p>Connaître les différences entre médiane et moyenne, analyser un échantillon en déciles, comparer les variances, être tatillon sur la manière dont les données ont été collectées, se rappeler <a target="_blank" href="http://blog.m0le.net/2013/10/26/les-donnees-sont-elles-si-objectives-que-ca/">que les données traitées ne sont pas objectives</a>, sont autant de connaissances qui empêcheront de faire <a target="_blank" href="http://www.thefunctionalart.com/2014/05/when-plotting-data-ask-yourself.html">de belles erreurs</a> et donneront un résultat de meilleure qualité, <strong>aussi irréprochable sur le fond que sur la forme</strong>.</p>
<h2>Plus concrètement</h2>
<p><strong>Pour s'y mettre en français</strong>, il y a comme bonnes ressources :</p>
<ul>
<li><a target="_blank" href="http://www.lemondeestmathematique.fr/ouvrages.php">les volumes 21 et 26 de la collection "Le monde est mathématique"</a> (environ 10€ l'unité), consacrés respectivement aux probabilités et aux statistiques</li>
<li>l'ouvrage de Nicolas Gauvrit, <em><a target="_blank" href="http://www.amazon.fr/Statistiques-M%C3%A9fiez-vous-Nicolas-Gauvrit/dp/2729830707"><strong>Statistiques : méfiez-vous !</strong></a></em></li>
</ul>
<p><strong>Pour ceux qui préfèrent le gratuit et maîtrisent l'anglais</strong>, il y a également :</p>
<ul>
<li>le bouquin <a target="_blank" href="http://health.adelaide.edu.au/psychology/ccs/teaching/lsr/"><em>Learning Statistics With R</em></a>, <strong>qui a une approche très pointue des stats</strong> et assez originale puisque l'apprentissage se faire grâce à <a target="_blank" href="http://www.r-project.org/">l'incontournable logiciel open source R</a></li>
<li>plus court, le guide <em><a target="_blank" href="http://www.statisticsdonewrong.com/index.html">Statistic Gone Wrong</a></em></li>
</ul>
<h1>2. Plus près vaut mieux que trop loin</h1>
<p>La presse locale a souvent <strong>une image de grande proximité de son lectorat</strong>, contrairement à la presse nationale qui insiste sur des enjeux beaucoup plus globaux.</p>
<p>La même chose se vérifie sur Internet, <strong>où il est assez évident que les internautes marseillais</strong> (hormis diaspora de l'Est) <strong>ne se connecteront pas en masse sur le site du Républicain Lorrain</strong>. Un des intérêts du datajournalisme en presse locale <strong>est évidemment d'éclairer des problématiques proches de son lectorat</strong>.</p>
<p><strong>Plutôt que d'exploiter le même nouveau jeu de données de datagouv</strong> sur lequel vont se ruer quelques géants de Paris, il vaut mieux donc trouver quelque chose <strong>qui parle plus à ses lecteurs</strong>, quitte à changer son angle d'attaque.</p>
<h2>Plus concrètement</h2>
<p>Ce qui nous amène directement au point suivant <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> </p>
<h1>3. Varier ses sources de données</h1>
<p>C'est <strong>le défi perpétuel</strong> du journaliste de données de presse locale :  <strong>trouver des fichiers exploitables à la bonne échelle</strong>.</p>
<p>Certains gros stocks comme ceux de datagouv peuvent convenir, à partir du moment <strong>où ils sont plus précis que l'échelle départementale</strong>. On peut par exemple citer les résultats d'une élection par commune, idéaux pour filtrer uniquement celles qui nous intéressent.</p>
<p>Mais sinon ? Il y a, mais c'est loin d'être le cas partout, <strong>les portaux Open Data</strong>. Ces derniers peuvent mettre à disposition <strong>des données pas forcément trouvables sur les stocks nationaux</strong>, mais<strong> ils perdent très vite de leur intérêt s'ils ne sont pas mis à jour régulièrement</strong>.</p>
<p>On peut également citer <strong>des organisations officielles qui ne chargent pas forcément leurs données sur datagouv</strong>. Même si ce dernier s'étoffe de plus en plus, il en reste un paquet !</p>
<h2>Plus concrètement</h2>
<p>Voir le point suivant (promis, c'est la dernière fois ;-)).</p>
<h1>4. Contacter dès qu'on le peut des spécialistes</h1>
<p>Les spécialistes ont une connaissance très poussée de données exploitables, <strong>même s'ils ne les ont pas produites eux-mêmes</strong>. Il peut donc être intéressant de les interroger dessus avant toute publication, notamment pour :</p>
<ul>
<li>trouver <strong>des données complémentaires</strong></li>
<li>avoir un éclairage sur <strong>la manière dont les données ont été collectées</strong></li>
<li><strong>préciser un maximum</strong> ce qu'elles reflètent</li>
</ul>
<h2>Plus concrètement</h2>
<p>J'ai deux anecdotes pour illustrer ce conseil :</p>
<ul>
<li>je me suis un jour lancé <a target="_blank" href="http://blog.m0le.net/2013/05/13/contourner-quelques-limites-de-google-fusion-tables/">dans des cartes</a> centrées sur la sauvegarde <a target="_blank" href="http://fr.wikipedia.org/wiki/Hamster_d%27Europe">du grand hamster d'Alsace</a>. J'avais trouvé <strong>un paquet de matière à exploiter</strong> sur le site <a target="_blank" href="http://www.alsace.developpement-durable.gouv.fr/">de la DREAL Alsace</a>, et je me suis dit qu'il pourrait être intéressant de demander son avis à un responsable d'une association écologiste. Ce dernier a commencé <strong>par relativiser le nombre de terriers répertoriés</strong>, en expliquant <strong>que les zones de recherche était très limitées</strong>, et qu'on ne fouillait pas certains sentiers où pouvaient potentiellement se trouver l'un ou l'autre de ces petits animaux. Autrement dit, on pouvait dire <strong>qu'il y avait <span style="text-decoration: underline;">au moins</span> tant de terriers</strong>, sans être catégorique. Aussi officielles qu'étaient les données citées, <strong>elles avaient donc leurs propres limites</strong> !</li>
<li>bien plus récemment, j'ai écrit <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2014/05/22/culture/deux-balades-pour-decouvrir-le-patrimoine-excentre-de-strasbourg/">sur le patrimoine périphérique de Strasbourg</a>. J'ai interrogé le président d'une association spécialisée sur l'ensemble du patrimoine de la ville à propos de ma carte faite à partir <a target="_blank" href="http://opendata.alsace.fr/">d'un jeu de données régional</a>. Il a alors rappelé que <strong>les lieux cités étaient <span style="text-decoration: underline;">des monuments classés</span></strong>, et qu'on ne pouvait du coup <strong>pas en parler comme d'un patrimoine "global"</strong>. Une précision très utile qui m'a permis de corriger mon papier avant publication. Et cerise sur le gâteau, j'ai même eu <strong>un lien vers des sources complémentaires</strong> <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> </li>
</ul>
<h1>5. Adapter des exemples</h1>
<p>C'est <strong>une option incontournable</strong> des grandes librairies de cartographie et traitement de données : proposer un tour d'horizon <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/">avec des exemples et le code qui va avec</a>.</p>
<p><strong>Il est beaucoup plus facile d'essayer d'adapter ces exemples</strong> que de digérer une doc épaisse en espérant ensuite <strong>que l'inspiration fasse le reste</strong>.</p>
<p>Après tout, regarder des exemples, c'est déjà chercher l'inspiration <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  !</p>
<h2>Plus concrètement</h2>
<p>Cette carte que j'ai réalisée pour Rue89S est en fait un mix <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/load-geojson/">de cet exemple</a>, <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/custom-marker-tooltip/">de celui-ci</a>, <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/centering-markers/">de celui-ci</a> et <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/layers/">de celui-ci</a>.</p>
<p><iframe width="500" height="560" src="http://raphi.m0le.net/data/patex/patrimoine_excentre_strasbourg.html" scrolling="no"></iframe></p>
<h1>6. Discuter des projets en cours avec des confrères</h1>
<p>Avoir régulièrement le nez dans les données peut faire prendre de bonnes habitudes, mais demander leur avis à des confrères avant publication <strong>ne coûte rien et peut rapporter beaucoup</strong>, notamment en :</p>
<ul>
<li>proposant <strong>des améliorations esthétiques ou fonctionnelles</strong></li>
<li>réfléchissant à <strong>comment mieux "angler" ses illustrations</strong></li>
</ul>
<h2>Plus concrètement</h2>
<p>Là encore, j'ai deux anecdotes qui me reviennent :</p>
<ul>
<li>lorsque je me suis lancé dans <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2014/02/10/politique/europeennes-comment-contrer-labstention/">la cartographie de l'abstention aux européennes dans la circonscription Est</a>, j'avais <strong>d'abord appliqué un coloriage séquentiel</strong> pour illustrer tout ça. J'ai demandé son avis à un ami et ancien collègue qui m'a dit de but en blanc <strong>qu'il trouvait ce résultat "baveux"</strong>, et qu'il valait mieux tenter la chose <strong>avec un coloriage divergent</strong>. Ce qui a rendu <strong>le tout effectivement bien plus lisible</strong>.</li>
<li>c'est <strong>en discutant d'une première mouture de carte</strong> avec la rédaction en chef de Rue89S que j'ai eu l'idée d'y ajouter les tracés des deux balades, balades qui <strong>constituaient précisément l'angle de mon papier</strong></li>
</ul>
<h1>7. La forme suit la fonction</h1>
<p>Ce principe, particulièrement appliqué dans l'industrie, est décrit sous l'angle des infographies dans l'excellent <a target="_blank" href="http://www.peachpit.com/store/functional-art-an-introduction-to-information-graphics-9780321834737"><em>The Functional Art</em></a>. Alberto Cairo y explique que <strong>la forme que prend une infographie suit assez naturellement sa fonction explicative</strong>.<em><br />
</em></p>
<p>De la même façon, je crois qu'il faut considérer une visualisation de données, aussi poussée techniquement soit-elle, que <strong>comme une illustration augmentée</strong>. Elle doit <strong>servir l'angle</strong> que l'on a choisi éventuellement en analysant des données, <strong>pas l'inverse</strong>.</p>
<h2>Plus concrètement</h2>
<p><strong>Il n'y a rien de pire</strong>, dès lors que l'on a passé du temps et de la sueur à produire une dataviz, <strong>que de la balancer seule dans un article</strong>, sans autre explication, en se disant que les lecteurs <strong>comprendront d'eux-mêmes les secrets qu'elle renferme</strong>.</p>
<p>Ça ne marche que dans des cas bien précis, et <strong>il ne faut jamais s'affranchir d'une bonne analyse</strong> qui viendra compléter la performance technique.</p>
<p>En bon exemple d'une thématique que l'on peut avoir dans une rédaction, le journal canadien La Presse a livré <strong>un super boulot <a target="_blank" href="http://www.lapresse.ca/multimedias/201310/14/01-4699525-cartes-interactives-des-accidents-routiers-au-quebec.php">sur les accidents de la route au Québec</a></strong>. Le truc en plus ? L'option "Faits saillants", qui montre un vrai travail d'analyse.</p>
<h1>8. Appliquer le <span class="st"> rasoir d'Ockham</span></h1>
<p>Le <a target="_blank" href="http://fr.wikipedia.org/wiki/Rasoir_d%27Ockham">principe du rasoir d'Ockham</a> peut se résumer ainsi : si on peut faire simple, il faut éviter autant que possible de faire compliqué.</p>
<p>Ça paraît assez évident dit comme ça, <strong>mais dans la pratique, la tentation de compliquer</strong>, surtout quand on découvre un nouveau jeu de données qu'on ne maîtrise pas encore, est souvent présente.</p>
<h2>Plus concrètement</h2>
<p>Pour illustrer une évolution d'un indice dans le temps, <strong>qu'est-ce qui est le plus optimal</strong> ? Un diagramme en barres décrivant cet indice à des années précises, ou une carte choroplèthe ultra soignée ?</p>
<p>Le rasoir d'Ockham vous dira <strong>de préférer la première option</strong>, et à mon avis à raison. Après tout, <a target="_blank" href="http://www.ericson.net/content/2011/10/when-maps-shouldnt-be-maps/">il arrive que les cartes ne soient pas la meilleure manière d'illustrer</a> !</p>
<h1>9. Le diable est dans les détails</h1>
<h2>Plus concrètement</h2>
<p>En termes de dataviz, <strong>les détails peuvent faire toute la différence</strong>.</p>
<p>Couleurs, légendes, échelle, zoom, fenêtres interactives, affichage sur support mobile (trop souvent négligé), <strong>tout doit être testé et interrogé pour d'éventuels changements</strong>.</p>


feed_id: http://blog.m0le.net/?p=7708
title: Automatiser une saisie sur Libre Calc avec une table de correspondance
uri: Automatiser-une-saisie-sur-Libre-Calc-avec-une-table-de-correspondance
url:
http://blog.m0le.net/2014/05/26/automatiser-une-saisie-sur-libre-calc-avec-une-table-de-correspondance/

content:
<p>Passage en revue de deux fonctions bien pratiques pour automatiser la saisie d'informations sur Libre Calc, avec cas concret.</p>
<p><span id="more-7708"></span></p>
<p>Hier,<strong> c'était le rush</strong> à partir de 23h pour bricoler le plus rapidement possible <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2014/05/25/politique/europeennes-les-resultats-strasbourg-par-bureau-de-vote/">des cartes de Strasbourg par bureau de vote</a> et <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2014/05/25/politique/europeennes-les-resultats-dans-le-bas-rhin-par-commune/">du Bas-Rhin par commune</a>.</p>
<p>J'avais déjà les tracés géographiques de toutes les zones, et le squelette des fichiers de résultats qui allaient être envoyés. La seule difficulté allait être<strong> de déterminer rapidement le vainqueur de chaque entité</strong>, pour<strong> lui rattacher ensuite une couleur hexadécimale</strong>.</p>
<p>Concrètement, si dans la commune X le parti Y est arrivé en tête, il faut que dans la colonne "couleur" corresponde à la teinte prévue pour lui.</p>
<p>Y a-t-il une fonction qui peut nous aider dans cette tâche ? Il y en a en fait deux : <strong>RECHERCHE() et RECHERCHEV()</strong>.</p>
<h1>Afficher le nom du vainqueur avec RECHERCHE()</h1>
<p>Prenons le cas concret ci-dessous. J'ai séparé mes résultats en brut d'un côté et en pourcentage de l'autre, et décidé d'insérer entre les deux une colonne "Vainqueur" et une colonne "Code couleur" :</p>
<p style="text-align: center;"><a target="_blank" href="media/a6553711.tuto_recherche1.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche1.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7709" src="media/303edfcb.tuto_recherche1-300x157.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche1-300x157.png" alt="tuto_recherche1" width="300" height="157" /></a><br />
Cliquez pour agrandir l'image</p>
<p>Pour afficher convenablement le nom du vainqueur, il faut bien décomposer les trois facteurs de la fonction RECHERCHE() :</p>
<ul>
<li>d'abord, <strong>le terme recherché</strong>. Cela peut être un nombre, chaîne de caractères, etc... <strong>Mais également une formule</strong>, ce qui nous intéresse franchement dans ce cas. Par exemple MAX(B2:I2) nous renverra le maximum de la ligne 2 entre les colonnes B et I. On l'applique donc sur les cellules correspondant aux résultats bruts des candidats. On pourrait aussi le faire pour des pourcentages, la logique est la même</li>
<li>ensuite, la <strong>zone de recherche</strong>. Dans notre cas, on sélectionne la zone scrutée avant</li>
<li>enfin, la zone de résultat. Là, <strong>il faut survoler les noms des candidats concernés sur la première ligne</strong>.</li>
</ul>
<p>Dans notre cas,on écrirait donc dans la première cellule vide de la colonne "Vainqueur" :</p>
<blockquote><p>=RECHERCHE(MAX(J2:AF2),J2:AF2,J1:AF1)</p></blockquote>
<p>On peut alors vérifier que <strong>le nom renvoyé est bien celui de la ligne J1:AF1 correspondant au maximum de la ligne J2:AF2</strong>.</p>
<p>L'homme pressé ne manquera alors pas de saisir le coin inférieur droit de sa cellule remplir<strong> pour dupliquer la formule à la ligne suivante</strong>, sauf que s'il fait ça il se retrouvera avec un chiffre, et non un nom.</p>
<p style="text-align: center;"><a target="_blank" href="media/736db849.tuto_recherche2.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche2.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7712" src="media/49d798a5.tuto_recherche2-300x128.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche2-300x128.png" alt="tuto_recherche2" width="300" height="128" /></a><br />
Cliquez pour agrandir l'image</p>
<p>Ceci parce que Calc pensera <strong>que la colonne de référence des noms J1:AF1 est maintenant J2:AF2</strong>. Il faut donc lui expliquer que cette ligne ne bouge jamais, <strong>grâce au symbole $</strong>.</p>
<p>Notre formule finale sera donc :</p>
<blockquote><p>=RECHERCHE(MAX(J2:AF2),J2:AF2,J$1:AF$1)</p></blockquote>
<p>Elle renverra exactement le même résultat pour la première cellule, <strong>en revanche on n'aura plus un nombre mais bien un nom sur la deuxième</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/13050bac.tuto_recherche3.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche3.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7714" src="media/300ef5d2.tuto_recherche3-300x193.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche3-300x193.png" alt="tuto_recherche3" width="300" height="193" /></a><br />
Cliquez pour agrandir l'image</p>
<p>Etonnant, non ?</p>
<h1>Une table de correspondance avec RECHERCHEV()</h1>
<p>Bien, la première étape est réglée. Nous allons maintenant tenter <strong>d'utiliser cette table de correspondance</strong>, placée juste en-dessous de nos données :</p>
<p style="text-align: center;"><a target="_blank" href="media/664e1460.tuto_recherche4.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche4.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7716" src="media/cca13604.tuto_recherche4-300x291.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche4-300x291.png" alt="tuto_recherche4" width="300" height="291" /></a><br />
Cliquez pour agrandir l'image</p>
<p style="text-align: left;">Première sécurité : transformer <strong>le résultat de la formule en vrai texte</strong>. Pour cela, le plus simple est de copier la colonne "Vainqueur" dans une nouvelle colonne, <strong>en faisant un clic droit et en sélectionnant "Collage spécial"</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/12fc582e.tuto_recherche5.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche5.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7718" src="media/9ed53199.tuto_recherche5-300x224.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche5-300x224.png" alt="tuto_recherche5" width="300" height="224" /></a><br />
Cliquez pour agrandir l'image</p>
<p>De là, on va simplement décocher "Tout insérer", <strong>ne laisser que "Texte" coché</strong>, et cliquer sur OK :</p>
<p style="text-align: center;"><a target="_blank" href="media/e52c92b0.tuto_recherche6.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche6.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7720" src="media/3c7d4bbe.tuto_recherche6-300x208.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche6-300x208.png" alt="tuto_recherche6" width="300" height="208" /></a><br />
Cliquez pour agrandir l'image</p>
<p style="text-align: left;">On peut alors <strong>vérifier dans la nouvelle colonne qu'on a bien du texte</strong> et plus une formule, ce qui va nous permettre de supprimer l'autre :</p>
<p style="text-align: center;"><a target="_blank" href="media/66e65e45.tuto_recherche7.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche7.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7722" src="media/2147cfe9.tuto_recherche7-300x114.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche7-300x114.png" alt="tuto_recherche7" width="300" height="114" /></a><br />
Cliquez pour agrandir l'image</p>
<p>On peut maintenant utiliser la formule RECHERCHEV(), dont la syntaxe est la suivante :</p>
<ul>
<li>d'abord, <strong>le terme recherché</strong>. Dans ce cas, il va correspondre au nom du vainqueur</li>
<li><strong>la matrice de référence</strong>. Dans notre cas, il va s'agir de la table de correspondance décrite avant</li>
<li>troisièmement,<strong> l'indice de tri</strong>. Il correspond à la <strong>colonne de référence pour le résultat que l'on souhaite</strong>. Dans notre cas, on va choisir 2, puisque c'est dans la seconde colonne de la matrice que se trouvent les codes couleur</li>
<li>enfin l'ordre de tri. <strong>On le paramètre à 0</strong> pour bien stipuler qu'il faut que la valeur recherchée corresponde précisément à l'exact premier terme rencontré</li>
</ul>
<p>Appliquée à notre cas, cette formule donne :</p>
<blockquote><p>=RECHERCHEV(AG2,A$150:B$155,2,0)</p></blockquote>
<p>On a placé des $ sur les bords de la matrice pour les mêmes raisons que les précédentes. Un cliqué-glissé après, voilà le résultat :</p>
<p style="text-align: center;"><a target="_blank" href="media/be35eb90.tuto_recherche8.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche8.png" rel="lightbox[7708]" title="Automatiser une saisie sur Libre Calc avec une table de correspondance"><img class="aligncenter size-medium wp-image-7724" src="media/75d1d627.tuto_recherche8-300x135.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/05/tuto_recherche8-300x135.png" alt="tuto_recherche8" width="300" height="135" /></a><br />
Cliquez pour agrandir l'image</p>
<p>Emballé, c'est pesé !</p>
<h1>Remerciements</h1>
<p>Merci à <a target="_blank" href="https://twitter.com/joelmatriche">Joël Matriche</a>, <a target="_blank" href="http://joelmatriche.com/">véritable "excpert"</a>, qui m'a aiguillé vers ces formules bien pratiques !</p>


feed_id: http://blog.m0le.net/?p=7676
title: Nono's Songs : Nena - 99 Luft Balons
uri: Nono-s-Songs-Nena-99-Luft-Balons
url: http://blog.m0le.net/2014/05/26/nonos-songs-nena-99-luft-balons/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Nena </strong>qui nous propose <strong>99 Luft Balons<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Nena-_99luft_Balons' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FNena-_99luft_Balons.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/533da612.Nena-_99luft_Balons.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Nena-_99luft_Balons.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/25d602d0.Nena-_99luft_Balons.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Nena-_99luft_Balons.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7592
title: Glimmer, pour un réveil plus doux
uri: Glimmer-pour-un-réveil-plus-doux
url: http://blog.m0le.net/2014/05/28/glimmer-pour-un-reveil-plus-doux/
content:
<p>Coucou les gens ! Vous je sais pas, mais moi le matin, le réveil est toujours trop difficile...<br />
<span id="more-7592"></span><br />
<strong>Le réveil matin qui m'agresse</strong> et me sort de mon sommeil comme ça, en ninja qui prévient pas et vient frapper mes oreilles de plein fouet (quoi comment ça je dramatise <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" />  ?)...</p>
<p><strong>J'ai décidé de changer de réveil</strong>, car soyons sérieux deux minutes, rompre avec son réveil c'est comme sonner à la porte de Polo. </p>
<p>Il me fallait donc <strong>un réveil plus doux</strong>, plus gentil avec moi, plus affectueux (enfin qui ne m'arrache pas les oreilles en gros !). </p>
<p>Je suis alors tombée sur <a target="_blank" href="https://play.google.com/store/apps/details?id=com.vuxia.glimmer&amp;referrer=utm_source%3Dappgratis">Glimmer</a>, un réveil matin tout doux <strong>qui allume le téléphone une demi-heure avant l’heure</strong> avec la luminosité de l’écran au minimum. </p>
<p>Puis lentement la luminosité augmente jusqu’au réveil. Et ça, ça n'a pas de prix ! Pour tout le reste... Ok, je sors !</p>
<p style="text-align: center"><a target="_blank" href="media/f6b9ebde.glimmer-application-qui-vous_6o317_315grx.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/glimmer-application-qui-vous_6o317_315grx.jpg" rel="lightbox[7592]" title="Glimmer, pour un réveil plus doux"><img class="alignnone size-medium wp-image-7595" alt="glimmer-application-qui-vous_6o317_315grx" src="media/1e980110.glimmer-application-qui-vous_6o317_315grx-300x168.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/04/glimmer-application-qui-vous_6o317_315grx-300x168.jpg" width="300" height="168" /></a></p>
<p><strong>D'autres fonctions sont personnalisables</strong>, moyennant monnaie évidemment. Mais étant donné que je me lève désormais du bon pied, la version gratuite est déjà pas mal de mon point de vue <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" />  !</p>


feed_id: http://blog.m0le.net/?p=7730
title: Autopsie d'une dataviz [7] : une application MapBox mélangeant GeoJson et calques tuiles
uri: Autopsie-d-une-dataviz-7-une-application-MapBox-mélangeant-GeoJso
url:
http://blog.m0le.net/2014/05/31/autopsie-dune-dataviz-7-une-application-mapbox-melangeant-geojson-et-calques-tuiles/

content:
<p>Retour sur la création pour Rue89Strasbourg d'une application cartographique mélangeant plusieurs types de données rencontrées lors de précédentes autopsies.</p>
<p><span id="more-7730"></span></p>
<p>Récemment, j'ai recyclé un jeu de données <a target="_blank" href="http://opendata.alsace.fr/">fourni par la région Alsace</a> pour <strong>créer une carte du patrimoine classé <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2014/05/22/culture/deux-balades-pour-decouvrir-le-patrimoine-excentre-de-strasbourg/">situé en périphérie de Strasbourg</a></strong>.</p>
<p>Il n'y a pas eu de difficulté particulière, <strong>mais j'ai utilisé beaucoup de choses évoquées précédemment sur ce blog</strong>. C'est donc l'occasion de faire un petit inventaire <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> </p>
<h1>Les méthodes utilisées</h1>
<p>Pour cette carte, j'ai créé spécialement :</p>
<ul>
<li><strong>un fond de carte</strong> peaufiné depuis l'éditeur <a target="_blank" href="https://www.mapbox.com/">de MapBox</a>, inspiré d'un fourni <a target="_blank" href="http://snazzymaps.com/">par Snazzy Maps</a>. Il s'agit en fait <strong>de celui nommé "Vintage Blue"</strong> <a target="_blank" href="http://blog.m0le.net/2014/02/17/des-snazzy-maps-sur-mapbox/">dans cette liste</a></li>
<li>un GeoJson <strong>où chaque marqueur correspond à un monument</strong>. Le fichier a été créé<strong> depuis une feuille de calcul Google</strong>, en utilisant <a target="_blank" href="https://github.com/mapbox/geo-googledocs">un script dédié pondu par l'équipe de MapBox</a>. Ce dernier <a target="_blank" href="http://blog.m0le.net/2014/04/13/transformer-rapidement-un-geocode-en-coordonnees/">transforme efficacement un geocode</a></li>
<li><strong>deux calques tuiles</strong> (<a target="_blank" href="http://blog.m0le.net/2014/02/11/autopsie-dune-dataviz-5-2-des-mbtiles-pour-eviter-les-tuiles/">ou Tilelayers</a> pour les puristes) correspondant aux deux circuits proposés dans l'article. Je les ai dessinés moi-même sur l'éditeur de MapBox, puis convertis <a target="_blank" href="https://www.mapbox.com/tilemill/">sur Tilemill</a></li>
<li>un code qui combine <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/layers/">cet exemple</a>, <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/load-geojson/">celui-ci</a>, <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/centering-markers/">celui-ci</a> et <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/custom-popup/">celui-là</a></li>
</ul>
<h1>Le code</h1>
<p>A partir de là, le reste est limpide. Je précise que les images correspondent <strong>à des photos retaillées stockées dans un dossier voisin au projet.</strong></p>
<p>Pour la feuille de style, ça donne ça :</p><pre class="crayon-plain-tag">body { margin:0; padding:0; font-family:Arial; }
  p {left:0; top:5; font-size:1em;}
  h4 {  font-size:0.9em; margin-top:5px;}
  h3 {  font-size:1em;margin-top:5px;}
  #map { position:absolute; top:0; bottom:0; width:500px; height:560px; }
  #map-ui {
    position: absolute;
    top: 480px;
    left: 120px;
    list-style: none;
    margin: 0;
    padding: 0;
    z-index: 100;
}

#map-ui li{
	float: left;
	border-color: fff;
	padding: 10px;
}

#map-ui a {
    font: normal 13px/18px 'Helvetica Neue', Helvetica, sans-serif;
    background: #FFF;
    color: #3C4E5A;
    display: block;
    margin: 0;
    padding: 5px;
    border: 2px solid #fff;
    border-bottom-width: 0;
    min-width: 95px;
    padding: 10px;
    text-decoration: none;
    text-align: center;
    float: left;
}

#map-ui a:hover {
    background: #ECF5FA;
}

#map-ui li:last-child a {
    border-bottom-width: 1px;
    -webkit-border-radius: 0 0 3px 3px;
    border-radius: 0 0 3px 3px;
}

#map-ui li:first-child a {
    -webkit-border-radius: 3px 3px 0 0;
    border-radius: 3px 3px 0 0;
}

#map-ui a.active {
    background: #007bff;
    border-color: #007bff;
    color: #FFF;
}</pre><p>Et pour le JavaScript :</p><pre class="crayon-plain-tag">// on commence par la déclaration de la carte
var map = L.mapbox.map('map', 'raphadasilva.h9faifpd', {minZoom: 12,maxZoom: 16,zoomControl: false})
    .setView([48.57, 7.75], 12);
var ui = document.getElementById('map-ui');

// on déclare un premier calque qui servira plus tard pour les marqueurs
var myLayer = L.mapbox.featureLayer().addTo(map);

// on ajoute ensuite deux calques "tuile" (pas besoin d'interactivité dans notre cas)
addLayer(L.mapbox.tileLayer('raphadasilva.jsnyiudi'), 'Vélo', 1);
addLayer(L.mapbox.tileLayer('raphadasilva.63aexw29'), 'Bus et tram', 2);


// on détaille la fonction addLayer() qui permet notamment de cocher/décocher un calque "tuile"
function addLayer(layer, name, zIndex) {
    layer
        .setZIndex(zIndex)
        .addTo(map);


    var item = document.createElement('li');
    var link = document.createElement('a');

    link.href = '#';
    link.className = 'active';
    link.innerHTML = name;

    link.onclick = function(e) {
        e.preventDefault();
        e.stopPropagation();

        if (map.hasLayer(layer)) {
            map.removeLayer(layer);
            this.className = '';
        } else {
            map.addLayer(layer);
            this.className = 'active';
        }
    };

    item.appendChild(link);
    ui.appendChild(item);
}


// on déclare ensuite nos marqueurs formatés en geojson
var geoJson = [{"features":[{"id":"Cité-jardin du Stockfeld","properties":{"hauteur":208,"marker-color":"#169c40","marker-symbol":"park2","Photo":"images_cartes/cite_jardin_min.JPG","title":"Cité-jardin du Stockfeld","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dcit%e9\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d7\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28cit%e9%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"La cité-jardin du Stockfeld sort de terre au début du XXe siècle, alors que ce nouvel idéal urbain est en plein essor. Destiné à reloger les populations du centre, le projet d\u0027Edouard Schimpf est basé sur des ilôts géométriques.","marker-size":"medium","geo_longitude":7.7722112,"geo_latitude":48.5310042},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7722112,48.5310042]}},{"id":"Ancien silo à céréales","properties":{"hauteur":169,"marker-color":"#169c40","marker-symbol":"industrial","Photo":"images_cartes/silo_min.JPG","title":"Ancien silo à céréales","Auteur":"Mathilde Muller","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dsilo\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d8\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28silo%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Entièrement en béton armé, ce silo à céréales situé à côté de la \u0027Malterie\u0027 (photo) a été totalement démoli, car son inscription aux monuments historiques a été trop tardive.","marker-size":"medium","geo_longitude":7.7910972,"geo_latitude":48.5801361},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7910972,48.5801361]}},{"id":"Propriété Schranz","properties":{"hauteur":180,"marker-color":"#169c40","marker-symbol":"building","Photo":"images_cartes/prop_privee_min.JPG","title":"Propriété Schranz","Auteur":"Elliott Brown","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003ddes%20sarcelles\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d1\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28des%20sarcelles%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"La \"villa Schranz\", du nom de son premier propriétaire Georges-Louis-Nicolas Schranz, a été construite en 1934 par l\u0027architecte colmarien Jules-Pierre Haas. Elle est située à proximité du Rhin Tortu.","marker-size":"medium","geo_longitude":7.7584811,"geo_latitude":48.5442921},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7584811,48.5442921]}},{"id":"Ancienne usine Junkers","properties":{"hauteur":200,"marker-color":"#169c40","marker-symbol":"industrial","Photo":"images_cartes/usine_min.JPG","title":"Ancienne usine Junkers","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dusine\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d54\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28usine%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Datant de 1911, le site industriel Emile Mathis fut notamment réquisitionné par la firme Junkers pendant la Seconde Guerre mondiale. Junkers était à l\u0027époque un fleuron de l\u0027aéronautique allemande.","marker-size":"medium","geo_longitude":7.7436233,"geo_latitude":48.560506},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7436233,48.560506]}},{"id":"Poste d\u0027aiguillage S.N.C.F.","properties":{"hauteur":169,"marker-color":"#169c40","marker-symbol":"rail","Photo":"images_cartes/poste_min.JPG","title":"Poste d\u0027aiguillage S.N.C.F.","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dposte\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d4\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28poste%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Ce poste d\u0027aiguillage du réseau ferroviaire d\u0027Alsace-Lorraine fut construit au début du XXe siècle, sous le contrôle du Reichseisenbahn à Berlin.","marker-size":"medium","geo_longitude":7.7522428,"geo_latitude":48.563387},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7522428,48.563387]}},{"id":"Maison Bowe","properties":{"hauteur":180,"marker-color":"#169c40","marker-symbol":"building","Photo":"images_cartes/prop_privee_min.JPG","title":"Maison Bowe","Auteur":"Elliott Brown","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dmaison\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d52\u0026GRP\u003d1\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28maison%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Cette résidence, inscrite aux monuments historiques en 1995, a une forte influence anglo-saxonne.","marker-size":"medium","geo_longitude":7.7568121,"geo_latitude":48.5690094},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7568121,48.5690094]}},{"id":"Faculté de Droit","properties":{"hauteur":176,"marker-color":"#169c40","marker-symbol":"college","Photo":"images_cartes/faculte_min.JPG","title":"Faculté de Droit","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003ddroit\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d3\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28droit%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"La Faculté de droit de l\u0027Esplanade est la plus ancienne du campus de ce quartier érigé au début des années 1960. Ce bâtiment imaginé par Roger Hummel et Alfred Kronenberger est remarquable par son plan en courbe et les couleurs de sa façade. ","marker-size":"medium","geo_longitude":7.769066,"geo_latitude":48.578906},"type":"Feature","geometry":{"type":"Point","coordinates":[7.769066,48.578906]}},{"id":"Château d\u0027eau","properties":{"hauteur":212,"marker-color":"#169c40","marker-symbol":"water","Photo":"images_cartes/chateau_min.JPG","title":"Château d\u0027eau","Auteur":"Mathilde Muller","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dchateau\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d8\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28chateau%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Construit à la fin du XIXe siècle, ce château d\u0027eau abrite depuis janvier 2014 le Musée vodou de Strasbourg.","marker-size":"medium","geo_longitude":7.7283605,"geo_latitude":48.5804959},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7283605,48.5804959]}},{"id":"Eglise et presbytère protestants Saint-Paul de Koenigshoffen","properties":{"hauteur":144,"marker-color":"#169c40","marker-symbol":"religious-christian","Photo":"images_cartes/presbytere_min.JPG","title":"Eglise et presbytère protestants Saint-Paul de Koenigshoffen","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dsaint-paul\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d2\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28saint-paul%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"L\u0027église et le presbytère protestants Saint-Paul de Koenigshoffen sont érigés par Edouard Schimpf entre 1911 et 1914. Ces édifices religieux, construits en briques apparentes, se situent sur les vestiges d\u2019un sanctuaire de Mithra.","marker-size":"medium","geo_longitude":7.7143929,"geo_latitude":48.5782241},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7143929,48.5782241]}},{"id":"Cimetière juif de Koenigshoffen","properties":{"hauteur":179,"marker-color":"#169c40","marker-symbol":"religious-jewish","Photo":"images_cartes/cimetierej_min.JPG","title":"Cimetière juif de Koenigshoffen","Auteur":"Mathilde Muller","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dcimetiere\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d4\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28cimetiere%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Le cimetière israélite de Koenigshoffen fut en activité de 1801 à 1918. De nombreux notables artistes, industriels, militaires et religieux de la ville y reposent.","marker-size":"medium","geo_longitude":7.7164003,"geo_latitude":48.5781178},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7164003,48.5781178]}},{"id":"Breuscheckschlössel","properties":{"hauteur":178,"marker-color":"#169c40","marker-symbol":"monument","Photo":"images_cartes/breusch_min.jpg","title":"Breuscheckschlössel","Auteur":"Ji-Elle (CC BY-SA)","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dplaisance\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d4\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28plaisance%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Ce \"petit château de Breuscheck\", aussi appelé Tour du Schloessel, est une ancienne tour de guet dont la présence est attestée dès le XIVe siècle.","marker-size":"medium","geo_longitude":7.7144867,"geo_latitude":48.5765297},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7144867,48.5765297]}},{"id":"Enceinte urbaine médiévale","properties":{"hauteur":200,"marker-color":"#169c40","marker-symbol":"monument","Photo":"images_cartes/enceinte_min.JPG","title":"Enceinte urbaine médiévale","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003denceinte\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d4\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28enceinte%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Ce mur d\u0027enceinte remonte au XIVe siècle, alors que la ville connaît son troisième agrandissement.","marker-size":"medium","geo_longitude":7.7379798,"geo_latitude":48.5874239},"type":"Feature","geometry":{"type":"Point","coordinates":[7.7379798,48.5874239]}},{"id":"Château de Pourtalès","properties":{"hauteur":"","marker-color":"#169c40","marker-symbol":"building","Photo":"images_cartes/pourtales_min.JPG","title":"Château de Pourtalès","Auteur":"Mathilde Muller","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dpourtal%e8s\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d2\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28pourtal%e8s%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Situé dans un somptueux parc, ce château du XVIIIe siècle porte le nom du Comte de Pourtalès mais fut en réalité bâtie par la famille industrielle Bussière. C\u0027est aujourd\u0027hui un hôtel de luxe.","marker-size":"medium","geo_longitude":7.79994752909272,"geo_latitude":48.60845745},"type":"Feature","geometry":{"type":"Point","coordinates":[7.79994752909272,48.60845745]}},{"id":"Citadelle et abords","properties":{"hauteur":200,"marker-color":"#169c40","marker-symbol":"monument","Photo":"images_cartes/citadelle_min.JPG","title":"Citadelle et abords","Auteur":"Raphaël da Silva","largeur":300,"source":"http://www.culture.gouv.fr/public/mistral/merimee_fr?ACTION\u003dRETROUVER\u0026FIELD_1\u003dcmer1\u0026VALUE_1\u003dstrasbourg\u0026FIELD_2\u003dcmer4\u0026VALUE_2\u003d\u0026FIELD_3\u003dcmer5\u0026VALUE_3\u003d\u0026FIELD_4\u003dAUTR\u0026VALUE_4\u003d\u0026FIELD_5\u003dTOUT\u0026VALUE_5\u003dabords\u0026FIELD_6\u003dtitre%20courant\u0026VALUE_6\u003d\u0026FIELD_7\u003ddate%20protection\u0026VALUE_7\u003d\u0026FIELD_8\u003dDOSURLP\u0026VALUE_8\u003d%20\u0026NUMBER\u003d15\u0026GRP\u003d0\u0026REQ\u003d%28%28strasbourg%29%20%3aLOCA%2cPLOC%2cINSEE%20%20ET%20%20%28%28abords%29%20%3aTOUT%20%29%29\u0026USRNAME\u003dnobody\u0026USRPWD\u003d4%24%2534P\u0026SPEC\u003d9\u0026SYN\u003d1\u0026IMLY\u003d\u0026MAX1\u003d1\u0026MAX2\u003d100\u0026MAX3\u003d100\u0026DOM\u003dTous","description":"Ce parc abrite des vestiges des fortifications imaginées par Vauban, qui subirent un sévère siège lors de la guerre de 1871","marker-size":"medium","geo_longitude":7.77491646057333,"geo_latitude":48.5757219863234},"type":"Feature","geometry":{"type":"Point","coordinates":[7.77491646057333,48.5757219863234]}}],"type":"FeatureCollection"}
];

// on prépare la fonction qui customise les infobulles
myLayer.on('layeradd', function(e) {
    var marker = e.layer,
        feature = marker.feature;

    // et voilà pour le contenu de chaque infobulle
    var popupContent =  '&lt;h4&gt;' + feature.properties.title + '&lt;/h4&gt;' +
                            '&lt;p style="text-align:center;"&gt;&lt;img src="' + feature.properties.Photo + '"&gt;&lt;/p&gt;' +
                            '&lt;p style="font-size:0.6em;text-align:center;heigth:15px;"&gt;Photo : ' + feature.properties.Auteur + '&lt;/p&gt;' +
                        '   &lt;p style="font-size:0.8em;text-align:left;"&gt;' + feature.properties.description + '&lt;/p&gt;' +
                        '&lt;a target="_blank" href="' + feature.properties.source + '"&gt;&lt;p style="font-size:0.7em;text-align:left;"&gt;Source&lt;/p&gt;&lt;/a&gt;';

    // plus d'info là : http://leafletjs.com/reference.html#popup
    marker.bindPopup(popupContent,{
        closeButton: true,
        maxWidth: 300
    });
});

// plus qu'à charger tout ça
myLayer.setGeoJSON(geoJson);   

// cette petite fonction sert à centrer la carte sur un marqueur et à se déplacer de 190 pixels vers le bas pour un meilleur affichage de l'infobulle
 myLayer.on('click', function(e) {
        map.panTo(e.layer.getLatLng());
        map.panBy([0, -190]);
    });</pre><p>Pour ceux qui voudraient voir tout le code, <a target="_blank" href="https://github.com/raphadasilva/patrimoine_excentre_strasbourg/blob/master/patex.html">je l'ai mis en ligne sur GitHub</a>.</p>


feed_id: http://blog.m0le.net/?p=7679
title: Nono's Songs : The Cardigans - My Favourite Game
uri: Nono-s-Songs-The-Cardigans-My-Favourite-Game
url: http://blog.m0le.net/2014/06/02/nonos-songs-the-cardigans-my-favourite-game/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>The Cardigans </strong>qui nous propose <strong>My Favourite Game<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/The_Cardigans_My_Favourite_Game' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FThe_Cardigans_My_Favourite_Game.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/be72dd50.The_Cardigans_My_Favourite_Game.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Cardigans_My_Favourite_Game.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/8c57117c.The_Cardigans_My_Favourite_Game.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Cardigans_My_Favourite_Game.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7737
title: Braiiiin Braiiiin
uri: Braiiiin-Braiiiin
url: http://blog.m0le.net/2014/06/05/braiiiin-braiiiin/
content:
<p>Les jeux de zombies ont littéralement envahi Android, ce n'est un secret pour personne. Perso, <strong>après m'être amusée puis lassée de Zombie Tsunami</strong>, j'ai trouvé cette app très sympa : <a target="_blank" href="https://play.google.com/store/apps/details?id=air.Zombie300&amp;referrer=utm_source%3Dappgratis">Zombie 300</a> !</p>
<p><span id="more-7737"></span></p>
<p style="text-align: center;"><a target="_blank" href="media/5cf89bd8.zombie300-1.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/zombie300-1.png" rel="lightbox[7737]" title="Braiiiin Braiiiin"><img class="size-medium wp-image-7738 aligncenter" src="media/f2d5447e.zombie300-1-180x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/zombie300-1-180x300.png" alt="Zombie 300" width="180" height="300" /></a></p>
<p>Le but du jeu ? Tout simplement <strong>écrabouiller les zombies a l'aide de vos petits (ou gros) doigts</strong> !</p>
<p>Et en plus les bruitages sont très sympas, vous verrez <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" />  !</p>
<p>Un peu crado, totalement jouissif, <strong>mais surtout très drole</strong>, un jeu addictif c'est sûr !</p>
<p style="text-align: center;">
<p><a target="_blank" href="//www.youtube.com/watch?v=fdfPXF3317k">//www.youtube.com/watch?v=fdfPXF3317k</a></p>
</p>
<p>Braiiiiin, braiiiiiiin !!!!!</p>


feed_id: http://blog.m0le.net/?p=7682
title: Nono's Songs : The Connells - '74 '75
uri: Nono-s-Songs-The-Connells-74-75
url: http://blog.m0le.net/2014/06/09/nonos-songs-the-connells-74-75/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip non officiel de <strong> The Connells </strong>qui nous propose <strong>'74 '75<br />
</strong></p>
<p style="text-align: center;"><!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/The_Connells_-_74-_75' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FThe_Connells_-_74-_75.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/5258bbe6.The_Connells_-_74-_75.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Connells_-_74-_75.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/18b7ff9e.The_Connells_-_74-_75.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Connells_-_74-_75.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7746
title: L'intrigue de "From Hell" en une carte
uri: L-intrigue-de-From-Hell-en-une-carte
url: http://blog.m0le.net/2014/06/09/lintrigue-de-from-hell-en-une-carte/
content:
<p>Parmi les grandes différences entre la BD "From Hell" et son adaptation cinématographique, il y a une carte qui donne le ton de cette plongée en enfer. On y retrouve les grandes lignes métaphysiques du Jack l'Eventreur choisi par Alan Moore.</p>
<p><span id="more-7746"></span><br />
Ceux qui se sont un peu renseignés sur <a target="_blank" href="http://fr.wikipedia.org/wiki/Alan_Moore">le scénariste de comics Alan Moore</a> le savent : <strong>ce dernier déteste copieusement les adaptations audiovisuelles de ses </strong><b>œuvres</b> (parmi lesquelles "V pour Vendetta", "The Watchmen", "La Ligue des gentlemen extraordinaires", "From Hell"), à tel point qu'il a refusé d'apparaître au générique de certains de ces films.</p>
<p>Pour avoir lu la plupart de ses BD, on aurait du mal à lui donner tort, tant la machine hollywoodienne a retiré des éléments très importants de ses œuvres. C'est notamment le cas de la fin <a target="_blank" href="http://blog.m0le.net/2012/01/11/v-un-anarchiste-etroitement-lie-au-fascime/">de "V pour Vendetta"</a>, et <strong>c'est encore plus criant pour "From Hell"</strong>.</p>
<p>Mais d'abord, un peu de genèse : Alan Moore a imaginé cette BD <strong>à l'approche du centenaire des meurtres de Whitechapel</strong>, durant lesquels s'est tristement illustré un tueur en série <strong>surnommé Jack l'Eventreur et jamais clairement identifié</strong>.</p>
<p>Moore a pris comme base à son travail <strong>une thèse conspirationniste</strong> <a target="_blank" href="http://fr.wikipedia.org/wiki/Stephen_Knight">du journaliste Stephen Knight</a>, qui affirma dans les années 1970 que les atrocités de Whitechapel avaient été perpétrées par un médecin,<strong> lui-même commandité par des francs-maçons soucieux de préserver un secret royal</strong> (grosso modo l'existence d'un bâtard).</p>
<p>Moore précise bien dans ses annexes qu'il ne croit pas aux allégations de Knight, <strong>mais que cette théorie du complot était très intéressante à exploiter d'un point de vue narratif</strong>. Il choisira comme tueur en série <a target="_blank" href="http://fr.wikipedia.org/wiki/William_Gull">le médecin royal William Gull</a>,une rumeur de temps à autre reprise.</p>
<p>Moore s'est parallèlement énormément documenté pour restituer l'ambiance très inégalitaire de l'époque victorienne, et <strong>a décidé de brosser son Jack l'Eventreur sous les traits d'un misogyne particulièrement effroyable</strong>.</p>
<h1>Une carte de l'Enfer</h1>
<p>Ce qui rend encore plus horrible le William Gull d'Alan Moore que celui du film, ce sont <strong>ses réflexions métaphysiques à propos de la domination masculine</strong>, domination qu'il entend un peu plus propager par ses prochains assassinats.</p>
<p>Lors d'une balade en calèche avec son complice, <strong>il commente régulièrement différents monuments et lieux du Londres de 1888</strong>, illustrant selon lui ce combat millénaire entre le masculin Dionysos et la féminine Diane.</p>
<p>Une fois reliés entre eux, les arrêts successifs dressent <strong>une signification assez équivoque</strong> du projet de Gull (en bleu, les étapes de la balade, en rouge les meurtres attribués à Jack l'Eventreur) :<br />
<iframe width="550" height="470" scrolling="no" src="http://raphi.m0le.net/data/From_Hell/1888.html"></iframe></p>
<p>Il y a de quoi frissonner... Mais en y réfléchissant bien, <strong>on peut assez facilement dresser une carte similaire</strong>, puisque <strong>le pentagramme n'est pas régulier</strong>. Il suffit par exemple de choisir aux extrémités de certaines branches de très grands lieux (une île, un champ, etc).</p>
<p>Voici par exemple <strong>ce que l'on pourrait obtenir pour Paris</strong>, en piochant grosso modo le même type de lieux (monuments dressés, cimetières, lieux en rapport avec la mort, parcs, rues) :<br />
<iframe width="550" height="470" scrolling="no" src="http://raphi.m0le.net/data/From_Hell/parisata.html"></iframe></p>


feed_id: http://blog.m0le.net/?p=7770
title: Gravity Maze, sans dessus dessous
uri: Gravity-Maze-sans-dessus-dessous
url: http://blog.m0le.net/2014/06/11/gravity-maze-sans-dessus-dessous/
content:
<p>Cette semaine, je reviens avec un jeu (et oui, encore un). J'ai choisi cette fois-ci un casse-tête, Gravity Maze.</p>
<p><span id="more-7770"></span><br />
<strong>Ce jeu me rappelle un peu mon enfance</strong>. Mais oui, vous savez, ce type de trucs :</p>
<p style="text-align: center;"><a target="_blank" href="media/583a2d26.bois-labyrinthe-casse-tete-tp_5131046309919875430f.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/bois-labyrinthe-casse-tete-tp_5131046309919875430f.jpg" rel="lightbox[7770]" title="Gravity Maze, sans dessus dessous"><img class="alignnone size-medium wp-image-7773" src="media/205f3e3a.bois-labyrinthe-casse-tete-tp_5131046309919875430f-300x235.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/bois-labyrinthe-casse-tete-tp_5131046309919875430f-300x235.jpg" alt="bois-labyrinthe-casse-tete-tp_5131046309919875430f" width="300" height="235" /></a></p>
<p>Moi j'y passais des heures, j'adorais ça !</p>
<p>Du coup, quand je suis tombée sur <a target="_blank" href="https://play.google.com/store/apps/details?id=com.geemzo.gravitymazegame">Gravity Maze</a>, <strong>je n'ai pas pu m'empêcher de le télécharger et d'y jouer</strong> (des minutes seulement, parce qu'entre temps j'ai grandi, j'ai plus le temps m't'vois ?!)</p>
<p style="text-align: center;"><a target="_blank" href="media/e023c801.maze.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/maze.png" rel="lightbox[7770]" title="Gravity Maze, sans dessus dessous"><img class="alignnone size-medium wp-image-7771" src="media/c6f2a4e1.maze-300x179.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/maze-300x179.png" alt="maze" width="300" height="179" /></a></p>
<p>Dans ce jeu, il n'est pas question de billes dans un labyrinthe, <strong>mais de sortes de pneus poilus</strong> (chacun y voit ce qu'il veut bien, hein) qu'il faut mener à bon port.<br />
Et avec<strong> 45 niveaux de difficultés</strong>, il y a de quoi passer de bons moments dessus <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
<p>Enjoy it <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /></p>


feed_id: http://blog.m0le.net/?p=7780
title: Des paradoxes statistiques plus répandus qu'on ne croit
uri: Des-paradoxes-statistiques-plus-répandus-qu-on-ne-croit
url: http://blog.m0le.net/2014/06/14/des-paradoxes-statistiques-plus-repandus-quon-ne-croit/
content:
<p>Les paradoxes statistiques sont des pièges sur lesquels on tombe bien plus souvent que ce que l'on pourrait penser à première vue. Illustrations avec le paradoxe de Simpson, un cas de politique fiction, et quelques exemples.</p>
<p><span id="more-7780"></span></p>
<h1>Quand les pourcentages se contredisent</h1>
<p>Le paradoxe de Simpson, aussi appelé effet de Yule-Simpson, <strong>est sans doute le plus célèbre de ces pièges statistiques</strong>. On l'observe lorsque les succès d'un groupe s'inversent une fois ces derniers combinés.</p>
<p>Plus concrètement, <strong>prenons l'exemple d'un traitement de calculs</strong> (autre qu'une calculatrice :-)), directement inspiré <a target="_blank" href="http://fr.wikipedia.org/wiki/Paradoxe_de_Simpson">par la page Wikipédia consacrée à ce paradoxe</a>.</p>
<p>Si on compare, sur 350 essais chacun, le traitement A et le traitement B, le succès de B ne fait<em> a priori</em> aucun doute :</p>
<p><strong><iframe width="550" height="370" src="http://raphi.m0le.net/data/paradox_stat/para_simpson_1.html" scrolling="no"></iframe></strong><br />
<strong> Mais si on segmente les essais entre "petits calculs" et "gros calculs"</strong>, la tendance s'inverse comme par magie, <strong>et c'est le traitement A qui devient le plus efficace pour les deux types de calculs</strong> :<br />
<iframe width="550" height="370" src="http://raphi.m0le.net/data/paradox_stat/para_simpson_2.html" scrolling="no"></iframe><br />
Comment cette inversion des succès peut-elle se produire ? Sans trop entrer dans les détails, <strong>on a parlé jusqu'à présent en pourcentages, donc en valeurs relatives</strong>.</p>
<p>Une grande partie de l'explication vient <strong>quand on observe le détail de ces tests, échecs inclus, en valeur absolue</strong> :<br />
<iframe width="550" height="370" src="http://raphi.m0le.net/data/paradox_stat/para_simpson_3.html" scrolling="no"></iframe></p>
<p><strong>Les échantillons</strong> comparés pour chaque type de calculs <strong>sont très inégaux</strong>, <strong>ce qui est l'une des clés</strong> pour comprendre ce paradoxe.</p>
<h2>Plus concrètement</h2>
<p>Imaginons qu'un institut quelconque diffuse une étude à la conclusion tranchée : <strong>les Alsaciens sont 2,5% plus nombreux à mourir de malaises cardiaques</strong> que l'ensemble des Français.</p>
<p><strong>Avant de se creuser la tête</strong> pour imaginer d'éventuelles causes (choucroutes trop garnies, Route des vins, etc...), le bon réflexe serait peut-être d'essayer <strong>de voir si une segmentation des résultats existe</strong>.</p>
<p>Par exemple, peut-être que les Alsaciens meurent plus souvent de malaises cardiaques <strong>car les individus de plus de 70 ans sont surreprésentés dans l'étude </strong>par rapport aux autres tranches d'âge.</p>
<p>Autre exemple : ceux qui lisent régulièrement ce blog se souviennent peut-être <a target="_blank" href="http://blog.m0le.net/2013/10/26/les-donnees-sont-elles-si-objectives-que-ca/">d'un autre exemple de paradoxe</a> où, à partir des mêmes chiffres, <strong>on pouvait à la fois affirmer que la France accueillait beaucoup et peu de réfugiés</strong>. En ayant raison à chaque fois.</p>
<p>Le paradoxe apparaissait notamment parce que certains pays de l'UE avaient <strong>un volume de dossiers traités ridicule par rapport à celui de la France</strong>, et qu'ils les acceptaient quasiment tous.</p>
<h1>Premier en moyenne, mais deuxième en tout</h1>
<p>Lors des européennes du 25 mai, on a assisté à un triomphe du FN (et aussi de l'abstention, mais passons pour cette fois) dans la plupart des grandes circonscriptions françaises.</p>
<p>Dans le Grand-Est, <strong>le Bas-Rhin ne faisait pas exception</strong>, comme on peut le voir sur <strong>cette carte des résultats provisoires</strong> (en noir, les villes où le FN est en tête, en bleu l'UMP, et en rose le PS) :<br />
<iframe width="570" height="550" src="https://www.google.com/fusiontables/embedviz?q=select+col4%3E%3E1+from+1IztPCM3d1YEOI-JPO3RMhWO6KCozuoX-j47l8l38&amp;viz=MAP&amp;h=false&amp;lat=48.736869832489276&amp;lng=7.389515034427745&amp;t=1&amp;z=9&amp;l=col4%3E%3E1&amp;y=2&amp;tmplt=2&amp;hml=KML" frameborder="no" scrolling="no"></iframe></p>
<p>Avec cette seule vue d'ensemble, on peut déjà estimer au doigt mouillé que :</p>
<ul>
<li><strong> le PS était le grand perdant</strong> de ce scrutin</li>
<li>le FN et l'UMP sont<strong> assez difficiles à départager</strong></li>
</ul>
<p><strong>Les moyennes des suffrages</strong> de chacun de ces partis <strong>confirment cette tendance</strong> : le PS est loin derrière avec une moyenne de 8,87%, l'UMP deuxième avec 27%, et le FN légèrement en tête avec 29,87%.</p>
<p>Et les nombres d'électeurs dans le département étayent aisément ces observations :<br />
<iframe width="550" height="370" src="http://raphi.m0le.net/data/paradox_stat/euro_prov_67_2014.html" scrolling="no"></iframe></p>
<p>Maintenant, <strong>rêvons un peu d'une démocratie parfaite</strong>, où il y aurait eu 100% de participation et <strong>100% de bulletins exprimés à Strasbourg</strong>, la grande ville du département.</p>
<p><strong>Si l'on projette les mêmes pourcentages</strong> pour le FN, le PS et l'UMP, <strong>les moyennes des uns et des autres ne changent pas et le FN a toujours près de 30%</strong>. En revanche, <strong>les deux premières places du podium s'inversent</strong> comme par enchantement :<br />
<iframe width="550" height="370" src="http://raphi.m0le.net/data/paradox_stat/surplus_fictif.html" scrolling="no"></iframe></p>
<p>Encore une fois, on a absolument pas touché aux valeurs relatives, <strong>en revanche on a copieusement élargi les valeurs absolues,</strong> ce qui nous a donné à l'arrivée un beau paradoxe.</p>
<p>Dans cas, <strong>on doit expliquer que le FN a dominé territorialement le scrutin</strong>, mais a largement perdu le plus gros réservoir de voix, ce qui a sapé son résultat dans le département. Ce qui peut sembler paradoxal s'explique aisément <strong>avec un poil de contextualisation</strong> !</p>
<h2>Quelques conseils pour détecter ces paradoxes</h2>
<ul>
<li><strong>ne jamais s'arrêter aux pourcentages</strong> dans les comparaisons, mais <strong>prendre également les chiffres bruts</strong>, quitte à les demander directement à la source</li>
<li>si <strong>des échantillons de taille très différente</strong> apparaissent, essayer de <strong>les segmenter autour d'une variable de confusion</strong> (la taille des calculs pour le traitement médical, l'âge des répondants pour l'étude sur les malaises cardiaques, etc...) pour vérifier si oui ou non on est face à un paradoxe de Simpson</li>
<li><strong>ne jamais s'interdire une contextualisation</strong> des données que l'on traite</li>
</ul>


feed_id: http://blog.m0le.net/?p=7782
title: Ne paye plus ton Swiftkey
uri: Ne-paye-plus-ton-Swiftkey
url: http://blog.m0le.net/2014/06/18/ne-paye-plus-ton-swiftkey/
content:
<p>Il y a presque deux ans (whaaaat ?!?!) je vous parlais dans <a target="_blank" href="http://blog.m0le.net/2012/08/11/swiftkey-le-clavier-des-feignasses/">cet article</a> de <a target="_blank" href="https://play.google.com/store/apps/details?id=com.touchtype.swiftkey&amp;hl=fr">Swiftkey</a>, ce clavier génialissime qui n'a toujours pas quitté mon smartphone. Au risque de radoter, j'en remets une couche !</p>
<p><span id="more-7782"></span></p>
<p>Non non, je n'ai même pas d'actions chez eux, c'est juste <strong>parce qu'il devient gratuit</strong> !</p>
<p>Et je pense que ça méritait bien un petit article spécial <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /></p>
<p>D'ailleurs j'en profite pour faire une petite mise à jour de l'article d'il y a deux ans : Swiftkey existe <strong>pour smartphones, mais également pour <a target="_blank" href="https://play.google.com/store/apps/details?id=com.touchtype.swiftkey.tablet.full&amp;hl=fr">tablettes</a></strong>. En revanche, cette dernière mouture n'est <strong>pas (encore ?) gratuite</strong>.</p>
<p style="text-align: center;"><a target="_blank" href="media/f65087d3.Swiftkey.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/Swiftkey.jpg" rel="lightbox[7782]" title="Ne paye plus ton Swiftkey"><img class="alignnone size-medium wp-image-7783" src="media/1fcdb548.Swiftkey-300x146.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/06/Swiftkey-300x146.jpg" alt="Swiftkey" width="300" height="146" /></a></p>


feed_id: http://blog.m0le.net/?p=7828
title: Nono's Songs : Lipps Inc - Funky Town
uri: Nono-s-Songs-Lipps-Inc-Funky-Town
url: http://blog.m0le.net/2014/08/04/nonos-songs-lipps-inc-funky-town/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Lipps Inc </strong>qui nous propose <strong><strong>Funky Town</strong><br />
</strong></p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/LIPPS_INC_-_FUNKY_TOWN' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FLIPPS_INC_-_FUNKY_TOWN.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/822e68a7.LIPPS_INC_-_FUNKY_TOWN.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/LIPPS_INC_-_FUNKY_TOWN.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/bb7fe1d3.LIPPS_INC_-_FUNKY_TOWN.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/LIPPS_INC_-_FUNKY_TOWN.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->


feed_id: http://blog.m0le.net/?p=7831
title: Nono's Songs : House of Pain - Jump Around
uri: Nono-s-Songs-House-of-Pain-Jump-Around
url: http://blog.m0le.net/2014/08/11/nonos-songs-house-of-pain-jump-around/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel (avec sous-titre) de <strong>House of Pain</strong> qui nous propose <strong>Jump Around</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/House_of_Pain_-_Jump_Around' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FHouse_of_Pain_-_Jump_Around.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/f63b2215.House_of_Pain_-_Jump_Around.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/House_of_Pain_-_Jump_Around.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/62a34585.House_of_Pain_-_Jump_Around.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/House_of_Pain_-_Jump_Around.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7837
title: Nono's Songs : The Lumineers - Ho Hey
uri: Nono-s-Songs-The-Lumineers-Ho-Hey
url: http://blog.m0le.net/2014/08/18/nonos-songs-the-lumineers-ho-hey/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>The Lumineers</strong> qui nous propose <strong>Ho Hey</strong></p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/The_Lumineers_-_Ho_Hey_Official_Video' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FThe_Lumineers_-_Ho_Hey_Official_Video.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/2c89b6f7.The_Lumineers_-_Ho_Hey_Official_Video.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Lumineers_-_Ho_Hey_Official_Video.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/0b428439.The_Lumineers_-_Ho_Hey_Official_Video.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Lumineers_-_Ho_Hey_Official_Video.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->


feed_id: http://blog.m0le.net/?p=7840
title: Nono's Songs : Titiyo - Come Along
uri: Nono-s-Songs-Titiyo-Come-Along
url: http://blog.m0le.net/2014/08/25/nonos-songs-titiyo-come-along/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Titiyo</strong> qui nous propose <strong>Come Along</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Titiyo_-_Come_Along' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FTitiyo_-_Come_Along.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/12741043.Titiyo_-_Come_Along.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Titiyo_-_Come_Along.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/3b427088.Titiyo_-_Come_Along.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Titiyo_-_Come_Along.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7844
title: Nono's Songs : White Town - Your Woman
uri: Nono-s-Songs-White-Town-Your-Woman
url: http://blog.m0le.net/2014/09/01/nonos-songs-white-town-your-woman/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>White Town</strong> qui nous propose <strong>Your Woman</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/White_Town_-_Your_Woman' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FWhite_Town_-_Your_Woman.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/17d47781.White_Town_-_Your_Woman.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/White_Town_-_Your_Woman.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/1fdc6fa4.White_Town_-_Your_Woman.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/White_Town_-_Your_Woman.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7852
title: Dubstep tes doigts
uri: Dubstep-tes-doigts
url: http://blog.m0le.net/2014/09/03/dubstep-tes-doigts/
content:
<p>Après avoir passé l'été à tester jeu sur jeu, avec aussi quelques applis utiles (<del>et inutiles</del>), je reviens avec mon cartable pleins de matos rien que pour vous. De rien <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> !</p>
<p><span id="more-7852"></span></p>
<p>J'ai toujours été <strong>une grande fan de Guitar Hero et de Rock Band</strong> (merci à la team de ce blog pour cette découverte qui a clairement marqué nos années d'études sup'), c'est donc<strong> l'esprit plein de nostalgie mais avec une petite màj</strong> que je vous propose un jeu de ce type mais version dubstep (Olivier, si tu nous lis...)</p>
<p><a target="_blank" href="https://play.google.com/store/apps/details?id=net.altivasoft.dubstephero&amp;hl=fr_FR">MPC Dubstep hero</a> est, comme vous l'avez compris, <strong>un "Guitar Hero" sur le thème dubstep</strong>.</p>
<blockquote><p>Ouai c'est bon les jeux du genre on connait"</p></blockquote>
<p>Certes, sauf que ce qui me plaît dans ce volume (outre le fait que ce soit du dubstep), c'est <strong>le multiplayer mode et le fait qu'il y ait plusieurs niveaux de difficulté sur le même morceau</strong>.</p>
<p><a target="_blank" href="media/6a69ee38.mpc-dubstep-menu.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/09/mpc-dubstep-menu.jpg" rel="lightbox[7852]" title="Dubstep tes doigts"><img class="alignnone size-medium wp-image-7853" src="media/a35e4a1f.mpc-dubstep-menu-169x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/09/mpc-dubstep-menu-169x300.jpg" alt="mpc-dubstep-menu" width="169" height="300" /></a> <a target="_blank" href="media/7e4dad8b.mpc-dubstep-1.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/09/mpc-dubstep-1.jpg" rel="lightbox[7852]" title="Dubstep tes doigts"><img class="alignnone size-medium wp-image-7854" src="media/5c046fb8.mpc-dubstep-1-169x300.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/09/mpc-dubstep-1-169x300.jpg" alt="mpc-dubstep-1" width="169" height="300" /></a> <a target="_blank" href="media/d5091f77.MPCdubstep_good.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/09/MPCdubstep_good.png" rel="lightbox[7852]" title="Dubstep tes doigts"><img class="alignnone size-medium wp-image-7855" src="media/7b5c39dc.MPCdubstep_good-187x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/09/MPCdubstep_good-187x300.png" alt="MPCdubstep_good" width="187" height="300" /></a></p>
<p>Mais parce qu'une appli n'est jamais parfaite, <strong>voici les mauvais points</strong> :</p>
<ul>
<li>les pub' sont mal placées</li>
<li>Google Play Store qui s'ouvre entre deux chansons (WTF ?)</li>
<li>les mots "Good" ou "Perfect" qui sont un peu gros</li>
</ul>
<p><a target="_blank" href="//www.youtube.com/watch?v=G8OgtODhCJA">//www.youtube.com/watch?v=G8OgtODhCJA</a></p>
<p>Malgré ces mauvais points quelque peu gênants, j'apprécie le jeu, et j'y joue quand je m'ennuie (salle d'attente, transports, etc.)<br />
Et vous, c'est quoi votre jeu des salles d'attente <img src="media/32e3219c.icon_wink.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> ?</p>


feed_id: http://blog.m0le.net/?p=7847
title: Nono's Songs : Nas - I Can
uri: Nono-s-Songs-Nas-I-Can
url: http://blog.m0le.net/2014/09/08/nonos-songs-nas-i-can/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Nas</strong> qui nous propose <strong>I Can</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Nas_-_I_Can' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FNas_-_I_Can.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/4de1e426.Nas_-_I_Can.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Nas_-_I_Can.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/74b9ba8b.Nas_-_I_Can.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Nas_-_I_Can.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7945
title: Cartographie numérique : précis de discrétisation pour les nuls
uri: Cartographie-numérique-précis-de-discrétisation-pour-les-nuls
url: http://blog.m0le.net/2014/09/08/cartographie-numerique-precis-de-discretisation-pour-les-nuls/
content:
<p>Faire des cartes, c'est bien. Choisir judicieusement les plages de couleurs qui la font, c'est encore mieux ! Passage en revue des principales méthodes de discrétisation.</p>
<p><span id="more-7945"></span>En géographie, on appelle "discrétisation" une méthode qui <strong>"rend discrètes" les données considérées</strong>. En gros, il faut trouver <strong>le meilleur compromis entre statistiques et géographie</strong>.</p>
<p>Pour cela, on découpe généralement sa carte <strong>en un certain nombre de "classes"</strong> dans lesquelles sont rangées des valeurs colorées avec une teinte unique.</p>
<p>Sauf qu'il y a <strong>différentes manières de discrétiser</strong> une carte, et qu'<strong>aucune d'entre elles n'est parfaite</strong>. Bien les connaître permet en revanche de se faire <strong>une rapide idée de celle qui est la plus judicieuse</strong> à appliquer.</p>
<p>Dans ce qui suit, on considérera <strong>le même jeu de données</strong> appliqué à 78 zones géographiques, <strong>à colorier en six classes</strong>.</p>
<h1> Discrétisation en classes d'amplitude égale</h1>
<p>Une des questions que l'on se pose le plus souvent quand on traite d'importants volumes de données est : <strong>que faire des valeurs extrêmes ?</strong></p>
<p>On peut soit<strong> les considérer comme négligeables, voire parasitaires</strong> et ne pas les valoriser, ou <strong>bien articuler toute une histoire autour d'elles</strong>.</p>
<p>La discrétisation en classes d'amplitude égale, l'une des plus répandues, permet précisément <strong>de valoriser les valeurs extrêmes</strong>.</p>
<p>Pour obtenir l'amplitude type, <strong>on divise simplement l'étendue de l'échantillon</strong> (maximum-minimum) <strong> par le nombre de classes</strong>. Dans notre cas, la valeur maximale est de 19.88 et la minimale de 1.83, et notre amplitude sera donc de (20-2)/6=3.</p>
<p>La première classe ira donc de 2 à 5, la deuxième de 5 à 8, et ainsi de suite jusqu'à la dernière, de 17 à 20. Concrètement, ça nous donne ceci :</p>
<p><iframe width="500" height="650" src="http://raphi.m0le.net/data/Discretisation/discreti_1.html" scrolling="no" frameborder="0"></iframe></p>
<h3>Avantages</h3>
<ul>
<li><strong>ultra simple</strong> à réaliser</li>
<li>très courante, donc <strong>très facilement interprétable par le lectorat</strong></li>
</ul>
<h3>Inconvénient</h3>
<ul>
<li>ce modèle est <strong>"idéal" pour des distributions uniformes</strong> et dans une moindre mesure symétriques, <strong>cas plutôt rares</strong>. Dans notre cas, la distribution est franchement dissymétrique, et ça se ressent dans <strong>les effectifs très déséquilibrés</strong> : la classe la plus élevée contient à peine quatre zones, tandis que la moins élevée en contient une grosse vingtaine.</li>
</ul>
<h1>Discrétisation avec moyenne et écart type</h1>
<p>La moyenne et l'écart type sont <strong>deux mesures ultra courantes <a target="_blank" href="http://fr.wikipedia.org/wiki/Statistique_descriptive">en statistique descriptive</a></strong>, mais qui ont le défaut d'être très sensibles aux valeurs extrêmes. Malgré tout,<strong> dans le cas où on compare plusieurs cartes</strong>, la moyenne et l'écart type peuvent entièrement se justifier.</p>
<p>Par exemple, remarquer qu'une même zone est systématiquement deux écarts types au-dessus de la moyenne peut <strong>amener un éclairage intéressant quand on analyse des données</strong>.</p>
<p>Dans notre cas, la moyenne et l'écart type sont de 8 et de 4, une fois arrondis. On aura donc une classe de 8 à 12 (<strong>un écart type au-dessus de la moyenne</strong>), une de 8 à 4 (<strong>un écart type en-dessous de la moyenne</strong>), puis une de 12 à 16, etc...</p>
<p>Avec cette méthode, la moyenne finira <strong>borne de classe si leur nombre est pair, et centre d'une classe si leur nombre est impair</strong>. Notre exemple s'adapte mal à un nombre pair, car la distribution est trop dispersée.</p>
<p>Autrement dit, <strong>on finirait par avoir une classe inutile</strong>, ce qui n'est pas le cas en passant à cinq classes, comme ici :<br />
<iframe width="500" height="650" src="http://raphi.m0le.net/data/Discretisation/discreti_2.html" scrolling="no" frameborder="0"></iframe></p>
<h3>Avantages</h3>
<ul>
<li>méthode particulièrement <strong>taillée pour les comparaisons</strong></li>
<li>elle est assez <strong>simple et intuitive à reproduire</strong> : il suffit d'utiliser deux options d'Excel ou de Calc et de construire ses classes à partir de la moyenne</li>
</ul>
<h3>Inconvénient</h3>
<ul>
<li><strong>s'adapte mal aux distributions dissymétriques</strong>, dont les valeurs extrêmes tirent la moyenne vers le haut ou vers le bas. Dans notre cas, c'est plutôt la première tendance qui se produit</li>
</ul>
<h1>Discrétisation en progression géométrique</h1>
<p>On peut du coup se demander : <strong>comment faire pour traiter correctement une distribution dissymétrique</strong> <strong>?</strong></p>
<p>Une des discrétisations très utilisées propose de <strong>traiter les classes de la distribution cartographiée <a target="_blank" href="http://fr.wikipedia.org/wiki/Suite_g%C3%A9om%C3%A9trique">comme les membres d'une suite géométrique</a></strong>.</p>
<p>Ce choix par de l'observation que les données produites dans la nature et dans nos sociétés ont <strong>tendance à mieux coller à un modèle multiplicatif qu'additif</strong>.</p>
<p>Un triste et récent exemple est <a target="_blank" href="http://www.lemonde.fr/les-decodeurs/breve/2014/09/03/plus-de-1-500-morts-de-la-fievre-ebola_4481307_4355770.html">le nombre de morts causés par le virus Ebola</a> : la courbe des personnes décédées dans le temps <strong>ressemble diablement <a target="_blank" href="http://fr.wikipedia.org/wiki/Fonction_exponentielle">à une courbe exponentielle</a></strong>.</p>
<p>Pour revenir à la suite géométrique, sa raison s'obtient <strong>grâce à  un logarithme</strong> (de préférence en base 10) : comme on part d'une <a target="_blank" href="http://fr.wikipedia.org/wiki/Loi_log-normale">distribution "log-normale"</a>,<strong> la conversion en logarithme nous donne une distribution normale</strong> (autrement dit : le Graal :-)).</p>
<p>Voici la formule de la raison, avec max la valeur maximale de la distribution et min la valeur minimale :</p>
<blockquote><p><strong>raison = 10^((log(max)-log(min)/nombre de classes)</strong></p></blockquote>
<p>Appliquons-la concrètement à notre exemple. <strong>Avec un maximum de 19.88, un minimum de 1.83 et six classes à construire</strong>, on obtient :</p>
<blockquote><p>log raison =(log(19.88)-log(1.83))/6</p>
<p>log raison = (1.30-0.26)/6</p>
<p>log raison = 0.17</p>
<p>donc <strong>raison = 10^0.17 =1.48</strong> (en arrondissant à chaque fois)</p></blockquote>
<p>On peut construire les classes comme suit : d'abord 1.83, puis 2.71 (1.83*1.48), puis 4.01 (2.71*1.48), etc jusqu'à la valeur maximale. Ce qui nous donne, en arrondissant, la carte suivante :<br />
<iframe width="500" height="650" src="http://raphi.m0le.net/data/Discretisation/discreti_3.html" scrolling="no" frameborder="0"></iframe></p>
<h3>Avantage</h3>
<ul>
<li>cette méthode <strong>s'adapte très bien aux distributions dissymétriques</strong>, qui sont parmi celles que l'on rencontre le plus souvent</li>
</ul>
<h3>Inconvénients</h3>
<ul>
<li><strong> pas très conseillée pour les comparaisons</strong></li>
<li><strong>pas la plus simple</strong> à mettre en oeuvre</li>
</ul>
<h1>Discrétisation avec seuils naturels</h1>
<p>Cette expression est un peu ambigüe, puisque <strong>son application n'est pas franchement "naturelle"</strong>.</p>
<p>La méthode des seuils naturels revient à <strong>décréter que les plus fortes discontinuités observées dans la distribution constituent des paliers marquants</strong>, qu'il convient donc de séparer en classes.</p>
<p>On peut utiliser un logiciel comme QGis pour trouver ses bornes de classes, ou bien les faire au doigt mouillé, comme ici :</p>
<p><iframe width="500" height="650" src="http://raphi.m0le.net/data/Discretisation/discreti_5.html" scrolling="no" frameborder="0"></iframe></p>
<h3>Avantage</h3>
<ul>
<li>cette méthode est particulièrement conseillée quand on observe une <strong>distribution dont les zones ont leur dispersion caractéristique</strong>. Si on considère par exemple le taux de natalité dans le monde, il y aura un seuil de rupture entre les pays européens et africains, et établir des classes entre les deux se justifiera aisément</li>
</ul>
<h3>Inconvénients</h3>
<ul>
<li>méthode <strong>très aléatoire</strong> : à partir des mêmes données, différents logiciels ou personnes choisiront des classes différentes</li>
<li><strong>pas idéale quand il s'agit de comparer</strong></li>
</ul>
<h1>Discrétisation par quantiles</h1>
<p>La discrétisation par quantiles est très simple à comprendre : elle attribue <strong>le même nombre d'unités géographiques aux classes de la carte</strong>.</p>
<p>Dans notre exemple, chaque classe aura exactement 13 zones, ce qui évitera les effectifs très inégaux observés dans la première discrétisation.</p>
<p>Voici, concrètement, le résultat :<br />
<iframe width="500" height="650" src="http://raphi.m0le.net/data/Discretisation/discreti_6.html" scrolling="no" frameborder="0"></iframe></p>
<h3>Avantages</h3>
<ul>
<li><strong>assez simple</strong> à réaliser</li>
<li>cette discrétisation est <strong>bien profilée pour dresser des cartes comparatives</strong></li>
</ul>
<h3>Inconvénient</h3>
<ul>
<li>les valeurs extrêmes se retrouvent <strong>noyées avec des zones n'ayant pas forcément le même ordre de grandeur</strong>. Il n'y a donc que lorsqu'elles sont négligeables comme ici que l'on pourra se servir des quantiles. En revanche, dans un cas comme des comparaisons de populations régionales, il serait peu judicieux de mélanger l'Île-de-France avec d'autres régions...</li>
</ul>
<h2>Bibliographie</h2>
<p>Cet article s'inspire librement d'un chapitre de<a target="_blank" href="http://livre.fnac.com/a7071057/Michelle-Beguin-La-representation-des-donnees-geographiques"><em> La représentation des données géographiques</em>, statistique et cartographie</a>, de Michèle Béguin et Denise Pumain.</p>


feed_id: http://blog.m0le.net/?p=7987
title: Nono's Songs : Electric Six - Gay Bar
uri: Nono-s-Songs-Electric-Six-Gay-Bar
url: http://blog.m0le.net/2014/09/22/nonos-songs-electric-six-gay-bar/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Electric Six</strong> qui nous propose <strong>Gay Bar</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Electric_Six_-_Gay_Bar' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FElectric_Six_-_Gay_Bar.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/17a7f36c.Electric_Six_-_Gay_Bar.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Electric_Six_-_Gay_Bar.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/5d16106d.Electric_Six_-_Gay_Bar.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Electric_Six_-_Gay_Bar.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7993
title: Nono's Songs : Captain Flatcap - Funky Farmers
uri: Nono-s-Songs-Captain-Flatcap-Funky-Farmers
url: http://blog.m0le.net/2014/10/06/nonos-songs-captain-flatcap-funky-farmers/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Captain Flatcap</strong> qui nous propose <strong>Funky Farmers</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Captain_Flatcap_-_Funky_Farmers_Studio_Session' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FCaptain_Flatcap_-_Funky_Farmers_Studio_Session.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/733a9fdb.Captain_Flatcap_-_Funky_Farmers_Studio_Session.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Captain_Flatcap_-_Funky_Farmers_Studio_Session.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/d0681ba1.Captain_Flatcap_-_Funky_Farmers_Studio_Session.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Captain_Flatcap_-_Funky_Farmers_Studio_Session.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7996
title: Nono's Songs : Gary Jules - Mad World
uri: Nono-s-Songs-Gary-Jules-Mad-World
url: http://blog.m0le.net/2014/10/13/nonos-songs-gary-jules-mad-world/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Gary Jules</strong> qui nous propose <strong>Mad World</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Gary_Jules_-_Mad_World' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FGary_Jules_-_Mad_World.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/afd37af9.Gary_Jules_-_Mad_World.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Gary_Jules_-_Mad_World.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/c11a812e.Gary_Jules_-_Mad_World.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Gary_Jules_-_Mad_World.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=7999
title: Nono's Songs : Slamboree - Zorba The Remix
uri: Nono-s-Songs-Slamboree-Zorba-The-Remix
url: http://blog.m0le.net/2014/10/20/nonos-songs-slamboree-zorba-the-remix/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Slamboree</strong> qui nous propose <strong>Zorba The Remix</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/SLAMBOREE_-_ZORBA_THE_REMIX_Official_Video' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FSLAMBOREE_-_ZORBA_THE_REMIX_Official_Video.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/557caad0.SLAMBOREE_-_ZORBA_THE_REMIX_Official_Video.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/SLAMBOREE_-_ZORBA_THE_REMIX_Official_Video.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/ca596495.SLAMBOREE_-_ZORBA_THE_REMIX_Official_Video.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/SLAMBOREE_-_ZORBA_THE_REMIX_Official_Video.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8002
title: Nono's Songs : Chinese Man - Get Up
uri: Nono-s-Songs-Chinese-Man-Get-Up
url: http://blog.m0le.net/2014/10/27/nonos-songs-chinese-man-get-up/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Chinese Man</strong> qui nous propose <strong>Get Up</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Get_Up_-_Chinese_Man_feat-_Ex-I_Lush_One_Plex_Rock_-_OFFICIAL_VIDEO' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FGet_Up_-_Chinese_Man_feat._Ex-I_Lush_One_Plex_Rock_-_OFFICIAL_VIDEO.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/fc8c7209.-_Chinese_Man_feat._Ex-I_Lush_One_Plex_Rock_-_OFFICIAL_VIDEO.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Get_Up_-_Chinese_Man_feat._Ex-I_Lush_One_Plex_Rock_-_OFFICIAL_VIDEO.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/ad5c716c._Chinese_Man_feat._Ex-I_Lush_One_Plex_Rock_-_OFFICIAL_VIDEO.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Get_Up_-_Chinese_Man_feat._Ex-I_Lush_One_Plex_Rock_-_OFFICIAL_VIDEO.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8005
title: Nono's Songs : Beats Antique - Mission
uri: Nono-s-Songs-Beats-Antique-Mission
url: http://blog.m0le.net/2014/11/03/nonos-songs-beats-antique-mission/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le non clip de <strong>Beats Antique</strong> qui nous propose <strong>Mission</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Beats_Antique_-_Mission' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FBeats_Antique_-_Mission.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/b914dafd.Beats_Antique_-_Mission.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Beats_Antique_-_Mission.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/fb0550ec.Beats_Antique_-_Mission.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Beats_Antique_-_Mission.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8011
title: Nono's Songs : Kansas - Dust in the Wind
uri: Nono-s-Songs-Kansas-Dust-in-the-Wind
url: http://blog.m0le.net/2014/11/17/nonos-songs-kansas-dust-in-the-wind/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Kansas</strong> qui nous propose <strong>Dust in the Wind</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Kansas_-_Dust_in_the_Wind' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FKansas_-_Dust_in_the_Wind.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/5fbc25d5.Kansas_-_Dust_in_the_Wind.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Kansas_-_Dust_in_the_Wind.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/178bfd5a.Kansas_-_Dust_in_the_Wind.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Kansas_-_Dust_in_the_Wind.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8015
title: Nono's Songs : Kid Cudi vs. Crookers - Day 'n' Night
uri: Nono-s-Songs-Kid-Cudi-vs-Crookers-Day-n-Night
url: http://blog.m0le.net/2014/11/24/nonos-songs-kid-cudi-vs-crookers-day-n-night/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Kid Cudi vs. Crookers</strong> qui nous propose <strong>Day 'n' Night</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Kid_Cudi_vs-_Crookers_-_Day_n_Night' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FKid_Cudi_vs._Crookers_-_Day_n_Night.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/0c0149cf.Kid_Cudi_vs._Crookers_-_Day_n_Night.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Kid_Cudi_vs._Crookers_-_Day_n_Night.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/c2bfdabf.Kid_Cudi_vs._Crookers_-_Day_n_Night.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Kid_Cudi_vs._Crookers_-_Day_n_Night.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8034
title: Autopsie d'une dataviz [8.1] : un geojson complet et léger
uri: Autopsie-d-une-dataviz-8-1-un-geojson-complet-et-léger
url: http://blog.m0le.net/2014/11/26/autopsie-dune-dataviz-8-1-un-geojson-complet-et-leger/
content:
<p>Première partie d'un tuto en trois volets où l'on va voir comment réaliser de A à Z une carte choroplèthe grâce à la librairie D3js. On commence avec la création d'un geojson le plus léger possible, en utilisant notamment QGis.</p>
<p><span id="more-8034"></span></p>
<p>J'ai réalisé il y a quelques semaines <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2014/11/17/politique/alsace-fn-explique-cinq-cartes/">cinq cartes interactives centrées sur le FN en Alsace</a>. Cela a été l'occasion <strong>d'un peu plus tâter de la librairie D3js</strong>, qui m'a pas mal impressionné côté géographie !</p>
<p>Mais ne grillons pas les étapes et commençons <strong>avec la création d'un fichier .geojson</strong> que la librairie pourra interpréter correctement. On va se servir pour cela :</p>
<ul>
<li><strong><a target="_blank" href="https://www.data.gouv.fr/fr/datasets/election-presidentielle-1995-resultats-572085/">d'un jeu de données</a></strong> pioché sur le portail data.gouv.fr</li>
<li>des <strong>limites communales</strong> <a target="_blank" href="http://export.openstreetmap.fr/contours-administratifs/communes/">de deux départements</a>, en libre accès grâce au travail de titan d'OpenStreetMap (OSM)</li>
</ul>
<p>On va ensuite grâce au logiciel <a target="_blank" href="http://www.qgis.org/fr/site/">Quantum GIS</a> (QGis) :</p>
<ul>
<li><strong>préparer chaque fichier</strong>, avec comme impératif d'avoir <strong>un attribut commun</strong> entre eux pour permettre que les bonnes données aillent à la bonne commune</li>
<li><strong>réaliser une jointure</strong> entre le tableur de données et les fichiers géographiques</li>
<li><strong>simplifier ces coordonnées</strong> pour avoir un fichier le plus léger possible</li>
<li><strong>enregistrer tout ça au bon format</strong>, le geojson dans notre cas</li>
</ul>
<h1>Préparer le shapefile</h1>
<p>Rentrons dans le vif, et téléchargeons sur le serveur d'OSM <strong>les communes du Haut-Rhin (68) et du Bas-Rhin (67)</strong>. On va ouvrir chaque .tar.gz et <strong>exporter les quatre fichiers qu'il contient</strong> (.dbf, .prj, .shp et .shx)<strong> dans un même dossier</strong>.</p>
<p>On a huit fichiers, mais <strong>seuls les deux .shp seront sélectionnés avec QGis</strong>. On ouvre donc le logiciel, et <strong>on clique sur l'icône "Ajouter une couche vecteur"</strong> sur la bande à gauche de l'écran :</p>
<p style="text-align: center;"><a target="_blank" href="media/3c36111f.tuto_qgis_1.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_1.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8037" src="media/036d3216.tuto_qgis_1-222x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_1-222x300.png" alt="tuto_qgis_1" width="222" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p>Une nouvelle fenêtre s'ouvre, on ne se pose pas de question et <strong>on clique sur "Parcourir"</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/4c1beccb.tuto_qgis_2.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_2.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8041" src="media/00044030.tuto_qgis_2-300x143.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_2-300x143.png" alt="tuto_qgis_2" width="300" height="143" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p>De là, on navigue via l'explorateur qui vient s'ouvrir vers notre dossier, <strong>on sélectionne les deux fichiers .shp</strong>, et <strong>on clique sur "Ouvrir" pour valider la sélection</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/09eda2bb.tuto_qgis_3.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_3.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8045" src="media/f50970fb.tuto_qgis_3-300x161.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_3-300x161.png" alt="tuto_qgis_3" width="300" height="161" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Retour à la fenêtre initiale <strong>où ne se pose à nouveau pas de question</strong> et où on clique sur "Ouvrir" :</p>
<p style="text-align: center;"><a target="_blank" href="media/94ab57e9.tuto_qgis_4.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_4.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8047" src="media/02528815.tuto_qgis_4-300x143.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_4-300x143.png" alt="tuto_qgis_4" width="300" height="143" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Sur l'interface de QGis, on doit maintenant voir apparaître dans le grand cadre de droite <strong>le contenu de nos deux fichiers</strong>, distingués par des couleurs différentes. Dans le <strong>gestionnaire de calques à gauche</strong>, on voit le nom de chaque fichier apparaître. C'est tout bon !</p>
<p style="text-align: center;"><a target="_blank" href="media/1f2f8678.tuto_qgis_5.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_5.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="size-medium wp-image-8051 aligncenter" src="media/737d1153.tuto_qgis_5-300x162.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_5-300x162.png" alt="tuto_qgis_5" width="300" height="162" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<h2 style="text-align: left;">Fusionner deux shapefiles en un</h2>
<p style="text-align: left;">On va commencer par fusionner nos deux fichiers en un. Pour cela, se dirige vers les menus du haut et on choisit <strong>Vecteur &gt; Outils de gestion de données &gt; Fusionner les shapefiles en un seul...</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/27c5122e.tuto_qgis_6.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_6.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8053" src="media/a34c73a9.tuto_qgis_6-300x215.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_6-300x215.png" alt="tuto_qgis_6" width="300" height="215" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Une nouvelle fenêtre s'ouvre dans laquelle il faut paramétrer <strong>le dossier où sont stockés nos fichiers d'entrée</strong>, puis <strong>celui où on veut créer le fichier de sortie</strong>.</p>
<p style="text-align: left;">Comme tout à l'heure, rien de bien méchant, on commence par <strong>cliquer sur le premier bouton "Parcourir"</strong>, pour ensuite se diriger via l'explorateur dans le bon dossier :</p>
<p style="text-align: center;"><a target="_blank" href="media/bf6f26fe.tuto_qgis_7.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_7.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8056" src="media/2a2ba7dd.tuto_qgis_7-300x258.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_7-300x258.png" alt="tuto_qgis_7" width="300" height="258" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Ensuite, il ne reste plus qu'à <strong>faire de même avec le second bouton "Parcourir"</strong>. Pour plus de simplicité, on va enregistrer notre nouveau shapefile, que l'on nommera "alsace", <strong>dans le même dossier que les autres</strong>. Ce qui doit nous donner dans l'explorateur :</p>
<p style="text-align: center;"><a target="_blank" href="media/da620576.tuto_qgis_9.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_9.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter wp-image-8060 size-medium" src="media/358c2083.tuto_qgis_9-300x202.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_9-300x202.png" alt="" width="300" height="202" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Il ne reste plus qu'à cliquer sur "Enregistrer", à laisser dans la fenêtre de départ <strong>l'option "Ajouter le résultat au canevas de la carte" cochée</strong>, et à cliquer sur "OK".</p>
<p style="text-align: left;">Ce qui nous donne en quelques instants <strong>un nouveau fichier dans l'espace de travail</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/d890d4fa.tuto_qgis_10.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_10.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8061" src="media/4c327cf5.tuto_qgis_10-300x162.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_10-300x162.png" alt="tuto_qgis_10" width="300" height="162" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Cette nouvelle couche est placée tout au-dessus de la pile, et masque donc les deux autres. Comme nous n'avons plus besoin de ces dernières, nous pouvons les dégager en les sélectionnant dans le gestionnaire puis en faisant <strong>Clic droit &gt; Supprimer</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/5ccf6d99.tuto_qgis_11.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_11.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8065" src="media/4ccf7122.tuto_qgis_11-300x218.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_11-300x218.png" alt="tuto_qgis_11" width="300" height="218" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<h2 style="text-align: left;">Garder seulement les attributs utiles</h2>
<p>Les fichiers fournis par OpenStreetMap ont déjà <strong>quelques données attachées à chaque commune</strong>, notamment :</p>
<ul>
<li><strong>un nom</strong> (toujours utile)</li>
<li><strong>un identifiant INSEE unique</strong>, composé du numéro de département suivi d'un code commune. Ce dernier va nous servir <strong>d'attribut commun pour réaliser la jointure avec le tableur</strong>. A conserver précieusement donc</li>
<li>des propriétés insignifiantes dans notre cadre, comme le code OSM, le code postal, etc...</li>
</ul>
<p><strong>Pour ne pas charger inutilement le fichier final</strong>, on va supprimer les attributs inutile pour ne garder que le nom et le code INSEE de chaque commune.</p>
<p>Pour ce faire, on retourne dans le gestionnaire de calque, et on fait <strong>Clic droit &gt; Ouvrir la table d'attributs</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/a1dede95.tuto_qgis_12.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_12.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8069" src="media/87cb5c0e.tuto_qgis_12-300x239.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_12-300x239.png" alt="tuto_qgis_12" width="300" height="239" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Une nouvelle fenêtre s'ouvre, dans laquelle on va cliquer <strong>sur l'icône en forme de crayon en haut à gauche</strong> pour basculer en mode édition (le raccourci Ctrl+e permet également de l'activer) :</p>
<p style="text-align: center;"><a target="_blank" href="media/f21f70eb.tuto_qgis_13.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_13.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8071" src="media/63e5a00e.tuto_qgis_13-230x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_13-230x300.png" alt="tuto_qgis_13" width="230" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Ensuite, on peut cliquer sur <strong>l'icône "Supprimer une colonne" ou faire un petit Ctrl+l</strong>, pour ensuite sélectionner les colonnes qu'on souhaite faire disparaître :</p>
<p style="text-align: center;"><a target="_blank" href="media/6ab9463f.tuto_qgis_14.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_14.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8073" src="media/6b73b1e7.tuto_qgis_14-300x171.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_14-300x171.png" alt="tuto_qgis_14" width="300" height="171" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Un clic sur "OK", puis <strong>sur l'icône de crayon pour confirmer la sauvegarde</strong> du shapefile, et le tour est joué !</p>
<h2 style="text-align: left;">Rassembler deux communes anciennement fusionnées</h2>
<p>L'un des points importants des tracés communaux fournis par OSM est <strong>qu'ils datent de 2012</strong>. Or, <strong>il arrive très souvent que deux villages aient été anciennement fusionnés</strong> un temps avant de se séparer, et vice et versa.</p>
<p>On peut facilement régler le premier cas en <strong>fusionnant les tracés communaux les plus récents</strong> pour obtenir l'ancienne commune. Penchons-nous dans le Bas-Rhin sur Bosselshausen et Kirrwiller, anciemment <a target="_blank" href="http://fr.wikipedia.org/wiki/Kirrwiller">Kirrwiller-Bosselshausen</a>.</p>
<p>On va commencer par sélectionner nos deux communes. Le début de la manip est strictement le même que précédemment, on va donc directement se placer à l'étape du <strong>Clic droit &gt; Ouvrir la table d'attributs</strong>, puis <strong>clic sur l'icône en forme de crayon</strong>.</p>
<p>On peut dès lors classer les communes par ordre alphabétique <strong>en cliquant sur le nom de colonne "COMMUNE"</strong> et chercher Bosselshausen. <strong>Un clic sur le numéro de ligne</strong> permet de sélectionner précisément la commune, qui doit apparaître en jaune dans la fenêtre d'aperçu :</p>
<p style="text-align: center;"><a target="_blank" href="media/8052f7bb.tuto_qgis_15.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_15.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8075" src="media/534ba914.tuto_qgis_15-300x206.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_15-300x206.png" alt="tuto_qgis_15" width="300" height="206" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On a plus qu'à chercher et sélectionner Kirrwiller, <strong>en appuyant bien sur Ctrl pour cumuler les sélections</strong>. Si tout va bien, les deux communes doivent maintenant apparaître en jaune :</p>
<p style="text-align: center;"><a target="_blank" href="media/0443a907.tuto_qgis_16.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_16.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8077" src="media/a68d7e6c.tuto_qgis_16-300x204.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_16-300x204.png" alt="tuto_qgis_16" width="300" height="204" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Tout est désormais prêt pour la fusion des deux polygones. Il s'agit désormais d'aller dans <strong>Editer &gt; Fusionner les entités sélectionnées</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/19c3e17c.tuto_qgis_17.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_17.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8079" src="media/6d091f2b.tuto_qgis_17-217x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_17-217x300.png" alt="tuto_qgis_17" width="217" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">La fenêtre qui s'ouvre alors permet <strong>de paramétrer les attributs du nouveau polygone</strong>. Dans notre cas, on va juste changer "Kirrwiller" en "Kirrwiller-Bosselshausen", conserver l'identifiants INSEE et cliquer sur "OK" :</p>
<p style="text-align: center;"><a target="_blank" href="media/91014e15.tuto_qgis_18.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_18.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8082" src="media/8cd719e5.tuto_qgis_18-300x267.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_18-300x267.png" alt="tuto_qgis_18" width="300" height="267" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On peut dès lors constater dans la table d'attributs l'apparition de notre polygone fusionné :</p>
<p style="text-align: center;"><a target="_blank" href="media/9afa11c7.tuto_qgis_19.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_19.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8084" src="media/344b5c0c.tuto_qgis_19-300x212.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_19-300x212.png" alt="tuto_qgis_19" width="300" height="212" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;"><strong>Plus qu'à cliquer sur l'icône en forme de crayon</strong> pour enregistrer tout ça et passer (enfin) au tableur <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> !</p>
<h1 style="text-align: left;">Préparer le tableur</h1>
<p>Cette partie sera bien plus courte que la précédente, <strong>la principale difficulté consistant à créer à partir de deux informations</strong> (les numéro de département et de la commune) <strong>l'attribut commun</strong> au shapefile précédent (l'identifiant INSEE).</p>
<p>On va commencer par <a target="_blank" href="https://www.data.gouv.fr/fr/datasets/election-presidentielle-1995-resultats-572085/">télécharger le tableur original </a>sur data.gouv.fr, pour ensuite l'ouvrir avec Libre Calc.</p>
<p>Dès que c'est fait, on va <strong>préparer un nouveau tableur grâce à un petit Ctrl+n</strong>, et copier/coller la première ligne du gros tableur.</p>
<p>Une fois ceci fait, on revient dans le gros tableur à la rechercher de <strong>la ligne correspondant à la première commune du Bas-Rhin</strong> (il s'agit de la ligne 27 497). On clique alors sur le numéro de ligne pour la sélectionner, <strong>on scrolle rapido vers la dernière ligne du Haut-Rhin</strong> (numéro 28 399) en restant bien <strong>appuyé sur Shift</strong> pour signifier qu'on prend tout l'intervalle.</p>
<p><strong>Plus qu'à faire un petit Ctrl+c puis Ctrl+v dans notre nouveau fichier</strong>, et nous voilà avec un fichier uniquement centré sur les résultats de l'Alsace qui doit faire en tout 904 lignes. On peut fermer l'original et se concentrer sur notre nouveau fichier.</p>
<p>Comme pour le shapefile, <strong>on ne va retenir que les colonnes</strong> qui nous intéressent pour ne pas alourdir le fichier final. On ne gardera que :</p>
<ul>
<li>les <strong>codes du département et de la commune</strong></li>
<li>le <strong>nom de la commune</strong></li>
<li>le <strong>nombre d'inscrits</strong></li>
<li>le <strong>pourcentage d'abstention</strong></li>
<li>le <strong>nombre d'électeurs FN</strong></li>
<li>le <strong>pourcentage d'exprimés en faveur du FN</strong></li>
</ul>
<p>Pour rappel, la sélection d'une colonne entière se fait <strong>en cliquant sur la lettre correspondante</strong>, puis <strong>Clic droit &gt; Supprimer</strong>.</p>
<p>Voici une proposition de fichiers, avec colonnes renommées pour plus de clarté :</p>
<p style="text-align: center;"><a target="_blank" href="media/59d50cc8.tuto_qgis_20.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_20.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8088" src="media/1b508714.tuto_qgis_20-295x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_20-295x300.png" alt="tuto_qgis_20" width="295" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<h2 style="text-align: left;">Concaténer deux colonnes pour avoir un attribut unique</h2>
<p>On va dès lors procéder en deux étapes :</p>
<ul>
<li>préparer une <strong>colonne d'identifiants de communes qui seront  formatés en trois chiffres</strong> (au lieu de 1, on aura 001, au lieu de 10, 010, etc...). L'objectif est que chaque identifiant fasse cinq chiffres, pas un de moins</li>
<li>concaténer cette colonne avec <strong>celle de l'identifiant de département</strong></li>
</ul>
<p>On se place sur la colonne C, puis <strong>Clic droit &gt; Insérer</strong>. Cette manip' va <strong>créer une nouvelle colonne</strong> à gauche de celle que l'on a sélectionnée :</p>
<p style="text-align: center;"><a target="_blank" href="media/94d4313e.tuto_qgis_21.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_21.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8090" src="media/52513d05.tuto_qgis_21-300x287.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_21-300x287.png" alt="tuto_qgis_21" width="300" height="287" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On va appeler cette colonne "code_com" pour la distinguer de l'autre, et immédiatement faire un <strong>Clic droit &gt; Formater les cellules</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/ba370ad5.tuto_qgis_22.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_22.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8092" src="media/43d4fd42.tuto_qgis_22-300x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_22-300x300.png" alt="tuto_qgis_22" width="300" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On va alors choisir <strong>un format "Texte"</strong>, pour éviter que 001 soit automatiquement transformé en 1 :</p>
<p style="text-align: center;"><a target="_blank" href="media/dd37a9e8.tuto_qgis_23.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_23.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8094" src="media/9f4db7b0.tuto_qgis_23-300x232.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_23-300x232.png" alt="tuto_qgis_23" width="300" height="232" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On peut alors se placer sur la première cellule vide de la colonne "code_com" pour y écrire 001. Si le format est bien du texte, <strong>le 001 se plaquera à gauche de la cellule</strong>.</p>
<p style="text-align: left;">Ensuite, plus qu'à cliquer glisser à partir du bord inférieur droit de la cellule déjà remplie pour que Calc <strong>complète les cellules suivantes en ajoutant 1 à chaque fois</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/bed27b51.tuto_qgis_24.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_24.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8096" src="media/069c565c.tuto_qgis_24-300x175.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_24-300x175.png" alt="tuto_qgis_24" width="300" height="175" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;"><strong>Attention à ne pas y aller comme un bourrin</strong> : il arrive qu'un numéro de commune soit manquant (dans notre cas, le 7 n'existe pas), et si on va trop vite, toutes les communes <strong>vont se retrouver décalées d'une unité</strong>. Ce qui au final donnera des résultats électoraux faux.</p>
<p style="text-align: left;">On réécrit dans la cellule 008 et on clique/glisse depuis le bord inférieur droit pour créer le reste, <strong>en étant bien vigilant aux éventuels trous dans la suite </strong>(il y en a quand même quelques-uns).</p>
<p style="text-align: left;"><strong>A partir du numéro 100, on peut recopier directement les nombres de la colonne "code_co"</strong>, avant de recommencer la manip' pour les communes du Haut-Rhin.</p>
<p style="text-align: left;">Il ne nous reste <strong>plus qu'à concaténer le contenu des colonnes</strong> "code_dpt" et "code_com". Pour cela, on va insérer une colonne "code_insee" et  utiliser la<strong> fonction CONCATENER(cellule_1;cellule_2;...;cellule_n)</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/37bc4214.tuto_qgis_26.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_26.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8099" src="media/46d9f8a8.tuto_qgis_26-240x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_26-240x300.png" alt="tuto_qgis_26" width="240" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Attention : il faut bien veiller à séparer chaque attribut avec des points-virgules et <strong>la fonction ne marche pas lorsque l'on manipule un .csv</strong> (par contre avec un fichier pas encore enregistré, tout roule) !</p>
<p style="text-align: left;">Plus qu'à <strong>cliquer/glisser à partir du bord inférieur droit de la première cellule</strong> pour répéter la fonction, ce qui doit nous donner au final quelque chose qui ressemble à ceci :</p>
<p style="text-align: center;"><a target="_blank" href="media/a277e81d.tuto_qgis_27.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_27.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8101" src="media/b2504f4a.tuto_qgis_27-212x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_27-212x300.png" alt="tuto_qgis_27" width="212" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Pour être sûr que tout se passe sans accroc au moment de la jointure sur QGis, <strong>on ne va conserver que le résultat de notre formule</strong>, et pas la formule elle-même. Pour ce faire, on sélectionner toute la colonne en cliquant sur la lettre au-dessus de la première cellule, on copie, et on fait un Clic droit &gt; sur la première cellule d'une nouvelle colonne :</p>
<p style="text-align: center;"><a target="_blank" href="media/d5e27ca5.tuto_qgis_28.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_28.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8102" src="media/238ed238.tuto_qgis_28-300x209.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_28-300x209.png" alt="tuto_qgis_28" width="300" height="209" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">A partir de là, <strong>on peut virer les quatre première colonnes</strong> (département, codes communes en chiffres, codes communes en caractères, et formules de concaténation) et <strong>transformer la colonne "code_insee" restante en nombre</strong>.</p>
<p style="text-align: left;">Pour cela, deux possibilités :</p>
<ul>
<li style="text-align: left;">on sélectionne toute la colonne, puis <strong>Clic droit &gt; Formater les cellules &gt; Nombre</strong></li>
<li style="text-align: left;">soit, <strong>si la cellule renvoie quelque chose comme '67001</strong> au lieu de 67001, <strong>un petit copier/coller de toute la colonne dans le bloc-note pour virer les apostrophes</strong>, puis copier/coller du bloc-notes au tableur (un peu une technique de galérien, mais qui a fait ses preuves)</li>
</ul>
<p>On enregistre tout ça dans un .csv nommé "fn_alsace_1995", <strong>en spécifiant bien à l'enregistrement que les valeurs doivent être séparées par des virgules</strong>, et on passe à la suite !</p>
<h1>Réaliser la jointure d'un shapefile et d'un csv</h1>
<p>Nous voilà enfin au clou du spectacle. On va reprendre QGis qui dormait gentiment pendant tout ce temps, et simplement <strong>glisser/déposer le csv fraîchement créé dans le gestionnaire de couches</strong>.</p>
<p>Le fichier doit alors apparaître <strong>tout en haut de la pile</strong>, comme ceci :</p>
<p style="text-align: center;"><a target="_blank" href="media/ecd780f2.tuto_qgis_29.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_29.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8104" src="media/c7d9dddc.tuto_qgis_29-300x168.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_29-300x168.png" alt="tuto_qgis_29" width="300" height="168" /></a></p>
<p style="text-align: left;">On <strong>double clique ensuite sur le calque géographique</strong>, celui nommé "alsace". Dans la nouvelle fenêtre qui s'ouvre, il faut ensuite <strong>choisir "Jointure"</strong> dans le menu de gauche puis cliquer sur <strong>l'icône en forme de flèche verte</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/67d45cee.tuto_qgis_291.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_291.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8106" src="media/81b80e14.tuto_qgis_291-300x201.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_291-300x201.png" alt="tuto_qgis_29" width="300" height="201" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p>Nouvelle fenêtre, nouveaux choix. Comme il n'y a qu'un fichier autre que la couche, il n'y a <strong>pas besoin de se préoccuper de la première liste déroulante</strong>.</p>
<p>La seconde permet de <strong>choisir le champ de notre tableur qui contient l'identifiant commun</strong> au fichier géographique. Dans notre cas, c'est la toute première colonne "code_insee", et on ne touche donc encore à rien.</p>
<p>Arrive enfin les champs de notre fichier géographique. On utilise cette fois-ci la liste déroulante<strong> pour choisir "REF_INSEE"</strong>.</p>
<p>On peut également choisir <strong>de joindre tous les champs sauf "code_insee" et "commune</strong>", puisqu'ils existent déjà dans le shapefile. Ce qui nous donne :</p>
<p style="text-align: center;"><a target="_blank" href="media/ae526731.tuto_qgis_30.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_30.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8109" src="media/c398295b.tuto_qgis_30-278x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_30-278x300.png" alt="tuto_qgis_30" width="278" height="300" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On clique sur "OK" et on peut voir apparaître notre jointure dans la fenêtre précédente. On peut fermer cette dernière et très vite faire un<strong> Clic droit &gt; Ouvrir la table d'attributs</strong>.</p>
<p style="text-align: left;">Plus qu'à <strong>cliquer sur l'icône en forme de crayon</strong> avant de cliquer sur <strong>celle en forme de boulier (ou Ctrl+i)</strong> pour ouvrir la calculatrice de champs.</p>
<p style="text-align: left;">Elle va nous permettre <strong>d'intégrer directement les champs joints</strong> à notre shapefile d'origine (pour que la jointure soit définitive, il faudrait enregistrer un nouveau fichier), et <strong>de convertir les valeurs qui seraient encore des lettres en nombres</strong>. Cela peut notamment se produire quand le tableur utilise la virgule pour les décimales alors que QGis ne comprend que le point.</p>
<p style="text-align: left;">Une fois la calculatrice ouverte, on ne coche <strong>surtout pas la case</strong> <strong>"Créer un champ virtuel", puis on lui donne un  nom, et on laisse le type sur "Nombre entiers (entier)"</strong>.</p>
<p style="text-align: left;">Une liste de fonctions nous permet de choisir celle qui nous intéressé, mais on va griller cette étape en tapant directement dans le champ de saisie tout en bas :</p>
<blockquote>
<p style="text-align: left;">toint(fn_alsace_1995_inscrits)</p>
</blockquote>
<p style="text-align: left;">S'il n'y pas d'erreur dans le nom de formule et le nom de colonnes, <strong>un aperçu du résultat doit s'afficher en-dessous du champ</strong> avec la première valeur bien convertie :</p>
<p style="text-align: center;"><a target="_blank" href="media/06ba7208.tuto_qgis_321.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_321.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter wp-image-8116 size-medium" src="media/dd3cd73a.tuto_qgis_321-300x286.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_321-300x286.png" alt="" width="300" height="286" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On peut alors cliquer sur "OK" et passer à la suite.</p>
<p style="text-align: left;">Attention <strong>au moment de la conversion de champs décimaux</strong> : il faut bien changer le type en "Nombre décimal (réel)" et <strong>définir une précision de 2</strong> pour avoir deux chiffres après la virgule (et évidemment utiliser la fonction toreal()) :</p>
<p style="text-align: center;"><a target="_blank" href="media/b97aee50.tuto_qgis_33.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_33.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter wp-image-8117 size-medium" src="media/94317646.tuto_qgis_33-300x286.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_33-300x286.png" alt="" width="300" height="286" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Une fois tous les champs convertis, on peut cliquer sur le crayon magique pour enregistrer tout ça et <strong>supprimer la jointure</strong> (c'est comme précédemment, sauf qu'on clique sur le trait rouge au lieu de la croix verte dans le menu "Jointure").</p>
<p style="text-align: left;"><strong>Il ne nous reste plus qu'à simplifier le shapefile</strong> et ensuite le convertir en geojson.</p>
<h1 style="text-align: left;">Simplifier les polygones d'un shapefile</h1>
<p>On pourrait déjà convertir notre shapefile en geojson. Le hic, c'est que le fichier obtenu pèserait un peu plus de 11 Mo, ce qui donnerait à l'arrivée de très longs <strong>temps de chargement</strong>. Impensables pour les lecteurs qui ont une mauvaise connexion ou qui utilisent un smartphone.</p>
<p>La simplification permet <strong>d'alléger de façon optimale les polygones décrits dans le fichier</strong>, en utilisant un algorithme comme <a target="_blank" href="http://fr.wikipedia.org/wiki/Algorithme_de_Douglas-Peucker">celui de Douglas-Peucker</a>.</p>
<p>Comme on ne prévoit aucun zoom sur la carte finale et qu'on restera sur une vision à l'échelle régionale, on peut se permettre de <strong>simplifier suffisamment les polygones pour que le procédé ne soit pas visible</strong>. Aucune perte de qualité mais à l'arrivée une taille de fichier d'un peu plus de 1 Mo contre 11 Mo initialement.</p>
<p>Dans QGis, la manip' est ultra simple, il suffit d'aller dans le menu du haut <strong>Vecteur &gt; Outils de géométrie &gt; Simplifier la géométrie</strong>.</p>
<p>Sur la fenêtre suivante, <strong>on va augmenter la tolérance de 0,0001 à 0,001</strong> (un 0 en moins) et <strong>cocher la case "Enregistrer un nouveau fichier"</strong>. On va appeler ce dernier "alsace_fn_1995". La fenêtre doit alors ressembler à ça :</p>
<p style="text-align: center;"><a target="_blank" href="media/d26632db.tuto_qgis_34.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_34.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8122" src="media/bd2cc307.tuto_qgis_34-300x223.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_34-300x223.png" alt="tuto_qgis_34" width="300" height="223" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Une fois le bouton "OK" cliqué et le tout simplifié, une pop confirme <strong>le passage de plus de 265 000 traits à moins de 25 000</strong>. A l'échelle régionale, départementale et cantonale, <strong>absolument aucune différence à l’œil nu</strong>.</p>
<p style="text-align: left;">En fait, il faut zoomer quasiment à l'échelle communale pour distinguer les imperfections :</p>
<p style="text-align: center;"><a target="_blank" href="media/cb46669e.tuto_qgis_341.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_341.png" rel="lightbox[8034]" title="Autopsie d'une dataviz [8.1] : un geojson complet et léger"><img class="aligncenter size-medium wp-image-8124" src="media/f8832702.tuto_qgis_341-300x253.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/11/tuto_qgis_341-300x253.png" alt="tuto_qgis_34" width="300" height="253" /></a></p>
<p style="text-align: left;">A ce stade, il ne reste plus qu'à :</p>
<ul>
<li style="text-align: left;">se positionner<strong> sur la couche qui correspond au fichier simplifié</strong></li>
<li style="text-align: left;">faire depuis le gestionnaire de couches un<strong> Clic droit &gt; Sauvegarder sous</strong></li>
<li style="text-align: left;">choisir le format GeoJSON, l'emplacement dudit fichier, <strong>garder le SCR de la couche</strong> (ce doit être absolument du WGS 84) et emballer le tout</li>
</ul>
<p>Au menu la prochaine fois : <strong>préparer les seuils de sa carte choroplèthe</strong> en utilisant la fonction CENTILE() !</p>


feed_id: http://blog.m0le.net/?p=8131
title: Autopsie d'une dataviz [8.2] : une carte découpée en classes égales
uri: Autopsie-d-une-dataviz-8-2-une-carte-découpée-en-classes-égales
url: http://blog.m0le.net/2014/12/01/autopsie-dune-dataviz-8-2-une-carte-decoupees-en-classes-egales/
content:
<p>Second épisode d'un tuto en trois volets consacré à la réalisation d'une choroplèthe sur D3js. Au menu cette fois-ci : une méthode pour découper sa future carte en classes d'effectifs égaux.</p>
<p><span id="more-8131"></span></p>
<p><a target="_blank" href="http://blog.m0le.net/2014/11/26/autopsie-dune-dataviz-8-1-un-geojson-complet-et-leger/">Après avoir créé un fichier geojson</a> rempli de données à cartographier, on pourrait d'ores et déjà se ruer sur <a target="_blank" href="http://d3js.org/">la fameuse librairie D3</a> pour coder une belle carte interactive.</p>
<p>Mais, si déjà on prend un peu le temps de détailler la marche à suivre de A à Z,<strong> attardons-nous sur les détails</strong>, qui ne sont jamais anodins en journalisme de données !</p>
<h1>Combien de classes va contenir la future carte ?</h1>
<p><strong>Un type de cartes rencontrées très souvent</strong> sur les sites d'information reste<strong> <a target="_blank" href="http://fr.wikipedia.org/wiki/Carte_choropl%C3%A8the">la carte choroplèthe</a></strong> : en gros, on colorie avec différentes teintes des statistiques réparties sur plusieurs régions pour pouvoir les comparer.</p>
<p>A chaque plage de valeur s'applique une couleur unique, <strong>aussi appelée classe</strong>. Dès lors se pose un délicat compromis entre statistiques et géographie :</p>
<ul>
<li>si on a trop de classes, <strong>la carte devient incompréhensible car trop chargée</strong></li>
<li>si on n'en a pas assez, <strong>la carte n'éclaire rien du tout</strong></li>
</ul>
<p>Dans leur très exhaustif <a target="_blank" href="http://www.armand-colin.com/livre/584363/la-representation-des-donnees-geographiques.php"><em>La représentation des données géographiques: Statistique et cartographie</em></a>, Michèle Béguin et Denise Pumain proposent le graphique suivant <strong>pour déterminer combien de classes une carte doit comporter</strong> en fonction de ses effectifs :</p>
<p style="text-align: center;"><a target="_blank" href="media/cab2e8c1.discretisation.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/discretisation.jpg" rel="lightbox[8131]" title="Autopsie d'une dataviz [8.2] : une carte découpée en classes égales"><img class="aligncenter size-medium wp-image-8134" src="media/bba64136.discretisation-300x236.jpg" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/discretisation-300x236.jpg" alt="discretisation" width="300" height="236" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p> On le voit très nettement, <strong>entre 150 et 200 régions considérées, on peut sans se poser de question passer à neuf classes</strong>. Dans notre cas, avec une région qui compte un peu plus de 900 communes, le choix est limpide.</p>
<p>Reste maintenant à choisir <strong>une palette de neuf couleurs cohérentes</strong>. On peut directement <a target="_blank" href="http://colorbrewer2.org/">se connecter à Colorbrewer</a> pour cette partie.</p>
<p>On va directement :</p>
<ul>
<li>changer le nombre de classes tout en haut de l'écran <strong>en passant de 3 à 9</strong></li>
<li><strong>laisser le découpage séquentiel</strong></li>
<li>sélectionner <strong>le seul éventail qui contient du noir</strong></li>
</ul>
<p>Si tout se passe sans accroc, on doit arriver à quelque chose qui ressemble à ça :</p>
<p style="text-align: center;"><a target="_blank" href="media/acfb7e15.tuto_discreti_1.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_1.png" rel="lightbox[8131]" title="Autopsie d'une dataviz [8.2] : une carte découpée en classes égales"><img class="aligncenter size-medium wp-image-8138" src="media/c22d5bb2.tuto_discreti_1-300x212.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_1-300x212.png" alt="tuto_discreti_1" width="300" height="212" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">On peut laisser tranquillement reposer cet éventail de teintes en se posant la question, également essentielle, <strong>des seuils de notre future carte</strong>.</p>
<h1 style="text-align: left;">Les quantiles, bien taillés pour les comparaisons</h1>
<p><strong>On ne fera pas d'exposé sur la discrétisation cartographique</strong>, ceux que ça intéresse pourront directement lire <a target="_blank" href="http://blog.m0le.net/2014/09/08/cartographie-numerique-precis-de-discretisation-pour-les-nuls/">ce billet entièrement consacré au sujet</a>.</p>
<p>Mais on va tout de même se pencher sur deux cartes réalisables à partir des données du premier tuto. Commençons par celle-ci :</p>
<p><iframe width="500" height="1140" src="http://raphi.m0le.net/data/FN%201995%202012/fn_1995_test.html" scrolling="no"></iframe></p>
<p>A la lecture de la légende, on remarque <strong>un découpage stable</strong>. En gros, chaque <strong>classe est séparée des autres de 5%</strong>. Ces cartes sont très répandues et donc faciles à lire pour les lecteurs.</p>
<p>Mais leur principale faiblesse est aussi criante dans notre exemple. <strong>Les valeurs extrêmes</strong>, très isolées par rapport au gros de la distribution, créent <strong>des classes intermédiaires quasi vides</strong>.</p>
<p>On se retrouve à l'arrivée avec<strong> une très large majorité des communes coloriées avec cinq couleurs sur la palette de neuf</strong>. Les nuances ne sautent pas aux yeux, et on peut simplement se dire "le FN fait des gros scores partout".</p>
<p>Ce n'est pas faux d'un point de vue purement statistique, mais <strong>ça ne permet pas de faire une analyse territoriale très poussée</strong>.</p>
<p>Deux choix s'offrent alors à nous :</p>
<ul>
<li>retirer une dizaine de communes pour les valeurs minimales, une dizaine pour les valeurs maximales (ça peut être plus ou moins), et <strong>refaire un découpage en classes égales à partir de cet échantillon épuré</strong></li>
<li>adopter <strong>un autre partage de classes</strong></li>
</ul>
<p>On va s'orienter vers la seconde option, et observer la carte obtenue lorsqu'on utilise <strong>la méthode des quantiles</strong> :</p>
<p><iframe width="500" height="1140" src="http://raphi.m0le.net/data/FN%201995%202012/fn_1995.html" scrolling="no"></iframe></p>
<p>Ici, <strong>ce n'est pas la valeur qui compte mais bien la position des communes</strong> par rapport à la distribution de votes FN. Certaines classes regroupent des éventails de 3%, d'autres de deux, d'autres d'un seul.</p>
<p>Mais ce qu'on a perdu en stabilité côté légende, on l'a gagné en information sur la carte, <strong>en pouvant repérer très facilement où se situent les villes qui ont voté le plus FN</strong> et celles qui ont voté le moins.</p>
<p>Autre avantage : <strong>si on analyse d'autres paramètres à la même échelle</strong> (c'est le cas dans l'article final), <strong>la comparaison entre cartes est possible</strong>.</p>
<p>Et autre cerise sur le gâteau : <strong>on peut facilement réaliser ce découpage grâce à un logiciel tableur</strong> :-)...</p>
<h1>La fonction CENTILE() à la rescousse</h1>
<p>On va commencer par ouvrir notre bon Libre Calc (on Excel, peu importe) et <strong>ouvrir le fichier csv du premier tuto</strong>. Il doit s'appeler fn_1995_alsace si vous avez suivi scrupuleusement les indications.</p>
<p>Il doit comporter six colonnes, avec de A à F :</p>
<ul>
<li>l'identifiant INSEE, appelé <strong>code_insee</strong></li>
<li>le nom de la commune, appelé <strong>commune</strong></li>
<li>le nombre d'inscrits, nommé<strong> inscrits</strong></li>
<li>l'abstention, nommée <strong>abs_ins</strong></li>
<li>le nombre d'électeurs FN, appelé <strong>fn</strong></li>
<li>le FN en pourcentages d'exprimés, nommé <strong>fn_exp</strong></li>
</ul>
<p>Si l'ordre que vous est différent, aucun problème, vous aurez juste à transposer ce qui va être écrit à une autre colonne.</p>
<p>Ici, on va exclusivement <strong>se concentrer sur la colonne "fn_exp"</strong>. On va commencer par cliquer sur la lettre correspondant à cette colonne, et à choisir dans les menus du haut <strong>Données &gt; Trier</strong> :</p>
<p style="text-align: center;"><a target="_blank" href="media/6b36f9c9.tuto_discreti_2.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_2.png" rel="lightbox[8131]" title="Autopsie d'une dataviz [8.2] : une carte découpée en classes égales"><img class="aligncenter size-medium wp-image-8146" src="media/ea127b24.tuto_discreti_2-300x225.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_2-300x225.png" alt="tuto_discreti_2" width="300" height="225" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Une fenêtre s'ouvre pour demander si les autres colonnes devront aussi être triées. On choisit évidemment l'option <strong>"Etendre la sélection"</strong> pour signifier au logiciel que oui.</p>
<p style="text-align: center;"><a target="_blank" href="media/6931dfd1.tuto_discreti_3.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_3.png" rel="lightbox[8131]" title="Autopsie d'une dataviz [8.2] : une carte découpée en classes égales"><img class="aligncenter size-medium wp-image-8147" src="media/f429c239.tuto_discreti_3-300x133.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_3-300x133.png" alt="tuto_discreti_3" width="300" height="133" /></a></p>
<p style="text-align: left;">Libre Calc propose alors par défaut <strong>un tri de la colonne "fn_exp" dans l'ordre croissant</strong>, ce qui est exactement ce que nous voulons. On clique sur "OK" sans se poser des questions :</p>
<p style="text-align: center;"><a target="_blank" href="media/3c596b47.tuto_discreti_4.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_4.png" rel="lightbox[8131]" title="Autopsie d'une dataviz [8.2] : une carte découpée en classes égales"><img class="aligncenter size-medium wp-image-8148" src="media/0c35ef88.tuto_discreti_4-300x244.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_4-300x244.png" alt="tuto_discreti_4" width="300" height="244" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Si l'opération s'est bien déroulée,<strong> la première cellule doit correspondre à la commune de Lucelle</strong>, avec un FN à 3,85%, suivie ensuite par Bellefosse, avec 10,39%. Vous noterez qu'à elle seule Lucelle occupe entièrement une classe dans notre première carte.</p>
<p style="text-align: left;"><strong>Ce tri n'est pas obligatoire</strong> pour se servir de la fonction qui nous intéresse, mais il va nous permettre de <strong>comprendre très concrètement comme elle fonctionne</strong>.</p>
<p style="text-align: left;">On serait d'abord tenté de découper simplement notre carte en déciles, ce qui reviendrait à :</p>
<ul>
<li style="text-align: left;"><strong>définir la première classe comme celle qui regroupe les 10%</strong> (ou 90 villes) de communes qui ont voté le moins FN</li>
<li style="text-align: left;">puis passer aux 10% de villes suivants</li>
<li style="text-align: left;">et ainsi de suite jusqu'aux communes qui ont voté le plus FN</li>
</ul>
<p>Le problème est ici que nous avons choisi un nombre de neuf classes, pas de dix. Du coup, <strong>la dernière classe regrouperait à elle seule les 20% de villes qui ont voté le plus FN</strong>, soit 180 communes, alors que toutes les autres n'en affecteraient que 90 chacune.</p>
<p>On va anticiper et passer<strong> à des échantillons de 11% à chaque fois</strong>, soit à peu près 100 communes. La dernière classe n'aurait plus que 10 communes en trop par rapport aux autres, ce qui est tout à fait correct.</p>
<p>Pour l'illustrer, on va se placer sur la cellule G1 et taper :</p>
<blockquote><p>=CENTILE(F2:F904;0,11)</p></blockquote>
<p>La fonction CENTILE() va prendre en considération deux choses :</p>
<ul>
<li><strong>un échantillon statistique</strong>, ici la colonne qui contient les pourcentages FN</li>
<li><strong>un alpha</strong> qui correspond au seuil recherché. Ici, on recherche la valeur en-dessous de laquelle se situent 11% de l'échantillon précédent</li>
</ul>
<p>Si tout va bien, notre fonction doit renvoyer (en arrondissant) <strong>19,45</strong>. On peut alors <strong>naviguer vers les cellules 101 et 102</strong> pour vérifier que la valeur seuil correspond bien à leur moyenne :</p>
<p style="text-align: center;"><a target="_blank" href="media/5ed91402.tuto_discreti_41.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_41.png" rel="lightbox[8131]" title="Autopsie d'une dataviz [8.2] : une carte découpée en classes égales"><img class="aligncenter size-medium wp-image-8150" src="media/79aaf54d.tuto_discreti_41-300x113.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/tuto_discreti_41-300x113.png" alt="tuto_discreti_4" width="300" height="113" /></a></p>
<p style="text-align: center;"><em>Cliquez sur l'image pour l'agrandir</em></p>
<p style="text-align: left;">Une traduction textuelle serait dire que, en 1995,<strong> 11% des communes alsaciennes ont voté à moins de 19,45%</strong> <strong>en faveur du FN</strong> (ou que 89% de ces communes ont au moins donné 19,45% au parti d'extrême droite). C'est aussi simple que ça !</p>
<p style="text-align: left;">On peut ensuite reprendre notre palette de Colorbrewer, et noter que <strong>la couleur #ffffff s'accordera aux valeurs inférieures à 19,45%</strong>.</p>
<p style="text-align: left;">Plus qu'à continuer la manip' en ajoutant 11% à l'alpha précédent, soit :</p>
<blockquote>
<p style="text-align: left;">=CENTILE(F2:F904;0,22)</p>
</blockquote>
<p style="text-align: left;">Cette fonction doit renvoyer 21,93, et on <strong>la fera correspondre à la couleur #f0f0f0</strong>.</p>
<p style="text-align: left;">On peut ainsi <strong>faire correspondre les différents seuils aux couleurs correspondantes</strong>. Je ne vais pas tout détailler, mais si vous n'avez fait aucune erreur, <strong>la dernière classe</strong> (couleur #000000) <strong>doit correspondre à 32,17%</strong>.</p>
<p style="text-align: left;">Prochaine étape : le codage final de la carte en utilisant D3js <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> !</p>


feed_id: http://blog.m0le.net/?p=8018
title: Nono's Songs : Aloe Blacc - I Need A Dollar
uri: Nono-s-Songs-Aloe-Blacc-I-Need-A-Dollar
url: http://blog.m0le.net/2014/12/01/nonos-songs-aloe-blacc-i-need-a-dollar/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Aloe Blacc</strong> qui nous propose <strong>I Need A Dollar</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Aloe_Blacc_-_I_Need_A_Dollar' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FAloe_Blacc_-_I_Need_A_Dollar.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/9a46bab0.Aloe_Blacc_-_I_Need_A_Dollar.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Aloe_Blacc_-_I_Need_A_Dollar.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/d1d2dbac.Aloe_Blacc_-_I_Need_A_Dollar.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Aloe_Blacc_-_I_Need_A_Dollar.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8154
title: Autopsie d'une dataviz [8.3] : coder une carte choroplèthe avec D3js
uri: Autopsie-d-une-dataviz-8-3-coder-une-carte-choroplèthe-avec-D3js
url: http://blog.m0le.net/2014/12/07/autopsie-dune-dataviz-8-3-coder-une-carte-choroplethe-avec-d3js/
content:
<p>Troisième et ultime volet d'un tutoriel qui décrit la marche à suivre pour coder une carte avec la librairie D3js. Passage en revue du code.</p>
<p><span id="more-8154"></span></p>
<p style="text-align: center;"><a target="_blank" href="media/91b3ef79.d3_cartes.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/d3_cartes.png" rel="lightbox[8154]" title="Autopsie d'une dataviz [8.3] : coder une carte choroplèthe avec D3js"><img class="aligncenter size-medium wp-image-8186" src="media/3004fcf7.d3_cartes-298x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2014/12/d3_cartes-298x300.png" alt="d3_cartes" width="298" height="300" /></a></p>
<p>Il est temps, après avoir préparé <a target="_blank" href="http://blog.m0le.net/2014/11/26/autopsie-dune-dataviz-8-1-un-geojson-complet-et-leger/">un geojson complet et léger</a> et s'être posé <a target="_blank" href="http://blog.m0le.net/2014/12/01/autopsie-dune-dataviz-8-2-une-carte-decoupees-en-classes-egales/">quelques questions technique sur la future carte</a>, <strong>de passer au Javascript</strong>.</p>
<p><strong>Pour ceux qui auraient eu des soucis</strong> lors de la première partie et souhaitent quand même faire ce volet, ils pourront trouver le geojson correspond <a target="_blank" href="https://github.com/raphadasilva/Carte-D3">sur ce répertoire GitHub</a>.</p>
<h1>Comment fonctionne D3 ?</h1>
<p><a target="_blank" href="http://d3js.org/">D3, pour Data-Driven Documents</a>, est une librairie Javascript initiée par Mike Bostock et qui connaît <strong>un important succès public et critique</strong>, notamment dans le petit milieu du journalisme de données.</p>
<p>Elle a l'énorme avantage <strong>d'être très exhaustive</strong>, permettant de coder à la fois des histogrammes ou des cartes.</p>
<p>D'un autre côté, <strong>elle demande un certain bagage en code</strong>, et surtout <strong>est parfois aux fraises sur support mobile</strong>, ce qui peut constituer un handicap alors que des lib plus optimales comme <a target="_blank" href="http://www.highcharts.com/">Highcharts</a> ou <a target="_blank" href="http://leafletjs.com/">Leaflet</a> sont dans les parages.</p>
<p>Techniquement, D3 permet de générer<strong> des formes vectorielles <a target="_blank" href="http://fr.wikipedia.org/wiki/Scalable_Vector_Graphics">au format SVG</a></strong>, qui peut facilement être<strong> stylisé avec du CSS</strong>. On peut donc directement coder une ou plusieurs classes et ensuite les affecter aux éléments SVGqui nous intéressent.</p>
<p>Côté script, on trouve en général :</p>
<ul>
<li><strong>l'ossature de notre visualisation en variables</strong> : axes des ordonnées et des abscisses pour les graphes, projections pour les cartes, sélection des div qui vont accueillir les futurs formes vectorielles</li>
<li><strong>une fonction qui va animer tout ça</strong> à partir d'un ou de plusieurs fichiers de données</li>
</ul>
<h1>Les premiers bouts de code</h1>
<p>On va commencer petit à petit en créant <strong>un fichier HTML</strong> à côté du fichier geojson et <strong>du petit plugin d3.tip.js </strong>(présent dans le répertoire GitHub précédemment cité) qui nous<strong> permettra de construire de belles infobulles interactives</strong>.</p>
<h2>La structure de base</h2>
<p>On va dans cette première partie :</p>
<ul>
<li>appeler la librairie</li>
<li>créer <strong>des balises &lt;style&gt;, &lt;body&gt; et &lt;script&gt;</strong> qui contiendront respectivement notre CSS, nos éléments HTML de base et le Javascript qui va permettre d'afficher la carte</li>
</ul>
<p></p><pre class="crayon-plain-tag">&lt;!DOCTYPE html&gt;
&lt;meta charset="utf-8"&gt;
&lt;head&gt;
  &lt;script src="http://d3js.org/d3.v3.min.js"&gt;&lt;/script&gt;
    &lt;script src="d3.tip.js"&gt;&lt;/script&gt;

&lt;/head&gt;
&lt;style&gt;

&lt;/style&gt;
&lt;body&gt;

&lt;div id="container"&gt;
  &lt;h1&gt;C'est dans le nord de la région que le FN a fait ses meilleurs scores en 1995&lt;/h1&gt;
  &lt;div id="carte"&gt;&lt;/div&gt;
  &lt;div id="legende"&gt;&lt;/div&gt;
   &lt;div id="source"&gt;Source : &lt;a href="https://www.data.gouv.fr/fr/datasets/election-presidentielle-1995-resultats-572085/" target="_blank"&gt;Data.gouv.fr&lt;/a&gt;&lt;/div&gt;

&lt;/div&gt;


&lt;script&gt;

&lt;/script&gt;

&lt;/body&gt;</pre><p>Jusque-là rien de bien méchant, on peut donc passer au CSS !</p>
<h2>Le CSS</h2>
<p>Le code CSS suivant va nous permettre, une fois inséré dans la balise &lt;style&gt;, <strong>de bien agencer les éléments statiques</strong> présents juste avant la balise &lt;script&gt;, mais pas que.</p>
<p>On va notamment <strong>créer une classe "communes"</strong>, dont les membres s'afficheront d'une couleur donnée au survol de la souris. On se laissera quelques affectations pour la fonction Javascript, par exemple les différentes teintes que l'on appliquera aux zones.</p><pre class="crayon-plain-tag">.communes {
  fill:#000;
}

.communes:hover {  
  fill:#331515;
}
.t_commune{
  font-size: 13px;
  font-weight: bold;
}
.d3-tip {
  line-height: 1.5;
  font-weight: normal;
  font-family: Arial;
  padding: 5px;
  background: rgba(125, 125, 125, 0.9);
  color: white;
  border-radius: 4px;
  font-size: 11px;
  margin-left: 25px;
  margin-top: 205px;
}
#container{
  width:500px;
  height:1200px;
  position: absolute;
}
#carte{
  width:500px;
  height: 950px;
  margin-top:-30px;
  position: absolute;
}
#legende{
    margin-top:900px;
    position:absolute;
    width: 500px;
}
#source{
  position: absolute;
  margin-top: 1020px;
  width: 500px;
margin-left: 30px;
font-family: Arial;
font-size: 0.8em;
}
h1{
  font-family: Arial;
  font-size: 1.2em;
  width: 500px;
  margin-left: auto;
  text-align:center;
}</pre><p>On a également <strong>soigné la future infobulle</strong> (d3-tip) qui s'affichera au survol de chaque commune. On s'attardera notamment <strong>sur les attributs margin-top et margin-left</strong>, qui permettront d'afficher cette infobulle en-dessous à droite du curseur.</p>
<p>Par défaut, elle risquerait de déborder hors du cadre pour les communes périphériques. Evidemment, <strong>cela est facilement adaptable</strong>.</p>
<p>Si vous affichez le fichier .html à ce stade, <strong>vous aurez simplement la titre et la source</strong>. Il est temps de remplir le vide avec notre script !</p>
<h1>Le script</h1>
<h2>Les variables</h2>
<p>Côté variables, nous avons besoin de :</p>
<ul>
<li>de <strong>deux duos largeur/hauteur</strong>, correspondant à la carte et à la légende</li>
<li>d'une <strong>projection cartographique</strong>. Attention à cette étape : il faut impérativement que la projection corresponde précisément à celle dans laquelle est paramétrée le geojson. Si vous avez bien suivi le premier tuto, <strong>il s'agissait de la WSG 84, qui correspond à la projection Mercator</strong>. La <a target="_blank" href="https://github.com/mbostock/d3/wiki/Geo-Projections">liste des projections disponibles avec D3</a> est disponible ici. Il faut également <strong>définir l'échelle</strong> (=niveau de zoom, se fait au doigt mouillé) et<strong> le centre de la carte</strong> (par défaut, c'est en plein milieu de l'Atlantique). Pour viser ce centre, j'utilise <a target="_blank" href="https://www.mapbox.com/mapbox.js/example/v1.0.0/select-center-form/">cet exemple de Mapbox</a> (attention, la déclaration des coordonnées est inversée dans D3). Enfin, il faut effectuer une translation de cette projection pour bien caler le centre au pixel près</li>
<li>d'un <strong>tableau rempli de couleurs hexadécimales</strong>. Je vous le donne en mille : il correspond aux futures teintes de notre prochaine choroplèthe !</li>
<li>d'un <strong>"générateur de traits"</strong> qui affichera convenablement les coordonnées contenues dans le geojson. Ce générateur <strong>prend en considération la projection définie avant</strong>, il faut donc bien veiller à utiliser la même proj' que le fichier qui contient les données. Sinon, le résultat ressemblera à du yaourt</li>
<li><strong>de deux éléments svg</strong>, qui s'appliqueront sur les div "carte" et "legende"</li>
</ul>
<p>Côté code, ça se traduit comme ça :</p><pre class="crayon-plain-tag">var width = 500,
    height = 950;
var width3=500,
    height3=150;

var proj = d3.geo.mercator()
  .center([7.56, 48.27])
    .scale(20000)
    .translate([width / 2, height / 2]);

var couleurs = ['#000000','#252525','#525252','#737373','#969696','#bdbdbd','#d9d9d9','#f0f0f0','#ffffff'];
var path = d3.geo.path()
    .projection(proj);

var svg = d3.select("#carte").append("svg")
    .attr("width", width)
    .attr("height", height);

var svg3 = d3.select("#legende").append("svg")
    .attr("width", width3)
    .attr("height", height3);</pre><p></p>
<h2> La fonction</h2>
<p>Côté variables, on est bon, reste plus qu'à définir notre fonction. Dans celle-là, <strong>on utilise qu'un fichier json</strong>, on peut donc se rabattre sur l'option d3.json qui prend en argument le fameux fichier et la fonction qui affiche tout ça.</p>
<p>On va entamer les festivités <strong>en déclarant comme variable notre infobulle interactive</strong>. On lui appliquera la classe d3-tip et on ajoutera une fonction qui définit le contenu de ladite infobulle.</p>
<p>Rien de bien sorcier, <strong>on déclare en variables locales les données qu'on veut voir s'afficher</strong> (à l'aide du nom de colonnes) et on retourne ce contenu en HTML.</p>
<p>En code, le début de notre fonction, située juste après les variables, se traduit ainsi :</p><pre class="crayon-plain-tag">d3.json ("fn_1995_communes.json",function (error,fn) {

  var tip = d3.tip()
      .attr('class', 'd3-tip')
      .offset([-10, 0])
      .html(function(d,i) {
        nom_commune = fn.features[i].properties.COMMUNE
        voix_fn = fn.features[i].properties.voix_fn
        fn_exp=fn.features[i].properties.fn_p_exp
        inscrits = fn.features[i].properties.inscrits
        abs_ins=fn.features[i].properties.abs_ins
        return "&lt;span class='t_commune'&gt;"+nom_commune+"&lt;/span&gt;&lt;br/&gt;En 1995&lt;hr/&gt;&lt;u&gt;Inscrits&lt;/u&gt; : "+inscrits+"&lt;/br&gt;&lt;/br&gt;&lt;u&gt;Abstention&lt;/u&gt; : &lt;b&gt;"+abs_ins+"%&lt;/b&gt;&lt;/br&gt;&lt;/br&gt; &lt;u&gt;FN&lt;/u&gt; : &lt;b&gt;"+fn_exp+"%&lt;/b&gt;,&lt;/br&gt; soit &lt;b&gt; "+voix_fn+" électeurs&lt;/b&gt; "
      })
      svg.call(tip);


});</pre><p>Le "fn" en attribut de la fonction nous permet d'appeler <strong>les propriétés associées. du geojson</strong>.</p>
<p>Par exemple, fn.features[0].properties.COMMUNE désigne le contenu de la propriété "COMMUNE" de la première ligne de notre fichier (<strong>autrement dit : "Still"</strong>).</p>
<p>Rien de révolutionnaire côté fichier final, il est peut-être temps <strong>d'afficher nos différentes communes</strong>. On va sélectionner notre variable svg, lui appliquer la classe "communes", et quelques autres propriétés CSS à la volée.</p>
<p>Pour cela, on écrit juste en-dessous du svg.call(tip) précédent :</p><pre class="crayon-plain-tag">svg.append("g").attr("class","villes") // append("g") désigne un groupe et le nom de la classe n'a aucune importance
        .selectAll("path")
        .data(fn.features)
        .enter()
          .append("path")
          .attr("class", "communes") // là en revanche, le nom de classe compte
          .attr("d", path)
          .attr("stroke","#333333")
          .attr('stroke-width', '0.5');</pre><p>Si le plan s'est déroulé sans accroc, <strong>les communes doivent s'afficher en noir</strong> et changer de couleur au survol :<iframe width="500" height="1140" src="http://raphi.m0le.net/data/FN%201995%202012/fn_1995_1.html" scrolling="no"></iframe></p>
<p>Tout cela est bel et bon, mais on veut une choroplèthe, donc des communes de différentes teintes.</p>
<p>On va commencer par virer du CSS précédent ce qui concerne la classe "communes", et <strong>ajouter une fonction d'attribution de couleurs</strong>.</p>
<p>Celle-ci fonctionnera <strong>avec des boucles if/else if</strong> qui affecteront les bonnes teintes du tableau couleurs aux bons seuils. Concrètement, ça se traduit ainsi :</p><pre class="crayon-plain-tag">svg.append("g").attr("class","villes")
        .selectAll("path")
        .data(fn.features)
        .enter()
          .append("path")
          .attr("class", "communes")
          .attr("d", path)
          .attr("stroke","#333333")
          .attr('stroke-width', '0.5')
          .attr("fill", function(d,i){ // on applique les teintes aux zones avec une fonctione if/else qui distribue les valeurs du tableau précédent en fonction de seuils
              if (fn.features[i].properties.fn_p_exp&gt;32.17){
            return couleurs[0]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;29.85) {return couleurs[1]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;28.14) {return couleurs[2]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;26.36) {return couleurs[3]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;24.92) {return couleurs[4]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;23.49) {return couleurs[5]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;21.92) {return couleurs[6]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;19.45) {return couleurs[7]
          }
          else {return couleurs[8]}
        });</pre><p>Si vous avez <strong>bien viré la classe "communes"</strong> (juste la classe, pas le :hover), vous devriez voir s'afficher la carte suivante :<iframe width="500" height="1140" src="http://raphi.m0le.net/data/FN%201995%202012/fn_1995_2.html" scrolling="no"></iframe></p>
<p>Il ne nous reste <strong>plus qu'à afficher/cacher l'infobulle</strong> quand la souris est sur une zone et quand elle n'est plus dessus.</p>
<p>Ce qui nous donne, en reprenant tout depuis le début, ceci :</p><pre class="crayon-plain-tag">svg.append("g").attr("class","villes") // le nom de cette classe n'a pas d'importance
        .selectAll("path")
        .data(fn.features)
        .enter()
          .append("path")
          .attr("class", "communes")
          .attr("d", path)
          .attr("stroke","#333333")
          .attr('stroke-width', '0.5')
          .attr("fill", function(d,i){ // on applique les teintes aux zones avec une fonctione if/else qui distribue les valeurs du tableau précédent en fonction de seuils
              if (fn.features[i].properties.fn_p_exp&gt;32.17){
            return couleurs[0]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;29.85) {return couleurs[1]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;28.14) {return couleurs[2]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;26.36) {return couleurs[3]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;24.92) {return couleurs[4]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;23.49) {return couleurs[5]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;21.92) {return couleurs[6]
          }
          else if (fn.features[i].properties.fn_p_exp&gt;19.45) {return couleurs[7]
          }
          else {return couleurs[8]}
        })
        .on('mouseover', function(d, i) {
          tip.show(d,i);
        })
        .on('mouseout',  function(d, i) {
          tip.hide(d,i);
        });</pre><p>Pour la légende,<strong> j'ai bricolé<a target="_blank" href="http://www.lemonde.fr/teaser/?connexion&amp;url_zop=http%3a%2f%2fabonnes.lemonde.fr%2fles-decodeurs%2fvisuel%2f2014%2f08%2f06%2fpres-de-3-500-morts-en-avion-depuis-2010_4467292_4355770.html"> en m'inspirant d'un exemple des Décodeurs du Monde</a></strong> : en gros, on définit à chaque fois une ligne de carrés qui se remplissent de teintes, puis on ajoute en-dessous le texte associé, comme ceci :</p><pre class="crayon-plain-tag">svg3.append("g")
      .append("text")
      .attr("x", 30)
      .attr("y", 22)
      .attr("font-size", 11)
      .attr("font-family","Arial")
      .text("En avril 1995, le FN enregistrait dans cette ville :")
    svg3.append("g").attr("class", "legende")
      .selectAll("rect")
      .data(["Plus de 32%", "30% à 32%", "28% à 30%","26% à 28%","25% à 26%"])
      .enter()
      .append("rect")
      .attr("stroke","#000")
      .attr('stroke-width', '1')
      .attr("x", function(d,i){
          return 30+i*83
      })
      .attr("y", 40)
      .attr("fill", function(d){
        if (d == "Plus de 32%"){
            return couleurs[0]
          }
          else if (d == "30% à 32%"){
           return couleurs[1]
          }
          else if (d == "28% à 30%"){
           return couleurs[2]
         } else if (d == "26% à 28%"){
           return couleurs[3]
         }
          else if (d == "25% à 26%"){
           return couleurs[4]
         }
      })
      .attr("width", 50)
      .attr("height", 12)
    svg3.append("g").attr("class", "legende")
      .selectAll("text")
      .data(["Plus de 32%", "30% à 32%", "28% à 30%","26% à 28%","25% à 26%"])
      .enter()
      .append("text")
      .attr("x", function(d,i){
          return 27+i*85
      })
      .attr("y", 69)
      .attr("font-family","Arial")
      .attr("font-size", 10.1)
      .text(function(d){return d})
      svg3.append("g").attr("class", "legende")
      .selectAll("rect")
      .data(["23% à 25%", "22% à 23%", "19% à 22%","Moins de 19%"])
      .enter()
      .append("rect")
      .attr("stroke","#000")
      .attr('stroke-width', '1')
      .attr("x", function(d,i){
          return 30+i*83
      })
      .attr("y", 80)
      .attr("fill", function(d){
        if (d == "23% à 25%"){
            return couleurs[5]
          }
          else if (d == "22% à 23%"){
           return couleurs[6]
          }
          else if (d == "19% à 22%"){
           return couleurs[7]
         } else if (d == "Moins de 19%"){
           return couleurs[8]
         }
      })
      .attr("width", 50)
      .attr("height", 12)
    svg3.append("g").attr("class", "legende")
      .selectAll("text")
      .data(["23% à 25%", "22% à 23%", "19% à 22%","Moins de 19%"])
      .enter()
      .append("text")
      .attr("x", function(d,i){
          return 27+i*84
      })
      .attr("y", 109)
      .attr("font-family","Arial")
      .attr("font-size", 10.1)
      .text(function(d){return d})</pre><p>Ca ne paraît pas comme ça, mais c'est assez facilement réutilisable !</p>
<p>Plus qu'à mettre en ligne notre fichier html pour bricoler une iframe et le tour est joué <img src="media/2ff3eac6.icon_smile.gif" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/icon_smile.gif" alt=":-)" class="wp-smiley" /> !</p>
<p><iframe width="500" height="1140" src="http://raphi.m0le.net/data/FN%201995%202012/fn_1995.html" scrolling="no"></iframe></p>


feed_id: http://blog.m0le.net/?p=8021
title: Nono's Songs : The Stranglers - Golden Brown
uri: Nono-s-Songs-The-Stranglers-Golden-Brown
url: http://blog.m0le.net/2014/12/08/nonos-songs-the-stranglers-golden-brown/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>The Stranglers</strong> qui nous propose <strong>Golden Brown</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/The_Stranglers_-_Golden_Brown' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FThe_Stranglers_-_Golden_Brown.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/136179d8.The_Stranglers_-_Golden_Brown.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Stranglers_-_Golden_Brown.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/f8ecee8d.The_Stranglers_-_Golden_Brown.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Stranglers_-_Golden_Brown.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8024
title: Nono's Songs : Propellerheads - Crash
uri: Nono-s-Songs-Propellerheads-Crash
url: http://blog.m0le.net/2014/12/15/nonos-songs-propellerheads-crash/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Propellerheads</strong> qui nous propose <strong>Crash</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Propellerheads_-_Crash' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FPropellerheads_-_Crash.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/74d68f93.Propellerheads_-_Crash.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Propellerheads_-_Crash.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/5ec69ffb.Propellerheads_-_Crash.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Propellerheads_-_Crash.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8192
title: L'Hyper sécurité chez Carrefour Online (sisi !)
uri: L-Hyper-sécurité-chez-Carrefour-Online-(sisi-)
url: http://blog.m0le.net/2015/01/31/lhyper-securite-chez-carrefour-online-sisi/
content:
<p>Pas plus tard que hier, j'ai eu l’expérience d'achat en ligne, la plus bizarre qui me soit arrivé jusque là...</p>
<p><span id="more-8192"></span></p>
<p>J'ai été contacté par un ami (coucou Flo) qui me signalait <strong>une super affaire pour un vidéo-projecteur</strong> qu'on convoitait, avec un code promo pour une réduction de 50€ <strong>valable uniquement le jour-même</strong>.</p>
<p>Pas de temps à perdre donc, j'ai fait ca depuis mon PC pro (Seven Pro) directement du boulot...</p>
<p>Habitué de Firefox, armé des indispensables Ghostery et AdBlock, et n'ayant même jamais entendu parler du site carrefour online, <strong>il me faut créer un compte</strong>. Bizarrement, comme tous les sites d'achat, <strong>eux ne m'emmerdent jamais avec mes adresses email en <em>xxxx+nomdusite@domain.tld</em></strong>.</p>
<p>De même, inutile de valider le compte, suite au gentil mail qu'on reçoit sur notre boite mail ... Vous comprenez, il faut qu'on consomme le plus [facil|rapid]ement possible !</p>
<p>Bref, passée la phase "renseignements persos", <strong>je valide ma commande en précisant mon code promo</strong> qui fonctionne à merveille, je dégaine ma carte bancaire (mode de paiement choisi) quand j'arrive sur ...</p>
<p>Une page blanche.</p>
<p>Vraiment, blanche... Rien de rien...</p>
<p>Je perds pas le Nord et essaye l'habituelle combinaison désactiver Ghostery + AdBlock pour le site, je rafraîchis : <strong>page blanche toujours</strong> !</p>
<p>Hum, <strong>je désactive complètement AdBlock et Ghostery</strong>, je me ferme et réouvre ma session, revalide ma commande et ... toujours page blanche !</p>
<p>Groumpf... Pris d'un instant de folie, je me dis "à tous les coups, ca va marcher avec IE .. HAHAHAHA" ...</p>
<p>Et ben mes amis, oui,<strong> avec IE, j'ai pu afficher la page de payement correctement</strong>. Une fois validée l'étape de renseignement de carte bancaire, identification à deux facteurs (SMSs de ma banque), ma commande est validé, je reçois le mail de confirmation ... youpiii !!</p>
<p>Que vois-je pas dans ma boite mail, <strong>20 minutes après ma confirmation de commande</strong> ? Ca :</p>
<p><a target="_blank" href="media/915d9d4c.carrefouronline_confirmation.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/01/carrefouronline_confirmation.png" rel="lightbox[8192]" title="L'Hyper sécurité chez Carrefour Online (sisi !)"><img class="aligncenter size-full wp-image-8198" src="media/915d9d4c.carrefouronline_confirmation.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/01/carrefouronline_confirmation.png" alt="carrefouronline_confirmation" width="603" height="664" /></a></p>
<p>Forcément, je me suis empressé d'appeler, <strong>car je voyais gros comme une maison ma commande rester bloquée, avant d'être annulée</strong>...</p>
<p>La suite, je sais pas si je dois en être content (d'un point de vue sécuritaire) ou si je dois devenir (encore plus) parano : en 2 minutes, et après avoir donné mon numéro de commande, j'ai dû confirmer à la personne au téléphone :</p>
<ul>
<li>Mon nom</li>
<li>Mon prénom</li>
<li>Mon adresse</li>
<li>Mon type de paiement</li>
<li>Mon modèle de carte de crédit (Master Card/Visa)</li>
<li>Le nom de ma banque</li>
<li>Ma date de naissance ou la date d'expiration de ma CB (plus très sûr maintenant).</li>
</ul>
<p><strong> Alors je sais pas trop quoi en penser</strong> et dans le doute je préfère positiver mais ça ne m’étais jamais arrivé avant :</p>
<ul>
<li>Utiliser IE parce qu'un site ne fonctionne pas avec Firefox</li>
<li>Devoir appeler un numéro de téléphone pour confirmer ma commande</li>
<li>Donner autant de renseignements pour un simple achat en ligne !</li>
</ul>
<p>Chose étrange,<strong> mon ami, qui a passé exactement la même commande un peu plus tot dans la matinée</strong>, n'a lui, jamais eu à faire vérifier sa commande ...</p>
<p>Sont-ce mes multiples essais de rafraîchissement de page ? Le fait d'avoir une IP suisse pour passer commande sur un site français ?</p>
<p>Mystère, en tout cas, on se sent (presque) en sécurité chez Carrefour Online !</p>


feed_id: http://blog.m0le.net/?p=8202
title: Nono's Songs : Plastician - Japan
uri: Nono-s-Songs-Plastician-Japan
url: http://blog.m0le.net/2015/02/02/nonos-songs-plastician-japan/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le non clip de <strong>Plastician</strong> qui nous propose <strong>Japan</strong></p>
<p>&nbsp;</p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Plastician_-_Japan' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FPlastician_-_Japan.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/0fe42293.Plastician_-_Japan.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Plastician_-_Japan.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

<p>&nbsp;</p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/938fb23c.Plastician_-_Japan.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Plastician_-_Japan.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->


feed_id: http://blog.m0le.net/?p=8207
title: Nono's Songs : MC Hammer - U Can't Touch This
uri: Nono-s-Songs-MC-Hammer-U-Can-t-Touch-This
url: http://blog.m0le.net/2015/02/09/nonos-songs-mc-hammer-u-cant-touch-this/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>MC Hammer</strong> qui nous propose <strong>U Can't Touch This</strong></p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/MC_Hammer_-_U_Can_t_Touch_This' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FMC_Hammer_-_U_Can_t_Touch_This.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/142b3ddc.MC_Hammer_-_U_Can_t_Touch_This.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/MC_Hammer_-_U_Can_t_Touch_This.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/ccb844b6.MC_Hammer_-_U_Can_t_Touch_This.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/MC_Hammer_-_U_Can_t_Touch_This.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->


feed_id: http://blog.m0le.net/?p=8217
title: Nono's Songs : Wheatus - Teenage Dirtbag
uri: Nono-s-Songs-Wheatus-Teenage-Dirtbag
url: http://blog.m0le.net/2015/02/16/nonos-songs-wheatus-teenage-dirtbag/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Wheatus</strong> qui nous propose <strong>Teenage Dirtbag</strong></p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Wheatus_-_Teenage_Dirtbag' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FWheatus_-_Teenage_Dirtbag.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/7c613fc5.Wheatus_-_Teenage_Dirtbag.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Wheatus_-_Teenage_Dirtbag.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/2c3dab9d.Wheatus_-_Teenage_Dirtbag.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Wheatus_-_Teenage_Dirtbag.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->


feed_id: http://blog.m0le.net/?p=8222
title: Nono's Songs : Guns N' Roses - Welcome To The Jungle
uri: Nono-s-Songs-Guns-N-Roses-Welcome-To-The-Jungle
url: http://blog.m0le.net/2015/03/09/nonos-songs-guns-n-roses-welcome-to-the-jungle/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Guns N' Roses</strong> qui nous propose <strong>Welcome To The Jungle</strong></p>
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Guns_N_Roses_-_Welcome_To_The_Jungle' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FGuns_N_Roses_-_Welcome_To_The_Jungle.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/cb108873.Guns_N_Roses_-_Welcome_To_The_Jungle.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Guns_N_Roses_-_Welcome_To_The_Jungle.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->

<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/b04f2227.Guns_N_Roses_-_Welcome_To_The_Jungle.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Guns_N_Roses_-_Welcome_To_The_Jungle.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->


feed_id: http://blog.m0le.net/?p=8227
title: Nono's Songs : No Doubt - Don't Speak
uri: Nono-s-Songs-No-Doubt-Don-t-Speak
url: http://blog.m0le.net/2015/03/30/nonos-songs-no-doubt-dont-speak/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>No Doubt</strong> qui nous propose <strong>Don't Speak</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/No_Doubt_-_Don_t_Speak' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FNo_Doubt_-_Don_t_Speak.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/89c358cc.No_Doubt_-_Don_t_Speak.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/No_Doubt_-_Don_t_Speak.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/1e737f4a.No_Doubt_-_Don_t_Speak.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/No_Doubt_-_Don_t_Speak.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8231
title: Nono's Songs : Oasis - Wonderwall
uri: Nono-s-Songs-Oasis-Wonderwall
url: http://blog.m0le.net/2015/04/06/nonos-songs-oasis-wonderwall/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Oasis</strong> qui nous propose <strong>Wonderwall</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Oasis_-_Wonderwall_-_Official_Video' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FOasis_-_Wonderwall_-_Official_Video.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/1fae4b82.Oasis_-_Wonderwall_-_Official_Video.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Oasis_-_Wonderwall_-_Official_Video.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/95d8cde4.Oasis_-_Wonderwall_-_Official_Video.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Oasis_-_Wonderwall_-_Official_Video.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8234
title: Nono's Songs : The Verve - Bitter Sweet Symphony
uri: Nono-s-Songs-The-Verve-Bitter-Sweet-Symphony
url: http://blog.m0le.net/2015/04/13/nonos-songs-the-verve-bitter-sweet-symphony/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>The Verve</strong> qui nous propose <strong>Bitter Sweet Symphony</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/The_Verve_-_Bitter_Sweet_Symphony' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FThe_Verve_-_Bitter_Sweet_Symphony.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/ef6d6c13.The_Verve_-_Bitter_Sweet_Symphony.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Verve_-_Bitter_Sweet_Symphony.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/0a40006b.The_Verve_-_Bitter_Sweet_Symphony.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/The_Verve_-_Bitter_Sweet_Symphony.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8238
title: Nono's Songs : Spandau Ballet - True
uri: Nono-s-Songs-Spandau-Ballet-True
url: http://blog.m0le.net/2015/04/20/nonos-songs-spandau-ballet-true/
content:
<p>Les <a target="_blank" title="Nono's Songs" href="http://blog.m0le.net/category/episode/nonos-songs/">Nono's Songs</a> n'ont pas de but particulier si ce n'est de publier des musiques que j'apprécie.</p>
<p>Je ne donne aucune appréciation, je poste que des musiques, trouvées au détour du Net, ou d'un son/bruit que j'ai pu entendre quelques part ou avec quelqu'un. Ce n'est en aucun cas un signe de "nouveauté" ou un effet de mode quelconque.</p>
<p>Voici le clip officiel de <strong>Spandau Ballet</strong> qui nous propose <strong>True</strong></p>
<p style="text-align: center;">
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<iframe id='vjs-ff-http://blog-m0le-net/wp-content/uploads/mp4/Spandau_Ballet_-_True_Official_Video_Clip' type='text/html' width='600' height='450' src='http://blog.m0le.net/wp-content/plugins/secure-html5-video-player/fallback/index.php?autoplay=0&mp4=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fuploads%2Fmp4%2FSpandau_Ballet_-_True_Official_Video_Clip.mp4&url=http%3A%2F%2Fblog.m0le.net%2Fwp-content%2Fplugins%2Fsecure-html5-video-player' frameborder='0' /></iframe>
<p class='sh5vp-download-links'><label>Download Video:</label>
<a class="sh5vp-link-mp4" href="media/fd691327.Spandau_Ballet_-_True_Official_Video_Clip.mp4" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Spandau_Ballet_-_True_Official_Video_Clip.mp4">MP4</a>
</p>
</div>
<!-- End - Secure HTML5 Video Player -->
<br />
<!-- Begin - Secure HTML5 Video Player -->
<div class='video-js-box sh5vp-video-box tube-css' >
<video class='video-js sh5vp-video' width='600' height='450'  controls="controls" preload="auto"   >
<source src="media/d0ab185a.Spandau_Ballet_-_True_Official_Video_Clip.webm" data-original-source="http://blog.m0le.net/wp-content/uploads/mp4/Spandau_Ballet_-_True_Official_Video_Clip.webm" type="video/webm" />
</video>
</div>
<!-- End - Secure HTML5 Video Player -->
</p>


feed_id: http://blog.m0le.net/?p=8246
title: Autopsie d'une dataviz [9] : une carte "entonnoir" pour les régionales 2015
uri: Autopsie-d-une-dataviz-9-une-carte-entonnoir-pour-les-régionale
url:
http://blog.m0le.net/2015/12/19/autopsie-dune-dataviz-9-une-carte-entonnoir-pour-les-regionales-2015/

content:
<p>Retour sur la réalisation des cartes réalisées pour Rue89 Strasbourg <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2015/12/13/politique/resultats-regionales-2015-t2/">lors des deux tours des régionales 2015</a>. Objectif : rendre compte, sur une même interface, des résultats électoraux aux niveaux communal, département et régional.</p>
<p><span id="more-8246"></span></p>
<p style="text-align: center;"><img class="alignnone wp-image-8274 size-medium" src="media/644e35cf.app_acal-300x206.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/app_acal-300x206.png" alt="app_acal" width="300" height="206" /></p>
<p style="text-align: left;"><strong>5 200 communes, dix départements, trois régions</strong> : ce sont des chiffres-clés de l'<strong>Alsace-Champagne-Ardenne-Lorraine</strong> (ACAL), nouvelle région administrative créée fin 2014.</p>
<p style="text-align: left;">Les élections qui ont déterminé la composition du nouveau conseil régional ont été l'occasion de tenter <strong>de la cartographie très ambitieuse </strong>chez Rue89 Strasbourg. Je vais tenter <strong>un résumé le plus exhaustif possible</strong> des différentes étapes de ce boulot.</p>
<h1 style="text-align: left;">Le bon exemple du Huffington Post</h1>
<p style="text-align: left;"><strong>La principale source d'inspiration</strong> de ces cartes est <a target="_blank" href="http://elections.huffingtonpost.com/2013/massachusetts-senate-results">ce très bel exemple d'analyse électorale</a> proposée par le Huffington Post, et codée avec <a target="_blank" href="http://d3js.org/">la fameuse librairie D3js</a>.</p>
<p style="text-align: left;">L'application du Huffington <strong>repose sur le principe d'un entonnoir</strong> : on propose à l'internaute deux niveaux de lecture, avec d'un côté le vote des 300 communes du Massachussets, et de l'autre les 14 comtés de cet Etat.</p>
<p style="text-align: center;"><img class="size-medium wp-image-8267" src="media/d02078a1.massa_1-300x213.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/massa_1-300x213.png" alt="Crédit : Huffington Post" width="300" height="213" /></p>
<p style="text-align: center;"><i> Huffington Post</i></p>
<p style="text-align: left;">Les résultats des plus grands territoires apparaissent comme <strong>une synthèse des communes qui les composent</strong>, un peu comme si on les avait lâchés dans un entonnoir.</p>
<p style="text-align: left;">On observe <strong>des bastions démocrates et républicains bien délimités</strong> au niveau communal, ce qui se ressent sur les résultats cantonaux.</p>
<p style="text-align: center;"><img class="aligncenter wp-image-8266 size-medium" src="media/01b7cc31.massa_2-300x210.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/massa_2-300x210.png" alt="massa_2" width="300" height="210" /></p>
<p style="text-align: center;"><i> Huffington Post</i></p>
<p style="text-align: left;">A l'échelle de l'ACAL, <strong>on passait à un niveau bien plus costaud</strong>, avec près de 5 200 villes à cartographier. L'échelle départementale d'à peine dix unités me paraissait trop faible, tandis que l'échelle cantonale, plus proche de l'application du Huffington, ne me paraissait pas la plus compréhensible.</p>
<p style="text-align: left;">Bref, <strong>trois niveaux commençaient à émerger pour les futures élections régionales</strong> : les communes, les départements, et les régions.</p>
<p style="text-align: left;">A ce stade, il était temps de se pencher sur la faisabilité technique de la chose.</p>
<h1 style="text-align: left;">Un squelette solide avant de démarrer les festivités</h1>
<p>En furetant un peu, je suis tombé <a target="_blank" href="http://bl.ocks.org/bycoffe/5871252">sur ce gabarit avec code source</a> directement inspiré de la carte du Huffington. Ca m'a suffi pour <strong>commencer les tests avec mes propres fichiers géographiques</strong>, <a target="_blank" href="http://blog.m0le.net/2014/02/08/autopsie-dune-dataviz-5-1-gagner-du-temps-sur-qgis/">soigneusement préparés sur le logiciel QGis</a>.</p>
<p>Sans faire un récap' de tous les atermoiements techniques, j'en ai appris <a target="_blank" href="http://www.w3schools.com/cssref/pr_class_visibility.asp">plus sur l'option CSS "hidden"</a>, qui contrairement au "opacity" de l'exemple, permet de masquer toutes les options d'un calque.</p>
<p>Il y a également eu quelques lignes de code dédiées à <strong>un effet de zoom sur les communes de chaque département</strong>, <a target="_blank" href="http://bl.ocks.org/mbostock/2206590">directement calqué sur cet exemple</a> publié par le créateur de D3 lui-même.</p>
<p>L'idée était d'encourager l'exploration des données en permettant à l'utilisateur <strong>d'accéder à des communes trop petites pour être consultées</strong> depuis la vue d'ensemble.</p>
<p>Une des options ajoutées à ce stade <strong>a été l'affichage des sous-préfectures seulement lorsqu'un département est zoomé</strong> pour offrir des repères supplémentaires.</p>
<p>Une fois le squelette prêt, le plus dur restait à faire : <strong>le connecter à des données</strong>, dans l'idée de traiter en direct les résultats de ces élections régionales.</p>
<h1>Un parser en PHP qui a fait ses preuves</h1>
<p>Une fois le modèle de carte prêt à être montré, je l'ai envoyé à <a target="_blank" href="http://tom-wersinger.com/">Tom Wersinger</a>, développeur chez Rue89, pour lui demander son avis.</p>
<p>Tom nous avait déjà filé un précieux coup de main <a target="_blank" href="http://www.rue89strasbourg.com/index.php/2015/03/29/politique/departementales-2015-resultats-t2/">au moment des élections départementales</a>, où on avait pu apprécier <strong>la puissance d'un parser en PHP codé par ses soins</strong>.</p>
<p>Pour le dire vite, il permet <strong>de traduire un tableur Google en json</strong>, en paramétrant (assez) simplement quelques options comme l'identifiant de la feuille Google.</p>
<p>Dès que la connexion est établie entre le parser et le tableur, <strong>un petit F5 permet de générer une nouvelle version du json</strong>. Un nouveau rafraîchissement sur la carte et le tour est joué. Sans douleur, donc !</p>
<p>Comme on passait quand même <strong>à une échelle largement supérieure à celle des départementales</strong>, je voulais m'assurer que le parser supporterait la charge.</p>
<p>Tom a eu la gentillesse de m'aider dans cette tâche sur son temps libre, avec en plus :</p>
<ul>
<li>une <strong>refactorisation du code bien profitable</strong>. Je bosse en général en bricolant des exemples piochés à droite à gauche, et je dois avouer que mes codes source sont du coup peu optimisés</li>
<li>l'utilisation de la <a target="_blank" href="http://underscorejs.org/">librairie underscore.js</a>, qui a nous a permis de <strong>calculer directement les scores départementaux et régionaux à partir des résultats communaux</strong>. Cerise sur le gâteau, la lib' nous a également servi à trier les résultats dans l'ordre décroissant. On a pu grâce à ça <strong>afficher des infobulles bien triées et simplifier la coloration de nos territoires</strong> en fonction de la liste arrivée en tête</li>
</ul>
<p>Et après plusieurs heures de codage intensif, nous sommes arrivés à <strong>une carte du second tour de la dernière présidentielle optimale</strong>, bien reliée à une feuille de calcul Google :</p>
<p style="text-align: center;"><a target="_blank" href="media/0ba67431.acal_pre012.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/acal_pre012.png" rel="lightbox[8246]" title="Autopsie d'une dataviz [9] : une carte "entonnoir" pour les régionales 2015"><img class="alignnone size-medium wp-image-8276" src="media/3965518b.acal_pre012-300x270.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/acal_pre012-300x270.png" alt="acal_pre012" width="300" height="270" /></a></p>
<p style="text-align: center;"><i>Cliquez sur l'image pour l'agrandir</i></p>
<h1 style="text-align: left;">XML et CSV</h1>
<p>Restait plus, à ce stade, qu'à <strong>nous assurer d'avoir des données régulièrement mises à jour</strong> le jour J. Là, ça s'est un peu compliqué, car :</p>
<ul>
<li>chacune des dix préfectures enverrait <strong>seulement ses résultats départementaux</strong>. Impossible que Metz envoie tous les scores des communes de Lorraine, par exemple</li>
<li><strong>chaque préf' a son propre mode de fonctionnement :</strong> celles d'Alsace envoient très régulièrement des tableurs Excel mis à jour tout au long de la soirée, mais la plupart préfère envoyer les résultats définitifs assez tard. Pas l'idéal pour une soirée live !</li>
</ul>
<p>Mais heureusement, le Ministère de l'Intérieur allait mettre à disposition de la presse <strong>des XML mis à jour tous les quarts d'heure</strong>. La principale difficulté consistait <strong>à convertir ce format composé de balises en tableur prêt à être copié/collé</strong> dans Google Drive.</p>
<p>Je dois reconnaître que ce n'est pas franchement mon domaine, contrairement au camarade <a target="_blank" href="https://twitter.com/ettore_rizza">Ettore Rizza</a>. Ettore a écrit <strong>un script directement taillé pour les XML de l'ACAL</strong>.</p>
<p>Une fois digéré par <a target="_blank" href="http://openrefine.org/">Open Refine</a>, on obtenait grâce à ce script <strong>des données bien propres et prêtes à être téléchargées au format CSV</strong>.</p>
<p>Plus qu'à mettre en oeuvre tout ça le grand soir venu <img src="media/8450f11e.simple-smile.png" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/simple-smile.png" alt=":-)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>
<h1>Les limites de l'exercice</h1>
<p>Dans l'ensemble, tout s'est passé sans encombre, mais <strong>il faut quand même signaler quelques embûches et aspects perfectibles</strong>, notamment :</p>
<ul>
<li>les XML de tests <strong>contenaient l'ensemble des communes de chaque département</strong>, alors que lors de la soirée ils ne contenaient <span style="text-decoration: underline;"><em>que les communes dont les résultats étaient complets</em></span>. Ça paraît être un détail, mais ça a été bien emmerdant sur le coup parce qu'on ne pouvait pas faire un banal copié/collé de nos données <strong>sans risquer de décaler toutes les communes et de fausser complètement la carte finale</strong>. Still (1 800 habitants) se retrouvant avec les résultats de Strasbourg (275 000 habitants), ça le fait moyen quand même ! Heureusement, l'ami <a target="_blank" href="http://joelmatriche.com/">Joël Matriche</a>, ceinture noire en manipulation d'Exel, m'a filé une petite formule magique pour repérer facilement les villes manquantes lors du second tour !</li>
<li><strong>les XML du tour 2 contenaient les résultats du tour 1</strong>, cas que nous avions pas anticipé. Les CSV générés avaient du coup le double des lignes (une pour le tour 1, une pour le tour 2), mais un simple tri permettait de séparer très vite les résultats de chaque tour</li>
<li>techniquement, la carte du premier tour mettait <strong>beaucoup (beaucoup) de temps à se charger</strong>, sur fixe comme sur mobile. Le problème venait évidemment <strong>de la taille de la matrice générée</strong> (environ 5 200 lignes fois une vingtaine de colonnes), et <strong>je n'ai pas trouvé de méthode pour vraiment pallier à ce souci</strong>. Ça ne veut évidemment pas dire qu'il n'y a pas de solution envisageable. Du coup, <strong>si une belle âme a une suggestion</strong>, qu'elle n'hésite pas à la faire dans les commentaires <img src="media/8450f11e.simple-smile.png" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/simple-smile.png" alt=":-)" class="wp-smiley" style="height: 1em; max-height: 1em;" /></li>
<li>certains bêta-testeurs ont suggéré <strong>un champ de recherche</strong> pour directement afficher sa commune et les résultats qui vont avec. L'idée était très bonne, mais <strong>la mise en œuvre technique</strong> me paraissait un poil coton, sans compter le fait que ce champ aurait dû être seulement actif pendant l'affichage des communes. <strong>Il aurait fallu presque tout recommencer à zéro</strong>, et on n'avait franchement plus le temps pour ça. Ceci dit, je pense que la possibilité d'explorer les communes département par département <strong>compensait assez bien l'absence de champ de recherche</strong></li>
</ul>
<h1>Le bilan</h1>
<p>Ce travail de longue haleine a payé avec <strong>des audiences plutôt bonnes pour ce genre d'événements sur Rue89 S</strong> : 18 000 vues pour le premier tour, et à peu près la moitié pour le second.</p>
<p>Nous avons également réussir <strong>à corriger le tir pour les faiblesses repérées lors du premier tour</strong> (notamment les villes manquantes) pour pouvoir optimiser le traitement live.</p>
<p>J'ai également codé une nouvelle version de la carte pour le second tour, <strong>en intégrant un dégradé selon le pourcentage du vainqueur</strong>. <span style="line-height: 1.5;">Concrètement, cela nous a permis de passer de ça :</span></p>
<p style="text-align: center;"><a target="_blank" href="http://www.rue89strasbourg.com/index.php/2015/12/06/politique/resultats-regionales-2015-t1/"><img class="alignnone size-medium wp-image-8286" src="media/aa8db52f.acal_m0le_t1-290x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/acal_m0le_t1-290x300.png" alt="acal_m0le_t1" width="290" height="300" /></a></p>
<p style="text-align: center;"><i>Cliquez sur l'image pour accéder à la page du premier tour</i></p>
<p style="text-align: left;">A ça :</p>
<p style="text-align: center;"><a target="_blank" href="http://www.rue89strasbourg.com/index.php/2015/12/13/politique/resultats-regionales-2015-t2/"><img class="alignnone size-medium wp-image-8287" src="media/f8d1cd93.acal_m0le_t2-269x300.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/acal_m0le_t2-269x300.png" alt="acal_m0le_t2" width="269" height="300" /></a></p>
<p style="text-align: center;"><i>Cliquez sur l'image pour accéder à la page du second tour</i></p>
<p style="text-align: left;"><strong>Petite fierté strictement perso</strong> : notre carte du premier tour s'est retrouvé <a target="_blank" href="http://gijn.org/2015/12/16/top-ten-ddj-the-weeks-most-popular-data-journalism-links-80/">dans le Top 10 hebdomadaire du Global Investigative Journalism Network</a>. Pour la petite histoire, c'est la <a target="_blank" href="http://gijn.org/2015/03/30/top-ten-ddj-the-weeks-most-popular-data-journalism-links-49/">seconde fois de l'année</a> <img src="media/8450f11e.simple-smile.png" data-original-source="http://blog.m0le.net/wp-includes/images/smilies/simple-smile.png" alt=":-)" class="wp-smiley" style="height: 1em; max-height: 1em;" /> !</p>
<p style="text-align: left;">Le template codé avec Tom va maintenant nous permettre <strong>d'étudier en profondeur l'ACAL</strong>, territoire plein de disparités comme en témoignent ces "cartes de force" du PS, du FN et des Républicains :</p>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-8290" src="media/e0b3b1e5.psfnlracal-300x205.png" data-original-source="http://blog.m0le.net/wp-content/uploads/2015/12/psfnlracal-300x205.png" alt="psfnlracal" width="300" height="205" /></p>
<p style="text-align: left;">Bref, ça promet pour 2016 !</p>
<p style="text-align: left;">J'en profite pour <strong>remercier une nouvelle fois les excellents Tom, Ettore et Joël</strong> pour leur précieuse aide !</p>
<p style="text-align: left;">PS : le code source de la carte du premier tour sera bientôt publié.</p>


feed_id: https://blog.m0le.net/?p=8336
title: Certificat wildcard avec letsencrypt
uri: Certificat-wildcard-avec-letsencrypt
url: https://blog.m0le.net/2018/03/16/certificat-wildcard-avec-letsencrypt/
content:
<p style="text-align: left;">Petite note de service : j'ai mis en place <strong>notre certificat wildcard</strong> pour m0le.net via letsencrypt de façon relativement simple.</p>
<p>Grosso modo, il n'y a plus qu'un certificat pour tous les sous-domaines que nous utilisons (ainsi qu'un certificat pour m0le.net tout cours)</p>
<p>Je devais :</p>
<ul>
<li><strong>générer un nouveau certificat</strong> wildcard *.m0le.net</li>
<li><strong>supprimer les anciens certificats</strong> pour les sous-domaines</li>
</ul>
<h2><strong>Génération et activation du certificat<br />
</strong></h2>
<ul>
<li>L'activation doit se faire <strong>par DNS</strong> (en ajoutant un champ TXT dans vos entrée dNS)</li>
<li>Il faut utiliser <strong>l'api 02 de letsencrypt</strong></li>
<li><strong>avoir un client compatible</strong> (dans mon cas, certbot en version &gt;= 0.22.0)</li>
</ul>
<p>Voici en gro la manip (sous Debian) :</p>
<p># certbot --version</p>
<p># certbot certonly --manual -d *.m0le.net --preferred-challenges dns-01 --server https://acme-v02.api.letsencrypt.org/directory</p>
<h2><strong>Suppression des anciens certificats</strong> (après test 😉 )</h2>
<p># certbot -delete --cert-name sub.m0le.net //autant de fois que de sous domaine</p>
<p>Et bim, je ne dois renouveler plus que deux certificats (un pour m0le.net, un pour *.m0le.net)... Merci letsencrypt !</p>


feed_id: https://blog.m0le.net/?p=8352
title: Backup avec Borg via ssh(fs) sur Synology
uri: Backup-avec-Borg-via-ssh(fs)-sur-Synology
url: https://blog.m0le.net/2018/04/01/backup-avec-borg-via-sshfs-sur-synology/
content:
<p>Tant qu'à faire un peu de ménage sur notre dédié, je me suis décidé <strong>à changer de mode de backup en passant à Borg</strong>.</p>
<h3>Le postulat</h3>
<ul>
<li> Utiliser Borg (avec l'encyrption + passphrase)</li>
<li>Faire des backups de chaque VM (hebergé dans XEN) quotidiennement</li>
<li>Garder une rétention correct (7 journalières; 4 hebdomadaires; 6 mensuelles)</li>
<li>Tout envoyer sur un NAS Synology (en utilisant SSHFS)</li>
</ul>
<h3>Les prérequis</h3>
<ul>
<li>NAS Synology, SSH + SFTP d'activé/configuré</li>
<li>un script ssh pour envoyer l'IP public vers le dédié (pas nécéssaire si IP fixe)</li>
<li>borgbackup &amp; sshfs d'installé sur les clients</li>
</ul>
<p>Dans mon cas, j'utilise <strong>un script sur mon synology qui récupère son IP public</strong> et qui l'envoie dans un fichier "ip_syn" sur le serveur <strong>m0le </strong>periodiquement</p>
<h3>Les tâches</h3>
<ol>
<li>Créer un utilisateur "backup" sur le synology avec SSH + SFTP + SSH key</li>
<li>Configurer sshfs avec une clé SSH sur le client</li>
<li>Installer, initialiser et tester le repo Borg</li>
<li>Automatiser le tout avec un script</li>
</ol>
<h3>Création de l'utilisateur backup</h3>
<p>Tout se passe depuis l'interface web, il faut s'assurer que l'utilisateur a le droit dans un dossier, disons /Backup (monté dans /volume1/Backup/)</p>
<p>Pour que la connexion par clé ssh fonctionne, il faut :</p>
<ol>
<li>Que l'utilisateur fasse partie du groupe administrators pour avoir accès au login SSH</li>
<li>Activer le "User Home" Service dans Users &gt; Advanced. Cela permet d'avoir un "vrai" répertoire pour l'utilisateur et pouvoir stocker les clés SSH de l'utilisateur (dans /var/services/homes/&lt;user&gt;/.ssh/authorized_keys</li>
<li>Avoir les bons paramètres de sécurités/accès dans le dossier .ssh et autoriser la connexion par clé</li>
</ol>
<p>On peut s'en sortir en exécutant ces commandes :</p><pre class="crayon-plain-tag">chmod 755 /var/services/homes/&lt;user&gt;
chmod 700 /var/services/homes/&lt;user&gt;/.ssh
chmod 600 /var/services/homes/&lt;user&gt;/.ssh/*
chown -R &lt;user&gt;:users /var/services/homes/&lt;user&gt;/.ssh</pre><p>Il faut également s'assurer que ces deux lignes soit décommenté dans <em>/etc/ssh/sshd_config</em>:</p><pre class="crayon-plain-tag">PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys</pre><p></p>
<h3>Installation de la clé ssh + sshfs + borg</h3>
<p>Pour installer les dépendances sous Debian:</p><pre class="crayon-plain-tag">m0le# apt install sshfs</pre><p>On passe à la génération de la clé ssh + l'envoi sur le synology</p><pre class="crayon-plain-tag">m0le# ssh-keygen -t rsa -b 4096 // Je genère une clé sans passphrase (pour automatiser le montage avec sshfs)

m0le# ssh-copy-id &lt;user&gt;@&lt;ip_synology&gt; -p &lt;port&gt; // j'envoie la clé vers le synology

m0le# ssh &lt;user&gt;@&lt;ip_synology&gt; -p &lt;port&gt; // Je vérifie que j'arrive bien à me connecter au server, sans demander de mot de passe.</pre><p>On teste l'existence d'un dossier "Backup" accessible sur le synology</p><pre class="crayon-plain-tag">backup@synology$ cd Backup // j'utilise mon utilisateur dédié "backup"
backup@synology Backup$ touch test // Je crée un fichier</pre><p>On crée enfin le répertoire local pour monter le répertoire Backup avec sshfs</p><pre class="crayon-plain-tag">m0le# mkdir -p /mnt/syno // Je créer le repertoire pour le montage via SSHFS

m0le# sshfs &lt;user&gt;@&lt;ip_synology&gt;/Backup/ /mnt/syno -p &lt;port&gt; // je monte le dossier Backup de mon synology sur le server m0le

m0le# ls -l /mnt/syno // Si le fichier "test" s'affiche, c'est tout bon !

m0le# rm /mnt/syno/test // J'en ai plus besoin</pre><p></p>
<h3>Installation et initialisation de BorgBackup</h3>
<p>On va dabord créer un <strong>repo qui va héberger nos "archives"</strong>.</p>
<p>(les archives stockeront nos fichiers, le repo est l'endroit ou seront inventorier ces archives)</p><pre class="crayon-plain-tag">m0le# apt install borgbackup // installation de borgbackup

m0le# borg init --encryption=repokey /mnt/syno/&lt;repo&gt; // création du repo en prenant soin de créer un mot de passe !

m0le# borg create /mnt/syno/&lt;repo&gt;::test /etc/ // Je créer une sauvegarde du dossier "/etc" dans un archive nommé "test" dans mon repo "/mnt/syno/&lt;repo&gt;"</pre><p>Faire des tests et les supprimer</p><pre class="crayon-plain-tag">m0le# borg create --stats /mnt/syno/&lt;repo&gt;::test2 /etc/ // Je crée une deuxième archive "test2" du dossier /etc/ : Ca devrait être bcp plus rapide car "test" existe déjà.

m0le# borg list /mnt/syno/&lt;repo&gt;::test2 // Si je liste le contenu du dossier "/etc", c'est tout bon !

m0le# borg delete /mnt/syno/&lt;repo&gt;::test // Je supprimer mes tests

m0le# borg delete /mnt/syno/&lt;repo&gt;::test2 // Je supprimer mes tests</pre><p></p>
<h3>Script d'automatisation</h3>
<p>Si tout va bien jusqu'ici, c'est qu'on a de quoi créer des archives Borg (manuellement pour l'instant), sur un repertoire de notre synology via sshfs.</p>
<p>Plutôt pas mal, on va donc automatiser ça ! Voilà ce que le script (cf source) fait :</p>
<ol>
<li>Il monte le répertoire sshfs</li>
<li>Il crée un backup avec le nom de la machine + date courante</li>
<li>Il effectue le nettoyage des archives si besoin (rétention)</li>
<li>Il démonte le répertoire de backup</li>
</ol>
<p>Évidemment, il faudra faire vos modifs comme celles que j'ai apportées par rapport à la source (cf les paramètres au debut)</p><pre class="crayon-plain-tag">#!/bin/bash

# Mount parameters
mount="/mnt/syno/"

# Borg parameters
repo="/mnt/syno/m0le"
pass="legrosmotdepasse!!"
backup_dir="/etc /root /usr/local/bin"

# Synology parameters
syno_user="backup"
syno_ip=`cat /home/ip_syn`
syno_port="22"
syno_dir="/Backup/"

# Setting this, so the repo does not need to be given on the commandline:
export BORG_REPO={repo}

# Setting this, so you won't be asked for your repository passphrase:
export BORG_PASSPHRASE=${pass}
# or this to ask an external program to supply the passphrase:
export BORG_PASSCOMMAND='pass show backup'

# some helpers and error handling:
info() { printf "\n%s %s\n\n" "$( date )" "$*" &gt;&amp;2; }
trap 'echo $( date ) Backup interrupted &gt;&amp;2; exit 2' INT TERM

info "Mount ${mount} from ssh://${syno_user}@${syno_ip}:${syno_port}/${syno_dir}"

sshfs ${syno_user}@${syno_ip}:${syno_dir} ${mount} -p ${syno_port}

info "Starting backup: ${backup_dir}"

# Backup the most important directories into an archive named after
# the machine this script is currently running on:

borg create \
--verbose \
--filter AME \
--list \
--stats \
--show-rc \
--compression lz4 \
--exclude-caches \
--exclude '/home/*/.cache/*' \
--exclude '/var/cache/*' \
--exclude '/var/tmp/*' \
\
::'{hostname}-{now}' \
$backup_dir \

backup_exit=$?

info "Pruning repository"

# Use the `prune` subcommand to maintain 7 daily, 4 weekly and 6 monthly
# archives of THIS machine. The '{hostname}-' prefix is very important to
# limit prune's operation to this machine's archives and not apply to
# other machines' archives also:

borg prune \
--list \
--prefix '{hostname}-' \
--show-rc \
--keep-daily 7 \
--keep-weekly 4 \
--keep-monthly 6 \

prune_exit=$?

# use highest exit code as global exit code
global_exit=$(( backup_exit &gt; prune_exit ? backup_exit : prune_exit ))

info "Unmounting ${mount}"

umount ${mount}

if [ ${global_exit} -eq 1 ];
then
info "Backup and/or Prune finished with a warning"
fi

if [ ${global_exit} -gt 1 ];
then
info "Backup and/or Prune finished with an error"
fi
exit ${global_exit}</pre><p>Il ne reste plus qu'à exécuter le script, vérifier l'archive et son contenu et enfin rajouter un petit cron qui va bien 😉</p>
<h3>Source</h3>
<p><a target="_blank" href="https://techarea.fr/tuto-ssh-cle-nas-synology/">sshfs/ssh key sur Synology<br />
</a><a target="_blank" href="http://borgbackup.readthedocs.io/en/stable/quickstart.html">Borg backup commands + script</a></p>


feed_id: https://blog.m0le.net/?p=8364
title: La fin du tracking ... commence -aussi- sur le m0le-o-blog
uri: La-fin-du-tracking-commence-aussi-sur-le-m0le-o-blog
url: https://blog.m0le.net/2018/06/23/la-fin-du-tracking-commence-aussi-sur-le-m0le-o-blog/
content:
<p>Voilà voilà, en suivant le pas de <a target="_blank" href="https://tuxicoman.jesuislibre.net/2018/06/je-retire-loutil-de-statistiques-de-mon-blog.html">Tuxicoman</a> nous nous sommes concertés et force est de constater <strong>qu'on s'en fout un peu des logs / statistiques</strong>..</p>
<p>Surtout si c'est pour compter les gens qui n'ont PAS de bloqueur de pub (a priori, la grosse majorité de l'auditoire du blog, non ?)</p>
<p>Bref, <strong>on retire Piwik/Matomo</strong>, mis en place ici en février 2012. Ça file quand même ..</p>
<p>Juste pour le fun, voici <strong>quelques stats, sorties de <del>nulle part</del></strong> :</p>
<p><a target="_blank" href="media/dd214987.stats_m0le.png" data-original-source="https://blog.m0le.net/wp-content/uploads/2018/06/stats_m0le.png" rel="lightbox[8364]" title="La fin du tracking ... commence -aussi- sur le m0le-o-blog"><img class="aligncenter wp-image-8365" src="media/b0189eed.stats_m0le-1024x636.png" data-original-source="https://blog.m0le.net/wp-content/uploads/2018/06/stats_m0le-1024x636.png" alt="" width="670" height="416" srcset="https://blog.m0le.net/wp-content/uploads/2018/06/stats_m0le-1024x636.png 1024w, https://blog.m0le.net/wp-content/uploads/2018/06/stats_m0le-300x186.png 300w, https://blog.m0le.net/wp-content/uploads/2018/06/stats_m0le-768x477.png 768w" sizes="(max-width: 670px) 100vw, 670px" /></a></p>
<p>Je ne vais pas faire d'interprétation parce qu'au final... on s'en fout toujours, non ?</p>
<p>PS : en résumé, m0le-o-blog est sans pub (depuis toujours) et sans tracker !</p>


feed_id: https://blog.m0le.net/?p=8929
title: Petite histoire de debugging (sendemail)
uri: Petite-histoire-de-debugging-(sendemail)
url: https://blog.m0le.net/2020/10/07/petite-histoire-de-debugging-sendemail/
content:
<p>Je vous raconte comment j'ai failli envoyé un bug report à Debian 🙂<br><strong>TL;DR</strong>: Une dépendances manquante pour le paquet sendemail m’empêchait d'envoyer des mail via TLS.</p>



<p>Dans notre architecture, nous avons un serveur sous XEN, et différentes VM pour différentes fonctions, dont une "WEB" (pour les sites), une "DATA" et enfin une "MAIL" qui est notre serveur mail.<br>Je voulais changer de méthode d'envoi de mail en local, je suis donc passé au package sendEmail (pas sendmail donc) pour avoir l'auth STARTTLS. Mais, pour une raison inexpliquée, certaines VM arrivaient à envoyer des mails et d'autre non.</p>



<p>Première chose, vérifier les logs; </p>



<ol><li>Du côté du serveur de mail : rien de particulier (comme l'authentification ne marchait pas)</li><li>Du côté du client mail (sendemail) : l'envoi en mode debug me donnait quelques indices :</li></ol>



<p>depuis la VM <strong>WEB</strong> (impossible d'envoyer un mail) :</p>



<pre class="wp-block-preformatted">sendemail -u subject -m message -f user@domain.tld -t user@domain.tld -s mailserver -xu user@domain.tld -xp password -vvvv
DEBUG =&gt; Connecting to mailserver
DEBUG =&gt; My IP address is: 10.0.1.1
DEBUG =&gt; evalSMTPresponse() - Checking for SMTP success or error status in themessage: 220 mailserver ESMTP Postfix (Debian/GNU)
DEBUG =&gt; evalSMTPresponse() - Found SMTP success code: 220
SUCCESS =&gt; Received: &nbsp; &nbsp; 220 mailserver ESMTP Postfix (Debian/GNU)
INFO =&gt; Sending: &nbsp; &nbsp; &nbsp; &nbsp; EHLO WEB
DEBUG =&gt; evalSMTPresponse() - Checking for SMTP success or error status in themessage: 250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
DEBUG =&gt; evalSMTPresponse() - Found SMTP success code: 250
SUCCESS =&gt; Received: &nbsp; &nbsp; 250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
<strong>DEBUG =&gt; The remote SMTP server supports TLS :)
NOTICE =&gt; Authentication not supported by the remote SMTP server!</strong>
INFO =&gt; Sending: &nbsp; &nbsp; &nbsp; &nbsp; MAIL FROM:user@domain.tld
DEBUG =&gt; evalSMTPresponse() - Checking for SMTP success or error status in themessage: 530 5.7.0 Must issue a STARTTLS command first
DEBUG =&gt; evalSMTPresponse() - Found SMTP error code: 530
ERROR =&gt; Received: &nbsp; &nbsp; &nbsp; 530 5.7.0 Must issue a STARTTLS command first</pre>



<p>depuis la VM <strong>DATA</strong> (où les mails fonctionnaient sans problème) :</p>



<pre class="wp-block-preformatted"># sendemail -u subject -m message -f user@domain.tld -t user@domain.tld -s mailserver -xu user@domain.tld -xp password -vvvv
DEBUG =&gt; Connecting to mailserver
DEBUG =&gt; My IP address is: 10.0.1.2
DEBUG =&gt; evalSMTPresponse() - Checking for SMTP success or error status in themessage: 220 mailserver ESMTP Postfix (Debian/GNU)
DEBUG =&gt; evalSMTPresponse() - Found SMTP success code: 220
SUCCESS =&gt; Received: &nbsp; &nbsp; 220 mailserver ESMTP Postfix (Debian/GNU)
INFO =&gt; Sending: &nbsp; &nbsp; &nbsp; &nbsp; EHLO DATA
DEBUG =&gt; evalSMTPresponse() - Checking for SMTP success or error status in themessage: 250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
DEBUG =&gt; evalSMTPresponse() - Found SMTP success code: 250
SUCCESS =&gt; Received: &nbsp; &nbsp; 250-mailserver, 250-PIPELINING, 250-SIZE 502400000, 250-ETRN, 250-STARTTLS, 250-ENHANCEDSTATUSCODES, 250-8BITMIME, 250 DSN
<strong>DEBUG =&gt; The remote SMTP server supports TLS :)
DEBUG =&gt; Starting TLS
INFO =&gt; Sending: &nbsp; &nbsp; &nbsp; &nbsp; STARTTLS
DEBUG =&gt; evalSMTPresponse() - Checking for SMTP success or error status in themessage: 220 2.0.0 Ready to start TLS</strong>
DEBUG =&gt; evalSMTPresponse() - Found SMTP success code: 220
SUCCESS =&gt; Received: &nbsp; &nbsp; 220 2.0.0 Ready to start TLS
DEBUG =&gt; TLS: Using cipher: ECDHE-RSA-AES256-GCM-SHA384
DEBUG =&gt; TLS session initialized :)
INFO =&gt; Sending: &nbsp; &nbsp; &nbsp; &nbsp; EHLO DATA
[...]</pre>



<p>Dans les deux cas, le serveur supporte TLS, mais le "STARTTLS" n'est pas envoyé depuis ma VM <strong>WEB</strong>.</p>



<p>Les configurations et les accès/restrictions étant les mêmes, gnutls installé sur les deux machines, j'ai commencé à rédiger mon bug report en m'aidant de : https://www.debian.org/Bugs/Reporting</p>



<p>L'une des étapes du rapport de bug debian est d'envoyer les infos du package, dont l'une d'elle (https://www.debian.org/Bugs/Reporting#findpkgver) est :<br>dpkg --status</p>



<p>Bien m'en a pris, car j'ai pu me rendre compte de cette intéressante ligne :</p>



<pre class="wp-block-code"><code># dpkg --status sendemail
Package: sendemail
&#91;...]
Suggests: libio-socket-ssl-perl, libnet-ssleay-perl</code></pre>



<p>Effectivement, ces deux paquets ne sont pas des dépendances, mais des suggestions …. néanmoins très indispensable pour envoyer des mails en TLS 🙂</p>



<p>J'ai pu régler mon bug et m’éviter de passer pour un idiot à remplir un rapport de bug inutile…</p>


