2009년 12월 8일 화요일

퀵마크를 사용한 주소록 교환 (Share Business card using QuickMark)

이전 포스트에서 구글이 Favorite Place on Google이라는 서비스에서 QR code를 사용한다는 이야기를 했었다.
그래서 구글은 이 서비스 활성화를 위해 아이폰용 QuickMark를 선착순 40,000명에게 무료로 다운로드 받을 수 있게 해 주고 있다.
지금까지 몇가지를 테스트 해 봤는데 QuickMark가 auto-focus가 없는 iPhone 3G에서도 확실한 인식능력을 보여주었다.


아이폰 용 뿐 아니고 거의 대부분의 WM폰, 심비안 폰용 QuickMark도 있다.


아이폰에서 QuickMark를 실행하면 카메라 화면이 나오게 되는데 여기서 읽으려고 하는 바코드를 가져다 대면 셧터를 누를 필요 없이 자동으로 바코드를 인식하게 된다.


위의 바코드를 읽은 결과이다. 보는바와 같이 위의 QR code에는 URL이 들어있다. 이 정보를 가지고 다른 타입의 바코드를 만들어 주거나 다른 사람에게 메일로 보내거나 트위터로 tweet할 수도 있다.


Generate Quick Code를 선택하면 URL을 Quick Code 타입의 바코드로 만들어 준다.

만들어 진 바코드 위쪽의 버튼 2개가 현재 어떤 타입의 바코드인지 알려준다. 왼쪽이 Quick Code, 오른쪽이 QR Code이다. 이 화면에서 현재 회색인 QR Code버튼을 누르거나 위쪽 화면에서 Generate QR Code를 누르면 URL을 QR Code로 만들어 보여준다.


QR Code 타입의 바코드 화면이다. 이번에는 위쪽의 버튼 두개의 색깔이 반대로 된 걸 볼 수 있다.
그리고 주의력이 깊은 사람은 눈치챘을 지 모르겠는데 맨 위의 QR Code와 이 화면의 QR Code는 동일한 URL로 만든건데 실제 모양이 다르다. 그건 두개의 QR Code의 Error Correction Capacity가 다르기 때문이다. QR Code는 잡지나 포장지, 상자 표면등 여러곳에 사용되기 때문에 코드가 인쇄된 부분이 찢어지거나 더럽혀 지는 경우가 많다. 그래서 QR Code는 이런 경우에도 코드가 어느정도 망가지더라도 자체적으로 에러를 보정해서 원래 코드를 찾아낼 수 있게 설계되어 있다. 최고 level인 H-level인 경우 전체 바코드 면적의 30%정도가 없더라도 원래 코드를 정확하게 읽을 수 있다.


화면 아래쪽의 기어박스 모양 아이콘을 누르면 설정 화면으로 갈 수 있다.


QuickMark는 1/2차원 바코드를 모두 인식할 수 있다. 현재 지원하는 2차원 바코드는 Quick Code, QR code, Data Matrix이고 1차원 바코드로는 EAN 8/13, Code 39, Code 128이다.


설정화면의 아래쪽으로 내려오면 트위터 계정이 있는 사람은 트위터를 설정해서 바코드 읽은 내용을 tweet할 수도 있다. 그리고 마지막은 바코드에 들어있는 내용에 따라 자동으로 동작을 할것인가 여부를 설정할 수 있다. 즉 바코드의 내용이 전화번호인 경우 자동으로 그 번호로 전화를 걸게 한다던가 URL인 경우 브라우져에서 그 주소로 바로 가게 한다던가등의 설정이 가능하다.





또한 QuickMark의 가장 유용한 기능중에 하나가 바코드를 사용해서 손쉽게 연락처 교환을 할 수 있다는 것이다. 일본 드라마나 영화를 보면 사람들끼리 전화번호를 교환하자며 서로의 휴대폰을 마주보게 하는 장면을 기억할 것이다. 일본 휴대폰에는 적외선 포트가 기본으로 장착되어 있어 서로간에 전자명함을 적외선으로 주고받을 수 있다.

아이폰에는 별도의 적외선(IR) 포트가 없기 때문에 유사한 기능을 하는 app들은 무선랜으로 전자명함을 보내도록 하고 있다. 하지만 데이터를 교환하려면 둘 다 같은 무선네트웍 안에 있어야 하기 때문에 서로 인사하고 명함 교환하려고 무선랜 찾아서 연결하고 하는 절차가 귀찮아서 사용하기가 불편하다. 그리고 아이폰끼리만 명함 교환이 가능하다.

