M'enfin ?!?

Aller au contenu | Aller au menu | Aller à la recherche

dimanche 8 février 2009

LinuxFr.org avec des commentaires et des réponses aux commentaires, et des réponses aux réponses, etc.

Les développements continuent d'avancer pour la refonte en Rails de LinuxFr.org. Je me suis attaqué à un refactoring des commentaires. Les fils de discussions de LinuxFr.org sous forme d'arbres sont une des forces du site : ils permettent de suivre les discussions très intéressantes (et les trolls, bien sûr). Malheureusement, c'est aussi une structure qui se prête assez mal aux bases de données relationnelles.

J'étais d'abord sur une technique d'ensembles imbriqués (« nested set »), avec le plugin rails awesome nested set, mais celui-ci ne fournissait pas les méthodes qui m'intéressaient. Par exemple, je veux pouvoir construire tout un arbre de discussions en effectuant une seule requête SQL. J'aurais pu compléter ce plugin, mais quitte à écrire du code, j'ai préféré partir sur une structure plus adaptée à mon cas : le chemin matérialisé (« materialized path ») consiste à garder pour chaque commentaire la liste de tous les IDs des commentaires parents dans un champs sérialisé. J'ai fait cela aujourd'hui et j'ai déjà une version fonctionnelle. La preuve en images : Les threads de commentaires en cours de développement

Dans les jours qui viennent, je pense me concentrer sur les dépêches et les commentaires (nettoyer le code, rajouter les fonctionnalités vraiment essentielles, corriger un ou deux bugs que j'ai remarqué, etc.). Je pourrais ensuite me pencher sur une nouvelle partie (la tribune ou le tracker, je ne sais pas encore).

mercredi 4 février 2009

Attention les yeux, ça va piquer !

J'ai repris mes développements sur LinuxFr.org, avec comme règle, d'en faire un peu tous les jours. Pour le moment, cela marche pas trop mal. Là, ça fait 5 jours de suite que je commite, et j'ai pu avancer sur les dépêches (aussi bien, création que toute la partie backend de modération). Pourvu que ça dure.

Sinon, je n'avais pas écrit la moindre de ligne de CSS jusque hier, et je commençais sérieusement à m'y perdre dans les différents blocs et balises qui structurent les pages. J'ai donc commencé à faire une CSS temporaire qui me servira juste pour le développement. Voici une capture de ce que cela donne (attention les yeux, ça pique) : Premier screenshot de la refonte de LinuxFr.org en Rails Je vous rassure, je ne compte pas garder la moindre ligne de cette feuille de style pour la version finale. En fait, j'espère bien ne pas avoir à faire la feuille de style finale, je ne suis pas très doué pour ça.

lundi 19 janvier 2009

LinuxFr.org sur des rails

Pour 2009, je n'ai pris qu'une bonne résolution, mais elle est de taille. Ceux qui ont lu ce journal sur LinuxFr.org savent déjà en quoi elle consiste. Pour les autres, la voici : je compte refaire le site LinuxFr.org en Ruby on Rails.

C'est un défi de taille, car la version actuelle existe depuis de nombreuses années, et a accumulé un grand nombre de fonctionnalités au fil du temps. Pour situer, je viens de récupérer la dernière version, elle comporte 18 000 lignes de code (pour les templates), auxquelles on peut ajouter à peu près autant de lignes pour les feuilles de styles. En plus, le site a un fort traffic (en gros, 280 000 pages vues par jour), ce qui oblige à se pencher très sérieusement sur les questions de performance et de sécurité.

J'ai attaqué le développement le 5 janvier, et on peut suivre les commits sur Github. Pour le moment, j'ai commencé à poser les bases pour les utilisateurs et les contenus (principalement, journaux et forums). J'ai également mis en place les commentaires, mais je ne suis pas satisfait du modèle de données, et je vais donc sûrement refaire ça rapidement. Mais la semaine prochaine, je vais surtout me concentrer sur les dépêches : proposition d'une dépêche par un lecteur authentifié ou non, relecture et modération par les AMR, puis affichage sur la home page, les listings de dépêches et les flux RSS.

En bref, c'est un projet qui en est encore à ses débuts, et quasiment tout reste à faire. Je n'ai pas pu avancer beaucoup cette semaine, mais ma motivation reste intacte. Je vais tout faire pour éviter ces périodes creuses, car le seul moyen de sortir un projet de cette taille est d'en faire un peu tous les jours.