Logo de Torre de Babel
Portada Libros Diseño web Artículos Glosario RSS
Buscar

Lote de libros

Portada PortadaPortada Portada Portada 

En los últimos meses he tenido múltiples problemas con el servidor donde tenía alojada Torre de Babel y, por ello, no me ha sido posible incluir muchos contenidos, especialmente imágenes y documentos que no fuesen puramente HTML. Hace unas semanas finalmente solucioné el problema, cambiando el alojamiento, lo cual aprovecho ahora para incluir toda la información relativa a los libros que he ido publicando durante este tiempo.

Como es habitual, en la sección Libros se encuentra la descripción de cada libro, su ISBN, número de páginas, precio e índice de contenidos completo.


Publicado el 31/7/2007

Visual Studio 2008 beta 2

Desde hace unos horas está disponible para descarga la beta 2 del futuro Visual Studio 2008, así como la beta 2 de la plataforma Microsoft .NET 3.5. Se puede optar entre imágenes ISO, para instalar nativamente, o bien por una imagen Virtual PC que permite probar el software en una máquina virtual. En el primer caso se ofrecen las ediciones Standard, Professional y Team Suite, mientras que la máquina virtual es la edición Team Suite.

También pueden descargarse las beta 2 de Visual Basic 2008 Express Edition, Visual C# 2008 Express Edition, Visual C++ 2008 Express Edition y Visual Web Developer 2008 Express Edition, junto con material complementario para el desarrollo de aplicaciones Windows, aplicaciones Web, juegos y proyectos de hardware, basándose, por ejemplo, en el Microsoft Robotics Studio, cuya versión 1.5 apareció hace pocos días.

Visual Studio 2008 estará finalizado previsiblemente a finales del presente año, si bien el lanzamiento oficial tendrá lugar en febrero del próximo año, conjuntamente con SQL Server 2008 y Windows Server 2008.

Características destacables

Esta beta 2 de Visual Studio 2008 está calificada como feature complete, lo que significa que incorpora todas las funciones que tendrá el producto definitivo y que, de aquí en adelante hasta la versión final, solamente se efectuarán correcciones de errores.

A pesar de ser una versión preliminar, Microsoft ofrece una licencia tipo Go Live que permitirá desplegar aplicaciones desarrolladas con la beta. Además esta versión incorpora diseñadores y bibliotecas para aprovechar las características de Windows Vista, por ejemplo creando interfaces WPF (Windows Presentation Foundation) con un nuevo diseñador XAML basado en el de Expression Blend. Todas las herramientas relacionadas con el desarrollo web se han mejorado considerablemente, con un entorno más cómodo para el diseño de páginas XHTML/CSS, desarrollo de aplicaciones AJAX e incluso la creación de programas para el nuevo Silverlight.

Muy destacable es la inclusión de nuevas versiones de los lenguajes de programación Visual Basic y Visual C#, con características realmente interesantes como la inferencia de tipos o la posibilidad de realizar consultas sobre cualquier estructura de datos gracias a LINQ.


Publicado el 27/7/2007

Cómo obtener información de esquema con ADO.NET 2.0

El proceso que permite a una aplicación cualquiera obtener de un RDBMS información de esquema, los datos sobre la estructura de una base de datos, tiene una alta especificidad, siendo totalmente distinto según el servidor de datos sobre el que esté trabajándose. Ésta es la razón de que suela recurrirse a funciones o consultas a medida para recuperar dicha información.

ADO.NET 2.0, la versión de los servicios de datos de la plataforma .NET que corresponde a Visual Studio 2005, cuenta con un mecanismo que facilita la obtención de la información de esquema con independencia del RDBMS con que esté trabajándose. Es decir, a diferencia de otras características de ADO.NET 2.0 ésta no es exclusiva para SQL Server 2005, funcionando también cuando se trabaja, por ejemplo, con bases de datos Oracle.

La clase DbConnection, que representa una conexión genérica a base de datos, cuenta con el método GetSchema() que puede emplearse para obtener listas de tablas, vistas, procedimientos almacenados, etc. El parámetro de este método puede ser una cadena de caracteres tal como "Views", "Tables" y similares o bien una de las constantes de la clase DbMetaDataCollectionNames, definida en el espacio de nombres System.Data.Common. Mediante ellas pueden obtenerse los tipos de datos, palabras reservadas, restricciones y otros objetos de la base de datos.

