[Visual Studio 2010 SP1] HTML5, CSS3 지원

Visual Studio 2010 2011. 6. 17. 08:00 Posted by POWERUMC

처음 Visual Studio 2010 릴리즈 되었을 때는 HTML5 기능이 추가가 되지 않았습니다. 그래서 XML Schema 를 이용하는 방법으로 HTML 텍스트 에디터에서 HTML5 구문을 사용하기도 하였습니다. 하지만 이번 Visual Studio 2010 SP1에는 정식으로 HTML5 인텔리센스와 유효성을 검사할 수 있는 기능이 추가가 되었습니다.

이 기능을 활성화하기 위해서 도구->옵션의 텍스트 에디터->HTML->유효성에서 HTML5 유효성 검사를 지정할 수 있습니다.

HTML5가 지원하는 여러 구문을 인텔리센스에서 자연스럽게 보여줍니다.

더불어 CSS3 를 완벽하게 지원하지는 않지만, 일부분 CSS3를 지원해 줍니다. CSS3 기능은 앞으로 그 기능을 보강할 수 있는 확장 기능으로 Visual Studio Gallery 에서 배포가 되길 기대해봅니다.


배포 가능한 종속성(Deployable Dependencies) 는 이번 Visual Studio 2010 SP1 에서 새롭게 추가된 기능입니다. 웹 응용 프로그램을 서버로 배포하기 위해서는 필수 구성 요소들이 설치가 되어 있어야 하는데, 배포 가능한 종속성 기능을 이용하면 웹 응용 프로그램이 동작에 필요한 일부 컴포넌트를 바로 배포할 수 있도록 도와줍니다.

웹 응용 프로그램에서 마우스 오른쪽 버튼을 클릭하여 컨텍스트 메뉴를 활성화하면 다음과 같은 메뉴 항목이 추가가 되어 있습니다.

메뉴 항목을 선택하면 아래와 같은 창이 나타납니다. 이 창에서는 ASP.NET MVC3 에서 사용하는 Razor 컴포넌트와 SQL Server Compact 를 선택할 수 있습니다.

위와 같이 배포 시 포함할 종속된 어셈블리/컴포넌트를 선택하여 확인 버튼을 클릭하면, 다음과 같이 웹 응용 프로그램 프로젝트에 _bin_deployableAssemblies 폴더가 생성이 되고, 이 하위에 관련된 어셈블리가 추가가 됩니다.

웹 응용 프로그램을 게시를 하게 되면, 위의 _bin_deployableAssemblies 폴더의 어셈블리는 웹 응용 프로그램의 bin 폴더로 배포가 됩니다.

물론, 웹 배포 패키지로 .ZIP 파일로 생성을 하여도 종속성을 추가한 어셈블리는 BIN 폴더에 추가가 되며, 이 패키지를 이용하여 배포할 서버에 컴포넌트의 설치 없이 바로 배포할 수 있습니다.

다만 현재는 여러 가지 배포 어셈블리/컴포넌트를 지원하지 않고 아래의 3개지의 컴포넌트만 배포를 지원해 줍니다.

  • ASP.NET Web Pages / Razor
  • SQL Server Compact 4.0
  • ASP.NET MVC 3

Razor 지원

ASP.NET MVC3 가 릴리즈 되면서 이에 발맞추어 Visual Studio 2010 SP1이 개발 도구에서 ASP.NET MVC3를 지원합니다. 특히 ASP.NET MVC3 Beta 버전에서는 지원하지 않았던, ASP.NET MVC3의 중요한 기능 중의 하나인 Razor View Engine인데, Razor View Engine의 Syntax 및 Intellisence 도 함께 지원합니다.

새로운 프로젝트를 만들 때 ASP.NET MVC3 프로젝트 템플릿에서 Razor 뷰를 선택하면 Razor View Engine을 사용할 수 있습니다.

더불어 일반 ASP.NET MVC3의 ASPX 페이지 또한 새로운 뷰를 추가할 때 Razor 뷰로 추가하면, 기존 ASP.NET MVC3의 Razor Engine을 그대로 사용할 수 있습니다.

Web Platform Installer 통합

Visual Studio 2010과 Web Platform Installer(WPI) 가 통합이 되었습니다. Visual Studio 2010에서 WPI를 바로 실행할 수 있는 툴바가 추가 되었습니다.

WPI를 통해 아래의 최신 제품을 다운로드 받을 수 있습니다.

  • SQL Server Compact 4.0
  • IIS 7.5 express
  • ASP.NET MVC3
  • WebMatrix
  • 기타…


[STL] 14. VC++ 10에 추가된 새로운 컨테이너 forward_list – 소개편

C++0x 2011. 6. 14. 09:30 Posted by 알 수 없는 사용자

앞에까지는 STL의 알고리즘에 추가된 것들을 다루었는데 이번에는 컨테이너 하나를 소개하겠습니다. 사실 이 컨테이너는 저도 얼마 전까지만 하더라도 새로 추가 된지 몰랐습니다.^^;

 

새로 추가된 컨테이너의 이름은 forward_list입니다.

이름을 들어보니 대충 어떤 컨테이너인지 감이 오시죠?^^ 네 이 컨테이너는 기존의 list 컨테이너와 비슷한 종류의 컨테이너입니다.

 

 

forward_list를 만든 이유

표준 라이브러리(STL)에는 이미 리스트(std::list) 라이브러리가 있습니다. 이것은 쌍 방향 리스트입니다. list는 사용하기는 편하지만 사용 메모리나 처리 속도에 조금 아쉬운 점이 있습니다. 또 대 부분의 상황에서 쌍 방향 리스트가 필요한 경우보다는 단 방향 리스트만으로 충분한 경우가 자주 있습니다. 이런 이유로 C++0x에서는 단 방향 리스트를 추가하기로 했습니다.

 

 

forward_list의 설계 방침

1. 특별한 이유가 없다면 forward_list는 기존의 list의 설계에 맞춘다.

2. 설계 상의 선택 기가 여러 개인 경우 성능(속도와 사이즈)을 최우선 한다(C의 구조체로 구현하는 경우와 비교하여 Zero Overhead로 한다).

3. std::list insert eraseforward_list에서도 제공할 수 있지만 구현이 복잡해지고 성능 측면에서 좋지 않으므로 제공하지 않는다.

4. 다른 STL의 컨테이너들에 있는 size 함수를 제공하지 않는다. 이유는 요소 수를 보존하는 멤버를가지고 있으면 C언어에서 구현한 것과 비교해서 불필요한 메모리를 사용한다. 만약 이런 멤버를 가지고 있지 않으면서 size 함수를 지원하면 호출할 때마다 모든 요소를 세어야 하므로 계산량이 O(N)이 된다(그런데 유저는 다른 컨테이너와 같이 size의 계산량이 작을 것이라고 생각할 수 있다). 또 이미 unordered와 같은 연상 컨테이너도 기존의 요소를 만족하지 않고 있다.

 

 

STL list 컨테이너와 다른 점

forward_list는 기존의 list와 아래와 같은 점이 다릅니다.

1. forward_list는 단 방향 리스트(singly-linked-list)이다. 각 요소는 그 다음 요소를 가리키는 포인터를 하나만 가지고 있다(list은 양 방향 리스트).

2. (단 방향 리스트이므로) list에 비해서 메모리를 작게 사용한다. 이것은 각 요소의 메모리만이 아닌 컨테이너 그 자체의 사이즈도 작다. int 형에 대해서 list 12바이트라면 forward_list 8바이트이다(64비트에서는 각각 24, 16).

3. list에 비해 삽입/삭제 속도가 더 빠르지만 그 차이는 크지는 않다

4. 한 방향으로만 이동할 수 있다.

5. 삽입과 삭제는 지정한 요소의 다음 요소만 가능하다.

 

 

forward_list의 멤버 리스트

기능

멤버

대입

assign

반복자

befor_begin

 

cbefore_begin

 

begin

 

end

 

cbegin

 

cend

비었는지 조사

empty

현재 크기(size)

지원 안함

사이즈 변경

resize

모두 삭제

clear

선두에 추가

push_front

선두 요소 삭제

pop_front

선두 요소 참조

front

삽입

insert_after

삭제

erase_after

조건 삭제

remove

 

remove_if

중복 요소 삭제

unique

교환

swap

병합

merge

정렬

sort

반전

reverse

 

기본적으로 웹 응용 프로그램을 개발할 경우 로컬에서 동작하는 ASP.NET Development Server 가 활성화가 됩니다.

그림 1 로컬 ASP.NET Development Server 가 동작하는 화면

웹을 개발할 때 Visual Studio가 제공하는 로컬에서 동작하는 ASP.NET Development Server 로 충분히 어려움 없이 개발을 할 수 있으나 웹 개발의 여러 가지 상황을 고려해 보면 기능이 충분하지는 않았습니다.

예를 들면, 기존의 로컬에서 동작하는 ASP.NET Development Server는 특정 웹 페이지나 XML 웹 서비스, WCF 서비스가 SSL(Secure Sockets Layer)로 동작한다거나 WCF의 NET.TCP, NET.PIPE 등의 바인딩을 사용할 수 없었습니다.

