Hebdomadaire Shaarli

Tous les liens d'un semaine sur une page.

Semaine 35 (August 25, 2025)

La médecine fondée sur les preuves : un rempart contre le charlatanisme - Afis Science - Association française pour l’information scientifique

La médecine fondée sur les preuves (ou evidence-based medicine) s’est imposée comme un rempart essentiel contre le charlatanisme en santé. Née dans les années 1990, elle repose sur l’analyse rigoureuse et la hiérarchisation des études scientifiques disponibles, permettant d’évaluer objectivement l’efficacité des traitements médicaux. Cette approche, en s’appuyant sur des données probantes et un consensus médical, a permis de mieux contrôler la qualité des soins, de limiter les risques sanitaires et de distinguer clairement les pratiques validées des pseudo-médecines, souvent fondées sur des croyances ou des promesses non étayées. Elle incarne ainsi une rupture avec les superstitions et les pratiques non validées, offrant aux patients et aux professionnels de santé un cadre fiable pour des décisions thérapeutiques éclairées et sécurisées.

⚡️ Optimiser les Dev Containers 🐳 - Ourson’s blog

Pour optimiser les Dev Containers, l’auteur propose une approche basée sur les prebuilds : créer une image Docker générique (avec Zsh, Oh My Zsh, Docker-in-Docker, etc.) et la réutiliser comme base pour tous ses projets. Cela évite de reconstruire l’environnement à chaque fois et réduit le temps de démarrage. Il utilise aussi des volumes Docker pour persister l’historique des commandes et les dépendances Maven entre les conteneurs. Grâce à la CLI des Dev Containers, il construit et pousse ces images pré-configurées, puis les utilise directement dans ses projets (ex. : Java avec Maven, JBang, Quarkus). Résultat : des environnements prêts en quelques secondes, même si la taille des images reste conséquente. Une méthode idéale pour gagner en efficacité, surtout lors des changements de machine ou pour standardiser ses outils de dev.

🧑‍💻 A la découverte des Dev Containers 🐳 - Ourson’s blog

Les Dev Containers permettent de configurer un environnement de développement complet dans un conteneur Docker, évitant ainsi les conflits de versions et les installations locales fastidieuses. Idéal pour gérer plusieurs SDK (Java, NodeJS, Python, Ruby, etc.), ils rendent l’environnement portable et reproductible, ce qui est particulièrement utile pour les projets Open Source ou le travail sur différentes machines. Intégrés nativement à VSCode (et partiellement à IntelliJ Ultimate), ils offrent une expérience fluide : configuration as code, partage de projet clé en main, et isolation des outils. L’auteur illustre leur utilisation avec un blog Jekyll, soulignant la simplicité d’initialisation, la gestion automatique des ports, et la possibilité d’ajouter des outils ou extensions via des features. Bien que performants, leur usage peut impacter la mémoire et le stockage, mais les CDE (Cloud Development Environments) offrent une alternative pour les configurations légères. Une solution pratique pour standardiser et simplifier le développement !

Frontend coding with GPT-5

L’article Frontend coding with GPT-5 du Cookbook OpenAI illustre comment GPT-5 révolutionne le développement frontend en générant des applications complètes, en réalisant des refactoring complexes ou des modifications précises dans des codebases existantes, le tout en une seule itération. Le guide met en avant des principes efficaces et recommande des bibliothèques (Next.js, React, Tailwind CSS, shadcn/ui, Radix Themes, etc.) pour orienter le modèle. Grâce à sa capacité multimodale (texte et image), GPT-5 permet de créer ou adapter des interfaces rapidement, comme un site de jeux rétro ou un jeu Snake stylisé, en respectant les thèmes et styles existants. L’outil se révèle particulièrement puissant pour transformer des prompts simples en résultats de qualité professionnelle, ouvrant la voie à une créativité accrue en développement frontend.

Mise à jour de Debian 12 Bookworm vers Debian 13 Trixie

Ce guide détaille la procédure de mise à jour de Debian 12 (Bookworm) vers Debian 13 (Trixie), sortie officiellement le 9 août 2025. Après une sauvegarde complète du système, il faut mettre à jour les paquets actuels, remplacer « bookworm » par « trixie » dans le fichier /etc/apt/sources.list, puis lancer apt update et apt full-upgrade. La migration inclut une revue des changements de configuration et un redémarrage. Trixie apporte des améliorations de sécurité (Intel CET, ARM PAC/BTI), des environnements de bureau mis à jour (GNOME 48, KDE Plasma 6.3) et l’abandon progressif du support 32 bits. Après la mise à jour, il est conseillé de moderniser les sources avec apt modernize-sources et de purger les paquets obsolètes. La documentation officielle et la communauté peuvent aider en cas de problème.

Prompting Is A Design Act: How To Brief, Guide And Iterate With AI — Smashing Magazine

Suite de https://www.smashingmagazine.com/2025/08/week-in-life-ai-augmented-designer/ l’article présente le "prompting" comme un acte de design : au lieu de donner des instructions vagues à l’IA, il faut structurer ses demandes comme un brief créatif, en définissant clairement le rôle, le contexte, les contraintes et le format attendu. Le framework WIRE+FRAME (Who, Input, Rules, Expected Output + Flow, Reference, Ask, Memory, Evaluate) permet de concevoir des prompts précis et réutilisables, transformant l’IA en un collaborateur efficace – à l’image d’un stagiaire guidé. Résultat : des outputs plus pertinents, actionnables et adaptés aux workflows design ou produit, avec moins d’allers-retours. Une approche inspirée du design UX, qui rend les interactions avec l’IA plus intentionnelles et productives.

CSS Elevator: A Pure CSS State Machine With Floor Navigation | CSS-Tricks

