Welcome to Dynamic C#(15) - A/S for dynamic.

C# 2010. 5. 3. 09:00 Posted by 알 수 없는 사용자

- 긴급 A/S 출동!

제가 글을 쓰면서 공부했던 내용들이 많이 바뀌었습니다-_- 그래서 저도 좀 뒤늦게 그 업데이트를 확인했구요~ 그래서 바뀐 내용에 대해서 A/S들어갑니다~~!


- 오버로드 판별 A/S!

아마 이 시리즈를 관심있게 읽어주신 분이라면!... 아흙 왜 또 눈물이... 아무튼 읽어주신 분이라면 유령메서드라는 걸 보셨을텐데요. 그게 너무 복잡하다보니, 유령메서드랑 관련한 내용은 하나도 채택되지 못했다고 합니다. 그리고 굉장히 간단한 규칙으로 정리를 했습니다. 만약에 어떤 메서드를 호출할 때 dynamic타입의 매개변수가 끼어있다면, 그 메서드에 대한 호출은 동적으로 디스패치된다는 것입니다. 그리고 런타임에서 dynamic타입의 매개변수의 실제값에 맞는 타입을 선택한다고 합니다.

class C
{
    static void M(dynamic d) { Console.WriteLine("dynamic"); }
    static void M(string s) { Console.WriteLine("string"); }
    static void M(int i) { Console.WriteLine("int"); }

    static void Main(string[] args)
    {
        dynamic d = "test";
        M(d);
    }
}


위와 같은 예제를 보면, M에 대한 호출은 런타임에 디스패치 됩니다. 그리고 어떤 M이 선택될지는 d의 실제값에 달여있는데요, 여기서는 d의 실제값이 string이기 때문에, 'M(string)'이 선택됩니다. 그러면, M(dynamic)은 어떻게 되는 걸까요? 바뀐 규칙에서 파라미터에서 dynamic타입이 있는 건, object타입이 있는것과 동일한 의미를 갖습니다. 즉 적합한 오버로드가 없을 때, 가장 나중에 선택이 되게 되겠죠.


- 대입형변환 A/S!

dynamic이 끼어있는 형변환 규칙도 약간의 변화가 있는데요, 그 규칙은 아래와 같습니다.

1. 모든 타입에서 dynamic타입으로 암시적 형변환이 가능하다. 기본적으로 object로 암시적 형변환이 가능한 타입이라면, dynamic으로도 암시적 형변환이 가능하다.

2. dynamic타입에서는 dynamic과 object를 제외한 다른 어떤 타입으로도 암시적 형변환이 불가능하다.

3. 하지만, 모든 '동적 표현식'은 다른 모든 타입으로 암시적 형변환이 가능하다.

4. 만약에 어떤 타입의 차이점이 dynamic과 object뿐이라면, 서로간에 암시적 형변환이 가능하다.

2, 3번에 대해서 좀 더 들여다 보면요, 타입의 형변환과 표현식의 형변환은 과연 뭐가 틀린걸까요? 일단 표현식의 형번환은 이때까지 '대입 형변환'이라고 불렀던 것을 가능하게 해줍니다. 예제를 하나 보면요.

string s = d;

이 형변환은 3번 규칙 때문에 성립합니다. 이 형변환은 동적 표현식에서 string으로의 형변환이지, dynamic타입에서 string으로의 형변환이 아니기 때문이죠. 이외에도 return, foreach, 프로퍼티에 값설정하기 등의 대부분의 경우는 이렇게 처리됩니다.

그렇다면 dynamic타입에서 string타입으로 형변환이 없어야 하는 이유는 뭘까요? covariance를 통해서 컴파일러가 이 형변환을 못하게 막는 걸 한번 확인해보겠습니다.

class C
{
    static void Main()
    {
        IEnumerable<dynamic> ied = null;
        IEnumerable<string> iei = null;
        var x = M(ied, iei);           
    }
    static T M<T>(IEnumerable<T> x, IEnumerable<T> y) { return default(T); } 
}

위 예제는 문제없이 컴파일 됩니다. 그리고 메서드의 타입유추 과정을 통해서 T를 dynamic이라고 골라내는 과정을 거칠텐데요, 그 과정은 아래와 같습니다.

1. 첫번째 매개변수는 IEnumerable<dynamic>이다. 그러므로 dynamic은 T의 후보가 된다.

2. 두번째 매개변수는 IEnumerable<string>이다. 그러므로 string은 T의 후보가 된다.

3. T의 후보군인 { dynamic, string }을 가지고 고민하는 과정에서 둘 사이의 관계를 보는데. string에서 dynamic으로의 형변환은 있지만, 그 반대는 성립하지 않는다. 그러므로 좀 더 일반적인 타입인 dynamic을 고르게 되는 것이다.

위 과정의 3번 단계에서 만약 dynamic에서 string으로 형변환이 가능했다면, 둘 중에 어떤 타입이 더 일반적인 타입인지를 결정할 수 없게 됩니다. 그렇다면 메서드 타입유추는 모호환 둘의 관계 때문에 실패하게 되겠죠. 그게 바로 dynamic에서 다른 타입으로의 형변환이 금지되어야 하는 이유입니다.

