Archivo de Mayo 2007

Varios

Viernes, 18 de Mayo de 2007

El que no encuentre nada raro en esta foto es que no sabe lo que es SQL:

addedsql.jpg

Visto en WTF


Y un enlace digno de portada. El mejor host que podáis conseguir. Y no es publicidad… y si no os lo creéis, miradlo vosotros: No Uptime. Con slogans tan buenos como estos:

We are constantly working to improve our server downtime.
Keeping you awake at night is our #1 priority.

Y cada vez que entras, hay un testimonio nuevo, el de ahora dice: “No Uptime used my credit card to buy porn magazines. This service is a sham!”

Estoy deseando recomendarselo a todos mis amigos.

10 años de Linux

Miércoles, 9 de Mayo de 2007

Me encantan estos gráficos temporales de evolución de software:

linux_distros_corte.png

Post original en Tu función

Corta y pega código con estilo

Lunes, 7 de Mayo de 2007

Hay veces que tenemos que copiar y pegar, pero parece que Java nos pone trabas a ellos cuando resulta demasiado evidente.
Por ejemplo, supongamos este método de una clase ficticia:

public void chorrada() {
	StringBuffer sb = new StringBuffer();
	List temporal = new ArrayList();
	for (int n = 0; n<10; n++) {
		String hola = "hola";
		sb.append(n).append(hola);
		temporal.add(sb);
	}
}

Un código absurdo, pero eso no importa. Ahora coge este código, cópialo y pégalo tres veces seguidas, así:

public void chorrada() {
	StringBuffer sb = new StringBuffer();
	List temporal = new ArrayList();
	for (int n = 0; n<10; n++) {
		String hola = "hola";
		sb.append(n).append(hola);
		sb.append(n);
		temporal.add(sb);
	}
	StringBuffer sb = new StringBuffer();
	List temporal = new ArrayList();
	for (int n = 0; n<10; n++) {
		String hola = "hola";
		sb.append(n).append(hola);
		temporal.add(sb);
	}
	StringBuffer sb = new StringBuffer();
	List temporal = new ArrayList();
	for (int n = 0; n<10; n++) {
		String hola = "hola";
		sb.append(n).append(hola);
		temporal.add(sb);
	}
}

Si tienes un IDE moderno o compilas, verás que la segunda y tercera declaración de las variables sb y temporal fallan: “Variable sb is already define in the scope”, que viene a significar como que la variable ya está definida en el ámbito actual. ¿Y cuál es ese ámbito? El código del método, pero ¿porqué? pues porque está cerrado entre sus propias llaves {}. Fíjate que la variable hola está definida también tres veces, pero no falla al compilar. Eso es porqué su ámbito son las llaves {} del bucle for.
Bueno, una manera de evitar esto es añadirle unas llaves a nuestro código, sin más. Así:

public void chorrada() {
	{
		StringBuffer sb = new StringBuffer();
		List temporal = new ArrayList();
		for (int n = 0; n<10; n++) {
			String hola = "hola";
			sb.append(n).append(hola);
			sb.append(n);
			temporal.add(sb);
		}
	}
	{
		StringBuffer sb = new StringBuffer();
		List temporal = new ArrayList();
		for (int n = 0; n<10; n++) {
			String hola = "hola";
			sb.append(n).append(hola);
			sb.append(n);
			temporal.add(sb);
		}
	}
	{
		StringBuffer sb = new StringBuffer();
		List temporal = new ArrayList();
		for (int n = 0; n<10; n++) {
			String hola = "hola";
			sb.append(n).append(hola);
			sb.append(n);
			temporal.add(sb);
		}
	}
}

Ahora cada fragmento tiene su propio ámbito, podemos definir cuantas variables que queramos dentro, que una vez finalice este ámbito definido por sus propias llaves {}, las variables desaparecerán.
Así conseguiremos copiar y pegar con estilo, sin cambios, digno de un buen código spaghetti listo para sembrar el pánico, así que usar con precaución e intentar evitarlo… pero si no hay más remedio…

Diferencias y similutes entre C# y Java

Sábado, 5 de Mayo de 2007

He encontrado en Javahispano un enlace a un artículo muy bueno donde explica con ejemplos de código, todas y cada una de las diferencias y similitudes entre C# y Java. Es un artículo ideal si conoces Java y te vas a meter a programar en C#. Puede que te ahorres unos cuantos tutoriales.

C# From a Java Developer’s Perspective

09 F9 11 02 9D 74 E3 5B D8 41 56 C5 63 56 88 C0

Sábado, 5 de Mayo de 2007



Enlace al video en YouTube

Y todo empezó aquí
Más información: