티스토리

MDlist
검색하기

블로그 홈

MDlist

windo0602.tistory.com/m

TIL (Today I Learned)

구독자
0
방명록 방문하기
공지 24.4.15 Starting Cod⋯ 모두보기

주요 글 목록

  • Nest.js, TypeScript 프로젝트 mindo - 3 Hot( Auth ) Entities 정의를 끝냈으니 맨 처음 작업은Auth 의 sign-up, sign-in 을 구현해 보도록 하겠다. 시작에 앞서 openAPI swagger 를 사용하기 위해 다음 명령어를 실행 하였다.windo@DESKTOP-6SMB85M MINGW64 ~/nestjs-mindo (main)$ npm i --save @nestjs/swaggeradded 3 packages, and audited 752 packages in 7s114 packages are looking for funding run `npm fund` for details37 moderate severity vulnerabilitiesTo address issues that do not require attention, run: n.. 공감수 1 댓글수 0 2024. 8. 23.
  • Nest.js, TypeScript 프로젝트 mindo - 2 Hot( Entity ) 전 문서에서는 DB 연결을 하는 것까지 작성하였고이어서 구성된 ERD 를 참고하여 Entities 작성 및 dto를 작성해 볼 예정이다. 일단 기본적으로 데코레이터를 작성하지 않고 기본적인 틀부터 작성을 해보겠다. Entity 순서 : 1. user, 2. show, 3. schedule, 4. seat, 5. book  1.import { UserRole } from '../roles/user-role';import { Book } from 'src/book/entities/book.entity';export class User { id: number; email: string; password: string; nickname: string; points: number; role: UserR.. 공감수 0 댓글수 0 2024. 8. 22.
  • Nest.js, TypeScript 프로젝트 mindo - 1 Hot( configModule or Service ) 현 프로젝트는 Nest.js 와 TypeScript 를 활용하고아래  API 명세서와 ERD 를 토대로 만든 프로젝트 이다.아무것도 없이 시도하는 것이기 때문에 문제가 많을것을 참고해야한다.  https://shore-law-5df.notion.site/API-Plus-4e6645f8b51b4b409640583c42b5c208?pvs=4 API 명세서 ( Plus ) | Notion공통shore-law-5df.notion.sitesparta_node_ts | DrawSQL sparta_node_ts | DrawSQLDatabase schema diagram for sparta_node_ts.drawsql.app 1. nest 디렉터리 생성, 깃 허브 연동windo@DESKTOP-6SMB85M MINGW6.. 공감수 0 댓글수 0 2024. 8. 21.
  • Nest.js 강의 (1) ( ) 내일배움캠프 스파르타 코딩클럽Nest.js 개발환경 구축 공감수 0 댓글수 0 2024. 8. 2.
  • TypeScript 강의 (12) ( 실습 : 도서관 프로그램 ) 내일배움캠프 스파르타 코딩클럽 [ 도서관 프로그램 ]도서관 프로그램 구성1. 도서 추가 기능 - 사서2. 도서 삭제 기능 - 사서3. 도서 대여 기능 - 유저4. 도서 반납 기능 - 유저  { "name": "lastts", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "start": "tsc && node ./dist/index.js", "build": "tsc --build", "clean": "tsc --build --clean" }, "keywords": [], "author": "", "license": "ISC"} enum Role { LIBRARIAN, // 사서 MEMBER, //.. 공감수 0 댓글수 0 2024. 7. 31.
  • TypeScript 강의 (11) ( S.O.L.I.D ) 내일배움캠프 스파르타 코딩클럽 [ 객체 지향 설계 원칙 -  S.O.L.I.D ] 1. S (SRP. 단일 책임 원칙 ) => 매우 중요! - SRP 원칙   1. 클래스는 하나의 책임만 가져야 한다는 매우 기본적인 원칙이다.   2. 특히, 5개의 설계 원칙 중 가장 기본적이고 중요한 원칙이다.    3. 예를 들어, 유저 서비스라는 클래스가 있다고 가정을 해보면, 이 유저 서비스에서는 유저 관련된 액션만 해야하고       다른 액션을 해서는 안된다.     - 잘못된 사례 :class UserService { constructor(private db: Database) {} getUser(id: number): User { // 사용자 조회 로직 return this.db.findUs.. 공감수 0 댓글수 0 2024. 7. 30.
  • TypeScript 강의 (10) ( 상속 ) 내일배움캠프 스파르타 코딩클럽 1. 상속  - 상속은 객체 지향 프로그래밍에서 클래스 간의 관계를 정의하는 중요한 개념이다. - 상속을 통해 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의할 수 있다. - 상속이 있어서 똑같은 코드를 계속 반복적으로 작성할 필요가 없게 된다. - 위의 예제를 보면 Car 라는 클래스를 생성했으면 머스탱, 골프와 같은 차량들은 Car라는 클래스를 상속받고 자체적으로   필요한 속성 및 메서드를 추가하면 끝이다. - 상속을 구현하려면 extends 키워드를 사용하면 된다. - 사용 예시:class Animal { name: string; constructor(name: string) { this.name = name; } makeSound() { .. 공감수 0 댓글수 0 2024. 7. 30.
  • TypeScript 강의 (9) ( 클래스 ) 내일배움캠프 스파르타 코딩클럽 1. 클래스 - 클래스는 객체 지향 프로그래밍(OOP)의 핵심 구성 요소 중 하나 이다. - 클래스는 객체를 만들기 위한 틀(template)이다. 2. 클래스의 구성 요소 - 클래스에서는 같은 종류의 객체들이 공통으로 가지는 속성(attribute)과 메서드(method)를 정의한다.    1. 속성은 객체의 성질을 결정하는 것이다.      - 예를 들어, 붕어빵은 팥이란 속성이 있는 팥 붕어빵과 슈크림이란 속성이 있는 슈크림 붕어빵이 있다고 볼 수 있다.    2. 메서드는 객체의 성질을 변화시키거나 객체에서 제공하는 기능들을 사용하는 창구이다.      - 붕어빵 주인은 붕어빵을 팥 붕어빵에서 슈크림 붕어빵으로 전환할 수 있다.      - 붕어빵을 사는 고객들은 팥.. 공감수 0 댓글수 0 2024. 7. 30.
  • TypeScript 강의 (8) ( 실습 : 별다방 ) 내일배움캠프 스파르타 코딩클럽프로그램 기능 - 별다방 프로그램은 다음과 같이 구성이 되어있어요.     - 음료 등록 기능 - 어드민     - 음료 삭제 기능 - 어드민     - 음료 조회 기능 - 어드민, 고객     - 음료 주문 기능 - 고객     - 음료 준비 완료 기능 - 어드민     - 음료 수령 기능 - 고객 얻고자 하는 것 - 이 프로그램에서는 우리가 배웠던 다양한 타입들을 활용해볼거에요! - 이제, 그러면 프로그램 작성을 시작해보겠습니다! windo@DESKTOP-6SMB85M MINGW64 ~$ mkdir secondwindo@DESKTOP-6SMB85M MINGW64 ~$ cd secondwindo@DESKTOP-6SMB85M MINGW64 ~/second$ npm init -.. 공감수 0 댓글수 0 2024. 7. 29.
  • TypeScript 강의 (7) ( 유틸리티 타입 ) 내일배움캠프 스파르타 코딩클럽 Partial 타입이란? - `Partial`  타입은 타입 T의 모든 속성을 선택적으로 만들어요! - 이를 통해 기존 타입의 일부 속성만 제공하는 객체를 쉽게 생성할 수 있습니다. - 아직, 무슨 말인지 잘 모르시겠죠? 예제를 살펴볼게요!interface Person { name: string; age: number;}const updatePerson = (person: Person, fields: Partial): Person => { return { ...person, ...fields };};const person: Person = { name: "Spartan", age: 30 };const changedPerson = updatePerson(person, {.. 공감수 0 댓글수 0 2024. 7. 29.
  • TypeScript 강의 (6) ( enum, object literal ) 내일배움캠프 스파르타 코딩클럽 enumenum 은 열거형 데이터 타입상수 그룹화를 위해선 enum 이 좋다.enum UserRole { ADMIN = "ADMIN", EDITOR = "EDITOR", USER = "USER",}enum UserLevel { NOT_OPERATOR, // 0 OPERATOR // 1}function checkPermission(userRole: UserRole, userLevel: UserLevel): void { if (userLevel === UserLevel.NOT_OPERATOR) { console.log('당신은 일반 사용자 레벨이에요'); } else { console.log('당신은 운영자 레벨이군요'); } if (userRole.. 공감수 0 댓글수 0 2024. 7. 28.
  • Chapter 6 최종프로젝트 시작 (1) 내일배움캠프 스파르타 코딩클럽webSocket1. 양방향 통신2. 실시간3. 채팅, 알림 기능 lib : npm install ex press socket.io 서버 측Node.js 와 Express 를 사용하여 HTTP 서버를 설정한다.socket.IO 를 사용하여 실시간 통신을 처리한다. express 를 사용하여 api 엔드포인트를 설정하고 클라이언트 요철을 처리한다. socket.IO를 통해 실시간 메시지 정송을 처리한다.클라이언트가 연결, 메시지 전송, 연결 해제 등의 이벤트를 처리한다. 클라이언트 측react 를 사용하여 사용자 인터페이스를 구축한다. socket.IO 클라이언트를 사용하여 서버와 실시간 통신을 설정한다.사용자가 입력한 메시지를 서버로 전송하고, 서버에서 전송된 메시지를 수신한다. 공감수 0 댓글수 1 2024. 7. 24.
  • Chapter 6 최종프로젝트 시작 내일배움캠프 스파르타 코딩클럽git flow 전략(git branch 전략)브랜치 전략이란 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적으로 활용하기 위한 work-flow다.브랜치의 생성, 삭제, 병합 등 git의 유연한 구조를 활용해서, 각 개발자들의 혼란을 최대한 줄이며 다양한 방식으로소스를 관리하는 역할을 한다.즉, 브랜치 생성에 규칙을 만들어서 협업을 유연하게 하는 방법론을 말한다. (출처 아래)[GIT] 📈 깃 브랜치 전략 정리 - Github Flow / Git Flow (tistory.com) [GIT] 📈 깃 브랜치 전략 정리 - Github Flow / Git FlowGIT 브랜치 전략 브랜치 전략이란 여러 개발자가 하나의 저장소를 사용하는 환경에서 저장소를 효과적.. 공감수 0 댓글수 0 2024. 7. 24.
  • TypeScript 강의 (5) ( const, readonly, any, unknown, union ) 내일배움캠프 스파르타 코딩클럽 [ const, readonly ] 1. let - let 키워드를 사용하여 선언하면 변수가 된다. - 변수는 값을 변경할 수 있다. 2. const - const 키워드를 사용하여 선언하면 변수가 아니 상수가 된다. - 상수는 값을 변경할 수 없다. - 값을 변경할 수 없다는 얘기는 = 연산자로 재할당이 불가능하단 얘기이다.const num: number = 5;console.log(num); // 출력: 5num = 10; // 에러:'num'은 const로 선언되었으므로 재 할당될 수 없다.상수가 위와같이 재할당을 하게되면 에러가 발생한다는 것은 잘 알고있을 것이다.const nums: number[] = [];console.log(nums); // 출력: []nums.. 공감수 0 댓글수 0 2024. 7. 20.
  • TypeScript 강의 (4) ( 타입 ) 내일배움캠프 스파르타 코딩클럽[ 타입 ] 타입에 대한 제대로 된 이해가 중요한 이유!타입을 제대로 이해하면 오류들을 미리 방지할 수 있다.  1. boolean - boolean 타입은 참(true) 또는 거짓(false) 값을 나타낸다. - 이외의 값은 표현을 할 수 없다. - 조건문, 비교 연산 등에서 주로 사용된다. - 예시 :function isValidPassword( password: string ): boolean { return password.length >= 8;}const password = "q1w2e3r4!";const valid = isValidPassword(password);if (valid) { console.log("유효한 패스워드입니다!");} else { console.. 공감수 0 댓글수 0 2024. 7. 19.
  • TypeScript 강의 (3) ( 실습: 성적표 ) 내일배움캠프 스파르타 코딩클럽 [ 첫번째 TypeScript 프로그램 실습: 성적표 프로그램 만들기 ] 1. 성적표 프로그램 만들기2. 얻고자 하는 것은 TypeScript 기본문법 맛보기 3. 성적표 프로그램은 다음과 같이 구성이 되어있다. - 학생 정보 및 시험 점수 입력 기능 - 평균 점수 및 학점 계산 기능1. 프로그램이 위치할 프로젝트 directory 를 새로 만들기windo@DESKTOP-6SMB85M MINGW64 ~$ mkdir first새 디렉터리를 생성windo@DESKTOP-6SMB85M MINGW64 ~$ cd firstfirst 디렉터리 진입windo@DESKTOP-6SMB85M MINGW64 ~/first$2. 현 디렉터리에서 다음 명령어들을 터미널에서 실행windo@DESKT.. 공감수 2 댓글수 3 2024. 7. 17.
  • TypeScript 강의 (2) ( tsconfig.json, .d.ts ) 내일배움캠프 스파르타 코딩클럽 [ tsconfig.json ] 1. tsconfig.json - tsc --init 명령을 실행하면 생성되는 파일 - tsconfig.json 은 TypeScript 프로젝트의 설정 파일 - 주로 프로젝트의 컴파일 옵션 및 입력 파일들을 정의하는데 사용 2. tsconfig.json 주요 옵션 - compilerOptions - strict 옵션은 true로 설정 1. 엄격한 타입 검사 옵션을 모두 활성화하는 옵션이다. 2. TypeScript 컴파일러가 보다 엄격한 타입 검사를 수행해 코드의 실수를 미리 찾아낼 수 있다. 3. 해당 옵션을 true로 설정하면 아래의 옵션들이 자동으로 true로 설정이 된다.     (       1. strictNullChecks    .. 공감수 0 댓글수 0 2024. 7. 16.
  • TypeScript 강의 (1) 내일배움캠프 스파르타 코딩클럽 [ 알고가야 할 것 ]  컴파일러란?컴파일러는 프로그래밍 언어로 작성된 소스 코드 => 다른 프로그래밍 언어로 변환하는 도구이러한 변환 과정에서 컴파일러는 소스 코드의 구문과 구조를 검사하여 문제가 없는지 확인이를 통해 개발자가 작성한 코드에 오류가 있는 경우 미리 알려주어 문제를 해결 아래 예시들은 tsc(타입스크립트 컴파일러 (동적 언어))를 활용함 1. 컴파일러는 타입검사를 해준다. - TypeScript 컴파일러는 소스 코드의 정적 타입 검사를 수행function add(a, b) { return a + b;}const result = add(1, "2");console.log(result); // "12"console.log("result type", typeof .. 공감수 0 댓글수 0 2024. 7. 16.
  • Node.js 복습 (5) ( https ) 내일배움캠프 스파르타 코딩클럽 [ 도메인 연결 ] 우측 하단 [ 관리 ] 클릭네임서버 [ 설정 ] 클릭 DNS 관리 [ 호스팅 영역 생성 ] 클릭도메인 이름을 가비아 도메인 네임 [ mdstart.shop ] 입력 후 [ 호스팅 영역 생성 ] 클릭유형 NS(Name sever) 로 생성된 레코드를 볼 수 있다.1. 위 AWS Route53 레코드에서 생성된 라우팅 대상을 가비아 호스트 명에 1차부터 4차까지 그대로 입력해준다.대신 주의사항은 복사 붙여넣기 할때 라우팅 대상의 맨 끝부분 . 은 빼고 복사 후 붙여 넣어준다. 2. 소유자 인증을 완료해준다.3. 맨 하단 [ 적용 ] 클릭위와같은 화면이 출력된다.  1. 화면 좌측 상단에 도메인 네임 [ mdstart.shop ] 입력, 유형 선택창 [ NS .. 공감수 0 댓글수 0 2024. 7. 13.
  • Node.js 복습 (4) ( dotenv, express ) 내일배움캠프 스파르타 코딩클럽 [ dotenv.config ] 우리가 코딩을 할때 보통 감춰야할 코드들이 있다.나만 알아야 할 DB 서버 접속시 필요한 주소 및 password 나 또한 secret키를 정의할때 말이다.그때 .env 파일에 환경변수로 지정하고 그 파일을 .gitignore 에 파일명을 기재하여.env가 깃허브로 업로드 되는것을 허용치 않는다.그럼 이 감춘 .env 환경 변수를 로드할때 필요한것은 무엇일까?바로 아래 코드와 같다.import 'dotenv/config'; 그럼 dotenv/donfig 동작 원리에 대해 알아보자 1. env 파일을 찾아서 읽는다.2. 각 라인을 파싱하여 KEY = VALUE 형식의 문자열을 process.env 객체에 추가한다.3. 이제 애플리케이션 코드에서.. 공감수 0 댓글수 0 2024. 7. 10.
  • Node.js 복습 (3) ( 서버 시작 ) 내일배움캠프 스파르타 코딩클럽 [ 서버 시작 ] 서버를 시작할때는 express() 를 활용하여 클라이언트 요청을 대기한다.app.listen(SERVER_PORT, () => { console.log(`${SERVER_PORT}번 포트로 서버가 열렸습니다.`);});위와 같이 express().listen() 메서드를 통해서 말이다.express().listen() 은 Node.js 를 사용하여 서버를 시작하는 함수이다.이 함수는 Express.js 애플리케이션 객체를 생성하고, 지정된 포트에서 HTTP 서버를 시작하여클라이언트 요청을 대기한다.위 코드를 살펴보면 listen() 파라미터 안에 두가지 인수값이 들어가 있는것을 확인할 수 있다.port 인수 : 서버가 청취할 포트 번호를 지정한다.콜백함.. 공감수 0 댓글수 0 2024. 7. 9.
  • Node.js 복습 (2) ( app.js, mongooseSchema ) 내일배움캠프 스파르타 코딩클럽 import mongoose from 'mongoose';// 제품 스키마 정의const productSchema = new mongoose.Schema({    name: {        type: String,        required: true, // 필수 항목        unique: true, // 유일한 값이어야 함    },    // 추가 필드를 여기에 정의할 수 있습니다.    // 예를 들어:    price: {        type: Number,        required: true, // 필수 항목    },    inStock: {        type: Boolean,        default: true, // 기본 값 설정    }, .. 공감수 0 댓글수 0 2024. 7. 5.
  • Node.js 복습 (1) ( prettier, dotenv, MongoDB ) 내일배움캠프 스파르타 코딩클럽 [ prettier ]default formatter : prettier - code formatter 설정format on save : 저장시 자동으로 코드 포맷팅prettier : require config 검색후 체크 ( prettier 설정 파일이 있을 때만 포맷팅을 함) .prettierrc 파일 예시{ "singleQuote": true, "semi": true, "useTabs": false, "tabWidth": 2, "trailingComma": "all", "printWidth": 80, "bracketSpacing": true} - singleQuote: 문자열 입력 시 쌍따옴표(") 대신 따옴표(') 사용- semi: 코드 끝에 항상 세미콜.. 공감수 0 댓글수 0 2024. 7. 3.
  • Node.js 백오피스 팀 프로젝트 회고 내일배움캠프 스파르타 코딩클럽 KPT 회고회고를 바탕으로, 다음 스텝으로 나아가보세요.실제로 많은 회사들이 프로젝트가 종료될 때마다 회고를 진행하고, KPT회고 방법론을 아주 많이 적용한답니다!공부한 것, 배운 것 보다는 "협업"을 하며 느낀 점, 앞으로 더 잘 하고 싶은 점과 관련된 이야기를 많이 나누어주시면 좋겠습니다.KPT회고 방법 참고하기https://techblog.woowahan.com/2677/ttps://brunch.co.kr/@jinha0802/35Keep - 현재 만족하고 있는 부분코드 리뷰를 했다.팀원 모두가 목표를 향해서 열심히 한 점.자신이 맡은 부분은 모두 완수했다.팀원끼리 호흡을 잘 맞춘 점이 좋았다.Problem - 불편하게 느끼는 부분코드 리뷰를 마지막 날에 몰아서 해서 너.. 공감수 0 댓글수 0 2024. 7. 2.
  • Node.js 백오피스 팀 프로젝트 (8) 내일배움캠프 스파르타 코딩클럽 import express from 'express';import { requireAccessToken } from '../middlewares/require-access-token.middleware.js';import { ReviewController } from '../controllers/reviews.controller.js';import { ReviewService } from '../services/reviews.service.js';import { ReviewRepository } from '../repositories/reviews.repository.js';const reviewRouter = express.Router();const reivewsRepos.. 공감수 0 댓글수 0 2024. 7. 2.
  • Node.js 백오피스 팀 프로젝트 (7) 내일배움캠프 스파르타 코딩클럽import express from 'express';import { prisma } from '../utils/prisma.utils.js';import { PetsitterController } from '../controllers/petsitters.controller.js';import { PetsitterRepository } from '../repositories/petsitters.repository.js';import { PetsitterService } from '../services/petsitters.service.js';import { requireAccessToken } from '../middlewares/require-access-token.midd.. 공감수 0 댓글수 0 2024. 6. 28.
  • Node.js 백오피스 팀 프로젝트 (6) 내일배움캠프 스파르타 코딩클럽 import express from 'express';import { BookmarkController } from '../controllers/bookmarks.controller.js';import { requireAccessToken } from '../middlewares/require-access-token.middleware.js';const bookmarkRouter = express.Router();const bookmarkController = new BookmarkController();// 펫시터 즐겨찾기 등록bookmarkRouter.post(  '/:petsitterId/follow',  requireAccessToken,  bookmarkContro.. 공감수 0 댓글수 0 2024. 6. 28.
  • Node.js 백오피스 팀 프로젝트 (5) 내일배움캠프 스파르타 코딩클럽 import express from 'express';import { prisma } from '../utils/prisma.utils.js';import { BookingsController } from '../controllers/bookings.controller.js';import { BookingsService } from '../services/bookings.service.js';import { BookingsRepository } from '../repositories/bookings.repository.js';import { PetsitterRepository } from '../repositories/petsitters.repository.js';impor.. 공감수 0 댓글수 0 2024. 6. 26.
  • Node.js 백오피스 팀 프로젝트 (4) 내일배움캠프 스파르타 코딩클럽 import express from 'express';import { authRouter } from './auth.router.js';import { bookingRouter } from './bookings.router.js';import { bookmarkRouter } from './bookmarks.router.js';import { petsitterRouter } from './petsitters.router.js';import { reviewRouter } from './reviews.router.js';import { usersRouter } from './users.router.js';const apiRouter = express.Router();apiRou.. 공감수 0 댓글수 0 2024. 6. 24.
  • Node.js 백오피스 팀 프로젝트 (3) 내일배움캠프 스파르타 코딩클럽 import Joi from 'joi';const schema = Joi.object({  petsitterId: Joi.number().required().messages({    'number.base': '펫시터의 아이디는 숫자로 입력해주세요.',    'any.required': '예약할 펫시터의 아이디를 입력해 주세요.',  }),  animalType: Joi.string().required().valid('DOG', 'CAT', 'ETC').messages({    'any.required': '동물 유형을 입력해 주세요',    'any.only': '동물 타입은 DOG, CAT, ETC 중 선택할 수 있습니다.',  }),  serviceType: Joi.s.. 공감수 0 댓글수 0 2024. 6. 24.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

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

    © Kakao Corp.