삼청동 도보 출사

by 아나돌루 | 2007/08/17 15:06 | 트랙백(4) | 덧글(0)

global.asax를 쓸것인가? httpModule을 쓸것인가?

global.asax는 좀 알겠는데 httpmodule은 뭔지 잘 모르겠다. 일단 그림부터




이것만 보고도 이해되면 당신은 천재... 나는 그림의 링크를 클릭해서 설명페이지까지 봐야 하는 보통사람..


내가 발견한것중 하나는 httpmodule로 할수 있으면 global.asax로도 할 수 있다는 것이다.
둘다 특정페이지가 실행되기전에 발생하는 이벤트를 응용한것이기 때문이다.

어떤 MVP는 이렇게 말한다
HttpModules are portable versions of the global.asax
아하 그랬다. httpModules는 web.config의 수정만으로 교체될수 있다.
나는 아직 그 이상의 차이점을 발견하지 못하고 있다

Question1. 둘사이의 성능문제가 있는가 없는가?
Question2. .....httpmodule로 다 할 수 있는데 왜 global.asax만들어서 헷갈리게 하는건가? 장난하나

ASP.NET 응용 프로그램 수명 주기 개요
ASP.NET의 파이프라인
태오의 Interceptiong Filter 패턴으로 httpmodule설명하는 강좌

by 아나돌루 | 2007/03/08 19:00 | 트랙백(1) | 덧글(0)

C# using 키워드와 dispose() 메소드

조엘온 블로그엔가 소프트웨어엔가에 보면
C++과 Java/C#을 비교하면 이렇게 말한다.

"C++은 메모리설정과 해제를 프로그래머가 직접 해주는 언어이고 java와 c#은 버추얼머신 또는 가비지컬렉터가 자동으로 해주는 언어이다."

최근에 이런 코드를 발견했다.
Last second HTML changes in your ASP.NET page
1    protected override void Render(HtmlTextWriter writer)
2    {
3        using(System.IO.MemoryStream msOur = new System.IO.MemoryStream())
4        {
5            using(System.IO.StreamWriter swOur = new System.IO.StreamWriter(msOur))
6            {
7                HtmlTextWriter ourWriter = new HtmlTextWriter(swOur);
8                base.Render(ourWriter);
9                ourWriter.Flush();
10                msOur.Position = 0;
11                using(System.IO.StreamReader oReader = new System.IO.StreamReader(msOur))
12                {
13                    string sTxt = oReader.ReadToEnd();
14                    sTxt = sTxt.Replace("$CURRENT_DATETIME", DateTime.Now.ToString());
15                    Response.Write(sTxt);
16                    oReader.Close();
17                }
18            }
19        }
20    }

using키워드의 압박!!
도대체 using을 왜 이리 많이 쓴건가?
그건 이글을 보시고
그렇다면 dispose()는 또 무엇인가?
이건 이글을 보시면 됩니다

by 아나돌루 | 2007/03/08 10:11 | 트랙백 | 덧글(2)

prototype-window(ajax window) 적용기

ajax용 UI중에서 window를 만드는 오픈소스가 있다.
gmail의 gtalk창이나 meebo의 채팅창등과 같이 깜찍하고 룩앤필이 팍오는 UI를 제공한다.
http://prototype-window.xilinus.com

이걸 현재 프로젝트에 사용해고 싶은 욕망이 마구마구 일어났다.

[미션: 프레임으로 레이아웃이 구성되어있다. content프레임에는 전혀 손대지 말고 content프레임에 채팅창을 띄워라]
<xmp>
<frameset frameborder='no' rows='80,0,*' border='0' framespacing='0'>
 <frame name='top' src='top.html' scrolling='no'>
 <frameset frameborder='no' cols='200,*' border='0' framespacing='0'>
  <frame name='menu' src='menu.html' scrolling='no' noResize>
  <frame name='content' src=''content.html scrolling='auto' noResize>
 </frameset>
</frameset>
</xmp>


[시도1: frameset에 prototype-window iframe추가]
<xmp>
<iframe src="inframe.html" name="myFrame" style="width:300px ; height: 300px;"></iframe>
</xmp>
rows='80,0,*' / cols='200,*' 이렇게 되어있는 관계로 추가한 iframe이 아예 보이지도 않는다.
frameset의 길이나 높이를 제한하면 보일지도 모르겠다.

