Think about it.2011.10.19 20:33
시간 복잡도와 공간 복잡도 라는 개념이 있습니다.

프로그램의 알고리즘이 얼마나 시공간적인 최적화가 되었는지 확인 할수 있는 방법입니다. 복잡도가 0에 가까울수록 좋은 알고리즘이지요.

예전에 컴퓨터 사양지 좋지 못할때는 최적의 알고리즘으로 만들어야 했습니다. 물론 지금이라고 대충 만들면 된다는건 아니지만 지금은 어떻게 개발하던 작은 프로그램의 연산 속도는 비슷합니다. codeguru에서 이전에 While문이 빠른지 For문이 빠른지에 대한 아티클이 생각나네요 ^^

현재는 단순한 알고리즘이 문제가 아니라 수많은 자료형, 라이브러리, 프레임웍 사이에서 최적의 조합을 찾는것이 문제입니다.

예를 들면 빠른 응답속도의 웹페이지를 만들때 캐싱을 하냐 안하냐가 엄청난 퍼포먼스 차이를 보여줍니다. 하지만 실시간으로 변하는 데이터를 캐싱 하게 되면 단순히 플랫폼에서 제공되는 캐시로는 처리하기가 어렵습니다. 더군다나 대형 웹 사이트인 경우는 WebFarm 기반이라 캐싱된 데이터의 싱크문제도 있습니다. 이런경우는 캐쉬서버를 별도로 두어서 운영하는데 실시간 데이터의 무결성을 보장하려면 데이터가 변하는 액션이 있을때 마다 캐시데이터도 갱신 해주어야 합니다.

그렇다면 빠른 퍼포먼스를 위해 캐싱을 하기위해 캐쉬서버와 통신하는 코스트를 따진다면 결코 시공간 복잡성이 높아지고 소프트웨어 품질도 나빠집니다.

이런 경우라면 차라리 쿼리튜닝과 적절한 인덱스 설계로 응답속도를 줄일수 있을것 같습니다.

지금까지 수많은 코드를 짜면서 100% 만족하는 코드를 짤수 없었습니다. 항상 이 트레이드 오프가 걸렸기 때문이죠...

iPhone 에서 작성된 글입니다.
신고
Posted by dotnetpower
Think about it.2010.08.27 14:03

소셜네트워킹 서비스를 개발하면서 여러가지 자료를 많이 찾아 봅니다. 


얼마전 가장 가까운 사람에게서 SNS에 미쳤다 라는 소리를 들었습니다. 미친게 아니라 당연한거라고 생각했고, 그 말을 한 사람이 지금 트위터와 페이스북을 자유롭게 쓰고 있습니다. 


왜 느닷없이 소셜네트워킹 서비스라는게 필요하게 되었을까요? 그리고, 소셜네트워킹 서비스를 사용하면서 달라진 라이프스타일이 무엇일까요? 


저는 요즘 이런생각을 합니다. 인터넷이라는게 생겼을때 이걸로 무엇을 할수 있을까? 그때는 인터넷 자체를 모뎀으로 해야 하니, 인터넷 사용료가 나갔습니다. 그때 홈페이지의 가장 이슈는 이미지 사이즈 줄이고, 텍스트도 필요한것만 나오게 하는것이였죠. 점차 국내 인터넷 환경이 좋아지면서 전용선이 설치가 되고, 인터넷 컨텐츠들이 풍부해 졌습니다. 게다가 매크로미디어 플래쉬가 인터넷의 환경을 확 뒤집어 놨죠. 하지만 한계가 있습니다. 플래쉬로 만든 컨텐츠는 검색이 되지 않는다는 점입니다.


어떤 에이젼시에서는 웹사이트를 플래쉬로만 만드는걸 자랑하는걸 봤는데.. 정말 아니다 싶었습니다. 


인터넷은 모든 사람이 평등하게 어떠한 정보를 주고 받을수 있는 공간입니다. 하루에도 수백억개의 컨텐츠가 쏟아져 나오고 필요한 정보를 찾기가 점점 어려워 지고 있었습니다. 


