Backend 21

Node.js - commonJS vs ES Modules

Node.js에서 사용할 수 있는 자바스크립트 모듈 시스템 방식으로는 commonJS와 ES Modules가 있다. commonJS란? // import const 모듈명 = require('모듈 경로'); // export module.exports = 모듈명; // 기본적으로 내보낼 하나의 모듈 지정 module.exports = { 모듈1, 모듈2, ... }; // 여러 모듈 한 번에 export module.exports.모듈명 = 모듈; // 특정 모듈 export commonJS는 EMCAScript에 자바스크립트 내장 모듈 표준이 존재하지 않았을 때부터 사용되던, Node.js에서 기본적으로 제공하는 모듈 시스템 방식이다. *.cjs 확장자를 사용하여 명시적으로 commonJS 모듈임을 나..

Backend/Node.js 2023.02.20

WSL - WSL 1에서 WSL 2로 변경(업그레이드)

이미 설치되어 있는 WSL 1 이미지의 버전을 WSL 2로 변경해 보자. WSL 버전 1과 2의 차이점은 이전에 작성한 글에 정리해 두었으니 참고하자! WSL - 1. Windows에서 Ubuntu 개발 환경 설정을 위한 WSL2 설치 및 VSCode 연동 Mac OS 사용자와 함께 개발 협업을 하다 보면 종종 아래에 보이는 것처럼 이상한 에러와 마주할 수 있다. 이런 에러가 발생하는 이유는 무엇일까? 정답은 Mac OS와 Windows의 개행 문자 방식이 다르기 guiyomi.tistory.com 필자는 새로운 노트북에 WSL을 설치하려다 설치 기본 버전을 2로 변경하는 것을 까먹고 우분투를 설치했더니 다음과 같이 WSL 1을 설치해 버렸다. 이미 개발 환경 설정을 다 해놓은 터라 재설치가 어려운 상황..

Firebase - 웹에서 Firebase auth로 로그인/회원가입 구현

리액트 강의를 들으면서 인증 로그인 구현 과제를 통해 공부한 firebase auth 패키지 사용법을 정리했다. 먼저, firebase 콘솔에서 프로젝트를 생성해야 한다. 로그인 - Google 계정 하나의 계정으로 모든 Google 서비스를 Google 계정으로 로그인 accounts.google.com 프로젝트 생성을 완료했다면 앱 등록 버튼을 클릭하여 웹 앱을 생성한 프로젝트에 등록하는 작업이 필요하다. 생성한 프로젝트 홈에서 앱 추가 버튼을 클릭한 후, 웹을 클릭하면 웹 앱에 Firebase 추가라는 화면으로 이동할 수 있다. 해당 화면에서 앱 닉네임을 등록하면 Firebase SDK를 추가할 수 있는 단계로 이동할 수 있다. Firebase SDK 추가 1. firebase 패키지 설치 # np..

Backend/Firebase 2022.05.29

Ubuntu - zsh 설치 및 oh my zsh를 이용한 테마/플러그인 적용

오늘은 못생긴 bash를 버리고 zsh을 설치하여 사용해 보자. zsh은 macOS의 기본 쉘이며, bash와 거의 비슷하지만 다음과 같은 장점을 갖고 있다. 자동 완성 및 탭(tab)으로 이동 가능 zsh는 자주 사용하는 명령어에 대한 자동 완성(추천) 기능을 제공한다. zsh-autosuggestions 플러그인을 설치하면 사용할 수 있다. 또한 bash는 사용 가능한 목록만 보여주는 정도로만 자동 추천을 제공하지만, zsh은 tab 키를 이용하여 리스트를 탐색하고 선택할 수 있는 옵션을 제공한다. 다양한 플러그인 및 테마 지원(oh my zsh) zsh은 oh my zsh라는 커뮤니티를 통해 다양한 플러그인과 테마를 제공한다. 사용자가 원하는 작업 환경을 설정하여 사용할 수 있는 다양성을 누릴 수 ..

WSL - 2. Windows에서 WSL2 ubuntu 데스크톱 모드로 사용

이전 글에서 WSL2를 설치하고 VSCode 연동까지 하는 방법을 정리했다. WSL - 1. Windows에서 Ubuntu 개발 환경 설정을 위한 WSL2 설치 및 VSCode 연동 Mac OS 사용자와 함께 개발 협업을 하다 보면 종종 아래에 보이는 것처럼 이상한 에러와 마주할 수 있다. 이런 에러가 발생하는 이유는 무엇일까? 정답은 Mac OS와 Windows의 개행 문자 방식이 다르기 guiyomi.tistory.com 오늘은 WSL을 ubuntu GUI 모드로 실행하는 방법을 알아보자. 기본적으로 microsoft 공식 문서를 참고하여 WSL을 설치하는 경우에는 CLI 모드로 ubuntu를 이용할 수 있다. 하지만 CLI 모드로만 사용하기에는 여간 불편한 점이 많다. 가장 큰 단점은 GUI 프로그..

