아래 글을 사실 몇 주전에 Twitter API를 분석하기 위해서, 정리하던 자료로 Google Docs로 만들었던 자료의 일부이다. 실제로는 Twitter API 를 이용하여 개발을 할때는 자기가 원하는 언어와 툴을 사용하여 개발을 할 수 있도록, 문서들을 제공하고 있지만 자신이 자신있는 개발언어와 코드를 보면 더 쉽게 이해할 수 있을 것이다. 

개인적으로는 google app engine에 올릴 작은 서비스를 만들기 위해서 Java 라이브러리를 찾았는데, 그때 정리했던 자료인데, 별로 도움이 안 될거 같아서 그냥 지울까하다가 Blog에 올린다.

[간략히 정리한 자료]
Twitter API는 두개의 파트로 구성되어 있다. 이는 역사적이 이유때문인데, 회사의 사명이 바뀌고 Rebranding되었기 때문이다.
    - REST API, Search API => 향후에도 분리된 형태로 남을 것이다.
 
The Twitter REST API:
    - 개발자들이 Twitter core data로 접근이 가능하다.
        . update timelines, status data and user infomation
The Search API:
    - 개발자들이 Twitter Search와 Trands data의 기능의 사용할 수 있도록 해준다.
 
Rate limiting
    - Twitter API는 clients가 주어진 사간에서 제한된 수의 Calls을 만들수 있도록 허락하고
    - 이러한 정책은 두종류의 API들을 통해서 다른 방법으로 적용된다.
 
REST API Rate Limiting
    - REST API 는 시간당 100개의 requests의 기본적인 제한을 가지고 있다.
    - account and IP-based rate limitig을 가지고 있고
    - HTTP Post 를 이용하여 Twitter에게 데이터를 전송하는 경운는 제약이 없다. 
        . statuses/update 와 같을 경우에....
 
Twitter Access in Java
    - Java library
    - 모든 library를 설치해서 사용하기 보다는, 인터넷에 올라온 분석글들의 도움을 받아보니, 이중에서 Twitter4J 가 괜찮은 것 같다.

나중에 실제로 Twitter4J를 사용해보았는데 사용법이 어렵지 않아, Twitter를 사용해 본 경험이 있는 개발자라면, 쉽게 사용할 수 있다. 
사실, Twitter에서 제공하는 인터페이스를 랩핑한 코드들이기 때문에, 쉬워 보일지도 모른다.

테스트를 하면서, 갑자기 동작이 안하는 경우가 발생하는데, 이경우 API를 너무 많이 호출했는지를 먼저 의심해 보아야 한다. Twitter는 Open Platform이기는 하지만, 동일 IP주소를 사용하는 PC와 Device에 제약사항이 있는데, 시간당 100회와 하루 24시간동안 1000회를 이용 가능하도록 되어 있다. 

이러한 제약 사항을 기억하고 있다면, 원하는 서비스 모듈을 만들어 사용하는데 큰 어려움과 부족(?)함이 없을 것이다.


Posted by 행복상자
Sun에서 GPL 라이센스로 개발하고 공개하고 있는 이전에 소개한 이후로 계속 버전을 업그레이드 하고 있다.
내가 개발에 필요할 때가 아니면, 자세하게 변경 내용을 들여다 보지 않는터라 얼마나 변경되었는지 알지 못하고 있다가, 이번에 싸이트를 방문하고 나서야 벌써 3.0으로 업그레이드 되었음을 알게 되었다.

이에 대한 설치 방법은 이전에 써 놓았던 아래의 Blog를 참조하면 된다.


사실 VirualBox 2.2가 지난 4월에 나오고 얼마되지 않아 VirtualBox 3가 지난 6월 30일 나온 것은 굉장히 빨리 버전이 올라가는 있다는 것인데, 그리고 나서 7월 10일 경에 3.0.2로 업그레이드한 버전을 Release하였다는 것은 기능적으로 빠르게 추가되고 있다는 의미이기도 하지만, 내부적으로 Defact가 많다는 의미이기도 하다. 

