Skip to content

Instantly share code, notes, and snippets.

Avatar
🏠
Working from home

josh rotenberg joshrotenberg

🏠
Working from home
View GitHub Profile
View diag.kt
import kotlin.math.absoluteValue
fun diagonalDifference(arr: Array<Array<Int>>) = arr
.mapIndexed { index, ints -> Pair(ints[index], ints[arr.size - index - 1]) }
.reduce { pair, acc -> Pair(pair.first + acc.first, pair.second + acc.second) }
.let { pair -> pair.first - pair.second }
.absoluteValue
View diag.clj
(def input [[1 2 3] [4 5 6] [9 8 9]])
(defn diag-diff2
[arr]
(->> arr
(map-indexed (fn [i e] [(nth e i) (nth e (- (count arr) i 1))]))
(reduce (fn [acc [x y]] [(+ (first acc) x) (+ (second acc) y)]))
(reduce -)
Math/abs))
View sse_router.ex
defmodule MyApp.SSERouter do
use Plug.Router
@event_delay 2000
plug(:match)
plug(:dispatch)
defp send_chunk(conn) do
:timer.sleep(@event_delay)
View ginthing.go
package main
import (
"fmt"
"log"
"net/http"
"github.com/gin-gonic/gin"
)
@joshrotenberg
joshrotenberg / merge.kt
Created Jul 26, 2018 — forked from josdejong/merge.kt
Merge two data classes in Kotlin
View merge.kt
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 {
View is_loaded_module.ex
defmacro is_loaded_module(module) do
quote do
case Code.ensure_loaded(unquote(module)) do
{:module, module_name} -> true
_ -> false
end
end
end
View cassandra-flambo-save.clj
(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 Apr 6, 2016
code golfing a clojure function to determine if two numbers are opposite (1 and -1, for example)
View opposite.clj
(defn opposite?
"Returns true if x and y are opposite numbers, false otherwise."
[x y]
(and (zero? (+ x y))
(every? (complement zero?) [x y])))
View file_cache.clj
(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.
View deps
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
You can’t perform that action at this time.