TODAY I LEARNED
TIL
Une collection de découvertes techniques et d'astuces glanées au fil des projets. Des notes courtes, rangées par thème, mises à jour à chaque nouvelle entrée.
42 NOTES · 14 THÈMES
ACCESSIBILITY
—01AGENTS
—02Créer un Skill (SKILL.md)
Les "skills" permettent d'étendre les capacités de l'agent CLI en lui fournissant des instructions spécialisées, des workflows précis ou des accès à des…
2026-02-09
Les rules Claude Code scopées par chemin
Un CLAUDE.md est chargé en entier à chaque session : plus il grossit, plus il coûte en contexte et moins il est suivi. Le dossier .claude/rules/ permet de…
2026-09-30
ANDROID
—09adb en script : les pièges qui font mentir un test
Utilisé à la main, adb sert à installer un APK et à lire les logs. Dès qu'on s'en sert pour piloter un parc de téléphones depuis un script, il se comporte…
2026-07-28
Forcer l’orientation portrait d’une Activity
Forcer une Activity à rester en mode portrait à l’aide du manifeste Android.
2025-11-13
Implementation de Firebase Remote Config
Firebase Remote Config permet de modifier le comportement et l'apparence de votre application sans avoir à publier une mise à jour sur le Play Store. Cela est…
2026-01-21
Lancer une Activity et récupérer un résultat à la fermeture
Comment lancer une nouvelle Activity depuis une autre, et exécuter une fonction dans l’Activity de base lorsqu’on revient après la fermeture de la nouvelle…
2025-11-07
Ne pas utiliser un ViewModel dans un Worker
Éviter d’appeler un ViewModel dans un Worker WorkManager. Un Worker n’a pas de cycle de vie lié à l’UI, contrairement au ViewModel.
2025-10-31
Notifications Locales (Sans Firebase)
Pour afficher une notification simple (ex: rappel, alarme, fin de téléchargement) sans serveur distant, on utilise le NotificationManager. Depuis Android 8.0…
2026-01-15
Optimiser les VectorDrawables avec Avocado
avocado est un outil en ligne de commande qui optimise les fichiers VectorDrawable et AnimatedVectorDrawable Android. Il permet de réduire considérablement la…
2026-02-26
Ouvrir une Activity depuis une notification sans recréer d’instance
Lorsqu’on clique sur une notification, Android peut recréer une nouvelle instance de l’Activity, même si elle est déjà en arrière-plan. Pour éviter cela et…
2025-11-12
Piloter un téléphone au texte affiché avec uiautomator
Automatiser un écran Android sans instrumenter l'application : ni testTag, ni resource-id ajouté pour l'occasion, ni build spécial. uiautomator dump…
2026-07-28
FIGMA
—03Ajouter du scroll dans un écran
Dans Figma, le défilement (scrolling) ne s'active pas automatiquement. Il faut configurer le comportement de débordement (Overflow) dans les paramètres de…
2026-01-15
Créer une frame
Les cadres (frames) sont les éléments fondamentaux de Figma. Contrairement aux simples groupes, les frames permettent d'utiliser des fonctionnalités avancées…
2026-01-15
Créer une section
Les sections dans Figma permettent d'organiser le canevas en regroupant des cadres (frames) et d'autres objets. Elles sont particulièrement utiles pour…
2026-01-15
GIT
—03Hooks (pre-commit & pre-push)
Les Git Hooks sont des scripts qui s'exécutent automatiquement avant ou après certaines commandes Git (commit, push, merge, etc.).
2026-01-16
Ignorer des commits dans git blame
La commande git blame est très utile pour savoir qui a modifié une ligne et pourquoi. Cependant, des commits de formatage massif (via prettier, black ou…
2026-01-16
Utiliser deux URL différentes pour le pull et le push
Configurer Git pour utiliser deux URL différentes : - une pour le pull (lecture), - une autre pour le push (écriture).
2025-11-04
GITHUB
—05Configuration de Dependabot
Dependabot automatise la mise à jour des dépendances d'un projet en créant des Pull Requests. Toute sa configuration se trouve dans le fichier…
2026-02-13
Donner le rôle admin sur un dépôt personnel
Sur un dépôt appartenant à un compte personnel (et non à une organisation), promouvoir un collaborateur en admin par l'API semble impossible : la requête…
2026-07-28
Les templates de Pull Request
Un template de Pull Request est un simple fichier Markdown versionné dans le dépôt : GitHub le recopie automatiquement dans la description de toutes les…
2026-08-25
Piloter une PR Dependabot en commentaire
Dependabot lit les commentaires postés sur ses propres Pull Requests et réagit à des commandes de la forme @dependabot <action>. C'est le seul moyen de lui…
2026-08-03
Réessayer automatiquement une étape (retry)
Il arrive qu'une étape de CI échoue de manière aléatoire ("flaky") à cause de problèmes réseaux, de timeouts ou de tests instables. Contrairement à d'autres…
2025-11-20
JAVASCRIPT
—01KOTLIN
—03Différence entre collect() et first() sur un Flow
En Kotlin Coroutines, il existe plusieurs façons de consommer un Flow. Deux opérateurs terminaux reviennent souvent : collect() et first(). Bien qu'ils…
2025-12-15
Ne pas utiliser
breakdans unforEachEn Kotlin, on ne peut pas utiliser break ou continue dans un forEach. Si on a besoin d’interrompre la boucle, il faut utiliser une boucle for classique.
2025-11-10
Préférer
objectà uneclassaveccompanion objectEn venant de Java, on a tendance à vouloir reproduire le comportement des méthodes static (ou du pattern Singleton) en utilisant une class contenant un…
2025-11-27
LINUX
—03Créer une Desktop Entry pour une Web App (Notion, etc.)
Certaines applications (comme Notion) n'ont pas de client officiel sous Linux. Plutôt que d'utiliser le navigateur avec tous ses onglets, on peut créer une…
2025-12-01
Gérer ses dotfiles avec GNU Stow
Gérer ses fichiers de configuration (dotfiles) peut vite devenir chaotique. Copier les fichiers manuellement empêche un suivi Git propre, et les liens…
2025-11-21
Le repliage de dossiers de GNU Stow
On croit que stow crée un lien symbolique par fichier. C'est faux : il lui arrive de lier le dossier entier. Le résultat est le même à l'usage, mais pas du…
2026-07-28
MACOS
—02Le Brewfile ne liste pas tout ce qui est installé
Un Brewfile est le manifeste d'une machine : formules, applications, extensions. brew bundle dump le génère à partir de l'existant, et le premier réflexe en…
2026-07-28
mas : sans lui, le Brewfile oublie les apps du Mac App Store
brew bundle dump est censé photographier tout ce qui est installé sur la machine. En réalité il ignore silencieusement les applications venues du Mac App…
2026-07-28
OPENAPI
—06La section components
La section components sert de bibliothèque pour stocker des objets réutilisables. Cela permet de garder le fichier propre, d'éviter les répétitions et de…
2026-02-09
La section info
La section info fournit les métadonnées essentielles sur l'API. C'est la première chose que les utilisateurs (et les générateurs de documentation) lisent pour…
2026-02-09
La section paths
La section paths est le composant central d'OpenAPI. Elle définit tous les points de terminaison (endpoints) disponibles, les opérations HTTP et la logique de…
2026-02-09
La section servers
La section servers définit les URLs de base où l'API est accessible. Cela permet aux outils de test (comme Swagger UI) d'exécuter des requêtes directement…
2026-02-09
Mock Server avec Postman
Un serveur de mock permet de simuler le comportement d'une API avant même qu'elle ne soit développée. Postman facilite grandement cette étape en important…
2026-02-09
Structure d'un fichier openapi.yaml
OpenAPI (anciennement Swagger) est la norme de description pour les API REST. Un fichier openapi.yaml permet de documenter les points d'entrée (endpoints)…
2026-02-09
PYTHON
—01SECURITY
—01SQL
—02Activer hot_standby_feedback pour les requêtes longues sur un réplica
Lorsqu’on exécute des requêtes longues (ex. : modèles dbt, analytique, exports) sur une base de données read-only (standby), il arrive que la requête soit…
2025-11-20
Création d’un utilisateur et gestion des droits
Créer un utilisateur PostgreSQL directement via SQL et gérer ses droits. Pratique pour gérer les accès à une base ou un schéma de manière sécurisée.
2025-11-03