Category: Développement

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

2024-12-14

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 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

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

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

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

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 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

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

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

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

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 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, 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é

Un créateur construit un jeu de tir au laser : D’une attraction de Legoland à l’amusement d’Halloween avec ESP32

2024-12-13

Inspiré par une attraction d’aventure égyptienne de Legoland, l’auteur a décidé de créer un jeu de tir similaire. Utilisant des microprocesseurs ESP32 peu coûteux, des pistolets laser infrarouges et des cibles faites maison, il a réussi à construire un jeu de tir sur le thème d’Halloween. Au cours de ce processus, il a appris la programmation Arduino et MicroPython, surmontant les défis liés aux connexions matérielles, à l’alimentation électrique et à la communication. Le jeu a été un succès lors d’événements scolaires et à domicile. Ses projets futurs comprennent l’amélioration de la conception des cibles, des effets lumineux et des cartes de circuits imprimés pour améliorer l’expérience de jeu.

Développement Créateur

Nouvelles fonctions de hachage Rain Hashes : vitesse et sécurité combinées

2024-12-13

DOSAYGO Research a publié Rain Hashes, une nouvelle famille de fonctions de hachage comprenant les algorithmes Rainbow et Rainstorm. Rainbow se distingue par sa vitesse exceptionnelle, ce qui le rend idéal pour le hachage à usage général. Son implémentation en C++ a passé tous les tests SMHasher3 et se caractérise par son code concis et efficace. Rainstorm privilégie la sécurité ; bien qu’il n’ait pas été officiellement audité, sa conception intègre des éléments de fonctions de hachage cryptographiques et offre des tailles de sortie de 64 à 512 bits. Le projet fournit des implémentations en C++, WASM et Node.js, ainsi qu’un outil en ligne de commande et des tests de référence pour une évaluation et une utilisation faciles.

Développement fonction de hachage

Web Origami : Un nouveau langage de programmation pour simplifier la création de sites web

2024-12-13

Web Origami est un nouveau langage de programmation conçu pour simplifier la création de sites web de petite à moyenne taille. Utilisant une syntaxe concise qui complète HTML et CSS, les utilisateurs peuvent décrire la structure du site web à l'aide de formules similaires à celles des feuilles de calcul, transformant les données et les fichiers en HTML et autres ressources du site web via des programmes simples. Même sans connaissance de JavaScript, des fonctionnalités telles que la recherche plein texte et les flux RSS peuvent être créées. Web Origami fournit une interface en ligne de commande, des fonctions intégrées et une bibliothèque async-tree, avec prise en charge des extensions JavaScript. Son concept central est d'abstraire la création de sites web comme une transformation de données, rendant la création et le déploiement de sites web efficaces, peu coûteux et faciles à comprendre.

Vulnérabilités de sécurité dues au PRNG faible de Dart/Flutter

2024-12-13

La recherche de Zellic a mis au jour plusieurs vulnérabilités de sécurité causées par un générateur de nombres pseudo-aléatoires (PRNG) faible dans Dart/Flutter. Un défaut dans l'initialisation de la fonction `Random()` du SDK Dart a entraîné une entropie insuffisante dans les clés générées, les rendant vulnérables aux attaques par force brute. Cela a permis aux attaquants d'accéder facilement au Dart Tooling Daemon, leur permettant de lire ou d'écrire des fichiers d'espace de travail et même d'exécuter du code arbitraire. De plus, les projets Proton Wallet et SelfPrivacy ont également été affectés par ce PRNG faible, subissant des vulnérabilités de chiffrement et des problèmes de mots de passe prévisibles. Bien que la vulnérabilité ait été corrigée, les développeurs sont invités à faire preuve de prudence lors de l'utilisation de la fonction `Random()` et à utiliser `Random.secure()` lorsque des nombres aléatoires cryptographiquement sûrs sont nécessaires.

Idée révolutionnaire : appliquer les principes de Magit au système de contrôle de version jj

2024-12-13

L'auteur propose une approche novatrice : appliquer l'interface de contrôle de version Magit d'Emacs (qui utilise des fichiers texte comme interface utilisateur) à l'écosystème naissant de contrôle de version jj. L'article souligne que l'interface utilisateur textuelle de Magit offre efficacité et portabilité. En tirant parti du protocole LSP, une expérience similaire à Magit peut être implémentée dans divers éditeurs, évitant ainsi le développement redondant. L'auteur prévoit la génération de fichiers texte spécifiques (tels que .jj/status.jj) et l'utilisation des fonctionnalités LSP, telles que les jetons sémantiques, les plages de pliage et le « aller à la définition », pour réaliser des opérations de contrôle de version similaires à Magit. L'objectif final est de créer une interface utilisateur efficace et multiplateforme pour le contrôle de version jj.

Développement

Cohérence finale : défis et modèles dans les systèmes distribués

2024-12-13

La cohérence finale est inévitable dans les systèmes distribués. Cet article explore quatre modèles courants pour gérer la cohérence finale : la cohérence finale basée sur les événements, la cohérence finale de synchronisation en arrière-plan, la cohérence finale basée sur les sagas et la cohérence finale basée sur CQRS. Chaque modèle présente des avantages et des inconvénients. Par exemple, le modèle basé sur les événements met l'accent sur les systèmes faiblement couplés et l'évolutivité, mais la cohérence prend du temps ; tandis que le modèle basé sur les sagas convient aux transactions complexes et de longue durée, garantissant la cohérence grâce à des transactions compensatoires. Le choix du modèle dépend des besoins et des compromis spécifiques du système.

Maîtriser le débogage Ruby : de puts aux outils professionnels

2024-12-13

Cet article du blog JetBrains RubyMine explore différentes approches du débogage de code Ruby, des instructions `puts` basiques aux consoles interactives (IRB et Pry) en passant par les débogueurs puissants (byebug, debug et le débogueur RubyMine). À partir d'un exemple de bug réel, il met en lumière les forces et les faiblesses de chaque outil, guidant les développeurs dans le choix de l'outil le plus adapté pour une meilleure efficacité. L'article souligne que le débogage efficace ne consiste pas seulement à corriger les erreurs, mais aussi à comprendre le code de manière fondamentale pour écrire des applications Ruby plus robustes.

Compilateur Rust : Une architecture de compilation incrémentale basée sur les requêtes

2024-12-13

Pour résoudre les problèmes d'efficacité de la compilation traditionnelle en pipeline, le compilateur Rust utilise une architecture de compilation incrémentale basée sur les requêtes. Cette architecture décompose le processus de compilation en une série de requêtes interdépendantes, utilisant une base de données de compilation pour mettre en cache les résultats intermédiaires. Cela permet de ne recompiler que les sections de code nécessaires. Similaire à la gestion des dépendances d'un système de build, cela améliore significativement la vitesse de compilation, particulièrement bénéfique dans des scénarios tels que l'intégration avec les IDE. Bien qu'elle introduise de la complexité, cette approche offre une expérience de compilation incrémentale plus stable et efficace pour Rust par rapport aux améliorations progressives des systèmes traditionnels, et est maintenant la valeur par défaut pour les builds de développement.

1 2 3 4 5 7