전체 글 51

롤 뱅가드 오류 VAN 81

요약: 롤에서 뱅가드 오류(VAN-81)가 발생한다면, 최근 네이버 웹소설이나 e북을 보려고 e북 리더를 설치하지 않았는지 확인해보자. 만약 설치했다면 fasoo DRM과 e북 리더를 삭제해보자 며칠 전부터 리그 오브 레전드를 실행하면 "뱅가드 오류: VAN-81" 메시지와 함께 게임 클라이언트가 강제 종료되는 현상이 반복됐다. 불과 하루 이틀 전까지만 해도 아무 문제 없이 잘 되던 게임이라 당황스러웠고, 원인을 찾기 위해 하나씩 점검을 시작했다. 증상게임 실행 시 "뱅가드 오류: VAN-81" 팝업과 함께 클라이언트 강제 종료컴퓨터 재시작, 게임/뱅가드 재설치 등 공식 안내된 기본 조치로도 해결되지 않음원인으로 의심되는 것문제가 발생하기 전, 최근에 새로 설치한 프로그램을 되짚어봤다. 딱히 손댄 게 없..

카테고리 없음 2026.08.13

Spring Boot @ConfigurationProperties 사용법

Spring Boot로 개발하다 보면 application.yml에 설정값을 넣고 코드에서 읽어와야 할 일이 꽤 많다. 간단할 때는 @Value로 처리해도 괜찮지만, 설정이 조금만 늘어나도 금방 관리가 번거로워진다.이럴 때 @ConfigurationProperties를 쓰면 설정을 훨씬 깔끔하게 관리할 수 있다.@Value의 한계@Value("${mail.host}")private String host;@Value("${mail.port}")private int port;@Value("${mail.username}")private String username;처음에는 문제 없어 보이지만, 항목이 늘어나면 같은 패턴의 코드가 계속 반복된다.설정이 여러 클래스에 흩어지기 쉬움오타가 나도 컴파일 시점에 확인이..

시맨틱 버저닝을 처음 제대로 써보면서 정리한 기록

최근 패치를 준비하면서 버전을 1.1.0으로 올릴지, 1.1.1로 할지 잠깐 고민했다.습관처럼 숫자를 올려왔지만, 막상 "왜 이렇게 올리는 거지?"라고 물으면 명확하게 설명하기는 애매했다.그래서 이번 기회에 시맨틱 버저닝(Semantic Versioning) 을 기준으로 정리해봤다. 우리가 쓰는 버전 숫자에는 의미가 있다대부분의 프로젝트에서 버전은 이런 형태다.MAJOR.MINOR.PATCH처음엔 그냥 규칙처럼 보였는데, 실제로 써보니 이 세 숫자가이번 배포의 성격을 압축해서 설명하는 역할을 하고 있다는 걸 알게 됐다.PATCH — 뭔가 잘못된 걸 바로잡는 경우예를 들면 이런 작업들이다.특정 조건에서만 발생하는 오류 수정예외 처리 누락 보완로그가 안 찍히던 문제 수정기능이 새로 생긴 건 아니고,"원래 이..

[Java]if–else 가독성 개선 리팩토링 정리

코드를 작성하다 보면 특정 값에 대해서만 예외 처리를 하고, 나머지는 동일한 규칙을 적용해야 하는 경우가 자주 발생한다.대표적인 예가 아래와 같은 코드다.if (inputCommand.equals("ExampleRestart")) { ddm.setValue("COMMAND_KEY", inputCommand.trim());} else { ddm.setValue("COMMAND_KEY", inputCommand.trim().toUpperCase());}이 코드는 처음보는 사람이 어떤 이해하기는 편하고 동작 자체에는 문제가 없지만, 예외 케이스가 늘어나기 시작하면 여러 가지 단점이 드러난다.기존 if–else 구조의 문제점중복 코드 발생trim()과 같은 전처리 로직이 분기마다 반복된다.확장성 부..

[Jira]SVN은 내부망, Jira는 클라우드일 때 작업을 관리하는 방법

이 글을 쓰는 이유나같은 경우에는 회사 개발 환경을 보면 SVN은 내부 서버에서 운영되고, Jira는 클라우드 버전을 사용하는 경우가 종종 있다. 보안이나 네트워크 정책 때문에 이런 구조가 만들어지는데, 막상 일을 하다 보면 이 조합이 꽤 불편하다.보통은 Jira 이슈를 기준으로 커밋을 남기고, 커밋 로그에서 이슈를 추적하는 흐름을 기대하지만, 내부 SVN과 클라우드 Jira를 함께 쓰는 환경에서는 이런 연동이 거의 불가능하다. IntelliJ 같은 IDE에서 Jira 플러그인을 붙여 써도 기능이 제한적이거나 아예 동작하지 않는 경우도 많다.그래서 이 글에서는 Jira–SVN 자동 연동에 기대지 않고, 실무에서 문제없이 작업을 관리할 수 있는 방법을 정리해보려고 한다.현재 환경과 겪는 문제전제는 다음과 ..