이에 대한 기존 VirtualBox2와 3의 다른 점은 Changelog에서 확인할 수 있다.

아는 사람들은 알겠지만, 몇개월 전에 Sun과 Oracle의 기업 합병이야기가 있었고, 두 회사는 다른듯하지만 내부적으로는 서버에 관련 소프트웨어 기술들은 많은 부분 유사하고 중복되어 있다. 그 중 하나가 가상화 기술은데, 합병의 여파로 VirtualBox가 중단되지 않나하는 우려도 있었는데, 지속적으로 버전업하고 있는 것은 상당한 의미를 내표하고 있다.

VirtualBox 3는 현재 Windows, Linux 그리고 Macintoch 와 OpenSolaris에서 호스트로 도작할 수 있으며, 다음과 같은 guest OS들을 사용할 수 있다. (아래 표 참조)
현재 나와 있는 OS중에서 많이 사용되고 있는 것들은 거의 모두 사용이 가능하다. 


eam. (Page last updated 2009-06-12)


Guest OS Status Remarks
Windows family
Windows 7 RC Works, with Additions
Windows Vista Works, with Additions
Windows 2000 Works, with Additions
Windows XP Works, with Additions
Windows Server 2003 Work, with Additions
Windows NT Works, with Additions Some issues with old service packs. Recommended to install service pack 6a.
* Windows 98 Works, no Additions available
Linux family
Generally, all 2.4 and 2.6 kernels work; however, we recommend 2.6.13 or above for better performance. Kernels 2.6.18 to 2.6.18.2 contain a race condition (which was unfortunately backported to the Ubuntu 6.06 Server and 6.10 kernels) that can cause boot crashes in virtual machines.
Ubuntu 5.10/6.06 Desktop/7.04/7.10/8.04/8.10/9.04 Work, with Additions
Ubuntu 6.06 Server/6.10 Works partially, with Additions The Ubuntu 6.06 Server and 6.10 kernels suffer from the race condition mentioned above.
Debian 3.1/4.0/5.0 Work, with Additions
SUSE 9/10.0 Work, with Additions
openSUSE 10.2 Works partially, with Additions The openSUSE 10.2 kernel suffers from the race condition mentioned above.
openSUSE 10.3 Works, with Additions
openSUSE 11.0/11.1 Work, with Additions
Mandriva 2008 Works, with Additions Mandriva 2008 has the guest additions for VirtualBox 1.5 installed by default. These should be updated after installation.
Mandriva 2009.0/Mandriva 2009.1 Work, with Additions
Mandrake 10.1 Works, with Additions
*Mandrake 9.2 Works, without Additions
Fedora Core 1/4/5/6 Work, with Additions
Fedora 7, 8, 9, 10, 11 Work, with Additions
Red Hat Enterprise Linux 3, 4 and 5 Work, with Additions
* Red Hat Linux 9 Works, with Additions
* Red Hat Linux 7 Works, without Additions
* Linspire 4.5 Works, with Additions
* Slackware 10.1 Works, with Additions
* Conectiva 10 Works, with Additions
* Xandros 3 Works, no Additions available
Xandros 4 Works, with Additions
ArchLinux Works, with Additions Installation has to be booted with the ide-legacy option.
Solaris
Solaris 10 5.08 and later Works, Guest Additions available No shared folder support yet.
OpenSolaris 2008.05 and later Works, Guest Additions available No shared folder support yet.
Unices
FreeBSD Works partially FreeBSD 6.2 is known to cause problems.
* PC-BSD 1.3 Doesn't work
OpenBSD Works, no Additions available
Others
DOS Works, no Additions available Only limited testing as part of system installation processes has been performed.
OS/2 Works, with Additions Requires VT-x hardware virtualization support. Only MCP2 is reported to work reliably so far.
QNX Neutrino 6.32 Doesn't work
* Novell Netware 6.5 Doesn't work
* BeOS 5 Doesn't work
Syllable Works, no Additions available
* Visopsys Doesn't work
ReactOS Works, no Additions available
* SkyOS Works, no Additions available




