Re: Clojure - Python Style suggestion
Actually I think python style indention will over-complicate code. When writing python style clojure you will always need to think in which clojure with parentheses it will be transformed. Personally I love parentheses. Imho Lisp is easy and S-expressions are awesome :) On Monday, February 4, 2013 11:01:30 PM UTC+3, Sergey Didenko wrote: Hi, For us as Clojure community it is easy to see how Clojure benefits from being a Lisp. Homoiconity, extreme conciseness, esoteric look and feel, etc. However it is hard to see from the inside how Clojure as ecosystem (probably) suffer from being a Lisp. Please don't throw rotten eggs at me, I mean only the part of Lisp that is ... parentheses. I remember a number of people that mention parentheses as obstacles to the wider Clojure adoption, in the Clojure space - in the Clojure related discussions, even on this mailing list IIRC. But the number of people thinking this way outside the Clojure groups is even bigger! We probably don't notice it because got immune to this famous argument it has too many parentheses early when diving into Clojure. I suggest there are a big number of people that could gain interest in clojure if we provide them with parentheses-lite Clojure syntax. For example we can steal Python way of intending blocks. For example the following quicksort implementation (defn qsort [[pivot xs]] (when pivot (let [smaller #( % pivot)] (lazy-cat (qsort (filter smaller xs)) [pivot] (qsort (remove smaller xs)) could be written as (set! python-style-op-op true) defn qsort [[pivot xs]] when pivot let [smaller #( % pivot)] lazy-cat qsort filter smaller xs [pivot] qsort remove smaller xs What do you think? Isn't is less complex? P.S. Ok, I must confess, the mention of the C-Word in the last sentence was just a desperate way to get Rich's attention. P.P.S. Actually I would also love to see Clojure community making video clip Clojure - Python Style as a remix for G... Style, but this idea is probably way ahead of its time. Regards, Sergey. -- -- 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: Tawny-OWL 0.9
Michael Klishin michael.s.klis...@gmail.com writes: 2013/2/5 Phillip Lord phillip.l...@newcastle.ac.uk Although, it's been available for a while, this is the first release that I have announced here. I'd welcome feedback. Phillip, Please add dependency (artifacts) information to the README. Otherwise beginners won't be able to use your project. You mean what is the name of this library as maven artifact? Rather than it's dependencies. I've added this to the documentation; this needs expanding anyway, because its poor at the moment. Phil -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: Tawny-OWL 0.9
On 6 February 2013 05:52, John Gabriele jmg3...@gmail.com wrote: On Tuesday, February 5, 2013 12:08:43 PM UTC-5, AtKaaZ wrote: you can release that on LGPL License ? does that work with the EPL of clojure ? or is it only an issue when lein uberjar-ed ? LGPL just means that the library itself is copyleft (if you make changes to it, and distribute the modified library, you've got to distribute your changes along with it (under the same conditions) as well). See also http://www.gnu.org/licenses/lgpl-java.html Here's an excerpt: If you distribute a Java application that imports LGPL libraries, it's easy to comply with the LGPL. Your application's license needs to allow users to modify the library, and reverse engineer your code to debug these modifications. Issues of license compatibility generally only come up when you're linking to *GPL* (not LGPL) libs/apps. Incidentally, Phillip, in your license notice you say the lib is LGPL, but then just below it say it's GPL. Also, it doesn't look like you've included the full text of the license in the project. I've found http://www.gnu.org/licenses/gpl-howto.html to be very helpful in getting the license stuff set up. ---John -- Michael Wood esiot...@gmail.com -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: Tawny-OWL 0.9
This should be fine. Both EPL and LGPL are weak copyleft. Clojure code does not need to be EPL because EPL does not force it. Likewise, Clojure can call back to this LGPL library because, the LGPL doesn't enforce derivative works as a whole to be LGPL (although modifications to the tawny *would* have to be LGPL, likewise, modified versions of Clojure). The uber jar is a red herring, I think. It's an aggregation, not a derivative work. The same problem would exist even if I EPL'd the library; it uses the OWL API underneath, and this is LGPL also. If code written in Clojure were affected by the EPL, then it would have been a fairly poor choice of license, I feel. Phil AtKaaZ atk...@gmail.com writes: you can release that on LGPL License ? does that work with the EPL of clojure ? or is it only an issue when lein uberjar-ed ? On Tue, Feb 5, 2013 at 5:57 PM, Phillip Lord phillip.l...@newcastle.ac.ukwrote: Tawny-OWL is a clojure library which provides a DSL for the construction of OWL Ontologies (http://www.w3.org/2004/OWL/). The practical upshot of this, is that allows a form of logic reasoning over sets of facts about the world, with strong computational guarantees about decidability. At it's simplest it looks rather like the Manchester Syntax, but is fully programmatic language, which allows for arbitrary templating of expressions. Where possible, it uses clojure facilities directly, so things like autocomplete, and documentation look up work out-of-the-box, in what ever IDE is your poison. It comes complete with reasoner support using HermiT (http://www.hermit-reasoner.com/) or ELK (http://code.google.com/p/elk-reasoner/). Tawny-OWL current implements all of the object and annotation side of OWL; expression of datatype properties will follow shortly. Although, it's been available for a while, this is the first release that I have announced here. I'd welcome feedback. The Clojure is a bit nasty at places--I learnt the language at the same time. https://github.com/phillord/tawny-owl and on clojars. Phil -- Phillip Lord, Phone: +44 (0) 191 222 7827 Lecturer in Bioinformatics, Email: phillip.l...@newcastle.ac.uk School of Computing Science, http://homepages.cs.ncl.ac.uk/phillip.lord Room 914 Claremont Tower, skype: russet_apples Newcastle University, msn: m...@russet.org.uk NE1 7RU twitter: phillord -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- Please correct me if I'm wrong or incomplete, even if you think I'll subconsciously hate it. -- -- Phillip Lord, Phone: +44 (0) 191 222 7827 Lecturer in Bioinformatics, Email: phillip.l...@newcastle.ac.uk School of Computing Science, http://homepages.cs.ncl.ac.uk/phillip.lord Room 914 Claremont Tower, skype: russet_apples Newcastle University, msn: m...@russet.org.uk NE1 7RU twitter: phillord -- -- 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: Tawny-OWL 0.9
John Gabriele jmg3...@gmail.com writes: LGPL just means that the library itself is copyleft (if you make changes to it, and distribute the modified library, you've got to distribute your changes along with it (under the same conditions) as well). Issues of license compatibility generally only come up when you're linking to *GPL* (not LGPL) libs/apps. Incidentally, Phillip, in your license notice you say the lib is LGPL, but then just below it say it's GPL. Also, it doesn't look like you've included the full text of the license in the project. I've found http://www.gnu.org/licenses/gpl-howto.html to be very helpful in getting the license stuff set up. Yeah, cut and paste mess up. It's fixed in the git. Will add the license full text. Phil -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
How do you typecast and insert a Postgres enum value using Clojure JDBC?
For example, here is a product table in PostgreSQL with status as an enum: create type product_status as enum ('InStock', 'OutOfStock'); create table product ( pidint primary key default nextval('product_pid_seq'), skutext not null unique, name text not null, descriptiontext not null, quantity int not null, cost numeric(10,2) not null, price numeric(10,2) not null, weight numeric(10,2), status product_status not null); Typical Clojure code to insert a product would be: (def prod-12345 {:sku 12345 :name My Product :description yada yada yada :quantity 100 :cost 42.00 :price 59.00 :weight 0.3 :status InStock}) (sql/with-connection db-spec (sql/insert-record :product product-12345)) However, status is an enum so you can't insert it as a normal string without casting it to an enum: 'InStock'::product_status I know you can do it with a prepared statement, such as: INSERT INTO product (name, status) VALUES (?, ?::product_status) But is there a way to do it without using a prepared statement? From StackOverflow: http://stackoverflow.com/questions/14719207/how-do-you-insert-a-postgres-enum-value-using-clojure-jdbc - James -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Prismatic Plumbing and Graph Open-Source Release
Hi, Good stuff! I was wondering how do you guys deal with decision nodes or does is make sense to model such a thing at the nodel level. Imagine having a diamond topology e.g. N1 /\ N2aN2b \/ N3 based on some input to N1, either N2a or N2b gets computed on which N3 depends. Does this make sense or should this decision step be wrapped in a node N2. Thanks, Las 2013/1/29 Aria Haghighi m...@aria42.com Hey all, Prismatic has open-sourced our Plumbing and Graph library on githubhttps://github.com/prismatic/plumbing. Jason Wolfe gave a talkhttp://blog.getprismatic.com/blog/2012/10/1/prismatics-graph-at-strange-loop.htmlabout how we use graph for systems composition at Strange loop last year. Please give the library a whirl and let us know if you're using it and if you find any issues or feature requests. We use this library very heavily throughout our code and hope others find it useful as well. Best, Aria -- -- 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. -- László Törö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: Performance issue with hashing records
Hi, On Mon, Feb 4, 2013 at 12:13 PM, Paul Stadig p...@stadig.name wrote: On Sunday, February 3, 2013 9:56:49 PM UTC-5, puzzler wrote: In these examples, the map/record is freshly created each time through the loop, so caching should not be a factor. Good point. So maybe it's not the caching :). No Paul, you were right: it's the caching. The map is seen as constant and its creation is hoisted outside of the loop so hash is called 1e7 times on the same map object. While a new record is created at each iteration. If you rewrite (time (dotimes [n 1000] (hash (A. a 3 as (time (dotimes [n 1000] (hash #user.A[a 3]))) you get a single record instance -- but still no caching on records. In my patch to fix the hashing caching (or lack of) I didn't cover records because it's more involved: it requires changes to the compiler because we need to add new fields to the record to hold the cached value -- fields that must not be part of the constructor. Christophe -- On Clojure http://clj-me.cgrand.net/ Clojure Programming http://clojurebook.com Training, Consulting Contracting http://lambdanext.eu/ -- -- 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: Performance issue with hashing records
Hi On Mon, Feb 4, 2013 at 2:29 PM, AtKaaZ atk...@gmail.com wrote: = (class {:x a :y 3}) clojure.lang.Persistent*Array*Map = (def m {:x a :y 3}) #'runtime.q/m = (class m) clojure.lang.Persistent*Hash*Map huh? that one I can't explain, I'll have to do some research. = (def m (let [] {:x a :y 3})) #'user/m = (class m) clojure.lang.PersistentArrayMap = (time (dotimes [n 1000] (hash m))) Elapsed time: 168.162927 msecs nil = (time (dotimes [n 1000] (hash m))) Elapsed time: 161.341094 msecs nil = (time (dotimes [n 1000] (hash m))) Elapsed time: 159.444025 msecs nil Since hash is cached and m doesn't change, more runs are just measuring the time to lookup the cache. There may be a sligt overhead due to m being a var. To properly isolate this you have to use locals: = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 221.62 msecs nil = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 214.624 msecs nil = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 212.505 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 232.872 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 218.141 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 220.813 msecs nil No significant change -- hopefully since 1e7-1 times out od 1z7 we are measuring the cost of looking up a cache. Christophe -- On Clojure http://clj-me.cgrand.net/ Clojure Programming http://clojurebook.com Training, Consulting Contracting http://lambdanext.eu/ -- -- 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: EDN for Objective-C (iOS/OS X)
Thanks. I did look at the (incomplete) C version, and will take another closer look before deciding what route to take, but I suspect an Obj-C/Cocoa version would have different enough requirements to warrant a new start, or at least a significant re-write. Cheers, Matthew. On Wednesday, February 6, 2013 12:24:44 PM UTC+10:30, Herwig Hochleitner wrote: According to the Implementations page of the edn wiki [1], libclj [2] seems to be a possible starting point for that plan. [1] https://github.com/edn-format/edn/wiki/Implementations [2] https://github.com/brandonbloom/libclj 2013/2/5 Matthew Phillips matt...@gmail.com javascript: Hello, a quick search of this group, and the web at large, doesn't get any hits for an Obj-C EDN implementation. Is there anyone working on this? If not, I'll likely go ahead and implement a basic subset of the EDN spec for my own needs, which I'd be happy to share. Cheers, Matthew. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: 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 javascript:. 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: Possible bug in clojure.java.jdbc
On Feb 6, 11:42 am, Sean Corfield seancorfi...@gmail.com wrote: Andy's right on process... but as maintainer of clojure.java.jdbc, I have to ask: why on earth do you have column names containing spaces or or other weird characters? That's a serious question: how do you get into that situation? JDBC is an interface for SQL dialects, not necessarily for relational data stores. For example, I've seen WBEM/CIM[1] exposed via JDBC. I am not surprised to see spaces in column names. Quite often those situations are not under the control of JDBC user. [1] CIM: http://en.wikipedia.org/wiki/Common_Information_Model_(computing) I'm not saying clojure.java.jdbc can't be updated to support it, I'm just questioning whether it should... I believe it should. The runtime configuration aspects (1. conversion of column-name from Clojure to DB and vice versa, 2. wrapping of Connection, Statement, PreparedStatement objects -- e.g. Excel JDBC- ODBC connection doesn't support/throws exception on setAutoCommit, or `long` data type that Clojure defaults to for ints) should be extensible by the user. Shantanu -- -- 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.
leiningen dependencies plugin
Is there dependencies plugin for leiningen ? I need to download all dependencies so I can copy my project to a server. ( I can't run leiningen on server ). mvn dependency:copy-dependencies -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: leiningen dependencies plugin
lein deps? Am Mittwoch, 6. Februar 2013 12:41:03 UTC+1 schrieb Maris: Is there dependencies plugin for leiningen ? I need to download all dependencies so I can copy my project to a server. ( I can't run leiningen on server ). mvn dependency:copy-dependencies -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: leiningen dependencies plugin
I wrote this recently to copy your dependencies to a specific directory in your project: https://github.com/djpowell/lein-libdir Or you could just use lein-uberjar? Or lein-tar to bundle everything up? -- Dave On Wed, Feb 6, 2013 at 11:41 AM, Maris maris.orbid...@gmail.com wrote: Is there dependencies plugin for leiningen ? I need to download all dependencies so I can copy my project to a server. ( I can't run leiningen on server ). mvn dependency:copy-dependencies -- -- 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: leiningen dependencies plugin
Use lein pom - to generate pom.xml and use mvn dependency:copy-depencies :) On Wednesday, February 6, 2013 12:41:03 PM UTC+1, Maris wrote: Is there dependencies plugin for leiningen ? I need to download all dependencies so I can copy my project to a server. ( I can't run leiningen on server ). mvn dependency:copy-dependencies -- -- 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: constructing matrix-like structures with list-comprehension
Hmmm... sounds like you might want to take a look at the latest development version core.matrix: https://github.com/clojure-numerics/core.matrix You can construct nested vectors of arbitrary shape, e.g. (new-array 2 3 4 5) This creates a new 4-dimensional 2x3x4x5 matrix. core.matrix supports all different kinds of matrix types (e.g. native JBLAS matrices) but if you want to work with nested Clojure vectors you can just do: (set-current-implementation []) On Tuesday, 5 February 2013 23:03:17 UTC+8, Jim foo.bar wrote: Hi all, I 'm a bit confused with this - I'm trying to think but I can't!!! Probably cos I've not had any food yet! Up till now I thought I could construct matrices with 'for'...So (for [i (range 3)] i) gives us a 1d structure (a list)... (for [i (range 3) j (range 4)] [i j]) gives us a 2d structure (list of vectors) On that basis I wrote the following little macro thinking I'd be bale to create matrices with arbitrary dimensions: (defn matrix [ dim-lengths] (let [bindings (vec (mapcat #(vector (gensym) `(range ~%)) dim-lengths)) symbols (mapv first (partition 2 bindings)) counts (count symbols)] `(for ~bindings (if ( counts 1) ~symbols (first ~symbols) Now, even though this expands to the 'for' I want I'm starting to think this is not the right approach for matrices...all I get is 2d structures regardless of how many dimensions I pass in... any ideas anyone? 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: Performance issue with hashing records
Hi. Thank you. On Wed, Feb 6, 2013 at 10:50 AM, Christophe Grand christo...@cgrand.netwrote: Hi On Mon, Feb 4, 2013 at 2:29 PM, AtKaaZ atk...@gmail.com wrote: = (class {:x a :y 3}) clojure.lang.Persistent*Array*Map = (def m {:x a :y 3}) #'runtime.q/m = (class m) clojure.lang.Persistent*Hash*Map huh? that one I can't explain, I'll have to do some research. = (def m (let [] {:x a :y 3})) #'user/m = (class m) clojure.lang.PersistentArrayMap = (time (dotimes [n 1000] (hash m))) Elapsed time: 168.162927 msecs nil = (time (dotimes [n 1000] (hash m))) Elapsed time: 161.341094 msecs nil = (time (dotimes [n 1000] (hash m))) Elapsed time: 159.444025 msecs nil Since hash is cached and m doesn't change, more runs are just measuring the time to lookup the cache. There may be a sligt overhead due to m being a var. To properly isolate this you have to use locals: = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 221.62 msecs nil = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 214.624 msecs nil = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 212.505 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 232.872 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 218.141 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 220.813 msecs nil No significant change -- hopefully since 1e7-1 times out od 1z7 we are measuring the cost of looking up a cache. Christophe -- On Clojure http://clj-me.cgrand.net/ Clojure Programming http://clojurebook.com Training, Consulting Contracting http://lambdanext.eu/ -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- Please correct me if I'm wrong or incomplete, even if you think I'll subconsciously hate it. -- -- 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: Performance issue with hashing records
2013/2/6 Christophe Grand christo...@cgrand.net Hi On Mon, Feb 4, 2013 at 2:29 PM, AtKaaZ atk...@gmail.com wrote: = (class {:x a :y 3}) clojure.lang.Persistent*Array*Map = (def m {:x a :y 3}) #'runtime.q/m = (class m) clojure.lang.Persistent*Hash*Map huh? that one I can't explain, I'll have to do some research. http://dev.clojure.org/jira/browse/CLJ-944 The second patch should adress this = (def m (let [] {:x a :y 3})) #'user/m = (class m) clojure.lang.PersistentArrayMap = (time (dotimes [n 1000] (hash m))) Elapsed time: 168.162927 msecs nil = (time (dotimes [n 1000] (hash m))) Elapsed time: 161.341094 msecs nil = (time (dotimes [n 1000] (hash m))) Elapsed time: 159.444025 msecs nil Since hash is cached and m doesn't change, more runs are just measuring the time to lookup the cache. There may be a sligt overhead due to m being a var. To properly isolate this you have to use locals: = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 221.62 msecs nil = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 214.624 msecs nil = (let [m (hash-map :x a :y 3)] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentHashMap Elapsed time: 212.505 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 232.872 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 218.141 msecs nil = (let [m {:x a :y 3}] (println (class m)) (time (dotimes [n 1000] (hash m clojure.lang.PersistentArrayMap Elapsed time: 220.813 msecs nil No significant change -- hopefully since 1e7-1 times out od 1z7 we are measuring the cost of looking up a cache. Christophe -- On Clojure http://clj-me.cgrand.net/ Clojure Programming http://clojurebook.com Training, Consulting Contracting http://lambdanext.eu/ -- -- 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: constructing matrix-like structures with list-comprehension
Hi Mike, thanks for your reply...I've actually been keeping a very close eye on core.matrix since day 1 and I have to admit I am very very tempted to start contributing...My research is on Text-mining which as you probably know is machine-learning on text (mainly sequence-labelling, HMM based ). The problem is (as it always tends to be) time...I'm in my 2nd year of my Ph.D. and my research just transformed from an idea to something concrete roughly 3 months ago so things are truly hectic at the moment! I'm preparing papers, doing lots of coding/experiments etc etc...So for the moment I physically cannot be of much use I'm afraid... anyway, that is probably too much detail! What I meant to say is that for now I'm not looking for something performant...I guess you could say I was messing about with ways of generating code that constructs matrices based on 'for'. I cracked it after a couple of hours so I'm happy...Of course it goes without saying that I'm not going to use my macro for performance critical code...just fun and games :) In any case thank you for your reply and a bigger thank you for starting core.matrix...this is good stuff and the first chance I get I'll jump in! Jim On 06/02/13 12:25, Mikera wrote: Hmmm... sounds like you might want to take a look at the latest development version core.matrix: https://github.com/clojure-numerics/core.matrix You can construct nested vectors of arbitrary shape, e.g. (new-array 2 3 4 5) This creates a new 4-dimensional 2x3x4x5 matrix. core.matrix supports all different kinds of matrix types (e.g. native JBLAS matrices) but if you want to work with nested Clojure vectors you can just do: (set-current-implementation []) On Tuesday, 5 February 2013 23:03:17 UTC+8, Jim foo.bar wrote: Hi all, I 'm a bit confused with this - I'm trying to think but I can't!!! Probably cos I've not had any food yet! Up till now I thought I could construct matrices with 'for'...So (for [i (range 3)] i) gives us a 1d structure (a list)... (for [i (range 3) j (range 4)] [i j]) gives us a 2d structure (list of vectors) On that basis I wrote the following little macro thinking I'd be bale to create matrices with arbitrary dimensions: (defn matrix [ dim-lengths] (let [bindings (vec (mapcat #(vector (gensym) `(range ~%)) dim-lengths)) symbols (mapv first (partition 2 bindings)) counts (count symbols)] `(for ~bindings (if ( counts 1) ~symbols (first ~symbols) Now, even though this expands to the 'for' I want I'm starting to think this is not the right approach for matrices...all I get is 2d structures regardless of how many dimensions I pass in... any ideas anyone? 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.
ANN Neocons 1.1.0-beta3
Neocons is a feature rich idiomatic Clojure client for the Neo4J REST API. Release notes for 1.1.0-beta3: http://blog.clojurewerkz.org/blog/2013/02/06/neocons-1-dot-1-0-beta3-is-released/ -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: Tawny-OWL 0.9
2013/2/6 Phillip Lord phillip.l...@newcastle.ac.uk You mean what is the name of this library as maven artifact? Rather than it's dependencies. Yes. I've added this to the documentation; this needs expanding anyway, because its poor at the moment. Are you sure people will find it there if it's not in the README? The thinking if I can't even get started with it, why do I need to see documentation may be fairly common. -- MK http://github.com/michaelklishin http://twitter.com/michaelklishin -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
CSS sometimes disappears in uberjar web app using wrap-resource
I created a web app using Ring, Jetty, Enlive, Compojure. At the end, I bundled everything together by running the command lein uberjar. The resulting file was 21 megs. I scp the file to the server, then I ssh to the server. I start a screen session. Inside the screen session I type : java -jar kiosk-0.1-standalone.jar 30001 The number at the end is the port that I have it running on. Sometimes, when people look at the app, none of the CSS files load. I have run into this bug myself. Sometimes, when I look at the app, the Javascript and CSS paths are broken. If I click view source and see the source, and if I try to follow the links to the CSS or Javascript, then I get 404 errors. I have this in my code: (wrap-resource public) The structure of the code is: /resources /public /css /javascript /templates /src /kiosk The code is still able to find the templates in resources/templates, and that HTML is given to Enlive, so something appears on screen. It's just the stuff in public that sometimes goes missing. Can anyone suggest why? My routes are defined like this: (defroutes app-routes (ANY / request (index request)) (GET /search-results request (search-results request)) (GET /schema [] (schema)) (GET /account request (account request)) (GET /login request (login request)) (GET /start-over request (start-over request)) (GET /admin request (admin request)) (GET /ok request (ok request)) (POST /admin request (record-new-question-if-any request)) (GET /delete-question/:question-to-delete request (delete-question request)) (GET /finish-user-sign-up request (finish-user-sign-up request)) (route/not-found Page not found)) (def app (- app-routes (wrap-resource public) (wrap-session {:cookie-name discovery-session :cookie-attrs {:max-age 90 }}) (wrap-cookies) (wrap-keyword-params) (wrap-nested-params) (wrap-params))) -- -- 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: CSS sometimes disappears in uberjar web app using wrap-resource
I logged into my personal server (in the Rackspace cloud, what used to be Slicehost) and blasted the CSS file with 10,000 requests. There were 0 (zero) failed requests. This is with Apache Benchmark (ab -n 1 -c 50). The server, Jetty, was able to serve the CSS 10,000 times, yet it fails on occasion when my co-workers go and look at it. I am struggling to think what the problem is. Any suggestions? Does Jetty fail when the app is running an activity in something other than the main thread? Document Path: /css/timeout.css Document Length:3688 bytes Concurrency Level: 50 Time taken for tests: 62.913 seconds Complete requests: 1 Failed requests:0 Write errors: 0 Total transferred: 3843 bytes HTML transferred: 3688 bytes Requests per second:158.95 [#/sec] (mean) Time per request: 314.563 [ms] (mean) Time per request: 6.291 [ms] (mean, across all concurrent requests) Transfer rate: 596.53 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 137 154 75.01431241 Processing: 139 160 39.0152 772 Waiting: 138 160 38.0152 663 Total:277 314 86.62981636 Percentage of the requests served within a certain time (ms) 50%298 66%306 75%313 80%318 90%341 95%363 98%422 99%680 100% 1636 (longest request) On Wednesday, February 6, 2013 10:10:25 AM UTC-5, larry google groups wrote: I created a web app using Ring, Jetty, Enlive, Compojure. At the end, I bundled everything together by running the command lein uberjar. The resulting file was 21 megs. I scp the file to the server, then I ssh to the server. I start a screen session. Inside the screen session I type : java -jar kiosk-0.1-standalone.jar 30001 The number at the end is the port that I have it running on. Sometimes, when people look at the app, none of the CSS files load. I have run into this bug myself. Sometimes, when I look at the app, the Javascript and CSS paths are broken. If I click view source and see the source, and if I try to follow the links to the CSS or Javascript, then I get 404 errors. I have this in my code: (wrap-resource public) The structure of the code is: /resources /public /css /javascript /templates /src /kiosk The code is still able to find the templates in resources/templates, and that HTML is given to Enlive, so something appears on screen. It's just the stuff in public that sometimes goes missing. Can anyone suggest why? My routes are defined like this: (defroutes app-routes (ANY / request (index request)) (GET /search-results request (search-results request)) (GET /schema [] (schema)) (GET /account request (account request)) (GET /login request (login request)) (GET /start-over request (start-over request)) (GET /admin request (admin request)) (GET /ok request (ok request)) (POST /admin request (record-new-question-if-any request)) (GET /delete-question/:question-to-delete request (delete-question request)) (GET /finish-user-sign-up request (finish-user-sign-up request)) (route/not-found Page not found)) (def app (- app-routes (wrap-resource public) (wrap-session {:cookie-name discovery-session :cookie-attrs {:max-age 90 }}) (wrap-cookies) (wrap-keyword-params) (wrap-nested-params) (wrap-params))) -- -- 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: CSS sometimes disappears in uberjar web app using wrap-resource
I hit the app itself with Apache Benchmark. The speed is fairly bad. This is a small app which serves everything from memory -- there is no database to slow things down. I am aware that I made several mistakes with this app. I had to write it in a huge hurry. I abused the Enlive template system and, I am fairly sure, there are places where I redundantly change Enlive nodes to a string, then change them back to Enlive nodes, then change them back to a string to serve them to the public. I imagine I can get a speed bump when I go back through and clean it up. But I am still left with the main puzzle: why does the CSS sometimes fail to load? I know that sometimes (rarely) if I point my browser directly at the path for the CSS file, I get a 404 error. What would cause an intermittent problem like that? Some background exception? What? ab -n 1000 -c 10 Server Software:Jetty(7.x.y-SNAPSHOT) Document Path: / Document Length:4277 bytes Concurrency Level: 10 Time taken for tests: 235.877 seconds Complete requests: 1000 Failed requests:0 Write errors: 0 Total transferred: 4551891 bytes HTML transferred: 4277000 bytes Requests per second:4.24 [#/sec] (mean) Time per request: 2358.775 [ms] (mean) Time per request: 235.877 [ms] (mean, across all concurrent requests) Transfer rate: 18.85 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 137 139 3.4138 172 Processing: 1372 2216 280.3 22103057 Waiting: 1371 2215 280.3 22103057 Total: 1510 2355 280.5 23513195 Percentage of the requests served within a certain time (ms) 50% 2351 66% 2470 75% 2558 80% 2610 90% 2734 95% 2828 98% 2914 99% 3008 100% 3195 (longest request) On Wednesday, February 6, 2013 10:53:50 AM UTC-5, larry google groups wrote: I logged into my personal server (in the Rackspace cloud, what used to be Slicehost) and blasted the CSS file with 10,000 requests. There were 0 (zero) failed requests. This is with Apache Benchmark (ab -n 1 -c 50). The server, Jetty, was able to serve the CSS 10,000 times, yet it fails on occasion when my co-workers go and look at it. I am struggling to think what the problem is. Any suggestions? Does Jetty fail when the app is running an activity in something other than the main thread? Document Path: /css/timeout.css Document Length:3688 bytes Concurrency Level: 50 Time taken for tests: 62.913 seconds Complete requests: 1 Failed requests:0 Write errors: 0 Total transferred: 3843 bytes HTML transferred: 3688 bytes Requests per second:158.95 [#/sec] (mean) Time per request: 314.563 [ms] (mean) Time per request: 6.291 [ms] (mean, across all concurrent requests) Transfer rate: 596.53 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 137 154 75.01431241 Processing: 139 160 39.0152 772 Waiting: 138 160 38.0152 663 Total:277 314 86.62981636 Percentage of the requests served within a certain time (ms) 50%298 66%306 75%313 80%318 90%341 95%363 98%422 99%680 100% 1636 (longest request) On Wednesday, February 6, 2013 10:10:25 AM UTC-5, larry google groups wrote: I created a web app using Ring, Jetty, Enlive, Compojure. At the end, I bundled everything together by running the command lein uberjar. The resulting file was 21 megs. I scp the file to the server, then I ssh to the server. I start a screen session. Inside the screen session I type : java -jar kiosk-0.1-standalone.jar 30001 The number at the end is the port that I have it running on. Sometimes, when people look at the app, none of the CSS files load. I have run into this bug myself. Sometimes, when I look at the app, the Javascript and CSS paths are broken. If I click view source and see the source, and if I try to follow the links to the CSS or Javascript, then I get 404 errors. I have this in my code: (wrap-resource public) The structure of the code is: /resources /public /css /javascript /templates /src /kiosk The code is still able to find the templates in resources/templates, and that HTML is given to Enlive, so something appears on screen. It's just the stuff in public that sometimes goes missing. Can anyone suggest why? My routes are defined like this: (defroutes app-routes (ANY / request (index request)) (GET /search-results request (search-results request)) (GET /schema [] (schema)) (GET /account request (account request)) (GET /login request (login request)) (GET /start-over request
clojure.set/intersection can't cope with infinite sets
Currently this hangs, makes my machine quickly run out of memory and swap. (clojure.set/intersection #{1 2} (range)) The problem seems to be that count is called on both arguments to find the smallest set. Finding the shortest of 2 seqs lazily shouldn't be a problem, but another problem I can spot would be that contains? should be used only for some data structures, like hash-set, otherwise I guess some could be used, which would do the right thing, like in: (some #{1} (range)) 1 (some #{2} (range)) 2 At this point execution will stop and return the #{1 2} as all elements of the smallest set have been tested. Would it be possible and worth the added complication to fix this ? There could also be some potential performance improvements, for example removing count might be slightly more efficient when big sets are involved. I came up with this while trying to solve 4clojure #108 find the smallest single number which appears in all of the sequences. My approach to the 4clojure problem might be wrong altogether, yet I can imagine removing this limitation could be useful for some real problems too. -- -- 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: clojure.set/intersection can't cope with infinite sets
clojure.set/intersection is documented to work on input sets. In Clojure, all sets are finite. (range) is a lazy sequence, which isn't a set. You could attempt to make a set out of it with (set (range)), but that won't work because it will try to consume the entire unending sequence. I would guess that extending clojure.set/intersection to work on lazy sequences as well, possibly infinite, would be considered out of scope for what it is intended to do, but that is only my guess. You are of course welcome to make your own generalized version of intersection that works as you describe. Andy On Feb 6, 2013, at 8:42 AM, Andrea Chiavazza wrote: Currently this hangs, makes my machine quickly run out of memory and swap. (clojure.set/intersection #{1 2} (range)) The problem seems to be that count is called on both arguments to find the smallest set. Finding the shortest of 2 seqs lazily shouldn't be a problem, but another problem I can spot would be that contains? should be used only for some data structures, like hash-set, otherwise I guess some could be used, which would do the right thing, like in: (some #{1} (range)) 1 (some #{2} (range)) 2 At this point execution will stop and return the #{1 2} as all elements of the smallest set have been tested. Would it be possible and worth the added complication to fix this ? There could also be some potential performance improvements, for example removing count might be slightly more efficient when big sets are involved. I came up with this while trying to solve 4clojure #108 find the smallest single number which appears in all of the sequences. My approach to the 4clojure problem might be wrong altogether, yet I can imagine removing this limitation could be useful for some real problems too. -- -- 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: Belgian Clojure base meetup?
Hi All, The BeJUG would like to organize a evening session on Clojure in 2013 We're looking for a speaker living/working in Belgium or willing to travel (accommodation can be organized). Anyone interested ? Many Thanks in advance for the replies. Daniel De Luca BeJUG, Devoxx Steering Member On Monday, December 17, 2012 7:09:56 PM UTC+1, Sébastien Wagener wrote: Hi Thomas, I'm from Luxembourg. If the meetup isn't too far away from the border, I would be interested. Sébastien 2012/12/16 Thomas Goossens con...@thomasgoossens.be javascript: If you are from Belgium, Don't get too excited - yet - . I've been wondering about organising a small meetup somewhere next semester. (I peeked at our northern neighbours: http://www.meetup.com/The-Amsterdam-Clojure-Meetup-Group/events/88386392/ ) Though, I have no idea at all how many people here in Belgium are actively using clojure and would be interested in such a thing. Its not a plan, just being curious and checking whether it would be worth the time. So if you are from Belgium, give me a shout! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: 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: leiningen dependencies plugin
Maris writes: Is there dependencies plugin for leiningen ? I need to download all dependencies so I can copy my project to a server. ( I can't run leiningen on server ). If you can't run Leiningen on the server you should probably use an uberjar; it contains all your dependencies. Another option is the lein-tar plugin: https://github.com/technomancy/lein-tar/ -Phil -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: clojure.set/intersection can't cope with infinite sets
Yes, you're misunderstanding sets which, as implemented in Clojure, are inherently finite. That 4clojure problem is all about learning how to work with infinite sequences. I recommend you start by building a helper function that intersects two sorted infinite sequences. It doesn't already exist in Clojure -- you'll have to write it yourself. Then, figure out how to extend that to multiple infinite sequences. -- -- 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.
Callbacks as Sequences
I'm not to clojure/clojurescript and was wondering if anyone has taken a crack at writing a macro that transforms callbacks into a sequence. There is an awesome implementationion in LispyScript show here: https://gist.github.com/santoshrajan/3715526. Thanks for help. David -- -- 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: Callbacks as Sequences
Hi, jayq includes something similar (nicer imho). It takes the form of a let like construct (let-deferred [a (jq/ajax http://localhost:8000/1.json;) b (jq/ajax http://localhost:8000/2.json;)] (do-something-with-result (merge a b foo))) It also supports :let and :when intermediary steps. more examples can be found here: https://github.com/ibdknox/jayq#jayqmacros-source and the macro: https://github.com/ibdknox/jayq/blob/master/src/jayq/macros.clj#L15 https://github.com/ibdknox/jayq/blob/master/src/jayq/core.cljs#L516 Max On Wednesday, February 6, 2013 7:45:36 PM UTC+1, da...@dsargeant.com wrote: I'm not to clojure/clojurescript and was wondering if anyone has taken a crack at writing a macro that transforms callbacks into a sequence. There is an awesome implementationion in LispyScript show here: https://gist.github.com/santoshrajan/3715526. Thanks for help. David -- -- 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: Callbacks as Sequences
I've seen that and think it's awesome. This would be used for Node.js. I whipped this up to show what a Clojure version might look like. Basically each body form after the first is inserted where (cb) is found in the previous form. ; Definition (defmacro defseq [fn-name params body]) ; Example usage (defseq request-handler [req resp] ((. resp (set-header Content-Type text/html)) (exists some-file.txt (cb))) (fn [exists] (if exists (read-file filename utf8 (cb)) (. resp (end File Not Found (fn [err data] (if err (. resp (end Internal Server Error)) (. resp (end data) On Wednesday, February 6, 2013 2:13:33 PM UTC-5, Max Penet wrote: Hi, jayq includes something similar (nicer imho). It takes the form of a let like construct (let-deferred [a (jq/ajax http://localhost:8000/1.json;) b (jq/ajax http://localhost:8000/2.json;)] (do-something-with-result (merge a b foo))) It also supports :let and :when intermediary steps. more examples can be found here: https://github.com/ibdknox/jayq#jayqmacros-source and the macro: https://github.com/ibdknox/jayq/blob/master/src/jayq/macros.clj#L15 https://github.com/ibdknox/jayq/blob/master/src/jayq/core.cljs#L516 Max On Wednesday, February 6, 2013 7:45:36 PM UTC+1, da...@dsargeant.comwrote: I'm not to clojure/clojurescript and was wondering if anyone has taken a crack at writing a macro that transforms callbacks into a sequence. There is an awesome implementationion in LispyScript show here: https://gist.github.com/santoshrajan/3715526. Thanks for help. David -- -- 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: clojure.set/intersection can't cope with infinite sets
I can see the points being made, and now I'm also thinking that accepting infinite sequences wouldn't always work, for example if the infinite sequence wouldn't contain one of the elements of one of the other sequences, like: (clojure.set/intersection #{1 2} (drop 10 (range))) And I'm not sure it would be acceptable for a function that accepts sequences to hang depending on the input. Which also makes me wonder: shouldn't intersection throw a cannot be cast to clojure.lang.IPersistentSet when called with (range), rather than consume all memory and crash the jvm ? I still think though that accepting sequences rather then sets could be worth consideration for other reasons: - vectors would just work without having to call set on them: (clojure.set/intersection [2 3 4] [4 5 6]) (I think duplicate elements shouldn't cause problems) - it would also work on maps - sets can be treated as sequences, and operating on sequences whenever possible is very idiomatic in Clojure - no previous code would be broken, neither should performance decrease and maybe increase by removing the calls to count - the doc would simply change to Returns a set with the elements in common between the input seqs. - the implementation would call contains? if the sequence is a set, for performance reasons, and would call (some #{el} seq) otherwise -- -- 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: CSS sometimes disappears in uberjar web app using wrap-resource
Sadly, this app is suppose to go live tomorrow, so I am now limited in terms of what sort of experiments I can do. But I'd like to re-use this code in future projects, so I would like to figure this problem out. Does anyone think (wrap-files) would be more reliable than (wrap-resources)? On Wednesday, February 6, 2013 11:17:03 AM UTC-5, larry google groups wrote: I hit the app itself with Apache Benchmark. The speed is fairly bad. This is a small app which serves everything from memory -- there is no database to slow things down. I am aware that I made several mistakes with this app. I had to write it in a huge hurry. I abused the Enlive template system and, I am fairly sure, there are places where I redundantly change Enlive nodes to a string, then change them back to Enlive nodes, then change them back to a string to serve them to the public. I imagine I can get a speed bump when I go back through and clean it up. But I am still left with the main puzzle: why does the CSS sometimes fail to load? I know that sometimes (rarely) if I point my browser directly at the path for the CSS file, I get a 404 error. What would cause an intermittent problem like that? Some background exception? What? ab -n 1000 -c 10 Server Software:Jetty(7.x.y-SNAPSHOT) Document Path: / Document Length:4277 bytes Concurrency Level: 10 Time taken for tests: 235.877 seconds Complete requests: 1000 Failed requests:0 Write errors: 0 Total transferred: 4551891 bytes HTML transferred: 4277000 bytes Requests per second:4.24 [#/sec] (mean) Time per request: 2358.775 [ms] (mean) Time per request: 235.877 [ms] (mean, across all concurrent requests) Transfer rate: 18.85 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 137 139 3.4138 172 Processing: 1372 2216 280.3 22103057 Waiting: 1371 2215 280.3 22103057 Total: 1510 2355 280.5 23513195 Percentage of the requests served within a certain time (ms) 50% 2351 66% 2470 75% 2558 80% 2610 90% 2734 95% 2828 98% 2914 99% 3008 100% 3195 (longest request) On Wednesday, February 6, 2013 10:53:50 AM UTC-5, larry google groups wrote: I logged into my personal server (in the Rackspace cloud, what used to be Slicehost) and blasted the CSS file with 10,000 requests. There were 0 (zero) failed requests. This is with Apache Benchmark (ab -n 1 -c 50). The server, Jetty, was able to serve the CSS 10,000 times, yet it fails on occasion when my co-workers go and look at it. I am struggling to think what the problem is. Any suggestions? Does Jetty fail when the app is running an activity in something other than the main thread? Document Path: /css/timeout.css Document Length:3688 bytes Concurrency Level: 50 Time taken for tests: 62.913 seconds Complete requests: 1 Failed requests:0 Write errors: 0 Total transferred: 3843 bytes HTML transferred: 3688 bytes Requests per second:158.95 [#/sec] (mean) Time per request: 314.563 [ms] (mean) Time per request: 6.291 [ms] (mean, across all concurrent requests) Transfer rate: 596.53 [Kbytes/sec] received Connection Times (ms) min mean[+/-sd] median max Connect: 137 154 75.01431241 Processing: 139 160 39.0152 772 Waiting: 138 160 38.0152 663 Total:277 314 86.62981636 Percentage of the requests served within a certain time (ms) 50%298 66%306 75%313 80%318 90%341 95%363 98%422 99%680 100% 1636 (longest request) On Wednesday, February 6, 2013 10:10:25 AM UTC-5, larry google groups wrote: I created a web app using Ring, Jetty, Enlive, Compojure. At the end, I bundled everything together by running the command lein uberjar. The resulting file was 21 megs. I scp the file to the server, then I ssh to the server. I start a screen session. Inside the screen session I type : java -jar kiosk-0.1-standalone.jar 30001 The number at the end is the port that I have it running on. Sometimes, when people look at the app, none of the CSS files load. I have run into this bug myself. Sometimes, when I look at the app, the Javascript and CSS paths are broken. If I click view source and see the source, and if I try to follow the links to the CSS or Javascript, then I get 404 errors. I have this in my code: (wrap-resource public) The structure of the code is: /resources /public /css /javascript /templates /src /kiosk The code is still able to find the templates in resources/templates, and that HTML is given to Enlive,
Re: CSS sometimes disappears in uberjar web app using wrap-resource
Could you try replacing the wrap-resource middleware with the route/resources function? The latter operates in a slightly different way to the Ring middleware, and if the Compojure route works without issue, I might have an idea what the problem is. i.e. your code should look like: (defroutes app-routes (ANY / request (index request)) ;; rest of routes (GET /finish-user-sign-up request (finish-user-sign-up request)) (route/resources /) (route/not-found Page not found)) You've also got a max-age of 90 for your session cookies, which would mean your sessions will time out in 90 seconds. Is that what you want? Also: (GET /foo request (foo request)) Is equivalent to: (GET /foo [] foo) - James On 6 February 2013 15:10, larry google groups lawrencecloj...@gmail.comwrote: I created a web app using Ring, Jetty, Enlive, Compojure. At the end, I bundled everything together by running the command lein uberjar. The resulting file was 21 megs. I scp the file to the server, then I ssh to the server. I start a screen session. Inside the screen session I type : java -jar kiosk-0.1-standalone.jar 30001 The number at the end is the port that I have it running on. Sometimes, when people look at the app, none of the CSS files load. I have run into this bug myself. Sometimes, when I look at the app, the Javascript and CSS paths are broken. If I click view source and see the source, and if I try to follow the links to the CSS or Javascript, then I get 404 errors. I have this in my code: (wrap-resource public) The structure of the code is: /resources /public /css /javascript /templates /src /kiosk The code is still able to find the templates in resources/templates, and that HTML is given to Enlive, so something appears on screen. It's just the stuff in public that sometimes goes missing. Can anyone suggest why? My routes are defined like this: (defroutes app-routes (ANY / request (index request)) (GET /search-results request (search-results request)) (GET /schema [] (schema)) (GET /account request (account request)) (GET /login request (login request)) (GET /start-over request (start-over request)) (GET /admin request (admin request)) (GET /ok request (ok request)) (POST /admin request (record-new-question-if-any request)) (GET /delete-question/:question-to-delete request (delete-question request)) (GET /finish-user-sign-up request (finish-user-sign-up request)) (route/not-found Page not found)) (def app (- app-routes (wrap-resource public) (wrap-session {:cookie-name discovery-session :cookie-attrs {:max-age 90 }}) (wrap-cookies) (wrap-keyword-params) (wrap-nested-params) (wrap-params))) -- -- 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.
Using lein in upstart init script
Hi all, I need to start a ring server from an upstart script on Ubuntu. Normally I would use an uberjar and execute java directly, but in this case I cannot do AOT and would like to simply run lein ring server-headless from my upstart script. Even when I use lein trampoline I get respawning too fast from upstart. Any ideas on how to do this? Thanks, David -- David Jagoe davidja...@gmail.com +18053284389 -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Using lein in upstart init script
I need to start a ring server from an upstart script on Ubuntu. Normally I would use an uberjar and execute java directly, but in this case I cannot do AOT and would like to simply run lein ring server-headless from my upstart script. Even when I use lein trampoline I get respawning too fast from upstart. Any ideas on how to do this? Here's one I use: description foo bar bz start on (local-filesystems and net-device-up IFACE!=lo) stop on stopping network-services respawn setuid someuser setgid somegroup chdir /path/to/app exec lein trampoline ring server-headless 3344 Note that lein won't normally run as root. So the setuid part is important (or you'll need to set LEIN_ROOT=1). jack. -- -- 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: clojure.set/intersection can't cope with infinite sets
Sets are stored in a very specific way that enables intersection to be fast - proportional to the size of the smaller set. Intersecting arbitrary sequences can't be done particularly efficiently. If Clojure's intersection worked on sequences (perhaps by first converting to sets behind the scenes), people would get in the habit of passing sequences to intersection and would be surprised by the gross inefficiency of their code. Clojure forces you to choose the right data structure for the task at hand. If you need to do a lot of intersections, choose sets from the start. --Mark -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Prismatic Plumbing and Graph Open-Source Release
Hi Las, Currently the graph topology is fixed at compile time, and cannot be changed by the values flowing through it. In such situations, we either: - Have two copies of the graph with different node functions for N2 (i.e., when generating different types of newsfeeds, from our original blog example) and call different ones depending on input type - Put the conditional into a single node N2 It's hard to say more without knowing about your specific use case. If you want to share details, I'd like to listen, either here or off-list. Cheers, Jason On Wednesday, February 6, 2013 1:08:53 AM UTC-8, Las wrote: Hi, Good stuff! I was wondering how do you guys deal with decision nodes or does is make sense to model such a thing at the nodel level. Imagine having a diamond topology e.g. N1 /\ N2aN2b \/ N3 based on some input to N1, either N2a or N2b gets computed on which N3 depends. Does this make sense or should this decision step be wrapped in a node N2. Thanks, Las 2013/1/29 Aria Haghighi m...@aria42.com javascript: Hey all, Prismatic has open-sourced our Plumbing and Graph library on githubhttps://github.com/prismatic/plumbing. Jason Wolfe gave a talkhttp://blog.getprismatic.com/blog/2012/10/1/prismatics-graph-at-strange-loop.htmlabout how we use graph for systems composition at Strange loop last year. Please give the library a whirl and let us know if you're using it and if you find any issues or feature requests. We use this library very heavily throughout our code and hope others find it useful as well. Best, Aria -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: 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 javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- László Törö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: Using lein in upstart init script
David Jagoe writes: I need to start a ring server from an upstart script on Ubuntu. Normally I would use an uberjar and execute java directly, but in this case I cannot do AOT and would like to simply run lein ring server-headless from my upstart script. Even when I use lein trampoline I get respawning too fast from upstart. You can use an uberjar without AOT; just use something like this: $ java -cp my-uberjar.jar clojure.main -m my.namespace 8080 I think that's the proper invocation; you can do clojure.main --help for details if that's not right. There is also a lein-otf plugin which can create jars that work with `java -jar` without AOTing your own code. -Phil -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Using lein in upstart init script
On 6 February 2013 14:40, Phil Hagelberg p...@hagelb.org wrote: You can use an uberjar without AOT; just use something like this: $ java -cp my-uberjar.jar clojure.main -m my.namespace 8080 Excellent, 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.
[ANN] Morph v0.1.0 Monads friends: pure functions, less boilerplate
Morph is a new implementation of monads based on protocols. It's intended to provide the common patterns of error-handling, short-circuit sequencing, and modeling of stateful computations in pure functions. I've tried to make this library idiomatic while keeping it close to its Haskell roots. This is a utility library that, I hope, can make your coding easier. No particular knowledge is assumed or required. The docs name things but rely on getting an intuitive feeling of what's going on. Protocols are relevant only if you want to write your own plumbing, which shouldn't be difficult; otherwise it's all ready to use. Project: https://github.com/blancas/morph User Guide: https://github.com/blancas/morph/wiki Codox API: http://blancas.github.com/morph Please use the project wiki for feedback, bug reports, or feature requests. -- -- 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] Morph v0.1.0 Monads friends: pure functions, less boilerplate
this is great, just one nit to pick about currying (because it's something that's bitten me in the past in other contexts): in the wiki you say For a predefined function with a fixed number of arguments, only the function name must be supplied., but this is only sort of true---the issue isn't whether the function is predefined or not, the issue is whether the argument is a symbol that resolves to a var. This, for instance, doesn't work: (let [t take] (((curry t) 3) '(1 2 3 4))) Even though take is a predefined function. And this picks up the wrong metadata (this example is factitious on its face, but it could happen in practice): blancas.morph.core (defn three-params [a b c] a) #'blancas.morph.core/three-params blancas.morph.core (let [three-params take] (((curry three-params) 3) '(1 2 3 4))) #core$eval2780$G__2784__2785$G__2786__2787$fn__2788 blancas.morph.core$eval2780 $G__2784__2785$G__2786__2787$fn__2788@65c66812 blancas.morph.core because resolve goes directly to var bindings, overlooking other niceties of lexical scope. Unrelatedly: - I couldn't figure out how to write something like foldM, because I couldn't figure out how to call return on the seed value when the list is empty. ISTR (when you announced your parsing library) that there isn't a way to do that kind of thing at all? - I'm curious about the Monoid protocol---I have one in babbage, and it has two more methods than yours, mempty? and value (instead of monoid-specific accessors). Why not put the accessors in the protocol? On Wed, Feb 6, 2013 at 4:06 PM, Armando Blancas abm221...@gmail.com wrote: Morph is a new implementation of monads based on protocols. It's intended to provide the common patterns of error-handling, short-circuit sequencing, and modeling of stateful computations in pure functions. I've tried to make this library idiomatic while keeping it close to its Haskell roots. This is a utility library that, I hope, can make your coding easier. No particular knowledge is assumed or required. The docs name things but rely on getting an intuitive feeling of what's going on. Protocols are relevant only if you want to write your own plumbing, which shouldn't be difficult; otherwise it's all ready to use. Project: https://github.com/blancas/morph User Guide: https://github.com/blancas/morph/wiki Codox API: http://blancas.github.com/morph Please use the project wiki for feedback, bug reports, or feature requests. -- -- 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. -- Ben Wolfson Human kind has used its intelligence to vary the flavour of drinks, which may be sweet, aromatic, fermented or spirit-based. ... Family and social life also offer numerous other occasions to consume drinks for pleasure. [Larousse, Drink entry] -- -- 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] Morph v0.1.0 Monads friends: pure functions, less boilerplate
this is great, just one nit to pick about currying (because it's something that's bitten me in the past in other contexts): in the wiki you say For a predefined function with a fixed number of arguments, only the function name must be supplied., but this is only sort of true---the issue isn't whether the function is predefined or not, the issue is whether the argument is a symbol that resolves to a var. This, for instance, doesn't work: (let [t take] (((curry t) 3) '(1 2 3 4))) Even though take is a predefined function. And this picks up the wrong metadata (this example is factitious on its face, but it could happen in practice): blancas.morph.core (defn three-params [a b c] a) #'blancas.morph.core/three-params blancas.morph.core (let [three-params take] (((curry three-params) 3) '(1 2 3 4))) #core$eval2780$G__2784__2785$G__2786__2787$fn__2788 blancas.morph.core$eval2780 $G__2784__2785$G__2786__2787$fn__2788@65c66812 blancas.morph.core because resolve goes directly to var bindings, overlooking other niceties of lexical scope. Unrelatedly: - I couldn't figure out how to write something like foldM, because I couldn't figure out how to call return on the seed value when the list is empty. ISTR (when you announced your parsing library) that there isn't a way to do that kind of thing at all? - I'm curious about the Monoid protocol---I have one in babbage, and it has two more methods than yours, mempty? and value (instead of monoid-specific accessors). Why not put the accessors in the protocol? On Wed, Feb 6, 2013 at 4:06 PM, Armando Blancas abm221...@gmail.com wrote: Morph is a new implementation of monads based on protocols. It's intended to provide the common patterns of error-handling, short-circuit sequencing, and modeling of stateful computations in pure functions. I've tried to make this library idiomatic while keeping it close to its Haskell roots. This is a utility library that, I hope, can make your coding easier. No particular knowledge is assumed or required. The docs name things but rely on getting an intuitive feeling of what's going on. Protocols are relevant only if you want to write your own plumbing, which shouldn't be difficult; otherwise it's all ready to use. Project: https://github.com/blancas/morph User Guide: https://github.com/blancas/morph/wiki Codox API: http://blancas.github.com/morph Please use the project wiki for feedback, bug reports, or feature requests. -- -- 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. -- Ben Wolfson Human kind has used its intelligence to vary the flavour of drinks, which may be sweet, aromatic, fermented or spirit-based. ... Family and social life also offer numerous other occasions to consume drinks for pleasure. [Larousse, Drink entry] -- -- 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.
Sending Clojure Objects over TCP
Does anyone know if there's a simplified networking library that allows this? -- -- 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: Sending Clojure Objects over TCP
http://code.google.com/p/jetlang/wiki/Remoting On Wed, Feb 6, 2013 at 8:16 PM, JvJ kfjwhee...@gmail.com wrote: Does anyone know if there's a simplified networking library that allows this? -- -- 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: Sending Clojure Objects over TCP
Objects ?!?!? You want to exchange only data structures ? Or do you expect some form of RPC ? Luc P. Does anyone know if there's a simplified networking library that allows this? -- -- 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. -- Softaddictslprefonta...@softaddicts.ca 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: [ANN] Morph v0.1.0 Monads friends: pure functions, less boilerplate
Good catch with currying non vars; I'll try to work something out. Also, should come up with a general defcurry macro; I'm not happy with that. Things like foldM may just not be possible, but I'll keep track of these issues so maybe I can give you a good answer for the things you've brought up. Just having to deal with deftype'd monoids is a bit of a pain, so I welcome ideas to simplify them. On Wednesday, February 6, 2013 4:43:33 PM UTC-8, Ben wrote: this is great, just one nit to pick about currying (because it's something that's bitten me in the past in other contexts): in the wiki you say For a predefined function with a fixed number of arguments, only the function name must be supplied., but this is only sort of true---the issue isn't whether the function is predefined or not, the issue is whether the argument is a symbol that resolves to a var. This, for instance, doesn't work: (let [t take] (((curry t) 3) '(1 2 3 4))) Even though take is a predefined function. And this picks up the wrong metadata (this example is factitious on its face, but it could happen in practice): blancas.morph.core (defn three-params [a b c] a) #'blancas.morph.core/three-params blancas.morph.core (let [three-params take] (((curry three-params) 3) '(1 2 3 4))) #core$eval2780$G__2784__2785$G__2786__2787$fn__2788 blancas.morph.core$eval2780 $G__2784__2785$G__2786__2787$fn__2788@65c66812 blancas.morph.core because resolve goes directly to var bindings, overlooking other niceties of lexical scope. Unrelatedly: - I couldn't figure out how to write something like foldM, because I couldn't figure out how to call return on the seed value when the list is empty. ISTR (when you announced your parsing library) that there isn't a way to do that kind of thing at all? - I'm curious about the Monoid protocol---I have one in babbage, and it has two more methods than yours, mempty? and value (instead of monoid-specific accessors). Why not put the accessors in the protocol? On Wed, Feb 6, 2013 at 4:06 PM, Armando Blancas abm2...@gmail.comjavascript: wrote: Morph is a new implementation of monads based on protocols. It's intended to provide the common patterns of error-handling, short-circuit sequencing, and modeling of stateful computations in pure functions. I've tried to make this library idiomatic while keeping it close to its Haskell roots. This is a utility library that, I hope, can make your coding easier. No particular knowledge is assumed or required. The docs name things but rely on getting an intuitive feeling of what's going on. Protocols are relevant only if you want to write your own plumbing, which shouldn't be difficult; otherwise it's all ready to use. Project: https://github.com/blancas/morph User Guide: https://github.com/blancas/morph/wiki Codox API: http://blancas.github.com/morph Please use the project wiki for feedback, bug reports, or feature requests. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: 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 javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- Ben Wolfson Human kind has used its intelligence to vary the flavour of drinks, which may be sweet, aromatic, fermented or spirit-based. ... Family and social life also offer numerous other occasions to consume drinks for pleasure. [Larousse, Drink entry] -- -- 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: Sending Clojure Objects over TCP
I was just looking for sending data structures. But hey, if RPC existed that would be cool too. On Wednesday, 6 February 2013 20:24:54 UTC-5, Luc wrote: Objects ?!?!? You want to exchange only data structures ? Or do you expect some form of RPC ? Luc P. Does anyone know if there's a simplified networking library that allows this? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: 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 javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- Softaddictslprefo...@softaddicts.ca javascript: 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: Sending Clojure Objects over TCP
To send clojure values: http://clojuredocs.org/clojure_core/clojure.core/pr-str You may need to extend print-dup if you need to stringify Java objects or defrecords. http://amalloy.hubpages.com/hub/Dont-use-XML-JSON-for-Clojure-only-persistence-messaging Have a nice reading and come back if some of that stuff remains unclear. Luc P. I was just looking for sending data structures. But hey, if RPC existed that would be cool too. On Wednesday, 6 February 2013 20:24:54 UTC-5, Luc wrote: Objects ?!?!? You want to exchange only data structures ? Or do you expect some form of RPC ? Luc P. Does anyone know if there's a simplified networking library that allows this? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.comjavascript: 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 javascript: 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 javascript:. For more options, visit https://groups.google.com/groups/opt_out. -- Softaddictslprefo...@softaddicts.ca javascript: 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. -- Softaddictslprefonta...@softaddicts.ca 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.
Clojure/West (Portland, Mar 18-20) - Mission Kontrol, unsessions, lightning talks
Clojure/West has a great schedule lined up. If you haven't yet, check out the schedule at http://clojurewest.org/schedule. You can register at http://regonline.com/clojurewest2013. If you've seen the odd couple (Dan Friedman and Will Byrd) talking about miniKanren and logic programming, you know they have a lot of interesting stuff to show. We've got a whole miniKanren Confo lined up colocated with Clojure/West, with not just Dan and Will, but David Nolen, and some other great talks (http://clojurewest.org/sessions#confo). Register as an optional item when you register for Clojure/West. If you're coming in the night before the conference, we've got Mission Kontrol, the arcade wonderland reserved with FREE PLAY on all games from 7-9 pm. It's just a couple blocks from the hotel. Unsessions (https://github.com/strangeloop/clojurewest2013/wiki/Unsessions) and lightning talks (http://bit.ly/WBqELu) are now open for submissions. Unsessions will be scheduled based on interest and lightning talks will be opened up to a poll of attendees prior to the conference. Gonna be great! Alex -- -- 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: Callbacks as Sequences
I did something for a http lib: ;; get them concurrently(let [response1 (http/get http://http-kit.org/;) response2 (http/get http://clojure.org/;)] ;; handle responses one-by-one, waiting for response as necessary ;; other keys :headers :status :error :opts (println response1: (:body @response1)) (println response2: (:body @response2))) On Thursday, February 7, 2013 2:45:36 AM UTC+8, da...@dsargeant.com wrote: I'm not to clojure/clojurescript and was wondering if anyone has taken a crack at writing a macro that transforms callbacks into a sequence. There is an awesome implementationion in LispyScript show here: https://gist.github.com/santoshrajan/3715526. Thanks for help. David -- -- 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: Possible bug in clojure.java.jdbc
Try this: ... (jdbc/with-quoted-identifiers \ (jdbc/update-or-insert-values ...)) ... clojure.java.jdbc supports generic naming strategies that specify how to wrap column names (going into JDBC) and how to convert column names (back to Clojure keys on the way out of JDBC). Different databases use different quoting conventions - MySQL supports `column` for example. I think MS SQL Server supports [column] so you can do that by passing a two element vector to with-quoted-identifiers [\[ \]] By default, c.j.jdbc converts column names to lowercase keywords when returning a resultset but you can use a naming strategy to override that and return column names as-is, for example. See the docs for more details: http://clojure.github.com/java.jdbc/#clojure.java.jdbc/with-naming-strategy Sean On Tue, Feb 5, 2013 at 11:15 PM, a...@bitlimn.com wrote: @Andy: Sorry, I didn't know the proper channel, I'll post it there. I don't control the column names. They're imported from an excel spreadsheet or assigned by the client I'm writing the app for. From experience, it is certainly *possible*, at least to add these columns. Currently I just have a function that escapes the user input, replacing special characters with lookalikes (i.e. space with an underscore). On Tuesday, February 5, 2013 10:42:50 PM UTC-8, Sean Corfield wrote: Andy's right on process... but as maintainer of clojure.java.jdbc, I have to ask: why on earth do you have column names containing spaces or or other weird characters? That's a serious question: how do you get into that situation? I'm not saying clojure.java.jdbc can't be updated to support it, I'm just questioning whether it should... On Tue, Feb 5, 2013 at 7:32 PM, Andy Fingerhut andy.fi...@gmail.com wrote: You can create a ticket for java.jdbc here if you wish that describes the problem and what you think will fix it. Then any of the 500+ Clojure contributors can take a shot at fixing it: http://dev.clojure.org/jira/**browse/JDBChttp://dev.clojure.org/jira/browse/JDBC Andy On Feb 5, 2013, at 7:07 PM, al...@bitlimn.com wrote: Hey all, I've been using clojure.java.jdbc to write a simple database app. When I use the `update-or-insert-values` function, I get an SQLException thrown whenever my column names have special characters in them (like a space or an ampersand). I think the solution is in line 908: the column-strs should be quoted before calling `interpose`. If you do `(map #(str \ %1 \) column-strs)` that should do it? I can get around this by just writing my own version, but I wanted to patch it for everybody. I was told in #clojure that I can't? Anyways, I'm going to try to get in contact with the maintainer, but if anyone here has contributing rights, and would like to patch it, you have my thanks. --semisight -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clo...@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+u...@**googlegroups.com For more options, visit this group at http://groups.google.com/**group/clojure?hl=enhttp://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+u...@**googlegroups.com. For more options, visit https://groups.google.com/**groups/opt_outhttps://groups.google.com/groups/opt_out. -- 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. -- 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
Re: Clojure/West (Portland, Mar 18-20) - Mission Kontrol, unsessions, lightning talks
On Feb 6, 2013, at 18:27, Alex Miller wrote: If you're coming in the night before the conference, we've got Mission Kontrol, the arcade wonderland reserved with FREE PLAY on all games from 7-9 pm. It's just a couple blocks from the hotel. And, if you think real computers are more fun to play with than video games, drop by the Datomic Hack Session, starting at ~3 pm... -r -- http://www.cfcl.com/rdmRich Morin http://www.cfcl.com/rdm/resume r...@cfcl.com http://www.cfcl.com/rdm/weblog +1 650-873-7841 Software system design, development, and documentation -- -- 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: Clojure/West (Portland, Mar 18-20) - Mission Kontrol, unsessions, lightning talks
Hey Rich, Where can we find more about this datomic hack session? Leonardo Borges www.leonardoborges.com On Thu, Feb 7, 2013 at 4:03 PM, Rich Morin r...@cfcl.com wrote: On Feb 6, 2013, at 18:27, Alex Miller wrote: If you're coming in the night before the conference, we've got Mission Kontrol, the arcade wonderland reserved with FREE PLAY on all games from 7-9 pm. It's just a couple blocks from the hotel. And, if you think real computers are more fun to play with than video games, drop by the Datomic Hack Session, starting at ~3 pm... -r -- http://www.cfcl.com/rdmRich Morin http://www.cfcl.com/rdm/resume r...@cfcl.com http://www.cfcl.com/rdm/weblog +1 650-873-7841 Software system design, development, and documentation -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: Tawny-OWL 0.9
There is one more important difference between EPL and GPL/LGPL that we should be aware off: You cannot copy snippets out of Philip's LGPL'ed code and use them in your own EPL'ed code. For me, one of the great benefits of all the EPL'ed clojure libraries out there is, that I've freely borrowed and stolen many functions and snippets from libraries of coders much smarter than me… This is just an observation and warning, and I do not want to engage in any religious open source licensing argument… … however, from a personal benefit point of view, if you want to publish your code as open source for the clojure community, and you do not care too much about whether it should be EPL or GPL/LGPL, then please choose EPL. If you care strongly about GPL/LGPL, more power to you and thanks for sharing the library also! Thanks, Frank. On Feb 6, 2013, at 12:06 AM, Phillip Lord phillip.l...@newcastle.ac.uk wrote: This should be fine. Both EPL and LGPL are weak copyleft. Clojure code does not need to be EPL because EPL does not force it. Likewise, Clojure can call back to this LGPL library because, the LGPL doesn't enforce derivative works as a whole to be LGPL (although modifications to the tawny *would* have to be LGPL, likewise, modified versions of Clojure). The uber jar is a red herring, I think. It's an aggregation, not a derivative work. The same problem would exist even if I EPL'd the library; it uses the OWL API underneath, and this is LGPL also. If code written in Clojure were affected by the EPL, then it would have been a fairly poor choice of license, I feel. Phil AtKaaZ atk...@gmail.com writes: you can release that on LGPL License ? does that work with the EPL of clojure ? or is it only an issue when lein uberjar-ed ? On Tue, Feb 5, 2013 at 5:57 PM, Phillip Lord phillip.l...@newcastle.ac.ukwrote: Tawny-OWL is a clojure library which provides a DSL for the construction of OWL Ontologies (http://www.w3.org/2004/OWL/). The practical upshot of this, is that allows a form of logic reasoning over sets of facts about the world, with strong computational guarantees about decidability. At it's simplest it looks rather like the Manchester Syntax, but is fully programmatic language, which allows for arbitrary templating of expressions. Where possible, it uses clojure facilities directly, so things like autocomplete, and documentation look up work out-of-the-box, in what ever IDE is your poison. It comes complete with reasoner support using HermiT (http://www.hermit-reasoner.com/) or ELK (http://code.google.com/p/elk-reasoner/). Tawny-OWL current implements all of the object and annotation side of OWL; expression of datatype properties will follow shortly. Although, it's been available for a while, this is the first release that I have announced here. I'd welcome feedback. The Clojure is a bit nasty at places--I learnt the language at the same time. https://github.com/phillord/tawny-owl and on clojars. Phil -- Phillip Lord, Phone: +44 (0) 191 222 7827 Lecturer in Bioinformatics, Email: phillip.l...@newcastle.ac.uk School of Computing Science, http://homepages.cs.ncl.ac.uk/phillip.lord Room 914 Claremont Tower, skype: russet_apples Newcastle University, msn: m...@russet.org.uk NE1 7RU twitter: phillord -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out. -- Please correct me if I'm wrong or incomplete, even if you think I'll subconsciously hate it. -- -- Phillip Lord, Phone: +44 (0) 191 222 7827 Lecturer in Bioinformatics, Email: phillip.l...@newcastle.ac.uk School of Computing Science, http://homepages.cs.ncl.ac.uk/phillip.lord Room 914 Claremont Tower, skype: russet_apples Newcastle University, msn: m...@russet.org.uk NE1 7RU twitter: phillord -- -- 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,
mysql auth issue when using upstart for ring
Hey, I used a similar upstart script which works fine for ring. However, weirdly enough, my auth with a mysql database fails. I'm using korma to interface with the db. The problem only occurs with upstart script,, because it works fine when I run it myself. To be clearer. When I run: lein trampoline run/lein ring server, my db connects fine. However, I use the following upstart script: start on startup start on runlevel [2345] stop on runlevel [!2345] chdir /home/ubuntu/www setuid ubuntu exec lein trampoline run out.log 21 When I run the daemon, ring runs fine. However, when it communicates with the mysql server, it throw the following exception (amongst a sea of stack traces): java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) This is weird because my korma config does supply a password, and it works fine when I run lein run myself. However for reference sake, I check for an environment variable(CLJ_ENV) to decide which config to use. SInce the only differentiating factor is upstart, my assumption is that the problem is due to setuid. But to be honest, I have no idea what's going wrong. Oh, and for clarification this is all on an aws machine running Ubuntu Server 12.04 LTS. Any ideas on whats going on? -- -- 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: mysql auth issue when using upstart for ring
On Thursday, February 7, 2013 3:12:22 PM UTC+8, Omer Iqbal wrote: Hey, I used a similar upstart script which works fine for ring. [EDIT] ignore the above sentence. I was originally replying to a thread. #mybad However, weirdly enough, my auth with a mysql database fails. I'm using korma to interface with the db. The problem only occurs with upstart script,, because it works fine when I run it myself. To be clearer. When I run: lein trampoline run/lein ring server, my db connects fine. However, I use the following upstart script: start on startup start on runlevel [2345] stop on runlevel [!2345] chdir /home/ubuntu/www setuid ubuntu exec lein trampoline run out.log 21 When I run the daemon, ring runs fine. However, when it communicates with the mysql server, it throw the following exception (amongst a sea of stack traces): java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO) This is weird because my korma config does supply a password, and it works fine when I run lein run myself. However for reference sake, I check for an environment variable(CLJ_ENV) to decide which config to use. SInce the only differentiating factor is upstart, my assumption is that the problem is due to setuid. But to be honest, I have no idea what's going wrong. Oh, and for clarification this is all on an aws machine running Ubuntu Server 12.04 LTS. Any ideas on whats going on? -- -- 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: Inflection on clojure.java.io/reader and writer
Welcome to a world of values, not containers (the blue pieces can only fit in the blue container, the red ones you get the picture) or as Rich says places. I always thought that by places he means mutable identifiers; languages like Haskell have a lot of luck with type-checking immutable *values*. I don't see how appreciation for values over places leads to lack of type-checking. On Wednesday, February 6, 2013 4:50:54 AM UTC+4, Luc wrote: You are not defining a type here. A type hint is just that... a hint so the compiler can optimize the code it generates to call the readLine method on this specific object class. As an example, if io/reader returned an object of a different class at runtime than BufferedReader, it would not fail even if the hint says expect an object of this class. The generated code testing that the object is not of the hinted class would resort to reflection on the object class to find if the readLine method exists. If not you will get the usual runtime error saying that the method does not exists. The Clojure compiler has no type checking equivalent to Java, C, ... You can define stuff that is not even bound to a value, it would be hard to type check on these at compile time, no ? Welcome to a world of values, not containers (the blue pieces can only fit in the blue container, the red ones you get the picture) or as Rich says places. Luc P. That's funny, I did exactly the same thing and wrote BufferedReader for both. DOH! Although I have no idea how the internals of type hinting is, I do think it's peculiar that there doesn't seem to be type error checking, even though we are explicitly defining the type. I would feel like it should error, instead of falling back on reflection. Kanwei On Monday, February 4, 2013 12:36:51 PM UTC-5, AtKaaZ wrote: in other words: this: (let [in (clojure.java.io/reader src) out (clojure.java.io/writer dest) becomes this: (let [^java.io.BufferedReader in (clojure.java.io/reader src) ^java.io.BufferedWriter out (clojure.java.io/writer dest) and it works for me too. (but I wasted some time by having BufferedReader in both places) On Mon, Feb 4, 2013 at 6:26 PM, Andy Fingerhut andy.fi...@gmail.comjavascript: wrote: I don't have CCW Eclipse installed to test, but by saving that file on my Mac (should also work on Linux) in a subdirectory obj, and editing it to add the ^java.io.BufferedReader in and ^java.io.BufferedWriter out type hints as suggested by Luc P. earlier in this thread, I was able to eliminate the reflection warnings: % mkdir obj % cp gist_file obj/solutions.clj # Original file without the type hints gives reflection warnings as expected % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj clojure.lang.Compile solution Compiling solution to ./obj Reflection warning, solution.clj:38 - reference to field readLine can't be resolved. Reflection warning, solution.clj:45 - reference to field readLine can't be resolved. Reflection warning, solution.clj:63 - reference to field newLine can't be resolved. Reflection warning, solution.clj:54 - reference to field newLine can't be resolved. # Now I hand-edit obj/solutions.clj to add the type hints, and recompile. No reflection warnings. % java -Dclojure.compile.path=./obj -cp clojure-1.4.0.jar:./obj clojure.lang.Compile solution Compiling solution to ./obj % Perhaps you should try verifying that you added the type hints correctly, saved the source file, recompiled the one you wanted to in CCW Eclipse, etc. Andy On Feb 4, 2013, at 9:10 AM, Kanwei Li wrote: Hey Andy, Thanks for offering to help. Here's a gist: https://gist.github.com/4696105 As you can see at the bottom, I want the main method to read/write to STDIN/STDOUT, but for testing, I want to read from files instead. This is what I get in both CCW Eclipse and nrepl: Reflection warning, NO_SOURCE_PATH:4 - reference to field readLine can't be resolved. Reflection warning, NO_SOURCE_PATH:11 - reference to field readLine can't be resolved. Reflection warning, NO_SOURCE_PATH:29 - reference to field newLine can't be resolved. Reflection warning, NO_SOURCE_PATH:20 - reference to field newLine can't be resolved. Thanks! On Sunday, February 3, 2013 4:38:38 PM UTC-5, Andy Fingerhut wrote: Can you post a larger chunk of code for us to examine, perhaps on github or as a gist if it is over 30 lines of code or so? Many of us have had good success with eliminating reflection using type hints, so it should be possible to make it work. Andy
Clojure - Python Style suggestion
We had this talk with scheme. They called it I expressions. Here is the link http://srfi.schemers.org/srfi-49/srfi-49.html Do it because you can, and so you can decide for yourself what to think about it. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: Clojure - Python Style suggestion
If someone does write a Lisp with significant whitespace, can we please call it Whitespathe? On 7 February 2013 10:30, Marco Munizaga drchoc...@gmail.com wrote: We had this talk with scheme. They called it I expressions. Here is the link http://srfi.schemers.org/srfi-49/srfi-49.html Do it because you can, and so you can decide for yourself what to think about it. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/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.