:::: MENU ::::
Posts tagged with: 트위터

임베디드보드에서 트위터하기 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 함수등이 구현이 되야 겠다.

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


안드로이드용 트위터 어플

스마트폰으로 할 수 있는 일은 많지만 그중에 제가 가장 많이 사용하는 어플중의 하나가 트위터입니다. 물론 안드로이드용 공식 트위터 어플도 있지만 제가 즐겨쓰는 트위터 어플은 TweetCaster입니다.


인터넷상에서 여러가지 안드로이드용 트위터 어플을 비교해 놓은 내용을 발견했습니다.
제가 쓰고 있는 TweetCaster는 별로 평이 좋지 않네요. -_-;;
하지만 인터페이스는 각자의 취양에 따라 다르니 어떤게 딱히 좋다고 할 수 없습니다.


일단 몇가지 어플들을 다운 받아서 테스트를 해봤습니다.
제가 주안점을 둔 것은 속도와 다음의 기능이 있는지 여부입니다.

  • Jump to Top 기능: 타임라인에 글이 많을 때 제일 최근의 트윗으로 이동하는 기능입니다. 이게 없으면 위로 계속 스크롤해서 올려야 합니다.

  • List 기능: 트위터를 시작하고 팔로잉하는 사람들의 수가 늘어나면 필수적으로 사용을 하게 되는 기능입니다.

  • RT with comment: 단순히 RT를 하는 것이 아니고 코멘트를 달 경우 필요합니다

Seesmic
    깔끔한 인터페이스에 대부분의 기능을 보유하고 있지만 어플시작시 로딩시간이 너무 깁니다.
    Jump to Top 기능이 없습니다.
HootSuite
   인터페이스가 익숙하지 않고 동작이 불안합니다.
Touiteur
    불어식 발음으로 트위터라고 한답니다. 
    화려한 인터페이스를 자랑하지만 이로 인해 종종 버벅거립니다.
Tweetsride
    실행을 하면 바로 어플이 뜨는데, 이것은 이전에 로드한 트윗을 보여주는 것이기 때문에 빠르다고 할 수 없습니다.
TweetCaster
   약간 속도가 느린감이 있는데, 위에 제가 요구하는 모든기능을 가지고 있습니다. 
   따라서 저는 이걸 사용하고 있습니다. 
   프리 버젼은 하단에 광고가 나오는데, 인터넷에 찾아보니 이걸 없애주는 키가 있습니다. ^^

그런데 이 사이트에서 투표를 했는데 가장 많이 사용되는 어플은 Seesmic 이네요.


혹시 어떤 트위터 어플을 쓰시나요???