이렇게라도 기록을 해 두지 않으면 잊어버리기에...
블로그가 랩노트는 아니지만 이렇게 기록해 둡니다.

초기에는 CUDA에서 정식으로 Ubuntu linux를 (물론 Debian도) 지원하지 않았는데 요즘은 어느 정도 정식 지원이 됩니다. 하나 안타까운 건 비교적 업데이트가 빠른 Ubuntu 리눅스 특성상 CUDA에서 지원하는 Ubuntu 버전이 조금씩 느리다는 문제가 있어요.

현재 CUDA 사이트에서 공식으로 지원해주고 있는 Ubuntu linux 버전은 9.10입니다. 그래서 10.04에서는 약간 문제가 생기죠.

CUDA를 설치할 때는 다음과 같이 세 단계를 거치면 됩니다.

  1. Device Driver 설치
  2. CUDA Toolkit 설치
  3. GPU Computing SDK code sample 설치
우선 저렇게 세 가지 설치할 파일을 받습니다. 나중에 버전이 달라지면 링크가 또 달라질 것 같긴 하지만, 이 글은 구체적으로 "64-bit 버전의 Ubuntu 10.04에 CUDA 3.1을 설치할 때" 생기는 문제점에 대한 해결책을 적기 위해 쓰고 있는 것이므로 그냥 CUDA 3.1 현재 링크를 그대로 쓰도록 하겠습니다. http://developer.nvidia.com/object/cuda_3_1_downloads.html#Linux 이 링크 가서 받으시면 됩니다.

그 링크를 보시면 복잡하게 이것저것 많은데, distro에 따라 다른 걸 받을 수 있게 해 놔서 복잡할 뿐, 딱 세 개만 받으면 됩니다.
Developer Drivers for Linux (256.40), 64-bit 버전
CUDA Toolkit for Ubuntu Linux 9.10, 64-bit 버전
GPU Computing SDK code samples

저렇게 세 개 받아 두세요. 한글 버전으로 깔아둔 파이어폭스에서 다운로드 받으면 아마 홈 디렉토리의 "다운로드"라는 디렉토리에 받게 될 텐데, 나중에 좀 귀찮아질 수 있으니 경로에 한글이 들어가지 않는 다른 디렉토리로 복사해 주세요.

다 받고 나면 터미널을 여시고 다음과 같은 명령을 실행해 주세요.

sudo apt-get purge nvidia-*

그리고 sudo 명령으로 vi나 gedit 같은 편집기를 써서 /etc/modprobe.d/blacklist.conf 파일 맨 뒤에 다음과 같은 내용을 추가해 주세요.
blacklist vga16fb
blacklist nouveau
blacklist lbm-nouveau
blacklist nvidia-173
blacklist nvidia-96
blacklist nvidia-current
blacklist nvidiafb

이제 시스템을 리부팅하고 grub에서 복구 모드(recovery mode)를 선택해서 부팅해 주세요.

그리고 나서 다음과 같은 명령을 실행시켜 주세요.
telinit 3
sudo sh devdriver_3.1_linux_64_256.40.run

이러면 메뉴가 몇 개 뜨면서 설치 과정이 진행됩니다. 깔끔하게 설치가 끝나고 나면 시스템을 리부팅해 주시면 됩니다.

자, 이제 두 번째 툴킷 설치.
이 부분이 젤 쉬워요. 그냥 다음 명령을 내리면 설치가 됩니다.
sudo sh cudatoolkit_3.1_linux_64_ubuntu9.10.run

설치 다 되고 나면 홈 디렉토리의 .bashrc 파일을 열어서 맨 뒤에 다음과 같은 두 행을 추가해 주세요.
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH

이제 마지막, SDK 설치 부분이 남았습니다.
SDK 설치 자체는 별로 안 어려워요. 그냥 (이번에는 sudo 하지 말고)
sh gpucomputingsdk_3.1_linux.run
라고 쳐서 실행시키면 끝

근데 문제는 실제 GPU computing 예제들을 컴파일할 때 생깁니다.

홈 디렉토리 밑의 NVIDIA_GPU_Computing_SDK/C 디렉토리로 들어가서
make
라고 치기만 하면 여러 예제 파일이 컴파일이 돼야 하는데 실제로는 그렇게 잘 안 돼요.

