ノマドな、
Clojureでアジャイル開発する会社
9/13 Clojure RC0がリリース
前のめりに仕様を追いかけてはいないので
普段1.2を使ってる人から見たうれしいポイント
1 $ ant
2 $ java -cp clojure-1.3.0-RC0.jar clojure.main
3 Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8
4 Clojure 1.3.0-RC0
5 user=> *clojure-version*
6 {:major 1, :minor 3, :incremental 0, :qualifier "RC0"}
1 (defproject hoge "0.1"
2 :main hoge.core
3 :description "FIXME: write description"
4 :dependencies [[org.clojure/clojure "1.3.0-master-SNAPSHOT"]]
5
6 :repositories {"sonatype-oss-public"
7 "https://oss.sonatype.org/content/groups/public/"})
swank-clojureもアップデート
1 :dev-dependencies [[swank-clojure "1.4.0-SNAPSHOT"]]
プリミティブ型の強化
1 (defn fib [n]
2 (if (<= n 1)
3 1
4 (+ (fib (dec n)) (fib (- n 2)))))
5
6 (time (fib 38))
7 "Elapsed time: 4100.272 msecs"
8
9 !clojure
10 ;; hint arg and return
11 (defn fib ^long [^long n]
12 (if (<= n 1)
13 1
14 (+ (fib (dec n)) (fib (- n 2)))))
15
16 (time (fib 38))
17 "Elapsed time: 674.706 msecs"
まずdefrecord
1 (defrecord MyRecord [a b])
2
3 (MyRecord. 1 2)
4
5 (into (MyRecord. 1 2) {:a 3, :b 4})
1 (MyRecord/create {:a 3 :b 4})
1 (binding [*print-dup* true]
2 (pr-str (MyRecord. 1 2)))
3 "#user.MyRecord[1, 2]"
1 user=> (MyRecord/getBasis)
2 [a b]
1 (use 'clojure.repl)
2 user> (doc keys)
3 -------------------------
4 clojure.core/keys
5 ([map])
6 Returns a sequence of the map's keys.
7 nil
8
9 user> (reflect "")
10 {:bases #{java.io.Serializable java.lang.Comparable java.lang.Object java.lang.CharSequence}, :flags #{:public :final}, :members #{#clojure.reflect.Method{:name valueOf, :return-type java.lang.String, :declaring-class java.lang.String, :parameter-types [boolean], ...
自動化ツール
https://github.com/clojure/clojurescript
インストール
1 $ git clone git://github.com/clojure/clojurescript.git
2 $ cd clojurescript
3 $ script/bootstrap
1 (ns nodehello)
2
3 (defn -main [& args]
4 (println (apply str (map [\ "world" "hello"] [2 0 1]))))
5 (set! *main-cli-fn* -main)
実行
1 $ node nodehello.js
2 hello world
サムネイル生成をするサンプル ( http://hollow-cloud-463.herokuapp.com/ )
https://gist.github.com/1130459
1 (ns demo.web
2 ...
3 (import java.io.ByteArrayOutputStream
4 javax.imageio.ImageIO
5 java.awt.image.BufferedImage
6 java.awt.image.BufferedImage))
7 ...
8 (defroutes main-routes
9 (GET "/test" _ "ok")
10 (GET "/map/" [] (templates.upload/index))
11 (POST "/" _ make-thumbnail))
12
13 (def app
14 (-> #'main-routes
15 handler/site))
16
17 (defn -main []
18 (let [port (Integer/parseInt (or (System/getenv "PORT")
19 "18080"))]
20 (run-jetty (var app) {:port port})))
1 $ git push heroku
2 Counting objects: 9, done.
3 Delta compression using up to 4 threads.
4 Compressing objects: 100% (3/3), done.
5 Writing objects: 100% (5/5), 405 bytes, done.
6 Total 5 (delta 2), reused 0 (delta 0)
7
8 -----> Heroku receiving push
9 -----> Clojure app detected
10 -----> Installing Leiningen
11 Downloading: leiningen-1.5.2-standalone.jar
12 Downloading: rlwrap-0.3.7
13 Writing: lein script
14 -----> Installing dependencies with Leiningen
15 Running: lein deps :skip-dev
16 Copying 17 files to /tmp/build_3hcdo3j5w5sj3/lib
17 -----> Discovering process types
18 Procfile declares types -> web
19 -----> Compiled slug size is 11.6MB
20 -----> Launching... done, v12
21 http://hollow-cloud-463.herokuapp.com deployed to Heroku
22
23 To git@heroku.com:hollow-cloud-463.git
24 870c10f..17e70a1 master -> master
https://github.com/aboekhoff/congomongo
| Table of Contents | t |
|---|---|
| Exposé | ESC |
| Full screen slides | e |
| Presenter View | p |
| Source Files | s |
| Slide Numbers | n |
| Toggle screen blanking | b |
| Show/hide slide context | c |
| Notes | 2 |
| Help | h |