Re: [ANN] Munich Lambda Meetups

2013-12-15 Thread Oleksandr Petrov
Thanks! Great idea, posted!


On Fri, Dec 13, 2013 at 11:08 AM, Philipp Meier phme...@gmail.com wrote:

 Hi,

 Am Donnerstag, 12. Dezember 2013 18:54:03 UTC+1 schrieb Alex P:

 We (Munich Lambda[1]) are organising Meetups, dedicated to Functional
 Programming, and Clojure specifically.


 I suggest to post this also to the (very silent) google group clojure-de.

 -billy.

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




-- 
alex p

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from 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] Buffy The ByteBuffer Slayer, Clojure library to working with binary data

2013-12-10 Thread Oleksandr Petrov
@Cesar

I've made a little advancement on dynamic encoding/decoding, here's a gist
with a proof of concept: https://gist.github.com/ifesdjeen/7902409


On Wed, Dec 4, 2013 at 8:28 AM, Cesar Canassa cesar.cana...@gmail.comwrote:

 Hi,

 I see that the repeated-type requires a constant repeat count. Are you
 planning to include a more dynamic version à la Gloss prefixes/headers?

 The lib looks really nice. Binary handling libraries are really helpful.

 Thanks,
 Cesar Canassa



 On Mon, Dec 2, 2013 at 7:09 PM, Alex P oleksandr.pet...@gmail.com wrote:

 It's different in a way we manipulate the data:

 We've opted out for default-lazy way (you're getting and setting separate
 values instead of serialising/deserialising an entire payload).

 Another difference is that we don't have Lamina as a loaded artifact
 (which may not be an issue for majority of people, but was for us
 because of an internal version conflict with some other library).
 Obviously, there are ways around it, but we tried to bring in minimum
 possible amount of dependencies, and be able to use it with Netty4 (which
 is currently underrepresented in Clojure world).

 There are other subtle difference, but I don't think they're worth
 mentioning, Gloss is a great library, but Buffy is doing things in a subtly
 different way. Main purpose (as we're using it) - for off-heap storage /
 data structures, and for binary protocol implementations in Clojure
 (right now, we have a sketch of Cassandra binary protocol implemented on
 top of Buffy, although I'm not sure wether it's going to be
 production-ready any time soon).


 Thanks for props!

 On Saturday, November 30, 2013 10:33:31 PM UTC+1, Thomas wrote:

 Looks really really great and could you please explain how it differs
 from gloss [1]. Any advantages? Disadvantages?

 Thanks
 Thomas

 [1] 
 https://github.com/ztellman/glosshttps://www.google.com/url?q=https%3A%2F%2Fgithub.com%2Fztellman%2Fglosssa=Dsntz=1usg=AFQjCNEEBWzFouSZ3s8uPpizBue7fuhzQA

 On Friday, November 29, 2013 10:15:45 PM UTC, Alex P wrote:

 Buffy [1] is a Clojure library to work with Binary Data, write complete
 binary protocol implementations
 in clojure, store your complex data structures in an off-heap chache,
 read binary files and do
 everything you would usually do `ByteBuffer`.

 Main features  motivation to write it

   * partial deserialization (read and deserialise parts of a byte
 buffer)
   * named access (access parts of your buffer by names)
   * composing/decomposing from key/value pairs
   * pretty hexdump
   * many useful default types that you can combine and extend easily

 Data types include:

   * primitives, such as `int32`, `boolean`, `byte`, `short`, `medium`,
 `float`, `long`
   * arbitrary-length `string`
   * byte arrays
   * composite types (combine any of primitives together)
   * repeated type (repeat any primitive arbitrary amount of times in
 payload)
   * enum type (for mapping between human-readable and binary
 representation of constants)

 Buffy has been serving us well for recent time, and no major issues
 were revealed. However, until
 it reaches GA, we can't guarantee 100% backward compatibility, although
 we're thought it through
 very well and used our best knowledge to make it right.

 Buffy is a ClojureWerkz project, same as Monger, Elastisch, Cassaforte,
 Neocons, Meltdown and
 many others.

 [1] https://github.com/clojurewerkz/buffy
 [2] http://clojurewerkz.org

 --

 Alex P

 http://clojurewerkz.org

 http://twitter.com/ifesdjeen

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


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




-- 
alex p

-- 
-- 
You received this message 

Re: [ANN] Buffy The ByteBuffer Slayer, Clojure library to working with binary data

2013-12-07 Thread Oleksandr Petrov
I've added 32-bits based bit type to Buffy:
https://github.com/clojurewerkz/buffy#bit-type

Does it suit your needs? If not, what length of bits do you require?


On Wed, Dec 4, 2013 at 3:58 PM, Rob Day robert@merton.oxon.org wrote:

 On 29 November 2013 22:15, Alex P oleksandr.pet...@gmail.com wrote:
  Buffy [1] is a Clojure library to work with Binary Data, write complete
  binary protocol implementations
  in clojure, store your complex data structures in an off-heap chache,
 read
  binary files and do
  everything you would usually do `ByteBuffer`.

 Is there any plan to support bit-fields? My main interest at present
 is the Diameter protocol, where some individual bits in the header are
 true/false flags - Gloss decodes that nicely into a sequence of bools,
 but I can't see similar support in Buffy.

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




-- 
alex p

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from 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] Buffy The ByteBuffer Slayer, Clojure library to working with binary data

