개요 C++를 공부하면 포인터에서 숨이 턱 막히듯이, 자바스크립트를 공부하다 보면 넘어야 할 산이 비동기라는 개념입니다. 이 비동기라는 개념이 좀 잡혀있어야, express 라는 웹서버 모듈에서 핸들러를 어떻게 다루어야 할지 감이 오고, Promise 를 어떻게 사용해야 할 지도 조금 감이 생기지 않을까 싶습니다. 이 글은 이벤트 루프 등에 대해서 자세히 다루지 않습니다. 비동기, 논블로킹 IO 등 개념에 […]
[카테고리:] Node.js
Node.js Stream 개념을 익혀보자
목표 Stream 에 대한 개념 이해 간단하게 Readable 클래스 확장구현하기 사전지식 Node.js (본 글에 있는 코든 코드는 Node.js 에서 실행합니다. ) 자바스크립트 ES6 문법 클래스 확장/상속 이 글에서 다루지 않는 것 Stream 의 다양한 이벤트 Readable, Writable 생성자에 넘기는 옵션 pipe 함수의 정확한 동작 방식 Writable, Duplex, Transform 직접 만들기 개요 스트림이라는 말을 처음 들어봤을 […]
VScode + yarn 2 + Monorepo + TypeScript 프로젝트 세팅
목표 yarn 2 를 사용하여 더 효율적으로 패키지 관리하기 모노리포(Monorepo)에 발을 살짝 담구기 타입스크립트 기반으로 프로젝트 구성하기 (이건 사실 이 글에선 중요하지 않음) 사전 준비 타입스크립트를 하고 싶은 마음 vscode 를 에디터로 쓰고자 하는 마음 yarn 명령어 사전지식, yarn 을 선호하는 마음 아직 완벽하지는 않습니다. 특히 타입스크립트가 제대로 동작하는지에 대한 검증이 많이 필요합니다.. 일단 가장 […]
Axios 이상하게 동작할 때 해결법
개요 axios 의 버그인지, 아니면 라이브러리끼리의 충돌인지 하여튼, axios 리턴 객체가 문서상의 객체와 다른 원인 불명의 문제를 해결하는 글입니다. axios 그 자체에 대한 설명은 다른 글에도 많으니 참고해주시기 바랍니다. 문제 갑자기 axios가 이상하게 동작했습니다. 원래 요청을 받으면 AxiosResponse 로 받게 됩니다. Typescript 타입 정의를 보니 아래와 같이 되어 있었습니다. 그런데 말입니다, node.js 에서 axios 를 […]
[Node.js] multer 업로드 실패(에러) 핸들링하기 (작성중)
개요 업로드가 실패하는 원인은 두 가지가 있을 수 있습니다. 업로드 제대로 잘 되고 있었는데 뭔가 서버에서 문제가 터져서 작동을 멈췄을 때 업로드 제대로 되고 있다가 그냥 사용자가 브라우저를 꺼버렸을 때. 생각보다 이 세상에는 인터넷이 느린 곳이 많습니다. 특히 모바일 환경이라면 인터넷이 느린 상황을 더더욱 고려해야 합니다. Node.js 의 Multer 는 파일 업로드 모듈로 유명합니다. 근데 […]
[Node.js] pug + tailwind + Puppeteer + Docker 로 프린터 출력용 PDF 만들기
개요 인터넷 쇼핑몰에서 견적서 같은 걸 자동으로 생성해주는 것을 볼 수 있는데요, 우리도 한번 구현해 봅시다! 전체적으로 Node.js 바탕으로 돌아갑니다. 우선 node 를 설치해주세요. 필자의 버전 기준은 node 14 입니다. docker 를 사용하고자 한다면, docker 와 docker-compose 까지 설치해주세요. 각 기술에 대한 간략한 설명 pug: HTML 템플릿 엔진입니다. 직접 html 파일을 작성하는 것보다 훨씬 간편하고, […]
[Node.js] 안전한 암호화 기법인 scrypt 로 사용자 패스워드 암호화하기
들어가기 전에 패스워드는 암호화되어 저장되어 있어야 합니다. 법적으로도 그렇고 보안적으로도 당연합니다. 당신의 데이터이스는 언제든지 털릴 수 있습니다 … scrypt 함수를 이용하는데, 이게 콜백을 받는 함수라서 Promise 로 래핑했습니다. Promise 에 대한 기본 지식이 있어야 코드를 이해할 수 있습니다. mongoose 코드도 많이 사용하므로, 해당 라이브러리를 알고 있다면 읽으시는 데 크게 도움이 될 겁니다. 내가 이해한 암호화 […]
[Node.js] pug + inline-css로 이메일 템플릿 만들어 보내기 (작성중)
개요 pug 란 html 을 좀 더 쉽게 생성하게 해주는 도구입니다. pug 는 자신만의 문법이 있으며, 이는 기존에 태그를 열고 닫는 html 보다 편한 건지는 사람마다 다르겠지만, 문서의 같은 양으로 보자면 실제로 타이핑하는 것들이 훨씬 적어지는 것도 사실입니다. 그리고 pug에는 상속 기능, mixin, interpolation, 변수 기능 등을 제공해주기 때문에 좀 더 원활하게 상황에 맞는 html […]
Google Workspace 에서 우리 회사의 고객센터 이메일을 만들어 운영하기 + node.js googleapis 활용하여 이메일 발송하기
들어가기 전에 자 일단 고객센터 이메일이란 것은 그냥 비유적인 표현일 뿐입니다. 우리의 목표는 Google Workspace 구성원들과 함께 쓸 수 있는 별도의 이메일 계정을 하나 만들어 관리하는 것입니다. 이 메일은 고객센터 이메일 될 수도 있고, 홍보 이메일 발송용이 될 수도 있고 여러가지 비즈니스 목적에 따라 다양해질 수 있겠지요. 여기서의 핵심은 새로운 사용자를 추가하는 것이 아니라 Groups […]
mongoose 에서 search 필드를 만들어 간단한 검색 지원하기
개요 MongoDB 에서 하나의 document 가 생성되거나 업데이트될 때마다, search 필드에 검색가능한 문자열을 저장하고, 추후 정규식을 이용하여 검색할 문자열이 포함되어 있는지 아닌지의 여부를 확인하는 방식을 통해 검색 기능을 구현해보도록 하겠습니다. 한글이 좀 더 원활하게 검색되게 하기 위해서 hangul-js 를 사용하여 한글을 낱낱히 흩어놓을 것입니다. 만약 검색해야 할 대상이 html 코드일 경우, HTML 태그와 같은 부분은 […]