profile
모든 것을 기록하는 벨로그 💻
post-thumbnail

Redis Sorted Set으로 실시간 급상승 검색어 랭킹 구현하기

보통 Redis를 사용하여 인기 검색어 랭킹을 구현할 때, Sorted Set을 사용하곤 한다.Redis Sorted Set은 key 하나에 여러개의 score와 member로 구성되는데, 이때 member값은 중복되지 않으며 score를 기준으로 정렬된다.보통 mem

2024년 4월 2일
·
0개의 댓글
·

@OneToMany Delete Not Working

위와 같이 @OneToMany 관계로 설정된 files기존 코드를 단순화해보았다Delete가 제대로 작동하지 않는 이유는 너무나 당연하고 간단했다(1) post 객체를 미리 가져온 후 (2) File 엔티티를 삭제하게 되면 분명 정상적으로 삭제되는 것을 확인할 수 있지

2024년 1월 4일
·
0개의 댓글
·

PostgreSQL 한글 정렬 문제 : COLLATE "C" 옵션

데이터베이스 정렬문을 실행할 때 정렬이 되는 듯 하면서 안되는 현상이 나타난다면, collation 옵션을 확인하자ORDER BY 열 COLLATE "C" 를 사용할 수 있다.여기서 "C"는 C 언어의 바이트 순서를 사용하며, 이는 주어진 문자열을 바이트 단위로 비교하

2023년 12월 15일
·
0개의 댓글
·

Spring Boot 다중 Database 구성 (JPA, PostgreSQL, MySQL)

스프링부트 내에서 Database를 구성할 때 보통 application.yml에서 다음과 같이 작성한다.대부분의 작은 프로젝트에서는 이렇게 단일 DB로 구성되지만, 여러 개의 DB로 나누어 관리하거나 외부 DB를 참조해야 할 경우 다중 데이터베이스 구성이 필요하다.나

2023년 12월 15일
·
0개의 댓글
·
post-thumbnail

Javadoc 에러 cannot read Input length = 1

업로드중..IntelliJ의 Generate Javadoc 기능을 통해 문서화를 진행하던 도중 이런 에러가 발생했다.정말 단순한 문제였다. 파일 경로 중 인코딩이 안되는 문자열이 포함되어 있을 경우 발생한다.영어, 숫자와 허용되는 '\_'등의 특수문자를 제외하고 한글

2023년 12월 8일
·
0개의 댓글
·
post-thumbnail

Quill Editor 내 이미지 삽입/ 붙여넣기 (base64) 핸들링

웹페이지 내에 에디터를 쉽게 임베딩 할 수 있는 Quill.js는 정말 간편하게 사용할 수 있는 자바스크립트용 툴이다. https://quilljs.com/docs/quickstart/ 공식문서에도 굉장히 깔끔하게 정리가 되어있지만, 사진 업로드 등의 후처리가 필요한

2023년 12월 8일
·
0개의 댓글
·
post-thumbnail

OAuth2 authorization_request_not_found 오류

local과 Http환경에선 잘 돌아가던 Kakao OAuth2가 로드밸런서를 통해 HTTPS로 빌드했더니 authorizationrequestnot_found 오류가 나타났다. 처음엔 redirect url 문제인 줄 알았으나, 디버깅해본 결과 Spring Secu

2023년 11월 19일
·
0개의 댓글
·
post-thumbnail

Apache Superset Embedding - URL Parameter 설정

Env : Superset 2.0.1공식문서의 나와있는 것처럼, 기존의 config.py가 import할 새로운 설정파일로 superset_config.py를 생성하였다.대쉬보드를 공유할 때 url parameter를 받아와서 조건문으로 주기 위해, 설정을 바꾸어주어야

2023년 8월 20일
·
0개의 댓글
·
post-thumbnail

[Linux] nginx + tomcat 연동 (서버 중단 문제)

EC2 인스턴스 내에서 Nginx와 Tomcat를 연동해서, Nginx는 웹 서버로서 정적인 콘텐츠를 처리하고, Tomcat은 Java 기반의 동적인 웹 애플리케이션을 처리하도록 합니다.jdk / openjdk version "17.0.7" 2023-04-18 LTSN

2023년 6월 2일
·
0개의 댓글
·

로그 모니터링 환경 구축 : Elastic stack with Docker

현재 진행중인 프로젝트의 로그를 어떻게 모니터링할지 고민하다가, 이전부터 사용하고 싶었던 ELK 스택을 적용해보기로 했다.ELK를 하나씩 세팅하기에는 상당히 오랜 시간이 걸릴 듯 하여, Docker & Docker Compose를 사용해서 쉽게 구성할 수 있는 컨테이너