[시도2: top.html에서 prototype-window iframe추가한다음 content프레임으로 복사하기]
<xmp>
 var contentFrame = parent.frames("content");
 var myFrame = document.getElementById("myFrame");
 var _winHtml = myFrame.outerHTML;
 //같은 frame의 context이여야 지만 appendChild가 작동한다.
 //myFrame이 contentFrame의 객체가 아니기 때문에 항상 invalid argument 에러발생
 //contentFrame.document.body.appendChild(myFrame); //invalid argument 에러발생
 //따라서 appendChild를 쓰지 못하고 insertAdjacentHTML()메소드를 사용한다.
 contentFrame.document.body.insertAdjacentHTML("beforeEnd" , _winHtml);

 var alertDes = contentFrame.document.getElementById("myFrame");
 //insertAdjacentHTML를 사용한것은 단순히 문자열을 카피한 것이다.
 //따라서 카피된 iframe의 src속성의 url을 실제로 적용시키는 동작을 수행해야 한다.
 //appendChild의 경우에는 이런 과정이 필요한지 모르겠다.
 alertDes.document.location.reload();

 alert("alert창을 띄워야 myFrame UI가 content프레임쪽에 보인다.");
 //alert창을 띄우지 않으면 보이지 않을 뿐만 아니라 실제로 myFrame이 메모리에 올라가지도 않는것 같다 .
 //만약 alert창을 띄우지 않으면 아래 라인에서 showWin()메소드를 찾지 못한다.
 //이게 location.reload()가 다 되지 못한 문제로 판단할 수 도 있으면 delay를 아무리 많이 줘도 이 문제는 해결되지 않았다.
 //더구나 더 결정적인 문제는 링크를 클릭하면 IE가 비정상종료된다는 점이다.
 contentFrame.myFrame.showWin ();
</xmp>


[참고1: prototype-window창의 html코드]
코드자체는 심플하다. 나머지는 css와 js가 다 제어한다.
<xmp>
<DIV id="dialog0" class="dialog" style="left: 0px; top: 0px; opacity: 0.999999; z-index: 100; width: 304px; height: 242px;">
 <DIV onclick="Windows.close(&quot;dialog0&quot;, event)" id="dialog0_close" class="dialog_close"/>
 <DIV onclick="Windows.minimize(&quot;dialog0&quot;, event)" id="dialog0_minimize" class="dialog_minimize"/>
 <DIV onclick="Windows.maximize(&quot;dialog0&quot;, event)" id="dialog0_maximize" class="dialog_maximize"/>
 <TABLE class="top table_window" id="dialog0_row1">
  <TBODY>
   <TR>
    <TD class="dialog_nw">
        </TD>
    <TD class="dialog_n">
     <DIV class="dialog_title title_window top_draggable" id="dialog0_top">
           </DIV>
    </TD>
    <TD class="dialog_ne">
          </TD>
   </TR>
  </TBODY>
 </TABLE>
 <TABLE class="mid table_window" id="dialog0_row2">
  <TBODY>
   <TR>
    <TD class="dialog_w"/>
    <TD valign="top" class="dialog_content" id="dialog0_table_content">
     <DIV class="dialog_content" id="dialog0_content" style="height: 200px; width: 300px;">
stubbed:getAjax(ajaxArgs)          </DIV>
    </TD>
    <TD class="dialog_e"/>
   </TR>
  </TBODY>
 </TABLE>
 <TABLE class="bot table_window" id="dialog0_row3">
  <TBODY>
   <TR>
    <TD class="dialog_sw">
&nbsp;        </TD>
    <TD class="dialog_s">
     <DIV class="status_bar bottom_draggable" id="dialog0_bottom">
&nbsp;          </DIV>
    </TD>
    <TD id="dialog0_sizer" class="dialog_sizer">
&nbsp;        </TD>
   </TR>
  </TBODY>
 </TABLE>
</DIV>
</xmp>

by 아나돌루 | 2006/11/02 09:02 | 트랙백(90) | 덧글(3)

정녕 rss 리더가 있는 핸드폰이 없단 말인가?

우리는 휴대폰으로
음악을 듣고
TV를 보고
게임을 하고
ebook을 보고
문자를 보내고
사전으로 쓴다.


그런데 그 수많은 잡다한 기능은 다 있으면서
RSS리더 하나가 없단 말인가

이 어찌된 상황인가.

아방고라도 해주면 안될까...

by 아나돌루 | 2006/09/10 19:11 | 트랙백 | 덧글(2)

온톨로지 실제사례

시멘틱웹, 되니 않되니 말들이 많죠.
탁상공론은  쫙빼고
실제 현실에서 부딪치면서 소중한 사례를 만들어가고 있는 사이트들을  조사해보고자 합니다.

