Category: Développement

Bash possède des Hashmaps !

2025-01-11

Cet article de blog révèle un joyau caché dans la programmation bash : la prise en charge intégrée des hashmaps (tableaux associatifs) ! L’auteur, travaillant sur un projet de gestion d’instances GPU, a découvert cette fonctionnalité et explique comment l’utiliser. L’article détaille comment déclarer, affecter des valeurs à, lire, itérer et supprimer des paires clé-valeur dans un hashmap bash, en présentant deux méthodes de déclaration : l’ajout dynamique et les paires clé-valeur prédéfinies. Il s’agit d’une technique précieuse pour gérer efficacement les données clé-valeur dans les scripts bash.

Développement

Ingénieur Frontend Senior (Remote en Europe) chez Photoroom

2025-01-11
Ingénieur Frontend Senior (Remote en Europe) chez Photoroom

Photoroom recrute un ingénieur Frontend senior pour un poste entièrement à distance en Europe. C'est une excellente occasion de travailler à domicile tout en contribuant à une entreprise technologique en pleine croissance. Si vous avez une vaste expérience en développement frontend web et maîtrisez diverses technologies frontend, c'est l'emploi de vos rêves.

Développement ingénieur frontend

L'effet Makefile : Pourquoi copier-coller des fichiers de configuration ?

2025-01-11

Cet article explore l'effet « Makefile », un phénomène courant en ingénierie logicielle : les ingénieurs ont tendance à copier-coller et à modifier des fichiers de configuration existants (comme des Makefiles, des configurations CI/CD, etc.) plutôt que de les écrire de zéro. L’auteur soutient que ce n’est pas intrinsèquement mauvais, mais suggère que cela indique que les outils sont peut-être trop complexes, manquant de diagnostics et de support de débogage adéquats, ce qui les rend inefficaces et peu sûrs. L’article se conclut par des recommandations de conception visant à minimiser cet effet, améliorant ainsi l’efficacité et la sécurité du développement.

Développement conception d'outils

XYplorer : Un gestionnaire de fichiers performant écrit en VB6 "mort"

2025-01-11

XYplorer, un gestionnaire de fichiers populaire à l'échelle mondiale, est étonnamment écrit dans le langage de programmation VB6 obsolète. L'article aborde l'idée fausse que VB6 est intrinsèquement inférieur, en montrant l'efficacité et les nombreuses fonctionnalités de XYplorer comme preuve. Tout en reconnaissant des limitations telles que l'absence de multithreading et de compilation 64 bits, l'auteur soutient que cela n'enlève rien à son utilisation généralisée et à ses critiques positives. À l'aide de l'analogie d'une machine à café, l'article souligne que la fonctionnalité et les performances d'un produit surpassent le langage dans lequel il est construit.

Développement gestionnaire de fichiers

Bauble : Une approche fonctionnelle de l'art 3D avec les fonctions de distance signées

2025-01-11
Bauble : Une approche fonctionnelle de l'art 3D avec les fonctions de distance signées

Ian Henry raconte son parcours de création de Bauble, un outil permettant de créer des graphismes 3D interactifs à l'aide de fonctions de distance signées (SDF) et du langage de programmation Janet. Initialement un simple concatenateur de chaînes GLSL, Bauble a évolué pour inclure des fonctionnalités telles que l'animation, les expressions dynamiques personnalisées et l'éclairage. Cependant, sa complexité a conduit à une réécriture complète, aboutissant à un compilateur robuste et à une documentation complète. Désormais, Bauble permet aux utilisateurs de créer des œuvres d'art 3D impressionnantes avec une relative facilité.

Refactorisation avec Codemods pour automatiser les modifications d'API

2025-01-11
Refactorisation avec Codemods pour automatiser les modifications d'API

