만든 것
직접 만든 사이드 프로젝트 — 왜 만들었고 어떻게 설계했는지.
LLM 자막 번역 — 줄 밀림과 문장 그룹핑
여러 줄을 한 번에 번역시키면 LLM이 줄 경계를 흐려 번역이 한 줄씩 밀립니다. 그리고 한 문장이 자막 세 조각에 걸치면 조각별 번역은 원리적으로 불가능합니다.
유튜브 자막 확보 — 플레이어 요청 가로채기
확장에서 유튜브 자막을 직접 부르니 빈 응답이 왔습니다. DOM 스크래핑은 느리고 화면이 움직였고, 결국 플레이어 자신의 요청을 가로채는 방식으로 갔습니다.
LiteTranslate — 브라우저 확장에서 Bedrock 직접 호출
유튜브 이중자막 번역·학습 확장을 만들면서 서버를 하나도 두지 않았습니다. 확장이 브라우저에서 직접 AWS를 부르고, 인증은 Cognito, 서명은 WebCrypto로 SigV4를 손수 짰습니다.
SigV4 canonical URI 이중 인코딩 — Bedrock 403
브라우저에서 SigV4를 직접 구현해 Bedrock을 부르는데 계속 403이 났습니다. 서명 로직은 맞는 것 같은데, canonical URI를 한 번만 인코딩한 게 문제였습니다.
서버리스 실시간 매치메이킹 — Cloudflare Functions · Supabase
실시간 대결 게임인데 상시 서버를 두지 않았습니다. 2초마다 도는 함수가 대기열을 훑어 실력이 비슷한 사람을 붙이고, 대기가 길어지면 매칭 범위를 넓힙니다.
Glicko-2 레이팅 직접 구현
추론 대결 게임을 만들면서 순위 시스템이 필요했습니다. Elo 대신 Glicko-2를 골랐습니다. 실력뿐 아니라 '그 실력을 얼마나 믿을 수 있는지'까지 다루기 때문입니다.
useEffect cleanup과 타이머 — 의존성 배열이 지우는 예약
별이 순서대로 켜져야 하는데 안 켜졌습니다. 애니메이션 useEffect의 cleanup에서 타이머까지 지우고 있었고, 그 effect가 phase마다 다시 돌면서 타이머를 매번 죽였습니다.
대용량 CSV 스트리밍 — StreamingHttpResponse · select_related
관리 데이터를 CSV로 내보내는 기능인데 데이터가 쌓이니 응답이 느려지고 메모리를 먹었습니다. 응답을 스트리밍으로 바꾸고, ORM의 N+1을 select_related로 잡았습니다.
검색 결과가 없습니다.