2013-12-07 Thread Oleksandr Petrov
I've added a missing option for wrapped buffers:
https://github.com/clojurewerkz/buffy#buffer-types


On Wed, Dec 4, 2013 at 9:28 AM, Ulises ulises.cerv...@gmail.com wrote:

 While we're on the subject, I found no way of decoding/interpreting an
 already existing sequence (ByteBuffer) of bytes, but only one that had
 been created with compose-buff. Am I missing something?

 On 4 December 2013 07:28, Cesar Canassa cesar.cana...@gmail.com wrote:
  Hi,
 
  I see that the repeated-type requires a constant repeat count. Are you
  planning to include a more dynamic version à la Gloss prefixes/headers?
 
  The lib looks really nice. Binary handling libraries are really helpful.
 
  Thanks,
  Cesar Canassa
 
 
 
  On Mon, Dec 2, 2013 at 7:09 PM, Alex P oleksandr.pet...@gmail.com
 wrote:
 
  It's different in a way we manipulate the data:
 
  We've opted out for default-lazy way (you're getting and setting
 separate
  values instead of serialising/deserialising an entire payload).
 
  Another difference is that we don't have Lamina as a loaded artifact
  (which may not be an issue for majority of people, but was for us
  because of an internal version conflict with some other library).
  Obviously, there are ways around it, but we tried to bring in minimum
  possible amount of dependencies, and be able to use it with Netty4
 (which
  is currently underrepresented in Clojure world).
 
  There are other subtle difference, but I don't think they're worth
  mentioning, Gloss is a great library, but Buffy is doing things in a
 subtly
  different way. Main purpose (as we're using it) - for off-heap storage /
  data structures, and for binary protocol implementations in Clojure
  (right now, we have a sketch of Cassandra binary protocol implemented on
  top of Buffy, although I'm not sure wether it's going to be
  production-ready any time soon).
 
 
  Thanks for props!
 
  On Saturday, November 30, 2013 10:33:31 PM UTC+1, Thomas wrote:
 
  Looks really really great and could you please explain how it differs
  from gloss [1]. Any advantages? Disadvantages?
 
  Thanks
  Thomas
 
  [1] https://github.com/ztellman/gloss
 
  On Friday, November 29, 2013 10:15:45 PM UTC, Alex P wrote:
 
  Buffy [1] is a Clojure library to work with Binary Data, write
 complete
  binary protocol implementations
  in clojure, store your complex data structures in an off-heap chache,
  read binary files and do
  everything you would usually do `ByteBuffer`.
 
  Main features  motivation to write it
 
* partial deserialization (read and deserialise parts of a byte
  buffer)
* named access (access parts of your buffer by names)
* composing/decomposing from key/value pairs
* pretty hexdump
* many useful default types that you can combine and extend easily
 
  Data types include:
 
* primitives, such as `int32`, `boolean`, `byte`, `short`, `medium`,
  `float`, `long`
* arbitrary-length `string`
* byte arrays
* composite types (combine any of primitives together)
* repeated type (repeat any primitive arbitrary amount of times in
  payload)
* enum type (for mapping between human-readable and binary
  representation of constants)
 
  Buffy has been serving us well for recent time, and no major issues
 were
  revealed. However, until
  it reaches GA, we can't guarantee 100% backward compatibility,
 although
  we're thought it through
  very well and used our best knowledge to make it right.
 
  Buffy is a ClojureWerkz project, same as Monger, Elastisch,
 Cassaforte,
  Neocons, Meltdown and
  many others.
 
  [1] https://github.com/clojurewerkz/buffy
  [2] http://clojurewerkz.org
 
  --
 
  Alex P
 
  http://clojurewerkz.org
 
  http://twitter.com/ifesdjeen
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
  your first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google
 Groups
  Clojure group.
  To unsubscribe from this group and stop receiving emails from it, send
 an
  email to clojure+unsubscr...@googlegroups.com.
  For more options, visit https://groups.google.com/groups/opt_out.
 
 
  --
  --
  You received this message because you are subscribed to the Google
  Groups Clojure group.
  To post to this group, send email to clojure@googlegroups.com
  Note that posts from new members are moderated - please be patient with
 your
  first post.
  To unsubscribe from this group, send email to
  clojure+unsubscr...@googlegroups.com
  For more options, visit this group at
  http://groups.google.com/group/clojure?hl=en
  ---
  You received this message because you are subscribed to the Google Groups
  Clojure group.
  To 

Re: [ANN] Buffy The ByteBuffer Slayer, Clojure library to working with binary data

2013-12-06 Thread Oleksandr Petrov
@Rob
I have a working prototype of bits, which are encoded from 32 flags and
decoded back to them. I've added a couple of helper methods such as
`set-bits-at` and `get-set-bits` and so on to facilitate it.
Although I recommend using enums for that (which is possible in majority of
cases).
I'll release it shortly and will give an additional notice

@Ulisses
Yes, that's been missing in the released version. I'll add it shortly.
Working on a patch, should be available by monday. You can always fork 
add it, we love patches!

@Cesar
I haven't planned to do any dynamic payloads, although I'll add a couple of
examples on how I'm doing same thing while parsing Cassandra protocol.
Since their types are dynamic (for instance, string type consists of long
and sequence of ASCII chars), I do have some version remotely resembling
what you mention. Although since I haven't yet found an elegant way, I can
only provide a hint on how to implement it. Will provide docs for that
together with the rest of patches in work.




On Wed, Dec 4, 2013 at 3:58 PM, Rob Day robert@merton.oxon.org wrote:

 On 29 November 2013 22:15, Alex P oleksandr.pet...@gmail.com wrote:
  Buffy [1] is a Clojure library to work with Binary Data, write complete
  binary protocol implementations
  in clojure, store your complex data structures in an off-heap chache,
 read
  binary files and do
  everything you would usually do `ByteBuffer`.

 Is there any plan to support bit-fields? My main interest at present
 is the Diameter protocol, where some individual bits in the header are
 true/false flags - Gloss decodes that nicely into a sequence of bools,
 but I can't see similar support in Buffy.

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




-- 
alex p

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from 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] Buffy The ByteBuffer Slayer, Clojure library to working with binary data

