커뮤니티 뉴스 레터를 구독하다가 우연히 발견한 좋은 리소스 소개 페이지가 있어서 한글로 간단히 번역하여 블로그 아티클로 올려봅니다. Client App Dev MVP이신 Anoop Madhusudana님의 블로그로부터 발췌하여 인용한 것임을 밝혀둡니다. (http://amazedsaint.blogspot.com/2010/09/7-freely-available-e-booksguides-i.html)

Foundations Of Programming
다운로드 링크: http://codebetter.com/media/p/179694.aspx

이 e-Book은 단순 명료하면서도 이해하기 쉽게 구성되어있습니다. 특히, 프로그래밍에 첫발을 막 내딛은 - 혹은 - 아직 숙련되지 않은 개발자들에게 더 좋은 코드와 설계력을 부여할 수 있도록 도움을 줄 것입니다. 이 블로그를 운영하시는 MVP 분의 마음에 아주 쏙 드는 책이라는 인상깊은 설명도 덧붙여져있습니다. :-)

Microsoft Application Architecture Guide, 2nd Edition
다운로드 링크: http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ce40e4e1-9838-4c89-a197-a373b2a60df2&displaylang=en

Microsoft에 의하여 작성된 e-Book이며, .NET Framework를 사용하는 개발자 - 또는 - 설계자들이 반드시 읽어보아야할 내용들로 구성되어있습니다. 이 도서를 통하여, Microsoft .NET 기반 소프트웨어 개발 환경에서, 디자인 기본 원칙이나 패턴을 성공적으로 개발하고 적용할 수 있도록 할 수 있습니다. 또한, .NET 기반에서 개발하는 동안 흔히 부딪힐 수 있는 문제점들에 대해 최적의 해결 방안을 언급하고 있으므로 엔터프라이즈 기반의 .NET 개발 환경에서 특히 유용합니다.

Rob Miles C# Yellow Book 2010
http://www.csharpcourse.com/

C#과 .NET의 컨셉을 쉽고 빠르게 이해할 수 있도록 도와줍니다. 이 e-Book을 통하여 최상의 구현 방법을 학습하고 패턴과 컨셉을 빠르게 습득하실 수 있습니다.

Threading in C#
http://www.albahari.com/threading/

제 블로그에서, 그리고 SQL Azure와 LINQ 세미나를 진행하는 동안에 자주 언급했던 무료 개발 도구인 LINQpad의 제작자이자 Microsoft MVP인 Joe Albahari님의 리소스입니다. 복잡하고 까다로울 수 있는 주제인 멀티 스레딩에 대해 알기 쉽게 쓴 책으로, 스레드에 대한 다양한 컨셉, 예를 들어 스레드 풀링이나 동기화, Non-blocking 동기화 등 다양한 주제들을 다룹니다. 그리고 특별히 요즈음 .NET Framework 4.0에서 강조되는 병렬 프로그래밍에 대한 이야기도 같이 소개하고 있습니다. e-Book으로도 다운로드 가능합니다.

Improving .NET Application Performance and Scalability
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=8A2E454D-F30E-4E72-B531-75384A0F1C47

이번에도 역시 Microsoft의 e-Book입니다. 여러분의 응용프로그램에서 발생할 수 있는 다양한 성능 상의 문제를 점검하고 해결할 수 있도록 도움을 주는 최상의 리소스로, 설계자, 개발자, 테스터, 관리자에 이르는 다양한 범위를 포괄합니다. e-Book의 후반에 수록된 부록에는 체크리스트가 있으므로, 체크리스트만을 따로 인쇄하고 책상 옆에 놓아두면 여러분의 응용프로그램을 스스로 점검해볼 때 매우 유용할 것입니다.

Applying Design Patterns
http://amazedsaint.blogspot.com/2009/06/software-design-patterns-for-everyone.html

디자인 패턴을 활용해보고 싶지만 어렵게 느껴지시나요? 그렇다면 이 리소스를 활용해보시면 좋을것 같습니다. 이 리소스에서는 디자인 패턴을 닷넷 개발 환경에서 어떻게하면 좀 더 쉽게 적용할 수 있을지 자세한 내용을 단계별로 소개하고 있습니다. 역시 e-Book으로도 다운로드 가능합니다.

