분류 전체보기 72

Node.js에서 인증서 오류가 나는 이유와 확인 방법

1. 개요Node.js에서 HTTPS 요청을 보내다 보면인증서 관련 오류를 만나는 경우가 있다.대표적으로 다음과 같은 메시지다.UNABLE_TO_VERIFY_LEAF_SIGNATURESELF_SIGNED_CERT_IN_CHAINDEPTH_ZERO_SELF_SIGNED_CERTCERT_HAS_EXPIREDERR_TLS_CERT_ALTNAME_INVALID이런 오류를 처음 보면"서버가 이상한가?" 정도로 생각하기 쉽다.하지만 실제로는인증서 체인, 만료, 호스트명, CA 신뢰 목록 등여러 원인으로 발생할 수 있다.이 글에서는 Node.js에서 인증서 오류가 나는 이유와어떻게 확인해야 하는지 정리한다.2. 왜 인증서 오류가 발생하는가HTTPS 연결에서는단순히 암호화만 하는 것이 아니다.Node.js는 서버가 보..

Develope/Node.js 2026.04.15

Node.js Event Loop란 무엇인가? 동작 원리와 setTimeout, setImmediate 차이

1. 개요Node.js를 공부하다 보면 가장 자주 등장하는 개념 중 하나가 Event Loop다.처음 보면 추상적으로 느껴질 수 있다.싱글 스레드인데 어떻게 많은 요청을 처리하는가비동기 작업은 실제로 어떻게 동작하는가setTimeout, setImmediate, process.nextTick()은 왜 실행 순서가 다른가이 글에서는 Node.js의 핵심 개념인 Event Loop가 무엇인지 정리한다.2. Event Loop가 필요한 이유Node.js는 기본적으로 한 번에 하나의 JavaScript 코드를 실행한다.그런데 서버에서는 다음과 같은 작업이 자주 발생한다.파일 읽기네트워크 요청데이터베이스 접근타이머 처리이런 작업을 모두 순차적으로 기다리면 비효율적이다.그래서 Node.js는 오래 걸리는 작업을 직..

Develope/Node.js 2026.04.15

Node.js에서 TLS 인증서 검증은 어떻게 동작하는가

1. 개요Node.js에서 HTTPS 요청을 보내다 보면다음과 같은 TLS 관련 오류를 만날 때가 있다.UNABLE_TO_VERIFY_LEAF_SIGNATURESELF_SIGNED_CERT_IN_CHAINCERT_HAS_EXPIREDERR_TLS_CERT_ALTNAME_INVALID이런 오류를 해결하려면단순히 "인증서가 이상하다" 정도로 이해하는 것만으로는 부족하다.실제로는 Node.js가어떤 기준으로 서버 인증서를 검증하는지 이해해야 한다.이 글에서는 Node.js에서 TLS 인증서 검증이 어떻게 동작하는지 정리한다.2. TLS 인증서 검증이 필요한 이유HTTPS는 단순히 암호화만 하는 것이 아니다.중요한 것은 다음 두 가지다.지금 연결한 서버가 정말 의도한 서버인지서버가 제시한 인증서를 신뢰할 수 있..

Develope/Node.js 2026.04.14

Zustand를 로컬 상태 대신 써도 되는 순간은 언제일까

React에서 상태를 다룰 때 가장 먼저 떠오르는 도구는 보통 useState다.컴포넌트 안에서 바로 선언할 수 있고, 이해하기도 쉽다.반면 Zustand는 전역 상태 관리 도구라는 인식이 강하다.그래서 상태를 만들 때 종종 이런 고민이 생긴다."이건 그냥 useState로 두는 게 맞을까, 아니면 Zustand로 빼는 게 맞을까?"처음에는 단순한 모달 상태 하나였는데,조금 지나면 여러 컴포넌트에서 참조하고,라우트가 바뀌어도 유지하고 싶고,다른 액션과 함께 제어해야 하는 순간이 온다.바로 이때 로컬 상태와 전역 상태의 경계가 헷갈리기 시작한다.이번 글에서는 Zustand를 로컬 상태 대신 써도 되는 순간이 언제인지,그리고 반대로 그냥 useState로 두는 편이 더 좋은 순간은 언제인지 정리해보려고 한다..

Develope/React 2026.04.13

Zustand에서 전역 상태와 서버 상태를 어떻게 구분할까?

Zustand를 쓰기 시작하면 상태를 한곳에 모아두는 경험이 꽤 편하다.컴포넌트 어디서든 꺼내 쓸 수 있고, API도 단순해서 빠르게 전역 상태를 만들 수 있다.그래서 어느 순간 이런 고민이 생긴다."이 값도 store에 넣어도 될까?"예를 들어 아래 같은 값들이다.로그인한 사용자 정보상품 목록 API 응답장바구니 개수현재 열려 있는 모달 상태검색 결과로딩 상태겉으로 보면 모두 "여러 컴포넌트에서 같이 써야 하는 값"처럼 보인다.하지만 이들을 전부 같은 종류의 상태로 보면 점점 구조가 꼬이기 시작한다.이번 글에서는 Zustand를 사용할 때 자주 헷갈리는 전역 상태와 서버 상태의 차이를 정리하고,어떤 값은 store에 두는 것이 맞고 어떤 값은 서버 상태 도구로 관리하는 편이 좋은지 기준을 정리해보려고 ..

