전체 글

하루 한권 책으로 떠나는 개발여행
직접 Custom 어노테이션을 만들어서 사용해 보자  들어가며프로젝트 진행 중에 기본적으로 제공되지 않는 @Valid 외에도 추가적인 검증이 필요한 필드가 있었습니다. 따라서 직접 검증을 수행할 수 있는 커스텀 어노테이션을 만들어 보겠습니다. 이를 통해 @Valid 어노테이션을 사용하는 방법을 알아보겠습니다. @Valid@Valid 어노테이션은 자바에서 Bean Validation API에서 제공되는 어노테이션 중 하나로, 주로 객체 그래프 내의 객체들에 대한 유효성 검사를 수행할 때 사용됩니다. 기본적으로 지원하는 어노테이션은  @NotNull: 필드가 null이 아닌지 확인@Size: 문자열, 컬렉션 또는 배열의 크기를 검사@Min, @Max: 숫자 필드의 최솟값 및 최댓값을 검사@Pattern: 문..
· Devops/AWS
서버 내부의 이미지 파일을 저장해 보자  들어가며프로젝트를 진행하는 동안, 이미지 파일을 배포 서버에 저장하는 등록 API를 구현하게 되었습니다. 초기 개발 단계에서는 S3를 이용하여 이미지를 업로드하는 것이 필요하지만, 이는 취업 준비생에게는 추가적인 비용이 발생하므로 부담이 될 수 있습니다. 그래서, 서버 내부에 직접 이미지를 저장하는 방법을 탐색하려고 합니다  서버 내부의 장, 단점S3와 같은 클라우드 스토리지를 사용하지 않고 배포된 서버 내부의 이미지 파일을 저장하게 되면 장단점이 존재합니다. 먼저 장담 전에 대해서 알아보도록 하겠습니다.장점빠른 액세스 : 이미지가 서버내부의 저장되어 있기 때문에 적은 네트워크를 통해 데이터를 불러올 수 있습니다.보안 : 서버 내부의 이미지를 저장하기 때문에 나름..
· JPA
QueryDsl를 이용해 무한 페이징을 알아보며 성능 개선 방법 알아보자  들어가며프로젝트 중에 내 정보 페이지에서 사용자가 작성한 데이터를 페이징 처리해야 기능을 맡게 되었으며, 내 정보 페이지에서 사영되는 페이징 방식은 무한 스크롤 방식으로 구현되어야 했기 때문에 무한 스크롤 방식을 구현하는 방법을 알아보도록 하겠습니다. 또한 AWS에서 조회 시 첫 번째 페이지에서 조회하는데도 무척이나 느린 모습을 보였다. 그래서 성능 개선한 방법을 알아보도록 하겠습니다. 페이징 이란?대량의 데이터를 한 페이지에 표시하는 것은 현실적으로 불가능합니다. 키보드와 관련된 10만 건의 데이터를 모두 한꺼번에 화면에 표시하려고 하면, 일반적인 27인치 모니터의 해상도로는 각 데이터를 표시하기에 충분한 공간이 없습니다. 물론..
Springdoc의 스웨거(Swaager)를 사용해 보자 들어가며 팀 프로젝트를 진행하면서 API 문서를 작성하기 위해 노션을 사용했었지만, 직접 작성하는 과정에서 불편함을 느꼈습니다. 또한, 프런트엔드 개발자로서 API가 올바르게 작동하는지 확인하는 과정에서도 어려움을 겪었습니다. 이런 어려움을 해결하기 위해 Swagger를 사용하여 API 명세서를 작성하게 되었습니다. Springdoc-openAPI 스웨거란? Spring 프레임워크 기반의 RestFul API를 문서화하기 위한 Open API입니다. 그리고 스프링 구성, 클래스 구조 및 다양한 주석을 기반으로 API 의미를 추론하기 위해 런타임에 애플리케이션을 검사하는 방식으로 작동합니다. JSON/YAML 및 HTML 형식 API로 문서를 자동으..
· MySQL
MySQL scheduled event 들어가며 프로젝트를 진행하던 중.... 비밀번호 찾기의 로직을 구현 중에 어떻게 해야 안전하게 비밀번호를 변경할 수 있을까 고민이 들게 되었다. 그래서 처음에는 static 변수에 선언해서 구현을 하는 도중.. 다른 사용자가 비밀번호 찾기 기능을 사용한다고 하면 이전사용자의 정보는 바뀌게 되어 사용할 수 없는 치명적인 오류가 발생하는 것이었다. 그래서 현재 프로젝트에서는 NoSQL을 사용하고 있지 않아서 MySQL에서 지원하는 event를 사용을 하도록 했다. 이번 포스팅에서는 어떻게 event를 사용하는지 알아보도록 하자 MySQL scheduled event란 MySQL에서의 이벤트는 일정한 주기나 특정한 시간에 자동으로 쿼리를 실행해주는 작업이라고 할 수 있습..
· 오류관련
Controller의 테스트가 안 되는 오류 오류 발생 팀 프로젝트를 진행하던 도중 JWT + Security를 사용해서 진행하고 있었다. 그 후에 컨트롤러단의 단위테스트를 진행하려고 했는데 @WebMvcTest를 통해서 해당 컨트롤러를 지정해 시작했지만... 다음과 같은 오류가 발생했습니다. Caused by 의 내용을 해석해 보면 securityConfig 파일에서 두 번째 빈인 JwtProvider을 찾아올 수 없다면서 해당오류가 발생했습니다.. 원인 파악 그럼 왜 이문제가 발생했을까 생각해 보니 현재 사용 중인 @WebMvcTest의 어노테이션읜 웹 계층만 단독적으로 사용하기 위해서 사용하기 때문에 @Configuration,@Serivce, @Repository 등의 스프링 컨테이너의 등록한 빈..
· 오류관련
오류발생 Ec2 서버에서 Jenkins를 사용해 ci/cd를 구축하던 도중에 다음과 같은 오류가 발생했다. 해당 오류의 내용은 마스터 노트에서 스케쥴링 및 빌드를 해주고 있는데 /tmp 디렉터리의 저장공간이 1.0 GiB 이상필요하지만 현재 626.12 MiB가 사용 중이기 때문에 마스터 노드가 사용할 수 없다고 오류가 발생하게 되면서 자동빌드를 할 수 없는 상항이 발생하게 되었습니다. 해결방법 해결 방법 1 노드의 알림 임계 값을 설정... 해당 필드의 값 들을 500Mib로 설정 하지만 당연히 실패 생각해보면 메모리가 부족하다고 경고가 뜬 거인데 메모리를 임계값을 설정해 봤자 당연히 오류가 뜨는 건 당연하다.. 왜 이 생각을 못했을까....... 실패.. 해결 방법 2 도커를 통해서 젠킨스를 실행중이..
덱 알고리즘을 이해하고 덱알고리즘을 사용한 문제를 풀어보자. 덱 알고리즘이란? 덱 알고리즘은 큐 알고리즘을 변형한 자료구조입니다. 큐알고리즘은 Front에서는 데이터를 꺼낼 수만 있고 Rear은 데이터를 삽입만 가능합니다. 하지만 덱은 Front와 Rear모두 데이터를 삽입, 추출이 가능한 알고리즘입니다. 다음은 데큐에서 Fornt와 Rear에서 인큐 데큐가 동작하는 예시입니다. 문제풀이 데큐또한 자바에서 지원하는 메서드가 존재합니다. 하지만 이번 풀이에서도 예시를 든 문제이기 때문에 직접 데큐 알고리즘을 작성해 해당 문제를 풀어보도록 하겠습니다. 문제에서 보면 총 8개의 데큐 메소드를 만들어야 하는 것을 볼 수 있습니다. 문제풀이방법 해당 문제도 간단하게 해결할 수 있습니다. 큐에서 사용한 놀리적인 위..
코드기록사
A steady developer