Category: Développement

La puissance de l'abstraction : comment Linux et FFmpeg construisent des frameworks multimédias extensibles

2025-03-09
La puissance de l'abstraction : comment Linux et FFmpeg construisent des frameworks multimédias extensibles

Cet article explore comment Linux et FFmpeg réalisent l'extensibilité du code grâce à l'abstraction et aux interfaces. La philosophie de Linux « tout est un fichier », utilisant la structure `file_operations` pour définir une interface commune pour les opérations sur les fichiers, permet d'accéder de manière uniforme à diverses ressources (sockets réseau, fichiers spéciaux, périphériques USB). FFmpeg utilise une stratégie similaire, employant des concepts abstraits comme `AVCodec` pour ajouter facilement de nouveaux codecs et formats ; l'intégration de DAV1d illustre les avantages de cette conception. L'article utilise des exemples de code en Ruby, Go et C pour montrer différentes manières d'implémenter des interfaces abstraites dans plusieurs langages de programmation, soulignant en fin de compte le rôle crucial d'une bonne conception logicielle pour améliorer la maintenabilité et l'extensibilité du code.

Développement

Plongeon au cœur de l'architecture Exclave du noyau XNU d'Apple

2025-03-09
Plongeon au cœur de l'architecture Exclave du noyau XNU d'Apple

Cet article explore en profondeur l'architecture d'enclave sécurisée au sein du noyau XNU d'Apple. Les exclaves gèrent les ressources via une structure de table de noyau à deux niveaux, comprenant des domaines (par exemple, com.apple.kernel), chacun contenant plusieurs ressources (services, tampons). Les Conclaves, un type de ressource spécial, permettent un accès partagé entre les services, contrôlés par un Conclave Manager. Un nouvel appel système _exclaves_ctl_trap() gère diverses opérations d'exclave, notamment le lancement de conclaves, la recherche de services et l'exécution de downcalls (exécution de code dans le monde sécurisé). Les upcalls permettent au code du monde sécurisé d'appeler des fonctions spécifiques du noyau XNU. L'article détaille le processus de démarrage de l'exclave en trois étapes et comment le système de typage de mémoire SPTM contrôle l'accès à la mémoire de l'exclave.

Développement Propulsé par l'IA : Plus de Peur des Projets Grands et Complexes

2025-03-09

Un programmeur chevronné a constaté un changement profond au cours de la dernière année : il n'est plus intimidé par les projets volumineux ou complexes, ni par les technologies ou les langages de programmation inconnus. Ceci grâce aux progrès de l'IA. L'auteur cite deux projets précédents qu'il a abandonnés en raison de leur complexité, les comparant à l'efficacité considérablement accrue offerte par la programmation assistée par IA aujourd'hui. Il a terminé un projet en une heure qui lui prenait six semaines auparavant, et il exprime son enthousiasme pour l'avenir, le qualifiant d'âge d'or pour les programmeurs.

Développement

Go idiomatique : Complément au guide de style

2025-03-09

Ce document complète le guide de style officiel de Go, en abordant des détails tels que l’orthographe cohérente (par exemple, `marshaling` et non `marshalling`), l’espacement entre les phrases, les conventions d’appellation des erreurs, la casse des noms de marque, les styles de commentaires, la nomenclature des packages et les noms des récepteurs de méthode. L’auteur fournit des exemples clairs de « faire » et de « ne pas faire » pour aider les développeurs à écrire du code Go plus idiomatique, améliorant ainsi la lisibilité et la maintenabilité.

Développement Style de codage

Problème subtil d'appel de fonction C++/WinRT et sa résolution

2025-03-09
Problème subtil d'appel de fonction C++/WinRT et sa résolution

Une requête d'extraction de C++/WinRT a corrigé une ambiguïté dans l'appel à `invoke` dans `winrt::impl::promise_base::set_completed`, causée par la recherche dépendante des arguments (ADL). La mise à jour vers les coroutines C++20 a élargi l'espace de recherche ADL, trouvant inopinément `std::invoke` au lieu de `winrt::impl::invoke`. L'article détaille le mécanisme ADL et fournit un correctif pour les anciennes versions de C++/WinRT : déclaration d'une fonction `invoke` mieux adaptée dans l'espace de noms `winrt::Windows::Foundation` pour guider le compilateur. Ce correctif inclut également une assertion statique pour garantir sa suppression automatique après la mise à jour de C++/WinRT.

