Re: [ANN] Nginx-Clojure v0.4.2

2015-09-02 Thread Michael McLellan
Awesome! Sente support was one of the reasons I didn't try it out on my 
latest project.

On Tuesday, September 1, 2015 at 2:20:32 AM UTC-4, Xfeep wrote:
>
> 0.4.2 (2015-08-31)
>
>1. New Feature: Support Sente (issue #87 
>, see this PR 
>)
>2. New Feature: Per-message Compression Extensions (PMCEs) for 
>WebSocket (issue #88 
>)
>3. New Feature: Add add-aggregated-listener! to makes handling small 
>but fragmented websocket messages easier by clojure.
>4. Enhancement: Support to build on a Linux ARM machine
>5. Bug Fix: WebSocket and Server Channel do not Work with Some Ring 
>Middlewares (issue#89 
>)
>6. Bug Fix: Autodetect jvm_path doesn't work sometimes
>
> Web Site   http://nginx-clojure.github.io/
> Source Hosted on Github https://github.com/nginx-clojure/nginx-clojure
> Google Group (mailing list) 
> https://groups.google.com/forum/#!forum/nginx-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
--- 
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: Clojure bootstrap, what am I missing here?

2015-09-02 Thread Andrew Oberstar
That's great!

Andrew Oberstar

On Tue, Sep 1, 2015, 11:25 PM Patrick Gombert 
wrote:

> There is an effort underway to port the stdlib to clojure named
> clojure.core . The idea is
> to eventually to move off of clojure and bootstrap it with the clojure in
> clojure compiler, but that's a ways off. Here
>  is a list of
> implement functions from core.
>
>
> On Monday, August 24, 2015 at 10:03:00 AM UTC-5, William la Forge wrote:
>>
>> Step 2 in the classical bootstrap process for a language is to rewrite it
>> in itself. Clojure is more than capable of this. But Clojure continues to
>> rely on Java code for its implementation.
>>
>> Is there a reason why this was not done? Efficiency issues? A rush to
>> create something usable? I would think that having Clojure implemented
>> entirely in Clojure would have a number of advantages.
>>
>> I am sure there was a deliberate decision, not to complete the bootstrap
>> process. Is this documented anywhere?
>>
>> Just being a nosy newbie.
>>
> --
> 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: feedback about solutions

2015-09-02 Thread r/ Wobben
Another question from a beginner.

How do I add klein here : 

(defproject i-am-a-horse-in-the-land-of-booleans "1.0.0-SNAPSHOT"
  :dependencies [[org.clojure/clojure "1.5.1"]
 [iloveponies.tests/i-am-a-horse-in-the-land-of-booleans 
"0.1.0-SNAPSHOT"]]
  :profiles {:dev {:plugins [[lein-midje "3.1.1"]]}})


Roelof


Op woensdag 2 september 2015 08:02:14 UTC+2 schreef r/ Wobben:
>
> Thanks, 
>
> For anyone who is interested.
> Here are the exercises and theory: 
> http://iloveponies.github.io/120-hour-epic-sax-marathon/I-am-a-horse-in-the-land-of-booleans.html
> and here are the exercises layout ;  
> https://github.com/iloveponies/i-am-a-horse-in-the-land-of-booleans/blob/master/src/i_am_a_horse_in_the_land_of_booleans.clj
>
> Roelof
>
> Op woensdag 2 september 2015 00:11:27 UTC+2 schreef Jony Hudson:
>>
>> You might find kibit interesting too:
>>
>> https://github.com/jonase/kibit
>>
>> In its own words "kibit is a static code analyzer for Clojure, 
>> ClojureScript, cljx  and other Clojure 
>> variants. It uses core.logic  to 
>> search for patterns of code that could be rewritten with a more idiomatic 
>> function or macro. "
>>
>> Running it on your file gives:
>>
>> At test.clj:10:
>>
>> Consider using:
>>
>>   (neg? x)
>>
>> instead of:
>>
>>   (< x 0)
>>
>>
>> At test.clj:15:
>>
>> Consider using:
>>
>>   (zero? (mod n divisor))
>>
>> instead of:
>>
>>   (= (mod n divisor) 0)
>>
>>
>> Jony
>>
>> On Monday, 31 August 2015 19:29:21 UTC+1, r/ Wobben wrote:
>>>
>>> Hello, 
>>>
>>> I did solve the boolean chapter of the ilovehorses git repo.
>>> My solutions can be found here: 
>>> https://github.com/rwobben/i-am-a-horse-in-the-land-of-booleans/blob/master/src/i_am_a_horse_in_the_land_of_booleans.clj
>>>
>>> Any experts who can give me feedback about the solutions so I can learn 
>>> from it.
>>>
>>> Roelof
>>>  
>>>
>>