몇 가지 문제가 생길 수 있는데, 우선 cannot find -lXi -lXmu -lglut 이런 에러 메시지가 나올 가능성이 높습니다. 패키지가 없는 게 좀 있어서 그런데, 다음과 같은 명령을 내리면 이 문제는 해결됩니다.
sudo apt-get install libxext-dev libxi-dev x11proto-xext-dev libice-dev libsm-dev libxt-dev libxmu-headers libxmu-dev freeglut3-dev libglut3-dev

그리고 cannot find -lGL 이런 에러가 생길 수 있는데, 이건 libGL.so라는 라이브러리 링크 파일이 잘못돼 있어서 그래요. 이 문제는 다음과 같은 명령으로 해결됩니다.
sudo rm /usr/lib/libGL.so; sudo ln -s /usr/lib/libGL.so.1 /usr/lib/libGL.so

마지막으로, 컴파일할 때 errors in surface_functions.h 이런 에러가 나올 가능성이 높아요. 이건 g++ 4.4 버전에서 오류를 철저하게 확인하면서 생기는 문제인데, NVIDIA_GPU_Computing_SDK/C/common/common.mk 파일을 열어서 처음 등장하는 NVCCFLAGS 부분을 다음과 같이 수정하면 됩니다.

NVCCFLAGS       := --compiler-options -fpermissive

위와 같은 과정을 거치고 나면 아마 잘 될 겁니다.

혹시 나중에 그냥 nvcc로 cuda 소스코드 컴파일할 때도 errors in surface_functions.h 오류가 발생하면 명령행에서 nvcc --compiler-options -fpermissive 옵션을 주면 문제가 해결될 겁니다.

참고문헌:
http://forums.nvidia.com/index.php?showtopic=172997
http://forums.nvidia.com/index.php?s=&showtopic=171590&view=findpost&p=1080631

P.S. 별 것 아닌 내용이지만 토요일 오후, 집에서 황금같은 3-4 시간을 삽질하면서 배운 비싼 내용입니다. 나 같은 삽질을 할 사람이 얼마나 있을지 모르겠지만, 삽질한 시간이 아까워서 nvidia 포럼에도 올려야 되겠어요.

괜히 끌어내리려 하지 말자.

정 애국심(?)을 발휘해야 하는 거라면 잠시 먹던 초코파이 뱉고 "내 소원은 우리 공화국이 남조선보다 더 맛있는 초코파이를 만드는 것이야"라고 이야기하는 영화 JSA의 송강호 정도 마음가짐이면 충분한 것 같다.

끌어내릴 아이디어 궁리할 시간에 어떻게 해야 더 좋은 물건을 고객들에게 제공할지 궁리하자.

(짤방은 http://dewinter.egloos.com/448138 에서 퍼왔어요)
회사에서는 맥을 못 쓰기 때문에 주로 윈도우즈에서 구글 크롬을 씁니다.

근데 언제부턴가 구글 크롬에서 PDF 파일이 제대로 보이지 않는 이상한 현상이 생겼습니다. 저만 그런 줄 알고 이상하다 했는데 남들도 그렇더군요... 그래서 금방 해결책이 나오지 않을까 기대했는데 또 그렇지만도 않더군요.

그래서 PDF 파일을 열 때는 링크를 복사해서 다른 브라우저에서 연다거나 아니면 그냥 저장한 다음에 파일을 열어서 보는 불편한 방법을 써야만 했는데요, 어크로뱃 쪽에서 해결 방법이 있었네요.

이 쓰레드를 보면 중간에 나와있는 방법입니다.

1) 어도비 어크로뱃(또는 어도비 리더)을 실행시킨다.
2) 메뉴에서 편집 -> 기본설정을 선택한다.
3) 왼쪽에 있는 범주 중에 "인터넷"을 선택한다.
4) "웹 브라우저 옵션" 항목 가운데 "브라우저에 PDF 표시"를 선택한다. (혹시 이 항목이 이미 선택되어 있다면 해제한 다음 어도비 어크로뱃을 종료하고 다시 1번부터 시작한다)
5) "확인"을 클릭하고 어크로뱃을 닫는다.

이렇게 해 주고 나면 구글 크롬에서 PDF 파일을 여는 데 문제가 없어집니다.

P.S. 간만에 올린 글이 이런 무미건조한 글이네요. ㅠㅠ
그간 격조했습니다.

이제 슬슬 다시 포스팅을 해 볼까 해요...