그때 구글에서 새로운 검색방법론을 내놓았지요. 검색어가 많이 있는 문서의 가치 보다 인터넷의 핵심인 하이퍼텍스트가 서로 많이 엮여져 있는 문서의 가치가 높다는걸 알고 상위에 노출하였습니다. 결국 맞아 떨어졌습니다. 하지만 여기에 오류가 있습니다. 한상기교수님께서 주장하시는것 처럼 초등학생이 검색한 결과와 나의 검색 결과가 같다는건 나에대한 모독이다 라고.. 


"영화를 검색하거나 여행지를 검색해도 나와 소셜 서클(Circle)로 연결된, 소셜 그래프에 결합된 나의 온라인 친구들의 이야기가 더 흥미롭고 때로는 유익한 정보를 담고 있다. 왜냐면 그들의 취향과 글의 가치를 내가 알고 있기 때문이다. 일반 정보나 지식인 정보는 내게는 그저 시간나면 볼 정도의 부차적인 정보일 뿐이다. 네이버 영화의 별점은 나에게 아무 의미 없는 데이타이다. 거기에는 내가 아는 사람이 없기 때문이다. 나는 내 친구의 별점을 알고 싶을 뿐이다."
  - “소셜웹의 핵심: 프로파일과 소셜 그래프” 


맞을수도 있고, 틀릴수도 있는것 같습니다. 네이버 별점에 대해 부정적인 생각을 가지고 계신다고 하셨는데, 제 생각은 좀 다릅니다. 초등학생이 되어서 이제 막 친구를 알고 싶어하는 아이가 인터넷에서 새로나온 만화영화를 보고 싶어서 검색을 했는데, 네이버 별점은 아주 도움이 되겠지요. 


인터넷이라는걸 당연하게 사용하는 지금 세대는 지난 10여년간 인터넷에 흔적을 많이 남겨놓았고, 오프라인 인맥도 많아졌습니다. 우리들에게는 소셜네트워킹이 반드시 필요하게 되었습니다. 수백억개의 문서중에 찾는 내용이 잘 찾아지면 좋겠지만, 해당 문야 전문가가 언급해준 내용을 더 신뢰하게 되겠죠. 


네트웍 속도가 빨라지면서 인터넷의 컨텐츠는 풍부해 집니다. 이제는 모바일 입니다. 스마트폰에서는 소셜네트워킹을 사용하게 됩니다. 예로, 이전에는 친구에게 연락을 할때 전화나 문자로 연락했습니다. 지금은 스마트폰으로 페이스북에 글을 남기거나 인크루트인맥에 글을 남기면 아이폰의 Push 서비스로 마치 문자처럼 날라옵니다. 이건 무료입니다. 문자는 건당 과금이 되지만 Wifi 환경에서의 이러한 액션은 무료 입니다. 또, 페이스북을 기반으로 사용하는 Vonage Free Talk 이라는 앱을 통해서 Wifi 기반에서 Facebook 친구에게 무료전화를 할수 있습니다.


 소셜네트워킹을 하면 이제 전화를 무료로 쓸수 있습니다. 


한국인들은 자신의 정보를 숨기려는 성향이 강합니다. 정부에서 조차 인터넷에서 일어나는 일들을 감시하고 있습니다. 정부에서 감시하니 숨기려고 합니다. 하지만 떳떳하게 나를 알리고 해서는 안되는말(악플) 하면 좋은말을 떳떳하게 해서 인터넷에서 나의 존재를 퍼뜨려야 할것입니다. 


소셜네트워킹에서의 프로파일은 필수입니다. 나의 정보를 숨기고 싶으면 앞으로 인터넷에서 즐길수 있는 정보가 점점 줄어들것입니다. 제가 쓰고 있는 인터넷의 아이디는 닷넷파워(dotnetpower) 입니다. 적어도 저을 아는 사람들은 제가 개발관련 이야기를 하면 관심을 가지고 보는것 같습니다. 또 차니님을 아는 사람들은 그분이 웹2.0, 앞으로의 웹, 웹표준 과 같은 글을 적으면 관심깊게 봅니다. 


