Journal Sunday Python Pattern : Une machine à état toute simple

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
29
17
avr.
2022

Bonjour Nal,

Il y a un "design pattern" que je réutilise souvent dans différent langages pour découper la logique métier en plusieurs petit bout de code bien séparés et facilement testable.

Ce design pattern s'apparente très fortement à une machine à état :

  • on a la machine a état qui possède un contexte (des données qui seront manipulées et modifiées par l'exécution de l'algorithme)
  • chaque état va agir sur ce contexte et retourner l'état suivant à exécuter, ou None si (…)

Journal Challenge: Écrire la plus petite implémentation de /bin/true

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
54
7
avr.
2022

Bonjour Nal,

/bin/true est un programme qui ne fait rien et retourne le code de sortie 0.

Par exemple, en C :

int main() {
    return 0;
}

Si on compile ce dernier avec la commande suivante:

$ gcc true.c -o true
$ wc -c true
16464
$ ./true && echo $?
0

On obtient un binaire d'environ 16kb.

Si on pousse plus loin avec la version assembleur:

bits 64
global _start
section .text

_start:
  mov eax
(…)

Journal [LWN] Une porte de sortie pour a.out

Posté par  (site web personnel) . Licence CC By‑SA.
61
24
mar.
2022

Ceci est une traduction de l'article LWN A way out for a.out, rédigé et publié par Jonathan Corbet.

Contrairement à ma précédente tentative, j'ai cette fois ci l'autorisation de l'éditoriat de LWN (cf fin du journal).


Le format d'exécutable a.out date des tout premiers jours de Linux—et même avant. Il n'a pas été utilisé sérieusement depuis plusieurs décennies, mais le support existe toujours dans le noyau Linux et a résisté à toutes les tentatives de suppression. En Janvier (…)

Journal [Letlang] Faire la différence entre un nombre et une quantité

Posté par  (site web personnel) . Licence CC By‑SA.
19
21
mar.
2022

Bonjour Nal,

Je vais encore te parler de Letlang aujourd'hui. Mais cette fois ci, pas de code, plutôt une discussion sur une fonctionnalité que j'aimerais bien rajouter à la syntaxe.

Voici d'abord une petite table des matières de ma série d'articles sur ce projet :

Je suis tombé ce weekend sur ce sujet (sur HackerNews): Please put units in names.

L'idée (…)

Journal Golang, oops you did it again

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
23
15
mar.
2022

C'est donc aujourd'hui que sort officiellement Go 1.18, avec le support tant attendu des Generics.

Naïf que je suis, je me dis :

Cool! On va enfin pouvoir implémenter des types Option et Result pour avoir enfin une gestion d'erreur potable.

Allez, je me lance. On commence par le type Option (ou Maybe Monad pour les intimes).

Tout d'abord, on se créé 2 structures, None et Some[T] :

type None struct {}
type Some[T any]
(…)

Journal [Letlang] Écrire un compilateur en Rust (partie 2)

Posté par  (site web personnel) . Licence CC By‑SA.
20
11
mar.
2022

Bonjour Nal :)

Je suis inspiré en ce moment, du coup je continue ma série sur l'écriture d'un compilateur en Rust. Si tu es intéressé par les précédents articles, les voici :

Dans cette partie, je vais te présenter mes dernières découvertes concernant le parser.

Introduction

Tout d'abord, c'est quoi un parser ?

Google Translate traduit le terme par analyseur. Voilà bonne (…)

Journal [Letlang] Écrire un compilateur en Rust

15
7
mar.
2022

Bonjour Nal,

Il y a quelques temps, je t'ai présenté Letlang, un projet de langage de programmation fonctionnelle.

Il a pour but d'être compilé vers du code natif, avec un système de type strict et expressif basé sur une logique d'ordre supérieur.

Malheureusement, avec le boulot (mission freelance + Kubirds), j'ai pas beaucoup de temps à y consacrer, à part quelques heures par-ci par-là.

L'un des objectifs initiaux de ce langage était d'en faire un langage compilé. Comment (…)

Journal [LKML] Est-ce le moment de supprimer ReiserFS ?

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
34
23
fév.
2022

Ceci est une traduction d'un mail récent sur Linux Kernel Mailing List (LKML pour les intimes) :

https://lkml.org/lkml/2022/2/20/89


Garder ReiserFS dans l'arborescence a certains coûts. Par example, j'aimerai beaucoup supprimer l'argument flags de ->write_begin. On a l'infrastructure en place pour gérer différement AOP_FLAGS_NOFS, mais AOP_FLAG_CONT_EXPAND est toujours présent, utilisé uniquement par ReiserFS.

