Blog Haypo

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

jeudi 25 février 2010

Partager une imprimante avec CUPS

Je partage mon imprimante USB entre deux ou trois ordinateurs (selon mon humeur). Chaque fois que je dois (re)configurer le serveur qui la partage ou un poste client, je m'arrache les cheveux. Pourtant, c'est simple, mais j'oublie toujours une étape importante. Voici donc une petite liste récapitulative, sûrement incomplète et imprécise, pour partager une imprimante sous Linux.

Serveur

Installation l'imprimante

Pour l'installation, l'interface web de CUPS (http://localhost:631) est bien foutue et inclut même de la documentation ! Sinon il existe des assistants graphiques qui fonctionnent pas trop mal. Bref, rien de spécial à dire pour cette étape.

Partager l'imprimante

Il faut bien marquer l'imprimante comme étant partagée. Par exemple avec l'outil Ubuntu (ou Gnome ? system-config-printer.py), il faut faire un clic droit sur l'imprimante et s'assurer que « [x] Partagée » soit coché.

Partager le serveur d'impression

Il faut que le serveur CUPS soit accessible sur le réseau local. Pour cela, il faut « Publier les imprimantes partagées connectées à ce système ».

Après il se peut qu'il y ait des soucis de permissions. Mais alors là, bonne chance :-)

Poste client

cups-bsd

Sous Debian, s'assurer que c'est le paquet cups-bsd (et non lpr) qui est utilisé. lpr pose des problèmes, notamment avec Kpdf.

/etc/cups/client.conf

Il n'y a pas besoin de serveur CUPS (enfin, j'ai jamais trop su... mais je crois pas). Il suffit d'une seule ligne dans le fichier /etc/cups/client.conf :

ServerName lisa

où lisa est le nom du serveur.

Test en ligne de commande

Le programme lpq permet de voir la liste des tâches d'impression :

$ lpq
HP_LaserJet_P2015_Series est prêt
aucune entrée

Ça marche !

Configurer KDE

Avec KDE 3.x, assurez-vous d'utiliser le « pilote » CUPS et non pas LPD :

  • Allez dans le menu : K > Configuration > Périphériques > Imprimante
  • Système d'impression : choisissez CUPS

Utilisez du laser !

Mon imprimante est une HP LaserJet 2015 noir & blanc branchée sur USB. Elle m'a coûté cher (environ 300€ je crois), mais depuis que je l'ai (2 ans je crois ?) je n'ai jamais changé le toner. Elle est très rapide : la première page sort en 10 secondes maxi et les suivantes se suivent directement sans interruption. En plus, le papier est chaud et j'aime bien l'odeur. Par contre, parfois elle clignote quand elle est ronchon :-) Je lui tripote les boutons et ça la calme. Ah oui, elle s'installe sans aucun problème sous Linux.

