S'abonner au Flux RSS

vendredi, décembre 6 2013

Lolix de 1998 à 2013

Afin de bien comprendre ce qui se passe il est nécessaire de revenir un peu sur ce qui s'est passé depuis 15 ans, oui vous avez bien lu 15 longues années de bons et loyaux services à mettre au profit de Lolix. Après avoir vu ce qui s'est passé, compris ce qui se passe on va pouvoir parler de ce qui peut encore se passer.

Lire la suite...

jeudi, décembre 5 2013

Rejoindre la GeoTribu

C'est avec plaisir que j'ai rejoint cette semaine la joyeuse équipe de la GeoTribu ; je publierai désormais mes articles liés à la géomatique sur www.geotribu.net et continuerai par contre à publier ici tout ce qui est lié à mon activité sur les tests de performance et mes contributions à Tsung.

Je vous laisse le soin de découvrir le premier billet publié intitulé Temps de réponses comparés OSRM vs GraphHopper

mercredi, février 6 2013

PyDeb from PyPI to .deb

Dans mon précédent billet j'évoquais les paquets debian que j'avais réalisé pour Django au sein du projet Pyrede. Cette activité de packaging ayant pris de l'ampleur les paquets seront désormais disponibles au sein du Projet Pydeb.

Le projet PyDEB se compose d'un dépôt de paquets et d'un blog sur lequel je publie les nouveaux paquets ainsi que leurs mises à jour.

Les derniers paquets réalisés sont redis, hamlpy, vectorformats, ...

Le projet Pyrede d'analyse de fichier requirements.txt continue son activité avec PyDEB comme ressource bien évidemment.

jeudi, janvier 17 2013

Les serpents ne dorment pas l'hiver

Au cours du développement de mon dernier projet Pyrede j'ai mis en place des statistiques sur le flux de mises à jour des paquets python dans PyPI. Au bout de quelques jours de collecte de données je suis impressionné par l'activité des développeurs. La base contient à ce jour plus de 27000 paquets et ce sont prêt de 300 paquets qui sont mis à jour chaque 24H.

Les stats avec munin sont publiques et consultables ici

Happy hacking !

jeudi, décembre 20 2012

De whoosh à Solr avec Django Haystack

Sur un déploiement Django avec une indexation réalisée avec Haystack je me suis retrouvé face à un problème bloquant. L'application doit permettre à différents users unix de la machine d'insérer des données au moyen d'une commande de management de Django ; les objets insérés dans la base de données sont indéxés en temps réels avec un RealTimeSearchIndex. Le peu de volume de données avait orienté le choix du backend d'indexation vers whoosh, whoosh travaillant avec des fichiers locaux l'appel de la commande manage par différents users unix a engendré des problèmes de permissions sur les fichiers d'index. Une première solution de contournement a été d'utiliser la commande sudo mais cela n'est pas satisfaisant sur le long terme sans une formation des utilisateurs à sudo, pour contourner ce problème je me suis orienté vers l'utilisation d'un backend Solr. Je vais décrire ici la mise en oeuvre de cette solution sur une Debian Wheezy car cela ne s'est pas fait sans problèmes.

Installation de Solr

Le choix fait a été d'utiliser Solr avec le server d'application Jetty, l'installation sous Debian est toujours aussi simple qu'apt-get dans notre cas de figure ici il est nécessaire d'installer les paquets

  • jetty
  • solr-jetty

Le serveur d'indexation étant sur une machine séparée de l'instance Django il faut également installer le package python-pysolr sur le serveur qui fait tourner l'application Django elle même.

Il existe un bug dans le paquet solr-jetty, l'installation créé un lien symbolique cassé.

/var/lib/jetty/webapps/solr doit pointer vers /usr/share/solr/web et non vers /usr/share/solr/webapp comme le fait l'installation du package

Schema généré non conforme

Une fois le serveur installé il faut configurer Solr en conformité avec les données de l'application Django, pour cela on génère un fichier nommé schema.xml avec la commande :

manage.py build_solr_schema > schema.xml

Une fois ce fichier généré copiez le sur le serveur Solr dans /etc/solr/conf/schema.xml

J'utilise une version 2.0.0 de Haystack et il est nécessaire de modifier quelque peu le fichier généré pour le rendre compatible avec Solr 3.6.0 présent à l'heure d'écriture de ce billet dans Wheezy.

Tout d'abord il faut remplacer la chaine stopwords_en.txt par lang/stopwords_en.txt pour spécifier le bon chemin vers le fichier. (ref)

Un autre problème rencontré qui peut ne pas être votre cas,mais autant le signaler au cas où, lors du premier appel de la commande ./manage.py build_solr_schema le fichier schema.xml généré contenait des définitions de champs erronés :

<field name="" type="" indexed="True" stored="True" multiValued="" />

<field name="" type="" indexed="True" stored="True" multiValued="" />

Un nouvel appel à build_solr_schema a cette fois généré un fichier valide, une fois copié sur le serveur solr l'indexation fonctionne, et on peut désormais mettre à jour l'index avec manage.py rebuild_index de même que celui-ci se met à jour lors de l'import des objets dans la base.

Suivant votre configuration réseau vous pourrez vouloir changer le port ou l'interface d'écoute, cela s'effectue dans le fichier /etc/default/jetty ; il ne reste plus enfin qu'à redémarrer jetty.

Ce ne fût pas sans peine, mais au final l'indexation fonctionne et désormais tous les utilisateurs peuvent indexer leurs documents sans problèmes de permissions.

mercredi, décembre 12 2012

Passer le temps en geekant

