til 252

[block-server] 휴지통 자동 삭제 기능 구현 (2)

Application💡DemoApplication.javaPR Link feat: 문서 휴지통 자동 삭제 기능 추가 by hellonaeunkim · Pull Request #43 · jho951/Block-server📝 Part (해당되는 것만 체크) BE FE Infra Docs Test #️⃣ 연관된 이슈 closes #41 🔎 작업 내용 1. 주요 변경 사항 요약 기존 문서 삭제 API를 soft delete에서 hard delete로 변경 문서를 휴지통으로 보내는 별github.comCodepackage com.documents;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfi..

[block-server] 휴지통 자동 삭제 기능 구현 (1) : Spring Scheduling vs Spring Batch

Spring Scheduling💡소제목Spring Batch💡소제목두꺼운 밑줄 스타일구분Scheduler (@Scheduled)Spring Batch목적작업 실행 시점 관리대용량 데이터 처리역할“언제 실행할까”“어떻게 처리할까”데이터 처리단순 로직대량 데이터 처리 최적화구조메서드 단위 실행Job → Step 구조트랜잭션직접 처리자동 관리실패 처리없음 (직접 구현)재시작, retry 지원사용 난이도쉬움비교적 복잡참고 자료1) Spring Framework Docs : Spring Schedulinghttps://docs.spring.io/spring-framework/reference/integration/scheduling.html?utm_source=chatgpt.com Task Execution ..

[바이브 코딩] MacOS Codex CLI 설치

1. Node.js 설치 확인💡Node.js 설치 확인node -v 💡zsh: command not found: node 처럼 아무것도 안나온다면, brew 로 설치brew install node2. Codex CLI 설치💡Codex CLI 설치npm install -g @openai/codexnode 버전이 오래된 경우 Error 가 뜨기도 한다.ex. node -v 명령어를 통해 확인한 버전이 v20.11.0 였는데 오류가 나서 brew upgrade node 후 다시 진행했더니 오류가 없었다.💡설치 확인codex --version 💡계정 연동codex터미널에 codex 입력 후 아래와 같이 계정을 연동할 수 있는 옵션이 뜬다.Mac 의 경우 Codex 앱에 로그인이 되어있으면 추가로 웹페이..

[바이브 코딩] AGENTS.md 로 코딩 에이전트 활용하기

바이브 코딩💡AGENTS.mdOpenAI Codex 팀에서 처음 발표한 AI 에이전트 용 표준 규칙 파일프로젝트에서 AI 에이전트에게 필요한 맥락과 지침을 주입시켜주는 간단한 마크다운 파일💡AI 에이전트가 뭐지? (참고 자료)단순히 답하는 AI가 아니라 실제 작업을 스스로 수행하고 끝까지 완료하는 실행형 AI 시스템효율적인 AGENTS.md 구조💡하나의 AGENTS.md는 500줄 이내로 유지LLM 모델의 특성상 컨텍스트 윈도우 사이즈가 한정되어 있기 때문에 에이전트 규칙이 차지하는 정의 때문에 컨텍스트 낭비가 생길 수 있다.❓컨텍스트LLM이 쓸 수 있는 제한된 공간❓LLM자연어를 토큰과 숫자(벡터)로 변환한 뒤, 이전 문맥을 기반으로 다음에 올 ‘단어(토큰)’의 확률을 계산해 생성하는 모델ex. ..

[동시성 처리] 동시성 문제 (Race Condition) 해결 방법 3가지 관점 - (3) Redis Distributed Lock

Redis Distributed LockRedis에서 제공하는 대표적인 라이브러리 Lettuce 와 Reddison 을 활용하여 해결할 수 있다.💡Lettuce 1) 특징비동기(Async) 및 동기(Sync) 방식 모두 지원하는 Redis 클라이언트이다.❗️Redis 클라이언트 란?애플리케이션(Spring, Node 등)이 Redis 서버와 통신하기 위해 사용하는 라이브러리Netty 기반의 비동기 I/O 처리를 지원한다.❗️Netty 란?Lettuce가 Redis 서버와 통신할 때 사용하는 비동기 내부 네트워크 프레임워크Lettuce는 분산락을 제공하는 라이브러리가 아니라 Redis 명령을 실행하는 클라이언트이기 때문에 lock을 Redis 명령어로 직접 구현해야 한다.❗️setnx 명령어를 활용하여 ..

Projects/hub-eleven 2026.03.11

[동시성 처리] 동시성 문제 (Race Condition) 해결 방법 3가지 관점 - (2) Database Lock

