전체 글 99

도커(Docker), 메시지큐(Message Queue)

최종 프로젝트를 준비하며 팀원들과 기술 스택에 대해 이틀동안 이야기를 나누고 있다. 낯선 기술이 많아서 먼저 기술을 알아가는 시간을 가지기로 했다. 각자 배우지 않았던 기술을 한두개씩 담당해서 30분동안 공부해온 뒤 서로에게 알려주는 방식으로 진행해봤다. 나의 담당 기술은 도커와 메시지큐였고, 이때 정리한 내용을 올리려고 하는데 30분동안 정말 감만 잡은!! 감도 100% 잡은게 아니고 어떤 상황에 어떤 기술과 연계가 되는지 정도만 아주 대략적으로!! 담긴 내용이기 때문에 정보성 글보다는 그냥 개인 기록정도로 보는 것이 맞을 것 같다. 도커 컨테이너 기반의 오픈소스 가상화 플랫폼 여기서 컨테이너는 항구에서 볼수있는 그 컨테이너를 떠올리면 이해가 쉬울 것 같음 프로그램, 실행환경을 컨테이너로 추상화 동일한..

🪩/기타 2024.03.26

팀프로젝트: 칸반(Kanban) 보드_KPT 회고록

Keep 현재 만족하고 있는 부분 프로젝트 진행하다보니 완성도 있는 코드를 쓸 수 있게 되어서 좋았다 즉각적인 소통, 원활한 소통이 되어서 좋았다. 깃 사용하면서 커밋메시지 잘 날린거같고 체계적으로 깃을 사용해본거같아서 좋았습니다. 어려운 문제있을때 팀원들과 함께 해결이 가능해서 좋았다. 평소보다 복잡한 로직을 체험해볼수있어서 좋았다. Problem 불만인 부분 시간이 짧아서 불가피하게 지피티의 도움을 받았다. 좀 더 주체적으로 짤 수 있었다면 좋겠다. 사전에 계획한 기한을 엄수하지 못함. 코드 컨벤션을 설정해두지 않아 관련한 사소한 트러블이 많았음. 네스트 사용이 익숙치않아 가드나 전략 사용에 있어 어려움이 있었다. Try 해결책, 지금당장 가능한것 지피티보다 공식문서 활용하기. 더 노력한다... 더 ..

💻/프로젝트 2024.03.25

[Git] 체리픽(Cherry-Pick)

팀 프로젝트를 진행하다보니 dev 브랜치에 package.json 파일만 올리고 싶은데, 다른 코드는 아직 dev 브랜치에 올릴 수 있는 상태가 아니라 고민하게 되는 상황이 있었다. 팀원 분께서 체리픽에 대해 말씀해주셔서 찾아봤다. 체리픽은 a 브랜치에서 b 브랜치로 특정 커밋의 선택과 적용이 가능한 Git 기능 중 하나이다. (나같은 경우에는 혼자 작업 중인 feat 브랜치에서 -> dev 브랜치로) 전체 커밋이 아닌 개별 커밋을 선택할 수 있다는 특징 덕에 사용해보게 되었다. git log 먼저 git log 명령어로 올리고 싶은 커밋을 식별한다. (커밋 해시라고 하는 것 같다) git switch switch 명령어로 브랜치를 옮겨준다. (checkout도 가능하나 switch 권장) 나같은 경우에..

🪩/Git 2024.03.22

팀프로젝트: 칸반(Kanban) 보드_3

처음에 로그인 기능을 액세스 토큰만 리턴하는 로직을 작성했다가, 리프레시 토큰을 함께 받아서 쿠키에 저장하는 식으로 수정했다. 처음 해보는 기능이라 거의 24시간 넘게 매달려서 코드 작성을 겨우 끝냈고 이제 테스트를 해봐야한다…….. 너무 힘들었다…. 유저 기능도 이렇게 낑낑대면서 오랫동안 붙들고 있으면 다른 기능을 구현할 때는 어떻게 해야하는거지….. 우왕좌왕했던 모습이 주석에서 보이는 듯 하다 얼른 테스트해보고 문제 얼른 해결하고 노드메일러랑 회원정보 수정, 탈퇴를 구현해야 한다. 수정 탈퇴는 금방 하겠지 싶지만 이게 끝나면 다른 파트도 남아있기 때문에 얼른얼른 끝내야겠다 이미 완전 늦음!

💻/프로젝트 2024.03.21

팀프로젝트: 칸반(Kanban) 보드 _2

const payload = { email, sub: user.id }; // 토큰 페이로드에 "sub" 필드를 포함하는 것은 토큰이 발행된 엔터티에 대한 정보를 제공하여 권한 부여 결정을 용이하게 하는 웹 서비스의 일반적인 관행 return { access_token: this.jwtService.sign(payload, { expiresIn: '300s' }), refresh_token: this.jwtService.sign(payload, { expiresIn: '7d' }), }; 로그인하면 액세스 토큰만 나오는 코드를 짰다가 팀원 분들의 피드백을 받고 리프레시 토큰도 함께 받아서 쿠키에 담는 방식으로 수정중이다. 이제 쿠키부분 해결하고 노드메일러 부분 완성하고 회원정보 수정, 회원탈퇴도 구현해서..

💻/프로젝트 2024.03.20

팀프로젝트: 칸반(Kanban) 보드

https://www.trello.com 트렐로 서비스를 참고하여 칸반 보드 시스템을 구현하게 되었다. 내가 맡은 부분은 유저(로그인, 회원가입, 회원정보수정, 회원탈퇴) 부분과 카드 체크리스트 구현이다. 우리는 백엔드 과정이라 와이어프레임은 기능 구현에 참고가 될 정도로만 짜는 편이다. 그 뒤로는 api 명세서를 작성하고, git 셋팅을 하고, 각자 맡은 부분에 대한 entity 파일을 작성해서 관계 설정을 위해 dev 폴더에서 합치는 중이다. import { Column, CreateDateColumn, DeleteDateColumn, Entity, Index, OneToMany, PrimaryGeneratedColumn, UpdateDateColumn, } from 'typeorm'; import ..

💻/프로젝트 2024.03.18

[NestJS] 컨트롤러, 핸들러, 서비스

컨트롤러란? 들어오는 요청 처리, 클라이언트에 응답 반환 @Controller 데코레이터로 클래스를 정의 인자는 컨트롤러에 의해서 처리되는 경로로 받음 (ex: @Controller('/board') 핸들러란? @Get, @Post, @Delete 등 데코레이터로 장식된, 컨트롤러 내의 단순한 메서드 서비스란? 컨트롤러에서 데이터 유효성 검사를 하거나, DB에 아이템을 생성하는 등의 작업 처리 데이터베이스 관련 로직: DB에서 데이터 가져오기, 게시판 생성 시 DB 안에 생성한 게시판 정보 넣어주기 등 @Injectable 데코레이터로 감싸지고, 서비스 인스턴스는 모듈 전체에서 자유롭게 사용이 가능 서비스를 컨트롤러에서 사용하려면 constructor (private boardsService: Board..

🪩/기타 2024.03.14