모인모인문제점해결

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences P RSS

1. TitleIndex 한글 지원

TitleIndex가 한글 지원이 제대로 되지 않고 깨져서 나오는데(특히 페이지 제목에 한글과 영어가 섞인 경우) 이거 고치고 한글 첫글자로 인덱스 되게 고치느라 고생 좀 했습니다.
모인모인 1.1에서는 한글 TitleIndex가 기본으로 지원됩니다
뒷북인 것 같기는 한데, 한글제목을 표기할 때 표준적인 UrlEncoding을 따라가지 않으신 이유가 있으신지요. 지금의 encoding과 크게 다를바는 없으나 _대신 %를 사용하면 UrlEncoding이 됩니다. --Aragorn
제가 고쳐봤는데요(_문자를 모두 %로 바꾸게 함), 잘 되는 것 같습니다. 이렇게 하면 모질라에서는 한글이 자연스럽게 나옵니다(익스플로어에서는 깨지고) 대신에, /문자는 반드시 _2f로 해야 하더군요. %2f로 하면 안되었습니다 -- 아무개
_를 %로 바꾸는 것은 여러 문제점을 야기시키고 기존 데이타와 호환이 되지 않는 등 여러가지를 고쳐야 하는 부분이 많습니다.

3. Heading에서 링크를

사용할 수 있습니다.

4. Include 매크로를 사용할 때 특정 페이지의 TableOfContents만 가져오게

하는 매크로를 새로 만들었습니다. Include2를 사용하세요

5. 페이지 삭제

기능은 가능하나 페이지 삭제 기능 공개를 유보한적이 있었으며, 현재는 삭제기능이 공개되어있다.

6. 로긴을 유저이름과 암호로

할 수 있습니다.

7. 개인용 위키위키를

사용할 수 있습니다.

개인용 위키는 어떻게 구현하셨나요? data/ 를 다른 디렉토리로 분리하고 그 디렉토리를 AuthType Basic 이랑 require user XXX 으로 접근제어하신건가요? --레이옷

아뇨. wiki-moinmoin 디렉토리를 각자의 moin-config와 함께 다른 이름으로 하나씩 만들고, 모인모인 내부에서 쿠키를 통해 사용자 인증을 하도록 했습니다.

그러면 개인위키 페이지들이 공용위키 페이지들과 함께 존재한다는 말인가요? --레이옷

아뇨. 각자 자신의 data 디렉토리를 갖고 있습니다.

MoinMoin/SaneInstallation과 비슷한 해법인가요?

8. 한글 링크 생성 형식

을 과연 이대로 둬도 좋을까 하는 점입니다. 아무래도 우리 노스모크에선 대문자로 시작하는 단어 두개 이상을 붙여놓으면 자동으로 링크로 바뀌는 영문 링크보다 명시적으로 꺾인 괄호와 따옴표 속에 링크를 넣어야 하는 한글 링크(혹은 ExtendedWikiPageName)을 사용해야 하는데, 이전의 별(*) 하나 방식에 비해 조금 더 번거롭습니다. 위키 사용에 있어 "링크 생성의 간편성"은 필요불가결합니다. 어떻게 하는게 좋을까요? 바꿀까요?

