• Windows file explorer :: invalid ZIP file

    TL;DR Windows file explorer sees a ZIP file as invalid if it contains at least one entry with a name greater than 260 characters. I am working on a small Kotlin application and one of its features is to download a ZIP file built from a set of JUnit report files. Here’s an extract from the piece of code to do it val byteArrayOutputStream = ByteArrayOutputStream() val zipFile = ZipOutputStream(byteArrayOutputStream) zipFile.

    Read more…
  • Covid19 Analysis

    The lockdown in France will end on Monday 11th May 2020 and I wanted to take a snapshot of the situation in France using a statistical analysis. To do this analysis, I used the software R. The data used in this article come from this Github project: OpenCOVID19 France. A big thanks to all its contributors. They aggregate data from the French Health Minister, Regional Health Agencies and Prefectures. The data contains the number of people infected, cured, hospitalized, in resuscitation, and dead.

    Read more…
  • Workshop Azure Pipelines

    I have been working with Azure Pipelines for some time and I would like to introduce it to you. Instead of describing it into a blog post, I made an online workshop to manipulate it. During this workshop, you will learn how to set up a CI pipeline to build a Maven / Java application and a NodeJs application. You will also discover Azure Pipelines features, such as pipeline caching, variables, parameters, and templating.

    Read more…
  • Add chaos in your network!

    Photo by American Public Power Association on Unsplash One of important rule in production is to never trust your network! There will always be problems and Netflix has clearly understood this statement by creating Chaos Monkey in 2011. In this article, we will focus on chaos in the network. For example to assert that: an application is resilient to network latency a website still offers a comfortable experience despite a limited bandwidth a distributed system cannot go into split-brain.

    Read more…
  • PostgreSQL Replication

    There are plenty of tutorials available online, which give step-by-step instructions to manage the replication of PostgreSQL clusters with Repmgr. Once the setup is complete, what is important to look for? How does your client handle failover? How to deal with a failed or unreachable standby node? How to reintegrate a failed or unreachable standby node? How do you monitor your cluster? Client Failover When your primary node goes down and a standby is promoted.

    Read more…
  • How to see and limit memory consumption of an application ?

    How to see and limit memory consumption of an application ?

  • Dockerize your integration tests

    Most of our applications have to talk to a database, a HTTP API, a message broker, a SMTP server, etc… And it's quite complicated to set up a real test environment with those components.

  • Builder Pattern, a first step to DSL

    When you are looking for an explanation of Builder pattern, you will probably find some articles all showing a class dedicated to creating an object. It's quite simple and we can go deeper with this pattern.

  • Migration from Junit 4 to Junit 5

    While working on my current project, I got some time to migrate from JUnit 4 to JUnit 5. Since JUnit 5 was released in September 2017, it's the right time to take a look at it.