목록2025/02 (11)
enginner_s2eojeong

Recipe-Recommender Model더보기💡Goal : 사용자가 가입 시 등록한 알레르기 정보와 선호도를 기반으로 '오늘의 추천 레시피'를 제공JSON 요청: user_idJSON 응답: recipe_id 문제데이터/ai 팀에서 전달받은 input, output 값을 바탕으로 모델 api에 user_id를 넘기고, recipe_id를 받아오는 코드를 작성하였다.근데 Postman으로 GET localhost:8080/api/recipes/recommend 요청을 보냈더니 json 필드가 일치하지 않는다는 에러가 발생했다. RestTemplate은 기본적으로 Jackson을 사용해Map를 JSON으로 변환하기 때문에 {"user_id": "146"} 같은 JSON 형태로 모델 API에 전송된다.응..

문제)로컬 환경에서는 이미지 업로드가 정상적으로 작동하는걸 확인하고 배포를 했는데 레시피 업로드 과정에서 "요청 중 오류가 발생했습니다. load failed"라는 문구가 뜨면서 이미지 업로드가 되지 않는 문제가 발생했다. 예상 원인1. application.yml 파일 크기 제한혹시 용량을 너무 작게 설정했나 싶어 내가 업로드하려던 이미지 파일들의 크기를 다 계산해보았는데 충분히 넉넉했다. PASSservlet: multipart: max-file-size: 10MB max-request-size: 10MB 예상 원인 2) S3와의 연결 문제S3와의 연결 문제인지 확인하기 위해 로그를 찍어 보았다. 코드 상에서 s3Uploader.saveFile()메서드의 로그를 통해 S3에 정상적으로 이..

2025.02.13 - [Backend/Database] - JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편 JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편ReciGuard 프로젝트 회고ReciGuard는 알레르기를 가진 사용자에게 안전한 레시피를 추천하는 서비스다. 때문에 사용자별 알레르기 정보를 반영하기 위해 정규화된 데이터베이스 구조를 설계하였s2eojeong.tistory.com2025.02.13 - [Backend/Database] - JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 2편 JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 2편2025.02.13 - [Back..

2025.02.13 - [Backend/Database] - JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편 JPA에서 Index 설정하는 방법 (feat. 쿼리 속도 향상 시키기) - 1편ReciGuard 프로젝트 회고ReciGuard는 알레르기를 가진 사용자에게 안전한 레시피를 추천하는 서비스다. 때문에 사용자별 알레르기 정보를 반영하기 위해 정규화된 데이터베이스 구조를 설계하였s2eojeong.tistory.com 지난 시간에는 JPA로 Index를 설정하는 방법을 배웠다.이제 Index를 활용해서 기존 JPQL 쿼리를 리팩토링 해보자 ! RecipeRepository에는 DB에서 특정 레시피를 조회하는 함수들이 존재하는데,1. 모든 레시피 조회, 2. cuisin..

ReciGuard는 알레르기를 가진 사용자에게 안전한 레시피를 추천하는 서비스다. 때문에 사용자별 알레르기 정보를 반영하기 위해 정규화된 데이터베이스 구조를 설계하였으나, 레시피와 사용자의 알레르기 정보를 매칭하고 필터링하는 과정에서 Recipe, RecipeIngredient, Ingredient, UserIngredient, User 테이블 간에 빈번한 JOIN 연산이 발생하는 문제가 발생했다. 이러한 성능 저하로 인해 데이터 로딩 시간도 길어졌고 이는 곧 사용자 경험 저하로 이어질 우려가 있다. 이를 위해 해결 방법을 강구하던 중, 작년 데이터베이스 수업 시간에 배웠던 Index가 떠올랐다.Index란?: 특정 테이블에서 데이터를 더 빠르게 검색할 수 있도록 도와주는 보조 구조인덱스는 데이터를 복사..

N개의 랜선을 만들 수 있는 "최대" 랜선 길이를 찾아야 한다. (단조성을 띈다 -> 이분탐색으로 결정) 이분 탐색의 탐색 범위를 설정할 때, 최소 길이는 1, 최대 길이는 입력된 랜선 중 가장 긴 길이로 설정한다. 이후 mid 길이로 랜선을 잘랐을 때 총 몇 개가 만들어지는지 계산한 후,만약 N개 이상 만들 수 있다면더 긴 길이로도 가능할 수도 있으므로 l = mid + 1ans에 mid값 저장해놓고 계속해서 탐색 (가능한 최대 길이가 되도록)만약 N개 미만이라면mid 가 너무 길어 랜선 개수가 부족하기 때문에 r = mid - 1#include #include using namespace std;int main(){ ios_base::sync_with_stdio(false); cin.tie..

이 문제의 핵심은 단조성이다. 단조성이란 어떤 값이 계속 증가하거나 감소하는 성질을 의미한다.이 문제에서 우리가 찾고자 하는 것은 M개의 풍선을 만들기 위한 최소 시간인데 그 시간을 기준으로 보면 "어떤 시간 t에서 가능했다면, 그보다 더 큰 시간에서도 가능하다" 는 규칙이 성립한다.t 시간 안에 M개의 풍선을 만들 수 있다면,t+1, t+2, ... 같은 더 큰 시간에서도 M개 이상을 만들 수 있다. 이런 특성을 보일 때, 단조성을 띈다고 한다. 따라서 이 문제는 답이 단조 증가하는 특성이 있으므로이분 탐색을 적용하면 O(log T * N) 의 시간 복잡도로 해결할 수 있다. 1. 시간의 범위를 설정최소 시간 l = 1최대 시간 r = 10^12 (최악의 경우 -> 어떤 사람이 1개의 풍선을 만드는데 ..