몇가지 고민을 하다가 디귿자 괄호를 따옴표 없이 쓰기로 했습니다. 별 경우는 총알(리스트)과 충돌이 있을 수 있고, 격자괄호 경우는 쉬프트키를 누르지 않아도 되니 더 편한 점도 있을 겁니다. 만약 이미 쓰인 문서에서 특정 부분들을 링크로 바꾸려고 하면, 오른손은 커서키 부분에, 왼손은 디귿자 괄호 부근에 가면 편리합니다. 일단은 따옴표를 사용한 것과 없는 것 양립하도록 해놨습니다. --김창준
그런데요, 기존 문서중에 특정 영화나 책제목을 디귿자 괄호안에 넣어버릇한 적이 있어서... 일단 여기서 쓰이는 일종의 기호정리를 먼저 좀 하고 넘어가야겠네요. 이런경우 일테면 이제부터는 어떤 자료를 링크할 생각이 아니면 디귿자 괄호에는 넣지말것이며 등등... -Felix
네. 사실 이전 스위키에서도 이모콘에 별(*)을 쓰시는 분들이 종종 있어서 텍스트가 깨지곤 했었죠. 그리고 디귿자 괄호를 다른 목적으로 사용하시려면 [처럼 하시거나 [가갸거겨] 해도 되고 아니면 "&&"처럼 해도 됩니다.

DeleteMe NosmokeProgrammer님! Edit 창 열면 창밑에 설명문 있는데 그중 Links: JoinCapitalizedWords; brackets and double quotes; url; url; url label 이 부분을 노스모크모인모인에서는 수정을 해야 할듯 합니다. 노스모크는 brackets and double quotes 식이 아니니까요.

9. 페이지 이름 변경

부분을 새로운 한글링크 형식을 수용하도록 수정했습니다.

10. FullTextSearch에서 ExtendedWikiName 하이라이트

가 되도록 수정했습니다.

11. RecentChanges에서 bookmark의 new, update 표시

부분을 약간 수정했습니다. 이제는 자기의 최종 북마크 이후에 새로 생긴 페이지는 new라고 표기됩니다. 이전에는 그런 페이지가 한번이라도 수정이 되었으면 update라고 나왔습니다. 직관적으로는 "어쨌건 자기의 최종 접속 이후 새로 생성되었다면 무조건 new여야 한다"가 맞겠죠. 한번도 보지 못한 페이지인데, 첫버젼과 최종 수정 버젼의 diff를 볼 필요는 없거든요. 차라리 페이지를 통채로 봐야지.

12. diff 내용을 copy/paste 할 수 있게

수정. 이전에는 copy/paste해도 newline이 없어서 제대로 작동하지 못했음.

13. DeletePage된 것의 히스토리 diff

가 제대로 동작하도록 수정. 이전에는 삭제된 페이지에 대해서는 아무런 내용도 보여주지 않았음.

14. 업로드된 파일 지우기

오래전부터 말씀하신 업로드 파일 관리 기능을 추가했습니다. UploadFile에서 사용할 수 있습니다.

15. 동시수정후 자기글 분실

갑이 약 30분에 걸쳐 (중간에 저장하지 않고) 하나의 글을 편집하고 있을 때, 을이 중간에 글자 하나를 고치고 빨리 저장을 했다고 하면, 갑이 저장을 하는 시점에는 갑은 Sorry로 시작되는 경고를 보게 된다. 그래서 화면의 지시대로 브라우져의 뒤로가기 버튼을 누르면... 자신이 편집하던 글이 아니고, 을이 저장한 "원래에서 한 글자 고친 글"이 나타난다. 30분의 노력은 완전히 증발해 버린 것이다.

편집창을 오래 열어놓고 있는 상태에서 동시수정 문제가 발생하면, 종종 브라우져는 이전 단계의 페이지를 캐시에서 지워버리는 듯 하다(pragma no-cache와 관련이 있나? 그렇다면 1-2분 정도의 편집시간 후에는 자신이 편집하던 글이 왜 제대로 살아나는 거지?).

아예 Sorry가 나올 때 밑에 자신의 원래 글과 새글의 diff를 보여주면서 편집 가능하게 해주면 이런 불상사는 없을 것이다. 현재는 Sorry 경고가 나올 때 자신이 수정한 글을 같이 보여주는 장치를 "임시로" 해두었다 -- diff가 되는 버젼은 "곧 옴". 브라우저의 뒤로가기 버튼을 누르기 전에 그 텍스트를 마우스로 긁어서 복사를 해두면 자기글 분실의 불상사는 없을 것이다.

16. 히스토리가 뒤죽박죽

Q: 오랜만에 들어오니 얼떨떨한데 뭔가 이상한 점들이 발견되는군요. 하나는, 썬글라스랑 녹색업그레이드 표시의 기능이 예전엔 확실히 구분되었었는데 지금 보니 두 개의 기능이 혼동되고 있는 것같아요. 썬글라스가 바로 직전의 수정만 보여주는 게 아니라 이전까지 업그레이드 된 걸 전부 다 보여주고 있네요, 몇 페이지에서는 두 개가 분리돼서 잘 작동하는데 많은 페이지들에서 구분이 안되는 것같아요. 다른 하나는, 몇 페이지들에서 '파란아이' 즉 히스토리 기능이 작동을 잘 안하고 있는 것같아요. 특히 제 홈피 우산을 보시면 오늘만 해서 여러사람에 의해 여러번 수정이 이루어졌는데 최종수정만 남고 앞의 것들이 하나도 남아있지않아요. 다른 페이지들도 그러도록 뭐가 바뀌었나해서 살펴보니 그런 것같지는 않구요. 이 두 가지 문제가 왜 그런 건지 설명 좀 부탁드립니다.

A: It's a fundamental error of original MoinMoin design. It's fixed. (Look into wikiutil.getBackupList's way of sorting -- it doesn't sort the right way)

Tip: Y2K 식으로 자릿수가 넘어가면서 생기는 문제였군요. 어쨌거나 2038년까지 다시 발생하지는 않을 문제네요. 급한대로 text 디렉토리에 들어가서 touch *를 해 주고, backup 디렉토리에서 rm *.9* 를 해 주면 되겠군요.

그렇게 할 필요없이 소스를 다음과 같이 고치면 됩니다.
oldversions.sort()
oldversions.reverse()
를
oldversions.sort(lambda x,y:cmp(float(y.split('.',1)[1]),float(x.split('.',1)[1])))
로
float? int가 아니고요?
네. float요. 소스를 보면 원제작자가 suffix로 digit dot digit 형태를 일반적으로 예상한 듯 합니다. 사실 쓰이지는 않지만. 그리고, 쓰지 않더라도 float의 유효자리수가 int보다 더 큽니다. :)

