Blog

May contains traces of FLOSS, humors and Python.

Firefox and Thunderbird on Debian Jessie

According to Debian rules for free software, Firefox and Thunderbird aren't supplied with Debian. In place, Debian supplied Iceweasel and Icedob, which are rebranded versions of Firefox and Thunderbird without logos and copyrighted names. Here is a way to retrieve our favorits softwares on our favorit but-a-little-punctilious linux flavor.

Docker #1 : un simple Dockerfile

Docker permet d'industrialiser la mise en place de conteneurs applicatifs (basés sur lxc). Le but est la mise en place d'environnements de développement ou de SaaS (Software as a Service). L'un des avantages de Docker, est la construction des containers eux même. Ceux ci sont gérés sous forme de couche. Ansi, un hôte hébergeant 20 containers pour des WebApp Django, n'aura en mémoire qu'une seule image système d'exploitation et selon les versions de la WebApp disposera de plusieurs couches.

Distribuer des tâches avec Celery et RabbitMQ #1 (RainbowTable)

Python LogoRabbitMQ est un service de gestion de file d'attente pour tâche, particulièrement utilisé lorsque l'on souhaite distribuer un travail sur de multiples unités de travail. Attention, la communication inter-processus n'étant pas gérée cette façon de faire ne peut pas se substituer a MPI et consort! Dans le cas présent et a toute fin de test (gnarf, gnarf, gnarf), nous souhaitons réaliser une rainbow table. Une rainbow table est une base de données de mot de passe avec son équivalent chiffré (hash). Pour bien montrer l'avantage du procédé, j'ai choisit une fonction de hash hyper couteuse en temps CPU : bcrypt.

Muffins pour étourdis (sans oeufs)

J'ai aucun problème avec les œufs mais, il me prend parfois l'envie d'inviter des amis avec une pulsion irrépressible de faire des muffins (envie très liée à celle de m'en gaver, des muffins, pas des amis)... J'aime bien faire des muffins parce que pour la garniture, on peux improviser à fond. Allez y, au pire, vous perdrez un ami ou deux.

Rien ne sert de courrir avec RabbitMQ...

RabbitMQ est un logiciel client/serveur permettant de passer des messages de manière asynchrone entre des processus, qu'ils soient hébergé sur une même machine ou sur des machines différentes. Je m'en vais tester tout cela sur une Debian Wheezy, puis deux...

Installation Matlab Flexlm sur Debian Wheezy

Debian LogoPetite surprise lors de la mise en place d'un serveur de licence Flexlm, sur une Debian Wheezy. En intéractif, le serveur de licence se lance, lors du processus de démarrage, le serveur reste inflexible! Ne 
Un problème rencontré lors de l'installation du serveur Flexlm de Matlab sur Debian Wheezy.
Le système est une Debian Wheezy (testing rc1) 3.2.0-4-amd64.

RPI#1 : 2 diodes

Utilisation du GPIO du Raspberry Pi pour faire clignoter deux LEDs en alternance.

Montage

Nous allons utiliser les pins 16 et 18 de l'interface GPIO. Le montage est on ne peux plus simple, nous récupérons la masse ( pin 6 : GND ) sur la breadbox, chacune des diodes est protégée par une résistance de 330 Ohms. La programmation du port GPIO permettra d'envoyer ou non du courant dans notre circuit.

Créer un booklet avec PyPDF

Si il manque bien une fonctionnalité dans les logiciels libres de visualisation de PDF, c'est l'impression de livret (booklet). Acroread dispose de cette fonction fort utile lorsque l'on veux économiser du papier, imprimer un document en mode Booklet permet de diviser la consommation de papier par 4 et d'avoir un document pratique à utiliser.

La dernière fois que j'ai essayé la fonction booklet de Acroread, celui ci n'en a fait qu'a sa tête, il me retournait les feuilles dans tous les sens... Galère... J'ai donc développé un script Python nommé bookletizer.py qui s'appuie sur la bibliothèque PyPDF. Ce script permet de reclasser les pages dans l'ordre ad-hoc pour une impression en mode 2 page par feuille avec recto verso sur les bord courts.

PyPDF Manipuler des fichiers PDF avec Python

En faisant Bookletizer.py j'ai découvert la bibliothèque python PyPDF qui permet de manipuler des documents PDF via des scripts. Je vais décortiquer le script que j'ai créé pour ré-ordonner les pages en mode booklet.
# Import du module
import pyPdf

[...]
# ouverture du fichier PDF avec une execption
# différente en cas de pbm fichier (fichier 
# inexistant) ou pbm PDF (le fichier n'est
# pas un fichier PDF)
try:
    inputfile = pyPdf.PdfFileReader(file, "rb"))
    inputfile.numPages
except IOError:
    sys.exit("Input file error")
except pyPdf.utils.PdfReadError:
    sys.exit("Bad PDF file")
[...]

# Creation d'un simple fichier PDF vide (0 pages)
# qui va recevoir les pages dans l'ordre booklet 
output = pyPdf.PdfFileWriter()
[...]

# Ajout d'une page dans le le fichier output
#Ici c'est la page n° i de inputfile
 output.addPage(inputfile.getPage(i))

# Pour finir écrivons le fichier output
outputStream = file(options.outputfilename, "wb")
output.write(outputStream)
outputStream.close()

Avec cette librairie nous pouvons donc facilement tronquer, assembler, mélanger ou re-indexer des documents.

RPI#2 : 2 boutons

Le montage

Voici le montage, les boutons poussoir sont connectés sur les ports GPIO #18 (pin 12) et GPIO #23 (pin 16).