Service class design

19 05 2007

PHP.jpgAvant de faire du Python par la force des choses et d’en découvrir la toute puissance.

J’ai commencé la programmation sur le web avec PHP, et me suis particulièrement interessé aux moyens de communication à travers les différentes technologies qui composent internet.

A la suite de plusieurs projets plus ou moins grands, une subtilité m’apparait, peu importe la technologie, du moment que les programmes ont accès aux mêmes ressources, et qu’ils partagent le même langue pour communiquer, il n’y a pas de problèmes.

D’où l’idée de centraliser les tâches à partir d’un même noyau qui sera accessible par n’importe quels types de technologies.

Dans le cas d’un blog, les différents articles qui le composent doivent au minimum pouvoir être créés, édités et supprimés.

Donc si on veut pouvoir faire une interface pour administrer tout cela, disons dans une page, on va rédiger du code pour apporter ces fonctionalités. Maintenant nous voulons pouvoir administrer les articles pour pouvoir les éditer à partir d’un client quelconque. Doit-on une fois de plus recoder ces fonctionnalités ? Non ! Cela serait une énorme perte de temps.

A l’heure du web 2.0 et de la centralisation des données, il est temps de se simplifier la tâche.

La solution proposée est de fournir un service accesible de n’importe où et qui centralisera toutes les actions faites aux articles du blog. L’accès aux ressources se fera donc par HTTP, le minimum je pense.

Ecrire un service qui soit fiable et qui reste souple à l’ajout de fonctionnalités est facilité grâce à la classe Service pour PHP4 présentée ci-dessous. J’ai développé cette classe d’implémentation à partir du modèle MVC pour PHP4 car c’est ce qu’on trouvera le plus en terme de configuration de serveur web. Le Python m’aurait bien tenté, mais bon dommage, le mod_python n’est pas encore disponible partout chez les hébergeurs.

class ServiceImplemented extends Service {
  var $name;

  function ServiceImplemented($action, $parameters=NULL,
                                          $mandatory=NULL) {
    /*
    ** Les variables $parameters et $mandatory sont
    ** respectivement une table de hash contentant les
    ** paramètres nécessaire à l'éxécution de la
    ** méthode servie, et une liste de paramètres
    ** obligatoires pour éxécuter la méthode.
    */


    parent::Service($action, $parameters, $mandatory);
    $this->name = 'toto';
    $this->run();
  }

  function hello() {
    return 'Hello world from : '.$this->name;
  }

}

//Coté serveur on apelle le service requis
$si = ServiceImplemented('hello');
$si->publish();

Le code de la classe est téléchargeable avec une suite de tests pour les utilisateurs de SimpleTest.

Actuellement cette implémentation dans la code source du blog de shao197 permet l’édition de son blog en AJAX et en Python à partir d’un client graphique basé sur wxWidget.



Le Coryphène

13 05 2007

Le Coryphène est le nom d’une dorade africaine, mais c’est aussi le nom du zodiac de mon beau-père José.

Profitant d’un dimanche après midi plutôt calme, mais un peu venteux (du Narbonnais), on décide d’aller faire un tour sur son bateau, un zodiac PRO MAN 7, une première pour moi, surtout que je déteste la mer et tout ce qui s’y apparente.

Equipé du GPS, on commence à sortir doucement du port, mais dès les balises de l’entrée passées, les 40 chevaux du moteur 4 temps se mettent au galop, pour qu’on commence à s’en prendre plein la tronche.

Le principe d’un zodiac est le suivant : on se prend la vague de face, et on essaye de retomber sur son siège sans se faire trop mal, jusqu’à la prochaine vague.

Après une petite heure de pêche en pleine mer, on décide d’aller pousser l’engin sur l’étang qui prolonge l’avancée de la mer. Dans cette zone le vent était presque nul et il est clair que sur une mer d’huile, la sensation de vitesse est énorme surtout dans les virages. Trop bon !

Tout cela pour vous dire que même si je déteste toujours la mer, le zodiac de mon beau père m’a réconcilié au moins avec l’air marin.

De plus je ne pense pas pouvoir oublier la beauté des vagues en pleine mer, à la fois simples dans leurs formes, mais complexes dans leurs traits laissés par la course du vent.

Bref une très bonne après midi, qui se conclua sur les meilleurs lieux de braconnage du Loup au fusil harpon, un poisson que l’on trouve dans cette région et dont mon beau père est fan.