welcome to sisi's space! ‎ε(*⌒▽⌒)੭*゚¨゚゚・*:..☆

분류 전체보기 17

[git] 브랜치 삭제가 안 될 때: `error: cannot delete branch used by worktree` 해결 방법

git 브랜치 삭제할때 가끔 나오는 에러error: cannot delete branch '{branch-name}' used by worktree at '/Users/me/Desktop/myrepo' 삭제하려는 브랜치가 현재 worktree에서 체크아웃된 상태라서 삭제할 수 없다는 뜻이다.왜 이런 에러가 뜨는 걸까?Git은 현재 체크아웃된 브랜치를 삭제하지 못하게 막아둔다. 일종의 안전장치이다..특히 git worktree를 쓰는 경우, 하나의 저장소에 여러 작업 디렉토리가 연결될 수 있는데, 그 중 하나라도 해당 브랜치를 사용 중이면 삭제가 안 된다.used by worktree at '/Users/me/Desktop/myrepo'에러 메시지에서 이 부분을 보면, 저 경로의 worktree에서 {br..

Dev & Study 00:28:38

[RN] React인데 왜 window가 없지? DOM API와 런타임 환경

프론트 개발을 하다 보면 scrollIntoView, container.children, window 같은 DOM API를 너무 자연스럽게 사용하게 된다. 그런데 이 코드를 그대로 React Native로 옮기면?.... 당연히 안 된다...!!!이유는 간단하다. React Native에는 DOM이란게 존재하지 않기 때문이다.이 글에서는 DOM API를 왜 React Native에선 쓰면 안되는지, typeof window === 'undefined' 체크는 왜 필요한지, 그리고 cross-platform 환경에서 안전하게 코드를 짜는 방법까지 정리해보겠다.1. DOM이란?DOM: Document Object Model. 브라우저가 HTML 문서를 트리 구조로 표현한 객체 모델. Hello World..

Dev & Study 00:09:57

맥 개발환경 세팅, .zshrc 파일 확인하기, export로 환경변수 설정 방법

맥에서 개발 환경을 세팅하다 보면 .zshrc를 자주 건드리게 된다. 특히 JAVA_HOME 같은 환경 변수를 세팅할 때 한 번쯤은 헷갈리기 마련이다. 환경변수 세팅은 기본중의 기본그래서 이 글에서는 .zshrc 확인 방법, export의 동작 원리, 그리고 영구 설정 방법을 정리해보려고 한다.1. .zshrc 파일 내용 확인하기.zshrc는 zsh 셸이 실행될 때 읽는 설정 파일이다. 환경 변수, alias, PATH 설정 등이 들어 있다.파일 내용을 확인하는 방법은 여러 가지가 있다.cat ~/.zshrc # 전체 내용 한번에 출력tail ~/.zshrc # 마지막 10줄만 보기tail -n 20 ~/.zshrc # 마지막 20줄만 보기less ~/.zshrc ..

Dev & Study 2026.03.04

[javascript] Epoch time이란, 현재 Epoch time 얻는 법

Epoch time: Unix epoch(1970년 1월 1일 00:00:00 UTC) 이후부터 경과한 시간을 숫자로 나타내는 방식. 보통 초(second) 또는 밀리초(milliseconds) 단위의 정수로 저장된다. 시스템 간 시간 표현을 단순하게 맞추기 위해 널리 사용된다. 예시:0 → 1970년 1월 1일 00:00:00 UTC1737417600000 → 2026년 1월 21일 00:00:00 UTC이처럼 사람이 읽는 형태의 날짜가 아니라, 특정 기준 시점 이후 얼마나 시간이 지났는지를 나타내는 숫자다. 대부분의 웹 환경과 JavaScript에서는 밀리초 단위 Epoch time을 사용한다. Epoch time의 특징:타임존(Time Zone)에 독립적이다. 일반적인 날짜 문자열은 시스템 설정이나..

Dev & Study 2026.03.03

[npm] npm uninstall, 패키지 제거 방법

프로젝트를 유지보수하다 보면 더 이상 사용하지 않는 패키지를 제거해야 하는 상황이 자주 발생한다. 특히 타입 패키지(@types/*)는 테스트 과정에서 잠깐 설치했다가 제거해야 하는 경우가 많다. 이 글에서는 패키지 제거 과정과, 제거가 제대로 되었는지 확인하는 방법을 정리했다.1. 패키지 제거npm uninstall @types/react-native node_modules에서 패키지 제거package.json에서 dependency 항목 제거package-lock.json 갱신2. 실제로 제거되었는지 확인npm ls @types/react-native결과:아무것도 출력되지 않으면 -> 정상적으로 제거된 상태여전히 출력된다면 -> 다른 패키지가 간접적으로 의존하고 있는 경우 (transitive dep..

Dev & Study 2026.03.03

[Next.js] App Router에서 "use client"란

Next.js 13 이후 App Router 환경에서는 컴포넌트의 기본 동작이 이전과 달라졌다. 핵심은 Server Component가 기본값이라는 점이다. 그래서 "use client"의 의미를 이해하려면 먼저 이 기본 동작을 알아야 한다.App Router 기본 동작: 모든 컴포넌트는 Server ComponentApp Router에서는 별도 선언이 없으면 모든 컴포넌트가 Server Component로 동작한다. Server Component의 특징:서버에서만 실행됨브라우저로 JavaScript 번들이 내려가지 않음서버 렌더링 중심 구조 이 구조 때문에 다음 기능을 사용할 수 없다.useStateuseEffectuseRef이벤트 핸들러 (onClick, onChange 등)window, doc..

Dev & Study 2026.03.03

[git] merge 되돌리는 방법

이 글에서는 git merge를 잘못 했을 때, 되돌리는 방법을 다음 세 가지 상황으로 나누어 정리한다.merge commit을 만들었지만 아직 push하지 않은 경우이미 push된 merge merge 진행 중(commit 전)인 상태1. merge 했지만 아직 push하지 않은 경우remote에 반영되지 않았기 때문에 히스토리를 되돌려도 문제가 없다. 이때는 git reset을 해주자.git reset --hard HEAD~1 HEAD~1 → 바로 이전 커밋으로 이동--hard → 워킹 디렉토리와 staging area까지 모두 되돌림merge commit 자체를 삭제하는 것임주의: --hard는 워킹 디렉토리 변경사항까지 모두 삭제하므로merge 이후 추가 작업을 한 경우아직 commit하지 않은 ..

Dev & Study 2026.03.03

[npm] peerDependency strictness란

모노레포 환경에서 TypeScript 관련 이슈를 추적하다 보면, 단순히 버전이 맞는 것처럼 보이는데도 typecheck가 실패하는 상황을 겪을 수 있다. 이 문제의 원인이었던 것이 peerDependency strictness였다. 특히 Nx 기반 프로젝트에서 dependency tree가 invalid 상태로 판단되면 예상하지 못한 타입 충돌이 날 수 있다.이 글은 peerDependencies가 무엇인지, npm이 이를 얼마나 엄격하게 처리하는지, 그리고 어떤 방식으로 문제를 해결했는지 다룬다.peerDependencies란 무엇인가peerDependencies는 이 패키지는 특정 라이브러리와 같은 인스턴스를 공유해서 사용해야 한다는 뜻이다.예시:{ "peerDependencies": { "..

Dev & Study 2026.03.03

[git] stash: 브랜치 이동 시, 하던 작업을 잠시 치워두는 법

개발하다 보면 아직 커밋하기 애매한 작업이 있는데 다른 브랜치로 이동해야 하는 상황이 생긴다. 이런 상황에서 필요한 게 git stash다.git stash는 현재 작업 중인 변경사항을 임시로 보관해 두고 워킹 디렉토리를 깨끗한 상태로 만드는 기능이다. 이후 언제든지 다시 가져와 이어서 작업할 수 있다.git stash의 특징많이 헷갈리는 부분인데, git stash는 특정 브랜치에 묶이지 않는다.즉 다음과 같이 사용 가능하다.브랜치 A에서 stash 생성브랜치 B로 이동브랜치 B에서 stash 적용stash는 레포지토리 단위로 관리되는 stack 구조이다. stash는 stack 구조로 저장된다stash는 여러 개가 쌓이며 저장된다. 다음 명령으로 확인해보자.git stash list결과:stash@{..

Dev & Study 2026.03.02

Next.js가 삭제된 파일을 계속 참조하는 문제 (.next 캐시 삭제 방법)

프로젝트에서 페이지를 정리하면서 특정 파일을 삭제했는데, 이후 TypeScript typecheck가 계속 실패하는 문제가 발생했다. 에러 메시지를 보니 이미 삭제한 파일을 여전히 참조하고 있었다. 실제 소스에는 해당 파일이 없는데도 빌드나 typecheck에서 계속 문제가 발생했다.원인은 Next.js가 생성하는 타입 캐시와 빌드 아티팩트였다. 특히 .next 디렉토리에 남아 있는 타입 파일이 삭제된 페이지를 계속 참조하고 있었고, tsc가 해당 파일을 참조하려고 시도하면서 문제가 발생했다.문제 원인 - Next.js 빌드 시Next.js는 빌드 과정에서 .next 디렉토리에 빌드 아티팩트, 라우팅 정보, 타입 관련 파일, 캐시 데이터 등 파일들을 생성한다.특히 최근 Next.js에서는 .next/ty..

Dev & Study 2026.03.02