:::: MENU ::::

프랑스 니스

니스의 거리 풍경, 아래 특이하게 생긴 가로등은 저녁 9시가 되면 점등이 되는데
빨강, 파랑, 노랑, 초록 형형 색색으로 모두 다른 빛을 연출하며 색이 바뀐다.
마세나 광장






 


 모든 남성들이 원한다는 니스의 해변.
이곳의 해변은 모래가 아닌 자갈밭이다. 모두들 타월 하나 가지고 와서 깔고 눕는다.
이들에겐 수영복이 수영복이 아니라 일광욕을 즐기기 위한 옷이랄까?
간혹 더 햇빛을 원해서 밑에만 입는 여성분도 있는데 다들 당당하다. 뚱뚱하건 날씬하건 젊던 할머니 이던지…
재미있는건 해변위의 길가에 의자들이 해변을 향해 있다. 구경하라는 얘기인가? 바다를? 사람들을?
이 자리에도 많이들 않아서 경치(?)를 감상한다.
파라솔 없이 태양을 즐기는 사람들. 자유로운 사람들..



가까이서 카메라를 들이댈 수 가 없어서 멀리찍었다. ^^



비치 발리볼을 하는 사람들도 있고


바닷가 옆 도로에서 인라인을 즐기는 사람들



니스 해변은 탈의실이 없다. 단지 공용 샤워시설들이 좀 있을 뿐이다.
그래서 수영복을 안에 입고 오고 일광욕하고 옷을 다시 입고 돌아간다.


아래 사진은 LOU CASTEU라는 작은 산에서 찍은 사진. 니스 해변 전체가 눈에 들어 온다.




산위 전망대에 있는 니스 해변사진




니스 해변 한쪽끝에는 작은 항구가 있다.



아래 사진의 분들에게 바다는 개인 수영장이 되어 버렸네요.



늦은 아침을 먹고 호텔 근처에서 자전거를 빌렸다.
샌달에 수영복을 입고 배낭에는 책한권 과 물 샌드위치..
물론 호텔에서 돗자리도 하나 빌리고 타월도 한장 가지고 나왔다.
해변을 따라있는 자전거 도로를 따라 달리다 마음에 드는 해변이 보이면 내려서 햇빛을 즐기고 물에도 한번 들어가고..
이게 바로 가장 싸게 니스 해변을 즐기는 방법.
아니면 아래 사진처럼 파라솔, 비치베드, 타월을 돈을 주고 이용을 해야한다.
14유로는 가장싼 금액이고 대부분 20유로 이상씩 한다.



이탈리아 베네치아

베네치아는 이탈리아 북부에 위치한 도시이다. 영어로는 ‘베니스'(Venice)라고 한다. 세계적 관광지이며, 운하의 도시로도 유명하다. 수상도시 답게 도시 전체가 물위에 있고, 이동 수단은 도보 또는 수상 택시, 수상 버스이다. 몇년전에 한번 방문한 적이 있어서 이번은 2번째 인데, 여전히 사람들이 많다. 지난번과 마찬가지로 밀라노 중앙역에서 기차를 타고 방문을 했다.


주요 이동 수단인 수상버스모든 수상가옥들이 자가용배가 있어야 이동을 할 수 있지 않을까…ㅋ







베네치아의 명물 곤돌라



비둘기가 많은 산 마르크코 광장



산 마르코 대성당산 마르코 대성당 앞에 있는 카페. 커피값이 장난이 아님. 이 가격에 서비스료가 또 붙는다. -_-;;


임베디드보드에서 트위터하기 2 – 아두이노를 이용한 트위터

이전에 올린 임베디드보드에서 트위터하기의 2번째 버젼으로 아두이노를 이용해서 트위터하는 방법에 대한 분석자료입니다.
관련 자료: http://www.arduino.cc/playground/Code/TwitterLibrary
역시 proxy 사용해서 구현을 하고있는데 이전의 Supertweet.net 보다는 간단한 것 같지만, 테스트를 해보니 단점은 같은 내용의 메시지를 연속해서 보내면 에러가 난다. 아마도 스팸성 트윗을 걸러내기 위한 조치 같네요.

