마이크로소프트는 최근 비주얼 스튜디오 2015 버전을 공개하면서 ASP.NET 5 와 크로스플랫폼 런타임 환경인 .NET CLR Core 을 공개했습니다. 새로운 버전의 공개에 맞추어 지난 20일 마이크로소프트 닷넷 개발자 블로그 포스팅을 통해 버그 혹은 취약점을 발견하는 이들에게 최대 15,000달러의 포상금을 지급하는 프로그램이 시작됨을 알렸습니다. 버그와 취약점에 대한 리포트는 새롭게 공개된 ASP.NET 5 와 .NET CLR Core 에 대해 적용되며 아직까지 개발이 진행중인 네트워크 스택(Network Stack)은 이번 프로그램에서 일단은 제외된다고 합니다.


마이크로소프트가 이번과 같은 프로그램을 운영했던 적이 있는지 찾아보지는 못했습니다만 근래 메신저 서비스인 텔레그램(Telegram)의 보안 취약점 관련 프로그램이나 라인(LINE)의 버그 바운티(Bug Bounty) 처럼 보다 적극적으로 취약점을 찾고 보완하여 크로스플랫폼 시장에서의 존재감을 만들어 나가겠다는 적극성이 물씬 느껴지는 듯 합니다. 시간이 되시는 분들이나 관심 있으신 분들은 닷넷 코어의 크로스플랫폼 버전에 대해서 심도 있는 지식도 쌓고 포상 프로그램을 통해 금전적인 혜택도 받아볼 수 있는 기회로 만들면 더할나위 없이 좋은 기회일 것 같습니다.




포상금은 취약점 타입별로 몇 가지 등급으로 나뉘어져 있습니다. 단순한 크로스 사이트 스크립트(XSS)와 같은 케이스는 심각도에 따라 500 달러에서 최대 2,000 달러까지 지급되며, 원격 코드 실행(Remote Code Execution)과 같은 심각한 케이스에 대해서는 최대 15,000 달러까지 포상금이 책정되어 있습니다. 보안 취약점을 찾아내어 증명하기 쉬운 것과 어려운 것에 차별점을 두어 보다 심각한 오류, 버그에 대해서는 충분히 그 보상을 해주겠다는 의미로 해석됩니다.



소프트웨어, 어플리케이션을 개발하다 보면 다양한 입력감 검증이나 변수 핸들링, 체계적으로 제한된 위임등을 통해 가능한 불필요한 코드의 영향을 줄이고 테스트 케이스들을 통해 이들이 정상적으로 동작하는지 검증하는 일들을 늘 하게 됩니다. 하지만 사람이 하는 모든 일들이 그렇듯 모든 예외 케이스나 특정한 상황을 다 찾아내어 테스트 하는 것은 거의 불가능합니다. 그래서 늘 패치(Patch)가 존재하고 버그 픽스(Bug Fix)가 필요할 수 밖에 없습니다. 쟁쟁한 사람들이 모여 만들고 테스트하여 출시하는 마이크로소프트에서도 버그 포상 프로그램을 통해 보다 완벽한 환경을 만들고자 하는 것을 보면 창과 방패의 관계처럼 완벽을 "추구"하는 코드와 버그와의 전쟁은 앞으로도 계속 될것만 같습니다!


닷넷 코어 CLR 및 ASP.NET 5 버그 포상 프로그램 포스팅 살펴보기 [바로가기]

버그 포상 프로그램 상세 시상(?) 내역 및 범위 살펴보기 [바로가기]


저작자 표시 비영리
신고
Posted by 노피디
Development2014.06.20 07:00
마이크로소프트는 다년간 개발자 에코시스템(Eco-system)을 위해 많은 투자를 해 왔습니다. 윈도우 운영체제는 여전히 PC 시장의 대부분을 차지하고 있고 PC 기반의 소프트웨어 개발은 큰 변화 없이 시장의 많은 요구를 받고 있습니다. 그런데 최근 모바일과 스마트 기기가 시장의 새로운 주류로 떠오르면서 전통적인 마이크로소프트 개발자 커뮤니티에 파열음이 일어나기 시작했습니다.