2013-12-06 Thread Oleksandr Petrov
@Thomas, let me know if you run into any problems. Since the project is
quite young, I'm very open to add a couple of features. Rob, Ulisses and
Cesar have done a very nice job providing some very nice ideas!


On Sat, Dec 7, 2013 at 12:05 AM, Oleksandr Petrov 
oleksandr.pet...@gmail.com wrote:

 @Rob
 I have a working prototype of bits, which are encoded from 32 flags and
 decoded back to them. I've added a couple of helper methods such as
 `set-bits-at` and `get-set-bits` and so on to facilitate it.
 Although I recommend using enums for that (which is possible in majority
 of cases).
 I'll release it shortly and will give an additional notice

 @Ulisses
 Yes, that's been missing in the released version. I'll add it shortly.
 Working on a patch, should be available by monday. You can always fork 
 add it, we love patches!

 @Cesar
 I haven't planned to do any dynamic payloads, although I'll add a couple
 of examples on how I'm doing same thing while parsing Cassandra protocol.
 Since their types are dynamic (for instance, string type consists of long
 and sequence of ASCII chars), I do have some version remotely resembling
 what you mention. Although since I haven't yet found an elegant way, I can
 only provide a hint on how to implement it. Will provide docs for that
 together with the rest of patches in work.




 On Wed, Dec 4, 2013 at 3:58 PM, Rob Day robert@merton.oxon.orgwrote:

 On 29 November 2013 22:15, Alex P oleksandr.pet...@gmail.com wrote:
  Buffy [1] is a Clojure library to work with Binary Data, write complete
  binary protocol implementations
  in clojure, store your complex data structures in an off-heap chache,
 read
  binary files and do
  everything you would usually do `ByteBuffer`.

 Is there any plan to support bit-fields? My main interest at present
 is the Diameter protocol, where some individual bits in the header are
 true/false flags - Gloss decodes that nicely into a sequence of bools,
 but I can't see similar support in Buffy.

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




 --
 alex p




