PhaseOutLimit

Tactio Velox 소개

라틴어로 「빠른 손놀림」 정도의 뜻입니다. 타자 속도를 숫자 하나로 재는 대신, 어느 손가락이 어디서 멈추는지를 보여 주려고 만들었습니다.

왜 만들었나

타자 연습 프로그램은 대개 마지막에 분당 타수 하나를 던져 줍니다. 그 숫자는 오늘 잘 쳤는지는 알려 주지만 내일 무엇을 고쳐야 하는지는 알려 주지 않습니다. 실제로 속도를 갉아먹는 것은 평균이 아니라 매번 손이 걸리는 몇 개의 자리입니다. 그래서 문장 단위 기록과 별개로, 키 하나하나에 대해 몇 번 눌렀고 몇 번 맞았고 그 키에 닿기까지 평균 얼마나 걸렸는지를 따로 쌓기로 했습니다.

한글 조합을 어떻게 다루나

한글은 자모를 조합해 한 글자가 되기 때문에, 치는 도중의 「무」와 완성된 「문」을 같게 볼 수 없습니다. 조합이 끝나지 않은 글자를 오타로 세면 정확도가 엉망이 되고, 반대로 무시하면 속도가 부풀려집니다. 그래서 조합 중인 글자는 「아직 진행 중」으로 따로 판정하고, 통계에는 확정된 글자만 넣습니다. 일본어나 중국어처럼 입력기를 거치는 언어도 같은 원칙을 씁니다.

무엇으로 만들었나

화면은 Flutter이고, 속도·정확도 계산은 Rust로 짜서 붙였습니다. 한 글자 칠 때마다 도는 계산이라 손이 빠를수록 더 자주 불리는 부분이고, 여기서 늘어지면 앱 전체가 느려집니다. 데스크톱과 모바일에서는 기록을 SQLite에 넣습니다.

웹에서는 무엇이 다른가

브라우저에는 Rust 라이브러리도 SQLite도 없습니다. 그래서 웹판은 같은 계산식을 Dart로 다시 옮겼고, 기록은 브라우저 저장소에 넣습니다. 계산식은 유니코드 글자 단위까지 맞춰 두었기 때문에 같은 문장을 같은 시간에 치면 앱과 웹의 숫자가 같습니다. 다만 브라우저 저장소는 넉넉하지 않아서 연습 기록은 최근 오백 건까지만 남습니다.

여기 없는 것

회원 가입, 비밀번호, 결제, 순위표가 없습니다. 기록은 이 브라우저 안에만 있고 서버로 가지 않습니다. 광고는 사이트 유지 비용 정도로 붙였고, 연습을 가로막는 자리에는 넣지 않습니다.

만든 곳

PhaseOutLimit(POL)에서 혼자 만들고 있습니다. 미니게임 모음 Collectio, 읽을거리 아카이브 Mare, 계산기 모음 Lumina, 대전 테트리스 Tetra Ars, 낱말 게임 Suavitas 같은 사이트가 같은 손에서 나왔습니다. 목록은 개발자의 다른 웹사이트에 있습니다.

문의

버그 제보나 문장·언어 관련 지적은 panoutruleout@gmail.com 으로 보내 주세요. 확인에는 며칠이 걸릴 수 있습니다.