/gowiki

Primary LanguageHTML

아직 실행하지 마세요.

기본 기능들은 작동하게 해놨지만, MongoDB 설정이 필요합니다. 여기에는 기본 페이지들이 포함됩니다. 따라서 실행을 하더라도, 사용할 수는 없을 겁니다. MongoDB에 기본 페이지, go 개발환경까지를 올려서 도커 이미지를 만드는 중입니다.

Makefile도 깔끔하지 않습니다. main 애플리케이션은 컴파일하고 있지만, plugin은 수동으로 컴파일 하고 있습니다. Makefile도 정리해야 겠네요.

위 두가지가 완성돼야 개발을 하든 테스트를 하던 하는 수준이 될 것 같습니다. 지금은 전반적인 윤곽을 확인 할 수 있는 정도 입니다.

gowiki

Joinc wiki 관리 목적으로 만든 wiki 시스템이다. joinc wiki는 3번 재 작성됐다.

  1. PHP 기반의 Moniwiki로 시작했다. 2002년부터 2014년 까지 12년 가까이 사용했다.
  2. Moniwiki는 파일 기반으로 관리와 확장이 까다롭다. Go 언어로 다시 만들었다. 지금 운용중인 joinc 사이트의 엔진이다.
  3. 2016년 12월 부터 다시 만들고 있다. gowiki의 핵심은 plugin의 지원인데, 1.8이 plugin을 정식지원하면서 기존의 시스템을 갈아 엎고 싶었기 때문이다. 코드도 좀 정리할 겸

데이터베이스

MongoDB를 사용한다.

Wiki 엔진

Moniwiki의 문법을 기본으로 하고 있다. Moniwiki는 엄청나게 많은, 그렇지만 대부분 쓸데없는 기능들을지원한다. 필요없는 것들을 다 버리고 10개내외의 문법만 지원한다. wiki 엔진의 모습은 http://www.joinc.co.kr 를 보면 대략 어떤 느낌인지 확인 할 수 있다.

Plugin 시스템

go1.8에 추가된 plugin 시스템을 이용해서 만들고 있다. 컴파일 없이, 플러그인을 실행하는게 목표다. 일단 잘 작동하는 걸 확인했고, 기존에 사용하던 플러그인 모듈을 새로운 플러그인 환경에 맞게 수정하는 작업을 하고 있다.

예컨데 https://www.joinc.co.kr/w/GoLang/example/helloworld 의 코드 실행기나, 목차, 로그인/로그아웃 기능 등, 모든 기능들은 플러그인으로 개발하고 있다. 뭔가 위키문법스럽지 않은 컨텐츠 포현방식이다 싶은건 다 플러그인이다.