[OSM-dev-fr] Embryon d outil de monitoring

THEVENON Julien julien_thevenon at yahoo.fr
Jeu 13 Oct 06:49:00 BST 2011


Hello,

Recemment il y a eu des discussions sur la mailing liste et lors de la reunion a La Cantine a propos d outils permettant de suivre les modifs sur la base OSM.
Il a aussi ete evoque plusieurs fois un systeme de parrainage pour les nouveaux contributeurs a OSM.

Ce soir je me suis donc penché un petit peu sur la question en prenant ces deux aspects la en compte et j ai fait sous Kubuntu 11.04 un petit proto en C++ d outil qui scrute les minutes diffs en vue de reperer les modifs faites par des utilisateurs inscrit depuis moins d un mois.

Le proto s appuie sur les libs suivantes : 

+ libcurl
+ zlib
+ gzstream
+ expat


Voici le principe global.
Le script telecharge les minutes diff une par une ( libcurl ) . Chaque minute diff telechargee est decompressee ( zlib + gzstream ) passée a un parser XML SAX ( base sur expat ) qui envoie lui meme les elements XML, c est a dire balise start/end et attributs, a une liste d analyseurs.

Pour le proto j ai developpe un petit analyseur qui recupere les attributs uid et user a chaque fois qu ils existent. Si l uid est non nul et que user n est pas la string vide l analyseur cherche dans sa table interne si ce user a deja ete rencontre.
Si ce n est pas le cas il telecharge la page profile de l utilisateur ( par exemple http://www.openstreetmap.org/user/SteveC ), la parse sommairement pour extraire la date d inscription  et calcule ensuite la difference temps entre la date courante et la date d inscritption.
Si l utilisateur est inscrit depuis moins d un moins il est ajoute au fichier log new_user.txt ( cf piece jointe ) 


Remarque:
pour recuperer les minutes diff je poll le fichier state.txt du minute-replicate pour savoir quand 
une nouvelle minute-diff est dispo ( je multiplie le delai d attente par 2 a chaque fois que le sequence number est inchange pour eviter d 
envoyer plein de requetes inutiles au serveur). A partir du sequence number je determine l URL du fichier minute-diff a telecharger.

Etant donne qu il est deja "tot" et que je bosse dans a peine une heure je m arrete la pour dormir un peu et je fournis les sources en l etat pour ceux que ca pourrait interesser, avec un script bourrin pour la compil ( j ai la flemme d adapter a cette heure la mon makefile autogenerant specifique a mon environnement de dev perso )
Comme ameliorations faciles a apporter:
+ on pourrait dumper les infos users dans une base sqlite de maniere a ne faire les requetes user qu une seule fois.
+ De meme on pourrait dumper le dernier sequencenumber des minutes diff avant arret du soft de maniere a repndre a partir de la au prochain redemarrage.
+ On pourrait appeler osmosis sur les minute-diff telecharges afin de filter sur un polygone de maniere a ne monitorer qu une zone geographique bien definie au lieu du monde entier
+ verifier en plus si les changeset des nouveaux users contiennent des ways tagges building yes afin de detecter un potentiel import bati fait par quelqu un trop nouveau pour etre au courant des procedures qualitees

+ certains d autres trucs auxquels je suis trop claqué pour penser pour l instant

Il est bien sur aussi possible definir d autres sortes d analyseurs plus complexes accoles a la base de donnees SQLIte/Spatialite de Marc Sibert par exemple

Toute les remarques sont les bienvenues sachant que ceci est un proto fait a l arrach et pas du tout optimise

Bonne nuit
Julien
-------------- section suivante --------------
Une pièce jointe HTML a été nettoyée...
URL: <http://lists.openstreetmap.org/pipermail/dev-fr/attachments/20111013/ad0fe533/attachment.html>
-------------- section suivante --------------
Un texte encapsulé et encodé dans un jeu de caractères inconnu a été nettoyé...
Nom : new_user.txt
URL : <http://lists.openstreetmap.org/pipermail/dev-fr/attachments/20111013/ad0fe533/attachment.txt>
-------------- section suivante --------------
Une pièce jointe autre que texte a été nettoyée...
Nom: sources.tar.gz
Type: application/x-gzip
Taille: 7876 octets
Desc: non disponible
URL: <http://lists.openstreetmap.org/pipermail/dev-fr/attachments/20111013/ad0fe533/attachment.bin>


Plus d'informations sur la liste de diffusion dev-fr