Category: Développement

Surcharge de l'abstraction lambda en Haskell : une approche élégante pour la conception d'EDSL

2024-12-30
Surcharge de l'abstraction lambda en Haskell : une approche élégante pour la conception d'EDSL

Cet article présente une nouvelle méthode pour surcharger l'abstraction lambda en Haskell afin de construire des langages de domaine spécifiques intégrés (EDSL). En utilisant intelligemment un type `Port` et les fonctions `encode`/`decode`, l'auteur traduit élégamment les fonctions Haskell en morphismes au sein d'une catégorie personnalisée. Cela donne une syntaxe concise et intuitive, évitant les complexités des abstractions Arrow et de la notation proc. L'approche nécessite un minimum de code Haskell et aucune métaprogrammation ni aucun plugin de compilateur. Un exemple d'EDSL de diagramme de flux illustre l'application de la méthode, avec des discussions sur la prévention des duplications et la gestion des effets secondaires.

Développement Abstraction Lambda

L'IOCCC célèbre son 40e anniversaire avec la 28e compétition

2024-12-30

Le Concours international de code C obscurci (IOCCC) organise sa 28e compétition, marquant son 40e anniversaire. Cet événement célèbre la créativité et les compétences de codage originales dans le langage de programmation C. Pour utiliser l'application web Mastodon, JavaScript est requis ; vous pouvez également utiliser une application native Mastodon.

Développement concours de codage

Problèmes avec la programmation orientée objet dans Guile

2024-12-30

Cet article explore les différences entre le système de programmation orientée objet de Guile Scheme, GOOPS, et le Common Lisp Object System (CLOS), en soulignant les lacunes de GOOPS. GOOPS manque de l'élégance et de la robustesse de CLOS dans plusieurs domaines clés : la spécialisation des setters ne se compose pas avec l'héritage, il manque les qualificateurs de méthode before/after/around, les algorithmes de combinaison de méthodes ne sont pas contrôlables, la spécialisation des arguments de méthode est limitée, les arguments de mots clés ne sont pas pris en charge et les chaînes de documentation sont absentes. L'auteur suggère des améliorations, telles que l'imitation du comportement de CLOS, l'ajout de qualificateurs de méthode et l'amélioration du mécanisme de spécialisation des arguments de méthode pour améliorer l'élégance du code et réduire les bogues.

Développement

Construction d'un émulateur complet d'ordinateur en C : De la porte NAND au Tetris

2024-12-30
Construction d'un émulateur complet d'ordinateur en C : De la porte NAND au Tetris

Ce projet vise à construire un émulateur d'ordinateur complet en C à partir de zéro, en suivant le cours NandToTetris. Il commence par une seule porte NAND et construit progressivement des puces plus complexes, telles que des multiplexeurs et des démultiplexeurs, aboutissant à un système capable d'exécuter Tetris. Contrairement à d'autres projets d'émulateurs qui commencent au niveau du processeur, celui-ci construit méthodiquement toute la pile matérielle. Le projet en est à ses débuts, l'auteur prévoyant d'implémenter un assembleur après avoir terminé les composants matériels.

Little Snitch : Le gardien de la sécurité réseau de votre macOS

2024-12-30
Little Snitch : Le gardien de la sécurité réseau de votre macOS

Little Snitch est un moniteur réseau et un pare-feu d'applications personnel pour macOS qui vous donne le contrôle sur les applications qui se connectent à Internet. Il vous avertit de chaque tentative de connexion, vous permettant d'autoriser ou de refuser l'accès, garantissant ainsi la sécurité de vos données. Ses fonctionnalités incluent un mode silencieux, un graphique de trafic visuel, une gestion flexible des règles, un chiffrement DNS intégré et une identification des processus cryptographiques pour contrer les logiciels malveillants. Surveillez et gérez facilement l'activité réseau de votre Mac, protégeant ainsi votre vie privée.

Développement pare-feu

CI plus rapide avec Mill : stratégies de tests sélectifs

2024-12-30

