52 번째 수정본 소스 보기 : 위키의블로그화프로젝트
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: 위키의블로그화프로젝트 는 읽기 전용 페이지입니다.
== # 현재 [[Diary]]의 문제점 == [[Diary]], Jof:조프일기, Babel:NyxityMonologue 등은 [[조프]]님의 Jof:위키의일기장화프로젝트 아이디어를 사용하여 [[위키위키]]에서 블로그와 유사하게 날짜 순으로 내용을 표시하고 있다. ([[Diary]]는 2005년 3월부터, Babel:NyxityMonologue""는 2005년 4월 19일부터 이 페이지의 내용대로 수정되었음) 이렇게 일기장을 구성했을 때의 장점은 다음과 같다. (Jof:위키의일기장화프로젝트""에서 옮김) * 쓰기 편하고 수정하기 편하다. * 답글 다는 사람도 쉽게 수정할 수 있다. * 위키만으로 된다. 프레임 나눌 필요 없다. * 위키이니만큼 각종 위키 태그를 사용할 수 있다. * 날짜로 찾아서 볼 수가 있다. 반대로 이런 위키일기장의 단점은, * 일기 페이지들의 제목이 "Diary/2005-02-28"처럼 오직 날짜로만 구성된다는 점 ** "URL에 페이지 제목이 나타나기 때문에 URL만 봐도 내용을 짐작할 수 있다"는 [[위키위키]]의 장점을 전혀 살리지 못하며, URL에 인덱스번호나 날짜가 나타나는 웹게시판, 블로그와 동일해져 버림 ** 위키 내에서 검색이나 목록을 출력했을 때도 오직 날짜밖에 나오지 않음. 이것은 웹게시판이나 블로그보다 더 나쁜 상황을 만든다. ** 예를 들어 GyparkWiki 에서 "블로그"를 검색했을 때, Diary에 속한 페이지 중에서 해당되는 페이지 목록은 다음과 같다. 즉, 페이지 제목을 보고서는 그게 무슨 내용을 담고 있는지 짐작조차 할 수 없기 때문에 하나씩 다 클릭해서 들여다봐야 한다. {{{ .... Diary/2004-04-01 .... Diary/2004-04-13 .... .... Diary/2004-12-23 .... Diary/2005-01-08 }}} * 하루에 하나의 일기밖에 쓸 수 없다. ** 물론 하루 일기에 두 가지 이상의 내용을 같이 적을 수도 있지만, 이 경우 트랙백을 받거나 보낼 때, 다른 곳에 일기의 링크를 걸 때 매우 애매해진다. == # 해결책 궁리 == 그래서, 제목이 단순한 날짜가 아니라 내용을 나타낼 수 있게 할 방안을 궁리해 보자. 그 중 하나는, 현재의 "페이지제목"과 별개의 "제목"을 도입하는 방안이다. 현재 UseModWiki의 각 페이지는 "페이지제목.db"이라는 이름으로 DataDir에 저장되어 있고, 그 파일 안에는 페이지의 생성 시각, 수정 시각, 리비전 번호, 수정한 사람, 페이지의 내용 등이 들어간다. 여기에 별도로 "제목" 자료구조를 더 추가하여, 페이지리스트 등에서 이 제목을 출력하게 만들 수 있겠다. 그렇지만, 아무리 생각해도 좋은 방법이 아니다. * 페이지를 편집하고 저장하는 과정, 페이지 목록을 출력하는 과정 등등을 죄다 뜯어고쳐야 한다. * 현재는 DataDir에 저장된 파일이름만 얻어내면 페이지제목을 뽑아낼 수 있지만, 새로운 "제목"을 뽑아내기 위해서는 모든 *.db파일을 다 읽어야 한다. * 두 가지의 제목이 혼용되면서 논리적으로도 혼동의 여지가 많다. 따라서 일단 기각. 다른 방안은, 현재 [[Diary]]와 유사하게, 온갖 잡다한 매크로를 추가하여 블로그 흉내를 내는 것이다. 이걸 좀 더 궁리해 보자. == # 블로그 흉내내기 == === # 기본 아이디어 === [[위키의블로그화프로젝트]], 줄여서 위키블로그의 기본 아이디어는 이렇다. * 위키블로그의 각 포스트는, 그냥 하나의 위키 페이지이다. 이것은 현재 일기장에서 "Diary/2005-02-28"이 하나의 페이지인 것과 마찬가지. * 다만 제목은 현재처럼 날짜를 쓰는 게 아니라 다른 페이지들 처럼 내용과 연관된 제목을 사용한다. * 하루에 두 가지 이상의 내용을 올릴 때는 각각의 페이지로 만들어 올린다. 이렇게 하면 다음의 장점이 있다. * 각 포스트에 대해 코멘트, 트랙백은 기존의 기능을 그대로 사용할 수 있고, 다른 사이트와 트랙백 교환 등을 할 때도 애매한 점이 없어진다. * 기존의 일기장처럼 코멘트와 트랙백 등이 다 페이지 내용에 포함되므로 자유롭게 수정하거나 관리할 수 있다. 사실 위의 구현은, 생각해보면 처음부터 가능했던 것들이다. 그냥 "Blog"라는 페이지 하나 만들고, 새로 글을 쓸 때는 Blog에다가 새 페이지의 링크를 추가해주면 된다. 그렇지만 이 경우 아래와 같은 문제점이 있다. * 일기장과 반대로, 날짜를 가지고 페이지를 관리하기 힘들다. (월별 출력, 최근 5편 출력 등) * 한 포스트를 본 후 다음 포스트로 이동할 때, "이전 글", "다음 글"로 가는 링크를 만들기 힘들다. 그런데 이제는 위의 두 가지 문제점을 해결하는 것이 수월해졌다. * [[UseModWiki소스수정/PrevUpNext매크로]]를 만들면서 어떤 목록페이지를 보고 이전 글과 다음 글을 찾을 수 있게 되었음. * [[UseModWiki소스수정/매크로모듈화]]와 [[UseModWiki소스수정/액션모듈화]]가 되어서, 블로그 전용 매크로를 잔뜩 만들어도 그다지 부담이 없게 되었다. ;-) === # 구현 계획 === 블로그 페이지를 만든다. 페이지 이름을 "Blog"라고 하자. ==== # 블로그 목차 ==== 다음 블로그의 전체 포스트 목록 페이지를 만든다. "Blog/목차"라고 하자. "Blog/목차"페이지의 구성은 다음과 같다. {{{ * [[/세번째포스트]] 2005-03-01 <-- 가장 마지막 글이 제일 위에 * [[/두번째포스트]] 2005-02-20 * [[/첫번째포스트]] 2005-02-10 <-- 가장 첫 글이 제일 아래에 }}} ==== # 새 포스트 쓰기 ==== 새 포스트를 올릴 때는, "Blog/목차"페이지에 새 포스트의 제목 링크와 날짜를 작성한 후, 링크를 클릭해서 새 글을 쓴다. 일일이 페이지를 고쳐서 쓰는 게 귀찮으니, comments 매크로와 유사한 blog_newpost 매크로를 만들어 쓰자. ==== # 개별 포스트 페이지 ==== 각각의 포스트 아래에는 blog_prevnext(Blog/목차) 매크로를 둔다. 이 매크로는 prevupnext매크로처럼 목차를 읽어서 이전 글과 다음 글로 가는 링크를 띄움. ==== # 블로그 첫화면 ==== Blog페이지에는 기존의 includedays 와 유사하게 blog_include 매크로를 쓴다. 가장 최근 글 하나, 또는 가장 최근 몇 편의 블로그를 include 하여 보여 준다. 마지막에는 첫화면에 나온 포스트들보다 하나 전 포스트로 이동하는 링크를 둔다. ==== # 날짜별 블로그 관리 ==== Blog/목록 페이지에는 각 포스트 제목 옆에 날짜를 적게 하였다. 이 날짜를 가지고 처리를 한다. ==== # 블로그 관련 매크로 ==== 위에서 얘기한 내용들과 연관된 매크로들 * blog_newpost : comment와 유사. 제목 필드와 날짜 필드. 날짜 필드에는 오늘 날짜를 디폴트로 출력. 저장 버튼을 누르면 목록 제일 위에 "* 제목 날짜"의 형식으로 저장 ** "제목"필드에 제목만 적고 저장할 때 대괄호쌍
[[ ]]
를 추가할지, 대괄호쌍도 사용자가 직접 넣게 할 지 고민중. * blog_prevnext(목차페이지) : 목차페이지를 읽어서, 현재 출력한 페이지의 이전 포스트와 다음 포스트의 링크를 출력 (완성) * blog_includeorder(목차페이지,시작순서,끝순서) : 인자가 하나 뿐일 때는 목록에서 순서 범위에 해당하는 포스트들을 include. (완성) * blog_includeday, blog_includedays : includeday와 includedays와 동일한 인터페이스, 동일한 동작을 하는 매크로인데, 사용할 일이 없다고 생각됨. * blog_includeperiod(목차페이지,시작날짜,끝날짜) : 시작날짜와 끝날짜 사이에 해당하는 포스트들을 include. 월별 아카이브를 출력할 때 사용. (완성) * blog_listorder, blog_listperiod : blog_include, blog_includeperiod와 동일한데, 본문을 include하지 않고 목록만 리스트로 출력하게 함. (완성) * blog_calendar : calendar와 유사한 달력 매크로 (완성) * blog_prevnextmonth : "2005-03"과 같이 어떤 달에 해당하는 페이지에서 이전 달과 다음 달로 가는 링크를 만들어 주는 매크로. * blog_rss : RSS를 출력하는 URL의 링크를 만들어 주는 매크로 ==== # 블로그 전용 [[RSS]] ==== UseModWiki의 [[RSS]]기능은 [[최근변경내역]]과 유사하게, 페이지가 수정될 때마다 다시 해당 페이지를 RSS목록에 포함하는데, RSS리더기나 메타블로그 사이트에서 제대로 처리하지 못하는 경우가 보인다. action=blog_rss 액션을 추가하여 목차페이지를 읽어서 RSS xml을 만들어 출력하도록 한다. ==== # 부가 기능 ==== 태터 툴즈의 경우 본문 우측에, "달력", "카테고리", "최근 포스트", "최근 리플", "최근 트랙백", "월별 아카이브" 등의 목록이 뜬다. 이걸 흉내내 보자. * 달력 ** calendar와 유사한 blog_calendar(목차페이지,년,월,일) 매크로를 따로 만들어, 목차페이지를 읽어 각 날짜에 해당하는 포스트가 있는지를 검색하고, 포스트가 있는 날짜에는 해당 포스트로 가는 링크를 걸고 다른 날짜는 아예 링크가 뜨지 않게 함. ** 한 날짜에 해당하는 포스트가 두 개 이상 있을 경우 목록에서 위쪽에 있는 (즉, 보다 나중에 작성된) 페이지로만 링크가 걸리는 것이 한계 * 카테고리 ** 사용자가 수작업으로 분류를 넣고, 분류들의 목록을 적어 줄 수밖에. * 최근 포스트 ** 이건 목차를 읽어서 최근 몇 개만 출력하게 하면 된다. blog_listorder 매크로를 쓸 수 있겠다. * 최근 리플, 최근 트랙백 ** 방법1. 리플의 경우는 comments 매크로와 비슷한 블로그 전용 blog_comments 매크로와 blog_comments 액션을 따로 만들어서, blog_comments 를 이용하여 입력한 리플의 경우는 따로 처리를 해 줄 수 있겠다. 근데 트랙백은 정말 대책없다. *** [[UseModWiki소스수정/Comments매크로]]와 [[UseModWiki소스수정/TrackBack]] 패치의 소스를 고쳐서, 어떤 페이지(예를 들어 Diary)의 하위페이지에 코멘트나 트랙백이 달릴 경우, Diary/BlogRc 페이지에 그 내용을 자동으로 기록한다. 이 Diary/BlogRc 페이지의 내용을 <blog_listorder(Diary/Rc,1,10)> 등과 같이 읽으면 가장 최근 10개의 코멘트 또는 트랙백의 목록을 얻을 수 있다. ** 방법2. 최근변경내역을 읽어서 그중 블로그목차에 해당하는 페이지만 걸러내어서, "최근 수정된 포스트" 순으로 출력할 수는 있겠다. 이 경우 수정된 포스트 제목을 보여줄 수는 있는데, 실제로 달린 리플이나 트랙백의 내용을 목차로 보여줄 수가 없다는 것이 한계. * 월별 아카이브 ** 이건 따로 Blog/2005-02 등의 월별 아카이브 페이지를 만들어 그 페이지 안에서 blog_includeperiod나 blog_linkperiod를 써서 월별 포스트를 출력하도록 하고, 본문 우측에는 이런 아카이브 페이지의 목록을 적어주면 되겠다. === # 한계점 === * 블로그 내에서만 적용되는 카테고리 기능을 넣기가 힘들어 보임. ** [[분류분류]]를 응용해서 넣을 경우 분류를 나눌 수가 있는데, 한 분류의 포스트를 다시 작성시간순으로 배열하는 것이 만만치 않아 보임. * 위키이다보니, 동일한 제목의 포스트를 두 번 이상 작성할 수 없다. * 포스트에 해당하는 페이지를 삭제한다던가 목록 중간에 새로운 글을 집어넣을 때, 목차 페이지도 직접 고쳐 주어야 하는 불편이 있다. == # 실제로 사용하기 == 실제로 적용해 보자. === # 새로 만들기 === 이 홈페이지의 [[Diary]]페이지를 참조하여 동일하게 구성하면 된다. * 블로그로 사용할 페이지의 이름을 결정한다. 예를 들어 "Blog"라고 하자. * [[Diary]] 페이지의 소스를 Blog 페이지에 옮긴다. 이 때 소스 내에 "Diary/"란 문자열은 "Blog/"로 고친다. * [[Diary/Header]] 페이지의 소스를 Blog/Header 페이지에 옮긴다. 역시 Diary는 Blog로 고친다. * [[Diary/Footer]] 페이지의 소스를 Blog/Footer 페이지에 옮긴다. 역시 Diary는 Blog로 고친다. * [[Diary/TemplatePage]]페이지의 소스를 Blog/TemplatePage 페이지에 옮긴다. 역시 Diary는 Blog로 고친다. * Blog/List 페이지를 만든다. [[Diary/List]]페이지의 소스 중에서 다른 것은 필요없고 다음의 줄만 적어주면 된다. 나머지는 장식이거나, 이 GyparkWiki에서만 적용되는 것들이다. {{{
}}} * [[Diary/Archive]] 페이지와, [[Diary/2005-02]]등의 월별 페이지를 비슷하게 Blog의 하위페이지로 만들어준다. * 새 글을 쓰고 싶으면 Blog/List 페이지에 가서 텍스트필드에 글제목과 날짜를 넣고 저장버튼을 누르면 해당 글로 가는 링크가 생긴다. 그 링크를 들어가서 "내용"을 지우고 그 자리에 내용을 작성하면 된다. ** 날짜 필드는 기본적으로 현재 날짜가 들어간다. 만일 작성일을 어제나 그 이전 날로 하고 싶으면 고쳐 준다. ** 주의점: Blog/List 에 있는 글목록 리스트는 항상 글제목 우측에 있는 날짜가 내림차순으로 (최근 날짜가 위로) 소팅이 되어 있어야 한다. 가장 최근 포스트보다 이전 날짜의 포스트를 작성해주고 싶다면 List페이지를 수작업으로 고쳐서 순서를 맞춰줄 것. * Blog/BlogRc 페이지를 만든다. 이 페이지는 아무런 내용이 없어도 된다. ** Blog의 하위페이지에 코멘트나 트랙백이 달리면 이 Blog/BlogRc 페이지에 자동으로 기록되며, Blog/Footer 페이지에서는 blog_listorder매크로를 사용해서 그 기록을 출력한다. === # 기존 일기장 방식에 덧붙이기 === 방법이 두 가지가 있는데... * 미친 척 기존의 Header, Footer 등의 원 페이지를 수정해 버린다. Footer에는 기존 날짜에는 calendar 매크로를 그대로 써서 예전 글을 달력에 표시할 수 있도록 한다. 또는 * 새로운 헤더와 풋터 페이지를 만든다. (BlogHeader, BlogFooter 등) 새로 작성하는 글들은 이 새로운 헤더를 include 하게 한다. 두 방법 다 막상 써 보면 새로 쓰는 글들과 기존의 글들 사이의 이동이 매끄럽지 않다는 한계가 있다. === # 기존 일기장도 블로그 방식으로 변환하기 === 각각의 일기글 자체는 수정할 필요가 없다. * 일기로 쓰던 메인 페이지(역시 Blog라 하자)와 그 하위의 /Header, /Footer 페이지 등을 위에서 얘기한 데로 고쳐준다. * /List 페이지에 기존의 글들의 목록을 추가해 줘야 한다. 다음과 같은 식이 될 것이다. {{{
<-- 이 매크로 바로 아래 덧붙임 * [[/2005-02-26]] 2005-02-26 <-- 기존에 썼던 가장 마지막 일기 * [[/2005-02-18]] 2005-02-18 <-- 이런 식으로, 글의 제목과 작성날짜가 동일하므로 같은 날짜를 두 번 써주는 형식이 된다. ... * [[/2003-09-14]] 2003-09-14 * [[/2003-09-13]] 2003-09-13 <-- 가장 처음 쓴 일기 }}} * 근데 위와 같이 목록을 쓰는 게 좀 귀찮다. [[주인장]]의 경우는 페이지목록에 가서 [[Diary]]의 하위페이지 목록을 긁어 온 다음, 월별 페이지 줄은 지우고, 남은 줄을 ViEditor를 써서 각 라인을 위와 같은 형태로 치환한 후, 리눅스에서 sort 명령을 써서 순서를 역순으로 바꿨다. 이렇게 하면 매우 간단한데, 그 외 다른 에디터로는 어떻게 해야 할지 모르겠다. :-) * [[Diary/2005-02]]등과 같은 월별 페이지는, 수정해도 좋고 말아도 좋다. 수정하지 않고 그냥 쓸 경우 기존의 include 를 쓴 경우는 이전 글이 먼저 오고, blog_includeperiod 를 쓴 경우는 최근 글이 먼저 오기 때문에 일관성이 없다는 단점이 있다. == # 기타 == 그 외 필요한 기능이나 매크로가 있거나, 문제점이 보이는 것에 대해서는 아래 의견 남겨 주세요.
* ''' [[Raymundo]] ''' : 이런, include 시리즈는 먼저 처리해야 하니까 wiki.pl 안에 넣어야만 하는데 잊고 있었다... -_-;;; include를 빼면 영 신통치가 않은데... -
2005-3-1 10:27 pm
* ''' [[Raymundo]] ''' : MyBlog에서 테스트 -
2005-3-2 5:05 pm
* ''' [[Nyxity]] ''' : 포스팅이 몇일날 올려졌는지에 대해서는 포스트자체에서는 알기 힘들게 되어있군요 -
2005-3-2 6:23 pm
* ''' [[Raymundo]] ''' : 맞습니다, 처음 작성날짜는 애초에 포스트에 적어야겠죠. 템플릿 매크로를 쓰면 불편하지는 않을 거예요. -
2005-3-2 6:28 pm
* ''' [[Raymundo]] ''' : 포스트는 무조건 MyBlog의 하위페이지로 넣게 하는 걸로 한 발 물러나야겠습니다. 아무 페이지나 쓸 수 있게 하려니 신경써야 할 게 너무 많아서... -
2005-3-3 11:40 am
* ''' [[Raymundo]] ''' : 매크로들을 손을 좀 더 봤습니다. MyBlog 페이지에서 확인해보시고 이상한 거 있으면 알려주세요. -
2005-3-3 12:32 pm
* ''' [[Nyxity]] ''' : 하위페이지만 되는건 조금 아쉽네요 -
2005-3-3 1:03 pm
* ''' [[Raymundo]] ''' : 아뇨 쓸 수는 있습니다. 목차페이지에 있는 폼은 자동으로 "/"를 붙여버리니까 그걸 수작업으로 빼 주시면 되죠. 대신 별도의 페이지에 블로그 내용을 적을 때에는 Header 나 Footer 를 명시적으로 MyBlog/Header 와 같이 적어주어야 하고, include와 noinclude를 적절히 써줘야 합니다. 하위페이지라면 템플릿을 쓸 수 있지만 상위페이지는 일일이 적어주거나 다른 페이지의 폼을 복사해서 써야 되니 그게 귀찮겠죠. -
2005-3-3 1:10 pm
* ''' [[Raymundo]] ''' : 생각해보면 Diary의 경우는 죄다 하위페이지였으니까, 적어도 더 나빠지지는 않은거죠. :-) -
2005-3-3 1:11 pm
* ''' [[Raymundo]] ''' : [[블로그테스트]]를 참조하세요. -
2005-3-3 1:15 pm
* ''' [[Nyxity]] ''' : 그런데.. 포스팅이 많아지면 List페이지가 조금 난감해질듯하네요. -
2005-3-3 1:36 pm
* ''' [[Raymundo]] ''' : 그 생각을 안 한 건 아닌데, 뾰족한 대책이 없군요. (왕 꽁수 대책은 생각해두고 있습니다만) 근데 제가 2003년9월부터 [[Diary]]를 썼는데 현재까지 올린 글이 250개 정도거든요. 천개 정도라면 별 문제 없지 않을까 싶긴 한데, 한번 MyBlog아래에 잔뜩 만들어 볼까요? -
2005-3-3 1:45 pm
* ''' [[Raymundo]] ''' : 20일동안 하루에 글 100개씩, 총 2000개의 글을 올렸을 때, 날짜로 목록 뽑아내기를 하면 가장 오래 걸릴 때가 (2000개 전부 포함할 때) 3.5초, 보통은 2초, 짧게는 0.6초 정도 걸리는군요. 이정도면 참을만 하다고 생각하는 것은 저뿐일까요? ^^ -
2005-3-3 2:09 pm
* ''' [[Nyxity]] ''' : 그냥 그렇다는 거죠. :) -
2005-3-3 3:38 pm
* ''' [[Raymundo]] ''' : 좀 무리를 한 감이 있지만... 얼추 필요한 흉내는 다 낸 것 같습니다. 일단 완료~ -
2005-3-7 1:12 pm
* ''' [[Nyxity]] ''' : 오오..수고하셨습니다. -
2005-3-7 1:21 pm
* ''' [[Raymundo]] ''' : Nyxity/ 중간 중간에 의견 남겨 주셔서 감사합니다. :-) -
2005-3-7 2:01 pm
* ''' [[Nyxity]] ''' : Babel:NyxityMonologue/위키의_블로그화 드디어 실행에 옮겼습니다. -
2005-4-19 4:08 pm
* ''' [[Nyxity]] ''' : 월별 아카이브를 시간 역순이 아닌 시간순으로 정렬하는 방법은 없을까요? 유니코드 전환도 성공하셔서 왠지 이것도 가능할 듯.. -
2007-3-6 5:27 pm
* ''' [[Raymundo]] ''' : 유니코드하고는 전혀 관계없이 그건 첨부터 가능했지만 "블로그니까 뭐.."라는 생각에 고려하지 않은 건데요 :-) 근데 하도 예전에 만든 매크로라서 좀 들여다봐야겠습니다. -
2007-3-6 7:19 pm
* ''' [[Raymundo]] ''' : ext2.1b 에서 blog_library.pl만 받아서 덮어씌우신 후에, 시작날짜와 끝날짜를 반대로 주시면 됩니다. 기존의 페이지를 고칠 필요 없게 하려다보니... 파라메터로 주는 날짜와 출력되는 순서가 반대라서 좀 헷갈린 감이 있습니다만... -
2007-3-6 9:48 pm
* ''' [[Nyxity]] ''' : 적용했습니다. 감사감사. -
2007-3-6 11:49 pm
----
---- [[기타분류]]
위키의블로그화프로젝트
페이지로 돌아가기 |
다른 수정본 보기