WIKI

SEOUL_still under construction‍
wiki:sw:dokuwiki

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
wiki:sw:dokuwiki [2023/06/14 16:19] – 제거됨 - 바깥 편집 (Unknown date) 127.0.0.1wiki:sw:dokuwiki [2024/11/16 13:01] (현재) – add strata clockoon
줄 1: 줄 1:
 +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<num>`: 내부 id 또는 외부 url을 통해 이미지를 입력받는다. `<num>`은 이미지의 너비를 뜻하며, 기본값은 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는 업그레이드시 기본 페이지를 함께 덮어씌우므로, 해당 페이지를 수정했을 경우 유의해야 한다.
 +
 +
 +---- struct data ----
 +pageinfo.status      : Draft
 +----