Ce billet de blog de JetBrains présente 10 astuces pour optimiser les performances du code Python, rédigé par Dido Grigorov, ingénieur en deep learning. L’article souligne que, malgré sa simplicité et sa lisibilité, Python peut rencontrer des goulots d’étranglement en termes de performance, surtout lors du traitement de grands jeux de données ou d’applications temps réel.
Parmi les conseils clés :
- Privilégier les sets pour les tests d’appartenance (O(1) vs O(n) pour les listes).
- Éviter les copies inutiles de données, en modifiant les objets en place.
- Utiliser
__slots__pour réduire la consommation mémoire des classes. - Préférer les fonctions du module
mathaux opérateurs pour des calculs numériques plus rapides. - Pré-allouer la mémoire pour les listes ou tableaux de taille connue.
- Limiter l’usage des exceptions dans les boucles critiques.
- Exploiter
itertoolsetbisectpour des opérations combinatoires ou sur listes triées. - Éviter les appels répétés de fonctions dans les boucles en cachetant les résultats.
L’article illustre chaque astuce avec des exemples de code et des mesures de temps, montrant des gains de performance significatifs. Il encourage à adopter ces pratiques pour écrire du code Python à la fois performant et lisible, sans sacrifier la clarté. Une ressource utile pour les développeurs cherchant à optimiser leurs scripts Python.
Ce billet résume la 10ème édition de la conférence BDX I/O, marquée par des keynotes et des talks variés sur l’innovation technologique et ses enjeux sociétaux. L’auteur, après avoir co-organisé l’édition précédente, partage ses impressions en tant que participant, soulignant l’émotion de retrouver l’événement et la communauté tech bordelaise, notamment La Grappe Numérique.
Les temps forts incluent une réflexion sur l’avenir de la tech et l’IA par Ludovic Cinquin (WhereWeGo), qui évoque les défis énergétiques et sociétaux, ainsi que le framework Cynefin pour naviguer la complexité. Florian Toulemont aborde le hacking éthique avec des outils comme OWASP ZAP ou Exegol, tandis que Nicolas Boisseau démontre l’intégration de Kubernetes avec des applications Windows chez Peaksys, malgré des contraintes techniques. Vivien Ramahandry présente Crossplane pour gérer le drift dans l’IaC, et Julien Canon montre comment Kyverno renforce la conformité des clusters Kubernetes. Un live coding ludique sur la génération de labyrinthes et des rencontres enrichissantes complètent cette édition, avec une mention spéciale pour l’esprit communautaire et l’organisation de la conférence. Une édition riche en apprentissages et en partage !
Ce billet explique comment mettre en place des stratégies de sauvegarde de bases de données, en insistant sur l'importance cruciale des backups pour éviter la perte définitive de données en cas de panne, d'erreur humaine, de ransomware ou de corruption. L'article détaille trois niveaux de sauvegarde :
Niveau 1 : Sauvegardes automatiques basiques avec des scripts shell et pg_dump pour PostgreSQL, idéales pour les petites bases de données où une récupération quotidienne est acceptable. Il montre comment planifier ces sauvegardes via cron et gérer la rétention des fichiers.
Niveau 2 : Archivage WAL (Write-Ahead Logging) pour une récupération à un instant précis (PITR), en configurant PostgreSQL pour archiver les WAL et créer des sauvegardes de base. La procédure de récupération permet de restaurer la base à un moment spécifique, utile pour les bases critiques.
Niveau 3 : Sauvegardes continues avec pgBackRest, une solution robuste pour les environnements de production, permettant des sauvegardes complètes, différentielles et incrémentales, avec gestion automatisée des politiques de rétention.
L'article aborde aussi l'intégration avec des solutions cloud (S3, Hetzner Storage Box) via rclone, la surveillance des sauvegardes avec des alertes en cas d'échec, et l'importance de tester régulièrement les procédures de récupération. Enfin, il souligne les pièges courants (permissions, espace disque, WAL manquants) et propose des solutions pour les éviter. Une lecture essentielle pour sécuriser ses données et dormir sur ses deux oreilles.
Dans ce premier épisode de sa série "Mon lab", l'auteur partage son projet de refonte complète de son infrastructure personnelle, héritée de son ancien PC étudiant transformé en NAS sous Debian. L'objectif est de passer d'une architecture centralisée et vulnérable à une infrastructure automatisée, reproductible et évolutive, inspirée par les principes de l'"infrastructure as code".
Il explore plusieurs outils pour automatiser l'installation du socle de ses serveurs (MaaS, Foreman, Cobbler, Clonezilla, etc.), mais opte finalement pour une solution basée sur PXE et Debian Netboot, en utilisant un fichier Preseed pour automatiser l'installation. Après avoir rencontré des difficultés avec la complexité et le manque de documentation claire de Preseed, il se tourne vers la création d'une image Debian Netboot personnalisée. Cette image, basée sur un mini-système avec debootstrap et squashfs, permet de déployer automatiquement une Debian configurée selon ses besoins, avec un script d'installation intégré.
L'article détaille les étapes de création de cette image, le choix de BTRFS pour le système de fichiers, et l'utilisation d'un script bash pour partitionner et installer le système. L'auteur souligne l'importance de la reproductibilité, de l'évolutivité et de la suppression des configurations fantômes, tout en gardant la porte ouverte à l'ajout futur d'hyperviseurs comme Proxmox. Une lecture technique et inspirante pour quiconque souhaite automatiser son lab perso !
L’article explique comment externaliser le build d’une application Nuxt 4—devenu trop gourmand en ressources—vers GitHub Actions, puis déployer automatiquement sur Coolify. L’auteur, confronté à des serveurs Hetzner (4vCPU/8Go) saturés par les builds Nuxt 4, détaille la méthode : créer une nouvelle app Coolify en choisissant l’option « Docker Image », activer les APIs Coolify pour générer un token de déploiement, configurer les secrets GitHub (webhook et token Coolify), et ajouter un workflow GitHub Actions pour builder l’image Docker et déclencher le déploiement via un webhook. Une étape manuelle de login Docker sur le serveur Coolify est nécessaire pour autoriser l’accès au registry GitHub. Résultat : des builds plus légers, moins coûteux, et un déploiement fluide, le tout sans ajouter de serveur dédié.
Cet article donne un exemple de bouton HTML invalide, et explique comment fixer ses problèmes.
L’article de Fly.io encourage les développeurs à se lancer dans la création de leurs propres agents LLM, non seulement pour comprendre cette technologie de l’intérieur, mais aussi parce que c’est surprenant de simplicité. En quelques lignes de code, on peut créer un agent capable de dialoguer, d’utiliser des outils (comme un ping réseau), et même de simuler des personnalités multiples. L’auteur démontre qu’un agent n’est souvent qu’une boucle autour d’un appel API, avec une gestion de contexte (une liste de messages) et la possibilité d’ajouter des outils via des fonctions. Il souligne que les concepts comme le "Context Engineering" (gestion optimisée du contexte et des outils) sont des problèmes de programmation concrets, et non de la magie.
L’article critique aussi l’utilisation de solutions toutes faites comme MCP (Multi-Context Programming), encourageant plutôt à construire ses propres outils pour maîtriser l’architecture et la sécurité. Enfin, il insiste sur le fait que personne ne sait encore quelles sont les meilleures pratiques : c’est un terrain de jeu ouvert, où même les idées les plus folles peuvent être testées en 30 minutes. Une invitation à expérimenter pour se forger sa propre opinion, que l’on soit sceptique ou enthousiaste.
Andy Clarke explique comment animer des éléments SVG réutilisés via <symbol> et <use>, malgré la barrière du Shadow DOM qui empêche normalement le style et l'animation directe des éléments internes. Sa solution repose sur l'utilisation des CSS Custom Properties (variables CSS), qui peuvent traverser cette barrière. En définissant des animations et des styles via des propriétés personnalisées dans les éléments <symbol>, puis en les appliquant aux instances <use>, il devient possible de créer des animations dynamiques et personnalisées pour chaque instance, tout en gardant un code léger et maintenable. L'article illustre cette technique avec des exemples concrets : un système d'icônes multicolores, des visualisations de données interactives, et des animations ambiantes pour des personnages SVG, le tout sans dupliquer le code SVG. Une approche élégante pour contourner les limitations du Shadow DOM et exploiter pleinement le potentiel des SVGs réutilisables.
Bon à savoir... je copie colle sans vergogne :
Blanc = USB 1.0 / 12Mbps
Noir = USB 2.0 / 480Mbps
Jaune = USB 2.0/3.0 + toujours alimentés même sur une machine éteinte
Orange = USB 3.0 + toujours alimentés même sur une machine éteinte
Bleu = USB 3.0 Superspeed / 5Gbps
Turquoise = USB 3.1 / 10 Gbps
Rouge = USB 3.1 Gen 2 / 10-20 Gbps + toujours alimentés même sur une machine éteinte
Il y a une image dans le lien qui résume tout ça
Nubank, confrontée à une croissance exponentielle et à des coûts élevés liés à une solution externe de logging, a décidé de construire sa propre plateforme interne pour gérer plus d’1 trillion d’entrées de log par jour. L’ancienne architecture, dépendante d’un fournisseur tiers, souffrait de manque de visibilité, de coûts imprévisibles et de rigidité, rendant difficile la résolution des incidents et l’optimisation des ressources.
La nouvelle plateforme a été conçue en deux phases :
- Observability Stream : ingestion et traitement des logs, utilisant Fluent Bit pour la collecte, un service de buffer interne pour lisser les pics de trafic, et un service de filtrage/transformation extensible.
- Query and Storage Platform : stockage et requêtage, avec Trino comme moteur SQL distribué (optimisé pour le partitionnement), AWS S3 pour un stockage scalable et économique, et Parquet pour une compression efficace (95 %) et des requêtes rapides.
Résultats :
- 1 Po de données traitées/jour, 45 Po stockés (rétention 45 jours), 15 000 requêtes/jour.
- Réduction de 50 % des coûts par rapport à la solution précédente.
- Fiabilité, scalabilité et contrôle total sur l’infrastructure, permettant une meilleure observabilité et une réponse plus rapide aux incidents.
Cette approche, combinant outils open source et services internes, illustre comment une architecture découplée, modulaire et optimisée pour le cloud peut répondre aux défis de l’échelle tout en maîtrisant les coûts.
L’article encourage à oser commencer « mal »—c’est-à-dire à se lancer sans attendre la perfection — pour déclencher une véritable transformation personnelle. Il souligne que la quête de la perfection paralyse souvent nos rêves, tandis que l’audace de débuter, malgré les imperfections, construit le courage, favorise l’authenticité et accélère l’apprentissage. Des exemples comme Thomas Edison ou Malala Yousafzai illustrent comment les débuts chaotiques mènent à des réussites exceptionnelles. L’article propose aussi des conseils pratiques : diviser les grands objectifs en petites étapes, accepter l’échec comme une source de feedback, et s’entourer de soutien. En somme, commencer « ugly » est un acte de bravoure qui libère la créativité et ouvre la voie à une croissance continue. Une lecture inspirante pour ceux qui hésitent à franchir le pas par peur de l’imperfection.
L'auteur explique pourquoi les git notes sont une fonctionnalité sous-estimée de Git, permettant d’ajouter des métadonnées à des commits, des blobs ou des arbres sans modifier les objets eux-mêmes. Par exemple, on peut y stocker des informations de revue de code, des liens vers des discussions, ou des validations automatiques (comme des tests ou des approbations). Malgré leur potentiel — comme l’intégration de systèmes de revue distribués ou le suivi de données externes (tickets, temps passé, etc.) — leur utilisation reste marginale en raison d’une interface peu intuitive et d’un manque de support natif sur les plateformes comme GitHub. Pourtant, des projets comme git-appraise montrent qu’elles pourraient rendre les workflows plus indépendants des forges logicielles, en stockant localement des données habituellement centralisées. Une fonctionnalité puissante, mais trop souvent oubliée.
Aukfood présente une analyse comparative de quatre solutions open source de bastions SSH (Teleport, The Bastion d’OVH, Warpgate, JumpServer) dans le cadre d’un projet R&D visant à sécuriser les accès administratifs exposés sur Internet. L’étude évalue les critères clés : traçabilité des accès, gestion centralisée des utilisateurs, intégration LDAP/SSO/MFA, audit, haute disponibilité, et maintenabilité. Teleport se distingue par sa polyvalence et son adoption par des grands comptes, The Bastion (OVH) par sa conformité ANSSI et sa robustesse SSH pure, Warpgate par sa modernité (Rust) et sa légèreté, et JumpServer par son approche PAM complète et multi-protocole. Une matrice détaillée compare leurs forces (audit, RBAC, durcissement) et limites (complexité, documentation, scalabilité). L’article souligne l’importance d’une approche Zero Trust, du durcissement des infrastructures et de la centralisation des logs pour garantir la sécurité, tout en insistant sur l’adéquation du choix final aux besoins spécifiques (Cloud, souveraineté, mobilité). Une phase de tests virtualisés est prévue avant déploiement.
Il s'agit d'un article pratique sur l’art de nommer les éléments en PHP. L’auteure y aborde l’importance des noms clairs dans le code, soulignant qu’ils réduisent la charge cognitive, améliorent la maintenabilité et facilitent l’onboarding des nouveaux développeurs. L’article propose des principes concrets, des conventions compatibles avec les PSR, et des exemples pour éviter les pièges courants liés à la liberté syntaxique de PHP (comme les tableaux dynamiques ou les objets flexibles). L’objectif ? Transformer le choix des noms en un processus réfléchi plutôt qu’en devinette, pour un code plus lisible et une architecture plus robuste.
Article réservé aux membres Medium.
Linus Torvalds illustre ici ce qu’il considère comme du « garbage code » : des abstractions inutiles qui alourdissent la compréhension du code, comme une fonction make_u32_from_two_u16(a,b) qui masque la simplicité et la clarté de l’opération (a << 16) + b. Son argument central : le bon code optimise la charge cognitive. Chaque abstraction ou fonction helper impose un coût en termes de contexte (pour les humains comme pour les LLMs), car elle nécessite de « sauter » mentalement vers une autre partie du code, ce qui consomme de l’énergie et augmente le risque d’erreurs. Parfois, la duplication ou l’écriture explicite est préférable à une abstraction prématurée, surtout si celle-ci ne clarifie pas le code ou n’est pas réutilisée massivement. Torvalds rappelle aussi que le coût de la duplication a diminué avec les outils modernes de refactoring. Enfin, l’article souligne l’importance de la bienveillance dans les revues de code, même si le fond du message de Linus reste pertinent : privilégier la lisibilité et la localité du code.
Warpgate est un bastion open source écrit en Rust, conçu pour implémenter une approche Zero Trust en sécurisant l’accès à vos infrastructures (SSH, HTTP/HTTPS, MySQL, PostgreSQL). Contrairement à des solutions comme Teleport ou Boundary, il ne nécessite aucun agent sur les machines cibles et s’installe en quelques minutes. Ses atouts : traçabilité totale des sessions, intégration avec OpenID Connect, et simplicité de déploiement (y compris sur Kubernetes). Cependant, il présente des limites : pas de haute disponibilité native (sessions perdues en cas de crash), protocoles limités (pas de RDP/VNC/Kubernetes), et une API non documentée. Malgré ces compromis, Warpgate séduit par sa transparence, sa robustesse, et son modèle open source sans lock-in. Idéal pour les équipes cherchant une solution légère et auditable, à condition d’accepter ses contraintes.
Ce billet détaille l’expérience de passage à FrankenPHP en production, comparant l’ancienne stack Nginx/PHP-FPM à une technologie dépassée comme le Minitel. L’auteur explique comment il a déployé FrankenPHP sur un VPS à l’aide d’un Makefile optimisé, en abordant la création d’un Dockerfile de production, l’intégration CI/CD, et une astuce de multiplexing SSH pour éviter les blocages par fail2ban. Une lecture utile pour ceux qui veulent moderniser leur infrastructure PHP avec simplicité et efficacité.
Le billet explique comment FrankenPHP rend obsolètes les configurations traditionnelles utilisant Nginx et PHP-FPM pour les applications PHP. L'auteur partage son retour d'expérience sur le déploiement d'un projet Symfony avec FrankenPHP sur un VPS, mettant en avant sa simplicité et ses performances, même en production. L'article souligne que FrankenPHP offre une alternative moderne, plus légère et efficace, pour les environnements Docker, tout en évitant les problèmes classiques comme les timeouts SSH. Une solution idéale pour ceux qui cherchent à optimiser leur infrastructure PHP.
Dans ce billet, l’auteur partage une réflexion nuancée sur la valeur des certifications dans le domaine de l’IT, en s’appuyant sur son expérience personnelle et ses observations. Il reconnaît que les certifications peuvent être utiles pour se démarquer, surtout pour les jeunes diplômés ou les profils en reconversion, dans un marché du travail tendu. Cependant, il souligne que leur valeur varie énormément : certaines sont purement formelles, voire trompeuses (comme des QCM où les réponses sont connues à l’avance ou des certifications d’outils propriétaires peu exigeantes), tandis que d’autres, comme celles du CNCF (CKA, CKAD, CKS), demandent un réel effort et une mise en pratique, même si elles restent éloignées des réalités quotidiennes du métier. Pour les profils expérimentés, l’intérêt est plus limité, mais elles peuvent permettre de découvrir des subtilités techniques ou de renforcer la confiance en soi. Enfin, il questionne la pertinence des exigences de certifications par les entreprises, suggérant que celles-ci cherchent souvent à se couvrir plutôt qu’à évaluer des compétences réelles. En résumé, les certifs ne sont ni totalement inutiles ni une garantie de compétence, et leur utilité dépend surtout du contexte et du niveau d’expérience.
Hyprnote est une solution 100% locale pour transcrire et résumer vos réunions (Zoom, Teams, Meet) sans dépendre du cloud. Elle utilise un modèle STT (comme Whisper) et un micro-LLM (intégré ou externe) pour générer des comptes-rendus automatiques, le tout en respectant votre vie privée. L’interface simple organise réunions, transcripts et synthèses, avec une intégration native à Obsidian pour les utilisateurs de PKM. Open source et en bêta sur macOS (Windows/mobile à venir), Hyprnote se distingue des outils comme Otter.ai en gardant vos données sur votre machine. Un projet prometteur pour ceux qui veulent efficacité et confidentialité.