Gestion de paquets et DevOps avec Nix, tour d’horizon sur un cas concret

Posté par  (site Web personnel) . Édité par ZeroHeure, Davy Defaud, Ysabeau et palm123. Modéré par Ysabeau. Licence CC By‑SA.
26
24
jan.
2020
Administration système

Nix et GNU Guix sont des gestionnaires de paquets « fonctionnels », au sens de la programmation fonctionnelle. Cette approche de la gestion de paquets est très différente de l’approche habituellement utilisée par les systèmes GNU/Linux ou BSD, à base de collections de ports ou de dépôts de paquets.

Cette approche fonctionnelle apporte de nombreux avantages. Non seulement, elle permet de fournir une gestion de paquets fiable, reproductible, multi‑version et multi‑utilisateur, mais elle apporte également de nombreuses fonctionnalités supplémentaires : gestion d’un environnement de développement, empaquetage décentralisé, construction d’images Docker ou de machines virtuelles, personnalisation de tout l’environnement logiciel, etc.

Cet article part d’un projet de code (un serveur Web) et illustre progressivement différentes fonctionnalités de Nix intéressantes pour le développeur, l’empaqueteur et l’administrateur système. Les exemples sont présentés ici sous NixOS (la distribution GNU/Linux basée sur Nix), mais devraient être utilisables également avec l’outil Nix installé sur une distribution GNU/Linux classique, ou avec GNU Guix.

Gestion de paquets évoluée avec Nix : cachix, overlays et home‑manager

Posté par  (site Web personnel) . Édité par MmeQuignon, Davy Defaud, ZeroHeure, Guillaum et palm123. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
39
25
nov.
2019
Administration système

Nix est un gestionnaire de paquets dont les débuts remontent à 2003. Il a pour but de rendre la gestion de paquets fiable, reproductible et personnalisable. Il permet notamment de faire des mises à jour atomiques, d’annuler des mises à jour, d’installer des multiples versions d’un même paquet, de définir précisémment des environnements logiciels… Il peut être installé sur n’importe quelle distribution GNU/Linux et sur macOS. Enfin, Nix a également inspiré un projet assez similaire : GNU Guix.

De nombreux outils ont été développés sur la base de Nix : la logithèque Nixpkgs, la distribution GNU/Linux NixOS, l’outil de déploiement de machines Nixops, le système de construction et de cache de paquets binaires Hydra, l’outil de construction d’images Docker Docker Tools, etc.

Cette dépêche présente trois outils très pratiques pour gérer son environnement utilisateur : un service de cache de paquets binaires (Cachix), un outil de personnalisation de la logithèque (Overlays) et un outil de configuration de l’environnement utilisateur (home‑manager).

Développement Web « fullstack », application de dessin collaboratif

Posté par  (site Web personnel) . Édité par tankey, Davy Defaud, palm123, ZeroHeure et Bruno Michel. Modéré par Pierre Jarillon. Licence CC By‑SA.
Étiquettes : aucune
43
6
mar.
2019
Technologie

Une application Web peut être implémentée selon différentes architectures mais comporte généralement une partie client et une partie serveur. De nombreux langages proposent des cadriciels pour implémenter la partie serveur. En revanche, pour la partie client, seuls les langages HTML, CSS et JavaScript sont gérés directement par les navigateurs. Certains outils permettent cependant d’écrire le code client dans un autre langage puis de « transpiler » vers du code JavaScript compréhensible par un navigateur. On peut alors coder toute une application (partie client et partie serveur) avec un seul langage, grâce à ce genre de cadriciel « fullstack ».


N. D. M. : Cette dépêche détaille le développement d’une application Web permettant de faire du dessin collaboratif. Les codes client et serveur sont en JavaScript dans la première partie, puis en Haskell « isomorphique » dans la seconde et, enfin, en C++ « basé widgets ».

Comparaison de technologies Web pour implémenter une application de dessin basique

Posté par  (site Web personnel) . Édité par Davy Defaud, ZeroHeure, Julien Jorge, Xavier Claude, palm123, Nÿco et tankey. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
60
18
déc.
2018
Internet

Les applications Web actuelles tendent à réaliser une grande part des traitements en frontal (front‐end), c’est‐à‐dire du côté client, et à réduire au maximum la partie côté serveur (back‐end). Un exemple classique est l’application mono‐page (Single‐Page Application), où la gestion de l’interface et des données est réalisée principalement côté client avec, quand c’est nécessaire, des requêtes serveurs (AJAX, WebSockets…). Pour implémenter ce genre d’applications, on utilise généralement un cadriciel frontal comme AngularJS, Vue.js, React/Redux… Ces cadriciels proposent une architecture de base (MVC, flux…) qui permet d’implémenter facilement une application classique de présentation et de manipulation de données.

L’objectif de cet article est de comparer quelques technologies pour réaliser une application un peu plus interactive : une application de dessin basique. Les technologies considérées ici sont JavaScript (sans bibliothèque), Haskell Miso (cadriciel frontal), C++ Wt (cadriciel fullstack basé widgets) et WebAssembly.

Quelques cadriciels Web C++ (2/2)

Posté par  (site Web personnel) . Édité par Davy Defaud, Benoît Sibaud, ZeroHeure, tankey, Xavier Claude et palm123. Modéré par patrick_g. Licence CC By‑SA.
Étiquettes :
38
12
déc.
2018
C et C++

Actuellement, il existe de nombreux langages et cadriciels intéressants pour le développement Web back‐end. Dans ce domaine, le C++ n’est pas le langage le plus à la mode, mais il possède cependant des atouts intéressants. En effet, le C++ possède de nombreuses bibliothèques (dont des cadriciels Web), il est réputé pour ses performances et, enfin, ses dernières normes le rendent plus agréable à utiliser.

