Archivo para junio de 2007

Se busca ¿hacker?

Desde Menéame veo que ha salido una noticia en Gumtree buscando a un «hacker» para mejorar la seguridad de las aplicaciones Web. Ofrecen un salario competitivo y un buen lugar de trabajo.

Pero claro, quieren un hacker y para ello han puesto un pequeño reto. Han dicho que los interesados pueden enviar su currículum a la siguiente dirección (se sale de la página así que he metido algún que otro espacio; quítalos si quieres jugar):

43616c6c204a756c69616e206f6e203032302 0373932342036363232206f7220656d61696c 206a756c69616e406c6f6e7265732e636f6d

Pero claro, codificada mediante algún raro formato para que sólo los verdaderos hackers envíen las ofertas.

Bueno, no sigas leyendo si quieres hacerlo por tí mismo…

(más…)

jQuery

Ahora que estamos haciendo aplicaciones Web en la empresa, se nos hace necesario incluir Javascript para mejorar la experiencia del usuario (¡uy!, de qué me suena a mí esta frase…).

Bueno, el caso es que para facilitar la interactividad de los usuarios con las aplicaciones, incluimos Javascript, por ejemplo para editar una línea de pedido, cuyos datos pasan de estar en una tabla a un formulario en la misma página; o para seleccionar un cliente donde sale una ventana emergente (sí, ¡una ventana emergente!) en la que hay una lista de los mismos y se pueden seleccionar, cerrándose la ventana una vez seleccionado e incluyéndose sus datos en otro formulario.

Teóricamente, además de poder hacerlo con Javascript también se debería poder hacer con él desactivado. Pero bueno, de momento está casi toda la funcionalidad con Javascript.

La cuestión es que, como me enseñó mi amigo David, la inclusión de Javascript es de forma no intrusiva, es decir, entre otras cosas, los enlaces enlazan páginas, no funciones Javascript y también, una cosa que me gusta a mí mucho, ni una sóla gota de código Javascript dentro del HTML.

Para conseguir esto de no meter el código Javascript en el HTML se pueden hacer dos cosas: primera, currarselo todo en scripts y usando la maravillosa función getElementById; segunda, usar una librería con muchas funciones ya implementadas y que te facilite la vida de explotado programador.

Lógicamente, nosotros nos decantamos por la segunda opción. Y nuestra librería elegida es jQuery que es la que inicialmente me recomendó David.

Existen más alternativas, como por ejemplo Prototype, que es la que usa mi maestro ahora, aunque después de la lectura de sus respectivas documentaciones, me sigo quedando con mi jQuery.

Tutoriales de cada una de ellas hay muchos por la red. Muchos. Por eso aquí sólo voy a decir por qué usamos una en lugar de la otra.

En principio, Prototype es mucho más potente que jQuery. Además, tiene una arquitectura similar a la de cualquier lenguaje compilado como Java, es decir, todo orientado a objetos, perfectamente separado y ordenado. Por ejemplo, existen clases Array, Element, Event, Form, etc. cada una de ellas con los métodos correspondientes para ayudarte a programar tus aplicaciones.

En cambio, con jQuery tenemos sólo una clase, que es la propia jQuery, desde donde se hacen todas las cosas, como recorrer el DOM, añadir clases, modificar atributos, gestionar formularios, etc.

¿Y esto qué tiene de bueno y de malo? Pues principalmente la simplicidad. Con Prototype lo puedes hacer todo, igual que con jQuery. Con Prototype tienes que saber programar (o casi) usando orientación a objetos (y muchos desarrolladores Web no saben programar, sólo hacer páginas Web) mientras que con jQuery basta con saber utilizar sus funciones. Que sí, que también está orientada a objetos, pero sólo hay uno por lo que se puede usar como una función un poco rara.

Recordemos también que en jQuery sólo existe una función, la función $(...), mediante la cual podemos hacer de todo. En Prototype están $, $$, $F, $A, $H,… cada una para una cosa. Mucha potencia sí, pero también bastante complejidad.

Y es precisamente por su simplicidad por lo que hemos elegido la utilización de jQuery.

