Clase para gestionar AJAX (GalloAjaxHandler)

Enero 8, 2009 por Gallo

Tras un tiempo tanteando la opción de publicarla aquí está, una pequeña herramienta que suelo utilizar en mis aplicaciones webs para hacer AJAX.

Consiste en una clase con básicamente los siguiente métodos:

- Constructor de XMLHttpRequest.
- Método para capturar errores.
- Método de callback que debe ser sobreescrito para gestionar la respuesta.
- Método para realizar una llamada AJAX.
- Método para recojer todos los campos de un tipo indicado de un formulario.
- Método que combina los anteriores para enviar todo el formulario.
- Método para realizar la llamada añadiendo un script de forma dinámica, este no tiene nada que ver con lso anteriores pero está incluido dado que con este se puede realizar cross-server AJAX, en caso de que queramos tener el web en un lugar y un servidor separado para gestionar el AJAX.

Y como propiedades:
- Datos enviados.
- Datos recibidos.

Podeis encontrar un par de ejemplos y el código aquí:

http://www.virtualcraft.net/widgets/gahsamples.php

También está publicado en archivos a prueba en php-hispano con los .php de ejemplos para descargar en un zip junto con el .js:

http://www.php-hispano.net/archivos-tmp/148

Harder

Diciembre 16, 2008 por Gallo

Bueno bueno, ando liadillo con la guild de WoW, ahora como oficial y RL (raid lider), hay que estar por bastantes cosillas. Tengo casi todos los otros proyectos parados, ni juegos ni nada u_u.  Habrá que plantearse algo pronto, aun tengo documentación hecha de juegos que habia pensado basados en web.

Sigo con el proyecto en el curro… un poco cansao ya pero va avanzando…  me plantearé que hacer cuando lo termine… quiza algún cambio me venga bien u_u.

No puedo con este proyecto …

Diciembre 3, 2008 por Gallo

Estoy en un proyecto del que estoy hasta los cojones, se entrega en enero y llevo un mes con el, y la verdad no sabria calcular la estimación total, ni yo, ni ningún analista de este planeta. Vamos a ponernos en situación, y a filosofar un poquito sobre la programación que se practica por aquí. Hay una serie de aplicaciones web hechas con JSPs y muchisimo javascript a pelo, es decir sin frameworks ni nada, y funcionan, de hecho hasta su mantenimiento no es tan incomodo como podia parecer, pero se está migrando todo a un framework propietario super chulo de la muerte basado en struts,

La perspectiva no parece muy mala, al fin y al cabo el framework propietario tiene sus ventajas a la hora de programar, la principal que no hace falta saber programar, el problema es que precisamente quieren que pongan a monos programando con el, debe ser por eso pasa por 300 clases para poner un hola mundo, y 300 mas para ponerlo centrado y en negrita, esto es facil de ver cuando salta una excepción no controlada y el track ocupa 5 pantallas (scroll). Lo mas insoportable del framework es que para moverte de una pantalla a otra, en linea recta perfecto, como quieras hacer un salto a otro lado, prepara tu imaginación y mogollon de rato para mapearlo todo, no basta con meterlo en sesion (StrutsContext). Dado que está pensado para ir en linea recta y palante, un simple menú que permita saltar entre las pantallas es lo mas tedioso de implementar, depende de como lo plantearas, una nueva pantalla representar modificar todas las vistas, y todos los webeans (flujos).

El otro gran quebranto es la migración, los modelos aquí son comunes en muchos proyectos, pero creeis que he podido reutilizar ni una sola clase de modelo? juas, ya me gustaria a mi, vereis, struts 1, o al menos la forma en que aquí lo utilizan, es muy bonito cuando tus modelos o beans tiene todas las propiedades como Strings, o alguna clase que implemente toString y te de su valor, como fechas etc, pues bien, aquí el colega programador super purista ya divido los datos en mogollon de clases, vease por ejemplo que un Cliente, tiene propiedades de la clase Domicilio, siendo domicilio una clase con las propiedades calle, numero, pisoPuerta, ciudad, cp, las cuales si son Strings, o si no hay suerte pueden ser de otros tipos propios. Esto va fatal para trabajar aquí, la cosa es que estos modelos no son del proyecto en JSPs, son de proyectos YA MIGRADOS!!, acojonante.

