레이블이 WIKI인 게시물을 표시합니다. 모든 게시물 표시
레이블이 WIKI인 게시물을 표시합니다. 모든 게시물 표시

2015년 10월 13일 화요일

Wiki and Jupyter

Wiki and Jupyter

위키

  • 여러가지 위키를 상당기간 검토하거나 사용해 봤다.
  • 미디어위키. 일단 가장 표준적인 시스템이라는 점에서 보증할 수 있고, 기능이 풍부하며, 확장성 역시 좋다. 그러나 미디어위키 문법은 아주 지저분하고, APM 시스템 기반이라 포터블 하지는 못하다.
  • 깃허브 골룸. DB 의존적이지 않은 대신 Git을 통해 버전관리가 이루어진다. 어차피 DB가 필요한 만큼의 대규모 위키를 운영할 것도 아니므로 이것은 전혀 문제되지 않는다. 또 깃허브 향 마크다운 문법 역시 매력적이다. 설치 방법도 크게 까다롭지는 않다. 그럼에도 불구하고 뭔가 부족하다는 느낌이 든다. 하지만 기본 개념 자체는 아주 좋다.
  • 징고(Jingo). 골룸 비스무레한 것을 node.js와 자바스크립트로 만들어 놓은 것이다. 역시 상당히 좋지만 아직 완성도가 너무 낮다. 겨우 구색만 갖춘 느낌. 그러나 역시 node.js 기반의 소프트웨어는 항상 나를 기쁘게 한다.
  • 티들리위키. 단순무식한게 아주 좋고, 달랑 하나의 파일만으로 포터블성이 극대화된게 아주 천재적이다. 다만 기본 UI가 위키라기 보다는 블로그에 가깝다. 아쉬운 점은, 티들리위키 문법을 사용하고 싶지는 않기 때문에 마크다운 플러그인을 넣어 봤는데 지나치게 허접하다는 점이다.
  • 기타 서비스형 위키로, Torchpad를 사용하고 있는데... 골룸처럼 깃허브향 마크다운 문법 기반이라 너무 좋고, 필요한 확장이 모두 기본적으로 셋팅되어 있을 뿐만 아니라, 그림 삽입 같은 것은 그냥 마우스 드래그만 해 주면 자동적으로 업로드 및 태깅이 되기 때문에 너무 편하다. 단점은 한글 입력시 끝글자가 사라져 버리는 버그가 있고, 깃허브 연동 기능이 아직 제공되지 않는다. 그리고 커뮤니티가 거의 죽어있는 것을 봐서는 곧 망할 것 같은 느낌이 들어 불안하다. 서비스형 위키는 아무래도 내가 통제할 수 없다는 점 때문에 심리적인 불안감을 떨치기 어렵다.

Jupyter

  • 그런데, iPython notebook 즉 Jupyter를 보면, 기본적으로 훌륭하게 마크다운 문법이 지원되는 점을 볼 수 있다.
  • 게다가 한큐에 서버 셋팅까지 되고...
  • 각종 언어 커널만 심어주면 인라인으로 코딩 및 결과까지 보여준다.
  • 그리고 이 모든 걸 전부 다 .ipynb 파일 하나에 싹 다 저장할 수 있다.
  • 게다가 온라인, 오프라인 어느쪽으로든 이건 .html로 렌더링을 쉽게 해 줄 수 있다.
  • 심지어 깃허브에서는 직접 렌더링해서 볼 수 있다.
  • 아무튼 킹왕짱이다.

아이디어

  • 아이디어는 간단하다.
  • Jupyter를 뜯어고쳐서(?) 골룸 위키 처럼 만들어보면 어떨까?
  • 즉 위키 문서 파일 역할을 .ipynb 파일이 하도록 시스템을 구성해 주고, Jupyter 프론트엔드 쪽에 문서 검색기능 같은 추가 요소를 더 주는 것이다.
  • 그리고 화면 좌측에 트리 같은걸 자동 생성해서 브라우징 할 수 있도록 해 주면 더 좋겠다.
  • 그리고 열람 모드에서는 Jekill 같은 느낌으로 그냥 열람만 할 수 있도록 하고, 편집 모드에서는 Jupyter 네이티브로 편집 가능하도록 해 준다.
  • 그러면 코딩과 문서의 환상적인 조합이 이루어질 뿐만 아니라, 퍼블리싱까지 되는 셈이다.

2015년 10월 1일 목요일

JINGO !!!

JINGO !!!

개요

  • 깃허브 홈페이지 : https://github.com/claudioc/jingo
  • 한 줄 소개 : node.js로 작성한 Git 기반 위키엔진. 봐줄만한 디자인, 검색기능, 미려한 폰트.

