Node 강의 65

1-4 개발 환경 세팅 ( 점프 게임 )

기본적으로 사용할 기술은? Node.jsExpressWebSocket DB나 Redis로 데이터를 관리할 필요가 있지만,"개발 환경 세팅"에서는 웹소켓 통신을 위한 세팅만구성하고, 다음 강의에 DB나 Redis를 사용해보겠습니다. 먼저, 해당 디렉토리의 터미널에서 yarn addyarn init -y 를 입력해줍니다. 그 결과, package.json과 yarn.lock이 생성된 걸 볼 수 있습니다. package.json으로 이동해  "type": "module"을 추가해줍니다. 이제 본격적으로 필요한 패킷들을 받아보겠습니다.터미널에서 yarn add express socket.io 를 입력해줍니다. 그럼  "dependencies": {    "express": "^4.21.0",    "socket..

Node 강의/심화 2024.09.26

1-3 게임 기획하기 ( 점프 게임 )

1. 게임 장르 결정하기 게임의 방향성을 정할 수 있는 장르를 가장 먼저 선택해줍니다. 시중에는 아래와 같이 다양한 장르가 존재합니다.액션어드밴처롤플레잉슈팅시뮬레이션전략퍼즐레이싱스포츠리듬파티생존샌드박스MOBA카드MMORPG플랫폼탑다운 슈터로그라이크호러턴제 전략방치형탐험탱크협동멀티플레이대전 격투슈팅 "우리는 플랫폼 사이드 뷰 점핑 액션 게임"을 만들어 볼 겁니다.ex)  2. 게임 컨텐츠1) 스테이지 진행 시간에 따른 점수 획득기본적으로 오른쪽을 이동하면서 장애물을 피하는 게임오래 버틸수록 높은 점수 획득 (시간에 따른) 스테이지에 따라서 더 높은 점수 획득0점, 1 스테이지1000점, 2스테이지위와 같이 점수로 나눠서 스테이지 구분스테이지가 올라갈수록 시간 당 높은 점수 획득 가능ex) 1스테이지 = 1..

Node 강의/심화 2024.09.26

1-2 HTTP와 TCP 그리고 웹소켓

1. HTTP 구조1) Request, Response 구조 + 비연결성Request↔️Response1. Request가 없으면 Response를 보내지 못 한다.Request에는 유저의 정보(송신지 포트 주소)가 있다 서버는 Requset로 부터 온 요청에대한 Response를 유저의 송신지 포트 주소로 보내주면 된다.2. 비연결성(연결을 유지하고 있지 않다)유저의 Request를 서버가 Response로 응답했다면 연결은 끝이 납니다.연결을 유지하지 않기 때문에 리소스가 적어지고, 처리 속도가 빨라집니다. 2) Stateless (무상태)Request에 따른 Response로 응답하면 연결은 끝난 것 입니다. 그 결과, 이전 연결, 이후 연결 모두 새로운 연결이 되고,이전에 일어났던 일(상태)를 저..

Node 강의/심화 2024.09.26

1-1 게임 개발의 시작

1. 기획 단계1) 필요 인력 : PD(Project Director) : 한 팀의 헤드 역할을 하며 게임 전반의 방향성을 결정하는 사람 TD(Technical Director) : 서버 팀, 클라이언트 팀 등 모든 기술 팀의 헤드 역할                                       전체적인 기술의 흐름 및 방향성을 결정하는 사람                                       회사 마다 부르는 이름이 다른 경우가 있다.                                       ex) TL (Technical Leader) AD(Art Director) : 아트 팀의 모든 방향성을 결정하는 사람                             ex) ..

Node 강의/심화 2024.09.26

2-9 [게시판 프로젝트] express-session으로 리팩토링

로그인 기능과 사용자 인증 미들웨어를 express-session을 이용해 리팩토링 할 예정 입니다.1. 초기설정yarn add express-session# express-session 미들웨어를 설치합니다.2. app.js 파일에 express-session 추가하기app.js에 express-session 등록하기 import expressSession from 'express-session' express-session 패키지를 import 받습니다. app.use(  expressSession({    secret : 'customized_secret_key', //세션을 암호화하는 비밀 키를 설정    resave : false,    // 클라이언트의 요청이 올 때 마다 세션을 새롭게 저장할..