RefCardz from DZone: Getting started with WCF 4.0
http://refcardz.dzone.com/refcardz/getting-started-windows-0

RefCardz from DZone: Getting started with Silverlight + Expression Blend
http://refcardz.dzone.com/refcardz/getting-started-silverlight

RefCardz from DZone: Essential F#
http://refcardz.dzone.com/refcardz/essential-f

위의 세 리소스는 e-Book은 아니지만 책상 옆에 놓고 쓸 수 있는 단어장 카드의 형태로 구성된 리소스입니다. 위 사이트에서 회원 가입을 하고 파일을 다운로드받아 카드로 오려서 바인더 링 등으로 매달아두면 생각날 때 마다 찾아볼 수 있는 여러분만의 리소스가 될 것입니다. 위에서 소개한 세 가지 카드 말고도 다른 카드들이 더 있으니 사이트 이곳저곳을 둘러 보시길 권합니다.

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

Windows Phone 7에 대한 관심이 뜨거운 요즈음, Windows Embedded 역시 새 버전에 대한 CTP가 공개되었습니다. Windows 7 운영 체제를 실행하는 컴퓨터와 가장 연동이 잘 된다는 사실에 많은 부분을 강조하고 있으며, Windows Phone 7으로 전환되는 동안 한 동안 많은 오해가 있었던 부분인 Native Development Feature (C/C++ based)에 대한 부분도 오해가 풀린듯 합니다. ㅎㅎ