-- 
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.


:bootclasspath causes java.lang.NullPointerException

2015-09-02 Thread J . Pablo Fernández
Hello,

I'm trying to compile my project with :bootclasspath set to true, so as to 
have the jar for a java agent added to my classpath, but in one of my 
projects it's generating java.lang.NullPointerException on this line:

(def app (middleware/wrap-base #'app-base))

which is preceded by:

(defroutes base-routes
   (route/resources "/")
   (route/not-found "Not Found"))

(def app-base
  (routes
(var service-routes)
(wrap-routes #'home-routes middleware/wrap-csrf)
#'base-routes))

The full backtrace is:

java.lang.NullPointerException, compiling:(handler.clj:86:10)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3628)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:439)
at clojure.lang.Compiler.compile1(Compiler.java:7323)
at clojure.lang.Compiler.compile(Compiler.java:7390)
at clojure.lang.RT.compile(RT.java:399)
at clojure.lang.RT.load(RT.java:444)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5671)
at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
at clojure.core$load_lib.doInvoke(core.clj:5710)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$load_libs.doInvoke(core.clj:5749)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$require.doInvoke(core.clj:5832)
at clojure.lang.RestFn.invoke(RestFn.java:482)
at projectx.core$loading__5340__auto21.invoke(core.clj:3)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3623)
at clojure.lang.Compiler.compile1(Compiler.java:7323)
at clojure.lang.Compiler.compile1(Compiler.java:7313)
at clojure.lang.Compiler.compile(Compiler.java:7390)
at clojure.lang.RT.compile(RT.java:399)
at clojure.lang.RT.load(RT.java:444)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5671)
at clojure.core$compile$fn__5453.invoke(core.clj:5877)
at clojure.core$compile.invoke(core.clj:5876)
at user$eval9$fn__16.invoke(form-init8240839476947253640.clj:1)
at user$eval9.invoke(form-init8240839476947253640.clj:1)
at clojure.lang.Compiler.eval(Compiler.java:6782)
at clojure.lang.Compiler.eval(Compiler.java:6772)
at clojure.lang.Compiler.load(Compiler.java:7227)
at clojure.lang.Compiler.loadFile(Compiler.java:7165)
at clojure.main$load_script.invoke(main.clj:275)
at clojure.main$init_opt.invoke(main.clj:280)
at clojure.main$initialize.invoke(main.clj:308)
at clojure.main$null_opt.invoke(main.clj:343)
at clojure.main$main.doInvoke(main.clj:421)
at clojure.lang.RestFn.invoke(RestFn.java:421)
at clojure.lang.Var.invoke(Var.java:383)
at clojure.lang.AFn.applyToHelper(AFn.java:156)
at clojure.lang.Var.applyTo(Var.java:700)
at clojure.main.main(main.java:37)
Caused by: java.lang.NullPointerException
at 
org.webjars.WebJarAssetLocator.listParentURLsWithResource(WebJarAssetLocator.java:66)
at org.webjars.WebJarAssetLocator.getAssetPaths(WebJarAssetLocator.java:84)
at 
org.webjars.WebJarAssetLocator.getFullPathIndex(WebJarAssetLocator.java:121)
at org.webjars.WebJarAssetLocator.(WebJarAssetLocator.java:152)
at ring.middleware.webjars$wrap_webjars.invoke(webjars.clj:27)
at ring.middleware.webjars$wrap_webjars.invoke(webjars.clj:25)
at projectx.middleware$wrap_base.invoke(middleware.clj:90)
at clojure.lang.AFn.applyToHelper(AFn.java:154)
at clojure.lang.AFn.applyTo(AFn.java:144)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3623)
... 51 more
Exception in thread "main" java.lang.NullPointerException, 
compiling:(handler.clj:86:10)
at clojure.lang.Compiler$InvokeExpr.eval(Compiler.java:3628)
at clojure.lang.Compiler$DefExpr.eval(Compiler.java:439)
at clojure.lang.Compiler.compile1(Compiler.java:7323)
at clojure.lang.Compiler.compile(Compiler.java:7390)
at clojure.lang.RT.compile(RT.java:399)
at clojure.lang.RT.load(RT.java:444)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5671)
at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
at clojure.core$load_lib.doInvoke(core.clj:5710)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$load_libs.doInvoke(core.clj:5749)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$require.doInvoke(core.clj:5832)
at clojure.lang.RestFn.invoke(RestFn.java:482)
at projectx.core$loading__5340__auto21.invoke(core.clj:3)
at clojure.lang.AFn.applyToHelper(AFn.java:152)
at clojure.lang.AFn.a

