노스모크계정관리자/문제해결요청/모인모인시대

FrontPage|FindPage|TitleIndex|RecentChanges| UserPreferences U P RSS
노스모크의 기술적인 문제에 대한 제안과 문의를 하는 곳입니다.



1. 문제 해결 요청


1.1. IsbnMacro에서 책표지 이미지가 안보이는 경우가 꽤 많아졌어요.


이 문제는 사실 오래 전부터 보았던 것이지만 그 빈도를 주의 깊게 관찰해 보았습니다. 그런데 요즘은 참기가 짜증날 정도로 문제의 빈도가 잦아졌습니다. 그래서 오늘(2005.7.29) 문제 해결 요청을 접수하게 되었습니다.

알라딘에서 책 표지의 이미지 이름맑은이 보는 범위에서는 많은 경우가 {isbn_숫자.gif}의 형태로 되어 있습니다. 그래서 이미지 옵션을 쓰는 경우, 즉 noimg 마크를 부착하지 않은 경우들에서, 이미지가 보여야 하는데 보이지 않습니다.

"Isbn.gif 와 isbn_숫자.gif 등의 이름을 갖는 책표지 이미지가 모두 보이게 할 수는 없을까요?"

지금 스모크삼차이전 진행 문제로 바쁘실 것 같아서, 이곳에 메모를 해 둡니다. 이사 간 뒤에 되도록이면 빨리 이 문제를 해결해 주셨으면 해요. 고맙습니다.


1.2. 없는 페이지 오류

일부 없는 페이지 이름(ex - 료실)에서 페이지 하단에 오류 메시지 돌출.

1.3. 도메인네임(no-smok.net) 관리 문제


이곳에서 벌어졌던 논의를 사랑방으로 옮겼습니다. 너무들 관심을 보여주지 않아서 말에요. 이상한 것이 이런 문제에 왜 관심과 의견을 내지 않는 것인지 이해가 잘 안되요. 다른 분들께는 이 문제가 중요한 문제로 받아들여지지 않는 것인지도. 이래도 괜찮고 저래도 괜찮고. --맑은

1.4. UploadFile 관련 문제


외부의 파일이 UploadFile로 올라올 때도 페이지처럼 최근변경 상황이 모니터 되었으면 좋겠습니다. 노스모크가 가지고 있기에 부담스러운 내용을 담고 있는 파일들이 올라오는 경우가 있습니다. 알 수 없는 기업정보, 알 수 없는 영업정보, 알 수 없는 개인정보 기타등등. --맑은
좋은 제안이네요. diff까지는 모르겠는데, 업로드되었다는 표시만이라면 어렵지 않을 것 같습니다. --희상
가능하다는 부분만이라도 어여어여 맹글어 주시면 고맙지요. --맑은
업로드를 하면, 바뀐글에 UploadFile이 표시됩니다. 어느 파일이 업로드 됐는지는 diff로 알 수 없지만, 파일 목록의 맨 위에 나타나니까 금방 찾을 수 있을 것 같네요. --희상
테스트 해 봤는데 느낌이 좀 이~상한 걸요. (아무튼 오늘은 요기까지) --맑은
예, 이상하긴 하죠. 실은 http://zeropage.org/wiki/ZeroPageServer 의 일반게시판 업데이트 표시 기능을 베낀 것인데, 다른 부분 손 안 대고 두어줄 추가하는 걸로 해결이 되서 택했습니다(그걸로 충분하지 않은가 싶어서). --희상
이대로는 관리부담이 좀 커 보입니다. 페이지를 열었을 때 제일 위로 가도 안보이고 제일 아래로 가도 안보입니다. 무엇이? 변경 사항이. 그래서 &[&Uploaded''''''Files(업로드된 파일들)&&] 이것을 활용할 방법이 없을까요? 그 내용만을 포함하는 별도의 페이지를 하나 따로 만든다던가 기타등등. 원하는 바는 ShowText했을 때에 "제일 위에서 변경사항이 보여진다면" 이지요. 요리조리 좀만 더 궁리해 보면 안될까요? --맑은
가장 최근에 올린 파일은 파일 목록 맨 위에 나오지 않나요? --희상 파일 목록 맨 위에 나옵니다. --맑은

UploadFileRecentChanges에 보이게 했잖아요. 그것 대신에 제가 방금 테스트용으로 만든 UploadedFilesRecentChanges에 보이게 하면 어떨까요? 보면 알겠지만 UploadFile에서 그저 단순히 위쪽의 안내문만 빠진 겁니다. --맑은

UploadFile의 마지막 줄을 수정해 보았습니다. 봐주세요. 문제가 있으면 원래대로 돌려주고요. --맑은

그렇게 해도 되겠네요. 일단 그렇게 하겠습니다. 저는, 파일 목록을 동적으로 생성하는 UploadedFile 매크로를 빼고, 파일 목록을 정적으로 위키 페이지의 하나로 생성하게 하면, diff로 추가/삭제 내역이 보일 수 있겠다는 생각을 했는데, 몇 군데 손대야할 것 같아서 영감이 떠오르길 기다리고 있었거든요(;;). --희상

약간 수정해서 diff로도 보일 수 있게 해봤습니다. 어지러운 태그는 어쩔 수 없네요. 이걸 채택하게 되면, UploadedFiles 매크로는 빼려고 합니다. --희상

