Rust ... c'est long + Garmin + Courses

Après avoir pas mal utilisé SvelteKit, j’ai fait l’erreur de tombé sur un article à propos de Rust et donc forcément, j’ai voulu essayé. Et … c’est long :). La courbe d’apprentissage est importante mais la rigueur que demande ce code me semble vraiment intéressante.

Pour le moment, j’ai principalement fait des outils en ligne de commande :

  • Un détecteur de doublon d’images,
  • Un outil pour récupérer les données de ma montre.

Comme Svelte & SvelteKit, cela prend du temps.

Présentation

Un peu plus de détail sur le 2ème sujet :)

A l’origine, le souci venait que mon téléphone n’était plus compatible avec ma montre donc plus possible d’avoir des infos sur mes courses… Je venais d’entamer une prépa marathon : pas très pratique. Mais le monde n’étant pas totalement pourri, il est possible d’accéder aux fichiers stockant les données d’une course.

Les fichiers sont des fichiers FIT et l’idée de rentrer dans l’analyse des fichiers (certe intéresant) et des spécifications associées me laissaient un peu … pantois :). Le mode n’était pas totalement pourri (2), Garmin fournit un executable (FitCSVTool) permettant de transformer le fichier en CSV :)

Et la par contre : easy de les lire et les exploiter. Pour rendre cela intéressant : un peu de Rust et SvelteKit.

Rust

La partie Rust consiste en plusieurs exécutables partageant une librairie commune qui globalement permet de :

  • Transformer un fichier CSV en fichier JSON qui sera utilisé par le front,
  • Maintenir un fichier JSON global lui même exploiter par le front,
  • Maintenir une base de données (juste pour le fun),
  • Fusionner des fichiers car parfois la montre plante …

Le principe est que les outils générent des fichiers statiques qui sont des entrants au front.

SvelteKit

L’application propose:

  • une carte avec l’emplacement des courses,
  • Une page course qui donne les grandes infos mais également :
    • le parcours,
    • un graphe sur vitesse, altituce, fréquence cardiaque …

Ce qui m’a permis de refaire un peu de Leaflet et Chart.js