본문 바로가기

Dev/javascript11

JavaScript에서 Proxy란 JavaScript에서 Proxy란다른 객체에 대한 접근을 "가로채서" 그 동작을 커스터마이징할 수 있는 기능을 말한다.즉, 객체를 감싸고 -> 객체의 속성 접근, 수정, 호출 등을 감시하거나 조작할 수 있다.const Obj = { name: "john", age: 49 };const proxy = new Proxy(obj, { get(target, prop) { console.log(`${prop}에 접근했습니다`); return target[prop]; }, set(target, prop, value) { console.log(`${prop}에 ${value}를 설정합니다`); target[prop] = value; retur true; }});console.log(p.. 2025. 4. 9.
Express 5.0 및 5.1의 주요 변경 사항 Express 5.0은 Node.js에서 가장 널리 사용되는 웹 프레임워크인 Express.js의 메이저 업데이트 버전이다. 기존 4.x 버전에 큰 변화 없이 꽤 오랜 시간 유지되었지만, Express 5.0에서는 몇 가지 중요한 변화가 포함되었다. 1. Promise 기반 미들웨어 지원기존 Express 4에서는 next()를 직접 호출해야 했지만, Express 5에서는 async/await 방식의 Promise 기반 미들웨어를 기본 지원한다.app.get('/example', async (req, res) => { const data = await FetchData(); res.send(data);});예외 발생 시 try/catch 없이도 자동으로 에러 핸들러로 전달된다.2. 라우터와 미들웨어.. 2025. 4. 3.
Atomics? 1. Atomics란 무엇인가?Atomics는 ECMA2017(ES2017 이상)에서 제공되는 정적(Static) 객체로, 다중 스레드 환경에서 고유 메모리에 대해 원자적(atomic)인 연산을 수행할 수 있도록 도와주는 API이다. 1.1 왜 필요한가?1. 멀티스레드 동기화자바스크립트는 원칙적으로 싱글 스레드(Event Loop) 기반 언어이지만, Web Worker나 Node.js Worker Threads 등을 사용하면 스레드 유사 환경에서 병렬 처리를 할 수 있다.이때 여러 스레드(Worker)가 공유 메모리(SharedArrayBuffer)에 접근, 수정할 수 있는데, 스레드 간 동기화(레이스 컨디션 방지)가 필요하다.C/C++ 등 전통적인 언어에서 제공되는 원자적 연산(atomic operat.. 2025. 3. 11.
Spinlock - 스핀락 스핀락(Spinlock)이란?스핀락은 락(잠금) 대상이 해제될 때까지 스레드가 계속해서(바쁘게) 확인하는(스핀 도는)' 방식으로 동작하는 락 구현이다.보통 멀티스레드 환경에서 하나의 스레드가 잠금을 획득하려고 할 때, 잠금을 사용 중인 다른 스레드가 잠금을 해제할 때까지 짧은 반복문으로 대기(바쁜 대기, busy-wait)하는 구조다.일반적인 뮤텍스(mutex)는 OS 커널이 스레를 '수면(sleep)' 상태로 만들어 CPU를 양보하지만, 스핀락은 스레드를 그대로 계속 돌면서 잠금 여부를 확인한다. 스핀락의 장단점장점락을 기다리는 시간이 매우 짧다면(ns ~ μs), 스레드를 커널에 의뢰해 '수면/깨우기(sleep/wakeup)' 과정을 거치는 것보다 빠를 수 있다.커널에 의존하기보다 사용자 레벨에서 락.. 2025. 2. 28.
SharedArrayBuffer SharedArrayBuffer는 자바스크립에서 메모리를 여러 스레드(Worker) 간에 공유할 수 있도록 고안된 객체로, 기존의 ArrayBuffer는 단일 스레드에서만 접근 가능한 반면, SharedArrayBuffer는 복수의 워커(또는 메인 스레드)가 동일한 물리 메모리를 직접 접근할 수 있게 해준다. 이로써 고성능 병렬처리를 위한 "공유 메모리" 방식의 프로그래밍이 가능해졌다.다만, 여러 스레드가 동시에 같은 메모리 영역을 읽고 쓰는 구조가 되므로, 올바르게 사용하기 위해서는 동시성 제어(Atomics API)와 보안(COOP/COEP 설정) 등을 고려해야 한다. 1. SharedArrayBuffer의 기본 개념1.1. 공유 가능한 메모리 버퍼ArrayBuffer와 유사하게, 이진 데이터를 담을.. 2025. 2. 28.
CommonJS, AMD, UMD, ESM CommonJS (이하 CJS), AMD, UMD, ESM 모두 자바스크립트의 모듈 시스템을 말한다. 먼저, 모듈 시스템은 코드의 재사용성과 캡슐화를 위해 서로 관련된 기능들을 하나의 단위(모듈)로 묶어 관리하는 방법을 말한다. 시간이 흐르면서 위와 같이 여러 방식이 등작했으며, 각 방식은 사용 환경과 필요에 따라 발전해 왔다.1. 초기 자바스크립트와 모듈의 필요성초기 상황:자바스크립트가 등장했을 때는 모듈 시스템이 존재하지 않아, 모든 함수와 변수가 전역 스코프에 존해앴다. 이로 인해 네임스페이스 충돌, 코드 관리의 어려움이 발생했다.모듈의 필요성:코드의 재사용, 유지보수, 독립적인 테스트 등을 위해 모듈화를 도입하게 되었으며, 이를 통해 코드가 명확하게 분리되고 독립적으로 관리될 수 있게 되었다. 2.. 2025. 2. 24.