Reprise du blog avec NodeJS

21/04/2013

Vous avez remarqué ? nouveau blog, nouveau design, et surtout nouveau langage: NodeJS (javascript) avec une base mongo. Le tout avec mon middleware nommé Knotter. Je me permet donc de vous présenter le renouveau et certainement un peu plus de contenu puisque de désormais je pense qu’il va bien mieux marcher. Laissez moi vous expliquer…

Cela faisait des mois, que je ne touchais plus mon blog. Il faut dire que j’ai pas eut le temps, d’une part, mais aussi que ce vieux coucou tourne depuis presque 6 ans sur un Copix 3 (vous vous souvenez ?) en PHP. J’avais beau avoir fait le maximum à l’époque, les méchants spammeurs ont pris le dessus et m’ont pollué mon site de commentaires bien dégueulasses… En plus de ça, le conteneur qui était là pour tenir le site en éveil s’en prend plein la poire (d’ailleurs ça j’ai pas encore tout réglé). Mais depuis quelques jours, je me suis relancé sur le projet. D’abord parce que je développe depuis quelques temps un middleware (un genre de microframework) nommé Knotter

. But de la manœuvre: avoir un truc qui fasse un peu comme le WSGI via Python, mais en Javascript.

Le projet lancé, je me suis attelé à reprendre mon blog… pas mal d’étapes ont dut être effectuées pour remettre au propre le site.

En premier lieu, virer le spam ! Tenez vous bien: 97% des commentaires sur le site était du spam. Dingue non ? Alors j’ai commencé par:

  • passer un export de la base MySQL dans MongoDB (avec un script python qui sérialisait mes tickets + commentaires en un document JSON)
  • faire un module de calcul “Bayesien”, un coup d’apprentissage et il a pas mal classé le bordel
  • nettoyer un peu mes billets qui étaient écrit en “wiki” => or voilà, node n’a rien pour ça, je me suis donc tapé un module à la main qui fait tout ça

Ensuite, j’ai recherché les modules qui pouvaient me rendre service:

  • “feed” pour créer un fil RSS propre
  • “swig” pour le moteur de template (vraiment génial, proche de Twig pour PHP ou Jinja2 pour Python)
  • “emailjs” pour ajouter (enfin !) un système de notification email en cas de réponse à un commentaire
  • “sitemap” pour créer un bon sitemap rapidement

et j’en passe…

Je me suis dit aussi: “rendons le site responsive”, et j’ai beau aimer le bon vieux Twitter Bootstrap, j’ai préféré épurer mon travail en utilisant “Skeleton”, un outil généralissime qui est “style agnostique”, ce qui veut dire qu’il ne me donne que la partie intéressante: les layouts.

J’ai calculé, pour créer le site, à savoir:

  • 3h pour les modules (ticket, page statique, rss, sitemap, connexion à la base mongo…)
  • 1h pour le montage HTML et styles (oui je sais ça se voit…)
  • 2h pour le classement des spams

Reste que je vois encore des spammeurs me faire chier… je vais vérifier si mon filtre auto fonctionne. Et au fur et à mesure je vais améliorer tout ça. J’espère que cette fois-ci le site arrêtera de se planter misérablement tous les jours (parfois pendant plusieurs heures) et que je pourrais vous délivrer rapidement tous mes modules.

A savoir que désormais, le site tourne entièrement en Javascript (ou simili):

  • nodejs coté serveur
  • mongodb pour les datas
  • un peu de js brut pour le site

Du coup, un seul langage pour un site, je vous assure que ça le fait. Niveau perf je suis pas mal non plus… Voilà pour l’info.

Ça peut vous intéresser aussi


Sortie de Knotter

Et bien on y est. Je me suis lancé un ...


Mise à jour du blog en Go

Si vous connaissiez mon blog, vous avez remarqué qu’à ...


Du troll au débat Windows vs Linux

Gros débat sur le canal IRC #copix, un de nous ...


Le retour du blog

Ca y est enfin !

Merci de m'aider à financer mes services

Si vous avez apprécié cet article, je vous serai reconnaissant de m'aider à me payer une petite bière :)

Si vous voulez en savoir plus sur l'utilisation de flattr sur mon blog, lisez cette page: Ayez pitié de moi

Commentaires

Ajouter un commentaire

Ajouter un commentaire

(*) Votre e-mail ne sera ni revendu, ni rendu public, ni utilisé pour vous proposer des mails commerciaux. Il n'est utilisé que pour vous contacter en cas de souci avec le contenu du commentaire, ou pour vous prévenir d'un nouveau commentaire si vous avez coché la case prévue à cet effet.