-- 
alex p

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

2013-12-06 Thread Oleksandr Petrov
In ClojureWerkz[1], there're some projects, for example, Titan[2]. Zach
Maril [3] is taking care of them, mostly.

[1] http://clojurewerkz.org
[2] https://github.com/clojurewerkz/titanium
[3] https://twitter.com/zackmaril


On Mon, Dec 2, 2013 at 3:01 PM, Paweł Rozynek pro...@gmail.com wrote:

 hello

 quick question: is there any good graphs related library? the one that
 implements data structures and search/traverse or some other algorithms in
 a nice fashion. googling found me nothing useful for my simple needs, neo4j
 client libs at best.

 thanks for responses
 PR

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




-- 
alex p

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


Re: Clojure Jruby (Ruby on Rails) Interop

2013-09-09 Thread Oleksandr Petrov
Forgot to mention, Zweikopf comes as a Ruby gem and as a Clojure library.
You should make a decision though wether you're running Ruby scripting
container from Clojure or start Clojure runtime from Ruby...


On Mon, Sep 9, 2013 at 5:50 PM, Oleksandr Petrov oleksandr.pet...@gmail.com
 wrote:

 I've been working with an application that written in Ruby and Clojure.
 Nothing forbids you from using some messaging system for communication
 between Ruby and Clj, although we required direct access to Ruby from
 Clojure and vice versa.

 That's pretty much how Zweikopf was born:
 http://github.com/ifesdjeen/zweikopf

 With Zweikopf you can call Ruby code from Clojure and Clojure code from
 Ruby, given that Runtime was registered properly. You can convert any
 Clojure data structure to Ruby one
 and back, custom serialisation, circular dependency detection included.

 I would suggest not using any serialisation means if you intend running
 both languages in a single process / JVM. That would add a significant
 overhead and you won't be able to have
 direct access to whatever class you may need at given time without
 wrapping it into some RPC container.



 On Mon, Sep 9, 2013 at 4:47 PM, rdelcueto rdelcu...@gmail.com wrote:

 Hey Ron,
 Thanks for your response. Digging deeper into my question...

 When I read about the Torquebox Immutant duet, I thought it was
 particularly interesting solution, because it was fairly easy to deploy and
 both processes would live inside a JVM environment. I was impressed by how
 Clojure data structures mapped to Ruby structures and vice-versa, it seemed
 to provide a very clean and idiomatic messaging platform. Plus it would
 provide tools for caching, clustering, and what not. Still I wasn't very
 keen on the JRuby subject, since It's known to have compatibility issues
 with certain gems.

 Yesterday while researching on the subject I found about ZeroMQ. Do you
 have any particular reason to use RabbitMQ over other messaging libraries?
 Are there any caveats to your interop model?
 How portable is deploying a site using a messaging solution such as
 RabbitMQ?

 I also found out about Google's Protocol Buffers, they seemed like a
 lightweight solution to pass language agnostic data structures through the
 messaging infrastructure.
 Do messages need to be encapsulated somehow, or is this actually
 unnecessary? How it's done in your case?

 Regarding security and sensible information interop; Should messages be
 encrypted? Should they be encrypted as a whole message or partially (only
 sensible data)?
 What are the performance implications of this pipeline? Is the overhead
 and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big
 enough, for it to be worth thinking on writing everything in Clojure (using
 the Luminus framework)?


 On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote:

 At Rewryte, we use Rails for the web frontend and Clojure for the data
 processing backend for exactly the reasons you described.

 We use RabbitMQ to communicate between the two. This maintains
 separation between the two apps (no JRuby required), and lets us scale them
 both independently, while taking advantage of each language/framework's
 strengths.

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




 --
 alex p




