Skip to content

Instantly share code, notes, and snippets.

View joshrotenberg's full-sized avatar
🐢

Josh Rotenberg joshrotenberg

🐢
View GitHub Profile
package main
import (
"fmt"
"log"
"net/http"
"github.com/gin-gonic/gin"
)
@joshrotenberg
joshrotenberg / merge.kt
Created July 26, 2018 20:34 — forked from josdejong/merge.kt
Merge two data classes in Kotlin
import kotlin.reflect.full.declaredMemberProperties
import kotlin.reflect.full.primaryConstructor
/**
* Merge two data classes
* The resulting data class will contain
* - all fields of `other` which are non null
* - the fields of `this` for the fields which are null in `other`
*/
infix inline fun <reified T : Any> T.merge(other: T): T {
defmacro is_loaded_module(module) do
quote do
case Code.ensure_loaded(unquote(module)) do
{:module, module_name} -> true
_ -> false
end
end
end
(ns com.fire.kingdom.flambit
(:require [flambo.api :as f]
[flambo.tuple :as ft]
[clojure.string :as s])
(:import [com.datastax.spark.connector.japi CassandraJavaUtil]))
; in Cassandra ...
; CREATE KEYSPACE test WITH REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 1 };
; CREATE TABLE test.words (word text PRIMARY KEY, count int);
@joshrotenberg
joshrotenberg / opposite.clj
Last active April 6, 2016 21:24
code golfing a clojure function to determine if two numbers are opposite (1 and -1, for example)
(defn opposite?
"Returns true if x and y are opposite numbers, false otherwise."
[x y]
(and (zero? (+ x y))
(every? (complement zero?) [x y])))
(ns stuff.file-cache
(:require [clj-time.core :as t])
(:require [clojure.java.io :as io])
(:require [taoensso.nippy :as nippy])
(:import [java.io DataInputStream DataOutputStream]))
;; This was just a quick experiment. I wanted to cache some lookup tables from a database. Rather than memoize each one individually,
;; though, I just wanted the whole chunk at once, the use case being a big table in Oracle that only changed periodically. I would use this
;; to cache on disk, and then also cache each one in memory, so even if the app restarted it wouldn't have to hit the database more than
;; once per 24 hour period. Worked ok in development, never quite made it to production.
bash-3.2$ pwd
/Users/jrotenberg/adptrs
bash-3.2$ lein deps :tree
Possibly confusing dependencies found:
[sonian/carica "1.1.0"] -> [org.clojure/tools.reader "0.8.3"]
overrides
[org.immutant/immutant "2.1.0"] -> [org.immutant/transactions "2.1.0"] -> [org.immutant/core "2.1.0"] -> [org.clojure/tools.reader "0.8.13"]
and
[org.immutant/immutant "2.1.0"] -> [org.immutant/web "2.1.0"] -> [org.immutant/core "2.1.0"] -> [org.clojure/tools.reader "0.8.13"]
and
(ns redisqueue
(:require [taoensso.carmine :as car :refer (wcar)]
[taoensso.carmine.message-queue :as car-mq]))
(def server1-conn {:pool {} :spec {:host "localhost" :port 6379}}) ;; XXX config here
(defmacro wcar* [& body] `(car/wcar server1-conn ~@body))
(defn create-worker
[queue handler-fn & {:keys [server-spec monitor-fn nthreads]
(ns rediscache
(:require [taoensso.carmine :as car :refer (wcar)])
(:require [clojure.core.cache :as cc]
[clojure.core.memoize :refer [build-memoizer]])
(:import clojure.core.memoize.PluggableMemoization))
(def server1-conn {:pool {} :spec {:host "localhost" :port 6379}}) ;; XXX config here
(defmacro wcar* [& body] `(car/wcar server1-conn ~@body))
package main
// simple example to show how to process one message at a time with nsq using the go-nsq client library.
// see config stuff in var below to play around with different scenarios.
import (
"log"
"os"
"os/signal"
"strconv"