# Guide CNIL pour le RGPD appliqué dans le cadre de la Commande publique

Par Isabelle Guyot

Atol CD réalise une partie de ses activités comme prestataire ou sous-traitant dans le cadre contractuel des marchés publics. Ce dernier qualifie de manière spécifique la responsabilité de chaque acteur au regard du RGPD. Afin d’aider les acheteurs à définir les clauses relatives à la protection des données qui devront être insérées dans les contrats, la CNIL a publié le 2 juin un guide relatif à La responsabilité des acteurs dans le cadre de la commande publique. Il détaille notamment les enjeux liés à la qualification de « responsable du traitement », de « sous-traitant » ou de « responsable conjoint ».

# Qu’est ce que Symfony et pourquoi on l’aime chez Atol CD ?

Par Romain Levoyet

Symfony est un framework PHP très utilisé par notre équipe Web, Extranet et E-Commerce. Romain, responsable de ce pôle au sein d’Atol CD a rédigé un billet sur notre blog avec des chiffres-clé et la philosophie du framework ainsi que ses points forts et notamment, sa stabilité, sa pérennité et la sécurité.  

# ES2022

par Thomas Broyer

La version 2022 de notre standard annuel préféré (ECMAScript donc) a été approuvée. Au menu, comme toujours des choses qu’on a déjà souvent commencé à manipuler via Babel (ou équivalent) ou TypeScript, voire directement dans les navigateurs, puisque le processus de standardisation impose une phase de feedback via des implémentations :

  • Class Fields : syntaxe de définition, et potentielle initialisation, des champs publics ou privés, statiques ou non, dans les classes. Ça comprend aussi, par extension, les méthodes et les accesseurs privés (statiques ou non).
  • Ergonomic brand checks for Private Fields : la possibilité d’utiliser #field in obj pour tester la présence d’une propriété privée dans un objet (il fallait auparavant passer par une gestion d’erreur)
  • Class Static Blocks : comme son nom l’indique, des blocs d’initialisation statique des classes (static {}, comme on peut les trouver déjà en Java par exemple)
  • .at() : les objets indexables (tableaux, les chaînes de caractères, et TypedArrays) gagnent une méthode .at(), en plus de la notation [], qui accepte des indices négatifs notamment
  • Error Cause : les objets de type Error gagnent une propriété cause, utile quand une erreur est levée à nouveau avec un nouveau message par exemple (exactement comme getCause() en Java ou InnerException en .NET)
  • Object.hasOwn() : qui n’a pas déjà utilisé ou vu Object.prototype.hasOwnProperty() ? Cette nouvelle méthode statique est exactement équivalente, mais plus accessible.
  • RegExp Match Indices : les expressions rationnelles gagnent un nouveau flag (/d) qui permet ensuite de récupérer les indices des groupes capturés par l’expression (dans une nouvelle propriété indices)
  • Top Level Await : les modules peuvent utiliser await directement, sans avoir à passer par une fonction async (généralement appelée immédiatement, pattern connu sous le nom de IIFE, pour immediately invoked function expression)

Pour plus de détails, on pourra se tourner vers l’incontournable blog d’Axel Rauschmayer.

Au-delà du contenu de la spécification, on notera qu’elle a été publiée sous une nouvelle licence également, permettant notamment les travaux dérivés, et ainsi plus proches de la philosophie open source.

# jOOQ 3.17

par Thomas Broyer

La version 3.17 de jOOQ est sortie, avec déjà une version 3.17.1. Cette version est comporte essentiellement des nouveautés pour les variantes commerciales, mais la version open source n’est pas en reste :

  • jooq-postgres-extensions ajoute le support des RANGE (et CIDR, INET, etc.) Il fallait auparavant passer par des bindings personnalisés, ce qu’on avait déjà fait à Atol dans certains projets ; différence majeure : jOOQ introduit ici un type Range spécifique alors qu’on avait probablement tendance à utiliser le type Range de Guava, qui a plus de fonctionnalités.
  • jooq-jackson-extensions ajoute des converters pour les colonnes de type JSON ou JSONB pour les convertir depuis/vers des objets Java en utilisant Jackson. On pourra utiliser directement le JsonNode de Jackson ou, moyennant plus de configuration pour la génération de code, des objets spécifiques pour chaque colonne. Auparavant, le support de ces colonnes passait par des types spécifiques à jOOQ qui ne permettaient que de récupérer le JSON sous forme de texte, qu’il fallait traiter avec Jackson séparément.
  • de la même manière, il est possible de convertir les colonnes de type XML avec JAXB
  • pour les adeptes des ON CONFLICT … DO UPDATE avec Postgresql, la pseudo table EXCLUDED est désormais supportée nativement, et émulée pour MySQL et MariaDB.
  • le support des Reactive Streams et des coroutines Kotlin a été étendu/amélioré

Cependant, la version open source réclame désormais JDK 17 au minimum, ce qui peut être bloquant pour certains projets, les versions commerciales conservant la compatibilité avec JDK 11 et JDK 8.

# Ansible 6.0.0 

par Laurent Meunier 

C’est le mardi 21 juin 2022 que Red Hat a annoncé la disponibilité de Ansible en version 6.0.0. Pour rappel, Ansible est composé de deux projets : Ansible Community et Ansible Core. Ces deux projets suivent leurs propres cycles de sorties et ont leurs propres numéros de versions. Ainsi, Ansible 6.0.0 correspond en fait à la sortie de Ansible Community 6.0.0 et Ansible Core 2.13.

Prenons 2 petites minutes pour comprendre tout ça 🙂. La séparation en deux projets date du passage de la version 2.9 à la version 3.x. Avant la version 2.9, Ansible était un projet monolithique qui englobait les fonctionnalités de bases (le core) et les modules. Les modules ayant tendance à évoluer rapidement, Red Hat a décidé de séparer le projet Ansible en deux sous-projets : Core et Modules (qui se nomme maintenant Ansible Community). Ainsi, Ansible 6 est composé de Ansible Core en version 2.13 (qui est dans la continuité de la version 2.9) et Ansible Community en version 6.0.0.

Concernant cette nouvelle version, pas de changement majeur pour Ansible Core (en tout cas rien de notable pour une utilisation basique de Ansible). Les changements viennent surtout des modules, la nouvelle version de Ansible Community vient avec son lot de corrections, changements majeurs et mineurs, etc. Le changelog complet est beaucoup trop long pour être revu en détail. À noter que la documentation propose un “Porting Guide” pour aider à migrer vos playbooks vers Ansible 6.