This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.
To capture the video (filesize: 19MB), using the free "QuickTime Player" application:
| (def cds (collection)) | |
| ;; interact with database | |
| (go | |
| (>! (:in cds) | |
| {:op :create | |
| :val {:title "Soft Machine Vol. 1" | |
| :artist "Soft Machine" | |
| :year 1969}}) |
| (ns example.errors) | |
| (defn clean-address [params] | |
| "Ensure (params :address) is present" | |
| (if (empty? (params :address)) | |
| [nil "Please enter your address"] | |
| [params nil])) | |
| (defn clean-email [params] | |
| "Ensure (params :email) matches *@*.*" |
| ;; Big thanks to Christophe Grand - https://groups.google.com/d/msg/clojure/L1GiqSyQVVg/m-WJogaqU8sJ | |
| (defn scaffold [iface] | |
| (doseq [[iface methods] (->> iface .getMethods | |
| (map #(vector (.getName (.getDeclaringClass %)) | |
| (symbol (.getName %)) | |
| (count (.getParameterTypes %)))) | |
| (group-by first))] | |
| (println (str " " iface)) | |
| (doseq [[_ name argcount] methods] | |
| (println |
| -- Entity Attribute Value Model in Postgres | |
| CREATE TABLE public.entity ( | |
| id serial NOT NULL, | |
| type varchar(25) NOT NULL, | |
| PRIMARY KEY (id) | |
| ); | |
| CREATE TABLE public.defined_attributes ( | |
| key varchar(25) NOT NULL, |
| ;; Here is a spike of a lightweight in-process pubsub mechanism that allows pure ;; functional consumers, both blocking and asynchronous. | |
| ;; This defines the event stream, in this case just a series of numbers, | |
| ;; a new one produced each second | |
| (defn timer [] | |
| (lazy-seq | |
| (do | |
| (Thread/sleep 1000) | |
| (cons (System/nanoTime) (timer))))) |
| ;; this code valid as of build 3084 | |
| ;; in-memory example database | |
| (use '[datomic.api :only (db q) :as d]) | |
| (def uri "datomic:mem://test") | |
| (d/create-database uri) | |
| (def conn (d/connect uri)) | |
| ;; example schema | |
| (d/transact conn [{:db.install/_attribute :db.part/db, |
| (ns people | |
| (:use [clojure.string :only (join)] | |
| [clojure.pprint :only (pprint simple-dispatch)])) | |
| ;; we can make maps using the special literal form: | |
| {:a 100 | |
| :b 200} | |
| (class {:a 100 :b 200}) |
| ;; Define a "base type" of Dog | |
| (defrecord Dog [breed]) | |
| ;; Define a "sub type" of TrainedDog | |
| (defrecord TrainedDog [dog word]) | |
| ;; The interface that both Dog and TrainedDog will implement | |
| (defprotocol Talker | |
| (bark [_]) | |
| (speak [_]) |