Exécuter tous les tests dans les grandes bases de code est inefficace. Cet article explore trois approches de tests sélectifs : basée sur les dossiers, basée sur les dépendances et basée sur l’heuristique. L’approche basée sur les dossiers est simple mais peut manquer des erreurs ; l’approche basée sur les dépendances est plus exhaustive mais peut sur-tester ; l’approche basée sur l’heuristique optimise la sélection des tests avec des règles personnalisées, en équilibrant vitesse et exhaustivité. L’outil de construction Mill prend en charge nativement les tests sélectifs basés sur les dépendances, améliorant considérablement l’efficacité du CI. Cependant, sa combinaison avec des méthodes heuristiques optimise encore davantage l’équilibre entre vitesse et couverture des tests.

Le problème Zombocom : De « tout » à « quelque chose de spécifique » dans le développement logiciel

2024-12-29
Le problème Zombocom : De « tout » à « quelque chose de spécifique » dans le développement logiciel

Cet article explore le « problème Zombocom » – l’échec de nombreuses plateformes low-code/no-code, super applications, etc., en raison de leur incapacité à répondre aux besoins spécifiques des utilisateurs. L’auteur soutient que le succès repose sur la résolution d’un problème spécifique pour un utilisateur spécifique, en trouvant un ajustement parfait entre le produit et le marché. L’histoire à succès d’Amazon illustre cela : elle a commencé comme une librairie en ligne, s’étendant progressivement à d’autres domaines. De même, Excel a réussi parce qu’il ciblait initialement les propriétaires de petites entreprises et les comptables. L’auteur souligne que les plateformes doivent émerger de produits, et non l’inverse ; il faut créer d’abord des produits excellents et autonomes, puis envisager la plateforme. En fin de compte, l’auteur conclut que la clé du succès réside dans la combinaison de la pensée systémique et de la pensée produit — comprendre les opportunités au niveau du système, tout en identifiant le premier meilleur client, transformant ainsi un « produit à usage unique » en une « plateforme ».

Stripe lance silencieusement l'API V2 : Améliorations REST et changement de DX

2024-12-29

Stripe a discrètement lancé son API V2 en octobre, avec un changement des corps de requête codés en formulaire vers JSON et l'introduction d'une pagination de style HATEOAS. L'API V2 vise à améliorer la vitesse et le chargement contrôlé des sous-objets via un paramètre `include`. Une véritable idempotence est également tentée pour mieux gérer les requêtes ayant échoué. Cependant, des améliorations sont encore nécessaires dans l'utilisation des verbes REST et la modélisation des ressources. L'auteur soutient qu'une excellente expérience développeur (DX) repose désormais davantage sur des SDK de haute qualité qu'une API REST parfaite.

Développement

Exécuter des LLMs localement : guide pour les développeurs

2024-12-29
Exécuter des LLMs localement : guide pour les développeurs

Un développeur partage son expérience d’exécution de grands modèles de langage (LLM) sur un ordinateur personnel. À l’aide d’une machine haut de gamme (processeur i9, GPU 4090, 96 Go de RAM), ainsi que d’outils open source tels qu’Ollama et Open WebUI, il a exécuté avec succès plusieurs LLM pour des tâches telles que la complétion de code et les requêtes de notes. L’article détaille le matériel, les logiciels, les modèles utilisés et les méthodes de mise à jour, en soulignant les avantages en matière de sécurité des données et de faible latence de l’exécution locale des LLM.

BSD kqueue : une montagne de dette technique

2024-12-29

Cet article explore les différences entre BSD kqueue et Linux epoll dans la programmation réseau. kqueue utilise des filtres d'événements, offrant des fonctionnalités puissantes mais manquant de modularité, ce qui conduit à une accumulation de dette technique. epoll, quant à lui, manipule directement les descripteurs du noyau, offrant une meilleure modularité et permettant une surveillance flexible de diverses ressources du noyau telles que les sockets, les chemins de système de fichiers et les minuteries. L'auteur soutient que la conception d'epoll est supérieure, car elle évite le problème de l'ajout constant de nouveaux types de filtres d'événements à kqueue avec chaque nouvelle fonctionnalité.