Filter predicates and side-effects

2015-09-02 Thread James Elliott
I notice that the documentation for filter and filterv are emphatic that 
the predicate you are using be free of side effects. Why is that so? For 
example, I would like to use filterv to collect a list of lighting effects 
which respond false to a protocol method which asks whether they have 
finished. In the implementation of that method, the effects are free to 
update their internal state based on the current show state and time, when 
deciding whether or not they are finished, and so I can’t guarantee there 
will be no side effects while filtering the effects. Does that mean I can’t 
use filterv? If not, why not? Looking at the source, I see no obvious 
problems.

-- 
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: [ANN] prismatic/schema 1.0 adds automatic test data generation

2015-09-02 Thread Jason Felice
I have a question:  "both" is deprecated with a note to use "s/conditional"
instead.  However, that doesn't work for my case.

I have the following: (s/both s/Int (s/pred pos?))

If I rewrite it to (s/conditional pos? s/Int), this throws:

(s/check (s/conditional pos? s/Int) "")

Since (as far as I can tell), I can't verify the type is numeric before
applying pos?

I could do this: (s/conditional number? (s/pred pos?)), but I'm going to
guess this will defeat test.check support, which I'd like to use.

Thoughts?

On Tue, Sep 1, 2015 at 2:02 PM, Jason Wolfe  wrote:

> We're excited to finally bring Schema out of alpha, while introducing some
> new exciting features around testing: test.check integration and data
> completion.  Check out the blog post for details about these new
> applications.
>
> http://blog.getprismatic.com/schema-1-0-released/
>
> We've also rewritten the internals of schema for this release, to make it
> easier and faster to add new schema types and applications.  We expect
> ordinary users of Schema should see no breaking changes, but custom schema
> types or tooling will likely need to be updated.  Please see the changelog
> for details.
>
> https://github.com/Prismatic/schema/blob/master/CHANGELOG.md
>
> Comments and suggestions welcome!
>
> --
> 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: Filter predicates and side-effects

2015-09-02 Thread Raymond Huang
I believe the reason it's not recommended is because it returns a lazy
chunked sequence. This means that it's not guaranteed to eagerly perform
your side-effects, unless you wrap it in `doall`.

On Wed, Sep 2, 2015 at 8:48 AM, James Elliott  wrote:

> I notice that the documentation for filter and filterv are emphatic that
> the predicate you are using be free of side effects. Why is that so? For
> example, I would like to use filterv to collect a list of lighting
> effects which respond false to a protocol method which asks whether they
> have finished. In the implementation of that method, the effects are free
> to update their internal state based on the current show state and time,
> when deciding whether or not they are finished, and so I can’t guarantee
> there will be no side effects while filtering the effects. Does that mean I
> can’t use filterv? If not, why not? Looking at the source, I see no
> obvious problems.
>
> --
> 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: Filter predicates and side-effects

2015-09-02 Thread James Elliott
Indeed, that would make sense for filter, but since filterv immediately 
puts them all into a vector, I was particularly puzzled by the warning on 
its doc string.

In my case I am not relying on the side effects for anything, I merely 
cannot guarantee there are none (and even if chunking were an issue, the 
list is immediately fully consumed). So I tentatively think I am ok, but it 
is still an unsettling warning.

On Wednesday, September 2, 2015 at 11:06:01 AM UTC-5, Raymond Huang wrote:
>
> I believe the reason it's not recommended is because it returns a lazy 
> chunked sequence. This means that it's not guaranteed to eagerly perform 
> your side-effects, unless you wrap it in `doall`.
>
> On Wed, Sep 2, 2015 at 8:48 AM, James Elliott  > wrote:
>
>> I notice that the documentation for filter and filterv are emphatic that 
>> the predicate you are using be free of side effects. Why is that so? For 
>> example, I would like to use filterv to collect a list of lighting 
>> effects which respond false to a protocol method which asks whether they 
>> have finished. In the implementation of that method, the effects are free 
>> to update their internal state based on the current show state and time, 
>> when deciding whether or not they are finished, and so I can’t guarantee 
>> there will be no side effects while filtering the effects. Does that mean I 
>> can’t use filterv? If not, why not? Looking at the source, I see no 
>> obvious problems.
>>
>> -- 
>> 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.


