Christophe Nowicki

January 30, 2006

Ouaf ouaf va chercher … Beagle !

Enfin une application utile écrite à l’aide du framwork Mono !
Et pas des moindres!

Dans la famille des moteurs de recherche bureau (“Desktop Search Engines”), après Spotlight et Google Desktop voici Beagle.

Qu’est-ce que Beagle?

Il s’agit d’un programme qui indexe les données personnelles qui se trouvent sur le disque dur de votre ordinateur : vos documents, e-mails, images, mp3 etc…
Il vous propose ensuite de faire des recherches dans ces données.
Vous pouvez voir des démonstratons en Flash du fonctionnement de l’nterface graphique du programme.

Le fonctionnement du programme repose sur :

  • beagled – le serveur d’indexation des données.
  • beagle-search – l’interface graphique utilisateur.

Pour obtenir de bonnes performances, les composants externes suivants sont recommandés :

  • INOTIFY – patch pour le noyau linux, permettant d’informer un programme d’une modifcation sur le système de fichiers. Pour bénéficier de cette fonctionnalité vous avez besoin d’un noyau 2.6.14.
  • Attributs étendus – est une fonctionnalité du système de fichiers permettant de stocker des méta données sur le contenu des fichiers. Pour activer cette fonctionnalité, il faut que celle-ci soit compiler dans le noyau et que le système de fichiers soit monter avec les bonnes options, comme indquer ici.

Installation

La procédure d’installation est décrite sur le Wiki du projet : Getting_Started.
Pour la distribution debian, un paquet est disponible pour la version 0.1.3 du programme.
Mais la version 2.0 est sortie le 20 janvier 2006 et elle apporte pas mal de nouveautés au niveau de l’interface graphique (dont le remplacement du l’ancienne interface graphique : best).
Je vous conseil donc de construire le programme à partir des sources en suivant la procédure de compilation.

A noter que la version debian, ne respecte pas correctement la policy debian et cherche à créer des fichiers dans le répertoire /usr/var/cache/beagle. Je vous conseil donc de lancer beagled avec les options de debug la première fois, pour verfer que le daemon fonctionne correctement :

beagled --fg --debug

Utilisation

Il faut lancer le daemon beagled au démarrage de votre session. (à l’aide du fichier .xsession, kde, gnome, etc. ).
Pour configurer le programme, il suffit de lancer la commande beagle-settings.
Pour effectuer des rechercher à l’aide d’une interface graphique, il faut lancer la commande best (avec l’option –show-window pour afficher directement la fenêtre de recherche) ou bien beagle-search pour la version 0.2.

Conclusion

Le programme est vraiment pas mal, mais le framwork Mono donne vraiment l’impression qu’il fonctionne “au ralenti” comme pour un programme écrit en Java. Mais ce n’est qu’une impresson qui se resent qu’au lancement du programme.

Filed under: Debian — Tags: — cscm @ 21:08

January 29, 2006

Mon nouveau window manager : E17

Desktop E17

Après prés de 5ans de vie commune avec PWM, c’est la séparation!

J’ai craqué pour le nouvelle monture d’Enlightenment, à savoir le tant attendu E17.

Voici une copie d’écran de mon nouveau bureau.

Filed under: Debian — Tags:, — cscm @ 10:51

January 24, 2006

Seagate RMA Suck!

Je suis arrivé à coire que les constructeurs de disque dur font tout pour ne pas assurer la garantie de leurs produits.

Depuis quelques années les disques dur sont devenus de plus en plus fragiles et il est de plus en plus difficle de faire valoir sa garantie auprès du constructeur.

Dans mon cas, j’ai toujours acheté des disques dur Seagate, car ce sont les plus silencieux du marché.

Mais je suis dégouté par la nouvelle procedure de “Return Material Authorization” (RMA) mise en place par le constructeur.

Tout d’abord celle-ci n’est pas compatible avec le navigateur Mozilla Firefox, lorsque vous vous connectez sur l’interface de saisie avec ce navigateur le message d’erreur suivant apparaît :

We have detected that you have a browser version not supported by this application.

In order for the this application to run properly you must have Internet Explorer version 5.5 or higher or Netscape version 7.0 or higher.

J’ai vraiment l’impression de retourner 5 ans en arrière …

Le plus “drôle” est que l’interface de saisie du RMA ne contient aucun élément spécifique à ces deux navigateurs.
Elle est simplement composée de formulaire HTML basique.

Une fois connecté à l’aide d’un navigateur “compatible” HTML ;0)

Vous pouvez saisir les informations sur votre disque dur à l’aide d’une interface dont l’utilisabilité n’est pas le principale point fort …

