Archivo por meses: octubre 2007

Avances en salvar la brecha HTTP: Rich Ajax Platform

En los últimos años se han ido construyendo sobre HTTP (que no fue diseñado para hacer aplicaciones, si no para ver documentos) una serie de tecnologías que permiten la creación de aplicaciones sobre este protocolo. En una primera fase, estas soluciones se han basado en dotar al servidor de la capacidad de ejecutar programas en diferentes lenguajes (CGi, Perl, PHP, JSP, etc…) a partir de los parámetros enviados desde el navegador cliente (normalmente a través de formularios HTML). Esta aproximación que, si bien ha permitido la creación de todo tipo de software basado en web, con mayor o menor esfuerzo, no ha evitado el hecho de que la brecha HTTP siguiese vigente (a través de las famosas “recargas” del navegador cada vez que se hacía clic o se enviaban datos).

Con posterioridad, ha surgido el concepto AJAX: una unión de varias tecnologías que dan la posibilidad de comunicar a cliente (navegador) y servidor (servidor web) de una manera más fina, de forma que la respuesta desde el servidor no fuese un documento entero, sino sólo lo que se pide de forma asíncrona desde el navegador, al más puro estilo de una llamada remota.

Con la aparición de AJAX, están surgiendo gran cantidad de herramientas y frameworks de programación para agilizar la creación de aplicaciones bajo este “paradigma”. La idea es que, debido a que la brecha HTTP es más pequeña.

Hoy me he encontrado con un proyecto de Eclipse: RAP (Rich Ajax Platform). La idea es muy simple, es la que persiguen todos: programar las aplicaciones Web como si fuesen aplicaciones de escritorio. El arquipiélago Eclipse ya disponía de un Toolkit para el desarrollo de aplicaciones de escritorio (SWT, Standard Widget Toolkit y, sobre él, JFace) que, junto con otras tecnologías, formaba parte de la RCP (Rich Client Plaform), una plataforma para la creación de aplicaciones de escritorio. A ella se une ahora RAP, que implementa un subconjunto de SWT y que permite abstraer al programador hasta el punto de trabajar con componentes JFace que por debajo terminan generando una aplicación web basada en Servlets y Javascript-Ajax. Suena muy muy bien.

Arquitectura RAP

Figura. Comparación entre RCP y RAP

Nuevos Drivers AMD ATI (8.42) con Soporte para AIGLX

ATI Logo & Linux Según leo en Phoronix la nueva versión de los drivers propietarios de ATI para Linux (“fglrx”) ya incluye soporte para AIGLX, una de las características más esperadas ya que nos permite ejecutar de forma “más estable” los gestores de ventanas 3D Compiz, Beryl y Compiz Fusion. Hasta ahora, únicamente se podía ejecutar con XGL y con el driver propietario. Para AIGLX era necesario utilizar el driver open-source “radeon” que, por desgracia, tenía menos prestaciones y menor número de tarjetas compatibles que la versión propietaria, que a su vez, era bastante inferior que su versión para Windows.

Al fin, el tiempo de sequía terminó. Lástima que ya me haya cambiado a NVidia hace un par de meses, la cual tiene soporte para AIGLX en su driver propietario desde hace 11 meses.

On Garbage Collection

Tengo una opinión positiva acerca de la recolección de basura (garbage collection) como técnica para la gestión de memoria en los programas. Creo sinceramente que llega a ser imprescindible para hacer un buen diseño software en los lenguajes orientados a objetos.

Recuerdo una práctica en 5º de carrera, de la asignatura Tecnología de Objetos, hecha en C++ (lenguaje sin recolección de basura) en la que tenía que hacer un pequeño programa, ya no recuerdo exactamente sobre qué. Sí recuerdo sin embargo, la imposiblidad de llegar a un diseño “correcto” debido a la obligación de gestionar la memoria dinámica “manualmente”. El problema es muy simple: Cuando se pide la liberación de un objeto, ¿cómo sabes que ese objeto no está siendo referenciado desde otra parte/módulo? Derivado de esto es que habría que crear una dependencia gravísima entre los diferentes módulos que, en algún momento, compartiesen una referencia a un objeto. Tendrían que ponerse de acuerdo los programadores de ambos módulos en quién libera finalmente el objeto. Inadmisible.

Tratando de satisfacer mi ego personal, hoy he buscado por la red alguna documentación que corroborase mi desencanto con los lenguajes sin recolección de basura (Ojo, en C++ siempre estás a tiempo de create tu recolector, yo lo que quiero indicar es que de un modo u otro es prácticamente imprescindible).