Re: Filter predicates and side-effects

2015-09-02 Thread Michael Blume
Don't call filter for side effects, don't rely on when side effects will or
will not happen, but yeah, your filter predicate can have side effects.
On Wed, Sep 2, 2015 at 9:13 AM James Elliott  wrote:

> Indeed, that would make sense for filter, but since filterv immediately
> puts them all into a vector, I was particularly puzzled by the warning on
> its doc string.
>
> In my case I am not relying on the side effects for anything, I merely
> cannot guarantee there are none (and even if chunking were an issue, the
> list is immediately fully consumed). So I tentatively think I am ok, but it
> is still an unsettling warning.
>
>
> On Wednesday, September 2, 2015 at 11:06:01 AM UTC-5, Raymond Huang wrote:
>
>> I believe the reason it's not recommended is because it returns a lazy
>> chunked sequence. This means that it's not guaranteed to eagerly perform
>> your side-effects, unless you wrap it in `doall`.
>>
> On Wed, Sep 2, 2015 at 8:48 AM, James Elliott  wrote:
>>
> I notice that the documentation for filter and filterv are emphatic that
>>> the predicate you are using be free of side effects. Why is that so? For
>>> example, I would like to use filterv to collect a list of lighting
>>> effects which respond false to a protocol method which asks whether
>>> they have finished. In the implementation of that method, the effects are
>>> free to update their internal state based on the current show state and
>>> time, when deciding whether or not they are finished, and so I can’t
>>> guarantee there will be no side effects while filtering the effects. Does
>>> that mean I can’t use filterv? If not, why not? Looking at the source,
>>> I see no obvious problems.
>>>
>>> --
>>> 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.


migae: Clojurizing the App Engine Datastore

2015-09-02 Thread Gregg Reynolds
Hi list,

The Google App Engine (GAE) Datastore is basically a collection of Entity
objects; an Entity is a PropertyContainer (map of name-value pairs)
extended to support a distinguished Key field.  Clojure fits with this
conceptual structure very nicely; the migae representation of the Entity
class uses deftype PersistentEntityMap, which behaves just like an ordinary
Clojure map.  (It also behaves like a map entry).  Only a few
datastore-specific operations are needed, so for the most part you can
completely ignore the underlying structure of Java classes and work
exclusively within a Clojure data idiom.

That's the theory, anyway.  The migae datastore lib
 is still very much a work in progress,
but I've gotten far enough along to think that it will actually work, so I
think it's time to share it and solicit feedback and advice.  In
particular, I'm experimenting with various API design alternatives, some of
which are a little nutty - a major virtue of Clojure that I don't recall
every seeing mentioned is that it supports incremental design of new
abstractions on old libraries, thanks to the Java interop and other
facilities.  You don't have to cover the entire API at once; you can work
on small bits.  In any case, if you enjoy software API design you'll find
lots of interesting challenges in trying to put a Clojure face on the low
level Java Datastore API.

(It's possible to use the lib in an actual GAE application - see migae
 for a description of a technique for using
Clojure to develop GAE applications - but at the moment it's better thought
of as an R&D project for exploration.)

Implementation wise I could certainly use some help.  I'm afraid I don't
work with Clojure frequently enough to have developed a style, and I'm sure
my code exhibits lots of bad and naive habits.

You don't have to have a GAE account to explore it.  It uses Google's
gradle-based build system, which is rather nice; like leiningen, it will
download and install everything you need (in ~/.gradle).  To explore the
lib take a look at (and run) the unit tests - I've tried to design them not
only as tests but as documentation.  You can also use the lib in the repl,
thanks to the local testing environment that comes with the GAE SDK.

Cheers,

Gregg

-- 
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.


[ANN] Ring-logger 0.7.0 released - mostly refactoring and deps cleaning

2015-09-02 Thread Nicolás Berger
I'm pleased to announce the release of [ring-logger "0.7.0"]!

The goal for this release was to refactor the code in preparation for
future improvements and to remove the timbre & onelog (which pulls
log4j, etc) dependencies. Those were moved to the new companion
projects that also have 0.7.0 releases: ring-logger-timbre &
ring-logger-onelog

- Breaking changes:

