Development/TIL (56) 썸네일형 리스트형 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에서는.. 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이나.. 기획 단계의 소통과 의사 결정에 대하여 어제에 이어 프로젝트 기획이 한참 진행중이다. 완성도 높은 프로젝트를 위해 기획에 주어진 시간이 많아 팀원들과 소통해서 결정해야할 것도 많아졌다. 항해를 시작하고 이렇게 하루종일 팀원들과 화면을 켜놓고 대화한 일도 없었던 것 같다. 어제 기획 분야 멘토님의 특강이 있었는데 그때 정리해둔 내용을 간단하게 정리해보고자 한다. 기획 단계의 의사 결정 팁 다수결로 의사 결정하지말 것 소수의 의견이라도 논리적인 근거를 바탕으로 합리적인 의사결정을 해라 프로젝트의 방향성이 자신의 생각과 다르다면? 논리적이고 설득력 있는 근거를 바탕으로 자신의 의견을 분명히 전달하라 우리는 종종 의사 결정이 어려운 상황에서 다수결을 이용하기도 하는데 분명한 근거가 없는 선택지가 후보로 올라가 있는 경우도 있었던 것 같다. 논의할 시.. 최종 프로젝트 시작 드디어 항해99의 최종 프로젝트가 시작되었다. 나는 챌린지 팀을 선택해서 앞으로 6주 동안 한 팀으로 도전적인 기술들의 구현을 하게 될 것이다. 주특기 주차에 매니저들이 챌린지는 한 두가지 기술을 깊게 digging해보고자 하는 사람들이 선택하는 것이며, 그러기위해서는 남들보다 코딩 실력이 더 뛰어나야한다고 했다. 그래서 많이 망설였지만 나중에 취업시장에서 나의 단점을 상쇄 시키고 최소한 20대 젊은 개발자들과 같은 선에서 경쟁하려면 나만의 무기가 있어야한다고 결론을 내렸고 과감히 챌린지 팀에 지원하게 되었다. 최종 프로젝트는 6주의 기간이 주어지기 때문에 기획 단계부터 이전의 프로젝트에 비해 많은 시간이 주어졌다. 오늘부터 약 1주간은 프로젝트의 근간이 되는 ideation을 진행하며 userflow,.. 클론 코딩 프로젝트 회고 오늘 클론 코딩 프로젝트를 발표하고 종료되었다. 토이 프로젝트를 한 차례 진행한 경험이 있어서인지 전체적인 진행에 지난번과 같은 아쉬움은 없었다. 프로젝트 발표에서 기술 매니저님의 피드백 // 게시물 작성 createPost = async (req, res) => { try { const { user_id } = res.locals.user; const { content } = req.body; const img_urls = req.img_url; if (!content) { return res.status(412).json({ errorMessage: '게시글 내용을 입력해주세요.' }); } // content만 입력할 경우 if (img_urls === undefined) { const create.. S3와 cloud front 속도 비교 현재 서버는 1차적인 기능 구현과 서버 배포까지 완료된 상황이다. 그래서 FE에서 테스트를 하며 구현을 진행하고 있는데 이미지 업로드와 조회 속도가 느리다는 피드백이 있었다. 그래서 어떻게 개선해야하나 고민하고 있는데 마침 중간 멘토링에 기술 매니저님이 말씀해주신 Cloud Front가 생각났다. 그래서 Cloud Front에 대해 알아보고 있는데 github commit을 보니 다른 팀원이 이미 적용해 놓았다. 그래서 S3만 사용했을 때와 Cloud Front까지 적용해보았을 때 이미지 업로드 속도 차이를 확인해보았다. 테스트에 사용한 이미지 파일의 용량은 158 KB이다. S3만 사용했을 때는 아래와 같이 571ms로 약 0.5초 정도 나온다. Cloud Front를 적용했을 때는 아래와 같이 354.. 이전 1 2 3 4 5 6 7 다음