안드로이드 개발팀을 이끌고 있는 개발자의 한 사람으로써 글을 씁니다.

최근 최고의 IT관련 키워드를 고르라고 하면 대부분 스마트폰, 앱스토어를 이야기 할겁니다
.
스마트폰이라... 개념도 명확하지 않죠... 사람들이 이야기 하는 스마트폰의 개념은 어떻게 보면 터치폰? 정도
?

저는 스마트폰을 이렇게 정의하고 싶습니다
.

고 수준의 운영체제를 갖추고 있으며 PC 기능의 일부분을 수용하면서, 직접 프로그램을 설치 및 운용 할 있으며, 인터넷 서비스가 가능한 휴대폰


최고의 스마트 폰을 꼽으라고 하면 아이폰 또는 안드로이드라고 이야기 하겠지요.
아이폰은 휴대폰을 사용하는 사람들의 이상을 가장 잘 실현시켜준 휴대폰이라고 할 수 있는데요, 이 아이폰이라는 것이 아주 골때리는 구조를 가지고 있습니다. 동작 과정은 물론이고 폐쇄적인 구동 환경 및 개발 과정은 이야기 할 것도 없고요 아이폰을 통한 수익 모델은 모두 애플을 거치게 되어 있습니다
.

물론 휴대폰을 그렇게 만들고(잘 만들었지요), 거기에 따라가는 사용자, 개발자들이 있기 때문에 누구도 탓할 수 없지만 다른 관점에서 보면 폭정인것이죠. 하지만 가장 잘 만들어진 스마트폰이라는데에는 의의를 제기할 사람은 아무도 없습니다
.

그 아이폰의 대항마로서의 가장 유력한 후보는 구글의 안드로이드입니다. 안드로이드의 개념은 바로 "오픈"입니다. 그동안 스마트폰의 동작 및 개발에 관해서는 모두 오픈하겠다는 의미입니다. 그래서 안드로이드에 관련된 개발 자료는 엄청나게 많습니다. 또한 자유로운 개발을 표방하고 있기 때문에 "개발자 등록(?)"이 필요하지 않습니다
.
누구나 원하면 공짜로 개발 할 수 있고 공짜로 배포할수도 있으며 거기서 발생하는 수익을 구글과 나눌 필요도 없습니다. 물론 구글 마켓스토어를 이용한다면 약간의 수수료는 줘야 하는걸로 알고 있습니다
.

안드로이드는 OS를 이야기 합니다. 아이폰하고는 다른 개념이죠. 아이폰은 하드웨어 및 소프트웨어(OS)를 포함하고 있습니다
.

하지만 안드로이드는 오로지 OS를 이야기 합니다. 따라서 하드웨어는 어떻게 만들던지 안드로이드가 구동되고 그 하드웨어 구성이 어느정도의 표준에 적합하다면 누구나 판매가 가능합니다. 그래서 안드로이드 폰도 다양합니다. 또한 많은 휴대폰 제조업체에서 안드로이드 폰을 만들수가 있는겁니다
.

이처럼 안드로이드는 "오픈"을 그 모토로 하고 있습니다.


하드웨어 개발업체는 안드로이드 폰을 만든 후 출시하기 위해서, 정확하게 이야기 하자면 안드로이드폰이라는 이름을 달기 위해서는 구글의 인증을 받아야 합니다. 이 과정은 개발사 입장에서는 꽤 복잡하고도 긴 시간을 필요로 한답니다.
어느정도의 안드로이드 기능을 안정적으로 구동할 수 있어야지 인증이 통과된다는 의미지요하지만 다시 말하자면 구글이 명확한 스펙을 제시하지 않은 부분은 멋대로 만들어도 된다는 이야기도 됩니다. 하드웨어 스펙의 부족한점은 전력 소비에 민감한 스마트폰에서는 큰 문제를 야기 할 수 있습니다.

 

애플리케이션 개발 과정중에 발생했던 문제점을 이야기 합니다.

우리가 만들고 있던 애플리케이션에서 문제가 되는 부분은 디스플레이의 전원이 차단되어도 G 센서의 이벤트는 계속 발생해야 하는 것이었습니다. 사전 조사 결과 G 센서의 전원을 제어하는 내용은 구글 개발자 센터에서 찾을 수 가 없었습니다.


구글 개발자레퍼런스에는 이런 구문이 있습니다.

전력 관리 부분인데요,


사용자 삽입 이미지

 

전력관리에 관련된 부분은 위의 네가지 플레그로 결정됩니다. 보시다시피 CPU, Screen, Keyboard에 한정되어 있습니다. 센서에 관한 부분은 어디에서도 찾을 수가 없습니다.

 

그럼 여기서 개발자들은 고민하게 됩니다. 프로젝트를 진행해야 하는가 중단해야 하는가.

 

당시 넥서스원으로 테스트하고 있었습니다. 실험 결과 디스플레이의 전원이 차단될 경우 G 센서의 전원 역시 차단되었습니다. 그래서 화면이 꺼져 있는 동안에는 센서값을 읽어올 수 없었습니다. 그래서 관련 문서들을 찾아봤습니다. 대부분의 글이 HTC 장치에서는 해당 기능이 동작하지 않는다는 내용이었습니다. 그런데 이런 내용도 있었습니다.

 

!!모토로라의 드로이드에서는 제대로 동작한다.!!

 

하드웨어 표준화가 제대로 되어 있지 않았던 것이었습니다. 그 때 당시에는 HTC 기기 보다는 모토로이가 국내에 확산될 때 였고, 운영체제 업그레이드 이슈도 있었기 때문에 개발을 진행해 완료하였습니다.

 

하지만 모토로이의 OS 업그레이드 이후에도 해당기능은 동작하지 않았고 애플리케이션은 그대로 사장되었습니다.

 

몇일전에 P&C의 시리우스 장치에 테스트를 하니 또 동작하는 것이었습니다. 환장할 노릇이지요. 그 외의 장치에는 동작하지 않는것으로 확인되었습니다.

 

저는 매우 단적인 예를 제시하고 있지만 이런 상황은 여러 문제를 야기 할 수 있습니다. 아무리 오픈된 운영체제라고 해도, 아무나 그냥 저냥 만들어버리고 그 문제에 대한 명확한 해결책 및 가이드라인을 제시하지 않는 것은 큰 문제입니다.

 

이런 문제는 개발자들이 떠 안게 될 것이고, 구글은 오픈된 OS 이니깐 알아서 수정해서 쓰라고 일관할지도 모를일입니다.

 

또한, 오픈 OS는 보안상 매우 취약하다는 문제점 역시 가지고 있습니다. 긍정적으로 생각한다면 보안상 취약 부분을 Open되어 있기 때문에 많은 개발자들이 찾아 낼 수 있고 수정도 가능하다라고 생각하겠지만, 해커들이 취약점을 발견할 경우 시간적 금전적 피해를 입힐 수가 있으며, 그 피해는 안드로이드 폰의 사용이 많아 질수록 심각해 질 수 있습니다.

 

오픈이라는 단어는 다른 의미를 가지고 있습니다. 바로 책임이 없다라는 뜻입니다. 안드로이드OS를 위해 개발된 스마트폰은 어떠한 사고를 당하더라도 구글이 책임지지 않습니다. 왜냐고요? 스스로들 안드로이드를 채택한것이지 구글이 해달라고 한건 아닙니다.

 

우리나라 사람들만 우르르 몰려다니는줄 알았는데, 세계 IT 상황이 그렇습니다. 아이폰에 엄청나게 얻어터지더니, 구글이라는 공룡기업이 안드로이드를 내놓자 마자 우르르 거기로 몰려갑니다. 아이폰에 당한 것을 거기에서 풀겠다는 심보로 말이지요.

 

또 하나 망각하고 있는 것이 있습니다. 구글이 왜 노력과 돈을 들여서 Open OS를 공급하고 개발자 지원까지 할까요? 좋은말로 장기적인 투자라고 이야기 하고 싶습니다.

 