애플이 공급하는 iOS 플랫폼에서의 개발은 높은 광고 수익과 앱내수익(In-App Purchase)를 보여주고 있을 뿐 아니라 안드로이드 단말 역시 최근 많은 시행착오를 통해 애플리케이션을 통한 광고 혹은 앱내수익이 많이 올라가고 있는 추세입니다. 마이크로소프트는 이런 시장 변화에 대응하기 위해 윈도폰7과 윈도폰8, PC 기반의 운영체제에 큰 변화를 가져올 것으로 기대되는 윈도8과 윈도8.1 을 지속적으로 출시하며 적극적인 움직임을 보이고 있습니다.


마이크로소프트 환경 기반의 소프트웨어 개발을 생각한다면 우리가 빼놓을 수 없는 것이 바로 비주얼 스튜디오(Visual Studio)입니다. 일반에게 공개된 가장 최신 버전은 비주얼 스튜디오 2013 버전으로 기존 2010 버전이나 2008 버전이 가지고 있던 불편함에 대한 개선과 새로운 닷넷 프레임워크와 그 변화에 걸맞는 다양한 기능 개선으로 마이크로소프트 기술을 근간으로 개발 업무를 하는 분들에게 Get It 아이템이 된지 오래입니다.

하지만 비주얼 스튜디오를 비롯하 개발도구는 생각보다 비싼 시장 가격이 형성되어 있습니다. 보통 회사에서는 볼륨 기반의 계약이나 MSDN 프로그램, BizSpark 와 같은 기업 지원 프로그램을 이용하여 개발 도구를 공급받기 때문에 상대적으로 비싸다는 생각을 하기 힘들수도 있습니다. 하지만 개인 개발자나 특정 프로그램을 통해 지원을 받기 힘든 경우에는 단품 개발 툴을 구입하는 방법밖에 없을 때도 있습니다.


마이크로소프트는 새해를 맞이하여 새로운 프로모션들을 많이 진행하고 있습니다. 운영체제 정식 출시 전에 충분히 사용자 층을 확보하고 개발자 그룹 / 커뮤니티가 보다 적극적으로 새로운 플랫폼 향으로 개발을 하는 것은 무척 중요합니다. 초반의 시장 분위기 장악은 물론이고 지속적인 선순환 구조를 만들기 위해 개발자 커뮤니티의 지원은 필수적일 수 밖에 없습니다. 

조그만 기업을 설립하고 새로운 서비스 개발을 진행하고 있거나 개인 개발자로서 적정한 금액으로 개발도구의 정식 사용권을 획득하려는 분들에게 마이크로소프트는 비주얼 스튜디오 20% 할인이라는 강수를 들고 나왔습니다. 어떤 선택을 할 것인지는 개인의 몫입니다. 그 선택이 옳던 그르던간에 본인이 무언가를 창조하는 개발자라면 "왜?" 에 대해서 보다 깊은 생각을 해봐야 할 것 같습니다.

개발자와 IT기업을 위한 Visual Studio 2013 할인 행사 살펴보기 [바로가기]



 
저작자 표시
신고
Posted by 노피디
Development2011.06.29 09:00
지난 포스팅에서 Binary 버전으로 다들 NAnt 를 설치하셨나요? Binary 버전을 설치해도 되지만 NAnt 를 이용하는게 주 목적이라면 굳이 Source 를 받아서 컴파일 하실 필요는 없을 것 같습니다. 지난 포스팅을 보지 않고 오셨다면 아래 링크를 이용해서 NAnt 를 먼저 설치하고 오시는게 순서입니다 ^^

 
NAnt 가 빌드하는 원리는 별로 복잡하지 않습니다. 빌드 하고자 하는 프로젝트의 루트 폴더에 *.build 파일을 만들고 이 파일에 빌드에 필요한 함목들을 정의해 주면 됩니다. 앞으로 하나씩 살펴 볼 것들이 바로 *.build 라는 파일에 들어가야 하는 내용을 살펴보는 것이 목적입니다.

간단하게 구성된 소스코드를 이용해서 먼저 NAnt 를 이용한 빌드를 해보고 *.build 파일에 무슨 내용이 기술되어 있는지 살펴보겠습니다. NAnt 공식 다운로드 링크에서 2001년에 개발된 0.1.3 버전의 NAnt 를 이용해서 빌드를 한번 해보도록 하겠습니다. 최근 소스는 규모도 크고 빌드하는 시간도 많이 소요되니 간단한 걸로 먼저 보자는 것이지요!

 
 
