komoku / aetheria

Aetheria Game Engine - Migrated from code.google.com/p/aetheria
Other
8 stars 0 forks source link

Guardado en applet mediante cookies #181

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Según informaciones de mistery y dddddd, cada cookie permiten guardar 4 KB de 
información en el navegador y se puede hacer desde un applet java haciendo una 
guarrada que ejecuta código javascript.

Código java para crear, leer y borrar las cookies: 
http://gorkasg.wordpress.com/2008/11/13/los-applets-y-las-cookies/

Código java para comprimir una cadena con gzip (el log): 
http://stackoverflow.com/questions/3649485/how-to-compress-a-string

La idea es permitir guardar un log (de momento, sólo uno, al guardar otro se 
machaca) en cookies (de momento en una cookie, luego ampliable a más si 
sobrepasa los 4 KBytes).

Original issue reported on code.google.com by komoku on 19 May 2011 at 5:26

GoogleCodeExporter commented 9 years ago
InputStream in = new ByteArrayInputStream(str.getBytes("UTF-8"));  
//inputstream desde string (para el log).

Original comment by komoku on 19 May 2011 at 10:15

GoogleCodeExporter commented 9 years ago
En algunos navegadores hay un límite de datos de cookies por dominio de 4096 
bytes: http://myownplayground.atspace.com/cookietest.html

Haciendo pensar en el siguiente flujo de guardado en el applet:

1. Comprimir en log en gz y codificar a base64.
2. Si tiene menos de 4096 bytes, guardar en una cookie y terminar.
3. Si tiene más de 4096 bytes, guardar en RAM (issue #180), y decirle al 
usuario que si quiere que aguante más allá de una sesión tendrá que darle a 
"mostrar log" y copypastear.
4. Que haya una opción "mostrar log" que muestre todo el log, permita 
copiarlo, y una opción "introducir log" para leer y ejecutar un log.

Original comment by komoku on 22 May 2011 at 3:35

GoogleCodeExporter commented 9 years ago
Flujo de datos más detallado para el guardado mediante cookies:

- Crear una función saveCompressedCookie o algo así que comprima y guarde, y 
su correspondiente load.
- Al guardar, guardar la cookie y luego cargarla. Ver si el resultado coincide.
- Si coincide, decir que se ha guardado con éxito, sin ningún mensaje que 
asuste.
- Si no coincide, decir que no se puede guardar en la cookie (por el tamaño, 
si >4096, o porque el navegador no admite cookies, si <=4096), que la partida 
ha sido guardada en memoria, y que si se quiere que dure hasta otra sesión, 
hay que guararla por "contraseña".
- La contraseña es el base64 para que el usuario copypastee.

Original comment by komoku on 26 Jul 2012 at 11:56

GoogleCodeExporter commented 9 years ago
Fixed by r526.

Original comment by komoku on 26 Jul 2012 at 5:47