Pues aquí va lo que he encontrado. Una reflexión de Paul Johnson. Destaco en negrilla lo que va en la misma línea de lo que he dicho.

Garbage collection (GC) is a facility in the run-time system associated with a language which will automatically reclaim objects which are no longer used. OO Languages which require garbage collection include Eiffel, Smalltalk and CLOS. C and C++ can have garbage collection retrofitted
Without GC programmers must explicitly deallocate dynamic storage when
it is no longer needed (in C this is done by a call to free(3)).
There are a number of problems with this:

1: Bugs due to errors in storage deallocation are very hard to find,
although products are available which can help.

2: In some circumstances the decision about whether to deallocate
storage cannot be made by the programmer. Drawing editors and
interpreters often suffer from this. The usual result is that the
programmer has to write an application-specific garbage collector.

3: An object which is responsible for deallocating storage must be
certain that no other object still needs that storage. Thus many
modules must co-operate closely. This leads to a tight binding
between supposedly independent modules.

4: Libraries with different deallocation strategies are often
incompatible, hindering reuse.

5: In order to avoid problems 3 and 4, programmers may end up copying
and comparing whole objects rather than just references. This is a
particular problem with temporary values produced by C++ overloaded
operators.

6: Because keeping track of storage is extra work, programmers often
resort to statically allocated arrays. This in turn leads to
arbitrary restrictions on input data which can cause failure when
the assumptions behind the chosen limits no longer apply. For
instance many C compilers limit expression nesting, identifier
length, include file nesting and macro stack depth. This causes
problems for programs that generate C.

Zapatero: Una revisión

“Zapatero se ha cargado el régimen constitucional del 78, ha traído la negociación permanente con la ETA, ha traído el estatuto inconstitucional de Cataluña, está persiguiendo la AVT, está favoreciendo a los terroristas de toda condición, persigue y prohíbe el español, ha perpetrado una Ley de Memoria Histórica que reabre la Guerra Civil, las fosas y las trincheras, persigue a las víctimas de un bando, a las que humilla, persigue al Tribunal Constitucional, y quiere darle otra vuelta de tuerca a la Iglesia”.

Así de tajante se muestra Federico Jiménez Losantos (locutor de la COPE). Yo también quiero, yo también quiero!:

[irresponsable_mode=true]“Aznar responsable de la muerte de 200 personas en Madrid, que ha cometido delitos internacionales, que respalda las violaciones de derechos humanos allí donde vaya Bush, que protege a la extrema derecha de ayer y hoy, que negocia con terroristas desde el poder, persecutor incansable del catalán, de los catalanes, gallegos y vascos, bla bla bla”.[irresponsable_mode=false]

Qué fácil es ser un locutorcillo. Solo que ni quiero ni, por supuesto, puedo (solo desde mi humilde tribuna…).

Quien sí puede hablar y ser escuchado es Gabilondo. Que no se queda nada corto…

Por fin: OpenOffice Impress 2.3 permite trayectorias de desplazamiento personalizadas

Las trayectorias de desplazamiento personalizadas permiten mover un objeto de un punto a otro durante una animación. Son imprescindibles si queremos que el objeto pase por cierto lugar o que el desplazamiento tenga mayor o menor distancia. Este recurso es básico para hacer animaciones que ayuden a explicar conceptos de una forma intuitiva.

El problema es que esta era una de las grandes carencias de Impress a mi modo de ver, que dificultaba la migración desde PowerPoint. Realmente esta función estuvo disponible en versiones antiguas, pero había desaparecido en la serie 2.x de Open Office. Ahora en la 2.3 ha vuelto! Genial!

Trayectorias

Más info en:
http://openoffice.blogs.com/openoffice/2007/10/welcome-back-us.html

¡Viva españa!

Aquí va otra opinión de Gabilondo

Entiendo que haya gente que piensa que unos Informativos no son el lugar más apropiado para dar opinión sobre las noticias. Pero eso ya se ha perdido hace mucho tiempo, no lo inventaron los de Cuatro y tampoco ha sido una invención de los medios privados. Por favor, no me pidáis ejemplos…

Estamos trabajando en ello

Quién no recuerda la expresión del expresidente Aznar de “estamos trabajando en ellou”…

Pues mira tú por dónde, que leo hoy en el Pais que Brasilia prohíbe a la administración el uso del gerundio ya que, según presidente José Roberto Arruda, demuestra una falta de eficiencia por parte de la Administración. Ya no más un “estamos planificando”, “estamos preparando”, “estamos estudiando” o “estamos trabajando en ellou”.