-- 
alex p

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


Re: Clojure Jruby (Ruby on Rails) Interop

2013-09-09 Thread Oleksandr Petrov
I've been working with an application that written in Ruby and Clojure.
Nothing forbids you from using some messaging system for communication
between Ruby and Clj, although we required direct access to Ruby from
Clojure and vice versa.

That's pretty much how Zweikopf was born:
http://github.com/ifesdjeen/zweikopf

With Zweikopf you can call Ruby code from Clojure and Clojure code from
Ruby, given that Runtime was registered properly. You can convert any
Clojure data structure to Ruby one
and back, custom serialisation, circular dependency detection included.

I would suggest not using any serialisation means if you intend running
both languages in a single process / JVM. That would add a significant
overhead and you won't be able to have
direct access to whatever class you may need at given time without wrapping
it into some RPC container.



On Mon, Sep 9, 2013 at 4:47 PM, rdelcueto rdelcu...@gmail.com wrote:

 Hey Ron,
 Thanks for your response. Digging deeper into my question...

 When I read about the Torquebox Immutant duet, I thought it was
 particularly interesting solution, because it was fairly easy to deploy and
 both processes would live inside a JVM environment. I was impressed by how
 Clojure data structures mapped to Ruby structures and vice-versa, it seemed
 to provide a very clean and idiomatic messaging platform. Plus it would
 provide tools for caching, clustering, and what not. Still I wasn't very
 keen on the JRuby subject, since It's known to have compatibility issues
 with certain gems.

 Yesterday while researching on the subject I found about ZeroMQ. Do you
 have any particular reason to use RabbitMQ over other messaging libraries?
 Are there any caveats to your interop model?
 How portable is deploying a site using a messaging solution such as
 RabbitMQ?

 I also found out about Google's Protocol Buffers, they seemed like a
 lightweight solution to pass language agnostic data structures through the
 messaging infrastructure.
 Do messages need to be encapsulated somehow, or is this actually
 unnecessary? How it's done in your case?

 Regarding security and sensible information interop; Should messages be
 encrypted? Should they be encrypted as a whole message or partially (only
 sensible data)?
 What are the performance implications of this pipeline? Is the overhead
 and footprint of such setup (Ruby + Messaging Broker + ClojureJVM) big
 enough, for it to be worth thinking on writing everything in Clojure (using
 the Luminus framework)?


 On Monday, September 9, 2013 8:10:41 AM UTC-5, Ron Toland wrote:

 At Rewryte, we use Rails for the web frontend and Clojure for the data
 processing backend for exactly the reasons you described.

 We use RabbitMQ to communicate between the two. This maintains separation
 between the two apps (no JRuby required), and lets us scale them both
 independently, while taking advantage of each language/framework's
 strengths.

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




