Who are you?


이동범(Dongbum Lee)


Microsoft Regional Director


Microsoft MVP - VB.net


MHVB.net 시삽

Wanna talk with me?

Here I am

Subscription

MSN 메신저를 통해 글이 갱신되면 알려드립니다.

Windows Live Alerts

Search

Navigation

Categories

.net (14) Ajax (1) asp.net (2) AxWebBrowser (1) blog (3) browser (1) das blog (1) dasBlog (2) DataGridView (1) Google (1) ie (1) iis (1) javascript (1) jQuery (1) Microsoft (14) Office (2) OOXML (1) Silverlight (1) Team System (2) UX (1) VB (3) vb.net (4) Vista (1) visual studio (5) visual studio 2010 (1) windows7 (1) Winform (3) WinFX (1) WPF (2) 독점 (1) 성산포 (1) 음악 (1) 일상 (8) 조용필 (1)

On this page

그들이 왔다
그리운 바다 성산포
Visual Studio 2010 to come with ‘Black Box’
jQuery 가 공식 ASP.net 개발 플랫폼으로!
새로운 마이크로소프트의 UI 시도
Renew the Passion
Why VB? It’s Dynamic !
처갓집 순이
Speed test: Google Chrome beats Firefox, IE, Safari
UI의 생산성을 높여주는 획기적인 아이디어! - NukeationMachine
People.

Archive

Blogroll

Notice

알림
본 블로그는 저의 개인적인 의견을 담고 있습니다.
제가 몸담고 있는 조직의 공식적인 의견과는 다를 수 있습니다.

RSS 2.0 | Atom 1.0 | CDF Send mail to the author(s) E-mail

BlogStats

Total Posts: 41
This Year: 0
This Month: 0
This Week: 0
Comments: 9

Sign In

# Sunday, December 28, 2008
Sunday, December 28, 2008 9:17:33 PM (Korea Standard Time, UTC+09:00) ( )

나치는 우선 공산당을 숙청했다. 나는 공산당원이 아니었으므로 침묵했다.
그 다음엔 유태인을 숙청했다, 나는 유태인이 아니었으므로 침묵했다.
그 다음엔 노동조합원을 숙청했다. 나는 노동조합원이 아니므로 침묵했다.
그 다음엔 가톨릭교도를 숙청했다. 나는 개신교도였으므로 침묵했다.
그 다음엔 나에게 왔다. 그 순간에 이르자, 나서줄 사람이 아무도 남지 않았다.
- Martin Niemoeller

# Wednesday, December 24, 2008
Wednesday, December 24, 2008 11:20:28 AM (Korea Standard Time, UTC+09:00) ( 성산포 | 일상 )

감수성이 예민하던 시절, 이 시를 읽고 눈시울 꽤나 적셨던 적이 있었다.
오늘 드디어 술이 약하다던 성산포 바다를 보러 떠난다.

