Ce billet de blog explique comment rendre son terminal plus intelligent et productif grâce à des alias, des scripts et des intégrations. L'auteur partage ses astuces pour améliorer l'historique des commandes, l'autocomplétion, et l'utilisation de Docker avec FZF. Il montre également comment automatiser la gestion des versions de Node.js et PHP, rendant le terminal presque magique. Des exemples de code sont fournis pour illustrer chaque amélioration.
L'article explique pourquoi une entreprise a migré son backend de Python à Node.js seulement une semaine après son lancement. Malgré les conseils habituels de ne pas s'inquiéter de l'échelle au début, ils ont choisi de le faire pour des raisons de scalabilité. L'auteur, un fan de Django, a rencontré des difficultés avec le code asynchrone en Python, trouvant la mise en œuvre complexe et peu intuitive. Il attribue ces problèmes aux fondations instables de l'asynchrone en Python, contrairement à des langages comme JavaScript ou Go qui l'ont intégré dès le départ. Des articles de blog récents ont confirmé ces observations. L'expérience a révélé plusieurs limitations, comme l'absence de support natif pour l'E/S de fichiers asynchrones, le manque de support complet pour l'asynchrone dans Django, et la nécessité de convertir constamment entre code synchrone et asynchrone. Ces défis ont finalement conduit à la décision de migrer vers Node.js.
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.
Tout est dans le titre
L'article montre différentes manières de styliser le texte affiché en ligne de commande sous Node.js, soit en utilisant des séquences d'échappement ANSI, soit en utilisant util.styleText
L'article présente une comparaison des bibliothèques de journalisation pour Node.js, mettant en avant leurs forces et leurs cas d'utilisation spécifiques. Par exemple, Winston est apprécié pour sa grande configurabilité, ce qui le rend idéal pour les applications complexes, tandis que Pino est privilégié pour ses performances élevées, adaptées aux systèmes à haut débit. L'article souligne également l'importance de choisir une bibliothèque de journalisation en fonction des besoins spécifiques du projet, tels que la structure des données, l'expérience de l'équipe et les exigences d'intégration. Il conclut sur une liste de bonnes pratiques et recommandations
L'article présente les streams en Node.js, asynchrones et pilotés par événements. Ils simplifient les opérations d'I/O en gérant les données en morceaux plus petits et plus faciles à manipuler. Ils se catégorisent en quatre types : Readable, Writable, Duplex (à la fois lisible et scriptible) et Transform (modifiant les données lors de leur passage). La fonction 'pipe()' est un outil utile dans Node.js, permettant de lire des données depuis une source et de les écrire vers une destination sans gérer manuellement le flux de données. Node.js moderne offre des utilitaires comme 'stream.pipeline()' et 'stream.finished()', ainsi que des API basées sur les Promesses pour une meilleure gestion des erreurs et du flux. Les streams peuvent être utilisés avec des motifs async/await pour un code plus propre et plus maintenable.
L'article explique comment utiliser les flux (streams) de Node.js avec TypeScript pour un traitement de données efficace. Il couvre les types de flux (readable, writable, duplex, et transform) avec des exemples pratiques pour gérer de gros fichiers et des données en temps réel. Le guide met en avant l'efficacité des flux pour traiter les données par morceaux, évitant ainsi de surcharger la mémoire, et montre comment TypeScript améliore la sécurité et la lisibilité du code grâce à son typage fort
.
Microsoft a annoncé la migration du compilateur TypeScript de JavaScript vers Go, promettant une amélioration de performance de 10x. Cependant, cette amélioration concerne uniquement la vitesse de compilation du compilateur TypeScript, et non la performance d'exécution du code TypeScript lui-même. Le passage à Go permet de mieux gérer les tâches intensives en CPU grâce à ses goroutines et son modèle de concurrence natif, contrairement à l'architecture mono-threadée de Node.js. Cette migration soulève des questions sur la compatibilité future avec les navigateurs et l'écosystème des plugins TypeScript, mais elle illustre l'importance d'adapter les choix technologiques aux besoins spécifiques des projets en évolution
Une bibliothèque de fonctions pour JavaScript / Node.js : mathématiques, probabilités, générateurs de nombres pseudo aléatoires, transformations de données, assertions, etc.
Tout est dans le titre - il s'agit de la configuration d'un serveur
Tout est dans le titre
Un concurrent de nvm
Tout est dans le titre
Node a désormais un testrunner intégré - l'auteur en a donc profité pour se débarrasser de quelques dépendances superflues comme Mocha, Chai et nyc. Attention, il insiste sur le fait que ces dépendances peuvent être utiles à d'autres
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre
Tout est dans le titre