-- 
alex p

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


Re: ring 1.2.0 setup

2013-09-08 Thread Oleksandr Petrov
It looks all fine to me,

Here's a repo where i've put Enlive, Ring and Compojure together :
https://github.com/ifesdjeen/enlive-ring

You can run it using ring: https://github.com/weavejester/lein-ring

Let me know if it works for you, otherwise would you mind to push code
somewhere in a gist on in repo so that we could see what's up



On Sun, Sep 8, 2013 at 7:43 AM, Mono monosij.for...@gmail.com wrote:

 I am following the book 'Clojure Programming' and have some questions on
 setting up ring.

 I have been using the latest versions of ring version 1.2.0. Also using
 compojure, enlive but taken them out for this post.

 ...
 The Clojure project is set up fine and imports libraries and gives no
 problems in Eclipse.
 I am using JDK 1.7 on Ubuntu 13.04.

 (defproject startingclojure 0.1.0-SNAPSHOT
   :description FIXME: write description
   :url http://example.com/FIXME;
   :license {:name Eclipse Public License
 :url http://www.eclipse.org/legal/epl-v10.html}
   :dependencies [[org.clojure/clojure 1.5.1]
  [ring 1.2.0]])

 Ring libraries are imported fine. I have compojure and enlive also as part
 of project but not shown here.
 No errors in Eclipse.

 ...
 I have tried various approaches but my require is as you shown:
 (ns startingclojure.app
   (:require [ring.adapter.jetty :as jetty]))

 ...
 However my jetty just won't run:
 (def server (jetty/run-jetty #'app {:port 8080 :join? true}))

 Always gives this error:
 CompilerException java.lang.RuntimeException: No such namespace: jetty,
 compiling:(NO_SOURCE_PATH:1:**13)

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




-- 
alex p

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

2013-09-08 Thread Oleksandr Petrov
We're using Clojure code for configuration.

In essence, it looks pretty much like:
https://gist.github.com/ifesdjeen/440320a52f4edeedfd1a

And you can run it as:

lein run --config config/development.clj



On Sun, Sep 8, 2013 at 10:07 PM, Gordon Stratton
gordon.strat...@gmail.comwrote:

 James,

 Plug much appreciated - Nomad looks great!

 On Sun, Sep 8, 2013 at 7:09 PM, James Henderson
 james.hender...@likely.co wrote:
  Hi Gordon/all,
 
  Hope you'll forgive the plug, but it sounds like Nomad does what you want
  here.
 
  In particular, it allows you to store configuration for multiple
 different
  environments as a simple EDN config file in your project repo (Gordon's
  'global.clj'), meaning that it's versioned with the rest of your project
  code (i.e. there's no need to configure Puppet etc separately, and keep
 the
  project and Puppet versions co-ordinated). It also allows for 'private
  config files' (Gordon's 'local.clj'), to store passwords etc that you
 don't
  want in version control.
 
  HTH!
 
  James

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




-- 
alex p

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from 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 Introducing EEP, a young [event] stream processing library

2013-09-07 Thread Oleksandr Petrov
RingBuffer operates in it's own pool, adding notifications blocks
RingBuffer's yielding, therefore makes notify function block eternally.

New version containing a bugfix for that problem, together with throughput
tests was added and pushed to Clojars:

[clojurewerkz/eep 1.0.0-alpha4]

Please use alpha4 if you use RingBuffer dispatcher. This problem does not
occur with other dispatcher types.



On Fri, Sep 6, 2013 at 6:08 PM, Michael Klishin michael.s.klis...@gmail.com
 wrote:

 2013/9/6 Ulises ulises.cerv...@gmail.com

 I'm sure it's a bit early but is there a mailing list for this?

 I've ran into trouble trying EEP on a really simple flow (the even vs.
 odds in the docs.) and I'd like to ask a few questions.


 Now there is:

 https://groups.google.com/forum/#!forum/clojure-event-processing

 Authors of other stream processing libraries are very welcome to join!
 --
 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.




-- 
alex p

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

2013-09-07 Thread Oleksandr Petrov
Cassaforte [1] is a Clojure client for Apache Cassandra 1.2+. It is built
around CQL 3
and focuses on ease of use. You will likely find that using Cassandra from
Clojure has
never been so easy.

1.2.0 is a minor release that introduces one minor feature, fixes a couple
of bugs, and
makes Cassaforte compatible with Cassandra 2.0.

Release notes:
http://blog.clojurewerkz.org/blog/2013/09/07/cassaforte-1-dot-2-0-is-released/

1. http://clojurecassandra.info/ http://clojurememcached.info/

--
Alex P

https://github.com/ifesdjeen
https://twitter.com/ifesdjeen

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from 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] EEP (Embedded Event Processing) 1.0.0-alpha4 is released