En parcourant les patchs à ReiserFS au cours des précédentes années, il y a des bugfixs pour quelques rapports syzbot* et changements globaux de l'arborescence. Il (…)

Journal Wordle sans attendre 1 jour

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
8
13
fév.
2022

J'ai succombé au virus Wordle.

Je l'ajoute à mes jeux chronophages comme 2048, Sudoku, Minesweeper, et Solitaire.

Par contre, attendre 1 jour entre chaque partie ? Non c'est pas possible pour les procrastinateurs ça !

Du coup j'ai téléchargé une liste d'environ 2500 mots anglais, et j'ai fait une appli Vue 3 avec Pinia au lieu de VueX que j'utilise habituellement.

HS : Pinia est assez sympa quand on travaille avec TypeScript.

Bon du coup le code que j'ai (…)

Journal Une 20-aine de lignes de code pour le defer de Go en C++

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
21
7
fév.
2022

Bonjour Nal,

Si tu es comme moi, tu détestes Go malgré quelques fonctionnalités géniales et un écosystème vaste et grandissant, qui en font un choix à considérer malgré tes préférences personnelles.

Si tu es comme moi, tu préfères certainement le C++ surtout depuis le C++11. Tu fais d'ailleurs surement du C++20 histoire d'être moderne.

Parmi les fonctionnalités de Go que tu apprécies, il y a le mot clé defer :

func example() error {
  rsrc1, err := CreateResource
(…)

Journal Linux et BusyBox, un duo parfait pour s'amuser

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
54
31
jan.
2022

Bonjour Nal,

Depuis peu, le weekend j'aime bien m'amuser sur des petits projets que je ne compte pas continuer.

Ce weekend, c'était concevoir rapidement un OS bootable basé sur Linux. Mais sans suivre LFS.

Le disque virtuel

Je commence par me créer une petite image disque :

$ qemu-img create ./hd0.img 2G

Puis une table des partitions (à la va vite, une seule partition qui fait tout le disque):

$ cfdisk ./hd0.img

Enfin, je formate le tout en EXT4 (…)

Journal Letlang, encore un nouveau langage de programmation

52
6
jan.
2022

Bonjour Nal,

Cela faisait longtemps que je ne t'avais pas écrit, mais je n'avais pas grand chose de pertinent à dire, tu me pardonneras j'espère.

Aujourd'hui, je vais te parler d'un de mes "side-project", j'ai nommé Letlang.

Si tu as la flemme de tout lire, tu peux aller mettre en favoris le site web https://letlang.dev pour une lecture du soir.

DISCLAIMER: Très peu de code existe pour l'instant, le projet en est à ses balbutiements. Même le design de (…)

Journal SFR rejettent les mails de Framaliste

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
43
24
juin
2021

Bonjour Nal,

Le savais-tu ? SFR balance les mails en provenance de Framaliste en spam.

Moi en tout cas, je ne le savais pas, à vrai dire, je ne me tiens pas beaucoup au courant de ce qui se passe chez eux.

SFR a donc des serveurs pas aux normes qui se contre-fichent de DKIM et compagnie ? Ou acte volontaire ?

J'ose espérer que LinuxFR aura des infos sur le sujet et pourra m'éclairer :)

Ci joint le transcript (…)

Journal Secure User Data : Reprenons le contrôle de nos données

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
18
16
mai
2018

Lorsque l'on développe une application qui nécessite un compte utilisateur, on demande à cet utilisateur des informations à propos de lui afin de créer son compte et lui offrir les services de notre application.

Le minimum requis c'est le nom d'utilisateur et un mot de passe. Mais si on veut vérifier que le compte que l'on créé est bien relié à un être humain, on va demander une adresse e-mail pour envoyer un lien d'activation du compte.

Selon les applications (…)

Journal Projet DIY d'intégration continue auto-hébergée

Posté par  (site web personnel) . Licence CC By‑SA.
24
13
nov.
2017

Alors voilà le topo, je me suis monté une infrastructure auto-hébergée contenant :

  • stockage de fichier (nextcloud)
  • mail (postfix/dovecot/…) et webmail (roundcube)
  • git (gogs)
  • annuaire ldap (openldap) pour tout le monde

Le tout basé sur du container docker, sur un Kimsufi (40Go de disque, 4Go de RAM).

Je voulais exécuter les TU/TF de mes projets (qui sont sur le gogs) sans passer par un service externe (CircleCI, TravisCI, Codeship, …) qui serait potentiellement payant pour mes projets privés.

J'ai (…)