Archives de l'auteur pour Sylvain

09
juil

Google Protocol Buffers

Lu sur Silicon.fr :

Les « Protocol Buffers » sont distribués sous licence Apache 2.0 par Google. Ils permettent de structurer l’information qui circule entre des serveurs ou des applications. La compagnie voit en cette technologie une alternative au XML, qu’elle juge inadapté pour un usage à grande échelle.

Après avoir parcouru la doc de ce nouveau format d’échange, voici ce qu’on peut en dire :

Taille des messages

Protocol buffer est beaucoup moins verbeux qu’XML, les messages ainsi échangés seront de ce fait beaucoup plus légers.

Par exemple une personne en XML serait décrite de la façon suivante :

<person>
<name>John Doe</name>
<email>jdoe@example.com</email>
</person>

Alors qu’en protocol buffer on aurait :

person {
name: “John Doe”
email: “jdoe@example.com”
}

DTD

La définition du format se baserait sur un fichier .proto qui fait office de DTD pour valider la cohérence du message mais aussi pour générer l’api cliente

Par exemple le person.proto suivant permetrrait de définir le format et les règles de validation des messages :

message Person {
  required string name = 1;
  required int32 id = 2;
  optional string email = 3;

  enum PhoneType {
    MOBILE = 0;
    HOME = 1;
    WORK = 2;
  }

  message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

  repeated PhoneNumber phone = 4;
}

Compiler

La particularité de protocol buffer est d’utiliser une api standardisée pour encoder / décoder les messages. Les utilisateurs de castor pour le XML ne seront pas dépaysés.

L’inconvénient est qu’on est obligé de compiler et générer les classes correspondantes au .proto qu’on veut utiliser.

L’avantage c’est que les compileurs Java, C++, et Python sont fournit par google. Un autre avantage et non des moindres c’est qu’on est sure lors de la génération d’un message que celui-ci est valide. Alors qu’avec du XML on peut très bien produire des messages non valides qui seront déclarés ensuite comme tels lors de leur validation… ou pas. Autre avantage de la compilation : la vitesse de traitement, en effet, une fois compilée, les classes qui manipulent les fichiers d’interchange sont plus rapides car elles savent exactement où les infos se trouvent alors qu’un parseur XML doit parcourir l’ensemble du fichier pour ensuite pouvoir accéder à son conetnu.

Performances et conclusions

Bref voilà un nouveau projet très intéressant proposé à la communauté par google d’autant que sa maturité est avérée puisqu’utilisé comme format d’interchange au sein des serveurs googles pour gérer les indexs du moteur de recherche numéro 1 dans le monde.

A mon avis, le seul frein à l’adoption de ce nouveau format est le déploiement très large actuellement de XML notamment dans les bus ESB et dans les applications SOA. Cependant, la généralisation de ces bus de données tant à montrer la faiblesse de XML notamment au niveau de la taille des interchanges qui engorge littéralement ses canaux. Il se pourrait donc que les entreprises qui souhaitent optimiser leurs échanges décident petit à petit de migrer vers des bus de données protocol buffers qui devraient apporter les mêmes sécurités tout en étant plus simple à manipuler et moins coûteux en quantité d’information.

Pour en savoir plus : le site de Protocol Buffers

25
juin

Debug Eclipse Europa + Weblogic 8.1

Weblogic 8.1 n’est pas supporté par les plugins serveurs de la plateforme WTP.

Cependant il est intéressant de pouvoir se connecter sur la JVM de weblo pour débuguer un projet en production par exemple, car j’ose imaginer que les nouveaux projets sont développés sur des serveurs plus à jours.

Il faut ensuite démarrer weblo en mode debug en ajoutant dans sa commande de lancement les valeurs :

-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=8453,server=y,suspend=n

Ensuite, une fois weblogic démarré, on peut se connecter à la JVM en configurant une Remote Java Application dans le menu debug d’eclipse.

Menu de configuration d\'une Remote Java Application dans Eclipse

04
juin

JCVD Le film

Affiche du film JCVD le film avec Jean-Claude VAN DAMMEVraiment, je sens que ça va être compliqué de faire un petit commentaire sur ce film.

On a tous - les trentenaires en tout cas - été marqués dans notre jeunesse par le grand écart plus vrai que nature de Jean-Claude ou ses “tricks” avec les cacahuètes.

Les années passères, et à l’instar de Maradona, la descente médiatique s’accompagne de diverses substance illicites. C’est ensuite la télé réalité qui nous rappelle à nos meilleurs souvenirs un Jean-Claude que l’on redécouvre alors qu’il n’est plus que l’ombre de lui-même. Tantot bouffon, tantot philosophe mais surtout bouffon. Bref l’étoile ne brille plus guère et le temps des “Aware” supplente Blood sport et Full Contact.

Alors imaginez-moi il y a un an environ alors que je visionne pour la première fois le “teaser” totalement décalé de “JCVD le film”. On y voit un Jean-Claude en train de négocier ferme pour pouvoir passer le casting pour jouer son propre rôle. Cette situation surréaliste demande une bonne dose d’auto-dérision et j’ose à ce moment là imaginer Jean-Claude dans son propre rôle pour un ultime film dont le second degré pourrait redonner une chance à celui dont on a tellement rit.

