Vue lecture

jq-quest - Apprenez à maîtriser jq sans vous prendre la tête

Si vous avez déjà croisé la route de jq , c'est probablement parce que vous vous la touchez un peu dans le terminal et que vous avez déjà joué avec du format JSON (logs, APIs, config...).

Jq, tout le monde l'adore parce que ça filtre, ça mappe et surtout ça transforme du JSON directement depuis le terminal. Mais la syntaxe de ce truc, aïe aïe aïe, c'est comme faire de la Regex. C'est de l'apprentissage sur le tas surtout. Faut copier coller des trucs en provenance de RIP-StackOverflow ou de ChatGPT-le-sang-de-la-veine. Et le pire c'est que 2 jours après, on a tout oublié !!! Puis lire la doc officielle, m'en parlez pas, c'est comme lire autre chose que mon site... c'est pas le criss de fun ^^.

Heureusement, pour ceux qui veulent vraiment monter en compétence sans s'endormir, il existe jq-quest .

C'est un petit projet sympa hébergé sur Codeberg qui propose une approche "learning by doing" (apprendre en faisant, pour les anglophobes). Au début, je pensais que c'était juste un QCM basique, mais en fait non puisqu'il faut vraiment taper les commandes et se salir les mains.

Pour essayer, suffit de cloner le dépôt, vous lancez le script, et on vous donne un input JSON et l'output attendu. À vous ensuite de trouver la bonne commande jq pour passer de l'un à l'autre.

Il vous faudra juste jq d'installé sur votre machine. Attention par contre, si vous êtes sous Windows, il faudra passer par WSL ou Git Bash, parce que le script .sh ne va pas aimer PowerShell.

Ça s'installe donc en deux secondes comme ceci :

git clone https://codeberg.org/gturri/jq-quest.git
cd jq-quest

Ensuite, vous lancez votre premier exercice :

./jq-quest.sh 1-pretty-print.json

Le script va alors vous afficher l'instruction, le JSON d'entrée et ce qu'il attend en sortie :

INSTRUCTION: Pretty print the json
INPUT: {"k1": "v1", "k2":[1, 3, 7]}
EXPECTED OUTPUT: {
 "k1": "v1",
 "k2": [
 1,
 3,
 7
 ]
}

Vous tapez votre proposition de filtre, et il vous dit si c'est bon ou pas. Pour proposer une solution, suffit de taper :

./jq-quest.sh 1-pretty-print.json 'SOLUTION'

Si vous séchez (et croyez-moi, ça va arriver), vous pouvez demander un indice avec :

./jq-quest.sh 1-pretty-print.json hint

Ou carrément la solution si vous êtes au bout du rouleau :

./jq-quest.sh 1-pretty-print.json solution

