C#2010.06.09 19:06
생성자에 다음처럼 구현하면 됩니다.

foreach (PropertyDescriptor property in TypeDescriptor.GetProperties(this))
                property.SetValue(this,"");

만약 property 의 타입이 다양할경우에 property.Name 으로 이름을 찾아가면서 초기화 할수도 있습니다.
Posted by dotnetpower

댓글을 달아 주세요

Think about it.2010.05.14 11:09
오랜만에 포스팅 합니다.

기술적인 부분은 요즘 진행하는 세미나에서 직접 말씀드리고 있으나, 세미나 내용을 블로그로 옮겨야 하는데, 인맥, 페이스북을 하다보니 블로그에는 좀 소홀해진것 같네요. ^^;

어제 네이트온 오픈 컨퍼런스에 다녀왔습니다. 이유는 Open API 에 관해 정보를 좀 얻고자 갔었는데, SK컴즈에서 굉장히 준비를 많이 했고, 훌륭한 컨퍼런스여서 보람있었습니다. 덕분에 포스팅을 하게 되었습니다.

요즘 마이크로 블로그가 대세인데요, 싸이 미니 홈피 하나씩은 가지고 계시죠? 컨퍼런스에서 어떤 실장님이 말씀해 주신 내용인데, 하루에 네이트온을 켜고 채팅하면서 엔터치는 횟수가 5억번 이라고 합니다. 대단하죠? 그 많은 대용량 데이터 처리도 대단하지만 발빠른 대응에 대해서도 감동 받았습니다. 국내에는 잘 알려진 미투데이 라는 SNS가 있는데, 네이트에서도 커넥트라는 서비스를 지난 3월 부터 시작했습니다. 아직은 초기 단계라 부족한 부분이 많아 보이는데요, 강점은 네이트온에 등록된 친구에게 곧바로 커넥팅을 할수 있다는 굉장히 유리한 포지셔닝을 하고 있는점이 부러웠습니다.

BNS를 지향하는 인쿠르트 인맥은 약간 다른 성격을 가지고 있습니다. 우선 익명성을 보장하지 않으며, 실명과 자신의 프로필 사진이 개인의 아이덴티티가 되어 신뢰를 바탕으로 한 소셜 네트웍 으로써 상대를 비방하거나 잘못된 발언을 하기가 쉽지 않습니다. 덕분에 어느정도의 예의가 지켜지며 신뢰를 쌓아가면서 더욱 친밀한 인맥 관계를 유지 할수 있는 점이 가장 큰 장점인것 같습니다.

아래 이미지는 인맥을 사용하는 사람중 같은 인크루트 직원끼리 정보교류를 하는 장면(?) 입니다.

소셜네트워크를 연구하시는 KAIST 한상기 교수님께서는 이런말씀을 하셨습니다. 가장 중요한건 Fun 이라고. 재미가 없으면 서비스를 이용하지 않는다.

맞습니다. 재미가 있어야 합니다. 예전에 싸이월드 미니홈피를 한참 할때는 어찌나 꾸미고 싶던지... 체류시간이 엄청났습니다. 재미있었거든요.. 근데 요즘에 나이가 좀 들어가니깐.. 아기자기한 미니홈피가 좀 어섹해지는겁니다. 어제 어떤 스피커분도 그런말씀 하셨지요.. 미니홈피는 거의 19-24의 전유물이라고..

그렇다면 싸이월드 커넥트는 네이트온을 쓰는 사람들을 서로 연결해 줄수있는 아주 좋은 매개체가 될수 있을것 입니다. 또한 대화명 변경할때 커넥트로 보낼수도 있다고 합니다. 대화명을 바꾸는 이유는 저같은 경우는 심신에 변화가 생길때입니다. 오늘은 기분이 않좋으니 건들지 마라 라는 뜻의 "폭팔물 점화..." 라든지, 야근을 많이 할때 "태양이 필요해~" 라든지.. 기분이 좋을때 "세상을 눈으로 보고 마음으로 느낄 수 있어서 너무 행복합니다." 라는식의 대화명을 변경하지요..

