<?xml version="1.0" encoding="utf-8"?>
        <?xml-stylesheet type="text/css" href="http://st3rk.fr/styles/feed.css"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>St3rk's blog</title>
<atom:link href="http://st3rk.fr/rss.xml" rel="self" type="application/rss+xml" />
<link>http://st3rk.fr</link>
<description>Blog traitant principalement des logiciels libres...</description>
<dc:language>en-us</dc:language>
<dc:creator>St3rk</dc:creator>
<dc:date>2013-02-16T20:36:01+00:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<image><link>http://st3rk.fr</link><url>http://st3rk.fr/images/feedlogo.jpg</url><title>St3rk's blog</title></image>
<item>
<link>http://st3rk.fr/archives/2013/02/16/transmission__utiliser_apache_comme_proxy/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2013/02/16/transmission__utiliser_apache_comme_proxy/index.html</guid>
<title>Transmission : utiliser apache comme proxy</title>
<dc:date>2013-02-16T20:23:24+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[
<p>Je suis un adepte du P2P pour télécharger mes images Linux. Jusque là, j'utilisais rtorrent, allié à l'interface web rutorrent (pour les endroits où de méchants sysadmins ont bloqué le port SSH).<p>


<p>Le problème de rutorrent, en dehors du fait que c'est moche, c'est qu'il faut un i7 overclocké juste pour interpréter le javascript. Autant dire que j'étais un poil juste avec mon atom...</p>

<p>Après quelques tests, j'ai été convaincu par Transmission : un joli fichier texte pour tout configurer, une interface web simple mais légère, et la possibilité de se connecter à distance en utilisant une <a href="http://code.google.com/p/transmisson-remote-gui/">interface lourde</a>.</p>

<p>Par contre, utiliser Apache comme proxy pour l'interface web relève du défi : presque tout le monde bute sur l'erreur 409 de la mort :<br />
<div class="cons"><pre>409: Conflict

Your request had an invalid session-id header.

To fix this, follow these steps:

When reading a response, get its X-Transmission-Session-Id header and remember it
Add the updated header to your outgoing requests
When you get this 409 error message, resend your request with the updated header

This requirement has been added to help prevent CSRF attacks.</pre></div></p>

<p>Après de longues recherches infructueuses, je me suis preque résigné. Et puis je suis tombé sur <a href="https://forum.transmissionbt.com/viewtopic.php?f=8&t=12532#p58701">ce post</a>, qui contient LA solution.</p>

<p>Il suffit en fait de ne pas mettre le "/" final lorqu'on spécifie le domaine cible, à l'aide des directive <code>ProxyPass</code> et <code>ProxyPassReverse</code>. Je donne donc ma configuration, elle sera peut être utile à d'autres :<br /><div class="cons"><pre>&lt;VirtualHost *:443&gt;
        ServerName monServeur.fr
        ServerAlias www.monServeur.fr
        Redirect permanent / https://monServeur.fr/transmission

        RewriteEngine on
        RewriteRule /transmission[/]?$ /transmission/web/ [R=permanent]

        SSLEngine on
        SSLCertificateFile    /etc/httpd/ssl/monServeur/monCertificat.fr.crt
        SSLCertificateKeyFile /etc/httpd/ssl/monServeur/monCertificat.fr.key
 
        ProxyRequests On
        ProxyPreserveHost Off 
        &lt;Proxy *&gt;
        Order allow,deny
        Allow from all 
        &lt;/Proxy&gt;

        ProxyPass /transmission http://127.0.0.1:9091/transmission
        ProxyPassReverse /transmission http://127.0.0.1:9091/transmission
&lt;/Virtualhost&gt;

&lt;VirtualHost *:80&gt;
        ServerName monServeur.fr
        ServerAlias www.monServeur.fr
        Redirect permanent / https://monServeur.fr/transmission
&lt;/Virtualhost&gt;</pre></div></p>

<p>À noter qu'Apache n'a pas besoin de gérer l'authentification, qui peut être configurée directement dans le fichier de conf de Transmission-daemon.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2013/02/16/netbsd__probl_me_au_red_marrage_dapache/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2013/02/16/netbsd__probl_me_au_red_marrage_dapache/index.html</guid>
<title>NetBSD : problème au redémarrage d'Apache</title>
<dc:date>2013-02-16T19:39:50+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[
<p>J'ai récemment eu un problème étrange sur ma NetBSD. Après quelques redémarrages successifs, Apache refusait de se lancer. Dans le logs, je retrouvais l'erreur suivante :<br />
<div class="cons"><pre>(28)No space left on device: AH00023: Couldn't create the authdigest-opaque mutex</pre></div></p>

<p>Pourtant, mon disque dur était loin d'être plein, et un reboot permettait de résoudre le problème. J'ai fini par trouver la solution sur <a href="http://carlosrivero.com/fix-apache---no-space-left-on-device-couldnt-create-accept-lock">ce blog</a>.</p>

<p>Le soucis provenait en réalité de nombreux sémaphores, qui n'étaient pas supprimés lors de l'arrêt du démon. On peut les observer à l'aide d'<code>ipcs</code> :<br />
<div class="cons"><pre># ipcs -s
IPC status from <running system> as of Sat Feb 16 19:30:12 2013

Semaphores:
T        ID     KEY        MODE       OWNER    GROUP
s   2752512          0 --rw-------      www      www
s   1376257          0 --rw-------      www      www
s   1376258          0 --rw-------      www      www
s   2293763          0 --rw-------      www      www</pre></div></p>

<p>La commande <code>ipcrm</code> permet de s'en débarasser :<br />
<div class="cons"><pre># ipcrm -s 2752512</pre></div></p>

<p>On peut supprimer tous les sémaphores en une ligne, grâce à perl :<br />
<div class="cons"><pre># ipcs -s | grep www | perl -alne 'qx(ipcrm -s $F[1])'</pre></div></p>

<p>Le démarrage d'Apache peut alors s'effectuer correctement.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2013/01/22/xen_la_kimsufi_et_lipv6/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2013/01/22/xen_la_kimsufi_et_lipv6/index.html</guid>
<title>Xen, la kimsufi, et l'IPV6</title>
<dc:date>2013-01-22T12:02:43+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[<p>J'ai profité de la nouvelle gamme de <a href="www.kimsufi.com">kimsufi</a> pour changer de serveur dédié, et passer à une solution Xen + Puppet. Il est ainsi facile de créer machine de test, pour jouer pendant quelques heures avec un nouveau logiciel sans pourrir le système hôte.</p>

<p>Afin de déployer mon serveur rapidement, j'ai opté pour un dom0 sous Debian Wheezy (qui est déjà en phase de freeze, et devrait rapidement devenir la nouvelle Debian stable). Mais parce que j'aime FreeBSD, c'est l'OS d'un de mes domU. Et comme FreeBSD est une horreur à déployer en tant que domU, j'ai déployé un deuxième domU sous NetBSD.</p>

<p>Je souhaitais que chacune de mes machine soit joignable en ipv4 et ipv6. Je vais donc décrire ma démarche dans cet article.</p>

<p>Prérequis : posséder un dom0 avec connexion IPv4 et IPv6 fonctionnelles.</p>

<br />
<h3>Créer le bridge</h3>
<br />

<p>Le bridge permettra de relier plusieurs interfaces entre elles, à la manière d'un switch. On pourra ainsi connecter toutes les machines virtuelles à ce bridge, pour qu'elle puisse de joindre entre elle. On pourra également router le traffic entre l'interface physique <code>eth0</code> et le bridge, pour joindre le monde extérieur.</p>

<p>J'ai commencé par créer le réseau virtuel. Il faut pour cela charger le module <code>dummy</code> :<br />
<div class="cons"># modprobe dummy</div></p>

<p>On peut ensuite ajouter le ligne suivante dans le fichier <code>/etc/modules</code> afin de le charger au démarrage :<br />
<div class="cons">dummy</div></p>

<p>Il faut ensuite créer une interface virtuelle <code>dummy0</code>, et lui attribuer une IP. On utilisera le réseaux 10.0.0.0/24 en IPv4. Pour l'IPv6, j'utiliserai une partie du /64 fourni par OVH. Je possède un stock d'adresse du type 2001:1:2:3::/64. J'utiliserai le sous-réseau 2001:1:2:3:1::/80 pour mon réseau virtuel.</p>

<p>Je modifie donc le fichier <code>/etc/network/interfaces</code> pour ajouter la section suivante :<br />
<div class="cons"><pre>auto br0
iface br0 inet static
        ##
        # ipv4 address
        address 10.0.0.1
        netmask 255.255.255.0
        broadcast 10.0.0.255
        ##
        # ipv6 address
        up ip -6 addr add 2001:1:2:3:1::111/80 dev br0
        down ip -6 addr del 2001:1:2:3:1::111/80 dev br0
        ##
        # Add dummy0 (virtual interface) and setup the bridge
        bridge_ports dummy0
        bridge_maxwait 5
        bridge_stp off
        bridge_fd 0</pre></div></p>

<p>On attribue ici les adresses 10.0.0.1 et 2001:1:2:3:1::1231 au bridge br0. On connecte y l'interface virtuelle dummy0.</p>

<br />
<h3>Router les adresses IPv6</h3>
<br />

<p>L'interface br0 possède donc l'IPv6 2001:1:2:3:1::1231. Deux autres machines seront connectées avec les IPv6 2001:1:2:3:1::1232 et 2001:1:2:3:1::1233. Il faudra router les paquets entre les interfaces eth0 et br0. Il faut donc activer le transfert d'IP en IPv6. On ajoute les lignes suivantes à <code>/etc/sysctl.conf</code> :<br />
<div class="cons"><pre>net.ipv6.conf.default.forwarding=1
net.ipv6.conf.all.forwarding=1</pre></div></p>

Puis on applique les changements avec la commande :<br />
<div class="cons"># sysctl -p</div></p>

<p>Enfin, on ajoute les routes nécessaires dans <code>/etc/network/interfaces</code>, en modifiant la section précedemment ajoutée :<br />
<div class="cons"><pre>auto br0
iface br0 inet static
        ##
        # ipv4 address
        address 10.0.0.1
        netmask 255.255.255.0
        broadcast 10.0.0.255
        ##
        # ipv6 address
        up ip -6 addr add 2001:1:2:3:1::111/80 dev br0
        down ip -6 addr del 2001:1:2:3:1::111/80 dev br0
        ##
        # Add dummy0 (virtual interface) and setup the bridge
        bridge_ports dummy0
        bridge_maxwait 5
        bridge_stp off
        bridge_fd 0
	##
        # Add routes
        post-up ip route add 2001:1:2:3:1::/80 dev br0
        post-down ip route del 2001:1:2:3:1::/80 dev br0</pre></div></p>

<br />
<h3>Transférer les paquets NDP</h3>
<br />

<p>Il est impossible, à ce stade, de joindre le monde extérieur depuis une machine du sous-réseau 2001:1:2:3:1::/80. En effet, le routeur d'OVH s'attend à trouver un réseau "à plat". Il considère donc uniquement les adresses attribuées à eth0.</p>

<p>La manière la plus simple de résoudre ce problème serait de modifier les tables de routage du routeur, par exemple via une interface web. Ce n'est malheureusement pas possible. Il va donc falloir tricher un peu.</p>

<p>En IPv6, le protocole utilisé pour découvrir les différents appareils connectés à un lien est appelé NDP (Neighbor Discovery Protocol). C'est l'équivalent du protocle ARP en IPv4, mais avec de nombreuses fonctionnalités supplémentaires : découverte des routeurs, auto-configuration de l'interface et des routes...<br />
Le noyeau Linux possède une fonctionnalité appelée "proxy NDP", qui permet de transférer les paquets NDP d'une interface à une autre, et de résoudre les situations telles que celle qui nous concerne.</p>

<p>On va donc transférer les paquets NDP des adresses 2001:41d0:8:b74d:1::1231, 2001:41d0:8:b74d:1::1232 et 2001:41d0:8:b74d:1::1233 sur l'interface eth0, et les paquets NDP de la passerelle OVH (2001:1:2:3ff:ff:ff:ff:ff) sur l'interface br0. De cette manière, la paserelle verra un réseau "plat" possédant 4 adresses (2001:41d0:8:b74d::1, 2001:41d0:8:b74d:1::1231, 2001:41d0:8:b74d:1::1232, et 2001:41d0:8:b74d:1::1233).</p>

<p>On commence par activer le proxy NDP en modifiant le fichier <code>/etc/sysctl.conf</code> :<br />
<div class="cons"><pre>net.ipv6.conf.default.proxy_ndp=1
net.ipv6.conf.all.proxy_ndp=1</pre></div></p>

<p>On applique la nouvelle configuration :<br />
<div class="cons"># sysctl -p</div></p>

<p>On modifie la section précédemment ajoutée dans le fichier <code>/etc/network/interfaces</code> pour indiquer quels paquets NDP transférer, et sur quelle interface :<br />
<div class="cons"><pre>auto br0
iface br0 inet static
        ##
        # ipv4 address
        address 10.0.0.1
        netmask 255.255.255.0
        broadcast 10.0.0.255
        ##
        # ipv6 address
        up ip -6 addr add 2001:1:2:3:1::1/80 dev br0
        down ip -6 addr del 2001:1:2:3:1::1/80 dev br0
        ##
        # Add dummy0 (virtual interface) and setup the bridge
        bridge_ports dummy0
        bridge_maxwait 5
        bridge_stp off
        bridge_fd 0
        ##
        # Add routes and NDP proxy (to be reachable)
        post-up ip route add 2001:1:2:3:1::/80 dev br0
        post-up ip neigh add proxy 2001:1:2:3ff:ff:ff:ff:ff dev br0
        post-up ip neigh add proxy 2001:1:2:3:1::1 dev eth0
        post-up ip neigh add proxy 2001:1:2:3:1::2 dev eth0
        post-up ip neigh add proxy 2001:1:2:3:1::3 dev eth0
        post-down ip route del 2001:1:2:3:1::/80 dev br0
        post-down ip neigh del proxy 2001:1:2:3ff:ff:ff:ff:ff dev br0
        post-down ip neigh del proxy 2001:1:2:3:1::1 dev eth0
        post-down ip neigh del proxy 2001:1:2:3:1::2 dev eth0
        post-down ip neigh del proxy 2001:1:2:3:1::3 dev eth0</pre></div></p>

<p>L'adresse 2001:1:2:3ff:ff:ff:ff:ff est celle de la passerelle OVH.</p> 

<br />
<h3>IPv4 : le NAT</h3>
<br />

<p>OVH fournit une seule adresse IPv4. J'ai donc choisit d'utiliser le NAT pour joindre le monde extérieur en IPv4. Pour cela, il faut d'abord activer le transfert d'IP pour l'IPv4. On ajoute dans le fichier <code>/etc/sysctl.conf</code> :<br />
<div class="cons"><pre>net.ipv4.ip_forward=1</pre></div></p>

Puis on applique les changements avec la commande :<br />
<div class="cons"># sysctl -p</div></p>

<p>Pour faire le transfert d'adresse, on ajoute ensuite la règle iptables suivante :<br />
<div class="cons"><pre>iptables -t nat -A POSTROUTING -s 10.0.0.0/24 -o eth0 -j MASQUERADE</pre></div></p>

<br />
<h3>Connecter les domU</h3>
<br />

<p>Comme nous avons configuré nous-même le réseau, Xen n'a pas à s'en charger. On doit donc désactiver les scripts de configuration de Xen, en commentant les différentes lignes contenant <code>network-script</code> dans le fichier <code>/etc/xen/xend-config.sxp</code> :<br />
<div class="cons"><pre># #(network-script network-bridge)
#(network-script network-route)
#(network-script network-nat)</pre></div></p>

<p>On redémarre Xen pour prendre la nouvelle configuration en compte :<br />
<div class="cons"># /etc/init.d/xen restart</div></p>

<p>Il ne reste plus qu'à connecter les domU à l'interface <code>br0</code>, en spécifiant dans le fichier <code>/etc/xen/nom_du_domU</code> le paramètre suivant :
<div class="cons">vif=['bridge=br0']</div></p>

<p>On paramétrera ensuite le domU à l'aide de la console Xen, pour utiliser la passerelle 2001:1:2:3ff:ff:ff:ff:ff en ipv6, et 10.0.0.1 en ipv4.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2012/12/29/m_mo__formater_une_partition_dans_un_domu_freebsd/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2012/12/29/m_mo__formater_une_partition_dans_un_domu_freebsd/index.html</guid>
<title>Mémo : formater une partition dans un domU FreeBSD </title>
<dc:date>2012-12-29T11:46:26+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[
<p>Je bidouille en ce moment un domU FreeBSD para-virtualisé sous Xen. Mais lors de la création d'une nouvelle partition à l'aide de sysinstall, je tombais sur l'erreur suivante :</p>
<div class=cons>Floating exception (core dumped)</div><br />

<p>Cette erreur est due au fait que fdisk n'est pas capable de détecter la géométrie du disque. En effet, on observe en haut de l'écran :</p>
<div class=cons>DISK Geometry:  0 cyls/0 heads/0 sectors</div><br />

<p>Il faut donc la lui indiquer. On peut calculer le nombre de cylindres avec l'équation suivante :</p>
<div class=cons>cylindres = taille du disque en octet / ( secteur * tête * taille_d'un_secteur )</div><br />

<p>Dans mon cas, avec un disque LVM de 20473Mo :</p>
<div class=cons>(20473*1024*1024)/(63*255*512) = 2609 cylindres</div><br />

<p>On peut arrondir à 2600 cylindres par sécurité. Il suffit ensuite de rentrer ces informations (2600/255/63) en appuyant sur la touche G.</p>

<p>source : <a href="http://lists.freebsd.org/pipermail/freebsd-xen/2011-October/001065.html">list.freebsd.org</a></p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2012/02/12/slackbuild__weboob_0_a/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2012/02/12/slackbuild__weboob_0_a/index.html</guid>
<title>Slackbuild : weboob 0.a</title>
<dc:date>2012-02-12T15:36:57+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[<p><a href="http://weboob.org/"><img src="images/weboob-logo.png" alt="logo weboob" style="margin: 0 auto; display: block;"></a></p>

<p>Weboob (WEB Out Of Browser, appréciez le jeu de mot) permet d'obtenir rapidement le contenu de certains sites web sans passer par un navigateur.</p>

<p>Il y a plusieurs intérêts à cela : éviter l'utilisation du plugin flash pour regarder une vidéo, ne pas subir des pages lourdingues bourrées de pub, ou réaliser une requête sur plusieurs sites à la fois.</p>

<p>En bonus : tout peut être fait dans la console.</p>

<br />
<h3>Installer weboob</h3>
<br />

<p>L'installation pour la plupart des distributions est très bien expliquée sur le <a href="http://weboob.org/install">site de weboob</a>.</p>

<p>Pour l'installer sous slackware, j'ai réalisé un slackbuild qui automatise la création du paquet. Étant donné le délai nécessaire à la validation du script sur <a href="http://slackbuilds.org">slackbuilds.org</a>, je le met à disposition ici :</p> 
<p><b>slackbuild :</b> <a href="slackbuilds/weboob.tar.gz">weboob.tar.gz</a><br />
<b>sources :</b> <a href="https://symlink.me/attachments/download/165/weboob-0.a.tar.gz">weboob-0.a.tar.gz</a> (md5sum : 15568485fd2bea4c53b69a6edb8c7e45)</p>

<p>Afin de pouvoir construire weboob, vous aurez besoin de <a href="http://slackbuilds.org/repository/13.37/python/pysetuptools/">pysetuptools</a>.</p>
<p>Les programmes <a href="http://slackbuilds.org/repository/13.37/python/mechanize/">mechanize</a>, <a href="http://slackbuilds.org/repository/13.37/python/python-dateutil/">python-dateutil</a>, <a href="http://slackbuilds.org/repository/13.37/python/html2text/">html2text</a>, <a href="http://slackbuilds.org/repository/13.37/development/nose/">nose</a>, <a href="http://slackbuilds.org/repository/13.37/network/feedparser/">feedparser</a>, <a href="http://slackbuilds.org/repository/13.37/python/lxml/">lxml</a>, <a href="http://slackbuilds.org/repository/13.37/multimedia/rtmpdump/">rtmpdump</a>, et <a href="http://slackbuilds.org/repository/13.37/libraries/PyYAML/">PyYAML</a> seront ensuite nécessaires au bon fonctionnement des backends.</p>

<br />
<h3>Utilisation</h3>
<br />

<p>Avec la nouvelle release, les backends sont téléchargés sur les dépots de weboob la première fois qu'il y en a besoin. Il faut donc commencer par récupérer la liste de ceux qui sont disponibles :<br />
<div class=cons>$ weboob-config update</div></p>

<p>Ensuite, il ne reste plus qu'à tester les applications qui vous intéressent.</p>

<br />
<h3>Videoob</h3>
<br />

<p>Videoob permet de télécharger des vidéos disponibles en streaming sur les sites d'Arte, Canal+, DailyMotion, France Télévisions, INA, Nolife, Radio France, Youjizz, Youporn et Youtube. Bon, vous n'êtes pas obligés d'activer tous les backends, hein ;-)</p>
<p>Lors du premier démarrage, un menu interactif vous permettra d'activer ceux que vous souhaitez.</p>

<p>Par exemple pour télécharger les derniers épisodes de "Bref", on démarre l'application videoob  :<br />
<div class="cons">$ videoob</div></p>

<p>On désactive tous les backends configurés sauf celui de canalplus :<br />
<div class="cons">videoob> backends disable arte dailymotion francetelevisions</div></p>

<p>On cherche les épisodes de bref :<br />
<div class="cons"><pre>videoob> search bref
Search pattern: bref
* (1) Bref. J'ai eu 30 ans. — Episode du 08/02 (canalplus)
            2012-02-08 16:02:00
* (2) Bref. J'ai eu une panne. — Episode du 06/02 (canalplus)
            2012-02-06 21:37:00
* (3) Bref. Je me suis fait agresser. — Episode du 02/02 (canalplus)
            2012-02-02 20:40:00
* (4) Bref. Je suis allé aux urgences. — Episode du 31/01 (canalplus)
            2012-01-31 17:02:00
* (5) Bref. J'ai un nouvel appart'. — Episode du 26/01 (canalplus)
            2012-01-26 20:50:00
* (6) Bref. J'ai pris le métro. — Episode du 24/01 (canalplus)
            2012-01-24 21:22:00
* (7) Bref. J'étais à côté de cette fille. — Episode du 18/01 (canalplus)
            2012-01-18 18:37:00
* (8) Bref. J'ai déménagé. — Episode du 12/01 (canalplus)
            2012-01-12 18:37:00
* (9) Bref. J'ai voulu partir en vacances. — Episode du 10/01 (canalplus)
            2012-01-10 18:32:00
* (10) Bref. J'y pense et je souris. — Episode du 06/01 (canalplus)
            2012-01-06 18:22:00 </pre></div></p>

<p>On les télécharge le dernier :<br />
<div class=cons>videoob:/search> download 1</div></p>

<p>On peut aussi le jouer directement dans mplayer :<br />
<div class=cons>videoob:/search> play 1</div></p>

<br />
<h3>Wetboobs</h3>
<br />

<p>Héhé, oui, c'est possible d'aller encore plus loin dans les jeux de mots graveleux. Mais, contrairement à ce que son nom laisse supposer, wetboobs n'est pas une application réservée aux adultes : elle permet simplement de consulter la météo.</p>

<p>Lancer l'application :<br />
<div class=cons>$ wetboobs</div></p>

<p>Rechercher une ville :<br />
<div class=cons><pre>wetboobs> search clermont-ferrand
* (1) Clermont-Ferrand, Auvergne, France (yahoo)
* (2) Clermont-Ferrand 63000 (meteofrance)</pre></div></p>

<p>Consulter les prévisions météo de Clermont-Ferrand sur Yahoo :<br />
<div class=cons><pre>wetboobs> forecasts 1
* 12 Feb 2012:    (-11°C - -4°C) Clear
* 13 Feb 2012:    (-1°C - 2°C) Partly Cloudy</pre></div></p>

<p>Si on connait l'identifiant de la ville, on peut tout faire en une commande :<br />
<div class=cons><pre>$ wetboobs forecasts 586242@yahoo
* 12 Feb 2012:    (-11°C - -4°C) Clear
* 13 Feb 2012:    (-1°C - 2°C) Partly Cloudy</pre></div></p>

<br />
<h3>Et tout le reste...</h3>
<br />

<p>Il ne s'agit que d'un rapide apperçu, weboob contient de nombreuses applications et backends. Vous pourrez approfondir la question directement sur <a href="http://weboob.org/applications/">leur site</a>.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2012/01/29/cest-yhome/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2012/01/29/cest-yhome/index.html</guid>
<title>C'EST-Y@home </title>
<dc:date>2012-01-29T15:40:58+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[<p><a href="http://cestyathome.st3rk.fr"><img src="images/banner_small.jpg" alt="bannière C'EST-Y@home" style="margin: 0 auto; display: block;" /></a></p><br />
<p>Un petit coup de pub pour le projet <a href="http://cestyathome.st3rk.fr">C'EST-Y@home</a>, projet de recherche d'un intelligence extra-terrestre auvergnat.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2011/12/31/vim_et_les_dictionnaires_en_fran_ais/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2011/12/31/vim_et_les_dictionnaires_en_fran_ais/index.html</guid>
<title>Vim et les dictionnaires en Français</title>
<dc:date>2011-12-31T14:50:45+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[<p><img src=/images/logo-vim.gif alt="logo vim" style="margin: 0 auto; display: block;" /><br /></p>

<p>Bon, je dois me confesser. J'hésite actuellement à passer de Vim (<a href="http://www.vim.org/">l'éditeur de texte</a>, pas <a href="http://www.vim.fr/">l'expert en ventilation</a>) à Emacs, pour profiter de <a href="http://orgmode.org/">Org Mode</a>. J'utilise pour l'instant <a href="http://taskwarrior.org/">Taskwarrior</a>, qui semble beaucoup moins ergonomique.</p>

<p>En attendant de me faire pousser des doigts pour enchainer avec fluidité les "<code>ctrl + c</code>", "<code>ctrl + n</code>", "<code>ctrl + machin</code>", "<code>ctrl + truc</code>", et aussi parce que Vim c'est cool, je repousse le moment où je devrai tout réapprendre.</p>

<p>Et parmi toutes les features super cool, il y a la correction orthographique. Ajouter dans le fichier ~/.vimrc la ligne :<br />
<div class=cons>setlocal spelllang=fr</div></p>

<p>Il suffit maintenant de rentrer la commande suivante dans Vim :<br />
<div class="cons">:set spell</div></p>

<p>Et hop, tous les mots incorrects sont surlignés en rouge.</p>

<p>Sauf que parfois, lors de la première utilisation, au lieu de télécharger les dictionnaires automatiquement Vim affiche beau message d'erreur :<br />
<div class=cons>Alerte : Liste de mots "fr.utf-8.spl" ou "fr.ascii.spl" introuvable</div></p>

<p>Pas grave, il suffit de les télécharger à la main :<br />
<div class=cons><pre># cd /usr/share/vim/vim73/spell/
# wget http://ftp.vim.org/pub/vim/runtime/spell/fr.utf-8.spl
# wget http://ftp.vim.org/pub/vim/runtime/spell/fr.utf-8.sug</pre></div></p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2011/12/10/installer_tinyos_sous_debian_squeeze/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2011/12/10/installer_tinyos_sous_debian_squeeze/index.html</guid>
<title>Installer TinyOS sous Debian Squeeze</title>
<dc:date>2011-12-10T23:28:23+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[
<p><img src=/images/TinyOS.jpg alt="logo TinyOS" style="margin: 0 auto; display: block;" /><br /></p>

<p>Plus un pense bête qu'un réel article, voici comment installer TinyOS et ses différents outils pour travailler sur des cartes TelosB. On installera également les outils pour les cartes MICAz, car c'est la seule architecture supportée par le simulateur TOSSIM.</p>

<p>Ajouter le dépôt suivant dans <code>/etc/apt/sources.list</code> :<br />
<div class=cons># TinyOS <br />
deb http://tinyprod.net/debian-dev squeeze main</div></p>

<p>Mettre à jour les dépôts et installer les paquets nécessaires :<br />
<div class=cons># aptitude update<br />
# aptitude install subversion automake gcc g++ python-dev nesc msp430-tinyos avr-tinyos</div></p>

<p>Récupérer les derniers outils sur le dépôt subversion, et les compiler :<br />
<div class=cons>$ mkdir ~/local<br />
$ cd ~/local<br />
$ svn checkout http://tinyos-main.googlecode.com/svn/trunk/ tinyos-2.x<br />
$ cd ~/local/tinyos-2.x/tools/<br />
$ ./Bootstrap<br />
$ ./configure --prefix=$HOME/local/tinyos-2.x/local<br />
$ make<br />
$ make install</div></p>

<p>Ajouter les variables d'environnement qui vont bien à la fin du fichier ~/.bashrc :<br />
<div class=cons>export PATH=$HOME/local/tinyos-2.x/local/bin:$PATH<br />
export TOSROOT=$HOME/local/tinyos-2.x<br />
export TOSDIR=$TOSROOT/tos<br />
export MAKERULES=$TOSROOT/support/make/Makerules<br />
export CLASSPATH=$TOSROOT/support/sdk/java/tinyos.jar:.<br />
export PYTHONPATH=.:$TOSROOT/support/sdk/python:$PYTHONPATH<br />
export PATH=$TOSROOT/support/sdk/c:$PATH</div></p>

<p><i>Sourcer</i> le ~/.bashrc afin de prendre en compte immédiatement ces variables d'environnement :<br />
<div class=cons>$ source ~/.bashrc</div></p>

<p>Tester que tout s'est bien déroulé, et que la compilation se déroule correctement. Commençons par nous rendre dans un répertoire contenant les sources d'un programme :<br />
<div class=cons>$ cd $TOSROOT/apps/Blink</div></p>

<p>Puis testons la compilation pour les TelosB :<br />
<div class=cons>$ make telosb</div></p>

<p>Si aucune erreur ne s'est produite, on obtient la dernière ligne devrait être la suivante :<br />
<div class=cons>writing TOS image</div></p>

<p>Enfin la compilation pour TOSSIM :<br />
<div class=cons>$ make micaz sim</div></p>

<p>La dernière ligne doit être la suivante :<br />
<div class=cons>*** Successfully built micaz TOSSIM library.</div></p>

<p>Cool, tout s'est bien déroulé ;-)</p>

<p>À noter que cette installation ne sera utilisable que par l'utilisateur courant, mais elle a le mérite de ne pas "pourrir" le système.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2011/12/08/le_sagem_spiga_sous_debian_squeeze_partie_1/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2011/12/08/le_sagem_spiga_sous_debian_squeeze_partie_1/index.html</guid>
<title>Le Sagem Spiga sous Debian Squeeze (partie 1)</title>
<dc:date>2011-12-08T18:55:05+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[
<p><img src=/images/spiga.JPG alt="photo spiga" style="margin: 0 auto; display: block;" /><br />
</p>

<p>J'ai acquis récemment un <a href="http://www.blogeee.net/2009/10/sagem-spiga-lumid-m1-en-vf/">Sagem Spiga</a>. J'en rêvais à sa sortie, mais les 500€ demandés me paraissaient excessifs par rapport au matériel embarqué. J'aurai donc attendu deux ans, et l'offre vente privée, pour le trouver à un prix raisonnable. Et je suis content de mon achat : la finition est correcte, l'autonomie comparable à celle annoncée, et il rentre bien dans ma poche de <i>jean</i>. Même mon 12" parait énorme à côté :-)</p>

<p>Étant donné le matériel exotique de cet ordinateur (Intel GMA500 pour le GPU, Marvell 8686 pour le wifi), j'avais un peu peur de côté "pochette surprise". Voici donc un récapitulatif de ce qui fonctionne aujourd'hui sous Debian Squeeze, et quelques astuces sur la manière d'y parvenir.</p>
<br />
<h3>Choisir le périphérique sur lequel booter</h3>
<br />
<p>C'est tout bête, mais j'ai mis un moment avant de trouver comment faire, la manipulation n'étant pas expliqué dans la notice. La combinaison magique est "Fn + o", soit F11. On peut ensuite booter sur un périphérique USB (clef USB/disque dur/lecteur de CD-rom externe).</p>
<br />
<h3>Faire fonctionner le WIFI</h3>
<br />
<p>Première étape, obtenir une connexion internet. Étant donné l'absence de port RJ45, il n'y a pas d'alternative : le WIFI doit fonctionner. Heureusement, un pilote (assez buggé) existe. L'utilisation d'un gestionnaire de connexion (comme wicd ou network-manager) entraîne un crash du système. Il faudra donc utiliser Wireless Tools, et éventuellement wpa_supplicant.</p>

<p>L'installation est assez facile. Commençons par télécharger l'archive dont on a besoin sur le <a href="http://www.marvell.com/support/downloads/search.do">site de marvell</a>. Pour cela, sélectionnons la plate-forme "Linux 2.6 - fedora", puis le driver nommé "SD-8686-LINUX26-SYSKT-9.70.3.p24-26409.P45-GPL".</p>

<p>Une fois cette archive extraite, on remarque qu'elle en contient deux autres, dont une nommée "SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p24-26409.P45.tar". C'est cette dernière qui nous sera utile, et qu'il faut de nouveau extraire. On obtient alors un dossier "FwImage" contenant deux fichier : helper_sd.bin et sd8686.bin. Renommer helper_sd.bin en sd8686_helper.bin. Copier ensuite  sd8686.bin et sd8686_helper.bin dans le dossier /lib/firmware du spiga.</p>

<p>Le module doit maintenant être chargé, à l'aide de la commande suivante :<br />
<div class="cons"># modprobe libertas_sdio</div></p>

<p>On devrait voir apparaître une nouvelle interface nommé wlan0 :<br />
<div class=cons><pre># iwconfig 
lo        no wireless extensions.

pan0      no wireless extensions.

wlan0     IEEE 802.11b/g  ESSID:""  
          Mode:Managed  Frequency:2.412 GHz  Access Point: Not-Associated   
          Bit Rate:0 kb/s   Tx-Power=15 dBm   
          Retry short limit:8   RTS thr=2347 B   Fragment thr=2346 B   
          Power Management:off
          Link Quality:0  Signal level:0  Noise level:0
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0
</pre></div></p>

<p>On peut démarrer l'interface et vérifier son fonctionnement :
<div class=cons><pre># ifconfig wlan0 up
# iwlist wlan0 scan
wlan0     Scan completed :
          Cell 01 - Address: 00:03:52:xx:xx:xx
                    ESSID:"Auversup sans fil"
                    Mode:Managed
                    Frequency:2.437 GHz (Channel 6)
                    Quality=41/100  Signal level=-89 dBm  Noise level=-96 dBm
                    Encryption key:off
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
          Cell 02 - Address: 00:03:52:xx:xx:xx
                    ESSID:"eduroam"
                    Mode:Managed
                    Frequency:2.437 GHz (Channel 6)
                    Quality=41/100  Signal level=-89 dBm  Noise level=-96 dBm
                    Encryption key:on
                    Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
                              9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
                              48 Mb/s; 54 Mb/s
                    IE: WPA Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : TKIP
                        Authentication Suites (1) : 802.1x
                    IE: IEEE 802.11i/WPA2 Version 1
                        Group Cipher : TKIP
                        Pairwise Ciphers (1) : CCMP
                        Authentication Suites (1) : 802.1x
</pre></div></p>

<p>On voit ici que notre carte détecte deux hotspot. Pour se connecter à "Auversup sans fil", nous allons utiliser les outils iwconfig et dhcpcd :
<div class=cons><pre># iwconfig wlan0 essid "Auversup sans fil"
# dhcpcd wlan0</pre></div></p>

<p>Dans le cas où on souhaite se connecter à un réseau crypté par WPA, il faudra utiliser l'outils wpa_supplicant. Les gestionnaires de connexion, bien plus ergonomiques, font malheureusement crasher le système.</p>
<br />
<h3>Configurer l'écran et le clavier</h3>
<br />
<p>Le wifi est maintenant fonctionnel, mais il reste deux problèmes à régler rapidement :<br />
- l'écran tactile est mal supporté, chaque contact est interprété comme un clic. Chaque mouvement du curseur entraîne donc des "drag and drop".<br />
- la touche "m" est mal reconnue, et le mapping est plus que perfectible</p>
<br />
<b>Désactiver le clic au contact de l'écran</b>

<p>On utilise xinput, afin de remapper le clic gauche de l'écran tactile (reconnu comme une souris) sur une action qui n'existe pas :<bt />
<div class=cons>xinput set-button-map 12 12 12 12 4 5 6 7 8 9 10 11 12</div></p>

<p>Après avoir exécuté cette commande, nous n'avons plus de moyen de cliquer. Nous allons donc remapper une touche du clavier comme étant le clic gauche :<br/>
<div class=cons>xmodmap -e "keycode 133 = Pointer_Button1 Pointer_Button3"</div></p>

<p>Le touche "windows" fera maintenant office de clic gauche, et la combinaison "shift + windows" de clic droit. Mais pour cela, il faut activer l'émulation du clic grâce au clavier avec les commandes suivantes :<br />
<div class=cons><pre>xkbset m
xkbset exp =m</pre></div></p>
<br />
<b>Remapper les autres touches</b>

<p>On peut ensuite remapper quelques touches :<br />
<div class=cons><pre>xmodmap -e "keycode 58 = m M m M exclam"
xmodmap -e "keycode 47 = comma question comma question parenright"
xmodmap -e "keycode 59 = semicolon period semicolon period bracketright"
xmodmap -e "keycode 46 = l L l L dollar"
xmodmap -e "keycode 44 = j J j J less"
xmodmap -e "keycode 45 = k K k K greater"</pre></div></p>

<p>Ces lignes permettent :<br />
- de remapper "m" sur la bonne touche, et d'attribuer "!" à la combinaison "alt-gr + m"<br />
- de ramapper "," "?" et ")" sur la touche "$"<br />
- d'obtenir "$" avec la combinaison de touches "alt-gr + l"<br />
- d'obtenir "<" avec la combinaison de touches "alt-gr + j"<br />
- d'obtenir ">" avec la combinaison de touches "alt-gr + k"</p>

<p>La touche reconnue comme alt-gr est celle comportant une petite maison. Ces réglages peuvent bien entendu être modifiés comme bon vous semble.</p>

<p><B>MAJ : le pilote eGalax semble maintenant fonctionner correctement. On peut le trouver <a href="http://home.eeti.com.tw/web20/drivers/touch_driver/Linux/20120202/eGalaxTouch-3.07.6014-32b-k26.tar.gz">ici</a>.</p>
<p>Il suffit de le décompresser et d'exécuter <code>setup.sh</code>. La calibration de fait ensuite à l'aide de l'utilitaire <code>eGalaxTouch</code>.</p>]]></description>

</item>
<item>
<link>http://st3rk.fr/archives/2011/10/01/on_dit_quen_auvergne_le_climat_est_rude/index.html</link>
<guid isPermaLink="true">http://st3rk.fr/archives/2011/10/01/on_dit_quen_auvergne_le_climat_est_rude/index.html</guid>
<title>On dit qu'en Auvergne, le climat est rude...</title>
<dc:date>2011-10-01T19:45:03+00:00</dc:date>
<dc:creator>St3rk</dc:creator>

<description><![CDATA[<p>Je me demande qui ose répandre ces rumeurs... :-)))</p>
<p><a href="/images/randovelo1.JPG"><img src=/images/mini_randovelo1.JPG alt="photo_velo_1" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo2.JPG"><img src=/images/mini_randovelo2.JPG alt="photo_velo_2" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo3.JPG"><img src=/images/mini_randovelo3.JPG alt="photo_velo_3" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo4.JPG"><img src=/images/mini_randovelo4.JPG alt="photo_velo_4" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo5.JPG"><img src=/images/mini_randovelo5.JPG alt="photo_velo_5" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo6.JPG"><img src=/images/mini_randovelo6.JPG alt="photo_velo_6" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo7.JPG"><img src=/images/mini_randovelo7.JPG alt="photo_velo_7" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo8.JPG"><img src=/images/mini_randovelo8.JPG alt="photo_velo_8" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo9.JPG"><img src=/images/mini_randovelo9.JPG alt="photo_velo_9" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo10.JPG"><img src=/images/mini_randovelo10.JPG alt="photo_velo_10" style="margin: 0 auto; display: block;" /></a></p>
<p><a href="/images/randovelo11.JPG"><img src=/images/mini_randovelo11.JPG alt="photo_velo_11" style="margin: 0 auto; display: block;" /></a></p>]]></description>

</item>
</channel>
</rss>
