목록개발 도서 (87)
진취적 삶
서비스를 출시한 이후에 서버에 문제가 생기면 서비스 자체에 심각한 타격을 입는다. 15.1.1 morgan 과 express-session 개발용으로 설정되어 있는 미들웨어를 배포용으로 설정 if (process.env.NODE_ENV === "production") { app.use(morgan("combined")); } else { app.use(morgan("dev")); } 배포 환경일 때는 combined 개발 환경일때는 dev 모드 const sessionOption = { resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, }, }; ..
CLI 는 콘솔 창을 통해 프로그램을 수행하는 환경을 뜻한다. 이와 반대되는 개념은 GUI 가 있다. 14.1 간단한 콘솔 명령어 만들기 콘솔에서 입력해 어떤한 동작을 수행하는 문장을 콘솔 명령어 라고 한다. { "name": "node-cli", "version": "0.0.1", "description": "nodejs cli program", "main": "index.js", "author": "suhaHwang", "license": "ISC", "bin": { "cli": "./index.js" } } #!/usr/bin/env node console.log("hello CLI"); npx cli //hello CLI package.json 에서 bin 속성에 cli 명령어와 index.js를..
13.1 프로젝트 구조 갖추기 SQL 기본 디렉터리 만들기 npx sequelize init models/ user.js User.init( { email: { type: Sequelize.STRING(40), allowNull: false, unique: true, }, nick: { type: Sequelize.STRING(15), allowNull: false, }, password: { type: Sequelize.STRING(100), allowNull: true, }, money: { type: Sequelize.INTEGER, allowNull: false, defaultValue: 0, }, }, //사용자가 입찰 여러번 가능이기에 1:N static associate(db) { db.Us..
12.1 웹 소켓 이해하기 실시간 양방향 데이터 전송을 위한 기술 HTTP 와 다르게 WS 라는 프로토콜을 사용한다. HTML5 가 나오면서 웹 브라우저와 웹 서버가 지속적 연결된 라인을 통해 실시간으로 데이터를 주고받을수 있는 웹 소켓이 등장했다. const webSocket = require("ws"); module.exports = (server) => { const wss = new WebSocket.Server({ server }); wss.on("connection", (ws, req) => { //웹 소켓 연결시 const ip = req.headers["x-forwarded-for"] || req.socket.remoteAddress; console.log("새로운 클라이언트 접속", ip..
테스트 기법 중 유닛테스트 ,통합 테스트 ,부하 테스트 ,테스트 커버리지 체크를 해보자 . 11.1 테스트 준비하기 jest 패키지 설치 npm i -D jset pacakge.json "scripts": { "start": "nodemon app", "test": "jest" }, npm test 테스트 코드 실행 가능 파일명에 test나 spec 이 들어간 파일들을 모두 찾아 실행한다. // 첫번째 인수는 테스트 설명 , 두번째 인수는 테스트 내용 test(`1+1은 2 입니다`, () => { expect(1 - 1).toEqual(2); }); // 첫번째 인수는 테스트 설명 , 두번째 인수는 테스트 내용 test(`1+1은 2 입니다`, () => { expect(1 + 1).toEqual(3)..
10.1 API 서버 이해하기 API : (application programming interface) 다른 애플리케이션에서 현재 프로그래밍 기능을 사용할수 있게 허용하는 접점을 의미한다. 다른 웹 서비스의 기능을 사용하거나 자원을 가져올수있는 창구 크롤링 : 웹사이트의 정보를 일정 주기로 수집해 자체적으로 가공하는 기술 어떤 페이지의 크롤링을 허용하는지 확인하려면 도메인/robots.txt 에 접속하면 된다. 10.2 프로젝트 구조 갖추기 다른 서비스가 nodebird의 데이터나 서비스를 이용할수 있도록 창구를 만드는것 다른 서비스에 nodebird 서비스의 게시글,해시태그 ,사용자 정보를 JSON 형태로 제공한다. 인증을 받은 사용자에게만 일정한 할당량 안에서 API를 호출 const Sequeli..
9.1 프로젝트 구조 갖추기 npx sequelize init 명령어 호출하면 config, migrations,models,seeders 폴더 생성 필요한 npm npm i express cookie-parser express-session morgan multer dotenv nunjucks npm i -D nodemon app.use( session({ resave: false, saveUninitialized: false, secret: process.env.COOKIE_SECRET, cookie: { httpOnly: true, secure: false, }, }) ); 세션을 설정할 때 session({...}) 메소드를 사용하며, 다음과 같은 옵션을 설정할 수 있습니다: resave: 클라이..
몽고디비는 RDBMS 가 아니라 특색이 뚜렷한 NoSQL 이다 . 8.1 NoSQL vs SQL SQL(MySQL) NoSQL(몽고디비) 규칙에 맞는 데이터 입력 자유로운 데이터 입력 테이블간 JOIN 진원 컬렉션간 JOIN 미지원 안정성,일관성 확장성,가용성 용어(테이블 ,로우.컬럼) 용어(컬렉션,다큐먼트 ,필드) 8.2 몽고 디비 설치 및 실행 파일 이동 C:\\Program Files\\MongoDB\\bi shell 실행 mongsh 8.4 데이터베이스 및 컬렉션 생성하기 데이터 베이스 만들기 use nodejs 목록 확인 show dbs admin 132.00 KiB config 108.00 KiB local 72.00 KiB 컬렉션은 테이블이랑 같은말 8.5 CRUD 작업하기 8.5.1 CRE..