E D R S S I H C RSS RSS
ID
Password
Join
Deprive a mirror of its silver and even the Czar won't see his face.

WikiWikiWebHelpOnFormattingTestFoafWikiEngineWikiWyg VisualTour

http://moniwiki.kldp.org/_cache/visualtour/b7/b749920c308f24b88ee9ed9cdf99528c.png

Installation

  • Graphviz를 설치해야 합니다.
  • http://www.research.att.com/sw/tools/graphviz/download.html
  • 글꼴을 설치해야 합니다. WEBDOTFONT.ttf라는 이름으로 data디렉토리 밑에 넣어주세요.
    • /!\ graphviz 2.2 이상을 설치했을 경우는 MoniWiki 1.1.2 이상으로 업그레이드 후 config.php에서 $dot_fontname을 세팅해주어야 합니다. graphviz 2.2 이상의 경우는 글꼴 이름 자체와는 상관이 없이 글꼴의 내장된 이름을 지정해야 하며, 예를 들어 은진체의 경우는 Eunjin으로 하시면 됩니다.
(!) Graphviz가 설치되지 않은 경우가 많을 것이므로, graphviz 설치 문서를 정리한다.

설치 확인

한글이 제대로 나오지 않는다면 다음과 같은 방법으로 확인을 해봅니다

  1. dot 파일을 받는다: wget "http://my_url/.../wiki.php?action=dot"
  2. 받은 dot 파일을 my.dot으로 이름 바꿈
  3. $ GDFONTPATH=./data dot -Tpng my.dot > my.png
  4. 이때 문제가 있으면 화면에 에러가 나온다.

문제의 예

Could not find/open font : WEBDOTFONT in ./data
/!\ 글꼴이 없습니다.

Segmentation fault
/!\ 실행파일에 무언가 문제가 있습니다.

Q & A

Q: VisualTour 에서 클릭 하면 제대로 링크로 가지 않습니다. webdot 깔아야 하나요?
A#1: 아파치 웹서버의 mod_imap을 활성화 시켜주세요. (일반적 리눅스 배포판은 이게 활성화 되어 있습니다)
 # 
# If you wish to use server-parsed imagemap files, use 
# 
AddHandler imap-file map 
A#2: 해보진 않았는데, VisualTour.php에서 -Timap이라는 부분을 -Tcmap으로 고치면 어떨지 모르겠군요. A#3: -Tcmap은 man dot에 의하면 낡은 방식이고 cmapx로 예시가 나와 있습니다. 아마 xhtml을 지원하도록 확장된 형식인 것 같습니다. 실제로 적용하려면 VisualTour.php에서 map 파일로 링크 거는 걸 지우고 그 앞에 file_get_contents(mapfile)로 지도를 출력한 다음 img 태그에 usemap='#G' 속성을 주면 됩니다.

인코딩 문제가 생기는데, 그림에 나오는 페이지 이름은 UTF-8여야 하지만 지도의 title에는 위키의 인코딩이 들어가야 합니다. dot 파일의 label 값이 되겠군요. dot 파일 자체는 UTF-8여야 하니까, map을 고쳐야겠네요. URL은 이미 인코딩이 끝나서 한글로 남아 있는 건 title 부분 뿐입니다 다행히. 그래서 그냥 iconv로 $DBInfo->charset로 바꿔주면 됩니다. 저는 일단 file_get_contents() 결과를 받아서 iconv를 매번 하도록 했는데 조금 더 부하를 줄이려면 map 파일 자체를 iconv해서 다시 써버리는 게 좋겠습니다.

dot파일은 config.php의 charset과 관계 없이 항상 UTF-8로 iconv에 의해 변환됩니다. 링크는 항상 urlencoding을 쓰므로 iconv()에 의해 변환되지 않습니다. 그리고 최근에는 macro_dot()을 추가해서 do_dot()을 호출할 필요가 없어졌습니다. (dot 파일은 언제나 UTF-8이라서 file_get_contents() 한 후에 iconv를 하지 않아도 됩니다. 뭔가 오래된 dot.php를 가지고 계신듯.) --WkPark

Q: Cafe24에서 Graphviz를 어떻게 설치해야하는 지 혹시 아세요?
  • 저도 Cafe24 사용하는데요. Graphviz를 다운받으려고 하니 리눅스는 rpm 패키지로 되어있네요. rpm명령은 실행 퍼미션이 없습니다. rpm없이 설치하는 법은 없을까요?

