NOTICE 




  


MSXML6를 이용해서 XML을 파싱하는 MFC 애플리케이션을 만들어 보았다.


먼저 Visual Studio에서 다이얼로그 기반 MFC애플리케이션을 만든 후 MSXML를 사용하기 위해서 MSXML6 DLL를 임포트하였다. 물론 헤더파일을 include할 수 있지만 이 방법이 가장 손이 덜 간다.


<stdafx.h>


...


#import <msxml6.dll>

unsing namespace MSXML2;


...




그런다음 애플리케이션 클래스의 InitInstance()의 처음과 끝에 각각 COM라이브러리를 초기화하는 코드와, COM라이브러리를 해제하는 코드를 넣는다(실제로는 사용하기 직전에 초기화해도 문제 없다). MSXML은 COM 컴포넌트로 구현되어 있기 때문에 사용하기 위해서는 반드시 이 작업이 필요하다.

COM라이브러리를 초기화할 때 필요에 따라  ::CoInitialize()나 ::CoInitializeEx()중에서 선택해서 사용하면 된다. 자세한 내용은 MSDN을 참고할 것.


<MyApp.cpp>



BOOL CMyApp::InitInstance()

{

    //::CoInitializeEx(NULL, COINIT_MULTITHREADED);

    ::CoInitialize(NULL);


    ...


    기존 처리


    ...


    ::CoUninitialize();

}



이제 MSXML을 사용할 준비는 되었으니 실제로 사용하는 코드를 작성해 보자.

이 예에서는 다이얼로그에 버튼을 하나 추가하고, 그 버튼의 클릭 핸들러에 작성하여, 그 안에 MSXML을 사용하는 코드를 작성하였다.


<MyDlg.cpp>


void CMyClg::OnBnClickedButton1()

{

     LPCWSTR xml = 

        L"<?xml version='1.0' encoding='utf-8'?>"

        L"<itemlist><item>꽃</item><item>책</item></itemlist>";


    MSXML2::IXMLDOMDocument2Ptr pDoc = NULL;

    MSXML2::IXMLDOMNamedNodeMapPtr pNodeMap = NULL;

    MSXML2::IXMLDOMNodeListPtr pNodeList = NULL;

    pDoc.CreateInstance(__uuidof(MSXML2::DOMDocument60));

    if( !pDoc ) {

        return; // DOMDocument인스턴스 생성 실패

    }


    if( !pDoc->loadXML(xml) ) {

        return; // XML파싱 실패

    }


    pNodeList = pDoc->selectNodes(L"//itemlist");

    if( pNodeList ) {

        MSXML2::IXMLDOMNodePtr pNode = pNodeList->Getitem(0);

        MSXML2::IXMLDOMNodeListPtr pNodeList = pNode->GetchildNodes();

        if( pNodeList ) {

            MSXML2::IXMLDOMNodePtr pNode2 = NULL;

            while( (pNode2 = pNodeList->nextNode()) ) {

                CString nodeName = pNode2->GetnodeName();

                if( !nodeName.Compare(L"item") ) {

                    CString str = (LPCWSTR)pNode2->Gettext();

                    MessageBox(str);

                }

            }

        }

    }

}


좀 장황한 코드이지만 알고보면 무척 간단하다.


테스트를 위해 "책"과 "꽃" 아이템을 가진 아이템리스트를 정의한 간단한 XML를 만들었다.


위 코드에서 하는 일이란 XML을 파싱하기 위해 DOMDocument인스턴스 포인터를 얻어온 후, loadXML()메서드를 호출하여 XML을 파싱한 후에, 그 나머지 코드에선 그냥 값을 빼서 쓰고 있다. 값을 빼서 쓰기 위해서는 대개의 경우 노드를 찾고 그 노드의 하위를 열거하면서 읽어오는 방식을 쓴다. 트리 구조라고 생각하면 된다. 값을 빼오기 위해 위 예제에서는 IXMLDOMNode와 IXMLDOMNodeList를 사용하였다.



빌드해서 실행한 후, 버튼을 클릭하면 텍스트가 "꽃"인 메시지박스와 "책"인 메시지박스가 순서대로 표시된다.


정말 간단하지 않은가?



  
트랙백   |  댓글   |




  

올 상반기에 일본에 한번 갔다 올 생각인데 이때 일본에서 판매되고 있는 e잉크를 사용하는 전자책 리더를 사려고 한다.  역시 스마트폰이나 태블릿은 오래보면 눈이 아프다.  그렇지 않아도 하루 종일 컴퓨터 모니터 앞에 붙어 있는데 책을 읽을 때는 좀 눈이 편했으면 좋겠다는게 이유다.  현대인의 눈은 너무 혹사 당한다니깐~~~ T-T