Posted by 행복상자
ScottGu's Blog에 "실버라이트 버전 3의 Release"에 대한 글이 올라왔다. 미국시간으로 7월 10일자로 Release된 것이다. Silverlight 2가 작년에 Release되고, 채 1년도 되지 않았는데 벌써 버전 3를 정식으로 Release된 것은 굉징히 빠르게 기능을 개선하고 개발하고 있다는 반증과 같다.

Scott Gusly는 그의 블로그를 통해서 새로 정식으로 Release된 Silverlight 3의 Feature를 아래과 같이 소개하고 있다.

Siverlight 3는 하드웨어 그래픽 가속을 이용하여 HD 비디오를 볼수 있도록 도와준다. 이는 낮은 사양을 PC를 가진 사용자가 GPU를 이용하여 웹을 이용하여 동영상을 1080p HD비디오를 즐길수 있다.
하지만, 낮은 사양의 PC의 사양의 PC에서 1080p를 즐길수 있을 만한 비디오는 제한되어 있다. AGP에서 1080p를 지원하는 GPU를 탑재한 그래픽 카드는 생각보다 구하기 힘들다. 요즘은 PCI-Express기반의 인터페이스를 지원하는 그래픽카드가 많이 나와있고, 대중화 되어서 오히려, AGP에서 1080p를 구동가능한 그래픽카드는 구하기 쉽지 않다. 
특히 요즘 많이 사용하고 있는 인텔의 Atom침 기반의 넷북들은 싼가격을 이유로 낮은 사양의 GPU침을 탑재하고 있어서, 이러한 기능을 어떤 사용자에게는 그림의 떡이다.

그래도, 다행 스러운 것은 Nvidia에서 개발하고 있는 ion 플랫폼 기반의 넷북을 사용한 넷북들이 출시된다면, 이러한 약점들은 많은 부분 커버될 것이라 생각된다. 또한 인텔도 자사에서 개발한 넷북보드의 최대 약점으로 알려져 있는 그래픽칩셋에 대한 보안책들을 계속 내놓고 있다.

Silverlight 3눈 새로운 코덱들을 지원한다. H.264 video, AAC 그리고 MPEG-4 컨텐츠를 지원한다.
그리고 IIS Media Services를 이용해서 HTTP상에서 Streaming Sevice를 제공할 수 있다.
이에 대한 데모는 여기에 있으니 참조하길 바란다.

Silverlight 3 는 브라우져 밖에서도 Application으로 독립적으로 동작할 수 있다.
이는 새롭게 만든 애플리케이션이 단지 웹 브라우져에서만 동작하는 것이 아니라, 윈도우즈나 맥환경에서 애플리케이션으로 설치되고 동작할 수 있다는 것을 의미한다.
이를 위해서 개발자는 네트워크 상태를 모니터해서, 네트워크 모드로 또는 Off-line모드로 동작할지 선택이 가능하게 만들어 줄 수 있다. 그리고 Silverlight 3는 자동으로 애플리케이션을 업그레이드 할 수 있기 때문에 웹상에 새로운 버전이 있다면, 이를 다운받아 인스톨이 가능하다.

Silverlight 3를 위한 개발툴 도한 새로 Release 되어서 다운로드가 가능하며 VS2008에서 사용가능하다. 
툴은 아래 링크에서 다운로그 가능하다.
       - VS 2008 Tools for Silverlight: 다운로드
       - Silverlight Toolkit(추가 컨트롤): 다운로드


 
 