사람들은 서로 의지하고 소통하며 살아가려는 본능이 있는데 그걸 잘 이용한게 메신져의 대화명인것 같습니다.

그렇다면, 요즘 넘쳐나고 있는 마이크로 블로그를 어떻게 사용해야 할까요? 저는 Twitter, Facebook, 인크루트 인맥, Me2Day, Nate Connect, Digg, Foursquare 등을 사용하고 있습니다. 하지만 각각의 서비스에 대한 저의 아이덴티티는 모두 다르게 표현되고 있습니다.

  • Twitter - Instant Message, SNS, 기술에 대한 정보교류
  • Facebook - Social Hub, 벤치마킹
  • Me2Day - 정말 편하게 아무말이나 툭 뱉을수 있는 장소
  • 인크루트인맥 - 회사 직원들의 정보 공유 및 수평적 메시지 전달, 제안, 유사 업종 종사자들과의 소통.
  • Nate Connect - 일방적인 관심을 가지는 중.
  • Digg - 깊이 있는 기술자료 공유
  • Foursquare - 지리적 흔적 남기기
여러분들도 잘 생각해 보시면 각 서비스마다 다른 성격의 자신을 발견할수 있을것입니다. 카카오 같은 사이트가 어떻게 보면 굉장히 훌륭한 개념이지만, 홍보하기가 어렵습니다. 국내 10대들은 미니홈피 이외엔 트위터나 페이스북 조차 관심을 가지지 않는다고 하더군요.. 물론 관심을 가지는 10대도 있겠지만 통계적 자료에 의하면 20대 후반에서 30대가 주류라고 합니다.

만약에 미니홈피를 하나씩은 가지고 있는 10대들을 대상으로 SK컴즈가 카카오 사이트를 커넥트 보다 먼저 오픈했더라면 어땠을까? 하는 생각도 해 봅니다. 어떠한 특정 그룹을 카페나 클럽이 아닌 마이크로 블로그에서 간단한 정보를 주고 받는 소통이 진정한 소셜네트워크 서비스라 생각이 되네요.

인크루트 인맥을 이런점에서 매우 유리하다고 생각합니다. 같은 직종. 개발자, 영업자, 기획자 등 같은 직종 사람들과 연결이 되어 비슷한 정보를 교류하기가 용이합니다. 국내 웹에 절실히 필요한 서비스라 생각이 됩니다. 그리하여 계속 발전시키고 있습니다. :)

저는 개발자 커뮤니티에 가면 기술적인 내용을 제외한 친분을 유지하기 위한 자유게시글은 대부분 마이크로 블로그 글 수준의 단문이 대부분입니다. 아직은 부족한점이 많아 고도화 작업이 계속 되고 있지만, 많은 분들이 사용해 보시고 불편한 부분이나 개선할 부분이 있으면 지적해 주시면 정말 도움이 많이 될것 같습니다.

저는 개발과 참여를 위해 OpenAPI를 개발하기위해 설계중입니다. OpenAPI개발이 되면 여러분들이 직접 개발을 하실수도 있게 됩니다. :)
여러분들의 많은 의견과 참여를 간절히 바라고 있습니다.


인크루트


인맥

인크루트 인맥 http://nugu.incruit.com
Posted by dotnetpower

댓글을 달아 주세요

  1. ㅎㅎ

    인맥이라 좋은거 같아요

    2010.05.15 15:57 [ ADDR : EDIT/ DEL : REPLY ]

기타2010.05.10 14:50
Acrobat 8 이 설치될때 64비트 운영체제에서 테스트 했음에도 재 요청하는 경우입니다.

이때는 당황하지 마시고, 첨부한 AdobePDF.dll 을 지정해 주시면 잘 설치 됩니다.

Posted by dotnetpower

댓글을 달아 주세요

ASP.NET2010.02.05 17:06

원문 : http://haacked.com/archive/2010/02/04/aspnetmvc2-rc2.aspx

오늘 오전에 ASP.NET MVC 2 RC 2 가 발표되었습니다.

