항해14기 본과정/항해14기 개발일지 55

[항해 14기] 개발일지35 (클론 프로젝트 - 발제, 디자인 패턴 - 플라이트)

클론 프로젝트 주차 1. 주제 선정 1) 당근마켓 클론 - CRUD, 검색, 채팅 클론 예정 2) 기능 구상 - 메인/회원가입/회원탈퇴/로그인/로그아웃/마이페이지/게시글/댓글/채팅/찜하기/검색 3) 챌린지 기능 - socket.io를 이용한 채팅 2. 와이어프레임, ERD, 명세서 1) 와이어프레임 https://www.figma.com/file/1QTJ8bvHiTCD91AbPkudoo/Untitled?type=design&node-id=20-149&t=eWixshrQsBskos6X-0 Figma Created with Figma www.figma.com 2) ERD 3) API명세서 양식 - 노션 외부 링크 이슈로 주소 생략 3. 담당 기능 - 좋아요/댓글CRUD/채팅 4. 플라이트 패턴 1) 플라이트..

[항해 14기] 개발일지34 (미니프로젝트 - 회고, 발표)

미니프로젝트 주차 1. 발표 관련 1) ui구현 페이지 - 메인 페이지, 플레이 페이지, 상세결과 페이지, 로그인 페이지, 회원가입 페이지, 마이 페이지, 컨텐츠 등록 페이지 2) BE완료한 기능 - 나의 기능 : 회원가입, 로그인, 로그아웃, refresh token, 비밀번호 해시화 - mypage : 내가 한 월드컵 결과 조회, 내가 만든 월드컵 조회, 월드컵 결과 db저장, - 월드컵 : 월드컵 CRUD, 좋아요 - 댓글 : 댓글CRUD - EC2 배포, CORS 3) BE도전한 기능 - 나의 기능 : 이메일 인증 - 승률/통계, Test code(통합 단위, 기능 단위), swagger, jest html reporter, sentry 2. 트러블 슈팅 1) 트랜잭션 적용 계층 논의 : 서비스 ..

[항해 14기] 개발일지33 (미니 프로젝트 - Sentry, 디자인 패턴 - 어댑터)

미니프로젝트 주차 + 디자인 패턴 스터디 1. Sentry 1) Sentry - 코드의 오류를 식별하고 분류하는데 도움이 되는 외부 모니터링 및 에러 로깅 서비스를 제공 - 코드 상에서 errorHandler를 통해 특정 error code(404, 500) 들을 에러로 식별 가능 - Sentry website에서 에러 로그 정보를 조회할 수 있고, DSN주소로 나의 코드와 웹사이트를 연동 2) DSN - DSN은 "Data Source Name"의 약어, 데이터 소스에 대한 연결 정보를 식별하기 위해 사용되는 문자열 - 주로 데이터베이스나 다른 외부 리소스에 연결하기 위해 사용 - DSN은 다양한 데이터 소스 및 프레임워크에서 사용. ex) PHP의 PDO(PHP Data Objects)에서는 데이터베..

[항해 14기] 개발일지32 (미니 프로젝트 - NodeMailer, Bcrypt)

미니프로젝트 주차 1. 진행사항 1) 이메일 인증 2) bcrypt 2. 새로 시도한 것 1) 이메일 인증(nodemailer) - npm 라이브러리이며, Node.js 환경에서 이메일 전송을 간편하게 처리하기 위한 모듈 - SMTP(Simple Mail Transfer Protocol)방식 - nodemailer는 다양한 이메일 사이트와 호환되며 이메일 템플릿, 첨부 파일등의 옵션 보유 - npm install nodemailer, const nodemailer = require('nodemailer') - 예시 코드 const transporter = nodemailer.createTransport({ service: "gmail", port: 587, secure: false, auth: { use..

[항해 14기] 개발일지31 (미니 프로젝트 - 리팩토링, 배포, FE연결)

미니프로젝트 주차 1. 진행사항 1) 리프레쉬토큰 리팩토링 2) 배포 및 FE와 연결(CORS) 2. 새로 시도한 것 1) FE와 연결 2) 배포환경에 .env 업로드 - vim .env //파일이 없으면 생성, 있으면 수정 또는 추가 - vim에서는 입력모드와 명령모드 두가지로 나눠짐 - esc버튼을 누르면 입력모드/명령모드 전환 - 명령모드 : i ##입력모드로 전환 :q ## 종료한다 :q! ##저장하지 않고 강제로 종료 :wq ##저장하고 종료한다. 이후 ls -a ## (숨김 파일도 볼 수 있는 명령어)로 .env파일 확인 3. 고찰 1) 리프레쉬토큰 - 처음 적용 하였던 부분이라 로직에 대한 이해가 완벽하지 않았던 상태여서 완벽한 이해를 진행한 후, 작성한코드들에 대한 리팩토링 진행 - 리프레..

