<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Autour de Linux</title>
	<atom:link href="http://linux.leunen.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://linux.leunen.com</link>
	<description>Ubuntu, linux, C++, audio, python, ...</description>
	<lastBuildDate>Sat, 15 Jun 2013 09:26:29 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>le dépôt Debian Multimedia doit être supprimé des sources</title>
		<link>http://linux.leunen.com/?p=1371</link>
		<comments>http://linux.leunen.com/?p=1371#comments</comments>
		<pubDate>Sat, 15 Jun 2013 09:16:26 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Debian]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1371</guid>
		<description><![CDATA[Depuis quelques mois, le dépôt non-officiel Debian Multimedia n&#8217;existe plus. Le nom de domaine debian-multimedia.org n&#8217;est donc plus utilisé pour ce dépôt et il a même été racheté par quelqu&#8217;un qui n&#8217;a rien à voir avec Debian. La sécurité du dépôt n&#8217;est donc plus assurée et celui-ci pourrait être utilisé pour introduire des logiciels malicieux [...]]]></description>
				<content:encoded><![CDATA[<p>Depuis quelques mois, le dépôt non-officiel <em>Debian Multimedia</em> n&rsquo;existe plus. Le nom de domaine <em>debian-multimedia.or</em>g n&rsquo;est donc plus utilisé pour ce dépôt et il a même été racheté par quelqu&rsquo;un qui n&rsquo;a rien à voir avec Debian. La sécurité du dépôt n&rsquo;est donc plus assurée et celui-ci pourrait être utilisé pour introduire des logiciels malicieux dans Debian. </p>
<p>Donc, vérifiez dans le fichier <em>/etc/apt/sources.list</em> si le nom de domaine <em>debian-multimedia.org</em> apparaît. Si c&rsquo;est le cas, supprimez toutes les lignes concernées.</p>
<p>De toute façon, ce dépôt était devenu obsolète puisque les paquets qui s&rsquo;y trouvaient on été peu à peu inclus dans les dépôts officiels Debian. </p>
<p>Source: <a href="http://bits.debian.org/2013/06/remove-debian-multimedia.html">http://bits.debian.org/2013/06/remove-debian-multimedia.html</a></p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1371</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quelques améliorations après installation de la 13.04</title>
		<link>http://linux.leunen.com/?p=1363</link>
		<comments>http://linux.leunen.com/?p=1363#comments</comments>
		<pubDate>Mon, 20 May 2013 10:28:05 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1363</guid>
		<description><![CDATA[Depuis quelques mois, il semble que la tendance soit à des interfaces simplifiées, dépouillées parfois et offrant d&#8217;origine peu de possibilités de customisation. C&#8217;est le cas de Gnome que j&#8217;utilise et en particulier de Nautilus. Mais c&#8217;est aussi la tendance en dehors de la sphère Linux si on en croit la nouvelle présentation de Google [...]]]></description>
				<content:encoded><![CDATA[<p>Depuis quelques mois, il semble que la tendance soit à des interfaces simplifiées, dépouillées parfois et offrant d&rsquo;origine peu de possibilités de customisation. C&rsquo;est le cas de Gnome que j&rsquo;utilise et en particulier de Nautilus. Mais c&rsquo;est aussi la tendance en dehors de la sphère Linux si on en croit la nouvelle présentation de Google plus, sortie il y a quelques jours et qui offre aussi une nouvelle version très dépouillée.<br />
Certaines des décisions prises m&rsquo;horripilent car c&rsquo;est souvent des fonctions qui disparaissent. Dans ce cas, je tente de les retrouver par loi-même. C&rsquo;est le cas de certaines que je présente ici.</p>
<h3>Réinstaller gksu</h3>
<p>Bizarrement, depuis la version 13.04 d&rsquo;Ubuntu, le paquet <em>gksu</em> n&rsquo;est plus installé d&rsquo;origine. Cela veut dire que vous ne pouvez plus utiliser gksu ou gksudo pour lancer une application depuis une ligne de commande. Ce n&rsquo;est pas très grave en soi mais quand on utilise régulièrement la ligne de commande, ce choix de ne plus l&rsquo;installer est étrange. Pour retrouver <em>gksu</em> et <em>gksudo</em>, il suffit d&rsquo;installer le paquet <em>gksu</em>:</p>
<pre class="codesource">
$ sudo apt-get install gksu
</pre>
<h3>Voir toutes les applications lancées au démarrage</h3>
<p>Par défaut, les seules applications lancées au démarrage que vous pouvez voir sont celles lancées par vous-même. Pour les voir toutes, ouvrez un terminal et tapez ceci:</p>
<pre class="codesource">
$ sudo sed --in-place 's/NoDisplay=true/NoDisplay=false/g' /etc/xdg/autostart/*.desktop
</pre>
<p>Remarquez aussi que le programme qui permettait de voir ou de modifier les applications lancées au démarrage a aussi disparu des <em>Paramètres systèmes</em> !<br />
Pour la visualiser, cherchez <em>Applications au démarrage</em> dans le <em>dash</em> ou lancez manuellement le programme <em>gnome-session-properties</em> depuis un terminal.</p>
<h3> Nouveau document vide dans Nautilus</h3>
<p>Depuis la nouvelle version de Nautilus utilisée par Ubuntu 13.04, un clic droit ne fait plus apparaître l&rsquo;option <em>Créer un nouveau document</em> &#8211; <em>Document vide</em>. C&rsquo;était pourtant bien pratique ! Pour faire réapparaître l&rsquo;option, il faut qu&rsquo;il y ait quelque chose dans le dossier <em>Modèles</em> qui est créé par Gnome dans votre répertoire <em>home</em>. Créez par exemple un fichier appelé <em>Document Python</em> et contenant ceci:</p>
<pre class="codesource">
!/usr/bin/env python
# -*- coding: UTF-8 -*-
</pre>
<p>Sauvegardez-le dans le répertoire <em>Modèles</em> et vous verrez réapparaître la possibilité de créer un document vide.<br />
J&rsquo;ai créé ici un modèle de document Python mais rien ne vous empêche de créer un modèle d&rsquo;un autre type bien sûr et qui serait plus adapté à vos besoins.</p>
<h3>Ouvrir un terminal dans Nautilus</h3>
<p>Pour avoir l&rsquo;option d&rsquo;ouvrir un terminal à l&rsquo;endroit où on se trouve dans Nautilus en cliquant sur le bouton droit de la souris, il faut installer le paquet <em>nautilus-open-terminal</em>:</p>
<pre class="codesource">
$ sudo apt-get install nautilus-open-terminal
</pre>
<h3>Modifier la couleur de sélection</h3>
<p>Si comme moi, vous êtes dégoûté de la couleur orange, vous pouvez modifier certains paramètres mais la couleur de sélection ne disparaît pas si facilement. Vous pouvez la modifier avec <em>dconf-editor</em> (installez-le au besoin). Naviguez jusqu&rsquo;à <em>org.gnome.desktop.interface</em> et modifiez le paramètre <em>gtk-color-scheme</em> de façon à lui donner la valeur:</p>
<pre class="codesource">
selected_bg_color:#799BBF;
</pre>
<p>Remplacez la valeur de la couleur <em>#799BBF</em> par la couleur que vous aurez choisie.<br />
Si vous préférez ne pas utiliser <em>dconf-editor</em>, ouvrez un terminal et tapez:</p>
<pre class="codesource">
$ gsettings set org.gnome.desktop.interface gtk-color-scheme 'selected_bg_color:#77746c;
</pre>
<h3>Restaurer le zoom dans Nautilus</h3>
<p>Avec la nouvelle version de nautilus dans Ubuntu 13.04, il n&rsquo;y a plus d&rsquo;option visible pour déterminer la taille des icônes dans Nautilus, ce qui s&rsquo;appelait <em>zoom</em> dans les versions précédentes. La fonction est néanmoins encore disponible via d<em>conf-editor</em>. Dans celui-ci allez à <em>org.gnome.nautilus.icon-vie</em>w et modifiez le paramètre <em>default-zoom-level</em>. Vous avez le choix entre <em>smallest</em>, <em>smaller</em>, <em>small</em>, <em>standard</em>, <em>large</em>, <em>larger</em> et <em>largest</em>.<br />
Si vous voulez le faire en ligne de commande, utilisez <em>gsettings</em>:</p>
<pre class="codesource">
$ gsettings set org.gnome.nautilus.icon-view default-zoom-level small
</pre>
<p>Remplacez <em>small</em> dans la ligne ci-dessus par la valeur que vous désirez.</p>
<h3>Supprimer les overlay scrollbars</h3>
<p>Depuis quelques versions d&rsquo;ubuntu, Canonical a modifié la façon dont s&rsquo;affichent les scrollbars. Si vous n&rsquo;utilisez pas Unity et lui préférez Gnome ou tout simplement si vous n&rsquo;aimez pas ces <em>overlay scrollbars</em> comme <em>Canonical</em> les appelle, vous pouvez revenir aux scrollbars d&rsquo;origine en modifiant la clef <em>com.canonical.desktop.interface</em> et en mettant le paramètre <em>scrollbar-mode</em> à <em>normal</em> avec <em>dconf-editor</em>. En ligne de commande:</p>
<pre class="codesource">
$ gsettings set com.canonical.desktop.interface scrollbar-mode normal
</pre>
<h3>Position du dock</h3>
<p>Dans Gnome, vous avez sûrement installé une des extensions qui vous permet d&rsquo;avoir un <em>dock</em>. Bizarrement, ce dock s&rsquo;affiche sur le côté droit de l&rsquo;écran. Pour l&rsquo;avoir à gauche, il y a une clef modifiable avec <em>dconf-editor</em>. C&rsquo;est la clef <em>org.gnome.shell.extensions.dock</em>. Mettez son paramètre <em>position</em> à a valeur souhaitée.<br />
En ligne de commande, pour mettre le dock à gauche, tapez:</p>
<pre class="codesource">
$ gsettings set org.gnome.shell.extensions.dock position left
</pre>
<h3>Lancer un fichier exécutable depuis Nautilus</h3>
<p>C&rsquo;est sans doute le choix que je trouve le plus incompréhensible de la part des développeurs. Depuis la version 13.04, Ubuntu ne donne plus le choix de lancer depuis Nautilus un fichier exécutable texte, tel un script par exemple. Quand on double-clique dessus, il s&rsquo;ouvre dans un éditeur de texte par défaut. Dans les versions précédentes, on avait le choix de soit le lancer dans un terminal soit de l&rsquo;afficher. Maintenant rien de tout ça, il s&rsquo;affiche d&rsquo;office dans l&rsquo;éditeur. Un peu étrange parce que c&rsquo;est quand même la fonction première d&rsquo;un gestionnaire de fichiers que de donner la possibilité d&rsquo;exécuter un fichier.<br />
Pour restaurer cette possibilité, ouvrez <em>dconf-editor</em> et modifiez la clef <em>org.gnome.nautilus.preferences</em>. Remettez le paramètre <em>executable-text-activation</em> à <em>ask</em>.<br />
En ligne de commande:</p>
<pre class="codesource">
$ gsettings set org.gnome.nautilus.preferences xecutable-text-activation ask
</pre>
<h3>Conclusion</h3>
<p>Il est quand même étrange que des fonctions essentielles et qui facilitent la vie des utilisateurs disparaissent d&rsquo;une version à l&rsquo;autre. Heureusement que dans la majorité des cas, nous ayons encore la possibilité de faire machine arrière mais sera-ce encore le cas dans l&rsquo;avenir ? Je pense à la réponse catégorique d&rsquo;un développeur de <em>Gnome-terminal</em> qui a supprimé la fonction de transparence du terminal dans la version 3.8 de Gnome et qui a laconiquement répondu <em>NO</em> à un utilisateur demandant le retour de cette fonction. </p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1363</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Copie d&#8217;un disque dur, GPT et Secure Boot</title>
		<link>http://linux.leunen.com/?p=1350</link>
		<comments>http://linux.leunen.com/?p=1350#comments</comments>
		<pubDate>Tue, 23 Apr 2013 07:57:54 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1350</guid>
		<description><![CDATA[Mon épouse s&#8217;est offert un nouveau PC Asus il y a quelques mois et comme je le fais pour tous mes PC, je voulais faire une image du disque dur de façon à pouvoir restaurer le PC en cas de problème. D&#8217;habitude, ma façon de faire est bien rodée. Je me procure un disque dur [...]]]></description>
				<content:encoded><![CDATA[<p>Mon épouse s&rsquo;est offert un nouveau PC <em>Asus</em> il y a quelques mois et comme je le fais pour tous mes PC, je voulais faire une image du disque dur de façon à pouvoir restaurer le PC en cas de problème.<br />
D&rsquo;habitude, ma façon de faire est bien rodée. Je me procure un disque dur de la même taille que celui d&rsquo;origine, je le connecte avec une interface USB au PC, je boote celui-ci sur un live-CD et je fais la copie avec <em>dd</em>.</p>
<p>Les problèmes ont commencé tout de suite. Impossible de démarrer sur un Live-CD. C&rsquo;est comme si le système ne voyait pas que j&rsquo;avais inséré un disque bootable dans le lecteur CD. Même chose avec les périphériques USB. Je me dis que ce n&rsquo;est pas grave et que l&rsquo;option n&rsquo;est sans doute pas activée dans le BIOS.<br />
D&rsquo;après le manuel du PC, il faut appuyer sur <em>F2</em> lorsque le logo <em>Asus</em> apparaît pour rentrer dans le BIOS. Ca ne marche pas. Finalement, après plusieurs essais, je m&rsquo;aperçois que c&rsquo;est la touche <em>ESC</em> qui fonctionne et permet d&rsquo;accéder au BIOS en choisissant dans un petit menu l&rsquo;option <em>Setup</em>. </p>
<p>Comme le PC est récent, on est évidemment en présence de la nouvelle version du BIOS à savoir <em>UEFI</em> (Unified Extensible Firmware Interface) équipée de la célèbre extension de Microsoft appelée <em>Secure Boot</em>.<br />
Il serait trop simple que <em>l&rsquo;UEFI</em> contienne une option <em>Secure Boot</em> avec la possibilité de l&rsquo;activer ou de la désactiver. Non, après quelques recherches, je découvre qu&rsquo;il faut activer l&rsquo;option <em>Launch CSM</em> dans le menu <em>Boot</em> et activer aussi <em>Launch PXE</em> qui apparaît alors. A la suite de cette manoeuvre apparaît enfin l&rsquo;option <em>Secure Boot</em> dans le menu <em>Security</em>. Désactivez-la. </p>
<p>A partir de maintenant, lorsque vous appuierez sur <em>ESC</em> lors du boot, apparaîtra un menu avec la possibilité de démarrer Windows, le Live-CD introduit ou la clef USB ainsi que de rentrer dans le BIOS <em>UEFI</em>.<br />
D&rsquo;après le manuel de l&rsquo;Asus, un appui sur la touche <em>TAB</em> devrait faire apparaître un tel menu mais chez moi, ça ne fonctionne pas.<br />
Petite remarque supplémentaire, la version d&rsquo;Ubuntu que vous voulez lancer doit évidemment être compatible avec le mode <em>EFI</em>.  </p>
<p>Une fois Ubuntu 12.10 lancé, j&rsquo;ouvre un terminal et j&rsquo;utilise <em>fdisk</em> pour avoir un listing des partitions existantes sur le disque dur. Et là, nouvelle surprise bien que j&rsquo;aurais dû m&rsquo;y attendre:</p>
<pre class="codesource">
$ sudo fdisk -l /dev/sda

WARNING: GPT (GUID Partition Table) detected on '/dev/sda'! The util fdisk doesn't support GPT. Use GNU Parted.


Disk /dev/sda: 1000.2 GB, 1000204886016 bytes
256 heads, 63 sectors/track, 121126 cylinders, total 1953525168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x4ad209d2

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1               1  4294967295  2147483647+  ee  GPT
Partition 1 does not start on physical sector boundary.
</pre>
<p>Le disque dur est partitionné avec une <em>table des partitions GUID</em>. En anglais, <em>GPT</em> pour <em>GUID Partition table</em>. Cette table des partitions autorise, entre autres avantages, des partitions plus grande que 2,2TB. Elle fait partie du standard <em>EFI</em>. Et donc, fdisk ne sait pas lire ce type de table de partitions. </p>
<p>Il existe un utilitaire appelé <em>gdisk</em> par analogie à <em>fdisk</em>, qui permet de gérer les partitions GPT. Bizarrement, il n&rsquo;est pas installé par défaut dans Ubuntu; vous devrez l&rsquo;installer vous-même.</p>
<p><em>GParted</em>, lui est compatible GPT et voici ce qu&rsquo;il me donne comme renseignements sur le disque:<br />
<center><br />
<a href="http://linux.leunen.com/wp-content/uploads/2013/04/Screenshot-from-2013-04-22-18_55_19.png"><img src="http://linux.leunen.com/wp-content/uploads/2013/04/Screenshot-from-2013-04-22-18_55_19-300x182.png" alt="GParted" width="400" height="242" class="aligncenter size-medium wp-image-1353" /></a></center><br />
On voit que la table des partitions est bien de type <em>GPT</em>, que la taille  des secteurs est de 512 bytes ce qui est classique et que le disque fait 1TB.<br />
On remarque aussi qu&rsquo;il y a une partition de 128 MB de type <em>Unknown</em> dont le flag est <em>msftres</em>. Il semblerait, après recherche, que cette partition soit utilisée par Microsoft pour les partitions dynamiques. Le flag <em>msftres</em> signifiant <em>Microsoft Reserved</em>. </p>
<p>Le reste est classique. J&rsquo;ai utilisé <em>dd</em> pour copier tout le disque sur un autre disque connecté en USB 3.0. La copie s&rsquo;est faite en un peu plus de 3 heures avec un débit moyen de 87MB/s. Notez tout de même qu&rsquo;on est très très loin du débit théorique maximal de l&rsquo;USB 3.0 qui est de 600MB/s !</p>
<p>La table des partitions <em>GUID</em> (GPT) est une table dont la taille est variable. Il n&rsquo;est donc plus possible comme à l&rsquo;époque du <em>MBR</em> de la copier simplement mais l&rsquo;utilitaire <em>sgdisk</em> permet de faire cela facilement. Il fait partie du paquet <em>gdisk</em> et est donc installé en même temps que <em>gdisk</em>:</p>
<pre class="codesource">
$ sudo apt-get install gdisk
$ sgdisk -b sda.gpt /dev/sda
</pre>
<p>La première commande installe <em>gdisk</em>, la seconde copie les informations concernant la table des partitions GUID dans un fichier.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1350</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Utiliser Wireshark en tant que simple utilisateur</title>
		<link>http://linux.leunen.com/?p=1328</link>
		<comments>http://linux.leunen.com/?p=1328#comments</comments>
		<pubDate>Wed, 28 Nov 2012 11:27:30 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Réseau]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1328</guid>
		<description><![CDATA[Une astuce lue sur le site Nikaro.net et qui permet d&#8217;utiliser Wireshark en tant que simple utilisateur et donc sans avoir besoin de droits d&#8217;administration. Ouvrez un terminal et tapez les deux commandes ci-dessous. Lorsqu&#8217;on vous demande si vous voulez autoriser les utilisateurs non-privilégiés à capturer des paquets, répondez &#60;OUI&#62;: $ sudo dpkg-reconfigure wireshark-common $ [...]]]></description>
				<content:encoded><![CDATA[<p>Une astuce lue sur le site <a href="http://www.nikaro.net/2012/11/wireshark-sous-ubuntu-avec-utilisateur.html">Nikaro.net</a> et qui permet d&rsquo;utiliser <em>Wireshark</em> en tant que simple utilisateur et donc sans avoir besoin de droits d&rsquo;administration.</p>
<p>Ouvrez un terminal et tapez les deux commandes ci-dessous. Lorsqu&rsquo;on vous demande si vous voulez autoriser les utilisateurs non-privilégiés à capturer des paquets, répondez &lt;OUI&gt;:</p>
<pre class="codesource">
$ sudo dpkg-reconfigure wireshark-common
$ sudo usermod -aG wireshark &lt;votre_login&gt;
</pre>
<p>Ensuite, il suffit de fermer et de ré-ouvrir la session. </p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1328</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monter un système de fichiers par FTP</title>
		<link>http://linux.leunen.com/?p=1317</link>
		<comments>http://linux.leunen.com/?p=1317#comments</comments>
		<pubDate>Sun, 18 Nov 2012 17:23:05 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Arch Linux]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1317</guid>
		<description><![CDATA[L&#8217;hébergeur sur les serveurs duquel se trouve ce site web propose dans son offre 40GB pour la sauvegarde de données personnelles en plus des 60GB d&#8217;espace réservés à l&#8217;hébergement. Le seul inconvénient de cet espace personnel, c&#8217;est qu&#8217;il n&#8217;est, à ma connaissance, accessible que via une connexion FTP. Ce n&#8217;est pas très grave, il existe [...]]]></description>
				<content:encoded><![CDATA[<p>L&rsquo;hébergeur sur les serveurs duquel se trouve ce site web propose dans son offre 40GB pour la sauvegarde de données personnelles en plus des 60GB d&rsquo;espace réservés à l&rsquo;hébergement. Le seul inconvénient de cet espace personnel, c&rsquo;est qu&rsquo;il n&rsquo;est, à ma connaissance, accessible que via une connexion <em>FTP</em>.<br />
Ce n&rsquo;est pas très grave, il existe des solutions permettant de monter un système de fichiers distant via <em>FTP</em> et on va voir dans ce qui suit que c&rsquo;est très simple.</p>
<p>La solution choisie est d&rsquo;utiliser <em>curlftpfs</em> basée sur <em>FUSE</em> et qui va se charger de tout le boulot et bien plus puisqu&rsquo;il permet des reconnexions automatiques par exemple.<br />
On commence donc par installer <em>curlftpfs</em>:</p>
<pre class="codesource">
$ sudo aptitude install curlftpfs
</pre>
<p>Ensuite ajoutez-vous en tant qu&rsquo;utilisateur au groupe <em>fuse</em> de façon à ne pas devoir être <em>root</em> pour pouvoir monter le système de fichiers distant:</p>
<pre class="codesource">
$ sudo usermod -aG fuse &lt;votre_login&gt;
</pre>
<p>L&rsquo;inclusion au groupe <em>fuse</em> ne sera effective qu&rsquo;après vous être déconnecté de votre session et reconnecté. A ce moment, il ne reste plus qu&rsquo;à monter le répertoire distant dans un répertoire local de votre choix de cette façon:</p>
<pre class="codesource">
$ curlftpfs ftp://ftp.mon_site.com/ mon_répertoire_local -o user=user:password,uid=1000,gid=1000
</pre>
<p>Une fois la commande tapée, le site <em>FTP</em> distant sera monté dans le répertoire que vous avez indiqué. Cela veut dire que vous y aurez accès simplement en utilisant <em>Nautilus</em> par exemple mais tout autre gestionnaire de fichier fera tout aussi bien l&rsquo;affaire.</p>
<p>Si vous voulez que le site <em>FTP</em> distant soit monté automatiquement au démarrage de votre PC, il faut ajouter une ligne au fichier <em>/etc/fstab</em> au moyen de votre éditeur de texte favori.</p>
<pre class="codesource">
$ gksudo gedit /etc/fstab
</pre>
<p>La ligne à ajouter devra ressembler à ceci:</p>
<pre class="codesource">
curlftpfs#login:password@ftp.mon_site.com	mon_répertoire_local	fuse	rw,user,allow_other,uid=1000,_netdev	0	0
</pre>
<p>Remplacez bien sûr dans les lignes ci-dessus <em>login</em> et <em>password</em> par ceux nécessaires pour se connecter par <em>FTP</em> ainsi que </em> et mon_répertoire_local par celui que vous voulez. l&rsquo;uid=1000 permet de vous attribuer les fichiers. Si votre uid et gid ne sont pas égal à 1000, mettez la valeur correspondant à votre nom d&rsquo;utilisateur et à votre groupe.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1317</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Autoriser l&#8217;accès aux ports séries sous Ubuntu/Debian</title>
		<link>http://linux.leunen.com/?p=1311</link>
		<comments>http://linux.leunen.com/?p=1311#comments</comments>
		<pubDate>Sat, 10 Nov 2012 16:55:14 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Debian]]></category>
		<category><![CDATA[Ubuntu]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1311</guid>
		<description><![CDATA[Sous Ubuntu ou Debian, un utilisateur non root ne peut avoir accès aux ports série de type ttyS0 ou ttyUSB0 s&#8217;il n&#8217;est pas membre du groupe dialout ! Autrement dit, il suffit de vous ajouter à ce groupe pour y avoir accès. Pour cela, il existe une commande très simple: $ sudo usermod -aG dialout [...]]]></description>
				<content:encoded><![CDATA[<p>Sous Ubuntu ou Debian, un utilisateur non root ne peut avoir accès aux ports série de type <em>ttyS0</em> ou <em>ttyUSB0</em> s&rsquo;il n&rsquo;est pas membre du groupe <em>dialout</em> ! Autrement dit, il suffit de vous ajouter à ce groupe pour y avoir accès.<br />
Pour cela, il existe une commande très simple:</p>
<pre class="codesource">
$ sudo usermod -aG dialout votre_login
</pre>
<p>C&rsquo;est tout simple et ça m&rsquo;évitera de m&rsquo;énerver la prochaine fois en me demandant pourquoi le programme que j&rsquo;écris n&rsquo;a pas accès aux ports série et de perdre ainsi des heures en débogage.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1311</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installer CyanogenMod 9 sur un Samsung Galaxy S2</title>
		<link>http://linux.leunen.com/?p=1300</link>
		<comments>http://linux.leunen.com/?p=1300#comments</comments>
		<pubDate>Sat, 06 Oct 2012 09:56:46 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1300</guid>
		<description><![CDATA[Après avoir installé ClockWorkMod comme indiqué dans l&#8217;article Rooter le Samsung Galaxy S2 sous ICS, le pas suivant est évidemmment d&#8217;installer une ROM alternative comme celle de CyanogenMod. L&#8217;intérêt est d&#8217;installer un firmware optimisé basé sur Android mais offrant un certain nombre de possibilités supplémentaires. Dans mon cas, il s&#8217;agissait aussi de contourner un bug [...]]]></description>
				<content:encoded><![CDATA[<p>Après avoir installé <em>ClockWorkMod</em> comme indiqué dans l&rsquo;article <a href="http://linux.leunen.com/?p=1295">Rooter le Samsung Galaxy S2 sous ICS</a>, le pas suivant est évidemmment d&rsquo;installer une ROM alternative comme celle de <em>CyanogenMod</em>.<br />
L&rsquo;intérêt est d&rsquo;installer un firmware optimisé basé sur <em>Android</em> mais offrant un certain nombre de possibilités supplémentaires. Dans mon cas, il s&rsquo;agissait aussi de contourner un bug du Wifi qui provoque des plantages de mon mobile sous <em>ICS</em> et également de ne plus être limité par la transformation des sms en mms dès que le nombre de caractères dépasse les 160 caractères fatidiques du sms. </p>
<p>On va donc se servir du mode recovery de <em>ClockWorkMod</em> pour installer la mise à jour vers <em>CyanogenMod</em>. <em>CyanogenMod</em> ne contient pas les applications <em>Google</em>; il faudra, toujours en mode recovery, installer ces applications nous-même. Vous verrez que cela se fait très simplement.</p>
<p>La toute première chose à faire est évidemment de faire un backup de vos données avec un programme comme <em>Titanium Backup</em> d&rsquo;où l&rsquo;intérêt d&rsquo;avoir au préalable des droits root. Ceci vous permettra de restaurer vos données après la mise à jour du firmware. </p>
<p>Une fois le backup fait, téléchargez les fichiers contenant d&rsquo;une part <a href="http://download.cyanogenmod.com/?device=galaxys2"><em>CyanogenMod 9 Nightly</em></a> et d&rsquo;autre part les <a href="http://wiki.cyanogenmod.com/index.php?title=Latest_Version/Google_Apps"><em>Google Apps</em></a> et placez-les sur la sdcard de votre Samsung Galaxy S2 ou sur la carte micro SD externe si vous en avez une.  </p>
<p>Eteignez votre smartphone et redémarrez-le en mode recovery par appui simultané sur les touches <em>Volume Up + Home + Power</em>.<br />
Lorsque votre smartphone a redémarré, vous devriez voir le menu recovery de <em>ClockWorkMod</em> s&rsquo;afficher.<br />
Avant tout, nettoyez la partition de cache et faites un factory reset. Sans cela, l&rsquo;installation de CyanogenMod risque de ne pas se faire correctement. Dans le menu recovery choisissez d&rsquo;abord <em>Wipe cache partition</em> puis <em>Wipe data/factory reset</em>.<br />
Ensuite, choisissez <em>Install zip from sdcard</em>, sélectionnez le fichier  <em>cm-9-xxxxxxxx-NIGHTLY-galaxys2.zip</em>, confirmez et attendez que ce soit fait. A ce moment, choisissez dans le menu <em>Reboot system now</em>.<br />
Votre smartphone devrait rebooter, afficher le logo <em>CyanogenMod</em> puis devenir opérationnel.</p>
<p>Maintenant que CyanogenMod est installé, si vous parcourez les applications fournies, vous vous apercevrez vite qu&rsquo;aucune application Google n&rsquo;est présente même pas le Google Play Store ce qui empêche l&rsquo;installation simple d&rsquo;applications.<br />
Comme dit plus haut, les Google Apps doivent être installées séparément au moyen du fichier que vous avez déjà téléchargé et mis sur la sdcard de votre gsm.<br />
Redémarrez votre mobile en mode recovery comme indiqué ci-dessus et installez le fichier <em>gapps-ics-xxxxxxxx-signed.zip</em> en choisissant dans le menu <em>ClockWorkMod recovery</em>, <em>Install zip from sdcard</em>. Lorsque c&rsquo;est fait, rebootez votre Samsung Galaxy S2 et vous voilà prêt à profiter de <em>CyanogenMod</em> pleinement. </p>
<p>Dans mon cas, l&rsquo;installation de <em>CyanogenMod</em> a réglé mes problèmes de WiFi et de sms. Je suis donc pleinement satisfait de mon choix. <em>CyanogenMod</em> est de plus très stable et je n&rsquo;ai rencontré qu&rsquo;un seul bug vraiment pas gênant du tout &#8211; lors de la modification d&rsquo;un contact, la modification n&rsquo;est pas toujours enregistrée correctement. Effet colatéral de cette installation, cela redonne un coup de jeune à votre mobile et on a vraiment l&rsquo;impression d&rsquo;avoir un nouveau smartphone en main.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1300</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Rooter le Samsung Galaxy S2 sous ICS</title>
		<link>http://linux.leunen.com/?p=1295</link>
		<comments>http://linux.leunen.com/?p=1295#comments</comments>
		<pubDate>Sun, 30 Sep 2012 16:31:16 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Android]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1295</guid>
		<description><![CDATA[Rooter un smartphone comme le Samsung Galaxy S2, c&#8217;est lui adjoindre des droits root, des droits d&#8217;administration. Mais à quoi cela peut-il servir sur un smartphone ? Cela permet d&#8217;installer tout un tas d&#8217;applications qui ont besoin de ces droits root pour fonctionner (par exemple Titanium Backup qui fait un backup complet du mobile, icônes [...]]]></description>
				<content:encoded><![CDATA[<p>Rooter un smartphone comme le <em>Samsung Galaxy S2</em>, c&rsquo;est lui adjoindre des droits root, des droits d&rsquo;administration. Mais à quoi cela peut-il servir sur un smartphone ? Cela permet d&rsquo;installer tout un tas d&rsquo;applications qui ont besoin de ces droits root pour fonctionner (par exemple <a href="https://play.google.com/store/apps/details?id=com.keramidas.TitaniumBackup&#038;feature=search_result#?t=W251bGwsMSwxLDEsImNvbS5rZXJhbWlkYXMuVGl0YW5pdW1CYWNrdXAiXQ..">Titanium Backup</a> qui fait un backup complet du mobile, icônes et positions comprises). C&rsquo;est aussi nécessaire pour modifier le thème affiché et en règle générale pour toute modification agissant sur le file système.</p>
<p>Etant donné que mon <em>Samsung Galaxy S2</em> est utilisé de manière professionnelle, je voulais une méthode permettant de le rooter qui ne soit pas trop intrusive. Pas question d&rsquo;installer une <em>ROM</em> comme <em>CyanogenMod</em> par exemple. Il fallait aussi qu&rsquo;elle soit sûre et simple avec possibilité de faire machine arrière dans le cas où je devrais supprimer les droits root.<br />
Autant le dire tout de suite, il existe plein de méthodes différentes. Certaines très simples, d&rsquo;autres nécessitant l&rsquo;installation de nouveaux kernels au moyen d&rsquo;un programme spécialisé. Dans les plus simples, il y a par exemple l&rsquo;application <a href="http://unlockroot.com/"><em>UnlockRoot</em></a> qui en un click vous promet de rooter votre smartphone. La seule chose qui me pose problème avec cette application est qu&rsquo;elle impose l&rsquo;installation des drivers USB, autrement dit l&rsquo;installation de <a href="http://www.samsung.com/be_fr/support/usefulsoftware/KIES/JSP"><em>Samsung Kies</em></a> et qu&rsquo;elle ne fonctionne que sous Windows. Comme je suis sous linux, ça me pose évidemment un gros problème.</p>
<p>J&rsquo;ai finalement opté pour la méthode décrite <a href="http://forum.xda-developers.com/showthread.php?t=1501719">ici</a>. Elle ne nécessite que le téléchargement de deux fichiers. Le reste du travail est fait par le Galaxy S2:</p>
<ol>
<li>Téléchargez <a href="http://dl.dropbox.com/u/34053267/CWM.zip">CMW.zip</a> et <a href="https://dl.dropbox.com/u/34053267/SU-Busybox-Installer.zip">SU-Busybox-Installer.zip</a></li>
<li>Connectez le <em>Galaxy S2</em> via USB au PC en tant que stockage de masse. Menu <em>Paramètres/Plus&#8230;/Utilitaires USB/</em> et cliquez sur le bouton <em>Connecter le stockage au PC</em>. Ensuite branchez le cordon USB.</li>
<li>Placez ensuite les fichiers téléchargés ci-dessus sur la sdcard.</li>
<li>Eteignez votre smartphone et rallumez-le en mode <em>Eecovery</em> en appuyant simultanément sur les touches <em>Home + Volume Up + Power</em>.</li>
<li>Lorsque le menu apparaît, choisissez <em>Apply update from external storage</em> et sélectionnez le fichier <em>CWM.zip</em>. Un nouveau menu doit apparaître après quelques instants. </li>
<li>Dans le menu de <em>CWM recovery</em>, choisissez <em>Install zip from sdcard</em>. De nouveau, sélectionnez dans la liste le fichier <em>SU-Busybox-Installer.zip</em></li>
<li>Il suffit ensuite de rebooter le smartphone pour terminer l&rsquo;installation en choisissant dans le menu <em>Reboot Device</em>.</li>
</ol>
<p>Une fois votre <em>Galaxy S2</em> rebooté, il est rooté. Pour vous en convaincre, installez une application comme par exemple <a href="https://play.google.com/store/apps/details?id=pl.solidexplorer&#038;feature=search_result#?t=W251bGwsMSwxLDEsInBsLnNvbGlkZXhwbG9yZXIiXQ.."><em>Solid Explorer</em></a> qui est un file Manager et qui vous donne accès, quand le smartphone est rooté, à tout le file système. </p>
<p>Il est possible de supprimer l&rsquo;accès root en téléchargeant le fichier <a href="http://dl.dropbox.com/u/34053267/SU-Uninstaller-signed.zip"><em>SU-Uninstaller-Signed.zip</em></a> et en l&rsquo;installant comme ci-dessus. Refaites toute la procédure et remplacez au point 6 le fichier <em>SU-Busybox-Installer.zip</em> par <em>SU-Uninstaller-Signed.zip</em>. </p>
<h3>Update du 13 janvier 2013: </h3>
<p>Un des contributeurs au forum XDA vient de publier un petit soft qui permet de rooter le Galaxy S2 et qui est compatible avec toutes les versions d&rsquo;Android, de la 2.2 à la 4.1. Seul inconvénient, il n&rsquo;est disponible que pour Windows. Son nom: Unlock Root 3. Voir le tutoriel <a href="http://www.pointgphone.com/tutoriel-comment-rootez-rapidement-votre-smartphone-grace-a-unlock-root-3-29230">ici</a>. Le soft est téléchargeable à cette <a href="http://uprapide.com/telechargement/pgp/UnlockRoot_downloader_by_UnlockRoot.exe">adresse</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1295</wfw:commentRss>
		<slash:comments>30</slash:comments>
		</item>
		<item>
		<title>Python: les itérateurs et générateurs</title>
		<link>http://linux.leunen.com/?p=1286</link>
		<comments>http://linux.leunen.com/?p=1286#comments</comments>
		<pubDate>Wed, 19 Sep 2012 12:55:44 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1286</guid>
		<description><![CDATA[Pour une petite application que j&#8217;avais décidé d&#8217;écrire en Python, j&#8217;avais besoin de parcourir des chaînes de caractères en prenant les caractères 3 par 3. En tant qu&#8217;amateur de C++, ma première idée était forcément de créer une boucle for du genre de celle qu&#8217;on écrit en C++: std::string my_string("azertyuiop"); for(unsigned int i = 0; [...]]]></description>
				<content:encoded><![CDATA[<p>Pour une petite application que j&rsquo;avais décidé d&rsquo;écrire en Python, j&rsquo;avais besoin de parcourir des chaînes de caractères en prenant les caractères 3 par 3. En tant qu&rsquo;amateur de C++, ma première idée était forcément de créer une boucle <em>for</em> du genre de celle qu&rsquo;on écrit en C++:</p>
<pre class="codesource">
std::string my_string(<span class="quotedstring">"azertyuiop"</span>);
<span class="reservedname">for</span>(<span class="reservedname">unsigned</span> <span class="reservedname">int</span> i  = 0; i &lt; my_string.length(); i+=3)
{
  std::cout &lt;&lt; my_string.substr(i, 3) &lt;&lt; std::endl;
}
</pre>
<p>Cette façon d&rsquo;écrire une boucle n&rsquo;est pas très compliquée à transcrire en Python. On peut utiliser la fonction <em>range()</em> à laquelle on peut passer des paramètres dont le début, la fin et le &lsquo;pas&rsquo; (step) de la boucle. Cela donne quelque chose comme:</p>
<pre class="codesource">
my_string = <span class="quotedstring">"azertyuiop"</span>
<span class="reservedname">for</span> i <span class="reservedname">in</span> range(0, len(my_string), 3):
  <span class="reservedname">print</span> i, t[i:i + 3]
</pre>
<p>C&rsquo;est considéré comme une méthode pas très pythonique. On préférera utiliser un <em>itérateur</em> ou un <em>générateur</em>.<br />
Voyons brièvement et basiquement de quoi il s&rsquo;agit.</p>
<h3>Les itérateurs</h3>
<p>Les <em>itérateurs</em> sont des objets permettant de parcourir facilement des containers que ce soient des strings &#8211; qui ne sont que des containers de caractères &#8211; des listes ou des containers d&rsquo;objets. Par exemple, pour récupérer tous les caractères constituant une chaîne de caractères, on procède comme ceci:</p>
<pre class="codesource">
for c in my_string:
  print c
</pre>
<p>C&rsquo;est très simple à utiliser.</p>
<p>Il est très facile aussi de créer soi-même un <em>itérateur</em> de façon à ce qu&rsquo;il se plie à ce que l&rsquo;on veut faire. Pour cela, il suffit de créer un objet qui contient deux méthodes: __iter__() et next().<br />
<em>__iter__()</em> est appelé implicitement au début de la boucle et doit renvoyer un objet itérateur.<br />
<em>next()</em> doit lever une exception <em>StopIteration</em> quand on est à la fin de la boucle et qu&rsquo;il n&rsquo;y a plus d&rsquo;éléments à traiter. </p>
<p>Dans le cas d&rsquo;un <em>itérateur</em> qui renvoie les caractères trois par trois, <em>l&rsquo;itérateur</em> ressemblerait à ceci:</p>
<pre class="codesource">
<span class="reservedname">class</span> triplet:
  <span class="reservedname">def</span> __init__(self, data):
    self.data = data
    self.count = 0
    self.length = len(data)
  
  <span class="reservedname">def</span> __iter__(self):
    <span class="reservedname">return</span> self
    
  <span class="reservedname">def</span> next(self):
    <span class="reservedname">if</span> self.count &gt; len(self.length):
      <span class="reservedname">raise</span> StopIteration
    <span class="reservedname">else</span>:
      result = self.data[self.count:self.count+3]
      self.count += 3
      <span class="reservedname">return</span> result
</pre>
<p>Et on peut l&rsquo;utiliser dans une boucle de cette façon:</p>
<pre class="codesource">
test = triplet(<span class="quotedstring">"azertyuiop"</span>)
     <span class="reservedname">for</span> item <span class="reservedname">in</span> test:
       <span class="reservedname">print</span> item
</pre>
<h3>Les générateurs</h3>
<p>Cette méthode utilisant un objet <em>itérateur</em> me plaît bien. C&rsquo;est clair, efficace et très OOP.<br />
Il existe une autre méthode qui est très simple et qui utilise les principes de l&rsquo;<em>itérateur</em> même si c&rsquo;est bien caché. Il s&rsquo;agit des fonctions <em>générateurs</em>. Il s&rsquo;agit en fait d&rsquo;une fonction qui retourne un <em>itérateur</em> qui, lui-même, peut être utilisé pour contrôler une boucle par exemple.<br />
Le simple fait d&rsquo;utiliser le mot-clef <em>yield</em> fait de la fonction une fonction <em>générateur</em>. Lorsque ce mot clef est rencontré, il retourne la valeur en argument et l&rsquo;execution est suspendue jusqu&rsquo;à la prochaine itération. </p>
<p>Dans notre cas, cela donne ceci:</p>
<pre class="codesource">
<span class="reservedname">def</span> triplet(str):
  current=0
  <span class="reservedname">while</span> current &lt;= len(str):
    yield str[current:current+3]
    current += 3
</pre>
<p>Et on l&rsquo;utilise dans une boucle comme d&rsquo;habitude:</p>
<pre class="codesource">
<span class="reservedname">for</span> t <span class="reservedname">in</span> triplet(<span class="quotedstring">"azertyuiop"</span>):
  <span class="reservedname">print</span> t
</pre>
<p>Comme on l&rsquo;a vu brièvement ici, les <em>itérateurs</em> et les <em>générateurs</em> sont très simple d&rsquo;emploi et on les retrouve très fréquemment dans les codes écrits en Python. Je vous renvoie à la documentation si vous voulez en savoir plus.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1286</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ACTA suite et fin</title>
		<link>http://linux.leunen.com/?p=1277</link>
		<comments>http://linux.leunen.com/?p=1277#comments</comments>
		<pubDate>Wed, 04 Jul 2012 19:05:34 +0000</pubDate>
		<dc:creator>Michel Leunen</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://linux.leunen.com/?p=1277</guid>
		<description><![CDATA[Aujourd&#8217;hui, le mercredi 4 juillet 2012 est un grand jour. Le parlement européen a définitivement enterré ACTA par un vote sans appel: 478 voix contre, seulement 39 pour. C&#8217;est sans appel. Merci à tout ceux qui ont, avec leur faible moyen, fait pression sur les élus pour qu&#8217;ils votent contre ACTA. A petite échelle, le [...]]]></description>
				<content:encoded><![CDATA[<p>Aujourd&rsquo;hui, le mercredi 4 juillet 2012 est un grand jour. Le parlement européen a définitivement enterré ACTA par un vote sans appel: 478 voix contre, seulement 39 pour. C&rsquo;est sans appel.<br />
Merci à tout ceux qui ont, avec leur faible moyen, fait pression sur les élus pour qu&rsquo;ils votent contre ACTA. A petite échelle, le pouvoir a été rendu au peuple tant je suis persuadé que sans la mobilisation sur internet, le résultat eut été tout autre. </p>
<p>J&rsquo;avais attiré votre attention dans <a href="http://linux.leunen.com/?p=1250">un autre article</a> sur le peu de réponses obtenues lors de l&rsquo;interrogation par email des élus belges au parlement. Je n&rsquo;avais reçu à l&rsquo;époque que deux réponses dont une franchement favorable au décret.<br />
Aujourd&rsquo;hui, un des députés (Bart Staes – Groene (écolo)) m&rsquo;a fait parvenir le mail suivant:</p>
<blockquote><p>STAES Bart bart.staes@europarl.europa.eu via leunen.com<br />
16:04 (4 hours ago)</p>
<p>to michel </p>
<p>Dear,</p>
<p>Thank you very much for your email expressing your concerns about ACTA.<br />
Today the European Parliament voted on this agreement and I am one of the 478 that voted against!</p></blockquote>
<p>Cela ressemble fort à de la récupération mais ne gâchons pas notre plaisir quand même. </p>
<p>ACTA n&rsquo;est plus mais gardons à l&rsquo;esprit que ceux qui veulent restreindre nos libertés vont revenir à la charge avec un autre décret . Restons vigilants.</p>
]]></content:encoded>
			<wfw:commentRss>http://linux.leunen.com/?feed=rss2&#038;p=1277</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