De todas formas, ni mucho menos digo que no se use Prototype (o cualquier otra), lo que digo que hay que buscar la mejor opción en cada momento según tus necesidades. Y, generalmente, las nuestras son siempre simplicidad, por eso solemos elegir lo más simple para desarrollar lo más simple. Porque hay que recordar que aquí usamos la metodología K.I.S.S. ;)

MySQL y los campos timestamp

A la hora de guardar datos en una base de datos donde sea necesario almacenar fechas a mi siempre me ha gustado almacenarlo todo, es decir, tanto la fecha como la hora, aunque realmente sólo se use una de las dos. Nunca se sabe como pueden evolucionar los requisitos de una aplicación.

Como en el trabajo usamos MySQL, para mis almacenamientos usaba el tipo de campo timestamp. Todos muy felices hasta que empecé a descubrir que la fecha de pedido se modificaba cada vez que hacía un update.

Leyendo la documentación de MySQL y consultando a mi amigo Dani (biólogo él pero controlando informática que lo flipáis) resulta que los tipos de campo timestamp se actualizan automáticamente a la fecha y hora actuales cada vez que hay una actualización del registro en la tabla. Sólo se podría quitar esta característica si la columna del timestamp fuese la segunda de dicho tipo, es decir, la primera de este tipo siempre se actualiza y a partir de ahí ya se puede quitar.

Por fin descubrimos el error, que nos ha costado, y es que este tipo de campo está pensado justamente para eso, para insertar la fecha de modificación automáticamente en cada registro implicado.

Pero claro, yo no quería eso, así que seguí investigando en la documentación de MySQL y descubrí que el campo que había que utilizar era el datetime. Internamente se representa igual que el timestamp pero no se actualiza automáticamente.

Es un error trivial y de principiante, pero me ha costado, si es que… Y como no quiero que lo cometa más gente (ni yo en futuras porgramaciones) pues aviso. Así que ya sabéis: timestamp para actualización automática de la fecha y la hora, datetime para guardar una fecha y hora modificada únicamente por el usuario.

D 2.0

Hace menos de 7 meses que el lenguaje de programación D había llegado a su versión 1.0 después de mucho tiempo y ahora resulta que han saltado directamente a la versión 2.0. Impresionante.

Leyendo la lista de correo (no muy asiduamente, la verdad, tiene muchísimo tráfico) me entero de que ha habido un cambio grande en la arquitectura del compilador para el manejo de las variables y parámetros constantes aunque también parece ser que se seguirán corrigiendo errores en las versiones 1.x.

Este tipo de acciones me parecen cuanto menos sorprendentes. Este lenguaje, aunque creo que estremadamente potente y muy prometedor, no había llegado tener demasiados programadores, por lo que estos cambios radicales yo no los haría con versiones estables, es decir, yo me curraría un lenguaje con todo lo que quisiera que tuviera y, cuando lo tuviese suficientemente desarrollado y probado, lo lanzaría, dejando bastante tiempo entre versiones grandes. Más o menos estilo Java o estilo Ruby.

Pero bueno, el señor Walter Bright es el arquitecto y el sabrá lo que hace, teniendo en cuenta su dilatada experiencia en esto de los compiladores. Recordemos que fue el que escribió el primer compilador de C++ para MS-DOS.

Visto lo visto, habrá que leerse otra vez la documentación a ver si por fin empezamos a crear nuestro Sistema Operativo ¿quién se anima?

Estándar antiestándar

Desde Barrapunto me entero de que hay una plataforma para que los documentos de office que Microsoft está intentando llevar a ser estándar no lo consigan.

