React - 모바일 Pull-to-Refresh 방지하기 작성일자 : 2025년 05월 25일 Pull-to-Refresh란? Pull-to-Refresh는 모바일 애플리케이션에서 사용자가 화면을 아래로 끌어당겨 새로 고침을 수행하는 기능입니다. 일반적으로 리스트나 피드를 새로 고침할 때 사용됩니다. Pull-to-Refresh 방지하기 PreventPullToRefresh 컴포넌트 생성하기 PreventPullToRefresh 컴포넌트는 모바일 환경에서 Pull-to-Refresh 기능을 비활성화하는 역할을 합니다. 이 컴포넌트를 사용하면 터치 이벤트를 감지하여 기본 동작을 방지할 수 있습니다.// PreventPullToRefresh.jsimport React, { useEffect } f..
PostgreSQL - PostgreSQL 로컬 Docker 환경에서 pg_bigm 설치하기 작성 일자 : 2025년 05월 18일 pg_bigm 이란? pg_bigm은 PostgreSQL의 확장 모듈로, bigram(2-gram) 기반의 인덱스를 생성하여 전체 텍스트 검색 성능을 향상시키는 데 사용됩니다. 특히 한국어, 일본어 등 다중 바이트 문자를 사용하는 언어에서 효과적이며, LIKE '%검색어%'와 같은 중간 문자열 검색에서도 빠른 성능을 제공합니다. bi-gram 인덱스 생성: 문자열을 연속된 두 글자씩 분할하여 인덱스를 생성함으로써 빠른 검색을 지원합니다.다국어 지원: 한국어, 일본어 등 비알파벳 언어에 대한 검색 성능이 우수합니다.LIKE 연산자 최적화: LIKE '%검색어%' 형태의 ..
스프링 - Quartz Postgresql JDBC 연결하기 작성일자 : 2025년 05월 11일 1. Quartz 라이브러리 추가 dependencies { // Quartz implementation 'org.springframework.boot:spring-boot-starter-quartz'} 2. 프로퍼티 설정 2.1. LocalDataSourceJobStore 이용하기spring: quartz: job-store-type: jdbc jdbc: initialize-schema: never properties: org: quartz: scheduler: instanceName: QuartzSche..
Claude API - Token Counting 작성 일자 : 2024년 05월 04일 개요 Claude API는 OpenAI API와 마찬가지로, 사용자가 입력한 프롬프트의 토큰 길이에 따라 요금이 부과됩니다. 따라서, 토큰을 줄이는 것이 비용을 절감하는 방법 중 하나입니다. API마다 토큰을 계산하는 방법이 다르기 때문에, 인터넷에는 각 API마다 토큰을 계산해주는 사이트들이 존재합니다. 하지만, 부정확한 사이트도 많기 때문에, 직접 계산하는 방법을 알아보겠습니다. 토큰 계산 방법 호환되는 모델 Claude API의 토큰 계산 API는 아래의 모델과 호환됩니다.Claude 3.7 SonnetClaude 3.5 SonnetClaude 3.5 HaikuClaude 3 HaikuClaude 3 O..
스프링 - Google OAuth2 value too long for type character varying(255) 문제 해결 작성 일자 : 2025년 04월 27일 발생한 문제 서비스 운영 도중 유저분께서 구글 로그인을 시도하였으나, Unauthorized 에러가 발생했다는 제보를 받았습니다. 해당 시간에 로그를 확인해보니 아래와 같은 에러가 발생했습니다.2025-04-26T08:57:32.195Z ERROR 1 --- [lumo] [nio-8080-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper : ERROR: value too long for type character varying(255)org.springframework.dao.DataIntegri..
Cursor - .cursorrules 사용법 작성 일자 : 2024년 04월 20일 개요 프롬프팅은 자신이 잘 아는 분야일수록 더 뛰어난 결과를 이끌어낼 수 있습니다. 오늘은 Cursor를 사용하는 과정에서 더욱 정교하고 일관된 결과를 얻기 위해 활용할 수 있는 .cursorrules 활용법에 대해 소개드리려 합니다. .cursorrules Cursor의 .cursorrules 파일은 프로젝트별로 AI의 행동을 세밀하게 조정할 수 있는 설정 파일입니다. 이 파일을 통해 개발자는 코드 스타일, 아키텍처 패턴, 사용 라이브러리 등 프로젝트의 특성을 AI에게 명확히 전달하여, 보다 일관되고 정확한 코드 생성을 유도할 수 있습니다. 이 파일은 프로젝트의 루트 디렉토리에 위치해야 하며, .cursorru..
PostgreSQL - 메세지 테이블 인덱싱 과정 작성일자 : 2025년 04월 13일 (이미지) 발생한 문제 나의 채팅 리스트 페이지에서 [최근 20개의 채팅]과 [각 채팅의 마지막 메세지]를 불러오는 쿼리가 1.6초 이상 걸리는 문제가 발생하였습니다. 메세지 테이블 인덱싱 과정 1. RDS Database snapshot 생성하기 실행중인 Application을 종료하고, RDS Database에서 snapshot을 생성합니다. 2. 사용중인 DB 용량 파악하기 인덱스를 생성하면 인덱스는 해당 테이블의 약 20%~30%의 사이즈로 생성됩니다. 현재 사용중인 전체 DB 용량과 메세지 테이블의 용량을 파악하고, 남은 RDS 용량이 충분한지 확인합니다. SELECT pg_size_pretty(pg_d..
스프링 - ECS JVM 힙 메모리 증가시키기 작성일자 : 2025년 04월 06일 (이미지) 발생한 문제 AWS ECS에서 Spring Boot 애플리케이션을 실행할 때, JVM 힙 메모리가 부족하여 애플리케이션이 비정상 종료되는 문제가 발생했습니다. 로그Exception in thread "http-nio-8080-Acceptor" java.lang.OutOfMemoryError: Java heap space 해결 방법 현재 ECS Task Definition ECS Task Definition은 아래와 같이 설정되어 있습니다. Task SizeCPU: 0.9vCPUMemory: 0.9GBContainer - Resource allocation limitsCPU: 0.9vCPUMemory har..