이런 여러 가지 기능적으로 IIS Express 를 사용할 경우 얻을 수 있는 이점이 많고, 기존 웹 응용 프로그램을 IIS Express에서 동작하도록 변경하기 위한 절차 또한 매우 간단합니다.

IIS Express가 설치되어 있다면, 웹 응용 프로그램에서 마우스 오른쪽 버튼을 클릭하여 IIS Express 사용을 선택하면 즉시 IIS Express 에서 웹 응용 프로그램이 동작하도록 할 수 있습니다.

그리고 다음의 확인 메시지에서 '예'를 클릭하면 바로 IIS Express로 웹 응용 프로그램을 개발할 수 있습니다.

IIS Express는 윈도우의 알림 영역에서 찾을 수 있으며 이 아이콘을 이용하여 여러 개의 호스팅 되고 있는 웹 응용 프로그램을 관리할 수 있습니다.

IIS Express를 사용하여 Visual Studio 2010에서 여러 가지 설정을 즉시 변경해 줄 수 있습니다.

그림 2 IIS Express 설치시 웹 응용 프로그램 속성

그림 3 기존 ASP.NET Development Server 속성

IIS 7과 IIS Express 버전의 비교표:

Area

IIS 7

IIS Express

Shipping mechanism

Ships with the OS.

Ships out-of-band. It is automatically included with WebMatrix but can also be installed separately.

Supported Windows editions

Limited number of Windows Vista and Windows 7 editions

Most editions of Windows Server 2003, 2008 and 2008 R2

All editions of Windows XP, Vista, Windows 7

All editions of Windows Server 2008 and 2008 R2

Supported .NET Framework versions

v2.0 SP1 and above

v2.0 SP1 and above (.NET 4.0 is required).

Supported programming languages

Classic ASP, ASP.NET, and PHP

Classic ASP, ASP.NET, and PHP

Process model

Windows Process Activation Service (WAS) automatically manages configured sites.

User launches and terminates sites.

Hosted WebCore (aka Hostable Web Core) support

Yes

Yes. IIS Express is implemented as a layer over HWC.

Supported protocols

HTTP, FTP, WebDAV, HTTPS, and WCF (including over TCP, Named Pipes, and MSMQ)

HTTP, HTTPS, and WCF over HTTP

Non-admin support

WAS must run with administrator user rights.

A standard user is allowed to complete most tasks.

Multi-developer support

None

Yes. Configuration files, settings, and Web content are maintained on a per-user basis.

Visual Studio support

Yes

VS 2010 SP1 Beta allows IIS Express to be used instead of Cassini. VS 2008 can also be manually configured to use IIS Express.

Runtime extensions

See http://www.iis.net/download/All for a complete list.

URL Rewrite and FastCGI. These extensions are built into IIS Express.

Management tools

IIS Manager, appcmd.exe

Appcmd.exe. Common IIS Express management tasks are also built into WebMatrix and Visual Studio 2010 SP1 Beta.

System tray support

None

Yes

Includes built-in IIS 7x modules for authentication, authorization, compression, etc.

Yes

Yes

IIS Express를 설치하기 위해 WPI(Web Platform Installer) 다운로드 페이지

http://www.microsoft.com/web/gallery/install.aspx?appid=iisexpress

그림 4 Web Platform Installer 초기 설치 화면

그림 5 기본적인 구성 요소인 IIS Express 설치 화면


본격 TFS 스릴러, 쏘울(3) - 신의 한 수.

Team Foundation Server 2011. 6. 13. 09:00 Posted by 알 수 없는 사용자

- Previously on TFS Thriller Ssoul.

쏘울의 컬렉션을 연결하는 데 성공한 보람과 세식. 덤앤 더머, 반짝반짝 모래알 같은 그들도 뭉치니 미션을 해결할만한 지혜는 나오는 듯 하다. 초보자를 고려한듯 친절하게 아주 천천히 조금씩 교모해지는 쏘울의 미션. 그들은 집에 갈 수 있을까?


- 신의 한 수.

자 이제 쏘울이 또 뭐라고 하는지 들어볼까?”

왠지 집에 가라고 할 거 같아서 두근두근 거리는데?”

퍽이나

fu**?”

? mot*** fu**?”

(저자 주 : 발음을 잘 해보시면, 이해 가능한 하급 말장난 패턴입니다. 방송심의위원회의 규정을 준수하기 때문에 별표처리한 것 양해바랍니다.)

폭풍 같은 개드립이 휩쓸고 지나간 자리는 적막만이 감돌았다.

우리 쏘울 이야기나 들어볼까.”

그러지

2번 동영상 파일을 재생했다. 이제 조금씩 익숙해지는 쏘울의 오토튠 목소리.

그래그래그래. 여기까지 잘 온 거 같군. 자네들도 바보는 아닌 거 같애. 자 그럼 이번에는 재밌는 퍼즐을 하나 풀어볼까? 나름 쏘우 패러디인데 퍼즐 하나 없으면 섭하겠지? 자 지금부터 퍼즐을 설명할 테니 잘 들으라고. 과제물 폴더의 Lab2폴더를 열어봐. 그러면 List라는 텍스트파일이 있어 그걸 열어봐.”


어때? 익숙한 C#코드가 보이지? 자 이제, 비주얼 스튜디오로 가서 아까 다운로드한 프로젝트를 열어봐.”


"
그래 내 애정이 담긴 환영 메시지가 보이겠지. 감동의 눈물은 잠시 접어두라고. 자 그럼 저 환영 메시지를 지우고, 아까 내가 준비한 텍스트파일 안의 내용을 거기다 붙여."


좋아 다 되었겠지. 이제 퍼즐을 설명해주지. 두 목록을 하나의 목록으로 합쳐야 하네. 아이디 목록의 첫 번째 항목과 이름 목록의 첫 번째 항목, 그리고 다음은 두 번째 항목끼리 그렇게 말이지. 그리고 합친 목록의 항목을 한 줄에 하나씩 출력하는 거야. 각 항목의 속성들은 쉼표로 구분해서 말이지. , 해서는 안 되는 게 몇 가지 있어. 작성한 코드를 절대로 지워서는 안되네. 한 번의 체크인과 두 번의 변경 내용 취소로 코드 작성을 완료해야 하네. , 백 스페이스 키나 delete키를 눌러서는 안 된다는 거지. 그리고 배열의 인덱스를 사용해도 안 돼. 그리고 마지막으로 Main메서드 안의 코드는 10줄 이내여야 하네. 이 제약사항만 지키면 되는 거지. 그럼 행운을 빌어.”

난생 처음 받아보는 황당한 요구사항에 둘은 잠시 생각에 잠겨 허우적 대고 있었다. 그리고 세식이 먼저 말문을 열었다.

그러니까 집에 안 보내 준다는 거네?”

너 예전에 천국이 너네 집이라고 했었지? 지금 당장 입주할래?”

왜 그러냐능!! 가정이 있는 몸 이해 못하냐능!!”

그래~ 빨리 집에 가야 되니까 이거부터 해결하자고~”

그래! 집에 가야지! 합시다!”

잠깐 생각하는 시간을 갖고, 이번에도 세식이 먼저 입을 열었다.

그럼 일단 지금 상태로 체크인 해두자. 코드 지우지 말라고 했으니까 초기 상태는 저장해놔야 다시 시작을 하지.”

, 좋은 생각이군.”


오케이 체크인은 됐고. 이제 둘을 합쳐야 되는데.”


무의식 중에 for문을 작성하던 보람은 소스라치게 놀랐다.

“꺄악!!! 어머나!!!!!!!!!”

야 인덱스 쓰지 말라 그랬자나~ 왜 그러셩~”

일단 다시 원상 복구 시키자고…”


오케이 다시 돌아왔다.”

이제 변경 취소 한번 남았군.”

두 목록을 합쳐야 하는데 인덱스를 사용하면 안된다라... 그럼 LINQ를 사용하라는 말인 거 같은데.”

“LINQ는 니가 더 잘알잖아. 뭐 좋은 거 없어?”

이게 두 목록을 하나로그리고 각 목록의 항목을 하나로 합치면서뭔가 기억날 듯 말 듯 하네.”

봐바. 여기 각 목록이 나란히 일렬로 있다고 했을 때, 순차적으로 각 목록의 항목이 하나씩 만나서 새로운 항목을 만든다는 거잖아? 이런 거 처리하는 거 없어?”

오호설명을 들으니 Zip이 생각나는데?”

그렇게 코드를 조심조심 심사숙고하며 작성해 나가기 시작했다.

우선 결과로 나오는 타입이 기존에 존재하지 않는 타입이니까 var타입으로 받고, 아이디 목록을 기준으로 이름 항목을 가지고 하나씩 붙이게…”


항목을 합치는 람다식이 첫 번째 목록의 항목과 두 번째 목록의 항목을 받아서 TResult라는 타입의 새 항목을 만드는 거니까…”


이렇게 작성하고, foreach로 출력하면 되겠군.”


~ 작성 끝? 확실한 겨?”

아마그렇지 않을까?”

떨리는 손으로 ctrl+F5를 누르자.


오케이. 떴다!”

…..”

