본문 바로가기

Maker Movement

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에 호환된다. 아마도 짧게는 자바 유료화에 대한 대응이 되고 길게는 대체재가 될 수도 있.. 더보기
구글 클라우드 프린트(4) - 프린터 등록 구글에서 제공하는 페이지(https://developers.google.com/cloud-print/docs/privet)를 참조해서 시험삼아 가상의 클라우드 프린터용 Privet API 서비스를 구현하고 크롬 브라우저를 이용 등록해보았다. 몇몇 사항에 대해 자세히 설명이 되어 있지 않아서 여러번 시행 착오가 있었다. 다행스럽게 등록에 성공, 여기에 자세한 내용을 기술하고 작업한 소스코드를 공유한다. 사전에 준비할 것이 있는데, 프린터용으로 사용할 OAuth 2.0 client id가 없으면 구글페이지(https://developers.google.com/identity/protocols/OpenIDConnect#registeringyourapp)를 참조해서 만든다. 만약 https://console.d.. 더보기
구글 클라우드 프린트(3) - 프린터인식 구글 클라우드 프린트 기술에 대한 구글에서 제공하는 privet관련 자료(출처:https://developers.google.com/cloud-print/docs/privet) 를 따라 크롬브라우저에서 프린터를 인식하도록 간단한 코드를 만들어 봤다. 등록까지 해보려 했으나 아직 모르는 것이 많아 실패했다. JmDNSmDNS 혹은 DNS-SD와 관련해서 각 프로그램 개발 언어마다 오픈 소스 라이브러리가 있는 듯 했다. JAVA에는 JmDNS라이브러리(홈페이지:https://github.com/jmdns/jmdns) 가 대표적인 것으로 보인다. 크롬 브라우저에서 임시로 제작한 프린터(프로그램)을 인식되도록 하는 코딩은 간단히 되었다. PTR 정보String name = "ZCUBE";String typePr.. 더보기
구글 클라우드 프린트(2) - mDNS 구현 mDNS는 multicast DNS(Domain Name System)의 약어로 이 기술을 이용한 것으로는 애플사의 Bonjour서비스가 대표적이다. 일상생활에서는 가정 혹은 회사에서 네트워크에 연결된 프린터 혹은 다양한 멀티미디어 장치들이 자동으로 검색되는 것은 mDNS 기술을 이용했을 가능성이 크다. IETF 규약RFC 6762 : Multicast DNS RFC 6763 : DNS Based Service DiscoveryRFC 1035 : Domain Names - Implementation & Specification위의 규약은 토대가 되는 것인데, 확장된 내용을 담고 있는 많은 규약들이 더 있다. mDNS는 DNS규약을 토대로 정의 되었고, 통신메시지 형식 또한 DNS방식을 따른다. mDNS .. 더보기
구글 클라우드 프린트(1) - 들어가기 어떤 일을 하다 뒤늦게 구글 클라우드 프린트라는 기술을 알게 되었다. 이미 2010년 부터 구축이 되었는데, 이제서야 알게 되었다. 업무에 필요했기 때문에 기술 검토를 했는데, 몇가지 중요한 기술들을 알게 되었고, 다양하게 응용할 수 있는 아이디어들이 떠오르게 되었다. Cloud Printer구글 클라우드 프린트는 프린터를 구글 클라우드 환경에 등록하면 언제 어디서든 프린트 작업시 이 프린터를 이용할 수 있다. 이런 서비스는 구글 뿐만 아니라 삼성등에서도 제공하고 있다. 예를 들면 집 혹은 사무실의 일반 프린터를 클라우드 서비스에 연결해두면, 바깥에서 이동하면서 핸드폰에서 문서를 앞서 연결한 프린터로 인쇄할 수 있다. 이런걸 이제야 알다니... 사용할 수 있는 프린터는 이론상 모든 프린터가 가능하다. 구.. 더보기
라즈베리파이3 콘솔포트 연결 이 글은 짓큐브홈페이지에 올린 글 중 "Raspberry PI3 - connect console with UART" 를 다시 한글로 정리한 글이다. 라즈베리파이 파이3을 구매후 콘솔포트를 연결해서 기기를 설정하고자 했다. 그래서 TTL과 USB를 연결해주는 장치를 구매했다. 몇가지 자료들을 인터넷에서 찾아봤는데, 다양한 방법들이 제시되어 있어서 조금은 혼란스러웠다. 그 중의 가장 그럴듯한 것을 골라 시도했고, 다행히도 잘 동작되었다. 연결 방법은 아래와 같다.Micro SD를 자신의 PC에 마운트하고 라즈베리파이3 OS를 설치한다.SD카드로 이동해서 상위디렉토리에서 config.txt 파일을 찾는다.config.txt파일에 아래의 내용을 추가한다.dtoverlay=pi3-disable-btSD카드를 라즈.. 더보기