github のフィードを Growl で表示する GitHubGrowler が便利

By | 2009年5月29日

id:typester さんの発言 を見て github-growler なるものがあることを知る。宮川さん作。
で、さっそく設定をしてみた。
ソースは github からダウンロード。(ここ)

git clone http://github.com/miyagawa/github-growler.git
cd github-growler
perl github-growler.pl [userID] [APIキー]
(※APIキーは [home] => [account] に書いてあります)

これで動くようになればok.
これ自身がデーモンなので、そのまま放置しとくと新しい動きだけを表示してくれる。

毎回 UserID と APIキー の入力がめんどい場合は git config で登録しておけばよい。

git config --global github.user [userID]
git config --global github.token [APIキー]

default で取得間隔と表示最大数は変更できる

defaults write net.bulknews.GitHubGrowler interval [取得間隔(秒)]
defaults write net.bulknews.GitHubGrowler maxGrowls [表示最大数]

設定ができてるかはこれで確認

defaults read net.bulknews.GitHubGrowler interval

自動起動の設定

実行するとデーモンがたちがあるけど、ログイン毎にするものめんどくさい。
というわけで launchd を使って自動起動の設定をしてみた。

gist から DL するかもしくは下記のをコピペしてください。
置き場所はここ。
~/Library/LaunchAgents/net.bulknews.GitHubGrowler.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>net.bulknews.GitHubGrowler</string>
    <key>ProgramArguments</key>
    <array>
        <string>絶対パス /github-growler/github-growler.pl</string>
        <string>ここに UserID </string>
        <string>こっちに API キー</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

github-growler.pl までの絶対パスと UserID と APIキーを変更してください。

launchd に登録(登録すると自動起動するようにしてある)

launchctl load ~/Library/LaunchAgents/net.bulknews.GitHubGrowler.plist

エラーは /var/log/system.log にでます。
これで動かない場合は userID, APIキー が合ってるか確認してください。
net.bulknews.GitHubGrowler.plist を変更した際は一度 unload して再度、load してください。
そうしないと反映されないみたいで地味にはまった。。。

あとuserID や APIキー が script に渡っていない場合はこんな感じのエラーができます。

May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Can't exec "git": No such file or directory
May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Use of uninitialized value $user in scalar chomp
May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Can't exec "git": No such file or directory
May 29 21:12:46 imac net.bulknews.GitHubGrowler[1358]: Use of uninitialized value $token in scalar chomp

ちょっと動かしてみたけど、ほんとに世界がかわったw
前まで RSS リーダーとかで見てたけどこっちの方が全然いいなぁ〜

参考資料

LaunchDaemons (launchctl, launchd.plist) の使い方

コード中の class や function を perldoc で簡単に表示できる Vim プラグイン

id:secondlife さんの Vim プラグイン perldoc.vim がやばい。
久々にすごいヒット。使い方も簡単。インストールも簡単。
以下、本家引用

適当な func/class の上で K で読めるようになる。
perldoc 表示側でも K で飛べるのでぐるぐる巡れる。
s でソースコードとトグルする。

ここでいう func って perldoc -f で探すもののこと。(my, open, map とか)

はまりどこ

そんなだいそれたものでもないけど。。。

  • ~/.vim/ftplugin/perl/init.vim に setlocal iskeyword+=: をかく。かかないとモジュール名(::)で区切られて perldoc が開く。(ex. URI::Simple => URIで開く):set iskeyword で確認できるよ。
  • syntax plugin on ってのが
    .vimrc に書いてないと、そもそも plugin 自体が動かない。

初めての VimScript そして github

凄い便利だけど、個人的に横分割があまり好きでない。
というわけで、ソースもみやすそうだったので縦分割で見れるようにいじってみた。

VimScript 触るのは初めてだったけど、help と勘でどーにかなった。
といっても何をやってるかはほんとに勘でこうだろうと
決めつけていじってるので何かあった時はご了承をw

~/.vim/ftplugin/perl/init.vim にこれを追記すると縦分割で表示されるようになる。
let b:window_vsplit = 1
--- perldoc.vim	2009-05-29 03:14:14.000000000 +0900
+++ perldoc_vsplit.vim	2009-05-29 03:14:02.000000000 +0900
@@ -13,17 +13,26 @@
 let s:buf_nr = -1
 let s:mode = ''
 let s:last_word = ''
+let b:window_vsplit = 0

 function! s:PerldocView()
   " base on FuzzyFinder WindowManager
   let cwd = getcwd()

   if !bufexists(s:buf_nr)
-    leftabove new
+    if b:window_vsplit
+      rightbelow vnew
+    else
+      leftabove new
+    end
     file \[Perldoc]
     let s:buf_nr = bufnr('%')
   elseif bufwinnr(s:buf_nr) == -1
-    leftabove split
+    if b:window_vsplit
+      rightbelow vnew
+    else
+      leftabove new
+    end
     execute s:buf_nr . 'buffer'
     delete _
   elseif bufwinnr(s:buf_nr) != bufwinnr('%')

ソースは github にあります。
dealforest’s perldoc-vim at master – GitHub
git さわろうさわろうと思ってよーやくさわってみた。
fork していいものか分からなかったけど勢いでしてみた。
まずかったらすみません。。。

なんにせよ初めて尽くしで色々おもしろかったー。
せっかく fork したんだし、これを機に勉強を兼ねてしばらくいじろうかな