최근 몇주 사이에 꼭 만들어보고 싶었던 프로그램이 있었습니다. 한달반쯤 전엔가 아마존에서 'SMS로 아이템 이름을 날리면 (아마존에) 등록된 상품의 가격을 알려주는 서비스'를 오픈했다는 이야기를 들었었는데요,

아예 바코드부분을 사진찍어서 MMS로 보내면 되지 않을까 하는 생각이 들어 오픈소스 바코드 리더 프로그램도 검색해보고 API를 이용한 MMS발송대행업체도 찾아보고 했는데 결정적으로 MMS MO 가격이 너무 비싸서 포기했었지요. SMS MO만이라면 메신저봇 기반으로 그냥 공짜로 만들 수도 있는데 말이죠.

헌데 AndroidScan이라는 폰카기반 가격검색 프로그램이 Android 컨테스트를 통과해 구글에서 25,000달러(2억5천만원2500만원) + 알파의 상금을 받았다고 합니다.

바코드 인식로직이 서버가 아니라 디바이스에 존재하기 때문에 사진을 찍어서 저장했다가 메시지 형태로 서버까지 발송하는 번거로운 과정없이 단지 바코드를 스캔하는 것으로 원하는 액션을 수행할 수 있고(서버와 통신을 안하지는 않습니다. 뒤에 가려져있을 뿐), 가격정보 외에도 사용자들이 작성한 리뷰까지 한번에 가져온다는 매력이 있네요.

python으로 작성한 서버사이드에서 아마존, Yahoo 등의 API 및 반즈 앤 노블(API를 사용했다는 명시적인 표현이 없는 것으로 보아, 아마 페이지 스크레이핑을 한 것으로 생각됩니다) 등에서 데이터를 가공해서 디바이스에 보내준다고 합니다.

한편으로는 제 생각이 틀리지 않았다는 생각에 기쁘면서도, 역시 말로만 '내가 이런 서비스를 구상했었는데 말이야' 하며 떠들기보다 직접 만들어서 들고 나타나는게 진짜 실력이 아닌가..라는 씁쓸함이 느껴지네요.

이런 서비스들이 만들어지는 광경을 보고 있자니, 역시 "소프트웨어가 왕"이라는 생각을 한번 더 해보게 됩니다. 팜의 창립자 제프 호킨스가 (실패한 제품이긴 하지만) Foleo를 만들때 아예 cellular망 접속기능을 빼버리고 대신 자유를 얻은 일화라든지 스티브 잡스가 아이폰을 만들때 "너희가 웹을 아느냐"면서 이동통신사를 무시하고 제품에 집중한 일화를 본다면, 지금처럼 이동통신사가 망 그 자체의 ownership에 대해 집착하고 외부로부터의 혁신을 필터링하는 상황이 과연 얼마나 유효할지 의문입니다.

(몇일만에 서비스를 중단한 삼성네트웤스의 '감' 서비스의 경우도 그렇구요)

하지만 이미 이통사에 발을 들여놓은 입장에서, 괜히 회사가 이러네 저러네 하며 불평을 늘어놓기보다는 실용주의자의 자세로 한걸음씩 나아가야겠지요. 그게 제가 할 일인 듯.

  1. Favicon of http://gouache.tistory.com BlogIcon 과슈 2008.05.29 12:30 신고 댓글주소 | 수정 | 삭제 | 댓글

    정말 안타깝네요~ ^^*;;
    특허라도 한건 하셨으면 좋았을텐데요 :)

  2. 현준 2010.03.25 16:41 신고 댓글주소 | 수정 | 삭제 | 댓글

    ㅠㅠ 상당히 아쉽네요..증말..
    상금이 문제가 아니겠죠~ ㅋ


집에 리눅스 기기가 3대 있습니다. (데스크탑 제외) 리눅스 매니아는 아닌데, 펌웨어 해킹이 가능해서 가격대 성능비가 잘 나오는 장비들을 사모으다 보니, 벌써 이렇게나 많아졌네요.


첫째는 유무선공유기 링크시스 WRT54G입니다. 아는 사람은 핵펌 깔아서 더 상위기종에서나 지원되는 각종 기능을 소프트웨어적으로 지원하는 아주 훌륭한 기계랍니다. 저도 DD-WRT 핵펌을 깔고 Dynamic DNS 업데이트 등의 부가적인 기능을 사용하고 있습니다.

