IPythonNotebook으로 블로그 글 쓰기

pelican 으로 blog.dgoon.net을 만들어 놓긴 했는데, 문서를 작성하는 것 자체가 너무 힘든 일이 되었다. 특히 공부한 내용을 정리하는거라 그래프나 그림, 노트필기 등을 넣어야 하는데 이게 꽤나 고역이다. 자료가 생산되는 곳에서 바로 포스팅까지 마칠 수 있지 않으면 아무것도 할 수 없을 것 같아서 삽질을 좀 했다.

개인 서버에 띄워놓은 IPythonNotebook 서버에서 특정 디렉토리에 있는 ipynb 파일을 스캔해서 조건이 만족되면 - 메타데이터를 보면 되지롱 - 블로그에 적당히 추가하도록 연결했다. 중요한 것은 그래프, 수식, 기타 매직으로 만든 그림들이 자연스럽게 같이 투척되어야 한다는 점. 카테고리, 태그 등을 수정하느라 터미널에 들어갈 필요가 없어야 한다는 점… 다행히도 IPythonNotebook 웹 인터페이스에 메타데이터를 수정하는 메뉴가 있어서 그걸 이용하니 나름 깔끔하게 정리되었다.

펠리컨의 latex 플러그인, ipynb 플러그인 소스코드를 모두 뜯어서 고치는 공사가 필요했다. 다시 저 플러그인 작성자들한테 PR 을 보내긴 좀 애매해서 … 혹시 비슷한 삽질을 하는 사람이 물어보면 도움을 주는 정도만 할 생각이다.

여튼, 삽질이 끝났다.

아래는 테스트로 그려본 그래프. 이게 잘 넘어갈까?

In [27]:
x = np.arange(-10, 10, 0.1)
y = 1*x**2 - 3.2*x + 1.1
plot(x, y)
Out[27]:
[<matplotlib.lines.Line2D at 0x7f266ce1df90>]

그리고 테스트로 넣어본 수식.

$$y = x+1$$ $ a = b + c $

이건 샘플로 넣어본 dot magic 그래프

In [33]:
%reload_ext hierarchymagic
In [34]:
%%dot
digraph G {
    size = "4,4";
    main [shape=box,label="haha"];
    main -> parse [weight=100];
    parse -> execute;
    main -> init;
    main -> cleanup [style=dotted,color=blue,label="what?"];
    execute -> printf;
    execute [style=filled,color=lightblue,peripheries=5,shape=polygon,sides=3,skew=.4];
    edge [color=red];
    init -> make_string;
    main -> printf [color=green];
    execute -> {make_string, compare};
}

그리고 이건 umlmagic 테스트 …

In [31]:
%reload_ext umlmagic
In [32]:
%%uml -tpng

@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response
Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml

마지막으로 tikz …

In [36]:
%reload_ext tikzmagic
In [37]:
%%tikz
\draw (0,0) circle (1cm);
\clip (0,0) circle (1cm);
\fill[black] (0cm,1cm) rectangle (-1cm,-1cm);
\draw[fill,black] (0, 0.5) circle (0.49cm);
\draw[fill,white] (0, -0.5) circle (0.49cm);
\draw[fill,black] (0, -0.5) circle (0.05cm);
\draw[fill,white] (0, 0.5) circle (0.05cm);

… 대강 다 되는 것 같다. 굿!

Comments