다운로드 받은 소스코드를 임의의 경로에 풀어놓고 명령 프롬프트를 실행합니다. 해당 경로로 이동한 다음 nant 라고 치면 위의 화면과 같이 출력되며 빌드가 끝납니다. 참 쉽죠? 0.1.3 버전 폴더에 이미 NAnt.exe 가 있기 때문에 Path 로 열심히 잡은 버전이 실행된 것은 아닙니다. 첫줄에 NAnt.build 파일을 이용한다는 내용이 눈에 띄시죠?

 
바로 확장자 build 를 가진 파일이 빌드에 대한 정보를 담고 있는 파일입니다. 어떤 컴파일러를 사용해서 어떤 경로에 어떤 확장자를 가진 파일을 어떤 소스코드와 리소스를 이용해서 빌드할 것인지를 XML 형태로 기술한 파일입니다. 간단한 소스코드인 만큼 정말 간단한 내용이 들어가 있습니다.

 
빌드 경로에 정말 파일이 생겼는지 찾아가 보았습니다. 네, 잘 생긴게 보입니다. 디버그로 컴파일이 되었기 때문에 pdb 파일이 같이 생성이 되었구요, 실행파일 형태의 NAnt.exe 가 만들어진 것을 볼 수 있습니다. 요게 어떻게 보면 NAnt 의 가장 중요하고도 전부일 수 있는 내용인 것 같습니다. (파면 더 나오겠지만... 일단 크게 보자면 그렇다는 말입니다! ^^) 바로 저 XML 을 어떻게 만드느냐! 에 따라 빌드 자동화를 얼마나 훌륭히 수행할 수 있는지 판가름 날 것 같습니다.

- NoPD - 
신고
Posted by 노피디
Development2011.06.28 17:26
그동안 빌드 자동화에 대해서 관심만 있었지 실제로 사용해 본 적은 없었습니다. 대부분 Peer to peer 로 배포하는 방식으로 커버가 가능했고 수작업이 어느정도 들어가더라도 Configuration 등을 세심하게 하나씩 살피면서 배포하는 것이 더 편하다고 느끼고 있었기 때문입니다. 

하지만 갑자기 배포해야 할 서버의 규모가 세자리 수 가까이 된다는 생각을 하기 시작하니 이건 사람이 해야 할 일이 아니라는 생각이 들더군요. 그래서 NAnt 라는 도구에 관심을 갖게 되었습니다. 처음 NAnt 를 사용해 보면서 겪는 시행착오를 포스팅으로 고스란히 남겨볼까 합니다.
 

NAnt 는 아파치의 오픈소스 프로젝트인 ANT 에서 유래된 닷넷 버전의 ANT 프로젝트입니다. 빌드에 대한 자동화를 도와주는 도구로 스크립트로 TASK 를 정의하고 이를 이용하여 빌드 자동화를 할 수 있는 도구입니다. 주요한 닷넷 프레임워크의 버전들 지원하고 있으며 도구 상에서 다중 버전에 대한 빌드 진행등이 가능해 수작업으로 빌드하는 경우에 비해 무척 편리하다고 합니다. (써봐야 알겠지요! ^^)

 
NAnt 를 설치하는 방법은 무척 간단합니다. 공식 페이지에서 Binary 혹은 Source 파일을 다운로드 받아 설치하면 됩니다. NAnt 의 소스코드까지 보면서 설치할 요량이 아니라면 Binary 버전을 받아서 설치하는 것이 편리합니다. Binary 버전은 아래와 같은 순서로 간단히 설치가 가능합니다.

[1] Ant 공식 페이지에서 nant-x.xx-bin.zip 파일을 받는다  
[2] 설치하고 싶은 (이라 적고 압축 푼다고 읽는다) 경로에 압축을 푼다 (예> c:\program files\nant)
[3] 어디서나 실행할 수 있도록 nant.bat 를 만들어 PATH 가 잡힌 경로에 둔다

예> c:\Windows\nant.bat 
@echo off
"C:\Program Files\NAnt\bin\NAnt.exe" %* 

[4] 커맨드 창을 열어 nant -help 라고 쳐서 동작하면 설치 완료 



뭔가 많은 일을 했다. ^^ 특히 NoPD 처럼 Windows 폴더에 nant.bat 를 넣으려고 했다면 특히 윈도우7 을 쓰는 환경에서 관리자 권한으로 애를 많이 먹었을 지도 모르겠다. 아예 환경변수에 NAnt 압축을 풀어넣은 경로를 PATH 에 잡아버리는 것도 방법이다. 다음 포스팅 에서는 간단한 예제를 통해 NAnt 를 이용한 빌드를 해보도록 하겠다.

