28 mars 2011

Liquibase et bdd distante

Toujours dans le cadre du développement agile, je voudrais vous parler (assez rapidement) d'une librairie open-source que nous utilisons (dans notre société) pour mettre à jour et suivre l'évolution des bases de données de nos applications : Liquibase.

Cette librairie est utilisée comme plugin de Grails (notre framework de développement d'application) pour mettre à jour nos bases de données (Postgresql - mais n'importe quelle base de données est supportée). Il est possible également de l'utiliser en ligne de commande (avec l'aide de Maven).

Chaque mise à jour fait l'objet d'un "changelog file" (structure XML) : le fichier est enregistré dans la base avec son checksum. A chaque exécution, les "changelogs" sont exécutés dans l'ordre, une vérification du checksum permet de s'assurer qu'il n'y a pas eu modification depuis leur enregistrement précédent dans la base.

Cette librairie est honnêtement d'une redoutable efficacité. Nous sommes tombés cependant sur une petit os ... qu'on a compris et dont je voulais vous faire part ...

Lors d'un récent changement de configuration (à savoir mise à jour de bases non plus locales mais distantes - sur un autre serveur), nous avons eu la désagréable surprise de voir que l'exécution de Liquibase plantait :
No X11 DISPLAY variable was set, but this program performed an operation which
requires it.
at java.awt.GraphicsEnvironment.checkHeadless(GraphicsEnvironment.java:159)
at java.awt.Window.(Window.java:407)
at java.awt.Frame.(Frame.java:402)
at java.awt.Frame.(Frame.java:367)
at javax.swing.SwingUtilities$SharedOwnerFrame.(SwingUtilities.java:1731)
at javax.swing.SwingUtilities.getSharedOwnerFrame(SwingUtilities.java:1808)
at javax.swing.JOptionPane.getRootFrame(JOptionPane.java:1673)
at javax.swing.JOptionPane.showOptionDialog(JOptionPane.java:846)
at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:779)
at javax.swing.JOptionPane.showConfirmDialog(JOptionPane.java:741)
at liquibase.SwingUIFacade.promptForNonLocalDatabase(SwingUIFacade.java:15)
La seule chose qui avait changé était l'emplacement des bases ... Curieux que l'on nous parle d'interface graphique.

En cherchant sur Internet, j'ai fini par découvrir que dans le cas de bases non-locales, Liquibase pose une question (du genre : attention, ce n'est pas une base locale que vous allez mettre à jour, vous confirmez ?) ... sauf que c'est une jolie boite de dialogue qui est sensée s'afficher (je suppose, mon environnement est un REDHAT sans serveur X11).
Et, comme toute application bien faite, il y a possibilité de paramétrer Liquibase pour qu'il ne nous pose pas la question.

C'est là que ça se gate : le paramètre visiblement utilisé, " promptForNonLocalDatabase" qu'il faut mettre à false pour ne pas avoir la question, n'a pas le résultat escompté ...

En lisant le code, certains ont trouvé : ce n'est pas "promptForNonLocalDatabase" mais " promptOnNonLocalDatabase" respectivement utilisé en ligne de commande et par le plugin ...

La question est de savoir pourquoi un même paramètre (même effet) porte un nom différent selon l'environnement d'exécution. Peut-être que Nathan Voxland, développeur à l'origine de Liquibase pourrait nous le dire ....

