-
백엔드 데브코스 12기 34일차
주문 및 상품 관리 기능 개선과 배포이번 작업에서는 주문 취소 기능을 실제 DELETE API와 연동하고, 상품 목록의 서버 사이드 페이지네이션과 검색 기능을 구현했다. 또한 기능 구현을 마무리한 후 Railway에 프로젝트를 배포하면서 실제 서비스 환경에서 발생하는 오류를 해결하는 경험까지 할 수 있었다.백엔드 구현상품 검색 API 리팩토링상품명 검색 기능을 추가하기 위해 기존 상품 목록 조회 API를 리팩토링했다. 검색 조건을 동적으로 적용하기 위해 Spring Data JPA의 Specification을 활용했다.검색어가 입력되지 않았거나 공백만 입력된 경우에는 검색 조건을 적용하지 않고 전체 상품을 조회하도록 처리했으며, 검색어가 입력된 경우에는 like를 사용해 상품명에 검색어가 포함된 상품을 ..
2026.08.27
-
Spring Boot 프로젝트 Railway 배포하기 + 배포 과정에서 발생한 오류 해결
1. Railway를 이용한 Spring Boot 배포이번 프로젝트에서 작성한 Spring Boot 서버를 실제 서버에 배포하기 위해 Railway를 사용했다.프로젝트 구조는 다음과 같이 프론트엔드와 백엔드가 하나의 GitHub Repository에 함께 존재하는 형태였다.project/├── backend/│ ├── build.gradle│ ├── gradlew│ └── src/│├── frontend/│ ├── package.json│ └── ...│└── README.md Railway에서 GitHub Repository를 연결한 뒤 배포를 시도했는데, 처음부터 몇 가지 오류가 발생했다.2. Railway가 프로젝트를 인식하지 못하는 문제발생한 오류처음 배포했을 때 다음과 같은 오..
2026.08.27
-
백엔드 데브코스 12기 33일차
주문 조회 기능 구현이번 작업에서는 주문 조회 기능을 개선하면서 백엔드 API 구현부터 프론트엔드 페이지 구현 및 API 연동까지 하나의 기능을 전체적으로 구현해보았다. 특히 이메일을 입력해 주문 내역을 조회하는 과정과 동적인 페이지네이션을 직접 구현하면서 백엔드와 프론트엔드가 API를 통해 어떻게 연결되는지 경험할 수 있었다.백엔드 구현기존 주문 조회 API는 페이지별 주문 목록만 반환하고 있어 프론트에서 전체 페이지 수를 알 수 없었다. 이 때문에 프론트에서 페이지네이션 개수를 임의로 정해야 하는 문제가 있었다.이를 해결하기 위해 Page의 getTotalPages()를 활용하고, totalPages와 주문 목록을 함께 반환하는 OrderListResponse DTO를 추가했다. 이를 통해 프론트에서..
2026.08.26
-
백엔드 데브코스 12기 32일차
오늘은 팀원들이 각자 구현한 CRUD를 하나로 합치는 작업을 진행했다. 이 과정에서 Git 충돌을 해결하는 데 어려움이 있었지만, 각자의 Pull Request를 2명 이상이 리뷰하도록 하면서 수정할 부분이 없는지 확인하고 코드를 개선할 수 있었다. 팀원들의 피드백을 통해 혼자 개발할 때 놓칠 수 있는 부분을 발견하고 수정하는 데 많은 도움을 받았다. Postman으로 API를 직접 테스트하면서 요청과 응답을 확인하니 API 테스트가 훨씬 수월했다. 백엔드에는 CORS를 추가하고, 기존에 구현한 주문 내역 리스트 API를 프론트와 연결했다. 또한 기존에는 모든 주문 내역을 반환하도록 구현했지만, 실제 사용자의 입장에서는 본인의 주문 내역만 확인할 수 있어야 한다고 생각해 이메일별 주문 리스트를 반환하는 ..
2026.08.25
-
백엔드 데브코스 12기 31일차
이날부터 본격적으로 팀 프로젝트를 시작했다. 이번 프로젝트는 Spring Framework를 활용해 카페 메뉴 관리 서비스를 제작하는 프로젝트다. 작은 로컬 카페 ‘Grids & Circles’를 배경으로 하며, 커피 원두 상품을 관리하고 고객의 주문을 처리하는 서비스를 구현한다. 주요 기능으로는 상품의 CRUD(Create, Read, Update, Delete)와 주문 관리가 있으며, 고객은 별도의 회원가입 없이 주문 시 입력한 이메일을 기준으로 구분한다. 또한 하루 동안 여러 번 주문하더라도 하나의 주문으로 합쳐 다음 날 배송할 수 있도록 주문을 관리한다. 앱 개발로 팀 프로젝트를 진행해본 경험은 있었지만, 백엔드 프로젝트는 처음이라 초반에는 구현보다 팀 규칙을 정하고, 기능을 정의하고, 프로젝트를..
2026.08.24
-
[프로그래머스 Lv.0] 문자열 밀기(Java)
문제https://school.programmers.co.kr/learn/courses/30/lessons/120921 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr풀이문자열 A를 한 칸씩 오른쪽으로 밀어가면서 B와 같은 문자열이 되는 순간의 이동 횟수를 구하는 문제이다.처음에는 아무것도 밀지 않은 A부터 B와 같은지 확인한다. 이후 마지막 문자를 맨 앞으로 옮기는 방식으로 문자열을 한 칸씩 밀어준다. nxtStr = nxtStr.charAt(len - 1) + nxtStr.substring(0, len - 1); 예를 들어 "hello"를 한 번 밀면 "ohell"이 된다. 여기서 charAt(len - 1)..
2026.08.22
-
백엔드 데브코스 12기 30일차
이 날은 3시간 동안 알고리즘 강의를 듣고, 4시간 동안 알고리즘 모의고사를 진행한 뒤 1시간 동안 문제 리뷰를 진행했다.지금까지 알고리즘 문제를 대부분 C++로 풀어왔기 때문에, 자바로 문제를 풀어보니 생각보다 많이 불편하고 어렵게 느껴졌다. 특히 C++에서 익숙하게 사용하던 기능들을 자바에서는 다른 방식으로 구현해야 해서 문제 풀이 자체보다 언어에 적응하는 데 더 많은 시간이 걸리는 것 같았다.이제는 자바에도 어느 정도 적응해야 할 시기라고 생각하지만, 역시 C++의 편리함이 너무 그립다... 😅앞으로 매일 한 문제씩이라도 꾸준히 자바로 알고리즘 문제를 풀면서 자바 문법과 자료구조에 익숙해지도록 노력해야겠다.[Java] ArrayDeque 사용법 | Stack과 Queue로 활용하기 [Java] A..
2026.08.21
-
[Java] DFS(깊이 우선 탐색) 정리
DFS(Depth-First Search)는 그래프나 트리에서 한 방향으로 최대한 깊게 탐색한 후 다시 돌아와 다른 경로를 탐색하는 알고리즘이다.BFS가 가까운 노드부터 탐색한다면, DFS는 한 경로를 끝까지 탐색하는 방식이다.1. DFS란?다음과 같은 그래프가 있다고 하자. 1 / \ 2 3 / \ 4 51에서 DFS를 수행하면 다음과 같은 순서로 탐색할 수 있다.1 → 2 → 4 → 5 → 31 → 2 → 4까지 깊게 들어간 후 4에서 더 이상 갈 곳이 없으면 2로 돌아온다. 이후 5를 탐색하고 다시 1로 돌아와 3을 탐색한다.즉, 깊게 탐색하고 막히면 이전 위치로 돌아오는 과정을 반복한다.2. 재귀 함수로 DFS 구현하기DFS는 재귀 함수를 이용하..
2026.08.21
-
[Java] BFS(너비 우선 탐색) 정리 | ArrayDeque로 구현하기
BFS(Breadth-First Search)는 그래프나 트리에서 가까운 노드부터 차례대로 탐색하는 알고리즘이다.특히 최단 거리를 구하는 문제에서 자주 사용된다.1. BFS란?BFS는 시작 노드에서 가까운 노드부터 탐색한다.예를 들어 다음과 같은 그래프가 있다고 하자. 1 / \ 2 3 / \ \ 4 5 61에서 BFS를 수행하면 다음 순서로 탐색한다.1 → 2 → 3 → 4 → 5 → 6먼저 시작 노드 1을 탐색하고, 그다음 거리가 1인 2, 3을 탐색한다.그 후 거리가 2인 4, 5, 6을 탐색한다.즉, 한 단계씩 넓혀가면서 탐색하는 방식이다.2. BFS에서 Queue를 사용하는 이유BFS는 먼저 발견한 노드를 먼저 탐색해야 한다.따라..
2026.08.21