목차

pageinfo
status
Draft

DokuWiki

개요

PHP로 만들어진 위키엔진 소프트웨어.

도쿠위키는 현존하는 (소형) 위키엔진 중 가장 범용적이고 간편한 솔루션이다. PHP를 사용하기 때문에 배포가 쉬우며, 그렇지만 모던 PHP에 종속되지 않기 때문에 일반적인 호스팅 환경에서도 잘 작동하고, 파일 기반이기 때문에 저사양에서도 잘 작동한다. 코어 엔진은 극히 최소한의 기능만 담고 있으며 추가적인 기능은 extension으로 구현하도록 되어 있다. 즉 도쿠위키는 다른 위키엔진보다도 더 유연하고 개인화되어있다. 사실상 ‘개인 위키’란 컨셉에 가장 잘 들어맞는 소프트웨어는, 지금까지도 도쿠위키다. 그러나, 아래 마크업 단락에서 다루듯 도쿠위키가 가진 단점 또한 선명하다.

마크업

도쿠위키는 여타의 다른 마크업 언어와는 전혀 다른, 상당히 괴상한 문법을 하고 있다. 가장 거슬리는 것은 h1에서 아내로 내려가면서 등호의 개수가 줄어드는 것이다. 단순히 ‘가장 상위의 단락 기호는 가장 눈에 잘 띄여야 한다’라는 생각으로밖에 읽히지 않는, 쓰레기같은 문법이다. 의미론적이고 기능적인 차원에서 헤딩은 하위로 갈 수록(즉 깊어질 수록) 더 많은 수의 기호로 정의되어야 하는 것이 맞다. markdown이나 asciidoc 등 수많은 다른 마크업들이 괜히 반대로 규정하는 것이 아니다. 도쿠위키의 단 하나의 단점을 꼽자면, 이러한 불합리한 마크업 문법을 꼽을 수 있을 정도다.

특징

도쿠위키가 (특히 다른 위키엔진과) 차별되는 점에 대한 정리.

하이퍼링크

도쿠위키는 wikilink를 상대적으로 취급한다. 예컨대 [[pagename]]은 같은 폴더/namespace에 있는 pagename이란 페이지로 이동시킨다. 혹은 다른 namespace로 연결하기 위해, 최상위부터 [[namespace:pagename]]이란 문법을 사용해도 된다.

Pagename

도쿠위키는 문서의 제목(title)과 페이지의 이름(pagename/filename)을 구분한다. 페이지이름은 실제 url에 표시되는 이름이다. 이는 도쿠위키의 장점이 될 수도 있지만, 단점이 될 수도 있다. 후자의 경우 특히 링크를 걸 때 두드러지는데, 미디어위키처럼 표제어로 직접 링크를 거는 것이 어려우며, 페이지이름으로 걸어야 한다. 따라서 표제어와 페이지이름간의 연관성을 고려해야 한다.

페이지이름은 (아마도 url을 상정하여) 다음 규칙을 갖는다.

이름

이름의 Doku는 독일어 Dokumentation에서 온 것이다. 주 개발자인 Andreas Gohr는 독일 출신이다. 참고: docuwiki [DokuWiki]

기능

도쿠위키의 주요 기능에 대한 정리.

백업

최소한 다음 디렉토리를 백업하면 도쿠위키의 전체 컨텐츠를 복원할 수 있다. 나머지는 코어 파일을 그대로 사용하면 된다. 단 코어 파일을 고쳤다면 해당 파일도 백엄해야 한다.

ACL

도쿠위키는 ACL 규칙을 통해 특정 사용자/그룹이 특정 페이지/네임스페이스에 접근하지 못하도록 한다. 이 외에 다른 페이지 필터링 규칙은 없다. 예를 들어 특정 태그를 가진 페이지를 모두 접근하지 못하도록 하는 방법은 없다. 각 페이지별로 따로 규칙을 설정해주는 방법 정도다.

remote

참고: devel:xmlrpc [DokuWiki]

Dokuwiki는 XML-RFC를 통한 원격 접근을 지원하며, 플러그인을 사용하면 필요한 기능을 추가로 구현할 수도 있다.

지원하는 (주요) 기능

너무 지엽적이거나 일반적으로 불필요한 함수는 생략.

플러그인

Data

링크

위키 페이지에 구조화된 데이터를 추가하고, 이를 쿼리할 수 있도록 한다.

기본 타입

Data 플러그인은 이름에 (밑줄과 함께) 붙은 접미사로 타입을 구분한다. 충분히 타입을 유추하는 것이 가능할 것이나, 무결성을 확보하기 위한 결정일 것이다.

한 항목에 여러 값을 받고 싶다면 (타입 식별자를 포함한) 맨뒤에 s를 붙이면 된다. 단 s로 끝나는 이름의 경우, 밑줄을 붙여서 혼동을 피해야 한다.

사용자 타입

사용자 타입(type aliases)은 기본 타입을 기반으로 새로운 타입을 생성하는 기능이다. 관리 메뉴의 ‘필드 별칭‘ 항목을 통해 정의할 수 있으며, 기본 타입에 대입할 때 앞뒤에 추가할 접두사/접미사. 유효한 값의 목록 등을 정의할 수 있다.

Strata

Data 플러그인이 하나의 페이지에 하나의 데이터 엔트리만을 삽입할 수 있다는 한계를 극복하기 위해 만들어진 플러그인. sqlite 외에 mysql, postgresql 등의 데이터베이스 엔진을 선택할 수 있으며, SPARQL 형태의 쿼리를 요청할 수 있다.

Tips

링크

외부 링크


Backlinks