Développement programmation réseau

Extension Racket : Intégration d’images dans le code source

2024-12-29
Extension Racket : Intégration d’images dans le code source

Cette bibliothèque Racket permet d’intégrer des images directement dans les fichiers de code source, éliminant ainsi le besoin de références à des fichiers externes. Elle utilise une extension µ reader et un encodage uuencode pour convertir les données d’image en une représentation textuelle, résolvant ainsi le problème des formats de fichiers binaires (comme WXME) créés par les méthodes d’intégration d’images traditionnelles, incompatibles avec des outils comme git. La bibliothèque fournit des fonctions d’empaquetage et de dépaquetage pour convertir facilement les images en texte intégrable et les décoder pour les afficher. Bien que la gestion des erreurs et la mise en forme du texte puissent être améliorées, elle offre un moyen pratique de créer des projets Racket autonomes.

Pourquoi je n'utilise pas la conception pilotée par le domaine

2024-12-29

Tony Marston, développeur logiciel chevronné fort de quarante ans d'expérience dans la création d'applications d'entreprise, explique pourquoi il n'utilise pas la conception pilotée par le domaine (DDD). Il soutient que la DDD sur-valorise la théorie de la conception orientée objet au détriment de la conception de bases de données et de la réutilisabilité du code dans les grands systèmes. Il préfère une architecture en couches avec une classe distincte pour chaque table de base de données, en utilisant l'héritage et le modèle de méthode modèle pour la réutilisation du code. Marston estime que cette approche convient mieux aux projets réels et améliore l'efficacité du développement.

10 outils Django essentiels pour améliorer les performances, la sécurité et la productivité

2024-12-29

Cet article explore dix outils indispensables pour votre prochain projet Django, couvrant la gestion des dépendances, le profilage des performances et plus encore pour améliorer l'efficacité du développement, la sécurité et les performances. De Poetry pour la gestion des dépendances à Silk pour le profilage des performances, chaque outil — y compris Django Extensions, Django REST Framework, djangorestframework-camel-case, Django Storages, django-simple-history, django-otp, Celery et Gunicorn avec les workers Uvicorn — est expliqué avec des comparaisons à des alternatives telles que Pipenv, FastAPI et django-reversion. Ces outils aident à construire des applications Django plus rapides, plus sécurisées et plus efficaces.

Développement Outils

SQLite3 : Le héros discret des bases de données

2024-12-29

SQLite3 est une base de données embarquée légère et puissante qui gère silencieusement les données pour des milliards de déploiements. Contrairement à ses homologues plus complexes et bruyants, SQLite3 fonctionne comme un seul fichier, sans nécessiter de configuration de serveur. Il possède une fonctionnalité SQL complète, surpassant la vitesse d'E/S de fichiers directe et gérant des bases de données jusqu'à 281 téraoctets. Des téléphones aux sites Web, sa stabilité, sa facilité d'utilisation et ses fonctionnalités robustes en font un choix idéal pour de nombreux projets, en particulier ceux ayant des besoins de données modérés ou des exigences de gestion de bases de données plus simples.

Projet open source libsearch sur GitHub : Recherche textuelle intégrale sans index pour JavaScript

2024-12-29
Projet open source libsearch sur GitHub : Recherche textuelle intégrale sans index pour JavaScript

libsearch est une bibliothèque de recherche textuelle intégrale en JavaScript open source sur GitHub qui permet des recherches de texte rapides sans nécessiter d'index pré-construit. Elle exploite le moteur d'expressions régulières hautement optimisé des moteurs JavaScript modernes, transformant les chaînes de requête en filtres d'expressions régulières pour la recherche et utilisant un algorithme TF-IDF approximatif pour le classement. Cette bibliothèque convient aux applications simples qui ne nécessitent pas d'indexation complexe, particulièrement utile pour le prototypage rapide et les petites applications web.

La revanche du programmeur : les tribulations d’exécuter HelloWorld sur z/OS

2024-12-29
La revanche du programmeur : les tribulations d’exécuter HelloWorld sur z/OS