Si comme moi vous n'imprimez que du texte sans schéma (article de recherche, facture, recette de cuisine, etc.) : je vous conseille d'investir dans du laser noir et blanc plutôt qu'une imprimante jet d'encre droguée qui réclame sans arrêt ses doses à 30€ (quand c'est pas 50€ ou plus !). Je pense que les constructeurs vendent à perte, mais se rattrapent très vite sur les consommables. Et si possible, ils mettent des verrous matériels ou logiciels pour empêcher que vous achetiez des cartouches concurrentes ou que vous rechargiez vos cartouches à la main (avec une seringue, opération rigolote).

mercredi 24 février 2010

Outils Xorg en ligne de commande

Xorg est fourni avec une large palette d'outils en ligne de commandes bien pratique pour dépanner un serveur Xorg malade. Voici une courte liste des commandes que j'ai déjà utilisées. Initialement, j'ai écrit ce billet juste pour me souvenir de xdpyinfo :-)

Clavier

Configuration la répétition du clavier :

 xset r rate 500 30

Changer la disposition du clavier. Passer en QWERTY :

setxkbmap us

Changer la disposition du clavier. Passer en AZERTY (français) avec la variante latin9 :

setxkbmap fr -variant latin9

Définir les touches Propriété Windows et Menu Windows droit comme touches de composition :

setxkbmap -option compose:menu,compose:rwin

Écran

Afficher les écrans connectés, les résolutions disponibles et la résolution courante :

xrandr

Utiliser l'écran externe ("VGA") plutôt que l'écran interne ("LVDS") d'un ordinateur portable :

xrandr --output VGA --auto --output LVDS --off

Lire la taille en millimètres et la résolution en points par pouce (PPP, ou DPI en anglais). Chercher « screen #0: » dans la sortie de la commande :

xdpyinfo

Exemple :

...
screen #0:
  dimensions:    1280x1024 pixels (294x235 millimeters)
  resolution:    111x111 dots per inch

Désactiver l'économiseur d'écran :

xset s off

Divers

Application affichant les événements claviers et soucis. Peut par exemple server à trouver le code d'une touche (keycode). Voir mon article sur la touche compose de mon article Touche compose) qui en parle.

xev

Générer un fichier de configuration Xorg dans le dossier courant (créer un fichier « xorg.conf.new ») :

Xorg -configure

Si Xorg est déjà en foncitonnement, utiliser le second display :

Xorg :1 -configure

Autoriser l'utilisateur toto à se connecter à votre serveur X :

xhost +toto

Puis xhost -toto pour retirer la permission. Désactiver les bips du buzzer :

xset -b

dimanche 27 décembre 2009

Cette grosse plaie de PulseAudio

PulseAudio est un serveur sonore visant à simplifier la lecture de son sur le bureau. Il remplace le vieux Esound (ESD). Il permet d'envoyer le son sur les hauts parleurs d'un autre ordinateur, d'utiliser plusieurs cartes son, prend en charge les oreilettes bluetooth, gère la consommation d'énergie, etc. Sur le papier, ça semble super : relire Why you should care about PulseAudio (and how to start doing it) pour s'en convaincre. Par contre, en pratique c'est une grosse plaie : PulseAudio rajoute une couche entre les applications et ALSA qui consomme du temps processeur, de la mémoire, et (dans mon cas) dégrade la qualité du son (rajoute des petits pics sonores).

Problèmes liés à PulseAudio sur un Eee PC (Fedora 11)

En particulier, sur mon Eee PC (1101 HA) équipé de Fedora 11 : mplayer est incapable de lire une vidéo (le film Sympathy for Lady Vengeance) bien que mon processeur graphique (la célèbre puce Poulsbo) accélère grandement le décodage de l'image. Dans les logs noyaux (/var/log/messages), j'ai pu voir que PulseAudio tente de rattraper la situation :

Nov 15 23:07:57 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 1,00 ms
Nov 15 23:16:27 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 2,00 ms
Nov 15 23:16:50 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 4,00 ms
Nov 15 23:20:43 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 8,00 ms
Nov 15 23:20:48 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 16,00 ms
Nov 15 23:21:19 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 26,00 ms
Nov 15 23:22:03 maggie pulseaudio[6894]: alsa-sink.c: Increasing wakeup watermark to 15,99 ms
Nov 15 23:37:22 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 36,00 ms
Nov 15 23:37:37 maggie pulseaudio[6894]: alsa-sink.c: Increasing wakeup watermark to 25,99 ms
Nov 15 23:43:03 maggie pulseaudio[6894]: alsa-sink.c: Increasing minimal latency to 46,00 ms

Toutes à 5 à 10 minutes, le son finit par sauter et mplayer se fige. J'ai trouvé un contournement : revenir un peu en arrière puis aller un peu en avant (touches gauche puis droite).

Solution : passer directement par ALSA

Après trois coupures dans mon film (c'est-à-dire après un quart d'heure), j'ai fini par me décider à le couper et à chercher à résoudre ce problème énervant. J'ai vu que Mplayer utilisait PulseAudio. J'ai alors essayé l'option « -ao alsa » (-ao : Audio Output), mais mplayer utilisait quand même PulseAudio. Bizarre.

En regardant la configuration ALSA, j'ai vu dans le fichier /etc/alsa/pulse-default.conf :

# Let's make it the default!
pcm.!default {
    type pulse
    ...
}

Donc PulseAudio est configuré pour être le pilote par défaut. J'ai supprimé ce fichier et j'ai redémarré la machine (vu que PulseAudio a trituré ALSA, j'ai préféré tout réinitialiser).

Après le redémarrage, j'ai relancé mon film et j'ai pu le voir jusqu'au bout sans la moindre coupure !

Utilisation du processeur

  • mplayer -ao pulse : le processus pulseaudio utilise 20% du CPU, et au total 20 à 25% du CPU est utilisé
  • mplayer -ao alsa : le processus pulseaudio n'est plus solicité (et n'est donc plus visible dans top), et au total 5 à 10% du CPU est utilisé

Réglage du volume

Avec PulseAudio, alsamixer (et autres mixeurs de sons) n'affiche qu'une seule sortie. Il faut utiliser « alsamixer -c 0 » pour que je puisse avoir accès à toutes les sorties. En particulier, ça me permet de régler le volume du casque, chose nécessaire car le volume est insuffisant.

Problèmes liés à PulseAudio qu'ont d'autres utilisateurs

Lors de la migration à PulseAudio, pas mal d'applications ne fonctionnaient plus (le son en tout cas). Flash et Skype supportent aujourd'hui PulseAudio (Flash 10+ et Skype 2.1+), par contre Audacity ne le supporte toujours pas. Les jeux utilisant la bibliothèque SDL (ex: l'excellent xmoto) ont également des problèmes. Correction : SDL 1.2.12 a un pilote natif pour PulseAudio.

Complaintes :

Le démon PulseAudio a besoin de tourner en priorité temps réel (SCHED_FIFO). Or il faut être root pour cela. Une faille de sécurité dans PulseAudio a déjà servi pour exploiter des failles du noyau Linux (2.6.30, 2.6.31, 2.6.32), notamment via la boîte à outils de Brad Spengler.

Conclusion

Sympathy for Lady Vengeance est un excellent film ! Il fait parti de trilogie sur la vengeance du sud-coréen Park Chan-wook. La fin est bien gore, j'adore :-)

Pour PulseAudio, c'est plutôt mauvais signe étant donné qu'il est activé par défaut sur Ubuntu, Fedora et Mandriva. Bien que j'ai du mal à voir l'intérêt de PulseAudio, il doit bien en avoir un pour que les distributions bureaux majeures l'activent par défaut. Par contre, il serait bon de donner le choix de désactiver complètement PulseAudio le temps que le code soit stabilisé.

jeudi 3 décembre 2009

Installer Fedora 11 et 12 depuis une clé USB

Ce bref article explique le minimum pour installer Fedora 12 sur un Eee PC blanc à partir d'une clé USB (vu qu'un Eee PC blanc ne dispose pas de lecteur de CD-Rom). Mais vu les galères que j'ai eu avec Fedora 12 et Poulsbo, j'ai fini par installer Fedora 11. Cet article explique donc aussi une procédure pour installer Fedora 11 à partir d'une clé USB. Les deux installations se basent sur la méthode « Netinstall » qui utilise un petit média pour le boot, puis télécharge les paquets depuis Internet.

Prérequis

  1. Un Eee PC blanc modèle 1101HA, chipset Poulsbo, sinon ça marche pas (mais non je déconne !)
  2. Une clé USB d'au moins 200 Mo que vous pouvez formatter (perdre toutes les données écrites sur la clé)
    • N'importe quel média de stockage USB devrait faire l'affaire. Évitez tout de même de formatter la partition FAT de votre appareil photo numérique : une clé USB 4 Go coûte 8€ en supermarché (voir moins) !
  3. Choisir un miroir Fedora près de chez vous
    • ATTENTION : si vous choisissez un miroir FTP, assurez-vous qu'il supporte le téléchargement partiel (commande FTP "REST") : Fedora 12 l'exige (j'ai ouvert un rapport de bug pour Fedora 12 Beta, mais il n'a pas pu être corrigé avant la version 12 finale)
  4. Une bonne heure devant vous

Création puis boot de la clé USB

  1. Télécharger Fedora-12-Beta-i386-netinst.iso depuis votre miroir ou depuis le site principal
  2. Taper la commande dd if=Fedora-12-Beta-i386-netinst.iso of=/dev/sdX où sdX est le périphérique de votre clé USB. Vérifiez trois fois que sdX est bien votre clé USB, avec fdisk ou cfdisk par exemple, sous peine de perdre tous les données de votre disque dur !
  3. Au démarrage de l'Eee PC blanc, taper la touche Echappe sans arrêt pour afficher le menu de sélection du média sur lequel booter (disque dur, clé USB, ...) : choisir USB:
  4. Le menu de boot Fedora s'affiche : choisir Install or upgrade

Installation Fedora

  1. Choix de la langue : French
  2. Choix du clavier : fr-latin9
  3. Choix du média d'installation : ne pas choisir /dev/sdXY, faire précédent (sûrement une blague des développeurs de Fedora pour empêcher les débutants d'installer Fedora), puis :
    1. Choisir la méthode "URL"
    2. Interface réseau : prendre eth0 (carte ethernet)
    3. [x] Activer le support IPv4 (*) Dynamic IP configuration (DHCP)
    4. Pour l'URL, chercher dans votre miroir Fedora le chemin vers le dossier "os" de l'architecture et de la version de votre choix : (...)/releases/test/12-Beta/Fedora/i386/os/. Exemple avec le miroir Free :
