Category: Développement

T2 SDE : Un environnement de développement système low-code et de compilation croisée

2024-12-26

T2 SDE est un gestionnaire de paquets ultraléger et low-code, et une distribution Linux permettant la compilation croisée entièrement automatisée et reproductible de systèmes d'exploitation personnalisés à l'aide de paquets à jour. Il prend en charge presque toutes les principales architectures de CPU, les bibliothèques C, les systèmes GUI et les environnements de bureau, ainsi qu'innombrables paquets de firmware embarqués et spécialisés. La dernière version, T2 24.12, offre une prise en charge étendue des architectures, incluant LibreOffice, OpenJDK, Qemu et même un nouvel environnement de bureau basé sur Rust, Cosmic Desktop. L'engagement de T2 à prendre en charge un large éventail d'architectures, y compris les anciennes et les niches comme IA-64 Itanium, est complété par des améliorations continues, notamment le chiffrement complet du disque et la prise en charge de LVM pour une expérience utilisateur améliorée.

Tutoriel : Création d’un shell Unix simple en C

2024-12-26
Tutoriel : Création d’un shell Unix simple en C

Ce tutoriel vous guide dans la création d’un shell Unix basique en C, nommé lsh. Il détaille le cycle de vie du shell : initialisation, interprétation des commandes et terminaison. Les aspects clés abordés incluent la lecture de l’entrée utilisateur, l’analyse des commandes, l’exécution des programmes à l’aide de fork() et exec(), et la gestion des commandes intégrées telles que cd, help et exit. L’allocation dynamique de mémoire à l’aide de malloc() et realloc() est mise en avant, et l’utilisation de getline() est expliquée. Bien que simplifié (pas de pipes, de redirection ou de globbing), le tutoriel fournit une base solide pour comprendre la programmation de shells en C.

Transformée de distance subpixelique : une percée dans le rendu de polices de haute qualité pour WebGPU

2024-12-26

Cet article explore les défis et les solutions pour obtenir un rendu de polices de haute qualité dans WebGPU. En abordant les lacunes des méthodes existantes de génération de champs de distance signés (SDF), l'auteur présente un nouvel algorithme de transformée de distance précis au subpixel (ESDT). L'ESDT combine intelligemment les avantages du CPU et du GPU, en utilisant un algorithme amélioré de transformée de distance euclidienne pour résoudre efficacement les écarts rencontrés dans les méthodes traditionnelles lors de la gestion de la précision subpixelique et des pixels en niveaux de gris. Le résultat est un rendu précis de diverses polices, y compris les emojis, améliorant considérablement la qualité du rendu des polices.

Créez votre propre machine virtuelle : un guide étape par étape

2024-12-26

Ce tutoriel vous guide dans la création de votre propre machine virtuelle (VM) capable d’exécuter des programmes en langage assembleur, tels que les jeux 2048 ou Roguelike. Même si vous êtes déjà programmeur, ce projet vous permettra de mieux comprendre l’architecture des ordinateurs et le fonctionnement des langages de programmation. Le tutoriel couvre les concepts de base des VM, l’architecture LC-3, les jeux d’instructions, les routines de piégeage, le chargement des programmes, et bien plus encore, avec des exemples de code détaillés et des explications. Le code final compte environ 250 lignes en C, ce qui le rend accessible aux personnes ayant des connaissances de base en C/C++.

Développement machine virtuelle

Arcan 0.7 publié : La mise à jour du bureau All-Tomato arrive

2024-12-26
Arcan 0.7 publié : La mise à jour du bureau All-Tomato arrive

La version 0.7 d'Arcan marque la fin de la deuxième phase du projet « anarchie sur le bureau » et le début de la phase finale. Cette version se concentre sur les corrections de bogues et les améliorations de Lash#Cat9 et Xarcan. Lash#Cat9, un environnement de ligne de commande basé sur Lua, ajoute des fonctionnalités telles qu'une implémentation du protocole Debug Adapter et une feuille de calcul interactive. Xarcan permet des gestionnaires de fenêtres personnalisés, utilisant Arcan comme pilote d'affichage et permettant l'interopérabilité avec les serveurs X. Arcan 0.7 vise à améliorer les performances et la sécurité, les versions futures devant proposer une programmation à distance plus flexible et une connexion des périphériques plus simple.