그리고 대입형변환이라는 용어는 아마 살아남지 못한 것 같습니다. C# 4.0 명세서에서 그 용어를 발견할 수 없었기 때문입니다. 그래도 혹시나 싶어서 Chris Burrows에게 질문을 남겨놨으니, 답이오면 반드시 알려드리겠습니다.


- 마치면서

앞서서 열심히 공부하고 적었던 내용이 바뀌고, 또 어떤 내용은 아예 통채로 날아가 버리니 아주 상쾌하네요~! 하하하-_- 그런데 바뀐 내용을 보니깐, 훨씬 간단하고 깔끔해지고, 더 이해하기 쉬워진 것 같아서 좋네요. 그럼 오늘은 여귀까쥐!


- 참고자료

1. http://blogs.msdn.com/cburrows/archive/2010/04/01/errata-dynamic-conversions-and-overload-resolution.aspx

Visual Studio Team Foundation Server 2010 설치 전 할일

Team Foundation Server 2010. 5. 3. 09:00 Posted by 알 수 없는 사용자

 

팀장 설득편 "VS TFS 2010" 이거 설치해봐1!!! - 설치 검토와  할일

 

반댈세 하는 팀장에게 드디어 설치를 보여줄 차례입니다. 사실 설치 전에 사전에 해야 하는 것은 다들 아시죠? 하드웨어의 준비입니다.

 

설치는 정말 단순합니다. 번째 설치하기 전에 설치 문서를 읽어 보면(아직 영문입니다 .) 설치 계정이나 환경에 대한 이야기가 있습니다. 여기서 설치 환경의 하드웨어 권장 사양을 확인합니다.

 

설치문서에 나온 권장 사양은 다음과 같습니다.

 

사용자

CPU

디스크

Memory

20 이하

1 개의 CPU

클럭 수 : 2.2 GHz

8 GB

2 GB

20 ~ 250 이하

1 개의CPU

클럭 수 : 2.6 GHz

230 GB

2 GB

250 ~ 450 이하

2 이상 CPU

클럭 수 : 2.8 GHz

500 GB

4 GB

450 ~ 2,200 이하

2 이상 CPU

클럭 수 : 2.8 GHz

31 GB ~ 136 GB

3.5 GB

2,200 ~ 3,600 이하

4 이상 CPU

클럭 수 : 2.2 GHz

31 GB ~ 136 GB

3.5 GB

 

정도 사양이면 현재 판매되고 있는 일반적인 서버라면 모두 괜찮다고 있지 않을까 합니다. Visual Source Safe 2005 대신해서 사용하기 위한 사양이라면   현재 사용하고 있는 서버라도 문제가 없다고 볼수 있습니다. 50 정도라 하여도 Disk 정도만 용량이 된다면 문제 없이 사용이 가능하죠. ^.^ 메모리는? 요즘 데스크탑도 4G 가는 중이라 서버에서 4G정도라면.. 문제가 없다고 있습니다.

 

이제 팀장에게 하드웨어는.. 쓰면 됩니다. 필요한 사항은 서버가 없다고 해도 된다고 하시면 됩니다.

 

그럼 이제 실제 설치에 필요한 계정은?

없습니다. 그냥 설치합니다.

 

설치 문서에는 계정에 대하여 설명이 되었습니다. Visual Source Safe 대신해서 사용할 분이라면

이계정은 그냥 넘어가셔도 됩니다. (추가 기능을 이용할 다시 계정을 설정할 있습니다.^^)

 

다시 팀장이 VS TFS 설치할 고생하던데? 특히 계정이 잘못되면 설치하고도 못쓴다는데? 괜찮겠게어?

 

답은 계정 설정은 필요없습니다.

       그냥 설치하면 ~ 이라는 것입니다.

 

이제 정말 설치 할일에 대하여 말해보겠습니다. 하드웨어는 준비되어 있다고 하면, 이제

 

당근 Windows 설치합니다. Windows Server 2003 SP2 / Windows Server 2003 R2 SP2

Windows Server 2008 / Windows Server 2008 R2

 

이렇게 지원합니다.

Windows Server 2003 에서는 Service pack 2 설치해야 하는 중요 포인트(?)입니다.

이제 Windows Server 2003 사용하는 곳도 있고 Windows Server 2008 사용하는 곳도 있을 겁니다.

 

요즘은 Windows Server 2008 R2 나오기 때문에 R2 기준으로 하겠습니다.

 

설치 전에 기본적으로 해주여야 하는것이 있습니다. 다른 것은 아닙니다.

.NET Framework 3.5 설치와 IIS(웹서버) 설치하시면 됩니다.

 

Windows Server 2008이상이라면 .NET Framework 3.5 이상이 이미 있기 때문에 별도 설치는 하지 않고 Windows에서 추가 기능 설치만 하시면 됩니다. IIS 서버도 마찬가지 입니다. 최신 서버인 Windows Server 2008 R2 64bit 지원하는데 이번 설치편은 Windows Server 2008 R2 에서 진행합니다.

(Windows Server 2008 32bit 에서도 똑같이 따라하시면 됩니다.^^)

