몇 번 자전거 분석기로 소개드렸던 사람입니다. 이번엔 이름부터 바뀐 얘기라 처음부터 적습니다.
가입도 설치도 없이 브라우저에 FIT/GPX 파일을 끌어다 놓으면 분석이 나오는 앱을 만들고
있었는데, 한 달 전쯤부터 러닝과 수영을 붙였습니다. 이름도 라이딩에 묶여 있던 것을 버리고
나아짐으로 바꿨습니다. 어제보다 나은 오늘이라는 뜻입니다.
https://happyprg.github.io/naajim/
파일 없이 구경만 하실 분은 이쪽으로 들어가시면 자전거, 러닝, 수영 데모가 각각 열립니다.
https://happyprg.github.io/naajim/app.html#demo
[왜 러닝과 수영을 붙였나]
자전거 타는 사람 중에 러닝이나 수영도 같이 하는 분이 생각보다 많았고, 저부터도 겨울엔
러닝화를 신습니다. 그런데 자전거용으로 짠 화면에 러닝 파일을 넣으면 숫자가 이상하게
나옵니다. 파워가 없는데 파워 칸이 비어 있고, 케이던스 기준이 자전거 페달링이라 걸음
피치를 못 읽고, 속도는 km/h로만 나오는데 러너는 분/km 페이스로 봅니다. 종목마다 잣대가
달라야 하는 걸 하나로 억지로 맞추고 있었던 겁니다. 그래서 화면 자체를 종목별로 갈랐습니다.
[러닝에 새로 생긴 것]
거리별 최고 기록 - 5km, 10km, 하프, 풀코스 구간을 자동으로 잡아 그 구간 최고 기록을
남깁니다. 자전거의 PR 기록실과 같은 자리인데 잣대만 러닝 것입니다.
레이스 예측 - 최근 잘 뛴 기록 하나를 리겔(Riegel) 식으로 다른 거리에 옮겨 봅니다.
1977년에 나온 식이라 저희가 만든 게 아니고, 그 거리에 맞는 훈련이 되어 있다는 전제가
붙습니다. 그래서 기준 거리의 4배까지만 보여주고 그 이상은 억지로 안 냅니다.
심박존과 주간 거리 - 파워미터 없는 종목이라 심박 기준으로 존을 나눠 보여주고,
이번 주 얼마나 뛰었는지 누적됩니다.
체감 훈련 부하 - 파워도 페이스 기반 TSS도 없을 때 쓰는 값입니다. 뛰고 나서 힘들었던
정도를 1부터 10까지 적으면 그 숫자에 이동 시간을 곱해서 부하로 씁니다. 2001년
포스터(Foster)가 낸 session-RPE라는 방법이고, 후기를 적은 기록만 계산에 들어갑니다.
[수영에 새로 생긴 것]
이건 만들면서 재미있었던 부분이라 좀 적습니다. 바퀴, SWOLF, 영법 이 세 가지가 원래
화면에 하나도 안 나오고 있었는데, 나중에 보니 파일 안에는 처음부터 있었습니다.
가민 수영 FIT 파일의 length 메시지에 바퀴마다 스트로크 수, 영법, 걸린 시간이 다 찍혀
있는데 그동안 그 메시지를 읽지 않고 있었던 겁니다. 파싱 코드 하나 추가해서 꺼내 쓰기
시작한 게 이번 업데이트입니다.
SWOLF는 한 바퀴 도는 시간(초)에 그 바퀴에서 저은 스트로크 수를 더한 값입니다. 낮을수록
같은 거리를 덜 저어서 갔다는 뜻이라 효율의 지표로 씁니다. 풀 길이가 다르면 비교가 안
되니 같은 풀 길이 기준으로만 보여줍니다.
CSS(임계 속도)는 400m와 1,500m 최고 기록의 시간 차로 계산합니다. 두 거리를 전력으로
헤엄쳤을 때만 의미가 있고, 그날 컨디션이나 영법에 따라 흔들리니 처방이 아니라 기준점으로
쓰라고 화면에 적어뒀습니다. 여기서 나온 값을 다시 훈련 페이스(100m당 몇 초)로 바꿔서
보여줍니다.
거리별 최고 기록도 100m, 400m, 1,500m로 따로 잡습니다. 다만 스트라바에서 내보낸 레인
수영 데이터에는 좌표도 바퀴 기록도 담기지 않아서, 이 부분은 시계에서 받은 FIT 파일을
그대로 넣어야 다 나옵니다.
[종목을 갈랐다는 게 어디까지 갈랐다는 뜻이냐면]
도전과제, 배지, 주간 랭킹, 퀘스트, 장비함까지 전부 종목별로 따로 셉니다. 자전거만 타는
사람과 러닝만 하는 사람이 같은 도전과제를 놓고 서로 불리하지 않게요. 장비함도 자전거는
km, 러닝화도 km, 수영 장비는 쓴 시간으로 소모품 교체 시기를 알려줍니다. 무료로 종목마다
하나씩(자전거 1대, 러닝화 1켤레, 수영 장비 1개)은 등록됩니다.
앱을 열었을 때 첫 화면도 그 사람이 실제로 하는 종목을 따라갑니다. 러닝만 하는 분한테
자전거 잔디나 자전거 통계가 먼저 보이던 것을 고쳤습니다.
[여기부터는 예전부터 있던 것 - 종목 안 가리고 그대로 적용됩니다]
분석과 저장 무제한 - 몇 개를 넣든 다 됩니다. 예전엔 월 몇 개 한도가 있었는데 없앴습니다.
전부 브라우저 안에서 도는 거라 저희한테 드는 비용이 없어서, 아홉 번째 기록에서 막아
봐야 잔디나 PR처럼 쌓여야 의미 생기는 걸 만나기 전에 떠나실 뿐이었습니다.
AI 코치 - 리포트 놓고 뭘 하면 되냐고 물어볼 수 있는데, 이 요청이 저희 서버를 안
거칩니다. 여러분 API 키로 브라우저에서 제미나이 같은 데로 바로 갑니다. 키 넣기 싫으면
프롬프트만 복사해서 쓰시던 챗봇에 붙여넣어도 됩니다. 보내는 건 숫자뿐이고 좌표나
기록 이름(집 근처 지명이 섞입니다)은 안 보냅니다.
스토리 영상 - 경로가 지도에 그려지고 그날 고도만큼 세워져 3D로 일어서는 세로 영상이
나옵니다. 이것도 브라우저 안에서 캔버스로 한 프레임씩 그려 인코딩해서, 만드는 횟수
제한이 없습니다.
라이딩 계획과 쉼터 지도는 지금은 자전거 전용입니다. 가기 전에 완주 가능성을 판정하고
휴식할 편의점, 화장실, 음수대를 코스 위에 보여주는 기능인데, 러닝 쪽으로도 넓힐지는
아직 정하지 않았습니다.
파일이 서버로 안 갑니다. 계정도 없습니다. F12 눌러서 네트워크 탭 열어놓고 파일 넣어
보시면 업로드 요청이 없는 걸 보실 수 있습니다. 정직하게 말씀드리면 앱을 열 때 하루
한 번 익명 방문 카운트만 나갑니다. 쿠키도 식별자도 없습니다.
[Pro 코드 20개]
9월 30일까지 유효한 Pro 코드입니다. 10월 넘어가면 안 되니 이번 달 안에 넣어 보실 분만
쓰시면 됩니다. 선착순이나 추첨 없이 먼저 쓰시는 분이 임자입니다. 앱 오른쪽 위 Pro
화면에서 코드를 넣으시면 됩니다.
위에 적은 건 대부분 무료입니다. Pro는 종목별 장비 여러 개, 목표 여러 개, 훈련 부하
추이(CTL/ATL/TSB), PR 추적, 기록 비교, PDF, 기기간 동기화, AI 코치 키 연동 같은
자산 관리 쪽입니다. 오늘 하루 기록 보는 데는 필요 없습니다.
RLSUB-AAJS6-2T9WC-5TFD5
RLSUB-AAJSL-R6WRC-SWQRE
RLSUB-AAJSQ-RML72-PEYV8
RLSUB-AAJSJ-LZ2SW-4P33K
RLSUB-AAJSA-GK4F5-DUW9Y
RLSUB-AAJS8-AV4WZ-4TJW8
RLSUB-AAJSZ-QLNG6-WU6EE
RLSUB-AAJST-SP59M-UNFZW
RLSUB-AAJSG-9SFTF-AZT7W
RLSUB-AAJSB-CF78C-5F2ZX
RLSUB-AAJSU-ZWXL4-VK7QN
RLSUB-AAJSD-XGFG6-BWE49
RLSUB-AAJSP-PJZJ7-SRHBN
RLSUB-AAJSD-TCSBF-YVAYC
RLSUB-AAJS6-3D8ZM-UY6BE
RLSUB-AAJSK-B4UGV-2LZSZ
RLSUB-AAJSZ-T9TU4-84JWM
RLSUB-AAJSD-2N7T8-JHR8S
RLSUB-AAJS9-BMQL8-W5UQM
RLSUB-AAJSL-887WT-EGBDD
쓰신 분은 댓글로 남겨주시면 소진 현황 갱신하겠습니다. 자전거만 타시던 분도 러닝화나
수영 파일 하나 있으면 그쪽 화면도 한번 넣어봐 주시면 좋겠습니다. 아직 다듬을 게
많은 부분이라 이상한 점 있으면 그것부터 알려주세요.