먼저 http://arduino-tweet.appspot.com/ 에 접속을 해서 사용하는 트위터 아이디의 토큰을 받는다.
이 토큰은 아래 소스에서 사용이 된다.

트위터 라이브러리 소스

#define LIB_DOMAIN “arduino-tweet.appspot.com”

bool Twitter::post(const char *msg)
{
 DNSError err = EthernetDNS.resolveHostName(LIB_DOMAIN, server);
 if (err != DNSSuccess) {
  return false;
 }
 parseStatus = 0;
 statusCode = 0;
 if (client.connect()) {
  client.println(“POST http://” LIB_DOMAIN “/update HTTP/1.0”);
  client.print(“Content-Length: “);
  client.println(strlen(msg)+strlen(token)+14);
  client.println();
  client.print(“token=”);
  client.print(token);
  client.print(“&status=”);
  client.println(msg);
 } else {
  return false;
 }
 return true;
}

위 소스에서 보듯이 먼저 arduino-tweet.appspot.com에 80 port로 접속을 한후 메시지를 보내는 형태인데, 실제 보내지게 되는 메시지는 다음과 같다. (* 아래 토큰은 남용을 방지하기 위해 임의로 바꿈)

POST http://arduino-tweet.appspot.com/update HTTP/1.0
Content-Length: 79

token=3737638B3-rfAUaR3oPmUZdhVXwpK3xSqBON6BBMVNWgsoqUaD&status=Hello, World 1!
Content-Length는 token의 길이 + 메시지의 길이 + 나머지 문자 14 바이트의 문자(token=과 &status=)이며, 실제 메시지는 &status=이후에 들어간다. 여기서는 Hello, World 1!


문제는 이런 트윗의 내용이 암호화가 되지 않고 전송이 되므로 Wireshark같은 스니퍼로 패킷을 잡으면 내용이 그대로 노출이 된다. 아무튼 임베디드 보드에서도 간단히 트위터를 사용이 가능하다.


임베디드 보드에서 트위터하기

이 블로그 포스트는 Twitter API Proxy 서비스인 supertweet.net를 이용해서 PC나 스마트폰이 아닌 임베디드 보드에서 트위터 메시지를 보내는 방법을 설명한다.
참조 사이트:mbed의 post to Twitter via SuperTweet 

먼저 트위터 아이디가 필요한데, 테스트를 위해 twitter.com 에서 ID를 하나 만들었다. EspressoDopio2. 참고로 내 트위터 아이디는 EspressoDopio

Supertweet.net 에 접속해서 docoment link에 가면 3가지 step으로 설명을 해 놓고 있다.
1. Sign UP/ Sign in now를 클릭해서 MyAuthAPIProxy가 계정 사용을 승인하도록 한다.
2. Basic Auth를 위한 패스워드를 설정한다. 이 password는 패스워드와 다르게 설정함.
이 설정이 되면 다음과 같이 Username이 나타다고 Secret 밑에 Show 를 클릭하면 내가 정한 password가 나타난다.


3. 이젠 임베디드 보드에서 트위터 메시지를 보내면 되는데, Twitter.com 대신에  http://api.supertweet.net 로 보내면 된다.
구체적인 방법은 http://www.supertweet.net/about/api 링크를 확인하면 되는데, 간단히 메시지 post하는 것을 설명하면…

 아래 예제는 curl를 사용해서 메세지를 보내는데, user:password는 위 테이블의 Username 즉 트위터 아이디가 되겠고, password는 Supertweet에서 설정한 password이다. 트위터 메시지는 “playing with cURL and the SuperTweet.net API” 이게 되겠다.

curl -u user:password -d “status=playing with cURL and the SuperTweet.net API” http://api.supertweet.net/1/statuses/update.xml
참고) cURL은 http://curl.haxx.se/ 에서 다운로드 가능. 윈도우 버젼도 있다.

실제 트위터에 메시지가 올라간 경우.


Wireshark로 실제 날라가는 패킷을 잡아보면 다음과 같다.

빨간색이 보낸 패킷이고 파란색이 받은 패킷이다.
보낸 패킷에서 2번째 줄이 Authorization인데, Basic 뒷 부분은 “Username:password” 가 base64로 인코딩되어 있고, 보낸 패킷의 마지막 부분의 status= 뒷부분이 보낸 메시지 이다.