가장 눈에 띄는점은 유효성 체크 입니다.

ASP.NET MVC 가 처음 나왔을때 제가 느낀 불편한 점이 몇가지 있었는데요, 그 중에 유효성 체크도 있었습니다.
하지만, 이번 RC2 에서 가장 크게 바뀐 부분이고, 지금껏 많은 개발자들이 이부분에 대한 피드백을 주어서 반영된것 같습니다.

기존에는 유효성 검사를 하기위해서는 HttpVerbs.Post 동사 부분에서 If 문으로 처리를 하였죠?
다음처럼 말이죠...
'
' POST: /Product/Create

<AcceptVerbs(HttpVerbs.Post)> _
Public Function Create(<Bind(Exclude:="Id")> ByVal productToCreate As Product) As ActionResult
    ' Validation logic
    If productToCreate.Name.Trim().Length = 0 Then
	    ModelState.AddModelError("Name", "Name is required.")
    End If
    If productToCreate.Description.Trim().Length = 0 Then
	    ModelState.AddModelError("Description", "Description is required.")
    End If
    If productToCreate.UnitsInStock < 0 Then
	    ModelState.AddModelError("UnitsInStock", "Units in stock cannot be less than zero.")
    End If
    If (Not ModelState.IsValid) Then
	    Return View()
    End If

    ' Database logic
    Try
	    _entities.AddToProductSet(productToCreate)
	    _entities.SaveChanges()
	    Return RedirectToAction("Index")
    Catch
	    Return View()
    End Try
End Function

ref : http://www.asp.net/learn/mvc/tutorial-36-vb.aspx

하지만, 이번 RC2 에서는 이 부분이 단순하게 다음처럼 바뀌어버립니다.
'
' POST: /Product/Create

<AcceptVerbs(HttpVerbs.Post)> _
Public Function Create(<Bind(Exclude:="Id")> ByVal productToCreate As Product) As ActionResult
    ' Validation logic
    If ModelState.IsValid Then
	    Return View()
    End If

    ' Database logic
    Try
	    _entities.AddToProductSet(productToCreate)
	    _entities.SaveChanges()
	    Return RedirectToAction("Index")
    Catch
	    Return View()
    End Try
End Function


윗부분에 필드별 조건문은 모두 없어졌습니다.

핵심은 Models 영역의 <Required()> 어노테이션 선언 덕분입니다.
Input Validation vs. Model Validation in ASP.NET MVC

이제 좀 쓸만하겠는데요?

하지만 아직 URL Rewrite, Routing 부분은 좀더 개선이 필요해 보입니다.
Posted by dotnetpower

댓글을 달아 주세요

  1. 워너해피

    조금전에 다운받아서 프로젝트 생성해 보니 프로젝트(.csproj) 내부를 보니 Preview버전에 존재하던 Area셋팅이 없던데 어떻게 된건가요?

    2010.02.08 15:13 [ ADDR : EDIT/ DEL : REPLY ]
    • 라이브 메신져로 답변을 드렸지만, 다시 한번 정리 하자면 Area 셋팅이 없어진게 아니라, 솔루션에서 추가하도록 변경이 되었습니다.

      2010.02.09 14:18 신고 [ ADDR : EDIT/ DEL ]

Think about it.2010.01.27 13:14
Social Network는 1954년에 J.A. Barnes에 의해 사용되기 시작한 용어로, 오랜 시간 동안 사회과학 분야에서 사용되는 중요 연구 방법론입니다.

소셜 네트웍을 공학적으로 표현 하면 사회를 구성하는 요소를 노드(node)로 표현하고 각 구성요소간의 관계를 엣지(edge)로 묶어 표현한 사회구조(Social Structure)를 소셜 네트워크(Social Network)라 합니다.

노드는 사회를 구성하는 개인과 집단을 대표합니다. 그리고 각 노드를 연결하는 엣지는 사회 구성요소 간의 다양한 사회 관계를 표현합니다. 사회 관계는 단순한 호불호 이상의 상호의존적 관계를 포함하는데, 금전관계, 교우관계, 협업관계 등 사회현상을 반영한 관계정보 등이 대표적입니다.

