COWON D2는 엔드 유저에게 여러모로 편리함과 경제성을 더해주는 보기 드문 휴대용 미디어 플레이어 (동영상 재생도 가능하기 때문에 단순 MP3 플레이어로 이야기하지는 않았습니다.)인것 같다. 처음엔 가격에 맞추어 구입하게 된 것이었는데 지금은 너무나도 만족스럽고 흥미롭다. 벌써부터 다음 펌웨어 업그레이드가 기다려질 정도이니까.

하지만 COWON D2를 지원하는 다른 유료 음원 사이트들의 태도는 심각할 정도로 문제가 있다. 소리바다 유료화 이후 음원 공급 방식은 기존에 알려져있던 대로 곡을 직접 구입하여 다운로드받는 형태와, 새롭게 등장한 임대형/기간 제한형 다운로드로 나뉘어져있다. 개인적으로 후자의 서비스를 주로 애용하는데, 멜론의 경우 후자의 서비스를 통하여 이용할 수 있는 컨텐츠의 수가 타 유료 서비스에 비해서 "확실히" 수가 적다.

그래서 평소에 마음에 두고 있었던 쥬크온으로 과감히 갈아타게 되었다. 하지만 이게 웬걸... 상상하기 힘들정도로 불편하다. 나중에 알고보니 멜론과는 달리 어떤 외주업체에게 모든 싱크 프로그램 및 관련 라이브러리 개발을 맡기고 있었던 모양이다. 멜론의 인터페이스에 익숙해져있던 나로서는 쥬크온의 인터페이스가 심각하게 불편했다. 멜론의 경우, 플레이리스트를 관리하는 것과 마찬가지로 휴대용 기기에 음원을 편리하게 전송하거나 역 재생하는 기능이 제공된다. 하지만 쥬크온은, 음원 임대 신청 절차를 일부러 거쳐야 하며, 현재는 부분적으로 업데이트된 상태이긴 하지만 이전에는 MP3 구매 메뉴를 통해서 별도로 나타나는 웹 브라우저 창에서 또 다시 나타나는 팝업창을 이용하여 임대 음원으로 등록을 하고 (이것도 맘대로 되는것이 아니라 40곡이 한 번에 최대로 지정할 수 있는 갯수라한다.) 다시 전송 여부에 확인을 하여 전송해야 한다. 참고로, 플레이리스트에 있는 음원은 업데이트를 적용했다고 하는 지금도 이 절차를 거쳐야만 하기 때문에 불편하더라도 즐겨듣는 음악 폴더에 등록을 시켜주고 새로운 기능을 활용해야 절차가 간소화된다.

불편한 것은 그렇다고 치더라도, 더 큰 문제는... 단순히 기기 호환성과 기기 이상만을 운운하며 정확한 원인 조사도 하지 않고 엔드 유저의 탓으로 돌려서 임대 음원 재생 불가 현상을 설명하려드는 기술 지원 서비스의 상당히 불성실한 태도였다. 실랑이 아닌 실랑이를 벌일 수 밖에 없었고 결국은 이 블로그에 해결책을 올리기까지 엄청난 시간을 투자해야만 했다. 같은 프로그래머로서 너무 많이 나무랄수도 없는 입장이긴 하지만 좀 심했다는 생각이 들어 공개적으로 비판할 것은 비판해야겠다 싶어 긴 이야기를 남겼다.

임대형 음원을 다운로드하여 재생하려고 할 때 미등록MP3라는 메시지가 나타나면서 재생이 안되거나, 펌웨어 버전이 낮은 경우 이러한 곡을 만날 때 D2가 다운되는 현상이 있다. 다운되는 현상은 D2 펌웨어를 최신 버전으로 업그레이드하면 해결된다. 하지만 미등록MP3라고 나타나는 현상은 쥬크온 측에서 이용하는 한마로 Sync 엔진 특유의 결함으로 보여진다.

실제로 한마로 Sync 엔진은 올바르게 Windows XP와 Windows Vista를 지원해주는 것이 아니라고 본다. 따라서 이러한 이상 전송 현상을 억제하기 위하여 호환성 모드를 이용하여 Windows 2000 호환 모드로 설정해주고 시작해주는것이 좋겠다. 실제로 이러한 방법을 통하여 에러율을 80%에서 10%로 줄일 수 있었고 그나마 편안하게 되었다.

쥬크온이 설치된 디렉터리 아래에 jukeon.exe, MRDaemon.exe, setup.exe, setupt.exe, ocx\jukeon_e.exe, ocx\jukeon_v.exe, ocx\setupocx.exe 파일들이 있는데 이 파일들에 대하여 모두 다음 그림과 같이 호환성 설정을 지정해주었다. 시각 테마의 경우 Owner Draw/Window Region을 이용하여 쥬크온 윈도우를 표현하기 때문에 테마와는 관계가 없어서 사용하지 않도록 지정했어도 보기 흉하거나 한 일은 없었던듯 하다.

사용자 삽입 이미지