Développement

Lua : un langage de programmation sous-estimé

2024-12-26
Lua : un langage de programmation sous-estimé

Lua, un langage de script embarqué créé en 1993, est étonnamment sous-estimé malgré ses atouts. Cet article met en lumière les avantages de Lua : facilité d'apprentissage et de maîtrise, une excellente API C, un support multi-paradigme et une capacité d'intégration exceptionnelle. Bien qu'il soit largement utilisé dans les jeux et les systèmes embarqués, l'auteur souligne également certains aspects uniques de Lua, tels que ses conventions d'indexation (commençant à 1 mais pas obligatoire), la gestion des erreurs et les tableaux terminés par nil, dont les développeurs doivent être conscients. Dans l'ensemble, Lua est un langage puissant qui mérite plus de reconnaissance ; son efficacité est évidente dans des applications comme les plugins Neovim.

Développement langage de script embarqué

Défis de mise à jour des bibliothèques Rust : une astuce pour éviter les conflits de version

2024-12-26
Défis de mise à jour des bibliothèques Rust : une astuce pour éviter les conflits de version

La mise à jour des bibliothèques dans l'écosystème Rust entraîne souvent des effets en cascade et des problèmes importants. Cet article présente une technique appelée « astuce semver », qui résout intelligemment le problème de la mise à jour des API moins fréquemment utilisées sans modifier les API couramment utilisées, en faisant en sorte qu'une bibliothèque dépende de sa future version. Cette méthode est particulièrement utile pour éviter la nécessité de mises à jour coordonnées à grande échelle dans toute la chaîne de dépendances en raison de changements importants dans une seule bibliothèque, simplifiant ainsi considérablement le processus de mise à jour.

Un ELF minimaliste : suppression de la complexité jusqu’à l’essentiel

2024-12-26

Cet article détaille le processus suivi par l’auteur pour simplifier un programme Linux basique, aboutissant à un fichier ELF minimaliste. En partant d’un simple programme « Bonjour le monde », l’auteur supprime progressivement les complexités telles que les bibliothèques standard, les fonctionnalités de sécurité modernes, les informations de débogage et les mécanismes de gestion des erreurs. Le processus explore en profondeur la structure du fichier ELF, les tables de symboles, les sections et le rôle des scripts de liaison, en utilisant le langage assembleur pour manipuler directement les appels système afin de garantir la fonctionnalité du programme. L’auteur conclut en créant un script de liaison personnalisé, chargeant les segments de code et de données à des adresses mémoire spécifiées, démontrant ainsi la flexibilité et les détails de bas niveau de la construction des fichiers ELF.

Modification du comportement par défaut de subprocess de Python : performances améliorées, sécurité équilibrée

2024-12-26

Le module subprocess de Python modifie son comportement par défaut consistant à fermer tous les descripteurs de fichiers. Ce changement vise à améliorer les performances, notamment lorsqu'un grand nombre de descripteurs de fichiers est utilisé, en évitant les goulots d'étranglement causés par la fermeture individuelle de chaque descripteur. Cependant, la modification du comportement par défaut peut présenter des risques de sécurité. Il est conseillé aux développeurs de choisir le paramètre `close_fds` en fonction de leurs besoins spécifiques et de prendre les mesures de sécurité appropriées, telles que la garantie que tous les descripteurs de fichiers sont marqués comme non héritables. Ce changement équilibre soigneusement les performances et la sécurité, dans le but de fournir aux développeurs une solution de gestion des sous-processus plus flexible et efficace.

Développement

Moteur de lancer de rayons WebGPU open source : rendu en temps réel de scènes glTF

2024-12-26
Moteur de lancer de rayons WebGPU open source : rendu en temps réel de scènes glTF

Le projet open source webgpu-raytracer est un moteur de lancer de rayons logiciel créé à l’aide de l’API WebGPU. Il prend en charge les fichiers de scène glTF et rend les matériaux avec albedo, les maps normales et les maps de matériaux. Le moteur utilise BVH pour les intersections accélérées de scène de rayons et utilise l’échantillonnage d’importance multiple pour plus d’efficacité. Actuellement, il prend en charge les maps d’environnement et permet le contrôle de la caméra au clavier et à la souris, mais la réfraction n’est pas encore prise en charge.

