filyb.info carnet web de florian birée

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

Mot-clé - Programmation

Fil des billets - Fil des commentaires

mardi 20 décembre 2011

En vrac (technique)

Les dernières nouvelles, en direct de la régie (on voit le technicien, casque sur les oreilles, mur d’écran derrière lui, qui prend le micro) :

  • la documentation du serveur a fait peau neuve, annonce-t-il, que ce soit pour les utilisateurs, ou côté admin ;
  • la forge a elle aussi changée. Existe les lourdeurs de Trac, voici maintenant le petit nouveau RstForge qui s’occupe d’afficher de jolies pages web, et de faire le lien entre les dépôts et les bugs, désormais gérés par Ditz ;
  • et sous le capot aussi, les choses bougent ! Après le remplacement du serveur web Apache par Nginx, désormais les processus web sont gérés par supervisord, parfois aidé de son pote Green Unicorn (oui, une cousine de la licorne rose invisible, tout à fait) ;
  • et enfin, ce jour est la naissance officielle de la version 0.1 de iCalFilter un couteau suisse en ligne de commande pour les fichiers iCalendar, et dont vous saurez tout en lisant la dépêche sur LinuxFr !

lundi 12 septembre 2011

En vrac, randos et interview

Quelques nouvelles, en vrac :

vendredi 15 octobre 2010

SFR Swallow : passerelle mails vers SMS

Pour les besoins de la lutte en cours contre la réforme des retraites, on vient de coder un petit script utile : il permet d'envoyer des SMS depuis un ordinateur, en passant par l'interface web de SFR (très efficace couplé avec un forfait SMS illimité).

Nommé SFR Swallow, le script peut s'utiliser en ligne de commande :

$ sfrswallow 06numéro "Thank you for all the fish"

et mieux encore, il peut être utilisé couplé avec Postfix pour faire une passerelle e-mail vers SMS. Ainsi, il suffit d'envoyer un e-mail à une adresse du style 0642424242@sms.example.org pour envoyer par SMS le contenu du mail. Vu que c'est quand même lié à un forfait particulier, un système d'authentification (les mails doivent être signés avec une clef OpenPGP connue) est inclus.

Le code est disponible, la documentation est incluse avec.

lundi 27 septembre 2010

hinstall : gérer ses paquets à la maison

Fermez les yeux, et imaginez que vous utilisez un ordinateur Unix sur lequel vous n'êtes pas root (ça va, vous lisez toujours ?)

Pour autant, pas question de se contenter du maigre choix de logiciels que ce root a bien daigné installer sur la machine (notamment, pas question d'utiliser les usines à gaz qui y font office d'environnement de bureau). Heureusement, sous Unix, il est toujours possible de compiler et d'installer ses propres programmes chez soi, dans son home. Et ce d'autant plus facilement que les programmes en questions sont léger, et ont peu de dépendances, bref, qu'ils sont moins craignos que les autres.

Pour commencer, préparons le terrain. Nous utiliserons, comme le recommande FreeDesktop, un répertoire ~/.local comme préfixe. C'est à dire qu'à l'intérieur se retrouvera la hiérarchie Unix standard des programmes que nous allons installer (par exemple ~/.local/bin, ~/.local/lib, etc).

Afin de pouvoir utiliser les programmes installés dans un tel endroit, il va probablement être nécessaire d'amender le script de lancement de votre shell préféré, par exemple ~/.bashrc pour Bash, et y définir les variables :

export PATH="$PATH:$HOME/.local/bin"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$HOME/.local/lib"

Bien. Passons aux choses sérieuses. Le script hinstall (licence WTFPL version 2), que vous pouvez directement placer dans votre ~/.local/bin, permet de gérer la configuration, la compilation et l'installation dans votre home d'un certain nombre de programes pas trop exotiques.

Il suffit de récupérer le code source du programme en question (par exemple, dmenu), puis de l'installer par un simple :

$ hinstall dmenu-4.1.1.tar.gz

hinstall déplacera l'archive dans ~/.local/src, l'extrayera, configurera le logiciel (soit par un ./configure ..., soit en éditant un config.mk), le compilera, et l'installera. Actuellement, les autoconf/autotools sont gérés, les Makefiles simples devraient fonctionner, et les setup.py sont reconnus.

Par contre, pas de gestion des dépendances : si au cours de la compilation une erreur se produit, le script s'arrête, et c'est à vous de trouver la dépendance à installer... avec hinstall.

hinstall permet aussi (dans la mesure où c'est prévu par les développeurs du logiciel en question) de désinstaller des programmes. Voir hinstall --help pour plus d'informations sur l'utilisation de hinstall.

Enjoy!

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 !

- page 1 de 10