DokuWiki ======== ## 개요 도쿠위키는 현존하는 (소형) [[tech:wikiengine|위키 엔진]] 중 가장 범용적이고 간편한 솔루션이다. [[language:php|PHP]]를 사용하기 때문에 배포가 쉬우며, 그렇지만 모던 PHP에 종속되지 않기 때문에 일반적인 호스팅 환경에서도 잘 작동하고, 파일 기반이기 때문에 저사양에서도 잘 작동한다. 코어 엔진은 극히 최소한의 기능만 담고 있으며 추가적인 기능은 extension으로 구현하도록 되어 있다. 즉 도쿠위키는 다른 위키엔진보다도 더 유연하고 개인화되어있다. 사실상 ‘개인 위키’란 컨셉에 가장 잘 들어맞는 소프트웨어는, 지금까지도 도쿠위키다. 그러나, 아래 마크업 단락에서 다루듯 도쿠위키가 가진 단점 또한 선명하다. ## 마크업 도쿠위키는 여타의 다른 [[:markup|마크업 언어]]와는 전혀 다른, 상당히 괴상한 문법을 하고 있다. 가장 거슬리는 것은 h1에서 아내로 내려가면서 등호의 개수가 줄어드는 것이다. 단순히 ‘가장 상위의 단락 기호는 가장 눈에 잘 띄여야 한다’라는 생각으로밖에 읽히지 않는, 쓰레기같은 문법이다. 의미론적이고 기능적인 차원에서 헤딩은 하위로 갈 수록(즉 깊어질 수록) 더 많은 수의 기호로 정의되어야 하는 것이 맞다. [[:markdown]]이나 [[:asciidoc]] 등 수많은 다른 마크업들이 괜히 반대로 규정하는 것이 아니다. 도쿠위키의 단 하나의 단점을 꼽자면, 이러한 불합리한 마크업 문법을 꼽을 수 있을 정도다. ## 기능 도쿠위키의 주요 기능에 대한 정리. ### 백업 최소한 다음 디렉토리를 백업하면 도쿠위키의 전체 컨텐츠를 복원할 수 있다. 나머지는 코어 파일을 그대로 사용하면 된다. 단 코어 파일을 고쳤다면 해당 파일도 백엄해야 한다. - data/pages: 최신 버전의 페이지 - data/attic: 페이지의 과거 리비전 - data/meta: 페이지 메타데이터 - data/media: 최신 버전의 미디어 - data/media_attic: 미디어의 과거 리비전 - data/media_meta: 미디어 메타데이터 - conf: 설정 - lib: 플러그인과 템플릿 ## 플러그인 ### Data [링크](https://www.dokuwiki.org/plugin:data) 위키 페이지에 구조화된 데이터를 추가하고, 이를 쿼리할 수 있도록 한다. #### 기본 타입 Data 플러그인은 이름에 (밑줄과 함께) 붙은 접미사로 타입을 구분한다. 충분히 타입을 유추하는 것이 가능할 것이나, 무결성을 확보하기 위한 결정일 것이다. - `text`: 접미사가 없으면 기본적으로 텍스트로 인식한다. - `dt`: YYYY-MM-DD 형식의 날짜를 입력받는다. - `page`: 페이지명을 입력받는다. 절대경로만 인식하므로 주의해야 한다. - `title`: 페이지명에 더해, 파이프 기호와 함께 표시하고자 하는 제목을 함께 입력받을 수 있다. - `nspage` - `url` - `tag` - `mail` - `img`: 내부 id 또는 외부 url을 통해 이미지를 입력받는다. ``은 이미지의 너비를 뜻하며, 기본값은 40이다. - `wiki`: 위키텍스트를 입력받는다. 성능 저하의 가능성이 있으므로 남용하지 않는 것이 좋다. - `pageid` - `hidden`: 페이지나 편집기(하술)에 표시하지 않는 값. 한 항목에 여러 값을 받고 싶다면 (타입 식별자를 포함한) 맨뒤에 s를 붙이면 된다. 단 s로 끝나는 이름의 경우, 밑줄을 붙여서 혼동을 피해야 한다. #### 사용자 타입 사용자 타입(type aliases)은 기본 타입을 기반으로 새로운 타입을 생성하는 기능이다. 관리 메뉴의 ‘필드 별칭‘ 항목을 통해 정의할 수 있으며, 기본 타입에 대입할 때 앞뒤에 추가할 접두사/접미사. 유효한 값의 목록 등을 정의할 수 있다. ### Strata - [링크](https://www.dokuwiki.org/plugin:strata) - 원 제작자의 컨퍼런스 [논문](https://opensym.org/os2014/proceedings-files/p807.pdf) Data 플러그인이 하나의 페이지에 하나의 데이터 엔트리만을 삽입할 수 있다는 한계를 극복하기 위해 만들어진 플러그인. [[wiki:sqlite]] 외에 [[wiki:mysql]], [[wiki:postgresql]] 등의 데이터베이스 엔진을 선택할 수 있으며, [[wiki:sparql|SPARQL]] 형태의 쿼리를 요청할 수 있다. ## Tips - DokuWiki는 업그레이드시 기본 페이지를 함께 덮어씌우므로, 해당 페이지를 수정했을 경우 유의해야 한다.