목록전체 글 (328)
삶 가운데 남긴 기록 AACII.TISTORY.COM
docker container도커는 컨테이너를 이용해 application을 구동하는데, 보통 가상 머신과 비교를 많이 합니다.가상머신은 호스트OS에서 게스트 OS를 설치하여 호스트로부터 완전히 분리된 가상화 환경을 구축할 수 있습니다. 도커 컨테이너는 호스트OS에서 사용중인 프로세스를 격리시키고 어플리케이션 실행에 필요한 바이너리를 묶어서 가상화합니다. 도커 컨테이너는 application과 이 application을 실행할 가상 컴퓨터가 같이 들어 있는 셈입니다. 즉, 컨테이너에는 도커가 관리하는 독립적인 가상의 리소스(메모리,디스크,IP,등)들을 가지게 되는 것입니다.컨테이너 안에서는 컨테이너 바깥의 환경에 접근할 수 없도록 고립 시켜서 관리하기 쉽게합니다. 가상 머신은 각각 가상 OS상에서 app..
Windows 10 docker 설치도커 사이트 https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | DockerDocker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux.www.docker.com에서 윈도우용 도커를 다운로드합니다.기본값으로 설치를 합니다.고래 아이콘이 나타나면 설치가 완료된 것입니다. CentOS 7 docker 설치대개 리눅스 배포판에는 도커..
1. java.net.URL 클래스java.net.URL 클래스는 네트워크상의 URL과 자원을 처리합니다.웹 페이지, 이미지, 동영상, 스크립트 등 다양한 형태의 자원을 다룰 수 있습니다.또한 URL 문자열을 객체로 표현하고 다양한 정보를 추출하는 데 사용됩니다.중요 기능URL 문자열 파싱 및 객체 생성: URL 문자열 자체를 파싱하여 객체를 생성합니다.URL 정보 추출: URL의 프로토콜, 호스트, 포트, 경로, 쿼리 문자열 등 다양한 정보를 추출할 수 있습니다.자원 접근: openConnection() 메서드를 통해 URL에 해당하는 자원에 대한 연결을 생성하고, openStream() 메서드를 통해 입력 스트림을 얻어 자원의 내용을 읽을 수 있습니다.URL 유효성 검사: toExternalForm(..
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;..