Posted by 행복상자
늦은 시간은 아니지만, 일이 늦게 마무리 되는 바람에 집에 이에서야 들어왔다.
간단하게 요기를 하려고, 라면하나를 끓여놓고 TV를 켜보니, "마이클 젝슨 전설로 잠들다"라는 제목으로 추모 공연이 방송대고 있었다.
아마도, 오늘 새벽에 있었던 추모공연을 녹화 방송을 하는 것 같다.
버라이어 케리가 나와서 "I Will Be There"를 부르는데, 목소리는 이전과 다름이 없는데, 그녀의 모습은 이전과 같지 않았다. 세월이 지나서 나이가 들어서 일지도 모른다.

80년대, 90년대를 추억하면, 결코 빠지지 않는 수 많은 기억속의 가수들이 그를 위해서 노래를 불러주고 있기에, 갑자기 예날을 추억하게 되었다. 내가 초등학교, 중학교 시절의 "마이클 젝슨"은 거의 신의 반열에 이르러 있었던 가수였다. 그의 노래를 따라부르고 춤을 추고, 그의 노래가 담긴 판이 시장에 나오면, 한국의 모든 가수의 판매량을 합쳐도 따라갈수 없는 정도로 많았다라는 것이 내가 기억하고 있는 그다.

그가 출연한 뮤직 비디오 역시, 내가 어렸던 그 당시로는 상상하기 힘든 많은 효과들을 담고 있었다. 내가 그때까지 들었던, TV와 라디오가 주로 사용되던 미디어 였지만, 역시 음악과 노래는 라디오라는 매체가 가장 대중적이었다. 그렇지만 그때까지 듣던 노래는 어느던 보는 노래가 바뀌고 말았다.

누구 보다도 그를 열광적으로 좋아한 적은 없는 나지만, 오늘은 그의 노래와 춤을 느끼고, 즐기면서 그리고 추억하면서 하루를 마무리 하려고 한다.
그를 위해서 그의 친구들이 불러주는 노래들을 가슴으로 느끼면서 말이다.

마지막으로, 그가 가장 좋아했던 노래는 찰리채플린의 모던 타임즈에 나오는 "스마일"이란다. 
 
Posted by 행복상자
오늘은 집에 아무도 없는 관계로 이것 저걱 시도해 보았다.
결과 적으로는 아무것도 한것이 없는 것이 되어 버렸지만, 많은 것을 하려 했던 시도자체의 문제라기 보다는 집중하지 못하는 것이 문제 였다.

하루중에서 가장 기억나는 것은 오전에 케이블 방송에서 해주었던 어떤 프로그램에 대한 것이었다.
별로 TV를 즐기거나, 좋아하지 않는다. 물론 한번 빠지면, 이것 저것 제쳐놓고 꼭 보고야 마는 집요한 성격을 가지고 있지만, 회사가 집과 먼 관계로 집중해서 보는 프로그램은 없다. 
그런데, 집에 들어오면 꼭 TV를 틀어놓고 다른 일을 하거나, 책을 보곤한다. 아니면, 오늘 처럼 노트북을 펼쳐놓고 다른 작업을 하면서, TV에서 나오는 소리를 마치 라디오 방송을 듣는 것처럼 듣곤한다. 이 경우 대부분 뉴스를 하는 방송에 채널을 고정해 놓는다. 요즘은 24시간 뉴스만 틀어주는 방송이 있으니까, 시간마다 기다릴 필료도 없다.

TV채널을 틀다가, 한 방송에 나의 시선이 고정되었다. 늦은 오전 이었지만 아직 식사 전이어서인지, 시장했던 나는 맛있어 보이는 스테이크를 보여주는 화면에 푹 빠져버렸다. 정말 맛있어 보이는 큼직한 스테이크 였다. 방금 구워서인지 화면 속에서 보이는 김이, 나의 코와 입속의 침샘을 자극해 버렸다.

