# yceffort 🧪 — research

> Slides and research notes. Each slide is authored in Markdown with Marp directives.

## Slides

- [OG 스크래핑 서버를 Node.js로 짓는다면 1부: 런타임 선택부터 에러율과 지연까지](https://research.yceffort.kr/slides/og-scraping-server-nodejs-1.md): 링크 미리보기는 왜 태생적으로 실패율이 높은가부터, 런타임 선택이 갈리는 네 지점, User-Agent와 인코딩, 캐시 스탬피드, 히트율 역산까지
- [OG 스크래핑 서버를 Node.js로 짓는다면 2부: SSRF는 어떻게 뚫리는가](https://research.yceffort.kr/slides/og-scraping-server-nodejs-2.md): 사용자가 준 URL을 서버가 대신 여는 일의 위험, 화이트리스트를 뚫는 우회 여섯 가지와 그것을 막는 방어 원리 다섯 개
- [react-query 딥다이브 1부: 사용법과 캐시의 생명주기](https://research.yceffort.kr/slides/react-query-deep-dive-1.md): 서버 상태라는 문제, useQuery의 상태 모델, staleTime과 gcTime — 캐시 항목의 일생을 따라가는 react-query 강의 1부
- [react-query 딥다이브 2부: 내부 동작, 실전 함정, SSR](https://research.yceffort.kr/slides/react-query-deep-dive-2.md): QueryObserver 구독 모델, structural sharing, HydrationBoundary — 내부 동작에서 실전 함정, SSR까지 react-query 강의 2부
- [Promise 딥다이브: 동작 원리와 실행 순서](https://research.yceffort.kr/slides/promise-deep-dive.md): 상태 머신, 마이크로태스크, 체이닝, 조합기, 에러 처리 — Promise의 동작 원리 정리와 실행 순서 퀴즈
- [Sentry 딥다이브 2부: 서버에서 이슈까지](https://research.yceffort.kr/slides/sentry-deep-dive-2.md): Relay 파이프라인부터 Debug ID, 그루핑 해시, 운영 규칙까지 — 서버에 도착한 이벤트가 이슈가 되는 과정
- [Sentry 딥다이브 1부: 브라우저에서 서버까지](https://research.yceffort.kr/slides/sentry-deep-dive-1.md): window.onerror 후킹부터 envelope 전송까지 — 실제 SDK 소스로 따라가는 에러 포착과 조립의 여정
- [Vite 번들 최적화 실전 가이드](https://research.yceffort.kr/slides/vite-bundle-optimization.md): 내 앱의 번들은 무엇으로 결정되는가: 네 가지 질문으로 나눠서 점검하고 고치는 법
- [Suspense & ErrorBoundary 딥다이브: 던지는 컴포넌트의 세계](https://research.yceffort.kr/slides/suspense-error-boundary-deep-dive.md): throw 하나로 이해하는 선언적 로딩과 에러 처리 — 개념부터 reconciler 내부 동작, 실무 경계 설계, React Query 연계까지
- ['use cache' 디렉티브 딥다이브: 캐시 경계의 끝까지](https://research.yceffort.kr/slides/use-cache-deep-dive.md): "use cache" 한 줄이 만드는 빌드 타임 변환, 캐시 키, cacheLife, 그리고 Cache Components까지
- ['use client' 디렉티브 딥다이브: 클라이언트 경계의 끝까지](https://research.yceffort.kr/slides/use-client-deep-dive.md): 'use client' 한 줄이 만드는 모듈 경계, 빌드 타임 변환, Flight 직렬화
- [useEffect — 안 쓰는 게 최선이다](https://research.yceffort.kr/slides/useEffect-race-condition-stale-closure.md): 주니어를 졸업하려는 개발자를 위한 useEffect 딥다이브 — 안티패턴, race condition, stale closure, event vs effect, tearing, Suspense까지
- [리액트 렌더링 최적화 가이드](https://research.yceffort.kr/slides/react-rendering-optimization-guide.md): 객체 참조, memo, useMemo, useCallback, 그리고 구조적 최적화까지 — 실무에서 바로 쓰는 렌더링 최적화 판단 기준
- [Render nothing, faster: <></>, null, 그리고 hook](https://research.yceffort.kr/slides/render-nothing-faster.md): 아무것도 렌더링하지 않는 두 가지 흔한 패턴을 JSX runtime/reconciler 관점에서 다시 본다
- [패키지 가이드 4탄) dependencies, devDependencies, peerDependencies](https://research.yceffort.kr/slides/best-practice-for-package-4.md): 세 가지 의존성 필드의 역사, 정의, 그리고 현대적 의미
- ['use client'는 무슨일을 하는걸까?](https://research.yceffort.kr/slides/use-server-user-client.md): 🤔
- [패키지 가이드 3탄) 패키지 제작을 위한 가이드](https://research.yceffort.kr/slides/best-practice-for-package-3.md): 🤔
- [패키지 가이드 2탄) 패키지 제작을 위한 타입 제공 가이드](https://research.yceffort.kr/slides/best-practice-for-package-2.md): 생각보다 잘 모르고 있던 타입스크립트
- [패키지 가이드 1탄) 패키지 제작을 위한 package.json 가이드](https://research.yceffort.kr/slides/best-practice-for-package-1.md): package.json 만 잘만들어도 반은 먹고 간다.