A: dot 실행파일만 있으면 됩니다. rpm2cpio my.rpm | cpio -id 하면 rpm이 풀어지며, 여기서 dot 실행파일을 따로 복사하세요. 단, 배포판에 맞게 컴파일 된 rpm이어야 하겠고, dot을 실행해서 문제가 없어야 하겠죠.


Q: 역링크에 대한 VisualTour(가 정확히 어떤 형태일지는 모르겠는데)도 될런지요? 또, SisterWiki까지 나오는 것도 무리가 없을까요 ?

A: do_dot()은 현재의 위키페이지만 그리게 하고, do_meta_dot()같은 것을 만들어서 SisterWiki도 모두 포함하게 tree를 구성하게 하면 되겠지요. 어쨌거나, tree를 어떻게 하면 멋지게 구성해 내는가가 관건입니다. Please see MoniWikiDev:VisualTour

Q2: 역링크는 Cache_text에서 backlinks를 택하면 되겠고, SisterWiki도 metadb를 통해 가져올 수 있다는 것까진 확인했습니다. 그런데 로컬에 없고 자매만 있는 링크는 캐싱 대상에 들어가지 않더군요. 가령 BrokenLink 라는 링크를 걸었다고 치고, 이게 로컬에 없으면, Cache_text는 pagelinks 내용에 저 이름을 넣지 않고, 따라서 dot 파일에 저 페이지는 등장하지 않습니다. 당연히 VisualTour에도 안 나오게 되죠. 제 경우 로컬에 없어도 시스터로 나가는 페이지도 아주 많기 때문에 저게 구현되면 좋겠습니다. [http] 이 페이지에서 두 개만 나오는 게 아니라 자매만 있는 두 개가 더 나오면 됩니다.

지금 당장에라도 구현할 수 있는 가장 값싼 구현 방식으로는:
  • 없는 페이지중에 sisterwiki에 있는 페이지는 pagelinks에 포함 시킨다.
    • sisterwiki가 활성화되어있는 경우라면 자동으로 이 기능을 켠다 ?
  • pagelinks를 기반으로 트리를 구성할 때에 그 페이지가 없다면 그 페이지는 바로 sisterwiki에 있는 페이지이다. (없는 페이지 노드에 대해서는 다른 색깔을 사용하면 그 페이지가 sisterwiki에 있다는 것이 드러날 것임)
  • VisualTour액션의 경우는 sisterwiki 노드일 경우, 그 페이지로 직접 가도록 함.

조금 복잡한 방법으로는:
  • 역시 없는 페이지중에 sisterwiki에 있는 페이지를 pagelinks에 포함시킴
  • 트리를 구성할 때에, 그 페이지가 없다면 sisterwiki의 링크 목록을 가져와서 외부로 직접가는 시스터위키 링크를 트리로 만듦.

  • 자매가 있는지 검사하고 안 하고의 차이군요. $DBInfo->metadb->getTwinPages($pagename)으로 판단하게 되는 거겠죠? 그림에서 그냥 빈 페이지인지 자매가 있는 페이지인지 구분하는 게 좋을 거 같아서 검사하는 쪽이 땡깁니다. 실제로 위키 페이지를 볼 때도 자매가 있는 것과 아예 없는 페이지는 다르니까요. 게다가 전 easyalias던가를 켜놔서 자매가 하나일 때는 바로 링크가 그쪽으로 걸립니다.



    이거 어떤가요? 저기의 점이 하나의 링크가 되고, 각 점에는 동적으로 점이 더 붙거나 떨어지거나 할 수도 있게 하면, 고정된 페이지나 이미지 없이 visual tour를 할 수 있을 것 같은데 말이죠. 지금 고정 이미지 기반의 맵도 좋지만 일상적인 네비게이션에 쓰기에는 좀 마땅치가 않아 다른 뭔가를 찾고 있습니다. --TwinPages:kz
    비슷한 형태의 자바 애플릿을 찾아보면 몇몇 되지만 쓸만한 수준은 아니였습니다. 요새는 어떨지 모르겠군요 --WkPark

     
    captcha
    Username:
    ^
    Valid XHTML 1.0! Valid CSS! powered by MoniWiki
    last modified 2009-01-07 02:22:57
    Processing time 0.1239 sec