블로그 이미지
내게 능력 주시는 자 안에서 내가 모든것을 할수 있느니라 - 빌립보서 4 : 13 - happydong

카테고리

Happydong (1363)
프로그래밍 (156)
MUSIC (16)
인물 (3)
Utility (10)
세미나 소식&내용 (22)
IT뉴스 (18)
운동 (830)
CAFE (10)
Life (282)
Total
Today
Yesterday



 드디어 한국에도 윈폰이 출시되려나 보다!!!! MS 개발자들이 얼마나 기다렸을까. 그리고 노키아에서 윈폰개발자들을 포섭하기 위해 윈폰을 꽁짜로 주기까지 하다니... MS와 노키아가 움직이고 있다!!!!

>> 원문기사

ㅁ 노키아, 40만원대 윈도폰 12월 국내 출시


노키아가 마이크로소프트(MS)의 모바일 운영체제(OS) '망고'를 탑재한 윈도폰을 2종 선보이며 부진에 빠진 스마트폰 사업에서 돌파구를 찾는다. 국내에서는 이르면 12월 KT를 통해 윈도폰을 출시할 예정이다. (기사 내용중)


ㅁ MS-노키아, 개발자에게 윈폰 2만5천대 푼다



윈도폰 애플리케이션(이하 '앱')을 만들어 올린 개발자들은 최신 노키아폰을 공짜로 쓸 수 있게 된다. 이에 따라 노키아 제품이 사실상 윈도폰용 레퍼런스(기준) 단말기로 자리잡을 전망이다. (기사 내용중)
Posted by happydong
, |



 예전에 아이폰 앱기능 중 QR Code Reader를 개발하면서, 찾게된 QR Code 생성해 주는 오픈소스 C# 라이브러리(Library)가 있어 소개 하려 한다. 이를 이용하면 손쉽게 QR 코드를 생성 할수 있다.

라이브러리 소스는 아래 링크를 클릭해서 넘어가 다운로드 소스하면 될 것이다.
Open Source QRCode Library

 이 라이브러리는 .NET 2.0 윈도우 응용프로그램, ASP.NET, 윈도우 모바일 장치에서 사용할 수 있다고 한다. 여러므로 유용한 라이브러리 같다!! 난 이 라이브러리를 이용하여 간단하게 명함타입의 QR코드를 생성해주는 윈도우 응용프로그램를 만들어 보았다. 그럼 사용방법에 대해서 내가 만든 응용프로그램을 기준으로해서 알아 보겠다. 


 먼저 라이브러리 소스를 다운로드 받는다. 이 소스안에 샘플 코드가 있으므로, 그 걸로 명함 타입의 QR Code를 만들어도 된다. 아래 그림은 샘플소스에 들어 있는 응용 프로그램의 모습이다.
 


Data라는 영역에 명합타입의 포맷으로 내용을 넣어 주면 되는 것이다. 해당 포맷은 아래와 같다.

 MECARD:N:Your Name;TEL:555555555;URL:www.yoursite.com;EMAIL:your_email@yoursite.com;ADR:21 Jump Street, Hollywood, CA 90027;NOTE:Some text about something;;

