[Node.js] 간편하게 URL 인코딩 & 디코딩 하기

웹/Node.js 2022. 10. 11. 20:42

console.log(encodeURIComponent("hello@world.com")); console.log(decodeURIComponent("hello%40world.com")); hello%40world.com hello@world.com Node.js 에서 URL 인코딩을 처리하는 방법은 매우 간단한데 encodeURIComponent() 함수와 decodeURIComponent() 함수를 이용하시면 됩니다. 기본적으로 console.log(); 처럼 기본적으로 Node.js 사용시 소스에 포함이 되어서 사용할 수 있는듯 합니다. 따로 패키지 설치나 import (require) 구문도 필요 없습니다. 함수 원형을 보시면 알겠지만 encodeURIComponent("인코딩하고 싶은 문자열")..

Article Thumbnail
[JS] async & await란? - 제대로 알고 사용해보자!

웹/JS 2022. 8. 28. 21:08

본 글을 읽기 전에 Promise 에 대해 미리 알고 계셔야 합니다. 안녕하세요 파일입니다. 이전에 Promise를 통해 CallBack 지옥을 .then() 과 .catch() 를 이용해 개선시킬 수 있었습니다. 이제는 조금 더 나아가서 async await를 통해 Promise로 작성된 코드들을 한번 더 개선시켜 보겠습니다. * 여기서 개선되는 것은 대부분 가독성 입니다. Async & Await이란? async 와 await은 Promise를 조금 더 간편하게 사용 할 수 있도록 도와주며 동기적으로 실행되는 것 처럼 보이게 하는 문법입니다. async와 await은 새로운 것이 추가된 것이 아니며 기존에 존재하는 Promise를 쉽게 사용할 수 있게 해줄뿐인, 즉 Promise의 Syntatic s..

Article Thumbnail
[JS] "==" 와 "===" 연산자의 차이점

웹/JS 2022. 8. 23. 02:42

프로그래밍을 하면서 값들의 같음을 비교하려면 == 연산자를 이용해서 같음을 비교할 수 있습니다. 대부분의 언어에서 사용하는 것이기도 하구요. 그런데 JS는 다른 프로그래밍 언어들과 다르게 "==" 도 있고 "==="도 있습니다. == 은 알겠는데 ===은 뭘까요? 인터넷에 관련글을 찾아보면 글이 빼곡히 쌓여있는데 그만큼 JS를 접한 개발자들을 당황시킨 내용이라고 할 수 있습니다 당연히 저도 당황을 해서 글을 쓰는것이구요 -.- 저는 난잡한 특성이 많은 JS를 싫어하는 편인데 웹 개발을 하면 현재로썬 대체제가 없어서 어쩔 수 없이 사용을 하고 있습니다. 잡담은 여기까지 하고 == 와 ===에 대해 알아봅시다. 용어 정리 연산자, 피연산자라는 용어를 잘 모르실 수 있으므로 미리 설명하고 넘어갑니다. 3 + ..

Article Thumbnail
[MongoDB] Connection String에 DB이름 적을시 접속안되는 문제 해결

웹/NoSQL 2022. 8. 22. 03:34

이번에 Node.js로 예약 작업을 구현하기 위해서 Agenda 라는 라이브러리를 사용하게 되었습니다. Agenda는 다른 예약 라이브러리들과 다르게 예약 작업을 DB에 직접 저장해둬서 서버를 껐다 켜도 예약 작업 들이 날라가지 않습니다. 여기서 저장할때 사용하는 DB가 MongoDB라서 진행하는 프로젝트는 강제로 MongoDB를 사용하게 되었습니다. 어쨌던 MongoDB 연결을 위해서 MongoDB 연결주소(?) Connection String URI 란 것을 제공해줘야 MongoDB 서버에 접속 가능합니다. mongodb://your_id:password@server_ip:27017/ 다음과 같은 주소를 이용하면 쉽게 데이터베이스에 접속할 수 있었습니다. 그러나 저렇게 접속하는 것은 특정 DB에 접속..

Article Thumbnail
웹 프로젝트 리팩토링 -> TS(타입 스크립트) 도입했습니다

웹/JS 2022. 8. 21. 20:56

