스파르타코딩클럽
-
도커 컴포즈와 CI/CD 구현 계획스파르타코딩클럽/최종프로젝트 - DevQuiz 2024. 1. 17. 14:52
백엔드 관련 남은 일 Coin API 와 Quiz API 연동 연동하게 된다면 Quiz에서 Quiz 관련 status를 파라미터나 requestDto에 받아야하므로 현재 구현한 서플라이어를 쓰지 못하게 될 것으로 예상 해당 로직 재구현 필요 코드 리팩토링 (일정 미정) 인프라 담당 CI/CD (젠킨스) 도커 (+ 도커컴포즈 -> 쿠버네티스(미정)) 레디스 클러스터(미정. 하지않는다면 AWS 엘라스틱 캐시 사용) 진행순서 도커 컴포즈 구현 이후 젠킨스를 통한 CI/CD 구현 마감시한 도커컴포즈 + CI/CD 22일(예상) 배포가 최우선순위
-
코인 획득 로직 구현에 대한 고민스파르타코딩클럽/최종프로젝트 - DevQuiz 2024. 1. 10. 23:23
Dev Quiz에서 문제를 풀었을때 얻는 리워드들을 구현하는 역할을 맡게 되어 로직에 대한 고민이 많았다. 그동안은 간단한 CRUD에서 파생된 기능들만을 구현했으나 이번엔 전혀 다른 느낌이라 생각보다 첫 시도가 어려웠다. Quiz를 풀면 랭킹에 적용되는 score와 재화를 구매(미구현)할 수 있는 coin을 지급받게 된다. 문제를 풀 때마다 둘 다 같은 양을 지급받게 되도록 설계하였다. 그래서 enum으로 관리하기로 하였으며 FIRST : 매일 첫문제를 풀면 20 CORRECT : 그 후 문제를 풀어 정답일 경우 10 FAIL : 문제를 풀어 틀렸을 경우 5 PASS : 문제에 정답을 체크하지 않고 그냥 넘겼을 경우 0 으로 계산하였다. 구현방식은 처음엔 2가지(Switch, Map) 만 고려하였으나, ..
-
24/01/03 잼렐로 KPT스파르타코딩클럽/스프링 팀 프로젝트 - Trello 2024. 1. 3. 20:20
오늘 일을 내일로? 잼렐로와 함께라면 바로바로! 😎 GitHub JamminTeam JamminTeam has one repository available. Follow their code on GitHub. github.com 😎 UI/UX 😎 ERD 😎 KEEP 설계 코드 컨벤션 통일을 함으로써 코드 통일성을 확보하여 가독성을 높혀서 좋았습니다. 컨벤션 덕분에 통합하기에 어려움이 적었습니다. 상황 간 메서드명을 규칙을 정함으로 써, 메서드를 활용해야 할 때 예상이 가능해서 좋았습니다. 코드 리뷰 깃허브의 적극적인 PR의 코드 리뷰 활용으로 부족한 점을 파악함으로써 실력 향상이 될 수 있었습니다. 상호 피드백을 통해 미처 발견하지 못한 부분을 확인 할 수 있어 좋았습니다. 회의 정해진 시간에 회의 및..
-
@EntityGraph스파르타코딩클럽/스프링 팀 프로젝트 - Trello 2023. 12. 29. 16:31
어떻게 EntityGraph를 알게 되었나 지금 프로젝트에서 보드 Read을 구현하기 위해서는 보드를 가져올때 컬럼 (이하 카테고리) 과 컬럼 안에 들어있는 카드의 제목, 이미지, 배경색, 댓글 수, 협업자 에 대한 정보를 가져와야했다. 하지만 게시판과 카탈로그는 연관관계가 설정되어 있지만, 게시판과 카드는 연관관계가 설정되어 있지 않기에 카탈로그를 통해 카드의 정보를 가져와야했다. 처음에는 단순히 Card 정보를 받아오는 ResponseDto를 생성하여 그 안에 값을 다 집어넣으려고 하였다. 그러나 생각을 할 수록 연관관계를 맺지 않은 엔티티에서 정보를 잘 가져오는 것이 쉽지 않아보여서 어떻게 이것을 해결할지 튜터님을 통해 정보를 얻어내었고 그것이 @EntityGraph 이다. @EntityGraph ..
-
CascadeType.ALL 과 REMOVE의 차이스파르타코딩클럽/스프링 팀 프로젝트 - Trello 2023. 12. 27. 15:15
보드를 구현하면서 보드를 삭제할 때 아래에 종속된 카테고리와 댓글을 같이 정리해야하므로 엔티티 애너테이션에 cascade를 붙여두었다. 하지만 CascadeType을 정할때 REMOVE를 사용할지 ALL을 사용할지 판단이 쉽지 않았다. 먼저 Cascade 란? JPA에서 엔티티의 상태변화를 관련 엔티티에 전파하는 옵션이다. SQL에서는 외래키 제약조건으로 쓰이는데, 참조 무결성을 유지하기 위해 부모 테이블에 변경사항이 생길때 자식 테이블에 자동으로 동일한 작업을 수행하도록 할 때 사용된다. 스프링에서 CascadeType 종류엔 뭐가 있나 CascadeType.ALL // 모든 cascade 옵션을 적용 CascadeType.PERSIST // 부모엔티티 저장 시 연관된 자식 엔티티도 함께 저장 Casc..
-
심화프로젝트 프로젝트협업툴 만들기 1일스파르타코딩클럽/스프링 팀 프로젝트 - Trello 2023. 12. 26. 21:46
Board를 맡게 되었다. 보드 생성 -> 간단한 Create 보드 수정 보드 이름 배경 색상 -> Trello에서는 배경색 뿐만 아니라 이미지도 지정할 수 있어서 S3 업로드를 통한 이미지업로드를 추가할 예정 설명 -> Trello에서는 설명부분이 없었기에 삭제 보드 삭제 생성한 사용자만 삭제를 할 수 있습니다. -> 간단한 Delete 보드 초대 특정 사용자들을 해당 보드에 초대시켜 협업을 할 수 있어야 합니다. -> 회원가입 시 받아오는 email을 입력하여 Repository에 있는 사용자인 경우 초대 성공 인데 초대방식을 메일전송으로 할지 단순입력으로 할지 고민했으나, 다른 기술을 적용해보는것이 우선순위가 높다고 판단해서 보류. 26일 당일에 필수구현을 모두 끝내두고, 27일에는 S3 이미지 업..
-
다했으면 리팩토링 이어서 해야지?스파르타코딩클럽/스프링 개인 프로젝트 - 복습 2023. 12. 22. 17:32
이번 금토일 3일 연휴동안 복습프로젝트를 끝내고 이어서 할 리팩토링 프로젝트이다. 개인적으로 필요하다 생각하지 않는 것들은 제외하였고, 복습 프로젝트를 진행하면서 구현한 것들 또한 미리 제외하여두었다. 1. Controller, Service 패키지 내 클래스 개선 Controller Advice 로 예외 공통화 처리하기 완료 2. Service 인터페이스와 구현체 분리하여 추상화 하기 Service 클래스를 인터페스와 구현체로 분리하고 인터페이스 메서드에 주석을 친절하게 달아주세요! 할 생각 없음. (대신 관련 자료를 찾아볼 것) 3. CustomException 정의 RuntimeException 을 상속 받아서 CustomException 을 상황에 맞게 만들어보세요. ErrorCode와 ApiEx..