Clojure

Clojureで特定の条件になるまで待つ

この例だと10秒待つ感じ。 if の条件を関数とかにして引数でもらうようにすれば大体のパターンに対応できる。 (defn wait-10sec [] (loop [i 0] (if (< i 10) (do (Thread/sleep 1000) (println i) (recur (+ i 1)))))) これはなんかライブラリがありそうな…

ループの途中でreturn(break)したい

気が付いたら前回のポストからすでに2年弱。早いもんですね。。。。 Pythonでいうところの objs = [{"a": 1, "text": "test 1 message"}, {"a": 2, "text": "test 2 message"}, {"a": 3, "text": "test 3 message"}] for o in objs: if o["a"] == 3: return …

Webページの内容(ソース)を取得する

ただ単純にWebページのソースを文字列として取ってくるだけなら (slurp "<URL>") と、これだけでOK User-Agent等を指定したい場合なんかはこんな感じでやるらしい。 (slurp (-> (java.net.URL. url) .openConnection (doto (.setRequestProperty "User-Agent" "<User-Agent文字列>"))</user-agent文字列></url>…

herokuのClearDBの接続情報用の環境変数からclojure.jdbc用の接続情報を作る

ClearDBの接続情報は環境変数のCLEARDB_DATABASE_URLに入っているので 正規表現で各項目を抽出しmapを作る。 (def database-infos (re-find #"([a-z]*)://([0-9a-zA-Z]*):([0-9a-zA-Z]*)@(.*)/([0-9a-zA-z_]*).*" (env :cleardb-database-url))) (def mysql-…

vimでvim-fireplaceをインストールしてreplで式を評価するまでの手順

新しく配属された人がvim使いだったので replを使って式を評価するってところまでを調べてやってみた。 まぁそうそう使うことは無いだろうけど、必要になった時のためにということで。 plug.vimインストール curl -fLo ~/.vim/autoload/plug.vim --create-di…

flash-get!を使っているページがreplで動かない

ログイン用の簡単なHTMLを出すページをreplとかで動かそうとしたんだけど ClassCastException clojure.lang.Var$Unbound cannot be cast to java.util.concurrent.Future clojure.core/deref-future (core.clj:2184) こんなエラーが出て動かなかった。 print…

Clojureの内包表記

こんなテーブルから +--------------+--------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +--------------+--------------+------+-----+---------+----------------+ | id | bigint(20) | NO | PRI…