'1.1'에 해당되는 글 5건

  1. 2006/11/09 천기누설 (1)
  2. 2006/11/05 태터 제작 방법론 (3)
  3. 2006/11/01 태터툴즈 1.1 - Blog API (8)
  4. 2006/11/01 산고 - 태터툴즈 1.1 - 마지막 달리기를 시작하며
  5. 2006/10/20 Count-Down to TatterTools 1.1 (5)

천기누설

개발&Development/태터툴즈 2006/11/09 10:21 posted by 겐도
태터 1.1의 RC4가 현재 패키징이 완료된 후 공개될 준비를 하고 있습니다. 교주(?)님이 온라인상에 나타나기만 하면 공개가 바로 될 것입니다.

이번엔 좀 빡시게 테스트를 하였습니다. 현재 스킨의 일부 누락 이미지와 번역만 완성하면 바로 정식으로 할 수 있을 정도의 수준을 생각했고 덕분에 후보 첫번째 패키징에서 대박 버그들 잡느라 죽는 줄 알았습니다. 후보 2,3이 지나 4번 후보만에 공개 결정을 하였습니다.

이제 이쁜 상자 만들고는 담아서 주말쯤에 공개될 것 같군요 :)



그리고는..

깨꼬닥~~~

태터 제작 방법론

개발&Development/태터툴즈 2006/11/05 06:37 posted by 겐도
1.1 RC3을 출시하고는 (관련발표) 비가 그치기를 기다리면서 주절주절.

주로 내부 PHP 함수와 QA만을 전담하다 이번에 CSS와 JS까지 손보는 작업까지 하면서 나름대로 세운 기준들을 적어볼까 합니다.

1. Static과 Dynamic의 분리
이번에 사이드바 ajax 코드를 넣으면서 고민 되었던 것은 로딩 시간입니다. 최초 로딩이야 어쩔 수 없다지만 매번 10년씩 걸리면 문제가 생길 수 밖에 없죠. CSS도 커지고 JavsScript의 양도 데이터를 능가할 정도로 커졌습니다. 말 그대로 사이트가 2~3배 느려질 수 있는 요소입니다.
JS와 관련해서는 좀 쓸데없이 함수를 부르는 경향이 커지더라도 스태틱한 JS 부분을 만들어 외부 파일로 빼는 것이 좋은 것 같습니다. PHP에서 생성해야 하는 JS부분도 가능한한 인자로 뽑아서 브라우저상에서 도는 부분이 많도록 하는 것이 로딩 속도 개선에 도움이 될 것입니다. 역시 IO가 가장 느리죠.
다만 브라우징 컴퓨터에 부하가 높아져서 페이지의 변신과정을 0.5배속으로 보는 현상도 발생합니다. 적당한 트레이드 오프도 필요하겠지만 이경우 오히려 JS 없이도 모든 기능이 동작하게 하는 것도 방법입니다.

2. HTML, CSS, JS / Data, View, UI 삼권 분리
흔히들 시멘틱 웹이라 하면 CSS랑 JS를 꺼도 뭔가 보이는 웹페이지를 의미한다라고들 하지만 현재 저의 생각은 그렇게 하나 안하나 구글 로봇은 저의 테이블 떡칠 블로그도 잘 퍼간다입니다. 아무리 XHTML에 맞춰 데이터를 기술한다 해도 파싱이 쉬울 뿐 시멘틱의 발견은 전혀 다른 예기가 됩니다. 제 글중에서 책 그림, 제목, 서평을 찾아 내기 위해선 결국 데이터의 설명이 별도로 필요합니다. RSS나 다른 데이터 교환 스펙들이 오히려 정확합니다.
다시 CSS와 JS의 이야기로 돌아와서, CSS를 끄면 당연히 블로그 화면은 사람이 읽기 어려운 상태로 바뀔 것이고 JS를 끄면 몇가지 동작이 제한 될 것입니다. 어떤 사람들은 일부 브라우저 환경에서는 이것을 사용하지 못할 때도 있으니 없어도 동작하게 만들어야 한다고 하지만 이는 자칫 CSS로 해야 할 일을 HTML로 하게 되고 JS가 해야 할 일을 CSS로 하게 만드는 부분이라고 보입니다.
정확히 HTML 혹은 XHMTL를 출력할 때는 페이지에서 보여주어야 할 데이터에 대해 고민하고 CSS는 화면의 표시, 그리고 JS는 일반적인 HTML 컨트롤만 사용하는 제한적인 사용자 인터페이스를 좀더 다양하게 확장해 주는 역할을 해야 한다고 보입니다. 완전한 3개의 기능 분리가 일어나면 당연히 JS 없이도 대충 사용하는데 지장없고 CSS가 가출을 해도 사용자 CSS를 입히면 대애충 작동에 문제가 없게 되겠지만 그것을 노리고 삼권불리를 하는 것은 아닙니다.
실제로 이번에 작업을 해 보면서 데이터의 문제와 보여지는 문제, 그리고 사용자 인터페이스의 문제는 구분이 됩니다. 삼권 분리가 잘 된 상황에서는 해당하는 계층(Layer)만 손을 보면 되지만 태터의 "글목록"같이 데이터베이스까지 달려갔다 오는 곳의 경우 버그 하나에도 많은 시간이 소요되는 것은 물론이고 새로운 기능이 추가되려 할 때 상당한 복잡도를 가져다 줍니다. 더불어 QA 과정에서도 기능이 여러 레이어에 걸쳐 있는 것은 테스팅이나 검증에서도 악영향 입니다.
성격이 다른 레이어는 구분하는 것이 좋다는 것은 개발/유지 보수 측면에서 많은 장점들을 주고 비지니스 기회를 잡아나가는 데 적절한 대응을 할 수 있다는 것은 쉽게 예상할 수 있을 것입니다. JS를 끄고도 잘 동작하게 HTML을 개조하라는 것이 아닌 버튼을 누르면 폼 전송이 일어나는 것을 드래그엔 드랍으로 사용자가 쉽게 사용할 수 있도록 하는 것입니다.

