Korea Evangelist

Developer & Platform Evangelism, Microsoft Korea

  • Korea Evangelist

    Microsoft Tag: 휴대폰으로 바코드를 바라보기만 해도, 관련 정보가 눈 앞에

    • 3 Comments

    휴대폰이 두 사람의 목소리를 통한 소통 수단을 넘어 이제는 개인 컴퓨팅 수단으로 변하고 있습니다. 휴대폰에서 볼 수 있는 웹 콘텐트의 제약이 줄어 들긴 했지만, 그래도 아직은 글자를 넣어서 원하는 정보를 얻는 것�� 불편합니다. 휴대폰에서 문자 입력의 불편함을 최소화할 수 있는 기술 – Microsoft Tag - 이 있어 소개합니다.

    스마트폰을 가진 사용자가 생활을 하다가 얻고자 하는 정보가 있다면, 휴대폰에 있는 TagReader 프로그램을 구동하고 목표 물체에 표시된 바코드를 인식시키면 관련 정보가 휴대폰에 표시되는 것입니다. Microsoft Tag 기술을 사용하는 좀더 자세한 시나리오는 http://www.microsoft.com/tag/content/what/default.aspx?autoplay=y 에 잘 표현되어 있습니다. 한국 시장에서 모바일을 이용한 마케팅을 고민하시는 분들에게는 도움이 되리라 생각합니다.

    clip_image002

    이용 방법은 아래와 같습니다.

    1) 휴대폰 상에서 원하는 정보를 가장 짧은 동선으로 전달할 내용을 정합니다.

    2) http://tag.microsoft.com/ 사이트로 갑니다.

    3) Tag 생성 버튼을 누르고, Tag의 분류, 이름, 유형, 간단한 설명, 유효 기간, 그리고 이동할 URL을 명기합니다.

    clip_image004

    4) 바코드를 생성합니다.

    clip_image006

    5) 생성된 결과물을 책, 웹 사이트, 표지판, 포스트 등과 같이 목표 고객에게 알릴 수 있는 곳에 둡니다.

    6) 고객 휴대폰에는 Microsoft Tag을 인식할 수 있는 간단한 프로그램이 – TagReader.exe - 설치되어여 합니다.

    7) 고객은 TagReader 프로그램을 구동하고 해당 바코드를 응시하면 자동으로 인식해서 관련 URL로 혹은 정보를 보여줍니다.

    8) http://tag.microsoft.com/ 에서는 바코드가 이용된 통계 정보를 줍니다.

  • Korea Evangelist

    Windows 7 애플리케이션 호환성

    • 3 Comments

    Windows에서 동작하는 소프트웨어를 개발하는 분들이 Windows 7, Windows Server 2008 R2 호환을 고민할 때 볼만한 문서가 있어 나누고자 합니다. 문서 목적은 애플리케이션이 Windows 7 혹은 Windows Server 2008 R2에 문제없이 동작하는데 필요한 호환성 관련 사항을 전달하려는 것입니다. 문서 이름은 “Windows Application Quality Cookbook”입니다. 문서는 http://code.msdn.microsoft.com/Windows7AppQuality에서 내려받을 수 있습니다. 지속적으로 수정될 예정이고, 버전 1.1 문서는 이 포스트에 첨부했습니다. 이 문서에는 Windows XP에서 Windows 7으로 바로 옮겨가는 것은 고려되지 않았습니다. 애플리케이션을 Windows XP에서 Windows Vista 옮기는 것은 http://msdn.microsoft.com/en-us/library/bb757005.aspx를 참조하시기 바랍니다.

     

    1. 운영체제 버전

      운영체제 버전이 올라가면 언제나 달라지는 것 중의 하나입니다. GetVersion 함수의 반환 값이 변화되었습니다.

    2. Windows Mail 삭제

      이후에 Windows Mail 도구는 지원되지 않을 것을 명시했습니다. CoStartOutlookExpress API는 동작하지 않으며, 다른 메일 API deprecating 정보를 포함했습니다. 앞으로 지원 중단을 선언하지 않은 API는 전과 같이 동작합니다.

    3. Internet Explorer 8 – 사용자 에이전트 문자열

      Windows 7에 포함된 Internet Explorer 버전은 8입니다. 웹 개발자가 개발하는 웹 애플리케이션이 사용자 브라우저 버전 혹은 정보에 따라 행동을 달리하는 경우에 사용자 에이전트 문자열 (User Agent String) 값을 다시 검토해야 합니다. 그리고, Internet Explorer 8은 Internet Explorer 7 compatibility view를 지원하기 때문에, 웹 개발자는 필요한 경우 Internet Explorer 7 compatibility view 상태를 판단할 수 있는 메타 정보도 확인해야 합니다.

    4. 윈도우 휴대용 장치를 위한 WPDUSB.SYS 삭제

      커널 모드로 Windows Vista USB 드라이버 스택에서 동작한 WPDUSB.SYS WINUSB.SYS 드라이버로 교체되었습니다.

    5. Microsoft Message Queuing (MSMQ) – SHA-2 사용

    Windows 7에 포함된 MSMQ는 보안 강화를 목적으로 메시지를 보낼 때, SHA-2를 기본으로 이용합니다. 다른 설정에 변화가 없다면 Windows 7 MSMQ에서 만들어진 메시지는 하위 버전에서 받아볼 수 없습니다. 반대도 마찬가지입니다.

    6. 바이너리 간의 기능 이동

    이후의 기능 효율성과 구조 향상을 위해 Windows 핵심 바이너리 사이에 기능 이동을 했습니다. 예를 들어, kernel32.dll advapi32.dll에서 동작하던 기능을 kernelbase.dll로 옮긴 것입니다. 백신/백업 소프트웨어 같이 하층의 API를 직접 다루는 개발자 분들은 주의 깊게 보실 필요가 있습니다.

    7. (Windows Server 2008 R2에만 적용) Microsoft Message Queuing (MSMQ) – Windows 2000 클라이언트 지원 삭제

    Windows 2003, 2008 도메인에서 Windows 2000 클라이언트 지원은 선택 사항이지만, Windows 7 도메인에서는 Windows 2000 클라이언트를 지원하지 않습니다.

    8. (Windows Server 2008 R2에만 적용) 64-bit 지원

    Windows Server 2008 R2 64-bit 제품만 지원합니다. 32-bit 드라이버, 32-bit 플러그-, 16 bit 실행 바이너리만 지원하는 제품을 개발하시는 분들은 미리 준비를 하셔야 합니다. WoW64, x86 emulator가 있기는 하지만, 모든 32 bit 애플리케이션이 동작하는 것은 아니므로 개발자 분들은 세부적인 요건을 조사해서 어떻게 대처할지를 결정해야 합니다.

    9. (Windows Server 2008 R2에만 적용) Server Core에서 Wow64 지원은 선택 사항

    Windows Server 2008 R2에서 Server Core를 설치하는 경우 Wow64는 디폴트에 포함되지 않습니다.

     

    [새로운 기능과 개선 사항]

    1. 파일 라이브러리

      라이브러리는 여러 군데로 흩어져 있는 폴더를 묶어 하나로 보일 수 있도록 하고, 인덱싱을 통한 빠른 검색과 원격 접속 방법을 제공합니다. Windows 7에서 달라진 것은 파일 다이얼로그에서 열기, 저장하기를 수행할 때 디폴트로 나타나는 곳이 문서 폴더에서 문서 라이브러리로 바뀐 점입니다. 그리고 라이브러리의 성질은 폴더가 아니라 파일이기 때문에, IFiledialog를 이용하는 경우 GetFolder, GetFilename을 이용하는 대신에 GetResult를 사용해야 합니다. 애플리케이션 개발자는 IShellLibrary 인터페이스를 이용해 필요에 따라 특정 폴더를 라이브러리에 추가할 수 있습니다.

    2. 사용자 인터페이스 높은 DPI 인식

     목적은 텍스트와 이미지 크기를 변경하고자 화면 해상도 (screen resolution)을 이용하는 것보다 DPI를 사용하는 것을 권장하려는 것입니다. 추가된 기능은 사용자 단위의 DPI 설정과 로그-온만으로 변경된 DPI를 적용하는 것입니다. 사용자 인터페이스 측면에서 글자, 폰트, 이미지를 다루어야 하는 경우에 유심해 볼 필요가 있습니다.

    3. Internet Explorer 8 – Data Execution Protection/NX

      이 기능 변화는 Windows 7만이 아니라 Internet Explorer 8이 설치되는 모든 곳에 공통으로 적용되는 것입니다. Internet Explorer에 추가 기능으로 설치되는 모듈 중에 금융권에서 사용하고 있는 ActiveX처럼 하단의 운영체제를 직접 다루는 ActiveX와 같은 것을 개발하는 분들이 반드시 확인하셔야 할 사항입니다. 기본 개념은 Internet Explorer 8의 추가 기능으로 설치된 모듈이 메모리에 올라가서 실행될 때, 운영체제가 판단해서 heap, stack과 같은 영역에서 코드가 수행되는 것은 디폴트로 막겠다는 것입니다. 목적은 buffer overflow와 같은 보안 침해를 예방하는 것입니다. 일반 개발자 분들은 이런 코드가 있는 지도 갸우뚱하실 것입니다. 생각할 수 있는 대처 방안은 Internet Explorer 추가 기능 모듈을 DEP/NX 호환 ATL 프레임워크 같은 것을 이용해서 재작성하거나, Internet Explorer를 관리자 권한에서 실행해서 DEP/NX를 동작하지 않게 하는 것입니다.

    4. 사용자 인터페이스 – UAC (User Account Control) 다이얼로그

      UAC (User Account Control) 기초 구조는 변경되지 않았습니다. 크게 달라진 점은 UAC 다이얼로그 상자에서 선택할 수 있는 선택이 “Yes”, “No”로 줄어든 것과 같은 단순화입니다좀 더 세부적인 설명은 Windows 7 engineering blog 또는 Koalra 추천합니다.

    5. ChooseFont() win32 공통 다이얼로그

      영향도가 크지는 않습니다. 애플리케이션에서 폰트를 선택하는 다이얼로그에서 WYSIWYG 개념에 따라 폰트 특성을 볼 수 있도록 바뀐 것과 Windows 지역 설정에 따라 필요 없다고 추정되는 폰트는 보이지 않도록 한 것입니다.

    6. 애플리케이션 매니페스트 호환성

    Windows 7에서는 애플리케이션 매니페스트에 “CompatiblityInfo.”을 넣었습니다. Windows 7에서 실행되지만 동작 방식을 Windows XP 혹은 Windows Vista처럼 하게 하는 것입니다. 모든 동작을 이전 환경으로 하는 것은 아니고 아래와 같은 컴포넌트가 대상입니다.

    Desktop Windows Manager: Fail/Lock bit blitting

    RPC exception handling

    API: ReadFileEx

    RPC: Thread pool management

  • Korea Evangelist

    접근성(Accessibility)과 장애인 차별금지 및 권리구제 관련 법률

    • 3 Comments

    접근성이란 말에 대해서 고민해 보신적이 있으세요?
    접근성이란 말은 일반적으로는 어떤 대상에 대한 접근이 얼마나 쉬운지를 표현하는 말입니다. 접근성 중에서도 특히 정보에 대한 접근성은 개개인의 이익과 한 사회의 이익과 생존에 주요한 키워드 입니다. 사회가 빠르게 정보화가 되고 또 어디서나 정보에 접근할 수 있는 유비쿼터스 사회가 되면서 정보는 양적으로나 질적으로 모두 빠르게 팽창하고 있습니다. 우리나라만 하더라도 정보에 대한 접근성은 엄청나게 발전했습니다. 정보에 접근할 수 있는 기반 인프라, 가구별 PC보급율, 초고속 인터넷 보급율 등등 뭐 하나 빠질 수 없을 만큼 발전해 있습니다. 이제는 누구나 쉽게 원하는 정보에 접근할 수 있고 또 정보를 사용해서 생활을 윤택하게 할 수 있게 되었습니다.

    하지만 모두가 이런 혜택을 누릴 수 있는 것은 아닙니다. 상대적으로 정보 접근성의 혜택을 누리지 못하는 계층이 존재하고 또 정보화의 약자들이 생겨날 수 밖에 없는 것도 정보화 사회의 한 단면입니다. 시각 장애인 혹은 청각 장애인들은 이런 정보화 사회의 대표적인 약자입니다. 우리에게 PC가 없는 삶은 생각하지 못 할만큼 이들에게도 PC을 통한 정보 접근성은 꼭 필요한 생활의 한 부분입니다.
    그럼 장애인들은 어떻게 PC을 사용할까요? 지체 장애인들이 막대를 입에 물고 타이핑을 하는 것은 가끔 보셨겠지만 시각 장애인들 혹은 시각과 청각 모두를 사용할 수 없는 사람들의 경우는 어떻게 사용할 수 있을 까요? PC의 대부분의 정보는 모니터를 통해서 시각적인 정보로 제공됩니다. 시각 장애가 있는 분들이 시각적인 정보를 사용하게 하기 위해서는 시각적인 정보를 청각이나 혹은 촉각 정보로 변환해서 제공하는 것이 필요합니다. 이럴 때 사용하는 소프트웨어가 바로 스크린 리더 소프트웨어 입니다.(Screen reader software) 스크린 리더는 보조공학(assistive technology)의 한 장르 라고 보시면 됩니다.


    <하드웨어적으로 접근성을 해결했던 가라사대>

    예전에 CPU 성능이 여유가 없을 때에는 이런 보조공학 역시 하드웨어를 이용한 해결 방안이 제시되고는 했지만 최근에는 CPU의 성능이 충분하기 때문에 이제는 모두 소프트웨어적으로 해결하고 있습니다. 국내에서도 드림 보이스, 센스 리더, 이브와 같은 제품들이 제공되고 있는데 이 제품들도 모두 소프트웨어적인 제품이라고 할 수 있습니다.

    스크린 리더의 구현 방식은 이전에는 모두 시스템 메시지를 중간에 가로채거나 혹은 자체적인 알고리즘을 이용해서 구현을 했지만 이런 방식의 경우 OS의 버전이 바뀐다든지 혹은 컴퓨터의 설정에 따라서 많은 제약이 생길 수 밖에 없어서 오작동을 일으키거나 작동이 멈추는 경우들이 다소 있었습니다. 가장 근본적인 해결 방법은 OS 버전에서 표준적인 인터페이스를 제공하고 이 인터페이스를 사용해서 스크린 리더 프로그램을 구현하는 것입니다.
    현재 Microsoft는 이와 같은 기능을 제공하기 위해서 Microsoft UIA(User Interface Automation)라는 기술이 제공되고 있습니다. UIA는 Windows XP 이상에서 제공되고 있으며 Windows Vista에서도 안정적으로 제공되고 있습니다. UIA는 화면의 상황을 시스템 메시지로 제공해 주는 인터페이스 기술이라고 할 수 있습니다. UIA를 통해서 개발자들은 시스템 메시지를 받을 수 있고 이 메시지를 음성으로 바꾸어 주면 스크린 리더 소프트웨어가 될 수 있습니다. UIA를 통해서 개발된 스크린 리더 소프트웨어의 경우 표준적인 인터페이스를 제공하기 때문에 안정적이고 PC의 환경에 따른 영향이 최소화 되는 장점이 있습니다. UIA와 관련해서는 아래의 링크를 참조할 수 있습니다.

    Wiki : http://en.wikipedia.org/wiki/Microsoft_UI_Automation
    UIA specification: http://msdn.microsoft.com/en-us/accessibility/bb892135.aspx
    UIA community promise: http://msdn.microsoft.com/en-us/accessibility/bb892136.aspx
    UIA community promise FAQ: http://msdn.microsoft.com/en-us/accessibility/bb892212.aspx
    Open specification promise: http://msdn.microsoft.com/en-us/accessibility/bb892212.aspx

    Windows Vista에서도 UIA를 사용한 Narrator 유틸리티가 기본으로 제공됩니다. Narrator는 Windows Vista에서 제공되는 스크린 리더 유틸리티 인데 [Control Panel] -> [Ease of Access] -> [Ease of Access Center] -> “Start Narrator”와 같이 찾아가시면 실행이 가능합니다. 한 가지 안타까운 점은 현재 영문판에서만 제공되고 있다는 점입니다. 하지만 UIA 인터페이스는 언어에 상관없이 모든 Windows에서 다 지원되고 있기 때문에 서드파트에서 제공하고 있는 제품을 사용하면 동일한 결과를 얻을 수 있습니다.


    <동영상1>Windows Vista Narrator

    그럼 개발자들이 자신이 만든 웹사이트나 소프트웨어가 정보 접근성을 잘 지원하고 있는지 확인해 보려면 어떻게 하면 될까요? 우선 웹 같은 경우는 한국정보문화진흥원(http://www.kado.or.kr)에서 제공하고 있는 웹 접근성 관련 자료들이 우선 참조 될 수 있습니다.

    관련된 표준: http://www.kado.or.kr/Index.aspx?PortalID=ko&MenuID=051227151311193692&Info=null
    법 및 연구자료: http://www.kado.or.kr/Index.aspx?PortalID=ko&MenuID=051227151252816379&Info=null
    동향 자료: http://www.kado.or.kr/Index.aspx?PortalID=ko&MenuID=051227151217410492&Info=null

    좀 더 정확하게 테스트 하기 위해서는 간단한 테스트 소스를 통해서 테스트 해볼 수 있습니다. 테스트를 위한 소스는 C#으로 작성되어 있습니다. 이 소스를 다운 받아서 보시면 UIA를 어떻게 활용하는 지 쉽게 이해할 수 있습니다. 소스는 UX엔지니어 블로그(http://winkey.tistory.com/230)에서 받아 볼 수 있습니다.


    <동영상2> 접근성 테스트 소스

    일반적인 웹 환경에서는 정보 접근성이 어느 정도 공감대가 형성되어 있고 관련된 표준의 제정이나 방법들이 많이 공유되고 있지만 UX/RIA 기술들에 있어서는 아직 여기에 대해서 진지하게 고민하는 사람들이 많지 않습니다. 하지만 Flash나 Silverlight와 같은 RIA기반의 기술들이 널리 사용되면서 이와 관련한 이슈들이 나타나게 되었습니다.

    지난 2008년 11월 18일 한국정보문화진흥원에서 국내 몇 개 업체들과 RIA기술을 제공하는 업체들이 모이는 회의가 열렸습니다. 이 회의의 궁극적인 목적은 RIA의 접근성에 관한 표준적인 가이드의 제작이었는데 회의에는 ㈜엑스비전 테크놀로지, 실로암시각장애인복지관, 한국시각장애인복지관등등 국내 스크린 리더의 대표적인 업체들과 Microsoft의 대표로 제가 그리고 Adobe의 대표가 참석했습니다.
    재미있는 점은 Silverlight의 경우 RIA 기술이지만 UIA 인터페이스를 준수하고 있었기 때문에 UIA 기술에 기반한 스크린 리더 프로그램에서는 별다른 수정이나 고려 없이도 바로 동작하기 시작했습니다. 또 Windows용 응용프로그램을 만드는 UX/RIA기술인 WPF(Windows Presenation Foundation)의 경우도 동일하게 UIA가 기본적으로 지원하기 때문에 잘 동작했습니다. 테스트에 참석했던 스크린 리더 업체들도 기존에 사용하던 기술들을 바로 사용할 수 있다는 점에서 만족해 할 수 밖에 없었습니다.


    <동영상3>Silverlight의 Accessibility 테스트

    이렇게 접근성이라는 부분이 주목을 받게 된 이유는 접근성과 관련된 부분이 이미 법제화 되었고 당장 준비해야 하는 시급한 과제로 떠올랐기 때문입니다. 이와 관련된 법 조항은 작년 2007년 4월에 제장된 장애인 차별금지 및 권리구제 등에 관한 법률 입니다. 이 중에서도 특히 접근성과 관련된 부분은 14조와 21조 항목입니다.

    - 동법 14조: 정보접근 및 의사소통에서의 정당한 편의제공 및 단계적 범위 및 편의 내용
    (필요한 수단) 누구든지 신체적 기술적 여건과 관계없이 웹 사이트를 통해서 원하는 서비스를 이용할 수 있도록 접근성이 보장되는 웹사이트

    - 동법 21조: 정보통신 및 의사전달에서의 정당한 편의제공
    장애인에게 전자정보 및 비전자 정보를 동등하게 접근할 수 있는 필요한 수단을 제공해야 함을 명시하고 있습니다.

    당장 2009년 4월이면 공공기관 부터 접근성을 반드시 준수해야 하는 시점에 와 있습니다. 현재 한국마이크로소프트의 DPE 부서의 Innovation Center에서는 한국정보문화진흥원과 함께 RIA기반의 접근성 가이드를 제작하는데 계속해서 참여하고 있습니다. 접근성의 준수는 강제화된 법의 준수라는 측면을 넘어서 약자를 배려하고 공정한 출발선에서 선의의 경쟁을 할 수 있는 건강한 사회가 제공해야 하는 멋진 노력이라는 생각이 듭니다.

    김영욱 Enterprise Developer Evangelist
    한국마이크로소프트

  • Korea Evangelist

    C# and VB.NET code standard document

    • 3 Comments

    소프트웨어 개발이 혼자서 하는 일에서 함께 하는 협업으로 바뀌고 나서 가장 먼저 피부에 와 닿는 문제가 바로 코딩 스타일에 관한 차이 입니다. 팀 작업에 있어서 코딩 스타일의 차이는 전체적인 완성도를 떨어뜨리고 개발방법론을 풀어나가는데 있어서 걸림돌로 작용하기도 합니다. 또 다른 문제는 유지보수를 용의하지 못하게 하는 등 좋지 않은 결과를 낳습니다.

    그래서 인지 요즘 대부분의 업체들은 코딩 스타일을 표준으로 정의하고 표준을 준수해서 코딩을 하게끔 한다든지 혹은 Visual Studio Team System 버전에 포함되어 있는 코드 분석 기능을 이용해서 코드와 관련된 스타일을 통일하도록 유도하고 있습니다.

    아래 링크에 있는 파일은 코딩 스타일의 표준을 개선하거나 새로 작성하려는 업체나 개인에게 기본적인 템플릿으로 사용할 수 있는 파일입니다. 닷넷 기반의 개발에서 가장 많이 사용하고 있는 C#과 VB.NET 두 가지 언어를 기준으로 하고 있습니다.

    http://www.notsotrivial.net/blog/post/2008/12/Holiday-Goodie-Bag-Free-C-and-VB-Coding-Standards-Reference-Documents.aspx

  • Korea Evangelist

    명필은 붓을 잘 안다. Visual Studio Tip #008: 분리된 도구 창을 원래 자리로 도킹하기

    • 3 Comments

    도킹에서 분리된 도구 창을 원래 도킹 위치로 보내려면 제목 표시줄을 두 번 클릭합니다.

    image

    아래와 같이 도구 창이 겹쳐 있을 때 도킹을 해제하려면 “오류 목록” 또는 “코드 정의 창” 글자를 두 번 클릭하거나 글자 부분을 끌어서 다른 곳으로 옮깁니다.

    image

    [Visual Studio 한글 버전 2008 화면]

    Sara Ford’s WebLog: http://blogs.msdn.com/saraford/archive/2007/08/06/did-you-know-double-clicking-the-tool-window-titlebar-re-docks-the-tool-window.aspx

Page 4 of 121 (605 items) «23456»