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