- NoPD -

 
신고
Posted by 노피디
마이크로소프트가 제공하는 닷넷 프레임워크는 그 양이 정말 방대하다. 그러다 보니 이미 오래전부터 존재하고 있음에도 불구하고 사용자들에게 널리 사용되지 않는 요소들도 꽤 많다. 오래된 기술이라서 Deprecated 되는 요소를 제외하더라도 그 유용성에 비해 사용자들의 인지가 떨어지는 것들이 여럿 있다. 그 중 대표적인 것이 바로 "?? 연산자" 이다. 

일반적으로 사용자들은 단행 조건문 처리를 할 때나 Nullable 자료형을 선언할 때 쓰는 "?" 는 많이 사용하는 편이다. 하지만 물음표를 두개 붙이 "??" 연산자를 사용하는 경우는 쉽게 찾아보기 어렵다. 그렇다면 도대체 물음표를 두개 붙여 놓은 "?? 연산자"는 무얼하는 친구일까?

 
우선 "??" 연산자는 영어로 null-coalescing 연산자라고 부른다. 우리말로 어떻게 해석해야 할지 조금 애매하니 그냥 "??" 또는 "?? 연산자" 라고 부르기로 하겠다. 이 연산자의 용도는 Null 값을 가질 수 있는 변수들을 사용할 때 초기값의 원활한 지정이다. 보통 Null 값의 처리를 위해 아래와 같은 코드를 많이 사용한다.

int? numOne = null;
int? numTwo = 23;

if (numOne != null)
    return numOne;
if (numTwo != null)
    return numTwo;

return 10;


이 코드는 Null 값을 가질 수 있는 두개의 정수형 변수 numOne 과 numTwo를 비교하여 Null이 아닌 값을 출력하기 위한 간단한 코드이다. 만약 둘다 null 값이면 숫자 10을 출력하게 된다. 우선 이 코드를 물음표 한개를 이용하여 단행 조건문으로 처리해 보면 아래처럼 표현될 수 있다.

return (numOne != null ? numOne : (numTwo != null ? numTwo : 10));

한줄로 처리가 되긴 했지만 가독성이 그리 높은 코드는 아니다. 코드 자체의 길이도 길지만 콜론과 괄호, 물음표, 부등호 등이 섞여 있어서 한눈에 내용을 파악하기에는 쉽지 않은 상태이다. 이것은 "??" 연산자를 이용해서 표현하면 아래와 같다.

return ((numOne ?? numTwo) ?? 10);

처음에 상당히 길었던 코드가 상당히 짧게 표현되었다. numOne ?? numTwo 의 의미는 두가지 변수 중 Null 값이 아닌 것이 어떤 것인가? 를 의미한다. Null 이 아닌 값이 있으면 해당 변수 값이 Return 된다. 하지만 둘다 Null 이면 numOne ?? numTwo 의 결과는 Null 이다. 이후 바깥쪽 괄호의 처리가 진행되는데 Null ?? 10 을 연산하게 되면 Null 이 아닌 10 이 Return 되게 된다.  

소프트웨어 개발을 하면서 Null 값의 처리는 꼭 해줘야 하는 필수적인 예외처리 로직이다. 이왕 해야 하는 처리 로직이라면 조금 더 간결하고 가독성 있는 코드를 만들어 쓰는 것이 더 좋지 않을까?

- NoPD - 
신고
Posted by 노피디
WCF 를 이용한 통신채널을 구성할때, 일반적인 방법으로 인터페이스를 선언하고 웹 참조 혹은 DLL 참조, Svcutil 로 생성된 레퍼런스 정보를 사용할 때는 별 문제가 없다. 하지만 WCF 3.5 부터 제공되기 시작한 REST 형태의 호출 지원을 사용하는 경우에는 파라메터의 데이터 형태에 따라 BodyStyle 속성을 지정해야 하는 경우가 빈번하다.

예> IService.cs

[ServiceContract]

public interface IService

{

    [OperationContract]

    [WebInvoke(UriTemplate = "Counter", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)]

