The TODO list for MoinMoin is on MoinMoinTodo. You are encouraged to add wishes and ideas to MoinMoinIdeas.

http://moinmoin.wikiwikiweb.de/

Links:

BioinfoWiki uses it (MoinMoin 1.0 --> NoSmokeMoinMoin --> NoSmokeMoinMoinBsn --> MoinMoinOnScgi --> MoinMoin 1.3.4)

MoinMoin 1.3 new features

1.3버젼으로 들어오면서, 많은 부분이 바뀌게되었다. 관리자 측면에서의 변화들

  1. 각 페이지들의 저장을 파일이 아닌 디렉토리에 한다. 해당 디렉토리안에 첨부파일 및 변화로그등이 기록된다. See HelpOnActions/AttachFile

  2. 페이지는 시스템 페이지와 일반 페이지로 나뉜다. 같은이름일 경우 일반페이지가 사용된다.
  3. 성능향상을 위한 다양한 서버실행옵션이 있다. (Standalone, FastCgi, ModPython, Twisted)

  4. config에 farm이라는 개념이 도입되어, multi wiki를 운영하기 용이하다.
  5. 테마 지원
  6. 위키별 페이지별 사용자별 다양한 편집권한. SeeAlso HelpOnAccessControlLists

  7. 다국어지원 강화

사용자측면에서의 변화들

  1. 새로운 기능들
  2. 매크로의 변화
  3. HierarchicalWikiWiki의 링크형식 변화

  4. 다양하고, 개선된 action들.
    • 다양한 formatter : xml/docbook, text/xml, text/python, text/html, dom/xml
    • 각 페이지를 DocBook 포맷으로 보기 : 이 페이지 예제

그외의 추가적인 변화

  1. CalendarParser

  2. BarChartParser

  3. DiffParser

  4. GraphVizParser

사용 팁

NoSmokeMoinMoin을 모인모인1.3으로 옮기기

스크립트를 이용한 페이지저장방식변경 ([EncodingConverter.py]이용)

   1 class WikiConverter:
   2     def __init__(self, idir, odir):
   3         os.mkdir(odir)
   4         errlog = file('errlog','w')
   5         ec = EcConverter('euc-kr','utf-8')
   6         for fname in os.listdir(idir):
   7             print fname+'...'
   8             new_fname = fname.replace('_2f','(2f)')
   9             new_fname = new_fname.replace('_2e','(2e)')
  10             new_fname = new_fname.replace('_2d','(2d)')
  11             try:
  12                 converted = ec.convert(
  13                         file(os.path.join(idir, fname)).read())
  14             except UnicodeDecodeError, e:
  15                 errlog.write('%s : %s\n'%(fname, e))
  16                 continue
  17             os.makedirs(os.path.join(odir, new_fname, 'revisions'))
  18             ofile = file(os.path.join(
  19                     odir, new_fname, 'revisions', '00000001'),'w')
  20             ofile.write(converted)
  21             cfile = file(os.path.join(odir, new_fname, 'current'),'w')
  22             cfile.write('00000001')

NoSmokeMoinMoin에서 추가적으로 지원하는 위키문법이 있다. []으로 링크를 거는것과 글박스. 아래의 내용은 parser/wiki.py를 diff로 차이점을 본것.

   1 114d113
   2 <         self.in_box = 0 # by yong27
   3 178,184c177
   4 <
   5 <         # when euc-kr  by yong27
   6 <         if wikitag in ('NoSmoke','GnomeKr',):
   7 <             import urllib
   8 <             wikitail = urllib.quote(unicode(text).encode('euc-kr'))
   9 <         ####
  10 ---
  11 438,439c432
  12 <         #wikiname = word[2:-2] #by yong27
  13 <         wikiname = word[1:-1].replace('"','')
  14 ---
  15 >         wikiname = word[2:-2]
  16 861,871d853
  17 <     def _box_repl(self, word):
  18 <         """Handle box displays."""
  19 <         word = word.strip()
  20 <         if word == '{{|' and not self.in_box:
  21 <             self.in_box = 1
  22 <             return '<table class="box"><tr class="box"><td class="box">'
  23 <         elif word == '|}}' and self.in_box:
  24 <             self.in_box = 0
  25 <             return "</td></tr></table>"
  26 <         return word
  27 <
  28 976,978c958
  29 <             #rules = rules + ur'|(?P<wikiname_bracket>\[".*?"\])' #by yong27
  30 <             rules = rules + ur'|(?P<wikiname_bracket>\[.*?\])'
  31 <             rules = rules + ur'|(?P<box>(\{\{\||\|\}\}))'
  32 ---
  33 >             rules = rules + ur'|(?P<wikiname_bracket>\[".*?"\])'