Développement Lancer de rayons

Approche controversée de Debian pour la gestion des dépendances de Rust

2024-12-26

L'intégration de Rust dans Debian est un effort de longue date, mais son approche de la gestion des dépendances est devenue un sujet de controverse. L'auteur Ian Jackson soutient que suivre fidèlement la sémantique des versions (semver) de Rust dans les dépendances des paquets Debian est impraticable. Des différences fondamentales existent entre la sémantique de gestion des dépendances de Debian et de Rust, ce qui entraîne un travail manuel important lors de la traduction directe des dépendances de version de Rust. Jackson propose une solution radicale : Debian ne devrait pas suivre précisément les informations de dépendance semver de Rust, mais plutôt essayer de manière optimiste plusieurs combinaisons de paquets, laissant le QA automatisé détecter et corriger les problèmes. Cette approche, bien qu'elle viole le semver, est atténuée par l'accent mis par la communauté Rust sur la sécurité des API et les notifications de changement, ainsi que par les mécanismes de QA de Debian. La proposition vise à améliorer l'efficacité des mises à jour des paquets Rust de Debian, mais pourrait également entraîner des défaillances de certaines combinaisons de dépendances.

Développement

Extension ChatGPT Saved Chats : Ne perdez plus jamais une conversation importante

2024-12-26
Extension ChatGPT Saved Chats : Ne perdez plus jamais une conversation importante

Fatigué de perdre des conversations importantes de ChatGPT dans votre historique de chat interminable ? L'extension ChatGPT Saved Chats pour Chrome est là pour vous aider ! Cette extension facile à utiliser vous permet d'enregistrer et d'organiser vos chats les plus précieux en un seul clic. Il vous suffit de survoler n'importe quelle conversation et de cliquer sur l'icône d'enregistrement pour la stocker instantanément pour y accéder plus tard. Vos chats enregistrés sont stockés localement, garantissant ainsi votre confidentialité. Dites adieu au défilement sans fin et bonjour à la récupération facile de vos conversations importantes.

Projet open source GitHub Thruster : Simplification du déploiement d'applications Rails avec un proxy HTTP/2

2024-12-26
Projet open source GitHub Thruster : Simplification du déploiement d'applications Rails avec un proxy HTTP/2

Thruster est un proxy HTTP/2 conçu pour simplifier les déploiements en production d'applications Rails. Il fonctionne avec le serveur web Puma, offrant des fonctionnalités telles que la prise en charge HTTP/2, la gestion automatique des certificats TLS avec Let's Encrypt, la mise en cache HTTP de base et la prise en charge de X-Sendfile avec compression. Il vise une configuration zéro ; il suffit de définir la variable d'environnement TLS_DOMAIN pour activer TLS, sinon il fonctionne uniquement en mode HTTP. Thruster encapsule également le processus Puma, ce qui le rend idéal pour les environnements conteneurisés. Initialement créé pour le projet ONCE, il est désormais utilisé pour les déploiements plus simples d'autres applications Rails.

Développement Déploiement

Problème potentiel avec l'importation/exportation de zpool dans Linux OpenZFS

2024-12-26

Un problème potentiel existe dans les versions Linux OpenZFS (à partir de la 2.3.0) concernant l'importation et l'exportation de pools ZFS. Même si aucun système de fichiers dans un pool ZFS n'a la propriété 'sharenfs' définie, `zpool import` et `zpool export` exécutent toujours `exportfs -ra`. Cela peut supprimer les exportations NFS ajoutées ou modifiées manuellement, affectant les environnements tels que les systèmes à haute disponibilité utilisant des configurations d'exportation NFS personnalisées. Le problème provient d'OpenZFS exécutant aveuglément `exportfs -ra`, indépendamment du besoin de modifier les exportations NFS.

Développement

Comment gérer les alertes de sécurité Go : un guide pratique

2024-12-26
Comment gérer les alertes de sécurité Go : un guide pratique

