lein-release plugin: preparing 0.8 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject onix "0.8-SNAPSHOT"
+(defproject onix "0.8"
   :description "Onix service"
   :url "http://wikis.in.nokia.com/NokiaMusicArchitecture/Onix"


updated with datascript and new cljs

updated with datascript and new cljs

--- project.clj
+++ project.clj
@@ -8,8 +8,10 @@
                  [org.clojure/clojure "1.7.0"]
                  [org.clojure/core.async "0.2.374"]
                  [org.clojure/tools.namespace "0.2.10"]
-                 [org.clojure/clojurescript "1.7.48"]
+                 [org.clojure/clojurescript "1.7.228"]
                  [org.clojure/core.match "0.3.0-alpha4"]
+
+                 [datascript "0.13.3"]

                  ;; Utils
                  [com.stuartsierra/component "0.3.1"]
@@ -22,7 +24,6 @@

                  ;; Web UI
                  [com.taoensso/sente "1.7.0"]
-

                  [http-kit "2.1.19"]

@@ -40,7 +41,7 @@
                  [com.andrewmcveigh/cljs-time "0.3.14"]]

   :plugins [[lein-figwheel "0.5.0-2"]
-            [lein-cljsbuild "1.0.6"]
+            [lein-cljsbuild "1.1.2"]
             [lein-ancient "0.6.8"]
             [lein-hiera "0.9.0"]
             [lein-kibit "0.1.2"]
@@ -70,7 +71,8 @@
                            :asset-path "js/out"
                            :output-to     "resources/public/js/app.js"
                            :output-dir    "resources/public/js/out"
-                           :source-map    "resources/public/js/out.js.map"
+                           ;:source-map    "resources/public/js/out.js.map"
+                           :source-map true
                            :optimizations :none
                            :pretty-print  true}}


update bidi

update bidi

--- project.clj
+++ project.clj
@@ -11,7 +11,7 @@
                  [spootnik/signal               "0.2.0"]
                  [spootnik/watchman             "0.3.5"]
                  [spootnik/net                  "0.2.14"]
-                 [bidi                          "1.25.0"]
+                 [bidi                          "2.0.16"]
                  [cheshire                      "5.5.0"]
                  [org.javassist/javassist       "3.20.0-GA"]


Deps: Nippy 2.5.1

Deps: Nippy 2.5.1

--- project.clj
+++ project.clj
@@ -8,7 +8,7 @@
                  ;; TODO ; 1.5.x seems to cause problems with (at least)
                  ;; `create-table`: needs investigation
                  [com.amazonaws/aws-java-sdk "1.4.4.2"]
-                 [com.taoensso/nippy         "2.5.0"]]
+                 [com.taoensso/nippy         "2.5.1"]]
   :profiles {:1.5   {:dependencies [[org.clojure/clojure "1.5.1"]]}
              :1.6   {:dependencies [[org.clojure/clojure "1.6.0-alpha2"]]}
              :dev   {:dependencies []}


Version 0.4.25-SNAPSHOT

Version 0.4.25-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject yetibot.core "0.4.24"
+(defproject yetibot.core "0.4.25-SNAPSHOT"
   :description "Core yetibot utilities, extracted for shared use among yetibot
                 and its various plugins"
   :url "https://github.com/yetibot/yetibot.core"


can now build a (non-functional?) uberwar

it works (atleast) on:
   $ lein with-profile production ring uberwar

--- project.clj
+++ project.clj
@@ -1,13 +1,13 @@
 (defproject foosball "1.2.0-SNAPSHOT"
   :dependencies [[org.clojure/clojure "1.5.1"]
                  [com.datomic/datomic-free "0.8.4159" :exclusions [com.amazonaws/aws-java-sdk]]
+                 [ring/ring-core "1.2.0"]
                  [lib-noir "0.6.8"]
                  [compojure "1.1.5" :exclusions [org.clojure/tools.macro
                                                  org.clojure/core.incubator
                                                  ring/ring-core]]
                  [ring-server "0.3.0" :exclusions [org.clojure/core.incubator]]
-                 [com.cemerick/friend "0.1.5" :exclusions [ring/ring-core
-                                                           slingshot]]
+                 [com.cemerick/friend "0.1.5" :exclusions [ring/ring-core]]
                  [com.taoensso/timbre "2.6.1"]
                  [log4j "1.2.17" :exclusions [javax.mail/mail
                                               javax.jms/jms


Microoptimization in computing frequent concept sets

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

--- src/conexp/contrib/dl/languages/EL_gfp_exploration.clj
+++ src/conexp/contrib/dl/languages/EL_gfp_exploration.clj
@@ -151,8 +151,7 @@
     (remove #(= -1 (weight-of %))
             (titanic/titanic-keys (set concepts)
                                   (fn [set-of-concept-sets]
-                                    (into {} (for [concept-set set-of-concept-sets]
-                                               [concept-set (weight-of concept-set)])))
+                                    (map-by-fn weight-of set-of-concept-sets))
                                   1.0
                                   <=))))


bump up clj-http version

bump up clj-http version

--- project.clj
+++ project.clj
@@ -6,7 +6,7 @@

   :dependencies
   [[org.clojure/clojure "1.7.0"]
-   [clj-http "2.0.0"]
+   [clj-http "2.0.1"]
    [enlive "1.1.6"]
    [org.clojure/clojurescript "1.7.228"]]


Upgrade midje and lein-midje to work with lein2

--- project.clj
+++ project.clj
@@ -2,7 +2,7 @@
   :description "RuuviTracker server"
   :min-lein-version "2.0.0"
   :plugins [[lein-ring "0.7.3"]
-            [lein-midje "1.0.8"]]
+            [lein-midje "2.0.0-SNAPSHOT"]]
   :dependencies [[org.clojure/clojure "1.4.0"]
                  [compojure "1.1.0"]
                  [ring-json-params "0.1.3"]
@@ -32,7 +32,7 @@
          :init ruuvi-server.core/ring-init,
          :destroy ruuvi-server.core/ring-destroy}
   :profiles {:dev
-             {:dependencies [[midje "1.3.1"] [marginalia "0.3.2"]]}}
+             {:dependencies [[midje "1.4.0"] [marginalia "0.3.2"]]}}
   :aot [ruuvi-server.standalone.starter]
   :main ruuvi-server.standalone.starter
   )


Version 6.3.3

Version 6.3.3

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(def ps-version "6.3.3-SNAPSHOT")
+(def ps-version "6.3.3")

 (defn deploy-info
   [url]


Build docs to API dir

Build docs to API dir

--- project.clj
+++ project.clj
@@ -8,6 +8,6 @@
                  [io.atomix.catalyst/catalyst-netty "1.0.7"]]
   :repositories [["sonatype-nexus-snapshots" {:url "https://oss.sonatype.org/content/repositories/snapshots"}]]
   :plugins [[lein-codox "0.9.0"]]
-  :codox {:output-path "target/docs/docs"
+  :codox {:output-path "target/docs/api"
           :metadata {:doc/format :markdown}
           :source-uri "http://github.com/atomix/trinity/blob/master/{filepath}#L{line}"})


填写为阿里云的地址

填写为阿里云的地址

--- project.clj
+++ project.clj
@@ -14,6 +14,8 @@
   :plugins [[lein-cljsbuild "1.1.4"
              :exclusions [org.clojure/clojure]]
             [lein-figwheel "0.5.4-7"]]
+
+  :repositories {"aliyun" "http://maven.aliyun.com/nexus/content/groups/public"}

   :clean-targets ^{:protect false} ["resources/public/js/out"
                                     "resources/public/js/flappy_bird_demo.js"


Tweaks to sort out logging.

Tweaks to sort out logging.

--- project.clj
+++ project.clj
@@ -10,11 +10,12 @@
                  [org.clojure/data.xml "0.0.7"]
                  [org.clojure/data.zip "0.1.1"]
                  [org.clojure/tools.logging "0.2.6"]
+                 [org.slf4j/jul-to-slf4j "1.7.5"]
                  [org.slf4j/slf4j-api "1.7.5"]
-                 [org.slf4j/jul-to-slf4j "1.7.5"]
+                 [org.slf4j/jcl-over-slf4j "1.7.5"]
                  [ch.qos.logback/logback-classic "1.0.13"]
                  [com.ovi.common.metrics/metrics-graphite "2.1.21"]
-                 [clj-http "0.7.6"]
+                 [clj-http "0.7.6" :exclusions [commons-logging]]
                  [cheshire "5.2.0"]
                  [clj-time "0.6.0"]
                  [environ "0.4.0"]
@@ -31,7 +32,7 @@
                                                 org.eclipse.jetty.orbit/javax.servlet]]
                                   [clj-http-fake "0.4.1"]
                                   [junit "4.11"]
