2026.01.03E·48메모리 누수 찾기
앱을 오래 쓰면 느려지는 이유가 메모리 누수였다. Chrome DevTools Memory 탭으로 범인을 찾는 과정을 정리했다.
MemoryPerformanceDevTools
→2026.01.01E·46에러 스택 트레이스 읽기
빨간 에러 메시지가 뜨면 당황해서 그냥 구글에 복붙했는데, 스택 트레이스를 읽는 법을 알고 나니 디버깅 속도가 10배 빨라졌다.
DebuggingJavaScriptError Handling
→2025.12.31E·45React DevTools 활용
React 앱이 느린 이유를 찾지 못해 코드만 뒤지고 있었는데, React DevTools의 Profiler와 Components 탭이 범인을 바로 찾아줬다.
ReactDevToolsPerformance
→2025.12.30E·44네트워크 탭에서 API 디버깅
API 응답이 이상한데 코드 문제인지 서버 문제인지 구분이 안 될 때, 브라우저 네트워크 탭 하나로 원인을 찾는 방법.
DevToolsAPIDebugging
→2025.12.29E·43console.log 대신 debugger 활용
console.log 100개 찍어가며 디버깅하던 시절을 끝내고, 브라우저 debugger와 breakpoint로 효율적으로 버그를 잡는 방법.
DebuggingDevToolsJavaScript
→2025.12.15E·29"Cannot find module" 에러가 또 떴습니다 (패키지 매니저의 배신)
`npm install`을 했는데 모듈을 못 찾는다고 합니다. 로컬에선 되는데 CI에서만 터지는 이유와 `package.json`의 `exports`, 그리고 TypeScript 설정까지 완벽 분석.
TypeScriptNode.jsnpm
→2025.11.28G·22Android 빌드가 빨간 줄을 뱉어요 (Gradle의 늪에서 탈출하기)
안드로이드는 Xcode보다 낫다고요? Gradle 지옥에 빠져보면 그 말이 쏙 들어갈 겁니다. minSdkVersion 충돌, Multidex 에러, Namespace 변경(Gradle 8.0), JDK 버전 문제, 그리고 의존성 트리 분석까지 완벽하게 해결해 봅니다.
FlutterAndroidGradle
→2025.11.23G·18앱이 죽었어요: _TypeError (Null is not a subtype of String)
서버에서 잘 오던 데이터가 갑자기 앱을 죽입니다. 'type Null is not a subtype of type String' 에러의 원인과, 안전한 JSON 파싱을 위한 Null Safety 전략을 정리해봤습니다.
FlutterJSONDart
→2025.11.22G·17API가 무한 로딩에 걸렸을 때 (Timeout 처리)
서버가 죽었는지 1분째 로딩바만 돌아가고 있습니다. http 패키지와 Dio에서 타임아웃을 설정하는 방법, 그리고 사용자에게 '잠시 후 다시 시도해주세요'라고 말하는 우아한 방법을 정리해봤습니다.
FlutterNetworkAPI
→2025.11.18G·12ProviderNotFoundException 해결법 (Context의 비밀)
분명히 Provider로 감쌌는데 찾을 수 없다고 에러가 뜹니다. BuildContext와 위젯 트리의 '족보' 관계를 이해하면, 이 에러는 다시는 당신을 괴롭히지 못합니다.
FlutterStateManagementProvider
→2025.11.17G·11setState를 썼는데 왜 화면이 안 바뀌죠? (불변성의 중요성)
분명 코드를 실행했는데 화면은 그대로입니다. 리스트에 add를 했는데 반응이 없습니다. Dart의 메모리 참조(Reference)와 불변성(Immutability)을 이해하면, 당신의 앱은 다시 살아납니다.
FlutterStateManagementDart
→2025.11.16G·10화면이 자꾸 깜빡거려요 (Rebuild의 함정)
상태만 바꿨는데 왜 이미지까지 다시 로딩될까요? FutureBuilder를 build 안에 넣는 실수부터 const 생성자, RepaintBoundary까지, 플러터 앱이 번개처럼 파닥거리는 원인을 잡습니다.
FlutterPerformanceOptimization
→2025.11.15G·09TextField 포커스가 자꾸 풀립니다 (재렌더링의 함정)
글자 하나 칠 때마다 키보드가 내려가고 포커스가 풀리나요? 당신이 저지른 '컨트롤러 초기화' 실수를 찾아드립니다. TextEditingController와 build() 메서드의 관계를 완벽하게 파헤칩니다.
FlutterUIStateManagement
→2025.11.10G·04RenderFlex overflowed 에러 해결: 노란 줄무늬의 악몽
Flutter 개발자라면 피할 수 없는 노란색/검은색 줄무늬 에러. 단순히 Expanded로 감싸는 게 답이 아닐 수 있습니다. 플러터의 제약 조건(Constraints) 시스템을 완벽하게 이해해봤다.
FlutterUILayout
→2025.10.20E·16환경 변수가 undefined로 나올 때 (Vite): process.env는 잊으세요
Vite에서 환경 변수가 제대로 로드되지 않는 문제의 원인과 해결 방법을 심층 분석합니다. bundler의 동작 원리, 보안 모델, Docker/CI 환경에서의 동적 주입, 그리고 Monorepo 설정까지 완벽하게 가이드합니다.
ViteEnvironment VariablesConfiguration
→2025.10.12E·14z-index가 안 먹을 때
z-index가 작동하지 않는 문제와 stacking context 이해하기
CSSz-indexStacking Context
→2025.09.25E·12Props로 받은 객체가 undefined일 때
부모에서 전달한 props가 undefined로 나와서 앱이 크래시되는 문제 해결
ReactPropsTypeScript
→2025.09.15E·10useEffect 무한 루프 탈출기
useEffect 의존성 배열 때문에 무한 루프에 빠졌던 경험과 해결 방법
ReactuseEffectHooks
→2025.09.11U·11검색창에 'Vue'를 쳤는데 'React'가 나왔다 (Race Condition)
비동기 통신의 함정, 경쟁 상태(Race Condition)를 해결하는 과정을 담았습니다. 플래그 변수부터 AbortController까지, 탭 전환 시 발생하는 버그까지 잡는 법.
ReactNetworkDebugging
→2025.09.10U·10setState가 즉시 반영 안 되는 이유 (React Batching)
React의 setState가 비동기로 동작해서 겪었던 삽질과 해결 과정. 사학과 출신 창업자가 겪은 React 상태 관리의 미스터리를 풉니다.
ReactJavaScriptState Management
→2025.09.08U·09내 코드가 서버에서 실행된 줄도 몰랐다 (ReferenceError: window is not defined)
React에서는 잘 돌아가던 코드가 Next.js로 옮기자마자 'window is not defined' 에러를 뿜으며 폭발했습니다. Next.js의 SSR/Hydration 원리를 통해 이 에러가 발생하는 근본적인 이유를 파헤치고, useEffect, typeof 체크, Dynamic Import 등 3가지 확실한 해결책을 제시합니다.
Next.jsSSRReact
→2025.09.05U·06내 회원가입 코드는 50% 확률로 실패했다 (Async/Await의 함정)
회원가입 후 프로필 이미지를 올리는 간단한 로직이었습니다. 그런데 왜 가끔 'User Not Found' 에러가 뜰까요? 자바스크립트의 비동기 처리와 Promise Waterfall 문제를 해결한 과정을 공유합니다.
JavaScriptAsyncReact
→2025.08.27U·04키보드 입력이 딴 데로 튄다? React key='index'의 저주
React 콘솔에 뜨는 'unique key prop' 경고, 귀찮아서 index로 때우셨나요? 그 사소한 습관이 입력 폼 데이터를 뒤죽박죽으로 만들고 사용자를 미치게 만듭니다. Virtual DOM의 동작 원리와 함께 왜 index를 key로 쓰면 안 되는지, 제 '삽질' 경험을 통해 파헤칩니다.
ReactFrontendDebugging
→2025.08.03E·03데이터가 캐시돼서 최신 값이 안 나올 때 (Next.js 캐싱의 모든 것)
데이터를 수정했는데 페이지에 계속 예전 값이 나오는 유령 같은 현상. Next.js 13+의 강력한(그리고 사악한) 캐싱 메커니즘을 4계층으로 분석하고, React Query와의 차이점, 그리고 실제 디버깅 전략을 공유합니다.
Next.jsCachingData Fetching
→2025.05.27U·02React 조건부 렌더링의 함정: 화면에 숫자 '0'이 왜 나오죠? (&& 연산자와 Falsy의 배신)
React에서 `count && <Component />`를 썼을 때 의도치 않게 숫자 0이 화면에 출력되는 현상, 다들 겪어보셨죠? JavaScript의 단락 평가(Short-Circuit Evaluation)와 Falsy 값의 특성 때문에 발생하는 이 버그의 원인을 심층 분석하고, 3가지 확실한 해결책(비교 연산자, 이중 부정, 삼항 연산자)과 React Native에서의 크래시 위험성까지 상세히 다룹니다.
ReactJavaScriptFrontend
→2025.05.19U·02내 이미지가 다 엑박이네? (Next.js Image 보안 에러와 최적화 원리)
멀쩡하던 이미지가 Next.js의 `<Image>` 컴포넌트를 쓰자마자 에러를 뿜어냈습니다. 단순한 설정 문제인 줄 알았지만, 알고 보니 Next.js가 서버 자원을 보호하기 위한 강력한 보안 장치였습니다. `remotePatterns` 설정 방법과 Image Optimization의 내부 동작 원리를 깊이 있게 파헤칩니다.
Next.jsImage OptimizationSecurity
→2025.05.18U·01내 API 키가 왜 undefined지? (Next.js 환경변수와 보안 사고)
로컬에서는 잘 되던 API 키가 브라우저 콘솔에서는 `undefined`로 뜨는 현상. Next.js의 보안 철학인 'Server-Client Boundary'를 이해하지 못해 3시간을 삽질하고, 실수로 비밀 키를 노출할 뻔했던 아찔한 경험을 공유합니다.
Next.jsEnvironment VariablesSecurity
→2025.05.15F·105매일 밤 12시, 서버가 죽는 이유 (Stack vs Heap)
잘 돌아가던 Node.js 서버가 매일 밤 12시만 되면 'Heap Out of Memory'를 뱉으며 죽었습니다. 원인은 전역 변수에 쌓인 데이터 더미였죠. 이 디버깅 과정을 통해 배운 Stack과 Heap의 차이, 그리고 메모리 누수를 막는 방법을 정리했습니다.
CSMemoryNode.js
→2025.05.12E·01Tailwind 스타일이 적용 안 될 때 체크해야 할 5가지 (The Case of Missing Styles)
분명히 클래스를 적었는데 화면은 그대로다? 개발자 도구엔 클래스가 있는데 스타일이 없다? Tailwind 실종 사건 수사 일지.
TailwindCSSDebuggingCSS
→