하지만 다른 관점에서 본다면, 우리 생활 하나하나에 파고들려고 하는 구글의 야심을 엿볼수 있습니다. 얼마전 유럽에서 구글 스트릿뷰에서 사생활 정보를 수집했다는 사건 때문에 떠들썩 했었습니다. 바로 그겁니다. 구글은 검색엔진, PC, 웹브라우져, 전화기 그리고 TV 모든 인간 생활에 침투할려고 하고 있습니다. 어떻게 본다면 기업의 가장 이상적인 정책이라고도 할 수 있습니다.

 

똥인지 된장인지 구분도 못한다라는 이야기가 있습니다. 마냥 다른사람이 좋다 하니 나도 좋다라는 생각은 버려야 할 때입니다. 아무리 옆에서 좋다고 하더라도 사물의 본질을 파악할 수 있는 안목이 필요할 때입니다. 구글이 애플보다 더 지독한 기업이 될지도 모르르 일이고, 언제 어디서 여러분의 자고 있는 사진이 안드로이드 폰에 찍혀서 인터넷으로 TV로 퍼질지 모르는 세상입니다.

 

 

2010/06/06 22:02 2010/06/06 22:02
Posted by 인생을 설계하는 프로그래머
티맥스 윈도가 발표되고 하루 뒤에 미국 출장을 다녀왔습니다.
몇일전에 귀국을 했는데요.. 보고서나 뒷정리 때문에 정신을 못차리다가, 드디어 여유가 약간! 생겼습니다.

인터넷을 검색하다가 티맥스 윈도 어떻게 되었나 하고 찾아봤더니만,

박대연 회장의 인터뷰 기사가 눈에 걸리더군요. 제목하여
"MS의 그늘에서 벗어날 때다..."
제 블로그를 읽어보시면 알겠지만, 전 리눅스 빠돌이도 윈도우 팬도 아닙니다. 그냥 필요할 때, 번갈라가며 운영체제를 씁니다. 말 그대로 박쥐같은놈이지요.

어째뜬 간에 리눅스를 한번 생각해보죠.
리눅스 만든 사람 또는 커널 개선에서 매달려 있는 수많은 공개 프로그래머들이 이런 생각을 할까요?
"난 윈도가 싫어서 리눅스를 만드는거야..."

제 생각은 NO 입니다.
그런 생각은 일부 바보 같은 리눅스 커널 소스도 한번 안본 빠돌이들이나 하는 생각인것 같은데요.
리눅스가 만들어지고, 소스를 공개하는데 까지는 "윈도가 싫어"라는 생각보다는 "뛰어난 공개 OS를 만들어보자"라는 남다른 철학이 숨어있다고 봅니다.

그럼 리눅스가 좋냐 윈도우가 좋냐라는 질문에는 전 둘다 그저 그렇다라는 평가를 내리고 싶습니다.
쓰이는 분야가 다르기 때문이지요...
리눅스를 쓰는 사람들이 정말로 윈도의 그늘에서 벗어나서 윈도는 꼴도 안보고, 그냥 리눅스로만 컴퓨팅을 하진 않을겁니다.

그래서 "MS의 그늘에서 벗어날 때다" 라고 이야기 하는것은 참 어리석은 생각이라는 것이지요.

다시 티맥스의 이야기를 해봅니다.

인터넷에 검색해보면 티맥스의 개발자란 사람이 올린 글을 찾아볼 수 있는데요, 물론 이 사람이 진짜 티맥스 윈도우의 개발자인지 아니면 허경영 추종세력인지는 검증하지 못했지만 그 사람의 이야기를 보면 어느정도 사실인것 같습니다.

오래전에 발표 일정을 정해놓고 3개월전에 회사에서 윈도와 호환할 수 있도록 했다는 이야기인데요...
이때까지 티맥스가 하는짓을 보면 충분히 그러고도 남을것 같습니다. 참 대한민국 IT 종사자들은 인내심이 강한것 같습니다. 만약 다른 분야였다면 총 파업이 일어났을 상황인것 같네요.

이번달 초 티맥스 윈도가 발표되었는데, 과연 MS의 그늘에서 벗어났다고 생각하시나요?

만약 윈도우 API를 티맥스에서 완전 하드코딩으로 구현했다고 한다면... 하나의 가정입니다.
티맥스 윈도우 개발자들은 MS의 기술문서(그래봤자 MSDN이겠지요?)를 보고 MS가 한짓을 그대로 흉내내었을겁니다. 그것도 잠도 못자면서 수개월 동안... 그늘에서 벗어났나요? 그 개발자들이 설마 리눅스 환경에서 개발을 진행했을까요?

또 다른 가정 하나... 리눅스의 Wine을 그대로 뱃겼다면... 참으로 더러운 상황이죠.
MS의 그늘을 벗어나기 위해 MS의 윈도우를 흉내낸 Wine을 뱃겼다! 음... 도대체 뭐랑 비교를 해야하나요..
심각한 가치관의 혼란에 빠집니다...

자 어째 어째 해서 발표는 하긴 했습니다. 발표회가 끝나고 사람들이 "올레!" 하면서 감탄사를 불렀습니까?
수많은 블로거들이 티맥스 윈도를 씹어대기 시작했지요. 그나마 기대를 하면서 말수를 아끼던 기자 및 블로거들도 그동안 쌓였던 말들을 풀어해치기 시작했습니다.

자 정리하자면

MS의 그늘을 벗어나려고 MS의 윈도우와 비슷한 운영체제를 만들었는데, 중간 중간 보여준 스샷은 윈도 캡쳐해서 합성한것이고, 막상 풀어해쳐보니 제대로 돌아가지도 않고, 인터페이스는 윈도와 아주 아주 비슷하더라... 라는게 핵심입니다.

제 생각을 다시 말하면

MS의 그늘을 벗어나려고 MS의 윈도우와 비슷한 운영체제를 만들려다가 돈은 돈대로 박아넣고 욕은 욕대로 먹고, 그나마 유지하던 회사의 이미지는 엉망진창이 되버리고, MS의 그늘 밑에도 못들어가는 상황이 되어버렸다.

라는 것이지요.

처음 부터 아예 그런말을 하지 않고 묵묵히 개발하다가 조용히 발표했으면 얼마나 좋았을까요?
그래도 엔지니어 출신인 회장이란 사람이 돈맛을 알아가지고 얼론 플레이하다가 개 발렸으니 얼마나 쪽팔리겠어요.
그러니 처음부터 말조심을 하셨어야죠.
저랑은 별로 상관없지만 그냥 우리나라에서 일어난 일이라 정말 부끄럽습니다.
발표회때 개판 친 티맥스 윈도가 얼마 뒤에 좀더 개량해서 나올거라던데. 제발 삽질 고만하시고, 하던거나 쭉 하시기 바랍니다.
2009/07/28 05:15 2009/07/28 05:15
Posted by 인생을 설계하는 프로그래머
여러분 드디어 우리나라가 국산 OS를 쓸 순간이 다가오고 있습니다.

아주 오래전부터 티맥스라는 회사(.. SI 회사입니다)가 윈도우 호환 OS를 만들고 있답니다.
오늘 홈페이지에 가보니 7월 7일에 정식 발표라고 하는군요! 저의 짧은 소견으로는 OS를 만든다고 하면 보나 마나 리눅스 커널 약간 고친거 정도 되겠지만... 글쎄 티맥스는 윈도우즈 호환 운영체제를 만든다는군요...

일단 윈도우즈 호환이 될려면 Win32 API가 전부(그러니깐 100%는 안되더라도 시스템쪽 부분은 99.9%는 되야겠죠?) 구현이 된다는 얘기인데... 참으로 멋진 회사입니다. 하하하...

그런데 티맥스 윈도가 나온다 나온다 하고 벌써 얼마나 미뤄진지 모르겠네요... 7월 7일이라고 못박아놨으니 조만간에 나오기는 나올 모양입니다.
인터넷의 반응을 한번 쭉 살펴봤는데요. 대부분 그냥 피식하는 정도입니다. 물론 저도 마찬가지고요...