Cet article fournit un guide pratique sur la gestion des alertes de sécurité Go. Prenant pour exemples les vulnérabilités de sécurité Go de décembre 2024 dans les packages golang.org/x/net et golang.org/x/crypto, il détaille l’utilisation des outils govulncheck et Docker Scout pour analyser les images Docker et le code source Go afin de détecter les vulnérabilités et mettre à jour les dépendances. L’article souligne l’importance de distinguer les problèmes de sécurité potentiels des risques réels et recommande d’automatiser les tests de sécurité et les processus de correction pour plus d’efficacité et pour se conformer aux nouvelles réglementations européennes en matière de cybersécurité.

Un programmeur relève le défi de l'Advent of Code 2024 sur OS/2 Warp 4 avec Java 1.0.1

2024-12-26

Un programmeur a relevé le défi de l'Advent of Code 2024 en utilisant Java 1.0.1 sur un système IBM OS/2 Warp 4 de 1996. Ce n'était pas qu'un simple défi de codage ; c'était un voyage rétro poussant à la limite du matériel et des logiciels obsolètes. L'article détaille les défis rencontrés, notamment les bogues de Java 1.0.1, les goulots d'étranglement des performances et les limitations du système ancien, et comment ils ont été surmontés. Cela met en évidence non seulement les prouesses de codage, mais aussi le charme de la technologie informatique ancienne et la persévérance du programmeur.

Développement

Groupe de travail HTML du W3C : moteur de l’évolution des normes HTML

2024-12-26
Groupe de travail HTML du W3C : moteur de l’évolution des normes HTML

Le groupe de travail HTML du W3C a pour mission de transformer les ébauches de révision HTML et DOM du WHATWG en recommandations W3C. Ce groupe est composé d’experts internationaux qui collaborent pour assurer l’évolution continue et l’amélioration des normes HTML afin de répondre aux besoins toujours changeants du Web. Le groupe possède une mission définie, un processus de participation et une politique de brevets, et publie régulièrement des mises à jour et des informations sur les événements.

Développement norme HTML normes Web

Node.js active --experimental-strip-types par défaut, améliorant la prise en charge de TypeScript

2024-12-26
Node.js active --experimental-strip-types par défaut, améliorant la prise en charge de TypeScript

Une mise à jour importante de Node.js active l'indicateur `--experimental-strip-types` par défaut. Cela signifie que les développeurs peuvent désormais exécuter des fichiers TypeScript sans configuration supplémentaire. Ce changement vise à améliorer la prise en charge de TypeScript et à détecter davantage de bogues. Bien qu'il soit encore expérimental, cela représente une avancée majeure vers un développement TypeScript plus simple dans Node.js, offrant aux développeurs une expérience plus rationalisée.

Développement Développement

Serveur Minecraft en COBOL : Un défi réussi

2024-12-26
Serveur Minecraft en COBOL : Un défi réussi

CobolCraft est un serveur Minecraft audacieusement créé à l'aide du langage de programmation COBOL, souvent considéré comme obsolète. Malgré les limites du COBOL dans la manipulation de données de bas niveau, ce projet supporte étonnamment des fonctionnalités telles que la génération de terrain infini, le chargement dynamique de blocs et le mode multijoueur. Il gère même les fichiers de données de Minecraft, démontrant le potentiel inattendu de ce langage souvent négligé et remettant en question les perceptions de ses capacités. Ce projet témoigne de l'ingéniosité en programmation et constitue une expérience intéressante utilisant des outils non conventionnels.

Développement Développement de serveur

Racket School 2019 : Concevez vos propres langages

2024-12-26

La piste "Comment concevoir des langages" de la Racket School 2019 a offert une immersion approfondie dans la programmation orientée langage et la construction de langages à l'aide de Racket. Le programme a couvert des concepts clés tels que l'expansion des macros, les modules et la vérification de types, renforcés par des travaux pratiques en laboratoire. Les participants ont construit des macros simples et des langages typés, acquérant ainsi une compréhension pratique des principes de conception de langages. Les cours magistraux et les travaux pratiques ont fourni une expérience d'apprentissage équilibrée, aboutissant à la capacité de concevoir et de construire des langages personnalisés.

Espace de conception pour les requêtes de recherche de code : approche innovante d’ast-grep

2024-12-26
Espace de conception pour les requêtes de recherche de code : approche innovante d’ast-grep