제가  시작할테니 관심있는 분들이 댓글로 자신이 알고있는 사례들을 달아 주세요.

유명한 mediawiki의 시멘틱웹버전의 사례




by 아나돌루 | 2006/08/14 08:43 | 트랙백(3) | 덧글(0)

오픈 서비스는 가능한가?

kldp.org에 오픈소스개발방식으로 서비스를 만들어보자는 취지의 글이 올라왔다.

싸이월드를 공개 방식으로 개발한다면 어떻게 생각하십니까?

SK커뮤니케이션에 대한 반감에 대한 글이 대부분이었지만 의미있는 논의로는 :
- 라이센스는 어떻게 되는가?
- 프레임웍을 만들어놓고 제안을 해야지 제안부터 하면 브레인스토밍 밖엔 되지 않는다
- 싸이월드는 어차피 사용자서비스이다. 개발에 대한 공개로 얻을게 별로 없을것이다. 차라리 사용에 대한 feedback을 많이 얻는게 더 현명한 방법이다.
- 또는 기획단계에만 참여하는 방법이 있을수 있다
- 사공이 많으면 배가 산으로 간다. 또는 아예 가라앉는다

오픈 서비스, 오픈 데이터: 웹2.0시대의 오픈소스

음....너무나 익숙하지 못한 개념으로 답글에서도 혼란이 보이고 있다.


-----------정리 하자면------------------
(1)라이센스(사이트의 소유권)는 누가 가지는가? 사이트운영주체인가 아니면 개발에 참여한 사람들인가?
(2)인터넷 서비스이기 때문에 웹서버 운영비용이 발생하는데 그 비용은 어떻게 조달하는가? 기부?
(3)기획단계에서부터 공개되면 시장선점은 대기업포탈등이 차지할것이다.

by 아나돌루 | 2006/08/06 21:22 | 트랙백 | 덧글(0)

소프트웨어 골드러시

1848년에 캘리포니아의 강에서 금덩어리가 발견됐다.
세상에 광산을 힘들게 파지 않아도 강에 들어가서 주석냄비로 금을 걸러내면 된다.
사람들은 일확천금을 꿈꾸며 캘리포니아로 달려갔다. 이게 바로 Gold Rush이다.

[프로페셔널 소프트웨어 개발](스티브 맥코넬)에서는 소프트웨어 개발을 골드러시와 비교한다.
많은사람들이 성공을 꿈꾸며 IT,인터넷,웹2.0,시맨틱웹등의 신천지로 달려간다는 것이다.
그것도 주석 냄비정도의 조악한 관리툴만을 가지고 말이다.

결국 수많은 사람들이 실패했다. 그러나 사람들은 여전히 골드러시로 몰려들었다.
왜냐하면 '젊은이 두명이 차고에서 열심히 일했으나 그들은 파산했다'라는 기사는 재미가 없어서 어떤 언론도 이를 보도하지 않았기 때문이다.

저자는 말한다. 그렇다면 Post-GoldRush의 시대에는 어떻게 해야 하는가?
코딩능력보다도 다음과 같은 능력이 필요하다(83p)
- 소프트웨어 요구사항
- 소프트웨어 설계
- 소프트웨어 구축
- 소프트웨어 테스팅
- 소프트웨어 유지보수
- 소프트웨어 형상관리
- 소프트웨어 품질
- 소프트웨어공학관리
- 소프트웨어툴과 방법론
- 소프트웨어공학 프로세스

지당하신 말씀이다.
하지만....
나는 그동안 이런것들을 한답시고 아까운 종이만 낭비하고 시간만 소비하는 삽질을 너무도 많이 보았다.
현실에서 그것은 프로젝트진행과 전혀 상관없는 페이퍼작업이었고
더욱더 날카롭게 비판한다면 그건 암묵적으로 동의된 '사기'였다.
그렇다. 저자도 말했듯이 프로세스의 강조는 '관료화'라는 공룡을 만들수있다.
그렇다면 관료화되지 않은 프로세스는 본적 있는가?
나는 단 한번도 관료화되지 않은 프로세스를 보지 못했다.

저자의 다음 도서인 'Code Complete'를 읽어봐야겠다.


by 아나돌루 | 2006/08/06 09:01 | 트랙백 | 덧글(0)

시멘틱웹에 대한 대화