근데 참 바쁘네요... 바쁘다는 얘기는 게으른 자의 핑계라고 하긴 하던데...
OS에 따라 (바이오스에 저장된) 시스템 시각을 UTC(국제 표준시)로 설정하는 것도 있고 그냥 해당 지역시각으로 설정하는 것도 있습니다. 리눅스를 비롯한 유닉스 계열의 경우에는 일반적으로 UTC로 설정을 하는 게 기본이고, 시스템에 따라서 설정 파일을 조정해서 지역시각으로 설정해서 쓰기도 합니다. Windows XP에서는 지역시각이 기본설정인데, 그냥 메뉴에서는 시스템 시각을 UTC로 설정할 수 있는 옵션이 나와있지 않습니다.

리눅스와 Windows XP를 듀얼부팅하는 시스템을 구축해서 사용하시는 분들의 경우에는 일반적으로 리눅스 쪽에서 시스템 시각을 UTC가 아닌 지역시각으로 활용하는 방식을 사용합니다.

하지만 Mac OS X과 Windows XP로 듀얼부팅 시스템을 구축하는 경우에는 그게 여의치가 않습니다. Mac OS X에서 (적어도 제가 알기로는) 시스템 시각을 무조건 UTC로 설정해 버리기 때문인데요, 그러다 보니 Mac OS X으로 부팅을 했다가 윈도우즈로 부팅을 하면 시스템 시각을 다시 세팅하기 전에는 시스템 시각이 UTC로 맞춰져서 이상하게 보이게 됩니다.

매번 그걸 바꾸는 것도 바보같은 짓이고 해서 스크립트 같은 걸 만들어 돌려야 하나 하는데, 구글링을 하다 보니 http://miknight.blogspot.com/2006/06/storing-system-time-in-utc-in-windows.html에서 그 해결책을 알려주더군요.

Windows XP에서 레지스트리 편집기를 시동(시작 버튼->실행 선택, regedit 입력하고 확인 버튼 클릭)한 다음 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation 으로 들어가셔서 RealTimeIsUniversal 이라는 키가 있는지 확인해 보시고 있으면 1로 설정해 주세요. 없으면(저도 없었어요) 메뉴에서 편집->새로 만들기->DWORD 값 을 선택하신 다음 이름은 RealTimeIsUniversal로, 값은 1로 설정해 주시면 됩니다.

이렇게 하고 나서 리부팅하면 그 후로는 시간이 제대로 표시될 거예요.

혹시 이 방법을 썼을 때 어떤 부작용이 생길지는 저도 모릅니다. 실제로 잘 작동하지 않는 경우가 있다는 얘기도 있고 그런데, 일단 저는 제대로 작동하고 있어서 이렇게 써 보렵니다. 문제가 생기면 뭐 스크립트 만들어서 부팅할 때마다 자동으로 시스템 시각을 동기화시키도록 하든지 해야겠어요.
웹 상에서 블로그나 게시판 같은 데 글을 쓰다 보면 가끔씩 수식을 입력해야 하는 경우가 있습니다.

입력할 수식이  같은 식으로 간단하다면 x^2 + y^2 = r^2 같은 식으로 쓰거나 위첨자, 아래첨자 같은 글자를 표시할 때 쓸 수 있는 HTML 태그를 써도 되겠지만 식이 복잡해지면 그런 식으로 표현하기에는 아무래도 이래저래 부담이 되죠. 예를 들어 게시판 같은 데서 다음과 같이 좀 복잡한 수식을 쓰려면 좀 암울하죠.


이럴 때 쓸 수 있는 방법이 몇 가지 있는데요, 하나는 적당한 수식 편집기로 수식을 편집한 다음에 그림으로 저장해서 웹으로 액세스할 수 있는 어딘가에 올려놓은 다음에 그 이미지를 HTML 이미지 태그로 집어넣는 방법입니다. 생각만 해도 복잡하고 귀찮죠?

게다가 수식 편집을 하는 데 있어서 가장 효율적이라고 할 수 있는 LaTeX 방식에 익숙한 사람이라면 일반적인 수식편집기를 가지고 수식을 편집하는 게 정말 지루하고 귀찮은 일이 될 수 있죠.

CodeCogs에서 제공하는 LaTeX 수식 편집기

그럴 때 쓸 수 있는 게 바로 CodeCogs에서 제공하는 LaTeX Equation Editor입니다. 거의 10년 전부터 이런 게 있으면 좋겠다는 생각을 많이 했었는데, 요즘은 이런 식으로 웹에서 사용할 수 있는 LaTeX 수식 편집기들이 몇 가지 나와있는 것 같아요. 이 주소로 가시면 수식 편집기가 나타납니다. 거기에서 필요한 수식을 적당히 편집하신 다음에 밑에 있는 HTML 코드를 복사해서 넣기만 하면 됩니다. 그리고 그 HTML 코드를 자세히 살펴보시면 어떤 식으로 코드를 만들면 어떤 수식을 만들 수 있을지 감을 잡으실 수 있을 거예요.