Cet article explore comment les codemods automatisent les modifications de code à grande échelle, notamment lors de la gestion des modifications d'API incompatibles. En utilisant les arbres de syntaxe abstraits (AST), les codemods automatisent les transformations de code avec précision, réduisant considérablement la charge de la refactorisation manuelle. L'article utilise des exemples tels que la suppression de fonctionnalités obsolètes et la refactorisation de composants React complexes, en détaillant le processus utilisant jscodeshift, et discute des problèmes potentiels et des solutions lors de la mise à l'échelle des codemods. Il souligne le rôle des codemods dans l'amélioration de la qualité et de la maintenabilité du code, en présentant une étude de cas réelle de refactorisation d'un composant Avatar.

TubePen : Mise en évidence et annotation de vidéos simplifiées

2025-01-10

Fatigué de chercher des informations clés dans de longues vidéos ? TubePen simplifie le processus ! Cet outil vous permet de mettre facilement en évidence et d’annoter des segments importants de vidéos et de les partager avec d’autres. Considérez-le comme un bloc-notes dédié à vos vidéos, optimisant votre apprentissage, votre travail ou vos loisirs. Finies les difficultés avec les captures d’écran ou les notes d’horodatage ; TubePen offre une interface épurée et des fonctionnalités puissantes, vous permettant de vous concentrer sur le contenu vidéo lui-même.

Développement

Aplatissement des AST : gains de performances dans les structures de données des compilateurs

2025-01-10
Aplatissement des AST : gains de performances dans les structures de données des compilateurs

Cet article explore l'optimisation des performances des structures de données des compilateurs en aplatissant les arbres de syntaxe abstraite (AST). L'auteur construit un interpréteur d'expressions arithmétiques simple, en l'implémentant à la fois avec des pointeurs traditionnels et une approche de tableau aplati, et compare leurs performances. Les résultats montrent une accélération de 2,4 x avec la version aplatie, attribuée à une meilleure localité de la mémoire, à des tailles de référence plus petites et à une allocation/désallocation moins coûteuse. L'aplatissement simplifie également la gestion de la mémoire et facilite la déduplication. L'article présente également un interpréteur itératif qui exploite la représentation aplatie pour des gains de performances supplémentaires.

Développement structures de données

Quickwit racheté par Datadog : Le voyage transcontinental d'un moteur de recherche multi-pétaoctets

2025-01-10
Quickwit racheté par Datadog : Le voyage transcontinental d'un moteur de recherche multi-pétaoctets

Quickwit, un moteur de recherche open source à l'échelle du multi-pétaoctet, développé par trois ingénieurs pendant quatre ans sur trois continents, a été racheté par Datadog. Cet article détaille le parcours de Quickwit, depuis une idée née dans un restaurant à gyozas parisien jusqu'à son acquisition. Ils ont surmonté les défis de la collaboration transfrontalière, construisant un moteur de recherche hautement efficace et facile à gérer en utilisant Rust, et en nouant des partenariats avec des entreprises comme Binance et Mezmo pour réussir. Cette acquisition marque un nouveau chapitre pour Quickwit, qui restera un projet open source sous la licence Apache 2.0, avec de nouvelles fonctionnalités.

Développement

KeyTik : L'outil d'automatisation tout-en-un

2025-01-10
KeyTik : L'outil d'automatisation tout-en-un

KeyTik est un outil de remapping de clavier basé sur une interface graphique utilisateur (GUI) qui comprend des profils, un auto-clic, un clic d'écran, un ouvreur de fichiers multiples, un gestionnaire de scripts AutoHotkey et plus encore. Il permet de créer des outils d'automatisation personnalisés et de remapper les touches pour des périphériques ou des programmes spécifiques. KeyTik est gratuit, sûr et certifié sans logiciel espion, logiciel publicitaire ou virus par Softpedia. Les utilisateurs peuvent utiliser des scripts AutoHotkey pré-écrits, utiliser l'IA pour générer des scripts ou créer les leurs pour une automatisation transparente.

Développement remapping clavier

L'étrange cas du hash(-1) == hash(-2) en Python