L’objectif de cet article est de donner un aperçu des outils C++ disponibles pour le développement Web back‐end, à partir d’un exemple d’application. Les codes sources présentés ici sont disponibles sur ce dépôt Git. Les différents cadriciels utilisés sont résumés en annexe (partie 2). Enfin, une liste de bibliothèques C++ est disponible sur Awesome C++.

Partie 2 : les cadriciels Web.

Quelques cadriciels Web C++ (1/2)

Posté par  (site Web personnel) . Édité par Davy Defaud, ZeroHeure, Julien Jorge, palm123, Benoît Sibaud, tankey et Xavier Claude. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
34
9
déc.
2018
C et C++

Actuellement, il existe de nombreux langages et cadriciels (frameworks) intéressants pour le développement Web côté serveur. Dans ce domaine, le C++ n’est pas le langage le plus à la mode, mais il possède cependant des atouts intéressants. En effet, le C++ dispose de nombreuses bibliothèques (dont des cadriciels Web), il est réputé pour ses performances, enfin ses dernières normes le rendent plus agréable à utiliser.

L’objectif de cet article est de donner un aperçu des outils C++ disponibles pour le développement Web back‐end, à partir d’un exemple d’application. Les codes sources présentés ici sont disponibles sur ce dépôt Git. Les différents cadriciels utilisés sont résumés en annexe (partie 2). Enfin, une liste de bibliothèques C++ est disponible sur Awesome C++.

Partie 1 : exemple d’application, génération de HTML et accès à une base de données.

Déployer une application Web C++ sur Heroku avec Docker et Nix

Posté par  (site Web personnel) . Édité par ZeroHeure, Davy Defaud, Nÿco et palm123. Modéré par ZeroHeure. Licence CC By‑SA.
Étiquettes :
30
15
nov.
2018
Communauté

Les services de plate‐forme (PaaS) comme Heroku permettent de déployer des applications Web écrites dans des langages comme PHP, Ruby, Java… Cependant, déployer des applications C++ est plus compliqué (portabilité de l’interface binaire ABI, gestion des dépendances, etc.). Cette article présente plusieurs solutions pour déployer des applications Web C++ sur Heroku, en utilisant des images Docker et le gestionnaire de paquet Nix.

Développement Web frontend en Haskell, Elm et Purescript

Posté par  (site Web personnel) . Édité par Benoît Sibaud, Davy Defaud et palm123. Modéré par Benoît Sibaud. Licence CC By‑SA.
Étiquettes :
46
19
août
2018
Programmation fonctionnelle

Actuellement, le développement Web côté client (frontend) est très souvent réalisé en JavaScript ou dans des langages dérivés comme TypeScript. Il existe cependant d’autres outils intéressants, basés sur des langages de programmation fonctionnelle, qui permettent notamment d’éviter de nombreuses erreurs lors de l’exécution sur le navigateur.

L’objectif de cette dépêche est de rappeler quelques généralités sur le développement Web frontend, et de présenter les outils Elm, Purescript, Miso et Reflex, à partir d’un exemple d’application (galerie d’images fournie via une API Web).

Attention : ceci n’est pas une étude rigoureuse et avancée mais juste un petit retour de petite expérience.

Voir également le dépôt de code de l’exemple et une présentation en vidéo.

Nix pour les développeurs

Posté par  (site Web personnel) . Édité par Xavier Claude, Benoît Sibaud, tankey, Davy Defaud, ZeroHeure et palm123. Modéré par Xavier Claude. Licence CC By‑SA.
Étiquettes :
53
6
juil.
2017
Technologie

Nix est un gestionnaire de paquets « fonctionnel » (basé sur des fonctions, sans effet de bord). Cette caractéristique apporte des avantages indéniables, notamment de pouvoir mettre en place des environnements logiciels isolés, reproductibles et composables. Ceci peut être très utile à un administrateur système mais également à un développeur.

On trouve pas mal d’informations sur l’écosystème Nix et son utilisation, ainsi que des retours d’expérience des utilisateurs. En revanche, les documents à destination des développeurs sont moins nombreux et se limitent souvent à l’utilisation ou à la mise en place d’environnements de développement simples.

Cet article a pour objectif d’illustrer l’intérêt de Nix pour un développeur dans des cas simples et « un peu moins simples ». Pour cela, il se base sur un projet d’exemple en C++ et en Python, mais Nix peut également être utilisé pour d’autres langages. Je ne suis pas un expert en Nix, donc n’hésitez pas à proposer vos remarques ou améliorations dans les commentaires ou sur le dépôt GitHub du projet d’exemple.

L’heure du test — fork 1 — Void (Linux)

Posté par  (site Web personnel) . Édité par Davy Defaud, ZeroHeure, Nils Ratusznik, Benoît Sibaud, Florent Zara et palm123. Modéré par Benoît Sibaud. Licence CC By‑SA.
Étiquettes :
41
6
mai
2017
Distribution

Voici un tour d’horizon d’une distribution peu connue mais néanmoins intéressante : Void (Linux) !


Void est une distribution indépendante, créée de zéro (from scratch, pas une divergence de Debian ou autres). Elle est développée par une communauté de volontaires et vous pouvez facilement y contribuer via ses dépôts sur GitHub. C’est une distribution avec mise à jour en continu (rolling‐release), tournée vers les ordinateurs de bureau et qui se veut légère et performante.


NdM. : Cette dépêche est inspirée par L’heure du test — épisode 1 — NixOS postée par gusterhack. Si vous aussi vous voulez parler de votre distribution ou logiciel libre préféré, n’hésitez pas.