-                                  [midje "1.5.1"]
+                                  [midje "1.5.1" :exclusions [commons-logging]]
                                   [rest-cljer "0.1.7"]]
                    :plugins [[lein-rpm "0.0.4"]
                              [lein-midje "3.0.1"]


Version 0.4.17-alpha3

Version 0.4.17-alpha3

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject yetibot.core "0.4.17-alpha3-SNAPSHOT"
+(defproject yetibot.core "0.4.17-alpha3"
   :description "Core yetibot utilities, extracted for shared use among yetibot
                 and its various plugins"
   :url "https://github.com/yetibot/yetibot.core"


Update core.async version.

Update core.async version.

--- project.clj
+++ project.clj
@@ -4,8 +4,7 @@
   :license {:name "Apache 2.0"
             :url "http://www.apache.org/licenses/LICENSE-2.0.txt"}
   :dependencies [[org.clojure/clojure "1.6.0"]
-                 [org.clojure/core.async "0.1.267.0-0d7780-alpha"]
-                 [com.taoensso/nippy "2.6.3"]
+                 [org.clojure/core.async "0.1.346.0-17112a-alpha"]
                  [net.java.dev.jna/jna "4.1.0"]]
   :jvm-opts ["-server" "-Xmx2g" "-XX:+UseG1GC"]
   :source-paths ["src/clojure"]


Prepare for next release cycle.

Prepare for next release cycle.

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.onyxplatform/onyx-sql "0.12.0.0-alpha4"
+(defproject org.onyxplatform/onyx-sql "0.12.0.0-SNAPSHOT"
   :description "Onyx plugin for JDBC-backed SQL databases"
   :url "https://github.com/onyx-platform/onyx-sql"
   :license {:name "Eclipse Public License"


Version 0.2.0-SNAPSHOT

Version 0.2.0-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject aws-overlord "0.1.0"
+(defproject aws-overlord "0.2.0-SNAPSHOT"
   :description "An AWS account coordinator."

   :url "https://github.com/zalando/aws-overlord"


updated deps

updated deps

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject aviary/owl "0.0.22"
+(defproject aviary/owl "0.0.23"
   :description "Graph analysis in Clojure"
   :url "http://github.com/littlebird/owl"
   :license {:name "Eclipse Public License"
@@ -7,8 +7,8 @@
   :javac-options ["-target" "1.8" "-source" "1.8"]
   :java-source-paths ["src/java"]
   :dependencies [[org.clojure/clojure "1.8.0"]
-                 [com.taoensso/timbre "4.8.0"]
-                 [org.clojure/math.combinatorics "0.1.1"]]
+                 [com.taoensso/timbre "4.10.0"]
+                 [org.clojure/math.combinatorics "0.1.4"]]
   :plugins [[s3-wagon-private "1.1.2"]]
   :repositories [["private" {:url "s3p://littlebird-maven/releases/"
                              :creds :gpg


add project.clj stuff

add project.clj stuff

--- project.clj
+++ project.clj
@@ -1,6 +1,6 @@
 (defproject laboratory "0.1.0-SNAPSHOT"
-  :description "FIXME: write description"
-  :url "http://example.com/FIXME"
+  :description "do science in production"
+  :url "https://github.com/yeller/laboratory"
   :license {:name "Eclipse Public License"
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.7.0"]]


Update dependencies

Update dependencies

--- project.clj
+++ project.clj
@@ -6,7 +6,7 @@
   :dependencies [[bidi "1.10.5"]
                  [org.clojure/clojure "1.6.0"]
                  [org.clojure/java.jdbc "0.3.5"]
-                 [hikari-cp "0.6.0"]
+                 [hikari-cp "0.7.0"]
                  [liberator "0.12.2"]
                  [postgresql "9.3-1102.jdbc41"]
                  [prone "0.6.0"]
@@ -14,7 +14,7 @@
                  [dhruv/ring-secure-headers "0.3.0"]
                  [org.clojure/tools.logging "0.3.1"]
                  [puppetlabs/trapperkeeper "0.5.1"]
-                 [puppetlabs/trapperkeeper-webserver-jetty9 "0.7.5"]
+                 [puppetlabs/trapperkeeper-webserver-jetty9 "0.7.7"]
                  [yesql "0.4.0"]]
   :aliases {"tk" ["trampoline" "run" "--config" "resources/config/config.edn" "--bootstrap-config" "resources/config/bootstrap.cfg"]}
   :main puppetlabs.trapperkeeper.main)


Release 1.14.0

Release 1.14.0

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject toucan "1.14.0-SNAPSHOT"
+(defproject toucan "1.14.0"
   :description "Functionality for defining your application's models and querying the database."
   :url "https://github.com/metabase/toucan"
   :license {:name "Eclipse Public License"


Update lib version.

Update lib version.

--- project.clj
+++ project.clj
@@ -38,7 +38,7 @@
     [zprint "0.4.15"]

     ;; Library for OC projects https://github.com/open-company/open-company-lib
-    [open-company/lib "0.17.9-alpha1"]
+    [open-company/lib "0.17.9"]
     ;; In addition to common functions, brings in the following common dependencies used by this project:
     ;; httpkit - HTTP client/server http://www.http-kit.org/
     ;; defun - Erlang-esque pattern matching for Clojure functions https://github.com/killme2008/defun


Fix dependencies.

Fix dependencies.

--- project.clj
+++ project.clj
@@ -6,5 +6,5 @@
             :url "http://www.eclipse.org/legal/epl-v10.html"}
   :dependencies [[org.clojure/clojure "1.7.0"]
                  [clj-assorted-utils "1.10.990"]
-                 [jline/jline "2.14-SNAPSHOT"]]
+                 [jline/jline "2.13"]]
   :main cli4clj.example)


Update piggieback

Update piggieback

--- project.clj
+++ project.clj
@@ -28,7 +28,7 @@
                                        [cljsjs/react-dom "16.8.3-0"]
                                        [cljsjs/react-dom-server "16.8.3-0"]
                                        [org.clojure/clojurescript "1.10.439"]]}
-             :repl {:dependencies [[cider/piggieback "0.3.10"]]
+             :repl {:dependencies [[cider/piggieback "0.4.4"]]
                     :repl-options {:nrepl-middleware [cider.piggieback/wrap-cljs-repl]}}}
   :aliases {"benchmark" ["doo" "node" "benchmark" "once"]
             "ci" ["do" ["clean"] ["test"] ["test.nashorn"] ["test.node"] ["test.phantom"] ["benchmark"]]


Version number for release

Version number for release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject foreclojure "0.2.2.1"
+(defproject foreclojure "0.3.0"
   :description "4clojure - a website for lisp beginners"
   :dependencies [[org.clojure/clojure "1.2.1"]
                  [org.clojure/clojure-contrib "1.2.0"]


lein-release plugin: bumped version from 0.27 to 0.28-SNAPSHOT for next development cycle

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject shuppet "0.27"
+(defproject shuppet "0.28-SNAPSHOT"
   :description "Shuppet service"
   :url "http://wikis.in.nokia.com/NokiaMusicArchitecture/Shuppet"


add kibit dep

add kibit dep

--- project.clj
+++ project.clj
@@ -19,7 +19,8 @@
                  [environ "1.0.0"]
                  [com.cemerick/piggieback "0.1.3"]
                  [com.taoensso/timbre "3.1.6"]
-                 [weasel "0.4.0-SNAPSHOT"]]
+                 [weasel "0.4.0-SNAPSHOT"]
+                 [jonase/kibit "0.0.8"]]

   :plugins [[lein-cljsbuild "1.0.3"]
             [lein-environ "1.0.0"]]


(PE-18344) Bump to clj-parent 0.4.0

(PE-18344) Bump to clj-parent 0.4.0

This pulls in trapperkeeper-metrics 0.6.0, which this PR depends on.

--- project.clj
+++ project.clj
@@ -32,7 +32,7 @@

   :min-lein-version "2.7.1"

-  :parent-project {:coords [puppetlabs/clj-parent "0.3.3"]
+  :parent-project {:coords [puppetlabs/clj-parent "0.4.0"]
                    :inherit [:managed-dependencies]}

   :dependencies [[org.clojure/clojure]
@@ -61,7 +61,7 @@
                  [puppetlabs/jruby-utils "0.7.0"]
                  [puppetlabs/trapperkeeper]
                  [puppetlabs/trapperkeeper-authorization]
-                 [puppetlabs/trapperkeeper-metrics "0.6.0"]
+                 [puppetlabs/trapperkeeper-metrics]
                  [puppetlabs/trapperkeeper-scheduler]
                  [puppetlabs/trapperkeeper-status]
                  [puppetlabs/kitchensink]


lein-release plugin: preparing 0.18 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject shuppet "0.18-SNAPSHOT"
+(defproject shuppet "0.18"
   :description "Shuppet service"
   :url "http://wikis.in.nokia.com/NokiaMusicArchitecture/Shuppet"


0.2.5-SNAPSHOT

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject riemann "0.2.4"
+(defproject riemann "0.2.5-SNAPSHOT"
   :description
 "A network event stream processor. Intended for analytics, metrics, and alerting; and to glue various monitoring systems together."
   :url "http://github.com/aphyr/riemann"


Fix onyx version number

Fix onyx version number

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.onyxplatform/onyx "0.8.4-SNAPSHOT"
+(defproject org.onyxplatform/onyx "0.8.5-SNAPSHOT"
   :description "Distributed, masterless, high performance, fault tolerant data processing for Clojure"
   :url "https://github.com/onyx-platform/onyx"
   :license {:name "Eclipse Public License"


Upgrade to latest sql lib

Upgrade to latest sql lib

This version should contain the ability to set fetchSize on ResultSet
objects, as described here:

http://bit.ly/pzpAgD

--- project.clj
+++ project.clj
@@ -3,7 +3,7 @@
   :dependencies [[org.clojure/clojure "1.2.1"]
                  [org.clojure/clojure-contrib "1.2.0"]
                  [postgresql/postgresql "9.0-801.jdbc4"]
-                 [org.clojure/java.jdbc "0.0.5"]
+                 [org.clojure/java.jdbc "0.0.6"]
                  [clj-json "0.3.2"]
                  [digest "1.2.1"]
                  [log4j "1.2.16" :exclusions [javax.mail/mail


Temporarily downgraded pomengrate

Temporarily downgraded pomengrate

--- project.clj
+++ project.clj
@@ -21,7 +21,7 @@
     [com.github.juise/logstash-logback-layout "1.0"]
     [net.logstash.logback/logstash-logback-encoder "4.11"]
     [org.influxdb/influxdb-java "2.8"]
-    [com.cemerick/pomegranate "1.0.0"
+    [com.cemerick/pomegranate "0.3.1"
      :exclusions [org.codehaus.plexus/plexus-utils]]
     ; for pomegranate
     [org.codehaus.plexus/plexus-utils "3.0"]


(PE-12468) Bump ezbake version for service startup timeout

Signed-off-by: Ken Barber <470bc578162732ac7f9d387d34c4af4ca6e1b6f7@bob.sh>

--- project.clj
+++ project.clj
@@ -133,7 +133,7 @@
              :ezbake {:dependencies ^:replace [[puppetlabs/puppetdb ~pdb-version]
                                                [org.clojure/tools.nrepl "0.2.3"]]
                       :name "puppetdb"
-                      :plugins [[puppetlabs/lein-ezbake "0.3.18"
+                      :plugins [[puppetlabs/lein-ezbake "0.3.20"
                                  :exclusions [org.clojure/clojure]]]}
              :testutils {:source-paths ^:replace ["test"]}
              :ci {:plugins [[lein-pprint "1.1.1"]]}}


Release 0.31.0.

Release 0.31.0.

--- project.clj
+++ project.clj
@@ -6,7 +6,7 @@
 ;;   the terms of this license.
 ;;   You must not remove this notice, or any other, from this software.

-(defproject uncomplicate/neanderthal "0.31.0-SNAPSHOT"
+(defproject uncomplicate/neanderthal "0.31.0"
   :description "Neanderthal is a Clojure library for fast matrix and linear algebra computations."
   :url "https://github.com/uncomplicate/neanderthal"
   :scm {:name "git"


lein-release plugin: preparing 0.3.1 release

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject org.domaindrivenarchitecture/dda-backup-crate "0.3.1-SNAPSHOT"
+(defproject org.domaindrivenarchitecture/dda-backup-crate "0.3.1"
   :description "A crate to handle configuration, their dependencies, documentation and validation"
   :url "https://www.domaindrivenarchitecture.org"
   :license {:name "Apache License, Version 2.0"


upgrade versions

upgrade versions

--- project.clj
+++ project.clj
@@ -17,7 +17,7 @@
                  [compojure "1.4.0"]
                  [enlive "1.1.6"]
                  [org.omcljs/om "0.9.0"]
-                 [environ "1.0.0"]
+                 [environ "1.0.1"]
                  [org.clojure/test.check "0.8.2"]]

   :plugins [[lein-cljsbuild "1.0.5"]
@@ -38,10 +38,10 @@
   :profiles {:dev {:source-paths ["env/dev/clj"]
                    :test-paths ["test/clj"]

-                   :dependencies [[figwheel "0.3.9"]
-                                  [figwheel-sidecar "0.3.9"]
+                   :dependencies [[figwheel "0.4.0"]
+                                  [figwheel-sidecar "0.4.0"]
                                   [com.cemerick/piggieback "0.2.1"]
-                                  [org.clojure/tools.nrepl "0.2.10"]
+                                  [org.clojure/tools.nrepl "0.2.11"]
                                   [weasel "0.7.0"]]

                    :repl-options {:init-ns football.server


Version 0.34.4

Version 0.34.4

--- project.clj
+++ project.clj
@@ -1,4 +1,4 @@
-(defproject nhl-score-api "0.34.3"
+(defproject nhl-score-api "0.34.4"
   :description "A JSON API that returns the scores and goals from the latest finished NHL games."
   :license {:name "MIT"
             :url "https://opensource.org/licenses/MIT"}


Made input buttons in bootstrap 3 style

Made input buttons in bootstrap 3 style

--- src/webapp/client/views/login_panel.cljs
+++ src/webapp/client/views/login_panel.cljs
@@ -30,13 +30,17 @@
 (defn login-panel []
   (el :form {:class "form-inline" :style "padding: 5px"}
       [
-        "<input  id='username-input' type='text' class='input-small' placeholder='Email'>"
-
-        "<input  id='password-input' type='password' class='input-small' placeholder='Password'>"
-
-        "<label class='checkbox' style='margin-right:15px;margin-left:10px;'>
-          <input type='checkbox'> Remember me
-        </label>"
+       (el :div {:class "form-group"} [
+        "<input  id='username-input' type='email' class='input-small form-control' placeholder='Email'>"
+        ])
+       (el :div {:class "form-group"} [
+        "<input  id='password-input' type='password' class='input-small form-control' placeholder='Password'>"
+        ])
+        "<div class='checkbox' style='margin-left: 10px;'>
+            <label>
+              <input type='checkbox'> Remember me
+            </label>
+          </div>"

        (el :button {
                      :id       "signup-button"
@@ -63,15 +67,15 @@

-
-
 (defn signup-panel []
-  (el :form {:class "form-inline" :style "padding: 5px"}
+  (el :form {:class "form-inline" :role "form" :style "padding: 5px"}
       [
-
-       "<input  id='username-input' type='text' class='input-small' placeholder='Email'>"
-
-       "<input  id='password-input' type='password' class='input-small' placeholder='Password'>"
+       (el :div {:class "form-group"} [
+           "<input  id='username-input' type='email' class='input-small form-control' placeholder='Email'>"
+        ])
+       (el :div {:class "form-group"} [
+       "<input  id='password-input' type='password' class='input-small form-control' placeholder='Password'>"
+        ])

        (el :button {
                      :id       "signup-button"


(maint) Enable debugging output on unstable test

--- test/puppetlabs/pcp/messaging_test.clj
+++ test/puppetlabs/pcp/messaging_test.clj
@@ -160,16 +160,17 @@

 (deftest connect-to-a-down-up-down-up-broker-test
   (with-open [client (connect-client "client01" (constantly true))]
-    (is (not (client/connected? client)) "Should not be connected yet")
-    (with-app-with-config app broker-services broker-config
-      (client/wait-for-connection client (* 40 1000))
-      (is (client/connected? client) "Should now be connected"))
-    ;; Allow time for the websocket connection to close, but not enough to attempt reconnecting
-    (Thread/sleep 5)
-    (is (not (client/connected? client)) "Should be disconnected")
-    (with-app-with-config app broker-services broker-config
-      (client/wait-for-connection client (* 40 1000))
-      (is (client/connected? client) "Should be reconnected"))))
+    (with-log-level "puppetlabs.pcp.client" :debug
+      (is (not (client/connected? client)) "Should not be connected yet")
+      (with-app-with-config app broker-services broker-config
+        (client/wait-for-connection client (* 40 1000))
+        (is (client/connected? client) "Should now be connected"))
+      ;; Allow time for the websocket connection to close, but not enough to attempt reconnecting
+      (Thread/sleep 5)
+      (is (not (client/connected? client)) "Should be disconnected")
+      (with-app-with-config app broker-services broker-config
+        (client/wait-for-connection client (* 40 1000))
+        (is (client/connected? client) "Should be reconnected")))))

 (deftest association-checkers-test
   (with-app-with-config app broker-services broker-config


added :vector to one-with-everything interpreter

--- src/push/interpreter/templates/one_with_everything.clj
+++ src/push/interpreter/templates/one_with_everything.clj
@@ -36,6 +36,7 @@
       push.types.base.integer/classic-integer-type)
     (push.types.standard.vectorized/build-vectorized-type
       push.types.base.string/classic-string-type)
+
     push.types.standard.vector/standard-vector-type
     ])

@@ -69,6 +70,7 @@
   - integers-type
   - floats-type
   - strings-type
+  - standard-vector-type (loaded last as a default)
   and the counter is 0.

   Optional arguments include


Add translation fn: _ to runtime.

Add translation fn: _ to runtime.

--- src/fleet/runtime.clj
+++ src/fleet/runtime.clj
@@ -33,9 +33,18 @@
   nil
   (screen [_ _] nil))

+(def ^:dynamic *transDomain* "Translation (i18n) domain." nil)
+(def ^:dynamic translate (fn [in] (str "{fleet.runtime/translate unbound: '" in "'}")))
+(defn _
+  "Translation function; Will send the parameter to r18n and return the translated value as a string"
+  ([f word] (_ f word *transDomain*))
+  ([f word transDomain]
+    (translate f word transDomain)))
+
 (defn make-runtime
   "Create runtime functions applied to specified escaping-fn."
   [escaping-fn]
-  {:raw  (partial raw  escaping-fn)
-   :raw? (partial raw? escaping-fn)
-   :screen #(screen %1 escaping-fn)})
+  {:raw    (partial raw  escaping-fn)
+   :raw?   (partial raw? escaping-fn)
+   :screen #(screen %1   escaping-fn)
+   :_      (partial _    escaping-fn)})


[#1796] Remove unused function args (and hide fns)

--- backend/src/akvo/lumen/lib/import.clj
+++ backend/src/akvo/lumen/lib/import.clj
@@ -16,7 +16,7 @@
 (hugsql/def-db-fns "akvo/lumen/lib/dataset.sql")
 (hugsql/def-db-fns "akvo/lumen/lib/transformation.sql")

-(defn successful-import [conn job-execution-id table-name columns spec claims data-source]
+(defn- successful-import [conn job-execution-id table-name columns spec claims]
   (let [dataset-id (util/squuid)
         imported-table-name (util/gen-table-name "imported")]
     (insert-dataset conn {:id dataset-id
@@ -48,7 +48,7 @@
                                   :transformations []})
     (update-successful-job-execution conn {:id job-execution-id})))

-(defn failed-import [conn job-execution-id reason table-name]
+(defn- failed-import [conn job-execution-id reason table-name]
   (update-failed-job-execution conn {:id job-execution-id
                                      :reason [reason]})
   (drop-table conn {:table-name table-name}))
@@ -56,7 +56,7 @@
 (defn do-import
   "Import runs within a future and since this is not taking part of ring
   request / response cycle we need to make sure to capture errors."
-  [conn {:keys [sentry-backend-dsn] :as config} error-tracker job-execution-id claims data-source]
+  [conn {:keys [sentry-backend-dsn] :as config} error-tracker job-execution-id claims]
   (let [table-name (util/gen-table-name "ds")]
     (try
       (let [spec (:spec (data-source-spec-by-job-execution-id conn {:job-execution-id job-execution-id}))]
@@ -65,7 +65,7 @@
             (common/create-dataset-table conn table-name columns)
             (doseq [record (map common/coerce-to-sql (p/records importer))]
               (jdbc/insert! conn table-name record))
-            (successful-import conn job-execution-id table-name columns spec claims data-source))))
+            (successful-import conn job-execution-id table-name columns spec claims))))
       (catch Throwable e
         (failed-import conn job-execution-id (.getMessage e) table-name)
         (log/error e)
@@ -81,6 +81,6 @@
                                      :spec (json/generate-string data-source)})
     (insert-job-execution tenant-conn {:id job-execution-id
                                        :data-source-id data-source-id})
-    (future (do-import tenant-conn config error-tracker job-execution-id claims data-source))
+    (future (do-import tenant-conn config error-tracker job-execution-id claims))
     (lib/ok {"importId" job-execution-id
              "kind" kind})))


Delete resource.clj

Delete resource.clj

--- src/iyye/resource.clj
+++ src/iyye/resource.clj
@@ -1,119 +0,0 @@
-; Iyye - AI agent
-; Copyright (C) 2016-2017  Sasha Yumzya
-
-; This program is free software: you can redistribute it and/or modify
-; it under the terms of the GNU Affero General Public License as
-; published by the Free Software Foundation, either version 3 of the
-; License, or (at your option) any later version.
-
-; This program is distributed in the hope that it will be useful,
-; but WITHOUT ANY WARRANTY; without even the implied warranty of
-; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-; GNU Affero General Public License for more details.
-
-; You should have received a copy of the GNU Affero General Public License
-; along with this program.  If not, see <http://www.gnu.org/licenses/>.
-
-(ns iyye.resource
-  (:require
-    [iyye.task :refer [start-task stop-task]]
-    [iyye.persistence :as persistence]
-    [clojure.tools.logging :as log]))
-
-(defprotocol Resource
-  (get-current-percentage [this]))
-
-; Simple time, e.g. for 30 minutes "day"
-(def thirty-minute-day 1000000)
-
-(defrecord TimeResource [start-time end-time])
-
-(extend-type TimeResource
-  Resource
-  (get-current-percentage [this]
-    (- 100 (float (* 100 (/ (- (System/currentTimeMillis) (:start-time this))
-                            (- (:end-time this) (:start-time this))))))))
-
-(def ^:private all-day-resources (ref ()))
-(def ^:private all-night-resources (ref ()))
-
-(defn register-day-resource [resource]
-  (dosync (alter all-day-resources conj resource)))
-
-(defn register-night-resource [resource]
-  (dosync (alter all-night-resources conj resource)))
-
-(defn are-resources-exhausted? [day]
-  "Returns true if there is a Resource that has left with less than Threshold capacity"
-  (let [start-time (:day-start day)
-        threshold (:threshold day)
-        time-since-start (- (System/currentTimeMillis) start-time)
-        day-time (:day-time day)
-        time-ratio (/ time-since-start day-time)]
-    (if (> (count @all-day-resources) 0)
-      (< (* (reduce + (map get-current-percentage @all-day-resources)) time-ratio) threshold)
-      (< (- 1 time-ratio) threshold))))
-
-(defn are-resources-ok? [day]
-  "Returns if day resources are ok"
-  (if (> (count @all-day-resources) 0)
-    (> (reduce + (map get-current-percentage @all-day-resources)) (- 1 (:threshold day)))
-    true))
-
-(defn are-resources-replenished? [night]
-  "Returns true if all Resources have more than Threshold capacity"
-  (let [threshold (:threshold night)
-        day-resources-ok (are-resources-ok? (:day night))]
-    (if (> (count @all-night-resources) 0)
-      (< (first (sort (map get-current-percentage @all-night-resources))) threshold)
-      day-resources-ok)))
-
-(def num-days (ref 0))
-
-(defrecord DayRoutine [day-start day-time threshold function task-future])
-(defrecord NightRoutine [day night-start night-time threshold function task-future])
-
-(def awake-or-sleep (ref false))
-(defn is-awake? [] @awake-or-sleep)
-(defn is-asleep? []
-  (not is-awake?))
-
-(def DAY_TIME thirty-minute-day)
-(def DAY_THRESHOLD 0.1)
-
-(defn create-day []
-  (DayRoutine. (System/currentTimeMillis) DAY_TIME DAY_THRESHOLD #(Thread/sleep 1000) (ref 0)))
-
-(defn create-night [day]
-  (NightRoutine. day (System/currentTimeMillis) DAY_TIME DAY_THRESHOLD #(Thread/sleep 1000) (ref 0)))
-
-(defn start-day [day]
-  (doall
-    [(start-task day)
-     (dosync ref-set (:day-start day) (System/currentTimeMillis))
-     (dosync ref-set awake-or-sleep true)
-     (dosync (alter num-days inc))
-     (persistence/record-day @num-days)
-     (log/info "next day: " @num-days)]))
-
-(defn is-day-over? [day] (are-resources-exhausted? day))
-
-(defn is-night-over? [night] (are-resources-replenished? night))
-
-(defn start-night [night]
-  (doall
-    [(start-task night)
-     (persistence/record-night @num-days)
-     (dosync ref-set (:night-start night) (System/currentTimeMillis))]))
-
-(defn stop-day [day]
-  (dorun
-    [(stop-task day)
-     (dosync ref-set awake-or-sleep false)]))
-
-(defn stop-night [night]
-  (dorun
-    [(stop-task night)]))
-
-(defn load-day! []
-  (dosync (ref-set num-days (persistence/load-days))))


set heartbeat timeout to 10 seconds

set heartbeat timeout to 10 seconds

--- src/jepsen/voltdb.clj
+++ src/jepsen/voltdb.clj
@@ -74,7 +74,7 @@
        ; isolated nodes with requests *before* they kill themselves
        ; but low enough that a new majority is elected and performs
        ; some operations.
-       [:heartbeat {:timeout 5}] ; seconds
+       [:heartbeat {:timeout 10}] ; seconds
        [:commandlog {:enabled true, :synchronous true, :logsize 128}
         [:frequency {:time 2}]]]))) ; milliseconds


add generate task

add generate task

--- ring-container/build.boot
+++ ring-container/build.boot
@@ -34,6 +34,7 @@
                    [boot-environ]
                    [adzerk/boot-test]
                    [adzerk/boot-reload]
+                   [onetom/boot-lein-generate]
                    [tolitius/boot-check]]))))

 (require
@@ -43,7 +44,8 @@
   '[tolitius.boot-check :refer [with-yagni
                                 with-eastwood
                                 with-kibit
-                                with-bikeshed]])
+                                with-bikeshed]]
+  '[boot.lein :refer [generate]])

 (set-env!
   :source-paths #{"test" "test-resources"}


Don't downcase non-strings either.

Don't downcase non-strings either.

--- src/marcgrep/core.clj
+++ src/marcgrep/core.clj
@@ -93,7 +93,8 @@
     (let [[predicate options] (if (vector? (predicates (:operator query)))
                                 (predicates (:operator query))
                                 [(predicates (:operator query))])
-          value (if (:case-sensitive options)
+          value (if (or (not (string? query))
+                        (:case-sensitive options))
                   (:value query)
                   (.toLowerCase (:value query)))
           fieldspec (parse-marc-field (:field query))]


FM | 0 | temporary (weekend) fix for test that's failing because its time dependent

--- test-cljs/mooncake/jstest/test/feed.cljs
+++ test-cljs/mooncake/jstest/test/feed.cljs
@@ -106,12 +106,13 @@
                                (is (= (feed/new-activities-link-text 1) "View in Finnish 1 new activity in Finnish")))))

 (deftest about-converting-the-activity-time-to-readable-format
+         ;TODO fix test so that it doesn't break every month *grumble grumble grumble*
          (testing "the time is converted to English by default"
                   (set-initial-state)
                   (feed/give-all-activities-human-readable-time)
-                  (is (= (d/text (dm/sel1 :.clj--activity-item__time)) "5 months ago")))
+                  (is (= (d/text (dm/sel1 :.clj--activity-item__time)) "6 months ago")))
          (testing "the time is in the same language as the browser"
                   (set-initial-state)
                   (tu/set-lang! "fi")
                   (feed/give-all-activities-human-readable-time)
-                  (is (= (d/text (dm/sel1 :.clj--activity-item__time)) "viisi kuukautta sitten"))))+                  (is (= (d/text (dm/sel1 :.clj--activity-item__time)) "kuusi kuukautta sitten"))))


disable long running test

disable long running test

--- test/corpusmaker/test_wikipedia_flow.clj
+++ test/corpusmaker/test_wikipedia_flow.clj
@@ -75,6 +75,7 @@

 (defn- more-than-one? [count] (> count 1))

+(comment
 (deftest test-trigrams
   (with-log-level :warn
     (with-tmp-files [sink-path (temp-path "corpusmaker-test-sink")]
@@ -97,3 +98,4 @@
           (is (= "a form of\t3" (nth output-lines 1)))
           (is (= "a high level\t2" (nth output-lines 2)))
           (is (= "a history of\t2" (nth output-lines 3))))))))
+)


whoops, fix broken top/bottom ctas

whoops, fix broken top/bottom ctas

--- src-cljs/frontend/components/landing.cljs
+++ src-cljs/frontend/components/landing.cljs
@@ -240,8 +240,8 @@
           [:div.our-claim
            [:div.our-philosophy-wrap
             [:div.our-philosophy.content
-             [:h1 "Prototyping and team collaboration should be simple. "]
-             [:p "That's why we made Precursor."]
+             [:h1.content-copy "Prototyping and team collaboration should be simple. "]
+             [:p.content-copy "That's why we made Precursor."]
              [:div.calls-to-action
               (om/build make-button (select-keys app [:document/id]))]]]]
           [:div.our-proof
@@ -334,13 +334,12 @@
           [:div.our-claim
            [:div.our-philosophy-wrap
             [:div.our-philosophy.content
-             [:h1 "It's a blackboard designed to help teams brainstorm."]
-             [:p "Precursor is no-nonsense prototyping."]
-             (if (utils/logged-in? owner)
-               [:div.calls-to-action
-                (om/build make-button (select-keys app [:document/id])
-                          {:opts {:alt "alt"}})
-                [:a.pancake-button {:href "/trial/team"} "Start a free trial."]])]]]])))))
+             [:h1.content-copy "It's a blackboard designed to help teams brainstorm."]
+             [:p.content-copy "Precursor is no-nonsense prototyping."]
+             [:div.calls-to-action
+              (om/build make-button (select-keys app [:document/id])
+                        {:opts {:alt "alt"}})
+              [:a.pancake-button {:href "/trial/team"} "Start a free trial."]]]]]])))))

 (defn landing [app owner]
   (reify


Extract banner-contents.

Extract banner-contents.

--- src-cljs/frontend/components/license.cljs
+++ src-cljs/frontend/components/license.cljs
@@ -13,30 +13,36 @@
        (t/interval (t/now))
        t/in-days))

+(defn- banner-contents [indicator-text message days days-description]
+  (list
+   [:.indicator indicator-text]
+   [:.message message]
+   [:.timing [:span.days days] " " days-description]
+   [:a.contact-sales
+    {:href "mailto:enterprise@circleci.com"}
+    "Contact Sales…"]))
+
 (defn- banner-for-license
   "Returns the banner for the given license, or nil if no banner applies."
   [license]
-  (case ((juxt :type :status) license)
-    ["trial" "current"]
-    (let [days-until-expiry (days-until-api-time (:expiry_date license))]
-      [:.license-banner {:class (:status license)}
-       [:.indicator "Trial Account"]
-       [:.message "Welcome to CircleCI."]
-       [:.timing [:span.days days-until-expiry] " days left in trial"]
-       [:a.contact-sales
-        {:href "mailto:enterprise@circleci.com"}
-        "Contact Sales…"]])
+  (let [banner-type ((juxt :type :status) license)
+        contents
+        (case banner-type
+          ["trial" "current"]
+          (banner-contents "Trial Account"
+                           "Welcome to CircleCI."
+                           (days-until-api-time (:expiry_date license))
+                           "days left in trial")

-    ["trial" "in-violation"]
-    (let [days-until-suspension (days-until-api-time (:hard_expiry_date license))]
-      [:.license-banner {:class (:status license)}
-       [:.indicator "Trial Expired"]
-       [:.message "Your trial period has expired."]
-       [:.timing [:span.days days-until-suspension] " days before suspension"]
-       [:a.contact-sales
-        {:href "mailto:enterprise@circleci.com"}
-        "Contact Sales…"]])
-    nil))
+          ["trial" "in-violation"]
+          (banner-contents "Trial Expired"
+                           "Your trial period has expired."
+                           (days-until-api-time (:hard_expiry_date license))
+                           "days before suspension")
+          nil)]
+    (when contents
+      [:.license-banner {:class banner-type}
+       contents])))

 (defn show-banner?
   "Should we show a banner for the given license?"


Rm unnecessary require.

Rm unnecessary require.

--- src-cljs/frontend/components/stories.cljs
+++ src-cljs/frontend/components/stories.cljs
@@ -7,7 +7,6 @@
             [frontend.components.plans :as plans-component]
             [frontend.components.shared :as shared]
             [frontend.state :as state]
-            [frontend.stefon :as stefon]
             [frontend.utils :as utils :include-macros true]
             [frontend.utils.ajax :as ajax]
             [frontend.utils.github :as gh-utils]


Tentacle tests!

Tentacle tests!

--- test/doctopus/doctopus/tentacle_test.clj
+++ test/doctopus/doctopus/tentacle_test.clj
@@ -2,11 +2,27 @@
   (:require [clojure.edn :as edn]
             [clojure.java.io :as io]
             [clojure.test :refer :all]
+            [doctopus.configuration :as cfg]
             [doctopus.doctopus.tentacle :refer :all]
+            [doctopus.storage :as storage]
+            [doctopus.storage.impls.temp-fs :as temp-fs]
             [me.raynes.fs :as fs]))

 (def test-map-props
-  (let [base-map (edn/read-string (io/resource "resources/self/heads/main/doctopus"))]
+  (let [base-map (edn/read-string (slurp (io/resource "self/heads/main/doctopus.edn")))]
     (assoc base-map :name "doctopus-test")))

-(def one-tentacle (map->Tentacle ))
+(def one-tentacle (map->Tentacle test-map-props))
+
+(storage/set-backend! :temp-fs)
+
+(deftest tentacle-test
+  (testing "Generating HTML"
+    (is (not= nil (generate-html one-tentacle)) "This should return a truthy value on success")
+    (binding [fs/*cwd* @temp-fs/temp-dir]
+      (let [html-location (fs/file "doctopus-test/index.html")]
+        (is (fs/exists? html-location)
+            "There should be some HTML in a known location"))))
+  (testing "Can we correctly load the HTML entrypoint of this tentacle?"
+    (let [loaded-entrypoint (get-html-entrypoint one-tentacle)]
+      (is (= loaded-entrypoint "/docs/doctopus-test/index.html")))))


Returning long

Returning long

--- src/aggregatequeryservice/postservice.clj
+++ src/aggregatequeryservice/postservice.clj
@@ -6,7 +6,7 @@
             [http.async.client :refer :all :as h])
   (:gen-class
   :name aggregatequeryservice.postservice
-  :methods [#^{:static true} [executeQueriesAndPostResultsAsync [String javax.sql.DataSource java.util.HashMap java.util.HashMap java.util.HashMap] Integer]]
+  :methods [#^{:static true} [executeQueriesAndPostResultsAsync [String javax.sql.DataSource java.util.HashMap java.util.HashMap java.util.HashMap] Long]]
             [#^{:static true} [executeQueriesAndPostResultsSync [String javax.sql.DataSource java.util.HashMap java.util.HashMap java.util.HashMap] String]]))

 (defn post-template [http-post-uri http-post-headers payload]


use "visible-id" when the id is the visible id

--- src/clj/collect_earth_online/db/plots.clj
+++ src/clj/collect_earth_online/db/plots.clj
@@ -161,7 +161,7 @@
   (let [navigation-mode (:navigationMode params "unanalyzed")
         direction       (:direction params "next")
         project-id      (tc/val->int (:projectId params))
-        visible-id      (tc/val->int (:visibleId params))
+        old-visible-id  (tc/val->int (:visibleId params))
         threshold       (tc/val->int (:threshold params))
         user-id         (:userId params -1)
         current-user-id (tc/val->int (:currentUserId params -1))
@@ -182,8 +182,8 @@
                           (filter-plot-agreement project-id grouped-plots threshold)
                           grouped-plots)
         plots-info      (case direction
-                          "next"     (or (some (fn [[plot-id plots]]
-                                                 (and (> plot-id visible-id)
+                          "next"     (or (some (fn [[visible-id plots]]
+                                                 (and (> visible-id old-visible-id)
                                                       plots))
                                                final-plots)
                                          (->> final-plots
@@ -191,14 +191,14 @@
                                               (second)))
                           "previous" (or (->> final-plots
                                               (sort-by first #(compare %2 %1))
-                                              (some (fn [[plot-id plots]]
-                                                      (and (< plot-id visible-id)
+                                              (some (fn [[visible-id plots]]
+                                                      (and (< visible-id old-visible-id)
                                                            plots))))
                                          (->> final-plots
                                               (last)
                                               (second)))
-                          "id"       (some (fn [[plot-id plots]]
-                                             (and (= plot-id visible-id)
+                          "id"       (some (fn [[visible-id plots]]
+                                             (and (= visible-id old-visible-id)
                                                   plots))
                                            final-plots))]
     (if plots-info


Pipe csv

Pipe csv

--- src/clj/org/openforis/ceo/db/projects.clj
+++ src/clj/org/openforis/ceo/db/projects.clj
@@ -347,9 +347,9 @@
                       :else                      " text")))
        (str/join ",")))

-(defn- get-csv-headers [ext-file must-include]
-  (let [data (slurp ext-file)]
-    (if-let [header-row (re-find #".+(?=[\r\n|\n|\r])" data)]
+(defn- get-csv [ext-file must-include]
+  (let [[header-row body] (str/split (slurp ext-file) #"\r\n|\n|\r" 2)]
+    (if body
       (let [headers     (as-> header-row hr
                           (str/split hr #",")
                           (mapv #(-> %
@@ -370,9 +370,7 @@
           :else
           (if-let [invalid-headers (seq (remove #(re-matches #"^[a-zA-Z_][a-zA-Z0-9_]*$" %) headers))]
             (init-throw (str "One or more CSV columns are invalid: " (str/join ", " invalid-headers)))
-            (do
-              (spit ext-file (str/replace-first data header-row (str/join ", " headers)))
-              (type-columns headers)))))
+            [(type-columns headers) (str/replace body #"," "\t")])))
       (init-throw "CSV file contains no rows of data."))))

 (defn- load-external-data [distribution project-id ext-file type must-include]
@@ -401,15 +399,16 @@
                                                body)
                               (call-sql "add_index_col" table-name))
                             table-name))
-                        ;; TODO: Explore loading CSVs with a bulk insert.
-                        (let [table-name (str "project_" project-id "_" type "_csv")]
+                        (let [table-name     (str "project_" project-id "_" type "_csv")
+                              [headers body] (get-csv ext-file must-include)]
                           (call-sql "create_new_table"
                                     table-name
-                                    (get-csv-headers ext-file must-include))
-                          (sh-wrapper folder-name
-                                      {:PASSWORD "ceo"}
-                                      (format-simple "psql -h localhost -U ceo -d ceo -c `\\copy ext_tables.%1 FROM %2 DELIMITER ',' CSV HEADER`"
-                                                     table-name ext-file))
+                                    headers)
+                          (sh-wrapper-spit folder-name
+                                           {:PASSWORD "ceo"}
+                                           (format-simple "psql -h localhost -U ceo -d ceo -c `\\copy ext_tables.%1 FROM stdin`"
+                                                          table-name)
+                                           body)
                           (call-sql "add_index_col" table-name) ; Add index for reference
                           table-name))
                      "Error importing file into SQL.")))


Fix copyright year on rsapkcs15 ns

Fix copyright year on rsapkcs15 ns

--- src/clojure/buddy/core/sign/rsapkcs15.clj
+++ src/clojure/buddy/core/sign/rsapkcs15.clj
@@ -1,4 +1,4 @@
-;; Copyright 2014 Andrey Antukh <niwi@niwi.be>
+;; Copyright 2014-2015 Andrey Antukh <niwi@niwi.be>
 ;;
 ;; Licensed under the Apache License, Version 2.0 (the "License")
 ;; you may not use this file except in compliance with the License.


add scale-range and ranged-rand util fns

--- src/overtone/util.clj
+++ src/overtone/util.clj
@@ -258,3 +258,29 @@
   ([prom timeout]
      (.get (future @prom) timeout TimeUnit/MILLISECONDS)))

+
+(defn scale-range
+  "Scales a given input value within the specified input range to a corresponding value in the specified
+   output range using the formula:
+
+           (out-max - out-min) (x - in-min)
+   f (x) = --------------------------------  + out-min
+                    in-max - in-min
+
+
+  The result will be limited to the specified out range. So if the result of f(x) is greater than out-max
+  it is reduced to out-max.
+
+  in-min must be less than in-max and out-min must be less than out-max"
+
+  [x in-min in-max out-min out-max]
+  (letfn [(scale [x] (+ (/ (* (- out-max out-min) (- x in-min)) (- in-max in-min)) out-min))]
+    (let [result (scale x)
+          result (if (< result out-min) out-min result)
+          result (if (> result out-max) out-max result)]
+      result)))
+
+(defn ranged-rand
+  "Returns a random value within the specified range"
+  [min max]
+  (scale-range (rand) 0 1 min max))


Fixing util test.

Fixing util test.

--- common-lib/test/cmr/common/test/util.clj
+++ common-lib/test/cmr/common/test/util.clj
@@ -49,7 +49,7 @@
   (testing "without comments"
     (is (thrown-with-msg?
           IllegalArgumentException
-          #"The number of args doesn't match are2's argv or comments may be missing"
+          #"The number of args doesn't match are2's argv or testing doc string may be missing"
           (eval '(cmr.common.util/are2
                   [x y] (= x y)
                   2 (+ 1 1)


Fixed timer print

Fixed timer print

--- Code/DiningPhilosophers/src/main/clojure/dining.clj
+++ Code/DiningPhilosophers/src/main/clojure/dining.clj
@@ -3,7 +3,7 @@
            (com.google.common.base Stopwatch))
   (:gen-class))

-(def rounds (ref 200)) ;ref due to being a shared resource
+(def rounds (ref 20)) ;ref due to being a shared resource
 (def philosophers (doall (map #(agent %) (repeat 5 0)))) ;agents due to being uncoordinated async
 (def forks (doall (map #(ref [% true]) (range (count philosophers))))) ;ref due to being a shared resource
 (def logger (agent 0))
@@ -12,6 +12,10 @@
 (defn debug [_ id msg r]
   (println id \space msg "(" r ")")
   (flush))
+
+(defn print-stopwatch [_ time]
+  (println time)
+  (shutdown-agents))

 (defn my-forks [id]
@@ -28,25 +32,23 @@
   (if (pos? (ensure rounds))
     true
     (do
-      (println (. stopwatch
-                 (stop)
-                 (elapsed (. TimeUnit MILLISECONDS))))
-      (shutdown-agents))))
+      (. stopwatch (stop))
+      (send logger print-stopwatch (. stopwatch (elapsed (. TimeUnit MILLISECONDS))))
+      false)))

 (defn behave [a id]
   (dosync ; Initiate transaction
     (when (more-food?) ; Is there more food?
       ;(if (> 5 (rand-int 10))        ; Do I want to takeFood or think?
-      (if (got-forks? id) ; Are both of my forks available?
+      (when (got-forks? id) ; Are both of my forks available?
         (do
           (handle-forks id :take)
           (alter rounds dec)
-          (send-off logger debug id "ate      " @rounds)
-          (handle-forks id :release))
-        (do
-          (send-off logger debug id "thinks   " @rounds))
-        )))
-  (Thread/sleep 100)
+          (Thread/sleep 100)
+          ;(send-off logger debug id "ate      " @rounds)
+          (println (str id " ate " @rounds))
+          (handle-forks id :release)))))
+  ;(Thread/sleep 100)
   (send-off *agent* behave id)) ; Repeat above

 (defn start []


Internal option required for testing inheritance.

--- src/pamela/parser.clj
+++ src/pamela/parser.clj
@@ -1193,7 +1193,7 @@
 ;;   tree as txt
 (defn parse [options]
   ;; (log/warn "PARSE" options)
-  (let [{:keys [input magic output-magic check-only?]} options
+  (let [{:keys [input magic output-magic check-only? do-not-validate]} options
         parser (build-parser)
         mir (if magic (parse-magic magic) {})]
     (when magic
@@ -1245,8 +1245,10 @@
                          ;; _ (log/warn "PRE-VALIDATE")
                          pir (if check-only?
                                {:tree tree0}
-                               (validate-pamela
-                                 (insta/transform pamela-ir tree0)))]
+                               (if do-not-validate
+                                 (insta/transform pamela-ir tree0)
+                                 (validate-pamela
+                                   (insta/transform pamela-ir tree0))))]
                      (if (:error pir)
                        pir
                        (merge ir pir))))]


lock! -> lock-all! & ^:private

lock! -> lock-all! & ^:private

--- src/pepa/web/poll.clj
+++ src/pepa/web/poll.clj
@@ -34,7 +34,7 @@
 (defn ^:private send-seqs! [db ch content-type]
   ((send-fn content-type) ch {:seqs (m/sequence-numbers db)}))

-(defn lock! [db topic]
+(defn ^:private lock-all! [db topic]
   (db/with-transaction [db db]
     (doseq [lock db/advisory-locks]
       (db/advisory-xact-lock! db lock))))
@@ -56,9 +56,9 @@
             ;; Something changed
             (= port bus-changes)
             (let [topic (bus/topic val)]
-              (log/debug web "lock!")
-              (lock! db topic)
-              (log/debug web "lock! finished")
+              (log/debug web "lock-all!")
+              (lock-all! db topic)
+              (log/debug web "lock-all! finished")
               ;; Recur to trigger the then-part of the if.
               (recur))
             ;; Hit a timeout or channel is closed


Remove unnecessary metadata map

Remove unnecessary metadata map

--- src/play_clj/core.clj
+++ src/play_clj/core.clj
@@ -110,7 +110,6 @@

 (defmacro defgame
   "Defines a game. This should only be called once."
-  {:url ""}
   [n & {:keys [] :as options}]
   `(defonce ~n (defgame* ~options)))


Refactor card-extended-info

Refactor card-extended-info

--- frontend/src/faceboard/views/boards/people/card_extended_info.cljs
+++ frontend/src/faceboard/views/boards/people/card_extended_info.cljs
@@ -12,7 +12,7 @@
             [faceboard.views.boards.people.gizmos.social :refer [social-gizmo-descriptor]]
             [faceboard.helpers.social :refer [parse-social social-info]]
             [faceboard.helpers.person :as person]
-            [faceboard.helpers.utils :refer [non-sanitized-div css-transform]]
+            [faceboard.helpers.utils :refer [non-sanitized-div]]
             [faceboard.logging :refer [log log-err log-warn log-info]]
             [cuerdas.core :as str]))

@@ -27,6 +27,12 @@

 (defn has-socials? [person]
   (not (zero? (count (person/socials person)))))
+
+(defn has-icon? [social]
+  (if (str/contains? social "|") 0 1))
+
+(defn sort-social-icons-first [socials]
+  (sort #(compare (has-icon? %) (has-icon? %2)) socials))

 (defcomponent social-section-item-component [data _ _]
   (render [_]
@@ -46,12 +52,13 @@
   (render [_]
     (let [{:keys [person editing? gizmo]} data
           need-placeholder? (not (has-about? person))
-          about (if need-placeholder? person/about-placeholder (person/about person))]
+          about (if need-placeholder? person/about-placeholder (person/about person))
+          about-gizmo {:descriptor about-gizmo-descriptor
+                       :state      gizmo
+                       :content    {:person person}}]
       (dom/div {:class (str "extended-info-section about clearfix" (if need-placeholder? " has-placeholder"))}
         (if editing?
-          (om/build gizmo-component {:descriptor about-gizmo-descriptor
-                                     :state      gizmo
-                                     :content    {:person person}}))
+          (om/build gizmo-component about-gizmo))
         (dom/div {:class "info-title"} "about")
         (dom/div {:class "info-body"}
           (non-sanitized-div about))))))
@@ -61,18 +68,19 @@
     (let [{:keys [person editing? gizmo]} data
           need-placeholder? (not (has-contact? person))
           phone (if need-placeholder? person/phone-placeholder (person/phone person))
-          email (if need-placeholder? person/email-placeholder (person/email person))]
+          email (if need-placeholder? person/email-placeholder (person/email person))
+          contact-gizmo {:descriptor contact-gizmo-descriptor
+                         :state      gizmo
+                         :content    {:person person}}]
       (dom/div {:class (str "extended-info-section contact clearfix" (if need-placeholder? " has-placeholder"))}
         (if editing?
-          (om/build gizmo-component {:descriptor contact-gizmo-descriptor
-                                     :state      gizmo
-                                     :content    {:person person}}))
+          (om/build gizmo-component contact-gizmo))
         (dom/div {:class "info-title"} "contact")
         (dom/div {:class "info-body"}
-          (when email
+          (if email
             (dom/div {:class "email"}
               (dom/a {:href (str "mailto:" email)} email)))
-          (when phone
+          (if phone
             (dom/div {:class "phone"}
               (dom/span {} "phone: ")
               (dom/span {:class "number"} phone))))))))
@@ -81,33 +89,29 @@
   (render [_]
     (let [{:keys [person people editing? gizmo]} data
           need-placeholder? (not (has-tags? person))
-          tags (if need-placeholder? person/tags-placeholder (person/tags person))]
+          tags (if need-placeholder? person/tags-placeholder (person/tags person))
+          tags-gizmo {:descriptor tags-gizmo-descriptor
+                      :state      gizmo
+                      :content    {:person person
+                                   :people people}}]
       (dom/div {:class (str "extended-info-section tags clearfix" (if need-placeholder? " has-placeholder"))}
         (if editing?
-          (om/build gizmo-component {:descriptor tags-gizmo-descriptor
-                                     :state      gizmo
-                                     :content    {:person person
-                                                  :people people}}))
+          (om/build gizmo-component tags-gizmo))
         (dom/div {:class "info-title"} "interests")
         (dom/div {:class "info-body"}
           (om/build-all tags-section-item-component tags))))))
-
-(defn has-icon? [social]
-  (if (str/contains? social "|") 0 1))
-
-(defn sort-social-icons-first [socials]
-  (sort #(compare (has-icon? %) (has-icon? %2)) socials))

 (defcomponent social-section-component [data _ _]
   (render [_]
     (let [{:keys [person editing? gizmo]} data
           need-placeholder? (not (has-socials? person))
-          socials (if need-placeholder? person/socials-placeholder (sort-social-icons-first (person/socials person)))]
+          socials (if need-placeholder? person/socials-placeholder (sort-social-icons-first (person/socials person)))
+          social-gizmo {:descriptor social-gizmo-descriptor
+                        :state      gizmo
+                        :content    {:person person}}]
       (dom/div {:class (str "extended-info-section social clearfix" (if need-placeholder? " has-placeholder"))}
         (if editing?
-          (om/build gizmo-component {:descriptor social-gizmo-descriptor
-                                     :state      gizmo
-                                     :content    {:person person}}))
+          (om/build gizmo-component social-gizmo))
         (dom/div {:class "info-title"} "social")
         (dom/div {:class "info-body"}
           (om/build-all social-section-item-component socials))))))


Add some function.

Add some function.

--- src/promesa/core.cljs
+++ src/promesa/core.cljs
@@ -24,7 +24,7 @@
 ;; THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

 (ns promesa.core
-  (:refer-clojure :exclude [delay spread])
+  (:refer-clojure :exclude [delay spread some])
   (:require [cats.core :as m]
             [cats.protocols :as proto]
             [org.bluebird]))
@@ -130,6 +130,13 @@
   array is fulfilled."
   [& promises]
   (.any js/Promise (clj->js promises)))
+
+(defn some
+  "Given an array of promises, return a promise
+  that is fulfilled when `n` number of promises
+  is fulfilled."
+  [n & promises]
+  (.some js/Promise (clj->js promises) n))

 (defn delay
   "Given a timeout in miliseconds and optional


A couple more typehints

A couple more typehints

--- src/protobuf/core.clj
+++ src/protobuf/core.clj
@@ -17,7 +17,7 @@
   [obj]
   (instance? PersistentProtocolBufferMap$Def obj))

-(defn protodef
+(defn ^PersistentProtocolBufferMap$Def protodef
   "Create a protodef from a string or protobuf class."
   ([def]
      (if (or (protodef? def) (nil? def))
@@ -69,7 +69,7 @@
     (let [^CodedInputStream in (CodedInputStream/newInstance stream)]
       (PersistentProtocolBufferMap/parseFrom type in))))

-(defn protobuf-dump
+(defn ^"[B" protobuf-dump
   "Return the byte representation of the given protobuf."
   ([^PersistentProtocolBufferMap p]
      (.toByteArray p))


Add a more robust way of importing prop-types

Prop-types are no longer part of React (core) in newer versions.

--- src/re_frame/rum.cljs
+++ src/re_frame/rum.cljs
@@ -12,8 +12,13 @@
                            (exists? js/require) (js/require "react")
                            :else (throw "Did you forget to include react?")))

+(def ^:private PropTypes (cond (exists? js/PropTypes) js/PropTypes
+                               (exists js/React.PropTypes) js/React.PropTypes
+                               (exists? js/require) (js/require "prop-types")
+                               :else (throw "Did you forget to include prop-types?")))
+
 (let [frank-k "re-frame/frank"
-      context-types {frank-k React.PropTypes.object}]
+      context-types {frank-k PropTypes.object}]

   (defn inject-frank-into-context
     "Inject Frank instance into current react context. The Frank instance
@@ -61,8 +66,8 @@
   ;; context types.

   (let [aggregated-context-types (assoc context-types
-                             "org.martinklepsch.derivatives/get"     React.PropTypes.func
-                             "org.martinklepsch.derivatives/release" React.PropTypes.func)]
+                             "org.martinklepsch.derivatives/get"     PropTypes.func
+                             "org.martinklepsch.derivatives/release" PropTypes.func)]

     (def drv+frank-ctx {:class-properties {:contextTypes aggregated-context-types}})
     (def drv+frank-child-ctx {:class-properties {:childContextTypes aggregated-context-types}})))


Email messages show more state information in body.

--- src/riemann/email.clj
+++ src/riemann/email.clj
@@ -36,14 +36,15 @@
   (join "\n\n"
         (map
           (fn [event]
-            (:host event) " "
-            (:service event) " "
-            (:state event) " ("
-            (:metric event) ")\nat "
-            (time-at (:time event)) " "
-            "tags: " (join ", " (:tags event))
-            "\n"
-            (:description event))
+            (str
+              (:host event) " "
+              (:service event) " "
+              (:state event) " ("
+              (:metric event) ")\nat "
+              (time-at (:time event)) " "
+              "tags: " (join ", " (:tags event))
+              "\n"
+              (:description event)))
           events)))

 (defn email-event


Return the correct value on no explicit match

--- src/riemann/index.clj
+++ src/riemann/index.clj
@@ -77,7 +77,9 @@
       (search [this query-ast]
         "O(n) unless the query is for exactly a host and service"
         (if-let [[host service] (query-for-host-and-service query-ast)]
-          (vector (.lookup this host service))
+          (if-let [e (.lookup this host service)]
+            (list e)
+            (list))
           (let [matching (query/fun query-ast)]
             (filter matching (.values hm)))))


event->disable: a bit of consistency in parameter names is needed here: s/duration/ttl/

--- src/riemann/xymon.clj
+++ src/riemann/xymon.clj
@@ -63,7 +63,7 @@
   Fields mapping is the same as event->status'. Also, the event ttl is
   used as duration, same as LIFETIME in event->status.
   "
-  [{:keys [host service duration description]
+  [{:keys [host service ttl description]
     :or {host "" service "*" ttl "" description ""}}]
   (let [host (host->xymon host)
         service (service->xymon service)]


titanic now gets minimum function explicitly

Signed-off-by: Daniel Borchmann <25857343a15bf1edafebc2912e82ecf775c585c1@mailbox.tu-dresden.de>

--- src/conexp/contrib/algorithms/titanic.clj
+++ src/conexp/contrib/algorithms/titanic.clj
@@ -15,11 +15,6 @@

 ;;; Pragmatics

-(defn- minimum
-  "Returns a random minimal element wrt <= in seq-of-elements."
-  [<= seq-of-elements]
-  (first (apply partial-min <= seq-of-elements)))
-
 (defmacro- set-val!
   "Sets (via set!) the value for key in map to val."
   [map key val]
@@ -30,6 +25,9 @@

 (defvar- closure nil
   "Holds the closures of sets. To be rebound.")
+(defvar- minimum nil
+  "Computes the minimum of weights in a given sequence of weights. To
+  be rebound.")
 (defvar- set-weight nil
   "Holds the weights of sets. To be rebound.")

@@ -47,11 +45,12 @@
     (if-not (empty? elements)
       (let [m   (first elements),
             X+m (conj X m),
-            s   (if (contains? candidates X+m)
-                  (set-weight X+m)
-                  (minimum (for [K keys,
-                                 :when (subset? K X+m)]
-                             (set-weight K))))]
+            s   (or (set-weight X+m)
+                    (let [weight (minimum (doall (for [K keys, ;bottleneck!
+                                                       :when (subset? K X+m)]
+                                                   (set-weight K))))]
+                      (set-val! set-weight X+m weight)
+                      weight))]
         (recur (if (= s (set-weight X))
                  (conj Y m)
                  Y)
@@ -72,14 +71,14 @@
 (defn titanic
   "Implements the titanic algorithm. weigh must return for a
   collection of sets a hash-map mapping every set to its weight, with
-  max-weight being the maximal weight possbile. weight-order is the
-  corresponding order of weights and must form an infimum semilattice
-  for titanic to work correctly."
-  [base-set weigh max-weight weight-order]
+  max-weight being the maximal weight possbile. weight-minimum is a
+  function of one argument being a sequence of weights and returning
+  the minimal of those."
+  [base-set weigh max-weight weight-minimum]
   (binding [closure       {},
             set-weight    (weigh [#{}]),
             subset-weight (memoize (partial subset-weight max-weight)),
-            minimum       (partial minimum weight-order)]
+            minimum       weight-minimum]

     (loop [key-set    #{#{}},
            candidates (set-of #{m} [m base-set]),
@@ -119,7 +118,7 @@
   (titanic (attributes context)
            (supports context 0)
            1.0
-           <=))
+           #(apply min %)))

 (defn titanic-iceberg-intent-set
   "Computes the iceberg intent set for given context and minimal
@@ -128,7 +127,7 @@
   (let [intents (titanic (attributes context)
                          (supports context minsupp)
                          1.0
-                         <=)]
+                         #(apply min %))]
     (if (<= (* (count (objects context)) minsupp)
             (count (attribute-derivation context (attributes context))))
       intents


Remove logs

Remove logs

--- backend/src/akvo/lumen/auth.clj
+++ backend/src/akvo/lumen/auth.clj
@@ -49,7 +49,6 @@
   Otherwiese grant access. This implies that access is on tenant level."
   [handler]
   (fn [{:keys [jwt-claims] :as request}]
-    (when (map? jwt-claims) (log/warn (:path-info request) (select-keys jwt-claims ["email" "realm_access"])))
     (cond
       (public-path? request) (handler request)
       (nil? jwt-claims) not-authenticated


uncommented more debugging side-tracked stuff

--- src/demo/examples/plane_geometry/test.clj
+++ src/demo/examples/plane_geometry/test.clj
@@ -24,89 +24,6 @@

-;; constructors
-
-(fact "I can make and recognize instances of :points, :lines and :circles"
-  ((:recognizer push-point) (make-point 3 9))         => true
-  ((:recognizer push-point) 9912)                     => false
-
-  ((:recognizer push-line)
-     (make-line (make-point 2 9) (make-point 2 1)))   => true
-  ((:recognizer push-line)
-     (make-point 2 9))                                => false
-
-  ((:recognizer push-circle)
-     (make-circle (make-point 2 9) (make-point 2 1))) => true
-  ((:recognizer push-circle)
-     (make-point 2 9))                                => false
-  ((:recognizer push-circle)
-     (make-line (make-point 2 9) (make-point 2 1)))   => false)
-
-
-(fact "make-line-from-xyxy"
-  (make-line-from-xyxy 0 1 2 3) => (make-line (make-point 0 1) (make-point 2 3))
-  (make-line-from-xyxy 0 1 0 1) => (throws #"points must differ")
-  )
-
-(fact "`make-line` throws an Exception if both point arguments are the same"
-  (make-line (make-point 1 2) (make-point 1 2)) => (throws #"points must differ"))
-
-
-
-(fact "`make-circle` throws an Exception if both point arguments are the same"
-  (make-circle (make-point 1 2) (make-point 1 2)) => (throws #"points must differ")
-  (make-circle (make-point 1 2.000002) (make-point 1 2.000003)) =not=> (throws)
-  )
-
-
-
-; ;;; helpers
-
-; ;; line slopes
-
-
-(fact "slope works as expected"
-  (slope (make-line (make-point 2.0 2.0) (make-point 1.0 1.0))) => (apf 1.0)
-  (slope (make-line (make-point 1.0 0.0) (make-point 0.0 1.0))) => (apf -1.0)
-  (slope (make-line (make-point 1.0 3.0) (make-point 2.0 1.0))) => (apf -2.0)
-  (slope (make-line (make-point 2.0 1.0) (make-point 1.0 3.0))) => (apf -2.0)
-  (slope (make-line (make-point 1.0 1.0) (make-point 0.0 1.0))) => (apf 0.0))
-
-
-(fact "slope returns the keyword :infinity if the line is vertical"
-  (slope (make-line (make-point 0.0 0.0) (make-point 0.0 1.0))) => :infinity)
-
-
-(fact "slope can detect subtle differences"
-  (< 0.0 (.subtract
-    (slope (make-line (make-point 3.111 2.9128) (make-point 0 0)))
-    (slope (make-line (make-point 0 0) (make-point 3.11100000001 2.9128))))) => true)
-
-
-; ;; line intercepts
-
-(fact "intercept works as expected"
-  (intercept (make-line (make-point 2.0 2.0) (make-point 1.0 1.0))) => (apf 0.0)
-  (intercept (make-line (make-point 1.0 0.0) (make-point 0.0 1.0))) => (apf 1.0)
-  (intercept (make-line (make-point 1.0 0.0) (make-point -1.0 -1.0))) => (apf -0.5)
-  (intercept (make-line (make-point 1.0 3.0) (make-point 2.0 1.0))) => (apf 5.0)
-  (intercept (make-line (make-point 2.0 1.0) (make-point 1.0 3.0))) => (apf 5.0)
-  (intercept (make-line (make-point 1.0 1.0) (make-point 0.0 1.0))) => (apf 1.0))
-
-(fact "intercept works for horizontal lines"
-  (intercept (make-line-from-xyxy 0  2 5  2)) => 2)
-
-(fact "intercept returns nil if the line is vertical"
-  (intercept (make-line (make-point 0.0 0.0) (make-point 0.0 1.0))) => nil)
-
-
-(fact "intercept can detect subtle differences"
-  (< 0.0
-    (.subtract
-      (intercept (make-line (make-point 129 333) (make-point 88 0.00001)))
-      (intercept (make-line (make-point 88 0) (make-point 129 333))))) => true)
-
-
 ;; rounding

 (fact "I can use ApfloatMath/round successfully"
@@ -132,6 +49,91 @@
   (pretty-much-equal?
     (intercept (make-line (make-point 3.3 9.9) (make-point 0 0)))
     (intercept (make-line (make-point 0 0) (make-point 3.3 9.9)))) => true)
+
+
+
+;; constructors
+
+(fact "I can make and recognize instances of :points, :lines and :circles"
+  ((:recognizer push-point) (make-point 3 9))         => true
+  ((:recognizer push-point) 9912)                     => false
+
+  ((:recognizer push-line)
+     (make-line (make-point 2 9) (make-point 2 1)))   => true
+  ((:recognizer push-line)
+     (make-point 2 9))                                => false
+
+  ((:recognizer push-circle)
+     (make-circle (make-point 2 9) (make-point 2 1))) => true
+  ((:recognizer push-circle)
+     (make-point 2 9))                                => false
+  ((:recognizer push-circle)
+     (make-line (make-point 2 9) (make-point 2 1)))   => false)
+
+
+(fact "make-line-from-xyxy"
+  (make-line-from-xyxy 0 1 2 3) => (make-line (make-point 0 1) (make-point 2 3))
+  (make-line-from-xyxy 0 1 0 1) => (throws #"points must differ")
+  )
+
+(fact "`make-line` throws an Exception if both point arguments are the same"
+  (make-line (make-point 1 2) (make-point 1 2)) => (throws #"points must differ"))
+
+
+
+(fact "`make-circle` throws an Exception if both point arguments are the same"
+  (make-circle (make-point 1 2) (make-point 1 2)) => (throws #"points must differ")
+  (make-circle (make-point 1 2.000002) (make-point 1 2.000003)) =not=> (throws)
+  )
+
+
+
+; ;;; helpers
+
+; ;; line slopes
+
+
+(fact "slope works as expected"
+  (slope (make-line (make-point 2.0 2.0) (make-point 1.0 1.0))) => (apf 1.0)
+  (slope (make-line (make-point 1.0 0.0) (make-point 0.0 1.0))) => (apf -1.0)
+  (slope (make-line (make-point 1.0 3.0) (make-point 2.0 1.0))) => (apf -2.0)
+  (slope (make-line (make-point 2.0 1.0) (make-point 1.0 3.0))) => (apf -2.0)
+  (slope (make-line (make-point 1.0 1.0) (make-point 0.0 1.0))) => (apf 0.0))
+
+
+(fact "slope returns the keyword :infinity if the line is vertical"
+  (slope (make-line (make-point 0.0 0.0) (make-point 0.0 1.0))) => :infinity)
+
+
+(fact "slope can detect subtle differences"
+  (< 0.0 (.subtract
+    (slope (make-line (make-point 3.111 2.9128) (make-point 0 0)))
+    (slope (make-line (make-point 0 0) (make-point 3.11100000001 2.9128))))) => true)
+
+
+; ;; line intercepts
+
+(fact "intercept works as expected"
+  (intercept (make-line (make-point 2.0 2.0) (make-point 1.0 1.0))) => (apf 0.0)
+  (intercept (make-line (make-point 1.0 0.0) (make-point 0.0 1.0))) => (apf 1.0)
+  (intercept (make-line (make-point 1.0 0.0) (make-point -1.0 -1.0))) => (apf -0.5)
+  (intercept (make-line (make-point 1.0 3.0) (make-point 2.0 1.0))) => (apf 5.0)
+  (intercept (make-line (make-point 2.0 1.0) (make-point 1.0 3.0))) => (apf 5.0)
+  (intercept (make-line (make-point 1.0 1.0) (make-point 0.0 1.0))) => (apf 1.0))
+
+(fact "intercept works for horizontal lines"
+  (intercept (make-line-from-xyxy 0  2 5  2)) => 2)
+
+(fact "intercept returns nil if the line is vertical"
+  (intercept (make-line (make-point 0.0 0.0) (make-point 0.0 1.0))) => nil)
+
+
+(fact "intercept can detect subtle differences"
+  (< 0.0
+    (.subtract
+      (intercept (make-line (make-point 129 333) (make-point 88 0.00001)))
+      (intercept (make-line (make-point 88 0) (make-point 129 333))))) => true)
+

 ; ;; lines-coincide?
@@ -459,62 +461,62 @@

-; ;;;; Push types and instructions
-
-
-; ;; recognizers work for routing
-
-; (def test-interpreter
-;   (core/register-types
-;     (owe/make-everything-interpreter)
-;     [push-point push-line push-circle]))
-
-
-; (def point-class (class (make-point 0.0 0.0)))
-
-
-; (def line-class (class (make-line (make-point 0.0 0.0) (make-point 1 2))))
-
-
-; (def circle-class (class (make-circle (make-point 0.0 0.0) (make-point 1 2))))
-
-; (fact "the stacks are already there (though it doesn't really matter)"
-;   (keys (:stacks test-interpreter)) => (contains [:circle :line :point] :gaps-ok :any-order))
-
-
-; (fact "items can be routed to those stacks correctly"
-;   (u/get-stack
-;     (core/handle-item test-interpreter (make-point 3 9))
-;     :point) => (list (map->Point {:x 3, :y 9}))
-
-;   (u/get-stack
-;     (core/handle-item test-interpreter (make-line (make-point 2 9) (make-point 2 1)))
-;     :line) => (list (map->Line { :p1 (map->Point {:x 2, :y 9})
-;                                  :p2 (map->Point {:x 2, :y 1}) }))
-
-;   (u/get-stack
-;     (core/handle-item test-interpreter (make-circle (make-point 2 9) (make-point 2 1)))
-;     :circle) => (list (map->Circle {
-;                     :origin
-;                       (map->Point {:x 2, :y 9})
-;                     :edgepoint
-;                       (map->Point {:x 2, :y 1})})))
-
-
-; ;; interpreter executes instructions
-
-
-; (fact "test-interpreter knows :line-intersection"
-;   (keys (:instructions test-interpreter)) => (contains :line-intersection))
-
-
-; (fact "the intersection ends up on the :point stack"
-;   (let [prepped (core/recycle-interpreter
-;                 test-interpreter
-;                 [line1 line2 :line-intersection])]
-;     (:stacks prepped) =>
-;     `{:boolean (), :booleans (), :char (), :chars (), :circle (), :code (), :environment (), :error (), :exec (~line1 ~line2 :line-intersection), :float (), :floats (), :integer (), :integers (), :line (), :log (), :point (), :print (), :return (), :set (), :string (), :strings (), :unknown (), :vector ()}
+;;;; Push types and instructions
+
+
+;; recognizers work for routing
+
+(def test-interpreter
+  (core/register-types
+    (owe/make-everything-interpreter)
+    [push-point push-line push-circle]))
+
+
+(def point-class (class (make-point 0.0 0.0)))
+
+
+(def line-class (class (make-line (make-point 0.0 0.0) (make-point 1 2))))
+
+
+(def circle-class (class (make-circle (make-point 0.0 0.0) (make-point 1 2))))
+
+(fact "the stacks are already there (though it doesn't really matter)"
+  (keys (:stacks test-interpreter)) => (contains [:circle :line :point] :gaps-ok :any-order))
+
+
+(fact "items can be routed to those stacks correctly"
+  (u/get-stack
+    (core/handle-item test-interpreter (make-point 3 9))
+    :point) => (list (map->Point {:x 3, :y 9}))
+
+  (u/get-stack
+    (core/handle-item test-interpreter (make-line (make-point 2 9) (make-point 2 1)))
+    :line) => (list (map->Line { :p1 (map->Point {:x 2, :y 9})
+                                 :p2 (map->Point {:x 2, :y 1}) }))
+
+  (u/get-stack
+    (core/handle-item test-interpreter (make-circle (make-point 2 9) (make-point 2 1)))
+    :circle) => (list (map->Circle {
+                    :origin
+                      (map->Point {:x 2, :y 9})
+                    :edgepoint
+                      (map->Point {:x 2, :y 1})})))
+
+
+;; interpreter executes instructions
+
+
+(fact "test-interpreter knows :line-intersection"
+  (keys (:instructions test-interpreter)) => (contains :line-intersection))
+
+
+(fact "the intersection ends up on the :point stack"
+  (let [prepped (core/recycle-interpreter
+                test-interpreter
+                [line1 line2 :line-intersection])]
+    (:stacks prepped) =>
+    `{:boolean (), :booleans (), :char (), :chars (), :circle (), :code (), :environment (), :error (), :exec (~line1 ~line2 :line-intersection), :float (), :floats (), :integer (), :integers (), :line (), :log (), :point (), :print (), :return (), :set (), :string (), :strings (), :unknown (), :vector ()}

-;     (u/get-stack (core/run prepped 1000) :point) => (list (make-point 3.0 4.0))))
-
-
+    (u/get-stack (core/run prepped 1000) :point) => (list (make-point 3.0 4.0))))
+
+


delaney.clj: small stylistic tweaks

delaney.clj: small stylistic tweaks

--- clojure/org/gavrog/clojure/delaney.clj
+++ clojure/org/gavrog/clojure/delaney.clj
@@ -28,8 +28,8 @@
   (elements [ds] (iterator-seq (.elements ds)))
   (index? [ds i] (.hasIndex ds i))
   (indices [ds] (iterator-seq (.indices ds)))
-  (s [ds i D] (when (.definesOp ds i D) (.op ds i D)))
-  (v [ds i j D] (when (.definesV ds i j D) (.v ds i j D))))
+  (s [ds i D] (if (.definesOp ds i D) (.op ds i D)))
+  (v [ds i j D] (if (.definesV ds i j D) (.v ds i j D))))

 ;; === Helper functions
@@ -131,7 +131,7 @@
         ipairs (map vector indices (rest indices))
         spins (fn [D] (for [[i j] ipairs] (or (v ds i j D) 0)))
         step (fn step [xs emap n]
-               (when-let [[Di i D] (first xs)]
+               (if-let [[Di i D] (first xs)]
                  (if (nil? D)
                    (recur (rest xs) emap n)
                    (let [[Ei E] (sort [(emap Di) (or (emap D) n)])
@@ -151,9 +151,9 @@
       (protocol ds idcs (traversal ds idcs [D]))))
   ([ds]
     (when (pos? (size ds))
-      (do (assert (connected? ds) "Symbol must be connected")
-        (reduce lexicographically-smallest
-                (for [D (elements ds)] (invariant ds D)))))))
+      (assert (connected? ds) "Symbol must be connected")
+      (reduce lexicographically-smallest
+              (for [D (elements ds)] (invariant ds D))))))

 (defn walk [ds D & idxs]
   "Returns the result of applying the D-symbol operators on ds with the
@@ -163,7 +163,7 @@

 (defn r [ds i j D]
   (loop [n 1, E D]
-    (when-let [F (walk ds E i j)]
+    (if-let [F (walk ds E i j)]
       (if (= F D)
         n
         (recur (inc n) F)))))
@@ -171,7 +171,7 @@
 (defn m [ds i j D]
   (let [v (v ds i j D)
         r (r ds i j D)]
-    (when (and v r) (* v r))))
+    (if (and v r) (* v r))))

 (defn chain-end [ds D i j]
   "Returns the result of alternately applying operators indexed i and j,
@@ -251,7 +251,7 @@
               nil)))))))

 (defn automorphisms [ds]
-  (when-let [D (first (elements ds))]
+  (if-let [D (first (elements ds))]
     (keep (partial morphism ds ds D) (elements ds))))

 ;; === Persistent Clojure implementation of IDSymbol with some common
@@ -269,7 +269,7 @@
   (indices [_] (range 0 (inc dim)))
   (s [_ i D] ((or (s# i) {}) D))
   (v [ds i j D]
-     (when (and (element? ds D) (index? ds i) (index? ds j))
+     (if (and (element? ds D) (index? ds i) (index? ds j))
        (cond (= j (inc i)) ((or (v# i) {}) D)
              (= j (dec i)) ((or (v# j) {}) D)
              (= j i) 1
@@ -372,10 +372,10 @@
   (index? [_ i] (idx-set i))
   (indices [_] (seq idx-set))
   (s [self i D]
-     (when (and (index? self i) (element? self D))
+     (if (and (index? self i) (element? self D))
        (s base i D)))
   (v [self i j D]
-     (when (and (index? self i) (index? self j) (element? self D))
+     (if (and (index? self i) (index? self j) (element? self D))
        (v base i j D)))
   Object
   (equals [self other]
@@ -404,15 +404,15 @@
 ;; === Factories for DSymbol instances

 (defn- parse-numbers [str]
-  (when (and str (< 0 (count (s/trim str))))
-    (map #(Integer/parseInt %) (-> str s/trim (s/split #"\s+")))))
+  (if (and str (< 0 (count (s/trim str))))
+    (map #(Integer/parseInt %) (s/split (s/trim str) #"\s+"))))

 (defn- parse-number-lists [str]
-  (when str
-    (map parse-numbers (-> str s/trim (s/split #",")))))
+  (if str
+    (map parse-numbers (s/split (s/trim str) #","))))

 (defn- pairs [data free]
-  (when (seq free)
+  (if (seq free)
     (let [pair [(first free) (first data)]
           rest-free (remove (set pair) free)]
       (lazy-seq (cons pair (pairs (rest data) rest-free))))))
@@ -577,7 +577,7 @@
                                                [D (s ds1 i D)])
                                              (for [D (elements ds2)]
                                                [(+ s1 D)
-                                                (when-let [E (s ds2 i D)]
+                                                (if-let [E (s ds2 i D)]
                                                   (+ s1 E))])))]))
           vs (into {} (for [i (range d)]
                         [i (into {} (concat (for [D (elements ds1)]


remove debug js/alert

remove debug js/alert

--- src/leiningen/new/lein_quick_om/core.cljs
+++ src/leiningen/new/lein_quick_om/core.cljs
@@ -69,7 +69,6 @@

 (defn reset-state
   []
-  (js/alert "okay")
   (reset! state init-state))

 (defn add-inc


use vec rather than apply vector

use vec rather than apply vector

--- src/main/clojure/clojure/tools/reader.clj
+++ src/main/clojure/clojure/tools/reader.clj
@@ -594,7 +594,7 @@
      (instance? SyntaxQuotedSet form) (syntax-quote-coll 'clojure.core/hash-set (:val form))

      (instance? IRecord form) form
-     (vector? form) (syntax-quote-coll 'clojure.core/vector form)
+     (vector? form) (list 'clojure.core/vec (syntax-quote-coll nil form))

      (or (seq? form) (list? form))
      (let [seq (seq form)]


upgrading deps

upgrading deps

--- resources/leiningen/new/closp/project.clj
+++ resources/leiningen/new/closp/project.clj
@@ -7,23 +7,23 @@
   :source-paths ["src/clj" "src/cljs" "target/generated/clj" "target/generated/cljx"]

   :dependencies [[org.clojure/clojure "1.6.0"]
-                 [org.clojure/clojurescript "0.0-2371" :scope "provided"]
+                 [org.clojure/clojurescript "0.0-2740" :scope "provided"]

                  [org.clojure/core.cache "0.6.4"]
                  [org.clojure/core.async "0.1.346.0-17112a-alpha"]
-
-                 [ring "1.3.1"]
+
+                 [ring "1.3.2"]
                  [lib-noir "0.9.5"]
-                 [ring-server "0.3.1"]
-                 [compojure "1.2.0"]
+                 [ring-server "0.4.0"]
+                 [compojure "1.3.1"]
                  [reagent "0.4.3"]
                  [figwheel "0.1.4-SNAPSHOT"]
                  [environ "1.0.0"]
-                 [com.cemerick/piggieback "0.1.3"]
-                 [weasel "0.4.0-SNAPSHOT"]
-                 [leiningen "2.5.0"]
+                 [com.cemerick/piggieback "0.1.5"]
+                 [weasel "0.5.0"]
+                 [leiningen "2.5.1"]
                  [http-kit "2.1.19"]
-                 [selmer "0.7.9"]
+                 [selmer "0.8.0"]
                  [prone "0.8.0"]
                  [im.chit/cronj "1.4.3"]
                  [com.taoensso/timbre "3.3.1"]
@@ -32,19 +32,19 @@
                  [buddy/buddy-auth "0.3.0"]
                  [buddy/buddy-hashers "0.3.0"]

-                 [log4j "1.2.15" :exclusions [javax.mail/mail
+                 [log4j "1.2.17" :exclusions [javax.mail/mail
                                               javax.jms/jms
                                               com.sun.jdmk/jmxtools
                                               com.sun.jmx/jmxri]]

                  [org.clojure/java.jdbc "0.3.6"]
                  [korma "0.4.0"]
-                 [com.h2database/h2 "1.4.182"]
+                 [com.h2database/h2 "1.4.185"]
                  [ragtime/ragtime.sql.files "0.3.8"]

-                 [com.draines/postal "1.11.1"]
+                 [com.draines/postal "1.11.3"]

-                 [de.sveri/clojure-commons "0.1.5"]]
+                 [de.sveri/clojure-commons "0.1.9"]]

   :plugins [[lein-cljsbuild "1.0.3"]
             [lein-environ "1.0.0"]


send ERROR to clients when the server is shutting down

--- src/subrosa/netty.clj
+++ src/subrosa/netty.clj
@@ -1,6 +1,7 @@
 (ns subrosa.netty
   (:use [subrosa.server :only [+server+ reset-all-state!]]
-        [subrosa.client :only [add-channel! remove-channel! send-to-client]]
+        [subrosa.client :only [add-channel! remove-channel! send-to-client
+                               send-to-client*]]
         [subrosa.commands :only [dispatch-message]])
   (:import [java.net InetSocketAddress]
            [java.util.concurrent Executors]
@@ -110,5 +111,7 @@
                       (.bind bootstrap)
                       (.add channel-group)))
      :stop-fn (fn []
+                (doseq [channel channel-group]
+                  (send-to-client* channel "ERROR :Server going down"))
                 (-> channel-group .close .awaitUninterruptibly)
                 (.releaseExternalResources channel-factory))}))


Limit web log chat history to 1000 lines.

--- Spraff/src/spraff/core.clj
+++ Spraff/src/spraff/core.clj
@@ -268,8 +268,8 @@
     (log-sentence! message)
     (update-state! message state-ref)
     (dosync (ref-set state-ref (assoc @state-ref
-        :recent-lines
-                (concat (:recent-lines @state-ref) [(str nick ": " message)]))))
+        :recent-lines (take-last 1000
+                (concat (:recent-lines @state-ref) [(str nick ": " message)])))))
     (if (and (not (= nick (:name @irc))) (.contains message (:name @irc)))
         (send-message irc channel
             (join (take 450 (join " " (generate-sentence


tests

tests

--- sass-dsl/test/sass_dsl/transform_test.clj
+++ sass-dsl/test/sass_dsl/transform_test.clj
@@ -25,4 +25,28 @@
   (transform/sass-de-nest-flattened-colons-vec-zip
    sass-simpler-nesting-flattened-colons))

+(deftest flatten-colon-suffixes-test
+  (testing "Ensure colon suffixes are flat."
+    (is (=
+         sass-denested-simpler-nesting-flattened-colons
+         [["table.h1" ["margin: 2em 0"] "table.h1 td.ln" ["text-align: right"]
+           "li" ["font-size: 1.2em" "front-weight: bold" "font-family: serif"]]
+          nil]))))
+
+(def sass-constants-nested-tree
+  "Given a sass string return a nested vector."
+  (parse/transform-to-sass-nested-tree common-test/basic-css-constants))
+
+(def constants-map (transform/extract-constants sass-constants-nested-tree {}))
+
+(deftest sass-constants-test
+  (testing "Ensure we get sass constants."
+    (is (=
+         constnts-map
+         {"$blue" "#3bbfce", "$margin" "16px"}))))
+
+(def sass-constants-stripped-nested-tree
+  (transform/strip-constant-declarations
+   sass-constants-nested-tree))
+


made a function for creating a rocket but realized I need more info on the game world object

--- src-cljs/hello.cljs
+++ src-cljs/hello.cljs
@@ -12,6 +12,9 @@

 (defn create-world []
   (js-obj "rockets" []))
+
+(defn spawn-random-rocket [game-world]
+  )

 (defn update [game-world]
   (.log js/console "update"))
@@ -30,7 +33,7 @@
         canvas-element (create-canvas)
         graphics-context (.getContext canvas-element "2d")]
     (aset canvas-element "onclick" (fn []
-                                       (.log js/console "click event")))
+                                     (spawn-random-rocket game-world)))
     (letfn [(anim-frame []
               (update game-world)
               (clear-for-frame graphics-context)


needed need that line wrap

needed need that line wrap

--- src-cljs/hello.cljs
+++ src-cljs/hello.cljs
@@ -31,8 +31,7 @@

 (defn update [game-world]
   (aset game-world
-    :rockets (map
-               update-rocket-step
+    :rockets (map update-rocket-step
                (aget game-world :rockets))))

 (defn clear-for-frame [graphics-context]


Remove influx and grafana entries

Remove influx and grafana entries

--- src/terraboot/vpc.clj
+++ src/terraboot/vpc.clj
@@ -118,44 +118,44 @@
                                                 :subnet_id (vpc-id-of "aws_subnet" (stringify "public-" (first azs)))
                                                 :ami default-ami
                                                 :vpc_security_group_ids [(vpc-id-of "aws_security_group" "vpn")
-                                                                         (vpc-id-of "aws_security_group" "sends_influx")
+                                                                         ;;(vpc-id-of "aws_security_group" "sends_influx")
                                                                          (vpc-id-of "aws_security_group" "all-servers")
                                                                          ]
                                                 :associate_public_ip_address true
                                                 })

-              (aws-instance "influxdb" {:ami default-ami
-                                        :instance_type "m4.large"
-                                        :vpc_security_group_ids [(vpc-id-of "aws_security_group" "influxdb")
-                                                                 (id-of "aws_security_group" "allow_ssh")
-                                                                 (vpc-id-of "aws_security_group" "allow_elb_grafana")
-                                                                 (vpc-id-of "aws_security_group" "all-servers")
-                                                                 ]
-                                        :subnet_id (vpc-id-of "aws_subnet" (stringify "public-" (first azs)))
-                                        :root_block_device {:volume_size 100}})
-
-              (elb "grafana" resource {:name "grafana"
-                                       :health_check {:healthy_threshold 2
-                                                      :unhealthy_threshold 3
-                                                      :target "HTTP:80/status"
-                                                      :timeout 5
-                                                      :interval 30}
-                                       :internal true
-                                       :listener [(elb-listener (if cert-name
-                                                                  {:lb-port 443 :lb-protocol "https" :port 80 :protocol "http" :cert-name cert-name}
-                                                                  {:port 80 :protocol "http"}))]
-                                       :instances [(id-of "aws_instance" "influxdb")]
-                                       :subnets (mapv #(id-of "aws_subnet" (stringify  vpc-name "-public-" %)) azs)
-                                       :security_groups (mapv #(id-of "aws_security_group" %) ["allow_outbound"
-                                                                                "allow_external_http_https"
-                                                                                (vpc-unique "elb_grafana")])
-                                       })
-              (private_route53_record "grafana" vpc-name {:zone_id  (vpc-id-of "aws_route53_zone" "mesos")
-                                                          :name "grafana"
-                                                          :alias {:name (output-of "aws_elb" "grafana" "dns_name")
-                                                                  :zone_id (output-of "aws_elb" "grafana" "zone_id")
-                                                                  :evaluate_target_health true}})
-              (private_route53_record "influxdb" vpc-name {:records [(output-of "aws_instance" "influxdb" "private_ip")]})
+              ;; (aws-instance "influxdb" {:ami default-ami
+              ;;                           :instance_type "m4.large"
+              ;;                           :vpc_security_group_ids [(vpc-id-of "aws_security_group" "influxdb")
+              ;;                                                    (id-of "aws_security_group" "allow_ssh")
+              ;;                                                    (vpc-id-of "aws_security_group" "allow_elb_grafana")
+              ;;                                                    (vpc-id-of "aws_security_group" "all-servers")
+              ;;                                                    ]
+              ;;                           :subnet_id (vpc-id-of "aws_subnet" (stringify "public-" (first azs)))
+              ;;                           :root_block_device {:volume_size 100}})
+
+              ;; (elb "grafana" resource {:name "grafana"
+              ;;                          :health_check {:healthy_threshold 2
+              ;;                                         :unhealthy_threshold 3
+              ;;                                         :target "HTTP:80/status"
+              ;;                                         :timeout 5
+              ;;                                         :interval 30}
+              ;;                          :internal true
+              ;;                          :listener [(elb-listener (if cert-name
+              ;;                                                     {:lb-port 443 :lb-protocol "https" :port 80 :protocol "http" :cert-name cert-name}
+              ;;                                                     {:port 80 :protocol "http"}))]
+              ;;                          :instances [(id-of "aws_instance" "influxdb")]
+              ;;                          :subnets (mapv #(id-of "aws_subnet" (stringify  vpc-name "-public-" %)) azs)
+              ;;                          :security_groups (mapv #(id-of "aws_security_group" %) ["allow_outbound"
+              ;;                                                                                "allow_external_http_https"
+              ;;                                                                                (vpc-unique "elb_grafana")])
+              ;;                          })
+              ;; (private_route53_record "grafana" vpc-name {:zone_id  (vpc-id-of "aws_route53_zone" "mesos")
+              ;;                                             :name "grafana"
+              ;;                                             :alias {:name (output-of "aws_elb" "grafana" "dns_name")
+              ;;                                                     :zone_id (output-of "aws_elb" "grafana" "zone_id")
+              ;;                                                     :evaluate_target_health true}})
+              ;; (private_route53_record "influxdb" vpc-name {:records [(output-of "aws_instance" "influxdb" "private_ip")]})

               (private_route53_record "kibana" vpc-name {:records [(vpc-output-of "aws_instance" "logstash" "private_ip")]})
               (private_route53_record "logstash" vpc-name {:records [(vpc-output-of "aws_instance" "logstash" "private_ip")]})
@@ -177,9 +177,9 @@

               (vpc-security-group "sends_influx" {})

-              (resource "aws_eip" "influxdb"
-                        {:vpc true
-                         :instance (id-of "aws_instance" "influxdb")})
+              ;; (resource "aws_eip" "influxdb"
+              ;;           {:vpc true
+              ;;            :instance (id-of "aws_instance" "influxdb")})

               (vpc-resource "aws_eip" "vpn" {:instance (vpc-id-of "aws_instance" "vpn")
                                              :vpc true})