ftp://ftp.free.fr/mirrors/fedora.redhat.com/fedora/linux/releases/test/12-Beta/Fedora/i386/os/
  1. À partir de là, c'est l'installeur Fedora classique qui est bien foutu et explique bien ce qu'il y a à faire. Si vous êtes perdus, consultez la documentation Fedora (en anglais pour le moment)

Note : le miroir Free ne gère que FTP et ne supporte pas le téléchargement partiel. Il n'est donc pas utilisable pour installer Fedora !

Échecs successifs

Comme j'ai pas de bol, j'ai du m'y reprendre à dix fois (au moins) pour arriver à installer Fedora 12...

  • Je n'arrivais pas à booter sur la clé USB : j'ai mis du temps à deviner qu'il fallait utiliser la touche Echappe au boot. J'avais tenté de changer la configuration du BIOS : j'ai mis le média "Removable device" en premier, mais ça ne fonctionne pas pour l'USB !?
  • J'ai tenté de lire le contenu de l'image ISO, en extraire install.img, et écrire install.img sur la clé USB (dd if=install.img of=/dev/sdX)... Mais ça ne fonctionne pas, ce n'est pas la bonne méthode. Conseil : ne pas lire de vieux billets de blogs.
  • À l'installation, j'ai choisi le média /dev/sda1 comme source d'installion. Or pour une Netinstall, il faut faire précédent et choisir "URL"... La vieille feinte de l'ours !
  • J'ai pris le miroir Free, or le serveur FTP de Free ne supporte pas l'extension "téléchargement partiel" (commande FTP "REST"). Du coup, l'installeur graphique a échoué lors qu'il a téléchargé le 1er paquet RPM...

Créer une clé USB bootable pour installer Fedora 11

Créer une clé USB bootable pour Fedora 11 n'est pas possible depuis Debian (pas facilement). Il vaut mieux avoir une Fedora sous la main pour créer la clé USB.

  1. Télécharger Fedora-11-i386-netinst.iso
  2. Sous Fedora, installer les paquets livecd-tools et syslinux (sudo yum install livecd-tools syslinux)
  3. Créer une partition ext3 (/dev/sdXY) de 300 Mo sur la clé USB (ex: avec gparted)
  4. Marquer la partition /dev/sdXY bootable. Exemple avec parted :
$ sudo parted /dev/sdX
(parted) toggle Y boot
(parted) quit
  1. Enfin, taper la commande : sudo livecd-iso-to-disk Fedora-11-i386-netinst.iso /dev/sdXY

Note : Remplacez X et Y par le nom et le numéro de partition de votre choix.

--

Lire aussi Installer Ubuntu Ibex depuis un disque dur USB externe.

mercredi 2 septembre 2009

Réparer un dépôt git après l'échec de git svn dcommit

git-svn est bien pratique pour travailler en local (déconnecté) sur un dépôt Subversion. Le plus gros défaut de cet outil est que lorsque la commande "git svn dcommit" échoue, il laisse le dépôt dans un état assez chaotique. Heureusement l'outil git est conservateur : il est toujours possible de revenir en arrière, sauf que l'opération est très technique et délicate.

Récupérer le numéro de commit

