Skip to content

Instantly share code, notes, and snippets.

@skatenerd
skatenerd / scrape.rb
Created February 1, 2014 19:44
when is the bus coming? write it to db
require 'nokogiri'
require 'net/http'
require 'dm-core'
class Prediction
include DataMapper::Resource
property :id, Serial
belongs_to :snapshot
property :minutes, Integer
end
(defn compare-tuples [tuple-1 tuple-2]
(or (first (remove zero? (map compare tuple-1 tuple-2))) 0))
(defn get-values-at [record keys]
(map #(get record %) keys))
(defn sort-by-keys [keys to-sort]
(sort-by #(get-values-at % keys) compare-tuples to-sort))
(def people [
@skatenerd
skatenerd / sorting.clj
Last active August 29, 2015 13:56
lol
(defn sort-by-lambdas [lambdas to-sort]
(sort-by
#(mapv (fn [lambda] (lambda %)) lambdas)
to-sort))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;test
(describe "sorting"
(it "sorts by lowercased name"
(let [people [{:name "aaa"} {:name "BBB"}]]
@skatenerd
skatenerd / mush.rb
Last active August 29, 2015 13:56
mush
def gapsize(biggersize, smallersize)
num_gaps = smallersize + 1
total_of_all_gaps = biggersize - smallersize
total_of_all_gaps / num_gaps
end
def gap_sequence(bigger_list, smaller_list)
@skatenerd
skatenerd / opacity.clj
Created February 22, 2014 23:23
"Referential Transparency". Yep. Totally transparent.
(def kill-spaces #(clojure.string/replace % " " ""))
(-> "a b c" kill-spaces)
;"abc"
(-> "a b c" #(clojure.string/replace % " " ""))
;kaboom!!!!!
def wat():
z=1
def inner(x):
return (z + x)
return inner
z=55
print wat()(5)
@skatenerd
skatenerd / defaults.clj
Created March 13, 2014 03:49
default arguments
(defmacro make-it [name args defaults & exprs]
`(defn ~name
(~args
(~name ~@(concat args (vals defaults)))
)
(~(vec (concat args (keys defaults)))
~@exprs)))
(prn (macroexpand-1 '(make-it bar [a b] {c +} (prn "HI") (c a b))))
@skatenerd
skatenerd / default_args.clj
Last active August 29, 2015 13:57
thank you colin jones
(defmacro def-defaults [name args defaults & exprs]
`(defn ~name [~@args & {:keys ~(vec (keys defaults)) :or ~defaults}]
~@exprs))
(def-defaults use-the-operator [a b] {operator +} (operator a b))
(prn "--------------------------")
(prn (use-the-operator 1 2)) ; --> 3
(prn (use-the-operator 1 2 :operator *)) ; --> 2
(prn "--------------------------")
@skatenerd
skatenerd / list_tests.rb
Last active August 29, 2015 13:57
list tests
class LinkedList
class Node
attr_accessor :value, :next_node
def initialize(value, next_node = nil)
@value = value
@next_node = next_node
end
end
@skatenerd
skatenerd / nsa.rb
Last active August 29, 2015 14:00
NSA Factory Pattern
require 'json'
class SmartphoneSpy
def do_spying
recorded_activities = {bus_trip: 5.5, ate_meal: "chicken"}
message_to_send = recorded_activities.to_json
send_via_internet_to_HQ(message_to_send)
end
def send_via_internet_to_HQ(message_to_send)