Re: [ANN] Let's make clojure.org better!

2015-11-11 Thread Nelson Morris
Is there a list of reviewers and editors?

On Tue, Nov 10, 2015 at 9:14 AM, Alex Miller  wrote:

> The Clojure community is full of talented writers and valuable experience,
> and together we can create great documentation for the language and the
> ecosystem. With that in mind, we are happy to announce a new initiative to
> replace the existing http://clojure.org site. The new site will contain
> most of the existing reference and information content but will also
> provide an opportunity for additional guides or tutorials about Clojure and
> its ecosystem.
>
> The new site content is hosted in a GitHub repository
>  and is open for contributions.
> All contributions require a signed Clojure Contributor Agreement. This
> repository will accept contributions via pull request and issues with
> GitHub issues. The contribution and review process is described in more
> detail on the site contribution
> 
> page.
>
> We are currently working on the design elements for the site but if you
> would like to suggest a new guide, tutorial, or other content to be
> included on the site, please file an issue
>  for discussion or create
> a thread on the Clojure mailing list
>  with [DOCS] in the subject.
> There will be an unsession at the Clojure/conj 
> conference next week for additional discussion. This is the beginning of a
> process, and things will likely evolve in the future. In the meantime, we
> look forward to seeing your contributions!
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Style, Efficiency, and updating nested structure

2015-11-11 Thread Nelson Morris
I can't speak much to the efficiency analysis, but if I was solving the
problem I would attempt to change the data structure. If the `proj-roles`
could be a map then everything could be quick map updates.  Given you run
this in a loop to aggregate everything perhaps converting to that form
before hand is an option. Then at the end the map could be expanded out
into the vector form the rest of the application wants. Something like:


(defn order-roles [roles]
  (filterv roles [:own :edit]))
;; add other roles here
;; if ordering doesn't matter then use (vec roles) or roles

(defn expand [permissions]
(mapv (fn [[[id name] roles]]
{:project_id id
 :project_name name
 :project_roles (filterv roles ordered-permissions)})
  permissions))

