Vie du blog

Billets concernant la vie du blog (mises à jour, pauses en raison de vacances).

Aliénor Courtine

Te Deum

Oyez ! Oyez !

Ce mercredi 16 mars de l’an de grâces 2011, vers 11h, ma femme et moi avons fini l’implémentation que nous préparions depuis 9 mois :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class HuitiemeMerveilleDuMonde implements Bebe {
 
    @Override
    public String getNom() { return "Courtine"; }
 
    @Override
    public String getPrenom() { return "Aliénor"; }
 
    @Override
    public Sexe getSexe() { return Sexe.FILLE; }
 
    @Override
    public double getTaille() { return 48.0d; }
 
    @Override
    public double getPoids() { return 3.060d; }
}

Selon la formule consacrée, « la mère et l’enfant se portent bien », et se remettent tranquillement de leurs émotions à la maternité. Pour sa part, le père est aux anges, et a hâte de retrouver tout le monde demain !

Notre petite Aliénor en image :

Aliénor Courtine

Aliénor Courtine

Seule petite ombre au tableau : l’implémentation dans sa version 1.0 va sans doute souffrir de bugs à corriger, tels que des appels intempestifs de « réveillerPapaEnPleineNuit()« , « refuserDeDormir()« , etc.

Le temps de pouponner bébé corriger ces quelques bugs, je risque d’être à nouveau un peu distant de ce blog dans les prochaines semaines.

Revue de presse…

L’emménagement s’est bien passé, et la nouvelle Freebox est arrivée beaucoup plus vite que prévue. Cependant, nous sommes toujours occupés à finir les petits travaux d’installation qui ne me laissent pas beaucoup de temps pour écrire, en particulier à cause des préparatif pour l’implémentation d’ici un mois de l’interface suivante :

1
2
3
4
5
6
7
8
9
10
11
12
public interface Bebe {
 
  public String getNom();
 
  public String getPrenom();
 
  public Sexe getSexe();
 
  public double getTaille();
 
  public double getPoids();
}

A défaut d’avoir le temps d’écrire un article de fond, voici donc en vrac une revue rapide de ma veille de ce mois de janvier…

LibreOffice vs OpenOffice

C’est finalement LibreOffice qui a sorti le premier sa version 3.3.0, ce à quoi Oracle a répondu quelques jours plus tard avec la même version de sa suite. Après un test rapide de ces deux versions, la différence de fonctionnalités n’est pour l’instant pas flagrante. OpenOffice étant beaucoup plus agréable graphiquement, je vais donc rester sur la suite d’Oracle en attendant la suite des évènements…

Hudson vs Jenkins

Deuxième fork, encore une fois avec un produit d’Oracle, encore une fois pour des différents sur la gouvernance du projet. C’est la solution d’intégration continue Hudson qui a été forkée par sa communauté (et son fondateur, Kohsuke Kawaguchi). Comme pour OpenOffice, Oracle décide de poursuivre de son côté le développement d’Hudson, avec le soutien de Sonatype. Pour ma part, j’ai décidé de « switcher », et de suivre le projet Jenkins.

Play Framework

La version mineure 1.1.1 de Play Framework est parue ! Mais la grande évolution, c’est la version 1.2 prévue pour mars. Jusqu’à maintenant, lorsqu’on voulait ajouter une librairie à un projet Play, il fallait la mettre dans le répertoire « lib », et donc commiter celui-ci avec le reste du projet.

Habitué aux projets Maven, où les dépendances sont gérées dans un unique fichier de configuration (et donc où les binaires de ces dépendances ne sont pas mis en gestion de configuration), je n’appréciait pas ce fonctionnement de Play, malgré ses autres qualités.

Or, avec la version 1.2 qui arrive, on va avoir un fonctionnement similaire à celui de Maven, où on va pouvoir définir des dépôts et lister les dépendances dans un fichier de configuration.

Paris JUG

Lundi 28 février aura lieu à la cité universitaire le 3ème anniversaire du Paris JUG : au programme, « siffler en travaillant » ! Et tant qu’on est dans l’annonce d’évènements Java, les 26 et 27 mai auront lieu au Grand Rex le « What’s Next Paris?« .

Software craftmanship

Le « software craftmanship », c’est le concept à la mode (avec les TDD, Scrum, et autres DevOps). Sur ce sujet, je tenais à signaler le dernier billet de Nicolas Martignole, auquel j’adhère totalement.

Voeux de silence

Comme de coutume, je vous souhaite à tous mes meilleurs voeux pour 2011 !

Et je profite de ces voeux pour expliquer le titre de ce post : depuis maintenant plus de 15 jours (et certainement pendant au moins tout le mois de Janvier), je vais délaisse ce blog. En effet, nous avons profité de cette fin d’année 2010 pour déménager dans un appartement un peu plus grand mais un peu plus loin de Paris (heureusement encore accessible par les transports en commun). Outre l’attente de notre nouvelle Freebox qui oblige à suivre l’actualité par Galaxy-S interposé, la priorité des soirées est consacrée au déballage des cartons et à l’aménagement…

Afin de bien commencer l’année, voici deux bons « bêtisiers » de fin d’année trouvés récemment :

Perles complémentaires

Comme j’aime bien le concept du bêtisier, voici un petit complément d’extraits de code que j’ai eu l’occasion de lire cette année.
Un tout nouveau design pattern, le « Don’t miss this exception ! » :

1
2
3
4
5
6
7
try {
    // code...
} catch (SQLException e) {
    e.printStackTrace();
    LOGGER.error("Exception :" + e.getMessage());
    LOGGER.error("SQL Exception", e);
}

Toujours dans la gestion d’exceptions, voici le « quoi qu’il arrive, c’est pas moi mais la base de données » :

1
2
3
4
5
try {
    // code...
} catch (Exception e) {
    throw new SQLException(e.getMessage());
}

Passons maintenant à la suite de la série « réinvention de la roue carrée« , avec l’obtention de la date du jour au format français « jj/mm/aaaa » :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static String getCurrentDate() {
    Date date = new Date();
    Calendar cal = Calendar.getInstance();
    cal.setTime(date);
    int year = cal.get(Calendar.YEAR);
    int month = cal.get(Calendar.MONTH) + 1;
    int day = cal.get(Calendar.DATE);
    String yearStr = Integer.toString(year);
    String monthStr = Integer.toString(month);
    String dayStr = Integer.toString(day);
    if (monthStr.length() < 2) {
        monthStr = "0" + monthStr;
    }
    if (dayStr.length() < 2) {
        dayStr = "0" + dayStr;
    }
    return dayStr + "/" + monthStr + "/" + yearStr;
}

Je vous épargne la méthode « getCurrentHour() » de ce même projet, basée sur le même concept. De même, je ne copierai pas ici la méthode « validateDate()« , dont le but est de vérifier qu’une chaîne de caractères représente une date valide dans ce même format (elle fait 62 lignes…).