티스토리

괴발개발
검색하기

블로그 홈

괴발개발

bulsok.tistory.com/m

ebulsok 님의 블로그입니다.

구독자
5
방명록 방문하기

주요 글 목록

  • [node.js] ch15. AWS와 GCP로 배포하기 morgan: 요청과 응답에 대한 정보를 콘솔에 기록 개발환경: app.use(morgan('dev')); 배포환경: app.use(morgan('combined')); 시퀄라이즈 배포환경 설정 config.json → config.js require('dotenv').config(); module.exports = { ... } cross-env: 동적으로 process.env를 변경할 수 있음 // package.json // ONLY linux/mac "start": "NODE_ENV=production PORT=80 node server", "dev": "nodemon server", // ONLY window "start": "cross-env NODE_ENV=production PORT=80 .. 공감수 0 댓글수 0 2023. 2. 14.
  • [node.js 교과서] ch13. 실시간 경매 시스템 만들기 서버센트 이벤트(sse) sse 모듈을 불러와 new SSE(익스프레스 서버)로 서버 객체 생성 생성한 객체에는 connection 이벤트 리스너를 연결하여 클라이언트와 연결할 때 어떤 동작을 할지 정의, 매개변수로 client 객체 사용(client.send: 클라이언트에 메시지 전송, 문자열만 가능) 라우터에서 SSE를 사용하고 싶다면 app.set 메서드로 client 객체를 등록하고, req.app.get으로 가져옴 IE, 엣지 브라우저에서 사용 불가: EventSource 지원하지 않기 때문, 그러나 사용자가 직접 구현할 수 있음 스케줄링(node-schedule) schedule 객체의 scheduleJob 메서드로 일정 예약 첫번째 인수: 시행될 시각 두번째 인수: 해당 시각이 되었을 때 수.. 공감수 1 댓글수 0 2023. 2. 7.
  • [node.js 교과서] ch12. 웹 소켓으로 실시간 데이터 전송하기 웹 소켓 실시간 양방향 데이터 전송을 위한 기술 폴링: 웹소켓이 나오기 이전 HTTP 기술을 사용하여 구현. 주기적으로 서버에 새로운 업데이트가 있는지 확인하는 요청을 보낸 후 있다면 새로운 내용을 가져옴 HTTP와 다르게 WS라는 프로토콜 사용 ⇒ 브라우저와 서버가 WS를 지원해야 사용할 수 있음 처음에 웹 소켓 연결이 이루어지고 나면 업데이트 요청을 따로 보낼 필요가 없고, 업데이트 할 내용이 생겼다면 서버에서 바로 클라이언트에 알림. HTTP 프로토콜과 포트를 공유할 수 있으므로 다른 포트에 연결할 필요 없음 Socket.IO: 웹소켓을 편리하게 사용할 수 있도록 도와주는 라이브러리 웹소켓은 이벤트 기반으로 작동하고, 실시간으로 데이터를 전달받으므로 항상 대기하고 있어야 함. connection 이.. 공감수 0 댓글수 0 2023. 2. 7.
  • [node.js 교과서] ch10. 웹 API 서버 만들기 JWT(json web token) 헤더: 토큰 종류와 해시 알고리즘 정보 페이로드: 토큰의 내용물이 인코딩된 부분 시그니처: 일련의 문자열이며, 시그니처를 통해 토큰이 변조되었는지 여부를 확인할 수 있음. 비밀키로 만들어짐 장점: JWT 비밀키를 알지 않는 이상 변조가불가능하기 때문에 믿고 사용할 수 있음 단점: 용량이 큼 요청 헤더에 저장된 토큰(req.headers.authorization)을 사용. jwt.verify 메서드로 토큰을 검증, 첫번째 인수에는 토큰, 두번째 인수에는 토큰의 비밀키 토큰의 비밀키가 일치하지 않으면 인증을 받을 수 없고, 에러가 발생하여 catch문으로 이동. 유효기간 만료 시 400번대 숫자 중 아무거나 정함 인증에 성공한 경우 토큰의 내용이 반환되어 req.decod.. 공감수 0 댓글수 0 2023. 2. 7.
  • [Node.js 교과서] ch9. 익스프레스로 SNS 서비스 만들기 passport serializeUser: 로그인 시에만 실행, 객체에 어떤 데이터를 저장할지 정함 deserializeUser: 매 요청 시 실행, 세션에 저장한 아이디를 통해 사용자 정보 객체를 불러옴 sU의 두번째 인수로 넣었던 데이터가 dU의 매개변수가 됨. sU에서 세션에 저장했던 아이디를 받아 데이터베이스에서 사용자 정보를 조회함. 조한 정보를 req.user에 저장함 라우터를 통해 로그인 요청이 들어옴 라우터에서 passport.authenticate 메서드 호출 로그인 전략 수행 로그인 성공 시 사용자 정보 객체와 함께 req.login 호출 req.login 메서드가 passport.serializeUser 호출 req.session에 사용자 아이디만 저장 로그인 완료 로그인 이후, 요청.. 공감수 0 댓글수 0 2023. 2. 7.
  • [Node.js 교과서] ch8. 몽고디비 // 모두 조회 db.users.find({}); // 특정 필드만 조회 // _id는 기본적으로 가져오게 되어 있으므로 0 또는 false를 입력해 가져오지 않도록 함 db.users.find({}, { _id: 0, name: 1, married: 1}); // 조건 조회 // $gt, $gte, $lt, $lte, $ne, $or, $in db.users.find({ age: { $gt: 30 }, married: true }, { _id: 0, name: 1, married: 1}); db.users.find({ $or: [{age: { $gt: 30 }}, { married: false }], { _id: 0, name: 1, married: 1}); // 정렬 // -1은 내림차순, 1은 오름.. 공감수 0 댓글수 0 2023. 2. 2.
  • [Node.js 교과서] ch7. MySQL Sequelize(Object Relation Mapping) npx sequelize init 자동으로 id를 기본키로 연결 VARCHAR: STRING INT: INTEGER TINYINT: BOOLEAN DATETIME: DATE models/user.js User 모델은 Sequelize.Model을 확장한 클래스로 선언, 크게 static init 메서드와 static associate 메서드로 나뉨 init: 테이블에 대한 설정. super.init의 첫번째 인수가 테이블 컬럼에 대한 설정 두번째 인수가 테이블 자체에 대한 설정 sequelize: static init 메서드의 매개변수와 연결되는 옵션, db.sequelize 객체를 넣어야 함 timestamps: createdAt, upda.. 공감수 0 댓글수 0 2023. 2. 2.
  • [Node.js 교과서] ch6. 익스프레스 웹 서버 만들기 app.use(미들웨어): 모든 요청에서 미들웨어 실행 app.use(’/abc’, 미들웨어): abc로 시작하는 요청에서 미들웨어 실행 app.post(’/abc’, 미들웨어): abc로 시작하는 POST 요청에서 미들웨어 실행 express-session: 세션 관리 시 클라이언트에 쿠키를 보냄 resave: 요청이 올 때 세션에 수정 사항이 생기지 않더라도 세션을 다시 저장할지 설정 saveUninitialized: 세션에 저장할 내역이 없더라도 처음부터 세션을 생성할지 설정 secret: 안전하게 쿠키를 전송하려면 쿠키에 서명을 추가해야 하고, cookie-parser의 secret과 같게 설정하는 것이 좋음 name: 세션 쿠키의 이름 설정, 기본값 connect.sid cookie httpOn.. 공감수 0 댓글수 0 2023. 2. 2.
  • [Node.js 교과서] ch3. 노드 기능 알아보기 REPL: Read, Eval, Print, Loop 입력한 코드를 읽고, 해석하고, 결과물을 반환하고, 종료할 때까지 반복한다 ES2015 모듈: require, exports ⇒ import, export (default) node에 DOM/BOM이 없으므로 window/document를 사용하면 에러 발생 console.time(레이블): console.timeEnd(레이블)과 대응되어 같은 레이블을 가진 time과 timeEnd 사이의 시간을 측정 console.log(내용): 평범한 로그를 콘솔에 표시 console.error(에러 내용): 에러를 콘솔에 표시 console.table(배열): 배열의 요소로 객체 리터럴을 넣으면, 객체의 속성들이 테이블 형식으로 표현됨console.dir(객체,.. 공감수 0 댓글수 0 2023. 2. 2.
  • [Node.js 교과서] ch1. 노드 시작하기 node.js: Chrome V8 Javascript 엔진으로 빌드된 Javascript 런타임 서버: 네트워크를 통해 클라이언트(요청을 보내는 주체)에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램 이벤트 기반: 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식(클릭, 네트워크 요청 등).이벤트 리스너에 콜백 함수 등록이벤트 발생등록된 콜백 함수 호출 이벤트 루프: 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를 결정하는 역할 담당. 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복하므로 루프라고 함 백그라운드: setTimeout 같은 타이머나 이벤트 리스너들이 대기하는 곳. 자바스크립트가 아닌 언어로 작성된 프로그램. 여러 작업이 동시에 실행될 수 있음 태스.. 공감수 1 댓글수 31 2023. 2. 2.
  • [All Last] 프로젝트 회고 📌 코드: https://github.com/ebulsok/ALL-LAST.git 📌 결과물: https://port-0-all-last-fao2flc7imovf.gksl2.cloudtype.app/ 🔎 프로젝트 소개: 마작 대국의 점수를 기록하는 사이트 🔎 사용한 스택: Node.js(express), MySQL, ejs, Bootstrap 🔎 서비스 내용: 홈 ‘공개’ 상태인 기록만 보임 로그인이 되어있지 않은 경우, 된 경우의 버거 메뉴 내용이 다름 pagination: pageNum을 query로 전달, MySQL의 LIMIT 사용, 1페이지 당 5개의 기록 회원가입/로그인 중복체크: POST 통신 후, 결과에 따라 관련 변수(idChecked, nameChecked) 변경 + alert 창으로 .. 공감수 4 댓글수 0 2023. 1. 4.
  • Robo 3T / MongoDB 오류 어제까지만 해도 문제없이 몽고디비를 이용하고 있었는데 오늘 데이터베이스 파일을 실행시키자 Cannot connect to the MongoDB at localhost:27017 라며 Network is unreachable ~~ 이라는 내용의 경고창이 떴다. 구글링을 해봤는데 path 설정 .. 등등 다양한 종류의 해결법이 있었다. 내 경우는 path의 문제라기 보다는 네트워크 오류였기 때문에 'mongodb 접속오류'라는 키워드로 다시 검색해보았고, 제어판-시스템 및 보안-관리도구-서비스 에서 Mongodb Server (MongoDB) 우클릭 후, '시작'을 누르는 방법으로 해결했다. 공감수 1 댓글수 0 2022. 1. 13.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.