Wikki Tikki Tavi

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS
위키엔진의 하나


소스를 다운로드 한 후에 install 디렉토리 안에 있는 db생성 파일과 컨피그 설정 파일을 실행하면 설치는 끝난다

이후 RecentChangesInterWiki, SisterWiki 등 기본적인 파일을 설명해둔 대로 손수 만들어주면 잘 된다.

MeatBall:AndStuff에서 쓰이는 위키엔진이며, PhpLanguage로 만든 위키엔진으로 깔끔하고 단순하고 빠르다.

config.php 파일에서 $Charset = "EUC-KR";을 추가시켜줘도..메뉴들이 전혀 한글화가 되지 않는데.. 바뀐글 역시..어떻게 설정하는지 모르겠고..-_-; 그외엔 설치에 어려운 점은 없는거 같다. --zihado

프로그래밍 연습도 하고, 홈페이지에도 달기 위해 위키엔진을 제작하다가 귀차니즘으로 중단하고, 간단하고 깔끔한 위키엔진을 찾다가 이것을 쓰기로 했다.
설치는 Perl이 깔려 있으면 쉽다. DB와 PHP를 좀 알면 별로 어렵지 않게 수정도 가능하다. (템플릿에 PHP코드가 들어가므로, 디자인 등을 변경하려면 약간의 수고가 필요하다)

그런데, 영어문자권이 아니면 사용할 수가 없는 것 같다. 공백으로 구분되는, 대문자로 시작하며 중간에 대문자가 다시 나오는 단어를 WikiName 으로 인식하는데, 이러한 방식은 영어권 언어에서는 유용하게 적용될 수 있는 방법이다(평문에서는 이런 단어를 쓸 이유가 없으며, 모든 단어들이 공백으로 분명히 구분되기 때문에). 그러나 한글은 대소문자가 존재하지 않고 명사와 조사가 붙어 있기 때문에, 모든 단어가 공백으로 구분되는 영어에서 가능한 방식을 사용할 수 없다.
개발 홈페이지에 보면 Multi-language를 지원한다고 씌여 있지만, 그러한 이유로 한글을 사용할 수 없으며, 아마 다른 2바이트 문자권도 마찬가지일 것이다.
구체적으로 다음과 같은 문제가 있다.

1) 한글 WikiName 을 사용할 수 없다.
2) 한글중 원하지 않았던 단어가 WikiName 으로 인식된다. preg() 함수로 검색하는 WikiName 검색 루틴에 걸리는 한글(1byte로 간주하고 검색했을 때 우연히 위에 쓴 조건에 부합하는 것)을 WikiName으로 검색해, 강제로 이상한 곳에 링크를 만들어 버린다.
3) 이중괄호를 사용하는 WikkiTikkiTavi 고유의 WikiName 강제지정 방식도 한글에서는 작동하지 않는다. (이중괄호로 묶인 단어도 WikiName 검색 조건에 맞지 않으면 무시한다)

한글이나 일본어처럼 명사와 조사가 붙어 있는 문법을 가진 언어를 위키에서 사용하려면, 모든 WikiName을 괄호 등으로 표시하는 방법, 또는 Database에 그 페이지에 존재하는 WikiName들을 저장해 두는 방법 두 가지밖에 없다. 이에 맞게 프로그램을 수정하지 않으면 한글을 사용할 수 없다. 노스모크에서는 이를 해결한 듯이 보이는데, 방법을 알거나 작업하신 분 계시면 결과물을 공개해 주시면 감사하겠습니다 :) --blueisle78

한글을 사용하게 하려면 몇가지를 수정해 주어야 합니다. 여기 [http]tavi 한글 패치에 대한 내용입니다.
감사합니다. 내용을 올립니다.

 1) config.php에서 $Charset="EUC-KR"; 를 추가
 2) lib/defeaults.php 에서 $UpperPth,Lowwerpth,alphaptn에서 "[A-Z]뒤에 붙은 것을 삭제
  $UpperPtn = "[A-Z]";
  $LowerPtn = "[a-z]";
  $AlphaPtn = "[A-Za-z]";
 3) parse/transform.php 에서 84줄과 88줄의 \xc0을 \xa0 로 수정


위의 내용의 도움으로 한글사용을 얼추 하긴 했는데, 제 인스톨본에는 1)과 2)만 있고 3)에 해당하는 항목은 찾을 수 없더군요. WikkiTikkiTavi 0.26 버전으로 했습니다. -- infini


"; if (isset($options[timer])) print $menu.$banner."
".$options[timer]->Write()."
"; else print $menu.$banner."
".$timer; ?> # # ?>