Use Hexo and Github Pages

数年間の間、このブログを放置してきましたが、その間はHerokuにホストしてもらっていました。ありがとうございます。

そのHerokuが、プラン形態を変更し、毎日6時間程度Dynoが止まってしまうようです。
https://www.heroku.com/beta-pricing
そこで、Github Pagesへの移行と、BlogシステムもOctopressからHexoへ移行しました。

今後とも、よろしくお願いいたします。

Org-modeで保存後自動でpublishする


Emacsのsave-after-hookを変更して、orgファイルを保存したあとに自動でorg-publishを
行うようにした。

1
(defun auto-export-my-blog ()
  (let* ((project-plist (cdr (assoc "blog" org-publish-project-alist)))
         (project-dir (expand-file-name
                       (plist-get project-plist :base-directory))))
    (save-excursion
      (if (string= project-dir (file-name-directory buffer-file-name))
          (org-publish-current-file)))))

(add-hook 'after-save-hook
          'auto-export-my-blog)


上記の例の場合、org-publish-project-alisに”blog”のエントリーがあること。



自分の現在の設定は以下の通り。

1
(setq org-publish-project-alist
   '(("blog" .  (:base-directory "~/work/blog.mkoga.net/source/_org_posts/"
                 :base-extension "org"
                 :publishing-directory "~/work/blog.mkoga.net/source/_posts/"
                 :sub-superscript ""
                 :recursive t
                 :publishing-function org-publish-org-to-html
                 :headline-levels 4
                 :html-extension "markdown"
                 :body-only t))))


この設定にすると、~/work/blog.mkoga.net/source/_org_posts/以下にあるorgファイルを保存した時、
自動的にpublishされる。

セキュリティさくら #03に参加してきた





2012年2月25日に熊本駅の前にある「くまもと森都心プラザ」
で開催されたセキュリティさくらに参加してきました。





自己紹介




はじめに参加者全員の自己紹介の時間がありました。
セキュリティの専門家だけでなく、さまざまな分野から
様々な年齢層(10代〜60代)の方々が集まっていました。



Advanced Persistent Threat




名古屋大学の高倉 弘喜先生がお話してくれました。
現在実際に起きている攻撃の手法とその対策方法を非常にわかりやすく
解説していただきました。



アプリの対応状況によりOSのアップデートをすべてのマシンですぐに
実行することは現実問題として難しいため、
穴を塞いで侵入を防ぐ方法では、完全に攻撃からもう情報を守れない。
大事な事は、最も重要なデータを持ちださせないためにどう対処するか
ということだ。とおっしゃっていました。



やはり全てを解決する「銀の弾」はなく、対策の効果とコストを考え
ながら方法を選んでいくしかないですね。
先生がとても楽しそうにお話していたのが印象に残っています。
攻撃手法を聞いているときには、まるでスパイ映画のあらすじを
聞いているような気分になりました。



Androidマルウェアと対策ソフトの実情




自分も使っているAndroidのマルウェア対策について
カスペルスキーのチーフセキュリティエヴァン リスト
の前田典彦さんの発表でした。



Android向けのウィルスがここ半年ほどで急増していることを
示されたあと、マルウェアの例をいくつか紹介していただきました。
非常に幼稚なマルウェアでも、攻撃者が欲しい情報がとれてしまうことに
驚きました。



LT




今回のLTは3件、どれもジャンルが異なるバラエティ豊かな発表でした。



マルウェア解析を妨害するもの




マルウェアの解析を困難にするアンチデバッギングについての発表でした。
デバッガ上やVM上で動作している場合にはそれを検知して異なる振る舞いを
するマルウェアがあることは知りませんでした。
残念ながら時間の都合上デモはありませんでしたが、
懇親会の2次会で見せて頂きました。



地域からのセキュリティUP




