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.

mardi 9 décembre 2008

The broken window theory

La théorie des fenêtres cassées (« The broken window theory ») a inspiré les forces de police de New York et d'autres villes importantes pour lutter contre la criminalité.

Cette théorie postule que la différence entre un immeuble propre et joli, et un autre en très mauvais état peut être la conséquence d'une simple fenêtre cassée. Cette simple fenêtre cassée laisse une impression de négligence et d'impunité. Des personnes commencent à laisser traîner des détritus, puis des tags apparaissent, et en un rien de temps, l'immeuble est devenu insalubre et mal fréquenté. La morale ? Il ne faut pas laisser traîner des fenêtres cassées, mais au contraire, les réparer de suite pour éviter que des dégâts plus sérieux n'arrivent. Jusqu'à récemment, cette théorie n'était qu'une hypothèse, mais des études récentes viennent soutenir cette théorie.

Chose intéressante, les pragmatics programmers ont appliqué cette théorie au développement logiciel. Les fenêtres cassées sont alors tous les code smells : le test unitaire qui ne passe pas, le module mal documenté, le FIXME qui traîne, la fonction mal implémentée... Il est alors important de corriger au plus vite ces petits défauts, sans quoi ils vont s'accumuler et donner une mauvaise impression de la qualité du code. Et alors, ce seront des défauts de plus en plus en gros qui vont arriver, chaque développeur se disant que ce n'est pas grave s'il introduit un nouveau code louche pour gagner du temps, car d'autres développeurs l'ont déjà fait ailleurs. Le même développeur qui aurait une base de code propre, sans fenêtres cassées, n'aurait pourtant pas osé être le premier à écrire du code sale (surtout s'il sait que son code fera l'objet d'un code review, mais c'est un autre sujet).

Pour avoir déjà rencontré souvent ce cas de figure, je sais que cette analogie est très pertinente. Ne laissez pas des fenêtres cassées dans votre code !

mercredi 3 décembre 2008

Le navigateur web Arora

J'ai récemment eu besoin de résoudre des bugs sur LinuxFr.org qui était lié au moteur javascript de Safari (les #883 et #900 si vous voulez tout savoir). Étant sous GNU/Linux, je ne pouvais pas installer Safari, et bien entendu, je n'arrivais pas à reproduire les bugs sous Firefox. Toutefois, le moteur de Safari, Webkit, est libre, et il en existe des ports sous GNU/Linux.

J'ai d'abord essayé epiphany-webkit, et j'ai pu constaté le problème mais pas faire grand chose de plus. Epiphany ne me donnait pas accès à un débugger javascript et ne me donnait même pas accès à l'erreur js. Après une phase de recherche sur google, j'ai tenté un navigateur web que je ne connaissais pas (même de nom) : Arora. Il dispose de l'outil Web Inspector (en gros, un équivalent de Firebug pour Safari), ce qui m'a donné l'erreur javascript et permis de faire quelques tests dans la console intégrée. Bref, même si ce navigateur n'a rien de révolutionnaire, je suis bien content de pouvoir utiliser le Web Inspector de Webkit sous linux.

vendredi 31 octobre 2008

Encore plus de tips pour Vim

Dans la série des astuces pour Vim, voici le troisième épisode (le premier se trouve par ici et le second par là).

  • Jamis Buck, l'auteur de Capistrano, revient sous Vim après plusieurs années de textmate. La bonne nouvelle, c'est qu'il ne peut pas se passer de Cmd-T pour trouver des fichiers, et qu'il a donc développé un plugin Vim pour faire cela : Fuzzy File Finder. Je vous conseille fortement de l'essayer, ca simplifie vraiment la vie pour ouvrir des fichiers bien planqués dans des sous-répertoires.
  • La recherche sous Vim se fait en tapant / puis l'expression recherchée. Je suppose que vous connaissiez cette commande, mais saviez-vous que l'on peut spécifier un déplacement en tapant un deuxième / puis le déplacement voulu ? Par exemple, /foo/e+1 placera le curseur sur le premier caractère après foo. Ceci est très pratique quand on répète plusieurs fois la même recherche.
  • Si vous débuggez souvent des feuilles de style CSS, vous êtes amené à faire beaucoup d'allers-retours entre votre navigateur web et Vim. Et à chaque fois que vous faîtes une modification, vous êtes obligés de taper <ESC>:w<CR> pour la tester. Pour gagner quelques touches à chaque itération, je vous propose de rajouter la ligne suivante à votre fichier .vimrc :
autocmd FocusLost *.css :up

Elle enregistre automatiquement chaque fichier .css quand Vim perd le focus (et uniquement s'il y a des changements à enregistrer).

Screenshot de Gvim avec le plugin Merb

samedi 25 octobre 2008

Recherches Google

Voici quelques recherches google qui ont amenées des personnes sur ce blog :

  • php sql comme rails : il existe des ORM en PHP, mais franchement, ce n'est pas à la hauteur de Rails.
  • vim ^m : je suppose que cette personne a ouvert un fichier provenant de windows sous Vim. Dans ce cas, les retours à la ligne apparaissent en ^M. Pour les convertir en retour à la ligne UNIX, il est possible d'utiliser l'utilitaire dos2unix ou alors, directement depuis vim, taper :%s/^M//g (attention, pour taper ^M, il faut utiliser la combinaison CTRL-V CTRL-M, sinon cela ne fonctionne pas).
  • faire un copier coller avec un mac : Pomme-C Pomme-V, non ?
  • se qui me menque le plus : probablement un correcteur orthographique et grammatical.
  • "j'ai plus d'sou" : je ne vois pas ce que je peux y faire.
  • templeet : hein, il y a encore des gens qui cherchent ça ?!? Alors, pour info, c'est un framework PHP qui a pris un méchant coup de vieux ces 5 dernières années.
  • garder fenetre premier plan mac os x : je ne suis jamais arrivé à garder une fenêtre au premier plan sous Mac OSX. Les solutions ? Passer à un vrai window manager sous GNU/Linux ou utiliser des Post-its à la place.

mercredi 10 septembre 2008

RubyflowFr, premiers retours

RubyflowFr est en ligne depuis une dizaine de jours. C'est l'occasion de faire un premier retour dessus :

  • 18 posts
  • 8 utilisateurs enregistrés
  • environ 1500 pages vues
  • une trentaine de personnes suivent quotidiennement les flux RSS, d'après Feedburner
  • déjà des changements de CSS !

Merci à Nicolas Gruson pour ces modifications de CSS qui améliorent grandement la lisibilité du site. Bref, cela démarre pas mal, même si j'aimerais bien que plus de personnes proposent des liens (il n'y a pas besoin de compte pour cela).

jeudi 4 septembre 2008

PDF de l'article sur Rails et la sécurité

Ce très court billet est là juste pour vous dire que mon article, Rails et la sécurité, est maintenant disponible en PDF. Vous pouvez le télécharger là : Rails et la sécurité (PDF).

mardi 2 septembre 2008

RubyflowFr est en ligne

Rubyflow est une application de publications de liens à destination de la communauté Ruby. Peter Cooper a libéré le code source de cette application, aussi Ruby France a décidé d'en sortir une version française destinée à la communauté française des rubyistes et railers.

L'adresse du site est http://flow.rubyfrance.org/. Bien entendu, vous êtes encouragés à partager vos liens sur Ruby, Rails, Merb ou autres en les postant accompagnés d'une courte description. Vous savez ce qu'il vous reste à faire ;)

- page 2 de 5 -