Une programmeuse, autrefois dédaigneuse de l’interaction avec le système d’exploitation en école doctorale, s’est retrouvée aux prises avec le système z/OS d’IBM des années plus tard pour un article de blog. z/OS, très différent des environnements modernes d’ingénierie logicielle, a présenté de nombreux défis avec son interface textuelle, ses scripts JCL et les conventions de nommage uniques d’IBM. L’article détaille ses difficultés dans la création de fichiers (jeux de données), l’utilisation de l’éditeur ISPF, l’allocation de jeux de données, la compilation, la liaison, le chargement et la gestion de la sortie avec SPOOL. Il partage des conseils pratiques et des leçons apprises, un témoignage des défis liés au travail avec des systèmes hérités.

Développement

Application de simulation de fluide WebGL lancée : découvrez des effets de fluide réalistes !

2024-12-29
Application de simulation de fluide WebGL lancée : découvrez des effets de fluide réalistes !

L'application "Try Fluid Simulation" est arrivée ! Grâce à WebGL, elle offre des simulations de fluides incroyablement réalistes directement dans votre navigateur. Découvrez le mouvement hypnotique des liquides, le flux et le reflux des vagues, et bien plus encore, le tout avec des commandes simples. Créez des fluides de formes et de textures variées en quelques clics, et observez la puissance des moteurs physiques en action. Cette application est parfaite pour les développeurs qui apprennent WebGL et les passionnés fascinés par l'infographie et la simulation de fluides. Plongez dans ce monde fascinant des fluides !

Développement Simulation de fluide

resizer2 : Gérez les fenêtres Windows comme dans KDE/i3 avec Win+Souris

2024-12-29
resizer2 : Gérez les fenêtres Windows comme dans KDE/i3 avec Win+Souris

