지난 게시글에서는 타수 측정 로직을 구현하는 방법에 대해 알아보았습니다. 이번에는 그 로직을 검증하기 위해 간단한 PoC 사이트를 배포하는 과정을 공유하겠습니다.
타수 측정을 위해 필요한 정보는 다음과 같습니다.
1. 입력한 텍스트: 사용자가 입력한 텍스트 내용
2. 입력 시간: 입력이 시작된 시간과 경과 시간
이를 기반으로 다음 두 가지 주요 데이터를 계산합니다.
아래는 PoC에서 사용된 코드입니다.
import { ChangeEventHandler, useState } from "react";
export const useTypingHook = (text: string) => {
const [inputText, setInputText] = useState("");
const [startTime, setStartTime] = useState<Date | null>(null);
const elapsedTime = startTime
? new Date().getTime() - startTime.getTime()
: 0;
const cpm = elapsedTime > 0
? Math.round((inputText.length / (elapsedTime / 60000)))
: 0;
const accuracy =
inputText.length > 0
? (inputText
.split("")
.filter((char, index) => char === text[index]).length /
inputText.length) *
100
: 100;
const handleInputChange: ChangeEventHandler<HTMLInputElement> = (e) => {
setInputText(e.target.value);
if (!startTime) {
setStartTime(new Date());
}
};
const handleReset = () => {
setInputText("");
setStartTime(null);
};
return {
inputText,
elapsedTime,
cpm,
accuracy,
handleInputChange,
handleReset,
};
};
CPM 계산
입력한 글자 수 ÷ (경과 시간 ÷ 60000)
으로 계산하여, 분당 입력 속도를 측정합니다.정확도 계산
배포 환경을 선택하기 위해 몇 가지 후보를 고려해보았습니다.
개인 호스팅 서버 구축
클라우드 서버 사용 (AWS, GCP 등)
PaaS(Platform as a Service) 사용
이번에는 배포 효율성과 Next.js와의 호환성을 고려해 Vercel을 사용하기로 결정했습니다.
Vercel을 사용한다면 아래와 같은 방법으로 쉽게 배포 가능합니다.
GitHub 저장소 연결
자동 배포
이번 글에서는 타수 측정 로직의 개념 검증을 위한 PoC를 구현하고, Vercel로 배포하는 과정을 다루었습니다.
다음 포스트에서는 PoC 결과를 분석하고 개선 방향에 대해 논의하겠습니다.😊