2025-01-10

Une question sur Reddit concernant la raison pour laquelle `hash(-1) == hash(-2)` en Python a déclenché une enquête. En plongeant dans le code source de CPython, l'auteur a découvert que -1 est utilisé comme indicateur d'erreur dans la fonction `PyObject_Hash`. Ainsi, lorsque le hachage calculé est -1, il est converti en -2. Ce n'est pas un easter egg de Python, mais une particularité de la façon dont le code C de CPython gère les erreurs.

Les coins sombres de la programmation C : exploration de la syntaxe obscure

2025-01-10
Les coins sombres de la programmation C : exploration de la syntaxe obscure

Cet article explore les recoins moins connus de la syntaxe C, présentant des techniques telles que le renommage de fonctions à l'aide des mots clés `typedef` et `asm`, le contournement des vérifications du compilateur avec des déclarations de paramètres anticipées et l'utilisation de déclarations de fonctions comme itérateurs de boucle `for`. L'auteur utilise une série d'exemples de code stupéfiants pour illustrer la flexibilité et la complexité de C, ce qui incite à réfléchir aux limites de la norme C et aux implémentations du compilateur. L'article est écrit avec humour et convient mieux aux personnes ayant une expérience préalable de la programmation C.

Développement Astuces de codage

Le déclin de Stack Overflow : les assistants IA et un paysage changeant

2025-01-10
Le déclin de Stack Overflow : les assistants IA et un paysage changeant

Stack Overflow, autrefois la ressource principale pour les développeurs cherchant de l'aide en codage, connaît un déclin significatif de son activité. Le nombre de nouvelles questions a chuté de 75 % depuis son pic en 2017, et de 60 % en glissement annuel en décembre 2024. Si l'essor des assistants IA est un facteur contributif, cité par certains comme une cause majeure, les problèmes de culture et de modération du site sont également mis en cause. Bien que Stack Overflow tente de monétiser sa base de connaissances et d'intégrer des fonctionnalités d'IA, la baisse continue de sa plateforme principale de questions-réponses représente une menace sérieuse pour son avenir.

Développement assistants IA

Optimisation de la multiplication de matrices de bytes avec AVX-VNNI

2025-01-10
Optimisation de la multiplication de matrices de bytes avec AVX-VNNI

Cet article explore l'optimisation de la multiplication de matrices de bytes en utilisant le jeu d'instructions AVX-VNNI. L'auteur commence par une implémentation naïve, puis utilise les bibliothèques gemmology et xsimd pour créer des versions optimisées utilisant la transposition et une disposition personnalisée. Les résultats des benchmarks montrent que la disposition personnalisée atteint les meilleures performances, en tirant parti de l'instruction vpdpbusd pour des gains d'efficacité significatifs. L'article approfondit les détails de l'implémentation de la fonction maddw de la bibliothèque gemmology et ses variations architecturales.

Construire une plateforme sans code avec Clojure : trouver l’équilibre entre vie personnelle et ambitions professionnelles

2025-01-10
Construire une plateforme sans code avec Clojure : trouver l’équilibre entre vie personnelle et ambitions professionnelles

Une panne de serveur le jour de la Saint-Valentin a été un tournant pour trois développeurs, qui ont ensuite adopté Clojure pour construire la plateforme sans code ambitieuse Vade Studio. Les structures de données immuables de Clojure, son puissant REPL et son paradigme de programmation fonctionnelle les ont aidés à surmonter les défis de la collaboration en temps réel, du générateur d’interface utilisateur glisser-déposer, de la modélisation de données unifiée et du moteur de workflow. Résultat : un développement efficace et un meilleur équilibre entre vie professionnelle et vie personnelle.

Développement plateforme sans code

Comment je programme avec les LLMs : Un an d'expérience

2025-01-10
Comment je programme avec les LLMs : Un an d'expérience

