안녕하세요, "생각의 웹"입니다.


이번에는 갖은 시행 착오 끝에 설치를 완료한 NLTK를 활용해 IoT로 검색해 얻은 600 건의 트윗의 내용을 

word cloud로 만든 사례를 소개하고자 합니다.





이를 위해 python의 tweeter module을 이용해 아래와 같이 코딩했습니다.


# coding=UTF-8

import os.path
import json
import sys
import nltk

import collecttweets
import jsonreader

from collections import Counter
from prettytable import PrettyTable

##
# Get tweets from JSON dump file or twitter API
#
def get_tweets() :
	file_path = "tweets.json"
	if os.path.exists(file_path) :
		return jsonreader.read(file_path)
	else:
		return collecttweets.search_tweets_by_hash_tag('IoT', 5, 100)

##
# Tokenize all tweet messages
#
def tokenize(statuses) :
    status_texts = [ status['text']
        for status in statuses ]

    tokens = []
    for s in status_texts:
        tokens += nltk.tokenize.word_tokenize(s.lower())
    return tokens

##
# Get stemmed list
#
def get_stemmed_list(tokens) :
    from nltk.corpus import stopwords
    stop_words = stopwords.words('english') + ['.', ',', '--', '\'s', '?', ')', '(', ':', '\'', '\'re', '"',
        '-', '}', '{', u'—', 'rt', 'http', 't', 'co', '@', '#', '/', u'…',
        u'#', u';',  u'amp', u't', u'co', u']', u'[', u'`', u'`', u'&', u'|', u'\u265b', u"''", u'$', u'//', u'/'
        u'via',  u'...', u'!', u'``', u'http']

    from nltk.stem import PorterStemmer
    stemmer = PorterStemmer()
    stemmed = []
    for token in tokens:
        # try to decode token
        try:
            decoded = token.decode('utf8')
            #print decoded
        except UnicodeError:
            decoded = token

        if decoded is '' or decoded in stop_words:
            continue
        stem = stemmer.stem(decoded)
        #print stem
        # Skip a few text. I don't know why stopwords are not working :(
        #skip t.co things
        if stem.find(u't.co') > 0:
            continue
        #skip http things
        elif stem.find(u'http') >= 0:
            #print stem
            continue
        else:
            stemmed.append(stem)
    return stemmed

def write_file(filename, lines) :
    f = file(filename, 'w')
    for word in lines:
        try:
            f.write(word.encode('utf-8') + '\n')
        except UnicodeEncodeError, e:
            print 'Encoding error ' + word + '\n'
    f.close()

# Simple test
statuses = get_tweets()
tokens = tokenize(statuses)
print tokens
stemmed = get_stemmed_list(tokens)
print stemmed
write_file('word.txt', stemmed)



간략히 설명하면 

1) twitter API로 관심주제 (저 같은 경우는 IoT)로 tweet를 수집한다. 

2) tweet의 내용을 token으로 쪼개 모은다.

3) stemmer로 token를 분석해 불필요한 단어들을 제거한다. 

4) 남은 word들을 파일로 출력한다. 만들어진 word.txt를 아래 사이트에서 word cloud로 만들면 앞서 그림과 같이 예쁜 그림을 얻을 수 있습니다. 

(silverlight로 제작된 사이트니 IE에서 접속하는 걸 추천합니다 ;-) ) 

http://www.tagxedo.com/app.html 


이상입니다. 


감사합니다.


안녕하세요,

"생각의 웹"입니다.


AllJoyn Framework (이하 올조인)은 퀄컴에서 개발한 P2P 기술을 오픈 소스로 공개 후 AllSeen Alliance (이하 올신) 주관으로 리눅스 재단의 프로젝트로 진행하는 만물 인터넷 (사물 인터넷보다 한단계 더 나아간 개념입니다만 저는 아직까지는 동의어 혹은 파생어로 봅니다.  ) 프레임 워크입니다.


이 기술을 공개된 지도 일 년이 지난 것으로 기억하는데 가장 최근인 올 해 7월 IFA 2014에서 공개한 데모에 대해 정리한 포스팅이 있어 올조인에 대해 아직 문외한인 분들은 읽어 보면 좋을 것 같아 링크 공유합니다.


퀄컴 올조인으로 물꼬튼 올신의 현재 (칫솔 - 초이의 IT 휴게실)  



올조인의 가장 긍정적인 면은 처음부터 누구나 소스 코드를 사용할 수 있도록 공개하고도 더불어 다양한 플랫폼 개발자들을 위해 여러 프로그래밍 언어의 API 문서와 프로그래밍 가이드를 잘 정리해 두었다는 점입니다.


튜토리얼: https://allseenalliance.org/alljoyn-framework-tutorial



오픈소스의 영향으로 인지는 모르겠지만 간단한 검색어를 통한 구글링으로도 꽤 많은 관련 포스팅이 눈에 띄는데 아래 '바쁜척쟁이 개발자의 블로그'에 기능 별로 잘 정리되어 있는 것 같아 살펴 보시길 추천합니다.


http://busydeveloper.tistory.com/category/Alljoyn



