Quotidien Shaarli
Aujourd'hui - October 5, 2025
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 !
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.
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)
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.
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.
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.