분류 전체보기

    서버 접속이 공인ip로는 되나 사설 ip로는 안될 경우

    기이한 현상을 발견하였다. 공인 IP로 설정되어진 하나의 서버에 공인 IP로 접속을 하면 가능하나 사설 ip로는 접속이 불가능한 경우가 생겼다. 이유를 알 수가 없었다. 방화벽 문제도 아니였고, IP 필터링을 하거나 포트가 막혀있는 경우가 아니었다. 다른 대리와 고민하고 있다가 기술이사님에게 문의를 했다. 사실 이사님이라고 뾰족한 수가 있겠냐 싶었지만 문제가 생겼으니 문제점에 대해 보고를 드렸다. 이사님이 잠시 확인을 해보시더니 신기한 경우라고 잠시 생각에 잠기셨다. 그리고 공인 IP를 다른 걸로 바꿔보라고 하셨다. 그런데. 그런데. 그런데. 됀다...!!!!!! 공인 IP를 다른걸로 바꾸니가 됀다. 뭐 이런 경우가 다 있나 싶은데, 정확한 이유를 알아내지 못했지만 해결되었다. 이사님에게 어떻게 알았냐고..

    XmlGenerator - Java에서 XML 생성

    프로젝트 도중에 XML 파싱 및 생성을 해야 할 일이 생겼다. 하드 코딩하기에는 별로 마음에 안 들고 쓰기 편하게 생성해주는 클래스를 하나 만들었다. Dom방식으로 하며, String으로 값을 받아서 해당하는 엘리먼트에 엘리먼트나 속성을 추가하는 형태이다. 최종 산출을 창에 뿌리거나 파일로 뽑아내게 해놓았다. package com.galimit.gwf.plugin; import java.io.File; import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationExc..

    JAVA.LANG.CLASS를 통한 동적 객체 생성

    간혹 오픈소스의 라이브러리라든지 다른 애플리케이션의 소스를 살펴볼 때, 예를 들어 JDBC와 연관해서 볼 때 A.class를 파라미터로 넘기는 형태를 본 적이 있을 것이다. 또는 Class.forName()을 통하여 클래스의 이름을 넘기기도 한다. 이러한 것은 java.lang.class를 살펴보면 알 수 있게 됀다. Example) class B { B(String str, int n) { System.out.println(str + ":" + n); } } public static void main(String args[]) throws Exception { B.class.getDeclaredConstructor(String.class, int.class).newInstance("a", 5); Cla..

    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..

    COCOS2D-X 윈도우에서 신규 솔루션으로 만들기

    COCOS2D-X 솔루션에서 프로젝트를 만들면 빌드하기 편하지만, 신규 솔루션에서 하려면 어떻게 해야 할까? 우선 COCOS2D-X WIN32 프로젝트를 생성하자. 프로젝트명은 Game으로 생성해서 D:\에 생성했다고 하자. 1. 소스 파일 cocos2d-1.0.1-x-0.11.0에 있는 프로젝트 중에서 쓴 프로젝트들을 폴더채로 D:Game에 복사한다. 2. LIB 파일 쓴 Lib 파일들을 D:\Game\Game에 복사한다. 3. DLL 파일 쓴 DLL 파일들을 D:\Game\Debug.win32에 복사한다. Reference [1] http://www.iphonedevsdk.com/forum/iphone-sdk-tutorials/78980-cocos2d-x-win32-install-deploy-tuto..

    COCOS2D-X 설치 (윈도우)

    COCOS2D-X 설치 (윈도우)

    COCOS2D-X 설치!! 어렵지잉~ 않아요오오~~ * COCOS2D-X 설치 및 테스트 1. VS 2008 or VS 2010 설치 2. COCOS2D-X 다운로드 3. 압축해제 (압축 푸는 곳이 설치장소) 4. install-templates-msvc 실행 5. build-win32.bat 실행 6. cocos2d-win32.vc2008 or cocos2d-win32.vc2010 맞춰서 실행 7. HelloWorld 프로젝트를 시작 프로젝트로 설정 8. 빌드 및 실행 COCOS2D-X Download ( http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download ) 테스트 Hello World 설치가 끝나면 다음 COCOS2D-X UserGuide창이 뜬다..

    COCOS2D Android에서 드래그 앤 드랍(Drag & Drop)

    음, 안드로이드에서 COCOS2D를 쓰면 쓸수록 삽질을 많이 한다. 특히나 아이폰에 맞춰 만들어진 것을 안드로이드용으로 포팅하면서 많은 문제가 아직 남아있다는 걸 느낀다. 지난 게임 관련 포스팅을 할 때 COCOS2D 안드로이드 엔진에 대한 문제를 몇 가지 적어놓았다. 이번에는 드래그 앤 드랍을 안드로이드용으로 하는 소스를 써보려 한다. 아래 소스를 참조하자. [1]을 보고 만든 것이다. Objective C를 자바 형태로 센스있게 바꾸면서 작업했다. Objective C에 있는 메소드나 클래스명이 거의 그대로 자바 엔진에 있었다. 메소드명이나 파라미터 형태가 조금 다른게 몇 개 있었지만 나름 잘 짜여져 있었다. 다만 몇 가지 문제가 있었는데. 문제 1. 아이폰에서는 ccTouchesMoved(드래그중 ..

    Java에서 JNI를 써서 핑 프로그램을 구현하는 이유

    자바로 된 핑 프로그램에 대해 분석하다가 이상한 점을 발견했다. JNI를 이용해서 핑 프로그램을 구현한 것이다. 웹에서 찾다보면 자바로 구현한 소스도 있는데, 왜 굳이 JNI를 썼을까 알 수가 없었는데 책을 찾아보다가 그 이유를 알게 되었다. 핑 프로그램은 ICMP(Internet Control Message Protocol)을 사용하는데, ICMP 패킷은 SOCK_RAW형식의 소켓만을 지원한다. 이런 이유로 자바에서는 제대로 된 핑 프로그램을 구현할 수 없다. 결국 대부분의 자바 네트워크 책에서 소개되는 핑 프로그램은 핑 프로그램을 흉내를 내는것 뿐이다. SOCK_RAW의 경우는 좀 더 높은 수준의 제어를 하고 싶은 사용자를 위한 것으로, 패킷(Packet)을 전달할 때 패킷이 지나갈 경로까지도 지정할..