visuse

VISUal Search Engine

Herramientas y tecnologías utilizadas

Las herramientas y tecnologías escogidas para el desarrollo de un proyecto deben ser escogidas cautelosamente, ya que pueden suponer el fracaso de éste o pueden aumentar su complejidad, para lo cual deberemos conocer cuales son las distintas alternativas y las necesidades de nuestro proyecto. Además todas las tecnologías son libres y compatibles con la licencia escogida para liberar el proyecto.

Del lado del cliente

En cuanto a ejecución de código en el navegador del usuario para determinar la disposición de los resultados, las alternativas son básicamente dos: utilizar código JavaScript o una aplicación utilizando la tecnología de Adobe Flash. La primera alternativa está hoy presente en la práctica totalidad de las navegadores y, aunque hay problemas por las diferencias entre los distintos intérpretes, existe cierto grado de estandarización. La segunda nos permitiría evitar esas diferencias de ejecución en los distintos navegadores si utilizamos la implementación oficial, sin embargo las aplicaciones Flash son pesadas de cargar, su tecnología es privativa (lo que va en contra de la naturaleza abierta de la web) y obligan al usuario a instalar un complemento a su navegador que muchas veces no está disponible en todos los navegadores (como pasa en los de los dispositivos móviles).

Debido a la falta de estándar de JavaScript/ECMAScript es aconsejable la utilización de una biblioteca que nos permita no tener que preocuparnos porque nuestros desarrollos se ejecuten de formas distintas en los diferentes navegadores. Además la utilización de grandes bibliotecas o framework simplifican la manipulación del DOM (Documment Object Model), el tratamiento de eventos y la comunicación asíncrona. Dentro de la amplia variedad de librerías para JavaScript disponibles me decanté por el uso de jQuery por su velocidad y simplicidad, porque tiene una baja curva de aprendizaje y cuenta con una excelente documentación y porque pone a nuestra disposición una gran cantidad de extensiones.

A la hora de hacer la disposición de resultados en la pantalla, una vez descartada la tecnología Adobe Flash por las razones comentadas, nos quedan básicamente dos alternativas: la utilización de XHTML/HTML o de HTML5. Para disponer imágenes en un punto concreto de la página es suficiente con la utilización de HTML en combinación con hojas de estilos indicando a las imágenes que se sitúen en posiciones absolutas, aunque sería más complicado lograr complejos efectos de animación (aunque no imposible, utilizandolo en combinación con JavaScript). En cambio, HTML5 es aún un borrador, no aportaría demasiadas funcionalidades (únicamente la inclusión de efectos bonitos con la utilización del elemento canvas) y está aún en proceso de implantación, sólo disponible en las últimas versiones de los distintos navegadores y en algunos casos parcialmente.

Del lado del servidor

Del lado del servidor, se eligió como lenguaje de programación Python debido a que se trata lenguaje de alto nivel que sin embargo no se puede considerar y que tiene una importante presencia entre las aplicaciones web debido a su velocidad y la facilidad para desarrollar en él. Además genera un código fácil de leer y su biblioteca estándar muy completa, especialmente fue especialmente útil en la serialización de los objetos en JSON, mediante la librería jsonpickle, para transmitirlos al lado del servidor.

En combinación con Django, permite la rápida creación de sitios web complejos desarrollados con una estructura modular, facilitando el uso de plantillas, accesos a bases de datos, uso de direcciones amigables y creación de cachés.

Comunicación

En la comunicación, como se ha comentado, se hace uso de JSON (JavaScript Object Notation), un formato ligero para el intercambio de datos, frente a su principal alternativa XML, un lenguaje de marcado de propósito general. La elección de JSON se debe a la velocidad en que se procesa en JavaScript, a que resulta muy simple tanto para humanos como para máquinas, a que está orientado a las estructuras de datos de los lenguajes de programación modernos y a que no necesitamos la validación mediante esquemas de las respuestas.

Realmente esta decisión no supone un gran compromiso, con unas simples modificaciones la comunicación se podría realizar utilizando XML sin afectar a las dos partes involucradas en la comunicación.

Anuncios

16 junio 2010 Posted by | Tecnologías | , , , , , , , , , , , , , , , , | Deja un comentario

¿AJAX o AJAJ?

AJAJ es un acrónimo de Asynchronous Javascript and JSON, derivado del tan famoso AJAX (Asynchronous Javascript and XML) y menos conocido, aunque normalmente se utiliza AJAX para referirse a ambos.

Ambos no son una tecnología, sino una combinación de varias:

  • XHTML y CSS.
  • El DOM (Modelo de objetos del documento), que nos permite acceder a la información del documento que se está mostrando y modificarla.
  • El objeto XMLHttpRequest, que sirve para intercambiar datos de forma asíncrona con el servidor.
  • XML o JSON, según el caso, para transferir los datos.

JSON (JavaScript Object Notation) es un formato ligero para el intercambio de datos. XML también es usado para intercambiar datos, pero es un lenguaje de marcado de propósito general. De momento, la decisión que he tomado es usar únicamente JSON y en un futuro no debe ser muy difícil ofrecer también la opción de poder comunicarse con el servidor utilizando XML.

¿Por qué JSON y no XML?

  • JSON es más simple.
  • JSON es más fácil de leer tanto para humanos como para máquinas.
  • En JSON no es necesario definir nuevas etiquetas ni atributos para representar datos.
  • JSON está orientado a las estructuras de datos de los lenguajes de programación modernos.

La conclusión es que para intercambiar datos es mejor utilizar JSON, aunque XML sea un estándar y sea mejor para intercambiar documentos.

Algunos enlaces interesantes al respecto:

Y por último, una divertida frase del artículo “Python no es Java“:

Some people, when confronted with a problem, think “I know, I’ll use XML.” Now they have two problems.

27 diciembre 2009 Posted by | Tecnologías | , , , , | Deja un comentario