Re: clojure dependencies

2013-04-26 Thread Sean Corfield
On Fri, Apr 26, 2013 at 5:04 PM, jayvandal  wrote:
> I have this code.
> (defproject jsql "1.0.0-SNAPSHOT"
>   :description "FIXME: write"
>   :dependencies [[org.clojure/clojure "1.4.0"]])

That would be your project.clj file, in a Leiningen-created project folder.

When you run:

lein repl

Leiningen will download the dependencies and start a REPL for you to use.

> (use 'clojure.java.jdbc)

This will not work unless your dependencies include the java.jdbc
library, like this:

:dependencies [[org.clojure/clojure "1.4.0"]
 [org.clojure/java.jdbc "0.2.3"]]

That will tell Leiningen to fetch Clojure 1.4.0 and java.jdbc 0.2.3
(and put them in your local ~/.m2/ Maven repository cache. When
Leiningen starts the REPL - or runs a program - it sets up the
classpath for the JVM to include all of the necessary JARs from the
cache.

> My question is where do the dependencies locate? I would put the files in
> the c:\clojure-1.4.0

You don't need to install Clojure when you use Leiningen.
--
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
-- 
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: Strange Loop 2013 CFP

2013-04-26 Thread Alex Miller
Strange Loop is a developer-focused conference that encompasses past (the 
history of computing), present (deep dives on today's technology), and 
future (what's next). Strange Loop will take place in St. Louis from Sept 
18-20th.

The Strange Loop 2013 Call for Presentations is now open! 

https://thestrangeloop.com/sessions-page/call-for-presentations

The call ends **May 9th** and speakers will be notified by May 17th. 
Strange Loop covers airfare and hotel for all speakers (see the CFP page 
for more detail). 

This open call is looking for 40 minute sessions, 3 hr workshops, and talks 
for the co-located Emerging Languages Camp. Desired topics include 
programming languages, distributed systems, databases, web, and mobile.

Check out last year's archive to get an idea for what Strange Loop is all 
about! http://thestrangeloop.com/archive/2012

If you have any questions, contact i...@thestrangeloop.com.

Alex Miller 

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




clojure dependencies

2013-04-26 Thread jayvandal
I have this code.
(defproject jsql "1.0.0-SNAPSHOT"
  :description "FIXME: write"
  :dependencies [[org.clojure/clojure "1.4.0"]])(use 'clojure.java.jdbc)


My question is where do the dependencies locate? I would put the files in 
the c:\clojure-1.4.0
How does clojure know where they are?  Are they in 
c:\clojure-1.4.0\org\clojure folder?

-- 
-- 
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: What Slows Down clojure-hadoop?

2013-04-26 Thread Ji Zhang
Hi Gary,

Thanks for the correction. It was a spur-of-the-moment statement. And I 
find out that when reusing JVM, Clojure also needs to be paid attention to. 
For instance, I define an atom in the mapper namespace to use as a counter. 
It turns out that the next mapper task run in this JVM will inherit the 
value. So I need to reset! it in the mapper-setup function.

Also I tried :aot :all, it doesn't help. I guess it's the clojure.core 
namespace that takes a lot of startup time. 

As for the short running process of each mapper task, it's really an issue. 
Our hadoop team seems to cut the inputs into too small parts, so the number 
of mapper task is corresponding to the splits. Thus  reusing JVM or 
use CombineFileInputFormat may help with this situation.

After all, Clojure's not slow. I'm happy again~

On Saturday, April 27, 2013 3:58:01 AM UTC+8, Gary Trakhman wrote:
>
> this doesn't quite make sense: "Since Clojure is well-known for its 
> concurrency feature, running in the same JVM should be out of question."
>
> All the concurrency features built in to clojure are concerned with things 
> that happen in the same process, unless you consider things like 'making it 
> easier to use queues' to be those kinds of features that affect 
> multi-process stuff.
>
> A concurrency focus doesn't say anything about philosophy of 
> processes/threads or anything like that.  MapReduce is dictating the 
> process model here which goes against the grain of what java's good at 
> doing, with the assumption that you'll be working with a *lot* of data and 
> won't care.  Something that takes 21 seconds isn't optimal use of 
> mapreduce.  Try it with something that takes a few minutes at least.
>
> However, you can help startup time in a number of ways, AOT compilation 
> can help a bit, as well as judicious use of third-party code and keeping 
> class dependencies low.
>
>
> On Fri, Apr 26, 2013 at 12:02 PM, Ji Zhang 
> > wrote:
>
>> Hi,
>>
>> I believe I can confirm that it's the startup time issue.
>>
>> I set mapred.job.reuse.jvm.num.tasks=-1 and the overall time is 
>> approximate to the pure java one. The best mapper task is the same time, 
>> 3sec. Before it is 10sec. The lowest task's difference is still 12sec 
>> (21sec - 9 sec).
>>
>> Since Clojure is well-known for its concurrency feature, running in the 
>> same JVM should be out of question.
>>
>> Besides, my company's hadoop team seems to cut the files into too small 
>> pieces, which result in too many mapper tasks. So the reuse is crucial for 
>> clojure.
>>
>>
>> On Friday, April 26, 2013 6:05:33 PM UTC+8, Ji Zhang wrote:
>>>
>>> Hi,
>>>
>>> I'm writing map-reduce job with Clojure, yet to find that it seems to be 
>>> much slower than a Jave job. 
>>>
>>> So I write a simple test case, and upload to gist:
>>> https://gist.github.com/**jizhang/5466149
>>>
>>> At the end of code, there is execution outputs, here are some 
>>> significant stats:
>>>
>>> Average time taken by Map tasks: Java 7sec, Clojure 19sec
>>> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>>>
>>> I'm wondering what slows down the Clojure written map-reduce job. Am I 
>>> using it wrong, or it's just an inappropriate senario.
>>>
>>> Any thoughts will be great. Thanks!
>>>
>>> Jerry
>>>
>>  -- 
>> -- 
>> 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/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: Image analysis library recommendations

2013-04-26 Thread Mikera
Maybe my hobby project Clisk can be of some use:

https://github.com/mikera/clisk

It's Clojure based and geared towards image generation but does have some 
capabilities for image analysis and processing, particularly if you are 
interesting in warping / filtering etc.



On Wednesday, 24 April 2013 02:54:20 UTC+8, Nils Blum-Oeste wrote:
>
> Hi,
>
> I would like to do some image analysis with clojure. So I am looking for 
> good libraries for that.
>
> Most important would be a good support for image segmentation. 
> Tresholding, histogram based methods, edge detection and region growing are 
> among the things I would like to have. Support for real time image analysis 
> is not needed, I want to transform static image files.
> Furthermore I am looking for a nice image import/export. This does not 
> have to be the same library, but would be great if things work together 
> nicely.
>
> Of course a pure clojure thing would be awesome, but using java interop 
> would be okay too.
> I have some background in image analysis and don't need to have all the 
> matrix stuff abstracted away. However, I don't want to rebuild all the 
> necessary algorithms myself, but focus on getting the parametrization right 
> and figuring out the best segmenation strategy instead.
>
> Currently I am evaluating incanter (also interested in this is a general 
> data analysis tool) and I wanted to have a look at OpenCV.
>
> If someone could recommend good libraries would be great. I really 
> appreciate any hints, recommendations and shared experience.
>
> Thanks and cheers
> Nils
>

-- 
-- 
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: noob question about try/catch

2013-04-26 Thread Sean Corfield
What does your code look like that queries MySQL? The above code
writes to MongoDB which is not going to throw SQLException anyway.

On Fri, Apr 26, 2013 at 8:01 AM, larry google groups
 wrote:
>
> I wrote a simple app that gets my data out of an old mysql database and puts
> it into mongodb. I have this function:
>
> (defn add-this-record-to-mongo [db record item-type]
>   (println (str (:user db)))
>   (println (str item-type))
>   (try
> (let [record (assoc record :item-type item-type)
>   record (assoc record :community (:user db))
>   item-name (str (:community record) "-" (:item-type record) "-"
> (:id record))
>   record (assoc record :item-name item-name)]
>   (mongo/persist-document-to-database record))
> (catch java.sql.SQLException e (println (apply str e)
>
> Right now, when I run this app, it grabs the first 147,879 records and then
> dies with this exception:
>
> java.lang.RuntimeException: java.sql.SQLException: Cannot convert value
> '-00-00 00:00:00' from column 6 to TIMESTAMP.
>
> I thought I had written the try/catch blog so that this exception would be
> logged, but otherwise ignored.
>
> Instead, this exception stops my app cold -- the app stops.
>
> How do I get the app to ignore these exceptions?
>
> --
> --
> 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.
>
>



-- 
Sean A Corfield -- (904) 302-SEAN
An Architect's View -- http://corfield.org/
World Singles, LLC. -- http://worldsingles.com/

"Perfection is the enemy of the good."
-- Gustave Flaubert, French realist novelist (1821-1880)

-- 
-- 
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: Image analysis library recommendations

2013-04-26 Thread fmjrey


I recently came across BoofCV  (http://boofcv.org/), an 
all Java library that is still being developed but looks already well 
featured.

Never tried it though, let us know how that goes if you do.

Cheers

On Tuesday, April 23, 2013 8:54:20 PM UTC+2, Nils Blum-Oeste wrote:
>
> I would like to do some image analysis with clojure. So I am looking for 
> good libraries for that.
>

-- 
-- 
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] Immutant 0.10.0 released

2013-04-26 Thread Jim Crossley
Well, we had hoped to begin our 1.0 beta cycle with this release, but we 
decided we changed enough stuff that we wanted to put out one more alpha 
first, mainly because we think it's wrong to introduce any API changes with 
the first beta.

The details of what we changed are here: http://bit.ly/immutant0100

Big items on the horizon are ritz integration, zero-downtime deploys, and 
our old friend, websockets, but we likely won't hold up the beta for those.
 
# What is Immutant? 

Immutant is an application server for Clojure. It's an integrated platform 
built on JBoss AS7 that aims to reduce the incidental complexity in 
real-world applications. It provides support for Ring handlers, 
asynchronous messaging, caching, scheduled jobs, XA transactions, 
clustering, and highly-available "daemon" services. 

Thanks,
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 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] hamelito - bringing haml to enlive

2013-04-26 Thread Gabriel Horner
Nice work! Happy to see you exercising haml-spec. Will definitely be using 
this next time I reach for a templating library.

On Friday, April 26, 2013 10:46:32 AM UTC-4, Ragnar Dahlén wrote:
>
> Hello,
>
> I'd like to announce the availability of hamelito, a clojure library
> allowing you to use a subset of haml (http://www.haml.info) with
> enlive (http://github.com/cgrand/enlive).
>
> The source code is available under the EPL and is hosted at:
> http://github.com/ragnard/hamelito
>
> Artifacts are published to clojars:
> https://clojars.org/com.github.ragnard/hamelito
>
> Please see the readme for the latest available release, and updates
> on the project.
>
> We've been using hamelito at uSwitch for one of our internal clojure
> applications for a while and it's been working quite well. That said,
> I expect it to crash and burn for some more (or maybe less) exotic
> haml input. Any feedback, bug reports and/or code contributions are
> much appreciated.
>
> I've also started writing a few blog posts on my experience using
> enlive, one on hamelito in particular, which you might find relevant:
> http://ragnard.github.io/2013/04/19/exploring-enlive-haml.html
>
> Cheers,
>
> Ragnar
>
>

-- 
-- 
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: cannot read foo.xml from the top level of a jar!

2013-04-26 Thread Softaddicts
Have a look at this code. It might shed some light on your problem.

https://github.com/lprefontaine/Boing/blob/1.3.0/src/boing/resource.clj

We are using it with 1.3 but it should work under 1.5.x
Feel free to copy it and try it, it's standalone without dependencies other than
Clojure.

As far as we know it's problem free.

Luc P.


> tried both... nothing worked... :(
> 
> Jim
> 
> On 26/04/13 20:16, Jonathan Fischer Friberg wrote:
> > Did you put "/" at the beginning of the string to resource? Because 
> > you shouldn't.
> >
> > You should call it like this: (resource "foo.xml").
> >
> > Jonathan
> >
> >
> > On Fri, Apr 26, 2013 at 8:47 PM, Jim - FooBar();  > > wrote:
> >
> > Hello everyone,
> >
> > I hope you're all doing well...
> >
> > Can anyone enlighten my as to why I cannot read anything from the
> > top directory of a jar? The jar in question is on the classpath
> > and the foo.xml file is located  at the top directory...tries
> > clojure.java.io/resource  tried
> > .getResourceAsStream from the classloader + the Class object...
> >
> > any ideas?
> >
> > thanks,
> > 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 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.
> 
> 
> 
--
Softaddicts sent by ibisMail from my ipad!

-- 
-- 
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: What Slows Down clojure-hadoop?

2013-04-26 Thread Gary Trakhman
this doesn't quite make sense: "Since Clojure is well-known for its
concurrency feature, running in the same JVM should be out of question."

All the concurrency features built in to clojure are concerned with things
that happen in the same process, unless you consider things like 'making it
easier to use queues' to be those kinds of features that affect
multi-process stuff.

A concurrency focus doesn't say anything about philosophy of
processes/threads or anything like that.  MapReduce is dictating the
process model here which goes against the grain of what java's good at
doing, with the assumption that you'll be working with a *lot* of data and
won't care.  Something that takes 21 seconds isn't optimal use of
mapreduce.  Try it with something that takes a few minutes at least.

However, you can help startup time in a number of ways, AOT compilation can
help a bit, as well as judicious use of third-party code and keeping class
dependencies low.


On Fri, Apr 26, 2013 at 12:02 PM, Ji Zhang  wrote:

> Hi,
>
> I believe I can confirm that it's the startup time issue.
>
> I set mapred.job.reuse.jvm.num.tasks=-1 and the overall time is
> approximate to the pure java one. The best mapper task is the same time,
> 3sec. Before it is 10sec. The lowest task's difference is still 12sec
> (21sec - 9 sec).
>
> Since Clojure is well-known for its concurrency feature, running in the
> same JVM should be out of question.
>
> Besides, my company's hadoop team seems to cut the files into too small
> pieces, which result in too many mapper tasks. So the reuse is crucial for
> clojure.
>
>
> On Friday, April 26, 2013 6:05:33 PM UTC+8, Ji Zhang wrote:
>>
>> Hi,
>>
>> I'm writing map-reduce job with Clojure, yet to find that it seems to be
>> much slower than a Jave job.
>>
>> So I write a simple test case, and upload to gist:
>> https://gist.github.com/**jizhang/5466149
>>
>> At the end of code, there is execution outputs, here are some significant
>> stats:
>>
>> Average time taken by Map tasks: Java 7sec, Clojure 19sec
>> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>>
>> I'm wondering what slows down the Clojure written map-reduce job. Am I
>> using it wrong, or it's just an inappropriate senario.
>>
>> Any thoughts will be great. Thanks!
>>
>> Jerry
>>
>  --
> --
> 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: cannot read foo.xml from the top level of a jar!

2013-04-26 Thread Jim - FooBar();

tried both... nothing worked... :(

Jim

On 26/04/13 20:16, Jonathan Fischer Friberg wrote:
Did you put "/" at the beginning of the string to resource? Because 
you shouldn't.


You should call it like this: (resource "foo.xml").

Jonathan


On Fri, Apr 26, 2013 at 8:47 PM, Jim - FooBar(); > wrote:


Hello everyone,

I hope you're all doing well...

Can anyone enlighten my as to why I cannot read anything from the
top directory of a jar? The jar in question is on the classpath
and the foo.xml file is located  at the top directory...tries
clojure.java.io/resource  tried
.getResourceAsStream from the classloader + the Class object...

any ideas?

thanks,
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 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: cannot read foo.xml from the top level of a jar!

2013-04-26 Thread Jonathan Fischer Friberg
Did you put "/" at the beginning of the string to resource? Because you
shouldn't.

You should call it like this: (resource "foo.xml").

Jonathan


On Fri, Apr 26, 2013 at 8:47 PM, Jim - FooBar(); wrote:

> Hello everyone,
>
> I hope you're all doing well...
>
> Can anyone enlighten my as to why I cannot read anything from the top
> directory of a jar? The jar in question is on the classpath and the foo.xml
> file is located  at the top directory...tries clojure.java.io/resourcetried 
> .getResourceAsStream from the classloader + the Class object...
>
> any ideas?
>
> thanks,
> 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+unsubscribe@**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+unsubscribe@**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: Image analysis library recommendations

2013-04-26 Thread Herwig Hochleitner
Maybe the opencv stack can do something for you: http://opencv.org/
It's got java bindings.

cheers


2013/4/26 Nils Blum-Oeste 

> Thx Cedric!
>
> Indeed I am using ClojureJVM. Getting images from filesystem isn't a big
> deal. Of course javax.imageio does a good job here, like you said!
> Also I am not intersted (yet) in meta information of the images.
>
> My concern about image IO was more about not having to transform back and
> forth data between differents types and formats during import, processing
> and export.
>
> Good to know that exif data is at hand though, thanks!
>
> On Tuesday, April 23, 2013 11:47:49 PM UTC+2, Cedric Greevey wrote:
>
>> On Tue, Apr 23, 2013 at 2:54 PM, Nils Blum-Oeste > > wrote:
>>
>>> Furthermore I am looking for a nice image import/export. This does not
>>> have to be the same library, but would be great if things work together
>>> nicely.
>>>
>>
>> If you're using ClojureJVM, at least, you have this already (and even the
>> capacity to add format plugins!).
>>
>> Check out javax.imageio.
>>
>> One plugin in particular you might want to get is the TIF plugin. It adds
>> both .tif image format support *and* the ability to extract exif metadata
>> from any format that supports it, including jpeg. It's handy if you want to
>> get the info that cameras put in jpegs they take, or the keywords, caption,
>> and rating that Windows users can give to jpegs using the default Windows
>> picture previewer. Sadly, there's no simple "getKeywords" function or
>> similar, though; you need to do a bit of hacking to retrieve particular
>> exif metadata fields, and a bit of Googling to find out what those are. On
>> the other hand, creating a wrapper library in Clojure to provide a much
>> nicer interface to the exif metadata might be worthwhile -- perhaps a
>> function to read the metadata from an image file and return a Clojure map
>> with meaningful keys and the corresponding values that were found in the
>> image, such as
>>
>> {:focal-length "3.50 mm"
>>  :keywords ["tree" "pine" "white pine" "Pinus strobus" "Appalachia"
>> "Pennsylvania" "nature"]
>>  :caption "White pine growing at 1780ft elevation in the central
>> Appalachia"
>>  :date-taken }
>>
>>  --
> --
> 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.




cannot read foo.xml from the top level of a jar!

2013-04-26 Thread Jim - FooBar();

Hello everyone,

I hope you're all doing well...

Can anyone enlighten my as to why I cannot read anything from the top 
directory of a jar? The jar in question is on the classpath and the 
foo.xml file is located  at the top directory...tries 
clojure.java.io/resource tried .getResourceAsStream from the classloader 
+ the Class object...


any ideas?

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




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

2013-04-26 Thread larry google groups
I have tried putting (friend/authenticate) at the beginning and end of this 
block:


(def app
  (-> app-routes
  (wrap-session {:cookie-name "timeout-session" :cookie-attrs {:max-age 
90}})
  (wrap-cookies)
  (wrap-multipart-params)
  (wrap-params)
  (wrap-nested-params)
  (wrap-keyword-params)
  (friend/authenticate {:workflows [(workflows/interactive-form)]
:credential-fn (partial 
creds/bcrypt-credential-fn users)
:login-uri "/login"
:unauthorized-redirect-uri "/login" 
:default-landing-uri "/admin"})))


and: 


(def app
  (-> app-routes
  (friend/authenticate {:workflows [(workflows/interactive-form)]
:credential-fn (partial 
creds/bcrypt-credential-fn users)
:login-uri "/login"
:unauthorized-redirect-uri "/login" 
:default-landing-uri "/admin"})
  (wrap-session {:cookie-name "timeout-session" :cookie-attrs {:max-age 
90}})
  (wrap-cookies)
  (wrap-multipart-params)
  (wrap-params)
  (wrap-nested-params)
  (wrap-keyword-params)
))


but that doesn't seem to matter. 

I defined my one user in the namespace as: 

(def users {"admin" {:username "admin"
 :password (creds/hash-bcrypt "47010thave")
 :roles #{::admin}}})

If I point my broswer here:

localhost:3/admin

I get redirected to here:

localhost:3/admin

I then fill in this form:

Username: Password: 

If I print the request to the terminal, the form params are all blank:

{:ssl-client-cert nil,
 :remote-addr "0:0:0:0:0:0:0:1",
 :scheme :http,
 :query-params {"username" "", "login_failed" "Y", "" nil},
 :session {},
 :cemerick.friend/auth-config
 {:unauthorized-redirect-uri "/login",
  :allow-anon? true,
  :default-landing-uri "/admin",
  :login-uri "/login",
  :credential-fn
  #,
  :workflows
  [#],
  :unauthenticated-handler
  #>,
  :unauthorized-handler
  #>},
 :form-params {},
 :multipart-params {},
 :request-method :get,
 :query-string "&login_failed=Y&username=",
 :route-params {},
 :content-type nil,
 :cookies {"timeout-kiosk" {:value "timeout-kiosk3312112"}},
 :uri "/login",
 :server-name "localhost",
 :params {"" nil, "login_failed" "Y", "username" ""},
 :headers
 {"user-agent"
  "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/537.31 
(KHTML, like Gecko) Chrome/26.0.1410.65 Safari/537\
.31",
  "cookie" "timeout-kiosk=timeout-kiosk3312112",
  "accept-charset" "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
  "accept"
  "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
  "host" "localhost:30001",
  "referer" "http://localhost:30001/login?&login_failed=Y&username=";,
  "cache-control" "max-age=0",
  "accept-encoding" "gzip,deflate,sdch",
  "accept-language" "en-US,en;q=0.8",
  "connection" "keep-alive"},
 :content-length nil,
 :server-port 30001,
 :character-encoding nil,
 :body #}



I have defined the routes like this:


(defroutes app-routes
  (ANY "/" request (home-page request))
  (GET "/login" request (login request))
  (friend/logout (ANY "/logout" request (ring.util.response/redirect "/")))
  (GET "/serve-file/:file-id" request (serve-file request))
  (GET "/home/:slides-id" request (home-page request))
  (GET "/action/:action-to-perform" request (action request))
  (GET "/admin" request
   (friend/authorize #{::admin}  (admin request)))
  (GET "/admin/list/:item-type" [item-type] (admin-list item-type))
  (GET "/admin/edit/:item-type" request (admin-forms request))
  (GET "/admin/edit/:item-type/:item-name" request (admin-forms request))
  (POST "/admin/edit/:item-type/:item-name" request 
(admin-process-form-input request))
  (POST "/admin/edit/:item-type" request (admin-process-form-input request))
  (GET "/admin/delete/:item-type/:item-name" request 
(admin-delete-ask-for-confirmation request))
  (POST "/admin/delete/:item-type/:item-name" request 
(admin-delete-finalized request))
  (GET "/admin/clone/:item-type/:item-name" request (admin-clone-this-item 
request))
  (GET "/admin/preview/:item-type/:item-name" request (admin-preview 
request))
  (GET "/admin/upload" request (admin-upload request))
  (route/resources "/")
  (route/not-found "Page not found"))


And the login function looks like this:

(defn login [request]
  (println (pp/pprint request))
  "2013-03-01 - the default name of the function expected by the Friend 
authorization library."
  (timbre/spy :debug " the return value of the login page: "
  (let [login-template (enlive/html-resource 
"templates/login.html")
login-html  (apply str (enlive/emit* login-template))
layout (enlive/html-resource "templates/admin.html")
layout (enlive/transform layout
 [:#outer]
 (enliv

Re: Reducers newbie question

2013-04-26 Thread Jim - FooBar();

+1 ! I use 'fold-into-vec' regularly :)

Jim

On 26/04/13 18:07, Alan Busby wrote:

Some additional pointers here (this is a little old though);
http://www.thebusby.com/2012/07/tips-tricks-with-clojure-reducers.html


On Fri, Apr 26, 2013 at 11:51 PM, László Török > wrote:


Hi,

Not sure what you are trying to do, but xxx is a lazy seq, thus it
can only be consumed sequentially and fold falls back to reduce

You need a vector.

Las

Sent from my phone

On Apr 26, 2013 4:46 PM, "Stanislav Yurin" mailto:jusk...@gmail.com>> wrote:

I was assuming that following code will fold in parallel, but
it is reduced sequentially

(require '[clojure.core.reducers :as r])
(defn test1
[x]
(Thread/sleep 1000)
(println (str "Finished:" x))
x)
(def xxx (r/map test1 (range 100)))
(r/fold + xxx)

What am I doing wrong?
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/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.




--
--
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: Reducers newbie question

2013-04-26 Thread Alan Busby
Some additional pointers here (this is a little old though);
http://www.thebusby.com/2012/07/tips-tricks-with-clojure-reducers.html


On Fri, Apr 26, 2013 at 11:51 PM, László Török  wrote:

> Hi,
>
> Not sure what you are trying to do, but xxx is a lazy seq, thus it can
> only be consumed sequentially and fold falls back to reduce
>
> You need a vector.
>
> Las
>
> Sent from my phone
> On Apr 26, 2013 4:46 PM, "Stanislav Yurin"  wrote:
>
>> I was assuming that following code will fold in parallel, but it is
>> reduced sequentially
>>
>> (require '[clojure.core.reducers :as r])
>> (defn test1
>>  [x]
>> (Thread/sleep 1000)
>>  (println (str "Finished:" x))
>> x)
>> (def xxx (r/map test1 (range 100)))
>> (r/fold + xxx)
>>
>> What am I doing wrong?
>> 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/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: Image analysis library recommendations

2013-04-26 Thread Nils Blum-Oeste
Thx Cedric!

Indeed I am using ClojureJVM. Getting images from filesystem isn't a big 
deal. Of course javax.imageio does a good job here, like you said!
Also I am not intersted (yet) in meta information of the images.

My concern about image IO was more about not having to transform back and 
forth data between differents types and formats during import, processing 
and export.

Good to know that exif data is at hand though, thanks!

On Tuesday, April 23, 2013 11:47:49 PM UTC+2, Cedric Greevey wrote:
>
> On Tue, Apr 23, 2013 at 2:54 PM, Nils Blum-Oeste 
> 
> > wrote:
>
>> Furthermore I am looking for a nice image import/export. This does not 
>> have to be the same library, but would be great if things work together 
>> nicely.
>>
>
> If you're using ClojureJVM, at least, you have this already (and even the 
> capacity to add format plugins!).
>
> Check out javax.imageio.
>
> One plugin in particular you might want to get is the TIF plugin. It adds 
> both .tif image format support *and* the ability to extract exif metadata 
> from any format that supports it, including jpeg. It's handy if you want to 
> get the info that cameras put in jpegs they take, or the keywords, caption, 
> and rating that Windows users can give to jpegs using the default Windows 
> picture previewer. Sadly, there's no simple "getKeywords" function or 
> similar, though; you need to do a bit of hacking to retrieve particular 
> exif metadata fields, and a bit of Googling to find out what those are. On 
> the other hand, creating a wrapper library in Clojure to provide a much 
> nicer interface to the exif metadata might be worthwhile -- perhaps a 
> function to read the metadata from an image file and return a Clojure map 
> with meaningful keys and the corresponding values that were found in the 
> image, such as
>
> {:focal-length "3.50 mm"
>  :keywords ["tree" "pine" "white pine" "Pinus strobus" "Appalachia" 
> "Pennsylvania" "nature"]
>  :caption "White pine growing at 1780ft elevation in the central 
> Appalachia"
>  :date-taken }
>
>

-- 
-- 
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: Image analysis library recommendations

2013-04-26 Thread Nils Blum-Oeste
I had a look at incanter/processing meanwhile. But this does not offer very 
much for image analysis. However processing will become useful to 
modify/render images.

Next I am going to evaluate OpenCV which recently got Java bindings. 
Setting it up wasn't as straight forward as I thought but in the end it did 
work and I was able to rewrite an example from OpenCV documentation in 
Clojure. Setup and this example are described in a new post on my 
blog
.

I am going to post another update here once I did work a little more with 
OpenCV. Meanwhile, please share your experience with image analysis in 
clojure please.

On Tuesday, April 23, 2013 8:54:20 PM UTC+2, Nils Blum-Oeste wrote:
>
> Hi,
>
> I would like to do some image analysis with clojure. So I am looking for 
> good libraries for that.
>
> Most important would be a good support for image segmentation. 
> Tresholding, histogram based methods, edge detection and region growing are 
> among the things I would like to have. Support for real time image analysis 
> is not needed, I want to transform static image files.
> Furthermore I am looking for a nice image import/export. This does not 
> have to be the same library, but would be great if things work together 
> nicely.
>
> Of course a pure clojure thing would be awesome, but using java interop 
> would be okay too.
> I have some background in image analysis and don't need to have all the 
> matrix stuff abstracted away. However, I don't want to rebuild all the 
> necessary algorithms myself, but focus on getting the parametrization right 
> and figuring out the best segmenation strategy instead.
>
> Currently I am evaluating incanter (also interested in this is a general 
> data analysis tool) and I wanted to have a look at OpenCV.
>
> If someone could recommend good libraries would be great. I really 
> appreciate any hints, recommendations and shared experience.
>
> Thanks and cheers
> Nils
>

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




conform to interface for related multi-methods?

2013-04-26 Thread Steven Degutis
I found that I want to have multiple multi-methods, but grouped
together, much like an interface.

Specifically, I have already-existing objects, which I want to call
the method on, so just like defmulti/defmethod. But I basically want
to group several of them together since they're very related, much
like you would see in defprotocol.

Is this possible in Clojure? Or do I have to just implement each of
the defmethods independently as usual?

-Steven

-- 
-- 
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: noob question about try/catch

2013-04-26 Thread Michael Gardner
On Apr 26, 2013, at 11:55 , Michael Gardner  wrote:

> I believe Clojure is wrapping the java.sql.SQLException in a 
> java.lang.RuntimeException because of reasons[1][2], so you'd need to catch 
> java.lang.RuntimeException and examine the exception's cause property to get 
> the "real" exception.
> 
> [1] http://dev.clojure.org/jira/browse/CLJ-855
> [2] https://groups.google.com/d/msg/clojure/I5l1YHVMgkI/nt8t9aHNVEYJ

…though I just noticed that JIRA issue was closed in 1.3, so unless you're 
still on 1.3 it doesn't actually explain why you're getting wrapped exceptions.

-- 
-- 
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: noob question about try/catch

2013-04-26 Thread Michael Gardner
On Apr 26, 2013, at 10:01 , larry google groups  
wrote:

> java.lang.RuntimeException: java.sql.SQLException: Cannot convert value 
> '-00-00 00:00:00' from column 6 to TIMESTAMP.

I believe Clojure is wrapping the java.sql.SQLException in a 
java.lang.RuntimeException because of reasons[1][2], so you'd need to catch 
java.lang.RuntimeException and examine the exception's cause property to get 
the "real" exception.

[1] http://dev.clojure.org/jira/browse/CLJ-855
[2] https://groups.google.com/d/msg/clojure/I5l1YHVMgkI/nt8t9aHNVEYJ

-- 
-- 
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: noob question about try/catch

2013-04-26 Thread larry google groups
> See http://clojure.org/special_forms#try , you're still responsible for 
the 
> logic in the catch to ignore the exception.  

But I have caught the exceptions, so why do they kill my app? 

You link to this, which does not answer the question: 

"The exprs are evaluated and, if no exceptions occur, the value of the last 
is returned. If an exception occurs and catch clauses are provided, each is 
examined in turn and the first for which the thrown exception is an 
instance of the named class is considered a matching catch clause. If there 
is a matching catch clause, its exprs are evaluated in a context in which 
name is bound to the thrown exception, and the value of the last is the 
return value of the function. If there is no matching catch clause, the 
exception propagates out of the function. Before returning, normally or 
abnormally, any finally exprs will be evaluated for their side effects."

I catch the exception and log it. And then the exception kills the app? 
Why? 






On Friday, April 26, 2013 11:53:04 AM UTC-4, George Oliver wrote:
>
>
>
> On Friday, April 26, 2013 8:01:45 AM UTC-7, larry google groups wrote:
>>
>>
>> I thought I had written the try/catch blog so that this exception would 
>> be logged, but otherwise ignored. 
>>
>> Instead, this exception stops my app cold -- the app stops. 
>>
>>
>>
> See http://clojure.org/special_forms#try , you're still responsible for 
> the logic in the catch to ignore the exception.  
>

-- 
-- 
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: growing a rest json/xml api

2013-04-26 Thread Thomas
this page seems to have an answer to your question:

http://stackoverflow.com/questions/9657897/how-to-distinguish-html-vs-xhr-xml-json-requests-in-compojure-ring

haven't tried it my self though.

Thomas

On Thursday, April 25, 2013 4:21:28 AM UTC+1, Jorge Urdaneta wrote:
>
> Hi, can you point me out best practices/libraries to make a rest api with 
> ring with json/xml output depending on "Accepts" request header?
>

-- 
-- 
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: What Slows Down clojure-hadoop?

2013-04-26 Thread Ji Zhang
Hi,

I believe I can confirm that it's the startup time issue.

I set mapred.job.reuse.jvm.num.tasks=-1 and the overall time is approximate 
to the pure java one. The best mapper task is the same time, 3sec. Before 
it is 10sec. The lowest task's difference is still 12sec (21sec - 9 sec).

Since Clojure is well-known for its concurrency feature, running in the 
same JVM should be out of question.

Besides, my company's hadoop team seems to cut the files into too small 
pieces, which result in too many mapper tasks. So the reuse is crucial for 
clojure.

On Friday, April 26, 2013 6:05:33 PM UTC+8, Ji Zhang wrote:
>
> Hi,
>
> I'm writing map-reduce job with Clojure, yet to find that it seems to be 
> much slower than a Jave job. 
>
> So I write a simple test case, and upload to gist:
> https://gist.github.com/jizhang/5466149
>
> At the end of code, there is execution outputs, here are some significant 
> stats:
>
> Average time taken by Map tasks: Java 7sec, Clojure 19sec
> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>
> I'm wondering what slows down the Clojure written map-reduce job. Am I 
> using it wrong, or it's just an inappropriate senario.
>
> Any thoughts will be great. Thanks!
>
> Jerry
>

-- 
-- 
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: noob question about try/catch

2013-04-26 Thread George Oliver


On Friday, April 26, 2013 8:01:45 AM UTC-7, larry google groups wrote:
>
>
> I thought I had written the try/catch blog so that this exception would be 
> logged, but otherwise ignored. 
>
> Instead, this exception stops my app cold -- the app stops. 
>
>
>
See http://clojure.org/special_forms#try , you're still responsible for the 
logic in the catch to ignore the exception.  

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




noob question about try/catch

2013-04-26 Thread larry google groups

I wrote a simple app that gets my data out of an old mysql database and 
puts it into mongodb. I have this function:

(defn add-this-record-to-mongo [db record item-type]
  (println (str (:user db)))
  (println (str item-type))
  (try 
(let [record (assoc record :item-type item-type)
  record (assoc record :community (:user db))
  item-name (str (:community record) "-" (:item-type record) "-" 
(:id record))
  record (assoc record :item-name item-name)]
  (mongo/persist-document-to-database record))
(catch java.sql.SQLException e (println (apply str e)

Right now, when I run this app, it grabs the first 147,879 records and then 
dies with this exception:

java.lang.RuntimeException: java.sql.SQLException: Cannot convert value 
'-00-00 00:00:00' from column 6 to TIMESTAMP.

I thought I had written the try/catch blog so that this exception would be 
logged, but otherwise ignored. 

Instead, this exception stops my app cold -- the app stops. 

How do I get the app to ignore these exceptions? 

-- 
-- 
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: Reducers newbie question

2013-04-26 Thread László Török
Hi,

Not sure what you are trying to do, but xxx is a lazy seq, thus it can only
be consumed sequentially and fold falls back to reduce

You need a vector.

Las

Sent from my phone
On Apr 26, 2013 4:46 PM, "Stanislav Yurin"  wrote:

> I was assuming that following code will fold in parallel, but it is
> reduced sequentially
>
> (require '[clojure.core.reducers :as r])
> (defn test1
> [x]
> (Thread/sleep 1000)
> (println (str "Finished:" x))
> x)
> (def xxx (r/map test1 (range 100)))
> (r/fold + xxx)
>
> What am I doing wrong?
> 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/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] hamelito - bringing haml to enlive

2013-04-26 Thread Ragnar Dahlén
Hello,

I'd like to announce the availability of hamelito, a clojure library
allowing you to use a subset of haml (http://www.haml.info) with
enlive (http://github.com/cgrand/enlive).

The source code is available under the EPL and is hosted at:
http://github.com/ragnard/hamelito

Artifacts are published to clojars:
https://clojars.org/com.github.ragnard/hamelito

Please see the readme for the latest available release, and updates
on the project.

We've been using hamelito at uSwitch for one of our internal clojure
applications for a while and it's been working quite well. That said,
I expect it to crash and burn for some more (or maybe less) exotic
haml input. Any feedback, bug reports and/or code contributions are
much appreciated.

I've also started writing a few blog posts on my experience using
enlive, one on hamelito in particular, which you might find relevant:
http://ragnard.github.io/2013/04/19/exploring-enlive-haml.html

Cheers,

Ragnar

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




Reducers newbie question

2013-04-26 Thread Stanislav Yurin
I was assuming that following code will fold in parallel, but it is reduced 
sequentially

(require '[clojure.core.reducers :as r])
(defn test1 
[x] 
(Thread/sleep 1000) 
(println (str "Finished:" x))
x)
(def xxx (r/map test1 (range 100)))
(r/fold + xxx)

What am I doing wrong?
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/groups/opt_out.




Re: Aw: Re: How to convert a VTK example from java to clojure?

2013-04-26 Thread Aaron Cohen
You no longer need any of this. All you should need is to use
(clojure.lang.RT/loadLibrary "vtk")

That will ensure that the native libs end up in the correct classloader.


On Fri, Apr 26, 2013 at 3:46 AM, Nils Blum-Oeste
wrote:

> Great, thanks a lot. Fixed the issues I had.
> However I wonder where 'wall-hack-method' lives now, as clojure-contrib
> has been split.
> This (old) thread suggests it has also been renamed to call-method
> https://groups.google.com/forum/?fromgroups=#!topic/clojure-dev/tKzqnJWpz-k
>
> So is this still included in one of the clojure-contrib libraries?
>
> On Tuesday, June 21, 2011 11:19:44 PM UTC+2, Aaron Cohen wrote:
>
>> OK, I've gotten it working on my computer, and it turns out to be a
>> slightly complicated problem.
>>
>> What is happening is that the vtk java files and your clojure code are
>> using different classloaders (clojure uses its own classloader).
>>
>> System/loadLibrary is kind of crippled in that it always loads the
>> library into the ClassLoader of the _invoking class's_ classLoader. I
>> was hoping it would use the Thread's context classloader, but it does
>> not.
>>
>> There isn't any straightforward way to load a library using a
>> particular classloader either, so you have 2 options.
>>
>> 1) Make a java class that exposes a "loadLibrary" method. This java
>> class will be in the same classLoader as VTK and as a result,
>> loadLibrary calls from there will be visible to VTK.
>>
>> public class Loader {
>>
>>public static void loadLibrary(String lib) {
>> // Hack to load a library outside of Clojure's classloader
>> System.loadLibrary(lib);
>>}
>>
>> }
>>
>> 2) Expose the package-private "Runtime/loadLibrary0" method and call it.
>>
>> ; This function is in clojure-contrib, reproduced here for convenience
>> (defn wall-hack-method
>>   "Calls a private or protected method.
>>params is a vector of class which correspond to the arguments to the
>> method
>>obj is nil for static methods, the instance object otherwise
>>the method name is given as a symbol or a keyword (something Named)"
>>   [class-name method-name params obj & args]
>>   (-> class-name (.getDeclaredMethod (name method-name) (into-array
>> Class params))
>> (doto (.setAccessible true))
>> (.invoke obj (into-array Object args
>>
>> (defn load-lib [class lib]
>> "Loads a native library in the same classLoader as \"class\" was
>> loaded in. \"lib\" is a string with the OS-appropriate name of the
>> library. For instance, to load libvtk.so on Linux, lib should be
>> \"vtk\""
>> (wall-hack-method java.lang.Runtime "loadLibrary0" [Class String]
>> (Runtime/getRuntime) class lib))
>>
>> ; Load vtkCommonJava library in the same classLoader as vtkConeSource
>> (load-lib vtkConeSource "vtkCommonJava")
>>
>> 
>>
>> I actually think clojure should probably add a method to its RT class
>> that does option 1 above, that way there's a straightforward way to
>> load native libraries in the correct classloader.
>>
>> --Aaron
>>
>>
>> On Tue, Jun 21, 2011 at 4:10 PM, Antonio Recio  wrote:
>> > All the vtk libraries that I need are in /usr/local/lib/vtk-5.9/ and are
>> > executable.
>> > Java and c++ examples work fine.
>> >
>> > --
>> > 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 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 
"C

Re: Any tools that find all unused (:require [:refer]) in project?

2013-04-26 Thread Steven Degutis
Very cool, and just what I need. Too bad it doesn't work.

After using it, I get lots of java.lang.ClassNotFoundException when I
try running my code. It's stripping away (:require
[some.used.packages]) completely.

Looks like Phil's probably just been too busy to keep up on the
github-issues for slamhound. Perhaps one of the forks fixes it, though
not likely :(

-Steven

On Fri, Apr 26, 2013 at 7:18 AM, Herwig Hochleitner
 wrote:
> Sounds like you are looking for Slamhound:
> https://github.com/technomancy/slamhound
> As always, impeccably named by our own Phil Hagelberg.
>
>
> 2013/4/26 Steven Degutis 
>>
>> Not sure what to even call such a tool, so google isn't helping. I
>> suppose it would be kind of like Lint, but Eastwood doesn't seem to do
>> this.
>>
>> -Steven
>>
>> --
>> --
>> 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: What Slows Down clojure-hadoop?

2013-04-26 Thread Max Penet
Right! My bad. 

On Friday, April 26, 2013 2:44:21 PM UTC+2, Ji Zhang wrote:
>
> Besides, correct me if I'm wrong, the clojure map function returns a lazy 
> seq, and reduce consumes it, so there's actually only one loop, right?
>
> On Friday, April 26, 2013 8:23:04 PM UTC+8, Max Penet wrote:
>>
>> Hi, 
>>
>> In reducer-reduce you iterate twice over the values compared to the java 
>> version, once in map (just to call .get), then in reduce. 
>>
>> There are other issues probably, but this is one of the obvious ones.
>>
>> On Friday, April 26, 2013 12:05:33 PM UTC+2, Ji Zhang wrote:
>>>
>>> Hi,
>>>
>>> I'm writing map-reduce job with Clojure, yet to find that it seems to be 
>>> much slower than a Jave job. 
>>>
>>> So I write a simple test case, and upload to gist:
>>> https://gist.github.com/jizhang/5466149
>>>
>>> At the end of code, there is execution outputs, here are some 
>>> significant stats:
>>>
>>> Average time taken by Map tasks: Java 7sec, Clojure 19sec
>>> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>>>
>>> I'm wondering what slows down the Clojure written map-reduce job. Am I 
>>> using it wrong, or it's just an inappropriate senario.
>>>
>>> Any thoughts will be great. Thanks!
>>>
>>> Jerry
>>>
>>

-- 
-- 
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: What Slows Down clojure-hadoop?

2013-04-26 Thread Ji Zhang
Besides, correct me if I'm wrong, the clojure map function returns a lazy 
seq, and reduce consumes it, so there's actually only one loop, right?

On Friday, April 26, 2013 8:23:04 PM UTC+8, Max Penet wrote:
>
> Hi, 
>
> In reducer-reduce you iterate twice over the values compared to the java 
> version, once in map (just to call .get), then in reduce. 
>
> There are other issues probably, but this is one of the obvious ones.
>
> On Friday, April 26, 2013 12:05:33 PM UTC+2, Ji Zhang wrote:
>>
>> Hi,
>>
>> I'm writing map-reduce job with Clojure, yet to find that it seems to be 
>> much slower than a Jave job. 
>>
>> So I write a simple test case, and upload to gist:
>> https://gist.github.com/jizhang/5466149
>>
>> At the end of code, there is execution outputs, here are some significant 
>> stats:
>>
>> Average time taken by Map tasks: Java 7sec, Clojure 19sec
>> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>>
>> I'm wondering what slows down the Clojure written map-reduce job. Am I 
>> using it wrong, or it's just an inappropriate senario.
>>
>> Any thoughts will be great. Thanks!
>>
>> Jerry
>>
>

-- 
-- 
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: What Slows Down clojure-hadoop?

2013-04-26 Thread Ji Zhang
Hi,

The reduce is not a big problem, 'cause after all it'll only process 88 
records.

It's the mapper function that cost much more than the java version. One 
possibility I guess is that the Clojure startup time is slow. So tomorrow 
I'll try to reduce the mapper task count and see whether it helps.


On Friday, April 26, 2013 8:23:04 PM UTC+8, Max Penet wrote:
>
> Hi, 
>
> In reducer-reduce you iterate twice over the values compared to the java 
> version, once in map (just to call .get), then in reduce. 
>
> There are other issues probably, but this is one of the obvious ones.
>
> On Friday, April 26, 2013 12:05:33 PM UTC+2, Ji Zhang wrote:
>>
>> Hi,
>>
>> I'm writing map-reduce job with Clojure, yet to find that it seems to be 
>> much slower than a Jave job. 
>>
>> So I write a simple test case, and upload to gist:
>> https://gist.github.com/jizhang/5466149
>>
>> At the end of code, there is execution outputs, here are some significant 
>> stats:
>>
>> Average time taken by Map tasks: Java 7sec, Clojure 19sec
>> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>>
>> I'm wondering what slows down the Clojure written map-reduce job. Am I 
>> using it wrong, or it's just an inappropriate senario.
>>
>> Any thoughts will be great. Thanks!
>>
>> Jerry
>>
>

-- 
-- 
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: What Slows Down clojure-hadoop?

2013-04-26 Thread Max Penet
Hi, 

In reducer-reduce you iterate twice over the values compared to the java 
version, once in map (just to call .get), then in reduce. 

There are other issues probably, but this is one of the obvious ones.

On Friday, April 26, 2013 12:05:33 PM UTC+2, Ji Zhang wrote:
>
> Hi,
>
> I'm writing map-reduce job with Clojure, yet to find that it seems to be 
> much slower than a Jave job. 
>
> So I write a simple test case, and upload to gist:
> https://gist.github.com/jizhang/5466149
>
> At the end of code, there is execution outputs, here are some significant 
> stats:
>
> Average time taken by Map tasks: Java 7sec, Clojure 19sec
> CPU time spent (ms): Java 244,000, Clojure 1,145,440
>
> I'm wondering what slows down the Clojure written map-reduce job. Am I 
> using it wrong, or it's just an inappropriate senario.
>
> Any thoughts will be great. Thanks!
>
> Jerry
>

-- 
-- 
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: Any tools that find all unused (:require [:refer]) in project?

2013-04-26 Thread Steven Degutis
Funny, I even saw that repo several times in the last few months, read
the README, and still had no idea what it did. I'll look at it again,
thanks.

-Steven

On Fri, Apr 26, 2013 at 7:18 AM, Herwig Hochleitner
 wrote:
> Sounds like you are looking for Slamhound:
> https://github.com/technomancy/slamhound
> As always, impeccably named by our own Phil Hagelberg.
>
>
> 2013/4/26 Steven Degutis 
>>
>> Not sure what to even call such a tool, so google isn't helping. I
>> suppose it would be kind of like Lint, but Eastwood doesn't seem to do
>> this.
>>
>> -Steven
>>
>> --
>> --
>> 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: Any tools that find all unused (:require [:refer]) in project?

2013-04-26 Thread Herwig Hochleitner
Sounds like you are looking for Slamhound:
https://github.com/technomancy/slamhound
As always, impeccably named by our own Phil Hagelberg.


2013/4/26 Steven Degutis 

> Not sure what to even call such a tool, so google isn't helping. I
> suppose it would be kind of like Lint, but Eastwood doesn't seem to do
> this.
>
> -Steven
>
> --
> --
> 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: Deploy manually created jar with lein2

2013-04-26 Thread Karsten Schmidt
Okay, since it's been a while since I last did this, I realised I'd
mixed things up and `lein install/push` wasn't ever the right
solution... But for future reference and those interested the correct
steps for manually deploying jars are:

Steps 1 & 2 from above, i.e.:

1) Create a lein project folder with `lein new jogl-repack`
2) Edit the project file to only contain the bare minimum:

(defproject org.clojars.{your_clojars_username}/{libname} "{version}"
  :description "blah blah"
  :url "http://...";)

3) copy the bundled jar into the project folder, ensure it's named
{libname}-{version}.jar
3) lein pom
4) scp -i ~/.leiningen/id_rsa pom.xml {libname}-{version}.jar
cloj...@clojars.org:

Hth!

On 26 April 2013 10:21, Karsten Schmidt  wrote:
> Hi all,
>
> I'm trying to repack an existing Java lib with native dependecies and deploy
> it to Clojars. I need to repackage the original library so that its native
> parts are stored in a lein compatible layout. In the past (lein 1.x era) I
> had no problems with that, but I just can't get this to work under lein2.
>
> My steps for lein2 are:
>
> 1) Create a lein project folder with `lein new jogl-repack`
> 2) Edit the project file to only contain the bare minimum:
>
> (defproject org.clojars.toxi/jogl "2.0.0-rc11"
>   :description "blah blah"
>   :url "http://jogamp.org/";)
>
> 3) Place the repackaged "jogl-2.0.0-rc11.jar" in the `target` subfolder of
> the project
>
> Attempting `lein install` with this setup generates the correct POM, but
> always overwrites my existing jar with a new one, only containing the
> manifest and project.clj... The same goes for `lein push`. Not good!
>
> Is there any way to avoid the regeneration of the jar file? What is the
> correct procedure to repackage an existing jar and deploy it with leiningen
> 2? There seems to be a gap in the documentation for this use case and I'd be
> happy to contribute a guide once I know the correct steps.
>
> A related question: Now that I managed to push such an empty jar to clojars,
> is there any way to replace or remove it?
>
> FWIW Here's an older (successful) example of that process:
> https://clojars.org/org.clojars.toxi/jogl But now I need to switch to a
> later version of JOGL and am really stumped...
>
> Thanks!
> 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.




Any tools that find all unused (:require [:refer]) in project?

2013-04-26 Thread Steven Degutis
Not sure what to even call such a tool, so google isn't helping. I
suppose it would be kind of like Lint, but Eastwood doesn't seem to do
this.

-Steven

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




What Slows Down clojure-hadoop?

2013-04-26 Thread Ji Zhang
Hi,

I'm writing map-reduce job with Clojure, yet to find that it seems to be 
much slower than a Jave job. 

So I write a simple test case, and upload to gist:
https://gist.github.com/jizhang/5466149

At the end of code, there is execution outputs, here are some significant 
stats:

Average time taken by Map tasks: Java 7sec, Clojure 19sec
CPU time spent (ms): Java 244,000, Clojure 1,145,440

I'm wondering what slows down the Clojure written map-reduce job. Am I 
using it wrong, or it's just an inappropriate senario.

Any thoughts will be great. Thanks!

Jerry

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




Deploy manually created jar with lein2

2013-04-26 Thread Karsten Schmidt
Hi all,

I'm trying to repack an existing Java lib with native dependecies and
deploy it to Clojars. I need to repackage the original library so that its
native parts are stored in a lein compatible layout. In the past (lein 1.x
era) I had no problems with that, but I just can't get this to work under
lein2.

My steps for lein2 are:

1) Create a lein project folder with `lein new jogl-repack`
2) Edit the project file to only contain the bare minimum:

(defproject org.clojars.toxi/jogl "2.0.0-rc11"
  :description "blah blah"
  :url "http://jogamp.org/";)

3) Place the repackaged "jogl-2.0.0-rc11.jar" in the `target` subfolder of
the project

Attempting `lein install` with this setup generates the correct POM, but
always overwrites my existing jar with a new one, only containing the
manifest and project.clj... The same goes for `lein push`. Not good!

Is there any way to avoid the regeneration of the jar file? What is the
correct procedure to repackage an existing jar and deploy it with leiningen
2? There seems to be a gap in the documentation for this use case and I'd
be happy to contribute a guide once I know the correct steps.

A related question: Now that I managed to push such an empty jar to
clojars, is there any way to replace or remove it?

FWIW Here's an older (successful) example of that process:
https://clojars.org/org.clojars.toxi/jogl But now I need to switch to a
later version of JOGL and am really stumped...

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




Re: core.logic: Strange behaviour when using featurec with nested feature map (bug?).

2013-04-26 Thread Martin Forsgren
Ok, ticket created: http://dev.clojure.org/jira/browse/LOGIC-132

- Martin

Den torsdagen den 25:e april 2013 kl. 23:56:43 UTC+2 skrev David Nolen:
>
> Looks like a featurec bug, please file a ticket 
> http://dev.clojure.org/jira/browse/LOGIC
>
> Thanks!
> David
>
>
> On Thu, Apr 25, 2013 at 5:53 PM, Martin Forsgren 
> 
> > wrote:
>
>> Hi!
>>
>> I noticed something strange when using featurec with a nested feature 
>> map(I'm using core.logic 0.8.3). 
>> This works as expected:
>> (run* [x y]
>>   (featurec x {:a {:b 1}})
>>   (== y {:b 1})
>>   (== x {:a y}))
>> and returns:
>> ([{:a {:b 1}} {:b 1}])
>>
>> But with the last two goals swapped I get an exception: 
>> (run* [x y]
>>   (featurec x {:a {:b 1}})
>>   (== x {:a y})
>>   (== y {:b 1}))
>> Throws:
>> Exception clojure.core.logic.PMap@3c6f0bed is non-storable
>> clojure.core.logic.LVar (logic.clj:647)
>> clojure.core.logic/unify (logic.clj:231)
>> clojure.core.logic/unify-with-pmap* (logic.clj:2601)
>> clojure.core.logic.PMap (logic.clj:2614)
>> clojure.core.logic/unify (logic.clj:232)
>> clojure.core.logic/==/fn--2819 (logic.clj:1135)
>> clojure.core.logic/composeg/fn--2745 (logic.clj:1029)
>> clojure.core.logic/-featurec/reify--3655 (logic.clj:2646)
>> clojure.core.logic/composeg/fn--2745 (logic.clj:1029)
>> clojure.core.logic/composeg/fn--2745 (logic.clj:1030)
>> clojure.core.logic/run-constraint/fn--3431 (logic.clj:2184)
>> clojure.core.logic/fix-constraints (logic.clj:2211)
>>
>> I get the same exception when (== y {:b 1}) is left out:
>> (run* [x y]
>>   (featurec x {:a {:b 1}})
>>   (== x {:a y}))
>>
>> Any ideas why this is happening? 
>>
>> - Martin
>>
>> -- 
>> -- 
>> 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/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: style questions -- clojure newbie

2013-04-26 Thread Andreas Liljeqvist
I agree with using the trush operator since that certainly is a pipeline.

A few comments though:

(fn [image] [(:size image) (:#text image)])

Can be changed to:

(juxt :size :#text)


I wouldn't do api/get in search, the function is much easier to test if you
keep it pure.
Setup unittests with example data.

Get every test working, and then just feed it live-data and voila.
No ban from last-fm for spamming their servers ;)


On Tue, Apr 23, 2013 at 11:19 PM, Steven Degutis wrote:

> I'm also quite new to Clojure, but here are some very superficial changes
> I would make to your code, without actually giving much thought to your
> algorithms:
>
> (defn- transform-album-images [images]
>   (into {} (for [image images]
>  [(:size image)
>   (:#text image)])))
>
> (defn- transform-album [album]
>   (-> (select-keys album [:name :artist :image])
> (update-in [:image] transform-album-images)
> (clojure.set/rename-keys { :image :images })))
>
> (defn search [term]
>   (let [albums (-> (api/get {:method "album.search" :album term})
>  (get-in [:results :albummatches :album] [])
>  (vector))]
> {:albums (map transform-album albums)}))
>
> -Steven
>
>
> On Tue, Apr 23, 2013 at 4:12 PM, Huey Petersen  wrote:
>
>> Howdy,
>>
>> I'm a clojure fan but quite new to writing clojure.  I'm writing my first
>> app and had a few style questions.
>>
>> I'm doing a web service call to the lastfm api.  It returns some json
>> like:
>>
>> {
>> "results": {
>> "albummatches": {
>> "album": [
>> {
>> "name": "In The Future",
>> "artist": "Black Mountain",
>> "image": [{
>> "size": "small",
>> "#text": "http://example.com/image/url.jpg";
>> }]
>> }
>> ]
>> }
>> }
>> }
>>
>>
>> One notes is that the 'album' key in the json can either be missing (0
>> results) a map itself (1 result) or the array (2+ results).
>>
>> I then want to turn it into structure like:
>>
>> {
>> "albums": [{
>> "name": "In The Future",
>> "artist": "Black Mountain",
>> "images": {
>> "small": "http://example.com/image/url.jpg";
>> }
>> }]
>> }
>>
>>
>> Here is the clojure code I came up with:
>>
>> (defn- transform-album-images [images]
>> (into {} (map (fn [image] [(:size image) (:#text image)]) images)))
>>
>> (defn- transform-album [album]
>>   (let [album (select-keys album [:name :artist :image])
>> album (update-in album [:image] transform-album-images)
>> album (clojure.set/rename-keys album { :image :images })]
>> album))
>>
>> (defn search [term]
>>   (let [albums (api/get {:method "album.search" :album term})
>> albums (get-in albums [:results :albummatches :album] [])
>> albums (if (vector? albums) albums (vector albums))
>> albums (map transform-album albums)]
>>
>> {:albums albums}))
>>
>>
>>
>> My main question is whether this is at all 'idomatic' clojure.  I have a
>> few specific questions too.
>>
>> - I broke out two functions -- transform-album-images and transform-album
>> -- because I wasn't sure how to squeeze them into the first function.  They
>> really have no purpose outside of the 'search' function though.  I don't
>> know why, but it kinda bugs me because it seems to detract from the main
>> function 'search' as they have to appear above 'search'.
>>
>> - the (api/get ...) call talks to an external webservice.  Everything
>> else is a 'pure' function.  Is including the (api/get) call inside the
>> 'search' function bad?  I'm a bit hazy on the write split from pure /
>> non-pure code.
>>
>> I feel like transforming data between two representations with a side
>> effect at each end is like 90% of code I write so I'd like to get a good
>> feel for doing this in clojure :)
>>
>> Thanks for any tips.
>>
>> --
>> --
>> 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 - p

Re: [GSoC 2013] core.logic CLP(Prob)

2013-04-26 Thread Edmund
Fantastic - thanks for pointing these out.

On Friday, 26 April 2013 08:43:07 UTC+1, Zack Maril wrote:
>
> Nils also wrote his work up:
> http://ozk.unizd.hr/proceedings/index.php/els/article/view/102/106
> -Zack
>
> On Friday, April 26, 2013 6:33:55 AM UTC+4, Maximilien Rzepka wrote:
>>
>> For the sake of completion  ;)
>>
>> Nils Bertschinger's work 
>> https://github.com/bertschi/ProbClojureNice 
>> https://groups.google.com/forum/?fromgroups=#!topic/clojure/9NhsFga4D9s
>>
>> Le mercredi 24 avril 2013 11:34:14 UTC+2, Zack Maril a écrit :
>>>
>>> Lately, I've been on a bit of a jag into probabilistic programming with 
>>> Clojure, specifically embedding Church inside of Clojure. The results so 
>>> far are promising from a syntactic level, but, like David said, getting it 
>>> to actually work is another matter entirely. I wanted to share what I've 
>>> been able to get working so far and some of the potential challenges of 
>>> embedding Church in Clojure. 
>>>
>>> https://gist.github.com/zmaril/5447488
>>>
>>> The above gist is a self contained Clojure program that implements, 
>>> among other things, `query-by-rejection` and `flip`. With these two 
>>> functions, we can already do most of what Church seems to do. What's 
>>> missing from a functionality standpoint is support for various 
>>> distributions and some useful functions related to tolerance (and, of 
>>> course, a good MCMC/Gibbs implementation). What's been gained is, via some 
>>> careful macro writing, the ability to reuse code, specifically to reuse 
>>> memoized functions. 
>>>
>>> One of the key ideas behind Church is that memoization allows one to 
>>> express complicated scenarios very concisely. So, to code up a randomized 
>>> persistent trait (like a person's eye color), you simply define a memoized 
>>> function that takes in a person and returns their eye color. Every time a 
>>> new world is generated, the memoized function gets recreated. But within 
>>> the world (or current experiment), the trait persists and can be referenced 
>>> again in various places without too much hassle.  Note that a new memoized 
>>> function must be created for each experiment, i.e. you can't just memoize 
>>> the function outside the query and bring that back in. Within the gist 
>>> above, binding is used to carefully rebind any function provided in the 
>>> :memobound clause for each experiment. By declaring a var to be dynamic, we 
>>> can write queries that are pretty short but all rely on the same logic. 
>>> From a syntactic standpoint, it took about one evening of work to cut down 
>>> the length of most of the Church examples by at least half. 
>>>
>>> From a speed standpoint, Church is way, way ahead of the above. Sampling 
>>> via rejection is quite slow compared to modern methods like MCMC or Gibbs. 
>>> It might not even be possible to do the dynamic rebinding of memoized 
>>> functions mentioned above and get as fast as Church is. I really don't 
>>> know. Here's one of the first papers on Church:
>>> http://www.stanford.edu/~ngoodman/papers/churchUAI08_rev2.pdf
>>>
>>> The paper is about five years old now, but section 4.1 goes into how 
>>> Church was first implemented with a MCMC. The key idea they introduce here 
>>> is the computation trace. I won't try to summarize it here because I don't 
>>> fully understand it yet. If it means what I think it means though, then it 
>>> should be possible to build and keep track of the computation trace thanks 
>>> to the JVM and Clojure. My intuition says that a very dedicated student 
>>> could probably produce a Clojure library to catch Church in terms of speed 
>>> by the end of the summer, simply by emulating what they have done and 
>>> letting pmap take care of the rest.  
>>> -Zack
>>>
>>> On Wednesday, April 24, 2013 12:48:56 AM UTC+4, David Nolen wrote:

 On Tue, Apr 23, 2013 at 2:10 PM, Radosław Piliszek 
 wrote:

> 1) Is this place the best to discuss this?
>

 Yes.
  

> 2) Are there some set goals that CLP(Prob) should achieve? (,,Basic 
> support of CLP(Prob).'' does not express it too well! :-P )
>

 This seems like a pretty challenging one as there are a variety of 
 possible approaches. Basic support for CLP(Prob) could very well mean 
 *several* prototypes. That said the probabilistic Prolog variants are 
 probably worthy of the most study as core.logic is closest to that model.
  

> 3) Is there any API sketch that should be followed? Is it still yet to 
> be discussed? And, most importantly, how would you see CLP(Prob) fit in 
> core.logic's ecosystem?
>

 There is no API sketch. It's extremely important to survey the links, 
 try out existing implementations, assess their advantages / disadvantages 
 and devise a syntax (or several) that works reasonably well with what 
 we've 
 already established in core.logic. 

 Of the projects listed this 

Re: Aw: Re: How to convert a VTK example from java to clojure?

2013-04-26 Thread Nils Blum-Oeste
Great, thanks a lot. Fixed the issues I had.
However I wonder where 'wall-hack-method' lives now, as clojure-contrib has 
been split.
This (old) thread suggests it has also been renamed to call-method 
https://groups.google.com/forum/?fromgroups=#!topic/clojure-dev/tKzqnJWpz-k

So is this still included in one of the clojure-contrib libraries?

On Tuesday, June 21, 2011 11:19:44 PM UTC+2, Aaron Cohen wrote:
>
> OK, I've gotten it working on my computer, and it turns out to be a
> slightly complicated problem.
>
> What is happening is that the vtk java files and your clojure code are
> using different classloaders (clojure uses its own classloader).
>
> System/loadLibrary is kind of crippled in that it always loads the
> library into the ClassLoader of the _invoking class's_ classLoader. I
> was hoping it would use the Thread's context classloader, but it does
> not.
>
> There isn't any straightforward way to load a library using a
> particular classloader either, so you have 2 options.
>
> 1) Make a java class that exposes a "loadLibrary" method. This java
> class will be in the same classLoader as VTK and as a result,
> loadLibrary calls from there will be visible to VTK.
>
> public class Loader {
>
>public static void loadLibrary(String lib) {
> // Hack to load a library outside of Clojure's classloader
> System.loadLibrary(lib);
>}
>
> }
>
> 2) Expose the package-private "Runtime/loadLibrary0" method and call it.
>
> ; This function is in clojure-contrib, reproduced here for convenience
> (defn wall-hack-method
>   "Calls a private or protected method.
>params is a vector of class which correspond to the arguments to the 
> method
>obj is nil for static methods, the instance object otherwise
>the method name is given as a symbol or a keyword (something Named)"
>   [class-name method-name params obj & args]
>   (-> class-name (.getDeclaredMethod (name method-name) (into-array
> Class params))
> (doto (.setAccessible true))
> (.invoke obj (into-array Object args
>
> (defn load-lib [class lib]
> "Loads a native library in the same classLoader as \"class\" was
> loaded in. \"lib\" is a string with the OS-appropriate name of the
> library. For instance, to load libvtk.so on Linux, lib should be
> \"vtk\""
> (wall-hack-method java.lang.Runtime "loadLibrary0" [Class String]
> (Runtime/getRuntime) class lib))
>
> ; Load vtkCommonJava library in the same classLoader as vtkConeSource
> (load-lib vtkConeSource "vtkCommonJava")
>
> 
>
> I actually think clojure should probably add a method to its RT class
> that does option 1 above, that way there's a straightforward way to
> load native libraries in the correct classloader.
>
> --Aaron
>
>
> On Tue, Jun 21, 2011 at 4:10 PM, Antonio Recio 
> > 
> wrote:
> > All the vtk libraries that I need are in /usr/local/lib/vtk-5.9/ and are
> > executable.
> > Java and c++ examples work fine.
> >
> > --
> > 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 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: [GSoC 2013] core.logic CLP(Prob)

2013-04-26 Thread Zack Maril
Nils also wrote his work up:
http://ozk.unizd.hr/proceedings/index.php/els/article/view/102/106
-Zack

On Friday, April 26, 2013 6:33:55 AM UTC+4, Maximilien Rzepka wrote:
>
> For the sake of completion  ;)
>
> Nils Bertschinger's work 
> https://github.com/bertschi/ProbClojureNice 
> https://groups.google.com/forum/?fromgroups=#!topic/clojure/9NhsFga4D9s
>
> Le mercredi 24 avril 2013 11:34:14 UTC+2, Zack Maril a écrit :
>>
>> Lately, I've been on a bit of a jag into probabilistic programming with 
>> Clojure, specifically embedding Church inside of Clojure. The results so 
>> far are promising from a syntactic level, but, like David said, getting it 
>> to actually work is another matter entirely. I wanted to share what I've 
>> been able to get working so far and some of the potential challenges of 
>> embedding Church in Clojure. 
>>
>> https://gist.github.com/zmaril/5447488
>>
>> The above gist is a self contained Clojure program that implements, among 
>> other things, `query-by-rejection` and `flip`. With these two functions, we 
>> can already do most of what Church seems to do. What's missing from 
>> a functionality standpoint is support for various distributions and some 
>> useful functions related to tolerance (and, of course, a good MCMC/Gibbs 
>> implementation). What's been gained is, via some careful macro writing, the 
>> ability to reuse code, specifically to reuse memoized functions. 
>>
>> One of the key ideas behind Church is that memoization allows one to 
>> express complicated scenarios very concisely. So, to code up a randomized 
>> persistent trait (like a person's eye color), you simply define a memoized 
>> function that takes in a person and returns their eye color. Every time a 
>> new world is generated, the memoized function gets recreated. But within 
>> the world (or current experiment), the trait persists and can be referenced 
>> again in various places without too much hassle.  Note that a new memoized 
>> function must be created for each experiment, i.e. you can't just memoize 
>> the function outside the query and bring that back in. Within the gist 
>> above, binding is used to carefully rebind any function provided in the 
>> :memobound clause for each experiment. By declaring a var to be dynamic, we 
>> can write queries that are pretty short but all rely on the same logic. 
>> From a syntactic standpoint, it took about one evening of work to cut down 
>> the length of most of the Church examples by at least half. 
>>
>> From a speed standpoint, Church is way, way ahead of the above. Sampling 
>> via rejection is quite slow compared to modern methods like MCMC or Gibbs. 
>> It might not even be possible to do the dynamic rebinding of memoized 
>> functions mentioned above and get as fast as Church is. I really don't 
>> know. Here's one of the first papers on Church:
>> http://www.stanford.edu/~ngoodman/papers/churchUAI08_rev2.pdf
>>
>> The paper is about five years old now, but section 4.1 goes into how 
>> Church was first implemented with a MCMC. The key idea they introduce here 
>> is the computation trace. I won't try to summarize it here because I don't 
>> fully understand it yet. If it means what I think it means though, then it 
>> should be possible to build and keep track of the computation trace thanks 
>> to the JVM and Clojure. My intuition says that a very dedicated student 
>> could probably produce a Clojure library to catch Church in terms of speed 
>> by the end of the summer, simply by emulating what they have done and 
>> letting pmap take care of the rest.  
>> -Zack
>>
>> On Wednesday, April 24, 2013 12:48:56 AM UTC+4, David Nolen wrote:
>>>
>>> On Tue, Apr 23, 2013 at 2:10 PM, Radosław Piliszek 
>>> wrote:
>>>
 1) Is this place the best to discuss this?

>>>
>>> Yes.
>>>  
>>>
 2) Are there some set goals that CLP(Prob) should achieve? (,,Basic 
 support of CLP(Prob).'' does not express it too well! :-P )

>>>
>>> This seems like a pretty challenging one as there are a variety of 
>>> possible approaches. Basic support for CLP(Prob) could very well mean 
>>> *several* prototypes. That said the probabilistic Prolog variants are 
>>> probably worthy of the most study as core.logic is closest to that model.
>>>  
>>>
 3) Is there any API sketch that should be followed? Is it still yet to 
 be discussed? And, most importantly, how would you see CLP(Prob) fit in 
 core.logic's ecosystem?

>>>
>>> There is no API sketch. It's extremely important to survey the links, 
>>> try out existing implementations, assess their advantages / disadvantages 
>>> and devise a syntax (or several) that works reasonably well with what we've 
>>> already established in core.logic. 
>>>
>>> Of the projects listed this is probably the most experimental and 
>>> research-y. I think if anyone seriously wants to take this on they have to 
>>> be extremely focused / self-directed and be willing to put in a 
>>> *considerable* amount of