178줄 세팅은 euc-kr URL만 처리하는 쓰는 InterWiki와의 링크를 위한 것이다.

다음으로, TeXGnuPlotInMoinMoin을 위한 파서를 추가한다. latex은 WkPark 님이 처음 이전버전으로 만든것을 1.34용으로 바꾼것이 ParserMarket 에 있다. gnuplot은 WkPark 님 소스를 참고하여, 본인이 직접 바꿨다. gnuplot.py

속도향상

CGIFastCgi나 그리 차이나지 않은 듯하다. 페이지 저장시 너무 오래걸린다면, 다음처럼 logfile/editlog.py 의 gethostbyaddr을 막아본다.

   1             #try:
   2             #    hostname = socket.gethostbyaddr(host)[0]
   3             #except socket.error:
   4             #    hostname = host
   5             hostname = host
  • 1.5.4 부터는 wikiconfig.py 에 다음 라인을 추가하는것으로 대체할 수 있다.
    log_reverse_dns_lookups = False

ModPython으로 돌리면, 약8배의 속도향상이 있다.

사용자 삭제

# cd labkm/XXX/user
# grep USERNAME * -rn
# rm XXXXXX.XXX
# cd labkm/XXX/cache/user
# python
>>> import pickle
>>> d = pickle.load(open('name2id'))
>>> d.pop('USERNAME')
>>> pickle.dump(d, open('name2id','w'))
# /etc/init.d/apache2 reload

버전별 History

MoinMoin 1.5

주요 변화들

  • WYSIWYG 에디터 포함 및 그로 인한 페이지 편집방식의 단순화
  • AutoAdmin 보안정책으로 사용자들이 특정 페이지에 대하여 admin권한을 가질 수 있도록 함

  • The new authentication system allows to add short methods that check the credentials of the user. This allowed us to add eGroupware single sign on support.
  • Separation of homepages into a separate wiki (in a farm) and having a single user database is supported.
  • A DeSpam action to allow mass-reverting of spam attacks.

  • PackageInstaller support for simplified installation of plugins, themes and page bundles.

관련정보는 MoinMoinRelease1.5/CHANGES 참고

MoinMoin 1.5.3

BioHackersNet의 MoinMoin 업그레이드시 참고사항

  • /usr/share/moin/server/moin.cgi 에서 config경로설정
  • underlay 퍼미션조정
  • wiki.py 파서수정
  • logfile/editlog.py 에서 gethostbyaddr 주석처리

이곳 맞춤형 wiki.py 파서를 원래 파서와 비교하면,

   1 root@bhn:/ysd/moin/bhn/plugin/parser# diff /usr/lib/python2.4/site-packages/MoinMoin/parser/wiki.py wiki.py
   2 90c90,91
   3 < (?P<wikiname_bracket>\[".*?"\])
   4 ---
   5 > (?P<wikiname_bracket>\[.*?\])
   6 > (?P<box>(\{\{\||\|\}\}))
   7 126a128
   8 >         self.in_box = 0 # added by yong27
   9 394c396,397
  10 <         wikiname = word[2:-2]
  11 ---
  12 >         #wikiname = word[2:-2]
  13 >         wikiname = word[1:-1].replace('"','') #added by yong27
  14 814a818,829
  15 >     def _box_repl(self, word):  # added by yong27
  16 >         """Handle box displays."""
  17 >         word = word.strip()
  18 >         if word == '{{|' and not self.in_box:
  19 >             self.in_box = 1
  20 >             #return '<table class="box"><tr><td class="box">'
  21 >             return '<div class="box">'
  22 >         elif word == '|}}' and self.in_box:
  23 >             self.in_box = 0
  24 >             #return "</td></tr></table>"
  25 >             return "</div>"
  26 >         return word