둘째는 네트웤 스토리지 링크시스 NSLU2입니다. 이 기계에 대해서는 작년말의 포스팅에서 다룬바 있기에 설명은 생략합니다. 이 기계 역시 핵펌을 깔면 거의 완벽한 리눅스 서버로 탈바꿈시킬 수 있습니다. 현재 OpenSlug를 깔아서 조금 느린 리눅스 서버로 쓰고 있습니다.

셋째는 최근 블로그에 많이 포스팅했던 노키아 N810입니다. 핵펌같은걸 깔지 않아도 자연스럽게 쓸 수 있는 리눅스 핸드헬드기기죠.

WRT54G와 NSLU2의 경우는 각각 OpenWRTNSLU2-Linux에서 toolchain을 제공하는데, 문제는 제가 임베디드 소프트웨어에는 전혀 경험도 감각도 없기 때문에 이걸 사용해서 뭔가를 만들거나 컴파일하는게 불가능했다는데 있었습니다. 남들이 이미 컴파일해놓은 패키지를 다운로드받아 설치하는 정도가 제가 할 수 있는 한계였지요.

헌데 N810의 경우는 노키아에서 Scratchbox를 이용해 상당히 깔끔한 개발환경을 꾸며놓았더군요. 임베디드에 익숙하지 않는 저도 그닥 어렵지 않게 실행파일을 만들 수 있을 정도로.. 그래서 scratchbox를 이용해서 나머지 장비들용 소프트웨어를 빌드해보기로 마음먹었습니다.

그런데 결정적으로 scratchbox 자체는 간단한데, 이 scratchbox 위에서 돌아가는 크로스컴파일용 툴체인을 build하는게 정말 어렵더군요. 대충 알아보니 Dan Kegel(자꾸 괄약근 운동을 떠올리게 하는.. 구글 직원입니다)이 만든 crosstool을 이용하는 것 같은데, 대충 줏어들은대로 스크립트를 실행하니 각각의 gcc버전과 glibc버전에 해당하는 소스를 받아다가 뭔가 컴파일하긴 하더군요. 그런데 하드디스크 몇 GB는 한방에 그냥 잡아먹어버리는데다가 중간에 알 수 없는 오류와 경고를 마구 토해냈다는...

한 3주 고생하다가 결국 포기해버리고, 뭔가 Scratchbox 위에서 돌아가는 WRT54G와 NSLU2용 툴체인을 누군가가 이미 컴파일해두지 않았을까 하는 생각으로 검색을 하다가... 체코의 한 미러 서버에서 뭔가 심상치않아보이는 파일들을 발견했습니다.

사용자 삽입 이미지

뭔가 돌리면 돌아갈 듯한 분위기가...


N810을 위해 설치했던 /scratchbox 디렉토리에 armv5b(NSLU2용)와 mipsel-uclibc(WRT54G용)를 받아 압축을 풀고 sb-menu를 실행시켜 새로운 타겟을 설정해주었는데, 아주 간단히 크로스컴파일 환경이 구축되더군요. 검색하고 다운로드받으면서 삽질했던걸 생각하니 눈물이 그냥 주룩...

그래도 scratchbox 자체가 그닥 익숙하진 않기에, 한 세시간 정도 삽질한 끝에 WRT54G용 ss5 SOCKS5 프락시서버의 native 실행파일을 생성할 수 있었습니다. 그리고 sigma6님의 블로그를 참조하여 WRT54G를 리부팅할때마다 ss5 대몬이 자동실행되도록 설정 완료!!

아직 프로그래밍은 시작도 못했고 간신히 크로스컴파일환경을 구축한 정도입니다만, 의외로 임베디드 프로그래밍 재미있네요. 꼭 공CD를 굽는 느낌이랄까.. 아무것도 못하는 공기계에 소프트웨어를 이용해서 생명을 불어넣는 것같은 느낌도 들구요.

앞으로 당분간은 주말에 심심할 일 없을 듯합니다.