Ce soir donc je peux dire que “je l’ai vu” et que ça ressemble beaucoup à la bande annonce. Et je crois pouvoir dire également que Jean-Claude s’en est bien sorti.

04
juin

Devoir de mémoire…

Aujourd’hui c’est l’anniversaire des 19 ans des manifestations étudiantes sur la place de Tian’anmen en Chine.

Il est donc opportun de redécouvrir ce qui s’y est passé via wikipedia. Mais aussi de découvrir cette comémoration vu de l’intérieur par Jian ShuoWang qui se souvient sans jamais citer aucun des mots interdits dans son pays.

23
mai

Le nouvel obs est simplement navrant…

Je me suis ré-abonné dernièrement pour 6 mois seulement car j’avais de sérieux doute quand à l’attitude à adopter suite à l’annonce de la prise de fonction de Denis Olivennes à la direction du nouvel obs… Pour ceux qui ne connaîtraient pas le bonhomme : il s’agit de l’ancien pdg de la FNAC et le rédacteur du rapport éponyme proposant la suspension de l’accès internet pour les internautes téléchargeants des contenus illégaux.

A l’époque de ce réabonnement, je ne lisais déjà quasiement plus les pages exaspérantes* sur la politique française. Et pourtant je me sens plutôt en phase avec la ligne éditoriale de gauche de cet hebdo.

Depuis mon réabonnement il y a eu l’histoire - digne de closer - du SMS de Nicolas à Cécilia avant le mariage.

Et hier je tombe sur un article dans libé qui évoque les propos en question que l’on pourrait qualifier de virils et que seul le nouvel observateur aurait entendu.

Aujourd’hui j’ai la confirmation dans Le monde, et demain je peux vous l’assurer on ne m’y reprendra pas à renouveler mon abonnement.

Je pense que courrier international pourrait-être une bonne alternative ? En attendant, je ne peux que saluer les versions online de libération et Le Monde que je trouve très complémentaires.

* exaspérante car trop souvent aussi engagées que la ligne éditoriale de Marianne.

22
mai

Loi Hadopi

Parce que je suis contre l’idée de surveiller les internautes et de mettre en place des ripostes automatiques, comme la coupure de l’accès internet.

Je propose aujourd’hui qu’on jette un oeil à cette pétition organisée (ou relayée ?) par SVM.

http://www.svmlemag.fr/petition_riposte_graduee

Notez que l’infâme Didier Super fait partie des artistes signataires. Ne vous laissez pas hypnotiser par cette prise de position, ça ne change en rien le sérieux de cette action.

20
mai

Interactions d’une méthode en Java

En java - comme la plupart des langages - il est très important de bien maîtriser les différents résultats d’une méthode.

De primes abord rien ne parraît plus trivial puisque la méthode déclare le type du paramètre retourné comme dans ce cas de figure :

public int ajouter (int a, int b)

Cependant, ça se corse un peu dès lors qu’on retourne un objet :

public String getParticipantName (int participantId)

En effet ce cas de figure peut retourner le nom du participant sous forme d’un objet String mais il peut également retourner null si aucun participant ne correspond à l’id donné en param.

Dans ce cas, il faudra tester obligatoirement que le résultat est différent de null avant de faire une quelconque opération dessus. Pour le développeur, de la méthode, retourner null signifie “je n’ai pas trouvé” ce qu’on me demande et me parraît être une valeur plus adéquat qu’une chaîne vide.

Si l’objet retourné est un tableau :

public ArrayList getParticipants(int epreuveId)

Dans ce cas de figure, je conseillerais au développeur implémentant cette méthode de retourner dans tous les cas un tableau même si celui-ci est vide. Ce qui signifierait texto : voici la liste demandée, elle est vide, plutôt que je n’ai rien à retourner. (dans ce cas je me demande s’il ne faudrait pas retourner la liste vide si c’est le cas et null dans le cas où on se rend compte que l’epreuveId est incohérent ?).

En tout état de cause lorsqu’on parcourera ensuite la variable retournée, on n’aura pas la mauvaise surprise de déclencher un NullPointerException.

Cas des RuntimeException :

private int divise (int a, int b)

La division pose un problème bien connu : celui de la division par 0. Cependant on peut imaginer - vu que la méthode est privée - qu’avant d’utiliser cette méthode, on aura au préalable géré les pré-conditions à son appel. Dans ce cas le développeur ne veut pas avoir a gérer un try catch alors qu’il sait que les paramètres sont déjà vérifiés. Toutefois si notre méthode divise venait à être utilisée dans le cas interdit, il faudrait lever une exception de type RuntimeException. Cette Exception ne nécessite pas d’être déclarée mais pourra cependant signaler la mauvaise utilisation de la méthode.

Cas des Exceptions :

public int divise (int a, int b) throws Exception