그래서 일본에서 판매되고 있는 전자책 리더를 최근들어 틈만 나면 살펴보고 있다.


국내가 아닌 해외에서 제품을 찾고 있는 이유는...

원하는 기능을 갖고 있고 저렴하기까지한 전자책 단말기를 국내에서 찾을 수는 없었다.

국내업체의 제품을 구입하는 것이 전자책을 구입하거나 AS를 받는데 있어 월등히 편하고 안심감이 드는게 사실이지만, 이런 불편을 감수하고서라도 맘에 꼭 드는 제품을 사고 싶었기 때문이다. 그러고 보니 삼성이나 LG에서는 전자책 단말기를 왜 안만드는걸까? 너무 손익만을 따져 값비싼 디지털 장비들만 만드는 것 같아 좀 씁쓸해진다.


일단 내가 원하는 전자책 단말기의 조건은...


야간 독서용 라이트

라이트가 있어서 불빛이 없는 곳에서도 독서가 가능했으면 좋겠다.


높은 해상도

전자잉크를 사용한 디스플레이가 아직 해상도가 큰 제품들은 없지만 최소한 800 * 600 보다는 컸으면 좋겠다.

800 * 600은 사실 너무 도트가 두드러져 보였다.


낮은 가격

그렇다. 비싸고 좋은건 필요없다~ 싸고 좋아야지~~~

서민들을 위한 제품이면 좋겠다. T-T


라는 것이다.


주의!!! 컨텐츠나 서비스를 전혀 고려하지 않고 단지 하드웨어적으로 괜찮은지에 대해서만 고려했다.


자, 이 조건에 맞는 제품이 과연 있을 것인가~~~!!!


찾은 결과 아래의 두 제품으로 축약되었다.


Kindle Paperwhite

