Emacsとblogsync使ってブログを書く
blogsync-mode、記事の一覧を見て検索できるといいなと思ったけど、よく考えなくてもそんなのはhelm-agで容易に実現できるわけで。
(defun helm-blogsync () (interactive) (helm-ag (expand-file-name blogsync-hatenablog-host blogsync-rootdir))))
こんな感じのを.emacsに書いてキーにバインドすればよい。こんな事でhelmとhelm-agに依存するのも何なので本体には入れないでおこう。
艦これ。ランカー褒賞とイベント準備
3月作戦
3月作戦も無事500位以内に入ってランカー褒賞をもらった。
一式戦 隼II型の性能は微妙of微妙だが、後期型艦首魚雷(6門)はありがたい。今月の4月作戦は激戦なので500位に入れるかどうかわからない状況。まあ、仕事も忙しくなってきたしね……。
イベント準備
5/2から2017年春イベである。我が艦隊の陣容はこんな感じ。陣容的にも資源的にも余裕があるので、いつも通り全甲狙いで走り抜ける算段だが、仕事の関係で、手間取りそうなら今回は全甲を止めるかもしれないな。
Windows上のblogsyncではてなblogを更新してみる(2)
blogsyncを使うとしても、記事はEmacsで書くわけで、何かfrontendが欲しいところだ。
どこかにblog用リボジトリを作ってhookでblogsyncを実行するのが正道だとは思いつつも、そこまで重要なコンテンツでもないし、自分らしく手元のEmacsで実行できるEmacs-lispのフロントエンドを作りかけてみた。blogsync-mode.el。
- blogsync-pull : blogsync pullを実行する。出力先はblogsync-rootdir
- blogsync-push : カレントバッファのファイルをblogsync pushする
- blogsync-post : 新規のdraftを作成して、それを開く
現状はいろいろ適当すぎるので、もうちょっとなんとかしよう……。
Windows上のblogsyncではてなblogを更新してみる
blogsyncではてなblogを更新してみようと思ったのだが、Windowsのgoで作ってみると/dev/stdinをos.Stat()しようとしてエラーが出る。
まあ、os.Stat()はLastModifiedを埋めるためにやっているようなので、できなかった現在時刻でいいじゃないということで下記の対応を入れた。
--- a/entry.go +++ b/entry.go @@ -198,10 +198,12 @@ func entryFromReader(source io.Reader) (*Entry, error) { if f, ok := source.(*os.File); ok { fi, err := os.Stat(f.Name()) if err != nil { - return nil, err + t := time.Now() + entry.LastModified = &t + } else { + t := fi.ModTime() + entry.LastModified = &t } - t := fi.ModTime() - entry.LastModified = &t } return entry, nil
os.Stdinがos.Stat()できない件そのものはGo 1.9以降で治りそうな感じではあるので、寿命が数ヶ月のパッチだろう。