본문 바로가기

Skein, node.js 통신 버퍼 관리 라이브러리 소개Skein은 ZCUBE社가 배포한 node.js용 라이브러리로, 개발자가 데이터 통신등에 사용되는 버퍼를 효과적으로 사용할 수 있게 해준다. 이 라이브러리는 자바 객체 java.nio.ByteBuffer를 본따서 만들어졌다. 자바의 nio 패키지는 Nonblocking-IO에 필요한 객체들로 구성되어 있다. 그중에 ByteBuffer 객체는 개발자가 바이트 배열등을 효과적으로 다루는데 도움이 된다. 일반적으로 데이터 통신 모듈을 구현할 때 바이트 배열을 자주 생성해서 사용하게 되는데, 메번 배열을 힙 메모리에 할당하고 해제하는 것은 비효율적인 작업으로 모듈의 성능을 저하시킨다. 또한 데이터를 송수신할 때, 바이트 배열에서 데이터를 쓰거나 읽기 위해 복잡하게 인덱스를 처리하는 경우가 많다. Skein은.. 더보기
DDNS(Google Domains), 집에 있는 라즈베리파이 설정 개요대개의 경우 가정에서 사용하는 인터넷을 이용할 때, KT등 인터넷 서비스 제공업체에서 컴퓨터 혹은 공유기에 동적 IP를 할당한다. 이 아이피를 사용, 외부에서 접근할 수 있지만 아이피가 변경될 수 있기에 매번 아이피를 확인해줘야 한다. DDNS 서비스를 이용하면 매번 아이피를 확인해야 하는 불편함을 없앨 수 있다. 위의 그림은 작업할 내용에 대한 시스템 구성도이다. 현재 집에서 사용하는 인터넷 모뎀에 라즈베리 파이를 직접 연결하면 동적아이피가 할당 되는데, 여기에 도메인내 이름을 부여하고 외부에서 설정된 이름으로 접근한다. 이렇게 하면 라즈베리파이 장치에 할당된 아이피가 변경되어도 설정된 이름으로 계속 접근할 수 있다. DDNS, Google DomainsDDNS(Dynamic DNS)는 DNS정보를.. 더보기
자바유료화 대책 자바 유료화오라클사가 내년부터 자바를 유료화하기로 올초 발표했을 때, 믿기지 않았다. 하지만 이제는 대책을 세워둘 필요가 있다. 그래서 몇가지 알고 있는 내용을 공유하려 한다.OpenJ9https://adoptopenjdk.netOpenJ9IBM사가 예전 SUN사의 자바를 자사의 서버등에 효과적으로 적용하기 위해 자체적으로 개발하던 JVM이다. 이 J9 JVM은 1997년 부터 SUN사의 자바 버전에 맞추어 개발되어 왔다. 이 J9 JVM이 2016년초 이클립스 OMR 프로젝트에 채택 되면서 "Open J9"이라는 이름으로 이클립스에 의해 이어서 개발되고 있다. Open J9은 현재 오라클 Open JDK 8,9,10에 호환된다. 아마도 짧게는 자바 유료화에 대한 대응이 되고 길게는 대체재가 될 수도 있.. 더보기
Angular, error TS2339: Property 'map' does not exist on type 'Observable<Object>' Angular를 공부하던 중, 책에서 안내한데로 아래의 코드들을 구현했으나, 제목처럼 오류가 발생했다. import 'rxjs/add/operator/map';...ngOnInit() { this.postsService.getPosts() .map(res => res['items']) .subscribe((result: any) => this.posts = result)} error TS2339: Property 'map' does not exist on type 'Observable' RxJSRxJS는 자바스크립트에 기반한 Reactive Extensions 라이브러리이다. 여기서 Reactive는 ReactiveX인데, observer 패턴을 응용 이벤트기반 비동기 프로그래밍을 가능케 해주는 라이브러.. 더보기
파이썬, Django(장고) index.html등 static 파일등 설정하기 Django는 파이썬기반 웹어플리케이션 프레임웤이다. 이 글은 설정 작업중 html파일, js파일, css파일등 "static resources"라고 하는 것들을 URL에 직접 맵핑하는 방법을 설명한다. 일반적으로 'settings.py'파일에 'STATIC_URL', 'STATICFILE_DIR'등을 설정하는데, URL이 'STATIC_URL'에 정의된 경로로 제한된다. 만약 메인페이지 "/index.html"을 static 파일을 사용하려면, 약간 까다롭게 된다. 좀더 유연하고 유용한 방법으로, "urls.py"파일에 정의하는 urlpatterns 배열에 'path','url'등을 설정할 때 static resource를 설정하는 방법을 설명한다. urls.pyfrom django.conf.urls .. 더보기
안드로이드 새모듈 생성, 빌드시 오류 안드로이드 스튜디오 (버전 3.1)을 이용해서 새 모듈을 생성하고, 기존 앱 "build.gradle"파일에 새 모듈을 의존성에 추가, 빌드시 오류가 발생한다. 오류 문구로 이래와 같은 문구들이 여러개 뿌려진다."Unable to resolve dependency for ':app@debug/compileClasspath': Could not resolve project :module" 안드로이드 개발자 사이트 문서(한글본)는 최신 내용으로 수정되지 않아서 문제 해결에 도움이 되지 않는다. 또한 안드로이드 스튜디오(버전 3.1)가 모듈을 생성할 때, 파일을 정확히 설정하지 않는 것이 문제가 발생하는 원인중 하나이다. 해결방법 : 새모듈 생성 후 의존성 추가스튜디오에서 "File > New > New Mo.. 더보기
nashorn, 외부 JSON객체 파싱 및 할당하기 자바에서 제공하는 nashorn 스크립트 엔진을 이용해서 엔진 바깥에서 JSON 문자열을 해석하고, 구해진 객체를 다시 엔진에 할당하는 코드를 구현해 본다. ScriptEngineManager engineManager = new ScriptEngineManager();ScriptEngine engine = engineManager.getEngineByName("nashorn"); // parse JSONScriptObjectMirror json = (ScriptObjectMirror)engine.eval("JSON"); String data = "{\"name\":\"ZCUBE\"}";ScriptObjectMirror parsed = (ScriptObjectMirror)json.callMember("pa.. 더보기