전체 글 244

[Cache] Redis란 무엇일까?

회사 업무 중 트래픽이 많아 대용량 처리를 하는 서비스가 있다.해당 서비스의 경우 트래픽도 트래픽이지만 성능이 빠른 서비스를 제공하기 위해 캐시를 사용하는데사용중인 캐시가 바로 Redis이다.이에 따라 Redis 특징과 캐시가 무엇인지에 대해서 간단히 작성해보려고 한다. 캐시란?자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소를 의미Redis?인메모리 DB처럼 모든 데이터를 메모리에 저장하고 조회할 수 있는 캐시 시스템메모리 키 값 데이터 구조를 저장하는 저장소Redis 사용 이유?다양한 장점들이 존재하지만 다양한 자료 구조를 지원다양한 자료 구조를 지원함에 따라 개발 유연성을 제공즉 개발 편리성과 생산성은 올라가며 난이도는 낮아짐DB에 직접 접근하여 저장 및 조회하는 처리 비용(디스크에 직접 ..

[Spring] 정의되지 않은 요청 파라미터에 대한 유효성 검증 및 Jackson 과 @EnableWebMvc의 관계성

회사에서 취약점 개선 개발을 진행하면서 아래의 이슈를 접하게 되었다."정의되지 않은 요청 파라미터에 대해서 유효성 검증 필요" 해당 수정 방안은 ObjectMapper Configuration 설정 방법 혹은 Jackson 설정 방법이 있는데그 중 가장 간단한 방법인 Jackson 설정으로 변경해보려고 한다. 변경 방법1. Application.yml Jackson: deserialization: fail-on.unknown-properties : trueJackSon.deserialization.fail-on.unknown-properties은 Json 역직렬화 시 객체에 정의되지 않은 속성이 들어올 경우UnrecognizedPropertyException 예외를 발생 시키는 설정이다. 2. Appl..

프로그래머스 : 코딩 기초 트레이닝 > 문자열 출력하기 풀이

코테 준비를 안한지 거이 3년정도 되었더니..생각보다 많이 까먹은 내 자신을 발견했음.. 이에 따라 오늘부터 다시 입문자처럼 해보려고 함이에 따라 기초 트레이닝 문제부터 차근차근 풀면서 기초를 잡아나갈 계획! 아무튼 이번 문제는 가장 기초 문제 중 하나입니다.말 그대로 str을 출력하기만 해주면 됩니다. 단, 여기서 놓치면 안되는 부분은 바로 제한사항! 제한 사항에 대해서만 조건을 넣어주면 문제가 쉽게 풀립니다. 코드str = input()if (len(str) >= 1 and len(str) 간단 명료한 코드입니다.말 그대로 1보다 크거나 같으면서 100만보다는 작거나 같은 조건과 공백이 없는 조건을 추가해주면 됩니다.

[Spring] QueryDsl 설정 및 Q파일 생성 안되는 이슈 해결(Gradle 8.x 이상 설정 방법)

최근에 Java 17, Spring 3.x 버전으로 개발을 진행하면서..QueryDsl 설정이 안되어 삽질을 좀 했었다. 이에 따라 삽질을 최소화 하기 위해 글을 남겨보려고 함  1. Gradle Version 확인 필요 우선 Gradle Version이 8.x 이상일 경우 아래의 의존성을 추가하면 안된다.id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10' 해당 의존성을 추가할 경우 아래의 문구를 만나게 된다.The AbstractCompile.destinationDir property has been deprecated. This is scheduled to be removed in Gradle 9.0. Please use the destinationDi..

[MacOS] OpenJdk 17 -> temurin 17로 변경하기

이번에 팀 프로젝트를 진행하면서, 기존에 OpenJDK를 설치해서 진행했다가, Temurin로 변경이 필요하여 변경하면서..트러블 슈팅을 했던 부분도 한번 기록해보려고 한다.  우선 내가 사용하고 있는 jdk는 openjdk-17을 사용하고 있었다.이에 따라 가장 먼저 openJdk를 제거해야 했다.  1) OpenJDK 제거 방법1.1) uninstall로 수행(실패)brew uninstall adoptopenjdk17uninstall을 했을 때 위와 같이 cask 이슈가 있었음이는 alfred를 설치하면 해결되는 이슈라고 하지만, 이미 설치한 상태였음으로 해당 방식으로 삭제하는건 아니였음 1.2 cask 설치 (이미 설치가 된 상태) brew install cask이미 설치가 완료된 상태로, 해당 문..

[MySQL] Access denied for user '사용자명'@'%' to database 'DB명' 오류 해결

