기본 콘텐츠로 건너뛰기

2월, 2020의 게시물 표시

Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드

Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드 AI 생성 이미지: Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드 Java 애플리케이션에서 로깅을 안전하게 구성하려면 SLF4J 추상화와 실제 구현체 사이의 관계를 정확히 이해해야 합니다. Logback과 Log4j2를 동시에 클래스패스에 올리면 예기치 않은 바인딩 충돌이 발생할 수 있습니다. 이 가이드는 제공된 예제 코드를 바탕으로 원인을 진단하고, 실무에서 바로 적용 가능한 해결 방법을 단계별로 안내합니다. Logback & Log4j2 충돌: SLF4J 바인딩 오류 해결 가이드의 핵심은 '하나의 로깅 구현체 선택'입니다. 1. 💥 문제 진단: 이중 바인딩 충돌 먼저 제공된 pom.xml 의존성을 확인하면 문제의 실마리가 명확해집니다. 제공된 Maven 의존성 (pom.xml) <!-- Log4j2 바인딩: SLF4J를 Log4j2로 연결 --> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.10.0</version> </dependency> <!-- Logback (자체적으로 SLF4J 구현체를 포함) --> <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3...

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)

Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) AI 생성 이미지: Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) Java 프로젝트에서 JSON을 객체로 바꾸는 일은 반복적으로 등장합니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화)는 특히 API 응답, 로그 파싱, 데이터 교환 등에서 자주 필요하며, Google의 Gson 라이브러리는 그 과정에 실무적인 해법을 제공합니다. 1. 🔑 Gson Maven 의존성 설정 프로젝트의 pom.xml 에 Gson 의존성을 추가하면 간단히 시작할 수 있습니다. Java Gson으로 JSON을 VO 객체로 변환하기 (역직렬화) 작업을 하려면 안정된 최신 버전을 사용하는 것을 권장합니다. pom.xml 의존성 <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.10.1</version> <!-- 최신 안정화 버전으로 업데이트 --> </dependency> 2. 📝 데이터 매핑을 위한 VO (Value Object) 클래스 JSON 구조와 1:1로 대응하는 Java 클래스를 설계해야 합니다. 필드 이름이 JSON 키와 일치해야 기본 매핑이 자연스럽게 동작하고, 필요한 경우 어노테이션으로 세밀하게 제어할 수 있습니다. `BaseVO.java` 클래스 import java.util.ArrayList; public class BaseVO { // JSON 키와 이름...

jQuery 숫자 입력 필터 구현 가이드

jQuery 숫자 입력 필터 구현 가이드 AI 생성 이미지: jQuery 숫자 입력 필터 구현 가이드 jQuery로 실시간 숫자 입력 검증 구현하기 웹 폼에서 입력값을 제한하면 서버에 도달하는 데이터 품질이 좋아지고, 사용자는 즉각적인 피드백을 받아 혼란을 줄일 수 있습니다. 이 글은 jQuery inputFilter 플러그인 을 활용해 다양한 형식의 입력을 실시간으로 검사하는 방법을 단계별로 설명합니다. 실무 중심의 예제와 팁을 통해 jQuery 숫자 입력 필터 구현 가이드로 바로 적용할 수 있게 구성했습니다. 1. jQuery inputFilter 기본 구현 아래 예제는 정수, 소수, 음수, 통화, 영문, 16진수 같은 흔한 입력 유형을 제어하는 inputFilter 사용 사례입니다. 각 정규표현식은 허용되는 문자 패턴만 통과시키고, 즉시 입력을 차단합니다. /** * 숫자, 소수, 음수, 통화, 영문, 16진수 입력 제한 */ $("#intTextBox").inputFilter(function(value) { return /^-?\d*$/.test(value); // 정수 }); $("#uintTextBox").inputFilter(function(value) { return /^\d*$/.test(value); // 양수 정수 }); $("#intLimitTextBox").inputFilter(function(value) { return /^\d*$/.test(value) && (value === "" || parseInt(value) 2. jQuery inputFilter 플러그인 정의 inputFilter는 입력 이벤트를 관찰해 허용되는 값만 남기고, 그렇지 않으면 이전 상태로 되돌립니다. 이 방식은 브라우저 기본 동작을 크게 변경하지 않으면서도 사용자 입력을 안전하게 제한합니다. $.fn.input...

BITMEX TESTNET recharge

BITMEX TESTNET recharge — 비트코인 테스트넷(tBTC) 파우셋 및 충전 실무 가이드 AI 생성 이미지: BITMEX TESTNET recharge 블록체인 애플리케이션과 거래소 기능을 안정적으로 개발하려면 실제 자금이 오가는 메인넷 대신 테스트넷 환경에서 검증해야 합니다. 이 문서는 테스트용 비트코인(tBTC)을 얻는 방법과 거래소 테스트 계정에 충전하는 실무 절차을 간결하고 실용적으로 정리합니다. 1. 💧 테스트넷 BTC (tBTC) 파우셋(Faucet) 목록 파우셋은 개발자에게 테스트용 코인을 무료로 제공하는 서비스입니다. 자신의 테스트넷 주소를 입력하거나 요청 버튼을 눌러 tBTC를 받을 수 있습니다. 운영 정책(일일 지급 한도, 대기 시간 등)은 서비스별로 다릅니다. 주요 tBTC 파우셋 사이트 https://coinfaucet.eu/en/btc-testnet/ https://tbtc.bitaps.com/ https://testnet-faucet.mempool.co/ 사용 팁: 파우셋은 한 계정당 지급 횟수나 일일 한도가 정해져 있습니다. 여러 파우셋을 순환해서 사용하면 테스트 자금이 부족할 때 유용합니다. 파우셋에서 받은 tBTC는 실재 화폐 가치가 없으며 오직 테스트 목적에만 사용하세요. 2. 🔄 BitMEX 테스트넷 비트코인 충전 (`bitmex testnet bit recharge`) 많은 거래소는 실제 플랫폼과 동일한 인터페이스를 가진 테스트넷을 제공합니다. BitMEX 테스트 환경에 접속해 기능...

BitMEX 실시간 데이터 WebSocket 채널 설명서 (trade, orderBookL2, margin, wallet 등)

BitMEX 실시간 데이터 WebSocket 채널 설명서 (trade, orderBookL2, margin, wallet 등) AI 생성 이미지: BitMEX 실시간 데이터 WebSocket 채널 설명서 (trade, orderBookL2, margin, wallet 등) 마진·파생 상품을 다루는 BitMEX 는 WebSocket API로 시장 데이터와 계정 정보를 실시간으로 제공합니다. 채널 이름이 영어 위주이고 종류가 많아 처음에는 혼란스럽지만, 이 문서는 BitMEX의 채널을 한눈에 파악하도록 돕습니다. BitMEX 실시간 데이터 WebSocket 채널 설명서 (trade, orderBookL2, margin, wallet 등)을 기준으로 공개 채널과 인증 채널을 구분해 설명합니다. 실전 구현에 바로 활용할 수 있게 핵심 용도와 구독 방식, 주의할 점을 간결하게 정리했습니다. 1. BitMEX WebSocket 기본 개념 BitMEX WebSocket의 접속 기본 주소는 다음과 같습니다. wss://www.bitmex.com/realtime 연결 후 subscribe 명령으로 원하는 채널을 등록합니다. 예를 들어 XBTUSD의 체결과 오더북을 받으려면: { "op": "subscribe", "args": [ "trade:XBTUSD", "orderBookL2_25:XBTUSD" ] } 많은 채널은 채널이름:심볼 형태로 심볼을 함께 지정합니다. BitMEX 실시간 데이터 WebSocket 채널 설명서 (trade, orderBookL2, margin, wallet 등)는 이 구독 패턴을 표준으로 다룹니다...

BitMEX 인증, 포지션 구독 및 JSON 데이터 처리

BitMEX 인증, 포지션 구독 및 JSON 데이터 처리 AI 생성 이미지: BitMEX 인증, 포지션 구독 및 JSON 데이터 처리 이전 글에서 WebSocket을 통한 BitMEX 인증 절차를 다뤘습니다. 이번 글에서는 인증 후 전달되는 포지션(Position) 이벤트를 Java에서 안전하게 파싱하고, 파싱한 정보를 기반으로 트레이딩 로직을 실시간으로 적용하는 방법을 심도 있게 설명합니다. BitMEX 인증, 포지션 구독 및 JSON 데이터 처리 관점에서 실무에 바로 적용 가능한 패턴을 제시합니다. 1. 🔑 인증 및 포지션 구독 (복습) 실시간 포지션을 안정적으로 처리하려면 WebSocket 연결과 서명 기반 인증이 먼저 완료되어야 합니다. 인증 이후에는 서버로부터 포지션 업데이트를 받기 위해 구독 명령을 전송합니다. 아래 예시는 인증 후 포지션 채널을 구독하는 최소한의 순서입니다. // 1. 인증 요청: authKeyExpires 전송 (API_KEY, EXPIRES, SIGNATURE 포함) // 2. 구독 요청 ws.sendText("{\"op\" : \"subscribe\" , \"args\" : [\"position:XBTUSD\"]}"); 2. 📝 수신된 포지션 JSON 데이터 구조 분석 BitMEX에서 전달되는 포지션 업데이트는 여러 필드를 포함하는 JSON 객체로 옵니다. 핵심은 상위의 table 과 action 필드이며, 실제 값은 data 배열 안에 들어 있습니다. 이 정보를 바탕으로 필요한 필드만 추출해 상태를 갱신하면 됩니다. 수신 JSON 예시 (초기 데이터 또는 업데이트) ...

실시간 금융 데이터: Java WebSocket으로 BitMEX 호가창 구독하기

실시간 금융 데이터: Java WebSocket으로 BitMEX 호가창 구독하기 AI 생성 이미지: 실시간 금융 데이터: Java WebSocket으로 BitMEX 호가창 구독하기 고빈도 트레이딩이나 실시간 시장 분석 시스템을 설계할 때, 지연 없이 스트리밍 데이터를 처리하는 능력은 핵심입니다. 이 글에서는 Java 기반의 경량 WebSocket 클라이언트인 nv-websocket-client 를 활용해 BitMEX의 호가창을 안정적으로 구독하는 방법을 단계별로 안내합니다. 실시간 금융 데이터: Java WebSocket으로 BitMEX 호가창 구독하기 관점에서 구현 예제와 주의점을 함께 다룹니다. [Image of Bitcoin trading chart] 1. 🛠️ 프로젝트 설정: 필요한 라이브러리 추가 샘플 코드는 nv-websocket-client 라이브러리를 사용합니다. Maven 기반 프로젝트라면 pom.xml 에 의존성을 추가해 주세요. 실시간 금융 데이터: Java WebSocket으로 BitMEX 호가창 구독하기 구현을 위한 최소 설정입니다. Maven Dependency (pom.xml) <dependency> <groupId>com.neovisionaries</groupId> <artifactId>nv-websocket-client</artifactId> <version>1.3</version> </dependency> 2. 🔌 WebSocket 클라이언트 구현 및 호가창 구독 다음 예제는 WebSocketFactory 로 BitMEX 스트림에 접속하고 메시지를 수신하는 리스너를 등록하는 간단한 흐름을 보여줍니...

SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리

SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 AI 생성 이미지: SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 현대의 Java / Spring 애플리케이션에서는 로그를 일관되게 수집하고 분석하는 것이 매우 중요합니다. SLF4J를 로깅 추상화 계층으로 쓰고 Log4j2를 실제 구현체로 연결하면 안정적이고 확장성 있는 로깅 체계를 구축할 수 있습니다. 또한 Log4jdbc를 함께 사용하면 JDBC 레벨에서 실행된 SQL과 바인딩 값, 실행 시간을 손쉽게 캡처할 수 있습니다. 이 문서에서는 SLF4J + Log4j2 + Log4jdbc 통합 설정 가이드: Spring/JAVA SQL 로깅 완전 정리 라는 목표로, Maven 의존성, log4j2 구성 파일, 그리고 DataSource 적용 방법을 실제 예제와 함께 단계별로 설명합니다. 운영 환경과 개발 환경 모두에서 활용할 수 있도록 실용적인 팁도 포함했습니다. 📚 목차 1. Maven 의존성 설정 (pom.xml) 2. Log4j2 설정 (log4j2.xml) 3. DataSource에 Log4jdbc 적용하기 4. 마무리 및 활용 팁 1. 📦 Maven 의존성 설정 (pom.xml) 먼저 Maven 프로젝트에 필요한 라이브러리를 추가해야 합니다. ...

xss lucy naver

xss lucy naver AI 생성 이미지: xss lucy naver Servlet 환경에서 Lucy XSS Filter로 XSS 방어 설정 웹 애플리케이션을 운영할 때 XSS(크로스 사이트 스크립트) 공격을 방어하는 일은 필수입니다. 이 글에서는 네이버가 제공하는 Lucy XSS Filter 를 Servlet 기반 애플리케이션에 적용해 입력값 기반 스크립트 삽입을 차단하는 방법을 단계별로 설명합니다. 또한 실제 적용 시 고려할 점과 예외 처리 방식을 함께 다룹니다. xss lucy naver 1. Maven 의존성 추가 ( pom.xml ) Lucy XSS Filter를 사용하려면 프로젝트의 pom.xml 에 의존성을 선언해야 합니다. 아래 의존성을 추가하면 서블릿 필터 형태로 라이브러리를 로드할 수 있습니다. <dependency> <groupId>com.navercorp.lucy</groupId> <artifactId>lucy-xss-servlet</artifactId> <version>2.0.0</version> </dependency> 2. 웹 필터 설정 ( web.xml ) 모든 요청에 대해 필터를 적용하면 클라이언트 입력값을 중앙에서 통제할 수 있습니다. 서블릿 필터로 등록하면 URL 패턴에 맞는 요청을 자동으로 검사합니다. <!-- XSS filter --> <filter> <filter-name>xssEscapeServletFilter</filter-name> <filter-class>com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter</filter-class> </filter> <filter-mapping> <f...