분류 전체보기 308

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

멀티 모듈 (Multi-module)이란?

msa 프로젝트 구성 중 각 시스템(서비스)에서 공통으로 필요로 하는 코드들이 많았다.이 중복을 줄이기 위해서 멀티 모듈로 관리하는 방법이 있다는 걸 알게되었다.결론적으로 내 프로젝트에는 멀티모듈 구조가 적합하지 않다고 판단해서 적용하지 않았지만, 멀티 모듈에 대해 알아본 것들을 정리했다! 🔍1. 멀티 모듈 (Multi-module)이란?멀티 모듈은 하나의 큰 프로젝트 내에서 여러 개의 모듈을 정의하는 방식.단일 애플리케이션에서 여러 모듈로 나누어 관리하는 방식MSA에서는 서비스 간의 의존성 관리나, 공통 라이브러리 등을 관리하기 위해 멀티 모듈을 사용할 수 있다.예시: common-utils라는 모듈을 만들고, 여러 서비스가 이 모듈을 의존성으로 추가하여 공통 기능(로그 처리, 유효성 검사, 예외 ..

Spring Boot DTO ↔ Entity 변환 방법

📌 왜 DTO ↔ Entity 변환이 필요한가?Entity는 DB 모델이고, DTO는 입출력·뷰 모델이기 때문.엔티티를 그대로 노출하면 보안·커플링·유효성 검증·API 스펙 분리 문제가 생기므로,DTO로 변환해서 외부와 내부를 분리하는 것이 Spring 실무 표준이다. 📌 객체 변환 3가지 방법 비교Spring Boot에서 DTO ↔ Entity 변환 시 대표적으로 아래 3가지를 비교할 수 있다. 📍 비교 기준컬렉션(List) 변환연관 관계 필드 변환 (예: User → Address 포함)타입 변환 (예: LocalDateTime → String)방법List 변환연관 관계 필드 변환타입 변환 (예: LocalDateTime → String)BeanUtils.copyProperties()❌ 수동 처..

Elasticsearch > analyzer

📌 1. settings / analysis / analyzer 개념🔍 1-1. settings란?인덱스의 구성 설정을 정의하는 영역이다.샤드 수, 리플리카 수, 분석기(analyzer) 설정 등이 포함된다.🔍 1-2. analysis란?텍스트 분석기 관련 설정 전부를 담는다.내부 구성:analyzertokenizerfilterchar_filter 🔍 1-3. analyzer란?텍스트를 쿼리 시 또는 색인 시 “어떻게 쪼개고(normalizing) 처리할지”를 정의하는 도구이다.최소 구성 요소:tokenizer (필수)filter (선택)char_filter (선택)📌 2. analyzer는 필수인가?analyzer를 반드시 설정해야 하는 것은 아니며, 기본 분석기만으로도 충분한 경우가 많다.항..

DB/데이터 관리 2026.01.25

DTO / VO / DAO / Entity / Model 비교

DTO / VO / DAO / Entity / Model은 모두 Spring에서 데이터와 관련된 객체들로, 각기 다른 역할을 한다. 헷갈리는 개념들을 한 번에 정리해보자! 😎📌🔥1. DTO / VO / DAO / Entity / Model 비교구분역할/목적특징사용하는 층(Layer)변경 가능성예시VO값 객체 (Value Object)불변 객체 (immutable)DTO, Entity와 연동 가능변경 XMoney, Point, AddressDTO데이터 전달 객체 (Data Transfer Object)계층 간 데이터 전달용Controller ↔ Service ↔ DAO변경 OUserDTO, LoginDTODAODB 접근 객체 (Data Access Object)DB 호출/쿼리 수행Repository ..