Journal Les rollbacks avec Manjaro, Btrs et Timeshift

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
25
5
déc.
2020

D'après son site web, Manjaro est un système d'exploitation "pour tout le monde" et qui permet "d'apprécier la simplicité". En effet, comme il s'agit, entre autres, d'une distribution Linux en rolling release, l'utilisateur n'aura jamais à faire de montée de version majeure. Cependant, en pratique, on trouve quelques témoignages d'utilisateurs pour qui une mise-à-jour "a tout cassé" et ne permettait pas de retrouver un système exploitable facilement. Si ceci ne prouve pas grand chose sur la stabilité réelle de Manjaro (…)

Journal NixOS vs Guix System, premiers pas

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
23
3
déc.
2020

NixOS et Guix System sont des distributions Linux basées sur des gestionnaires de paquets utilisant une approche fonctionnelle (Nix et GNU Guix). Cette approche permet de gérer des environnements logiciels reproductibles et composables, ce qui est très pratique pour un développeur ou pour un administrateur système.

Cet article ne compare pas vraiment NixOS et Guix System mais présente, pour les deux solutions, comment installer le système, le configurer et l'utiliser pour développer. L'idée est plutôt d'aider un utilisateur de l'un (…)

Journal Les rollbacks avec NixOS, ou comment casser son système

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
16
23
nov.
2020

Voir aussi : video youtube - video peertube - article de blog

Une distribution Linux "rolling release" permet de faire évoluer progressivement son système. Ceci permet d'avoir des logiciels plus à jour et surtout d'éviter les montées de version majeure.

Cependant, le rolling release augmente le risque de "mise-à-jour qui casse tout". Une solution classique à ce risque est de lire les news de mise-à-jour, faire un snapshot avec Timeshift, lancer la mise-à-jour après avoir tirer une carte chance et (…)

Journal Installer Chromium sur Ubuntu via Nix

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes : aucune
10
22
nov.
2020

Ubuntu permet d'installer Chromium via les paquets Snap. Cette méthode ne fait cependant pas l'unanimité si bien que certains préfèrent installer le paquet Debian. Ce post présente une solution alternative : en utilisant Nix.

Voir aussi : video youtube - video peertube - article de blog

C'est quoi Nix ?

Nix est un gestionnaire de paquets, utilisable sur n'importe quelle distribution Linux. Il s'agit d'un outil très puissant qui permet de gérer des environnements logiciels, construire et déployer des (…)

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.
27
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.

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

Posté par  (site Web personnel) . Licence CC By‑SA.
26
23
jan.
2020

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 sytèmes 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 paquet fiable, reproductible, multi-version et multi-utilisateur, mais apporte également de nombreuses fonctionnalités supplémentaires : gestion d'un environnement (…)

Journal Flatpak et Nix

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
18
26
déc.
2019

Flatpak est un "système de construction et de déploiement d'applications de bureau sur Linux". C'est un outil assez similaire à Snap et à AppImage, les fameux "gestionnaires de paquets universels". Ces gestionnaires de paquets sont censés apporter deux avantages principaux :

  • permettre à un utilisateur normal d'installer des logiciels, qui ne sont pas forcément fournis par la logithèque de sa distribution;

  • permettre à un développeur de packager un logiciel facilement pour tout un ensemble de distributions Linux.

Il existe (…)

Journal Configurer VSCode pour Haskell (Debian/Nix/NixOS)

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
14
25
déc.
2019

Comme beaucoup de langages de programmation, Haskell n’a pas d’environnement de développement officiel ni même consensuel. Cependant, il existe différentes configurations classiques : Emacs + Intero/Dante, Vim + Ghcid, IntelliJ-Haskell…

Depuis quelque temps, l’éditeur de texte Visual Studio Code propose un environnement intéressant pour développer en Haskell, notamment couplé à HIE et à Stack. Cette configuration apporte les principales fonctionnalités d’un IDE : coloration syntaxique, navigation de code, compilation, documentation, auto‑complétion… Cependant, l’installation de ces outils n’est pas complètement triviale (…)

Journal Comprendre Go en 5 minutes, en Haskell

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
18
24
déc.
2019

D'après leur réputation, Go et Haskell sont des langages de programmation assez opposés : Go privilégie la simplicité, Haskell l'expressivité. Cependant ces deux langages ne sont pas si éloignés que cela. Plus exactement, les concepts de base de Go se retrouvent, de façon assez ressemblante, en Haskell.

Ce journal reprend, en Haskell, les exemples de code en Go de l'article Comprendre Go en 5 minutes. L'objectif n'est pas de présenter exhaustivement Go ou Haskell, ni de démontrer que l'un (…)

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).

Journal Gérer son environnement utilisateur NixOS, avec Home-manager

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
17
11
nov.
2019

Home-manager est un outil qui permet de gérer son environnement utilisateur : environnement de bureau, thème de fenêtre, thème d'icones, logiciels, paramètres des logiciels, services utilisateur, "dot files"…

Home-manager est prévu pour fonctionner sur la distribution linux NixOS et utilise le gestionnaire de paquets Nix.

code source - vidéo youtube - vidéo peertube

Présentation de home-manager

Pour faire simple, le but de home-manager est de fournir l'équivalent du fichier /etc/nixos/configuration.nix mais pour l'environnement utilisateur (au lieu de l'environnement système) (…)

Journal Étendre ou modifier sa logithèque Nix avec les overlays

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
16
10
nov.
2019

Le gestionnaire de paquets Nix est hautement personnalisable. Pour cela, il reprend le principe de la composition de fonctions : un paquet est en fait une fonction qui indique comment ajouter ou modifier un logiciel à partir d'un environnement logiciel d'entrée.

Ainsi, la logithèque Nix n'est qu'un ensemble de paquets qui peuvent être appliqués pour construire l'environnement logiciel final. Les overlays permettent de modifier les paquets de cet ensemble ou d'en ajouter de nouveaux.

vidéo youtube - vidéo peertube

Principe

(…)

Journal Cachix, un service de cache binaire basé sur Nix

Posté par  (site Web personnel) . Licence CC By‑SA.
Étiquettes :
16
10
nov.
2019

Cachix permet de gérer facilement un cache personnel de paquets binaires. Concrètement, il s'agit d'un service de cloud et d'un logiciel client, le tout basé sur le gestionnaire de paquets Nix. Cachix propose différentes offres, dont une offre gratuite de 10 Go de stockage en accès public.

Quand on utilise la logithèque officielle de Nix, on télécharge des paquets binaires déjà compilés. Nix permet très facilement d'empaqueter des programmes/bibliothèques personnels ou de modifier les paquets officiels. Mais dans (…)

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

Posté par  (site Web personnel) . Édité par bubar, 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 bubar. 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.