전체 글 225

Day 129 - 취하여(취업을 위하여) 프로젝트 12%, 기록 조금 고민 조금 검토 조금 하니 하루가 다 갔다

1. 프로젝트 진행 상황 및 계획 🥇 사용자 채용 키워드 알림 삭제 (D) 구현하기 (완료)🥈 사용자 채용 키워드 알림 조회 (R) 구현하기 (진행 중, 2025.02.13 완료 목표)🥉 모든 키워드 조회 (R) 구현하기 (진행 중, 2025.02.13 완료 목표)4️⃣ 알림 기능 구현 방법 및 각 방법의 장단점 공부하기 (진행 중, 2025.02.17 완료 목표) 5️⃣ API 명세서 수정 및 검토하기 (진행 전, 2025.02.16 완료 목표)6️⃣ 리드미(README) 틀 완성하기 (진행 전, 2025.02.16 완료 목표) 7️⃣ MVP(최소 기능 제품) 버전 테스트 코드 작성하기 (진행 전, 2025.02.16 완료 목표) 2. 기록 조금 고민 조금 검토 조금 하니 하루가 다 갔다. [깃허..

1주 차: SQL Error 1062: Duplicate entry '1-3' for key 'user_keyword

[문제]채용 공고에 있는 기술 스택(Tech Stack)을 키워드(Keyword)로 몇 개 넣은 다음, 사용자가 알림 받고자 하는 채용 키워드를 등록하는 API를 구현해서 Postman을 실행했더니 오류가 발생했다. 'Duplicate entry '1-3' for key 'user_keyword'// (a) 'user_keyword'라는 고유 키에 '1-3' 값이 중복되어 삽입됨// (b) 1: user_id 값 // (c) 3: keyword_id 값 [원인 및 해결 과정]더보기package com.project.cheerha.domain.keyword.entity;import com.project.cheerha.domain.user.entity.User;import jakarta.persistence..

Day 128 - 취하여(취업을 위하여) 프로젝트 8%, 어쩐지 해보고 싶더라니 핵심 기능을 골라버렸네

1. 프로젝트 진행 상황 및 계획 🥇 사용자 채용 키워드 알림 등록 (C) 구현하기 (완료)🥈 사용자 채용 키워드 알림 삭제 (D) 구현하기 (진행 중, 2025.02.13 완료 목표)🥉 사용자 채용 키워드 알림 조회 (R) 구현하기 (진행 중, 2025.02.13 완료 목표)4️⃣ 모든 키워드 조회 (R) 구현하기 (진행 중, 2025.02.13 완료 목표)5️⃣ 팀 숙제하기: 로그(log) 기록을 어디에서 남겨야 할까? (완료)6️⃣ 팀 숙제하기: 사용자 정의가 되어야 하는 예외는 무엇일까? (완료)7️⃣ S.A.(System Architecture) 작성하기 (완료) 2. S.A.(System Architecture)(1) MVP(Minimum Viable Product, 최소 기능 제품)에 ..

Day 127 - 취하여(취업을 위하여) 프로젝트 4%, 주말 포함 세 번 엎은 끝에 마음에 드는 주제를 찾다

1. 프로젝트 진행 상황 및 계획 🥇 사용자 채용 키워드 알림 등록 (C) 구현하기 (진행 전, 2025.02.11 완료 목표)🥈 사용자 채용 키워드 알림 삭제 (D) 구현하기 (진행 전, 2025.02.11 완료 목표)🥉 사용자 채용 키워드 알림 조회 (R) 구현하기 (진행 전, 2025.02.11 완료 목표)4️⃣ 모든 키워드 조회 (R) 구현하기 (진행 전, 2025.02.11 완료 목표)5️⃣ 팀 숙제하기: 로그(log) 기록을 어디에서 남겨야 할까? (진행 중, 2025.02.11 완료 목표)6️⃣ 팀 숙제하기: 사용자 정의가 되어야 하는 예외는 무엇일까? (진행 중, 2025.02.11 완료 목표)7️⃣ S.A.(System Architecture) 작성하기 (진행 중, 2025.02.1..

KPT 회고 - 게임 아이템 거래소 프로젝트

1. KEEP(1) 🥇 소통- 서로 코드를 확인하며 로직 면에서 아쉬운 부분을 피드백하면 피드백 받은 사람이 적극 수용하고, 의견이 다를 때에는 같이 얘기하면서 조율한 점- 아이스 브레이킹, 팀원끼리 어색한 시간이 매우 짧아서 바로 활발할 의사소통을 하면서 프로젝트에 돌입할 수 있던 점- 발표자한테 모든 걸 맡기지 않고 다같이 리허설을 하면서 피드백도 하고 같이 발표 자료도 검토한 점- 의사소통이 잘 되어서 프로젝트 완성도에 오롯이 집중할 수 있던 점- 팀원이 힘들 때마다 서로 서로 격려와 응원의 말을 자주 해준 점(2) 🥈 기록- 5분 기록 보드 등등을 활용하여 고민과 규칙과 계획을 꼼꼼하게 기록한 점- 기술을 하나 사용할 때나 기술적 의사결정을 할 때마다 꼭 근거를 덧붙인 점(3) 🥉 협업- j..

Day 124 - 게임 아이템 거래소 프로젝트 100%, 발표회가 끝나고 봇물 터지듯 서럽게 울다 (수정 중)

1. 프로젝트 진행 상황 및 계획🥇 레디스(Redis) 공부하기 (진행 전, 25.03.17 완료 목표)🥈 도커(Docker) 공부하기 (진행 전, 25.03.17 완료 목표)🥉 동시성 제어 관련 공부하기 (진행 중, 25.03.17 완료 목표) 2. 발표회가 끝나고 봇물 터지듯 서럽게 울었다. [깃허브 링크] 진짜 진짜 고생했다..! 주말에는 트러블 슈팅으로 올리려고 한 내용을 정리하면서 최종 프로젝트를 준비할 예정이다.

Day 123 - 게임 아이템 거래소 프로젝트 90%, 테스트 코드를 원 없이 작성한 날

1. 프로젝트 진행 상황 및 계획🥇 분산 락 구현하기 (완료 - 팀원이 진행)🥈 분산 락 구현 이후 테스트 코드 실행하기 (완료 - 팀원이 진행)🥉 동시성 제어 관련 공부하기 (진행 중, 25.03.17 완료 목표) 2. 고민Q1. 분산 락을 거래소와 경매장 둘 다 적용해야 할까? A1. 이 문제를 해결하려면, 거래소와 경매장의 차이를 고려해야 했다. 경매는 아이템 가격이 어디까지 오를지 예측할 수 없어서 진입 장벽이 꽤 높았다. 아이템이 경매장에 올라올 정도면 매우 희귀하단 뜻일 테고, 그만큼 보유한 골드가 부족한 사용자는 애초에 입찰할 생각을 하기가 어려웠다.  반대로 거래는 가격에만 만족하면 누구든지 시도할 수 있으므로, 경매장보다 거래소에 훨씬 많은 사용자가 몰릴 수 있었다. 이렇게 예측되는..

Day 122 - 게임 아이템 거래소 프로젝트 70%, 삽질로 하루를 허비해 버렸다

1. 프로젝트 진행 상황 및 계획🥇 비관적 락 사용하기 (완료) 🥈 낙관적 락 사용하기 (완료)🥉 분산 락 구현하기 (진행 중, 25.02.06 완료 목표)4️⃣ 분산 락 구현 이후 테스트 코드 실행하기 (진행 전, 25.02.06 완료 목표)5️⃣ 동시성 제어 관련 공부하기 (진행 중, 25.02.06 완료 목표)  2. 삽질로 하루를 허비했다.(1) 스레드 20개, 입찰 요청 1,000건일 때 ▼ (2) 스레드 20개, 입찰 요청 500건일 때 ▼(3) 스레드 20개, 입찰 요청 249건일 때 ▼ 비관적 락(pessimistic lock)이나 낙관적 락(optimistic lock)을 적용했을 때 동시성이 잘 제어되는지를 보려고 테스트 코드를 작성하고 여러 번 실행했는데, 너무 '성능 개선'에 ..