기존에 Node.js Express 로 짜여진 백엔드단 코드가 일반 JS였는데 TS(타입 스크립트) 를 도입해서 리팩토링 과정을 거쳤습니다. Vue 코드도 언젠가 타입 스크립트로 바꿔줘야 하는데.. Vue 3는 공식적으로 TS를 지원하지만 제 프로젝트 환경의 경우 Vuetify 를 사용하기 위해 부득이하게 Vue 2 버전을 사용해서 (Vuetify 가 Vue 3를 공식[Release]으로 지원하지 않고 있습니다.) Vue 2는 각종 플러그인을 이용해야 TS를 사용할 수 있습니다. 쉽게 말해서 귀찮아서 나중에 한다 이말입니다. 이렇게 전부 js에 CommonJS require("...") 로 가득한 코드를.. ts 파일로 바꿔주고 ES6 import 구문으로 바꿔줬습니다. TS 의 장점인 자동 완성, 잘못..

Article Thumbnail
[Node.js] 시놀로지 Docker + Node.js 서버 [Error: ENOENT: no such file or directory, open '***'] 오류 해결

웹/Node.js 2022. 8. 21. 00:30

Node.js + Vue.js 로 만든 프로젝트 완성 후 제대로 작동하는걸 확인해 시놀로지 NAS로 서버를 옮기는 작업을 했습니다. 첫번째로 한 작업은 Node.js 와 Vue.js 프로젝트를 코드 하나로 통합하는 작업이였습니다. 프론트엔드단 Vue Cli로 생성한 Vue.js 코드는 웹 서버가 내장되어 있어서 8080 포트로 따로 돌아가고, 백엔드단 Node.js는 Express 프레임워크를 이용해서 API 서버를 제작했는데 3000번 포트로 돌아가게 됩니다. 프론트엔드단과 백엔드단이 깔끔하게 분리되어 제작된 바람직한 코드지만 웹 서버도 실제로 2개나 돌아가서 배포할때는 비효율적인 구조입니다. 그래서 Vue.js 에서 WebPack 을 이용해 빌드 과정을 거쳐서 HTML CSS JS 로 통합 파일을 생..

Article Thumbnail
[Vue.js] <v-data-table> Rows per page 텍스트 및 내용 수정 + 바닥글 수정 방법

웹/Vue, React, Angular 2022. 8. 16. 04:30

* 다음 글은 Vue.js 2.0 버전 + Vuetify 환경을 기준으로 작성되었습니다. Vuetify의 컴포넌트 태그를 이용하면 간단하게 데이터 테이블을 구현할 수 있습니다. 저는 엑셀 파일을 서버에 업로드 하면 미리 보기 하는데 굉장히 유용하게 사용하고 있구요. 기본적으로 표의 열(Column) 이름이나 아이템 요소들은 그냥 객체가 여러개 들어있는 배열을 주면 간단하게 수정이 가능하나 저기 빨간색 부분으로 표시된 Rows per page, 1-5 of 10 과 같은 텍스트 들은 Vuetify 공식 문서에서도 따로 바꾸는 방법을 명시해서 알려주고 있진 않습니다. Vuetify 로 사이트 만드는 사람들이 전부 영어권 사람들은 아닐꺼니깐.. 당연히 바꾸는 방법이 존재합니다! 오늘은 저 아래에 있는 바닥글의..

Article Thumbnail
[Node.js] winston custom level 추가하기

웹/Node.js 2022. 8. 6. 23:43

Node.js의 라이브러리인 winston 을 이용하면 로그를 저장하는걸 간편하게 구현할 수 있습니다. winston 은 level 이라는 개념으로 로그 우선순위를 관리하는데 로그 level은 아래와 같습니다. { error: 0 , warn: 1 , info: 2 , http: 3 , verbose: 4 , debug: 5 , silly: 6 } 숫자가 낮을 수록 우선순위가 높으며, error이 가장 위험한 로그라고 보시면 됩니다. winston 은 이러한 level로 로그를 저장하며 특정 level 을 설정해놓고 그 level에 맞춰서 로그를 저장하라고 파일에 지시해주면 그 로그만을 저장하는게 아니라 숫자가 같거나 낮은 로그까지 한꺼번에 저장하게 됩니다. 예를 들어서 level : info 로 설정하..

Article Thumbnail