Introduction

  • Git과 Markdown을 중심으로 한 문서작성체계를 가지고 싶은 사람을 위해 만들어졌음.
  • 복잡하고 과잉기능의 도구에 질려버린 사람에게 좋음.
  • Github 자체 위키 엔진인 Gollum의 영향을 강하게 받았음.
  • 다만, Gollum 보다는 좀 더 독립실행에 유리하도록 완결성을 주었음.
  • "Github 없이도 쓸 수 있는 좀 더 강력한 Github 위키"
  • Jingo = Jingo is not Gollum
  • 데모 홈페이지 : http://jingo.cica.li:6067/wiki/home Demo

Features

  • 데이타베이스 사용하지 않음 : 대신 Git 레포지토리 기능을 활용함
  • 사용자 관리 불필요 : 구글계정,깃허브 계정으로 간단히 로그인하는 기능 지원
  • 완벽한 마크다운 문법 지원 : 깃허브향 마크다운도 지원
  • Codemirror 또는 Markitup 사용 : 훌륭한 ajax 보여주기 (설정 파일 참조)
  • 전화면 에디터 모드 지원 : 집중력 강화
  • Gollum 위키에서 만든 문서와 호환
  • 모든 문서에 버전 관리 지원
  • 상이한 버전의 문서간에 비교 기능 지원
  • 모든 문서에 페이지 매기기 기능 지원 : 버전 간에 변화된 부분을 빨리 찾을 수 있음
  • 내용 및 제목 검색 지원
  • Sidebar, Footer 레이아웃 설정 가능
  • Gravatar(개인 아바타) 지원
  • IFRAME 삽입 가능 (예 : 구글 드라이브 문서를 embed할 수 있음)
  • 커스텀 CSS 및 Javascript 적용 가능
  • 문서를 읽고 쓸 때 권한을 줄 수 있는 화이트리스트 지원
  • 빈 페이지 검출 기능 (붉은 색으로 나타남)
  • Remote로 자동 Push 기능
  • 모바일 대응 (Bootstrap 3.X 기반)
  • 간편한 설정
코드 하일라이트 기능으로, node-syntaxhighlighter를 사용함. 지원하는 언어는 이 페이지 참조.
Code

Installation

node.js 및 npm 설치

  • 우분투 리눅스 14.04 기준. Git이 설치되어 있을 것.
sudo apt-get install nodejs nodejs-legacy npm

Jingo 설치

sudo npm install jingo

Git 설정하기

mkdir /home/홈폴더/jingo
cd /home/홈폴더/jingo
git init
git config --global user.name "아이디"
git config --global user.email "이메일"

Jingo 기본형 설정파일 만들기

jingo -s > config.yaml

Jingo 로그인 비밀번호 해쉬코드 만들기

jingo -# 비밀번호
  • 위의 명령을 치면 해쉬코드가 나온다. 그걸 긁어서 복사해 둔다.

config.yaml 편집하기

  • 편집기로 config.yaml을 열어서 다음의 내용을 손 봐준다.
---
# Configuration sample file for Jingo (YAML)
application:
  title: Jingo
  repository: '/home/홈폴더/jingo'      <--- Git 저장소로 설정한 디렉토리 절대경로
  docSubdir: ''
  remote: ''
  pushInterval: 30
  secret: change me
  git: git
  skipGitCheck: false
  loggingMode: 1
  pedanticMarkdown: true
  gfmBreaks: true
  staticWhitelist: "/\\.png$/i, /\\.jpg$/i, /\\.gif$/i"
authentication:
  google:
    enabled: false                 <--- Google 로그인은 일단 비활성화 해 두자.
    clientId: replace me with the real value
    clientSecret: replace me with the real value
  github:
    enabled: false                 <--- Github 로그인도 일단 비활성화 해 두자.
    clientId: replace me with the real value
    clientSecret: replace me with the real value
  local:
    enabled: true                 <--- 로컬 로그인만 활성화 해 두자.
    accounts:
      - username: '아이디'                 <--- 아이디
        passwordHash: '해쉬코드'         <--- 아까 만들어서 복사해 둔 해쉬코드를 넣어준다.
        email: '이메일'    <--- 이메일
features:
  markitup: false
  codemirror: true
server:
  hostname: localhost
  port: 6067
  localOnly: false
  baseUrl: ''
authorization:
  anonRead: true
  validMatches: .+
pages:
  index: Home
  title:
    fromFilename: true
    fromContent: false
    asciiOnly: false
    lowercase: false
  itemsPerPage: 10
customizations:
  sidebar: _sidebar.md
  footer: _footer.md
  style: _style.css
  script: _script.js

Jingo 첫 실행

jingo -c /home/홈폴더/jingo/config.yaml
  • 잘 되나? 잘 되면 설정해 둔 아이디와 패스워드로 로그인 한 후, 첫번째 home 문서부터 작성해 보자.

남은 일들

  • Github와 연동시키기 : 나중에 천천히 하자.
  • Google 및 Github 계정으로 간편 로그인 기능 설정하기 : 나중에 천천히 하자.
  • 다른 Javascript 스크립트 먹이기 : 나중에 천천히 연구해 보자.
  • 서버에 올려서 서비스하기 : 나중에 천천히 연구해 보자.