인파

You Can Become A

늦게 시작해도 누구든지 노력하면 개발자가 될수 있어요 !

공부한 내용을 정리합니다
Node.js/Node Package

[NODE] 📚 Sharp 모듈 사용법 - 이미지 리사이징 / 워터마크 넣기

Sharp 모듈 노드 진영에는 많은 이미지 리사이징 패키지들이 있었지만, 끝까지 살아남은 모듈이 shap 이다. 이미지 리사이징 동작 자체가 cpu와 메모리를 잡아먹는 주범이라, 가끔 out of memory로 node가 죽는 경우가 있기 때문이다. 그런 관점에서 sharp 모듈은 리사이징 속도도 빠르며 메모리도 다른 동종 모듈 대비 많이 잡아 먹지 않는다. Sharp 사용법 아래 공식 문서 홈페이지에 들어가보면 옵션에 대해 아주 잘 정리되어있다. sharp - High performance Node.js image processing sharp.pixelplumbing.com > npm install sharp sharp 모듈 설치시 주의사항 ⚠️ sharp는 OS의 바이너리를 이용하기 때문에 윈도우,..

category_image
인파_
2022.08.15
(0)
Node.js/Node Package

[NODE] 📚 NVM 모듈 사용법 - 노드 버전 스위칭

NVM (Node.js Version Manager) 모듈 개발 환경에 따라 Node.js의 버전을 변경해야 하는 상황이 한 번쯤은 꼭 온다. 협업을 할 때, 또는 다양한 프로젝트를 동시에 진행해야 할 때 다양한 라이브러리 / 프레임워크 / 개발툴의 버전 호환 문제를 겪기 때문이다. 이런 환경에서 그때마다 Node.js를 재설치 및 삭제하는 방법으로는 한계가 있고 불편할뿐더러 잡아먹는 시간도 아깝다. 이런 상황에서 Node.js 버전을 상황에 따라 변경해 가면서 사용하게끔 도와주는 것이 NVM이다. NVM 은 Node Version Manager로써 Node.js의 도구이며, 상황에 따라 버전을 변경해 가면서 사용하는 것을 말한다. 일반 소프트웨어 설치하듯이 exe 파일을 받아 일일히 클릭하여 업데이트 ..

category_image
인파_
2022.07.08
(0)
Node.js/Node Package

[NODE] 📚 Color-Hash 모듈 - 랜덤 색상코드

Color-Hash 모듈 구현하는데 있어 랜덤 숫자가 필요하듯이, 만일 랜덤 색깔(color)가 필요하다면 이 모듈을 쓰면 된다. Color-Hash 모듈 사용법 color-hash Generate color based on the given string (using HSL color space and SHA256).. Latest version: 2.0.1, last published: a year ago. Start using color-hash in your project by running `npm i color-hash`. There are 91 other projects in the npm registry using col www.npmjs.com > npm install color-hash ..

category_image
인파_
2022.06.26
(0)
Node.js/Node Package

[NODE] 📚 Winston 모듈 사용법 - 서버 로그 관리

Winston 모듈 어떤 서버든지 실제로 서비스를 운영하려면 로그를 꼼꼼히 남기는 것은 필수이다. Log는 에러를 파악할 수 있는 열쇠이기 때문에 서버를 운영한다고 하면 로그 시스템을 구축해서 시스템을 운영해야 한다. 예를들어 어떤 사람이, 어떤 이벤트, 어떤 데이터를 요청했는지, 어떤 동작을 하다가, 어떤 트랜잭션을 돌리다가, 어떤 에러가 났는지 이를 정밀 관리할수 있다. Node.js에서는 log를 효율적으로 관리할 수 있게 도와주는 모듈인 winston.js가 았다. 윈스톤(winston.js)는 실제 서버를 운영할 때 console.log 와 console.error 를 대체하기 위한 모듈이다. console.log 와 console.error 도 개발 중에는 편리하게 콘솔 로그로 서버의 상황을 ..

category_image
인파_
2022.06.14
(0)
Node.js/Node Package

