WIKI

SEOUL‍
wiki:sw:dokuwiki

차이

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

차이 보기로 링크

양쪽 이전 판이전 판
wiki:sw:dokuwiki [2024/11/16 13:01] – add strata clockoonwiki:sw:dokuwiki [2025/01/30 17:36] (현재) – merge from obsidian clockoon
줄 3: 줄 3:
  
 ## 개요 ## 개요
-도쿠위키는 현존하는 (소형) [[tech:wikiengine|위키 엔진]] 중 가장 범용적이고 간편한 솔루션이다. [[language:php|PHP]]를 사용하기 때문에 배포가 쉬우며, 그렇지만 모던 PHP에 종속되지 않기 때문에 일반적인 호스팅 환경에서도 잘 작동하고, 파일 기반이기 때문에 저사양에서도 잘 작동한다. 코어 엔진은 극히 최소한의 기능만 담고 있으며 추가적인 기능은 extension으로 구현하도록 되어 있다. 즉 도쿠위키는 다른 위키엔진보다도 더 유연하고 개인화되어있다. 사실상 ‘개인 위키’란 컨셉에 가장 잘 들어맞는 소프트웨어는, 지금까지도 도쿠위키다. 그러나, 아래 마크업 단락에서 다루듯 도쿠위키가 가진 단점 또한 선명하다.+[[wiki:sw:php|PHP]]로 만들어진 [[wiki:sw:wikiengine|위키엔진]] 소프트웨어. 
 + 
 +도쿠위키는 현존하는 (소형) 위키엔진 중 가장 범용적이고 간편한 솔루션이다. PHP를 사용하기 때문에 배포가 쉬우며, 그렇지만 모던 PHP에 종속되지 않기 때문에 일반적인 호스팅 환경에서도 잘 작동하고, 파일 기반이기 때문에 저사양에서도 잘 작동한다. 코어 엔진은 극히 최소한의 기능만 담고 있으며 추가적인 기능은 extension으로 구현하도록 되어 있다. 즉 도쿠위키는 다른 위키엔진보다도 더 유연하고 개인화되어있다. 사실상 ‘개인 위키’란 컨셉에 가장 잘 들어맞는 소프트웨어는, 지금까지도 도쿠위키다. 그러나, 아래 마크업 단락에서 다루듯 도쿠위키가 가진 단점 또한 선명하다.
  
 ## 마크업 ## 마크업