오랜만에 Spring Boot 프로젝트를 생성하는 중 DB 연결 과정에서 아래와 같은 이슈가 있었다.Access denied for user '사용자명'@'%' to database 'DB명' 나중에 내가 또 한번 까먹을 수도 있을 것 같아서 포스팅으로 기록하려고 한다.  내가 조치한 방법은 아래와 같다. 1) MySQL 으로 접속한다.use mysql 2) 사용자와 호스트를 조회한다.select user, host from user 3) 내가 프로젝트에서 사용하는 사용자가 존재하는지 체크하고, 존재하지 않을 경우 생성한다.create user '[USER명]'@'%' identified by '[PW]'- %를 사용하는 이유는, 외부 접속도 가능하도록 설정하기 위함이다. 4) 사용자에 대한 전체 DB에..

DB/SQL 2024.10.05

[Spring] Utility Class에 대해서는 Static Method로 구성하는 것이 좋을까?

안녕하세요 세기무민입니다. 이번 포스팅은 Utility Class에 대해서 Static Method vs @Component 중 어떻게 구성하는 것이 조금 더 효율적인지에 대해 의견을 정리해보려고 합니다. 서론회사에서 오프라인 코드 리뷰 중 Utility Class에 대해 Static Method가 효율적일지, @Component가 조금 더 효율적일 지 검토를 해보기로 하였고 이에 따라 개인적인 궁금증에 따라 서치를 시작했다. Static Method 말 그대로 정적 매서드로 인스턴스 생성 없이 호출이 가능하다. 주로 Utiility Class와 같이 재사용이 가능한 매서드를 제공하기 위해 사용된다. @Componet 비즈니스, 서비스 로직과 같이 어플리케이션 로직 구현 시 사용되는 어노테이션이며 의존성..

[Spring] TimeZone에 대해 활용해보자

회사에서 최근에 TimeZone을 이용하여 권역에 따른 서비스 분리 운영을 진행하려고 한다.조건은 서비스의 코드는 동일 코드지만, 컨테이너 혹은 Application의 TimeZone을 분할하는 방향으로 설계가 되었고이에 따라 나는 어플리케이션 단에서 TimeZone을 유동적으로 처리할 수 있도록 구성이 필요했다. 즉, Application에 TimeZone 설정하는 방법에 대해 해당 포스팅에서 리뷰해보려고 한다.  1. TimeZone이란 무엇인가?TimeZone이란 전 세계적으로 사용되는 표준 시간을 의미한다. 주로 UTC/GMT를 많이 사용하는 편이고 예를 들어 한국 기준을 표준 시간대로 변경하면 UTC+9라는 값을 가지게 된다. 2. TimeZone을 사용해야 하는 이유?우선적으로 TimeZone..

ORA-01502(인덱스 분할 영역 사용 불가능한 상태) 오류 해결

회사에서 백앤드 개발자로 업무를 하면서..DB와 연관된 이슈가 발생했을 때 내가 직접 해결하지는 않지만DBA에게 지원을 요청해야 할 경우가 종종 있다. 이번에도 내가 운영을 맏은 서비스가 Http Status 500 Error가 계속 발생하고 있다는 문의를 받고 검토를 한 결과 아래와 같은 원인을 확인했다.  SQL Error : 1502, SQLState: 72000HHH000010: On release of batch it still contained JDBC statements 위의 코드를 해석하면 아래와 같다.Application 에서 SQL 작업 중 1502 에러가 발생하여, JDBC문이 정상적으로 작동되지 않은 것을 볼 수 있다.이에 따라 나는 1502 Error에 대해 확인을 하게 되었다. ..

remote : Permission to .git denied to error 오류 해결하기 : 세

최근에 github.io 블로그를 만들다가 git push를 했을 때 Permission to .git denied 오류를 만났고오류를 해결한 방법을 간단히 포스팅으로 정리해보려고 합니다. git push을 할 때 위와 같이 오류가 발생했습니다.영어를 해석해서 해당 문제를 보니, 제가 push를 하려는 github.io 레파지토리의 계정 권한에 존재하지 않는 계정이라 발생한 문제였습니다.다시 말해, github.io 계정의 주인이 A일 경우 다른 계정이 A계정의 레파지토리에 push를 요청함에 따라 권한이 없다고 막은 현상이라고 할 수 있습니다.2가지의 방법을 시도했습니다.1. 키체인 설정 (해결 안됨) 제가 MAC을 사용해서 위와 같이 키체인을 변경했습니다.계정 : github 계정암호 : github..