MoinMoin 1.5.4

새로 바뀐사항들 (SeeAlso MoinMoinRelease1.5/CHANGES

  1. 각종 버그 수정 : GUI editor, 사용자이름에 "-"추가가능, MonthCalendarMacro non-ASCII PageName버그 해결, ModPython 첨부 업로드 버그 해결. ImageLinkMacro 업데이트

  2. EmbedObjectMacro 추가

  3. sitemap 액션에 몇몇 시스템 페이지 생략
  4. thread_monitor 액션 추가
  5. I18n 번역 추가

  6. 입력 필드를 80에서 200으로 확장
  7. SourceCodeControlSystem 으로 Mercurial사용 SeeAlso MoinDev/MercurialGuide

버그로 보여지는 현상 발생 : 로그인기능과 브라우저캐시에 이상이 있다. 로그인하지 않은 상태에서 최근바뀜등의 몇몇페이지들을 본 이후, 로그인한 뒤, 그 페이지에 다시 가면 로그아웃되어있다. F5를 눌러 새로고침하면 되긴 하지만, 전 버전에서는 항상 로그인상태의 페이지가 나타났었다. 점검해본 결과, ModPython으로 돌릴때만 이런 현상이. -- yong27 2006-07-15 15:42:53

MoinMoin 1.5.5a

주요 변화들 (SeeAlso MoinMoinRelease1.5/CHANGES

  1. 로그인기능과 브라우저캐시 오류 수정되다.
  2. IE에서 첨부파일 보기 기능 오류 수정
  3. edit_ticketing 기능
  4. EmbedObjectMacro 기능 향상

  5. POSIX플랫폼에서 IO 기능 향상

MoinMoin 1.5.6

주요 변화들 (SeeAlso MoinMoinRelease1.5/CHANGES

  1. 첨부파일 타 페이지로 이동기능
  2. 첨부파일로의 링크지원
  3. Attachlist 매크로 기능 향상 (페이지이름과, mimetype을 인수로)

MoinMoin 1.5.7

주요 변화들 (SeeAlso MoinMoinRelease1.5/CHANGES

  1. url_prefix_local 추가됨. 그동안 css, img 등 경로설정에 문제가 있었음
  2. EditTemplates, LikePages macro 성능개선

  3. attachment 시 덮어쓰기 가능

MoinMoin 1.5.8

주요 변화들 (SeeAlso MoinMoinRelease1.5/CHANGES

  1. timing.log 추가 (cfg.log_timing=True)
  2. Added support for ircs, webcal, xmpp, ed2k and rootz protocols
  3. TrackBack show

MoinMoin 1.9 부터 발견된 이슈들

없는 페이지 디렉토리 생성 문제

"없는페이지?action=edit" URL을 날리는 것만으로도 페이지 디렉토리를 생성하는 버그가 있음. http://moinmo.in/MoinMoinBugs/NotExistPageEditActionMakesPageDirectory 에 보고하긴 했는데, 어찌 처리되는지... 그나저나 아래 명령으로 불필요 디렉토리들을 삭제할 수 있음

moin maint cleanpage > a.sh
sh a.sh

-- yong27 2013-03-29 14:39:30


첨부 압축파일 자동 해제 막기

파일첨부시 파일이 압축파일이면(zipfile.is_zipfile) 자동으로 압축을 풀어서 첨부 목록에 표시하는 기능(unzip)이 있는데, 이게 doc 파일인데 docx 확장자로 올렸다던가 등의 문제가 있을 때 에러가 나는 경우가 있다.

BadZipfile, "Bad magic number for central directory"

설정파일에 이 기능을 안쓰는 옵션이 있을 것 같은데 없네. 아예 막어놓고 싶음. 본 기능은 action/AttachFile.py 에 존재한다. 직접 소스를 고치기 보다는 사용자 플러그인 디렉토리에 복사해서 수정해 쓸 수 있다. import zipfile 이후 다음 한줄 추가.

   1 import zipfile
   2 zipfile.is_zipfile = lambda x: False

-- yong27 2013-04-23 11:02:30


CategoryWikiWiki CategoryMoinMoin CategoryProgram

MoinMoin (last edited 2013-04-23 11:22:16 by 61)

web biohackers.net