채널이 고정되고, 정신을 차리고 어떤 프로그램인지 살펴 보았다. "미션! 최고의 레스토랑2"라는 제목으로 미국에서 제작된 방송이는데, 망하기 일보직전인 레스토랑을 살리는 프로그램이었다.
중간을 지나서 방송을 보기 시작해서, 중간에 어떤 사연들이 있었고, 어떠한 준비를 하였는지는 모르겠지만, 새롭게 개장한 레스트랑은 새로은 음식과 소스를 가지고 손님들을 맞이하고 있었다.

주방에서는 이 프로그램의 주인공(?)격인 주방장의 지시에 따라 음식이 만들어 지고 있었다.
새로 만들어진 음식과 소스는 이전과는 달리 맛있고 차별화된 메뉴였기 때문에 손님들에게 인기가 있을거라 모두들 기대하고 있었고, 실제로 손님에게 음식이 나오자 손님들의 반응이 좋았다.

여기서, 모든 이야기가 끝이라고 생각했는데, 그것이 아니었다. 주방에서는 주방장의 지시로 만들어지는 음식들이 하나 하나 체크되어지고, 식당으로 나갈 음식의 그릇조차 지져분해 보이면, 가차없이 경고가 이어졌다. 저녁시간에 되어, 레스토랑에 손님들이 점점 늘어나는 상황에서, 제한된 인원과 리소스를 가진 주방에서는 마음만큼 음식들이 만들어 지지 못하는 상황이었고, 급한 마음과 달리 실수가 많아지기 시작하였다.
그러한 상황에서도 메일 주방장은 결코 음식의 질에 대해서 양보하지 않았고, 더욱더 음식에 대한 요구가 많아지기 시작하였다. 
이러한 상황에서, 1시간이 넘도록 기다리는 손님들이 생겨나기 시작하였고, 결국 사장과 지배인을 불러서 불만을 이야기 하는 상황이 되었다. 사장은 당황하였고, 어찌할 바를 몰랐다. 조금만 더 기다리게 하면 손님들이 그냥 돌아가는 사태가 일어날 것이기 때문이었는데, 어떻게 기다리라고만 할 수 있겠는가?

결국, 주방으로 들어가서, 주방장에게 강력하게 음식을 빨리 만들어 줄것을 요청한다. 그러나 주방장의 태도는 별화가 없었다. 음식이 나오지만, 질적으로 떨어지거나, 제대로 만들어지지 않은 음식은 가차없이 다시 만들도록 한다. 그리고 제대로 만들어져 나온 음식일 지라도, 먹음직스럽게 셋팅되지 않거나, 소스가 티어서 지저분해 보이면, 이역시 제대로 잘 정리되지 않으면 내 보내지 않았다.

사장과 지배인은 이러한 상황에서, 주방장이 레스토랑으로 내보내려 하지 않던 음식을 직적 가지고 나가려고 하는데, 이때 주방장은 강력하게 제재를 가한다. 
이 순간을 타협해서는 안된다고, 음식의 질을 떨어뜨리면 결코 안된다고, 손님이 아무리 뭐라고 하더라도 음식의 질만을 유지해야하고 맛있는 음식을 손님에게 제공해야 한다고 강력하게 이야기 한다.
사장과 지배인 그리고 주방에서 일하는 다른 사람들은, 마침내 이 말에 동의하기 시작하고, 바쁘고 힘든 상황에서 서로와 서로를 격려하기 시작한다.

이때, 1시간 이상을 기다리던 손님은 욕과 함께 식당을 떠난다. 
주방에서는 공통된 목표가 있기 때문인지, 아니면 주방장의 격려의 목소리 때문인지 아까보다도 더 활기차게 음식을 만들고 있었다. 이 들이 만든 음식을 먹던 손님들은 모두가 만족스러워 한다. 
마침내 마지막 손님이 돌아가고, 남은 이들은 모여서 자신들이 이루어 낸 하루를 무척 만족스러워 하게된다. 
"다른 어떤 것보다도 음식의 질은 떨어뜨리지 말자. 손님에게 양질의 음식을 만들어 주어야 한다." 라는 주방장의 말을 끝으로 전쟁과도 같은 하루가 마쳐진다.
몇 달후, 이 레스토랑은 그 지역의 최고의 레스토랑으로 선정되고, 몇개의 상을 타게 된다. 