SITMO에서 제공하는 LaTeX 수식 편집기

비슷한 기능을 제공하는 서비스로 Sitmo의 LaTeX Equation Editor도 있어요. 거의 똑같은데, 위에서 설명해 드린 CodeCogs의 서비스에 비해 인터페이스가 좀 더 깔끔한 대신 HTML 코드에 직접 LaTeX 수식을 집어넣는 방식으로 하기에는 조금 불편한 점이 있다는 차이가 있습니다.

꼭 웹에 올릴 글에서만 쓸 수 있는 건 아니고, 이렇게 만들어진 이미지를 문서편집기나 프리젠테이션 파일에 집어넣을 수도 있습니다. 그냥 이미지를 끌어다가 놓기만 하면 되니까요. 물론 저는 제 컴퓨터에서는 수식을 저장해 놓는다든가 하는 기능을 제공하는 LaTeXiT이라는 애플리케이션을 즐겨 쓰지만, 다른 컴퓨터에서 작업한다든가 쓸만한 수식 편집기가 없는 상황에서는 그냥 CodeCogs나 Sitmo에서 제공하는 웹 수식 편집기로 만들어진 파일을 이용하는 방법을 쓰는 게 나을 것 같습니다.

워드프레스 블로그를 쓰신다면 아예 워드프레스 플러그인 형태로 나오는 걸 쓰셔도 괜찮을 것 같고요.
날씨가 정말 춥군요.

초등학교 저학년 때는 방학 때마다 1-2주씩 충남 금산에 있는 외가에서 지냈는데, 그 시절, 겨울에 아주 추운 날 아침이면 외할아버지께서 “뒷마당에 까치 얼어죽지 않았는지 한 번 보고 와야 겠다”고 하셨어요. 그 당시에는 정말 까치가 얼어죽었나 하고 뒷마당의 조그만 대나무 숲을 헤쳐보고는 “할아버지, 죽은 까치 없어요” 했었는데, 지금 생각해 보면 아마도 아주 추운 날 아침이면 한 마디씩 하시는 관용구가 아니었나 하는 생각이 들어요.

겨울 아침, 마당에서 손잡이를 위로 올렸다 아래로 내렸다 해서 물을 길어올리는 펌프로 퍼 올린 물에다가 부엌의 커다란 무쇠 가마솥에서 펄펄 끓인 물 한 바가지를 섞어서 세수하고는 마당에 있는 닭장, 토끼장의 닭, 토끼들한테 인사하고 말린 배추 좀 먹여주고, 마당 한 켠에 있던 흑염소하고 인사하고 그랬던 일들이 떠오르네요.

겨울에 날이 좀 따뜻하면 벌집에 살던 벌들이 밖으로 나왔던 것도 기억나요. 벌들이 날아다니면서 뭔가를 막 뿌리고 다녔는데, 벌들이 꿀을 흘리고 다니는 줄 알고 좋아했더니 외할머니께서 벌들이 오줌 싸는 거라고 피해 있으라고 하셔서 당황했던 일도 있었죠.

초등학교 고학년 쯤에 2년 정도 간격으로 외할머니, 외할아버지께서 돌아가신 후로는 외가에 한 번도 못 가 봤어요. 산소에 가 본 것도 한 손으로 꼽을 수 있을 정도 밖에 안 되네요. 조만간 한 번 산소에라도 인사드리러 가 봐야겠어요.

그런 옛 기억들을 떠올리다 보면 우리 아이들에게는 그런 경험을 안겨줄 수 없을 가능성이 높다는 생각에 안타까워져요. 이제 회사 들어가고 인생 좀 덜 빡빡해지면 우리 동네 바로 앞에 있는 주말농장에 등록해볼까 해요. 우리 아이도 잡초도 뽑고 고추도 따 보면서 흙도 만지고 시골 경험 비스무레한 거라도 해 볼 수 있게 해 주고 싶어요.
며칠 전, 아내랑 아이가 다 감기가 걸려서 병원을 좀 다녀왔습니다. 아내 진료비가 3000얼마, 아이 진료비가 2000 얼마 나오고, 약값이 또 4000 얼마 정도 나왔어요. 물론 본인부담금이 그렇다는 얘기죠.