대표적인 소셜 네트웍이 싸이월드, Facebook, MySpace 등이 있습니다.

사람들은 왜 소셜에 열광을 할까요?

처음에는 다들 하니까 나도 한다 라는 식으로 싸이월드를 시작을 했습니다. 그 전에 해외에는 MySpace 라는 서비스가 있었죠. 개발자가 아닌 사람들은 소셜 네트웍 서비스에 대해서, 그냥 사용하기 쉬우면 그만입니다. 하지만 개발자는 다른 관점에서 소셜네트웍에 대해 바라봐야 합니다.

예전에 이런글을 봤습니다. 어떤 지인이 화면에 공이 튀는 프로그램을 만들어 달라고 했습니다. 요청한 사람은 화면에 공 하나가 떨어져서 통통 튀면 되는것이죠. 하지만 개발자 입장에서는 공의 크기, 무게, 중력값, 바람 요소 유무, 바닥 재질 등을 생각을 해야 했습니다. 마찬가지로 소셜도 분명이 구성요소가 있습니다. 겉보기에는 미니홈피 같은 간단해 보이지만, 실체는 그렇지 않습니다.

SNA(Social Network Analysis) 를 통해 사회구성원간의 관계를 측정하고 매핑하여 정보/지식처리(information/knowledge processing)까지 이르는 일련의 과정을 거치게 됩니다. 이것을 싸이월드에서는 일촌, 이촌 등으로 표현한 것이구요.




이 관계망을 위한 알고리즘은 다음과 같이 A* 중심으로 다양하게 존재합니다.

A*
- Best first
- Least-cost path from initial node
- Distance + cost

in-degree
out-degree
nodal degree
ego group selection
density
actor degree centralization
group degree centralization
actor closeness
group closeness centrality
actor betweenness
group betweenness centrality
cliques.

Facebook을 예로 들면, 어디선가 본사람을 추천 해 줍니다. 지인의 지인이죠. 하지만, 지인의 지인이 너무 많습니다. 그럴때엔 관심사를 필터링해서 보여주기도 하고, 지역으로 필터링 해서 보여주기도 합니다. 다양한 사회구성원간의 관계를 결국에는 수식으로 풀어서 보여준다는것입니다. 쉽지는 않죠?

최근 네이트에서 검색을 하시면 시맨틱 웹검색이 됩니다. 원하는 자료를 잘 찾을수 있죠. 시멘틱이란 위키에서는 다음과 같이 설명하고 있습니다.

시맨틱 웹(Semantic Web)은 현재의 인터넷과 같은 분산환경에서 리소스(웹 문서, 각종 화일, 서비스 등)에 대한 정보와 자원 사이의 관계-의미 정보(Semanteme)를 기계(컴퓨터)가 처리할 수 있는 온톨로지형태로 표현하고, 이를 자동화된 기계(컴퓨터)가 처리하도록 하는 프레임워크이자 기술이다. 웹의 창시자인 팀 버너스 리가 1998년 제안했고 현재 W3C에 의해 표준화 작업이 진행중이다.

위에서 설명하는 시맨틱웹의 정의를 보면 "온톨로지" 라는 개념이 있습니다. 이 온톨로지 기반으로 단순 BINARY 관계를 확장하여 STRENGTH, INTIMACY는 물론 GROUPING이 가능하며 명시적인 관계를 표현할 수도 있습니다.


사회관계를 표현하는 방법으로 온톨로지를 사용했을 때 몇가지 이점들이 있습니다. 첫 번째는 온톨로지가 일반적으로 컨셉과 컨셉간의 관계를 배치하고 표현하는데 사용되므로 사회관계망을 구성하는 요소들과 그 특성들을 표현하는데 적합하다는 것입니다. 두 번째는 사회관계망의 특성상 상호 관계 모순과 부정합을 온톨로지를 이용한 추론을 통해 해소할 수 있다는 것이며, 세 번째는 온톨로지에 규칙을 추가함으로써 기존에 발견된 관계 이외의 사람, 조직, 위치, 이벤트 등과 관련되어 새로운 관계들을 발견할 수 있다는 점입니다.