이 프로그램의 보면서, 내가 느꼈던 것은 개발자와 개발을 하는 회사는 과연 무엇을 위해서 타엽을 할까? 라는 생각이 들었다. 1시간 이상 기다리던 손님에게, 양질의 음식대신, 그렇지 못한 음식을 먹게하고, 별다른 만족을 주지 못한다면, 이 손님은 결코 다시 돌아오지 않을 것이다.
물론, 2시간씩 기다리게 하는 식당도 다시 가고 싶지는 않을 것이다. 하지만, 그렇게 기다릴 만큼 맛있는 음식이라면, 몇명은 다시 올지도 모르겠지만...

최근에 외근을 나간적이 있는데, 현장에서는 신 제품에 대한 품질에 대한 불만들이 많았다. 제품의 출시 일정을 맞추는 것은 상당히 중요할 일이기는 하지만, 그러나, 출시 일정때문에, 기준이하의 품질의 제품을 만든다면, 당장의 매출은 올릴수 있을지 모르지만, 그 다음은 확신할 수 없을 것이다.
당장의 이익과 장기적인 이익의 차이는 얼마나 큰 차이인지는 정확히는 모르지만, 개발자로서는 품질에 대한 고집을 가져가야 한다고 생각한다. 물론 이는 개발자의 몫일 뿐만 아니라 개발사의 몫이기도 하다.
한국의 개발현실은 그렇게 녹녹치 않다는 것도 이미 잘 알고 있다. 그러나, 정말 내가 타협하지 말아야 할 부분이 무엇인지를 생각할 수 밖에 없었다.

중소 IT업체의 CEO분을 만나서 들은 이야기 중에, 황당한 내용이어서 기억하고 있는 것이 있다. 어떤 프로젝트에서 말도 안되는 일정때문에, 일정을 맞추기 위해서 프리렌서를 모집해서, 고생끝에 개발을 완료하였는데, 이 프로젝트를 마침과 동시에 프리랜서들은 핸드폰 번호도 바꾸고 잠적해 버렸다는 것이다.
왜 잠적하였을까? 여러가지 이유가 있었겠지만, 결국 모두 망하는 길이 될 것임은 불 보듯 뻔하다.

회사에서 만들어 내는 제품도 마찮가지이다. 한 제푸의 신뢰가 또 다른 제품의 신뢰로 이어질텐데, 제대로 되지 않은 품질의 소프트웨어와 하드웨어를 고객에게 제공하고 이를 A/S를 통해서 품질을 보완한다는 것은 고객에게 책임의 일부를 전가하는 것과 같은 일이다. 
한가지 알아야 할 일은, 인터넷 시대의 고객을 무척 똑똑하다는 것이고, 그 입이 무척 크다는 것이다.

좋은 제품은 품질이 바탕이 되어야 하고, 개발자는 앞서 이야기한 요리사와 같이 항상 머리속에 되세겨야 할 것이다. 항상 하는 이야기이지만, 개발자는 자기의 코드를 통해서 이야기 해야 한다. 그리고 아키텍트는 복잡한 것을 단순화 시키는 능력으로 말을 해야 할 것이다.

이렇게 되기 위해서는 끊임없이 배우고 익혀야 한다.
조그마한 재주를 가지고, 누구를 기쁘게 할 지는 모르지만, 자기 조차 먹일수 없는 음식을 남에게 내 놓을수는 없을 것이기 때문에, 모자라는 부분은 지속적으로 개선해야 할 거라 생각한다.

오늘은 짧고 간단한 이야기를 하고 싶없는데, 말이 길어졌다.

 

 






















Posted by 행복상자