resizer2 est un gestionnaire de fenêtres pour Windows qui vous permet de redimensionner et de déplacer les fenêtres à l'aide de la touche Win + souris, de manière similaire aux gestionnaires de fenêtres KDE ou i3. Il offre des fonctionnalités telles que le déplacement, le redimensionnement, le réglage de l'opacité, la minimisation et la maximisation des fenêtres, même sur plusieurs moniteurs. Bien qu'il nécessite des privilèges d'administrateur pour déplacer les fenêtres du système et présente quelques problèmes connus (comme l'incompatibilité avec certaines applications plein écran), resizer2 offre une expérience de gestion des fenêtres plus efficace et pratique pour les utilisateurs de Windows.

Configuration d'un serveur de messagerie personnel sur OpenBSD

2024-12-29

Cet article fournit un guide étape par étape pour configurer un serveur de messagerie personnel sur OpenBSD. L'auteur détaille le processus, utilisant Opensmtpd, Dovecot, DKIMProxy et Spamd, et propose des solutions aux problèmes courants tels que la limite de fichiers ouverts de Dovecot. Le guide couvre la sélection du serveur, la configuration du système, les mesures de sécurité et les configurations détaillées des composants, ce qui en fait une ressource précieuse pour les utilisateurs ayant une certaine expérience de Linux.

Convoy abandonne UUIDv4 pour les ULID : efficacité et évolutivité à l'ère du big data

2024-12-28

Lors d'une migration de base de données de MongoDB vers Postgres, Convoy a décidé de remplacer UUIDv4 par des ULID comme identificateurs uniques. L'article compare UUIDv4 et ULID, soulignant les avantages d'ULID : tri lexicographique, convivialité des URL et efficacité d'indexation de base de données améliorée, bien que avec des vitesses de génération et d'insertion légèrement plus lentes. Convoy a choisi ULID principalement pour résoudre les problèmes de performances de pagination avec de grands ensembles de données. Bien que les ULID soient marginalement plus lents à générer, les gains de performances, en particulier pour le traitement de données à grande échelle, sont considérés comme utiles. L'article discute également des risques potentiels de fuite d'informations temporelles et des implications pour les données des utilisateurs d'ULID, et mentionne brièvement l'adoption future potentielle d'UUIDv7.

Développement

Fish Shell 4.0 : Une réécriture épique de C++ à Rust

2024-12-28

L'équipe de Fish shell a accompli un projet gigantesque : la réécriture de Fish shell de C++ à Rust en près de deux ans. Face aux limitations des outils C++, aux différences entre compilateurs et plateformes, à l'ergonomie et à la sécurité des threads, l'équipe a opté pour Rust afin d'améliorer les performances, la sécurité et l'expérience des développeurs. En utilisant une approche de type « Navire de Thésée », les composants ont été remplacés progressivement, assurant la stabilité du processus. Malgré quelques défis, tels que des problèmes de compatibilité avec autocxx, l'équipe a réussi à sortir la version bêta de Fish 4.0, avec des améliorations de performances, de nouvelles fonctionnalités et des versions statiques plus faciles à installer.

Développement

Libero : Libérez votre potentiel de programmation !

2024-12-28

Libero, un outil logiciel gratuit d'iMatix, permet aux programmeurs d'écrire de meilleurs programmes. Il utilise des diagrammes d'état visuels pour la conception de programmes, prend en charge plusieurs langages (y compris C, Java, PHP) et génère des frameworks de programmes pour un prototypage rapide. Basé sur la licence publique générale GNU, le code source de Libero est ouvert et librement disponible pour utilisation et amélioration. Des licences commerciales sont disponibles pour le support et les mises à jour, mais le cœur de Libero reste gratuit.

Développement outil de programmation

Phi-3-Mini de Microsoft : un modèle LLM léger pour un développement amélioré

2024-12-28
Phi-3-Mini de Microsoft : un modèle LLM léger pour un développement amélioré

Microsoft a dévoilé Phi-3-Mini, un modèle linguistique léger offrant des performances similaires à GPT-3.5 sur des appareils aux ressources limitées. Cet article explore ses points forts, notamment ses robustes capacités de raisonnement et de codage, et son intégration transparente avec des outils tels qu'Ollama et Pieces. L'exécution de Phi-3-Mini localement via Ollama, combinée à Pieces pour la gestion des extraits de code, rationalise la génération et la refactorisation de code, augmentant ainsi la productivité des développeurs. Bien que le dépassement de contexte reste un problème avec les longs textes, la nature légère de Phi-3-Mini et ses puissantes fonctionnalités en font un atout précieux dans le développement de l'IA.

Développement modèle IA

Le parcours d'un ingénieur avec Forth : De la fascination à l'abandon

2024-12-28

Cet article relate l'expérience d'un ingénieur apprenant et utilisant le langage de programmation Forth. Initialement fasciné par la concision et l'extensibilité de Forth, l'auteur a plongé dans le code source de pForth, s'émerveillant de sa capacité d'auto-modification à la compilation. Cependant, dans des projets réels, l'auteur a constaté que Forth convenait mieux au calcul numérique, rencontrant des difficultés avec des tâches telles que le traitement de texte. Lors de la conception d'un système embarqué personnalisé, l'auteur a utilisé Forth pour concevoir l'ensemble d'instructions de l'unité centrale du système, mais a finalement trouvé C plus efficace et a abandonné Forth. L'auteur conclut que Forth est idéal pour les ingénieurs minimalistes recherchant une efficacité extrême, tandis que lui-même préfère une approche plus pragmatique, optant pour des langages plus largement utilisés.

Développement

Langage de programmation Unicon : une extension et une amélioration d’Icon

2024-12-28

Unicon est un langage de programmation puissant qui étend et améliore le langage de programmation Icon. Il hérite de nombreux atouts d’Icon, tels qu’un code concis, de puissantes capacités de traitement de chaînes de caractères et une évaluation orientée vers les objectifs, tout en ajoutant des fonctionnalités modernes telles que la programmation orientée objet, une couche POSIX et des capacités de réseau. Unicon prend en charge plusieurs paradigmes de programmation, notamment impératif, procédural, concurrent et orienté objet, et possède un riche ensemble de fonctions intégrées et une bibliothèque graphique puissante. Ce document détaille la syntaxe, la sémantique, les fonctionnalités et les méthodes d’installation d’Unicon, et fournit de nombreux exemples de code.

Développement

Un développeur automatise son processus de candidature, envoie 250 candidatures en 20 minutes

2024-12-28
Un développeur automatise son processus de candidature, envoie 250 candidatures en 20 minutes

Fatigué de la recherche d'emploi répétitive, un développeur a créé un système automatisé qui a envoyé 250 candidatures en seulement 20 minutes – et a reçu une offre d'emploi avant même de terminer le projet ! Le système utilise des scripts Python et des grands modèles linguistiques (LLM) pour extraire les offres d'emploi, analyser les données et générer des lettres de motivation personnalisées. Il inclut également des fonctionnalités d'envoi et de suivi des e-mails pour éviter les filtres anti-spam. Ceci est la première partie ; la deuxième partie détaille le raffinement et les améliorations du système.

Développement recherche d'emploi

EmacsConf 2024 : Une conférence en ligne fluide et efficace

2024-12-28

EmacsConf 2024 s'est terminée avec succès ! Cet article, écrit par Sacha Chua, revient sur la préparation, l'exécution et les leçons apprises lors de la conférence. De l'appel à propositions aux présentations finales, les organisateurs ont habilement utilisé des outils d'automatisation (mode Org, emacsconf-mail.el, Ansible, etc.) pour améliorer l'efficacité et ont mis à profit des technologies telles que BigBlueButton et WhisperX pour une expérience fluide. Bien que des défis techniques (configuration du serveur BBB, synchronisation audio) soient apparus, ils ont été résolus efficacement. Sacha partage des informations sur la gestion du temps, la coordination des bénévoles et les améliorations futures, démontrant son dévouement à la communauté open source.

Développement conférence en ligne

Vous voulez coder en Java avec Neovim ?

2024-12-28

Cet article explique comment développer efficacement du code Java dans l'éditeur Neovim. L'auteur partage son expérience positive en utilisant Neovim pour Java au travail, en recommandant JDTLS comme serveur LSP et nvim-java ou nvim-jdtls comme plugins Neovim. L'article explique en détail la configuration de JDTLS, y compris les configurations de débogage et de test, et fournit un exemple de configuration personnelle avec des fonctionnalités de codelens et de débogueur. Même si vous n'êtes pas un fervent partisan de Neovim, vous pouvez apprendre des techniques précieuses de développement Java.

Développement Développement Java

Sonair accélère le développement de son capteur ultrasonore 3D grâce à Rust

2024-12-28
Sonair accélère le développement de son capteur ultrasonore 3D grâce à Rust

Sonair a utilisé le langage de programmation Rust pour accélérer considérablement le développement de son capteur ultrasonore 3D révolutionnaire. L'article détaille les raisons du choix de Rust, notamment sa vitesse, sa sécurité et son écosystème robuste. Malgré le manque d'expérience initiale de l'équipe avec Rust, ils l'ont trouvé étonnamment facile à apprendre, et son système de types fort et son vérificateur d'emprunts les ont aidés à écrire un code plus sûr et plus fiable. Sonair utilise Rust pour la production et Python pour le prototypage d'algorithmes, créant ainsi un flux de travail efficace. Finalement, Sonair vise à être parmi les premiers à déployer une implémentation Rust certifiée pour la sécurité, établissant ainsi une nouvelle norme pour la sécurité fonctionnelle dans les systèmes embarqués.

Scrapscript : Un langage de programmation compact sérialisé avec Msgpack

2024-12-28
Scrapscript : Un langage de programmation compact sérialisé avec Msgpack

Scrapscript est un nouveau langage de programmation qui compile les programmes en « fragments plats » au format Msgpack, permettant une transmission et un stockage efficaces sur le réseau. Utilisant la notation polonaise inverse et des opérateurs personnalisés, Scrapscript prend en charge différents types de données et opérations, et est interopérable avec plusieurs langages. Sa nature compacte le rend idéal pour les environnements à bande passante limitée et offre des avantages potentiels en matière de hachage de code et d'optimisation.

Développement sérialisation
1 2 198 199 200 202 204 205 206 214 215