Vue lecture

LOTemplate nouvelle version 2.2

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.
Logo LOTemplate

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 :

  • Texte de filigrane
  • Couleur de filigrane
  • Police
  • Taille de police
  • Le nombre de répétition sur la page

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.

Options PDF

Exemple d’un export moche

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 !

Commentaires : voir le flux Atom ouvrir dans le navigateur

  •  

Cascii - Un éditeur de diagrammes ASCII qui tient dans un fichier HTML

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 !

  •  

Cupertino - Plus de code iOS pourri avec vos assistants IA

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 :

git clone https://github.com/mihaelamj/cupertino-docs.git ~/.cupertino

Mais si vous tenez absolument à avoir la doc fraîche du jour (maniaque de la mise à jour, je vous vois), vous pouvez crawler ça vous-même :

# Swift Evolution, ~5 minutes
cupertino fetch --type evolution
# Doc complète, ~20-24h
cupertino fetch --type docs
# Sample code Apple, ~4 minutes
cupertino fetch --type samples

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 !

Source

  •  

Context7 - Vos assistants IA vont enfin arrêter d'utiliser de la doc obsolète

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 :

{
 "mcpServers": {
 "context7": {
 "url": "https://mcp.context7.com/mcp",
 "headers": {
 "CONTEXT7_API_KEY": "votre_cle_api_ici"
 }
 }
 }
}

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 :

{
 "mcpServers": {
 "context7": {
 "command": "npx",
 "args": ["-y", "@upstash/context7-mcp", "--api-key", "votre_cle_api_ici"]
 }
 }
}

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…

Merci à itchrisdeb pour l’info !

  •  

Installing - - — Arduino ESP32 latest documentation

https://www.arduino.cc/en/software/

Dans Arduino IDE :
File > Preferences... > Additional boards manager URLS :
coller :

https://espressif.github.io/arduino-esp32/package_esp32_index.json
https://arduino.esp8266.com/stable/package_esp8266com_index.json
https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Ok

Tools > Board: "..." > Boards manager... >
rechercher : esp32
esp32 by Espressif Systems
Intall

rechercher : esp8266
esp32 by Espressif Systems
Intall

rechercher : pico
Raspberry Pi Pico/RP2040/RP2350 by Earle
Intall

Relancer Arduino IDE

https://arduino-esp8266.readthedocs.io/en/latest/installing.html#using-git-version

https://github.com/earlephilhower/arduino-pico
Permalink

  •  

Architecture Decision Records

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.


Permalink
  •  

Architecture Decision Records

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.


Permalink
  •  

Proxxon PD210 / PD250 - configuration du filetage

Bonjour à tous,

Mise-à-jour: 14 juin

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.

Comment fileter sur Proxxon

Avant de se pencher sur le réglage de l'avance, je vous propose de visionner cette vidéo de Adventtures with a very small lathe.


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:

  1. Commencer par la sélection du Diamètre (du Métrique) par la première colonne de préférence.
  2. Opter éventuellement pour un diamètre en colonne 2 ou en colonne 3 en dernier ressort.
  3. 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).

A tout bientôt,
Dominique

 

  •  
❌