Esto a primera vista se podría considerar como un ataque directo ya que, para una vez que Microsoft hace algo abierto, ahora vamos y lo intentamos boicotear. Pero resulta que no es tanto como se dice y las razones para que su tipo de documento, OOXML, no llegue a ser estándar son las siguientes:

  1. Ya existe un estándar ISO 26300 llamado Open Document Format (ODF), o Formato Abierto de Documento: un doble estándar suma coste a la industria, al gobierno y a los ciudadanos.
  2. No hay ninguna implementación probable de la especificación OOXML: Microsoft Office 2007 produce una versión especial de OOXML, no un formato de fichero que cumpla con la especificación OOXML.
  3. Hay información ausente del documento de especificación, por ejemplo como hacer un autoSpaceLikeWord95 o un useWord97LineBreakRules.
  4. Mas del 10% de los ejemplos mencionados en el estándar no tienen la conformidad XML.
  5. No existe garantía de que nadie pueda escribir un programa que implemente completamente la especificación OOXML sin estar expuesto a juicios por patentes o a canon por licencia de patente.
  6. Este estándar entra en conflicto con otros estándares ISO, como el ISO 8601 (Representación de fechas y horas) o ISO/IEC 10118-3 (hash criptográfico).
  7. Hay un error en el formato de fichero de hoja de calculo que prohíbe introducir una fecha anterior a 1900: este error afecta la especificación OOXML ademas de versiones de programas como Microsoft Excel 2000, XP, 2003 o 2007.
  8. Este estándar no ha sido creado uniendo la experiencia y saber hacer de todas las partes interesadas (como los productores, vendedores, compradores, usuarios y reguladores), sino únicamente de Microsoft.

También tienen una página para que se firme contra este pseudoestándar, vamos, puede que sea un estándar de verdad pero no cumple con la regla principal de los estándares, que se hagan por todos y para todos.

Yo ya he firmado. Lo siento Microsoft pero si quieres hacer algo para todos, abierto, hazlo bien, como generalmente lo hace la comunidad del Software Libre.

Confianza

La ignorancia engendra más confianza que el conocimiento.

Charles Darwin, biólogo británico. Sentó las bases de la teoría de la evolución.

Al hilo de la lectura del efecto Dunning-Kruger.

Sony eVilla

Sony eVilla

Sony eVilla era un pequeño ordenador desarrollado por Sony a mediados de 2001 como una máquina para uso personal orientada hacia Internet, correo electrónico y multimedia.

Pero sólo tres meses después de sacarla a la venta se suspendió todo el desarrollo de la misma porque parece ser que «no cumplía las expectativas». Además, otros fabricantes de PC’s ofrecían mayores características al mismo precio.

Pero lo más interesante de todo esto es que el sistema operativo que llevaba era BeIA, «BeOS for Internet Appliances», algo así como un BeOS embebido para dispositivos como electrodomésticos. Un BeOS ligeramente capado.

De todas formas el chisme era bastante feo y, sobre todo, poco potente. Y una cosa de las que más me llamó la atención en su momento fue la pantalla alargada, algo que era para no tener que hacer scroll en las páginas web pero que a la larga seguro que también fue una lacra. Justo ahora se lleva la situación contraria, pantallas cuanto más anchas mejor.

La verdad es que es una pena que tuviese éxito ya que una inversión económica por parte de Sony para Be Inc. creo que hubiese llevado al BeOS a estar entre los grandes.

Frikismo puro y duro

El otro día en el trabajo, hablando del modelo MVC, un compañero se puso a cantar (si, cantar, en nuestro trabajo hay MUY BUEN ambiente) una canción inventada sobre dicho modelo. Vamos, al estilo Carlitos (que no es el mismo del blog). Y fue cuando se me ocurrió que James Dempsey ya había escrito, con letra y música, una canción para el MVC:

Model View, Model View, Model View Controller
MVC’s the paradigm for factoring your code,
into functional segments so your brain does not explode.
To achieve reusability you gotta keep those boundaries clean,
Model on the one side, View on the other, the Controller’s in between.
[...]

Vamos, esto es frikismo puro. Pero lo peor es que ahí no acaba la cosa. Lo pero es que también recordé que los amigos ingenieros del BeOS también habían hecho algunas odas al sistema, entre ellas está 5038, por Ficus Kirkpatrick y Baron Arnold:

Well baby
You’ve been gone so long
It makes me wanna cry
And you know
I feel so wrong
It makes me wanna die
It makes me wanna die

BeOS
It’s the OS
BeOS
It’s the OS
Ah-whoo-hoo-hoo
[...]

Y también virtual (void), por Baron Arnold:

With all my schedules set
Into the future I charged
I spun an arrogant net
I saw my future enlarged

And then I had to reboot a hundred times
Through tangled threads and corporate crimes
You may never find love down a T1 line
[...]

Así la letra (que no está completa) no dice mucho sin oír la música. No se ve el nivel de frikismo. Pero si alguien quiere los archivos MP3 se los envío por correo. Que no sé qué licencia tienen e igual incurro en delito. Además, tampoco es que tenga yo mucho ancho de banda por estos lares; recordemos que este blog está en el ordenador de Héctor.

Por cierto, seguro que Héctor bien se acuerda de estas cancioncillas y del 3D Mix y de ese inacabado proyecto Pedal Board ¿verdad? :D

Perfección

La perfección (en diseño de software) se alcanza no cuando ya no hay nada que agregar, sino cuando ya no hay algo que quitar.

Antôine de Saint-Exupery, escritor, aviador y diseñador de aviones.

The BeOS Man

The BeOS Man

Este es el muñequito que da nombre al blog. No precisamente por él, sino por lo que representa: BeOS.

Más profesionales

Un poco más sobre la web de la discordia (que no soy el único): según fuentes del Congreso visto en Kriptópolis, la web del susodicho ha costado «sólo» 200 000 €. Eso dicen.

Primero, yo discrepo. Me gustaría ver todas las facturas, no sólo las de creación de la web. Con esto están las de diseño gráfico, software adicional, hardware necesario, licencias,…

Segundo: 200 000 € sigue siendo una burrada para esa mierda de web. Pero claro, está hecha con Oracle Portal donde hay que pagar licencias (quizás eso no entre en el precio indicado) tanto para el uso del software como para cada usuario concurrente que use la base de datos.

Yo he usado un poco este sistema (para un proyecto de la Universidad en mi anterior empresa) y vaya auténtica basura de software. Es normal que se genere dos veces la etiqueta <html> y demás tonterías que hace, porque es el propio portal el que lo hace. Luego el chisme maqueta con tablas, vamos, de lo más correcto. Y lo que más me sorprendió es que la profundidad del árbol HTML era infinita. Como mínimo de unos 30 niveles. ¿Estábamos haciendo algo mal? Yo creo que no, porque fue iniciar con la plantilla por defecto y ya tenía esa profundidad. Luego claro, para maquetar nos volvimos locos. Así quedó el proyecto… y el del Congreso pues lo mismo.

¿Qué será lo que pasa? ¿Estarán Indra y Telefónica sólo por la pasta y se estarán olvidando del desarrollo Web de verdad (como si alguna vez lo hubiesen hecho)? ¿El Congreso y, por extensión, el Gobierno de España sólo concede proyectos a los grandes, o salen a concurso como deberían? Ni idea… pero de momento nos la tenemos que comer.

La ignorancia es la madre del atrevimiento

Sara Gallardo es una auténtica ignorante. Menos mal que ya alguien le ha contestado y muy bien, por cierto.

Ser friki es un orgullo. Ser friki no es no ducharse (yo me ducho todos los días). Ser friki es almacenar conocimientos, de cualquier tipo, pero todos los que se puedan. Después de friki viene el geek, que es un friki pero no lo parece :D . Y después del geek viene el gurú, que es un sabio.

Pero claro, la ignorancia que reina en su artículo es un claro ejemplo de que escribe sin saber, sin haber visto nunca uno de verdad y, ni mucho menos, sin hablar con él. Pero claro, de algo hay que escribir y ¿qué mejor que meterse con lo que está de moda? De todas formas los frikis lo somos desde hace mucho, sólo que antes no éramos frikis, éramos raros. El nombre cambia, el espíritu permanece ;) .

Profesionales

Leo en Barrapunto que el Congreso de los Diputados ha remodelado su Web y, claro, la curiosidad es la curiosidad sobre todo desde que me metí en estos temas, aunque después de haber leído la noticia no me sorprendió nada lo que me encontré:

Captura de la Web del Congreso de los Diputados

Una Web actual, hecha por Indra y Telefónica (que no es poco), con 145 Warnings y ¡25 Errores! Pero ¿qué clase de profesionales de mierda les han hecho esa chapuza?