대부분의 엔지니어들 또는 어느정도 식견이 있는 사람들은 "어디 한번 만들어내나 두고보자"는 식이던데요.

뭐 어떻게 보면 당연한 것일 수도 있고 티맥스의 말을 빌리자면 "고정관념"이라는 겁니다. 하하..

그럼 제가 생각하는 티맥스 윈도우에 대해서 한번 짚어 볼까요? 왜 이놈이 그렇게 논란거리가 되고 있는가..

1. 운영체제 발표를 도대체 얼마나 미루나?
이미 티맥스는 임베디드 운영체제를 만든것으로 알고 있는데 제가 봤을땐 거의 uCOS 수준입니다. 간단한거지요. 그리고 제가 알기로는 티맥스 윈도우가 아니고 티맥스 OS 였습니다. 계속 미루더니 이름을 티맥스 윈도우로 바꾸고, 사람들이 기대 반 의심 반 기다리는 동안 그 흔한 스크린샷 한번 안보여 주는지.. 아.. 세미나 현장에서 잠깐 스크린 샷이나 구동모습을 보이긴 했습니다만... 몇명 모아놓고 보여주는거랑 인터넷에 공개하는거랑 뭔가가 좀 다르겠지요. 결국 7월 7일에 발표한다고 얘기는 해놨지만 그것도 연기될지도 모른다는 생각이 드네요.

2. 리눅스에 Wine을 붙인거 아닌가?
리눅스에서 윈도 프로그램을 돌릴 수 있는가? 라는 질문은 "그럴수도 있다"라고 할 수 있겠네요. Wine이라는 공개 소프트웨어를 사용하면 어느정도까지는 윈도 프로그램을 돌릴 수 있습니다. 일단 윈도 프로그램을 돌릴려면 Win32 API를 지원해야하는데, 그래도 태생이 다른데 리눅스에서 윈도 프로그램을 100% 돌릴 순 없습니다. 속도도 느리고요. 그래서 잘 안쓰죠. 그나마 윈도를 에뮬레이팅 시킨것이 Wine 이니깐 티맥스 윈도우에서도 대략 Wine과 비슷하게 동작하지 않을까 라고 하는게 전문가들의 생각입니다. 그럼 결국 리눅스가 공개되어 있고 Wine도 공개되어 있으니 대략 짬뽕한 운영체제? 라는 말이 나올것도 같군요.. 근데 GPL이 적용되면 티맥스 운영체제 소스도 공개되어야 하고 나중에 뽀록나는거 아니겠습니까?

3. 어째 테스트 한다는 소리는 하나도 없는거냐?
7월 7일 출시라고 못박았는데 어디서 베타 테스트 한다는 소리는 전혀 듣지 못했습니다. 진짜 한번 테스트 해보고 싶은데 말이죠. 회사 내에서 수천명의 엔지니어들을 이용하여 테스트를 진행할 수도 있겠지만... 어디 운영체제가 CPU 하나 덜렁 있다고 돌아가는 소프트웨어도 아니고 적어도 하드웨어 개발업체에는 드라이버 호환성등을 위해서 테스트를 반드시 진행해야 할건데요... 하물며 OS로 먹고사는 기업인 MS도 그런 부분에 엄청나게 신경쓰고 하드웨어 벤더의 테스트 결과에 만족하지 못해서 일반인들에게 테스트를 하고 있지요. 만약에 티맥스에서 정말 테스트를 않하고 OS를 출시한다면... 대략 개념없는거네요. 티맥스에서는 드라이버 수준까지 호환성을 끌어올린다고 하는데... MS가 운영체제를 발로 만든것도 아니고... 터무니 없는 소리로 들립니다. ㅋ

4. 정말... 만에 하나 정말 만들었다면 경쟁력은 있는것이냐?
경쟁력이 없는거 왜 만들고 있는지 모르겠네요. 과연 티맥스 윈도우가 MS의 윈도와 비교하여 경쟁력이 있는가에 대한 질문을 해볼 수 있겠는데요... 이름 자체도 티맥스 윈도고 컨셉이 MS 윈도 호환 OS입니다. 한마디로 윈도 짝퉁인거죠. 뭐 어찌 어찌 해서 99.9% 호환성 있게 동작한다고 합시다. 그럼 가격 면에서 유리한 고지를 차지하게 되면 경쟁력이 생길 수도 있다는건데... MS가 가만히 두겠습니까? 그리고 운영체제가 에러 한번 난다고 해서 넘어가는 소프트웨어도 아니고 에러 한번 나면 사람 짜증나고 다른 프로그램도 안돌아갈건데... 몇만원 아끼자고 짝퉁을 쓰는 바보들은 없겠지요? 그럼 다른 부분에서 경쟁력이 있어야 하는데 뭐가 있을까 흐음...
또는 경쟁력이 없는데 그냥 객기로 만들어본거라면 이거 진짜 개념없습니다. 수천명의 인력을 거의 3년동안 투입해서 만든게 객기 OS라면... 아이고 생각도 하기 싫습니다.

5. 전 네티즌을 상대로 뻥을 치고 있는것이다?
많은 의견들이 티맥스에서 희대의 사기극을 벌이고 있다는겁니다. 그래도 수십억씩 매출을 올리는 회사가 그럴리 없겠지만 저도 사실 약간씩 의심이 들긴 합니다. 1, 2, 3, 4 항목을 읽어보시는 여러분들도 약간 그런 생각이 들지 모르겠네요. 도대체 OS를 만든다고 했을때부터 구라 기미가 약간 보이다고 날이 가까워 질 수록 더 거짓같다는 생각이 왜 계속 드는건지

이상 인터넷상에서 떠도는 이야기를 정리한건데, 검색을 하면 할 수록 정말 뻥같은 느낌을 지울 수가 없군요.

결론을 이야기 하자면 일단 무슨 평가를 내리기 전에.. 우리가 아직 못봤으니깐 말이지요. 7월 7일까지 기다려보는 수 밖에 없습니다. 많은 엔지니어들이 기대를 걸고 있습니다. 정말로 써먹을 수 있는 국산 OS...
하지만, 대략 리눅스에 Wine 붙인것이거나, 기대에 어긋나는 그런 파렴치한 행동을 한다면 티맥스는 거의 망한다고 볼 수 있겠네요.

제가 이렇게 글을 쓰고 있는것도 막연한 기대감 때문이겠지요. 나중에 정말 티맥스 윈도우가 엄청나게 좋게 만들어져서 제가 "나쁜놈"이라거나 모욕죄로 법정 소송이 걸려도 괜찮습니다. 그래도 괜찮으니 티맥스 윈도우 잘 만들어졌으면 좋겠습니다. 우리나라 모든 엔지니어들이 바라고 있을겁니다.
2009/06/11 12:00 2009/06/11 12:00
Posted by 인생을 설계하는 프로그래머

오늘은 컴퓨터 사용자로서 한마디 하겠습니다.

네이버나 다음등 인터넷 기사를 지원하는곳에 가면 툭하면 터지는게 종교 문제죠...
뭐 "예수쟁이 미워.." 라든지 "개독교" 등등... 참 눈살을 찌푸리게 하는 많은 더러운 일들이 있습니다.

참 제 3자의 입장에서, 욕을 하는사람이 더 미울때가 있지요... 사실 저는 기독교를 옹호하지도 비판하지도 않는 그냥 시시껄렁한 사람입니다. 뭔가 맞는지 틀린지 모르지요 ㅎㅎ

근데 OS계에도 그런 행태가 있으니...
윈도만 사용하는 사람을 소위 말하는 컴퓨터에 대해선 좃도 모르는놈. 이라는 생각이지요.
그래서 왕따가 싫은 소심한 오덕들은 되도 않하게 리눅스를 깔아서 뭔가 있어 보일려고 비주얼한 효과까지 최대로 활성화 시키고... 그걸 또 자랑이라고 블로그에 올립니다.
"아나콘다"가 뭔지도 모르는 사람들이요..... 참으로 웃음이 나옵니다.

그래서 난 우분투를 깔아봤으니... 리눅스 유저라고 말합니다. sudo 명령어도 모르는 사람들이요..