CSS Elevator est un projet ingénieux démontrant comment créer une machine à états interactive (un ascenseur) en CSS pur, sans JavaScript. L’auteur utilise des variables CSS personnalisées (via @property), des compteurs, la pseudo-classe :has(), et des transitions pour simuler le déplacement entre les étages, calculer la durée des trajets, afficher la direction, et même gérer l’accessibilité avec aria-live. Les boutons radio servent de déclencheurs d’état, tandis que des astuces comme le délai de mise à jour des variables permettent de mémoriser l’état précédent. Le résultat est une animation fluide, réactive et accessible, prouvant que le CSS moderne peut gérer des logiques complexes, idéal pour des prototypes ou des environnements sans JavaScript.

GitHub - modelcontextprotocol/servers: Model Context Protocol Servers

Ce dépôt propose des implémentations de référence et une liste exhaustive de serveurs (officiels et communautaires) pour le Model Context Protocol (MCP), un standard open source permettant aux LLMs d’interagir de manière sécurisée avec des outils, APIs, bases de données et services externes. On y trouve des serveurs prêts à l’emploi pour GitHub, AWS, Slack, PostgreSQL, Notion, Stripe, et bien d’autres, ainsi que des frameworks (FastMCP, Spring AI) pour en développer facilement. Idéal pour automatiser des workflows, connecter des agents IA à des services SaaS, ou étendre les capacités des modèles comme Claude avec des actions concrètes (requêtes SQL, gestion de fichiers, appels API, etc.). Les serveurs s’intègrent directement avec des clients comme Claude Desktop ou Cursor via une simple configuration.

Organization - Month-End - Scott H Young

Scott H. Young partage son bilan d’un mois dédié à l’organisation et au rangement, après avoir lu cinq livres sur le sujet. Il en retire des principes clés : jeter avant de ranger, organiser par catégorie (et non par lieu), donner une place unique à chaque objet, et simplifier l’accès visuel aux affaires en évitant les contenants surchargés. Il souligne aussi que la plupart des papiers sont superflus et que le désencombrement passe par une phase de chaos avant d’aboutir à un espace plus fonctionnel et facile à maintenir. Malgré la difficulté du processus (notamment avec des enfants), il constate que ses espaces de vie et de travail sont désormais plus ordonnés et que l’effort d’entretien quotidien s’en trouve réduit. Une expérience qui l’incite à adopter une approche plus radicale face à l’accumulation d’objets inutiles.

Over engineering my homelab so I don't pay cloud providers

L’auteur raconte sa migration de services auto-hébergés depuis un VPS vers un mini-PC à domicile (un Minisforum UM880 Plus), en profitant de l’occasion pour mettre en place une infrastructure plus flexible et robuste avec Proxmox VE. L’objectif est de pouvoir expérimenter (notamment avec Kubernetes) sans risquer de casser sa production, tout en sécurisant ses données via le chiffrement disque et des sauvegardes solides. Après avoir installé Debian avec chiffrement LUKS, il automatise la configuration de Proxmox et du réseau (pont bridge) via Ansible, afin de pouvoir recréer rapidement son infrastructure en cas de vol ou de panne matérielle. Il prévoit d’utiliser OpenTofu et cloud-init pour déployer et configurer des machines virtuelles de manière reproductible, et Ansible pour gérer la configuration des services. Le billet détaille aussi les écueils rencontrés (comme le blocage au démarrage après l’installation de Proxmox, résolu en configurant une IP statique) et explique comment son playbook Ansible permet de tout réinstaller automatiquement. Une suite est annoncée pour aborder le déploiement de VM et la gestion des services avec Kubernetes.

Réflexion sur l’auto-hébergement. Petit serveur domestique – Restez Curieux !

L’article réfléchit sur l’auto-hébergement à domicile, une pratique qui consiste à gérer soi-même ses services (site web, mails, stockage, etc.) plutôt que de les confier à des prestataires externes. L’auteur rappelle que le cloud et le web reposent sur des machines physiques gérées par des tiers, ce qui soulève des questions de compétence, de sécurité, de souveraineté et de dépendance politique (exemples : incendie du datacenter OVH à Strasbourg, surveillance étatique). Bien que des solutions comme Yunohost ou OpenMediavault facilitent la mise en place d’un serveur domestique, l’auteur souligne les risques (pannes, attaques, perte de données) et la complexité de maintenir un service fiable et sécurisé 24/7. Il distingue l’auto-hébergement "pour jouer" (projets personnels, tests) de l’hébergement professionnel, qu’il préfère déléguer à des experts, même chez les GAFAM, pour des usages critiques (mails, site à fort trafic). Il partage son expérience avec un serveur Ubuntu hébergeant Nextcloud et MiniDLNA, mais conclut que l’auto-hébergement reste un loisir technique, réservé à des usages non essentiels et assumés en conscience des limites et des risques.

Pas de médaille pour les résistants

