Borrado efectivo de cookies en JS

Problemón que teníamos por acá con esto de las cookies. Ciertos CGI esperaban que una cookie particular (token) apareciera siempre primera, sin embargo otros scripts (doubleclick, google-analytics entre otros) se encargaban de dejar cookies indeseadas que hacian que mi cookie “token” se desplazara.

Como diablos la elimino??

He aqui un pequeño método para lograrlo
function eraseCookie(name) {
createCookie(name,"",-1,"");
}

function createCookie(name,value,days, domain) {
var expires = "";
var domain_name = "";
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
expires = "; expires="+date.toGMTString();
}else{
expires = "";
}if(domain){
domain_name = "; domain="+domain;
}
document.cookie = name+"="+value+expires+"; path=/"+domain_name;
}

Luego una forma de invocarlo sería
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++){
eraseCookie(cookies[i].split("=")[0]);
}

Importante considerar que hay cookies que puede que no se borren si no se especifica el dominio, para lo cual deberán hacer un tratamiento adicional mínimo.

Saludos

Categorías:Javascript, Web

Como forzar descarga de archivos

Esto resultó luego de un poco de lectura y prueba y error en el proyecto BChile de Excelsys.

Sucede que tratando de solucionar un problema de vulnerabilidad en el generador de informes (solucionado dicho sea de paso),  salió al baile el “cómo” visualizar dichos informes (en pdf). 3 de 4 exploradores se comportaron como deberían (FF, Chrome y Safari), sin embargo, como siempre IE6 dio problemas. Se seteo el Content Type del Servlet de la siguiente manera:

response.setContentType("application/force-download");

Sin embargo, no solucionaba el problema en IE6. Averiguando un poco más llegué a estas páginas

http://support.microsoft.com/kb/260519

http://www.javadocexamples.com/javax/servlet/http/HttpServletResponse/addHeader%28String%20name,String%20value%29.html

Donde se mostraba la cabecera especifica para forzar la descarga.

Luego, para implementar en servlet Java el código es el siguiente

private void generatePDFOutput(HttpServletResponse response)
throws IOException {

byte[] bytes = null;
/*........*/
response.setContentType("application/octet-stream");
response.setContentLength(bytes.length);
response.addHeader("Content-Disposition", "attachment; filename=" + _reportName+ "." + "pdf");
//response.addHeader("filename","_reportName"+ "." + PDF_FORMAT);
ServletOutputStream ouputStream = response.getOutputStream();
ouputStream.write(bytes, 0, bytes.length);
ouputStream.flush();
ouputStream.close();

}

Con esto se logra forzar en todos los navegadores (incluido IE6) el diálogo de descarga, para así evitar posibles problemas de visualización del documento.

Demás está decir que esto es aplicable a varios tipos de archivo, considerando el comportamiento por defecto que tiene IE X para los archivos con extensiones “microsoft”

Saludos

Categorías:Java, Programación

Primeros dias en ImageMaker (2da Parte)

30 octubre 2009 1 Comentario

…..”Ehhh, buenos dias, llamo porque tuve un problema con mi equipo, un q320″ – me interrumpe – Primero debe comunicarse con samsung chile, el telefono es el 800-samsung.

“Ehhh y hay algun telefono para comunicarse desde celular” – Sí, es el xxxxxx- Ok muchas gracias

 

Eran las 8:30 del lunes, entraba a las 9:30 a la pega ese dia, primer dia… y estaba urgidisimo por el tema del laptop, llamé al numero que me dieron y me dijeron que no podian atenderme, que necesitaba llamar por el 800… PERO COMO MIERDA!!!???  No tenia donde conseguir un fono q pudiera llamar a 800, asi q luego de la desesperacion, vino la salvacion!. Mi dulce y hermosa novia llamo desde conce, le pidieron mis datos los dio pero le dieron datos erroneos de vuelta, asi q llamos denuevo, y nuevamente datos diferentes…. extraño, pero finalmente mi novia me dio un numero “de servicio” con que podria ir al servicio tecnico. Mientras, hacía nada en la pega

Llamo al servicio tecnico ahora si, no me pidieron el numero de servicio y me dijeron q lo llevara no mas… a la chucha del mundo! (Para quien no sepa, la chucha del mundo queda en Ñuñoa). Asi que llamé a mi tia y ella me fue a dejar el laptop… cuando llegó al lugar eso si, me llamo pidiendo el numero de servicio, que le di…. luego me llama diciendo q ese numero no estaba registrado yblah blah. MIS BOLAS!. Afortunadamente tb andaba mi hermano y atinó a pedir un fono y llamar a la linea 800 de samsung. Cuento corto, ayer (Jueves 29 de Octubre) recibi devuelta mi laptop… Y mientras tanto aun no hacia nada en la pega jajaja

 

