46 liens privés
L'idempotence est un concept clé en informatique et en mathématiques, particulièrement crucial dans la conception de systèmes fiables. Une opération idempotente produit le même effet, peu importe le nombre de fois qu'elle est exécutée. Par exemple, soumettre un formulaire plusieurs fois ne devrait générer qu'un seul résultat, et une requête de paiement ne devrait débiter le compte de l'utilisateur qu'une seule fois, même en cas de réessais réseau. Pour implémenter l'idempotence, des techniques comme l'utilisation de jetons uniques, des verrous pessimistes ou optimistes, et des index uniques dans les bases de données sont employées. Ces méthodes assurent que les opérations répétées n'altèrent pas l'état du système de manière indésirable, garantissant ainsi la cohérence et la fiabilité des applications.
L'auteur commence par expliquer le fonctionnement du détecteur de pluie électro mécanique des années 70, et termine par l'explication du détecteur actuel, basé sur les infra rouges.
L'article explore les nouvelles capacités de la fonction attr()
en CSS, qui permet désormais d'utiliser des valeurs autres que du texte, comme des couleurs, des nombres, et des pourcentages. Cette fonctionnalité, bien que non supportée par tous les navigateurs, offre une flexibilité accrue pour styliser des éléments HTML en fonction de leurs attributs. L'auteur présente divers cas d'utilisation, tels que l'assignation de colonnes dans une grille CSS, la gestion des délais d'animation, et la définition de couleurs dynamiques, tout en soulignant les avantages en termes de séparation des préoccupations et de réduction des conflits CSS.
Résumé de cet excellent article : les entreprises ne sont pas nos amies pour la protection de la vie privée, et il faut réellement privilégier les solutions libres
Ce dépôt contient des liens vers l'ensemble des diapositives des présentations du SymfonyLive Paris 2025
Le deuxième jour du SymfonyLive Paris 2025 a abordé divers sujets : Laura Durieux a souligné les contributions des femmes dans l'histoire de la technologie. Grégoire Pineau a présenté Symfony Messenger et son intégration avec Mercure pour des retours en temps réel. Damien Alexandre a exploré l'utilisation d'HTMX pour améliorer les performances des applications web. Hubert Lenoir et Adrien Roches ont introduit Gotenberg, un outil de génération de PDF fiable. Tugdual Saunier a montré comment Symfony Messenger peut améliorer l'architecture des applications. Matthias Arlaud a détaillé les évolutions d'API Platform, notamment l'adoption des attributs. Enfin, Nicolas Grekas a présenté les nouvelles fonctionnalités de Symfony 7.3, incluant des améliorations dans plusieurs composants. L'événement a célébré les 20 ans de Symfony et mis en avant les contributions de la communauté.
Le SymfonyLive Paris 2025 a rassemblé des centaines de développeurs pour célébrer les 20 ans de Symfony. Fabien Potencier a souligné les progrès du framework, notamment l'amélioration de la documentation et de l'expérience utilisateur. Antoine Bluchet a présenté le nouveau composant "Object Mapper" pour simplifier le mapping d'objets. David Buchmann a expliqué l'utilisation avancée du JSON dans PostgreSQL avec Doctrine. Rémi Janot a discuté des passkeys pour une authentification sécurisée via WebAuthn. Simon André a retracé les succès de Symfony UX, avec une adoption croissante et de nouvelles fonctionnalités prévues. Florian Bogey a abordé la gestion des permissions et le déploiement progressif avec le feature flipping. Jérôme Tamarelle a montré comment optimiser les requêtes dans API Platform en utilisant MongoDB. Enfin, Kévin Dunglas a conclu en présentant FrankenPHP, qui améliore les performances de Symfony en environnement de développement grâce à un mode "watcher".
Un outil pour manipuler des fichiers CSV en ligne de commande
Microsoft a annoncé la migration du compilateur TypeScript de JavaScript vers Go, promettant une amélioration de performance de 10x. Cependant, cette amélioration concerne uniquement la vitesse de compilation du compilateur TypeScript, et non la performance d'exécution du code TypeScript lui-même. Le passage à Go permet de mieux gérer les tâches intensives en CPU grâce à ses goroutines et son modèle de concurrence natif, contrairement à l'architecture mono-threadée de Node.js. Cette migration soulève des questions sur la compatibilité future avec les navigateurs et l'écosystème des plugins TypeScript, mais elle illustre l'importance d'adapter les choix technologiques aux besoins spécifiques des projets en évolution
Comment ne pas être impacté par la limite de 10 téléchargements d'image par heure depuis le registre public Docker Hub
Le changement de contexte, ou la nécessité de passer rapidement d'une tâche à une autre, est identifié comme le principal obstacle à la productivité des développeurs. Chaque interruption, même mineure, peut coûter jusqu'à 23 minutes de travail productif et dégrade la qualité du code en brisant la concentration. L'article explore les raisons pour lesquelles les développeurs sont particulièrement affectés, notamment en raison de la complexité des tâches de programmation qui nécessitent une mémoire de travail élevée. Des stratégies sont proposées pour minimiser ces interruptions, telles que la planification de périodes de travail ininterrompues et l'utilisation d'outils de communication asynchrones, afin d'améliorer la productivité et le bien-être des équipes de développement.
L'article met en lumière les erreurs fréquentes commises lors de la création de diagrammes d'architecture technique. Parmi celles-ci, on trouve la réalisation de diagrammes théoriques plutôt que concrets, le mélange de niveaux d'abstraction, la surcharge d'informations, l'utilisation de flèches non étiquetées, des compositions trompeuses, l'absence de contexte, et le manque de texte explicatif accompagnant les diagrammes. Pour éviter ces écueils, il est recommandé de se concentrer sur des représentations spécifiques et claires, de séparer les niveaux d'abstraction, de réduire le nombre de préoccupations simultanées, d'étiqueter les relations, de fournir un contexte adéquat, et d'accompagner les diagrammes de descriptions détaillées.
L'article présente le fichier composer.json
comme un élément central du développement moderne en PHP, en le comparant à un buffet à volonté où l'on accumule diverses dépendances. Il détaille les composants essentiels, tels que PHP 8.2, Doctrine ORM, et EasyAdminBundle, qui simplifient le développement en évitant l'écriture manuelle de SQL ou la création d'interfaces administratives. L'article met également en avant des outils de sécurité comme Scheb 2FA et Nelmio Security Bundle, ainsi que des utilitaires spécifiques comme Endroid QR Code et HTMLPurifier. Il souligne l'importance des bundles Symfony, tels que Asset Mapper et Monolog, qui facilitent la gestion des ressources et le logging. Enfin, il mentionne des outils de test comme PHPUnit et PHPStan, ainsi que des polyfills pour assurer la rétrocompatibilité. Le fichier composer.json
est décrit comme un sac à dos rempli d'outils indispensables pour un développement PHP efficace et sécurisé.
L'article explique comment Composer, un outil de gestion des dépendances PHP, peut transformer un projet PHP désorganisé en un environnement de développement propre et efficace. Avant Composer, les développeurs téléchargeaient manuellement des bibliothèques, souvent obsolètes et mal intégrées, ce qui entraînait des projets chaotiques et difficiles à maintenir. Composer simplifie l'installation et la gestion des dépendances via des commandes simples, garantissant que les bibliothèques sont à jour et compatibles. Il utilise des fichiers comme composer.json
et composer.lock
pour gérer les versions et assurer la cohérence des environnements de développement. L'article souligne également l'importance de ne pas utiliser composer update
de manière imprudente et met en avant des fonctionnalités avancées comme l'autoloading et la gestion des versions multiples. En somme, Composer est présenté comme un outil indispensable pour moderniser et professionnaliser le développement PHP.
L'article explique la Content Security Policy (CSP) comme un mécanisme de sécurité essentiel pour les sites web, agissant comme un videur strict qui contrôle les contenus autorisés à s'exécuter. La CSP est configurée via un en-tête HTTP qui spécifie les sources autorisées pour les scripts, styles, images, etc. Elle protège contre les attaques XSS, clickjacking, et autres injections malveillantes en bloquant les contenus non autorisés. L'article détaille comment configurer la CSP dans un fichier nelmio_security.yaml, en définissant des directives comme default-src, script-src, et style-src pour restreindre les sources de contenu. Il souligne également l'importance de tester la CSP en mode report-only pour identifier les violations sans impacter les utilisateurs.
L'article compare les tests unitaires au jeu Cluedo, où chaque ligne de code est un suspect potentiel. En utilisant PHPUnit, les développeurs peuvent identifier les bugs comme des crimes à résoudre. L'article explique comment les tests, notamment avec PHP 8.4, permettent de vérifier chaque combinaison possible pour éviter les erreurs en production. Le Test-Driven Development (TDD) est présenté comme une méthode préventive, où les tests sont écrits avant le code pour anticiper les problèmes. L'article souligne l'importance des mocks et des doublures pour simuler les dépendances externes et assure que les tests sont essentiels pour maintenir la qualité du code et dormir tranquille.
L'article compare Symfony à un restaurant gastronomique où chaque composant joue un rôle précis, comme une brigade de cuisine bien organisée. Symfony, un framework PHP, facilite le développement en fournissant une structure claire et des outils puissants. Le Kernel gère les requêtes comme un hôte d'accueil, les controllers coordonnent les actions, et Doctrine gère la base de données. Twig transforme les données en HTML, tandis que les composants comme Security et Form assurent l'authentification et la gestion des formulaires. L'Event Dispatcher permet une communication fluide entre les parties de l'application, et le Messenger Component gère les tâches asynchrones. Le Cache Component optimise les performances en stockant temporairement des données. En somme, Symfony offre une solution complète et efficace pour le développement web.
L'article explique Docker et les conteneurs en les comparant à des pancakes. Sans Docker, les applications partagent le même serveur, créant des conflits comme mélanger tous les ingrédients dans une seule cuisine. Docker isole chaque application dans un conteneur, assurant une isolation totale et évitant les conflits. Les images Docker sont des recettes, et les conteneurs des pancakes en cours de cuisson. Docker Compose gère plusieurs conteneurs, les volumes conservent les données, et les réseaux facilitent la communication entre conteneurs. L'article souligne les avantages de Docker pour le déploiement et la gestion des applications.
Cet article explique comment configurer un "git credential helper" OAuth sur Debian et Microsoft WSL pour se connecter à GitLab, évitant ainsi de stocker des mots de passe ou des jetons d'accès personnels. Pour Debian, il utilise git-credential-oauth
, tandis que pour WSL, il utilise le "Git Credential Manager" inclus avec "Git for Windows". Des instructions détaillées sont fournies pour chaque environnement, y compris la configuration pour des instances GitLab auto-hébergées.
L'article explique comment créer un scanner de vulnérabilités réseau simple mais robuste en utilisant le langage Go. Le projet commence par la configuration d'un outil en ligne de commande capable de scanner des hôtes réseau, détecter les ports ouverts, identifier les services en cours d'exécution et découvrir d'éventuelles vulnérabilités. Le scanner évolue avec l'ajout de fonctionnalités comme le scan multithreadé, la détection de services et l'identification des vulnérabilités. L'auteur insiste sur les considérations éthiques et légales du scan réseau et fournit des exemples de code pour chaque étape du développement.