근데 있잖아이거 샘플 데이터를 유심히 보니, 쏘울의 취향을 알 것도 같은데…?”

뭔데?”

일단, 콩과 2는 홍진호를 가리키는 거고, 한승연은 스타 팬들의 1대 아이콘, 아이유는 2대 아이콘 이었단 말이지. , 쏘울은 스타에 매우 열광하는 사람이 아닐까 하는 거고…”

원빈이랑 김두현은?”

글세 원빈은 잘 모르겠고김두현은 수원 블루윙즈 선수이고, 등번호가 4번이었단 말이지. 그러니까 수원 서포터가 아닐까 하는 생각이 드는 군.”

그래서 누군지 알겠엉?”

전혀.”

왜 아는 거 처럼 말해?”

어쩌라고.”

쏘울의 미션을 또 하나 해결한 보람과 세식. 과연 집에는 언제쯤

실버라이트 4 이전의 버전에서 Visual Studio에서 성능 프로파일을 지원하지 않은 것은 아닙니다. 다만, 개발 도구에서 지원하지 않았을 뿐이고, Command Line을 이용하여 브라우저를 Attached 하여 성능 프로파일을 할 수 있었습니다.

물론, 예전에도 실버라이트에서 성능 프로파일링을 위해 커맨드 라인으로 프로파일링을 할 수 있었습니다. 아래와 같은 순서대로 커맨드를 실행하면 되었습니다.

  1. VSPerfClrEnv /sampleon
  2. "c:\Program Files (x86)\Internet Explorer\iexplore.exe" C:\Breakout\Breakout\Bin\Release\TestPage.html
  3. VSPerfCmd /start:sample /output:MyFile /attach:<PID of iexplore.exe process>
  4. Run your scenario
  5. VSPerfCmd /detach
  6. VSPerfCmd /shutdown
  7. VSPerfClrEnv /off

이번 Visual Studio 2010 SP1에서는 개발 도구에서 직접 성능 프로파일을 지원합니다. 번거로이 Command Line을 사용할 필요 없이, 기존의 성능 프로파일의 사용 경험을 그대로 실버라이트 4에 적용할 수 있습니다.

Visual Studio 2010의 분석->성능 마법사 시작 메뉴를 클릭하여 실버라이트 응용 프로그램을 프로파일링 할 준비를 합니다.

아래와 같이 성능 프로파일을 시작하면 성능 마법사 페이지가 실행됩니다.

  • CPU 샘플링
    예를 들어, 많은 데이터 작업이나 UI요소 핸들링에서 CPU에 얼만큼의 부담을 주는지 측정할 수 있는 방법입니다.

  • 계측
    관리되는 응용 프로그램이 런타임에 얼마만큼의 리소스와 실행 시간을 갖는지 측정할 수 있습니다. 모듈/클래스/메서드 수준에서 성능을 측정할 수 있는 방법입니다.

  • .NET 메모리 할당
    관리되는 응용 프로그램이 얼만큼의 메모리를 소비하고, 가비지 컬렉션(Garbage Collection) 되는지 등의 수준 높은 메모리 정보를 제공합니다.

  • 동시성
    운영체제 차원에서 메모리의 교착 및 컨텍스트 스위칭(Context Switching)을 관찰하고 다른 프로세스에 어떤 영향을 받는지 Low Level의 정보를 제공합니다.


필자는 CPU 샘플링을 선택하였고, 2단계 페이지에서는 어떤 응용 프로그램을 프로파일링 할 지 선택합니다. 만약 솔루션 탐색기에 로드 되지 않은 프로젝트는 실행 파일(.EXE) 형태의 파일을 선택하면 소스 코드 없이 다음 단계로 이동할 수 있습니다.

3단계 마법사 페이지는 즉시 프로파일링을 시작할지 여부를 선택합니다. 기본 설정으로 마침을 선택하면 선택한 프로젝트 또는 실행 파일을 실행하고 프로파일링을 시작하게 됩니다.

응용 프로그램이 실행되면 다양한 테스트 시나리오로 테스트를 진행하고, 응용 프로그램을 마치면 수집된 프로파일링 정보로 프로파일링 결과 페이지를 볼 수 있습니다.

화면의 좌측 상단의 뷰를 변경하면서 성능 구간을 다양한 측면에서 분석을 할 수 있습니다.


Visual Studio 2010에서 단위 테스트 프로젝트를 생성하면 .NET Framework 4.0 의 단위 테스트 프로젝트를 지원했습니다. 단위 테스트 프로젝트를 .NET Framework 3.5 로 변경을 하게 되면 올바로 단위 테스트가 수행되지 않았던 문제가 있었습니다. 바로 아래와 같이 .NET Framework 버전을 변경하게 되면 발생하는 오류 메시지입니다.

그림 1 Visual Studio 2010에서 .NET Framework 3.5 로 변경할 경우

때문에 MSBuild 4.0으로 .NET Framework 3.5 빌드 및 테스트를 하게 되면 올바르게 빌드가 되지 않는 문제가 있었습니다.

필자 또한 이러한 문제로 인하여 다음과 같은 불편한 과정을 겪어야 했습니다.

참고

VS2008 을 VS2010 에서 동시에 개발하기

http://blog.powerumc.kr/314

VS2008 과 VS2010 동시에 개발하기 : 테스트 프로젝트가 포함 될 경우

http://blog.powerumc.kr/315

Visual Studio 2010 SP1은 이제 .NET Framework 3.5 버전의 단위 테스트도 지원이 가능하게 되었습니다.

그림 2 Visual Studio 2010에서 .NET Framework 3.5, 4.0 모두 단위 테스트 지원

다만, Visual Studio 2010 SP1은 .NET Framework 3.5까지 단위 테스트 프로젝트를 지원하며, 그 이하(.NET Framework 2.0, 3.0) 단위 테스트는 지원하지 않습니다.


Visual Studio 2010 SP1 의 실버라이트 4 개발 환경

Visual Studio 2010 SP1은 실버라이트 4 개발자 툴 킷이 포함이 되어 바로 실버라이트 4 개발을 할 수 있습니다.

그림 4 실버라이트 프로젝트 템플릿 선택

기존의 실버라이트 프로젝트 템플릿을 선택하여 프로젝트를 생성하면, 실버라이트 버전을 선택하여 원하는 실버라이트 버전으로 개발을 할 수 있습니다.

그림 5 실버라이트 버전 선택

실버라이트 4는 많은 사용자의 요구 사항과 코어의 변화가 있습니다. 자세한 내용은 아래의 링크를 ㅋ통해 MSDN 을 참고하십시오

참고

Silverlight 4의 새로운 기능 http://msdn.microsoft.com/ko-kr/library/dd772166(v=vs.95).aspx

실버라이트 4 의 새로운 기능

  • 컨트롤
  • 브라우저 외부에서 실행
  • 미디어
  • 네트워킹
  • 인쇄
  • 사용자 인터페이스
  • XAML
  • 데이터
  • 응용 프로그램 모델
  • 코어
  • Silverlight 디자이너
  • Windows Forms 플랫폼 지원
  • 관련 항목

본격 TFS 스릴러, 쏘울(2) - 쏘울 컬렉션.

Team Foundation Server 2011. 6. 8. 15:42 Posted by 알 수 없는 사용자
- Previously on TFS Thriller Ssoul.

덤 앤 더머 같이 심각한 상황에서도 농담따먹기 하면 클릭클릭으로 난관을 해쳐가던 보람과 세식. 그들 앞에 쏘울의 두번째 미션이 떨어졌다. 미리 만들어서 분리해놓은 팀 프로젝트 컬렉션이 있으니 그걸 연결하고, 그 안에 저장된 소스를 다운로드 하라는 것.


- 쏘울 컬렉션.


근데 팀 프로젝트 컬렉션이 뭐냐?”

글세 컬렉션이니까, 뭐 이렇게 모아놓은 걸 컬렉션이라고 하잖아? 그러니까 팀 프로젝트를 모아 놓은 걸 말하는 거 아닐까?”

오오미 세식이가 이렇게 똑똑할 줄이야.”

여러분 이게 바로 박세식입니다.”

적절한 패러디로군.”

내가 좀 적절하지. 야 그건 이제 됐고, 빨리 컬렉션 파일이나 찾아보자. 나 빨리 집에 가야 돼.”

보람은 세식의 귀소본능을 뒤로하고 C드라이브의 과제물과 Lab1폴더를 열었다.


"음
. 일단 데이터베이스 파일이네. 일단은 SQL서버에 연결해봐야 겠다."

여기 친절하게 매니지먼트 스튜디오 설치 파일도 같이 넣어놨고만. 웃어야 할지 모르겠다.”

보람과 세식은 우선 매니지먼트 스튜디오를 설치하고, Tfs_ssoul 파일을 데이터베이스에 연결하기 시작했다.


오케이 연결은 끝났고 이제 TFS에서 연결해야 되는데, 어떻게 해야 되는 걸까

여기 TFS 관리 콘솔 인가 하는 거 있네, 관리 작업이니까 여기서 하는 거 아닐까?”


오오미 좋은 생각이군. , 여기 팀 프로젝트 컬렉션 항목이 있네.”

