분류 전체보기
-
[TIL] 스파르타) 심화 주차 강의 수강, 개인 과제 시작 (Chrome Dino Web Server)TIL-sparta 2024. 6. 10. 19:50
> 심화 주차로 진입함에 따라 새로운 과제가 발제되었다. Chrome Dino Runner 게임의 서버를 구현하면 되는데, web socket의 사용법과 OOP 및 layered architecure pattern에 익숙해지는 것이 주된 목표로 보인다. 학습 키워드: Node.js, layered architecture pattern, controller, service, repository, jest 1. Layered Architecture Pattern1) What is it?: 계층형 아키텍쳐 패턴은 크게 Presentation Layer, Business Layer, Persistence Layer, 그리고 Database Layer로 시스템의 기능을 구분하는 구조를 말한다. Controller..
-
[TIL] OOD (Object-Oriented Design) principles - SOLIDTIL-sparta 2024. 6. 9. 23:23
> 강의를 수강하고 이전에 자세히 알지 못했던 객체 지향 설계 (OOD)의 5가지 원칙인 SOLID에 대해 정리해보았다. 학습 키워드: Object-Oriented Design, SOLID Object-Oriented Design1) SOLID: 객체 지향 프로그래밍(OOP)에서 객체 지향적인 설계를 위해 지켜야 하는 다섯가지 원칙이 있는데, 이를 SOLID 라고 부른다. SOLID는 각각 단일 책임(Single Responsibility) 원칙, 개방-폐쇄(Open-Close) 원칙, 리스코프 치환(Liskov Substitution) 원칙, 인터페이스 분리(Interface Segregation) 원칙, 그리고 의존성 역전(Dependency Inversion) 원칙이 있다. 2) Single Res..
-
[TIL] 풋살 온라인 프로젝트 종료 - 2부 (ERD 수정해보기)TIL-sparta 2024. 6. 8. 22:34
> https://donkim0122.tistory.com/69 1부 보기 학습 키워드: MySQL, DB, Normalization, anomaly Applying DB Normalization1) ERD: 2) 문제점?: 풋살 온라인 프로젝트에서 강화 기능을 구현할 때 inventory 테이블의 count 컬럼 때문에 강화 시 인벤토리 수정 시 쿼리가 불필요하게 많아진다고 느꼈다. 이 테이블은 player 테이블과 user 테이블 각각의 id를 FK로 가지고 count와 level을 기록하여 인벤토리 항목 (보유 선수)의 강화 상태와 보유 수량을 유지하도록 설계됐다. 문제는 이런 형태라면 강화가 성공했을 때 테이블의 여러 row를 수정해야한다는 것이다. 예를 들면, 'user1'이라는 유저가 레벨 ..
-
[TIL] 풋살 온라인 프로젝트 종료 - 1부 (DB Normalization)TIL-sparta 2024. 6. 7. 22:57
> 이번 풋살 온라인 프로젝트를 진행하면서 어려움을 겪었던 DB 설계에 대한 부분을 보완하기 위해 DB의 정규화(Normalization)에 관한 내용을 공부해보았다. 학습 키워드: Database, normalization, normal form, 1NF, 2NF Database Normalization (데이터베이스 정규화)1) What is it?: RDB (Relational Database)에서 데이터의 중복을 줄이고 무결성을 강화하기 위해 Normal Form으로 정의되는 여러 단계를 거쳐 DB의 column과 table을 세분화하는 작업을 일컫는다. 정규화에 대한 내용을 공부하기에 앞서 이번 풋살 온라인 프로젝트에서 사용한 문제의 ERD에 대한 이야기를 해야겠다. 처음에는 user, in..
-
[KPT] 스파르타) 풋살 온라인 - 팀 프로젝트 회고 (17팀)KPT 2024. 6. 7. 17:10
Keep팀원끼리 모르는 부분이나 어려운 점 등을 공유하여 적극적으로 도움을 주고 받음ProblemDB 설계가 빈약해서 쿼리 관련 여러 문제가 발생했음역할 분담 및 작업 현황의 공유가 효율적이지 못한 문제Try정규화 등 DB개념을 공부하여 체계적으로 설계할 수 있는 역량 갖추기협업 시 업무 계획 및 공유 등을 효율적으로 관리할 수 있는 방법 알아보기API를 과제 요구 사항 외 적으로도 고민하여 능동적으로 설계하기개발한 내용을 좀 더 체계적으로 이해시킬 수 있도록 발표 준비에 시간을 더 할애하기
-
[TIL] 스파르타) 풋살 온라인 팀 프로젝트 진행 (D-1)TIL-sparta 2024. 6. 6. 22:29
학습 키워드: Prisma ORM, Node.js, $queryRaw JOIN tables of different DB1) What is it?: 풋살 온라인 프로젝트의 DB는 game_db와 player_db로 나뉘어 있는데, 이를 queryRaw를 이용해 한 번에 각 DB 내 테이블을 불러오는 방법을 알아보고 적용 해보았다. 2) How does it work?:// 바뀌기 전...const inventory = await userPrisma.inventory.findFirst({ where: { inventoryId: inventoryId, },});const player = await playerPrisma.player.findUnique({ where: { player..