はてなブログサイドバーにカテゴリ一覧を自動表示する

コピペ用

以下のコードをサイドバーとして追加

<script>
(function($) {
  var $module_body = $('.hatena-module-body:last');

  $module_body.parent()
    .removeClass('hatena-module-html')
    .addClass('hatena-module-categories')
    .prepend($('<div>').addClass('hatena-module-title').text('カテゴリー'));

  $.get('/categories').done(function(html) {
    $module_body.html(html.replace(
      /[\s\S]*<div class="entry-content">\s*|\s*<\/div>[\s\S]*/g, ''));
  });
})(jQuery);
</script>

https://github.com/m4i/hatenablog-snippets/blob/master/category.js


解説

他にもいくつかカテゴリ一覧を表示するコードが紹介されていますが、このコードは以下の点で優れています。

  1. 利用しているカテゴリが自動でリストアップされる
  2. HTML 構造が正規のモジュールに近い

1. 利用しているカテゴリが自動でリストアップされる

自分でメンテナンスしなくても使用しているカテゴリが自動でリストアップされます。
カテゴリ一覧は /categoies から取得しています。

2. HTML 構造が標準モジュールに近い

プロフィール、検索、リンクなどと同じように、以下のような HTML 構造になっています。

<div class="hatena-module hatena-module-categories">
  <div class="hatena-module-title">カテゴリー</div>
  <div class="hatena-module-body">
    <ul>
      <li>カテゴリー1</li>
      <li>カテゴリー2</li>
    </ul>
  </div>
</div>

なので、既存のテーマと相性が良かったり、将来カテゴリモジュールが実装された時に CSS の修正が少なくて済むと思います。



利用例はこのブログの最下部で見れます。お好みで適当に CSS を書いてください。
2012-06-30: 現在は標準のカテゴリモジュールを利用しています

tmux での1行コピー または man tmux に載っていないコマンド

screen から tmux に乗り換えて2ヶ月ほど立ちますが、不便なことが4つありました。

  1. copy した文字列を直接ファイルやプログラムに渡せない
  2. 2ストロークの key bind が定義できない
  3. cdd が動かない
  4. copy mode で1行コピーがない

(1), (2) は未だに未解決ですが、
(3) は 「cdd を tmux, bash, multi session +α に対応した」で解決、
今回は先日解決した (4) について書こうと思います。


先日 .tmux.conf を整理しようと man tmux を眺めていたんですが、どこからかコピペしてきた begin-selectioncopy-selection が man に載ってないことに気づきました。どうやら key-table を指定した際に使用可能なコマンドは基本的に載っていないようです。

そこでソースを検索してみたところ、mode-key.c に見たことのないコマンドが大量あり、copy-line といういかにもそれっぽいコマンドを見つけました。

例えば、

bind-key -t vi-copy Y copy-line

で vim や screen と同じように Y で1行コピーが出来るようになります。(tmux 1.5 以上)


最後に tmux 1.6 の mode-key.c からコマンド一覧を以下に抜粋しておきます。
それぞれの使い方についてはまとまった説明は見つけられなかったので、名前から推測するか、検索するか、ソースを読むのが良いと思います。

key-bind -t vi-edit/emacs-edit で使えるコマンド

backspace cancel complete cursor-left
cursor-right delete delete-line delete-end-of-line
delete-word end-of-line enter history-down
history-up next-space next-space-end next-word
next-word-end paste previous-space previous-word
start-of-line switch-mode switch-mode-append transpose-chars

key-bind -t vi-choice/emacs-choice で使えるコマンド

cancel choose down page-down
page-up scroll-down scroll-up up

key-bind -t vi-copy/emacs-copy で使えるコマンド

back-to-indentation bottom-line cancel clear-selection
copy-line copy-end-of-line copy-selection cursor-down
end-of-line goto-line history-bottom history-top
jump-forward jump-again jump-reverse jump-backward
jump-to-forward jump-to-backward cursor-left rectangle-toggle
middle-line page-down next-space next-space-end
next-word next-word-end page-up previous-space
previous-word cursor-right scroll-down scroll-up
search-again search-forward search-reverse search-backward
select-line start-number-prefix start-of-line begin-selection
top-line cursor-up

omniauth-runkeeper を公開しました

もう2ヶ月近く前ですが、omniauth-runkeeper を公開しました。

OmniAuth の作者(社)が作った omniauth-github と同じ OAuth 2.0 なのでそれをベースにしました。

Nike+ から RunKeeper へのインポートアプリを作ろうと思って作ったのに、そっちは全く手付かず。