엄.. 난 아직도 무신 소린지 하나도 몰르겠음.. --우산

17. RecentChangesaction=info 병목 현상

모인모인은 editlog.py의 EditLog 클래스에서 매번 실행시 마다 editlog 파일 전체를 읽어와서 reverse를 하기 때문에 로그가 커질 경우 그 부분에서 중복적으로 낭비를 하게 됩니다. 따라서, editlog를 flat db로 바꾸면 필요한 정보만 쉽게 가져올 수 있기 때문에 1000라인 이상의 로그가 쌓였을 경우에 시간상 많은 이득을 얻을 수 있습니다.
[http]Boosted MoinMoin DeadLink 에서 테스트용 패치를 얻을 수 있습니다. --퍼키

18. 동시에 여러명이 고치는 경우 자동으로 머지

동시에 여러명이 에디터를 열고 저장하려고 할 때, 전체를 새로 고쳐야 하는 것을, RCS의 merge를 이용해서 자동으로 가능한 한 머지해서 컨플릭트 부분만 화면으로 보여주도록 고쳤습니다. 패치는 http://fallin.lv/distfiles/moinmoin-automerge.txt 에 있습니다. 새로 패치하면 Page.py의 md5가 5591d628da7d92429e11a4ca34de314a입니다. --퍼키 DeadLink

19. 잘못된 HTML


노스모크모인모인이 만들어내는 틀린 HTML 의 대표적인 예.
<a name="line..."><h3>...</h3>
태그가 닫히지 않았다. 제목에서의 하이퍼링크를 위해 </a> 태그를 삭제한 것으로 보이나, 이는 틀린 HTML 일 뿐 아니라 문서의 렌더링도 엉망으로 만든다. 다음과 같이 바꿔야 한다.
<a name="line..."></a><h3>...</h3>
AnswerMe 이건 제안인가요?



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