SNS에는 7가지의 요소가 존재 합니다.

• Identity (아이덴티티)
• Presence (존재)
• Relationships (관계)
• Conversations (대화)
• Groups (그룹)
• Reputation (평판)
• Sharing (공유)

이 요소들이 유기적으로 결합되어지는 파운데이션이 현재 우리가 사용하고 있는 웹2.0 이고, 나아가서 웹3.0 시대에는 시맨틱웹으로 발전을 할텐데, SNS는 3.0을 준비하는 현재 우리에게 꼭 필요한 기술입니다. 제가 생각하는 시맨틱의 필수요소중 가장 중요한 요소가 Intelligent 입니다. 이 Intelligent를 제공하는 서비스가 클라우드이고, 피할수 없는 기술이 되어질 것입니다.

개발자들은 더이상 Functional development 가 아닌 Semantic development 를 하여야 합니다.

Next generation web 에서는 반드시 白鳥的水上高雅(백조적수상고아) 가 될것입니다. 준비합시다.!!!

참고자료
 - 소셜네트워크(Saltlux)
 - 시맨틱웹(Wiki)
Posted by dotnetpower

댓글을 달아 주세요

Small Basic2010.01.20 12:59

내친김에 스몰베이직에 포함되어 있는 플리커 API 로 간단히 사진을 가져오는걸 해 보겠습니다.

변수 dog, cat 에 Flickr API를 이용해 다음 처럼 간단한 코드로 사진을 가져올수 있습니다.


GraphicsWindow 는 커맨드 창이 아닌 그래픽 윈도우를 생성하는것이고, 창 크기를 가져온 이미지 사이즈에 맞추기 위한 코드가 있으며, 이미지를 위치에 맞게 DrawImage(이미지,left, top) 에 맞게 위치를 잡아주면 다음처럼 결과가 나옵니다.


간단히 돌려보시려면, 프로그램코드(LCK684)을 가져오기를 선택해서 입력하면 제가 입력한 위 코드를 한번에 내려받아 테스트 해 볼수 있습니다.

아이들이 프로그래밍 언어를 배울때 아주 재미있게 배울수 있겠지요? :)
Posted by dotnetpower

댓글을 달아 주세요

Small Basic2010.01.20 11:53

귀여운 스몰베이직이 벌써 0.7 까지 버전 업이 되었습니다.

이번에 눈에 띄는것은 Small Basic으로 작성된 코드를 졸업(?) 이라는 메뉴를 통해 Visual Studio 로 컨버팅이 가능하다는것 입니다. 그리고, 한글화 작업이 되었군요.

초딩... 아니 그 전에 5살 된 조카에게 잘~ 하면 가르칠수도 있을것 같습니다.


이렇게 입력하고(코딩이라 하기 민망해서 ^^;) 실행(F5) 를 누르면 이처럼 잘 나옵니다. ㅎㅎ




컨버팅을 해 보았습니다. ㅎㅎ


귀엽지 않나요?


Posted by dotnetpower

댓글을 달아 주세요