ast-grep est un outil de recherche de code basé sur l’arbre de syntaxe abstraite (AST) conçu pour la facilité d’utilisation, l’expressivité et la précision. Cet article de blog explore l’espace de conception des requêtes de recherche de code, en les classant en requêtes informelles, requêtes formelles basées sur des langages de programmation existants, requêtes formelles utilisant des langages personnalisés et requêtes hybrides. Les forces et les faiblesses de chaque type sont analysées. ast-grep utilise une approche hybride, permettant aux utilisateurs d’écrire des requêtes en utilisant la syntaxe familière du langage de programmation et offrant une expressivité plus puissante grâce à des fichiers de configuration YAML ou une API programmatique pour une recherche de code précise.

SiYuan : Un logiciel de gestion des connaissances personnelles, privé et open source

2024-12-26
SiYuan : Un logiciel de gestion des connaissances personnelles, privé et open source

SiYuan est un logiciel de gestion des connaissances personnelles privilégiant la confidentialité, auto-hébergé et entièrement open source, écrit en TypeScript et Go. Il offre des fonctionnalités telles que des références de bloc granulaire, une édition WYSIWYG Markdown, des attributs personnalisés, l'intégration de requêtes SQL, le clipping web et l'exportation de liens d'annotations PDF. Disponible sur les stores d'applications (App Store, Google Play, F-Droid) et Docker, SiYuan offre une expérience puissante et conviviale. La plupart des fonctionnalités sont gratuites pour un usage personnel et commercial.

Développement gestion des connaissances

Coccinelle : un outil puissant pour le développement du noyau Linux

2024-12-26

Coccinelle est un outil puissant pour le développement du noyau Linux, utilisé pour la correspondance de motifs et la transformation de texte. Il permet l'application de correctifs complexes à l'échelle de l'arbre et détecte les schémas de programmation problématiques. Ce document détaille l'installation, l'utilisation, les différents modes (patch, rapport, contexte, org) et les fonctionnalités avancées de Coccinelle, telles que la parallélisation, l'utilisation d'un seul correctif sémantique, le contrôle des fichiers traités, le débogage et la prise en charge de .cocciconfig. Coccinelle utilise le langage de correctif sémantique (SmPL) et offre plusieurs modes pour générer des correctifs, des rapports, des informations contextuelles et des rapports en mode Org, répondant ainsi à divers besoins.

Développement Noyau Linux

Black Candy : Un serveur de streaming musical auto-hébergé

2024-12-26
Black Candy : Un serveur de streaming musical auto-hébergé

Black Candy est un serveur de streaming musical auto-hébergé, votre centre musical personnel. Il offre une installation facile via Docker, vous permettant de configurer rapidement votre propre service de streaming musical. Une démo est disponible pour les tests. Bien que SQLite soit la base de données par défaut, PostgreSQL est également pris en charge. La persistance des données est gérée en montant le répertoire /app/storage. Pour de meilleures performances, le proxy Nginx est pris en charge, et des applications mobiles sont disponibles.

Développement auto-hébergé

egui : Une bibliothèque GUI en mode immédiat en Rust

2024-12-26

egui est une bibliothèque d'interface utilisateur graphique (GUI) en mode immédiat, légère et efficace, écrite en Rust. Son API propre et simple permet aux développeurs de créer rapidement des interfaces interactives. Contrairement aux GUI traditionnelles en mode conservé, egui redessine l'interface entière à chaque image, ce qui conduit à des mises en page plus flexibles et une gestion d'état plus simple. Cela la rend idéale pour les jeux, la visualisation de données et les applications nécessitant une grande réactivité. Sa facilité d'utilisation et ses fonctionnalités puissantes font d'egui un choix attrayant pour les développeurs Rust qui créent des interfaces utilisateur.

Développement

Temps POSIX : Ce n’est pas ce que vous pensez

2024-12-26

Cet article démystifie une idée fausse répandue concernant le temps POSIX (temps Unix) : il ne s’agit pas simplement du nombre de secondes écoulées depuis le 1er janvier 1970 à 00 h 00 min 00 s. En raison des secondes intercalaires, le nombre de secondes dans une journée UTC n’est pas une constante de 86 400, ce qui entraîne des écarts entre le temps POSIX et le nombre réel de secondes. L’article examine l’impact des secondes intercalaires sur les calculs de temps et recommande des alternatives telles que CLOCK_MONOTONIC ou TAI pour une mesure précise du temps, évitant ainsi les erreurs causées par les secondes intercalaires.