성산포에서 - 이생진

     아침 여섯 시
     어느 동쪽이나 그만한 태양은 솟는 법인데
     城汕浦에서만 해가 솟는다고 부산 피운다
     태양은 수만개
     유독 城汕浦에서만
     해가 솟는다고 착각하는 것은 무슨 이유인가
     나와서 해를 보라
     하나 밖에 없다고 착각해 온 해를 보라

     城汕浦에서는
     푸른색 이외에는 손을 대지 않는다
     설사 색맹일지라도 바다를 빨갛게 칠한 순 없다
     城汕浦에서는
     바람이 심한 날은 제비처럼 사투리로 말한다
     그러다가도 해뜨는 아침이면
     말보다 더 쉬운 감탄사를 쓴다
     손을 대면 화끈 달아오르는 감탄사를 쓴다.

     城汕浦에서는
     男子가 女子보다 女子가 男子보다
     바다에 가깝다
     술을 마실때도 바다옆에서 마신다
     나는 내말을 하고 바다는 제말을 하고
     술은 내가 마시는데
     취하기는 바다가 취한다
     城汕浦에서는
     바다가 술에 더 약하다

     맨 먼저
     나는 水平線에 몸을 베었다
     그리고 워럭 달려드는 파도소리에 귀를 찢기웠다.
     그래도 할 말이 있느냐고 묻는다
     그저, 바다만한 세상 하면서, 당하고 만 일이 있다
     내 눈이 그렇게 유쾌하게 베인적이 없었다
     내 귀가 그렇게 유쾌하게 찢기운적은 없었다

     모두 막혀버렸구나
     산은 물을 막고 물은 산을 막고
     보고 싶은 것이 보이지 않을 때는
     차라리 눈을 감자
     눈을 감으면 보일 게다
     떠나간 사람이 와 있는 것처럼 보일게다

     밤으로도 지울 수 없는 그림자로 태어나
     바다로도 닿지 않는 진주로 살거다
     일출봉에 올라 해를 본다
     해도 그렇게 날 보다가 바다에 눕는다
     일출봉에서 해를 보고 나니
     달이 오른다
     달도 그렇게 날 보다가 바다에 누워 밤이 되어 버린다

     날 짐승도 혼자 살면 외로운 것
     바다도 혼자 살기 싫어서
     픽픽 넘어지며 운다
     큰 산은 밤이 싫어 산짐승을 불러오듯
     넓은 바다도 밤이 싫어 이부자릴 차내버린다
     사슴이 산속으로 산속으로
     밤을 피해가듯
     넓은 바다도 물속으로 물속으로
     밤을 피해간다

     城汕浦에서는
     그 풍요속에서도 갈증이 인다
     바다 한 가운데 풍덩 生命을 빠뜨릴 순 있어도
     한모금 물을 건질 수는 없다
     城汕浦에서는
     그릇에 담을 수 없는 바다가
     사방에 흩어져 산다

     성산포에서는 바다를 그릇에
     담을 순 없지만
     뚤어진 구멍마다 바다가 생긴다.
     성산포에서는 뚫어진 그 사람의 허구에도
     천연덕스럽게 바다가 생긴다.

     가장 살기 좋은 곳은 가장 죽기 좋은 곳
     城汕浦에서는
     生과 死를 놓치 않아서
     서로가 떨어질 순 없다.
     파도는 살지 못한 것들의 넋
     파도는 피워서 피우지 못한 것들의 꽃
     지금은 시세워 할 것도 없이
     돌아선다

     사슴이여
     살아있는 사슴이여
     지금 살아있는 것이 얼마나 행복한가
     꽃이여
     너 동백꽃이여
     지금 꽃으로 피어있는 것이 얼마나 아름다운가
     사슴이 산을 떠나면 무섭고
     꽃이 나무를 떠나면 시드는 것
     지금은 시세움없이 말하지 않지만

     어망에 끼었던 바다도 빠져나오고
     갈매기가 몰고갔던 바다도 빠져나오고
     한자리에 모인 살결이 희다
     이제 다시 돌아갈 곳 없는 자리
     그대로 천년만년 길어서 싫다
     꽃이 사람이 된다면
     바다는 서슴지 않고 물을 버리겠지
     물고기가 숲에 살고
     산토끼가 물에 산다면
     가죽을 훌훌벗고 물속에 뛰어들겠지
     그런데
     태어난 데로 태어난 자리에서
     山神께 빌다가 歲月에 가고
     水神께 빌다가 歲月에 간다

     성산포에서는 사람이 절망을 만들고
     바다가 절망을 삼킨다.
     성산포에서는 사람이 절망을 노래하고
     바다가 그 절망을 듣는다.
     城汕浦에서는
     설교는 바다가 하고 목사는 바다를 돕는다
     기도보다 잔잔한 바다
     城汕浦에서는
     사람보다 바다가 더 잘 산다
     저 세상에 가서도 바다에 가자
     바다가 없으면
     이 세상에 다시 오자

     나는 떼어놓을 수 없는 고독과 함께
     배에서 내리자마자
     방파제에 앉아 술을 마셨다.
     해삼 한 토막에 소주 두 잔
     이 죽일 놈의 고독은 취하지 않고
     나만 등대 밑에서 코를 골았다.

     술에 취한 섬 물을 베고 잔다.
     파도가 흔들어도 그대로 잔다.

     바다는 마을 아이들의 손을 잡고
     한 나절을 정신없이 놀았다.
     아이들이 손을 놓고 돌아간 뒤
     바다는 멍하니 마을을 보고 있었다.
     마을엔 빨래가 마르고
     빈 집 개는 하품이 잦았다.
     밀감나무엔 게으른 윤기가 흐르고
     저기 여인과 함께 탄 버스엔
     덜컹덜컹 세월이 흘렀다.

     성산포에서는 한 사람도 죽는 일을 못 보겠다.
     온종일 바다를 바라보던
     그 자세만이 아랫목에 눕고
     성산포에서는 한 사람도 더
     태어나는 일을 못 보겠다.
     있는 것으로 족한 존재
     모두 바라를 보고 있는 고립

     살아서 고독했던 사람
     그 사람 무덤이 차갑다
     아무리 동백꽃이
     불을 피워도
     살아서 가난했던 사람
     그 사람 무덤이 차갑다.

     살아서 무더웠던 사람
     죽어서 시원하라고 산 꼭대기에 묻었다.
     살아서 술 좋아했던 사람
     죽어서 바다에 취하라고
     섬 꼭대기에 묻었다.
     살아서 가난했던 사람
     죽어서 실컷 먹으라고
     보리밭에 묻었다.
     살아서 그리웠던 사람
     죽어서 찾아가라고
     집신 두 짝 놔 두었다.

     저 섬에서 한 달만 살자
     저 섬에서 한달만 뜬 눈으로 살자
     저 섬에서 한달만 그리운 것이 없어질 때까지..
     삼백육십오일 두고두고 보아도
     성산포 하나 다 보지 못하는 눈
     육십 평생 두고 두고 사랑해도
     다 사랑하지 못하고
     또 기다리는 사람....

# Tuesday, September 30, 2008
Tuesday, September 30, 2008 12:40:57 AM (Korea Standard Time, UTC+09:00) ( .net | Microsoft | Team System | visual studio | visual studio 2010 )

