Le blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)
Après presque 2 ans de silence et le remplacement de Hugo et Bootstrap par Zola et Tailwind/daisyUI l’été dernier pour générer le site, je vous souhaite une bonne année à tous et la résolution de publier plus régulièrement mes trouvailles…
TL;DR: DuckDB can attach MySQL, Postgres, and SQLite databases in addition to databases stored in its own format. This allows data to be read into DuckDB and moved between these systems in a convenient manner.
J’avoue que la concision de Caddy vs Traefik et le provider file
est bien appréciable:
# Caddyfile
xxx.cerenit.fr {
reverse_proxy 127.0.0.1:3000
}
# Traefik
http:
middlewares:
redirectToHttps:
redirectScheme:
permanent: true
scheme: https
routers:
grafana:
entryPoints:
- websecure
- web
middlewares:
- redirectToHttps
rule: Host(`xxx.cerenit.fr`)
service: grafana@file
tls:
certResolver: le
services:
grafana:
loadBalancer:
servers:
- url: http://127.0.0.1:3000/
Pour un serveur, la migration de Traefik vers Caddy fait passer le fichier de configuration de 172 lignes à 27 - soit presque 6 fois moins ! 😏
Exemple:
services:
whoami:
image: traefik/whoami
networks:
- caddy
labels:
caddy: whoami.example.com
caddy.reverse_proxy: "{{upstreams 80}}"
networks:
caddy:
external: true
docker compose
(au lieu de l’original docker-compose
coté en python)COPY --chmod
reduced the size of my container image by 35% : pour réduire la taille de vos images, plutôt que de faire un ADD ...
puis un RUN chmod ...
, faites directement un ADD/COPY --chmod
. Marche aussi avec --chown
.depends_on
a une syntaxe longue qui permet de définir une condition sur l’état du service dépendant : démarré (valeur par défaut de la version courte), “sain” (en fonction du résultat d’un healthcheck) ou “terminé avec succès” (si votre service dépend du résultat d’un job ou d’une tâche).tig
pas très intuitif/pratique, GitUI pourrait vous plaire. Prévu pour le terminal, il permet de se ballader facilement dans votre historique git & co. L’ outil en codé en Rust.argparse
est assez connu et peut être aussi Fire, c’est l’occasion de découvrir Click (par l’équipe derrière Flask & co et à ne pas confondre avec clikt en Kotlin), Typer (par le fondateur de FastAPI).podman machine
est supporté nativement sur Linux et MacOS/Intel et en remote client sur Windows/Intel.docker compose xxx
). Pour Windows & OSX, il est fourni avec Docker Desktop.tar
de NodeJS directement (ou indirectement), il est judicieux de mettre à jour votre version de npm
et node
et de vérifier vos dépendances.first()
et last()
ainsi que les nouvelles fonctions timestamp_floor()
et timestamp_ceil()
pour gérer les arrondis inférieurs/supérieurs. Enfin, l’API HTTP accepte des paramètres liés au “Out Of Order”.kubernetes_manifest
permet de définir ses propres manifests et donc permet d’utiliser des CRD non disponibles dans le provider officiel. Plus pratique que de générer les manifests via des templates et de faire du kubectl apply
par dessus.time_bucket_ng
qui permet de faire de nouvelles aggrégations et d’avoir prochainement un support des timezones. La seconde fonctionnalité expérimentale porte sur la capacité à bouger de la donnée entre plusieurs nodes en mode cluster.compose
devrait devenir une sous-commande officiel de la CLI Docker ; on pourra alors faire docker compose up -d
jq
pour les données relationelles. Du SQL ou des fichiers Excel/CSV/JOSN/XML en entrée et les mêmes formats en sortie (et un peu plus).vector top
, la source internal_logs
et l’API GraphQL. Un guide de mise à jour vers la nouvelle syntaxe est disponible.