Archive for July, 2008

¿Ser profesor?

Thursday, July 31st, 2008

Tras seis meses de dar clases de forma casi ininterrumpida en varias academias he visto que es un trabajo que me gusta y me parece entretenido. ¿Será igual en la Universidad? No sé si los alumnos que entran a las carreras técnicas hoy en día lo hacen con un mínimo de interés, cosa que al menos sí que he visto en estos seis meses: gente con ganas de aprender, lo que te hace intentar dar lo mejor de ti mismo.

Dar clase es divertido, pensar ejercicios, intentar fomentar el descubrimiento por uno mismo. La programación no es una cosa que se cuente en dos o tres días, y tampoco se aprende a programar en 1 mes y casi ni en dos.

Bueno, otra experiencia interesante, ¿cuál será la siguiente? Por ahora tengo un par de ideas entre manos que pienso que pueden traer tela. Una de ellas es beeeeeeeep, interesante, pero quizás más lo es beeeeeeeeep. Como siempre, claro como el agua ;-)

Cita lúcida

Monday, July 14th, 2008

¿Qué es lo mejor de que te toque la lotería después de matar a alguien querido?

… que te das cuenta de que era un sueño.

PHP_Incomplete_Class

Monday, July 14th, 2008

Hoy toca un tema de PHP duro, black metal que dirían algunos. Dándole caña al PHP con los alumnos, hemos encontrado un error de esos que parecen inexplicables, pero que al final tienen explicación. Realmente creo que nunca he encontrado un bug de PHP, al menos un bug bug, ya que esto podría considerarse como, al menos, falta de información útil. No he encontrado nada de esa información útil en castellano, así que vaya, seamos los primeros, allá vamos.

Pues bien, si utilizas la variable $_SESSION para almacenar objetos, y te encuentras al recuperarlo con algo como: Error”__PHP_Incomplete_Class”. Es que ha sucedido un problema en la deserialización, osea, en el proceso de convertir un objeto de una dato binario a algo en memoria, con sus variables, arrays, etc… El tema es que, si cuando la deserialización tiene que ser realizada, el intérprete no sabe de qué tipo de datos es el objeto, no tiene ni idea de cómo hacerlo. Por tanto, esto se soluciona de dos formas:

  1. Mandando todo al garete
  2. Incluyendo la definición de la clase (normalmente a través de un include) ANTES del session_start(). Ten en cuenta que antes de un session_start (o un header) no puede haberse sacado NADA por stdout. Si en el archivo en el que se define la clase se muestra algún carácter (esos echo $query, o espacios antes o después de las etiquetas de php) PHP nos voceará con el tan manido “headers already sent”.

Conclusiones, o conclusions que dirían los ingleses, hoy en día con estos lenguajes interpretados tan maravillosos parece que ellos lo hacen todo por nosotros, pero hay casos en los que o bien no son tan listos como deberían, o les creemos más listos de lo que son. Y sí, quizás PHP ante un proceso de deserialización debería analizar el script a ver si se va a incluir la clase… De cuando en cuando es cuando uno se plantea “¿es PHP un lenguaje poco serio?”. Pues seguramente sí, pero ahí bastante de su gracia.