vendredi 15 juin 2007

Humour pur geek

Tout le monde aime Eric Raymond.
Et c'est ici que ça se passe.

Un petit exemple :



Pur geek je vous disais :-p

Peu importe le noyau pourvu qu'on ait l'ivresse

L'agitation autour de la licence GPLv3 ainsi que de la série d'accords qu'est en train de passer Microsoft avec des sociétés commercialisant des systèmes Linux, inquiète.

Le microcosme est en ébullition.

Pour ma part lorsque j'ai commencé à utiliser Linux, rien ne marchait. La détection du matériel était aléatoire.

Ce que j'ai aimé, ce n'était pas la *facilité* mais la liberté. La possibilité de construire un système à son image, de jouer avec.

D'où cette réflexion. Le noyau Linux a finalement peu d'importance pour moi. Ce qui compte, c'est la possibilité d'avoir un système ouvert et libre. Autrement dit, je passerai à OpenSolaris, à NetBSD ou encore à ReactOS sans aucun problème.

Qu'on ne s'y trompe pas j'aime linux. Mais cette agitation m'a fait comprendre à quel point ce qui compte pour moi n'est pas la _technologie_ si belle soit-elle mais comme dirait RMS la liberté dans ma propre computation.

GNU Office

Je n'aime pas trop OpenOffice. Non pas qu'il s'agisse d'un mauvais programme. Loin de là. D'ailleurs, je l'utilise assez souvent. Je trouve juste qu'il a tout les défauts d'Office 97 sans en avoir la légèreté.
En fait, c'est surtout une question d'ergonomie. L'exemple de Firefox le montre bien. L'audace en ce domaine est vraiment payante.

Le développement de Firefox s'est concentré sur "l'usabilité". Celui d'OpenOffice hélas sur la comptatibilité.

Parce qu'il ne faut pas se leurrer. Le fond du problème est qu'OpenOffice c'est avant tout une énergie considérables pour courir derrière des formats de fichier propriétaires. Les DOC, les PPT, les XLS ...

Et heureusement !
Il fallait bien que quelqu'un le fasse.

La suite office des geeks s'appelle Emacs ou Vim. Utilisés avec des langages tels que Perl, LaTex, Couplé à un serveur de base de données, un groupware, un gestionnaire de version, ces puissants éditeurs permettent de faire à peu près les mêmes choses qu'une suite bureautique. Voire beaucoup plus et beaucoup mieux.

Le problème de ces application est qu'elles ont _comme_on_dit_ une courbe d'apprentissage très élevée. Autrement dit, elles sont inabordables sans un investissement en temps important.

Certaines applications par contre cultivent le même esprit mais avec la louable intention d'être beaucoup plus *faciles*.

Ce sont des choses originales, singulières. J'en propose trois pour commencer :

Ce ne sont que quelques exemples, pour montrer qu'il existe une autre façon d'être productif sans _cloner_ MS Office, ni même être compatible

A suivre

lundi 11 juin 2007

Convertir un fichier odt en texte

Horreur, il n'y a pas OpenOffice sur votre machine ! pas de panique perl est là :)

use Archive::Zip;
my ($file) = @ARGV;
my $zip = Archive::Zip->new();
unless ( $zip->read( $file ) == AZ_OK ) {
die 'read error';
}
my $content = $zip->contents('content.xml');
$content =~ s/<[^\<\>]*>/\n/g;
$content =~ s/\n+/\n/g;
print $content;

Et nous voici avec un texte certes sans mise en forme mais parfaitement lisible pour peut que votre console supporte l'utf-8.
On peut aussi remplacer content.xml par meta.xml qui vous donnera plein d'infos sur l'origine du fichier.

samedi 9 juin 2007

Chanter, danser avec Mandriva

Il y a quelques années seul un gourou aurait pu composer une chanson uniquement sous linux (avec des outils libres).

Cet article nous explique comment sans bidouillages aucun on peut faire ça sous Mandriva.
Si ça continue à devenir aussi simple, je migre vers openbsd :-)

jeudi 7 juin 2007

Du plaisir de programmer en Perl

Sur le forum de developpez.com la question de savoir comment faire pour vérifier si un texte matche une série d'expressions régulières fut posée.

Peu satisfait de ma propre réponse, je relançais le débat sur linuxfr.

Voici ce que je pu en tirer.


1 # Si je veux vérifier qu'une chaîne matche plusieurs regex, j'aurais tendance à faire naïvement :
2 if ($s =~ /toto/ &amp;& $s =~ /titi/ &amp;& ... )
3
4 # Bon, trouvant ça assez laid, je ferais plutôt
5 foreach my $qw qw/toto tata titi/{
6 warn "la chaîne ne matche pas $qw" and last unless ($s =~ /$qw/ );
7 }
8
9 # L'intérêt principal étant que j'ai une vrai liste de conditions.
10 # Le problème est que ça marche bien si je veux savoir si ma chaîne ne remplie pas cette liste de conditions .
11 # Or je veux savoir si elle la remplie.
12
13 # Bien sûr on peut faire ça avec une variable booléenne mais c'est encore plus laid que le if initial
14 #
15 my $bool = 1; # vrai
16 foreach qw/toto tata titi/{
17 $bool = 0 and last unless ($s =~ /$qw/ );
18 }
19
20 # lom me proposa alors d'utiliser map de façon assez originale
21 print !grep (/0/, map { $s =~ /$_/?1:0} qw/toto tata titi/ ) ? "OK" : "NOK";
22
23 # ou encore
24 map { return 0 unless($s =~ /$_/) } qw/toto tata titi/;
25 return 1;
26
27 # Il me proposa également de reformer mon if à la volée puis de l'évaluer
28 eval '$s=~/' . join ('/ &amp;& $s=~/', qw /toto tata titi/) . '/';
29
30
31 # Finalement si j'ai pris beaucoup de plaisir à regarder et à imaginer diverses solutions rigolotes
32 # je ne sacrifierai pas la lisibilité.
33 sub est_ce_bien_vrai($@) {
34 my ($s, @qw) = @_;
35 foreach (@qw) {return 0 unless ($s =~ /$_/ );}
36 return 1;
37 }
38
39


Tout cela finalement, nous ramène aux deux fondamentaux de Perl :
  • There is more than one way to do it
  • Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live
Perl 6 devrait améliorer les choses en proposant plus de facilité pour construire des automates (puisque c'est finalement de ça qu'il s'agit).

On a pas fini de s'éclater

mercredi 6 juin 2007

Scenari

Scenari est une plate forme d'édition qui comprend un éditeur WYSIWYM (What you see is what you mean).






Cela veux dire que contrairement aux traitements de textes classique (WYSIWYG) , il permet de décrire la structure d'un document mais pas sa mise en forme.

L'avantage étant de pouvoir réutiliser le document pour plusieurs usages (impression, web ...) et d'avoir des présentations uniformes.

Scenari est loin d'être parfait. Mais c'est a mon sens un grand pas en avant, vers la démocratisation de l'édition structurée qui on le sais bien est la seule façon d'éditer un document informatiquement valable.


Mon CV est rédigé avec scenari.