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

24 janvier 2012

OpacWeb : présentez vos livres différemment !

J'ai travaillé pendant une bonne dizaine d'année dans une société éditrice de logiciels de gestion de bibliothèques.
Un des modules principaux de ce genre de logiciel, qu'il soit client lourd (interface graphique en client-serveur) ou bien client léger (pages web) est l'OPAC.

L'Opac est l'acronyme de Online Public Access Catalog, un accès aux différents documents présents dans une bibliothèque.

Autant, par une recherche textuelle, on peut obtenir une liste de documents (un titre, un auteur, un éditeur, une petite image de la 1ère de couverture), autant on peut présenter de manière visuelle très spectaculaire le résultat de la recherche. Voyez plutôt :


Ce projet, initié par un petit groupe de programmeurs baptisé "Google Data Arts Team", s'appelle "WebGL Bookcase" : c'est une interface expérimentale pour les APIs Google Books.

Cette sublime interface n'est disponible que pour les navigateurs supportant la technologie WebGL (technologie, créée par Khronos Group permettant d'utiliser OpenGL dans un navigateur depuis un code JavaScript) et pour les ordinateurs dont les cartes graphiques supportent les pilotes OpenGL.

Alors, développeurs d'OPAC, c'est à vous !

Pour ceux qui utilise le navigateur Chrome, cliquez sur ce lien pour tester en direct.


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)

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.