Un inconvénient d'être freelance et que l'on a parfois du temps chômé entre les missions, l'avantage quand on est geek c'est que cela donne du temps pour geeker :-) J'ai donc profité de ces derniers jours pour assouvir mon envie de jouer avec icecast ; depuis toujours passionné de radio il me tardait de trouver l'idée qui me permettrait de créer un projet autour de cet outil. Deux autres éléments ont été à l'origine de mon idée, tout d'abord la découverte de l'excellente radio http://www.ledjamradio.com/ puis plus récemment de jukebox. Je serais presque jaloux de ledjam d'avoir eu l'idée de cette radio et du système de vote, mais je le suis totalement de leur jingles ; là vous devez faire une pause et lancer la radio dans un onglet. En ce qui concerne Jukebox j'ai apprécié l'interface mais beaucoup moins l'architecture qui en fait au final un outil un plutôt instable (notamment à cause de libshout).

Cette introduction faite il est temps de lâcher le morceaux, j'ai utilisé ces 4 derniers jours à coder Calorine (jeu concours : trouver ce qui a inspiré ce nom), la base de l'idée avoir une radio communautaire, dédiée à un groupe restreint comme le serait par exemple un canal IRC Écouter une radio à plusieurs même dans des lieux physiques différent créé une ambiance de groupe qui se rapproche de la sensation d'équipe dans un bureau commun, c'est très agréable de pouvoir chambrer un peu les collègues sur leurs goûts musicaux du vendredi (ils se reconnaîtront).

Venons-en aux fonctionnalités de Calorine, stream d'une playlist composées à plusieurs de façon communautaire sans hiérarchie, ça c'est la base. La radio dispose d'un pool de fichier ogg/vorbis dans lequel l'auditeur pioche, il ajoute ses titres à la playlist commune. Tout un chacun peut également consulter la playlist en cours et ajouter un vote à un titre, les titres avec le plus grand nombre de votes sont joués en premier, viennent ensuite les titres les plus anciens dans la playlist, et enfin si celle-ci est vide un titre aléatoire est joué. On a pour faire cela une interface écrite en Django ainsi qu'un bot IRC qui annonce le titre joué sur le canal et permet d'ajouter un titre à la playlist en effectuant une recherche full-text sur les ID3 du fichier musical.
Sur le principe technique, les path des fichiers sont stockés dans la base de données utilisées par l'app django. Icecast2 stream le flux audio, ices2 alimente le flux avec le mode script, ices2 appelle un script pour obtenir le chemin du fichieir audio à lire. J'ai préféré cette méthode de couplage ices/icecast plus robuste que d'utiliser libshout comme le fait Jukebox, cela donne aussi une totale indépendance entre l'ihm et le flux radio. L'indexage full-text est lui réalisé avec Haystack et le backend whoosh (des tests de solR sont en cours). Dans le repo il y 2 scripts qui permettent pour l'un d'alimenter la base de données (fill.py) et pour l'autre de convertir un répertoire de fichier mp3 en ogg (covert.py).
Comme tout projet de 4 jours il y a des petits bugs partout et beaucoup de chose à finir, mais c'est déjà fonctionnel et nous permet de nous faire mutuellement découvrir des titres.
Si vous souhaitez monter votre radio communautaire tout est dispo sous GPL sur github.

vendredi, novembre 30 2012

Penser à xauth

Devant installer un outil dont je tairais la nom sur un serveur, outil qui ne se configure qu'avec un client X (ça commence mal) j'ai bloqué sur le X forwarding pendant une demi-journée. Après avoir fait un connexion ssh -X vers le dit serveur impossible de récupérer l'affichage sur ma machine. Un ssh -v m'a mis la puce à l'oreille avec comme dernière ligne :

debug1: Remote: No xauth program; cannot forward with spoofing.

Sans xauth effectivement difficile de reporter l'affichage au travers de la session ssh, la solution simpliste au possible consiste à installer le paquet xauth sur Debian.

apt-get install xauth

Espérons que la prochaine fois j'y penserai plus tôt.

mardi, novembre 27 2012

Recherche outil de gestion des participants

A l'occasion de mes derniers travaux sur Hypadrie j'ai été contacté pour savoir si il serait possible d'utiliser Hypadrie afin de gérer des listes de participants comme le font aujourd'hui des sites comme gestlistapp ou Eventbrite. Il existe déjà des outils de billeterie en ligne évolué comme e-voucher ou de gestion complète de conférences comme Pentabarf, mais je n'ai pas trouvé d'outil plus basique dans le fonctionnement. Les fonctionnalités de l'outil doivent rester simple afin de minimiser le temps d'enregistrement et permettre des inscriptions rapides, pas besoin de créer de compte ou de renseigner son CV complet avec antécédents à 4 générations. Nul besoin non plus de gérer le paiement en ligne. Hypadrie permet déjà cela mais est orienté spectacle vivant à ce jour, alors avant de généraliser l'outil et au lieu de ré-iventer la roue je fais appel à vos bookmarks afin de trouver l'outil existant ou approchant.

Bien évidemment le critère premier est la licence qui doit être libre.

Si vous connaissez un outil approchant laissez l'info en commentaire, merci à tous.

mardi, novembre 20 2012

Hypadrie dans Ouest-France

Ouest-France, dans son édition de Vannes, a publié un article sur Hypadrie intitulé ''Logiciel de réservation : les assos disent merci".

vendredi, novembre 16 2012

I will be the.re

C'est avec plaisir et enthousiasme que j'ai rejoint le projet the.re hier avec mon dernier serveur. Celui-ci sera utilisé en partie pour augmenter les ressources de mes développements SIG, de pérenniser l'hébergement d'Hypadrie et d'y accueillir également quelques projets amis.

Merci à Loic pour son accueil au sein de the.re et son inépuisable énergie à faire progresser la liberté en ligne

- page 2 de 9 -