Skip to content

Instantly share code, notes, and snippets.

View refset's full-sized avatar
🌍

Jeremy Taylor refset

🌍
View GitHub Profile
@refset
refset / xtsql.py
Created March 12, 2024 14:35
xtsql.py
#!/usr/bin/env python3
# MIT License
# Copyright (c) 2023-2024 Håkan Råberg and Steven Deobald
# Copyright (c) 2024 JUXT Ltd
# Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
(defn relate [& pairs]
(assert (even? (count pairs)) "relate requires an even number of arguments")
(->> pairs
(partition 2)
(map (fn [[k vs]] (map #(hash-map k %) vs)))
(apply map merge)))
(defn matches-specmap? [specmap m]
(reduce-kv
@refset
refset / explore_datafy_nav.clj
Created December 30, 2022 12:49 — forked from sashton/explore_datafy_nav.clj
Clojure datafy/nav exploration
(ns explore-datafy-nav
"Sample code demonstrating naving around a random graph of data.
The graph very likely will have circular references, which is not a problem.
To see the results, execute the entire file.
Each step in the nav process will be printed out, as well as the initial db.
Subsequent executions will generate a new random db."
(:require [clojure.datafy :refer [datafy nav]]))
(defn generate-db
"Generate a random database of users and departments.
@refset
refset / checkpoint_gc.clj
Created June 14, 2022 16:29 — forked from tggreene/checkpoint_gc.clj
Retain N Checkpoints
(ns excel.api.s3
(:require [cognitect.aws.client.api :as aws]
[integrant.core :as ig]
[clojure.tools.logging :as log]))
(defmethod ig/init-key ::client
[_ _]
(create-s3-client))
;; Code below may end up being a periodic background process for limiting s3
@refset
refset / flames_repl.clj
Created May 18, 2022 13:17 — forked from sw1nn/flames_repl.clj
Repl fns to generate a flame graph. (Not super sophisticated!)
;; Assumes https://github.com/jstepien/flames available
;; requires http://riemann.io to be installed.
(def flames (atom nil))
(defn flames-start! []
;; We resolve explicitly here, to avoid warnings when not working
;; with flamegraphs
(if-not @flames
(let [config {:port 54321, :host "localhost"}]
(reset! flames ((requiring-resolve 'flames.core/start!) config))
@refset
refset / get-current-pid.clj
Last active August 1, 2021 17:55
get-current-pid.clj
(-> (java.lang.management.ManagementFactory/getRuntimeMXBean)
(.getName)
(clojure.string/split #"@")
(first))
@refset
refset / visit.clj
Last active January 9, 2022 15:10
visit.clj
(defn visit [m visitors]
;; [node node-s next-s down-s right-s get-right get-down init-right-s cut-down cut-right :as m]
;; {:keys [break]} next-s
;; ;use next-state by default, unless down or right is necessary
(let
[dovisit (fn [m dir]
(loop [s m [v & vs] visitors]
(if v (recur (apply v (concat [dir] s)) vs) s)))
m2 (dovisit m :pre)
;break/cut checks should be between each visitor (:pre :post and :in) according to zip-visit
;; LWW Register
;; https://speakerdeck.com/ept/data-structures-as-queries-expressing-crdts-using-datalog?slide=15
(def schema
{:assign/time {:db/valueType :Number}
:assign/key {:db/valueType :Number}
:assign/value {:db/valueType :Number}})
(def rules
'[[(older ?t1 ?key)
;; RGA
;; https://speakerdeck.com/ept/data-structures-as-queries-expressing-crdts-using-datalog?slide=22
(def schema
{:id/node {:db/valueType :Number}
:id/ctr {:db/valueType :Number}
:insert/id {:db/valueType :Eid}
:insert/parent {:db/valueType :Eid}
:assign/id {:db/valueType :Eid}
:assign/elem {:db/valueType :Eid}