저 정도의 본인부담금으로 병원 진료를 받고 약을 처방 받아서 약을 구입할 수 있는 건 다 의료보험 덕분이예요. 의료보험 혜택을 받기 위해서 우리는 매달 의료보험료를 내죠.

우리 집에는 근로자가 하나도 없어요. 저는 학교에서 한 달에 월급을 90만원을 받습니다. 실제로는 세금 떼고 나면 그보다 적은 금액을 받게 되죠. 물론 보너스는 없어요. 보너스만 없는 게 아니고, 소득 자체가 근로소득이 아니고 기타소득이기 때문에 직장의료보험에 가입할 수가 없기 때문에 지역의료보험에 가입을 해야 해요. 고용보험 같은 게 안 되는 건 당연한 일이겠죠. 게다가 근로자가 아니기 때문에 세금공제 등에 있어서도 교육비, 의료비 공제 같은 게 안 됩니다. 병원비 영수증 모았다가 연말에 내면 소득공제 해 주는 그런 게 없어요.

(실은 월급 90만원 가지고 생활하는 건 아니예요. 그게 생활이 될 턱이 있나요. 아파트 관리비 내고 의료보험료 내면 벌써 반은 나가는데요... 지금 살아가고 있는 건 다 아내 덕분인데, 아내가 학교에서 조교하던 시절에 월급 차곡차곡 모아뒀던 걸로 겨우 버텨내고 있어요. 내가 빨리 직장을 구하지 못하면 우린 정말 빚더미에 앉고 말지도 몰라요.)

지역의료보험, 가입해본 적이 있으신 분이 어느 정도 있으신지 모르겠는데, 상당히 이상한 요율체계를 갖추고 있어요. 다른 집은 어떤지 모르지만 저희 가족 같은 경우는 소득이 차지하는 비중이 아주 적어요. (아마도 소득이 워낙 적어서 그렇겠지만...) 주로 큰 비중을 차지하는 건 살고 있는 집과 가지고 있는 자동차를 바탕으로 하는 재산 부분이죠. 앞에도 썼듯이 월급 90만원 가지고 세 식구가 살고 있는데, 소득이 저렇게 적은데도 불구하고 한 달에 나가는 의료보험료는 12만원 가까이 돼요. 우리가 이렇게 의료보험료를 많이 내야 하는 이유는 우리가 살고 있는 집 전세금과 우리가 가지고 있는 자동차(경차인데도!), 제가 작년에 신고한 소득 액수를 바탕으로 하면 저 정도의 보험료를 내야 하는 등급이 나오기 때문입니다.

직장의료보험은 체계가 완전히 달라요. 유리알 지갑이라는 봉급생활자들 답게 딱 기본급만 가지고 승부를 하죠. 재산이 많든 적든 부양가족이 많든 적든 좋은 차를 가지고 있든 차가 없든 상관이 없어요. 예를 들어 4억 정도 되는 집을 한 채 가지고 있고, 중형차를 가지고 있고, 매달 300만원 선의 월급을 받고 있는 A라는 가상의 친구를 보면 의료보험료를 저보다 적게 내요. 물론 직장의료보험에서는 사업장에서 의료보험료의 절반을 부담하기 때문이기도 하지만, 기본적으로 직장의료보험의 경우에는 무조건 기본급에 의해 보험료가 결정되기 때문에 가지고 있는 부동산이 4억이든 4000억이든 의료보험료에는 차이가 없는 거죠.

뭐 조만간 직장의료보험과 지역의료보험이 합쳐진다고 하는데, 어쨌든간에 이렇게 저와 A라는 가상의 친구 사이에 본인이 내야 하는 의료보험료가 크게 다른 이유는 뭘까요?

정답은 결국은 소득의 투명성 때문이라고 밖에 나올 수 없어요. 직장의료보험의 경우 소득이 워낙 투명하기 때문에 월급만 가지고 보험료를 책정해도 대다수의 사람의 경우에 제법 공평하게 보험료를 걷게 돼요. 하지만 지역의료보험에서는 신고하는 소득 자체가 아주 불투명하기 때문에 그게 불가능하고, 재산내역이라든가 자동차 보유 현황 같은 걸 근거로 이상하게 보험료를 산정하다 보니 저 같은 사람은 소득의 10%도 넘는 금액을 의료보험료로 지불해야 하죠.

