https://nodejs.org/ko/docs/guides/dont-block-the-event-loop 이벤트 루프와 워커 풀을 막지 마세요! | Node.js Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 이 글이 나오게 된 배경 Express서버를 짜던 중 파일 입출력을 할 일이 생겼는데, 나는 지금까지 그래왔듯 자연스럽게 fs모듈을 import해서 fs.readFileSync를 사용했다. 사실 readFile 메서드도 있지만 이 친구는 비동기로 작동하기 때문에 Promise로 Wrapping하여 사용해야했고, 그게 귀찮다는 이유에서 readFileSync를 지속적으로 남발해왔다. readFil..
nodejs
Worker Nodejs는 하나의 프로세스, 하나의 스레드, 하나의 이벤트루프에 의해 실행된다. 즉, 하나의 코드이고, 하나의 실행이 되는 것이다. Node.js코드는 병렬로 실행되지 않는다. 이 때문에 단점이 있는데, CPU자원을 많이 사용하는 코드가 있으면 이 코드가 다른 프로세스가 실행되는걸 차단할 수도 있다. 이런 경우, Worker가 효과적이다. Worker의 목적은 I/O 작업이 아닌 CPU집약적인 작업 퍼포먼스를 향상시키는 것이다. 아래 그림과 같은 느낌이라고 한다. 메인스레드와 통신 Worker스레드는 메인스레드(멀티스레드를 사용하기전 코드들이 실행되는 곳)에서 new Worker를 통해 만들어진다. 메인스레드에서 만든 Worker에 on 형태로 이벤트를 달아서 워커스레드와 통신할 수 있다..
장고 프레임워크의 경우에는 raise Exception만 하면 알아서 오류코드를 넘겨줬었다. 근데 express는 그런 공통 에러처리가 없어서 controller단에서 전부 오류를 처리해줘야하는 문제가 있었다. 이런식으로 모든 오류에 대해 catch한다음 status와 메시지를 전부 따로따로 처리해줘야 한다. 이런 경우, 두 가지 문제가 생긴다. 1. 예상치 못한 경우, 에러처리를 해줄 수 없다. => 이런 경우, 처리됐다고 response는 전송되지만 제대로 적용되지 않는 문제가 발생할 수 있음 2. res.status(상태코드).json(어쩌구...)하기 너무 귀찮음... 공통 에러 처리하기 https://expressjs.com/ko/guide/error-handling.html Express 오류..
ORM이 뭐임 ORM은 Object Relational Mapping의 약자로 객체와 DB의 관계를 매핑해주는 도구다. 객체지향적 코드를 활용해 더 직관적이고 비즈니스 로직에 더 집중할 수 있게 해준다. SQL대신에 좀더 직관적인 코드와 메서드로 데이터를 조작할 수 있게 되는 것. 설치, 프로젝트 적용 npm i typeorm 기존 프로젝트에 적용하기 npx typeorminit --database mysql 나는 mysql을 쓸꺼니까 이렇게 해줄 것이다. 보통 구글링하다보면 createConnection함수나 ormconfig.json을 통해 설정하는데, 이건 0.2.45버전에 해당하는 세팅이고, 0.3부터는 createConnection, ormconfig.json이 없어졌으며 data-source...
간단 메모, 필기 nodemon 서버코드에 수정사항 생길때 마다 서버를 자동으로 제시작해줌 const express = require('express'); const app = express(); app.set('port', 3000); app.get('/', (req, res) => { res.send('Hello Express'); }); app.listen(app.get('port'), () => { console.log(app.get('port'), '번 포트로 서버 열림'); }); app.set을 통해 서버가 실행될 포트를 지정함 app.get(주소, 라우터)에 대해 주소에 대한 GET요청이 왔을때 어떤 동작을 할 지 적음 요청에 따라 프로토타입 메서드로 post,put,patch,delete..
REST REpresentational State Transfer ⇒ 서버의 자원을 정의하고 자원에 대한 주소를 지정하는 방법을 가리킴 여기서 자원이란, 서버가 행할 수 있는 것들을 통틀어서 의미함 주소는 명사로 구성함 주소로는 어떤 동작을 할 것인지 명확하지 않으므로, HTTP요청 메서드를 사용함 GET 서버 자원을 가져오고자 할때 사용함 POST본문에 등록할 데이터를 넣어 보냄 서버에 자원을 새로 등록하고자 할때 사용함 PUT 서버 자원을 요청 데이터로 치환할 때 DELETE 서버 자원을 삭제할 때 OPTIONS 요청을 하기전에 통신 옵션을 설명하기 위해 사용함