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
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
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
Primeros dias en ImageMaker (2da Parte)
…..”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
Primeros dias en ImageMaker
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.
- Grabar el dvd en mi notebook estando yo acostado
- Cargar la iso directamente desde mi disco externo
- 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á
Avance Juego
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