[NODE] 📚 PM2 모듈 사용법 - 클러스터 / 무중단 서비스

Node.js 싱글 스레드 Node.js는 Chrome의 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임(runtime)으로 ‘Event Driven’, ‘Non-Blocking I/O’ 모델을 사용해 가볍고 성능이 뛰어나 높은 평가를 받고 있다. Node.js는 기본적으로 싱글 스레드(thread)로 돌아간다. Node.js 애플리케이션은 단일 CPU 코어에서 실행되기 때문에 CPU의 멀티코어 시스템은 사용할 수 없다. 그래서 만약 서버의 사양이 8코어이며 16쓰레드면, 프로그램을 돌리는데 최대 16개 코어를 사용 할 수 있지만, 노드는 싱글 스레드 이기 때문에 모든 코어를 사용하지 못해 최대 성능을 내지 못하는, 즉 자원을 제대로 활용하지 못한다. 그래서 Node.js는 이런 문제를 해결하기 위..

category_image
인파_
2022.06.09
(0)
Node.js/Node Package

[NODE] 📚 cross-env 모듈 사용법

노드 env 환경변수 설정 보통 노드 서비스를 개발(development)하고 배포(production)할 때 env 값을 이용해서 구성한다. 예를들어 배포 모드 일 때에는 파일 캐싱, 에러 메세지 감추기 등 배포에 적합한 환경 설정을 하고, 개발 모드 일 때에는 파일 캐싱 방지, 디버그를 위한 상세한 에러 메세지 보이기 등 개발에 필요한 환경 설정을 한다. 실무 코드를 들자면 대표적으로 노드 서버의 로그를 찍어주는 morgan 미들웨어일 경우 다음과 같이 로그 레벨을 개발일떄는 'dev', 배포일떄는 'combined' 로 설정하여 적용시킨다. // 노드 환경 변수 설정에 따라 morgan 설정을 달리함 if (process.env.NODE_ENV === 'production') { app.use(mo..

category_image
인파_
2022.06.08
(0)
Node.js/Node Package

[NODE] 📚 Chalk 모듈 - 노드 콘솔 로그를 컬러풀하게 ✨

브라우저 console.log 꾸미기 브라우저 콘솔은 CSS 스타일시트를 지원하기 때문에 조금 번거롭긴 하지만 만들기 어렵지는 않다. console.log('%cHello, world!', 'color: #a4f644; background-color: red;'); %c 이후의 글자에는 모두 같은 스타일이 입혀지게 된다. 새로운 스타일을 씌우고 싶으면 %c를 또 쓰면 된다. 프론트앤드에서는 전혀 어려운 작업이 아니기 때문에, 당연히 백앤드에서도 되는 것으로 생각하는 분들이 많은데 아니다. 위 코드처럼 css값을 주어도 여전히 밍둥맹둥한 하얀글씨만 나올 것이다. 따라서, 다른 방법으로 적용을 해야 한다. 노드 console.log 꾸미기 터미널에서는 색깔을 변경하기 위해서 ANSI escape code를 ..

category_image
인파_
2022.01.17
(0)
Node.js/Node Package

[NODE] 📚 cors 모듈 - CORS 간편 설정하기

CORS 허용 설정 하는 방법 Node.js 서버 프로젝트에서 cors(cross origin resource sharing) 문제를 해결하는 방법은 크게 2가지가 있다. 하나는 직접 헤더를 명시해서 출처(origin)을 필터링하는 것이고, 다른 하나는 cors 노드 패키지를 사용해 좀더 간편하면서 유기적으로 출처를 필터링 할수 있다. 1. 직접 헤더에 명시 CORS 문제를 해결하기 위해서는 응답 헤더에 Access-Control-Allow-Origin 헤더를 넣어야 한다. 이 헤더는 클라이언트 도메인의 요청을 허락하겠다는 뜻을 가지고 있다. //^ CORS 허용 res.setHeader('Access-Control-Allow-origin', '*'); res.setHeader('Access-Contro..

category_image
인파_
2022.01.16
(0)
Node.js/Node Package

[NODE] 📚 UUID 모듈 사용법

