전체 글59 JPA 검색 쿼리 최적화로 검색 성능 개선하기 레시피 검색 서비스를 개발하면서 가장 큰 고민은 사용자들이 원하는 레시피를 얼마나 잘 찾을 수 있게 하느냐였습니다. 초기 버전에서는 단순 문자열 일치 검색만 지원했지만, 이는 여러 한계점을 가지고 있었습니다. 이번 글에서는 검색 쿼리를 어떻게 개선했고, 그 효과를 어떻게 측정했는지 공유하고자 합니다.초기 문제점처음에는 단순한 정확 일치 검색을 구현했습니다public List findByRecipeNm(String keyword) { return recipeRepository.findByRecipeNm(keyword);}이 구현의 한계점"김치찌개"를 검색하려면 정확히 "김치찌개"라고 입력해야 함대소문자를 정확히 맞춰야 함 ("Kimchi" ≠ "kimchi")연관된 결과를 찾을 수 없음 ("김치" 검.. 카테고리 없음 2025. 1. 16. 더보기 ›› UUID를 활용한 다중 이미지 업로드 시스템 개선기 레시피 공유 플랫폼을 개발하면서 가장 큰 도전 과제 중 하나는 다중 이미지 처리였습니다. 한 레시피당 여러 장의 조리과정 사진이 필요했고, 이를 효율적으로 관리해야 했습니다. 이 글에서는 이미지 업로드 시스템을 어떻게 개선했는지 공유하고자 합니다.초기 구현의 한계처음에는 단순히 하나의 이미지만 처리하는 방식으로 구현했습니다private String uploadImageToS3(MultipartFile image) throws IOException { String fileName = image.getOriginalFilename(); return amazonS3Service.uploadImage(image, fileName);} 이 구현의 문제점은원본 파일명을 그대로 사용하여 파일명 충돌 위험이.. 카테고리 없음 2025. 1. 16. 더보기 ›› 네이버 부스트캠프를 마치며(9기, 웹모바일) 오늘은 6개월간의 긴 부스트캠프 일정을 마치고 난 후기를 작성하려고 합니다. 1차 문제 해결력 테스트, 2차 문제 해결력 테스트, 챌린지 + 3차 문제 해결력 테스트 총 3번의 테스트를 거쳐 멤버십 과정에 합격했습니다. 부스트캠프 지원부스트캠프에 지원하게 된 계기에 대해 먼저 말씀드리겠습니다. 올해 4학년이 된 저는 아무것도 모르던 시절에 처음 Spring Boot를 접해본 인턴 경험 한 번과, 그 경험을 바탕으로 졸업 작품을 만들어본 경험밖에 없어서 할 줄 아는게 아무것도 없었습니다. 그래서 취업전에 목표는 부트캠프를 하나 수료하여 공부하는 법을 배우고, 인맥도 늘리는 것이었습니다. 그렇게 저는 소프트웨어 마에스트로, SSAFY, 네이버 부스트캠프, 우아한 테크 코스 등의 부트캠프 후기를 엄청 찾아 보.. 카테고리 없음 2025. 1. 15. 더보기 ›› [TypeScript] 속성 검증 라이브러리 비교 분석 목차라이브러리 개요기능 비교성능 분석사용 사례라이브러리 개요1. Zodimport { z } from "zod";const UserSchema = z.object({ id: z.string().uuid(), email: z.string().email(), age: z.number().min(0).max(120)});2. Joiimport * as Joi from 'joi';const schema = Joi.object({ username: Joi.string().min(3).max(30).required(), email: Joi.string().email().required()});3. Yupimport * as yup from 'yup';const schema = yup.object({ na.. 카테고리 없음 2025. 1. 7. 더보기 ›› [Cloud Canvas] Strategy와 Factory 패턴 적용 Ncloud 리소스를 Terraform으로 변환하는 과정에서 리소스 파싱 로직의 문제점을 발견하고, 이를 개선하기 위해 디자인 패턴을 적용한 리팩토링 과정을 공유하고자 합니다.문제 발견1. 단일 함수에 모든 로직 집중export function parseToNCloudModel(resource: any): NCloudModel { const { type, properties } = resource; switch (type.toLowerCase()) { case 'vpc': return new NCloudVPC({ ... }); case 'subnet': return new NCloudSubnet({ ... }); //.. 카테고리 없음 2025. 1. 7. 더보기 ›› 이전 1 2 3 4 5 6 7 ··· 12 다음