Posts in Informatique

Howto génération de bugs - épisode 3

Nov 13, 2007 in cpp, bug, programmation | Informatique

Petit exemple de code qui ne fait pas ce pourquoi il a été écrit

[cpp]
void MoveCharacter(Character& character, bool slowly)
{
   ...
   // Check we can move (to go not too fast)
   while (character.CanStillMoveRL(walking_pause) && ComputeHeightMovement (character, height, true));
   {
       // Move !
       Game::GetInstance()->character_already_chosen = true;
       // Eventually moves the character
       character.SetXY( Point2i(character.GetX() +character.GetDirection(),
                                character.GetY() +height) );
       // If no collision, let gravity do its job
       character.UpdatePosition();
   }
   ...
}

Le bug se situe ici dans le ; à la fin du while. La suite est alors considérée comme un bloc indépendant qui sera exécuté 1 seul fois et systématiquement à chaque fois que la fonction MoveCharacter() est appelée, ignorant complètement le résultat du test du while

PS: ce code a été écrit et modifié pour http://www.wormux.org Wormux. Je me suis bien pris la tête à chercher cette erreur bête (dont je suis l’auteur)!

Conversion Html vers Postscript (ps) : Mozilla2ps

Sep 25, 2007 in internet | Informatique

De nombreux outils existent permettant la conversion de html vers postscript (ps) ou pdf. La plupart d’entre eux n’ont pas évolué aussi vite que le design des pages web et ne supportent pas ou mal les css, l’utf8, les images, etc. Il en est ainsi pour html2ps disponible sous Debian ou Ubuntu.

Une idée pour avoir un très bon export de la page html vers le postscript est d’utiliser la fonction d’impression du navigateur (Firefox, Konqueror). Malheureusement, c’est impossible à scripter pour Firefox, peut-être possible pour Konqueror mais difficile :(

J’ai trouvé 2 solutions :

  • gnome-web-print qui fait parti du paquet gnome-web-photo. Le problème, c’est qu’il ajoute des en-têtes et pied de page (heure, url de la page, etc.)
  • mozilla2ps, une application XUL. C’est la solution que je conseille !! :)

SVN - Suivi de branche avec svnmerge (Mini Howto-FR)

Aug 31, 2007 in svn | Informatique

svnmerge != svn merge

svn merge est une commande intégrée à SVN

svnmerge est un petit outil pratique (script python) pour faciliter la gestion de branches avec SVN.

Que fait svnmerge :

  • garde la trace des révisions déjà fusionnées
  • permet de choisir les révisions à fusionner
  • permet de bloquer des révisions (pour ne jamais les fusionner)
  • autorise le retour arrière sur révision
  • crée des messages clairs pour les commits

What is "watch" ?

Aug 29, 2007 in shell, unix | Informatique

watch est un simple commande shell qui permet d’exécuter périodiquement une commande et d’afficher son résultat sur le terminal.

Par exemple, watch -n 5 df -h exécute la commande df -h toute les 5 secondes. Utile pour avoir un affichage qui se rafraichit, comme avec la commande top, alors que la commande initiale ne le prévoit pas. Plus d’infos : man watch ;)

La commande split

Jul 31, 2007 in shell, unix | Informatique

Pour découper un fichier, il existe une commande : split. Ma copine s’en est servi aujourd’hui même pour m’envoyer un fichier trop gros par mail.

Exemple bidon : découpage d’un fichier iso d’environ 700 Mo dans le but de le transporter sur 3 clés USB de 256 Mo.

split -b256m ubuntu-7.04-desktop-i386.iso ubuntu-7.04-desktop-i386.iso.frag- Au final, on obtient dans le répertoire,

-rw-rw-r-- 1 matt matt 698M 2007-04-15 15:52 ubuntu-7.04-desktop-i386.iso
-rw-rr 1 matt matt 256M 2007-07-31 20:51 ubuntu-7.04-desktop-i386.iso.frag-aa
-rw-rr 1 matt matt 256M 2007-07-31 20:52 ubuntu-7.04-desktop-i386.iso.frag-ab
-rw-rr 1 matt matt 186M 2007-07-31 20:52 ubuntu-7.04-desktop-i386.iso.frag-ac

Pour reconstruire le fichier,

cat ubuntu-*-aa ubuntu-*-ab ubuntu-*-ac > ubuntu-7.04-desktop-i386-copie.iso

Et voilà :-)