filyb.info carnet web de florian birée

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

vendredi 30 juillet 2010

Sass – Syntactically Awesome Stylesheets

Quiconque qui ait un jour touché aux CSS est convaincu de l'intérêt d'avoir une mise en page indépendante du contenu, voir différentes mises en pages selon le client accédant à la page... et est aussi convaincu de combien le langage des CSS est une plaie. Peu de factorisation de code possible (combien de copier-coller pour des codes abscons en hexadécimal), et donc des fichiers illisibles, où la construction générale de la mise en page est perdue dans les détails techniques à rallonge.

C'est là qu'arrive Sass, qui propose une sorte de préprocesseur, qui offre un langage évolué (avec même deux grammaires possibles de ce langage) qui est ensuite compilé en CSS traditionnelles. Il suffit d'aller sur le site web de Sass, les exemples de code parlent d'eux mêmes. L'implémentation officielle, en ruby, est disponible dans Debian (prendre le paquet de unstable pour avoir la nouvelle syntaxe scss), et il existe aussi une implémentation en perl (mais je ne sais pas si elle gère scss). Le compilateur propose même un mode où il monitore les changements sur le fichier source, qu'il recompile dès que nécessaire : c'est très agréable au codage.

Et, cerise sur la cerise, la syntaxe sass est disponible dans le colorateur syntaxique Pygments, et pour il existe un patch pour scss, ce qui permet d'avoir la coloration syntaxique dans Bristoledit (rassurez-vous, c'est aussi possible dans vi et emacs).

Après ça, on ne peut plus refaire des CSS old-school sans souffrir...

jeudi 29 juillet 2010

Naviguons dans le code

Je viens d'installer webbzr sur TheFool, une interface web qui permet d'afficher élégament et simplement le contenu des dépôts bazaar publics.

Certes, webbzr est en php, mais il est léger et simple à installer, alors que demander d'autres ? Après tout, simple is beautiful.

J'avais certes déjà une plateforme Trac d'installée, mais tous les dépôts n'ont pas besoin d'autant.

On y trouvera notamment :

  • le dépôt de RstWiki, le moteur de wiki minimaliste qui fait tourner mes pages perso (et qui pour le coup mériterait peut-être un Trac...) ;
  • mes fichiers de configuration, tellement c'est pratique de les récupérer sur n'importe quelle machine qu'ils sont versionnés, et tellement c'est pratique de lire ceux des autres que je partage les miens.

lundi 12 juillet 2010

Python 3 en Python 2

Un de mes objectifs pour la prochaine version de Bristoledit est de pouvoir faire fonctionner l'éditeur aussi bien avec Python 2 que Python 3, voir même avec Pypy. Pourquoi ? Parce que Python 3, c'est l'avenir, le language est plus propre, plus agréable. Mais Python 2 reste encore très utilisé, et certaines bibliothèques (PyGTK) ne sont pas encore compatibles avec la version 3. Et Pypy, parce qu'avoir un interpréteur plus rapide que CPython, c'est la classe.

La manière traditionnelle pour avoir du code compatible entre Python 2 et Python 3 consiste à l'écrire en Python 2, puis à le convertir avec 2to3. Mais c'est tout de même relativement contraignant.

Aussi, je me suis dit que j'allais essayer d'avoir un code fonctionnel avec ces trois interpréteurs, sans traduction préalable, comme l'a fait Ryan Kelly pour PyEnchant.

Voici donc upy (pour universal python), un module qui permet de s'approcher de la sémantique de Python 3, mais avec du code fonctionnel quelque soit l'interpréteur.

Exemples :

from upy import *    # oui, normalement ça ne se fait pas. Ici, on écrase sans
# discuter les fonctions internes de Python 2 par des
# équivalents de Python 3

spam = str() # hop, une chaîne *unicode* vide
eggs = bytes() # hop, un tableau d'octets (attention cependant, la
# sémantique de eggs[i] n'est pas la même entre Python 2
# et Python 3