따라서 임베디드 보드에서 이것을 구현을 하려면,
-. DNS: api.supertweet.net에 접속을 위해
-. HTTP Client
-. Base64 encoding 함수등이 구현이 되야 겠다.

구체적인 구현 결과물은 다음 기회에……


base64 encode & decode

base64란 64진수라는 뜻.
즉 2진수 데이터를 64진수 데이터로 변경하는 것.
예를 들면 a, b, c의 경우 ASCII값은 0x61, 0x62, 0x63이고, 2진수로 01100001, 01100010, 01100011이다
이것을 6bit씩 끊으면…. 011000  010110  001001 100011 가 되고, 각각 값은 0x18(24), 0x16(22), 0x09(9), 0x23(35)가 된다.

base64의 문자셋은 다음과 같으므로,
A~Z : 0 ~25
a~z : 26 ~51
0~9 : 52 ~ 61
+      : 62
/      : 63
위 abc는 YWJj가 된다.

만약 딱 떨어지지 않는 경우 남는 비트의 경우 6 bit 문자를 0으로 padding하고 그래도 남는 6 bit 문자는 = 으로 치환한다.

C코드


#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <endian.h>
 
static const char MimeBase64[] = {
    ‘A’, ‘B’, ‘C’, ‘D’, ‘E’, ‘F’, ‘G’, ‘H’,
    ‘I’, ‘J’, ‘K’, ‘L’, ‘M’, ‘N’, ‘O’, ‘P’,
    ‘Q’, ‘R’, ‘S’, ‘T’, ‘U’, ‘V’, ‘W’, ‘X’,
    ‘Y’, ‘Z’, ‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’,
    ‘g’, ‘h’, ‘i’, ‘j’, ‘k’, ‘l’, ‘m’, ‘n’,
    ‘o’, ‘p’, ‘q’, ‘r’, ‘s’, ‘t’, ‘u’, ‘v’,
    ‘w’, ‘x’, ‘y’, ‘z’, ‘0’, ‘1’, ‘2’, ‘3’,
    ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’, ‘+’, ‘/’
};
 
static int DecodeMimeBase64[256] = {
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 00-0F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 10-1F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,62,-1,-1,-1,63,  /* 20-2F */
    52,53,54,55,56,57,58,59,60,61,-1,-1,-1,-1,-1,-1,  /* 30-3F */
    -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,10,11,12,13,14,  /* 40-4F */
    15,16,17,18,19,20,21,22,23,24,25,-1,-1,-1,-1,-1,  /* 50-5F */
    -1,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,  /* 60-6F */
    41,42,43,44,45,46,47,48,49,50,51,-1,-1,-1,-1,-1,  /* 70-7F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 80-8F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* 90-9F */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* A0-AF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* B0-BF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* C0-CF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* D0-DF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,  /* E0-EF */
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1   /* F0-FF */
};
 
typedef union{
    struct{
        unsigned char c1,c2,c3;
    };
    struct{
        unsigned int e1:6,e2:6,e3:6,e4:6;
    };
} BF;
 
int endian = 0; // little : 0, big : 1
 
void base64e(char *src, char *result, int length){
    int i, j = 0;
    BF temp;
 
    if(endian == 0){ // little endian(intel)
        for(i = 0 ; i < length ; i = i+3, j = j+4){
            temp.c3 = src[i];
            if((i+1) > length) temp.c2 = 0x00;
            else temp.c2 = src[i+1];
            if((i+2) > length) temp.c1 = 0x00;
            else temp.c1 = src[i+2];
 
            result[j]   = MimeBase64[temp.e4];
            result[j+1] = MimeBase64[temp.e3];
            result[j+2] = MimeBase64[temp.e2];
            result[j+3] = MimeBase64[temp.e1];
 
            if((i+2) > length) result[j+2] = ‘=’;
            if((i+3) > length) result[j+3] = ‘=’;
        }
    } else { // big endian(sun)
        for(i = 0 ; i < length ; i = i+3, j = j+4){
            temp.c1 = src[i];
            if((i+1) > length) temp.c2 = 0x00;
            else temp.c2 = src[i+1];
            if((i+2) > length) temp.c3 = 0x00;
            else temp.c3 = src[i+2];
 
            result[j]   = MimeBase64[temp.e4];
            result[j+1] = MimeBase64[temp.e3];
            result[j+2] = MimeBase64[temp.e2];
            result[j+3] = MimeBase64[temp.e1];
 
            if((i+2) > length) result[j+2] = ‘=’;
            if((i+3) > length) result[j+3] = ‘=’;
        }
    }
}
 
