전체 글 312

Spring 스케줄러 — Quartz 예제로 따라하기

Spring 스케줄러 — Quartz 예제로 따라하기예제: 정해진 시간에 로그 한 줄을 찍는 SampleBatch (업무 내용은 신경 쓰지 않아도 됨)0. 한 줄 요약스케줄러 = "정해진 시간에 자동으로 돌아가는 알람 시계"Job = 알람이 울릴 때 실행되는 코드이 글에서는 "무슨 일을 하느냐"는 중요하지 않습니다. 언제, 어떻게 자동 실행되느냐만 다룹니다.1. 스케줄러가 왜 필요한가?어떤 작업이든 사람이 매번 버튼을 누르기 어렵습니다.매일 새벽 2시30분마다월요일 오전 9시이럴 때 시간만 맞으면 알아서 실행해 주는 게 스케줄러입니다.[Cron: 매분 0초] ──► [Quartz] ──► [SampleBatchJob] ──► [Service] ──► 로그 출력2. Spring에서 스케줄링 방법 2가지방식..

Linux 파티션부터 마운트까지: `/dev/mapper/rhel-root`와 파일시스템 구조 이해하기

Linux 파티션부터 마운트까지: /dev/mapper/rhel-root와 파일시스템 구조 이해하기카테고리: Linux태그: Linux, Partition, Filesystem, Mount, LVM, Storage주제: 리눅스의 저장 공간 구조와 디렉터리 경로가 파일시스템에 연결되는 방식1. 리눅스의 디스크와 디렉터리 구조리눅스에서는 여러 저장 장치와 파일시스템을 하나의 디렉터리 트리 안에서 사용할 수 있다. 모든 일반적인 경로는 루트 디렉터리인 /에서 시작한다.예를 들어 다음과 같은 구조를 생각할 수 있다./├── tmp/ # 루트 파일시스템을 사용할 수 있음├── appl/ # 루트 파일시스템을 사용할 수 있음├── loggin/ # 별도 파일..

OS 2026.10.27

업로드 임시파일이 `/tmp`에 쌓이는 문제: 멀티파트 파싱 구조 개선

업로드 임시파일이 /tmp에 쌓이는 문제: 멀티파트 파싱 구조 개선카테고리: Troubleshooting태그: Java, Servlet, Multipart, Apache Commons FileUpload, WAS, Disk주제: 디스크 풀 장애의 후속 조치로 멀티파트 요청 처리 과정에서 생기는 임시파일 누적 문제를 분석하고 해결한 과정이전 글: WAS 업로드 실패: `No space left on device` 원인 분석과 디스크 용량 장애 대응WAS 업로드 실패: No space left on device 원인 분석과 디스크 용량 장애 대응카테고리: Troubleshooting태그: Linux, JEUS, WAS, Disk, Filesystem, Troubleshooting주제: WAS에서 발생한 파일..

WAS 업로드 실패: `No space left on device` 원인 분석과 디스크 용량 장애 대응

WAS 업로드 실패: No space left on device 원인 분석과 디스크 용량 장애 대응카테고리: Troubleshooting태그: Linux, JEUS, WAS, Disk, Filesystem, Troubleshooting주제: WAS에서 발생한 파일 업로드 오류를 리눅스 파일시스템 관점에서 분석하는 방법1. 장애 발생 상황WAS에서 파일 업로드를 처리하던 중 임시 파일 생성에 실패하는 오류가 발생했다. 오류 메시지에는 /tmp 아래의 업로드 임시 파일 경로와 함께 No space left on device가 표시됐다.Caused by: java.nio.file.FileSystemException:/tmp/upload_....tmp: No space left on device오류가 발생한 경..

HTML, DevTools Sources에 안 보이는 문제 해결 (sourceURL 사용)

개발자 모드에서 디버깅이 필요한데, 소스코드가 보이지 않는 문제가 있었다. 🚀 요약 HTML 내부 이 스크립트는:별도의 JS 파일이 아님URL(경로)이 없음브라우저가 파일로 식별할 수 없음👉 즉, DevTools 기준에서는 “파일이 아닌 익명 스크립트”이다. 📌 3-2. Chrome의 처리 방식 (VM 파일)브라우저는 이름 없는 스크립트를 다음과 같이 처리한다.VM123VM456👉 임시 가상 파일(VM)로 생성한다.이 때문에:Sources 탭 트리에 안 보이거나어디 코드인지 찾기 어려움브레이크포인트 유지 불가 📌 3-3. window.open + redirect 환경 영향서버 렌더링 과정에서 redirect 발생 가능캐시가 없는 상태이 경우 DevTools는:원본 리소스를 정확히 추적하지 못함파..

Frontend/javaScript 2026.04.17

자바스크립트 모듈 패턴 (IIFE, Closure)

