🇫🇷 Un clic réussi ne prouve pas l’accessibilité au clavier
L’article met en avant les faiblesses que nos tests automatisés peuvent avoir dès lors qu’il s’agit de valider l’accessibilité de nos applications.
🇫🇷 Comment j’évalue de nouveaux outils ?
Dans sa vidéo, Grafikart retrace le processus qu’il applique lorsqu’il souhaite tester un nouvel outil.
Pour moi, le point le plus marquant, parmi tout ceux évoqués, se situe à l’étape où il se forge son avis.
Il commence par concevoir son opinion de son côté, afin de ne pas être biaisé par celui des autres. Puis il va aller se confronter à des avis contraires au sien pour challenger sa conclusion.
C’est cette étape de confrontation que je vais tâcher d’appliquer dans mes prochaines découvertes.
🇫🇷 Le mot-clé satisfies en TypeScript : à quoi ça sert concrètement
Au travers d’exemples, l’article explique quand utiliser satisfies, comment le combiner avec const, le rôle de as et la différence avec la définition via const myprop: Type = ....
🇬🇧 Symfony 8.2
🇬🇧 Safer HTML in Translations
Twig se voit doter d’un nouveau filtre : trans_html
Ce dernier permet d’inclure de « pseudo balises » dans une traduction, qui seront remplacées à la volée par des balises HTML via un mapping fournit en argument du filtre.
Cela permet d’inclure par exemple, du gras ou encore des liens en plein milieu d’une traduction, sans avoir à utiliser raw qui peut laisser passer d’autres balises non voulues.
A noter que la nouvelle classe HtmlTranslator permet d’appliquer le même comportement côté PHP.
🇬🇧 JsonSchema Component
Une nouvelle classe Symfony\Component\JsonSchema\SchemaGenerator permet de générer des JSON Schema construit à partir de nos classes, tout en prenant en compte les attributs Validator et/ou Serializer ainsi que le typage des propriétés.
Pour affiner le comportement du générateur, il est possible d’utiliser 3 autres classes pour le configurer (Configuration et Dialect et Direction).
Au besoin, la méthode generateForParameters permet d’exposer uniquement le JSON traitant des paramètres.
🇬🇧 Signed Transports and Secret Rotation
Auparavant, l’obligation d’un message signé se faisait au niveau du handler. Cela est à présent déprécié, la configuration se faisant directement au niveau du transporteur.
De plus, au lieu d’avoir un seul secret dans kernel.secret, chaque fonctionnalité (messaging, firewalls, etc) aura la possibilité de définir son propre secret.
Il sera également possible de définir un tableau de secrets pour chacune de ces configurations. Le premier élément de la liste étant utilisé pour signer les nouveaux messages. Les autres étant utilisés pour valider une signature, si le premier secret ne le permet pas.
Cela permet ainsi de changer un secret sans impacter l’intégralité des fonctionnalités de l’application ou d’invalider les messages déjà envoyés et ainsi permettre une application progressive vers un nouveau secret.
🇬🇧 HTTP Trailers
Il peut arriver qu’un serveur retourne des HTTP Trailers. Il s’agit de headers envoyés après que le body de la réponse soit expédié. Symfony les prend à présent en compte et il est possible de les récupérer via la réponse une fois le contenu entier lu.
$content = $response->getContent();
$trailers = $response->getInfo('trailers');
A noter qu’il est possible de manipuler également les trailers via GuzzleHttpHandler.
🇬🇧 More MongoDB Integrations
MongoDB était déjà intégré à l’écosystème Symfony pour gérer les sessions et les locks.
Cette nouvelle version de Symfony ajoute deux nouvelles intégrations :
- cache de données
- gestion des queues messenger
A noter que :
- côté cache :
- Les tags sont stockés avec le document.
- Une seule requête delete suffit donc pour invalider intégralement un tag.
- côté messenger :
- Toutes les queues sont stockées dans une même collection.
- Un worker peut donc consommer plusieurs messages provenant de différents transports en une seule requête, au lieu d’une requête par queue.
- Pour cela, il suffit de lancer le worker en passant plusieurs fois l’option
--queues={queue-name}. - A noter qu’aucune priorité entre les queues n’est appliquée.