2012/03/09

Recent entries from same category

  1. AppFog で clojure アプリケーション動かしてみた。

VDBIは一日にして出来上がりその日中にXMLRPCプロトコルからJSONRPCプロトコルに変わってしまったという酷いプロジェクトなんだけど、JSONRPCサーバは色んな言語から扱えるのでやってて楽しい。
mattn/vdbi-vim - GitHub

Database client for Vim

https://github.com/mattn/vdbi-vim
最近clojureに興味はあるんだけど、一向にclojure力があがらないので、勉強がてらVDBIのサーバとおしゃべりしてみた。
使ったのは clj-rpc というJSONRPCライブラリ。
zhuangxm/clj-rpc - GitHub

a simple web rpc using clojure and json protocol

https://github.com/zhuangxm/clj-rpc
最初、エンドポイント指定時に :on-witejson に指定しないとデフォルトで clj プロトコル(通信データがJSONじゃなくclojureのコード)になるという罠にどっぷりハマってしまったけど、なんとか動いた。
(ns vdbi-demo
  (:require [clj-rpc.client :as client]))
(def endp (client/rpc-endpoint :server "localhost" :port 9876 :on-wire "json"))
(client/invoke-rpc endp "connect" ["dbi:SQLite:dbname=c:/temp/foo.db" "" ""])
(client/invoke-rpc endp "prepare" ["select * from foo"])
(client/invoke-rpc endp "execute" [])
(let [rows (client/invoke-rpc endp "fetch" [-1])]
  (reduce (fn [rows row]
    (reduce (fn [cols col]
      (print (str col ","))){}, row)
    (println)){}, rows))
1,あいう,
2,かきく,
3,psgix.harakiri,
ちなみにこの clj-rpc は :on-wire をURLのおケツに引っ付けてしまうので、物によっては動かないサーバもあるかも。
あと vimclojure をいれて let vimclojure#FuzzyIndent=1
let vimclojure#HighlightBuiltins=1
let vimclojure#HighlightContrib=1
let vimclojure#DynamicHighlighting=1
let vimclojure#ParenRainbow=1
という設定をvimrcに書いておくとコードが七色になるのでいれるべし。
vimclojure
Posted at by