Bonjour,
J'ai décidé de passer par Feedburner pour les flux RSS/Atom aussi pouvez vous faire migrer vos pointeurs vers http://feeds2.feedburner.com/JavaInTheAlps.
Bonne journée
Affichage des articles dont le libellé est tips. Afficher tous les articles
Affichage des articles dont le libellé est tips. Afficher tous les articles
jeudi 12 mars 2009
mercredi 26 novembre 2008
Le retour des Exigence non fonctionnelles

On voit bien qu'après la première phase d'adoption des méthodes agile, arrive le temps de la maturité et le passage à des 'gros' projets et les questions que cela soulève. En gardant l'esprit ouvert et en restant souple on passera ce cap lui aussi alors soyons Agiles.
NdT: Sinon j'ai apprécié le terme contrainte plutôt qu'exigence non-fonctionnelle que je trouve un peu pataud.
lundi 27 octobre 2008
Qui apporte la glue technique sur un projet Agile ?

Un petit billet que m'a inspiré l'article suivant:
Who plays the role of technical producer on Agile teams?.
Ce n'est pas sans rappeler la conversation que j'avais eue avec Hervé. Lorsque je lis de nombreux articles sur l'Agilité et ses corolaires je me pose souvent la question "Mais qui s'occupe de l'aspect technique de l'introduction de l'Agilité dans l'équipe ?". On a des coaches agiles, des scrum masters, ... mais qui valide que l'équipe applique correctement le TDD ? Qui vérifie la qualité du code ?
Certains me répondront surement que c'est là la responsabilité de l'équipe et j'en conviens tout à fait. Mais si l'équipe doit, en plus d'apprendre à se gérer elle-même, mettre en oeuvre des bonnes pratiques qui sont tout sauf évidentes (le tests first par exemple, l'intégration continue, les mesures de qualité de code, l'analyse statique, etc.) elle ne s'en sortira pas bien. C'était d'ailleurs la conclusion d'Hervé (et je suis bien d'accord avec lui) : il faut un leader technique, pendant du coach agile, sur les projets agiles surtout dans les premières mises en oeuvre de l'agilité par une équipe.
En bref, pour paraphraser l'article du début, avoir le meilleur groupe de musique du monde ne suffit pas, il faut aussi un bon producteur.
jeudi 24 juillet 2008
Introduction à Hudson
Il y a quelques mois j'avais écrit une introduction à l'installation d'Hudson mais je n'arrivais pas à la partager sur ce blog :o(.
Ce matin j'ai eu une illumination et grâce à GoogleDocs la voici :
Mise en place de Hudson
Ce matin j'ai eu une illumination et grâce à GoogleDocs la voici :
Mise en place de Hudson
jeudi 10 avril 2008
Créer une référence JNDI sur une BasiDataSource
InitialContext ic = new InitialContext(); |
Java2html |
mardi 5 février 2008
Groovy et Jonas
J'ai enfin réussi à faire comprendre l'intérêt de l'intégration continue et d'un outil comme Hudson auprès de mes voisins. Mais tout n'était pas si simple :o(( car alors on m'a gentiment expliqué qu'ici on utilise JOnAS.
Et là surprise JOnAS utilise ASM 1.5.3 qui est fortement incompatible avec ASM 2.2 utilisé par Groovy et donc Hudson.
Pour que tout fonctionne bien il faut ajouter un fichier jonas-web.xml dans le répertoire WEB-INF d'Hudson avec le contenu magique suivant :
J'imagine que cela s'applique aussi pour Grails.
PS: voici la jolie exception que l'on récupérait
Et là surprise JOnAS utilise ASM 1.5.3 qui est fortement incompatible avec ASM 2.2 utilisé par Groovy et donc Hudson.
Pour que tout fonctionne bien il faut ajouter un fichier jonas-web.xml dans le répertoire WEB-INF d'Hudson avec le contenu magique suivant :
<?xml version="1.0" encoding="ISO-8859-1"?>
<jonas-web-app xmlns="http://www.objectweb.org/jonas/ns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.objectweb.org/jonas/ns
http://www.objectweb.org/jonas/ns/jonas-web-app_4_0.xsd">
<java2-delegation-model>false</java2-delegation-model>
</jonas-web-app>
J'imagine que cela s'applique aussi pour Grails.
PS: voici la jolie exception que l'on récupérait
2008-02-05 09:47:36,929 : StandardContext.filterStart : Exception starting filter authentication-filter
java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
at org.codehaus.groovy.classgen.AsmClassGenerator.visitClass(AsmClassGenerator.java:213)
at org.codehaus.groovy.control.CompilationUnit$10.call(CompilationUnit.java:691)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:885)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:436)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:289)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:488)
at groovy.lang.GroovyShell.parse(GroovyShell.java:500)
at groovy.lang.GroovyShell.parse(GroovyShell.java:480)
at groovy.lang.GroovyShell.parse(GroovyShell.java:539)
at hudson.util.spring.BeanBuilder.parse(BeanBuilder.java:133)
at hudson.security.HudsonFilter.init(HudsonFilter.java:62)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:223)
Inscription à :
Articles (Atom)