📌 자바스크립트 모듈 패턴을 활용한 안전한 데이터 관리 전략✅ 1. 개요: 전역 변수 선언의 구조적 취약점자바스크립트에서 var 키워드를 사용해 파일 최상단에 변수를 선언하는 방식(Global Scope)은 데이터 노출과 오염에 매우 취약하다. 조회용 데이터라 할지라도 브라우저 콘솔을 통해 누구나 접근하고 수정할 수 있다면, 런타임 환경에서 데이터 무결성을 보장할 수 없다. 본 글에서는 즉시 실행 함수(IIFE)와 클로저(Closure)를 활용하여 데이터를 캡슐화하는 모듈 패턴에 대해 기술한다.✅ 2. 개념 및 패턴 기본 구조✅ 2-1. 개념즉시 실행 함수(IIFE): 함수 정의와 동시에 실행되는 패턴으로, 내부 변수가 전역 스코프에 침범하는 것을 방지한다.클로저(Closure): 함수가 선언될 당시의..

Frontend/javaScript 2026.04.10

인덱스 파편화와 해결 전략

📌 UUID PK 사용 시 필수 고려사항: 인덱스 파편화와 해결 전략 이번에 메뉴테이블의 PK를 시스템 확장성을 위해 Sequence 대신 UUID(Universally Unique Identifier)로 변경하는 작업을 진행했다.하지만 무작위 UUID는 DB 인덱스 성능을 저하 시킬 수 있기에 인덱스 파편화는 UUID PK 채택 시 고려사항 중 하나다!!인덱스 관리가 필요한 이유와 실무적인 해결책을 정리한다.📌1. 인덱스 파편화(Index Fragmentation)의 정의DB 인덱스는 '번호 순서대로 정렬된 백과사전'과 같다. 데이터를 빠르게 찾기 위해 내부적으로 일정한 정렬 상태를 유지해야 한다.Sequence(1, 2, 3...) 방식: 새 데이터가 들어오면 기존 인덱스 페이지의 맨 뒤 빈 공간..

DB/데이터 관리 2026.04.08

Functional Interface(함수형 인터페이스)

📌 1. Functional Interface(함수형 인터페이스)란?단 하나의 추상 메서드만 가지는 인터페이스를 말함. (default, static 메서드는 추가로 있어도 상관x)이 인터페이스를 사용하면 람다식(Lambda Expression)이나 메서드 참조(Method Reference)로 구현 가능.자바 8부터 도입됨.💡 즉, “하나의 기능을 표현하는 인터페이스”라고 생각하면 편함. 예시// *@FunctionalInterface = 단 하나의 추상 메서드만 가지도록 강제하는 어노테이션@FunctionalInterfacepublic interface MyFunctionalInterface { void doSomething(); // 단 하나의 추상 메서드}// 람다식으로 구현 가능:MyF..

Backend/JAVA 2026.04.07

Docker 개념 및 예제

📌 0. Docker 개념✅ 0-1. 개념Docker는 응용 프로그램과 그 의존성을 하나의 패키지로 묶어 실행할 수 있는 컨테이너 기술Docker: 가장 널리 사용하는 컨테이너 엔진컨테이너 엔진: 컨테이너를 생성하고 실행하는 소프트웨어 (컨테이너 구현 기술)컨테이너: 애플리케이션을 실행하기 위한 격리된 실행 환경 (OS커널 공유, VM보다 가볍고 빠름) *VM: OS까지 포함한 완전한 가상환경컨테이너: OS 없이 실행 환경만 격리 ✅ 0-2. 사용 이유👉 성능 때문 ❌👉 운영/관리 때문 ⭕환경 통일: 내 PC·팀원·서버 어디서든 동일한 실행 환경 보장버전 관리: 이미지로 버전을 고정하여 환경 충돌 없이 안정적인 실행 가능한 번에 실행: DB·Redis·서비스 등을 한 번에 실행하여 세팅 시간 최소화..

tool 2026.04.07

크롤링(Crawling)

🔍 1. 크롤링(Crawling)이란?웹 크롤링은 인터넷 상의 웹 페이지를 자동으로 탐색하고, 그 내용을 수집하는 기술 또는 과정! 보통 검색 엔진(예: 구글)이나 데이터 수집 봇이 사용하는 기술이다. 📌 크롤링의 기본 원리1️⃣ 크롤러(bot, spider)가 시작 URL(예: https://example.com)에 접속 2️⃣ 해당 페이지의 HTML 문서를 읽고, 내부에 있는 링크들을 수집 3️⃣ 수집한 링크를 따라가면서 다른 페이지도 탐색 4️⃣ 이 과정을 반복하면서 점점 더 많은 데이터를 수집 📌 크롤링을 사용하는 이유✅ 웹사이트의 정보를 자동으로 모으기 위해 ✅ 상품 가격, 뉴스 기사, 게시글 등을 수집해 분석하기 위해 ✅ 검색 엔진이 웹사이트를 인덱싱하기 위해 📌 크롤링 vs 스크래핑크..

python 2026.01.25