'W3c'에 해당되는 글 2건

  1. 2008/03/12 벨리데이터는 벨리데이터일뿐 (4)
  2. 2007/08/10 Internet Scale Application (3)
"네이버 탑페이지 HTML 유효성 검사 통과"

코멘트에서 id와 name의 중복문제가 나온다. 사실 "보안된 페이지의 HTML Validation Check 방법"을 보면서 살짝 예상하기도 했었다. (더불어 W3C Validator는 내부에 설치할 수도, 파일을 직접 올려서 확인해 볼 수도 있다.)

사용자 삽입 이미지

FF의 HTML Validator 플러그인의 설정화면

W3 Validator나 SGML Parser는 DTD에 따른 문법 검사만 한다고 보면 된다. 가령 이번에 문제가 된 "12.2.3 항목"은 DTD에 정확히 표현되어 있지 않다. HTML의 과도기적 문제라고도 할 수 있는데 id 속성과 Anchor의 name은 서로 문법이 틀리다. DTD가 뭔지 id와 name이 뭐가 틀리다는 건지는 직접 찾아 보시고(하단 덧글 참고)

맞춤법이 맞다고 해서 올바른 국어가 아니듯 DTD 검사를 통과해도 DTD가 커버하지 못하는 Spec에서 문제가 될 수 있다. 사실 Spec문서에서는 다양한 오용사례(Illegal Example)를 들어가면서 이런 것들을 설명하고 있다. 따라서 DTD에 맞췄다고 안심할 것이 아니다.

개인적으로는 SGML Parser보다는 HTML Tidy를 선호한다. 좀더 에러를 깐깐하게 찾아준다. Serial은 SGML Parser를 먼저 통과해야 하는데 많은 경우 문법적 에러를 당장 수정할 수 없는 경우도 많기에 상대적으로 비추천한다.

HTML Tidy만 통과하면 이제 문제 없는 것일까? 이 벨리데이터 플러그인의 문제점이 하나 있는데 소스를 서버에서 받은 상태 그대로 검사한다는 것이다. JavaScript에 의한 변화 상황이 반영되지 않는다. 특히 JS에서 innerHTML이나 document.write로 넣는 것들은 Validator에서 알아 볼래야 볼수가 없다. 원래부터 문법이 난리였던 사이트에서 html 상으로만 정리를 한다 하더라도 JS 코딩은 여전히 과거의 습관대로일 것이므로 문제가 완벽히 해결이 안되는 경우가 많다.

FF를 쓴다면 "Web Developer 플러그인"을 추천하는데 다른 좋은 기능도 있지만 페이지가 완성된 상태의 HTML을 뽑아주는 기능이 있다. JS가 수행하는 변화까지 반영되는 것이다(물론 브라우저마다 코드가 달라진다면 브라우저마다 따로 작업을). 이렇게 나온 HTML을 바로 Validator로 돌려버리면 거의 초 허접소리를 듣게 되는데 이유는 브라우저의 오브젝트 모델 기반이기 때문이다. 가령 "<br />"은 "<br>"로 바껴버린다(이것이 Textcube 에디터에서 문제시 되었던 부분). doctype은 하늘나라로 날라가 버리셨고 등등등. 기본적으로 태그 짝은 맞다고 가정하고 수동 보정 작업을 좀 해줘야 한다.
아니면 본인처럼 능력 되시는 분들은 코드를 읽으면 된다! (참 쉽죠?)(네이버 메인은 읽다가 잠들었다. -ㅅ-)

개발하시는 분들은 참고하시고, 더불어 행여나 W3C Validator 통과했다고 전혀 문제없다는 주장을 하는 일이 없으시길.

PS.
글쓰면서 네이버 실제 코드좀 인용하려다가 FF가 또 죽었다. 어서 개발팀에서 나머지도 깔끔하게 손봐주길 기다려야 할지도. FireBug + Mac 콤보는 상당히 불한하다는 느낌이다.
아무튼 글 날라가서 처음에 자세하게 쓴것이 저하늘로~~~ 결국 대충 쓰게 되었다. ㅠ.ㅠ

PS.
Textcube 관리자화면에 Validated 마크가 붙던 과정에, 위처럼 DTD는 준수하지만 실제 마크업의 사용이나 시멘틱 까지 가면 완전 개판임을 알고 있었다. 결국 저 마크는 자랑의 마크라기 보다는 각오의 마크로 보는 것이 옳을 것이다.

Internet Scale Application

개발&Development/웹 2007/08/10 20:43 posted by 겐도

9일 Blog & SNS 컨퍼런스에서 첫날 발표한 블로깅툴에 대한 세션에서 잠시 언급한 이야깁니다.
(해당 발표 자료는 역시 아직 공개하기엔 쪽팔림 + 긴가민가해서 비공개중입니다.)

현재의 인터넷이 Hyper Text를 통한 Web Page 기반으로 사람들에게 서비스를 제공하고 있습니다만 Browser Based의 서비스가 줄 수 있는 한계가 있다고 할 수 있습니다. 제한적인 모바일 인터넷을 할 수는 있지만, 적어도 일부 휴대폰에서 Full Browsing을 지원하기도 하지만(iphone도 그렇죠) 일반적인 모니터를 예상한 웹 페이지를 휴대용 기기에서 보는 것은 제한이 있을 것입니다. 또한 풀 브라우징을 지원하는 기기도 아직 고가입니다.