이 얼마나 비생산적인 일인가. 어쨌든 문제가 좋아진것 같아서 다행이다.

Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://rkttu.com/rkttublog/rss/comment/218
  2. OpenID LogoLuneMore 2008/03/13 21:35  편집/삭제  댓글 작성  댓글 주소

    쥬크온 임대형 정액제 참 황당했죠. 저도 D2를 썼는데 (지금은 아이팟 터치로 갈아탔지만) 파일을 10곡 이하로 받고 다운받고 암호화하는동안 아무짓도 안하면 에러 안나더군요. 한곡을 받더라도 곡 진행률 99%에서 멈추어있는 잠깐동안 (이때가 암호화 하는거라고 생각되네요) cpu를 좀 많이 먹는 작업을 하면 dcf파일 자체가 이상하게 생성되는걸 보고 갈아타기로 결심...

    윈도우2000 호환성모드로 돌리면 나아지는건 처음알았네요

    • 남정현 2008/03/14 01:01  편집/삭제  댓글 주소

      저 방법도 결국 오래가지 않아서 실패했답니다. ㅠ_ㅠ

      그냥 쥬크온은 음악 감상용 서비스로만 만족해야 할듯 싶습니다. 돈벌이에만 급급해서 저렇게 완성되지도 않고 검증도 안된 서비스를 제공하고 있는 쥬크온의 태도가 상당히 거슬립니다만 엔드 유저는 그저 당할 수 밖에 없는것인가봅니다.

      역시 돈이 만사를 다 해결해주는군요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

Visual Studio 2008이나 VWD2008의 웹 브라우저로 2007년 12월 19일 현재 싸이월드 미니 홈피를 다녀오면 미니 홈피를 띄워준 메인 창이 무한 루프에 걸려서 IDE 전체를 닫지 않으면 안되는 사태가 생깁니다.

Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

  1. Comment RSS : http://rkttu.com/rkttublog/rss/comment/208
  2. OpenID Logo용진 2007/12/25 05:37  편집/삭제  댓글 작성  댓글 주소

    ...아니 그런데 어째서 VS 로 싸이월드를... ^^;; [...]

    • 남정현 2007/12/26 01:11  편집/삭제  댓글 주소

      프로그래밍을 하다가 일부러 브라우저를 열기 귀찮아서 자체 탭 브라우저를 쓰는 일이 많다보니 그렇게 되었네요. ㅎ

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다

Delphi의 VCL 컨트롤 중에서 TStatusBar 컨트롤이 있습니다. 이 컨트롤은 대부분의 경우 정상적으로 원하는대로 Owner Draw를 구현하여 사용할 수 있지만 뜻하지 않게 일부 운영 체제에서는 Owner Draw가 회피당하거나 (Windows 2000), Owner Draw에 대한 처리가 정확히 마무리되지 않아서 잔상이 남는 버그 (Windows XP, Windows Server 2003)가 발생하곤 합니다. 이 문제를 해결하기 위한 두 가지 방법을 소개하고자 합니다. 참고로 이 버그는 Windows NT 4.0 + Delphi 5.0 환경에서도 발견이 되었으며 이에 그치지 않고 Delphi 2007 + Windows 2000/XP/Server 2003에서도 여전히 나타나는 버그로 보입니다.

Solution 1: 제일 손쉬운 방법은 TStatusBar 컨트롤의 부모를 TForm이 아닌 TPanel로 하여 TPanel을 대신 TForm에 올려놓는 방법입니다. 이렇게 하면 고질적인 Owner Draw 렌더링 버그를 원천적으로 해결하고 멤버 변수 선언에도 영향을 주지 않으므로 리팩터링이 필요하지 않습니다.

Solution 2: 이미 디자인타임에서 컨트롤을 많이 사용하였고 마우스로 조작하기 까다로운 UI를 가진 창에서 문제가 발생한다면 - 또는 - 프로그래밍 방식으로 문제를 해결할 필요가 있다면 다음의 지침에 따라 WndProc 메서드를 추가 구현합니다.

Procedure TForm1.WndProc(var Message: TMessage);
Begin
   Case Message.Msg Of
      { 이런저런 메시지 처리 코드가 포함될 것입니다. 생략합니다. }
      WM_DRAWITEM:
      Begin
         If (Message.WParam) <> 0 And (Message.LParam) <> 0 Then
         Begin
            With PDrawItemStruct(Message.LParam)^ Do
            Begin
               If ctlType = ODT_TYPE Then
                  ctlType := 0;
            End;
         End;
      End;
   End;
   { 상위 윈도 메시지 처리기를 호출하지 않으면 문제가 발생하므로 꼭 확인합니다. }
   Inherited WndProc(Message);
End;

굵게 표시한 코드가 문제를 해결하는데 필요한 코드와 잊지 말아야 할 코드들입니다. 만약 WndProc 메서드를 처음 오버라이드하는 경우 상위 메시지 처리기 호출을 놓치기 쉽습니다. 폼을 생성하지 못하고 에러 메시지만 나온 후 프로그램이 바로 종료되어버린다면 반드시 WndProc 메서드가 상위 메시지 처리기를 올바르게 호출하고 있는지 점검해야 하겠습니다.

도움이 되셨기를 바랍니다. :-)

자료 출처: http://buglist.jrsoftware.org/generated/entry0624.htm

Creative Commons License
Creative Commons License
남정현 이 작성.

당신의 의견을 작성해 주세요.

[로그인][오픈아이디란?]
오픈아이디로만 댓글을 남길 수 있습니다