이러한 모든 활동이 소셜네트워킹입니다. 서로 인지를 하는 입장에서 서로를 연결시켜주고 쉽게 정보교환을 하게 해 주는것이 페이스북, 트위터, 인크루트인맥 입니다. 


결론적으로 소셜네트워킹은
필수입니다.


http://nugu.incruit.com/dotnetpower

저작자 표시 비영리 동일 조건 변경 허락
신고
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
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
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
Think about it.2009.08.25 14:28

요즘 자주 느끼지만, 소프트웨어 기술이 아주 성숙 했다는 생각을 합니다.
닷넷, 자바, 기타 언어들 포함해서...

그리고, 웹의 발전도 아주 급속도로 빨라지고 있는데요, 지금 웹2.0 시대 이니깐, 3.0에는 어떻게 바뀔까 하는 의문이 드네요.
여러 자료를 검색 해 보니, 힌트가 조금씩 나오고 있습니다.

우선은 웹으로 무엇을 하던간에, 네트웍 속도가 좀더 빨라져야 하니까 아무래도 동영상 기반 정보들이 넘쳐날것 같네요~ 스토리지는 점점 더 커지겠고.. 몇년만 지나도, 88만원 특가 하드 4TB!! 머.. 이런씩으로 말이지요..



웹 3.0에서 위키페디아 같은 곳에서는 이렇게 정의를 하고 있습니다.

웹 3.0(Web 3.0)은 월드 와이드 웹이 앞으로 어떻게 될 것인지를 서술할 때 쓰이는 용어이다. 최근의 웹 혁명을 서술하기 위해 쓰이는 웹 2.0이라는 구문의 도입에 따라 수많은 기사와 기자, 그리고 산업을 이끄는 사람들이 웹 3.0이라는 용어를 사용하여 앞으로의 인터넷 혁명의 파동에 대한 가설을 세운다.

월드 와이드 웹의 혁명의 다음 단계에 대한 관점은 매우 다양하다. 어떠한 사람들은 시맨틱 웹과 같은 새로 생겨난 기술들이 사람들에게 쓰이는 웹을 변형시킬 것이며 인공 지능에 대한 새로운 가능성을 부여할 것이라고 믿고 있다. 다른 공상가들은 인터넷 연결 속도가 빨라지고 모듈식 웹 애플리케이션의 수가 증가되며 컴퓨터 그래픽스가 앞서 나가게 됨에 따라 월드 와이드 웹의 혁명에 중요한 역할을 하게 될 것이라고 넌지시 말을 던지기도 했다.


제 생각엔 정말 시멘틱 웹으로 발전이 될것 같네요.. 그 초석을 웹서비스와 같은 기술들이 마련해 주고 있으니깐요, 더불어 Entity Framework 와 같이 뽀노(PONO) ^^ 들이 진화해 가고 있고, 점점 SNS와 같은 서비스들이 많이지면서 SOA의 사용량이 폭팔적으로 늘고 있으니 말이죠...

젤 중요한 온톨로지 까지 잘 동작하게 된다면, 그동안 많은 유수의 공대에서 연구하던 AI 가 적용된다면...

애니메이션 공각기동대와 같은 일도 발생할 여지가 생기겠죠..

결국에는 컴퓨터 기술발전을 거듭할 수록 인간의 관여가 떨어지게 될것 같습니다.

넥플릭스의 설립자 리드 헤스팅스는 웹의 양상을 동영상 기반의 웹이라고 예상하고 있는데, 충분히 가능할것 같습니다.
아주~ 기대가 됩니다.

자료를 좀더 찾아봐야겠네요 ^^
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower
TAG 웹3.0
Think about it.2009.08.04 19:08

멘토는 그리스 신화에서 유래한 용어로

가르침을 주는 훌륭한 선생

 을 의미합니다.

인생을 살아가면서, 곁에 스승이 없다면 수없이 많은 판단의 기로에서 얼마나 고민을 많이 하게 될까요?
이게 맞는지 틀린지.. 알지도 못하면서...

