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

전체 글 14

[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

[Next.js] next-env.d.ts가 자꾸 바뀌는 문제

pre-commit 테스트를 돌리던 중 생긴 문제...^^;apps/store/next-env.d.ts 파일이 자동으로 매번 수정되었다.내가 이 파일을 직접 수정한 적은 없었으나 git에는 변경 사항이 생기고, pre-commit 단계에서 fail했다.결론부터 말하면 이 문제는 Next.js가 next-env.d.ts를 자동으로 재생성하면서 발생한 이슈였다.next-env.d.ts란?next-env.d.ts는 Next.js 프로젝트에서 TypeScript 타입 환경을 설정하기 위해 자동으로 관리되는 파일이다.일반적으로 아래와 같은 내용이 들어 있다./// /// // NOTE: This file should not be edited이 파일은 Next.js가 프로젝트 상태를 보고 자동으로 업데이트하며, 타..

Dev & Study 2026.03.02

[git] rebase란? merge와의 차이점, rebase 후 push 방법

rebase란?Git merge와 rebase 둘 다 두 브랜치를 합친다는 점에서 같지만, 히스토리를 어떻게 남기는지에 따라 다르다.merge: 기존 히스토리를 그대로 유지하면서 새로운 merge commit을 만든다.rebase: 내 브랜치의 커밋들을 base 위에 다시 쌓는다.이 설명만 보면 이해가 잘 안 될 것이다..^^;; 밑에서 자세히 설명하겠다.이 글에서는 rebase의 동작 원리 그리고 rebase 후 push하는 법을 다룬다.rebase가 하는 일다음과 같이 main branch와 feature branch가 존재한다고 해보자.main: A --- B --- C \feature: D --- E이 상태에서 feature branch에서 다음 커맨드를..

Dev & Study 2026.03.02

멋사 세미나 과제 5

IP, DNS, 포트, VMIP (Internet Protocol)IP는 인터넷에서 데이터를 주고받을 때 사용하는 주소 체계이다. 모든 네트워크 장치는 IP 주소를 통해 서로를 식별하고 통신한다. IP는 현재 IPv4와 IPv6 두 가지 방식으로 나뉜다.IPv4: 숫자 4개로 구성되며, 각 숫자는 0~255 사이의 값을 가진다. 예: 192.168.1.1IPv6: 더 많은 주소를 제공하기 위해 16진수 8개로 확장된 형태다. 예: 2001:0db8:85a3:0000:0000:8a2e:0370:7334IPv4는 주소 부족 문제로 인해 현재 IPv6로 점차 대체되고 있다.DNS (Domain Name System)DNS는 사람이 기억하기 쉬운 도메인 이름(예: www.google.com)을 숫자로 된 IP ..

Dev & Study 2024.12.05