大分県のハイパーネットワーク社会研究所にどのような相談が寄せられているのか
紹介されました。会場はその内容に思わず笑いが起こっましたが、知らないと
とても怖いだろうと思います。
情報リテラシーをどう上げていくかは難しい問題ですね。



ハードウェアセキュリティ(仮題)




いろいろ「アレ」だったので省略。
興味深い内容でした。



まとめ




すごく楽しい勉強会でした。 良い意味で 変態な方がいっぱい居たし、
みんなニコニコしながら熱い交流がありました。
主催された @greenz_greenz さん、参加された皆様、ありがとうございました!




VMware Fusion 4でGuest OSをguiなしで起動する方法





ずっと方法がわからなかったが、ついに実現したので、メモ。



以下のディレクトリにあるvmrunコマンドを使う。



/Applications/VMware Fusion.app/Contents/Library






マニュアルは1にある。



上記ディレクトリをPATHに追加したら、以下のコマンドで起動する。



$ vmrun ~/Documents/Virtual\ Machines.localized/VM-Name.vmwarevm/VM-Name.vmx nogui






以上。




Safariの初期化







最近はChromeを主に使っていたのだけど、久しぶりにSafariを
起動したら、最初の操作で落ちるようになってしまった。



参考したサイト1にあるように、初期化を行ったら起動するようになった。
自分の環境では、$HOME/Library/Preferences/com.apple.Safari.plist
を移動して初期化したら無事起動するようになった。



原因がわからないのがとても不安…





BEGIN SRCの補完


BEGIN_SRCの補完




org-modeで文章を書いていて、ソースコードなどを埋め込む場合、#+で始まるブロックで
囲む必要がある。




#+BEGIN_HTML
bra, bra, bra…
#+END_HTML




これをいちいち打つのは面倒なので、何か方法があるはずだと、org-ja1 を見てみたら、やっぱりあった。



15.2章の ‘Easy Templates’より。”<”の後にセレクタを入力し、<TAB>で展開できる。





















s'</td><td class="left">#+begin_src#+end_src’
e'</td><td class="left">#+begin_example#+end_example’
q'</td><td class="left">#+begin_quote#+end_quote’
v'</td><td class="left">#+begin_verse#+end_verse’
c'</td><td class="left">#+begin_center#+end_center’
l'</td><td class="left">#+begin_latex#+end_latex’
L'</td><td class="left">#+latex:’
h'</td><td class="left">#+begin_html#+end_html’
H'</td><td class="left">#+html:’
a'</td><td class="left">#+begin_ascii#+end_ascii’
A'</td><td class="left">#+ascii:’
i'</td><td class="left">#+include:’line









org-mac-protocol


org-mac-protocolの設定




org-modeをemacsclientを使って外部の情報を取り込める仕組み。



今回は、Webブラウザ(Safari, Chrome)からorg-modeへリンクを取り込めるようにする。



これを使うと、blogを書くときに、urlとタイトルを別々にコピーする必要がなくなった。



設定






org-protocol




まずはorg-protocol1を有効にする。org-protocolはcontribなので、load-pathに
contribのディレクトリを追加する必要がある。