기존의 접근방법 중 하나는 각개 격파입니다. KTF용 페이지를 만들고 SKT용 페이지를 만들었죠. 두 서비스에서 데이터 표현의 차이가 있기 때문입니다. 적어도 웹 페이지와 다른 새로운 페이지를 만들어야 했습니다. 일부 휴대용 인터넷들은 약간의 제한 사항이 있을 뿐 HTML 정도로 표현을 하면 문제가 없습니다만 일부 기계에서는 전용의 데이터 표현방식을 사용해야 합니다. 일본에서도 통신사별, 내장된 브라우저별로 약간씩 다릅니다. 지금까지의 접근 방법이면 각개격파입니다.

새로운 Web Data라는 개념에서는 이런 것이 쉽게 해결됩니다. 기계가 쉽게 이해할 수 있는 형식으로 모든 컨텐츠가 유통이 됩니다. 독특한 방식으로 표현(View)되어야 하는 경우 이 데이터를 거기에 맞게 출력하면 되는 것이죠. 최종 벤더가 해당 데이터를 핸들링하는 방식을 고민할 수도 있지만 Web Data의 시대에서는 각각의 요소들이 자신이 주거나 받을 수 있는 데이터만 알려준다면 그 두 데이터를 변환할 수 있는 컴포넌트(기존 개념으로는 웹 서비스?)를 제공할 수 있습니다.

웹상의 서비스와 서비스가 쉽게 연동이 되고, 혹은 전에는 전혀 관계없다고 생각되던 서비스들이 연결자에 의해 연결이 될 수 있음은 물론이고, 기존의 데이터를 쉽게 재가공 해서 새로운 서비스를 만들 수 있는 세상이 올 수 있습니다.

현재까지의 웹 서비스들은 기존 포털처럼 자신의 서비스 안에서 모든 것을 해결하거나 두 서비스가 서비스 연동(Integration)을 통해 확장해 나가고 있습니다. 사용자 입장에서는 공급자가 주는 서비스만을 사용할 수 있거나, 다른 서비스를 얻기 위해서는 단절된 다른 서비스만을 사용해야 합니다. 티스토리의 블로거가 설탕몰의 제품을 사고는 그 후기를 쓸 때 두군데에 별도로 작성해야 하는 것이죠. 혹 두 서비스 공급자가 협약을 맺고 서비스 연동을 할 수도 있습니다만 기름몰에는 여전히 할 수 없습니다. Open API라는 것이 현재 인기긴 합니다만 지정된 함수를 부른다는 제한이 있기에 서비스 연동에 제한이 생길 수 밖에 없었습니다. RSS 같은 좀더 제너럴한 형태의 경우 특별히 서비스 협약 없이도 사람들이 두 서비스를 같이 사용할 수 있습니다. 즉 API를 좀 더 확장성 있게 만들 필요가 생기고 거기에는 필연적으로 Microformat 즉 데이터를 표기하는 약속이 나와야 할것입니다. 그 외에도 많은 고민들이 파생되고 RESTful Service라던가 다른 모델들이 나오고 있습니다. 이것으로 충분할 수도 있고 반대로 많은 사람들이 어떻게 해야 하는가 고민중입니다.

아무튼 이런 것들이 완성이 되고 인터넷의 플레이어들이 제대로 활동하기 시작하면 AJAX로 mash-up하는 지금의 작업들은 다 장난처럼 보일 것입니다. 정말 사용자의 입맛대로 서비스를 조립해 나갈 수 있습니다. 자신의 모니터 위에 사용하던 이미 변신합체한 어플리케이션 위에 새로 마음에 드는 기능(혹은 서비스)을 바로 연결할 수 있습니다. 데이터로 제공되기에 새로운 OS, 새로운 플랫폼, 새로운 디바이스가 나오더라도 빠르고 쉽게 제공할 수 있게 됩니다.

아마 이런 모습이 ISA(Internet Scale Application)이 추구하는 모습이 아닐까 합니다.

제한된 공급자(회사)에 의한 제한된 기획자가 의도한 서비스는 모든 사람을 만족시켜줄 수 없습니다. 아니 극히 일부만 만족을 시킬 것이고 상당수는 어쩔 수 없이 제한된 서비스만을 공급 받습니다. 누군가의 아이디어로 불편한 2%를 만족시켜주는 서비스가 나온다 하더라도 기존에 제공되던 부분이 없기 때문에 사람들이 쉽게 선택할 수 없습니다. 사람들을 행복하게 만들어 주고 싶은데 많은 부분들이 빠지게 됩니다. 그런 필요에 의해 Mash-up이란 개념이 나왔지만 근본적인 설계의 한계로 인하여 현재에도 잘 안되고 있습니다. XML-RPC나 SOAP 혹은 Web Service란 개념도 그런것들을 추구하고 있지만 그것을 좀더 강화시킬 필요가 있습니다. 그리고 그런 개념들을 빨리 기존 혹은 앞으로 나올 서비스들이 수용을 해야 할 것입니다. 그 결과로 인터넷은 정말 인류의 발전을 위한 재료가 될 수 있을 것입니다.

거대한 웹이, 정말 하나의 거미줄 처럼 움직이는 세상이 기대됩니다. 이것이 바로 ISA입니다.

~~~~~~~~~~~

라는 것이 발표에서 말한 3안이겠죠. 뜬구름 잡는 소리보다는 뭔가 보여주고 싶어서 기술적으로 조금 팟더니 시간도 오버되고 등등등 했습니다만(개인적으로 반성중입니다. 이게 무슨 발표자야 하면서 ㅠ.ㅠ) 추구하는 바는 인류의 행복이고 방법에서는 현재까지 찾은 것은 저런 정도입니다. 그래서 아직 확정적으로 공개하기엔 약간 시기상조인 것 같습니다. 다른 좋은 방법이 지금 이순간 어느 차고에 있는 대학생의 머리에서 번쩍 하고 있을 수도 있죠.