Ici, notre méthode devra pouvoir lever une Exception dans le cas où il y aurait une division par 0. En effet cette méthode est visible par tout le monde et on ne sera pas certain que tout ses utilisateurs auront vérifié les pré-conditions à son utilisation. La seule issue possible est le déclenchement de l’exception adéquate que l’utilisateur de la méthode devra obligatoirement prendre en compte.

Cas des arguments modifiés par référence :

public void removeTokensFromString(String stringToParse, String tokenToBeRemoved)

Imaginons que cette fonction doive parser la chaine “stringToParse” afin d’enlever toutes les occurences de “tokenToBeRemoved”, dans cas cas là certains développeurs n’hésitent pas à utiliser la possibilité du passage par référence pour manipuler directement le contenu de stringToParse.

Je reste persuadé qu’il faudra toujours préférer écrire ce genre de fonction de la manière suivante :

public String removeTokensFromString(String stringToParse, String tokenToBeRemoved)

et l’utiliser de la façon suivante:

String chaineToParse = “les avions sont dans le ciel bleu”;

chaineToParse = removeTokensFromString(chaineToPars, “bleu”);

plutôt que la première méthode qui s’écrirait :

String chaineToParse = “les avions sont dans le ciel bleu”;

removeTokensFromString(chaineToPars, “bleu”);

Voyez-vous des cas où cette deuxième façon d’écrire pourrait ne pas être appliquée ?

Quoiqu’il en soit l’utilisation et l’implémentation d’une méthode en java peut avoir maintes et maintes interractions sur l’exécution logique de votre code, il est donc primordial d’avoir conscience de tous ces principes.

15
mai

Splashtop, Linux, et Microsoft ?

SplashtopJe découvre sur silicon.fr que désormais toutes les cartes mères Asus intégreront Linux nativement. Il s’agit en fait d’intégrer un OS Linux de taille minimal afin d’exécuter des applications prédéfinies comme un navigeteur web ou skype. L’intéret étant une disponibilité quasi-instantanée de la plate-forme matérielle là où le chargement d’un OS complet serait pénalisant.

Ce qu’il manque à Windows actuellement c’est la modularité et si l’on en croit cette information clubic, la version 7 devrait s’améliorer de ce côté là. Le modèle tout en un de windows qui a permis d’imposer IE et Media Player dans tous les foyers me parraît peu pèrrène. D’ailleurs vu le manque d’adhésion des utilisateurs à Vista on se rend compte que la remise en question est impérative pour la firme de Redmond. Je doute de plus que la plate-forme windows Mobile puisse combler a elle seule cette problématique.

Du côté de Linux, il existe les petites distributions telles que damn small (environ 50Mo) qui ne s’en tirent pas mal du côté des fonctionnalités finales (traitement de texte, gravure de CD, navigation Web). Il y a également le marché des mobiles qui permet aux inititatives comme Android (pour google) ou la LiMo foundation évoquée par Tristan d’être promues à un avenir certain.

Pour Apple, c’est au prix d’une R&D très performante en matière de design et surtout d’ergonomie qu’on arrive à grignoter des parts de marché sur chaque plateforme technique. En effet, l’expérience utilisateur sur un iPod ou iPhone (que ce soit avec la molette ou avec les deux doigts sur l’écran tactile) ou sur un mac justifie clairement l’adoption de l’OS et le surplus financier.

Pourrait-on conclure en disant que les trois principaux acteurs en matière d’OS correspondent chacun aux valeurs suivantes :

Mac OS –> ergonomie et expérience utilisateur

Microsoft –> environnement intégré

Linux –> modularité

N.B. Pour microsoft il faut noter également qu’il existe une initiative qui vise à ajouter un écran LCD d’appoint sur le capot d’un portable afin d’accéder à des informations telles que les photos, fichiers MP3 et mails. Cependant je n’arrive pas à me rappeler du nom et je reste convaincu que ce n’est pas aussi stratégique que splashtop.

12
mai

I’m back from Paris

Rue de RivoliCe pont du 8 mai m’a fait un plus grand bien et je ne saurais que trop vous recommander la visite des trois monuments que sont :le louvre, le musée d’Orsay et le centre Georges Pompidou.

En attendant je vous ai ramené une petite photo de la rue de Rivoli entre chiens et loups voitures, motos et scooters.

02
mai

Les agrocarburants

Des epis de maïs en vracLu dans le nouvel observateur à propos des crises alimentaires qui se généralisent dans le monde :

[...] un seul plein pour un 4×4 avec ce carburant alternatif [nds : 60 millions de tonnes de maïs consacrés à la fabrication d'éthanol aux Etats-unis] représente la consommation annuelle de maïs d’un Mexicain.

J’en reviens toujours au même constat : le problème de fond ce n’est pas le carburant, c’est la quantité d’énergie qu’il faut pour mouvoir une voiture d’une tonne alors que la charge utile à déplacer est en moyenne de 70kg (le poid du bonhomme). Et la seule solution à l’échelle planétaire c’est de réduire nos déplacements motorisés.