Hablando de la pega, extrañamente el dia miercoles me enviaron a una entrevista en Excelsys…but why?… Pq vuelvo a las andanzas del Outsourcing POR LA CHUCHA!!… que mas le voy a hacer, ya me prostutuyeron, el proximo lunes empiezo alla, por 6 meses inicialmente ojojojojo.

 

Y hoy viajo a conce a ver a mi iñora

 

Eso seria, me dio pajita seguir escribiendo

 

Categorías:Uncategorized Etiquetas: , ,

Primeros dias en ImageMaker

29 octubre 2009 1 Comentario

Y bueno, me cambié de pega finalmente, pero como todo en la vida, debe ser peor que un parto (a pesar de no tener idea como diablos se siente un parto)….

Corria el domingo 25 de octubre, eran aprox. las 13:00, el dia anterior habia paseado por la UTFSM en valpo junto a @crosvera y la naty, mirando el dia Gnome y la feria de SW de dicha universidad. Por todo el ajetreo, ese domingo me habia levantado tarde, acababa de hablar con mi polola cuando derrepente repentinamente me dio por grabar un dvd – “Ouu yeahh, a grabar la iso de la temporada 1 de Bones”- Mientras estoy grabando tome 3 estupidas coherentes decisiones.

  1. Grabar el dvd en mi notebook estando yo acostado
  2. Cargar la iso directamente desde mi disco externo
  3. MEAR!

Fue esta ultima el origen de mis desgracias… Alguien en su sano juicio se levanta a mear mientras graba un dvd?? Si, normalmente todo el mundo lo hace… pero alguien en su sano juicio se levanta a mear mientra mueve el equipo en que se esta grabando el disco, mientras al mismo tiempo el disco externo queda colgando y sujetado solo del cable usb que lo conecta al notebook??.. Solo yo! xD…. Asi que me movi milimetricamente cuando derrepente escuche un prrrrjjjjjjj del dvd (pase a hacer presion en esa zona accidentalmente), pero siguio grabando. Fui al baño, volvi y seguia grabando. Sali a comprar, volvi y habia expulsado el dvd. Hubo un error en la grabacion, me parecio logico despues del tremendo prrrrjjj… agarre el disco y awonadamente lo volvi a insertar. Para mi no sorpresa, el SO (win Vista) no detectó el disco, asi que quise expulsarlo…. ahi comenzó el calvario. La expulsion de disco dependia del SO, y como el SO no detectaba el disco, no podia expulsar. NOOOO. Reinicié, no detectó, reinicié, se pegó, renincié, no partió, reinicie, entré a la bios, existia la unidad pero no podia expulsarla, reinicie y murio. Restauré, partio, reinicié, no pesco…y asi estuve todo el dia… Y la expulsion de emergencia?  Bueno, cuando la unidad optica es como esta

Si tuviera una imagen de frente de la bandeja, verian que parece una vagina xD

La expulsion de emergencia no se encuentra en ningun lado.

Derrota absoluta, tuve que llamar a servicio tecnico… el Lunes!

Esta historia continuará

Categorías:Uncategorized

Avance Juego

20 octubre 2009 1 Comentario

Bueno, para empezar es un poco frustrante ver q “alguien” ya publicó su juego, con varios bugs pero aún así lo hizo. Y nosotros, que sabemos q nuestro juego es técnicamente superior, aun no daaahh!.

Pero bueno, el ultimo avance no fue mucho en realidad, fue una reescritura de la función que se encarga de mover al personaje principal, se parametrizaron varias variables, como la velocidad para caminar, la aceleracion, la velocidad maxima, la velocidad de salto, la velocidad en el agua, la gravedad en el agua, etc.

El resultado ha sido mas que satisfactorio, y lo mejor es que ahora si quiero probar con otros parametros, solo debo cambiarlos en el constructor del personaje principal. Se puede decir que despues de esto la función no se tocará, asi que estamos en la final.

Otra función que se acerca a su final es la de movimiento de enemigos.  No digamos que el manejo de la IA es asombroso, simplemente el enemigo se mueve de un lado a otro a menos que detecte una colision con un muro. En ese caso, se devuelve, asi de sencillo. Pero los precipicios eran un tema que nos tenia complicados, asi que la decision fue poner tiles/bloques invisibles y detectar la colisión con ellos como si fuera un muro. No sé como se solucionará esto en otros juegos, pero a nosotros nos pareció suficiente. Esto ya esta en Beta

El tema del scroll, el loop principal de juego y las operaciones de entrada desde teclado aparentan estar en orden todas.

Pendiente queda la reescritura de las funciones de movimiento cuando el personaje principal ha tomado “Power-Ups”. Mientras tanto, aun no puedo dejar demo jajaja, temas legales xD, pero creo q pronto pondre uno que otro pedazo de codigo.

Salu2

Seguir

Get every new post delivered to your Inbox.