[Bug fix] rssLounge for Android v0.2.1
Un petit billet rapide pour vous annoncer qu’une petite mise à jour de rssLounge for Android vient d’être publiée. Cette mise à jour corrige un bug qui m’a été reporté par plusieurs utilisateurs et qui ne permettait pas d’avoir de caractères spéciaux dans son login ou son mot de passe… Bref, ce problème est maintenant corrigé et a donc donné lieu à une version 0.2.1 de cette application. Comme d’habitude (!!) toutes les infos concernant rssLounge for Android et notamment son téléchargement se trouvent ici :
Mise à jour de rssLounge pour Android (v0.2)
Et voilà! Une semaine après la première release de « rssLounge for Android », la version 0.2 est là. En si peu de temps ce n’est évidemment pas une révolution mais il y a malgré tout un certain nombre de nouveautés. En voici la liste :
- Si aucune URL n’a été spécifiée (au premier lancement par exemple), l’écran de préférence est lancé au démarrage.
- Le support d’HTTPS a été ajouté! Je n’ai pas encore trouvé de solution idéale, donc j’ai dû faire comme grand nombre d’applications Android : les certificats ne sont pas vérifiés. Ce support n’est pas automatique. Il faut cocher une option dans les préférences pour autoriser en toute connaissance de cause ce type de connexion.
- Un menu contextuel est disponible sur l’écran listant les flux. Pour le faire apparaitre, il suffit de faire un appui long sur un des items de la liste. Ce menu permet d’ouvrir le flux dans le navigateur web du smartphone ou de marquer le flux comme lu ou non lu.
- Un nouveau menu est disponible aussi lorsqu’on lit un flux. Cette entrée permet encore une fois d’ouvrir le flux dans un navigateur.
- Dans la fenêtre dans laquelle les flux sont listés, il est maintenant possible de switcher entre « All » et « Only unread » sans avoir à retourner en page d’accueil
- Enfin, un dizaine de bugs ont été corrigés : vérification du préfixe « http:// », problèmes d’affichage, problèmes de traduction, etc…

Et voilà! D’autres choses devraient arriver rapidement et notamment des gestures permettant de passer rapidement d’un flux à un autre en mode lecture.
Comme pour la première fois, toutes les infos sont disponibles à cette adresse : http://www.francoistessier.info/rssLoungeAndroid/. Vous y trouverez notamment un QRcode pour télécharger l’apk qui va bien.
Enfin, n’hésitez pas à me donner vos avis, remarques, suggestions. Pour les bugs, la page SourceForge du projet a une section « tickets » parfaite pour ça.
rssLounge for Android v0.1 is out!
Après une pause de près d’un an dans son développement, je me suis enfin décidé à sortir une première version de rssLounge pour Android. Cette sortie a été possible grâce à la collaboration de Tobias Zeising, créateur de rssLounge, qui a bien voulu adapter la partie web afin de pouvoir l’exploiter depuis un terminal Android. Cette version smartphone de rssLounge permet tout simplement la gestion de ses flux de façon synchronisée avec votre instance web. Elle nécessite, côté serveur, la version 1.7 de l’application.
Comme vous pouvez le voir, cette première version est estampillée 0.1. Concrètement, cela signifie que l’application est fonctionnelle mais qu’elle ne fait pour le moment que le strict minimum à savoir : lire ses flux RSS (filtres « all » et « only unread » disponibles) et les marquer comme lu/non lu, tout ça de façon synchronisée. C’est peu en terme de fonctionnalités mais cette partie était certainement la plus complexe à mettre en oeuvre donc des nouveautés devraient apparaître plus rapidement.
Parmi les ajouts que je suis en train d’implémenter, il devrait y avoir la gestion du HTTPS, quelques gestures pour naviguer dans l’application ou encore quelques petites corrections de bugs.
Enfin, cette application est évidemment gratuite et open-source! Elle est distribuée sous licence AGPL. Elle n’est pas disponible sur le Market Android et ne le sera probablement jamais… En revanche, je réfléchis à l’idée de la proposer d’ici peu sur un market alternatif comme YAAM ou le CyanogenMarket si celui-ci voit le jour.
Toutes les infos concernant « rssLounge for Android » sont disponibles à cette adresse : http://www.francoistessier.info/rssLoungeAndroid/
N’hésitez pas à me donner vos avis ou suggestions.
Programmation Arduino en ligne de commande
Aujourd’hui, c’est un nouveau rédacteur qui fait son entrée sur ce blog! Fabien nous propose un article sur la programmation des cartes Arduino depuis le terminal.
À propos de l’auteur : Fabien Danieau est doctorant à Rennes, entre l’INRIA et Technicolor. Titulaire d’un diplôme d’Ingénieur en Cognitique, ses travaux portent actuellement sur l’application des interfaces haptiques pour le multimédia.
Arduino est une plateforme de prototypage électronique. Cela se présente sous la forme d’une petite carte, avec un circuit imprimé et un microprocesseur, qui permet de réaliser très facilement et très rapidement des montages électroniques. De plus un éditeur simplissime est fourni afin que les débutants en programmation puisse s’adonner aux joies de l’électronique. Un langage basé sur le C++ est proposé, les programmes sont appelés « sketch ». Pour couronner le tout, hardware et software sont tous les deux open source. Ainsi cette plateforme connaît un véritable engouement et les projets fleurissent sur la toile.
La force de ce produit est donc sa simplicité. L’environnement de programmation y contribue en grande partie. Seules quelques lignes de codes suffisent à allumer ses premières LEDs. Cependant cette simplicité devient vite une limite lorsque l’on veut développer de plus gros projets. Gérer un code compliqué avec beaucoup de dépendances peut devenir un vrai casse-tête. De plus l’éditeur n’est encore qu’une version alpha (0022 à l’écriture de ce billet) et n’est donc pas exempt de bugs. Sur ma machine, la carte n’est pas toujours détectée lors de son branchement à un port USB. De ce fait il m’est parfois impossible de charger un programme…
Bref pour diverses raisons on peut vouloir comprendre ce qui se passe derrière l’éditeur. Ne serait-ce que pour être capable d’utiliser un autre environnement de programmation. Nous allons donc voir comment compiler et charger un sketch à la main. Suite à cela, diverses alternatives à l’environnement de développement fourni par Arduino seront proposées.
Pré-requis
Une grande partie des explications seront bâties sur l’exemple suivant. Il est volontairement basique, les deux premiers tutos du site Arduino suffisent à le comprendre (cf. tuto Blink et tuto DigitalReadSerial). La seule chose que fait ce code est d’allumer la LED liée à la pin 13 et d’écrire « Starting » puis « Running » toutes les secondes et demi sur la sortie série.
int ledPin = 13; void setup(){ pinMode(ledPin, OUTPUT); Serial.begin(115200); Serial.println("Starting"); } void loop(){ digitalWrite(ledPin, HIGH); delay(1000); digitalWrite(ledPin, LOW); delay(500); Serial.println("Running"); } |
Pour la suite de l’article nous supposerons que ce code fonctionne sans soucis sur la carte en utilisant l’éditeur Arduino. Nous appellerons ce sketch « blink.pde ». Vous devriez obtenir un résultat similaire à celui-ci.
A titre indicatif l’ensemble des manipulations présentées ont été effectué sur une distribution Linux Debian Squeeze 64bits, une carte Arduino Uno SMD (microprocesseur atmel mega 328p) et l’éditeur en version 0022 (téléchargé depuis le site officiel. La version dans les dépots de Debian est obsolète).
Le secret de l’IDE Arduino
L’idée de ce billet est de compiler l’exemple précédent sans passer par l’éditeur d’Arduino. Une première étape consiste à demander à l’éditeur de nous expliquer ce qu’il fait lorsqu’il compile. En faisant cela nous pourrons comprendre les mécanismes sous-jacents à la compilation et au chargement de sketchs sur la carte.
Par défaut l’éditeur n’est pas très loquace. Pour le rendre un peu plus bavard il faut modifier quelques options dans les préférences. Ouvrez le fichier de préférences avec votre éditeur favori.
gedit .arduino/preferences.txt |
Puis rajoutez les deux options suivantes à la fin du fichier.
build.verbose=true upload.verbose=true |
Une fois ceci fait, lancez une nouvelle compilation du programme. Tout le processus de compilation est détaillé! Quelque chose dans ce goût là devrait apparaître.