-도쿠위키는 여타의 다른 [[:markup|마크업 언어]]와는 전혀 다른, 상당히 괴상한 문법을 하고 있다. 가장 거슬리는 것은 h1에서 아내로 내려가면서 등호의 개수가 줄어드는 것이다. 단순히 ‘가장 상위의 단락 기호는 가장 눈에 잘 띄여야 한다’라는 생각으로밖에 읽히지 않는, 쓰레기같은 문법이다. 의미론적이고 기능적인 차원에서 헤딩은 하위로 갈 수록(즉 깊어질 수록) 더 많은 수의 기호로 정의되어야 하는 것이 맞다. [[:markdown]]이나 [[:asciidoc]] 등 수많은 다른 마크업들이 괜히 반대로 규정하는 것이 아니다. 도쿠위키의 단 하나의 단점을 꼽자면, 이러한 불합리한 마크업 문법을 꼽을 수 있을 정도다.+도쿠위키는 여타의 다른 [[wiki:markup|마크업 언어]]와는 전혀 다른, 상당히 괴상한 문법을 하고 있다. 가장 거슬리는 것은 h1에서 아내로 내려가면서 등호의 개수가 줄어드는 것이다. 단순히 ‘가장 상위의 단락 기호는 가장 눈에 잘 띄여야 한다’라는 생각으로밖에 읽히지 않는, 쓰레기같은 문법이다. 의미론적이고 기능적인 차원에서 헤딩은 하위로 갈 수록(즉 깊어질 수록) 더 많은 수의 기호로 정의되어야 하는 것이 맞다. [[wiki:markdown]]이나 [[wiki:asciidoc]] 등 수많은 다른 마크업들이 괜히 반대로 규정하는 것이 아니다. 도쿠위키의 단 하나의 단점을 꼽자면, 이러한 불합리한 마크업 문법을 꼽을 수 있을 정도다. 
 + 
 +## 특징 
 +도쿠위키가 (특히 다른 위키엔진과) 차별되는 점에 대한 정리.  
 + 
 +### 하이퍼링크 
 +도쿠위키는 wikilink를 상대적으로 취급한다. 예컨대 `[[pagename]]`은 같은 폴더/namespace에 있는 pagename이란 페이지로 이동시킨다. 혹은 다른 namespace로 연결하기 위해, 최상위부터 `[[namespace:pagename]]`이란 문법을 사용해도 된다. 
 + 
 +### Pagename 
 +도쿠위키는 문서의 제목(title)과 페이지의 이름(pagename/filename)을 구분한다. 페이지이름은 실제 url에 표시되는 이름이다. 이는 도쿠위키의 장점이 될 수도 있지만, 단점이 될 수도 있다. 후자의 경우 특히 링크를 걸 때 두드러지는데, [[wiki/mediawiki|미디어위키]]처럼 표제어로 직접 링크를 거는 것이 어려우며, 페이지이름으로 걸어야 한다. 따라서 표제어와 페이지이름간의 연관성을 고려해야 한다. 
 + 
 +페이지이름은 (아마도 url을 상정하여) 다음 규칙을 갖는다. 
 + 
 +- 대소문자는 구분하지 않는다. 
 +- 특수문자는, 마침표와 하이픈, 밑줄기호만을 허용한다. 나머지는 밑줄로 변환된다.  
 +- 콜론은 네임스페이스를 구분하기 위해 예약되어 있다.  
 +- 슬래시는 url의 구분자로 예약되어 있다.  
 +- 알파벳 외의 다른 (특수문자가 아닌) 문자는 허용된다.  
 + 
 +## 이름 
 +이름의 Doku는 독일어 Dokumentation에서 온 것이다. 주 개발자인 Andreas Gohr는 독일 출신이다. 참고: [docuwiki [DokuWiki]](https://www.dokuwiki.org/docuwiki)
  
 ## 기능 ## 기능
줄 22: 줄 44:
 - conf: 설정 - conf: 설정
 - lib: 플러그인과 템플릿 - lib: 플러그인과 템플릿
 +
 +### ACL
 +도쿠위키는 ACL 규칙을 통해 특정 사용자/그룹이 특정 페이지/네임스페이스에 접근하지 못하도록 한다. 이 외에 다른 페이지 필터링 규칙은 없다. 예를 들어 특정 태그를 가진 페이지를 모두 접근하지 못하도록 하는 방법은 없다. 각 페이지별로 따로 규칙을 설정해주는 방법 정도다.
 +### remote
 +참고: [devel:xmlrpc [DokuWiki]](https://www.dokuwiki.org/devel:xmlrpc)
 +
 +Dokuwiki는 XML-RFC를 통한 원격 접근을 지원하며, 플러그인을 사용하면 필요한 기능을 추가로 구현할 수도 있다. 
 +
 +#### 지원하는 (주요) 기능
 +너무 지엽적이거나 일반적으로 불필요한 함수는 생략. 
 +- dokuwiki.getPagelist: 주어진 네임스페이스의 페이지 목록을 출력
 +- dokuwiki.appendPage: 주어진 페이지에 입력한 텍스트를 덧붙임
 +- dokuwiki.setLocks: 주어진 페이지의 잠금 상태를 변경. 여러 페이지를 동시에 작업할 때 충돌이 일어나지 않게 하는 목적. 
 +- dokuwiki.login: 도쿠위키에 로그인.
 +- dokuwiki.search: 입력한 문자열을 기준으로 검색 결과를 dokuwiki.getPagelist 형식으로 반환.
 +- wiki.getPage: 주어진 페이지의 본문 텍스트를 출력. 
 +- wiki.getPageVersion: 주어진 페이지의 특정 타임스탬프의 리비전 내용을 반환.
 +- wiki.getPageVersions: 주어진 페이지의 리비전 목록을 반환.
 +- wiki.getPageInfo: 주어진 페이지의 정보를 반환. 정보에는 페이지명(이는 재귀적이다), 최종 수정 시간, 저자, 버전(타임스탬프)이 포함된다.
 +- wiki.getPageInfoVersion: 주어진 페이지와 타임스탬프의 버전 정보를 반환.
 +- wiki.putPage: 주어진 페이지에 입력한 위키텍스트를 입력함. 요약과 마이너 리비전 여부도 함께 선택할 수 있다.
 +- wiki.getAllPages: 위키 내의 모든 페이지 목록과 그 정보를 반환. 정보에는 id, 권한, 크기, 버전(타임스탬프)이 포함된다.
 +- wiki.getBackLinks: 주어진 페이지의 백링크를 목록으로 반환한다.
 +- wiki.getRecentChanges: 주어진 타임스탬프 이후 위키 내 페이지의 변경 내역을 반환한다. 각 항목은 id, 최종 수정 시간, 저자, 버전(타임스탬프)을 포함한다.
 +- wiki.getRecentMediaChanges: 주어진 타임스탬프 이후 위키 내 미디어의 변경 내역을 반환한다. 각 항목은 id, 최종 수정 시간, 저자, 버전(타임스탬프), 권한, 크기를 포함한다.
 +- wiki.getAttachments: 주어진 네임스페이스 내의 미디어 목록 및 그 정보를 반환한다. 정보에는 id, 파일명, 크기, 업로드 시간(타임스탬프), 최종 수정 시간, 이미지 여부, 수정 가능 여부, 권한이 포함된다.
 +- wiki.getAttachment: 입력한 id의 미디어를 바이너리 형태로 반환한다.
 +- wiki.getAttachmentInfo: 입력한 id의 미디어 정보를 반환한다. 정보에는 크기와 최종 수정 시간이 포함된다.
 +- wiki.putAttachment: 입력한 id의 미디어에 입력한 바이너리 데이터를 저장한다.
 +- wiki.deleteAttachment: 입력한 id의 미디어를 제거한다. 페이지의 경우 특별히 삭제 동작이 없고, 페이지 내용을 지우면 된다.
 +- plugin.acl.listAcls: ACL 규칙 목록을 반환한다.
 +- plugin.acl.addAcl: ACL 규칙을 추가한다.
 +- plugin.acl.delAcl: ACL 규칙을 제거한다.
  
 ## 플러그인 ## 플러그인
줄 59: 줄 114:
 - DokuWiki는 업그레이드시 기본 페이지를 함께 덮어씌우므로, 해당 페이지를 수정했을 경우 유의해야 한다. - DokuWiki는 업그레이드시 기본 페이지를 함께 덮어씌우므로, 해당 페이지를 수정했을 경우 유의해야 한다.
  
 +## 링크
  
 +### 외부 링크
 +- [Official site](https://www.dokuwiki.org/dokuwiki)
 +- [GitHub 저장소](https://github.com/dokuwiki/dokuwiki)
 ---- struct data ---- ---- struct data ----
 pageinfo.status      : Draft pageinfo.status      : Draft
 ---- ----
  
wiki/sw/dokuwiki.txt · 마지막으로 수정됨: 2025/01/30 17:36 저자 clockoon