node.js
-
Windows Node.js 버전 업데이트JavaScript/Node.js 2019. 11. 7. 10:46
Windows에선 Node.js 버전 업데이트를 어떻게 할까? 최근 Node.js LTS 버전이 12.13.0 버전으로 업데이트 되었다. 버전 업데이트는 딱히 해보지 않아서 심심한 차에 버전 업데이트를 하기로 했는데, 검색해보니까 리눅스 환경에선 npm 패키지 중 하나인 n으로 관리하는 것 같더라. n을 윈도우에 설치하려니 아래와 같은 EBADPLATFORM 에러가 났다. (Error Bad Platform인가?) 즉 지원을 안하는 것 같음. 그래서 어떻게 하나 공식 홈페이지를 뒤져보니 찾아냈다. 그냥 최신 설치 파일 받아서 설치하면 된대여... 신규 버전 인스톨러로 설치를 하고나서 nodejs 폴더를 들어가보니 버전 별로 관리되지 않고, 기존의 버전을 최신 버전으로 엎어쳐버렸다. 버전을 확인해보면 최신..
-
로우 레벨로 살펴보는 Node.js 이벤트 루프JavaScript/Node.js 2019. 8. 1. 12:52
Okky 사이트의 Tech 카테고리에서 좋은 글을 발견하여 필요할 때 복습하며 보고자 링크를 남긴다. https://evan-moon.github.io/2019/08/01/nodejs-event-loop-workflow/ 로우 레벨로 살펴보는 Node.js 이벤트 루프 1년 전, 필자는 setImmediate & process.nextTick의 차이점에 대해 설명하면서 Node.js의 이벤트 루프 구조에 대해 살짝 언급한 적이 있었다. 놀랍게도 독자 분들은 원래 설명하려고 했던 부분보다 이벤트 루프 부분에 대해서 더 많이 관심을 주었고, 필자는 그 부분에 대해서 많은 질문을 받았었다. 그래서 이번에는 Node.js evan-moon.github.io 해당 글은 Okky사이트의 "devEvan"님께서 원작..
-
Cross Origin 허용하기JavaScript/Node.js 2019. 7. 5. 12:19
Node.js + Express + Vue.js + Webpack을 이용해 토이 프로젝트를 만들고 있다가 axios를 통해 HTTP 프로토콜로 비동기 통신 기능을 만들던 중 Cross Origin 차단 문제를 접했다. Spring Boot로 현업을 뛰고 있는 상황이라 @CrossOrigin 어노테이션 하나만 붙이면 한방에 해결이 되는데 Node.js로는 CrossOrigin 설정을 해본적이 없어서 자료를 찾아봐 공부해봤다. 문제 우선 상황은 다음과 같다. Node 서버는 3000번 포트를 사용, Vue 개발 서버는 3001 포트를 사용하는 환경이다. 각각의 서버에서 통신을 주고받아야하니 Cross Origin에 위배되는 상황이 발생했다. 버거 메뉴를 등록하는 폼에서 내용을 입력하고 등록버튼을 클릭하면 N..
-
싱글 스레드JavaScript/Node.js 2019. 5. 26. 18:22
노드는 싱글 스레드로써 작업을 모두 하나의 스레드로 처리한다. 자바스크립트와 노드에서 논블로킹이 중요한 이유는 바로 싱글 스레드 기반이기 때문이다. 한 번에 하나의 일밖에 처리할 수 없기 때문에 작업에서 블로킹이 발생하면 다음 일을 처리하기까지 기다려야하는 문제가 발생한다. 싱글 스레드, 블로킹 & 논블로킹, 멀티 스레드에 대해서 알아보자. 1-1. 싱글 스레드 & 블로킹 모델 점원 : 스레드 고객 : 작업 점원 한 명이 고객1의 주문을 받아 주방에 넘긴다. 주방에서 요리가 완료될 때까지 점원은 기다리고, 요리가 완료되면 점원은 다시 고객에게 요리를 배달하여 작업을 마무리 짓는다. 그 다음 고객2의 주문을 받고 행위를 반복한다. 이러한 시스템에서의 문제점은 주문을 하기 위해 기다리는 고객들이 앞의 작업들..
-
논블로킹 I/OJavaScript/Node.js 2019. 5. 26. 15:48
함수를 백그라운드로 보내서 다음 코드를 우선 실행시킨 후, 백그라운드로 보낸 함수를 다시 태스크 큐로 보내 호출 스택으로 올라오는 방식을 '논블로킹 방식'이라고 표현한다. 논블로킹이란 이전 작업이 완료될 때 까지 멈추지 않고 다음 작업을 수행하는 것을 의미한다. 이러한 작업은 같은 작업을 블로킹 방식보다 더 짧은 시간에 처리할 수 있다는 장점이 있다. 보통 이러한 작업은 I/O 처리를 할 때 시간적 이득을 볼 수 있다. 코드를 통해 블로킹 방식과 논블로킹 방식을 비교해보자. function longTask() { // 긴 작업 console.log('작업 완료'); } console.log('시작'); longTask(); console.log('끝'); 위의 코드를 실행했을 때, 콘솔에는 시작, 작업 ..
-
이벤트 기반 (Event-Driven)JavaScript/Node.js 2019. 5. 25. 15:03
이벤트 기반이란 이벤트가 발생할 때 미리 지정해 둔 작업을 수행하는 것을 의미한다. 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 어떤 작업을 수행할 것인지 미리 등록해야한다. 예를 들어 어떠한 버튼을 클릭했을 때 경고 메시지를 띄우는 행위가 있다고 하자. 이것을 이벤트 리스너(Event-Listener)에 콜백(Callback) 함수를 등록한다고 표현한다. 1-1. 이벤트 기반 흐름도 이벤트 기반 모델에선 '이벤트 루프'라는 개념이 등장한다. 여러 이벤트가 동시에 발생했을 때, 어떤 순서로 콜백 함수를 호출할 지를 '이벤트 루프'가 판단한다. Node.js는 자바스크립트와 마찬가지로 함수 호출 부분을 발견하면 호출한 함수를 '호출 스택'에 담는다. 아래의 코드를 보자. function first()..