QuickMark에서는 무선랜 대신 바코드와 아이폰의 카메라를 이용해 명함을 교환한다. 적외선 통신이 아닌 가시광선 통신이라고 할 수 있겠다.


위쪽 화면에서 Share를 선택하면 나오는 화면이다. 왼쪽 버튼을 눌러 주소록에서 선택하거나 오른쪽 버튼을 눌러 임의의 텍스트(URL이건 뭐건 상관없다)를 직접 입력해 줄 수 있다.


왼쪽의 주소록에서 선택 버튼을 누르면 주소록의 목록이 나온다. 이 중에 자신이 전송하려는 사람을 선택해 준다.


선택한 사람의 정보중에 바코드에 어떤 정보를 넣어줄 것인지 선택할 수 있다. 즉 주소록 목록에 있는 생일, 집주소, 집전화번호등은 비즈니스 상대에게는 공개하지 않고 친구에게는 공개하는 식으로 할 수 있다.



이 화면에는 휴대폰 번호, 이메일, URL, 회사이름을 집어넣는다고 선택하였다. 선택이 끝나면 Done 버튼을 눌러주면 된다.


방금 선택한 항목이 들어가 있는 2차원 바코드가 만들어 졌다. 이 화면을 내 정보를 주려는 사람에게 보여주면 된다.


그러면 상대방 역시 QuickMark를 실행해서 상대방 아이폰 화면에 나타난 2차원 바코드를 읽으면 된다.


바코드가 인식되면 바코드 안에 들어있는 내용을 이렇게 보여준다.


위의 화면에서 읽은 내용(이름, 전화번호, URL등등)을 클릭하면 이 화면으로 넘어오고 방금 읽은 정보를 주소록에 추가할건지, 이미 주소록에 있는 항목에 정보를 추가할건지 결정할 수 있다.

예전에 다른 프로그램으로 테스트 해 볼 때는 코드문제인지 한글이름이 제대로 인식되지 않아서 ???로 나왔었는데 QuickMark는 확인해 본 결과 한글, 한자, 일본어 모두 아무 문제 없었다.

--
이런식으로 내 정보를 상대방에게 전달하고 나서 이번엔 상대방이 자신의 전자명함을 만들고 내 아이폰에서 읽어 주소록에 추가하면 서로간에 명함 교환이 이루어지게 되는 것이다.

이 방법은 전파를 사용하지 않기 때문에 전달되는 정보의 도청 위험(별로 가능성이 크지 않다 하더라도 자신의 개인 연락처를 다른 사람에게 공개할 필요는 없다고 본다)이 없고 WM이나 심비안 기종에도 QuickMark가 있고 대부분의 일본 휴대폰에는 이런 기능이 기본 내장되어 있기 때문에 거의 모든 휴대폰과 연락처 교환이 가능하다.

구글도 QR코드 사용 시작 (QR code in 'Favorite Place on Google')

2차원 바코드 중에 일본에서 매우 광범위하게 사용되고 있는 QR code가 있다.
QR code에 대한 설명은 이전 포스트를 참고하길 바란다.

구글이 오늘 새로운 계획을 발표하였다. 구글맵과 구글서치의 pagerank를 기초로 약 10만개의 업체를 선정하여 'Favorite Place on Google'이라는 이름이 들어간 decal을 무료로 만들어 주겠다고 한 것이다.


이 decal에 위의 그림과 같이 업체의 전화번호, 주소, 리뷰 및 쿠폰정보가 포함되어 있는 QR code를 집어넣는다고 한다.
이렇게 되면 QR code reader를 가진 휴대폰의 경우 가게 정보를 얻기 위해 따로 브라우져에서 가게 홈페이지 주소를 입력하거나 검색을 할 필요 없이 QR code만 읽으면 자동으로 가게의 홈페이지가 열려 손 쉽게 원하는 정보를 얻을 수 있게 된다.

일본 휴대폰은 거의 모든 휴대폰에 QR code reader가 기본으로 포함되어 있지만 미국에서 판매되는 휴대폰에 QR code reader가 기본으로 포함되어 있는 경우는 아직 없다. 하지만 아이폰, 블랙베리, WM, 심비안이나 java를 지원하는 대부분의 휴대폰용 무료 QR code reader가 있기 때문에 사용하는데 불편은 없다.

