Devlopment

    Netty서버에서 1024이상 받지 못하는 문제의 해결법

    Netty를 이용하여 Java 서버를 개발하고 있다.그런데 클라이언트쪽에서 새로운 문제를 얘기해주었다. 서버로 넘기는 데이터의 크기가 크면 처리가 되지 않는다는 것이다. 문제를 찾아보니, Netty에서 기본적으로 1024이상 받지 못하게 되어 있었다.Netty의 기본 리시브 사이즈가 1024로 설정되어 있는 것 같은데 설마 그것에 대한 수정도 안되게 만들지는 않았으리라 생각되었다. 다만 문제는 Netty에 대한 자료가 거의 없기 때문에 애를 먹었다.당연한 얘기지만 국내에서 이를 이용한 것에 대한 문서가 전무했고 외국 웹 사이트를 찾다가 해결했다.(역시 구글신) 이 문제를 해결하기 위해 몇 번의 문서를 주고받으며 사람들이 해결책에 대해 얘기하고 있었고 결국 마지막 문서에서는 누군가가 해결법을 제시했다. b..

    정규식 예제

    정규식은 참 좋은 것 같다. 그러나 그떄 그때 정규식 짜는 것도 참 일이다.그래서 주로 쓰는 정규식 예제를 모아보았다. // IPv4 ^([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\.([1-9]?[0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])){3}$" // IPv6 ^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1..

    서버 접속이 공인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창이 뜬다..