-
2차 프로젝트: GameLog - 프로필 탭 API 구현
사용자 게임 활동을 하나의 데이터로 보여주기게임 기록 서비스의 프로필 탭 API를 구현하였다.단순히 사용자의 정보를 조회하는 것이 아니라, 게임 플레이 기록과 리뷰 데이터를 조합하여 사용자의 게임 취향과 활동을 보여주는 것을 목표로 했다. 프로필 탭에서 사용자의 게임 활동을 한눈에 확인할 수 있도록 다음 정보를 제공하는 API를 구현하였다. 인생게임 5개플레이한 게임 수평균 리뷰 평점총 플레이 시간게임별 플레이 시간과 평점을 보여주는 산점도사용자의 게임 취향 요약장르별 플레이 비율최근 플레이한 게임 5개최근 작성한 리뷰 3개최종적으로 하나의 프로필 API에서 필요한 데이터를 조합하여 반환하도록 구현하였다.GET /users/me/profile1. 어떤 데이터를 보여줄지 정의프로필 화면을 구성하면서 가장 ..
2026.09.21
-
2차 프로젝트: GameLog - RailWay 배포 과정에서의 문제와 해결
1. Railway 배포 후 서버가 Online 상태에서 Crashed 되는 문제처음 Railway에 Spring Boot 애플리케이션을 배포했을 때 잠시 Online 상태가 되었지만 이후 Crashed 상태로 변경되는 문제가 발생했다.로컬에서는 Docker로 실행한 MySQL을 사용하고 있었기 때문에, 배포 환경에서도 로컬 DB 설정을 그대로 사용할 수 없었다.기존 로컬 환경에서는 다음과 같이 localhost의 MySQL을 사용하고 있었다. spring: datasource: url: jdbc:mysql://localhost:3306/gamelog 하지만 Railway에서 실행되는 애플리케이션의 localhost는 로컬 컴퓨터의 MySQL을 의미하지 않는다.따라서 Railway 프로젝트에 My..
2026.09.18
-
2차 프로젝트: GameLog - HTTP Method 설계와 테스트
1. 문제 상황게임 라이브러리에서 사용자의 게임 상태를 변경하는 API를 구현하면서 HTTP Method를 어떻게 결정할지 고민하였다.UserGame에는 다음과 같은 상태가 존재한다.플레이 상태 (PlayStatus)플레이 중 (playing)백로그 (backlog)위시리스트 (wishlist)좋아요 (liked)처음에는 상태 변경이라는 이유로 모든 API를 POST로 구현하였다.POST /games/{gameId}/play-statusPOST /games/{gameId}/playingPOST /games/{gameId}/wishlistPOST /games/{gameId}/backlogPOST /games/{gameId}/liked하지만 단순히 "상태를 변경한다"는 이유만으로 POST를 사용하는 것이 적..
2026.09.17
-
2차 프로젝트: GameLog 3일차 - 403 오류
문제 상황Postman에서 로그인 후 발급받은 accessToken을 사용해 유저 게임 라이브러리 추가 API를 호출했지만 403 Forbidden 오류가 발생했다. 다른 API는 정상적으로 동작하는 상황이었다.확인 과정SecurityConfig 확인해당 API가 인증이 필요한 API인지 확인했다..anyRequest().authenticated()로 설정되어 있어 로그인된 사용자만 접근할 수 있는 구조임을 확인했다.Controller에서 인증 사용자 확인@AuthenticationPrincipal SecurityUser user가 정상적으로 주입되는지 확인하기 위해 user를 출력했다.user가 출력되지 않아 JWT 인증 과정에 문제가 있다고 판단했다.JWT 인증 필터 확인JwtAuthenticatio..
2026.09.16
-
2차 프로젝트: GameLog 2일차
UserGame 설계 과정 — 데이터 생명주기와 책임 범위 고민게임 라이브러리와 리뷰 기능을 구현하면서 UserGame을 어떻게 관리할지 고민했다.단순히 게임을 라이브러리에 등록하고 상태를 변경하는 정도로 생각했지만, 리뷰 작성 기능까지 연결하면서 UserGame의 생성·수정·삭제 시점과 각 기능의 책임 범위를 명확하게 정할 필요가 있었다.1. 리뷰 작성과 게임 등록의 책임이 겹치는 문제팀원별로 기능을 나누어 구현하고 있었는데, 리뷰 작성 기능에서도 플레이 상태나 플레이 기록을 수정해야 했다.예를 들어 리뷰를 작성하면서 플랫폼이나 플레이 시간, 플레이 상태를 함께 입력할 수 있다.그렇다면 리뷰를 담당하는 팀원이 UserGameRepository나 UserGame을 직접 수정해야 하는데, 이렇게 되면 게임..
2026.09.15
-
2차 프로젝트: GameLog 1일차
GameLog 프로젝트 시작이번 프로젝트에서는 게임 기록 및 리뷰 서비스 GameLog를 개발한다.GameLog는 여러 플랫폼에서 플레이한 게임을 한곳에 기록하고, 플레이 경험과 리뷰 데이터를 바탕으로 나만의 게임 라이브러리를 만들고 새로운 게임을 추천받을 수 있는 서비스이다.한 게임의 기록이, 다음 인생 게임을 찾는다. 1. 문제 탐색 및 정의어떤 문제를 해결하려는가?게임을 여러 플랫폼에서 플레이하다 보면 내가 어떤 게임을 플레이했는지, 어떤 게임을 완료했는지 기록이 분산되는 문제가 있다.Steam, PlayStation, Nintendo 등 각 플랫폼에서는 자신의 게임 목록을 확인할 수 있지만, 여러 플랫폼에서 플레이한 게임 기록을 한곳에서 관리하기는 어렵다.또한 새로운 게임을 선택할 때도 수많은 게..
2026.09.14
-
백엔드 데브코스 12기 45일차
오전에는 개발자 글쓰기 특강을 들었다. 이력서, 포트폴리오, 블로그 등을 작성할 때 어떤 내용을 중심으로 작성하면 좋은지 배웠다.특히 프로젝트를 진행하면서 블로그에 글을 작성할 때, 단순히 어떤 기능을 구현했는지만 적는 것이 아니라 어떤 문제를 직면했고, 그 문제를 어떻게 해결했으며, 이후 어떻게 개선하고 발전시켰는지 성장 과정을 자세하게 기록하는 것이 좋다고 하셨다.지금까지는 프로젝트에서 구현한 기능이나 배운 내용을 중심으로 작성했다면, 이번 2차 프로젝트에서는 문제를 해결해 나가는 과정까지 좀 더 자세하게 기록해보려고 한다. 나중에 다시 봤을 때 내가 어떻게 성장했는지 확인할 수 있도록 기록을 남기는 것이 목표이다. 오후에는 2시간 동안 알고리즘 시험을 보고, 이후 3시간 동안 Web 시험을 봤다.알..
2026.09.12
-
백엔드 데브코스 12기 44일차
오늘 오전에는 이진 탐색, 파라매트릭 서치, 최대/최소 힙에 대한 이론을 공부했다. 이론 자체는 이해하는 데 크게 어렵지 않았는데, 오후에 배운 내용을 활용해서 알고리즘 테스트를 풀어보니 생각보다 훨씬 어려웠다.특히 힙은 코드 자체는 간단한 편인데, 문제를 보고 ‘힙을 사용해야겠다’고 떠올리는 과정이 가장 어려웠다. 이진 탐색도 단순히 이진 탐색을 구현하는 것보다 어떤 값을 기준으로 범위를 나누고 어떤 조건으로 탐색해야 하는지 판단하는 게 어려웠다. 역시 알고리즘은 이론을 이해하는 것과 실제 문제를 해결하는 것 사이에 차이가 큰 것 같다. 꾸준히 공부해야 한다는 걸 알고 있지만 귀찮다는 이유로 매일 실천하지 못하고 있었다. 이제는 귀찮음은 잠시 내려놓고 매일 하나라도 알고리즘 문제를 풀어보는 습관을 만들..
2026.09.10
-
[프로그래머스 Lv.2] 디펜스 게임(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이매 라운드마다 적의 수를 우선순위 큐에 저장하고, 무적권을 사용할 수 있는 k개의 라운드는 적의 수가 많은 순서로 처리하는 것이 유리하다.이를 위해 PriorityQueue를 사용한다. 기본 PriorityQueue는 가장 작은 값부터 꺼내는 최소 힙이므로, 지금까지 만난 적의 수 중 가장 작은 값을 poll()하여 병력 n에서 차감한다.pq.offer(enemy[i]);if (pq.size() > k) { n -= pq.poll();} 현..
2026.09.10