Développement

Une startup Fintech réduit ses coûts d'infrastructure de données de 70%

2025-03-09

Une startup fintech a relevé le défi de gérer de nombreuses sources de données et des coûts d'infrastructure élevés. Sa plateforme initiale, basée sur Hevo et BigQuery, s'est avérée insoutenable. Pour y remédier, elle a construit une nouvelle plateforme de données basée sur ELT, en tirant parti du stockage économique de S3 pour les données brutes. Elle a utilisé Airflow, Debezium, Kafka et dbt pour le traitement et la transformation des données, Trino pour les requêtes et Metabase pour la visualisation. Le résultat ? Une réduction de 70 % des coûts d'infrastructure. Cette étude de cas souligne comment une conception efficace des plateformes de données et les choix technologiques peuvent réduire considérablement les dépenses et améliorer l'efficacité.

Développement plateforme de données

Graphite : Votre centrale créative 2D open source

2025-03-09
Graphite : Votre centrale créative 2D open source

Graphite est un moteur graphique vectoriel et raster gratuit et open source, actuellement en alpha. Il dispose d'un flux de travail entièrement non destructif combinant le compositing par calques et la conception générative par nœuds. Évoluant au-delà d'un simple éditeur vectoriel, l'architecture de Graphite, semblable à celle d'un moteur de jeu, offre une boîte à outils complète pour l'édition de photos, les graphiques animés, la peinture numérique, l'édition de bureau et le compositing VFX. Les programmeurs graphiques et les développeurs Rust sont encouragés à contribuer, et les dons sont les bienvenus pour soutenir son développement continu. Graphite vise à devenir un outil de création artistique et de design standard de l'industrie, en responsabilisant les créateurs de tous niveaux.

uutils : Cinq ans de réécriture de GNU Coreutils en Rust

2025-03-09

À la FOSDEM 2025, Sylvestre Ledru a annoncé des progrès majeurs sur uutils, son remplacement de GNU Coreutils basé sur Rust. Démarré pendant le confinement COVID, le projet, près de cinq ans après son lancement, a réécrit plus de 100 utilitaires essentiels Unix/Linux, compte plus de 530 contributeurs et plus de 18 000 étoiles sur GitHub. Visant à offrir des remplacements directs plus sûrs et plus performants, uutils réussit près de 500 tests de la suite de tests GNU coreutils et est utilisé par des projets tels qu'Apertis basé sur Debian, les lunettes intelligentes Spectacles et Microsoft Visual Studio Code. Le prochain objectif de Ledru : étendre la réécriture en Rust à d'autres paquets clés de Debian/Ubuntu, en répondant aux défis de la maintenance en C et en offrant une expérience moderne aux nouveaux développeurs.

Développement

Sortie de l'ISO TeX Live 2025 !

2025-03-09

