Cet article liste les erreurs courantes à éviter pour apprendre efficacement le langage de programmation Rust. Parmi celles-ci, on trouve ne pas être préparé à l'apprentissage, ne pas consulter le livre de référence, commencer par des algorithmes complexes comme ceux basés sur des graphes, ignorer les erreurs et avertissements du compilateur, appliquer des bonnes pratiques d'autres langages, ou encore utiliser des fonctionnalités avancées comme unsafe trop tôt. L'auteur souligne l'importance de la concentration, de la lecture des documents officiels, et de la pratique avec des projets adaptés au langage. Un partage utile pour les développeurs souhaitant s'initier à Rust.
Ce guide pratique oppose logs et métriques pour une meilleure observabilité des systèmes. Les métriques indiquent qu'un problème existe, tandis que les logs expliquent quoi. Les logs, coûteux mais détaillés, sont utiles pour le débogage et la conformité, tandis que les métriques, économiques et rapides, servent aux alertes et aux tableaux de bord. Les logs structurés sont préférables pour leur recherche facilitée. Les quatre signaux clés de Google (latence, trafic, erreurs, saturation) sont essentiels pour surveiller la santé d'un service. Le choix entre logs et métriques dépend de l'objectif et des ressources disponibles.
Découvrez apk.sh, un script Bash open-source qui simplifie le reverse engineering des applications Android en automatisant des tâches répétitives comme l'extraction, le décodage, la reconstruction et le patch des APK. Il prend en charge les bundles d'applications et les APK divisées, permet d'injecter des gadgets Frida, et manipule directement le bytecode pour éviter les erreurs de décompilation/recompilation. Facile à utiliser, il permet de tirer, décoder et reconstruire des APK avec des commandes simples. Le projet est disponible sous licence GPL-3.0 sur GitHub.
Ce partage explique le fonctionnement du DNS (Domain Name System), un système qui traduit les noms de domaine en adresses IP. L'auteur partage son expérience personnelle de résolution de problèmes liés à la propagation DNS et au TTL (Time to Live). Le résumé détaille la hiérarchie DNS, incluant les serveurs racine, les domaines de premier niveau (TLD), les domaines et les sous-domaines. Il explique également les différents types d'enregistrements DNS tels que les enregistrements A, AAAA, CNAME et MX, et leur utilité. Une ressource utile pour comprendre comment les noms de domaine sont résolus en adresses IP et comment gérer les enregistrements DNS.
Depuis 1969, chaque décennie voit émerger des promesses de simplification du développement logiciel pour réduire le besoin en développeurs. De COBOL aux outils CASE, en passant par Visual Basic, chaque innovation a échoué à éliminer la complexité inhérente à ce métier. Malgré des avancées technologiques, la nécessité de compétences spécialisées persiste, frustrante pour les dirigeants mais révélatrice de la nature complexe du travail en logiciel.
L'article explique comment obtenir un ASN (Autonomous System Number) personnel pour annoncer ses plages d'IP sur Internet via le protocole BGP (Border Gateway Protocol). Il commence par définir ce qu'est un ASN et son rôle dans la communication entre réseaux autonomes. L'auteur partage son expérience personnelle, détaillant les étapes pour obtenir un ASN sans se ruiner, comment annoncer ses routes, et comment configurer BGP dans un environnement Kubernetes avec MetalLB. L'article met en lumière l'importance des protocoles de routage dynamique comme BGP pour optimiser les chemins de réseau, surtout dans des infrastructures complexes.
L'article explore l'importance de la mise en cache au niveau de l'application, en se concentrant sur les pools de cache, les tags et l'invalidation. À travers un projet Symfony réaliste, l'auteur montre comment introduire progressivement la mise en cache, identifier les problèmes en production et améliorer la conception du cache. Les exemples illustrent l'évolution de la mise en cache, en commençant par une approche naïve et en introduisant des techniques plus avancées comme les pools de cache dédiés et l'invalidation fine-grained à l'aide de tags. L'objectif est de montrer comment concevoir un cache fiable en production, en abordant les problèmes courants et les solutions applicables au-delà d'un seul framework.
L'article propose des techniques pour atteindre une productivité durable et bienveillante. Il suggère de redéfinir la productivité en se concentrant sur des résultats significatifs plutôt que sur la quantité de tâches accomplies, de travailler en harmonie avec son énergie naturelle, de fixer moins de priorités mais plus claires, et d'utiliser des blocs de temps flexibles. D'autres stratégies incluent la pratique de micro-étapes, l'intégration de pauses, la réduction des frictions environnementales, l'auto-compassion, la création de routines simples et l'acceptation de ses limites humaines. L'objectif est de cultiver une productivité sans pression, alignée sur ses valeurs et respectueuse de son bien-être.
Ce site présente le fonctionnement de plusieurs machines : presses, engins à vapeur, etc. via des animations
Ce site présente le fonctionnement de plusieurs types de moteur, via des animations.
L'article plaide pour l'utilisation de PostgreSQL comme solution universelle pour les bases de données, remettant en question l'idée de "l'outil adapté à la tâche". L'auteur argue que la multiplication des bases de données spécialisées (comme Elasticsearch, Pinecone, Redis, etc.) entraîne une complexité inutile, surtout à l'ère de l'IA où la simplicité est cruciale. Il souligne que PostgreSQL, avec ses extensions, peut gérer efficacement des tâches variées (recherche, vecteurs, séries temporelles, files d'attente, etc.), réduisant ainsi la gestion et les coûts. L'article démontre que, pour la plupart des entreprises, PostgreSQL est une solution plus simple et plus efficace que l'utilisation de plusieurs bases de données spécialisées.
Historique de versions dans EasyAdmin : capturer, comparer et restaurer chaque modification • Lecode
Cet article explique comment implémenter un système d'historique de versions dans EasyAdmin pour capturer, comparer et restaurer les modifications. Le système utilise Doctrine pour capturer automatiquement les changements, stocke des snapshots JSON complets des entités, et utilise jfcherng/php-diff pour afficher les différences visuellement. Il repose sur un LiveComponent Symfony UX pour l'interface utilisateur. La solution est conçue pour être simple à maintenir et à étendre, avec une seule table polymorphe pour stocker les versions de différents types de contenu.
L'article de Blake Lundquist sur Smashing Magazine explore l'utilisation de la nouvelle règle CSS @scope comme alternative aux conventions de nommage rigides (comme BEM) et aux abstractions lourdes (comme les frameworks CSS-in-JS). Il souligne les défis de maintenir des styles CSS dans des interfaces complexes, où les styles fuient souvent vers des zones non intentionnelles, entraînant des sélecteurs de plus en plus spécifiques. Les conventions de nommage comme BEM peuvent aider, mais elles sont souvent difficiles à maintenir dans des applications interactives. Les développeurs se tournent alors vers des frameworks comme Tailwind pour éviter la cascade CSS. Cependant, cette approche a aussi ses inconvénients, comme des configurations de build lourdes et des styles mélangés avec le markup. L'auteur suggère que @scope pourrait offrir une solution plus élégante en permettant de scoper les styles de manière plus intuitive et maintenable.
Le Context Driven Engineering émerge comme un nouveau paradigme de développement logiciel à l’ère de l’IA : au lieu de simplement générer du code à partir de prompts, les équipes doivent fournir un contexte structuré (spécifications, contraintes, règles et documentation) et suivre un workflow type spec-plan-act afin de fiabiliser la production et d’industrialiser l’usage des assistants. L’article montre que cette évolution entraîne la mise en place de règles pour les agents, d’outils de gouvernance, d’intégrations CI/CD et de nouvelles pratiques de documentation, tout en soulevant des enjeux humains et organisationnels tels que la formation des juniors, la mutation du rôle des développeurs et la nécessité de conserver les fondamentaux de l’ingénierie — architecture, tests, sécurité et documentation — qui deviennent encore plus critiques dans un contexte où le code peut être produit massivement par des IA.
Cet article d'Alsacreations explore l'évolution du design web responsive au-delà des breakpoints traditionnels, en introduisant le concept d'Intrinsic Web Design. Il met en lumière les nouvelles fonctionnalités CSS modernes comme les mots-clés intrinsèques (auto, min-content, max-content, fit-content, stretch) et les fonctions mathématiques (clamp(), min(), max()) pour créer des composants web fluides et adaptables. L'article aborde également l'utilisation avancée de Flexbox et Grid Layout pour gérer l'espace de manière dynamique, sans recourir à des media queries. Un outil maison, Elastic, est mentionné pour faciliter la génération de formules CSS fluides.
Ce site permet d'apprendre à faire des nœuds : utile pour l'escalade, la navigation, etc. Il présente les différents types de nœuds, avec des explications pour les faire.
L'article explique le fonctionnement de PAM (Pluggable Authentication Modules), un mécanisme d'authentification sous Linux. PAM permet de gérer l'authentification des applications de manière flexible et indépendante, en utilisant des bibliothèques dynamiques et des fichiers de configuration. Il offre de nombreux avantages, tels que la modification des méthodes d'authentification sans recompiler le code, la définition de plages horaires et de lieux de connexion, l'utilisation de méthodes d'authentification avancées (cartes à puce, biométrie, etc.), et l'intégration avec des annuaires LDAP. PAM est un outil incontournable pour l'authentification et l'accès aux systèmes Linux, disponible en Open Source. L'article explique également le principe de fonctionnement de PAM, qui repose sur des directives utilisant des bibliothèques dynamiques pour autoriser ou refuser l'accès aux utilisateurs en fonction de diverses conditions.
Cet article explore la tendance croissante des frameworks HTML-first, comme htmx, qui révolutionnent le développement web en revenant à une approche plus simple et performante, centrée sur le HTML et le serveur, plutôt que sur des applications monopages (SPA) complexes. Il met en lumière les problèmes de surcharge JavaScript, les avantages en termes de performance, de simplicité et de maintenance, ainsi que les cas d'utilisation idéaux pour cette approche. L'auteur souligne également les bénéfices pour le SEO, l'accessibilité et l'expérience utilisateur, tout en discutant des situations où une approche différente pourrait être plus appropriée.
Ce tutoriel explique comment configurer une connexion VPN via Wireguard sur une Freebox pour utiliser un DNS local de type PiHole ou AdGuard. L'auteur décrit les étapes pour activer le serveur Wireguard sur la Freebox, comprendre et modifier le fichier de configuration généré, et remplacer l'adresse DNS par défaut par celle de son serveur PiHole/AdGuard. Ainsi, en se connectant via le VPN, toutes les machines bénéficient d'un filtrage des DNS pour bloquer publicités et trackers.
Le "Randomness Testing Guide" est une ressource pédagogique pour tester "l'aléatoire" des séquences binaires. Il propose des tests statistiques simplifiés comme le test de fréquence, de blocs, de runs, de fréquence de mots et d'autocorrélation. Inspiré par les tests du NIST pour l'AES, ce guide vise à rendre la randomness testing accessible aux amateurs, en évitant la complexité des méthodes initiales.