네! 맞습니다. 여러분은 리눅스 유저입니다. 정확하게 말하면 short time linux user가 되겠군요.. 제가 장담 호언하는데 1주일만에 다시 윈도로 돌아갈 분들입니다.

저는 윈도 옹호론자가 아닙니다. 그렇다고 리눅스 빠돌이도 아닙니다.
전... 적당한 목적에 맞는 OS를 쓰는 실용주의자입니다. 윈도만 쓸줄 알고 리눅스 못쓴다고.. 절대 뭐라고 않합니다. 리눅스만 쓴다고... 절대 뭐라고 않합니다.

근데 리눅스에 VirutalBox 억지로 돌려서 윈도로 돌리면 욕합니다. 물론 욕 얻어 먹는 사람은 리눅스에서 돌리는 응용프로그램은 Virtual Box 밖에 없는 사람이죠.. 이런 사람은 몇일 못가 다시 윈도우를 깝니다.

참 블로그를 돌아다니다 보니... 우분투..(리눅스 중에 심플한 패키지에 속하죠)를 설치하고 나서 이제 난 리눅스 유저라고 블로그에 올리고.... 뭐 자랑인듯하게 있는 말 없는 말 꺼내놓는 사람들... 그리고 윈도가 싫어졌다니.. 뭐 윈도는 어쩌고 저쩌고.. 리소스가... 뭐.. 자원 속도가 느리고.. 뭔 지랄들을 이렇게 하시는지...

이런걸 보면.. 예수쟁이는 역시 안돼... 개독교 하는 꼴과 왜 이렇게 비슷하게 보이는걸까요...
저는 리눅스 사실 잘 모릅니다. 커널 컴파일 몇번해보고 소스 좀 분석해본것이 전부인데..
제가 윈도를 쓰는거 보면 너정도 되는 인간이 왜 윈도를 쓰고 앉아있냐.... 리눅스도 편리하다... 리눅스도 왠만한거 다 된다... 뭐 어쩌고 저쩌고 지랄지랄...

* 페도라 정도 되는 리눅스에 온갖 비주얼 효과 다 활성화 시키면... 윈XP보다 훨 느립니다.
* 속도요? 리눅스에서 서비스가 뭔지 모르고 오만것 다 띄워놓으면.. XP보다 느립니다.
* 그렇다고 영어로 된 패키지 매뉴얼을 읽어보냐고요? XP는 한글로 되어 있으니 좋죠...

땅파는데 삽으로 퍼고 있는 사람한테.. 굴삭기 몰고와서 의자에 앉아서 조작도 할줄 모르고.. "포크레인이 얼마나 좋은지 몰라? 이래 뵈도 포크레인 커널 2.6이라구!!!" 라고 외치는거랑 무엇이 다르겠습니까?

물론 많은 분들은 꼭 리눅스가 필요해서 리눅스를 쓰시는 분도 있을겁니다. 그런분들은 오히려 조용합니다. 문제가 되는건 필요도 없는 리눅스를 낑낑대서 깔고, 윈도 쓰는 사람들을 욕하는 바보들이지요..

제 친구가 그랬습니다. "나 Mysql 돌려봤어.. ㅋㅋ 존나 쉬워" 휴... 그걸 어디에 쓰는건지 알만한 친구인지도 궁금합니다.

적어도 리눅스를 메인 PC로 쓰면서.. 윈도 쓰는 사람들 씹을려면... 적어도 말이죠...
커널 컴파일 한번 하고... 시중에 파는 무선 랜 카드 들고와서 한번 설치 해서
노가다로 드라이버 잡은뒤에...  네트워크 연결시키고.. 파이폭스나퀀커러로 인터넷에 접속해서 씹어줘야 좀 먹히는거 아닙니까?

그래서 전 리눅스 안씁니다. 그럴 자신없거든요...

2008/09/14 11:07 2008/09/14 11:07
Posted by 인생을 설계하는 프로그래머

그 동안 열심히 사느라 블로그에 오랜만에 글을 씁니다. 오늘 아는 친구랑 대화하다가 참 어이없는 소리를 들었습니다.

이 친구는 군대에 있을 때 한 기수(2주) 선임이었고, 군대에서 매우 친하게 지내다 사회에서 친구로 지내고 있습니다. 이 친구는 제대 하고 얼마뒤에 영국으로 유학을 갔는데, 유학목표는 스포츠매니저였습니다. 워낙 스포츠를 좋아하던 친구라 영국에서 프리미어 리그등 각종 축구 경기에 대한 기사를 썼고, 지금은 프리랜서 기자로 활동하고 있습니다.

네이트온에서 대화를 하는데 한국이 싫답니다. 이유를 물었더니 챗바퀴같은 삶이 싫고, 자기가 하는일에 특성상 접대를 많이 해야하기 때문에 술을 많이 먹어야 합니다. 그리고 한국에서 일하는 사람들은 매일 야근에 집에 갈 시간도 없고, 노력에 비해 댓가가 너무 적다는 것이 그 이유였습니다.

"이단자 하나 났구만..." 하고 그냥 이야기를 넘겨버렸지만 마음속에 뭔가 찝찝한 것이 남아있군요. 그리고 웃긴건 아직도 자신이 조국이 원하는 인재라고 생각하는 것이었습니다.

저를 비롯한 IT계열에 종사하는 사람들은 말 그대로 "야근이 생활"이죠. 다른 사람이 보기에 빵빵한 직장인 "삼성전자"에 근무하는 친구들도 아침 6 출근에 퇴근은 기약 없다고 합니다.

그렇지요... 아무리 좋은 직장을 가지고 어떤 일을 하던지 간에 세상에 힘들지 않은 사람이 있을까요? 영국에서 보고 듣고 느낀것이 단순히 일찍 퇴근하고 가족과 함께 보내는 시간이었다면, 그 친구는 유학의 목적을 잊어버린게 아닌가 합니다.

너무 밝은곳만 봤을까요? 과연 영국에는 모든 사람들이 일찍 퇴근하고 가족과 함께 보내는 시간 많고, 댓가도 넉넉하게 받을 수 있을까요?

바꿔 말한다면, 모든 한국 사람들은 아침일찍 출근에 퇴근은 기약없고... 개인 시간도 없는데 돈은 조금 받을까요? 그리고 그렇게 받는 사람들이 이런 현실에 모두 불평을 하고 있을까요?

물론 사람마다 중요하게 생각하는 가치가 모두 다르겠지요. 하지만 비록 한국사회가 그렇게 돌아간다고 해서 한국이 싫다는건 좀 납득이 가지 않습니다.

만약에 자신이 한국에 와서도 일 조금하고 돈을 많이 받을 수 있는 능력이 되었다면, 한국이 싫다라는 소리를 않했을겁니다. 그때쯤 되면 진짜 조국이 원하는 인재가 될수 있었겠지요.


저도 마찬가지입니다만, 사람이 불만을 갖는다는건 자기가 처한 상황이 좋지 않다는 이야기고, 다르게 이야기 한다면 좋은 상황을 만들지 못하는 자기의 능력을 불평하고 있는것이지요.

이런 현상은 제 친구에게서 느낀거지만, 주위에서 많은 것에서 이것과 비슷한 냄새가 납니다. 어쩌면 이 글을 읽으시는분들은 저를 개인주의자 또는 이기주의자라고 생각하실지도 모릅니다.

저는 기름값이 올라도 물가가 올라도 대통령이 누가 되던 그리고 쇠고기가 수입되던 아무런 신경쓰지 않습니다. 물론 전혀 그렇지 않다는 이야기는 아니고요, 심각하게 받아드리지 않습니다.

언제나 이런생각을 하게 돼죠. "기름값이 오르면 기름을 아껴쓰자... 그래도 써야되면 기름값에 신경쓰지 않을 정도로 많이 벌자" 이런식으로 생각하면서 스트레스 받지 않으려고 합니다.

물론 제가 아직 어리고 앞으로 살아야 할 날이 더 많아서 이렇게 긍정적으로 사는것일지도 모릅니다. 인정하긴 싫지만 언젠가 저의 인생이 결정되는 그날이 온다면, 전 이렇게 살겁니다.

