devnote-vienna453.hashnode.devuseEffect 지옥이란 무엇이며, 어떻게 안전하게 사용하는가React를 어느 정도 사용하다 보면 한 번쯤은“useEffect 지옥에 빠졌다”는 말을 듣거나 직접 느껴본 적이 있을 것이다. useEffect가 계속 늘어나고 의존성 배열은 점점 길어지고 왜 실행되는지 이해하기 어려워지며 eslint-disable-next-line 이 늘어나는 상태 하지만 많은 사람들이 오해한다.useEffect 지옥은 useEffect가 많아서 생기는 문제가 아니다. 이 글에서는 ‘useEffect 지옥’의 ...Jan 12·3 min read
devnote-vienna453.hashnode.devZod란 무엇인가: TypeScript에서 런타임 검증과 타입 안정성을 동시에 해결하는 방법TypeScript 프로젝트를 하다 보면 반드시 마주치는 문제가 있다.바로 “타입은 있는데, 데이터는 믿을 수 없다”는 것이다. TypeScript는 컴파일 타임에는 강력하지만,런타임에 들어오는 데이터에 대해서는 아무런 보장을 해주지 않는다. API 요청 데이터 사용자 입력(Form) 환경 변수 (process.env) 외부 JSON / 설정 파일 이 모든 것은 타입 시스템 바깥에서 들어온다. 이 문제를 해결하기 위해 등장한 라이브러...Jan 10·3 min read
devnote-vienna453.hashnode.devFlatpak을 이해하기 위한 배경 지식배포판, 라이브러리 충돌, 그리고 OSTree까지 리눅스 데스크톱에서 Flatpak이 표준처럼 자리 잡은 데에는 분명한 이유가 있다.그 이유를 이해하려면 단순히 “Flatpak은 패키징 시스템이다”를 넘어서,리눅스 배포판 구조, 라이브러리 버전 충돌, OSTree라는 기술까지 함께 이해해야 한다. 이 글에서는 다음 질문에 답해본다. 리눅스에서 말하는 배포판이란 무엇인가? 라이브러리 버전 충돌은 왜 발생하는가? Flatpak은 이 문제를 어...Jan 8·5 min read
devnote-vienna453.hashnode.devnpm SemVer 실무 가이드이 글은 npm의 Semantic Versioning(SemVer) 을 처음 접하는 개발자부터, 실무에서 이미 사용하고 있지만 헷갈리는 포인트가 많은 개발자까지를 대상으로 한다. 단순한 규칙 나열이 아니라, 실제 업무에서 어떻게 쓰이고, 어디서 사고가 나며, 어떤 관습이 굳어졌는지를 중심으로 정리했다. 1. SemVer란 무엇인가? SemVer(Semantic Versioning)는 버전 번호에 의미를 부여하는 규칙이다. 기본 형식은 다음과 ...Jan 7·3 min read
devnote-vienna453.hashnode.devDFS와 BFS, 그리고 Preorder / Inorder / Postorder의 진짜 관계트리나 그래프를 공부하다 보면 항상 함께 등장하는 개념이 있다. DFS / BFS Preorder / Inorder / Postorder 이 둘은 자주 묶여 설명되지만, 실제로는 역할과 레벨이 다르다.이번 글에서는 다음 질문들에 답하는 흐름으로 정리해본다. DFS는 왜 순회 방식이 3가지로 나뉘는가? 순회 코드는 같은데 visit 위치만 다른 건가? BFS에는 왜 preorder / postorder 같은 개념이 없는가? 실무에서...Jan 6·4 min read