Journal Ecrire un moteur d'échecs surhumain - Partie 2

Posté par  .
Étiquettes : aucune
11
5
oct.
2026

Bonjour tout le monde,

Pour celles et ceux qui n'ont pas lu mon précédent journal, j'écris un moteur d'échecs à partir de zéro, en l'améliorant progressivement, et avec l'objectif de le rendre plus fort que n'importe quel humain.

Depuis le dernier journal, j'ai commencé à coder, et il a désormais les fonctionnalités suivantes :

  • Génération des coups pseudo-légaux et vérification des échecs1 (le principe de base d'un moteur classique est de générer tous les coups légaux, puis de (…)

Journal Rechercher des fichiers CSV (sans IA)

Posté par  .
Étiquettes : aucune
20
3
oct.
2026

Voilà un court journal pour vous parler d'un outil que je trouve à la fois excellent et extrêmement utile, à savoir DuckDB.

DuckDB est une base de données opensource, analytique, embarquée, orientée colonne et interopérable.

Si je prends mot par mot :

  • opensource : distribuée sous licence MIT

  • analytique : optimisée pour les requêtes analytiques (typiquement faire des aggrégats - pour l'exemple le plus banal, calculer le chiffre d'affaire par mois à partir d'une table factures), aux dépens des (…)

Journal Ecrire un moteur d'échecs surhumain - Partie 1

Posté par  .
Étiquettes :
17
27
sept.
2026

Bonjour Nal,

Je me suis dit qu'il serait intéressant d'écrire un moteur d'échecs capable de battre n'importe quel humain. Pourquoi ?

  • le résultat est impressionnant
  • c'est difficile mais réalisable
  • et surtout, c'est instructif

A ce stade, je n'ai pas commencé à coder le moteur cible (mais j'ai codé un prototype). Je vais vous parler de mes choix et vous donner un peu de contexte sur les moteurs d'échecs.

Les types de moteurs d'échecs

Aujourd'hui il existe deux types de moteur (…)

Journal Le TapTempo du web, mais plus rapide

Posté par  .
Étiquettes :
15
19
juin
2022

spacefox a lancé dans ce journal un "concours" d'implémentation d'un programme dans divers langages. Le but est d'écrire un serveur HTTP qui retourne une redirection vers une page aléatoire : https://avatar.spacefox.fr/Renard-$random.png.

Pas mal d'implémentations ont déjà été proposées, je vais essayer à mon tour en essayer 4 :

  • Deno, pour découvrir
  • Node.js, pour avoir une référence par rapport à Deno
  • nginx (ngx_http_lua_module) et Varnish, car ce sont deux outils qu'on utiliserait dans la vraie vie pour implémenter le programme.
(…)

Journal recherche-totoz en JavaScript

Posté par  .
Étiquettes : aucune
8
30
nov.
2018

En discutant avec plusieurs personnes, j'ai constaté qu'ils pensaient que JavaScript était encore pénible à utiliser, en particulier en ce qui concerne l'appel d'APIs asynchrones et le "callback hell".

Pour illustrer le sujet, j'ai fait un petit programme qui recherche des totoz sur totoz.eu et affiche leur nom sur le terminal.

Le programme doit :

Ecrire le programme ne présente aucune difficulté, mais (…)

Journal Non, l'inférence de types n'est pas du typage faible. Oui, elle rend les programmes plus lisibles

Posté par  .
Étiquettes : aucune
41
21
nov.
2018

En lisant le journal sur la sortie de JDK 10 qui mentionnait notamment l'ajout d'une inférence de type sommaire, j'ai vu qu'il y avait une mauvaise compréhension et un fort rejet de ce concept.

Ça m'a bien surpris car je trouve au contraire l'inférence de types géniale : non seulement elle permet de bénéficier d'un langage fortement typé sans taper des types à rallonge partout, mais aussi elle rend la lecture des programmes bien plus facile (et je ne parle (…)

Journal Vérifiez vos types avec TypeScript et io-ts

Posté par  .
Étiquettes : aucune
16
11
sept.
2018

TL,DR : avec TypeScript et io-ts, on peut passer d'un programme JavaScript court et correct, mais fragile et difficile à maintenir, à un programme facile à refactorer et robuste contre les modifications externes inattendues, rien qu'en ajoutant une définition de type et un if.

TL,DR bis : vous pouvez regarder le premier et le dernier exemple de code du journal pour vous faire une idée.

JavaScript c'est quoi ?

JavaScript est un langage au typage dynamique et faible.

Pour décrire (…)

Journal UPSERT dans PostgreSQL ça déchire

Posté par  .
Étiquettes :
30
7
sept.
2018

UPSERT, c'est quoi ?

Comme son nom l'indique, UPSERT est un mélange de la mise à jour (UPDATE) et de l'insertion (INSERT). Ça consiste à insérer un enregistrement, et, s'il existe, à le mettre à jour, en une seule commande.

L'intérêt "de base" de cette commande est lié au parallélisme, mais on verra juste après qu'elle est aussi très pratique.

Le parallélisme
Avant UPSERT, il fallait utiliser plusieurs commandes, par exemple :

  1. vérifier si les enregistrements existent
  2. insérer les enregistrements (…)