* Remove timbre implementation, was moved to ring-logger-timbre
* Remove OneLog implementation, was moved to ring-logger-onelog
* Replace keyword arguments with a proper map in wrap-with-logger
* Replace :logger-impl param to :logger
* Make Logger protocol more simple: It has just two fns now: `log` and
`add-extra-middleware`

https://github.com/nberger/ring-logger

Feedback & contributions are all welcome!

-
Nicolá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
--- 
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.


Live rendering of AsciiDoc files in Chrome browser

2015-09-02 Thread Alan Thompson
Hey,

As you all know, the README files on Github, etc can be formatted using the
either AsciiDoc (my favorite) or the older MarkDown format.  However, it is
a pain to edit these files in just a plain text editor without a good way
of seeing the final, rendered format until you commit and push your latest
changes up to GH.

If you haven't seen it yet, there is a Chrome extension named
"Asciidoctor.js" that will render both AsciiDoc *and* MarkDown files into
HTML right in your browser.  It even features automatic reloading of
changes (~2 sec delay) whenever you make a change to the source file.

If you are not already using this or a similar tool, you should give it a
try. Enjoy!

Alan

-- 
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: Live rendering of AsciiDoc files in Chrome browser

2015-09-02 Thread James Elliott
Wow, thank you, this is fantastic! I have been developing an extensive set 
of AsciiDoc documentation (having been forced to transition from FrameMaker 
to DocBook XML, then driven by its complexity to Markdown, and frustrated 
by its limitations to AsciiDoc), but found it frustrating that I had to 
push my changes up to GitHub in order to see how they were working.

One snag I ran into, in case this helps others: I could not see the “Allow 
access to file URLs” setting in Chrome which is mentioned by the Extension 
as a requirement for it to work properly until I had turned on the 
“Developer mode” checkbox at the top of the Extensions page. People who use 
Chrome regularly have probably already done that, I suppose. :)

  -James

On Wednesday, September 2, 2015 at 2:06:23 PM UTC-5, Alan Thompson wrote:
>
> Hey, 
>
> As you all know, the README files on Github, etc can be formatted using 
> the either AsciiDoc (my favorite) or the older MarkDown format.  However, 
> it is a pain to edit these files in just a plain text editor without a good 
> way of seeing the final, rendered format until you commit and push your 
> latest changes up to GH.
>
> If you haven't seen it yet, there is a Chrome extension named 
> "Asciidoctor.js" that will render both AsciiDoc *and* MarkDown files into 
> HTML right in your browser.  It even features automatic reloading of 
> changes (~2 sec delay) whenever you make a change to the source file.
>
> If you are not already using this or a similar tool, you should give it a 
> try. Enjoy!
>
> Alan
>

-- 
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: Live rendering of AsciiDoc files in Chrome browser

2015-09-02 Thread Alan Thompson
Re "File URLs":  Go to the Options page for Asciidoctor.js (right-click on
the red "A" to the right of the address bar.  At the top of the page you
will see an alert that says,

"Heads up! In order to use this extension on local files (i.e. files on
this computer), you must check the option Allow access to file URLs on the
chrome://extensions

 page"

and you can then click on the "chrome://extensions/" link in the message or
just type "chrome://extensions/" into the Chrome address bar.

Another tip regarding file extensions, is that you can use the suffix
"*.adoc" for your filenames rather than the longer "*.asciidoc" file suffix.

For you Vim users like me, you will also probably want to create a file
"~/.vim/ftdetect/adoc.vim" to enable VIM filetype autodetection, with the
one-liner contents of:

" Recognize *.adoc files as Clojure source
autocmd BufWinEnter,BufNewFile,BufRead *.adoc set filetype=asciidoc


Enjoy!
Alan


On Wed, Sep 2, 2015 at 12:37 PM, James Elliott  wrote:

> Wow, thank you, this is fantastic! I have been developing an extensive set
> of AsciiDoc documentation (having been forced to transition from FrameMaker
> to DocBook XML, then driven by its complexity to Markdown, and frustrated
> by its limitations to AsciiDoc), but found it frustrating that I had to
> push my changes up to GitHub in order to see how they were working.
>
> One snag I ran into, in case this helps others: I could not see the “Allow
> access to file URLs” setting in Chrome which is mentioned by the Extension
> as a requirement for it to work properly until I had turned on the
> “Developer mode” checkbox at the top of the Extensions page. People who use
> Chrome regularly have probably already done that, I suppose. :)
>
>   -James
>
>
> On Wednesday, September 2, 2015 at 2:06:23 PM UTC-5, Alan Thompson wrote:
>>
>> Hey,
>>
>> As you all know, the README files on Github, etc can be formatted using
>> the either AsciiDoc (my favorite) or the older MarkDown format.  However,
>> it is a pain to edit these files in just a plain text editor without a good
>> way of seeing the final, rendered format until you commit and push your
>> latest changes up to GH.
>>
>> If you haven't seen it yet, there is a Chrome extension named
>> "Asciidoctor.js" that will render both AsciiDoc *and* MarkDown files
>> into HTML right in your browser.  It even features automatic reloading of
>> changes (~2 sec delay) whenever you make a change to the source file.
>>
>> If you are not already using this or a similar tool, you should give it a
>> try. Enjoy!
>>
>> Alan
>>
> --
> 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.