Mais rassurez vous, les exercices sont progressifs, ça commence par du "pretty print" basique (le truc qu'on fait tous), puis on attaque les filtres simples, les clés spéciales, les tableaux, et petit à petit on arrive sur des trucs bien plus costauds comme les itérations sur objets, le slicing ou les opérations mathématiques.

Ce genre de tuto interactif c'est top parce que jq, c'est hyper puissant, mais la courbe d'apprentissage est un peu raide au début. Là, en une petite heure, vous pouvez plier les exercices et avoir enfin compris la logique du truc au lieu de tâtonner à chaque fois.

D'ailleurs, si vous aimez ce genre d'outils pour parser de la donnée, je vous rappelle qu'il existe aussi fq pour les fichiers binaires ou encore htmlq pour le HTML . J'aurais pu vous parler d'outils graphiques pour faire ça, mais franchement, rien ne vaut la ligne de commande pour comprendre ce qu'on fait. Et si vous êtes plutôt Python, jetez un oeil à jc qui convertit la sortie des commandes classiques en JSON.

Bref, si vous voulez arrêter de souffrir à chaque fois que vous devez extraire un champ d'un JSON interminable, faites un tour sur jq-quest, ça va vous dérouiller les neurones.

Si vous êtes dev et que ce genre de tuto vous parle, suivez Korben sur LinkedIn pour d'autres découvertes.

Un grand merci à Guillaume pour la découverte.

  •  

LocalPass – Le gestionnaire de mots de passe 100% offline pour le terminal

Hier soir, je suis tombé sur ce gestionnaire de mot de passe clairement conçu pour les puristes et je me suis dit que ça pourrait vous intéresser. Parce que si ça vous casse la tête de devoir confier vos identifiants et autres mots de passes à des services dans le cloud qui ont connu quelques déboires de sécurité ces derniers temps (suivez mon regard... Oh Lastpass, comment ça va ?), j'ai exactement ce qu'il vous faut !

Ça s'appelle LocalPass , c'est open source et surtout c'est conçu pour fonctionner 100% en offline. J'ai testé ça ce matin sur mon laptop et c'est assez simple à utiliser.

Mais avant pour ceux qui se demandent quel est l'intérêt d'un gestionnaire de mots de passe local par rapport à un truc comme Bitwarden ou Dashlane , la réponse est simple : la souveraineté. Bah ouais, c'est logique. Avec LocalPass, vos données ne quittent jamais votre machine. Pas de cloud, pas de synchro mystérieuse, pas de télémétrie. C'est vous, votre fichier chiffré, et c'est tout.

Perso, j'ai longtemps utilisé des solutions cloud pour le confort, mais depuis quelques mois, je cherche à revenir sur des trucs plus locaux pour tout ce qui est critique, du coup LocalPass tombe à pic.

Côté technique, c'est du solide (sur le papier en tout cas) puisque l'outil est développé en Python et utilise Argon2id pour la dérivation de clé (ce qui rend les attaques par force brute bien pénibles pour les méchants) ainsi que AES-GCM pour le chiffrement.

L'utilisation ensuite c'est pas compliqué si vous avez déjà touché à une ligne de commande. D'ailleurs, pour l'installer, un petit coup de pip suffit (sauf si vous n'avez pas Python, là faut l'installer avant hein) :

pip install localpass

Ensuite, vous initialisez votre coffre-fort :

localpass init moncoffre.lp

Et hop, vous pouvez commencer à ajouter vos comptes (je vous laisse aller lire la doc sur le github). C'est un peu comme utiliser KeePass (que j'adore hein, pas de méprise), sauf que l'interface graphique de KeePass... comment dire... elle pique parfois un peu les yeux. Là, avec LocalPass, vous restez dans votre terminal chéri. Vous pouvez lister vos entrées, récupérer un mot de passe ou générer des identifiants sécurisés directement depuis votre shell.

Le truc cool, c'est que même si l'outil est "offline first", LocalPass intègre une fonction (totalement optionnelle et manuelle rassurez-vous) pour vérifier si vos mots de passe ont fuité via l'API de Have I Been Pwned. Mais rassurez-vous, ça utilise la méthode k-anonymity ce qui veut dire que votre mot de passe ne transite jamais en clair. Seul un bout de son hash est envoyé. C'est dnc le compromis idéal entre paranoïa et sécurité active.

Après moi le truc qui m'angoisse un peu avec ces gestionnaires de mots de passe locaux, ce sont les backups. Parce que si vous perdez votre fichier ".lp" ou votre mot de passe maître, c'est game over ca y'a pas de "Mot de passe oublié ?" ici. Donc comme toujours, FAITES DES SAUVEGARDES (sur différentes clé USB chiffrées par exemple que vous stockerez à différents endroits y compris hors de chez vous).

Si vous ne le faites pas, faudra pas venir pleurer après ^^.

Source

  •  

CoreML CLI - Gérez vos modèles Apple sans Xcode !

Si vous bidouillez un peu avec des modèles CoreML sur votre Mac Silicon, vous savez que c'est vite la croix et la misère comme je dis souvent... Car dès qu'il s'agit de tester un truc rapide, faut ouvrir Xcode, pisser du Swift, ou se battre avec des scripts Python... Bref, l'usine à gaz juste pour vérifier une prédiction vite fait.