Database Lock데이터베이스가 제공하는 Lock을 활용하여 데이터 정합성을 맞출 수 있다.💡Pessimistic Lock (비관적 락)실제 데이터에 직접적으로 Lock을 거는 방식다른 트랜잭션은 Lock이 해제되기 전까지 데이터를 읽을 수 없다.1) 특징 (참고 자료)데이터 충돌을 피하기 위해 먼저 Lock을 걸고 작업을 진행일반적으로 Exclusive Lock(X Lock, 배타적 락)을 사용해 다른 트랜잭션의 Read/Write을 방지한다.은행 계좌, 항공권 좌석, 콘서트 티켓 등 충돌이 빈번하고 데이터 정합성이 중요한 환경에서 유용하다.2) 장점 (참고 자료)충돌이 빈번하게 일어날 경우 Optimistic Lock보다 성능이 좋을 수 있다.Lock을 통해 update를 제어하기 때문에 데이..

Projects/hub-eleven 2026.03.09

[동시성 처리] 동시성 문제 (Race Condition) 해결 방법 3가지 관점 - (1) Synchronized

동시성 문제 (Race Condition)💡해결 방법레이스 컨디션을 해결하는 방법에는 크게 3가지 관점이 있다.첫번째는 Java에서 지원하는 Synchronized 방법으로 해결하기두번째는 DB가 제공하는 Lock 을 이용하여 데이터 정합성 맞추기세번째는 Redis 를 활용하여 대표적인 라이브러리 Lettuce 와 Ressison 으로 해결하기💡동시성 문제 (Race Condition) 이란?https://annovation.tistory.com/508 [동시성 처리] Java 에서 발생하는 동시성 문제란?Java 동시성 문제 (Race Condition, 레이스 컨디션)💡Java 동시성 문제란?Java에서 여러 스레드가 같은 데이터(필드/객체 상태) 를 공유하며 실행될 때, 올바른 제어 없이 접근..

Projects/hub-eleven 2026.03.06

[DB] Redis 실습 2

Spring Boot에서 Redis 사용해보기💡Redis의 Hash 자료구조로 저장되는 엔티티(Entity) 만들기엔티티(Entity) : 저장소(DB, Redis 등)에 저장되는 도메인 객체(클래스)도메인 객체(Domain Object) : 서비스가 다루는 현실 세계의 개념(ex. 상품, 주문, 계좌 등) 들을 코드로 표현한 객체 1) 요구사항아래와 같은 도메인 객체의 속성(필드)을 가지는 주문 ID, 판매 물품, 갯수, 총액, 결제 여부에 대한 데이터를 지정하기 위한 ItemOrder 클래스를 RedisHash 만들기1. 주문 ID - String2. 판매 물품 - String3. 갯수 - Integer4. 총액 - Long5. 주문 상태 - String 2) 코드 구현ItemOrder.javaim..

심화/DB 2026.03.05

[DB] Redis 실습 1

블로그 별 조회수를 Redis로 확인하기💡구현 기능아래와 같은 조건의 '내 블로그 글 별 조회수'를 Redis로 확인하는 기능을 만드려고 한다.1. 블로그 URL의 PATH는 /articles/{id} 형식이다.2. 로그인 여부와 상관없이 새로고침 될때마다 조회수가 하나 증가한다.3. 이를 관리하기 위해 적당한 데이터 타입을 선정하고,4. 사용자가 임의의 페이지에 접속할 때 실행될 명령을 작성해보자. 💡Redis 명령어Redis의 String 타입은 숫자 카운터로 사용할 수 있고 값을 증가(INCR) 또는 감소(DECR)시키는 연산을 제공한다.1) 특정 게시글 조회수 증가INCR articles:{id} 2) 특정 게시글 조회수 증가 예시INCR articles:1INCR articles:2INCR ..

심화/DB 2026.03.04

[DB] Spring에서 Redis 사용해보기 : RedisTemplate 써보기

RedisTemplate💡RedisTemplate 이란?Spring Data Redis 에서 제공하는 핵심 클래스 (공식 문서)Key를 직접 설정하고 자료형도 직접 선택해 가면서 Redis를 활용하고 싶다면, RedisTemplate 을 사용할 수 있다.RedisTemplate 을 정의하면서 Key와 Value로 사용될 Java 클래스를 정하고, 이후 사용할 세부 작업을 RedisOperations 를 이용해 가져오는 방식이다.StringRedisTemplate💡StringRedisTemplate 이란?RedisTemplate을 상속받은 클래스로, 복잡한 작업없이 Java의 문자열만 다루는 경우, StringRedisTemplate 이 기본으로 만들어진다.이는 Key와 Value를 전부 Java의 문..

심화/DB 2026.03.03