En vrac

J’ai fait ma paperasse !

Ça traînait depuis un an et demi. Ça m’a pris une heure, y compris l’écriture et l’impression du courrier pour expliquer ma situation à la con (je suis plus immatriculée à la sécu depuis fin 2005, l’accident bête).

Je me sens bête de pas avoir fait ça avant.

Mais bon, tout est dans l’enveloppe. Ça part à la boîte DEMAIN !

Lectures

Je profite de la recompile de mon code pour causer des derniers bouquins que j’ai eu l’occasion de lire…

  • La Musique du sang, Greg Bear

Après L’Echelle de Darwin que j’avais beaucoup apprécié du même auteur, La Musique du sang reprend les mêmes recettes de succès, du moins en ce qui me concerne. Le fond scientifique est/a l’air (suis pas biologiste) suffisament solide et documenté pour être crédible, les personnages sont plutôt sympa et le suspense est bien mené. L’histoire de base : un scientifique s’amuse avec des petits nano-trucs dérivés de cellules et il finit par se les injecter pour sauver ses expériences. Et là, c’est le drâme.

  • L’Espace de la révélation, Alastair Reynolds

Un roman avec de l’archéologie d’hommes-oiseaux, des vaisseaux spatiaux avec des armes delamorkitu, des sauvegardes de gens sous forme de simulations, des cyborgs et des capitaines cryogénisés en train de pourir gentiment en fond de cale. Sympa.

  • The Pragmatic Programmer, Andrew Hunt et David Thomas

Un bouquin plus « sérieux » (je l’ai traîné sur mon bureau pendant une quinzaine de jours en le lisant pendant mes temps de compile), conseillé par Krysztof von Murphy. Un bon bouquin sur la programmation en général, des specs aux tests en passant par la doc. Instructif et intéressant. Je regrette cependant certains conseils inapplicables dans certains contextes. J’ai un éditeur préféré, que j’utilise assez mal par rapport à certains (Bruce, sors de là), et je suis convaincue de l’intérêt de la ligne de commande par rapport à une lkjmklj GUI qui fait jamais ce qu’on veut, sauf que je n’ai pas le droit d’installer ni Cygwin ni Emacs sur mon poste (le premier qui me parle de la fenêtre DOS de Windows XP perd trois points de vie). Dommage, je suis relativement persuadée que ma productivité s’en améliorerait… (Ah, et oui, j’édite mes captures d’écran pour les specs avec MS Paint. Un outil fort adapté ma foi.)

  • La Chambre d’Albert Camus et autres nouvelles, Ron l’Infirmier

Le bouquin du blog de Ron (fermé depuis, snif). Ron est infirmier, et il raconte plein de trucs. Rigolo des fois, triste des fois, un bon petit recueil de nouvelles qui se lit rapidement (surtout quand on a déjà presque tout lu sur son blog). La nouvelle éponyme est très chouette.

  • Pars vite et reviens tard, Fred Vargas

Mon premier Vargas, emprunté ce WE à la maman de Pierre, fini hier soir dans le métro. Un bon polar, une fin sympa, à lire 🙂 J’ai pas vu le film qui en a été tiré, mais pour le coup je suis curieuse. Un peu peur d’être déçue (surtout maintenant que je connais la fin), mais curieuse.

  • Eragon / Eldest, Christopher Paolini

Encore un truc qui a fait l’affiche des cinémas récemment. Je les avais achetés pour ma soeur à Noël mais elle les avait déjà (damned, heureusement que j’avais prévu autre chose), du coup je les ai vilement récupérés. Bon, honnêtement, bof. D’ailleurs, j’ai toujours pas fini le 2e tome qui encombre mon sac à dos depuis. Quelques bonnes idées (j’adore la scène avec le dragon bourré au début du 2e tome), mais globalement, ça rame un peu, pas mal de poncifs du genre (bon, c’est de la fantasy, c’est un peu toujours des poncifs, mais là ça se voit quand même), mais globalement, bof. Je vais probablement le finir quand même pour ma culture, mais bof.

Voilà, c’est terminé pour cette dernière moisson 🙂

Le pourquoi du comment du rhaaaaaa.

Christophe m’a demandé de préciser ce que j’avais contre le MVC & le n-tiers etc etc.

Alors, MVC, sur le principe, c’est très bien. J’en suis même, en théorie, un ardent défenseur. Le principe, c’est « pour une appli, on a des données (model), on veut les voir (view), et on veut y appliquer des traitements (controler). Et on découple tout ça de manière à ce que (par exemple) si on change l’algorithme de traitement, il y ait normalement pas besoin de changer ni la visualisation des données ni le modèle de données. Très bien.

Là où ça se gâte, c’est que le cloisonnement du modèle MVC, bien souvent, il est dur. Ça veut dire que pour appeler un truc du côté contrôleur quand on est côté vue, faut se manger des callbacks pas possibles et, bien souvent, c’est pénible ET long. Pour l’exemple, la dernière fois que j’ai dû aller rechercher une fonction à la noix de ce type là, ça m’a pris 4 ou 5 heures pour mettre en place ledit callback. On me rétorquera que 1/ c’est que je suis une buse 2/ c’est qu’y’a ptêt un problème avec le framework que j’utilise ; ça n’empêche que par rapport à appeler bêtement une fonction, c’est long.