spamspam = u('Hêllo Wôrld') # u("") remplace u"", qui n'est valide qu'en
# Python 2
eggseggs = b("que d'octets !") # de même, b("") remplace le b"" de Python 3

uprint(spamspam) # le print de Python 2 ne se remplace pas facilement...
# uprint a la même sémantique que le print de Python 3
# il est possible d'importer du __future__ le print de
# Python 3 dans Python 2.6, mais on perd alors la
# compatibilité avec Python 2.5 et Pypy.

D'autres objets sont disponibles, voir la documentation du module. Il est aussi possible de ne pas écraser les versions originelles, et d'utiliser juste des ustr, ubytes, etc.

Maintenant, il n'y a plus qu'à réécrire Bristoledit pour profiter de tout ça !

Bristoledit 0.2

Presque un an après la première, voici la seconde release de Bristoledit.

Rappels rapides : Bristoledit est un éditeur de texte adapté à l'édition de programmes informatiques ou de documents structurés (LaTeX ou HTML). Les principes de l'éditeur sont :

  • Interface : l'éditeur peut s'utiliser uniquement au clavier, mais sans être pour autant difficile à apprendre (raccourcis clavier habituels, shell avec autocomplétion complète).
  • Fonctionnalités : il existe déjà des outils qui font les choses bien, autant les utiliser. Par exemple, la fonction de recherche de l'éditeur utilise grep, le système permettant d'aller à la définition d'un symbole se base sur Exuberant Ctags.
  • Modularité : la plupart des fonctions sont implémentées sous formes de plugins, qu'il est possible de désactiver, de remplacer... Rajouter une fonction est aussi facile.
  • Personnalisation : la configuration de l'éditeur se fait à l'aide de fichiers Python, qui restent simples à éditer en tant que fichiers de configuration, mais peuvent servir pour implémenter les fonctions qui vous manquent en peu de lignes de code.

La version 0.2 ne propose toujours qu'une interface en mode texte (ncurses), mais la liste des changements depuis la version précédente est plutôt longue.

Pour le téléchargement, les instructions d'installation et d'utilisation, rendez-vous sur le site de Bristoledit.

Le développement continu, avec une roadmap déjà bien remplie, et une phase importante de refactoring qui commence.

samedi 26 juin 2010

Monter facilement des périphériques amovibles

Après le remplacement d'une bonne partie de Xfce par awesome sur mon ultraportable, j'ai eu envie de me débarrasser de hal, qui est considéré comme obsolète, et ralentissait le démarrage de l'ordinateur. Ignorant ses supplications (J'ai peur — Mon esprit s'en va, je le sens), je le apt-get purge sans remords.

Problème : certains composants de mon systèmes l'utilisait encore... xfce4-powermanager est vite remplacé par un indicateur de la charge de la batterie dans awesome, mais ce qu'il me manque surtout, c'est le montage automatique des périphériques amovibles. Et là... je n'en ai pas encore trouvé qui soit passé à udisk (le remplaçant de hal).

Dans ces cas là, on se retrousse les manches, et on pond un petit script (que vous trouverez en annexe), nommé amount, qui utilise dmenu et pmount pour proposer de monter et démonter facilement des volumes, sans être root.

Comment l'utiliser ? Copiez-le quelque part dans votre PATH, et lancez

amount

Un menu s'affichera avec le nom de tous les périphériques amovibles qui peuvent être montés. Entrez le nom de celui que vous voulez, et vous pourrez le retrouver dans /media/.

De même, pour démonter un volume, il suffit de lancer

amount -u

Il est aussi possible de créer un lien symbolique vers amount nommé aumount. Cela exécutera amount -u.

(Limitations du script : il ne fonctionne pour l'instant qu'avec les volumes qui ont un label.)

4 juillet : bon, en fait j'ai trouvé un ensemble de scripts basés sur udev qui fait de l'automount réel. Il s'agit de uam, et ça marche bien.

- page 1 de 37