Affichage des articles dont le libellé est technique. Afficher tous les articles
Affichage des articles dont le libellé est technique. Afficher tous les articles

09 février 2012

Obsolescence programmée : à votre bon coeur !

L'obsolescence programmée est une invention "géniale" imaginée par les industriels, tous secteurs confondus, pour assurer un certain roulement de leur production.

Dans le secteur qui nous intéresse ici, l'informatique, on dira que nous détenons le pompon : combien d'entre nous se sont entendus dire "votre machine a 5 ans, faudra penser à la changer ...".

Et, encore, ici, je parle d'ordinateur, dont la durée de vie n'est pas programmée explicitement sur la notice. A un détail près : le disque dur, excusez du peu, est "prévu" pour tourner tant de temps (cela est, en général, exprimé en nombre de rotations).

En fait, je pense plus à un périphérique qui est un gouffre à lui tout seul : l'imprimante.

Qui n'a pas pesté contre les cartouches trop chères, qui sèchent toutes seules si on ne les utilise pas, qu'il faut changer quand l'imprimante le demande (même si elles ne sont pas vides complètement) au risque de rien pouvoir imprimer.

Même les imprimantes sont "programmées" : elles sont prévues pour éditer un certain nombre de documents, puis, s'arrêtent.

Je vous engage à regarder ce document sur Youtube : Prêt à jeter.

On y apprend que les constructeurs d'imprimantes (EPSON dans l'exemple) ont implanté dans leurs matériels de "vulgaires" compteurs de copie.
Quand on passe le nombre maximum de copie, l'imprimante s’arrête, évoquant des problèmes matériels, des pièces à changer, etc ...

Ces compteurs sont, physiquement, des EEPROMs, implantés sur la carte mère de l'imprimante et paraissent inaccessibles à l'utilisateur lamba ...

Sauf pour un petit génie, russe, qui a créé un logiciel permettant, sans manipulation compliquée, de connaître l'état de ce compteur et cerise sur le gâteau, de le "reseter".



On trouve son utilitaire pour des imprimantes ESPON Stylus uniquement, sur son site : http://www.ssclg.com/epsone.shtml

Vous trouverez sur ce site la liste des imprimantes supportées, l'outil à télécharger ... et cela redonnera à votre imprimante une nouvelle vie ... pas une nouvelle jeunesse par contre !

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)