IE y sus salidas de estandar…

Estoy leyendo un libro de AJAX y me hace gracia que cuanto más se complica el tema, más incompatible es Internet Explorer (7 y anterior según el libro…) con el estandar. ¡Cuánto bien nos harían a los desarrolladores los señores de microsoft si se molestaran en seguir los estandares y dejaran de inventarse nombres para todo…

Pensando en esto me he acordado de esta canción:

VN:F [1.9.3_1094]
Vote this post!
Rating: 10.0/10 (1 vote cast)

CSS y maquetación

O como muchos dicen: “maquetar con divs”.

Sigo aprendiendo de este tema del CSS y la programación web y la verdad es que impresionante la de cosas que se pueden hacer y lo avanzado que está el contenido multimedia en la web. Para muestra un botón:  en Zengarden podéis ver cómo un mismo contenido puede mostrarse de formas muy diferentes sin alterarlo lo más mínimo, simplemente cambiando sus hojas de estilo. En desarrolloweb podéis encontrar un tutorial sobre este tema.

Mientras otros sectores profesionales siguen acumulando papeles y manteniendo sistemas de información y organización de décadas atrás, en la informática parece que solo pensamos en accesibilidad, imagen, reutilización, etc. Esto está bien por un lado, pero por otro, al salir del mundo virtual en el que muchos viven es extraño ver tanta diferencia, ver el tamaño de la brecha digital.

VN:F [1.9.3_1094]
Vote this post!
Rating: 0.0/10 (0 votes cast)

En defensa de los derechos fundamentales en internet

Ante la inclusión en el Anteproyecto de Ley de Economía sostenible de modificaciones legislativas que afectan al libre ejercicio de las libertades de expresión, información y el derecho de acceso a la cultura a través de Internet, los periodistas, bloggers, usuarios, profesionales y creadores de internet manifestamos nuestra firme oposición al proyecto, y declaramos que…

1.- Los derechos de autor no pueden situarse por encima de los derechos fundamentales de los ciudadanos, como el derecho a la privacidad, a la seguridad, a la presunción de inocencia, a la tutela judicial efectiva y a la libertad de expresión.

2.- La suspensión de derechos fundamentales es y debe seguir siendo competencia exclusiva del poder judicial. Ni un cierre sin sentencia. Este anteproyecto, en contra de lo establecido en el artículo 20.5 de la Constitución, pone en manos de un órgano no judicial -un organismo dependiente del ministerio de Cultura-, la potestad de impedir a los ciudadanos españoles el acceso a cualquier página web.

3.- La nueva legislación creará inseguridad jurídica en todo el sector tecnológico español, perjudicando uno de los pocos campos de desarrollo y futuro de nuestra economía, entorpeciendo la creación de empresas, introduciendo trabas a la libre competencia y ralentizando su proyección internacional.

4.- La nueva legislación propuesta amenaza a los nuevos creadores y entorpece la creación cultural. Con Internet y los sucesivos avances tecnológicos se ha democratizado extraordinariamente la creación y emisión de contenidos de todo tipo, que ya no provienen prevalentemente de las industrias culturales tradicionales, sino de multitud de fuentes diferentes.

5.- Los autores, como todos los trabajadores, tienen derecho a vivir de su trabajo con nuevas ideas creativas, modelos de negocio y actividades asociadas a sus creaciones. Intentar sostener con cambios legislativos a una industria obsoleta que no sabe adaptarse a este nuevo entorno no es ni justo ni realista. Si su modelo de negocio se basaba en el control de las copias de las obras y en Internet no es posible sin vulnerar derechos fundamentales, deberían buscar otro modelo.

6.- Consideramos que las industrias culturales necesitan para sobrevivir alternativas modernas, eficaces, creíbles y asequibles y que se adecuen a los nuevos usos sociales, en lugar de limitaciones tan desproporcionadas como ineficaces para el fin que dicen perseguir.

7.- Internet debe funcionar de forma libre y sin interferencias políticas auspiciadas por sectores que pretenden perpetuar obsoletos modelos de negocio e imposibilitar que el saber humano siga siendo libre.

8.- Exigimos que el Gobierno garantice por ley la neutralidad de la Red en España, ante cualquier presión que pueda producirse, como marco para el desarrollo de una economía sostenible y realista de cara al futuro.

9.- Proponemos una verdadera reforma del derecho de propiedad intelectual orientada a su fin: devolver a la sociedad el conocimiento, promover el dominio público y limitar los abusos de las entidades gestoras.

10.- En democracia las leyes y sus modificaciones deben aprobarse tras el oportuno debate público y habiendo consultado previamente a todas las partes implicadas. No es de recibo que se realicen cambios legislativos que afectan a derechos fundamentales en una ley no orgánica y que versa sobre otra materia.