(Voir http://http://www.liquibase.org/fr/home)

22 mars 2011

Et la ligne dans tout cela ?

Certains d'entre vous se disent certainement qu'à force de faire de la cuisine et proposer des plats qui ne sont, mine de rien, pas dénué de poids calorique, je dois grandir de tour de taille de façon inexorable ...

En fait, je fais attention ...

et si l'attention me fait défaut de temps en temps (il faut bien se faire plaisir, et la cuisine est là pour cela), surtout après la période froide que nous avons passée, période propice aux plats un tantinet gourmands, je me rattrape de plusieurs manières.

La première, je vous la révèle aujourd'hui :

je consomme assez régulièrement une tisane "minceur" qui a pour vertu principale d'être dépurative. Cette tisane, constituée exclusivement de produits naturels, permet à l'organisme d'être épuré. Cela me permet de garder la ligne sans faire réellement de régime.

Vous pouvez trouver cette tisane à cette adresse.

Je vous ferais part de l'autre manière un peu plus tard, soyez patient !

Entrée : cassolettes de saumon et ravioles

Cette petite recette pas compliquée du tout m'a valu quelques "super bon", "ta recette, c'est quoi" lors de la venue de mes amis habitant l'Ardèche.

Les ingrédients sont :
- du pavé de saumon,
- des ravioles,
- de la crème liquide
- de l'aneth.

Pour ceux qui ne connaissent pas, la raviole est une spécialité du dauphiné, sorte de ravioli, farcis avec un mélange de fromage de chèvre et herbes. Vous trouverez quelques infos sur ce site.

Beurrer les petits plats individuels. Disposer au fond de chacun d'eux des petits morceaux de saumon de façon à en recouvrir le fond.

Disposer les ravioles (détachés les uns des autres) sur le saumon de façon à les couvrir.

Arroser abondamment de crème liquide de façon à ce que les ravioles "trempent".

Parsemer d'aneth.

Passer au four chaud (180 ° / Th. 6) pendant 15 min.

Et servir chaud !

21 mars 2011

Et si vous évitiez le pire ... Sauvegardez !

Le tout numérique a du bon :

on fait une photo superbe haute résolution de son dernier né ou une vidéo du grand qui attaque le vélo sans les roulettes.
En famille, remplaçant la traditionnelle séance diapo ou l'épluchage des albums photos , on regarde les photos et les vidéos stockées sur le PC.

Et puis un jour, l'ordinateur est volé ou bien il ne démarre pas, le gzig-gzig ou le tac-tac du disque dur faisant redouter le pire ... et là, c'est le drame ... Les photos, les vidéos, les documents, perdus ...

Longtemps resté sans sauvegarde de mes données, je me suis quand même résolu à m'équiper d'un disque dur "portable" :
Léger, économe en alimentation électrique (il est auto-alimenté), reconnu par n'importe quel appareil disposant d'une prise USB, et pouvant stocker un très, très grand nombre de photos, vidéos ou documents en tout genre, il est et doit être le compagnon de vos souvenirs ...

Vous retrouverez plus de détail à son sujet en cliquant ici.

Ne prenez pas de risques, dupliquez !

20 mars 2011

SCRUM : méthode agile de développement

Dans les développements informatiques, il n'est pas rare de constater quels dérapages dans les délais (c'est un doux euphémisme en fait ...).

On assiste trop souvent à un phénomène de spirale infernale qui combine, produit "presque fini", retard dans les nouveaux développements car reprise des anciens, mécontentement, accentuation de la pression, développements bâclés pour rentrer dans les nouveaux délais ...

Afin de permettre aux équipes de travailler dans la sérénité, aux chefs de projets de pouvoir mieux planifier et exercer un contrôle permanent sur les développements livrés, une méthode est née : SCRUM.

Méthode mise en place dans la société dans laquelle je travaille, elle permet de fournir plus vite des produits satisfaisants pour les utilisateurs tout en assurant aux développeurs une meilleure qualité de travail (environnement, cadre).

Notre ScrumMaster s'est appuyé en outre sur le livre suivant :



Je vous le recommande.

Sa lecture permet de mieux comprendre les intérêts de cette méthode, de son impact sur le travail des équipes et donne les différentes étapes de sa mise en application au sein d'une équipe de développement.

Il m'a donné envie de cuisiner ...


Ce cuisinier originaire de Rodez, Cyril Lignac, m'a toujours étonné ...

Par sa facilité déconcertante à montrer que la cuisine, même de tous les jours, n'est pas réservée à ces dames, il en a mis des hommes aux fourneaux, dont moi ...

Les garçons vont me dire "pas le temps, j'sais pas faire, j'ai pas envie, c'est pas mon job à la maison, j'en ai déjà assez à faire" ...

Bien que d'accord sur certains points, j'avoue que présenter à ses convives un petit plat que l'on a fait soit même, avec ses petites mains, est un plaisir dont je ne me lasse pas.

Aussi, pour commencer à vous familiariser, messieurs (allez mesdemoiselles, mesdames, vous pouvez aussi !) à une cuisine rapide et sympa à faire, je vous conseille son premier livre :

Oui, chef !

(issu de son émission qui n'existe plus) dans lequel j'ai trouvé des recettes sympas, des trucs inédits pour l'apéro.

Alors, si votre chère et tendre n'a pas envie de cuisiner pour vos potes et qu'elle vous demande si vous ne voulez pas vous en occuper, vous pouvez lui répondre :

Oui, chef !

(Entre nous, ça marche aussi pour vous faire accepter définitivement de vos futurs beaux parents !)