L'ISO TeX Live 2025 est enfin disponible ! Vous pouvez l'obtenir par téléchargement direct (notez que la synchronisation des miroirs prend du temps, certains miroirs peuvent ne pas encore l'avoir) ou via torrent. Ceci marque la septième année consécutive où l'auteur sème le torrent de l'ISO TeX Live, un travail d'amour alimenté par près de deux décennies de productivité et de plaisir en utilisant TeX et LaTeX pour « composer de beaux documents ».

Développement Image ISO

Infisical recrute : Ingénieur Full-Stack pour révolutionner la gestion des secrets

2025-03-09
Infisical recrute : Ingénieur Full-Stack pour révolutionner la gestion des secrets

Infisical, la plateforme de gestion des secrets open source n°1, recherche un ingénieur full-stack. Vous construirez, optimiserez et maintiendrez le produit principal, en garantissant une excellente expérience utilisateur et en explorant la gestion des secrets basée sur l'IA. Les candidats idéaux possèdent de solides compétences full-stack : gestion d'infrastructure, Docker/Kubernetes, architecture cloud native (AWS préférable), TypeScript/Go. Il s'agit d'une équipe en forte croissance ; d'ici 18 mois, vous aurez un impact sur des milliers d'utilisateurs et pourrez potentiellement posséder des composants clés de la plateforme.

Développement

PurrCrypt : Cryptez vos secrets avec des miaulements et des aboiements !

2025-03-09
PurrCrypt : Cryptez vos secrets avec des miaulements et des aboiements !

PurrCrypt est un outil de cryptage utilisant la cryptographie à courbe elliptique qui transforme vos messages secrets en adorables miaulements et aboiements de chiens. Facile à installer et à utiliser via la ligne de commande, il offre les modes "chat" et "chien". Bien que les messages cryptés ressemblent à des sons d'animaux sans signification, ils contiennent des données cryptographiquement sécurisées, décryptables uniquement avec les clés appropriées. Tirant parti des mêmes algorithmes que Bitcoin et intégrant la stéganographie, PurrCrypt masque le fait que vous envoyez du contenu crypté, le rendant étonnamment sûr et amusant.

Développement

Mako : Un bundler frontend ultra-rapide et sans configuration

2025-03-09

Mako est un bundler frontend basé sur Rust, offrant une configuration zéro, une vitesse exceptionnelle et une stabilité de production. Il prend en charge TypeScript, Less, CSS, React et plus encore, sans nécessiter de loaders ou de plugins. Largement utilisé chez Ant Group et rigoureusement testé sur des milliers de projets et de paquets npm, Mako garantit la compatibilité. Il inclut le remplacement de module à chaud (HMR) avec React Fast Refresh, la division de code intégrée et la concaténation de modules pour des performances optimisées et une meilleure expérience développeur.

Développement

Exploitation des contraintes pour des gains de performance significatifs : optimisation du comptage des nombres pairs en C++

2025-03-09

Cet article explore l’optimisation des performances du comptage des nombres pairs dans un tableau uint8_t en C++. En comparant deux approches — l’utilisation de `std::count_if` et une fonction de comptage personnalisée —, l’auteur démontre que la fonction personnalisée, en tirant parti de la contrainte selon laquelle le nombre de valeurs paires est compris entre 0 et 255, améliore considérablement les performances, atteignant jusqu’à 9,5 fois la vitesse dans les tests. L’article analyse le code assembleur généré par les deux méthodes, explique la différence de performances et mentionne un problème de vectorisation dans des versions spécifiques de GCC.

arXivLabs : Collaboration communautaire pour de nouvelles fonctionnalités arXiv

2025-03-09
arXivLabs : Collaboration communautaire pour de nouvelles fonctionnalités arXiv

arXivLabs est un cadre permettant aux collaborateurs de développer et de partager de nouvelles fonctionnalités arXiv directement sur le site web. Les participants partagent les valeurs d'arXiv : ouverture, communauté, excellence et confidentialité des données utilisateur. Vous avez une idée pour améliorer la communauté arXiv ? En savoir plus sur arXivLabs.

Développement

Gleam 1.9.0 publié : amélioration du débogage, de la gestion des dépendances et des performances

2025-03-09
Gleam 1.9.0 publié : amélioration du débogage, de la gestion des dépendances et des performances

Gleam, un langage sûr et évolutif, a publié la version 1.9.0 avec des améliorations significatives. Les mises à jour clés incluent un nouveau mot clé `echo` pour un débogage amélioré, la prise en charge des dépendances de référentiels Git, des améliorations de performances pour les tableaux de bits et la correspondance de modèles de listes en JavaScript, et des capacités étendues du serveur de langage, telles que le passage à la définition de type et la génération de code de l'encodeur JSON. Des améliorations supplémentaires incluent une intégration de recherche HexDocs améliorée, la prise en charge des certificats CA personnalisés et une conversion de syntaxe de pipeline simplifiée. Cette publication témoigne de la communauté Gleam dynamique et de ses nombreux contributeurs.

Développement

Gestion des erreurs en Go : une bénédiction ou une malédiction ?

2025-03-09

La gestion des erreurs en Go, caractérisée par la vérification omniprésente `if err != nil`, a suscité un débat considérable. Les critiques la trouvent verbeuse et encombrante, tandis que les partisans affirment qu'il s'agit d'une pierre angulaire de la philosophie de Go, traitant les erreurs comme des citoyens de première classe. Cet article examine les avantages et les inconvénients, en comparant l'approche de Go à la gestion des exceptions dans des langages comme JavaScript. Il met en évidence les meilleures pratiques, telles que la création de chaînes d'erreurs exploitables à l'aide de `fmt.Errorf` et l'utilisation de bibliothèques telles que `github.com/pkg/errors` pour une clarté et un suivi de pile améliorés. Bien qu'il ne soit pas parfait, la gestion explicite des erreurs de Go donne aux développeurs un contrôle total sur le flux du programme, en soulignant la simplicité et la planification proactive des pannes.

Développement

Blog piloté par les tests : utiliser l’IA pour améliorer votre flux de travail d’écriture

2025-03-09
Blog piloté par les tests : utiliser l’IA pour améliorer votre flux de travail d’écriture

Cet article présente unit-text, un outil utilisant des modèles GPT pour aider à la création d’articles de blog. L’auteur met l’accent sur l’écriture itérative, les approches orientées objectifs et établit des parallèles avec le développement piloté par les tests (TDD) dans le logiciel, proposant le « blog piloté par les tests ». unit-text utilise des invites et des commentaires de GPT pour aider les rédacteurs à vérifier la cohérence, les failles logiques et la réalisation des objectifs, améliorant ainsi l’efficacité et la qualité de l’écriture. Actuellement un outil CLI de prototype, les projets futurs incluent l’idéation interactive, la recherche autonome et l’intégration d’API.

Sortie de Spark 1.2 : une avancée majeure dans la compression de textures GPU

2025-03-09

Spark 1.2 est enfin disponible ! Cette solution de compression de textures GPU en temps réel bénéficie d’optimisations majeures, de nouveaux formats de compression et d’une prise en charge étendue des plateformes. Cette version se concentre sur l’amélioration des performances de vectorisation sur les GPU RDNA, les consoles et les GPU Mali, et inclut de nombreuses fonctionnalités inattendues, telles qu’un codec EAC amélioré, de nouveaux codecs BC3-YCoCg et HDR, et un codec ETC2. L’équipe de développement se concentrera davantage sur les objectifs à long terme plutôt que sur les demandes de fonctionnalités de clients potentiels n’ayant pas encore souscrit de licence. Spark 1.2 prend également en charge Android TV et les consoles, et propose des codecs ASTC 6x6 et des codecs en streaming améliorés, ainsi que des codecs de données latérales, améliorant ainsi considérablement la qualité et les performances de la compression.

Gestion de la mémoire en C++ : Plongeon dans le RAII

2025-03-09
Gestion de la mémoire en C++ : Plongeon dans le RAII

Ceci est la deuxième partie d'une série sur la gestion de la mémoire en C++. Cet article se concentre sur le RAII (Resource Acquisition Is Initialization), une technique puissante pour simplifier et sécuriser la gestion de la mémoire. L'auteur compare l'allocation manuelle de la mémoire en C avec l'approche plus sophistiquée de C++, couvrant les classes, les objets, les constructeurs, les destructeurs et les conteneurs. Le RAII gère automatiquement le nettoyage des ressources, réduisant les erreurs. L'article aborde également la sémantique de déplacement et prévisualise le prochain volet sur les pointeurs intelligents.

Développement

Optimisation du compilateur : Amélioration de la génération de nombres aléatoires presque sans division de Lemire

2025-03-09

L’auteur a amélioré un algorithme presque sans division pour générer des nombres aléatoires bornés (algorithme de Lemire). Une version précédente réduisait l’inflation du code en intégrant en ligne le chemin rapide, mais l’optimisation du compilateur était limitée. L’auteur a découvert que lorsque la limite est une constante au moment de la compilation, le seuil de rejet peut être précalculé et l’évitement de la division est inutile. La nouvelle implémentation n’effectue qu’un seul appel au générateur de nombres aléatoires, et le compilateur élimine automatiquement la boucle lorsque la limite est une puissance de deux. Ceci est plus efficace que la version de l’année dernière, et l’auteur explore des techniques d’optimisation similaires au moment de la compilation en Rust.

Testeranto : Framework ATDD basé sur l'IA pour la correction automatique des tests

2025-03-09
Testeranto : Framework ATDD basé sur l'IA pour la correction automatique des tests

Testeranto est un framework de développement piloté par les tests d'acceptation (ATDD) axé sur l'IA pour les projets TypeScript, actuellement en développement. Il utilise une syntaxe fortement typée, semblable à Gherkin, pour spécifier les tests et s'intègre à Aider.ai pour corriger automatiquement les tests défaillants. Au lieu de tester directement votre code, Testeranto exige que vous encapsuliez votre code avec une interface sémantique basée sur les signatures de type TS. Il fonctionne en frontend, backend ou les deux, et peut tester tout ce qui peut être empaqueté avec esbuild.

Développement

H3 d'Uber : Un système de grille hexagonale pour l'indexation géo-spatiale

2025-03-09

Développé par Uber, H3 est un système de grille globale discret qui indexe les géographies dans une grille hexagonale. Chaque cellule hexagonale possède un ID unique, permettant des jointures rapides entre des ensembles de données disparates et une agrégation à différents niveaux de précision. H3 permet une gamme d'algorithmes et d'optimisations basés sur la grille, notamment la recherche du plus proche voisin, le calcul du plus court chemin, le lissage de gradient, etc., ce qui en fait un outil puissant pour l'analyse de données géo-spatiales.

LFortran compile PRIMA : Une étape majeure vers la version bêta

2025-03-09

L'équipe du compilateur LFortran a annoncé avec succès la compilation et l'exécution de libprima/PRIMA, le huitième code tiers de qualité production compilé avec un alignement bit à bit sur la sortie de GFortran. Cette étape importante rapproche LFortran de son objectif de compiler dix codes de ce type, une étape clé pour atteindre une qualité bêta. Compiler PRIMA, un package Fortran pour l'optimisation non linéaire, a présenté des défis liés aux variables de procédure, aux tableaux avec des pas non unitaires et à la perte de précision, tous surmontés. Les efforts futurs se concentreront sur la compilation de codes tiers supplémentaires, notamment fpm et LAPACK, pour consolider la préparation bêta de LFortran.

Développement

Devenir un excellent ingénieur : au-delà du salaire

2025-03-09

Cet article explore ce qui fait un excellent ingénieur logiciel. Il soutient que la passion et l'ambition sont cruciales, allant au-delà du simple salaire. L'auteur met l'accent sur une compréhension approfondie des fondamentaux de l'informatique, l'apprentissage continu, la pensée critique et l'application pratique des connaissances. Des projets spécifiques, comme la création d'un compilateur ou d'un émulateur, sont suggérés, soulignant l'importance de construire à partir de principes fondamentaux. L'article souligne également l'autocritique et la recherche de l'excellence comme éléments clés de la croissance.

Développement Apprentissage

Goravel : Un framework web Go inspiré par Laravel

2025-03-09
Goravel : Un framework web Go inspiré par Laravel

Goravel est un framework d'application web Go complet et hautement évolutif, conçu pour aider les développeurs Go à créer rapidement des applications. Sa philosophie de conception reflète celle de Laravel, facilitant la courbe d'apprentissage pour les développeurs PHP. Le projet est open-source et accepte les étoiles, les pull requests et les issues ! Goravel possède un riche ensemble de fonctionnalités, notamment l'authentification et l'autorisation HTTP, l'ORM, les migrations, la journalisation, le caching, gRPC, la console Artisan, la planification des tâches, les files d'attente, le stockage de fichiers, le courrier électronique, la validation, les mocks, le cryptage hash, l'intégration du package Carbon, les outils de développement et de test, la localisation et les sessions. La documentation et des exemples de projets sont disponibles ; les contributions à la documentation et au développement sont encouragées.

Développement

Go vs. Rust : Bataille de Backend 2025

2025-03-09
Go vs. Rust : Bataille de Backend 2025

Un crabe et une marmotte entrent dans une salle de serveurs. Le crabe exhibe ses abstractions à coût zéro, tandis que la marmotte présente ses goroutines. Bienvenue à la bataille de backend de 2025 ! Cet article compare Go et Rust pour les besoins de production hautes performances, reconnaissant TypeScript comme un concurrent sérieux pour les nouveaux projets, mais soulignant la domination de Go et Rust lorsque la vitesse maximale est cruciale. Un scénario de serveur HTTP de traitement JSON réel est utilisé pour la comparaison, bien que les benchmarks de performance spécifiques ne soient pas détaillés, soulignant les complexités inhérentes aux métriques de performance.

Développement Performance Backend

Yhangry : Marketplace de chefs privés soutenu par YC recrute un ingénieur full-stack

2025-03-09
Yhangry : Marketplace de chefs privés soutenu par YC recrute un ingénieur full-stack

Yhangry, un Airbnb pour chefs privés, met en relation les utilisateurs avec des chefs pour des événements. Fort d'une croissance multipliée par 8 en deux ans, de 4 millions de dollars de financement initial et de rentabilité, Yhangry recherche un ingénieur full-stack expérimenté. Le poste implique une expansion internationale et le développement de fonctionnalités clés dans ses bureaux londoniens, avec un salaire compétitif.

Développement Chef Privé

Redécouvrir la programmation : rendu d’une image PETSCII sur Commodore 64

2025-03-09
Redécouvrir la programmation : rendu d’une image PETSCII sur Commodore 64

Un CTO chevronné avec 23 ans d’expérience dans l’informatique, confronté à un chômage inattendu, a décidé de se lancer un défi en se plongeant dans la programmation informatique rétro. Son objectif : afficher une image PETSCII sur un Commodore 64. Il a méticuleusement documenté tout le processus, de l’utilisation d’un éditeur en ligne pour créer l’image, à la conversion des données avec un script Perl, et enfin à l’affichage sur le Commodore 64 à l’aide de C64 BASIC et de l’émulateur VICE. Cette histoire met en lumière son enthousiasme pour l’apprentissage de nouvelles technologies et sa passion pour l’informatique rétro, offrant des informations précieuses à toute personne intéressée par la programmation informatique rétro.

Développement

Pré-rendu Next.js : quelle charge de trafic peut-il réellement supporter ?

2025-03-09
Pré-rendu Next.js : quelle charge de trafic peut-il réellement supporter ?

L'auteur a testé la capacité de trafic de son site Next.js pré-rendu et a constaté qu'un serveur VPS ne pouvait gérer qu'environ 200 requêtes simultanées, bien moins que prévu. Cela l'a conduit à une mise à niveau vers un serveur dédié, entraînant une amélioration significative des performances, gérant des milliers de requêtes par seconde. En revanche, le rendu côté serveur (SSR) a eu des performances bien inférieures au pré-rendu, ayant des difficultés avec le trafic intense. L'article aborde également les avantages et les inconvénients d'autres solutions telles que Cloudflare et Vercel, optant finalement pour un serveur dédié pour l'évolutivité. Des tests futurs exploreront des optimisations supplémentaires.

Abandonnez l'approche descendante : pourquoi l'audit de code ascendante est plus efficace

2025-03-09

Les consultants en sécurité doivent souvent devenir experts d'une base de code rapidement sans écrire une seule ligne de code. Cet article critique l'approche descendante inefficace de l'audit de code, la comparant à la tentative de visualiser un marathon entier du ciel : décourageant et accablant. L'auteur préconise une approche ascendante : comprendre profondément les détails du code, étendre progressivement la portée, obtenir finalement une compréhension plus profonde que certains développeurs, et trouver plus de bogues. Cette méthode est non seulement plus efficace, mais aussi plus agréable.

1 2 142 143 144 146 148 149 150 214 215