Total todos los modelos y beans nuevecitos de mi puño y letra, lo mas fácil ha sido hacerlo por pantallas, al ser una serie de formularios (como todo vamos) pues un bean con todos los datos de la pantalla, que es lo que le mola para luego pintar o recojer los datos (sobretodo recojerlos), en serio no soy yo, es que al fwork le va mejor. Total, aun por la mitad estoy añadiendo nuevas propiedades a estas clases.. pq? bueno, vayamos a la información de la que dispongo.

Acceso parcial a la aplicación original: pues como no podia ser de otra manera tiene fallos, sobretodo de javascript y como solo funciona en IE y es bastante especial se complica mucho pasar de pantalla, asi que no puedo ver ni todos los pasos ni hacer pruebas.

Screenshots de las pantallas actuales: posiblemente lo mas util del proyecto, ya que yo no consigo acceder a todo que mejor que poder ver como serian esas pantallas, estas screenshots han servido para reproducir las pantallas y crear los modelos.

El analisis de requisitos: vaya, ahora es cuando muchos pensaran que seré un inutil por no saber aprovechar este documento, amigos, el que consiga aprovechar este documento que me lo diga, es el analisis de requisitos original, solo le falta estar escrito en castellano antiguo, 27 paginas en las sobra redundancia, y creo que muy mal separado, si implemento un método que valida algo, quiero cerrarlo y punto, no quiero pasar 3 paginas y tener que editarlo, y pasar 3 mas, borrar lo anterior y volverlo a editar y si me lo leyera entero primero, no serviria, demasiados detalles que no recordaria, asi que hay que seguirlo paso a paso.

Con este material estoy lidiando, siguiendo el documento que me proporcionaron y que cada vez me cansa mas, sobretodo esos requisitos concretos de cada cliente, vale son requisitos y hay que ponerlos, pero joder, seguro que habia una forma mejor de indicarlo.

Para rematarlo la base de datos es comun para TODOS los proyectos en desarrollo, una fantastica db2 que debió inventarse antes que el fuego y que no para de ser tocada por todo cristo, lo cual conlleva a que en medio del desarrollo deje de funcionar la consulta de datos… genial vamos. Desde luego tengo algunas ideas de como mejorarlo, pero a estas alturas ya es chungo, no voy a volver a empezar.

Voy a citar un texto que me explico un compañero, es de un libro de “teoria de programación”, y creo que es muy acertado:

Si en un barrio, se rompe una ventana y nadie la repara, a la larga la gente que pase por ese barrio y vea la ventana pensaran que en este barrio no se cuida nada, así que el siguiente que pase no se molestará en tirar su lata de cocacola a la papelera, la dejará por ahí, y si se rompe otra ventana tampoco la repararán, y el siguiente que pase aun le parecera que lo cuidan menos ese barrio. Con esto quiero decir que los proyectos de software son como ese barrio, si hay un pegote de mierda enorme en los requisitos, no va a er el programador el que lo limpie, y dejará también pegotes en su código, y el siguiente programador que venga detras de el, cuando vea tal spaguetti hará lo mismo, haciendo la bola de mierda mas grande, hasta que llega un dia que hay que migrar la aplicación, y si se reaprovecha la basura que habia antes, pues acabará pasando lo mismo…, mas spaguetti, ni por muchos frameworks propietarios ultraproductivos que se utilicen, la cosa no va a mejorar por que sí a no ser que se replantee bien desde sus raices.

Fin del /cry.

Crisis: Artículo del 98 de Arturo Pérez-Reverte

Noviembre 28, 2008 por Gallo