Should `list?` be true for a clojure.lang.PersistentQueue item?

2015-09-02 Thread William Tozier
A confusing cond result sent me to an odd place just now, and apparently 
list? is true for the result of (clojure.lang.PersistentQueue/EMPTY) queue 
item. Now technically I see this makes sense, since `list?` "Returns true 
if x implements IPersistentList", and that's absolutely the case for  
`clojure.lang.PersistentQueue`, 
from what I can see.

Is this something I should mention at the Jira instance? Or is it already 
in the works somewhere? I'm not from a Java background, and have no clear 
idea what if anything should be done about it.

Thanks much.

-- 
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.


Stuart Sierra's Component: retries & restarts in production

2015-09-02 Thread josh
TLDR: how do you use Component when the application logic involves retrying 
failed components?

Background:
I'm writing an app that consumes events from a streaming HTTP connection 
and writes those events to a message queue (see Code Illustration #1). It 
seems like that could be captured easily with three components —an HTTP 
stream, a message queue connection, and a "shoveler" that depends on the 
other two (see Code Illustration #2)— *but* the reconnection requirements 
complicate things…
The HTTP connection may be closed at any time by the server; if that 
happens, the app should persistently attempt to reconnect using an 
exponential back-off pattern. In addition, if the app goes thirty seconds 
without receiving any data, it should close the connection and try to 
reconnect. (see Code Illustration #3) It's not clear to me how to best 
express these "retry" requirements in the component lifecycle. Like, is it 
blasphemous for a component to be calling stop and start on its injected 
dependencies?

Some possible approaches:

   - Throw different kinds of exceptions to indicate what should happen 
   (using namespaced keywords, perhaps?), handled by whoever calls 
   component/start on the system-map.
   - The exception provides the component and system at the time of the 
  exception, enabling a sort of "resume" capability.
  - I'm under the impression that relying on exceptions for control 
  flow is an anti-pattern.
   - Create a sort of custom system implementation, one that goes beyond 
   calling start on its components in dependency order to monitor failures 
   and direct retries "appropriately".
  - "A system is a component which knows how to start and stop other 
  components." (from the README)
  So the fact that we want the shoveler component to be capable of 
  restarting the HTTP component indicates that the shoveler should actually 
  be considered a system. (right?)
 - If the HTTP stream is *injected* into the shoveler as a 
 dependency, how is it possible for the shoveler to stop the HTTP 
 stream and then start it again *with* any dependencies the stream 
 may have?
  - Ensure that every component/Lifecycle method implementation is 
   idempotent, so that I can get good-enough "restart" semantics by just 
   calling start-system again.
  - I know that idempotence is generally a Good Thing anyway, but using 
  start-system as a panacea strikes me as crude.
   

Code Illustrations:

1. Rough sketch of app without timeout/retry logic or component:
(defn -main []
  (let [mq-conn (connect-to-queue mq-config)
{event-stream :body} (http/get endpoint {:as :stream})]
(with-open [rdr (java.io/reader event-stream)]
  (doseq [entity (line-seq rdr)]
(write mq-conn entity)

2. Rough sketch of app with component but still without timeout/retry logic:
(defrecord EventStream [endpoint
http-config
stream]
  component/Lifecycle
  (start [this]
(let [response (http/get endpoint (merge {:as :stream} http-config))]
  (assoc this :http-response response, :stream (:body response)))
  (stop [this]
(.close stream)
(-> this (dissoc :http-response) (assoc :stream nil

(defrecord MessageQueue [config
 connection]
  component/Lifecycle
  (start [this]
(assoc this :connection (connect-to-queue config)))
  (stop [this]
(.close connection)
(assoc this :connection nil)))

(defrecord Shoveler [source sink
 worker]
  component/Lifecycle
  (start [this]
;; To avoid blocking indefinitely, we put the processing in a future.
(assoc this :worker (future
 (with-open [rdr (java.io/reader (:stream source)]
   (doseq [entity (line-seq rdr)]
 (write sink entity)
  (stop [this]
(future-cancel worker)
(assoc this :worker nil)))

(defn -main []
  (-> (component/system-map :config (read-config)
:events (map->EventStream {:endpoint endpoint})
:mq-client (map->MessageQueue {})
:shoveler (map->Shoveler {}))
  (component/using {:events {:http-config :config}
:mq-client {:config :config}
:shoveler {:source :events
   :sink :mq-client}})
  component/start))

3. Rough sketch of desired *production* behavior, not using Component:
(defn -main []
  (let [mq-conn (connect-to-queue mq-config)]
(while true  ; ideally, the app is *always* ready to receive incoming 
events & put them into the queue
  (try
(let [{event-stream :body} (loop [conn-timeout 1000]
 (try
   (http/get endpoint
 {:as :stream
 

Re: [ANN] prismatic/schema 1.0 adds automatic test data generation

2015-09-02 Thread Matt Mitchell
I just created a scratch project using schema-1.0.0. Requiring schema.core 
works fine, but coerce throws an exception. Here's the repl session:

user=> (require '[schema.core])

 

nil 

user=> (require '[schema.coerce]) 


 

CompilerException java.lang.RuntimeException: No such var: s/spec, compiling
:(schema/coerce.clj:31:28)



- Matt

On Tuesday, September 1, 2015 at 2:02:30 PM UTC-4, Jason Wolfe wrote:
>
> We're excited to finally bring Schema out of alpha, while introducing some 
> new exciting features around testing: test.check integration and data 
> completion.  Check out the blog post for details about these new 
> applications.
>
> http://blog.getprismatic.com/schema-1-0-released/
>
> We've also rewritten the internals of schema for this release, to make it 
> easier and faster to add new schema types and applications.  We expect 
> ordinary users of Schema should see no breaking changes, but custom schema 
> types or tooling will likely need to be updated.  Please see the changelog 
> for details.
>
> https://github.com/Prismatic/schema/blob/master/CHANGELOG.md
>
> Comments and suggestions welcome!
>

-- 
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: [ANN] prismatic/schema 1.0 adds automatic test data generation

2015-09-02 Thread Jason Wolfe
Hi Matt, 

Thanks for the report.  

I just tried and I'm unable to reproduce.  Can you please open an issue on 
the schema github project with your project.clj and the results of `lein 
deps :tree` and we'll look into it ASAP?  

Thanks,
Jason

On Wednesday, September 2, 2015 at 7:14:21 PM UTC-7, Matt Mitchell wrote:
>
> I just created a scratch project using schema-1.0.0. Requiring schema.core 
> works fine, but coerce throws an exception. Here's the repl session:
>
> user=> (require '[schema.core])
>
>  
>
> nil 
>
> user=> (require '[schema.coerce]) 
>
>
>  
>
> CompilerException java.lang.RuntimeException: No such var: s/spec, 
> compiling:(schema/coerce.clj:31:28)
>
>
>
> - Matt
>
> On Tuesday, September 1, 2015 at 2:02:30 PM UTC-4, Jason Wolfe wrote:
>>
>> We're excited to finally bring Schema out of alpha, while introducing 
>> some new exciting features around testing: test.check integration and data 
>> completion.  Check out the blog post for details about these new 
>> applications.
>>
>> http://blog.getprismatic.com/schema-1-0-released/
>>
>> We've also rewritten the internals of schema for this release, to make it 
>> easier and faster to add new schema types and applications.  We expect 
>> ordinary users of Schema should see no breaking changes, but custom schema 
>> types or tooling will likely need to be updated.  Please see the changelog 
>> for details.
>>
>> https://github.com/Prismatic/schema/blob/master/CHANGELOG.md
>>
>> Comments and suggestions welcome!
>>
>

-- 
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: [ANN] prismatic/schema 1.0 adds automatic test data generation

2015-09-02 Thread Jason Wolfe
Hi Jason,

That's a great question, thanks.  

The exception you point out is just a 
bug: https://github.com/Prismatic/schema/issues/263.  Preconditions 
currently wrap exceptions and return sensible validation errors, we just 
missed this in guards.  Will address this ASAP and cut a new release.  

Outside of that, I can still potentially see the desire to specify 
postconditions rather than preconditions (you'd rather see an error (not 
(integer? "1")) than (throws? (odd? "1")), which will be the behavior when 
the bug is fixed.  We're thinking about whether it's worth the extra 
complexity to support that, what are your thoughts?  If you think it would 
be valuable, please open another issue on github so we can track it -- 
thanks.

As for your solution (s/conditional number? (s/pred pos?)), that will also 
work fine, and you can still use the generator support -- you will just 
have to pass in a leaf generator for your schema (although this admittedly 
isn't ideal).  

Thanks,
Jason



On Wednesday, September 2, 2015 at 9:02:37 AM UTC-7, Jason Felice wrote:
>
> I have a question:  "both" is deprecated with a note to use 
> "s/conditional" instead.  However, that doesn't work for my case.
>
> I have the following: (s/both s/Int (s/pred pos?))
>
> If I rewrite it to (s/conditional pos? s/Int), this throws:
>
> (s/check (s/conditional pos? s/Int) "")
>
> Since (as far as I can tell), I can't verify the type is numeric before 
> applying pos?
>
> I could do this: (s/conditional number? (s/pred pos?)), but I'm going to 
> guess this will defeat test.check support, which I'd like to use.
>
> Thoughts?
>
> On Tue, Sep 1, 2015 at 2:02 PM, Jason Wolfe 
> > wrote:
>
>> We're excited to finally bring Schema out of alpha, while introducing 
>> some new exciting features around testing: test.check integration and data 
>> completion.  Check out the blog post for details about these new 
>> applications.
>>
>> http://blog.getprismatic.com/schema-1-0-released/
>>
>> We've also rewritten the internals of schema for this release, to make it 
>> easier and faster to add new schema types and applications.  We expect 
>> ordinary users of Schema should see no breaking changes, but custom schema 
>> types or tooling will likely need to be updated.  Please see the changelog 
>> for details.
>>
>> https://github.com/Prismatic/schema/blob/master/CHANGELOG.md
>>
>> Comments and suggestions welcome!
>>
>> -- 
>> 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.


Re: How do I print each test name in clojure.test?

2015-09-02 Thread Mayank Jain
Thank you so much, that worked! :)

On Wed, Sep 2, 2015 at 2:36 AM, James Reeves  wrote:

> On 1 September 2015 at 17:34, Mayank Jain  wrote:
>>
>> It throws Stackoverflow error
>>
>> StackOverflowError
>>> clojure.lang.Util.equiv (Util.java:33)
>>> clojure.core/isa? (core.clj:5115)
>>> clojure.lang.Var.invoke (Var.java:388)
>>> clojure.lang.MultiFn.isA (MultiFn.java:123)
>>> clojure.lang.MultiFn.findAndCacheBestMethod (MultiFn.java:177)
>>> clojure.lang.MultiFn.getMethod (MultiFn.java:150)
>>> clojure.lang.MultiFn.getFn (MultiFn.java:158)
>>> clojure.lang.MultiFn.invoke (MultiFn.java:227)
>>
>>
>> Any idea why this could be happening?
>>
>> My mistake, sorry. We need to assign another var to hold the version that
> hasn't been overridden:
>
>   (def old-report clojure.test/report)
>
>   (defmethod custom-report :default [m]
> (old-report m))
>
> That should now work.
>
> - James
>
> --
> 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: Live rendering of AsciiDoc files in Chrome browser

2015-09-02 Thread Atamert Ölçgen
I am using AsciiLight plugin for LightTable and very happy with it:

https://github.com/rundis/AsciiLight

On Wed, Sep 2, 2015 at 10:06 PM, Alan Thompson  wrote:

> Hey,
>
> As you all know, the README files on Github, etc can be formatted using
> the either AsciiDoc (my favorite) or the older MarkDown format.  However,
> it is a pain to edit these files in just a plain text editor without a good
> way of seeing the final, rendered format until you commit and push your
> latest changes up to GH.
>
> If you haven't seen it yet, there is a Chrome extension named
> "Asciidoctor.js" that will render both AsciiDoc *and* MarkDown files into
> HTML right in your browser.  It even features automatic reloading of
> changes (~2 sec delay) whenever you make a change to the source file.
>
> If you are not already using this or a similar tool, you should give it a
> try. Enjoy!
>
> Alan
>
> --
> 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.
>



-- 
Kind Regards,
Atamert Ölçgen

◻◼◻
◻◻◼
◼◼◼

www.muhuk.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/d/optout.