[Angular] Running unit tests with Chromium in a Docker container

Running unit tests for front-end web applications require them to be tested in a web browser. While it’s not an issue on a workstation, it can become tedious when running in a restricted environment such as a Docker container. In fact, these execution environments are generally lightweight and do not contain any graphical environment.

One solution to work around this issue is to use a headless web browser designed for development purposes, like PhantomJS. While it’s an elegant solution for testing an application, it would be even better to test it directly in a web browser which will be used by the end-users in order to match real conditions of use, for examples Firefox or Chromium/Google Chrome. However, as mentioned above, it is needed to find a way to execute a regular web browser in a restricted environment.

Read more Development Angular, Chrome, Chromium, CI, Docker, WebApp

Improve the security of your online payments

I think it is obvious to say that the security of your online payments is critical if you don’t want to have an unpleasant surprise one day when checking your account statement. That’s why most banks have added a two-step authentification security process to their online payment system. That way, you have to confirm your online payment with a one-time password sent via text message or other method by your bank. However, not every website supports this feature, leaving you defenceless if someone steals your credit card information.

Read more Hacking and Security Payment, Credit Card

[ndh2k16] Hello Friend

Une des épreuves du wargame de la nuit du hack 2016 était de retrouver un code de validation à partir de cette image :

Fichier JPEG utilisé pour le challenge "hello friend" lors de la nuit du hack 2016

Read more Hacking et Sécurité, Stéganographie ndh2k16, Wargame, Write-up

Calcul des angles d'Euler avec un accéléromètre

Les angles d’Euler sont 3 angles qui permettent de décrire l’orientation d’un objet dans un espace tridimensionnel.

Si nous prenons par exemple un objet quelconque, le centre de masse \(m\) de cet objet est une coordonnée dans notre espace à 3 dimensions. Tout point dans un espace à \(n\) dimensions peut être atteint par \(n\) translations. Ainsi, le point \(m\) est atteint par 3 translations, quelque soit l’origine du repère.

De façon semblable à une coordonnée, une orientation dans cet espace tridimensionnel est obtenue par trois rotations. Ces rotations sont effectuées successivement dans un ordre arbitraire, chacune autour d’un des trois axes du repère. Cela revient à effectuer une rotation dans le plan formé par deux axes autour d’un troisième, et cela trois fois de suite.

Nous allons ici chercher à démontrer qu’il est possible de calculer les angles d’Euler (et donc l’orientation de l’objet) en utilisant uniquement un accéléromètre triaxial (c’est à dire 3 accéléromètres 1 axe montés orthogonalement). Pour rappel, un accéléromètre permet de mesurer l’accélération linéaire que subit un corps auquel ce capteur serait attaché.

La sortie de l’accéléromètre peut être modélisée de la façon suivante :

\[ \vec{a_{S}} = \left( \begin{array}{c} a_{Sx} \\ a_{Sy} \\ a_{Sz} \end{array} \right) = \vec{a_{B}} + R_{I}^{B} \vec{g} \]

Read more Physique Accéléromètre, Euler

[Docker] Votre script Python laisse anormalement la sortie standard vide

Lors de l’exécution d’un programme écrit en Python dans un conteneur Docker, il arrive régulièrement que la sortie standard reste anormalement vide :

$ docker logs my-app
$

La raison est généralement que par défaut, l’interpréteur Python utilise une mémoire tampon pour les écritures vers stdout. Les écritures sont donc différées et cela peut prendre un moment avant de voir apparaitre la moindre ligne d’écriture (selon la verbosité de votre programme).

Une solution est d’utiliser l’option -u lors de l’appel à l’interpréteur Python. Votre Dockerfile devra contenir une ligne ressemblant à ceci :

CMD ["python3", "-u", "my-app.py"]

Et ainsi :

$ docker logs my-app
It works !
$
SysAdmin Docker, Python