自己是同時跑步和重訓的市民跑者,跑班教練一週只見一次,剩下六天的自主訓練教練其實看不到,「上週練得如何」連我自己也常答不清楚(慚愧)。
一開始只是把重訓紀錄抄在 Google Keep,後來改成用 Notion 同步、接上 Garmin 和體重機資料,也用 NotebookLM 組出有背景設定的 AI 助教。系統長著長著,該好好整理一次了。
這 30 天會分享整套系統的演進與補完:撈資料、解析 FIT 檔、結構化重訓紀錄、組 AI 助教,到用 WebSocket 和 Three.js 做復盤與 3D 視覺化。目標是年底站上臺北馬起跑線時,它已經能回答「我練得如何」了^0^
開始之前讓我們來先看一張圖。 這是今年三月的東京馬拉松,42.65 公里,跑了 3 小時 22 分。畫面上這條線是我的GPS 軌跡,總共 12,128 個點—...
昨天提到我們的目標是建立一個 dashboard,第一步不是寫程式,是先來討論個問題: 我的訓練資料,現在到底在哪裡? 不盤不知道盤了嚇一跳—自己的日常訓練,資...
昨天提到今天要跟 Garmin 打交道,得先過 API 這關。今天就是自己遇到問題的完整紀錄,包含一次卡關和它的解法。 總結一下結論:這條路能行,但它不是這麼直...
昨天拿到登入憑證了,今天正式打開 Garmin 錶同步上去的那個東西—FIT 檔案。 我們可以知道 FIT 不是 JSON,打開來看不到任何一個你認得的字。它是...
昨天我們藉由一份 28 分鐘的間歇訓練建立概念:三種資料(record / lap / session),加上一個座標單位換算的介紹。今天換上真正的大檔案—今年...
前五天的內容比較多都是和 Garmin 資料有關。今天要來換一個完全不同性質的資料來源—家中的小米體重機。 而這次不只是拿到資料,還多思考了一個問題:這件事能不...
昨天的體重機資料取得,方式雖然曲折,不過至少格式固定—13 位元組,知道換算方式使用上就沒什麼問題。今天要處理的資料則是比較需要多加轉換:一套自己發明、還在演...
昨天把 Notion 的重訓文字完整爬出來,到今天為止,該拿的資料大致都到手了。 原本的計畫很單純:設計一套 schema,把跑步、重訓、體重、課表裝進去,之...
昨天把訓練紀錄轉成了 JSON,但要讓儀表板的數字是新的,得自己開終端機打指令。 今天要處理這件事—設定排程,讓它能自己跑。 動手前先翻了一遍自己的程式碼,想...
九天了,來細數一下手上目前有什麼。 Garmin 的逐秒紀錄、體重機的 13 bytes、Notion 的重訓文字爬出來,昨天也設定讓它們每天早上自己更新一次...