Un programmeur chevronné partage son expérience de l'utilisation des grands modèles de langage (LLM) pour la programmation au cours de la dernière année. Il catégorise l'utilisation des LLM en trois domaines : l'autocomplétion, la recherche de code et la programmation par chat. Il a constaté des gains de productivité significatifs grâce à l'autocomplétion et à la recherche de code. La programmation par chat, bien qu'elle nécessite une adaptation, accélère considérablement la rédaction de code, en particulier pour les environnements complexes et le prototypage rapide. Il souligne que les LLM excellent dans les tâches bien définies et met l'accent sur l'importance de compiler et de tester le code généré par les LLM. Il présente également sketch.dev, un outil que son équipe est en train de construire pour fournir un environnement de développement intégré simplifié avec intégration de LLM pour les programmeurs Go.

L'enfer de l'intégration d'OpenTelemetry : une histoire de problèmes d'observabilité

2025-01-10
L'enfer de l'intégration d'OpenTelemetry : une histoire de problèmes d'observabilité

La tentative d'une société de paiement d'intégrer OpenTelemetry dans son système basé sur Spring et Akka s'est transformée en un défi inattendu. Bien qu'OpenTelemetry vise à standardiser les outils d'observabilité, les bibliothèques héritées d'OpenTracing et les API conflictuelles entre les frameworks ont rendu le processus d'intégration étonnamment complexe. L'auteur détaille l'intégration des journaux, des métriques et du tracing, en soulignant les difficultés liées à la propagation du contexte, aux conflits d'API et au débogage des agents Java. La solution a consisté à convertir manuellement les contextes pour combler le fossé entre OpenTelemetry et OpenTracing. Cette histoire illustre de manière vivante comment des outils apparemment standardisés peuvent devenir complexes dans les applications du monde réel et reflète les défis de l'intégration de différentes bibliothèques et frameworks dans le développement de logiciels.

DIRKU : Une bibliothèque d'enregistrement d'images basée sur le flux

2025-01-10
DIRKU : Une bibliothèque d'enregistrement d'images basée sur le flux

DIRKU est une bibliothèque logicielle pour l'enregistrement d'images basé sur le flux, développée au département d'informatique de l'université de Copenhague. Elle prend en charge diverses mesures de similarité (NMI, NCC, SSD), des méthodes de régularisation et la détection de collisions, ce qui la rend adaptée à la gestion de grandes déformations et des difféomorphismes. DIRKU prend en charge l'enregistrement d'images 2D et 3D et propose plusieurs schémas d'optimisation, des méthodes d'interpolation et des méthodes d'intégration temporelle. La bibliothèque est facile à utiliser, installable via Conda, et est fournie avec une documentation et des exemples complets.

HTML : Le langage de programmation sous-estimé

2025-01-10
HTML : Le langage de programmation sous-estimé

Cet article soutient que HTML, souvent considéré comme un simple balisage, est en réalité un langage de programmation profondément significatif, probablement le plus important jamais développé. Il ne constitue pas seulement la base du Web moderne ; son adaptabilité, son interactivité et sa portée mondiale sont inégalées. L’auteur utilise des anecdotes personnelles et l’exemple d’un site Web créativement cassé, le « Guide de dépannage de broderie », pour illustrer la puissance et le potentiel artistique de HTML. L’accessibilité et la nature démocratique de HTML sont mises en avant, soulignant que n’importe qui peut créer et innover avec lui.

Développement

Présentation des applications Ruby on Rails : We Use Rails

2025-01-10
Présentation des applications Ruby on Rails : We Use Rails

We Use Rails est une plateforme présentant des applications web construites avec le framework Ruby on Rails. Elle met en avant une variété d'applications, des startups aux grandes entreprises, couvrant les domaines de la finance, des jeux, du e-commerce, etc. Les développeurs peuvent y trouver l'inspiration, et les entreprises peuvent explorer les capacités de Rails. La plateforme propose la soumission et la recherche d'applications gratuites, ainsi que des fonctionnalités premium pour une visibilité accrue.

