Hello Jim,

As we know now, that you need data serialization to freeze your chess game 
and you're not writing any client API :)

Have you consider libraries like :
  - Carbonite <https://github.com/sritchie/carbonite>
  - Deep Freeze <https://github.com/halgari/deep-freeze>
  - Nippy <https://github.com/ptaoussanis/nippy>

I have no experience with them, just sharing

Regards
Kawas


Le jeudi 22 août 2013 21:09:41 UTC+2, Jim foo.bar a écrit :
>
>  all I'm trying to do is to provide a uniform mechanism to save/load 
> game-states across my 2D board-games. Everything works just fine without 
> that trick for most games but chess is peculiar (or my implementation is 
> peculiar if you like) because in order to implement castling/enpassant 
> moves without global nastiness I had to attach some metadata to every piece 
> that moved.The notion of 'having-moved' though is not necessarily part of a 
> piece itself and that is why I thought meta-data would be appropriate and 
> wouldn't affect equality between pieces that have moved and ones that 
> haven't. The same principal I think applies to being alive or 
> dead...logically speaking, a bishop is always a bishop, it's only when the 
> game starts that suddenly 'alive' and 'dead' matter...
>
> anyway, the way I've currently set it up it works for all games...my chess 
> does exactly what Meikel showed earlier but the other 2 games work without 
> that...btw, java serialisation always worked but I can't recall whether it 
> preserves metadata...
>
> thanks everyone - I can't believe how much I learnt through this post and 
> some poking around on the web :)
>
> clearly, YOU ROCK!    
>
> Jim 
>
> ps: now that I've explained the use-case can anyone recommend any 
> alternatives?  
>
>
>
> On 22/08/13 16:46, kawas wrote:
>  
> Jim,
>
> This is indeed a hack and not a best practice, maybe you're not using the 
> right tool for your problem...
>
> - If you want to exchange data (think values), you should not be in need 
> of keeping types and meta data
>   when you exchange data in json, for example, you're not providing object 
> class in the stream
>
> - If you just want serialization to reload hot data or use some kind of 
> RPC mechanism over the wire, than I think edn is not the right tool.
>
>
> Cheers
>
> Le jeudi 22 août 2013 13:24:33 UTC+2, Jim foo.bar a écrit : 
>>
>>  Hi Meikel,
>>
>> this is funny! I thought about this approach but I originally considered 
>> it to be a clever hack rather than the official way to do this...Since I 
>> can't test it yet with my record , I hope you don't mind me asking another 
>> question...
>>
>> there is no need for print-dup bound to  true here, right?
>>
>> thanks a lot for your time :)
>>
>> Jim
>>
>>
>> On 22/08/13 12:00, Meikel Brandmeyer (kotarak) wrote:
>>  
>> (defmethod print-method Foo
>>   [foo ^Writer w]
>>   (.write w "#my/foo ")
>>   (print-method {:a (:a foo) :b (:b foo) :c (:c foo) :meta (meta foo)} w))
>>
>> (defn foo-reader
>>   [foo-data]
>>   (with-meta (map->Foo (dissoc foo-data :meta)) (:meta foo-data)))
>>
>> Read with:
>>
>> (edn/read {'my/foo foo-reader} ...)
>>
>> Printing might be optimised a bit. And the :meta key could be made more 
>> robust. (records may contain arbitrary keys.)
>>
>>
>>   -- 
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com <javascript:>
> Note that posts from new members are moderated - please be patient with 
> your first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com <javascript:>
> For more options, visit this group at
> http://groups.google.com/group/clojure?hl=en
> --- 
> You received this message because you are subscribed to the Google Groups 
> "Clojure" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+u...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
> 

-- 
-- 
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.

Reply via email to