Wednesday, October 21, 2009

Groupe de lecture en entreprise

J'apprends essentiellement par la lecture de (bons) livres: nouveaux langages, pratiques de développement, management... Or j'ai toujours éprouvé beaucoup de difficultés à faire lire ces mêmes livres à des collègues. Il semble de notoriété publique qu'un livre qui touche de près ou de loin à l'informatique est forcément difficile et ennuyeux à lire (pour être poli). Si de plus rédigé en anglais ...

Pour se donner le courage d'étudier un livre ensemble, d'apprendre et d'échanger autour de nouvelles connaissances, nous avons formé il y a deux mois un groupe de lecture dans mon entreprise. Nous avons commencé à trois personnes et maintenant nous sommes cinq, je croise les doigts pour que ça continue !

Voici la démarche que nous avons adopté:

1. Sélectionner un ouvrage:

  • Choisir un domaine dans lequel le groupe veut acquérir de nouvelles connaissances. Par exemple: Ruby, Python, Scrum, ...
  • Chercher et proposer une liste réduite de livres et/ou essais sur un thème donné. Se fier aux critiques des lecteurs pour avoir la certitude que le livre est bon. Attention aux mauvaises traductions: les budgets de traduction entre un Harry Potter et un livre d'informatique semblent très différents ;).
  • Acheter les livres (ou le PDF et imprimer). Chacun doit avoir son exemplaire.

2. Choisir une organisation:

A quelle heure se rencontre t'on ? Combien de fois par semaine ? Quels jours ? Quelle est la durée de la session ?
Dans notre cas, nous nous réunissons tous les Lundi et Jeudi à 12h, pendant 45 mn maximum.

Une personne doit être leader du groupe et s'assurer du respect de l'organisation (un Scrum Master du groupe de lecture en quelque sorte).

3. La préparation de la prochaine rencontre:

On choisit collectivement ce qui doit être lu pour la prochaine rencontre: les trois sections suivantes, le prochain chapitre.

Une personne doit être désignée (à tour de rôle) pour faire le résumé de la partie à lire.


4: La rencontre:

Tout le monde se retrouve autour d'une table. La personne en tâche de faire le résumé s'exécute. L'objectif est d'échanger, débattre et clarifier chacun des points abordés.

A la fin de la rencontre, retour au point 3 pour préparer la rencontre suivante.


Nous avons commencé cette pratique par la lecture de l'essai How to be a Programmer: A Short, Comprehensive, and Personal Summary de Robert L.Dead. Cela nous a permis de nous mettre en jambe avec un document court (quatre rencontres) et de valider notre fonctionnement.

Nous sommes ensuite passés à Plonger au cœur de Python (traduction de Dive Into Python de Mark Pilgrim) qui a l'avantage d'être ludique (et en français me diront certains).

Friday, October 16, 2009

Privoxy et NetworkManager

Je suis passé à NetworkManager pour gérer les connexions réseaux sur mon portable et je trouve enfin cet outil fonctionnel et pratique. Seul petit soucis: privoxy (un proxy que j'utilise comme bloqueur de pubs, ce qui donne l'avantage de fonctionner quel que soit le navigateur web utilisé) perdait un peu les pédales à chaque fois que NetworkManager reconfigurait le réseau et j'étais obligé de le redémarrer.

Mais je viens de découvrir que NeworkManager peut exécuter des scripts à chaque reconfiguration réseau. Je dégaine mon éditeur et voici un script à placer dans /etc/NetworkManager/dispatcher.d qui démarre ou arrête privoxy selon que le réseau soit disponible ou non (attention, c'est pour ArchLinux):


#!/bin/bash

LOGGER="/usr/bin/logger -s -p user.notice -t NetworkManagerDispatcher"
PID=`pidof -o %PPID /usr/sbin/privoxy`

if [ -n $1 ] && [ $2 == "up" ]; then
if [ ! -z "$PID" ]; then
$LOGGER "Privoxy is running, restart"
/etc/rc.d/privoxy restart
else
$LOGGER "Privoxy is stopped, start"
/etc/rc.d/privoxy start
fi
fi

if [ -n $1 ] && [ $2 == "down" ]; then
if [ ! -z "$PID" ]; then
$LOGGER "Privoxy is running, stop"
/etc/rc.d/privoxy stop
fi
fi



En prime vous aurez droit à quelques logs pour vérifier que ça fonctionne:

$ cat /var/log/messages.log |grep "NetworkManagerDispatcher"
...
Oct 15 18:42:09 magalo NetworkManagerDispatcher: Privoxy is stopped, start
Oct 15 18:42:11 magalo NetworkManagerDispatcher: Privoxy is running, stop
Oct 15 18:42:15 magalo NetworkManagerDispatcher: Privoxy is stopped, start
...

Friday, October 2, 2009

Embarquer Webkit

Pour une application embarquée j'avais besoin vite fait d'un navigateur web sans fioritures et support CSS + Javascript. Finalement c'est tout simple avec Python et Webkit.

Avec pywebkitgtk :

import gtk 
import webkit 

view = webkit.WebView() 

sw = gtk.ScrolledWindow() 
sw.add(view) 

win = gtk.Window(gtk.WINDOW_TOPLEVEL) 
win.add(sw) 
win.show_all() 

view.open('http://acid3.acidtests.org/') 
gtk.main()


La mếme chose avec pyQt:

import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *

app = QApplication(sys.argv)
web = QWebView()

sa = QScrollArea()
sa.setWidget(web)
sa.show()

web.load(QUrl('http://acid3.acidtests.org/'))

sys.exit(app.exec_())