3. inline style은 댓가를 치른다. 더불어 CSS의 id 기술자도 만만치 않다.
몇 웹 표준책을 보면 inline 스타일에 대해서 위급할 때 쓰게 되겠지만 이후에 댓가를 치른다는 말이 나옵니다. inline은 너무나 강력하여 inline이 아니고서는 그 효과를 변경할 수 없습니다. 그래서 태터도 많은 부분을 inline이 아닌 class로 스타일을 기술하도록 변경하였습니다. 헌데 CSS에서 ID의 사용도 만만치 않음을 알게 되었습니다.
CSS의 기술자(Specifier)에서 ID를 사용하는 것은 상당한 힘을 가지고 있습니다. 한번 이것으로 선언하면 다시 ID에 클래스 몇개를 더 붙여야 오버라이딩이 가능합니다. 반대로 ID는 한번에 자신이 원하는 엘리먼트를 정확히 집어내므로 쉽게 유혹에 빠집니다. 결과는 inline과 동일하게 important라는 극약 처방을 쓰게 됩니다.
최근에 생성된 페이지나 데코레이션의 경우 ID는 정말 마지막에 쓰도록 권장되었습니다. 가능하면 태그로 접근하고 큰 부분들을 클래스로 접근하도록 하였습니다. ID는 정말 특이한 놈이고 작은 단위인 경우에만 쓰며 반대로 HTML을 기술할 때 JS에서 접근하는 용도로나 선언되지 왠만해서는 class만 제공하는 식으로 하였습니다.
바퀴벌레를 잡는데 핵폭탄을 쓰는 편이 가장 확실할지 모르겠지만 역시 적절한 양의 살충제가 더 효율적이고 사이드 이펙트가 적겠죠.
이번에 실제로 작업하면서 많은 것들을 배웠고 아마 다음 개비(?)때 이런 것들이 반영되어 좀더 깔끔한 구조의 결과물들을 만들 수 있게 될것입니다.

보너스. href와 onclick
사실 이 글을 쓰게 된 것이 최근에 오베 들어간다는 사이트의 코드를 보고는 양복입고 스폿라이트를 받으면서 잘난채 하고 있는 영업/경영인들을 위해 날밤까고 있는 개발자 분이 생각나서 혹시나 도움이 될까 때문입니다.아직 제가 웹쪽을 시작한지 몇달 되지도 않아 도움이 될 가능성은 낮아 보이지만 저 코드들 다 디버깅 하고 안정하 시키려면;;; 무섭군요.
흔히 anchor element를 만들고 href는 엄한곳을 가르키게 하고는 onclick으로 많은 것을 합니다. 장점은 커서를 가져다 대면 밑줄도 그어주고 커서도 바뀐다라는 것들. 발표회 자료를 보니 CSS 꺼도 잘돈다 하길래 JS를 껏더니 거의 모든 기능 링크가 죽어버리더군요.
개인적인 견해는 href와 onclick은 항상 듀얼로 정상 동작하게 만드는 것이 좋다입니다. 우선 해당 버튼이 클릭되었을 때 어떤 화면이 보여져야 하는 것은 href가 가르키는 URI에서 명확히 할 수 있습니다. onclick을 통해서 HTTPRequest를 하고나서 화면을 성형수술 한 후 결과물은 바로 해당 링크의 결과물과 비슷해야 겠죠. JS가 꼬여서 문제가 발생한다 치면 onclick만 없애버리면 당장 서비스에 문제는 없습니다.(위에서 말한 삼권 분리와 연관됩니다.) 또한 간단한 변화가 아닌 "대 운하공사"급의 경우 URI의 결과물을 JS에서 이용할 수도 있습니다.
보너스로 상태줄에 링크가 표시된다라는 점, 그리고 어떤 이유에서든지 JS가 에러가 나서 더이상 수행이 불가능한 타이밍에도 기능이 동작될 수 있다라는 것을 들 수 있을 것입니다.
( 참고로 JS의 런타임 에러는 아무리 코드가 정상적이어도 통신 문제나 타이밍, 클라이언트의 다른 프로그램-백신이나 보안 설정등-에 의한 영향에 의해 쉽게 발생됩니다.)