En pratique, le problème, et tout particulièrement quand on travaille à plusieurs sur du code, c’est que les choses ne sont jamais aussi claires que ça. Déjà, il va en général y avoir du code qu’on aimerait bien avoir des deux côtés (côté contrôleur (on dit aussi métier) et côté vue (on dit aussi présentation)). Techniquement, on est bien d’accord, ça veut dire que quelque part, on sait pas trop où va le code, qu’il faudrait réfléchir, éventuellement le déplacer d’un côté à l’autre et/ou faire les choses plus proprement qu’elles ne sont faites.

Maintenant, considérons la situation suivante. On livre en intégration demain. Il est 16h. J’ai une fonction qui traîne, avec le code kivabien dedans, mais elle est pas du bon côté. J’ai pas de mapping pour faire mon callback. Faire le mapping, ça va relativement vite, sauf qu’il faut recompiler pour mettre le mapping au bon endroit (et ça, c’est long), et que pour mapper, il faut que les paramètres de la fonction soient sérialisables, sinon ça passe pas (et oui, un Boolean, c’est sérializable, un boolean, ça l’est pas. Astuce.) (oui, je fais du Java.) Et, comme dit plus haut, avec toutes ces emm… diverses, faire le mapping proprement, ça peut prendre 4h (avec les divers bugs et autres ennuis) (bon, ça peut aussi prendre un quart d’heure si on s’en tire bien, hein, soyons honnête !!), donc… bin on duplique le code. Moche.

On pourrait contourner ça en ayant une partie de code « commune » qui serait compilée à la fois avec la partie métier et avec la partie présentation. Il faudrait bien sûr faire super gaffe en y mettant quoi que ce soit (c’est un coup à exploser complètement le modèle, donc pas très beau), MAIS quelques fois ça serait intéressant. Je pense en particulier à tout un tas d’utilitaires à la noix qui peuvent très bien servir des deux côtés, traitement de chaînes, tris, etc. Sauf que, évidemment, simplicité et développement à l’arrache obligent, on finirait toujours par y trouver « la fonction qui récupère la liste des gens à qui envoyer un mail pour telle opération » (mbof) et/ou par ne pas y trouver « le petit utilitaire de trois lignes qui appelle le Tokenizer pour parser m chaîne, là ».

En-dehors du code potentiellement duplicable, ya aussi le problème du code qui est « juste pas au bon endroit, du moins il me semble ». Pour moi, une fonction qui envoie un mail à un utilisateur avec des informations sur une instance particulière du modèle, ça va côté présentation (parce que je crée mon mail et je le présente à l’utilisateur). Bon, pour la personne qui a fait la fonction, ça va côté métier. Et là, c’est la lutte. Je sais pas qui a raison (enfin, si, moi 😉 ) mais, techniquement, non, j’ai pas le temps d’en discuter et j’ai pas le temps de corriger quoi que ce soit (rappel : il est 18h et je livre demain en intégration). Donc, on lutte. Pis là on se rend compte qu’il y a deux fichiers de ressources pour les chaînes. Gargl, le fichier en question est côté présentation, il faut donc que je crée le mail côté présentation et que je l’envoie côté métier. Ouiménon, en fait, les chaînes elles étaient dans l’autre fichier. Damned, il est 22h.

Bref, voilà. Le modèle MVC, conceptuellement, c’est très joli. En pratique, entre le code qu’on sait pas où mettre, le code qu’est pas au bon endroit, le code qu’on voudrait bien des deux côtés, le tout dans un environnement d’équipe et à l’arrache, le modèle MVC, ça te pourrit la vie d’une manière monstrueuse.

Quant à l’archi n-tiers… bin mon code métier et mon code présentation, ils sont sur deux serveurs Websphere différents. Il faut lancer le serveur métier avant le serveur présentation, sinon ça plante. Relancer les deux serveurs, ça me prend au moins 10 minutes à chaque fois. La trace d’exécution, elle se fait sur deux serveurs et c’est donc le bordel (d’un côté, ta trace s’arrête sur l’appel au callback, de l’autre, faut déjà voir si elle commence (aka si t’as pas foiré ledit callback)). Debugger du n-tiers, c’est pas marrant.

Voilà. Ceci était mon billet argumenté sur le hurlement primaire de l’autre jour.

Je reprécise donc que dans un environnement parfait où tout le monde sait ce qu’il fait, où personne ne fait de bugs et où on n’a pas (trop) de contrainte de délais, le MVC et le n-tiers, c’est probablement fantastique.

Mise à jour du blog

Hop, le blog passe en Dotclear 2, j’en profite pour changer de thème (le nouveau s’appelle Deluxe Pron, ça ne s’invente pas), par contre la photo du muffin est de Pierre (mais l’œuf au plat, de moi). J’en profite aussi pour le déplacer du serveur Traduc qui m’a hébergée pendant tout ce temps pour le mettre sur mon serveur na moi que j’ai.

Voili voilou.