Hebdomadaire Shaarli
Semaine 48 (November 24, 2025)
Nicolas Jourdan explique comment créer des commandes personnalisées pour Symfony Console de manière professionnelle avec Symfony 7.4. L'article montre l'évolution des bonnes pratiques en partant d'une approche classique, puis en introduisant les commandes invocables et les attributs d'entrée pour un code plus propre et plus lisible. L'exemple concret d'une commande pour importer des avis clients depuis un fournisseur externe illustre ces améliorations.
La page "N8N Workflow Collection" propose une vaste collection de plus de 4 300 workflows d'automatisation professionnelle, classés en 16 catégories. Elle permet de rechercher et parcourir ces workflows, allant de tâches simples à des automatisations complexes impliquant plusieurs services. Chaque workflow est détaillé avec son niveau de complexité, le nombre de nœuds utilisés, les services intégrés, et propose des options pour télécharger le fichier JSON ou copier l'ID du workflow. Des exemples notables incluent des automatisations pour LinkedIn, OpenAI, et des processus métiers variés.
L’auteur montre comment un service « simple » qui orchestre plusieurs effets secondaires (sauvegarde, envoi d’e-mail, tracking analytics…) peut sembler propre et fonctionner en développement — mais devient une « bombe à retardement » en production : latence, états partiels incohérents, logique métier mélangée à l’orchestration. Comme solution, il recommande d’introduire d’abord des Domain Events pour découpler la logique métier des effets secondaires, puis d’utiliser le pattern Outbox pour garantir l’atomicité entre la persistance des entités et des événements, et enfin — lorsque les étapes sont critiques (paiement, création de wallet, etc.) — d’opter pour un pattern Saga pour assurer soit la réussite de l’ensemble, soit la compensation en cas d’échec.
Garage est un service de stockage d'objets distribué open-source conçu pour l'auto-hébergement. Il est léger, efficace et conçu pour être résilient face aux pannes réseau, aux latences et aux défaillances de disque. Avec des exigences matérielles minimales, il peut être déployé sur des machines hétéroclites et fonctionne sur Internet à travers plusieurs centres de données. Garage implémente l'API Amazon S3, ce qui le rend compatible avec de nombreuses applications. Le projet a bénéficié de financements publics et est soutenu par des recherches récentes en systèmes distribués.
Il s'agit d'un tutoriel détaillé sur l'utilisation de Rsnapshot pour des sauvegardes locales. L'auteur explique comment configurer et automatiser des sauvegardes sur un disque dur externe avec Rsnapshot, un outil robuste et simple. Le processus inclut la préparation du disque, son montage, la configuration de Rsnapshot, et l'automatisation des sauvegardes. Le tutoriel est basé sur AlmaLinux 9, mais les informations peuvent être adaptées à d'autres distributions. L'article met en avant la pertinence des concepts depuis leur publication en 2003, démontrant la robustesse de la solution.
Découvrez comment l’outil libre Ansible peut transformer la gestion de votre infrastructure : plutôt que d’intervenir manuellement sur chaque machine, Ansible vous permet, depuis un point central, de piloter des milliers de serveurs simultanément — installer des paquets, déployer des configurations, redémarrer des services, effectuer des mises à jour — le tout de façon automatisée, reproductible et sans agent sur les serveurs cibles. Simple, fiable et très efficace, c’est un incontournable pour quiconque gère un parc multiple de serveurs.
L’article présente comment ajouter facilement un portail d’authentification centralisé à ses applications web en combinant Traefik et Tinyauth. Grâce au mécanisme ForwardAuth, Tinyauth s’intercale entre Traefik et vos services pour gérer une page de login unifiée, avec prise en charge des comptes locaux, OAuth ou LDAP. Léger, simple à déployer via Docker, et personnalisable, ce duo offre une solution propre et efficace pour sécuriser un home-lab ou un environnement multi-services sans recourir à des outils plus lourds comme Keycloak ou Authentik.
Ce billet de blog explique comment transformer un serveur Proxmox VE en nœud Kubernetes en utilisant LXC et lxcri, un runtime de conteneurs compatible CRI pour LXC. L'auteur, bien conscient du côté inutile du projet, décrit les étapes pour installer et configurer cri-o et lxcri sur Proxmox VE, malgré les défis techniques et les bugs rencontrés. Le but est de réutiliser au maximum les technologies existantes de Proxmox, notamment LXC, pour intégrer le serveur dans un cluster Kubernetes. Un projet audacieux et instructif pour les amateurs de virtualisation et de conteneurs.
L'article de LVLUP.fr explore pourquoi le management par le contrôle est obsolète et comment Netflix a révolutionné cette approche. En abolissant les politiques de congés et de notes de frais, Netflix a libéré la motivation intrinsèque de ses employés, générant des revenus cinq fois supérieurs à la moyenne du secteur. Basé sur la Théorie de l'Autodétermination, ce modèle repose sur trois piliers : l'autonomie, la compétence et l'appartenance sociale. En traitant les employés comme des adultes responsables et en leur donnant la voix sur les décisions, Netflix a créé une culture d'entreprise performante et innovante.
L'article explore comment concevoir des produits numériques adaptés aux situations de stress et d'urgence. Vitaly Friedman y partage des conseils pratiques pour créer des interfaces qui aident les utilisateurs à naviguer dans des contextes complexes, tout en minimisant leur charge cognitive. Il souligne l'importance de comprendre l'environnement réel des utilisateurs, les effets du stress sur l'interaction avec les produits et propose des stratégies pour améliorer l'expérience utilisateur dans des moments critiques.
Ce tutoriel explore les possibilités offertes par CSS Subgrid, une fonctionnalité récente de CSS Grid qui permet d'étendre la mise en page à travers l'arborescence DOM. Contrairement à ce qu'il pensait initialement, Subgrid ouvre des portes à de nouvelles interfaces utilisateur. L'article explique les bases de Subgrid, ses pièges courants et montre des exemples concrets d'utilisation. Il est destiné aux développeurs déjà familiers avec les bases de CSS Grid.
L'article de LVLUP.fr compare l'efficacité des modèles de langage (LLM) comme ChatGPT, Gemini et Claude avec une méthode mathématique des années 60 pour générer des plannings hospitaliers. Les LLM échouent avec un taux de réussite de 8% et créent des erreurs, tandis que Google OR-Tools, une solution de programmation par contraintes, génère un planning parfait en moins d'une seconde avec 100% de fiabilité. L'article souligne que pour des contraintes strictes, le déterminisme des solveurs est préférable à la créativité des LLM. Il illustre cela à travers un cas concret de planification pour un service hospitalier de 5 infirmiers, en insistant sur l'importance de modéliser les processus et les contraintes avant d'automatiser.
Une astuce pour donner plusieurs adresses de push pour le même remote
Dufs est un serveur de fichiers léger en Rust, offrant des fonctionnalités WebDAV pour un stockage "drive" simple et rapide à configurer, contrairement à des solutions comme Nginx. Il permet de gérer des fichiers via une interface web ou des applications compatibles WebDAV comme Enpass, Obsidian, ou Koreader. Le tutoriel explique comment l'utiliser avec Nomad pour une auto-hébergement, en sécurisant les identifiants avec Vault.
Ce journal explique comment créer un timelapse sur une longue période (3 semaines) en utilisant ffmpeg et bash. L'auteur décrit les étapes détaillées pour acquérir des images, les moyenner, générer des clips, les concaténer, accélérer la vidéo et ajouter du son. Les scripts fournis automatisent ces processus, facilitant ainsi la création de timelapses. Un partage utile pour ceux qui souhaitent automatiser la création de vidéos timelapse.
Ce billet de blog de LVLUP.fr met en lumière les impacts négatifs des heures supplémentaires sur la productivité et la culture d'entreprise. En valorisant le présentéisme, les entreprises sabotent leur propre performance, perdent des talents et s'exposent à des risques juridiques. Les données montrent que les heures supplémentaires réduisent la productivité, augmentent les coûts liés au présentéisme et au turnover, et peuvent entraîner des problèmes de santé mentale. L'auteur souligne l'importance de privilégier l'efficacité et la qualité de vie au travail (QVCT) pour attirer et retenir les meilleurs talents.
Ce guide explique comment étendre un volume EBS sur une instance EC2 sans interruption de service. La procédure inclut la création d'un snapshot de sécurité, l'extension du volume via la console AWS ou l'AWS CLI, l'ajustement de la partition Linux avec growpart, et enfin l'extension du système de fichiers (ext4 ou xfs). L'opération est sans risque si les étapes sont suivies correctement.
Dans cet article, l'équipe de JoliCode décrit comment ils ont migré un petit projet en production de Symfony 7.3 vers la toute récente version 8.0, en passant d’abord par la 7.4 pour corriger l’ensemble des dépréciations : après avoir mis à jour les « recipes » via Symfony Flex, ajusté les dépendances (souvent en forçant les forks des bundles encore non compatibles), modifié les imports d’attributs (ex. @Route → #[Route]) et les appels aux contraintes (remplacement d’arguments de type tableau par des arguments nommés), ils ont finalement basculé sous PHP 8.4 et lancé Symfony 8 avec succès en production. Le bilan est positif : l’opération s’est révélée relativement simple pour un petit code-base — mais JoliCode rappelle que, pour un projet sérieux, rester sur Symfony 7.4 (version LTS) reste un choix plus prudent.
Kevin Goldsmith partage ses réflexions sur l'importance d'une stratégie technique claire et documentée pour les organisations technologiques. Il souligne que l'absence de stratégie commune entraîne des décisions divergentes, des choix architecturaux inadaptés et une frustration des partenaires produits. Une bonne stratégie doit être alignée avec les objectifs business, cohérente, compréhensible, et évolutive. Goldsmith recommande de travailler à rebours en imaginant le futur état souhaité pour définir les étapes nécessaires pour y parvenir.
L'article explique pourquoi une entreprise a migré son backend de Python à Node.js seulement une semaine après son lancement. Malgré les conseils habituels de ne pas s'inquiéter de l'échelle au début, ils ont choisi de le faire pour des raisons de scalabilité. L'auteur, un fan de Django, a rencontré des difficultés avec le code asynchrone en Python, trouvant la mise en œuvre complexe et peu intuitive. Il attribue ces problèmes aux fondations instables de l'asynchrone en Python, contrairement à des langages comme JavaScript ou Go qui l'ont intégré dès le départ. Des articles de blog récents ont confirmé ces observations. L'expérience a révélé plusieurs limitations, comme l'absence de support natif pour l'E/S de fichiers asynchrones, le manque de support complet pour l'asynchrone dans Django, et la nécessité de convertir constamment entre code synchrone et asynchrone. Ces défis ont finalement conduit à la décision de migrer vers Node.js.
Dans son article The Accessibility Problem With Authentication Methods Like CAPTCHA sur Smashing Magazine, l’auteure revient sur l’usage — devenu presque systématique — des CAPTCHA et autres méthodes d’authentification pour protéger les sites contre les robots. Elle montre comment ces dispositifs (reconnaissance d’images, textes déformés, puzzles visuels, défis audio, etc.) posent de réels problèmes d’accessibilité : de nombreux utilisateurs — notamment en situation de handicap visuel, auditif, moteur ou cognitif — sont ainsi exclus. L’article invite à repenser la vérification d’identité en ligne en faveur de méthodes inclusives (authentification multifacteur, “magic links”, vérifications invisibles…) qui assurent à la fois sécurité et accès égalitaire
Kubernetes 1.34 introduit les Pod-level resources, une fonctionnalité en béta qui simplifie la gestion des ressources pour les pods contenant plusieurs conteneurs. Contrairement à la croyance initiale de l'auteur, la QoS Guaranteed ne nécessite pas que tous les conteneurs aient les mêmes limites et demandes de ressources, mais seulement que chaque conteneur respecte cpu.limit = cpu.request et memory.limit = memory.request. Les Pod-level resources sont utiles pour les conteneurs peu gourmands ou injectés dynamiquement, évitant ainsi de spécifier des limites et demandes pour chaque conteneur individuellement. Cela simplifie la gestion des ressources, surtout lorsque des conteneurs annexes comme des sidecars sont ajoutés ou modifiés.
Ce guide compare SSHGuard et Fail2ban pour la protection SSH sur Debian/Ubuntu. SSHGuard, écrit en C, est plus léger (1-2 Mo) et utilise un parseur lexical natif, tandis que Fail2ban, en Python, consomme plus de ressources (9 Mo à 2.5 Go) et repose sur des expressions régulières. SSHGuard est idéal pour les serveurs avec ressources limitées et une protection SSH prioritaire, tandis que Fail2ban convient pour protéger plusieurs services avec des règles personnalisées. Le guide explique aussi l'installation, la configuration de base et le système de scoring de SSHGuard.
Dans cet article, Rémi Verchère partage son expérience de création et de gestion de plusieurs clusters Kubernetes Talos sur Docker pour une démo ArgoCD multi-clusters. Il détaille les étapes de configuration réseau, la création des clusters avec des CIDR dédiés, et les défis rencontrés pour assurer la communication inter-clusters. Des scripts d'automatisation et des commandes talosctl sont fournis pour faciliter le processus. Un guide pratique pour ceux qui souhaitent expérimenter des architectures multi-clusters en local.
L'auteur explique de manière vulgarisée ce qu'il advient d'un fichier supprimé. Contrairement à une idée reçue, un fichier supprimé n'est pas immédiatement effacé du disque. Le système d'exploitation supprime simplement la référence au fichier dans son annuaire, laissant les données intactes jusqu'à ce qu'elles soient écrasées par de nouveaux fichiers. Cela peut poser des problèmes de sécurité, mais aussi offrir des possibilités de récupération de données. Le blog évoque également des solutions pour une suppression définitive, comme le chiffrement ou des utilitaires spécifiques.
Ahmad Bilal partage 50 erreurs courantes en TypeScript pour éviter les pièges et améliorer la qualité du code. L'article explique comment TypeScript, bien que prometteur, peut donner une fausse impression de sécurité si mal utilisé. Il couvre des erreurs basiques (comme l'utilisation abusive de any ou l'ignorance des avertissements du compilateur) et des pièges plus avancés (comme la confusion entre null et undefined ou l'oubli du type never). Un guide pratique pour mieux maîtriser TypeScript.
Cet article de CSS-Tricks explore les fonctions trigonométriques inverses en CSS : asin(), acos(), atan() et atan2(), souvent considérées comme les fonctionnalités les moins aimées selon le State of CSS 2025. L'auteur, Juan Diego Rodríguez, explique comment ces fonctions permettent de retrouver un angle à partir d'une valeur trigonométrique, contrairement aux fonctions sin(), cos() et tan() qui font l'inverse. Il détaille leurs définitions, leurs domaines et plages de valeurs, ainsi que leurs applications pratiques, en mettant en avant l'utilité particulière de atan() et atan2() pour déterminer des angles dans divers contextes.
Ce billet de blog explique comment sécuriser une fonctionnalité d'import de fichiers en corrigeant les failles SSRF (Server Side Request Forgery) et XXE (XML External Entity). L'auteur décrit comment une vulnérabilité a été découverte dans son application Writizzy, permettant à un utilisateur malveillant d'accéder à des fichiers sensibles du serveur via des requêtes internes ou des protocoles non sécurisés. Des solutions sont proposées pour vérifier les protocoles utilisés et bloquer les accès aux URLs privées ou locales.
L'article explore l'architecture DCI (Data, Context, Interaction) proposée par Trygve Reenskaug et James O. Coplien en 2009, qui critique l'approche traditionnelle de la programmation orientée objet (POO) pour sa difficulté à capturer les comportements complexes et les collaborations entre objets, essentiels pour aligner le modèle mental de l'utilisateur avec le fonctionnement du logiciel. Les auteurs soulignent que la POO excelle dans la modélisation des structures mais échoue à représenter les interactions complexes, comme un transfert d'argent entre comptes, qui sont pourtant centrales dans la compréhension utilisateur. L'article propose une réflexion sur l'amélioration de l'architecture logicielle pour mieux refléter ces interactions.
Ce guide explique comment implémenter la validation dans une architecture Domain-Driven Design (DDD) en suivant une approche par couches. Il souligne l'importance de maintenir l'intégrité des objets de domaine, de valider uniquement ce pour quoi chaque couche est responsable, et d'éviter la duplication de la logique de validation. L'article détaille les meilleures pratiques pour la validation dans la couche de domaine (objets de valeur, entités et services de domaine) et la couche d'application (validation des commandes et orchestration des cas d'utilisation). Il met en avant l'importance de fournir des messages d'erreur clairs et de valider rapidement.
Découvrez 17 fonctionnalités récentes de JavaScript qui pourraient vous avoir échappé. Cet article explore des innovations comme Intl.ListFormat pour formater des listes selon les règles locales, Intl.RelativeTimeFormat pour afficher des temps relatifs, et Intl.DurationFormat pour décrire des durées de manière appropriée à la langue. Il aborde aussi des améliorations pour les objets, les tableaux et les chaînes de caractères, offrant des solutions légères et efficaces pour réduire les dépendances. Parfait pour ceux qui veulent moderniser leur code ou simplifier leurs projets.
Dans cet article, l'auteur partage son retour d’expérience sur la Opquast, après l’avoir passée récemment. Avec près de 20 ans de carrière dans le développement front-end, l’auteur explique comment cette certification — fondée sur un référentiel de 240 règles et le modèle VPTCS (Visibilité, Perception, Technique, Contenus, Services) — a transformé sa vision de la “qualité web”, en lui apportant un cadre clair, des bonnes pratiques consolidées et un vocabulaire commun à toute l’équipe. Même si certaines questions de l’examen lui ont semblé parfois « piégeuses », le bilan reste très positif : la formation permet de structurer des compétences souvent acquises de façon informelle, de renforcer l’expertise — notamment en accessibilité, sécurité et contenu — et de donner une légitimité supplémentaire dans des projets web exigeants. Une lecture utile pour quiconque envisage de passer Opquast ou s’intéresse à l’assurance qualité web.
Le protocole ARP — souvent invisible mais absolument essentiel — joue le rôle de “traducteur” entre les adresses IP (utilisées par les protocoles réseau) et les adresses MAC (adresses physiques des interfaces réseau). Dans cet article, IT-Connect explique comment ARP fonctionne dans un réseau local : requêtes, réponses, cache ARP, et montre pourquoi sans lui aucun paquet Ethernet ne pourrait atteindre sa destination. Vous y découvrirez aussi les commandes utiles pour gérer le cache, ainsi que les risques de sécurité liés à des attaques comme l’ARP-spoofing, et les bonnes pratiques pour s’en prémunir.
Un service officiel de l'état bien pratique (via Sebsauvage)
L'auteur présente des démos des possibilités de l'API View Transition : elle permet d'améliorer graphiquement le passage d'une page à l'autre en rendant la transition moins abrupte. Il s'agit d'un argument en moins pour la création d'une Single Page Application.
Ploum compare l'utilisation des LLMs pour générer du texte à l'écriture de code non sécurisé, soulignant que l'absence de défauts apparents ne garantit pas la qualité. Il critique l'utilisation des LLMs pour produire du texte, affirmant qu'une partie des lecteurs (sinon tous) remarqueront la médiocrité du contenu. Il encourage l'honnêteté et l'amélioration continue, suggérant de publier les invites (prompts) plutôt que les textes générés, et met en garde contre la dépendance aux LLMs, qu'il assimile à une addiction destructrice.
L'auteur, DamyR, partage son expérience et ses réflexions sur l'utilisation de l'IA dans le domaine du SRE/DevOps. Il critique l'utilisation de l'IA pour la complétion de code dans les IDE, qu'il juge inefficace et perturbante pour son flux de travail. Il préfère les solutions traditionnelles comme les snippets et les LSP (Language Server Protocol), qu'il trouve plus efficaces et personnalisables. Cependant, il reconnaît les avantages de l'IA dans d'autres aspects de son travail, comme l'aide à la configuration de Neovim avec Claude, une IA externe. Il encourage à utiliser l'IA de manière ciblée et bénéfique, plutôt que de l'intégrer de manière contre-productive dans tous les outils.
Ce tutoriel explique comment créer des applications IA privées et auto-hébergées en utilisant Ollama et Laravel. Il aborde les préoccupations liées à la confidentialité des données et aux coûts variables des services d'IA tiers comme OpenAI. Ollama permet d'exécuter des modèles de langage open-source comme Llama, DeepSeek et Gemma sur vos propres infrastructures, offrant ainsi un contrôle total sur les données et les coûts. Le guide détaille les étapes pour installer Ollama, choisir les bons modèles en fonction de vos besoins et de votre matériel, et intégrer ces modèles dans une application Laravel via le package Laravel-Ollama. Un exemple concret de création d'un chatbot privé est également fourni.
Enix, spécialiste en gestion de plateformes Proxmox, a développé et open-sourcé pvecontrol, une CLI pour administrer efficacement des clusters Proxmox VE. Cet outil, conçu pour les équipes gérant plusieurs clusters, offre des fonctionnalités clés comme le listing des VMs multi-cluster, le drain intelligent des hyperviseurs et des sanity checks. Simple à installer via pipx, pvecontrol nécessite Python 3.9+ et Proxmox 8+. Il permet de visualiser l'état des clusters, déplacer les VMs en fonction des ressources disponibles et vérifier l'intégrité des clusters avant maintenance. La configuration se fait via un fichier YAML sécurisé, évitant le stockage direct des mots de passe. Plus d'infos et le code source sont disponibles sur leur dépôt GitHub.
L'article explore la théorie des deux facteurs de Frederick Herzberg pour motiver les salariés. Il distingue les facteurs d'hygiène (éviter l'insatisfaction : salaire, conditions de travail) des facteurs moteurs (générer la satisfaction : accomplissement, reconnaissance, autonomie). Herzberg identifie quatre profils d'employés selon leur niveau de satisfaction et d'engagement. L'objectif est de combiner de bonnes conditions de travail et un travail épanouissant pour maximiser la motivation et l'engagement des équipes.
Un développeur junior partage son expérience d'apprentissage de React et Next.js avec l'aide de ChatGPT comme mentor. En utilisant des techniques de prompting efficaces, comme demander des explications "comme si j'avais 5 ans", il a pu surmonter les défis initiaux et développer une méthode d'apprentissage progressive. Cette approche lui a permis de comprendre les concepts fondamentaux et d'évoluer vers des questions plus complexes, facilitant ainsi sa transition vers Next.js.