Category: Développement

Vim : Un langage de programmation au-delà d’un éditeur

2024-12-15

Vim est plus qu’un simple éditeur de texte ; c’est un langage pour interagir avec votre ordinateur. Sa structure de commandes concise et efficace est facile à apprendre et à retenir, et aussi facile à interpréter pour un ordinateur. Bien que Vim soit puissant en lui-même, sa force principale réside dans le fait que son mode a été intégré à presque tous les éditeurs de code courants, permettant aux développeurs de choisir flexiblement l’interface de l’éditeur de leur choix, tout en conservant le langage de commande efficace de Vim. Par conséquent, NeoVim, en tant qu’implémentation la plus complète et cohérente du langage Vim, est précieux pour fournir ce langage d’édition efficace, et pas seulement l’éditeur lui-même.

Développement éditeur

Langages de programmation : équilibre entre sécurité et puissance

2024-12-15

Cet article explore le compromis entre sécurité et puissance dans les langages de programmation. La vision traditionnelle est que les langages puissants, comme C avec sa gestion manuelle de la mémoire, sont intrinsèquement dangereux. Cependant, l'auteur soutient que cette idée est dépassée. La recherche moderne en langages de programmation montre qu'une plus grande expressivité permet à la fois la sécurité et la puissance. L'évolution des macros en Lisp, Scheme et Racket illustre cela, en démontrant comment une meilleure conception peut améliorer les capacités des macros tout en maintenant la sécurité. Le système de macros de Racket est présenté comme une meilleure pratique, combinant un code hygiénique avec des capacités de manipulation puissantes. L'article conclut que des systèmes sûrs et fiables permettent de construire des logiciels plus performants et plus fiables, et recommande des ressources pour approfondir l'apprentissage des macros Racket.

Gestion des dépendances Python : un incendie dévastateur

2024-12-15

