Journal UU.zoy.org, le site qui vous a à la colle.

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
8
12
juil.
2012

Cher Journal,

Voici la suite des mes aventures avec mon site de paste web2.0. Ce petit message est la suite de ce post qui posait des questions sur la façon de classifier des langages et de ce post qui présentait la version 0 du projet.

Depuis, j'ai pas mal avancé sur plusieurs fronts.

Tout d'abord, j'ai fini par adopter highlight.js comme moteur de mise en couleur. Au départ, je n'avais pas d'a priori sur le moteur de mise en couleur sauf que comme à terme, j'aimerai bien permettre la création de paste encrypté (à la zerobin), je préférais une solution js pure.

Je suis allé lire la doc de Pygments, l'excellent moteur de coloration en python, et surtout, j'ai lu ici comment son intégration était faite dans ruby et c'est assez moche, je cite :

[…] it embeds the python interpreter inside ruby via FFI. This avoids the cost of setting up the python VM on every invocation and speeds up code highlighting from ruby by 10-15x.

Quand j'ai lu ça, j'ai ri. Et puis j'ai décidé que c'était vraiment pas la peine de faire ça côté serveur. Je suis tombé sur highlight.js en lisant le comparatif totalement injuste des colorateurs de syntaxe. Ce qui m'a plu avec highlight.js, c'est qu'il detecte automatiquement la meilleure coloration. Et ça, c'est rudement pratique.

Évidemment, je compte toujours essayer d'utiliser Linguist de Github côté serveur parce qu'il est plus malin que highlight.js. Bah évidemment, ils ne supportent par les mêmes langages et ne les écrivent pas pareil et ça c'est moche (cpp vs c++ par exemple).

J'ai mis une nouvelle version en ligne qui commence à faire des trucs pas trop mal. Tu peux la tester http://uu.zoy.org. On peut paster du texte, ça essaye de deviner, ça sauve le paste sur le serveur, lui donne une jolie url et on peut changer la coloration syntaxe juste en cliquant sur les petits liens à gauche.

Par exemple :

http://uu.zoy.org/v/bo.c++

Je me pose encore tout un tas de questions sur les problématiques suivantes:

  • Expiration automatique ou pas d'un paste
  • Nom des pastes (j'utilise rufus/mnemo, mais c'est prédictible et donc incompatible avec des pastes privés)
  • Pastes privé/Pastes publics

Et j'ai encore des problèmes à résoudre pour faire converger le detecteur ruby avec celui en javascript que j'utilise pour faire le highlight. J'ai un plan pour essayer d'avoir toujours la "meilleure" détection de langage possible. Mais après tout, ce qui est important, c'est que ce soit aussi coloré que possible (peu importe le langage détecté, non ?)

Une fois que j'aurai résolu les trois problèmes ci-dessus, je pourrai faire la première release publique et on ira boire du champomy, hein ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.