24.19 Security Keys 53
5.4.5 State Machine for Responding BACnet User (server) 68
Los sistemas gestores de bases de datos suelen utilizar bloqueos para evitar problemas de concurrencia y, en ocasiones, garantizar la serializabilidad de las transaccio- nes. Para hacerlo adecuadamente, los mecanismos de blo- queo suelen implementar protocolos como elbloqueo de dos fasesy utilizarregistros transaccionales (logs)como apoyo.
Clase utilidad
Enprogramación, una clase utilidad es unaclaseque de- fine un conjunto de métodos que realizan funciones, nor- malmente muy reutilizadas. La mayoría de las clases utili- dad definen estos métodos comunes con alcance estático. Ejemplos de clases utilidad incluyen java.util.Collections que proveen muchos métodos estáticos (tales como or- denar) en objetos que implementan una Collection (ja- va.util.collection ).
24.1 Enlaces externos
• Utility Pattern: Para una clase utilidad, que no re- quiere instanciación y sólo tiene métodos estáticos, se debe usar un constructor privado.
Capítulo 25
Clear.gif
El lenguajeHTMLpara desarrollarpáginas webno per- mite el alineamiento arbitrario de los objetos dentro del documento.
Cuando Internet no se encontraba tan desarrollado, y prácticamente el HTML era lo único con lo que se conta- ba para mostrar contenidos, un truco que los desarrolla- dores utilizaban para poder alinear los textos a la altura y anchura que se desearan dentro de la página, era crear un archivo transparente de unpíxelde tamaño y enformato gráfico GIF, que en aquel entonces era el único que per- mitía manejar transparencia en las imágenes. El archivo era manipulado dentro del código de la página web para que apareciera con cierta alineación, ya que las imágenes si permitían la alineación, pero no el texto.
La transparencia era importante, pues permitía que la imagen no apareciera dentro de la visualización de la pá- gina web.
El archivo era usualmente llamado clear.gif, aunque cualquier desarrollador que hiciera la imagen podía crear- la con el nombre que quisiera. El nombre de dicho archivo dio lugar al de la técnica.
La manera sencilla en la que se hace trabajar este truco en el código HTML es la siguiente:
<IMG hspace=x vspace=y SRC="/ruta/al/archivo/clear.gif">
Donde x y y son las coordenadas de espaciado horizon- tal y vertical que se desean, y el atributo SRC señala la ruta hacia el archivo clear.gif. El texto que se escriba a continuación de ese fragmento de código, se alineará a la altura y anchura indicada en la etiqueta.
CMake
CMake es una herramienta multiplataforma de genera-
ción o automatización de código. El nombre es una abre- viatura para“cross platform make”(make multiplatafor- ma); más allá del uso de “make”en el nombre, CMake es una suite separada y de más alto nivel que el sistema make común de Unix, siendo similar a lasautotools. CMake es una familia de herramientas diseñada para construir, probar y empaquetar software. CMake se uti- liza para controlar el proceso de compilación del softwa- re usando ficheros de configuración sencillos e indepen- dientes de la plataforma. Cmake genera makefiles nativos y espacios de trabajo que pueden usarse en el entorno de desarrollo deseado. Es comparable al GNU build sys- tem de Unix en que el proceso es controlado por ficheros de configuración, en el caso de CMake llamados CMake- Lists.txt. Al contrario que el GNU build system, que está restringido a plataformas Unix, CMake soporta la gene- ración de ficheros para varios sistemas operativos, lo que facilita el mantenimiento y elimina la necesidad de tener varios conjuntos de ficheros para cada plataforma. El proceso de construcción se controla creando uno o más ficheros CMakeLists.txt en cada directorio (incluyendo subdirectorios). Cada CMakeLists.txt consiste en uno o más comandos. Cada comando tiene la forma COMAN- DO (argumentos...) donde COMANDO es el nombre del comando, y argumentos es una lista de argumentos sepa- rados por espacios. CMake provee comandos predefini- dos y definidos por el usuario. Existen generadores ma- kefile para Unix,Borlandmake,Watcommake,MinGW,
MSYSy Microsoft NMake. También es posible generar ficheros de proyecto para Code::Blocks,Eclipse CDT,
Microsoft Visual Studiode la 6 a la 10 incluyendo ver- siones de 64 bits yKDevelop.
26.1 Historia
CMake se creó en respuesta a la necesidad de disponer de un entorno multiplataforma apropiado de construc- ción para elInsight Segmentation and Registration Tool- kit(ITK) creado por laUnited States National Library of Medicinecomo parte delVisible Human Project. Fue in- fluenciado por un sistema anterior llamadopcmakercrea- do por Ken Martin y otros desarrolladores para soportar
elVisualization Toolkit(VTK), un sistema para gráficos 3D y visualización libres.
Para crear CMake, Bill Hoffman en Kitware incorporó algunas ideas de pcmaker, y añadió más cosas propias, con el pensamiento de adoptar algunas de las funciona- lidades delGNU build system. La implementación ini- cial de CMake tuvo lugar a mediados del 2000, con un desarrollo acelerado a comienzos del 2001. Muchas me- joras se debieron a influencias de otros desarrolladores a la hora de incorporar CMake a sus propios sistemas. Por ejemplo, la comunidad deVXLadoptó CMake, contribu- yendo con muchas características esenciales. Brad King añadió varias características para dar soporte a CABLE y GCC-XML, un juego de herramientas de envoltura au- tomáticas; y GE Corporate R&D necesitaba soporte para su infraestructura de pruebas (DART). Otras funcionali- dades se añadieron para soportar la transición de VTK's a CMake, y soportar ParaView, un sistema de visualiza- ción paralela para el Advanced Computing Lab enLos Alamos National Laboratory.
26.2 Documentación y tutoriales
Aparte de la documentación oficial de CMake, existe un libro titulado Mastering CMake, publicado porKitware.
26.3 Principales funcionalidades
• Ficheros de configuración escritos en un lenguaje de
scripting específico para CMake
• Análisis automático de dependencias paraC,C++,
Fortran, yJava
• Soporte paraSWIG,Qt,FLTK, a través del lenguaje de scripting de CMake
• Soporte para varias versiones deMicrosoft Visual Studio, incluyendo la 6, 7, 7.1, 8.0, 9.0 y 10.0
• Genera ficheros paraEclipse CDT (C/C++ Deve- lopment Tools)
26.6. VÉASE TAMBIÉN 47
• Detección de cambios en ficheros usando times-
tamps tradicionales
• Soporte para builds paralelos • Compilador cruzado
• Vista global de todas las dependencias, usando
CMake para generar un diagramagraphviz • Soporte para builds multiplataforma
• Linux y otros sistemas POSIX (incluyendo
AIX,*BSD,HP-UX,IRIX/SGI, ySolaris)
• Mac OS X
• Windows 95/98/NT/2000/XP,Windows Vis- ta,Windows 7yMinGW/MSYS
• Integrado conDART (software),CDash, CTesty
CPack, una colección de herramientas para prueba y liberación de software