Type288
행동과 동기를 함께 살펴 288가지 조합 중 나의 이야기를 만나는 성향 테스트
DEV NOTES & PROJECT STORIES
DailBit은 개발 기록을 쌓는 기술 블로그입니다.
문제 해결 과정, 설계 판단, 직접 만든 서비스를 운영하며 겪은 시행착오를 글로 정리합니다.
01 · LATEST NOTES
제품을 만들고 운영하며 배운 기술, 비교와 선택의 기준, 점검 목록을 정리합니다.
MySQL에서 더미 데이터 100만 건을 만들어 인덱스 전후 조회 속도를 비교하고, 인덱스를 많이 걸면 INSERT가 얼마나 느려지는지, 멀티 컬럼 인덱스의 순서와 커버링 인덱스가 왜 빠른지 정리합니다.
OTO의 짝·팀 배정 코드를 시뮬레이션으로 검증하며 발견한 세 가지 문제(sort 기반 셔플의 편향, 조건 불만족 시 스택 오버플로, 해답이 있어도 멈추는 팀 배정 루프)와 Fisher–Yates 셔플, 시도 횟수 제한, 백트래킹으로 고치는 방법을 정리합니다.
프레임워크 없이 Vite의 SSR 빌드와 renderToString으로 주요 경로를 정적 HTML로 만든 방법, hydrateRoot로 이어 붙이는 방식, 그리고 경로별 title·canonical을 바꾸지 않으면 생기는 SEO 문제를 실제 빌드 결과로 정리합니다.
BibleFlow에서 경로를 따라 인물 아이콘을 움직이기 위해 위도 보정을 넣은 거리 기반 보간을 만들고, requestAnimationFrame으로 진행률을 관리하며, 줌 단계에 따라 래스터 지도를 교차 페이드한 과정을 정리합니다.
홀리맨에서 한글 단어를 자음·모음 칸으로 나누기 위해 유니코드 음절 공식을 쓴 방법, 쌍자음과 겹모음을 다르게 다룬 이유, 조합 중인 한글 입력을 즉시 반영하며 생긴 겹모음 문제를 정리합니다.
물을 채우는 타이밍 게임 뚝뚝에서 requestAnimationFrame 루프를 React 훅으로 만든 방법, 프레임 사이 경과 시간을 40ms로 제한한 이유, ref와 상태를 나눠 쓴 구조를 정리합니다.
canvas에 직접 다시 그리기, html2canvas로 DOM 캡처하기, canvas로 그린 이미지를 파일로 저장하고 Web Share API로 공유하는 방법(공유 시트는 이후 제거됨). 세 서비스에서 실제로 쓴 방식을 코드와 함께 비교하고 각각의 함정을 정리합니다.
Type288 채점 로직에서 완전 동점을 번호 순서가 아닌 응답 해시(FNV-1a)로 가르는 이유, 리커트·A/B 문항을 같은 무게로 합치는 방법, 의존성 없이 node:test로 채점 규칙을 고정한 과정을 정리합니다.
Type288의 288개 결과를 generateStaticParams로 미리 생성하고, 3MB 결과 데이터를 서버 컴포넌트에만 두어 번들에서 빼고, 테스트 직후의 개인 점수는 sessionStorage와 useSyncExternalStore로 덧입힌 구조를 정리합니다.
output: export, trailingSlash, 이미지 최적화 해제부터 wrangler pages deploy, _headers 캐시 설정, 빌드 시 ads.txt 생성, 환경 변수가 번들에 들어가는 시점까지 DailBit 서비스들의 실제 설정을 기준으로 정리합니다.
02 · BROWSE BY TOPIC
dailbit.com에서 블로그 목록 페이지의 og:url이 홈 주소로, 글 상세의 트위터 카드가 사이트 기본값으로 나가던 원인을 App Router 메타데이터의 얕은 병합 규칙에서 찾고, 페이지별 메타데이터 헬퍼로 고친 과정을 정리합니다.
dailbit.com의 블로그 글과 프로젝트 페이지마다 1200×630 공유 이미지를 빌드 시점에 생성한 방법을 정리합니다. Satori가 woff2를 읽지 못하는 문제, Google Fonts의 text 파라미터로 필요한 글자만 받는 방법, 네트워크 실패에 대비한 폴백까지 다룹니다.
인타바의 운동·휴식 전환음을 Web Audio API의 OscillatorNode로 만든 방법과, setState 업데이트 함수 안에서 소리를 재생하면 생기는 문제, 오디오 시계로 음을 예약하는 개선안을 정리합니다.
MySQL에서 더미 데이터 100만 건을 만들어 인덱스 전후 조회 속도를 비교하고, 인덱스를 많이 걸면 INSERT가 얼마나 느려지는지, 멀티 컬럼 인덱스의 순서와 커버링 인덱스가 왜 빠른지 정리합니다.
OTO의 짝·팀 배정 코드를 시뮬레이션으로 검증하며 발견한 세 가지 문제(sort 기반 셔플의 편향, 조건 불만족 시 스택 오버플로, 해답이 있어도 멈추는 팀 배정 루프)와 Fisher–Yates 셔플, 시도 횟수 제한, 백트래킹으로 고치는 방법을 정리합니다.
Type288 채점 로직에서 완전 동점을 번호 순서가 아닌 응답 해시(FNV-1a)로 가르는 이유, 리커트·A/B 문항을 같은 무게로 합치는 방법, 의존성 없이 node:test로 채점 규칙을 고정한 과정을 정리합니다.
03 · PROJECT STORIES
행동과 동기를 함께 살펴 288가지 조합 중 나의 이야기를 만나는 성향 테스트
집중력 향상을 위한 포모도로 타이머와 앰비언트 사운드
운동의 흐름을 놓치지 않는 인터벌 타바타 타이머
짝꿍과 팀을 빠르고 공정하게 구성하는 도구
04 · ABOUT DAILBIT
DailBit은 Daily와 Bit의 조합입니다. 매일의 작은 생각을 기록하고, 코드 한 비트씩 쓸모 있는 도구로 연결한다는 뜻을 담았습니다. 이곳에는 개발자 mirr56이 화면, 백엔드, 배포와 관측까지 직접 다루며 배운 내용을 모아 둡니다. 소개 보기 →
05 · TECH STACK
블로그와 프로젝트 이야기에서 다루는 기술 영역입니다. 화면 뒤의 시스템부터 배포 이후의 관측까지 정리합니다.
React · React Native · Next.js · Remix
Python · FastAPI · Node · NestJS · Elysia · Fastify
MySQL · MongoDB · Redis
Docker · Docker Compose · GitHub Actions · Prometheus · Loki · Grafana · Alloy
KEEP READING