Visual Studio Team Foundation Server 2010 를 설치해보자

Team Foundation Server 2010. 5. 3. 08:30 Posted by 알 수 없는 사용자

Visual Studio Team Foundation Server 2010 이거 사용하기도 설치하기도 힘든거 아냐??

 

Visual Studio 2010 드디어 정식 제품으로 나왔습니다. 그러면서 제품이름의 변화가 왔습니다. 제품이름의 변화가 단순히 쉽게 구분하기 위한 것일까요?

 

처음 사용자를 접하는 Express Edition 제품군을 제외한 거의 모든 제품이 이제 Team Foundation Server 연결되는 것은 기본이라는 것입니다.

 

그렇다면 Visual Source Safe??? 계속 안나오는거??

 

Visual Studio 2008 부터는 Visual Source Safe 나오지 않았습니다. Visual Source Safe 사용하기 위해서는 Visual Studio 2005 DVD 있거나 별도의 설치 프로그램으로 Visual Source Safe 2005 설치해서 사용하였습니다.

 

그럼 이제 이상 2008 부터 나오지 않는 Visual Source Safe 대신하는 것이 무엇이 있을까?

~

부분의 개발자들은 여기서 한마디 합니다. SVN, CVS Open Source 사용할거야.

 

이유? 그건 아래와 같은 "불편한 점도 있고 하니.. 그냥 Source safe Open Source 그냥 써야 겠다." 하고 생각하는 사람이 많았습니다.

 

첫째. 설치하기 어렵다.

둘째. Active Directory 알면 좋다는데 이거 또는 회사는 사용하지 않는다.

셋째. SQL 설치해야 한다. 그렇지만? 우리 회사는 SQL 라이선스가 없다.

넷째. SQL 리포트 인가 하는 뭔가 있다고 하는데 이건 뭐지?

다섯째. SharePoint 설치해야 한다. ~ 이건 옛날에 설치하거나 보니 우리회사하고 안맞는데……. 아님.. . SharePoint 울렁증은???

여섯째. Team Foundation Sever 설치 가이드에 무슨 계정이 이렇게 복잡한거지? 힘들다.

일곱째. 설치 했는데? 아무것도 없다. Visual Studio 에서 뭔가 하라는데? 권한 이런것은 어디서? 사용하기 .. 그렇다.?

…….

 

그래서 사용하기도 전에 포기하는 경우도 있고, SharePoint라는 복병(?) 만나면서 다시 포기, 설치하면서 계정 복잡한것을 보고 포기 앞에서 설명한 이유 말고도 여러 이유로 Team Foundation Server 사용하지 않고 포기합니다.

결국 다시 Visual Source Safe 돌아가거나 Open Source 프로그램을 사용하기도 합니다.

 

Microsoft에서는 이제 이런 문제를 깨끗하게 날려버렸다? 라고 만큼 Visual Studio Team Foundation Server 2010 변화를 주었습니다.

 

설치 - 정말 단순하다.

설치 사용자 계정 - 몰라도 된다. (알면 좋고)

설치 구성 - 단순으로 구성하면 아무것도 따지지도 않고 물어보지 않습니다.

SQL - Express 버전 부터 사용한다.

SQL 기능 - 리포트? 분석? 그것은 추후 익숙해 지고 필요해 지면 추가 설치하고 사용할 있다.

SharePoint - 설치 안해도 된다.

관리자 - 새로운 Visual Studio Team Foundation Administration Console 라는 관리도구가 있다.

 

~ 이제 앞의 고민들이 사라진다고 있습니다.

Visual Source Safe 2005 이용하여 소스 관리를 하는 개발자들이 이제 쉽게 Visual Studio Team Foundation Server 2010 사용하여 소스 관리와 함께 쉽게 사용할 있는 것을 이제 부터 소개 하겠습니다.

 

이제 Visual Studio Team Foundation Server 2010 도입해되 됩니다..

 

하면

 

울팀 팀장이 " 반대일세~ 이유는 알지?"

하는 이런 분들이게  왜요??라고 물어보십시요?(이렇게 물어보시면.. 한대 맞습니다 .)

이유는 앞에 이유라면…. 이제 부터 나오는 내용을 보시면,

? 이게야? Visual Studio만이 아니라 다른 곳에서도 쉽게 사용할 있네. ~~ 개발자에게 딴거 설치안해도 여기서 되네?

 

글구 가장 중요한 ..

? 뭐야 질질이 안듣고, 도대체가 믿을(?바로 .) 꼬맹이가 개발자가 어떠까지 개발했는지 물어봐도 되는구 푸하하하

 

좋아~~ 이거 ~~~ 있다는 것입니다.

 

앞에서 제가 설명한 이유를 말씀하시고 정말 쉽고 단순하게 사용할 있도록 보여 주십시요.

 

"앞으로 설치 부터~ Source Safe 처럼 소스 관리하는 까지 별도의 추가 설치, 구성 없이 일단 한번써봐" - .. 약장수 같은. . -

 

라고 말씀 드리겠습니다.

 

그럼 이제 설치 부터 시작하겠습니다.