개발 공통/Jira 2025.12.22

WAN, LAN, VLAN의 차이 정리

1. LAN (Local Area Network)LAN은 좁은 지역에서 사용하는 네트워크를 의미합니다. 회사, 학교, 가정 등 일정한 공간 내에서 서버, PC, 프린터 등이 서로 연결되어 통신하는 환경이 LAN입니다.보통 스위치(L2/L3) 가 LAN 트래픽을 담당하며, 사설 IP 대역(192.168.x.x, 10.x.x.x 등)을 사용합니다.PC1 (192.168.0.10)PC2 (192.168.0.20)공유기 (192.168.0.1)→ 같은 LAN 내부2. WAN (Wide Area Network)WAN은 넓은 범위의 네트워크, 즉 “인터넷”과 같은 외부 네트워크를 뜻합니다. 여러 개의 LAN을 서로 연결하여 전 세계적으로 통신할 수 있게 합니다.LAN과 WAN을 연결하는 장비는 라우터(Router)..

[Railway] Railway로 Spring Boot 프로젝트 배포하기

이번 글에서는 제가 만든 파일 확장자 차단 프로그램(FileExtensionBlocking) 을 Railway 를 이용해 배포하고, MySQL 데이터베이스까지 연동한 과정을 공유합니다. Railway는 GitHub와 손쉽게 연동해, 코드만 올리면 자동으로 빌드 → 배포까지 해주는 서버리스 배포 플랫폼입니다.1. GitHub에 프로젝트 올리기먼저 로컬에서 만든 Spring Boot 프로젝트를 GitHub에 Push합니다.git initgit remote add origin https://github.com/username/file-extension-blocking.gitgit add .git commit -m "feature: fileExtensionBlocking 초기 버전 업로드"git push ori..

[Linux] 리눅스에서 서비스 등록하기 (systemd 활용)

리눅스에서 특정 프로그램(JAR, 실행 스크립트, 바이너리 등)을 서비스로 등록하면,부팅 시 자동 실행프로세스 죽었을 때 자동 재시작systemctl start/stop/status 로 관리등이 가능해집니다. 이번 글에서는 systemd를 사용해 서비스를 등록하는 방법을 정리합니다.1. 실행 스크립트 준비먼저 실행할 프로그램을 쉘 스크립트로 감싸 두는 게 편리합니다.예: /usr/local/bin/myapp.sh#!/bin/bashexec java -jar /usr/local/myapp/myapp.jar권한 추가:chmod +x /usr/local/bin/myapp.sh 2. 서비스 유닛 파일 작성서비스 정의 파일을 /etc/systemd/system/ 경로에 작성합니다./etc/systemd/syste..

[JAVA] Log4j란 무엇인가?

Log4j는 Apache Software Foundation에서 개발한 Java 기반의 로깅 라이브러리이다. 다양한 로그 레벨(Level), 유연한 출력 포맷, 파일 및 콘솔 출력, 롤링 정책 등을 설정할 수 있어 운영 환경에서 애플리케이션 동작을 추적하거나 디버깅 용도로 광범위하게 사용된다.실제로 개발 단계에서 많이 활용한다. INFO,DEBUG,ERROR등 다양한 로그 레벨을 사용하여 코드 추적에 용이하다1. Log4j의 주요 특징다양한 로그 레벨: TRACE, DEBUG, INFO, WARN, ERROR, FATAL여러 출력 방식 지원: Console, 파일, Socket, JMS, JDBC 등롤링 로그 지원: 용량 기반 또는 시간 기반 파일 분할유연한 설정 파일: XML, JSON, YAML, p..

Java ‘import’ 인식 오류 해결하기(eclipse)

이클립스를 사용하던 중 갑자기 Import 되었던 클래스들을 인식하지 못하는 오류가 생겨 당황했던 경험이 있다.가장 쉽게 해결 했던 방법을 소개해보고자 한다.IDE 캐시/설정 꼬임이 원인 일 가능성이 높기 때문에 다음을 수행하면 된다.프로젝트 클린 & 리빌드Eclipse: Project → Clean..원하는 프로젝트 선택 후 클린클린한 프로젝트 다시 빌드