여기 보니까 컬렉션 연결이 있는데? 이거 아닌가?”

눌러 보지 뭐


오 데이터베이스 자동으로 찾아주는데? 역시 로컬에 같이 깔아놓으면 편하구만


준비 검사 통과 좋고

오케이, 연결 완료. 안에 팀 프로젝트가 뭐가 있나 볼까.”


"이름 짓는 거 참 특이하고만
. ssoulTeam이라…"

일단 이거 비주얼 스튜디오에서 여는 게 급선무로군.”

“아! 나 예전에 누가 이거 쓰는 거 봤는데 팀 탐색기 안에서 연결하고 하는 거 같더라.”


"오호 좋은 정보 감사
. 팀 탐색기에.. 팀 프로젝트에 연결이라는 버튼이 있군."


오케이 이렇게 팀 프로젝트 컬렉션 선택하고 연결


와 연결 됐다. 이제 소스 코드만 다운 받으면 되지?”

. 소스 코드는 아마도 소스 제어쪽에서 가능할 거 같은데더블 클릭하면 열리겠지?”


오 열렸다.”

로컬 경로라는 부분이 눈에 확! 들어오는 데.”

나도 확! 들어온다. 눌러봐


오케이 맞는 거 같네. 로컬 경로 어디에 다운하라고는 안 했으니까 그냥 C ssoulTeam 폴더로.”

좋아 좋아. 끝이다.”

. 고생했네 친구.”

뭐 고생은 같이 했지.”

그럼 우리 이제 집에 갈 수 있는 거야?”

그러니까 그건 쏘울 마음이라고.”

과연 두 친구는 이 방을 나가서 집으로 갈 수 있을까.(BGM - 인생 극장 엔딩)

[Visual Studio 2010 SP1] Help Viewer 1.1

Visual Studio 2010 2011. 6. 8. 08:30 Posted by POWERUMC

웹 브라우저 도움말이 데스크탑 응용 프로그램으로 변경

Visual Studio 2010 이전의 도움말 설명서(Help Documentation) 은 별도의 클라이언트 응용 프로그램으로 구동되었습니다. 하지만 Visual Studio 2010버전에서는 웹 브라우저를 통해 MSDN Online과 같은 화면으로 도움말 설명서가 로컬 웹 서버를 통해 구동이 되었습니다.

그림 1 Visual Studio 2008 도움말 설명서

그림 2 Visual Studio 2010 로컬 웹 도움말 설명서

두 가지 방식의 장단점은 다르겠지만, Visual Studio 2010 로컬 웹 도움말 설명서는 입력한 내용의 인덱스를 보여주지 않아 매우 불편했었습니다. 클래스 이름이나 네임스페이스 이름으로 검색할 때 AJAX 기술로 키워드의 인덱스를 보여주었더라면 그나마 좋았을 텐데 하고 불편함을 감수하기도 하였습니다.

Visual Studio 2010 SP1 에서는 로컬 웹이 구동되고 키워드가 인덱스 되지 않는 부분을 개선하여 기존의 로컬 도움말 설명서로 개선이 되었습니다.

그림 3 Visual Studio 2010 SP1 의 로컬 도움말 설명서

기존의 Visual Studio 2008 과 유사한 로컬 도움말 설명서 응용 프로그램으로 구동이 됩니다. 다만, 필자는 색인 창을 오른쪽에 도킹하여 쓰는데, 현재 Visual Studio 2010 SP1 에서는 도킹 기능은 제공하지 않습니다.

개선해야 할 점

기존의 웹 브라우저 방식보다 Help Viewer 1.1 이 낫긴 하지만, 여전히 사용자의 측면에서 불편하기는 마찬가지 입니다.

첫 번째, 여전히 로컬 웹 서버가 동작하여 도움말이 구동됩니다. 닫아버리고 싶은 왠지 모를 강박감…!

두 번째, 도움말의 폰트 크기가 제각각 입니다. 폰트도 작은데, 크게 키우면 너무 크고...
좌측은 Help Viewer 1.1, 우측은 MSDN 온라인 도움말.


세 번째, 샘플 코드 구조가 사정없이 깨집니다.
좌측, Help Viewer 1.1, 우측은 MSDN 온라인 도움말

네 번째, 개인적으로 인덱스 창을 오른쪽에 도킹하는데, 도킹 기능이 없네요^^;

다섯 번째, MSDN Documentation 2008 에서는 고유 URL 이 있는데, 지금은 도움말 에이전트의 URL 도 보여주지 않네요.
좌측은 MSDN Documentation 2008, 우측은 Help Viewer 1.1

그 밖에, 사용자 경험은 여러분께 맡기겠습니다.

[후기] VS Korea 공개 세미나 – Good Bye GDI

Visual Studio 2010 2011. 6. 3. 09:30 Posted by 알 수 없는 사용자

어제 많은 분들이 참석한 가운데 세미나를 무사히 끝냈습니다.

이번 세미나 Windows 7이 나올 때 새롭게 추가된 Windows 그래픽스 API를 소개하는 세미나였습니다. Windows 95가 나올 때 만들어진 GDI XP가 나올 때 GDI+로 업그레이드 된 후 GDI를 현대에 맞게 대폭 바꾼 그래픽스 API입니다. 특징은 CPU가 아닌 GPU를 사용한다는 것입니다.

GPU 사용에 의해 강력한 성능과 편리한 기능을 갖추었지만 아직 한글화 되지 못한 MSDN 설명과 Windows 7(또는 Vista) 전용(미국에서는 이미 Windows 7이 점유율 1위가 되었죠)이라는 걸림돌에 의해서 잘 소개가 되지 못하여 아직도 모르는 분들이 많았는데 이번 세미나를 통해서 많이 알려졌으면 합니다.

 

저희 스터디 모임에서 이번 세미나에서 처음 소개하는 것이라서 기초 위주로 소개했는데 다음에 또 세미나를 열게 되면 좀 더 깊게 들어가서 활용이나 MFC 부분도(VS2010 SP1 설치) 다루어 보려고 합니다. 그러니 다음 세미나도 기대해 주세요^^

강연자인 박민근님, 조진현님 및 세미나를 준비하신 분들과 참석자 분들 모두 수고 많으셨습니다^^





생각 외로 많은 분들이 참석하셨습니다. 특히 제가 본 프로그래밍 세미나 중 여자분들이 제일 많았던 것 같더군요^^


식사를 못하신 분들도 있을 것 같아서 간단하게 다과도 준비했습니다


게임 개발자들에게 보기 힘든 정장을 입고 오신 박민근님. 이날 오후에는 NDC에서도 강연을 하셨죠


 

 

본격 TFS 스릴러, 쏘울(1) - 검은 물체의 정체.

Team Foundation Server 2011. 6. 3. 09:00 Posted by 알 수 없는 사용자
- Previously on TFS Thriller Ssoul.

이유도 모른 채 어둡고 축축한 방에 갇혀 쏘울이 내는 미션을 해결해야 하는 보람. 이해할 수 없는 문제는 이해하려고 노력하지 않는 것이 제 맛. 상황을 이해하기 보다 미션 해결을 하려하는 순간, 등 뒤에서 검은 물체가 부시럭 거리는 소리와 함께 움직였다. 과연 그 물체의 정체는.


- 검은 물체의 정체.

소리가 난 곳에서 뭔가 거대한 검은 물체가 일어났다. 옛날에 유행하던 유령의 모습 처럼 사람이 비닐을 뒤집어 쓴 것 같은 모양을 하고 있었으며, 몸뚱이에서 팔 같은 게 튀어나오기도 했다. 그리고 잠깐을 버둥거리더니

아 쫌, 이거 좀 벗겨달라고!!”

보람의 귀에 익숙한 소리가 들려왔다. 반신반의하며 살금살금 다가가서 비닐을 살포시 벗겨주었다.

? 야 너 여기서 뭐하냐

검은 물체는 보람의 친구인 세식이었다.

글세 나도 그게 궁금한데, 당췌 내가 왜 여기 있는 건지.”

일단 보람은 지금까지 자신이 보고 들은 것들을 세식에게 친절하게 알려줬다. 굳게 잠긴 문, 분해되어 있던 컴퓨터, 컴퓨터의 암호, 쏘울, 그리고 TFS.

그래서? 나 집에는 언제 갈 수 있는 건데?”

그걸 내가 알겠냐.”

!!! 와이프한테 또 늦게 들어온다고 혼나겠네~!!”

야 지금 늦게 들어가는 게 문제냐? 상황파악이 안돼? 우리가 이 방에서 나갈 수 있을지 없을지도 모르는 상황이라고

….. 우리가 누구한테 원한 살만한 게 있었나?”

글세. 원한이라. 이 정도의 사건에 휘말릴 만큼 센 원한은 없는 거 같은데.”

그럼 투한은?”

야 너 그냥 다시 비닐 뒤집어쓰고 있어라.”

그렇게 그들은 늘상 하던 무의미한 언어 유희질을 잠깐 나눈 뒤에 다시 축축하고 냄새나는 현실로 돌아왔다.

그래서 지금 쏘울이라는 놈이 여기다가 TFS를 설치하라고 했단말이지?”

그런 셈이지.”