지금 대한민국의 대통령인 분은 의료보험료를 만 얼마 냈었다고 해요. 그 방법이 참 뛰어난데, 그 분 정도의 재산 수준이면 정상적으로 지역의료보험에 가입했을 때 원래 의료보험료가 100만원이 넘어가요. 그래서 어떻게 했냐면... 자기 명의의 빌딩을 바탕으로 빌딩 관리업체를 만들고, 거기에 자기를 직원으로 집어넣어서 아주 적은 월급을 받는 근로소득자로 변신시킨 거예요. 그러면 100만원 전후의 월급을 받는 근로소득자의 처지에 맞게 매달 의료보험료를 2만원 정도만 낼 수 있게 돼죠. 근로소득자는 재산이 많든 적든 피부양자가 많든 적든 기본급에 의해서만 의료보험료가 결정되니까요. (참고 기사 링크)

결국 지역의료보험에 가입해야 하는 사람들 중에 재산이 좀 되는 사람들은 저런 식으로 빠져나가요.

근데 그게 다가 아니예요. 재산이 아주 많아도 나이가 좀 돼서 자녀들이 근로소득이 생기기 시작하면 애들의 피부양자로 들어가 버리면 땡이예요. 의사, 변호사 같은 고소득 자영업자들도 이런 방법을 아주 많이 쓴다고들 해요. 자식 입장에서는 부모님을 피부양자로 등록한다고 해서 자기가 돈 더 들 일도 없으니깐 그렇게 해 주는 게 뭐 서로 좋고 당연한 일일 텐데, 재산이 많고 소득이 많은 사람들이 지역의료보험에 가입을 하지 않게 되니까 결국 저 같은 사람은 어이 없게 많은 의료보험료를 지불해야 하게 되죠.

이렇게 별 달리 기댈 데가 없고, 별로 소득이 없으면서 그 소득이 전부 소득 신고가 되는 저 같은 저소득자들은 상대적으로 의료보험료를 많이 내게 되요. 저는 그래도 대학원생 신분이라 정식 직장을 잡을 때까지만 참겠다는 생각으로 살고 있지만, 그렇지 않은 분들은 어떻게든 편법을 찾아 가거나 소득을 적게 신고하거나 하게 되면서 악순환은 심화되죠.

과연 이런 문제는 어떻게 해결해야 할까요? 제 생각에는 일단 소득을 투명하게 추적할 수 있어야 하고, 그 다음으로는 누구든, 어느 직종에 있든 소득에 의해서 의료보험료가 결정되게 만들든지 아니면 아예 완벽한 의료공영체계를 구축해서 의료보험료를 별도로 내지 않고 세금으로 전부 커버하게 만들든지 해야 할 것 같아요. 지금과 같이 주먹구구식으로 의료보험료를 결정하면 많이 버는 사람들은 많이 버는 사람대로, 적게 버는 사람들은 적게 버는 사람대로 서로 불만만 많아지고 서로 상대방들 때문에 자기가 손해를 보게 된다고 생각하면서 미워하게 될 거예요.

애플에서는 iPhone, iPod Touch의 발매 이후에 초기에는 애플에서만 애플리케이션을 만들어서 배포하고, 일반 사용자들은 동적 HTML, AJAX만을 기반으로 하여 간단한 애플리케이션만을 만들어서 배포하고 사용할 수 있는 정책을 취했었습니다.

당연히 반발이 심했죠. 모바일 디바이스용 소프트웨어를 제작하는 사람/회사들은 물론이고 애빠들도 SDK를 공개하지 않는 건 옳지 않다고 마구 따지고 항의했습니다. 이런 반발에 애플은 얼마 후, iPhone SDK를 공개합니다.

iPhone SDK가 공개된 모습을 봤을 때 애플은 사실 이미 처음부터 SDK 공개를 생각하고 있었던 듯 합니다. SDK를 공개하는 데 있어서 애플은 상당히 애플적인 방법을 취했습니다. 대부분의 핸드폰 단말기 제조업체들은 모바일 서비스 제공업체를 통해서만 애플리케이션 제공이 가능하도록 만들었지만, 애플은 애플답게 (어찌 보면 사악하게) 헤게모니를 자기네가 쥐겠다는 뜻을 분명히 하면서 스마트한, (거의) 모두에게 득이 될 만한 방법을 들고 나왔습니다. 어찌 보면 애플의 iTunes Music Store보다도 혁명적인 서비스라고 할 수 있을 것 같은데요, iTunes를 통해 접속하는 iTunes Music Store의 이름을 iTunes Store로 바꾸고는 음악과 동영상만 판매하던 것에 더하여 애플리케이션을 판매하기 시작한 것입니다.

iTunes Store의 첫 화면. Apps Store 카테고리가 추가되었습니다.