"기름을 쓰지 않아도 밥은 먹고 살수 있어..." 라고요. 다른사람들은 저를 이단으로 보실수도 있겠네요.


저는 이런 글을 쓰면 답답한 마음이 풀릴것 같았습니다. 하지만 글을 계속 쓸수록 답답한 현실이 보이는것 같기도 하고요, 불확실한 미래가 두렵기도 합니다.

만약 암울한 미래가 된다면 어느 순간 저도 촛불 집회장에 나가 있을지도 모르겠네요.


생각이 제대로 정리는 안되는것 같지만 더 신경쓰고 싶진 않습니다. 그 친구와는 아마 다시는 이야기를 하고 싶지도 않을겁니다. 자기가 해야만 하늘일을 걱정하는 친구고, 유학가서 헛돈만 쓰는 친구니깐요.

저는 내일 일어나서 운전을 하면서 불만을 가지지 않도록 노력해야겠습니다.

2008/08/16 03:16 2008/08/16 03:16
Posted by 인생을 설계하는 프로그래머

IMF가 오기전 96,97년도만 해도 대한민국은 벤처기업의 천국이었지요. 제가 갓 고등학교를 입학한 때로, 친구들끼리 나중에 벤처기업 하나 만들면 성공한다 라는 농담까지 나오던 시절이었습니다. 그런 트랜드를 이끌어 오던 많은 사람들 중 하나가 한글과 컴퓨터의 이찬진씨와, 안철수바이러스 연구소의 안철수씨죠.

저 같이 컴퓨터에 관심이 많았던 어린 아이들은 그런 사람들을 보면서 벤처기업 사장을 꿈꾸고 있었습니다.

그런 도중 IMF가 오면서 벤처기업 거품이 사라지고, 실속이 없던 벤처기업들은 추풍낙옆처럼 떨어지고 말았습니다. 한 때는 벤처기업 사장을 꿈꾸던 어린 학생들이 더 이상 벤처(Venture)랑 관련없는 안정적인 직장에 더 몰두하는 세대가 오고 말았습니다.

저 역시, 컴퓨터 관련 일을 해야겠다는 생각을 어디엔가 접어두고 사관학교를 갈려고 했었습니다. 지금은 물론 IT쪽 관련으로 일을 하고 있습니다. 그 때 사관학교에 낙방한것이 얼마나 다행인지 모릅니다.

저는 2000년도에 대학에 입학하였는데, 그 때까지만 해도 사회의 IMF여파가 대학까지 오지 않았을 때죠. 선배들은 늘 1학년때는 놀아도 돼! 라고 말하였고, 선배들 말대로 세월아 네월아 지내면서 군대가는게 1학년 남자들의 생활이었습니다.

지금은 상황이 많이 바뀌었는 것이, 1학년들이 밤 늦게 노는건 찾아볼 수 없고, 수업시간 중간 중간에는 당구장 대신 도서관에 가더군요. 세상이 어렵기 때문일거라고 생각합니다. 우리과 1학년 학생들에게 진로를 물어보면 20%정도는 공무원, 80%정도는 "삼성"이라고 말을 하는데, 선배의 입장으로써 가슴이 아픕니다. 어찌하여 저런 어린 애들에게 어려운 세상을 겪게 만드는지요.

우리과 학생들의 대부분의 진로를 살펴보면 50% 이상이 개발자로 일하는것이더군요. 물론 다른일을 할 수 있겠지만, 제가 봤을때는 개발자로 사는것이 다른일을 하는 것보다 전공을 살릴 수 있고 그에 따라 임금도 많이 받는것으로 보입니다. 간혹 선배들이나 친구들 중 개발자는 개고생하고 돈은 적게 받는다는 얘기를 하지만, 이런 사람들과는 개발자에 대해서 논하고 싶지 않군요.

2,3학년에 진급하게 되면 다른과도 마찬가지지만 컴퓨터공학과에서는 눈으로 볼 수 있는 무엇인가를 만들어내는 과제를 많이 하게 됩니다. 여기서 미래가 있는 사람과 없는 사람이 갈려지더군요. 제가 봤을 때는 이런 과제를 100% 소화시키는 학생은 전체의 20%도 되지 않는 것 같습니다. 100명이라면 20명정도죠. 하지만 여기서도 참 다행인것이 이 20명이 여러집단에 분산되어 분포되어있는 것이고요, 그런 학생들이 포함되어 있는 집단은 과제를 패스 할 수 있다는 것이지요. 무슨 말인지 이해가십니까?

대부분의 큰 과제는 3~4명 정도가 팀을 이뤄 진행을 하는데, 그 중에서 과제를 이해하고 과제를 수행할 능력이 되는 학생은 전혀 없거나 1명입니다. 오히려 교수들도 팀을 구성할 때 이런 부분을 고려합니다. 교수들의 의도야 1명이 나머지를 독려하며 가르치면서 과제를 진행하는 것이겠지만, 학생들의 입장에서는 자기팀에 "과제 능력자"가 없을까봐 조마조마한 눈치도 보입니다. 그런식으로 지내다가 4학년이 되고 4학년때도 그렇게 행동하면서 졸업해버리는거죠.

이런부분은 학부과정때만 있는것이 아니라는게 저에겐 더 큰 지탄으로 다가옵니다. 요즘같이 이공계가 멸시받는 시대에서는 그저 "대학 4년 공부하면서 학과 성적 잘 받아서 대기업에 취직하면 성공한 케이스"라는것이 널리 인식되고 있기 때문에, 대학원 과정에 진학하는 학생들이 5~6년전에 비해서는 엄청나게 적습니다.

대학원에 진학하는 학생들을 보면 그래도 자기 신념이 있고, 학부생때 날던 애들이 많습니다. 저 역시 대학원에 진학하기 위해서 "SSM(Samsung Software Membership)"을 박차고 나올 정도로 저에 대한 신념이 굳은 사람이었습니다. 대학원에 와서도 항상 신념을 지키려고 노력했고요...

근데 세상 어디를 가나 어느 집단에 포함되나 Pure는 없다는 생각이 들더군요. 그런 대학원생들 와중에도 "취업이 안되서", "두 발자국 나가기 위해서 한발자국 쉬자"라는 논리를 가진 학생들도 대학원에 온다는거죠. 참 우울해지기 시작합니다.

대학원에서는 학부때 하던 과제보다 스케일이 큰 과제를 진행하는데, 여기 역시도 과제 제출하기 몇일전부터 오만 연구실을 뛰어다니면서 과제의 답을 찾는 학생들이 많이 있었습니다. 서로 얼굴 붉히는 일이 싫어서 그냥 그런갑다 하고 넘어갔는데, 기분 나쁜건 어쩔수가 없었습니다.

결국 대학원 석사과정 2년을 보내면서 C 언어 하나 제대로 익히지 못하고, 어디서 배껴 쓴 논문 하나 들고 나가는게 고작인 학생들이 존재하는 겁니다. 제가 이 글을 쓰는 이유가 빠졌군요. 몇일전 참 어이없는 상황을 겪고 어찌할바를 모르겠습니다.

저는 학부/석사과정을 거치면서 대한민국 개발자의 미래를 지켜보고 있습니다.

대학원에서 실적이라면 바로 논문인데요, 서른살이 가까워지는 이마당에 자존심 없이 행동하는 몇명 이들이 보였습니다. 다른 사람 논문을 자기 이름으로 발표하고 그걸로 학교에서 지원을 받습니다.

지금 사회적으로 큰 문제가 되고 있는 어떤 현상의 원인을 보고 있는것 같습니다. 학교에서 그 나라의 미래를 본다는 말이 이렇게 정확하게 매칭되기도 힘들군요 ㅎㅎ.

