스파르타내일배움캠프
-
[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..
-
[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..
-
프로그래머스) 무인도 여행 풀이 (Java)TIL-sparta 2024. 6. 6. 00:33
학습 키워드: Java 154540 - 무인도 여행1) 문제 설명 요약 (원문은 링크 참고): 요약: 바다를 나타내는 문자 X, 섬에 있는 식량 나타내는 문자 1~9 를 담은 배열 maps에서 상하좌우로 이어진 숫자들을 하나의 섬으로 취급할 때, 섬에 있는 식량의 총 합을 계산하고 이를 오름차순으로 반환하는 문제입니다. 조건: 3 2) 풀이 과정: 예전에 언젠가 풀어본 스타일의 문제다. 배열을 순회하면서 방문한 위치를 마킹하고 방문하지 않은 섬을 찾아서 탐색하면서 방문 마킹을 해주고 합산한 식량 값을 기록하면 된다. 방문한 섬을 탐색하는 것을 재귀적으로 수행하는데, 배열을 순회할 때 visited[i][j] 값이 false인 숫자를 만난 경우 해당 위치부터 시작하여 상하좌우 index가 boun..