Hebdomadaire Shaarli

Tous les liens d'un semaine sur une page.

Semaine 24 (June 9, 2025)

Docker : Metrics port 9323 - slash-root.fr

L'option metrics-addr de Docker permet d'exposer les métriques de performance et d'utilisation des ressources via un endpoint HTTP sur le port 9323, offrant ainsi un accès à des informations détaillées sur l'environnement Docker. Ces métriques, formatées pour Prometheus, incluent des données sur l'utilisation du CPU, de la mémoire, du disque et du réseau par conteneur, ainsi que des informations sur l'état du démon Docker et les performances des opérations. Cette fonctionnalité est particulièrement utile pour la supervision d'infrastructure, l'alerting automatisé et l'analyse de tendance, bien qu'elle nécessite des outils complémentaires pour une visualisation et une gestion avancées des données.

Five Bash Scripts Every DevOps Must Know💡 | by BecomeDevOps | FAUN — Developer Community 🐾

L'article présente 5 scripts Bash dont on peut s'inspirer pour construire les nôtres.

  1. Création d'un backup
  2. Surveillance du CPU, de la mémoire et de l'espace disque disponible avec alerte en cas de besoin
  3. Audit de sécurité rapide
  4. Vérification rapide de la réponse des sites
  5. Partitionnement de disque dur
Object Mapper : l’art de la simplicité  • Lecodeestdanslepre

Symfony 7.3 introduit le composant Object Mapper qui simplifie la transformation d'entités en DTOs. L'auteur montre plusieurs cas d'utilisations, du mapping direct (propriété identique) au mapping avec transformation, en passant par les mapping de types complexes.
Il conclue en discutant des avantages de ce composant.

Obtenir un certificat auto-signé à partir de sa propre autorité de certification - ache

Le guide explique comment créer un certificat TLS auto-signé et l'installer sur un serveur nginx ainsi que sur des systèmes clients. Il commence par discuter des objectifs de TLS, qui incluent l'authentification et le chiffrement pour assurer la confidentialité et l'intégrité des données. Le processus de création d'un certificat racine est détaillé, incluant la génération d'une clé privée et la création du certificat avec OpenSSL. Le certificat racine est ensuite ajouté à la liste des certificats de confiance sur les systèmes clients, ce qui permet de l'utiliser pour signer d'autres certificats. Enfin, le guide montre comment créer un certificat final pour un serveur web, le configurer dans nginx, et mettre en place une méthode automatique pour mettre à jour les certificats.

Y a des tirets typographiques dans ton texte : c’est du ChatGPT ! - Le Hollandais Volant

À force de chercher des textes générés par l'IA, on finit par trouver plein de faux positifs... Là, c'est le Hollandais Volant qui en est victime, tout ça parce qu'il utilise correctement la typographie. Comme il l'explique lui-même dans son article, ça peut poser de vrais problèmes pour certains : thésards accusés injustement, etc.

SSH sécurisé sans mot de passe : Guide complet

L'article rappelle l'intérêt des connexions SSH sans mot de passe. Il détaille ensuite, étape par étape, comment générer une clé SSH et configurer l'accès sans mot de passe. Il donne quelques conseils pour renforcer la sécurité, et répond à quelques questions courantes. Enfin, il présente les bonnes pratiques : renouvellement périodique des clés, etc.

10 Modern CSS Features You Want to Use | Rails Designer

L'article présente 10 fonctionnalités récentes des CSS :

  • Min, max and clamp - min et max se passent de commentaires, et clamp permet de combiner les deux - une valeur minimale, une valeur préférée, et une valeur maximale
  • Container queries - les container query font que les éléments répondent à la taille du conteneur de leur parent plutôt qu'à celle du viewport
  • text-wrap: balance & pretty - cette propriété contrôle comment le texte est réparti entre les lignes pour améliorer la lisibilité, la valeur "balance" crée des lignes de longueur égale, alors que "pretty" évite les orphelines (mots se retrouvant seuls sur la dernière ligne)
  • CSS Relative Color Syntax - la syntaxe "from" permet d'extraire et de modifier des composants individuels pour toute source de couleur
  • Margin Block/Inline Properties - ces propriétés de marge et de padding (margin-block, margin-inline, padding-block, padding-inline) répondent aux besoins induits par différents modes d'écriture et de direction de lecture en CSS, remplaçant les propriétés left / right / top / bottom
  • @starting-style - permet d'animer des éléments depuis display:none, en définissant des styles initiaux quand un élément apparaît
  • :has() - permet de sélectionner des éléments parents, en se basant sur leurs enfants
    
