목록분류 전체보기 (326)
삶 가운데 남긴 기록 AACII.TISTORY.COM
1. JRE 런타임 실행 옵션자바 application을 실행할 때 JRE 실행 옵션으로 변수 값을 지정할 수 있습니다.-DmyVariable=변수 값이런 식으로 지정 할 수 있는데 System.getProperty("myVariable");같이 System.getProperty()를 이용하여 실행 중인 application 내에서 해당 변수 값을 읽어서 언제든 사용할 수 있습니다.이 변수 값을 다시 설정하려면 System.setProperty("myVariable", "value");이런 식으로 실행 중에 setProperty(key, value)으로 변수 값을 변경할 수도 있습니다.예를 들어 아래 Application이 runnable jar로 MainEx.jar 라고 빌드 되었다고 가정하고java ..
1. Ubuntu 서버 다운로드https://ubuntu.com/download/server https://ubuntu.com/download/server ubuntu.com2. 네트워크 연결우분투 설치에는 큰 어려움이 없겠지만, DHCP가 아닌 Manual로 고정 IP로 설정을 할 때 주의할 점이 있습니다.네트워크 관리자에게 받은 네트워크 설정 정보는 아래와 같다고 가정하겠습니다.SUBNET: 255.255.255.0Address: 192.168.2.60 GATEWAY: 192.168.2.1Name servers: 8.8.8.8우분투를 설치할 때 위와 같이 설정하면 빨간 글씨로 안된다고 나옵니다.결론적으로 말하면 아래처럼 CIDR 표기법으로 설정해야 합니다. SUBNET: 192.168.2.0/24..
# Jasypt(Java Simplified Encryption)Jasypt는 자바 애플리케이션에서 간단한 암호화/복호화를 수행하기 위한 라이브러리입니다.주로 프로퍼티파일이나 xml 등 설정 파일의 계정 정보 같은 문자열 데이터를 암호화/복호화하는 데 사용합니다.내부적으로 양방향 암호화와 단방향(Hash) 암호화를 조합하여 비교적 높은 수준의 암호화/복호화를 간편하게 사용할 수 있습니다.암호화키를 안전하게 저장하고 노출되지 않도록 주의해야 합니다.텍스트와 바이너리 모두 암호화/복호화 할 수 있습니다.Spring Security와도 연동 가능하며 멀티 스레드로부터 안전합니다. # 의존성 추가여기서는 1.9.3 버전 기준으로 합니다.maven의 경우 org.jasypt jasypt 1.9.3..
Visitor 패턴개요 및 장점Visitor 패턴은 형태가 거의 변경되지 않는 객체(데이터 구조)에서 처리 로직이 자주 변경되는 경우, 객체들의 구조와 알고리즘을 분리하여 적용할 수 있게 해 줍니다. 이 패턴은 객체의 클래스에서 알고리즘을 분리하여 새로운 알고리즘을 추가하거나 수정할 때 기존 코드를 수정하지 않고도 가능하게 합니다. Visitor 패턴은 새로운 기능을 추가하기 위해 기존 객체 구조를 변경할 필요 없이 새로운 방문자 클래스를 추가하면 됩니다.객체 구조에 대한 다양한 작업을 별도의 방문자 클래스로 분리하여 객체 구조와 방문자 클래스 사이의 결합도를 낮춰 코드 유지 관리를 용이하게 합니다. Visitor 패턴의 활용컴파일러: 소스 코드를 분석하고 변환하는 과정에서 방문자 패턴을 사용하여 각 문..
FATAL: Peer authentication failed for user "..."1. 리눅스(CentOS)에서 postgresql 14를 설치2. 리눅스의 유저이자 슈퍼 유저인 postgres 계정 생성 3. psql이나 DBever등 툴 혹은 Web Application에서 접속4. database는 postgres라는 이름으로 생성, 스키마, 권한, Role 설정5. 일반 DBMS 유저(예: scott)를 생성하고 접속 시도 위와 같은 상황에서치명적오류: 사용자 "scott"의 password 인증을 실패했습니다.혹은치명적오류: 사용자 "scott"의 peer 인증에 실패했습니다.postgresql 접속시도시 위와 같은 오류가 발생하는 상황에서의 대처했던 경험에 대해 포스팅하겠습니다.유저 sco..
MyBatisMybatis는 내부적으로 JDBC를 이용해서 preparedStatement 실행시키는 방식으로 구동되는 프레임워크입니다.매퍼 xml 파일에 SQL문을 작성하고 관리하기 때문에 자바 소스에서 SQL문을 작성할 필요가 없어서 SQL을 수정했을 때 프로젝트를 다시 빌드를 할 필요가 없습니다.리소스 생성과 해제, try-catch 등 JDBC를 사용할 때의 반복 작업을 줄여줍니다.SQL를 직접 작성하기 때문에 ORM(JPA) 방식보다 SQL쿼리를 튜닝하는 등 복잡한 쿼리를 다룰 때 더 적합합니다. MyBatis 구조설정 파일(mybatis-config.xml): 데이터 베이스 설정과 트랜잭션 등 동작 규칙을 정의하는 파일입니다.매퍼 xml 파일: SQL 구문을 정의하고 namespace와 id..
popup은 차단이 기본 값popup은 보안 문제가 있어서 대부분의 브라우저에서 차단하는 것이 기본 값으로 되어있습니다.그렇지만 web application을 만들다 보면 popup 기능이 필요할 때가 있습니다.popup 윈도우의 대안으로 iframe, modal, overlay 등을 생각해 볼 수 있습니다. IFRAMEiframe의 경우에도 popup고 마찬가지로 보안 문제 때문에, 정책상으로 https으로만 접근이 가능하도록 하는 것이 일반적입니다.https으로 서버를 구축하려면 CA(인증 기관)으로부터 발급된 SSL 인증서가 필요합니다. 인터넷과 단절된 폐쇄된 내부 인트라넷 환경에서 HTTPS를 사용할 때는 내부 CA와 자체 서명 인증서를 이용해서 https를 구축할 수 있습니다.내부 CA(인증 ..
싱글톤 패턴: 하나의 인스턴스만 사용하기 위한 디자인 패턴, 스레드 풀링, 커넥션 풀링 등에서 주로 사용합니다. 인스턴스를 생성할 때 참조 변수를 private static으로 합니다. 생성자를 private로 한다. 이는 외부에서 new로 인스턴스를 생성하지 못하게 합니다. 인스턴스를 리턴하는 public static getInstance() 메서드를 제공합니다. 이 메서드 내부에서 인스턴스를 생성할 때 null 체크 후 생성해서 인스턴스를 리턴 해야 합니다. 멀티스레드 환경에서는 위 getInstance메서드를 synchronized 해야 안전합니다. 하지만 전반적인 성능 저하 때문에 일반적으로 아래와 같은 패턴으로 코딩합니다. 싱글톤패턴1 public class InitializationOnDema..
도스박스(DOSBox)는 윈도우나 리눅스 환경에서 예전 도스 운영체제를 가상으로 구현 시켜주는 프로그램입니다. 그래서 예전 도스 시절 게임과 프로그램들을 실행 시킬 수 가 있는데 자세한 사용법은 INTRO(도스박스명령어)나 HELP(도스 운영체제 명령어)를 치고 엔터를 입력하면 설명이 나옵니다. 도스박스는 프리웨어로 소스 코드까지 공개되어있습니다. 도스박스 공식 홈페이지나 다음 카페에서 최신버전을 구할 수 있습니다. 링크된 파일은 윈도우용(32bit,64bit) 설치 파일입니다. 여기서는 도스용 프린세스메이커2를 실행해 보면서 도스박스의 기본적인 사용법을 알아보도록 하겠습니다. 도스박스를 실행시키면 위와 비슷한 화면이 보입니다. Z:\>SET BLASTER=A220 I7 D1 H5 T6 이 부분은 도스게..
도스판 기준 1999점 득점 공략은 여왕+왕자와의 결혼입니다. 무사 수행과 세이브-로드 노가다가 필요한 공략이라 실제 플레이 시간이 오래 걸립니다. 모성 수치가 게임상에서 표시 안되어서 에디터로만 확인 가능합니다. 모성을 올릴 경우 가정교사 보모로 올려야 하는데 이 공략에서는 모성 점수는 제외하도록 하겠습니다. 모성이 0점이어도 1999점은 달성됩니다. 생일9월 30일~10월 10월에 수확제가 있어서 다음 수확제까지 시간이 제일 여유가 있습니다. 그리고 운명의 날이 11월로 밀리기 때문에 10월 생일을 추천합니다. 이 공략에서는 10월 24일 생일 기준으로 합니다. 키초기 수치가 중요하므로 큰 키를 원하면 초기 키를 150 이상이 나올 때까지 다시 시작합니다.고양의 눈으로 캣시 이벤트를 이용할 수도 ..
windows10 에서는 종종 네트워크에서 내 PC 포함 네트워크 상의 PC들이 검색이 되지 않을 때가 있습니다. 여러 가지 원인이 있을 수 있겠지만 폴더 공유를 켜 놓고, 작업 그룹도 등록하고, 네트워크도 연결되어 있고, 방화벽도 점검하고, 등등.... 많은 세팅들을 뒤적거렸지만 알 수 없었습니다. 결국 문제의 원인을 찾았는데 windows10에서는 아래의 서비스가 수동이어서 검색이 되지 않았던 것입니다. >제어판>관리도구>서비스>Function Discovery Resource Publication 이 서비스를 수동에서 자동으로 바꾸고 서비스를 시작하니 예전처럼 네트워크에 해당 PC가 검색됩니다.
자바로 파일을 다루다 보면 파일 이름으로 금지된 문자들을 걸러낼 필요가 있습니다. 그래서 만들어 봤습니다. 제가 쓰려고요. //파일명으로 금지된 문자들을 검사 public static boolean isContainsForbiddenChar(String input) { // 금지된 문자들 배열 char[] forbiddenChars = { '/', '\\', '*', '"', '', '|' }; // 입력 문자열에 금지된 문자가 포함되어 있는지 검사 for (char forbiddenChar : forbiddenChars) { if (input.contains(String.valueOf(forbiddenChar))) { return true; } } // 금지된 문자가 없는 경우 return false;..
Thread dump는 언제 해야 하는 가? 1. Java 어플리케이션이 Hang 상태가 될 때 Hang 상태는 Java 어플리케이션의 Thread들이 멈춰있는 상황입니다. Shared Resource의 접근할 경우 다른 Thread가 사용할 수 없도록 Lock을 획득하며, 또한 이러한 Lock을 다른 Thread들이 이미 획득하고 있을 경우, Lock을 획득하기 위해 대기하게 됩니다. Java에서의 Lock은 내부 Monitor를 통해 관리되기 때문에 Monitor 획득이 Lock 획득을 의미합니다. 이렇게 Lock을 획득하기 위해 대기하는 Thread들이 많아지고, 대기 시간이 길어지면 Hang 인것처럼 보여지게 됩니다. Java 프로그램에서 Lock을 획득하기 위해서는 Synchronized구문을 ..
com.google.zxing 라이브러리 아래는 Zxing Core 3.5.x 버전을 기반으로 한 예제입니다. maven이나 gradle 등을 통해 라이브러리를 프로젝트에 추가할 수 있습니다. 다만 너무 최근 버전보다 안정화된 버전을 사용하는 것을 권장드립니다. 이 zxing 라이브러리는 String을 QR 코드로, 다시 QR코드를 String으로 복원할 수 있습니다. QR 코드 스펙상 문자열의 길이의 제한이 있을 수 있습니다. 인코딩 방식이나 오류 레벨 설정 라이브러리 종류나 버전 등에 따라 차이가 있을 수 있지만 수백 글자에서 수천 자까지만 가능합니다. 따라서 긴 문자열은 QR코드를 여러개로 분할하여 변환해야 합니다. 아래 예제는 긴 문자열을 1000 글자로 나누어서 QR 코드로 변환 후 다시 Str..
Westwood에서 만든 고전 게임 DUNE2000입니다. 듄은 프랭크 허버트의 SF 소설을 원작으로 하고 있습니다. 듄은 스타워즈나 스타크래프트, 바람 계곡의 나우시카 등 스페이스 오페라 장르에 많은 영향을 끼친 고전 작품입니다. 영화로 1984년에도 제작되었고 2021년 드뉘 빌뇌브 감독, 티모시 샬라메 주연으로 새로 제작되어 개봉했습니다. DUNE2000은 RTS(리얼 타임 시뮬레이션) 게임 장르를 개척한 작품인 dune2를 윈도 95용으로 리메이크한 버전입니다. 배경 설정 서기 1만6천년 즈음 발생한 버틀레리안 지하드(종교적 성향이 강한 반기계 운동) 때문에 기계 문명이 쇠퇴하고 정치는 중세 귀족 문명으로 퇴행했습니다. 대신 인간 컴퓨터라 불리는 멘타트와 인간의 초능력을 이용한 우주 항행 기법이 ..