Encore un texte passionnant de Ploum qui fait réfléchir (et sourcé, toutes les sources lui permettant d'alimenter sa réflexion).

L'espionnage de masse est bien pire que ce que l'on imagine mais l'Europe protège un tout petit peu ses citoyens.
On est saturés d'indignation sans rien faire mais il y a quelques actions très concrètes (comme supprimer Whatsapp) : il faut accepter la difficulté, l'inconfort et le fait que ces actions ne seront jamais reconnues ou applaudies.
La merdification est à l'oeuvre de partout, même sur des applications qui paraissaient sûres puisque les fondateurs s'y étaient engagés... jusqu'à l'arrivée d'un gros chèque. Seul le logiciel libre peut lutter, à condition de ne pas chercher l'ajout de fonctionnalités superflues.
Ploum nous encourage aussi à ralentir et prendre du recul (cf son dernier échange avec Chris Brannons)
Enfin il nous encourage aussi à faire du vélo, comme symbole d'indépendance et de liberté.

La checklist de l’angoisse : allégez votre charge mentale - Agence LVLUP.fr

L’article propose un exercice simple pour identifier et réduire la charge mentale au travail, souvent source d’angoisse et de fatigue invisible. L’idée est de noter pendant une semaine toutes les petites contrariétés du quotidien (tâches répétitives, interruptions, demandes hors périmètre) sans les juger, afin de dresser un « relevé brut » de ce qui grignote temps et énergie. À l’issue de cette observation, trois questions clés permettent d’agir : automatiser les tâches répétitives, déléguer ce qui ne relève pas de son expertise, ou supprimer ce qui n’est plus nécessaire. L’objectif n’est pas une solution miracle, mais une prise de recul concrète pour reprendre le contrôle et alléger son quotidien, en se concentrant sur l’essentiel plutôt que sur l’accumulation de détails épuisants.

Un outil utile pour ceux qui se sentent débordés sans raison apparente !

Prometheus Grafana - Superviser vos serveurs - Français - Jj World

Ce tutoriel détaillé explique comment mettre en place une solution de supervision complète de vos serveurs avec Prometheus (pour la collecte et le stockage des métriques système) et Grafana (pour leur visualisation sous forme de tableaux de bord interactifs).
Il couvre l’installation et la configuration de Prometheus et Grafana via Docker sur un serveur dédié, ainsi que le déploiement d’exporters comme node_exporter (métriques système), cAdvisor (métriques containers Docker), process_exporter (métriques processus), et blackbox_exporter (tests de disponibilité des services). Le guide aborde aussi la sécurisation des interfaces, la création d’alertes, et l’intégration d’Alert Manager pour la gestion des notifications. Idéal pour surveiller en temps réel l’état de votre infrastructure et recevoir des alertes en cas de dépassement de seuils, avec des exemples concrets et des tableaux de bord Grafana prêts à l’emploi.

How TypeScript Patterns Translate to PHP — A Practical, Production-Proven Guide | by Kamran Khalid | Aug, 2025 | JavaScript in Plain English

L'auteur montre qu’il n’est pas nécessaire de migrer vers TypeScript pour bénéficier de sa rigueur : PHP 8.1+, couplé à des outils d’analyse statique (Psalm, PHPStan) et à des bibliothèques idiomatiques, permet d’obtenir des garanties similaires en typage, validation et maintenabilité. L’article détaille des équivalences concrètes : DTOs (classes typées + validation runtime), énumérations (PHP enums + match), génériques (via docblocks et analyse statique), métadonnées (attributs PHP), validation (Symfony Validator), gestion des erreurs (objets Result ou exceptions), et asynchrone (queues ou Fibers). L’approche est incrémentale, avec des exemples prêts à l’emploi, et met en avant les forces de PHP (écosystème mature, performances) tout en comblant l’écart avec TypeScript sur la sécurité et l’ergonomie. À retenir : combiner typage statique, validation aux frontières et design explicite pour un code PHP aussi robuste et maintenable qu’une base TypeScript, sans tout réécrire.

This One SQL Clause Made My Query 10x Faster | by Analyst Uttam | AI & Analytics Diaries | Medium

Un analyste confronté à une requête lente sur une table de 150 millions de transactions (2 minutes d’exécution, parfois des timeouts) a optimisé son code en utilisant une CTE (Common Table Expression) avec WITH. Au lieu de joindre d’abord les tables puis de filtrer, la CTE filtre d’abord les transactions récentes (20M de lignes au lieu de 150M), réduisant le temps d’exécution de 127 à 11 secondes. En allant plus loin et en agrégeant directement dans la CTE, il a même descendu ce temps à moins de 6 secondes. La clé ? Filtrer tôt pour alléger la charge de jointure, clarifier la logique, et exploiter les optimisations des moteurs modernes (PostgreSQL 12+, BigQuery). Attention toutefois : les performances varient selon le SGBD (risque de matérialisation en tables temporaires sous MySQL ancien). Une leçon simple : une requête bien structurée = des gains de performance majeurs.

Implement Multi Tenant Architecture in Symfony - DEV Community

L’article explique comment implémenter une architecture multi-tenant dans Symfony à l’aide du bundle Hakam Multi Tenancy Bundle. L’objectif est de créer une application SaaS où chaque client (tenant) dispose de sa propre base de données isolée, tout en partageant une infrastructure commune. L’architecture repose sur une base principale (pour les utilisateurs et les configurations) et des bases dédiées par tenant (pour les données métiers, comme les patients dans l’exemple d’une application médicale). Le tutoriel détaille la configuration du bundle, la séparation des entités (Main/Tenant), la création des fixtures, et l’automatisation de la commutation de contexte en fonction de l’utilisateur connecté. L’approche permet une isolation totale des données, une scalabilité optimisée et une maintenance simplifiée. Idéal pour les applications nécessitant une sécurité et une personnalisation par client.

Symfony AI : simplifier l'analyse de similarités de textes et l'interaction avec vos LLMs favoris - JoliCode

Symfony AI est un nouvel ensemble de composants PHP conçu pour faciliter l’intégration de l’intelligence artificielle dans les applications Symfony. Il propose notamment Platform, une interface unifiée pour interagir avec des plateformes d’IA (OpenAI, Mistral, Gemini, etc.) afin de vectoriser des textes (transformation en vecteurs numériques pour mesurer leur similarité), et Store, un système de stockage et de recherche optimisé pour les données vectorielles, compatible avec des bases comme Postgres, Redis ou Meilisearch. L’article illustre comment vectoriser des documents, les stocker, puis retrouver ceux qui sont sémantiquement proches grâce à des mesures comme la cosine similarity. Symfony AI permet ainsi de créer facilement des fonctionnalités avancées comme la recherche sémantique ou le RAG (Retrieval-Augmented Generation), tout en offrant la flexibilité de changer de fournisseur d’IA ou de base de données selon ses besoins. Une solution performante et modulaire pour exploiter l’IA en maîtrisant ses données.

What are OKLCH colors?

L'article explique que OKLCH est un modèle de couleur conçu pour être perceptuellement uniforme, c’est-à-dire que les variations de ses valeurs (Lightness, Chroma, Hue) correspondent mieux à la façon dont les humains perçoivent les couleurs. Contrairement à des modèles comme RGB ou HSL, OKLCH permet de créer des palettes de couleurs cohérentes en luminosité et en intensité, même en changeant seulement la teinte ou la clarté. Il évite les déformations de couleur lors de la création de dégradés ou de nuances, et supporte une gamme de couleurs plus large que le sRGB, notamment sur les écrans modernes (Display-P3). Bien que compatible avec les navigateurs récents, il est conseillé de prévoir des alternatives pour les anciens navigateurs. Un outil comme oklch.fyi facilite la génération et la conversion de palettes OKLCH. Idéal pour les designers et développeurs cherchant plus de précision et de cohérence visuelle.

Créer une machine virtuelle Windows 11 · Accueil

Créer une machine virtuelle Windows 11 avec VirtualBox – Ce guide explique comment installer Windows 11 dans une VM, en utilisant une licence d’évaluation gratuite (90 jours) ou une version non activée, suffisante pour un usage ponctuel. L’auteur détaille les étapes pour contourner l’obligation de compte Microsoft lors de l’installation (via la commande OOBE\BYPASSNRO), optimiser la VM avec les VirtualBox Guest Additions, désinstaller les applications et services indésirables (Edge, OneDrive, Copilot, etc.), et configurer un environnement propre et respectueux de la vie privée. Il aborde aussi l’installation d’un navigateur alternatif comme LibreWolf, le nettoyage des paramètres de confidentialité, et propose des astuces pour personnaliser l’interface. Un bonus est consacré à la configuration de Rust pour la compilation. L’article souligne la complexité de "dépolluer" Windows 11, tout en reconnaissant les améliorations ergonomiques par rapport à Windows 10.

« Restriction » entre VirtualHosts Apache – Blog Evolix

L’article explique les mécanismes de restriction entre VirtualHosts sous Apache, notamment avec le renforcement introduit dans la version 2.4.64 (juillet 2025). En HTTP, Apache sélectionne le VirtualHost via l’entête Host, sans restriction particulière. En HTTPS, l’extension SNI permet de sélectionner le bon certificat avant le chiffrement. Apache bloque désormais les requêtes dont l’entête Host ne correspond pas au SNI présenté (erreur 421 Misdirected Request), y compris en l’absence de SNI, suite à la correction de la faille CVE-2025-23048. Ce changement peut impacter les configurations existantes, comme celles utilisant HAProxy ou des outils de monitoring, qui doivent désormais explicitement activer le SNI pour éviter les blocages. Les serveurs sous Debian 12 (bookworm) recevront cette mise à jour début septembre 2025.

A Week In The Life Of An AI-Augmented Designer — Smashing Magazine

L’article raconte l’expérience de Kate, une designer UX fictive dans une FinTech, qui intègre l’IA dans son processus de design sprint sur une semaine. Chaque jour, elle explore comment l’IA peut l’aider à comprendre les besoins des utilisateurs, générer des idées, critiquer des concepts, prototyper et tester, tout en restant centrée sur l’humain. L’IA accélère certaines tâches (synthèse de données, génération d’idées, création de prototypes), mais Kate réalise qu’elle doit constamment superviser, vérifier et adapter les résultats pour éviter les erreurs ou les biais. Elle souligne l’importance de conserver des compétences purement humaines comme l’empathie, la pensée critique et la curiosité, car l’IA reste un outil complémentaire, pas un remplaçant. L’article montre que l’IA peut être un collaborateur créatif, à condition de l’utiliser avec discernement et de ne pas lui déléguer le jugement ou la compréhension fine des utilisateurs. Une réflexion utile pour les designers souhaitant adopter l’IA sans perdre leur touche humaine.

Récupérer les logs d'audit MKS avec Vector | Rémi Tech Notes

L’article explique comment récupérer les logs d’audit du control-plane des clusters Managed Kubernetes Service (MKS) d’OVHCloud, normalement accessibles uniquement via leur Logs Data Platform (LDP). L’auteur utilise Vector (v0.49.0), qui introduit un nouveau plugin websocket, pour capter ces logs en temps réel depuis l’URL WebSocket fournie par OVHCloud. Après une configuration locale simple (fichier YAML définissant une source websocket et un sink console), les logs sont récupérés, nettoyés via des transformations (remap), puis formatés en JSON. Cette méthode permet d’exporter les logs vers sa propre stack d’observabilité (Loki, ELK, etc.) ou vers d’autres environnements, offrant ainsi plus de flexibilité pour l’archivage ou l’analyse. Une solution efficace et légère, idéale pour compléter une stack d’observabilité existante.

Authorization Explained: When to Use RBAC, ABAC, ACL & More | Level Up Coding

L’authorization (autorisation) intervient après l’authentification pour déterminer ce qu’un utilisateur est autorisé à faire dans un système. Trois modèles principaux structurent cette gestion des permissions : le RBAC (Role-Based Access Control), où les utilisateurs se voient attribuer des rôles (admin, éditeur, lecteur) avec des droits prédéfinis, idéal pour sa simplicité et son évolutivité (ex. : Stripe, GitHub) ; l’ABAC (Attribute-Based Access Control), qui base l’accès sur des attributs utilisateurs ou contextuels (département, heure, localisation), offrant une grande flexibilité mais une complexité accrue ; et les ACL (Access Control Lists), où chaque ressource possède sa propre liste de permissions (ex. : Google Drive), précises mais difficiles à gérer à grande échelle. En pratique, les applications combinent souvent ces modèles (comme Firebase avec des règles hybrides RBAC/ABAC). Des outils comme OAuth2 (délégation sécurisée d’accès) et les JWT (jetons transportant identités et rôles) permettent d’appliquer ces règles de manière sécurisée et distribuée. L’autorisation repose ainsi sur un équilibre entre granularité, performance et sécurité, mêlant modèles et mécanismes pour répondre aux besoins spécifiques des systèmes modernes.

Optimizing PWAs For Different Display Modes — Smashing Magazine

Optimiser les PWAs selon leurs modes d’affichage — Les Progressive Web Apps (PWA) permettent de transformer une application web en une expérience proche du natif, mais cela peut aussi supprimer des fonctionnalités essentielles du navigateur (boutons retour, partage d’URL, etc.). L’article explique comment utiliser les requêtes média display-mode (standalone, fullscreen, minimal-ui, browser) et JavaScript pour adapter l’interface et l’expérience utilisateur en fonction du mode d’affichage. Par exemple, masquer les incitations à l’installation pour les utilisateurs ayant déjà installé l’app, ajouter des alternatives aux contrôles du navigateur, ou personnaliser le contenu pour un usage plus "app-like". Une approche progressive et ciblée permet de créer des PWAs plus intuitives et adaptées à chaque contexte d’utilisation.

Symfony, Doctrine et Triggers SQL : une tentative de réconciliation | Les-Tilleuls.coop

Symfony, Doctrine et les triggers SQL sont souvent en tension : les triggers offrent une robustesse et une atomicité inégalées pour des logiques critiques (audit, validation, compteurs), mais leur gestion dans un projet Symfony reste complexe, car leur code SQL est souvent perdu dans des migrations ou invisible pour les développeurs. Le Trigger Mapping Bundle propose une solution élégante en permettant de déclarer les triggers directement dans les entités via des attributs PHP, les rendant ainsi visibles, versionnables et gérables comme le reste du code. Le bundle offre des commandes pour intégrer, créer, valider et mettre à jour les triggers, tout en facilitant la transition depuis un projet existant. L’objectif ? Réconcilier la puissance des triggers SQL avec la philosophie de Symfony et Doctrine, en choisissant le bon outil selon le besoin : trigger pour l’intégrité des données, listener Doctrine pour la logique applicative. Une approche qui réduit la dette technique et améliore la maintenabilité.

Les Défavorisés | Grise Bouille

Une superbe adaptation des Misérables de Victor Hugo à notre époque. Comme le souligne Gee, cette oeuvre a vraiment peu vieilli à tous les niveaux : la misère et les misérables sont 'toujours bien là, en France, en 2025".

Mon infrastructure pour 2025, des news diverses et mon abandon de Proxmox

L'auteur détaille sa migration d’infrastructure en 2025, marquée par l’abandon de Proxmox au profit d’Hyper-V, principalement pour des raisons de performances et de gestion des sauvegardes : ZFS et PBS (Proxmox Backup Server) étaient devenus inadaptés à ses besoins, avec des vitesses de backup limitées à 100-150 Mbps contre 2 Gbps avec Hyper-V et Veeam, essentiel pour ses 7-8 To de données quotidiennes. Son infrastructure repose désormais sur deux serveurs sous Windows Server 2022 : un Supermicro X10SDV-4C-TLN4F (stockage NVMe et HDD en RAID 1) pour l’hyperviseur et un vieux HP MicroServer Gen8 (mis à niveau réseau et stockage) pour les backups, le tout protégé par un UPS APC reconditionné. Les VM, majoritairement sous Debian 12, incluent Ansible (avec Semaphore), LibreNMS, Home Assistant, Paperless-ngx, Jellyfin, Passbolt, Proton-backup, Wazuh et un serveur web. Le réseau est entièrement en 10 Gbps (catégorie 6 STP), avec un firewall OPNsense sur un NUC Intel N100. L’automatisation via Ansible/Semaphore gère mises à jour, backups (local, disques externes rotatifs, Backblaze B2 chiffré) et monitoring, respectant la règle 3-2-1. Il évoque aussi son wiki technique (xWiki) et son désengagement partiel du blog, critiquant l’impact des IA (comme Gemini) sur la visibilité des contenus humains, tout en reconnaissant leur utilité ponctuelle pour la veille ou l’écriture de scripts. Enfin, il souligne la désaffection des blogs au profit des réseaux sociaux et de l’IA, sans pour autant fermer son espace.

Réviser nftables et fail2ban face à un flot massif de requêtes web pourries - GuiGui's Show

Le 17 août 2025, le blog de l’auteur a subi un incident informatique : environ 179 000 requêtes web en 14 heures, ciblant uniquement trois fichiers sitemap.xml, provenant de 168 000 adresses IP uniques (majoritairement IPv4). L’attaque, jugée naïve et peu sophistiquée, a permis à l’auteur de réviser ses connaissances sur nftables et fail2ban. Après avoir bloqué l’accès aux fichiers ciblés via Apache, il a tenté de filtrer les requêtes avec fail2ban, mais a dû ajuster sa stratégie face à la charge : bannissement par grands blocs d’IP (/8 puis /16 en IPv4), limitation du trafic entrant, et enfin blocage par pays (sauf France). Malgré des erreurs initiales (rechargement intempestif de fail2ban, lecture complète des logs), l’incident a été maîtrisé en combinant ces outils et en nettoyant les logs pour éviter d’alourdir les sauvegardes. L’auteur souligne l’importance de bien connaître ses outils avant un incident et partage des commandes utiles pour nftables et fail2ban.

Un retour d’expérience technique et pédagogique sur la gestion d’un flux massif de requêtes indésirables.

Modern font loading guide | DeepakNess

Ce guide explique comment optimiser le chargement des polices web pour éviter de ralentir un site : privilégiez le format WOFF2 (le plus efficace et universel), hébergez vos polices vous-même pour améliorer les performances et la vie privée, et utilisez font-display: swap pour afficher immédiatement un texte de repli avant le chargement de la police personnalisée. Pensez à pré-charger les polices critiques avec <link rel="preload" as="font" ...>, à sous-ensembliser les polices (unicode-range) et à éviter les formats obsolètes (TTF, OTF, etc.). Intégrez les déclarations @font-face directement dans le <head>, choisissez des polices de repli système bien adaptées, et utilisez size-adjust ou font-size-adjust pour limiter les décalages de mise en page (CLS). Enfin, testez sur des réseaux lents et surveillez l’impact des polices sur les performances, en limitant le nombre de variantes et en évitant les polices d’icônes au profit des SVG. L’objectif : allier design et rapidité sans compromis.

DTO vs Entity in Symfony — Why It Matters | by Mohamed Faskath | Aug, 2025 | Medium

L’article explique la différence fondamentale entre les DTO (Data Transfer Object) et les Entities dans Symfony, deux concepts clés pour structurer proprement une application. Les Entities représentent les objets métiers persistés en base de données, liés à Doctrine et souvent chargés de logique complexe, tandis que les DTO sont des objets légers, dédiés au transfert de données entre les couches (API, formulaires, services), sans logique métier ni persistance. Utiliser des DTO permet de découpler la validation, la sérialisation et la manipulation des données des Entities, améliorant ainsi la maintenabilité, la sécurité (en évitant d’exposer directement les Entities) et la clarté du code. L’auteur souligne que les DTO sont particulièrement utiles pour gérer les entrées/sorties des contrôleurs ou des services externes, tandis que les Entities restent le cœur du modèle de données. En résumé, bien distinguer les deux optimise l’architecture et réduit les risques d’incohérences ou de fuites de données sensibles.

Why LLMs Can't Really Build Software — Zed's Blog

L'auteur explique que les bons ingénieurs logiciels fonctionnent en boucle : ils construisent un modèle mental des besoins, écrivent du code, comparent le résultat avec leur modèle, puis ajustent le code ou les exigences. Les LLMs, bien qu’efficaces pour générer ou modifier du code, échouent à maintenir ces modèles mentaux cohérents. Ils se perdent face aux échecs de tests, hallucinent des détails, et peinent à gérer le contexte ou à zoomer entre le global et le local — des capacités essentielles pour résoudre des problèmes complexes. Même avec des avancées, ils restent des outils d’assistance, pas des développeurs autonomes : c’est à l’humain de garantir la justesse des exigences et du code, surtout sur des projets non triviaux. On préfèrera donc miser sur une collaboration humain-agent, mais le développeur reste aux commandes.

Turbocharging AI Agents with Symfony’s Async Approach: A Deep Dive - DEV Community

Cet article explique comment optimiser un agent IA en utilisant le composant Symfony Messenger pour gérer les tâches longues (comme les appels à des API externes ou des modèles LLM) de manière asynchrone. Grâce à cette approche, l’agent devient plus performant et résilient : les opérations bloquantes (récupération d’emails, traitement par LLM, envoi de notifications) sont découplées et exécutées en arrière-plan via des files de messages (Redis, AMQP, etc.). L’auteur détaille la configuration des bus de commandes, requêtes et événements (CQRS), illustre la création de messages et de handlers dédiés, et montre comment lancer un consommateur Symfony pour traiter les tâches sans bloquer l’application principale. Résultat : un système scalable, tolérant aux pannes et prêt pour la production.

Crafting Your Own AI Agent with Symfony: A 11-Minute Guide 🚀 - DEV Community

Ce tutoriel montre comment créer un agent IA personnalisé avec Symfony en seulement 11 minutes, en utilisant des modèles comme OpenAI, Gemini ou Llama. L’exemple concret consiste à récupérer des emails via IMAP, à les résumer automatiquement avec une IA, puis à envoyer le résumé par email ou messagerie. L’article détaille l’installation du composant Symfony AiAgent (sorti en juillet 2025), la configuration de l’API OpenAI, la gestion des emails (stripping HTML, utilisation de Symfony Mime et Notifier), et l’intégration du tout dans une commande console. Une base flexible pour automatiser des workflows avec Symfony et l’IA, adaptable à d’autres sources de données ou canaux de notification.

🧑‍💻 Aller plus loin avec les Dev Containers 🐳 - Ourson’s blog

Cet article explore des techniques avancées pour personnaliser les Dev Containers, allant au-delà de la simple configuration de base. L’auteur illustre comment installer un outil comme SliDesk via différentes méthodes : en utilisant postCreateCommand (simple mais répétitif), en créant une feature (réutilisable et versionnable, idéale pour partager des configurations), ou en construisant une image Docker custom (pour un environnement sur mesure et optimisé). Il aborde aussi l’utilisation de Docker in Docker pour construire des images directement depuis le conteneur, et de Docker Compose pour gérer des environnements complexes incluant des bases de données ou d’autres services. Enfin, il présente les templates, qui permettent de pré-configurer des Dev Containers pour des projets similaires, évitant ainsi la duplication de code. Une lecture essentielle pour qui veut industrialiser et standardiser ses environnements de développement avec flexibilité et efficacité !

Top 5 Monorepo Tools for 2025 | Best Dev Workflow Tools

Les monorepos, en centralisant plusieurs projets dans un seul dépôt, simplifient la gestion des dépendances et le partage de code, mais nécessitent des outils adaptés pour éviter les ralentissements (builds lents, CI/CD inefficaces). En 2025, cinq outils se distinguent selon les besoins :
Bazel (Google) excelle pour les projets multi-langages complexes grâce à son cache distant et sa gestion fine des dépendances, mais demande une courbe d’apprentissage abrupte. Turborepo et Nx ciblent les écosystèmes JavaScript/TypeScript avec des builds incrémentaux et une détection intelligente des fichiers modifiés, idéaux pour les équipes frontend/full-stack. Pants optimise les monorepos multi-langages (Python, Go, Java) avec une exécution parallèle et une inférence automatique des dépendances. Gradle, plutôt orienté JVM, reste pertinent pour les stacks Java/Kotlin. Enfin, des solutions comme Aviator (rédacteur de l'article) complètent ces outils en automatisant les revues de code et les merges, réduisant les goulots d’étranglement dans les workflows collaboratifs.
Le choix dépend de la taille de l’équipe, des langages utilisés et de l’infrastructure CI/CD, mais tous visent à accélérer les builds et à améliorer l’expérience développeur, à condition d’investir dans leur configuration et leur maintenance. [

Analyse attaque Nx : Malware IA et protection 2025

Le 26 août 2025, le système de build Nx (4M+ téléchargements hebdomadaires sur npm) a été compromis par un malware JavaScript intégré dans les versions 20.11.0 et 21.7.0. Ce script malveillant a exploité des outils d’IA populaires (Claude, Gemini, Amazon Q) pour voler des données sensibles (tokens GitHub, clés privées, portefeuilles crypto), marquant la première attaque documentée utilisant l’IA comme vecteur de vol. Le malware, activé via un script postinstall, contournait les sécurités des LLM pour scanner les systèmes et exfiltrer 2 349 secrets vers des dépôts GitHub publics en seulement 5 heures. Malgré des erreurs techniques (syntaxe incorrecte, garde-fous IA partiellement efficaces), l’incident révèle une nouvelle génération de menaces : des attaques ciblant la confiance accordée aux assistants IA et aux paquets open source. L’analyse technique met en lumière les failles de l’intégration rapide de l’IA dans les workflows dev, et souligne l’urgence de renforcer la vérification des dépendances, la surveillance des outils IA et la détection proactive des comportements suspects. Une alerte pour l’écosystème tech, où l’automatisation intelligente devient à la fois une promesse et une vulnérabilité majeure.

Jean-François Lépine - Parser du code PHP, sans dépendre de PHP

L'auteur présente Go-PHP-Parser, un outil permettant de parser du code PHP en Go sans dépendre de l’installation de PHP, dans le cadre de son projet AstMetrics (analyse de code via l’AST). Après avoir abandonné l’idée d’écrire un parser maison (trop complexe à maintenir face à l’évolution de PHP), il a opté pour l’intégration du moteur PHP officiel via la SAPI Embed et l’extension ext-ast, qui expose l’AST de manière stable et toujours à jour. Grâce à un bridge C/Go et à des binaires précompilés (via static-php-cli), l’outil est simple à utiliser et performant (4 000 à 8 000 fichiers/s). L’approche évite la maintenance d’une grammaire manuelle et ouvre la porte à des analyses avancées (métriques, refactoring, CI/CD, etc.). Le projet est open source et disponible sur GitHub.

Un projet astucieux pour qui veut analyser du PHP depuis Go sans dépendances externes !

The Basics of Anchor Positioning

L’article explique comment CSS Anchor Positioning révolutionne le positionnement des éléments en permettant de lier un élément cible à un ancrage précis, indépendamment de leur relation parent-enfant dans le DOM. Contrairement à position: absolute, qui nécessite souvent une restructuration du HTML ou des calculs fragiles, cette nouvelle API permet de définir un ancrage (anchor-name) sur un élément et de positionner un autre élément (position-anchor) par rapport à ses bords (top, right, bottom, left) ou à une grille 3x3 (position-area). Elle offre aussi des mécanismes de repli intelligents (position-try-fallbacks) pour éviter les débordements hors de la viewport, comme basculer automatiquement un popup du haut vers le bas si l’espace manque. Idéal pour des composants dynamiques et responsives, cette technique simplifie des cas d’usage complexes (tooltips, badges, menus contextuels) sans JavaScript, même si son support reste limité aux navigateurs basés sur Chromium pour l’instant.

Réduire le trafic réseau sous Linux [Wiki de sebsauvage.net]

Sebsauvage donne plusieurs pistes pour réduire le trafic réseau sous Linux, utile par exemple si la connexion est limitée (thetering)

How Developers Can Use Tracing in the UI to Add Backend-style Observability

L’observabilité full-stack passe aussi par le frontend – Longtemps considéré comme une boîte noire, le suivi des performances côté client (latence des interactions, complexité asynchrone, contexte utilisateur) est désormais possible grâce au tracing (OpenTelemetry, Sentry, Datadog). En instrumentant les clics, requêtes et rendus, on relie les actions utilisateurs aux traces backend, offrant une visibilité complète : identification précise des goulots d’étranglement, corrélation entre latence perçue et temps système, et débogage simplifié. Avec une implémentation simple (ex : @opentelemetry/sdk-trace-web), le frontend s’intègre enfin dans la chaîne d’observabilité, transformant l’expérience utilisateur en données exploitables.

Getting Creative With Images in Long-Form Content | CSS-Tricks

« Getting Creative With Images in Long-Form Content » (CSS-Tricks) explore comment les images, souvent reléguées à un rôle purement illustratif, peuvent dynamiser et enrichir l’expérience de lecture des contenus longs. L’article propose des techniques créatives pour intégrer les images de manière expressive : briser la grille classique pour attirer l’attention, jouer avec les formats (full-bleed, modular grids), utiliser les CSS Shapes pour un habillage de texte plus organique, ou encore repenser les légendes et l’espace blanc pour renforcer l’impact visuel et narratif. L’objectif ? Transformer les images en éléments actifs qui rythment la lecture, guident le regard et renforcent l’émotion, plutôt que de simples interludes visuels. Une approche inspirante pour les designers et rédacteurs qui veulent donner plus de personnalité à leurs articles, rapports ou études de cas.

Gérer les dépendances de son projet Python avec pip freeze

Gérer les dépendances Python avec pip freeze permet de capturer l’état exact des bibliothèques installées dans un environnement virtuel, en générant un fichier requirements.txt via la commande pip freeze > requirements.txt. Ce fichier liste toutes les dépendances (et leurs versions précises), assurant la reproductibilité du projet sur d’autres machines ou en production. Pour installer ces dépendances, il suffit d’exécuter pip install -r requirements.txt. Cependant, cette méthode ne distingue pas les dépendances directes des dépendances transitives, ce qui peut poser problème en cas de conflits de versions. Pour des projets plus complexes, des outils comme pip-tools ou Poetry offrent une gestion plus fine et structurée des dépendances, en générant un fichier de verrouillage cohérent. L’usage d’un environnement virtuel reste indispensable pour éviter les conflits entre projets. Lire plus.

How to Do Code Review - by Neo Kim

Comment bien scaler les code reviews (et éviter les pièges)
À l’origine, une petite équipe peut se permettre de merger directement dans la branche principale, mais dès que le projet grandit, les code reviews deviennent essentielles pour maintenir la qualité du code. Pourtant, mal gérées, elles ralentissent les équipes (délais serrés, feedbacks sur des détails mineurs), génèrent des conflits (préférences personnelles, ton toxique) et favorisent les incompréhensions (revues asynchrones, PR trop volumineuses). Pour y remédier, auteurs et relecteurs doivent adopter des bonnes pratiques : PR petites et ciblées, feedback constructif et documenté, respect du temps de chacun (réponse sous 24h, slots dédiés), et automatisation (CI, outils comme CodeRabbit pour les checks routiniers). L’objectif ? Améliorer la qualité sans bloquer la vélocité : privilégier le "bon assez" plutôt que la perfection, utiliser des checklists, et résoudre les désaccords en direct. Les outils modernes (GitHub/GitLab, AI comme CodeRabbit) optimisent le workflow en détectant les bugs tôt et en résumant les changements, libérant les humains pour des revues plus stratégiques. En résumé : des revues rapides, bienveillantes et outillées pour un code sain et des équipes motivées.

Todo-list efficace : psychologie du travail et conseils d'application - Agence LVLUP.fr

L’article explique comment transformer sa to-do list en un outil efficace et anti-stress, en s’appuyant sur la psychologie du cerveau (effet Zeigarnik, dopamine) et 7 règles clés. L’idée centrale : le cerveau est obsédé par les tâches inachevées, ce qui génère du stress et réduit la concentration. Pour y remédier, il propose de planifier le matin (après avoir vérifié ses mails), de commencer par les tâches faciles pour créer un élan de motivation (« boule de neige »), de découper les projets en actions concrètes (règle des 25 minutes), et de regrouper les tâches similaires (« batching »). Autres astuces : noter chaque soirée les tâches accomplies (« Done List ») pour analyser son temps réel, gérer les imprévus en notant la prochaine micro-étape avant de s’interrompre, et choisir un outil simple (comme Google Tasks) qui permet de déléguer la mémoire à un système externe. L’objectif n’est pas de tout retenir, mais de libérer son esprit pour se concentrer sur l’essentiel.

Une méthode pour passer de la surcharge à la sérénité !

GitHub - C4illin/ConvertX: 💾 Self-hosted online file converter. Supports 1000+ formats ⚙️

Un super outil à auto héberger qui permet de convertir des fichiers dans plein de formats

K3S et le stockage avec Longhorn

Ce tutoriel explique comment déployer Longhorn, une solution de stockage distribué, sur un cluster K3s (Kubernetes léger).
Il détaille les prérequis (Kubernetes 1.28+, 2 Go de RAM, open-iscsi installé), la préparation d’un dossier dédié (/opt/longhorn), puis l’installation via un manifest YAML personnalisé pour spécifier le chemin de stockage. Après déploiement, il montre comment vérifier l’état des pods, corriger une mauvaise configuration via un patch, et tester le stockage avec un PVC de 1 Go. Des astuces pour la mise à jour, la vérification de l’état du service et le redimensionnement des volumes sont aussi partagées. Idéal pour ajouter du stockage persistant et résilient à un cluster K3s avec peu de ressources.

Symfony Translation: Step by Step Guide | by Lubna Altungi | Aug, 2025 | Medium

L’article explique comment gérer la traduction de contenu statique (menus, titres, boutons) dans Symfony à l’aide du composant Translation. Il détaille les étapes clés : installation via symfony composer require translation, configuration des locales dans translation.yaml et routes.yaml, utilisation de clés (ex: about_us) dans des fichiers YAML par langue (messages.en.yaml, messages.fr.yaml), et intégration dans Twig avec le filtre |trans et un sélecteur de langue dynamique. Il aborde aussi le débogage avec debug:translation et l’extraction automatique des clés manquantes, tout en évoquant l’option d’utiliser des services externes comme Crowdin pour une gestion collaborative. Une approche simple et efficace pour internationaliser une application Symfony.

Par où commencer Kubernetes ? – Le blog de Seboss666

L'auteur partage son parcours personnel et professionnel avec Kubernetes, soulignant qu’il n’existe pas de réponse universelle. Il a découvert l’orchestration via Docker Swarm, puis Kubernetes à travers des services managés comme AKS (Azure) et GKE (Google Cloud), avant d’expérimenter des solutions plus légères comme K3S et Talos Linux. Chaque approche—services managés, déploiements "the hard way", ou outils simplifiés—offre des avantages et des limites, selon le contexte et les besoins. L’important est de choisir la méthode qui suscite la curiosité et permet d’apprendre en pratiquant, car Kubernetes et son écosystème évoluent constamment, offrant de multiples angles d’entrée. L’essentiel reste d’oser explorer et comparer, sans crainte de se tromper.