제가 "난 정말 자존심 상해서 그런짓 못하겠다."라고 얘기하면 "세상이 그래 다른 사람 다 그러는데 나만 안그러면 바보 되잖아" 이런 뻐꾸기를 날립니다. 제가 바보였던 것이었습니다. 과제가 나오면 2~3명을 이끌고 과제를 수행하고, 학위 논문을 쓰기 위해서 몇날 몇일 잠을 못자고, 학교에서 논문에 대한 지원을 받기 위해서 돌머리에서 나오는 영어단어 찾아가며 논문 쓴것이 다 바보같은 짓이었다는 것입니다.

그리고 더욱 큰 문제는 주변 사람들이 오히려 그런걸 당연하다라고 생각하는 것이 절 더 바보스럽게 만들고 있습니다. 어쩌다가 이런 세상에서 살아가야 하는지 모르겠습니다.

더 깊게 생각해본다면 이런 문제는 학교에서만 발생하는 일이 아니고, 사회 전반적인 문제라는 점에서 저에게 "바보"라는 단어를 말했던 사람들을 처단하여 더러운 싹을 짤라버리고 싶군요. 하지만 전 문화인이고, 지식인이기 때문에 상상으로만 처단하고 있습니다.

이런 행태를 만들어낸 건 누굴까요... 혹자들은 얘기합니다. 사회가 문제이고, 학교가 문제이고, 기업들이 문제이다.

예, 예 다 옳으신 말씀입니다. 이런말을 하는 사람들에게 몇마디 전해주고 싶군요, "우리가 이런 세상에 사는 건 당신 부모가 당신을 낳았기 때문이다."라고요.

제 생각으론 "니 탓이오"라는 문제가 고쳐지지 않는한, 대한민국 개발자나 아니면 또 어떤 문제라던지 개선되지 않을 겁니다. 가장 중요한건 당사자인 우리의 생각을 바꾸는 것이라고 생각합니다.

어짜피 공대, 컴퓨터공학과를 오는 것 자체는 행정직원이 되기 위해서 오는건 아닐겁니다. 나름대로 목표가 정해져있었겠지요. 만약 목표도 없이 대학을 선택하고 공부하는 것이라면 그런 사람들은 우리 사회의 잉여인간으로 놔두고 싶습니다.

제 생각을 요약하자면, 일단 개발자의 길을 걷기로 마음먹은 우리 학생들은 근성이 부족합니다. 자기가 무엇인가를 해내고 다른 사람을 이끌 수 있으며, 열심히 하고자 하는 학생을 바보로 만들지 않는 마음을 가져야 할겁니다.

그리고 그런 생각이 없는 사람들은 사회를 위해서 제발 조용히 있어줬으면 합니다. 자기가 하는 행동이 떳떳한양 열심히 하는 사람을 비난하게 만들고, 사회를 거꾸로 돌리는 ... 이런 말을 몇백번 해봐야 그런 사람들은 자기가 그러고 있는지도 모를겁니다. 제 등뒤에서요... 또 욕이 나올려고 하는군요.

어째뜬, 가장 중요한건 자신의 마음가짐이라고 생각합니다. 사회가 아무리 엉망이 되더라도 "나 하나라도 열심히 하자"라는 생각... "노력은 배신하지 않는다"라는 생각... 이런 생각만이 이 썩은 사회의 치료제가 될 것 같습니다.

저 역시 이 글을 쓰면서 저의 마음을 새로 추스리려 합니다. 언젠가는 결실이 맺어지겠지요..

노력하는 사람이 바보가 되지 않는 세상을 위해서...

2008/04/29 22:49 2008/04/29 22:49
Posted by 인생을 설계하는 프로그래머
드디어 나라가 미쳐가는 모양입니다.
전 명박이와 그의 쫄들이 단순이 멍청하고 개념이 없는 줄 알았는데... 나라를 궁지로 몰아가는군요... 교육은 한 나라의 백년대계로 교육정책이 바로 서 있어야 나라가 바로 선다는거 명박이를 제외한 모든 분들은 알겁니다.

제가 한 나라의 대통령 당선자를 명박이라고 부르는거 이해 부탁드립니다. 명박이는 아직 대통령이 아니고 대통령 당선자일 뿐이죠..

요즘 인수위가 하는 행동들을 보면 현역 대통령한테 말하는 꼬라지 하고 하는 거 보면 참... 뭐랄까. 이제 상견례 막 끝낸 며느리가 시집에 와서 시부모한테 이래라 저래라 하는 거랑 별 반 다를게 없어 보이는군요...

하나 하나 짚어보자면 마음에 드는구석 하나 없어보이지만...

오늘 참 어처구니가 없는 신문기사를 봤습니다.
고등학교에서 전과목 영어 수업을 한답니다. 우리나라가 언제 America가 된겁니까?
이유도 참 뭐같더군요... 사실 씨발 좃같더군요... 도대체 인수위와 명박이는 생각이 있는겁니까?
영어 사교육비를 줄이자고 전과목 영어 수업을 한다고 하다니... 그리고 많은 이해력이 필요없는 "수학", "과학", "예체능" 부터 시행한답니다.

공학박사 과정을 공부하는 저에게 있어서는 "수학","과학"을 이해력이 필요없는 과목이라고 단정한게 참으로 지탄스럽기 짝이 없습니다. 물론 "예체능"역시 발로하는 과목이 아니지요... 세상 어떤 일이 이해없이 진행될 수 있을까요?

인수위가 정부부처를 개편하면서 정통부를 없앤다고 지랄할때 부터 이것들이 우리 나라를 말아먹겠구나 하고 걱정이 되었었는데... 우리나라 산업을 이끌어온 "과학"을 이해가 필요없는 과목으로 단정하다니요!!! 그래서 인수위가 된겁니까? 정치라는 과목은 이해력이 무지하게 필요한 모양인데 정치라는 과목을 전공해서 하는 정치인들이 상황 이해력이 그거 밖에 안되는 거 보니 고등학교때 정치 과목을 영어로 들었던 모양입니다.

그리고 고등학교 수업을 영어로 한다면 영어 사교육비가 줄어든다고 누가 그럽니까? 고등학교 수업을 영어로 하게 되면 고등학교 수업을 따라가기 위해서 초등학교 중학교 부터 영어 과외를 하는 학생들이 많아진다는 것을 어찌 모릅니까? 결국 유치원생부터 영어로 수업 할 생각입니까? 근본적인 해결 대책을 못 내놓고 땜빵식의 해결책을 내놓으면 어쩌자는 겁니까?
차라리 한글을 없애는게 영어 사교육비를 줄이는 최선의 방법처럼 보이는건 저 뿐인겁니까?

명박이가 대통령에 출마하면서 걸었던 얼토당토 않한 고등학교 수업 전면 영어수업으로 하겠다는 공략 정말 시행할 생각입니까? 그나마 명박이를 손톱의 때만큼이나 믿었던 저는 왜 이렇게 제 자신이 어리석게 느껴지는 것일까요...

제가 이런글을 쓰고는 있지만 저만 이런생각 가지고 있는거 아닐겁니다. 명박이가 아직 대통령이 되진 않았지만 벌써부터 명박이 임기가 끝나길 기대하고 있는건 도대체 왜 그럴까요...

인수위와 명박이는 자기 딴에는 나라를 개편하겠다고 설쳐보이는것이지만 자기들 혼자 개편한다고 어처구니 없는 방법을 꺼내들고와서 설치면 나라가 바뀐답니까?

대안이 없으면 비판도 하지말라라고 했습니다. 사실 이렇게 된 우리나라 뾰족한 대안이 없겠지만 그래도 좋은 방향으로 흘러가야죠. 대통령이 되는건 나라를 잘 이끌기 위해서 대통령이 되야지 자기의 생각을 나라를 대상으로 실험해볼려고 되는건 아닙니다. 명박이 형 정신좀 차리세요.

그리고 인수위... 아직은 노무현 정권입니다. 노무현 대통령이 아무리 삽질을 했어도, 존중해주지는 못할망정 인수위 자신이 차기 대통령 처럼 행동하는건 사실 꼴불견입니다.