Cet article explore en profondeur la complexité de la gestion des dépendances Python, la comparant à l'allumage d'un feu de joie dans une forêt sèche. L'auteur soutient que les dépendances Python ne se limitent pas à une simple commande `pip install` ; elles englobent les paquets de projet, les paquets système, le système d'exploitation, le matériel et l'environnement lui-même. Une bonne gestion des dépendances est essentielle pour la reproductibilité, garantissant des résultats cohérents dans différents environnements. L'article détaille le contrôle de version, l'isolation de l'environnement, les fichiers de définition, les fichiers de verrouillage et d'autres concepts clés. Il propose ensuite une comparaison exhaustive de nombreux outils, notamment pip, venv, virtualenv, pip-tools, Pipenv, Poetry, PDM, pyenv, pipx, uv, Conda, Mamba, conda-lock et Pixi, en analysant leurs forces, faiblesses et cas d'utilisation. Enfin, l'auteur fournit des recommandations d'outils en fonction de différents scénarios (privilèges administratifs, types de dépendances, systèmes d'exploitation, etc.) et envisage les tendances futures de la gestion des dépendances Python.

La bibliothèque C LLVM accélère les GPU : exécution de code C sur les GPU

2024-12-14

Le projet LLVM a publié une bibliothèque C pour GPU permettant aux développeurs d'exécuter des fonctions libc et libm directement sur le GPU dans du code C/C++. La bibliothèque prend en charge deux modes principaux : comme bibliothèque supplémentaire pour les langages de déchargement tels qu'OpenMP, CUDA ou HIP ; et en compilant directement du code C/C++ pour la cible GPU. L'article détaille l'utilisation des deux modes, y compris les options de compilation, la liaison et les builds spécifiques aux GPU AMD et NVIDIA. Cette bibliothèque permet aux développeurs de tirer parti de la puissance de traitement parallèle des GPU, améliorant ainsi considérablement les performances sans nécessiter une connaissance approfondie des modèles de programmation GPU complexes.

Buzee : Application de recherche de texte intégral open source lancée

2024-12-14
Buzee : Application de recherche de texte intégral open source lancée

Buzee est une application de recherche de texte intégral multiplateforme construite avec Rust et Svelte. Elle permet une recherche rapide des fichiers locaux, des dossiers, de l'historique du navigateur et plus encore, en extrayant même du texte des PDF et des images à l'aide de l'OCR. Développé sur deux ans, ce projet présente une architecture robuste utilisant Tauri pour les performances, SQLite et Tantivy pour l'indexation et un front-end Svelte propre. Bien que riche en fonctionnalités, il reste encore des domaines à développer à l'avenir, et l'auteur le lance en open source pour que d'autres puissent contribuer.

Routeurs de sous-réseau Tailscale : une solution simple pour des connexions réseau complexes

2024-12-14
Routeurs de sous-réseau Tailscale : une solution simple pour des connexions réseau complexes

Tailscale nécessite généralement l'installation d'un client sur chaque appareil, mais cela n'est pas toujours possible pour les appareils intégrés ou les VPC existants. C'est là qu'interviennent les routeurs de sous-réseau. Ils permettent aux appareils de communiquer en utilisant la puissante technologie de traversée NAT de Tailscale, qu'ils exécutent Tailscale ou non. Cet article explique le fonctionnement des routeurs de sous-réseau Tailscale, notamment l'installation et la configuration sous Windows et Linux. Pour les migrations de réseaux de grande envergure ou la connexion de VPC AWS, les routeurs de sous-réseau offrent un moyen rapide et facile de commencer. L'utilisation personnelle est gratuite et ne compte pas pour les limites d'appareils.

Attaque de la chaîne d'approvisionnement affectant Ultralytics : Analyse d'un incident de sécurité PyPI

2024-12-14
Attaque de la chaîne d'approvisionnement affectant Ultralytics : Analyse d'un incident de sécurité PyPI

Le projet Python Ultralytics a récemment subi une attaque de la chaîne d'approvisionnement. Les attaquants ont compromis les workflows GitHub Actions du projet et volé un jeton d'API PyPI, entraînant des versions contaminées : 8.3.41, 8.3.42, 8.3.45 et 8.3.46. L'attaque n'a pas exploité de faille de sécurité dans PyPI, mais ciblé le cache GitHub Actions. PyPI, utilisant la publication de confiance et les journaux de transparence Sigstore, a rapidement identifié et supprimé les logiciels malveillants. L'incident a mis en évidence des lacunes dans les configurations des jetons d'API et des environnements GitHub. L'article souligne l'importance de sécuriser les forges de logiciels et les workflows de build/publication, fournissant aux développeurs des recommandations de sécurité : utiliser des éditeurs de confiance, verrouiller les dépendances, éviter les modèles non sécurisés et activer l'authentification multifactorielle.

Rust asynchrone sur microcontrôleurs Cortex-M : une plongée en profondeur

2024-12-14
Rust asynchrone sur microcontrôleurs Cortex-M : une plongée en profondeur

Cet article explore en détail la programmation asynchrone Rust sur les microcontrôleurs Cortex-M. Il explique le fonctionnement des Futures, de l'ordonnancement coopératif et des exécuteurs asynchrones Rust, en soulignant leur efficacité dans la gestion des ressources. Le framework innovant Embassy, conçu pour faciliter la programmation asynchrone sur les microcontrôleurs, est présenté. À travers des exemples pratiques comme un programme Blinky et un programme de bouton, l'article illustre l'application de Rust asynchrone dans les systèmes embarqués, en comparant ses avantages et ses inconvénients par rapport aux approches RTOS traditionnelles. La conclusion met en évidence les avantages significatifs de Rust asynchrone en termes d'utilisation des ressources et de concurrence.

Fern, une startup soutenue par YC, recrute un ingénieur frontend senior

2024-12-14
Fern, une startup soutenue par YC, recrute un ingénieur frontend senior

Fern, une startup soutenue par Y Combinator, recherche un ingénieur frontend senior avec un salaire de 168 000 à 192 000 $ plus des actions. Situé à Williamsburg, Brooklyn, NY, ce poste en présentiel exige 4+ ans d'expérience en développement frontend, une maîtrise de JavaScript/TypeScript, React et Next.js. Les responsabilités incluent l'optimisation de l'expérience développeur, la gestion de l'infrastructure frontend, la création de fonctionnalités orientées utilisateur et le développement de solides relations clients. Fern simplifie l'utilisation des API et compte parmi ses clients Cohere, ElevenLabs, Webflow et Merge.dev.

Développement Ingénieur Frontend

Svader : une bibliothèque Svelte pour les composants rendus par GPU

2024-12-14
Svader : une bibliothèque Svelte pour les composants rendus par GPU

Svader est une bibliothèque permettant de créer des composants Svelte rendus par GPU à l'aide de shaders de fragments WebGL et WebGPU. Les développeurs peuvent écrire des programmes dans les shaders de fragments pour personnaliser les couleurs des pixels et contrôler les effets de rendu via le passage de paramètres. Prenant en charge Svelte 4 et 5, elle offre des modes de rendu WebGL et WebGPU avec des paramètres intégrés tels que la résolution, l'échelle et le temps. Svader simplifie le rendu GPU grâce à des composants faciles à utiliser et fournit un rendu de secours dans les environnements ne prenant pas en charge WebGL ou WebGPU.

Développement

La science du routage des commandes d'impression chez Canva

2024-12-14
La science du routage des commandes d'impression chez Canva

L'équipe d'ingénierie de Canva a construit un système de règles configurable pour la traversée de graphes afin d'optimiser le routage des commandes d'impression. La séparation de la construction du graphe, de la traversée et du processus de décision garantit une haute disponibilité et une évolutivité accrue. Il utilise des bases de données relationnelles pour la gestion des données et génère un graphe mis en cache de manière asynchrone pour des requêtes rapides. Un moteur de règles et un algorithme de flot de coût minimal modifié trouvent la meilleure route en quelques millisecondes, minimisant la distance de transport et les émissions de carbone, améliorant ainsi l'expérience utilisateur et l'efficacité opérationnelle.

Go : Quand dire non

2024-12-14
Go : Quand dire non

Un développeur, après des années d'utilisation de Go, revient à Java. Il trouve Go défaillant dans plusieurs domaines : options de boucle limitées, absence de fonctions d'ordre supérieur, gestion d'erreurs fastidieuse, style de codage trop restrictif conduisant à un code verbeux et difficile à maintenir, et un écosystème de paquets immature. Bien qu'il reconnaisse l'adéquation de Go pour les projets d'infrastructure, il déconseille son utilisation dans les applications d'entreprise complexes.

Développement développement

Le débat sur le typage statique en PHP : Flexibilité et efficacité des langages dynamiques

2024-12-14

Dans cet article, Tony Marston critique vivement les changements concernant le typage statique obligatoire introduits dans PHP 8.1. Il soutient que ce changement viole les principes fondamentaux de la conception du typage dynamique de PHP, entrant en conflit avec l’approche flexible de longue date de PHP pour la gestion des types de données et imposant une charge de travail importante aux développeurs. L’article explore les avantages du système de typage dynamique de PHP, tels que la conversion automatique des types et la gestion flexible des données, soulignant que les avantages de performance du typage statique sont négligeables sur le matériel moderne, tout en nuisant à l’efficacité du développement. Marston affirme que le système de typage dynamique de PHP est mieux adapté à la gestion des données frontend HTML et backend SQL, et que l’imposition du typage statique est contre-productive, ayant un impact négatif sur la communauté PHP.

Développement typage dynamique

uv : Un gestionnaire de paquets et de projets Python extrêmement rapide

2024-12-14

uv est un gestionnaire de paquets et de projets Python extrêmement rapide, écrit en Rust, qui remplace des outils tels que pip, pip-tools, pipx, poetry, pyenv, twine et virtualenv. Offrant une amélioration de vitesse de 10 à 100 fois, uv propose la gestion de projets, la gestion d'outils, la gestion des versions Python, la prise en charge des scripts et une interface compatible avec pip. Des fonctionnalités telles que le cache global et la prise en charge des espaces de travail optimisent les flux de travail. De la création de projets et de la gestion des dépendances à l'exécution de scripts et à la création de distributions, uv fournit des solutions efficaces et pratiques pour tous vos besoins de développement Python.

De jeune diplômé à ingénieur confirmé chez Meta en 3 ans : l'histoire à succès d'Evan King

2024-12-14
De jeune diplômé à ingénieur confirmé chez Meta en 3 ans : l'histoire à succès d'Evan King

Evan King partage son parcours fulgurant, passant de jeune diplômé à ingénieur confirmé chez Meta en seulement trois ans. Ses six principes clés du succès sont : privilégier la vitesse et l'efficacité pour libérer du temps pour le développement personnel ; élargir sa perspective pour penser stratégiquement comme un ingénieur de niveau supérieur ; accepter l'incertitude et partager ses idées librement ; se concentrer sur la résolution de problèmes plutôt que sur la complexité technique ; cultiver la bonne volonté et les relations solides ; et maintenir une attitude positive. Tout en reconnaissant le rôle de la chance et du timing, Evan souligne l'importance de développer des habitudes durables qui produisent un effet cumulatif au fil du temps, en se concentrant sur les compétences essentielles et en utilisant stratégiquement la bande passante supplémentaire créée par l'efficacité.

Gestion des erreurs en Clojure : pas de solution miracle, seulement des choix

2024-12-14

Clojure propose une variété d'approches pour la gestion des erreurs, sans qu'il n'y ait une seule meilleure pratique. L'article explore plusieurs méthodes : lancer des exceptions natives, utiliser `ex-info` pour les exceptions transportant des données, renvoyer des maps d'erreur et utiliser diverses bibliothèques pour des flux de gestion des erreurs plus sophistiqués, comme la bibliothèque `anomalies` ou des options comme `pact` et `failjure`. L'auteur souligne que le choix dépend du contexte spécifique et qu'un mélange d'approches peut coexister au sein d'un même projet. Les développeurs ont le pouvoir de choisir la solution la mieux adaptée à leurs besoins ; Clojure embrasse cette liberté.

Développement gestion des erreurs

Notes de publication HTMX v2.0.4 : corrections de bogues et améliorations

2024-12-14
Notes de publication HTMX v2.0.4 : corrections de bogues et améliorations

Les notes de publication d’HTMX v2.0.4 détaillent de nombreux correctifs de bogues et améliorations. Cette version met l’accent sur l’amélioration de la stabilité et de la compatibilité, notamment des correctifs pour les problèmes de Shadow DOM imbriqués, un comportement amélioré de `hx-boost` dans les formulaires, une meilleure prise en charge des composants Web et de Shadow DOM, et des extensions mises à jour pour des performances et une fiabilité améliorées. Des ajustements à la fonction `htmx.ajax` et des optimisations du traitement des événements `hx-trigger` sont également inclus.

Un directeur de thèse automatise l'amélioration de l'écriture avec des scripts Shell

2024-12-14

Pour améliorer l'écriture de ses étudiants en doctorat, un directeur de thèse a créé trois scripts Shell pour détecter l'abus de la voix passive, les mots vagues et les mots dupliqués. Intégrés à leur système de compilation LaTeX, ces scripts encouragent des choix conscients pour la clarté et la précision, plutôt qu'une adhésion aveugle aux règles grammaticales. Le directeur de thèse préconise l'utilisation de l'automatisation par les programmeurs pour lutter contre les faiblesses de l'écriture et recommande des ressources comme "Style : Les bases de la clarté et de l'élégance".

La mise à jour macOS 15.2 casse la réplication du système : les utilisateurs confrontés à un cauchemar de sauvegarde de données

2024-12-14

Un bug critique dans macOS 15.2 a cassé la fonctionnalité de réplication du système, provoquant des échecs de sauvegarde de données avec une erreur « Ressource occupée », notamment lors de la tentative de copie des partitions Preboot ou Recovery. Le développeur Dave Nanian explique que le problème provient du propre code d’Apple et qu’il n’existe actuellement pas de solution simple. Les utilisateurs sont obligés de recourir à des solutions de sauvegarde tierces, en utilisant une méthode « Sauvegarde - tous les fichiers » avec une mise à jour intelligente pour restaurer leurs données après une installation propre du système. Ce problème cause une frustration importante chez les utilisateurs, surtout à l’approche des fêtes de fin d’année.

Farebox : Un projet d'itinéraire multimodal en Rust

2024-12-14
Farebox : Un projet d'itinéraire multimodal en Rust

Farebox est une implémentation rapide de RAPTOR en Rust conçue pour les machines à mémoire limitée. Il utilise Valhalla pour les transferts et le routage de la première/dernière étape, prenant en charge le routage multi-agences et les fuseaux horaires. L'objectif du projet est de compléter OpenTripPlanner, en fournissant un service de remplissage pour les zones non couvertes par les instances existantes. Le mappage mémoire est utilisé pour les horaires afin de permettre une couverture à l'échelle planétaire avec une seule instance et de réduire les coûts d'hébergement. Les projets futurs incluent la prise en charge de GTFS-RT et éventuellement rRAPTOR pour le calcul simultané d'itinéraires à différents horaires de départ.

Développement Routage

Langage de Programmation Luon : Un Lua Typé Statique

2024-12-14
Langage de Programmation Luon : Un Lua Typé Statique

Luon est un nouveau langage de programmation statiquement typé, avec une syntaxe similaire aux langages basés sur Oberon et intégrant des concepts de Lua, ciblant la machine virtuelle LuaJIT. En substance, une version typée statiquement de Lua, il permet la réutilisation des bibliothèques Lua et C existantes via des déclarations de procédures externes. Luon remédie aux lacunes de Lua en matière de gestion des erreurs et de structure de code, offrant un compilateur et un IDE intégré prenant en charge la programmation procédurale, générique et orientée objet. Le projet inclut de nombreux exemples et cas de test et est en développement actif.

Développement typage statique

SCCS : L'hôtel du code source après 50 ans

2024-12-13

Cet article examine rétrospectivement l'influence du système de contrôle de code source (SCCS) au cours des 50 dernières années. L'auteur, Larry McVoy, détaille le format unique de tissage du SCCS, qui permet la fusion par référence, évitant les inefficacités de la copie basée sur les correctifs trouvées dans d'autres systèmes. Il explique comment le SCCS exploite ce tissage pour récupérer n'importe quelle version de fichier en temps constant et préserve l'attribution d'auteur entre les versions. Tout en reconnaissant les inconvénients tels que les verrous à long terme et l'orientation fichier, McVoy souligne l'efficacité du format de tissage et sa préservation de l'attribution d'auteur comme des innovations révolutionnaires, jetant les bases de systèmes ultérieurs comme BitKeeper.

Développement Gestion de code source

Architecture hexagonale dans Rails : un chemin vers le découplage

2024-12-13
Architecture hexagonale dans Rails : un chemin vers le découplage

Cet article explore la mise en œuvre de l'architecture hexagonale (modèle Ports and Adapters) dans les applications Rails. L'auteur a initialement eu des difficultés avec le modèle jusqu'à ce qu'il réalise que « adaptateur » fait directement référence au modèle adaptateur du Gang of Four. L'article détaille les ports entrants et sortants, et comment les adaptateurs découplent la logique de l'application des services externes (bases de données, journalisation, e-mail, etc.). Les contrôleurs Rails peuvent servir d'adaptateurs HTTP, mais l'auteur souligne qu'il faut éviter l'utilisation directe d'ActiveRecord. Au lieu de cela, des référentiels personnalisés accèdent aux données, améliorant le découplage et la maintenabilité. L'article conclut en encourageant les développeurs Rails à adopter l'architecture hexagonale pour des applications plus robustes et plus maintenables.

Développement Architecture hexagonale

Transformer de vieux smartphones en nœuds de cluster Kubernetes avec postmarketOS

2024-12-13
Transformer de vieux smartphones en nœuds de cluster Kubernetes avec postmarketOS

L'auteur a construit un cluster Kubernetes fonctionnel en utilisant de vieux smartphones mis au rebut et le système d'exploitation postmarketOS. L'article détaille le processus, y compris les raisons du choix de vieux smartphones (puissance de calcul importante, batteries intégrées), les avantages de postmarketOS (basé sur Alpine Linux, utilise le noyau Linux principal) et les défis rencontrés lors de la configuration (modules du noyau, configuration réseau). Les solutions à ces défis sont expliquées en détail. L'auteur a réussi à réutiliser de vieux smartphones comme nœuds Kubernetes, utilisant efficacement les ressources et favorisant la durabilité.

Contournement des mesures de mitigation du noyau Windows : Plongeon en profondeur dans Violet Phosphorus

2024-12-13

Cet article examine en détail le contournement des mesures de mitigation modernes du noyau Windows 10 et 11, telles que SMEP et VBS. L’auteur décrit Violet Phosphorus, une technique universelle de contournement de VBS/SMEP, en fournissant du code PoC et une chaîne ROP. Il explique le fonctionnement de SMEP et VBS, en démontrant comment exploiter une vulnérabilité dans le pilote HackSysExtremeVulnerableDriver pour utiliser des gadgets ROP et la fonction MiGetPteAddress afin de modifier les entrées de la table des pages, permettant ainsi l’exécution de code dans le noyau. L’auteur montre également comment utiliser le shellcode SYSRET de Kristal-G pour revenir en mode utilisateur. Il s’agit d’une ressource précieuse pour les développeurs d’exploits de noyau et les chercheurs en sécurité, classée dans la catégorie Développement.

Sortie de la bibliothèque Node.js EPUB @smoores/epub

2024-12-13
Sortie de la bibliothèque Node.js EPUB @smoores/epub

Une nouvelle bibliothèque Node.js, @smoores/epub, a été publiée. Elle permet aux développeurs d'inspecter, de modifier et de créer des publications EPUB 3. La bibliothèque propose des API de haut niveau qui simplifient l'interaction avec la spécification EPUB, telles que la définition du titre et la récupération des informations sur l'auteur. Des API de bas niveau offrent un contrôle granulaire sur la structure EPUB, permettant des tâches telles que l'ajout de chapitres et de métadonnées. Basée sur fast-xml-parser, @smoores/epub fournit des capacités robustes d'analyse et de manipulation XML, facilitant la gestion efficace du contenu XML des fichiers EPUB.

Développement Bibliothèque

Redémarrages Planifiés : Une Approche Préventive

2024-12-13

Une équipe de recherche universitaire a été confrontée à un problème d'administration système complexe : leurs serveurs fonctionnaient depuis trop longtemps et nécessitaient un redémarrage, mais des redémarrages fréquents perturbent l'expérience utilisateur. Par défaut, ils évitaient les redémarrages, mais un redémarrage massif récent dû à une durée de fonctionnement prolongée a forcé un changement. Pour éviter des problèmes similaires, ils ont décidé d'un calendrier annuel de redémarrage — au moins trois fois par an, en accord avec le calendrier scolaire de l'université — en trouvant un équilibre entre la maintenance préventive et l'expérience utilisateur.

Microsoft open-source MarkItDown : un outil de conversion de fichiers en Markdown

2024-12-13
Microsoft open-source MarkItDown : un outil de conversion de fichiers en Markdown

Microsoft a open-sourcé MarkItDown, un outil Python qui convertit divers fichiers (PDF, PowerPoint, Word, Excel, images, audio et HTML) au format Markdown. L'API est simple, il supporte une large gamme de formats de fichiers et intègre la reconnaissance optique de caractères (OCR) et la transcription vocale, ce qui le rend idéal pour l'analyse de texte ou l'indexation. Les contributions sont les bienvenues, et le projet respecte le Code de conduite open source de Microsoft.

Collecte de cycles concurrente : pointeurs intelligents avec ramasse-miettes en Rust pour Scheme

2024-12-13

Cet article détaille la mise en œuvre d’un collecteur de cycles concurrents en Rust pour les pointeurs intelligents avec ramasse-miettes (Gc) dans un interpréteur Scheme. Gc fonctionne de manière similaire à Arc>, prenant en charge la mutabilité interne, le clonage et l’envoi entre threads. L’article explique en détail la mise en œuvre de Gc, y compris la mutabilité interne sécurisée pour les threads à l’aide de sémaphores et de verrous en lecture/écriture, ainsi que les détails de la mise en œuvre de la collecte de cycles concurrente basée sur l’algorithme de Bacon et Rajan. Cela inclut le trait Trace, la détection de cycles et les mécanismes de gestion des modifications concurrentes.

Développement Concurrence

HyperDX recrute des ingénieurs Full-Stack, Front-end et Back-end

2024-12-13
HyperDX recrute des ingénieurs Full-Stack, Front-end et Back-end

HyperDX, soutenue par Y Combinator, recrute des ingénieurs Full-Stack, Front-end et Back-end. HyperDX construit une plateforme d'observabilité open-source et conviviale pour les développeurs, visant à remplacer des outils comme Datadog et New Relic, en aidant les ingénieurs à identifier plus rapidement les problèmes de production. Elle offre des salaires compétitifs et des options de travail à distance, ciblant les ingénieurs expérimentés.

Développement Ingénieurs Observabilité
1 2 207 208 209 210 211 213 215