NeoReader - http://www.neoreader.com/
QuickMark - http://www.quickmark.com.tw/En/basic
UpCode - http://www.upc.fi/en/upcode/
Kaywa - http://reader.kaywa.com/
zxing - http://code.google.com/p/zxing
i-nigma - http://www.i-nigma.com/i-nigmahp.html

이 이외에도 검색을 해 보면 더 많은 무료 QR code reader를 쉽게 찾을 수 있다.




일본에서는 이미 상당히 오래전부터 널리 쓰여왔지만 그 이외 나라에서는 별로 쓰이지 않았는데 이번에 구글 덕택에 미국에서도 널리 쓰일 수 있는 기반이 만들어질거 같다.

2009년 12월 6일 일요일

아이폰 팁) Apps가 메모리 부족이라고 설치되지 않을 때...(When apps can not be installed by memory shortage..)

아이폰/터치팟 플래쉬 용량이 작은건 아니지만 음악에 apps들을 넣다보면 어느새 부족해지기 쉽상이다.
그 중 좀 황당하고 골치아픈 문제중 하나가 아이튠에서 apps를 구입한 다음 아이폰/터치팟과 싱크를 시키는데 '메모리 부족'이라는 에러를 내고 설치가 되지 않는 경우이다.

지도 데이터를 모두 포함하고 있어 용량이 큰 apps중 하나인 Playmap 같은 경우 아이튠에서 봤을 때 343MB 용량이다.

그런데 free space가 4~500MB 정도 남아있는 아이폰으로 옮기려고 sync를 하면 메모리가 부족하다고 에러가 나고 설치가 진행되지 않는다.

그 원인은 아이폰/터치팟의 apps는 ipa라는 확장자를 가지는데 확장자만 다른 이름일 뿐 실제로는 zip 파일이다. 아이폰에 설치할 때 일단 아이튠에서 아이폰으로 ipa파일이 전송된 다음 아이폰에서 압축을 풀어 설치하게 되기 때문에 설치를 위해서는 아이폰에 apps 파일 크기보다 최소 2배 이상의 free space가 있어야만 한다. 실험해 본 결과 800MB 이상의 빈 공간이 있어야만 Playmap이 설치가 가능했다.
하지만 설치가 끝나면 ipa파일은 압축을 푼 다음에는 아이폰에서는 자동으로 삭제되어 버리기 때문에 Playmap이 설치되고 난 다음에 확인해 보면 아이폰에는 약 350MB의 빈 공간이 남아있다.



그러므로 apps설치 시 apps 크기보다 빈 공간이 아직 남아 있는데도 이런 에러가 생기는 경우 해결책은 크기가 작은 apps들을 지우거나 음악/비디오 파일을 지워 충분한 공간을 만들어 줘서 원하는 apps를 설치한 다음 지웠던  apps/음악/비디오를 다시 넣어주면 된다.

즉 예를 들어 app A의 크기가 300MB이고 빈 공간이 500MB인데 메모리 부족으로 설치가 안된다면 이미 설치도어 있는 약 150MB크기의 app B를 지워준다. 그러면 빈 공간은 500+150=650MB가 되어 app A를 설치할 수 있게 된다. App A가 설치되고 나면 빈 공간은 다시 약 350MB정도가 남기 때문에 app B를 재설치하는데는 문제가 없다.

2009년 12월 5일 토요일

책상 서랍속에 잠자는 팜/클리에 PDA를 외부 LCD로 사용하기 (Using Palm/Clie PDA as a external LCD display)

한동안 꽤 사용되던 PDA인 Palm 및 Clie (특히 68K계열의 프로세서를 사용한 모델들) PDA가 지금은 시간의 흐름에 밀려 대부분 책상 서랍속에 잠자고 있는 경우가 많다.
이 책상 서랍이나 사물함에서 출토한 PDA를 PalmOrb 소프트웨어를 사용하면 PC나 임베디드 보드의 LCD 디스플레이 겸 터치 키보드로 사용할 수 있다.



PalmOrb는 오픈소스 소프트웨어로 PalmOS 2.0 이상인 기기에서는 모두 사용할 수 있다. PC와 시리얼/USB/Bluetooth/Ir을 통해 통신하고 Matrix Orbital사의 4*20 display인 LK204-25 LCD를 거의 완벽하게 에뮬레이션 해 준다.

