Archive for April, 2009

Una consecuencia de los lenguajes no tipados

Esto va dedicado a todos aquellos que siempre vuelven a preguntarme en qué pelotas trabajo. Aquí tenéis un ejemplo, espero que por fin quede claro:

El problema de los lenguajes no tipados es que te puedes encontrar con errores tan sutiles como este. Validando un precio (básicamente un número), el programa hacía lo siguiente:

“123″ => Correcto
“-123″ => ERROR!
“0″ => Correcto pero no se usa
“” => Correcto pero no se usa
“123asd” => ERROR!
“asd” => Correcto pero no se usa                 <<<<<<===== WTF!?!?!?!

Debería haberme escupido un error en el último caso!
Trazando el código me encuentro que se comprueba y pone a cero tal que así:

if (isset ($this->price) && $this->price == 0) $this->price = NULL;

Por qué entra en el if cuando “asd” es claramente diferente a 0?
Porque en PHP, al estar comparando una cadena con un entero, se intenta hacer una conversión emplícita a entero de la cadena y al no poder, queda el if tal que asina:

if (isset ($this->price) && NULL == 0) $this->price = NULL;

Y ese NULL==0 se evalúa a verdadero por las reglas de comparación de PHP.
Vamos que he estado dándole vueltas un rato a esto, para que ahora la solución se base en añadir un carácter convirtiendo la comparación de igualdad en una comparación de identidad:

-        if (isset ($this->price) && ($this->price == 0 || $this->type != ‘s’)) $this->price = NULL;
+        if (isset ($this->price) && ($this->price === 0 || $this->type != ‘s’)) $this->price = NULL;

, ,

No Comments

12 palabras útiles para aprender en cada idioma

Hace tiempo decidí que un idioma con menos de 50 millones de hablantes no me compensaba el esfuerzo, a menos que fuera a tenerlo presente en mi vida el tiempo suficiente.

De todas formas, he encontrado que para cada idioma, es muy útil saber como se dice un conjunto muy reducido de términos desde el primer día. Vas a estar sólo durante 2 días en un país nuevo y no tienes tiempo para empezar a conjugar nada? Esta es mi lista  personal:

  • No
  • Hola
  • Adios
  • Gracias
  • Por favor
  • Perdone
  • Izquierda
  • Derecha
  • Aquí
  • Allí
  • Cerveza (siempre útil)

Esta pequeña lista te permite empezar conversaciones con educación, entender algunas direcciones básicas que te puedan dar y por supuesto, pedir una birra en cualquier parte del mundo. Esencial.

A partir de este punto, si tienes más tiempo e interés, se puede continuar con los pronombres, los verbos ser y haber y conjugar alguna cosilla simple. Internet está lleno de recursos para esto.

, , , ,

No Comments

No son formas, son alardes

Nuevo protocolo de acción, aceptado por votación popular con vigencia desde ayer:

  1. Alguien te salta con la escusa de “Ahora es un momento muy complicado para mi”
  2. Tírale encima lo que sea que estés bebiendo en ese momento. No tienes nada? dile que espere un momento y pídelo.
  3. Dale la respuesta: Ahora sí es un momento complicado para ti”

Luchemos contra las escusas fáciles.

, ,

No Comments