lundi 30 juillet 2007

Département de la Somme 2007

En cette année 2007, j'ai décidé de voyager au fin fond de mon département que je me suis apperçu ne pas vraiment connaitre. Ce qui est un comble sachant que j'y vis depuis que je suis petit et que j'ai déjà voyagé dans plusieurs pays étrangers (Niger et Pakistan).

Cappy : Les Malaquettes


Éclusier-Vaux : La montagne de Vaux


Toutencourt :

Mise à jour 30/03/2008
Agrandir le plan

Multiconfiguration Xorg

Voilà mon problème: Sur mon lieu de travail j'utilise l'écran de mon portable ainsi qu'un écran plan 19' avec lequel je fait du Dualscreen (sans Xinerama). À la maison, je n'utilise que mon écran de portable et donc problème : Soit je choisi d'être toujours en configuration Dualscreen, au quel cas, chez moi j'ai la possibilité de lancer des application sur un écran inexistant (pas très pratique !). Soit je change constament de configuration à chaque reboot à la main. La solution que j'ai choisie me permet lors du boot de ma machine de choisir entre les modes Dualscreen et Monoscreen. Cette solution consiste à modifier les options de boot du kernel et d'ajouter au démarrage un script permettant, en fonction du paramètre choisi de booter soit avec un environement X configuré en Dualscreen ou Monoscreen. Pour mettre en place cette solution, on procède en trois étapes:
  1. Configuration du fichier /etc/xorg.conf
  2. Tout d'abord sauvez votre configuration actuelle (en Monoscreen je suppose) dans le fichier /etc/xorg-monoscreen.conf. Ensuite créez un fichier de configuration /etc/xorg-dualscreen.conf avec lequel vous allez configurer l'ensemble des options dualscreen (Pour la configuration de Xorg en mode DualScreen) Attention :Ces deux étapes dont primordiales pour la suite ! Pour pouvoir utiliser X convenablement après ces modifications, créez un lien /etc/X11/xorg.conf avec la configuration souhaitée :
    mv /etc/X11/xorg.conf /etc/X11/xorg.conf-old
    ls -s /etc/X11/xorg-monoscreen.conf /etc/xorg.conf
  3. Configuration des options de boot (GRUB)
  4. Chez moi, la configuration de grub a dû être changée comme il suit:
    ...
    title=Gentoo-2.6.20-r8 - [Monoscreen]
    root=(hd0,1)
    kernel=/boot/vmlinuz root=/dev/hda2 vga=791 splash=silent dualscreen=no
    
    title=Gentoo-2.6.20-r8 - [Dualscreen]
    root=(hd0,1)
    kernel=/boot/vmlinuz root=/dev/hda2 vga=791 splash=silent dualscreen=yes
    ...
    On peut donc voir que j'ajoute l'option dualscreen au kernel qui me permet de savoir dès le boot si je suis à la maison ou au travail.
  5. Le script d'autoconfiguration /etc/init.d/dualscreen
  6. C'est la partie la plus importante du mode autoconfiguration. Le script va choisir quelle configuration pour Xorg utiliser en fonction de l'option dualscreen passée au kernel.
    #!/bin/sh
    dualscreen=$(sed -e "s/.*dualscreen=\([^ ]*\).*/\1/" /proc/cmdline)
    
    if [ -h /etc/X11/xorg.conf ] 
    then
      rm /etc/X11/xorg.conf
    else
      echo "Warning: /etc/X11/xorg.conf is not a symbolic link keeping the old one"
      exit 1
    fi
    
    if [ "$dualscreen" = "yes" ]
    then
      ln -s /etc/X11/xorg-dualscreen.conf /etc/X11/xorg.conf
    else
      ln -s /etc/X11/xorg-onescreen.conf /etc/X11/xorg.conf
    fi
    
    Une fois que ce script est en place, il faut le rendre exécutable :
    chmod +x /etc/init.d/dualscreen
    La dernière étape consistera à exécuter ce script au démarrage (avant toute les application lançant X tel que gdm, kdm et xdm :
    Sur Debian/RedHat/Mandriva
    # ln -s /etc/init.d/dualscreen /etc/rc2.d/S40dualscreen
    Sur Gentoo
    # rc-update add dualscreen default
Si toutes ces opérations ont été éfféctuées avec succès, lors du boot, si vous choisissez le kernel en mode dualscreen ou monoscreen, votre configuration Xorg changera correctement.

Edit : 02-10-2007

Il semblerait que la nouvelle version de Xorg détecte directement la présence ou non de deux écrans, ce qui rend inutile cette astuce. Néanmoins, la démarche peut être utile pour d'autres problèmes

dimanche 29 juillet 2007

JCraft: M@tCraft, le retour

Projet réalisé en 2005. Aprés la réalisation en C brut de M@tCraft, j’ai repris le concept et redévellopé le projet en java cette fois, me permettant d’utiliser la flexibilité Objet de Java. En plus de cette nouvelle version, le support multi-joueur en réseau a été implémenté permettant ainsi à plusieurs joueurs de s’affronter en temps réel.
Le rapport du projet
Les sources du programme

Exemple avec des sprites tirés du jeu Warcraft III©

M@tCraft: Jeu de stratégie entre Warcraft et FreeCiv

J’ai développé ce jeu en 2004 lors de mon année de maîtrise. C’est une version trés simplifiée du jeux Warcraft avec un mode de jeu à la FreeCiv en 3D.
Le rapport du projet
Les sources du programme

MatStéMind: Mastermind en 3D

J’ai réalisé ce projet avec Stéphane Poinsart lors de ma deuxième année d’étude en informatique à l’IUT d’Amiens (2001/2002).
Le rapport du projet
Les sources du programme

Tétris : Tétris en OpenGL

J’ai réalisé ce jeux en 2003 lors de ma maîtrise en informatique. Les régles de ce tétris sont différentes de celles habituelle. En effet, le jeux se joue sur un plateau de dimension 16x8 au lieu de 10x10 et les pièces sont également différentes rendant le jeux un peu plus facile.
Le rapport du projet
Les sources du programme

XFigToSVG : Conversion Xfig vers SVG

Ce script permet de convertir les fichier Xfig vers le format SVG. Il a été réalisé en 2004 alors que l’exportation vers le format SVG n’était pas encore supporté par Xfig. Pour pouvoir utiliser ce script, vous devez avoir un environnement Python installé sur votre machine.
Le rapport du script
Le script de conversion

Récupération des photos d'un EOS 400 D

Ma moitié a récemment acheté un superbe reflex numérique Canon EOS 400 D. Le problème arrive au moment où il lui faut récupérer les photos prises de l'apareil sur son ordinateur. Hé oui, nous sommmes tous les deux sous GNU/Linux (distribution Gentoo). Donc malheureusement, le support du 400D n'est pas supporté dans le paquet ligphoto2 de notre distribution favorite. Ni une, ni deux, je lui propose de produire un petit script qui lui permetra néamoins de récupérer ses photos.
  • Je vérifie que l'appareil est bien détecté par le kernel:
  • # lsusb Bus 004 Device 001: ID 049a:3110 Canon inc.
  • Une fois gphoto2 installé, je me lance dans le script
#!/bin/sh
## Ce script permet de récupérer les photos d'un appareil photo
## numérique compatible PTP (gphoto2) en passant par
## l'utilisateur root
##
## Dépendances:
##  * bash
##  * date
##  * gphoto2
##  * su

DEST=~/Images/$(date +%F)
USER=$(id -nu)
GROUP=$(id -ng)

echo "Script de récupération des photos"
echo "Répertoire de destination : $DEST"
[ -d "$DEST" ] || {
   echo "Création du répertoire de destination : $DEST"
   mkdir -p $DEST || {
       echo "[Erreur] Impossible de créer le répertoire de destination"
       exit 1
   }
}
cd "$DEST"
echo "Invocation de Gphoto2 en root et récupération des Photos"
su -c "gphoto2 -P ; chown $USER:$GROUP *"
[ $? -eq 0 ] || {
   echo "[Erreur] Problème durant la récupération des photos"
   exit 2
}
echo "Tout c'est bien passé. FIN !"
exit 0
Ce que fait le script :
  1. Création d'un répertoire ~/Images/<date du jour au format "YYYY-MM-DD">
  2. On se place dans le repertoire nouvellement créé
  3. Invocation de gphoto2 et conservation du propriétaire sur les fichiers (utilisateur qui a invoqué la commande)

samedi 28 juillet 2007

Activer les touches multimédia sous Xorg

Étant l'heureux possesseur d'un portable DELL D800, je me suis dit qu'il serait intéressant d'enfin utiliser les touches multimédia de son clavier. Pour celà, il m'a fallu faire quelques recherches et trouver comment Xorg pouvait être customiser pour gérer ces touches.
  • Voir si les touches multimédia sont reconnues par Xorg
    • Sous X, lancer la commande xev
    • Pendant l'éxécution de la commande, appuyez sur les touches multimédia que vous voulez gérer
    • Exemple :
      KeyPress event, serial 32, synthetic NO, window 0x1a00001, root 0x139, subw 0x0, time 17734420, (-208,516), root:(817,517), state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 32, synthetic NO, window 0x1a00001, root 0x139, subw 0x0, time 17734587, (-208,516), root:(817,517), state 0x0, keycode 176 (keysym 0x0, NoSymbol), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
      On peut voir ici le résultat de la commande xev après que la touche multimédia "augmenter le son" ait été appuyée. Notez le keycode de la touche (ici 176)
  • Paramétrer son fichier ~/.Xmodmap en conséquence En conservant l'exemple précédent, on peut voir que la touche "augmenter le son" possède le keycode 176. Pour pouvoir l'activer sous Xorg, il nous faut maintenant éditer le fichier :
    nano ~/.Xmodmap
    et d'y insérer la ligne suivante :
    keycode 176 = XF86AudioRaiseVolume
    Xmodmap, permet de mapper le keycode avec un symbole, ici, on mappe le keycode 176 à la touche XF86AudioRaiseVolume. On aurait très bien pu associer la touche "augmenter le son" à la touche 'a' (qui est sans aucun intérêt dans notre cas, sauf si on veut qu'à chaque appuie sur la touche 'a', le son augmente...):
    keycode 176 = a
    La liste des symboles (keysyms) sont disponible, pour Xorg, dans le fichier :
    /usr/include/xorg/atKeynames.h
La dernière étape consiste à charger le fichier ~/.Xmodmap avant le chargement du window manager. Pour ce faire, il suffit d'éditer le fichier ~/.xinitrc et d'y ajouter la ligne :
exec xmodmap ~/.Xmodmap &
À partir de maintenant, n'importe quel window manager sera capable de gérer ces touches. Exemple avec fvwm :
Key XF86AudioRaiseVolume A N Exec exec amixer -q set Master 1+ unmute

Niger 2005

Pendant la famine qui a eu lieu durant l'été 2005, je suis parti, avec l'ONG TSF, en mission humanitaire au Niger. Durant ce voyage, j'ai eu pour mission d'installer un centre de télécommunication dans la ville de Dakoro où était concentré une grande partie des organisation gouvernementales (ou non) qui se sont déplacer pour venir en aide à la population sinistrée. Ce centre était composé d'un modem à réception satéllite sur lequel était branché différents ordinateur portable. Détail de la mission. Le deuxième but de ma mission était de fournir à la population des minutes de communication téléphonique leur permettant d'avertir leurs proches de la situation dans laquelle ils se trouvaient. C'est là la partie la plus interessante et la plus enrichissante de ma mission. Le fait de partir à la rencontre de la population locale, voir comment y vivent les habitants, leur culture et leur mode de vie, vous fait réfléchir sur votre propre situation et vous révèlle certains points importants de la vie. Voici quelques photos de mon périple: Le désert, apparitions improbable...
Mise à jour du 03/12/2007 : L'aventure a continué...

Pakistan 2005

Pendant le tremblement de terre qui a eu lieu au mois de Novembre 2005, je suis parti, avec l'ONG TSF, en mission humanitaire au Pakistan. Cette mission est la deuxième pendant l'année 2005 au sein de TSF. À l'instar de ma mission nigérienne, celle-ci consistait à fournir les services d'un "cybercafé pour ONG et agence de l'ONU". Les détails de la mission D'un point de vu personnel, cette mission a été complètement différente de la première, en effet, lorsque nous sommes arrivés sur le site de Muzzaffarabad l'ensemble des structures était complètement détruites, ce qui nous a obligé à vivre pendant une semaine sous la tente, sans eau courante disponible (hé oui on se lave avec très peu d'eau, à l'eau en bouteille). Malgré tout, le temps que la vie reprenne son cours dans la cité, nous avons pu reprendre apparence humaine asser vite... Voici quelques photos des différents déplacements sur le terrain pour offrir des minutes de communication à la population sinistrée : population très accueillante (malgré les conditions difficiles), routes complètement détruites, des bus bondés et un super voyage en hélicoptère.