태터 툴즈에 Gmail의 레이블 시스템을 도입하자.

Twitter icon류광, 2004-12-05 00:12

현재 이 블로그에는 레이블 시스템이 아주 원시적인 형태로 구현되어 있습니다. 오른쪽 메뉴를 보면, '레이블'이라는 제목 아래에 이 블로그에 설정되어 있는 레이블들이 나와 있습니다. 한 레이블을 클릭하면 그 레이블에 해당하는 글들의 목록이 나옵니다.

레이블 하나를 클릭해보면 눈에 익은 화면이 나올텐데[주1] 예상하셨듯이 기존의 태터 툴즈 키워드를 레이블처럼 사용하는 것일 뿐입니다. 각 글에는 그 글에 붙일 레이블에 해당하는 키워드를 넣고, 메인 페이지에는 이 블로그에 설정되어 있는 키워드들을 나열하는 것이죠...

레이블 시스템에 대해 좀 더...

최근 글 근황, 2004-12에는 두 가지 내용이 있습니다. 하나는 최근 일어난 서버 해킹 사건과 태터툴즈 설치에 대한 내용이고 또 하나는 제 번역 작업에 대한 것입니다. 현재의 분류 설정에서 처음 내용은 '공지'에 해당하고 두 번째 내용은 '번역'에 해당하는데, 트리 형태의 분류 시스템에서는 하나의 글에 두 가지 분류를 적용할 수 없습니다. 그렇다고 번역을 공지의 소분류로 한다거나 공지 아래에 '번역+공지' 같은 소분류를 두는 것은 좀 어색합니다.(그 반대도 마찬가지고요.) 이런 한계는 분류 시스템의 분류들이 계통구조, 간단히 말해서 트리 형태로 조직화되어 있기 때문입니다. 디렉토리 시스템이나 이메일 클라이언트의 편지함 시스템들 역시 마찬가지 한계를 가지고 있습니다. Gmail은 이런 한계를 '레이블'이라는 개념으로 극복했습니다. 트리 시스템과는 달리 레이블 시스템에서는 글과 레이블이 다 대 다 관계이고 레이블들 사이에 수직적인 관계가 없기 때문에 고민할 일이 적어집니다. 앞에서 말한 '근황, 2004-12' 글이라면 그냥 '번역'이라는 레이블과 '공지'라는 레이블을 붙이면 됩니다.

현재의 구현은 그냥 레이블 개념이 어느 정도 유용할 것인가를 시험해 보기 위한 것일 뿐이며, 제가 바람직하다고 생각하는 방식의 구현이 아니라서 소스는 태터툴즈 개발자 분들이나 또는 이런 시스템을 본격적으로 구현해 보고자 하는 분들에게만 공개할 생각입니다.

제가 생각하는 바람직한 구현은...

지금의 구현은, 무엇보다도 특정 레이블에 대한 글 목록이 개별적인 창으로 나타난다는 점이 불만입니다. 키워드 시스템을 그대로 사용하기 때문에 나타나는 한계인데요. 카테고리 클릭했을 때처럼 메인 페이지 안에서 글 목록이 나오는 방식이 바람직할 것입니다. 그리고 좀 더 내부적으로는, 현재는 특정 레이블에 속하는 글 목록을 DB의 전체 텍스트 검색을 통해서 얻고 있습니다. 텍스트 파일 기반의 위키들이 역링크를 구현할 때 사용하는 방식과도 비슷한데요. 태터툴즈은 DB 기반이므로 레이블과 글 사이의 다 대 다 관계를 담은 테이블을 따로 두는 게 좀 더 효율적이고 관리도 쉬울 것입니다. (예를 들어 현재는 레이블 이름을 고치면 그 레이블에 해당하는 글의 레이블 이름도 모두 고쳐야 하지만 레코드들의 관계를 이용한다면 그럴 필요가 없습니다.) 또한 이 글 제일 끝에 보이듯이 레이블 이름을 글 내용에 포함시켜야 하는데 좀 지저분하게 보일 수도 있구요...

사실 아이디어만 보고 직접 구현할 수 있는 분들이 많을 것입니다. 그래도 혹시 소스를 원하시는 분은 연락처를 남겨 주세요...

[주1]원래는 개별 키워드 창을 뜻하는 것이었는데, 지금은 검색 시스템을 사용하는 방식으로 바뀌어서 개별적인 키워드 창은 뜨지 않습니다. 두 번째 글을 참고하시길. --2004.12.9

태그: 프로그래밍 블로그

comments powered by Disqus

예전 댓글(읽기 전용)