개인적으로 아쉬운 점이자 이 포스팅을 쓰게 된 동기는  official site의 가이드에는 JavaScript API가 준비되지 않았다는 점입니다.

개발 이력을 살펴 보니 NPAPI를 이용해 browser에서 사용 가능한 API를 만들려는 시도가 있었다가 실패한 듯 하고 (github에서 관련 프로젝트가 없어졌더군요.) 
대신 아래 경로처럼  node.js를 위한 npm 모듈이 존재하는 것을 확인했습니다.


https://github.com/octoblu/alljoyn


따라서, 현재 클라이언트의 주변에서는 올조인 기기들을 찾을 수 없겠지만 node.js를 탑재한 모바일 기기나 
클라이언트와 node.js 서버가 같은 네트워크 상에 있다는 가정 하에서는 Open API를 통해 기기 간 통신이 가능할 것으로 보입니다.


각론으로 들어가면 사실 올조인의 API는 P2P 개념이 부족한 분들에게는 조금 생소할 수도 있습니다.

하는 역할인 기기 간 통신에 비해 복잡해 보이기도 하고요. 

각 인터페이스들의 역할과 상호 작용의 개념을 명확히 이해하기 위해 먼저 위의 튜토리얼을 읽어 보실 것을 권합니다.

어느 정도 동작 방식에 대해 이해 하셨나요? 아래 코드는 위의 깃허브의 샘플 코드에서 유추해서 Web IDL 형태로 간단히 정리해 본 JavaScript API 입니다.

 


typedef DOMString AllJoynAppName; 

callback SignalMessageCallback = void (DOMString message, DOMString info);
[Constructor (DOMString appName)]
interface BusAttachment {

    void createInterface(AllJoynAppName name, InterfaceDescription description);

    void registerBusListener(BusListener listener);

    void start();

    void connect();

    void findAdvertisedName(AllJoynAppName name);

   void registerSignalHandler(BusObject bus, 
       SignalMessageCallback  smcb,
       InterfaceDescription description, 
       DOMString signalType);
};

[Constructor ()]
interface InterfaceDescription {

    void addSignal(DOMString target, 
        DOMString messageType,
        DOMString message);
};

callback FoundAdvertisedCallback = void (DOMString name);
callback LostAdvertisedCallback = void (DOMString name);
callback NameOwnerChangedCallback = void (DOMString name);

[Constructor (FoundAdvertisedCallback facb, 
    LostAdvertisedCallback lacb, 
    NameOwnerChangedCallback nocb)]
interface BusListener {
};

[Constructor (DOMString busName)]
interface BusObject {

    void addInterface(InterfaceDescription description);
};

callback AcceptSessionJoinerCallback = void (unsigned short port, AllJoynAppName joiner);
callback SessionJoinedCallback = void (unsigned short port, DOMString sessionId, AllJoynAppName joiner);

[Constructor (AcceptSessionJoinerCallback asjcb, SessionJoinedCallback sjcb)]
interface SessionPortListener {
};

문서화 수준과 지원하는 OS (유닉스 계열 - OS X, linux 만 지원)이 부족한 것으로 보아 아직 신뢰할 만한 수준이 아닌 것으로 보입니다.
즉 이 모듈을 사용할 때 각자가 해야 할 삽질이 정해져 있다는 것을 의미합니다. -_-;; 


어쨌든 올신에는 꽤 많은 기기 제작업체가 가입해 있고 슬슬 호환 기기들도 출시를 앞두고 있은 것 같아 기존 레거시 시스템들과 혹은 올신에 가입하지 않는 업체들의 기기와의 대화를 위해 인터프리터 역할을 할 노드가 필요하리라고 예측합니다.

추후 좀 더 구체화된 내용이 있으면 포스팅하도록 하겠습니다.


감사합니다.


행복한 하루 되시길! 

안녕하세요,

"생각의 웹"입니다.


혹시 이 블로그에 방문한 분 중 이 블로그의 제목인 "생각의 웹"이 어디서 유래했을까 궁금했던 분이 있을까 싶습니다.

(사실 그런 건 저만의 지나친 기대에 불과하다는 걸 잘 알면서도 혹시나 해서... ^^;)


먼저 블로그의 취지를 말씀드리면 이 블로그는 웹 기술과 사물 인터넷에 대해 공유하는 목적으로 만들었습니다. 

좀 더 살을 붙여 말하자면 지난 몇 년간 기업 연구소에서 모바일 및 가전 기기를 위한 웹 기술에 대해 연구해 온 것들을 정리하고 이를 통해 멀지 않은 미래에 도래할 초연결 사회의 기술적 기반인 사물인터넷에 대해 논의하면서 함께 만들어 가고 싶었습니다.

부속 프로젝트인 Do IoT Yourself 역시 그런 맥락으로 진행된 것이고요.


질문의 답은 web of think는 internet of things의 응용 계층(application layer)에 해당하는 web of things의 발음에 유사한 점을 착안해서 만들었습니다. (이걸 맞추신 분들과는 서로 '통'하였다는 기쁨을 나누고 싶군요.  :-) )


사실 오래 전부터 '스스로 사고하는 웹'으로써 semantic web이라는 기술 영역이 존재하고 이에 관련된 많은 연구들이 진행되어 왔습니다.

