Portada Blogs Álbumes Notas Herramientas Usuarios Ayuda |
Blog de LaNsHoR (cambiar): Página Principal Entradas Historial Estadísticas |
<< Anterior | Link Permanente | Compartir en Facebook | Siguiente >> |
Entrada 1 de 10
De cara a hacer algo parecido a los álbumes de fotos de la anterior versión, en la beta, he implementado una función especial para ver las líneas de miniaturas sin salir de la página; y de paso lo he implementado también en la versión actual. Como todo, se ve mejor con un ejemplo: a falta de fotos nuevas, pongo las de la penúltima semana de mayo (la última en la que hice fotos!). Archivado en: Fotos, LoG85, Música. Entrada 2 de 10
Se lee mejor con la música de esta entrada:
Alguien se atrevió a llamarte, y acudes con tu inquina perpetua. Despiadado postre, confitura de naranja amarga, el temido desenlace se deforma en un tejido de guiones tristes. Si alguno hubo esperanzado, que intentó creerte bella, fue por inconsciencia; eres tan cruel y tan injusta... abrazas al azar con tus manos de sal, espinas y alfileres entre púas de cristal que nos devuelven y hacen sangre. Carmesí entre mis dedos, goteando por el cielo abierto hasta océano. Vil y mentirosa, que ocultas a cuantos cargas de dolor. Expones tu teatro de esperanza ante unos pocos. Ciegas con los focos de intención y conformismo a los demás. Eres angustia y vómito, propaganda rosa y blanca entre cadáveres y hedores. Invades con promesas de otros mundos e ilusiones; abandonas bajo el óbito en tu manto de inclemencia, parsimonia e indiferencia ante el auxilio. Descubro tu perfil ahora, apropiado ensayo del averno. He pensado en ti... pero la paz y el amor no hay quien se los crea. Reduces la importancia del universo hasta el papel. Me llenas de hambre y sed todos los días. Me empujas a la muerte sin descanso; me bañas en miedo, al ver cómo te comportas. Plegado ante el temor por lo que harás aquí mañana, te veo asesinar con la máxima violencia y olvidar. Archivado en: Música, Otros, Reflexiones. Entrada 3 de 10
Vamos de un mundo de certidumbres a un mundo de probabilidades. Debemos encontrar la vía estrecha entre un determinismo alienante y un Universo que estaría regido por el azar y por lo tanto sería inaccesible para nuestra razón. En un mundo donde ya no impera la certidumbre, restablecemos también la noción de valor. Sin duda en el siglo XXI veremos el desarrollo de una nueva noción de racionalidad donde razón no estará asociada a certidumbre y probabilidad a ignorancia. En este marco, la creatividad de la naturaleza y sobre todo, la del hombre, encuentran el lugar que les corresponde.
Ilya Prigogine Archivado en: Citas. Entrada 4 de 10
Como llevo un tiempo hablando mucho de juegos... no voy a romper la racha :)
(***) Más de una vez y de dos, alguien me ha escuchado reflexionado sobre de cómo grandes juegos se han echado perder por usar entornos y mundos tridimensionales en detrimento de las tecnologías 2D de las que sus secuelas hacían gala. Siempre me quejé y pensé que era por moda, porque quedaba más chulo decir "este juego es 3D", en vez de 2D, que sonaba a anticuado. Seguro que en muchos casos fue así, pero ya no generalizo tanto... ahora creo que la mayoría de juegos abandonaron el 2D por otros factores; otros factores que descubro mientras los sufro directamente, y son esos de los que quiero hablar. (***) Durante este duro mes y medio de continuado estudio, me embarqué en un mini-proyecto con el objetivo de distraerme y tener algo de ocio y disfrute: se trata de un clon de un clásico y sencillo juego, algo simple y divertido para entretenerme (programándolo, no jugándolo) entre examen y examen. El juego, por supuesto, es en 2D, y ahora... aunque aún no lo he terminado, tengo clara una cosa: es el último juego 2D que hago en mi vida. La programación 2D avanzada (algo más que mostrar una imagen por pantalla...), es bastante más compleja de lo que puede parecer, y puede consumir los mismos (o más) recursos que una aplicación 3D. Me refiero al tratamiento de imágenes en tiempo real para hacer efectos de luces, distorsiones, deformaciones y físicas en 2D. Yo, humildemente, quería entrar a explorar y aprender sobre ese mundo empezando por el juego (que tenía un diseño modular para ir convirtiéndolo en algo titánico y grandioso con el tiempo). El problema es que no sé dibujar, así que me tengo que buscar imágenes de personajes y objetos para mi juego, algo con licencia libre para poder usar sin problemas: ¿el resultado?, el 90% del tiempo dedicado al juego lo he perdido buscando sprites con licencias libres, sprites que por cierto, no he encontrado. El motivo es simple, el 99% de los artistas no quiere liberar su trabajo ni quiere que lo uses si no pagas tributos y royalties a punta pala. Esta es una posición que yo no comparto pero que respeto, pero todo mi respeto se pierde cuando leyéndolos descubro cosas como esta. Los motivos para no liberarlos son, a menudo, una cuestión de ego e inseguridad (y de técnica de dudosa efectividad para ganar dinero fácil). En el enlace anterior, es increíble la paja mental que se monta el personaje o personaja, hablando de lo caro que es licenciar tu propio trabajo... O_o (si poner tu nombre, el año, la (c) de copyright y los términos o nombre de la licencia es caro, ¿qué es para ti barato?, ¿que te paguen por licenciar?). Total: que es sorprendente cómo la gente del mundo del arte tiende a querer guardar sus obras de forma casi obsesiva. En contra, en la ciencia, la ingeniería, y sobretodo en la informática, el sentimiento de licencia libre, de compartir desinteresadamente con la humanidad tu trabajo y aportar tu granito de arena al dominio público para que cualquiera pueda aprender, modificar, estudiar, difundir e incluso comercializar y sacar rendimiento a tu trabajo (algo que tú seguramente no estabas haciendo ni ibas a hacer nunca) es más que común. Las consecuencias son claras: yo no voy a hacer más juegos 2D, dibujar se me da mal, es algo muy difícil para mi... modelando 3D y texturizando no soy ninguna maravilla, pero me defiendo y tengo más que suficiente para todos los juegos que puedo imaginar querer hacer. Consiguientemente, profundizaré y estudiaré mucho más sobre efectos 3D, shaders, motores gráficos, etc... y el mundo 2D lo olvidaré para siempre. Como yo hay toda una generación de programadores que está empezando a "odiar" todo el artwork 2D y piensa en resolverlo todo en 3D (una escena renderizada con shaders adecuados, o con técnicas de raytracing pueden competir con ilustraciones clásicas, y movimientos y deformaciones en tiempo real mediante cinemática inversa se comen a los "saltos" y las "antinaturalidades" de los sprites), esos programadores, serán los mismos que luego NO necesitarán artistas 2D en sus empresas (o los necesitarán mínimamente). Este es un caso pequeño y particular de cómo un trabajo que podía quedar muy bien va a quedar mal (al final estoy dibujándome yo los sprites). Todos esos miedos y protecciones celosas han derivado en leyes y patentes que han retrasado el progreso y el avance cultural y tecnológico del hombre: si todos pudiéramos aprovechar y explotar el trabajo de todos... cada día habría una nueva generación tecnológica y cultural. Los diseñadores, los ingenieros, los artistas, cogerían los máximos exponentes de cada área para crear productos superiores, que a su vez serían libres para que cualquiera pudiera mejorarlos aún más y más. Todo en favor del desarrollo de la noosfera. Un claro ejemplo es GNU/Linux, ¿no es una maravillosa utopía?, un mundo libre, donde la gente disfruta creando y lo hace por placer y no por orgullo de decir "yo hice esto", un mundo entero como un bazar, y no como una catedral. Así que nada... a terminar el juego con paciencia y dibujando los sprites como pueda (que serán horribles, pero serán libres). Y a los artistas privativos o que sólo liberáis mierdas y cosas a medio terminar... ¡que os den!. Archivado en: Juegos, Reflexiones. Entrada 5 de 10
Entrada 6 de 10
Haciendo la beta del log85 hace unos días, me encontré con un problema que me llevó un tiempo resolver: la creación de una clase que encapsulase las peticiones AJAX.
Sé que hay muchas librerías que hacen esto y me hubieran ahorrado el tiempo de escribir el código y de pensar cómo resolver el problema, pero como es costumbre en mi, me gusta hacerlo todo desde cero :) Lo que yo quería, básicamente, era poder algo parecido a esto: function Alertar() { alert(ajax.responseText) } var ajax=new Ajax("ajax_nota_pagina.php"); ajax.Finalizar(Alertar); ajax.Enviar("GET","?usuario=lanshor&pagina=23"); La clase Ajax (simplificada) sería más o menos así: function Ajax(url) { this.ajax=new XMLHttpRequest(); this.url=url; this.funcion; this.Finalizar=Finalizar; this.Enviar=Enviar; function Finalizar(funcion) { this.funcion=funcion; this.ajax.onreadystatechange=function() { if(peticion.readyState==4 && peticion.status==200) this.funcion; }; } function Enviar(metodo,datos) { if(metodo=="POST") { this.ajax.open("POST",this.url,true); this.ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); this.ajax.send(datos); } else { this.ajax.open("GET",this.url datos,true); this.ajax.send(""); } } } El problema es que dentro de la función Alertar, la variable global "ajax" queda fuera del ámbito en el momento de la ejecución y no está accesible. Lo primero que se nos puede ocurrir para solucionar esto es pasar a la función Alertar el objeto ajax por "referencia": desgraciadamente, si pasamos como argumento de this.funcion(this) el propio objeto this en la función Terminar (función que crea una función anónima para los cambios de estado de xmlhttprequest y que ejecuta la función del usuario sólo cuando la petición ha terminado), esta quedará también fuera de ámbito a no ser que lo pasásemos directamente a la función anónima, y además no tendríamos accesos a las variables internas de la clase. La clave está en aprovecharse de la forma particular que tiene javascript ("particular" porque pasa en muchos lenguajes interpretados) para manejar los ámbitos. El ámbito de la función Alertar NO es el ámbito en el que fue definida, es el ámbito en el que es ejecutada, y desde ese ámbito tiene acceso a las variables globales que fueron definidas en él. En este caso, la variable ajax no está en el ámbito de la propia definición de la clase Ajax, que es el ámbito de Alertar cuando va a ejecutarse, la solución ingeniosa es... añadir una variable global en la definición de la clase, y hacer que la función Alertar la reciba por parámetro. El código quedaría así: function Alertar(peticion) { alert(peticion.responseText); } var ajax=new Ajax("ajax_nota_pagina.php"); ajax.Finalizar(Alertar); ajax.Enviar("GET","usuario=lanshor&pagina=23"); function Ajax(url) { this.ajax=new XMLHttpRequest(); this.url=url; this.funcion; this.Finalizar=Finalizar; this.Enviar=Enviar; var peticion=this.ajax; var referencia=this; function Finalizar(funcion) { this.funcion=funcion; this.ajax.onreadystatechange=function() { if(peticion.readyState==4 && peticion.status==200) referencia.funcion(peticion); }; } function Enviar(metodo,datos) { if(metodo=="POST") { this.ajax.open("POST",this.url,true); this.ajax.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); this.ajax.send(datos); } else { this.ajax.open("GET",this.url datos,true); this.ajax.send(""); } } } La clase final, con el código bien escrito, tal y como la estoy usando en la beta del log85 podéis verla aquí. En concreto la estoy usando para la sección fisgonear de la beta, para cargar los posts desde la página directamente, podéis ver el código de la sección fisgonear de la beta aquí. Fijaros en las líneas 147, 148 y 149. (la 11, 10 y 9 por el final respectivamente). El funcionamiento de la sección lo podéis ver aquí, hacer click dónde pone (post X) para previsualizar los post. ATENCIÓN: el link anterior enlaza a una copia de seguridad de la beta, NO al log85 original, los datos, páginas y usuarios que aparecen son una copia anticuada de los de este log85 y los cambios de este log no se reflejan allí. Archivado en: Informática, LoG85, Programación. Entrada 7 de 10
- Julio Alonso pierde el juicio contra la SGAE: Tan surrealista como parece. Condenado por informar en su blog de que se estaba haciendo google-bombing contra la SGAE, en ningún caso haciendo apología del mismo. Atentos a los comentarios de la noticia: al parecer la SGAE también ha demandado al diario Público por publicar (valga la redundancia fonética) que iba a ser investigada por diversas irregularidades. No vamos hacia 1984, vamos a un mundo gobernado por mafias.
- El gobierno estudia el modelo francés contra el P2P: Pero eso sí, socialista y obrero... ¡tócate los pies!. - Enmienda torpedo en el parlamento europeo para obligar a tener instalado un spyware en todos los ordenadores personales para comprobar que no cometemos infracciones de copyright: esto me recuerda... ...a que el viernes, mientras iba por Panoramis, una chica se me acercó para hacerme una encuesta, al principio me negué, pero insistió un poco, y como iba sobre internet y no tenía prisa, acepté. Las preguntas eran del estilo... - ¿Vas mucho al cine?, ¿más que hace un año?. - ¿Te bajas muchas películas de Internet?. - ¿Te bajas estrenos?. - ¿Cuántas películas te compras?, ¿Cuántas tienes bajadas?. Etc. Lo sorprendente era que cuando le decía cosas como "si una película me gustase de verdad me la compraría, pero cuando me la bajo es porque no voy a comprarla en ningún caso" o "no me bajo estrenos, sólo películas que ya han salido en dvd y que tengan buena calidad" no apuntaba nada y ponía cara de desilusión. En cambio, cuando le decía que tenia XXX películas (muchas) y cosas del estilo... apuntaba con un interés espasmódico. Añado a lo de las mafias de antes, a las grandes corporaciones. Archivado en: Noticias. Entrada 8 de 10
- Record guiness de Guitar Hero: ¡¡Por fin alguien se hace la canción de Dragon Force en experto al 100%!!.
- La mejor página de internet del mundo (sólo para fans de Futurama). - Tienda de peluches de partículas subatómicas: ¡los quiero todos!. - Blog de Alberto Montt: vuelvo a poner el enlace para que veáis todas las tiras nuevas desde la última vez que lo puse: añadidlo a favoritos, una tira nueva al día. De las mejores tiras que he leído nunca: Horizonte de sucesos. - Habilidades humanas extraordinarias. - Increíble mapa de los Simpsons para Quake3. - León para zoológicos pobres. - La banda sonora de Diablo 3 compuesta por Russel Brower (compositor de Warcraft 3, World Of Warcraft y World Of Wacraft: The Burning Crusade. - Terminator 2: Resumida. Archivado en: Miscelánea. Entrada 9 de 10
Ahora sí, la verdadera canción del día:
"Meier may we be this way forever, and
Tell me lover what will become of the others?" Bones, skin, nails and flesh On a bed of lack of passion, a medievil consequence They worry you with all the talk of how you're not their kind Now i'm stealing her body and taking it home There is always one more fall Maladjusted, you must trust me darling Subsequentially, you see, you deserve more than me They bury you while wearing garments of funeral fire Now i'm stealing her body and taking it home There is always one more fall Now i'm stealing her body and taking it home There is always one more fall This will hurt you, it's killing me (this is the salt in my side) (this is the thorn in my eye) This will hurt you, and I will to, and I will Bloodlust, bloodlust, for this girl Bloodloss, bloodloss, for this boy Bloodlust, bloodlust, for this girl Bloodloss, bloodloss, for this boy, this boy Another puncture wound and once again forgive my sins This is forever Archivado en: Música. Entrada 10 de 10
Para celebrar que termino los exámenes y que los demás, o han terminado, o van a terminar poco después. Y también para despedir a Verso, que se va a USA unas semanas... este jueves cenamos en el mexicano del centro.
Propongo cenar sobre las 22:00, pero que cada uno proponga la hora que le parezca bien. Los que vayáis a venir, avisadme. Archivado en: Eventos.
|
Páginas
Puntuación
Links Estadísticas
5980 Días
2890 Visitas
25 Posts
Postea una de
cada 116 visitas Licencia
|