Un bug vieux de 50 ans dans les E/S de fichiers C : percer le mystère d'un héritage

2024-12-26

Lors de l'amélioration d'un émulateur DOS, un développeur a rencontré un bug apparemment anodin dans les E/S de fichiers : l'ajout de texte à un fichier à l'aide de la commande `echo` a produit des résultats inattendus. Le débogage a révélé un défaut dans la façon dont les bibliothèques d'exécution C gèrent la commutation entre la lecture et l'écriture, un défaut remontant aux années 1970 et même aux systèmes UNIX antérieurs. L'article approfondit le contexte historique, du C K&R initial aux normes C modernes, en explorant les différences d'implémentation entre les différentes versions d'UNIX et les compilateurs C. La cause première est identifiée comme des limitations dans la gestion du mode de mise à jour par les bibliothèques C initiales, avec des variations quant à la manière dont différents systèmes d'exploitation et compilateurs ont géré ces limitations. L'auteur conclut que, même aujourd'hui, pour un code C portable, un appel `fseek` explicite est nécessaire lors de la commutation entre la lecture et l'écriture d'un fichier.

Développement E/S de fichiers bug hérité

Des lectures Postgres qui provoquent des écritures : MVCC, élagage des pages et bits d’indice

2024-12-25

Cet article explore le comportement apparemment paradoxal de PostgreSQL où de simples requêtes SELECT peuvent déclencher des écritures de données. En commençant par le mécanisme de contrôle de concurrence multiversion (MVCC), il explique des concepts tels que les versions de lignes, les pages et les tuples. À l’aide d’exemples de code, il analyse comment les mises à jour des bits d’indice et l’élagage des pages font que les opérations de lecture modifient les pages, conduisant finalement à des écritures sur le disque. L’article traite également de la stratégie d’optimisation des mises à jour HOT et utilise des outils d’inspection des pages pour illustrer la manière dont les données sont stockées et mises à jour dans les pages.

Les événements envoyés par le serveur (SSE) : une solution de streaming de données en temps réel sous-estimée

2024-12-25
Les événements envoyés par le serveur (SSE) : une solution de streaming de données en temps réel sous-estimée

Cet article explore les événements envoyés par le serveur (SSE), une solution de communication en temps réel unidirectionnelle plus simple et plus efficace que les WebSockets. SSE utilise les protocoles HTTP standard, ce qui facilite son implémentation et son déploiement, sa compatibilité avec les infrastructures existantes, son efficacité énergétique et sa capacité de reconnexion automatique. L'article détaille le fonctionnement, les avantages et les scénarios d'application de SSE (comme les fils d'actualité en temps réel, les données boursières, les barres de progression, etc.), en présentant des exemples de code avec Flask et JavaScript. De plus, il analyse comment les grands modèles linguistiques (LLM) comme ChatGPT utilisent SSE pour les réponses en streaming et souligne les limitations de SSE, telles que la communication unidirectionnelle et les restrictions de format de données. En résumé, SSE offre une solution élégante pour de nombreuses applications nécessitant des flux de données unidirectionnels en temps réel.

Plongeon au cœur du CPS : Un voyage dans la compilation de la programmation fonctionnelle

2024-12-25
Plongeon au cœur du CPS : Un voyage dans la compilation de la programmation fonctionnelle

Cet article explore en profondeur le style de passage de continuation (CPS) et son application dans la compilation des langages de programmation fonctionnelle. L’auteur construit pas à pas un transformateur CPS pour un langage simple ressemblant à Scheme, en expliquant les stratégies d’optimisation et les méthodes de génération de code. L’article détaille la transformation des entiers, des variables, des appels de fonction, des opérateurs arithmétiques, des expressions lambda et des expressions if en forme CPS. Il aborde également les méta-continuations et les techniques d’optimisation telles que le pliage de constantes et la réduction bêta. Enfin, il décrit plusieurs approches pour générer du code exécutable à partir du CPS, notamment la génération de code C, l’utilisation de trampolines et l’emploi d’une seule instruction switch volumineuse.

1 2 200 201 202 204 206 207 208 214 215