PS.
이번에 1.1 RC3을 내면서 개발자로서 부끄럽다고 생각되는 부분이... JS에 문제가 생겨 사파리에서 파일 업로드가 안되게 되었다는 것. 사실 JS 걷어내면 오히려 업로드가 될지도 모르겠습니다. 오페라.. 한번도 테스트 못해봤습니다. 컴터에 깔아는 놨는데;;;
파폭은 한글입력과 관련하여 너무 문제가 많더군요. 특히 맥OS X상에서 FF는 몇가지 버그 현상을 일으킵니다. 도저히 못잡겠다는;;;

PS2.
위의 견해는 이제 막 웹프로그래밍 걸음마 때는 사람의 글이므로 공개적으로 망신 주셔도 괜찮습니다. 뭐 지금까지도 워낙 구박 받으며 살아온 인생이라;;;
1.1에 추가된 기능중에 Blog API를 일부 지원하는 것이 있죠. 한번 맛배기를.

http://windowslivewriter.spaces.live.com/ 에 가면 MS Live Writer beta 버전을 받을 수 있습니다. 다른 툴들도 있겠지만 이것을 한번 사용해 보죠.

우선 플러그인 목록중에 Blog API를 활성화 시킵니다. 물론 이것 없이도 가능은 합니다. 이 플러그인은 좀 사용을 편하게 해 주는 것이죠.

이제 Live Write를 실행합니다. 처음 실행하면 계정 설정이 나오며 이미 사용중이신 분들은 계정 추가를 하시면 됩니다. 블로그 종류를 설정하는 화면에서 "Another weblog service"를 선택합니다.

이제 홈페이지 주소와 로긴용 이메일 ID, 패스워드를 입력합니다. Blog API 플러그인의 도움으로 홈페이지 주소만 입력해도 자동으로 셋팅이 됩니다.
이제 설정이 완료되었습니다. 위의 예제에서는 뒤에 "</string>"이라는 것이 붙는데 이는 테스트 케이스를 위해 넣은 것입니다. 즉 태그나 특수문자를 입력해도 동작하는데 별 이상이 없는 것을 확인하는 것입니다. (반대로 일부 작성기에서 오류를 일으킬 수는 있습니다.)

이제 글을 작성합니다. 그림 삽입 지원됩니다! 다만 태그의 경우 아직 지원하지 않고 카테고리의 경우 Live Writer는 복수개를 선택할 수 있으나 태터툴즈에 정상적으로 글을 올리기 위해선 카테고리는 하나만 선택하시기 바랍니다.
자 이제 툴바의 "Publish"를 누릅니다.
잠시 기다리면 블로그에 방금 저장한 글과 그림이 정상적으로 보이는 것을 확인할 수 있습니다.

파일 메뉴의 열기를 통하면 기존에 작성한 글도 편집 가능합니다.
실제 많은 작성 프로그램과 호환성에 약간 문제가 있을 수는 있습니다. 하지만 적당한 수준으로는 웹에서 직접 작성하지 않고 프로그램을 통해 포스팅을 할 수 있을 것입니다. 더불어 블로그나 기타 시스템과의 글 동기화도 구현 가능할 것입니다.

처음 나오기로 했던 때는 지나간지 오래고 최근에 작업하면서 선언했던 10월 말 릴리징은 일단 연기가 되었습니다. (참고 from TnF Forum)

MS를 따라 하는 듯한 느낌이 들지만 아무튼 막판의 IE7를 핑계삼아 몇일 늦게 나올 예정입니다. 물론 IE7이 이유의 전부는 아닙니다. 최근에 일부 호스팅 환경에서 오동작 하는 버그 몇가지를 확인하면서 이에 대한 안정성 확보 작업도 상당한 영향을 주고 있습니다. 더불어 각 기능에 대한 세밀한 테스팅을 하면서 시간의 여유를 가지고 작업을 하는 것으로 결정을 하였습니다.

