Skip to content

Instantly share code, notes, and snippets.

View mwmitchell's full-sized avatar

Matt Mitchell mwmitchell

View GitHub Profile
@mwmitchell
mwmitchell / gist:8554074
Last active January 4, 2016 02:19
Wire routing DSL change
(def routes
["items" {:GET [items/all :as :list-items]
:POST [items/create :as :create-item
:some-metadata-key true]}
;; OR, skip the ":as" key and set the ID as the first value in the vector, followed by handler metadata:
[":id" {:GET [:show-item items/show]
:PUT [:update-item items/update
:some-metadata-key true]
@mwmitchell
mwmitchell / pagination-fns.js
Last active January 2, 2016 22:49
pagination-fns.js
function offset(page, itemsPerPage){
return (page - 1) * itemsPerPage;
}
function maxPages(perPage, totalItems){
return Math.ceil(totalItems / perPage);
}
function isValidPage(page, itemsPerPage, totalItems){
return ((page > 0) && (page <= maxPages(itemsPerPage, totalItems)));
(def feature-preds
{:VTM (fn [request] false)})
(defn filter-features [request features]
(filter #((get feature-preds % (constantly true)) request) features))
(let [fake-request {:server-name "www.roomkey.com"}]
(filter-features fake-request #{:VTM}))
@mwmitchell
mwmitchell / json_schema_ref_loader.clj
Created November 1, 2013 18:48
boiler plate code for validation using custom ref path
(import '[com.github.fge.jsonschema.main JsonSchemaFactory])
(import '[com.github.fge.jackson JsonLoader])
(import '[com.github.fge.jsonschema.load.configuration LoadingConfiguration])
(import '[com.github.fge.jsonschema.load Dereferencing])
(import '[com.fasterxml.jackson.databind.node ObjectNode])
(let [cfg (.dereferencing
(.setNamespace
(LoadingConfiguration/newBuilder)
"resource:///schema-file-dir-on-classpath/")
@mwmitchell
mwmitchell / rename_and_select_keys.clj
Created August 12, 2013 16:40
rename and select keys from map
(require 'clojure.set)
(defn rename-and-select-keys [m new-names]
(-> m (clojure.set/rename-keys new-names)
(select-keys (vals new-names))))
(ns fetcher
(:require [clojure.tools.logging :as log]))
(def completed? (promise))
(def status (atom 0))
(defmacro make-worker [& forms]
`(do
(swap! status inc)
@mwmitchell
mwmitchell / stuff.clj
Created July 23, 2013 17:54
futures with main thread block
(do
(def doit (promise))
(def status (atom 0))
(defmacro dowork [& forms]
`(do
(swap! status inc)
~@forms
(swap! status dec)))
(import '(java.util.concurrent Executors TimeUnit))
(defn schedule-at-fixed-rate [se f init-delay period]
(.scheduleAtFixedRate
se
(fn [] (try (f) (catch Throwable e (.printStackTrace e))))
init-delay
period
TimeUnit/SECONDS))
(defn find-by-kv [coll k v]
(some #(and (= v (k %)) %) coll))
(defn select-int-keys [r m]
(reduce-kv
(fn [a k v]
(let [[_ n] (re-find r k)]
(if n (assoc a k [(int (read-string n)) v])
a)))
{}
m))
(select-int-keys #"bSearchable_([0-9]+)"