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: [ANN] Buffy The ByteBuffer Slayer, Clojure library to working with binary data

2013-12-04 Thread Ulises
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 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 

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

2013-12-04 Thread Thomas
Thank you Alex,

I have been paying around with Gloss for a while now and realised it is not 
quite suitable for the protocol I am trying to en/decode. I'll give Buffy a 
try and see whether it is a better fit for my problem domain.

Thanks again,

Thomas

On Monday, December 2, 2013 9:09:48 PM UTC, Alex P 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).



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


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

2013-12-03 Thread Cesar Canassa
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.


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

2013-12-02 Thread Alex P
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.


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

2013-11-30 Thread Thomas
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.


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

2013-11-29 Thread Alex P
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.


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

2013-11-29 Thread Andrey Antukh
Good work! Thanks!


2013/11/29 Alex P oleksandr.pet...@gmail.com

 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.




-- 
Andrey Antukh - Андрей Антух - n...@niwi.be
http://www.niwi.be/about.html
http://www.kaleidos.net/A5694F/

Linux is for people who hate Windows, BSD is for people who love UNIX
Social Engineer - Because there is no patch for human stupidity

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