VB.NET2010.01.19 18:55
얼마전 유명한 IT 컨설턴트이신 안재우 수석 님의 블로그(http://blog.naver.com/saltynut/120097740266)에서 VB의 성능이 떨어진다고 하시는것같은 느낌을 받아서 댓글을 달았습니다만 더 자세히 알아보니 다른부분이 좀 있긴 했습니다.

Dynamic 과 LateBinding 이 다른 레벨이라고 안수석님이 설명하셨듯이 다른 레벨이 맞습니다. LateBinding 이 Dynamic 에 포함된 부분이죠.

그러면, 제가 의아해 했던 부분인 DataType을 Object 형으로 선언 했을때와 하지 않았을때의 결과는 완전히 다르게 나타납니다.

Sub Main()

    Dim factory As PersonFactory = New PersonFactory()
    Dim person As Object = factory.Create("moonhyuk")
    person.Greeting()

End Sub


'------------------- or ----------------------

Sub Main()

    Dim factory As PersonFactory = New PersonFactory()
    Dim person = factory.Create("moonhyuk")
    person.Greeting()

End Sub

위처럼 두가지 방법으로 다이나믹 코드를 작성 할수가 있는데요,  DataType을 Object로 선언을 한 부분은 컴파일 후 리팩터를 통해서 보면 다음처럼 변환이 되어 있습니다.

NewLateBinding.LateCall(RuntimeHelpers.GetObjectValue(factory.Create("moonhyuk")), Nothing, _
"Gretting", New Object(0-1){}, Nothing, Nothing, Nothing, True)


두번째, DataType를 선언 하지 않은 전통적 방법의 Dynamic 선언은

factory.Create("moonhyuk").Gretting

처럼 깔끔하게 바뀌게 됩니다.


이에 대해 VB-Insiders 에 문의 한 결과 VB.NET Spec lead 인 Lucian Wischik 에게 다음과 같은 답변이 왔습니다.

Sub f(Byval p as Person)
    p.Greeting()
End Sub
이 경우는 Greeting 메서드에 정적 바인딩이 되고, 컴파일러가 정확히 Greeting 메서드를 알고 있기 때문에 Early Binding이 되어 버립니다.
이말은 컴파일시에 바인딩이 되므로, Dynamic 이라 하기가 어렵다는것이죠. ㅡㅡ;


그러면, 두번째 경우인

Sub f(Byval p as Object)
    p.Greeting()
End Sub

이 경우가 다이나믹 바인딩이 되는것인데, 이때 System.Dynamic.IDynamicObjectProvider (다른말로 DLR 객체) 가 Greeting 이라는 메서드를 Invoke 합니다. 메서드 호출에 실패하면 COM 리플렉션을 통해 p 를 COM 이라고 생각하고 또다시 찾습니다. 그래도 실패하면 System.Reflection 의 look up 을 통해 Greeting 이라는 메서드를 찾습니다.

이 과정이 Microsoft.VisualBasic.dll의 NewLatebinding.LateCall 에 의해 처리가 됩니다.

Late Binding 또는 Dynamic Binding 을 할때 DLR call-site 인스턴스를 생성하게 되고, 다시 호출할때는 call-site를 참조를 합니다만, 아쉽게도 C#의 경우는 call-site cache 영역이 있지만, VB.NET 에는 cache 영역이 없습니다. ㅡㅡ;
이 부분 때문에 속도 차이가 이렇게 많이 나는 것 입니다. 이 부분은 인정 하지 않을수가 없습니다.

Late Binding 혹은 Dynamic Binding 은 성능에 우선을 두는게 아니라 유연함과 접근성에 중점을 두는것인데, 성능 비교를 한다는것 자체가 아이러니 합니다만, 단지 좋아하는 VB 가 성능이 나쁜 언어이고, 뒤쳐지는 언어 라는 느낌을 받아서 몇가지 테스트와 여러군데 자문을 구해보았습니다.

사실 몇천, 몇만번 이상의 반복적인 수행을 하는 코드에 다이나믹으로 처리 한다는것 자체가 이상하긴 하지만, 어쩔수 없이 써야 할 경우는 정성태 MVP 님의 C# 4.0 - dynamic 키워드 에서 사용하신 LCG 를 통한 성능 향상 방법도 있으니 참조하시면 좋겠네요.

결론을 짓자면, VB는 C# 보다 Dynamic Binding 이 느리다! 입니다.

Posted by dotnetpower

댓글을 달아 주세요

  1. neominky

    둘다 리플렉션에 기반한 방법 입니다. LateCall 은 범용적으로 쓸 수 있도록 만들어져 있다보니 검사하고 Lookup 하는 과정에서 많은 성능 저하가 발생합니다. dynamic은 이문제를 해결하려고 컴파일러가 LateCall의 최적화 코드를 마구 삽입 한것에 불과 합니다. LateCall을 좀더 좋게 따라하기 위해 나온것이 비슷하거나 느리면 안되겠죠. VB가 캐쉬를 두지 않는 것은 좀 의아하긴 합니다만(특수한 상황 문제일수도, C#도 같은 조건으로 프로시져를 분리해 봐야할듯) 제가 볼땐 전혀 다른 레벨이다 라고 보기보단 수평적으로 성능을 개선했다 정도로만 보입니다. LateCall 한개(?)를 따라하기 위해 매우 많은 사용자 코드를 조작하는데, 이러한 방법은 VB와 C의 컨샙이 서로 뒤바뀐것 같습니다. C#의 장점이 Reflector로 봤을때 사용자 코드와 거의 같은 내용으로 나오는 것이었는데 말이죠.

    2010.11.18 10:53 [ ADDR : EDIT/ DEL : REPLY ]

Think about it.2010.01.03 14:50

2010년 경인년 1월 1일 반가운 소식이 왔습니다.

VB.NET 부분 MVP가 되었다는 반가운 메일이 왔습니다.

앞으로 더 좋은 컨텐츠를 생산해 내야 하는 부담감이 생겼네요 ^^; 좋은 컨텐츠 많이 생산해 내도록 하겠습니다.

--

10년 전만 해도, 응용프로그램 쪽 시장중 Visual Basic이 차지하는 비율이 엄청났지요.. 하지만, 닷넷프레임웍이 나오고 OOP로 변경이 되면서, Object Driven방식에 익숙해 져있는 VB 개발자들은 언어의 Generation에 따라오기가 힘들었고, 자바쪽으로 많이 넘어갔습니다. 저 또한 왔다갔다 했으니깐요..

하지만, Dim, ReDim, Optional 과 같은 키워드를 사용할수 없어서 불편함을 많이 느꼈습니다.

지금 생각해 보면 단지 좋은경험에 불과한것 같습니다

언어별 색깔이 있고, 시스템에 맞는 언어를 선택하여 구현하는게 제일인것 같습니다.

요즘 JAVA가 잘 나가죠? 2000년만 해도 지금의 자바시장 보다 VB시장이 더 컷던것 같습니다. 물론 개인적인 생각이구요 ^^;

이 아티클을 읽는 사람중 VB개발자에서 필요에 의해서가 아니라, 겉멋(?) 또는 브레이스({})로 인해 C개발자 라고 생각이 들어 C#으로 가신분들은 어리석다고 생각합니다. 

닷넷프레임워크의 기본을 생각해 보십시요.

또한 VB.NET의 Background Compiling 과 같은 우수한 기능, 그리고 예전부터 익숙한 문법들을 버리면서 왜 가셨어요?

많지 않은 경험이지만 경험상 제가 느낀 대세 언어들의 특징은 다음과 같습니다.

<JAVA>
1. Bing, Google에서 모든 자료를 얻을 수 있습니다.
2. 배우기 쉽고 사용하기 쉽습니다.
3. 초기 프로젝트 설정이 어렵습니다. 특히 외부 프레임웍 도입시.

<C#>
1. Bing, Google에서 자료를 얻기가 비교적 수월합니다.
2. 영향력있는 Scott Guthrie 가 C#을 담당하여 전파중입니다.
3. Background Compiling이 잘 안됩니다.

<VB.NET>
1. Bing, Google에서 자료를 얻기가 쉽지 않습니다.
2. 시장이 많이 좁아졌습니다.
3. Background Compiling이 잘 됩니다.
4. VB.NET 1.x 때와 상황이 많이 달라졌습니다.(6.0개발자도 곧바로 넘어올수 있습니다.)


어쩌다 또다시 비교를 하게 되었습니다.
너무 아쉬워서 입니다. 정말 기회가 된다면 "VB개발자들이 왜 JAVA나 C#으로 갔을까요?" 라는 책을 쓰고 싶을정도 입니다.

어쩌다보니 너무 길어지는것 같아서 정리를 하자면,
지금은 언어의 성숙도가 많이 높아져 있으며, 어떤 언어가 더 우수하다고 비교하기가 어려울 정도 입니다.
특정 언어만 좋다고 생각하는것은 그 언어 이외에 다른언어를 사용할 기회가 많이 없었기 때문이라고 생각합니다. 여러가지 언어를 접해 보면서, 상황에 맞는 언어와 프레임웍을 선택하는것이 올바르다고 생각합니다.
이상입니다.


Moonhyuk, Choi
- VB.NET MVP 2010
- VB.NET Insider
- C# Insider
- CodeProject Associate


 
 
 




Posted by dotnetpower
TAG c#, java, MVP, vb.net

댓글을 달아 주세요

  1. Hoons

    와우 축하드려요. 그리고 좋은글 잘읽었습니다 (_ _)

    2010.01.03 17:18 [ ADDR : EDIT/ DEL : REPLY ]
  2. 한진수

    오우~ 축하드립니다. 책한권 써주시면 구매토록 하겠습니다 ㅎㅎ

    2010.01.03 19:03 [ ADDR : EDIT/ DEL : REPLY ]
  3. 축하드립니다.^^

    2010.01.03 21:32 신고 [ ADDR : EDIT/ DEL : REPLY ]
  4. 와우 2010년 좋은 소식을 받으셨네요 ^^

    정말 축하드리구요 ^^ 새해 복 많이 받으세요 ^^

    2010.01.03 21:33 [ ADDR : EDIT/ DEL : REPLY ]
    • 감사합니다. 소년포비님~ 윈모 활동 열심히 하시더라구요.. 포비님도 새해 복 많이 받으세요 ^^

      2010.01.03 21:56 신고 [ ADDR : EDIT/ DEL ]
  5. MVP 축하 드려요~
    그리고 새해 복 많이 받으세요~

    2010.01.04 10:29 [ ADDR : EDIT/ DEL : REPLY ]
  6. 추카 ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

    2010.01.04 11:13 [ ADDR : EDIT/ DEL : REPLY ]
  7. 와우~ 축하드립니다. ^^

    2010.01.04 13:51 [ ADDR : EDIT/ DEL : REPLY ]
  8. 지송

    축하드립니다.
    MVP... 그림에 떡이랄까낭...
    VB는 쬐끔뿐이 못접해봤지만... 보면 볼수록 어렵든데요.
    좋은 컨텐츠.. 많이 푸시고요.
    올해는 C#개발자를 VB.NET으로 꼬셔오기... 뭐 이런 목표를 잡아보심 어떨까요? ^^;;

    2010.01.04 19:56 [ ADDR : EDIT/ DEL : REPLY ]
  9. 축하드립니다. 새해 좋은일로 시작하셨으니 한번쏘세요~! ㅋㅋㅋㅋ

    2010.01.05 09:04 [ ADDR : EDIT/ DEL : REPLY ]
  10. 와~~ 축하드립니다^^

    2010.01.05 13:32 [ ADDR : EDIT/ DEL : REPLY ]
  11. Seonjin

    완전 축하 드려요!!! 만인의 기대에 부흥하여 정말 책도 함 써야 되겠어요~! 추카추카~

    2010.01.05 17:36 [ ADDR : EDIT/ DEL : REPLY ]
  12. jumptovb.net

    축하해요~~

    2010.01.25 15:17 [ ADDR : EDIT/ DEL : REPLY ]

기타2009.12.21 17:07
SharedPod 이라는 프로그램인데요, http://www.getsharepod.com/download/ 에서 다운받아서 압축을 풀고 SharedPod.exe 를 실행하면 됩니다.


그러면 아래와 같이 MP3/Video/PodCase 목록이 나나타는데, 이때 원하는 파일을 선택하고 좌측상단에 Copy to PC 를 선택하면 PC로 복사가 되죠 ^^
 

MP3를 PC로 옮기는데 유용한 자료가 되었으면 좋겠습니다. ^^
Posted by dotnetpower

댓글을 달아 주세요