근데 이거 윈도우 7이잖아? 여기에 TFS 설치되던가?”

되던가? 그래도 되니까 해보라고 한 거 아닐꺼나?”

그렇게 이야기 하며 ISO이미지를 마운트 시켰다. 그리고 설치 이미지의 폴더를 살펴봤다.


오 여기에 TFS-x64라고 있네, 여기 한번 들어가봐


역시 설치는 setup이 제 맛이지


야 여기 설치 기능 물어보는데?”

일단 잘 모를 때 설치는 무조건 전부 선택으로 하는 거야.”

그렇게 설치가 진행되고, 성공 메시지가 나타났다.

오오미 설치가 끝났군.”

구성 버튼을 누르자 구성 마법사가 시작되었다
.

야 보람 여기 몇 가지 옵션 있는데? 아마 우리는 기본 일까나?”

설명을 읽어보니 기본 맞는 거 같지?”


이 메시지는 뭐지…?”

글세? 윈도우 버전 한번 확인해봐.”

오호라, 이게 윈7 서팩1 이니까 TFS보다 나중에 나온 버전이라는 말이군? 뭐 문제 있겠어? 다음!”


SQL 서버가 안 깔려있으니 설치까지 해주나 본데?”

예전에 듣기로 TFS가 설치가 쫌 어렵다고 하던데 편해졌나 보군.”
 

통과 통과 좋아.”


완료 완료 좋아

그렇게 그들은 이 상황이 어떤 상황인지도 잊은 채로
, 통과와 완료에 들떠 있었다. 역시 남자는 장난감을 좋아하는 동물인 걸까.


오케이 서버는 끝난 거 같고, 뭐 빌드에 필요한 서비스가 있는 모양이군.”

근데 뭐 지금까지 그냥 클릭클릭하고 넘어왔잖아. 이거도 그럴 거 같은데.”


"클릭
."


"클릭
."


"클릭
."


"통과 통과"


"완료 완료"


그러게 진짜 클릭클릭 하면 통과 통과 완료 완료 고만

그런 이제 우리 집에 갈 수 있는 거야?”

글세그건 쏘울이 어떻게 나오냐에 따라 다르겠지.”

그렇게 보람은 동영상 파일이 있는 폴더를 열고
, 1번 파일을 재생했다. 다시 스피커에선 오토튠 목소리가 흘러나왔다. 그리고 이번엔 배경 음악도 깔려있었다.

안녕하신가 보람씨. 아 이제 세식씨도 일어났으려나? 어때? 배경 음악이 깔리니깐 오토튠에 대한 거부감도 줄어들지? 아까 0번 찍고 나서 모니터링을 해보니까 오토튠이 좀 귀에 거슬리더라구. 그래 이걸 봤다는 건 TFS설치는 성공했다는 거겠지? 물론 성공했겠지. 윈도우 7 TFS 설치는 그냥 클릭만 하면 넘어가는 거니까 말이지. 좋아 이제 또 과제를 주지. C드라이브에 보면, ‘과제물이라는 폴더가 있고 거기에 보면, ‘Lab1’이라는 폴더가 있지. 그 폴더 안에 보면, 내가 ssoul이라는 팀 프로젝트 컬렉션을 분리해 놓은 게 있어. 그걸 지금 설치한 TFS에 연결하고, 그 안에 있는 팀 프로젝트의 소스를 하드 디스크에 다운로드 해. 그게 다음 과제야. 그럼 잘 해결하길 바래.”

영상이 끝나고 세식과 보람은 잠깐 멍한 상태로 버퍼링을 하고 있었다
.

야 그럼 우리 집에 못 가는 거야?”

넌 집에 보물 숨겨놨냐. 왜 자꾸 집 타령이야.”

있지. 우리 아들 내미.”

"아들 내미 보고 싶으면 일단 과제부터 해결할 생각을 하자
. 안 그러면 여기가 우리 집이 될지도 모르니 말이지.”

커헉.”

본격 TFS 스릴러, 쏘울(0) - 프롤로그.

Team Foundation Server 2011. 6. 1. 09:00 Posted by 알 수 없는 사용자

- 본격(이라고 쓰고 막장이라고 읽는다) TFS 스릴러, 쏘울이란?

이 시리즈는 Team Foundation Server 2010을 주제로 연재되는 본격 스릴러입니다. 왜 아티클이 이딴 형식으로 연재되는가하는 생각을 가지신 분들이 있을 것 같습니다-_-. 저 자신도 글을 쓰면서 왜 이렇게 써야 하는지 의문을 가지고 있으니까요. 산을 힘들게 오르는 사람들에게 왜 그렇게 힘들게 산을 오르느냐고 물어보면, '산이 저기 있으니까 오른다'고 대답했다는 이야기가 있습니다. 진짜 인지 우스갯소리인지는 명확하게 알 수 없지만, 제가 이딴 본격 스릴러 형태로 TFS 아티클을 쓰는 것도 비슷한 이유입니다. 평범한 소시민 주제에 평범하게 하는 걸 별로 안 좋아하는 편이기 때문이죠. 이해가 되시나요? 아마 이해가 안 되실 겁니다. 한 철학자에게 '당신은 대체 누구요?'하고 물었더니 '나도 그게 알고 싶소!'라고 답변했던 것 처럼 말이죠. 아마도 이 시리즈가(글쓴이의 수준이) 막장이 될거라는 불안감을 해소하기 위해서 여러분의 정신을 혼미하게 만들고 싶은 마음이 있나 봅니다. 정신이 혼미한 상태에서 읽으면 글의 수준을 가늠하기 힘들기 때문이죠. 어헣.

아무튼, 이 시리즈는 계속해서 스릴러라는 장르를 유지한 채로 진행해볼 생각입니다. 어느날 갑자기 스릴러가 아니라 매뉴얼 형태로 글이 바뀌어 있다면, 저의 도전정신을 높게 평가해서 피식하고 웃어 넘겨 주시기 바랍니다. 허허허허. 이 시리즈의 대상은 TFS 2010을 시작하는 분들 입니다. 그럼. 이제 쏘울이 시작됩니다. 저와 함께 TFS를 만져보시죠 :)



------------------------------------------------------------------------------------


축축한 공기가 기분 나쁘게 폐를 드나드는 불쾌한 느낌을 느끼며 그는 눈을 떴다. 그리고 그의 눈 앞에는 뭔가 이상한 장면이 눈앞에 펼쳐지고 있었다. 그는 할 말을 잃은 채로 방안을 둘러봤다. 한 쪽에는 이불 같은 것이 쌓여있고, 문은 철제 문으로 전자장치로 잠겨있는 것 같다. 그리고 창문은 아무 조그맣고, 오랫동안 청소를 안 한듯 먼지가 가득 껴있었다. 그리고 책상이 하나 놓여있다. 이렇게 방안을 둘러보고 나서야 스스로에게 질문을 할 여유가 생겼다.

여긴 어디지?’

생각의 끈을 잡으려 노력하면서 일어나려는데 뒷 목 언저리가 쑤셔왔다.

뭐지…?’

일어나려던 생각을 접고 앉아서 생각을 잡으려 노력했다. 그러자 어제 회사 회식이 있었고, 회식을 마친 뒤에 집에 가기 위해서 택시에 올라탔던 것이 기억났다.

설마납치 같은 건가?’

거기까지 생각이 미치자 일단은 방을 벗어나야 겠다는 결론에 이르렀다. 그리고 시선이 잠겨있는 문에 고정됐다.

저 문을 어떻게 하면 열 수 있을까?’

그렇게 문을 쳐다보며 분석을 시작했다.

쏘우 같은 공포영화에서나 나올법한 전형적인 문이군. 아마도 만지면 전기 충격이 오지 않을까?’

이런 생각을 하다가 문득, 자기 자신이 한심하게 느껴졌다. 그래서 손잡이에 손을 가져가면서 생각했다.

참 내이런 상황에서 잘도 그런 생각을 하는 구어러러호가올ㄴ기ㅏ헉!!!!!!!’

바닥에서 1분정도를 떼굴떼굴 굴렀을까. 정말 전기 충격이 있을 줄은 몰랐기 때문에 그는 무척이나 당황한 모습이었다. 도대체 이 상황은 뭘까. 그리고 정신을 차릴 무렵 방 한 구석에 큰 박스 하나가 보였다. 조심조심 박스로 다가서서는 박스를 열어봤다.

…? 이런 곳에 왜…?’

박스 안에는 컴퓨터 부품과 케이스, 그리고 모니터 및 기타 등등의 부품이 들어있었다. 그는 반사적으로 컴퓨터를 조립하면서 자신의 정체성을 분명히 하고 있었다. 그는 분명 컴퓨터와 매우 익숙한 환경에서 사는 사람이리라.

컴퓨터 조립을 끝내고 나자 그의 표정이 다시 어두워졌다. 사람은 뭔가 몰두할 일이 생기면 근심을 잠시 잊어버리는 법이다. 그래서 사람은 일에 미친 듯이 몰두하기도 하는 것이다. 현실에서 격리된 세상에서 머물기 위해서 말이다. 컴퓨터 조립에 몰두했던 그의 정신이 몰입에서 헤어나오는 순간, 불쾌하고 불확실한 현실과 다시 마주하게 되었다. 하지만, 그는 곧 자신이 몰두할 수 있는 일이 하나 더 있음을 발견했다.