Windows Embedded Compact 7 CTP 개발 도구 및 관련 최신 정보의 구독을 위해서는 Windows Live ID (http://www.live.com)이 필요하며, https://connect.microsoft.com/directory/non-feedback 에서 체험판 프로그램 신청이 가능합니다. 이곳을 통하여 신청을 완료한 후 최신 버전의 SDK를 다운로드받아 테스트 가능합니다. 응용프로그램 디자인을 위해서는 Expression Blend 3를 사용해야 하며, 없을 경우 Trial 버전을 http://www.microsoft.com/downloads/details.aspx?FamilyID=e82db5e2-7106-419e-80b0-65cce89f06bb&displaylang=en 에서 다운로드받아 이용하실 수 있습니다. 자세한 정보는 http://www.microsoft.com/windowsembedded/en-us/products/windowsce/compact7.mspx 에서 확인 가능합니다.

Connected Experience

멀티미디어에 대한 연결과 사용

* 미디어 라이브러리를 기반으로 하는 단순화된 미디어 관리
* MPEG-4 및 HD 지원 및 향상된 미디어 스트리밍
* 써드파티 컨텐츠를 위한 유연한 플러그 인 아키텍처

Microsoft Windows 7과의 긴밀한 연동
* Windows Device Stage 지원
* MTP 기반의 데이터 및 미디어 동기화

Office 문서 및 개인 정보 연동
* 새 버전의 Office 문서 뷰어 지원 (OOXML 기반 문서 지원)
* AirSync 및 Microsoft Exchange 동기화 지원

Rich User Experiences

확장 가능한 사용자 인터페이스 프레임워크
* Windows Embedded용 Silverlight (http://www.microsoft.com/windowsembedded/en-us/products/windowsce/silverlightforwe.mspx) 기반의 새로운 사용자 인터페이스 디자인
* Microsoft Expression Blend 기반의 디자이너 경험 제공
* XAML 코드 생성 도구에 의한 빠르고 확장 가능한 장치 사용자 인터페이스 제공

향상된 데스크톱 브라우징
* 최신 표준 기술을 준수하는 Internet Explorer 브라우징 엔진 탑재
* Tabs, Panning, Zoom 동작 지원
* Adobe Flash 10.1 기반의 멀티미디어 컨텐츠 지원

자연스러운 터치 입력
* 고감도의 터치 입력을 기반으로 하는 사용자 인터페이스 설계 가능
* 다중 터치 입력 지원
* 제스처 인식 기능 지원

Highly Reliable Platform

Visual Studio 연동
* Visual Studio 및 Expression Blend를 통한 개발 지원
* Visual Studio의 경우, C/C++ 기반 개발 환경 지원
* Windows Embedded Developer Update (http://www.microsoft.com/windowsembedded/en-us/news/pressreleases/esc-west1.mspx)를 통한 기능 업데이트의 제공을 단순화
* 최소한의 사용자 입력을 기반으로 하는 새로운 설치 경험

최신 하드웨어의 이점을 활용
* ARM v7 프로세서 지원
* Open GL ES 2.0 기반의 향상된 그래픽 성능
* 멀티코어 아키텍처 기반의 고성능 및 SMP 지원

개선된 신뢰성 및 뛰어난 성능
* Windows 7 기반의 네트워크 기술을 기반으로 하는 향상된 네트워킹
* 안정성있는 무선 연결 및 WiFi 지원
* Bluetooth 2.1 지원 / 최신 하드웨어와의 연결

2010.09.20 Update: 아크몬드님의 네이버 오픈 캐스트에 글이 같이 소개되었습니다.



저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

참가 신청 바로 가기: http://onoffmix.com/event/1787


  • 주최 : 한국 Visual Studio 공식 팀
  • 일시 : 2010년 9월 28일 오후 7시 ~ 10시
  • 장소 : 한국 마이크로소프트 - 포스코 센터 5층
  • 참가비 : 무료
  • 최근 쏟아지는 기술의 홍수 속에서 '아차~' 하고 눈 깜빡할 순간 신기술에 낙오되기 쉽습니다. 한 번은 괜찮지만, 두 번은 기술 트랜드를 따라잡기가 더 힘들어 집니다. 저희 팀에서 기술을 먼저 접해보고, 먼저 고민해본 살아있는 경험을 여러분들에게 전수해 드립니다.
  • 세미나 아젠다

    시간

    세션 내용

    19:00 ~ 19:30

    등록

    19:30 ~ 20:10

    현실적인 클라우드 컴퓨팅 이야기

    남정현 C# MVP

    20:20 ~ 21:00

    Expression Blend 와 함께하는 윈도우 폰 7 개발 입문

    조진현

    21:10 ~ 21:50

    Razor 로 열어가는 새로운 ASP.NET

    김시원 ASP.NET MVP

      

       

    발표 내용 소개

    현실적인 클라우드 컴퓨팅 이야기 / 남정현 C# MVP

    클라우드 컴퓨팅, 말로만 들어봤지 실제로 어디에 어떻게 사용이 될 수 있는지 알려주는 사람이 없어 답답할 때가 많습니다. 이번 세션에서는 클라우드 컴퓨팅에 관한 실질적인 이야기, 그 중에서도 특별히 마이크로소프트의 윈도 애저 플랫폼에 대한 이야기를 나누면서, 클라우드 컴퓨팅의 현실적인 사례를 간단히 들어보기로 하겠습니다.

      

    Expression Blend 와 함께하는 윈도우 폰 7 개발 입문 / 조진현

    윈도우 폰7 개발에 대한 간단한 소개와 방법에 대해서 살펴본다. 그리고 더 쉽고 편한 개발을 위한 고민을 해보며, 이를 위해서 Expression Blend 의 활용에 대해서 고민해 본다.

      

    Razor 로 열어가는 새로운 ASP.NET - 김시원 ASP.NET MVP

    Razor 는 차세대 ASP.NET 의 새로운 View Engine 으로써 , 이것 때문에 요즈음 ASP.NET 이 한창 주목 받고 있습니다. 이번 시간에는 Razor 의 등장배경과 함께 Razor 로 인해 개발 환경이 어떻게 변화하였는지 살펴보고 , 기본적인 Razor 의 사용법을 익혀보도록 하겠습니다.

    발표자 소개

    남정현 C# MVP

    (주)코아뱅크에 재직 중이며, Microsoft Visual C# MVP로 활동 중입니다. DEVPIA C# Forum SYSOP, Windows Azure Cafe SYSOP을 맡고 있습니다. 여러 커뮤니티와 개인 블로그, 트위터 (@rkttu)를 통하여 윈도 애저 플랫폼에 대한 다양한 이야기를 전파하고 있습니다.

    조진현

    현재 게임 개발자로 재직 중이며  Visual Studio 2010 공식 팀 블로그 (http://vsts2010.net) 에서 DirectX 관련 분야에서 활동 중이다. 최근에는 '김탁구'와 '나는 전설이다' 라는 드라마에 빠져서 살고 있다.

      

     

    김시원 ASP.NET MVP
    ASP/ASP.NET MVP를 2009년 부터 계속 유지해오고 있으며 다양한 형태의 웹 어플리케이션 개발 경험과 세미나 경험을 가지고 있다. 현재 Hugeflow 웹 솔루션 개발팀에서 개발의욕을 불사르고 있다. 세상을 풍요롭게 하고 사람들에게 강한 종속성을 부여하는 프로그램을 개발하는 것이 목표이다.

    오시는 길

    한국 마이크로소프트 - 포스코 센터 5층

     

    참가 신청 바로 가기: http://onoffmix.com/event/1787


    저작자 표시 비영리 동일 조건 변경 허락
    이 장소를 Daum지도에서 확인해보세요.
    서울특별시 강남구 대치4동 | 포스코센터
    도움말 Daum 지도
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by Windows Azure MVP 남정현 (rkttu.com)

    약 3개월만의 작업 기록 포스팅입니다. Core Runtime에 대한 테스트를 강화하고 코딩할 때 불편한 부분을 최소화하면서 실제 C 프로그래밍 언어와 비슷한 환경을 나타낼 수 있도록 만드는데에 많은 노력을 들였습니다.

    Buffer, String 계열 클래스의 확장 및 개선

            [Test]
            public void memchrTest()
            {
                int ch = 'r';
                GlobalHeapAnsiString str = new GlobalHeapAnsiString("lazy");
                GlobalHeapAnsiString @string = new GlobalHeapAnsiString("The quick brown dog jumps over the lazy fox");
                GlobalHeapAnsiString fmt1 = new GlobalHeapAnsiString("         1         2         3         4         5");
                GlobalHeapAnsiString fmt2 = new GlobalHeapAnsiString("12345678901234567890123456789012345678901234567890");

                SBytePointer pdest;
                int result;

                Console.Write("String to be searched:\n             {0}\n", @string.ToString());
                Console.Write("             {0}\n             {1}\n\n", fmt1.ToString(), fmt2.ToString());

                Console.Write("Search char: {0}\n", (char)ch);
                pdest = msvcrt.memchr(@string, ch, (size_t)@string.Length);
                result = (int)(pdest - @string + 1);

                if (pdest != null)
                    Console.Write("Result:      {0} found at position {1}\n", (char)ch, result);
                else
                    Console.Write("Result:      {0} not found\n", (char)ch);

                Assert.AreEqual(12, result);

                str.Dispose();
                @string.Dispose();
                fmt1.Dispose();
                fmt2.Dispose();
            }

    위의 코드에서 보시는것처럼 String Buffer 클래스에 직접 Add / Subtract 연산자 오버로드를 추가하여 실제 포인터 연산의 결과를 재현합니다. 형식화된 Pointer 클래스와 다른점이 있다면 자기 자신에 대한 주소 설정은 허용하지 않습니다. 이것은 비관리 메모리 영역의 주소가 변경됨으로 인하여 발생할 수 있는 할당 해지 실패로 인한 메모리 누수를 예방하기 위한 디자인입니다.

    총 20여종의 주요 값 형식에 대한 형식화된 포인터 제공 (Typed Pointer)

    형식화된 포인터에 세부적인 기능 조절을 더하고 제거하는 노력을 통하여 총 20여종의 주요 값 형식에 대한 형식화된 포인터를 제공하게 되었습니다. 이들 포인터 형식 모두는 외관상 CLS 표준 사양을 만족하도록 만들어졌으며 포인터 개념이 없는 프로그래밍 언어 (예: Visual Basic .NET, Visual J# 등)에서도 포인터 연산을 간접적으로 사용할 수 있게 디자인되어있습니다.

    • AutoCharPointer
    • BooleanPointer
    • BytePointer
    • DateTimePointer
    • DecimalPointer
    • DoublePointer
    • GuidPointer
    • Int16Pointer
    • Int32Pointer
    • Int64Pointer
    • IntPtrPointer
    • Pointer<T>
    • SBytePointer
    • SinglePointer
    • TimeSpanPointer
    • UInt16Pointer
    • UInt32Pointer
    • UInt64Pointer
    • UIntPtrPointer
    • WideCharPointer

    사용 빈도가 높을 것으로 추정되거나 기본 형식들에 대한 형식화된 포인터는 모두 제공하고 있습니다. 하지만 특정한 목적으로 직접 추가한 구조체에 대한 지원도 필요했고 경우에 따라서는 제네릭에 대응되는 가변 포인터에 대한 구현을 필요로 하였기 때문에 Pointer<T> 형식을 새로 추가하였습니다. 전용 포인터를 이용하여 계산하는것보다는 연산 횟수가 많다는것이 단점입니다.

    실제 메모리 구조의 크기를 조사해주는 unsafe sizeof() 연산자의 Managed 버전 제공

            [Test]
            public void NativeSizeOfTest1()
            {
                foreach (Type eachType in new Type[] { typeof(char), typeof(bool),
                    typeof(byte), typeof(DateTime), typeof(decimal), typeof(double),
                    typeof(Guid), typeof(short), typeof(int), typeof(long), typeof(IntPtr),
                    typeof(sbyte), typeof(float), typeof(TimeSpan), typeof(ushort),
                    typeof(uint), typeof(ulong), typeof(UIntPtr)})
                {
                    Console.WriteLine(">> {0} byte{1}", Utilities.NativeSizeOf(eachType),
                        Utilities.NativeSizeOf(eachType) > 1 ? "s" : String.Empty);
                }
            }

    위의 테스트 코드에서 나열한 형식들에 대한 sizeof 연산자의 결과를 반환해주는것이 NativeSizeOf 메서드입니다. 그 외의 형식들에 대해서는 Marshal.SizeOf의 결과를 반환합니다.

    NUnit 테스트 코드 프로젝트 시작

    프로젝트에 대한 검증을 수행하기 위하여 NUnit 프로젝트를 생성하고 테스트하면서 조금씩 진척을 시켜나가고 있습니다. NUnit 테스트 코드의 내용은 실제 적용에 많은 도움이 되는 예제 코드로도 활용이 가능하니 한번 살펴보시길 권합니다.

    향후 계획

    조만간 공식 릴리즈를 0.1 버전으로 런칭할 계획을 세우고 있습니다. 그리고 준비가 되는대로 Windows CE, Windows Mobile에 관한 API도 수집하여 데이터베이스화를 수행할 예정이니 관심있으신 분들은 블로그나 데브피아 등을 통하여 연락주시면 언제든 채널이 열려있으니 함께 하실 수 있습니다.

    프로젝트 홈페이지는 http://blendxplatform.codeplex.com 이며 누구나 체크아웃해가실 수 있습니다. 서브 버전, TFS 등을 이용하여 쉽게 받아가실 수 있습니다.

    Subversion 주소: https://blendxplatform.svn.codeplex.com/svn
    TFS 주소: https://tfs05.codeplex.com

     

     

    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by Windows Azure MVP 남정현 (rkttu.com)

    xPlatform의 Win32 API 영역 중에 Microsoft Visual C++ Runtime에 관한 정보 수집이 어느 정도 완료되었고 이것을 바탕으로 Phase #1을 이번달 말에 예정대로 런칭할 계획입니다. Visual C++ Runtime (msvcrt.dll)의 상당 수의 시그니처는 libc와 일치하는 것으로 보이며 이 중 몇 가지를 시험삼아 Linux 버전으로 옮겨서 작업 중입니다.

    아래의 동영상은 Asianux 2.0 SP1 기반의 PC에서 Mono 1.2.5.1_3을 이용하여 xPlatform DLL을 이용한 간단한 파일 입/출력 서비스를 보여주고 있습니다. 점진적인 테스트를 거쳐 Linux에서도 표준 파일 입/출력 서비스 및 기본 C 런타임을 사용할 수 있도록 준비할 계획입니다.

    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by Windows Azure MVP 남정현 (rkttu.com)

    Premium Sponsor:

    .NETers

    제 3회 .NETers 학술제

    • 2007년 12월 6일 ~ 2007년 12월 7일
    • 오전 10시 ~ 오후 6시
    • 인하대학교 하이테크 센터 1층 로비

    사용자 삽입 이미지

    2007년 11월 21일자 빌드 및 소스 코드가 현재 사용 가능합니다. 현재 진행 단계는 Phase #1이며 Phase #1의 최종 마무리는 올해 12월 말로 예정되어있습니다. 많은 피드백과 참여 부탁드리겠습니다.

    xPlatform은 Project Blend의 첫 프로젝트로서 Windows, Linux, Unix, Mac OS X 등의 운영 체제에서 사용하는 각종 C 언어 런타임 및 API 함수들에 대한 플랫폼 호출 문맥들을 수집한 라이브러리이며 Microsoft .NET Framework, Microsoft Rotor, Mono, DotGNU Portable .NET을 지원 대상으로하는 Lesser GPL 라이센스 기반의 오픈 소스 라이브러리입니다.

    Phase #1에서는 xPlatform의 다양한 가능성을 처음 저울질하는 단계가 될 것이며 다음의 기능들을 포함하고 있습니다.

    • 32비트 버전의 Microsoft Windows용 C Runtime Library에 대한 플랫폼 호출 서비스
    • 특정 프로그래밍 언어를 대상으로 하여 프로토타입 문맥들을 번역하여 제공하는 프로토타입 공유 서비스 (C#, Visual Basic .NET, Managed Extensions for C++ v1.x/v2.0 렌더링 엔진 포함 예정)

    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by Windows Azure MVP 남정현 (rkttu.com)

    C#의 __arglist는 MSIL로 번역되면서 Call Instruction에 varargs라는 추가 파라미터를 지정하는 방식으로 사용됩니다. gmcs 컴파일러에서는 Microsoft .NET Stack과의 호환성을 위하여 __arglist 키워드에 대한 정확한 처리를 수행하는 것 처럼 보입니다. 그러나 런타임에서 Microsoft .NET Framework의 경우 이것을 정확히 관리하고 있지만 Mono의 경우 가변 인수를 IL에서 사용할 수 없습니다. 이것은 __arglist가 표준 사양이 아니기 때문에 그렇습니다. 다음은 Mono에서 가변 인수 메서드를 호출할 때 발생하는 예외입니다.

    [CODE]
    [root@localhost ~]# mono test.exe

    Unhandled Exception: System.InvalidProgramException: Invalid IL code in Program:
    Main (): IL_0007: call        0x0a000001

    [root@localhost ~]

    [/CODE]

    그러나 가변 인수를 사용하지 않고 필요한 만큼 인수를 직접 선언하는 방법은 유효합니다. 다음과 같이 직접 필요한 인수를 지정하여 플랫폼 호출 선언을 지정하여 사용하는 경우 정상적으로 실행됩니다.

    [CODE]
    [DllImport("libc", CharSet = CharSet.Ansi, ExactSpelling=true)]
    public static extern int printf(string format, int testIntenger);

    [/CODE]

    xPlatform은 이 부분에 대한 문제 개선을 위하여 동적 플랫폼 호출 선언 관리 클래스를 별도로 구현할 예정에 있으며 이 클래스를 통하여 Mono의 __arglist 비호환성 문제를 비롯하여 타 언어에서도 가변 인수 메서드의 사용을 가능하게 할 것입니다.

    Issue Code: XP000002

    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by Windows Azure MVP 남정현 (rkttu.com)