2016-01-01から1年間の記事一覧

Selmerを使ってみる

Hiccupにどうしても慣れることができなかったので、Djangoにインスパイアされたと言われるSelmerがどんなものか軽く動かしてみることにした。 project.cljの:dependenciesに以下を追加 [selmer "1.0.7"] resource/templates配下に layout.html user/login.ht…

ループを回して配列に値を追加する

Pythonだとこんな感じの処理をClojureで書くとどうなるかパッとでてこなかったのでこれもメモ >>> b = [] >>> for i in range(0, 10): ... b.append({"v": i}) ... >>> b [{'v': 0}, {'v': 1}, {'v': 2}, {'v': 3}, {'v': 4}, {'v': 5}, {'v': 6}, {'v': 7},…

forで2重ループ

ネストさせて重ねるものだと思ってたけど違ったのでメモ。 この辺はちょっとわかりづらいな・・・・。 user> (for [i (range 0 10) n (range 0 10)] println (str "i=" i "n=" n))) i=0n=0 i=0n=1 i=0n=2 i=0n=3 i=0n=4 ・ ・ ・ i=9n=6 i=9n=7 i=9n=8 i=9n=…

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

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

Clojureでデータを指定のキーごとにまとめる

user> (def data [{:type "key1" :value "key1-value"} {:type "key1" :value "key1-value2"} {:type "key2" :value "key2-value"} {:type "key3" :value "key3-value"}]) こんなデータを、:typeの値ごとにまとめたい(SQLでいうところのGROUP BYみたいなこと…

Emacs(CIDER)でClojureファイルのコンパイルエラーチェック

C-c C-kと押すとエラーの部分に赤の波線を引いてくれた。

REPL上でのnamespaceのリロード

project.cljのdependenciesに [org.clojure/tools.namespace "0.2.11"] を追加して REPL上で user> (require '[clojure.tools.namespace.repl :refer [refresh]]) user> (refresh) とやればできる。 ちなみに、refreshした時に出るエラーで EOF while readin…

cider-mode で M-.(cider-find-var) が効かなかった

理由はなんてことなくて単純にns読んでませんでしたってだけでした。 なんてことないけどホントよく忘れる。。。 user> (in-ns 'sample01.core) #namespace[sample01.core] M-x cider-jack-in してから毎回コレうつの面倒だし、 REPL起動した時のデフォルト…

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…