On Fri, Oct 14, 2011 at 2:40 AM, Hernán Morales Durand <
hernan.mora...@gmail.com> wrote:

> Hi Martin
>
> 2011/10/13 Martin Dias <tinchod...@gmail.com>:
> > Hi Hernan,
> > Could your "specific Strings" be instances of a variant of RemoteString
> that
> > compresses and decompresses? Then they will occupy less memory in your
> image
> > and it would be easier to serializer and deserialize the proxy object.
>
> I'd like to keep my objects cross-dialect, so if that's not an issue
> it would be ok to use a RemoteString. I don't see why it would be
> easier to serialize/deserialize?
>

I don't know it has sense, also it depends on your case... but if
MyRemoteString just has a instVar 'filename' or 'fileIndex' to fetch the
real string from disk when necessary... it should be easy to serialize
instances of such MyRemoteString.


>
> > Thanks for the feedback, I also don't like the visitor interface we have
> for
> > customizations. In fact, I think it is not a visitor but a
> double-dispatch.
> > And I would prefer to merge the two hooks Mariano proposed to something
> > like:
> > String >>
> > fuelMapOn: aDefaultMapper (ExternalCompressor shouldCompressString: self)
> > ifTrue: [aDefaultMapper mapSubstitution: self by: (ExternalCompressor
> > compress: self)] ifFalse: [super fuelMapOn: aDefaultMapper]
> >
> > Do you like more this way?
>
> Absolutely :)
>

thanks... probably for Fuel 1.8!


>
> > Martin
> >
> > On Tue, Oct 11, 2011 at 4:10 PM, Mariano Martinez Peck
> > <marianop...@gmail.com> wrote:
> >>
> >>
> >> On Tue, Oct 11, 2011 at 12:56 AM, Hernán Morales Durand
> >> <hernan.mora...@gmail.com> wrote:
> >>>
> >>> Thanks Mariano,
> >>>
> >>> That's pretty much what I want, but... why to expose the visitor
> >>> interface? ;)
> >>
> >> Good question. Honesty, it was the only way we have found to do it with
> >> Fuel. I think (but I am not sure) that one of the drawbacks of the
> pickle
> >> format is that it analysis phase (as we call it in Fuel) make some hooks
> >> more complicated to implement than a classic serializer.
> >>
> >>>
> >>> Just to give a little feedback of what I have in my mind:
> >>>
> >>> mySerializer setEngine: ExternalCompressor for: ( MyClass ->
> >>> #myStringIVar )
> >>>
> >>
> >> Well, you can also create an specific Fuel cluster for MyClass that does
> >> exactly that. Basically you have to create FLMyClassCluster, implement
> >> methods like #serializeWith: and #materializeFrom:  and there you
> >> serialize/materialize the specific #myStringIVar with a special way and
> the
> >> rest as normal. Then you subclass the FLDefaultMapper, say YourMapper
> and
> >> you implement #visitXXX
> >> Then you have to implement MyClass >> visitXXX.
> >> Of course, you should be able to generalize such cluster and be able to
> >> reuse it for different classes or instVars.
> >>
> >> I am not saying this is the best way. I am just telling you one possible
> >> solution you can do by extending Fuel for your needs. Of course, you may
> >> need to understand how Fuel works first. But of course, we can help if
> you
> >> want.
> >>
> >>>
> >>> or
> >>>
> >>> mySerializer setEngine: ExternalCompressor for: incomingStream
> >>>
> >>> Now with machines generating daily 6 TBytes of raw data, one of the
> >>> keys will be data compression.
> >>>
> >>
> >> it looks like ;)
> >>
> >>
> >>>
> >>> 2011/10/10 Mariano Martinez Peck <marianop...@gmail.com>:
> >>> >
> >>> >
> >>> > On Mon, Oct 10, 2011 at 9:35 PM, Hernán Morales Durand
> >>> > <hernan.mora...@gmail.com> wrote:
> >>> >>
> >>> >> Is there any serializer (Fuel/StOMP/Ma object
> >>> >> serialization/BOSS/SRP/SIXX??) which let me attach an external
> >>> >> compressor/decompressor for specific Strings to the
> >>> >> serialization/deserialization process?
> >>> >
> >>> > In Fuel you can do:
> >>> >
> >>> > String >> fuelSubstitution
> >>> >       ^ ExternalCompressor compress: self
> >>> >
> >>> > String >> fuelAccept: aVisitor
> >>> >    ^ (ExternalCompressor shouldCompressString: self)
> >>> >    ifTrue: [aVisitor visitSubstitution: self]
> >>> >    ifFalse: [super fuelAccept: aVisitor]
> >>> >
> >>> > But the problem is that if #compress: answers an instance of String,
> >>> > you
> >>> > should be careful that if #shouldCompressString:  asnwers true to the
> >>> > compressed string, then you will end up in an infinitive loop.
> >>> >
> >>> > See: http://rmod.lille.inria.fr/web/pier/software/Fuel/Hooks and
> >>> > FLHookedSubstitutionTest
> >>> >
> >>> > I think StOMP should support this as well:
> >>> > http://stomp.smalltalk-users.jp/home/how-to-use-stomp/hook-methods
> >>> >
> >>> > The previous hook you let you replace the original String with its
> >>> > compression during serialization. Which make sense because if you are
> >>> > going
> >>> > to compress it is better to do it during serialization.
> >>> >
> >>> >> With external I mean it could
> >>> >> be in a separate binary (I could arrange the binding though).
> >>> >
> >>> > I am not sure if I understood.
> >>> >
> >>> >
> >>> >
> >>> >>
> >>> >> Thanks
> >>> >>
> >>> >> Hernán
> >>> >>
> >>> >
> >>> >
> >>> >
> >>> > --
> >>> > Mariano
> >>> > http://marianopeck.wordpress.com
> >>> >
> >>> >
> >>>
> >>
> >>
> >>
> >> --
> >> Mariano
> >> http://marianopeck.wordpress.com
> >>
> >
> >
>
>

Reply via email to