UUID 란? UUID는 Universally Unique IDentifier의 약자로, 전세계에 하나밖에 없는 ID라는 뜻이다. 이런 ID는 고유하기 때문에 서버에서 사용자들에 UUID를 붙여서 구분하는 등 여러 방면에서 유용하게 쓰일 수 있다. 예를들어, DB를 다룰 때 PK를 주로 auto increment 값으로 사용하지만, URL이나 화면상에 노출 시키면 크롤링이나 인젝션 공격에 취약하다는 단점이 있다. 때문에 public한 화면단에서는 ramdom 한 UUID를 사용하는 것을 권장하는 편이다. UUID는 16진수 8자리-4자리-4자리-4자리-12자리 패턴으로 표현된다. // UUID 패턴 예시 1604b772-adc0-4212-8a90-81186c57f598 UUID로 표현할 수 있는 객체의 ..

category_image
인파_
2022.01.14
(0)
Node.js/Node Package

[NODE] 📚 bcrypt 모듈 암호화 원리 & 사용법

암호화 모듈 암호화 종류 SHA-2(Secure Hash Algorithm 2) 미국 NSA에서 설계한 암호화 해시 함수. digest size는 224, 256, 512 bit로 해시함수로 구성되어졌음. GPU를 이용한 연산속도가 매우 빠르기 때문에 password 암호화에 권장되지 않음 GPU 연산속도가 빠를수록 공격자의 하드웨어를 통한 오프라인 brute force에 더 취약하다. 빠른 해시를 사용하여 암호화를 진행시 공격자는 오프라인 공격으로 초당 수십억개의 해시를 계산할 수 있다. PBKDF2 pbkdf2_hmac(해시함수(sha256..), password, salt, iteration, DLen) 해시함수의 컨테이너 역할을 한다. 검증된 해시함수만을 사용한다. 해시함수와 salt를 적용 후 ..

category_image
인파_
2021.12.03
(0)
Node.js/Node Package

[NODE] 🛠️ 바벨(Babel) 설치 & 사용법

바벨(Babel) 웹 코딩을 할 때 가장 까다로운 것 중 하나가 웹 표준의 하위호환성을 맞추는 것이다. ​html이나 자바스크립트 코드에 최신 기술들만 쓰면 구식 브라우저에서 작동하지 않을 확률이 크고, 그렇다고 죄다 구닥다리 코드를 쓰자 하면 또 불편하고 찝찝해진다. ​ 이것을 해결하기 위해 나온 것이 바로 바벨이라는 툴이다. 이 툴은 자바스크립트의 코드를 구버전에 맞게끔 변환시켜주는 역할을 한다. 이러한 행동을 트랜스파일링 이라고 불리운다. BABEL PACKAGE 설치 프로젝트에 따라 설정이 다를 수 있으므로 전역으로 설치하지 말고 로컬로 설치하도록 하자. npm install --save-dev @babel/core @babel/cli @babel/node @babel/preset-env @bab..

category_image
인파_
2021.11.01
(0)
Node.js/Node Package

[NODE] 🛠️ nodemon 설치 & 사용 방법 정리

nodemon 모듈 Node.js 개발 시 자바 스크립트 파일들을 수정 할때마다 매번 ctrl+c를 통해 node를 종료 후 다시 실행해줘야 하는 번거로움 이 있었습니다. 하지만 파일들을 모니터링하고 있다가 수정될 경우 자동으로 서버를 재실행시켜주는 스크립트 모니터링 유틸리티 nodemon를 이용하면 번거로움이 상당히 줄어듭니다. nodemon 설치 npm 1.0이상을 사용할 경우 nodemon은 커맨드라인에서 명령어를 사용할 것이기 때문에 -g 옵션을 붙혀서 글로벌로 설치를 합니다. $ npm install nodemon -g nodemon 사용법 기존에 node.js 애플리케이션을 실행할 때 node app.js와 같이 실행해 주었다면 nodemon 명령어를 사용해서 다음과 같이 실행해 주면 됩니다...

category_image
인파_
2021.11.01
(0)