Node 강의/숙련 2024.09.09

2-8 express-session

1. express-session express-session은 Express.js에서 세션(Session)기능을 쉽게 구현하기 위한 미들웨어입니다. 세션(Session)을 사용하기 위해서는 사용자 인증과 세션 스토리지를 통해서 사용자 정보를 저장하고,세션 정보가 담긴 쿠키를 사용자에게 발급하는 과정이 필요하였습니다.express-session은 이런 복잡한 과정을 생략하여 간단하게 세션 기능을 구현할 수 있도록 도와주는 미들웨어입니다. 2. express-session 시작하기 express-session은 세션 ID를 클라이언트에게 발급하고,이 세션 ID를 통해 서버는 클라이언트의 상태를 추적할 수 있습니다. 즉, 클라이언트 세션 ID를 발급받은 후에는 모든 서버 요청마다 세션 ID가포함된 쿠키를 전..

Node 강의/숙련 2024.09.09

2-7 [게시판 프로젝트] Prisma Transaction

1. Prisma의 Transaction Prisma의 트랜잭션은 여러 개의 쿼리를 하나의 트랜잭션으로 수행할 수 있는Sequential 트랜잭션과 Prisma가 자체적으로 트랜잭션의 성공과 실패를관리하는 Interactive 트랜잭션이 존재합니다. 2. Sequential 트랜잭션- Sequential 트랜잭션 1import { PrismaClient } from '@prisma/client';const prisma = new PrismaClient();// Sequential 트랜잭션은 순차적으로 실행됩니다.// 결과값은 각 쿼리의 순서대로 배열에 담겨 반환됩니다.const [posts, comments] = await prisma.$transaction([  prisma.posts.findMany(..

Node 강의/숙련 2024.09.09

2-6 트랜잭션(Transcation)

1. 트랜잭션(Transcation)트랜잭션(Transcation)은 작업의 완정성을 보장해주기 위해 사용되는 개념입니다.특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해줍니다. 트랜잭션(Tanscation)을 사용하는 대표적인 이유는 작업의 단위를 하나의 쿼리에 종속하는 것이 아닌,여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화하여 처리하는 작업을 뜻합니다. 2. 트랜잭션(Transcation) 사용 이유? 여러분들은 트랜젝션을 이용해 다양한 문제 상황들을 해결할 수 있게 됩니다. ex) 은행 계좌이체 1. A 고객의 계좌에서 1000원 차감2. B 고객의 계좌에 1000원 추가 1번 작업 이후 2번 작업을 수행하던 중 에러가 발생하게 될 경우A 고객 계좌에서만 10..

Node 강의/숙련 2024.09.09

2-5 [게시글 프로젝트] 댓글 생성 API

1. 게시글에 댓글 생성 API댓글 기능은 게시글 기능과 부모 - 자식 간의 관계로 구성된다. 일반적인 사이트를 생각해보면, 게시글과 별도로 댓글이 존재하지 않고,특정 게시글에 대한 하위 개념으로 존재합니다. 그렇기 때문에, 댓글 기능을 구현하기 위해서는 게시글이 필수적입니다. 즉, 댓글 API의 URL은 게시글 API의 URL을 기반으로 작성됩니다.ex) api/posts/:postId/comments 1) 댓글 생성 API(Router 추가 아래에 존재합니다)routes/comments.router.js 파일을 생성하고 import express from "express";import prisma from "../src/utils/prisma/index.js";import authMiddleware ..

Node 강의/숙련 2024.09.09

2-4 [게시판 프로젝트] 게시글 생성 API

1. [게시판 프로젝트] 게시글 생성 API사용자(Users)는 게시글을  여러 개를 만들 수 있다. → 1 : N 관계를 가지고 있습니다.현재 로그인 한 사용자의 정보가 존재하였을 때만 게시글을 생성할 수 있도록 구현 돼야 합니다. routes/posts.router.js 파일을 생성하고, app.js파일에 라우터를 추가하도록 하겠습니다.2. 게시글 생성 API1) posts.router.js 내용 추가하기import express from "express";import prisma from "../src/utils/prisma/index.js";import authMiddleware from "../middlewares/auth.middleware.js";const PostsRouter = expre..

Node 강의/숙련 2024.09.09