Méthodes formelles : une simple bonne pratique d’ingénierie ?

2025-01-10

Marc Brooker, ingénieur chez Amazon Web Services, soutient dans son discours d’ouverture à la conférence TLA+ que les méthodes formelles ne représentent pas une surcharge coûteuse, mais plutôt un gain de temps et d’argent pour les systèmes critiques de grande envergure, distribués ou de bas niveau. En réduisant les reprises et le coût des modifications, la conception formelle améliore considérablement l’efficacité du développement de logiciels. Tous les logiciels n’en bénéficient pas ; le développement agile est plus adapté aux domaines sensibles aux évolutions des besoins des utilisateurs, comme les interfaces utilisateur ou la logique de tarification. Cependant, pour les grands systèmes aux besoins clairement définis, les méthodes formelles réduisent efficacement le taux de bogues et améliorent les performances. Brooker recommande plusieurs outils, notamment des langages de spécification comme TLA+, P et Alloy, des vérificateurs de modèles et des langages de programmation avec vérification. Il souligne que les méthodes formelles garantissent non seulement la correction, mais aident également à explorer les options d’optimisation, évitant ainsi le compromis difficile entre correction et performance.

Développement méthodes formelles

Boulette : Prévention des arrêts accidentels de serveurs

2025-01-10
Boulette : Prévention des arrêts accidentels de serveurs

En codant tard le soir, vous tapez instinctivement `shutdown -h now`, pour vous rendre compte que vous avez arrêté votre serveur de production au lieu de votre machine locale ! Découvrez Boulette, un outil qui empêche les arrêts accidentels et autres commandes dangereuses en demandant une confirmation. Personnalisez le type de défi : exigez un nom d’hôte, des nombres aléatoires ou des caractères avant l’exécution. Il est particulièrement utile pour les sessions SSH et offre une création facile d’alias pour une sécurité et une commodité accrues dans l’administration des serveurs.

De belles clés API : le package uuidkey

2025-01-10
De belles clés API : le package uuidkey

AgentStation, dans le but d'améliorer l'expérience développeur, a créé le package uuidkey Go pour générer des clés API esthétiquement agréables. En utilisant UUIDv7, l'encodage Crockford Base32 et des tirets placés stratégiquement, il produit des clés triables, performantes et visuellement attrayantes. L'article détaille le raisonnement derrière le choix de UUIDv7 et de Crockford Base32, explique la conception des tirets et fournit des instructions d'utilisation et les résultats de référence du package uuidkey.

Développement Clés API

Koa.js : Un framework web Node.js nouvelle génération

2025-01-10

Koa.js, des créateurs d'Express, est un nouveau framework web pour Node.js qui vise à créer une base plus petite, plus expressive et plus robuste pour les applications web et les API. En tirant parti des fonctions asynchrones, Koa supprime les callbacks et améliore considérablement la gestion des erreurs. Il n'intègre pas de middleware, offrant à la place un ensemble élégant de méthodes pour construire des serveurs rapides et agréables. Les middlewares se chaînent de manière optimisée, et Koa fournit un contexte riche avec des méthodes simplifiant les tâches courantes HTTP comme la négociation de contenu, la mise en cache et la redirection.

Développement

Wasmer recrute : Ingénieur logiciel Rust pour construire la prochaine génération de l'informatique de périphérie

2025-01-10
Wasmer recrute : Ingénieur logiciel Rust pour construire la prochaine génération de l'informatique de périphérie

Wasmer, une startup de Y Combinator qui construit la prochaine génération de plateformes informatiques cloud et de périphérie utilisant WebAssembly, recherche un ingénieur logiciel Rust expérimenté. Vous travaillerez à la construction d'infrastructures telles que les conteneurs WebAssembly, le stockage, les réseaux et l'orchestration, en collaborant étroitement avec la communauté open source. Les candidats idéaux maîtriseront Rust ou C/C++, auront de l'expérience avec WebAssembly, WASI et Emscripten, et posséderont une solide expérience en ingénierie logicielle. C'est une chance de travailler sur une technologie révolutionnaire et de contribuer à la communauté open source.

