본문 바로가기

전체 글76

칸반보드 프로젝트 LexoRank 트러블 슈팅 Trello 사이트같은 칸반보드를 구현해내는 팀프로젝트를 진행중이다. 이번 프로젝트의 가장 중요한 부분은 리스트와 카드의 이동(드래그 앤 드롭)이다. '잦은 이동이 있는 해당 로직을 어떻게 구현해 낼 것인가?' 팀원들과 이야기 나누고 찾아본 결과 우리팀은 LexoRank를 이용하기로했다.LexoRank 선정 이유LexoRank를 선택한 이유는 아래 글을 참고했다.https://techblog.lycorp.co.jp/ko/about-atlassian-jira-ranking-algorithm-lexorank Jira의 이슈 정렬 방식이 Integer 방식이 아니라고?!들어가며 안녕하세요. LINE+ Contents Service Engineering 조직에서 백엔드 개발을 하고 있는 김한솔, 문다정, 이현동.. 2024. 7. 11.
NestJS 서버 포트 충돌 문제 해결(기존 포트 프로세스 죽이기) 이번 과제때 서버를 연결하는데, 포트 충돌이 일어났다. 이유는 내가 이미 3000번 포트를 사용중이기 때문에 연결을 할 수 없다는 것이다.오류 메시지[Nest] 194557 - 07/08/2024, 2:05:15 AM ERROR [NestApplication] Error: listen EADDRINUSE: address already in use :::3000 +2msError: listen EADDRINUSE: address already in use :::3000 at Server.setupListenHandle [as _listen2] (node:net:1898:16) at listenInCluster (node:net:1946:12) at Server.listen (node:net.. 2024. 7. 10.
공연 예매하기 (nest.js transactionalEntityManager) 공연 예매하기 기능 구현을 위해 nest.js에서의 첫 트랜젝션에 시도하게 되었다. express 때 트랜젝션에 대해 학습하긴 했지만, 팀플에서도 그렇고 항상 내가 맡은 부분은 트랜젝션이 필요하지 않은 부분이다보니 혼자의 힘으로는 첫 시도라고 할 수 있다.  막막하지만 처음이다 보니 한 발짝 더 나아가는 것 같아 설레는 마음도 들었다. 기본적인 예매 관련 세팅- create-reservation.dto.tsexport class CreateReservationDto { @IsInt() @IsNotEmpty({message:'공연 스케쥴 Id를 입력해주세요.'}) performanceScheduleId: number; @IsInt() @IsPositive() @IsNotEm.. 2024. 7. 9.
예매 가능여부 반환(메모리 내 계산 vs 데이터베이스 필드) 예매 상세페이지에서 현재 티켓이 예매가 가능한지 여부를 반환하는 코드를 구현해야 했다. 구현을 위해 머릿속에는 두가지 방법이 생각났다. 1. 조회 시점마다 남아있는 좌석 수를 확인해서 반환 할 것이냐 2. 데이터베이스 테이블 내에 가능 여부 필드를 따로 생성할 것인가 이다.  메모리 내 계산 vs 데이터베이스 필드 생성결정하기 전 각각의 장단점에 대해 알아보았다.1.  메모리 내에서 계산하여 추가 속성 반환장점유연성: isAvailable 필드를 필요에 따라 동적으로 계산할 수 있어, 조건이 변하더라도 쉽게 변경할 수 있다.데이터베이스 일관성: 데이터베이스 스키마에 영향을 주지 않으며, 추가 필드로 인한 데이터베이스 수정이 필요 없다.간단한 유지보수: 코드 내에서 필요한 필드를 추가하므로, 데이터베이스를.. 2024. 7. 8.
티켓예매 사이트 공연 날짜/시간 body에서 배열형식으로 받기 열심히 티켓예매 사이트 개인 과제를 진행중이다. 공연 등록에서 고려해야할 점은 하나의 공연이 여러날짜에, 그리고 같은 날짜여도 여러 시간에 나눠서 진행된다는 것이다. 그렇기에 공연을 등록할 때, 배열을 통해 한번에 여러 날짜와 시간을 입력해야한다. body를 통해 어떻게 배열을 받을 수 있지?과제 발제 문서를 통해 이 부분을 배열로 받으면 된다는 힌트를 얻었다. 그렇다면 배열은 어떠한 방식으로 받을 수 있을까?우선은 body를 통해 배열이 들어온다고 생각했을 때, 제일 먼저 만나게 되는 곳이 어디인지 생각해보았다. 바로 내가 만든 createPerformanceDto였다.  createPerformanceDto공연 스케줄에 대한 데이터 DTO를 먼저 만들어주었다.class PerformanceSchedu.. 2024. 7. 8.
카테고리별로 공연 목록을 조회 (쿼리 vs URL 경로) Typescript와 Nest.js를 이용한 첫 과제를 진행중이다. entity와 dto는 스키마와 validator느낌이라 괜찮은편이지만 module쪽은 모든 코드에 주석을 달면서했음에도 불구하고 아직도 이해가 쉽지 않다. 그래도 강의를 참고하고 이것저것 찾아가며 구현을 해나가고 있다. 그 중 오늘 구현한 공연 목록 조회. 그 중 쿼리를 이용한 전체/카테고리 별로 선택해서 보는 것을 정리해보려 한다. '전체, 카테고리 별로 나누어서 조회' 어떻게 해야할까? 위 이미지처럼 콘서트를 클릭하면, 콘서트 카테고리에 속한 공연 목록들이 반환돼야하는 것이다.  인터파크 티켓의 경우에는 URL경로를 통해 목록을 조회했다.나는 보통 이런 정렬 기능을 사용할 때, 쿼리파라미터를 사용하는 것이 적절하다고 들어왔기에 둘의.. 2024. 7. 4.
티켓 예매사이트 ERD, API 명세서 구현하기 티켓 예매사이트를 만드는 개인과제가 시작되었다. Typescript와 Nest.js를 배우고 처음으로 진행하는 과제라 잘 할 수 있을지 고민되지만, 하나씩 차근차근 진행해보려한다. 우선 ERD와 API 명세서를 구현하였다. 어느정도 이 두가지에 대한 이해가 생긴 후로는 처음으로 혼자서 만드는 것이었기에 고민된느 부분이 많았다. ERDhttps://drawsql.app/teams/strong-2/diagrams/ticket 고민되었던 부분은 필수구현 기능으로 있는 것들 안에서도 내가 어느정도까지 구현해야하는지 였다. -인증/인가/사용자 이 부분에서는 token과 points_log 테이블이 고민되었다.첫번째는 필수 구현에는 그냥 로그인 기능이라고 나와있었는데, 내가 욕심을 내서 refresh token까지.. 2024. 7. 3.
tsconfig.json 기초 이번에 JavaScript에서 TypeScript, Express에서 Nest.Js로 새롭게 공부해나가면서 tsconfig.json가 새롭게 등장했다. 쉽게 이해하기 위해 JavaScript에서 어떤것과 유사한지 찾아보니 프로젝트의 설정 파일이다보니 package.json과 가장 유사하다고한다. 앞으로 쭉 사용할 파일이기에 오늘 빠르게 익히고가려 한다.   tsconfig.json란?tsconfig.json 파일은 tsc --init 명령을 실행하면 생성되는 파일이자 TypeScript 프로젝트의 설정 파일로, TypeScript 컴파일러에게 프로젝트의 컴파일 옵션을 제공한다. 이 파일은 TypeScript 컴파일러가 프로젝트를 어떻게 컴파일할지 설정하는 데 사용된다.- 기본 구조일반적인 tsconfig.. 2024. 7. 1.