짝짝짝. 훌륭합니다. 고생하셨어요. &은&이는 그 방향으로 가는데 동의한표를 던집니다. 자, 마지막으로 영감탱이 한 분만 더 불러주세요. DIFF에서 보여진 그 어지럼뱅뱅은 ShowText하면 깨끗한 모습으로 보여지게 될 거죠? 아, 참, 희상님이 앞서 말하길, 영감을 기다린다기에... 그 영감 말인데, 희상님께는 영감이겠지만 &은&이에겐 치가 떨리는 영감탱이인지라, 정말이지 요번 만남이 마지막 영감탱이였으면 정말 좋겠습니다. :D --맑은
그거, 지금도 show text하면 잘 보이지 않나요?
어? 전 매크로인줄로만 알았는데, 아니었네요. (음, 오, 느리다...매크로만큼이나...어쩔 수 없는 일인가? 이번 일은 요기까지로 만족해야 하나?) --맑은
매크로로 동적으로 목록을 만들면 지금 있는 diff 기능을 활용하기가 어려워서, 정적으로 페이지에 생성시켜놓게 했습니다(달리 손 안 보고도 diff 기능 활용 가능). 느린 것은 아마도, 모인모인 태그를 활용할 수 없는 HTML 코드를 표현하기 위해 HtmlMacro가 상당히 많이 사용되었기 때문에 그로 인한 부하 때문일 것 같습니다. 프로파일링을 잘 몰라서 정확한 건 아니지만. 아니면 모인모인 태그를 사용하지 않고 완전히 HTML 태그를 쓰게할 수도 있는데(처음에 그렇게 했었음), 그럴 경우 diff시 화면이 너무 복잡해지더군요(지금도 꽤 복잡합니다만). --희상

구웃! 근데 삭제된 파일 살릴 수 있나요? 이건 영감탱이 아니고 그냥 질문 --맑은
자동으로 하는 방법은 없고요, 따로 backup 디렉토리에 옮겨지므로 계정관리자가 수동으로 살릴 수 있습니다.

맑은님의 말씀에 영감을 얻어 간단히 UploadChanges라는 것을 모니위키에 구현했습니다. ^^ http://chemie.skku.ac.kr/wiki/wiki.php/UploadChanges --무신
(크흐, 잊은 채로 얼마나 오래살아스면 MoniWiki의 페이지이름도 까묵었을까나,쩝~) 어? DIFF에 태그가 안보이네요? InterMap을 활용한 걸까요? (음,대단한영감탱이다!) 역링크는 어케 볼 수 있어요? 그건 쓸모없는 상태로 오래방치된 파일들을 처리하는데 없어서는 안될 기능이잖아요. 구른데? 노스모크에서도 그와 같은 방법을 쓸 수 있나요? --맑은
모인모인 1.0이후로 Upload new Attachment "라는" 문법을 쓰기때문에, 노스모크식 역링크 서치는 거의 필요하지 않습니다. 모인모인과 기능이 대동소이하다고 보시면 됩니다. 노스모크모인모인에서 쓰는 UploadFile은 모인모인 없으며, 모인모인 1.0이후로 attachment: 문법이 쓰입니다. --무신
음, '노스모크역링크 서치는 필요치 않다', '모인모인1.0 이후로는...' 이런 말들은 제가 충분히 알아들을 수가 없습니다. :( (울긋불긋) --맑은
attachment:는 그 해당 페이지에 첨부되기 때문입니다. MyPage에서 attachment:my.jpg를 쓰면 pds/MyPage/my.jpg에 파일이 올라가는 식이므로 MyPage만 살펴보면 되기 때문에 역링크 서치를 굳이 하지 않아도 된다는 것입니다. 물론 이에 관련된 사용자의 불만이 있으면 접수받을 준비는 언제나 되어있습니다. :) --무신