No me lo puedo creer, en serio. Todos intentando seguir estándares, hacer las cosas bien, ganando prestigio… y estos imbéciles haciendo chapuzas a precio de oro (que no quiero ni pensar cuanto nos habrá costado).

Revisando un poco (sólo un poco) el código fuente encuentro que lo primero falta el <!DOCTYPE … >. Error de novato. Pero luego indago y veo que hay dos veces <html> y dos veces <body>. Eso ya es de la mierda de código HTML que generan. También hay 599 líneas de CSS dentro del archivo y unas cuantas de Javascript. ¿Qué pasa, que empresas grandes como Indra y Telefónica no han oído hablar nunca del Javascript no intrusivo y de la usabilidad y accesibilidad web? Y no mencionemos ya la grandísima velocidad de carga. Nada, eso es lo de menos, con las ADSL de ahora de Telefónica…

Y por si fuera poco está en un servidor Oracle que, también, es baratito. ¿No hay alternativas libres que cumplan las expectativas? ¡Já! Sobre todo por la cantidad de visitas que debe tener.

Me parece hilarante que nos tomen el pelo de esta manera, sinceramente. Pero creo que las empresas que lo han hecho no tienen toda la culpa. La culpa la tiene el tonto que la encargó y la ha dado por buena cuando se la instalaron. Vamos, me ponen una página de esas a mí y se la hago comer.

Si es que me pone de los nervios ver estas cosas.

Actualización: Desde Kriptópolis y también gracias a Jonatan, me entero de que lo que ha costado han sido 14 304 113 €. Ahí es nada.

No me aguanto sin decirlo: ¡¡Vaya puta mierda de página!!

Festival lógico-matemático

Portada del libro Festival Mágico-Matemático de Martin Gardner

Mi profesor de las prácticas de Ingeniería del Software y director de proyecto, Alija, me dejó una vez el libro Festival mágico-matemático, de Martin Gardner.

Y, aunque siempre digo que no me gusta leer, éste también es uno de esos libros que me gustó, quizás no por su literatura, más bien por sus contenidos técnicos.

Habla principalmente de juegos matemáticos para luego explicar las matemáticas de lo que es la nada y de lo que es el todo. Visto así parece poca cosa, pero realmente tiene bastante intríngulis esto de la nada.

Yo siempre pongo el mismo ejemplo: si tienes un cubo de metacrilato y lo vacías de todo, incluso de aire ¿qué tiene dentro? Muchos dirán «nada» (muchos me lo han dicho, casi todos, de hecho) pero en realidad si tiene algo: tiene espacio y tiene tiempo dentro ¿o no? Ahí queda eso…

Buen libro este, recomiendo su lectura. Y voy a ver si me agencio con algún otro de este autor. Ya os contaré.

Relojes diferentes

Sergio, compañero de trabajo tiene un reloj binario:

Reloj binario

Mola, pero vale una pasta (unos 120 €) y lo tienen en ThinkGeek. Lo que no me gusta es que es sólo de 12 horas, vamos, poniendo AM y PM, característica incomprensible de los estadounidenses. Si, esto es frikismo puro y duro, pero realmente es un reloj diferente.

Pero todavía hay un reloj, un poco menos friki porque no es binario pero raro también, que es este:

Reloj un poco raro

Lo he encontrado en esta entrada del blog Dark Roasted Blend, donde hay bastantes cosas interesantes. No he encontrado donde se puede comprar (que no esté en ruso, claro) aunque supongo que valdrá todavía más que el anterior. Y, de momento, no está a mi alcance. ¿Alguien me lo regala?

De todas formas me tendré que conformar con una simulación bastante parecida de Yahoo Widgets.

Comentarios

/**
 * Qué puedo yo decir de esta función que me ha llegado al corazón,
 * pues nada, que bloquea un pedido, es como una relación basada en
 * la monogamia... ¿no es bonito?
 */
private function lockThisOrder($order, $isLocked)
{
	. . .
}

Carlitos en una de sus funciones de los Objetos de Negocio.