Enfin vous pouvez comptez une bon quart d’heure pour obtenir le RMA.

Les gens de Seagate pourraient vraiment mieux faire, mais le veuillent-ils vraiment?

Filed under: Hardware — Tags:, — cscm @ 21:27

January 19, 2006

XMLHttpRequest.status != 302

Je viens de découvrir une nouvelle limitation de l’objet XMLHttpRequest utilisé par la méthodologie Ajax.
Celui-ci ne supporte pas les rédirections HTTP envoyées par un serveur web.

Effectivement, un serveur web peut indiquer au client, via l’envoi d’une réponse de type 300 que le document demandé ne se trouve pas à la page indiquée.

L’objet XMLHttpRequest suit automatiquement les redirections sans vous en informer.

De ce fait, il n’est pas possible d’informer le client d’une redirection envoyée par le serveur.

Nous avons experimenté ce comportement avec tous les navigateurs du marché.

Mes recherches sur ce sujet le confirment :
http://www.codecomments.com/archive361-2005-3-412946.html

Il existe une solution, non portable qui conssiste à utiliser l’objet WinHttpRequest

Celui-ci propose de nombreuses méthodes supplémentaires, dont notamment la désactivation du suivi des rédirections automatiques : WinHttpRequestOption

Mais il n’est disponible que sous Microsoft Windows …

Il faut noter, que le suivi automatique des rédirections est une faille de securité, car lorsque les redirections bouclent, le navigateur du client plante.

C’est notamment le cas de Mozilla Firefox, qui est pourtant capable de détecter les boucles de redirection classique.

Filed under: Programming — Tags:, — cscm @ 08:25

January 14, 2006

Un joli selectionneur de date pour Freya : XUL DatePicker

fani_datepicker Je viens de finir l’intégration du selectionneur de date dans l’interface graphique du projet FANI : Freya.

Il s’agit d’un contrôleur écrit en XBL, disponible à cette adresse XUL Datepicker (Calendar)

Ce langage permet d’étender le nombre de widgets disponibles en XUL à l’aide de feuilles de style et de fichiers de description XML.

L’ensemble de ces technologies semble être extrêment puissant, mais difficile d’approche : la console Javascript est trop souvent muette …

Filed under: Mozilla Firefox — Tags:, — cscm @ 19:15

January 12, 2006

Gestion des exceptions SOAP en Perl avec les module SOAP::Lite et Error

Après une longue journée de travail, j’ai enfin réussi à faire fonctionner correctement le système de gestion d’exception de SOAP::Lite avec le module Error. Tout d’abord quelques explications.

Système de gestion d’exception

Tout programme en exécution peut être sujet à des erreurs, pour lesquels des stratégies de détection et de réparation sont possibles. Ces erreurs ne sont donc pas des bogues des programmes, mais des conditions particulières, on parle aussi de conditions exceptionnelles ou exceptions dans le déroulement normal d’une partie d’un programme.

Module Perl Error

Le module CPAN Error permet de gérér les exceptions en Perl. Il propose une interface objet semblable à celle disponible dans des langages comme Java ou bien C#. Le module repose sur la fonction die du langage.

SOAP::Lite

Le projet SOAP::Lite permet de prendre en charge l’ensemble des protocoles lier aux Web Services (SOAP, WSDL et UDDI). L’ensemble des fonctionnalitées offertes sont extrèment riches et puissantes. Vous pouvez aussi bien faire un serveur qu’un client en Perl et vous interfacer avec des Service écrit dans de nombreaux autres langages.

Entre la théorie et la pratique …

L’ensemble des interactions sont décrites dans les spécifications des protocoles de Web Services. Mais comme présque toujours en informatique, chaque constructeur, langage ou implémentation apporte son lot de spécificitées.

Dans le cas du langage Perl, les deux principaux sont l’absence :

  • de typage
  • d’un système de gestion d’exception

Le permier problème se controurne à l’aide de la déclaration des type dans un fichier WSDL.
Pour le second, j’ai eu un peu plus de mal avant de trouver la solution.

A propos du code source de SOAP::Lite

Ce n’est vraiment pas un exemple à suivre :

  • très peu de commentaires dans le code
  • seul fichier de 5000 lignes
  • le mode de debug trace n’est pas assez verbeux
  • on se demande souvent si l’auteur du module n’a pas coder sous l’imfluence de certaines drogues

L’anomalie de fonctionnement

Lorsqu’une exception est levée à l’aide de la fonction throw dans un module Perl elle créer un objet pour indiquer des informations sur le contexte de l’erreur. L’objet le plus simple est Error::Simple