비행기에 블랙 박스를 탑재하여 사고 당시의 상황을 유추해 낼 수 있듯, Visual Studio 2010 의 테스터 버전에는  테스터가 진행하는 모든 상황을 Black Box에 기록하듯 기록할 수 있는 기능을 제공해 준다고 한다.

VisualStudio2010B 
[Visual Studio 2010 의 일부 모습 – 출처 : Microsoft]

이런 기능을 추가하는 걸 보면,

“어! 내 PC에서는 잘 되던 건데!!” 라는 소리는 우리 개발자들에게만 통용되는 소리는 아닌 듯 싶다.
이젠 정말 개발자들이 *빼도 박도* 못하는 상황이 되 버리고 마는 것인가 <img alt=" src="smilies/happy.gif">

CNET 의 뉴스 기사 클리핑. http://news.cnet.com/8301-13860_3-10052412-56.html

# Monday, September 29, 2008
Monday, September 29, 2008 12:14:44 PM (Korea Standard Time, UTC+09:00) ( Ajax | asp.net | javascript | jQuery )

Microsoft is going to make jQuery part of the official dev platform. JQuery will come with Visual Studio in the long term, and in the short term it'll ship with ASP.NET MVC. We'll also ship a version includes Intellisense in Visual Studio.

logo_jquery_215x53 기존의 Ajax 스크립트 라이브러리를 사용해 보신 분들이라면 jQuery나 Prototype 라이브러리를 그대로 ASP.net Ajax tookit 에서 사용하면 더욱 편하지 않을까 라는 생각을 해 보셨을 것입니다.

이와 관련하여 이번에 상당히 반가운 소식이 들려 오네요.

Ajax 스크립트를 작성하는 개발자들이 거의 대부분 사용하고 계실 jQuery 라이브러리를 Microsoft가 code 라이센스를 맺고 공식적인 ASP.net 개발 플랫폼으로 채용하게 되었습니다.

보다 오픈된 개발 커뮤니티들의 요구들을 수용해 가는 Microsoft의 모습이 무척 환영할 만 합니다.

공식적으로 다운로드가 가능한 것은 다음달 초 정도가 될 것 같습니다.

자세한 내용과 튜토리얼이 Scott Hanselman의 사이트에 친절하게 올라와 있네요.

Scott Hanselman 사이트 : http://www.hanselman.com/blog/jQueryToShipWithASPNETMVCAndVisualStudio.aspx

# Friday, September 26, 2008
Friday, September 26, 2008 9:31:48 AM (Korea Standard Time, UTC+09:00) ( Microsoft | UX | windows7 )


Windows Live wave 3가 공개되면서 기존보다 월등히 강화된 Live service 기반의 어플리케이션들의 개념과 기능, 그리고 앞으로 출시될 Windows 7에 대한 개괄적인 분위기까지 엿볼 수 있게 되었습니다.

하지만 어플리케이션을 설치하고 받은 첫 인상은 “어라 왜 이리 밋밋하지?” 였습니다.

기존 Microsoft 에서 제공하던 메뉴와는 달리 아이콘 하나 없는 밋밋한 텍스트 기반으로 메뉴들이 제공되고 있었기 때문이죠.
before 


우리에게 익숙한 일반적인 메뉴(항상 아이콘 중심적이다) – 일단 예쁘다

저는 베타 버전이기 때문에 일단 아이콘 없이 릴리즈를 했나 보다 생각했었습니다. 어지간히 게으른 개발자들인가 보군.. 하고 말이죠.

아직 못 보신 분들을 위해 몇몇 어플리케이션들의 화면 캡처를 올려 봅니다.

IEToolbar 


IE 툴바

mail 

라이브 메일

photo 


라이브 포토

writer 



라이브 라이터

아이콘 중심적으로 메뉴가 구성되던 이전의 느낌(최소한 비스타 이후에 보다 강조 되어 오던 UX)과는 상당히 다릅니다.

기존의 메뉴에서 받을 수 있던 느낌에 비해 어딘가 소금 덜 친 싱거운 국을 먹고 있는 것 같은 생각이 드시지 않나요?

재미있는 사실은 이러한 아이콘 없는 텍스트 기반의(Typography 와 Text) 메뉴 형태가 새로운 Windows 7의 기본 메뉴 스타일이 된다고 합니다. 기존의 아이콘 기반의 메뉴 체계보다 오히려 더 사용성을 높일 수 있다는 조사 결과가 나왔다고 하네요.

아래 링크의 기사를 인용하자면 심지어 처음 어플리케이션을 테스트하는 테스터조차 오류인 줄 알았다고 합니다.

“For some reason, Microsoft has completely removed icons from tool bars (or Command bar) in all Live apps. A bug report ‘All Live products: Toolbar icons missing’ was closed as ‘Resolved (By Design)’ by Microsoft with the following comment (from a Micorsoft representative): ‘Windows and Windows Live is moving to a much more typographical driven UI over all (not saying it will all look like WLM!). The reason is that all the whitespace puts the spotlight on your content instead of the app frame.’

“Looking at the leaked W7 M3 pics, Windows Explorer sports the same icon-less tool bar.

