본문 바로가기

Development

(135)
Typeorm Transaction 실전 프로젝트 'MovieWiki' 2주차가 진행중이다. 유저가 본인이 좋아하는 영화에 좋아요를 누르면 해당 영화의 like 숫자를 1 증가시키고 반대로 좋아요를 취소하면 like 숫자를 1 감소시키는 기능을 구현하고 있다. 정리하면 유저가 특정 영화에 좋아요를 누르면 2개의 기능이 동작을 해야한다. 1. 해당 유저의 userId와 영화의 movieId를 참조하여 Like 테이블에 데이터를 생성 또는 삭제 2. 해당 영화의 movieId를 참조하여 movie 테이블의 likes 컬럼이 1 증가 또는 1 감소 1번과 2번 중에 어느 한쪽만 실패하거나 성공을 하면 안되니까 transation을 사용해야한다. 이전에 클론코딩을 할 때 node.js에서 transation을 적용해본적은 있지만 nestJS에서는..
WIL_최종프로젝트 돌입 첫주 최종프로젝트 1주차가 지났다. 이번주는 멘토님의 피드백에 맟춰 기획을 수정 보완하고 nestJS를 학습하는데 대부분의 시간을 보냈다. 기획 측면에서는 챌린지 팀의 특성에 맞게 잘 진행되었다고 생각한다. 팀원들과 계속해서 소통을 한 것이 피로도는 높았지만 긍정적으로 작용했다. 소통의 중요성을 다시 한번 실감했다. 짧은 시간이지만 nestJS를 학습하고 느낀 점은 JavaScript의 장점이자 단점인 높은 자유도를 상당부분 엄격하게 제한해놓았다는 것이다. typescript를 사용하기 때문에 데이터의 타입을 정의해줘야하는데 아직 적응이 힘들다. 반면에 cli를 이용하여 굉장히 편리하게 파일을 생성할 수 있었다. 명령어를 이용해 파일을 생성할 때 목적을 체크하는데 체크한 목적에 따라 기본적인 코드가 쓰여진 상..
NestJS_Configuration 설정(Configuration)이란? 소스 코드 안에서 어떤 코드들은 개발 환경이나 운영 환경에 따라 다르게 코드를 넣어줘야할 때가 있으며 노출되지 않아야하는 코드들도 있다. 그래서 설정 파일을 따로 만들어서 보관해야한다. 설정파일은 runtime 도중에 바뀌는 것이 아닌 애플리케이션이 시작할 때 로드가 되어서 그 값들을 정의해 준다. 그리고 XML, JSON, YAML, Environment Variables 같이 많은 형식을 이용할 수 있다. Configuration을 위해 필요한 모듈 윈도우 기준 npm install -g win-node-env npm install config --save config 모듈을 이용한 설정 파일 생성 루트 디렉토리에 config 폴더를 생성 config 폴더 안에 ..
Nest.js (feat.Pipe) Nest.js의 Pipe란? 클라이언트의 요청 데이터를 변환하거나 유효성을 검사하는데 사용되는 중간 처리기이다. Pipe는 메서드 실행 전에 데이터를 사전 처리하고, 유효성 검사 및 변환 작업을 수행하여 요청의 유효성을 보장하고 일관된 데이터 형식으로 변환할 수 있다. Pipe의 주요 목적 데이터 변환 들어오는 요청 데이터를 원하는 형식으로 변환한다. 예를들어 문자열을 숫자로 변환하거나, 문자열의 공백을 제거하는 등의 작업을 수행할 수 있다. 데이터 유효성 검사 들어오는 요청 데이터의 유효성을 검사한다. 예를 들어 데이터의 길이, 형식, 범위, 필수 여부 등을 확인하여 올바른 데이터인지 확인할 수 있다. 예외 처리 유효성 검사를 통과하지 못한 경우 Pipe는 예외를 throw하여 해당 요청을 처리하는 핸..
Nest.js(feat.DTO) 지난 토요일에 작성해서 제출한 SA의 피드백을 확인하고 기획을 보완 및 수정하였다. 그리고 팀원 공통의 첫번쨰 챌린지 과제인 Nest.js 공부에 돌입하였다. youtube nest.js 무료 강의 Nest.js란? TypeScript로 작성된 서버 사이드 애플리케이션을 구축하기 위한 프레임워크이다. Express.js를 기반으로하여 모듈 기반 아키텍처와 강력한 의존성 주입 컨테이너를 제공하여 확장 가능하고 유지 보수가 용이한 개발을 할 수 있게 해준다. Nest.js는 간결하고 직관적인 문법을 가지며, 데코레이터를 사용하여 클래스와 메서드에 기능을 추가할 수 있다. 또한 다양한 기술과 통합할 수 있는 생태계를 가지고 있다. DB는 TypeORM, Sequelize, Mongoose 등과 같은 ORM이나..
WIL_클론코딩 프로젝트 회고 https://redjun89.tistory.com/104 클론 코딩 프로젝트 회고 오늘 클론 코딩 프로젝트를 발표하고 종료되었다. 토이 프로젝트를 한 차례 진행한 경험이 있어서인지 전체적인 진행에 지난번과 같은 아쉬움은 없었다. 프로젝트 발표에서 기술 매니저님의 피 redjun89.tistory.com 이번주 회고 지난주 목표는 socket.io를 공부하고 적용해보는 것이었는데 내가 담당한 기능을 디버깅하느라 다른 팀원이 맡아서 진행하였다. 다음주 목표 최종 프로젝트에 돌입하였는데 최우선 목표는 nest.js 적용이다. 돌아오는 주엔 nest.js에 대해서 학습하고 추가로 이번 프로젝트에서 도전해보기로 한 기술 중에 하나를 골라서 공부해볼 예정이다.
기획 단계의 소통과 의사 결정에 대하여 어제에 이어 프로젝트 기획이 한참 진행중이다. 완성도 높은 프로젝트를 위해 기획에 주어진 시간이 많아 팀원들과 소통해서 결정해야할 것도 많아졌다. 항해를 시작하고 이렇게 하루종일 팀원들과 화면을 켜놓고 대화한 일도 없었던 것 같다. 어제 기획 분야 멘토님의 특강이 있었는데 그때 정리해둔 내용을 간단하게 정리해보고자 한다. 기획 단계의 의사 결정 팁 다수결로 의사 결정하지말 것 소수의 의견이라도 논리적인 근거를 바탕으로 합리적인 의사결정을 해라 프로젝트의 방향성이 자신의 생각과 다르다면? 논리적이고 설득력 있는 근거를 바탕으로 자신의 의견을 분명히 전달하라 우리는 종종 의사 결정이 어려운 상황에서 다수결을 이용하기도 하는데 분명한 근거가 없는 선택지가 후보로 올라가 있는 경우도 있었던 것 같다. 논의할 시..
최종 프로젝트 시작 드디어 항해99의 최종 프로젝트가 시작되었다. 나는 챌린지 팀을 선택해서 앞으로 6주 동안 한 팀으로 도전적인 기술들의 구현을 하게 될 것이다. 주특기 주차에 매니저들이 챌린지는 한 두가지 기술을 깊게 digging해보고자 하는 사람들이 선택하는 것이며, 그러기위해서는 남들보다 코딩 실력이 더 뛰어나야한다고 했다. 그래서 많이 망설였지만 나중에 취업시장에서 나의 단점을 상쇄 시키고 최소한 20대 젊은 개발자들과 같은 선에서 경쟁하려면 나만의 무기가 있어야한다고 결론을 내렸고 과감히 챌린지 팀에 지원하게 되었다. 최종 프로젝트는 6주의 기간이 주어지기 때문에 기획 단계부터 이전의 프로젝트에 비해 많은 시간이 주어졌다. 오늘부터 약 1주간은 프로젝트의 근간이 되는 ideation을 진행하며 userflow,..