핸드폰 같은 장비에 애플리케이션을 새로 설치할 때는 대부분 모바일 서비스 제공업체에서 정해준 방식을 따르게 됩니다. 하지만 애플은 그런 방식을 깨 버리고 말았습니다. 모바일 서비스 제공업체 말고 자기네를 통해서 애플리케이션을 구입하고 설치하라는 거죠. 어차피 iPhone 사용자들은 iTunes를 가지고 음악, 주소록, 스케줄 같은 것을 자기 컴퓨터하고 싱크하는 작업을 일상적으로 해야 하기 때문에 컴퓨터와 핸드폰을 연결해서 어떤 작업을 해야만 한다는 것에 대한 심리적 장벽은 허물어진 상태입니다. 어차피 쓰는 iTunes 가지고 애플리케이션 설치/제거 작업까지 다 하기 때문에 사용자 입장에서 전보다 더 번거롭다거나 하는 일은 없는 건데, 이게 다른 플랫폼에서 채택하는 방식하고 비교해 볼 때 대단히 혁명적이라고 할 수 있습니다.

(모바일 서비스 제공업체를 제외하면) 대부분의 이해당사자들에게 이익이 되는 애플리케이션 개발/배포 과정은 더 놀랍습니다. 애플리케이션 개발자는 애플의 개발자 사이트에서 SDK를 받아서 설치하고, 애플리케이션을 개발한 다음 자기 핸드폰에서 테스트를 해 보고 나서 다른 핸드폰에서도 쓸 수 있도록 배포하고 싶으면 애플 측에 비용을 지불하고 개발자 프로그램에 등록한 다음 애플리케이션을 업로드하여 무상 또는 유상으로 다른 사람들에게 제공할 수 있습니다. 핸드폰용 애플리케이션의 경우에 사용자든 서비스 제공자든 하드웨어 제공자든 핸드폰의 안정성 문제 때문에 아무 프로그램이나 마구 돌아다니는 걸 상당히 경계하는 편인데, 이 문제도 애플 측에서 개발자들이 올린 프로그램에 대해 중간에 소프트웨어 검증 작업을 해 줌으로써 해결하고 있습니다. 개발자 프로그램 등록비도 표준 프로그램은 99불, 엔터프라이즈 환경에서 사용할 엔터프라이즈 프로그램은 299불로 다른 플랫폼의 개발자 프로그램에 비해 훌륭한 경쟁력을 갖추고 있습니다.

애플 개발자 사이트인 Apple Developer Connection 초기화면. 아예 화면의 절반을 아이폰 개발자 프로그램에 할애하고 있습니다.


제가 잘 아는 건 아니지만 우리나라에서 모바일 소프트웨어 만들어서 팔려면 진입장벽이 대단히 높은 것으로 알고 있습니다. 무선 서비스 제공업체쪽에 납품을 해야 하고, 여러 기종의 단말기 플랫폼에서 다 돌아갈 수 있도록 만들어야 하다 보니 개발비도 많이 들기 때문에 개인 개발자는 발 디딜 틈이 사실상 없다고 봐야 합니다. 하지만 아이폰용 애플리케이션은 맥 컴퓨터 한 대만 있으면 일단 SDK를 무료로 받아서 개발을 시작할 수 있고, 테스트용으로 아이폰 또는 아이팟 터치 같은 단말기 한 대만 사면 되고, 배포를 하고 싶으면 그 때 99불 내고 개발자 프로그램 등록해서 애플리케이션을 올리면 됩니다. 개발자 입장에서는 거의 최고의 솔루션이라고 할 수 있는 셈이죠.

애플은 그럼 이런 좋은 시스템을 만들어놓고 자원봉사하는 건가? 그건 절대 아닙니다. 그럼 애플이 아니죠. 애플은 소프트웨어 판매 매출액을 7:3으로 나눕니다. 개발자가 7, 애플이 3을 먹는 거죠. 개발자 입장에서는 자기가 정한 소프트웨어 판매 가격의 30%를 애플한테 주기만 하면 따로 소프트웨어를 배포하는 데 비용을 지출하지 않아도 됩니다. 일반적으로 소프트웨어를 판매하고 배포하는 데 드는 비용을 감안할 때 매출액의 30%를 그리 큰 금액이라고 하기는 힘들 겁니다. 만약 소프트웨어를 무료로 나눠주고 싶다면? 그 때도 마찬가지입니다. 개발자가 소프트웨어 가격을 0원으로 정해두면 애플은 더도 말고 덜도 말고 칼같이 0원의 30%, 즉 0원을 수수료로 가져갑니다. :) 무료 소프트웨어에 대해서는 배포 비용을 다 애플에서 부담하겠다는 마인드, 그리고 개발자들에게 소프트웨어를 직접 판매할 수 있는 시장을 만들어주면서도 소프트웨어의 안정성에 대해서는 자기네들이 검증을 함으로써 완전 개방시에 생길 수 있는 문제에 대한 안전판을 제공하여 소비자들의 편익도 보장해주는 서비스 때문에 애플에서 30%라는 수수료를 뗀다고 해도 뭐라고 하는 사람이 거의 없습니다.

