24 April 2017

はてなダイアリーからの移行

はてなははてなダイアリーからはてなブログへ移行することを推奨しているのだが、これまでは移行するメリットを見出せず放りっぱなしにしていた。 しかし最近Chromeではてなダイアリーにアクセスすると異常に遅いことに気付いた。どうもメンテナンスされていないJavascriptが原因っぽい。それでいい加減に他のブログシステムに移行した方がいいと思うようになった。

日々のメモはEmacsのorg-modeで取っているので、できればブログもorg-modeで編集できた方がいいのだが、pandocなどでorg-modeからmarkdownに変換する方法もあるということなので、メジャーな方法、Jekyll bootstrap+Github pagesでいくことにした。これだとレスポンスも速いし情報源もたくさんある。

まずやったことはrbenvのインストール、最新のrubyをインストール (ruby2以降でないとJekyllがインストールできないので)。それからgithubでブログサイトのレポジトリをつくった。基本的にはここ(Jekyll QuickStart)のサイト名の部分だけを差し替えて実行すればいい。

それから_config.ymlをいじってサイト情報を書き込んだりシンタックスハイライトを有効化したりする。

テーマの変更

色々見たが、最初から入っているTwitterテーマを使うことにした。 ~/masatoi.github.io/assets/themes/twitter/css/style.cssをいじると反映される。シンタックスハイライトのCSSスタイルはpygentsのテーマから適当なものを選んで叩き台にする。

なお、highlighterはrougeでないとコミットしたときにgithubからお叱りのメールが来る。

markdown-modeのインストール

Emacsのpackageからmarkdown-modeを入れる。これでmarkdownのシンタックスハイライトとC-c C-c pでEmacs規定のブラウザでプレビューができる。もっとも、Jekyll serveでファイルの変更を監視していればmdファイルを保存した段階でlocalhost:4000でプレビューが見られる。

コードのテスト

(defun split-arr3 (pred arr true-array false-array)
  (declare (optimize (speed 3) (safety 0))
           (type (simple-array fixnum) arr true-array false-array))
  (let ((true-index 0)
        (false-index 0))
    (declare (type fixnum true-index false-index))
    (loop for elem fixnum across arr do
      (cond ((funcall pred elem)
             (setf (aref true-array true-index) elem)
             (incf true-index))
            (t
             (setf (aref false-array false-index) elem)
             (incf false-index))))
    (values true-array true-index false-array false-index)))
    
(defun main ()
  (print "common lisp start.")
  (loop for count from 1 to *n*
        collect (sumup3 count))
  (print "common lisp end."))

defunloopも組み込みマクロと同列に表示されてしまうのがかなり納得いかないのだが、とりあえずそれらしくなったからよしとする。

コメントシステム

コメントにはDisqusを使えるが、なんか重くなるしそもそもはてなダイアリー時代にもコメントがついたことなんてほとんどないので無しでいこうと思う。はてなブックマークへの誘導を用意すれば一応コメントも残せるはず。

インラインHTMLのテスト

画像のテスト

alt text

画像に限らず、サイトのディレクトリ直下にファイルを置いておけばURLから普通に参照できるようだ。