간단한 콘솔 명령어 만들기package.json{ "name": "node-cli", "version": "0.0.1", "description": "nodejs cli program", "main": "index.js", ... "bin": { "cli": "./index.js" },}index.js#!/usr/bin/env nodeconsole.log('Hello CLI', process.argv);`#!/usr/bin/env node`는 맥과 리눅스에서 /usr/bin/env에 등록된 node 명령어로 이 파일을 실행하라는 의미다.process.argv는 실행한 명령어의 인자들을 볼 수 있다.해당 모듈 전역 설치npx i -g모듈 실행npx cliCLI로 입력받기index.js#!..
SSEServer Sent Event는 클라이언트에서 요청 없이도 언제든지 서버가 새로운 데이터를 보내는 것이 가능한 방식을 말한다. 경매 시스템 같은 경우 클라이언트에서 경매가 언제 종료되는지 언제 경매가가 업데이트되는지 요청을 보내는 것이 아닌 서버에서 SSE 방식으로 정보를 보내주고 클라이언트는 응답을 받기만하면 된다.sse 모듈 설치npm i ssesse.jsconst SSE = require("sse");module.exports = (server) => { const sse = new SSE(server); sse.on("connection", (client) => { setInterval(() => { client.send(Date.now().toString()); ..
웹 소켓웹 소켓은 HTML5에 새로 추가된 스펙으로 실시간 양방향 데이터 전송을 위한 기술이다HTTP 프로토콜이아닌 WS 프로토콜을 사용한다.웹 소켓 이전에는 폴링 방식을 사용했다. 서버 센트 (SSE) 기술은 클라이언트에서 서버로 전송하는 것이 아닌 서버에서 클라이언트 단방향 통신이다. ws 모듈로 웹 소켓 사용하기ws 모듈 설치npm i wsapp.jsconst express = require("express");const path = require("path");const morgan = require("morgan");const cookieParser = require("cookie-parser");const session = require("express-session");const nunjuc..
테스트 준비하기JestJest는 Meta에서 관리하는 테스트 프레임워크다. Jest는 단순성에 초점을 맞춰 개발돼 별도의 설정없이 바로 사용할 수 있다.Jest 환경 설정Jest 설치하기> npm i -D jestJest를 npm 스크립트로 바로 실행할 수 있게 config.json 수정{ "name": "nodebird", "version": "0.0.1", "description": "익스프레스로 만드는 SNS 서비스", "main": "app.js", "scripts": { "start": "nodemon server.js", "test": "jest", // 추가 }, ...}Jest 기본 사용법테스트용 파일은 파일명과 확장자 사이에 `test`나 `spec`을 넣는다. `..
JWTJWT(JSON Web Token)은 JSON 형식의 데이터를 저장하는 토큰이다.JWT의 구성요소헤더(HEADER): 토큰 종류와 해시 알고리즘 정보가 저장페이로드(PAYLOAD): 토큰의 내용물이 인코딩된 부분시그니처(SIGNATURE): 일련의 문자열로, 시그니처를 통해 토큰이 변조되었는 지 여부를 확인JWT 토큰은 JWT 비밀 키를 알지 않는 이상 변조가 불가능 JWT 토큰의 단점은 용량이 큼 JWT 인증 실습JWT 모듈 설치npm i jsonwebtoken 시크릿 키 env에 저장// .envJWT_SECRET=비밀키임의생성JWT 검증 미들웨어 생성// midlewares/index.jsconst jwt = require('jsonwebtoken')...exports.verifyToken =..
PassportPassport 모듈은 이름 그대로 우리의 서비스를 사용할 수 있게 해주는 여권 같은 역할을 하는 모듈다.회원 가입과 로그인을 직접 구현할 수도 있지만, 세션과 쿠키 처리 등 복작한 작업을 Passport 모듈이 대신 해준다. Passposrt를 사용해 구글, 페이스북, 카카오톡 같은 기존으 SNS 계정으로 로그인할 수도 있다. Passport는 다양한 인증방식을 전략(Strategy)이라는 플러인을 제공한다. Passport 개념전략 (Strategy)인증로직을 담당하며, 다양한 인증 방식을 구현하기 위해 사용한다.`passport-local`: 이메일/비밀번호 기반 인증`passport-kakao`: 카카오 인증`passport-jwt`: JWT 토큰 기반 인증serializeUser ..
애플 실리콘 몽고디비 설치Homebrew 설치/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 몽고디비 설치brew tap mongodb/brewbrew install mongodb-communitybrew install mongosh몽고디비 실행brew services start mongodb-community 몽고디비 프롬프트 접속mongosh관리자 계정 추가use admindb.cerateUser({user:'이름', pwd:'비밀번호',roles:['root']})몽고디비 중지brew services stop mongodb-community몽고디비 설정 파일 수정vim /opt..
데이터베이스란?데이터베이스: 관련성을 가지며 중복이 없는 데이터들의 집합.DBMS(DataBase Management System): 데이터베이스를 관리하는 시스템(데이터베이스 관리 시스템)RDBMS(Relation DBMS): 관계형 DBMS. SQL이라는 언어를 사용해 데이터 를 관리함.대표적인 RDBMS로 Oracle, MySQL, MSSQL 등이 있습니다. RDBMS에서 데이터를 관리하려면 SQL을 사용합니다. 맥 MySQL 설치HomeBerew 설치/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"HomeBrew를 이용해 MySQL 설치brew install mysqlbrew..