백엔드/노드 (18) 썸네일형 리스트형 [node.js] 패키지의 버전과 기호 버전의 첫 번째 자리 0.x.x : major 버전의 첫 번째 자리는 메이저(major) 버전입니다. 메이저 버전이 0 이면 초기 개발 중이라는 뜻입니다. 1부터는 정식 버전을 의미합니다. 이는 보통 하위 호환이 안 될 가능성이 높은 패키지 업데이트가 되었을 때 올립니다. 즉, 1.0.0 에서 2.0.0 으로 메이저 버전을 올렸다는 것은 하위 버전과 호환이 안 될 가능성이 높다는 것을 의미합니다. 버전의 두 번째 자리 x.0.x : minor 두 번째 자리는 마이너(minor) 버전입니다. 마이너 버전은 하위 호환이 되는 기능 업데이트를 할 때 올립니다. 즉, 1.5.0 에서 1.6.0 으로 올릴 때 새로운 기능이 추가 되었지만, 하위 버전과 호환이 가능하다는 것을 의미합니다. 버전의 세 번째 자리 x... [node.js] npx 와 전역설치(-g)의 장.단점 npx 와 전역설치(-g) npx는 npm 패키지 매니저에서 제공하는 도구 중 하나로, 로컬에 설치된 패키지를 실행할 수 있도록 도와줍니다. npx를 사용하면 로컬에 설치된 패키지를 명령어로 바로 실행할 수 있기 때문에, 전역으로 패키지를 설치하지 않아도 필요한 패키지를 쉽게 실행할 수 있습니다. 전역으로 패키지를 설치하게 되면 해당 패키지를 시스템 전체에서 사용할 수 있게 됩니다. 하지만 이 경우에는 여러 프로젝트에서 같은 패키지를 사용할 때 버전 충돌 문제가 발생할 수 있습니다. 또한, 전역으로 설치된 패키지를 업그레이드하거나 제거하기도 어렵습니다. 반면에 npx를 사용하면 프로젝트 내부에서 필요한 패키지 버전을 명시하고 실행할 수 있습니다. 이 방법은 프로젝트마다 다른 패키지 버전을 사용할 수 있게.. [node.js] package.json package.json package.json은 Node.js 프로젝트에서 사용되는 파일 중 하나로, 프로젝트의 설정 정보를 담고 있는 JSON 파일입니다. 이 파일에는 프로젝트의 이름, 버전, 필요한 모듈, 스크립트 등의 정보가 포함됩니다. 보통 프로젝트를 시작할 때 npm init 명령어를 실행하여 package.json 파일을 생성합니다. npm install 명령어를 사용하여 필요한 모듈을 다운로드할 때 package.json 파일에 추가된 모듈 정보를 바탕으로 다운로드하게 됩니다. 또한, package.json 파일을 사용하여 프로젝트의 메타데이터 정보를 다른 사람들과 공유하거나, 다른 환경에서 프로젝트를 실행할 때 필요한 라이브러리나 모듈의 종속성(dependency)을 정의할 수 있습니다. .. [NodeJS] Buffer 클래스 Buffer 이진 데이터를 다루는 데 주로 사용되며, 네트워크, 파일 시스템, 암호화 등 다양한 용도로 사용되는 노드의 내장 클래스 입니다. 노드는 파일을 읽을 때 메모리에 파일 크기만큼 공간을 마련해두며 파일 데이터를 메모리에 저장한 뒤 사용자가 조작할 수 있도록 합니다. 이때 메모리에 저장된 데이터가 바로 버퍼(메모리에 저장된 파일 데이터)입니다. 또한 버퍼 객체는 고정 길이의 바이트 시퀀스를 나타내는 데 사용됩니다. 많은 Node.js API가 버퍼를 지원합니다. Buffer 클래스는 JavaScript Uint8Array 클래스의 하위 클래스이며 추가 사용 사례를 포괄하는 메서드로 확장됩니다. Node.js API는 버퍼가 지원되는 모든 곳에서 일반 Uint8Array를 허용합니다. Buffer .. [NodeJS] fs 모듈 : 파일 시스템에 접근 시 사용 fs 모듈 파일 생성, 읽기, 쓰기, 삭제, 이동, 이름 바꾸기 등 다양한 파일 시스템 작업을 수행하는데 활용 합니다. 파일 읽기; fs.readFile() fs 모듈을 사용하여 파일을 읽을 수 있습니다. fs.readFile() 메소드를 사용하여 비동기적으로 파일을 읽을 수 있으며, fs.readFileSync() 메소드를 사용하여 동기적으로 파일을 읽을 수 있습니다. - 해당 경로의 파일에 입력되어 있는 데이터를 읽어 옵니다. const fs = require('fs'); // 비동기적으로 파일 읽기 fs.readFile('/path/to/file', 'utf8', (err, data) => { ㄴ경로 ㄴ 인코딩 방식 if (err) throw err; console.log(data); }); // .. [Node.js] 태스크 큐와 이벤트 큐 태스크 큐와 이벤트 큐 태스크 큐(Task Queue)와 이벤트 큐(Event Queue)는 비슷한 역할을 하지만 약간 다릅니다. 태스크 큐는 자바스크립트 엔진이 처리해야 할 작업들을 순서대로 담아놓는 대기열이며, 콜 스택이 비어있을 때 실행됩니다. 대표적으로 setTimeout, setInterval, setImmediate, requestAnimationFrame 등의 비동기 함수가 콜백 함수를 태스크 큐에 넣습니다. 반면에 이벤트 큐는 Node.js에서의 태스크 큐입니다. 이벤트 루프에서는 태스크 큐와 함께 이벤트 큐도 관리하며, 이벤트 루프가 처리해야 할 작업들을 담아놓습니다. 대표적으로 I/O 작업, 타이머, process.nextTick 등의 비동기 함수가 콜백 함수를 이벤트 큐에 넣습니다. .. [Node.js] 노드에서 싱글 스레드/블로킹과 언블로킹/이벤트 루프 .../ 싱글 스레드 Node.js는 싱글 스레드 모델을 사용하는 JavaScript 런타임입니다. 이는 Node.js가 한 번에 하나의 작업만 처리할 수 있다는 것을 의미합니다. 하지만 Node.js는 비동기 I/O를 사용하여 작업을 처리하므로, 블로킹 작업이 발생하더라도 다른 작업을 처리할 수 있습니다. 이를 통해 Node.js는 높은 처리량을 달성할 수 있습니다. 또한 Node.js는 이벤트 루프를 사용하여 비동기 작업을 처리하며, 작업이 완료되면 콜백 함수를 호출하여 결과를 반환합니다. 이러한 방식으로 Node.js는 단일 스레드에서도 많은 요청을 처리할 수 있습니다. 그러나 CPU 집약적인 작업에 대해서는 성능이 떨어질 수 있으므로, 이러한 작업을 처리하는 데에는 멀티 스레드 또는 워커 프로세스 등의 다.. [Node.js] 컨텍스트/ 컨텍스트 스위칭 / 컨텍스트 스위칭 오버헤드 컨텍스트(context) | 현재 프로그램의 실행 상태에 대한 전반적인 정보 컨텍스트(Context)는 어떤 상황이나 조건에서 데이터나 프로그램이 실행되고 있는 상태의 전반적인 정보를 말합니다. 프로그램이 실행되는 도중에는 실행 위치, 레지스터 값, 메모리 값 등이 변경될 수 있습니다. 이러한 정보들을 모두 모아서 현재 실행되고 있는 상태를 나타내는 것이 컨텍스트입니다. 컨텍스트는 프로세스나 스레드의 실행 상태를 나타내는 정보이기 때문에, 컨텍스트 스위칭(Context Switching)이 발생할 때는 현재 실행 중인 프로세스나 스레드의 컨텍스트를 저장하고, 다음에 실행할 프로세스나 스레드의 컨텍스트를 불러옵니다. 이를 통해 운영체제는 여러 개의 프로세스나 스레드를 동시에 실행하고, 멀티태스킹(multi.. 이전 1 2 3 다음