MECARD로해서 이름, 연락처, 홈페이지 주소, 이메일 주소, 오프라인 주소, 메모 식으로 내용을 입력해서 만들면 된다.
MECARD에 대한 자세한 사항은 아래 링크를 참고하기 바란다. 각각의 프로퍼티(Property)에 대해서 잘 설명이 되어 있다.
(http://www.nttdocomo.co.jp/english/service/imode/make/content/barcode/function/application/addressbook/index.html)

나는 좀더 명확하게 정보를 입력할 수 있도록 아래와 같이 디자인을 변경해 보았다.


기능은 똑같고, UI만 좀더 직관적으로 변경한 것 이다. 내가 만든 샘플 프로젝트도 MECARD포맷으로 변경하도록 한다. 그런데, 이 라이브러리에는 약간의 문제가 있다. 그게 무엇인가하니, 한글 입력을 하면 문제가 생기는 것이다. 이를 수정해야 하는데, 아래 코드 처럼 인코딩을 변경해 주면 된다.



 위 소스코드는 QRCodeEncoder.cs파일에 있다. 검색을 해보면 나올 것 이다. 이렇게 수정하면 한글에 대한 문제는 없을 것이다. 그럼 내가 만들 샘플 코드에서 "QRCode생성" 버튼 클릭을 하면 어떠한 처리가 되는지 살펴보자!! (UI는 윈폼 컨트롤들을 배치해서 넣은 것이므로 설명은 생략한다.)



 위 코드에서도 볼 수 있듯 StringBuilder를 통해서 MECARD포맷을 만들고 있는 것을 볼 수 있을 것이다. 그리고 QRCodeEncoder의 인스턴스를 생성해서 인코딩 세팅, 이미지 사이즈 세팅, 버전 세팅, 에러 보정 레벨 세팅 등을 해서 이미지로 반환해 주는 것을 볼 수 있을 것이다. 이 처럼 정말 사용하기 쉽게해 놨다.

QR코드 버전관련과 에러 보정 레벨에 대한 자세한 내용은 아래 링크들를 확인하면 정말 많은 도움이 될 것이다. QR Code의 좀더 자세한 내용을 알고 싶으면 아래 링크를 참고 하기 바란다. 

- QR Code.com
- QR Code.com 버전 결정
- Wikipedia - QR Code

웹사이트에서 QR Code를 생성해 주는 서비스도 있다.

- http://qrcode.kaywa.com/
- http://www.scany.net/kr/generator/generator.php

내가 만든 샘플 프로젝트소스와 실행파일 두개를 첨부해 두었으니, 필요하면 다운받으면 될 것 이다.


 




위 그림은 실행 모습입니다. 이 QR코드를 네이버앱에 QR리더기로 읽으면 아래와 같이 잘 읽어 질 것이다.

Posted by happydong
, |




 오랜만에 윈폼(WinForm)프로젝트를 하면서, 사용한 설계패턴이다. MVP(Model-View-Presenter) 패턴이 생소 했는데, 익숙해 지니깐 여러므로 편하고, 관리하기 쉬웠다. 그럼 MVP 패턴에 대해 간단하게 정리 하도록 하겠다. 


 MVP 패턴은 1990년대 초기에 등장한 패턴으로 마이크로소프트가 사용해 가장 많이 알려진 패턴으로, 이 패턴은 MVC(Model-View-Controller)패턴을 기반을 둔 GUI(Graphical User Interface)를 만들기 위한 설계패턴이다. 즉, MVC 패턴의 여러 패턴 중 하나이다.
( 참고 : MVC 패턴은 너무나 잘 알려진 설계패턴으로 1979년에 제록스 팰러앨토 연구소에서 스몰토크 관련 일을 하던 Trygve Reenskaug에 의해 처음 설명되었으며, 아직까지도 가광을 받고 있는 패턴이다.)

 MVP 패턴은 View와 Model 간의 결합도를 낮추는데 있으며, Presenter는 Model의 데이터를 View에 출력할 수 있도록 할 뿐만 아니라, 이벤트(Event)를 View에서 받아 Model의 데이터를 갱신하도록 한다. 실제 구현에서는 Presenter는 View와의 결합도를 감소 시키기 위해서, Interface를 참조한다. 이를 통해 Presenter는 View의 실제 UI요소가 어떻게 구현되는지에 관계없이 데이터를 올바르게 표현 하도록 하는 것 이다. 아래 그림을 참고하면 이해가 쉬울 것이다.


 View  View Interface의 Display 맴버(Properties, Display Methods)를 구현하여 실제적인 UI요소를 그려준다.
 View Interface  Presenter에서 Concrete View를 지접 참조하지 않고 View Interface를 참조함으로써 Concrete View와의 커플링을 감소시키고, View의 실제 UI 요소가 어떻게 구현되는지 몰라도 데이터를 올바르게 표현할 수 있도록 해준다.
 Presenter  View와 Model간의 상호작용을 담당하며, Model의 데이터를 View Interface를 통해 Concrete View에 출력(바인딩)해주고, 사용자의 이벤트를 View에서 구독하여(실제적인 이벤트 핸들러 구현) Model의 데이터를 갱신하는 역할을 수행한다. Presenter를 통해 View와 Model간의 의존관계를 없앨 수 있다.
 Model  데이터와 상태를 유지하며, 데이터 처리 로직을 포함한다.

예제 코드는 첨부된 파일을 확인하면 되겠다.


위 그림은 샘플프로젝트의 구성인데, 크게 MultiLayer폴더와 SingleLayer폴더가 보일 것 이다. 이는 MVP 패턴을 멀티/싱로 해서 두개의 샘플을 구성한 것이다. 그리니 스타트 프로젝트를 happydong.SingleLayer.MVP 또는 happydong.MVP.View로 잡아서 실행 시켜보면 될 것이다.

Posted by happydong
, |