참, 각주기능 봤는데요, 원문의 가독성이 너무 떨어져요 ... --맑은
DeleteMe 각주기능은 모인모인 1.0 이후로 있는 기능입니다. [1]를 쓰죠. 그걸 단순히 [* 어쩌구 저쩌구] 문법을 쓰도록 확장한것입니다. --무신
어? 그럼 지금 확장한 것이 [* 어쩌구 저쩌구] 라고 쓰면 끄트머리에 가서 주석이 보여진다 이 말이지요? [어쩌구 저쩌구]가 가진 가독성을 그대로 갖는 것 아닌가요? 엄청 좋다는 얘기입니다. 히히, 지금 노스모크에서는 써 볼 수가 없나요? --맑은 또 모인모인 버전이 어쩌구 할까봐 노스모크에서 헛 짓 한 번 해 보고 난 뒤 MoniWiki 테스트베드(?)로 달려갑니다. --맑은
음, MoniWiki에서 확장된 각주기능을 써 보고 왔는데요, 넘 좋아요.:D 노스모크에서도 쓸 수 있게 안 되나요? ;) --맑은
모인모인 1.0 이후로 FootNote라는 매크로를 이용해야 합니다. MoniWiki 1.0.9이후에 지원되게 될 [* 각주 내용] 문법은 모인모인에서는 지원하지 않는 문제가 있습니다만, OriginalWiki에서 [http://c2.com]이라고 쓰면 [1]}이라고 각주방식의 링크가 걸리며, UseMod, OddMuse위키에서 이와 꼭같은 문법을 지원하죠. 그러나, 모인모인은 [http://c2.com]이 각주식으로 처리되지 않고 FootNote매크로를 사용하라고 되어있습니다. 그래서 이 문법과 최대한 비스무리(?)하게 만드려는 의도를 가지고 [* 각주 내용] 문법을 고안했습니다. 그리고, 노스모크모인모인은 0.9 기반이라서 그냥 매크로를 복사하는 것만으로는 되지 않고, 제가 예전에 만들었던 모인모인Sister위키 버전에 이 매크로가 들어있습니다. ^^;; --무신

1.5. RSS

노스모크에서도 방문객의 편의를 위하여 RSS를 제공하면 어떨까요? (ex. rss 리더기로 볼수 있는 환경제공)
RSS 제공은 당장은 어렵지만, 제공할 수 있도록 준비해보겠습니다. 혹시 오리지널 모인모인에 있는 RSS 관련 코드는 가져다가 붙여넣기 편한지 어떤지 아시나요?
우선은 시험적으로라도 설치를 해 보시기를 부탁드립니다. 괜히 일만 늘리는 것 같아서 죄송합니다 ^^; --최종욱
(예상은 했지만) 소스를 보니 매크로 하나 복사해서 되는 수준은 아닌 것 같습니다. 조만간 시간 나는대로 알아보겠습니다. --희상

위키 사이트의 RSS가 많이 필요한가요? 제가 자주 가는 위키 사이트 중엔 RSS 지원하는 곳이 없기도 하고 해서, RSS 구독은 거의 블로그 계열만 하고 있거든요. 저만 그런건지 아닌지 궁금하네요. --희상 (RSS지원에 대한 우선순위를 어떻게 할까 고려하는 목적의 질문이기도 합니다. 게으르기 그지없는 무늬만 계정관리자가;;; )
저도 블로그만 등록하고 위키는 등록하지 않는데요. RecentChanges의 Diff만 보는 사람들도 꽤 있을텐데 Diff를 제공해 주는 것이 아니라면 필요가 없지 않을까요? -- litconan
예 저도 그렇게 생각하는데, 노스모크에서 RSS 지원을 하는지에 대한 문의가 심심치 않게 있더라구요. 문의 했던 분들은 평소에 위키 사이트의 RSS를 읽는지 궁금하네요. --희상
문의했던 사람 중의 한 명이 전데요, 말씀하신 대로 diff 의 문제 때문에 좀 읽다가 요즘은 다시 사이트를 직접 방문합니다. diff 를 제대로 챙겨 주는 리더기가 있으면 좋겠는데. -- Raymundo


1.6. Rename Action 관련

HelloWorld 라는 페이지의 이름을 바꾸면, 그 페이지이름을 포함하고 있는 다른 페이지 이름(ex. SomeWaysToSayHelloWorld)에 대한 링크들도 바뀐다. 또한, 인터위키 링크의 이름이 바꾸려는 페이지이름을 포함하고 있다면 그것 역시 변경된다.

페이지 이름 바꾸기부작용
HelloWorld (->) HellSomeWaysToSayHelloWorld (->) SomeWaysToSay[Hell]
HelloWorld (->) HellWorldSomeWaysToSayHelloWorld (->) ?

첫번째 예에서 양괄호(&&)가 들어간 이유는 바뀐 뒤의 이름인 'Hell'이 WikiName이 아니기 때문인 듯하다.

이런 문제점은 영문으로만 이루어진 WikiName에서만 발생하는 것 같다.


삭제되어 백업만 남아있는 문제에 대해 집중하지 않더라도, rename기능은 드러나지 않은 기능이라서 그렇지, 마음만 먹으면 이것으로 큰일 낼 가능성이 큽니다. 지우거나 하는 기능보다 더 막강한(?) 괴력을 발휘합니다. 결정적으로, 무엇이 고쳐졌는지도 드러나지도 않기 때문에... ㅡㅡ;; 무서운 기능이죠. =3=3=3 --무신
위의 요약문에 나열된 것 말고, 그 외의 것도 있다면 우리와남을위해 알고 계신 정보를 공개 합시다!!! --맑은

1.7. QuoteFortuneMacro

2003.06.26 QuoteFortuneMacro에서 대상이 되는 페이지의 텍스트 중에 부호 '##'을 사용한 줄에 포함된 기준 부호(MultipleLineCell) 까지 계산에 넣어 버리던데, 이건 정상적인 겁니까? 잘못된 것입니까? 당장은 잘 이해가 안갑니다.--맑은
##으로 주석처리한 것을 말하는 것입니까? 정규표현식이 아마도 주석은 고려하지 않은 것 같습니다. --희상
그거 맞아요. 아래 상자를 참고 해 주세요. 그 예처럼 되었을 때 그런 줄도 함께 계산을 하더라는 것이지요. '##'를 쓴다는 것이 출력할 대상에서 제외한다는 뜻으로 생각되니 그 줄에 걸린 상자도 당연히 무시될 것이라 기대했었지요. 근데 무시가 안되던 고로 잠시 화끈거리다 걍 맞고 살자며 묻어 두었는데 다른 문제들을 보고 하는 도중에 팔딱 튀어 올라 이렇게 여쭤보게 되었어요. --맑은

##어쩌구 저쩌구 {{|비오는 날엔 [맑은] 수채화를|}} 궁시렁 궁시렁.

1.8. 페이지 삭제

2003.06.24 페이지 N개를 지우고도 1개만 지운 할 수 있습니다. 그런 현상은 겪어 보아서 알고 있는데 대안을 생각해 내지는 못했습니다. --맑은

이름바꾸기와 지우기를 섞어가며 사용하는 것인가요? 지능적이고 악의적인 공격을 어떻게 막아야할지, 어디까지 막을 수 있을지 생각해야겠네요. --희상

네, 맞습니다. 좀 오래 되었어요. 일전에 제가 '몰모트'라는 페이지를 만들어서 몇가지 짓을 해 보았습니다. 아마도 그 페이지가 눈 앞에 보였다가 어디론가 사라지고 없는 걸 보신 분이 계실 겁니다. 다른 짓을 하던 도중 우연찮게 발견했고 그 이상함에 몇 번 더 해 본 뒤 문제가 있음을 확신하게 되었습니다. 그걸 알고 난 뒤 가슴이 넘 철렁거려서 말도 못하고 있었고요. 그 흥분된 시간을 지나 잠시 생각해 보았더니 이 문제는 복합적으로 얽힌 문제인 듯해서 감히 얘기를 꺼내지도 못하고 있었지요. 암튼, 이 문제는 골치가 좀 아프고 꽤나 짜증나는 문제인 것 같아요. 모르면 모른 채 살 수 있을텐데 알고 난 뒤로는 절대 자유로울 수 없는 그런 짜증스러운 문제. 많은 사람들이 함께 고민해 주리라 믿습니다. 아자, 아자, 아자! --맑은

1.9. 줄바꿈

2003.06.24 &[&HTML("까꿍")&&]과 같이 하여 HTML 태그를 집어 넣어 결과로 보여진 HTML 태그에 문제가 있었습니다. 아래는 제가 문제에 맞닥드린 당시의 정황입니다. 모든 줄의 끝에 '>'가 존재하도록 조정을 가함으로써 개인적인 문제는 해결했습니다. 그러나 아래의 박스에서 보여지는 '<br>'들은 문제를 일으킵니다. '<br>'을 없애는 것에 관한 검토 부탁드립니다.

{{|
<br> 이 있는 줄은 모고, 없는 줄은 또 모꼬? 현황 : 이 놈(>)이 있는 경우 그 놈(<br>)이 없고, 이 놈(>)이 없는 경우 그 놈(<br>)이 있다. 그럼 : 이젠 몰 하지? 어라? 되어 부렀다. 그러나...

<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"                  <br>
            codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0"   <br>
            width="99%" height="200" id="ShockwaveFlash">
            <param name="Movie" VALUE="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf">
            <param name="WMode" value="Transparent">
            <param name="Quality" VALUE="High">
            <param name="BGColor" VALUE="#66ccff">
            <embed src="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf"    <br>
                pluginspage="http://www.macromedia.com/shockwave/download/"    <br>
                type="application/x-shockwave-flash" width="99%" height="200">
            </embed>
</OBJECT>
|}}

HTML 매크로를 쓸때 원래 HTML 태그가 깨지지 않도록(<으로 열고 >으로 닫는 것이 깨지지 않도록) 삽입하면 문제가 발생하지 않을 것 같습니다.

  1. 한 줄로 이어서 쓰거나,
    [[HTML(<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0"  width="99%" height="200" id="ShockwaveFlash"> <param name="Movie" VALUE="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf"> <param name="WMode" value="Transparent"> <param name="Quality" VALUE="High"> <param name="BGColor" VALUE="#66ccff"> <embed src="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf" pluginspage="http://www.macromedia.com/shockwave/download/"  type="application/x-shockwave-flash" width="99%" height="200"> </embed> </OBJECT>)]]

  2. 각 줄마다 쓰되 태그가 깨지지 않도록,
    [[HTML(<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"  codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#3,0,0,0"  width="99%" height="200" id="ShockwaveFlash"> )]]
    [[HTML(<param name="Movie" VALUE="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf"> <param name="WMode" value="Transparent"> )]]<param name="Quality" VALUE="High"> <param name="BGColor" VALUE="#66ccff"> )]]
    [[HTML(<embed src="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf" pluginspage="http://www.macromedia.com/shockwave/download/"  type="application/x-shockwave-flash" width="99%" height="200"> </embed> </OBJECT>)]]
     

  3. 사실 embed 때문이라면 군더더기 빼고 이것만 넣어도 됩니다(브라우저 호환성이 떨어지려나요?)
    [[HTML(<embed src="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf"  width="99%" height="200"> </embed> )]] 

action=highlight에서 줄바꿈이 안 되는 문제(예: "&춘이&"로 전체검색한 다음에 크로마틱을 들어가 보세요)도 있는데, 위 <br> 태그 관련 문제와 이 문제, 두 가지 문제의 원인이 될 수 있는 부분을 찾은 것 같습니다. 아래는 2002년 11월 8일 버전 노스모크모인모인의 wiki.py 중에서 format() 함수 마지막 부분입니다.
아래 코드를 보면 action=highlight를 하기 위하여 if 부분에서 highlight_scan() 함수를 호출하지만 그 함수가 반환한 raw text를 바로 sys.stdout.write()을 써서 웹에 출력하고 있습니다. 여기에서 <br> 태그를 출력시키는 코드가 없기 때문에 첫번째 문제가 생기는 것 같습니다.
else 끝부분을 보면 _isEndingHTML 변수를 써서 <br> 태그를 줄의 마지막에 삽입할 것인지를 판단하는 내용이 있는데, 해당 줄이 "/em>"이나 "</a>"로 끝나거나 ">"로 끝나지 않을 때에만 <br> 태그를 출력하도록 되어 있습니다.
# convert line from wiki markup to HTML and print it
if self.hilite_re:
 sys.stdout.write(self.highlight_scan(self.__class__.scan_re, line + " "))
else:
 _pattern=self.__class__.scan_re
 _repl=self.replace

 _toPrint=re.sub(self.__class__.scan_re, self.replace, line + " ")
 if config.auto_line_break and not self.in_pre and _toPrint: #when auto_line_break is on and not in pre mode
  _isEndingHTML=string.rstrip(_toPrint)[-1] in ('>','\n') and \
  not string.rstrip(_toPrint)[-2] == 'a' #or\
  #string.lstrip(_toPrint)[:3] == '<li'

  if string.rstrip(_toPrint)[-1] =='>':
   _isEndingHTML=not (string.rstrip(_toPrint)[-4:] in ('/em>','</a>')) #XXX dirty.. need to clean up

  if not _isEndingHTML:
   _toPrint+='<br>' #let everything break into a new line except ...
 #sys.stdout.write("!!!")
 sys.stdout.write(_toPrint)

WebBrower(InternetExplorer) 에서 서로 다른 경로를 타고 들어온 동일 페이지 "1.노스모크계정관리자/문제해결요청 과 2.[http]노스모크계정관리자/문제해결요청"가 서로 다르게 보입니다. 1번에서는 태그만 보이고 그림이 안보입니다. 2번에서는 태그가 안보이고 그림만 보이고요. 다른 분들은 어떤지요? 2번에서 브라우저의 특성이 발현되도록 만들어진 노스모크 운영 프로그램 상의 어떤 이유가 있어 걸까요? 확인 부탁드립니다. (물론, 추측) --맑은

역링크 등을 비롯한 검색 기능에서 인접한 단락이 다닥다닥 붙어 보이던 문제가 해결된 모양입니다. 언제 고쳐진 걸까요? 아무튼 참말로, 참말로, 고맙습니다. 그 동안은 페이지를 찾기 위한 검색이었고 그 길을 따라서는 읽기까지는 곤란했었던 바 개인적으로는 그 검색기능이 찬밥신세를 면치 못했었는데, 이제는 그것이 손에 가깝고 시간을 벌어주는 참말로 쓸모있는 연장이 될 겁니다. 마지막 다듬질이 되길 바랍니다. 좋아라 하며 보다 보니까 옥에 티가 하나 끼었더군요. MultipleLineCell 밖에 있는 인접 단락에는 문제가 없는데, 그 안에 있는 인접 단락은 무조건 다닥다닥 붙었습니다. 이걸 보고 나니 바로 위의 문제도 이와 비슷한 논리가 아닐까 하는 생각이 휘리릭. --맑은 / 도망갈 이유가 있었군요. ;) '무조건 다닥다닥' 붙는게 아녀유. 무슨 놈의 코끼리가 이리도 종잡을 수가 없는거야, 악! :( --맑은 / 정상 예문과
이상 예문을 몇 개 골라 놓았습니다. --맑은

정상 예문(1)

아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

정상 예문(2)

{{|
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
|}}

정상 예문(3)

아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
{{|엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!|}}

정상 예문은 [http]노스모크계정관리자/문제해결요청을 눌러 보면 바로 위의 예문의 모양이 지금 보고 있는 모양과 같습니다. 안 붙었다, 이거죠.

(참고) 정상 예문은 아래에 나열된 이상 예문들과 비교될만하다 싶어 넣어 둔 것이니 "정상적인 걸 뭐 할라고 써 놓았느냐"고 타박하지는 말아주세요. (도움될 지 여부는 미지수 :( ) 미지수는 지수와 무슨 관계일까? ;)

이상 예문 (1)

아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

이상 예문(2)

{{|
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
|}}

이상 예문(3)

  • 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
    엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

이상 예문(4)

  1. 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
    엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

  2. 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
    엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

(주의) 위의 예는 숫자이고, 아래 예는 총알입니다. 같은 예문을 두개 쓴 게 아닙니다.

이상 예문(5)

  • 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
    '''엄마''' : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

  • 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
    '''엄마''' : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!

(주의) 위의 예는 총알이고, 아래 예는 숫자입니다. 같은 예문을 두개 쓴 게 아닙니다.

이상 예문은 [http]노스모크계정관리자/문제해결요청을 눌러 보면 바로 위의 예문의 모양이 지금 보고 있는 모양과 다릅니다. 붙었다, 이거죠.

1.10. 기울여쓰기

2003.04.12 기울여쓰기 관련하여 문제점이 하나 보입니다. 제가 프로그램을 제대로 모르기 때문에 발생하는 질문인 것인지는 모르겠으나 암튼 위와 같은 문제가 발생했을 때는 불편한 것이 사실일테니까 생산적인 방향으로 정리되길 바라는 마음으로 짧은 생각을 하나 붙입니다.

{{|
텍스트 편집에서 인용 및 강조를 위해 마련되어 있는 장치들(예: '', ''') 에 대한 해석 및 처리는 텍스트 단위 영역의 범위 안으로 제한 적용되는 것이 좋지 않을까 하는 생각입니다.
|}}

전문용어를 모르기 때문에 부득이 설명을 붙입니다. 위에서 언급한 텍스트 단위 영역이라 함은 페이지의 레이아웃 용도로 사용되는 태그들의 안팍의 각 범위라 해야할른지, 글 뭉치를 담을 수 있는 그릇이라 하면 뜻이 전달되나요? 테이블이 사용될 때를 예로 들면, 테이블의 과 같은 영역을 말하고자 했습니다.

그러한 텍스트 단위 영역 안에서 발생하는 어구 혹은 문장의 편집을 위한 특수문자들이 단위 영역 바깥에까지 영향을 미치지 않는 것이 바람직하지 않을까 하는 생각합니다. 왜냐하면, 테이블의 기본적인 용도에서 보자면, 어떤 필자가 글을 쓸 때 어떤 한 문장을 여러 셀에 걸쳐서 쓰거나 테이블의 범위 밖에까지 걸쳐서 쓰거나 할 사람은 거의 없을 것이라 생각되기 때문입니다. 있다면 좀 별난 사람의 별난 편집이 아닐까 생각되고요. 문장이 그러하기가 힘들다는 것은 결국 강조의 범위 역시도 어구나 문장의 형성범위 안일 수 밖에 없지 않겠는가 하는 것입니다.

보통 행동
날 잡아 봐~라 술퍼맨</td><td >날 잡아 봐~라 [술퍼맨]아</td><td >
날 잡아 봐~라 술퍼맨</td><td >''날 잡아 봐~라'' [술퍼맨]아</td><td >

별난 행동
~술퍼맨 </td><td >날</td><td >잡</td><td >아</td><td >봐</td><td >~</td><td >라 [술퍼맨]아</td><td >
~술퍼맨 </td><td >''날</td><td >잡</td><td >아</td><td >봐</td><td >~</td><td >라'' [술퍼맨]아</td><td >

문제 상황 (우리말바로쓰기 페이지 에서의)
~술퍼맨아'' </td><td >''날</td><td >잡</td><td >아</td><td >봐</td><td >~</td><td >라'' [술퍼맨]아''</td><td >
''

문제 해결 (우리말바로쓰기 페이지 에서의)
~ 술퍼맨 </td><td >''날''</td><td >잡</td><td >아</td><td >봐</td><td >~</td><td >라'' [술퍼맨]아''</td><td >

별난 행동에서 뒷 부분의 따옴표는 기울여쓰기의 '닫음'이 아니라 열음을 표시하는 것으로 해석되는 것이 바람직하다 생각됩니다. 앞 부분의 따옴표에 대한 '닫음'표시가 없기는 하지만 그 것이 영향을 미치는 범위는 셀 안으로 한정되고 끝이 나야 한다는 견해입니다.

문제 상황에서는 따옴표가 세 개 등장합니다. 두 번째 따옴표가 닫음으로, 세 번째 따옴표는 다시금 열음으로 해석되어 닫음을 만나길 바래는 상태로 있는데, 길죽한 페이지에서는 이러한 문제의 원인이 쉽사리 드러나 보이지 않습니다. 문제 상황의 마지막 셀에서 편집자가 원한 것은 문제 상황에서 보이는 대로가 아니라 기울여쓰기로 된 술퍼맨 였던 것인데, 그러한 편집자의 의도를 따라가지 못했습니다.

문제 상황이 발생한 근본 원인은 " 따옴표 쌍에 대한 처리에 있어서 사람들의 보통 행동 양식을 따르지 않은 것" 에 있다고 봅니다. 개인적 생각이지만 프로그램 자체로는 문제가 없어 보입니다. 주어진 사용법만 지켜주면 아무런 문제가 없으니까요. 그런데 본 문제는 처음부터 오류나 버그의 범주가 아니라 '접근 방법'의 문제가 아니었을까요. 기술적으로 불가능한 것이라면 할 말이 없겠지만 가능한 것이라면 보통 행동 양식에 접근하려는 노력은 필요하지 않을까 해요.

노스모크공동체가 잘 굴러가는 데 있어 이것은 당장의 심각한 문제인가? 물론 그렇게 생각지는 않습니다. 그러면 언젠가 이것이 아주 심각한 문제가 될까? 물론 그렇지도 않을 것이라 생각합니다. 잘만 사용하면 될테니까요. 그러면 도대체 왜 제안했는가? 사용자에 대한 배려가 조금이나마 더 깃들여졌으면 하는 바램이 있기 때문입니다. 혹시라도 이것이 필요한만큼만의 범위를 벗어나는 주문으로 판명되지 않았으면 하는 바램도 있습니다. 마지막 바램은, 프로그램의 설계는 맑은 뜻과 통하는 바가 있었으니, 현재의 드러난 문제점은 명백한 버그이길. (이것 참, 그렇게 되면 애써 작성한 이 글은 한 방에 날아가남? 그러게 진작에 물어보고 시작할 껄. 앙~ :( )

(투덜투덜) --맑은

기술적으로 불가능한 것은 아니지만, 지금의 코드를 몇줄 고치는 수준으로는 힘들 것 같습니다. ' 이 2개 혹은 3개 있을때마다 태그를 집어 넣는 단순한 방법을 쓰고 있는데, 거기에 || , |}} 등등 예외를 다루려면 많은 수정이 필요할 것 같습니다. --희상
ps. 파싱을 어떻게 하는지 보려고 코드 들여다보다가 줄 맨 앞의 ## 이 한 줄 주석처리 역할을 한다는 걸 발견했네요. 의외의 소득(?)

이 문제와 관련하여 메모 하나 남겨 둡니다. --맑은

원하는 것 'Text'
시도해 본 것들 Text
' '''Text
' Text '

1.11. 한글 코드

위의 두 링크는 되고, 아래의 링크는 안 됩니다.
&[http아햏햏&[http]아햏햏
&햏햏&햏햏
&햏햏&햏햏
그리고 셋 다 "햏" 자가 깨져서 보입니다. --PuzzletChung

1.12. minor changes

"This is a minor changes" 넣어 주시면 안 될 까요?


1.13. action=raw

임시 요약 -

action=raw로 페이지를 보려고 할때, 페이지 내용에 img 태그가 들어있는 경우, MIME 정보를 제대로 보내줘도 IE에서는 MIME을 무시하기 때문에 raw text로 보이질 않는다. IE외의 브라우저에서는 이상없다.

가능한 해결책
  1. 사용자가 action=raw 상태에서 소스보기를 한다.
  2. 계정관리자가 action=raw를 아예 새로 코딩한다.
현재는 1번 해결책을 권함.

1.14. InterMap

모인모인 0.9기반의 노스모크는 이게 원래 되지 않는데, 그 상위버전은 되는 모인모인 InterMap의 문법입니다 (MeatballWiki에서도 이와 비슷한 방식을 씁니다) 이게 되면 MathWorld와 같은 MetaWikiInterWiki로 사용할 수 있으며, 인코딩이 서로 다른 위키간 InterWiki연결로도 유용하게 사용할 수 있습니다. --무신
시도해보았는데, 노스모크에서 현재 쓰는 코드가 NoMoR0와 다르기 때문인지 오류가 생기더군요. 일단은 보류하겠습니다. --희상


MathWorld http://mathworld.wolfram.com/$PAGE.html

이것을 되게끔 고치기위해 (NoMoR0를 모인모인 1.0등을 참고하여 고쳐보면)
diff -ru tmp/MoinMoin.orig/parser/wiki.py MoinMoin/parser/wiki.py
--- tmp/MoinMoin.orig/parser/wiki.py    Tue Jan 29 16:50:59 2002
+++ MoinMoin/parser/wiki.py     Sun Feb 23 19:13:29 2003
@@ -95,20 +95,21 @@
                 url = ""

         wikitag, wikiurl, wikitail = wikiutil.resolve_wiki(url)
+        href = wikiutil.join_wiki(wikiurl, wikitail)

         # check for image URL, and possibly return IMG tag
         if wikiutil.isPicture(wikitail):
-            return '<img src="%s%s" border="0">' % (wikiurl, wikitail)
+            return '<img src="%s" border="0">' % href

         # return InterWiki hyperlink
         return '''<a href="%(wikiurl)s"><img src="%(prefix)s/img/moin-inter.gif"
 width="16" height="11" hspace="2" border="%(badwiki)d"
-alt="[%(wikitag)s]"></a><a title="%(wikitag)s" href="%(wikiurl)s%(wikitail)s">%(text)s</a>''' % {
+alt="[%(wikitag)s]"></a><a title="%(wikitag)s" href="%(href)s">%(text)s</a>''' % {
             'wikiurl': wikiurl,
             'prefix': config.url_prefix,
             'badwiki': wikitag == "BadWikiTag",
             'wikitag': wikitag,
-            'wikitail': urllib.unquote(wikitail), #for file:///c:/한글
+            'href': urllib.unquote(href), #for file:///c:/한글
             'text': self.highlight_text(text),
         }

diff -ru tmp/MoinMoin.orig/wikimacro.py MoinMoin/wikimacro.py
--- tmp/MoinMoin.orig/wikimacro.py      Mon Oct 15 13:56:36 2001
+++ MoinMoin/wikimacro.py       Sun Feb 23 19:09:20 2003
@@ -176,8 +176,12 @@
         list = wikiutil._interwiki_list.items()
         list.sort()
         for tag, url in list:
-            buf.write('<tr><td><tt><a href="%sRecentChanges">%s</a>&nbsp;&nbsp;</tt></td>' % (url, tag))
-            buf.write('<td><tt><a href="%s">%s</a></tt></td>' % (url, url))
+            buf.write('<tr><td><tt><a href="%s">%s</a>&nbsp;&nbsp;</tt></td>' % (
+                wikiutil.join_wiki(url, 'RecentChanges'), tag))
+            if string.find(url, '$PAGE') == -1:
+                buf.write('<td><tt><a href="%s">%s</a></tt></td>' % (url, url))
+            else:
+                buf.write('<td><tt>%s</tt></td>' % url)
             buf.write('</tr>\n')
         buf.write('</table>')

diff -ru tmp/MoinMoin.orig/wikiutil.py MoinMoin/wikiutil.py
--- tmp/MoinMoin.orig/wikiutil.py       Thu Jan 31 02:45:52 2002
+++ MoinMoin/wikiutil.py        Sun Feb 23 18:57:04 2003
@@ -41,6 +41,13 @@
     return '<img hspace="0" width="%d" height="%d" src="%s/img/%s">' % (
         w, h, config.url_prefix, img)

+def join_wiki(wikiurl, wikitail):
+    """ add a page name to an interwiki url
+    """
+    if string.find(wikiurl, '$PAGE') == -1:
+        return wikiurl + wikitail
+    else:
+        return string.replace(wikiurl, '$PAGE', wikitail)

 #############################################################################
 ### Quoting

1.15. OrphanedPages 오동작 문제

OrphanedPages가 에러를 냅니다.

2. 처리한 것


[http]diff 내용을 copy/paste 할 수 있게
  • 해결 : wikiaction.py 224라인을 sys.stdout.write(eachline +'\n')으로 바꿔줌.
  • 비고 : 불필요하게 \n 이 들어갈때도 있다.


UploadFile명령을 눌렀더니 하양 바탕에 Unknown action이라고만 나옵니다.
  • 해결 : dospath 모듈이 deprecated되고 제거되었음. 대신 ntpath를 쓰도록 조치했음.


diff를 표시하는 HTML 문제

  1. Firebird에서 제대로 안 나옴
    해결 : span 을 p 로 바꾼다.
  2. 1번을 해결하면, 바뀐 부분 연두색줄안의 글 윗부분의 글씨들은 작게 나오고 그 이하는 크게 나오는 문제가 생김.
    해결 : DOCTYPE 수정 - <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> 으로 바꿔준다.(기존에 있던 "http://www.w3.org/TR/html4/loose.dtd"를 제거) see also http://richardinfo.com/case_studies/doctypes.html


기본 css에서는 RecentChanges와 본문의 글자 크기가 서로 다릅니다. RecentChanges의 글자 크기는 small로 지정되어 있는 반면, 본문의 글자 크기는 지정이 안되어 있습니다. 브라우저나 doctype 선언에 따라 small의 글자크기는 바뀝니다만, 이 부분은 일단 차치하고, RecentChanges와 본문 글자 크기를 동일하도록 css를 수정하는 것이 선결이라고 생각합니다. 그렇게 하면 span 태그를 p 태그로 변경해도 글자크기의 문제가 일어나지 않을 것입니다. 이 문제가 아니더라도 저는 두 경우의 글자 크기를 같게 하는 것이 좋다고 생각합니다. 또 diff시 wrap문제는 스타일시트의 white-space: pre; white-space: pre-wrap; 으로 변경해도 해결이 됩니다만 그것과는 별개로 span은 p로 바꾸는 것이 좋다고 생각합니다.

span 태그에서 white-space: pre;를 지정해주었기 때문에 그렇습니다. white-space: pre;는 html을 처리할 때 여러 공백을 하나의 공백으로 합치지 않도록 지정합니다. 줄이 바뀌는 경우는 한정되어 있는데, 줄바꿈 태그를 쓰거나 소스에서 줄바꿈을 하는 것입니다. 하지만 블록 안에서 글이 넘친다고 해서 자동으로 줄바꿈(wrap)이 되지는 않습니다. 반면 white-space: pre-wrap;은 블록 안에서 필요하면 줄이 바뀌도록 되어 있습니다. 따라서 Firebird에서 문제가 된다기보다는 InternetExplorer가 부정확하게 보여주는 것을 기준으로 html이 만들어져 문제가 되고 있다고 표현해야 정확할 것입니다.

그리고 span과 p를 쓰는데 결과가 달라지는 것에 대해 적겠습니다. span 안에는 인라인 요소만 들어갈 수 있습니다. (현재 diff의 html을 보면 페이지 내용을 표시하는데 span을 쓰고 그 안에서 글에 색칠할 때에는 div를 쓰고 있습니다) 따라서 span 안에 블록레벨의 div가 들어가는 것은 잘못된 문법입니다. 때문에 div가 무시되어 줄바꿈이 일어나지 않습니다. 그 결과 글이 화면 길이를 뚫고 나가게 됩니다. 그러나 span 대신 블록레벨의 p 태그를 쓰면 옳은 문법이고, div에는 white-space: pre;가 지정되어 있지 않으므로 div에 맞춰 글자가 자동으로 줄바꿈이 됩니다. 따라서 색칠된 글자가 페이지 길이를 뚫는 일이 없습니다. 하지만 이는 완전한 해결책이 아닌데, div 안의 색칠된 글자가 아닌 바깥쪽의 일반 글자는 span이냐 p냐에 관계없이 white-space: pre;의 적용을 받기 때문입니다. --DaNew

해결법 정리:
  1. <span class="preformat">diff내용</span> (->) <p class="preformat">diff내용</p> ( (<-) /!\ 이렇게 변경하는 것이 옳으나, diff 를 표시하는 HTML 문제에 대한 완전한 해결책은 아님)
  2. doctype을 <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> 로 수정
  3. css에서 기본 글자 크기 지정
  4. css의 white-space: pre; white-space: pre-wrap; 으로 수정

그럼 수고 부탁드립니다 --DaNew



유니코드 관련 패치.

parser/wiki.py Parser 클래스에 메소드 추가.
    def _ent_numeric_repl(self, word):
        """Handle numeric SGML entities."""
        return self.formatter.rawHTML(word)
Parser.format 메쏘드에 추가.
        if config.allow_numeric_entities:
            rules = r'(?P<ent_numeric>&#\d{1,5};)|' + rules

MoinMoin/formatter/base.py에 메소드 추가.
    def rawHTML(self, markup):
        return markup

moin_config.py 에 allow_numeric_entities=1 추가.


삭제된 페이지의 이름을 변경하려는 경우 에러 메시지 출력.


UserPreferences에서 로그인할때 쓰는 필명을 이제는 대소문자 구분합니다.


QuoteFortuneMacro에 쓰인 페이지에 MultipleLineCell 부호가 하나도 없는 경우 오류가 발생하는 것 수정( There are no matches. 라는 메세지를 표시하게 바꿈)


이상한 문자가 들어있을 경우 유니코드 관련 에러가 발생해서 unicode(s,"korean.cp949","ignore")로 무시하도록 변경.


페이지 저장할때, "Remove trailing whitespace from each line" 체크 박스는 나타나지 않게하고 기본적으로 끝에 남는 빈칸은 없애도록 수정함.


Kiwirian 문제 때문에 필명차단 기능 추가.


페이지 링크 캐시와 관련해서 문제 발생 : bsddb 파일이 아무런 메시지 없이 열리지 않고 hang(?)에 빠짐.

대처 : caching.py를 caching.withoutdb.py로 교체. 교체하면서, Page.py의 314번째 줄 고침.
cache.update(links) #FIXED from string.join(links, '\n'), using shelve
이 부분을 string.join(links, '\n')으로 바꿈.


DeletePage필명차단이 적용되지 않은 것을 발견하여 수정.


잦은 위키 스팸으로 인해, 임시방편으로 Page.py의 save_text 함수에 다음 코드 추가.
        if newtext.find('1816. net') != -1:
            msg = "Prohibited Strings"
1816. 뒤에 공백은 임시로 붙였음. 페이지에 텍스트에 저 문자열이 있으면 저장하지 않는다.



lovol.net이 2005년 1.2. 현재 접속이 되지 않고 있습니다.
조치를 취하여 주셨으면 감사하겠습니다. --CyberLaw
오후 2시 현재 해결됐습니다. --PuzzletChung


----

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