Visualisation de l'énumérateur Lazy de Ruby : une astuce simple

2025-01-10
Visualisation de l'énumérateur Lazy de Ruby : une astuce simple

Cet article utilise une démonstration interactive pour expliquer l'énumérateur lazy de Ruby, `Enumerator::Lazy`. Contrairement à l'énumération eager par défaut, l'énumération lazy ne calcule les éléments que lorsque cela est nécessaire, évitant ainsi un travail inutile, ce qui est particulièrement bénéfique avec les grands ensembles de données ou les pipelines complexes de transformation de données. L'article démontre visuellement la différence en utilisant des analogies « verticales » et « horizontales » et suggère des ressources pour une plongée plus profonde dans l'implémentation lazy de Ruby.

Développement Enumérateur Lazy

NVIDIA Ingest : Microservices pour l’analyse efficace de documents massifs

2025-01-10
NVIDIA Ingest : Microservices pour l’analyse efficace de documents massifs

NVIDIA Ingest est un ensemble de microservices en accès anticipé conçus pour analyser efficacement des centaines de milliers de PDF complexes, désordonnés et non structurés, ainsi que d’autres documents d’entreprise. Il extrait les métadonnées et le texte pour les intégrer dans des systèmes de recherche. Tirant parti des microservices NVIDIA NIM, il prend en charge les PDF, Word, PowerPoint et les images, en extrayant le texte, les tableaux, les graphiques et les images, en les contextualisant et en générant du JSON structuré. Les embeddings peuvent être calculés en option et stockés dans une base de données vectorielle Milvus. Un client Python et une interface en ligne de commande sont fournis pour faciliter l’utilisation.

Développement Analyse de Documents

Port du commande `lc` de Coherent UNIX

2025-01-10
Port du commande `lc` de Coherent UNIX

Ce projet GitHub est un port de l'utilitaire de ligne de commande `lc` du Coherent UNIX de Mark Williams Company. `lc` liste les fichiers par catégories et colonnes. Ce port ajoute la prise en charge des liens symboliques. C'est un outil pratique pour gérer et visualiser les fichiers.

Développement

Mise à jour du gem Ruby Tk : développement d'interface graphique simplifié

2025-01-10
Mise à jour du gem Ruby Tk : développement d'interface graphique simplifié

Le gem Ruby Tk fournit une interface pour créer des applications GUI Ruby à l'aide de la bibliothèque Tcl/Tk. Les dernières mises à jour simplifient le processus d'installation et offrent une documentation et des exemples plus clairs. Les développeurs peuvent facilement l'installer à l'aide de `gem 'tk'` et créer diverses interfaces à l'aide de commandes Tk complètes. Notez que l'installation peut nécessiter la configuration d'options supplémentaires pour spécifier les chemins d'accès aux fichiers d'en-tête et aux bibliothèques Tcl/Tk.

Développement

Glimmer : Un framework DSL pour les interfaces graphiques Ruby et plus encore

2025-01-10
Glimmer : Un framework DSL pour les interfaces graphiques Ruby et plus encore

Glimmer est un framework DSL (Domain-Specific Language) robuste pour Ruby, comprenant un moteur DSL et une bibliothèque de liaison de données. Il permet de créer des interfaces graphiques (GUI) à l'aide de diverses boîtes à outils telles que SWT, LibUI, Tk et GTK, et s'étend même au développement web grâce à la prise en charge d'Opal et de XML/CSS. La force de Glimmer réside dans sa syntaxe DSL concise et lisible, ainsi que dans sa puissante liaison de données bidirectionnelle, améliorant considérablement l'efficacité et la maintenabilité du développement d'interfaces graphiques Ruby.

Développement
1 2 188 189 190 192 194 195 196 214 215