Adds radio buttons page.

Adds radio buttons page.

error: pathspec 'src/cljs/reagent_toolbox_docs/components/radio_buttons.cljs' did not match any file(s) known to git

--- src/cljs/reagent_toolbox_docs/components/radio_buttons.cljs
+++ src/cljs/reagent_toolbox_docs/components/radio_buttons.cljs
@@ -0,0 +1,188 @@
+;;;; Copyright © 2017 Flexpoint Tech Ltd
+
+(ns reagent-toolbox-docs.components.radio-buttons
+  (:require [reagent-toolbox-docs.layout :as layout]
+            [reagent-toolbox-docs.ui :as ui]))
+
+(defn view
+  []
+  (fn []
+    [:article
+     [:h1 "Radio Buttons"]
+
+     [:p
+      [:a {:href "https://material.google.com/components/selection-controls.html#selection-controls-radio-button"} "Radio buttons"]
+      " allow the user to select one option from a set. Use radio buttons for exclusive "
+      "selection if you think that the user needs to see all available options side-by-side. "
+      "Otherwise, consider a dropdown, which uses less space than displaying all options. They "
+      "should always be used along with RadioGroup."]
+
+     [:p "You can provide the theme for this component using the key ToolboxButton."]
+
+     [ui/display-and-eval-code
+      "(defn radio-buttons-test
+         []
+           (let [radio-value (reagent.ratom/atom {:value \"vvendetta\"})]
+             (letfn [(target-value [t] (.. t -target -value))
+                     (select [sel] (swap! radio-value assoc :value (target-value sel)))]
+             (fn []
+              [:div
+               [:p \"Value: \" @radio-value]
+               [reagent-toolbox.core/radio-group {:name \"comic\"
+                                                  :value (:value @radio-value)}
+                [reagent-toolbox.core/radio-button {:label \"The Walking Dead\"
+                                                    :value \"thewalkingdead\"
+                                                    :checked (when (= (:value @radio-value) \"thewalkingdead\") true)
+                                                    :on-change #(select %)}]
+                [reagent-toolbox.core/radio-button {:label \"From Hell\"
+                                                    :value \"fromhell\"
+                                                    :disabled true}]
+                [reagent-toolbox.core/radio-button {:label \"V for Vendetta\"
+                                                    :value \"vvendetta\"
+                                                    :checked (when (= (:value @radio-value) \"vvendetta\") true)
+                                                    :on-change #(select %)}]
+                [reagent-toolbox.core/radio-button {:label \"Watchmen\"
+                                                    :value \"watchmen\"
+                                                    :checked (when (= (:value @radio-value) \"watchmen\") true)
+                                                    :on-change #(select %)}]]]))))
+
+       [radio-buttons-test]"]
+
+     [:section
+      [:h1 "Radio Group"]
+
+      [:p "A radio selector is mean to get a value from a set of choices, that 's why a radio "
+       "group is needed. It can take some properties and actions that will be transferred to "
+       "the children, but they also can behave independently."]]
+
+     [:section
+      [:h2 "Properties"]
+
+      [:table
+       [:thead
+        [:tr
+         [:th "Name"]
+         [:th "Type"]
+         [:th "Default"]
+         [:th "Description"]]]
+       [:tr
+        [:td [:code "class-name"]]
+        [:td [:code "string"]]
+        [:td [:code "''"]]
+        [:td "Set a class to give custom styles to the group."]]
+       [:tr
+        [:td [:code "disabled"]]
+        [:td [:code "boolean"]]
+        [:td [:code "false"]]
+        [:td "If true, the group will be displayed as disabled."]]
+       [:tr
+        [:td [:code "name"]]
+        [:td [:code "string"]]
+        [:td]
+        [:td "Name for the input element group."]]
+       [:tr
+        [:td [:code "on-change"]]
+        [:td [:code "function"]]
+        [:td]
+        [:td "Callback function that will be invoked when the value changes."]]
+       [:tr
+        [:td [:code "value"]]
+        [:td [:code "any"]]
+        [:td]
+        [:td "Default value selected in the radio group."]]]]
+
+     [:section
+      [:h1 "Radio Button"]
+
+      [:p "The inner component to compose radio selectors. They will be rendered as radio input "
+       "elements of HTML transferring the given properties that concerns to them."]]
+
+     [:section
+      [:h2 "Properties"]
+
+      [:table
+       [:thead
+        [:tr
+         [:th "Name"]
+         [:th "Type"]
+         [:th "Default"]
+         [:th "Description"]]]
+       [:tr
+        [:td [:code "checked"]]
+        [:td [:code "boolean"]]
+        [:td [:code "false"]]
+        [:td "If true, the input element will be selected by default. Transferred from the "
+         "parent."]]
+       [:tr
+        [:td [:code "class-name"]]
+        [:td [:code "string"]]
+        [:td [:code "''"]]
+        [:td "Set a class to give custom styles to the radio button."]]
+       [:tr
+        [:td [:code "disabled"]]
+        [:td [:code "boolean"]]
+        [:td [:code "false"]]
+        [:td "If true, the item will be displayed as disabled."]]
+       [:tr
+        [:td [:code "label"]]
+        [:td [:code "string or node"]]
+        [:td [:code "''"]]
+        [:td "Label for the radio button."]]
+       [:tr
+        [:td [:code "name"]]
+        [:td [:code "string"]]
+        [:td]
+        [:td "Name for the input element."]]
+       [:tr
+        [:td [:code "on-blur"]]
+        [:td [:code "function"]]
+        [:td]
+        [:td "Callback function that will be invoked when the input is blurred."]]
+       [:tr
+        [:td [:code "on-change"]]
+        [:td [:code "function"]]
+        [:td]
+        [:td "Callback function that will be invoked when the value changes."]]
+       [:tr
+        [:td [:code "on-focus"]]
+        [:td [:code "function"]]
+        [:td]
+        [:td "Callback function that will be invoked when the input is focused."]]
+       [:tr
+        [:td [:code "value"]]
+        [:td [:code "any"]]
+        [:td]
+        [:td "Value for the radio button."]]]]
+
+     [:section
+      [:h2 "Theming"]
+
+      [:table
+       [:thead
+        [:tr
+         [:th "Name"]
+         [:th "Description"]]]
+       [:tr
+        [:td [:code "disabled"]]
+        [:td "Added to the root of the Radio in case it's disabled."]]
+       [:tr
+        [:td [:code "field"]]
+        [:td "Used as the root class of the component."]]
+       [:tr
+        [:td [:code "input"]]
+        [:td "Used for the input element."]]
+       [:tr
+        [:td [:code "radio"]]
+        [:td "Used to for the radio element."]]
+       [:tr
+        [:td [:code "radio-checked"]]
+        [:td "Used for the radio element when it's checked."]]
+       [:tr
+        [:td [:code "ripple"]]
+        [:td "To provide styles for the ripple."]]
+       [:tr
+        [:td [:code "text"]]
+        [:td "Used to style the text label element."]]]]]))
+
+(defmethod layout/pages :radio-buttons [_]
+  [view])


fooling around, trying to learn enough cascalog to sample static data

error: pathspec 'src/clj/forma/source/static.clj' did not match any file(s) known to git

--- src/clj/forma/source/static.clj
+++ src/clj/forma/source/static.clj
@@ -0,0 +1,165 @@
+(ns forma.source.static
+  (:use cascalog.api
+        [clojure.string :only (split)]
+        [forma.source.modis :only (latlon->modis)])
+  (:require [cascalog.ops :as c]))
+
+(def man-str "adsfkj,adsklf,dafj,adka,dafj")
+(defn mangle
+  [line]
+  (split line #","))
+
+(defmapop add-mangled
+  [x]
+  (mangle "adsfkj,adsklf,dafj,adka,dafj"))
+
+(defmapcatop add-mangled-catop
+  [x]
+  (mangle "adsfkj,adsklf,dafj,adka,dafj"))
+
+(defmapop add-2-fields
+  [x]
+  [1 4])
+
+(def source
+  (memory-source-tap [["a" 1]
+                      ["b" 2]
+                      ["a" 3]]))
+
+(defn queer-test [tuple-source]
+  (<- [?c ?x ?lat ?lon ?d ?fire]
+      (tuple-source _ ?c)
+      (add-mangled ?c :> ?x ?lat ?lon ?d ?fire)))
+
+(defn queer-catop [tuple-source]
+  (let [sub-source (queer-test tuple-source)]
+    (<- [?c ?x ?lat ?str]
+        (sub-source ?c ?x ?lat ?lon ?d ?fire)
+        (add-mangled-catop ?c :> ?str))))
+
+(comment
+  (?- (stdout)
+      (queer-catop source)))
+
+#_(defn run-job [path]
+  (let [source (hfs-textline path)]
+    (?<- (stdout)
+         [?mod-h ?mod-v ?sample ?line ?fire-count]
+         (source ?line)
+         (mangle ?line :> _ ?lat ?lon ?fire)
+         (< ?fire 500)
+         (latlon->modis ?lat ?lon :> ?mod-h ?mod-v ?sample ?line)
+         (c/count ?fire-count))))
+
+
+(defn to-nums
+  [& strings]
+  (map #(Float. %) strings))
+
+(defn mangle
+  [line]
+  (apply to-nums
+         (subvec (split line #",") 0 3)))
+
+(def fire-file "/Users/danhammer/Desktop/workspace/data/fires/MCD14DL.2011075.txt")
+
+(defmapop latlon [lat lon]
+  [(latlon->modis "1000" lat lon)])
+
+(defn mangle [line]
+  (map (fn [val]
+         (try (Float. val)
+              (catch Exception _ val)))
+       (split line #",")))
+
+(defn fire-count [path]
+  (let [source (hfs-textline path)]
+    (?<- (stdout)
+         [?lat ?lon ?mod-h ?mod-v ?sample ?line ?temp]
+         (source ?line)
+         (mangle ?line :> ?lat ?lon ?temp _ _ _ _ _ _ _ _ _)
+         (> ?temp 330)
+         (latlon->modis "1000" ?lat ?lon :> ?mod-h ?mod-v ?sample ?line)
+         ;; (c/count ?fire-count)
+         )))
+
+(defn fire-source [source]
+  (<- [?lat ?lon ?temp]
+      (source ?line)
+      (mangle ?line :> ?lat ?lon ?temp _ _ _ _ _ _ _ _ _)))
+
+(defn fire-count [path]
+  (let [f-source (-> path hfs-textline fire-source)]
+    (<- [?mod-h ?mod-v ?sample ?line ?fire-count]
+        ;; [?fire-count]
+        (f-source ?lat ?lon ?temp)
+        (> ?temp 330)
+        (latlon->modis "1000" ?lat ?lon :> ?mod-h ?mod-v ?sample ?line)
+        (c/count ?fire-count))))
+
+(defn count-the-count [path-source]
+  (let [sub-source (fire-count path-source)]
+    (<- [?f-count ?c-count]
+        (sub-source _ _ _ _ ?f-count)
+        (c/count ?c-count))))
+
+(comment
+  (?- (stdout)
+      (count-the-count fire-file))
+  (?- (stdout)
+      (fire-count fire-file))
+  )
+
+(defn queer-test [tuple-source]
+  (<- [?c ?x ?lat ?lon ?d ?fire]
+      (tuple-source _ ?c)
+      (add-mangled ?c :> ?x ?lat ?lon ?d ?fire)))
+
+(defn queer-catop [tuple-source]
+  (let [sub-source (queer-test tuple-source)]
+    (<- [?c ?x ?lat ?str]
+        (sub-source ?c ?x ?lat ?lon ?d ?fire)
+        (add-mangled-catop ?c :> ?str))))
+
+(def cntry-file "/Users/danhammer/Desktop/grid.txt")
+
+(defn cntry-get-id [line]
+  (first (map (fn [val]
+                (try (Float. val)
+                     (catch Exception _ val)))
+              (split line #" "))))
+
+(defn liberate
+  "Takes a line with an index as the first value and numbers as the
+  rest, and converts it into a 2-tuple formatted as `[idx, row-vals]`,
+  where `row-vals` are sealed inside an `int-array`.
+
+Example usage:
+
+    (liberate \"1 12 13 14 15\")
+    ;=> [1 #<int[] [I@1b66e87>]"
+  [line]
+  (let [[idx & row-vals] (map #(Integer. %)
+                              (split line #" "))]
+    [idx (int-array row-vals)]))
+
+(defn get-unique-cntry
+  [int-array]
+  (first (filter pos? int-array)))
+
+(defmapcatop free-cols
+  [row]
+  (map-indexed vector row))
+
+(defn cntry-source [path]
+  (let [source (hfs-textline path)]
+    (<- [?row-idx ?col-idx ?val]
+        (source ?line)
+        (liberate ?line :> ?row-idx ?row-vec)
+        (free-cols ?row-vec :> ?col-idx ?val))))
+
+(comment
+  (?- (stdout)
+      (cntry-source cntry-file)))
+
+


Minor whitespace cleanup.

Minor whitespace cleanup.

--- src/clj/freefrog/lang.clj
+++ src/clj/freefrog/lang.clj
@@ -78,11 +78,9 @@
     [(first v) (second v)]
     [(first v) (rest v)]))

-(defn array-to-map [v]
-  {(first v) (second v)})
+(defn array-to-map [v] {(first v) (second v)})

-(defn merge-array-values [v]
-  (apply merge-with (concat [concat] v)))
+(defn merge-array-values [v] (apply merge-with (concat [concat] v)))

 (defn process-command
   "Execute the given governance transformation on the given


Had to make a minor tweak to the range radial-coords checks so it also includes the last column and row. Range 0 6 would return up to and excluding 6 numbers.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/Yoshiyuka/cthulhu.git/'


La til Clojure-løsning på Frengers

La til Clojure-løsning på Frengers

error: pathspec 'frengers/larstvei.clj' did not match any file(s) known to git

--- frengers/larstvei.clj
+++ frengers/larstvei.clj
@@ -0,0 +1,18 @@
+(require '[clojure.set :refer [intersection]]
+         '[clojure.string :refer [split]]
+         '[clojure.java.io :refer [reader]])
+
+(defn add [[friendmap met] data]
+  (if (= (data 0) "friends")
+    [(-> friendmap
+         (update (data 1) (fnil conj #{}) (data 2))
+         (update (data 2) (fnil conj #{}) (data 1))) met]
+    [friendmap (conj met [(data 1) (data 2)])]))
+
+(defn frengers [friendmap [a b]]
+  (and (<= 3 (count (intersection (friendmap a) (friendmap b))))
+       (not ((fnil (friendmap a) #{}) b))))
+
+(let [data (map #(split % #" ") (line-seq (reader *in*)))
+      [friendmap met] (reduce add [{} #{}] data)]
+  (-> (filter (partial frengers friendmap) met) count println))


fix typography namespace

fix typography namespace

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Add phase-0d after all - manually made sample fqs can make use of this

error: pathspec 'Jobs/tnseq-phase-0d-job-template.clj' did not match any file(s) known to git

--- Jobs/tnseq-phase-0d-job-template.clj
+++ Jobs/tnseq-phase-0d-job-template.clj
@@ -0,0 +1,10 @@
+
+{:nodes
+ {:ph0
+  {:name "tnseq-phase0-d",
+   :type "tool",
+   :args []}
+  :prn1 {:type "func",
+         :name "prn"}},
+ :edges
+ {:ph0 [:prn1]}}


add a very simply unit test of our publisher/subscriber system in metabase.events

error: pathspec 'test/metabase/events_test.clj' did not match any file(s) known to git

--- test/metabase/events_test.clj
+++ test/metabase/events_test.clj
@@ -0,0 +1,26 @@
+(ns metabase.events-test
+  (:require [clojure.core.async :as async]
+            [expectations :refer :all]
+            [metabase.events :as events]
+            (metabase [task :refer :all]
+                      [test-setup :refer :all])))
+
+(def testing-topic :event-test-topic)
+
+(def testing-sub-channel (async/chan))
+
+
+;; ## Basic Pub/Sub TESTS
+
+(events/subscribe-to-topic testing-topic testing-sub-channel)
+
+;; we should get back our originally posted object no matter what happens
+(expect
+  {:some :object}
+  (events/publish-event testing-topic {:some :object}))
+
+;; when we receive a message it should be wrapped with {:topic `topic` :item `message body`}
+(expect
+  {:topic testing-topic
+   :item  {:some :object}}
+  (async/<!! testing-sub-channel))


Fixing timeline-annotation endpoint path

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/physion/ovation-webapi.git/'


Clojure 1.4 compatibility: remove cond-> from futures/transform

--- core/src/finagle_clojure/futures.clj
+++ core/src/finagle_clojure/futures.clj
@@ -330,14 +330,14 @@
     A new Future.

   See [[flatmap]] & [[rescue]]."
-  ([^Future f success-fn]
+  ([^Future f success-fn]
    (transform f success-fn nil))
   ([^Future f success-fn failure-fn]
-   ;; TODO  what is the min target version of clojure? cond-> only since 1.5
-   (cond-> f
      ;; order is important here, flatmap before rescue works, rescue before flatmap doesn't
-     (fn? success-fn) (flatmap [v] (success-fn v))
-     (fn? failure-fn) (rescue [t] (failure-fn t)))))
+    (let [with-success (flatmap f [v] (success-fn v))]
+      (if (fn? failure-fn)
+        (rescue with-success [t] (failure-fn t))
+        with-success))))

 (defmacro match-class
   "Sugar for conditional execution based on the class of the first argument `value`.
@@ -348,7 +348,7 @@
     * `value`: the class of this argument will be used to dispatch with `body`.
     * `body`: like the body of a cond expression, expected-class expr

-  e.g.
+  e.g.

   ````
   (match-class (IllegalArgumentException.)


WIP.  Begin popovers. Further boxification.

error: pathspec 'src/re_demo/re_dome.util.clj' did not match any file(s) known to git

--- src/re_demo/re_dome.util.clj
+++ src/re_demo/re_dome.util.clj
@@ -0,0 +1 @@
+ (ns re-dome.util)


Iruzkina ezabatu

Iruzkina ezabatu

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lnmnd/magnet.bez.git/'


post/savecontent.clj: created job

post/savecontent.clj: created job

To save HTML content as hash-indexed objects in S3

error: pathspec 'src/org/altlaw/jobs/post/savecontent.clj' did not match any file(s) known to git

--- src/org/altlaw/jobs/post/savecontent.clj
+++ src/org/altlaw/jobs/post/savecontent.clj
@@ -0,0 +1,31 @@
+(ns org.altlaw.jobs.savecontent
+  (:require [org.altlaw.util.hadoop :as h]
+            [org.altlaw.util.log :as log]
+            [org.altlaw.util.context :as context]
+            [org.altlaw.db.content :as content]))
+
+(h/setup-mapreduce)
+
+(defn my-map [docid doc]
+  (if (:html doc)
+    (do (h/counter "Put content")
+        (let [hash (content/put-content-string
+                    (:html doc) {"Content-Type" "text/html"})]
+          [[docid {:html_content_sha1 hash}]]))
+    (do (h/counter "No HTML")
+        (log/warn "No HTML for docid " docid)
+        nil)))
+
+(def mapper-map (partial h/standard-map my-map))
+
+(defn tool-run [this args]
+  (let [job (h/default-jobconf this)
+        outpath (Path. (h/job-path :post :savecontent))]
+    (.setJobName job "savecontent")
+    (FileInputFormat/setInputPaths job (h/job-path :analyze :merge))
+    (FileOutputFormat/setOutputPath job outpath)
+    (.delete (FileSystem/get job) outpath true)
+    (.setMapperClass job org.altlaw.jobs.post.savecontent_mapper)
+    (.setNumReduceTasks job 0)
+    (JobClient/runJob job))
+  0)


Skip purging attempt in dev

Skip purging attempt in dev

The token will be set, but to "NOTSET". Without this check, this
throws in the upload tests.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobias/clojars-web.git/'


get subscription status from payments and add link to payments history


fix typo :unamused:

fix typo :unamused:

--- src/metabase/db/migrate_details.clj
+++ src/metabase/db/migrate_details.clj
@@ -17,7 +17,7 @@

 (def ^:private ^:const convert-legacy-connection-details
   {:postgres (fn [details]
-               (merge details) (postgres/parse-legacy-conn-str (:conn_str details)))
+               (merge details (postgres/parse-legacy-conn-str (:conn_str details))))
    :h2       (fn [details]
                (assoc details :db (:conn_str details)))
    :mongo    (fn [details]


ARM: 5832/1: ARM: U8500 Makefile.boot

ARM: 5832/1: ARM: U8500 Makefile.boot

The Makefile.boot for the U8500 platform

Signed-off-by: srinidhi kasagar <36bfbb1c304809ea0032a12663697185f6a407dd@stericsson.com>
Signed-off-by: Russell King <f6aa0246ff943bfa8602cdf60d40c481b38ed232@arm.linux.org.uk>

fatal: unable to access 'https://github.com/KristFoundation/Programs.git/': The requested URL returned error: 403


remove debug code

remove debug code

--- test/metabase/api/revision_test.clj
+++ test/metabase/api/revision_test.clj
@@ -8,16 +8,6 @@
                              [dashboard-card :refer [DashboardCard]]
                              [revision-test :refer [with-fake-card]])
             [metabase.test.data.users :refer :all]))
-
-
-(defn x []
-  (with-fake-card [{card-id₁ :id}]
-    (with-fake-card [{card-id₂ :id}]
-      ((user->client :rasta) :get 200 "revision", :entity :card, :id card-id₁))))
-
-(defn y []
-  (with-fake-card [{card-id :id}]
-    ((user->client :rasta) :get 200 "revision", :entity :card, :id card-id)))

 (defn- fake-dashboard [& {:as kwargs}]
   (m/mapply db/ins Dashboard (merge {:name         (str (java.util.UUID/randomUUID))


Nested Layout

Nested Layout

fatal: unable to access 'https://github.com/yhoshino11/tutorial.git/': The requested URL returned error: 403


Improve a function name

Improve a function name

--- src/refactor_nrepl/rename_file_or_dir.clj
+++ src/refactor_nrepl/rename_file_or_dir.clj
@@ -152,7 +152,7 @@
     [new-path]
     (conj dependents new-path)))

-(defn- rename-clj-file
+(defn- rename-source-file
   "Move file from old to new, updating any dependents."
   [old-path new-path]
   (let [old-ns (util/ns-from-string (slurp old-path))
@@ -198,7 +198,7 @@
                           (rename-dir old-path new-path)
                           (if ((some-fn util/clj-file? util/cljs-file?)
                                (File. old-path))
-                            (rename-clj-file old-path new-path)
+                            (rename-source-file old-path new-path)
                             (rename-file! old-path new-path)))]
     (->> affected-files
          flatten


Add subscription/read-handler tests

Add subscription/read-handler tests

Since I changed these handlers for kehaar 0.8.x and managed to break
them the first time, this seemed prudent to do now.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/ballot-notification-works.git/'


Add the simplest possible nearest neighbour search.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/cstorey/nrod.git/'


reset connection state in cljs when WS closes

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/modnakasta/weasel.git/'


moved file based operations to own namespace

error: pathspec 'src/error_codes/files.clj' did not match any file(s) known to git

--- src/error_codes/files.clj
+++ src/error_codes/files.clj
@@ -0,0 +1,429 @@
+(ns error-codes.files
+  (:require [clojure.java.io :refer [file]]
+            [clojure.set :as set])
+  (:use [clojure.core.matrix]))
+
+(set! *warn-on-reflection* true)
+(def ^:dynamic *DEBUG* false)
+
+(defn dprintln [& args]
+  (when *DEBUG*
+    (println args)))
+
+(defn lev [str1 str2]
+  (let [mat (new-matrix :ndarray (inc (count str1)) (inc (count str2)))]
+     (mset! mat 0 0 0)
+     (dotimes [i (count str1)]
+       (mset! mat (inc i) 0 (inc i)))
+     (dotimes [j (count str2)]
+       (mset! mat 0 (inc j) (inc j)))
+     (dotimes [dj (count str2)]
+       (dotimes [di (count str1)]
+         (let [j (inc dj) i (inc di)]
+           (mset! mat i j
+                  (cond
+                   (= (.charAt ^String str1 di) (.charAt ^String str2 dj))
+                   (mget mat di dj)
+                   :else
+                   (min (inc (mget mat di j)) (inc (mget mat i dj))
+                        (inc (mget mat di dj))))))))
+     mat))
+
+(defn backtrace [d i j acc]
+  (cond
+   (and (> i 0) (= (inc (mget d (dec i) j)) (mget d i j)))
+   (recur d (dec i) j (assoc acc :deletions (cons [(dec i) j] (:deletions acc))))
+   (and (> j 0) (= (inc (mget d i (dec j))) (mget d i j)))
+   (recur d i (dec j) (assoc acc :insertions (cons [i (dec j)] (:insertions acc))))
+   (and (> i 0) (> j 0) (= (inc (mget d (dec i) (dec j))) (mget d i j)))
+   (recur d (dec i) (dec j) (assoc acc :substitutions (cons [(dec i) (dec j)] (:substitutions acc))))
+   (and (> i 0) (> j 0) (= (mget d (dec i) (dec j)) (mget d i j)))
+   (recur d (dec i) (dec j) acc)
+   :else acc))
+
+(defn edits [a b]
+  (let [d (lev a b)]
+    (backtrace d (count a) (count b) {:insertions '() :deletions '()
+                                      :substitutions '()
+                                      :distance (mget d (count a) (count b))})))
+
+(declare extraction-list)
+
+(defn edits-to-error-codes
+  ([edits t1 t2] (edits-to-error-codes edits t1 t2 extraction-list))
+  ([edits t1 t2 extraction-list]
+     (let [{:keys [substitutions deletions insertions]} edits]
+       (-> (reduce (fn [[codes edits] f]
+                     (let [[ncodes nedits] (f edits t1 t2)]
+                       [(concat codes ncodes) nedits])) [[] edits] extraction-list)
+           first))))
+
+
+(defn error-codes
+  [t1 t2]
+  (as-> (edits t1 t2) x
+        (edits-to-error-codes x t1 t2)
+        ;;sort the codes so that the error-codes are ordered by position in text
+        (sort-by (comp second second) x)))
+
+(defn to-code-number [^Character c]
+  (cond
+   (#{\ä \ö \ü \ß \Ä \Ö \Ü \( \) \„ \¬} c) 4
+   (Character/isLetter c) 1
+   (#{\. \, \? \! \: \;} c) 2
+   (Character/isDigit c) 3
+   (= c \space) 5
+   :else 4))
+
+(defn extract-substitution-errors [edits t1 t2]
+  (let [codes (for [[p1 p2] (:substitutions edits)]
+                (let [c1 (nth t1 p1) c2 (nth t2 p2)
+                      [f1 f2] (map to-code-number [c1 c2])]
+                  [[f1 f2] [p1 p2]]))]
+    [codes (assoc edits :substitutions [])]))
+
+(defn extract-insertion-errors [edits t1 t2]
+  (let [codes (for [[p1 p2] (:insertions edits)]
+                (let [ c2 (nth t2 p2)
+                      f2 (to-code-number c2)]
+                  [[8 f2] [p1 p2]]))]
+    [codes (assoc edits :insertions [])]))
+
+(defn extract-deletion-errors [edits t1 t2]
+  (let [codes (for [[p1 p2] (:deletions edits)]
+                (let [c1 (nth t1 p1)
+                      f1 (to-code-number c1)]
+                  [[f1 8] [p1 p2]]))]
+    [codes (assoc edits :deletions [])]))
+
+(def bar-map
+  {\A 2 \a 2 \B 2 \b 2 \C 2 \c 1 \D 2 \d 2 \E 2 \e 1 \F 2 \f 1 \G 3 \g 2
+   \H 2 \h 2 \I 2 \J 2 \i 1 \j 1 \K 2 \k 1 \L 2 \l 1 \M 4 \m 3 \N 3 \n 2
+   \O 2 \o 2 \P 3 \p 2 \Q 2 \q 2 \R 3 \r 1 \S 2 \s 2 \T 2 \t 1 \U 2 \u 2
+   \V 3 \v 2 \W 4 \w 3 \X 2 \x 1 \Y 3 \y 2 \Z 2 \z 1 \ü 2})
+
+
+(defn lookup-bar [char]
+  (get bar-map char 1))
+
+(defn- extract-following-substitutions [substitutions]
+  (when (seq substitutions)
+    (reduce (fn [l [a b]]
+              (if (= (map inc (last (last l))) [a b])
+                ;;add to current group
+                (update-in l [(dec (count l))] #(conj % [a b]))
+                ;;make a new group
+                (conj l [[a b]])))
+            [[(first substitutions)]] (rest substitutions))))
+
+(defn- following [[a b] insdel type]
+  (loop [[ia ib] [(inc a) (inc b)] acc []]
+    (if (some #{[ia ib]} insdel)
+      (recur (case type
+               :one-to-many [ia (inc ib)]
+               :many-to-one [(inc ia) ib]) (conj acc [ia ib]))
+      acc)))
+
+(defn- add-following [following-substitutions insdel type]
+  (for [fs following-substitutions
+        :let [if (following (last fs) insdel type)]
+        :when (seq if)]
+    [fs (concat fs if)]))
+
+(defn- take-bars [t1 t2 [a b] insdel type]
+  (let [res (let [bar-count (lookup-bar (case type
+                                :one-to-many (nth t1 a)
+                                :many-to-one (nth t2 b)))
+                  _ (dprintln "bar-count " bar-count (nth t1 a))]
+    (loop [[[ia ib] & is] insdel acc 0 ret []]
+      (if ia
+        (let [bc (lookup-bar (case type
+                               :one-to-many (nth t2 ib)
+                               :many-to-one (nth t1 ia)))
+#_#_              _ (dprintln "bc " bc (nth t2 ib)
+                     "acc " acc " ret " ret
+                     (>= (+ acc bc) bar-count)
+                     "ia ib " ia ib)]
+          (if (>= (+ acc bc) bar-count)
+            (conj ret [ia ib])
+            (recur is (+ acc bc) (conj ret [ia ib]))))
+        ret)))]
+     (dprintln "take-bars " res)
+     res))
+  ;;;todo take care of how many are allowed to be extracted
+  ;;;we know that count-free is > 0 at the beginning
+  ;;;be careful at the start of the error
+(defn- extract [t1 t2 fl type]
+  (for [[fs insdel] fl]
+    (let [_ (dprintln "fs " fs "insdel " insdel "count-free" (- (count insdel) (count fs)))
+          count-freepp (- (count insdel) (count fs))]
+      (loop [[[a b] & ss :as aktfs] fs extr [] insdel insdel
+             count-free (- (count insdel) (count fs))]
+        (if (and a (seq insdel))
+          (let [ext (take-bars t1 t2 [a b] (take (inc count-free) insdel) type)
+                _ (dprintln "ext-after-take-bars " [a b]  ext "insdel-for-ext " insdel "count-free " count-free)]
+            (recur ;dont drop here
+             ss
+             (conj extr [[a b] ext])
+             (drop (count ext) insdel)
+             (- count-free (- (count ext) 1))))
+          extr)))))
+
+(defn- delete-from-edits [edits to-delete]
+  (into {} (for [[k v] (dissoc edits :distance)] [k (remove (set to-delete) v)])))
+
+
+(defn to-single-error [t1 t2 a b]
+  (cond
+   (= (count t1) a) (let [c2 (nth t2 b)
+                          f2 (to-code-number c2)]
+                       [[8 f2] [a b]])
+   (= (count t2) b) (let [c1 (nth t1 a)
+                          f1 (to-code-number c1)]
+                       [[f1 8] [a b]]);;deletion
+   :else [[(to-code-number (nth t1 a))
+           (to-code-number (nth t2 b))]
+          [a b]]))
+
+(defn extract-count-changing-errors [type edits t1 t2]
+  (let [{:keys [substitutions insertions deletions]} edits
+        fs (extract-following-substitutions substitutions)
+        _ (dprintln "fs " fs)
+        fi (add-following fs (case type :one-to-many insertions :many-to-one deletions) type)
+        _ (dprintln "fi " fi)
+        ext (apply concat (extract t1 t2 fi type))
+        _ (dprintln "ext " ext)
+        nedits (delete-from-edits edits (partition 2 (flatten ext)))
+        res
+        [(for [[[a b] e] ext]
+           (case (count e)
+             1 (let [[_ b] (first e)]
+                 (to-single-error t1 t2 a b))
+             (case type
+               :one-to-many [[(to-code-number (nth t1 a)) 7]
+                             [a (second (first e))] [(inc a) (second (last e))]]
+               :many-to-one [[7 (to-code-number (nth t2 b))]
+                             [(first (first e)) b] [(first (last e)) (inc b)]]))) nedits]
+        _ (dprintln "extr " ext "res" (first res))]
+    res))
+
+(def extraction-list
+  [(partial extract-count-changing-errors :one-to-many)
+   (partial extract-count-changing-errors :many-to-one)
+   extract-substitution-errors
+   extract-insertion-errors
+   extract-deletion-errors])
+
+(use 'clojure.java.io)
+(defn get-files-sorted [dir]
+  (->> (file-seq (file dir))
+       rest
+       (sort-by #(.getName  %))))
+#_(file-locations for now... "/home/kima/programming/ocr-visualizer/resources/public/ground-truth/" "/home/kima/programming/ocr-visualizer/resources/public/edits," "/home/kima/programming/ocr-visualizer/resources/public/ocr-results/")
+
+(defn deploy-to-ocr-visualizer []
+  (let [gts (get-files-sorted "/home/kima/programming/ocr-visualizer/resources/public/ground-truth/")
+        ocr-res (get-files-sorted "/home/kima/programming/ocr-visualizer/resources/public/ocr-results/")]
+    (doall (pmap (fn [gt ocr]
+                   (let [filename (str "/home/kima/programming/ocr-visualizer/resources/public/edits/" (.getName gt))]
+                     (dprintln "error-counts for " filename)
+                     (spit filename (pr-str (error-codes (slurp gt) (slurp ocr))))))
+                 gts ocr-res))))
+
+
+(defn deploy-error-codes [base-directory]
+  (let [gts (get-files-sorted (file base-directory "ground-truth/"))
+        ocr-res (get-files-sorted (file base-directory "ocr-results/"))]
+    (doall (pmap (fn [gt ocr]
+                   (let [filename (file base-directory
+                                        "edits/" (.getName gt))]
+                     (dprintln "error-counts for " filename)
+                     (spit filename (pr-str (error-codes (slurp gt) (slurp ocr))))))
+                 gts ocr-res))))
+
+(def base-directories
+  ["/home/kima/programming/grenzbote-files/grenzbote/abby"
+   "/home/kima/programming/grenzbote-files/grenzbote/recognition-server_output_mit-woerterbuch"
+   "/home/kima/programming/grenzbote-files/grenzbote/recognition-server_output_mit-woerterbuch_2014-07-16"
+   "/home/kima/programming/grenzbote-files/grenzbote/recognition-server_output_ohne-woerterbuch"
+   "/home/kima/programming/grenzbote-files/grenzbote/recognition-server_output_ohne-woerterbuch_2014-07-16"
+   "/home/kima/programming/grenzbote-files/grenzbote/tesseract_trainiert_gem"
+   "/home/kima/programming/grenzbote-files/grenzbote/tesseract_untrainiert"
+   "/home/kima/programming/grenzbote-files/grenzbote/Wikisource-erster-Band"
+   "/home/kima/programming/grenzbote-files/grenzbote/Wikisource-erster-Band_2014-07-16"
+   "/home/kima/programming/grenzbote-files/grenzbote/statistic-test"
+   "/home/kima/programming/grenzbote-files/grenzbote/new-test"
+   "/home/kima/programming/grenzbote-files/grenzbote/abby_verbessert"
+   ])
+
+(defn deploy-base-direcories []
+  (doseq [bd base-directories]
+    (dprintln "<<<<<<<<<<<<<<<<<now " bd ">>>>>>>>>>>>>>>>>>")
+    (deploy-error-codes bd)))
+
+(defn word-count [text]
+  (as-> text x
+        (.split x "\\s*")
+        (remove empty? x)
+        (count x)))
+
+
+(defn error-code-to-matrix-entries [augmented-error-code]
+  (let [[[[a b] & res :as error-code] [f t]] augmented-error-code]
+    (cond
+     (some #{8} [a b]) [[a b]]
+     (= b 7) [[a b]]
+     (= a 7) (map (fn [fc] [(to-code-number fc) 6]) f)
+     (or (= (str f) (.toUpperCase (str t)))
+         (= (str t) (.toLowerCase (str f))))
+     [[1 9]]
+     :else [[a b]])))
+(defn save-nth [x p]
+  (if (>= p (count x)) \?
+      (nth x p)))
+
+(defn save-subs [x ps pe]
+  (if (or (>= ps (count x))
+          (>= pe (count x)))
+    "?" (subs x ps pe)))
+
+(defn build-error [a b error-code]
+  (cond
+   (= 8 (get-in error-code [0 0]))
+   ["" (str (save-nth b (get-in error-code [1 1])))]
+   (= 8 (get-in error-code [0 1]))
+   [(str (save-nth a (get-in error-code [1 0]))) ""]
+   (= 2 (count error-code))
+   (let [[code [l r]] error-code] ;;todo
+     [(str (save-nth a l))
+      (str (save-nth b r))])
+   (= 7 (get-in error-code [0 1]))
+   (let [[code [ls rs] [le re]] error-code]
+     [(save-subs a ls le) (save-subs b rs (inc re))])
+   (= 7 (get-in error-code [0 0]))
+   (let [[code [ls rs] [le re]] error-code]
+     [(save-subs a ls (inc le)) (save-subs b rs re)])))
+
+
+
+(defn augment-error-code [a b error-code]
+  [error-code (build-error a b error-code)])
+
+
+(defn no-insertions-or-deletions [matrix-entry]
+  (not (some #{8} matrix-entry)))
+
+(def stichwortsuche #{[1 1] [1 2] [1 3] [1 4] [1 5] [1 6] [1 7] [1 8]
+                      [3 1] [3 2] [3 3] [3 4] [3 5] [3 6] [3 7] [3 8]
+                      [4 1] [4 2] [4 3] [4 4] [4 5] [4 6] [4 7] [4 8]
+                      [8 1] [8 2] [8 3] [8 4] [8 5] [8 6] [8 7]})
+
+(def case-sensitive-stickwortsuche
+  (set/union stichwortsuche #{[1 9] [4 9]}))
+
+(def phrasensuche
+  (set/union stichwortsuche
+             #{[5 1] [5 2] [5 3] [5 4] [5 5] [5 6] [5 7] [5 8]}))
+
+(defn strip-first-and-last-lines [errors gt ocr]
+  (let [lines (.split gt "\n")
+        end-of-first-line (count (first lines))
+        start-of-last-line (- (count gt) (count (last lines)))]
+    (dprintln end-of-first-line start-of-last-line)
+    (filter (fn [[code [gt _] & rest]]
+              (> start-of-last-line gt end-of-first-line)) errors)))
+
+
+(defn strip-start-and-end-errors [errors gt ocr]
+  (let [starting (take-while #(some (fn [[code [_ ocr] & rest]]
+                                      (= % ocr)) errors) (range))
+        ending (take-while #(some (fn [[code [_ ocr] & rest]]
+                                    (= % ocr)) errors)
+                           (range (dec (count ocr)) 0 -1))
+        starting (or (last starting) 0)
+        ending (or (last ending) (count ocr))]
+    (dprintln starting ending)
+    (filter (fn [[code [_ ocr] & rest]]
+              (> ending ocr starting)) errors)))
+
+(defn strip-newline-errors [errors gt ocr]
+  (remove (fn [error]
+            (->> error
+                 (augment-error-code gt ocr)
+                 second
+                 (some #(.contains %1 "\n")))) errors))
+
+
+(def flavour-list
+  {"stichwortsuche" [[strip-newline-errors strip-start-and-end-errors]
+                     stichwortsuche]
+   "case-sensitive-stichwortsuche" [[strip-newline-errors strip-start-and-end-errors] case-sensitive-stickwortsuche]
+   "phrasensuche" [[strip-newline-errors strip-start-and-end-errors] phrasensuche]
+   "alle Fehler" [[strip-newline-errors strip-start-and-end-errors]
+                   (constantly true)]})
+
+(defn run-filters [filters errors ground-truth ocr-results]
+  (reduce (fn [errors filter]
+            (filter errors ground-truth ocr-results))
+          errors filters))
+
+(defn generate-statistics ;;setze vereinbarte standartwerte
+  ([base-directory] (generate-statistics base-directory [] identity))
+  ([base-directory flavour] (generate-statistics base-directory [] flavour))
+  ([base-directory filters flavour]
+     (let [ground-truth (map slurp (get-files-sorted (file base-directory "ground-truth/")))
+           ocr-res (map slurp (get-files-sorted (file base-directory "ocr-results/")))
+           edits (map (comp read-string slurp)  (get-files-sorted (file base-directory "edits/")))
+           edits (map (partial run-filters filters)
+                      edits ground-truth ocr-res)
+           _ (dprintln (first edits))
+           errors (->> (mapcat #(map (partial augment-error-code %1 %2) %3) ground-truth ocr-res edits)
+                       (mapcat error-code-to-matrix-entries)
+                       (filter flavour))
+           charc (apply + (map count ocr-res))]
+       {:error-rate (double (* 100 (/ (count errors) charc)))
+        :charc charc :error-number (count errors)
+        :by-category (frequencies errors)})))
+
+(defn gen-statistics-for-base-directories [bd]
+  (into {} (for [d bd]
+             (do (dprintln "for base directory " d)
+                 [d (into {}
+                          (for [[n f] flavour-list]
+                            (do (dprintln "gen-statistics d n" d n)
+                                [n (apply generate-statistics d f)])))]))))
+
+
+(defn correction-statistic [gt ocr-unverbessert ocr-verbessert error-codes-unverbessert error-codes-verbessert]
+  ;;todo wenn korrektur zeichen löscht oder einfügt dann ist difference hier nicht mehr korrekt
+  ;;es müsste dann gefiltert werden wobei die position im ground truth als kennzeichnung dient
+  (let [false-positives (set/difference (into #{} error-codes-verbessert) (into #{} error-codes-unverbessert))
+        false-negatives (set/difference  (into #{} error-codes-verbessert) false-positives)
+        true-positives (set/difference (into #{} error-codes-unverbessert) (into #{} error-codes-verbessert))]
+    {:false-positives (map (partial augment-error-code gt ocr-verbessert) false-positives)
+     :false-negatives (map (partial augment-error-code gt ocr-verbessert) false-negatives)
+     :true-positives (map (partial augment-error-code gt ocr-unverbessert) true-positives )}))
+
+(defn run-filters [filters errors ground-truth ocr-results]
+  (reduce (fn [errors filter]
+            (filter errors ground-truth ocr-results))
+          errors filters))
+
+(defn generate-correction-statistics
+  ([base-directory-unverbessert base-directory-verbessert]
+     (generate-correction-statistics base-directory-unverbessert base-directory-verbessert [strip-newline-errors strip-start-and-end-errors]))
+  ([base-directory-unverbessert base-directory-verbessert filters]
+     (let [gts (get-files-sorted (file base-directory-unverbessert "ground-truth/"))
+           gt-text (map lurp gts)
+           ocr-res-unverb (map slurp (get-files-sorted (file base-directory-unverbessert "ocr-results/")))
+           ocr-res-verb (map slurp (get-files-sorted (file base-directory-verbessert "ocr-results/")))
+           error-codes-verb (map (comp read-string slurp) (get-files-sorted (file base-directory-verbessert "edits/")))
+           error-codes-unverb (map (comp read-string slurp) (get-files-sorted (file base-directory-unverbessert "edits/")))
+           error-codes-verb (map (partial run-filters filters) error-codes-verb gt-text ocr-res-verb)
+           error-codes-unverb (map (partial run-filters filters) error-codes-unverb gt-text ocr-res-unverb)]
+       (pmap (fn [gt ocr-unverb ocr-verb ec-verb ec-unverb page]
+               (assoc (correction-statistic gt ocr-unverb ocr-verb ec-unverb ec-verb) :pages [page]))
+             gt-text ocr-res-unverb ocr-res-verb error-codes-verb error-codes-unverb (map (memfn getName) gts)))))
+
+
+(edits "a" "b")


Untested radial coord method to get all tiles in a range of rows/columns


speedup lookup of FHIR metainformation by path

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/fhirbase/fhirplace.git/'


Re-add missing rotating-seq

Re-add missing rotating-seq

error: pathspec 'src/onyx/static/rotating_seq.clj' did not match any file(s) known to git

--- src/onyx/static/rotating_seq.clj
+++ src/onyx/static/rotating_seq.clj
@@ -0,0 +1,18 @@
+(ns onyx.static.rotating-seq)
+
+(defn create-r-seq [bucket-lifetime expire-interval]
+  (assert (zero? (mod bucket-lifetime expire-interval)) "Bucket lifetime must divide evenly over expiration interval")
+  (let [n-buckets (int (Math/ceil (/ bucket-lifetime expire-interval)))]
+    (vec (repeat n-buckets (list)))))
+
+(defn add-to-head [r-seq elements]
+  (assoc r-seq 0 (into (r-seq 0) elements)))
+
+(defn update-head [r-seq f & args]
+  (update-in r-seq [0] (fn [x]
+                         (let [result (f (concat x args))]
+                           (if-not (coll? result)
+                             [result] result)))))
+
+(defn expire-bucket [r-seq]
+  (vec (conj (butlast r-seq) (list))))


test for issue 8 fix

test for issue 8 fix

error: pathspec 'test/test_new.clj' did not match any file(s) known to git

--- test/test_new.clj
+++ test/test_new.clj
@@ -0,0 +1,9 @@
+(ns test-new
+  (:use [clojure.test]
+	[clojure.contrib.java-utils :only [delete-file-recursively file]]
+	[clojure.contrib.shell-out :only [with-sh-dir sh]]))
+
+(deftest test-new
+  (sh "lein" "new" "a.b/test-new-proj")
+  (is (.exists (file "test-new-proj" "src" "a" "b" "test_new_proj.clj")))
+  (delete-file-recursively (file "test-new-proj") false))


update docstring

update docstring

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/election-notification-works.git/'


New style assertions for the parser

New style assertions for the parser

fatal: unable to access 'https://github.com/couragelabs/coachbot.git/': The requested URL returned error: 403


Add ec

Add ec

error: pathspec 'src/angelic/search/action_set/ec.clj' did not match any file(s) known to git

--- src/angelic/search/action_set/ec.clj
+++ src/angelic/search/action_set/ec.clj
@@ -0,0 +1,170 @@
+(ns angelic.search.action-set.ec
+  (:require [edu.berkeley.ai.util :as util]
+            [edu.berkeley.ai.util.queues :as queues]
+            [edu.berkeley.ai.util.graphs :as graphs]
+            [angelic.env :as env]
+            [angelic.env.util :as env-util]
+            [angelic.env.state :as state]
+            [angelic.sas :as sas]
+            [angelic.sas.analysis :as sas-analysis]
+            [angelic.search.action-set.asplan :as asplan]
+            )
+  (:import [java.util HashSet HashMap  ArrayList]))
+
+;; This implements (inefficiently) the expansion core strategy of
+;; Chen et al. (2009), for comparing # states generated with BI.
+
+(set! *warn-on-reflection* true)
+
+(defn effect-var [a] (util/safe-singleton (keys (:effect-map a))))
+
+(defn potential-precondition-edges [state pde-map ap-map]
+  (for [[var val :as p] (state/as-map state)
+        a               (get ap-map p)
+        :let [[evar eval] (util/safe-singleton (:effect-map a))
+              pval        (util/safe-get (:precond-map a) evar)]
+        :when (get-in pde-map [evar (state/get-var state evar) [pval eval]])]
+    [var evar]))
+
+(defn potential-dependent-edges [state pdv-map dtgs]
+  (for [[var val :as p] (state/as-map state)
+        [_ as]          (get-in dtgs [var val])
+        a               as
+        [pvar pval]     (:precond-map a)
+        :when           (and (not (= pvar var))
+                             (get-in pdv-map [pvar (state/get-var state pvar) pval]))]
+    [var pvar]))
+
+(defn potential-dependency-graph [state pde-map pdv-map ap-map dtgs]
+  (set (concat (potential-precondition-edges state pde-map ap-map)
+               (potential-dependent-edges state pdv-map dtgs))))
+
+(defn best-core [pdg-edges goal-var-set]
+  (let [[scc-edges scc-nodes] (graphs/scc-graph pdg-edges)
+        scc-edge-map (graphs/edge-list->outgoing-map scc-edges)]
+;    (println "\n" goal-var-set scc-edges scc-nodes pdg-edges)
+    (apply min-key count
+           (for [[scc-id scc-vars] scc-nodes
+                 :when (some goal-var-set scc-vars)]
+             (let [s (apply concat
+                    (for [downstream-scc-id (graphs/postwalk [scc-id] scc-edge-map)]
+                      (util/safe-get scc-nodes downstream-scc-id)))]
+;               (println s)
+               s)))))
+
+
+(defn ec-prune-actions [state actions pde-map pdv-map ap-map dtgs goal-var-set]
+  (let [pdg-edges (potential-dependency-graph state pde-map pdv-map ap-map dtgs)
+        core-var-set (set (best-core pdg-edges goal-var-set))]
+    (filter
+     #(contains? core-var-set (effect-var %))
+     actions)))
+
+;; goal-val is ::none if not goal-related.
+(defn potential-descendant-vars [dtg goal-val]
+  (let [dtg-om  (util/map-vals keys dtg)
+        backward-set (set  (if (= goal-val ::none)
+                             (keys dtg-om)
+                             (graphs/postwalk
+                              [goal-val]
+                              (-> dtg-om
+                                  graphs/outgoing-map->edge-list
+                                  graphs/edge-list->incoming-map))))]
+    (into {} (for [v (keys dtg-om)]
+               [v (util/intersection backward-set (set (graphs/postwalk [v] dtg-om)))]))))
+
+(defn potential-acyclic-descendant-vars [dtg goal-val]
+  (let [dtg-om  (util/map-vals keys dtg)
+        dtg-edges (graphs/outgoing-map->edge-list dtg-om)
+        dtg-edge-map (if (= goal-val ::none)
+                       (util/map-vals (constantly dtg-edges) dtg-om)
+                       (into {} (for [v (keys dtg-om)]
+                                  [v (graphs/eliminate-some-cyclic-edges dtg-edges v goal-val)])))]
+    (into {} (for [[v e] dtg-edge-map]
+               [v (set (graphs/postwalk [v] (graphs/edge-list->outgoing-map e)))]))))
+
+(defn pdv-map->pde-map [pdv-map dtgs]
+  (into {} (for [[var pdv] pdv-map]
+             [var (into {} (for [[val dvs] pdv]
+                             [val (set (for [v dvs
+                                             nv (keys (get-in dtgs [var val]))
+                                             :when (contains? pdv nv)]
+                                         [v nv]))]))])))
+
+(defn ec-search [sas-problem use-new-goal acyclic-pruning]
+  (let [q             (queues/make-tree-search-pq)
+        closed        (HashSet.)
+        actions       (env/actions-fn sas-problem)
+        dtgs          (sas-analysis/domain-transition-graphs sas-problem)
+        goal-map      (assoc
+                          (if use-new-goal
+                            {}
+                            (->> (:actions sas-problem)
+                                 (filter #(= (:name %) sas/goal-action-name))
+                                 util/safe-singleton :precond-map))
+                        sas/goal-var-name sas/goal-true-val)
+        pdv-map       (into {} (for [[var dtg] dtgs]
+                                 [var (if acyclic-pruning
+                                        (potential-acyclic-descendant-vars dtg (get goal-map var ::none))
+                                        (potential-descendant-vars dtg (get goal-map var ::none)))]))
+        pde-map       (pdv-map->pde-map pdv-map dtgs)
+        ap-map        (HashMap.)
+        goal          (env/goal-fn sas-problem)]
+    (assert (not acyclic-pruning)) ;; Seems incorrect anyway.
+    (when acyclic-pruning (assert (not use-new-goal)))
+    (doseq [a (:actions sas-problem), pp (:precond-map a)]
+      (.put ap-map pp (cons a (.get ap-map pp))))
+    (queues/pq-add! q (env/initial-state sas-problem) 0)
+    (loop []
+      (when-not (queues/pq-empty? q)
+        (let [[state c] (queues/pq-remove-min-with-cost! q)]
+          (util/print-debug 3 "dequeueing " (:act-seq (meta state)) c  state "\n" (Thread/sleep 100))
+          (if (goal state)
+            [(reverse (:act-seq (meta state))) (:reward (meta state))]
+            (do (when-not (.contains closed state)
+                  (.add closed state)
+                  (doseq [a (ec-prune-actions state (actions state) pde-map pdv-map ap-map dtgs
+                                              (set (for [[gvar gval] goal-map
+                                                         :when (not (= gval (state/get-var state gvar)))]
+                                                     gvar)))]
+                    (let [[ss sc] (env/successor a state)]
+                      (queues/pq-add! q ss (- c sc)))))
+                (recur))))))))
+
+
+
+;; (use 'angelic.env 'angelic.domains.taxi-constrained 'angelic.domains.sas-problems 'angelic.search.action-set.ec)
+
+;; (let [e (force (nth ipc2-logistics 3)) ]  (println (time (run-counted #(ec-search e false)))))
+
+;; (let [e  (make-random-pairwise-taxi-env 3 3 2 true 1)] (doseq [t [:simple :dynamic :fluid]] (println "\n"  t (time (run-counted #(stratified-search e t))))))
+
+
+;;(doseq [ i [5 7 2 4 1 0 9 6 8 3]] (let [e  (force (nth ipc2-logistics i))] (println "\n\n" i) (doseq [t [:simple #_ :dynamic :fluid]] (println "\n"  t (time (run-counted #(stratified-search e t)))))))
+
+;; Logistics results (# states) to match table.
+;; 5 5-2: 2015
+;; 7 6-1: 161014
+;; 2 4-2: 352896
+;; 4 5-1: 625680
+;; 1 4-1:
+;; 0 4-0: 1710618
+;; 9 6-3: 3476092
+;; 6 6-0:
+;; 8 6-2:
+;; 3 5-0: 4706820
+
+;; Note: no benefit if we add goal action :).
+
+
+;; With acyclic path removal:
+;; 5 5-2: 2085
+;; 7 6-1: 83553
+;; 2 4-2: 411304
+;; 4 5-1: 364847
+;; 1 4-1:
+;; 0 4-0: 1710618
+;; 9 6-3: 3476092
+;; 6 6-0:
+;; 8 6-2:
+;; 3 5-0: 4706820


implement portal component

implement portal component

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/wilkerlucio/youtube-looper.git/'


Handling empty result

Handling empty result

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/narkisr/cloujsearch.git/'


Move error handling in the large, to the agent.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/mtravers/incidents.git/'


initial commit of server side rendering

initial commit of server side rendering

error: pathspec 'src/kioo/server/core.clj' did not match any file(s) known to git

--- src/kioo/server/core.clj
+++ src/kioo/server/core.clj
@@ -0,0 +1,88 @@
+(ns kioo.server.core
+  (:require [kioo.core :refer [component* snippet*]]
+            [kioo.util :refer [convert-attrs]]))
+
+(declare emit-node)
+
+(defn- emit-str
+ "Like clojure.core/str but escapes < > and &."
+ [x]
+ (-> x
+     str
+     (.replace "&" "&")
+     (.replace "<" "<")
+     (.replace ">" ">")))
+
+(defn- emit-attr-str
+ "Like clojure.core/str but escapes < > & and \"."
+ [x]
+ (-> x
+     str
+     (.replace "&" "&")
+     (.replace "<" "<")
+     (.replace ">" ">")
+     (.replace "\"" """)))
+
+
+(def self-closing-tags #{:area :base :basefont :br :hr
+                         :input :img :link :meta})
+
+
+(defn emit-attrs [attrs]
+  (reduce (fn [s [k v]]
+            (str s " " (name k) "=\"" (emit-attr-str v) "\""))
+          ""
+          attrs))
+
+
+(defn make-dom [node]
+  (println node)
+  (cond
+   (and (seq? node) (empty? node)) ""
+   (seq? node) (str (make-dom (first node))
+                    (make-dom (rest node)))
+   :else (let [{:keys [tag attrs content]} node]
+           (str "<" (name tag) (emit-attrs attrs)
+                (if (self-closing-tags tag)
+                  "/>"
+                  (str ">" (make-dom content) "</" (name tag ">")))))))
+
+(defn emit-trans [node children]
+  `(make-dom
+    (~(:trans node) ~(-> node
+                         (assoc :attrs (convert-attrs (:attrs node))
+                                :content children)))))
+
+(defn emit-node [{:keys [tag attrs]} children]
+  (if (self-closing-tags tag)
+    (str "<" (name tag) (emit-attrs attrs) "/>")
+    `(str ~(str "<" (name tag) (emit-attrs attrs) ">")
+          (apply str ~children)
+          ~(str "</" (name tag) ">"))))
+
+(defn wrap-fragment [tag child-sym]
+  `(str "<span>" ~child-sym "</span>"))
+
+
+(def server-emit-opts {:emit-trans emit-trans
+                       :emit-node emit-node
+                       :wrap-fragment wrap-fragment
+                       :emit-str emit-str})
+
+(defmacro component
+  "React base component definition"
+  [path & body]
+  (component* path body server-emit-opts))
+
+
+(defmacro snippet [path sel args & trans]
+  (snippet* path (cons sel trans) args server-emit-opts))
+
+(defmacro template [path args & trans]
+  (snippet* path  trans args server-emit-opts))
+
+(defmacro defsnippet [sym path sel args & trans]
+  `(def ~sym ~(snippet* path (cons sel trans) args server-emit-opts)))
+
+(defmacro deftemplate [sym path args & trans]
+  `(def ~sym ~(snippet* path trans args server-emit-opts)))


Guraso bat gehituta badago ez berriro gehitu

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/lnmnd/magnet.bez.git/'


added ugen_categories.clj file and new directory src/overtone/core

fatal: unable to access 'https://github.com/mcanthony/overtone.git/': The requested URL returned error: 403


Checking for easy cases when taking square roots.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/xcthulhu/clj-bitauth.git/'


COmment

COmment

fatal: unable to access 'https://github.com/mtravers/incidents.git/': The requested URL returned error: 403


add an anchor for each page part

add an anchor for each page part

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/20centaurifux/my-website.git/'


added clojure solution

added clojure solution

error: pathspec 'solutions/go-gopher/Solucion.clj' did not match any file(s) known to git

--- solutions/go-gopher/Solucion.clj
+++ solutions/go-gopher/Solucion.clj
@@ -0,0 +1,143 @@
+
+; All commented code was used to make the status more visible.
+
+
+(def TestCases (read-string(read-line)))
+;(println TestCases" Test cases")
+(dotimes [i TestCases]
+
+    (def spacey1x1 0)
+    (def spacey1x2 0)
+    (def spacey1x3 0)
+    (def spacey2x1 0)
+    (def spacey2x2 0)
+    (def spacey2x3 0)
+    (def spacey3x1 0)
+    (def spacey3x2 0)
+    (def spacey3x3 0)
+
+    (def row 2)
+
+    (def desiredArea (read-string(read-line)))
+;    (println " Area deseada:"desiredArea)
+    (def calculatedClmns (/ (+ desiredArea 2) 3))
+    (def columns (max 3 calculatedClmns))
+    ;(println "calculated columns: "calculatedClmns)
+;    (println "MAX columns: "columns)
+    (def pointerUnfinishedClmn 1)
+    (def endApp 0)
+
+    (while (== endApp 0)
+
+       (def nextColumn (+ pointerUnfinishedClmn 1))
+       (def nextColumn (min nextColumn (- columns 1)))
+
+    ;   (println "next column "nextColumn)
+
+;       (println "Coordenadas enviadas:")
+       (println row" "nextColumn)
+    ;   (flush)
+        (def coordX (read-string(read-line))) ;Pointer value of X
+        (def coordY (read-string(read-line))) ;POinter value of Y
+
+;        (println "")
+;       (println "Coordenadas recibidas:")
+       (println coordX)
+
+        (if (== coordX 0)
+            (if (== coordY 0)
+                (def endApp 1) nil
+            ) nil
+        )
+
+;                (println "Aun no termina")
+
+        (if (== coordY pointerUnfinishedClmn)
+            (do
+                (if (== coordX (- row 1))
+                    (def spacey1x1 1) nil
+                ) 1
+                (if (== coordX row)
+                    (def spacey1x2 1) nil
+                )
+                (if (== coordX (+ row 1))
+                    (def spacey1x3 1) nil
+                )
+
+ ;               (println "revision columna izq")
+            )nil
+
+        )
+
+        (if (== coordY (+ pointerUnfinishedClmn 1))
+            (do
+                (if (== coordX (- row 1))
+                    (def spacey2x1 1) nil
+                )
+                (if (== coordX row)
+                    (def spacey2x2 1) nil
+                )
+                (if (== coordX (+ row 1))
+                    (def spacey2x3 1) nil
+                )
+
+  ;              (println "revision columna central")
+            )nil
+        )
+
+        (if (== coordY (+ pointerUnfinishedClmn 2))
+            (do
+                (if (== coordX (- row 1))
+                    (def spacey3x1 1) nil
+                )
+                (if (== coordX row)
+                    (def spacey3x2 1) nil
+                )
+                (if (== coordX (+ row 1))
+                    (def spacey3x3 1) nil
+                )
+
+  ;              (println "revision columna derecha")
+            ) nil
+        )
+
+
+        (if (== spacey1x1 1)
+            (if (== spacey1x2 1)
+                (if (== spacey1x3 1)
+                    (do
+
+                    (def pointerUnfinishedClmn (+ pointerUnfinishedClmn 1))
+
+                    (def spacey1x1 spacey2x1)
+                    (def spacey1x2 spacey2x2)
+                    (def spacey1x3 spacey2x3)
+
+                    (def spacey2x1 spacey3x1)
+                    (def spacey2x2 spacey3x2)
+                    (def spacey2x3 spacey3x3)
+
+                    (def spacey3x1 0)
+                    (def spacey3x2 0)
+                    (def spacey3x3 0)
+
+                    ) nil
+
+                )nil
+            )nil
+        )
+
+
+ ;       (println "Matriz de seleccion:")
+
+ ;       (println "Y:"pointerUnfinishedClmn""(+ pointerUnfinishedClmn 1)""(+ pointerUnfinishedClmn 2))
+ ;       (println "  "spacey1x1""spacey2x1""spacey3x1)
+ ;       (println "  "spacey1x2""spacey2x2""spacey3x2)
+ ;       (println "  "spacey1x3""spacey2x3""spacey3x3)
+
+
+     )
+    (println "FIN DE RELLENO")
+)
+
+


Add tests for IDeref to either.

Add tests for IDeref to either.

--- spec/cats/monad/either_spec.cljx
+++ spec/cats/monad/either_spec.cljx
@@ -16,6 +16,10 @@
   (s/it "Basic either operations."
     (s/should= 1 (either/from-either (either/right 1)))
     (s/should= nil (either/from-either (either/left))))
+
+  (s/it "Test IDeref"
+    (s/should= 1 @(either/left 1))
+    (s/should= 1 @(either/right 1)))

   (s/it "Test predicates"
     (let [m1 (either/right 1)]


revenue-projections

revenue-projections

error: pathspec 'src/mljalfa/finance/base.clj' did not match any file(s) known to git

--- src/mljalfa/finance/base.clj
+++ src/mljalfa/finance/base.clj
@@ -0,0 +1,112 @@
+(ns mljalfa.finance.base)
+
+(def arpu-znet 200000)
+(def arpu-agora 200000)
+(def arpu-augmented 400000)
+
+(defn revenue-others
+  [cur percent]
+  (* cur percent))
+
+(defn revenue-znet
+  [market-map]
+  (let [relevant-market (select-keys market-map [:sd :smp :sma :smav])]
+    (->> (vals relevant-market)
+         (map #(reduce * (vals %)))
+         (reduce +)
+         (* arpu-znet)
+         long str reverse
+         (partition-all 3)
+         (map reverse)
+         (map #(apply str %))
+         reverse
+         (reduce #(str % "." %2)))))
+
+(defn revenue-agora
+  [market-map]
+  (let [relevant-market (select-keys market-map [:college :public])]
+    (->> (vals relevant-market)
+         (map #(reduce * (vals %)))
+         (reduce +)
+         (* arpu-agora)
+         (long))))
+
+
+(def market
+  {:sd      27328000
+   :smp     9255000
+   :sma     3942000
+   :smav    3319000
+   :college 5000000
+   :public  10000000})
+
+(def market-growth
+  {:sd      {:growth          1.01
+             :prospect-start  0.01
+             :prospect-growth 1.05
+             :adopter-start   0.01
+             :adopter-growth  1.1}
+   :smp     {:growth          1.02
+             :prospect-start  0.03
+             :prospect-growth 1.07
+             :adopter-start   0.01
+             :adopter-growth  1.6}
+   :sma     {:growth          1.03
+             :prospect-start  0.07
+             :prospect-growth 1.1
+             :adopter-start   0.017
+             :adopter-growth  2.1}
+   :smav    {:growth          1.04
+             :prospect-start  0.02
+             :prospect-growth 1.05
+             :adopter-start   0.02
+             :adopter-growth  1.4}
+   :college {:growth          1.01
+             :prospect-start  0.01
+             :prospect-growth 1.05
+             :adopter-start   0.01
+             :adopter-growth  1.1}
+   :public  {:growth          1.01
+             :prospect-start  0.01
+             :prospect-growth 1.05
+             :adopter-start   0.01
+             :adopter-growth  1.1}})
+
+(defn revenue-projections-znet
+  "Create a list of revenues for a number of year"
+  [base-market growth-map year]
+  (let [mkbase (select-keys base-market [:sd :smp :sma :smav])
+        mkgrowth (select-keys growth-map [:sd :smp :sma :smav])]
+    (loop [i 0 yoy-growth (merge-with #(assoc %1 :cur %2) mkgrowth mkbase) res []]
+      (if (> i year)
+        res
+        (let [next-map
+              (->> (vals yoy-growth)
+                   (map #(hash-map
+                          :cur (* (:growth %) (:cur %))
+                          :growth (:growth %)
+                          :prospect-start (* (:prospect-growth %)
+                                             (:prospect-start %))
+                          :prospect-growth (:prospect-growth %)
+                          :adopter-growth (let [tmp (:adopter-start %)]
+                                            (cond (<= 0 tmp 0.05)
+                                                  (:adopter-growth %)
+                                                  (<= 0.05 tmp 0.15)
+                                                  (inc (* 4/5 (- (:adopter-growth %) 1)))
+                                                  (<= 0.15 tmp 0.25)
+                                                  (inc (* 3/5 (dec (:adopter-growth %))))
+                                                  :else
+                                                  (inc (* 2/5 (dec (:adopter-growth %))))))
+                          :adopter-start (* (:adopter-growth %)
+                                            (:adopter-start %))))
+                   (zipmap (keys yoy-growth)))]
+          (recur (inc i)
+                 next-map
+                 (conj res (->> (vals next-map)
+                                (map #(dissoc % :adopter-growth
+                                              :prospect-growth))
+                                (zipmap (keys next-map))
+                                (revenue-znet)
+                                (assoc {:year (+ 2015 i)} :revenue)))))))))
+
+


adding client

adding client

error: pathspec 'src/cljc/ow/starbuck/client.cljc' did not match any file(s) known to git

--- src/cljc/ow/starbuck/client.cljc
+++ src/cljc/ow/starbuck/client.cljc
@@ -0,0 +1 @@
+(ns ow.starbuck.client)


One succesfull upload. That's something, I guess.

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/screen6/bigquery-clj.git/'


a files ns!

a files ns!

error: pathspec 'src/doctopus/files.clj' did not match any file(s) known to git

--- src/doctopus/files.clj
+++ src/doctopus/files.clj
@@ -0,0 +1,5 @@
+(ns doctopus.files
+  (:require []))
+
+;; THIS IS TOTALLY DATABASS
+;; (pprint (fs/walk vector "/Users/rossdonaldson/Code/doctopus/src/"))


dispatch submit shopping cart after adding new credit card successfully

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


Iruzkina bidaltzeko formu

Iruzkina bidaltzeko formu


Fixed small grammar issue

Fixed small grammar issue

--- sidecar/src/figwheel_sidecar/repl_api.clj
+++ sidecar/src/figwheel_sidecar/repl_api.clj
@@ -40,7 +40,7 @@
 (defn figwheel-running? []
   (or (get-in *repl-api-system* [:figwheel-system :system-running] false)
       (do
-        (println "Figwheel System not itnitialized.\nPlease start it with figwheel-sidecar.repl-api/start-figwheel!")
+        (println "Figwheel System not initialized.\nPlease start it with figwheel-sidecar.repl-api/start-figwheel!")
         nil)))

 (defn app-trans


First test of granule ACLs.

First test of granule ACLs.

error: pathspec 'test/cmr/system_int_test/search/acls/granule_acl_search_test.clj' did not match any file(s) known to git

--- test/cmr/system_int_test/search/acls/granule_acl_search_test.clj
+++ test/cmr/system_int_test/search/acls/granule_acl_search_test.clj
@@ -0,0 +1,136 @@
+(ns cmr.system-int-test.search.acls.granule-acl-search-test
+  "Tests searching for collections with ACLs in place"
+  (:require [clojure.test :refer :all]
+            [clojure.string :as s]
+            [cmr.common.services.messages :as msg]
+            [cmr.system-int-test.utils.ingest-util :as ingest]
+            [cmr.system-int-test.utils.search-util :as search]
+            [cmr.system-int-test.utils.index-util :as index]
+            [cmr.system-int-test.data2.collection :as dc]
+            [cmr.system-int-test.data2.granule :as dg]
+            [cmr.system-int-test.data2.core :as d]
+            [cmr.system-int-test.utils.echo-util :as e]))
+
+(use-fixtures :each (ingest/reset-fixture {"provguid1" "PROV1"
+                                           "provguid2" "PROV2"
+                                           "provguid3" "PROV3"
+                                           "provguid4" "PROV4"} false))
+
+(def coll-num (atom 0))
+(def gran-num (atom 0))
+
+(defn make-coll
+  ([prov]
+   (make-coll prov {}))
+  ([prov attribs]
+   (let [n (swap! coll-num inc)]
+     (d/ingest prov
+               (dc/collection
+                 (merge {:entry-title (str "coll" n)}
+                        attribs))))))
+
+(defn make-gran
+  ([coll]
+   (make-gran coll {}))
+  ([coll attribs]
+   (let [prov (:provider-id coll)
+         n (swap! gran-num inc)
+         attribs (merge {:granule-ur (str "gran" n)}
+                        attribs)]
+     (d/ingest prov (dg/granule coll attribs)))))
+
+(comment
+  (do
+    (ingest/reset)
+    (ingest/create-provider "provguid1" "PROV1" false)
+    (ingest/create-provider "provguid2" "PROV2" false)
+    (ingest/create-provider "provguid3" "PROV3" false)
+    (ingest/create-provider "provguid4" "PROV4" false))
+  )
+
+(deftest granule-search-with-acls-test
+  ;; TODO add acls for collection entry title that doesn't exist
+  ;; TODO test a search with no acls applied
+
+  (do
+    (reset! coll-num 0)
+    (reset! gran-num 0)
+
+    ;; Guests have access to coll1
+    (e/grant-guest (e/gran-catalog-item-id "provguid1" (e/coll-id ["coll1"])))
+    ;; coll 2 has no granule permissions
+    ;; Permits granules with access values.
+    (e/grant-guest (e/gran-catalog-item-id "provguid1" nil (e/gran-id {:min-value 10
+                                                                       :max-value 20
+                                                                       :include-undefined true})))
+    (e/grant-registered-users
+      (e/gran-catalog-item-id "provguid2" (e/coll-id ["coll3"] {:min-value 1 :max-value 3})))
+    (e/grant-registered-users
+      (e/gran-catalog-item-id "provguid2" (e/coll-id [] {:min-value 4 :max-value 6})))
+
+    ;; Guests have full access to provider 3
+    (e/grant-guest (e/gran-catalog-item-id "provguid3"))
+    ;; Clear out acl caches
+    (ingest/clear-caches))
+
+  (let [coll1 (make-coll "PROV1")
+        coll2 (make-coll "PROV1")
+        coll3 (make-coll "PROV2" {:access-value 2})
+        coll4 (make-coll "PROV2" {:access-value 5})
+        coll5 (make-coll "PROV3")
+        coll6 (make-coll "PROV4")
+
+        ;; - PROV1 -
+        gran1 (make-gran coll1)
+        gran2 (make-gran coll1)
+
+        ;; Permitted through undefined access value
+        gran3 (make-gran coll2)
+        ; Not permitted at all (outside of access value range)
+        gran4 (make-gran coll2 {:access-value 9})
+        ;; Permitted through access value range
+        gran5 (make-gran coll2 {:access-value 10})
+
+        ;; - PROV2 -
+        ;; Permitted by collection id and coll access value
+        gran6 (make-gran coll3)
+        ;; Permitted by collection 4's access value
+        gran7 (make-gran coll4)
+
+        ;; - PROV3 -
+        ;; All granules in prov 3 are permitted
+        gran8 (make-gran coll5)
+        gran9 (make-gran coll5 {:access-value 0})
+
+        ;; - PROV4 - no permitted access
+        gran10 (make-gran coll6)
+        guest-token (e/login-guest)
+        user1-token (e/login "user1")]
+
+    (index/refresh-elastic-index)
+
+    (testing "search as guest"
+      (let [refs-result (search/find-refs :granule {:token guest-token})
+            expected [gran1 gran2 gran3 gran5 gran8 gran9]
+            match? (d/refs-match? expected refs-result)]
+        (when-not match?
+          (println "Expected:" (map :concept-id expected))
+          (println "Actual:" (map :id (:refs refs-result)))
+          (println "Expected:" (map :granule-ur expected))
+          (println "Actual:" (map :name (:refs refs-result))))
+        (is match?)))
+
+    #_(testing "search as registered users"
+        (is (d/refs-match? [gran6 gran7]
+                           (search/find-refs :granule {:token user1-token}))))
+
+    ;; TODO test searching
+    ;; with no collection concept ids
+    ;; 1 coll concept id
+    ;; 2 coll concept ids
+    ;; a provider id
+    ;; a provider id and entry title
+    ;; an entry title
+
+
+    ))


clean up unused code from admin/services/orders


only navigate on select loop when there is a loop


account for parameterized REPL printing

account for parameterized REPL printing

--- sidecar/src/figwheel_sidecar/repl.clj
+++ sidecar/src/figwheel_sidecar/repl.clj
@@ -35,6 +35,16 @@

 (def ^:dynamic *autobuild-env* false)

+;; slow but works
+;; TODO simplify in the future
+(defn resolve-repl-println []
+  (let [opts (resolve 'cljs.repl/*repl-opts*)]
+    (or (and opts (:print @opts))
+        println)))
+
+(defn repl-println [& args]
+  (apply (resolve-repl-println) args))
+
 (defn at-start-line->canonical-stack-line [line]
   (let [[_ function file-part] (re-matches #"\s*at\s*(\S*)\s*\((.*)\)" line)]
     (str function "@" file-part)))
@@ -111,8 +121,9 @@
         (recur)))))

 (defn add-repl-print-callback! [{:keys [browser-callbacks]}]
-  (swap! browser-callbacks assoc "figwheel-repl-print"
-         (fn [args] (apply println args))))
+  (let [pr-fn (resolve-repl-println)]
+    (swap! browser-callbacks assoc "figwheel-repl-print"
+           (fn [args] (apply pr-fn args)))))

 (defrecord FigwheelEnv [figwheel-server]
   cljs.repl/IJavaScriptEnv
@@ -133,7 +144,7 @@
   (-print-stacktrace [repl-env stacktrace error build-options]
     (doseq [{:keys [function file url line column]}
               (cljs.repl/mapped-stacktrace stacktrace build-options)]
-      (println "\t" (str function " (" (str (or url file)) ":" line ":" column ")")))))
+      (repl-println "\t" (str function " (" (str (or url file)) ":" line ":" column ")")))))

 (defn repl-env
   ([figwheel-server {:keys [id build-options] :as build}]
@@ -189,7 +200,7 @@
    (doc-help repl-env env form nil))
   ([repl-env env [_ sym :as form] opts]
    (if (not (symbol? sym))
-     (print "Must provide bare var to get documentation i.e. (doc clojure.string/join)")
+     (repl-println "Must provide bare var to get documentation i.e. (doc clojure.string/join)")
      (cljs.repl/evaluate-form repl-env
                               (assoc env :ns (ana/get-namespace ana/*cljs-ns*))
                               "<cljs repl>"
@@ -200,7 +211,7 @@

 (defn validate-build-ids [ids all-builds]
   (let [bs (set (keep :id all-builds))]
-    (vec (keep #(if (bs %) % (println "No such build id:" %)) ids))))
+    (vec (keep #(if (bs %) % (repl-println "No such build id:" %)) ids))))

 (defn get-ids [ids focus-ids all-builds]
   (or (and (empty? ids) focus-ids)
@@ -208,7 +219,7 @@

 (defn display-focus-ids [ids]
   (when (not-empty ids)
-    (println "Focusing on build ids:" (string/join ", " ids))))
+    (repl-println "Focusing on build ids:" (string/join ", " ids))))

 (defn builder-running? [state-atom]
   (not (nil? (:autobuilder @state-atom))))
@@ -236,14 +247,14 @@
                                (:all-builds *autobuild-env*))]
     (display-focus-ids (map :id builds))
     (mapv cbuild/clean-build (map :build-options builds))
-    (println "Deleting ClojureScript compilation target files.")))
+    (repl-println "Deleting ClojureScript compilation target files.")))

 (defn run-autobuilder-helper [build-ids]
   (let [{:keys [all-builds figwheel-server state-atom logfile-path output-writer error-writer]} *autobuild-env*]
     (if-let [errors (not-empty (autobuild/check-autobuild-config all-builds build-ids figwheel-server))]
       (do
         (display-focus-ids build-ids)
-        (mapv println errors))
+        (mapv repl-println errors))
       (when-not (builder-running? state-atom)
         (build-once build-ids)

@@ -257,8 +268,8 @@
                         :build-ids build-ids
                         :figwheel-server figwheel-server }))]
           (if logfile-path
-            (println "Started Figwheel autobuilder see:" logfile-path)
-            (println "Started Figwheel autobuilder"))
+            (repl-println "Started Figwheel autobuilder see:" logfile-path)
+            (repl-println "Started Figwheel autobuilder"))
           (reset! state-atom { :autobuilder abuild
                                :focus-ids build-ids}))))))

@@ -270,8 +281,8 @@
        (do
          (auto/stop-autobuild! (:autobuilder @state-atom))
          (swap! state-atom assoc :autobuilder nil)
-         (println "Stopped Figwheel autobuild"))
-       (println "Autobuild not running.")))))
+         (repl-println "Stopped Figwheel autobuild"))
+       (repl-println "Autobuild not running.")))))

 (defn start-autobuild [ids]
   (let [{:keys [state-atom all-builds]} *autobuild-env*
@@ -282,7 +293,7 @@
                                                 all-builds))]
         (run-autobuilder-helper build-ids')
         nil)
-      (println "Autobuilder already running."))))
+      (repl-println "Autobuilder already running."))))

 (defn switch-to-build [ids]
   (let [ids (map name ids)]
@@ -302,16 +313,16 @@
   ([] (status nil))
   ([_]
    (let [connection-count (get-in *autobuild-env* [:figwheel-server :connection-count])]
-     (println "Figwheel System Status")
-     (println "----------------------------------------------------")
-     (println "Autobuilder running? :" (builder-running? (:state-atom *autobuild-env*)))
+     (repl-println "Figwheel System Status")
+     (repl-println "----------------------------------------------------")
+     (repl-println "Autobuilder running? :" (builder-running? (:state-atom *autobuild-env*)))
      (display-focus-ids (:focus-ids @(:state-atom *autobuild-env*)))
-     (println "Client Connections")
+     (repl-println "Client Connections")
      (when connection-count
        (doseq [[id v] @connection-count]
-         (println "\t" (str (if (nil? id) "any-build" id) ":")
+         (repl-println "\t" (str (if (nil? id) "any-build" id) ":")
                   v (str "connection" (if (= 1 v) "" "s")))))
-     (println "----------------------------------------------------"))))
+     (repl-println "----------------------------------------------------"))))

 ;; end API methods


added p04.clj

added p04.clj

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/drcabana/euler-fp.git/'


[DG] Cleanup before committing

[DG] Cleanup before committing

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/democracyworks/voter-registration-works.git/'


fix max-val

fix max-val

--- sidecar/src/figwheel_sidecar/config_check/type_check.clj
+++ sidecar/src/figwheel_sidecar/config_check/type_check.clj
@@ -487,7 +487,7 @@
                                    average)]) freqs))))

 (defn max-val [mp]
-  (reduce (fn [[k v] [k1 v1]] (if (< v v1) [k1 v1] [k v])) ['_ 0] mp))
+  (reduce (fn [[k v] [k1 v1]] (if (< v v1) [k1 v1] [k v])) [nil -1] mp))

 (defn which-type-wins? [parent-type types]
   (let [type-map (into {} (filter (comp pos? second)


Add namespace for PSL loading and lookup.

error: pathspec 'src/clojure/inet/data/dns/psl.clj' did not match any file(s) known to git

--- src/clojure/inet/data/dns/psl.clj
+++ src/clojure/inet/data/dns/psl.clj
@@ -0,0 +1,49 @@
+(ns inet.data.dns.psl
+  "Functions for interfacing with Mozilla Public Suffix List format files."
+  (:refer-clojure :exclude [load])
+  (:require [clojure.string :as str]
+            [clojure.java.io :as io]
+            [inet.data.dns :as dns])
+  (:import [java.io Reader]))
+
+(def ^:dynamic *default-psl-url*
+  "URL of the default Mozilla Public Suffix List file."
+  (str "http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/"
+       "effective_tld_names.dat?raw=1"))
+
+(defn load
+  "Load a Mozilla Public Suffix List format file from the Reader `source`."
+  [^Reader source]
+  (letfn [(prefix? [^String s1 ^String s2] (.startsWith s2 s1))
+          (ignorable? [s] (or (empty? s) (prefix? "//" s)))
+          (convert [entry n rule]
+            (let [prefix (-> entry (subs n) dns/domain)]
+              [prefix rule]))
+          (parse [entry]
+            (condp prefix? entry
+              "*." (convert entry 2 :wildcard)
+              "!"  (convert entry 1 :exception)
+                   (convert entry 0 :normal)))
+          (step [[prefixes rules] entry]
+            (let [[prefix rule] (parse entry)]
+              [(conj prefixes prefix) (assoc rules prefix rule)]))]
+    (->> (line-seq source) (map str/trim) (remove ignorable?)
+         (reduce step [(dns/domain-set) {}]))))
+
+(def ^:private memo-load
+  (memoize
+   (fn [url]
+     (with-open [source (io/reader url)]
+       (load source)))))
+
+(defn lookup
+  "Determine the E2LD of `domain` as specified by the PSL loaded in `psl`.
+Uses the default PSL loaded from `*default-psl-url*` if `psl` is not provided."
+  ([dom] (lookup (memo-load *default-psl-url*) dom))
+  ([psl dom]
+     (let [dom (dns/domain dom), [prefixes rules] psl]
+       (when-let [prefix (->> dom (get prefixes) first)]
+         (case (get rules prefix)
+           :exception prefix
+           :normal    (dns/domain-next dom prefix)
+           :wildcard  (second (dns/domain-ancestors dom prefix)))))))


Added stub clojure.browser.net namespace for network IO stuff.

error: pathspec 'src/cljs/clojure/browser/net.cljs' did not match any file(s) known to git

--- src/cljs/clojure/browser/net.cljs
+++ src/cljs/clojure/browser/net.cljs
@@ -0,0 +1 @@
+(ns clojure.browser.net)


Add more null checking to completion code

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/bsmr-clojure/Nightcode.git/'


Allow setting instance for SQL Server DBs :yum: #1481

--- src/metabase/driver/sqlserver.clj
+++ src/metabase/driver/sqlserver.clj
@@ -47,13 +47,15 @@
    :xml              :UnknownField
    (keyword "int identity") :IntegerField}) ; auto-incrementing integer (ie pk) field

-(defn- connection-details->spec [details]
+(defn- connection-details->spec [{:keys [instance], :as details}]
   (-> (kdb/mssql details)
       ;; swap out Microsoft Driver details for jTDS ones
       (assoc :classname   "net.sourceforge.jtds.jdbc.Driver"
              :subprotocol "jtds:sqlserver")
       ;; adjust the connection URL to match up with the jTDS format (see http://jtds.sourceforge.net/faq.html#urlFormat)
-      (update :subname #(s/replace % #";database=" "/"))))
+      ;; and add the ;instance= option if applicable
+      (update :subname #(cond-> (s/replace % #";database=" "/")
+                          (seq instance) (str ";instance=" instance)))))

 ;; See also the [jTDS SQL <-> Java types table](http://jtds.sourceforge.net/typemap.html)
 (defn- date [unit field-or-value]
@@ -114,7 +116,7 @@
   (-> (sql-driver {:driver-name               "SQL Server"
                    :details-fields            [{:name         "host"
                                                 :display-name "Host"
-                                                :default "localhost"}
+                                                :default      "localhost"}
                                                {:name         "port"
                                                 :display-name "Port"
                                                 :type         :integer
@@ -123,6 +125,9 @@
                                                 :display-name "Database name"
                                                 :placeholder  "BirdsOfTheWorld"
                                                 :required     true}
+                                               {:name         "instance"
+                                                :display-name "Database instance name"
+                                                :placeholder  "N/A"}
                                                {:name         "user"
                                                 :display-name "Database username"
                                                 :placeholder  "What username do you use to login to the database?"


Implement the utility functions for generating puzzles

--- src/randometer/core.cljs
+++ src/randometer/core.cljs
@@ -4,7 +4,37 @@

 (enable-console-print!)

-(println "Edits to this text should show up in your developer console.")
+(def size [24 6])
+
+(defn show-trial [x]
+  (if x "●" "○"))
+
+(defn trial []
+  (> 0.5 (rand)))
+
+(defn biased-trial [propensity]
+  (> propensity (rand)))
+
+(defn muted-trial [propensity memory]
+  (if (> propensity (rand))
+    (not memory)
+    memory))
+
+(defn biased-generator [n p]
+  (repeatedly n #(biased-trial p)))
+
+(defn muted-generator [n p]
+  (letfn [(helper [previous]
+            (lazy-seq
+             (cons previous
+                   (helper (muted-trial p previous)))))]
+    (take n (helper (trial)))))
+
+(defn puzzle [generator propensity]
+  (partition (first size) (generator (apply * size) propensity)))
+
+(defn shuffle-boards [boards]
+  (zipmap (range) (shuffle (range (count boards)))))

 ;; define your app data so that it doesn't get over-written on reload


add web form dummy stub

add web form dummy stub

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/fhirbase/fhirplace.git/'


[examples/mnist] Add a more simplified version of mnist looking much like the scrabble example.

error: pathspec 'examples/mnist/src/mnist/core_simplified.clj' did not match any file(s) known to git

--- examples/mnist/src/mnist/core_simplified.clj
+++ examples/mnist/src/mnist/core_simplified.clj
@@ -0,0 +1,53 @@
+(ns mnist.core-simplified
+    (:require
+        [clojure.core.matrix :as mat]
+        [cortex.optimise :as opt]
+        [thinktopic.datasets.mnist :as mnist]
+        [cortex.network :as net]))
+
+(defn- mnist-labels
+    [class-labels]
+    (let [n-labels (count class-labels)
+          labels (mat/zero-array [n-labels 10])]
+        (doseq [i (range n-labels)]
+            (mat/mset! labels i (nth class-labels i) 1.0))
+        labels))
+
+(defn train [network training-data training-labels]
+    (let [n-epochs 1
+          learning-rate 0.3
+          momentum 0.1
+          batch-size 10
+          loss-fn (opt/quadratic-loss)
+          optimizer (net/sgd-optimizer network loss-fn learning-rate momentum)]
+        (net/train-network optimizer n-epochs batch-size training-data training-labels)))
+
+(defn evaluate [network test-data test-labels]
+    (let [[results score] (net/evaluate network test-data test-labels)
+          label-count (count test-data)
+          score-percent (float (/ score label-count))]
+        (println (format "Score: %f [%d of %d]" score-percent score label-count))))
+
+(defn run-experiment []
+    (let [training-data  (map #(vec [%]) @mnist/data-store)
+          training-labels (mnist-labels @mnist/label-store)
+          test-data  (map #(vec [%]) @mnist/test-data-store)
+          test-labels (mnist-labels @mnist/test-label-store)
+
+          input-width (last (mat/shape training-data))
+          output-width (last (mat/shape training-labels))
+          hidden-layer-size 30
+
+          network (net/sequential-network
+                      [(net/linear-layer :n-inputs input-width :n-outputs hidden-layer-size)
+                       (net/sigmoid-activation hidden-layer-size)
+                       (net/linear-layer :n-inputs hidden-layer-size :n-outputs output-width)])]
+
+
+        (println "Training...")
+        (train network training-data training-labels)
+        (println "Testing...")
+        (evaluate network test-data test-labels)))
+
+(defn -main []
+    (run-experiment))


Add #path and #file data readers.

Add #path and #file data readers.

error: pathspec 'src/data_readers.clj' did not match any file(s) known to git

--- src/data_readers.clj
+++ src/data_readers.clj
@@ -0,0 +1,2 @@
+{path datoteka.core/path
+ file datoteka.core/to-file}


Add problem72.clj

Add problem72.clj

error: pathspec 'euler_clojure/src/euler/problem72.clj' did not match any file(s) known to git

--- euler_clojure/src/euler/problem72.clj
+++ euler_clojure/src/euler/problem72.clj
@@ -0,0 +1,43 @@
+(ns euler.problem72
+  "https://projecteuler.net/problem=72
+
+  Consider the fraction, n/d, where n and d are positive integers. If n<d and
+  HCF(n,d)=1, it is called a reduced proper fraction.
+
+  If we list the set of reduced proper fractions for d ≤ 8 in ascending order
+  of size, we get:
+
+  1/8, 1/7, 1/6, 1/5, 1/4, 2/7, 1/3, 3/8, 2/5, 3/7, 1/2, 4/7, 3/5, 5/8, 2/3, 5/7, 3/4, 4/5, 5/6, 6/7, 7/8
+
+  It can be seen that there are 21 elements in this set. How many elements
+  would be contained in the set of reduced proper fractions for d ≤
+  1,000,000?")
+
+;; Note: this solution is much slower than the equivalent python code which
+;; mutates a dict in place. Suggestions very welcome.
+
+(defn update-many [m vals f]
+  (reduce #(update-in %1 [%2] f) m vals))
+
+(defn phi-sieve
+  "Return a vector of all values of phi(i) for i <= limit.
+  By convention phi(0)=0 and phi(1)=1, but Project Euler
+  appears to disagree, so those values are ignored."
+  ;; Solved in the style of the sieve of Eratosthenes.
+  [limit]
+  (drop 2
+   (loop [i 2
+          result (vec (range (inc limit)))
+          marked #{}]
+     (cond
+       (> i limit) result
+       (contains? marked i) (recur (inc i) result marked)
+       :else (recur (inc i)
+                    (update-many result (range i (inc limit) i) #(* % (- 1 (/ 1 i))))
+                    (into marked (range i (inc limit) i)))))))
+
+(defn problem72 []
+  ;; See https://en.wikipedia.org/wiki/Farey_sequence
+  ;; for the connection to Euler's phi function.
+  ;; In particular, note that |F n| = |F n-1| + phi(n).
+  (reduce +' (phi-sieve 1000000)))


render different components based on current page

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/clojurecup/cc2014-frontend.git/'


update unit test

update unit test

--- test/metabase/api/common_test.clj
+++ test/metabase/api/common_test.clj
@@ -175,8 +175,11 @@
        (GET ["/:id" :id "#[0-9]+"] [id]
          (metabase.api.common.internal/auto-parse [id]
            (metabase.api.common.internal/catch-api-exceptions
-             (clojure.core/-> (do (->404 (sel :one Card :id id)))
-                              metabase.api.common.internal/wrap-response-if-needed)))))
+             (metabase.api.common.internal/let-annotated-args
+              {id required}
+              (clojure.core/-> (do (->404 (sel :one Card :id id)))
+                               metabase.api.common.internal/wrap-response-if-needed))))))
      (clojure.core/alter-meta! #'GET_:id clojure.core/assoc :is-endpoint? true))
    (defendpoint GET "/:id" [id]
+     {id required}
      (->404 (sel :one Card :id id)))))


rev require,import

rev require,import

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/michaelsbradleyjr/transwarp.git/'


tweak

tweak

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/kenichirow/recipes.git/'


warp-rf-nometa should optionally take a value-argument


sudoku

sudoku

うごかないので、治そう!

error: pathspec 'src/maths/sudoku.clj' did not match any file(s) known to git


Saner auth/can?

Saner auth/can?

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/physion/ovation-webapi.git/'


This might be how unsigned shift works in Go...

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/shaunstanislaus/cljs2go.git/'


updated google search

updated google search

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/m1dnight/clojbot.git/'


added todo

added todo


Version 175

Version 175

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/tobias/clojars-web.git/'


Version 1.7.2-SNAPSHOT

Version 1.7.2-SNAPSHOT

remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/starcity-properties/odin.git/'


riemann-clojure-client 0.2.0

riemann-clojure-client 0.2.0

--- project.clj
+++ project.clj
@@ -33,7 +33,7 @@
     [log4j/apache-log4j-extras "1.0"]
     [org.antlr/antlr "3.2"]
     [org.slf4j/slf4j-log4j12 "1.6.4"]
-    [riemann-clojure-client "0.0.7-SNAPSHOT"]
+    [riemann-clojure-client "0.2.0"]
     [slingshot "0.10.2"]
   ]
   :plugins [[codox "0.6.1"]