void base64d(char *src, char *result, int *length){
    int i, j = 0, src_length, blank = 0;
    BF temp;
 
    src_length = strlen(src);
 
    if(endian == 0){ // little endian(intel)
        for(i = 0 ; i < src_length ; i = i+4, j = j+3){
            temp.e4 = DecodeMimeBase64[src[i]];
            temp.e3 = DecodeMimeBase64[src[i+1]];
            if(src[i+2] == ‘=’){
                temp.e2 = 0x00;
                blank++;
            } else temp.e2 = DecodeMimeBase64[src[i+2]];
            if(src[i+3] == ‘=’){
                temp.e1 = 0x00;
                blank++;
            } else temp.e1 = DecodeMimeBase64[src[i+3]];
 
            result[j]   = temp.c3;
            result[j+1] = temp.c2;
            result[j+2] = temp.c1;
        }
    } else { // big endian(sun)
        for(i = 0 ; i < src_length ; i = i+4, j = j+3){
            temp.e4 = DecodeMimeBase64[src[i]];
            temp.e3 = DecodeMimeBase64[src[i+1]];
            if(src[i+2] == ‘=’){
                temp.e2 = 0x00;
                blank++;
            } else temp.e2 = DecodeMimeBase64[src[i+2]];
            if(src[i+3] == ‘=’){
                temp.e1 = 0x00;
                blank++;
            } else temp.e1 = DecodeMimeBase64[src[i+3]];
 
            result[j]   = temp.c1;
            result[j+1] = temp.c2;
            result[j+2] = temp.c3;
        }
    }
    *length = j-blank;
}
 
int main(void){
    char str1[]=”테스트문자열입니다.ABCabc123,./”;
    char str2[]=”7YWM7Iqk7Yq466y47J6Q7Je07J6F64uI64ukLkFCQ2FiYzEyMywuLw==”;
    char *result;
    int src_size;
    struct timespec start,end;
 
    if (__LITTLE_ENDIAN == BYTE_ORDER) endian == 0;
    else endian == 1;
 
    src_size = strlen(str1);
    result = (char *)malloc((4 * (src_size / 3)) + (src_size % 3 ? 4 : 0) + 1);
    clock_gettime(CLOCK_REALTIME, &start);
    base64e(str1, result, src_size);
    clock_gettime(CLOCK_REALTIME, &end);
    float time_dif = (end.tv_sec – start.tv_sec) + ((end.tv_nsec – start.tv_nsec) );
    printf(“함수 수행 시간: %f\n”, time_dif);
    printf(“%s\n%s\n”,str1,result);
    free(result);
 
    src_size = strlen(str2);
    result = (char *)malloc(3 * (src_size / 4));
    base64d(str2,result,&src_size);
    printf(“%s\n%s\n길이:%d\n”,str2,result,src_size);
    free(result);
}

온라인에서 base64를 테스트 할 수 있는 사이트 : http://ostermiller.org/calc/encode.html

 


오스트리아 인스부르크

알프스의 장미라고도 불리어지는 인스부르크는 오스트리아의 가장 빼어난 자연 경관을 가진 티롤지방의 주도로써 인(INN)강을 잇는 다리라는 뜻을 내포하고 있다.
인구 13만명의 소도시인 인스브룩은 1964년과 1976년 동계올림픽을 두 번이나 개최한 알프스 유럽의 문화와 행정의 중심지로 대학생 인구만 3만명이나 되는 교육의 도시이기도 하다.
또한 3000미터급의 알프스 산들은 천혜의 자연경관으로 둘러 싸여 있어 레포츠를 즐기기 위한 마니아들의 발길도 끊이질 않는다.


알프스를 배경으로 하는 인스부르크 시내


인스브르크 시내: 멀리 스키 점프대가 보인다.