일단 연기를 하고 보니 주위의 반응이 색다릅니다. 기존까지는 판매 목적의 프로그램만을 작성하다 보니 듀가 늦어진다고 말하는 순간 개발팀을 제외하곤 모든 사람들이 아우성을 쳤었는데 이번에는 배포판의 안정성에 좀더 신경을 쓰겠다라는 주장에 모두들 동의를 하고 있습니다. 물론 영원히 RC 상태로 있다간 잊혀져 버리겠지만 그래도 오픈 소스라는 특성 답게, 더불어 현재 작업하는 것들이 누구나 볼 수 있다는 점이 작용했는지 깔끔하게 마무리 하자라는 글들을 보게 됩니다. (뭐 베타 사용해 보고 관리자 화면이 와장창 깨지는 것을 보고 지금 릴리징 불가능하다고 납득하셨는지도 ㄱ-) 이에 저는 더 빨리 1.1을 공개하고 싶은 마음이 활활 타오르는 군요.


오늘의 보너스입니다. 사이드바 편집 화면인데 Java Script를 껐을 때의 화면입니다. 아직 CSS 작업이 약간 남아 있긴 하지만 지금 공개된 최신 리비젼에서도 볼 수 있습니다. 사이드바 편집 관련 코드들을 보면 나름 재미있을 것입니다. HTML의 FORM 구조에서 AJAX를 입혀 가는 과정이 나와 있죠. 중간에 JS가 구동되면서 부르르 떠는(?) 과정이 보기 싫다는 사람도 있습니다만 반대로 현재의 IE와 FF 위주로 작성된 스크립트가 문제를 일으킨다면 JS를 끄고 사용할 수 있습니다.

http://onesound.tistory.com/408

에서 지적한 크로스 브라우징이나 웹 표준의 이야기는 아닙니다. 그저 모듈화된 구조일 뿐입니다. HTML과 CSS와 JS의 3단 구조에 대한 이야기입니다. 사실 처음 해 보는지라 TT 1.1의 관리자 화면을 XHTML 1.1로 바꾸겠다라는 주장이나 관리자 화면의 스킨화 등을 포함하여 깨끗한 구조를 가지지는 못했습니다. 실제로 만들어 보고 문제를 겪으면서 무엇을 잘못했는지 깨달아 가는 과정입니다. 하지만 시도하는 과정 자체는 비단 현재의 개발 참여자 뿐만이 아니라 많은 사람들에게 흥미거리가 될 수 있을 것입니다.

TT 1.1이 나오면 TT를 직접 사용하시는 분들에게도 새로운 경험을 제공하겠지만 PHP나 웹 개발자 분들에게도 좋든 나쁘든 유용한 샘플이 될 것입니다. 좋은 부분이 있다면 샘플로 사용하시고 나쁜 부분이 있다면 고쳐서 커밋(Commit)해 주세요 :)

PS.
티스토리는??? 데굴데굴... 도망갈테닷 ㅠ.ㅠ
요즘 구독된 피드를 볼 시간도 없이 회사에만 오면 정신없이 하는 일이 TatterTools 1.1 작업입니다.

http://forum.tattertools.com/ko/viewtopic.php?pid=10054 : RC1 발표

대충 버그들은 거의 다 잡았나 싶었는데 IE 7이 나오면서 발목을 잡는군요.
한글판의 릴리징이 11월 쯤 되는 것 같은데 아무튼 새로운(!) 브라우저가 나온 셈이라  후속 작업이 필요할 것 같습니다.

또다는 후속 작업으로는 이번에 추가된 기능들에 대한 문서작성이겠죠. 플러그인이 더이상 소스코드를 직접 수정하지 않고 설정을 변경할 수 있게 되었고 자신의 테이블도 가질 수 있습니다. 더불어 스킨을 수정하지 않고 "최신 댓글"을 빼거나 광고 배너를 삽입 할 수 있게 되었습니다. 광고용 Object 코드를 이제 간단하게 넣을 수 있죠.

아직 0.9x나 1.0 Classic을 쓰시는 분들도 계시고 1.0.6 버전 사용을 지속하시려는 분도 계실껍니다. 1.1은 분명 사이즈도 커졌고 복잡한 기능으로 어려워 질 수도 있습니다. 일단 제가 보장해 드리는 것은 1.0용 스킨이 1.1에서도 동작할 것이고 1.1용 스킨조차 1.0에서 일부 기능이 동작하지 않겠지만 사용상에 큰 지장은 없을 것입니다. 1.0에서 백업한 데이터는 자연스럽게 1.1에 사용할 수 있습니다.

리체님이 스킨 메뉴얼도 상당한 완성도로 공개할 예정이시고 1.1의 강력해진(but 복잡해졌지만 ㄱ-) 플러그인 구조를 바탕으로 다양한 스킨/플러그인들이 나오리라 예상이 됩니다. 1.0을 계속 사용하셔도 별로 불편하지 않으실 껍니다. 허나 1.1로 업그레이드 하지 않고서는 못견디게 만드는게 저의 목표입니다. :)

보너스 : 빛도 보지 못하고 폐기된 배포 시도파일들