Develope/React 2026.04.13

Zustand store를 너무 크게 만들면 어떤 문제가 생길까? slice 패턴으로 나누는 기준

Zustand는 간단하다.처음 사용할 때는 store 하나를 만들고, 그 안에 상태와 액션을 모두 넣는 방식이 꽤 자연스럽다.예를 들어 아래 같은 코드는 시작하기에 충분히 편하다.import { create } from "zustand";interface AppState { user: { id: string; name: string } | null; theme: "light" | "dark"; notifications: string[]; cart: { id: number; name: string; quantity: number }[]; isLoading: boolean; setUser: (user: { id: string; name: string } | null) => void; setThe..

Develope/React 2026.04.13

Zustand에서 shallow 비교는 언제 필요할까? selector와 함께 이해하기

이전 글에서 Zustand selector는 언제 쓰는 것이 좋은지 정리했다.그다음 단계에서 자주 같이 등장하는 키워드가 바로 shallow다.selector를 찾아보다 보면 아래 같은 코드도 자주 보게 된다.import { shallow } from "zustand/shallow";const { bears, honey } = useBearStore( (state) => ({ bears: state.bears, honey: state.honey, }), shallow);처음 보면 "selector를 쓸 때는 shallow도 같이 써야 하나?"라는 생각이 들 수 있다.하지만 실제로는 그렇지 않다.shallow는 항상 필요한 옵션이 아니라, 여러 값을 묶어서 선택할 때 생기는 비교 문제를 완..

Develope/React 2026.04.11

Zustand Selector는 언제 써야 할까? 성능과 가독성 사이에서 판단하는 기준

Zustand를 사용하다 보면 자연스럽게 selector를 접하게 된다.공식 예제나 여러 글에서 아래와 같은 코드를 자주 볼 수 있다.const bears = useBearStore((state) => state.bears);처음 보면 단순히 "원하는 값만 꺼내오는 문법" 정도로 느껴질 수 있다.하지만 실제로는 렌더링 범위를 줄이고, 컴포넌트의 관심사를 분리하고, 상태 구독 범위를 명확하게 만든다는 점에서 꽤 중요한 역할을 한다.다만 여기서 한 가지 고민이 생긴다.selector는 항상 써야 할까?아니면 필요할 때만 선택적으로 써야 할까?이번 글에서는 Zustand selector를 "무조건 써야 하는 패턴"으로 보기보다, 언제 도입하면 좋고 언제는 굳이 복잡도를 늘릴 필요가 없는지에 집중해서 정리해보려..

Develope/React 2026.04.09

Node.js에서 신뢰하는 CA 인증서 목록 확인 방법

1. 개요HTTPS 통신에서 서버의 인증서를 검증하기 위해서는신뢰할 수 있는 인증기관(CA, Certificate Authority) 목록이 필요하다.Node.js는 기본적으로 자체 CA 목록을 내장하고 있으며,이 목록을 기반으로 서버 인증서를 검증한다.이 글에서는 Node.js에서 신뢰하는 CA 목록을 확인하는 방법을 정리한다.2. CA (Certificate Authority)란?CA는 서버 인증서를 발급하는 기관이다.대표적인 CA:DigiCertGlobalSignLet's EncryptSectigoNode.js는 이러한 CA들을 신뢰 목록으로 가지고 있으며,이 목록에 포함된 기관이 발급한 인증서만 정상적으로 검증된다.3. Node.js에서 CA 목록 확인하기Node.js에서는 tls 모듈을 통해내장..

Develope/Node.js 2026.04.08

Vuplex에서 JavaScript → C# 이벤트 전송 시 타이밍 이슈와 해결 방법

Vuplex에서 JavaScript → C# 이벤트 전송 시 타이밍 이슈와 해결 방법1. 개요Vuplex WebView를 사용하는 경우, JavaScript에서 Unity(C#)로 메시지를 전송할 수 있다.공식적으로는 다음 API를 사용한다:window.vuplex.postMessage("message");하지만 실제 프로젝트에서는 단순한 API 사용만으로는 안정적인 통신을 보장하기 어렵다.2. 문제 상황프로젝트를 진행하면서 WebView 환경에서 postMessage를 통해 메시지를 전송했지만,일부 상황에서 메시지가 정상적으로 전달되지 않는 문제가 발생했다.특히 동일한 코드임에도 불구하고특정 디바이스에서는 동작하고, 다른 환경에서는 실패하는 등재현이 어려운 형태로 나타났다.👉 단순한 코드 문제가 아니..

Develope/Javascript 2026.04.08