물론 인생은 본인 스스로 살아가야 하지만, 스승의 한마디가 얼마나 큰 힘을 주는지 모릅니다.

제가 멘토라고 생각하는 그 분이 있기에 정말 다행이라 생각합니다. 끊임없이 채찍질을 하고 더 많이 배울수 있도록 길을 열어주신 저의 멘토에게 다시 한번 감사하게 생각합니다. :)

저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower
TAG 멘토
Think about it.2009.07.27 13:29

오랜만에 포스팅 합니다.

생뚱맞게 갑자기 왠 자바를 하자는지 궁금하실겁니다.

mhvb.net 에서 ASP.NET MVC + Opensource framework 에 관련된 포스팅을 하다 최근 개인적인 사정으로 한달넘게 포스팅을 못하고 있습니다.

다시 하려고 자료를 찾던중 업무시간이 되어서, 생각을 간단히 몇자 적어보려합니다.

자바를 해야하는 이유.

우선 오픈소스 프레임웍에 대해 관심이 있으면, 스프링, 스트럿츠 등은 들어봤을겁니다. 또, 학교에서 강의도 하죠.

여러가지 잘 나가는 오픈소스는 자바진영에서 먼저 시작이 되고 있습니다.

닷넷버전으로 포팅이되면서, 성능/기능적으로 더 나아지는 경우도 있지만, 컨셉은 동일합니다.

그러니, 스프링닷넷을 하려면 자바 프로젝트로 스프링 프레임웍을 도입해보는것도 괜찮을것 같네요.

자바에서의 스프링, 닷넷에서의 스프링닷넷.. 서로 비교도 해 보고, 다른 평판이 좋은 오픈소스 프레임웍을 자바를 통해서 먼저 경험 해 보시기 바랍니다. ^^
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower
TAG java
Think about it.2009.06.17 11:40

다른 친구들에 비해 늦어져 버린 학교 졸업. 덕분에 항상 조급한 마음을 가지고 있었습니다.

책을 좋아 하진 않아도, 가끔씩 생각날때가 있지요.

하지만, 기술서적 보기도 바쁜데, 언제 소설이나 에세이를 읽나요. 라고 생각을 했고, 덕분에 적어도 TV는 보지 않게 되었습니다.

뭐, 켜져 있으면 가끔 힐끔 보긴 하는데, 음.. 드라마로 따지면, 주몽 반 정도 보고 끊었으니... 무슨 드라마가 하는지 F4가 뭔지도 잘 모르죠 ^^

물론 가쉽거리를 놓치긴 했지만, 덕분에 약간의 시간을 벌어드린것 같네요.


주말에 혼자 있을때는 리모컨을 절~대 건드리지 않습니다.

한번 해 보세요~ 무언가 할 꺼리 가 많아 집니다.
저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower
Think about it.2009.06.05 16:34

오픈소스 프레임웍 중 Persistence Layer 에서 많이 쓰이는 하이버네이트와 아이바티스에 대한 비교를 해 보겠습니다.
ASP.NET MVC 에서 Hibernate 를 임베딩 시켜 NHibernate 로 넣은것 같은데, 개인적인 생각에는 iBATIS를 넣는게 더 좋았을것 같습니다.

이유를 설명하자면. 우선 두 프레임웍 모두 우수 합니다. 무엇이 더 우수하냐 보다는 무엇이 더 적합하냐 라는 쪽으로 접근 해 보겠습니다. 우선 결론 부터 말씀드리면, 저는 iBATIS를 선호 합니다.

Hibernate 와 iBATIS 프레임웍은 흔이 이렇게 말 합니다.
Hibernate : ORM(Object Relation Mapper)
iBATIS : SQL Mapper

다시말해 하이버네이트는 객체 관계 매퍼입니다. 여기서 객체란 MVC 패턴으로 개발하는 프로젝트에서 엔티티 혹은 VO 를 뜻하기도 합니다. 즉 그 객체는 테이블과 1:1 매핑이 되기도 하고, 1:N, N:1 로 매핑이 되기도 합니다. 그리고, 아이바티스는 쿼리 매퍼 입니다. 반환되는 레코드셋을 VO의 필드와 매핑을 시켜주는 코드를 추가해 주면 됩니다.

