목록전체 글 (325)
삶 가운데 남긴 기록 AACII.TISTORY.COM
POI 라이브러리 임시 파일 저장 경로 지정자바로 오피스(엑셀) 파일을 다룰 때 흔히 사용하는 org.ahache.poi 라이브러리를 사용할 때, 엑셀 파일 작성을 위한 데이터와 스타일 정보들이 정의된 xml 형식의 임시 파일들이 생성되게 됩니다.이 임시 파일들이 생성되는 경로는 기본적으로 시스템의 임시 디렉토리 경로를 사용합니다.그런데 리눅스에서는 기본 임시 파티션인 /tmp 을 사용하게 되는데, 이 /tmp 파티션이 용량이 부족한 경우가 발생할 수 있습니다.public class TempDirCheck { public static void main(String[] args) { String tempDir = System.getProperty("java.io.tmpdir"); ..
자바 SWT/JFace 를 이용한 GUI 애플리케이션에서 실행중인 PC의 파일(텍스트)을 읽을 수 있는 파일 열기 대화 상자의 간단한 사용법에 대해 알아보겠습니다.import org.eclipse.swt.SWT;import org.eclipse.swt.layout.FillLayout;import org.eclipse.swt.widgets.*;import org.eclipse.jface.window.ApplicationWindow;import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class TextFileReaderApp extends ApplicationWindow { public Text..
SWT Text 위젯org.eclipse.swt.widgets.Text 위젯은 간단한 텍스트를 입력받을 때 사용하는 위젯입니다.addModifyListener() : 텍스트를 수정했음을 알리기 위한 리스너를 추가addSelectionListener() : 컨트롤이 선택되었음을 알리기 위한 리스너를 추가addVerifyListener() : 텍스트에 변화가 일어났는지 검증하기 위한 리스너를 추가append() : 현 텍스트에 주어진 문자열을 추가insert() : 현 텍스트를 주어진 문자열로 대체copy(), cut(), paste() : 선택된 문자들을 클립보드로 옮기거나 클립보드의 내용으로 대체setSelection(), selectAll() : 코드 상에서 직접 선택 영역을 설정setEchoChara..
이벤트 처리는 이벤트를 전달하는 이벤트 클래스와 이벤트를 처리하는 리스너가 담당합니다.JFace는 이런 이벤트 처리를 간단하게 해줍니다. SWT 에서 이벤트 처리SWT는 운영체제의 이벤트 큐를 사용합니다.Application의 Display클래스는 해당 큐의 내용을 정렬하는데 readAndDispatch()와 msg 필드를 사용합니다.msg필드는 운영체제의 메시지 큐에 대한 핸들로 동작합니다.해당 이벤트를 최상위 Shell 객체로 보내고 Shell객체는 어떤 위젯이 해당 이벤트를 받을지 결정합니다.Shell은 해당 위젯으로 이벤트를 보내고 해당 위젯은 이 정보를 리스너 라는 인터페이스로 전달합니다.그러면 리스너는 이벤트 핸들러를 호출해 이벤트에 필요한 동작을 수행합니다. Adapter 클래스Adapter..
Composite 클래스컨테이너 위젯은 GUI의 배경 구조를 구성하고 모듈식 코드를 제공합니다.여러 composite 객체가 다른 composte 객체에 결합될 수 있습니다. Composite 클래스의 메소드getChildren() : Control 객체의 배열을 반환getLayout() : composite에 연결한 레이아웃을 반환setLayout(Layout) : composite에 연결할 레이아웃을 설정getTabList() : 탭 순서에 따른 Control 객체의 배열을 반환setTabList(Control[]) : Composite의 위젯들의 탭 순서를 설정 Composite 클래스는 Scrollable 클래스의 하위 클래스 입니다.그래서 모든 Composite 클래스는 스크롤바를 가질 수 있습..
Widget 클래스모든 위젯들의 상위 클래스 입니다. 그러나 위젯을 상속받거나 코드에서 바로 사용하면 안됩니다.하나의 구조로 모든 위젯들을 단일화 하기 위함이기 때문입니다.setData(String Object) : 위젯에 객체를 붙임. 문자열로 접근 가능.getData(String) : 위젯에서 문자열에 대응하는 데이터와 관련된 객체를 반환getStyle() : 위젯의 스타일에 해당하는 정수를 반환getDisplay() : 위젯과 관련된 Display 객체를 반환toString() : 위젯 클래스를 표현하는 문자열 반환dispose() : 위젯과 위젯 자원에 대한 할당을 해제.isDisposed() : 위젯의 할당을 해제했는지에대한 boolean 값 반환 Control 클래스Control클래스의 객체들..
모델 기반 어댑터JFace는 SWT 위젯을 좀 더 쉽게 다룰 수 있도록 헬퍼 클래스들을 지원하는데 이들을 모델 기반 어댑터라고 부릅니다. 어댑터의 종류뷰어 : 위젯의 모양과 정보를 구별. 가장 많이 사용.액션과 컨트리뷰션 : 이벤트 처리 절차를 간단하게 만들고 조직화이미지와 폰트 레지스트리 : 폰트와 이미지의 할당과 해제를 관리대화상자와 마법사 : 사용자와의 상호작용을 위해 SWT Dialog의 기능을 확장 HelloSWT_JFace 예제이 예제는 순수 SWT 예제와 비슷하지만 구조가 다릅니다.import org.eclipse.jface.window.ApplicationWindow;import org.eclipse.swt.SWT;import org.eclipse.swt.widgets.Composite;..
Display classDisplay 클래스가 외관을 보여주는 역할을 하지는 않지만 GUI 자원을 관리하고 운영체제와 소통을 담당합니다.코드에 있는 SWT/JFace 명령들을 운영체제에 호환되도록 바꾸어 전달하는 일을 합니다. 주요 메소드Display() : 플랫폼 자원을 할당하고 Display 객체를 생성.getCurrent() : 사용자 인터페이스 스레드를 반환.readAndDispatch() : Display 객체가 이벤트를 해석해서 리스너로 넘겨 줌.sleep() : Display 객체가 이벤트를 기다림. Shell classShell 클래스의 인스턴스는 위젯, 이벤트들과 연동하며, 시각적인 부분을 구현합니다.운영체제에 접근하기는 하지만 윈도우 열기, 활성화, 최대화, 윈도우 닫기를 추적할 때만 ..
윈도우즈 환경에서 이클립스 플러그인 SWT/JFace 개발을 위한 환경 설정을 해보겠습니다. JDK 설치여기서는 JDK11 을 기준으로 합니다. 다운로드 및 설치는 OpenJDK나 오라클에서 하시면 됩니다.https://openjdk.org/ OpenJDKLearn about the key active Projects in the Community including Amber (high-productivity language features), Loom (lightweight concurrency), Panama (foreign functions and foreign data), Valhalla (primitive types and specialized generics), and, of course, t..
원격 브랜치 로컬로 가져오기(fetch)1. 원격 저장소(orign)의 모든 원격 브랜치를 로컬로 가져옴git fetch origin 2. 체크아웃 할 수 있는 브랜치 목록 확인git branch -a브랜치 목록 중에서 원격 브랜치에는 remotes/origin 접두사가 붙어 있습니다. 로컬 브랜치를 분리 생성 후 원격 브랜치에 적용1. 분리하려는 원본 브랜치를 checkout합니다.git checkout 분리하려는브랜치이름 2. 로컬 저장소에 분리하려는 새로운 브랜치를 생성합니다.git checkout -b 분리생성할브랜치이름 3. 원격 저장소에 새 브랜치를 push해 줍니다.git push origin 로컬에분리생성된브랜치이름 원격 브랜치 업데이트1. 원격 저장소의 브랜치들을 갱신git remo..
자바에서 메시지 다이제스트 값을 계산하려면 MessageDigest 클래스를 사용합니다.메시지 다이제스트는 소스가 되는 이진(byte)값에 대한 해시 값을 구하는 것입니다.해시 값도 이진(byte) 값이어서 16진수 String으로 변환해서 읽기 쉽게 변환해서 사용합니다.원본 소스가 같으면 같은 해시 값이 나오고 원본 소스가 달라지면 다른 해시 값이 나오는 특성 때문에 전자 서명이나 파일의 무결성 검증(위변조 여부 감지) 등에 사용됩니다. import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithmE..
학문별 지도 복사, 랭작https://www.inven.co.kr/board/dho/495/130192#csidxb593ef2d5bc04beb95a67ef1f60e716 학문랭작, 자따랭작, 조사랭작 방법 소개학문,조사,자물쇠따기 스킬들을 연성만랭 찍었습니다.(전문스킬까지)마지막으로 올린 생태조사만 스샷 올렸습니다. 다른 스킬들은 생략 ^^연성 올클까지 남은 스킬 (일반스킬은 올클했습니다.)www.inven.co.kr 호칭 퀘스트 정리https://www.inven.co.kr/board/dho/498/14936 대항해시대 시대 호칭 퀘스트 정리 No.2대항해시대 시대 호칭 퀘스트 정리 No.2 일단 들어가기전 설명을 해드리겠습니다. 초록색 네모 박스 : 생물학파란색 네모 박스 : 미술 하늘색 테두리 져있..
선행 퀘스트https://www.ssjoy.org/dho/quest/505667 DHO - 퀘스트 - [퀘스트] 전설의 왕의 땅공략 1. 런던 모험가조합, 모험가 조합 마스터와 대화 2. 런던 모험가조합, 안쪽 길드 사무원과 대화 3. 옥스포드, 교수와 대화 4. 세비야 주점, 모험가풍 남자 또는 단골 손님과 대화 5. 간디아, 항www.ssjoy.org필요 스킬: 영어, 고고학 연속 퀘스트https://www.ssjoy.org/dho/quest/704657 DHO - 퀘스트 - [퀘스트] 이집트와 아틀란티스진행 1. 런던 모험가조합 - 의뢰 계속 익명의 의뢰자에게서 온「환상의 대륙」을 찾는다는 일을 계속 맡기로 했다. 이번에는 「이집트와 환상의 대륙의 관계」라는 전언이 붙어있었지. 그것을www.ssjo..
대항해시대 온라인을 하다보면 부관 선택은 많은 고민이 따릅니다.상인/모험 부관의 경우 초반에는 유용하지만 스킬랭이 충분히 오르면 약간 쓸모없어지는 경향이 있습니다.그래서 언어부관, 창당부관, 항해부관, 백병(수탈)부관, 조선부관, 탄방어부관, 던전부관, 대인전용부관 정도만이 장기적으로 유용한 부관이라고 생각합니다.언어부관의 경우도 세계언어해설서의 존재 때문에 필요성이 떨어집니다.시간이 흐르면서 여러 업데이트를 거치고 근래에는 부관의 고유 스킬이 중요해지게 되었습니다. 부관 육성https://www.inven.co.kr/board/dho/498/20665 [부관] 120SS 부관 효율적으로 육성하기!안녕하세요~오랜만에 팁글을 남깁니다. 한 4년만인듯 합니다. 현생이 바빠서....2024년 3월 21일 한섭..
입항허가명성 3만까지 올리면 기본 해역은 다 열립니다.올리는 방법은 육메/남만품 끊어 팔기(지인찬스) or 항구 발견 후 보고 하기로 올리시면 됩니다. 칙명중남미 동해안 -> 동남아시아 -> 중남미 서해안(2) -> 파나마 운하(3) -> 수에즈 운하 -> 동아시아(4)카리브&인도(1) -> 대여금고 5칸 증가중남미 서해안(2) -> 대여금고 5칸 증가파나마 운하(3) -> 대여금고 5칸 증가동아시아(4) -> 아파트 대기부관 1명 증가 해역조사해역조사를 통한 입항허가는 반드시 암스테르담의 메르카토르를 통해서만 가능합니다.1)극북대서양 -> 유럽 극북 -> 유라시아 북쪽 -> 유라시아 극동 -> 베링해 -> 그린란드2)동아시아+북해 해역조사 -> 북미 서해안3)그린란드 + 북미 서해안 -> 동캐나다 ->..