본문 바로가기
공연 예매 서비스 구현하기 사용자가 원하는 공연을 예매할 수 있는 웹 사이트를 구현해 보셔야 합니다. 물론, 백엔드만 구현하는 것을 목표로하며 프론트엔드 구현은 선택사항으로 두겠습니다. 각 공연은 공연명, 공연시간, 장소, 가격 등의 정보를 가지고 있어야 할 것이며 사용자는 이를 통해 원하는 공연을 선택하고 예매할 수 있어야 하겠죠? 3/7 ~ 3/14 빠른 피드백 원할시 3/13 제출 TypeScript, Nest.js 등 [ ] 로그인 / 회원가입 - 사용자는 회원가입시 100만 포인트를 지급받습니다. [ ] 프로필 보기 [ ] 새 공연 등록 [ ] 공연 목록 보기 [ ] 공연 검색하기 [ ] 공연 상세보기 [ ] 좌석을 지정하지 않고 공연 예매하기 - 공연예매시 1석에 최대 5만포인트를 상한금액으로 정합니다. - 보유포인트가.. 2024. 3. 7.
TIL #27) Error: getaddrinfo EAI_FAIL 오류 Today I Learned nest를 이용해 코드를 짜고 서버를 열어 테스트 해보려는 중 Error: getaddrinfo EAI_FAIL 오류가 발생했다. 찾아보니 데이터베이스 연결하는 시도 중에 DNS 조회에서 문제가 발생했다고 한다. 내가 시도해본 방법은 1. RDS 서버 확인하고 엔드포인트 주소 새로 넣기 2. 서버 껐다켜기 3. 강의 자료 다시 보기 해결방법은 매우 간단했다.. 여태까지 과제물에 DB_HOST에 URL을 넣고있었던 것이다.. 그래서 url이 아닌 엔드포인트만을 DB_HOST에 넣어주니 정상적으로 서버 연결이 가능했다. 2024. 3. 7.
TIL #26) 레디스 알아보기 Today I Learned 레디스란 무엇?! NoSql - 그 중에서도 메모리 기반으로 빠르게 데이터를 읽어올 수 있는 Key-Value Store Remote Dictionary Server의 약자로, 원격 Dictionary 자료구조 서버라는 직관적인 이름을 가지고 있다. Key로 올 수 있는 자료형은 기본적으로 String 이지만, Value는 다양한 타입을 지원한다. 서버가 1대 있다는 가정에선 Redis의 장점이 크게 보이지 않지만 분산환경을 대입하면 장점이 보인다. 유저 요청이 늘어 서버를 증설한 상황에서, 서버가 여러대라면 원격 프로세스간의 데이터를 일치시키기 어렵다. 이때 별도의 레디스 서버를 구성하고, 해당 레디스에서 값을 꺼내 쓴다면 메모리 기반 데이터 구조의 빠른 응답성을 확보함과 .. 2024. 3. 6.
TIL #26) 타입스크립트 발 담구기 TypeScript TypeScript는 마이크로소프트에서 개발한 오픈소스 프로그래밍 언어! JavaScript의 단점을 상소해하기 위해 등장했다!! 타입스크립트가 들어오고 바뀐점들 실행시간에 결정되는 변수타입 => 이제는 컴파일 시간에 변수의 타입을 체크!! 약한 타입 체크 => VSCode에 코드를 입력하는 순간 에러 메시지 발생!! 물렁물렁한 객체 => 코드를 입력하는 순간 에러 메시지 발생!! 그리고 자바스크립트 라이브러리를 쉽게 쓸수있다는것도 타입스크립트의 장점 !!!! JavaScript에서 파생된 기본타입 string number boolean null undefined 새로 추가된 타입 tuple - 배열은 number[], string[] 처럼 같은 타입의 원소만 가질 수 있지만, 튜플은.. 2024. 3. 5.
KPT 회고록 Keep 현재 만족하고 있는 부분 이전 과제에서 경험하지 못했던 것을 경험하게 되어서 색다른 느낌이었습니다. 현업에서 실제로 활용되는 기술을 팀 프로젝트에 적용해볼 수 있어서 매우 의미있었습니다. 지난 과제에서 부족한 부분을 반성하고 보완할 수 있어서 만족스러웠습니다. 팀 프로젝트를 통해 설계부터 코드 작성, 발표, 피드백까지 과정을 경험하면서 큰 성장을 느낄 수 있었습니다. 3계층 구조를 다루는 데 익숙해질 수 있어서 기쁩니다. 내가 만들고 싶었던 것을 모두 구현해볼 수 있어서 정말 좋았습니다! 에러 처리와 3계층 구조에 대한 이해가 많이 늘었고, 통달한 느낌이 드는 것 같습니다. 😄 Problem 불만인 부분 레포지토리 계층에서 서비스 계층으로 데이터를 전달하는 과정이 어려워서 마음대로 진행되지 않았.. 2024. 2. 29.
TIL #25) git branch시 모든 branch가 뜨지 않는 문제 Today I Learned 무궁무진한 깃의 세계 매번 쓰던 기능만 쓸땐 괜찮다가 협업을 시작하면 나의 바닥이 드러나곤 한다... 원격 브랜치로 옮겨가야 하는 상황에 어떤 브랜치가 있는지 확인하기 위해 git branch를 사용했으나, 내 로컬에 있는 branch만 보여주는 오류가 있었다. 1. 브랜치가 없는 경우 : 가장 간단한 이유는 현재 저장소에 아무런 브랜치가 없을 수 있습니다. 이 경우 git branch를 실행하면 아무것도 표시되지 않습니다.저장소에 최소한 한 개의 커밋이 있어야 브랜치를 생성할 수 있습니다. 만약 아직 어떠한 커밋도 하지 않았다면 브랜치를 생성할 수 없습니다. 2. 브랜치를 생성하지 않고 실행한 경우 : git branch 명령은 브랜치를 생성하는 것이 아니라, 현재 브랜치 .. 2024. 2. 29.
JavaScript - 알고리즘 특강(쉽게 진수변환, map & set) toString, parseInt 이용해 아주 쉽게 진수변환하기 toStirng() 특정 객체를 문자열로 반환해준다. 10진수를 다른 진수로 변환하기 위해서 사용할 수 있다. * 10진수 -> 16진수 var dec = 123; var hex = dec.toString(16); // === "7b" * 10진수 -> 2진수 var dec = 123; var bin = dec.toString(2); // === "1111011" parseInt() 문자열을 특정 진수의 정수로 변환한다. 다른 진수를 10진수로 변환시키기 위해서 사용할 수 있다. * 16진수 -> 10진수 var hex = "7b"; var dec = parseInt(hex, 16); // === "123" 알고리즘 문제 풀이시 유용한 ma.. 2024. 2. 28.
TIL #24) 커스텀 에러 만들기 Today I Learned 3계층 분리를 하며 에러 처리를 단순히 한 파일 안에서 하는것이 힘들어졌다. 기본적으로 3계층이라 하면 컨트롤러 - 서비스 - 레파지토리 순으로 하게 되는데, request 와 response를 담당하는건 컨트롤러 계층이기 때문에 직접적으로 에러 코드를 띄우고 http method를 사용하고싶다면 컨트롤러 계층을 이용해야 한다. 원래는 서비스 계층에서 에러가 발생시, 예시와 같이 만들고 컨트롤러에서 만약 에러 메시지가 이렇다면 해당 에러를 띄우도록 하는 방식을 사용했다. throw ({ code: 404, message: "찾으시는 페이지가 존재하지않습니다.", )} 이것보다 편하게 에러를 만들 수 있는 방식이 바로 커스텀 에러이다. export class Validation.. 2024. 2. 27.
TIL #23) 커버리지 보고서 Today I Learned 커버리지를 이용하면 jest 테스트 코드 보기가 편하다는데,, 커버리지가 대체 뭔데 그런 도움을 준다는거죠? 라는 의문이 들어 찾아보게 되었다. Jest 커버리지 보고서란 저 사진의 모습으로 정리된!! 보기좋은 모습의 보고서를 말한다. % Stmts (문장 커버리지 비율): 코드 파일에서 테스트된 코드 문장의 비율을 나타냅니다. 예를 들어, 80%의 문장 커버리지는 코드 파일에서 100줄 중 80줄이 테스트되었음을 의미합니다. % Branch (분기 커버리지 비율): 코드 파일에서 테스트된 분기(조건 분기)의 비율을 나타냅니다. 예를 들어, 75%의 분기 커버리지는 코드 파일에서 100개의 조건 분기 중 75개가 테스트되었음을 의미합니다. % Funcs (함수 커버리지 비율).. 2024. 2. 22.
프로그래머스 JavaScript - 숫자 문자열과 영단어 문제 네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다. 다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다. 1478 → "one4seveneight" 234567 → "23four5six7" 10203 → "1zerotwozero3" 이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요. 참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다. 1 ≤ s의 길이 ≤ 50 s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다. retur.. 2024. 2. 22.
TIL #22) test code - 의존성 주입하기 Today I Learned 오늘은 과제 1차 제출일이다. 필수구현사항을 다 하지 못하고 낸게 큰 충격.. 뭔가 정말 열심히 시간을 많이 들였다면 시간내에 다 했을 수도 있을것 같은데, 이상하게 이번 과제는 너무 손 대기가 싫었다.. 그게 결국 잘 모르는거라서, 어려워서 이해하기 싫어서 그랬던 거겠지. 어려운걸 붙잡고있으니까 자신감이 떨어지는 기분이 든다.. 그래도 TIL도 결국 오늘 하루 더 알게된것에 대해 쓰는거니까! 다들 이런 기분을 공유하는것 같아 조금은 위로가 됐다. 다들 힘냅시다.. 실제로 테스트 코드를 잘 아는사람들은 많이 없어서 깊이 파게되면 취업에도 도움이 된다한다. 마음을 다잡고 가보자고 🤯 궁금한 것 & 알아낸 것 - mock fucntion 특정 메서드가 몇번 실행됐는지 아는게 뭐가.. 2024. 2. 22.
TIL #21) 기존코드 3계층 분리하기 Today I Learned 3 layered architecture 가보자고!! 1. 컨트롤러 응답과 요청을 처리. 인증미들웨어도 여기서 처리 2. 서비스 레포지토리에서 가져온 정보를 어떻게 사용자에게 보여줄지(정렬, 뭘 보여줄지 select) 조각조각 정리 3. 레포지토리 프리즈마에서 직접적으로 정보 가져옴 웨어를 통해 어떤 정보 가져올지 선택 가능 == 내가 이해한것 == 컨트롤러에서 요청받은값을 => 서비스에 보내고 서비스에서 받은값을 => 리턴으로 내보내고 서비스에서는 컨트롤러에서 받은값을 => 레포지토리로 보내고 레포지토리에서 받아온값을 가공해 => 컨트롤러에게 보내고 레포지토리는 서비스에서 받아온값을 => 프리즈마에서 가져오고 프리즈마에서 가져온 정보를 => 서비스로 보내고 ===== 레파지.. 2024. 2. 21.
TIL #20) 객체 지향 프로그램 Today I Learned 상속 상속은 객체 지향 프로그래밍에서 클래스 간의 관계를 정의하는 중요한 개념. 상속을 통해 기존 클래스의 속성과 메서드를 물려받아 새로운 클래스를 정의할수있고, 똑같은 코드를 계속 반복할 필요가 없다. 상속을 구현하려면 extends 키워드를 사용하면 가능~! class Animal { //부모클래스 name: string; constructor(name: string) { this.name = name; } makeSound() { console.log('동물 소리~'); } } class Dog extends Animal { //자식클래스 age: number; constructor(name: string) { super(name); this.age = 5; } make.. 2024. 2. 19.
TIL #19) 객체 지향 설계 5원칙(SOLID) SOLID 객체 지향 프로그래밍 및 설계의 다섯가지 핵심원칙 SOLD 원칙을 따르면 시간이 지나도 유지보수와 확장이 쉬운 시스템을 구축할 수 있다. 단일 책임의 원칙 개방 - 폐쇄 원칙 리스코프 치환 원칙 인터페이스 분리 원칙 의존성 역전 원칙 단일 책임의 원칙 Single Responsibility Principle, SRP 하나의 객체는 단 하나의 책임을 가져야 한다. 즉, 클래스나 모듈을 변경할 이유가 단 하나 뿐이어야한다는 원칙. 동작하기만 하는 소프트웨어 보다 깨끗하고 우아하게 작성된 소프트웨어!! 개방 - 폐쇄 원칙 Open - Closed Principle, OCP 소포트웨어 엔티티 또는 개체는 확장에는 열려있으나 변경에는 닫혀 있어야 한다. 기존 코드에 영향을 주지않고 소프트웨어에 새로운 .. 2024. 2. 16.
프로젝트 회고 우리동네 동아리(우동) 같은취미를 가진 사람들과 모여 동아리를 개설하고, 게시글 또는 댓글로 반응이 가능한 뉴스피드 프로젝트 회원가입시 입력한 관심사를 기반으로 모임을 추천 받을 수 있는 기능이 있으며, 유저들간 팔로우 또한 가능하다. 작업기간 2/8 ~ 2/14 발표자료 시연 영상 https://youtu.be/Q1-tJS5b10A?si=aCp0zaKAduO5fl8v api 구현, 일부지만 프론트 작업한것, 카카오 로그인, 노드메일러를 이용한 메일 인증 기능을 담은 영상이다. 피드백 기본기능을 충실하게 구현 잘 했다. 관심사 기반 추천 기능 외에 로그인 하지 않은 사용자를 위한 랜덤조회 기능까지 서비스 고민에 대한 흔적이 보여 좋았다. 아쉬웠던점은 불필요한 컬럼이 많았다는것. 이것들을 정리하면 좋겠다는.. 2024. 2. 15.