좀 알아먹고 수용 가능한 정책들을 들고 나와서 나라에 칼을 대길 바랍니다. 그래도 잘될지 안될지 모르는데 어찌 그렇게 자신있게 얘기하는지 정말 궁금합니다.
2008/01/24 16:09 2008/01/24 16:09
Posted by 인생을 설계하는 프로그래머

오랜만에 다시 시작한다.
3번째 시간... 멜론 파일(DCF)를 MP3로 만드는데 필요한 것들을 프로그램으로 구현한다.

오늘은 DCF 파일에서 음악에 대한 정보를 추출하는 방법에 대해서 알아보자.
DCF 파일을 메모장으로 열면 다음과 같다.

2 : Rights-Issuer:http://mobile.melon.com/utility/dcfd.jsp
3 : Content-Name:?덇? ?щ뒗 洹몄쭛
4 : Content-Description:1764198 11
5 : Content-Vendor:melon.com
6 : Icon-URI:http://icon.digicaps.com/icon.asp
7 : eTarget:MIN,"SSeID-1/6715B86BE79D2FAA0617"
8 : eCEK:SSKEY-1;cidType=MIN;dMethod=AES128CBC-RFC2630;eValue="4603F2D6713F6DD8E3F13536469706E3A087BA1DC7F847A18FE1E8F539BB2ACE"
9 : Usage-Control:Time-Not-After/20080204235959Z+09,Allowable-Services/00000000;cidType=MIN;eAuthCode="SSeAuth-1/F7FD18EFD6A894E12893"
10 : Meta-Container:KS_C_5601-1992;MENU="mp3";Title="니가 사는 그집 - 박진영";Copyright="widerthan";Length="00:03:47";Codec type="mp3";


앞에 붙은 숫자는 라인번호이다. 중요한 정보는 10번째 줄에 있는데 이부분을 추출하는 프로그램을 만들어 보겠다.
왜 다른건 놔두고 10번째 줄만 추출하는가? 그리고 추출해서 어디에 쓰는가? 라는 질문을 가질수도 있다. 그에 따른 대답은 10번째 줄은 음악의 길이 제목 가수명 등의 정보를 가지고 있고, 그 정보를 이용하여 녹음에 활용 할 수가 있다. 그리고 녹음이 끝난후에 변환된 MP3파일에 ID3태그를 채우는데도 활용이 된다.

정보를 추출하는 과정은

1. 파일을 연다.
2. 10번째의 정보를 읽는다.
3. 필드별로 정보를 가져온다.

이과정을 거치면 된다. 그럼 만들어진 프로그램을 보자
먼저 파일 정보에 대한 구조체는 어떻게 생겼는지 생각해보자.
지금부터 나오는 프로그램 소스 코드에 대한 태클을 사양해줬으면 좋겠다. 이 글을 보는 사람 중에는 나보다 내공이 더 높은 사람도 많을 것이다. 프로그램이 비효율적다. 어처구니 없다. 이런식의 태클은 그냥 생각만 해달라. 내 프로그램을 보고 아이디어를 얻어서 더 좋은 프로그램을 만든다면 그걸로 만족한다.


typedef struct _dcf{
 char Title[100];  //제목
 int  Length;   //음악 길이(초)
 int  SampleRate;  //샘플링 레이트
 char Genre[30];  //장르
 char Album[100];  //앨범
 char Artist[100]; //가수
 int  TrackNum;  //트랙번호
} dcf;



프로그램에 사용될 구조체이다. 이 구조체는 음악에 대한 정보를 담고 있다. 근데... DCF 파일에 있던 BitRate에 대한 정보는 없다. 왜 없을까... BitRate는 MP3에서 사용되는 정보인데, 음악파일(Wav)을 어느정도로 압축할 것인지 결정하는 정보이다. 나는 일단 Wav 로 저장할 것이 때문에 BitRate 정보는 사용하지 않는다.

다음은 DCF 파일에서 정보를 가져오는 함수를 만들어 보자

int getDCFFileInfo(char* FileName, dcf* data)
{
 int i, j, k;
 char* ci, *cj;
 FILE *fp;
 char dummyData[14][500];
 char dummyData2[14][500];

 fp=fopen(FileName,"r");
 if(fp == NULL)return -1;
 for(i=0;i<10;i++)
  fgets(dummyData[0],500,fp);
 fclose(fp);

 j=1; k=0;

 for(i=0;i<strlen(dummyData[0]);i++)
 {
  if(dummyData[0][i] == ';')
  {
   i++;
   k=i;
   j++;
  }
  dummyData[j][i-k]=dummyData[0][i];
 }

 for(i=2;i < 14;i++)
 {
  memset(dummyData2[i], 0, sizeof(char) * 500);
  ci=strstr(dummyData[i], "=\"");
  for(cj = ci+2; (*cj) != '\"'; cj++)
  {
   dummyData2[i][cj - ci -2] = *cj;
  }
 }

 strcpy(data->Title, dummyData2[3]);
 strcpy(data->Genre, dummyData2[10]);
 strcpy(data->Album, dummyData2[11]);
 strcpy(data->Artist, dummyData2[12]);
 data->TrackNum = atoi(dummyData2[13]);
 data->SampleRate = atoi(dummyData2[8]);


 return 0;
 
}



생각보다 프로그램이 길어졌다. 짧게도 만들수 있겠지만 내가 무지한 관계로 프로그램이 좀 길어졌다. 그냥 그렇구나 이해해졌으면 좋겠다.

이 함수는 DCF의 10번째 줄을 파싱해서 스트링 배열에 넣은다음 데이터형에 맞게 변환하여 구조체에 저장하는 함수이다.

여기 까지가 DCF 파일에서 정보를 추출하는 방법이다.
하지만 이 함수를 그대로 가져다 쓰기에는 문제가 좀 있다. 그 이유는 문자셋 때문인데 윈도우즈 프로그래밍을 할 때는 문자셋에 유의해서 프로그램을 작성해야 한다.

예를 들어 char를 TCHAR 로 쓴다던지 strcpy를 lstrcpy로 쓴다던지 하는것인데 이부분에 대해서는 자세히 설명하지 않을것이고, 이에 대한 자세한 정보는 다른 서적을 참고하기 바란다.

다음 글에서는 Wav 파일 녹음에 대해서 알아보겠다.

2008/01/21 12:36 2008/01/21 12:36
Posted by 인생을 설계하는 프로그래머

다시 구질구질한 이야기를 써보자..
멜론 파일(DCF)를 MP3로 만들자.. #1에서 MP3를 어떠한 순서를 통해서 만드는지를 설명했다.

이번 글 #2에서는 #1에서 제시했던 과정이 왜 필요한가를 알아보자

사용자 삽입 이미지

#2에서 나왔던 그림이다.

1) 재생파일 분석
이 과정은 지금 재생하고자 하는 파일의 정보를 알아낸다. 정보를 알아내는 이유는 MP3 ID3 태그에 들어갈 가수, 제목, 앨범 정보를 얻기 위함이고, 녹을 할때 녹음을 하는 시간을 알아내기 위해서 이다. 정보는 간단하게 찾아낼 수 있다.
DCF 파일에서 음악에 대한 정보는 ASCII로 파일을 열었을때 10번째 줄에 Meta 데이터로 기록되어 있다.

대략 아래와 같은 모습이다.
Meta-Container:KS_C_5601-1992;MENU="mp3";Title="니가 사는 그집 - 박진영";Copyright="widerthan";
10번째 줄에는 위에 보이는 정보 외에도 파일 사이즈, Bitrate, Sampling Rate, 장르.. 트랙넘버
이런것들이 기록되어 있는데 이걸 활용해서 파일을 만든다면 결과가 상당히 좋을것 같다.


2) Melon Player 실행
이건 또 왜 실행 시켜야 하는가?? 당연히 DCF파일을 재생해야 하기 때문이다. 실행하는 방법은
[멜론플레이어 실행파일명.exe] [멜론파일.dcf] 형식으로 실행했을 때 바로 재생된다.
그럼 재생할려고 로딩하는 시간과 재생이 끝나고 난뒤의 여유 시간을 더해서 2초정도.. 그럼 1번 과정에서 얻어낸 시간에 +2초를 하게 되면 총 녹음 시간이 나오는것이다. 이거... 손으로 해도 정확할거 같은데 원래 자동화에 이러한 오차정도는 어느정도 고려해야 한다.

