• Quand est-ce qu'on change d'heure ?

    clock daylight

    C’est assez facile à retrouver. Nous passerons à l’heure d’été le dernier dimanche de mars, à 2h00, puis nous repasserons à l’heure d’hiver le dernier dimanche d’octobre, à 3h00.

    Ce qui m’intéresse c’est que mon code puisse connaitre cette information. Et comme je veux gérer ça dans mon backend en Java, voyons voir ce que les APIs du JDK proposent.

    TLDR Toutes les informations sont disponibles via des méthodes publiques depuis le JDK 8, dans le package java.time.

  • Passer des arguments au build de Docker

    Docker Moby

    Depuis quelques années, je gère un repository sur GitHub pour que chacun puisse faire un build à partir du code source de JBoss EAP. Récemment, j’ai voulu automatiser ce build avec Docker, sur plusieurs systèmes (Debian, CentOS, Alpine), pour plusieurs versions du JDK (8 et 11) et pour plusieurs versions de JBoss EAP.

    C’est là que j’ai découvert la possibilité d’utiliser des arguments dans Dockerfile et de les passer en option de docker build. Ainsi, je peux choisir les versions du JDK et de JBoss EAP au lancement du build :

    ~# docker build --build-arg JDK_VERSION=8 --build-arg EAP_VERSION=7.2.3     \
                    --tag hasalex/eap:7.2.3_jdk8 .

    Voyons pourquoi et comment j’en suis arrivé à ce résultat…​

  • Combien de temps dure une semaine ?

    Semaine

    Tout le monde sait qu'une semaine dure 7 jours ! Et même en Java, c’est simple à vérifier.

    LocalDate start = LocalDate.parse("2000-01-01");
    System.out.println(
        ChronoUnit.DAYS.between(start, start.plus(1, ChronoUnit.WEEKS))
    );
    // => 7 jours

    Si on prend un peu de recul, on peut se rappeler que le calendrier révolutionnaire français avait une semaine de 10 jours. Ça prouve que la durée de 7 jours est arbitraire et qu’il n’est pas exclu que des calendriers s’en éloignent. Et quand on parle de la durée d’un mois ou d’une année, les exemples sont plus faciles à trouver avec les calendriers lunaires.

    Voyons comment ça peut se traduire pour un développeur Java…​

  • J'aime pas les custom repositories

    Spring logo

    On parle de Spring Data JPA, dont le but est de simplifier le développement de requêtes JPA. On y implémente un accès à une base de données relationnelle en déclarant quelques méthodes aux noms bien choisis dans des interfaces, ou en ajoutant des requêtes JPQL via des annotations.

    Bref, avec les repositories de Spring Data JPA, on ne fait plus de code. Sauf si ce qui est proposé en standard ne suffit pas et dans ce cas il faut faire des custom repositories. C’est précisément ça que je n’aime pas.

  • Comment j'ai ralenti mon réseau local

    Loading…​

    En 2018, je présentais les avantages du protocole HTTP/2 en terme de temps de chargement des pages Web. Ma première démo reprenait un classique : comparer le temps de chargment d’une image scindée entre HTTP/1 et HTTP/2. On la trouve par exemple sur le site d’Akamai.

    Pour éviter le risque avec les accès réseaux, il fallait qu’elles soient en local alors que pour être visuelles, il faut de la latence. Pour résoudre cette contradiction, j’ai choisi d’utiliser des conteneurs Docker et d’ajouter volontairement de la latence au niveau du réseau virtuel.