Hé bien bonne nouvelle les amis, un petit outil en ligne de commande vient de sortir pour nous éviter de trop galérer.

Ça s'appelle coreml-cli et comme son nom l'indique, c'est une interface pour inspecter et lancer vos modèles depuis le terminal. L'objectif c'est de pouvoir manipuler vos fichiers .mlmodel sans jamais avoir besoin de lancer l'IDE d'Apple.

Si vous êtes chaud bouillant, ça s'installe hyper facilement via Homebrew :

brew tap schappim/coreml-cli
brew install coreml-cli

Et une fois que c'est là, vous pouvez TOUT faire. Genre vous voulez voir ce qu'il y a dans un modèle ? Hop, un petit coreml inspect MobileNetV2.mlmodel et vous avez toute la structure, les entrées et les sorties qui s'affichent.

Et pour lancer des prédictions, c'est également très simple plus simple. Par exemple, avec le modèle MobileNet qui détecte les objets présents dans une image, vous lui donnez une image, et avec l'option --json, il vous sort le résultat proprement.

coreml predict MobileNetV2.mlmodel --input photo.jpg --json

Et pour ceux qui veulent automatiser des traitements, le mode "batch" permet de traiter tout un dossier d'images d'un coup. C'est quand même plus rapide que de le faire à la main un par un, comme le ferait un ingé de Perpignan nourri aux graines de chia.

Le développeur a même intégré un outil de benchmark pour mesurer la latence. Ça vous permet de lancer des tests sur le CPU, le GPU ou le fameux Neural Engine d'Apple pour comparer les perfs. C'est le top pour optimiser vos apps avant de les déployer.

Du coup, si vous bossez avec de l'IA locale sur Mac, un peu comme ce qu'on a déjà testé par le passé avec MocoLlamma ou sur de gros clusters Mac Studio comme ce furieux, ce petit binaire risque de vite devenir indispensable dans vos scripts CI/CD.

Amusez-vous bien !

Source

  •  

Wake - L'outil qui donne de la mémoire à Claude Code

Vous utilisez Claude Code et vous passez votre temps à copier-coller vos logs de terminal pour lui donner du contexte ? Du genre, vous lancez une commande, ça se plante comme une merde, et là faut expliquer à l'IA ce qui s'est passé en faisant des screenshots ou du copier-coller à la main.

C'est vite relou mais heureusement, c'est totalement le problème que résout Wake , un petit outil en Rust qui enregistre automatiquement tout ce qui se passe dans votre terminal et le donne en offrande sacrée à Claude Code via le protocole MCP. Du coup, plus besoin de jouer les secrétaires IA, puisque Claudo Code, euuh Claude Code peut interroger votre historique de commandes avec les sorties et le contexte git quand il en a besoin.

Au début, vous lancez wake shell et hop, vous êtes dans une session enregistrée. Ensuite toutes vos commandes, leurs sorties, et même les infos de votre repo git, tout est capturé et stocké localement dans une base SQLite bien planquée dans ~/.wake/. Puis quand vous posez une question à Claude Code, il peut aller piocher dans cet historique pour comprendre ce que vous avez fait.

L'installation se fait en une seule ligne (allez lire le script comme d'hab, hein) :

curl -sSf https://raw.githubusercontent.com/joemckenney/wake/main/install.sh | sh

Après faut ajouter l'init dans votre .zshrc ou .bashrc :

eval "$(wake init zsh)"

Et pour brancher ça sur Claude Code :

claude mcp add --transport stdio --scope user wake-mcp -- wake-mcp

Côté commandes, y'a wake log pour voir l'historique récent, wake search "machin truc" pour fouiller dedans, wake dump pour exporter en markdown et wake annotate "note" si vous voulez ajouter des petites marqueurs pour vous y retrouver plus tard. Le stockage reste en local sur votre machine, et les sorties sont limitées à 1 Mo par commande pour éviter de saturer la base.

