Open Wiki

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

1. OpenWiki 소개

Openwiki : UseModWikiMoinMoin의 장점을 고려한 asp 위키

2. 장점

  • UseModWiki + MoinMoin 의 기능
  • 풍부한 매크로 기능
  • 텍스트포멧이 풍부
  • 편집하기를 원하는 페이지의 아무 곳이나 더블클릭하면 곧 바로 편집화면으로 바뀜
  • 에티트환경에서 도움기능 아주 편함(도움POPUP 창을 띄울 수 있음)

3. 연구개선점

  • 한글페이지 생성 문제 <<==루크님이 도와주시면 금방 해결될 것 같은데
    한글페이지는 아래 수정한 곳을 적용시키면 [[ 으로(링크를 두번 표시해주는것으로) 링크 되고 페이지 생성됩니다. 그외 asp 에 익숙하시다면 몇가지 더 수정하실 수 있습니다.
  • 일반 웹호스팅에서 설치문제
    웹 호스팅은 좀 힘들겠지만 win2000 에서 쓰면 비교적 쉽게 사용할 수 있습니다.

4. 수정한 곳

  1. 한글출력이 되도록 함 (owconfig.asp 13번째줄 수정 "euc-kr" )
  2. 272번째줄 'gFS = Chr(179) ==> Chr(127) (owpreamble.asp파일인듯: --노보 2004.3.6 )
  3. owpatterns.asp 97 Line
     vAnyLetter =  "[-,.()'# _0-9A-Za-z"&chr(127)&"-"&chr(255)&"]"
    
  4. owinc.xsl 15 Line
     retuen (pData);
    
  5. owwikify.asp 520 Line
    Function URLDecode(pURL)
        Dim vPos
        Dim result
        Dim tempHex
        Dim i
        
        pURL = Replace(pURL, "+", " ")
        for i = 1 to len(pURL)
          If Mid(pURL, i, 1) = "%" Then
    	If LCase(Mid(pURL, i + 1, 1)) = "u" Then
    	  result = result & Chr(CLng("&H" & Mid(pURL, i + 2, 4)))
    	   i = i + 5
        	Else
    	  tempHex = CLng("&H" & Mid(pURL, i + 1, 2))
    	  If tempHex > 127 Then
    	     result = result & Chr(Clng("&H" & Mid(pURL, i + 1, 2)) * &H100 + clng("&H" & Mid(pURL, i + 4, 2)))
    	     i = i + 5
    	  Else
    	    result = result & Chr(CLng("&H" & Mid(pURL, i + 1, 2)))
    	    i = i + 2
    	  End If
    	End If
           Else
    	result = result & Mid(pURL, i, 1)
           End If
           next
    	    
           URLDecode = result
    End Function
    
    저는 현재 openwiki_078sp1.exe 를 받아서 1,3,4,5 만 적용시킨 상태로 사용하고 있습니다.

5. 환경설정 사항

  • 8가지 항목을 설정할 수 있다. (인터페이스에 관련된 것)
    Bookmarks:
    Edit form columns: rows:
    Show pretty wiki links
    Show bookmarks on top
    Show edit link on top
    Show trail on top
    Open external links in new window
    Show emoticons in text (goto HelpOnEmoticons)

6. 토론

너무 멋지고 깜직하네요.. ^^ 말씀하신 대로 유즈모드하고 모인모인의 장점을 잘 결합한 것 같아요. 참나무님. 부디 애써주셔서 오픈위키가 제 빛을 발할 날이 오길.. 배포본이랑.. 이것 저것 소식 있으면 알려주세요. 잘 되었으면 좋겠당.. ^^ --이카

음..서버의 환경이 윈도우라서 일반 유저들이 사용하기에는 쉽지 않을듯 하군요. 보통 윈도우즈 환경의 서버는 가격이 비싸지요~
리눅스에서도 보통 일반 웹호스팅 업체에서 말하는 MY SQL이 지원되면 설치할 수 있는 것 아닌가요?
현재 OpenWiki엔진이 ASP코드로 되어있는데..리눅스에서 ASP를 어떻게 지원할지를 잘 모르겠네요.또, 지원 한다고 해도, 일반 유저들이 서버 관리자에게 요청하기는 쉽지 않은 상황인듯해서요..^^;
MY SQL 서비스를 받을 수 있는 x-y.net에서도 'ASP, JSP등의 프로그램은 지원이 불가능합니다. 저희에게 서비스를 받으실수 없습니다.'라고 하는군요. asp를 돌릴 수 있는 일반 웹호스팅업체를 쉽게 찾을 수 없을 듯..

diff가 매우 인상적이다~ DB를 사용하므로 안정적이고 빠른 속도를 낼수 있을듯하네요...일반 유저들이 설치하기는 힘들겠지만 위키의 특성상 중복된 데이타들이 많으므로 cvs와 같은 버전관리시스템을 사용하게 구현해보는 것두 매력적일듯하군요. 위키클론이 많으니깐 정말 재미있당...
IIS 가 설치되어 있고 80 포트로 사이트가 열려 있다면 더블클릭으로 모든 설치 끝입니다.(ms 에서 제공하는 xml 파서도 있어야 하고, abcupload 컴포넌트도 설치가되어 있어야 하고..vbscript 5.5 이상이 설치되어 있어야 하지만...설치후 브라우져로 실행시 에러메시지로 필요한 것들을 알려 줍니다.)
  • 데이타베이스 설계(테이블)를 뜯어 보니까 중복을 피하게 설계 되었더군요. 페이지 이름이 기본키로 되어 있어서 같은 이름의 페이지가 중복될 수는 없겠네요. 그리고 페이지를 고칠 때 마다 페이지 이름과 고친 횟수가 기본키로 설정되게 설계했네요. 같은 페이지를 2,147,483,647 회수나 고칠 수 있구 그 변화의 차이를 관리할 수 있도록 설계가 되었네요. 이들은 각기 다른 테이블로 설계되어 기본키로 조인되어 관계형 데이타베이스의 장점을 최대한 고려하야 설계한 듯 합니다. --oaks

    • 음..얼핏알기론(틀릴수도 있습니당~) cvs와 같은 버젼 관리 시스템은 변경된 부분에대한 정보만을 가지고 버젼관리를 하는걸루 알고 있습니다. 물론 그 실제 구현이 어떨지는 CVS소스를 보지않아서 확신을 못합니다만, 변경된 부분만 관리를 한다면, RDB로 관리할때 드는 중복 DATA들(변경되지 않은 부분도 같이 관리되므로..) 보다는 그 사용된 용량면에서 이득이 있을듯해서 적어본 글이였습니다. -- 라이온


    • OpenWiki에서 변화의 차이만을 관리한다고하니, 빠른속도,(적은)용량,안정성의 3박자를 갖춘듯이 보이는군요. --라이온 ^^
    • 라이온님의 말씀이 맞는다고 생각되네요. 제가 사용한 표현(변화의 차이)이 정확한 표현이 아니군요. OpenWiki는 5개의 테이블로 구성되어 있네요. 가장 핵심적인 개별 페이지를 기록하는 테이블은 두 개로 구성되어 있습니다. 하나의 테이블에는 페이지이름과 수정된 사항이 기록되고요. 또 다른 테이블에는 페이지에 관한 모든 사항이 기록되는 것이네요. 핵심적인 두개의 테이블 (1. openwiki_revisons 2. openwiki_pages )를 엑세스로 연결해서 보니까 페이지가 수정된 것이 모두 남습니다. 수정된 부분만 기록하는 것이 아니라 모든 것을 기록하네요. 두 테이블이 RDB개념으로 조인되어 있네요. 기존의 MoinMoin 이나 UseModwiki 와의 근본적인 구조적 차이점이 아닌가 생각되네요 --oaks

      • 세세한 테스트에 감격합니다. 에구..라이온두 CVS 소스를 뒤져봐야하는데...SCCS라는 버젼 관리시스템은 바뀐부분만의 관리를 변화된 정보와 태그를(데이타를보고 유추한것임)가지고 하더군요. 아마도 CVS도 이와 유사하리라 생각하며... -- 게으른 라이온

한글코드값 범위가 어떻게 되는지요?(제가 컴언어에는 문맹이라서) 저는 vAnyLetter = "[-,.()' _0-9A-Za-z\xa0-\xff]" 이렇게 수정해 보았는데 한글페이지만들기가 안되는군요 -- oaks

     If cFreeLinks Then
        ' Note: the - character must be first in vAnyLetter definition
         vAnyLetter = "[-,.()' _0-9A-Za-z\xa0-\xff]"
     End If
으로 한번더 테스트 해보시고...^^;; -라이온

라이온님 고맙습니다. 님께서 가르쳐 주신대로 수정해 보았는데...한글페이지가 생성이 안되네요. 참, 272번째줄 >> gFS = Chr(179) ' The FS character is a superscript "3" << 이것은 상관이 없나요? -- oaks
  • gFS = "\x7f"; 로 고쳐서 한번더 테스트해보세요. UseModWiki에서는 한글관련해서 크게 두가지를 고친걸루 아는데, ASP코드에서는 vAnyLetter와 gFS에 해당됩니다. ^^;;; -- 덜렁이 라이온

    • gFS = "\x7f" 이렇게 하면 이상하게 부분적으로 글자가 대체 되어서 나오네요. 그것을 gFS = "0x7f"이렇게 수정하니까 글자는 바로 나오는데요. 한글페이지는 생성이 안되네요. 참고로 라이온이 권하신 방법은 어제 제가 UseModKr 소스를 보고 바뀐 부분(두 곳)을 적용해 보았습니다. 아,,,무엇이 문제인지 정말 모르겠네요. -- oaks

이런.. 예전에 유즈모드 발견하고 한글페이지이름이 안되서 막막했던 때랑 비슷하군요.. 저는 유즈모드를 실제로 쓰고 있었던 루크님을 어쩌다 알게 되어 루크님 소스 받는 것으로 해결됐지만.. 역시 프로그래머가 봐줘야해요.. 어디 오픈위키 실제로 쓰고 계신 분 안계시나..
  • 최근에 나온 것이라서 (12-11,2001) 아직 알려지지 않았는가 보네요. 그리고 대부분 유닉스 환경에서 위키를 사용하니까 아마 NT계열은 배제된 것이 아닌가 생각되네요. -- oaks

에구..테스트환경만 되면 OpenWiki를 좀더 파볼텐데.. 소스를 대충 봐서는 그 로직이 UseModWiki와 크게 다른것 같지는 않은데..한글페이지 생성이 안된다고하니 안타깝네요. 참, OpenWiki의 DB모듈부분이 모인모인의 DB화에 도움이 될듯하네요. 모인모인의 속도향상을 위해서는 반드시 가야할길..그러나, 노스모크의 경우에는 기존 데이타의 백업및 변환작업등이 있어서 작업이 단순하지는 않겠군요. -- 라이온
  • 노스모크도 빨리 결단해야될 것 같네요. 개인적인 생각으로는 결단이 빠를수록 후회가 적지 않을까요. 위키를 안지 3주 정도 되었나...위키 클론들을 대충 이것저것 검토해 보았는데 제 생각에는 db로 설계되고 xml 이나 html이 지원되는 것이 우리 환경에 대중성이 있지 않을까요. -- oaks
  • 라이온님, 전용 테스트 계정을 제 컴에 만들어 놓았습니다. -- oaks
    • 테스트환경 만들어주셔서 감사합니다.
      • \xa0 = Chr(160) , \xff=Chr(255)로 처리했는데 한글페이지 링크가 안되는군요..일단 Chr(127)-Chr(255)까지 한글문자영역으로 가정했습니다.
  • {{|

 vAnyLetter = "[-,.()' _0-9A-Za-z" & Chr(127) & "-" & Chr(255) & "]" 
|}}
  • 문제점 : 한글페이지 저장시에 URLDecode 루틴에서 타입에러가 나는데, 아마도 이부분(URLEncoding/Decoding)이 UseModWiki와 다른 부분인듯 하군요. -- 오늘 여기까지 라이온
    • 참고사항:
{{|

Function URLDecode(pURL)
    Dim vPos
    If pURL <> "" Then
        pURL = Replace(pURL, "+", " ")
        vPos = InStr(pURL, "%")
        Do While vPos > 0
            pURL = Left(pURL, vPos - 1) _
                 & Chr(CLng("&H" & Mid(pURL, vPos + 1, 2))) _
                 & Mid(pURL, vPos + 3)
            vPos = InStr(vPos + 1, pURL, "%")
        Loop
    End If
    URLDecode = pURL
End Function
|}}
함수에서 CLng부분에서 타입에러가 났었는데, 좀더 안정적인 코드가 되려면 CLng의 인자에 대한 검사를 해야 한다는군요. 그래서 보통
{{|

IF IsNumeric( 변환값 ) Then
   intData = CLng(변환값) 
Else 
 '그밖의 처리 
End If 
|}}
과 같이 해주면 좀더 안정적이 될 수 있다고 하는군요.

  • 감축드립니다.... ^^
    • 아직..길이 먼듯.. -- 멀쓱 라이온
      • 라이온님, 테스트계정을 루크님하고 함께 쓰시면 어떨까요? -- oaks
        • 에구, 잠시 자리를 비운다는게 새벽에 들어오게 되었군요. 루크님이 작업하신다니 더욱 좋지요..--라이온

안녕하세요? 좋은 정보군요. 그렇잖아도 UseModWiki를 수정하던가. 뭔가 더 나은 대안이 있었으면 싶었는데 잘 되었네요. 시간나는 대로 한번 살펴보고 답변드리겠습니다. 즐거운 하루~ -- 루크

천리안같은 일반 웹호스팅에서도 설치할 수 있게 만들어 주세요.. ㅜ.ㅡ

UseModWikiMySQL을 붙인다면 속도 향상에 매우 큰 향상이 있을듯하군요. 개인위키의 대중화에도 무척 도움이 되겠군요. ^^ -- 라이온

안녕하세요? 잠시 짬을 내서 OpenWiki 사이트 들어가서 이것 저것 살펴보고 있었습니다. oaks님 글 보고요. asp라서 정신이 좀 없는데... asp 해본지가 한 4년전인가? 하고 테스트 환경이나 그런 것을 꾸밀 여유가 없어서 오픈위키 소스를 손대기는 힘들 것 같네요. 대신 usemod 위키를 수정하는 방향으로 할라고요. 유즈모드 위키도 진화시켜야 하지 않습니까? :) 그래서 시간나는 대로(워낙 게을러서 긁적) 유즈모드 위키에 이모티콘 변환, 더블 클릭으로 에디트(이건 아주 쉽답니다), 에디트 창에서 헬프 팝업 -- 이카님 유즈모드 위키 헬프로 링크를 잡아도 되는지..., 프리뷰 팝업(마음에 듬), 몇가지 간단한 매크로 (그중에서 RSS가 가장 흥미롭군요)를 구현할라고 합니다. 괜히 엉뚱한 소리만 하다 가네요. 사이트 구경 잘 했습니다.... :)

RSS는 모인모인 1.0 이후로 지원됩니다. -- 무신
openwiki 에는 이미 지원됩니다.(바뀐글 목록과 위키페이지에 대한 revision 두가지 형식으로 제공됩니다.)
owpreamble.asp 18번째 줄의 'gFS = chr(179)?


7. 도와주세요

파일업로드는 어떠게 하나요 지원하는것 같은데.. -- 노보
(자답 노보: owconfig_default.asp에서 cAllowAttachments = 1 로 바꾸는군요)





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