Skip to content

Instantly share code, notes, and snippets.

@gtrak
gtrak / gist:3136468
Created July 18, 2012 14:21
swanker project.clj
(defproject swanker "0.1.0-SNAPSHOT"
:description "Swank REPL for various usages"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.4.0"]
[swank-clojure "1.4.2"]
[javax.servlet/servlet-api "2.5" :scope "provided"]]
:aot [swanker.core])
@gtrak
gtrak / gist:3136631
Created July 18, 2012 14:48
pomodoro
(ns pomoclojo.core
(:import [org.apache.commons.exec
PumpStreamHandler
DefaultExecutor
ExecuteWatchdog
CommandLine]
[java.io ByteArrayOutputStream])
(:use [clj-time.core :only [in-secs in-minutes now interval plus minus within? minutes secs]]))
(defn execute
@gtrak
gtrak / gist:3189404
Created July 27, 2012 18:02
jax-rs issue
INFO: Initiating Jersey application, version 'Jersey: 1.4 09/11/2010 10:30 PM'
Jul 27, 2012 6:00:42 PM com.sun.jersey.spi.inject.Errors processErrorMessages
SEVERE: The following errors and warnings have been detected with resource and/or provider classes:
WARNING: A sub-resource method, public javax.ws.rs.core.Response com.cloudera.hoop.Hoop.root(java.security.Principal,com.cloudera.hoop.GetOpParam,com.cloudera.hoop.FilterParam,com.cloudera.hoop.DoAsParam) throws java.io.IOException,com.cloudera.lib.service.HadoopException, with URI template, "/", is treated as a resource method
SEVERE: Method, public javax.ws.rs.core.Response com.cloudera.hoop.Hoop.get(java.security.Principal,com.cloudera.hoop.FsPathParam,com.cloudera.hoop.GetOpParam,com.cloudera.hoop.OffsetParam,com.cloudera.hoop.LenParam,com.cloudera.hoop.FilterParam,com.cloudera.hoop.DoAsParam) throws java.io.IOException,com.cloudera.lib.service.HadoopException, annotated with GET of resource, class com.cloudera.hoop.Hoop, is not recognized as valid
(def servlets
"Map of servlet classes to ring handlers, add here. Needs to be quoted so symbols resolve to themselves."
'{:my.servlet.class.Servlet hr/app})
(defmacro make-servlet
"Call to generate a servlet class given the class name and a ring handler."
[servlet handler]
(let [servlet (name servlet)
prefix (str servlet "-")]
`(do (println "Compiling Servlet" ~servlet)
@gtrak
gtrak / gist:3372429
Created August 16, 2012 18:30
Compojure demo
(defn OPTIONS
"Generate a OPTIONS route with the given response."
[response]
(fn [request]
(when (= (:request-method request) :options)
response)))
(defroutes routes
(GET "/" [] "<h1>Hello World</h1>")
(context (:registry contexts) [] registry)
(defn assert-only-expected-keys
"Make sure that there are no extra keys in the item"
[keyset item]
(mapv (fn [k] (is (keyset k) (str k " is not one of " keyset)))
(keys item))
item)
(defn assert-all-expected-keys
"Make sure that every expected key exists in the item"
[keyset item]
@gtrak
gtrak / gist:4437190
Created January 2, 2013 19:32
Fogus's 2012 books read, titles scraped with some noob jquery, from http://blog.fogus.me/2013/01/01/books-read-in-2012/
var jq = document.createElement('script');
jq.src = "http://code.jquery.com/jquery-latest.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
jQuery.noConflict();
$('div a').map(function(){return this.title;}).each(function(){console.log(this.toString())})
Borges: A Life
Island
Smalltalk 80: Bits Of History, Words Of Advice
(defmacro let-map
[pairs]
(let [names (map first (partition 2 pairs))]
`(let [~@pairs]
(zipmap
[~@(map (comp keyword name) names)]
[~@names]))))
(defmacro let-map
"Avoids having to build maps from let bindings manually"
[bindings]
(let [names (->> (take-nth 2 bindings)
(tree-seq #(or (sequential? %) (map? %)) identity)
(filter symbol?)
(into #{})) ; dumps it all into a set
bindings (destructure bindings)]
`(let [~@bindings]
(zipmap [~@(map keyword names)]
@gtrak
gtrak / gist:4548456
Last active December 11, 2015 04:58
(ns xml.test
(:require [clojure.java.io :as io]
[clojure.data.xml :as xml]))
;; wget
;; download.geofabrik.de/openstreetmap/north-america/us/maryland.osm.bz2
(def xml-seq
#(-> (io/file "/home/gary/dev/maryland.osm")
io/input-stream