WSL - 1. Windows에서 Ubuntu 개발 환경 설정을 위한 WSL2 설치 및 VSCode 연동

Mac OS 사용자와 함께 개발 협업을 하다 보면 종종 아래에 보이는 것처럼 이상한 에러와 마주할 수 있다. 이런 에러가 발생하는 이유는 무엇일까? 정답은 Mac OS와 Windows의 개행 문자 방식이 다르기 때문이다. Mac에서는 LF(\n) 방식을 사용하고, Windows에서는 CRLF(\r\n) 방식을 사용한다. 그래서 개발 환경 설정을 하다 보면 위 사진과 비슷한 에러가 종종 발생한다. 보통 해당 오류를 해결하기 위해서는 prettier나 ESLint 설정에서 linebreak 관련 속성만 추가해도 해결되는데, 내 경우에는 인터넷에서 찾을 수 있는 모든 방법을 다 동원해도 오류가 고쳐지지 않았다. 그래서 Windows에서 Ubuntu 환경을 사용할 수 있는 방법을 탐색했고, 여러 방법들 중 WS..

Spring - 쿠키 생성/삭제/가져오기

Spring에서의 쿠키 생성과 삭제는 HttpServletResponse 객체를 통해 이루어진다. 쿠키 생성 import javax.servlet.http.Cookie; @RequestMapping(value = "/admin/adminLoginProcess.do", method = RequestMethod.POST) public ModelAndView login(HttpServletRequest req, HttpServletResponse response, ModelAndView mv) throws Exception { Cookie myCookie = new Cookie("userID", (String) params.get("id")); myCookie.setMaxAge(24 * 30 * 60 * 60..

Backend/Spring 2021.12.09

PostgreSQL - pgcrypto 모듈을 사용한 패스워드 및 문자열 암호화

PostgreSQL에서는 pgcrypto 모듈에서 패스워드 암호화를 위한 함수인 crypto()와 gen_salt(n)를 제공한다 crypto() 함수는 해시 작업, gen_salt() 함수는 솔트값을 생성할 암호화 알고리즘을 지정하는 함수이다. 해당 함수로 만든 패스워드는 복호화가 불가하다. 따라서 나중에 패스워드 검증을 위해서는 복호화가 아닌 암호화를 한 후 비교해야 한다는 특징이 있다. crypto 함수에서 제공하는 암호화 알고리즘은 다음과 같다. 알고리즘 평문 최대 길이 salt 길이 출력 길이 비고 bf 72 128 60 Blowfish md5 X 48 34 MD5 des 8 12 13 UNIX의 암호화 방식 xdes 8 24 20 확장 DES 이제 사용법을 알아보자! 아래 쿼리를 사용하여 pg..

Backend/Database 2021.12.03

Spring - session 정보 DB에 저장

보통 Spring에서 로그인 정보는 session에 저장하는 방식을 사용한다. session 저장 방식은 주로 다음과 같은 3가지 방식 중 하나를 사용한다. 1. 톰캣 내장메모리 session 사용 : session은 톰캣의 내장 메모리에 저장이 되므로 서버를 재시작할 때마다 세션이 초기화된다는 특징이 있다. 보통 1대의 was를 사용하는 프로젝트에서 주로 사용하는 방식이다. (2대 이상의 was를 사용할 경우 추가적인 설정 필요) 2. DBMS에 session 저장 : 여러 was에서 공용으로 세션을 사용할 수 있다. 로그인/로그아웃 시마다 DB I/O가 발생하여 성능에 영향을 준다는 단점이 있다. 로그인/로그아웃 요청이 많지 않은 프로젝트에서 주로 사용된다. 3. Redis, Elastic cache..

Backend/Spring 2021.10.28

Node.js - express 특징 및 사용법 정리(공식 문서 참고)

해당 글은 Express 공식 문서인 https://expressjs.com/ko/starter/installing.html를 참고하여 작성했습니다. Express 설치 설치 Node.js가 이미 설치되었다고 가정한 상태에서, 애플리케이션을 보관할 디렉토리를 작성하고 그 디렉토리를 작업 디렉토리로 설정하십시오. $ mkdir myapp $ cd myapp npm init 명령을 이용하여 애플 expressjs.com Express의 특징 - 현재 4 버전까지 출시, 5 버전은 알파 릴리스 단계 - 프로젝트 내에 DBMS 드라이버를 간단하게 설치하여 사용 가능 : MySQL, Redis, ElasticSearch 등 # npm i mysql2 # npm i mongodb Express 프로젝트 생성 - 아..

Backend/Node.js 2021.10.10