Fri, Nov 30, 2007
Nous avons récemment installé et configuré
Continuum. Comme nous démarrons
avec, nous avons configuré nos projets pour recevoir systématiquement un
mail lorsque le build est terminé, qu’il ait réussi ou non. Nous voulons
en effet nous assurer que le build est bien effectué par ce biais. Une
fois que nous aurons rôdé le processus, dans quelques mois par exemple,
je pense que nous modifierons effectivement la configuration pour rendre
le serveur d’intégration moins bavard…
Voici le bloc qui permet de dire au serveur d’intégration d’envoyer les
mails dans tous les cas. À mettre dans le pom.xml de votre projet :
<ciManagement>
<system>continuum</system>
<url>http://mvnrepo.mipih.fr:8080/continuum</url>
<notifiers>
<notifier>
<type>mail</type>
<sendOnError>true</sendOnError>
<sendOnFailure>true</sendOnFailure>
<sendOnSuccess>true</sendOnSuccess>
<sendOnWarning>true</sendOnWarning>
<configuration>
<address>notre-adresse@mipih.fr</address>
</configuration>
</notifier>
</notifiers>
</ciManagement>
Dans tous les cas, j’ai dit !
Mais en fait, même comme ça, continuum ne vous enverra pas toujours la
notification. En fait, il ne l’enverra que si l’état de la construction
de votre projet a changé depuis la dernière fois. De base, donc,
continuum n’enverra pas de mail si dexu builds successifs ont réussi.
J’ai donc cherché à savoir comment configurer continuum pour envoyer le
mail inconditionnellement à la fin de chaque build. Comme je n’ai pas
trouvé cette information dans la documentation de continuum, j’ai posé
la question sur la liste de
diffusion.
J’ai eu la réponse d’Emmanuel Venisse, le projet lead de continuum :
You can configure “alwaysSend to true in
WEB-INF/classes/META-INF/plexus/application.xml in the mail notifier
component descriptor.
By default, we don’t send notifications if the state doesn’t change to
not spam users.
Emmanuel
Dans continuum 1.0.3, c’est là :
$CONTINUUM_HOME/apps/continuum/conf/application.xml. Et
effectivement, après modification du bloc <alwaysSend/> à true du
composant mail notifier comme suit, ça marche !
<!--
The mail notifier
-->
<component>
<role>org.codehaus.plexus.notification.notifier.Notifier</role>
<role-hint>mail</role-hint>
<implementation>
org.apache.maven.continuum.notification.mail.MailContinuumNotifier
</implementation>
<requirements>
<requirement>
<role>org.codehaus.plexus.velocity.VelocityComponent</role>
</requirement>
<requirement>
<role>org.apache.maven.continuum.store.ContinuumStore</role>
</requirement>
<requirement>
<role>org.codehaus.plexus.mailsender.MailSender</role>
</requirement>
<requirement>
<role>org.apache.maven.continuum.configuration.ConfigurationService</role>
</requirement>
</requirements>
<configuration>
<from-mailbox></from-mailbox>
<from-name></from-name>
<timestamp-format>EEE, d MMM yyyy HH:mm:ss Z</timestamp-format>
<includeBuildResult>true</includeBuildResult>
<alwaysSend>true</alwaysSend>
</configuration>
</component>
En espérant que ça en aide certains…
Thu, Nov 29, 2007
Gavin King, le créateur du projet Hibernate,
dont le hobby est maintenant devenu
Seam, a récemment publié un billet
intéressant sur ce
sujet.
Souvent, la question se pose : quelles méthodes doit-on modéliser dans
un objet métier ? Concrètement, où dois-je mettre mon code métier ? Par
exemple, est-ce que la méthode de sauvegarde d’une facture doit se
trouver dans l’objet Facture lui-même ? Si je veux récupérer le nombre
de clients d’une facture, dois-je mettre la méthode dans la Facture,
etc. ?
Gavin a formulé d’une façon très concise une règle à laquelle je
souscris totalement :
the domain model (entity classes) are the most reusable classes in
my codebase
[…]
In particular, I would never write code that calls out to external
services, or accesses the database, or calls an EJB/Seam/Spring
component in my entity class. I want my domain model to be completely
self-contained!
So anytime you find yourself wishing that entities supported
injection, or find yourself writing a JNDI lookup in a method of an
entity, please consider that your domain model is no longer
self-contained, and will be less reusable in different execution
environments.
Rien de plus à ajouter.
Sat, Nov 24, 2007
Depuis quelques jours, j’avais des problèmes à l’utilisation de gmail.
Je n’ai pas fait le rapprochement tout de suite. La page principale de
la boite de réception s’affichait, mais cliquer sur un message
n’affichait jamais ce dernier. Certaines fois, même, Firefox m’affichait
le message indiquant qu’un “script (javascript) ne répond pas”…
Après réflexion, je me suis demandé si adblock plus, l’extension
anti-pub pour firefox que j’ai installée ne pouvait pas être en cause ?
Bingo avec Google.
Je n’ai par contre pas compris pourquoi les billets comme
celui-ci
dataient déjà de 2005, alors que je suis persuadé que ça fait une ou
deux semaines au moins que j’utilisais déjà conjointement adblock plus
et gmail sans soucis. Peut-être une mise à jour d’adblock plus récente
que j’aurais faite sans y faire attention ?
Bref, la solution est simple. Il suffit d’ajouter mail.google.com à la
liste blanche. Pour faire
ceci, on peut se référer au billet en lien ci-dessus ou à la
documentation d’adblock plus. En
fait, pour ajouter un filtre à la liste blanche, il faut simplement
préfixer le filtre par @@ (enfin, simplement, faut le savoir, quand
même…).
Une fois ceci fait, tout roule normalement à nouveau.
Thu, Nov 22, 2007
Via Prendre un
café,
un petit test rigolo sur vos connaissances HTML4 :
44
Pas trop mal. J’ai honte d’avoir oublié de citer acronym, abbr que j’ai
déjà pas mal utilisé, et toutes les balises des formulaires ;-).
Thu, Nov 15, 2007
N’hésitez pas à prendre le métro, il fonctionne parfaitement. Les bus
étaient, paraît-il, moins nombreux le premier jour, mais pratiquement à
100% aujourd’hui…
Allez, encore un peu de patience, la réforme va finir par passer :-).
Fri, Oct 26, 2007
Je découvre avec une relative stupeur que la taille maximale des noms de
tables, de colonnes, de contraintes est limitée sur Oracle à 30
caractères seulement !
Imaginez que vous ayez une contrainte d’intégrité référentielle entre
deux tables :
- PRODUIT
- CATEGORIE_PRODUIT
Par convention, on préfixe souvent ces contraintes de clés étrangères
par FK (voire C_FK par exemple, pour Constraint et Foreign Key). Ça
me donne quelque chose comme ça :
- FK_PRODUIT_CATEGORIE_PRODUIT
Là, j’ai 28 caractères, je passe limite. Si je rajoute “C_”, je suis à
fond…
Imaginons maintenant que votre fonctionnel vous indique qu’il y a une
relation de réflexivité sur CategorieProduit. Les catégories de produit
forment en effet un arbre avec des catégories, des sous-catégories, etc.
Ben là, vous oubliez le nommage ci-dessus :
- FK_CATEGORIE_PRODUIT_PRODUIT_CATEGORIE_PRODUIT, ça passe pas…
Autre cas, si vous avez deux relations entre deux mêmes tables. Par
exemple, Adresse et Client : un client peut avoir une adresse de
facturation et une adresse de livraison. En base, on doit donc retrouver
deux contraintes d’intégrité. La première idée qui vient est de
concaténer par exemple le rôle au nommage ci-dessus. Euuu, ça commence à
exclure pas mal de cas.
Franchement, à l’occasion du passage de la mise à jour de Oracle v10,
Oracle aurait pu supprimer ou au moins augmenter cette limitation
antédiluvienne !!! Pour la petite histoire, cette limitation n’existe
pas sur les autres SGBD que nous pouvons utiliser : HSQLDB, MySQL,
PostgreSQL… Je comprends mieux pourquoi les schémas d’entreprise sont
truffés de noms absolument incompréhensibles. L’auto-documentation du
nommage est impossible avec une limitation aussi importante.
À l’heure de l’auto-complétion omniprésente, il est courant d’avoir des
variables qui atteignent 30 caractères. Je ne dis pas qu’il faut
forcément des noms de variable à rallonge, mais si la longueur apporte
en clarté, en maintenabilité, en compréhension, ne vous en privez
surtout pas !
Très très déçu par Oracle sur ce coup là.
Wed, Oct 17, 2007
Sur le site de Tisséo, la RATP toulousaine, dirons-nous pour nos amis
parisiens :
Le 18 octobre
[…]
Le trafic du métro ne devrait pas être affecté.
J’essaierai donc de prendre le métro demain, sinon ce sera vélo ou moto.
Bon, en même temps, je n’ai que 6,5km de chez moi au boulot… Aaaah
Paris, je suis content de ne plus y être :-).
Mon, Sep 17, 2007
De A.B., Software IT Architect chez IBM, reçu chez nous aujourd’hui :
“Les multiples acronymes à deux ou trois lettres, c’est vachement bien
pour les commerciaux. Personne ne comprend rien et tout le monde est
d’accord ! Mais en dév, c’est chiant !”.
Thu, Sep 13, 2007
Seb, à un collègue :
Toi, t’es un HighGlandeur !
Une citation immortelle. Très bon ! :-) .
UPDATE : En train d’écrire ce billet, un collègue nouvellement arrivé
regarde mon écran et me demande : “Tiens !? batmat.net, tu connais ?”.
Moi : “Ben, euuu, comment ça ? Tu rigoles ? (comprenant et rougissant)
oui, euu, c’est mon blog…” Et là, comme dit Seb, érection molle
:-D .
Tue, Jul 24, 2007
Je les publierai bientôt en supprimant le nom de l’entreprise, mais j’ai
reçu un courrier d’excuses à propos de l’affaire que j’ai expliquée
l’année dernière en février (le billet du 8 février 2007).
Comme je suis en vacances et je paye cher mes accès au net, je verrai
plus tard pour trouver une solution plus propre (notamment pour les
permaliens vers le billet en question). J’ai en effet pour le moment
simplement mis le billet offline.
Sur ce, je retourne à la plage (bon, en fait, je déconne, il pleut là
:-)).