hara.concurrent.procedure "2.2.13" - parameterised control of current execution
Hey guys. I've been playing with this idea for the last 6 months. Really excited to have finally written it up. Hope to get some feedback! blog: http://z.caudate.me/parameterised-execution-hara-concurrent-procedure/ docs: http://docs.caudate.me/hara/hara-concurrent-procedure.html Chris. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[ANN] [helpshift/gulfstream "0.2.1"] - rapid graph visualizations
gulfstream (https://github.com/helpshift/gulfstream) is a library with similar functionality to https://github.com/aysylu/loom and https://github.com/ztellman/rhizome Built on top of graphstream(http://graphstream-project.org), it's main advantage lies in rapid visualisation, interaction and styling of the directed graph. The documentation is at http://helpshift.github.io/gulfstream/ -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: Stuart Sierra's Component: retries & restarts in production
We make sure the components we build know how to restart themselves. This avoids the use of start/stop. -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] Grenada 1.0.0-rc.2
Hey Richard, Great work on the project! I'd love to see the final generated output if you have time to do so. Also, we at Helpshift are working on a similar project here - https://github.com/helpshift/hydrox. It'll be great to get your input to see how the two libraries compare, what each one potentially solves and whether there is synergy for solving the documentation problem. Chris. On Wednesday, August 19, 2015 at 1:37:56 PM UTC+5:30, Richard Möhn wrote: This project was announced three months ago as a ‘Common Clojure Source Metadata Model’. You might also have read about it http://us4.campaign-archive1.com/?u=a33b5228d1b5bf2e0c68a83f4id=52f3bba560 in the Clojure Gazette. It is now called Grenada https://github.com/clj-grenada/grenada-spec and can be described vaguely as a Clojure metadata build and distribution system. Features: - for library authors: assemble and publish (API) documentation packages similar to Javadoc JARs, but containing well-defined data instead of HTML. - for developers: provide structured information in addition to doc strings. Annotate Clojure objects that don't support doc strings with easily accessible documentation (to be implemented). - for documentation editors: jazz up the documentation of existing Clojure libraries; assemble documentation and examples from different sources. - for toolsmiths: build on a rigorously flexible model of metadata about things in the Clojure ecosystem (Taken from the project home page https://github.com/clj-grenada/grenada-spec.) Notable products of the project: - a data model https://github.com/clj-grenada/grenada-spec/blob/devel/SpecOverview.md (can be understood as a draft) - lib-grenada https://github.com/clj-grenada/lib-grenada, implementing the model and providing convenience - the concept of Datadoc JARs – like Javadoc JARs, but instead of HTML containing EDN files with documentation and arbitrary other data - a Leiningen plugin https://github.com/clj-grenada/lein-datadoc producing and deploying such JARs for your project Status: - Everything is usable, though not very convenient at times. If you've read the example of Dorothy the Documenter in the Clojure Gazette interview: what is described there works https://github.com/clj-grenada/lib-grenada/blob/devel/doc/tutorial.md . - The documentation is fairly extensive, though not well-organized. - The auxiliary library Jolly https://github.com/clj-grenada/jolly can be used to convert Grimoire http://conj.io data to Datadoc JARs https://clojars.org/org.clojars.rmoehn/clojure. - I would be happy if you use the Leiningen plugin to deploy Datadoc JARs for your libraries to Clojars. – Some day there might be an application which displays those data in a way similar to Autodoc or Codox. – The plugin has some issues, though, so don't get wound up. There's still plenty to do https://github.com/clj-grenada/grenada-spec/blob/devel/roadmap.md, but I'd be happy if you take a look. Code and history can be found under the Grenada organization https://github.com/clj-grenada on GitHub. Richard -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: a question about Chris Zheng's Abstract Container Pattern
James: For sure. To be honest, I haven’t really thought too much about best practices. The code just naturally evolved in this way. Let me have a think about this over the weekend and come up with something. Lawrence: I see what you are saying… and again, I need some time to think about the implications. It’s interesting for me to be able look at this in hindsight and really question the value of why I did this in a certain way.. As context, I didn’t start with the pattern and tried to fit things to it… I wrote a code bunch of code, refactored it a couple of times, and found commonalities in design that I was able to extract into what is now being discussed. So it’s really a case of tomaYtos, toMAAtos - a question of taste - and I think we are really lucky that clojure allows for all types =) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: a question about Chris Zheng's Abstract Container Pattern
Hey guys, Thanks for the feedback and your very insightful comments. Yep... this is OO alright =) I realised only after I wrote the article that I was implementing a Lifecycle clone with IRunnable example. However, the concept I am mentioning is much more general than components in terms of its scope: A similar `abstract class` for a reflective functional dispatch mechanism is defined here: https://github.com/zcaudate/iroh/blob/master/src/iroh/types/element.clj and extended by the `concrete classes' here: https://github.com/zcaudate/iroh/tree/master/src/iroh/element In the case of iroh... if I had used strictly multimethods, I would have been very confused. If I had used strictly protocols... well I couldn't for a number of reasons.. but if I did, I would have been even more confused because of the number of subconditions that I had to implement. iroh was the first library that I had built that used this pattern and it was so successful that I've been repeating the process over and over again since. What I wanted to achieve was to have the equivalent of an `abstract class` - the concept of code with abstract functionality that provides a framework for the heavy lifting to be done. `Concrete classes` can just extend aforementioned `abstract class` with minimal code and get all of the benefits. I've used this pattern with great success in many, many times and it provides a counter balance to the functional paradigm in terms of packaging up functionality. Clojure doesn't force us into one paradigm or the other and sometimes it is just more stylish to use the OO paradigm. The whole point of OO, multimethods and protocols is to do polymorphic dispatch, which is just a way to break a large cond statement into pieces that can then also be further extended. Please also note that not all OO frameworks are equal. Java uses a class inheritence approach whereas javascript uses a prototype model. The `abstract container` pattern that I was describing is probably closer to the JS model but to be honest, I don't really know what it is. Ultimately, it adds a middle tier of functionality in systems that have a plugin type mechanism. I'm sure there are equivalent functional contructs... but that was not the point of the pattern. This pattern has been very useful for me; clojure's protocols and multimethods were not enough to do what I needed to do - but combination of the two works wonders =) Since the article, the pattern has been codified here: https://github.com/zcaudate/hara/blob/master/src/hara/extend/abstract.clj#L196 Hope that helps in clarifying the motivation behind the article and the pattern Chris On Monday, July 27, 2015 at 11:42:21 PM UTC+5:30, Colin Yates wrote: I think his last sentence gives you the answer: A warm shoutout to Tushar, Lyndon, Dean, Alan, Hank, Derek, and all the guys at clj-melb that gave feedback and helped flesh out this rehash of *OO design*.” (my emphasis) He wanted an OO approach and has implemented one; specifically behaviour and state coupled together. I think neither Typed Clojure nor Contracts would have achieved this guy’s goal as they are about enforcing a contract (either the shape of data or effects of a fn) in the ‘functional’ paradigm; this guy clearly wanted something in the OO paradigm. Is there a ‘functional’ implementation which gives the same benefits; sure, but that isn’t what he wanted. Are there a bunch of ‘upgrades’ that I am sure we could all apply; sure, but again it seems like he was setting out with a very specific goal in mind and has achieved that. On 27 Jul 2015, at 18:37, Lawrence Krubner lawr...@rollioforce.com javascript: wrote: I have a question about this: Servers that are running on a particular port can be tracked and stopped. I have to say, this was the feature that I wanted the most, which motivated the framework's design. The annoying thing about development in emacs is that I have to be careful of not losing the reference to the server. Since there was no way of stopping it unless the repl is restarted. I wanted to implement a registery for references to running servers to be saved. http://z.caudate.me/the-abstract-container-pattern/ I have the impression that he's going over the same territory as that covered by Stuart Sierra, though Zheng doesn't mention Component nor Sierra. But he offers this as an example of what he's after: (defprotocol IRunnable (start! [system]) (stop! [system]) (restart! [system]) (started? [system]) (stopped? [system])) That much seems similar to Sierra's system. Zheng seems to add an additional layer by simulating an abstract class above his protocols. As he says: - A single deftype acts as the *abstract container*, extending one or more protocols - A set of methods defined through defmulti that is used within the deftype form act as *abstract methods* - The *abstract methods* all
Re: [ANN] Pink 0.2.0, Score 0.3.0
This is so cool =) Can you put up a video? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: a question about Chris Zheng's Abstract Container Pattern
The example in the article is probably the smallest example I can come up with. http://z.caudate.me/the-abstract-container-pattern The code for the concrete implementations speaks for itself I think, it is about 10 lines to hook in jetty and http-kit to the framework. if we think about how much code an interface/abstract/concrete design pattern can potentially reduce over a strict interface/concrete design pattern in the java, then it's exactly the same with clojure. One particular benefit of this particular pattern that I am exploiting is the fact that you can then specify exactly what you want in the config. I'm a big fan of making everything explicitly clear within the config itself so if we have a system with some a component-style dependency injection model (see http://docs.caudate.me/hara/hara-component.html), you can easily do something like this to get a jetty server up: {:server {:type :jetty :port 8080} and if you want a :http-kit server, you just change the config as such: {:server {:type :http-kit :port 8080} I've done this quite a bit with mocking... for example, here - https://github.com/MyPost/cassius/blob/master/src/cassius/component.clj changing {:db {:type :database}} to {:db {:type :mock}} will work exactly the same way, irrespective of dependency injection framework - in this case, I'm using the stuartsierra/component framework. On Tuesday, July 28, 2015 at 9:34:46 PM UTC+5:30, James Reeves wrote: What are the benefits of designing an abstract class in this way, compared to, say, using a protocol and normal functions? Could you provide a small example? - James On 28 July 2015 at 10:09, zcaudate z...@caudate.me javascript: wrote: Hey guys, Thanks for the feedback and your very insightful comments. Yep... this is OO alright =) I realised only after I wrote the article that I was implementing a Lifecycle clone with IRunnable example. However, the concept I am mentioning is much more general than components in terms of its scope: A similar `abstract class` for a reflective functional dispatch mechanism is defined here: https://github.com/zcaudate/iroh/blob/master/src/iroh/types/element.clj and extended by the `concrete classes' here: https://github.com/zcaudate/iroh/tree/master/src/iroh/element In the case of iroh... if I had used strictly multimethods, I would have been very confused. If I had used strictly protocols... well I couldn't for a number of reasons.. but if I did, I would have been even more confused because of the number of subconditions that I had to implement. iroh was the first library that I had built that used this pattern and it was so successful that I've been repeating the process over and over again since. What I wanted to achieve was to have the equivalent of an `abstract class` - the concept of code with abstract functionality that provides a framework for the heavy lifting to be done. `Concrete classes` can just extend aforementioned `abstract class` with minimal code and get all of the benefits. I've used this pattern with great success in many, many times and it provides a counter balance to the functional paradigm in terms of packaging up functionality. Clojure doesn't force us into one paradigm or the other and sometimes it is just more stylish to use the OO paradigm. The whole point of OO, multimethods and protocols is to do polymorphic dispatch, which is just a way to break a large cond statement into pieces that can then also be further extended. Please also note that not all OO frameworks are equal. Java uses a class inheritence approach whereas javascript uses a prototype model. The `abstract container` pattern that I was describing is probably closer to the JS model but to be honest, I don't really know what it is. Ultimately, it adds a middle tier of functionality in systems that have a plugin type mechanism. I'm sure there are equivalent functional contructs... but that was not the point of the pattern. This pattern has been very useful for me; clojure's protocols and multimethods were not enough to do what I needed to do - but combination of the two works wonders =) Since the article, the pattern has been codified here: https://github.com/zcaudate/hara/blob/master/src/hara/extend/abstract.clj#L196 Hope that helps in clarifying the motivation behind the article and the pattern Chris On Monday, July 27, 2015 at 11:42:21 PM UTC+5:30, Colin Yates wrote: I think his last sentence gives you the answer: A warm shoutout to Tushar, Lyndon, Dean, Alan, Hank, Derek, and all the guys at clj-melb that gave feedback and helped flesh out this rehash of *OO design*.” (my emphasis) He wanted an OO approach and has implemented one; specifically behaviour and state coupled together. I think neither Typed Clojure nor Contracts would have achieved this guy’s goal as they are about enforcing
Re: Howto Use isComponent with Adi
Hey Tim, adi's been neglected by me for a while now so it needs a bit of love... Though I'm surprised that it won't let you create a schema. Can you open an issue with an example of a failure and I'll see if I can fix that. On Monday, August 4, 2014 3:35:18 PM UTC+10, frye wrote: Hey, I'm playing around with adi, and it looks pretty cool. But I can't seem to get isComponent to work in my adi schema. It's failing when I try to use a boolean, which was my first guess as to it's usage (see wiki https://github.com/zcaudate/adi/blob/master/wiki/schema.md, source https://github.com/zcaudate/adi/blob/master/src/adi/schema.clj#L40). Are there any examples out there, of how to use this feature? Thanks Tim Washington Interruptsoftware.com http://interruptsoftware.com -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[ANN: cassius 0.1.14] - Cassandra as a Big Nested Map
I'm happy to announce that the team at MyPost (https://*digitalmailbox* .com.au/) has decided to release a library that we have been working on for the past couple of months. https://github.com/MyPost/cassius Apparently its `also only the second release of open source software by a public sector organisation in Australia` (http://www.andykelk.net/tech/open-sourcing-our-work-why-were-doing-it) Overview Cassius is a clojure wrapper around cassandra's thrift interface. It treats cassandra as a big mutable nested hashmap and provides the following abstractions: - cassandra data and schema can be represented as values and clojure maps. - keyspaces, column families, rows and columns can be abstracted as nested map layers - supercolumns are just one extra level of nesting The library has been used for both mocking and for higher level abstractions on top of cassandra. An ORM has been built and used internally at MyPost https://github.com/MyPost/cassius/blob/master/digitalmailbox.com.au to deal with legacy cassandra data. Motivation The library was motivated by an inability to reason about what changes the existing monolithic system was doing to the underlying database. In order to move away from the existing system into more agile architecture, the team had to be careful about reworking features without breaking functionality. The typical work of code migration would end up looking something like this: 1. Get the current state of the DB 2. Run some legacy code (java) 3. See what has changed in the DB 4. Rewrite that change in clojure cassius was designed as a tool for developers to reason about and test changes to cassandra. It also has the following features: - Written in thrift in order to support supercolumns in the legacy system. - Abstracts the database in such a way that tests are easy to write and easy to read. - Uses of conditional restarts for more control of error states. - Option to use the component/Lifecycle framework. Mock DB is included for testing purposes. - Uses the Hashmap as a protocol, defined in cassius.protocols/IMap. - Methods: put-in, peek-in, keys-in, drop-in, set-in, select-in and mutate-in https://github.com/MyPost/cassius#usage The repo is here: https://github.com/MyPost/cassius Please have a play! -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
ANN: korra 0.1.2 - jar and maven package introspection
Overview Korra is a library for introspection of maven packages. The library provides mappings between different representations of the same jvm concept. - maven coordinate and the jar file - a 'resource' and its related jar and jar entry under a given context - the resource can be: - a symbol representing a clojure namespace - a path to a resource - a java class - the context can be: - the jvm classloader classpath - a single jar - a list of jars - a maven coordinate - a list of maven coordinates - the entire maven local-repo Check out the repo and the blog: https://github.com/zcaudate/iroh http://z.caudate.me/representation-and-reflection/ -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[ANN] iroh 0.1.9 - class reflection and exploration
A library for hacking and exploring the jvm: Whats New https://github.com/zcaudate/iroh#0190.1.9 - . macro now supports both .accessors and :accessor calls - delegate added for better object support https://github.com/zcaudate/iroh#0160.1.6 Changed syntax: - .$ to . (threading macro) - . to .% (display class hierachy) - Added .% (display class info) - Now .?, .% and .% works both on classes and instances https://github.com/zcaudate/iroh#installationInstallation Add to project.clj dependencies: [im.chit/iroh 0.1.9] For working in the repl or emacs, inject the core functionality into your clojure.core namespace using vinyasa https://github.com/zcaudate/vinyasa by adding the following to your ~/.lein/profiles.clj file: {:user {:dependencies [[im.chit/iroh 0.1.8] [im.chit/vinyasa 0.2.0]] :injections [(require 'vinyasa.inject) (vinyasa.inject/inject 'clojure.core '[[iroh.core delegate ns var . .? .* .% .%]]) ]}} -- delegate - Transparent Bean Delegate does what bean does but it actually allows field access to the underlying object. This way, one can set and get values from the object : (def a hello)a ;;= hello (def a (delegate a))a ;;= java.lang.String@99162322 {:hash 99162322, :hash32 0, :value #char[] [C@202cf33f} @a ;;= {:hash 99162322, :hash32 0, :value #char[] [C@202cf33f}(keys a);;= (:value :hash :hash32)(a :hash) ;;= 99162322(:hash32 a) ;;= 0 (a :value (char-array world)) ;;= world a ;;= world (But I thought string where immutable!) . - Threading A shorthand way of accessing private field is done by using .: (def a hello)(. a :value) ;= #char[] [C@753f827a(. a (:value (char-array world)))a ;;= world More on the website - https://github.com/zcaudate/iroh -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] iroh 0.1.9 - class reflection and exploration
Please use 0.1.10 update. clojure 1.6 does not load clojure.walk and clojure.set automatically anymore. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[ANN] - vinyasa 0.2.0 - Give your clojure workflow more flow
Update to Vinyasa - https://github.com/zcaudate/vinyasa Whats New? https://github.com/zcaudate/vinyasa#0200.2.0 vinyasa has now been repackaged https://github.com/zcaudate/lein-repack. Functionality can now be accessed via seperate dependencies: [im.chit/vinyasa.inject 0.2.0][im.chit/vinyasa.pull 0.2.0][im.chit/vinyasa.lein 0.2.0][im.chit/vinyasa.reimport 0.2.0] Or all of them together: [im.chit/vinyasa 0.2.0] -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
[ANN] - lein-repack 0.1.0 - Repack your project for deployment and distribution
lein-repack Repack your project for deployment and distribution https://github.com/zcaudate/lein-repack#motivationMotivation lein-repack was written to solve a problem I had with utilities and general purpose libraries. In my experience, clojure libraries are much better when they are distributed in small packages. However, functionality is much easier to develop when the project is big: when we try to build our general purpose libaries in small packages, they become a nightmare to test and deploy. lein-repack redistributes your code base into managable, deployable chunks and analyses your source files to automatically resolve internal and external dependencies. It this way, a big clojure project can now be broken up into sub-packages for deployment and redistribution. The plugin will: - Create sub-projects for all sub-namespaces in a project - Will look through source files and figure out project dependencies - Will repackage a project into many smaller artifacts for easier deployment and distribution -- Walkthrough For example, if there were a project called lama at version 0.1.0 and the files were organised like this: - src - lama - weapons - gun.clj - food - prepare.clj - food.clj - core.clj Running lein repack install will split the project into four jars and install them in maven. lama-0.1.0.jar lama-core-0.1.0.jar lama-food-0.1.0.jar lama-weapons-0.1.0.jar Running lein repack deploy will deploy all four artifacts to clojars. Once the artifacts are installed/deployed, they are now ready to be used. For example, if only the functionality for lama.weapons were required for another project, it can be imported individually in the project by adding [lama.weapons 0.1.0] to project dependencies. The entire project can be imported my adding [lama 0.1.0] to project dependencies. - More on the github page - https://github.com/zcaudate/lein-repack -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Strange behaviour for proxy when two abstract classes are passed in
I know this is a silly example but I am curious to know what is happening with the proxy method. I have set up two calls to proxy: 1. (def cp (proxy [java.util.AbstractMap clojure.asm.ClassVisitor] [])) 2. (def cp (proxy [clojure.asm.ClassVisitor java.util.AbstractMap] [])) The first call is fine and it return cp. The second call gives me an exception. clojure.lang.Compiler$CompilerException: java.lang.IncompatibleClassChangeError: Implementing class, compiling:(/private/var/folders/dd/qfdy6sbn3mlgk20vcxc3j0ljnpxsqr/T/form-init4780219965491827451.clj:2:5) java.lang.IncompatibleClassChangeError: Implementing class java.lang.ClassLoader.defineClass1 ClassLoader.java java.lang.ClassLoader.defineClass ClassLoader.java: 800 java.lang.ClassLoader.defineClass ClassLoader.java: 643 clojure.lang.DynamicClassLoader.defineClass DynamicClassLoader.java: 46 clojure.core/get-proxy-class core_proxy.clj: 262 -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Request for Mentors for GSoC Projects
I'm happy to mentor the Typed Clojure Beginner Tutorial, Annotations Error Messages and/or the typed Clojurescript Annotations -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Request for Mentors for GSoC Projects
I'm happy to mentor the Typed Clojure Beginner Tutorial, Annotations Error Messages and/or the typed Clojurescript Annotations -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Re: [ANN] - purnam 0.4.3 released - Javascript Language Extensions for Clojurescript
I'm also looking for collaborators as it is getting to a stage where I'm having trouble managing it by myself. if anybody is interested. Please send me a message Chris -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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: How to invoke java method obtained using clojure.reflect
Try my new library. It makes reflection really easy to use http://github.com/zcaudate/iroh -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] iroh 0.1.5 - Simple Java Reflection (Still SNAPSHOT but comments would be welcome)
Okay, v0.1.5 is out: http://z.caudate.me/jvm-class-reflection-made-simple/ -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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: [vinyasa 0.1.5] - dynamic reloading of java code without repl restart
I've added a new functionality for vinyasa 0.1.5 - a much needed function for reloading java code the repo is here: https://github.com/zcaudate/vinyasa Enjoy! --- reimport Don't you wish that you could make some changes to your java files and have them instantly loaded into your repl without restarting? Well now you can! For example, in project.clj, you have specified your :java-source-paths (defproject . :source-paths [src/clojure] :java-source-paths [src/java] ) and you have a file src/java/testing/Dog.java package testing;public class Dog{ public int legs = 3; public Dog(){};} You can load it into your library dynamically using reimport (reimport '[testing.Dog]);;= 'testing.Dog' imported from project/target/reload/testing/Dog.class (.legs (Dog.));; = 3 You can then change legs in testing.Dog from 3 to 4, save and go back to your repl: (reimport '[[testing Dog]]) ;; supports multiple classes;;= 'testing.Dog' imported from project/target/reload/testing/Dog.class (.legs (Dog.));; = 4 If you have more files, ie. copy your Dog.java file to Cat.java and do a global replace: (reimport) ;; will load all classes into your namespace;;= 'testing.Dog' imported from project/target/reload/testing/Dog.class;; 'testing.Cat' imported from project/target/reload/testing/Cat.class (.legs (Cat.));; = 4 Now the pain associated with mixed clojure/java development is gone! --- installation inject allows easy customisation of your clojure.core namespace by allowing injecting of the functions that you have always wanted to have in your profiles.clj file. Here is an example taken from myprofiles.clj. {:user {:plugins [...] :dependencies [[spyscope 0.1.4] [org.clojure/tools.namespace 0.2.4] [io.aviso/pretty 0.1.8] [leiningen 2.3.4] [im.chit/vinyasa 0.1.5]] :injections [(require 'spyscope.core) (require 'vinyasa.inject) (vinyasa.inject/inject 'clojure.core '[[vinyasa.inject inject] [vinyasa.pull pull] [vinyasa.lein lein] [vinyasa.reimport reimport]]) (vinyasa.inject/inject 'clojure.core ' '[[cemerick.pomegranate add-classpath get-classpath resources] [clojure.tools.namespace.repl refresh] [clojure.repl apropos dir doc find-doc source pst [root-cause cause]] [clojure.pprint pprint] [clojure.java.shell sh]])]}} I have now imported the following vars into clojure.core and they will stay with me as I am coding in emacs: - from vinyasa: - inject as #'clojure.core/inject - pull as #'clojure.core/pull - lein as #'clojure.core/lein - reimport as #'clojure.core/reimport - from tools.namespace: - refresh as #'clojure.core/refresh - from clojure.repl: - apropos as #'clojure.core/apropos - dir as #'clojure.core/dir - doc as #'clojure.core/doc - find-doc as #'clojure.core/find-doc - root-cause as #'clojure.core/cause` - pst as #'clojure.core/pst - from clojure.pprint: - pprint as #'clojure.core/pprint - from clojure.java.shell: - sh as #'clojure.core/sh - from cemerick.pomegranate: - add-classpath as #'clojure.core/add-classpath - get-classpath as #'clojure.core/get-classpath - resources as #'clojure.core/resources https://github.com/zcaudate/vinyasa#license -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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 - [vinyasa 0.1.0] - Give your clojure workflow more flow
I've updated the lib to version 0.1.1 Also, for people having issues with the library. The minimum leiningen version required for vinyasa is 2.3.4. Please do an upgrade of leiningen before using 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.
ANN - [vinyasa 0.1.0] - Give your clojure workflow more flow
I've been rethinking my clojure workflow and came up with this little library, allowing sweet customisations of the clojure.core namespace for development purposes: https://github.com/zcaudate/vinyasa It has three functions - pull, lein, inject - and their uses are described below. Chris. - vinyasa Give your clojure workflow more flow. https://github.com/zcaudate/vinyasa#installationInstallation Add vinyasa to your profile.clj: {:user {:plugins [...] :dependencies [ [im.chit/vinyasa 0.1.0] ] } :injections [... (require '[vinyasa.inject :as inj]) (inj/inject 'clojure.core '[[vinyasa.inject inject] [vinyasa.pull pull] [vinyasa.lein lein]]) ...] } https://github.com/zcaudate/vinyasa#usageUsage: If you are in emacs and are in a clojure project, you can run nrepl-jack-in and use the added functionality straight away. If you are running lein repl and are in the user namespace, reload the user namespace before using: (ns user) (lein) (pull hiccup) https://github.com/zcaudate/vinyasa#pullpull How many times have you forgotten a library dependency for project.clj and then had to restart your nrepl?pull is a convienient wrapper around the pomegranate library: (require 'hiccup.core);; = java.io.FileNotFoundException: Could not locate hiccup/core__init.class or hiccup/core.clj on classpath: (require 'hiccup.core) (pull 'hiccup);; = {[org.clojure/clojure 1.2.1] nil, ;; [hiccup 1.0.4] #{[org.clojure/clojure 1.2.1]}} (use 'hiccup.core) (html [:p hello World]);; = phello World/p (pull 'hiccup 1.0.1);; = {[org.clojure/clojure 1.2.1] nil, ;; [hiccup 1.0.1] #{[org.clojure/clojure 1.2.1]}} https://github.com/zcaudate/vinyasa#leinlein Don't you wish that you had the power of leiningen within the repl itself? lein is that entry point. You don't have to open up another terminal window anymore, You can now run your commands in the repl! (lein);; Leiningen is a tool for working with Clojure projects. Several tasks are available:;; check Check syntax and warn on reflection.;; classpath Write the classpath of the current project to output-file.;; clean Remove all files from paths in project's clean-targets.;; cljsbuild Compile ClojureScript source into a JavaScript file. .;; . (lein javac) ;; Compile java classes (lein install) ;; Install to local maven repo (lein uberjar) ;; Create a jar-file (lein push);; Deploy on clojars I still use lein-clojars https://github.com/zcaudate/vinyasa#injectinject I find that when I am debugging, there are additional functionality that is needed which is not included in clojure.core. The most commonly used function is pprint and it is much better if the function came with me when I was debugging. The best place to put all of these functions in in the clojure.core namespace inject is used to add additional functionality to namespaces so that the functions are there right when I need them. Inject also works with macros and functions (unlike intern which only works with functions): (inject 'clojure.core '[[clojure.repl dir]]);; = will intern #'clojure.repl/dir to #'clojure.core/dir (clojure.core/dir clojure.core);; *;; *';; *1;; *2;; *3;; *agent*;; *allow-unresolved-vars*;; *assert* ...;; ... inject can also work with multiple entries: (inject 'clojure.core '[[clojure.repl doc source]]);; = will create the var #'clojure.core/doc and #'clojure.core/source inject can also take a prefix: (inject 'clojure.core ' '[[clojure.repl doc source]]);; = will create the var #'clojure.core/doc and #'clojure.core/source inject can use vector bindings to directly specify the name (inject 'clojure.core ' '[[clojure.repl doc [source source]]]);; = will create the var #'clojure.core/doc and #'clojure.core/source https://github.com/zcaudate/vinyasa#inject---installationinject - installation inject allows easy customisation of your clojure.core namespace by allowing injecting of the functions that you have always wanted to have in your profiles.clj file. Here is an example taken from myprofiles.clj. {:user {:plugins [...] :dependencies [[spyscope 0.1.4] [org.clojure/tools.namespace 0.2.4] [io.aviso/pretty 0.1.8] [im.chit/vinyasa 0.1.0]] :injections [(require 'spyscope.core) (require 'vinyasa.inject) (vinyasa.inject/inject 'clojure.core ' '[[vinyasa.inject [inject inject]] [vinyasa.pull [pull pull]] [vinyasa.lein [lein lein
Re: ANN - [vinyasa 0.1.0] - Give your clojure workflow more flow
I've done a write up of my workflow here: http://z.caudate.me/give-your-clojure-workflow-more-flow/ -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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: How to go about 'proving' why dynamically typed languages are better.
@philip lord. Where would mutant elephants and the elephant god Ganesha fit in that classification? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] purnam 0.1.8 - native javascript essentials for clojurescript (documentation out!!!)
I'm really happy that I have finish documenting my new-ish clojurescript library. You can find it here: http://docs.caudate.me/purnam/ - purnam is a *clojurescript* library designed to provide better clojurescript/javascript interop, testing and documentation tools to the programmer. It also has very comprehensive modules for angular.jshttp://angularjs.org/ applications. Current projects requiring interface with external javascript libraries will greatly benefit from this library. 'Pure' clojure/clojurescript libraries will also benefit with its unit-testing and documentation workflows. The library was written to solve a number of pain points that I have experienced in clojurescript development: Better JS Interop The first pain point was having to deal with the clojurish (.dot syntax) for javascript interop as well as a lack of functionality when working with native js objects. This made it especially hard for working with any external js library. Purnam offers: - purnam.cljs http://docs.caudate.me/purnam/#purnam-cljs - functions for native objects and arrays - purnam.js http://docs.caudate.me/purnam/#purnam-js - a set of macros allowing javascript-like syntax for better interop - purnam.types http://docs.caudate.me/purnam/#purnam-types - clojure protocols for native objects and arrays In-Browser Testing The second pain point was the lack of testing tools that worked within the browser. Even though testing withphantom.js http://phantomjs.com/ was fine for non-browser code, I wanted something with more debugging power and so unit testing is integrated with the karmahttp://karma-runner.github.io/ test runner using two different test styles: - purnam.test http://docs.caudate.me/purnam/#purnam-test - testing using jasmine http://pivotal.github.io/jasmine/ syntax - purnam.test.sweet http://docs.caudate.me/purnam/#purnam-test-sweet - testing using midje https://github.com/marick/Midje syntax (compatible with midje-doc https://www.github.com/zcaudate/lein-midje-doc) Angularjs on Clojurescript The third pain point was the code bloat I was experiencing when developing and testing *angular.js* code using javascript. It was very easy to complect modules within large *angular.js*applications and I wanted to use clojure syntax so that my code was smaller, more readable and easier to handle. Purnam offers: - purnam.angular http://docs.caudate.me/purnam/#purnam-angular - a simple dsl for eliminating boilerplate*angular.js* - purnam.test.angularhttp://docs.caudate.me/purnam/#purnam-test-angular - testing macros for eliminating more boilerplate test code for services, controllers, directives and filters Integrated Documentation The fourth pain point was the lack of documentation tools for clojurescript as well as clojure. purnam is compatible withmidje-dochttps://www.github.com/zcaudate/lein-midje-doc so that the integrated testing and documentationworkflowhttp://z.caudate.me/combining-tests-and-documentation/ can be also used in clojurescript. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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: Testing with Angular.js, Clojurescript and Purnam - Code and Part 1
I've since realised the other reason why I like posting on the clojure group - The clojurescript group for whatever reason does not take html format... it makes the post look super ugly. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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.
Testing with Angular.js, Clojurescript and Purnam - Code and Part 1
Code: https://github.com/zcaudate/purnam-angular-example Demo: http://docs.caudate.me/purnam-angular-example/ Article: http://z.caudate.me/purnam-angular-js-testing-part-1-services/ Even with the karma http://karma-runner.github.io/ test runner, testing in angularjs is painful. It's one thing to be able to write a *angular.js*controller, its another to be able to test them. Making it more difficult is the sheer complexity of the framework. There are different strategies of testing controllers, directives, filters and injectables (values, services, factories and providers) There are two excellent articles about testing in angular.js by Year of Moo. Herehttp://www.yearofmoo.com/2013/09/advanced-testing-and-debugging-in-angularjs.html and Herehttp://www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-karma.html. However, my eyes start hurting when I look at the test code. It is modular, it is brilliantly thought out, it is *very* complete... but it is seriously hard to get my head around. An example of controller testing can be found herehttps://github.com/yearofmoo-articles/AngularJS-Testing-Article/blob/master/test/unit/controllers/controllersSpec.js It took me about a couple of days to summon up the courage to even attempt to read the code. Then I realised that the tests weren't doing that much at all. Most of it was boilerplate and not that interesting. Out of about 5 lines of test code, something interesting only happened in one of them. I abstracted out all the angular.js testing code into macroshttps://github.com/zcaudate/purnam/wiki/Api---purnam-test-angular . The point I've been making on previous posthttp://z.caudate.me/if-you-cant-beat-them/ is that clojurescript rocks if we really embrace javascript libraries through macros. With macros for *angular.js*, working with angular.js is so much clearer than in javascript. I have put together an example projecthttps://github.com/zcaudate/purnam-angular-example that shows how one may go about doing a simple app with tests. I'm going to take a couple of posts to explain how purnam.angular, purnam.test and purnam.test.angular work together. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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.
Testing Clojurescript Code with the Karma Test Runner
I thought this may also be of interest to those that are not subscribed to planet clojure.. From http://z.caudate.me/testing-clojurescript-code-with-karma/ The karma http://karma-runner.github.io/0.10/index.html test runner is an amazingly fully featured testing platform. Its lead developer Vojta Jina, is an integral part of google's the angular.js http://www.angularjs.org/ team and it is the default test runner for*angular.js* projects. Karma also works without *angular.js* and can also be used as a standalone tool for testing code on multiple browsers. purnam https://github.com/zcaudate/purnam includes *clojurescript* testing using jasmine http://pivotal.github.io/jasmine/ and karmahttp://karma-runner.github.io/0.10/index.html. I updated the library to version 0.1.5 and a couple of examples from the wikihttps://github.com/zcaudate/purnam/wiki/Your-First-Project#a2-creating-a-karma-configuration-for-tdd has gone out of date. I thought that it'll be much easier for everyone if I provided a sample project https://github.com/zcaudate/puram-karma-testing and a quick videohttp://www.youtube.com/watch?v=mhBqjJUYY6wto get people started on cljs testing using this fantastic framework: [image: ScreenShot] http://www.youtube.com/watch?v=mhBqjJUYY6w -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] Jig
Would it be possible to put up a video of a typical workflow example with pedestal. It's quite difficult for me to piece everything together just by reading the documentation. Chris -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
okay... 0.0.15 is up On Wednesday, October 16, 2013 11:48:56 PM UTC+11, frye wrote: Oh nice one. I saw where Raynes respondedhttps://github.com/Raynes/conch/issues/7pretty quickly. That's awesome. Let me know when I can retry lein-midje-doc. It would very cool to have that functionality. Tim Washington Interruptsoftware.ca / Bkeeping.com On Tue, Oct 15, 2013 at 4:56 PM, zcaudate z...@caudate.me javascript:wrote: Hi Tim. I've lodged the issue with Raynes here: https://github.com/Raynes/conch/issues/7 Chris. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hi Tim. I've lodged the issue with Raynes here: https://github.com/Raynes/conch/issues/7 Chris. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hi Tim. I've lodged the issue with Raynes here: https://github.com/Raynes/conch/issues/7 Chris. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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.
Generating schema maps
I'm wondering if there are any good tools around for generating schema maps. I'm looking for a example that can generate the picture from codeq - https://github.com/downloads/Datomic/codeq/codeq.pdf -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Hi Tim. That is a strange message. I am using conch to shell out to pygments which does the syntax highlighting. I'm not sure why that library is not compiling. What operating system are you using? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Also.. What version of clojure are you using? I'll try with that and see if I can reproduce the error. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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: Teaching Clojure to students (how ?)
what about teaching them how to use the tools - like emacs and light table. i find it easier to demonstrate the value of something by just using it... And explaining the language constructs as you go along... Like writing a simple web app - say with the ring stack, or doing some animations with quil. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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 to go about 'proving' why dynamically typed languages are better.
I'm a little bit miffed over this current craze of `types` and `correctness` of programs. It smells to me of the whole `object` craze of the last two decades. I agree that types (like objects) have their uses, especially in very well defined problems, but they have got me in trouble over and over again when I am working in an area where the goal is unclear and requirements are constantly changing. BTW... This is no means a criticism of all the type system work that is going on in the clojure community. I am a huge fan of Ambrose's Typed Clojure project because it gives me the *option *of using types... not shoving it down my throat. I like the freedom to choose. My experience of programming in clojure has freed me from thinking about types and hierarchies and this article rings so true: http://steve.yegge.googlepages.com/is-weak-typing-strong-enough. However, everywhere I look, there are smug type-weenies telling me that my dynamically typed program is bad because it cannot be `proven correct` and not `checked by the compiler`. This question on SO really makes me angry http://stackoverflow.com/questions/42934/what-do-people-find-so-appealing-about-dynamic-languages because no one is defending dynamic languages on there. The reason is very simple. because we don`t have a theory to back us up! I do want to put up an counter argument against this barrage of abuse against dynamic languages. And I want to put some academic weight behind this. The only counter I could come up with was to use Godel's incompleteness theorem. For those that don't know... here is an introduction to the man and his theory. http://www.youtube.com/watch?v=i2KP1vWkQ6Y. Godel's theorem, invalidated Principia Mathematica as a complete system of description. Principia Mathematica btw effectively led to Type Theory. According to http://en.wikipedia.org/wiki/Type_theory. The types of type theory were invented by Bertrand Russell in response to his discovery that Gottlob Frege's version of naive set theory was afflicted with Russell's paradox. This theory of types features prominently in Whitehead and Russell's Principia Mathematica. It avoids Russell's paradox by first creating a hierarchy of types, then assigning each mathematical (and possibly other) entity to a type. Objects of a given type are built exclusively from objects of preceding types (those lower in the hierarchy), thus preventing loops. I'm hoping to collect a few more `proofs` from the clojure community... for example... if there is a paper on why are type systems so bad at classifying animals... then please forward it 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: [ANN] 美味しいClojure
Fantastic! Congratulations on the great work. On Monday, September 30, 2013 4:43:59 PM UTC+10, Nicolas Modrzyk wrote: Hi Everyone, Myself and a friend have just finished a book related to the Clojure ecosystem: http://www.amazon.co.jp/dp/4774159913 We are focusing not on the core language itself, although we do at times, but we focus on all the tools and the different frameworks that can help make a project being effective and fun at the same time. The book is in Japanese, but we have been helped by dozens of people from the global Clojure community to be able to complete it, so we thought it was a small way to contribute back. Kind Regards, Arigatou- Nicolas, -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] ribol 0.3.1 - conditional restarts - api stablized, docs updated.
Thanks everybody for your feedback and suggestions on the last post. Version 0.3.1 has the following updates: The `finally` clause is supported on `manage` - http://z.caudate.me/ribol/#finally as well as all the hook forms - http://z.caudate.me/ribol/#hooks `raise-on` and `raise-on-all` have been updated to work better with thrown clojure.lang.ExceptionInfo objects I've also put in a section on how code can be reused using restarts - http://z.caudate.me/ribol/#unlucky-numbers -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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]: ova 0.9.6 - the bestest mutable array ever! (with lots of documentation)
http://z.caudate.me/ova/ ova has been designed especially for dealing with shared mutable state in multi-threaded applications. Clojure uses refs and atoms off the shelf to resolve this issue but left out methods to deal with arrays of shared elements. ova has been specifically designed for the following use case: - Elements (usually clojure maps) can be added or removed from an array - Element data are accessible and mutated from several threads. - Array itself can also be mutated from several threads. Github: https://github.com/zcaudate/ova -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] cronj 0.9.6 - task scheduling with simulations - comprehensive documentation
I've re-visited an old library of mine, upgrading the code as well as documenting its features and usage: http://z.caudate.me/cronj/ This library was built to support testing and repl development of scheduled tasks (which is quite difficult to test in general). In addition to being able to schedule tasks, the novel features are: - task management (http://z.caudate.me/cronj/#task-management) - simulating running tasks (http://z.caudate.me/cronj/#running-simulations) Github page is: https://github.com/zcaudate/cronj -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] ribol v0.2.1 - comprehensive document on conditional restart systems
Hi Dima, I've push v0.2.3 to clojars... an example can be seen here: http://z.caudate.me/ribol/#raise-on (raise-on [[NumberFormatException ArithmeticException] :divide-by-zero Throwable :throwing] (throw (Throwable. oeuoeu)) (finally (println 1))) = (raises-issue {:throwing true}) ;; prints 1 -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- 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] clara-rules 0.1.0 released -- rules as a control structure
I just thought of another feature that I want - persistence... Like saving the rules into some file and loading them back again. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] ribol v0.2.1 - comprehensive document on conditional restart systems
I've done a pretty comprehensive guide on conditional restart systems in clojure with diagrams to show why it is much more flexible over try/catch mechanism Project: https://github.com/zcaudate/ribol Generated Documentation: http://z.caudate.me/ribol/ -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] ribol v0.2.1 - comprehensive document on conditional restart systems
Hi Dima, That's actually a really good question. I don't think it possible currently :) I think I do need to support a finally clause But can you give a code example of how you might want to write such a thing? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] ribol v0.2.1 - comprehensive document on conditional restart systems
Hi Dima, You can now put 'finally' clause in v0.2.2, just loaded onto clojars. I haven't done an example on the readme yet but the following should print a hello and return [1 2 :A]: (manage ;; L2 [1 2 (manage;; L1 (raise :A);; L0 (on :A [] :A))] ;; H1A (on :B [] :B) (finally (print hello))) Chris. On Thursday, September 26, 2013 1:26:37 AM UTC+10, Dima Sabanin wrote: Hi Chris! Great library! I'm trying to apply this to a project I'm working on, but I'm somewhat new to the conditional restarts theory. What would I use instead of Clojure's finally block to properly free up the resources on error escalation? -- Thanks, Dima Sabanin http://twitter.com/dimasabanin On Wed, Sep 25, 2013 at 3:14 AM, zcaudate z...@caudate.me javascript:wrote: I've done a pretty comprehensive guide on conditional restart systems in clojure with diagrams to show why it is much more flexible over try/catch mechanism Project: https://github.com/zcaudate/ribol Generated Documentation: http://z.caudate.me/ribol/ -- -- 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. -- Best regards, Dima Sabanin http://twitter.com/dimasabanin -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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.
Video: Generating Beautiful (and Correct) Documentation from Unit Tests Files
I've put up a video of a new documentation plugin for leiningen Project Page: https://github.com/zcaudate/lein-midje-doc Youtube Video: http://www.youtube.com/watch?v=8FjvhDPIUWEfeature=youtu.be Sample Generated Documentation: http://z.caudate.me/lein-midje-doc/ http://z.caudate.me/ribol/ http://z.caudate.me/ova/ Any Comments or Feedback would be appreciated -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] clara-rules 0.1.0 released -- rules as a control structure
Hi Ryan! Great work. Can normal clojure maps can be used instead of records? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
Re: ANN: lein-midje-doc 0.0.9 released
Ooops! Really sorry guys. the resource directory was not included in the v0.0.9 jar file... it is now fixed in v0.0.10. lein-midje-doc lein-midje-doc fixes the problem of incorrectly documented examples by bridging the gap between writing tests and writing documentation. https://github.com/zcaudate/lein-midje-doc#featuresFeatures: 1. To generate .html documentation from a .clj test file. 2. To express documentation elements as clojure datastructures. 3. To render clojure code and midje facts as code examples. 4. To allow tagging of elements for numbering and linking. https://github.com/zcaudate/lein-midje-doc#benefitsBenefits: 1. All documentation errors can be eliminated. 2. Removes the need to cut and copy test examples into a readme file. 3. Entire test suites can potentially be turned into nice looking documentation with relatively little work. On Monday, September 23, 2013 2:22:08 PM UTC+10, zcaudate wrote: Hi Everyone. I've just pushed a new documentation library for midje tests to clojars. Its very experimental and a bit of a hack but I'm finding it super useful. Hope to get some feedback on this library. Github Page - https://github.com/zcaudate/lein-midje-doc Generated Documentation - http://z.caudate.me/lein-midje-doc/ Chris -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups Clojure group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.
ANN: lein-midje-doc 0.0.9 released
Hi Everyone. I've just pushed a new documentation library for midje tests to clojars. Its very experimental and a bit of a hack but I'm finding it super useful. Hope to get some feedback on this library. Github Page - https://github.com/zcaudate/lein-midje-doc Generated Documentation - http://z.caudate.me/lein-midje-doc/ Chris -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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 - ribol 0.2.1 - conditional restart library for clojure
Hi All, I've updated the library from 0.1.5 version with new features: - handlers now can branch depending on exception data (on :error [data] (if ( data 5) (escalate :too-big) (continue data))) - a additional `fail` handler for short-circuiting default behaviour - a strategieshttps://github.com/zcaudate/ribol/blob/master/test/ribol/test_ribol_strategies.clj document that show different ways of controlling program flow beyond try/catch -- I'd love for some feedback. Chris _ ribol ribol is a conditional restart library for clojure inspired by errorkit, having a more readable syntax, and designed with the base clojure.lang.ExceptionInfo type in mind. https://github.com/zcaudate/ribol#installationInstallation: In project.clj, add to dependencies: [im.chit/ribol 0.2.1] https://github.com/zcaudate/ribol#introductionIntroduction ribol provides a conditional restart system. It can also be thought of as an issue resolution system ortry++/catch++. The library provides an alternative channel for resolving 'issues' (we use 'issues' here to differentiate from 'exceptions', although they are pretty much the same thing). It models a management structure, in which issues are reported to management, who then what course of action to take depending upon the issue and their own level of expertise: - When circumstances arise that need the attention of higher level processes, an 'issue' would be raised that can be managed by any higher level process. - An issue must have data as well as additional information attached: - options that can be taken to resolve the issue - a default option if there is no management intervention. - Issues are managed through handlers that check for the nature of the issue and come up with the proper resolution process. There are six ways that a manager can deal with a raised issue: - directly (same as try/catch) - using continue to keep going with a specified value - using choose to specify an option - using escalate to notify higher level managers - using default to allow the issue to resolve itself - using fail to throw an exception Using these six different different issue resolution commands, a programmer has the richness of language beyond the simple 'try/catch' statement at his/her command to be able to craft very complex process control flow strategies without mixing logic handling code in the middle tier. It can also create new ways of thinking about the problem beyond the standard throw/catch mechanism and offer more elegant ways to build programs. Apart from the tutorial, interested users can peruse the strategieshttps://github.com/zcaudate/ribol/blob/master/test/ribol/test_ribol_strategies.clj document (still a work in progress) to go through common restart strategies. https://github.com/zcaudate/ribol#other-librariesOther Libraries There are three other conditional restart libraries for clojure - errorkithttps://github.com/richhickey/clojure-contrib/blob/master/src/main/clojure/clojure/contrib/error_kit.clj , swell https://github.com/hugoduncan/swell and conditionshttps://github.com/bwo/conditions - errorkit provided the guiding architecture for ribol. However, ribol updates errorkit with more options for controlling exceptions, uses ex-info which is part of core and has an updated and more understandable syntax. - swell and conditions are written to work with slingshothttps://github.com/scgilardi/slingshot and try+/catch+. https://github.com/zcaudate/ribol#novel-featuresNovel Features - In addition to the other conditional restart Libraries, ribol offers three more ways of handling error:escalate, fail and default. As of version 0.2 of ribol, handlers are now much more flexible. As far as I can tell, it is the only library that allows this type of resolution switching (having an 'if' form in the 'on' handler to switch between escalate and continue depending on the value of data: (manage (manage (mapv (fn [n] (raise [:error {:data n}])) [1 2 3 4 5 6 7 8]) (on :error [data] (if ( data 5) (escalate :too-big) (continue data (on :too-big [data] (continue (- data [1 2 3 4 5 -6 -7 -8]) - Additionally, the follow macros raise-on, raise-on-all and anticipate offer ways to hook into the java exceptions. Its use can be seen here: integer division https://github.com/zcaudate/ribol/wiki/Robust-Integer-Divide -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from
ANN: Ribol 0.1.5 - Conditional Restart Library for Clojure
Check out the Tutorial and Examples here: https://github.com/zcaudate/ribol ribol ribol is a conditional restart library for clojure inspired by errorkit, having a more readable syntax, and designed with the base clojure.lang.ExceptionInfo type in mind. https://github.com/zcaudate/ribol#installationInstallation: In project.clj, add to dependencies: [im.chit/ribol 0.1.5] https://github.com/zcaudate/ribol#providesProvides - Issue (exception) handling using maps for data as opposed to typed classes - Passing data along with exceptions - Tight integration with ex-info and ex-data - Five different issue handlers - catch, continue, choose, escalate and default Comparison with other Libraries There are two other conditional restart libraries for clojure - errorkit and swell - errorkit provided the guiding architecture for ribol. However, ribol updates errorkit with more options for controlling exceptions, uses ex-info which is part of core and has an updated and more understandable syntax. - swell was written specifically to work with the slingshot try+/catch+ packages and I thought that the two together carried too much baggage. ribol has no such 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.
ANN - adi 0.1.5 (user friendly syntax for datomic)
I've pushed out a significant update for adi, along with quite a long readme @ https://github.com/zcaudate/adi Some highlights: 1. Required keys (adi/insert! ds {:account {:credits 10}});; = (throws Exception The following keys are required: #{:account/user :account/password}) 2. Schema checking (adi/insert! ds {:account {:user adi :password hello1 :type :vip}});;= (throws Exception (:type :vip) not in schema definition) 3. Restrictions (adi/insert! ds {:account {:user adi :password hello}});;= (throws Exception The value hello does not meet the restriction: password needs an integer to be in the string) 4. Search constraints (adi/select ds {:account/credits '( 10)} :first :hide-ids);;= {:account {:user adi3, :password hello3, :credits 1000, :type :account.type/free}} 5. Data views (adi/select ds {:account/user adi1} :first :hide-ids :view {:account/books :follow});;= {:account {:user adi1, :password hello1, :credits 0,;; :books #{{:author Louis Cha, :name The Book and the Sword}}, :type :account.type/free}} (adi/select ds {:account/user adi1} :first :hide-ids :view {:account/books :follow :account/user :hide :account/password :hide :account/credits :hide :account/type :hide});;= {:account {:books #{{:author Louis Cha, :name The Book and the Sword -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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 - adi 0.1.5 (user friendly syntax for datomic)
6. Insertion of `arbitrarily` formatted data: a - books containing users: (adi/insert! ds [{:book {:name Charlie and the Chocolate Factory :author Roald Dahl :accounts #{{:user adi3 :password hello3 :credits 100} {:user adi4 :password hello4 :credits 500} {:user adi5 :password hello5 :credits 500 {:book {:name The Book and the Sword :author Louis Cha :accounts users}}]) b. users containing books (adi/insert! ds [{:account {:user adi1 :password hello1}} {:account {:user adi2 :password hello2 :books #{{:name The Count of Monte Cristo :author Alexander Dumas} {:name Tom Sawyer :author Mark Twain} {:name Les Misérables :author Victor Hugo]) 7. Expressive Search ;; Full expressiveness on searches:;;(- ;; Find the teacher that teaches a student called Harry (adi/select class-datastore {:teacher/teaches/students/name Harry}) (map #(- % :teacher :name))) ;= (Mr. Anderson Mr. Carpenter Mr. Blair) (- ;; Find all students taught by Mr Anderson (adi/select class-datastore {:student/classes/teacher/name Mr. Anderson }) (map #(- % :student :name))) ;= (Ivan Bobby Erin Kelly ;; David Harry Francis Jack) (- ;; Find all the students that have class with teachers with fish (adi/select class-datastore {:student/classes/teacher/pets :fish }) (map #(- % :student :name)) sort);= (Anna Charlie David Francis Harry Ivan Jack Kelly) -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.10 - angular.js language extensions
oh cool! did you write your own compiler? On Wednesday, May 29, 2013 3:51:51 PM UTC+10, Hoàng Minh Thắng wrote: You can give ChlorineJS a try: http://plnkr.co/edit/gist:5469561?p=preview Please note there's currently a bug with Plunker and some versions of Firefox so in the mean time you should check it with other browsers. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - adi 0.1.1 - a `document` database grafted onto Datomic
I'm extremely happy to announce to the clojure community what I have been working on for the past couple of months. I'm calling it `adi`, sanskrit for `beginning`, acronym - (A) (D)atomic (I)nterface. Get it here: https://github.com/zcaudate/adi For the more technical minded, these are features of adi: - The Scheme Map and Datomic Schema Emission - Key Directory Paths as Map Accessors - The Datastore - Data Representation and Datomic Data Emission - Query Representation and Datomic Query Emission - Data Views as Faux `Documents` For the more airy-fairy, here is the heart-warming version: adi adi, rhyming with 'hardy' stands for the acronym (a) (d)atomic (i)nterface. The concept is simple. adi is a Document Database onto grafted on Datomic. It makes use of a map/object notation to interface with a Logical Query Engine. Datomic began something brand new for data, and adi leverages that incredible flexiblility with a syntax that is simple to understand. It converts flat, record-like arrays to tree-like objects and back again so that the user can interface with datomic the way datomic was designed to do. The key to understanding adi lies in understanding the power of a schema. The schema dictates what you can do with the data. Instead of limiting the programmer, the schema should exhance him/her. Using adi once a schema for an application has been defined, the data can be inserted in any shape, as long as it follows the coventions specified within that schema. Fundamentally, there should be no difference in the data-structure between what the programmer asks for and what the programmer is getting. We shouldn't have to play around turning objects into records, objects into logic queries... etc... Well... Not anymore... -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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: Utility libraries and dependency hygiene
I'm guilty of this... But I really don't know what to do I still find myself thinking... Hmmm this library provides about 50% of what I want... This library has 2 functions that I like And I don't like the way something is implemented here... If only i can combine this, this, and this... Oh screw it! I'm going to write my own ;) Any suggestions? -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
This is a quick and dirty release for interested parties. I found it very useful when working with angularjs. The syntax should not change that much but there will be more documentation in the future. I would love to have some input into additional features that could be added. Excerpt from Github: https://github.com/zcaudate/purnam Installation In your project file, add [purnam 0.0.9] Why? Because the javascript dot-notation is awesome and the javascript/clojurescript interop (aget aset, .fn and .-propaccessors) make for really ugly code. Using the language-extension macros, clojurescript becomes more than twice as concise when working with existing javascript libraries (I'm mainly working with angularjs). So the use case can be seen below: https://github.com/zcaudate/purnam#gettersGetters: ## javascript (12 keystrokes): object.a.b.c ## clojurescript (45 keystrokes): (- object (aget a) (aget b) (aget c)) ## clojurescript + purnam (16 keystrokes): (? object.a.b.c) https://github.com/zcaudate/purnam#settersSetters: ## javascript (17 keystrokes): object.a.b.c = 10 ## clojurescript (48 keystrokes): (- object (aget a) (aget b) (aset c 10)) ## clojurescript + purnam (19 keystrokes): (! object.a.b.c 10) https://github.com/zcaudate/purnam#functionsFunctions: These are really bad examples of code but its what usually happens when working with existing javascript libraries. Using the dot-notation can save alot of screen and head space: ## javascript (~100 chars): var bad_code = function(obj, val){ obj.inner.number = 10; val.inner.count = obj.inner.count + 10;} ## clojurescript (~180 chars): (defn bad-code [obj val] (- obj (aget inner) (aset number 10)) (- val (aget inner) (aset count (+ 10 (- obj (aget inner) (aget count) nil) ## clojurescript + purnam (~110 chars): (def.n bad-code [obj val] (! obj.inner.number 10) (! val.inner.count (+ 10 obj.inner.count)) nil) https://github.com/zcaudate/purnam#installation -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
Well... This is strictly for working with js objects. The syntax is a wrapper around the functions 'aget-in' and 'aset-in' which I wrote. I just assumed that get-in doesn't work because you have to use aget for js objects... so they were an attempt to mimic that with js-objects. The .. Operator does make it much more concise but it's still ugly :) The purnam.js syntax also supports dot notation function calls... which is more than what getters and setters do. You can see examples of this on my GitHub: Eg def.n set-static-breadcrumbs [app v] (js/console.log Setting breadcrumbs) (! app.layout.breadcrumbs (let [arr (array)] (doseq [i v.trail] (arr.push app.static.|i|)) (arr.push v) arr))) -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
Thanks Michael. I really didn't know how to 'sell' it because there's quite a bit of thought in there about how to make it work with existing javascript libraries so that the clojure syntax does not get in the way and it's difficult Maybe I have started talking def.n or about TDD first. I posted on the clojurescript group about that but the post it hasn't been moderated yet. @David: i never knew that you can add more parameters to aget. However, the only problem i found with using aget was that if I have a nested object and one of the keys are missing, then I get an undefined error. Where as I want it to fail with a nil. I'm not really that interested in promoting my ! and ? operators and comparing forms, but how entire libraries of code can be written. There's a code transformer macro that take an entire form and rewrites all of the dotted symbols. So that could be changed to take advantage of the efficient inlining. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
Additional features are listed. Also, I`ve discovered a really easy way of automating TDD using karma, which quickens the compilation/testing dramatically and the jasmin macros where built for that: functions When f.n and def.n are used for function definitions, there is no need to write ?, ? and ! within the form as it is handled automatically. Actually, the short hand is avaliable Within any of the macro forms. Typing: - a.b.c is the same as typing (? a.b.c): - (inc a.b.c 1) is the same as typing (? inc a.b.c 1): - (a.call arg1 arg2) is the same as typing (! a.call arg1 arg2): - Only the setter function (! a.b.c (new value)) remains the same. Example: (def.n set-static-breadcrumbs [app v] (js/console.log Setting breadcrumbs) (! app.layout.breadcrumbs (let [arr (array)] (doseq [i v.trail] ;; Dot notation (arr.push app.static.|i|)) ;; Note the javascript-ish accessor (arr.push v) ;; Dot function call arr))) https://github.com/zcaudate/purnam#other-librariesOther Librarieshttps://github.com/zcaudate/purnam#angularjs angularjs Angularjs macros help alleviate the amount of callback functions that one has to write (def.module app [ui ui.bootstrap ui.compat]) (def.config app [$locationProvider] (doto $locationProvider (.hashPrefix !))) (def.config app [$routeProvider] (doto $routeProvider (.when (obj :redirectTo /home (def.controller app.MainCtrl [$scope $state App AppFn] (! $scope.app App) (! $scope.fn AppFn) (! $scope.state $state) ($state.transitionTo home)) jasmin Jasmin macros for clearer tests. The .cljs tests are defined using jasmin macros (which are really kinda cool) (describe objs contain js arrays [o1 (obj :array [1 2 3 4])] (*do.n* (it describes something (is o1.array.0 1) (is o1.array.1 2) (is o1.array.2 3) (is o1.array.3 4) (is o1.array.4 js/undefined https://github.com/zcaudate/purnam#jasmin -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
Thanks Michael and everyone for their feedback Let me have a think about it and `rebrand`. On Monday, May 13, 2013 5:42:59 AM UTC+10, Michael Klishin wrote: 2013/5/12 zcaudate z...@caudate.me javascript: Additional features are listed If you had to describe your library in one sentence, what would it be? I'd be happy to tweet about it but currently can't really understand what it is, seems to be like 3 things mashed together. Thanks! -- 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.
[ANN] - purnam 0.0.10 - angular.js language extensions
I had a vague description for purnam 0.0.9: https://groups.google.com/forum/?fromgroups=#!topic/clojure/AgZ_wVtdUFI Its the same code with a different read me... Get it here: https://github.com/zcaudate/purnam Excerpt: Features Purnam has three main components: 1. Angular Language Extensions 2. Jasmin Language Extensions for TDD with Karma 3. Clojurescript Language Extensions (which the previous two are built upon) Why not use lispyscript/coffeescript/clang? I like each of the languages for their own features: - coffeescript for its succinctness - lispyscript for its syntax and macros - clang for its sheer brilliance and audacity However, in using each language I did find some weaknesses - coffeescript and its ambiguous syntax that changes meaning with whitespace - lispyscript is too new for me and not widely adopted - clang is to ambitious in what it is trying to do (make angular work with clojure) and I think there are definite performance implications in doing so. The goal of this project is to provide opt-in language extensions for clojurescript to have the same sort of succintness when working with angular and all other javascript libraries. -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
I've updated the read me with more `practical` examples at the top and made another announcement =) But regarding the language extensions: @David. These are a set of optional extensions. But having said that, I really do hope that that you put `def.n` macro and `obj` into the main clojurescript library itself (and maybe somehow merge `!` with `set!`). It does compliment the existing cljs functions, work will with namespaces, and will be great for getting javascript/clojurescript guys onboard! -- -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from 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] - purnam 0.0.9 (javascript.dot.notation language extensions for cljs)
Thanks Rich, I couldn`t have said it any better =) Do you have the link for the proposal? On Monday, May 13, 2013 8:42:41 AM UTC+10, Rich Morin wrote: On May 12, 2013, at 12:42, Michael Klishin wrote: If you had to describe your library in one sentence, what would it be? I'd be happy to tweet about it but currently can't really understand what it is, seems to be like 3 things mashed together. It seems a bit like ClojureScript and HotCocoa (for MacRuby), in that: It provides a streamlined way to deal with the underlying language. The syntax is concise, but not necessarily idiomatic Clojure/Ruby. I like ClojureScript's capabilities, but don't love the syntax. This is a useful experiment (at least!) in making ClojureScript prettier. It has already prompted an enhancement by David Nolen and may promote some interesting discussions about idiomatic use and language design. -r -- http://www.cfcl.com/rdmRich Morin http://www.cfcl.com/rdm/resume r...@cfcl.com javascript: 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: math
The apache commons library - http://commons.apache.org/math/ is really rock solid. all the utilities can be found in: http://commons.apache.org/math/apidocs/org/apache/commons/math3/util/FastMath.html see http://stackoverflow.com/questions/12327120/finding-all-the-power-roots-in-clojure for a complex example On Wednesday, October 10, 2012 1:38:20 PM UTC+11, Brian Craft wrote: I need some basic math functions, e.g. floor. I see there are some in contrib, but I'm unable to figure out the status of contrib. Seems like it's deprecated, or in transition, or something? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: ANN: cronj - task scheduling
okay... the readme is now updated =) -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
ANN: sigmund - systems analytics for clojure
Sigmund is friendly clojure wrapper around the Hyperic SIGAR API http://www.hyperic.com/products/sigar. It can tell you all sorts of information about your currently executing process as well as the system that you are working on. It provides quite a bit more information than JMX: os: information, processes, memory, swap, resource limits, uptime and logins. cpu: information, per cpu and average usage. jvm: runtime information for jvm. filesystem: mounted devices, disk usage, filesystem properties and usage. network: usage, bandwidth, gateways, interface, routes and connection status. process: per process information for cpu, memory, environment, credentials, arguments and other information. -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
ANN: sigmund - systems analytics for clojure
Sigmund is friendly clojure wrapper around the Hyperic SIGAR API http://www.hyperic.com/products/sigar. It can tell you all sorts of information about your currently executing process as well as the system that you are working on. It provides quite a bit more information than JMX: os: information, processes, memory, swap, resource limits, uptime and logins. cpu: information, per cpu and average usage. jvm: runtime information for jvm. filesystem: mounted devices, disk usage, filesystem properties and usage. network: usage, bandwidth, gateways, interface, routes and connection status. process: per process information for cpu, memory, environment, credentials, arguments and other information. It can be found at: https://github.com/zcaudate/sigmund -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
ANN: cronj - task scheduling
cronj This is another cron-inspired task-scheduling library. I have found many scheduling libraries for clojure: - quartzite - cron4j - clj-cronlike - at-at - monotony The first three all follow the cron convention. The task (also called a job) can only be scheduled at whole minute intervals. at-at has milli-second resolution, but was limited in the number of threads that have to be predetermined. It was good for looking after tasks that did not overlap between calls but not for tasks that may take an arbitarily long time. monotony uses core.logic, which is something that I am yet to understand. cronj is little different due to design requirements in the project that I am working on: - starts scheduled tasks at a per-second interval having high system- time accuracy without wasting system resourcs. - would spawn as many threads as needed, so that tasks started at earlier intervals could exist along side tasks started at later intervals. - an additional design requirement required that task handlers are passed a date-time object, so that the handler itself is aware of the time when it was initiated. it can be found at: https://github.com/zcaudate/cronj -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
Re: ANN: cronj - task scheduling
thanks! I'll make the change -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en
how do we go about promoting new clojure libraries?
is there some sort of categorised list/wiki that we can add to for new libraries? -- You received this message because you are subscribed to the Google Groups Clojure group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en