hatena.vim うまくいった!

4月20日のエントリー
hatena.vim導入しよう (1) - kei-os2007 against the machine!!


で、うまくいかない、って書いていた hatena.vimの件だけど
今日やってみて、うまくいった。
hatena.vimのバージョンとか
うまくいかない状況を、もっときちんと記しておけばよかったな、
と少し反省...。


とりあえず、今日の作業内容、解決に至った手順を書いておきます。

1. curlのビルドオプションを確認 (OpenSSL)

curlに OpenSSLがリンクされていないと、うまくいかない」
という情報を id:from_kyushuさんからいただいたので
curlのバージョンを確認しつつ、解決をはかった。
ご自身のブログでも、書かれていた。
hatena.vimを入れてみた - Post-itみたいな


まずは、MacBook Proを購入した時点で入っていた curlということで、確認。

$ /usr/bin/curl -V
curl 7.16.3 (powerpc-apple-darwin9.0) libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Protocols: tftp ftp telnet dict ldap http file https ftps
Features: GSS-Negotiate IPv6 Largefile NTLM SSL libz


OpenSSLはリンクされている様子。
id:from_kyushuさんが書かれている curlバージョンに比べると
若干古かったので、MacPortscurlを取得。
新しくしてみた。

$ sudo port install curl +ssl


/opt/local/bin/curl に入ったので確認。

$ /opt/local/bin/curl -V
curl 7.18.1 (i386-apple-darwin9.2.2) libcurl/7.18.1 OpenSSL/0.9.8g zlib/1.2.3
Protocols: tftp ftp telnet dict http file https ftps
Features: Largefile NTLM SSL libz


よし。

2. hatena.vimの挙動を確認

この時点で、バージョン 20070615の hatena.vimを使っていて
function! s:HatenaLogin() の

    if reply_header =~ 'Refresh:\c'
        echo 'ログインしました'
        return [base_url, user, cookie_file]
    else
        echoerr 'ログインに失敗しました'
        return []
    endif

の「ログインに失敗しました」が出るようになっていた。
(4月20日の状況を再現していない><)


reply_headerの内容を確認。
hatena.vimに echoを仕込んで、HTTPレスポンスを確認すると

    echo "reply_header = " . reply_header


次のようなレスポンスが返っている。

HTTP/1.1 200 OK
Date: Tue, 06 May 2008 12:52:37 GMT Server: Apache/2.2.3 (CentOS)
Cache-Control: no-cache
Pragma: no-cache
X-Framework: Ridge/0.04
Content-Length: 2661
Content-Type: text/html;charset=utf-8
Vary: Accept-Encoding

たしかに Refresh は含まれない。

3. hatena.vimをもう一度取得


hatena.vimCodeReposから取得。
取得した hatena.vimのバージョンは 20070830。

$ svn co http://svn.coderepos.org/share/lang/vim/hatena


取得した hatenaディレクトリを
$HOME/.vim/hatena に配置。
$HOME/.vimrc には、

set runtimepath+=$HOME/.vim/hatena
let g:hatena_user='kei-os2007'

を記述。(.vimrcへの追加は、以前、済ませていた)

4. hatena.vim接続テスト

vimを起動し、コマンドモードで \he をキータイプ。
パスワードを入力し、今日の日付 20080506をセットすると
うまくエントリーができた。
([misc] hatena.vim テスト のエントリーは、hatena.vimで書いた)


念のため、curlのバージョン違いによって
振る舞いに違いが見られないか、確認してみた。
hatena.vimの次の記述を編集して

let s:curl_cmd = 'curl -k --silent'


実行する curlプログラムを
/usr/bin/curl と /opt/local/bin/curl
の 2通りでテストした。
けど、どちらもうまくいった。
(違いは見られなかった)


5. その他

hatena.vimもバージョン毎に
curlのオプションとか、ログイン成功判定処理とか
ちょこちょこと変わっている。


vimスクリプトを一通り勉強すると
vimスクリプトのトラブルに対して、諦めなくなる。
vimスクリプトをおぼえよう - kei-os2007 against the machine!!
でもリンク先を書いたけど
usr_41.txtを一通り読んだら
vimスクリプトへの抵抗が、ずいぶん無くなった。
というか、全くなくなった。
むしろ積極的に手を入れようと自然に思えるようになった。
これはよかった。


あと、4月20日のエントリーを書いたあとに
バージョン 20070615の hatena.vimを使ってみたりしていて
今日、作業を再開した時点で、うまくいかない状況を
完全に再現できなくなっていたのがイタかった...><
せっかく解決のてがかりを教えていただいているのに
その方法が有効か、そうでないかを
明確に示すことができていない。
これはとてももったいない。


GW前にカイシャで試しても同様にうまくいかなかったので
カイシャには 4月20日のエントリーの状況が残っている。
あした出社してから、なぜうまくいかなかったのか
再度、確認してみようと思う。
(ネットワークまわり、OSの違い(Windowsがメイン)とか
気にしないといけないことは、いくつかありそうだけど)