Mensuel Shaarli
April, 2025
L'auteur a récemment terminé un mois consacré à l'amélioration de son sommeil, dans le cadre de son projet annuel visant à renforcer ses bases de vie. Il a réussi à augmenter son temps de sommeil moyen de 26 minutes par nuit, ce qui a considérablement amélioré sa concentration et son bien-être général. Il attribue cette amélioration à des changements simples comme se coucher plus tôt et limiter la caféine. Il a également appris à distinguer la fatigue du besoin de sommeil, ce qui l'a aidé à mieux gérer son énergie tout au long de la journée.
L'article explore diverses applications et outils utilisant la technologie WebRTC. Il aborde des sujets tels que le débogage avec test.webrtc.org, les outils de ligne de commande pour STUN et TURN, et les bibliothèques comme PeerJS et Yjs pour des applications collaboratives. L'article mentionne également des serveurs WebRTC comme Janus, Kurento, et Mediasoup, ainsi que des applications spécifiques telles que Jitsi, Pion, et Screego pour le partage d'écran sécurisé. Il souligne l'importance de WebRTC dans les communications en temps réel et les défis associés à son implémentation
.
L'article explore la difficulté de nommer les éléments en programmation. En travaillant sur un projet Laravel, l'auteur a réalisé l'importance de nommer les éléments de manière appropriée pour le contexte ou le schéma dans lequel ils sont utilisés. Il illustre cela avec un exemple où il devait requêter des utilisateurs n'ayant pas de mot de passe. Initialement, il a utilisé une requête basique, puis a créé une portée mécanique, mais aucune des deux solutions ne reflétait le concept métier. Finalement, il a opté pour un nom qui représentait mieux le concept métier : "completeUsers". Il conclut que nommer les éléments devient plus facile lorsqu'on considère le cas d'utilisation et qu'on imagine expliquer le code à un humain
.
L'article explique comment Zenstruck Foundry a révolutionné les tests dans Symfony en permettant de créer des données de test de manière simplifiée et expressive. Cette bibliothèque utilise des factories pour générer rapidement des données pour les entités Doctrine, supporte Faker pour des données aléatoires réalistes, et intègre des fonctionnalités comme les "stories" pour définir des scénarios de données réutilisables. Foundry est particulièrement utile pour tester des modèles de domaine complexes, y compris les Value Objects et les Aggregates en Domain-Driven Design (DDD), en simulant des interactions réalistes sans la complexité de gérer les données sous-jacentes
.
L'autrice utilise EXPLAIN avant de lancer la requête - ce qui calcule son plan sans l'exécuter - afin de ne pas surcharger sa base de données avec une requête lente
Elle utilise EXPLAIN ANALYZE après l'exécution de sa requête afin de comprendre pourquoi elle est lente.
La syntaxe présentée est celle de PostgreSQL - à adapter donc selon le SGBD.
L'article explore comment rendre les sorties des modèles de langage (LLMs) utilisables par des algorithmes de traitement pour en tirer parti de manière automatique et industrielle. Il aborde les limites du prompt engineering classique et introduit la notion de grammaires formelles pour forcer les LLMs à générer des sorties structurées, comme du JSON, afin de garantir la cohérence et la validité des données extraites. L'article illustre ces concepts à travers un cas d'usage concret : l'analyse automatisée de CVs pour extraire des compétences spécifiques, en utilisant des outils comme Pydantic pour définir des schémas de données stricts
.
L'article explique comment créer un système de téléchargement d'images fonctionnant hors ligne en utilisant les technologies des Progressive Web Apps (PWA) telles qu'IndexedDB, les service workers et l'API Background Sync. Ce système permet de mettre en file d'attente les téléchargements d'images et de les retenter automatiquement lorsque la connexion Internet est rétablie, offrant ainsi une expérience utilisateur fluide même en cas de connectivité réseau instable
.
L'article explique comment créer une autorité de certification (CA) interne et des certificats clients en utilisant OpenSSL. Il couvre les étapes suivantes : génération d'une clé privée et d'un certificat racine pour la CA, ajout de cette CA au magasin de certificats du système, création de certificats clients signés par cette CA, et mise en place de ces certificats sur des serveurs Apache ou Nginx. Le processus inclut des commandes spécifiques pour chaque étape, comme la génération de clés RSA et la signature des demandes de certificats (CSR) avec la CA.
Une base de données graphe intégrée, à la SQLite - (depuis https://bsky.app/profile/did:plc:4q4wdaknunskbt47bzsi2qbv/post/3lnezxpunas2w?ref_src=embed )
Tout est dans le titre
L'article décrit l'expérience de l'autrice sur Mastodon depuis 2022, après avoir quitté Twitter suite à son rachat par Elon Musk. Elle apprécie l'absence de publicité, la bienveillance des utilisateurs et la possibilité de suivre des hashtags pour découvrir du contenu intéressant. Elle utilise Mastodon pour partager des aspects de sa vie quotidienne, des photos et des réflexions professionnelles, tout en interagissant avec une communauté engagée et diversifiée. Elle gère deux comptes, un officiel et un anonyme, et passe environ une heure et demie par jour sur la plateforme, soulignant les avantages de Mastodon par rapport aux réseaux sociaux algorithmiques
.
L'article explique pourquoi il est préférable d'utiliser des objets de transfert de données (DTO) avec les formulaires Symfony plutôt que des entités. Bien que l'utilisation directe des entités dans les formulaires soit simple et efficace pour des opérations CRUD basiques, elle peut devenir complexe et problématique pour des cas d'utilisation plus avancés.
L'auteur illustre cela avec un exemple où un formulaire d'édition d'utilisateur doit gérer des champs d'adresse conditionnels. Utiliser directement les entités nécessite des ajustements complexes, comme des transformateurs de données, et peut mener à des états incohérents des entités.
En revanche, l'utilisation de DTOs permet de séparer clairement les données du formulaire de la logique métier, rendant le code plus maintenable et compréhensible. Les DTOs représentent exactement les données du formulaire, évitant ainsi de modifier les entités pour s'adapter aux besoins du formulaire.
Bien que cela nécessite un peu plus de code pour mapper les données entre les DTOs et les entités, cette approche est plus flexible et évite les inconvénients liés à l'utilisation directe des entités dans les formulaires
L'article explique les principes et l'utilisation des JSON Web Tokens (JWT), une solution populaire pour l'authentification inter-domaines. Il aborde les problèmes de l'authentification traditionnelle basée sur les sessions, puis détaille le fonctionnement des JWT. Un JWT est composé de trois parties : l'en-tête (Header), la charge utile (Payload) et la signature (Signature). L'article explique comment ces composants sont générés et utilisés pour assurer une authentification sécurisée et sans état. Il mentionne également les avantages et les inconvénients des JWT, notamment leur capacité à réduire les requêtes serveur mais aussi les risques liés à la non-révocabilité des tokens avant leur expiration.
L'article explique comment automatiser le déploiement d'un site statique généré avec 11ty, hébergé sur GitHub, vers un serveur alwaysdata. Le processus inclut la configuration d'un webhook sur GitHub pour notifier alwaysdata des mises à jour, l'installation d'une bibliothèque de gestion de webhooks sur alwaysdata, et la création de scripts pour automatiser le déploiement. L'article détaille chaque étape, depuis la configuration initiale jusqu'à la gestion des éventuels problèmes, pour assurer un déploiement fluide et automatisé des mises à jour du site
.
L'article explique comment contourner les restrictions de sécurité qui bloquent les ports autres que HTTP/HTTPS (80 et 443) en utilisant HAProxy pour encapsuler le trafic SSH dans du SSL. L'auteur propose deux méthodes : la première consiste à rediriger le trafic SSH vers le port 443, et la seconde à encapsuler ce trafic dans du SSL pour tromper les pare-feux intelligents. L'article inclut des configurations détaillées pour HAProxy et des conseils pour sécuriser l'accès SSH
.
L'auteur du blog a récemment migré son infrastructure personnelle, composée de quelques machines virtuelles gérées par Ansible, vers un cluster Kubernetes mono-nœud. Il explique que cette transition lui permet de gérer ses applications et leurs dépendances de manière entièrement déclarative, en utilisant des fichiers YAML dans un dépôt Git. Cette approche simplifie la mise à jour et la maintenance des applications, réduisant ainsi le temps et les efforts nécessaires pour gérer son infrastructure. Il mentionne également que Kubernetes offre une meilleure gestion des versions des runtimes et des dépendances, ce qui n'était pas toujours possible avec Ansible. Enfin, il souligne que cette migration a été un succès, lui permettant de gérer ses services de manière plus efficace et automatisée
L'article explore des fonctionnalités avancées de Docker souvent méconnues mais puissantes pour améliorer les workflows DevOps et renforcer la sécurité des déploiements.
-
SBOM et l’analyse avec Trivy : Générez des inventaires de composants logiciels (SBOM) et analysez-les avec Trivy pour détecter les vulnérabilités dans vos images Docker.
-
Multi-architecture avec Docker et Buildx : Créez des images Docker compatibles avec plusieurs architectures (AMD, ARM, etc.) en une seule commande grâce à Docker Buildx.
-
Signature des images Docker avec Sigstore : Signez et vérifiez vos images Docker avec Sigstore et Cosign pour garantir leur intégrité et provenance.
-
OCI Registry et ORAS : Utilisez ORAS pour pousser et récupérer des artefacts OCI sur des registries, au-delà des images Docker, pour une gestion standardisée et sécurisée des artefacts.
Ces fonctionnalités montrent l'évolution de Docker vers une plateforme plus sécurisée et flexible, adaptée aux besoins des environnements DevOps modernes.
Cet article explique comment configurer, gérer et optimiser les journaux Nginx pour améliorer le débogage, la surveillance et les performances des applications. Les journaux Nginx, essentiels pour diagnostiquer les problèmes, se trouvent par défaut dans /var/log/nginx/
sur la plupart des systèmes Linux. Le guide détaille comment localiser, personnaliser et organiser ces journaux, propose des formats de logs avancés pour le débogage, et offre des techniques pratiques d'analyse avec des outils comme grep
, awk
et GoAccess. Il aborde également la rotation des logs pour éviter la saturation des disques et résout des problèmes courants comme les logs non écrits ou les formats incorrects. Enfin, il présente des techniques avancées telles que le logging en JSON et l'envoi des logs à syslog pour des configurations plus complexes.
Les conférences :
- L’IA n’existe pas : Luc Julia a critiqué l'idée de révolution de l'IA, soulignant son évolution continue et le rôle crucial des humains derrière les technologies.
- Github Copilot : Kim-Adeline Miguel et Sandra Parlant ont démontré les nouvelles fonctionnalités de Github Copilot, notamment le chat immersif et les revues de code automatisées.
- Ne perdez plus vos photos de vacances (ou tout autre fichier important) : J'ai présenté des stratégies pour sauvegarder et protéger les fichiers importants, recevant des retours positifs et des suggestions pertinentes.
- Comment nous avons transformé les Restos du Coeur en Cloud Provider : Julien Briault et Stéphane Trognon ont partagé la transformation des Restos du Coeur en fournisseur de cloud grâce à OpenStack et Kubernetes, réduisant les coûts et améliorant l'efficacité.
- Ça marche dans mon .devcontainer : Benoit Moussaud a présenté les avantages des environnements de développement en conteneurs, soulignant leur utilité pour l'onboarding et la gestion des versions.
- Burrito est un TACoS : une alternative open-source à Terraform Cloud : Luca et Lucas ont introduit Burrito, une alternative open-source à Terraform Cloud, qui améliore la gestion de l'infrastructure as code avec des fonctionnalités avancées.
L'article explore l'utilisation du pattern ADR (Action-Domain-Responder) dans Symfony, en remplacement du traditionnel MVC (Model-View-Controller). L'auteur présente une approche où chaque contrôleur, nommé avec le suffixe "Action", est responsable d'une seule tâche, utilisant la méthode __invoke()
pour simplifier le routage et le rendu des templates. Cette méthode, bien que complexe à mettre en place, offre une organisation claire et une génération d'URLs simplifiée dans Twig.
L'auteur explique pourquoi c'est une bonne pratique
L'auteur montre comment il a mis en place son système de recommandation à partir des statistiques de visite de son site - le tout basé sur Symfony
L'auteur explique à quoi servent les DTOs et comment les utiliser dans le contexte d'une application Symfony en particulier.
sensio/framework-extra-bundle est déprécié et est remplacé par l'attribut natif de Symfony : #[IsGranted()]
L'auteur montre l'utilisation de Rector en plusieurs étapes pour faire la migration.
L'auteur explique que l'apprentissage est aussi une finalité de la vie, et pas seulement un moyen utile pour subsister. Par contre, la compétition, la peur d'échouer, etc. peuvent décourager. Il propose donc des moyens pratiques pour faciliter l'apprentissage.
L'auteur se place dans le contexte d'une application Symfony avec des tests PHPUnit et en fournissant des jeux de données via Foundry. Il montre l'utilisation du trait ClockAwareTrait et composant Clock. Enfin, il rappelle que PHP-FIG a proposé la PSR-20 Clock qui dispose de plusieurs implémentations, dont le composant Clock.
L'auteur présente une méthode pour l'apprentissage. Dans cet article, il explique le concept de "flow", concept qui est à la base d'un apprentissage réussi : ni trop facile, ni trop dur, mais suffisamment challengeant pour que ça serve à quelque chose.
Pour réussir dans l'apprentissage, Scott H. Young souligne l'importance de comprendre à la fois les éléments spécifiques d'un sujet et leur organisation globale, un processus appelé meta-learning. Ce dernier permet de créer une "carte" mentale qui guide l'apprentissage de manière structurée, en répondant à trois questions clés : comment les experts organisent-ils le domaine, quels sont les éléments fondamentaux à apprendre, et comment ces éléments s'intègrent-ils dans des compétences plus larges. En utilisant des ressources comme Google ou des outils d'IA, il est possible d'obtenir des points de départ pour comprendre ces structures, facilitant ainsi un apprentissage plus efficace et ciblé.
L'auteur explique comment il a mené un audit de sécurité dans son entreprise : récupération de la liste des utilisateurs, constitution d'un dictionnaire, préparation d'une machine de calcul, cassage du maximum de mots de passe, et information auprès des personnes concernées. Il en profite pour rappeler quelques conseils de sécurité sur les mots de passe.
Voici la liste des conférences présentées lors du SymfonyLive Paris 2025, avec un résumé pour chacune :
-
Keynote de Fabien Potencier :
- Fabien a retracé l'histoire de l'initiative DX de Symfony et a démontré la flexibilité de Symfony avec des exemples comme "Symfony Hello" et "Symfony Solo".
-
Le composant Symfony Mapper – Antoine Bluchet :
- Présentation du nouveau composant ObjectMapper de Symfony, qui facilite la transformation de données entre différentes structures dans les applications Symfony.
-
API Platform sans Doctrine – Jérôme Tamarelle :
- Jérôme a montré comment optimiser les performances d'API Platform en utilisant des fonctionnalités JSON de PostgreSQL pour réduire le nombre de requêtes SQL.
-
Développer avec API Platform 4 – Mathias Arlaud :
- Mathias a expliqué les évolutions d'API Platform, notamment l'utilisation de DTO et la découplage du modèle de données en base et la représentation en API.
-
Passkeys pour une authentification fluide et sécurisée – Rémi Janot :
- Rémi a présenté WebAuthn, une API permettant l'authentification sans mot de passe traditionnel, en utilisant des authentificateurs comme les lecteurs d'empreintes digitales.
-
Rôles & permissions : développer une marque blanche avec du feature flipping – Florian Bogey :
- Florian a détaillé l'utilisation des rôles et permissions dans Symfony pour gérer une application multi-clients en marque blanche, avec un système de feature flipping.
-
Symfony UX : Points forts de 2024 et perspectives d’avenir – Simon André :
- Simon a analysé l'adoption des composants UX par la communauté Symfony et a présenté les futures améliorations et changements.
-
Atteindre la qualité d’une SPA avec HTMX et Twig – Damien Alexandre :
- Damien a montré comment utiliser HTMX pour créer des applications web dynamiques et réactives sans trop de JavaScript, en utilisant des attributs dans Twig.
-
Développer plus vite avec FrankenPHP – Kévin Dunglas :
- Kévin a présenté FrankenPHP, une combinaison performante d'un runtime PHP, d'un serveur Web et d'un serveur SSE, pour améliorer les performances de développement.
-
Asynchrone avec Symfony Messenger et Mercure – Grégoire Pineau :
- Grégoire a expliqué comment combiner Symfony Messenger et Mercure pour des traitements asynchrones et des notifications en temps réel, améliorant ainsi la performance et l'expérience utilisateur.
-
Du Lego de composants pour un bundle Gotenberg – Hubert Lenoir, Adrien Roches :
- Les conférenciers ont présenté l'utilisation de Gotenberg pour la génération de PDF et ont mis en lumière des fonctionnalités avancées de PHP et Symfony.
-
Tirez profit de Messenger pour améliorer votre architecture – Tugdual Saunier :
- Tugdual a montré comment utiliser le composant Messenger en synchrone pour améliorer l'architecture d'une application, en utilisant des messages pour faire circuler des appels à des services.
-
Keynote – Nicolas Grekas :
- Nicolas a présenté les nouvelles fonctionnalités à venir dans Symfony, notamment dans les versions 7.4 (LTS) et 8, comme le support de HTTP/3 dans le HttpClient.
Ces conférences ont couvert divers aspects de Symfony, de l'amélioration des performances à l'optimisation de l'architecture, en passant par la sécurité et les nouvelles fonctionnalités.
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 présente les 8 stratégies courantes dans la gestion des branches sous git, avec leurs avantages et leurs inconvénients.
L'article explique comment utiliser les flux (streams) de Node.js avec TypeScript pour un traitement de données efficace. Il couvre les types de flux (readable, writable, duplex, et transform) avec des exemples pratiques pour gérer de gros fichiers et des données en temps réel. Le guide met en avant l'efficacité des flux pour traiter les données par morceaux, évitant ainsi de surcharger la mémoire, et montre comment TypeScript améliore la sécurité et la lisibilité du code grâce à son typage fort
.
L'article explore les défis et les étapes nécessaires pour changer le nom de domaine d'une application, en se basant sur son expérience personnelle avec le changement de nom de son application vers hakanai.io. L'auteur partage des leçons apprises, notamment l'importance de préserver le SEO, de gérer les redirections, de mettre à jour les configurations d'emails et de maintenir la conformité réglementaire. Il souligne également les risques et les efforts de communication nécessaires pour établir une nouvelle identité de marque
.
L'article explique comment exporter des PDFs prêts à l'impression à partir d'une application Symfony de manière simple et rapide. L'auteur guide le lecteur à travers l'installation de wkhtmltopdf
et du SnappyBundle
, la création de modèles PDF avec HTML et CSS, et la personnalisation du contrôleur Symfony pour générer des PDFs. Le processus permet d'exporter des pages ou des tableaux en PDF, avec des options pour ajuster la mise en page et le style, rendant la génération de PDFs flexible et intégrée à l'application Symfony
.
L'article présente Anubis, une solution élégante pour contrer les bots qui parcourent le web et surchargent les sites en récupérant des données pour l'entraînement des IA. Anubis fonctionne comme un reverse proxy, utilisant JavaScript pour imposer une preuve de travail aux visiteurs, bloquant ainsi efficacement les bots qui ne gèrent pas JavaScript ou qui sont détectés comme tels. Cette méthode permet de protéger les sites web contre la surconsommation de ressources et est déjà adoptée par plusieurs grandes organisations. L'auteur a implémenté Anubis pour protéger son instance publique de SearXNG, réduisant ainsi la charge CPU et le trafic réseau causés par les bots
.
On a 3 manières de compter les lignes en SQL :
COUNT(*) compte toutes les lignes, sans s'occuper des valeurs de celles-ci. On l'utilise souvent avec GROUP BY comme dans cette requête sur les prénoms les plus populaires.
SELECT first_name, COUNT(*) FROM people GROUP BY first_name ORDER BY COUNT(*) DESC LIMIT 50
COUNT(DISTINCT column) renvoie le nombre de valeurs distinctes, et est donc très utile si une colonne a des valeurs dupliquées. Par exemple, la requête suivante trouve le nombre d'espèces pour chaque gêne de plante.
SELECT genus, COUNT(DISTINCT species) FROM plants GROUP BY 1 ORDER BY 2 DESC
À noter que GROUP BY 1 signifie de grouper par la 1ère expression du SELECT.
SUM(CASE WHEN expression THEN 1 ELSE 0 END) permet de compter, par exemple dans la requête ci-dessous, combien chaque propriétaire a de chats, de chiens et d'autres animaux.
SELECT owner , SUM(CASE WHEN type = 'dog' THEN 1 ELSE 0 END) AS num_dogs , SUM(CASE WHEN type = 'cat' THEN 1 ELSE 0 END) AS num_cats , SUM(CASE WHEN type NOT IN ('dog','cat') THEN 1 ELSE 0 END) AS num_other FROM pets GROUP BY owner
Ça marche bien si la table a le format
owner | type |
---|---|
1 | dog |
1 | cat |
2 | dog |
2 | parakeet |
Dans son article, Scott H. Young partage ses lectures et ses réflexions sur le sommeil, thème du septième mois de son projet annuel "Foundations". Il souligne l'importance du sommeil pour la cognition, l'humeur et le système immunitaire, et critique la valorisation culturelle de la privation de sommeil. Il explique que le sommeil est régulé par deux processus : l'accumulation de la pression de sommeil (Processus S) et le cycle jour-nuit (Processus C), qui peuvent être perturbés par la caféine et la lumière artificielle. Il résume plusieurs livres sur le sommeil, abordant des sujets tels que l'insomnie, les rythmes de sommeil historiques, la neuroscience du sommeil et des rêves, et les effets des siestes. Il mentionne également les effets du café et l'importance de la lumière pour réguler le rythme circadien.
L'auteur explique comment récupérer des données d'un disque dur en fin de vie, grâce à la commande ddrescue
Une bibliothèque JavaScript open source de visualisation de données très complète
L'auteur explore la complexité de faire confiance à l'expertise. Il admet que, malgré avoir lu de nombreux livres sur la nutrition, il reste beaucoup de choses qu'il ne sait pas. Young souligne que faire confiance aux experts n'est pas une tâche intellectuellement simple. Cela nécessite un travail considérable pour aligner sa vision du monde avec celle des experts. Il argue que les experts, en général, ont des opinions plus précises que les non-experts, et que la majorité des opinions d'experts est souvent plus fiable que les opinions individuelles. Cependant, il reconnaît aussi les défis, comme les biais et les limites des modèles utilisés par les experts, qui peuvent parfois justifier un certain scepticisme. En fin de compte, Young plaide pour une approche équilibrée, où l'on donne du poids aux perspectives dominantes des experts tout en restant ouvert à des points de vue contraires bien fondés
.
L'article explore les inconvénients du perfectionnisme et comment il peut affecter négativement la productivité, le bien-être et les relations. L'auteur distingue deux types de perfectionnisme : le perfectionnisme sain, qui vise l'amélioration tout en maintenant un équilibre émotionnel, et le perfectionnisme névrotique, qui pousse à des standards extrêmement élevés au détriment du bien-être personnel.
L'article identifie six problèmes cachés du perfectionnisme :
- Diminution de la productivité : Les perfectionnistes passent souvent trop de temps à perfectionner des détails mineurs, ce qui réduit leur efficacité globale.
- Procrastination : Le perfectionnisme peut conduire à repousser des tâches en attendant des conditions parfaites.
- Myopie : Une attention excessive aux détails peut faire perdre de vue l'objectif global.
- Stress constant : Les perfectionnistes s'imposent des standards élevés, ce qui entraîne un stress et une anxiété permanents.
- Estime de soi négative : Les perfectionnistes sont souvent leurs propres critiques les plus sévères, ce qui nuit à leur estime de soi.
- Relations tendues : Le perfectionnisme peut imposer des attentes irréalistes aux autres, nuisant aux relations personnelles.
L'auteur partage également son expérience personnelle avec le perfectionnisme et comment cela a affecté sa productivité, sa santé mentale et ses relations. Elle conclut en mentionnant qu'il est possible de gérer le perfectionnisme pour éviter ces inconvénients et mener une vie plus équilibrée et positive
.
L'article propose un guide complet pour créer une barre de recherche conforme aux normes d'accessibilité RGAA. Il inclut des bonnes pratiques, des erreurs à éviter, et des exemples de code en HTML et React/MUI pour aider les développeurs à concevoir des interfaces utilisateur inclusives et fonctionnelles
.
L'article explique comment utiliser les fichiers .http pour tester des API et augmenter la couverture de code sans écrire de tests d'intégration complexes. Les fichiers .http sont des fichiers texte simples qui décrivent des requêtes HTTP et peuvent être exécutés directement depuis des IDE populaires comme IntelliJ, Visual Studio et VSCode, ou en ligne de commande.
L'auteur propose d'utiliser ces fichiers dans les pipelines CI/CD pour exécuter des tests d'API et collecter la couverture de code. Il mentionne l'outil httpyac pour exécuter les fichiers .http en ligne de commande et dotnet-coverage pour instrumenter les binaires et collecter la couverture de code sans framework de tests.
L'article fournit également des exemples de commandes pour exécuter ces outils et intégrer les tests dans des pipelines Azure DevOps et GitHub Actions
.
L'article explique comment déployer un cluster Kubernetes en utilisant Proxmox, OpenTofu, et Talos Linux. Il décrit les étapes pour configurer l'environnement, créer des machines virtuelles, et appliquer les configurations nécessaires pour initialiser le cluster Kubernetes. L'article met en avant les avantages de Talos Linux, un système d'exploitation sécurisé et immuable conçu pour Kubernetes, et montre comment utiliser OpenTofu pour automatiser le processus de déploiement. Il inclut également des exemples de code et des conseils pratiques pour gérer le cluster une fois déployé.
L'auteur défend WordPress contre les critiques des développeurs. Il souligne que WordPress alimente 43,4% des sites web mondiaux et est utilisé par de grands acteurs comme la Maison Blanche et TechCrunch. L'article retrace l'histoire de WordPress, de ses débuts en 2003 à son évolution avec des fonctionnalités modernes comme l'éditeur Gutenberg. Il explique les composants clés de WordPress : thèmes, plugins, hooks, et modèle de données. L'article présente également des outils modernes comme Themosis, Bedrock, Sage, WP-CLI, et Timber, qui améliorent le développement WordPress. Enfin, il compare WordPress aux approches full-stack modernes, concluant que WordPress reste un choix pertinent pour de nombreux projets web
.
La "Clean Architecture" va bien au-delà d'une simple organisation de fichiers. Bien que souvent représentée par des couches comme Domain, Application, Infrastructure et UserInterface, son principe fondamental réside dans le sens des dépendances, qui doivent toujours pointer vers l'intérieur. Cela signifie que les règles métier (Domain) ne doivent pas dépendre des détails techniques (couches extérieures), permettant ainsi d'isoler la logique métier et de faciliter les tests et les évolutions du code. Cette approche, illustrée par les principes SOLID, favorise la flexibilité et la modularité, rendant le code plus résilient aux changements. Bien que l'arborescence des dossiers soit un outil pratique pour visualiser et organiser le code, l'essentiel est de se concentrer sur l'indépendance des couches métier vis-à-vis des dépendances techniques.
La navigation au clavier est un aspect crucial de la conception web accessible, permettant aux utilisateurs d'interagir avec un site uniquement via le clavier, en utilisant des raccourcis et en sélectionnant des éléments avec les touches Tab et Entrée. Cela rend le site plus accessible aux personnes ayant des troubles moteurs ou visuels, améliore l'efficacité pour tous les utilisateurs et peut éviter des complications légales liées à l'accessibilité. Pour rendre un site navigable au clavier, il est essentiel d'inclure des indicateurs de focus visibles, un ordre de tabulation logique, des liens de navigation rapide et des éléments interactifs accessibles via le clavier. Tester la navigabilité au clavier en utilisant uniquement le clavier permet de s'assurer que le site répond aux normes d'accessibilité.
Après une soirée tardive, l'auteur a eu du mal à se lever et a manqué la première keynote du jour 2. Il a assisté à une présentation sur l'attaque xz utils et a lui-même donné un talk sur Kubernetes. Il a raté un talk sur TDD et IA, mais a assisté à une conférence sur les problématiques produit dans les grandes entreprises tech. Il a également participé à un quiz sur les conteneurs, manqué un talk sur Infisical, et assisté à un panel de staff engineers. Tout au long de la journée, il a eu des discussions enrichissantes avec diverses personnes, ce qui l'a empêché d'assister à tous les talks prévus.
L'auteur explique comment installer GoToSocial, un serveur ActivityPub en Go bien plus léger qu'un serveur Mastodon classique.
L'article explore les traits communs des meilleurs développeurs. L'auteur souligne l'importance de lire la documentation officielle, de maîtriser ses outils, et de comprendre les messages d'erreur. Il met également en avant la capacité à décomposer les problèmes, à ne pas hésiter à se plonger dans le code, et à toujours aider les autres. Enfin, il insiste sur l'importance de l'écriture, de l'apprentissage continu, et de la patience dans le développement logiciel.
Luis Ouriach propose de remplacer le système d'espacement de 4px par la suite de Fibonacci. Il critique la monotonie et le manque de précision des espacements basés sur des multiples de 4, suggérant que l'utilisation de nombres impairs pourrait améliorer l'apparence des composants. Il illustre cette idée avec des exemples de composants et de polices, montrant que les espacements impairs peuvent offrir un rendu plus serré et harmonieux. Enfin, il introduit la suite de Fibonacci comme une méthode systématique pour gérer les espacements de manière plus naturelle et esthétique.
L'article explore les tendances actuelles en matière d'auto-hébergement, en mettant l'accent sur l'utilisation des conteneurs et des outils de gestion associés. L'auteur partage son expérience avec diverses solutions comme Docker, Podman, et Kubernetes, ainsi que des interfaces web telles que Portainer et Dockge pour gérer les conteneurs, et des outils comme Pangolin et Nginx Proxy Manager pour les proxys inverses et VPN.
Une belle déclaration d'amour au client HTTP de Symfony :-) Plus sérieusement, l'auteur montre comment s'en servir et quelques cas très intéressants comme des requêtes asynchrones
L'auteur montre comment se prémunir des attaques XSS dans Symfony : pour les templates Twig en les échappant systématiquement, pour les entrées utilisateur en les "sanitizant" et en utilisant une politique de sécurité de contenu (CSP)
Pour contrer les attaques DDoS des entreprises de l'IA, l'auteur a commencé par bannir des IP en fonction du User Agent... mais ça comporte des risques de faux positifs assez importants. Quelqu'un lui a parlé de Anubis, un projet open source qui permet d'ajouter une vérification de type "Proof of Work" afin de garantir que le visiteur n'est pas un robot. L'auteur montre comment l'installer.
Il est possible d'appliquer des styles CSS à SVG. Il y a 3 cas principaux : SVG inline (facile à manipuler en CSS), SVG externe (limité), et SVG via
Je ne savais pas qu'on pouvait rooter une imprimante 3d :-)
Une réponse et un complément à l'excellent billet de Ploum sur le même sujet
Les 5 types de programmes en ligne de commande : REPL, TUI, programmes non interactifs (comme grep, git, etc.), les wrappers (ssh, env, tmux, etc.) et les autres
L'autrice explique comment les quitter
L'auteur fait un retour d'expérience sur le scraping totalement abusif de son contenu par des entreprises spécialisées dans l'IA : au delà de la monétisation probable de son contenu dans son dos, ces entreprises rendent indisponibles sa forge logicielle par ce que l'on peut qualifier d'attaque DDoS... d'où son coup de gueule. Il donne quelques conseils pour pallier ce souci.
L'article explique comment migrer des colonnes de type array
vers json
avec Doctrine, suite à la dépréciation des types array
et object
dans la version 3 de Doctrine. Il propose une méthode en plusieurs étapes : créer un type Doctrine hybride pour gérer les deux formats, migrer les données sans interrompre le déploiement, et finalement supprimer le type hybride une fois la migration terminée. Le processus permet de migrer les données de manière efficace et sans temps d'arrêt.
Il s'agit de portions de textes ajoutés à une URL utilisés par des systèmes de tracking (Google Analytics par exemple) à des fins d'analyse : d'où vient le trafic, le type de canal, etc.
Dans ce journal, l'auteur explore NixOS, une distribution Linux lancée en 2006, qui se distingue par sa configuration déclarative centralisée dans un fichier unique. Elle permet une gestion immuable des paquets et facilite le retour à des versions antérieures. Tous les paquets sont stockés dans /nix/store
, permettant plusieurs versions d'un même logiciel. Bien que puissante, NixOS peut être complexe pour les débutants en raison de sa documentation chaotique. Elle est idéale pour ceux recherchant une configuration système robuste et reproductible, malgré une courbe d'apprentissage raide. NixOS est souvent comparée à Fedora Silverblue et OpenSUSE MicroOS pour ses fonctionnalités avancées.
L'article explique pourquoi et comment optimiser les coûts liés à l'utilisation de Argo CD pour le déploiement continu sur Kubernetes.
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.
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é.
Un outil pour manipuler des fichiers CSV en ligne de commande
Comment ne pas être impacté par la limite de 10 téléchargements d'image par heure depuis le registre public Docker Hub
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.
Il s'agit de la suite de https://personalexcellence.co/blog/perfectionism/ et https://personalexcellence.co/blog/perfectionism-downsides/
L'article propose huit étapes pour surmonter le perfectionnisme : supprimer la mentalité du tout ou rien, viser le "suffisamment bon", se concentrer sur le progrès plutôt que sur la perfection, fixer des limites pour les tâches, remettre en question le besoin de perfection, comprendre la source du perfectionnisme, s'aimer soi-même et ne pas soumettre les autres aux mêmes standards élevés.
Autopsy est une plateforme de cybercriminalistique numérique. Elle permet d'analyser ce qui s'est passé sur un disque dur, d'extraire l'historique des modifications, de filtrer, etc.
L'action décrite dans le titre est plus compliquée que prévue... Une solution qui marche bien la plupart du temps est de faire {}.toString.call(v)
L'article explore l'application des principes de la Clean Architecture dans le cadre du développement avec le framework Laravel. Il partage l'expérience d'une équipe qui a travaillé pendant plus d'un an pour réduire la dette technique et repenser l'architecture de leurs applications Laravel. L'article aborde les différentes couches de la Clean Architecture (présentation, domaine, application, infrastructure), l'inversion des dépendances, et le passage de frontières pour améliorer la testabilité, l'évolutivité et la maintenabilité du code
.
L'article présente une stratégie Docker éprouvée pour déployer des applications Symfony avec Apache, MySQL et OpenSearch. L'auteur partage son setup personnel utilisant un Dockerfile
et docker-compose
, optimisé pour la production et incluant des ajustements spécifiques à Symfony. L'article met en avant les avantages de Docker pour PHP, notamment la définition de l'infrastructure en tant que code, éliminant ainsi les problèmes de reproductibilité des bugs entre différents environnements
.
L'article explique comment étendre les fonctionnalités de Talos, un système d'exploitation minimaliste dédié au déploiement de nœuds Kubernetes. Bien que Talos soit léger, il est conçu pour être extensible via des extensions, permettant d'ajouter des outils ou des fonctionnalités non disponibles par défaut. L'auteur détaille les méthodes pour installer des extensions, soit via une image personnalisée de Talos, soit en spécifiant une image OCI contenant l'extension. Il illustre le processus avec un exemple concret d'installation de l'agent qemu-guest-agent
sur des nœuds Talos, en utilisant Proxmox pour l'hébergement. L'article aborde également la création et la gestion des extensions, ainsi que l'injection de configurations spécifiques pour des besoins particuliers
.
L'article explique comment configurer des tests de régression visuelle automatisés en utilisant Playwright. L'auteur décrit comment il a utilisé Playwright pour capturer des captures d'écran avant et après des modifications sur une page web, puis comparer les résultats pour détecter des changements non intentionnels. Il partage son expérience en détaillant la configuration, la génération de tests dynamiques et les ajustements nécessaires pour gérer les cas particuliers. L'article met en avant la puissance de Playwright pour automatiser les tests visuels, tout en soulignant les défis liés à la stabilité et à la fiabilité des tests.
Le tutoriel explique comment utiliser PolKit sur Linux pour permettre à un utilisateur standard d'effectuer des tâches administratives sans avoir les privilèges root. PolKit permet de définir des règles spécifiques pour autoriser des actions comme la configuration réseau ou l'installation de mises à jour, sans compromettre la sécurité du système. Le processus implique la modification de fichiers d'actions et de règles pour déléguer ces droits de manière contrôlée. Cela optimise le temps de l'administrateur en limitant les interventions manuelles pour des tâches routinières
.
L'article explique comment compresser et réduire la taille d'un fichier PDF volumineux en utilisant Ghostscript, un outil en ligne de commande. Après avoir essayé des logiciels basiques comme PDFSam sans succès, l'auteur découvre Ghostscript, qui permet une compression avancée des fichiers PDF. Il détaille l'installation de Ghostscript sur différentes distributions Linux et fournit une commande spécifique pour compresser un PDF, en ajustant la résolution des images et en supprimant les données superflues. Grâce à cette méthode, il parvient à réduire considérablement la taille de son fichier PDF, passant de 57,8 Mo à 26,6 Mo, tout en conservant une qualité visuelle suffisante pour une lecture à l'écran ou une impression basique
.
L'article explore en profondeur la technologie WebRTC, une norme permettant la communication en temps réel via des navigateurs web. Il détaille l'histoire et les principes de WebRTC, notamment son utilisation de protocoles comme UDP pour des connexions à faible latence, et son intégration de codecs vidéo libres comme VP8 et VP9. L'article explique également les défis techniques, tels que l'établissement de connexions pair-à-pair via ICE, STUN et TURN, et les différentes architectures de serveurs (SFU et MCU) pour gérer les flux multimédias. Il aborde aussi les perspectives futures, comme l'intégration de SVC et de RED pour améliorer la qualité et la fiabilité des communications. En somme, l'article offre une vue d'ensemble technique et pratique de WebRTC, soulignant son importance dans les communications modernes sur le web
.
Pour préparer un message de commit à l'avance dans Git sans créer de commit immédiatement, vous pouvez utiliser un script qui met en scène du contenu et prépare un message de commit. Ce message sera automatiquement inséré dans l'éditeur lors du prochain commit sans nécessiter de paramètres supplémentaires ou de modifications de configuration.
La solution, qui semble non documentée, consiste à utiliser le fichier .git/MERGE_MSG
. En écrivant votre message de commit dans ce fichier, l'éditeur de commit s'ouvrira avec ce message déjà rempli.
Initialement, l'auteur avait suggéré d'utiliser .git/SQUASH_MSG
, mais .git/MERGE_MSG
est plus approprié. Cette méthode a été découverte en examinant le comportement de git cherry-pick --no-commit
, qui permet de comprendre comment Git gère ces fichiers. Cette approche reste utile pour identifier tout nouveau mécanisme si celui-ci venait à changer.
L'article explore cinq stratégies de déploiement populaires pour minimiser les risques et assurer une expérience utilisateur fluide lors de la mise en production de nouvelles fonctionnalités.
-
Blue/Green Deployment : Utilise deux environnements identiques pour permettre un retour en arrière instantané et garantir une disponibilité continue. Idéal pour les applications nécessitant un temps d'arrêt nul, comme la fintech ou la santé
-
Canary Deployment : Déploie progressivement les nouvelles versions à un petit groupe d'utilisateurs pour détecter les problèmes avant une mise en production complète. Adapté aux applications à grande échelle où les déploiements complets immédiats sont risqués
-
A/B Testing : Compare différentes variations d'une fonctionnalité pour déterminer laquelle performe le mieux. Utile pour les produits B2C axés sur l'optimisation du comportement utilisateur
-
Feature Flag Deployment : Permet de déployer du code sans l'activer immédiatement, facilitant les déploiements continus et les expérimentations. Convient aux équipes pratiquant la livraison continue
-
Rolling Deployment : Met à jour les instances progressivement, réduisant ainsi le temps d'arrêt. Adapté aux environnements conteneurisés et microservices
Le choix de la stratégie dépend de la tolérance au temps d'arrêt, de la taille de la base d'utilisateurs, de la complexité de l'infrastructure, des contraintes de coût et des besoins en expérimentation et analyse
L'article présente dix fonctions Python moins connues mais très utiles pour améliorer l'efficacité et la lisibilité du code. Voici un résumé des fonctions abordées :
- bisect : Permet de maintenir des listes triées et de trouver des points d'insertion efficacement.
- itertools.pairwise : Génère des paires consécutives dans une séquence, utile pour l'analyse des tendances.
- statistics.fmean : Calcule la moyenne plus rapidement et avec une meilleure précision que
mean()
. - itertools.takewhile : Traite les séquences jusqu'à ce qu'une condition ne soit plus remplie.
- operator.attrgetter : Simplifie l'extraction d'attributs d'objets, utile pour le tri.
- itertools.chain.from_iterable : Aplatit les structures imbriquées de manière efficace.
- functools.cache : Met en cache les résultats de fonctions pour accélérer les calculs répétitifs.
- contextlib.suppress : Permet de gérer les exceptions de manière plus propre sans code superflu.
- pathlib.Path.glob : Recherche des fichiers correspondant à un motif spécifique dans un répertoire.
- dataclasses.asdict : Convertit facilement des objets en dictionnaires pour une manipulation ou une sérialisation JSON simplifiée.
Ces fonctions permettent de simplifier des opérations complexes et d'améliorer la performance du code.
L'article présente Rector, un outil de refactoring automatique pour PHP qui modernise le code, applique les bonnes pratiques et standardise les conventions. Il explique comment configurer et utiliser Rector, en mettant en avant ses avantages en termes de gain de temps, de cohérence et d'apprentissage. L'auteur partage sa configuration personnelle et des conseils pratiques pour intégrer Rector dans les projets, tout en soulignant l'importance de prévenir les erreurs courantes
.
L'article présente PHP-CS-Fixer, un outil qui standardise le format du code PHP pour assurer la cohérence. Il explique comment configurer et utiliser PHP-CS-Fixer, en mettant en avant ses avantages pour la maintenance du code, les revues de code, et l'intégration de nouveaux développeurs. L'auteur partage des conseils pratiques et des exemples de configuration pour tirer le meilleur parti de cet outil
.
Les tests d'architecture sont essentiels pour maintenir la cohérence et la maintenabilité d'un projet sur le long terme. Ils permettent de vérifier que le code respecte les règles architecturales définies, assurant ainsi une structure correcte et empêchant les dérives lors de l'ajout de nouvelles fonctionnalités ou de l'intégration de nouveaux développeurs. Ces tests servent également de documentation explicite des règles, facilitant l'intégration des nouveaux membres de l'équipe. Plusieurs outils, comme Deptrac, PHPArkitect, PHPat, et Pest, peuvent être utilisés pour mettre en place ces tests dans l'écosystème PHP, chacun ayant ses propres méthodes de configuration et d'utilisation.
Un comparatif des navigateurs (desktop, mobile) sur le respect de la vie privée
Le jour 3 a commencé par une keynote sur l'informatique quantique par Fanny Bouton d'OVHcloud, qui a expliqué que la suprématie quantique n'est pas attendue avant 15 à 30 ans. Elle a souligné l'importance de la formation et l'existence de six types d'ordinateurs quantiques en France. Ensuite, Thibaut Giraud a discuté des capacités des LLM (Large Language Models), notamment leur compréhension limitée mais non nulle. Laetitia Avrot a présenté des fonctionnalités méconnues de PostgreSQL à travers une mise en scène claire et amusante. L'auteur a manqué une session sur les tests de charge mais a participé à "Speechless", un exercice d'improvisation. L'après-midi a été écourtée par un départ anticipé, mais il a eu des discussions enrichissantes et a remercié l'équipe d'organisation et les sponsors.
L'auteur montre l'installation d'Anubis pour bloquer les robots des entreprises IA. Il utilise Traefik comme reverse proxy.
L'article est un guide complet sur l'utilisation de la commande systemctl : une interface qui permet de gérer les services sous Linux. L'auteur présente les commandes principales, comment définir des services SystemD, des bonnes pratiques, y compris en sécurité, etc.
L'auteur montre comment utiliser Docker Desktop sous Windows pour déployer un bac à sable Kubernetes
L'auteur explique brièvement ce qu'est OAuth2, puis détaille par étape comment l'implémenter dans Symfony.
Ploum met en lumière les dangers de l'incapacité à maintenir son attention (exemple du haut responsable américain qui invite un journaliste par erreur), les dangers de l'addiction aux réseaux sociaux pour les politiciens et les dangers de l'utilisation de ChatGPT pour masquer son incompétence en entretien d'embauche... alors que celle-ci sera nécessairement révélée dès les premiers jours du travail. Il appelle à une meilleure éducation pour éviter ces écueils et à soutenir la génération suivante, qui montre un désir d'apprendre et de s'engager.
L'auteur a nommé son article en référence à l'excuse improbable du "chien qui a mangé mon travail" :) L'architecture en micro-services n'est pas responsable de problèmes, mais les mauvaises décisions si ! L'auteur donne quelques pistes pour repérer les problèmes, et surtout comment s'en prémunir.
L'auteur montre, avec un exemple simple, comment utiliser Symfony Messenger pour découpler son code (traitement de statistiques de navigation)
L'auteur montre comment créer des règles métier personnalisées avec le Validator de Symfony
Omni est une application qui permet de gérer des machines Talos sur diverses plateformes, facilitant la création et la gestion de clusters Kubernetes. Elle utilise un réseau VPN Wireguard pour authentifier et piloter les machines Talos, simplifiant ainsi l'infrastructure Kubernetes. Omni permet également de créer des templates de clusters pour automatiser le déploiement de machines virtuelles, notamment avec Kubevirt. Cependant, Omni présente des limitations, notamment l'absence de gestion automatisée des infrastructures cloud. L'intégration de Kubevirt permet de créer des VMs sur un cluster Kubernetes, mais nécessite une configuration spécifique, incluant l'installation de Kubevirt, CDI, et LocalPathProvisioner.
La KubeCon 2025 a souligné l'importance de la sécurité dans Kubernetes avec des solutions innovantes :
- Policy as Code : Automatisation de la conformité.
- Sécurité Réseau : Avancées avec Cilium et Hubble.
- Kyverno : Évolutions pour une gestion des politiques améliorée.
Ces innovations visent à sécuriser et rendre conformes les clusters Kubernetes.
L'auteur imagine comment a été décidé l'ajout d'écran de veille Oqee sur la Freebox... et c'est triste.
Les conseils sont excellents... et marchent aussi pour les adultes ^^
C'est juste magnifique
Ploum illustre par divers exemples l'impact négatif de l'IA sur nos vies : souvenir, vérité, apprentissage, confiance en soi, connaissance, personnalité, etc. Il conclut par une invitation à découvrir Gemini via l'agrégateur Planet Gemini France
L'auteur présente brièvement ce qu'est la "screaming architecture" et ses avantages
L'auteur distingue 2 sortes de personnes à propos de l'exécution des projets : ceux qui en commencent beaucoup, mais en finissent peu (les "starters"), et ceux qui finissent tout le temps leurs projets (les "finishers") même s'ils en commencent peu. Les 3 étapes qui suivent permettent aux starters d'achever plus de projets :
- être spécifique -> le but doit être le plus clair possible
- être bref -> quitte à découper les projets au long cours en étapes courtes
- ne faire qu'un seul projet à la fois -> ne pas s'éparpiller
L'article explique comment transformer des blocs de code if-else
en utilisant le patron Strategy avec Symfony pour éviter un code complexe et difficile à maintenir. L'auteur montre comment séparer les implémentations dans des classes distinctes et utiliser le conteneur de services de Symfony pour gérer les dépendances de manière efficace. Le résultat est un code plus propre et facile à lire, utilisant des expressions match
pour mapper les types d'actifs aux classes API appropriées.
L'article explique ce qu'est un monolithe modulaire et quand il doit être préféré à une architecture de microservices.
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.
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 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".
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