JavaScript/Node.js 6

우분투 18.04 LTS에서 Node.js version 10과 pm2 설치하기

우분투 18.04 버전에서는 apt가 node.js version 10에 대해서 기본적으로 지원을 하지 않아서 sudo apt install nodejs로 node.js를 설치하면 8버전이 설치가 된다. 그런데, pm2의 설치를 위해서는 node.js가 version 10 이상이어야만 한다. 우분투 18에서 20으로 업그레이드 없이 이를 해결하는 가장 빠른 방법은 curl을 사용해서 Node 10 installer를 다운 받고 실행시키는 것이다. # curl 설치 sudo apt install curl # Node 10 installer 다운 및 설치 curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - # installer를 설치하게 되면 해..

JavaScript/Node.js 2022.10.01

Error: ER_CON_COUNT_ERROR: Too many connections

Error: ER_CON_COUNT_ERROR: Too many connections 노드에서 mysql 모듈을 사용하는 많은 사람들이 다음과 같은 에러 메세지와 마주치게 된다. "Error: ER_CON_COUNT_ERROR: Too many connections" 라는 에러 메세지가 알려주듯이, node.js 서버와 mysql 데이터베이스 사이의 열려 있는 커넥션 개수가 너무 많아서(제한된 범위 이상) 이러한 에러가 발생한 것이다. 이 문제의 해결법은 매우 간단하다. connection이 열린 상태에서 닫히지 않고, 그러한 connection들이 쌓이면서 생긴 문제이기 때문에, 그저 커넥션을 닫아주는 "conn.release()" 메소드를 사용하면 된다. let pool = mysql.createPo..

JavaScript/Node.js 2018.08.09

비동기 프로그래밍

비동기 프로그래밍 일반적으로 파일 I/O나 네트워크 I/O는 메모리 I/O보다 현저히 느리다. 예를 들어 파일 4개의 입출력을 하나씩 처리한다면, 처리 시간은 길어지고 CPU의 사용 효율성은 떨어지게 된다. 이를 개선하고자 비동기 프로그래밍을 사용하는데, 순차적으로 I/O를 처리하는 것이 아니라 I/O 처리 요청만 운영체제에 전달하고 CPU는 다른 연산을 수행한다. I/O 처리가 완료되면 운영체제에서 I/O 처리를 완료했다는 메시지를 전달받아 이후 작업을 처리하는 방식이다. 참고로, 비동기 프로그래밍은 I/O 처리 요청 순서와 별개로 처리를 완료하는 순서는 제각각이다. 따라서 개발자는 보장되지 않는 I/O 완료 처리를 고려해 프로그래밍을 해야 한다. Node.js는 모든 함수와 모듈이 비동기 프로그래밍을..

JavaScript/Node.js 2018.07.31

모놀리식 아키텍처와 마이크로서비스 아키텍처

모놀리식 아키텍처와 마이크로서비스 아키텍처 1. 모놀리식 아키텍처 - 널리 활용해 온 전통적인 아키텍처이다. - 하나의 애플리케이션 안에 모든 컴포넌트를 포함하는 구조이다. - 구조가 단순해 개발과 배포가 간편하다. 1) 모놀리식 아키텍처의 한계 - 분산 처리가 비효율적이다. 모놀리식 아키텍처는 모든 기능을 프로세스 하나 또는 코드 베이스로 개발하기 때문에 기능별로 분산 처리를 할 수 없다. 항상 전체를 같이 분산해야 한다. - 코드를 관리하기 어렵다. 코드 구조가 하나이기에 새로운 코드를 추가하려면 전체 코드를 이해해야 하고 코드를 추가할수록 구조가 복잡해진다. - 새로운 기술을 적용하기 어렵다. 특정 기능에 새로운 기능을 적용하고 싶어도 기능별로 코드가 독립적이지 않아 적용하기 쉽지 않다. 2) 개선..

JavaScript/Node.js 2018.07.31

express에서의 템플릿 엔진 사용

express에서의 템플릿 엔진 사용 node.js로 서버를 구현하고 클라이언트에게 보낼 웹페이지를 구현하는 과정에서, 대부분의 경우에는 HTML과 CSS를 사용한다. 그러나, jade나 pug등을 사용할 경우에는 html을 사용할 때와는 달리 템플릿 엔진을 사용해서 jade나 pug를 html로 렌더링해야 한다. 템플릿 엔진을 node.js에서 사용하는 자세한 방식은 아래의 링크를 통해서 확인할 수 있다. http://expressjs.com/ko/guide/using-template-engines.html

JavaScript/Node.js 2018.07.24

Node.js에서 MariaDB를 연결할 때에 생기는 문제

Node.js를 사용해서 서버를 구현하다보면 mysql 모듈을 사용해서 MySQL이나 MariaDB에 연결을 시켜서 데이터를 주고 받는 기능을 구현해야 할 때가 생긴다. 이 때에 흔히들 다음과 같은 에러 메세지를 마주하게 된다. 이 "ER_NOT_SUPPORTED_AUTH_MODE: Client does not support authentication protocol requested by server"라는 에러 메세지 통해서 알 수 있듯이 클라이언트 쪽에서 지원하지 않는 인증 모드를 사용하고 있어서 db 연결이 실패했다는 것이다. MySQL의 경우 5.7 버전 이전과 5.7 버전 이후 버전에서 사용하는 비밀번호 인증 방식이 다르기 때문에 생기는 문제로 아래와 같은 방식을 통해서 쉽게 문제 해결이 가능하..

JavaScript/Node.js 2018.07.24