Node.js에서 child_process 모듈은 자식 프로세스를 생성하고 관리하는 데 사용됩니다. 이 모듈은 다양한 기능을 제공하여 다른 요구 사항을 충족시킵니다. 주요 함수로는 `spawn()`, `fork()`, `exec()`, `execFile()` 및 이들의 동기 버전이 있습니다. 각각에 대한 간략한 개요는 다음과 같습니다. spawn() 사용법: `child_process.spawn(command, [args], [options])` 목적: 길고 지속적인 프로세스에 적합하며, 많은 양의 데이터를 처리하는 데 사용됩니다. 명령을 실행하기 위해 쉘을 생성하지 않아 조금 더 효율적입니다. 데이터 처리: `stdout`과 `stderr`를 통해 데이터를 스트림합니다. `child_process`를 ..
콜백과 이벤트 핸들링의 진화 `Node.js` 개발자들에게 익숙한 콜백은, 과거 `Node`에서 이벤트 처리의 핵심이었습니다. `JavaScript`가 일급 객체를 지원하므로 콜백을 자유롭게 전달할 수 있었죠. 하지만 시간이 흐르면서, 프로미스(Promise)와 `async/await` 구문이 등장하여 비동기 코드 처리 방식이 크게 달라졌습니다. ES6 이전의 동기와 비동기 코드 `ES6` 이전에는 비동기 및 동기 코드를 혼합해 사용하는 것이 일반적이지 않았습니다. 예를 들어, `fileSize` 함수는 문자열 인수를 받고, 비동기 `fs.stat`을 사용해 파일 크기를 반환합니다. 하지만 동기적 에러 처리(예: 잘못된 인수 타입)와 비동기적 에러 처리가 혼합되어 있어 이해하기 어려운 코드가 되곤 했습니..
Module Caching Node.js에서 모듈이 어떻게 로드되고 캐싱되는지 이해하는 것은 최적화된 효율적인 코드를 작성하기 위해 중요합니다. 모듈 캐싱은 시간과 리소스를 절약하여 애플리케이션을 더 빠르고 반응성 있게 만들 수 있습니다. 이 글에서는 Node.js의 모듈 캐싱에 대해 자세히 알아보고, 어떻게 효과적으로 사용할 수 있는지에 대해 탐구하겠습니다. 모듈 캐싱이란? 모듈 캐싱은 Node.js가 모듈 파일을 단 한 번만 로드하도록 하는 메커니즘이며, 이는 애플리케이션 전체에서 여러 번 require 되더라도 마찬가지입니다. 모듈이 처음 로드될 때 실행되고 메모리에 캐시됩니다. 동일한 모듈에 대한 후속 require 호출은 캐시된 버전을 반환합니다, 추가적인 파일 작업이나 코드 실행이 필요 없게 ..
TDD Study 용 기본 Module 더보기 Production 환경 Express Mongoose npm install express mongoose --save Development 환경 Jest Node-mocks-http supertest npm install jest supertest node-mocks-http --save-dev Extensions JestRunner 단위(Unit)테스트 더보기 정의 개발자가 작성한 모듈 단위의 코드를 테스트하는 것. 소스 코드의 개별 단위 를 테스트 하여 준비 여부를 확인. 조건 독립적이어야 한다. (어떤 테스트도 다른 테스트에 의존하면 안됨) 격리 되어져야 한다. 주입을 받거나 model을 받아야 하는 경우 mockup으로 처리 하여야 한다. 목적 프로..
인터프리터와 JIT `JavaScript`의 기본 컴파일러는 V8엔진의 `인터프리터(Interpreter)` 입니다. 인터프리터의 특징으로는 코드를 한 줄 씩읽어 내어 바이트코드로 변환한다는 것입니다. 이렇게 변환된 바이트코드를 V8 엔진의 `Just-In-Time(JIT)` 컴파일러로 한번에 컴파일을 하는 방식을 제공하고 있습니다. 인터프리터 V8 엔진은 JavaScript 코드를 처음 실행할 때, 인터프리터를 사용하여 코드를 바이트코드(Bytecode)로 변환합니다. 인터프리터는 코드를 한 줄씩 읽어서 해석하고 실행합니다. 이 과정에서 실시간으로 코드를 실행할 수 있습니다. 인터프리터는 빠른 실행 속도를 제공하지만, 최적화된 기계어 코드보다는 비교적 느린 성능을 가질 수 있습니다. JIT 컴파일러 V..
JavaScript Node.js를 알아보기 이전에 자바스크립트에 대해서 이해를 하고 있어야 합니다. 자바스크립트는 기본적으로 클라이언트 사이드 (Client Side)에서 사용되는 스크립트 언어를 말합니다. 여기서 말하는 클라이언트 사이드는 사용자의 웹 브라우저에서 동적으로 코드를 변경되는 것을 말하며, 반대로의 의미는 서버 사이드(Server Side) 입니다. 자바스크립트가 가진 특징은 아래와 같습니다. 클라이언트 측 스크립트 언어: 위에서 설명 하였 듯이, JavaScript는 웹 브라우저에서 실행되는 클라이언트 측 스크립트 언어입니다. HTML 문서 안에서 태그를 사용하여 JavaScript 코드를 작성하고 실행할 수 있습니다. 웹 페이지의 동적인 동작을 구현하거나 사용자와의 상호작용을 처리하는..