덧. 알고보니 집에서 쓰는 DivX 플레이어(미디어게이트 MG-35 NDAS)도 리눅스 기반이라네요. 이미 해외에서는 미디어게이트 위키를 중심으로 핵펌들이 만들어지고 있는 상황인 듯.

  1. Leaper 2008.05.21 06:55 신고 댓글주소 | 수정 | 삭제 | 댓글

    주말삽질의 결과가 행복하게 끝났으면 좋겠습니다. 행복하게 끝내시고 .. 포스팅 해주세요 ~~ ^^

  2. Favicon of http://www.noish.org BlogIcon noish 2008.05.22 08:31 신고 댓글주소 | 수정 | 삭제 | 댓글

    미디어게이트 MG-35 NDAS~ 요놈 괜찮아 보이네요 ^^)b
    이런-ㅁ- 좋은 제품있으면~~~ 소개 좀 많이 해주세요~~
    넘 좋아요^_^b

  3. Favicon of http://www.noish.org BlogIcon noish 2008.05.22 12:23 신고 댓글주소 | 수정 | 삭제 | 댓글

    MG-35 NDAS 위키 보니까~ 넘 좋아서 -ㅁ-;;;
    결국 중고 질렀습니다^^;;

    ... N810을 질러야 하는데~
    확~ 지르기가 ㅎㅎㅎ ^^;;

  4. Favicon of http://www.perueckenshop.com/ BlogIcon Perücke 2011.06.20 18:12 신고 댓글주소 | 수정 | 삭제 | 댓글

    MG-35 NDAS 위키 보니까~ 넘 좋아서 -ㅁ-;;;
    결국 중고 질렀습니다^^;;


조엘온소프트웨어 토론페이지에서 재미있는 글을 하나 보았습니다. 한 프로그래머가 여자친구에게 낭만적인 프로포즈를 위해 Bejeweled를 닌텐도DS용으로 포팅해주었고, 일정 점수를 넘으면 화면에 반지가 나오게끔 했다는군요. (닌텐도DS에 Bejeweled가 포팅된 첫 사례라고 합니다)

사용자 삽입 이미지

이것이 바로 빠지면 밤새는 Bejeweled


프로그래머의 블로그에 가보시면 그 순간의 사진들이 올라와있으니, 꼭 보세요. 아주 낭만적이더군요. 더 쿨한 소식이 있는데요, Bejeweled의 모든 저작권을 갖고있는 제작사인 Popcap에서 저작권 어쩌고 하면서 딴지걸지 않고 오히려 이들 커플의 신혼여행 비용을 대주기로 했다고 합니다.

한편 조엘온소프트웨어의 댓글에서 얻은 정보에 따르면, 미국의 호스팅업체인 Dreamhost의 CEO는 한술 더 떠서 자사의 DNS서버에 가짜 Google.com IP를 등록해놓고, "Tweeny, will you marry me?"라는 홈페이지가 검색창 제일 위에 올라오는 가짜 페이지를 만들어 프로포즈했다는 소식도... :-)

역시 Geek들에게는 Geek의 길이 따로 있나봅니다. 항상 '프로그래머' 하면 반사회적이고 비사교적이며 맨날 골방에서 게임콘솔만 붙잡고 사는 어둠의 이미지를 연상하는 사람들에게 알려줘야겠어요.


사용자 삽입 이미지

http://discuss.joelonsoftware.com/default.asp?joel.3.601128 에서 재미있는 토론이 벌어졌군요. 지금까지 자기가 해봤던 가장 재미있는 소프트웨어 개발 프로젝트를 적는 모양인데,
  • 영국군 핵잠수함의 관제시스템
  • 터치스크린 달린 linux 기반의 구축함 제어시스템 (혹시 세종대왕함에도 이런게?)
  • 전과관리시스템 (criminal case management system을 대충 의역)
  • F1경주 예측시스템 (내기도우미??)
이런 것들이 나옵니다. 지금까지 제가 해왔던 프로젝트들은 여기에 비교하니 너무 평범해서 별로 재미없어 보이네요. @_@


리눅스 애플리케이션 뜯어볼때 lsof를 애용해왔는데, windows에도 tcpview라는 비슷한 애플리케이션이 있네요. 스샷으로 소개 대신합니다. netstat이여 안녕~

http://technet.microsoft.com/en-us/sysinternals/bb897437.aspx에서 다운로드 가능.