Emulation detail..


PC에 연결해 사용할 경우 윈도우나 리눅스용으로 다음의 소프트웨어를 사용해서 시스템 상태나 메일알림등 다양한 정보를 표시하게 해 줄 수 있다.

윈도우 - LCD Smartie


리눅스 - LCDproc


리눅스 - LCD4Linux

위의 사진에서 볼 수 있는것처럼 키보드도 에물레이션 해 주고 Graffiti 역시 지원하기 때문에 간이 시리얼 키보드 역할도 제공해 준다.

시리얼 포트를 통해 제어가 가능하기 때문에 PC에 연결하는것 이외에 임베디드 보드의 UI로 사용하기에도 매우 편리하다. 특히 아뒤노 보드에 연결해 주면 따로 LCD모듈을 구입할 필요 없이 매우 저렴한 시리얼 터미널을 가질 수 있게 된다.


2009년 12월 4일 금요일

맥에서 tftp 사용하기 (Using tftp on the Mac)

일반적으로 많이 쓰이지는 않아도 라우터등의 장비 펌웨어 업그레이드라던지 임베디드 보드 개발할 때 유용한 도구중에 하나가 tftp(trivial ftp)이다.
Mac OS X에도 역시 기본으로 포함되어 있지만 다른 daemon들과는 다르게 자동으로 실행하게 되어있지 않다. 그리고 실행하려면 직접 하면 안되고 꼭 launchd와 /System/Library/LaunchDaemon/tftp.plist를 사용해서 실행해야 한다.



실행하는 방법은 다음과 같다.

$ sudo launchctl
Password:
launchd% load -F /System/Library/LaunchDaemons/tftp.plist
launchd%

이제 아무 문제가 없으면 launchd가 tftp 포트를 listen하고 있다가 connection이 들어오면 tftp를 실행해주게 된다.

그리고 linux/unix의 경우 일반적으로 tftp 디렉토리는 /tftpboot 를 사용하지만 맥에서는 tftp.plist 파일에서 지정하게 되어 있고 디폴트로는 /private/tftpboot 디렉토리이다.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<true/>
<key>Label</key>
<string>com.apple.tftpd</string>
<key>ProgramArguments</key>
<array>
<string>/usr/libexec/tftpd</string>
<string>-i</string>
<string>-s</string>
<string>/private/tftpboot</string>
</array>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>tftp</string>
<key>SockType</key>
<string>dgram</string>
</dict>
</dict>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<true/>
</dict>
</dict>
</plist>

 
텍스트 에디터로 tftp.plist파일을 열어보면 내용은 위와 같다. 그 중 bold체로 된 부분을 변경해 주면 tftp 디렉토리를 원하는대로 바꿔줄 수 있다.

사용이 끝나 실행을 중단시키고 싶으면 실행할 때와 마찬가지로 launchctl에서 명령을 내려주면 된다.

launchd% unload /System/Library/LaunchDaemons/tftp.plist

만일 tftp를 부팅할 때 부터 계속 실행하도록 해 주고 싶으면 launchctl에서 다음의 명령을 사용한다.

launchd% load -w  /System/Library/LaunchDaemons/tftp.plist

또한 반대로 부팅할 때 부터 계속 실행되는걸 멈추고 싶으면 아래 명령을 사용하면 된다.

launchd% unload -w /System/Library/LaunchDaemons/tftp.plist



2009년 12월 2일 수요일

아이폰 필드테스트 모드 들어가기(Entering iPhone field test mode)

아이폰에서 필드테스트 모드로 들어가는 방법은 다음과 같다.


아이폰 전화 모드에서 '*3001#12345#*'를 넣고 통화(Call) 버튼을 누르면 바로 Field Test 모드로 진입한다.

Field Test 모드 메뉴 화면이다.




각 메뉴로 들어가면 위와 같은 무선망에 대한 상세 정보를 직접 확인이 가능하다.

* 필드테스트 모드에서 확인할 수 있는 내용은 상당히 전문적인 값들이라 휴대폰 기술 관련되어 각 용어와 의미를 아는 사람이 아니면 별로 필요 없는 내용이다.


iTunes 스마트 플레이리스트 사용하기 (How to use iTunes Smart Playlist)

