Bon, c'est pas le projet du siècle, mais j'ai besoin d'apprendre à gérer plusieurs trucs sous NodeJS.
J'apprends à maîtriser ces modules:
Express.js (Que je compte remplacer par Angular, il paraît que c'est mieux pour faire du templating?)
eventsource (Pour gérer l'eventsource de Wikipédia)
socket.io (Pour le côté temps-réel de l'appli)
J'apprends à éviter les callback aussi, j'ai découvert les promesses y'a pas si longtemps et c'est bô
Il est codé avec le cul, du coup je partage pas encore le lien car je compte d'abord faire un bon gros nettoyage des familles dans le code (surtout de l'optimisation) et dans la base de données.
Screenshots
Cliquez pour révéler
Cliquez pour masquer
L'idée, c'est de pouvoir suivre en temps réel les modifications qui sont apportées sur wikipedia sans avoir à bouger son gros cul de l'onglet en cours.
Wikipedia dispose de tout un système de protection des articles, d'approbation de contenu et rien que sur le wiki Français je recense 28.000 modifications par tranche de 24h.
La première grosse intégration sur le site, c'est les statistiques (Screen 1)
Elles permettent de savoir ce qui a été le plus modifié ces dernières 24H. Je compte faire une commande pour ne récupérer que les statistiques récentes (type /stats <h debut> <h fin>).
La deuxième grosse intégration, c'est le volet de droite. J'en ai chié.
Le fonctionnement est simple. Lorsque le code côté client reçoit une modification (Que l'on reçoit au format JSON, sans les détails) il demande au serveur d'aller récupérer les diff, puis les affiches à droite (Screen 2) au survol de la souris, ou sur l'overlay au clic.
Enfin, la dernière intégration, celle qui a le plus besoin d'optimisations, c'est la recherche parmi les modifications; (/search term1 [2,3,4,5,...])
Quand on reçoit les modifications faites sur les pages, grosso-merdo, je récupère les diff de la modification donnée que je stocke ensuite dans la base de données, pour l'instant telles quelles.
J'ai pas trop le temps de développer plus pour le moment, c'est l'heure de faire graille les petits, alors je mettrai le topic à jour (Notamment pour le lien :]) plus tard