Si en mayo anunciaba que estoy colaborando en el desarrollo del sitio web del cirujano Xavier Sánchez hoy les comunico que está finalizado. Aquí pueden verlo.
Servicios web para fuentes
Algo que da algún que otro dolor de cabeza cuando implementamos el aspecto visual de una web es la maquetación, es muy difícil conseguir que la misma web se visualice igual en todas las posibles combinaciones de navegadores, sistemas operativos y resoluciones de pantalla. A solucionar uno de estos puntos oscuros vienen las fuentes web. Como no todos los sistemas operativos disponen de las mismas fuentes, podemos indicar al navegador mediante los estilos fuentes alternativas para que, en caso de que el sistema operativo no disponga de una, pueda recurrir a otra:
font-family: "Lucida Grande","Lucida Sans Unicode", sans-serif
Con esta indicación el sistema primero intentará usar Lucida Grande, frecuente en los Mac, en caso de no disponer de ella, como ocurre en los Linux y Unix, recurrirá a Lucida Sans Unicode, si tampoco dispone de ella recurrirá a Sans-serif. En caso de no disponder de ninguna de las fuentes indicadas recurrirá a la que el sistema tenga por defecto.
Un problema derivado de esto es que el tamaño de cada familia de fuente es distinto así que el mismo texto podría ocupar más o menos espacio en función de la fuente escogida, pudiendo llegar incluso a que el texto se desborde y «quiebre» la página o una parte de ella. Una solución a esto sería usar sólo fuentes «seguras», pero un sitio hecho exclusivamente en Arial y Serif sería algo aburrido, ¿verdad?
Por suerte, disponemos de servicios web que nos proporcionan fuentes para que estas se vean igual en todos los sistemas, aquí pueden ver una tabla bastante completa de empresas que ofrecen estos servicios.
El único servicio gratuito que conozco a día de hoy es el de Google. He aquí un ejemplo para ilustrar el sencillo uso de Google Fonts:
<link rel="stylesheet" type="text/css" href="http://fonts.googleapis.com/css?family=Tangerine" />
Incluimos en nuestra web esta hoja de estilos generada en un servidor de Google y pasamos como parámetro la fuente que queremos importar: Tangerine. A partir de ahora es una fuente más que podemos usar en nuestra web, por ejemplo creamos un estilo llamado «googleFont»:
.googleFont {
font-family: 'Tangerine', serif;
font-size: 40px;
}
Y lo aplicamos donde deseemos:
Ejemplo de la Google Font Tangerine
En la documentación de Google tenemos toda la información sobre la importación de fuentes.
Estoy esperando poder empezarlas a usar en mi próximo proyecto. Será en el «duro» mundo de los entornos de producción donde realmente podré poner a prueba el sistema.
Actualización 29/06/2011:
Hablando sobre Google Fonts con otros desarrolladores me han dicho que no les gusta la idea de alojar contenido que el sitio web necesita en servidores ajenos: ¿qué pasaría si el servidor se cayera? Bien, que los server racks de Google se caigan es algo que pocas veces se ha visto pero por si desconfiamos Google nos permite descargarnos los .ttf y alojarlos en nuestro servidor. En las fases iniciales del desarrollo podemos trabajar con los ficheros alojados en los servidores de Google y una vez finalizado el sitio los movemos a nuestro servidor.
Google nos da otra razón a favor: han aumentado las fuentes. Aquí está la versión 2 de la librería.
Sitio web para un cirujano plástico de Cali
Sigo colaborando con Net Midas, ésta vez con el desarrollo de la página web para el cirujano plástico Xavier Sánchez, radicado en Cali. Este proyecto está relacionado con Guía Cirugía y esperamos poder seguir ofreciendo nuestras soluciones tecnológicas a más cirujanos en el futuro. En cuanto esté finalizado les mostraré el sitio.
Optimización del sitio web de Hawley Lane Dental
La clínica dental Hawley Lane Dental, situada en Connecticut, Estados Unidos, dispone de un sitio web bien diseñado y funcional, pero presentaba unos inconvenientes para sus usuarios en los que me he puesto a trabajar:
El primero: ya solucionado, era la llegada indiscriminada de spam al sitio.
El segundo: una cierta lentitud del sitio sobre la que voy a trabajar para optimizar los tiempos de descarga. No tan sólo a los usuarios les cansan los sitios lentos, también los buscadores puntúan algo mejor a los sitios que descargan rápido.
Desde luego cada uno de estos temas da, como mínimo, para un artículo propio pero de momento dejemos éste por finalizado.
Drupal: en mi opinión el mejor CMS en PHP
Existen bastantes páginas donde podemos encontrar comparativas y opiniones de diferentes CMS’s. La opinión que aquí expreso está basada en mis años de experiencia y me centraré en los 3 más populares desarrollados en PHP: Drupal, Joomla y WordPress. En Python me parece excelente Plone, aunque complejo, en .NET todavía no he conocido ninguno bueno pero en este artículo no hablaré de ellos.
WordPress fue concebido para los blogs pero hoy en día dispone de muchos plugins alguno de los cuales pretende que WordPress pueda ir más allá. Un ejemplo representativo es crear una tienda con WordPress y mediante un plugin añadirle la funcionalidad de e-commerce: he tenido que sufrir ese plugin y ver que simplemente WordPress no da la talla. Probablemente es el mejor CMS para gestionar blogs y sitios web muy estándar pero tiene carencias importantes sacado de ese contexto. Por supuesto eso no significa que no pueda salir del mundo de los blogs, pero hay CMS’s mejores para ello. Es el que hago servir para este sitio web y es realmente muy fácil, rápido y cómodo de mantener, así como también lo fue crearlo.
Joomla es uno de los CMS más populares. Su principal ventaja sobre Drupal es que es más rápido desarrollar un sitio, siempre y cuando sea un sitio web que no se aleje demasiado de aquello para lo que Joomla fue ideado. En otras palabras: cuando debemos personalizar y empezar a tocar el corazón para dotar al sitio de nuevas funcionalidades las cosas se complican sobremanera.
Cuando se quiere un sitio personalizado me parece que Drupal es ideal. No tan solo por la creación de diseños personalizados mediante temas (themes), como cualquier otro CMS, sino también por la capacidad de crear nuevas funcionalidades y modificar las existentes mediante «hooks» o «callbacks». Los «hooks» nos permiten tanto la modificación del núcleo del CMS como la de los módulos sin tocar una sola línea del código original, lo que permite actualizar tanto el núcleo como los módulos sin que se pierdan las funcionalidades implementadas en los hooks. Y hablando de módulos, la cantidad de estos es ingente: desde módulos para hacer copias de seguridad de la base de datos hasta módulos para crear tipos de contenidos y campos personalizados pasando por módulos para optimizar el sitio para los motores de búsqueda, módulos para mostrar galerías de imágenes o vídeos, etc. Hay tantos módulos que no es muy frecuente que debamos desarrollar uno propio. La perfecta separación entre por un lado el núcleo del CMS y los módulos desarrollados por terceros y por el otro nuestras modificaciones hacen que un sitio en Drupal sea muy agradable de mantener, siempre y cuando en el desarrollo se haya respetado dicha separación.
Al hablar de las actualizaciones he tocado el tema de la seguridad y ahí Drupal también se sitúa mejor: la reputación de Joomla en lo que a seguridad se refiere no es muy buena.
Obviamente no todo son ventajas con Drupal. Su principal defecto es que el código sea un poco lo que en la jerga de los programadores llamamos «spaghetti code». Drupal, al menos en su versión 6, no utiliza muchas de las características de orientación a objetos que proporciona PHP 5 aunque a cambio puede funcionar con PHP 4.4.0. Si miramos el código la primera impresión es que es procedimental: no encontraremos clases. Si bien esa herencia de la versión 4 de PHP ahora le pesa, en su diseño se incluyeron algunos de los principios de la orientación a objetos que lo mitigan parcialmente. Componentes como los módulos, temas, nodos y usuarios encajan en la descripción de objeto. Incluso se emuló la herencia, la abstracción, la encapsulación y el polimorfismo. Por otro lado, los usuarios menos avezados que tengan la tarea de administrar el sitio web pueden encontrar algunos aspectos del back-end difíciles de usar, por ejemplo he oído quejas sobre la dificultad del módulo vistas pero es también éste uno de los módulos más poderosos de Drupal y no es fácil simplificarlo manteniendo al mismo tiempo toda su potencia. Lo que sucede con dicho módulo es un buen resumen de la idea detrás de Drupal: muy configurable y versátil pero eso tiene un coste en su facilidad de uso.
Otra característica de Drupal, que no es positiva ni negativa a mi entender, es que no usa el hoy en día tan popular patrón MVC (Modelo Vista Controlador) sino el menos conocido PAC (Presentación Abstracción Control). (Aunque por ahí hay gente intentado hacer encajar Drupal en el patrón MVC). Que el patrón MVC sea el más popular no implica necesariamente que sea el mejor para la web, frecuentemente en el mundo de la informática lo más popular (léase usado) no es lo mejor pues hay otros factores que entran en juego, pero todo eso ya sería tema para muchos artículos 😉 y no tiene cabida en esta breve oda de Drupal.
Guía Cirugía
Colaboro conjuntamente con Net Midas, en el aspecto técnico (me encargo de la programación e implementación) del interesante proyecto «Guía Cirugía». Guía Cirugía será un directorio donde usuarios de todo el mundo podrán ponerse en contacto con cirujanos plásticos de toda América Latina y España. Entre otros aspectos, el portal también será un punto de encuentro entre usuarios, un lugar donde los cirujanos publicarán artículos especializados, donde los usuarios podrán plantear sus dudas a los cirujanos, incluirá una sección para cirujanos y más funcionalidades y apartados de los cuales les iremos informando aquí en el blog de VIC Services.
Si bien la colaboración será inicialmente en el desarrollo de todo el apartado técnico pero espero poder aportar también ideas y conocimientos en otros aspectos.
¡Les mantendré informados!