Skip to content

Instantly share code, notes, and snippets.

@rsslldnphy
rsslldnphy / clojure.vim
Created October 31, 2014 16:47
Prevent clojure-static.vim from clobbering your lispwords
"" This file needs to be at ~/.vim/after/ftplugin/clojure.vim
set lispwords+=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test,fact,facts,defproject,defroutes,context,GET,POST,PUT,UPDATE,DELETE,ANY,go-loop,go
@rsslldnphy
rsslldnphy / factorial.clj
Created January 20, 2015 22:16
Lazy factorials in Clojure
(ns factorial)
(defn factorials
"Generates an infinite sequence of factorials."
([]
(map first (factorials 1 2)))
([product counter]
(cons [product counter]
(lazy-seq (factorials (* product counter) (inc counter))))))
@rsslldnphy
rsslldnphy / cursor-bug.cljs
Created February 4, 2015 15:36
cursor issue
ClojureScript:bugs-web.formatters> (def a (atom {}))
#<Atom: {}>
ClojureScript:bugs-web.formatters> (swap! a assoc :a 2 :b 3)
{:a 2, :b 3}
ClojureScript:bugs-web.formatters> (require '[reagent.core :as r])
ClojureScript:bugs-web.formatters> (def r (r/atom {}))
#<Atom: {}>
ClojureScript:bugs-web.formatters> (def rc (r/cursor [:x] r))
#<Cursor: [:x] #<Atom: {}>>
ClojureScript:bugs-web.formatters> (swap! rc assoc :y 3 :z 4)
@rsslldnphy
rsslldnphy / scrollbar.cljs
Last active August 29, 2015 14:17
Get the scrollbar width
;; Adapted from http://stackoverflow.com/a/8079681
(defonce scrollbar-width
(let [inner (.createElement js/document "p")
outer (.createElement js/document "div")]
(doto (.-style inner)
(aset "width" "100%")
(aset "height" "500px"))
(doto (.-style outer)
(aset "position" "absolute")
(aset "top" "0px")
@rsslldnphy
rsslldnphy / table.cljs
Created June 12, 2015 15:46
responsive fixed-data-table
(defn pixel-size
[size]
(u/str->int (second (re-matches #"(.*)px$" size))))
(defn percent-size
[size]
(u/str->int (second (re-matches #"(.*)%$" size))))
(defn absolute-column-widths
[columns]
@rsslldnphy
rsslldnphy / re_frame.cljs
Created July 3, 2015 14:37
custom register-sub
(if-not goog.DEBUG
(def register-sub rf/register-sub)
(do
(defonce subcounts (atom {}))
(aset js/document "subcounts" #(.table js/console (clj->js
(for [[k vs]
(reverse (sort-by :total-time @subcounts))]
(assoc vs :subscription (str k))))))
@rsslldnphy
rsslldnphy / sql.clj
Created November 27, 2017 16:26
HugSQL namespace generator macro
(ns my-app.sql
(:require [hugsql.core :as hugsql]))
(defmacro defsql
[& args]
(let [files (vec (drop-last 2 args))
alias (last args)]
`(let [current-namespace# *ns*
query-namespace# (symbol (str (ns-name *ns*) ".sql"))]
(create-ns query-namespace#)
@rsslldnphy
rsslldnphy / runner.clj
Last active November 29, 2017 16:11
Simple Job Runner
(ns healthunlocked.runner
(:require [clojure.walk :as walk]
[com.stuartsierra.component :as component]
[schema.core :as s]
[taoensso.timbre :as log]))
(s/defschema Params
{s/Any s/Any})
(s/defschema Job

Keybase proof

I hereby claim:

  • I am rsslldnphy on github.
  • I am rsslldnphy (https://keybase.io/rsslldnphy) on keybase.
  • I have a public key ASAq1uMLZ_XiHdtnavj4w_B0PeWhZPet1Hq459wn7xofSAo

To claim this, I am signing this object: