Jupyter, MarkDown, Github

Ref

https://gist.github.com/re4lfl0w/fadc6bee495c63b4f893

http://weeklypythonkr.tumblr.com/post/108336621066/15%EB%85%84-1%EC%9B%94-%EC%85%8B%EC%A7%B8%EC%A3%BC-issue-no17

Python, Github 가지고 정말 재미있는 것들이 무궁무진 한 것 같다.
다 알지 못해서 한이다.

개인 웹사이트 만든다고 할 때...

직장에서 소프트웨어 팀장께서 TiddlyWiki를 적극 추천해 주셨으나,
받아다가 이리저리 뜯어보니 마음에 안 드는 것들 때문에 사용이 주저되었다.
문법도 그렇고, UI도 그렇고.

단순무식한 마크다운 문법과 .ipynb 파일을 소스로 사용하고 싶은 욕구 때문에,
다른 길이 없을까 약간 헤메었다.

일단 TiddlyWiki에 비견될 수 있는 것을 발견했다.

mdWiki

http://dynalon.github.io/mdwiki/#!index.md

아주 죽여준다.
필요한 모든 기능들이 다 있는데다가, 철저하게 클라이언트에서 실행되는 javascript 단일 파일이기 때문에 서버 쪽에서는 그냥 웹페이지 호스팅만 해 주면 되고 스크립트 실행 따위는 안 해 줘도 된다.
때문에 이걸 그대로 Github에 올리면 개인 웹사이트가 된다.
설정이 조금 까다롭기는 하지만, 재미삼아 하나씩 해 보면 좋을 것 같다.

이걸 사용한 좋은 예시로,
바이오파이썬 이라는 사이트가 있고 http://biopy.github.io/#!index.md
고려대 지식공학연구실 사이트가 있다. http://wiki.dataknow.net/
또다른 간단한 Github에서 돌리는 예제 사이트도 있다. http://dynalon.github.io/mdwiki-examples/cafe/#!index.md

정적 웹사이트인데도 불구하고, 댓글 시스템이 있는 것을 확인할 수 있는데 이건 어떻게 구현한 걸까.

DISQUS

https://disqus.com/ 라는 것을 갖다 붙였다고 한다.

뭐 사용법은 필요할 때 보면 될 거 같고...

그런데 이것보다 더 환상적인 것이 있다.

Pelican

http://blog.getpelican.com/

이것은 Python으로 만들어진 것이다. 따라서 작동시키려면 Python이 돌아가는 리눅스 컴퓨터에서 가능하다.
그럼 웹서버를 반드시 리눅스 로컬 컴퓨터에서 운영해야 되나?
그렇지는 않다.

이 녀석의 기능은, ipynb 내지는 md 문서를 html 웹페이지들로 변환해 주는 것이므로,
변환된 결과물을 Github에 올라가도록 자동화만 잘 해 놓으면 Github 상에서 운용 가능하다.

실제 사용에서 참고할 만한 예제를 많이 검색해 볼 수 있다.

Migrating from Octopress to Pelican

Making a Static Blog with Pelican

Pelican plugin for blogging with Jupyter/IPython Notebooks

Blogging with IPython notebooks in pelican

등의 문서를 참고하면 도움이 많이 되겠다.

실제로 Pelica으로 블로깅 하는 사람의 웹사이트를 보면...

http://blog.dgoon.net/category/dailylog.html

이곳이 그렇게 만든 것 같다.

계획

나중에 시간을 내어 제대로 계획을 잘 세워서 툴체인을 구성해 보는 것이 좋겠다.

일단 Github에 전체 툴을 구성해 놓고, 그걸 로컬 PC에서 끌어당겨서(Pull) 내용을 편집한 후 밀어넣도록(Push) 구성해 볼 수 있을 것이다.
로컬 PC가 ipython을 돌릴 환경이 안된다면, 온라인으로 편집 할 수 있게 juliabox 또는 sagemathcloud 같은 퍼블릭 서비스로도 동기화시켜 두면 될 것이다. (다만 이렇게 할 경우 퍼블릭 서비스에서 Pelican을 지원안할 확률이 높다.)

그리고 만일 도저히 Pelican을 사용하기가 어렵다고 판단된다면, nbconvert 유틸리티로 직접 변환해서 동기화해버리는 방법을 다시 생각해 보는 것도 좋을 것 같다.