사용자 삽입 이미지

  1. Favicon of http://www.perueckenshop.com/ BlogIcon Perücke 2011.06.20 18:28 신고 댓글주소 | 수정 | 삭제 | 댓글

    네이트온까지 되는군요!! 수많은 기기를 비교해보다가 결국 n810을 금요일날 구매대행주문넣고 기다리는중입니다. 유저분들께 질문이있는데요, 8기가메모리카드를 어떤걸사야하는지 모르겠습니다. 미니sd,마이크로sd, sdhc 지원등......
    마이크로 sdhc를 사면될거같은데 한번더 확인을 하고싶네요. 답변 부탁드릴께요~~~


버드님의 "MSN bot으로 빌드하기" 포스트를 보고 감동받은 바가 있어, 몇일동안 조사를 좀 해보았습니다. python은 까막눈이어서 PERL버전으로 말이죠.

여기저기를 뒤져본 결과 세 개의 오픈소스 프로젝트가 나오더군요.

1) Net::Msmgr (CPAN)
  • 버전 0.16이고, 2003년을 끝으로 더이상 maintain되고있지 않습니다.
  • MSNP8을 구현하고는 있는데 완전하지가 않네요. 로그인 안됩니다.
2) POE::Component::Client::MSN (CPAN)
  • 버전은 0.03밖에 안되지만 POE라는 훌륭한 이벤트처리용 애플리케이션 프레임웤에 기반하고 있어서 많은 공부가 되었습니다. 방대한 POE 모듈을 설치해야하지만, 꼭 돌려보시기를 권유드립니다.
  • 다만, 모듈화된 부분과 작성해주어야하는 부분 사이의 역할구분이 다소 애매하긴 하더군요. 동작가능한 샘플스크립트도 같이 있는데, 좀 깁니다.
  • MSNP9를 구현하고 있는데, NOT 메시지를 처리해주는 로직만 약간 추가해주면 잘 돌아갑니다.
  • 샘플스크립트가 아주 예쁩니다. curses 라이브러리를 이용해서 칼라가 번쩍번쩍
3) MSN.pm (http://bot-depot.com)
  • CPAN에 등록된 모듈이 아니어서 찾는데 조금 애먹었지만, 완성도는 셋중에서 가장 높습니다.
  • MSNP11도 지원하며, 2006년 4월에 나온 버전 2.1.2가 마지막입니다. 2008년 1월 현재 신버전 업데이트를 진행중이라고 하니, 2월중에는 MSNP8부터 MSNP11까지를 모두 지원하는 버전이 공개될 것 같습니다.
  • 다른 라이브러리에 대한 의존성이 약해서 설치가 간단하며, 첨부된 샘플 역시 수정 없이 잘 동작합니다.
  • MSNP11을 지원하므로 rath님이나 깜쏘님처럼 돈안들이고 MO(Mobile Oriented - 휴대폰에서 보낸 SMS를 휴대폰이 아닌 다른 시스템에서 받는 형태의 서비스) 서비스를 만들 수 있습니다. 휴대폰 연동을 해놓은 경우 IPG 메시지가 날아오더군요.
MSN 프로토콜에 관심있으신 분들은 MSNPiki 페이지를 참조하시면 많은 도움을 받으실 수 있습니다. 많은 분들이 보시는 hypothetic보다 내용도 더 풍부하고 정리도 깔끔합니다.

문제는 이 봇을 갖고 무얼 하느냐인데, 그건 따로 한번 포스팅하겠습니다. 지금 당장 생각나는 건 다들 너무 원초적인 것들 뿐이라... :-)
  1. 2010.10.04 10:53 댓글주소 | 수정 | 삭제 | 댓글

    비밀댓글입니다


텍스트큐브로 팀블로그를 운영하는 경우, 팀블로그 외에도 다른 rss소스들 - TRAC 등 외부시스템이 만들어내는 - 을 팀블로그 내에 같이 보여주고 싶은 경우가 많습니다. 괜찮은 플러그인이 없나 찾아보다가, peris님이 만드신 SB_RSSNews 플러그인을 골랐습니다.

(별도의 관리 필요없이 텍스트큐브의 관리화면에서 등록하는 RSS feed를 보여줄 수 있어서 제일 깔끔하더군요. 좋은 플러그인 만들어주신 peris님 감사합니다. 꾸벅)