Puede encontrarse toda la documentación sobre GetSchema() y DbMetaDataCollectionNames en MSDN o la documentación de Visual Studio 2005.


Publicado el 25/7/2007

ImportScrubber

Cuando se está escribiendo código Java es habitual ir añadiendo al inicio del módulo las cláusulas import a medida que se encuentra la necesidad de utilizar ciertas clases, sin ningún orden preestablecido, siendo también bastante corriente que optemos por importar paquetes completos, como java.awt.*, en lugar de las clases concretas que se necesitan de cada paquete.

Obviamente sería mucho más elegante importar únicamente aquellos elementos que se necesitan y, además, quedaría muy bien que la lista de importaciones estuviese correctamente ordenada y agrupada por paquetes. Esto, sin embargo, es un trabajo que no se traduce en resultados, por lo que no solemos emplear tiempo en él. Por suerte existe una herramienta llamada ImportScrubber que puede realizar automáticamente esa tarea.

Podemos descargar ImportScrubber de http://importscrubber.sourceforge.net/. Es una aplicación con una sencilla interfaz gráfica que nos permite seleccionar un directorio con módulos de código Java, que puede recorrerse de forma recursiva. Por cada módulo el programa elimina todas las sentencias import innecesarias, así como las importaciones de paquetes sustituyéndolas por importaciones específicas. Opcionalmente también puede agrupar y ordenar la lista de importaciones, mejorando esta parte de nuestro código.

ImportScrubber es una aplicación de código abierto y, como suele ser habitual en el movimiento Open Source, en continuo desarrollo.


Publicado el 19/7/2007

Microsoft Expression Web

Tras una larga espera, desde que Microsoft hiciese referencia por primera vez a su Expression Suite, ya está disponible el primer componente de dicha familia: Expression Web. Se trata de una herramienta de diseño web que viene a suceder al desfasado FrontPage.

Si te interesa conocer las características de uno de los mejores productos para diseño web disponibles actualmente, puedes leer el artículo que publiqué el pasado mes en PC Actual sobre Expression Web. Hay disponible una versión de prueba, limitada en el tiempo, que puedes instalar para comprobar personalmente lo que te ofrece.

En posteriores números de la revista trataré otros productos de la familia Microsoft Expression Suite, por ejemplo Expression Blend, pero en cualquier caso será después del verano.


Publicado el 6/7/2007

Recorrer cadenas en C

A diferencia de otros lenguajes de programación, que almacenan la longitud de las cadenas de caracteres en la propia estructura que representa a la cadena, en C esa información no se conserva en parte alguna, de ahí que para obtenerla sea preciso recorrer carácter a carácter la cadena hasta encontrar un nulo o '\0', como hace la función strlen(). Es muy habitual escribir bucles del tipo:

int pos;
for(pos = 0; pos < strlen(cadena); pos++)
	haz_algo_con(cadena[pos]);

El inconveniente de esta técnica es que la cadena se recorre completa en cada ciclo del bucle, ya que cada llamada a strlen(), para obtener la posición límite hasta la que llegará pos, se traduce en otro bucle que enumera los caracteres desde el primero al último. Suponiendo que cadena contuviese 100 caracteres, el efecto sería equivalente a tener dos bucles anidados que, en total, ejecutarían 10000 ciclos sobre esa matriz de caracteres.

Para evitar esa reiteración innecesaria, mejorando el rendimiento del bucle de forma notable, hay varias posibilidades. Una de ellas consiste en invocar a strlen() antes de iniciar el bucle, conservando la longitud en una variable que se utilizará como referencia para saber cuándo se ha llegado al final. Más eficiente y simple aún, no obstante, es la codificación siguiente:

for(pos = 0; cadena[pos]; pos++)
	haz_algo_con(cadena[pos]);

En este caso la condición de fin del bucle es cadena[pos], que se evaluará como true siempre que no se haya llegado al final de la cadena, momento en que cadena[pos] == 0. El resultado final es el mismo: se enumeran todos los caracteres de la cadena, pero el tiempo de procesamiento será mucho menor.
Publicado el 5/7/2007



Curso de shaders

Torre de Babel - Francisco Charte Ojeda - Desde 1997 en la Web