개발 완료 후 수정이 빈번하게 일어나는 한국에서는 좀더 유연한 iBATIS를 더 선호 한답니다.

또 iBATIS를 가장 많이 필요로 하는 곳으로 보이는 우리나라의 SI 환경을 보면,
데이터베이스의 정규화가 제대로 이뤄진 경우를 보기가 쉽지 않은 것이 사실이다.
개발 초기에는 의도에 맞게 잘 설계하였다 하더라도 수많은 요구사항 변경에
맞닥뜨리면서 제대로 설계를 변경할 시간 일단 없이 빨리 수정 사항을 반영하다
보면, 어느새 데이터베이스는 처음과는 다른 복잡하고 이해하기 힘든 모습을 띄게
되는 일이 허다하다.

iBATIS는 다른 객체 관계 매핑 프레임워크들과는 달리 정형화된 테이블 구조에
의존하지 않고 SQL 구문의 실행 결과에 객체를 매핑하는 방식이다. 따라서 테이블
구조가 복잡해지고 정규화돼 있지 않더라도 테이블을 변경할 필요 없이 기존 개발
방법에서 사용한 SQL을 그대로 사용할 수가 있으며, SQL에 적용한 튜닝들도 모두
그대로 유지된다. 이러한 우리나리의 SI 환경에는 iBATIS가 더없이 적합한 퍼시스턴트
프레임워크라고 생각한다(저자들도 이러한 점을 많이 강조한다)

 - iBATIS in Action 손권남

사실 iBATIS에는 SQL Mapper만 있는게 아니라 DAO도 있지만, 추천하지는 않는다고 합니다.

두 프레임웍은 특징을 비교 해보면 다음 그림과 같습니다.

마지막의 커뮤니티 지원과 문서화 부분은 약간 개인적인 견해가 강한 부분이 있습니다. iBATIS in Action 책을 보면 그대로 따라하면 5분만에 셋팅을 할 수 있다고 합니다. 허나... 50분을 들여도 잘 안되는 부분이 있었습니다.
물론 제가 실력이 안되어서 그럴수도 있겠지만, 오픈소스 프레임웍은 셋팅이 정말 까다롭습니다. 그리고 책 그대로 따라해도 안됩니다. ㅡㅡ; 저자 분들께는 죄송 ㅎ

이렇게 따지면 뭐가 더 우수한지는 없습니다. 상황에 적절한 프레임웍을 골라서 사용하시면 됩니다.

단, 문제가 있긴 합니다. iBATIS의 알려진 문제로는 자바버전의 iBATIS는 운영중에 쿼리를 변경하게 되면 반영이 되지 않고 WAS를 재시작 해야 합니다. 아주 치명적인 문제죠. 여러 포럼에서 찾아봤지만 현재까지 나온 버전에서는 지원이 되지 않습니다. 하지만 iBATIS.NET에서는 잘~ 됩니다.

또한 에러 로그가 이상하게 찍힙니다. 예를 들어 디비가 오라클이고 쿼리의 마지막에 세미콜론(;)이 찍혀 있으면 ResultMap에 일치하는 항목이 없다는식의 메시지가 찍힙니다.

이러한 점을 고려 했을때 무조건 도입하는것 보다 테스트 프로젝트를 진행 하면서 적합하고 효율적이다고 판단이 될때 적용 하시는것이 올바르다고 봅니다.

게다가 Hibernate 같은 경우는 프로젝트 변경이 생기면 OR이 강결합 상태이므로 수정사항이 아주 많아 집니다.

저 개인적인 생각으로는 무엇이 좋고 나쁘고가 아니라 오픈소스 프레임웍을 도입해서 적용해본 결과 효과좀 봤다. 정도로 말씀드릴수가 있겠네요 ^^


저작자 표시 비영리 동일 조건 변경 허락
신고
Posted by dotnetpower

티스토리 툴바