주제별 포럼 - 위키
글수 45
그간 Adios님께서 주로 정리해주신 내용을 바탕으로
기능목록을 뽑고 설계부터 해볼 생각입니다. --
자세한 update 내용은 trac과 forum에 할테니 많은 comment 부탁드립니다.
2008.05.31 09:53:23 (*.141.102.139)
^^ 댓글이 엄청 기네요 ㅎㅎ
일단 document 모듈과 board 모듈의 의존성은 앞으로 점차 떼어나갈 계획입니다.
(그런데 document.item이 모두 board에서 만들어졌다고 고려하고 있지는 않은 것 같은데요 ^^)
가능하면 새로 wikipage 모듈을 만드는 것보다는 document 모듈에서 필요한 부분을 확장해나가는 방식으로 만드는 것이 좋을 듯 싶습니다. (제로님 의견이기도 합니다. )
예를 들어, history 기능 같은 부분은 꼭 위키가 아니더라도 board 등에서도 enable을 할 수 있는 부분일 수 있습니다.
위키 파서는 좋은 의견이신 것 같습니다. +_+a
다만 현재 고민은 위지윅에서 위키 문법으로의 변환을 어떤식으로 처리해야 깔끔해질까 입니다.
점차 위키들도 위지윅에디터를 사용하고 있고해서 제로보드위키에서도 기본적으로는 위지윅 모드로 동작을 하게끔 생각하고 있습니다.
스프링노트가 한 예가 되겠네요 ㅎㅎ
우선은 차근차근 계획을 세워서 만들어 나갔으면 좋겠습니다 =)





위키 모듈에서는 다음과 같은 것들을 지원해야 합니다.
우선 위키 모듈을 위해 2개의 기본 모듈을 생각했습니다.
그리고, 기존 모듈에서 함께 사용하는 것들은
제일 고민했던 부분이 wikipage 모듈 부분입니다. 기존의 document 모듈을 사용할 것인가 말 것인가? 이것을 결정을 해야 개발 방향을 결정할 수 있기 때문에 이에 대해 신중한 검토가 있어야할 것 같습니다.
하나의 위키 페이지를 저장하기 위해서는 아래와 같은 것들이 함께 저장되어야 합니다.
이 때 파싱된 HTML 문서를 저장하는데 기존 document 문서를 사용할 것인지에 대해 고민을 많이 해봤습니다만, 그냥 wikipage 모듈을 만들어서 여기에서 모든 정보들을 관리하는 편이 좋을 것 같다는 결론을 내렸습니다. 물론 이렇게 하면 기존 통합 검색과 같은 모듈을 수정해야 합니다.
document 모듈을 사용한다고 해도 문제가 있습니다. 지금 상태로는 document 모듈에 저장된 문서는 전부 board 모듈에서 저장하는 문서라고 생각하기 때문에 만약 위키 모듈에서 documnet 모듈을 사용한다면 이 부분도 수정해야 합니다.
그래서 document 모듈에 쓸데없는 로드를 늘리느니, 그냥 wikipage 모듈에서 모든 정보를 저장하고 통합 검색만 수정을 하는 편이 나을 것 같다는 생각입니다.
위키 파서의 경우에는 기존의 사용되는 위키 엔진들의 파서를 구현해야할 것입니다. 제로보드XE 위키 모듈만의 새로운 위키 문법을 만들어낼 수도 있겠지만, 그것보다는 기존 위키 사용자들을 위해 각 위키 엔진 별로 파서를 구현하는 편이 좋을 것 같습니다. 그래야 기존 위키 사용자들을 흡수(?)할 수도 있을테고, 기존 위키 페이지들을 제로보드로 옮겨오기도 편하겠지요.
저는 지금까지 모인모인과 모니위키를 사용해왔었는데, 이 두 위키 엔진의 경우 위키 문법이 거의 비슷하기 때문에 모니위키를 기준으로 파서를 작성하고 있었습니다. 만약 다른 위키 엔진을 사용하시던 분이라면 해당 위키 엔진의 파서 부분을 위키 파서의 기본 템플릿이 확정되면 거기에 맞춰서 작성하면 될 것입니다.
wiki 모듈에서 구현해야할 기능으로는
wikipage 모듈에서 구현해야할 기능은
그리고, 기능 구현을 위해 필요한 DB 테이블은
그리고, 위키 모듈을 지원하기 위해 위키 파서 외에도 구현해야할 것은 버전 관리 기능입니다. 가장 좋은 방법은 서버에 rcs가 깔려있고, PHP에서 shell을 사용할 수 있으면 좋지만, 이것은 범용성을 제공할 수 없으므로, 어떻게든 가장 기본적인 버전 관리 도구인 rcs를 PHP로 포팅해야 할 것 같습니다. 다행히 이미 PHP로 포팅된 RCS 클래스가 있으니 이를 적절히 사용하면 될 듯 싶습니다. 그 외에 다른 버전 관리 도구들도 지원하면 좋겠지만, 실제로 shell을 사용하지 않고 PHP 만으로 버전 관리를 구현하기는 쉽지 않을 것 같습니다.
버전 관리 기능도 파서와 마찬가지로 템플릿 클래스를 만들고 하위 클래스에서 여러 버전 관리 도구를 지원하도록 하는 것이 나중에 확장을 위해서도 좋을 것입니다.
그리고, 각 위키 엔진에는 부가 기능(플러그인)들이 있는데, 이것을 구현하는 방법도 생각해봐야 합니다.
이런 부가 기능들을 모두 기본 위키 모듈(wiki.model.php 파일)에 집어넣는다는 것은 말이 안되는 것 같고, 제로보드의 애드온과 같은 형태로 위키 페이지에서 다양한 위키 부가 기능을 사용할 수 있도록 해야할 것 같습니다.
너무 난잡하게 제 생각을 적은 것 같습니다. 짧게 이야기해서 제가 생각하는 위키 모듈은 기존 위키 문법과 파서를 지원해야 하며, 또 여러 기능에서 확장이 가능하도록 설계를 해야 한다는 것입니다.
사실 지금 제 위키가 1000 페이지가 넘어가는데 이것들을 새로운 문법으로 재작성할 자신이 없습니다. :) 아무래도 자신이 쓰던 위키 문법을 써야 편하지 않을까요.