3) 녹음시작, 플레이어 재생
일단 녹음을 어떻게 하는지는 나중에 얘기하기로 하고 멜론플레이어를 실행할 때 DCF파일을 인자로 넘겨주면 바로 재생되기 때문에 2번 과정과 3번과정은 연속적으로 진행된다고 보면 된다. 2번과정에서 얘기한 앞에 2초정도는 플레이어 로딩시간이기 때문에 플레이어를 실행하자 마자 녹음을 시작하면 된다는 것이다.

4) 플레이어 종료
플레이어를 종료시키는 이유는 플레이리스트를 삭제하기 위해서 이다. 멜론 폴더에 자기 아이디로 되어 있는 폴더 안에 플레이 리스트 파일이 있다. 이 파일을 멜론 플레이어가 실행하는 동안에 점유를 계속하기 때문에 이 리스트 파일을 삭제하기 위해서는 플레이어를 강제종료 시켜야 된다.

5) 플레이 리스트 삭제
플레이 리스트는 왜 또 삭제 하나... 그 이유는 원하는 파일을 하나 재생하고 나서 이전에 재생했던 다른 파일의 재생을 막기 위해서이다. 녹음하는데 시간 오차를 많이 줘버릴 경우 후반부의 다음곡이 녹음되어버리는 불상사를 막기 위함이다.


여기까지... 그럼 이걸 프로그램으로 풀어내야겠지?
윈도우즈 프로그래밍 조금 하는 사람들은 벌써 머릿속에서 다 계산이 되어서 몇번 과정에 뭐를 써야 하는지 다 알것이다. 그래도 모르는 사람들이 있으니깐 한번 짚고 넘어가자.

WinAPI를 기준으로 설명한다.
1번 과정 CreateFile, ReadFile
2번 과정 CreateProcess
3번 과정 waveInOpen, waveInAddBuffer
4번 과정 ExitProcess

이정도만 제시해주면 벌써 다 만든 사람 있겠지? 다음 #3 부터는 실제 프로그래밍에 들어가보도록 하자.

2008/01/11 14:47 2008/01/11 14:47
Posted by 인생을 설계하는 프로그래머

이 글을 읽는 여러분들은 컴퓨터를 언제 가장 많이 쓰는가?
사람들 마다 답이 다르겠지만, 나는 아마도 음악을 듣는데 가장 많이 쓴다고 답변할 것이다.

그것도 그런것이 공부할 때, 작업할 때, 개발할 때, 문서 작업 할 때..
따지고 보면 게임 할때를 제외하고는 계속 컴퓨터에서 음악이 흘러 나온다.
시간으로 따지고 보면 음악 재생 프로그램이 가장 오랜 시간동안 동작한다.
그럼 음악을 재생할 때는 어떤 매체를 이용하는가?

CD라고 생각하는 사람들이 있겠고.. 십중팔구 MP3라고 대답할 것이다.
LP라고 대답하는 사람은 없겠지? 카세트 테이프?? 오지마라..

MP3 파일은 어디서 구하는가? 어둠의 경로?
몇개월전에 벅스뮤직에서 월 15000원인가 10000원인가에 MP3 무제한 다운로드 서비스 열었다가
저작권 때문에 한방 맞은것을 기억한다.
요즘 가장 뜨는 음악 사이트는 아마 멜론이 아닐까..
멜론에서 MP3파일을 받을 수 있는가?? 정답은 No.
멜론에서는 DRM(Digital Rights Management) 형식의 DCF 파일을 다운로드 받을 수 있다.
DCF 파일에 대해서 간단히 얘기하자면... 기간과 재생 장치가 정해져 있는 MP3파일이다.

얼마전인가 DCF파일에서 MP3로 변환하는 방법을 알아낼려고 무지하게 애를 썼었다.
결국 알아낼 수 없었다. 지금 깨달은 거지만... 앞으로도 알아낼 수 없을 것이다.
아니지 언젠가는 크랙이 되겠지만. 가까운 미래에는 불가능 할 것이다.

그럼 멜론의 DCF의 재생방식에 대해서 알아보자.. 이부분은 순전히 내 추측으로 쓰는것이다.
(태클 환영합니다.) 내 추측이니 그냥 그런갑다 생각해주면 너무 고마울것 같다.

사용자 삽입 이미지


서버에 음원파일이 있고 Melong Player를 통해서 DCF 다운로드 또는 스트리밍을 한다.
음원파일은 WAV가 될수도 있고 MP가 될수도 있는데 멜론서버를 통해서 날짜와 아이디를 이용하여 암호화 된다. 물론 휴대폰이나 MP3플레이어로 전송될때는 날짜와 플레이어 고유 ID를 통해서 암호화 되는걸로 보인다.
결론적으로 다운로드 된 파일은 DCF 파일이며 MP3플레이어에서는 날짜와 휴대폰으로 복호화 해서 재생을 하게 된다.

자 그럼 이걸을 어떻게 분석할 것이가...

이렇게 생각하는 사람들 분명히 있을것이다. 그럼 날짜와 MP3플레이어 아이디 이용해서 복호화 시키면 바로 MP3 파일로 변환할 수 있겠네... 라고 생각하는 사람...
그게 진작 되었으면 멜론은 망했다라고 하자...
물론 불가능한건 절대 아니다... DVD도 크랙되었고. WMV도 크랙된 적이 있다.
이것도 언젠가는 크랙되겠지... 그래서 한번 해볼까 하고 DRM 스펙이라던지 뭐.. 별별 자료는 다 찾아 봤지만 결론은 힘들다 였다.
그리고 크랙이 되었을 경우에... 멜론에서 가만히 있지 않는다. 암호화 방식을 약간 변경한다던지 키 값 생성방법을 다르게 하면 또 분석해서 크랙해야 된다.
결론적으로 저것을 기획한 사람이 아니면 원천 봉쇄적인 크랙은 안된다는 것이다.

이에 관련 자료를 웹사이트에서 찾아봤더니
대부분 멜론플레이어를 재생하고 루프백으로 녹음하는 방법을 사용하더라.
뭐 이 글에서도 그런 방법을 사용할것이다. 이 문장 읽고 실망하시는 분들 좀 더 읽어보던지
아니면 그냥 돌아가던지...

그럼 내가 쓰는 이 글이 다른글하고 무슨 차이가 있어? 라고 생각하는 사람들 있을것이다.
그런 사람들은 내 블로그 이름을 다시 한번 살펴보고..

난 앞으로 쓰여질 이 글에서 재생, 녹음, MP3을 어떻게 하면 자동화 시킬것인지에 대해서 논하겠다. 이 글을 읽을려면 윈도우즈 프로그래밍에 대한 약간의 기초적인 지식이 있어야 할것이다.

작업 순서는 다음과 같다.
사용자 삽입 이미지

위의 그림은 멜론 플레이어를 충분히 분석한 뒤에 나온 그림임을 알아두길 바란다.
1 번부터 5번까지는 프로그램을 직접 작성해 자동화 되는 방식으로 진행된다.
3번이 두개인 이유는 3번 과정이 동시에 진행되어야 하기 때문이다.

그럼 다음 글에서는 위의 같은 순서가 왜 필요한지 짚어보도록 하자..

퍼가길 기대하지 않지만 퍼가시는 분들은 출처를 꼭 밝혀주시기를 바랍니다.
2008/01/11 14:27 2008/01/11 14:27
Posted by 인생을 설계하는 프로그래머

BLOG main image
by 인생을 설계하는 프로그래머

카테고리

Life Designer (139)
컴퓨터공학박사 (80)
세상 (24)
건강한 삶 (8)
I Love Korea (2)
海兵隊 (3)
Common Sense! (4)
Game is Life! (12)
Life of Digital (4)
추억으로의 여행 (0)
애마 카돌이! (1)
세상속으로! (1)

글 보관함

달력

«   2010/09   »
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30