La première étape est de retrouver le numéro du commit qui a échoué en ouvrant le fichier .git/logs/HEAD (j'ai mis des "..." pour votre santé mentale, les logs sont assez illisibles sinon) :

...
eb85fa... e72f83... Victor <haypo@bart> 1251220925 +0000 rebase: access: move calls to network/status from frontend to backend
e72f83... 5112b1... Victor <haypo@bart> 1251220965 +0000 refs/remotes/git-svn: updating HEAD
5112b1... 0f86ea... Victor <haypo@bart> 1251220979 +0000 refs/remotes/git-svn: updating HEAD

Le format du fichier est « uid avant | uid après | nom | timestamp | message ». Disons que c'est la dernière opération (la dernière ligne) qui a merdé. Il faut donc revenir à la version précédente (avant dernière ligne) :

e72f83... 5112b1... (...) 1251220965 (...): updating HEAD

Il faut l'ancien numéro de commit (première colonne donc) : e72f83....

Récupérer ses commits

La commande pour revenir à la version précédente (avant le chao laissé par git svn dcommit) est :

git reset --hard e72f83...

Tada ! Pour comprendre ce qui s'est passé, on peut jetter un oeil à .git/logs/HEAD :

...
eb85fa... e72f83... Victor <haypo@bart> 1251220925 +0000 rebase: access: move calls to network/status from frontend to backend
e72f83... 5112b1... Victor <haypo@bart> 1251220965 +0000 refs/remotes/git-svn: updating HEAD
5112b1... 0f86ea... Victor <haypo@bart> 1251220979 +0000 refs/remotes/git-svn: updating HEAD
0f86ea... e72f83... Victor <haypo@bart> 1251221469 +0200 e73f83...: updating HEAD

Articles similaires

Autres articles (en anglais) qui décrivent cette « astuce » :

apt-get install ...

Voici une liste mise à jour des paquets que j'installe sur une Debian vierge. Lire aussi ma liste de l'année dernière. Cette liste vise à obtenir une machine de développement sous KDE4 avant quelques outils réseaux et multimédias.

Administration du système

  • sudo : passer temporaire root pour exécuter une commande
  • screen : terminal qu'on peut détacher / rattacher pour pouvoir conserver des programmes quand on ferme le terminal (typiquement le client IRC irssi)

Environnement de bureau KDE

  • KDE minimal :
    • kde-minimal
    • kde-standard
    • kde-l10n-fr : Traduction française
  • Courrier et RSS :
    • kaddressbook : Carnet d'adresse
    • akregator : chouette client RSS
    • kmail : mon client mail favori
  • kdeplasma-addons : Plasmoïdes KDE4
  • Groupes d'applications KDE :
    • kdegraphics : Appliactions graphiques
    • kdegames : Jeux
    • kdemultimedia : Applications multimédia
    • kdetoys : Gadgets
    • kdenetwork : Outils réseaux
    • kdeutils : Utilitaires
    • kdeedu : Applications éducatives
    • kdeadmin : Outils d'administration
    • kdeartwork : thèmes et styles

Applications graphiques

  • iceweasel iceweasel-l10n-fr : Firefox et sa traduction française
  • flashplugin-nonfree : Plugin officiel Flash

Développement

  • Compilation :
    • gcc : Compilateur C
    • autoconf automake libtool : autotools
    • make
    • cmake
  • Édition de code :
    • exuberant-ctags : ctags, indexeur de code source permettant de retrouver un symbole (variable / fonction) dans un projet
    • manpages-dev manpages-fr : Pages de manuel
    • vim-gtk : Éditeur vim dans sa version Gtk
  • Gestionnaire de source :
    • git-core
    • git-svn
    • mercurial
    • subversion
  • Débogage :
    • gdb : Débogueur C / C++
    • strace : Tracer les appels systèmes
    • ltrace : Tracer les appels aux bibliothèques
    • lsof : Lister les fichiers ouverts
  • valgrind : Recherche les fuites mémoires et accès invalides à la mémoire
  • diffstat : Statistiques sur un patch (différences)
  • Analyseur statique/dynamique de code Python :
    • pychecker
    • pyflakes
    • pylint

Multimédia

  • gimp : Manipulation de photo
  • gqview : Affichage rapide de photos
  • mplayer : Lecteur audio/vidéo
  • vlc : Lecteur audio/vidéo

Réseau

  • nmap : Scanneur de ports
  • tcpdump : Sniffeur réseau (dumpe le trafic)
  • wireshark : Parseur de paquets et sniffeur réseau
  • netcat netcat6 : client et serveur TCP et UDP générique permettant de s'envoyer du texte ou des fichiers

SSH

  • openssh-server : Serveur SSH
  • sshfs : Monter un dossier distant via SSH (utilise FUSE)
  • keychain : Mémoriser la passphrase SSH (Gnome ne semble pas avoir besoin de keychain, il intègre son propre outil)
  • ssh-askpass : Saisie de la passphrase SSH

Compilation de paquets Debian

  • dpkg-dev : outils de base pour compiler un paquet
  • fakeroot : Permet de compiler un paquet sans être root

La commande "apt-get build-dep paquet" permet d'installer toutes les dépendences pour compiler le paquet spécifié.

mercredi 5 août 2009

Migration vers Bitbucket, fin de l'hébergement à la maison (ADSL)

Hébergement à la maison

Fier de ma connexion ADSL Free à Strasbourg (1 à 2 Mo/sec en download, 80 à 100 Ko/sec en upload), j'ai hébergé durant 3 ans mes projets personnels à la maison. L'administration du serveur qui héberge Subversion, Apache et Trac était un peu laborieuse (pour moi) et surtout chronophage. L'administration consiste à créer manuellement une nouvelle instance de Trac, un nouveau dépôt Subversion, et la configuration Apache qui va bien, pour chaque nouveau projet. Mais également à surveiller un peu les logs Apache pour détecter des problèmes et les tentatives de compromission. Il n'y en a eu aucune compromission du serveur bien que je n'ai mis aucune protection en place. Soit les bots automatiques sont idiots, soit les logiciels libres sont sûrs par défaut :-)

Migration sur mon nouveau serveur

J'ai mis 6 mois à me décider à migrer les services de l'ancien serveur au nouveau (pourtant très largement plus rapide) tant je savais que la migration allait être longue. Après la migration, j'ai eu des soucis avec les « VirtualHost » Apache. Virtual Host est la fonction qui permet d'héberger plusieurs sites Internet sous des noms de domaines différents mais sur la même adresse IPv4 (et IPv6). Quand on surfait sur un des sites fusil.hachoir.org, hachoir.org, python-ptrace.hachoir.org ou haypo.hachoir.org : on se retrouvait aléatoirement sur l'un ou l'autre des sites. Je ne sais pas si le problème venait de ma configuration Apache, de Python, de Trac ou encore de WSGI.

Migration du projet Hasard

J'ai d'abord migré mon projet Hasard sur le site Bitbucket. Je suis très content de leurs services (gratuit et sans pub, mais le dépôt Mercurial est limité à 150 Mo) :

  • Code source stocké dans un dépôt Mercurial. Comme Mercurial réalise les commits en local, je ne suis pas dépendant de ma connectivité à Internet pour faire des commits (ex: dans le train). Et les commits instantanés m'incitent à faire plus de petits commits, donc plus faciles à relire.
  • Wiki éditable en ligne et via Mercurial (dépôt Mercurial séparé)
  • Gestion des tickets similaire à Trac
  • Dépôts Mercurial accessibles en HTTP, HTTPS et SSH

Migration des tous mes projets

Finalement, j'ai profité de mon déménagement pour migrer tous mes projets personnels sur Bitbucket. Nouvelles adresses de mes projets :

Je suis plutôt content que la disponibilité de mes projets personnels ne dépendent plus de l'état de mon réseau électrique (de la météo) ou de l'état de ma connexion à Internet.

vendredi 13 février 2009

FOSDEM, Fusil, bières, python-ptrace et conférences

Triple Carmelite Le week-end dernier se tenait à Bruxelles l'édition 2009 de FOSDEM, LA rencontre européenne des développeurs de logiciel libre. J'y ai présenté Fusil le fuzzer qui a été inclus dans le Main track. La vidéo de la conférence devrait être bientôt disponible. En attendant, j'ai mis le diaporama en ligne : fosdem_2009.pdf (je me suis remis à Beamer !).

Pour l'occasion, j'ai publié Fusil 1.2 avant l'événement (suivi rapidement par Fusil 1.2.1), et python-ptrace 0.6 aujourd'hui. La nouvelle version de Fusil arrive avec une meilleure documentation, en particulier avec un guide d'utilisation et un index des documentations, de nombreuses corrections de bugs, des améliorations des agents réseaux, etc. Du côté de python-ptrace, strace.py peut maintenant afficher le pointeur d'instruction, Mark Seaborn a écrit une extension (itrace.py) à strace.py (pour déboguer la libc dans le bac à sable de Google Chrome), PtraceSignal donne des informations plus précises, etc..

À FOSDEM, j'ai essentiellement bu des bières et travaillé sur ma présentation (je déconne ! elle était prête depuis des semaines !). Je vous conseille d'ailleurs la Triple Carmélite (que m'a conseillée Jean) et la Rochefort niveau 8 (découverte par hasard, la 10 est trop forte).

Rochefort

Niveau conférences, j'ai retenu les présentations :

  • LLVM et Gallium3D par Stéphane Marchesin : utilisation du compilateur LLVM dans les pilotes 3D d'Xorg pour optimiser les shaders (micro-programmes utilisés dans les GPU de nos cartes graphiques)
  • Nemiver par Dodji Seketeli : jolie interface graphique à GDB en Gtk+ avec une vue du code orientée debug (ex: survoler une variable affiche sa valeur) qui semble très fonctionnelle
  • L'introduction à XMPP (Jabber) par Remko Tronçon et Peter Saint-Andre était jolie, fluide et bien préparée. Par contre, je n'ai pas appris grand chose. Ça confirme juste que Jabber est vraiment bien conçu (Peter est l'un des auteurs des spécifications XMPP) et très largement extensible.

Le « petit » monde du logiciel libre est de plus en plus actif. La fréquentation et la taille de FOSDEM ne cesse d'augmenter. D'ailleurs, Debian Lenny devrait sortir ce week-end, en même temps que Python 2.6.2 et 3.0.1.

lundi 19 janvier 2009

Installer Ubuntu Ibex depuis un disque dur USB externe

Remplacer Debian Sid par Ubuntu Ibex

Il y a 3 mois, j'installais Debian Sid sur mon PC portable à partir d'une clé USB. Je suis assez déçu de Debian Sid car les touches « multimédias » (monter/baisser le son) du clavier ne sont pas détectées, la sortie vidéo (écran externe ou vidéo projecteur) ne fonctionne plus, et KDE est moins joli. D'une manière générale : Debian exige beaucoup de temps pour être configuré. Il y a quelques années, ça m'amusait de bidouiller. Aujourd'hui, je veux juste un système d'exploitation « qui marche ».

Préparer une partition sur le disque externe

Mon lecteur de CD-Rom étant toujours hors-service, j'ai choisi mon disque dur USB externe (500 Go) comme support d'installation. J'ai crée une nouvelle partition (j'avais de l'espace libre non partitionné) ext3 et j'y ai placé les fichiers :

  • /boot/vmlinuz : noyau Ubuntu (téléchargé depuis archive.ubuntu.com/.../hd-media/ étant donné que la version dans l'ISO est destinée booter depuis un CD-Rom)
  • /boot/initrd.gz : configuration du noyau en mode « hd-media » et pilotes (également téléchargé depuis archive.ubuntu.com)
  • /boot/grub/(...) : copie du contenu de /boot/grub/* (Debian)
  • /ubuntu-8.10-alternate-i386.iso : ISO d'Ubuntu Ibex avec l'installeur en mode texte (alternate) pour processeur i386
  • /preseed/ubuntu.preseed : Sélection de paquets à installer (fichier extrait de l'ISO)

Je pense qu'on peut utiliser une partition ext3 existante (ou autre système de fichier reconnu par GRUB).

Configuration de Grub

J'ai choisi Grub pour booter le disque car il permet de modifier la configuration au chargement, et possède un terminal texte avec accès au disque dur. La configuration (boot/grub/menu.lst) minimale est :

title Install Ubuntu
root (hd0,7)
kernel /boot/vmlinuz file=/hd-media/preseed/ubuntu.seed
initrd /boot/initrd.gz

Sous Debian, mon disque externe est reconnu comme /dev/sdb8. Comme Grub compte à partir de zéro (hd0,0), il faut soustraire un au numéro de partition : (hd0,7). Je pensais que c'était (hd1,7), mais comme je boote depuis ce disque, Grub le reconnaît comme hd0 et non hd1, soit.

Pour installer Grub, j'ai lancé grub --config-file=/mnt/install/boot/grub/menu.lst et dans le terminal Grub j'ai tapé setup (hd1).

Lancement de l'installation

Je redémarre ma machine en demandant au BIOS de booter sur ce disque. Et hop, l'installeur se lance !

Quelques remarques :

  • Linux est incroyable, on peut vraiment l'installer de plein de manières différentes et ça marche !
  • Ubuntu ne met pas à jour ses ISO avec des mises à jour. Du coup, quand l'installation est terminée il faut installer 219 mises à jour (!), c'est dommage.
  • J'ai choisi Gnome plutôt que KDE pour changer. Comme ma seconde machine est sous Kubuntu, je vais pouvoir jongler entre Gnome et KDE ;-)

Pour en savoir plus

J'ai fait beaucoup de raccourcis dans cet article pour aller à l'essentiel. Pour les détails, lisez l'article How to install from CF media/USB drive using the grub bootloader sur le wiki d'aide officiel d'Ubuntu.

L'installation d'un nouveau système d'exploitation est dangereuse : vous risquez de perdre des données à la moindre fausse manipulation ! Ne le faites pas si vous ne comprenez pas ce que vous faites. Ou alors faites vous aider !

Un gros merci à phh sur IRC qui m'a bien aidé pour cette installation ;-)

samedi 11 octobre 2008

Retour aux sources : installation de Debian Sid

Après avoir pas mal utilisé Ubuntu pendant plusieurs années, j'ai décidé de réinstaller Debian Sid sur mon portable histoire de voir si je sais encore m'en servir.

Installer Debian par clé USB

Une fois que j'ai compris que le lecteur de CD était mort (j'ai cramé 3 CDR pour m'en rendre compte), je me suis essayé à l'installation par clé USB.

  • Il faut une clé USB d'au moins 100 Mo
  • Sauvegardez les données de votre clé USB car toutes les données seront détruites par cette procédure.
  • Télécharger un booteur ISOLINUX (hd-media/boot.img.gz, 16 Mo) et une image ISO d'un installeur Debian (netinst/mini.iso, 59 Mo) depuis la page netinst.
  • Installer le booteur sur la clé USB : « zcat boot.img.gz > /dev/sdb » où /dev/sdb est le périphérique de votre clé USB
  • Un système de fichier ext2 a été crée sur la clé USB. Montez le et copiez-y l'image ISO téléchargée.
  • Démonter la clé et rebooter.
  • Booter sur la clé USB, et voilà.

Installation de paquets

J'ai choisi de n'installer aucun paquet, c'est-à-dire avoir l'installation la plus minimaliste possible histoire de contrôler ce qui est installé sur ma machine. Les commandes qui suivent permettent d'installer certaines catégories de logiciels.

Fichier /etc/apt/sources.list

deb http://debian.revolsys.fr/debian/ sid main contrib non-free
deb http://www.debian-multimedia.org sid main
  • non-free est nécessaire pour Flash
  • debian-multimedia.org est nécessaire pour mplayer

Le minimum vital

apt-get install less vim

Serveur graphique (Xorg) et KDE

apt-get install kde kdm kde-i18n-fr kde-style-polyester yakuake
  • Je n'ai pas réussi à reproduire le joli thème KDE de Kubuntu, mais le style Polyester est déjà pas mal
  • yakuake est un terminal qui se déplie/se cache à la demande (comme la console Quake pour les connaisseurs)

Pour partager souris et clavier entre mes deux ordinateurs :

apt-get install synergy

Firefox (Iceweasel) et Flash

apt-get install mozilla-noscript iceweasel iceweasel-l10n-fr flashplugin-nonfree
  • Le greffon NoScript est un parefeu Javascript
  • Note : Thunderbird s'appelle Icedove

Son et vidéo

apt-get install alsa-utils mplayer

Certains préféreront vlc, xine ou encore totem.

Gestion des clés SSH

apt-get install ssh-askpass-fullscreen keychain

Diagnostic et bidouilles réseau

apt-get install nmap netcat

Compilation

apt-get install gcc make autoconf automake libtool fakeroot
  • fakeroot est utile pour recompiler un paquet Debian

Écriture de code source

apt-get install manpages-dev manpages-fr subversion exuberant-ctags meld
  • ctags est un indexeur de code source permettant d'aller à la définition d'un symbole (variable, fonction, classe) dans vim avec « CTRL + ] »
  • meld est un excellent outil pour comparer deux fichiers textes ou deux dossiers contenant des fichiers textes (et donc utilisable pour du code source)

Débogage

apt-get install gdb strace ltrace lsof
  • strace trace les appels systèmes
  • ltrace trace les appels de fonctions de bibliothèques externes
  • lsof liste les fichiers ouverts

Analyse de code Python

apt-get install pyflakes pylint pychecker

OpenOffice

apt-get install openoffice.org openoffice.org-l10n-fr ttf-mscorefonts-installer

Utilisez DicOOo pour installer des dictionnaires français plus complets

Wifi

apt-get install network-manager-kde
  • Il semble que je doive exécuter knetworkmanager en tant que root (problème de permission ?)

Firmware pour mon chipset Intel 3945 :

apt-get install firmware-iwlwifi

Cet article concis et fouilli me servira de notes au cas où je réinstalle la machine. J'espère que vous découvrerez de chouettes paquets parmis ceux que j'ai listé. C'est enfin le moment tant attendu pour placer cette URL : Debian Package of the Day.

jeudi 19 juin 2008

Améliorer la ligne de commande

En dehors des raccourcis claviers que j'avais déjà abordé, il existe énormément d'astuces pour améliorer la ligne de commande sous Linux. En voici quelques unes pour gagner encore plus de temps avec la ligne de commande.

Complétion avancée

La touche TAB sert à compléter automatiquement les commandes. C'est diablement efficace, mais bash peut faire mieux ! En chargeant /etc/bash_completion, la complétion dépendra du programme utilisé. « kpdf <tab><tab> » n'affichera que les fichiers PDF (et les répertoires). « apt-get install python-<tab><tab> » affiche les paquets Debian installables dont le nom débute par « python- ». Pour l'activer la complétion avancée, ajoutez dans votre ~/.bashrc :

source /etc/bash_completion

Le chargement de bash sera plus long, mais vous serez beaucoup efficace avec votre ligne de commande !

Ignorer les doublons dans l'historique

Par défaut, bash conserve toutes les commandes tapées. J'ai présenté dans mon billet précédent la variable d'environnement HISTIGNORE pour ignorer certains commandes. Pour ne pas sauver un commande saisie plusieurs fois, utilisez :

export HISTCONTROL=ignoredups

Rappel : CTRL+r permet de rechercher une commande déjà tapée en en saisissant quelques lettres.

Utiliser most plutôt que less pour lire du texte

Pour lire un fichier texte, il existe le programme more qui n'est pas très pratique. Le programme less est mieux : il permet de revenir en arrière, rechercher du texte, etc. Il existe encore mieux ! most utilise des couleurs (meilleur rendu des pages de manuel), permet de découper l'écran en plusieurs vues indépendentes, etc. Lisez l'aide intégrée pour les détails. Installez-le avec « apt-get install most » et choisissez-le par défaut en ajoutant dans votre fichier de configuration ~/.bashrc :

export PAGER=most

Activer les couleurs

Plusieurs programmes permettent d'afficher des couleurs mais ne le font pas par défaut pour des raisons de compatibilité avec les anciens terminaux. Activez les couleurs avec :

alias ls='ls --color=auto'
alias grep='grep --color'
alias egrep='egrep --color'

Tailles de fichier avec des unités humaines

L'option « -h » permet d'afficher les tailles avec des unités plus facilement compréhensibles par un humain (19 Ko, 367 Mo, 1 Go, ...) :

alias du='du -h'
alias df='df -h'

La commande ls supporte également l'option.

Passer en mode verbeux

Par défaut, les programmes sont silencieux : ils ne disent pas ce qu'ils font. Or c'est pratique pour vérifier qu'on a bien fait ce qu'on voulait. Aliases pour activer le mode verbeux :

alias ln='ln -v'
alias cp='cp -v'
alias mv='mv -v'
alias rm='rm -v'

Personnaliser l'invite

L'invite est le court texte invitant à saisir une commande, du style « haypo@marge:~$ ». C'est la variable d'environnement PS1 qui contient l'expression pour générer cette invite. « \u » est remplacé par le nom d'utilisateur, « \h » le nom de la machine, « \w » le répertoire de travail, etc.

Je n'aime pas du tout avoir une invite qui contient le répertoire de travail car l'invite prend rapidement toute la largeur de l'écran. J'utilise donc une invite qui ne contient que le nom de la machine :

export PS1='\h$ '

C'est rudimentaire mais efficace. La commande « pwd » me sert à me rappeler où je suis quand je me perd ;-)

Voilà, j'espère que je vous ai appris des trucs, n'hésitez pas à m'en apprendre d'autres en déposant un commentaire !

Éviter les opérations dangereuses en ligne de commande

L’erreur est humaine, mais pour provoquer une vraie catastrophe, il faut un ordinateur.

Quand on passe trop de temps dans la ligne de commande, on a tendance à oublier qu'on manipule des documents importants et qu'au détour d'une commande on peut les éradiquer à tout jamais ! Voici quelques astuces pour limiter la casse : lignes à ajouter dans votre configuration « ~/.bashrc ».

Option -i pour demander confirmation

Alias qui rajoutent l'option -i sur les opérations dangereuses :

alias ln="ln -i -v"
alias cp='cp -i -v'
alias mv='mv -i -v'
alias rm='rm -i'

Vous pouvez également utiliser l'option -k de tar pour éviter d'écraser les fichiers existant :

alias tar='tar -k'

Option -C de bash

Bash possède une option -C pour interdire les redirections vers un fichier existant :

set -C

Exemple au pif : ça arrive qu'on tape « echo "user:password:" >/etc/passwd » alors qu'on voulait écrire « >>/etc/passwd » :-)

Configurer l'historique

Bash permet de ne pas mettre une commande dans l'historique (touche haut ou CTRL + r) avec la variable HISTIGNORE :

# Ignore commands like:
#  >konsole&<
#  any command starting with a space (eg. " sudo touch /tmp/x")
#  >bg<
#  >fg<
#  >exit<
#  >svn revert*<
#  >hg revert*<
#  >*rm *<   (eg. "svn rm file", "rm -rf dir", ...)
#  >tee *<
export HISTIGNORE='*&: *:[bf]g:exit:*>|*:history*:svn revert*:hg revert*:*rm *:tee *'

Du coup, si vous tapez une commande que vous savez délicate, précédez la d'une espace pour éviter qu'elle soit sauvée (merci acatout pour l'astuce !).

dimanche 16 décembre 2007

Historique des commandes bash (HISTIGNORE)

Un ami, toady, m'a appris une super astuce pour l'interpréteur bash : la variable d'environnement $HISTIGNORE. Elle permet d'éviter que certaines commandes soient mises dans l'historique. Voici ma configuration actuelle :

export HISTIGNORE='&:[bf]g:exit:*>|*:history*:svn revert*:svnrevert*:*rm*-rf*:*rm*-f*'
  • « & » évite de sauver plusieurs fois la même commande
  • « [bf]g » ignore les commandes « bg » et « fg »
  • « *>|* » ignore toutes les commandes contenant >| (redirige la sortie dans un fichier même s'il existe déjà)
  • « history* » ignore les commandes contenant « history » (ex: "history|tail")
  • « svn revert* » et « svnrevert* » ignore la commande svn revert (et mon alias svnrevert)
  • « *rm*-rf* » et « *rm*-f* » ignorent « rm -rf » et « rm -f »

Cette configuration m'empêche en particulier de reproduire la boulette suivante :

svn diff > ~/patch
(...)
svn diff >| ~/patch
svnrevert >| ~/patch   # aïe !

mercredi 28 novembre 2007

Buzz autour de Fusil

Annonce d'une nouvelle version de Fusil

Estimant que la réécriture du fuzzer Fusil est achevée, j'ai lancé une compagne de buzz pour faire connaître l'outil. J'ai posté un courriel sur les listes de diffusion fuzzing et pen-test. J'ai écrit un journal linuxfr.org. J'ai aussi contacté personnellement des auteurs de fuzzers. Enfin, j'ai enregistré le projet sur Cheeseshop, Ohloh et Freshmeat.

Logs Apache et scripts Python

Hébergeant les sites *.hachoir.org sur mon propre serveur, je peux facilement en consulter les logs Apache. D'ailleurs, j'écris depuis plusieurs mois des scripts Python pour les analyser : apache_log. Je m'intéresse plus particulièrement à l'origine des visiteurs. Apache enregistre l'IP du visiteur, son « user-agent » et l'url d'où il provient (referrer).

Lassé de taper « host 84.74.168.(...) » pour voir d'où vient chaque visiteur, j'ai écrit un nouveau script (host.py). Il prend en entrée un fichier de log et génère un rapport HTML listant les reverse-dns triés selon le nombre de hits. Les résultats du reverse-dns sont mis en cache durant une semaine (stocké dans un fichier). Le reverse-dns est simplifié : « lns-bzn-29-82-248-234-136.adsl.proxad.net » est affiché « www.proxad.net ». Ceci permet de regrouper les visiteurs venant du même réseau. Consultez parser.py et host.py pour les détails

Analyse des visiteurs de fusil.hachoir.org

En à peu près 24h, j'ai vu passer :

  • Laboratoires de recherche : France Telecom (R&D), INRIA, INRA, Motorola Laboratories, CERN, CERT, CEA
  • Entreprises : Virgin Media, Ericsson, Microsoft, Roche, STMicroelectronics, Alcatel, FlightSafety, Digital Defense, Daimler, MWR InfoSecurity, Cisco, Rockwell Collins, VMware, TippingPoint, EADS, Juniper, Qualys, CXR Anderson Jacobson, atsec
  • Agences gouvernementales : US Office of Personnel Management (OPM), Conseil de l'Europe, Sandia National Laboratories (États-Unis)
  • Pays : France, États Unis, Israël, Turquie, Belgique, Italie, Allemagne, Suisse, Russie, Brésil, Ukraine, Japon, Argentine, Chine, Nouvelle Zélande, Finlande, Hongrie, Canada, Taïwan, Pologne, Philippines, République dominicaine, Île Christmas
  • Universités :
    • France : Université de Technologie Compiègne ; Université de Rennes 1 ; CNAM ; Grande ecole d'ingenieurs informatique electronique telecoms reseaux biomédical ; Université de Versailles Saint-Florent-en-Yvelines ; Université Lille 3 ; Université de Limoges ; École Nationale Supérieure des Télécommunications de Bretagne ; Académie de Rouen
    • Autres pays : Universität Hamburg (Allemagne) ; Facultés Universitaires - Notre Dame de la paix - Namur (Belgique) ; Universiteit van Amsterdam (Pays-bas) ; Cranfield University (Angleterre) ; National Chiao Tung University (Taïwan) ; University of California Berkeley (États-Unis) ; Oxford Brookes University (Angleterre) ; Massey University (Nouvelle Zélande)

(je me suis aidé de la liste Wikipédia des domaines de premier niveau pour les domaines nationaux que je ne connaissais pas)

Que faut-il comprendre de toutes ces informations ? Bah déjà que le fuzzing intéresse beaucoup de monde :-) Sinon, ce n'est pas parce qu'un employé quelconque de Microsoft a cliqué sur mon site que le prochain Windows sera exempt de bug. Je ne pense pas non plus que ces informations soient très fiables, beaucoup de traffic provient de robots automatiques qui parcourent Internet nuit et jour. Par contre, je dois avouer que je suis plutôt fier de voir passer des hits en provenance des réseaux du CEA, EADS et du CERT :-)

mercredi 7 novembre 2007

PC SOFT et WinDev

Depuis plusieurs années, je voyais des publicités pour le logiciel WinDev dans divers magazines d'informatique. N'ayant aucune connaissance l'utilisant, je m'étais toujours demandé quels en sont les usages. J'étais également étonné du peu de sites Internet dédiés à l'outil. Je me suis alors attardé sur le site Internet de PC SOFT pour récolter un maximum d'informations. Pour éviter de colporter des bêtises, j'ai pêché un maximum d'informations dans divers forums, en particulier le newsgroup fr.comp.developpement.agl.windev.

PC SOFT

PC SOFT est une éditeur de logiciel français basé à Montpellier. La société existe depuis 1984 et s'est fait connaître avec son éditeur d'écran pour MS-DOS : High Screen. Ce logiciel s'intègre à divers langages de programmation (C, Pascal, Cobol, ...). Il est doté d'une base de données appelée Hyper File. Renommé Hyper Screen en 1992, il servira de fondement à son successeur : WinDev. Ce dernier est qualifié d' « Atelier de Génie Logiciel » (AGL) par son éditeur. WinDev est constitué :

  • d'un éditeur d'interface utilisateur
  • d'un langage de programmation : le WLangage
  • d'un éditeur de code source
  • de la base de données Hyper File
  • d'outils de modélisation (Merise et UML)

WinDev excelle dans la réalisation d'interfaces de saisie

Les captures d'écran et vidéos de démonstrations montrent qu'on peut dessiner facilement de belles interfaces. Chose délicate et pénible avec d'autres outils. Pour vous en faire une idée, visionnez la vidéo surcharge d'IHM et de code. De nombreuses fonctionnalités visent à améliorer l'interface utilisateur comme la mémorisation des valeurs saisies par l'utilisateur (persistance des champs) ou le grisage automatique des fenêtres inaccessibles.

PC SOFT soigne son image

[1997] Le webmestre du site Windev® Development Center, Pierre Fauque, est contacté par PC SOFT au sujet de son site Internet. Il utilisait le logo WinDev sans autorisation, le nom WinDev n'avait pas le suffixe ® (registred : nom déposé), et il n'était pas clairement indiqué que ce site n'est pas celui de PC SOFT. Lisez les échanges par courriel pour les détails.

[1999] En septembre 1999, Joël VARTIN de la société Oriom pose une question au support PC SOFT sur les performances de WinDev. Il évoque une rumeur sur de mauvaises performances. On peut s'étonner de la formulation de la réponse de PC SOFT : « La rumeur à laquelle vous faite allusion est ridicule, dénuée de tout fondement, et pourrait s'interpréter comme du dénigrement ou de la diffamation ».

[2006] Marc Lussac, fondateur de la communauté developpez.com, expliquait en janvier 2006 que l'ouverture d'un forum WinDev ne pouvait se faire sans l'aval de son éditeur : « On aimerait bien avoir une rubrique Windev mais on n'a pas reçu l'autorisation de PC SOFT, (...) et sans autorisation on ne peut rien faire ». Le forum existe aujourd'hui, Marc a sûrement fini par obtenir l'autorisation en question.

[2007] Les articles Wikipédia concernant les logiciels PC SOFT sont régulièrement modifiés par PC SOFT en sa faveur depuis une adresse IP de l'entreprise (81.80.226.153). Plusieurs personnes s'en plaignent dans la page de discussion de WinDev.

L'affaire Beaussier

Cyril Beaussier était un utilisateur WinDev de longue date. Il appréciait l'outil jusqu'au jour où il a ouvert plusieurs sites Internet dénigrant PC SOFT et son produit phare WinDev. Il a publié ses sites sous le pseudonyme Gérard Menvussa (Gégé) :

En octobre 2002, PC SOFT arrive à faire fermer ces sites en l'exigeant au près des différents hébergeurs (sans prévenir Cyril par contre). Le 11 février 2003, Cyril reçoit une assignation en justice. Le 13 mars 2003, il perd le procès : on lui interdit toute diffamation de PC SOFT et de leurs produits, et la fermeture de ses sites Internet (ce qui avait déjà été fait). Cyril a écrit de nombreuses informations sur son procès dans son forum. Lisez également l'article WinDev Trivia de l'auteur néerlandais Peter.

L'association WinD'Asso

En octobre 2000, une soixantaine de personnes de divers pays (France, Belgique, Hollande, Italie, Afrique, Canada, États-Unis, ...) émettent le besoin de se regrouper pour être plus fort et plus efficace. Le 22 décembre 2000, les status de l'association WinD'Asso sont déposés auprès de la préfecture des Alpes-Maritimes.

L'association a, entre autres, constistué une liste des dysfonctionnements (bugs) des différentes versions de WinDev. À l'heure où j'écris ces lignes, on y trouve 115 bugs ouverts et 82 bugs fermés ce qui donne un total de 207 bugs référencés.

Marketing WinDev

Voici quelques phrases extraites du site Internet de WinDev :

  • « AGL sans concurrence »
  • « 100% des besoins sont couverts »
  • « Horizon infini »
  • « Gain productivité phénoménal »

WinDev est aussi une cascade de nombres : « AGL numéro un en France », « Développer 10 fois plus vite », « 100 clients témoignent », « 500 nouveautés » et le bouquet final « HyperFile 10 milliards d'enregistrements ».

Conclusion

On peut se demander pourquoi PC SOFT est tellement agressif quant à la protection de son image. Je vous conseille d'aller faire un tour dans les différents forums WinDev. Les discussions y sont souvent houleuses.

En attendant, je suis d'autant plus heureux de travailler sous Linux et de n'utiliser que des logiciels libres !

Les marques Windev®, Webdev®, Hyper File® sont déposées par la société PC SOFT.