AWS MFA 분실, 공증까지 받았다
Google Authenticator를 실수로 삭제해 AWS 루트 계정에 접근할 수 없게 됐다. 복구 과정에서 결국 공증까지 받게 된 이야기.
useState는 내부에서 어떻게 동작하는가
useState는 어디에 저장될까? Fiber와 Hook 구조를 통해 state가 저장되고 업데이트되는 과정을 내부 구현 기준으로 살펴보기
WebView postMessage 인증 통신 설계와 토큰 자동 복구
React Native WebView에서 postMessage 기반 메시지 프로토콜을 설계하고 토큰을 자동 복구한 과정.
setInterval과 setTimeout 재귀, 뭐가 다를까
둘 다 주기적 작업에 쓰이지만 다른 스케줄링 방식, Task Queue에 콜백이 쌓이는 시점, 비동기 작업에서의 overlap 문제, React stale closure까지 이벤트 루프 레벨에서 살펴보기
React state는 컴포넌트가 아니라 '위치'에 연결된다
React state는 컴포넌트에 저장되지 않는다. 렌더 트리의 '위치'에 연결된 값이다. 이 관점으로 보면 setState, state 초기화, key 동작을 모두 일관되게 이해할 수 있다.
FCP 12.3s → 1.1s: Phaser 맵 로딩 파이프라인 최적화
Lighthouse 25점짜리 맵 첫 화면을 rollup-plugin-visualizer로 분석하고, 중복 fetch 제거·WebP 전환·번들 지연 로딩으로 개선한 과정.
typescript-eslint 오픈소스에 기여하다 1
non-null assertion의 false positive 버그를 분석하고 수정하면서 타입스크립트의 제네릭과 타입 추론을 깊이 들여다보게 되다.
블로그에 도메인 붙이기
이론으로 알던 DNS를 직접 Cloudflare에서 도메인을 사고 Vercel에 연결하면서 확인해보다.
이미지 조회 2.0s → 110ms: 식당 이미지 파이프라인과 S3 최적화
Presigned URL 조회 병목을 CloudFront CDN으로, 파일 크기를 클라이언트 WebP 변환으로 줄인 과정과 그 선택의 이유.
소음 불편 6건 → 0건: WebRTC 오디오 옵션으로 Krisp의 한계 보완하기
화상회의에서 유입되던 외부 소음을 LiveKit의 Krisp과 WebRTC 조합으로 50dB 억제(99.7% 감소)하다.
경계선 안에서도 끊기는 이유: tick 이탈 감지 완화와 렌더 조건 수정
연결과 가시성을 분리했지만 경계 근처에서 여전히 연결이 순간적으로 끊기거나 가시선이 깜빡였다. tick 타이밍과 렌더 조건이라는 두 파생 이슈를 서버와 클라이언트 양쪽에서 추적한 과정을 담았다.
roomId = contactId: 연결 단위와 가시성 단위를 분리하기까지
바운더리 시스템을 서버에서 안정화한 뒤 클라이언트에서 새로운 문제가 드러났다. 연결과 가시성을 분리하고 상태 모델을 재설계한 과정을 담았다.
1-hop에서 BFS로: 대화 Boundary를 그래프로 재정의한 과정
2D 가상 공간에서 근접 화상 연결을 구현하며 1-hop 방식의 구조적 한계를 발견하고 다시 설계한 과정을 담았다.
임시 저장과 debounce 구현
setTimeout, clearTimeout, 클로저를 직접 다루며 debounce와 throttle, lodash 옵션까지 이벤트 실행 시점을 설계하는 법을 익히다.