페이지에서 유저 이벤트를 추출해서 상태를 만들고 그 상태를 이용해서 AJAX페이지의 모든 결과를 얻어낸다.
응용대상
사이트 다운로드, 악성코드 작성과 탐색
Ajax페이지는 페이지 내의 이벤트 상태를 Cashing할 수 없고 랜더링을 위한 자바스크립트를 구별할 수 없으며 이벤트가 very granular하고 끊임없이 호출되는 문제로 인하여 CrwalIng하기 힘들다.
YouTube의 경우 코멘트가 Ajax로 나타나는데 일반 검색엔진은 검색결과에 Comment에 대한 내용은 포함 시킬 수 없다. 이러한 문제를 해결 하기 위해서 페이지에 존재하는 이벤트를 모델링한다. Figure3처럼 DOM에 포함되어 있는 관계 속에 모델링을 하기 위한 정보가 내제되어 있다. 그것을 기반으로 Fig.2처럼 페이지 내 상태를 만들고 Fig.4 처럼 페이지간의 상태를 나타낸다.
기존에는 페이지의 내용이 click 이벤트에 의해 다른 페이지로 이동한 경우에만 발생하였지만 지금은 Ajax를 통하여 페이지 내의 특정한 위치에 새로운 내용이 나타난다. 따라서 이 내용을 Crawling해야 하고 그러기 위한 이벤트의 추출이 필요하다. Table1은 그것을 정리한것이다.
페이지 내에 있는 이벤트를 가지고 상태와 상태전이를 알아내면 그것을 통해서 실제로 어떤 위치(흔히 DIV)에 내용이 바뀌는지 알 수 있다. 이 노드를 hot node라 하고 이 DOM 노드의 내용을 바꾸는 것을 hot call이라 한다. hot call들을 식별 해 내고 이에 따른 상태변화를 캡쳐 하면 Ajax페이지에 대한 크롤링이 수행된다. 수행시 지수시간으로 수행 해서는 안되며 페이지는 CRUD중 C,U,D는 제외한다. 페이지에 폼은 없으며 이미지에 기반한 검색은 제외한다.
"디자인팀은 출근 시간은 있지만 퇴근 시간은 없다” 디자인 전략을 똑바로 잡아 손실을 줄여 착실하게 디자인했으면 전혀 퇴근 시간이 없을 필요가 없다. 벤츠 본사에서 일하는 한국인 디자이너, 구민철이 말한다. “야근, 거의 없어요. 가끔 야근해도 밤새는 건 없어요. 회사에서도 야근수당 부담 때문에 그렇게 두질 않아요. 다들 자존심이 강해서 그런지, (노력파보다는) 천재처럼 일하려고 해요. 일을 별로 안 하는 척하면서 ‘끝내주는’ 스케치를 내놓는 거죠. 이런 분위기 때문에 집에서 홀로 ‘야근’한 적도 있었어요.”
하하... 정말 제대로다.
기사를 발로 쓰는 사람들에 대한 일침.
일부 사람들이 기사등의 글을 그냥 받아들이는 경우가 있다. 분명 중, 고등학교때 비판적인 글 읽기 를 배웠을 텐데 말이다. 안타깝게도 그런사람이 많기 때문에 내가 이 기사를 좋게 보는 것이고 위 글이 기사가 될 수 있는 것이다.
그리고 이 글 자체에서 주는 교훈이 있다. 노력가가 되지 말라는 것이다. 천재처럼 놀고 죽여주는 한방을 보여주면 그걸로 끝이다.
우리나라 사람들은 "척"을 좋아한다. 그리고 그 "척"에 사람들은 머리를 조아리거나 자기것으로 하려 한다. 실력이 뒷받침 되지 않는 "척"은 얼마 안가 물거품 처럼 사라지고 자신의 가치를 떨어뜨리는 시발점이 될 수 있다. 반면 "척"과 함께 간혹 "멋진것"을 보여주면 사람들은 그 "척"을 실제로 삼는다. 자신의 가치를 드높이는 방법이 되는 것이다. 그리고 그 "척"으로 높인 자신의 가치를 이용하여 가치 없는 것에 들이는 시간을 줄이고 가치 있는 일에만 시간을 쏟음으로서 "척"은 계속 유지된다.
이러한 "척"이 좋지 않는 점도 있지만 어떻게 보면 이것이 Pride가 될 수도 있다.
자신의 외면을 잔뜩 꾸민후 빈약한 내면을 외면에 맞춘다는데 뭐라 할 사람은 없다. 한국명으로 "그남자 그여자의 사정" 일본명 "카레카노" 라는 일본 만화가 있다. 개인적으로 중학교때 좋아했던 만화로써 아직도 주제가를 다 외우고 있는^^; 그런 만화다. 이 만화를 보면 사람의 표면적인 모습과 내면적인 모습의 이질성에 대해서 생각해 보게 된다.
열심히 노력해서 얻은 자신의 겉모습이 자신의 본모습과 다를때 당신은 그 두가지의 괴리를 어떻게 할 것인가?
이번 논문에서 담고 싶었던 이야기지만 내용이 너무 방대하고 접 한지 얼마 되지 않아 완벽하게 정리가 되지 않아 기술하지 못한 End User Development에 대해서 잠시 이야기 해보겠습니다.
EUD라는 말은 의미 그대로 컴퓨터에 대해서 아무것도 모르는 최종 사용자가 시스템을 개발 할 수 있도록 하는 것이다.
이렇게 되면 프로그래머들은 다 밥숟가락 놓게 되는거 아닌가? 라는 생각을 해볼 수 있다. 그렇다. 실질적으로 EUD가 궁극적 목표는 “사용자가 말로 이렇게 만들어 달라고 하면 그렇게 만들어 주는 것”이다.-_- 그래서 EUD의 논문들을 살펴 보면 일단 요구분석 단계에서 자연어 처리의 이용에 대한 논문을 만나 볼 수 있다. 데이터 베이스책들에 보면 Entity를 도출해 내는 방법에 대해 말하고 있는데 대부분 Noun(명사)가 Entity가 될 확률이 큰 것들이 된다는 이야기를 한다.
이런 식으로 컴퓨터분야에서 각 분야의 주 textbook들이 말하는 “대충 이렇게 하면 된다”를 모두 다 적용 시켜 보면 EUD가 되는 것이다. 사용자 요구 사항 분석에서 부터 비지니스 모델에 대한 도출 EUD에서는 데이터 베이스를 모델링 하는 것에 있어서는 거의 종료 단계에 까지 온 것 같은 분위기이다. 디비 모델링은 원리 원칙과 Heuristic을 적용해서 쿵짝쿵짝하면 나온다 라는 “이게 왜 안돼?”라는 말을 하고있다.-_- 많은 컴퓨터 학과의 디비 설계수업을 듣는 학생들의 속을 뒤집는 이야기가 아닐 수 없다. 그 보다는 극도로 복잡한 비지니스 로직과 바보 사용자의 실수 또한 용납하는 개발 환경에 대한 이야기가 오히려 많을 정도다;; 지금 봐서는 앞으로 10년 안에 그래도 쓸만한 제품이 나올 것이라고 생각해 볼 수있다. 아무래도 오라클이나 IBM이 먼저 내놓지 않을까라는 생각을 해본다. SI 업체들은 당장 눈앞의 것도 중요하지만 EUD에 대한 투자를 안한다면 앞으로 10년 뒤에, 현실 적으로 따져 보면 지금 신입사원이 아이를 낳고 그 아이가 초등학교에 들어갈 때를 전후 해서는 손가락 만 빨게 된다는 이야기다.
이번 4월달에 IEEE에서 End User Development에 대한 논문을 모집했는데 그 결과가 어떨지 궁금하다. 조금 있으면 IEEE Journal에 등장 할 예정이다. 관심있으신 분은 IEEE로 gogo!
하지만 그렇게 떨 필요는 없다. 사실 어떻게 보면 저 궁극적 목표는 모든 프로그래머들이 처음 프로그래밍을 배울때, 대학을 다닐때, 회사를 다니면서 매일 생각하는 것이다. 하지만 아직까지 쓸만한 제품이 나오지 않았다는 것은 앞으로도 완벽한 제품이 나올려면 한참 멀었다는 것이다. Visual Basic, .net이 처음 나왔을 때 사람들인 이제 프로그래머들은 먹고 살기 힘들어 지겠구나 라고 생각했다. 프로그래밍이 너무 쉬워 졌기 때문이다. 하지만 그만큼 고객의 요구사항은 크게 늘어났고 시스템의 복잡도 또한 늘어났다. 아무리 추상성을 높이고 코드 길이를 줄이고 코드를 자동 생성해도 개인이 하나의 큰 프로젝트를 만드는 것은 아직까지 불가능에 가까운 일이다.
그렇다면 EUD가 지금 당장에 추구하는 것은 무엇일까? 그것은 고객이 우리보다 그들의 분야에 대한 지식이 더 풍부한 만큼 “그 분야의 로직은 너희들이 알아서 만들어 쓸 수 있게 해주마” 라는 것이다. 사용자의 프로그래밍 수정 요청이 빈번하게 발생하며 해당 분야의 높은 지식이 요구 되는 경우에 한해서 이런 짓(?)을 하겠다는 것이다.
물론 제가 원하는 것은 모든 웹 분야에서 EUD를 이루는 것이지만 -_-
하... 이번 논문 너무 방대해
볼만한 논문
JOCHEN RODE, MARY BETH ROSSON, AND MANUEL A. PÉREZ QUIÑONES 저
END USER DEVELOPMENT OF WEB APPLICATIONS
(흰색ㅋ)여담으로 제가 지금 까지 만져본 논문중에 제일 두꺼운 논문은 ‘황우석 팀의 그’ 논문입니다. 맨 뒤에 주요 저자들의 싸인이 되어 있었는데 막연히 “멋지다”라는 생각이 들었죠. 황우석을 처음 알게 된 것도 그 논문을 본 후 입니다. 물론 그 일로 하여금 몇년째 세뱃돈을 못받고 있는 처지에 있지만... 그런 세계가 뻥터지는 논문하나가 제 머리속에 뭉실뭉실 있는데 그걸 세상으로 꺼내기에는 모든 능력이 너무나도 떯어지니.. 스스로에게 너무 미안합니다. ㅡㅜ