Este manifiesto, elaborado de forma conjunta por varios autores, es de todos y de ninguno. Si quieres sumarte a él, difúndelo por Internet.

VN:F [1.9.3_1094]
Vote this post!
Rating: 0.0/10 (0 votes cast)

Tutorial de editor de juegos 2D

Leyendo y siguiendo enlaces he llegado hasta este fantástico tutorial sobre cómo hacer un editor de niveles para juegos 2D en C++. No serían niveles tileados sino a base de imágenes y texturas, más libres. Muy instructivo y divertido, al final se construye una herramienta bastante potente, solo le quedaría añadir algunos items y enemigos y tendríamos un nivel completo :)

In game map editor in C++

VN:F [1.9.3_1094]
Vote this post!
Rating: 0.0/10 (0 votes cast)

Primeros pasos con C# y XNA

Estoy retomando XNA de forma independiente y creo que es un buen tema para el blog. Mientras encuentro trabajo, cosa que está tomando más de lo que esperaba, voy a tratar de nuevo de embarcarme en el mundo de XNA y el desarrollo de un juego independiente. Ya tenía algunos conocimientos, pero para refrescarlos nada mejor que repasar desde el principio :)

Y para eso recomiendo encarecidamente este enlace: Application Model Overview. En él se explica brevemente la estructura básica de un juego y algunos datos sobre la velocidad de actualización y demás… Al final de la página viene un enlace a cómo hacer el primer proyecto. Así comenzaremos desde cero, sabremos lo que estamos haciendo y no nos despistaremos con 3D, físicas y otras cosas divertidísimas de los engines y ejemplos, pero que nos pierden y no nos enseñan realmente a hacer un juego desde cero o a entender las bases de XNA.

Otro día contaré algo más, como por qué elegir XNA o como van mis avances ^^.

VN:F [1.9.3_1094]
Vote this post!
Rating: 0.0/10 (0 votes cast)

Por qué usar Software Libre

O al menos por qué usarlo en las administraciones del estado. De eso va el artículo que enlazo abajo. Aunque lo que dice el Ministro de Formosa es extensible a muchos ámbitos de la vida personal. Cuando usamos software privado dependemos de las decisiones de las empresas que nos lo proveen en cuando a actualización, condiciones de uso, conocimiento de su funcionamiento, derechos que cedemos…

La trampa tecnológica cada vez es mayor y más intrincada, ¿vencerá en el futuro el software libre, o seguirán decidiendo por nosotros las empresas privadas?

“El desarrollo tecnológico, nunca es neutral” – Disertación ofrecida por el Juez Doctor Ariel Coll, Ministro del Supremo Tribunal de Justicia de la provincia de Formosa

VN:F [1.9.3_1094]
Vote this post!
Rating: 10.0/10 (1 vote cast)

La documentación, esa gran desconocida. I

Cuando trabajas en un grupo de desarrollo en un proyecto largo te empiezas a dar cuenta de algunas cosas. Recuerdas esas clases en las que los profesores te decían que era importante documentar el código. Te acuerdas de sus consejos sobre mantener el código ordenado y utilizar nombres de variables legibles. Y con más frecuencia de la que quisieras, te acuerdas de la madre de Mengano.

El otro día leí una máxima para programadores que me encantó:

Write your code as if the next guy to maintain it is a homicidal maniac who knows where you live

(by Kathy Sierra and Bert Bates)

Me parece un gran consejo y es que parece que nadie piensa jamas que la documentación y el código correcto sea una prioridad. Hasta que le toca a él mantener el código de otro.

Como ejemplo veremos una pequeña porción de código. Es un algoritmo que me encanta y que ilustra muy bien lo que quiero decir:

void quicksort(int array[M], int in, int f){
	int pv, i, j, m;
	bool hc;

	if(in < f){
		pv = array[in];
		i = in+1;
		j = f;
		hc= true;
		while(hc){
			while((array[i] >= pv)&&(i < f )) i++;
			while((array[j] < pv)&&(j > im)) j–-;

			if(i < j) interc(array[i], array[j]);
			else hc= false;
		}         

		if(array[j][0] > pv) interc(array[j], array[in])

		quicksort(array, in, j-1);
		quicksort(array, j+1, f);
	}
}

Eso de ahí arriba es el Quick Sort. Desde luego no se entiende nada. No hay comentarios, las variables estan nombradas con una o dos letras, está pobremente sangrado… En definitiva, e programador no se molestó mas que en que funcionara, cuanto tenga que corregir errores o cuando alguien tenga que analizar éste código su madre será recordada junto a esquinas y callejones oscuros… Sin embargo, esto puede evitarse, este código puede mejorarse de forma que todo el mundo entienda qué es lo que el programador quería hacer:

/* Quicksort: El algoritmo quicksort consiste en ordenar
un array mediante recursividad. Esta versión del algoritmo toma como pivote el dato en la
primera posición del array y luego lo coloca en su sitio.
Argumentos:
int individuos[M] -> el array a ordenar
int inicio -> primera posición de la parte del array a ordenar
int fin -> última posición de la parte del array a ordenar */
void quicksort(int individuos[M], int inicio, int fin){
	int pivote, i, j, mitad;
	bool hayCambio;

	//caso base: si inicio>=fin hemos terminado con esta sección, no hacemos nada
	if(inicio < fin){
		pivote = individuos[inicio];
		i = inicio+1;
		j = fin;
		hayCambio = true;

		while(hayCambio){

                        //busca un elemento mayor que el pivote por debajo de él
			while((individuos[i] >= pivote)&&(i < fin )) i++;

                        //busca un elemento menor que el pivote por encima de él
			while((individuos[j] < pivote)&&(j > inicio)) j–-;

			if(i < j){ //intercambiamos las casillas
				intercambia(individuos[i], individuos[j]);
			}else{
				hayCambio = false;
			}
		}         

		//ponemos el pivote en su posición
		if(individuos[j][0] > pivote){
			intercambia(individuos[j], individuos[inicio])
		}

		//llamadas recursivas para las dos mitades
		quicksort(individuos, inicio, j-1);
		quicksort(individuos, j+1, fin);
	}
}

Puede que sigáis sin comprender por qué funciona el quicksort: no os preocupéis, es normal. Lo importante es que aun así, ahora habréis podido comprender que pretende hacer cada parte del código, para que sirve esta función y que significa cada variable. La diferencia creo que es bastante sustancial, pero pronto veremos más ejemplos de por qué documentar ^_^

VN:F [1.9.3_1094]
Vote this post!
Rating: 0.0/10 (0 votes cast)

Útil herramienta para webmasters

Aun no he podido utilizarla en profundidad, todavía estoy aprendiendo de todo esto de CSS, XML, RSS y demás. Pero me ha encantado este plugin de mozilla para poder ojear TODA la información sobre una página web de forma interactiva y sin tener que estar descargando todo. Puedes ver junto a cada imagen su nombre, tamaño y peso. Poniendo el ratón sobre los distintos elementos de la página te indica en qué archivo CSS está la etiqueta que define el aspecto de ese elemento. Puedes ver todos los enlaces, resaltar aspectos de la página, validarla, ver el código fuente, las cookies… y en definitiva toda la información sobre la página.

Una herramienta de gran utilidad tanto para curiosear y aprender de nuestras páginas favoritas como para validar y testear la propia :) Se llama Web Developer y podéis encontrarla AQUÍ.

VN:F [1.9.3_1094]
Vote this post!
Rating: 0.0/10 (0 votes cast)

¡Hola mundo!

No podía comenzar el blog con otra frase más adecuada. Tras el abandono de Deadchannel, finalmente me he decidido a comenzar otro blog que espero que sea más útil. PorAmorAlCódigo nace como excusa para trastear, pero con el objetivo oficial de contar mis avances como programador.

Llevo varios días pensando qué podría en este blog, ¿tutoriales?, ¿enlaces?, ¿artículos? o… ¿qué?. Finalmente y viendo la enorme cantidad de tutoriales y documentación de que disponemos, he llegado a la conclusión de que el problema no es la falta de información. No hace falta otro redactor mediocre que escriba tutoriales. Hay de sobra, simplemente a veces no sabemos donde están. Por eso el objetivo final es ir contando mi experiencia, proporcionar los enlaces a documentación y herramientas que me parezcan más interesantes y responder todas las dudas que queden a mi alcance. Para continuar la declaración de intenciones, pretendo que la frecuencia de publicación sea de al menos un par de veces por semana, aunque sea para contar qué he aprendido en esos días o colgar un enlace interesante.

Y para que no quede todo en palabras, empecemos a hablar un poco de programación ;)

Esta última semana volví a echarle un vistazo al servicio de hosting que contraté hace un par de meses por cuatro perras en una oferta en 1and1.  Tiene un montón de herramientas propias para crear un blog, una tienda, una gallería, etc. Pero la verdad es que, al menos con el servicio básico, son una mierda. Así que me decidí a mirar como era eso de instalar wordpress y me ha sorprendido lo fácil y completo que es. En media hora puedes tener tu wordpress funcionando, totalmente personalizable y ampliable y con un servicio de administración que hace que te rías de los de los blogs normales (todo en AJAX, muy bonito y lleno de opciones…). Por ahora estoy bastante contento con el aspecto y los extras del blog, pero por supuesto, quiero saber vuestra opinión, ¿Qué os parece?

VN:F [1.9.3_1094]
Vote this post!
Rating: 9.3/10 (3 votes cast)
Subscribe to RSS Feed