분류 전체보기 60

공연 예매 프로젝트 - 해보고 깨닫기..

오늘은프로젝트를 진행하며 고민하고 구현해보던 중 비효율적으로 느껴졌던 프로세스에 관해 작성해보겠습니다.  ERD  현재 ERD에서는 카테고리를 따로 공연 테이블에 상위에 배치하여 관리하고 있습니다. 공연 테이블 안에 컬럼으로 작성하지 않고 따로 테이블을 만든 이유는 공연 테이블 자체를 그룹화 시켜 유지보수성을 향상시키기 위함이였습니다. 그러나 프로젝트를 진행하며 공연의 카테고리는 변화나 삭제가 빈번하지 않기 때문에 유지보수성이 높을 필요가 없다라는 생각이 들었습니다.결국 다음과 같은 낭비가 생긴 상태입니다. 1. 카테고리 생성을 위한 추가 API 2. 조회 시 Join을 한번 더 해야한다.3. 명시적으로 이해하기 복잡해졌다.  마무리 실제 개발 전까지 효율적인 설계라고 생각했는데 직접 해보니 어떤 문제가..

Web 2024.07.06

공연 예매 프로젝트 - ERD 수정(3), API 명세서 수정

오늘은 ERD와 API 명세서 피드백을 받았습니다. 수정한 부분을 적어보겠습니다.  ERD1. 잔여 좌석 -> 판매 좌석 변경 - 잔여 좌석으로 두고 데이터를 추가했을 시 좌석을 포함하는 테이블 공연 일정이 추가된다면 잔여 좌석을 총 개수만큼 다시 추가해서 데이터베이스에 추가 해줘야 했습니다. 예시로는 3개만 추가했으나 만약 100개 정도의 좌석 정보를 갖게 된다면 매번 일정을 추가할 때마다 꽤 많은 데이터를 매번 추가 해줘야 할 것입니다. - 판매 좌석으로 변경함으로써 판매가 되었을 때만 테이블이 추가되도록 ERD 설계를 변경하였습니다. 이로써 매번 좌석 정보 데이터를 추가해 줄 필요가 없어지고 불필요한 데이터의 양을 줄일 수 있을 것입니다. 2. 티켓이 갖고 있던 중복된 컬럼 제거 - 이것은 선택적인..

Web 2024.07.04

DTO 개념 잡기 + 공연 예매 사이트 프로젝트 - ERD 수정

오늘은Nest.js 강의를 수강했습니다. 그리고 프로젝트에 관하여 변경사항이 있어 ERD를 수정했습니다.  DTO란 ? 데이터 전송 객체를 의미합니다. 시스템 간 또는 계층 간에 데이터를 전달하기 위해 사용되는 객체입니다. 데이터베이스 모델이나 비즈니스 로직 모델과는 별도로 데이터의 구조를 정의합니다. 이를 통해 데이터의 유효성 검사, 데이터 변환, 데이터 교환의 단순화 등 데이터의 무결성을 유지할 수 있게 합니다. 또한 데이터를 모아서 한번에 전달하므로 호출 횟수를 자연스럽게 낮출 수 있습니다. DTO를 사용함으로써 얻는 장점첫 번째, Dto를 사용하면 유닛 테스트 할 때 굉장히 쉬워집니다. Service 레이어 에서 유닛테스트를 할 때, Entity를 그대로 사용해버리면 Service 테스트를 하게 ..

Web 2024.07.02

모의면접 + 피드백 (JWT 토큰)

오늘은 캠프에서 진행하는 모의면접에 참여했습니다. 평소 공부했던 내용 + 미리 제공된 예상 질문 덕분에 답변은 잘 했으나 몇 가지 피드백이 있어 오늘의 TIL로 적어둡니다.  1. 말하는 연습이 필요하다. - 아는 내용이었지만 답변하는 과정에서 필요 이상으로 길게 설명했던 것 같습니다. 중간중간 뜸을 들이는 시간이나, 부가 설명이 중간에 들어가며 상대로 하여금 이 사람이 제대로 알고 있는 건가 ? 하는 의문을 들 게 할 수 있다는 피드백을 받았습니다.- 솔루션으로 글로 먼저 내용을 정리해놓고 누군가에게 설명한다는 생각으로, 핵심 키워드 한두 개를 말하는 연습과 부가 설명은 마지막에 필요하다면 덧붙일 것을 권유해 주셨습니다. 2. JWT 토큰을 사용하는 이유 + 액세스 토큰 만료에 대하여 - 첫 번째 질문..

Web 2024.07.01

2024 Epson Innovation challenge 참여 후기

오늘은2024 Epson API 공모전에 참여하였습니다. 해당 공모전은 Epson 코리아 + 멋쟁이 사자처럼에서 함께 진행해주셨습니다. 본선 발표 전, 피칭 시간이 있었습니다.  프로젝트 - PaideiaEpson Connect API를 활용한 프로젝트를 개발하는 공모전이였습니다. 저희 팀에서는 GPT 엔진을 활용한 개인 맞춤형 교육 자료를 생성하는 서비스를 만들었습니다.저는 프로젝트에서 DB 설계를 맡아 생성된 교육 자료를 DB에 저장하고 활용하는 기능들을 구현했습니다. ERD초기에 계획한 ERD입니다.추천 학습, 오늘의 학습, 즐겨찾기한 학습, 오답노트 등 초기 기획에 맞춰 구성했는데 제출 기한에 맞춰 기능이 축소되면서 다시 ERD를 작성했습니다. 다시 작성한 ERD입니다. ERD를 기반으로 설계한 ..

Web 2024.06.30

공연 예매 프로젝트 - ERD, API 명세서

오늘은새로 시작하게된 프로젝트에 앞서 API 명세서와 ERD를 작성했습니다.  API 명세서프로젝트에서 필요한 최소한의 필수적 기능들로 작성했습니다.  - auth : 회원가입, 로그인 - user : 개인 정보 조회 - show : 공연 생성, 공연 검색, 공연 상세 조회- ticket : 랜덤 예매하기, 예매 확인, 예매 취소, 전체 좌석 예매 정보 확인, 좌석 지정 예매  좌석마다 등급이 있고 가격이 다르기 때문에 좌석을 지정하여 예매, 예매 취소, 전체 좌석 예매 정보 확인 API가 해당 프로젝트에서 핵심적인 부분이라고 생각됩니다.  req, res 작성에서 ERD의 필요성을 느껴 번갈아가며 작업했습니다. 예매와 관련된 API URL과 method가 RESTful 하게 작성되었는지, 피드백을 받아..

Web 2024.06.28

타입스크립트의 고급 타입 정리

TypeScript는 JavaScript에 정적 타입을 추가하여 코드의 안정성과 가독성을 높이는 언어입니다. TypeScript에는 기본 타입 외에도 고급 타입이 존재하여 복잡한 타입 정의와 더 강력한 타입 체크를 가능하게 합니다.  오늘은 TypeScript의 고급 타입들을 정리한 자료입니다.   1. 유니온 타입 (Union Types)여러 타입 중 하나를 가질 수 있는 변수를 정의할 때 사용합니다.typescriptlet value: string | number;value = "Hello";value = 123; 2. 인터섹션 타입 (Intersection Types)여러 타입을 결합하여 하나의 타입으로 만들 때 사용합니다.interface Person { name: string;}interf..

Web 2024.06.28

타입스크립트의 컴파일

오늘은 타입스크립트를 사용하기 위해 추가된 과정인 컴파일에 대해서 공부했습니다.  컴파일이란 ? 일반적으로, 소스 코드를 특정 플랫폼에서 실행 가능한 형태로 변환하는 과정을 의미합니다. 타입스크립트를 브라우저에서 실행하려면 '컴파일' 과정이 필요한데요,브라우저는 아직까지 타입스크립트 코드를 처리할 수 없기 때문입니다.따라서 개발 과정에서 타입스크립트로 작성하지만 배포시에는 반드시 자바스크립트로 변환하는 과정이 필요합니다.  컴파일러란 ? 타입스크립트 코드를 자바스크립트 코드로 변환할 때 필요한 도구를 '컴파일러'라고 합니다. (프로그래밍 언어로 작성된 소스 코드 -> 다른 프로그래밍 언어로 변환하는 도구)'컴파일러'는 코드 변환 과정에서 오류를 사전에 발견하기도 하고 코드의 최적화를 도와 전반적인 어플리..

Web 2024.06.27

동적 타입 언어와 정적 타입 언어

오늘은 타입스크립트를 배우기 전, 자바스크립트가 동적 타입 언어이기 때문에 생길 수 있는 문제점을 배웠습니다. 제게는 생소한 개념인 동적 타입 언어와 정적 타입 언어에 대해 정리해보고자 합니다. 동적 타입 언어와 정적 타입 언어 변수와 데이터 타입의 처리 방식에 따라 구분됩니다. 1. 동적 타입 언어 ( 인터프리터 언어 ) 변수의 타입이 실행 시간(runtime)에 결정됩니다. 변수를 선언할 때 타입을 명시하지 않고, 변수에 값을 할당 할 때 그 값의 타입에 따라 자동으로 변수의 타입이 결정됩니다.  특징 1. 유연성 : 변수의 타입이 고정되지 않고 필요에 따라 변경됩니다. 2. 간결한 코드 : 변수 선언 시 타입을 명시할 필요가 없어져서 코드가 간결해집니다. 3. 런타임 타입 체크 : 변수의 타입이 실..

Web 2024.06.26