L’article relate l’installation laborieuse de Linux Mint sur un Acer Swift 1 SF114-31-P68BW, une opération qui a pris bien plus de temps que prévu (plus de deux heures au lieu de 25 minutes). Le premier obstacle a été l’impossibilité de désactiver le Secure Boot dans le BIOS, résolue en définissant un mot de passe BIOS. Ensuite, après une installation apparemment réussie, le PC affichait « No Bootable Device » au redémarrage. La solution a consisté à ajouter manuellement le fichier shimx64.efi comme fichier UEFI de confiance dans le BIOS, puis à reconfigurer l’ordre de démarrage pour placer Linux Mint en première position. L’auteur critique la complexité imposée par Acer pour une simple installation d’un autre système d’exploitation, malgré la documentation officielle, et espère que son retour d’expérience aidera d’autres utilisateurs confrontés au même problème. Un témoignage utile pour ceux qui souhaitent passer à Linux sur ce modèle !
GDU (Go Disk Usage) est présenté comme le successeur moderne et ultra-rapide de ncdu pour analyser l’utilisation des disques sous Linux. Développé en Go, il se distingue par sa vitesse fulgurante (optimisé pour les SSD et multi-CPU), une interface intuitive et une installation simplifiée (disponible via les dépôts ou GitHub). Idéal pour identifier rapidement les fichiers encombrants, il s’impose comme un outil indispensable pour les administrateurs système et développeurs, surtout sur des serveurs distants ou des arborescences volumineuses. Une alternative efficace pour éviter les messages « Disk Full » et optimiser l’espace disque en un clin d’œil. (Lien GitHub : dundee/gdu)
L’article aborde les pièges de performance dans Doctrine ORM, notamment la différence entre les stratégies de chargement Lazy, Eager et Extra-Lazy pour les associations entre entités. Par défaut, Doctrine utilise le Lazy Loading, qui peut entraîner le problème classique du N+1 : une requête initiale pour récupérer les articles, suivie d’une requête supplémentaire pour chaque article afin de charger ses commentaires, ce qui dégrade fortement les performances. L’exemple donné montre comment une simple boucle pour afficher le nombre de commentaires par article peut générer 1 + N requêtes (N étant le nombre d’articles), et charger inutilement toutes les données des commentaires en mémoire. L’article souligne l’importance de choisir la bonne stratégie de chargement pour éviter ces écueils.
Le Command Logger Bundle pour Symfony est un outil conçu pour suivre l'exécution des commandes console directement dans une base de données, idéal lorsque l'accès aux fichiers de log est impossible. Il enregistre pour chaque commande : son nom, ses arguments, les horaires de début et de fin, le code de sortie, les messages d'erreur et un identifiant unique. Simple à installer via Composer, il permet de configurer les commandes à logger (via attributs ou fichier YAML) et offre des commandes CLI pour consulter, filtrer ou purger les logs. Son objectif principal est de répondre rapidement à des questions clés : la commande a-t-elle été exécutée ? Quand ? Avec quel résultat ? Il ne capture pas la sortie console, mais fournit une traçabilité essentielle pour le débogage et l'audit.
Cet article explique comment générer des "captures d’écran" au format SVG d’éléments HTML, notamment pour les réutiliser dans des fichiers HTML, EPUB ou PDF. L’auteur présente deux bibliothèques JavaScript permettant de convertir du HTML en SVG, avec une préférence pour html-to-svg
. Il détaille une méthode pour créer une page web contenant plusieurs démonstrations de mises en page CSS, chacune convertie en SVG via un script. Chaque section peut être affichée ou téléchargée sous forme d’image SVG, avec un nom de fichier dérivé de l’ID de la section. L’astuce repose sur l’utilisation de Blob
et de URL.createObjectURL
pour générer un lien de téléchargement fonctionnel. Une solution pratique pour intégrer des visuels dynamiques et scalables dans divers formats de documents.
L’auteur raconte comment son équipe a migré plus d’un milliard d’enregistrements d’une base de données critique (contenant des données financières) vers une nouvelle, sans aucune interruption de service. Voici les étapes clés et les leçons apprises :
-
Migration par lots des données historiques : Les données ont été divisées en chunks par plages d’ID, chargées en parallèle avec les index et contraintes désactivés pour accélérer le processus, puis vérifiées par des checksums pour garantir l’intégrité.
-
Écritures doubles (dual writes) : Pendant la migration, chaque nouvelle écriture était dupliquée vers l’ancienne et la nouvelle base. Les échecs étaient gérés via une file Kafka de réessai, avec des écritures idempotentes pour éviter les doublons.
-
Lectures fantômes (shadow reads) : Les requêtes étaient exécutées en silence sur la nouvelle base et comparées à l’ancienne pour détecter des incohérences (fuseaux horaires, collations, valeurs NULL), permettant de corriger les problèmes avant de basculer les utilisateurs.
-
Bascule progressive (cutover) : La nouvelle base a été préchauffée (cache et index), et le basculement a eu lieu à 4h30, heure de faible trafic, avec un mécanisme de retour arrière (rollback) prêt. Les métriques business et techniques ont été surveillées en temps réel.
-
Observabilité totale : Des tableaux de bord ont suivi la latence, le lag de réplication, les deadlocks, et les KPI métiers pour détecter instantanément tout problème.
Leçons clés :
- Les migrations à grande échelle se font par lots parallèles, avec des mécanismes de reprise et de vérification.
- Les dual writes et les shadow reads sont essentiels pour capturer les données en temps réel et valider la nouvelle base.
- La bascule doit être préparée comme une opération critique : cache préchauffé, monitoring obsessionnel, et plan de rollback.
- Une migration réussie repose sur la conception distribuée (idempotence, files de réessai) et une observabilité fine (WAL, cache, deadlocks).
En traitant la migration comme un problème de system design plutôt que technique, l’équipe a pu garantir une transition sans temps d’arrêt, malgré la pression et les risques financiers.
Le billet "L’IA : décoder le jargon avant de se planter" propose un décryptage accessible des termes techniques liés à l’intelligence artificielle, comme les tokens, les LLM (Large Language Models), les embeddings, le RAG (Retrieval-Augmented Generation) ou encore le MCP, afin d’aider les développeurs et curieux à mieux comprendre le fonctionnement des outils comme ChatGPT et éviter les pièges courants. L’objectif est de démystifier ces concepts pour une utilisation plus éclairée et efficace de l’IA.
Mathieu Eveillard explique pourquoi les méthodologies séquentielles (comme le waterfall) échouent systématiquement dans l’informatique de gestion, notamment à cause de l’effet tunnel : développer pendant des mois sans feedback utilisateur mène souvent à des produits inadaptés ou inutiles. Les étapes rigides (cahier des charges, appel d’offres, développement, etc.) ignorent l’incertitude des besoins réels et les erreurs d’estimation, transformant les projets en jeux de roulette russe où le client finit captif de coûts imprévus. La solution ? L’Agilité : itérer par petites étapes, valider avec les utilisateurs, et construire la confiance progressivement, plutôt que de miser sur des documents figés et des engagements irréalistes. Une critique percutante des limites du waterfall et un plaidoyer pour des approches plus flexibles et collaboratives.
Ali Khil partage une habitude simple mais efficace pour préserver ses soirées en tant qu’ingénieur logiciel : au lieu de prolonger sa journée de travail en se disant « encore 20 minutes », il note les prochaines étapes à réaliser avant de partir. Cette pratique évite l’épuisement, permet de revenir le lendemain avec un esprit frais et une motivation intacte, tout en favorisant un meilleur équilibre entre vie professionnelle et personnelle. Une astuce inspirée par l’expérience, où l’envie de terminer une tâche sur le moment se transforme souvent en heures perdues et en frustration. À la clé, moins de surmenage et des idées nouvelles après une nuit de repos.
L’auteur partage ses conseils pour en réaliser des efficaces. Le point clé : rien n’est trivial. Il insiste sur la nécessité d’expliquer chaque étape, même celles qui semblent évidentes, car le public peut ne pas maîtriser les bases (où lancer une commande, comment allumer un appareil, etc.). Il recommande de définir le vocabulaire technique, d’expliquer le pourquoi derrière chaque action (ex. : choix d’un outil, respect d’une température), et d’adapter le contenu au public visé (novice, intermédiaire, expert). La précision est essentielle : éviter les formulations vagues comme « suivez la procédure normale », et lister clairement les prérequis (matériel, logiciels, permissions). Autre astuce : tester son tuto en le suivant soi-même ou en le faisant essayer à un débutant pour repérer les oublis ou ambiguïtés. Enfin, il encourage à utiliser un vocabulaire rigoureux (ex. : la RFC 2119 pour distinguer « doit », « devrait », « peut ») et à justifier chaque étape pour éviter erreurs et frustrations. L’objectif ? Rendre le tutoriel accessible, reproductible et sans zone d’ombre, quel que soit le domaine (informatique, cuisine, aéronautique…).
Cette chronique humoristique de Gee aborde le thème de l’inertie technologique, en prenant pour exemple le clavier, dont les dispositions (QWERTY, AZERTY) et certaines touches (comme "Inser") persistent malgré leur obsolescence ou leur manque d’optimisation. L’auteur souligne que ces choix datent de l’ère des machines à écrire et ne sont pas adaptés aux usages modernes, mais que le coût du changement (apprentissage, incompatibilité avec les autres claviers) freine toute évolution. Il évoque aussi les avantages des logiciels libres, comme GNU/Linux, qui permettent de contourner certaines limites matérielles grâce à des fonctionnalités logicielles (accès facilité aux majuscules accentuées, espaces insécables, etc.). Enfin, il invite à adopter le logiciel libre pour gagner en flexibilité et en modernité, tout en gardant un ton léger et critique envers les habitudes ancrées.
Ce shaarli explique comment utiliser Podman comme un substitut à Docker, en permettant l'exécution des commandes Docker habituelles avec Podman. L'article détaille l'installation du paquet podman-docker
, qui fournit un script docker
émulant les commandes Docker, ainsi que la suppression du message d'avertissement via la création du fichier /etc/containers/nodocker
. Il aborde aussi la compatibilité avec docker-compose
grâce à l'installation de podman-compose
, et présente deux solutions pour gérer le démarrage automatique des conteneurs (via Quadlet ou en activant le service podman-restart
). L'objectif est de faciliter la transition pour les utilisateurs habitués à Docker, tout en profitant des avantages de Podman, notamment son absence de démon.
Ce tutoriel explique comment implémenter le Design Pattern Strategy dans Symfony, en partant d’une approche naïve avec des if/else
pour aboutir à une solution professionnelle et maintenable. L’objectif est de créer un système d’analyse de céréales (blé, orge, tournesol, etc.) qui puisse s’étendre facilement sans modifier le code existant.
L’auteur détaille trois étapes :
- Approche naïve avec des
if/else
oumatch
(PHP 8+), simple mais peu extensible et difficile à maintenir. - Solution optimale avec le Strategy Pattern : chaque type de céréale est géré par une classe indépendante (stratégie) implémentant une interface commune. Symfony utilise des attributs comme
#[AutoconfigureTag]
et#[AutowireIterator]
pour injecter automatiquement les stratégies dans un manager, qui délègue l’analyse à la stratégie adaptée. - Avantages : respect du principe ouvert/fermé, testabilité, et extensibilité (ajouter une céréale = ajouter une classe).
Le tutoriel inclut des exemples concrets, des comparatifs, et un projet GitHub pour illustrer la mise en œuvre. Une ressource idéale pour comprendre comment structurer du code Symfony flexible et évolutif.
Simon Willison explore dans ce billet la notion de "designing agentic loops", une compétence clé pour tirer parti des agents de codage comme Claude Code ou Codex CLI. Ces outils, capables d’exécuter du code, de corriger des erreurs et d’itérer vers une solution, ouvrent de nouvelles possibilités, mais aussi des risques (commandes dangereuses, exfiltration de données, attaques par rebond). Pour les utiliser efficacement, il recommande de les faire tourner en mode "YOLO" (sans demande de confirmation systématique), mais dans un environnement sécurisé comme GitHub Codespaces ou un conteneur Docker isolé. Il souligne l’importance de bien choisir les outils et les accès (par exemple, limiter les permissions et les budgets pour les API), et d’identifier les problèmes adaptés à cette approche : débogage, optimisation de performances, ou mise à jour de dépendances. L’automatisation des tests et la documentation claire des outils disponibles (via un fichier AGENTS.md) sont essentielles pour maximiser leur utilité. Une réflexion encore émergente, mais prometteuse pour accélérer le développement logiciel.
Face à la multiplication des robots d’indexation (notamment ceux des LLM), Bearstech propose plusieurs stratégies pour limiter leur impact : filtrage (via robots.txt, blacklist d’IP ou User-Agents, outils comme Darkvisitor ou Cloudflare), mitigation (rate-limiting avec HAProxy, tests inversés comme Anubis ou Cloudflare Turnstile), délégation (CDN avec WAF comme Cloudflare ou Bunny), et surtout optimisation (cache avec Varnish/Redis, tuning de base de données, tests de charge). Aucune solution n’est universelle : chaque approche a ses avantages (efficacité, simplicité) et inconvénients (maintenance, faux positifs, coût). L’idéal ? Combiner filtrage ciblé, cache agressif et optimisation pour rendre son infrastructure plus résiliente, tout en préservant le référencement et l’expérience utilisateur. Une analyse fine du trafic et des goulets d’étranglement reste indispensable. 🛡️🔍
L’auteur partage son expérience pour monter un home lab ultra-optimisé : deux mini-PC (un GMKtec 5825U avec Ryzen 7 5825U, 64 Go de RAM et un NVMe de 2 To récupéré d’une PS5 pour la virtualisation sous Proxmox, et un Intel N100 pour le firewall OPNsense avec ports SFP 10G), le tout pour moins de 700 €. Objectifs remplis : silence absolu, consommation électrique maîtrisée, et performances au rendez-vous (10 VM simultanées, Jellyfin en 4K, Home Assistant, Bitwarden, etc.). Le tout tient dans une étagère, avec une Freebox Delta en mode bridge pour du 10G, un NAS Qnap pour le stockage, et des switches 2.5G/10G. Un setup malin, évolutif et discret, parfait pour expérimenter (Kubernetes, NixOS…) sans exploser la facture d’électricité ni le budget ! 💡🔌
La réponse réside dans leur structure cristalline et leur composition. Le fer pur et les aciers simples (fer + carbone) adoptent à température ambiante une structure cubique centrée (BCC), dite ferrite, qui est ferromagnétique : leurs atomes s’alignent sous l’effet d’un champ magnétique, rendant le matériau aimantable. En revanche, les aciers inoxydables, riches en chrome et souvent en nickel, peuvent adopter une structure cubique faces centrées (FCC), dite austénite, qui est paramagnétique et donc peu ou pas attirée par un aimant. Le nickel favorise cette structure FCC, tandis que le chrome peut la stabiliser même à température ambiante. Certains inox (comme les séries 304 ou 316) ne sont donc pas aimantables, contrairement à d’autres (comme les séries 410 ou 420), qui conservent une structure ferritique ou martensitique (BCC ou BCT) et restent magnétiques. Tout dépend de la composition et des traitements thermiques ou mécaniques subis par l’alliage. Une astuce pour tester : promenez un aimant chez vous, vous verrez que certaines poignées ou casseroles en inox ne réagissent pas, contrairement à des outils ou des fonds de casseroles en acier classique.
Scott H. Young clôt son année de projet Foundations avec un mois dédié au service, une thématique qui l’a amené à repenser sa philosophie de vie. Bien que ses actions concrètes (dons de sang, dons à des associations recommandées par GiveWell) aient été limitées par les contraintes logistiques du bénévolat, cette période a surtout marqué un changement d’attitude : passer d’une vision où la morale est une contrainte à une vie épanouie, à une approche où l’épanouissement personnel devient une contrainte secondaire au service des autres. Il réalise que, comme pour les autres fondations (fitness, alimentation, etc.), ce sont les changements d’état d’esprit plutôt que les habitudes qui durent. Ce mois lui a aussi permis de comprendre que le bonheur et la satisfaction peuvent émerger davantage d’une vie tournée vers l’impact positif que vers la recherche directe du bien-être. Une réflexion profonde sur l’altruisme et la construction d’une vie significative, avec l’espoir de s’engager davantage à l’avenir.
L’API Platform Conference 2025 célèbre les 10 ans du framework avec des annonces fortes et un double focus : performance extrême et expérience développeur (DX). Côté performance, l’intégration d’extensions PHP écrites en Go (via FrankenPHP) et le support natif de gRPC pour PHP ont volé la vedette, permettant des gains inédits en rapidité et stabilité, comme en témoigne l’adoption par Laravel Cloud. API Platform 4.2 a aussi été dévoilé, avec des outils comme l’ObjectMapper de Symfony pour simplifier la transformation d’objets et des gains de performance multipliés par 2 ou 3.
La deuxième journée a mis l’accent sur la DX : schémas JSON pour la configuration YAML dans Symfony, l’arrivée de PIE (remplaçant moderne de PECL), et des réflexions sur l’Agent Experience (AX) pour mieux collaborer avec les IA. Fabien Potencier a notamment proposé d’ajouter un fichier llms.txt
pour faciliter l’intégration des LLM. Enfin, des conférences sur les feature flags, la contribution au cœur de PHP, et l’histoire des femmes dans la tech ont rappelé l’importance de l’humain et de l’outillage moderne. En résumé, PHP se réinvente comme un écosystème hybride, performant et centré sur les développeurs, invitant à tester FrankenPHP, adopter les nouvelles pratiques DevOps et repenser l’architecture des projets. Une édition résolument tournée vers l’avenir ! 🚀
Paris Web 2025 a marqué les esprits avec une édition placée sous le signe de l’inclusivité, de l’accessibilité, de la diversité et de l’écoconception. Organisée à l’Institut Louis Pasteur, la conférence a proposé des présentations variées, accessibles (LSF, vélotypie) et engagées, mêlant technique, retours d’expérience et réflexion sur les bonnes pratiques du web.
Parmi les temps forts, on retient notamment la conférence d’Agnès Haasser sur le HTTPS et ses enjeux de sécurité, un retour d’expérience percutant d’Anne Faubry et Chloé Corfmat sur l’accessibilité pour les personnes déficientes visuelles (au-delà du RGAA), et une démonstration convaincante des Passkeys par Daniel Garnier-Moiroux. D’autres sujets comme le design validiste, l’Unicode, les Web Components, ou encore l’impact psychosocial de l’IA ont aussi rythmé ces deux jours. L’événement a confirmé son rôle de bulle inspirante et bienveillante pour les passionné·e·s du web, avec des interventions de qualité et une approche résolument humaine et pratique.
L'auteur propose une approche innovante de développement piloté par les spécifications (« spec-driven development ») en utilisant le Markdown comme langage de programmation, avec l’aide d’agents d’IA comme GitHub Copilot. L’idée est de décrire l’intégralité d’une application dans un fichier Markdown (par exemple main.md
), qui sert à la fois de documentation et de spécification technique, puis de laisser l’IA générer le code source (ici en Go) à partir de ce fichier. Le workflow repose sur quatre fichiers clés : un README.md
pour la documentation utilisateur, un main.md
pour la spécification technique (incluant la logique métier, les schémas de base de données, et même des extraits GraphQL), et des prompts (compile.prompt.md
, lint.prompt.md
) pour guider l’IA dans la génération et l’optimisation du code.
L’avantage principal est de centraliser la logique et la documentation en un seul endroit, évitant les incohérences et facilitant les mises à jour. Le développeur édite le Markdown, demande à l’IA de « compiler » la spécification en code, puis teste l’application. Cette méthode permet une itération rapide et une meilleure synchronisation entre la documentation et l’implémentation. Cependant, la compilation peut ralentir à mesure que le projet grandit, et l’approche nécessite une description claire et précise des attentes. L’auteur envisage d’étendre cette méthode à d’autres langages et d’intégrer des tests automatisés. Une expérience prometteuse, surtout avec les progrès des agents IA, mais qui demande une rigueur dans la rédaction des spécifications.
David Larlet donne sa recette du pain. Il n'y a plus qu'à essayer
Thibault Buze explique dans ce troisième volet de Sous le capot du cloud le choix de Proxmox VE comme hyperviseur pour leur cloud interne, après une analyse des besoins clés : haute disponibilité (HA), automatisation, interopérabilité et simplicité d’opération. Parmi les alternatives (vSphere, Hyper-V, OpenStack), Proxmox s’impose pour son approche ouverte (KVM/QEMU, LXC), native HA (migration à chaud, bascule automatique), flexible (stockage iSCSI/NFS/ZFS, intégration TrueNAS) et automatisable (API, Terraform, cloud-init). L’architecture repose sur 3 hôtes minimum, des réseaux dédiés (management, stockage, données) et une intégration fluide avec Kubernetes (via Longhorn). Le tout est industrialisé en Infrastructure as Code (Terraform), garantissant reproductibilité et traçabilité. Points clés : séparation des plans de trafic, sauvegardes testées (Proxmox Backup Server), et monitoring rigoureux. Une solution souveraine, économique et scalable, idéale pour des clusters hébergeant 500 à 2000 pods.
Cet article compare les architectures standalone et haute disponibilité (HA) pour Kubernetes on-premise, en expliquant comment concevoir et opérer un cluster HA. L’article détaille l’importance de redonder les composants critiques (comme l’API Kubernetes) pour éviter les points de défaillance uniques (SPOF), même si cela peut introduire de nouveaux défis (ex. : un load balancer devant les control planes peut lui-même devenir un SPOF). Il présente aussi une solution de stockage HA avec TrueNAS (exposant des volumes bloc via iSCSI) et Longhorn pour orchestrer la réplication, les snapshots et la reconstruction automatique en cas de panne d’un nœud. L’auteur insiste sur la nécessité de bien dimensionner chaque couche (stockage, réseau, contrôle) pour garantir la résilience du cluster, tout en soulignant que la haute disponibilité commence par la redondance du plan de contrôle et une gestion fine des volumes persistants. Le billet s’inscrit dans une série technique explorant les bonnes pratiques pour opérer Kubernetes en production.
Cet article explique pourquoi Kubernetes s’est imposé comme une solution incontournable pour les hébergeurs en 2025, grâce à un trio gagnant : haute disponibilité (HA), scalabilité et observabilité. L’article souligne que Kubernetes permet d’atteindre des niveaux de disponibilité théoriques très élevés (bien au-delà des 99,9 % des anciennes infrastructures VM), grâce à des mécanismes intégrés comme les réplicas, les probes, l’anti-affinity et des plans de contrôle redondants. Les hébergeurs abandonnent progressivement les approches traditionnelles (VM par projet, sur-provisionnement, déploiements manuels via Ansible) pour adopter Kubernetes, qui offre une gestion plus efficace des ressources, des déploiements sans coupure et une meilleure observabilité. L’auteur annonce une série d’articles pour approfondir chaque aspect : haute disponibilité, stockage, load balancing, mises en production fluides, sécurité et gouvernance des coûts, illustrant ainsi la maturité et l’adoption massive de Kubernetes dans le cloud moderne. La disponibilité réelle reste cependant à mesurer en production avec des SLO et une observabilité renforcée.
L'article introduit la commande Linux tc
(traffic control), utilisée pour simuler et contrôler le trafic réseau. L’article montre comment ajouter un délai de 500 ms aux paquets avec tc qdisc add dev wlp3s0 root netem delay 500ms
, puis supprimer cette règle avec tc qdisc del
. L’outil netem
permet aussi de perdre, dupliquer ou corrompre des paquets, idéal pour tester des conditions réseau difficiles. L’autrice mentionne qu’avec un routeur Linux, on peut même ralentir le trafic d’autres utilisateurs (comme celui d’un frère), et invite à explorer tc qdisc show
pour voir les règles actuelles. Le zine complet et d’autres comics sont disponibles via abonnement ou sur le site.
L'article explique comment utiliser la commande ss
(socket statistics) sous Linux pour identifier et gérer les processus utilisant un port réseau. L’article montre comment ss -tunapl
permet de lister les serveurs en cours d’exécution et d’afficher les PID des processus, utile pour libérer un port occupé (comme le 8080). Les options comme -n
(affichage des ports en numérique), -p
(affichage des PID), et d’autres (-l
, -t
, -u
) sont détaillées pour filtrer les sockets TCP, UDP ou Unix. L’autrice recommande ss
plutôt que netstat
, plus ancien et complexe, pour une utilisation plus simple et efficace. Le zine complet et d’autres ressources sont disponibles via abonnement ou sur le site.
Cet article explique la commande Linux ip
, utilisée pour visualiser et modifier la configuration réseau. L’article détaille quelques sous-commandes utiles comme ip addr list
(affiche les adresses IP des interfaces), ip route list
(affiche la table de routage), et montre comment changer une adresse MAC pour contourner des restrictions réseau (par exemple dans les cafés). D’autres options comme ip link
(gestion des interfaces), ip neigh
(table ARP), et ip xfrm
(pour IPsec) sont mentionnées, ainsi que des astuces comme l’utilisation de --color
pour une sortie colorée ou --brief
pour un résumé. Le zine complet et d’autres comics sont disponibles via un abonnement à la newsletter ou sur le site de l’autrice.
Dans ce billet, Lea Verou explore l’idée que le succès d’un produit dépend de la manière dont il gère l’effort demandé à l’utilisateur en fonction de la complexité des cas d’usage. Elle illustre ce principe avec plusieurs exemples : Google Calendar, qui optimise les cas simples tout en permettant les cas complexes avec un effort supplémentaire ; l’élément HTML <video>
, où la personnalisation des contrôles devient soudainement très coûteuse en effort ; l’éditeur Instagram, qui sépare les filtres prédéfinis des réglages avancés ; et Coda, qui intègre intelligemment des formules générées automatiquement pour faciliter la transition entre simplicité et complexité. Elle souligne aussi l’importance de concevoir des interfaces qui minimisent l’effort utilisateur, même si cela complique l’implémentation, comme le montre l’exemple des robinets ou des bornes de train d’Oslo. L’article plaide pour une courbe d’effort progressive, évitant les « falaises d’utilisabilité » où un petit besoin supplémentaire exige un effort démesuré. En résumé, un bon design doit être une « bonne affaire » pour l’utilisateur, pas une arnaque.
Le positionnement par ancre (anchor positioning) est une nouvelle fonctionnalité CSS qui permet de positionner visuellement un élément par rapport à un autre, indépendamment de leur place dans le DOM. Idéal pour les info-bulles, menus contextuels ou modales, il utilise anchor-name
pour définir une ancre et position-anchor
pour l’associer à un élément positionné (en absolute
ou fixed
). Le placement s’effectue via anchor()
ou position-area
, tandis que anchor-size()
permet d’adapter les dimensions de l’élément en fonction de l’ancre. La propriété position-try
gère les débordements en proposant des solutions de repli. Compatible avec les navigateurs modernes, cette technique offre une alternative flexible aux méthodes traditionnelles, tout en nécessitant une attention particulière à l’accessibilité. Des outils comme Anchor Tool et des démos pratiques illustrent son potentiel.
L’article aborde les enjeux d’accessibilité et d’UX liés au défilement horizontal sur le web, un choix de design souvent esthétique mais problématique pour de nombreux utilisateurs (personnes naviguant au clavier, avec des troubles moteurs ou visuels, etc.). Bien que populaire (carrousels, galeries, etc.), ce modèle pose des défis majeurs : contenu manqué, navigation complexe, gestes difficiles, perte de repères, et incompatibilités selon les appareils. Le RGAA et les WCAG encadrent ces pratiques en France, rappelant que l’accessibilité améliore l’expérience pour tous et favorise l’inclusion. Si le défilement horizontal est parfois incontournable, des bonnes pratiques existent (balises ARIA, contrôles clairs, navigation clavier, gestion du focus) pour limiter ses impacts négatifs. L’article conclut en encourageant à privilégier la clarté, la simplicité et l’inclusion plutôt que les tendances visuelles, soulignant que les carrousels, par exemple, sont souvent peu efficaces et mal perçus par les utilisateurs. Une réflexion utile pour repenser les interfaces de manière plus universelle.
Le projet MicroStack, un rack modulaire imprimé en 3D pour organiser des mini-PC en homelab, s’enrichit désormais avec la compatibilité des HP EliteDesk/ProDesk et Lenovo ThinkCentre Tiny, en plus des Dell OptiPlex Micro déjà supportés. L’auteur a répondu aux demandes de la communauté en développant des modules dédiés pour chaque marque, tous inter-compatibles et empilables, permettant de mixer les appareils dans un même rack. La collection comprend aussi des modules de stockage et un "chapeau" pour une finition propre. Le design utilise un motif honeycomb pour une bonne ventilation et il est recommandé d’imprimer en PETG pour une meilleure résistance thermique. Le projet, open source et disponible sur MakerWorld, a reçu un accueil positif, avec des retours d’utilisateurs montrant des installations mixtes. L’auteur invite à proposer d’autres modèles de mini-PC à intégrer et encourage les retours et partages pour faire évoluer le projet.
L’article explique où et comment se procurer de la musique pour alimenter un cloud musical autohébergé, en privilégiant les solutions qui soutiennent directement les artistes. L’auteur recommande Bandcamp pour son approche éthique et ses formats audio libres (FLAC), ainsi que Qobuz pour son catalogue varié, malgré des restrictions techniques. Il mentionne aussi les plateformes de musique libre comme Jamendo et Dogmazic, ainsi que l’achat de CD lors de concerts ou en occasion. En dernier recours, il évoque des solutions alternatives pour les musiques introuvables ailleurs. L’objectif est de minimiser les intermédiaires et de favoriser les artistes, tout en partageant des découvertes et des astuces pour enrichir sa bibliothèque musicale. Une liste de ressources et de plateformes complémentaires est également proposée pour aller plus loin.
Zoxide est un outil moderne qui remplace avantageusement la commande cd
traditionnelle en ligne de commande. Il mémorise les répertoires fréquemment visités et permet d’y accéder rapidement via des raccourcis ou une interface interactive (notamment avec fzf
). Compatible avec Bash, Zsh, Fish et d’autres shells, il s’installe facilement via les dépôts officiels, Cargo ou Homebrew. Une fois configuré (via zoxide init
), il offre des commandes comme z
pour sauter vers un répertoire en quelques caractères, ou zi
pour une sélection interactive. Zoxide se distingue par sa rapidité (écrit en Rust), son algorithme de classement intelligent et son intégration transparente, pouvant même remplacer cd
via un alias ou l’option --cmd cd
. Idéal pour les développeurs ou administrateurs système, il simplifie la navigation dans des arborescences complexes et propose des fonctionnalités avancées comme la gestion manuelle de sa base de données ou des intégrations avec des éditeurs de code. Une alternative performante et maintenue à des outils comme autojump
ou z.sh
.
L’autrice partage une réflexion sur la fatigue cognitive, souvent négligée contrairement à la fatigue physique. Elle explique comment, après un accident, elle a pris conscience que le cerveau, comme le corps, peut s’épuiser à force d’être sollicité sans relâche, surtout lorsqu’on compense des difficultés invisibles (comme son ADHD et sa surdité). Elle réalise que ses efforts constants pour suivre les conversations ou gérer le quotidien ont un coût, et que la surcharge cognitive chronique peut aggraver les conséquences d’un traumatisme crânien ou d’autres problèmes de santé. Elle évoque la nécessité de mieux gérer son « budget cérébral », en apprenant à relâcher la pression et à prioriser ses efforts, tout comme on le ferait pour préserver son corps. Une prise de conscience qui l’amène à repenser son rapport au travail et à l’effort mental.
Cet article explique comment construire une API puissante avec Symfony et l’intégrer à une application frontend moderne (comme React). L’article détaille les étapes clés : installation de Symfony 7.3, création d’un endpoint API simple retournant des données JSON (ici, une liste de produits), puis développement d’une application React avec Vite pour consommer ces données. Il aborde aussi la gestion des problèmes CORS via un proxy de développement et souligne l’importance d’une architecture API-first. Des statistiques récentes (2024) et des conseils pratiques (comme l’utilisation de Swagger pour la documentation) complètent le guide, qui se veut accessible même pour les débutants. L’auteur encourage à passer ensuite à une API dynamique avec Doctrine et MySQL. Idéal pour ceux qui veulent démarrer rapidement avec Symfony et React.
L’article propose une approche innovante des design systems : les considérer comme des langues vivantes, capables de développer des « dialectes » pour s’adapter à des contextes spécifiques sans perdre leur cohérence fondamentale. L’auteur, Michel Ferreira, illustre cette idée avec des exemples concrets, comme l’adaptation du design system Polaris de Shopify pour des utilisateurs en entrepôt (écrans sombres, cibles tactiles agrandies, langage simplifié), ce qui a permis de passer de 0 % à 100 % de réussite des tâches. Plutôt que de chercher une uniformité rigide, il prône une flexibilité structurée via un « Flexibility Framework » (niveaux de personnalisation) et une gouvernance collaborative. L’objectif ? Privilégier l’efficacité utilisateur sur la conformité visuelle, en documentant chaque adaptation et en intégrant les solutions validées dans le système principal. Une lecture essentielle pour repenser les design systems comme des outils évolutifs, au service des besoins réels plutôt que des règles figées.
John Rhea explique comment il a recréé l’animation du bouton Google Gemini de Gmail en utilisant uniquement du CSS, notamment la fonction shape()
et des animations. L’animation originale montre une étoile à quatre branches qui tourne et une forme extérieure se transformant entre plusieurs formes (fleur, cylindre, hexagone, cercle) tout en tournant. Rhea détaille sa méthode : il a dessiné les cinq formes dans un logiciel vectoriel, veillant à ce qu’elles aient le même nombre de points d’ancrage pour permettre une interpolation fluide entre elles. Il a ensuite converti ces formes en syntaxe CSS shape()
, défini des variables CSS pour chaque forme, et utilisé des transitions et des @keyframes
pour animer la rotation, le changement de couleur et la morphose entre les formes. Le résultat final reproduit fidèlement l’effet visuel du bouton Gmail, avec une approche purement CSS et sans JavaScript. Un projet ludique qui met en lumière les possibilités créatives des nouvelles fonctionnalités CSS.
L’article explique comment transformer des prompts AI efficaces en assistants personnalisés et réutilisables, évitant ainsi de retaper ou copier-coller les mêmes instructions. L’auteur présente les avantages des assistants AI sur mesure (comme les CustomGPTs, Agents ou Gems) : gain de temps, cohérence, adaptation au contexte spécifique d’une équipe, et capitalisation de l’expertise. Il détaille aussi quand ne pas en créer (tâches ponctuelles, données sensibles, processus complexes, etc.).
Le processus MATCH (Map, Add knowledge, Tailor, Check, Hand off) est proposé pour concevoir un assistant, illustré par l’exemple d’un outil analysant des retours clients. L’article souligne l’importance de partir des besoins utilisateurs, d’ajouter des fichiers de connaissance, et de tester rigoureusement. Enfin, il encourage à créer ses propres assistants plutôt que d’utiliser des modèles publics, pour une meilleure adéquation avec ses workflows et son ton. Une lecture utile pour les équipes souhaitant optimiser leur usage de l’IA au quotidien.
Ploum partage ses réflexions sur la survalorisation des "grandes idées" et la négation de l’expérience dans la création et l’innovation. À travers des exemples tirés du cinéma (Glass Onion), de l’écriture (Bikepunk), de l’architecture ou du développement logiciel, il rappelle qu’une idée seule ne vaut rien : c’est l’accumulation de décisions, d’adaptations et de compromis qui transforme une étincelle en projet abouti. Il critique aussi l’illusion que les IA pourraient remplacer le travail humain, soulignant que l’expérience, la prise de décision et le "panache" sont irremplaçables. Il évoque enfin sa participation au festival Hypermondes à Mérignac, où il côtoiera des auteurs qu’il admire, non pour échanger des idées, mais pour s’imprégner de leurs parcours et de leur créativité. Un plaidoyer pour le travail, l’apprentissage et l’humilité face à la complexité des projets.
Rodolphe Breard propose une configuration sécurisée pour OpenSSH, en insistant sur l’utilisation exclusive de l’algorithme Ed25519 pour les clés (serveur et client) et en désactivant RSA et ECDSA, jugés moins sûrs. Pour l’échange de clés, il recommande l’algorithme post-quantique hybride mlkem768x25519-sha256
(basé sur ML-KEM et X25519), disponible depuis OpenSSH 9.9, et suggère de bannir les anciennes versions ne supportant pas ces algorithmes. Côté chiffrement, seuls les algorithmes AEAD (comme chacha20-poly1305@openssh.com
ou aes256-gcm@openssh.com
) sont conservés, avec des MAC en mode encrypt-then-mac. L’authentification par mot de passe est désactivée, ainsi que les options comme UsePAM
, AllowTcpForwarding
ou X11Forwarding
, tout en limitant les tentatives de connexion et en renforçant les permissions. La configuration est modulaire, avec des fichiers séparés pour les paramètres génériques et les utilisateurs autorisés. Enfin, l’outil ssh-audit est conseillé pour vérifier la robustesse de la configuration. Une approche pragmatique pour se prémunir contre les attaques, y compris celles liées à l’informatique quantique future.
Obsidian explique comment ils minimisent les risques d’attaques par la chaîne d’approvisionnement (supply chain attacks) en limitant au maximum ses dépendances externes. L’application privilégie le développement en interne (comme pour les fonctionnalités Bases et Canvas), évite les bibliothèques tierces quand c’est possible, et utilise des versions figées et vérifiées pour les dépendances inévitables (comme Electron ou CodeMirror). Les mises à jour sont rares, méticuleusement testées et espacées dans le temps, avec une revue approfondie des changements et des sous-dépendances. Cette approche réduit la surface d’attaque et permet de détecter rapidement d’éventuels problèmes avant qu’ils n’affectent les utilisateurs. Une stratégie qui combine minimalisme, contrôle strict et prudence pour garantir un environnement sécurisé et privé.
Linear explique dans cet article pourquoi l’entreprise a adopté une politique « zéro bug » : chaque bug signalé est corrigé rapidement (sous 48h pour les priorités hautes, 7 jours pour les autres), sans accumulation dans un backlog. L’idée est née après qu’un bug signalé dans une autre application ait mis cinq ans à être résolu, illustrant l’inutilité de faire attendre les utilisateurs. Pour y parvenir, Linear a d’abord nettoyé son backlog existant (175 bugs en trois semaines), puis mis en place des processus stricts : chaque bug est soit corrigé immédiatement, soit marqué comme « ne sera pas corrigé ». Un tableau de bord permet de suivre les bugs ouverts et de rééquilibrer la charge entre les équipes. Cette approche améliore la qualité du produit, renforce la confiance des utilisateurs (qui voient leurs signalements résolus en un temps record) et influence la culture d’ingénierie, incitant à éviter les bugs dès le développement. Résultat : plus de 2 000 bugs corrigés en un an, et une relation client transformée en collaboration positive. Une politique devenue une valeur centrale, que personne ne souhaite abandonner.
L’article présente Warpgate, un outil open source qui simplifie la gestion des accès sécurisés (SSH, PostgreSQL, MySQL, HTTP) en agissant comme un bastion moderne. Facile à déployer (binaire ou Docker), il centralise l’authentification (avec support SSO), offre une connexion transparente et un audit en temps réel des sessions. L’auteur souligne sa simplicité, sa sécurité renforcée et son interface intuitive, idéale pour remplacer les solutions complexes de machines de rebond. Un exemple de déploiement avec Docker Compose est fourni, illustrant la rapidité de mise en place. Une pépite pour les administrateurs système en quête d’efficacité et de traçabilité.
Ce billet explique comment résoudre en DNS les noms de conteneurs Docker sous le domaine local .docker
en utilisant systemd-resolved plutôt que dnsmasq, une solution plus simple et performante depuis systemd 258. L’auteur utilise toujours dnsdock pour gérer la résolution DNS, mais délègue désormais la zone .docker
à ce service via un fichier de configuration /etc/systemd/dns-delegate.d/docker.dns-delegate
. Après avoir lancé dnsdock et configuré resolved, il devient possible de résoudre les noms des conteneurs (basés sur leur nom, alias ou étiquettes) directement depuis la machine hôte, facilitant ainsi la gestion de plusieurs services comme PostgreSQL sans conflit de ports. Une mise à jour pratique pour les utilisateurs de Docker et systemd.
Cet article explique comment configurer WordPress avec MariaDB et Traefik en utilisant des réseaux Docker séparés pour améliorer la sécurité et faciliter la duplication de sites. L’article détaille la création d’une architecture où chaque site WordPress et sa base de données sont isolés dans leur propre réseau privé, inaccessible depuis internet, tandis que Traefik gère le routage et les certificats SSL automatiquement via Let’s Encrypt. Le tutoriel propose une configuration étape par étape : installation de Traefik avec SSL, création de réseaux Docker dédiés, déploiement d’un premier site WordPress, puis duplication aisée pour ajouter d’autres sites. Les avantages soulignés sont la sécurité renforcée, la simplicité de gestion et la possibilité d’ajouter facilement de nouveaux sites. L’auteur évoque aussi des pistes d’amélioration, comme l’automatisation des sauvegardes des bases de données. Idéal pour qui veut héberger plusieurs sites WordPress de manière sécurisée et scalable.
Scott H. Young partage une sélection de 10 livres sur l’altruisme et l’impact positif, lus dans le cadre de son projet annuel "Foundations" axé sur le service. Il en tire trois enseignements clés : donner rend plus heureux et en meilleure santé, nous pourrions donner bien plus (surtout face aux inégalités mondiales), et notre générosité pourrait être bien plus efficace. Parmi les ouvrages présentés, Doing Good Better (William MacAskill) plaide pour un altruisme rationnel, Give and Take (Adam Grant) montre que les "donneurs" réussissent souvent mieux à long terme, et What We Owe the Future (MacAskill) interroge notre responsabilité envers les générations futures. D’autres titres explorent la philosophie morale (Reasons and Persons de Derek Parfit), l’empathie (Against Empathie de Paul Bloom), ou la quête de sens (Man’s Search for Meaning de Viktor Frankl). Young souligne aussi les dilemmes persistants : comment équilibrer aide aux proches et aux inconnus, ou aux humains vs. animaux ? Une liste variée, mêlant analyses pratiques et réflexions profondes sur l’éthique et l’action.
Ce tutoriel explique comment nettoyer en toute sécurité le dossier WinSxS sous Windows 11 (et autres versions), un répertoire système souvent très volumineux mais essentiel au fonctionnement du système. Le dossier WinSxS stocke les composants Windows nécessaires aux mises à jour, à la réparation du système et à la compatibilité des applications. L’article détaille deux méthodes pour réduire sa taille : l’utilisation de l’outil DISM en ligne de commande (avec les options /AnalyzeComponentStore
pour analyser l’espace occupable et /StartComponentCleanup
pour le nettoyage, éventuellement avec /ResetBase
pour un nettoyage plus agressif), et une méthode graphique via les Paramètres Windows (Stockage > Fichiers temporaires > Nettoyage de Windows Update). L’auteur insiste sur l’importance de ne jamais supprimer manuellement ce dossier, au risque de compromettre la stabilité du système. Un nettoyage régulier permet de récupérer plusieurs gigaoctets d’espace disque sans danger.
Ludovic Frank explique comment éviter les coûts imprévisibles des services comme Google Maps ou Mapbox en utilisant des solutions open source auto-hébergées. Après avoir testé Photon, jugé peu performant pour les adresses françaises, il recommande Addok, bien plus efficace pour la France. Le tutoriel détaille l’installation via Docker, propose un contrôleur Stimulus pour l’intégration front, et montre comment remplir automatiquement les champs d’adresse (rue, code postal, ville) à partir d’une base de données locale. Une alternative économique et maîtrisée, idéale pour les projets freemium ou sensibles aux coûts.
Ce zine démystifie les permissions Unix de façon visuelle et accessible : chaque fichier a trois droits (lecture, écriture, exécution) pour trois catégories (utilisateur, groupe, autres), affichables via ls -l
. Les permissions sont représentées en binaire (ex. rw-
= 110
= 6
), ce qui permet d’utiliser chmod 644
pour définir rapidement rw-r--r--
. L’autrice explique aussi les bits spéciaux (setuid
, setgid
, sticky
) et leurs effets, comme un exécutable qui s’exécute toujours en tant que root. Pour les dossiers, les droits changent de sens : r
permet de lister, w
de créer, et x
d’y accéder.
Ce zine explique simplement comment surveiller l’utilisation du disque sous Linux avec des commandes essentielles :
du
(avec -s
pour un résumé et -h
pour des tailles lisibles) permet de connaître l’espace occupé par des fichiers ou dossiers, tandis que df
(et son option -h
) affiche l’espace disponible sur chaque partition. L’autrice souligne aussi l’importance de df -i
pour vérifier la consommation d’inodes, dont l’épuisement empêche la création de nouveaux fichiers. Enfin, elle présente ncdu
comme un outil interactif pour visualiser l’espace disque utilisé, et iostat
pour analyser les performances de lecture/écriture en temps réel.
Ce zine explique de façon claire et visuelle comment utiliser la commande ps
sous Linux pour lister les processus en cours. L’autrice recommande d’utiliser ps aux
pour afficher tous les processus avec leur utilisateur, et détaille des options utiles comme w
(pour voir les arguments complets des commandes), e
(pour afficher les variables d’environnement), ou encore f
(pour un arbre ASCII des processus). Elle souligne aussi que ps
supporte trois styles d’arguments (UNIX, BSD, GNU), ce qui peut rendre son utilisation un peu déroutante, et propose des astuces comme ps -eo user,pid,wchan,cmd
pour personnaliser les colonnes affichées. Enfin, elle rappelle que des outils comme pstree
peuvent compléter ps
pour visualiser la hiérarchie des processus.
Ludovic Frank partage plusieurs contrôleurs Stimulus prêts à l’emploi, utilisables aussi bien avec Symfony (via Symfony-UX) qu’avec Ruby on Rails. L’article détaille comment charger ces contrôleurs de manière asynchrone pour optimiser les performances, et propose des exemples concrets : un bouton qui se cache lors de la navigation dans une Turbo Frame, un accordéon avec DaisyUI, une intégration de carte OpenFreeMap (LFMaps) chargée à la demande, et une mise à jour du contrôleur intl-tel-input pour la gestion des numéros de téléphone internationaux. Il souligne aussi l’intérêt de la stack Hotwired (Stimulus + Turbo), commune aux deux frameworks, et mentionne la bibliothèque Stimulus Components pour des composants supplémentaires. Une ressource utile pour enrichir rapidement le front-end de vos applications
L’article partage l’expérience d’un lead développeur qui, submergé par la multiplication des responsabilités, a réalisé que son emploi du temps était aussi mal optimisé qu’un code truffé de bugs. Il propose une méthode inspirée du développement logiciel pour "refactorer" son agenda : diagnostiquer ses tâches (en les listant, évaluant leur importance et leur urgence via une matrice d’Eisenhower adaptée), prioriser en distinguant l’urgent de l’important, et planifier avec le time-blocking (réserver des plages fixes pour les tâches récurrentes et laisser 30% de temps libre pour les imprévus). L’auteur insiste sur l’importance de la weekly review pour ajuster son planning, déléguer davantage (comme en pair programming), et ainsi retrouver du temps pour l’essentiel : développer, faire de la veille, ou animer des ateliers. Une approche pragmatique pour éviter le syndrome de la "fonction qui fait tout" et réduire le stress, avec des outils concrets comme la matrice de priorisation et des créneaux sanctuarisés. À tester surtout quand on passe de dev à lead ou manager !
Une bookmarklet pour créer des URLs avec un fragment de texte sélectionné dans la page - pratique pour aller directement à la zone voulue
L’article s’intéresse à la fonctionnalité CSS la plus décriée selon le State of CSS 2025 : les fonctions trigonométriques, notamment sin()
et cos()
. Pourtant, ces fonctions offrent des usages pratiques et créatifs, comme la création de dispositions circulaires (placer des éléments autour d’un cercle), des layouts ondulés (effets de vagues ou entrelacs), ou encore des animations amorties (mouvements réalistes de ressorts ou de pendules). L’auteur explique leur principe via le cercle unité et montre comment les utiliser en CSS pour des effets visuels dynamiques, sans recourir à des valeurs magiques. L’objectif ? Réconcilier les développeurs avec ces outils souvent perçus comme complexes, mais en réalité puissants et accessibles. Une invitation à explorer leur potentiel au-delà des préjugés !
Logger chaque appel API est essentiel pour le débogage, l’audit et la conformité, mais une mauvaise implémentation peut dégrader les performances (blocage de l’event loop, saturation du disque, latence réseau). La règle d’or : ne jamais faire attendre la réponse API par l’écriture des logs. Pour y parvenir, privilégiez un logger asynchrone (comme Pino), bufferisez les logs en mémoire avant de les flusher par lots, et externalisez leur traitement via des workers ou des files de messages (Redis, Kafka). Masquez les données sensibles, surveillez l’impact sur les performances, et archivez les logs régulièrement. En production, une architecture distribuée (ex : logs envoyés à Kafka puis traités par ELK) permet de scalabiliser sans impact sur les temps de réponse. L’objectif : capturer les infos clés (timestamp, méthode, URL, statut, latence, utilisateur) sans alourdir le traitement des requêtes.
Flozz partage ses premières impressions et l’installation d’Ubuntu 25.04 sur le GPD MicroPC 2, un mini-PC portable ultra-compact (7", 800 g) équipé d’un Intel N250, 16 Go de RAM et un SSD NVMe de 512 Go. L’auteur, nostalgique des netbooks, apprécie sa polyvalence (mode PC/tablette, écran tactile 1080p, connectique complète : 2x USB-A, 2x USB-C, HDMI, Ethernet, Wi-Fi 6, Bluetooth 5.2) et son format nomade, idéal pour le dépannage ou les déplacements. L’installation d’Ubuntu se passe sans encombre, mais nécessite quelques ajustements : correction des boutons du trackpad via une configuration libinput, réactivation du tactile après veille avec un script systemd, et activation de la rotation automatique de l’écran via une extension GNOME. Le clavier QWERTY, compact et optimisé pour une utilisation à deux mains, est surprenant d’agrément, tandis que l’écran offre une bonne qualité. Seuls bémols : le chargeur fourni (format US + adaptateur encombrant) et l’absence de pilote pour le lecteur d’empreintes. Malgré un prix élevé (425 € + taxes) et quelques réglages logiciels, la machine séduit par sa solidité et sa praticité, notamment en mode tablette.
Pascal Martin, Principal Engineer et AWS Hero, explique dans cette conférence que les systèmes distribués — ensembles de services communiquant via le réseau — sont omniprésents dans le web moderne, offrant scalabilité, résilience et flexibilité, mais introduisant aussi des défis majeurs : gestion de la cohérence des données, communication complexe entre services, et résilience face aux pannes inévitables. Il aborde des concepts clés comme le partitionnement des données, les compromis du théorème CAP (cohérence, disponibilité, tolérance aux pannes), les patterns Outbox et Saga pour les transactions, et l’importance de limiter le Blast Radius (impact des pannes) via des time-outs, retries intelligents, et une dégradation gracieuse des services. Son message central : tout peut tomber en panne, il faut donc concevoir des architectures résilientes, s’appuyer sur des outils éprouvés, et accepter que les systèmes distribués fonctionnent toujours dans un état "partiellement dégradé". Une conférence essentielle pour comprendre pourquoi et comment construire des systèmes robustes, avec des exemples concrets tirés de sa pratique chez Bedrock et dans le cloud.
Ce tutoriel explique l’utilité des pseudo-classes fonctionnelles en CSS pour cibler des éléments de manière plus efficace et lisible :
-
:is()
: Permet de regrouper plusieurs sélecteurs (logique OU) pour appliquer les mêmes styles, réduisant la redondance.
Exemple ::is(h1, h2, h3) { color: [#333](https://raphael.salique.fr/liens/./add-tag/333); }
-
:not()
: Exclut un élément d’une sélection, utile pour appliquer des styles à tous sauf à quelques exceptions.
Exemple :li:not(:last-child) { border-bottom: 1px solid [#ccc](https://raphael.salique.fr/liens/./add-tag/ccc); }
-
:where()
: Similaire à:is()
, mais avec une spécificité nulle, idéal pour des styles de base facilement surchargeables.
Exemple ::where(header, main, footer) { margin: 1rem 0; }
-
:has()
: Cible un élément parent en fonction de ses descendants, une nouveauté puissante pour des sélections contextuelles.
Exemple :article:has(img) { border: 2px solid red; }
Ces sélecteurs améliorent la concision et la maintenabilité du code CSS.
Se motiver pour une tâche pénible ? (Ashley Janssen)
L’auteure compare cela à son vélo d’appartement détesté : on redoute avant, on est soulagé·e après. Ses astuces :
- Identifier le blocage (fatigue, peur, ennui) et agir dessus.
- Rendre la tâche moins désagréable : musique, récompense.
- Démarrer petit : 5 minutes suffisent souvent à lancer l’élan.
- Routine > motivation : planifier plutôt qu’attendre l’envie.
"La clé ? Commencer, même mal. Le reste suit."
Dans cet article, Andy Clarke explore le concept d’animations ambiantes : des mouvements subtils et lents qui apportent de la vie à un design sans distraire l’utilisateur. Contrairement aux animations interactives ou narratives, les animations ambiantes se fondent dans l’arrière-plan, créant une atmosphère discrète mais immersive. Clarke illustre son propos en transformant une couverture de comic book statique en une animation CSS/SVG où les éléments (plumes, fumée, expressions) s’animent de manière naturelle et presque imperceptible. L’objectif ? Renforcer la personnalité d’une marque ou d’un projet sans nuire à l’expérience utilisateur, en privilégiant des transitions douces, des boucles fluides et une approche minimaliste.
L’auteur partage des conseils pratiques : privilégier les éléments qui bougeraient naturellement (feuilles, fumée, ombres), éviter les mouvements brusques, et respecter les préférences utilisateur (comme le mode prefers-reduced-motion
). Il insiste sur l’importance de la modération et de la performance, en utilisant des SVG bien structurés et du CSS optimisé. Un exemple concret et un démo CodePen accompagnent l’article, montrant comment ces micro-interactions, bien dosées, ajoutent de la profondeur et du charme à un design.
Josh W. Comeau analyse la nouvelle règle CSS @starting-style
, qui permet d’utiliser des transitions pour animer l’apparition d’éléments (ex: fondu, déplacement), là où on utilisait avant des @keyframes
.
Le piège :
Contrairement aux @keyframes
, les styles définis dans @starting-style
ne sont pas prioritaires et peuvent être écrasés par des sélecteurs plus spécifiques (ID, styles inline). Résultat : l’animation ne se déclenche pas.
Exemple :
Un bouton génère des particules avec une transition sur transform
. Si la position finale est définie en JavaScript (style inline), @starting-style
est ignoré.
Solutions :
- Forcer avec
!important
(peu maintenable), - Utiliser des variables CSS pour égaliser la spécificité,
- Revenir aux
@keyframes
, plus simples et compatibles.
Verdict :
@starting-style
est pratique, mais les @keyframes
restent souvent plus fiables.
Une liste de sites sur lesquels acheter de la musique en haute qualité
L’IA excelle dans les tâches complexes et calculatoires (résoudre des équations, analyser des données), mais peine sur ce qui nous semble intuitif : reconnaître une ironie, plier une chemise, ou gérer l’imprévu. Ce paradoxe, identifié par Hans Moravec dès 1980, s’observe aujourd’hui dans l’automatisation du travail :
- Les métiers cognitifs routiniers (juristes juniors, traducteurs) sont menacés par l’IA, qui prend en charge les tâches répétitives.
- Les métiers manuels et relationnels (artisans, soignants, éducateurs) résistent, car ils reposent sur l’intuition, la motricité fine et le lien humain.
L’enjeu n’est pas de craindre l’IA, mais de l’utiliser comme une prothèse cognitive : automatiser le répétitif pour se recentrer sur la créativité, l’accompagnement et le sens. La vraie valeur du travail humain se déplace vers ce que les machines ne savent pas faire : interpréter, improviser, créer du lien.
Chaque modèle d’IA a ses spécificités : format préféré (XML pour Claude, Markdown pour GPT), sensibilité à la position des informations (les modèles retiennent mieux le début et la fin d’un texte), et une « personnalité » propre (prudence, concision, etc.). Plutôt que de forcer un modèle à sortir de ses biais, mieux vaut adapter ses prompts à ses particularités. Une approche qui optimise performance, coût et conformité, et transforme l’interaction avec l’IA en un véritable artisanat.
Ce guide explique comment monter une partition Windows chiffrée avec BitLocker sous Linux, en utilisant Dislocker ou Cryptsetup. Idéal pour les dual-boot ou la récupération de données.
🔹 Outils : dislocker
, cryptsetup
, ntfs-3g
🔹 Astuce : Désactiver le Fast Startup de Windows pour éviter les problèmes.
🔹 Alternative : Utiliser cryptsetup
(depuis la v2.3.0) si Dislocker pose problème.
Une adaptation des concepts du Clean Code en PHP
Problème : Traiter une vidéo en synchrone bloque l’utilisateur et le serveur.
Solution : Découper la vidéo en chunks, traiter chaque morceau en parallèle via des workers Symfony Messenger (RabbitMQ, Redis).
Étapes clés :
- Upload → Envoi d’un message
ProcessVideoMessage
. - Découpage en chunks → Messages
ProcessVideoChunkMessage
traités par des workers. - Recomposition finale avec FFmpeg une fois tous les chunks prêts.
Avantages :
✅ Expérience utilisateur fluide (pas d’attente).
✅ Scalable (ajoutez des workers).
✅ Architecture modulaire et tolérante aux pannes.
L’article détaille la mise en place d’un pipeline GitLab CI pour un projet Symfony, avec les étapes clés suivantes :
-
Automatisation des tests (unitaires, fonctionnels) à chaque Merge Request ou push, en utilisant SQLite pour les tests (plus léger que PostgreSQL).
-
Configuration du fichier
.gitlab-ci.yml
:- Définition des stages (
build
,test
). - Utilisation d’images Docker (PHP 8.3, Node 21.7) pour exécuter les jobs.
- Installation des dépendances (Composer, npm) et exécution des tests via PHPUnit.
- Gestion des fixtures et du schéma de base de données en environnement de test.
- Build des assets front-end (Webpack Encore) avec partage des artefacts entre jobs.
- Définition des stages (
-
Blocage des merges si les tests échouent, via l’option "Pipelines must succeed" dans les paramètres de GitLab.
-
Bonus : Pistes pour aller plus loin (analyse statique avec phpstan, audit de sécurité, déploiement automatique).
NixOS et Proxmox forment un duo puissant pour créer des serveurs reproductibles, déclaratifs et atomiques :
- Déclaratif : Un seul fichier (
configuration.nix
) décrit l’état final du système. - Reproductible : Clonez vos VM à l’identique, sans "flocons de neige".
- Atomique : Mises à jour sans risque, avec rollback instantané en cas d’échec.
L’article propose un tutoriel pratique :
- Téléchargement automatisé de l’ISO NixOS.
- Création d’une VM Proxmox via
qm
, avec boot UEFI et montage de l’ISO. - Préparation à l’installation via
configuration.nix
.
Idéal pour une infrastructure propre, robuste et facile à maintenir. Une approche moderne pour dire adieu au "ça marche sur ma machine" !
Cet article explique pourquoi l’utilisation de Math.random()
pour générer des mots de passe est dangereuse (prédictibilité, absence de sécurité cryptographique) et propose une solution robuste via l’API Web Crypto et sa méthode crypto.getRandomValues()
. Cette dernière utilise des sources d’entropie cryptographiquement sécurisées, évitant les biais de distribution grâce au rejection sampling.
L’article fournit un exemple d’implémentation complète, incluant :
- Une classe
SecurePasswordGenerator
personnalisable (longueur, types de caractères, exclusion des caractères ambigus). - Une méthode pour calculer la force du mot de passe généré.
- Des bonnes pratiques : validation côté serveur, gestion mémoire, et compatibilité navigateur (HTTPS requis).
À retenir : Toujours privilégier crypto.getRandomValues()
et éviter Math.random()
pour toute application sensible. L’API est largement supportée (Chrome, Firefox, Safari) et garantit une sécurité optimale.
Découvre ce tutoriel pas à pas pour développer un assistant vocal personnalisé en Python, inspiré de Jarvis. L’article détaille comment utiliser des bibliothèques comme speech_recognition
, pyttsx3
et wikipedia
pour reconnaître la voix, répondre à des commandes et interagir avec ton ordinateur. Idéal pour automatiser des tâches ou s’initier à l’IA conversationnelle.
Ce tutoriel de ZoneTuto explique comment configurer le montage automatique d’un volume chiffré avec LUKS (Linux Unified Key Setup) au démarrage du système. Il détaille les étapes clés :
- Préparation du volume chiffré et création d’une clé de déchiffrement dédiée.
- Configuration de
/etc/crypttab
et/etc/fstab
pour un montage automatique. - Sécurisation de la clé et gestion des permissions.
Idéal pour ceux qui souhaitent allier sécurité et praticité sous Linux.
Lyra Rebane défend l’idée que beaucoup de sites n’ont pas besoin de JS ou de frameworks lourds pour offrir une expérience riche : modernes, HTML et CSS seuls suffisent souvent. L’article montre de nouveaux outils CSS (naming, nesting, pseudo-classes, color mixing, unités viewport dynamiques, etc.), des composants interactifs accessibles (via « \:checked », « \:has », « details/summary », etc.), et des effets visuels performants. L’auteur insiste aussi sur les bénéfices pour la performance, l’accessibilité, la vie privée, et le plaisir de coder léger, esthétique et fonctionnel.
Dans le cadre de son projet Foundations, l’auteur partage douze croyances qu’il a révisées après une année de recherches approfondies, combinant lecture intensive et mise en pratique. Il souligne d’abord que la valeur de la recherche réside moins dans la découverte de vérités évidentes (comme l’importance du sport ou du sommeil) que dans la capacité à trancher entre des théories plausibles ou à approfondir des sujets pour en faire une priorité durable. Parmi ses changements d’avis marquants : la primauté du cardio sur la musculation pour la santé, l’idée que la productivité découle davantage du bien-être que du stress, ou encore la risque accru des obligations par rapport aux actions sur le long terme. Il nuance aussi des idées reçues, comme la nocivité persistante des graisses saturées, la supériorité des livres papier pour la rétention, ou l’impact vital des liens sociaux sur la longévité. D’autres prises de position surprennent, comme l’efficacité des médicaments contre le TDAH (contrairement aux approches comportementales), les bienfaits d’un léger auto-illusionnement pour l’efficacité personnelle, ou l’avantage d’un désencombrement radical plutôt que progressif. Enfin, il remet en cause des dogmes comme la quête du sommeil parfait (source de contre-productivité) ou le rôle surévalué de l’empathie émotionnelle dans la morale, prônant plutôt la compassion et la raison. Ces ajustements, souvent contre-intuitifs, reflètent une approche pragmatique où la nuance l’emporte sur les certitudes, et où l’action compte autant que la connaissance.
Face à l’encombrement du Web actuel (publicités intrusives, trackers, JavaScript omniprésent, données superflues), le protocole Gopher — créé en 1991 — propose une approche radicalement simple : des menus textuels, des requêtes uniques, et une absence totale de scripts ou de cookies. Là où une recette web pèse plusieurs mégaoctets, Gopher se contente de quelques kilooctets, sans pistage ni distraction. Sans sessions ni contenu dynamique, il privilégie l’information pure et la légèreté, au prix d’une expérience dépouillée, idéale pour ceux qui recherchent efficacité et confidentialité. Porté par des communautés comme les Pubnix, Gopher reste une niche pour les amateurs de sobriété numérique, accessible via des clients dédiés (Lagrange, Bombadillo, etc.).
La multi-location (multi-tenancy) en base de données désigne une architecture où une seule instance d’application et d’infrastructure sert plusieurs clients (tenants), tout en garantissant une isolation logique de leurs données. Ce modèle, largement adopté dans le cloud, permet une meilleure scalabilité, une réduction des coûts de maintenance et une optimisation des ressources. L’article détaille quatre approches principales : base unique avec schéma partagé (simple mais risqué en cas d’oubli de filtrage par tenant), base unique avec schémas séparés (meilleure isolation mais complexité accrue), base dédiée par tenant (isolation maximale mais coûteuse en gestion), et plusieurs bases avec tenants partagés (compromis entre coût et performance). Chaque méthode présente des avantages et des inconvénients selon les besoins en sécurité, performance et maintenance
L’article présente Git Much Faster, un script open source conçu pour optimiser drastiquement les temps de clonage des dépôts Git, surtout pour les gros projets (comme Chromium ou le noyau Linux). En combinant des stratégies comme la désactivation de la compression (core.compression=0
), l’augmentation de la taille des buffers HTTP (http.postBuffer=1024M
), les clones partiels (--filter=blob:none
) et les checkouts éparses, il permet de réduire les temps de clone jusqu’à 93% et l’espace disque jusqu’à 98%, sans sacrifier l’accès au code source. Par exemple, le dépôt Chromium (60+ Go) passe de 95 minutes à 6 minutes de clonage. Le script propose aussi des benchmarks comparatifs avec Git Scalar et des configurations sur mesure pour CI/CD ou environnements distants. Idéal pour les équipes confrontées à des dépôts volumineux ou des pipelines lents, il s’installe simplement via un script bash et s’adapte à différents cas d’usage, tout en limitant les impacts sur l’historique ou la complétude des données. Une solution pragmatique pour booster la productivité et réduire les coûts d’infrastructure.
Les verres auto-nettoyants utilisent des revêtements spéciaux, soit hydrophobes (où l’eau perle et emporte la saleté), soit hydrophiles (où l’eau s’étale en fine couche et active un catalyseur comme le dioxyde de titane sous l’effet des UV). Dans les deux cas, la saleté et les bactéries sont éliminées naturellement par l’eau et la lumière, rendant la surface propre et désinfectée sans intervention manuelle. Ces technologies, passives et efficaces, sont aussi utilisées sur certains écrans de smartphones, tout en conservant transparence et fonctionnalité tactile. Une innovation pratique pour vitres, écrans et équipements médicaux !
L’article explique pourquoi l’auteur a abandonné Docker pour Podman, mettant en avant plusieurs avantages clés : Podman est sans démon, ce qui améliore la sécurité (moins de vulnérabilités liées à un processus root permanent) et réduit la consommation de ressources. Il s’intègre nativement avec systemd et Kubernetes, facilitant la gestion des conteneurs comme des services système et permettant une transition fluide vers des environnements de production. La migration est simple, car Podman utilise les mêmes commandes et fichiers Dockerfile que Docker, tout en offrant une approche plus sécurisée (mode rootless par défaut) et une meilleure alignement avec les pratiques Linux modernes. L’auteur souligne aussi que Podman encourage une architecture plus propre, comme l’utilisation d’un reverse proxy plutôt que l’exposition directe de ports privilégiés. En résumé, Podman se présente comme une évolution naturelle pour les développeurs cherchant plus de sécurité, de légèreté et de cohérence entre le développement et la production.
L’article explique comment intégrer Slack à une application Symfony pour créer un "Proactive Agent" capable de traiter en temps réel les messages reçus via des webhooks. L’auteur détaille l’utilisation des webhooks sortants de Slack pour recevoir les messages (plutôt que de polluer l’API), puis montre comment configurer une application Slack, valider et désérialiser les payloads JSON avec Symfony (via des DTO et les composants Validator et Serializer). Le flux de travail repose sur un contrôleur unique gérant à la fois la validation d’URL et les événements Slack, avant d’envoyer les messages à un bus de messages pour traitement asynchrone par un agent IA. L’approche combine efficacité (réduction des appels API), modularité (DTOs dédiés) et réactivité, illustrant l’intégration d’un outil moderne comme Slack dans une architecture Symfony existante.
L’article explique comment simplifier le déploiement d’agents IA en conteneurisant une application Symfony avec Docker. Il présente trois stratégies (monolithique, sidecar, hybride) pour adapter la conteneurisation aux besoins du projet, en privilégiant une approche hybride combinant Nginx, PHP-FPM et Supervisord dans un seul conteneur, tout en permettant des tâches spécifiques via des sidecars. L’auteur détaille la configuration des fichiers Nginx, PHP, PHP-FPM et Supervisord, ainsi que la création d’un Dockerfile et d’un docker-compose.yml pour une image auto-suffisante et scalable. L’objectif est d’assurer la portabilité, la robustesse et l’évolutivité, notamment pour des environnements Kubernetes, tout en évitant les anti-patterns comme la reconstruction d’image par environnement. L’article insiste sur l’utilisation de UTC, la séparation des configurations par environnement et l’automatisation via CI/CD pour un déploiement fiable et reproductible.
Cet article présente des astuces pour un code plus propre, rapide et maintenable. Découvre les named capture groups en regex pour un parsing lisible, Object.fromEntries() pour transformer des données en un clin d’œil, ou les champs privés de classe (#) pour encapsuler ton état. Utilise le top-level await pour simplifier tes modules, l’API Intl pour un formatting localisé sans dépendances, ou le pipeline operator (|>) pour des chaînes de fonctions élégantes. WeakMap stocke des métadonnées sans polluer tes objets, les opérateurs d’assignation logique (||=, &&=, ??=) réduisent les conditionnelles, et Array.at(-1) élimine les acrobaties d’indexation. Des outils comme optional chaining (?.) ou Intl remplacent avantageusement des librairies externes.
Dans son article, Josh W. Comeau explore les défis et solutions pour créer des effets de décalage de couleurs dynamiques en CSS, notamment pour des animations de particules. Il explique d’abord comment générer des couleurs aléatoires en HSL pour une cohérence visuelle, mais souligne une limitation majeure : les navigateurs interpolent les couleurs en RGB, ce qui produit des teintes grisées et peu naturelles lors des transitions entre deux couleurs HSL. Par exemple, une transition entre rouge et turquoise passe par du gris, car les canaux RGB convergent vers des valeurs similaires. Pour contourner ce problème, il propose d’utiliser la propriété CSS filter: hue-rotate()
, qui permet de faire tourner la teinte de manière fluide et naturelle autour de la roue chromatique, sans perte de saturation. Il partage aussi des astuces pour ajouter des effets de scintillement aléatoires aux particules, améliorant ainsi le réalisme de l’animation.
L’article souligne l’importance d’une gestion rigoureuse des versions npm pour sécuriser ses projets JavaScript, surtout après des attaques comme celles sur chalk et debug. Il recommande d’utiliser des versions exactes pour les dépendances critiques (ex: "react": "18.2.0"
) plutôt que des ranges permissifs (^
, ~
, >=
), et d’always commiter les lock files (package-lock.json
ou yarn.lock
) pour éviter les incohérences entre environnements. Une méthodologie sécurisée inclut : des audits réguliers (npm audit
), des mises à jour contrôlées (via npm-check-updates
), des tests complets après chaque modification, et l’intégration de vérifications automatiques dans le CI/CD. L’objectif est de minimiser les risques liés à la supply chain en privilégiant la sécurité à la commodité, notamment pour les packages critiques en production. Une checklist pratique résume les bonnes pratiques : versions exactes, lock files versionnés, audits automatiques, monitoring continu et backups des versions stables. La sécurité devient ainsi un investissement clé pour la stabilité des projets.
Wojtek Jurkowlaniec explique comment il maintient un projet de 10 000+ lignes de code en combinant design manuel, documentation vivante (fichiers DESIGN et ARCHITECTURE), et itérations courtes et indépendantes. Le processus repose sur une séparation claire des rôles : l’humain définit la vision et l’architecture, tandis que le LLM génère du code, propose des refactors et accélère l’implémentation, toujours guidé par des documents à jour. Chaque feature est développée par étapes, testée et committée, avec une trace écrite des corrections dans un CODING-GUIDELINES.md pour éviter la dette technique. La clé ? Traiter le LLM comme un outil de transformation de texte, pas comme un co-développeur, et garder le code toujours dans un état fonctionnel. L’auteur insiste sur l’importance de documenter systématiquement et de refactorer régulièrement pour éviter l’accumulation de chaos, tout en limitant le contexte fourni au LLM pour éviter les hallucinations. Une méthode qui privilégie la consistance à la vitesse, et qui permet de scalabiliser l’usage des LLM même sur des codebases complexes.
L’article présente 5 workflows essentiels pour maîtriser l’utilisation des agents IA et obtenir des résultats fiables et reproductibles, au-delà des simples prompts ad hoc. Il détaille :
1. Le chaînage de prompts (prompt chaining) pour décomposer les tâches complexes en étapes successives, réduisant les erreurs et améliorant la clarté.
2. Le routage (routing) pour diriger chaque requête vers le modèle le plus adapté (léger ou lourd), optimisant coûts et qualité.
3. La parallélisation pour exécuter simultanément des sous-tâches indépendantes (ex : analyse de document, revue de code) et fusionner les résultats, gagnant en rapidité et précision.
4. L’orchestrateur-travailleurs (orchestrator-workers) où un modèle central planifie et distribue les sous-tâches à des modèles spécialisés, idéal pour des projets complexes comme la rédaction ou le développement.
5. L’évaluateur-optimiseur (evaluator-optimizer) qui introduit une boucle de feedback : un modèle génère une réponse, un autre l’évalue et demande des révisions jusqu’à ce que les critères soient remplis, garantissant une qualité constante.
L’auteur insiste sur l’importance de structurer les processus pour éviter les sorties incohérentes, réduire les coûts et gagner en contrôle, avec des exemples de code pour chaque workflow. Une approche systématique qui transforme l’usage des IA en outil professionnel fiable.
Laravel Eloquent utilise le modèle Active Record, qui permet de manipuler les lignes d’une base de données comme des objets PHP natifs, intégrant directement les opérations CRUD (Create, Read, Update, Delete). Chaque modèle (comme Post
) correspond à une table et encapsule à la fois les données et la logique de persistance, simplifiant ainsi les interactions avec la base. Ce pattern offre une productivité rapide, une syntaxe lisible et une convention claire, mais peut aussi entraîner un couplage fort avec la base, des modèles surchargés et des tests plus complexes. Pour atténuer ces inconvénients, il est conseillé de garder les modèles légers, d’encapsuler les requêtes complexes et de privilégier les tests d’intégration. L’article illustre ces concepts avec une implémentation minimaliste en PHP pur, démontrant comment Eloquent gère la correspondance table-objet, le suivi des modifications et la persistance des données, ce qui rend son "magie" plus accessible et compréhensible.
En TypeScript, interface
et type
servent tous deux à définir des formes de données, mais avec des cas d’usage distincts. Les interfaces brillent pour déclarer des objets et des APIs extensibles (grâce à la fusion de déclarations et à l’héritage), ce qui les rend parfaites pour les contrats publics ou les bibliothèques. À l’inverse, les types (via type
) sont plus polyvalents : ils gèrent les unions, les tuples, les types mappés et les structures complexes, mais ne peuvent pas être réouverts. Privilégiez les interfaces pour modéliser des objets et favoriser l’extensibilité (ex : classes, APIs), et optez pour les types pour des besoins avancés comme les unions, les utilitaires ou les alias de types complexes. En pratique, utilisez les interfaces par défaut pour les formes d’objets, et les types pour tout le reste, surtout quand la flexibilité syntaxique est requise.
Dans ce billet, l’auteur rappelle l’importance cruciale de la mesure dans l’amélioration continue, citant Lord Kelvin : « On ne peut pas améliorer ce que l’on ne mesure pas. » Il souligne que beaucoup d’équipes travaillent en « mode tunnel », se concentrant uniquement sur la réalisation des tâches sans évaluer leur impact réel. Inspiré par le Lean Startup, il insiste sur la boucle « Build - Measure - Learn » : construire, mesurer les résultats, puis apprendre pour ajuster la trajectoire. Sans données, on navigue à l’aveugle, en supposant que le travail apporte la valeur attendue, sans pouvoir capitaliser sur les erreurs ni progresser de manière quantifiable. L’intégration d’outils de mesure dès la conception et la définition d’indicateurs clairs permettent de remplacer l’intuition par des données concrètes, essentielles pour une amélioration continue efficace.
Un rappel utile pour tous ceux qui veulent transformer leur action en progrès mesurable !
L’article d’Alsacréations explique clairement la différence entre les redirections HTTP 301 (permanente) et 302 (temporaire), deux codes essentiels pour gérer les changements d’URL. Une redirection 301 indique aux moteurs de recherche et aux navigateurs que la page a définitivement déménagé, transférant ainsi le référencement (SEO) et l’autorité de l’ancienne URL vers la nouvelle. Elle est idéale pour les migrations de site ou les changements de structure durables. À l’inverse, la redirection 302 signale un déplacement temporaire, utile pour des maintenance ou des tests, mais sans transférer le capital SEO. L’article détaille aussi comment les implémenter via le fichier .htaccess
(Apache) ou la configuration serveur, et souligne l’importance de choisir le bon type pour éviter de nuire au référencement ou à l’expérience utilisateur. En résumé : utilisez le 301 pour les changements définitifs, et le 302 pour les situations provisoires.
The One-Month Knowledge Sprint: How to Read Books, Take Action, and Change Your Life - Scott H Young
Scott H. Young propose dans cet article une méthode efficace pour transformer la lecture en actions concrètes : le "One-Month Knowledge Sprint". L’idée est de choisir un thème précis (santé, carrière, apprentissage d’une compétence, etc.), d’agir immédiatement avec les connaissances actuelles, puis d’approfondir le sujet en lisant 1 à 5 livres de qualité (en privilégiant d’abord les manuels et les ouvrages consensuels, puis les perspectives alternatives). L’objectif est d’ajuster ses actions en fonction des enseignements tirés, sur une durée d’un mois — assez longue pour progresser, assez courte pour rester motivé. Young insiste sur l’importance de combiner action et lecture dès le départ, plutôt que d’attendre une maîtrise théorique parfaite. Cette approche permet d’éviter la procrastination et d’expérimenter rapidement, tout en s’appuyant sur des bases solides. Une méthode idéale pour ceux qui veulent apprendre et changer sans se perdre dans la théorie.
Ploum nous livre ses réflexions sur l'addiction aux réseaux sociaux, aux indices de valorisation sociale ("likes", visites de notre site, etc.) et sur l'inhumanité profonde du monde dominé par le marketing et la propriété intellectuelle.
Ce billet explore le fonctionnement des correcteurs orthographiques comme Hunspell, utilisé dans LibreOffice, Firefox ou macOS, à travers l’exemple de la langue albanaise, riche en déclinaisons. Hunspell, héritier de MySpell et ISpell, vérifie l’orthographe des mots à partir de fichiers .dic
(liste de mots) et .aff
(règles de flexion), permettant de générer de nombreuses formes à partir de peu de données. L’article détaille son installation, son utilisation avec des dictionnaires spécifiques (comme l’albanais), et ses limites : il valide les mots isolément, sans vérifier la cohérence grammaticale d’une phrase. Un outil open source puissant, mais à utiliser en connaissance de cause, surtout pour les langues complexes ou peu documentées.
L'auteur explique qu’il n’existe pas de solution miracle pour empêcher les données sensibles (mots de passe, clés API, PII) d’apparaître dans les logs, mais une combinaison de "balles de plomb" — des mesures ciblées et complémentaires — permet de réduire significativement les risques. Il identifie d’abord les causes courantes : logs directs accidentels, objets "éviers de cuisine" (comme les erreurs HTTP contenant des configurations sensibles), changements de niveau de log, secrets intégrés dans des URLs ou des télémetries, ou encore les entrées utilisateurs imprévisibles.
Pour y remédier, il propose 10 pistes :
- Architecture des données : centraliser les flux de logs pour mieux les contrôler.
- Transformations : minimisation, rédactions, tokenisation ou masquage des données avant logging.
- Primitives de domaine : encapsuler les secrets dans des objets dédiés (ex.
Secret
) pour empêcher leur logging accidentel, avec des vérifications à la compilation ou à l’exécution. - Objets à lecture unique : des wrappers qui bloquent l’accès au secret après sa première utilisation.
- Vérification de souillure (taint checking) : analyser statiquement les flux de données pour détecter les fuites vers les logs.
- Formatteurs de logs : filtrer ou redacter automatiquement les champs sensibles dans les pipelines de logging.
- Tests unitaires : faire échouer les tests si des secrets sont détectés dans les sorties.
- Scanners de données sensibles : outils comme TruffleHog pour détecter a posteriori les fuites, avec échantillonnage pour optimiser les coûts.
- Prétraitement des logs : nettoyer les flux avant stockage (ex. avec Vector).
- Sensibilisation des équipes : former les devs et leur donner les outils pour signaler et corriger les problèmes.
La stratégie globale repose sur 4 piliers :
- Poser les bases (culture sécurité, définition des "secrets", logs structurés).
- Cartographier les flux de données pour identifier les points critiques.
- Protéger les goulots d’étranglement (ex. pipeline centralisé de logs) avec des contrôles en profondeur.
- Prévoir la réponse aux incidents : isolation, nettoyage, analyse post-mortem.
En combinant ces approches — et en acceptant que le "zéro fuite" soit un idéal —, on limite efficacement les risques, tout en renforçant la résilience globale du système.
L’article explique comment l’auteur a remplacé Apache par Traefik comme reverse proxy, principalement pour intégrer Crowdsec (notamment son module AppSec, compatible uniquement avec Nginx, OpenResty ou Traefik) et bloquer efficacement les scans malveillants (comme les requêtes vers .env
ou X11
). Traefik centralise le routage, simplifie la gestion des certificats Let’s Encrypt, et permet d’appliquer des middlewares de sécurité (HSTS, CSP, rate limiting, etc.). L’installation se fait en binaire (hors Docker), avec une configuration modulaire (fichiers YAML pour les sites, middlewares, et le dashboard). L’intégration de Crowdsec se fait via un bouncer Traefik et le module AppSec, qui analyse les requêtes en temps réel et bannit les IP suspectes (ex : accès à .env
). Malgré quelques péripéties (notamment avec les versions de Crowdsec et des conseils erronés de ChatGPT), le résultat est un système sécurisé, évolutif, et facile à surveiller via les logs et métriques. L’auteur souligne la satisfaction d’avoir un WAF performant et open source, tout en partageant ses fichiers de configuration et astuces pour reproduire la solution.
La réactance psychologique est un mécanisme psychologique fondamental qui se manifeste par une résistance face à toute tentative perçue comme une menace à notre liberté personnelle. Ce phénomène explique pourquoi une personne peut faire le contraire de ce qu’on lui demande, refuser une faveur, ou adopter des comportements paradoxaux pour réaffirmer son autonomie.
Origines et manifestations :
- La réactance apparaît lorsque l’individu perçoit une pression (règles, persuasion, normes sociales) comme une atteinte à sa liberté.
- Elle peut se traduire par des comportements de résistance, comme le non-respect des prescriptions médicales, le refus de la vaccination, ou l’adoption de conduites à risque (tabagisme, comportements sexuels non protégés).
Avantages et inconvénients :
- Positifs : La réactance permet de se protéger contre la manipulation et de défendre ses droits et libertés.
- Négatifs : Elle peut aussi conduire à des choix préjudiciables, notamment en matière de santé, où la résistance aux messages de prévention peut nuire à l’individu.
Exemples concrets :
- Pendant la pandémie de Covid-19, certains ont transgressé les mesures sanitaires par réactance, malgré les risques évidents.
- Les personnes à forte tendance réactive observent moins les traitements médicaux (ex. : diabète) et ont un moindre bien-être psychologique.
Pourquoi est-ce important ?
Comprendre la réactance aide à adapter les stratégies de communication, notamment dans les domaines de la santé, de l’éducation ou du management, pour éviter de déclencher des réactions contre-productives.
Intégrer Cloudflare Turnstile avec Hotwired Turbo et Stimulus – Ludovic Frank explique comment protéger efficacement les formulaires publics contre le spam dans une application utilisant Turbo (Hotwire), où le rechargement partiel du DOM pose problème pour les widgets comme Turnstile. L’article détaille les défis (mise en cache, race conditions, rechargement du widget) et propose une solution clé en main : un contrôleur Stimulus portable qui gère dynamiquement le chargement et le rechargement du script Turnstile, évitant ainsi les doublons et optimisant les performances. Le code source et les templates sont fournis, rendant l’intégration simple et réutilisable dans d’autres projets. Une lecture utile pour les développeurs travaillant avec Symfony UX Turbo ou des SPAs similaires.
Dockeriser une application Symfony pour déployer un agent IA de manière scalable : Cet article explique comment containeriser une application Symfony avec Docker et Docker Compose, en explorant trois stratégies (monolithique, sidecar, hybride). L’approche hybride est privilégiée pour allier simplicité et flexibilité, en utilisant Supervisord pour gérer Nginx, PHP-FPM et les consommateurs de messages. Les fichiers de configuration (Nginx, PHP, PHP-FPM) sont intégrés à l’image, et un Dockerfile optimisé permet de créer un environnement reproductible et portable. L’article souligne l’importance d’utiliser UTC pour la gestion du temps, de séparer les configurations par environnement, et d’éviter de reconstruire l’image pour chaque déploiement. Enfin, un fichier docker-compose.yml orchestrerait le tout, avec Redis pour la gestion des messages, offrant une base solide pour un déploiement scalable et observable, prêt pour Kubernetes.