LOTemplate est un générateur de documents sous licence AGPL v3 qui permet de générer des documents (ODT, DOCX, ODS, XLSX, PDF, …) à partir d'un document modèle avec des variables et d'un fichier json pour les données.
Comment faire faire à LibreOffice (headless, sans interface graphique) ce que l’on ne peut pas faire avec LibreOffice (GUI, avec interface graphique) ?
Et comme c’est Noël nous avons ajouté un meilleur système de log en cadeau.
Dans la version 2.2 de LOTemplate, nous avons ajouté la possibilité d’exporter des PDF en y ajoutant un filigrane de son choix avec comme paramètres :
Pour cela, nous utilisons l’API uno de LibreOffice, qui expose plus de paramètres que l’interface graphique de LibreOffice. En effet, si l’on cherche a faire cela dans l’interface graphique de LibreOffice, on ne peut choisir que le texte. Le filigrane apparaît ensuite en vert et à la verticale.
Mais en cherchant dans l’aide de LibreOffice, on trouve sur la page d’aide de l’outil d’export PDF en ligne de commande qu’il existe les options suivantes :
Watermark
WatermarkColor
WatermarkFontHeight
WatermarkRotateAngle
WatermarkFontName
TiledWatermark
C’est donc possible, LibreOffice peut le faire mais uniquement avec l’API uno. Pour faire court, rien ne l’indique dans la doc de l’API uno. Toutefois on retrouve cette page (EN) en date de décembre 2022 qui explique l’amélioration qui permet cela.
En suivant un des liens de la page on arrive à cette page (EN).
Et là on peut lire : Fix the problem by only adding the option at an UNO API level for now, this relaxes the hardcoded color without cluttering the UI.
Super, c’est possible !
Ce ne sont que des propriétés de l’export PDF. La solution a donc été simple à implémenter, avec un peu de recherche.
En résumé, savoir chercher sur internet et lire la doc reste encore utile !
Dessiner des schémas en ASCII art, c’est un peu le sport national des devs qui documentent leur code dans des fichiers texte. Sauf que jusqu’ici, soit on se tapait ça à la main caractère par caractère, soit on passait par des outils en ligne qui demandent de se créer un compte et gardent vos diagrammes sur leurs serveurs. Heureusement, Cascii règle le problème puisqu’il s’agit d’un éditeur graphique complet qui tient dans un seul fichier HTML !
Et comme Cascii est écrit en JavaScript pur, y’a aucune dépendance, aucun framework, aucun npm install…etc. Vous téléchargez juste le fichier HTML, vous l’ouvrez dans votre navigateur, et c’est parti mon kiki.
Et pour l’installer, une commande suffit :
curl https://cascii.app -o cascii.html && open cascii.html
Ahaha ouais c’est la commande curl la plus nulle de l’histoire des commandes curl mais ça vous montre que je n’abuse pas.
Côté fonctionnalités, on a donc tout ce qu’il faut pour dessiner des diagrammes propres. Des lignes libres, des lignes en escalier, des carrés, des cercles, des losanges, du texte, des tableaux. Un système de calques permet d’organiser les éléments et de les grouper. Le plus malin, je trouve, c’est les “jointures intelligentes” qui connectent automatiquement les formes entre elles… parce que dessiner des flèches qui arrivent pile au bon endroit à la main, c’est l’enfer. Même comme ça, je suis pas doué, cela dit…
Ne le jugez pas…
L’éditeur propose plusieurs charsets tels que ASCII classique ou Unicode pour ceux qui veulent des lignes plus jolies et il y a 3 styles de lignes (pointillées, solides fines, solides épaisses) ainsi que des flèches directionnelles. Côté thèmes, du sombre, du clair, ou un mode “console” pour les nostalgiques du terminal.
La sauvegarde se fait automatiquement dans le stockage local du navigateur, donc même si vous fermez l’onglet par erreur, votre travail n’est pas perdu et pour partager ou archiver, il y a un export en Base64 qui permet de tout récupérer plus tard. Si vous utilisez la version hébergée sur cascii.app, vous pouvez aussi générer des liens courts pour partager vos créations.
Le projet est sous licence Apache 2.0 et le code source est dispo sur
GitHub
et pour les raccourcis clavier, c’est du classique : Ctrl+Z pour annuler, Ctrl+C/V pour copier-coller, Ctrl+G pour grouper des éléments, Shift+Click pour la multi-sélection. L’historique est illimité donc vous pouvez revenir en arrière autant que vous voulez.
Voilà, si vous documentez du code, dessinez des architectures système ou avez juste besoin de faire un petit schéma rapide sans sortir l’artillerie lourde,
Cascii
fera le job !
Vous développez une app SwiftUI et Claude vous balance du NavigationView alors qu’Apple recommande NavigationStack depuis la sorite d’iOS 16 ? Ou encore il vous sort @ObservableObject et @Published alors qu’on est passé à @Observable ?
Bienvenue dans le club des devs qui passent plus de temps à corriger les hallucinations de leur IA qu’à coder…
Ce problème, Aleahim, un développeuse macOS, en a eu marre alors elle a créé Cupertino, un serveur MCP qui donne accès à Claude à plus de 22 000 pages de documentation Apple en local. Plus besoin d’aller sur le net, et surtout plus d’excuses pour mélanger du code iOS 12 avec du SwiftUI moderne.
Ainsi, au lieu de laisser Claude deviner les API (et se planter une fois sur deux), on lui file l’accès direct à la vraie doc. Les 261 frameworks Apple sont là, indexés dans une base SQLite locale, avec un moteur de recherche full-text qui répond en moins de 100ms. SwiftUI, UIKit, AppKit, Foundation, Core ML, ARKit… tout y est.
L’écosystème se découpe ensuite en plusieurs repos GitHub. D’abord le serveur MCP principal qui fait le boulot d’indexation, ensuite un repo avec la doc pré-crawlée (parce que se taper 20 heures de téléchargement, merci mais non merci), et une collection de 606 projets d’exemple Apple officiels pour la route.
De quoi transformer Claude en assistant qui connaît VRAIMENT la plateforme.
Si ça vous intéresse, sachez qu’avant de vous lancer, faut être sur macOS 15 minimum avec Xcode 16 et Swift 6.2+. Côté espace disque, prévoyez 2-3 GB. Et si vous avez déjà bidouillé dans le terminal, que vous connaissez Git et que vous avez Claude Code installé, vous êtes bons. Comptez environ une quinzaine de minutes pour tout mettre en place.
Et rassurez-vous, je ne vous laisse pas tomber, on va attaquer l’installation ensemble. D’abord, récupérez le projet et compilez-le :
git clone https://github.com/mihaelamj/cupertino.git
cd cupertino
make build
sudo make install
Cette commande compile le projet Swift en mode release (ne faites pas attention aux warning éventuels) et copie le binaire dans /usr/local/bin/. Vous devriez ensuite voir un message du genre “Build complete” suivi des chemins où le binaire est déployé.
Maintenant passons sur la doc. Plutôt que de crawler vous-même les serveurs Apple pendant une journée entière, je vous recommande de récupérer la version pré-packagée. Ça prend 5 minutes au lieu de 20 heures, et franchement la vie est trop courte :
Le crawler utilise un délai de 0,5 seconde entre chaque requête pour ne pas se faire blacklister par Apple. D’où les 20 heures…
Ensuite, il faut construire l’index à l’aide de la commande suivante :
cupertino save
Puis lancer le serveur MCP comme ceci :
cupertino serve
Maintenant, passons à la connexion avec Claude Code. Alors pourquoi Claude Code, parce que c’est celui que j’utilise, c’est le meilleur, c’est mon préféré ❤️.
Et c’est là que tout se joue, une seule commande :
claude mcp add cupertino --scope user -- /usr/local/bin/cupertino
Le --scope user fait que le serveur sera dispo dans tous vos projets, pas juste celui où vous êtes. Vous devriez voir : “Added stdio MCP server cupertino with command: /usr/local/bin/cupertino to user config”.
Et maintenant pour vérifier que tout marche, lancez Claude Code avec claude puis tapez /mcp. Vous devriez voir cupertino dans la liste avec 3 outils : search_docs, list_frameworks et read_document. Vous pouvez aussi lancer cupertino doctor dans le terminal pour un diagnostic complet qui vérifie que le serveur MCP, le répertoire de doc et l’index de recherche sont bien en place.
Testez en demandant à Claude de chercher quelque chose dans la doc Apple. Genre “NavigationStack iOS 16”. Il devrait utiliser l’outil search_docs et vous retourner la vraie documentation avec les bons exemples de code… pas du deprecated.
Si vous avez l’erreur “command not found: cupertino”, le binaire n’est pas dans votre PATH. Vérifiez que /usr/local/bin y est bien ou relancez sudo make install. Si c’est “Database not found”, vous n’avez pas de doc indexée. Retournez chercher le repo cupertino-docs ou lancez le crawl. Et si le serveur ne se connecte pas à Claude Code, fermez Claude Code complètement et relancez-le car les serveurs MCP se chargent au démarrage.
Voilà… Pour les devs Apple qui en ont marre de corriger les suggestions de Claude, Cupertino la formation Apple qu’il manquait à votre assistant IA !
Scène du crime, mardi matin, vous demandez à Claude Code de vous générer un middleware Next.js qui vérifiera un JWT dans les cookies. Et l’IA vous pond sans sourciller 15 lignes de code bien propres, bien commentées… Elle est parfaitement confiante et vous ça vous rassure. Vous copiez son œuvre, vous collez. Et là, PAF, une
erreur de compilation
!!
Hé oui, la fonction qu’elle a utilisée n’existe plus depuis Next.js 14. En gros, Claude Code a halluciné tranquillement avec de la vieille doc pourrie de 2020.
Et dire qu’on a passé 20 ans à se foutre de la gueule des devs qui copient-collent du code depuis de vieux posts Stack Overflow alors qu’aujourd’hui, on copie colle sans réfléchir ce que nous donne une IA qui fait exactement pareil ! C’est ça le progrès les amis !
Hé bien
Context7
vient régler exactement ce problème ! Il s’agit d’un serveur MCP (Model Context Protocol) développé par Upstash qui branche votre assistant de code sur la documentation officielle à jour, comme ça vous esquivez les fonctions dépréciées, les API fantômes, et les best practices d’il y a trois ans.
Context7 est donc compatible avec Cursor, Claude Code, Windsurf, VS Code, Zed, Gemini CLI, et tous les éditeurs qui supportent le protocole MCP (donc à peu près tout ce qui existe…) et une fois que c’est en place, y’a plus qu’à l’oublier. Si vous hésitez,
y’a une démo ici pour tester
.
Mais avant de commencer, sachez que vous aurez besoin de Node.js 18+ pour la méthode locale. Et pour la méthode serveur distant, juste un navigateur et votre éditeur de code.
La méthode serveur distant consiste à aller sur
context7.com
, à vous créer un compte gratuit, à récupérer une clé API, puis à ajouter cette config dans votre éditeur comme ceci :
Pour Cursor, ouvrez les settings (Cmd+,), cherchez “MCP Servers”, et collez ça dans la config JSON. Pour Claude Code, c’est dans .claude/settings.json à la racine de votre projet. Sauvegardez, redémarrez l’éditeur, et c’est bon.
Et deuxième méthode d’install, c’est en local via npx. Après c’est la même clé API mais la config est légèrement différente :
Voilà, avec cette méthode, le serveur MCP tourne sur votre machine ce qui vous offre un peu plus de contrôle. Et une fois que c’est en place, vous utilisez Context7 en ajoutant simplement “use context7” dans vos prompts. Par exemple : “Créez un middleware Next.js qui vérifie un JWT valide dans les cookies et redirige les utilisateurs non authentifiés vers /login. Utilisez context7”.
L’IA va alors interroger le serveur MCP Context7, récupérer la doc officielle Next.js à jour, et générer du code qui marche vraiment. Et la liste des libs supportées grandit régulièrement : Next.js, React, Vue, Svelte, Tailwind, TypeScript, et des dizaines d’autres…
Voilà, ça prend 3 minutes à installer, ça sauve des heures de debug débile sur des APIs qui n’existent plus, et c’est gratuit pour un usage perso !
Et dans six mois vous aurez oublié que c’est installé et vous vous demanderez comment vous faisiez avant…
Les ADRs sont de simples documents, souvent au format texte, qui visent à documenter les prises de décision qui impactent la façon de développer une application.
L'idée est de justifier et d'expliquer les choix effectués.
Les ADRs sont de simples documents, souvent au format texte, qui visent à documenter les prises de décision qui impactent la façon de développer une application.
L'idée est de justifier et d'expliquer les choix effectués.
Dans mes activités de Maker, il m'arrive de tourner des pièces sur un tour Proxxon PD210 (ancien modèle) en vue de réaliser des assemblages.
Proxxon PD210
Préambule
Plus récemment, j'ai décidé de monter un Binoculaire fixe sur les bras de support d'écran pour ordinateur. J'ai donc eu besoin de réaliser un axe (en laiton) avec un filet M7 d'un côté et un filet M10 de l'autre. Le problème c'est qu'une filière de mauvaise qualité à complètement détruit/saboter mon axe du côté M10.
Quelle frustration d'avoir la dernière étape (filetage M10) qui ruine tout un travail!
Solution
Apprendre à faire du filetage métrique au tour! Sur le fond, c'est possible puisque le Proxxon PD210 dispose d'un mécanisme d'avance automatique.
Il faut juste régler l'avance pour obtenir le pas souhaité qui est de 1.5mm pour du Métrique 10.
Cette vidéo permet de se familiariser avec la technique et les bonnes pratiques à employer.
Identifier le pas
Le tableau ci-dessous permet d'obtenir les différentes informations pour le filetage métrique d'un axe (une vis). Nous verrons une autre fois pour les écrous.
Pour une vis en métrique 10, le diamètre de départ de la vis est 10mm.
Vient ensuite le tableau de correspondance diamètre/pas. Durant la sélection:
Commencer par la sélection du Diamètre (du Métrique) par la première colonne de préférence.
Opter éventuellement pour un diamètre en colonne 2 ou en colonne 3 en dernier ressort.
Sélectionner le "PAS GROS" en priorité. Réserver un pas-fins en seconde option.
Dans l'image ci-dessous, le "PAS GROS" pour le diamètre 10mm est 1.5mm.
Filetages Métriques et pas de vis
Configurer l'avance
Maintenant que nous avons notre diamètre de départ (10mm) et notre pas (1.5mm), il faut configurer les engrenage pour que l'avance automatique correspond exactement à un pas de 1.5mm
Configuration avec avance 0.1mm (idéale pour les passes automatiques)
Les bandes noires (gauche + haut) définissent la vitesse du mandrin. Dans l'image ci-dessus, c'est la configuration H-2 (1710 tours/minutes). Note: pour tourner un filet il est préférable de diminuer la vitesse de rotation.
Proxxon PD210 - rotation speed
Ensuite, il faut configurer les engrenages du Proxxon pour obtenir l'avance souhaitée (soit un pas de 1.5mm).
Voici le tableau qui va nous aider à sélectionner les engrenages adéquats.
Proxxon PD210 - Avance automatique Métrique
Pour une avance de 1.5mm par tour (le pas), il faut configurer:
W sur 15 dents. L'engrenage W sur le mandrin n'est pas amovible.
Z1-Z2 permet d'identifier l'engrenage double 15-dents-vers-30-dents.
Z1 de 15 dents est branché sur le mandrin 15 dents.
Z2 de 30 dents (la 2ieme partie de l'engrenage double) sera connecté sur l'engrenage L.
L de 20 dents est monté sur la vis d'entraînement du chariot.
Avec cela, j'espère que mon métrique 10 sera réussi.
Les filets impériaux
Nombres de pays utilisent toujours les le pouce comme unité de base. C'est le cas des éléments mécanique usinés aux Etats-Unis où pour les domaines particuliers comme l'Archerie.
Pour compléter cette documentation, voici la configuration impériale (US) avec le nombre de filets par pouce. Vous avez peut-être déjà croisé la notation #40.
Proxxon PD210 - Avance automatique Impériale
Cela ne nous renseignent pas encore sur les diamètres des vis.
Investissement décidément bien utile
Fort de toutes ces informations, j'ai fait une tentative de filetage finalement fructueuse. J'ai donc tourné une nouvelle pièce avec filetage M10 & M8 au tour.
2ieme axe fileté au tour (en bas)
Ce qui permet, cette fois, de finaliser l'assemblage
Assemblage de l'axe tri-oculaire sur les bras d'écran
Raison de cet article
Cet article est aussi un projet de documentation. Je n'ai pas la documentation du tour et les grilles d'information dans le couvercle n'est pas des plus lisible. C'est donc l'occasion de reproduire les grilles dans un format parfaitement lisible.
A l'occasion, je m'attarderais sur le filetage intérieur (comme les écrous).