setting-for-org-protocol.el
1
(add-to-list 'load-path "/path/to/org-mode/contrib/lisp")
(require 'org-protocol)



org-mac-protocol




org-mac-protocol2は、org-protocolをMacOSX上で使えるようにしたもの。
まずはgit cloneし、必要なファイルを必要な場所へ。

1
2
$ git clone https://github.com/claviclaws/org-mac-protocol.git
$ cp -r org-mac-protocol/*.scpt org-mac-protocol/orgQSLib ~/Library/Scripts


~/Library/Scriptsがない場合は先に作る必要があります。



そして以下の設定

setting-for-org-mac-protocol.el
1
(add-to-list 'load-path "/path/to/org-mac-protocol")
(require 'org-mac-protocol)


QuickSilver




環境設定-> Catalog -> Scripts -> Scripts(User)にチェックを入れる。




使用方法




Chromeでコピーしたいページを開き、QuickSilverでorg-link.scptを選択。



Emacsで

1
M-x org-insert-link


したあと、ミニバッファに貼り付け(C-y)すると、リンクとその説明が正しく
貼り付けれれた。




まとめ




AppleScriptの魔法を使い、Emacsとほかのアプリケーションの連携がうまく
できるようになった。




KFP#x06に参加してきた









KFP#x06




第x06回、KFP(Kumamoto Programming Freaks)に参加してきました。
熊本で開催された、プログラミングに関する勉強会です。
参加者は、熊本はもちろん、東京、福岡や、宮崎など各地から参加されていました。
本人には伝えることができませんでしたが、同じ学科の後輩もいました。



感じたこと




すべての発表でメモを取ったわけではないのですが(ごめんなさい。)、自分の感じたことメモです。



関数型言語と定理証明




@snisimu さんの発表でした。



関数型言語の簡単な例から、定理証明への対応付けは理解しやすかったです。
現在は証明言語からHW記述言語へコンバートすることを考えていらっしゃるようで、
今後趣味として証明付きのCPUなどを作りたいそうです。
関数型のHW記述言語と言われると、Lava
CLasH を思い出しました。


プログラミング、デザイン、アート、スタートアップ




@shunsuk さんの発表でした。



スタートアップで働かれている @shunsuk さんが
現在考えていらっしゃることを発表してくださいました。
プログラミング、デザイン(≒設計)、マーケティングを同時にできるよな人材が必要ということで、
shunsuk さんが将来どうなりたいのか、
少しだけ見せていただけた気がします。



C#で作るWindowsのWindowを制御するDSL




valvallow さんの発表でした。



Win32 APIを叩き、マウスとキーボードの動作を自動化するDSLを開発されていました。
マウスの位置は座標で指定し、簡単なREPLで実装されれいたようです。

下記の質問をしました。


  • Q: Capibaraなどのように、ボタンをラベルの内容で指定できるのか?

    • A: 現在はできない。ボタンのIDしていするAPIは存在する。




  • Cocoaへのポートは可能か?

    • A: ぜひやってください。








まとめ




直接仕事でコードを書いている方、仕事を楽にするためにコッソリ(?)書かれてる方や、ビジネス寄り
の方など、様々な方とお話できて、とても良い刺激になりました。
自分のロールモデルにいいとこ取りしていきたいと思います。


Octopressでorg-modeを使う方法




結果




前回は、org-modeからhtmlを生成するために、org-ruby を使おうとしてたが、
少しググったところ、OctoressがラップしているJekyllとOrg-modeを組み合わせて使っている人がいた1
すでにEmacs上にはOrg-modeからhtmlへの変換が実現しているため、こちらを使う方が確実。
結局Org-modeからhtmlを吐き出し、それをOctopressに食わせるようにした。asdf



変更点




Org-mode のファイルは、新たにorg/_postsディレクトリを作成し、そこに生成する。



この動作を実現するため、Rakefileの一部を以下のように変更した。

先頭のチャンクは、rake new_postで生成するファイルの場所と拡張子を変更している2
後半の2つのチャンクは、new_postとnew_pageで生成するファイルのヘッダをorg-modeにあわせて変更している。



さらに、1よりorg-jekyllをインストールし、以下の設定を自分の.emacsに追加した。



投稿手順




あとは、rakeコマンドで生成されたファイルを編集し、

1
M-x org-publish

を実行するとsource/_posts ディレクトリにhtmlが生成される。その後、ターミナル上で
1
$ rake generate

を実行すると、各ポストが生成される。



まとめ




一応org-modeを使うことができるようになった。。




Footnotes:



1 http://juanreyero.com/open/org-jekyll/




2 この変更はstylesheetに関するRakeの動作にも影響があるため、source/stylesheetsからorg/stylesheetsにリンクを作成した。