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 "[email protected]"))]) | |
| (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}] |