Devlopment/Java

    Java SNMP Programming

    SNMP (Simple Network Management Protocol,SNMP) 네트워크 장비를 관리 감시하기 위한 목적으로 UDP상에 정의된 응용 계층 표준 프로토콜 MIB (management information base) 장비 정보를 수집하기 위해서는 SNMP와 MIB에 대해 알아야 한다. 이것에 대해서는 다른 사이트에 설명이 잘 되어있으니 참고하길 바란다. Java에서 SNMP 프로그래밍을 하려면 SNMP4J[4]를 사용하면 된다. 그리고 Windows환경에서 테스트하기 위해서는 윈도우 > 제어판 > 기본 서비스 > SNMP를 활성화 시켜주고 컴퓨터 > 관리 > 서비스 > SNMP 서비스에서 관련 설정을 해줘야 한다. 테스트 할 때는 127.0.0.1/161로 해야 한다. 161이 SNMP ..

    Java와 C#(또는 C, C++) 통신에서 엔디안과 인코딩 처리

    C, C++, C#과 Java와 통신을 하려면 몇 가지 유의사항이 있다. 정수 타입에 대한 엔디안 처리와 인코딩을 유의해야 한다. 영문, 숫자 문자열를 주고 받을 때는 별 문제가 없지만 당연히 한글을 주고 받게 될 경우에는 utf-8이나 euc-kr로 변환을 해주어야 한다. 그리고 엔디안 처리를 유의해야 한다. C, C++, C#에서는 리틀 엔디안을 쓰지만, 자바에서는 빅 엔디안을 사용한다. C#쪽에서 빅 엔디안으로 바꿔주거나, 자바에서 리틀 엔디안으로 바꿔주면 되는데 나는 자바에서 바꾸는 쪽이 좋다고 본다. Java에서 리틀 엔디안 빅 엔디안 처리 public class Endian{ public static byte[] getLittleEndian(int v){ byte[] buf = new byte..

    JSON 에러 - Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException

    JSON-LIB를 가져다 쓰는데 다음과 같은 예외가 발생하였다. Exception 내용 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException 황당했다. 내가 JSON 문법을 잘못 쓴지 알고 찾다가 뭔가 이상해짐을 알고 json-lib 공식 홈페이지에 있는 예제를 실행해보았다. 똑같은 예외가 발생하였다. 하하하하. 가만보니 예외 내용이 NoClassDefFoundError이다. 클래스를 왜 찾을 수 없을까? 설마 json-lib가 문제있는 라이브러리를 배포했을까? 그건 아니지만 json-lib 내부에서는 다른 라이브러리를 사용하고 있다. 그래서 jso..

    Java 로그 기록 라이브러리 - Log4j

    기존에 Java 로그를 남기면서 때로는 그냥 남기기도, log4j를 사용하기도, 직접 로그 클래스를 만들어서 활용하기도 했는데 log4j가 제일 좋은 것 같고, 기술서나 전문가들이 모두 log4j를 추천한다. 오픈 소스 프로젝트로서 알고 있던 것보다 그 내부 기능이 어마어마하다. * 라이브러리 및 설정파일 라이브러리는 자바 프로젝트의 라이브러리 경로에, log4j.properties는 소스위치에 있으면 컴파일 및 실행시 클래스 파일에도 복사되어 실행된다. Reference [1] log4j (http://logging.apache.org/log4j/1.2/download.html) [2] log4j download (http://logging.apache.org/log4j/1.2/download.html..

    String vs StringBuffer

    어쩌다 보게 되었는데 기본적이지만 너무 중요한 내용이다. 그간 있던 오해가 풀렸다. Reference [1] String vs StrinvBuffer - http://youngrok.com/wiki/wiki.php/StringVsStringBuffer

    Aptana 플러그인

    Aptana 플러그인

    Aptana 쪽에서 만든 플러그인 하이브리드와 연관하여 자바스크립트 코딩에 도움이 됨 http://download.aptana.org/tools/studio/plugin/install/studio [그림 1] Aptana 설치 후 뜨는 창 설치 하면 그림 1과 같은 화면이 뜨고 그림2의 버튼이 추가된다. 그림 2의 첫 번째 버튼을 누르면 그림3이 뜨는데, 추가적인 자바스크립트 라이브러리를 편리하게 설치할 수 있다. 그리고 그림4와 같이 필요한 라이브러리를 추가적으로 체크해주자. [그림 2] Aptana 설치 후 추가되는 버튼 [그림 3] Install new Additional Features [그림 4] Window->Preferense 설정 화면 * 이클립스 실행 웹 브라우저에 기타 브라우저 등록 [..

    싱글톤 패턴(Singleton Pattern)

    자바 개발을 하면서 제일 많이 쓰는 패턴 중 하나가 싱글톤 패턴이다. 그리고 싱글톤 소스 또한 다양하게 작성한다. Source2와 같은 경우는 다중 쓰레드 상에서 위험하다. Source3과 같은 경우는 안전하긴 하지만 성능상 Source1이 제일 좋다. Source4와 같은 경우는 싱글톤에서 직렬화 처리를 해주기 위한 방법이다. Serializable 을 구현해주고 readResolve메소드를 구현하고 모든 인스턴스 필드를 transient 로 선언해준다. Source5와 같은 경우는 enum을 통한 구현 방법이다. 직렬화가 자동으로 지원되고 인스턴스가 여러개 생기지 않도록 지원해준다. public class Singleton { private static final Singleton instance =..

    JavaHL (JNI) Not Available

    JavaHL (JNI) Not Available

    http://www.sliksvn.com/en/download 자바에서 Subversion이 안되서 한참 애를 먹었는데 블로그 열심히 찾아보다가 해답을 얻었다. 이 [1] 블로그에서 설명이 잘 나와있다. 그렇다!! 결국은 또 64비트가 문제였던것이다. 우라질.... [2]에 가서 64비트 라이브러리를 설치해주면 됀다. 이클립스상에서 라이브러리 로드에 문제가 생기면 다음과 같은 창을 뛰운다. 주의깊게 보지 않고 지나쳤던게 문제다. 경고창의 url을 누르면 [3]으로 연결됀다. 그런데 문제는 나는 [2]에서 다운받고 설치를 했는데도 불구하고 여전히 "JavaHL (JNI) Not Available"상태였다.!!! 아 열받는다. 미치는지 알았다. 원래 subversion에서 자동으로 라이브러리 위치를 검색해서..

    Builder Pattern

    이건 Effctive Java[1]에서 "항목 2. 생성자의 매개변수가 많을 때는 빌더(builder)를 고려하자"를 공부하고 작성하였습니다. 객체를 생성할 때, 텔리스코핑 생성자 패턴과 자비빈즈 패턴은 자주 사용하지만 빌더 패턴은 처음 알게 되었네요. 이런 형태로 객체 생성을 설계할 수 있구나하고 배우게 되었습니다. 텔리스코핑 생성자 패턴(Telescoping constructor) 필수 매개변수들만 갖는 생성자, 필수 매개변수들만 선택 매개변수 하나를 갖는 생성자, 필수 매개변수들과 선택 매개변수 두개를 갖는 생성자 등의 형태로 모든 매개변수를 생성자가 가질 수 있도록 여러 개의 생성자를 만드는 것 -단점 매개변수들의 수가 증가하면 무척 번거로워진다. 자바빈즈 패턴(JavaBeans Pattern) ..

    달팽이 & 피보나치 수열 구현

    n개의 수를 받아서 달팽이 형태로 출력하는 방법. 문득 이전에 로직이 생각나지 않은게 기억나서 만들었다. 나는 컴퓨터 앞에서 해야 로직이 생각난다. 망할;; Source1은 달팽이, Source2는 피보나치 수열 재귀함수. 달팽이 피보나치같은 경우는 참 간단한데, 달팽이 같은 경우는 의외로 많이 시행착오를 겪었다. 수열 형태를 그려보고 x,y좌표에 따라서 계산해서 하려다가 점점 복잡해지고, 홀수, 짝수에 따른 오차까지 생각해야하나하고 머리가 복잡했는데 갑자기 간단히 풀려버렸다. 난 정말 시행착오 겪으면서 프로그래밍 하는게 제일 좋은것 같다. 1. 달팽이와 같은 형태로 배열을 이동하며 값을 입력한다. 2. 이동시 최대값이나 최소값을 넘기지 않으면서 다음값이 0이면 이동하고 아니면 방향을 바꾼다. publi..