한국식(?) mp3플레이어에 익숙한 사람들은 그냥 mp3파일을 mp3플레이어 내의 폴더에 바로 복사하는걸 더 편하게 생각하고 아이튠의 음악 관리 방식을 불편하다고 생각하는 경우가 많다.
하지만 drag-n-drop방식은 아주 원시적인 방식으로 플레이어에 기껏해야 자주 듣는 음악 몇십곡 집어넣고 검색같은거 없이 곡들을 그냥 순차적으로 듣는 경우에나 유용하지 곡이 많아지거나 조금만 복잡한(?) 방식의 음악듣기를 원하는 경우에는 속수무책이 되어 버리기 쉽다.

예를 들어 '우울할 때 듣는 곡', '내 best 30', '야간 드라이브 할 때 듣는 곡' 식으로 폴더를 나눠 놓고 음악을 집어 넣는데 만일 A라는 곡이 3가지에 모두 포함되는 경우 A의 파일을 폴더 3곳에 각각 복사를 해 줘야 하기 때문에 플래쉬 메모리가 낭비되게 된다.

그에 비해 아이튠의 경우 A의 파일은 한 곳에만 저장되고 (저장 위치는 사용자가 신경 쓸 필요가 없다. iTunes가 자동으로 알아서 관리해 준다.) 3개의 플레이 리스트를 만들어 그 플레이 리스트에 A라는 곡을 넣어만 주면 된다.

그리고 iTunes는 거기서 한발 더 나아가서 Smart playlist를 지원한다.
이건 플레이리스트에 사용자가 따로 곡을 집어넣어 줄 필요 없이 원하는 조건만 지정해 주면 그 조건에 맞는 곡들을 자동으로 목록에 추가해 주는 기능이다.


아이튠에서 곡 정보 화면이다. 여기에 그 곡의 다양한 정보(Tag)가 들어간다. 아이튠의 경우 대부분의 동작이 이 tag를 기반으로 움직이기 때문에 곡의 tag를 정확하게 관리해 주는게 필수적이다. 이 역시 drag-n-drop방식에 익숙한 사람들에게는 쓸데없는 일이라고 생각되기 쉬운데 tag는 일단 한번만 정리 해 놓으면 더 이상 편하고 효율적일수가 없다.


iTunes를 실행한다.


Files->New Smart Playlist... 를 선택해 준다.


스마트 플레이리스트를 설정해 줄 수 있는 창이 열리게 된다. 조건 항목이 1개인데 항목을 늘리고 싶으면 오른쪽의 '+' 버튼을 눌러주면 된다.


위쪽의 화면에서 '+' 버튼을 눌러 조건 항목을 2개로 만든 화면이다. 다시 조건항목을 줄이려면 '-' 버튼을 눌러주면 된다.

여기서 조건이란 태그에 들어있는 값들 중에 자신이 원하는 조건을 말한다. 즉 '[가수 이름](a)[ABCDE](b)[시작](c)하는 노래' 같은 식으로 원하는 조건을 설정할 수 있다. 위의 조건 항목에서 첫번째 칸에 (a)의 값을, 두번째 칸에 (c)의 값을, 세번째 칸에 (b)의 값을 넣어주면 된다.


(a) 항목에 들어갈 수 있는 값들이다. 가수 이름 뿐 아니라 앨범제목, 작곡가, 쟝르, 발매년도, rating, 샘플링 레이트, 플레이 횟수 등등 매우 다양한 조건을 선택할 수 있다.


(c)항목에 들어갈 수 있는 값이다. 가수 이름인 경우 정확한 가수 이름(is) 뿐 아니고 특정 가수 제외(is not), 이름 일부분(contains), 이름 일부분에 제외(does not contain), 특정 글자로 시작하는 이름(starts with), 특정 글자로 끝나는 이름(ends with)등의 조건을 줄 수 있다.

또한 여기는 안 나왔지만 (a)가 발매년도나 Ratings인 경우 어디부터 어디까지(is in the range)등의 조건도 줄 수 있다.


임의로 만들어 본 조건이다. 저 플레이 리스트에는 내 ratings가 별 4개 이상이고 Jazz쟝르이면서 2000에서 2009년에 나온 곡들이 자동으로 들어가게 된다.

위에서 본 것 같이 Smart Playlists를 잘 활용하면 그냥 순차적으로 또는 랜덤하게 듣는 방법 이외에 진짜 매우 smart하게 자신이 원하는 곡들을 찾아 들을 수 있는 다양한 방법을 사용할 수 있게 된다.