Donc si vous êtes le genre de gaillard.e sans peur à laisser Claude piloter votre terminal ou à utiliser plusieurs agents en parallèle , c'est le genre d'outil qui peut vraiment vous faire gagner du temps car là où avant fallait tout expliquer à l'IA, maintenant elle voit directement ce que vous avez fait et pourquoi ça a merdé.

Le projet vient de sortir en v0.1.0, donc c'est encore tout frais. Ça supporte zsh et bash pour le moment. Par contre, fish c'est pas encore au programme.

  •  

Ghostty Config - Configurez Ghostty facilement en GUI

Vous passez vos journées dans un terminal et vous avez craqué pour Ghostty ? Sauf que voilà... éditer un fichier de config à la main, c'est un peu comme remplir et payer sa déclaration d'impôts. On sait qu'on peut le faire, mais on préférerait que quelqu'un d'autre s'en charge.

Du coup, un développeur de la communauté a eu la bonne idée de créer Ghostty Config, une interface web qui permet de configurer son terminal sans toucher à un seul fichier texte. Vous sélectionnez vos options dans des menus déroulants, vous cochez des cases, et hop, ça génère la config toute seule.

Le truc cool c'est que l'outil couvre pas mal de terrain : les polices (avec un playground pour tester en direct), les couleurs, les raccourcis clavier, les curseurs, la transparence... Et des presets communautaires sont prévus pour ceux qui ont la flemme de tout paramétrer à la main.

Une fois que vous êtes content du résultat, vous exportez le fichier de config et vous le collez dans votre dossier Ghostty. L'inverse marche aussi, vous pouvez importer votre config existante pour la modifier visuellement. Pratique si vous avez déjà passé des heures à peaufiner votre setup et que vous voulez juste ajuster deux ou trois trucs.

Bref, si vous voulez profiter de Ghostty sans vous farcir la doc des 200+ options de configuration, c'est par là que ça se passe .

  •  

Bookokrat - Le lecteur EPUB pour les accros du terminal

Vous vous souvenez de l'époque où rien que de lire un texte sur un écran noir suffisait à notre bonheur ? C'était un temps où chaque pixel comptait et où la souris était encore en option... Alalala, hé bien, pour ceux qui ont gardé cette âme pure ou qui passent la plupart de leur temps dans un shell, je vous ai déniché Bookokrat , un lecteur EPUB conçu EXCLUSIVEMENT pour votre terminal.

Vous allez voir c'est super pour lire des livres pendant le boulot discretos ^^.

L'outil propose une interface en "split-view" avec les EPUB de votre répertoire courant à gauche et votre lecteur à droite. Et malgré le côté austère du terminal, Bookokrat ne fait pas de compromis puisqu'il gère comme un chef le MathML pour les formules mathématiques et affiche même les images !

Attention toutefois, le rendu dépendra de votre terminal. Par exemple sur Kitty, Ghostty ou iTerm2 c'est le top ! Mais sur Alacritty ce sera un peu moins bien, quand au Terminal.app de macOS qui ne supporte pas bien les protocoles graphiques, je vous laisse imaginer la lose.

Côté navigation, c'est du classique avec des raccourcis inspirés de Vim (hjkl pour les intimes ^^) afin de scroller, changer de chapitre ou chercher dans le texte. L'outil gère aussi les signets automatiques ce qui est pratique quand on n'a pas le temps de finir "Guerre et Paix" d'une traite et vous pouvez même ajouter des notes directement dans le texte pour ne rien oublier.

Y'a aussi un "zen mode" (Ctrl + z) pour ceux qui ont du mal à se concentrer, même si je trouve qu'il est un peu inutile, et comme c'est codé en Rust, c'est fluide de fou !

Maintenant, pour l'installer, c'est facile... Sous macOS, un coup de Brew :

brew install bookokrat

Sinon, via Cargo :

cargo install bookokrat

Voilà si vous cherchez un moyen propre de lire vos ebooks sans quitter votre shell, Bookokrat fera grave bien le taff. Puis je trouve que ça redonne un petit goût de nostalgie façon Edit à la lecture et c'est pas pour me déplaire.

  •  
❌