목록DEV&OPS (260)
삶 가운데 남긴 기록 AACII.TISTORY.COM
이벤트 처리는 이벤트를 전달하는 이벤트 클래스와 이벤트를 처리하는 리스너가 담당합니다.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..
자바에서 메시지 다이제스트 값을 계산하려면 MessageDigest 클래스를 사용합니다.메시지 다이제스트는 소스가 되는 이진(byte) 값에 대한 해시 값을 구하는 것입니다.해시 값도 이진(byte) 값이어서 16진수 String으로 변환해서 읽기 쉽게 변환해서 사용합니다.원본 소스가 같으면 같은 해시 값이 나오고 원본 소스가 달라지면 다른 해시 값이 나오는 특성 때문에 전자 서명이나 파일의 무결성 검증(위변조 여부 감지) 등에 사용됩니다. import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.security.MessageDigest;import java.security.NoSuchAlgorithm..
논문 출처https://arxiv.org/abs/2312.16171 Principled Instructions Are All You Need for Questioning LLaMA-1/2, GPT-3.5/4This paper introduces 26 guiding principles designed to streamline the process of querying and prompting large language models. Our goal is to simplify the underlying concepts of formulating questions for various scales of large language models, examiningarxiv.org 챗 GPT 에 프롬프트를 입력할 ..
파일 시스템 FAT32는 4G이상 파일을 사용하지 못하기 때문에 NTFS로 포멧이 되어있어야 하는데포멧없이 NTFS로 변환시킬 수 있는 명령어 convert가 윈도우에 내장되어있습니다.단, NTFS에서 FAT32로 되돌리려면 format을 해야합니다.NTFS는 NT계열 운영체제와 XP이상에서 사용할 수 있으나, 변환하면 예전 윈도우95~Me 혹은 다른 운영체제에서는 사용할 수 없습니다.만약, 변환해야할 드라이브명이 d:라면 우선 명령 프롬프트(cmd)를 관리자 모드로 실행하고, convert d:/fs:ntfs 를 실행시킵니다.c:드라이브를 변환하려면 당연히 d:부분을 c:로 바꿔 주면 됩니다.단, c:드라이브처럼 운영체제가 깔려있는 드라이브라면 재부팅중에 변환됩니다.도음말을 보시려면 convert /?..
이클립스에서는 API Level 26 이상 부터 dx.jar was not loaded from the SDK folder! 에러가 나오는 경우가 있습니다. SDK Manager으로 API 25.0.3 버전이나 24.0.3 버전을 설치 후 이클립스 프로젝트 내 project.properties 파일에 다음 추가하고 저장하면 해결 됩니다. sdk.buildtools=25.0.3
안드로이드 어플리케이션을 이클립스로 빌드 할 때 구글에서 SDK 26 이하 버전은 더 이상 업데이트를 해주지 않고 있습니다. 그래서 최소 안드로이드8.0 이상 버전으로 올려서 빌드를 해야합니다. 그런데 Unsupported class version number [52.0] (maximum 51.0, Java 1.7) 라고 나오면서 빌드가 되지 않습니다. 이 문제는 프로가드의 업데이트 문제입니다. https://sourceforge.net/projects/proguard/files/proguard/ ProGuard Java Optimizer and Obfuscator - Browse /proguard at SourceForge.netRunn is a modern resource and capacity pl..
자바 웹 프로젝트를 이클립스에서 Refactor를 통해 이름을 변경하더라도 Context root와 Deploy 이름을 자동으로 변경해주지 않습니다. 그래서! 프로젝트 이름을 변경하려면 Context root와 Deploy 이름을 수동으로 변경해주어야 합니다. Web context root는 이클립스 메뉴의project>properties>web project settings 에서 변경합니다. 프로젝트명과 deploy명이 다를 땐 해당 프로젝트 폴더를 열고.settings/org.eclipse.wst.common.component를 편집하고 이클립스를 재시작 합니다.
이클립스 속도 개선을 위한 eclipse.ini 파일 설정 정보 메모리 설정의 경우, 각 컴퓨터의 메모리 용량에 따라 설정합니다.(1~2G : 256m, 2~3G, 512m, 4G~ : 1024m 권장) 클래스 검사 생략. eclipse 실행 시간 단축Xverify:none Parallel Collector를 사용. 병렬 가비지 컬렉션.XX:+UseParallelGC 병행 mark-sweepGC 기능을 수행하여 GUI 응답 속도 처리XX:-UseConcMarkSweepGC eclipse 클래스 로딩 기본 메모리XX:PermSize=32M eclipse 클래스 로딩 최대 메모리XX:MaxPermSize=128M eclipse 실행시 잡는 최소 메모리Xms256m eclipse 실행시 잡는 최대 메모리Xmx..
허브(L1) / UTP 크로스 케이블물리 계층(Layer 1) 장비UTP 크로스 케이블은 LAN카드 사이 1:1로 연결 할 때 사용.한 포트로 신호(프레임)가 오면 다른 모든 포트로 신호를 보내기 때문에 하나의 신호가 전송되는 도중에 다른 단말에서 신호를 보내면 충돌이 일어나고 때문에 동시에 여러 신호가 오면 충돌이 자주 발생하여 느려질 수 있음.허브는 리피터(신호증폭) 기능도 가지고 있어서 UTP 의 한계치인 100m를 연장 할 수 있음. 브리지 / L2스위치데이터링크 계층(Layer 2) 장비콜루젼(충돌) 도메인을 관리하여 맥어드레스 기반으로 목적 포트로만 신호를 전송하여 충돌로 인한 속도 저하가 거의 일어나지 않음.브리지는 소프트웨어적으로 기능이 구현되었으며 포트의 한계가 10 여개 언저리인 반면 ..