애플은 이렇게 모바일 소프트웨어 시장의 헤게모니를 모바일 서비스 제공자한테서 빼앗고, 대신 많은 개발자들과 자사의 이익을 극대화시킵니다. 이런 마케팅이 가능한 것은 애플한테는 매우 훌륭한 제품과 매우 충성스러운 고객들이 있기 때문입니다. 이 둘의 강한 시너지 효과를 가지고 애플 핸드폰이라면 비싸도 사겠다는 심리를 확보하고, 그렇게 확보된 수요를 무기로 국가별로 하나씩의 모바일 서비스 제공업체하고만 독점적인 계약을 함으로써 모바일 서비스 제공업체한테 끌려다니는 것이 아니라 오히려 모바일 서비스 제공업체를 끌고 다닐 수 있게 된 거죠.

게다가 아이팟에 매료되어 애플 컴퓨터를 쓰기 시작한 사람들이 많이 있었던 것과 비슷하게 아이폰용 애플리케이션을 개발하기 위해 Mac OS X의 표준 API인 Cocoa (Objective-C 기반인데, ruby나 python 같은 언어하고도 잘 붙습니다) 를 공부하기 시작한 사람들이 크게 증가했습니다. 애플 컴퓨터나 아이폰이나 기본적으로 OS X이라는 OS를 돌리는 건 마찬가지기 때문에, 조금 차이가 있긴 하지만(아이폰용 API는 Cocoa Touch라고 부릅니다. 터치 인터페이스에 최적화된 거라고 보시면 됩니다만 기본적으로 Cocoa framework하고 크게 다르진 않습니다) 아이폰 애플리케이션 개발자들 중에 일반 OS X용 애플리케이션을 개발하게 되는 사람이 더 늘어날 것도 기대할 수 있는 거죠.

이런 시스템을 기반으로 벌써 많은 사람들이 성공을 일궈내고 있습니다. iFart라는, 방귀 소리를 내는 엉뚱한 애플리케이션으로 하루에 수천만원씩 버는 사람도 생겨났고, 한국에서도 iPhone/iPod Touch용 애플리케이션을 만들어서 쏠쏠한 수입을 얻는 사람도 생겨나고 있지요.

http://blog.dreamwiz.com/chanjin/9314741

이찬진씨의 블로그인데 드림위즈에서도 몇 가지 애플리케이션을 개발해서 아직 미약하긴 하지만 수입을 조금씩 내고 있는 모양입니다.

앞으로 구글 애드센스로 돈 버는 사람 못지 않게 iPhone/iPod Touch용 애플리케이션 개발로 돈을 버는 사람들 소식이 들려오길 기대해 봅니다.

구경할 만한 링크: http://www.cocoadev.co.kr/category/iPhone
OS X 프로그래밍과 관련된 내용이 많이 있어서 제가 자주 찾는 블로그인데, 이 블로그 주인장께서 아이폰용 애플리케이션 개발 튜토리얼 같은 것도 조금 올려주셨어요. 한 번 가서 구경해 보세요 :)
얼마 전에 스프링노트에서 크리스마스 기념 이메일이 왔어요.


이메일에 답장을 보내면 선착순 100 명한테 오프라인용 진짜 스프링노트 10권을 드립니다 라는 문구를 보고는 바로 이메일에 답장을 했죠. 그리고는 잊고 있었어요.

근데 오늘 낮에 갑자기 핸드폰으로 전화가 오더니 택배 아저씨가 집에 택배 받을 수 있냐고 묻더군요. 웬만한 택배는 학교로 오도록 해 놓는데 뭐가 집으로 오나 궁금했었는데, 집에 와 보니 스프링노트가 와 있었어요.

어찌나 반갑든지 :)

덕분에 A4 사이즈 스프링 노트가 열 권이나 생겼어요. 사진은... 조만간 업데이트하겠습니다.

+ Recent posts