(http://www.amazon.com/Kindle-Paperwhite-Touch-light/dp/B007OZNZG0)


 해상도

 758 * 1024 pixel

 화면크기

 6 inch 

 저장용량

 2 GB 
 무게  213
 크기  117 * 9.1 * 169 mm 

 라이트

 프론트라이트 탑재

 WIFI

 IEEE802.11b,g,n

 확장 메모리

 불가

 OS Linux
 지원 포멧

 bmp, doc, epub, gif, html, jpeg, mobi, pdf, png, txt

 한글 지원

 한글 출력

 가격

 7,980엔 (kakaku.com의 최저가)



Kobo glo
(http://www.rakuten.ne.jp/gold/rakuten24-kobo/ereaders/koboglo/)


 해상도

 758 * 1024 pixel

 화면크기

 6 inch

 저장용량

 2 GB 

 무게

 185 g 

 크기

 114 * 10 * 157 mm 

 라이트

 프론트라이트 탑재

 WIFI

 IEEE802.11b,g,n

 확장메모리

 32 GB까지 확장 가능 
 OS Linux 

 지원 포멧

 cbr, epub, gif, html, jpeg, mobi, pdf, png, rft, tiff, txt

 한글 지원

 한글 출력

 가격

 7980 엔(kakaku.com의 최저가)



두 제품 비슷한 사양에 공교롭게도 가격까지 똑같았다.

좀 차이가 있다면 Kobo glo는 외부 메모리로 32GB까지 확장 가능하다는 점이다.


이 제품들을 구입해서 한국에서 사용한다면 발생하는 문제점이라면...


    한글 입력이 되지 않는다는 점,

    기기에 설치되어 있는 서비스들을 거의 사용 못한다는 점

    그래서 기기에 책을 넣으려면 변환작업의 번거로움을 감수해야 한다는 점이 될 것이다.


    그리고 현재 나오고 있는 안드로이드 OS를 사용하는 기기들은 루팅을 통해서 책을 구입할 수 있는 방법이 있지만,

     위의 기기들은 리눅스 기반으로 전자책 기능을 올린 것이므로 안드로이드 기기에 비해 메리트가 덜하다.


하지만 이 모든 단점을 극복할 수 있게 해주는 것이 바로 가격이다.

채 10만원이 되지 않는 돈으로 전자책 단말기를 활용할 수 있는 길이 열린다는 점이 참 크다.


소니에서 조만간에 PRS-T3를 내놓는다는 이야기가 나오고 있는데, 나온다면 위의 두 기기와 동급 또는 더 높은 사양이 되지 않을까 생각된다.


좀 더 다양하고 좋은 전자책 단말기가 나와서 선택의 폭이 넓어졌으면 하는 바램이다.




  
트랙백   |  댓글   |




  

일본 스마트폰 시장에서 가장 화제가 되고 있는 앱은 무료 통화 앱일 것이다.


일본에서는 타 통신사에 문자나 전화를 할 때 요금을 지불하는 것이 일반적이고, 그 금액 또한 결코 적지 않기 때문에 무료 음성 통화 기능은 기존 통신시장의 판을 뒤엎는 획기적인 기능이었다. 이 기능은 바로 일본 시장에 엄청난 반향을 일으켰고(사실 NHN이 일본에서 대대적인 프로모션을 하기도 했지만...) NHN이 2011년 6월에 서비스 개시한 후 2년도 되지 않아 4천만명이 넘는 가입자 확보한 결정적인 이유이기도 하다.


현재 일본에서 서비스 되고 있는 무료 통화 앱은 몇 가지가 있지만 가장 많은 점유율을 차지하고 있는 것은 당연 당연 NHN의 LINE이다. 이미 세계 이용자 수가 1억명을 돌파하고 일본에서만 4150만명(2013년1월 기준)이 이용하고 있다. 지금 일본에선 스마트폰으로 커뮤니케이션을 한다면 NHN의 라인을 통해 하는게 당연시 되어질 정도...  이쯤되면 거의 시장의 절대강자라고 할 수 있다.


하지만 최근 이에 도전장을 내민 국내 업체가 있다.  그 업체는 바로 국내 점유율 1위 카카오의 카카오톡이다.

사실 카카오톡이 라인보다 훨씬 역사가 길지만 일본 시장에 본격적으로 공략을 시작한 것은 얼마되지 않는다. 작년 10월 일본의 야후와 연계를 시작하면서 부터인데, 카카오톡은 2013년 1월 현재 전세계 이용자수 7000만명, 일본에서만 870만명이 이용중이라고 한다.



NHN 라인의 일본어 홈페이지



NHN 라인의 장점으로는

무료통화라는 점을 생각하면 무난한 수준의 통화 품질

유명 캐릭터를 포함한 5000여종의 다양한 스탬프

그리고 무엇보다 시장을 선점한 업체로서 많은 유저를 확보하고 있다는 점

이다.


단점으로는
스탬프를 유료로 구입을 해야 한다는 점.
일본 특유의 서비스와의 연계가 카카오톡에 비해 적다는 점일 것이다.


카카오 카카오톡의 일본어 홈페이지




카카오톡의 장점으로는

5명 동시통화가 가능하다.

다양한 캐릭터의 스탬프, 움직이는 스탬프를 무료로 제공하고 있다.

토크Plus

외부 앱과 연계하는 기능으로 특히 야후의 서비스들을 카카오톡에서 이용할 수 있는 장점이 있다.

(일본 야후는 검색엔진 포털 점유율 50% 이상을 차지하는 독보적인 사이트)


카카오톡의 단점으로는

NHN 라인에 비해 통화 음질이 조금 떨어진다는 평이 있다.

후발 업체로써 가입자가 라인에 비해 상대적으로 적다는 점이 있다.




DeNa comm의 홈페이지



카카오톡 뿐만 아니라 일본 업체인 DeNA도 지난해 10월 무료 통화 앱 시장에 진출했다. DeNA는 "모바게"라는 유명한 모바일 게임 관련 회사이다. comm은 실명사용, 쉬운 사진 공유기능, comm에 가입하지 않은 사람에게도 무료로 메시지를 보낼 수 있는 기능 그리고 고음질의 무료 통화 기능(개발사 주장) 과 같은 특화된 기능으로 최근 주목받고 있다. 


라인과 카카오톡 뿐만 아니라 comm의 참여로 일본 무료 통화 앱의 경쟁은 점점 더 치열해 질 전망이다.



P.S. 한가지 재밌는건 각 업체가 유명 모델 또는 여배우를 메인 모델로 기용했다는 점이다. NHN 라인의 경우 이시하라 사토미(石原さとみ), 카카오톡의 경우  츠치야 안나(土屋アンナ), 그리고 comm의 경우 요시타카 유리코(吉高百合子)를 기용하였다.


  
트랙백   |  댓글   |
 이전  1   다음 

최근댓글
최근트랙백
fotowall :: ncloud RSS Feeds today :    yesterday :
total :