<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[Von Neumann Machines In Space]]></title><description><![CDATA[Thoughts, stories and ideas.]]></description><link>https://blog.vnmis.net/</link><image><url>https://blog.vnmis.net/favicon.png</url><title>Von Neumann Machines In Space</title><link>https://blog.vnmis.net/</link></image><generator>Ghost 4.48</generator><lastBuildDate>Sat, 11 Apr 2026 14:13:04 GMT</lastBuildDate><atom:link href="https://blog.vnmis.net/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[A tale of two games]]></title><description><![CDATA[<p>Ludum Dare 47 is this weekend so I figured it was high time to publish my old write-ups. </p><p>If you don&apos;t know what it is : Ludum Dare is a video-game creation competition/event that takes place a couple time a year. It&apos;s been on my radar</p>]]></description><link>https://blog.vnmis.net/a-tale-of-two-games/</link><guid isPermaLink="false">5f736c0aabe9f80001c5001c</guid><dc:creator><![CDATA[Erwan]]></dc:creator><pubDate>Tue, 29 Sep 2020 17:27:19 GMT</pubDate><content:encoded><![CDATA[<p>Ludum Dare 47 is this weekend so I figured it was high time to publish my old write-ups. </p><p>If you don&apos;t know what it is : Ludum Dare is a video-game creation competition/event that takes place a couple time a year. It&apos;s been on my radar for years and I participated for the first time in Ludum Dare 42 summer of 2018 and a second time this April for Ludum Dare 46. The competition takes place over a weekend in two categories : Compo limited to single participants over 48 hours and Jam for teams, over a longer period and with more relaxed rules. Over the following month every participant is invited to grade the games of the other participants. Grades are given over different categories and games are only given a final grade if they have more than 20 evaluations. I did the Compo version both times and managed to get graded (your game is promoted when you grade others, it&apos;s give and take).</p><p>Here are links to my game entries and links to play them :</p><ul><li><a href="https://ldjam.com/events/ludum-dare/42/escape-through-the-void">https://ldjam.com/events/ludum-dare/42/escape-through-the-void</a></li><li><a href="https://e2tv.ixio.xyz">https://e2tv.ixio.xyz</a></li><li><a href="https://ldjam.com/events/ludum-dare/46/theogenesis">https://ldjam.com/events/ludum-dare/46/theogenesis</a></li><li><a href="https://ixio.github.io/theogenesis/html5/index.html">https://ixio.github.io/theogenesis/html5/index.html</a></li></ul><p>This is a write up of my game-jam experience for both those games.</p><figure class="kg-card kg-image-card"><img src="https://blog.vnmis.net/content/images/2020/09/ldjam.png" class="kg-image" alt loading="lazy" width="484" height="257"></figure><h2 id="ludum-dare-42-11th-12th-of-august-2018-"><a href="https://ldjam.com/events/ludum-dare/42">Ludum Dare 42 (11th-12th of August 2018)</a></h2><p>Apparently this was the first Ludum Dare with Europe-friendly hours, this meant I could discover the theme when it got out. Usually it&apos;s at 3am where I live and that&apos;s not the best time for me. I followed some advice I found on the net: figure out a game idea and go to sleep. While waiting for the theme I decided to try out some game engines.</p><p>One of my goals for that first Ludum Dare was to pick up a game engine. I had been eyeing Godot and PhaserJS. I &#xA0;wanted to learn an engine that I could re-use later on for whatever game concept I might have and that was cross-platform : in particular for Ludum Dare I wanted an HTML export to make it easier to try out. I intended to try Godot with Python, or since I&apos;ve been building my Javascript skills PhaserJS could&apos;ve been interesting. I had been working with ReactJS the months before so I figured I&apos;d use that as a last resort, probably for something like a grid-based game.</p><h3 id="ld42-figuring-out-the-game">LD42: Figuring out the game</h3><p>The theme was announced and I spent an hour coming up with a concept. I homed in on it pretty rapidly, I probably had pieces of it in my head when I read the proposed themes: like &quot;Dying world&quot;, &quot;Decay&quot; and &quot;Running out of space&quot; (the chosen theme). I decided to go with a city-builder like experience on a grid with disappearing tiles. Happy that I had found an idea, I went to sleep. I wanted to be fully-charged on Saturday and I like the notion of sleeping on an idea, letting your subconscious work things out.</p><p>On Saturday morning I figured out what my game would be like : a possibly multi-level game where in each level the player would embody the hope of a civilization leaving a dying world through a portal, mining the in-between to open a new portal to an Eden-like new world. However the in-between is a wasteland in the Void, and mining it would cause the Void to reclaim the space: the player has to finish his infrastructure to build the new portal and escape before being lost to the Void.</p><p>I decided to aim for an MVP (minimal viable product) that I could later on upgrade incrementally. I wanted to avoid a final stress-filled rush without a finished product. I decided for an MVP where the player has a layout of barren-tiles on top of Void tiles, he can use minerals to build mines on barren-tiles to collect more minerals and also build more-costly power plants that generate power. The player wins when he has reach a certain amount of power which enables him to generate a portal to salvation. However barren-tiles are randomly eaten by the Void and slowly but surely the player loses buildable ground: when none is left he loses.</p><p>I thought I could upgrade the MVP to allow for different and bigger levels. I also wanted to be able to research the capacity building more stuff on a single tile, having a game where buildable space shrinks but you also get to progressively get more mileage out of each tile. Another direction I thought of was some sort of tower-defense element building turrets to defend against voidlings.</p><h3 id="ld42-how-i-spent-my-time">LD42: How I spent my time</h3><p>Having kind of rushed my Godot and PhaserJS explorations I didn&apos;t feel comfortable using them, I didn&apos;t want to spend half my time discovering a framework only to realize I wouldn&apos;t have time to make my MVP. So I decided to try out something with Javascript and React. I didn&apos;t start very early Saturday but I spend most of my day working on the game. Probably some procrastination was involved but overall a very productive day. Sunday I spent only part of the day on the game, at most I spent a half-day on it : probably less.</p><p>Saturday I probably had about 80% of my MVP and Sunday I finished the mechanics to make it a real game and also worked on sound effects. I did sound effects by recording myself and transforming it with Audacity. For the music I discovered LLMS and manage to stumble through to an &quot;MVP&quot; result : I&apos;m glad I managed to produce something but I feel pretty shameful not to have included a mute button on my game.</p><p>In the end I managed to publish a finished result : a fact I&apos;m pretty proud of ! Not so much the game itself even though I stand by it for a weekend&apos;s worth of hacking. I mostly focused on game mechanisms keeping time spent on artwork and sound/music to a minimal. I didn&apos;t really get past my MVP stage so the game is little else than the bare minimum to qualify as a game.</p><h2 id="ludum-dare-46-18th-19th-of-april-2020-"><a href="https://ldjam.com/events/ludum-dare/46">Ludum Dare 46 (18th-19th of April 2020)</a></h2><p>Since that first Ludum Dare I&apos;ve wanted to participate again but I usually had plans on those weekends. Like many people for Ludum Dare 46 Covid-19 confinement made it a very interesting way to spend the weekend. This time the theme was announced American time so about 3am where I live, I decided I&apos;d rather sleep and wake up fresh on Saturday. I decided to give Godot another go, I&apos;m really fond of FOSS solutions and love the idea of Godot. Last time I wanted to try and make it work with Python since it&apos;s one of my favorite languages but this time I figured I wouldn&apos;t complicate my work and give GodotScript a try.</p><h3 id="ld46-figuring-out-the-game">LD46: Figuring out the game</h3><p>This time I didn&apos;t look at the proposed themes before discovering the final theme: &quot;Keep it alive&quot;. I kicked around a couple of ideas in my head before finally settling on the idea of keeping a religion alive. I decided to go with a mechanic of recruiting followers around the country-side and converting cities. I really enjoy the game Mount&amp;Blade and part of why I like it is the army-building system from followers you recruit, I&apos;ve always wanted to make something similar.</p><p>Once again I decided to go the MVP route : here I wanted to have cities with a certain number of followers needed to convert it, a player token that moves on the map gaining followers, entering a city converts it if you have enough followers and once all the cities are converted your religion is then assured of being &quot;kept alive&quot; and you win. Originally I wanted some kind of particle system to litter the countryside with different intensities of followers but I settled for at first making followers small tokens you would pick up.</p><p>My upgrade ideas were for example a system for heretics to spawn from your followers like an unwanted mutation, creating a competing religion siphoning off your potential pool of followers. Another possible antagonist would be the king of your country finding your influence dangerous and sending the army to stop you, making enemy groups you need to avoid. Another possibility would be making named followers than can make their own group and helping you achieve your goal.</p><h3 id="ld46-how-i-spent-my-time">LD46: How I spent my time</h3><p>I started Saturday morning thinking about the theme and deciding on the base of my game. After that I spent the rest of the morning going through the Godot tutorial, I decided this time I would go through with it and really give it a try. I had other plans early afternoon, in the end I got back to my jam only early evening. I finished the Godot tutorial and made a couple of commits to start my game.</p><p>Sunday morning I started late but then spent most of the day working on my game. I spent almost all of it coding (when not procrastinating) as I kept my graphics to the bare minimum, same for my sound effects and music. I spent even less time than LD42 on SFX, I re-used the voice idea and used the FOSS text-to-speech eSpeak NG. I think I spent about as much time as last time on music with LMMS : I made a longer track but had the experience of my first go around.</p><p>Like last time I didn&apos;t push further then the MVP stage, where I had the base game mechanics and a way to win the game. Still I felt good about the game and think I did better than on LD42.</p><h2 id="compared-results">Compared results</h2><h3 id="theogenisis-1383-submissions-">Theogenisis (1383 submissions)</h3><p><strong>Overall:</strong> 1011th (2.75 average from 20 ratings)<br><strong>Fun:</strong> 835th (2.861 average from 20 ratings)<br><strong>Innovation:</strong> 600th (3.194 average from 20 ratings)<br><strong>Theme:</strong> 730th (3.444 average from 20 ratings)<br><strong>Graphics:</strong> 1036th (2.083 average from 20 ratings)<br><strong>Audio:</strong> 722nd (2.556 average from 20 ratings)<br><strong>Humor:</strong> 744th (2.25 average from 20 ratings)<br><strong>Mood:</strong> 934th (2.528 average from 20 ratings)</p><h3 id="escape-through-the-void-1054-submissions-">Escape through the void (1054 submissions)</h3><p><strong>Overall:</strong> 705th (2.452 average from 23 ratings)<br><strong>Fun:</strong> 704th (2.175 average from 22 ratings)<br><strong>Innovation:</strong> 590th (2.711 average from 21 ratings)<br><strong>Theme:</strong> 488th (3.25 average from 22 ratings)<br><strong>Graphics:</strong> 696th (1.575 average from 22 ratings)<br><strong>Audio:</strong> 537th (2.184 average from 21 ratings)<br><strong>Humor:</strong> 421st (2.083 average from 20 ratings)<br><strong>Mood:</strong> 575th (2.25 average from 20 ratings)</p><h3 id="comparison">Comparison</h3><p>1011th on 1383 is about 770th on 1054 so I had a lesser overall rank even though I had a better overall rating. In fact I got a better rating in every single category. I think this April participation was pretty special with a big part of the world confined in the first wave of the Covid-19 pandemic, I think people had more time to spend on their games so the competition was tougher.</p><h2 id="next-steps">Next steps</h2><p>I hope I&apos;ll be able to participate in more game competitions. For LD47 I have already plans for the weekend but maybe if I&apos;m inspired I&apos;ll find time for a short game. I had fun with LD42 and LD46, I believe I have a lot of margin for improvements and I look forward to building better games.</p>]]></content:encoded></item><item><title><![CDATA[How to set up Jolokia Proxy: a short example]]></title><description><![CDATA[<p>Recently, I&apos;ve been spending a bit of time setting up <a href="https://jolokia.org/">Jolokia</a> Proxy on a couple environments with different versions of Java and WebLogic.</p><p>I feel like Jolokia documentation is quite good, but does not provide any example or guide for Java newbies such as me. I guess I&</p>]]></description><link>https://blog.vnmis.net/set-up-jolokia-proxy/</link><guid isPermaLink="false">5f53fbcc4a16bd000179b1ab</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Sat, 05 Sep 2020 21:50:13 GMT</pubDate><content:encoded><![CDATA[<p>Recently, I&apos;ve been spending a bit of time setting up <a href="https://jolokia.org/">Jolokia</a> Proxy on a couple environments with different versions of Java and WebLogic.</p><p>I feel like Jolokia documentation is quite good, but does not provide any example or guide for Java newbies such as me. I guess I&apos;m not the only one out and you might be stuck at some point setting all this up, so I&apos;ll try to summarize the steps necessary to have a working proxy.</p><p>For further reading and if you can understand French, I recommend <a href="https://blog.jetoile.fr/2014/03/jolokia-le-piment-qui-vous-veut-du-bien.html">this post</a> that has helped me get things started.</p><p><em>Disclaimer: I really don&apos;t know much about Java, Jetty and the like. I&apos;m writing this for anyone who is stuck and needs to get Jolokia to just work. Let me know if there are some improvements that you judge useful or necessary.</em></p><h2 id="environment">Environment</h2><p>First, I chose to use <a href="https://www.eclipse.org/jetty/">Jetty</a> to run Jolokia. You need to choose a version compatible with the Java JDK you have at your disposal. For example, according to <a href="https://wiki.eclipse.org/Jetty/Starting/Jetty_Version_Comparison_Table">this page</a>, the latest version, Jetty 9, is only compatible with JDK 1.8. I have some servers still running JDK 1.7 and had a little surprise when trying to start Jetty: had to downgrade to Jetty 8. Anyway, this is fine for a simple tasks such has running Jolokia&apos;s WAR.</p><h2 id="installing-jetty">Installing Jetty</h2><p>Jetty comes in an archive file. Pick a directory such as <code>/opt/jetty</code>, extract the archive there, and create a <code>jetty</code> user (unless you want to run Jetty as root). You&apos;ll also need to create <code>/var/run/jetty</code>:</p><pre><code class="language-Bash">adduser jetty
mkdir /var/run/jetty /opt/jetty
cd /opt/jetty
cp /tmp/jetty-distribution-9.4.31.v20200723.zip .
unzip jetty-distribution-9.4.31.v20200723.zip
ln -s jetty-distribution-9.4.31.v20200723/ current</code></pre><p>I like to keep things organized, the <code>current</code>symlink can help having smoother upgrades, if necessary. <br>Then, copy or link the provided init.d script to the right place, and also copy the Jolokia WAR file:</p><pre><code class="language-Bash">ln -s /opt/jetty/current/bin/jetty.sh /etc/init.d/jetty
cp /tmp/jolokia-war-unsecured-1.6.2.war /opt/jetty/current/webapps/jolokia.war</code></pre><p>And finally, give ownership to <code>jetty</code>user for all these files:</p><pre><code class="language-Bash">chown -R jetty. /opt/jetty/ /var/run/jetty/</code></pre><h2 id="configuration">Configuration</h2><p>At this point, Jetty should start correctly, but you probably need to configure a few things. First, a <code>/etc/default/jetty</code> file allows control over some parameters of Jetty, here&apos;s mine:</p><figure class="kg-card kg-code-card"><pre><code>JETTY_HOME=/opt/jetty/current
JETTY_BASE=/opt/jetty/current
JETTY_USER=jetty
JETTY_PORT=8080
JETTY_HOST=127.0.0.1
# these two lines are only necessary if Java path is not defined in your global PATH
JAVA_HOME=/opt/jdk1.7.0_72_32bits
JAVA=$JAVA_HOME/bin/java
# only necessary for Jetty &lt;= 8
JETTY_LOGS=/opt/jetty/current/logs/
</code></pre><figcaption>/etc/default/jetty</figcaption></figure><p>If you change the default port, please note that you might have to change it in all Jetty&apos;s built-in files - if you don&apos;t, Jetty will try to use that port and will not start if it is already in use:</p><pre><code class="language-bash">sed -i &quot;s/8080/5000/g&quot; /opt/jetty/current/etc/*.xml</code></pre><p>The final touch is to declare Jolokia in Jetty configuration. Edit <code>/opt/jetty/current/etc/webdefault.xml</code>and add this block next to another servlet:</p><figure class="kg-card kg-code-card"><pre><code class="language-XML">  &lt;servlet&gt;
    &lt;servlet-name&gt;jolokia-agent&lt;/servlet-name&gt;
    &lt;servlet-class&gt;org.jolokia.http.AgentServlet&lt;/servlet-class&gt;
    &lt;init-param&gt;
        &lt;description&gt;
            Class names (comma separated) of RequestDispatcher used in addition
            to the LocalRequestDispatcher
        &lt;/description&gt;
        &lt;param-name&gt;dispatcherClasses&lt;/param-name&gt;
        &lt;param-value&gt;org.jolokia.jsr160.Jsr160RequestDispatcher&lt;/param-value&gt;
    &lt;/init-param&gt;
  &lt;/servlet&gt;</code></pre><figcaption>webdefault.xml</figcaption></figure><h2 id="if-you-have-authenticated-jmx-queries">If you have authenticated JMX queries</h2><p>I have spend way too many hours on this particular point, here&apos;s the trick: you need to copy your WebLogic <code>wlclient.jar</code> and <code>wljmxclient.jar</code> in Jetty libraries, otherwise you will get a <code>org.omg.CORBA.NO_PERMISSION</code>error. I believe these libraries are publicly available.</p><pre><code>cp /tmp/wlclient.jar /tmp/wlkmxclient.jar /opt/jetty/current/lib/ext/</code></pre><p>I have not tested if Jetty 9 handles correctly authenticated queries without this.</p><h2 id="start-jetty-start-collecting">Start Jetty, start collecting</h2><p>Just run <code>service start jetty</code>and it should fire up.<br>You can test Jolokia Proxy with a curl command such as (you can remove user and password, if not applicable):</p><pre><code>curl -d &apos;{&quot;type&quot; : &quot;read&quot;, &quot;mbean&quot; : &quot;java.lang:type=Memory&quot;, &quot;attribute&quot; : &quot;HeapMemoryUsage&quot;, &quot;path&quot; : &quot;used&quot;, &quot;password&quot;:&quot;xxxx&quot;, &quot;user&quot;:&quot;xxxx&quot; }&apos; -H &quot;Content-Type: application/json&quot; -X POST http://localhost:8080/jolokia/</code></pre><p>You can now use Telegraf which supports Jolokia Proxy:</p><figure class="kg-card kg-code-card"><pre><code>[[inputs.jolokia2_proxy]]
  url = &quot;http://localhost:8080/jolokia&quot;

  [[inputs.jolokia2_proxy.target]]
    url = &quot;service:jmx:rmi:///jndi/rmi://server01:5100/jmxrmi&quot;
  [[inputs.jolokia2_proxy.metric]]
    name = &quot;test&quot;
    mbean = &quot;test.request:type=Monitoring,name=RequestStatus,visibility=public&quot;
    paths = [&quot;State&quot;]</code></pre><figcaption>extract of telegraf.conf with dummy parameters</figcaption></figure><p>And that&apos;s it.</p>]]></content:encoded></item><item><title><![CDATA[Sauvegardes et accès à distance d'un serveur à la maison]]></title><description><![CDATA[<p>Aujourd&apos;hui, apr&#xE8;s avoir d&#xE9;crit l&apos;installation et la configuration d&apos;un serveur domotique avec mon exemple personnel, parlons sauvegardes et acc&#xE8;s &#xE0; distance.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2019/08/To-RAID-or-not-to-RAID.png" class="kg-image" alt loading="lazy"><figcaption>Source : 1nine.com</figcaption></figure><p>Je commence avec ce message fort, bien connu dans la communaut&#xE9; des aficionados</p>]]></description><link>https://blog.vnmis.net/sauvegardes-et-accessibilite/</link><guid isPermaLink="false">5d65503cb2f6a600010aafb0</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Wed, 28 Aug 2019 09:28:03 GMT</pubDate><content:encoded><![CDATA[<p>Aujourd&apos;hui, apr&#xE8;s avoir d&#xE9;crit l&apos;installation et la configuration d&apos;un serveur domotique avec mon exemple personnel, parlons sauvegardes et acc&#xE8;s &#xE0; distance.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2019/08/To-RAID-or-not-to-RAID.png" class="kg-image" alt loading="lazy"><figcaption>Source : 1nine.com</figcaption></figure><p>Je commence avec ce message fort, bien connu dans la communaut&#xE9; des aficionados de NAS et d&apos;auto-h&#xE9;bergement en g&#xE9;n&#xE9;ral : faire du RAID ne dispense pas de faire des sauvegardes.</p><p>En effet, il ne faut pas oublier que si vous avez un serveur, son point faible est le disque dur : c&apos;est sans doute l&apos;&#xE9;l&#xE9;ment le plus emb&#xEA;tant &#xE0; changer, car il faut tout r&#xE9;installer.<br>Pour ma part, l&apos;OS de mon serveur tourne sur un simple SSD (pas de RAID) : s&apos;il rend l&apos;&#xE2;me un jour, je devrai trouver un rempla&#xE7;ant (&#xE7;a c&apos;est facile, des disques durs de faible capacit&#xE9;, &#xE7;a ne co&#xFB;te pas cher), r&#xE9;installer l&apos;OS dessus, puis r&#xE9;installer tous les services applicatifs.</p><p>Je g&#xE8;re la premi&#xE8;re &#xE9;tape manuellement : t&#xE9;l&#xE9;charger le dernier ISO de <em>Ubuntu</em> <em>Server</em>, le mettre sur une cl&#xE9; USB, d&#xE9;rouler l&apos;installation.<br>La deuxi&#xE8;me &#xE9;tape se fait par des <em>playbooks Ansible</em>.<br><br>Pour gagner du temps sur ces deux &#xE9;tapes, vous pouvez &#xE9;galement mettre en place du RAID, mais &#xE7;a ne vous &#xE9;vite pas les pires catastrophes, qui &#xE0; mon avis sont : le vol, et les d&#xE9;g&#xE2;ts physiques (feu, surtension, inondation, etc.).</p><h3 id="architecture-des-sauvegardes">Architecture des sauvegardes</h3><p>Je planifie g&#xE9;n&#xE9;ralement trois types de sauvegardes :</p><!--kg-card-begin: markdown--><p><strong>Locales (donn&#xE9;es applicatives)</strong>, principalement pour revenir en arri&#xE8;re en cas de probl&#xE8;me suite &#xE0; une mise &#xE0; jour ou &#xE0; une fausse manipulation. Concr&#xE8;tement, je mets en place un script de sauvegarde hebdomadaire, en crontab :</p>
<p><code>0 3 * * 0 /bin/bash /home/hugues/saveScript.sh &gt;&gt;/var/log/saveScript.sh 2&gt;&amp;1</code></p>
<p>Dans lequel on y trouve du chiffrement GPG &#xE0; la vol&#xE9;e, une compression, et un stockage des copies dans un r&#xE9;pertoire d&#xE9;di&#xE9;.<br>
Pour faire court, je ne vous montre ici que le backup des applications <em>certbot</em> et <em>lexicon</em>, dont on parlera plus loin :</p>
<pre><code>#!/bin/bash
passphrase=&quot;votre-passphrase-ici&quot;

# creating archives 
cd /mnt/data
tar -zc certbot/ lexicon/ | gpg -c --batch --passphrase &quot;$passphrase&quot; -o certbot-lexicon.tar.gz.gpg
[...]

# moving files
mkdir -p backups
rm -f backups/*
mv *.gpg backups/
rclone -v copy backups/ aws:votre-stockage-aws-ici
</code></pre>
<p>&#xC0; un instant donn&#xE9;, je n&apos;ai donc qu&apos;une seule sauvegarde de disponible en local : celle du dimanche pr&#xE9;c&#xE9;dent. L&apos;<strong>archivage</strong> est g&#xE9;r&#xE9; par un stockage <strong>distant</strong>, qui est introduit par l&apos;utilitaire de la derni&#xE8;re ligne : <em>rclone</em>.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p><strong>Distantes (donn&#xE9;es applicatives)</strong> : <a href="https://github.com/rclone/rclone"><em>rclone</em></a> est un utilitaire en ligne de commande qui permet d&apos;envoyer des fichiers sur diff&#xE9;rents <em>clouds</em> publics. Pour ma part, je m&apos;en sers pour envoyer mes sauvegardes hebdomadaires sur <em>AWS S3</em> (Simple Storage Service). &#xC7;a n&apos;est pas gratuit, mais &#xE7;a me revient &#xE0; moins d&apos;un euro par mois :</p>
<p><img src="https://blog.vnmis.net/content/images/2019/08/Capture.PNG" alt="Capture" loading="lazy"></p>
<p>Ceci pour environ 8 Go de donn&#xE9;es &#xE0; chaque sauvegarde, avec 3 semaines de r&#xE9;tention, soit un total de 24 Go stock&#xE9;s chez Amazon : c&apos;est l&apos;aspect <strong>archivage</strong> qui, en cas de sauvegarde corrompue (il peut arriver de sauvegarder une archive vide !), me permet de revenir en arri&#xE8;re.</p>
<p>H&#xE9;berger des donn&#xE9;es personnelles chez une soci&#xE9;t&#xE9; priv&#xE9;e pose des probl&#xE8;mes de confidentialit&#xE9;, c&apos;est pour cela que je chiffre tout en GPG - ce qui limite fortement les risques.</p>
<!--kg-card-end: markdown--><!--kg-card-begin: markdown--><p><strong>Distantes (donn&#xE9;es media)</strong> : ces donn&#xE9;es sont les seules &#xE0; &#xEA;tre en RAID (ce qui r&#xE9;soud le probl&#xE8;me de redondance locale), mais repr&#xE9;sentent environ 5 To : difficile donc de sauvegarder le tout sur un cloud, &#xE7;a reviendrait trop cher.</p>
<p>Une solution &#xE9;l&#xE9;gante serait d&apos;avoir un deuxi&#xE8;me NAS de capacit&#xE9; &#xE9;quivalente, h&#xE9;berg&#xE9; chez quelqu&apos;un d&apos;autre, ou dans une r&#xE9;sidence secondaire, et d&apos;effectuer des sauvegardes crois&#xE9;es.</p>
<p>Cependant, pour limiter les co&#xFB;ts, j&apos;ai simplement fait le choix d&apos;avoir des disques durs externes &#xE0; mon bureau, et je fais manuellement mais r&#xE9;guli&#xE8;rement des sauvegardes avec <em>rsync</em>, ce qui permet de synchroniser le NAS avec ces disques durs : seuls les nouveaux fichiers sont sauvegard&#xE9;s.</p>
<!--kg-card-end: markdown--><h3 id="acc-s-distance">Acc&#xE8;s &#xE0; distance</h3><p>Une fois r&#xE9;gl&#xE9;e la probl&#xE9;matique des sauvegardes, une autre question majeure qui est soulev&#xE9;e est celle de l&apos;acc&#xE8;s &#xE0; distance (depuis internet) : comment bien le faire, de fa&#xE7;on s&#xE9;curis&#xE9;e et simple ?</p><p>Il y a beaucoup d&apos;approches diff&#xE9;rentes et bien document&#xE9;es ailleurs, je ne vais donc que vous pr&#xE9;senter la mienne. L&apos;avantage est ici un contr&#xF4;le total de la cha&#xEE;ne.</p><!--kg-card-begin: markdown--><p><strong>Acheter son nom de domaine</strong> : par simplicit&#xE9;, je loue le mien chez AWS Route 53. Un domaine en <em>.net</em> co&#xFB;te g&#xE9;n&#xE9;ralement moins cher : je paie le mien 11&#x20AC; par an environ. Dans l&apos;onglet <em>serveurs de noms</em> de Route 53, j&apos;indique ceux de Cloudflare.</p>
<p><img src="https://blog.vnmis.net/content/images/2019/08/Capture-1.PNG" alt="Capture-1" loading="lazy"></p>
<p><strong>Cloudfare</strong> est l&apos;outil de r&#xE9;solution de mon alias DNS : c&apos;est un mastodonte dans ce domaine. C&apos;est ici que j&apos;associe mon nom de domaine &#xE0; mon adresse IP, mais en r&#xE9;alit&#xE9; c&apos;est un outil qui le fait pour moi : <a href="https://github.com/AnalogJ/lexicon/">Lexicon</a>.</p>
<p><strong>Lexicon</strong> est un utilitaire d&#xE9;di&#xE9; &#xE0; la manipulation d&apos;entr&#xE9;es DNS. J&apos;ai donc une crontab qui tourne une fois par jour et lance un conteneur Docker (mais vous pouvez le faire avec un simple script), o&#xF9; l&apos;outil va s&apos;authentifier sur Cloudflare et mettre &#xE0; jour mon IP, si besoin.</p>
<p>L&apos;acc&#xE8;s &#xE0; distance est d&#xE9;sormais possible :</p>
<p><img src="https://blog.vnmis.net/content/images/2019/08/Sans-titre.png" alt="Sans-titre" loading="lazy"></p>
<p>Une fois tout cela mis en place, il ne vous reste qu&apos;&#xE0; ouvrir les ports n&#xE9;cessaires sur votre routeur. Pour l&apos;IPv6, c&apos;est suffisant, et pour l&apos;IPv4, il faudra ajouter des r&#xE8;gles de NAT en plus.</p>
<p>Trouvez-vous &#xE9;galement un guide pour g&#xE9;n&#xE9;rer un certificat TLS (avec de bons param&#xE8;tres), par exemple avec <a href="https://github.com/certbot/certbot">certbot</a> qui le fera pour vous, avec un renouvellement automatique :</p>
<!--kg-card-end: markdown--><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2019/08/Capture-2-1.PNG" class="kg-image" alt loading="lazy"><figcaption>test r&#xE9;alis&#xE9; sur CryptCheck : https://tls.imirhil.fr/</figcaption></figure>]]></content:encoded></item><item><title><![CDATA[Montage d'un serveur/NAS : partie 2]]></title><description><![CDATA[<p>Si vous n&apos;avez pas lu la partie 1, la <a href="https://blog.vnmis.net/montage-dun-serveur-nas/">voici</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2019/01/IMG_20190105_180649.jpg" class="kg-image" alt loading="lazy"><figcaption>R&#xE9;ception du mat&#xE9;riel</figcaption></figure><p>Le montage est donc termin&#xE9;. Tout s&apos;est plut&#xF4;t bien pass&#xE9;, hormis une alimentation un peu suspecte, qui pr&#xE9;sentait des traces de liquide dans</p>]]></description><link>https://blog.vnmis.net/montage-dun-serveur-nas-partie-2/</link><guid isPermaLink="false">5c31da7ae753ac0001569c8b</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Tue, 08 Jan 2019 13:09:57 GMT</pubDate><content:encoded><![CDATA[<p>Si vous n&apos;avez pas lu la partie 1, la <a href="https://blog.vnmis.net/montage-dun-serveur-nas/">voici</a>.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2019/01/IMG_20190105_180649.jpg" class="kg-image" alt loading="lazy"><figcaption>R&#xE9;ception du mat&#xE9;riel</figcaption></figure><p>Le montage est donc termin&#xE9;. Tout s&apos;est plut&#xF4;t bien pass&#xE9;, hormis une alimentation un peu suspecte, qui pr&#xE9;sentait des traces de liquide dans un coin, comme si un condensateur avait fuit... Elle fonctionne bien pour le moment malgr&#xE9; tout.</p><p>Premier constat, c&apos;est le silence ! Les ventilateurs du boitier Fractal Design Node 304 sont quasiment inaudible, contrairement &#xE0; ceux du Synology DS216j.</p><p>J&apos;ai install&#xE9; Ubuntu 16.10 - que je compte migrer de version en version, mais j&apos;ai un peu h&#xE9;sit&#xE9; &#xE0; utiliser unRAID, ayant entendu beaucoup de bien sur cet OS pour un usage purement NAS + Docker. Utilisant un SSD d&#xE9;di&#xE9; pour l&apos;OS, il me sera toujours possible de migrer plus tard.</p><p>Pour le stockage, j&apos;ai cr&#xE9;&#xE9; un RAID1 avec <em>mdadm</em> : rien de plus simple. Je n&apos;ai cependant pas pens&#xE9; &#xE0; positionner l&apos;argument <em>--assume-clean</em> qui m&apos;aurait permis de ne pas effectuer le resynchronisation initiale : celle-ci a donc pris environ 12 heures.</p><p>Une fois le RAID cr&#xE9;&#xE9;, je l&apos;ai format&#xE9; en <em>ext4</em>. J&apos;ai h&#xE9;sit&#xE9; &#xE0; passer en <em>btrfs</em>, mais par pr&#xE9;caution, je reste en terrain connu... </p><p>Pas besoin de cr&#xE9;er de partition : je saute cette &#xE9;tape. Surprise cependant dans les heures qui suivent le formatage : j&apos;observe une activit&#xE9; constante sur les disques, alors que j&apos;avais fini mes copies. Apr&#xE8;s quelques recherches, c&apos;est en fait le syst&#xE8;me <em>ext4lazyinit</em> qui construit sa table d&apos;inodes en t&#xE2;che de fond. Et pour un stockage de 8 To : &#xE7;a prend du temps ! Heureusement, le lendemain tout &#xE9;tait termin&#xE9;.</p><p>C&#xF4;t&#xE9; client, un PC sous Linux Mint, j&apos;ai configur&#xE9; du NFS avec le m&#xE9;canisme <em>autofs</em>. CIFS devrait marcher aussi bien, mais j&apos;aime bien changer et tester de nouvelles choses. Une chose qu&apos;il ne faut pas oublier dans le param&#xE9;trage du NFS, ce sont les valeurs de <em>rsize</em> et <em>wsize</em>, &#xE0; augmenter consid&#xE9;rablement si vous &#xE9;changez des gros fichiers. Je les ai positionn&#xE9;s &#xE0; 1048576.</p><p>Pour les disques : je n&apos;ai pas configur&#xE9; de spindown, ce qui est pourtant faisable en modifiant avec <em>hdparm</em> les param&#xE8;tres de l&apos;<em>Advanced Power Management</em> (APM). Ce sujet semble <a href="https://www.google.com/search?q=should+i+spindown">tr&#xE8;s controvers&#xE9;</a>, beaucoup de monde affirmant que le spindown use plus les disques que le fait de les laisser tourner en permanence, sans aucun chiffre &#xE0; l&apos;appui cependant...</p><p>Derni&#xE8;re chose, tr&#xE8;s importante : le monitoring. J&apos;ai configur&#xE9; <em>smartctl</em> pour m&apos;envoyer des mails en cas de d&#xE9;faillance d&apos;un disque, et mont&#xE9; un tableau de bord Grafana, et je conclurai donc sur cet aper&#xE7;u :</p><figure class="kg-card kg-image-card"><img src="https://blog.vnmis.net/content/images/2019/01/Capture.PNG" class="kg-image" alt loading="lazy"></figure>]]></content:encoded></item><item><title><![CDATA[Montage d'un serveur/NAS : partie 1]]></title><description><![CDATA[Un NAS fait maison au format mini ITX, sur base d'une ASRock B360M]]></description><link>https://blog.vnmis.net/montage-dun-serveur-nas/</link><guid isPermaLink="false">5c288d20e1666e0001d5a738</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Tue, 01 Jan 2019 11:04:47 GMT</pubDate><content:encoded><![CDATA[<p><em>&#xC9;dition ao&#xFB;t 2019 : ajout de Pi-hole</em></p><p>Cela fait plusieurs mois, voire ann&#xE9;es, que j&apos;ai l&apos;id&#xE9;e en t&#xEA;te, mais jusque-l&#xE0; je ne l&apos;ai jamais concr&#xE9;tis&#xE9;e, principalement par souci d&apos;&#xE9;conomie. Je dispose en effet d&apos;ores et d&#xE9;j&#xE0; d&apos;un NAS et d&apos;un serveur : fonctionnellement, tout est d&#xE9;j&#xE0; en place et fonctionne &#xE0; merveille.</p><p>Le NAS actuel, lui, est un Synology DS416j que je mutualise avec un ami (merci G. !), et que j&apos;h&#xE9;berge chez moi car j&apos;ai la fibre et lui non. &#xC0; l&apos;int&#xE9;rieur, quatre disques de 2 To en RAID5, soit environ 5,5 To utilisables.</p><p>Le serveur a vu diff&#xE9;rents supports, mais toujours sous la forme de PC portable recycl&#xE9;s. Aujourd&apos;hui c&apos;est un ThinkPad Lenovo pas si vieux que PC, mais &#xE0; l&apos;&#xE9;cran cass&#xE9;, avec un bon i5-4300U qui peut faire bien plus qu&apos;on ne lui demande.</p><p>En suppl&#xE9;ment, et parce que les 5,5 To ne me suffisaient pas, je profitais du stockage Livebox, qui offre 1 To de NAS, mais que j&apos;arrivais &#xE0; remplir &#xE0; 90%.</p><h2 id="pourquoi-changer">Pourquoi changer</h2><p>J&apos;aurai pu tenir encore une petite ann&#xE9;e, sans doute, avant de r&#xE9;ellement saturer mon espace de stockage. Mais c&apos;est r&#xE9;ellement il y a quelques mois seulement que j&apos;ai vu la barre du t&#xE9;raoctet disponible d&#xE9;pass&#xE9;e sur le Synology, et le barre des 100 Go sur le stockage Livebox. Voil&#xE0; ce qui m&apos;a donc fait envisager plus s&#xE9;rieusement l&apos;obtention d&apos;une nouvelle solution.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2018/12/Screenshot-from-2018-12-30-18-46-42.png" class="kg-image" alt loading="lazy"><figcaption>Synology pas content du tout (la suite c&apos;est : &quot;is running out&quot;)</figcaption></figure><p>Plus tard, en voulant migrer mon abonnement internet Orange <em>Livebox Jet</em> vers son &#xE9;quivalent, plus r&#xE9;cent (ce qui signifie : moins de choses dedans) et moins cher <em>Livebox Up</em>, j&apos;ai eu la semi surprise de voir mon acc&#xE8;s au Stockage Livebox arriver &#xE0; sa fin, avec <a href="https://twitter.com/Orange_conseil/status/1078262641255243777">ce dr&#xF4;le d&apos;&#xE9;change</a> sur Twitter ou le service client m&apos;avait pourtant affirm&#xE9; que je pourrais le conserver. </p><p>Peu importe, de toute fa&#xE7;on &#xE7;a n&apos;a jamais &#xE9;t&#xE9; id&#xE9;al d&apos;avoir ce t&#xE9;raoctet s&#xE9;par&#xE9; du reste (la continuit&#xE9; des donn&#xE9;es, c&apos;est bien plus pratique), et non redond&#xE9; - contrairement au RAID c&#xF4;t&#xE9; Synology.</p><p>Mais ne vous en faites pas pour moi, tout est sauvegard&#xE9; d&apos;un c&#xF4;t&#xE9; comme de l&apos;autre, n&apos;oublions pas la maxime <a href="https://www.google.com/search?q=raid+is+no+backup">RAID is no backup</a>.</p><p>Enfin, quand on y pense, un NAS d&apos;un c&#xF4;t&#xE9; et un PC portable de l&apos;autre, c&apos;est deux alimentations s&#xE9;par&#xE9;es, donc un peu plus de consommation &#xE9;lectrique qu&apos;un seul &#xE9;quipement. Bon, si l&apos;on fait le bilan &#xE9;cologique avec l&apos;achat de mat&#xE9;riel neuf, je ne suis pas s&#xFB;r pour autant qu&apos;on y gagne, mais ma conscience est un peu plus tranquille en sachant que je consommerai un peu moins que pr&#xE9;c&#xE9;demment.</p><h2 id="pour-quoi-faire">Pour quoi faire ?</h2><p>Si vous &#xEA;tes arriv&#xE9;s jusque l&#xE0;, vous vous demandez peut-&#xEA;tre &#xE0; quoi &#xE7;a me sert. Voici donc mes principales utilisations pour le serveur :</p><ul><li>Home Assistant pour la domotique, principalement en Z-Wave. J&apos;ai migr&#xE9; au cours de l&apos;ann&#xE9;e de Jeedom vers HA, ce dernier est plus technique &#xE0; mettre en place, mais vraiment simplissime, l&#xE9;ger et esth&#xE9;tique.</li><li>Le combo multim&#xE9;dia usuel Plex/Radarr/Sonarr/Jackett/Transmission. Pour ceux qui ne connaissent pas : Internet regorge d&apos;informations &#xE0; ce sujet !</li><li>Mon Cloud personnel avec Nextcloud : j&apos;y g&#xE8;re mes fichiers, mon agenda, mes contacts et, depuis peu, mes notes avec Joplin qui supporte le WebDAV (auparavant j&apos;utilisais Turtl, qui est excellent et tr&#xE8;s joli)</li><li><a href="https://support.mozilla.org/fr/kb/comment-configurer-firefox-sync">Firefox Sync</a> en version <em>self-host&#xE9;e</em>, dont vous trouverez les sources <a href="https://github.com/mozilla-services/syncserver">ici</a>. Cela permet une synchronisation multi-appareils des donn&#xE9;es Firefox, et &#xE7;a fonctionne tr&#xE8;s bien pour moi depuis plusieurs ann&#xE9;es.</li><li>Et d&apos;autres applications anecdotiques : le frontal web, et du Grafana avec ses outils de monitoring (pour ma part : Graphite et Telegraf).</li><li>Pi-hole : qui remplace ma Livebox pour le r&#xF4;le de serveur DHCP (attribution des adresses IP) et de serveur DNS, ce qui permet d&apos;analyser tout le trafic et de bloquer un bon nombre de pubs, ce qui est surtout utiles pour les appareils qui ne peuvent pas installer uBlock Origin.</li></ul><p>Le tout tourne &#xE0; 100% dans des containers Docker, ce qui me permet de passer d&apos;une machine &#xE0; une autre, d&apos;un OS &#xE0; un autre tr&#xE8;s facilement. Ce qui n&apos;est pas sous Docker est configur&#xE9; dans des <em>playbooks</em> Ansible.</p><p>Et pour finir, le socle est un Ubuntu Server que je mets &#xE0; jour au fil des versions disponibles.</p><h2 id="le-fait-maison-est-ce-moins-cher">Le fait maison est-ce moins cher ?</h2><p>Partons sur la base du besoin d&apos;un NAS 4 baies. C&#xF4;t&#xE9; Synology, par exemple le DS418j correspond parfaitement, et est affich&#xE9; &#xE0; 320&#x20AC;.</p><p>Voici un exemple de montage fait maison, en petit format (mini ITX, donc), qui peut contenir 4 disques 3.5&quot; minimum (augmentable avec une carte d&apos;extension).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2018/12/Screenshot_2018-12-31-Mon-Panier.png" class="kg-image" alt loading="lazy"><figcaption>Prix au 31/12/2018</figcaption></figure><p>La carte m&#xE8;re est une combinaison carte + CPU soud&#xE9;, ce qui est tr&#xE8;s &#xE9;conomique, mais qui permet &#xE9;galement d&apos;avoir un montage basse consommation, puisque le J4205 affiche un <a href="https://fr.wikipedia.org/wiki/Enveloppe_thermique">TDP</a> de 10W.</p><p>L&apos;alimentation est bien trop grosse, mais c&apos;est difficile de trouver moins puissant tout en restant modulaire.</p><p>Ajoutez un boitier sympa tel que le Fractal Design Node 304 &#xE0; 78&#x20AC; :</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2018/12/Screenshot_2018-12-31-Fractal-Design-NODE-304-unit--centrale-Noir--Logement-Bureau-Noir-Blanc--PC--Mini-DTX--Mini-ITX--Noir-...-.png" class="kg-image" alt loading="lazy"><figcaption>Fractal Design, une marque su&#xE9;doise reconnue et au design tr&#xE8;s soign&#xE9;</figcaption></figure><p>J&apos;ai rajout&#xE9; deux c&#xE2;bles SATA car ce bo&#xEE;tier n&apos;en fournit qu&apos;avec deux.</p><p>Ajoutez un peu de RAM DDR3 SO-DIMM (vous pouvez potentiellement r&#xE9;cup&#xE9;rer cela sur un vieux PC portable), et vous vous en sortez avec un NAS fait maison pour environ 300&#x20AC;, soit 20&#x20AC;&#xA0;de moins que le Synology. </p><p>Si vous ne voulez pas faire tourner le syst&#xE8;me d&apos;exploitation sur une cl&#xE9; USB, il faudra tout de m&#xEA;me trouver un disque dur &#xE0; r&#xE9;utiliser pour cela, ou bien acheter un petit SSD, on en trouve aujourd&apos;hui des tr&#xE8;s bons <a href="https://www.ldlc.com/fiche/PB00228328.html">&#xE0; 30&#x20AC;</a>.</p><p>Si vous tournez alors avec 5 disques, il faudra pr&#xE9;voir une <a href="https://www.amazon.fr/Carte-Controleur-PCI-EXPRESS-PCI/dp/B0167MQXNW">carte d&apos;extension SATA</a> pour environ 50&#x20AC;. Mais pour rester comp&#xE9;titif avec le Synology, il faudra sans doute passer sur un bo&#xEE;tier et une carte m&#xE8;re plus gros, au format &#xB5;ATX par exemple.</p><p>En conclusion, il est tout &#xE0; fait possible de construire son propre NAS en restant comp&#xE9;titif avec un Synology, encore plus si vous arrivez &#xE0; recycler du mat&#xE9;riel que vous poss&#xE9;dez d&#xE9;j&#xE0;. Si vous partez sur du neuf, l&apos;investissement en vaut la peine, puisque tout sera r&#xE9;utilisable plusieurs ann&#xE9;es plus tard.</p><h2 id="pourquoi-s-emb-ter">Pourquoi s&apos;emb&#xEA;ter</h2><p>Monter son propre NAS, c&apos;est aussi obtenir des composants qui r&#xE9;pondent &#xE0; des standards : le bo&#xEE;tier et la carte m&#xE8;re au format mini-ITX ou &#xB5;ATX, le CPU a son type de socket, etc.</p><p>Tout cela est donc r&#xE9;utilisable, revendable, et surtout r&#xE9;parable &#xE0; souhait. A contrario, si votre Synology tombe en panne, je vous souhaite bon courage pour r&#xE9;ussir &#xE0; le r&#xE9;parer !</p><p>De plus, cela vous permet &#xE9;galement de changer la fonctionnalit&#xE9; de la machine : en choisissant une bonne carte m&#xE8;re d&#xE8;s le d&#xE9;but, rien ne vous emp&#xEA;chera plus tard d&apos;ajouter un peu de RAM, un meilleur CPU, une carte graphique, et vous pourrez alors jouer avec !</p><p>Pour ma part, c&apos;est, au-del&#xE0; du loisir, la possibilit&#xE9; de ma&#xEE;triser de bout en bout le mat&#xE9;riel <em>et</em> le logiciel utilis&#xE9; ainsi que de l&apos;adapter &#xE0; mes besoins.</p><p>Si vous n&apos;&#xEA;tes pas technophiles et/ou si vous n&apos;avez pas le temps : les Synology sont excellents quand m&#xEA;me. Et je ne parle que d&apos;eux ici, car je n&apos;ai pas encore test&#xE9; Qnap ou d&apos;autres potentiels concurrents.</p><h2 id="le-montage-choisi">Le montage choisi</h2><p>Pour ma part, je suis parti grosso modo sur la configuration ci-dessus (m&#xEA;me bo&#xEE;tier, m&#xEA;me alimentation), avec une <a href="https://www.asrock.com/MB/Intel/B360M-ITXac/index.asp">carte m&#xE8;re un peu plus r&#xE9;cente</a>, compatible avec le CPU Intel de 8&#xE8;me et 9&#xE8;me g&#xE9;n&#xE9;ration.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://blog.vnmis.net/content/images/2018/12/B360M-ITXac-L5-.png" class="kg-image" alt loading="lazy"><figcaption>Connectique de la carte ASRock B360M-ITX</figcaption></figure><p>Le CPU est &#xE0; monter s&#xE9;par&#xE9;ment, j&apos;ai pris un des moins puissants mais compatible, mon usage n&apos;&#xE9;tant pas trop gourmand en ressources : le <a href="https://ark.intel.com/products/129950/Intel-Celeron-G4920-Processor-2M-Cache-3-20-GHz-">Celeron G4920</a>.</p><p>Une barrette de RAM compatible (2x4 Go en DDR4 2400 MHz), et deux nouveaux disques Western Digital 8 To (ceux-ci sont au m&#xEA;me prix que deux disque de 4 To). Pour ceux-ci, je compte cr&#xE9;er un RAID1 (disques en miroir). J&apos;aurai pu prendre 4 disques de 4 To pour le m&#xEA;me prix, mais je ne souhaite pas complexifier pour le moment, ayant peur des temps de reconstruction du RAID5 ou 6... Cela permet d&apos;&#xE9;conomiser un peu de consommation &#xE9;lectrique &#xE9;galement.</p><p>En bonus, la carte m&#xE8;re g&#xE8;re le Wi-Fi et le Bluetooth nativement, ce qui pourra peut-&#xEA;tre me servir pour de la domotique ou du multim&#xE9;dia.</p><p>C&apos;est, &#xE0; mon avis, une configuration qui pourra durer un bon moment : essentiellement car elle supporte les CPU r&#xE9;cents et le dernier format de RAM. Le jour o&#xF9; les 8 To de stockage ne suffiront pas, je rajouterai deux disques (avec une carte d&apos;extension) et pourrait alors soit passer en RAID10, soit cr&#xE9;er un deuxi&#xE8;me volume ind&#xE9;pendant (cette derni&#xE8;re solution ayant l&apos;avantage de ne pas avoir &#xE0; toucher aux disques d&#xE9;j&#xE0; en place).</p><h2 id="la-suite">La suite </h2><p>La commande est pass&#xE9;e, j&apos;attends d&#xE9;sormais de recevoir le colis. Je posterai alors quelques photos du montage, avec un retour d&apos;exp&#xE9;rience et un petit suivi des actions sp&#xE9;cifiques &#xE0; la construction d&apos;un NAS maison.</p><p>&#xC0; suivre, donc !</p>]]></content:encoded></item><item><title><![CDATA[L'écosystème du titre de transport NFC]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Le transport et ses solutions de <em>ticketing</em> est un monde &#xE0; part enti&#xE8;re o&#xF9; il reste beaucoup de place pour de l&apos;innovation. Faisons un tour des innovations en cours en France, puis des technologies du moment.</p>
<h5 id="exprimentationsencourslancementsvenir">Exp&#xE9;rimentations en cours, lancements &#xE0; venir</h5>
<p>Depuis</p>]]></description><link>https://blog.vnmis.net/lecosysteme-du-titre-de-transport-sur-mobile-nfc/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5c0</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Tue, 15 May 2018 10:15:37 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Le transport et ses solutions de <em>ticketing</em> est un monde &#xE0; part enti&#xE8;re o&#xF9; il reste beaucoup de place pour de l&apos;innovation. Faisons un tour des innovations en cours en France, puis des technologies du moment.</p>
<h5 id="exprimentationsencourslancementsvenir">Exp&#xE9;rimentations en cours, lancements &#xE0; venir</h5>
<p>Depuis la cr&#xE9;ation de Wizway (joint-venture RATP, SNCF, Gemalto et Orange), un <a href="http://www.wizwaysolutions.com/communique-de-presse/wizway-solutions-partenaire-mobilite-digitale-cts.html">premier pilote</a> a d&#xE9;j&#xE0; &#xE9;t&#xE9; lanc&#xE9; en 2017 &#xE0; Strasbourg, avec la CTS.</p>
<p>Fin 2017, la start-up Dejamobile a <a href="https://business.lesechos.fr/entrepreneurs/actu/030892850280-comment-une-start-up-normande-s-est-s-invitee-dans-navigo-316029.php#xtor=CS1-35">remport&#xE9; un appel d&apos;offre</a> de l&apos;UGAP (Union des groupements d&apos;achats publics) pour transf&#xE9;rer le pass Navigo vers le smartphone. L&apos;<a href="https://www.iledefrance.fr/navigo-smartphone-teste-a-l-automne">exp&#xE9;rimentation</a> se d&#xE9;roulera en 2018, pour un lancement en &#xE9;t&#xE9; 2019.</p>
<p>Le 15 mai 2018, le r&#xE9;seau de la m&#xE9;tropole de Rennes, Star, en collaboration avec la SNCF et TER Bretagne, lance une <a href="http://www.star.fr/actualites/experimentation-nfc/">exp&#xE9;rimentation</a> afin de pouvoir valider son titre de transport via son mobile Android. L&apos;achat et la validation du titre se fait via l&apos;application SNCF.</p>
<p><img src="https://blog.vnmis.net/content/images/2018/05/DdODJexVQAAK3ss.jpg-large-1.jpg" alt loading="lazy"></p>
<p>Pour y participer, il vous faudra un smartphone Android, compatible NFC et avoir un forfait Orange. Ce dernier point s&apos;explique par le fait que la solution se base sur la carte SIM pour y stocker le titre de transport.<br>
Cependant, puisque Wizway r&#xE9;unit les trois op&#xE9;rateurs historiques, il n&apos;y a pas de raison que cette limitation persiste ind&#xE9;finiement. Orange est un choix logique pour mener ces exp&#xE9;rimentations, car il dispose d&apos;ores et d&#xE9;j&#xE0; d&apos;un parc de cartes SIM compatibles NFC, contrairement aux autres.</p>
<p>Quand &#xE0; une solution sur Apple, on peut s&apos;attendre un jour &#xE0; ce que Apple Pay s&apos;invite &#xE0; la partie, comme c&apos;est d&#xE9;j&#xE0; le cas au Japon.</p>
<p><img src="https://blog.vnmis.net/content/images/2018/05/IMG_0088.0.0.jpg" alt="Source : https://www.theverge.com/2016/10/25/13401092/apple-pay-japan-suica-felica-nfc" loading="lazy"></p>
<h5 id="accountbasedodaetsim">account-based, ODA et SIM</h5>
<p>Aujourd&apos;hui on observe deux grosses tendances pour les solutions de ticketing &#xE0; venir.</p>
<p>Le syst&#xE8;me &quot;account-based&quot; permet de calculer les frais d&apos;un voyage a posteriori, ce sont les serveurs du transporteur qui calculent le tarif optimal selon le trajet effectu&#xE9;. C&apos;est le cas par exemple &#xE0; Londres (Oyster card) et &#xE0; Sydney (Opal).<br>
Les avantages sont nombreux : exp&#xE9;rience utilisateur simplifi&#xE9;e, possibilit&#xE9; d&apos;utiliser une carte bancaire (cf. ODA ci-dessous), maintenabilit&#xE9; du syst&#xE8;me, etc.</p>
<p>L&apos;ODA (Offline Data Authentication) est une technologie qui permet d&apos;utiliser sa carte bancaire en remplacement d&apos;un ticket de transport. Cela permet, pour le transporteur, de ne plus avoir &#xE0; distribuer de ticket ni de pass &#xE0; l&apos;ensemble de ses clients, ce qui repr&#xE9;sente un co&#xFB;t non n&#xE9;gligeable. La solution est optimis&#xE9;e pour les transports (temps de r&#xE9;ponse inf&#xE9;rieur &#xE0; 500 ms), mais malheureusement pas aussi rapide qu&apos;une carte de transport classique.</p>
<p>La SIM vient compl&#xE9;ter ces solutions pour les transporteurs qui ne veulent (ou ne peuvent) pas migrer rapidement vers l&apos;ODA ou l&apos;account-based, qui sont plus lourds &#xE0; mettre en place. Avec une simple application mobile et, en France, avec l&apos;appui de Wizway, il est possible de stocker un titre de transport sur son mobile. Cela permet d&apos;avoir une solution mobile, tout en &#xE9;vitant les catastrophes que sont les codes-barres, o&#xF9; chaque utilisateur perd g&#xE9;n&#xE9;ralement plus de 10 secondes &#xE0; la borne pour qu&apos;il soit correctement d&#xE9;tect&#xE9;.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[La Livebox 4... 18 mois après]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Cela fait <a href="https://blog.vnmis.net/2016/06/12/de-freebox-revolution-a-livebox-4/">&#xE0; peu pr&#xE8;s un an et demi</a> que j&apos;ai quitt&#xE9; la Freebox R&#xE9;volution pour obtenir la box qui fait &quot;tomber les murs&quot; : la Livebox 4. Il est plus que temps d&apos;en faire le bilan, notamment suite &#xE0;</p>]]></description><link>https://blog.vnmis.net/la-livebox-4-18-mois-apres/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5bf</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Mon, 11 Dec 2017 13:16:34 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Cela fait <a href="https://blog.vnmis.net/2016/06/12/de-freebox-revolution-a-livebox-4/">&#xE0; peu pr&#xE8;s un an et demi</a> que j&apos;ai quitt&#xE9; la Freebox R&#xE9;volution pour obtenir la box qui fait &quot;tomber les murs&quot; : la Livebox 4. Il est plus que temps d&apos;en faire le bilan, notamment suite &#xE0; la toute r&#xE9;cente <a href="https://livebox-news.com/2017/11/30/2168/orange-met-a-jour-livebox-4-pour-ameliorer-sans-fil">mise &#xE0; jour majeure</a> (3.2.18).<br>
<img src="https://img.macg.co/2016/5/macgpic-1463039285-182604055622528-accroche.jpg" alt="Annonce de la Livebox 4 en mai 2016" loading="lazy"><br>
Orange cible essentiellement le grand public, pas sp&#xE9;cialement technophile, et cela se ressent sur les d&#xE9;veloppements - et pas que de la Livebox - que l&apos;accent est mis sur l&apos;accessibilit&#xE9; pour madame et monsieur tout le monde, pour la famille. Je ne vais donc pas trop m&apos;attarder sur le fait qu&apos;on ne peut pas choisir ses serveurs DNS, ou bien sur l&apos;absence d&apos;IP fixe, mais ce sont bien ces premiers d&#xE9;fauts qui m&apos;ont emb&#xEA;t&#xE9;s.</p>
<p>Je vais parler ici &#xE9;galement du D&#xE9;codeur TV 4, sorti en m&#xEA;me temps que la Livebox 4. &#xC0; noter que depuis quelques mois je l&apos;ai laiss&#xE9;e tomber au profit de la Nvidia Shield, qui tourne sur Android (pas cool) mais qui me permet par contre d&apos;utiliser Plex et Molotov (et toute application adapt&#xE9;e pour Android TV) ou encore le <em>cloud gaming</em> via Nvidia GeForce Now.</p>
<h5 id="lalivebox">La Livebox</h5>
<p>Tout d&apos;abord, il faut souligner que la Livebox est la seule box de derni&#xE8;re g&#xE9;n&#xE9;ration <a href="http://www.pontivyjournal.fr/bretagne/innovation-en-bretagne-livebox-4-d-orange-300-ingenieurs-mobilises-a-rennes-et-lannion-pendant-3-ans">d&#xE9;velopp&#xE9;e en France</a> : les concurrents ayant fait le choix de la simplicit&#xE9; (et de l&apos;efficacit&#xE9;, me direz-vous) en int&#xE9;grant Android. Elle est plus pr&#xE9;cis&#xE9;ment d&#xE9;velopp&#xE9;e en Bretagne ; &#xE0; l&apos;heure de la <a href="https://www.nextinpact.com/news/105699-et-si-on-se-debarrassait-google-pour-commencer.htm">d&#xE9;googlisation</a>, &#xE7;a sonne plut&#xF4;t bon pour Orange.</p>
<p>Globalement, je suis tr&#xE8;s satisfait de cette box : notamment, sans surprise, sur la qualit&#xE9; du wifi, j&apos;atteins des d&#xE9;bits plus que corrects : &gt;200 Mbps vers internet, pas mieux en local. J&apos;ai eu pendant un moment des d&#xE9;connexions intempestives sur le canal 5 GHz, mais cela a finalement &#xE9;t&#xE9; corrig&#xE9; dans la derni&#xE8;re mise &#xE0; jour et &#xE7;a ne touchait qu&apos;un seul mod&#xE8;le d&apos;appareil.</p>
<p>J&apos;ai fait le choix de prendre l&apos;option de stockage, qui permet de disposer d&apos;un disque dur de 1 To int&#xE9;gr&#xE9; &#xE0; la box, et bonne surprise : les donn&#xE9;es y sont chiffr&#xE9;es, le montage CIFS se fait tr&#xE8;s bien, si ce n&apos;est que la box semble mal g&#xE9;rer les permissions (impossible d&apos;obtenir des permissions diff&#xE9;rentes de <em>chown</em> entre l&apos;user et le group).<br>
Cependant, j&apos;aurai aim&#xE9; pouvoir transf&#xE9;rer directement des donn&#xE9;es depuis un disque dur externe vers la Livebox et son stockage interne : c&apos;est malheureusement impossible, l&apos;interface de la Livebox ne disposant pas de navigateur. Donc m&#xEA;me pour remplir le t&#xE9;raoctet de donn&#xE9;es, il faudra passer par un ordinateur. De plus, la d&#xE9;tection du disque dur externe branch&#xE9; en USB 3 sur la Livebox &#xE9;tait assez al&#xE9;atoire lors de mes derniers tests.</p>
<p>Listing brut de quelques autres petits agacements :</p>
<ul>
<li>Pour associer des appareils en wifi, le WPS et le QR Code qui peuvent &#xEA;tre  g&#xE9;n&#xE9;r&#xE9;s depuis l&apos;application Ma Livebox ou directement sur la box, d&#xE9;clenchement l&#x2019;association sur le canal 2.4 GHz (lorsque celui-ci est d&#xE9;coupl&#xE9; du 5 GHz), ce qui est un peu ridicule puisque toute la communication autour de la box mettait l&apos;accent sur le 5 GHz.</li>
<li>L&apos;interface pour ouvrir des ports IPv6 est chaotique : r&#xE9;guli&#xE8;rement, l&apos;ajout d&apos;une entr&#xE9;e &#xE9;crase la ligne pr&#xE9;c&#xE9;dente</li>
<li>Un peu plus g&#xEA;nant, l&apos;afficheur LED reste allum&#xE9; en permanence, bug que j&apos;ai pu constater chez plusieurs autres personnes.</li>
<li>Moins g&#xE9;nant mais ridicule, on peut classer les appareils par type, mais sans pouvoir customiser l&apos;ic&#xF4;ne ou le nom et parmi la liste des choix disponibles nous avons : &quot;Home Live&quot; (au lieu de Homelive) ou encore &quot;Andro&#xEF;d&quot;. Un peu &#xE9;trange puisque pour le premier cas, c&apos;est leur propre marque...</li>
</ul>
<h5 id="ledcodeur">Le D&#xE9;codeur</h5>
<p>Celui-ci fait g&#xE9;n&#xE9;ralement bien son boulot pour la partie TV. Par contre, pour un usage media center, il est truff&#xE9; de bugs, je ne peux faire mieux qu&apos;&#xE9;num&#xE9;rer ce que j&apos;ai not&#xE9; au fur et &#xE0; mesure :</p>
<ul>
<li>si vous l&apos;utilisez en wifi, il y a des saccades r&#xE9;guli&#xE8;res</li>
<li>le media center crashe &#xE0; chaque lancement</li>
<li>il ne se souvient pas du choix de tri par d&#xE9;faut des vid&#xE9;os</li>
<li>un <a href="https://communaute.orange.fr/t5/TV-par-ADSL-et-Fibre/Probl%C3%A8me-HDCP-2-2-nouveau-d%C3%A9codeur-TV-4/m-p/1450677#M101800">&#xE9;norme probl&#xE8;me</a> sur la gestion de l&apos;HDCP</li>
<li>les sous-titres en VoD sont presque au milieu de l&apos;&#xE9;cran</li>
<li>si le d&#xE9;codeur est branch&#xE9; &#xE9;lectriquement, il s&apos;allume - pas sympa du tout si vous coupez r&#xE9;guli&#xE8;rement l&apos;alimentation de votre meuble TV</li>
</ul>
<p>Cet article vous semblera assez n&#xE9;gatif, mais j&apos;avais d&#xE9;j&#xE0; soulev&#xE9; les bons points de la box <a href="https://blog.vnmis.net/de-freebox-revolution-a-livebox-4/">&#xE0; son acquisition</a> !</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Carte de crédit, carte de débit]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h6 id="4typesdecartes">4 types de cartes</h6>
<p>Dans cet article nous allons traiter d&apos;un point bien particulier : la nuance entre les diff&#xE9;rents type de cartes bancaires, qui souffrent de nombreux abus de langage en France.<br>
On entend souvent &quot;carte de cr&#xE9;dit&quot;, &quot;carte de d&</p>]]></description><link>https://blog.vnmis.net/carte-de-credit-carte-de-debit/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5bd</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Sun, 22 Oct 2017 12:28:26 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h6 id="4typesdecartes">4 types de cartes</h6>
<p>Dans cet article nous allons traiter d&apos;un point bien particulier : la nuance entre les diff&#xE9;rents type de cartes bancaires, qui souffrent de nombreux abus de langage en France.<br>
On entend souvent &quot;carte de cr&#xE9;dit&quot;, &quot;carte de d&#xE9;bit&quot; ou encore &quot;carte bleue&quot;, sans faire trop attention au sens r&#xE9;el de ces appellations.<br>
Pour commencer, c&apos;est depuis le <a href="http://www.cartes-bancaires.com/sites/default/files/categories_cartes_1.pdf">9 juin 2016</a> que la mention de &quot;cat&#xE9;gorie&quot; est obligatoire sur les cartes nouvellement imprim&#xE9;es.</p>
<p>Les mentions possibles sont : CR&#xC9;DIT (ou CARTE DE CR&#xC9;DIT), D&#xC9;BIT, COMMERCIAL et PREPAID.<br>
La nuance entre CR&#xC9;DIT et CARTE DE CR&#xC9;DIT doit normalement dispara&#xEE;tre pour n&apos;avoir plus que CR&#xC9;DIT, mais on peut encore voir de nombreuses CARTE DE CR&#xC9;DIT jusqu&apos;&#xE0; &#xE9;puisement des stocks.</p>
<h6 id="commentsepasseunpaiement">Comment se passe un paiement ?</h6>
<p>Il faut rappeler ce qu&apos;il se passe lors d&apos;un paiement pour bien comprendre la nuance entre d&#xE9;bit et cr&#xE9;dit.</p>
<p>En France, lorsque vous effectuez un paiement avec votre carte de d&#xE9;bit ou de cr&#xE9;dit, une demande d&apos;autorisation (<a href="http://www.paymon.fr/2014/04/12/lautorisation/">pas syst&#xE9;matique</a>) est envoy&#xE9;e &#xE0; votre banque, non pas pour d&#xE9;biter votre compte instantan&#xE9;ment, mais pour v&#xE9;rifier le plafond d&apos;utilisation de votre carte.</p>
<p>Il existe bien entendu des exceptions : certaines banques (La Banque Postale, ING) contr&#xF4;lent le solde lors d&apos;un paiement avec une carte de d&#xE9;bit, mais &#xE7;a n&apos;est g&#xE9;n&#xE9;ralement pas le cas.<br>
D&apos;autre part, les cartes Visa &#xC9;lectron et Mastercard Maestro sont effectuent d&#xE9;bit sur le compte imm&#xE9;diat.<br>
Certains cartes marqu&#xE9;es &quot;<a href="https://particuliers.banque-france.fr/mes-moyens-de-paiement/offre-specifique-la-clientele-fragile">client&#xE8;le fragile</a>&quot; peuvent n&#xE9;cessiter un s&#xE9;questre pour emp&#xEA;cher de d&#xE9;penser plus que le solde du compte.<br>
Pour le reste, le d&#xE9;bit le compte survient le lendemain de la <a href="http://www.paymon.fr/2015/04/30/compensation-et-reglement/">compensation</a>.</p>
<h6 id="danslesautrespays">Dans les autres pays</h6>
<p>Dans d&apos;autres pays, le fait de ne pas d&#xE9;biter au moment du paiement ferait rentrer nos &quot;cartes de d&#xE9;bit&quot; dans la cat&#xE9;gorie &quot;cartes de cr&#xE9;dit&quot;.<br>
En effet, aux &#xC9;tats-Unis par exemple, la carte de cr&#xE9;dit permet d&apos;accumuler les d&#xE9;penses du mois et fait office de programme de fid&#xE9;lit&#xE9;. Le client peut alors choisir de tout r&#xE9;gler, ou d&apos;&#xE9;taler les paiements selon les r&#xE8;gles &#xE9;tablies par sa banque - une sorte de cr&#xE9;dit consommation r&#xE9;current.<br>
En France, cela existe mais est peu r&#xE9;pandu, nous avons par exemple la <a href="https://www.cartezero.fr/credit-renouvelable/">Carte Z&#xE9;ro</a>.</p>
<h6 id="dbitoucrdit">D&#xE9;bit ou Cr&#xE9;dit ?</h6>
<p>En France, nous l&apos;avons dit, nous ne faisons que v&#xE9;rifier le plafond de la carte lors d&apos;un paiement. Alors, quelles diff&#xE9;rences fondamentales entre d&#xE9;bit et cr&#xE9;dit ?</p>
<p><em>Carte de d&#xE9;bit</em></p>
<p>C&apos;est la plus courante. Elle n&apos;a pas de plafond, et lors d&apos;un paiement, les fonds relatifs &#xE0; l&apos;autorisation sont d&#xE9;bit&#xE9;s du compte imm&#xE9;diatement. La majorit&#xE9; des banques n&apos;affiche pas l&apos;&#xE9;tat de la transaction avant compensation.<br>
Elle th&#xE9;oriquement une expiration de compensation &#xE0; 7 jours, d&#xE9;lai apr&#xE8;s lequel la banque peut refuser la compensation. Dans les faits, les banques ne refusent que si la carte a &#xE9;t&#xE9; mise en opposition.</p>
<p>Diverses variantes sont possibles, donnons quelques exemples :</p>
<ul>
<li>avec autorisation syst&#xE9;matique et contr&#xF4;le du solde : Visa &#xC9;lectron, Mastercard Maestro, Orange Cash. Pour ces cartes, si l&apos;autorisation &#xE9;choue, le paiement sera refus&#xE9;.</li>
<li>avec autorisation syst&#xE9;matique et sans contr&#xF4;le du solde : N26. Si l&apos;autorisation &#xE9;choue, il sera parfois (selon la banque) possible de payer malgr&#xE9; tout.</li>
<li>sans autorisation syst&#xE9;matique - dans ce cas, l&apos;autorisation est demand&#xE9;e selon des param&#xE8;tres variables, d&#xE9;pendant &#xE0; la fois de votre banque et du contrat mon&#xE9;tique du commer&#xE7;ant : Boursorama.</li>
</ul>
<p><em>Carte de cr&#xE9;dit</em></p>
<p>Cette carte a en plafond un certain montant autoris&#xE9; par l&apos;organisme de cr&#xE9;dit.<br>
Le client ne doit payer que les sommes confirm&#xE9;es par le commer&#xE7;ant, les autres sont affich&#xE9;es, touchent le solde mais ne sont pas &#xE0; payer et ne sont pas prises en compte dans le calcul des int&#xE9;r&#xEA;ts.<br>
Son autorisation est valide durant 45 jours, durant ce d&#xE9;lai, le commer&#xE7;ant peut d&#xE9;biter quand il le souhaite.</p>
<p>Si le client ne rembourse pas son cr&#xE9;dit, il peut alors &#xEA;tre fich&#xE9; au FICP (Fichier National des Incidents de remboursement des Cr&#xE9;dits aux Particuliers).</p>
<h6 id="etlescartesdbitdiffr">Et les cartes &#xE0; d&#xE9;bit diff&#xE9;r&#xE9; ?</h6>
<p>Elles sont marqu&#xE9;es &quot;CR&#xC9;DIT&quot;, et ont le m&#xEA;me fonctionnement qu&apos;une carte de cr&#xE9;dit du point de vue du commer&#xE7;ant. Pour le porteur de la carte par contre, cela simplifie le quotidien car il ne s&apos;expose pas aux risques du cr&#xE9;dit : il doit tout rembourser &#xE0; la fin du mois.</p>
<h6 id="pourquoilesloueursdevoitureprfrentilslescartesdecrdit">Pourquoi les loueurs de voiture pr&#xE9;f&#xE8;rent-ils les cartes de cr&#xE9;dit ?</h6>
<p>Un dernier point important : vous avez peut-&#xEA;tre d&#xE9;j&#xE0; &#xE9;t&#xE9; confront&#xE9; &#xE0; un loueur qui refuse une carte avec la mention &quot;d&#xE9;bit&quot;. Voici donc quelques explications &#xE0; ce sujet :</p>
<ul>
<li>Avec une carte de cr&#xE9;dit, le loueur ne bloque pas de grosse somme sur le compte du client. Dans le cas d&apos;une carte de d&#xE9;bit, s&apos;il ne fait pas de compensation (typiquement : une garantie qui n&apos;est pas utilis&#xE9;e), alors le plafond du client n&apos;est pas r&#xE9;gularis&#xE9; et son plafond restera amput&#xE9; pendant parfois plusieurs semaines. Il sera r&#xE9;initialis&#xE9; selon les r&#xE8;gles de la banque (7, 15 ou 30 jours).</li>
<li>Le loueur &#xE9;vite des refus de paiement si le client n&apos;a pas 2000&#x20AC; sur son compte (dans le cas des cartes avec v&#xE9;rification du solde).</li>
<li>Il a l&apos;assurance de pouvoir d&#xE9;biter tout ou partie de la somme m&#xEA;me apr&#xE8;s 2 semaines de location, car une carte de cr&#xE9;dit conserve l&apos;autorisation pendant 45 jours.</li>
<li>L&apos;acceptation est facilit&#xE9;e car les limites de cr&#xE9;dits sont bien souvent sup&#xE9;rieures au solde du compte d&apos;un client.</li>
</ul>
<p><em>Cet article sera modifi&#xE9; et compl&#xE9;t&#xE9; &#xE0; l&apos;avenir avec ma perception du sujet. Je n&apos;ai pas pour ambition de remplacer les <a href="https://www.qwant.com/?q=carte%20de%20cr%C3%A9dit%20d%C3%A9bit%20diff%C3%A9rence&amp;t=all">nombreux articles</a> d&#xE9;j&#xE0; disponibles sur internet &#xE0; ce sujet.</em></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Facebook change enfin la licence de React]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Je discutais il y a quelques jours avec un ami qui me racontait comment Facebook avait choisi une licence pour son logiciel React qui faisait beaucoup pol&#xE9;mique. J&apos;&#xE9;tais surpris qu&apos;il en parle comme quelque chose de r&#xE9;cent alors que le choix</p>]]></description><link>https://blog.vnmis.net/facebook-change-enfin-la-licence-de-react/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5bc</guid><dc:creator><![CDATA[Erwan]]></dc:creator><pubDate>Sat, 23 Sep 2017 09:26:26 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Je discutais il y a quelques jours avec un ami qui me racontait comment Facebook avait choisi une licence pour son logiciel React qui faisait beaucoup pol&#xE9;mique. J&apos;&#xE9;tais surpris qu&apos;il en parle comme quelque chose de r&#xE9;cent alors que le choix date d&apos;il y a longtemps, je me suis dit que quelque chose avait d&#xFB; se passer ces derniers mois. Or ce matin, Facebook a fait l&apos;annonce monumentale de changement de licence et j&apos;ai pu d&#xE9;couvrir ce qui s&apos;&#xE9;tait pass&#xE9; ces derniers mois. Je vais vous parler des r&#xE9;centes p&#xE9;rip&#xE9;ties mais avant je vais pr&#xE9;senter le sujet un peu pour ceux qui ne s&apos;y connaissent pas trop (attention je ne pr&#xE9;tends pas non plus &#xEA;tre un expert sur le sujet).</p>
<h3 id="lapolmiqueinitiale">La pol&#xE9;mique initiale</h3>
<h4 id="pourquoiunelicenceopensource">Pourquoi une licence open source ?</h4>
<p>Pour ceux qui ne connaissent pas trop toutes ces histoires de licences open source, une petite explication. D&#xE9;j&#xE0; il faut en g&#xE9;n&#xE9;ral diff&#xE9;rencier logiciel open source (on a un droit d&apos;acc&#xE8;s au code source) et le logiciel libre (on a beaucoup plus de libert&#xE9;s pour r&#xE9;-utiliser le code). Le premier est d&#xE9;j&#xE0; important pour pouvoir &#xEA;tre s&#xFB;r qu&apos;on ex&#xE9;cute pas de code malicieux, pour comprendre ce que fait le code exactement. Cependant le logiciel libre est plus int&#xE9;ressant, il permet une r&#xE9;utilisation de code plus libre, ce qui permet de cr&#xE9;er de v&#xE9;ritables pyramides de logiciel libre o&#xF9; chaque logiciel est compos&#xE9; d&apos;autres logiciels libres, c&apos;est une v&#xE9;ritable force. Dans cet article je ferai l&apos;almalgame entre licence open source et licence libre, pour ceux qui voudraient se renseigner plus sur la diff&#xE9;rence voici d&#xE9;j&#xE0; <a href="https://www.gnu.org/philosophy/free-software-for-freedom.fr.html">un article dessus</a>.</p>
<p>Les licences open source les plus utilis&#xE9;es sont les licences Apache, MIT et BSD. Vous pouvez trouver <a href="https://opensource.org/licenses">une liste plus compl&#xE8;te ici</a>.</p>
<h4 id="questcequereact">Qu&apos;est-ce que React ?</h4>
<p>React est une librairie logicielle dans le langage Javascript &#xE9;dit&#xE9;e par Facebook. C&apos;est ce qu&apos;on appelle une librairie Front-End c&apos;est &#xE0; dire qui sert &#xE0; coder les effets visuels qui seront vus par les utilisateurs, en g&#xE9;n&#xE9;ral sur les sites web. Facebook utilise React pour ses propres produits et la librairie a &#xE9;t&#xE9; tr&#xE8;s bien re&#xE7;ue par la communaut&#xE9; internationale de d&#xE9;veloppeurs, de nombreux autres produits s&apos;en servent &#xE0; pr&#xE9;sent.</p>
<h4 id="lalicencedereact">La licence de React</h4>
<p>Une des plus grandes critiques sur React a &#xE9;t&#xE9; la licence utilis&#xE9;e. &#xC0; sa sortie en 2013 React utilisait une licence Apache. Cependant en 2014 ils ont chang&#xE9; et ont pris une licence BSD avec un ajout, c&apos;est cet ajout qui est controvers&#xE9;. L&apos;ajout dit que si l&apos;utilisateur de la licence fait un proc&#xE8;s pour des brevets &#xE0; Facebook il perd le droit d&apos;utiliser React, et dois donc changer les parties de son logiciel qui utilise React. Pour Facebook c&apos;est une bonne m&#xE9;thode pour se prot&#xE9;ger de nombreux proc&#xE8;s, il y en a beaucoup autour des brevets dans le monde du logiciel. On appelle souvent cette licence comme &#xE9;tant la licence BSD + Patents, je parlerai ici de licence Facebook.</p>
<p>Sur HackerNews (site qui recense des liens avec discussions) il y a eu de <a href="https://hn.algolia.com/?query=React%20license&amp;sort=byPopularity&amp;prefix&amp;page=0&amp;dateRange=custom&amp;type=story&amp;dateStart=1356998400&amp;dateEnd=1483315200">nombreuses discussions</a> au cours des ann&#xE9;es pr&#xE9;c&#xE9;dentes sur la licence de React.</p>
<h3 id="lesrcentespripties">Les r&#xE9;centes p&#xE9;rip&#xE9;ties</h3>
<p>Le 20 avril 2017 a d&#xE9;but&#xE9; un <a href="https://issues.apache.org/jira/browse/LEGAL-303">fil de discussion</a> &#xE0; la fondation Apache (qui, entre autres, <a href="https://projects.apache.org/">g&#xE8;re de nombreux projets open source</a>) concernant l&apos;utilisation de la licence Facebook. <a href="https://issues.apache.org/jira/browse/LEGAL-303?focusedCommentId=16052957">Mi-juin</a> la fondation Apache a d&#xE9;cid&#xE9; de rajouter la licence de Facebook dans ce qu&apos;ils appellent leur <a href="https://www.apache.org/legal/resolved#category-x">cat&#xE9;gorie X</a> (licences incompatibles avec la leur) et <a href="https://issues.apache.org/jira/browse/LEGAL-303?focusedCommentId=16088663">Mi-juillet</a> ils ont annonc&#xE9; publiquement aux g&#xE9;rants de leur 310+ projets les cons&#xE9;quences. Ces cons&#xE9;quences &#xE9;tant que plus aucun nouveau projet Apache ne peut utiliser de code sous la licence Facebook, tout projet existant avait jusqu&apos;au 31 ao&#xFB;t pour se d&#xE9;barrasser de tout code sous la licence Facebook. Cette d&#xE9;cision est assez majeure car tout projet open source est en g&#xE9;n&#xE9;ral construit sur une pyramide de projets open source, si l&apos;on retire un bloc tout peut s&apos;&#xE9;crouler.</p>
<p>Le 18 ao&#xFB;t <a href="https://code.facebook.com/posts/112130496157735/explaining-react-s-license/">Facebook a annonc&#xE9;</a> que la d&#xE9;cision de la fondation Apache &#xE9;tait bien dommage mais qu&apos;ils n&apos;allaient pas changer leur licence pour autant. Cette licence continuait de repr&#xE9;senter leur volont&#xE9; de faire de l&apos;open source tout en se prot&#xE9;geant pr&#xE9;ventivement de potentiels co&#xFB;teux proc&#xE8;s.</p>
<p>Le 14 septembre <a href="https://ma.tt/2017/09/on-react-and-wordpress/">Wordpress a annonc&#xE9;</a> qu&apos;ils allaient arr&#xEA;ter d&apos;utiliser React, devant les cons&#xE9;quences ambigu&#xEB;s de l&apos;utilisation de la licence Facebook ils ne se sentaient pas &#xE0; l&apos;aise de l&apos;imposer &#xE0; leurs utilisateurs. Wordpress &#xE9;tant utilis&#xE9; sur plus de 25% des top 10 millions des sites web au monde (<a href="https://w3techs.com/technologies/overview/content_management/all">cf. w3techs</a>) ceci signifie qu&apos;au minimum React n&apos;allait plus &#xEA;tre utilis&#xE9; par 2.5 millions de sites web. C&apos;est aussi un signal fort pour le reste du monde open source de suivre l&apos;exemple de Wordpress et Apache.</p>
<p>Et on arrive enfin &#xE0; aujourd&apos;hui, le 23 septembre (ou 22 au soir pour eux j&apos;imagine) <a href="https://code.facebook.com/posts/300798627056246">o&#xF9; Facebook a annonc&#xE9;</a> qu&apos;ils passaient React et d&apos;autres projets sous licence MIT, licence open source sans ambigu&#xEF;t&#xE9;.</p>
<p>Je ne peux que f&#xE9;liciter Facebook pour leur choix, c&apos;est assez peu souvent qu&apos;une des m&#xE9;ga-corporations informatique laisse de c&#xF4;t&#xE9; son int&#xE9;r&#xEA;t court terme pour embrasser l&apos;int&#xE9;r&#xEA;t de la communaut&#xE9; open source (dont ils tireront des int&#xE9;r&#xEA;ts long terme). Et c&apos;est toujours assez courageux de revenir sur une d&#xE9;cision, surtout quand on est pas convaincu qu&apos;elle soit mauvaise.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Petite analyse des scrutins de l’assemblée nationale]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>En ce jour de premier tour d&#x2019;&#xE9;lections l&#xE9;gislatives il me para&#xEE;t &#xE0; propos de sortir mes analyses des scrutins de l&#x2019;assembl&#xE9;e nationale. Sur le site l&#x2019;assembl&#xE9;e il est possible de t&#xE9;l&#xE9;charger</p>]]></description><link>https://blog.vnmis.net/petite-analyse-des-scrutins-de-lassemblee-nationale/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5ba</guid><dc:creator><![CDATA[Erwan]]></dc:creator><pubDate>Sun, 11 Jun 2017 18:39:34 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>En ce jour de premier tour d&#x2019;&#xE9;lections l&#xE9;gislatives il me para&#xEE;t &#xE0; propos de sortir mes analyses des scrutins de l&#x2019;assembl&#xE9;e nationale. Sur le site l&#x2019;assembl&#xE9;e il est possible de t&#xE9;l&#xE9;charger tous les scrutins publics depuis juillet 2012 &#xE0; f&#xE9;vrier 2017 (cf <a href="http://www2.assemblee-nationale.fr/scrutins/liste/(legislature)/14">http://www2.assemblee-nationale.fr/scrutins/liste/(legislature)/14</a>). Seul les scrutins depuis avril 2014 d&#xE9;taillent les votes de chaque membre de l&#x2019;assembl&#xE9;e, les scrutins publics ordinaires pr&#xE9;c&#xE9;dents ne pr&#xE9;sentent principalement que les positions des groupes parlementaires et pas syst&#xE9;matiquement le vote de chaque d&#xE9;put&#xE9;.</p>
<p>Je n&#x2019;avais pas d&#x2019;objectif pr&#xE9;cis en r&#xE9;cup&#xE9;rant les donn&#xE9;es, je me suis juste dit qu&#x2019;en traitant un peu il devait avoir des choses int&#xE9;ressantes &#xE0; trouver. Si vous voulez, vous pouvez r&#xE9;cup&#xE9;rer mon <a href="https://github.com/vnmis/assemblee-nationale/blob/master/analyse_assemblee_nationale.ipynb">jupyter notebook (avec python 3)</a> pour obtenir toute ma m&#xE9;thodologie.</p>
<h4 id="rpartitiondesscrutinsdansletemps">R&#xE9;partition des scrutins dans le temps</h4>
<p>En tout j&#x2019;ai r&#xE9;cup&#xE9;r&#xE9; 1380 scrutins. Voyons comment ils sont r&#xE9;partis dans le temps. J&#x2019;ai voulu diff&#xE9;rencier les scrutins qui ont r&#xE9;ussis de ceux qui ont &#xE9;chou&#xE9;s. L&#x2019;id&#xE9;al aurait &#xE9;t&#xE9; de faire un histogramme avec les deux types de scrutins empil&#xE9;s mais j&#x2019;ai rencontr&#xE9; quelques difficult&#xE9;s (stacking + dates = probl&#xE8;mes), j&#x2019;ai donc superpos&#xE9; deux histogrammes :</p>
<p><img src="https://blog.vnmis.net/content/images/2017/06/nb_scrutins-1.png" alt="Histogramme du nombre de scrutins au cours du temps" loading="lazy"></p>
<p>Il est int&#xE9;ressant de noter que presque de la moiti&#xE9; des scrutins des 5 derni&#xE8;res ann&#xE9;es ont &#xE9;t&#xE9; propos&#xE9; en 2013. Est-ce que le gouvernement a voulu montrer un maximum d&#x2019;activit&#xE9; en d&#xE9;pit de l&#x2019;opposition avant de se calmer ? En tout cas pour la derni&#xE8;res ann&#xE9;es de mandat il y a eu beaucoup moins de scrutins mais le ratio de scrutins pass&#xE9;s avec succ&#xE8;s a beaucoup augment&#xE9;.</p>
<h4 id="rpartitiondesscrutinsparnombredevotants">R&#xE9;partition des scrutins par nombre de votants</h4>
<p>Il est aussi int&#xE9;ressant de regarder &#xE0; quel point les scrutins sont vot&#xE9;s par la totalit&#xE9; des d&#xE9;put&#xE9;s et &#xE0; quel point ils sont vot&#xE9;s par des minorit&#xE9;s. J&#x2019;ai fait un histogramme d&#xE9;taillant cela et puisqu&#x2019;il n&#x2019;y a pas de dates cette fois l&#x2019;empilement a bien fonctionn&#xE9; :</p>
<p><img src="https://blog.vnmis.net/content/images/2017/06/nb_scrutins_votants-1.png" alt="Histogramme du nombre de scrutins par rapport au nombre de votants" loading="lazy"></p>
<p>Je trouve curieux que finalement l&#x2019;&#xE9;crasante majorit&#xE9; des scrutins se fait avec moins de 100 votants. Autre point d&#x2019;int&#xE9;r&#xEA;t : au dessus de 400 votants presque tous les scrutins ont r&#xE9;ussis, cela semble signifier que parmi les combats l&#xE9;gislatifs qui n&#xE9;cessitent une forte mobilisation seuls ceux qui sont presque s&#xFB;r de gagner (s&#xFB;rement en mobilisant toute la majorit&#xE9; du gouvernement) sont engag&#xE9;.</p>
<h4 id="observationssurlesgroupesparlementaires">Observations sur les groupes parlementaires :</h4>
<p>N&#x2019;ayant pas les votes sp&#xE9;cifiques &#xE0; chaque d&#xE9;put&#xE9; avant 2014 car ce sont les groupes parlementaires qui sont mis en valeur, je me suis int&#xE9;ress&#xE9; &#xE0; ces groupes parlementaires. Pour chaque scrutin on a la liste des groupes qui ont particip&#xE9; ainsi que le nombre de d&#xE9;put&#xE9;s composant les groupes. J&#x2019;ai voulu suivre ce nombre de d&#xE9;put&#xE9;s par groupes au cours du temps :</p>
<p><img src="https://blog.vnmis.net/content/images/2017/06/groupes-1.png" alt="Graphe du nombre de d&#xE9;put&#xE9;s par groupe parlementaire" loading="lazy"></p>
<p>On remarque les effets suivants :</p>
<ul>
<li>
<p>On a de temps en temps des d&#xE9;fections comme le 2012-09-25 o&#xF9; un membre du groupe UMP a rejoint le groupe UDI.</p>
</li>
<li>
<p>On a la cr&#xE9;ation temporaire d&apos;un groupe du 2012-11-28 au 2013-01-15 o&#xF9; le groupe UMP perds environ 70 membres au groupe Rassemblement-UMP. C&apos;est un groupe dissident men&#xE9; par Fillon suite &#xE0; une contestation de l&apos;&#xE9;lection du pr&#xE9;sident de l&apos;UMP cf <a href="https://fr.wikipedia.org/wiki/Union_pour_un_mouvement_populaire#2012-2014_:_succession_de_crises_internes">wikipedia</a></p>
</li>
<li>
<p>On a quelques scrutins o&#xF9; des groupes entiers ne votent pas comme celui du 2013-03-20 o&#xF9; le groupe du gouvernement et les &#xE9;cologistes n&apos;ont pas vot&#xE9;. En m&#xEA;me temps c&apos;&#xE9;tait une motion de censure 49.2 (il n&apos;y a pas que le 49.3) contre le gouvernement et on apprend que &quot;La principale innovation de l&apos;article 49.2 de la Constitution r&#xE9;side dans le mode d&apos;adoption de la motion. Seuls sont recens&#xE9;s les votes qui la soutiennent ; c&apos;est-&#xE0;-dire que seuls les d&#xE9;put&#xE9;s favorables &#xE0; la censure participent au scrutin, qui a lieu &#xE0; la tribune.&quot; cf <a href="https://www.senat.fr/ga/ga-27/ga-273.html">https://www.senat.fr/ga/ga-27/ga-273.html</a></p>
</li>
<li>
<p>On voit le renommage de groupe comme le 2015-06-02 o&#xF9; l&apos;UMP est devenu Les R&#xE9;publicains</p>
</li>
<li>
<p>On a aussi la fusion de groupes comme le 2016-05-26 o&#xF9; le groupe du gouvernement (Groupe socialiste, r&#xE9;publicain et citoyen) a fusionn&#xE9; avec les &#xE9;cologistes pour former le Groupe socialiste, &#xE9;cologiste et r&#xE9;publicain</p>
</li>
</ul>
<h4 id="top10desscrutins">TOP 10 des scrutins</h4>
<p>J&#x2019;ai aussi voulu &#xE9;tudier certains scrutins sp&#xE9;cifiquement. J&#x2019;ai r&#xE9;cup&#xE9;r&#xE9; le top dix des scrutins qui ont eu le plus de votes pour et j&#x2019;ai fait de m&#xEA;me un top dix pour les votes contres.</p>
<pre><code>TOP 10 des scrutins pour :
2015-11-19 =&gt; votes: 558 (551 pour, 6 contre)
Scrutin public sur l&apos;ensemble du projet de loi prorogeant l&apos;application de la loi n&#xB0; 55-385 du 3 avril 1955 relative &#xE0; l&apos;&#xE9;tat d&apos;urgence et renfor&#xE7;ant l&apos;efficacit&#xE9; de ses dispositions (premi&#xE8;re lecture).

2015-11-25 =&gt; votes: 529 (515 pour, 4 contre)
Scrutin public sur l&apos;autorisation de la prolongation de l&apos;engagement des forces a&#xE9;riennes au-dessus du territoire syrien, en application de l&apos;article 35, alin&#xE9;a 3, de la Constitution.

2016-10-18 =&gt; votes: 527 (511 pour, 1 contre)
Scrutin public sur le projet de loi de modernisation, de d&#xE9;veloppement et de protection des territoires de montagne (premi&#xE8;re lecture).

2012-10-10 =&gt; votes: 542 (490 pour, 34 contre)
Scrutin public sur sur l&apos;ensemble du projet de loi organique relatif &#xE0; la programmation et &#xE0; la gouvernance des finances publiques.

2016-07-19 =&gt; votes: 519 (489 pour, 26 contre)
Scrutin public sur l&apos;ensemble du projet de loi prorogeant l&apos;application de la loi n&#xB0; 55-385 du 3 avril 1955 relative &#xE0; l&apos;&#xE9;tat d&apos;urgence (premi&#xE8;re lecture)

2015-01-13 =&gt; votes: 502 (488 pour, 1 contre)
Scrutin public sur la D&#xE9;claration du Gouvernement, en application de l&apos;article 35, alin&#xE9;a 3, de la Constitution, sur l&apos;autorisation de la prolongation de l&apos;intervention des forces arm&#xE9;es en Irak.

2012-10-09 =&gt; votes: 568 (477 pour, 70 contre)
Scrutin public sur l&apos;ensemble du projet de loi autorisant la ratification du trait&#xE9; sur la stabilit&#xE9;, la coordination et la gouvernance au sein de l&apos;Union &#xE9;conomique et mon&#xE9;taire (1re lecture).

2016-03-08 =&gt; votes: 538 (474 pour, 32 contre)
Scrutin public sur l&apos;ensemble du projet de loi renfor&#xE7;ant la lutte contre le crime organis&#xE9;, le terrorisme et leur financement, et am&#xE9;liorant l&apos;efficacit&#xE9; et les garanties de la proc&#xE9;dure p&#xE9;nale (premi&#xE8;re lecture).

2013-02-26 =&gt; votes: 469 (461 pour, 0 contre)
Scrutin public sur l&apos;ensemble de la proposition de loi relative au contr&#xF4;le des normes applicables aux collectivit&#xE9;s territoriales et &#xE0; la simplification de leur fonctionnement. 

2015-05-05 =&gt; votes: 566 (438 pour, 86 contre)
Scrutin public sur l&apos;ensemble du projet de loi relatif au renseignement (premi&#xE8;re lecture)
</code></pre>
<p>On a 6 loi dans le top 10 qui concernent la s&#xE9;curit&#xE9;, le renseignement, les arm&#xE9;es et l&apos;&#xE9;tat d&apos;urgence. C&apos;est int&#xE9;ressant de voir quel genre de lois auxquels nos d&#xE9;put&#xE9;s votent le plus.</p>
<pre><code>TOP 10 des scrutins contre :
2012-11-13 =&gt; votes: 524 (207 pour, 317 contre)
Scrutin public sur la demande de constitution d&apos;une commission sp&#xE9;ciale pr&#xE9;sent&#xE9;e par le pr&#xE9;sident du groupe de l&apos;Union pour un mouvement populaire pour l&apos;examen du projet de loi ouvrant le mariage aux couples de personnes de m&#xEA;me sexe.

2013-01-30 =&gt; votes: 483 (184 pour, 298 contre)
Scrutin public sur la motion r&#xE9;f&#xE9;rendaire, pr&#xE9;sent&#xE9;e par M. Christian Jacob, du projet de loi ouvrant le mariage aux couples de personnes de m&#xEA;me sexe.

2016-06-21 =&gt; votes: 529 (227 pour, 291 contre)
Scrutin public sur l&apos;ensemble de la proposition de loi constitutionnelle visant &#xE0; rendre constitutionnel le principe d&apos;indisponibilit&#xE9; du corps humain (premi&#xE8;re lecture).

2013-02-03 =&gt; votes: 309 (18 pour, 279 contre)
Scrutin public sur l&apos;amendement n&#xB0; 2157 de M.Sergio Coronado avant l&apos;article 1er bis du projet de loi portant ouverture du mariage aux couples de personnes de m&#xEA;me sexe (PMA et filiation de la conjointe).

2013-01-29 =&gt; votes: 442 (169 pour, 272 contre)
Scrutin public sur la motion de rejet pr&#xE9;alable, pr&#xE9;sent&#xE9;e par M. Christian Jacob, du projet de loi ouvrant le mariage aux couples de personnes de m&#xEA;me sexe.

2016-06-21 =&gt; votes: 532 (241 pour, 262 contre)
Scrutin public sur l&apos;ensemble de la proposition de loi visant &#xE0; lutter contre le recours &#xE0; une m&#xE8;re porteuse (premi&#xE8;re lecture).

2014-11-25 =&gt; votes: 563 (277 pour, 253 contre)
Scrutin public sur l&apos;ensemble du projet de loi relatif &#xE0; la d&#xE9;limitation des r&#xE9;gions, aux &#xE9;lections r&#xE9;gionales et d&#xE9;partementales et modifiant le calendrier &#xE9;lectoral (deuxi&#xE8;me lecture).

2014-12-02 =&gt; votes: 466 (191 pour, 252 contre)
Scrutin public sur la proposition de loi modifiant le d&#xE9;lai de prescription de l&apos;action publique des agressions sexuelles. 

2013-12-03 =&gt; votes: 550 (292 pour, 251 contre)
Scrutin public sur le projet de loi relatif &#xE0; la programmation militaire pour les ann&#xE9;es 2014 &#xE0; 2019 et portant diverses dispositions concernant la d&#xE9;fense et la s&#xE9;curit&#xE9; nationale.

2013-01-29 =&gt; votes: 407 (155 pour, 251 contre)
Scrutin public sur la motion de renvoi en commission, pr&#xE9;sent&#xE9;e par M. Christian Jacob, du projet de loi ouvrant le mariage aux couples de personnes de m&#xEA;me sexe.
</code></pre>
<p>Dans le TOP 10 des contre on a 5 lois sur les droits des homosexuels (&#xE0; la fois des lois pro-LGBT et des lois anti-LGBT) et de fa&#xE7;on g&#xE9;n&#xE9;rale on pourrait dire que 9 sur le TOP 10 sont des lois sur les moeurs : voici les lois qui suscitent le plus d&#x2019;opposition dans l&#x2019;assembl&#xE9;e.</p>
<p>Et pour finir le TOP 10 des lois en nombre de votants :</p>
<pre><code>2014-04-08 =&gt; votes: 571 (306 pour, 239 contre)
Scrutin public sur la d&#xE9;claration de politique g&#xE9;n&#xE9;rale du Gouvernement de M. Manuel Valls (en application de l&apos;article 49, alin&#xE9;a premier, de la Constitution).

2014-11-18 =&gt; votes: 569 (266 pour, 247 contre)
Scrutin public sur l&apos;ensemble du projet de loi de finances pour 2015 (1&#xE8;re lecture).

2013-02-12 =&gt; votes: 568 (329 pour, 229 contre)
Scrutin public sur l&apos;ensemble du projet de loi ouvrant le mariage aux couples de personnes de m&#xEA;me sexe.

2013-11-19 =&gt; votes: 568 (320 pour, 242 contre)
Scrutin public sur l&apos;ensemble du projet de loi de finances pour 2014.

2012-10-09 =&gt; votes: 568 (477 pour, 70 contre)
Scrutin public sur l&apos;ensemble du projet de loi autorisant la ratification du trait&#xE9; sur la stabilit&#xE9;, la coordination et la gouvernance au sein de l&apos;Union &#xE9;conomique et mon&#xE9;taire (1re lecture).

2013-10-15 =&gt; votes: 568 (270 pour, 249 contre)
Scrutin public sur l&apos;ensemble du projet de loi garantissant l&apos;avenir et la justice du syst&#xE8;me de retraites.

2013-10-29 =&gt; votes: 568 (320 pour, 243 contre)
Scrutin public sur l&apos;ensemble du projet de loi de financement de la s&#xE9;curit&#xE9; sociale pour 2014.

2013-11-05 =&gt; votes: 567 (336 pour, 203 contre)
Scrutin public sur le projet de loi organique relatif au procureur de la R&#xE9;publique financier (lecture d&#xE9;finitive).

2014-10-21 =&gt; votes: 567 (266 pour, 245 contre)
Scrutin public sur le projet de loi de finances pour 2015 (premi&#xE8;re partie)

2016-02-10 =&gt; votes: 567 (317 pour, 199 contre)
Scrutin public sur l&apos;ensemble du projet de loi constitutionnelle de protection de la Nation (premi&#xE8;re lecture).
</code></pre>
<p>Je n&#x2019;ai pas vraiment d&#x2019;analyse pour ce TOP 10 mais je me suis dit que &#xE7;a pourrait int&#xE9;resser certains quand m&#xEA;me.</p>
<h4 id="motdelafin">Mot de la fin</h4>
<p>Je n&#x2019;ai que tr&#xE8;s peu de culture politique (c&#x2019;est sans doute visible dans certaines de mes analyses), je suis tr&#xE8;s content de m&#x2019;&#xEA;tre fix&#xE9; ce petit projet qui me permet de me familiariser d&#x2019;avantages avec notre d&#xE9;mocratie. J&#x2019;essaierai de faire un autre article avant le second tour en me basant sur les donn&#xE9;es post-2014 pour analyser le d&#xE9;tail des votes d&#xE9;put&#xE9; par d&#xE9;put&#xE9;.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Comparaison de cartes bancaires de voyage : Revolut, N26 et Carte Zéro]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Je constate autour de moi que encore beaucoup de gens payent &#xE9;norm&#xE9;ment de frais lors des voyages &#xE0; l&apos;&#xE9;tranger : certains font du change avant de partir, d&apos;autres retirent sur place avec leur carte bancaire traditionnelle, et tout cela entra&#xEE;ne g&</p>]]></description><link>https://blog.vnmis.net/comparaison-revolut-n26-et-carte-zero/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5b9</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Mon, 01 May 2017 16:58:51 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Je constate autour de moi que encore beaucoup de gens payent &#xE9;norm&#xE9;ment de frais lors des voyages &#xE0; l&apos;&#xE9;tranger : certains font du change avant de partir, d&apos;autres retirent sur place avec leur carte bancaire traditionnelle, et tout cela entra&#xEE;ne g&#xE9;n&#xE9;ralement plusieurs euros de frais. Hors il est possible de s&apos;en sortir sans ne rien payer du tout !</p>
<p>Je vais vous pr&#xE9;senter trois cartes bancaires, qui sont toutes &#xE0; autorisation syst&#xE9;matique, cela pour diverses raisons : Revolut car c&apos;est un compte pr&#xE9;pay&#xE9;, N26 pour ses notifications sur mobile en temps r&#xE9;el (mais aussi car le d&#xE9;couvert n&apos;est pas autoris&#xE9;), et Carte Z&#xE9;ro pour ses limites d&apos;encours autoris&#xE9;.</p>
<p>Pour une raison que j&apos;ignore, ces trois cartes sont toutes des Mastercard.</p>
<p>Les tarifications de ces n&#xE9;o-banques - ou plut&#xF4;t services bancaires, puisque seule N26 est r&#xE9;ellement une banque - &#xE9;voluant assez r&#xE9;guli&#xE8;rement, je vous invite &#xE0; v&#xE9;rifier les tarifications exactes et &#xE0; jour et ne pas faire totalement confiance &#xE0; ce que vous lirez ici. Je ne vais &#xE9;galement m&apos;attarder que sur l&apos;usage de ces cartes pour les voyages : si vous souhaitez l&apos;utiliser au quotidien, je vous laisse regarder les nombreux comparatifs que l&apos;on trouve sur internet.</p>
<h5 id="revolut">Revolut</h5>
<p><img src="https://i.imgur.com/zYFB4ww.png" alt="Carte Revolut" loading="lazy"></p>
<p>Revolut est un compte pr&#xE9;pay&#xE9;, auquel on peut souscrire en quelques minutes via son smartphone. Vous pouvez le charger par virement, mais &#xE9;galement par carte bancaire.<br>
Le compte Revolut a la particularit&#xE9; d&apos;&#xEA;tre multi-devises, en offrant la possibilit&#xE9; de basculer la carte de paiement entre euros, dollars am&#xE9;ricains et livres sterling.</p>
<p>Le transfert de fonds d&apos;une devise &#xE0; l&apos;autre se fait sans frais, &#xE0; un taux de change &quot;maison&quot; - contrairement aux deux autres cartes pr&#xE9;sent&#xE9;es ici, qui utilisent le taux Mastercard. Sauf le week-end : les frais peuvent monter &#xE0; quelques pourcents, ceci pour se prot&#xE9;ger des &#xE9;ventuelles fluctuations des march&#xE9;s bancaires (merci <a href="https://twitter.com/lebnett">@lebnett</a> pour l&apos;explication). Cela s&apos;applique dans le cas o&#xF9; vous n&apos;avez pas le montant disponible dans une devise donn&#xE9;e, et qu&apos;une conversion depuis une autre devise est n&#xE9;cessaire.</p>
<p>Les retraits de devises sont gratuits dans la limite de 200&#x20AC; par mois, au del&#xE0; de cette limite s&apos;applique un taux de 2%.</p>
<h5 id="n26">N26</h5>
<p><img src="https://i.imgur.com/POVLZ4c.png" alt="Carte N26" loading="lazy"></p>
<p>N26 est un r&#xE9;el compte bancaire, qui offre tout ce qu&apos;une banque en ligne peut offrir en France aujourd&apos;hui. Orange Bank n&apos;est pas encore sortie, mais d&apos;apr&#xE8;s le peu qui a &#xE9;t&#xE9; d&#xE9;voil&#xE9; dans la presse, ces deux banques se ressembleront fortement sur les services qu&apos;ils vont offrir - Orange Bank faisant mieux, gr&#xE2;ce &#xE0; se pr&#xE9;sence physique avec ses boutiques/agences.</p>
<p>C&#xF4;t&#xE9; tarification, N26 n&apos;a aucun frais pour les paiements en devises. Pour les retraits, le taux est de 1.7% - sauf si vous optez la carte Black, qui elle-m&#xEA;me est payante (5.90&#x20AC;&#xA0;par mois).</p>
<p>Si vous n&apos;utilisez pas assez la carte N26 (&#xE0; savoir : 9 paiements par trimestre), vous serez factur&#xE9;s 2.90&#x20AC; par mois.</p>
<p>Pour y souscrire, il faudra entre autres passer un appel vid&#xE9;o pour faire v&#xE9;rifier son identit&#xE9;, avec vos justificatifs sous la main.</p>
<h5 id="cartezro">Carte Z&#xE9;ro</h5>
<p><img src="https://i.imgur.com/8UvaJVc.png" alt="Carte Z&#xE9;ro" loading="lazy"></p>
<p>La Carte Z&#xE9;ro est une vraie carte de cr&#xE9;dit (malheureusement pas NFC), ce que l&apos;on trouve habituellement plut&#xF4;t aux &#xC9;tats-Unis. En France le plupart des cartes bancaires sont des cartes de d&#xE9;bit (qu&apos;il soit imm&#xE9;diat ou diff&#xE9;r&#xE9;). Pour chaque paiement avec cette Carte Z&#xE9;ro, un cr&#xE9;dit revolving est ouvert, mais vous ne paierez aucun int&#xE9;r&#xEA;t si vous le rembourser avant une date donn&#xE9;e de facturation (de 2 &#xE0; 6 semaines).</p>
<p>Pour les retraits d&apos;esp&#xE8;ces, les int&#xE9;r&#xEA;ts sont par contre syst&#xE9;matiquement calcul&#xE9;s (entre le jour du retrait et le jour du remboursement), mais &#xE0; environ 0,05% de taux journalier, cela est g&#xE9;n&#xE9;ralement toujours plus avantageux que ce que facturent les banques fran&#xE7;aises (environ 2%) pour des retraits hors zone euro - bien entendu sous r&#xE9;serve de rembourser le cr&#xE9;dit le plus t&#xF4;t possible.</p>
<p><em>Pour un calcul plus en d&#xE9;tail : si votre banque classique vous facture 2% sur les retraits de devises, il suffit de rembourser le cr&#xE9;dit avant 40 jours (2 / 0,05) pour obtenir les m&#xEA;mes frais. Hors un cr&#xE9;dit avec la Carte Z&#xE9;ro peut se rembourser au plus t&#xF4;t apr&#xE8;s 5 jours (pour des paiements le 10 du mois), et dans le pire cas apr&#xE8;s 50 jours (pour des paiements juste apr&#xE8;s le 10, et un pr&#xE9;l&#xE8;vement le 31 du mois d&apos;apr&#xE8;s).</em></p>
<p>Pour &#xE9;viter totalement ces frais, vous pouvez anticiper le remboursement du cr&#xE9;dit avec un virement.</p>
<p>De plus, pour faciliter les remboursements, et bien entendu, &#xE9;viter les frais, il est possible de configurer le pr&#xE9;l&#xE8;vement automatique sur votre compte bancaire. Attention toutefois &#xE0; v&#xE9;rifier et valider le montant de ce pr&#xE9;l&#xE8;vement chaque mois, pour ne pas se faire avoir - celui par d&#xE9;faut ne couvrira pas forc&#xE9;ment l&apos;enti&#xE8;ret&#xE9; de vos d&#xE9;penses ! Je vous conseille donc, d&#xE8;s l&apos;&#xE9;dition de votre relev&#xE9; du mois (le 10), de vous connecter &#xE0; votre espace client et de cocher &quot;solde int&#xE9;gral&quot; pour le prochain pr&#xE9;l&#xE8;vement.</p>
<p>Cette carte est pour moi le produit id&#xE9;al, et le meilleur compagnon de voyage !</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[La généralisation de l'autorisation systématique]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Encore un article sur la mon&#xE9;tique ! Cette fois, nous allons aborder le sujet des autorisations syst&#xE9;matiques. Pour all&#xE9;ger l&apos;article, je parlerai de &apos;online&apos;. L&apos;id&#xE9;e est de faire un rapide &#xE9;tat des lieux de l&apos;</p>]]></description><link>https://blog.vnmis.net/la-generalisation-de-lautorisation-systematique/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5b7</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Mon, 17 Apr 2017 11:50:48 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Encore un article sur la mon&#xE9;tique ! Cette fois, nous allons aborder le sujet des autorisations syst&#xE9;matiques. Pour all&#xE9;ger l&apos;article, je parlerai de &apos;online&apos;. L&apos;id&#xE9;e est de faire un rapide &#xE9;tat des lieux de l&apos;utilisation de ce syst&#xE8;me, aujourd&apos;hui, en France, d&apos;y comparer ses avantages et ses inconv&#xE9;nients.</p>
<h6 id="paiementmobile">Paiement mobile</h6>
<p>Aujourd&apos;hui, Paylib, Apple Pay et Orange Cash font tous de l&apos;online. Pour Orange Cash, c&apos;&#xE9;tait in&#xE9;vitable car c&apos;est un compte pr&#xE9;pay&#xE9;, mais pour les deux autres, la question se pose.<br>
Il faut savoir que &#xE7;a n&apos;&#xE9;tait pas le cas avant (en 2013) pour le paiement mobile des banques historiques.<br>
On voit donc une g&#xE9;n&#xE9;ralisation  de l&apos;online sur le mobile, ce qui n&apos;est pas un simple choix marketing : les acteurs du march&#xE9; ont majoritairement (hormis Orange, sans surprise) d&#xE9;cid&#xE9; d&apos;abandonner la SIM, et donc ses certifications, pour le HCE, technologie bien moins m&#xE2;ture et s&#xE9;curis&#xE9;e.</p>
<h6 id="curve">Curve</h6>
<p>Le syst&#xE8;me propos&#xE9; par Curve est tr&#xE8;s s&#xE9;duisant : regrouper toutes ses cartes en une seule. Le paiement sur fait toujours sur la m&#xEA;me carte, et Curve se charge de d&#xE9;biter le compte de votre choix par d&#xE9;bit sur une de vos autres cartes.<br>
<img src="https://i.ytimg.com/vi/6b2MEK-_HIQ/maxresdefault.jpg" alt="Curve" loading="lazy"><br>
La carte Curve ne sait pas dans quelles conditions la carte dont elle est l&apos;image demande, pour tel ou tel paiement, une autorisation. Par d&#xE9;faut donc, cette carte Curve fait de l&apos;online &#xE0; 100%.</p>
<h6 id="notificationsettempsrel">Notifications et temps r&#xE9;el</h6>
<p>N26 est l&apos;acteur majeur aujourd&apos;hui pour ce cas d&apos;usage : &#xEA;tre au courant en temps r&#xE9;el, avec une notification push, de chaque paiement, aussi petit soit-il. Le seul moyen pour une banque d&apos;obtenir cette remont&#xE9;e d&apos;information est encore une fois l&apos;autorisation bancaire. Des banques fran&#xE7;aises proposent ce service, mais il n&apos;est jamais mis en avant, et est au contraire vu comme une contrainte.</p>
<h6 id="danslestransports">Dans les transports</h6>
<p>M&#xEA;me si tous les acteurs ainsi que les utilisateurs souhaitent suivre cette mouvance, on ne peut pas encore s&apos;y fier totalement. Au bar du TGV par exemple, les TPE ne sont jamais connect&#xE9;s (et donc ne peuvent faire fonctionner l&apos;autorisation de paiement). Et m&#xEA;me si les trains (et bateaux) pourraient &#xEA;tre &#xE0; court terme raccord&#xE9;s &#xE0; internet, c&apos;est un peu moins vrai pour les avions.</p>
<h6 id="uneacceptationdifficile">Une acceptation difficile</h6>
<p>La v&#xE9;tust&#xE9; de l&apos;infrastructure bancaire fran&#xE7;aise provoque ce que l&apos;on peut voir aujourd&apos;hui : des temps d&apos;attente pour l&apos;autorisation bancaire de plusieurs secondes - voire, dans certains cas, de quelques minutes !<br>
Vous l&apos;avez peut-&#xEA;tre d&#xE9;j&#xE0; remarqu&#xE9;, cela se mat&#xE9;rialise g&#xE9;n&#xE9;ralement par un message &quot;autorisation en cours&quot; sur le terminal de paiement, ou bien encore &quot;transpac&quot; lorsque le terminal utilise le r&#xE9;seau t&#xE9;l&#xE9;phonique pour envoyer sa demande d&apos;autorisation.<br>
C&#xF4;t&#xE9; commer&#xE7;ant, cette connectivit&#xE9; co&#xFB;te &#xE9;galement, p&#xE9;cuniairement. Dans le d&#xE9;tail, cela d&#xE9;pend du contrat qu&apos;a accept&#xE9; le commer&#xE7;ant avec sa banque. Mais de mani&#xE8;re g&#xE9;n&#xE9;rale, les acteurs bancaires ont la belle vie : si l&apos;on prend par exemple un caf&#xE9; &#xE0; 30 centimes dans une machine Selecta, l&apos;entreprise est factur&#xE9;e 5 centimes par autorisation bancaire. On comprends mieux pourquoi de nombreux commer&#xE7;ants n&apos;acceptent la carte qu&apos;&#xE0; partir d&apos;un montant minimum, m&#xEA;me si la plupart abusent sur ce montant.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Python vs Ruby]]></title><description><![CDATA[<!--kg-card-begin: markdown--><h4 id="somedifferencesbetweenpythonvsruby">Some differences between Python vs Ruby</h4>
<p>I&#x2019;ve been coding in Python for some time now, starting with some professional work in 2011. At first it was in Python 2 but since I didn&#x2019;t have any legacy code to maintain I quickly switched to Python 3, coding</p>]]></description><link>https://blog.vnmis.net/python-vs-ruby/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5b6</guid><dc:creator><![CDATA[Erwan]]></dc:creator><pubDate>Thu, 06 Apr 2017 19:28:33 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h4 id="somedifferencesbetweenpythonvsruby">Some differences between Python vs Ruby</h4>
<p>I&#x2019;ve been coding in Python for some time now, starting with some professional work in 2011. At first it was in Python 2 but since I didn&#x2019;t have any legacy code to maintain I quickly switched to Python 3, coding only in Python 2 when I needed a library that hadn&#x2019;t switched yet.</p>
<p>I learned Python initially through a tutorial on <a href="https://openclassrooms.com/">https://openclassrooms.com/</a> (which was then called &#x201C;le Site du Zero&#x201D;) and by refactoring a bunch of old scripts for a scientific project.</p>
<p>I started Ruby hand in hand with Rails (like so many of us) early 2014 making web application prototypes for a fundraising early-stage startup. I learned Ruby initially using Michael Hartl&#x2019;s excellent tutorial.</p>
<p>This is to say that most of what I know on both languages is self-learned through tutorials, trial and error, StackOverflow questions, blog posts and other resources available on the web.</p>
<p>I&#x2019;m very fond of both Python and Ruby. Here is a list of a few differences and my preference between the two languages. It&#x2019;s not meant to be complete or objective truth, the following choices come from my personal likes/dislikes. I don&#x2019;t see myself as an expert so if anyone cares to teach me anything about the topics I&#x2019;ll be covering, you are most welcome.</p>
<p>Note: There are two basic data-structure that every high-level language uses. Python calls them lists and dictionaries (dicts) while Ruby calls them arrays and hashes. I&#x2019;ll be mostly using the Python terminology.</p>
<h4 id="1missionstatements">1) Mission Statements</h4>
<p>Python ideals are mostly covered by the Zen of Python: <a href="http://docs.python-guide.org/en/latest/writing/style/#zen-of-python">http://docs.python-guide.org/en/latest/writing/style/#zen-of-python</a></p>
<p>Ruby ideals can be gathered from the following interview of its creator for example: <a href="http://www.artima.com/intv/ruby.html">http://www.artima.com/intv/ruby.html</a></p>
<p>A lot of things could be said about both of those, I&#x2019;ll just oppose here two of their mission statements:</p>
<blockquote>
<p>Python: &#x201C;There should be one-- and preferably only one --obvious way to do it.&#x201D;</p>
</blockquote>
<blockquote>
<p>Ruby: &#x201C;Ruby is designed to make programmers happy.&#x201D;</p>
</blockquote>
<p>Both of those are good but they have different impacts in different contexts:</p>
<p><strong>Scripting and working in the interpreter:</strong> I prefer the redundancy that comes with maximising programmer happiness. What&#x2019;s obvious for some people might not be for others and when I&#x2019;m in the interpreter I want to go as fast as I can. In Ruby the redundancy makes it easier for me to guess how I should code things.</p>
<p><strong>Coding a long term project:</strong> I prefer Python&#x2019;s &#x201C;one obvious way&#x201D;. When you&#x2019;re looking on the internet for the best way to code something it&#x2019;s much easier when there aren&#x2019;t that many ways and one is clearly better than the others.</p>
<p><strong>Winner:</strong> this is a slight win for Ruby as maximising happiness resonates with me however Python&#x2019;s &#x201C;one obvious way&#x201D; doctrine can be pretty good and Python devs don&#x2019;t follow it neurotically (for example quit() and exit() both exist).</p>
<h4 id="2argparsevsoptionparser">2) Argparse vs OptionParser</h4>
<p>When you&#x2019;re used to working on Linux and start getting shell/bash skills you get used to testing  new commands with --help to get a basic understanding on how you should use the command. When you write a small/simple program it&#x2019;s usually simpler to make it a shell/bash command than a full designed GUI program. Making it look like classical Linux programs with it&#x2019;s very own --help is pretty neat, it can also be very useful and helps making it more maintainable (auto-documented inputs).</p>
<p>Both languages come with a built-in argument parser library, Python has argparse (<a href="https://docs.python.org/3/library/argparse.html">https://docs.python.org/3/library/argparse.html</a>) and Ruby has OptionParser (<a href="http://ruby-doc.org/stdlib-2.3.0/libdoc/optparse/rdoc/OptionParser.html">http://ruby-doc.org/stdlib-2.3.0/libdoc/optparse/rdoc/OptionParser.html</a>).</p>
<p>I had used argparse quite a few times in Python before needing OptionParser in Ruby. I was disappointed: argparse feels much more powerful than OptionParser. Looking in OptionParser for features that exist in argparse usually leads to SO questions like the following: <a href="http://stackoverflow.com/questions/15487628/ruby-optparse-limitations">http://stackoverflow.com/questions/15487628/ruby-optparse-limitations</a></p>
<p>If you look at minimal examples in both languages:</p>
<pre><code>#!ruby
require &apos;optparse&apos;

options = {}
OptionParser.new do |opts|
  opts.banner = &quot;Usage: example.rb [options]&quot;

  opts.on(&quot;-v&quot;, &quot;--[no-]verbose&quot;, &quot;Run verbosely&quot;) do |v|
    options[:verbose] = v
  end
end.parse!

p options
</code></pre>
<pre><code>#!python3
import argparse

parser = argparse.ArgumentParser()
parser.add_argument(&apos;-v&apos;, &quot;--verbose&quot;, action=&apos;count&apos;, help=&apos;Run verbosely&apos;)

args = parser.parse_args()
print(args)
</code></pre>
<p>Both examples have extra features the other doesn&#x2019;t (--no-verbose in ruby and count in python) but I have a definite preference for the shorter python example. I won&apos;t give out longer examples but argparse has, in my experience, a lot more features than it&apos;s Ruby counterpart while remaining simpler.</p>
<p><strong>Winner:</strong> Python, argparse feels simpler and more powerful than OptionParser.</p>
<h4 id="3mapvslistcomprehension">3) Map vs List comprehension</h4>
<p>Let&#x2019;s take a contrived example of wanting to find the number of digits in the first elements of a list of lists of numbers.</p>
<pre><code>#!ruby
a = [[1455,2],[53,5,23],[42455]]
a.map(&amp;:first).map(&amp;:to_s).map(&amp;:length).reduce(0,:+) # map chaining
a.map{ |x| x.first.to_s.length }.reduce(0,:+) # shortened form
</code></pre>
<p>When I&#x2019;m in the interpreter trying to process data and study it, I usually find myself iterating and chain mapping as I piece-by-piece coax my data in whatever form I need. However when it finds it way into production code I put in in it&#x2019;s shortened form.</p>
<pre><code>#!python3
a = [[1455,2],[53,5,23],[42455]]
sum([len(str(x[0])) for x in a])
</code></pre>
<p>Admittedly the Python example is actually shorter than the Ruby example, but it&#x2019;s a bit harder to follow. It becomes even harder to understand when you&#x2019;re dealing with complicated structures with multi-level nested lists.</p>
<p>For example I have needed many times to flatten a list of lists.</p>
<p>Here&#x2019;s how in Python:<br>
<a href="http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python">http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python</a><br>
The top two answers (list comprehension and itertools.chain) are pretty verbose and the third answer (overloading sum) is simple and short but not that readable to someone not knowing the trick.</p>
<p>Ruby has it better with flatten which can also take an argument if you don&#x2019;t want to flatten all the way down. When you add to that flat_map (a.flat_map(&amp;b) works exactly like a.map(&amp;b).flatten!(1)) you get a lot of power to unpack and process nested structures in very little code.</p>
<p><strong>Winner:</strong> Ruby, though this is mostly for when you&#x2019;re in &#x201C;scripting and working in the interpreter&#x201D; mode.</p>
<h4 id="4arraylistaccess">4) Array/list access</h4>
<p>This a pretty simple and basic item, how do you access elements in an array/list ? How do you get a sublist?</p>
<pre><code>#!ruby
a[0] # gets first element, also a.first works which helps when using map
a[-1] # gets last element, also a.last works which helps when using map
a[0...2] # gets first to second element
a[0..2] # gets first to third element
a[1..-2] # gets second to before-last element
a[1..-1] # gets second to last element
</code></pre>
<pre><code>#!python3
a[0] # gets first element
a[-1] # gets last element
a[0:3] # gets first to third element
a[:2] # gets first to second element (by default start at 0)
a[1:-1] # gets second to before-last element
a[1:] # gets second to last element (by default end at -1)
</code></pre>
<p>Ruby has something nice with the difference between .. and ... which let&#x2019;s you avoid having to write things like n-1 when you&#x2019;d rather just write n. However I much prefer avoiding having to write -1 when I want to get to the end of a list.</p>
<p><strong>Winner:</strong> Python, however the difference are mostly cosmetic so it comes down to pretty much my personal preferences rather than a real usability issue.</p>
<h4 id="5numbers">5) Numbers</h4>
<p>In Ruby you can add underscores in a number to get better readability:<br>
<code>1_000_000 == 1000000</code></p>
<p>It&#x2019;s been that way since at least Ruby 2.0.0 released in 2013. This can really help your code be more readable which is a big plus in long term production code.</p>
<p>This feature has just arrived in Python 3.6 released on 2016-12-23 (<a href="https://www.python.org/downloads/release/python-360/">https://www.python.org/downloads/release/python-360/</a>)</p>
<p><strong>Winner:</strong> Ruby, but only because they implemented the idea first: both languages are equal on that score now.</p>
<h4 id="6adicthashwithadefaultvalue">6) A dict/hash with a default value</h4>
<p>Having a default value for a dictionary can be useful in a lot of instances. My basic example is counting the frequency of words in a list.</p>
<pre><code>#!ruby
a = [5, 12, 1, 4, 5, 2, 4, 6, 3, 4, 4, 13, 12, 7]
d = Hash.new { |h,k| h[k] = 0 }
a.each { |x| d[x] += 1 }
d
</code></pre>
<pre><code>#!python3
from collections import defaultdict
a = [5, 12, 1, 4, 5, 2, 4, 6, 3, 4, 4, 13, 12, 7]
d = defaultdict(lambda : 0)
for x in a:
    d[x] += 1
d
</code></pre>
<p>Imagine that you only want the defaultdict behaviour for the initialisation of your object but don&#x2019;t want that behaviour when you later use the object, both languages have solutions for this.</p>
<pre><code>#!ruby
d = Hash.new # or just {}
a.each { |x| d[x] = (d[x] || 0) + 1 }
</code></pre>
<pre><code>#!python3
d = defaultdict(lambda : 0)
for x in a:
    d[x] += 1
d = dict(d)
</code></pre>
<p><strong>Winner:</strong> Undecided, the Python method is more readable but requires an extra import, the Ruby method feels a bit more hackish but it&#x2019;s also built-in which is a plus.</p>
<h4 id="7bonusproblemnonbreakingspaceorespaceinscable">7) Bonus problem: non-breaking space or &#x201C;espace ins&#xE9;cable&#x201D;</h4>
<p>So this is probably only a problem for French Ruby coders using French keyboards.</p>
<p>Ever got the following errors?</p>
<pre><code>&gt; [4,5,6].map { |x| x + 1 }
NoMethodError: undefined method `map &apos; for [4, 5, 6]:Array
</code></pre>
<p>or</p>
<pre><code>&gt; [4,5,6].map { |x| x + 1 }
NameError: undefined local variable or method ` &apos; for main:Object
</code></pre>
<p>See the problem?</p>
<p>Do you notice that space after map in &#x201C;undefined method `map &apos;&#x201D; ? It&#x2019;s not your average, run-of-the-mill space.</p>
<p>On French keyboards you need to press Alt-Gr + 4 in order to get <code>{</code> and Alt-Gr + 6 in order to get <code>|</code>, the problem comes of trying to add spaces in your code at the same time: Alt-Gr + Space makes a non-breaking space (or &#x201C;espace ins&#xE9;cable&#x201D; in French). It&#x2019;s easy to make this mistake when you&#x2019;re trying to code fast. That&#x2019;s how you get error like &#x201C;undefined method &#x2018;map-non-breakable-space&#x2019; for array&#x201D;.</p>
<p>After a while you debug it very quickly but the first few times are extremely confusing. My examples were pretty basic but imagine debugging a long line of complicated code working in structures you don&#x2019;t fully comprehend: you have to unpack a lot of it before you actually get to the real problem.</p>
<p>Funnily enough this can be used to obfuscate code or play pranks:</p>
<pre><code># Just make sure that the first space is a non-breaking space
&#xA0;4 = 5
 4 + 4 == 10
</code></pre>
<p><strong>Winner:</strong> Python</p>
<h4 id="afterword">Afterword</h4>
<p>I probably have material for another one or two posts like this. However both languages are actually very alike so most of the differences between them is cosmetic or complicated under-the-hood stuff. The key thing is that they are both very productive and fun languages.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[La eSIM et ses opportunités]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Vous avez peut-&#xEA;tre entendu parler, on trouve quelques articles francophones tels que ceux de <a href="http://www.zdnet.fr/actualites/esim-un-nouveau-modele-pour-les-operateurs-39822662.htm">ZDNet</a> ou de <a href="http://www.clubic.com/telephone-portable/operateur-telephonie-mobile/actualite-774182-gsma-standard-carte-sim-embarquee.html">Clubic</a>, m&#xEA;me si ceux-ci sont bien trop concis. Je parle donc de la eSIM, ou embedded SIM, litt&#xE9;ralement &quot;SIM embarqu&#xE9;e&quot;, que l&apos;</p>]]></description><link>https://blog.vnmis.net/la-esim-et-ses-opportunites/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5b5</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Mon, 13 Feb 2017 13:20:23 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Vous avez peut-&#xEA;tre entendu parler, on trouve quelques articles francophones tels que ceux de <a href="http://www.zdnet.fr/actualites/esim-un-nouveau-modele-pour-les-operateurs-39822662.htm">ZDNet</a> ou de <a href="http://www.clubic.com/telephone-portable/operateur-telephonie-mobile/actualite-774182-gsma-standard-carte-sim-embarquee.html">Clubic</a>, m&#xEA;me si ceux-ci sont bien trop concis. Je parle donc de la eSIM, ou embedded SIM, litt&#xE9;ralement &quot;SIM embarqu&#xE9;e&quot;, que l&apos;on appellera parfois &quot;SIM soud&#xE9;e&quot;, l&apos;image &#xE9;tant plus parlante.<br>
Essayons de r&#xE9;fl&#xE9;chir un peu plus en profondeur aux cons&#xE9;quences de cette nouveaut&#xE9;.</p>
<p>La eSIM, c&apos;est tout d&apos;abord un bouleversement dans l&apos;industrie des t&#xE9;l&#xE9;coms. Un &#xE9;quilibre devra &#xEA;tre trouv&#xE9; entre les op&#xE9;rateurs t&#xE9;l&#xE9;phoniques et les constructeurs de t&#xE9;l&#xE9;phones. En effet, ces derniers viennent d&#xE9;sormais empi&#xE9;ter dans le domaine historique des op&#xE9;rateurs en absorbant la carte SIM dans leurs usines fabriquant des t&#xE9;l&#xE9;phones. Mais cela n&apos;est pas si simple, puisque le <em>contenu</em> de cette eSIM restera toujours domaine de l&apos;op&#xE9;rateur. En effet, cette d&#xE9;mat&#xE9;rialisation ne fait pas pour autant perdre &#xE0; la carte SIM ses certifications en mati&#xE8;re de s&#xE9;curit&#xE9;, reconnues depuis longtemps aujourd&apos;hui. On notera m&#xEA;me que c&apos;est aujourd&apos;hui un des rares &#xE9;l&#xE9;ments qui nous entourent qui soit &#xE0; la fois s&#xE9;curis&#xE9; et standardis&#xE9;, facilement accessible et utilisable par l&apos;utilisateur lambda.</p>
<p>On peut dans un premier temps &#xEA;tre amen&#xE9; &#xE0; critiquer cette solution. En utilisant les m&#xEA;me arguments que ceux utilis&#xE9;s contre les batteries non amovibles par exemple, ou de la perte du port jack : moins de souplesse pour l&apos;utilisateur ? Pas si la solution respecte le standard tel qu&apos;il est d&#xE9;crit aujourd&apos;hui, l&apos;interop&#xE9;rabilit&#xE9; devant &#xEA;tre assur&#xE9;e, et au contraire ce syst&#xE8;me va r&#xE9;volutionner notre mode de &quot;consommation&quot; dans le secteur des t&#xE9;l&#xE9;coms.</p>
<p>Aujourd&apos;hui, si l&apos;on souhaite changer d&apos;op&#xE9;rateur de t&#xE9;l&#xE9;phonie mobile, la proc&#xE9;dure est d&#xE9;j&#xE0; tr&#xE8;s simple, notamment la mise en place du RIO il y a dix ans. Puis les op&#xE9;rateurs ont fait de gros efforts pour la souscription en ligne, tout est num&#xE9;ris&#xE9;, y compris les pi&#xE8;ces d&apos;identit&#xE9; et le mandat de pr&#xE9;l&#xE8;vement SEPA. Mais n&apos;est-il pas dommage de souscrire &#xE0; une offre en cinq minutes en ligne, et de devoir attendre plusieurs jours la r&#xE9;ception de la carte SIM par courrier postal ? Autre exemple, que diriez-vous de recevoir votre eSIM am&#xE9;ricaine la veille au soir de votre d&#xE9;part aux USA ? Vous voyez o&#xF9; je veux en venir : ce sera la paradis des <em>churners</em>, qui pourront th&#xE9;oriquement (on peut imaginer qu&apos;il y aura des limites impos&#xE9;es pour limiter les abus) changer d&apos;op&#xE9;rateur tous les jours.</p>
<p>De plus, il sera possible d&apos;utiliser plusieurs profils de SIM sur une m&#xEA;me eSIM, de la m&#xEA;me mani&#xE8;re qu&apos;un t&#xE9;l&#xE9;phone dual-SIM aujourd&apos;hui - avec l&apos;avantage de ne plus &#xEA;tre limit&#xE9; par le nombre d&apos;emplacements physiques, mais cette fois par l&apos;espace de stockage de la eSIM.</p>
<p>Une veine pour les op&#xE9;rateurs &#xE9;galement, qui pourront s&apos;affranchir de la gestion mat&#xE9;rielle des cartes SIM, allant des usines d&apos;encarteurs jusqu&apos;&#xE0; la gestion des stocks. De plus, une eSIM pourra recevoir quel <em>software</em> de SIM - puisqu&apos;il est question de t&#xE9;l&#xE9;charger le profil de l&apos;op&#xE9;rateur sur le mobile. En boutique par exemple, on retrouve diff&#xE9;rents types de cartes SIM, entre les compatibles NFC, les pr&#xE9;pay&#xE9;s, ou ailleurs les M2M (<em>machine to machine</em>). Tout ce syst&#xE8;me, aujourd&apos;hui cher et lourd, sera virtualis&#xE9; et g&#xE9;rable en quelques clics.</p>
<p>Cette m&#xE9;tamorphose peut faire penser &#xE0; ce que l&apos;on voit arriver dans le domaine du paiement mobile. La carte bancaire ressemble fortement &#xE0; la carte SIM, vous l&apos;aurez remarqu&#xE9;, et les m&#xEA;me probl&#xE8;me se posent : on peut souscrire &#xE0; une banque en ligne en quelques clics, mais tant que la carte bancaire n&apos;est pas dans la bo&#xEE;te aux lettres, nous sommes bloqu&#xE9;s. Hors, depuis peu, les acteurs bancaires permettent le <em>t&#xE9;l&#xE9;chargement</em> du moyen de paiement sur le mobile, avec Paylib ou Apple Pay par exemple. Hors &#xE0; ce jour, les banques qui proposent ces deux services demandent &#xE0; poss&#xE9;der au pr&#xE9;alable une carte bancaire plastique. Il vous reste cependant Orange Cash ou boon, qui eux permettent de payer d&#xE8;s la souscription, mais qui sont cependant des comptes pr&#xE9;pay&#xE9;s.</p>
<p>Il nous tarde donc de d&#xE9;couvrir quels seront les premiers acteurs - op&#xE9;rateur mobiles ou banques - qui nous proposeront en premier ces services int&#xE9;gralement d&#xE9;mat&#xE9;rialis&#xE9;s, en allant jusqu&apos;&#xE0; inclure la carte &#xE0; puce.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Le paiement CB à partir d'un euro]]></title><description><![CDATA[<!--kg-card-begin: markdown--><p>Vous trouverez sur ce blog de nombreux articles concernant le paiement mobile, mais j&apos;entends souvent la remarque, &#xE0; juste titre, que aujourd&apos;hui encore peu de commer&#xE7;ants acceptent la carte bancaire pour des petits montants. C&apos;est en effet sur ce probl&#xE8;me</p>]]></description><link>https://blog.vnmis.net/le-paiement-cb-a-partir-dun-euro/</link><guid isPermaLink="false">5b20e8f09e6ac20001d8f5b4</guid><dc:creator><![CDATA[Hugues]]></dc:creator><pubDate>Sun, 05 Feb 2017 12:14:16 GMT</pubDate><content:encoded><![CDATA[<!--kg-card-begin: markdown--><p>Vous trouverez sur ce blog de nombreux articles concernant le paiement mobile, mais j&apos;entends souvent la remarque, &#xE0; juste titre, que aujourd&apos;hui encore peu de commer&#xE7;ants acceptent la carte bancaire pour des petits montants. C&apos;est en effet sur ce probl&#xE8;me qu&apos;il faut se concentrer avant m&#xEA;me l&apos;acceptation de la NFC.</p>
<p>Michel Sapin <a href="http://www.20minutes.fr/economie/1777707-20160201-sapin-fait-paiement-carte-bancaire-1er-euro-priorite">en a fait sa priorit&#xE9;</a>, semble-t-il, sans doute pas seulement pour notre confort quotidien, mais surtout pour exercer un flicage plus intense des paiements qui encore aujourd&apos;hui se font en grande partie en liquide, propice &#xE0; la non-d&#xE9;claration aux imp&#xF4;ts par les commer&#xE7;ants.</p>
<p>Mais avant cela, il faut se pencher sur le probl&#xE8;me de fond : pourquoi les commer&#xE7;ants imposent-ils un minimum de paiement par carte bancaire ?<br>
Un paiement par carte, contrairement au liquide, repose sur une infrastructure avec, surtout en France, de nombreux acteurs &#xE0; r&#xE9;mun&#xE9;rer : la banque du commer&#xE7;ant, la banque du client, le r&#xE9;seau <a href="https://fr.wikipedia.org/wiki/Groupement_des_cartes_bancaires_CB">GIE-CB</a> (dans le cas d&apos;un paiement CB), et enfin le r&#xE9;seau VISA/Mastercard/etc. Chaque acteur veut sa commission, et la plupart ne vivent que de celle-ci.<br>
Ne vous-&#xEA;tes vous pas demand&#xE9; comment des acteurs tels que Revolut ou N26 parviennent &#xE0; vous proposer une carte bancaire totalement gratuite, sans condition ? Leur business model repose sur ces commissions bancaires.</p>
<p>En d&#xE9;cembre 2015, un <a href="https://www.legifrance.gouv.fr/affichTexte.do?cidTexte=JORFTEXT000031572143&amp;categorieLien=id">d&#xE9;cret</a> limitant le montant de ces commissions est entr&#xE9; en vigueur, les plafonnant &#xE0; 0.23% du montant de la transaction. De plus, il avait &#xE9;t&#xE9; annonc&#xE9; que la partie fixe des commissions devrait dispara&#xEE;tre fin 2016 - c&apos;est notamment cette partie fixe qui a tr&#xE8;s largement motiv&#xE9; les commer&#xE7;ants &#xE0; n&apos;accepter la carte qu&apos;&#xE0; partir d&apos;un certain montant : imaginez-donc que l&apos;on vous demande de payer 50 centimes &#xE0; votre banque &#xE0; chaque paiement, par exemple pour une baguette de pain !<br>
<em>Edit 18/04/2018 : pour information, <a href="http://www.cartes-bancaires.com/sites/default/files/tableau_des_commission_et_tarification_interbancaires_cb_fr_2016.pdf">voici</a> le r&#xE9;capitulatif des frais sur le r&#xE9;seau CB.</em></p>
<p>Aujourd&apos;hui, le d&#xE9;cret est en place, mais la majorit&#xE9; des commer&#xE7;ants n&apos;en ont que vaguement entendu parler, et la plupart du temps leur contrat de location du TPE n&apos;a pas &#xE9;t&#xE9; ren&#xE9;goci&#xE9; depuis. Les banquiers ne jouent bien &#xE9;videmment pas le jeu, et esp&#xE8;rent bien profiter encore un moment de la part du lion.</p>
<p>La balle est dans le camp des commer&#xE7;ants, et le jeu se joue contre les banques acqu&#xE9;reurs. Comble de l&apos;histoire, ce sont parfois les m&#xEA;me banques qui poussent &#xE0; l&apos;usage de la NFC et du paiement mobile, et qui refusent (ou sur-facturent) le terminal compatible au commer&#xE7;ant !</p>
<p>Vous trouverez un rapport mensuel sur l&apos;acceptation du sans contact sur le site <a href="http://www.lepaiementsanscontact.com/particulier/actualites/">suivant</a>, mais il est dommage de ne pas avoir &#xE0; ce jour de d&#xE9;tail sur le pourcentage de paiements mobile. On peut esp&#xE9;rer qu&apos;avec des leviers tels que Paylib, ou encore le passage du &#xE0; 30&#x20AC; pour un paiement sans code, la d&#xE9;mocratisation du sans contact s&apos;acc&#xE9;l&#xE8;re, et que les commer&#xE7;ants ne consid&#xE8;rent plus cela comme un moyen de paiement &#xE0; la marge.</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>