2013-09-07 Thread Oleksandr Petrov
EEP [1], Clojure Embedded Event Processing library 1.0.0-apha4 is released.

EEP is c library for lightweight embedded event processing, it combines a
lightweight
generic event handling system, multiple windowed stream operations,
aggregations
and multiple buffer types.

New release contains several improvements, including update of Meltdown
[2], Clojure
interface to Reactor [3] (foundation library for asynchronous processing on
JVM) and a
fix for bug, that was causing emitter block on high throughput.

ChangeLog:
https://github.com/clojurewerkz/eep/blob/master/Changelog.md

1. https://github.com/clojurewerkz/eep
2. https://github.com/clojurewerkz/meltdown
3. https://github.com/reactor/reactor

--
Alex P

https://github.com/ifesdjeen
https://twitter.com/ifesdjeen

-- 
-- 
You received this message because you are subscribed to the Google
Groups Clojure group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
Clojure group.
To unsubscribe from 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 Introducing EEP, a young [event] stream processing library

2013-09-05 Thread Oleksandr Petrov
EEP is an appropriate choice when:
 * you have to do processing on a single machine, or can split processing
to several machines using downstreams which will forward processing from
end-observer to emitter on a different machine
 * if you want it to be very fast and want to have pluggable backends. EEP
is based on Meltdown[1] (bindings for Reactor from Pivotal), and supports
several routing mechanisms
 * if you'd like to crunch numbers or raw data
 * if you work with streams that are coming via network and want to
analyse/reduce them to something meaningful

