Tous les articles
-
Arrêter de déboguer avec des Logger.info : iex, IO.inspect, dbg, pry
Le réflexe Logger.info(inspect(truc)) a trois défauts qu'on ne voit qu'après avoir essayé autre chose. Petite échelle d'outils, du shell interactif au point d'arrêt, mesurée sur Elixir 1.19.5. -
La liste chaînée n'est pas le mauvais outil, c'est la matière première
Une file d'attente construite avec deux listes bat la liste native d'un facteur 2 600. Un zipper, d'un facteur 10 000. Aucune de ces structures ne remplace la liste : elles la réarrangent. -
Des tests concurrents avec une base de données : comment, et jusqu'où
async: true est possible en Elixir là où d'autres langages y renoncent. La sandbox Ecto explique pourquoi — et connaître ses limites évite le test vert qui masque un bug de production. -
« Let it crash » ne veut pas dire ce que vous croyez
La formule la plus citée d'Elixir est aussi la plus mal comprise. Elle ne dit pas d'ignorer les erreurs : elle dit de séparer le travail de la reprise. Avec ce que ça coûte, mesuré. -
Les hooks JavaScript de LiveView : la frontière et ses règles
Écrire son premier hook, comprendre ses six moments de vie, faire circuler l'information dans les deux sens — et surtout répondre à la seule question qui compte : qui possède ce morceau de DOM ? -
Les pannes silencieuses de LiveView
Trois défaillances dont l'information se perd entre le navigateur et le serveur — l'une ne laisse aucune trace, une autre accuse le mauvais module, et la première laisse même les tests au vert. -
L'immutabilité ne coûte pas ce que vous croyez
Si toute modification crée une nouvelle valeur, comment un langage immuable peut-il être rapide ? Réponse mesurée : parce que rien n'est copié. Le partage structurel, ses limites, et là où l'immutabilité coûte vraiment. -
Structurer un projet Elixir : ce que le compilateur ne vérifie pas
Presque toutes les conventions d'un projet Elixir sont facultatives — rien ne casse si vous les ignorez. Sauf à un endroit, où Elixir refuse de démarrer. Voici lequel, et pourquoi les autres méritent quand même d'être suivies. -
Brancher un notebook sur une application qui tourne
Les journaux ne disent pas tout, et un iex distant s'oublie à mesure qu'on tape. Livebook sait se connecter à un nœud Elixir vivant — voici les deux mécanismes, ce qu'ils permettent, et les précautions qu'ils exigent. -
Un outil interne en trente lignes, dans un notebook
Le petit script qu'on écrit dans iex, qu'on lit une fois et qu'on reperd. Livebook en fait un outil qui se garde, se partage et s'utilise sans lire le code — voici comment, et ce que ça ne remplace pas. -
Le HTML en base de données est un piège
Stocker la sortie d'un éditeur de texte riche paraît évident, jusqu'au jour où il faut interroger, migrer, ou signer une URL. Ce qui change quand on stocke l'arbre du document plutôt que son rendu. -
Aja : quand la liste chaînée n'est plus le bon outil
Les listes Elixir sont des listes chaînées : accéder au 5000e élément coûte 5000 sauts, et y ajouter à la fin recopie tout. Aja apporte des vecteurs et des maps ordonnées — voici quand ça vaut le détour, et quand ça n'en vaut pas. -
Composer des requêtes Ecto : la fonction qui prend une query et en renvoie une
Une requête Ecto est une donnée, pas une chaîne SQL. Ce seul fait permet des filtres réutilisables et testables — à condition de connaître le piège des bindings positionnels. -
Lire une stacktrace Elixir sans paniquer
Une erreur Elixir suit toujours la même structure : le type dit pourquoi, la trace dit où. Anatomie, les sept erreurs qui couvrent presque tout, et le cas tordu du GenServer qui meurt. -
Les streams LiveView : arrêter de garder 500 lignes en mémoire
Un assign qui contient une liste, c'est cette liste conservée sur le serveur pour chaque visiteur connecté. Les streams déplacent la collection dans le DOM — avec quelques contreparties qu'il vaut mieux connaître avant. -
Ecto.Multi : composer une transaction sans se noyer dans les with
Enchaîner plusieurs écritures en base avec Ecto.Multi plutôt qu'avec des with imbriqués : composition, rollback automatique, et des erreurs qu'on peut enfin exploiter.