- Media Query Ranges - simplifie la syntaxe pour définir des intervalles min/max
  • light-dark - est un raccourci pour définir différentes valeurs basées sur les préférences de l'utilisateur sur le mode (sombre / light)
  • color-scheme - est utile en combinaison avec light-dark, pour informer le navigateur quel jeu de couleurs est supporté par un composant, ce qui permet aux éléments natifs de correspondre automatiquement aux préférences de l'utilisateur
  • Nesting - permet d'écrire des CSS en imbriquant les sélecteurs enfants dans leurs parents
  • Units - de nouvelles unités comme dvh sont apparues (pour les navigateurs mobiles)
  • @layer - permet de gérer des conflits de spécificité en ordonnant explicitement les groupes de styles.
Note pour plus tard : Slow boot - Job dev-disk-by/x2uuid-... qui prend 1m30 au démarrage - Warrior du Dimanche

Une astuce intéressante si un système linux met beaucoup de temps à démarrer

Stop Using Docker like its 2015 - DEV Community

L'article présente des choses à ne plus faire avec Docker :

  • mettre le champ "version" dans le fichier compose
  • ne pas mettre de "healthchecks"
  • être root par défaut
  • ne avoir de .dockerignore
  • avoir des Dockerfiles en une seule étape surchargée -> il faut utiliser les builds en plusieurs étapes
  • des builds manuels sans cache, il y a même la possibilité de faire du hot reload

Docker peut servir aussi bien en développement local qu'en production.

Docker : live-restore, c'est quoi ? - slash-root.fr

La fonctionnalité live-restore de Docker permet aux conteneurs de continuer à fonctionner normalement pendant le redémarrage du démon Docker, évitant ainsi les interruptions de service. Cela est particulièrement utile pour les mises à jour de sécurité et la maintenance planifiée, car cela découple les conteneurs du cycle de vie du démon, les maintenant actifs sous la supervision du noyau Linux. Cependant, cette fonctionnalité ne protège pas contre les redémarrages du système d'exploitation ou les pannes matérielles, et certaines fonctionnalités Docker sont limitées pendant le redémarrage.

Docker : Configuration et gestion du stockage - slash-root.fr

L'article explique comment Docker utilise un système de stockage en couches, où chaque instruction dans un Dockerfile crée une nouvelle couche en lecture seule, avec une couche supérieure en lecture-écriture pour les conteneurs en fonctionnement. Il aborde les différents pilotes de stockage disponibles, comme overlay2, recommandé pour les distributions Linux modernes, et propose des conseils pour optimiser l'espace disque, comme l'utilisation d'images légères et la configuration de cron jobs pour le nettoyage périodique. Enfin, il souligne l'importance d'une bonne gestion des données persistantes dans un environnement de conteneurs éphémères.

Eight marvelous and melancholy things I've learned about creativity - The Oatmeal

Cette série sur la créativité est extraordinaire. Voici les 8 choses, sans traduction ni explication :-)

  1. Erasers are wonderful
  2. Your ears are plugged
  3. Creativity is like breathing
  4. There are only bad ideas in brainstorming
  5. This is not a petting zoo
  6. The wondrous utility of self-loathing
  7. Killing your darlings
  8. The business of art
Comment gérer les utilisateurs et la double-authentication comme un pro  • Lecodeestdanslepre

L'auteur montre comment implémenter la double authentification dans Symfony, en utilisant quelques dépendances externes :

  • OTPHP - une librairie qui permet de gérer les TOTP, mots de passe à usage unique basés sur le temps
  • Endroid/QrCode - pour générer les QR codes
  • Scheb/2fa-bundle - le bundle de double authentification de Symfony
How Should You Choose Your Career? - Scott H Young

Le travail occupe une grande partie de notre vie, influençant non seulement nos finances, mais aussi notre communauté et notre identité. Bien que l'argent soit important, il ne garantit pas le bonheur et doit être considéré parmi d'autres facteurs. Choisir une carrière basée uniquement sur ses talents peut être trompeur, car ils ne correspondent pas toujours à des emplois viables. Les premiers emplois devraient être choisis pour leur potentiel d'apprentissage plutôt que pour le salaire, et il est crucial de rester ouvert et flexible face aux opportunités. Enfin, le réseautage et le choix du lieu de travail jouent un rôle clé dans le succès et la satisfaction professionnelle.

Développement d'application en Flutter : retours d'expérience (1/2) | JoinPeerTube