출처 : http://blogs.zdnet.com/microsoft/?p=1607

여러분들은 Microsoft사의 새로운 시도를 어떻게 생각하시나요?

미적 감각이라곤 눈 씻고도 찾아볼 수 없는 제가 보기에는 글쎄요….
사용성이 더욱 높아졌다는 생각보다는 왠지 “맨 얼굴의 그녀를 처음 본 느낌?”

익숙해 지면 사용성이 증가되려나? :-)

------------------------------------------------------------------------------
Update notes in 2008-09-29 :

본 글을 posting 한 후 Windows Live 팀의 Chris Jones 씨에게 이와 관련된 문의에 대한 답을 받았습니다.
저는 모든 UI들이 Text/Typograph 중심으로 구현될 것으로 이해했으나, 그렇다고 해서 기존의 Icon 기반의 UI 들을 완전히 버리는 것이 아니라, Text/Typograph 의 의존성을 높이는 방향으로 Windows 디자인 가이드라인이 바뀔 것이라고 하네요.

그 분의 언급을 그대로 인용하자면 *I think what you’ll find is that it is a balance.* 입니다.

사실 텍스트가 윈도우 초보자들에게 오히려 친절한 인터페이스가 된다는 것은 당연 할 테니까요.
일단 이와 같은 디자인 가이드라인은 Windows 7과 Windows Live App들에 해당되리라 생각합니다.

# Thursday, September 25, 2008
Thursday, September 25, 2008 6:17:36 PM (Korea Standard Time, UTC+09:00) ( blog | dasBlog | 일상 )

renewal

블로그 엔진을 업데이트 하면서 블로그 테마까지 한번 Renewal 해 보았습니다.

사진은 외국의 Bible 관련 사이트에서 퍼 왔습니다.,
정말 시원하게 열정까지 Renewal 되는 느낌이 느껴 지시나요? :-)

Thursday, September 25, 2008 3:55:31 PM (Korea Standard Time, UTC+09:00) ( .net | Microsoft | VB | vb.net | visual studio )

Visual Studio 2008과 .NET Framework 3.5와 함께 새롭게 릴리즈 된 Visual Basic .NET – VB9은 기존의 VB6 개발자들이 요구하는 높은 융통성과 생산성을 제공해 주고 있습니다. . NET Framework의 도래와 함께 기존의 VB개발자들이 느끼고 있는 혼동과 방황을 잠재워 줄 수 있는 VB만의 Dynamic한 특징들을 Visual Studio 2008의 통합 개발 환경과 새로워 진 언어적 특징 등을 통해 알아보도록 하겠습니다.

.NET Framework 가 소개되면서 기존 VB6를 사용하던 때에 비해 VB 개발자들의 수적인 감소가 눈에 띄게 나타나고 있는 현실입니다. VB언어가 가지고 있는 생산성이라는 강점에도 불구하고 아직도 기존의 VB 와 ASP 개발자들은 여전히 .NET의 환경에 대하여 많은 혼란을 느끼고 있습니다.

그 주된 요인은 엄격한 구문과 타입체킹, 그리고 본격적인 객체지향이라고 하는 그 동안 그다지 심각하게 생각하지 않고도 자신이 원하는 응용 프로그램들을 개발해 왔던 기존의 융통성 높은(비 구조적이거나 프로시저 중심적이거나 하는 것은 전혀 문제되지 않는!) 개발 방식과 경험들이 이제는 더 이상 통용되지 않는다는 것이 원인 중에 하나라고 생각합니다. 그도 그럴 것이 VB개발자들은 다른 개발자들과 달리 그 구성에 있어 전문적인 프로그래밍 교육과 경험을 가지지 못한 파워 유저의 비중이 크며(절대 다수의 이야기가 아닙니다), 이들에게 있어 객체지향 프로그래밍과 구조적인 프로그래밍에 대한 요구는. NET을 넘기 힘든 벽으로 여기게 되었습니다. 또한 다른 요인으로 볼 수 있는 것 은 기존 C++ 개발자들에 비해 언어적으로 열세라는 심리적인 열등감에 사로잡혀 있었던 VB개발자들이 느끼는 세미콜론(;)에 대한 막연한 동경심(?)이 요인이 될 수 있었을 것입니다.

이 글을 통하여 .NET으로 넘어오지 못한 기존 VB개발자들과 타 언어로 개종(?)을 결행한 옛 VB개발자들에게 VB.NET이 가진 프로그래밍적인 매력과 Visual Studio 2008을 통한 높은 생산성을 일깨워 주었으면 합니다. 그리고 이를 통해 많은 개발자들이 다시금 VB전성시대를 이끌어 갈 수 있는 기회를 만들게 되기를 바랍니다.

통합 개발 환경에서의 장점들

통합 개발 환경에서 VB2008의 향상

Visual Studio 2008은 클래스 파일의 로딩에서 컴파일에 이르기까지 대부분의 성능들이 최소 50% 이상 향상되었으며 VB개발자들에게 기존 개발 시에 비해 좀 더 시원한 체감속도를 제공해 줍니다. 아래는 Microsoft VB.net 개발팀이 제공한 VB2005 대비 VB2008 성능 향상 비교 자료입니다.

