Ludochaordic
Fantaisies programatico-ludiques

Bonnes pratiques Gitlab CI

À E-voyageurs Technologies, je travaille au sein d'une équipe en charge de l'usine logicielle, qui administre depuis plusieurs années une instance Gitlab self-hosted. Cet article contient quelques-unes de nos recommandations à l'intention des utilisateurs de notre Gitlab, ayant pour but à la fois améliorer les performances de leurs pipelines …

Read More

Live demo for Hesperides!

Today I finally took the time to put up a live demo website for Hesperides! https://hesperides.herokuapp.com Hesperides is an open source tool dedicated to configuration management: it stores applications properties and mustache templates for configurations files. It is strongly hierarchized based on few main concepts: modules, applications …

Read More

JSONP & exceptions with Spring web 4

Since Spring 4.1, it is really easy to enable JSONP on an API controller: @RestController @RequestMapping(value = "/") public class MyController { @ControllerAdvice static class JsonpAdvice extends AbstractJsonpResponseBodyAdvice { public JsonpAdvice() { super("callback"); // name of the query parameter to use } } @RequestMapping(value = "/", method = RequestMethod.GET) public MyAPIResult getStuff(...) { ... } } There is no RFC …

Read More

Analyse statique de code Java : Google Error Prone, Findbugs et PMD

Ce court article détaille comment mettre en place simplement 3 analyseurs de code statique avec Maven. Contexte Au sein de mon équipe à Voyages-Sncf, le nombre de composants Java est en train d'augmenter. Nous avons déjà toute une batterie de tests pour valider notre code, ainsi qu'un Sonar en place …

Read More

Battledev de RegionJobs : Python vs Java

En mars dernier, j'ai participé à la Battledev de RegionJobs. Et c'était super fun. Pour ceux qui ne connaissent pas, c'est une compétition de programmation en ligne, où l'on doit résoudre 5 questions de difficulté croissante en 2 heures. J'ai eu l'occasion d'y participer avec quelques collègues, et ça a …

Read More

Disabling error stack traces with SpringBoot, but only in prod

Simply add the following class to your project. It will be automatically registered at start-up if you use the @EnableAutoConfiguration annotation : @ControllerAdvice // Makes this the default behaviour of all controllers @ConditionalOnProperty(prefix = "app", name = "disable-default-exception-handling") class GlobalControllerExceptionHandler { @ExceptionHandler(Exception.class) // Catch any exception @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) // Returns an error code …

Read More

God I hate Java Regex API

Pourquoi, mais pourquoi faut-il 3 lignes en Java pour juste extraire un groupe d'une expression régulière qui "match" ??? Matcher matcher = Pattern.compile("o?k(b|i)s+").matcher("kiss"); matcher.matches(); assert matcher.group(1) == "i"; En Python: assert re.match("o?k(b|i)s+", "kiss").group(1) == "i …

Read More