HOLLOBLOG의 온톨로지 유감 - 온톨로지로 뭘 할수 있지? 라는 글에서는 시맨틱웹에 대한 회의를 나타냅니다.
저또한 온톨로지, OWL , TopicMap등등 공부하면 할수록 어지럽고 어려운데 이런게 과연 성공할까라는 단순무식한 고민을 가지고 있습니다. 그러던 차에 우리나라에서 시멘틱웹 그중에서도 토픽맵을 구현하고 있는 frotoma.com정은환 기술이사께 제가 메일로 질문을 했습니다. 그분의 동의하에 메일 전문을 올립니다.


----------------------------------이하 메일 전문---------------------------------------------------

(1)토픽맵을 써서 최종사용자가 실질적으로 얻을수 있는 이득은 무엇입니까?
   제가 보기엔 topic map navigator정도 밖엔 없습니다.
 
답변:
   토픽맵은 지식정보를 공유하는 목적에 있어서 좀더 인간의 욕구를 충족하기 위한 하나의 표준입니다.
   초기 웹의 HTML 규격과 같은 정의라고 생각합니다.
 
   세계 여러 전문가들(다양한 분야)이 현재의 부족한 기술을 보충하기 위하여
   1990초부터 계속 생각해 오던것들을 정리한 셈이죠
   이러한 생각들이 초기에는 여러가지 방향으로 서로의 의견들을 주장하다가
   각자 의견의 공통을 이루는 사람들끼리 모여서 그룹을 만들고 그 의견들을 정리하고
   서로에게 공감이 되었을때 표준화를 이루고, 그 표준화는 공표되어서 세계의 다양한 사람에게
   또 다시 의견을 물어보고 많은 사람들의 공감대가 이루어지면 드디어 표준으로 확정이 됩니다.
 
   이렇게 오랜시간을 많은 사람들이 발표하고 토의하고 논쟁하고 규격화를 위해서 노력하였는데,
   실질적인 이득이 없다면 엄청난 시간 낭비에다 비용 낭비겠죠?
 
   그럼 토픽맵을 사용하였을시 최종사용자는 어떤 이득이 있을까요?
   예를 하나 들어 보겠습니다.
   미국의 주(state) 국세청은 몇년전 세금과 관련하여 고민에 빠져 있었습니다.
   미국의 경우는 대부분 국민들이 직접 세금을 계산하여 근거와 금액을 제출하게 되어 있습니다.
   (우리나라 국민으로서 종합세금을 직접 세무서에 내보신 경험이 있는지 모르겠습니다만)
   미국의 경우는 그 세금의 종류와 계산하는 방식이 너무도 복잡하다고 들었습니다.
   그래서 국세청은 세금과 관련된 정보를 CD로 제작하여 사람들에게 나누어 주었는데,
   문제는 방대한 자료가 Index 형태로 찾을 수 있도록 되어 있었습니다.
   납세자들이 원하는 자료(예:농부와 관련된 세금)를 찾을려고 하면 하나하나 인덱스를 뒤져가면서
   자료를 찾아 형식에 맞게 세금을 내게 되는데, 어떤 양식이 농부에게 필요한지를 찾아내는게
   그리 쉽지 않은 모양입니다. 납세자(농부)에게는 엄청난 일이 아닐 수 없었죠.
   그래서 납세자들에게 좀더 편리하게 세금자료를 찾을 수 있는 방법이 없을까 고민하였는데,
   결국 토픽맵(Topic Map) 컨설턴트에게 요청하여 새로운 형태의 세금정보 CD를 제작하게 되었는데,
   찾는 방식은 토픽맵 온톨로지를 이용하여 "농부"라는 키워드를 검색하면 농부와 관련된 세금자료
   리스트가 출력되고, 원하는 자료를 선택하게 되면 그와 연관되어 있는 모든 양식과 또다른 연관
   자료가 우측에 링크가 되어서 같이 나옵니다. 이렇게 하여 납세자는 자기가 원하는 자료를
   한번에 모두 찾을 수가 있게 되었죠.
 
   위의 사례에서 어떤 이득을 "납세자"가 얻게 되었는지 파악이 되셨는지요?
   1. 인덱스를 일일이 뒤져가며 해당하는 페이지에 가서 자료를 읽고 또 다른 원하는 양식을 찾아야만 했는데,
      한번의 키워드 입력으로 "농부"와 관련된 모든 양식을 찾을 수 있었죠.
      이것은 토픽맵의 지식정보자원 통합성 이라는 것입니다.
      예에서는 CD에 국한되었지만, 웹상에서 본다면 서로 다른 위치에 있거나 다른 형식으로
      자료가 제작되어 있어도 검색이 가능하다는 거죠.
   2. 하나의 자료를 찾으면 그와 연관된 또다른 자료가 같이 우측에 나타납니다.
      "농부"와 관련된 하나의 세금자료을 찾으면 그 자료에 의해서 필요한 또 다른 세금자료를
      찾을 수가 있죠.(예:농부 수입금관련=> 또다른 수입금에 대한 세금정보)
      이것은 토픽맵의 지식정보자원의 연관성 이라고 합니다.
 
   위와 같은 방법으로 납세자들의 편리성은 비용으로 환산하지 못할 정도의 시간비용이 절약이 된거죠.
   지금은 웹사이트로도 되어 있습니다.
   (사례사이트 http://www.missouribusiness.net/irs/taxmap/tmhome.htm)
 
   또 다른 예를 들어보면,
   저희 회사 홈페이를 보시면 어떤 웹페이지 콘텐츠를 보고 있으면 우측에 그 콘텐츠와 직접적으로
   관련된 또 다른 정보들이 보여집니다. 이 자료들은 해당 콘텐츠에 따라 각기 달라지는데,
   각각의 웹페이지는 토픽맵 온톨로지에 의해서 동적으로 생성되게 됩니다.
   이것은 토픽맵의 이동성이라고 합니다. 메뉴에 따르지 않고 바로 연관된 자료를 찾을 수 있는 것이죠.
 
   이와같이 제가 설명하지 않은 여러방면으로 최종사용자는 이득을 볼 수 있다고 생각합니다.
   토픽맵(Topic Map)은 하나의 표준입니다. 이 표준을 이용하여 어떻게 기술 개발하느냐는 프로그래머의
   몫이라고 하겠죠. 개발자의 다양한 아이디어에 의해서 토픽맵 표준의 가치는 틀려지게 될것 이라 믿습니다.
 
   표준은 표준을 만드는 사람들의 몫이지만,
   개발자들은 그것을 가치있게 하도록 전문적인 개발을 하여야 할 것입니다.
   (물론 개발자들이 필요에 의하여 표준을 만들기도 합니다만, 특정 개발자에 의해서 표준이 더 빛날 수도 있다고 봅니다)
 

(2)물론 관련업계에서 광범위하게 많이 쓰이게 된다면 [아주 정확한 검색]이나 [아주 손쉬운 데이타교환]등의
   강력한 이점이 발생할 수 있으나, 문제는 언제 그런 상황이 오느냐하는 시점일텐데요. 그 시점을 언제로 보시는지요? 
   일부 블로거들은 그런 상황은 오지 않을거라고 말합니다.
   그러면서 온톨로지(토픽맵)의 대안으로 RDF/RSS의 가벼운 프로토콜을 들고 있습니다.
   이에 대한 견해를 밝혀주시면 감사하겠습니다
 
답변: 제 주관적으로는 빠른 시간안에 온다고 봅니다.
      실제 외국에서는 Topic Map이나 RDF로 훌룡한 사이트나 지식관리시스템, 콘텐츠 관리시스템 등을
      만들고 있으며, 발표되는 것도 매년 기하급수적으로 늘고 있습니다.
      우리나라가 매우 느린 상황이죠.
      그래도 대형 프로젝트가 이미 온톨로지 기반으로 진행되고 있고,
      또한 곧 다른 대형 프로젝트들이 준비 단계에서 서베이 프로젝트를 진행하고 있습니다.
      몇년안에는 우리나라도 한글로 처리되는 온톨로지 기반의 훌륭한 시맨틱웹들이 나타 날 것입니다.

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

by 아나돌루 | 2006/08/04 12:35 | 트랙백(1) | 덧글(0)

오픈소스처럼 오픈서비스가 되기 위한 조건

권순선님의 '오픈 서비스, 오픈 데이터: 웹2.0시대의 오픈소스'를 보고 한마디 하고 싶어졌다.

문제는 비용이다.
더군다나 요즘처럼 동영상과같이 막대한 대역폭을 요구하는 서비스가 필요한 시점에는 더욱그렇다.
이런것이 구글등이 축구장 몇배크기의 데이타센타를 건설하는 이유일것이다.

이에 반해 오픈소스는 웹서비스를 24시간 운영하지 않는다면 것에서 훨씬 저렴하다.
웹서버를 p2p처럼 쓰는 방법이 어서 나와야 한다.
특정웹서버 또는 데이타센타가 필요없어도 대용량 서비스를 할 수 있는 플랫폼말이다.

그리드컴퓨팅이 그런거 하는건가?

by 아나돌루 | 2006/08/02 18:35 | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶



_uacct = "UA-319103-1"; urchinTracker();