건물 발코니에 있는 독특한 조형물
마리아테레지아 거리
2012년 Youth Olympic을 알리는 전광판
황금지붕으로 가는 길: 멀리 황금색 지붕이 보인다. 길가 상점의 안내표지가 정교하고 아름답다.예술의 도시 답게 무료 음악회도 열린다.
사진을 찍는 관광객들인스부르크 개선문
인스부르크의 유일한 한국 식당 KENZI, 일식을 겸하고 있다.
위치는 황금지붕 부근. 홈페이지도 있네요. http://www.kenzi.at/
알프스를 올라가기 위한 열차. 이 열차를 타고, 2번의 케이블를 타면 정상까지 오를 수 있다.
열차를 타고 오른 첫번째 정거장인근에 비행장이 있어서 하늘에 구름이 예술이다.


산길을 따라 마운틴 바이크를 즐기는 사람들


1번째 케이블카를 타고 내린 곳에서의 풍경


환상적인 풍경을 즐기며 식사를 하는 사람들…
헐.. 안장없는 자전거를 대여도 해준다.


알프스 정상에서의 전경




겨울이면 이곳에 4-5m눈이 쌓여서 스키를 탄다고 한다.
구름위의 스키장이라고나 할까?
스키시즌에 인스부르크 시내에서는 스키복과 장비만 가지고 있으면 모든 교통시설이 공짜라고 한다.


드뎌 알프스 정상.. 카메라로 잡은 사진은 한계가 있다.
두 눈에 보이는 광경은 어메이징~~ 이런 자연을 주신 주께 감사, 이런 자연을 볼 수 있는 두 눈을 주신 주께 감사…


[책] 디퍼런트, 넘버원을 넘어 온리원으로

동일함이 지배하는 세상에서 아이디어 브랜드는 어떻게 세상을 경영하는가?

특정 카테고리에 얼마나 많은 브랜드 및 제품이 출시되어 있는지 확인해보면 그 시장이 얼마나 성숙되어 있는지를 알 수 있다. 하지만 카테고리가 성숙한다고 해서 다양성이 확보되는 것은 아님. 오히려 그 반대이다. 왜냐면 제품간의 차이는 점점 좁아지고 오직 전문가만이 제품의 차이를 구별할 수 있다.

소비자조사
소비자조사를 통해 얻을 수 있는 것은 오직 자신들이 상대적으로 가지고 있지 못한 특성들에 대한 지적뿐이다. 소비자는 개선만 얘기할 뿐이고 이 제품들이 어디까지 발전할 수 있는가에 대해서는 아무도 얘기하지 않는다. 그리고 얼마나 획기적인 제품이 가능한지에 대해서도 말을 해주지 않는다

제품진화의 패러다임
제품 확장(product augmentation)

1) 추가적 확장(augmentation by addition): 기존 제품에 기능을 추가하는 방식
2) 증식적 확장(augmentation by multiplication): 선택의 폭을 넓히기 위해 제품포트폴리오를 확장하는 것

소비
소셜 네트워크에서 소비는 개인(자기 정체성)을 드러내는 무기
소비의 5가지 유형: 카테고리 전문가, 기회주의자, 실용주의자, 냉소주의자, 브랜드 로열리스트

아이디어 브랜드 사례
1) 역 브랜드(reverse-positioned brand) : 구글, 젯블루, 이케아, 인앤아웃버거
기존 가치들을 없애버리면서 동시에 새로운 가치를 만들어 낸다. 부가가치를 없애고 핵심적인 가치들로만 조합을 만들어 낸다.
2) 일탈 브랜드(breakaway brand): 소니 아이보, 킴벌리 풀업스,태양의 서커스단, 스와치, 알레시의 주방용품
3) 적대 브랜드(hostile brand): 레드불, 마마이트, 버켄스탁 어글리, 베이딩 에이프, 홀리스터, 베네통

차별화

-. 차별화는 곧 포기를 의미. 한 분야의 최고가 되기 위해서는 다른 분야를 포기해야 한다.즉 자신의 강점을 더욱 강화하라!
-. 차별화는 불균형의 상황을 더욱 불균형하게 만드는 과정에서 얻어지는 것
-. 고정관념을 뒤엎고 엉뚱한 가치를 선보여라.
-. 차별화는 사회적으로 중요한 의미가 있어야 진정한 차별화로 인정된다.