Le développement de l'application PeerTube a conduit à l'adoption de Flutter pour le développement multiplateforme, permettant une seule base de code pour Android et iOS, réduisant ainsi les coûts et les efforts de maintenance. L'équipe a dû se former à Flutter et à Dart, en utilisant diverses ressources pour maîtriser ces technologies. Une architecture "feature-first" a été choisie pour organiser le code par fonctionnalité, favorisant la modularité et la clarté du projet. Plusieurs dépendances ont été soigneusement sélectionnées, comme Riverpod pour la gestion d'état et GoRouter pour la navigation, tout en rencontrant des défis avec certaines bibliothèques comme Chewie pour la lecture vidéo.

Partial Keyframes • Josh W. Comeau

L'article explore une technique avancée des animations CSS avec des keyframes partiels. En omettant les points de départ ou de fin dans une animation, les valeurs initiales sont héritées du contexte, rendant les animations plus dynamiques et réutilisables. Cette approche permet de créer des animations qui s'adaptent à l'état actuel de l'élément, facilitant ainsi des transitions plus fluides et personnalisées. De plus, l'utilisation de variables CSS dans les keyframes permet de définir des valeurs dynamiques, augmentant encore la flexibilité et la puissance des animations CSS.

Créer une API rest basique en Python avec Flask - Blog - Code-Garage

L'article est une bonne introduction à Flask : il commence par expliquer comment installer Flask, créer son application et la lancer pour qu'elle écoute les requêtes. Ensuite, on voit comment renvoyer du JSON, comment gérer les verbes HTTP, etc.

Fakir et l'IA : y'a rien qui va | Grise Bouille

C'est triste

Comment partager facilement les extensions VS Code au sein d’une équipe grâce à extensions.json – Idriss Code

L'auteur explique la marche à suivre pour partager une liste d'extensions VS Code recommandées. Il précise aussi comment éviter certaines extensions et la création d'un pack

13 Time-Saving Linux Terminal Tricks You Should Be Using

L'autuer partage 13 astuces pour le terminal : répéter, corriger, etc. Je ne les connaissais pas toutes

Powerful Design Pattern Pairing: Strategy and Chain of Responsibility in Symfony | by Kevin Wenger | Jun, 2025 | Medium

L'article explore l'utilisation conjointe des modèles de conception "Stratégie" et "Chaîne de Responsabilité" dans le cadre du développement avec Symfony. L'auteur commence par démystifier ces concepts, souvent perçus comme complexes, en illustrant comment ils sont déjà utilisés inconsciemment dans le développement quotidien. Il explique le modèle "Stratégie" à travers un exemple de planification de voyage, où différentes stratégies de transport peuvent être interchangeables selon le contexte. Ensuite, il aborde le modèle "Chaîne de Responsabilité" en décrivant comment les requêtes peuvent être traitées séquentiellement par une série de gestionnaires, chacun ayant la possibilité de traiter ou de transmettre la requête. L'auteur montre comment Symfony facilite l'intégration de ces modèles grâce à des attributs modernes comme AutoconfigureTag et AutowireIterator, permettant une implémentation élégante et maintenable. Enfin, il souligne les avantages de cette combinaison pour créer des applications flexibles, découplées et faciles à étendre.

Docker : Configuration et gestion des logs - slash-root.fr

L'article explique comment Docker utilise par défaut le pilote json-file pour stocker les logs, ce qui peut entraîner des problèmes d'espace disque si non configuré correctement. Il propose des solutions pour configurer et limiter la taille des fichiers de logs via le fichier /etc/docker/daemon.json et présente divers pilotes de logs comme syslog, journald, et des solutions plus avancées comme Splunk ou AWS CloudWatch Logs pour des environnements critiques. Enfin, l'article souligne l'importance des bonnes pratiques telles que la rotation des logs, l'étiquetage, et la centralisation pour une gestion efficace des logs dans Docker.

Docker : Configuration des réseaux par défaut - slash-root.fr

L'article explique la configuration des réseaux par défaut dans Docker, qui crée automatiquement trois réseaux : bridge, host, et none. Il aborde la résolution des conflits d'adresses IP en modifiant le fichier /etc/docker/daemon.json et en redémarrant Docker. L'article détaille également les différents types de réseaux disponibles dans Docker, comme macvlan pour les réseaux physiques et overlay pour les clusters Swarm, tout en offrant des bonnes pratiques pour une gestion efficace des réseaux Docker.

Foggy feeds: the decline in my feed reader subscriptions