(http://blogs.msdn.com/vbteam/archive/2008/01/04/vb2008-outperforms-vb2005-lisa-feigenbaum.aspx)

Scenario

VB2005 대비 성능 향상 비율

대형 프로젝트 빌드 (using background compilation)

0.61%

다중 프로젝트 솔루션 빌드 (explicit build operation)

3.56%

다중 프로젝트 솔루션 빌드 (using background compilation)

8.91%

클래스에 맴버를 추가한 후의 응답성

11.16%

프로젝트를 오픈한 후의 응답성

15.17%

타입에 대한 하위 목록들에 대한 인텔리센스 호출(최초)

44.49%

Xml 커맨트가 달린 솔루션 내에서 Edit-and-Continue (최초)

47.71%

메소드 선언을 변경 한 후의 응답성

60.57%

10 Steps in the debugger (subsequent times)

63.06%

타입에 대한 하위 목록들에 대한 인텔리센스 호출 (subsequent times)

64.98%

솔루션이 이미 빌드 되었을 때 F5(실행) (subsequent times)

72.35%

오류 생성 후 오류 목록에 추가되는 항목 속도

74.26%

10 Steps in the debugger (first time)

86.05%

솔루션에 대한 background 컴파일 중의 응답성

89.21%

대형 솔루션에 대한 로딩 (subsequent times)

90.78%

대형 솔루션에 대한 로딩 (first time)
(Note: 본 수치는 XP에서의 향상이며, Vista에서는 본 XP 테스트 시나리오의 2배의 향상을 보였음

91.36%

[표1 – VB2005 대비 VB2008의 IDE 성능 향상 수치]

인텔리센스(Intellisense) 의 생산성

인텔리센스가 없는 VB를 생각해 볼 수 있을까요? VB가 개발생산성을 가질 수 있는 가장 큰 이유가 바로 인텔리센스에 있다고 생각합니다. 혹자들은 인텔리센스가 개발자들을 바보로 만들고 개발자들의 실력을 떨어뜨린다는 이해할 수 없는 주장을 펼치기도 하지만, 그럼에도 불구하고 텍스트 에디터에 Copy & Past 와 현란한 단축키로 날 코딩을 하는 천재(?)개발자들 보다는 바보(?) 개발자들이 쏟아내는 코드의 생산성이 월등하다는 것이 누구나 아는 사실입니다.

VB9에서는 개발자들의 생산성을 높이기 위한 인텔리센스 기능이 기존의 Visual Studio 2005에 비해 월등히 강력해 졌습니다. 이러한 기능을 인텔리센스 에브리웨어(Intellisence Everywhere)라고 합니다.

간단히 Visual Studio 2008에서 MyIntegerValue라고 하는 Integer 타입의 Private 변수를 선언해 보도록 하겠습니다.

그림1

[그림1 : Private 변수 선언 시 P 를 타이핑 한 경우]

그림2

[그림2: Private 변수 선언 시 Pr 을 타이핑 한 경우]

원래 당연한 듯 보이는 인텔리센스 기능도 Visual Studio 2005에서 위의 과정을 수행하면 사용자의 타이핑에 위와 같이 자동으로 반응하는 인텔리센스 기능은 제공하지 않았습니다. 이 기능 하나만으로도 개발자는 코딩 생산성을 높일 수 있습니다. 게다가 변수를 참조하는 경우에 있어서도 VB개발팀들은 기존의 단순 변수 나열에서 필터링 인텔리센스 기능을 제공함으로써 개발자들이 빠른 코드 작성을 가능케 해 줍니다.

이번에는 앞서 선언한 변수에 값을 지정하기 위해 myIntegerValue 를 타이핑 해 보도록 하겠습니다.

그림3

[그림 3: myIntegerValue에 값을 지정하기 위해 타이핑 하는 경우의 인텔리센스 필터]

자동으로 개발자가 키를 입력함에 따라 자동으로 원하는 변수들이 필터링 되어 보여짐을 알 수 있습니다. 독자들의 이해를 돕기 위해 아래에 Visual Studio 2005에서 동일한 작업 시에 제공되던 인텔리센스 화면을 함께 실어 보았습니다.

그림4

[그림 4: Visual Studio 2005에서 동일한 작업을 하는 경우 인텔리센스 – 모든 키워드가 나열되어 보여진다]

상당히 친절해 진 VB 코드 개발환경이 몸으로 느껴질 수 있을 것입니다. 한가지 팁을 더 소개한다면, 인텔리센스 창이 보이는 상태에서 Ctrl(컨트롤)키를 누르고 있으면 해당 창이 투명하게 변해 코드를 가리지 않게 할 수도 있습니다.

코드조각(Code Snippet)을 통한 코딩생산성 향상 및 코드 재활용

코드조각(Code Snippet) 추가하기 기능은 VB에서만 제공하는 기능은 아니지만, 이를 활용하는 방식에 있어서는 C#에 비해 상당히 사용하기 쉬운 구조로 이루어져 있습니다. 개발하려는 코드에 대한 정확한 사용 방법을 알 수 없다면, 코드 창에서 ‘?’(물음표)를 입력 한 후 Tab(탭)키를 입력해 봅니다.

그림5

[그림 5: Visual Studio 2008 코딩 창에서 코드 조각 추가하기 메뉴 - ?(물음표)를 입력 후 Tab(탭) 키를 누른 경우]

각 시나리오 별 예제 코드들이 제공됨으로써 자신의 상황에 맞는 예제 코드들을 쉽게 재 활용할 수 있으며, 개발자가 자신의 입맛에 맞도록 코드들을 수정 및 추가할 수 있는 기능을 제공합니다.

제가 자주 사용하는 코드 조각 추가기능은 프로퍼티 자동생성 기능입니다.

코딩 창에서 Property 라고 입력한 뒤 Tab(탭)키를 치면 아래 [그림 6]과 같이 기본적인 프로퍼티를 생성하기 위한 코드가 자동으로 추가됩니다. 프로퍼티의 타입과 프로퍼티명 만 변경해 주면 자동으로 프로퍼티가 만들어집니다.

그림6

[그림6 : 코드 조각 추가 기능을 이용하여 프로퍼티 구문이 자동으로 추가된 예]

마치 자동완성 기능의 일부로 보여지지만, 본 기능은 코드 조각 관리자에 의해 등록된 코드 조각 템플릿들 중 프로퍼티 코드조각에 부여된 단축키(단축단어)에 의해 호출되어 추가된 코드입니다.

이와 같이 유용한 단축단어들을 사전에 알고 있다면 코딩의 생산성이 보다 높아지게 되는 것은 당연한 일입니다.

예를 들어 코딩창에 qConsole + Tab(탭) 키를 치면 LINQ 구문을 활용하여 Process 목록을 콘솔창에 나열해 주는 코드가 자동으로 생성될 것입니다.

객체의 타입이 먼저 선언되고 뒤이어 변수명이 선언되는 C 계열의 언어의 경우 심리적으로 개발자는 자신이 선언할 객체에 대하여 정확한 타입명을 암기(?)하고 있어야 하지만 변수명 선언에 이어 객체의 타입이 선언되는 VB의 경우에는 개발 도구에서 제공해 주는 인텔리센스 기능으로 인해 정확한 타입명을 암기하지 않아도 어렴풋한 기억만으로 코딩을 시작할 수 있습니다.

여담이지만 LINQ 구문에서 From 절이 SQL 구문에서와는 달리 Select절 보다 앞에 오게 된 이유도 바로 코딩상의 인텔리센스를 지원하기 위한 선택 이었다고 합니다.

그림7

[그림 7. 변수 객체 타입의 자동완성 – Str 뭐였더라?.... ]

지금까지 통합 개발 환경에서 VB.net 이 가진 생산성 측면에서의 타 언어들과 견주어 비교될 만한 특징들을 살펴 보았습니다. 전투에 있어 병사 개개인의 전투 능력은 필수적이지만 이 병사들의 개인화기가 어떠한 것 이냐에 따라 그 전투의 승패는 크게 다를 수 있을 것입니다.

앞서 텍스트 에디터를 사용하는 천재(?) 개발자들을 언급했지만, VB를 타 언어보다 사랑하게 된 가장 큰 이유는 바로 이러한 도구에서 제공해 주고 있는 바보(?)도 쉽게 개발할 수 있는 편의성과 생산성입니다.

이제는 관심의 초점을 VB9의 새롭고 강력해 진 언어적인 특징에 초점을 맞춰 보도록 합니다.

VB9의 언어적 향상

이 글의 제목에 Dynamic이라는 단어를 사용하였습니다. 일찍이 VB만큼 Dynamic- 동적 -이라는 단어가 잘 어울리는 프로그래밍 언어는 없었습니다. Late Binding의 강력한 기능은 오히려 그 넓은 융통성 탓에 강력한 타입기반의 프로그래밍 방법에 익숙한 C 계열 개발자들에게 비난이 되기도 하였지만, 또 다시 추세는 느슨한 타입기반의 언어들인 루비, 파이선, 자바스크립트, VB들에 관심이 쏠리고 있습니다.

또한 .NET 기반의 언어인 C#, VB.net 에 있어서도 LINQ(Language Integrated Query)의 출시와 함께 Late Binding의 언어적 특징인 타입 유추(Type Infer) 기능을 제공해 줌으로 이러한 특징들이 나타나기 시작했습니다.

VB.net 에서는 이제 예전의 방식과 같이

Dim aVar = “Viva VB!!”

와 같은 코드작성이 가능해 집니다. 이와 같은 코딩은 컴파일러에 의해 자동으로 String 타입으로 변환되어 컴파일 됩니다. 하지만 변수 선언에 항상 객체의 타입이 선언되어야 하는 C#의 경우에는 JavaScript에서의 변수 선언자인 var 를 차용해 올 수 밖에 없었습니다.

var aVar = “Are you C#?”

어딘가 어색하게 보이는 문장입니다. 어쩐지 맞지 않은 옷을 입고 있는 C#의 모습이 아닐까요? J

VB개발자들에게 있어서는 당연한 것으로 받아들여질 수 있으나, 이러한 .NET 기반 언어들의 변화는 프로그래밍 관점에 있어서의 많은 변화가 함께 수반될 수 밖에 없습니다.

또 하나 고무적인 사실은 차세대 웹 개발 플랫폼이라 일컬어지는 Silverlight 1.1 버전에서(이후 2.0으로 재 Vesioning됨) DLR(Dynamic Language Runtime)을 지원하는 언어로써 루비, 아이언 파이선, 자바스크립트, 그리고 VB를 선정하였다고 합니다. 위의 언어들이 가지는 공통적인 특징이 바로 Dynamic 이라고 하는 점을 생각해 보면 이는 당연한 결과입니다.

마이크로소프트의 .NET Framework 기반 언어로써 First Citizen이라 일컬어지는 언어들 중 유일하게 윈도우 플랫폼 기반의 어플리케이션과 Cross browser에서 실행 가능한 RIA(Rich Internet Application) 개발을 가능케 하는 언어는 VB가 유일한 것이 될 것입니다.

Born in XML!
그림8
[코드 1 – XML Text가 변수로 선언된 예]

왠지 기존 코드와 비교해 보자면 어색합니다. 위의 코드가 컴파일 될 수 있을까요?

VB9에서는 아주 자연스러운 코드가 됩니다.

별도의 Line 연결자인 _ (언더바) 문자 없이도 변수 선언과 함께 작성되는 XML 텍스트는 그 자체로 XElement 타입의 객체로 선언됩니다. (XML Header를 추가해 준다면 자동으로 XDocument 타입이 됩니다) 이제 VB에서는 XML 텍스트 자체는 하나의 XML 요소 객체로 인식될 수 있게 됩니다.

아래는 C#을 통한 코드 1의 XML XElement를 선언하기 위한 코드입니다.

얼핏 보기에도 아래의 코드는 직관적이지 못합니다.

그림9

[코드 2 – 코드1의 XML 텍스트를 만들기 위한 코드. 한눈에 봐도 어떤 구조인지가 눈에 들어오지 않음]

VB에서는 단순 XML 텍스트 선언뿐만 아니라 동적인 XML Element 들을 생성해 낼 수도 있습니다. 아래의 코드를 통해 보다 자세히 살펴봅니다.

그림10

[코드 3 – Process 목록들을 XML로 표시하기]

ASP에 익숙한 개발자라면 아주 친숙한 Data Placeholde(<%= %>)를 확인 할 수 있습니다. 바로 위와 같이 Data가 표기되어야 할 Data Island 부분에 <%= %> 코드를 통해 원하는 데이터를 추가해 넣을 수 있습니다. 뿐만 아니라 코드의 가독성이 상당히 뛰어 나기 때문에 XML을 생성하는 코드를 작성하는 데 있어 그 어떠한 언어도 가질 수 없는 장점을 가집니다.

기존의 XML에서 XML로의 변환을 위해 사용되었던 XSLT 변환 작업들이 이러한 VB의 Dynamic한 언어적 특징으로 인해 손쉽게 처리될 수 있는 방법이 생겼습니다.

XML 데이터의 생성뿐만 아니라 파싱에 있어서도 그 직관적이고 손쉬운 코딩은 빛을 발하고 있습니다. 아래의 코딩은 Microsoft 사의 MSDN 사이트의 RSS XML을 파싱하여 콘솔에 디스플레이 해 주는 코드입니다.

그림11

[코드 4 – RSS XML 파싱하기]

XML 파싱에 있어서도 언어와 XML 텍스트를 직관적으로 혼용하여 사용하고 있음을 확인할 수 있습니다.

위의 코딩 역시 C#으로 변환하면 아래와 같습니다. 모든 XML Element 들에 대한 파싱 방식이 메소드 기반으로 되어 있어 VB에 비하여 직관성이 많이 떨어짐을 알 수 있습니다.

그림12

[코드 5 – C# 으로 RSS XML 파싱하기]

VB를 통한 XML 파싱은 메소드 기반의 API 호출이 아닌 기본적으로 XPath 쿼리 문장에서 사용하던 모든 XML 표기법들을 그대로 활용할 수 있기 때문에 코드의 가독성과 직관성 및 XML 처리에 있어서의 생산성은 더욱 뛰어나게 됩니다.

Upgrade를 지원하는 유일한 언어!

VB6 코드를 VB.net으로 변환할 수 있는 방법은 매우 다양합니다. VB.net으로 코드를 변환해 주는 코드 변환기가 기본적으로 Visual Studio에서 제공되고 있으며, 기존 VB6 코드와 VB.net 코드를 함께 사용할 수 있게 해주는 Interoperability Toolkit을 VB.net 홈페이지를 통해 제공해 줍니다. 또한 COM객체를 그대로 이용할 수 있는 .NET의 장점으로 인해 코드의 변환 없이도 .NET에서의 코드 활용이 가능할 수도 있습니다.

무엇보다 Microsoft 사의 관리형 언어들 중 유일하게 VB만은 기존 개발자들의 기존 코드들을 위한 다양한 Upgrade 방법들을 제공해 주고 있습니다.

이미 개발된 VB코드들에 대한 부담이 큰 개발자들도 일단 한번 해당 프로젝트를 Visual Studio 2008에서 실행하여 업그레이드 마법사를 통해 변환되는 코드를 살펴보기 바랍니다. 개발자들의 코딩패턴에 따라 달라지겠지만 약 80% 정도의 코드들은 별도의 변환 없이 사용이 가능한 수준의 코드로 변환해 줍니다.

Why VB?

이 밖에도 많은 기능들이 Visual Studio 2008에서 VB에 추가되었습니다. 여기서 이 많은 기능들을 다 담아낼 수 없는 아쉬움은 있지만 앞서 살펴본 VB만이 가지는 생산성 높고 강력한 기능들 만을 보더라도 충분히 VB가 이전에 비해 얼마나 많이 달라졌는지를 느낄 수 있었을 것이라 생각합니다. 저 역시 VB6 이후 버전에 있어서 VB 개발팀들이 VB만의 Dynamic한 융통성을 제공해 주지 못하고 C#과의 문법적 차이 이외의 두드러진 장점을 제공해 주지 못했던 기존 버전에 대한 아쉬움이 적지 않았지만 이제는 ‘왜 VB냐?’는 질문에 대한 해답을 명쾌하게 해 줄 수 있게 된 것 같습니다. 차기 버전으로 새롭게 기획되고 있는 VBx(VB10)는 지금의 Dynamic한 VB의 장점들을 보다 향상시켜 DLR(Dynamic Language Runtime) 을 아우르는 강력한 언어로 탈바꿈 할 것으로 전해지고 있습니다.

보다 VB스럽고, 보다 Dynamic해진 VB9.

Visual Studio 2008을 통해 코딩을 하고 있노라면 타격감 좋은 온라인 게임을 즐길 때의 짜릿함이 느껴집니다. 여러분들도 다음의 링크에서 평가판(http://msdn2.microsoft.com/en-us/vstudio/products/aa700831.aspx) 을 다운로드 하고 새로워진 VB.net을 느껴보시기 바랍니다. 왜 VB인지 말입니다.

Thursday, September 25, 2008 3:10:01 PM (Korea Standard Time, UTC+09:00) ( 일상 )

아내가 나와 살기 이전부터 처갓집에 살고 있는 진돗개 잡종견 순이
이제는 인생(견생)을 즐긴다. 주인이 불러도 살짜쿵 씹어 주시고.. 심지어 귀찮아 하신다. 아래 동영상처럼 <img alt=" src="smilies/happy.gif">

동영상에서 애타게 순이를 찾는 목소리는 나의 아내.

# Thursday, September 04, 2008
Thursday, September 04, 2008 11:05:50 AM (Korea Standard Time, UTC+09:00) ( browser | Google | ie | Microsoft )

구글이 발표한 Chrome브라우저에 개발자들 뿐만 아니라 컴퓨터 좀 한다 하는 사람들의 관심이 대단한 듯 싶다.
Chrome브라우저에 탑재된 V8이라는 자바스크립트 엔진때문인지 CNET에서 발표한 벤치마크 자료에 의한 자바스크립트의 퍼포먼스는 상당히 놀랍다.

Script만으로 웹페이지를 어플리케이션의 경지에 올리려는 구글의 노력은 높게 평가할만 하다.

IE8이 베타2 오픈다운로드를 한지도 얼마되지 않았는데.... Rendering엔진도 엔진이지만 스크립트 퍼포먼스에도 어느정도 튜닝이 필요하지 않을까 싶다.
근데 이거 진짜야??? CNET 기사보기

# Thursday, August 21, 2008
Thursday, August 21, 2008 4:36:42 PM (Korea Standard Time, UTC+09:00) ( .net | visual studio | Winform | WPF | asp.net )


툴 박스를 이용한 UI의 생산성을 높여줄 수 있는 기발한 아이디가 돋보인다.

WPF, Winform, ASP.net까지 기본적으로 요구되는 다양한 UI ControlSet들을 몇번의 조작으로 손쉽게 완성한다.

게다가 Blend까지 지원하는 제품을 선보일 예정이라니... 놀랍다.
데모 Video clip만으로 신선하다.

시간을 갖고 좀 가지고 놀아 볼만한 가치가 있어 보인다. 와우~

http://machine.nukeation.com/default.aspx

# Wednesday, August 20, 2008
Wednesday, August 20, 2008 10:18:19 PM (Korea Standard Time, UTC+09:00) ( 일상 )

8월 16일 아침 단식 67일차 기륭전자 2명의 조합원이 병원에 후송되었다고 한다.

3년이 넘는 기간동안 진행되어 온 지리한 싸움은 현재 우리사회의 비정규직 문제가 얼마나 심각한 지경인지를 보여주고 있다.

아래의 영상은 기륭전자 조합원들의 3년간에 걸친 투쟁의 과정을 EBS의 지식채널e 팀에서 제작한 것이다.