진정한 차별화는 혁신을 통해 가능, 기술적 차원이 아니라 개념적 차원의 혁신
진정한 의미의 혁신은 제거, 분열, 변형을 통해 가능
-. 확장이 아닌 제거: 구글, 이케아
-. 분열(소비자 계층을 양분화): ex) 미니쿠퍼, 버켄스탁
-. 변형: 제품자체가 아니라 제품에 대한 소비자의 인식 ex) 로봇을 애완견, 기저귀를 팬티

차별화는 전술이 아니라 새로운 생각의 틀이다.
-. 새로운 눈으로 세상을 바라보는 태도, 사람들을 이해하고, 그들의 생각과 행동을 인정하는 태도
-. 100%의 정답이 아니라 2%의 흥미로운 아이디어를 보여주는 것
-. 비딱하게 보려는 노력, 논쟁을 유발할 수 있는 아이디어를 제시하는 것

아이디어 브랜드
아이디어 브랜드들이 어떻게 발전할 것인가?
1) 희귀한 가지의 제안: 여백, 침묵, 많은 보다 적음, 외침 보다 속삭임.
2) 거대한 아이디어의 실천: 전반적인 차원에서 차별화를 추구
3) 인간적인 숨결: 인간의 복잡하고 모순된 생각과 감정을 적극적으로 수용하고 이를 활용할 줄 아는 브랜드, 직관, 통찰력

한줄요약: 차별화를 이루기위해서는 경쟁을 피하고, 새로운 생각의 틀로 바라보라



Pachube 인수되다…

지난번 유럽방문시 영국의 펍에서 잠시 Pachube(발음은 patch bay)의 CTO를 만났는데,

올 7월에 이 회사가 LogmeIn사(Nasdaq:LOGM)에 인수 됐습니다 ($15M). 날짜상으로 바로 저희가 만난 직후네요.

Pachube의 블로그상에는 이것을 “Pachube just got some rocket fuel!” 이라고 표현을 하고 있습니다.

LogMeIn상의 공식 press release 자료: https://investor.logmein.com/releasedetail.cfm?ReleaseID=592763



Pachube(pachube.com)는 IoT를 지향하며, 기기들의 real time data를 웹상에서 보여주는 서비스를 제공합니다.

이를 지원하는 기기들도 상용제품에서 arduino까지 다양하며, 앱도 지원을 하고 있습니다.


이중 Nanode는 Ken이 만든 보드입니다.
OggCamp에서 발표하는 Ken: Nanode – An Open Hardware Success Story




현재 웹페이지상에는 67,010여개의 디바이스가 연결이 되어 있는 것으로 나와 있으며,

각종 자료에서는 향후 10년이내에 인터넷에 연결된 디바이스가 50~60 billion 개가 될이라고 전망하는 가운데,

IoT를 지향하는 작은 기술 벤처가 M&A되는 사례라고 할 수 있을 것 같습니다.

LogMeIn사는 Pachube의 어떤 메리트를 보고 인수를 했을까요?

기술? 아니면 현재 서비스를 하고 있는 6만여개의 고객의 가능성?


Arduino Education


아두이노가 Store, Labs에 이어 Education이라는 카테고리를 만들었습니다. http://scuola.arduino.cc/en
교사를 위한 공간이지만 반드시 교사일 필요는 없고, 기존의 커뮤니티 처럼 모두가 참여할 수 있는 구조입니다.
아직 베타버젼이어서 현재 한 20 명정도가 참여하고 있는데, 활성화가 되면 이들의 커뮤니티 확장이 가속도를 내는 것 같습니다.


최근 Lesson중 하나인 아두이노 이더넷 관련 내용 한번 보시죠.



최신 보드인 Arduino Ethernet은 W5100이 메인 보드에 default로 들어가 있고, USB가 빠졌습니다. 대신 작은 USB to Serial 보드로 연결해서 툴과 연결을 합니다.

최근에 Arduino의 멤버인 Banzi가 Getting Started with Arduino의 2nd 버젼도 거의 완성이 됐다는 트윗도 있습니다.

@bjepson(Brian Jepson)은 OReillyMedia의 에디터…


Pages:1...39404142434445...56