EEP is a set of high-level operations for Meltdown, such as windows
(tumbling, sliding, monotonic and so on), and statistical functions (stats
part is currently in works, but it will be not that easy to cover
everything, so there will be still a need for writing own stats.

It helps to keep things reusable, I've done some prototyping for future
storm-based project with meltdown/eep, which helped me to get everything
straight on local machine, prototype fast and then think about how I'd like
to convert it to storm topology.

I would say that EEP can't replace Aleph and it's not our goal (even though
we'll support Reactor-tcp [3] quite soon). It's somewhat similar to Lamina,
which is backing Aleph, but our goal was to make it possible to have named
events and handers bound to named events. Anonymous graphs are supported by
Meltdown and are closer to what Lamina offers.

Major advantage is of course underlying RingBuffer (Disruptor) [4] and
other backends offered by Reactor itself.

[1] https://github.com/clojurewerkz/meltdown
[2] https://github.com/reactor/reactor
[3] https://github.com/reactor/reactor/tree/master/reactor-tcp
[4] http://lmax-exchange.github.io/disruptor/





On Sat, Aug 31, 2013 at 5:07 AM, Mikera mike.r.anderson...@gmail.comwrote:

 Looks very interesting, thanks for sharing!

 Could you summarise how this fits in the ecosystem relative to Storm,
 Aleph etc? When should EEP be the most appropriate choice?

 On Saturday, 31 August 2013 05:02:27 UTC+8, Michael Klishin wrote:

 On behalf of the ClojureWerkz team [1], I'm happy to announce
 our new project, EEP (for Embedded Event Processing).

 Read the announcement:
 http://blog.clojurewerkz.org/**blog/2013/08/29/stream-**
 processing-with-eep/http://blog.clojurewerkz.org/blog/2013/08/29/stream-processing-with-eep/

 The library is young and definitely could use better documentation but
 it's mature enough
 to start gathering feedback from the rest of the community. Please
 give it a try.

 There will be a couple more exiciting announcements from ClojureWerkz in
 the
 next few weeks. So watch this space.

 I'd like to thank Alex (http://twitter.com/ifesdjeen) and his dog Huskell
 (https://twitter.com/**huskelldog https://twitter.com/huskelldog) for
 driving this project.

 1. http://clojurewerkz.org
 --
 MK

 http://github.com/**michaelklishin http://github.com/michaelklishin
 http://twitter.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.




-- 
alex p

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

2013-08-13 Thread Oleksandr Petrov
It actually doesn't do anything Clout does.
Latest modifications actually make it 100% complementary to clout, so now
you can do:

(defroute about /about)(defroute documents /docs/:title)


(compojure/defroutes main-routes
  (compojure/GET about-template request (handlers.root/root-page
request)) ;; will use /about as a template
  (compojure/GET documents-template request
(handlers.root/documents-page request)) ;; will use /documents as a
template
  (route/not-found Page not found))


Meaning that on Route One side you specify the way you generate url from
parts, and clout takes same template and makes urls parseable.

To sum it up: Clout only does route recognition (URL = route), while Route
One does only URL generation (route = URL)

Thanks!

On Tue, Aug 13, 2013 at 7:12 PM, Baishampayan Ghose b.gh...@gmail.comwrote:

 Curious, how does it differ from Clout? ~BG

 On Tue, Aug 13, 2013 at 9:38 PM, Michael Klishin
 michael.s.klis...@gmail.com wrote:
  On behalf of the ClojureWerkz team, I'm happy to announce our not-so-new
  project that has recently reached 1.0.0-rc1 stage: Route One [1].
 
  Route One is a route generation library complimentary to Clout, part of
  Compojure.
  It takes a route definition and parameters and produces a URL/URI/path.
 
  It can be used in any application that may need to generate
 URLs/URIs/paths.
 
  1.0.0-rc1 release notes:
 
 http://blog.clojurewerkz.org/blog/2013/08/12/route-one-1-dot-0-0-rc1-is-released/
 
  Documentation and examples:
  https://github.com/clojurewerkz/route-one#documentation--examples
 
  1. http://github.com/clojurewerkz/route-one
  --
  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.
 
 



 --
 Baishampayan Ghose
 b.ghose at gmail.com

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





-- 
alex p

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

2013-01-09 Thread Oleksandr Petrov
We're using that technique for both long-running server processes and small
web applications, i've covered in a blog post some time ago:
http://coffeenco.de/articles/how_to_deploy_clojure_code.html

Basically, create a jar and run it from a jar.

If you don't want to embed jetty, you can deploy to jetty container.
If you want to have uninterrupted deployments, use nginx and multiple sever
socket backends, kill old app after new app's startup.

As reg. configuration, you can check out a little application I wrote on
GitHub:
Here's a config file:
https://github.com/ifesdjeen/upload-challenge/blob/master/config/production.clj
Here's a primitive way to read it:
https://github.com/ifesdjeen/upload-challenge/blob/master/src/uploadchallenge/conf.clj

There are also scripts for deployment and so on, kind of a complete setup:
https://github.com/ifesdjeen/upload-challenge

Not sure how common our practice is, but we do it that way.

Have fun!

On Wed, Jan 9, 2013 at 12:38 AM, Josh Kamau joshnet2...@gmail.com wrote:


 I am new to clojure. My question is: Whats the common practice when it
 comes to deploying webapps built on compojure? running via lein ring server
 or creating a war file ?  I would also like to know which is the best way
 to put load configuration files  i.e using properties file... or using a
 reader to load .clj file with a hashmap def?




-- 
alex p

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