    int Counter(CounterList counterValues, int tryCount); 

 
그런데 문제는 서비스의 인터페이스 선언에 이렇게 WebInvoke Attirbute 와 BodyStyle 을 지정했음에도 클라이언트에서 서비스를 호출할 때 BodyStyle 이 Wrapped 로 지정되지 않았다는 에러가 발생할 때가 간혹 있다는 점이다. 특히 svcutil 을 이용해서 매뉴얼하게 레퍼런스 클래스를 만드는 경우에 이런 일이 많이 발생한다. (웹참조로 추가하는 경우에도 발생한다는 보고가 있다)

예> 클라이어트에서 서비스 호출시 에러 메세지

'IService' 계약의 'Counter' 작업에서 래퍼 요소 없이 직렬화할 여러 개의 요청 본문 매개 변수를 지정합니다. 최대 하나의 본문 매개 변수가 래퍼 요소 없이 직렬화될 수 있습니다. 추가 본문 매개 변수를 제거하거나 WebGetAttribute/WebInvokeAttribute의 BodyStyle 속성을 Wrapped로 설정하십시오.


이런 경우 서비스쪽을 자꾸 살피게 되는데 원인은 서비스가 아니라 레퍼런스 클래스의 생성에 있기 때문에 트러블슈팅이 쉽지 않다. svcutil 명령을 이용해서 만든 레퍼런스 클래스를 확인해 보면 WebInvoke 로 지정한 내용이 전혀 들어가있지 않은 걸 쉽게 발견할 수 있다. 해당 부분에 동일한 선언을 추가해주면 에러를 가볍게 제거할 수 있다.

[System.CodeDom.Compiler.GeneratedCodeAttribute("System.ServiceModel", "3.0.0.0")]

[System.ServiceModel.ServiceContractAttribute(ConfigurationName="IService")]

public interface IService

{

[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/IService/Counter", ReplyAction="http://tempuri.org/IService/CounterResponse")]

    [WebInvoke(UriTemplate = "Counter", Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped)]

    int Counter(Counters counterValues, int tryCount);


비동기 형태로 호출하기 위해 만든 레퍼런스 클래스의 경우에도 Beginxxx 와 같은 비동기 메소드를 선언하는 부분에는 지정해줄 필요가 없다. 원래 함수의 속성으로만 지정하면 문제는 해결된다. 혹시 비슷한 어려움을 겪는 사람들을 위해서 공유해둔다.

- NoPD -



 

 
신고
Posted by 노피디
Development2011.03.09 18:40
애자일 프로그래밍을 하던 그렇지 않던 지속적인 통합 (CI, Continuous Integration) 은 개발자들의 노고를 덜어주기 위한 큰 화두임에 틀림없다. 관련하여 여러가지 자료를 찾아 보던중 월간 마이크로소프트웨어지에 필진으로 활동중이신 최재훈 님께서 2008년도에 1년동안 연재했던 자료가 있어서 링크를 모아 보았다. 

혹시나 CI 에 관하여 고민하고 있거나 공부를 하고 싶은 사람이라면 (저처럼 ^^) 한번 쭈욱 읽어보면서 감을 잡아보는 것도 나쁘지 않을 것 같다. 다만 내용은 닷넷과 VC++ 을 모두 커버한다고 전제를 깔긴 했지만 대부분의 내용은 VC++ 중심으로 돌아가고 있다. 그렇다 하더라도 큰 줄기는 틀리지 않으니 참고하기엔 가장 좋은 글이라 생각된다.


최재훈 님의 글은 리눅스 서버에 Subversion 을 설치하고 여기에 이슈관리 도구인 trac 을 설치해서 사용하는 환경으로 되어 있다. 시절이 좀 지나서 그런지 (쓰신건 2008년) 지금은 윈도우에서도 얼마든지 이 도구들을 설치해서 활용하는 것이 가능하다. 윈도우용 Subversion 도구인 Visual SVN Server 를 설치해서 레파지토리를 만들고 윈도우용 Visual SVN Server Trac 을 설치하는 방식으로도 가능하다. 

참고링크 : 즐거운 삐약토끼님의 " 윈도우에 Visual SVN Server + Trac 설치하기 [바로가기] "

결과적으로 지속적인 통합은  1) 소스버전관리, 2) 이슈관리, 3) 빌드자동화, 4) 테스트 자동화 등이 어우러져 아름다운 조화를 이룰때 실현 가능하다는 것을 알 수 있다. 처음이 어렵지 익숙해지면 없이는 살 수 없을 것 같은 생각이 든다.

- NoPD -
신고
Posted by 노피디

