I hereby claim:
- I am bfabry on github.
- I am bfabryzendesk (https://keybase.io/bfabryzendesk) on keybase.
- I have a public key whose fingerprint is 2A45 6D06 1571 48C6 24ED 0818 4387 D162 16DE 2C6D
To claim this, I am signing this object:
user=> (pprint/pprint (take-last 14 (sort-by :date *3))) | |
({:date 20200428, | |
:positiveIncrease 1567, | |
:totalTestResultsIncrease 24199, | |
:percent-positive 0.06475474193148477} | |
{:date 20200429, | |
:positiveIncrease 1469, | |
:totalTestResultsIncrease 25531, | |
:percent-positive 0.057537895107908035} | |
{:date 20200430, |
bfabry@18723-bfabry ~/C/z/zcfn> cat ~/.gitconfig | |
[credential] | |
[core] | |
excludesfile = ~/.gitignore | |
editor = vim | |
[hub] | |
protocol = https |
I hereby claim:
To claim this, I am signing this object:
(ns kafka | |
(:require [clojure.core.async :as async :refer [<!! >!! thread]] | |
[com.stuartsierra.component :as component] | |
[clojure.tools.logging :as log]) | |
(:import (kafka.consumer ConsumerTimeoutException) | |
(org.I0Itec.zkclient.exception ZkTimeoutException) | |
(kafka.javaapi.consumer ZookeeperConsumerConnector) | |
(java.util Iterator) | |
(kafka.message MessageAndMetadata))) |
(reduce | |
(fn [acc v] | |
(let [v' (dec v)] | |
(if-not (and (even? v') (> v' 2)) | |
acc | |
(+ acc v')))) | |
0 | |
[1 2 3 4 5 6 7]) | |
=> 10 | |
(defn run-handwritten [] (reduce |
package clojure_dataflow; | |
import com.google.cloud.dataflow.sdk.transforms.DoFnWithContext; | |
import com.google.cloud.dataflow.sdk.transforms.windowing.BoundedWindow; | |
/** | |
* This class exists because DoFn relies on overriding abstract methods, | |
* but DoFnWithContext relies on overriding and annotating abstract methods, | |
* since annotating classmethods in clojure is a pain, we made this class. | |
* To use this class, extend it using `proxy` and override the abstract methods. |
(def bq-service (doto (Bigquery$Builder. (GoogleNetHttpTransport/newTrustedTransport) | |
(JacksonFactory/getDefaultInstance) | |
cred) | |
(.setApplicationName "nfi") | |
.build)) | |
(def ds (Dataset.)) | |
(.setAccess ds [(doto (Dataset$Access.) (.setRole "OWNER") (.setUserByEmail "bfabry@zendesk.com"))]) | |
(def built-bq-service (.build bq-service)) |
(defn filter-errors [v {:keys [^Aggregator bad-aggregator]] | |
(if (bad v) | |
(do | |
(.addValue bad-aggregator 1) | |
false) | |
true)) | |
(df/df-map "filter-errors" filter-errors {:aggregators [:bad-aggregator]}) | |
(sp/transform [(sp/filterer odd?) sp/LAST] inc [1 2 3 4]) | |
=> [1 2 4 4] | |
(sp/select [(sp/filterer odd?) sp/LAST] [1 2 3 4]) | |
java.lang.NullPointerException: | |
*e | |
=> | |
#error{:cause nil, | |
:via [{:type java.lang.NullPointerException, :message nil, :at [clojure.lang.Numbers ops "Numbers.java" 1013]}], | |
:trace [[clojure.lang.Numbers ops "Numbers.java" 1013] | |
[clojure.lang.Numbers add "Numbers.java" 128] |
(def MAP-VALS (sp/comp-paths sp/ALL sp/LAST)) | |
; increment the values for a list of keys | |
(sp/transform [(apply sp/multi-path [:foo])] inc {:foo 1 :bar 2}) => {:foo 2 :bar 2} | |
;; or | |
(sp/transform [(sp/submap [:foo]) MAP-VALS] inc {:foo 1 :bar 2}) | |
;; play with submaps | |
(sp/select [(submap [:foo :baz])] {:foo 1 :bar 2}) | |
=> [{:foo 1}] |