헌데 이 플러그인(버전 1.1.1)이 http://server.com/rss.xml과 같은 형태의 URL은 잘 처리하는데, http://server.com/rss.php?id=somebody와 같이 Query가 포함되는 URL의 경우는 제대로 처리를 못해주는 아쉬움이 있습니다.

이럴땐 다음과 같이 plugins/SB_RSSNews/index.php를 살짝 고쳐주시면 됩니다.
(HTMLify하기가 귀찮아서 스샷으로 올리니 부디 양해를..)

성형전:
사용자 삽입 이미지

성형후:
사용자 삽입 이미지

어때요. 참 쉽죠? :-)
사용자 삽입 이미지


집에서 사용하고있는 ss5 SOCKS5 프록시 서버가 PERL의 Net::SOCKS 모듈과 호환되지 않는 문제가 발견되어 태어나서 처음으로 CPAN에 버그리포팅을 했습니다. 과연 이게 말이 되는 영어인지 많이 고민했습니다만, 뭐 마지막 부분에 소스 변경내용까지 넣어뒀으니 어떻게든 되겠죠. (오히려, Net::SOCKS가 활발하게 maintain되지 않는 모듈인게 문제인듯합니다)

리포팅한 버그: http://rt.cpan.org/Public/Bug/Display.html?id=32492

이 문제를 알아내느라 SOCKS5 RFC도 다 읽고 Wireshark로 패킷도 다 떠봤는데, SOCKS 프로토콜... 조금 원시적이라는 느낌은 들지만 생각보다 깔끔하더군요. 맨 처음 negotiation하는 부분만 끝나고나면 client는 이게 proxy를 거쳐서 서버로 가는 소켓인지 서버에 직접 연결된 소켓인지 전혀 신경을 쓰지 않아도 되는 구조입니다. 의외로 다른 프로토콜에 붙이기 어렵지 않을 것 같네요.


대체 왜 이름을 Orkut이라고 지었는지 항상 궁금했었는데, 결론부터 말씀드리면 만든사람이름입니다.


이 사람이 바로
Orkut Büyükkökten

작은 화면을 가진 정보기기에서 text를 효율적으로 보여주는 방법을 검색하다가 2001년도에 나온 "Seeing the Whole in Parts: Text Summarization for Web Browsing on Handheld Devices"라는 논문(PDF링크)를 찾게 됐는데, 논문저자 이름이 'Orkut Buyukkokten'(음?)이고, 스탠포드를 나왔더군요.

검색해서 나온 위키피디어 링크에 의하면 이사람이 Orkut 개발자가 맞다는...
위 링크에 의하면, Orkut도 구글의 80%-20% 프로젝트로 만들어진 산물이었다고 합니다.

하하. 저도 언젠가 제이름 따서 서비스 하나 만들어야겠어요.


사용자 삽입 이미지

요새 프로젝트에 도입/실험중인 오픈소스 이슈트래킹시스템 TracWikiRenamePlugin에 버그가 있더군요. 영문으로 된 페이지는 잘 변경이 되는데,
  1. 페이지명이 한글로 되어있고,
  2. 첨부파일이 있는 페이지
는 페이지명 변경이 되지 않습니다.

Trac 로그파일과 플러그인 소스를 뒤져보니, 비영어권 문자에 대해서는 파일첨부 디렉토리가 잘못 계산되게 되어있더군요. '한글'의 경우 utf8 인코딩을 따라 '%ED%95%9C%EA%B8%80' 디렉토리가 나와야 하는데 그냥 생짜로 escape시킨 결과, '%C7%D1%B1%DB'를 찾고 있더랍니다.

잘 알지도 못하는 python 문법을 찾아가면서 20분간 삽질한 결과, encode('utf-8') method를 추가하여 문제 해결!!

아싸~ 나도 드디어 오픈소스 프로젝트의 버그를 보고해서 다음번 release에 반영될 수 있게하는 길에 들어선 것인가.. 하는 생각으로 룰루랄라 버그를 보고하러 가보니, 이미 14일 전에 patch가 나온게 아닙니까. (게다가 코드도 제 것보다 더 깔끔하다는..)

버그가 잡혔으니 기뻐해야하는데 썩 기쁘지만은 않은 이 기분은 대체 무어란 말인가... -_-
어쨌든 WikiRenamePlugin 사용하시는 분들은 꼬~옥 패치하시기 바랍니다.





티스토리 툴바