Artículo del escritor español Arturo Pérez-Reverte, publicado en `El Semanal’ el 15 de noviembre de 1998, y que ahora, diez años después, parece hecho ex profeso para esta crisis.
****

Usted no lo sabe, pero depende de ellos. Usted no los conoce ni se los cruzará en su vida, pero esos hijos de la gran puta tienen en las manos, en la agenda electrónica, en la tecla intro del computador, su futuro y el de sus hijos.

Usted no sabe qué cara tienen, pero son ellos quienes lo van a mandar al paro en nombre de un tres punto siete, o un índice de probabilidad del cero coma cero cuatro.

Usted no tiene nada que ver con esos fulanos porque es empleado de una ferretería o cajera de Pryca, y ellos estudiaron en Harvard e hicieron un máster en Tokio, o al revés, van por las mañanas a la Bolsa de Madrid o a la de Wall Street, y dicen en inglés cosas como long-term capital management, y hablan de fondos de alto riesgo, de acuerdos multilaterales de inversión y de neoliberalismo económico salvaje, como quien comenta el partido del domingo.

Usted no los conoce ni en pintura, pero esos conductores suicidas que circulan a doscientos por hora en un furgón cargado de dinero van a atropellarlo el día menos pensado, y ni siquiera le quedará el consuelo de ir en la silla de ruedas con una recortada a volarles los huevos, porque no tienen rostro público, pese a ser reputados analistas, tiburones de las finanzas, prestigiosos expertos en el dinero de otros. Tan expertos que siempre terminan por hacerlo suyo. Porque siempre ganan ellos, cuando ganan; y nunca pierden ellos, cuando pierden.

No crean riqueza, sino que especulan. Lanzan al mundo combinaciones fastuosas de economía financiera que nada tienen que ver con la economía productiva. Alzan castillos de naipes y los garantizan con espejismos y con humo, y los poderosos de la Tierra pierden el culo por darles coba y subirse al carro.

Esto no puede fallar, dicen. Aquí nadie va a perder. El riesgo es mínimo. Los avalan premios Nóbel de Economía, periodistas financieros de prestigio, grupos internacionales con siglas de reconocida solvencia.

Y entonces el presidente del banco transeuropeo tal, y el presidente de la unión de bancos helvéticos, y el capitoste del banco latinoamericano, y el consorcio euroasiático, y la madre que los parió a todos, se embarcan con alegría en la aventura, meten viruta por un tubo, y luego se sientan a esperar ese pelotazo que los va a forrar aún más a todos ellos y a sus representados.

Y en cuanto sale bien la primera operación ya están arriesgando más en la segunda, que es el chollo, e intereses de un tropecientos por ciento no se encuentran todos los días. Y aunque ese espejismo especulador nada tiene que ver con la economía real, con la vida de cada día de la gente en la calle, todo es euforia, y palmaditas en la espalda, y hasta entidades bancarias oficiales comprometen sus reservas de divisas. Y esto, señores, es Jauja.  Y de pronto resulta que no. De pronto resulta que el invento tenía sus fallos, y que lo de alto riesgo no era una frase sino exactamente eso: alto riesgo de verdad.

Y entonces todo el tinglado se va a tomar por el saco. Y esos fondos especiales, peligrosos, que cada vez tienen más peso en la economía mundial, muestran su lado negro. Y entonces, ¡oh, prodigio!, mientras que los beneficios eran para los tiburones que controlaban el cotarro y para los que especulaban con dinero de otros, resulta que las pérdidas, no.

as pérdidas, el mordisco financiero, el pago de los errores de esos pijolandios que juegan con la economía internacional como si jugaran al Monopoly, recaen directamente sobre las espaldas de todos nosotros.

Entonces resulta que mientras el beneficio era privado, los errores son colectivos, y las pérdidas hay que socializarlas, acudiendo con medidas de emergencia y con fondos de salvación para evitar efectos dominó y chichis de la Bernarda. Y esa solidaridad, imprescindible para salvar la estabilidad mundial, la paga con su pellejo, con sus ahorros, y a veces con su puesto de trabajo, Mariano Pérez Sánchez, de profesión empleado de comercio, y los millones de infelices Marianos que a lo largo y ancho del mundo se levantan cada día a las seis de la mañana para ganarse la vida.

Eso es lo que viene, me temo. Nadie perdonará un duro de la deuda externa de países pobres, pero nunca faltarán fondos para tapar agujeros de especuladores y canallas que juegan a la ruleta rusa en cabeza ajena.

Así que podemos ir amarrándonos los machos. Ése es el panorama que los amos de la economía mundial nos deparan, con el cuento de tanto neoliberalismo económico y tanta mierda, de tanta especulación y de tanta poca vergüenza.

*****

Javascript remoto

Noviembre 19, 2008 por Gallo

Bueno los entendidos en el tema ya sabrán de que hablo, Javascript, nuestro código de programación web en el lado del cliente, jeje. Pongamonos en situación, resulta que mirando una herramienta que proporciona WoWHead para consultar datos de items, quests y otros elementos del WoW, y mostrarlos en un tooltip en tu página web, me ha entrado la curiosidad por saber como hacen que desde mi página puda consultar su base de datos, claramente eso no era AJAX convencional luego explicaré por qué.

Me he puesto a mirar su código y una vez encontrados los elementos que realizan dicha consulta he buscado un poco de documentación, no ha costado mucho dar con algunos ejemplos mas claros, dado que su código está “semiencriptado”, o mas bien todas las funciones y variables han sido renombradas a cadenas de 2 caracteres, esto dificulta la comprensión del código claro, pero es lo mejor en este tipo de aplicaciones dado que ocupan mucho menos, seguramente ellos tengan una versión original, embellecida, con otros nombres y con comentarios. Con un poco de paciencia,  sin la ayuda que nos proporcionaria la semantica en este caso, se puede averiguar como funciona.

Dicho esto explico: son muchas las aplicaciones que utilizan ya la tecnologia AJAX para hacer llamadas al servidor de forma que el cliente no lo vea, pudiendo consultar o guardar datos sin actualizar la página.

Existen varias formas de hacer AJAX dado que no se considera ni un código, ni una clase, ni una serie de funciones, aunque quizá el mas usual sea el XHR (XMLHttpRequest, o el equivalente en ActiveX). Ocurre que con este objeto no podemos hacer AJAX de forma remota, es decir, solo podemos hacer request hacia nuestro propio dominio. Sin embargo hay otra forma de hacerlo contra otros dominios, aunque lo que obtendremos siempre será código javascript para ejecutar.

Como funciona? Miy simple, en html tenemos el elemento <script>, este puede ser usado o bien para escribir código javascript en nuestra página, o para llamar a un archivo .js con dicho código, este archivo puede estar en otro servidor, la técnica consiste en agregar dinamicamente con el propio javascript un elemento script a nuestro head, cuya propiedad src apuntará a un js que puede o no estar en nuestro servidor, lo bueno es que obviamente podemos apuntar o bien a un js estático, o a una página dinámica generada en el servidor, enviando así cualquier consulta que queramos, también podemos pasar parámetros por GET con esta fórmula.

Veamos el ejemplo de código:

function llamadaServidor(urlJsRemoto) {
	var head = document.getElementsByTagName('head').item(0);
	var anterior =
        document.getElementById('ultimoScriptCargado');
	if (anterior ) head.removeChild(anterior );

	script = document.createElement('script');
	script.src = urlJsRemoto;
	script.type = 'text/javascript';
	script.defer = true;
	script.id = 'ultimoScriptCargado';
	void(head.appendChild(script));
}

La funciónn agregará un script al head llamando a “urlJsRemoto”, ademas borrará siempre el anterior script cargado, para ir limpiando scripts que ya hemos utilizado.

Link de referencia en inglés: http://www.dotvoid.com/2002/08/remote-scripting-with-javascript/

WotLK está cerca

Noviembre 12, 2008 por Gallo

Como jugador del WoW que soy no podia dejar de comentar que pronto estará disponible la expansión, exactamente a partir del dia 13 de este mes, pero ya hay parte de el disponible, se puede descargar desde la página oficial y también esta disponible la activación de la cuenta de expansión, esto será para los que consiguieron una cd-key del juego ya, vease ganadores de algún concurso, o enchufados jeje.

Descarga del cliente:

http://www.worldofwarcraft.com/account/download/clients/pc/InstallWoW.exe

Por otro lado Blizzard ha anunciado al intención de unificar las cuentas de sus juegos online, imagino que entonces se utilizará una sola cuenta para entrar en el WoW, diablo 3, starcraft 2 y posteriores juegos, del tipo “Battle.net account”, las actuales son “WoW account”, lo que supondria registrar cd-keys diferentes en esa cuenta, algo parecido a las cuentas de Steam, donde registras diferentes juegos para una sola cuenta.

Pronto empezarán las nuevas andanzas en Northrend :P .

Uninspired lone developer

Noviembre 6, 2008 por Gallo

No soy partidario de los títulares en  inglés, pero este sonaba bien jeje. Pues ocurre que sufro una desinspiración total respecto al tema de desarrollar videojuegos, el tema es que llegar a casa despues de estar 8 horas y media programando, le quitan a uno las ganas de programar del todo :\, no solo de programar, también de apuntar y analizar ideas, así que muchas se me están quedando en el olvido.

Hay dos opciones, o bien hacer un web based de estrategia, utilizando sobretodo php, o bien hacer un juego de escritorio (o applet), en java, con gráficos 2D en el que se maneje programación de un game loop, gráficos, física, etc…

Es posible que tire por lo del juego en java, encontré un motor para 2D muy fácil de utilizar, a ver que sale :P .

Donde está la musa que ha de inspirarme? ;) .

Panellets!

Octubre 30, 2008 por Gallo

Que ricos son los panellets, este dulce típico de Catalunya y que tradicionalmente preparamos para el dia de todos los santos, 1 de noviembre. Me encantan, son un peligro en exceso pero esque están buenísimos.

Hace años que no preparo panellets, siempre los compro, a ver si se repite la azaña y alguien se digna a intentar preparar unos cuantos, de piñones sobretodo que son mis favoritos :P , también es muy divertido hacerlos con colorante para que sean verdes por ejemplo jejeje, con una cereza, o de coco :P .

How to hacer panellets: http://www.directoalpaladar.com/2006/10/30-como-hacer-panellets

Y a mi qué 20minutos?

Octubre 22, 2008 por Gallo

Pues el viernes de la semana pasada, navegando por la web del 20 minutos, Nekeki me mostró una noticia de gran trascendencia a nivel internacional:

http://www.20minutos.es/noticia/420530/0/ladron/nintendo/ds/

Un ladronzuelo roba una nintendo DS a una pobre e inocente niña! desde luego terrible pero, espera, esto no pasa cada dia montones de veces? si… y a quién le improta? Pues como mucho al entorno de la niña en cuestión, vamos que la noticia no es noticia, es mas bien una anecdota que se deben contar las vecinas… felicitaciones al becario que ha escrito tal notición, es mas por lo visto la foto que habia antes era una foto antigua de una niña, … lo mejor son algunos comentarios:

- Los videojuegos, que inducen a la violencia y a cometer crímenes (ironía)

- ATENCIÓN NOTICIA! La cajera del super me da mal el cambio de la compra.

- El pulitzer para 20minutos.es. Se lo merecen.

- Pues vaya mierda, si hubiera robado una PSP…

- 20 minutos es lo que durarían vuestros becarios trabajando en otros periódicos.

- Tremenda noticia, se me acaban de quitar las ganas de ir a Londres. Si es que en el extranjero hay mucho vicio.

- Scotland Yard ya ha anunciado que la búsqueda del malandrín que le ha robado la Nintendo DS a esta pobre niña será de prioridad absoluta y que por el momento se suspenden todas las investigaciones contra el terrorismo internacional con base en el Reino Unido.

- ”un hombre de 33 años si pilla la mano cerrando la ventanilla del coche”

- Esto debe ser algún estudio de mercado para ver qué nos interesa a los lectores (las gilipolleces).

- Esto aleja a Fernando Alonso de Ferrari

- Última hora: El mundo es mundo.

- A mi hijo le han robado unos cromos, ¿Llamo a la CNN?

- Sóis la vergüenza del periodismo.

- waw…. el primer robo que hay en europa…

- Es culpa de Zapatero…

- Noticia URGENTE: “Un intelectual lee por error el 20 Minutos y vomita sobre un bebé de pocos meses”

El juego de Ender

Octubre 20, 2008 por Gallo

El juego de Ender de Orson Scott Card, un libro que acabé de leer el viernes, muy ligero, pero lleno de la mejor ciencia ficción que creo haber visto, y fue escrito en 1977.

Sinopsis ultraresumida: En una socidedad futura amenazada por una raza de extraterrestres llamados insectores con la que ya habian tenido lugar 2 batallas, y se preparan para “prevenir” la tercera. Para hacerlo escojen a los niños con mejores aptitudes de la tierra y los entrenan en la Escuela de Batalla para llegar a ser los mejores soldados y mandos del ejercito. Ender es uno de estos niños, siendo un caso excepcional ya que ha nacido como tercer hijo en esta sociedad donde solo se permite tener 2 hijos. Sus hermano y hermana son igual de excepcionales que el pero con una personalidad muy diferente. A Ender le espera una infancia difícil en la Escuela de Batalla, donde aprenderá a desarrollar las mejores estrategias para vencer a los insectores.

Un relato buenísimo de los que te va atrapando. Cabe mencionar las similitudes con otras obras del genero, sobretodo la película Starship Troopers, una adaptación de una novela escrita antes que el juego de Ender y que se parece demasiado en algunos detalles, pero muy diferente en la historia y sobretodo la psicologia de las diferentes facciones del libro.

Altamente recomendado!!