2023년 5월 28일
·
0개의 댓글
·

Rest(ful) API란?

Roy가 발표한 Rest API는 요즘 시대에서는 잘 지켜지고 있진 않은 것 같다.Rest 아키텍처를 진짜로 준수한 API는 Restful API라고 통칭하는 것 같은데, 잘 모르는 상태에서 두 개념을 모두 접한 사람들은 상당히 헷갈릴 수도 있다고 생각이 든다. 여기서

2023년 5월 24일
·
0개의 댓글
·

Spring Security - BCryptPasswordEncoder 길이 제한

스프링 시큐리티에서는 다양한 패스워드 암호화 방식을 사용할 수 있는데,그 중 가장 대중적으로 사용되는 BCryptPasswordEncoder 라이브러리를 적용하려고 했다.하지만 테스트를 하던 중, 패스워드 암호화 과정에서 문제가 있는 것을 발견했다.우리 서비스에서 비밀

2023년 5월 10일
·
0개의 댓글
·

Spring Security - 사용자 인증 중 적절하지 않은 BadCredentialsException 오류

위와 같이 사용자 인증 시 계정이 존재하지 않으면 UsernameNotFoundException, 단순 비밀번호 오류면 BadCredentialsException e가 뜨게 해놨다.하지만, 테스트코드를 돌려본 결과 아이디가 없어도, 비밀번호가 틀려도 항상 BadCred

2023년 4월 30일
·
0개의 댓글
·

Spring Security - permitAll() Filter 호출 에러

Spring Security의 Configure method를 아래와 같이 작성했으나, .antMatchers("/api/login", "/api/signup", "/resources/\*\*").permitAll() 설정을 했음에도 불구하고 로그인을 시도할때마다 계속

2023년 4월 25일
·
0개의 댓글
·
post-thumbnail

Notification ?!!

상태바에 앱의 정보를 출력하는 것을 의미함 (알림)배터리 상태가 있는 부분을 상태바라고 하며, 이는 일종의 시스템 창이다. 시스템 코어 정보를 뿌리기 위한 창액티비티가 제어 불가능, 액티비티의 영역이 아님직접 제어는 불가능하나, 시스템에 의뢰를 해서 시스템에서 관리하고

2022년 11월 17일
·
0개의 댓글
·

Service ?!

백그라운드에서 오랜 시간 수행되는 업무를 담당하기 위한 컴포넌트!화면 출력 능력은 없음! (only background) , 다만 화면 반응성은 아예 없거나 드물게 발생하는 업무여야함 (activity는 반응성 있음!) // 화면에 다른 앱이 사용된다고 해도 계속 처리

2022년 11월 16일
·
0개의 댓글
·

BroadcastReceiver ?!

4개 컴포넌트 중 api적으로 가장 간단한 컴포넌트!이벤트 모델로 실행되는 컴포넌트 (유저 이벤트는 아니고, 시스템의 특정 상황을 의미함)개발자 코드에 의해 라이프사이클을 직접 관리할 수는 없고, 시스템이 관리함broadcast receiver를 상속받아서 class

2022년 11월 16일
·
0개의 댓글
·

오류를 예방하는 타입 안정성 🧌 -2

컴파일러가 타입을 확실하게 결정할 수 없어, 스마트 캐스팅을 진행하기 어려운 경우 사용!명시적 타입 캐스팅을 위한 두 가지 변수 제공 : as, as?as 연산자를 사용해서 캐스팅 -> 객체의 타입이 예상했던 것과 다를 경우 실행 시간 예외 발생as? 연산자를 사용해서

2022년 9월 26일
·
0개의 댓글
·

오류를 예방하는 타입 안정성 🧌 -1

코틀린은 향상된 null체크, 스마트 타입 캐스팅, 유연한 타입 체킹을 이용해서 개발자들의 코드를 더욱 타입 안정적이면서도 적은 오류를 만들도록 최선을 다한다. NullPointerException 같은 경우에도 컴파일 시간에 최대한 빠르게 방지할 수 있도록 도와준다.

2022년 9월 25일
·
0개의 댓글
·

콜랙션 사용하기 🫂

콜렉션의 종류Pair : 값이 두 개인 튜플Triple : 값이 세 개인 튜플Array : 객체나 프리미티브 타입으로 구성되어 순번이 있고, 크기가 고정된 콜렉션List : 객체 정렬 콜렉션Set : 객체 정렬 X 콜렉션Map : 연관 사전 혹은 키와 값의 앱자바에서도

2022년 9월 24일
·
0개의 댓글
·