좋아일단 전원을 켜보자고. 혹시 이 컴퓨터 안에 뭔가 있을지도 모르니 말이지.’

그렇게 책상 위로 컴퓨터를 옮기고 전원을 넣었다. 그랬더니 역시나 익숙한 윈도우 마크가 그를 반겼다.

뭐야다 세팅한 컴퓨터를 일부러 다시 분해해서 나뒀단 말인가꼼꼼한 놈이고만..?’

그렇게 윈도우가 부팅되고, 로그인 창이 나타났다. 그리고 순간 그는 멈칫했다. 로그인 창에 나타난 것은 그가 평소에 회사에서 사용하던 아이디였기 때문이다. 잠깐을 머뭇거리던 그는 익숙하게 비밀번호를 입력했고 윈도우는 환영합니다라는 메시지로 그를 반겼다. 그리고 바탕화면이 나타났다. 그의 눈이 조급하게 바탕화면을 훑었다. 그리고 그의 예상대로 바탕화면에는 하나의 폴더가 있었다. 폴더의 이름은 강보람씨 보셩’. 그렇다 이 남자의 이름은 강... 보람은 생각에 잠겼다.

내 회사 아이디와 비밀번호, 그리고 내 이름까지 알고 있다누굴까. 뭐 하자는 걸까.’

폴더를 열자 동영상파일이 여러 개 나타났다. 동영상 파일에는 번호가 붙어있었다. 침을 한번 삼키고, 0번 파일을 열었다. 그리고 스피커에서 왠 오토튠 처리된 목소리가 흘러나왔다.

안녕 보람씨. 당신이 왜 여기에 갇혀있는지 궁금하겠지. 하지만 그건 천천히 이야기 하자구. , 우선 내 소개를 먼저 할까? 내 이름은 쏘울. 이름을 들으면 삘이 딱 오지? 그래 바로 그 쏘우의 모방 범죄를 하고 있는거지. 낄낄낄. 그래 쏘우를 봤으면 이제 자네한테 어떤 일이 닥칠지는 예고편을 안 보여줘도 잘 알 수 있겠지?”

오토튠으로 내는 소리를 무반주로 듣고 있자니 환장할 노릇이었다. 하지만, 보람은 지금 그런 걸 가릴 처지가 아니었다. 당장이라도 멱살잡이 하고 오토튠에서 해방되고 싶지만, 상대는 모니터 안에 있으니 할 수 없는 법.

그래 이제 슬슬 미션이 뭔지 궁금해지겠지. 쏘우에서도 미션이 주어지고 성공하는 사람만 생존했으니 말이지. 자넨 프로그래머니까 좀 프로그래머 다운 미션을 주지. 자 그럼 이제 우리 즐거운 첫 번째 미션을 수행해 볼까? 자네가 지금 영상을 보고 있는 컴퓨터는 Windows 7이 깔려있어. 그리고 폴더에 필요한 파일도 ISO 이미지로 준비가 되어 있지. 우선 여기에 TFS가 동작할 수 있게 설치하는 것으로 첫 번째 미션을 시작해보자고. , 그리고 노파심에서 하는 이야기 인데, 내가 늘 지켜보고 있으니까 말이지 농땡이나 허튼 생각은 하지 말라고. 미션을 잘 수행해주면 그 방에서 나올 수 있게 해줄게.”

영상이 끝나고 보람은 멍한 상태로 모니터를 쳐다보고 있었다.

? TFS? 미션? 쏘울?!?!?!?! 스토리는 막장 드라마 수준이구만그래 일단 방법이 없는 거 같으니 해보자고.”

그렇게 단념하고 폴더에서 ISO이미지를 찾아서 마운트 하려는 순간 등 뒤에서 부스럭 거리는 소리가 났다. 깜작 놀란 나머지 자리에서 팔짝 뛰어서 떼굴떼굴 구르고 소리가 난 쪽을 쳐다보았다. 그리고 소리가 난 곳에서는


- 차회예고

부스럭 거리는 소리에서 나타난 것은 거대한 검은 물체. 과연 그 물체는 무엇일까. 과연 보람은 그 검고 거대한 물체와 쏘울의 미션에서 살아남을 수 있을까?

SQL Azure 데이터 이용(3)

Cloud 2011. 5. 31. 08:30 Posted by 알 수 없는 사용자


SQL Azure 데이터 이용(3)

이번에는 SQL Azure의 데이터를 Windows Azure 프로젝트의 ASP.NET MVC 응용프로그램에서 데이터를 이용하는 내용을 알아보도록 하겠습니다.

앞에서 살펴보았듯이 기존 ASP.NET MVC 응용 프로그램과 별 차이가 없는 것을 확인 가능합니다.

Cloud 폴더의 Windows Azure 프로젝트를 생성합니다. 프로젝트 이름은 SQLAzureMVC 으로 지정합니다.

Windows Azure 프로젝트에서는 ASP.NET MVC 웹 역할을 추가합니다.

ASP.NET MVC 웹 역할의 이름은 SQLAZMVCWeb 로 아래와 같이 지정합니다.

Models 폴더에 View에서 나타낼 Product 클래스를 아래와 같이 선언합니다. 필요하다면 ProductSubCategory 클래스나 ModelView 클래스를 추가해야 합니다.

SQL Azure에 있는 데이터를 호출하기 위해 clsProduct에서 Enterprise Library Data Access Block을 이용해서 web.config 에 있는 연결 문자열을 통해 액세스합니다.

Controller를 생성하기 위해 Controllers 폴더를 오른쪽 클릭, 추가에서 컨트롤러를 선택하고 이름은 ProductController로 지정합니다.

ProductController Index에서는 아래와 같은 형태로 DropDownlist의 데이터는 ViewData로 처리하고 Product List View로 보내주는 내용을 구성합니다. 그리고 DropDownList Change 했을 경우 POST 방식으로 처리되는 Index 메서드를 정의합니다.

public ActionResult Index()

{

clsProduct product = new clsProduct();

var d = from p in product.GetProductSubCategory().Tables[0].AsEnumerable()

select new ProductSubCategoryModel

{

Name = p.Field<string>("Name"),
ProductCategoryID = p.Field<int>("ProductCategoryID")

};

ViewData["SubCategories"] = new SelectList(d.ToList(),"ProductCategoryID", "Name");

string ddlCategory = d.ToList().First().ProductCategoryID.ToString();

var products = from g in product.GetProducts(ddlCategory).Tables[0].AsEnumerable()

select new ProductModel

{

Name = g.Field<string>("Name"),

ProductID = g.Field<int>("ProductID"),

ProductNumber = g.Field<string>("ProductNumber"),

Size = g.Field<string>("Size"),

Color = g.Field<string>("Color"),

StandardCost = g.Field<decimal>("StandardCost"),

ListPrice = g.Field<decimal>("ListPrice")

};

return View(products.ToList());

}

Views 폴더에 View를 생성해보도록 하겠습니다. Index 메서드에서 오른쪽 클릭하여 뷰 추가 메뉴를 클릭합니다.

강력한 형식의 뷰 만들기에서 ProductModel를 선택하고 뷰 콘텐츠에서는 List 를 선택합니다.

Views 폴더의 Product 폴더의 Index.aspx의 코드를 살펴보고 DropDownList 관련 내용을 추가합니다.

<% Html.BeginForm(); %>

<p><%=Html.DropDownList("ddlCategory",(IEnumerable<SelectListItem>)ViewData["SubCategories"], new { onchange = "this.form.submit()" }) %></p>

로컬에서 실행해서 결과를 확인합니다.

자 이제 Windows Azure ASP.NET MVC Web Role에 대한 내용을 배포해봅니다.

배포에 대한 일반적인 내용은 아래 블로그를 참조하면 됩니다.
http://redju.tistory.com/56
ServiceConfiguration.cscfg
파일에서 인스턴스를 2로 수정하고 솔루션 탐색기의 SQLAzureMVC 프로젝트를 오른쪽 클릭하고 게시를 클릭하여 패키지를 생성합니다.