sub foo {
   throw Error::Simple( "A simple error");
}

Il est possible de créer vos propres objets en utilisant l’héritage en utilisant l’objet Error comme base.

La framework SOAP::Lite détourne la fonction die et renvoie une exception SOAP qui contiens un objet. La problème est que cela ne fonctionne pas correctement :

 SOAP Fault :
        Fault String : Application error
        Fault Detail :  {
          'Error__Simple' => {
                             '-file' => 'Demo.pm',
                             '-text' => 'A simple error',
                             '-package' => 'Demo',
                             '-line' => '9'
                           }
        };

        Fault Actor  : http://localhost:4242/

Le contenu de Fault Detail n’est pas un objet MAIS une table de HASH.
De plus un message d’erreur du côte du serveur vous indique qu’il y’a visiblement un problème avec la serialisation :

 Use of uninitialized value in sprintf at /usr/share/perl5/SOAP/Lite.pm line 814.
Cannot encode 'namesp1:something' element as 'hash'. Will be encoded as 'map' in  stead

Après quelques heures de tatonnement et de recherche dans le code source de SOAP::Lite, j’ai trouver la source du problème.

Les attributs du module Error contiennent tous un préfixe qui fait échouer la serialization :

$VAR1 =  bless( {
        '-file' => '...',
        '-text' => '...',
        '-package' => '...',
        '-line' => '...'
        }, 'BadError')

La fonction résponsable de ce bug est SOAP::Serializer::encode_hash.
Une expression régulier empeche la serialisation d’un caractère ‘-‘ dans le flux XML.

J’ai donc déciser de supprimer le caractère ‘-‘ dans le nom des attributs à l’aide du boût de code suivant :

sub encode_hash {

my($self, $hash, $name, $type, $attr) = @_;

  while(my ($k, $v) = each (%$hash))
  {
    if ($k =~ m/^-/)
    {
        $k =~ s/^-//;
        $hash->{$k} = $v;
        delete $hash->{'-'.$k};
    }
  }

  if ($self->autotype && grep {!/$SOAP::Constants::ELMASK/o} keys %$hash) {

Et Voilà !

Cela fonctionne enfin correctement :

 SOAP Fault :
        Fault String : Application error
        Fault Detail :  {
                             'detail' => bless ( {
                             '-file' => 'Demo.pm',
                             '-text' => 'A simple error',
                             '-package' => 'Demo',
                             '-line' => '9'
                           }, 'Error::Simple')
        };

        Fault Actor  : http://localhost:4242/

Je vais contacter l’auteur du module pour trouver une solution plus propore ;0)
Mais en attendant celle-ci fonctionne correctement.

Filed under: Programming — Tags:, , — cscm @ 21:20

January 8, 2006

Extension Trashmail.net pour Mozilla Firefox

Enfin!

La voici enfin, l’extension qui va vous simplifiez la vie et vous evitez de recevoir pleins de promotions dans votre boîte de messagrie !

Après avoir harceler Stephan Ferraro durant prés d’un an, celui-ci à enfin pris le temps d’écrire un plugin pour Mozilla Firefox à fin de rendre le service Trashmail.net accéssible directement dans votre navigateur.

Le concept de Trashmail.net

Le concept de Trashmail.net est extrèment simple, il consite à mettre à votre disposition un alias de messagerie temporaire.

Par exemple votre adresse de messagerie est : jean.rachid@free.fr.
Vous voulez faire un achat sur un site web marchant bien connue pour la quantité de SPAM envoyer par jour.
Nous pouvons citer Pixmania, Alapage, GrosBill, etc …
Vous allez sur le site de Trashmail, pour créer un alias de messagerie temporaire de type : ffwqtn@trashmail.net.
Et vous donnez cette adresse de message temporaire lors de la commande.
Comme cela vous ne receverz que le ou les messages lier à votre commande et non la plétore de messages publicitaires qui vont suivre.
J’utilise ce système depuis présque 3ans et je n’ai rencontrer aucun souci.

L’extension pour Mozilla Firefox

Mais aujourd’hui, c’est encore plus facile ;0)
Vous n’avez même plus besoin d’allez sur le site de trashmail.
Il vous suffit d’installer l’extension dans votre navigateur :

http://www.trashmail.net/plugins/firefox/trashmail-firefox-1_0.xpi

Et d’utiliser le menu contextuel pour créer une adresse de messagerie temporaire en 2 click.

C’est encore plus simple ;0)

Filed under: Mozilla Firefox — Tags: — cscm @ 11:17

Powered by WordPress