Il y a un peu plus de 4 ans, alors que j'utilisais encore Windows et d?veloppais des outils en VB 6, je fis la connaissance du contr?le msinet, permettant de faire des requ?tes http. C'est alors que vint l'id?e de m'en servir pour faire des statistiques de forums de discussion, en l'occurrence ceux de Jeuxvideo.com [1]. Ces derniers sont probablement parmi les meilleurs pour confronter le programme ? une multitude de cas de figures : messages vides, nom d'auteur absent, insertion de code html dans l'adresse mail, etc...

Une fois un client assez sympa obtenu, il fallait se rendre ? l'?vidence : le VB 6 n'est pas un langage pr?vu pour g?rer une grosse quantit? de donn?es, de plus m?me en g?rant toutes les erreurs pouvant ?tre renvoy?es par le contr?le msinet, le programme bouclait parfois ind?finiment, sans raison apparente ! Et ?videmment, difficile de jeter un oeil aux sources des outils Microsoft pour ?ventuellement tenter un d?buggage...

Apr?s avoir vu trois versions plus ou moins abouties se succ?der, j'ai tourn? la page pour passer d?finitivement sous Linux. Une premi?re version, compos?e d'un script en C t?l?chargeant les pages ? l'aide de wget [2], et faisant le calcul ? l'aide d'une version modifi?e de pisg [3] adapt?e ? mes besoins. Cela a permis de passer d'un programme demandant plusieurs jours pour g?n?rer les statistiques d'un forum ? un autre g?n?rant les statistiques de plusieurs forums chaque jour.

Depuis 2004 un programme maison ?crit en C par mon ami Fly et moi-m?me, SFer, est venu remplacer pisg tout en conservant le style tr?s clair des rapports HTML qu'il g?n?re. Ce dernier avait trois principaux inconv?nients : il r?analysait ? chaque fois la totalit? des messages, chose probl?matique pour des forums d?passant parfois les six millions de posts, il chargeait tous les messages en m?moire et le fait qu'il soit ?crit en Perl nous ?loignait un peu de notre objectif - g?n?rer le plus rapidement possible chaque page de statistique.

Quatre ans apr?s le d?but de cette aventure, ce programme actualise hebdomadairement les 34.856 pages de statistiques (certains threads ayant leurs propres statistiques), correspondant aux 91.806.957 messages, r?partis dans les 10.697 forums de Jeuxvideo.com. Le tout ?tant mis ? disposition sur un site pr?vu ? cet effet [4]. Ce dernier est visit? presque 1000 fois par jour et pendant ce m?me intervalle plus de 3000 pages sont consult?es. Le nombre de visiteurs quotidien de Jeuxvideo.com doit y ?tre pour quelque chose !

M?me si l'objectif fix? ? la base est atteint, il faut reconna?tre que ce programme est loin d'?tre exempt de d?fauts :
  • la majeure partie du code - en volume - se retrouve condens?e dans un fichier source d?passant les 300Ko (non non, je ne mettrai pas de lien, cherchez vous-m?me ;p)
  • tout est m?lang? : on g?n?re un petit bout de fichier HTML par ci, un autre par l? apr?s avoir fait quelques tris et appliqu? quelques algos...
  • le programme de base ?tant relativement bancal, les nombreuses fonctionnalit?s ajout?es par la suite n'ont fait que compliquer les choses
  • ?tant centr? ? la base sur Jeuxvideo.com, la structure des donn?es est calqu?e sur celle des forums de ce site, et donc pas forc?ment adapt?e ? d'autres types de forums
Si je n'avais pas de notion de ce qu'est un programme structur? quand j'ai entam? son ?criture, une chose est s?re, je ne referai plus jamais ce genre d'erreurs ! Ce projet a beau ?tre sous licence GPL, malheureusement il para?t difficilement r?utilisable pour quelqu'un n'ayant pas une bonne connaissance de son code source. N?anmoins, il fait quand m?me pas mal d'heureux - les visiteurs du site de statistiques de Jeuxvideo.com [3] - c'est donc une belle r?compense.

Et vu qu'il serait dommage de s'arr?ter en route, une cinqui?me version est en cours de pr?paration. Mais cette fois-ci avant de sauter sur le clavier, je prends soin de bien r?fl?chir. :)

[1] http://www.jeuxvideo.com/
[2] http://directory.fsf.org/wget.html
[3] http://pisg.sourceforge.net/
[4] http://jvstats.planet-shitfliez.org/