Windows Azure 사이트로 이동(http://windows.azure.com/) 하여 하여 New Hosted Service를 클릭하여 서비스 이름과 패키지 경로 등을 아래와 같이 지정합니다.

Staging에서 Ready 상태로 되었고 오른쪽 속성 창을 통해 테스트를 해볼 수 있습니다.

SWAP IP를 클릭하여 Staging에서 Production 환경으로 변경하여 결과를 확인합니다.

SQL Azure의 데이터를 이용하는 클라우드 ASP.NET MVC 웹 역할을 생성하고 배포해보았습니다.

[STL] 13. <algorithm>에 추가된 새로운 함수들 minmax_element

C++0x 2011. 5. 30. 09:00 Posted by 알 수 없는 사용자

C++03까지의 STL에는 데이터셋에서 가장 작은 요소를 찾을 때는 min_element, 가장 큰 요소를 찾을 때는 max_element를 사용하였습니다.

그런데 만약 최소와 최대를 동시에 찾을 때는 어쩔 수 없이 min_element max_element를 각각 호출해야 하는 불필요한 불편한 점이 있었습니다.

 

C++0x에서는 이런 불편함을 개선하기 위해 한번에 최소와 최고를 찾아주는 minmax_element 알고리즘이 새로 생겼습니다.

 

 

minmax_element

template<class ForwardIterator>

    pair< ForwardIterator, ForwardIterator >

        minmax_element( ForwardIterator _First, ForwardIterator _Last );

template<class ForwardIterator, class BinaryPredicate>

    pair< ForwardIterator, ForwardIterator >

        minmax_element( ForwardIterator _First, ForwardIterator _Last, BinaryPredicate _Comp );

 

minmax_element 알고리즘에는 조건자를 사용하는 버전과 조건자를 사용하지 않은 버전 두 가지가 있습니다. 데이터셋의 자료형이 유저 정의형(class struct를 사용한)이라면 조건자가 있는 버전을 사용합니다.

 

< 예제 코드 >

#include <iostream>

#include <algorithm>

using namespace std;

 

 

int main()

{

           int Numbers[10] = { 50, 25, 20, 7, 15, 7, 10, 2, 1, 3 };

          

           pair<int*, int*> MinMaxValue = minmax_element( &Numbers[0], &Numbers[10] );

 

           cout << "최소 값 : " << *MinMaxValue.first << endl;

           cout << "최대 값 : " << *MinMaxValue.second << endl;

          

           return 0;

}

 

< 결과 >


 

그간 저희 Visual Studio Korea 팀에서 2010년 6월 1일 REMIX10 무료 온라인 백서를 참석 전원에게 드린 적이 있었습니다.

http://vsts2010.net/338
Visual Studio 2010 최신 PDF 자료를 MSDN 에서 다운로드 받으세요

그리고 지난 2011년 4월 18일, 그 두 번째 온라인 무료 백서를 공개하게 되었습니다.

VISUAL STUDIO KOREA 팀의 온라인 백서 다운로드 사이트

http://msdn.microsoft.com/ko-kr/gg620748

Visual Studio 응용 프로그램 모델링 완전 정복 백서

엄준일 MVP (엔씨소프트) – 다운받기

"Visual Studio 응용 프로그램 모델링 완전 정복 백서" 개발자에서 뛰어난 개발자로 안내하는 효과적인 백서입니다. 최종 산출물인 동작하는 소스 코드를 위해, 모델링에 대한 배경과 방법을 개발자의 관점에서 설명합니다. 그리고 Visual Studio 2010 이용하여 개발자가 효과적으로 모델링을 있는 환경을 제시합니다.

개발자들이여, 이제는 "개발자는 코드로 말한다" 관념을 버리십시오.현대의 소프트웨어 개발에서는 언제까지 당신의 코드가 나오기까지 기다려주지 않습니다.선택과 집중의 개발 생태계에서 당신이 올바른 방향을 바라보고 발을 내딛는다는 것을 아무도 믿어주지 않습니다.

코드로 말하기 이전에 자신의 목적과 목표를 명확하게 시각화하여 말하는 것이야 말로 우리 시대가 원하는 뛰어난 개발자임이 확신합니다.

ASP.NET MVC - M, V 그리고 C 각방생활

박세식 (유니위스) - 다운받기

ASP.NET 가려운 곳을 긁어줄 대안의 프레임워크가 나왔으니 바로 ASP.NET MVC 프레임워크입니다. MVC 각각 담당하고 있는 일이 있습니다. 컨트롤러는 사용자 요청의 흐름을 제어하고 그에 따른 모델과 뷰를 선택하는 , 모델은 데이터와 유효성 검사, 비즈니스 로직을 담당하는 , 뷰는 컨트롤러에서 전달받은 데이터를 UI에서 처리하는 일을 합니다. 이렇게 모델, , 컨트롤러로 명확하게 분리된 구조가 여느 복잡한 어플리케이션도 구조적으로 쉽게 개발할 있도록 도와줍니다. 여기 백서를 통해 개발의 도움을 주는 M, V 그리고 C 각방생활을 소개합니다.

남자의 Visual Studio 2010 TDD(Test Driven Development)이야기

강보람 MVP (IT Flow 선임 컨설턴트), 박세식 (유니위스) - 다운받기

TDD(Test Driven Development), 테스트 주도 개발은 애자일한 개발을 지원하기 위한 하나의 실천적 도구입니다. 하지만, 단순히 세부적으로 어떻게 해야 되는 것인지를 묻는 'How'만으로는 TDD 제대로 이해할 수가 없습니다. 어째서 TDD 소개되었으며, TDD 통해서 어떤 장점을 얻을 있는지를 이야기 하는 'Why' 'What' 동반되어야 TDD 이해할 있는 기반을 마련하는 것이시죠. 여기 개발자가 TDD 대해 나눈 대화를 흥미롭게 재구성해 기록한 백서가 있습니다. 백서를 통해서 TDD 대한 'Why', 'What' 그리고 Visual Studio 2010 개발에 TDD 적용한 'How' 같이 얻으시기 바랍니다.


SQL Azure 데이터 이용(2)

Cloud 2011. 5. 24. 08:30 Posted by 알 수 없는 사용자

SQL Azure 데이터 이용(2)

SQL Azure 에 데이터를 이전했고 Windows Azure 프로젝트를 통해 클라우드 웹 응용프로그램에서 데이터를 이용하는 내용을 알아보도록 하겠습니다.

VS 2010을 이용해서 Windows Azure 응용 프로그램을 생성합니다. 이를 통해 클라우드에 있는 SQL Azure 데이터를 클라우드 웹 응용프로그램에서 나타내보도록 하겠습니다.

Cloud 폴더의 Windows Azure 프로젝트를 생성합니다. 프로젝트 이름은 SQLAZWeb으로 지정합니다.



Windows Azure 프로젝트에서는 ASP.NET 웹 역할을 추가합니다.

웹 역할의 이름은 AdventureWorks로 아래와 같이 지정합니다.

Default.aspx 의 디자인은 ScriptManager, UpdatePanel 에 추가로 DropdownList, GridView 컨트롤을 아래와 같이 배치합니다.

연결 문자열과 클래스 파일 등은 SQL Azure 데이터 이용(1)과 동일합니다. 배포에 대한 내용만 다를 뿐입니다. 일반적인 내용은 생략합니다.

Default.aspx.cs로 이동하여 아래와 같이 필드를 선언하고 Page_Load에 아래와 같은 코드를 작성합니다. DropdownList SQL Azure의 데이터를 나타내는 내용입니다.

public partial class _Default : System.Web.UI.Page

{

clsProduct product = new clsProduct();

protected void Page_Load(object sender, EventArgs e)

{

if (!Page.IsPostBack)

{

ddlSubCategory.DataSource = product.GetProductSubCategory().Tables[0];

ddlSubCategory.DataTextField = "Name";

ddlSubCategory.DataValueField = "ProductCategoryID";

ddlSubCategory.DataBind();

GetProductData();

}

}

또한 DropdownList SelectedIndexChanged 이벤트를 발생시켜 아래와 같이 코드를 작성합니다.

protected void ddlSubCategory_SelectedIndexChanged(object sender, EventArgs e)

{

GetProductData();

}

GetProductData 메서드는 Products 리스트를 얻어 오는 내용이며 아래와 같이 코드를 작성합니다.

private void GetProductData()

{

DataSet ds = product.GetProducts(ddlSubCategory.SelectedValue);

GridView1.DataSource = ds.Tables[0];

GridView1.DataBind();

}

로컬에서 실행해서 결과를 확인합니다.

자 이제 Windows Azure Web Role에 대한 내용을 배포해봅니다.

배포에 대한 일반적인 내용은 아래 블로그를 참조하면 됩니다.

http://redju.tistory.com/56

솔루션 탐색기의 SQLAZWeb 프로젝트를 오른쪽 클릭하고 게시를 클릭하여 패키지를 생성합니다.

Windows Azure 사이트로 이동(http://windows.azure.com/) 하여 하여 New Hosted Service를 클릭하여 서비스 이름과 패키지 경로 등을 아래와 같이 지정합니다. 인스턴스의 수는 구성 파일에서 미리 지정해도 됩니다.

Staging에서 Ready 상태로 되었고 오른쪽 속성 창을 통해 테스트를 해볼 수 있습니다.

테스트 결과는 아래와 같습니다.

SWAP IP를 클릭하여 Staging에서 Production 환경으로 변경하여 결과를 확인합니다. 인스턴스를 2로 수정해서 Upgrade를 했습니다.


SQL Azure를 이용하여 ASP.NET 웹 역할을 생성하고 배포해보았습니다. SQL Azure라고 코드에 대한 내용이 별도 다르지 않고 ADO.NET으로 액세스 할 수 있습니다.


[공지사항] VS Korea 공개 세미나

VSTS 2010 팀 블로그 2011. 5. 24. 08:24 Posted by 알 수 없는 사용자

Good bye GDI~ Hello Direct X

아직도 GDI 프로그래밍을 하고 계신가요?

여기 “Good bye~~ GDI”에서 DirectX를 이용한 새로운 세계로 Visual C++ 개발자 분들을 안내합니다. 

지금까지 문자열이나 2D 그래픽을 하기 위하여 GDI를 사용하셨다면, 이제 바꾸실 때가 되었습니다. GDI 또는 GDI+ 보다 Direct X를 이용하면 그래픽 카드의 기능을 최대한 활용하여 화려한 화면을 만들 수 있도록 도와줍니다. 이번 저희 VS Korea 팀 블로그에서 Good bye GDI를 준비했습니다.

행사 등록 바로가기


행사 개요


Good bye GDI ~


일자


2011
6 2일 목요일


시간


오후 7 30 ~ 오후 9 30


장소


포스코센터 서관 5 / Microsoft Korea 세미나 Room


대상


Visual Studio
개발자 / Visual C++ 개발자

 

행사 일정

항목

시간


      

세션 1

오후 7 30 ~ 8 20


DirectWrite – ‘
문자열 렌더링의 종결자

~ DirectWrite!!!


강사 : 조진현 MVP

휴식


오후 8 20 ~ 8 30

세션 2

오후 8 30 ~ 9 20


Direct2D –
하이 스피드, 하이 퀄리티의 차세대 2D 그래픽스 라이브러리

강사 : 박민근

경품추첨


오후 9 20 ~ 9 30

 

 

강사 소개

 

) GOGN 재직 중

- 게임 클라이언트 프로그래머
     - 게임 개발이 나의 운명임을 알고, 순간부터
        행복해지려 노력하는 평범한 개
발자~

) 네오위즈 게임즈

- 게임 클라이언트 프로그래머

- 언젠가 우즈벡에 게임 회사를 차리고 싶은

순진한 게임 개발자

 

기념품 및 경품

-       참가하는 모든 분께 Visual Studio 2010 스티커를 드립니다.

-       추첨을 통하여 총 2분께 Visual Studio 가방과 LG Digital Photo Frame 액자를 드립니다.

-       추첨 시 등록한 한글이름을 기준으로 합니다.(영문 이름이나 아이디는 제외입니다.)

 

 

 


 

오시는 길

지하철 : 선릉역 1번 출구로 나오셔서 삼성역 방향

        삼성역 4번 출구로 나오셔서 선릉역 방향

버스 : 146, 360, 730

      3415, 4420, 4412, 4428

      포스코센터 또는 포스코 4거리에서 하차

 

 행사 등록 : http://onoffmix.com/event/2989

미국에서 개최된 TechEd 2011의 강연 중에서 VC++과 관련이 있는 ALM for C++ in Microsoft Visual Studio 2010이라는 세션을 소개하려고 합니다.

 

이 세션의 내용은 Visual Studio 2010(이하 VS)에서 C++에서 사용할 있는 ALM 기능을 소개하고, VS의 차기 버전(이하 vNext) 구현될 ALM 기능을 소개하고 있습니다.

사실 저는 이 세션에 대해서 별로 기대하지 않았습니다. 그러나 세션 내용을 보니 저의 생각을 완전히 뛰어 넘었습니다. VS의 차기 버전을 많이 기대하게 되었습니다.^^
이 세션의 내용 중 vNext에 관련된 내용을 정리해 보았습니다.

 

이 세션의 내용을 짧게 정리하면 기존 VS에서 닷넷만 되고 C++은 안 되는 기능을 이제는 C++에도 동등하게 지원한다’ 입니다.

저는 Visual Studio.NET 2002에서부터 VS에 대한 불만 중 하나가 닷넷 프로그래머나 C++ 프로그래머나 똑 같은 돈을 주고 VS를 구입하는데 왜 tool의 많은 기능 중 닷넷만 되고 C++은 안 되냐라는 것이었는데 이제 이런 불만이 사라질 것 같습니다.

 

그럼 ‘ALM for C++ in Microsoft Visual Studio 2010’ 세션을 간단하게 소개하겠습니다.

( 본문에 사용한 그림은 VC++ 팀 블로그에 올라온 그림을 사용하였습니다 )

 

현재 C++에서 VS ALM을 모두 사용하고 있는 사람은 3할정도

 

Visual Studio 2010에서의 ALM 기능

Premium 버전

- ALM과 관련된 기능으로 Code Coverage, Static Analysis, Profiling, Concurrency Profiling을 지원.

Ultimate 버전

- Load Testing, Lab Menagement 지원

- TFS에서는 Version Control, Team Build 지원

 

 

vNext에서의 변화

2010에서 지원하던 Architecture tools의 기능을 강화하면서 새로운 기능을 추가

Native ALM에 투자를 하여 기존의 많은 ALM 기능을 Native에 대응해 나갈 것임

 

 

코드 분석


VS2010에서도 사용할 수 있는 기능으로 vNext에서 더욱 개선
상세한 정보를 전달하기 위해서 UI를 다시 디자인
분석 엔진 개선으로 더욱 강력하게 에러나 경고를 진단
제안을 클릭하면 코드 위에 하이라이트 하여 문제점을 가시화

 

 

Architecture Tools  (VS2010에서 지원)

    Dependency diagram by binary

Native 애플리케이션의 아키텍처를 동적으로 시각화하여 의존 관계를 빠르게 파악할 수 있음

이름 공간, 타입, 함수 단위로 자유자재로 의존 관계를 시각화

 

     Dependency diagram by include files

헤더 파일의 의존 관계도 그래프화(이 기능 사용하면 빌드 시간 단축을 위해 헤더 파일 정리할 때 정말 좋을 것 같습니다).
헤더 파일에 색을 붙여서 구분이 쉬워짐. 또 이미지 파일로 저장도 가능

 

   Create a layer diagram and run validation

기존 VS 프로젝트를 드래그&드랍으로 레이어 그림으로 변환. 아키텍처 검증과 의존 관계 생성도 할 수 있음.


 아키텍처 검증은 TFS의 자동 빌드로 실행

 


그리고 드디어 vNext ALM for C++의 끝판왕 소개입니다.

.......

...........

..............

무려 C++ Unit Test Framework 지원(뭐 사실 2010에서 닷넷은 이미 지원하고 있죠^^;;).

저는 이 기능은 정말 의외였습니다. 제가 tool에서 가장 지원해주기 바라는 기능이 드디어 들어오네요. 이 세션에서도 이 C++ Unit Test Framework 소개할 때 청중들의 박수갈채가 뿜어져 나왔다고 합니다. 아마 저도 이 세션을 들었으면 기립박수를 했을 것 같네요^^

이제 우리 C++ 프로그래머들도 이제 순정(?) Unit Test Framework을 사용할 수 있어 따로 설치하지 않아도 되고 녹색 버튼과 빨간 버튼을 볼 수 있습니다.

화면 멋지지 않나요저는 지금 회사에서 구글의 C++ Unit Test Framework를 사용하고 있는데 UI면에서는 비교를 할 수 없을 정도로 좋네요^^


단위 테스트 프로젝트 템플릿이 있고, CppUnitTest.h, TEST_CLASS, TEST_METHOD 매크로가 있다고 합니다.

위 그림의 왼쪽이 Unit Test Explorer인데 테스트에 속성을 붙일 수 있는데 이 속성은 TEST_OWNER(), TEST_PRIORITY(), TEST_IGNORE() 등이 있습니다.

 

Code Coverage

 

Unit Test Explorer에서 아이콘 클릭으로 코드 커버리지 데이터 리포트를 볼 수 있습니다.

바이너리 단위, 함수 단위로도 가능합니다. 원래 이 기능은 2010에는 있었지만 닷넷만 가능했죠. 이제 이것을 C++에서도 사용할 수 있습니다.

소스 코드의 하이라이트로 커버리지 상황을 시각화 할 수도 있습니다.

 

 

 

앞서 이야기 했듯이 기존에 닷넷만 지원하는 기능을 앞으로는 C++도 사용할 수 있습니다. 그리고 당연하게 vNext에서 새로 만들어지는 기능도 이젠 차별 없이 C++도 지원한다고 합니다.

vNext에서는 VS tool 기능을 반쪽만 아닌 닷넷과 같이 모두 사용할 수 있을 것 같아서 너무 좋네요^^

 

기억을 더듬어 보면 2008이 나오기 전 2007년 겨울에 MS 본사의 VC++ PM이 왔어 앞으로 VC++의 기능이 혁신적으로 개선 될 것이라고 했을 때 일종의 립 서비스라고 생각했고, 2008이 나왔을 때 역시나(물론 이전보다는 좀 좋아졌지만) 라고 생각했습니다. 그러나 2010이 나오면서 인텔리센스를 새로 만든 것을 보고 립 서비스가 아니었구나 라고 생각하게 되었고 이번 세션을 통해서 MS VC++에 대한 확고한 의지를 볼 수 있었습니다.

 

vNext가 정확하게 언제 나올지는 모르겠지만 VC++ C++0x 기능과 C++ for ALM 기능으로 기대가 정말 많이 되고 나오면 공부할 것이 많을 것 같습니다.

 

‘ALM for C++ in Microsoft Visual Studio 2010’ 세션에 대한 정보는 VC++ 팀 블로그의 글이나 Channel 9에서 영상으로 볼 수 있습니다.