[항해 14기] 개발일지30 (미니 프로젝트 - Auth/User기능 구현)

미니 프로젝트 주차 1. 진행사항 - 로그인, 로그아웃, 회원가입 진행 2. 새로 시도 한 것 - 기존 jwt 로그인 방식에서 access/refresh token 도입 - 로그아웃 구현 3. 고찰 1) 로그아웃 - 로그인 로직의 반대로 구성해주면 될 것으로 생각 - 로그인 로직 : 쿠키에 access/refresh token을 담아줬고, 이후 인증요청 시도 시 인증 미들웨어에서 토큰을 검증 한 뒤 이상 없으면 res.local에 로그인한 user의 정보를 담아줌, 이후 각 비즈니스로직에서 res.local 정보를 이용하여 로직 수행 - 로그아웃 로직 : 쿠키값들을 제거해주고, res.local 값을 삭제해줌 2) access/refresh token - 기존 인증 로직은 jwt token으로 만들어진 ..

[항해 14기] 개발일지29 (미니 프로젝트 - 발제)

미니 프로젝트 주차 1. 팀플 개요 1) FE기능 구상 - 메인페이지, 플레이페이지, 상세결과페이지, 스타일링(css,컴포넌트), css통합 - 로그인 페이지, 회원가입 페이지, 마이페이지, 컨텐츠 등록 페이지, header제작 2) BE기능 구상 - 회원가입, 로그인, 로그아웃, refresh token - 마이페이지 로그인유저 생성 컨텐츠 조회, 로그인유저 이용 컨텐츠 기록 조회, 기능 단위 테스트 - 컨텐츠 생성, 조회, 상세조회, 수정, 삭제, data validation - joi, 댓글CRUD, 컨텐츠 좋아요 기능 - 스웨거, CORS, 배포 3) BE 챌린지 - 이메일 인증, 컨텐츠 이용 통계, 테스트코드 2. 와이어프레임, ERD, 명세서 1) 와이어프레임 https://www.figma...

[항해 14기] 개발일지28 (Transaction, Returning)

Node.js 심화 1.Transaction 1) 개요 - 작업의 완전성을 보장해주기 위해 사용되는 개념. 데이터베이스에서 특정한 작업을 전부 처리하거나, 전부 실패하게 만들어 데이터의 일관성을 보장해주는 기능 - 트랜잭션(Transaction)을 사용하는 대표적인 이유는 작업의 단위를 하나의 쿼리에 종속하는 것이 아닌, 여러개의 작업(쿼리)을 묶어 하나의 작업 단위로 그룹화하여 처리 2) 특징(ACID) - A : 원자성(Atomicity) 트랜잭션 내에서 실행되는 명령들을 하나의 묶음으로 처리하여, 내부에서 실행된 명령들이 전부 성공 또는 전부 실패 해야한다는 특징 - C : 일관성(Consistency) 트랜잭션 내부에서 처리되는 데이터의 일관성을 유지해야하는 특징. ROLLBACK을 통하여 작업이..

[항해 14기] 개발일지27 (Swagger, Access/Refresh Token)

Swagger, Access/Refresh Token 1. Swagger 1) 정의 - RESTful API를 문서화하고 시각화하는 도구(api명세) - API를 개발, 테스트, 공유를 용이하게 하여 협업 생산성 증가 - API를 문서화하기 위한 명세 언어인 OpenAPI Specification을 사용, 자동으로 API 문서를 생성하고, 명세서ui제공 2) swagger-autogen - swagger의 기본 틀을 자동생성하는 node.js 라이브러리 3) 사용법 - npm i swagger-ui-express swagger-autogen - app.js에 const swaggerUi = require("swagger-ui-express"); const swaggerFile = require("./sw..

[항해 14기] 개발일지26 (5lv 리팩토링)

5레벨 리팩토링 1. Comment Controller - 예외처리 추가 2. 명세서 추가 반영, 코드 최적화 - api명세서에 적힌것과 다른 부분이 있어 수정(res 형식, 오류코드 등) - 에러를 보기위해 기입한 콘솔로그, 계층 분해하다 의미 없이 남겨진 코드들 제거 - 토큰을 서비스와 컨트롤러에서 2중으로 발급하고 있어서 서비스 로직으로 통합 3. 새로 발생한 오류 예외처리 - 계층 분해를 한 뒤 각 계층에서 데이터가 오갈 때 undefined로 매개변수가 들어오면 리턴을 해주지 못하여 에러가 나면서 서버가 종료됨 - 해당 부분들에 if문으로 예외처리 4. 예정사항 - 해당 과제물을 교보재로 삼아 추가적으로 공부할 내용들을 적용시켜가며 지속적인 리팩토링 예정