주로 '정보'와 '정보'의 관계를 온토롤지(onthology)로 구축함으로써 컴퓨터가 정보의 의미(semantics)를 사고(reasoning)하는 방향으로 흘러가고 있습니다.

하지만 사물 인터넷 상에서 사물들이 서로 대화하기 위한 생각으로써는 어떨까요? 아마도 semantic web를 포함한 그 무엇인가가 더 필요하지 않을까요?


다음의 포스트는 앞서 번역한 사물인터넷을 지탱하는 것에 이어 사물 인터넷 기기들이 어떻게 생각하게 될지에 대한 내용입니다.

앞서 번역한 것과 같이 오역이 심한 번역이지만 이 글을 통해 제가 얻은 통찰을 공유하고픈 마음에 공유드립니다.  

영어 능력자 분들은 되도록 원문을 참고하시기 바랍니다. (: 


원문 : http://readwrite.com/2013/07/15/how-the-internet-of-things-will-think





사물인터넷은 어떻게 생각할 수 있게 될까?

스마트 기기들이 동일한 언어로 말할 수 있게 된다고 할지라도 사물 인터넷에는 여전히 ‘무엇을 이야기 할지’에 대한 문제가 남는다.



업체, 개발자 그리고 사용자가 스마트 기기가 보편화된 미래를 향해 나아가는 것을 소위 사물 인터넷이라고 할 때, 그들은 사물인터넷 관련 핵심 이슈들을 산더미처럼 쏟아내기 시작했습니다. 이는 어떻게 사물인터넷에 연결된 다양한 기기들이 서로 대화하게 될까에 대한 질문에서 시작합니다.

그러나 설사 이 사물인터넷에서 기기들이 동일한 언어로 대화할 수 있도록 할 수 있게끔 한다 하더라도 실제로 이 세상에서 기기들이 서로 대화할 수 있게 만들 수 있는가에 대한 더 큰 도전에 직면하게 됩니다. 


말, 말, 말 그런데 할 말이 없다.


앞서 포스팅에서 대략 언급한 바와 같이, 사물인터넷은 기기들 사이의 대화를 위해 제조업체들이 만든 다량의 상호 호환성 없는 프로토콜들에 붙잡혀 있습니다. 

이런 프로토콜들은 각기 효율적이지만 서로 상이한 언어들이죠. 그 결과 인터넷에 연결된 기기들은 서로 대화하길 원함에도 불구하고 서로 대화할 수 없습니다.

이런 대화를 막는 방해물은 궁극적으로 기업 간의 의견 수렴을 통해 정의된 표준 프로토콜로 제거할 수 있습니다. 혹은 인터프리터 역할을 하는 집중된 “공통 지식”을 만듦으로써 상호 운용할 수 없는 다수의 기기들을 상호 대화할 수 있도록 만들 수 있습니다.

 

이 문제를 이렇게 가정해 봅시다. 이제 이런 스마트 기기들 – 스마트 폰, TV, 냉장고, 자동차, 시계, 스마트 의복과 이외 어떤 기기 – 가 무엇이든 간에 대화하게 될까요? 볼품 없는 질문 같지만 이런 단순한 예가 이 문제를 해결하기에 얼마나 교묘한지를 보여 줍니다. 


거실로 다시 초대합니다.


지난 포스팅에서 소개했던 네스트 온도조절기, 스파크 내장 조명 그리고 마키타 커튼 조절기로 이뤄진 스마트 거실에서의 상상 실험으로 돌아갑시다. 각각의 기기를 원격으로 제어하는 건 가능하기에 이를 위해 이런 기기들이 보유한 다양한 센서에서 값을 직접 읽어 들여 다른 기기에게 알려줄 수 있다고 가정해 봅시다. 

온도 조절기에서는 방 안 온도와 하루 중 원하는 온도에 대한 센서 값을 알려줄 수 있습니다. 조명기기는 주변의 기기에게 자신이 켜져 있는지 여부와 방안의 조도를 알려줄 수 있습니다. 커튼 조절기는 앞서 두 기기에 비해 상대적으로 부족하지만 커튼의 개, 폐 혹은 그 정도를 알려 줄 수 있겠네요.


그래서 온도 조절기는 열심히 센서 값을 조명기기와 커튼 조절기에게 알려주겠죠. 

여기서 첫 번째 질문입니다: 도대체 이 기기들이 고려하는 바가 무얼까요? 전 은하수를 여행하는 히치하이커를 위한 안내서에 나온 살인 경악이자 Paranoid Android인 마빈이 등장하자 the Heart of Gold을 향해 가는 문이 유쾌히 열리는 시나리오를 빗대어 상상하고 있습니다. 


커튼 조절기가 방안의 온도를 아는 것이 얼마나 중요한 지 알아야 하는지를 심각하게 고민해 봅시다. (지금껏 거의 고려해 본적이 없을 겁니다.) 조명기기도 유사합니다. 만일 조명기기가 지각 능력이 있다면 커튼에 불이 붙어 집이 전소하는 절망적인 상황에서 받을 과부하를 상상할 수 있습니다. 

물론 조명 기기들에게 지각 능력이 있다면 아마도 직관적으로 현재 시각과 온도가 기본적으로 규정된 온도 값에 비해 높다는 걸 인지하고 조명을 킬 것입니다. 문제는 기기에게 이런 ‘의미’를 넘겨 줄 수 있느냐겠죠.


거실의 지식 구조


스테판 웨이츠(Stefan Weitz) 그리고 맷 월레츠(Matt Wallaert)는 두 말할 것 없는 괴짜들입니다. 내가 그들에게 말을 걸었을 때는 최신 스타트렉 영화 개봉에 앞서 Bing(Bing) 검색 엔진에 클리곤(Klingon) 언어를 추가한 엔지니어들을 위한 기념회를 막 마쳤을 때였습니다. Bing에서 일하는 행동 과학자인 월레츠는 클리곤 언어의 관용구인 콰플라(Qapla') – 성공이라는 의미 – 를 머리 속에 새겨 넣었습니다. 


괴짜 항목에 이런 단어들을 추가하는 것은 그들의 스타트랙에 대한 애정뿐만은 아닙니다. 그들은 Bing과 보편적인 검색 엔진들의 미래에 대해 깊게 생각해 본 것입니다. 그들은 구글을 걷어 찰 미래에 대해 괘념치 않고 다른 다양한 것들을 상상하고 있습니다.


이런 친구들에게는 인터넷에 연결된 기기의 숫자가 증가한다는 것은 엄청난 데이터를 생성할 플랫폼을 의미하고 Bing 검색엔진과 이를 활용할 서비스들에게 큰 기회가 있다는 의미입니다. 

“어떤 형태의 제어 기기에서든 데이터를 제공할 수 있습니다”라고 마이크로소프트의 검색엔진 수석 이사인 웨이츠가 말했습니다. 

“어떤 기기의 어떤 신호나 어떤 입력이라도요.”  


실제 많은 정보를 산출하기에는 너무 잡음이 많아서 이런 건 진짜 불협화음처럼 들립니다. 그러나, Bing 엔지니어들은 이런 기기들이 더 많은 데이터를 만들어내기 위해 만드는 엄청난 잡음들을 제거하는 데 Bing 검색엔진이 중요한 역할을 할 수 있다고 봅니다.  


웨이츠와 월레츠는 의도적으로 스마트 거실 가설에 대해 반박합니다. 

온도 조절기가 이런 것들에 관심을 두도록 프로그래밍되었다는 가정한다면, 그들이 제안했던 바처럼, 온도 조절기는 날마다 방이 점점 더 더워지는 일정 시간을 기록할 것입니다.

평소대로라면 온도 조절계는 이런 종류의 이벤트에 대한 반응으로 에어컨을 켜거나 난로를 꺼는 동작을 취할 것입니다. 

그러나 웨이츠의 제안은 방이 하루 특정 시간에 더워지는 이유를 조사하도록 온도조절계를 프로그래밍할 수 있다는 것입니다.


이것은 기기들의 현재 설계가 어떻게 바뀌어야 할지에 대한 두드러진 변화가 될 것입니다. 

온도 변화를 받아 들이는 것으로 집안의 냉/난방기를 조절하는 건 시작에 불과합니다. 온도 조절기의 목표 변수들을 넘어서서 솔루션을 찾아야 합니다.


언젠가는 월레츠가 제안한 바와 같이, 온도 조절기가 햇빛이 창문을 통해 방안으로 쏟아지는 것과 동시에 온도가 올라간다는 것이 서로 관련이 있음을 알아야 할 것입니다. 그러면 (Bing과 같은) 인터넷 데이터 플랫폼을 통해 가능한 솔루션들을 검색할 수 있을 겁니다.   


그리고 나서 이런 솔루션들을 면밀히 검토해 보고 거기서 비현실적인 것들 – 예를 들어, 반 융합(anti-fusion) 기기로 태양에 핵 공격을 가하는 것 같은 – 을 제거하고 나면 올바른 것이 도출될 수 있을 겁니다. 

그러나 한 여름에 오후 2시부터 몇 시간 동안 커튼을 치는 건 어떤가요? 

이제 이게 하나의 방안이 되었습니다. 


결국, 온도조절기는 방 안의 두꺼운 커튼을 치라는 신호를 보낼 겁니다. 

조명기기는 방안의 조도가 낮아지는 것을 확인하고 방 안에 사람이 있을 경우에만 조명을 킬 겁니다.   

하나의 사례만 보더라도 꽤 직관적임을 알 수 있습니다. 왜냐하면 사람들은 이런 솔루션을 꽤 빨리 찾아낼 수 있기 때문이죠. 


그러나 잠시 멈춰 지금껏 일어났던 일들을 생각해 봅시다. 

사람들과 인터넷에 연결된 다른 기기로의 데이터와 정보를 이용해 볼 수도 없는 온도 조절기가 연동 가능한 다른 기기로 차단이 가능한 열원의 존재에 대해 배웠습니다. 


몹쓸 스마트 온도조절기 하나


그러면 된 것 아니냐고요? 이 온도조절기는 그 배후에 인터넷 자원이 있다고 하더라도 이 기기는 말도 안되게 복잡해야 합니다. 

독립적으로 대안을 찾고 지각에 대한 인터넷의 경계에 존재하는 지식으로부터 배워야 하는 능력  때문에 말입니다.


더 유사하게는 이 온도조절기의 프로그래밍은 다음과 같이 판단 호출을 만들기 위한 제약된 조건들을 고려해야 합니다. 

먼저 지역 날씨 데이터, 주변 조도 센서 값, 전력 소모량 (아마 누군가 원격 제어가 안 되는 난방기를 돌리고 있고 있을 수 있으니까요.) 그리고 아마도 (점유 기간을 측정하기 위한) 이산화탄소 농축도에 대한 정보를 수집해야 하고 그것을 통해 냉/난방 여부를 결정하는 데 쓸 것입니다. 

만일 햇볕 좋은 날에는 커튼을 칠 것이고 만일 방 안에 많은 사람들이 있다면 에어컨을 키고 커튼은 열어 놓을 겁니다.   


이렇게 즉각적인 결정을 내리기 위해 정보를 수집하도록 프로그래밍된 어떤 기기든지 인터넷에서 이와 관련된 상관관계를 만들 수 있도록 공개된 정보로 인해 이득을 얻을 수 있게 됩니다. 웨이츠에 따르면, 데이터 과학자들은 지식 패브릭(knowledge fabric) 혹은 융합 네트워크(mesh network)로써 이런 종류의 저장소를 참고합니다. 


“이런 저장소는 완전히 새로운 정보 구조가 될 것입니다.”


웰레츠가 첨언하기를 “사물을 위한 바벨 피쉬” 처럼 동작할 데이터 변역 서비스입니다. 

변화를 가져올 정보가 필요한 기기들은 자신의 프로그래밍에 기반하여 지식 패브릭에 접속해 이에 따라 제어를 조정하게 될 것입니다.  


Bing 엔지니어로써, 지식 패브릭을 생성하는 것은 최고의 검색 결과를 찾는 것보다 원대한 목표를 의미합니다. 

웰레츠는 구글과는 다르게 Bing은 “현상을 이해하는 계층(layer)을 만드는 것”이라고 주창합니다. 

이로써 Bing은 단순히 검색 결과 대신 데이터에 행위(action)을 적용하는 기술로써 자리매김할 것입니다.


이것이 바로 사물 인터넷이 동작하게 하는 기술입니다.


명령과 제어


Zonoff의 CEO인 마이크 해리스에게 사물인터넷에 대한 개인적 견해에 대해 물었더니 그는 몇 가지 반대 의견들을 조심스레 꺼냈습니다. 

그 첫 번째로 해리스는 스마트 기기 제조업체들 간 경쟁의 합의로 하나의 지식 패브릭을 사용하기로 한다는 것을 상상하기 힘들다고 합니다. 

그들이 누구든지 기업 간 경쟁에서 경쟁 우위의 업체들은 합의를 깨뜨릴 가능성이 높습니다. 


해리스는 “현실에는 많은 수의 기업들이 ‘그들의 데이터를 소유’하고자 한다”고 말합니다.” 

그리고 그 결과에 따른 마찰은 Bing 팀이 말했던 것 같은 기술적 진보를 방해할 가능성이 있습니다.


그러나, 해리스는 사물인터넷은 어쨌든 진보할 것이라고 보았습니다. 

다양한 가전 업체들의 제품을 제어하는 스마트 홈 오토메이션 기기 업체로써 스마트 홈 영역에서 중요한 역할을 하는 Zonoff를 찾았을 때처럼 놀라운 소식은 아니겠지만요.


해리스는 기계 학습을 통한 지식 패브릭의 개념은 흥미롭지만 지금으로써는 보다 실제적인 접근법을 통해 회사를 이끌고 있다고 합니다: 홈 오토메이션 기기들을 위한 중앙 형 명령/제어 시스템을 다루는 소프트웨어 플랫폼을 만드는 것이죠. 


해리스가 Zonoff의 홈 제어 시스템을 설명하는데 사용한 비유는 Bing 팀이 Bing을 가정의 두뇌로 사용하는 것과 크게 다르지는 않습니다. 

Wi-Fi 혹은 Z-Wave (홈 오토메이션을 위해 설계된 저 대역 주파수) 표준을 통해 기기들을 네트워크에 연결하고 프로토콜을 정렬해서 관련 명령과 응답을 조율합니다.


후자는 지금껏 출시된 기기의 종류와 그 기기 간의 조합 가능성을 생각해 보면 엄청난 일이 아닐 수 없습니다. 

그럼에도 여기 약간의 영리함이 있습니다: Zonoff 시스템은 기술적 지식이 없는 집주인들이 스마트 기기를 손쉽게 프로그래밍할 수 있는데 기기를 추가 설치한 후 환경 설정을 향상할 수 있도록 보다 학습된 피드백을 사용자에게 제공하기 위해 기기 실제 사용 빈도를 모니터링합니다.


데이터 분석과 크라우드 소싱 데이터가 조합하면, 예를 들어 문을 잠그고 알람을 켜고 가전 기기들을 절약 모드로 바꾸는 “잘 자” 명령 생성이 가능합니다.

이런 시스템은 심지어 집주인의 생활 습관 – 아이들이 있나요? 애완동물은요? - 에 대해 질의해서 홈 오토메이션 시스템에 더 나은 피드백을 반영할 수 있는 관련 규칙을 적용할 수 있습니다.   


스카이넷이 도래하는가?


사물인터넷을 향한 “지식 패브릭”에 까지는 도달하지 못했다고 하더라도 Zonoff 같은 컨트롤 허브들은 이미 출시되었고 머지 않은 미래에는 홈 오토메이션 시장에서 독점하리라고 보입니다.

그러나 기계 학습을 통한 지식 패브릭에 대한 비전은 주목하지 않을 수 없습니다. 기계가 많은 것을 배우지 못했던 오랫동안 이 기술은 이 지구 상의 인간들과 관련된 반쯤만 탁월한 아이디어들을 만들어 냈습니다.


이런 연유로 이 기술을 물리쳐서는 안되나 이를 위해 해결해야 할 기술적 문제가 많다는 것은 인정해야 합니다. 

경제학자 안드류 맥아피가 최근 TED 강의에서 냉소적으로 말했던 것처럼요:


기계가 스스로 인지하게 되고 우리를 대적하여 반란을 일으키도록 결정하면서 일어나는 상황에 대한 디스토피아적인 예측은 끊임이 없습니다. 저는 이런 미래를 컴퓨터가 프린터를 인식하기 시작하면서부터 우려하기 시작했습니다.



안녕하세요,

'생각의 웹'입니다.


4주 차에 걸쳐 진행된 직접 IoT 만들기(Do IoT Yourself!) App In 세미나가 이번 주 금요일(2014년 10월 24일)을 마지막으로 대장정의 마무리를 내립니다.


짧지 않은 시간동안 평일 저녁과 주말을 포함해 여러 회에 걸쳐 진행된 강연이였기에 참석조차 쉽지 않으셨을 텐데 빠지지 않고 참석해 주신 분들께 감사드립니다.

강사 또한 참석자 분들의 배움의 열정에 감탄을 금치 못했으며 가르침을 통해 배움 못지 않은 많은 깨달음을 얻었습니다. 



이번 마지막 강연에서는 지난 3주 차 강연에서 만들어 본 RESTful Web API를 손쉽게 사용할 수 있도록 JavaScript API로 만들어 보고 이 API를 이용해서 현재 온도를 알려주는 온도계와 지금까지의 온도 변화를 보여주는 경향(trend) 그래프(graph)를 google chart API를 이용해 만들어 봅니다.



지난 번 강의 시, 제가 시간 관리를 제대로 하지 못해 다음 예정된 강의에 지장을 초래할 정도로 지연되었는데 

부디 이번 강의에서는 제 시간에 끝났으면 합니다.

(그런데 초안 슬라이드를 작성해 보니 2시간 내에 제대로 다루기에는 벅찬 느낌이 들기도 하네요. ^^;; )


마지막으로 다시 한번 매 강연마다 호평을 아끼지 않으시고 적극적으로 참여해주신 참석자 분들께 다시 한번 감사의 말씀 전합니다.

또한 강연 자리를 마련해 주시고 값 비싼 아두이노 호환 보드 세트를 원가에 못 미치는 가격에 참석자 분들께 제공해 주신 AppCenter 분들께도 감사드립니다.


제 소망은 초 연결 미래 사회를 향한 이 작은 발걸음들을 통해 새로운 통찰을 얻고 비즈니스에 적용하여 미래를 만들어 가는 분들이 등장하는 것입니다.

사물 인터넷의 시대, 여러분들의 아이디어를 직접 만들어 평가하고 공개하고 개선해서 멋진 서비스로 발전시켜 가시길 바랍니다!


P.S. 이 모든 자료는 크리에이티브 커먼스(Creative Commons) 3.0에 의거하여 출처를 밝히는 조건 하에서 자유롭게 사용하실 수 있습니다. 

P.S. 2. github에 공개한 DIoTY 코드에 대한 설치 가이드자주 나온 질문들을 링크와 같이 정리했습니다. 참고하시기 바랍니다.

 

안녕하세요, 

생각의 웹입니다.



지난 2번의 Do IoT Yourself 세미나에 이어 오는 10월 18일에 발표할 세 번째 강연의 슬라이드를 아래와 같이 선 공개 합니다.

혹시 참석하지 못하신 블로거 분들은 지난 세미나 관련 정보를 아래 링크를 통해 확인하실 수 있습니다.




이번 강의에서 다룰 내용은 웹을 구성하는 기술들에 대한 배경 지식과 개념들이 필요하기 때문에 이 분야에 경험이 전무하신 분들에게 조금 난해할 수 있겠다는 생각을 합니다. (특히 프로그래밍 경험이 전무한 비전공자 분들에게는요.)

이 자료의 초기 버전 (initial draft version)을 지인에게 공유했을 때에도 이해하기 힘들다는 피드백이 있어 개념을 전달하기 위해 몇 장의 슬라이드를 추가 보강했습니다.

혹시 자료를 보시고 난해한 부분이 있다면 댓글로 의견 주시면 추가 반영하여 보다 이해하기 쉽도록 개선하겠습니다.

(강의 중 Q&A 로 슬라이드에 잘 표현되지 않은 부분이 있다는 의견이 있어 추가 반영한 버전으로 슬라이드를 교체했습니다. ;-) )


짧은 시간에 내용을 제대로 전달하는데 무리가 있을 것 같은 우려에도 불구하고 이 내용을 포함시키고자 하는 이유는 이것이 사물 인터넷의 핵심 중 하나이기 때문입니다.

많은 미래학자들이나 관련 연구를 하시는 오피니언 리더 분들의 의견을 들어보면 사물 인터넷은 '사물'이 아닌 '인터넷'에 주안점을 두어야 하기에 특히, 다양한 사물 간의 대화를 가능케 하는 표준화된 인터페이스(interface)와 API의 중요성을 강조합니다.


History Does Not Repeat Itself, But It Rhyme


역사는 스스로 반복되지 않지만 운율이 있다는 뜻입니다.


이 격언을 인용한 이유는 인터넷을 보급한 핵심 서비스는 다름 아닌 웹이였고 웹의 HTTPURLHTML 세가지 기술은 전 세계 사람들을 연결하는 데 그 역할을 훌륭히 해 냈습니다. 따라서 사 반세기를 통해 검증되고 보급된 이 웹 기술들이 이제는 그 운율이 되어 사물 간, 그리고 만물 간의 인터넷에도 적용될 것이라는 기대와 확신이 저에게는 있습니다.


또한 여기서 설명하고 있는 RESTful Web API는 웹 서비스를 위해 도입된 다소 무겁고 폐쇄적인 WS-* 기술이 아닌 기존의 HTTP만으로도 웹 서비스가 가능하도록 만든 API 설계 원칙이고 이런 하위 호환성의 장점을 기반으로 사람 뿐 아니라 기계가 이해하고 사용할 수 있는 형태의 hypermedia API로 진화하는 중에 있기에 그 미래가 밝다라고 봅니다.


REST API에 대한 보다 기술적이고 자세한 내용이 궁금하신 분들은 이 블로그의 다음 포스팅을 참고하시기 바랍니다.



가진 지식을 나누며 생각을 키워 가는 것이 참 즐거운 일임을 오프라인 세미나를 통해서 다시 깨닫습니다.
온라인에서도 다양한 블로거 분들과 즐겁게 소통하며 함께 성장해 나가길 기대합니다.


읽어 주시고 관심가져 주셔서 감사합니다.

행복한 하루 되시길!


P.S. github의 DIoTY 프로젝트에 대한 설치 가이드자주 나온 질문들을 위키 페이지로 정리했습니다. 참고하시기 바랍니다.

안녕하십니까,

생각의 웹입니다.


지난 강연인 IoT, 기술의 혁신과 미래 그리고 통찰에 이어 

이번에는 Intuitive Understanding of Arduino for IoT라는 주제로 대디스랩 송영광 대표님이 발표해 주셨습니다. 



비록 참가비 5만원의 유료 강의였지만 49.55$ 의 sparkfun Starter Kit for RedBoard를 5만원이라는 저렴한 가격으로 제공하며 실습 형태로 진행되는 오프라인 강의라 금방 마감되었다는 후문을 들었습니다.

사진과 같이 토요일 오후임에도 불구하고 참석하신 분들의 뜨거운 학구열을 느낄 수 있었습니다. ^^


이번에 직접 제작해 본 아두이노 회로는 soft potentiometer thermometer로 다음과 같습니다.


참석을 희망하셨는데 참석하지 못하신 분들과 관심 있는 분들을 위해 발표 슬라이드를 다음과 같이 공유합니다.




다음 강연으로 준비 중인

사물 간의 연결을 위한 Open API: Do IoT Yourself 3rd 도 관심 가져주시기 바랍니다.

감사합니다.


행복한 하루 되시길!





안녕하세요, 생각의 웹입니다.


앱 센터(AppCenter.kr) 주관  실시하는 IoT 강연인, 

IoT, 기술의 혁신과 미래 그리고 통찰: Do IoT Yourself

의 강사로 지금껏 조사한 내용과 IoT 기기를 직접 개발하면서 쌓은 경험한 것들을 공유하려 합니다.


http://onoffmix.com/event/33505


아래는 첫번째 강의에서 소개드릴 IoT에 대한 발표자료 초안입니다. 조금이나마 관심을 가질 수 있는 계기가 되었으면 좋겠네요.



첫 번째 세션 후 두 번째부터는 아두이노 킷을 가지고 방안의 온도 추세를 웹앱으로 모니터링하는 IoT를 직접 만들어 보는 과정으로 진행됩니다. 이번 기회에 IoT의 개념을 확실히 이해하고 새로운 비지니스 기회를 포착할 수 있을 것으로 기대합니다.

많은 관심과 참여 부탁드립니다.

감사합니다.



"생각의 웹"입니다. 


트랜드 예측 기관인 VisionMobile과 MIT Technology Review의 IoT 관련 보고서를 다음과 같이 공유합니다.


MIT-Technology-Review-Business-Report-The-Internet-of-Things-NI.pdf


VisionMobile-IoT-Breaking-Free-of-Internet-and-Things-2014.pdf



단숨에 읽어 가기엔 조금 방대한 내용이기에 읽기 전 두 리포트를 기반으로 요약 정리한 내용은 아래를 참고하시면 이해하는 데 도움이 될 것 같습니다.   


  • IoT 기기의 등장 배경

     
    • 모바일 기기 혁명으로 인해 무선 통신 기술의 보편 화와 일용품 화(commodity) 로 인해 발생

    Machines go online


    • 2020년에는 전체 인터넷 기기 중 절반을 차지할 것으로 예상
  • IoT 개발자 시장 예측

    • VisionMobile에 따르면 IoT 개발자는 2020년에 이르러 450만명 수준으로 급속하게 증가하리라 예상됨
  • IoT 산업의 핵심 포인트

    • IoT 기기 자체가 아니라 기기가 수집한 데이터를 유의미하게 만드는 것이 가치
      (IoT is not about Internet nor is it about Things!)


    • IoT는 data 중심의 platform이며 IoT 기기가 수집한 컨텍스트 데이터와
      다른 서비스들을 매시업(mashup) 함으로써 혁신을 가져올 수 있음
  • IoT 플랫폼 관리가 핵심이며 기술이 아닌 인간 관계의 문제 


  • 플랫폼은 공급자와 소비자로 이뤄진 양면 시장으로 개발자와 사용자 간에게 차별화된 가치를 부여할 수 있을 때만 지속 가능함

    • 1. 개발자(Producer) 유형

      • 1.1. Makers
      • 1.2. System Integrators
      • 1.3. IoT 기업가
      • 1.4. Product Extenders
    • 2. 사용자(Consumer)

A platform is a system that can be adapted to countless needs and niches that the platform's original developers could not have possibly contemplated, much less had time to accommodate. - Marc Andreessen

  • 새로운 비지니스 모델 발굴의 필요성

    • 개발자 참여를 촉진할 동기 부여의 중요성 (How to motivate developers?) 
      • 모든 개발자가 같은 동기 부여를 받는 것이 아님. 흥미와 성취욕을 느끼기 위해
        개발에 참여하는 그룹을 타겟팅 필요

  


    • 초기에는 얼리 어답터에게 기회를 주고 이후 프로 개발자에게 자본을 투입
      (Hope for early adapters, money for pros)

    • 개발자로 하여금 수익을 벌어들이도록 하는 방법은?
      (How developers make your money?)

      • 핵심 제품과 개발자의 신규 요청사항을 묶는 번들링 필요
        (budding core business product with new demand from developers)

    • 공개할 것인가 아니면 감출 것인가? (open or closed?)

      • 수익이 날 수 있는 포인트인 core business는 closed로 개발자 유인 포인트는 open으로 설정

    

    • 서비스가 일용품 화되는 문제를 어떻게 회피할 것인가? (How to avoid commodity trap?)
      • 핵심 비지니스에 집중하라! (Focus on core business!) 


 IoT 산업은 이제 막 성장기에 진입하고 있습니다. 

새로운 기회를 바라며 준비하는 분들에게 이 포스팅이 좋은 정보가 되길 바랍니다.


감사합니다.

행복한 하루 되시길!

"생각의 웹"입니다.


현재, 대디스랩에서 대여 받은 Arduino Nano board와 Raspberry Pi board을 연결해 간단한 IoT 기기 프로토타이핑을 하고 있습니다만 제게 과거 인텔에서 갈릴레오 보드를 무료로 뿌릴 때 지원했다가 떨어지고 대신 받은 레퍼런스 pdf 문서가 있어 이 포스팅을 통해 공유하려 합니다.


레퍼런스 문서 다운로드


추가로, 갈릴레오 보드에 대해 간단히 설명드리면, 

인텔이 Maker 운동에 새로운 기회가 있음을 직감하고 아두이노 호환이 되면서 보다 강력한 성능을 지닌 자체 프로세서(Quark)를 만들어 보급한 것으로 보시면 됩니다.


보다 자세한 내용이 궁금하시면 정식 사이트를 방문하시기 바랍니다.


감사합니다.

블로그 개설 기념 첫 포스팅입니다.

이 블로그에서는 주로 한글로 Web of Things 및 RESTful API, HTML5 과 같은 최신 web tech. 를 소개하려고 합니다.

기술적인 내용을 다루기 앞서 아래 이 기술들이 가져올 미래 사회를 소개하는 자료를 공유합니다. 

http://www.nia.or.kr/BBS/board_view.asp?BoardID=201111281321074458&id=12466&Order=010200&Flag=100&objpage=0

위 주소는 한국정보화진흥원(NIA, 원장 장광수)이 초연결 사회(Hyper Connected Society) 선진 활용 사례를 담아 발간한 '모든 것이 연결되는 새로운 창조사회-사물인터넷 중심의 초연결 글로벌 선진 사례' 보고서입니다.

해외에서 구현된 서비스를 사례를 간략하고 이해하기 쉽게 소개하고 있으니 꼭 한번 읽어 보시길 권합니다.

Internet of Things 가 가져올 미래의 단상을 함께 하고 싶습니다.

많은 기대 바랍니다.

감사합니다.


+ Recent posts