L'auteur constate que, dans son flux d'actualité, la qualité globale des articles diminue, en particulier pour le raisonnement. Par exemple, il suit des auteurs avec lesquels il n'est pas d'accord, mais dont les raisonnements lui paraissent corrects bien qu'incomplets. L'auteur a souffert du "brouillard COVID", une affection qui rendait la réflexion particulièrement compliquée. Il se demande si cette affection n'est pas beaucoup plus répandue qu'on ne le croit, car les articles qu'il lit lui semblent rédigées par des personnes infectées. Enfin, il soupçonne aussi que l'utilisation par nombre d'auteurs de l'intelligence artificielle pour reformuler leurs écrits induise une diminution de leur capacité d'écriture. Il est d'ores et déjà montré que l'utilisation de l'IA sans recul provoque une perte d'esprit critique.

PHP 3 to 8: The Evolution of a Codebase

L'auteur illustre l'évolution de PHP, de la version 3 vers la version 8, à travers les changements de style d'écriture d'une même fonctionnalité. PHP est un langage très vivant

La Tanche, la Séquence et la Migration  • Lecodeestdanslepre

L'auteur utilise une histoire pour rappeler que les migrations Doctrine sont à privilégier, même et surtout pour les insertions manuelles.

Blog Eleven Labs - Implémenter un serveur Model Context Protocol en TypeScript

Le Model Context Protocol (MCP) est un protocole standardisé qui permet aux modèles de langage d'accéder en temps réel au contexte spécifique des utilisateurs à partir de diverses sources de données. Ce protocole a été rapidement adopté par des entreprises majeures comme OpenAI, Google et Microsoft, démontrant son importance croissante dans l'industrie. Le MCP facilite l'intégration des modèles de langage avec des sources de données externes, telles que les outils de développement et les systèmes CRM, en s'appuyant sur les fondations du Language Server Protocol (LSP). Il résout un problème fondamental des modèles de langage en leur permettant d'accéder à des données privées ou spécifiques à une organisation, offrant ainsi des intégrations plus profondes et des réponses plus pertinentes.

L'article présente une implémentation d'un serveur MCP en utilisant TypeScript et le SDK officiel @modelcontextprotocol/sdk. L'exemple illustre un système de classement spatial avec des astronautes et des planètes. Voici les points clés de cette implémentation :

  1. Structure du Serveur : La classe principale du serveur MCP est créée en héritant de la classe Server du SDK MCP. Elle est configurée avec des capacités pour les outils, les ressources et les prompts.

  2. Outils (Tools) : Les outils permettent aux modèles de langage d'effectuer des actions spécifiques. Dans cet exemple, des outils sont définis pour rechercher un astronaute, ajouter des points à un astronaute, et obtenir le classement des planètes. Chaque outil est décrit avec un schéma de validation utilisant Zod pour garantir la robustesse des entrées.

  3. Ressources (Resources) : Les ressources fournissent un accès structuré à des données statiques ou de référence. Dans cet exemple, une ressource est définie pour accéder aux règles du système de classement spatial.

  4. Prompts : Les prompts sont des templates de conversation réutilisables qui peuvent être paramétrés dynamiquement. Un exemple de prompt est fourni pour générer un rapport hebdomadaire des performances.

  5. Transport : Le serveur MCP peut utiliser différents types de transport pour communiquer avec les clients, tels que STDIO pour les applications desktop et SSE pour les applications web.

  6. Test et Débogage : L'article utilise l'inspecteur MCP pour tester et déboguer le serveur. Cet outil permet d'explorer et de tester les outils, les ressources et les prompts de manière interactive.

  7. Intégration avec Claude Desktop : Enfin, l'article montre comment intégrer le serveur MCP avec Claude Desktop, un client MCP populaire, pour permettre des interactions enrichies et contextualisées.

Cette implémentation illustre comment créer un serveur MCP fonctionnel et l'intégrer dans un environnement de développement pour enrichir les interactions avec les modèles de langage.

10 Hidden Linux Commands Every Sysadmin Should Know

10 commandes linux méconnues et pourtant bien utiles : renommage de fichiers en masse, afficher la progression d'une copie de fichier, afficher les numéros de ligne, etc.

Récupérer un système qui ne démarre plus – Le blog technique de Microlinux

L'auteur montre que faire quand on se retrouve face à une simple invite du chargeur de démarrage grub.

🚀 Building Maintainable Domain-Driven PHP Applications: A Practical Guide | by mohamad shahkhajeh | May, 2025 | Medium

L'article présente les concepts clés du DDD - Domain Driven Development - avec des exemples d'application. C'est un bon résumé