La deuxième option que nous avons rajouté sert à afficher le même genre d’information mais lors du chargement (upload) du programme sur la carte.
Si on regarde ce que nous affiche l’éditeur lors de la compilation on peut voir des commandes du style « avr-gcc », « avr-ar » ou encore « avr-objcopy ». La plateforme Arduino repose en fait sur la solution open source avrdude qui permet de communiquer avec des microprocesseurs atmel. Il suffit donc d’utiliser directement cet outil pour programmer notre carte!
Avant de se lancer dans le détail du processus de compilation, il faut d’abord installer avrdude. Normalement un simple apt-get devrait suffire chez les utilisateurs de Debian et autres distributions dérivées.
sudo apt-get install avrdude |
Processus de compilation
Conversion du sketch en fichier cpp
Une chose qui surprend de prime abord est que notre fichier blink.pde n’apparait nulle part dans les infos affichées par l’éditeur. Par contre nous avons un fichier blink.cpp qui est compilé. En réalité avrdude permet de compiler des fichiers c/c++, les sketch ne sont qu’en fait une surcouche créés par Arduino pour simplifier l’écriture de code. Avrdude ne comprend pas ce « langage » donc une première chose que fait l’éditeur est de traduire le sketch en fichier c++. Cela est très simple en pratique, il n’y a pas de grande différences. L’éditeur ne fait qu’ajouter un « include » et les en-têtes des fonctions utilisées dans le sketch. Ce qui donne le fichier « blink.cpp ».
#include "WProgram.h" void setup(); void loop(); //plus le reste du code affiché plus haut |
Le fichier « WProgram.h » ajouté est fourni avec l’éditeur. On peut le trouver dans le répertoire d’installation ( quelque chose du genre arduino-0022/hardware/arduino/cores/arduino/) . Ce dossier contient tous les fichiers nécessaires à la création d’un programme compréhensible par la carte arduino et sont compilés à chaque fois que l’on compile un sketch.
Compilation des sources
Pour créer notre programme, la première étape consiste à compiler notre fichier « blink.cpp ». Cela se fait par la commande suivante.
avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=22 -I /home/fabien/Apps/arduino-0022/hardware/arduino/cores/arduino/ -o blink.o blink.cpp |
Il vous faudra bien sûr adapter cette commande à votre configuration. Notamment après le « -I » où vous devez indiquez le chemin vers le répertoire d’installation de l’éditeur arduino. Nous n’irons pas plus loin dans l’explication des différents arguments. Ce degré de détails n’est pas forcément l’objet de ce billet et je ne suis pas non plus familier avec toutes les options. A l’issue de cette commande vous devriez obtenir le fichier « blink.o ».
Le travail n’est pas fini, vous avez sans doute remarqué que l’éditeur compile beaucoup plus de fichiers. Comme je l’ai dit plus haut, toutes les sources situées avec le fichier « WProgram.h » sont compilées. C’est ce que nous allons faire à présent.
Pour plus de clarté nous allons faire les prochaines manipulations dans un sous-dossier que j’appellerai « core ».
mkdir core cd core |
Ensuite la commande de compilation reste la même qu’au dessus. Par exemple pour le fichier « Print.cpp »:
avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=22 -I /home/fabien/Apps/arduino-0022/hardware/arduino/cores/arduino/ -o Print.o /home/fabien/Apps/arduino-0022/hardware/arduino/cores/arduino/Print.cpp |
A noter que certaines sources sont en C. Il faut donc appeler avr-gcc cette fois-ci et enlever « -ffunction-sections ». Par exemple pour le fichier « wiring.c »:
avr-gcc -c -g -Os -w -ffunction-sections -fdata-sections -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=22 -I /home/fabien/Apps/arduino-0022/hardware/arduino/cores/arduino/ -o wiring.o /home/fabien/Apps/arduino-0022/hardware/arduino/cores/arduino/wiring.c |
En tout il y a 13 sources à compiler et autant de « .o » à créer. Ce n’est pas l’étape la plus rigolote c’est sûr. Elle est intéressante à faire une fois pour bien comprendre le processus. Nous verrons à la fin les outils qui font tout pour nous
.
La dernière étape de la compilation est la création de la librairie. Nous sommes toujours dans notre dossier « core » avec nos 13 « .o ». Il suffit d’appeler « avr-ar » pour tous les compiler en une librairie.
avr-ar rcsv core.a *.o |
Et voilà le travail, la librairie « core.a » devrait être présente dans votre dossier. On remarque que l’éditeur refait toute la procédure de création de la librairie à chaque compilation. Pourtant l’édition d’un sketch ne modifie que « blink.pde » et donc « blink.cpp ». On peut se demander si cela à un réel intérêt…
linkage et creation de l’ »executable »
La prochaine étape vise à lier notre programme compilé, « blink.o » avec la librairie « core.a ». Nous remontons d’un niveau (« cd .. ») pour nous retrouver dans le dossier contenant ledit « blink.o » et le dossier « core ». La commande suivante fera l’affaire.
avr-gcc -Os -Wl,--gc-sections -mmcu=atmega328p -o blink.elf blink.o ./core/core.a -L core -lm |
Le fichier « blink.elf » devrait apparaître.
Nous touchons à la fin. La dernière étape vise à créer l’équivalent d’un exécutable que l’on pourra charger sur la carte. La création se fait ainsi.
avr-objcopy -O ihex -R .eeprom blink.elf blink.hex |
Ca y est tout est compilé! Le fichier « blink.hex » nouvellement créé est le signe de notre réussite.
Upload
Allez c’est bientôt fini. Nous allons maintenant charger ce programme sur la carte. Branchons la sur un port usb. Et lançons une dernière commande.
avrdude -v -p m328p -P /dev/ttyACM0 -b115200 -c arduino -U flash:w:blink.hex |
Chez vous il faut indiquer le port correspondant à votre carte à la place du /dev/ttyACM0. Si vous utilisez une arduino Uno ça devrait être pareil. Le nombre 115200 correspond à la vitesse de communication entre la carte et le pc fixée à 115200 bauds, et doit être le même que celui indiqué dans le code « blink.pde ».
Si tout se passe bien la LED liée à la pin 13 doit clignoté à l’issue du chargement sur la carte. Tout s’est bien passé, vous avez réussi à compiler votre premier programme à la main!
Communication série
C’est bien beau tout ça, mais vous allez me demander où s’affichent les fameux messages « Starting » et « Running ». Avec l’éditeur il suffisait d’afficher le moniteur, mais maintenant? Avons-nous perdu un outil dans la bataille?
Pas du tout n’ayez crainte. Nous allons utiliser une alternative appelé « screen ». Elle permet entre autres d’émuler un terminal. En lançant la commande suivante dans une console vous devrez voir les messages que l’on croyait perdus.
screen /dev/ttyACM0 115200 |
Vous trouverez cet outil dans les dépôts s’il n’est pas installé. Le résultat doit approcher celui-ci:
Conclusion et alternatives
Voilà nous savons maintenant compiler un programme pour Arduino à la main. Cependant le processus complet est un peu fastidieux. Il est intéressant de le faire une fois pour bien comprendre le mécanisme mais ce n’est pas vraiment pratique pour une utilisation régulière.
Par contre en connaissant la chaine de compilation utilisant avrdude, rien ne nous empèche de l’adapter et de l’utiliser avec notre environnement de développement préféré. Plusieurs solutions existent déjà et vous permettent de compiler un sketch via un makefile, CMake, Scons or encore sous Eclipse.
Réferences
Aquilenet, FAI associatif Aquitain : Interview d’un des fondateurs
J’avais déjà évoqué l’association Aquilenet dans un billet précédent puisque c’est elle qui avait organisé il y a quelques semaines la conférence « Internet et Libertés » en présence de Jérémie Zimmermann de la Quadrature Du Net.
Si je lui consacre entièrement un billet aujourd’hui, c’est parce que depuis quelques jours, ce FAI associatif a lancé officiellement ses ouvertures de lignes ADSL. Aquilenet se présente ainsi :
Aquilenet est une association fournisseur d’accès à Internet (FAI), actuellement sur sa lancée de lignes ADSL « avec du vrai Internet » en Aquitaine depuis janvier 2011, membre fondateur de la Fédération FDN. Nous avons préféré attendre d’avoir quelques lignes en fonction avant d’ouvrir publiquement le service, il est maintenant temps pour de nouveaux adhérents de nous rejoindre, pour s’abonner ou simplement nous soutenir !
Pourquoi Aquilenet ? Parce qu’il s’agit de « vrai Internet »: un Internet sans bridage, sans filtres, sans collecte d’informations à des fins commerciales et sans contrainte à l’innovation. Il s’agit donc d’un branchement direct au réseau avec des services fournis au maximum de la bande passante possible. Une IP fixe, (un reverse DNS, une délégation DNS, etc.), une interface de gestion de son compte, un coût mensuel maîtrisé. Étant une association loi 1901, Aquilenet offre de la transparence sur les comptes et n’a pas d’objectif de rentabilité. Nous facturons donc les lignes en fonction de leur prix de revient, et chaque adhérent peut le vérifier. L’association n’utilise que des solutions libres, ce qui nous permet d’être dans une démarche de construction des services avec les adhérents. Chacun peut participer à développer l’infrastructure…
Pour en savoir un peu plus, j’ai interrogé Samuel Thibault un des fondateurs de l’association.
Bonjour Samuel, peux-tu te présenter brièvement?
Je suis enseignant-chercheur à l’Université Bordeaux 1, spécialisé en calcul parallèle haute performance. Je suis par ailleurs développeur Debian, dont je m’occupe de l’accessibilité, et je suis un des mainteneurs de GNU/Hurd. De plus, je joue de la batterie et du trombone dans divers orchestres. Enfin, je suis trésorier d’Aquilenet.
Peux-tu nous expliquer en quelques mots ce qu’est Aquilenet?
Il s’agit d’une association pour remuer le réseau Internet en Aquitaine. Elle est notamment Fournisseur d’Accès Internet: elle fournit actuellement un accès à Internet via des lignes ADSL. Elle compte également développer la structure du réseau Internet en Aquitaine: interconnexion locale et avec nos voisins à Brives, Sames, Toulouse, Lyon, … plutôt que systématiquement remonter à Paris.
Quel est l’intérêt d’un FAI associatif?
L’intérêt d’un FAI associatif est que les abonnés sont adhérents de l’association, c’est-à-dire qu’ils ont droit de regard sur la politique menée par l’association et peuvent mettre la main à la pâte: politique de non-filtrage, tarification (avec tarifs étudiants par exemple), développement de nouveaux services, etc.
Et pourquoi une implantation régionale?
Il y a plusieurs réponses. FDN est le premier Fournisseur d’Accès Internet français encore en activité. Il se trouve qu’il est associatif. Récemment, FDN a commencé à grossir de plus en plus (200 lignes ADSL à l’heure actuelle), et cela commence à poser problème: il y a typiquement une centaine de personnes qui assistent à l’AG ! Fonder des FAIs locaux, qui restent à taille humaine, permet de décharger en quelque sorte FDN. Fonder des opérateurs est par ailleurs bénéfique pour le réseau ! Lorsque l’on regarde l’implantation des LIRs en France (https://lirportal.ripe.net/maps/locator/) on note une centralisation extrême à Paris, alors que nos voisins européens voient leurs opérateurs répartis géographiquement. En France la topologie du réseau est essentiellement en étoile, or on sait bien que c’est moins robuste et efficace qu’un maillage. Fonder des opérateurs locaux est donc une manière de remailler le territoire. C’est également une manière de dynamiser le réseau localement. Au datacenter de Bordeaux-Lac par exemple, il n’y a pas d’IX, l’outil qui pourrait permettre aux PMI/PME de s’interconnecter directement en local, plutôt que remonter tous les flux à Paris juste pour redescendre aussitôt à Bordeaux, encombrant ainsi les fibres entre les deux alors qu’il suffit de mettre un câble en local. Aquilenet compte aider à la création d’un GIXE qui s’en occuperait. C’est enfin un point de rencontre local pour les férus de réseau ! Aller à Paris juste pour causer switches Ethernet, c’est onéreux. Un opérateur local peut organiser des rencontres locales pour causer, boire des bières, etc. qui sont autant d’occasions de plus facilement convaincre des gens de s’abonner à un FAI associatif.
Peux-tu nous expliquer comment tout ça fonctionne (à qui appartiennent les lignes? à quel niveau intervenez-vous? etc…)?
Aquilenet n’est pour le moment qu’une « marque blanche », c’est-à-dire qu’elle ne fait que commander des lignes à FDN pour le compte de ses adhérents, et récolter les sous
Nous comptons par la suite nous occuper petit à petit de plus en plus des différents éléments de l’accès Internet. Par ailleurs, FDN ne possède pas sa propre infrastructure ADSL et sous-traite à Nerim, qui lui-même sous-traite à SFR (cas dégroupé) ou à France Télécom (cas non dégroupé). Actuellement, ce qui se passe lors d’une prise de ligne ADSL dégroupée est donc:
- un adhérent soumet sa demande de souscription à Aquilenet.
- Aquilenet commande la ligne auprès de FDN, qui la commande auprès de Nerim, qui la commande auprès de SFR, qui la commande auprès de France Télécom.
- SFR remonte la collecte ADSL à Paris et la livre à Nerim, qui la livre à FDN.
- FDN réceptionne la collecte, et redistribue vers Internet via l’opérateur alternatif Gitoyen.
- SFR facture à Nerim, qui facture à FDN. Gitoyen facture à FDN. FDN facture à Aquilenet, qui facture à l’adhérent.
Cela parait bien long comme chemin, il est vrai qu’ajouter des intérmédiaires pourrait nuire. Il se trouve que la construction de ligne ne prend tout de même typiquement que quelques jours. Les intermédiaires prennent bien sûr leurs marges, mais de toutes façons pour l’ADSL il n’y a guère le choix: ni France Télécom ni free ne sont ouverts à fournir le service, SFR n’accepte plus de traiter directement avec FDN, et malgré sa bonne volonté, Nerim n’est pas forcément encline à établir des contrats avec de nombreux FAIs locaux. Poser soi-même des DSLAMs nécessite enfin un investissement bien trop important pour une association. Aquilenet n’a donc qu’un rôle purement administratif pour l’ADSL, et sous-traite toute la technique à FDN. Une autre possibilité aurait été de n’acheter que la collecte à FDN: le scénario aurait été le même, sauf que plutôt que redistribuer vers Internet, FDN aurait livré la collecte à Aquilenet, qui devrait alors se débrouiller pour redistribuer vers Internet. Le hic, c’est que la livraison ADSL a à priori de toutes façons lieu à Paris, cela nous a donc semblé inutile de dépenser du temps pour finalement rester dans un scénario centralisé à Paris, nous préférons le dépenser sur des projets plus locaux.
Où intervient le libre?
Tout le chemin entre le modem de l’abonné et FDN appartient tantôt à France Télécom, SFR, Nerim, donc dépend d’eux a priori. Mais ceux-ci n’ont pas à regarder ce qui y passe, le contrat ne stipule que la fourniture d’un câble virtuel entre l’abonné et FDN, qui est alors utilisé librement pour faire passer n’importe quoi, notamment de l’IPv4 et de l’IPv6 sous toutes leurs formes, sans aucune contrainte, que ce soit en termes de différenciation de débits, de fermetures de ports, de possibilités de routages, etc.: c’est vraiment juste un câble passif, avec lequel on fait ce que l’on veut entre l’abonné et FDN. Si ces opérateurs le voulaient vraiment (mais ils n’auraient pas suffisamment d’intérêt commercial à cela), ils pourraient dépenser du matériel et du temps pour ajouter un DPI ; on pourrait alors au pire utiliser une option de chiffrement de PPP. À l’inverse, les fournisseurs d’accès commerciaux ont tendance à fermer certains ports, refuser de fournir aux abonnés différentes IP (statiques), une délégation rDNS, voire différencier les flux: ralentir volontairement le débit disponible depuis certains sites jugés concurrents.
La « neutralité du réseau » que vous proposez suppose donc que vous êtes à l’abri du flicage (HADOPI) et du filtrage (LOPPSI)?
On ne peut pas être à l’abri des lois: si une loi (et surtout, les décrets correspondant) impose un flicage ou un filtrage, on n’a guère d’autre choix que de l’appliquer, sinon c’est du pénal. Il peut par contre arriver que l’on traîne à le faire, et apporter une justification de difficulté technique (qui est réelle !), ou simplement montrer une volonté relative d’obtempérer. On a vu Free fournir des listings sous forme papier
Comment se traduit cette neutralité chez Aquilenet?
Pour l’instant, puisque Aquilenet n’effectue pas elle-même sa collecte et redistribution, c’est surtout du côté de FDN qu’elle se traduit, Aquilenet ne fait que retransmettre le service de FDN, qui correspond bien à son éthique: tout est ouvert et indifférencié, tout simplement. Si les décrets passent, FDN devra commencer à essayer de mettre en place flicage et filtrage (FDN a pour principe de respecter la loi). Aquilenet devra alors se poser la question.
Pourquoi adhérer à l’association?
Pour nous soutenir ! Financièrement bien sûr, mais aussi Aquilenet commence à toquer à la porte des collectivités locales, et a bien plus de poids lorsqu’elle a des adhérents derrière.
Enfin, quand est-ce que les premières lignes ADSL pourront être ouvertes et quel sera le prix mensuel de l’abonnement?
Dès maintenant ! Le prix mensuel est aligné sur celui de FDN, 28€/mois en dégroupé partiel SFR, 41€/mois en non-dégroupé SFR, auquel s’ajoute le coût de la ligne France Télécom. Des tarifs réduits (27€/36€) sont proposés pour les étudiants, RMIstes, chômeurs, etc.
Merci à Samuel pour le temps qu’il a consacré à cette interview. Vous trouverez davantage d’informations sur http://www.aquilenet.fr. Si vous avez des questions, n’hésitez pas à les contacter ou à laisser un commentaire sur ce blog. Je ferai suivre la question à Samuel et tâcherai d’y répondre rapidement.
Zenity, pour rendre ses scripts plus interactifs
Le contexte est le suivant : Ma belle-mère, que j’ai converti à Ubuntu il y a maintenant un peu plus d’un an, s’est offert il y a quelques jours un lecteur multimédia Archos 3cam Vision. Bien que l’appareil ne casse pas trois pattes à un canard, il reste raisonnable vu son prix (70€). Bref, Belle-maman étant fan d’opéras en tous genre, elle a donc extrait plusieurs CD en MP3 (merci Sound Juicer!) et les a transférés sur son Archos. Problème : Un opéra, ça s’écoute dans l’ordre et malgré des noms de fichiers suivant l’ordre alphabétique, les MP3 se retrouvaient complètement mélangés quand on les parcourait depuis le lecteur.
Après quelques recherches, j’ai appris que chez Archos, ils n’ont rien trouvé de mieux que de classer les fichiers non pas par ordre alphabétique comme la logique le voudrait, mais par date de transfert… Je ne sais pas quelle est la raison de ce choix mais j’imagine que Windows doit copier les fichiers d’un emplacement à un autre par ordre alphabétique et que, comme la majorité des PC tournent sous Windows, blablabla, on connaît la chanson. Il s’agit d’une simple supposition mais je ne vois pas vraiment d’autres explications rationnelles…
Quoi qu’il en soit c’est un problème connu et en cherchant un peu sur le Net, j’ai trouvé une ligne de commande permettant de copier le contenu d’un dossier vers un autre emplacement en transférant les fichiers un par un dans l’ordre alphabétique. La ligne provient de là et ressemble à ça :
find . -type f -print0 | sort -z -n | xargs -0 cp --target-directory='/media/A3cam/Music/mon_album' |
Seulement voilà! Je me voyais mal expliquer à Belle-maman que pour transférer un album, il fallait qu’elle crée préalablement dans /media/A3cam/Music un dossier de destination pour l’album en question, qu’elle se rende en ligne de commande dans le dossier contenant les MP3 qu’elle souhaitait transférer et qu’elle exécute cette ligne de commande tout en modifiant le chemin de destination en conséquence… Dieu sait si j’aime la ligne de commande mais, même moi, ça me gênerait de devoir faire ça pour mettre correctement de la musique sur mon lecteur MP3. Bref, c’est là qu’intervient Zenity et j’ai envie de dire qu’après une intro comme ça, il était temps
Zenity, qu’est-ce que c’est? Zenity, installé de base sur Ubuntu (et sur Arch avec Gnome?), permet de créer des boîtes de dialogue simples en GTK+ depuis le shell. Ce n’est pas fait pour créer une interface complète mais ça permet quand même de donner une peu d’interactivité à ses scripts. Le principe est très simple. La commande zenity suivie d’une option (–file-selection, –info, –calendar, …) permet de générer une boîte de dialogue. Chaque boîte possède ensuite ses propres options de façon à la personnaliser. Ainsi, j’ai pu adapter la ligne de commande précédente de la façon suivante :
#!/bin/sh ARCHOS='/media/A3cam/Music' if [ ! -d $ARCHOS ] zenity --error --text="Le lecteur MP3 ne semble pas branché\!" exit fi FILE=`zenity --file-selection --filename=/home/user/Musique/ --directory --title="Sélectionnez un dossier à transférer"` case $? in 0) FOLDER=${ARCHOS}/`basename $FILE` mkdir $FOLDER find $FILE -type f -print0 | sort -z -n | xargs -0 cp -v --target-directory="$FOLDER" zenity --info --text="Transfert effectué avec Succès\!";; 1|-1) zenity --error --text="Impossible d'effectuer de transfert. Le lecteur MP3 est-il bien branché et allumé? Avez-vous bien sélectionné le dossier à transférer?";; esac |
Détaillons rapidement tout ça :
- La première ligne spécifie le chemin vers le dossier Music de l’Archos. La suite teste l’existence de ce chemin et renvoie une pop-up d’erreur le cas échéant.

- On récupère ensuite dans la variable FILE le chemin choisi dans la fenêtre de sélection de dossier créée par Zenity. À noter le paramètre –filename qui permet de présélectionner un dossier, le paramètre –directory qui oblige à ne sélectionner que des dossiers, et le paramètre –title afin de donner un titre à la boîte de dialogue.

- Zenity retourne également un code de sortie qui est égal à 0 si tout s’est bien passé, 1 ou -1 sinon (erreur, annulation). En bash, la variable $? permet de récupérer le code de sortie de la dernière commande exécutée. Un switch/case classique permet alors de trier ces codes de retour.
- Si un dossier a bien été sélectionné, on crée un dossier de même nom sur le lecteur MP3 (on notera l’utilisation de basename qui, entre autres, pour un chemin quelconque renvoie le nom du dossier courant). On exécute la commande qui va faire la copie élément par élément par ordre alphabétique et on génère une pop-up quand cette copie est terminée.

- Dans le cas où la sélection de dossier retourne un code d’erreur, on génère une pop-up en conséquence.

- Si un dossier a bien été sélectionné, on crée un dossier de même nom sur le lecteur MP3 (on notera l’utilisation de basename qui, entre autres, pour un chemin quelconque renvoie le nom du dossier courant). On exécute la commande qui va faire la copie élément par élément par ordre alphabétique et on génère une pop-up quand cette copie est terminée.
Ce script est encore perfectible mais il permet de proposer l’exécution d’une commande spécifique de manière un tant soit peu interactive. Zenity est au bout du compte très basique mais suffisant pour beaucoup de choses. On notera par exemple le calendrier ou la barre de progression. Enfin de la personnalisation de contenu est possible grâce à des balises type HTML. Une documentation est disponible sur le site de Gnome et sur Ubuntu-fr.
NB : Si quelqu’un possède un Archos 3cam Vision ou équivalent, a-t-il une idée de comment sont organisés les dossiers? Les fichiers, maintenant c’est assez clair, mais les dossiers ont l’air de suivre encore une autre logique… Les gars de chez Archos ont-ils choisi de trier les dossier en fonction de la taille moyenne des noms de fichiers qu’ils contiennent?!…
Mon premier paquet AUR : fortune-mod-kaamelott
Suite au billet de Devil505 expliquant qu’il avait packagé pour Frugalware et pour l’application fortune-mod des citations des Tontons Flingueurs, je me suis dit qu’il était temps pour moi de proposer mon premier paquet AUR pour ArchLinux sur le même principe. En effet, il y a quelques mois, j’avais extrait de Wikiquote.org plus de 500 citations de la série Kaamelott de façon à les utiliser avec fortune. Je faisais l’installation à la main sous Ubuntu (si on peut vraiment parler d’installation vu qu’il s’agit de copier deux fichiers…). Dorénavant, il suffira de faire sous ArchLinux :
$ yaourt -S fortune-mod fortune-mod-kaamelott |
Permettant ainsi d’avoir de superbes citations :
$ fortune kaamelott C est pas que c est difficile de la récupérer... C est que c est sa mère difficile de la récupérer, la race de sa grand-mère ! [Karadoc, Livre IV, Le Vice De Forme] |
Bref, je vais profiter de ce billet pour expliquer brièvement comment j’ai créé et soumis ce paquet AUR. Le principe est finalement très simple puisque que j’ai créé d’une part une archive des « sources » hébergée sur mon serveur contenant les citations de Kaamelott au format « fortune » et d’autre part une archive contenant le fichier PKGBUILD qui permet de décrire le paquet (que ce soit des informations sur la version ou la licence comme la fonction permettant l’installation). Pour écrire ce fichier, je me suis inspiré de PKGBUILD existants et notamment celui de fortume-mod-chucknorris. Voilà ce que ça donne :
# Maintainer: François Tessier pkgname=fortune-mod-kaamelott pkgver=1 pkgrel=1 pkgdesc="French Fortune cookies from Kaamelott" arch=(any) license=('CCPL') depends=(fortune-mod) makedepends=(coreutils) source="http://www.francoistessier.info/blog/wp-content/uploads/2011/02/fortune-kaamelott.tar.gz" url="http://www.francoistessier.info/blog/2011/02/14/mon-premier-paquet-aur-fortune-mod-kaamelott" md5sums=('a490897ecfdf4b1944e1411bd97b6a17') build() { cd $startdir/src mkdir -p $startdir/pkg/usr/share/fortune fold -w 80 -s fortune-kaamelott/kaamelott > \ $startdir/pkg/usr/share/fortune/kaamelott || exit 1 strfile $startdir/pkg/usr/share/fortune/kaamelott || exit 2 } |
Quelques précisions concernant cette archive : une fois le PKGBUILD rédigé, j’ai dû générer le hash MD5 du fichier spécifié dans le champ « source ». Un outils permet de faire ça simplement : makepkg. Ainsi, une fois dans le dossier contenant mon PKGBUILD :
$ makepkg -g >> PKGBUILD |
Cette commande va télécharger la source, en générer le hash et l’écrire à la fin du fichier PKGBUILD. Pour plus de lisibilité, j’ai déplacé cette ligne au-dessus de la fonction build(). Enfin, pour générer proprement l’archive qu’il faudra uploader sur http://aur.archlinux.org, toujours dans le même dossier :
$ makepkg --source |
Un fichier fortune-mod-kaamelott-1-1.src.tar.gz a été créé. L’upload s’est bien passé et l’installation via yaourt aussi! Bref, je suis vraiment très impressionné par la simplicité de la procédure permettant de soumettre un paquet AUR. Qui plus est la documentation est assez fournie. Ce système est vraiment puissant et encourage la communauté à participer ou tout du moins ne la décourage pas! Qui dit mieux?!
PS : Les citations de Wikiquote.org étant sous licence CC by-sa, j’ai soumis mon paquet à la même licence et j’ai cité Wikiquote.org dans mon README. Qu’en pensez-vous? Suis-je bien en règle en procédant ainsi?
Mes premières impressions sous Arch Linux
J’ai reçu la semaine dernière mon nouveau matériel professionnel à savoir un Dell Latitude E6510 avec station d’accueil et un écran supplémentaire pour du dual sreen. J’en profite d’ailleurs pour souligner qu’il est possible pour cette gamme de commander une machine sans OS! Bref, après un petit moment d’hésitation, j’ai décidé de me lancer dans l’aventure Arch Linux. Je suis pourtant utilisateur d’Ubuntu depuis 5 ans environ. Mon serveur et mon ordinateur fixe personnels tournent d’ailleurs encore avec cette distribution. Je vais tenter dans un premier temps de vous expliquer brièvement les facteurs de ce changement. Puis je tâcherai de faire un bilan de ces 10 premiers jours sous Arch!
De Ubuntu à Arch Linux
Il y a plusieurs raisons qui m’ont fait choisir Arch Linux comme nouvelle distribution. Premièrement, ça fait un moment que j’en entend parler et à chaque fois en bien. Ensuite, je suis suffisamment curieux pour oser me lancer! Il y a aussi le fait qu’Arch Linux est réservé à des utilisateurs avancés et c’est quelque chose qui me plaît bien (on est totalement maître de son système et ça flatte l’ego
). Le principe de rolling release m’a aussi beaucoup tenté. Enfin -troll inside- les derniers choix faits par Canonical ne m’ont pas vraiment convaincu ou en tous cas ne répondent pas à mes attentes (plus orienté réseaux sociaux, ajout de logiciels propriétaires dans la logithèque, etc…). Attention, je ne fais pas le procès d’Ubuntu! Si le libre en est là où il est aujourd’hui c’est, je pense, en grande partie grâce à Ubuntu qui a su le démocratiser un peu plus. Quoi qu’il en soit, pour toutes ces raisons et pour d’autres encore, j’ai tenté l’expérience Arch!
L’installation
Pour commencer, je suis parti sur l’installation par le net. L’iso à télécharger fait ainsi moins de 200Mo et tous les paquets nécessaires sont récupérés durant le processus d’installation. Chose importante, Arch Linux ne contient rien à la base (Pas d’interface graphique par exemple). Il vous faudra tout installer et c’est ça le principal atout de cette distribution selon moi. Quelques précisions pour ceux qui voudraient s’y essayer :
- Le mieux est de suivre ce tutoriel en français très bien fait.
- Ne mettez pas la swap en premier sur le disque (sur sda1). Ça ne lui plaît pas du tout! Pour ma part, j’ai découpé mon disque de cette manière :

- Enfin pour le choix du serveur à utiliser pour récupérer les paquets, choisissez soit celui de archlinux.org (lent mais fonctionnel), soit un en fonction de cette page. Lors de ma première tentative d’installation, j’en ai choisi un au hasard et il se trouve qu’il ne possédait pas la moitié des paquets…
Je ne vais pas détailler le processus d’installation. Des tutoriels font ça très bien et le wiki d’ArchLinux est on ne peut plus complet. Ce qui m’a pris le plus de temps a été la configuration de Xorg, dont l’ex-fichier xorg.conf est maintenant découpé en plusieurs fichiers dans /etc/X11/xorg.conf.d/. Les deux conseils que je pourrais vous donner c’est de ne pas tenter tout de suite le dual screen, je veux dire pas avant d’avoir installé Xorg correctement, et de bien suivre les conseils donnés dans le wiki (ici et là). Une fois que vous aurez installé un gestionnaire de bureau (Gnome par exemple) et si vous avez choisi d’utiliser les drivers de carte graphique propriétaires pensez qu’ils sont installés avec des outils qui génèrent les fichiers de configuration du serveur X à votre place (NVIDIA X Server Settings ou Catalyst Control Center). En revanche, ils génèrent encore le xorg.conf mais à priori, il suffit juste de le renommer et de le déplacer au bon endroit :
sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.d/10-monitor.conf |
Premières impressions
Voilà 10 jours que j’utilise quotidiennement Arch Linux et je dois dire que j’en suis très satisfait. Alors certes, l’installation est longue (j’y ai passé une journée) puisqu’il faut vraiment tout installer mais il faut prendre en compte qu’Arch Linux ne se réinstalle pas. Le système de rolling release assure d’avoir toujours une distribution à jour et donc pas de mises à jour de versions importantes. La documentation est très fournie et pour peu qu’on soit à l’aise avec la ligne de commande, ça passe tout seul. Une fois que tout est en place c’est impeccable. On est maître de tout et ça, pour quelqu’un qui n’a pas peur de mettre un peu les mains dans le cambouis, c’est fantastique! Côté gestionnaire de bureau, j’ai fait le choix de Gnome avec le thème Equinox et le jeu d’icône Faenza (Merci Nicolargo
). Enfin, pour terminer sur le bon côté de la chose, le gestionnaire de paquet, pacman, est vraiment très puissant et les paquets AUR sont une source inépuisable de logiciels.
Seulement voilà! Tout n’est pas rose sous Arch Linux. Il y a quand même quelques petits inconvénients. Premièrement, c’est un peu « roots ». Pour quelqu’un qui n’a pas envie de se prendre la tête, ce sera vite décourageant. Une installation d’Ubuntu prend maintenant une heure maximum. Une installation d’Arch Linux (j’entends par là le système, l’ajout d’interface graphique, les paquets de base et tout et tout…) prend nettement plus de temps, en tous cas la première fois. Mais on apprend beaucoup sur le fonctionnement de son système et ça c’est inestimable! Deuxièmement, le système de rolling release choisi par Arch Linux a aussi ses inconvénients. Deux exemples issus de mon expérience : la mise à jour vers la toute dernière version de Thunderbird m’a obligé à fouiller sur le net pour trouver une version de Lightning (agenda) compatible. La version proposée via l’interface d’installation de modules de Thunderbird ne l’était plus… Ensuite une mise à jour « buggée » d’Empathy m’a privé quelques heures de messagerie instantanée. Heureusement, ce sont des choses qui sont très vite corrigées et ne pose finalement pas tant de problèmes que ça. Troisièmement, il y a des automatismes à acquérir. Notamment avec le passage de apt-get à pacman. Ce dernier suivant une logique qui me dépasse quant au nom de ses arguments. Petit comparatif :
| Action | apt-get | pacman |
|---|---|---|
| Installer un paquet | apt-get install _paquet_ | pacman -S _paquet_ |
| Installer les mises à jour | apt-get update apt-get upgrade | pacman -Suy |
| Supprimer un paquet et ses dépendances | apt-get autoremove _paquet_ | pacman -Rs _paquet_ |
Il faut avouer que c’est spécial… Mais après quelques heures d’utilisation ça ne pose plus vraiment de problèmes. Enfin, et ce n’est pas tant la faute d’Arch Linux que des constructeurs de matériel, il est parfois difficile de trouver les pilotes pour certains périphériques. Je pense en particulier à la webcam incrustée dans l’écran du E6510 que je n’ai toujours pas réussi à faire fonctionner… La documentation technique de chez Dell ne m’a pas permis de déterminer quel pilote installer. Une Ubuntu, par exemple, détectera ce type de matériel et installera les pilotes nécessaires.
Conclusion
Je n’utilise Arch Linux que depuis 10 jours donc ce n’est pas encore très facile de se faire un avis mais je suis pour le moment très satisfait. Je n’exclue pas de passer également mes machines personnelles sous cette distribution. Il y a certes quelques couacs de temps à autre mais c’est un moindre mal comparé à la satisfaction qu’apporte un système stable, à jour et dont on est complètement maître. Qui plus est, le système étant « vide » au départ on installe vraiment que ce dont on a besoin, ce qui rend la distribution très légère et réactive.
PS : Si certains sont tentés de passer sous Arch Linux, n’hésitez pas à poser vos questions dans les commentaires. J’en ai eu pas mal moi-même, notamment pour les fichiers de configuration type rc.conf ou pacman.conf, donc je pourrais peut-être y répondre.
Mémo : comment « débannir » une IP bloquée par fail2ban?
Quand on a son serveur personnel, fail2ban fait partie des indispensables à installer. Ce démon scrute les logs (que ce soient les logs ssh, apache, etc…) à la recherche des tentatives de connexion infructueuses et peut ainsi bannir une IP si nécessaire. Concrètement, dans le cas d’une tentative de connexion par ssh qui échouerait 3 fois d’affilés (ces paramètres sont configurables), l’IP de la machine à l’origine de ces tentatives aura droit à une belle règle iptable de façon à lui bloquer complètement la connexion via le port 22 pour une durée donnée (5 minutes ou 3000 ans, c’est vous qui choisissez!). Bref, pour vous donner une idée, sur mon serveur je bloque en moyenne 5 IP par jour. Les tentatives sont faites en général via ssh avec des logins comme « root » ou « login » et des mots de passes évidemment faux!
Quoi qu’il en soit, il peut arriver qu’une IP vous appartenant soit bloquée. Ça peut arriver par exemple dans le cas où la connexion à ssh via login/password est activée (et pas uniquement par clé publique/privée) et où vous tentez de vous connecter à votre serveur depuis le boulot en vous trompant de login parce que vous en avez à la pelle vu le nombre de machines que vous utilisez. Du coup, vous tentez 3 fois votre mot de passe sans vous apercevoir que votre login n’est pas bon… et hop! Banni pour un an! (True story!)
Il devient alors pratique, une fois rentré à la maison, de se « débannir », de bloquer la connexion ssh via login/password et d’ajouter sa clé publique pour ne plus avoir de soucis. Mais comment se débannir? Comme ceci :
Admettons que vous ayez été banni à partir de tentatives infructueuses de connexion à ssh. Pour lister les IP bannies, il vous faudra lancer dans un premier temps la commande suivante :
$ sudo iptables -L fail2ban-ssh Chain fail2ban-ssh (1 references) target prot opt source destination DROP 0 -- 66.249.92.104 anywhere DROP 0 -- 91.189.90.40 anywhere DROP 0 -- 207.46.170.123 anywhere RETURN all -- anywhere anywhere |
Bien que la « mise en page » ne le laisse pas paraitre, il s’agit ici d’un tableau dont les en-têtes sont « target », « prot », … Il suffit alors de noter à quelle ligne du tableau apparait votre adresse IP. Considérons que vous souhaitez débloquer 91.189.90.40. Cette IP apparait à la ligne 2. Il ne reste plus qu’à exécuter la commande suivante :
$ sudo iptables -D fail2ban-ssh 2 |
Votre IP sera bien supprimée des règles iptables, vous autorisant à nouveau à vous connecter en ssh!








