노스모크의 기술적인 문제에 대한 제안과 문의를 하는 곳입니다.
1.1. IsbnMacro에서 책표지 이미지가 안보이는 경우가 꽤 많아졌어요. ¶
이 문제는 사실 오래 전부터 보았던 것이지만 그 빈도를 주의 깊게 관찰해 보았습니다. 그런데 요즘은 참기가 짜증날 정도로 문제의 빈도가 잦아졌습니다. 그래서 오늘(2005.7.29) 문제 해결 요청을 접수하게 되었습니다.
알라딘에서 책 표지의 이미지 이름이 맑은이 보는 범위에서는 많은 경우가 {isbn_숫자.gif}의 형태로 되어 있습니다. 그래서 이미지 옵션을 쓰는 경우, 즉 noimg 마크를 부착하지 않은 경우들에서, 이미지가 보여야 하는데 보이지 않습니다.
"Isbn.gif 와 isbn_숫자.gif 등의 이름을 갖는 책표지 이미지가 모두 보이게 할 수는 없을까요?"
지금 노스모크삼차이전 진행 문제로 바쁘실 것 같아서, 이곳에 메모를 해 둡니다. 이사 간 뒤에 되도록이면 빨리 이 문제를 해결해 주셨으면 해요. 고맙습니다.--맑은
1.4. UploadFile 관련 문제 ¶
외부의 파일이 UploadFile로 올라올 때도 페이지처럼 최근변경 상황이 모니터 되었으면 좋겠습니다. 노스모크가 가지고 있기에 부담스러운 내용을 담고 있는 파일들이 올라오는 경우가 있습니다. 알 수 없는 기업정보, 알 수 없는 영업정보, 알 수 없는 개인정보 기타등등. --맑은
좋은 제안이네요. diff까지는 모르겠는데, 업로드되었다는 표시만이라면 어렵지 않을 것 같습니다. --희상
가능하다는 부분만이라도 어여어여 맹글어 주시면 고맙지요. --맑은
업로드를 하면, 바뀐글에 UploadFile이 표시됩니다. 어느 파일이 업로드 됐는지는 diff로 알 수 없지만, 파일 목록의 맨 위에 나타나니까 금방 찾을 수 있을 것 같네요. --희상테스트 해 봤는데 느낌이 좀 이~상한 걸요. (아무튼 오늘은 요기까지) --맑은
예, 이상하긴 하죠. 실은 http://zeropage.org/wiki/ZeroPageServer 의 일반게시판 업데이트 표시 기능을 베낀 것인데, 다른 부분 손 안 대고 두어줄 추가하는 걸로 해결이 되서 택했습니다(그걸로 충분하지 않은가 싶어서). --희상
UploadFile을 RecentChanges에 보이게 했잖아요. 그것 대신에 제가 방금 테스트용으로 만든 UploadedFiles가 RecentChanges에 보이게 하면 어떨까요? 보면 알겠지만 UploadFile에서 그저 단순히 위쪽의 안내문만 빠진 겁니다. --맑은
UploadFile의 마지막 줄을 수정해 보았습니다. 봐주세요. 문제가 있으면 원래대로 돌려주고요. --맑은
그렇게 해도 되겠네요. 일단 그렇게 하겠습니다. 저는, 파일 목록을 동적으로 생성하는 UploadedFile 매크로를 빼고, 파일 목록을 정적으로 위키 페이지의 하나로 생성하게 하면, diff로 추가/삭제 내역이 보일 수 있겠다는 생각을 했는데, 몇 군데 손대야할 것 같아서 영감이 떠오르길 기다리고 있었거든요(;;). --희상
약간 수정해서 diff로도 보일 수 있게 해봤습니다. 어지러운 태그는 어쩔 수 없네요. 이걸 채택하게 되면, UploadedFiles 매크로는 빼려고 합니다. --희상
이대로는 관리부담이 좀 커 보입니다. 페이지를 열었을 때 제일 위로 가도 안보이고 제일 아래로 가도 안보입니다. 무엇이? 변경 사항이. 그래서 &[&Uploaded''''''Files(업로드된 파일들)&&] 이것을 활용할 방법이 없을까요? 그 내용만을 포함하는 별도의 페이지를 하나 따로 만든다던가 기타등등. 원하는 바는 ShowText했을 때에 "제일 위에서 변경사항이 보여진다면" 이지요. 요리조리 좀만 더 궁리해 보면 안될까요? --맑은
가장 최근에 올린 파일은 파일 목록 맨 위에 나오지 않나요? --희상 파일 목록 맨 위에 나옵니다. --맑은UploadFile을 RecentChanges에 보이게 했잖아요. 그것 대신에 제가 방금 테스트용으로 만든 UploadedFiles가 RecentChanges에 보이게 하면 어떨까요? 보면 알겠지만 UploadFile에서 그저 단순히 위쪽의 안내문만 빠진 겁니다. --맑은
UploadFile의 마지막 줄을 수정해 보았습니다. 봐주세요. 문제가 있으면 원래대로 돌려주고요. --맑은
그렇게 해도 되겠네요. 일단 그렇게 하겠습니다. 저는, 파일 목록을 동적으로 생성하는 UploadedFile 매크로를 빼고, 파일 목록을 정적으로 위키 페이지의 하나로 생성하게 하면, diff로 추가/삭제 내역이 보일 수 있겠다는 생각을 했는데, 몇 군데 손대야할 것 같아서 영감이 떠오르길 기다리고 있었거든요(;;). --희상
약간 수정해서 diff로도 보일 수 있게 해봤습니다. 어지러운 태그는 어쩔 수 없네요. 이걸 채택하게 되면, UploadedFiles 매크로는 빼려고 합니다. --희상
짝짝짝. 훌륭합니다. 고생하셨어요. &맑은&이는 그 방향으로 가는데 동의한표를 던집니다. 자, 마지막으로 영감탱이 한 분만 더 불러주세요. DIFF에서 보여진 그 어지럼뱅뱅은 ShowText하면 깨끗한 모습으로 보여지게 될 거죠? 아, 참, 희상님이 앞서 말하길, 영감을 기다린다기에... 그 영감 말인데, 희상님께는 영감이겠지만 &맑은&이에겐 치가 떨리는 영감탱이인지라, 정말이지 요번 만남이 마지막 영감탱이였으면 정말 좋겠습니다. --맑은
그거, 지금도 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: 문법이 쓰입니다. --고무신
참, 각주기능 봤는데요, 원문의 가독성이 너무 떨어져요 ... --맑은DeleteMe 각주기능은 모인모인 1.0 이후로 있는 기능입니다. [1]를 쓰죠. 그걸 단순히
어? 그럼 지금 확장한 것이
음, MoniWiki에서 확장된 각주기능을 써 보고 왔는데요, 넘 좋아요.:D 노스모크에서도 쓸 수 있게 안 되나요? --맑은
[* 어쩌구 저쩌구]
문법을 쓰도록 확장한것입니다. --고무신어? 그럼 지금 확장한 것이
[* 어쩌구 저쩌구]
라고 쓰면 끄트머리에 가서 주석이 보여진다 이 말이지요? [어쩌구 저쩌구]
가 가진 가독성을 그대로 갖는 것 아닌가요? 엄청 좋다는 얘기입니다. 히히, 지금 노스모크에서는 써 볼 수가 없나요? --맑은 또 모인모인 버전이 어쩌구 할까봐 노스모크에서 헛 짓 한 번 해 보고 난 뒤 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
1.6. Rename Action 관련 ¶
HelloWorld
라는 페이지의 이름을 바꾸면, 그 페이지이름을 포함하고 있는 다른 페이지 이름(ex. SomeWaysToSayHelloWorld
)에 대한 링크들도 바뀐다. 또한, 인터위키 링크의 이름이 바꾸려는 페이지이름을 포함하고 있다면 그것 역시 변경된다.페이지 이름 바꾸기 | 부작용 |
HelloWorld (->) Hell | SomeWaysToSayHelloWorld (->) SomeWaysToSay[Hell] |
HelloWorld (->) HellWorld | SomeWaysToSayHelloWorld (->) ? |
첫번째 예에서 양괄호(&&)가 들어간 이유는 바뀐 뒤의 이름인 'Hell'이 WikiName이 아니기 때문인 듯하다.
이런 문제점은 영문으로만 이루어진 WikiName에서만 발생하는 것 같다.
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 태그가 깨지지 않도록(<으로 열고 >으로 닫는 것이 깨지지 않도록) 삽입하면 문제가 발생하지 않을 것 같습니다.
- 한 줄로 이어서 쓰거나,
[[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>)]]
- 각 줄마다 쓰되 태그가 깨지지 않도록,
[[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>)]]
- 사실 embed 때문이라면 군더더기 빼고 이것만 넣어도 됩니다(브라우저 호환성이 떨어지려나요?)
[[HTML(<embed src="http://www.president.go.kr/warp/kr/visit/museum/expresident/president.swf" width="99%" height="200"> </embed> )]]
아래 코드를 보면 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.노스모크계정관리자/문제해결요청"가 서로 다르게 보입니다. 1번에서는 태그만 보이고 그림이 안보입니다. 2번에서는 태그가 안보이고 그림만 보이고요. 다른 분들은 어떤지요? 2번에서 브라우저의 특성이 발현되도록 만들어진 노스모크 운영 프로그램 상의 어떤 이유가 있어 걸까요? 확인 부탁드립니다. (물론, 추측) --맑은
역링크 등을 비롯한 검색 기능에서 인접한 단락이 다닥다닥 붙어 보이던 문제가 해결된 모양입니다. 언제 고쳐진 걸까요? 아무튼 참말로, 참말로, 고맙습니다. 그 동안은 페이지를 찾기 위한 검색이었고 그 길을 따라서는 읽기까지는 곤란했었던 바 개인적으로는 그 검색기능이 찬밥신세를 면치 못했었는데, 이제는 그것이 손에 가깝고 시간을 벌어주는 참말로 쓸모있는 연장이 될 겁니다. 마지막 다듬질이 되길 바랍니다. 좋아라 하며 보다 보니까 옥에 티가 하나 끼었더군요. MultipleLineCell 밖에 있는 인접 단락에는 문제가 없는데, 그 안에 있는 인접 단락은 무조건 다닥다닥 붙었습니다. 이걸 보고 나니 바로 위의 문제도 이와 비슷한 논리가 아닐까 하는 생각이 휘리릭. --맑은 / 도망갈 이유가 있었군요. '무조건 다닥다닥' 붙는게 아녀유. 무슨 놈의 코끼리가 이리도 종잡을 수가 없는거야, 악! --맑은 / 정상 예문과
이상 예문을 몇 개 골라 놓았습니다. --맑은
이상 예문을 몇 개 골라 놓았습니다. --맑은
정상 예문(1)
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
정상 예문(2)
{{|
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
|}}정상 예문(3)
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
{{|엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!|}}
{{|엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!|}}
정상 예문은 노스모크계정관리자/문제해결요청을 눌러 보면 바로 위의 예문의 모양이 지금 보고 있는 모양과 같습니다. 안 붙었다, 이거죠.
(참고) 정상 예문은 아래에 나열된 이상 예문들과 비교될만하다 싶어 넣어 둔 것이니 "정상적인 걸 뭐 할라고 써 놓았느냐"고 타박하지는 말아주세요. (도움될 지 여부는 미지수 ) 미지수는 지수와 무슨 관계일까?
이상 예문 (1)
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
이상 예문(2)
{{|
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
|}}
아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
|}}
이상 예문(3)
- 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
이상 예문(4)
- 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
- 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
엄마 : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
이상 예문(5)
- 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
'''엄마''' : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
- 아가 : 엄마, 엄마. 보통 사람들은 잡식성이면서도 왜 그토록 고기를 좋아하는 걸까?
'''엄마''' : 남의 살은 죽도록 좋아하면서 자기 살은 조금만 건드려도 쌩 지랄한다니깐!
이상 예문은 노스모크계정관리자/문제해결요청을 눌러 보면 바로 위의 예문의 모양이 지금 보고 있는 모양과 다릅니다. 붙었다, 이거죠.
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. 파싱을 어떻게 하는지 보려고 코드 들여다보다가 줄 맨 앞의 ## 이 한 줄 주석처리 역할을 한다는 걸 발견했네요. 의외의 소득(?)
ps. 파싱을 어떻게 하는지 보려고 코드 들여다보다가 줄 맨 앞의 ## 이 한 줄 주석처리 역할을 한다는 걸 발견했네요. 의외의 소득(?)
이 문제와 관련하여 메모 하나 남겨 둡니다. --맑은
원하는 것 | 'Text' |
시도해 본 것들 | Text |
' '''Text | |
' Text ' |
1.13. action=raw ¶
임시 요약 -
action=raw로 페이지를 보려고 할때, 페이지 내용에 img 태그가 들어있는 경우, MIME 정보를 제대로 보내줘도 IE에서는 MIME을 무시하기 때문에 raw text로 보이질 않는다. IE외의 브라우저에서는 이상없다.
가능한 해결책
- 사용자가 action=raw 상태에서 소스보기를 한다.
- 계정관리자가 action=raw를 아예 새로 코딩한다.
1.14. InterMap ¶
모인모인 0.9기반의 노스모크는 이게 원래 되지 않는데, 그 상위버전은 되는 모인모인 InterMap의 문법입니다 (MeatballWiki에서도 이와 비슷한 방식을 씁니다) 이게 되면 MathWorld와 같은 MetaWiki를 InterWiki로 사용할 수 있으며, 인코딩이 서로 다른 위키간 InterWiki연결로도 유용하게 사용할 수 있습니다. --고무신
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> </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> </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
2. 처리한 것 ¶
diff 내용을 copy/paste 할 수 있게
- 해결 : wikiaction.py 224라인을
sys.stdout.write(eachline +'\n')
으로 바꿔줌.
- 비고 : 불필요하게 \n 이 들어갈때도 있다.
UploadFile명령을 눌렀더니 하양 바탕에 Unknown action이라고만 나옵니다.
- 해결 : dospath 모듈이 deprecated되고 제거되었음. 대신 ntpath를 쓰도록 조치했음.
diff를 표시하는 HTML 문제
- Firebird에서 제대로 안 나옴
해결 : span 을 p 로 바꾼다.
- 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
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해결법 정리:
<span class="preformat">diff내용</span>
(->)<p class="preformat">diff내용</p>
( (<-) 이렇게 변경하는 것이 옳으나, diff 를 표시하는 HTML 문제에 대한 완전한 해결책은 아님)
- doctype을
<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">
로 수정
- css에서 기본 글자 크기 지정
- css의
white-space: pre;
를white-space: pre-wrap;
으로 수정
유니코드 관련 패치.
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 추가.
삭제된 페이지의 이름을 변경하려는 경우 에러 메시지 출력.
QuoteFortuneMacro에 쓰인 페이지에 MultipleLineCell 부호가 하나도 없는 경우 오류가 발생하는 것 수정( There are no matches. 라는 메세지를 표시하게 바꿈)
이상한 문자가 들어있을 경우 유니코드 관련 에러가 발생해서
unicode(s,"korean.cp949","ignore")
로 무시하도록 변경.페이지 저장할때, "Remove trailing whitespace from each line" 체크 박스는 나타나지 않게하고 기본적으로 끝에 남는 빈칸은 없애도록 수정함.
페이지 링크 캐시와 관련해서 문제 발생 : 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')
으로 바꿈.잦은 위키 스팸으로 인해, 임시방편으로 Page.py의 save_text 함수에 다음 코드 추가.
if newtext.find('1816. net') != -1: msg = "Prohibited Strings"1816. 뒤에 공백은 임시로 붙였음. 페이지에 텍스트에 저 문자열이 있으면 저장하지 않는다.
lovol.net이 2005년 1.2. 현재 접속이 되지 않고 있습니다.
조치를 취하여 주셨으면 감사하겠습니다. --CyberLaw
조치를 취하여 주셨으면 감사하겠습니다. --CyberLaw
오후 2시 현재 해결됐습니다. --PuzzletChung
----
- [1] blah blah