(defn add-role [permissions id name role]
(update-in permissions [id name] (fnil #(conj % role) #{})))

;; Examples
(-> {}
(add-role 1 "One" :own)
(add-role 2 "Two" :edit)
expand)
[{:project_id 1, :project_name "One", :project_roles [:own]}
 {:project_id 2, :project_name "Two", :project_roles [:edit]}]

(-> {}
(add-role 1 "One" :own)
(add-role 1 "One" :edit)
expand)
[{:project_id 1, :project_name "One", :project_roles [:own :edit]}]

On Wed, Nov 11, 2015 at 3:25 PM, Dave Tenny  wrote:

> A colleague and I are debating various things clojure as we were exploring
> alternative ways to solve a problem.
>
> Here's the description of the problem that a particular function is trying
> to solve, and the first implementation of it.
>
> (defn update-roles
>   "Given a vector of maps of the form {:project_id N :project_name S
> :project_roles [...roles...]}
>   if there is already a map for the indicated project id/name, add
> new-role to it and returned
>   a copy the updated input vector, otherwise return a vector with a new
> map entry for the newly found
>   project and initial role.  This function is basically aggregating tuples
> from the database."
>   [projects project-id project-name new-role]
>   (let [updated? (atom nil)
>
> projects* (mapv (fn [m]
>   (if (= (:project_id m) project-id)
> (do (reset! updated? true)
> (assoc m :project_roles (conj (:project_roles
> m) new-role)))
> m))
> projects)]
> (if @updated?
>   projects*
>   (conj projects {:project_id project-id :project_name project-name 
> :project_roles
> [new-role]}
>
>
> ;; (update-roles [{:project_id 1 :project_name "One" :project_roles [:own
> ]}] 2 "Two" :edit)
> ;; => [{:project_id 1, :project_name "One", :project_roles [:own]} 
> {:project_id
> 2, :project_name "Two", :project_roles [:edit]}]
> ;; (update-roles [{:project_id 1 :project_name "One" :project_roles [:own
> ]}] 1 "Two" :edit)
> ;; => [{:project_id 1, :project_name "One", :project_roles [:own :edit]}]
>
>
>
> Now here's another implementation:
>
> (defn update-or-insert-project-role
>   [prj-roles prj-role]
>   (let [to-insert-prj-id (:project_id prj-role)
> by-pid   (group-by :project_id prj-roles)]
> (case (get by-pid to-insert-prj-id)
>   nil (conj prj-roles prj-role)
>   (->> (update-in by-pid [to-insert-prj-id 0 :project_roles] #(apply conj 
> % (:project_roles prj-role)))
>(mapcat second)
>(into [])
>
> ;; (def prj-roles [{:project_id 1, :project_name "One", :project_roles 
> [:own]} {:project_id 3 :project_name "Three" :project_roles [:edit]}])
> ;; (update-or-insert-project-role prj-roles {:project_id 2 :project_name 
> "Two" :project_roles [:edit]})
> ;; => [{:project_id 1, :project_name "One", :project_roles [:own]} 
> {:project_id 3, :project_name "Three", :project_roles [:edit]} {:project_id 
> 2, :project_name "Two", :project_roles [:edit]}]
> ;; (update-or-insert-project-role prj-roles {:project_id 1 :project_name 
> "One" :project_roles [:edit]})
> ;; => [{:project_id 1, :project_name "One", :project_roles [:own :edit]} 
> {:project_id 3, :project_name "Three", :project_roles [:edit]}]
>
>
>
>
> The function is called in a loop to aggregate rows from a database, though
> it isn't an overriding concern, we're not going millions of records in this
> case.
>
> The first thing my colleague and I disagreed on was the calling sequence,
> arguing over which is more readable.
> The second thing was whether efficiency in this context is really
> important, or whether it's all moot in clojure.
>
> Finally, I'm sure there's a better way, probably with Zippers or
> something, but neither of us have used them. Suggestions for the stylistic
> and operational epitome of clojure expression on this routine are welcome!
>
> Superficially, and probably incorrect in multiple ways, here is a poor
> attempt at breaking down efficiency in terms of search/traversal and memory
> allocations.  This was done by someone with no 

Re: Clojure Dev Environment

2015-10-05 Thread Nelson Morris
http://www.parens-of-the-dead.com/ is a screencast series that shows a nice
emacs/cider workflow with some additional usage of figwheel for the cljs
frontend development. No showing off of the debugger yet though. Cursive
should be able to do something similar with keybindings for running tests
and refactorings.

There is little direct repl interaction in this series.  However, many of
the commands use the connection to the development environment to run
things for the user.  For example, clj-autotest runs
https://github.com/magnars/.emacs.d/blob/master/site-lisp/clj-autotest.el#L4
over the connection. Hot swapping works by the tooling sending the new code
over the connection.

Personally, I use the repl a bit more, but for exploratory testing. Does
`(repeat 1 2)` return '(1 1) or '(2) type things.  The majority of writing
code happens in the file, and I let the tooling load it for me.
Additionally, for web development I use a ring server component much like
the screencasts, instead of `lein ring server`. Then I can use the
reloaded/refresh style system to restart everything when needed rather then
needing to kill the whole jvm.

On Mon, Oct 5, 2015 at 5:00 AM, Miguel Ping  wrote:

> Hi Guys,
>
> I've been doing some personal clj for a while, but I never quite grokked
> the whole REPL thing. I normally use Lighttable and/or Cursive as editors,
> I can set up breakpoints and debug the code, but for web I'd like to know
> how seasoned developers work.
> AFAIK people fire up the repl and "do everything from there" but I still
> don't understand some parts:
>
> - do you code functions in the repl and copy them to respective files?
> - do you edit files directly and hook them into the repl?
> - how do you set breakpoints?
> - can you do hot-replacement easily? I always see a bunch of stack traces
> while using lein and ring with reload flags
> - is there an article or screencast explaining the "feel" of this?
>
> My current worfklow is just starting > lein ring server and developing,
> but my general impression is that I need to restart it sometimes.
>
> As I understand it, the repl workflow is very much a lisp thing.
> Thanks!
>
> --
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clojure@googlegroups.com
> Note that posts from new members are moderated - please be patient with
> your first post.
> To unsubscribe from this group, send email to
> clojure+unsubscr...@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> ---
> You received this message because you are subscribed to the Google Groups
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to clojure+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: How do I create streaming XML response?

2015-04-20 Thread Nelson Morris
The `clojure.data.xml/emit` function will stream xml to a Writer. To hook
it up to `piped-input-stream` requires a little bit of book keeping work.
`piped-input-stream` provides an OutputStream and we need to convert that
to a Writer.  Luckily `clojure.java.io/writer` can handle that for us.
Additionally, we'll need to `flush` at the end in order to make sure this
intermediate writer is not buffering any data before `piped-input-stream`
closes the OutputStream.  All together, a ring response could be generated
like:

```
(response/response


 (ring-io/piped-input-stream


  #(- (io/make-writer % {})


(xml/emit (data))


.flush)))
```

A complete example is available at https://www.refheap.com/99829.  When I
run the jetty server and use curl, going to http://localhost:8080/stream
begins streaming quickly, where as http://localhost:8080 waits until the
entire response is generated.

-
Nelson

On Mon, Apr 20, 2015 at 11:40 AM, Herwig Hochleitner hhochleit...@gmail.com
 wrote:

 The way enlive does it, is to create a lazy sequence of strings. A
 response body such as that can be immediately be used by ring. However, I
 don't know from the top of my head how to generate it from data.xml.​
 I'll be glad to get some input on that, otherwise I'll think about this
 more, the next time I come around to hacking on it.

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: range function wrong in 1.7.0-beta?

2015-04-18 Thread Nelson Morris
Created http://dev.clojure.org/jira/browse/CLJ-1709 and
http://dev.clojure.org/jira/browse/CLJ-1710 around the two issues.

On Sat, Apr 18, 2015 at 4:08 PM, Beau Fabry imf...@gmail.com wrote:

 Ouch. Suspect this is the problem
 https://github.com/clojure/clojure/blob/master/src/jvm/clojure/lang/LongRange.java#L161

 Pretty sure that boolean should be round the other way.


 On Saturday, April 18, 2015 at 12:32:40 PM UTC-7, Mathias De Wachter wrote:

 Hi,

 this looks like quite a serious bug to me (at least it messed up my
 project):

 First taking the code taken from grimoire:

 clojurechess.position (defn range
   Returns a lazy seq of nums from start (inclusive) to end
   (exclusive), by step, where start defaults to 0, step to 1, and end to
   infinity. When step is equal to 0, returns an infinite sequence of
   start. When start is equal to end, returns empty list.
   {:added 1.0
:static true}
   ([] (range 0 Double/POSITIVE_INFINITY 1))
   ([end] (range 0 end 1))
   ([start end] (range start end 1))
   ([start end step]
(lazy-seq
 (let [b (chunk-buffer 32)
   comp (cond (or (zero? step) (= start end)) not=
  (pos? step) 
  (neg? step) )]
   (loop [i start]
 (if (and ( (count b) 32)
  (comp i end))
   (do
 (chunk-append b i)
 (recur (+ i step)))
   (chunk-cons (chunk b)
   (when (comp i end)
 (range i end step)
 WARNING: range already refers to: #'clojure.core/range in namespace:
 clojurechess.position, being replaced by: #'clojurechess.position/range
 #'clojurechess.position/range
 clojurechess.position (range 0 11 2)
 (0 2 4 6 8 10)

 which is what I'd expect and relied on.

 Now, looking at the new code:

 clojurechess.position (clojure.repl/source clojure.core/range)
 (defn range
   Returns a lazy seq of nums from start (inclusive) to end
   (exclusive), by step, where start defaults to 0, step to 1, and end to
   infinity. When step is equal to 0, returns an infinite sequence of
   start. When start is equal to end, returns empty list.
   {:added 1.0
:static true}
   ([]
(iterate inc' 0))
   ([end]
(if (instance? Long end)
  (clojure.lang.LongRange/create end)
  (clojure.lang.Range/create end)))
   ([start end]
(if (and (instance? Long start) (instance? Long end))
  (clojure.lang.LongRange/create start end)
  (clojure.lang.Range/create start end)))
   ([start end step]
(if (and (instance? Long start) (instance? Long end) (instance? Long
 step))
  (clojure.lang.LongRange/create start end step)
  (clojure.lang.Range/create start end step
 nil
 clojurechess.position (clojure.lang.Range/create 0 11 2)
 (0 2 4 6 8 10)
 clojurechess.position (clojure.lang.LongRange/create 0 11 2)
 (0 2 4 6 8)
 clojurechess.position (clojure.core/range 0 11 2)
 (0 2 4 6 8)

 So the culprit is clojure.lang.LongRange/create.

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: range function wrong in 1.7.0-beta?

2015-04-18 Thread Nelson Morris
I was trying to write a test.check property for this, and it seems to have
a found a different bug around `count` and `range`.

```
*clojure-version*
;;= {:major 1, :minor 7, :incremental 0, :qualifier beta1}

(require '[clojure.test.check :as tc])
(require '[clojure.test.check.generators :as gen])
(require '[clojure.test.check.properties :as prop])

(def range-count-is-ceil-of-space-divided-by-step
  (prop/for-all [start gen/int
 end gen/int
 step (gen/such-that #( % 0)
 gen/nat)]
(= (count (range start end step))
   (long (Math/ceil (double (/ (max 0 (- end start))
step)))

(tc/quick-check 100 range-count-is-ceil-of-space-divided-by-step)
;;= {:result false, :seed 1429389499284, :failing-size 5, :num-tests 6,
:fail [-2 -1 3], :shrunk {:total-nodes-visited 9, :depth 3, :result false,
:smallest [-1 0 2]}}

(range -1 0 2)
;;= (-1)
(count (range -1 0 2))
;;= 0

(tc/quick-check 100 range-count-is-ceil-of-space-divided-by-step)
;;= {:result false, :seed 1429389621085, :failing-size 4, :num-tests 5,
:fail [-3 4 5], :shrunk {:total-nodes-visited 11, :depth 5, :result false,
:smallest [0 1 2]}}

(range 0 1 2)
;;= (0)
(count (range 0 1 2))
;;= 0
```

On Sat, Apr 18, 2015 at 2:32 PM, Mathias De Wachter 
mathias.dewach...@gmail.com wrote:

 Hi,

 this looks like quite a serious bug to me (at least it messed up my
 project):

 First taking the code taken from grimoire:

 clojurechess.position (defn range
   Returns a lazy seq of nums from start (inclusive) to end
   (exclusive), by step, where start defaults to 0, step to 1, and end to
   infinity. When step is equal to 0, returns an infinite sequence of
   start. When start is equal to end, returns empty list.
   {:added 1.0
:static true}
   ([] (range 0 Double/POSITIVE_INFINITY 1))
   ([end] (range 0 end 1))
   ([start end] (range start end 1))
   ([start end step]
(lazy-seq
 (let [b (chunk-buffer 32)
   comp (cond (or (zero? step) (= start end)) not=
  (pos? step) 
  (neg? step) )]
   (loop [i start]
 (if (and ( (count b) 32)
  (comp i end))
   (do
 (chunk-append b i)
 (recur (+ i step)))
   (chunk-cons (chunk b)
   (when (comp i end)
 (range i end step)
 WARNING: range already refers to: #'clojure.core/range in namespace:
 clojurechess.position, being replaced by: #'clojurechess.position/range
 #'clojurechess.position/range
 clojurechess.position (range 0 11 2)
 (0 2 4 6 8 10)

 which is what I'd expect and relied on.

 Now, looking at the new code:

 clojurechess.position (clojure.repl/source clojure.core/range)
 (defn range
   Returns a lazy seq of nums from start (inclusive) to end
   (exclusive), by step, where start defaults to 0, step to 1, and end to
   infinity. When step is equal to 0, returns an infinite sequence of
   start. When start is equal to end, returns empty list.
   {:added 1.0
:static true}
   ([]
(iterate inc' 0))
   ([end]
(if (instance? Long end)
  (clojure.lang.LongRange/create end)
  (clojure.lang.Range/create end)))
   ([start end]
(if (and (instance? Long start) (instance? Long end))
  (clojure.lang.LongRange/create start end)
  (clojure.lang.Range/create start end)))
   ([start end step]
(if (and (instance? Long start) (instance? Long end) (instance? Long
 step))
  (clojure.lang.LongRange/create start end step)
  (clojure.lang.Range/create start end step
 nil
 clojurechess.position (clojure.lang.Range/create 0 11 2)
 (0 2 4 6 8 10)
 clojurechess.position (clojure.lang.LongRange/create 0 11 2)
 (0 2 4 6 8)
 clojurechess.position (clojure.core/range 0 11 2)
 (0 2 4 6 8)

 So the culprit is clojure.lang.LongRange/create.

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at

Re: [PSA] Clojars scp disabled until further notice

2014-09-26 Thread Nelson Morris
Clojars has become a critical part of the clojure ecosystem. As a small
sample, it hosts artifacts for:

* Web development - ring, compojure, hoplon, hiccup, enlive, friend,
immutant
* Tooling - lein templates/plugins, cider-nrepl, clojure-complete,
gorilla-repl
* Clojurescript - lein-cljsbuild, austin, om, reagent, sente
* Misc - Clojurewerkz projects, storm, incanter, clj-time, cheshire,
clj-http,
* Company projects - pedestal, dommy, schema

Vulnerabilities like shellshock and heartbleed always require quick
response. An insecure clojars service could lead to compromised systems in
multiple companies, potentially any project that used an artifact from it.
A similar situation exist for maven central, rubygems, apt, and other
repositories.

There are other administration tasks such as verifying backups, server
updates, better response time to deletion requests, and potentially the
need to handle unexpected downtime. Additionally, development time is
needed for the releases repo w/ signatures, CDN deployments, additional UI
work, and more.

Currently clojars is maintained by a collaboration between 3 very spare
time people. Vulnerabilities get attention due to the damage potential.
However, being a spare time project many of the other tasks languish until
required, or wait behind the queue of life's requirements. I'd love to
change that.

I've been a co-maintainer for clojars for two years. I implemented the
https deployment, better search, and download statistics for clojars. I've
handled most of the deletion requests over the past year. I've also got
work in leiningen including almost everything related to dependency
resolution and trees.

I want your help.

Do you work at a company that runs clojure in production?  Does it have a
financial interest in a well maintained and secure clojars service? Would
it be interested in sponsorships, business features, or another arrangement
that produces value? Then I request you email me. I want to create a
sustainable path for this critical piece of the clojure ecosystem.

Thanks,
Nelson Morris

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [PSA] Clojars scp disabled until further notice

2014-09-26 Thread Nelson Morris
Many of the projects already deployed are not compatible with central's
requirements, including group-ids and signatures. There are other reasons,
but that one already makes it impossible.
On Sep 26, 2014 10:18 AM, Mark markaddle...@gmail.com wrote:

 I'm not very familiar with Clojars so please forgive the naive question:
  Why not host jar files themsevles on Maven central and Clojars becomes a
 catalog of Clojure related artifacts?

 On Friday, September 26, 2014 8:09:55 AM UTC-7, Nelson Morris wrote:

 Clojars has become a critical part of the clojure ecosystem. As a small
 sample, it hosts artifacts for:

 * Web development - ring, compojure, hoplon, hiccup, enlive, friend,
 immutant
 * Tooling - lein templates/plugins, cider-nrepl, clojure-complete,
 gorilla-repl
 * Clojurescript - lein-cljsbuild, austin, om, reagent, sente
 * Misc - Clojurewerkz projects, storm, incanter, clj-time, cheshire,
 clj-http,
 * Company projects - pedestal, dommy, schema

 Vulnerabilities like shellshock and heartbleed always require quick
 response. An insecure clojars service could lead to compromised systems in
 multiple companies, potentially any project that used an artifact from it.
 A similar situation exist for maven central, rubygems, apt, and other
 repositories.

 There are other administration tasks such as verifying backups, server
 updates, better response time to deletion requests, and potentially the
 need to handle unexpected downtime. Additionally, development time is
 needed for the releases repo w/ signatures, CDN deployments, additional UI
 work, and more.

 Currently clojars is maintained by a collaboration between 3 very spare
 time people. Vulnerabilities get attention due to the damage potential.
 However, being a spare time project many of the other tasks languish until
 required, or wait behind the queue of life's requirements. I'd love to
 change that.

 I've been a co-maintainer for clojars for two years. I implemented the
 https deployment, better search, and download statistics for clojars. I've
 handled most of the deletion requests over the past year. I've also got
 work in leiningen including almost everything related to dependency
 resolution and trees.

 I want your help.

 Do you work at a company that runs clojure in production?  Does it have a
 financial interest in a well maintained and secure clojars service? Would
 it be interested in sponsorships, business features, or another arrangement
 that produces value? Then I request you email me. I want to create a
 sustainable path for this critical piece of the clojure ecosystem.

 Thanks,
 Nelson Morris

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [PSA] Clojars scp disabled until further notice

2014-09-26 Thread Nelson Morris
I have no expectations for anyone. Clojars has been free to use
(push/pull,individual/corp) since it started. I have no intentions of
changing that. My belief is there is value to maintenance/dev, and hope
that it can financed in a sustainable way.  If it can be done by being
spread out among people deriving that value, then even better.

I'll plan to set up something for individuals in the future, though that
will wait until after I talk to businesses. As for numbers, I don't have a
direct answer for you. It comes down to the value the company can get back.
I'm starting with conversations with businesses that are interested, and
will determine from there.

On Fri, Sep 26, 2014 at 1:44 PM, Howard M. Lewis Ship hls...@gmail.com
wrote:

 There's a number of options out there for collecting small recurring
 payments.  I already make regular payments to Wikipedia and a couple of
 others (including GitHub), and would be willing to kick in some money
 towards Clojars.

 The question is: what is a reasonable amount?  This is tricky; I'm
 comfortable, as a self-employed, individual developer, to kick in $3-$5 per
 month. What kind of numbers are you looking at for the more corporate users
 of Clojars?  What would you expect for an organization that simply pulls
 for Clojars, vs. one that distributes code via Clojars?


 On Friday, 26 September 2014 08:09:55 UTC-7, Nelson Morris wrote:

 Clojars has become a critical part of the clojure ecosystem. As a small
 sample, it hosts artifacts for:

 * Web development - ring, compojure, hoplon, hiccup, enlive, friend,
 immutant
 * Tooling - lein templates/plugins, cider-nrepl, clojure-complete,
 gorilla-repl
 * Clojurescript - lein-cljsbuild, austin, om, reagent, sente
 * Misc - Clojurewerkz projects, storm, incanter, clj-time, cheshire,
 clj-http,
 * Company projects - pedestal, dommy, schema

 Vulnerabilities like shellshock and heartbleed always require quick
 response. An insecure clojars service could lead to compromised systems in
 multiple companies, potentially any project that used an artifact from it.
 A similar situation exist for maven central, rubygems, apt, and other
 repositories.

 There are other administration tasks such as verifying backups, server
 updates, better response time to deletion requests, and potentially the
 need to handle unexpected downtime. Additionally, development time is
 needed for the releases repo w/ signatures, CDN deployments, additional UI
 work, and more.

 Currently clojars is maintained by a collaboration between 3 very spare
 time people. Vulnerabilities get attention due to the damage potential.
 However, being a spare time project many of the other tasks languish until
 required, or wait behind the queue of life's requirements. I'd love to
 change that.

 I've been a co-maintainer for clojars for two years. I implemented the
 https deployment, better search, and download statistics for clojars. I've
 handled most of the deletion requests over the past year. I've also got
 work in leiningen including almost everything related to dependency
 resolution and trees.

 I want your help.

 Do you work at a company that runs clojure in production?  Does it have a
 financial interest in a well maintained and secure clojars service? Would
 it be interested in sponsorships, business features, or another arrangement
 that produces value? Then I request you email me. I want to create a
 sustainable path for this critical piece of the clojure ecosystem.

 Thanks,
 Nelson Morris

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Howto Load Project Namespaces in Leiningen Plugins

2014-09-01 Thread Nelson Morris
When writing lein plugins you have to think about if they should do work in
lein's vm or the project's vm. In this case, since you want to load
namespaces from the project, the work will need to be done in the project's
vm.  This is where `leiningen.core.eval/eval-in-project` is used, to spin
up the project's vm and run forms in it.

The arguments to `l.c.e/eval-in-project` will be the project map, a clojure
form representing what to run, and a clojure form designed to allow
avoidance of the gilardi scenario. The big question here becomes how to
create the first form representing what to run.

Option 1: short syntax quote form + injecting dependency into project
Example: cljx
https://github.com/lynaghk/cljx/blob/master/src/leiningen/cljx.clj#L32 and
https://github.com/lynaghk/cljx/blob/master/src/leiningen/cljx.clj#L20
Disadvantages:

1. Requires injecting a dependency into the project (could also be ok if
the working code already exists in a seperate dep, marg vs lein-marg,
ring-server vs lein-ring, etc).
2. Needs a require for the dependency's helper namespace as part of gilardi
avoidance form.

Option 2: long syntax quote form
Example: leiningen.test
https://github.com/technomancy/leiningen/blob/master/src/leiningen/test.clj#L67
Disadvantages:

1. Have to think in syntax quote vs normal evaluation.
2. Needs a require for each namespace the form uses as part of the gilardi
avoidance form (could be ok if only 1 or 2 ns used).


I generally recommend option 1 as easier to think about, and I believe it
to be more common.

As for why `l.c.e/eval-in-project` was not found, I would hazard a guess
based on limited info that it was not `require`d first.

I'll plug
https://github.com/technomancy/leiningen/blob/master/doc/PLUGINS.md#code-evaluation
and https://www.youtube.com/watch?v=uXebQ7RkhKs as containing similar
information said in different ways, in case it comes across better there.

-
Nelson Morris


On Sun, Aug 31, 2014 at 4:02 PM, Timothy Washington twash...@gmail.com
wrote:

 Ok,

 So I'm trying to write a leiningen plugin that takes some namespace
 arguments. Let's call it *myplugin*. This is a brand new plugin, so
 everything else is empty, and this value is present: *{:eval-in-leiningen
 true}*. My problem happens when, in the context of the project
 *myplugin* is acting on, the plugin code fails. I pass in some
 project-local namespace that I want to eval (which is definitely present).
 And I get this situation:

 *Error*

 java.lang.Exception: No namespace: mynamespace found


 *Offending Code*

 (defn check-foreach-namespace [namespaces]


   (let [fnss (filter #(= Fubar (type (var-get %)))

  (vals *(ns-publics (symbol (first namespaces)))*))]


 (println filtered-namespace [ fnss ])))


 (defn myplugin [project  args]

   (check-foreach-namespace args))



 So then, if I try to require the namespace being passed in, that too fails
 like so:

 *Error: *

 java.io.FileNotFoundException: Could not locate mynamespace_file.clj on
 classpath:


 *Offending Code:*

 (ns leiningen.chesk

   (:require [clojure.test.check :as tc]

 [clojure.test.check.generators :as gen]

 [clojure.test.check.properties :as prop]))


 (defn check-foreach-namespace [namespaces]



   (let [nss (map *#(require (symbol %))* namespaces)

  fnss (filter #(= clojure.test.check.generators.Generator (type
 (var-get %)))

  (vals (ns-publics (symbol (first nss)]


 (println filtered-namespace [ fnss ])))


 (defn myplugin [project  args]

   (check-foreach-namespace args))


 Looking around, I thought I had found some relevant instruction on how to
 handle this gilardi scenario
 https://github.com/technomancy/leiningen/blob/master/doc/PLUGINS.md#evaluating-in-project-context.
 So I tried to use *eval-in-project* with and without namespace prefix,
 and with several permutations of quoting. This is the error that occurs.

 *Error: *

 clojure.lang.Compiler$CompilerException: java.lang.ClassNotFoundException:
 leiningen.core.eval


 *Offending Code: *

 (ns leiningen.chesk
   (:require [clojure.test.check :as tc]
 [clojure.test.check.generators :as gen]
 [clojure.test.check.properties :as prop]))

 (defn check-foreach-namespace [namespaces]

   (let [fnss (filter #(= clojure.test.check.generators.Generator (type
 (var-get %)))
  (vals (ns-publics (symbol (first namespaces)]

 (println filtered-namespace [ fnss ])))

 (defn myplugin [project  args]
   (*leiningen.core.eval/eval-in-project* project
(check-foreach-namespace args)
(map #(require (symbol %)) args)))




 So something that looks like it should be straightforward, is not working
 out as planned. I also can't quite see how other plugins are doing this.
 lein-midje seems a bit cryptic (see here
 https://github.com/marick/lein-midje/blob/master/src/leiningen

Re: Cannot get Friend to work (login or unauthorized handler)

2014-08-06 Thread Nelson Morris
The ordering of middleware is certainly causing some problems.  From
https://github.com/cemerick/friend#authentication: Note that Friend itself
requires some core Ring middlewares: params, keyword-params and
nested-params.  These are added as part of `handler/site`, and so that
needs to be outside of `friend/authenticate`, something like `(def app (-
www-routes (friend/authenticate ...) handler/site)`.


On Wed, Aug 6, 2014 at 12:14 PM, Gary Verhaegen gary.verhae...@gmail.com
wrote:

 I was wrong, sorry. Looking at the code for
 c.f.workflows/interactive-form, you can indeed see where it intercepts a
 POST request to the provided :login-uri (lines 84-85 on current master).

 Which means I have absolutely no idea why it gives you a 404, except maybe
 if it is related to the other point about the order of middlewares.

 Sorry for the confusion.

 On Wednesday, 6 August 2014, Jonathon McKitrick jmckitr...@gmail.com
 wrote:

 I'm confused.  None of the examples shown implemented the login POST
 handler.  The docs implied it was already part of the middleware:

 From https://github.com/cemerick/friend :
 
 The example above defines a single workflow — one supporting the POSTing
 of :username and :password parameters to (by default) /login — which
 will discover the specified :credential-fn and use it to validate
 submitted credentials.
 


 --
 Jonathon McKitrick


 On Wed, Aug 6, 2014 at 10:46 AM, Gary Verhaegen gary.verhae...@gmail.com
  wrote:

 1. No, you have to provide it (as a non-protected route, obviously).
 2. The order in which you apply the handler/site and friend/authenticate
 middlewares is reversed: friend needs the session (and others), so it
 should come after (or rather within) the handler/site to work properly
 (in execution order).


 On Wednesday, 6 August 2014, Jonathon McKitrick jmckitr...@gmail.com
 wrote:

  First, the code:

 (ns pts.server
   (:use [compojure.core])
   (:require [ring.adapter.jetty :as jetty]
 [ring.util.response :as response]
 [compojure.handler :as handler]
 [compojure.route :as route]
 [cemerick.friend :as friend]
 (cemerick.friend [workflows :as workflows]
  [credentials :as creds])))

 (defroutes www-routes
   (GET /locked [] (friend/authorize #{::admin} Admin only))
   (GET /home [] (response/file-response home.html {:root
 resources/public}))
   (GET /login [] (response/file-response login.html {:root
 resources/public}))
   (GET / [] (response/redirect index.html))
   (route/resources /)
   (route/not-found Not Found))

 (def app (handler/site www-routes))

 (def users {root {:username root
 :password (creds/hash-bcrypt toor)
 :roles #{::admin}}})

 (def secure-app
   (- app
   (friend/authenticate {:unauthorized-handler #(response/status
 (response/response NO) 401)
 :credential-fn (partial
 creds/bcrypt-credential-fn users)
 :workflows
 [(workflows/interactive-form)]})))

 (defn -main [ args]
   (let [port (Integer/parseInt (get (System/getenv) PORT 3000))]
 (jetty/run-jetty secure-app {:port port :join? false})))

 It's dead simple, but 2 major things are not working.

 1.  The POST to /login to submit the login form gives a 404 Not Found.
 Isn't the POST handler part of the friend/authenticate middleware?
 2.  Attempts to access the /locked URL throw an exception and a
 stacktrace, rather than calling the unauthorized handler:
 throw+: {:cemerick.friend/required-roles #{:pts.server/admin},
 :cemerick.friend/exprs [Admin only], :cemerick.friend/type :unauthorized,
 :cemerick.friend/identity nil}

 What am I doing wrong here?

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to clojure+unsubscr...@googlegroups.com.

 For more options, visit https://groups.google.com/d/optout.

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to a topic in the
 Google Groups Clojure group.
 To unsubscribe from this topic, 

Re: what is the best way of seeding your database with leiningen

2014-07-26 Thread Nelson Morris
You can use `lein run` to execute a function from your project while
avoiding the complexity/distribution of a plugin.

In order to seed from a command line I would::
1. Write a function that can seed the data (like the blog post).
2. Use `lein run -m my.seed.ns/load-fixtures`.  This will start a jvm with
all your project deps and then run the specified function.
3. Add an alias to the project.clj by adding `:aliases {seed [run -m
my.seed.ns/load-fixtures]}`.  This allows the above command to be run
using `lein seed`, which is easier to remember.


On Sat, Jul 26, 2014 at 8:50 AM, Rui Yang ryang@gmail.com wrote:

 Hi all,

 Using Leiningen, wonder what is the best way of seeding my database.

 I used ragtime to do the migration. I could drop the database and recreate
 it. After creating database, I would like to invoke some task to seed my
 database.

 One approach could be
 http://dustingetz.tumblr.com/post/24982262733/clojure-webapp-fixtures-seed-data.
 It needs to manually specify the relation of entity, eg set the ID of the
 entity, and foreign key of the entity. When the ID is auto-generated in
 database, you may not be able to set the id manually.

 Ideally, I could just write a function to read the yaml fixture, and call
 my functions based on korma to seed data. But I don't know how to do it.
 Could a Leiningen plugin to call the functions in the project?

 Wonder if anyone has a better idea?

 Thanks.

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Deploying to Clojars no longer works

2014-07-05 Thread Nelson Morris
Peer not authenticated sounds like an ssl issue.  Could you try adding
:certificates [clojars.pem] to your :user profile and seeing if it
authenticates?


On Fri, Jul 4, 2014 at 3:11 PM, Jacob Goodson submissionfight...@gmx.com
wrote:

 I tried updating to the latest version and it still keeps saying that peer
 is not authenticated.  I cannot upload anything its annoying!


 On Thursday, July 3, 2014 10:02:07 AM UTC-4, Zach Oakes wrote:

 Even on the latest version (2.4.0), I've experienced problems in the last
 three weeks. I believe they've coincided with the site redesign, but they
 may not be related. I sometimes get Read timed out when uploading an
 artifact. Since deployments aren't atomic, the library or template will be
 partially uploaded and thus unusable, so I have to increment the version
 number and try again.

 On Thursday, July 3, 2014 3:29:17 AM UTC-4, Adam Clements wrote:

 Have you tried upgrading leiningen to the latest version? I don't think
 you can deploy from old versions, at least that's been a problem for me in
 the past.
 On 2 Jul 2014 20:55, Jacob Goodson submissio...@gmx.com wrote:

 I have been deploying the same project to clojars for quite a while
 now(5 months?); for some reason it decided it no longer wanted to work.
  After giving my pass phrase I get peer not authenticated.  I have not
 changed computers nor do I have a new internet connection.  Does anyone
 know what the heck I've done to blow it up?

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to clojure+u...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Deploying to Clojars no longer works

2014-07-05 Thread Nelson Morris
Read timed out sounds like the artifact might be too large, but if future
tries succeed then that's not the case.  Could you send me the
group/artifact/versions that failed?


On Thu, Jul 3, 2014 at 9:02 AM, Zach Oakes zsoa...@gmail.com wrote:

 Even on the latest version (2.4.0), I've experienced problems in the last
 three weeks. I believe they've coincided with the site redesign, but they
 may not be related. I sometimes get Read timed out when uploading an
 artifact. Since deployments aren't atomic, the library or template will be
 partially uploaded and thus unusable, so I have to increment the version
 number and try again.


 On Thursday, July 3, 2014 3:29:17 AM UTC-4, Adam Clements wrote:

 Have you tried upgrading leiningen to the latest version? I don't think
 you can deploy from old versions, at least that's been a problem for me in
 the past.
 On 2 Jul 2014 20:55, Jacob Goodson submissio...@gmx.com wrote:

 I have been deploying the same project to clojars for quite a while
 now(5 months?); for some reason it decided it no longer wanted to work.
  After giving my pass phrase I get peer not authenticated.  I have not
 changed computers nor do I have a new internet connection.  Does anyone
 know what the heck I've done to blow it up?

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clo...@googlegroups.com

 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+u...@googlegroups.com

 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send
 an email to clojure+u...@googlegroups.com.

 For more options, visit https://groups.google.com/d/optout.

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Clojars is down?

2014-03-31 Thread Nelson Morris
Yes it was down as part of a linode issue.  As a co-maintainer for clojars,
if this inconvenienced anyone's business I'd be happy to hear from you.

-
Nelson Morris


On Mon, Mar 31, 2014 at 2:14 PM, Gal Dolber g...@dolber.com wrote:

 nevermind


 On Mon, Mar 31, 2014 at 4:00 PM, Gal Dolber g...@dolber.com wrote:



  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: Problem in clojars SSL Cert

2014-03-28 Thread Nelson Morris
Some jvm's do not ship the startcom ssl cert in the default list.  This
means a verified chain cannot be found to the clojars cert.  This was
resolved in leiningen by shipping the startcom cert and adding it to that
jvm's trust mananger (https://github.com/technomancy/leiningen/issues/613).
 Since you're using maven, the solution might be to use the `keytool`
command as show in
http://stackoverflow.com/questions/4302686/import-startcom-ca-certificates-in-windows-jre

-
Nelson Morris


On Wed, Mar 26, 2014 at 2:54 AM, radhika shashank 
radhika.shash...@gmail.com wrote:


 https://lh3.googleusercontent.com/-0it6LXlE5Io/UzKHYcAjG9I/BX8/t_mFaO7B06o/s1600/clojars.GIF

 Hi,

 I am trying to run incubator-storm-master but I am getting the following
 error:



 It is clear that the error is for clojars SSL Certificate.

 I ll be glad if you could tell me how to add the certificate and prevent
 this error


 I have been looking for this answer and referred many links like :

 https://github.com/technomancy/leiningen/issues/692


 But I have still could not get this thing working





 Thanks,

 Radhika

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/d/optout.


-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Re: [ClojureScript] AnNN: ClojureScript 0.0-2120

2013-12-13 Thread Nelson Morris
 Enhancements:
 * inline source map information available to REPLs, enabled in browser REPL


I have PRs into piggieback and austin to enable this in the future.  In the
meantime, if you want to try it out you can clone
https://github.com/xeqi/austin and https://github.com/xeqi/piggieback, and
use lein's checkout dependencies.

-
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Clojars Could not transfer artifact... ReasonPhrase: Forbidden

2013-11-04 Thread Nelson Morris
Clojars has a 20mb limit on jar files.  The file trying to be transfered
was 100mb,  This gets caught and sent back as a 403.  It should probably
be something else.

-
Nelson Morris


On Sun, Nov 3, 2013 at 5:47 PM, Mihnea Dobrescu-Balaur mih...@linux.comwrote:

 What was the problem?


 On Monday, August 5, 2013 11:43:11 PM UTC+3, frye wrote:

 Ok, got this sorted out. Thanks to xeqi @ #leiningen @ irc.freenode.org.


 Tim Washington
 Interruptsoftware.ca / Bkeeping.com



 On Mon, Aug 5, 2013 at 11:24 AM, Timothy Washington twas...@gmail.comwrote:

 Hi all,

 I'm having problems deploying a project to Clojars. I've just reset my
 Clojars i) password and ii) SSH public key. And now, from my development
 system, I want to push my project. Yet I get the below error: *Could
 not transfer artifact... ReasonPhrase: Forbidden*. I'm very sure that
 the password is correct, and that the SSH keys match on my system, and
 clojars. Are there any other gymnastics that has to happen?


 *$ ~/Projects/stefon$ lein deploy clojars*
 *No credentials found for clojars*
 *See `lein help deploy` for how to configure credentials.*
 *Username: xxx*
 *Password: *
 *Wrote /home/webkell/Projects/stefon/pom.xml*
 *Created
 /home/webkell/Projects/stefon/target/provided/stefon-0.1.0-SNAPSHOT.jar*
 *Retrieving stefon/stefon/0.1.0-SNAPSHOT/maven-metadata.xml (1k)*
 *from https://clojars.org/repo/ https://clojars.org/repo/*
 *Sending stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom
 (4k)*
 *to https://clojars.org/repo/ https://clojars.org/repo/*
  *Could not transfer artifact stefon:stefon:pom:0.1.0-20130805.150327-2
 from/to clojars (https://clojars.org/repo/ https://clojars.org/repo/):
 Access denied to:
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom,
 ReasonPhrase: Forbidden.*
 *Sending stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.jar
 (7k)*
 *to https://clojars.org/repo/ https://clojars.org/repo/*
  *Could not transfer artifact stefon:stefon:jar:0.1.0-20130805.150327-2
 from/to clojars (https://clojars.org/repo/ https://clojars.org/repo/):
 Access denied to:
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.jar
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.jar,
 ReasonPhrase: Forbidden.*
 *Failed to deploy artifacts: Could not transfer artifact
 stefon:stefon:pom:0.1.0-20130805.150327-2 from/to clojars
 (https://clojars.org/repo/ https://clojars.org/repo/): Access denied to:
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom,
 ReasonPhrase: Forbidden.*



 Thanks

 Tim Washington
 Interruptsoftware.ca / Bkeeping.com


  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Clojars Could not transfer artifact... ReasonPhrase: Forbidden

2013-11-04 Thread Nelson Morris
Correct, clojars stopped allowing uploads of the same version of an
artifact earlier this year. It is incorrect to allow as a user might have
already downloaded the original version and maven/lein will not re-download
cached files.


On Mon, Nov 4, 2013 at 12:32 PM, Mihnea Dobrescu-Balaur mih...@linux.comwrote:

 Thanks. Might there also be a problem when you try to reupload the
 same version of a jar?

 On Mon, Nov 4, 2013 at 8:29 PM, Nelson Morris nmor...@nelsonmorris.net
 wrote:
  Clojars has a 20mb limit on jar files.  The file trying to be transfered
 was
 100mb,  This gets caught and sent back as a 403.  It should probably be
  something else.
 
  -
  Nelson Morris
 
 
  On Sun, Nov 3, 2013 at 5:47 PM, Mihnea Dobrescu-Balaur mih...@linux.com
 
  wrote:
 
  What was the problem?
 
 
  On Monday, August 5, 2013 11:43:11 PM UTC+3, frye wrote:
 
  Ok, got this sorted out. Thanks to xeqi @ #leiningen @
 irc.freenode.org.
 
 
  Tim Washington
  Interruptsoftware.ca / Bkeeping.com
 
 
 
  On Mon, Aug 5, 2013 at 11:24 AM, Timothy Washington twas...@gmail.com
 
  wrote:
 
  Hi all,
 
  I'm having problems deploying a project to Clojars. I've just reset my
  Clojars i) password and ii) SSH public key. And now, from my
 development
  system, I want to push my project. Yet I get the below error: Could
 not
  transfer artifact... ReasonPhrase: Forbidden. I'm very sure that the
  password is correct, and that the SSH keys match on my system, and
 clojars.
  Are there any other gymnastics that has to happen?
 
 
  $ ~/Projects/stefon$ lein deploy clojars
  No credentials found for clojars
  See `lein help deploy` for how to configure credentials.
  Username: xxx
  Password:
  Wrote /home/webkell/Projects/stefon/pom.xml
  Created
 
 /home/webkell/Projects/stefon/target/provided/stefon-0.1.0-SNAPSHOT.jar
  Retrieving stefon/stefon/0.1.0-SNAPSHOT/maven-metadata.xml (1k)
  from https://clojars.org/repo/
  Sending
 stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom
  (4k)
  to https://clojars.org/repo/
  Could not transfer artifact stefon:stefon:pom:0.1.0-20130805.150327-2
  from/to clojars (https://clojars.org/repo/): Access denied to:
 
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom
 ,
  ReasonPhrase: Forbidden.
  Sending
 stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.jar
  (7k)
  to https://clojars.org/repo/
  Could not transfer artifact stefon:stefon:jar:0.1.0-20130805.150327-2
  from/to clojars (https://clojars.org/repo/): Access denied to:
 
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.jar
 ,
  ReasonPhrase: Forbidden.
  Failed to deploy artifacts: Could not transfer artifact
  stefon:stefon:pom:0.1.0-20130805.150327-2 from/to clojars
  (https://clojars.org/repo/): Access denied to:
 
 https://clojars.org/repo/stefon/stefon/0.1.0-SNAPSHOT/stefon-0.1.0-20130805.150327-2.pom
 ,
  ReasonPhrase: Forbidden.
 
 
 
  Thanks
 
  Tim Washington
  Interruptsoftware.ca / Bkeeping.com
 
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
 Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send
 an
  email to clojure+unsubscr...@googlegroups.com.
 
  For more options, visit https://groups.google.com/groups/opt_out.
 
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
 your
  first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to a topic in the
  Google Groups Clojure group.
  To unsubscribe from this topic, visit
  https://groups.google.com/d/topic/clojure/iD2a5hJVfck/unsubscribe.
  To unsubscribe from this group and all its topics, send an email to
  clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.



 --
 Mihnea Dobrescu-Balaur

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options

Re: clojars.org image for latest version of a project

2013-10-11 Thread Nelson Morris
I'm glad to see you've found a solution that works for you.  I know of
several people doing scraping of clojars to get info, and a real api is on
my list to do when I find time.

-
Nelson Morris


On Fri, Oct 11, 2013 at 7:45 AM, Adam Clements adam.cleme...@gmail.comwrote:

 That's great, gets exactly the information I need from all the
 repositories. I'll go fix up my library to use this instead. Thanks for the
 tip off.


 Adam Clements

 +44 7947 724 795
 --
 This email and any files transmitted with it are confidential. If you are
 not the intended recipient, you are hereby notified that any disclosure,
 distribution or copying of this communication is strictly prohibited.


 On Fri, Oct 11, 2013 at 12:19 AM, Karsten Schmidt i...@toxi.co.uk wrote:

 On 11 October 2013 00:01, Adam Clements adam.cleme...@gmail.com wrote:
  I find it ridiculously useful not having to go to my browser to look up
 the
  latest version of libraries I use all the time.

 Adam, you might want to check out this leiningen plugin then...
 https://github.com/xsc/lein-ancient

 K.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


clojars.org image for latest version of a project

2013-10-07 Thread Nelson Morris
There is a new route on clojars.org that will create an svg of the lein
coordinates for the latest version of a project. To use it add
/latest-version.svg to a project url. An example can be found at
https://clojars.org/compojure/latest-version.svg. This may be useful for a
project readme.

Many thanks to Alexander Yakushev (https://github.com/alexander-yakushev)
for putting together the commit.

-
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: [ANN] Austin — the ClojureScript browser-REPL, rebuilt stronger, faster, easier

2013-09-09 Thread Nelson Morris
I've been using austin on a project with emacs/nrepl.  It works for a C-c
C-k, switch to nrepl, interact with app. However, some other features like
auto-complete and jump-to-symbol-definition I'm used to in a clojure
workflow don't work or cause a core to spin.  I'd suspect the eldoc call to
show the function arguments could act similar.

-
Nelson


On Mon, Sep 9, 2013 at 10:25 AM, Norman Richards o...@nostacktrace.comwrote:

 On Mon, Aug 5, 2013 at 8:21 AM, Chas Emerick c...@cemerick.com wrote:

 As you might know, I've been tinkering with an easier-to-use variant of
 ClojureScript's browser-REPL for some time.  I've finally wrapped that up
 into its own project, Austin: [...]



 Is anyone successfully using this with nrepl in emacs?  I am able to make
 it work, but something is causing both emacs and the JVM it is connected to
 to use 100% CPU.  I seem to be getting a long stream of Unable to resolve
 symbol: if-let in this context, compiling:(NO_SOURCE_PATH:1:1)

 See: https://gist.github.com/orb/6496320

 *nrepl-connection* fills up with:

 d2:ex45:class
 clojure.lang.Compiler$CompilerException2:id6:1504207:root-ex45:class
 clojure.lang.Compiler$CompilerException7:session36:43e688aa-01c2-4824-b1f3-1bd05a1f02446:statusl10:eval-erroreed3:err128:CompilerException
 java.lang.RuntimeException: Unable to resolve symbol: if-let in this
 context, compiling:(NO_SOURCE_PATH:1:1)


 I'm not sure if this is a problem with austin or if it's nrepl.el or
 something on the emacs side.

 As a side note, I occasionally get a similar error message using straight
 nrepl when first starting up, but it usually only happens once.  With
 austin/nrepl it appears to be stuck in some kind of loop erroring over and
 over...  Does anyone have a known good setup I could try to reproduce?

  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.


-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Compiling Clojure security knowledge

2013-09-02 Thread Nelson Morris
On Mon, Sep 2, 2013 at 6:25 AM, abp abp...@gmail.com wrote:

 clojars uses https://github.com/ato/**clojars-web/blob/master/src/**
 clojars/web/safe_hiccup.cljhttps://github.com/ato/clojars-web/blob/master/src/clojars/web/safe_hiccup.clj

 which automatically escapes.


 But that double escapes attribute values if you don't put them in
 raw-calls.


Yes, it double escapes attributes. In addition, doctype helpers like
`html5` might need to be redefined to use a `(raw ...)` for some parts.
There might be other functions where a `(raw ...)` is needed. The changes
in that file have proven sufficient for clojars, and I much prefer the
escape by default semantics, but more work might be needed for others.

Additionally, CSRF protection can happen with ring-anti-forgery.  The
clojars source link above includes a `form-to` function that is a
replacement for hiccup's `form-to` that adds the token on any
non-get/non-head forms.  It does require adding anti-forgery to the
middleware stack.



Several of Yesod's responses to other items on the list are humorous in
there vagueness, but in my experience for clojure:

1.Injection:   Done by JDBC's prepared statements, and clojure.jdbc's use
of them
2. XSS injection:   Depends on templating.  Hiccup requires explicit `(h
..)` calls.  laser is escape by default.  I am unsure about enlive,
clabango, or others.
3. Authentication  Session Management:  I've used friend for
authentication, and bcrypt for encryption.  lib-noir has some functions
that use bcrypt, but I've not used it. Session management can be specified
by the :store given to wrap-session, and defaults to a in memory store.  A
cookie store also exists that provides some protection against cookie
mutation.  Immutant provides a store that can work across a cluster.
4. Insecure Reference:  There is not a standard ORM or similar, so handling
only the correct parameters is up to you.
5. CSRF:  ring-anti-forgery provides a way to add CSRF prevention tokens
6. Security Misconfiguration: This seems to be the domain of chef, pallet,
puppet, capistrano or another deployment tool.  I'm not sure I want my
libraries to mess with deployments.
7. Insecure Cryptographic Storage: Use bcrypt. See 3.
8. Failure to Restrict URL access: I've used friend for authorization.
9. Insufficient Transport Layer Protection: I'd recommend letting your
front end server handle this and redirect to https.  I believe lib-noir has
a middleware that will redirect from http to https if needed. Consider
passing `:secure true` to `wrap-cookies` if you have an https only site.
10. Unvalidated Redirects and Forwards: Url generation is a weakspot in a
compojure based setup. For comparison, pedestal-service wrote its own
routing dsl and stores the routes in a way that allows url generation based
on the context passed in.

I believe the use of many small libraries is what causes the lack of a
single spot for this documentation. I've picked up most of what I described
above by knowing the authors / what to google / asking + watching irc.
 That does seem like an unfortunate situation for anyone new to have to
learn.

-
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Re: Leiningen 2.3.0 and uberjar

2013-08-10 Thread Nelson Morris
I believe this is https://github.com/technomancy/leiningen/issues/1283.


On Sat, Aug 10, 2013 at 3:54 PM, Zach Oakes zsoa...@gmail.com wrote:

 I experienced this as well; when I opened the resulting jar, I found
 source files rather than class files. Not sure what causes this.


 On Saturday, August 10, 2013 9:36:24 AM UTC-4, Christian Sperandio wrote:

 Hi,

 I've installed the last lein version. But when I do:

 $ lein new app jartest
 $ lein uberjar

 At this time, 2 jars are created. Then I call:

 $ java -jar target/jartest-0.1.0-SNAPSHOT-**standalone.jar

 And I get this error:

 Caused by: java.lang.**ClassNotFoundException: jartest.core
 at java.net.URLClassLoader$1.run(**URLClassLoader.java:202)
 at java.security.**AccessController.doPrivileged(**Native Method)
 at java.net.URLClassLoader.**findClass(URLClassLoader.java:**190)
 at java.lang.ClassLoader.**loadClass(ClassLoader.java:**306)
 at sun.misc.Launcher$**AppClassLoader.loadClass(**Launcher.java:301)
 at java.lang.ClassLoader.**loadClass(ClassLoader.java:**247)

 In the jartest/core.clj, the :gen-class option of ns is well defined and
 there's the main function.

 What did I miss?

 Thanks for your help.

  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: ANN: paredit-widget, simple swing-based clojure paredit widget

2013-08-06 Thread Nelson Morris
It might be a version range somewhere.  `lein deps :tree` in lein 2.2.0
should show the path to it.  If it doesn't please let me know


On Tue, Aug 6, 2013 at 11:32 AM, Zach Oakes zsoa...@gmail.com wrote:

 Thanks! It seems to work well so far in Nightcode. I noticed it pulled
 down a bunch of older versions of Clojure, but I'm guessing that's because
 you're using a SNAPSHOT version of seesaw in it? Also, I was wondering if
 the other library you use (org.kovas/paredit.clj) was available anywhere --
 I couldn't find it on your Github.


 On Monday, August 5, 2013 11:52:24 PM UTC-4, kovasb wrote:

 Thanks for the feedback. I just extended the paredit-widget function to
 be able to consume pre-existing widgets:

 (p/paredit-widget (javax.swing.JTextArea. (foo bar)))

 fyi right now the implementation isn't taking advantage of parsley's
 incremental parsing support, and instead is reparsing the text with every
 paredit command execution. This might be an issue for big files, but is
 fixable.


 On Mon, Aug 5, 2013 at 7:51 PM, Zach Oakes zso...@gmail.com wrote:
 
  Hi kovasb, I mentioned this in the other thread but it's best to ask
 here: Can you provide a way to pass an existing JTextArea to it, rather
 than instantiating your own?
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clo...@googlegroups.com

  Note that posts from new members are moderated - please be patient with
 your first post.
  To unsubscribe from this group, send email to
  clojure+u...@**googlegroups.com

  For more options, visit this group at
  http://groups.google.com/**group/clojure?hl=enhttp://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
 Groups Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send
 an email to clojure+u...@**googlegroups.com.

  For more options, visit 
  https://groups.google.com/**groups/opt_outhttps://groups.google.com/groups/opt_out
 .
 
 

  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: -- macro proposal

2013-07-17 Thread Nelson Morris
Note the original discussion was from 2010.


On Wed, Jul 17, 2013 at 11:49 AM, Alexander Yakushev unlo...@bytopia.orgwrote:

 What a twist.

 Does any of the participants care to comment on this one? A hundred posts
 of bashing a person from the position of authority while the macro in
 question already sits in Core. I am against the usage of it myself, and
 closely followed previous discussions on this topic to understand the
 arguments being brought there; but arguing against something you already
 accepted is beyond my comprehension, tbh.


 On Wednesday, July 17, 2013 6:07:53 AM UTC+3, Gary Johnson wrote:

 Ugh. What a pointless thread. Someone could have just said:

  ---
  It's already in clojure 1.5. The form you are looking for is called as-.
  Your original example would be written like this:

   (as- 3 x (+ 1 x 4) (prn answer: x))
   ---

 Done. Yeesh.

 On Sunday, July 14, 2013 12:34:02 PM UTC-4, Jeremy Heiler wrote:

 On Sat, Jul 13, 2013 at 9:08 PM, Daniel Dinnyes dinn...@gmail.com
 wrote:
  Just made a quick search on `main arguments` on both Google and
 Wikipedia.
  Do you mean the arguments in `public static void main (String[]
 args)`? If
  not please provide some definition what do you mean by main arguments.
 Else
  the point is meaningless.

 He means the arguments you are threading.

  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [ANN] lein-pedantic is now deprecated

2013-05-31 Thread Nelson Morris
There seems to be enough desire to spend some more time on them.  Issues
filed at https://github.com/technomancy/leiningen/issues/1197 and
https://github.com/technomancy/leiningen/issues/1198. I'll see about
getting them into a future release.

-
Nelson Morris


On Fri, May 31, 2013 at 7:54 PM, Curtis Gagliardi 
gagliardi.cur...@gmail.com wrote:

 Another +1 for those features.


 On Wednesday, May 29, 2013 6:25:22 PM UTC-7, Nelson Morris wrote:

 Good news everybody! As of leiningen 2.2.0 using `lein deps :tree` will
 perform version checks and version range detection. Therefore, I have
 deprecated lein-pedantic.  I appreciate all of the users of the plugin that
 found it useful.

 I believe there are two pieces of functionality that do not currently
 have a replacement:
 1) ability to fail the task when a bad dependency resolution happens
 2) exact instructions of what to place in project.clj to make things work

 If you are interested in these, please let me know here, and I'll see
 about adding them in a future leiningen release.

 -
 Nelson Morris

  --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [ANN] peridot 0.2.1 released

2013-05-30 Thread Nelson Morris
Thanks for posting the link. I'll have to make sure to follow an ANN guide
instead of memory next time.
On May 29, 2013 11:40 PM, Michał Marczyk michal.marc...@gmail.com wrote:

 https://github.com/xeqi/peridot


 On 30 May 2013 06:13, Michael Klishin michael.s.klis...@gmail.com wrote:
 
  2013/5/30 Nelson Morris nmor...@nelsonmorris.net
 
  peridot is a library for interacting with ring apps while maintaining
  state between requests, such as a cookie jar
 
 
  Nelson,
 
  Does your project have a site or a github repo? There are no links in
 your
  announcement.
  --
  MK
 
  http://github.com/michaelklishin
  http://twitter.com/michaelklishin
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
 your
  first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.
 
 

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Using lein profiles to change details of project

2013-05-29 Thread Nelson Morris
You might be looking for test selectors. They are a built-in way to only
run tests based on their metadata.  Take a look at `lein help test`.

-
Nelson Morris


On Wed, May 29, 2013 at 5:20 AM, Phillip Lord
phillip.l...@newcastle.ac.ukwrote:


 I have a project in lein which runs tests. But some of the tests require
 network access. And some of them take a lot of CPU which is not good
 when I am on a netbook.

 It seemed to me that I could use a lein profile, so that I can switch on
 or off the heavy tests, ideally on a per machine basis.

 While I understand how to set up a new profile, I can't see whether I
 can access the project map that I am using within the project so that I
 can see up conditional logic --- like ignore this test if I am my
 netbook.

 Phil


 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




[ANN] lein-pedantic is now deprecated

2013-05-29 Thread Nelson Morris
Good news everybody! As of leiningen 2.2.0 using `lein deps :tree` will
perform version checks and version range detection. Therefore, I have
deprecated lein-pedantic.  I appreciate all of the users of the plugin that
found it useful.

I believe there are two pieces of functionality that do not currently have
a replacement:
1) ability to fail the task when a bad dependency resolution happens
2) exact instructions of what to place in project.clj to make things work

If you are interested in these, please let me know here, and I'll see about
adding them in a future leiningen release.

-
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




[ANN] peridot 0.2.1 released

2013-05-29 Thread Nelson Morris
I am happy to announce the release of peridot 0.2.1. peridot is a library
for interacting with ring apps while maintaining state between requests,
such as a cookie jar.  An example:

```
(- (session ring-app) ;Use your ring app
 (request /login :request-method :post
 :params {:username someone
   :password password})
(follow-redirect)
(request /tasks)
(request /tasks/create :request-method :post :params {:name
Groceries})
(request /tasks/1))
```

Recent changes include:

0.2.1 / 2013-5-29
Support lists in param maps (Glen Mailer, through work done in ring-mock)

0.2.0 / 2013-4-4
Use RFC822 or RFC850 for cookie expiration parsing (Glen Mailer)
Don't remove http-only cookines on https (Glen Mailer)

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: unusual question: how do you get morale?(or moral support)

2013-05-13 Thread Nelson Morris
Development for money isn't a problem for me, however dev for open source
can be problematic. The scarce resource for open source is mostly time,
though occasionally motivation becomes low. Contributions and projects
start off well, and energy might wane depending on time and life factors.
Even contributing to tools used by many of the members of the community,
like lein and clojars, doesn't prevent it. What helps is direct involvement
by someone else.  Maybe technomancy makes a commit in clojars and it sparks
me there for a couple weeks, or someone will have some problem with lein's
dependency stuff and I'll spend a few days to make it better. Hanging out
in irc sometimes helps, though it can also be a distraction.

Watching the small business software community from afar, I've seen several
people talk about how mastermind groups are helpful. It seems like a weekly
or bi-weekly call/hangout of 3-5 people who provide support and
accountability would be a decent hack for those that need some external
push.



On Sun, May 12, 2013 at 9:02 PM, Sean Corfield seancorfi...@gmail.comwrote:

 +100 :)

 I write code because I have to. If my job doesn't have me doing much
 programming, I spin up OSS projects in my spare time. When my job has
 me doing hardcore programming all the time, my urges are satisfied and
 my OSS projects don't get as much love. If my wife's away for the
 weekend, to fill the emptiness, I write code.

 My wife has several friends who are writers and artists and they all
 say the same thing: they write (or paint / draw) not because they want
 to, but because they have to - they're driven by some overwhelming
 need or desire.

 Like Tim tho', I know a lot of programmers who are not like that.
 For them, it's a job. When they go home, they don't think about it,
 they don't read technical books for fun, they don't write OSS. I'm
 just glad people are willing to pay me for something I'd have to do
 anyway to stay sane...

 Sean


 On Sun, May 12, 2013 at 4:03 PM, u1204 d...@axiom-developer.org wrote:
 Hi. I've been meaning to ask (all of)you, how do you get moral support?
 How
 do you put yourself into that mood so that you're happy/willing to
 program?
 What motivates you to do it? Is it the people you surround yourself with
 or
 the financial support? Are they enough to subconsciously motivate you?
 What
 if you had no friends/contacts but you had time?
 
  Unusual question for this ML, I know, so I won't expect (m)any answers.
 
  I can't answer for anyone else but, for me, it is simple.
  I don't program. I AM a programmer. It is a lot like being an artist,
  I guess. You see, think, and express in painting. Or a dancer.
  See Ken Robinson's TED talk and his story about the dancer's education.
  I see, think, and express myself in programs.
 
  I want a program that speaks the key letter when I hit a key because
  it is hard to type while driving. I want it to tell me what letter I
  just hit so I don't have to look. Driving wastes time.
 
  It is Sunday @ 6pm here and I've been coding since I woke up. Prior
  to that I coded just before I went to sleep (@5am this morning).
  I program because I breathe?
 
  I have a LONG list of programming projects I want to do and not enough
  time to do them. I'd like to have a group of people who would work with
  me on them. I've often joked that I'm in the market for a dozen
  foreign brides so I could teach them to program and help. Local laws
  seem to frown on multiple marriages of convenience unfortunately.
 
  I know a lot of people who program but I know very few programmers.
  They are easy to spot though. Just look for people who get fired up when
  the watch Rich Hickey's Are We There Yet video. Look for someone who
  thinks McDonalds is the canonical example of an operating system.
 
  We live in the first 60 years of a new science. Think big thoughts.
  Try to throw yourself at a problem that will consume the rest of your
  life. Think about your craft, understand where it has flaws, and try
  to convince people there is a better way. Clojure is one example.
  We won't mention literate programming.
 
  Rich is trying to make the language he needs to cleanly express what
  he wants to do and, as a side effect, he's changing the world around
  him. You can do that too.
 
  Grab the Firefox sources, strip out Javascript, replace it with
  Clojure. That would completely eliminate the need for ClojureScript and
  put you dead center in the pantheon of Clojure-ites. If we could open a
  new browser tab, type Clojure in it, and then use it to drive the GPU
  graphics hardware to present a new web page... that would be cool. We
  want to open a Clojure tab and have a REPL.  We want to drag-and-drop
  the Clojure Ants demo into a tab and see it run immediately, locally,
  and natively in the browser. Now we have Clojure everywhere on anything
  using everything. Big win. Now we can socket connect your browser to my
  browser and the whole world 

Re: login with friend, but username blank, despite keyword-params middleware in place

2013-04-30 Thread Nelson Morris
On Tue, Apr 30, 2013 at 10:57 AM, larry google groups 
lawrencecloj...@gmail.com wrote:


 This at least gets me a different error, which is good. But how did you
 know this? Where is this documented? Why does the order matter?



I knew this because the :params map had strings instead of keywords.

There is some documentation in the doc string for wrap-keyword-params:
https://github.com/mmcgrana/ring/blob/master/ring-core/src/ring/middleware/keyword_params.clj#L21
.

Order matters because:

(-  routes
  (wrap-keyword-params)
  (wrap-nested-params)
  (wrap-params))

becomes:

(wrap-params (wrap-nested-params (wrap-keyword-params routes))).

This creates a function that takes a ring request and returns a ring
response (a ring handler).  The functions get opportunities to changed the
ring request from outside-in. So wrap-params puts together the :params map
first, then wrap-nested-params gets to do its thing, then
wrap-keyword-params get to turn the :params keys from strings into
keywords, and finally the routes get to take the modified request map and
turn it into a ring response.  Changing the response map happens in
opposite order.

-
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: login with friend, but username blank, despite keyword-params middleware in place

2013-04-29 Thread Nelson Morris
The part of the middleware stack that looks like:

(- 
  (wrap-params)
  (wrap-nested-params)
  (wrap-keyword-params))

is in the wrong order.  It needs to be

(- 

  (wrap-keyword-params)
  (wrap-nested-params)
  (wrap-params))

The response having

 :params { nil, login_failed Y, username },

indicates that they are not being changed to keywords.  Since friend's
interactive-form workflow uses keywords to pull out the params,
it doesn't match and is constantly failing.

-
Nelson Morris



On Mon, Apr 29, 2013 at 4:20 PM, Chas Emerick c...@cemerick.com wrote:

 There's too much here for me to comb through.  A couple of things:

 https://friend-demo.herokuapp.com/interactive-form is a complete demo
 application that uses Friend's interactive-form workflow.  You might have
 seen this already; if not, it's a good starting point.

 Second, try adding a verbose logging middleware to your - form, e.g.

 (defn wrap-verbose
   [h]
   (fn [req]
 (println  req)
 (h req))

 (- ...
 wrap-verbose)

 You can move that wrap-verbose application around in your stack to see
 the state of the request map at different points.

 Hope that helps,

 - Chas

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: [ANN] stories - bdd lib for clojure

2013-04-28 Thread Nelson Morris
On Apr 28, 2013 1:26 AM, Michael Klishin michael.s.klis...@gmail.com
wrote:

 2013/4/28 Steven Degutis sbdegu...@gmail.com

 I'd put it on Clojars but I can't really figure out how to deal with
this gpg stuff. Seems way more complicated. Wish clojure had something
easier, like homebrew and melpa. But whatever.


 GPG signint is currently optional.

 lein do pom, jar
 scp pom.xml target/[library]-[version].jar cloj...@clojars.org:


 --
 MK

 http://github.com/michaelklishin
 http://twitter.com/michaelklishin

Using scp, or setting a releases repo to use :sign-releases false would
both bypass signatures.  However, they bare added as the first step to
being able to trust a build.

I would be very interested to hear more about what issues you've run into.
I'd also be interested to hear if
https://github.com/technomancy/leiningen/blob/stable/doc/GPG.md helps solve
any issues.

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Signing libraries on clojars

2013-04-05 Thread Nelson Morris
Yep.  There is an issue for making it work over scp, which the
lein-clojars plugin uses, at
https://github.com/ato/clojars-web/issues/118. Unfortunately the
commits mentioning they fix it are incorrect.

At the moment, `lein deploy clojars` is the way to send signatures.
This command is built in to lein 2.x.

-
Nelson

On Fri, Apr 5, 2013 at 8:35 PM, Phil Hagelberg p...@hagelb.org wrote:
 I'm not sure Clojars supports sending signatures over scp yet. You might
 need to do an HTTP deploy with `lein deploy`. The docs around this are a bit
 scarce; sorry about that.

 Phil

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Getting the right Clojure version with dependencies

2013-04-04 Thread Nelson Morris
The latest version of seesaw is 1.4.3.  Unfortunately there is a bug in
clojars with scp uploads that does not update the search index, so it is
showing an older version on the search page.

If you want seesaw 1.4.2 you can use  [seesaw 1.4.2 :exclusions
[org.clojure/clojure]].

If you are using lein 2.1.x you can use `lein deps :tree` and it should let
you know about any version ranges. They are usually the cause of dependency
issues like this.
On Apr 4, 2013 6:32 PM, Mark Engelberg mark.engelb...@gmail.com wrote:

 Right now, I'm experimenting with seesaw.  In Clojars, it appears the
 latest version is 1.4.2.

 When I include [seesaw 1.4.2] in my project.clj file, then the REPL
 comes up as 1.3.0 (even though I explicitly define clojure 1.5.1 as a
 dependency in the project.clj file).  How do I make my preferred clojure
 version take precedence over whatever seesaw is requesting?

 Thanks,

 Mark

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.




-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: ring reloading: IllegalStateException: identity already refers to: #'cemerick.friend/identity in namespace:

2013-03-24 Thread Nelson Morris
 In the application, I have  :use [cemerick.friend :as friend], where indeed
 a identity function is defined.

I think you want :refer here.

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: ring reloading: IllegalStateException: identity already refers to: #'cemerick.friend/identity in namespace:

2013-03-24 Thread Nelson Morris
Ack, I meant :require.

In your snippet you mention (:use [cemerick.friend :as friend]).  I
meant that you might want (:require [cemerick.friend :as friend])
instead.  I think
http://blog.8thlight.com/colin-jones/2010/12/05/clojure-libs-and-namespaces-require-use-import-and-ns.html
has been floating around as a good description of them.

On Sun, Mar 24, 2013 at 11:29 AM, Assen Kolov assen.ko...@gmail.com wrote:
 Thank you Nelson,

 Can you please explain exactly what refer you mean?  In the meanwhile
 [:refer-clojure :exclude [identity]]  fixed the problem.

 Regards,
 Assen

 On Sunday, 24 March 2013 16:43:39 UTC+1, Nelson Morris wrote:

  In the application, I have  :use [cemerick.friend :as friend], where
  indeed
  a identity function is defined.

 I think you want :refer here.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: question about clojure.lang.LazySeq.toString()

2013-03-22 Thread Nelson Morris
If I'm reading everything correctly:

1. Object 's .toString uses .hashCode()
2. LazySeq 's .hashCode() uses seq() which realizes a seq.
3. LazySeq 's .hashCode() calls .hashCode() on the realized seq
3. (map ..) creates a LazySeq with a fn to create (cons val (lazy-seq
(map f rest)))
4. (cons ... ...) creates a Cons
5. Cons uses Aseq's .hashcode() which traverses each object in the seq
and merges the hashcodes together.

A similar thing happens with a (range) as it builds a ChunkedCons
which also uses Aseq's hashcode.

On Fri, Mar 22, 2013 at 12:53 AM, Marko Topolnik
marko.topol...@gmail.com wrote:
 I am deeply puzzled abouth the behavior of .toString invocation on a lazy
 sequence.

 == (.getClass (map println (range 100)))
 clojure.lang.LazySeq
 == (.toString (map println (range 100)))
 ;; integers 0..100 printed
 clojure.lang.LazySeq@590b4b81

 It should be obvious from the output, but for the record: LazySeq doesn't
 override toString, so just the basic Java method is called. How can this
 possibly cause the sequence to be realized?

 Beyond my curiosity, however, what possible purpose could such behavior
 serve?

 -marko



 On Thursday, March 21, 2013 7:54:39 PM UTC+1, Razvan Rotaru wrote:

 Hi,

 I'm curious, why doesn't toString of clojure.lang.LazySeq return the
 entire sequence as a String, and returns the Java pointer instead? I find it
 annoying when I do this:


 user (str (map + [1 2 3]))
 clojure.lang.LazySeq@7861


 What's the reason behind this decision? Shouldn't toString trigger the
 evaluation of the sequence? Doesn't it do that for other values, like
 numbers and vectors?

 Is there an alternative to the code above (preferably simple and elegant),
 which will return the etire sequence?


 Thanks,
 Răzvan

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: question about clojure.lang.LazySeq.toString()

2013-03-22 Thread Nelson Morris
Found a post on clojure-dev about this
https://groups.google.com/forum/?fromgroups=#!topic/clojure-dev/F68GRPrbfWo

On Fri, Mar 22, 2013 at 1:29 AM, Nelson Morris nmor...@nelsonmorris.net wrote:
 If I'm reading everything correctly:

 1. Object 's .toString uses .hashCode()
 2. LazySeq 's .hashCode() uses seq() which realizes a seq.
 3. LazySeq 's .hashCode() calls .hashCode() on the realized seq
 3. (map ..) creates a LazySeq with a fn to create (cons val (lazy-seq
 (map f rest)))
 4. (cons ... ...) creates a Cons
 5. Cons uses Aseq's .hashcode() which traverses each object in the seq
 and merges the hashcodes together.

 A similar thing happens with a (range) as it builds a ChunkedCons
 which also uses Aseq's hashcode.

 On Fri, Mar 22, 2013 at 12:53 AM, Marko Topolnik
 marko.topol...@gmail.com wrote:
 I am deeply puzzled abouth the behavior of .toString invocation on a lazy
 sequence.

 == (.getClass (map println (range 100)))
 clojure.lang.LazySeq
 == (.toString (map println (range 100)))
 ;; integers 0..100 printed
 clojure.lang.LazySeq@590b4b81

 It should be obvious from the output, but for the record: LazySeq doesn't
 override toString, so just the basic Java method is called. How can this
 possibly cause the sequence to be realized?

 Beyond my curiosity, however, what possible purpose could such behavior
 serve?

 -marko



 On Thursday, March 21, 2013 7:54:39 PM UTC+1, Razvan Rotaru wrote:

 Hi,

 I'm curious, why doesn't toString of clojure.lang.LazySeq return the
 entire sequence as a String, and returns the Java pointer instead? I find it
 annoying when I do this:


 user (str (map + [1 2 3]))
 clojure.lang.LazySeq@7861


 What's the reason behind this decision? Shouldn't toString trigger the
 evaluation of the sequence? Doesn't it do that for other values, like
 numbers and vectors?

 Is there an alternative to the code above (preferably simple and elegant),
 which will return the etire sequence?


 Thanks,
 Răzvan

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Wrong clojure version depending on lein dependencies (was: ANN: Clojure 1.5)

2013-03-20 Thread Nelson Morris
In lein 2.1 using `lein deps :tree` will print out any version ranges
it finds. Hopefully this helps with when noticing similar dependency
issues.

On Sat, Mar 2, 2013 at 5:42 PM, Nelson Morris nmor...@nelsonmorris.net wrote:
 On Sat, Mar 2, 2013 at 4:17 PM, Frank Siebenlist
 frank.siebenl...@gmail.com wrote:
 ...
 The chain causing problems for you is:

 [clj-ns-browser 1.3.0] - [seesaw 1.4.2] - [j18n 1.0.1] -
 [org.clojure/clojure [1.2,1.5)]

 The last one there allows clojure below 1.5, which includes -RC17.  As
 soon as you bump to to 1.5 it ignores the soft version in your
 :dependencies, and chooses one in the range based on your other
 dependencies.

 You should just need the :exclusion in clj-ns-browser.

 -
 Nelson Morris

 As i'm responsible for the clj-ns-browser release...
 And although the dependency issue seems another 2 levels down, can i specify 
 anything differently in my project file to prevent this?

 You could add the a similar exclusion for org.clojure/clojure in the
 seesaw dependency declaration, but I'd just wait for the next seesaw
 release which will handle it.


 Or is this a bug in leiningen's dependency resolution?


 Unfortunately it's behaviour defined by maven.  In order to be
 compatible lein has to do the same thing.

 I've written up a few things about version ranges at
 http://nelsonmorris.net/2012/07/31/do-not-use-version-ranges-in-project-clj.html
 and in some other mailing list threads.  The confusion about what can
 happen with dependencies led me to make
 https://github.com/xeqi/lein-pedantic, which is helpful for some
 cases.  In addition, I hope to get some easier debugging for this case
 into lein itself; issues at:
 https://github.com/technomancy/leiningen/issues/734 and
 https://github.com/cemerick/pomegranate/issues/54

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Wrong clojure version depending on lein dependencies (was: ANN: Clojure 1.5)

2013-03-02 Thread Nelson Morris
On Sat, Mar 2, 2013 at 4:17 PM, Frank Siebenlist
frank.siebenl...@gmail.com wrote:
 ...
 The chain causing problems for you is:

 [clj-ns-browser 1.3.0] - [seesaw 1.4.2] - [j18n 1.0.1] -
 [org.clojure/clojure [1.2,1.5)]

 The last one there allows clojure below 1.5, which includes -RC17.  As
 soon as you bump to to 1.5 it ignores the soft version in your
 :dependencies, and chooses one in the range based on your other
 dependencies.

 You should just need the :exclusion in clj-ns-browser.

 -
 Nelson Morris

 As i'm responsible for the clj-ns-browser release...
 And although the dependency issue seems another 2 levels down, can i specify 
 anything differently in my project file to prevent this?

You could add the a similar exclusion for org.clojure/clojure in the
seesaw dependency declaration, but I'd just wait for the next seesaw
release which will handle it.


 Or is this a bug in leiningen's dependency resolution?


Unfortunately it's behaviour defined by maven.  In order to be
compatible lein has to do the same thing.

I've written up a few things about version ranges at
http://nelsonmorris.net/2012/07/31/do-not-use-version-ranges-in-project-clj.html
and in some other mailing list threads.  The confusion about what can
happen with dependencies led me to make
https://github.com/xeqi/lein-pedantic, which is helpful for some
cases.  In addition, I hope to get some easier debugging for this case
into lein itself; issues at:
https://github.com/technomancy/leiningen/issues/734 and
https://github.com/cemerick/pomegranate/issues/54

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Wrong clojure version depending on lein dependencies (was: ANN: Clojure 1.5)

2013-03-01 Thread Nelson Morris
On Fri, Mar 1, 2013 at 1:24 PM, Tassilo Horn t...@gnu.org wrote:
 Michael Klishin michael.s.klis...@gmail.com writes:

 2013/3/1 Tassilo Horn t...@gnu.org

 So to summarize:

   clj 1.5.0-RC17 + ordered 1.3.2 = clj 1.5.0-RC17 is used
   clj 1.5.0  + ordered 1.3.2 = clj 1.4.0 is used
   clj 1.5.0 no ordered 1.3.2 = clj 1.3.0 is used

 Can anymone make sense of that?

 This reminds me of
 https://github.com/technomancy/leiningen/issues/1035

 Yes, this sounds very similar.  And the report also contains a fix: just
 put

   :exclusions [org.clojure/clojure]

 in every dependency that defines its own clojure dependency.

 Maybe we can start another thread for this issue, though?
 Doesn't seem to be Clojure 1.5's fault.

 Indeed.  If anybody is interested in playing around with this issue,
 here's a cut-down version of my project.clj to reproduce it.

 --8---cut here---start-8---
 (defproject foo 0.1.0-SNAPSHOT
   :dependencies [[org.clojure/clojure 1.5.0]
  [org.clojure/core.logic 0.8.0-rc2]
  [ordered 1.3.2]
  [org.clojure/tools.macro 0.1.2]]
   :profiles {:dev
  {:dependencies
   [[criterium 0.3.1] ;; Benchmarking
[clj-ns-browser 1.3.0]]}})
 --8---cut here---end---8---

 Bye,
 Tassilo

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your 
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups 
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



The chain causing problems for you is:

[clj-ns-browser 1.3.0] - [seesaw 1.4.2] - [j18n 1.0.1] -
[org.clojure/clojure [1.2,1.5)]

The last one there allows clojure below 1.5, which includes -RC17.  As
soon as you bump to to 1.5 it ignores the soft version in your
:dependencies, and chooses one in the range based on your other
dependencies.

You should just need the :exclusion in clj-ns-browser.

-
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Unable to Authenticate via Friend + Interactive Form Workflow

2013-02-20 Thread Nelson Morris
On Wed, Feb 20, 2013 at 2:48 PM, Ari ari.brandeis.k...@gmail.com wrote:
 Hi,

 I'm trying to incorporate authentication via the interactive form workflow;
 however, I'm currently unable to receive submitted credentials for
 verification. When I submit the sign-in form that has it's action bound to
 /login, I get Page not found as per my default route below. I've
 included the relevant code below; does anyone see anything wrong?

 Note: For the first go-around I opted for a dummy in-memory user db. I'm
 also using compojure, ring-anti-forgery and shoreleave-remote.

 (defroutes paths
   (GET /home [] (friend/authorize #{::user} views/home))
   (GET / [] (views/welcome))
   (friend/logout (ANY /sign-out request (ring.util.response/redirect
 /)))
   (route/resources /)
   (route/not-found Page not found))

 (def app
   (- paths
   (friend/authenticate {:credential-fn (partial
 credentials/bcrypt-credential-fn users)
 :workflows [(workflows/interactive-form)]
 :login-uri /})
   (wrap-anti-forgery)
   (wrap-rpc)
   (handler/site)))

Passing a :login-uri causes workflows/interactive-from to change what
uri it checks for.  Given the setup above the login form needs to post
to /.

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: kerodon tests explode on lazyseq (session app)

2013-02-19 Thread Nelson Morris
It was a bug in kerodon that happens when a ring response has a :body
that is a not a string (in this case a lazyseq). Reported and fixed by
Travis Vachon at https://github.com/xeqi/kerodon/pull/6, I just had
lost track of making a release for it.

Fixed as part of [kerodon 0.1.0].


On Tue, Feb 19, 2013 at 4:37 PM, AtKaaZ atk...@gmail.com wrote:
 oh sorry I meant:
 = (doall 1)
 IllegalArgumentException Don't know how to create ISeq from: java.lang.Long
 clojure.lang.RT.seqFrom (RT.java:505)
 clojure.lang.RT.seq (RT.java:486)
 clojure.core/seq (core.clj:133)
 clojure.core/dorun (core.clj:2780)
 clojure.core/doall (core.clj:2796)


 On Tue, Feb 19, 2013 at 11:36 PM, AtKaaZ atk...@gmail.com wrote:

 = (dorun 1)
 IllegalArgumentException Don't know how to create ISeq from:
 java.lang.Long  clojure.lang.RT.seqFrom (RT.java:505)
 nil
 IllegalArgumentException Don't know how to create ISeq from:
 java.lang.Long
 clojure.lang.RT.seqFrom (RT.java:505)
 clojure.lang.RT.seq (RT.java:486)
 clojure.core/seq (core.clj:133)
 clojure.core/dorun (core.clj:2780)
 random.learning.backtick.backtick1/eval2879 (NO_SOURCE_FILE:1)


 On Tue, Feb 19, 2013 at 11:30 PM, larry google groups
 lawrencecloj...@gmail.com wrote:

 Hmm, even stranger. If I wrap app in doall in an attempt to make the
 lazyseq error go away, I get:

 ERROR in (anyone-can-view-frontpage) (RT.java:494)
 Uncaught exception, not in assertion.
 expected: nil
   actual: java.lang.IllegalArgumentException: Don't know how to create
 ISeq from: ring.middleware.cookies$wrap_cookies$fn__1637
  at clojure.lang.RT.seqFrom (RT.java:494)
 clojure.lang.RT.seq (RT.java:475)
 clojure.core$seq.invoke (core.clj:133)
 clojure.core$dorun.invoke (core.clj:2725)
 clojure.core$doall.invoke (core.clj:2741)
 mpdv_clojure.core_test/fn (core_test.clj:13)


 On Feb 19, 2:24 pm, larry google groups lawrencecloj...@gmail.com
 wrote:
  I was trying to follow this video, which adds some nice tests for
  Friend:
 
  http://www.clojurewebdevelopment.com/videos/friend-interactive-form
 
  But Kerodon gives me an error, and points to line 13 of my test code:
 
  ERROR in (anyone-can-view-frontpage) (impl.clj:73)
  Uncaught exception, not in assertion.
  expected: nil
actual: java.lang.ClassCastException: clojure.lang.LazySeq cannot be
  cast to java.lang.String
   at kerodon.impl$include_parse.invoke (impl.clj:73)
  kerodon.core$visit.doInvoke (core.clj:8)
  clojure.lang.RestFn.invoke (RestFn.java:423)
  mpdv_clojure.core_test/fn (core_test.clj:13)
 
  But line 13 starts with the first inside line of this function:
 
  (deftest anyone-can-view-frontpage
(- (session app)
(visit  /)
(has (text? Hello World
 
  And I think my definition of app is fairly straightforward:
 
  (defroutes app-routes
(ANY / request (index request))
(GET /section/ request (section request))
(GET /admin request (friend/authorize #{::admin} (admin request)))
(GET /login request (login request))
(friend/logout (GET /logout _ (ring.util.response/redirect /)))
(GET /ok request (ok request))
(route/resources /)
(route/not-found Page not found))
 
  (def app
(- app-routes
(friend/authenticate
 {:workflows [(workflows/interactive-form)]
  :credential-fn (partial credentials/bcrypt-credential-fn
  users)})
handler/site))
 
  Can anyone tell me where I went wrong?
 
  Please note, Friend is working great for this app -- it correctly
  protects a page until I supply the correct username/password. The
  problem I have here is with Kerodon, not Friend.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.





 --
 Please correct me if I'm wrong or incomplete,
 even if you think I'll subconsciously hate it.




 --
 Please correct me if I'm wrong or incomplete,
 even if you think I'll subconsciously hate it.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

Re: why did lein just download Clojure 1.5?

2013-02-19 Thread Nelson Morris
Basically, yes.  They left a version range.  Aether (which lein and
maven use underneath) will download all the poms in the range before
making a decision.

On Tue, Feb 19, 2013 at 1:28 PM, larry google groups
lawrencecloj...@gmail.com wrote:
 If I understand that, then, if one of my dependencies left their
 version of Clojure unspecified, then lein will download all the poms
 and then decide which jar to use?


 On Feb 19, 2:15 pm, AtKaaZ atk...@gmail.com wrote:
 ok I found the 
 log:http://www.raynes.me/logs/irc.freenode.net/leiningen/2013-02-01.txt









 On Tue, Feb 19, 2013 at 8:05 PM, AtKaaZ atk...@gmail.com wrote:
  could've been someone else with the same problem, sorry for implying.
  I do remember something about ring having an ) for clojure 1.5.0 and the
  projects.clj file was:
  {:user {:plugins [[lein-swank 1.4.4]
[lein-catnip 0.5.0]]}

  :dev {:dependencies [[clj-ns-browser 1.2.0]
[org.clojure/tools.trace 0.7.5]]}

}

  On Tue, Feb 19, 2013 at 7:55 PM, larry google groups 
  lawrencecloj...@gmail.com wrote:

   I think we solved this once on irc and it was something in your
  project*s*.clj
   but I can't remember exactly, if you want you can post its contents...

  I have never been on the irc channel, so that wasn't me.

  On Feb 19, 12:09 pm, AtKaaZ atk...@gmail.com wrote:
   I think we solved this once on irc and it was something in your
  project*s*.clj
   but I can't remember exactly, if you want you can post its contents...

   Cheers

   On Tue, Feb 19, 2013 at 5:49 PM, larry google groups 

   lawrencecloj...@gmail.com wrote:
Thanks for the suggestion. I run lein deps :tree but I do not see
Clojure 1.5 listed as a dependency anywhere. But if I run:

lein uberjar

I get a lot of clojure-1.5.pom's getting downloaded. Does anyone know
why I get so many of these? As I said before, I am using Clojure 1.4.
Clojure 1.5 is not mentioned anywhere in my project.

Retrieving org/clojure/clojure/1.5.0-beta7/clojure-1.5.0-beta7.pom
from central
Retrieving org/clojure/clojure/1.5.0-beta8/clojure-1.5.0-beta8.pom
from central
Retrieving org/clojure/clojure/1.5.0-beta9/clojure-1.5.0-beta9.pom
from central
Retrieving org/clojure/clojure/1.5.0-beta10/clojure-1.5.0-beta10.pom
from central
Retrieving org/clojure/clojure/1.5.0-beta11/clojure-1.5.0-beta11.pom
from central
Retrieving org/clojure/clojure/1.5.0-beta12/clojure-1.5.0-beta12.pom
from central
Retrieving org/clojure/clojure/1.5.0-beta13/clojure-1.5.0-beta13.pom
from central
Retrieving org/clojure/clojure/1.5.0-RC5/clojure-1.5.0-RC5.pom from
central
Retrieving org/clojure/clojure/1.5.0-RC6/clojure-1.5.0-RC6.pom from
central
Retrieving org/clojure/clojure/1.5.0-RC14/clojure-1.5.0-RC14.pom from
central
Retrieving org/clojure/clojure/1.5.0-RC15/clojure-1.5.0-RC15.pom from
central
Retrieving org/clojure/clojure/1.5.0-RC16/clojure-1.5.0-RC16.pom from
central
 ;;; more files here

On Jan 30, 2:42 am, Sean Corfield seancorfi...@gmail.com wrote:
 Try:
 lein deps :tree

 It sounds like one of your dependencies uses ranges?

 Sean

 On Tue, Jan 29, 2013 at 9:16 PM, larry google groups

 lawrencecloj...@gmail.com wrote:
  Very strange. I just switched back to my home computer. I wanted
  to
  get all the work I had done at work this last week, so I did git
  pull
  origin master to pull it down from github. I have not used my
  home
  computer in a week. Then I ran lein uberjar:

  lein uberjar
  Retrieving org/clojure/clojure/1.5.0-RC4/clojure-1.5.0-RC4.pom
  from
  central
  Compiling kiosks-clojure.core
  Created
  /Users/lner/projects/timeout_planning_module/target/kiosks-
  clojure-0.1.jar
  Including kiosks-clojure-0.1.jar
  Including jsr305-1.3.9.jar
  ;;
  ;; much more here
  ;;

  Why did lein just retrieve Clojure1.5.0-RC4? My project.clj file
  reads:

:dependencies [[org.clojure/clojure 1.4.0]
  ;; plus much more

  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient
with your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
Groups Clojure group.
  To unsubscribe from this group and stop receiving emails from it,
  send
an email to clojure+unsubscr...@googlegroups.com.
  For more options, visithttps://groups.google.com/groups/opt_out.

 --
 Sean A Corfield -- (904) 302-SEAN
 

Re: why did lein just download Clojure 1.5?

2013-02-19 Thread Nelson Morris
The dependency with the version range is [enlive 1.0.1].  You can
either add an exclusion, or update to [enlive 1.1.0] which does not
have a version range. https://github.com/cgrand/enlive/issues/37.

There are some changes that need to happen to pomegranate and then
I'll make a better way to debug this. Tracking at
https://github.com/technomancy/leiningen/issues/734, planned for 2.1.

On Tue, Feb 19, 2013 at 12:59 PM, larry google groups
lawrencecloj...@gmail.com wrote:


 On Feb 19, 12:25 pm, Phil Hagelberg p...@hagelb.org wrote:
 larry google groups writes:
  Thanks for the suggestion. I run lein deps :tree but I do not see
  Clojure 1.5 listed as a dependency anywhere. But if I run:

 Some unfortunate dependency is declaring a version range dependency on
 Clojure. If you can figure out which one it is, you should report it as
 a bug in that library, because there is no good reason to do that.

 If I do this:

  lein deps :tree


 I get:


  [clj-time 0.4.4]
[joda-time 2.1]
  [clj-yaml 0.4.0]
[org.yaml/snakeyaml 1.5]
  [com.cemerick/friend 0.1.3]
[com.google.inject/guice 2.0]
  [aopalliance 1.0]
[commons-codec 1.6]
[net.sourceforge.nekohtml/nekohtml 1.9.10]
  [xerces/xercesImpl 2.8.1]
[xml-apis 1.3.03]
[org.apache.httpcomponents/httpclient 4.2.1]
  [org.apache.httpcomponents/httpcore 4.2.1]
[org.clojure/core.cache 0.6.2]
[org.mindrot/jbcrypt 0.3m]
[org.openid4java/openid4java-nodeps 0.9.6 :exclusions
 [[com.google.code.guice/guice]]]
  [commons-logging 1.1.1]
  [net.jcip/jcip-annotations 1.0]
[robert/hooke 1.1.2]
[slingshot 0.10.2]
  [com.draines/postal 1.9.1]
  [com.novemberain/monger 1.4.2]
[clojurewerkz/support 0.10.0]
  [com.google.guava/guava 12.0]
[com.google.code.findbugs/jsr305 1.3.9]
[com.novemberain/validateur 1.2.0]
[org.mongodb/mongo-java-driver 2.10.1]
[ragtime/ragtime.core 0.3.0]
  [org.clojure/tools.cli 0.2.2]
  [com.taoensso/timbre 1.2.0]
[clj-stacktrace 0.2.5]
  [compojure 1.1.5]
[clout 1.0.1]
[org.clojure/core.incubator 0.1.0]
[org.clojure/tools.macro 0.1.0]
  [enlive 1.0.1]
[org.ccil.cowan.tagsoup/tagsoup 1.2]
  [friend-oauth2 0.0.2 :exclusions [[com.cemerick/friend]]]
[cheshire 4.0.2]
  [com.fasterxml.jackson.core/jackson-core 2.0.5]
  [com.fasterxml.jackson.dataformat/jackson-dataformat-smile
 2.0.5]
[clj-http 0.5.3]
  [org.apache.httpcomponents/httpmime 4.2.1]
  [fs 1.3.2]
[org.apache.commons/commons-compress 1.3]
  [kerodon 0.0.7]
[peridot 0.0.6]
  [org.clojure/data.codec 0.1.0]
  [ring-mock 0.1.3]
  [mysql/mysql-connector-java 5.1.6]
  [org.apache.commons/commons-email 1.3]
[javax.activation/activation 1.1.1]
[javax.mail/mail 1.4.5]
  [org.clojure/clojure 1.4.0]
  [org.clojure/data.json 0.2.0]
  [org.clojure/data.xml 0.0.6]
  [org.clojure/java.jdbc 0.2.3]
  [ring/ring-jetty-adapter 1.1.5]
[org.eclipse.jetty/jetty-server 7.6.1.v20120215]
  [org.eclipse.jetty.orbit/javax.servlet 2.5.0.v201103041518]
  [org.eclipse.jetty/jetty-continuation 7.6.1.v20120215]
  [org.eclipse.jetty/jetty-http 7.6.1.v20120215]
[org.eclipse.jetty/jetty-io 7.6.1.v20120215]
  [org.eclipse.jetty/jetty-util 7.6.1.v20120215]
  [ring 1.1.5]
[ring/ring-core 1.1.5]
  [commons-fileupload 1.2.1]
  [commons-io 2.1]
  [javax.servlet/servlet-api 2.5]
[ring/ring-devel 1.1.5]
  [hiccup 1.0.0]
  [ns-tracker 0.1.2]
[org.clojure/java.classpath 0.2.0]
[org.clojure/tools.namespace 0.1.3]
[ring/ring-servlet 1.1.5]


 I do not see the dependency that is causing the problem.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your 
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups 
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to 

Re: why did lein just download Clojure 1.5?

2013-02-19 Thread Nelson Morris
While [enlive 1.1.0] does have the range removed, it looks like
[enlive 1.1.1] is the latest.

On Wed, Feb 20, 2013 at 12:13 AM, Nelson Morris
nmor...@nelsonmorris.net wrote:
 The dependency with the version range is [enlive 1.0.1].  You can
 either add an exclusion, or update to [enlive 1.1.0] which does not
 have a version range. https://github.com/cgrand/enlive/issues/37.

 There are some changes that need to happen to pomegranate and then
 I'll make a better way to debug this. Tracking at
 https://github.com/technomancy/leiningen/issues/734, planned for 2.1.

 On Tue, Feb 19, 2013 at 12:59 PM, larry google groups
 lawrencecloj...@gmail.com wrote:


 On Feb 19, 12:25 pm, Phil Hagelberg p...@hagelb.org wrote:
 larry google groups writes:
  Thanks for the suggestion. I run lein deps :tree but I do not see
  Clojure 1.5 listed as a dependency anywhere. But if I run:

 Some unfortunate dependency is declaring a version range dependency on
 Clojure. If you can figure out which one it is, you should report it as
 a bug in that library, because there is no good reason to do that.

 If I do this:

  lein deps :tree


 I get:


  [clj-time 0.4.4]
[joda-time 2.1]
  [clj-yaml 0.4.0]
[org.yaml/snakeyaml 1.5]
  [com.cemerick/friend 0.1.3]
[com.google.inject/guice 2.0]
  [aopalliance 1.0]
[commons-codec 1.6]
[net.sourceforge.nekohtml/nekohtml 1.9.10]
  [xerces/xercesImpl 2.8.1]
[xml-apis 1.3.03]
[org.apache.httpcomponents/httpclient 4.2.1]
  [org.apache.httpcomponents/httpcore 4.2.1]
[org.clojure/core.cache 0.6.2]
[org.mindrot/jbcrypt 0.3m]
[org.openid4java/openid4java-nodeps 0.9.6 :exclusions
 [[com.google.code.guice/guice]]]
  [commons-logging 1.1.1]
  [net.jcip/jcip-annotations 1.0]
[robert/hooke 1.1.2]
[slingshot 0.10.2]
  [com.draines/postal 1.9.1]
  [com.novemberain/monger 1.4.2]
[clojurewerkz/support 0.10.0]
  [com.google.guava/guava 12.0]
[com.google.code.findbugs/jsr305 1.3.9]
[com.novemberain/validateur 1.2.0]
[org.mongodb/mongo-java-driver 2.10.1]
[ragtime/ragtime.core 0.3.0]
  [org.clojure/tools.cli 0.2.2]
  [com.taoensso/timbre 1.2.0]
[clj-stacktrace 0.2.5]
  [compojure 1.1.5]
[clout 1.0.1]
[org.clojure/core.incubator 0.1.0]
[org.clojure/tools.macro 0.1.0]
  [enlive 1.0.1]
[org.ccil.cowan.tagsoup/tagsoup 1.2]
  [friend-oauth2 0.0.2 :exclusions [[com.cemerick/friend]]]
[cheshire 4.0.2]
  [com.fasterxml.jackson.core/jackson-core 2.0.5]
  [com.fasterxml.jackson.dataformat/jackson-dataformat-smile
 2.0.5]
[clj-http 0.5.3]
  [org.apache.httpcomponents/httpmime 4.2.1]
  [fs 1.3.2]
[org.apache.commons/commons-compress 1.3]
  [kerodon 0.0.7]
[peridot 0.0.6]
  [org.clojure/data.codec 0.1.0]
  [ring-mock 0.1.3]
  [mysql/mysql-connector-java 5.1.6]
  [org.apache.commons/commons-email 1.3]
[javax.activation/activation 1.1.1]
[javax.mail/mail 1.4.5]
  [org.clojure/clojure 1.4.0]
  [org.clojure/data.json 0.2.0]
  [org.clojure/data.xml 0.0.6]
  [org.clojure/java.jdbc 0.2.3]
  [ring/ring-jetty-adapter 1.1.5]
[org.eclipse.jetty/jetty-server 7.6.1.v20120215]
  [org.eclipse.jetty.orbit/javax.servlet 2.5.0.v201103041518]
  [org.eclipse.jetty/jetty-continuation 7.6.1.v20120215]
  [org.eclipse.jetty/jetty-http 7.6.1.v20120215]
[org.eclipse.jetty/jetty-io 7.6.1.v20120215]
  [org.eclipse.jetty/jetty-util 7.6.1.v20120215]
  [ring 1.1.5]
[ring/ring-core 1.1.5]
  [commons-fileupload 1.2.1]
  [commons-io 2.1]
  [javax.servlet/servlet-api 2.5]
[ring/ring-devel 1.1.5]
  [hiccup 1.0.0]
  [ns-tracker 0.1.2]
[org.clojure/java.classpath 0.2.0]
[org.clojure/tools.namespace 0.1.3]
[ring/ring-servlet 1.1.5]


 I do not see the dependency that is causing the problem.

 --
 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your 
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en
 ---
 You received this message because you are subscribed to the Google Groups 
 Clojure group.
 To unsubscribe from this group and stop receiving emails from it, send an 
 email to clojure+unsubscr...@googlegroups.com.
 For more options, visit https://groups.google.com/groups/opt_out.



-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received

screencast: friend and creating a login form

2013-01-29 Thread Nelson Morris
I've released a screencast on friend and using its interactive-form
workflow to create a login form.
http://www.clojurewebdevelopment.com/videos/friend-interactive-form

I've got more in various stages of completion, so I'd be interested in
hearing feedback.

Thanks,
Nelson Morris

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.




Re: Current 'best practice' stack for CRUD website?

2013-01-20 Thread Nelson Morris
On Sun, Jan 20, 2013 at 8:55 AM, Shantanu Kumar
kumar.shant...@gmail.com wrote:
 I really like Enlive, with its very clear separation of logic and
 presentation. Are there any other libraries I should be looking at at the
 templating layer, or is Enlive currently the one to go for?

 Enlive and Hiccup seem to be popular in the Clojure community. There
 are also ClojureScript versions[1][2][3] of these templating libraries
 that you may like to check out as Josh Kamau mentioned. There are also
 Clojure implementations[4][5] of Mustache[6].

 [1] Enfocus: https://github.com/ckirkendall/enfocus
 [2] Crate: https://github.com/ibdknox/crate
 [3] Dommy: https://github.com/Prismatic/dommy
 [4] Clostache: https://github.com/fhd/clostache
 [5] Stencil: https://github.com/davidsantiago/stencil
 [6] Mustache: http://mustache.github.com/

 Another Clojure templating library you may like to look at is Basil:
 https://github.com/kumarshantanu/basil (Disclaimer: I am the author of
 Basil.) It is a general purpose, conventional templating library for
 Clojure(JVM) and ClojureScript. Though it's in early stage at the
 moment and lacks features like nesting, template macros, realized
 fragments etc, it may still be useful for some projects.


I'll add a plug for https://github.com/Raynes/laser for templating.
Its similar to enlive.

Also there is the luminus template.  http://www.luminusweb.net/  It's
trying to help solve the what default stack and libraries do I use?
problem by providing a starting place.

One place to look for latest versions of libraries is clojars.
https://clojars.org/enlive indicates that the latest version of enlive
is 1.0.1.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: ring-form-authentication - something between a library and scaffolding for form based authentication

2013-01-20 Thread Nelson Morris
On Sun, Jan 20, 2013 at 12:13 PM, Zbigniew Łukasiak zzb...@gmail.com wrote:
 I have not seen something like that in Clojure - so as my first coding
 excercise in Clojure I've started porting my Perl library.

 https://github.com/zby/ring-form-authentication

 Quoting the README:

 It lets you quickly add to your application /login and /logout pages
 pluss all the redirects and session management needed.

 It is a Ring based middleware.

 After the user has authenticated the session keeps his userid and the
 application can check it for authorization:
 (if (get (get request :session) :userid )

 See example application in src/ring_form_authentication/example.clj

 This is very EXPERIMENTAL - it is my first code in Clojure.

 Any comments are welcome.  I really just started learning Clojure and I have
 not yet managed to read about all the language features.

 Cheers,
 Zbigniew

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

Looks like a good example as a middleware for protecting everything
behind the page with a prebuilt form.

Style wise, there are some nested `let`s and `or`s that could be
collapsed.  `use` is usually done with `:use` in the `ns` definition.
Some functions that could be helpful include `if-let` and `get-in`.

Usually middleware is written with the assumption that any required
middleware has already been applied.  This lets the user handle if
they want any other middleware in between, or if the
wrap-session/wrap-params should apply to the entire routing space, but
the form authentication only to a subset.

The use of `:session` in the response maps needs to copy over and
alter the sessions from the request map.  Otherwise it will lose
session data from other middleware, or even the app.

Have you seen friend and its interactive-form workflow?
https://github.com/cemerick/friend/

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: [ANN] Clojars Releases repository

2012-11-18 Thread Nelson Morris
I've just deployed a new clojars version.  The previous one was a bit
strict on the whitespace (thanks Lee Hinman).

Make sure to include both the -BEGIN PGP PUBLIC KEY BLOCK-
and -END PGP PUBLIC KEY BLOCK-.

-
Nelson Morris

On Sun, Nov 18, 2012 at 8:21 AM, Jim - FooBar(); jimpil1...@gmail.com wrote:
 Followed the instructions below exactly but clojars says 'Invalid PGP public
 key'...

 any clues?

 Jim


 On 18/11/12 13:56, Phil Hagelberg wrote:

 If you don't have a key yet, generate one with `gpg --gen-key`. The
 default settings are pretty good, though I'd recommend making it expire
 in a year or two. Next find your key ID. It's the 8-character part after
 the slash on the line beginning with pub:

  $ gpg --list-keys

  
  pub   2048R/77E77DDC 2011-07-17 [expires: 2014-07-16]
  uid  Phil Hagelbergtechnoma...@gmail.com
  sub   2048R/39EFEE7D 2011-07-17

 Then you can show it with `gpg --export -a $KEY_ID`. Grab that
 (including the -BEGIN PGP PUBLIC KEY BLOCK- parts) and paste
 it into your Clojars profile.

 Once you have done this you can redeploy to trigger promotion to the
 releases repo if your jar is qualified, or you can visit the jar page in
 the Clojars web UI (while logged in) to see if there are reasons it's
 not qualified.


 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: [ANN] Clojars Releases repository

2012-11-18 Thread Nelson Morris
The Invalid anti-forgery token message is a unfortunate side effect
of interaction with sessions and restarting the server.  It should
disappear if the profile page is refreshed.

enclog 0.5.8 appears in the releases repo, so everything is ok.  I
have a theory as to why that message occurred and will see what I can
track down for the future.  Unfortunately, I'd expect a possibility of
this occurring for any redeployment of artifacts with signatures
already in the classic repo.

Thanks for signing and feedback about the issues.

On Sun, Nov 18, 2012 at 8:57 AM, Jim - FooBar(); jimpil1...@gmail.com wrote:
 Ok I managed to push my jar successfully, but i got this at the end:

 Could not transfer artifact enclog:enclog:pom:0.5.8 from/to clojars
 (https://clojars.org/repo/): Access denied to:
 https://clojars.org/repo/enclog/enclog/0.5.8/enclog-0.5.8.pom,
 ReasonPhrase:Forbidden.
 Failed to deploy artifacts: Could not transfer artifact
 enclog:enclog:pom:0.5.8 from/to clojars (https://clojars.org/repo/): Access
 denied to: https://clojars.org/repo/enclog/enclog/0.5.8/enclog-0.5.8.pom,
 ReasonPhrase:Forbidden.

 Is this important?

 Jim


 On 18/11/12 14:46, Jim - FooBar(); wrote:

 On 18/11/12 14:39, Nelson Morris wrote:

 The previous one was a bit
 strict on the whitespace


 I just pasted the same with no wxtra white-space and now I'm getting

 Invalid anti-forgery token

 my god what is happening?

 Jim



 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: [ANN] Clojars Releases repository

2012-11-18 Thread Nelson Morris
Yeah, i had checked the releases not expected the classic repo to
loose it.  Fixed manually.

On Sun, Nov 18, 2012 at 10:20 AM, Jim - FooBar(); jimpil1...@gmail.com wrote:
 On 18/11/12 15:14, Nelson Morris wrote:

 enclog 0.5.8 appears in the releases repo, so everything is ok.


 No, unfortunately everything is not ok...fetching the jar from a project
 results in:


 Could not transfer artifact enclog:enclog:pom:0.5.8 from/to clojars
 (https://clojars.org/repo/): Checksum validation failed, no checksums
 available from the repository
 Check :dependencies and :repositories for typos.
 It's possible the specified jar is not in any repository.
 If so, see Free-floating Jars under http://j.mp/repeatability
 etc etc (exceptions)


 Jim


 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: ClojureScript and development workflow

2012-09-10 Thread Nelson Morris
I've also been using lein-cljsbuild to compile an initial js for page
load, and piggieback for interactive dev.

I did need to make a fork of nrepl.el that used an :op load-file to
be able to C-c C-k a buffer and load it in the background.  Working on
getting that into master.

On Mon, Sep 10, 2012 at 12:11 PM, Chas Emerick c...@cemerick.com wrote:
 I've been using a combination of lein-cljsbuild to keep the on-disk
 generated code fresh and piggieback[1] for all of my cljs REPL needs.

 Cheers,

 - Chas

 [1] https://github.com/cemerick/piggieback

 On Sep 10, 2012, at 12:28 PM, Laurent PETIT wrote:

 Hello,

 A ClojureScript workflow newbie question.

 People seem to be using a lot lein-cljsbuild to work with their
 ClojureScript project.

 From what I understand, this means they have a watcher which recompiles
 javascript in the background whenever they save changes to clojurescript
 files to the disk.
 Thus, this means that whenever they make a change, they have to restart the
 application (e.g. refresh the browser).

 Is that the end of the story with lein-cljs ? (wrt development workflow ?)

 On the other end, when looking at the wiki page for ClojureScript One, one
 can see :

 Using the REPL as the main way to deliver code to the browser means never
 having to refresh the page. One could theoretically build an entire
 application without a single page refresh. If you find yourself refreshing
 the page after every change you make, you're doing it wrong. What is this,
 2009?


 So before digging into ClojureScript for the first time, I'd like to know
 what to thing about all this, so that I don't waste my time following wrong
 paths.


 What would be my expected default workflow when starting to write a single
 page application with ClojureScript, in September 2012 ?

 Cheers,

 --
 Laurent

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en


 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: redefining multimethods at the repl

2012-09-07 Thread Nelson Morris
On Fri, Sep 7, 2012 at 9:56 AM, Laurent PETIT laurent.pe...@gmail.com wrote:
 2012/9/5 Stuart Halloway stuart.hallo...@gmail.com:
 I started a wiki page for this:

 http://dev.clojure.org/display/design/Never+Close+a+REPL

 If you have other REPL-reloading annoyances please add them there.

 Adding new dependencies to my Leiningen project.

 Solved by pomegranate ?

 I think I could add an experimental feature to CounterClockWise so
 that whenever the dependencies change, all the new dependencies are
 optimistically propagated to open REPLs associated with the project
 (maybe asking a user confirmation first).


Pomegranate can download dependencies and blindly add them to the
classpath.  It doesn't include any logic to track what jars are
already there, so might add the same ones twice on successive calls.
Also it doesn't help for moving between dependency trees, which might
change a version.  This is probably where optimistically comes in.

A library built on top that can handle this stuff would be awesome.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: ANN: Friend 0.1.0 released (web authentication/authorization library)

2012-09-01 Thread Nelson Morris
On Wed, Aug 29, 2012 at 7:39 AM, Chas Emerick c...@cemerick.com wrote:
 I released [com.cemerick/friend 0.1.0] to Clojars last night.  Friend is an 
 extensible authentication and authorization library for Clojure Ring web 
 applications and services:

 https://github.com/cemerick/friend

 This release does make some breaking changes, though all unfortunately 
 necessary.  The changelog since the 0.0.9 release is here:

 https://github.com/cemerick/friend/blob/master/CHANGES.md

 While I'd say there are now many sites and services in production using 
 Friend for user authentication and authorization, (including Clojars, /ht to 
 Nelson Morris on that count), the caveats in the Friend main README still 
 apply, including:

 ...proceed happily, but mindfully. Only with your help will we have
 a widely-tested Ring application security library.

 Please file issues and otherwise complain loudly when you hit problems. :-)

 Cheers,

 - Chas

 --
 http://cemerick.com
 [Clojure Programming from O'Reilly](http://www.clojurebook.com)


I put together a writeup for what it took to use friend in clojars at
http://nelsonmorris.net/2012/09/01/using-friend-in-clojars.html.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


ANN lein-pedantic 0.0.2

2012-08-30 Thread Nelson Morris
lein-pedantic is a lein plugin to eliminate common surprising
dependency resolution issues.

The rules lein-pedantic uses to fail a dependency resolution are approximately:

1. A top level dependency is overruled by another version.
2. A transitive dependency is overruled by an older version.

Usage and an example are at https://github.com/xeqi/lein-pedantic.

Thanks,
Nelson Morris

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: How to avoid Attempting to call unbound fn:...

2012-08-28 Thread Nelson Morris
On Tue, Aug 28, 2012 at 1:08 PM, Armando Blancas abm221...@gmail.com wrote:
 I'm playing around with a parser combinator library from the paper Monadic
 Parser Combinators by Hutton and Meijer [1] and came up with this:

 https://gist.github.com/3501273

 That's just enough to show the error I'm getting when (expr) calls (factor):

 Clojure 1.4.0
 user= (load-file expr.clj)
 #'user/expr
 user= (run expr (5))
 IllegalStateException Attempting to call unbound fn: #'user/expr
 clojure.lang.Var$Unbound.throwArity (Var.java:43)

 To avoid this error, I coded a new version of the parser (factor) but in
 this case I use inline calls to (bind) instead of using parser (between),
 which makes it work:

 Now using (parser*) inside the definition of (expr): (def expr (bind facfor*
 ...)

 Clojure 1.4.0
 user= (load-file expr.clj)
 #'user/expr
 user= (run expr (5))
 5

 I thought it was a bug but this may have to do with the forward declaration
 of expr and when is deref'ed. After much trying I can't see why this won't
 work:

 (def factor
   (choice (between (match \() (match \)) expr)
  integer))

(def factor ...) immediately gets the value of the body to assign to
the var #'factor.  (choice ...) is a function, so has to get the
values of it's arguments before invoking.  This means it gets the
value of expr, which unbound and uses that.


 But this will:

 (def factor*
   (choice (bind (match \() (fn [_]
   (bind expr   (fn [e]
  (bind (match \)) (fn [_] (result e)))
  integer))

This occurs similar to the above, except it hits a fn.  fn is a
special form defined to wait to get the value of its body until it
is executed.  By that time the (def expr ...) has occurred and #'expr
has a bound value.  A similar effect can be achieved with

(def factor
  (choice (between (match \() (match \)) (fn [x] (expr x)))
  integer))

I ran into the same thing re-exploring that paper in clojure.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: using lein repl as the Emacs Inferior Lisp REPL as opposed to a custom script that does java -jar clojure-1.4.0.jar

2012-08-26 Thread Nelson Morris
On Sun, Aug 26, 2012 at 5:36 AM, mperdikeas mperdik...@gmail.com wrote:
 I am now using Emacs 24.1.1 in Ubuntu precise and have managed to install
 Clojure-mode. The next thing I want to do is to use lein repl as my Emacs
 REPL (currently I've set inferior-lisp-program to a custom bash script that
 simply does a java -jar clojure-1.4.0.jar). The reason I've resorted to this
 approach is that it is not clear to me how to control the Clojure version
 that lein repl is using. As a result, although I have downloaded
 clojure-1.4.0.jar and am using that in my custom bash script, lein reports a
 totally different Clojure, one that's different even from what
 /usr/bin/clojure is:

lein is distributed as a standalone jar, which means a version of
clojure and all other dependencies, is packaged with it.  In addition,
lein 1.7.1 is compiled against clojure 1.2.1, and would not be able to
bootstrap using a future version.

 So it seems that I have three different Clojures currently available but I
 can't configure lein repl to use the latest one. I've read this SO
 discussion but it seems to cover the case where lein is invoked in a
 directory containing a project.clj file where the Clojure dependency can be
 set. However:

 [1] I' ve experimented a bit with lein repl and found that I can invoke it
 in any arbitrary directory. So where does it get the project.clj file in
 those cases?
 [2] In the .emacs file (according to this helpful article) one is supposed
 to do a:

 (progn ;; Inferior Lisp
 (add-hook 'clojure-mode-hook ;; copied from:
   (lambda ()
 (setq inferior-lisp-program lein repl)))

 Again, where would lein look for the project.clj file in the above case? And
 
 From where would then lein repl get
 the Clojure version dependency in that case?

There are a set of tasks that do not read any information from the
project.clj, version, help, and such.  The repl task is allowed to run
outside a project, but comes with the limitation that the classpath
the repl uses will be the same as the classpath lein uses.  This means
for lein 1.7.1 it will use clojure 1.2.1, and for a recent lein
2.0.0-preview it will use clojure 1.4.0.

When running the repl from a project lein is able to get the
:dependencies desired, and use only those on the classpath.  This is
the way to use clojure 1.4.0 w/ lein 1.7.1.

 what if I just want to start writing Clojure in an Emacs buffer without
 having setup a lein project structure?

Then the limitations above apply.  I know some people when using lein
1.7.1 keep a project around with :dependencies [[org.clojure/clojure
1.4.0]] and use it when doing quick repl interaction.

I'd also like to note that
nrepl.el[https://github.com/kingtim/nrepl.el] and
swank-clojure[https://github.com/technomancy/swank-clojure] are the
common ways to get emacs integration.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: lein2 is not aware of newly installed jars in ~/.m2/repositories/

2012-08-21 Thread Nelson Morris
Whats the project.clj look like?

On Tue, Aug 21, 2012 at 2:25 PM, Jim - FooBar(); jimpil1...@gmail.com wrote:
 I built clojure 1.5 snapshot from source and installed it in
 ~/.m2/repositories/org/clojure/ via 'mvn install' but now lein2 reverts to
 1.3 after amending my project.clj!!! How can I make leiningen aware of the
 newly installed snaphot version?

 Jim


 On 21/08/12 19:49, Jim - FooBar(); wrote:

 Has clojure 1.5 apha3 been aot-compiled against java 6?

 Jim

 On 21/08/12 19:40, Jim - FooBar(); wrote:

 Hi everyone,

 I get this very strange error even though I'm using clojure 1.5 alpha3
 and java version 1.7.0_02 on Java HotSpot(TM) 64-Bit Server VM !

 ClassNotFoundException jsr166y.ForkJoinTask
 java.net.URLClassLoader$1.run (URLClassLoader.java:366)
 java.net.URLClassLoader$1.run (URLClassLoader.java:355)
 java.security.AccessController.doPrivileged
 (AccessController.java:-2)
 java.net.URLClassLoader.findClass (URLClassLoader.java:354)
 java.lang.ClassLoader.loadClass (ClassLoader.java:423)
 sun.misc.Launcher$AppClassLoader.loadClass (Launcher.java:308)
 java.lang.ClassLoader.loadClass (ClassLoader.java:356)
 clojure.core.reducers/fjinvoke (reducers.clj:61)
 clojure.core.reducers/foldvec (reducers.clj:336)
 clojure.core.reducers/fn--6587 (reducers.clj:352)
 clojure.core.reducers/fn--6474/G--6469--6485 (reducers.clj:81)
 clojure.core.reducers/fold (reducers.clj:98)


 I thought I did not need the jsr166y.jar under java 7...what is
 happening?

 Jim







 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: lein2 is not aware of newly installed jars in ~/.m2/repositories/

2012-08-21 Thread Nelson Morris
This took me a while to debug cause I expected [org.clojure/clojure
1.5.0-master-SNAPSHOT] to cause a failure since I didn't have it.
Turns out, version ranges will ignore not finding the dependency if it
is outside of the range.

In this case, seesaw has a dependency on j18n.  j18n has a dependency
on clojure [1.2,1.5).  1.5.0-master-SNAPSHOT falls outside this range,
so the dependency resolution ignores that artifact.  Instead it uses
the closest version to the project root that is in range, in this case
1.3.0 asked for by core.logic.

To fix this use [seesaw 1.4.2 :exclusions [org.clojure/clojure]]]).

On Tue, Aug 21, 2012 at 2:31 PM, Jim - FooBar(); jimpil1...@gmail.com wrote:
 (defproject Clondie24 0.1.0-SNAPSHOT
   :description Blondie24 Extreme-Makeover! 
   :url https://github.com/jimpil/Clondie24;
   :license {:name Eclipse Public License
 :url http://www.eclipse.org/legal/epl-v10.html}
   :dependencies [
  [org.clojure/clojure 1.5.0-alpha3]
 ;[org.clojure/clojure 1.5.0-master-SNAPSHOT] this one
 fails but the jar is indeed inside ~/.m2/repositories
  [org.clojure/core.logic 0.7.5]
  ;[midje 1.4.0]
  [seesaw 1.4.2]
  ;[clojure-encog 0.4.1-SNAPSHOT] ;not needed yet
  ]
   :dev-dependencies [[midje 1.4.0]]
   :jvm-opts [-Xmx2g -server]
   :warn-on-reflection true
  ;:javac-options {:classpath target/dependency/encog-core-3.1.0.jar
 :destdir target/classes}
  ;:java-source-path src/java
  ;:main Clondie24.games.chess
  )


 Jim




 On 21/08/12 20:28, Nelson Morris wrote:

 Whats the project.clj look like?

 On Tue, Aug 21, 2012 at 2:25 PM, Jim - FooBar(); jimpil1...@gmail.com
 wrote:

 I built clojure 1.5 snapshot from source and installed it in
 ~/.m2/repositories/org/clojure/ via 'mvn install' but now lein2 reverts
 to
 1.3 after amending my project.clj!!! How can I make leiningen aware of
 the
 newly installed snaphot version?

 Jim


 On 21/08/12 19:49, Jim - FooBar(); wrote:

 Has clojure 1.5 apha3 been aot-compiled against java 6?

 Jim

 On 21/08/12 19:40, Jim - FooBar(); wrote:

 Hi everyone,

 I get this very strange error even though I'm using clojure 1.5 alpha3
 and java version 1.7.0_02 on Java HotSpot(TM) 64-Bit Server VM !

 ClassNotFoundException jsr166y.ForkJoinTask
  java.net.URLClassLoader$1.run (URLClassLoader.java:366)
  java.net.URLClassLoader$1.run (URLClassLoader.java:355)
  java.security.AccessController.doPrivileged
 (AccessController.java:-2)
  java.net.URLClassLoader.findClass (URLClassLoader.java:354)
  java.lang.ClassLoader.loadClass (ClassLoader.java:423)
  sun.misc.Launcher$AppClassLoader.loadClass (Launcher.java:308)
  java.lang.ClassLoader.loadClass (ClassLoader.java:356)
  clojure.core.reducers/fjinvoke (reducers.clj:61)
  clojure.core.reducers/foldvec (reducers.clj:336)
  clojure.core.reducers/fn--6587 (reducers.clj:352)
  clojure.core.reducers/fn--6474/G--6469--6485 (reducers.clj:81)
  clojure.core.reducers/fold (reducers.clj:98)


 I thought I did not need the jsr166y.jar under java 7...what is
 happening?

 Jim





 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en


 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Handling setting different profiles between different environments

2012-08-14 Thread Nelson Morris
On Tue, Aug 14, 2012 at 7:49 PM, Dave Kincaid kincaid.d...@gmail.com wrote:
 Being new to functional programming and Lisp in particular there is
 something that's been bugging me for a while. How do people handle having
 different configurations during development for development, testing and
 production? For example, things like data sources, server names, etc are
 often different when you're developing, testing and deploying to production.
 In Java-land the Spring framework profiles work really well for doing this.
 Just specify a profile name as a program argument and global variables are
 setup appropriately.

 So I'm wondering how others handle this. In one project recently I setup a
 global map using ^:dynamic and then switched in the appropriate map from a
 command line argument. This somehow doesn't seem the right way to do it. Any
 suggestions? Are there some projects out there that would be good examples
 of this?

 Thanks,

 Dave


I've been using lein2's profiles combined with
https://github.com/weavejester/environ recently.  The :dev and :test
profiles can declare the keys for their setup, and production can
declare them as environmental variables.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Attractive examples of function-generating functions

2012-08-08 Thread Nelson Morris
On Wed, Aug 8, 2012 at 11:48 AM, Brian Marick mar...@exampler.com wrote:
 I'm looking for medium-scale examples of using function-generating functions.

 Such examples might be ones that ... use closures to avoid the need to have 
 some particular argument passed from function to function (which looks like 
 the `this` in an instance method).

I try and use a greedy parser combinator as the next jump, and as
example of hiding arguments.  String parsing is a small, yet
non-trivial example, that doesn't require domain knowledge.  Something
like:

(defn result [value]
  (fn [string]
[value string]))

(defn pred [predicate]
  (fn [string]
(if (predicate (first string))
  [(first string) (rest string)])))

(defn orp [f g]
  (fn [string]
(or (f string) (g string

(defn bind [parser f]
  (fn [string]
(if-let [[result s2] (parser string)]
  ((f result) s2

(defn many [parser]
  (let [f (bind parser
(fn [h]
  (bind (many parser)
(fn [rst]
  (result (cons h rst))]
(orp f
 (result []

(def letter (pred #(if % (Character/isLetter %

(def word
  (bind (many letter)
(fn [w] (result (apply str w)

(word foo)
;= [foo ()]

The closest I see to an implicit this is:

((bind word
   (fn [w1]
 (bind (pred #(= % \space))
   (fn [_]
 (bind word
   (fn [w2] (result [w1 w2]))) foo bar baz)
;= [[foo bar] (\space \b \a \z)]

Here word and the space predicate are called on the string, but its
only ever mentioned as the argument.  However, it is kinda ugly
without a macro to hide all the bind/fn pairs.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: [ANN] Clojars deployment over https

2012-08-06 Thread Nelson Morris
On Mon, Aug 6, 2012 at 8:52 PM, Mikera mike.r.anderson...@gmail.com wrote:
 Great stuff!

 I'm trying to use this functionality to deploy a library using Maven/Eclipse
 Juno on Windows and keep getting a timeout (but interestingly the jar and
 pom do make it up there) - see this SO question :
 http://stackoverflow.com/questions/11837961/maven-deployment-timeout-failure-to-generate-checksums

 Not sure if it is a clojars issue or a mistake of mine on the Maven side -
 any tips?

Mike.

Are you using `mvn deploy` or does m2e have a button/gui for
deployment?  I tried to find out if it had one, but the m2e website
leaves much to be desired, and searching google brings up info on
deploying web stuff.

Looking through the logs I can see where the upload happens, and a
response code passes through ring.  However, there is a broken pipe
message in nginx which might be from when the connection is killed.  I
don't see anyone using a similar user-agent, yet one of the first
deployments was w/ maven.  I sure hope this isn't something 3.0.4
specific.

 In the meantime, if you can re-upload the jar and pom using the scp
method clojars will then generate the checksums for you.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


screencast interest / topics

2012-08-01 Thread Nelson Morris
I'm planning to make some screencasts for clojure and some of its
libraries.  I'd like to get a general feel for the level of interest
and what topics are desired.  I've made a brief survey at
bit.ly/N2vBKk and I appreciate any responses from people that are
interested.

Thanks,
Nelson Morris

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


[ANN] Clojars deployment over https

2012-06-16 Thread Nelson Morris
It is now possible to deploy to clojars through the standard maven
deploy mechanism.  The url is https://clojars.org/repo.  There are
instructions at https://github.com/ato/clojars-web/wiki/Pushing for
configuring the various build tools.

One highlight, if you are using lein 2.0.0-preview6 then `lein clojars
deploy` should just work.

As a reminder, clojars recently had a security upgrade
(https://groups.google.com/forum/?fromgroups#!topic/clojure/Xg1I0rgt85s).
If you did not login during this time period then you will need to use
the forgot password functionality.

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Central screwup

2012-06-14 Thread Nelson Morris
On Thu, Jun 14, 2012 at 8:38 AM, Stuart Sierra
the.stuart.sie...@gmail.com wrote:


 Is there anyone on the Clojure/core team with a contact among those
 who run Central who could get them to look into this?


 I'm on the Sonatype OSSRH mailing list:
 https://docs.sonatype.org/display/Repository/Sonatype+OSS+Maven+Repository+Usage+Guide
 (mailing list addresses at the bottom)

 There was no mention of this issue there, but I'll ask about it.
 -S


 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

akhudek just asked about only getting 1.2.0 from central in #clojure.
It appears the metadata has been reverted again.

From  http://repo1.maven.org/maven2/org/clojure/clojure/ :
maven-metadata.xml 14-Sep-2010 12:18
  325
maven-metadata.xml.md5 14-Sep-2010 12:18
   32
maven-metadata.xml.sha114-Sep-2010 12:18
   40

$ curl  http://repo1.maven.org/maven2/org/clojure/clojure/maven-metadata.xml
?xml version=1.0 encoding=UTF-8?
metadata
  groupIdorg.clojure/groupId
  artifactIdclojure/artifactId
  versioning
latest1.2.0/latest
release1.2.0/release
versions
  version1.2.0/version
/versions
lastUpdated20100914121821/lastUpdated
  /versioning
/metadata

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: repl hanging sometimes in lein2?

2012-05-18 Thread Nelson Morris
On Fri, May 18, 2012 at 4:16 PM, Jim - FooBar(); jimpil1...@gmail.com wrote:
 It seems that the known issue of lein1 (repl hanging sometimes after
 printing), is still present on lein2... The only way to avoid this is to aot
 compile at least one namespace and then do  lein2 run, which is exactly
 what I used to do before upgrading...

 Any insights?
 Is this what everyone else is doing to get around that problem?

 Jim

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

There is discussion at https://github.com/technomancy/leiningen/issues/582

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Help with this error and comment.

2012-04-06 Thread Nelson Morris
1) The error says default.clj is trying to find a render that
doesn't exist.  This file isn't in leiningen's 1.x branch[1].  So what
is trying to load it?
2) The next lein call in the stacktrace is at
leiningen.new$resolve_template$fn__117.invoke(new.clj:9).  But this
doesn't exist in lein's new.clj[2].  This lets me know that new.clj is
from somewhere else, either a plugin(likely), or a jar being added by
default to the classpath by your system(unlikely).
3) I know that there is a lein-newnew plugin that changes the lein new task.
4) Looking at that project, I can see that it's new task works like
your stacktrace.
4) I can see in the commit history for that default.clj[3], that there
was a commit that used (:use .. :only [.. render]), and then one that
got rid of it.
5) The overall commit log looks like a 0.2.3 release might have been
during that time.

At that point I can make a strong guess that having that as an
installed plugin is causing your problem.  It also helps that I've
been doing dev on lein2 recently.

[1]https://github.com/technomancy/leiningen/tree/1.x/src/leiningen
[2]https://github.com/technomancy/leiningen/blob/1.x/src/leiningen/new.clj
[3]https://github.com/Raynes/lein-newnew/commits/master/src/leiningen/new/default.clj

On Fri, Apr 6, 2012 at 10:36 AM, uMany elm...@gmail.com wrote:
 Thank your Nelson that worked.
 I remover the lein-newnew pluging and reintalled and now all works again.
 Can I ask you what lead you to that?
 Thanks


 On Thursday, April 5, 2012 11:26:53 AM UTC-4:30, Nelson Morris wrote:

 It looks like you have the lein-newnew plugin installed.  If I'm reading
 its project history correctly, 0.2.3 might cause this.  Try removing it from
 ~/.lein/plugins or upgrading to 0.2.5.

 On Apr 5, 2012 9:47 AM, uMany wrote:

 Hi,

 On Tuesday, April 3, 2012 11:20:10 PM UTC-4:30, Cedric Greevey wrote:

 On Tue, Apr 3, 2012 at 11:39 PM, uMany wrote:
  Hi everybody
  Everything was working great and just today, while trying to make a
  simple
  lein new foobar I got this error:
  Exception in thread main java.lang.IllegalAccessError: render does
  not
  exist (default.clj:1)

 The JVM is loading an older version of a class, and the code is then
 trying to call a method added in a newer version.

 So, the version of some dependency of another dependency is wrong,
 most likely -- for instance, if your project.clj calls for a 1.3
 contrib library and Clojure 1.2, or something like that.

 If lein deps doesn't fix things then try remaking the project.clj from

 The thing is that I don't have a project yet. I'm just starting a project
 with
 lein new something
 and I got the error right away.
 I've been trying to solve this a couple of days without any luck

 Thanks


 scratch based on what you are using in that project. It could also be
 a bug in one of the dependencies, I suppose.

 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: Help with this error and comment.

2012-04-05 Thread Nelson Morris
It looks like you have the lein-newnew plugin installed.  If I'm reading
its project history correctly, 0.2.3 might cause this.  Try removing it
from ~/.lein/plugins or upgrading to 0.2.5.
On Apr 5, 2012 9:47 AM, uMany elm...@gmail.com wrote:

 Hi,

 On Tuesday, April 3, 2012 11:20:10 PM UTC-4:30, Cedric Greevey wrote:

 On Tue, Apr 3, 2012 at 11:39 PM, uMany wrote:
  Hi everybody
  Everything was working great and just today, while trying to make a
 simple
  lein new foobar I got this error:
  Exception in thread main java.lang.IllegalAccessError: render does not
  exist (default.clj:1)

 The JVM is loading an older version of a class, and the code is then
 trying to call a method added in a newer version.

 So, the version of some dependency of another dependency is wrong,
 most likely -- for instance, if your project.clj calls for a 1.3
 contrib library and Clojure 1.2, or something like that.

 If lein deps doesn't fix things then try remaking the project.clj from

 The thing is that I don't have a project yet. I'm just starting a project
 with
 lein new something
 and I got the error right away.
 I've been trying to solve this a couple of days without any luck

 Thanks


 scratch based on what you are using in that project. It could also be
 a bug in one of the dependencies, I suppose.

  --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with
 your first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

ANN: kerodon - a library for interacting/testing html-based ring apps

2012-04-02 Thread Nelson Morris
kerodon is a library for interacting with and testing html-based ring
apps.  It is designed to work with -, and look like interactions a
user would have with a browser.  It is similar in style to capybara.
It does not do any javascript simulation.

https://github.com/xeqi/kerodon

Currently it has functions for following links, filling in form input
fields, attaching files, pressing buttons, and validating form input
fields contents.  I plan to have similar functions for other form
elements in the future.
-
Nelson Morris

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


Re: [ANN] lein-deps-tree 0.1.0

2012-04-02 Thread Nelson Morris
The `lein deps :tree` command will work in preview3.  This plugin is
good for anyone who needs it now on preview2.

Thanks for putting it together.

On Mon, Apr 2, 2012 at 7:48 AM, Sun Ning classicn...@gmail.com wrote:
 lein2 has a built-in command: `lein deps :tree` for this task
 it would be great to have the plugin in lein 1.x
 But I got error below:

 Exception in thread main java.io.FileNotFoundException: Could not locate
 leiningen/core/classpath__init.class or leiningen/core/classpath.clj on
 classpath:  (deps_tree.clj:1)


 On Mon 02 Apr 2012 08:39:34 PM CST, Moritz Ulrich wrote:

 I'm happy to announce the first release of lein-deps-tree[1].

 It's a leiningen plugin which prints the all dependencies of a project
 as a nicely formatted tree.


 Please report any issues (especially with leiningen 1.x) as Github issues.


 [1]: https://github.com/the-kenny/lein-deps-tree

 Cheers,
 Moritz


 --
 Sun Ning
 Software developer
 Nanjing, China (N32°3'42'' E118°46'40'')
 http://about.me/sunng/bio


 --
 You received this message because you are subscribed to the Google
 Groups Clojure group.
 To post to this group, send email to clojure@googlegroups.com
 Note that posts from new members are moderated - please be patient with your
 first post.
 To unsubscribe from this group, send email to
 clojure+unsubscr...@googlegroups.com
 For more options, visit this group at
 http://groups.google.com/group/clojure?hl=en

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en


ANN: peridot - a library for interacting with ring apps

2012-03-22 Thread Nelson Morris
peridot is a library for interacting with ring apps.  It is designed
to work with -, keep cookies, and handle some actions like file
uploads as multipart.  It is similar in level/style to Rack::Test.  I
imagine it could be useful for testing.

https://github.com/xeqi/peridot

-
Nelson Morris

-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en