닷넷 개발자 커뮤니티인 dotnetslackers.com 에 예전에 올라온 좋은 자료입니다.
윈도폰7에서 페이스북 연계 앱을 개발하는 강의인데요
하나씩 따라하면서 만들어보기 좋게 구성되어 있습니다.

[ 강의#1 ] - http://dotnetslackers.com/articles/net/wFace-windows-phone-7-facebook-integration-part-1.aspx
[ 강의#2] - http://dotnetslackers.com/articles/NET/wFace-windows-phone-7-facebook-integration-part-2.aspx

Facebook  개발 관련 유용한 링크 모듬
  • Walkthrough of Smiley.NET the FBML sample packaged with the Facebook Developer Toolkit read more
  • Facebook Developer Toolkit 1.6 Released on CodePlex read more
  • Why DataBinding With ComboBoxes is NonTrivial read more
  • Apple Safari for Windows and Microsoft Silverlight read more
  • Host WPF Controls in Windows Forms read more
  • Programmatically determine if UAC is enabled read more
  • Phoning Home, revisited (Matt Gertz) read more
  • Streamline Model-View-Presenter with new StructureMap feature - level 300 read more
  • iPhone bluetooth feature broken for music on firmware 1.1.3. read more
  • The WindowsClient.NET Community Site Launches read more
신고
Posted by 노피디
Development2010.12.03 08:53
윈도폰7은 기존 마이크로소프트의 윈도우모바일 계열 운영체제와 다르게 닷넷 기반의 C# 만으로 개발이 가능하다고 알려져 있습니다. Managed 코드로만 개발을 가능하게 함으로써 애플리케이션과 운영체제의 안정성을 더 높히겠다는 마이크로소프트의 의지가 반영된 결과입니다. 한동안 Native C 를 지원하지 않음으로서 생기는 단점들에 대하여 갑론을박이 많았습니다만 단말 런칭 이후에는 이런 이야기가 많이 줄어든 분위기입니다.

마이크로소프트는 여기에 더하여 개발자 저변을 확대하기 위하여 비주얼베이직으로도 개발이 가능한 개발도구 추가 기능을 공개했습니다. 기존에 설치한 비주얼스튜디오 2010 윈도폰 버전이나 윈도폰7 개발도구가 추가된 비주얼스튜디오에 설치 가능하며 아직 정식 버전이 아닌 RTW 임을 감안하여 테스트 해볼것을 권장하고 있습니다. 비주얼 베이직은 은근히 개발자 층이 넓다는 것이 이번 개발도구 런칭의 이유가 아닐까 싶습니다.


개발도구를 다운로드 받는 MSDN 경로는 위의 이미지에 연결해 두었습니다. 이로써 윈도폰7을 개발할 수 있는 닷넷 기반의 Managed 언어는 C# 과 VB 가 된 것 같습니다. 다만 현재까지 XNA 기반의 게임 개발에는 사용할 수 없고 실버라이트를 기반으로하는 일반 어플리케이션 개발로 한정된다고 합니다. 

- NoPD -
신고
Posted by 노피디
분류없음2010.11.10 10:02
찰스 페졸드라는 이름이 마이크로소프트 관련 개발을 하시는 분들께는 무척 익숙할겁니다. 윈도우 서버 제품군을 비롯하여 개발 관련된 내용들까지 가리지 않고 책을 저술하는 분으로 유명합니다. 이번에 그 영역을 모바일까지 넓혀왔습니다. 이름하여 프로그래밍 윈도폰7!

아직까지 윈도폰7 개발서가 딱히 나오지 않은 상태에서 페졸드와 MS Press 에서 이렇게 무료로 책을 풀어준다는 것은 개발 붐을 일으키기 위한 하나의 전략으로 생각됩니다. 마이크로소프트의 입장에서 초기 개발붐을 일으키지 못하면 윈도폰7의 늦을 출시를 만회할 수 있는 마지막 기회를 잃게 되는 것이니까요.


영문으로 된 원서라는 압박이 있지만 개발자의 장점이 뭐겠습니까? 코드로 모든것을 이해하면 되니 부담 갖지 말고 바로 다운로드 받으시기 바랍니다!

- eBook 다운로드 링크 : http://bit.ly/9PBQNr
- eBook 샘플 프로젝트 : http://bit.ly/aB0N08

- NoPD -
신고
Posted by 노피디

티스토리 툴바