miércoles, 14 de marzo de 2007

Dos programas

A veces uno descubre programas que se le acaban convirtiendo en casi imprescindibles. Sobre todo cuando se necesitan compartir datos entre Linux y Windows o entre el trabajo y casa.

Programas como OpenOffice portable, Firefox portable o Putty portable. Todos ellos descargables desde PortableApps y que pueden correr desde un lapiz usb sin dejar rastro en el ordenador en el que estás. Y que, como he dicho antes, puedes usar igualmente en Linux y en Windows (Putty tal cual no, pero para eso está ssh).

Aún así, he encontrado dos programas que no están en esa página y que utilizo sin parar desde que los encontré:

  1. KeePass: Gestor de contraseñas. Después de probar varios de ellos tanto libres como 'pirateados', me quedo con este de lejos. Versión para windows y linux, tiene un campo de comentarios grande para cada entrada, generador de claves mediante aleatoriedad (del tamaño y complejidad que se quiera) y se pueden adjuntar archivos en las entradas. Lo uso principalmente para las claves del trabajo, pero también para las de casa.
  2. TreeLine: Gestor de notas, outliner, no sé cómo llamarlo. Pero desde luego, de nuevo, otro que me ha enganchado. Sirve para casi todo. Es como una base de datos donde los datos pueden ser estructurados y buscados de la forma que mejor te convenga (viva el XML!!!). Hecho de menos el uso de etiquetas en vez de la forma de arbol, pero como es tan configurable, se las puedes poner igualmente en el registro/s que te crees. Adiós a las notas que pierdes o que no puedes encontrar, los papelitos por encima de la mesa, las 200 ideas diferentes apuntadas una entre otra en una hoja de cuaderno. Los cuadernos de notas no son en absoluto algo obsoleto, pero desde luego son menos versátiles que este tipo de aplicaciones. Imprescindible (creo yo) para programadores, administradores y demás geeks informáticos. Programado en python, con versión para Linux y Windows y permite cifrar el fichero de notas (algo creo que imprescindible para un programa portable de los de llevar en un pendrive).

Desde luego que existen programas on-line que permiten lo mismo. O incluso quizá más versátiles (como google notebook y su sistema de etiquetas o PassPack como gestor de claves on-line). Pero a mi no me gusta mucho dejar estas cosas en los servidores de otros. Mejor en mi disco local ;) por si acaso.

Por cierto, para ver cómo hacer TreeLine portable, buscarlo en esta página. Hay muchas instrucciones de cómo hacer aplicaciones de primeras no portables, portables.

miércoles, 14 de febrero de 2007

Seguridad informática

"La defensa necesita cubrir todas las vulnerabilidades. El atacante sólo necesita explotar una."

Mr_Marshall.

Leido en los comentarios de Kriptópolis.

domingo, 28 de enero de 2007

Usabilidad y cartografía medieval

El pasado día 18 de enero, asistí al laboratorio sobre cartografía medieval que impartió Javier Mendívil en Cadius Zaragoza. Mi visión particular de aquel acto, va a consistir en ver algunos problemas de usabilidad comunes entre mapas y páginas web, y mencionar directrices de cómo solucionarlos. Eso sí, quisiera agradecer a Javier, tanto los magníficos contenidos impartidos en el laboratorio, como los complementarios que iban como regalo para los asistentes.

Contenido denso

La apariencia de una página llena de texto y de imágenes sugiere que será difícil obtener la información que se está buscando. No es posible rastrear bien el contenido.

En un sitio web, esto es aún más problemático que en un mapa, puesto que el usuario simplemente decidirá que no merece la pena invertir esfuerzo en la búsqueda, y se irá a otra página.

Habrá que redactar contenidos más cortos, que vayan al grano, que hablen el mismo idioma que la clientela a la que está dirigido el contenido, y saber jugar con el espacio en blanco en el diseño para que los usuarios puedan centrar su atención en el rastreo de la información.

Diseño relleno

Muchas páginas web comenten el error de abrumar a los usuarios con elementos móviles, luces parpadeantes y enlaces mal estructurados.

No hay necesidad de poner más gráficos que los necesarios y a un tamaño manejable. No hace falta perder el tiempo y el espacio en decorar, sino en comunicar. Los sitios web deberían ir directos al negocio, que es lo que buscan los clientes.

Artilugios de interfaz gráfica de usuario de diseño propio

Algunos diseñadores de interfaz, prefieren no seguir las convenciones existentes para ciertos elementos de diseño, como campos de introducción de datos (cajas de texto, botones de radio, casillas de verificación) o las barras de desplazamiento. En muchas ocasiones por ser sitios construidos en Flash o por intentar diferenciar el diseño del sitio web.

Si algo no parece lo que es, seguramente no se percibirá como tal y no se usará correctamente. Esto se traduce en que si se están pidiendo datos al usuario, tal vez este no logre enviarlos, o que si se está cambiando la forma de una barra de desplazamiento, al no reconocerse como tal, no se utilice y se pierda contenido importante.

No mostrar quién está detrás de la información

Al igual que para dar credibilidad de una obra vale con una firma, para dar credibilidad y confianza a los usuarios de un sitio web, es conveniente añadir información sobre la compañía (o las personas) que están detrás.

Es muy común facilitar esta información en páginas tituladas Acerca de nosotros o Quiénes somos. En ellas debe figurar claramente como contactar y encontrar la compañía, la filosofía de la organización y, como información auxiliar, no estaría mal añadir algunos hechos relevantes en la historia de la empresa.

Legibilidad

La tipografía ofrece una idea sobre el sitio web y transmite información acerca de lo que el usuario puede hacer en él. Las distintas fuentes de letra pueden significar capricho o seriedad y el tamaño y el color pueden destacar el contenido.

Pero si el tamaño no es legible, ya sea por el tamaño o por la grafía, se convierte en incómodo y molesto, y el usuario desistirá de leer el contenido aunque le pueda resultar de interés.

Para contenidos en pantalla, es mejor utilizar letras sin serifa. Para titulares, puede utilizarse tanto letras con serifa como sin ella porque el tamaño será mayor y habrá menos problemas con la resolución. En tamaños pequeños, las letras con serifa se vuelven borrosas por el suavizado de los bordes dentados.

Si, por cuestiones de diseño, se ha elegido un tamaño menor al recomendable (12 puntos), siempre hay que dar la posibilidad de que el usuario pueda aumentar el tamaño, ya sea mediante alguna herramienta del navegador o proporcionando enlaces (o botones) en la página para agrandar el texto. Para que desde el navegador siempre se pueda cambiar el tamaño del texto, es mejor usar tamaños relativos.

Contraste entre texto y fondo

Leer en pantalla es mucho más costoso que leer en papel porque existe menos resolución para pintar las letras. En un libro podemos tener unos 3000 puntos por pulgada (dpi), mientras que en un monitor podemos haber 100 dpi como mucho (lo normal suele ser 72 dpi).

Los contrastes altos entre texto y fondo pueden hacer la lectura más fácil. Aunque lo mejor sigue siendo texto negro sobre fondo blanco, la norma a seguir es evitar el uso de colores similares, ya que el bajo contraste cansa la vista causa molestias. Tampoco es recomendable utilizar combinaciones de colores brillantes porque causan un efecto vibrante en los textos (como usar texto rojo sobre fondo azul).

Palabras clave resaltadas

Resaltar las palabras importantes de un texto atraen la atención del lector hacia áreas específicas. Sin embargo, resaltar frases completas o demasiado largas, ralentiza la lectura, porque enfatizar demasiados elementos, causa el efecto contrario: nada destaca, todo parece igual de importante.


El extracto del listado de problemas de usabilidad ha sido obtenido del libro Prioritizing Web Usability, escrito por Jakob Nielsen y Hoa Loranger, disponible en español en la colección de Anaya Multimedia.

miércoles, 3 de enero de 2007

Los elementos perdidos de HTML

Soy una de esas personas que, cuando miran una nueva página web, no se fijan tanto en lo que se ve a simple vista como en el esqueleto que le da forma: el código fuente. Ahí es donde se puede apreciar la verdadera estructura del contenido y la semántica que se ha utilizado (la que se encontrarán los motores que indexen esa página web).

Bien es verdad que HTML tiene algunas carencias para marcar el contenido, que se están intentando solucionar con la redacción de XHTML 2.0 o HTML 5.0 (que todavía está más en pañales que XHTML 2.0). Pero también es cierto que, algunos elementos que sí posee, no son utilizados (en los casos en los que se deberían utilizar). Tal vez sea por desconocimiento o por usar algunos editores WYSIWYG (bien sean de escritorio como DreamWeaver o bien estén hechos en JavaScript como TinyMCE), pero no debemos olvidar que para darle un correcto significado al contenido, hay que marcarlo de la forma adecuada.

No debemos caer en la tentación de marcar en función de la presentación que luego los navegadores dan a esos elementos. Hay que recordar que siempre podemos cambiar la presentación gracias a las hojas de estilo en cascada (CSS).

Marcado de edición de textos

ins y del
Cuando estamos desarrollando un documento, hay cosas que no siempre se escriben bien a la primera, o bien luego hay que hacer algún ajuste o actualización. HTML nos permite marcar los cambios, ya sean añadidos o borrados, con las etiquetas ins y del. De esta forma, al igual que en otros editores de texto, de un vistazo, se pueden descubrir los cambios en el documento.

Además, estas etiquetas tienen 2 atributos que sirven para saber las razones del cambio (cite) y cuándo se realizó dicho cambio (datetime). El formato de este último atributo es un poco especial y riguroso. Está basado en esta plantilla: YYYY-MM-DDThh:mm:ssTZD
  • YYYY: año con 4 dígitos
  • MM: mes con 2 dígitos (01-12)
  • DD: día con 2 dígitos (01-31)
  • T: caracter separador entre fecha y hora
  • hh: hora con 2 dígitos (00-23)
  • mm: minutos con 2 dígitos (00-59); es información opcional
  • ss: segundos con 2 dígitos (00-59); es información opcional
  • TZD: zona horaria, Z para hora Zulú (la del meridiano de Greenwich) o desfase en horas y minutos (positivo o negativo) del huso horario correspondiente


Más información sobre la plantilla de datetime en ISO 8601 de la Wikipedia.

Ejemplo de uso de los elementos ins y del:

<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit<ins cite="lorem ipsum..." datetime="2007-01-05T13:24+01:00">, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat</ins>. Ut wisi enim ad minim veniam<del cite="lorem ipsum..." datetime="2007-01-04T08:21:34-05:00">, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat</del>. Duis autem vel eum iriure dolor in hendrerit in ...</p>

bdo

Otro desconocido elemento para la edición de textos es bdo. En inglés, bdo es la abreviatura de bidirectional override, y si nos atenemos a esta definición, podemos adivinar su función: sobreescribir el tratamiento direccional del texto para el contenido que se encierre dentro del elemento.

Por si no ha quedado claro, intentaré explicarlo mejor. Uno de los atributos de la etiqueta html es dir, que sirve para indicar cómo se debe escribir (el navegador) el texto que contiene el documento, es decir, si se escribe de izquierda a derecha (ltr) o de derecha a izquierda (rtl).

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" dir="ltr" lang="es">
...

Como se puede ver en el ejemplo, con el atributo dir se define la legibilidad de todo el documento pero, ¿qué ocurre si dentro de un texto que se lee de izquierda a derecha, necesitamos incrustar algo de contenido que está en otro idioma y además se lee al revés? Para eso existe el elemento bdo. Veámoslo con otro ejemplo:

...
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" dir="ltr" lang="es">
...
<p>Contenido en idioma español. Se escribe de izquierda a derecha.</p>
<p><bdo lang="zh-TW" dir="rtl">Contenido en otro idioma (chino tradicional) que se redacta de derecha a izquierda.</bdo><p>
...

Como se puede ver en el ejemplo, se ha definido un idioma y una dirección de escritura general para el documento (en la etiqueta html) y luego se ha marcado el texto en otro idioma (que si supiera chino, estaría correctamente escrito ;-) ) gracias a la etiqueta bdo.

Etiquetas de estilo basado en contenido


cite

cite sirve para indicar que el texto que contiene es una referencia bibliográfica. Junto con el elemento para enlaces (a), puede servir para hacer referencia a otro documento donde se encuentra la fuente que hemos citado.

<blockquote lang="en-GB">You can't always get what you want; but if you try sometimes, you just might find, you get what you need.</blockquote>

<p><cite><a href="http://en.wikipedia.org/wiki/You_Can't_Always_Get_What_You_Want">Rolling Stones</a></cite></p>

code

La etiqueta code indica que el texto que encierra es código fuente de programación. Esto hace que los navegadores utilicen (por defecto y a no ser que establezcamos lo contrario con CSS) una fuente monoespaciada (todos los caracteres tienen la misma anchura) para visualizar el texto.

<pre><code lang="en-US">
/**
* string numberToAlphabet(int $number)
*
* Converts an integer in an alphabetical string (1 <= $number <= 702)
*
* @author PHP manual, user contributes notes for chr() function
* @param int $number integer to convert
* @return string alphabetical string
* @access public
*/
function numberToAlphabet($number)
{
return ($number-- > 26 ? chr(($number / 26 + 25) % 26 + ord('A')) : '') . chr($number % 26 + ord('A'));
}
</code></pre>

En el ejemplo, se ha encerrado el contenido de code dentro de la etiqueta pre por 2 razones:
  • code es una etiqueta para texto en línea (es decir, tiene [o debe] ir dentro de otra etiqueta de bloque distinta de body, que sólo debería contener otros elementos de bloque)
  • con el uso de pre se preservan los espacios y líneas en blanco del texto, necesarios para dar formato al código fuente

dfn

La etiqueta dfn se utiliza para marcar los términos (y no las definiciones) nuevos (o especiales) de un documento que necesitan la atención del lector. Como regla de buen estilo, sólo se delimita la primera aparición del término en el texto.

<p>El software libre es también llamado software de código abierto. La razón por la que se llama así es que, junto con el <dfn>programa objeto</dfn>, se distribuye el <dfn>código fuente</dfn> del mismo.</p>


Para definir los conceptos (como cuando se escribe un glosario de términos) existe otro conjunto de etiquetas:
  • dl: lista de definiciones
  • dt: término a definir
  • dd: definición del término


<dl>
<dt>Programa objeto</dt>

<dd>Instrucciones que se ejecutan directamente contra la máquina y que no son comprensibles por las personas.</dd>

<dt>Código fuente</dt>

<dd>Instrucciones escritas en un lenguaje de programación que el ser humano puede leer pero que no comprende directamente la máquina.</dd>
</dl>

kbd

kbd es la forma más indicada de indicar que un determinado texto es introducido desde el teclado (keyboard). Es muy útil para el caso de redactar manuales o cualquier otro tipo de documentación técnica.

<pre><samp>
C:\><kbd>c:\mysql\bin\mysql -uadmin -p mysql</kbd>
Enter password: <kbd>*********</kbd>
</samp></pre>

samp

Como se ha podido ver en el ejemplo anterior, en el que hemos hecho uso ya de la etiqueta samp (sample), esta sirve para mostrar la salida de algunos programas o ejemplos de código fuente (como los que estoy utilizando en este artículo).
var

La etiqueta var se utiliza para marcar texto que sirve de plantilla, es decir, para texto que no se debe introducir tal cual, sino que debe reemplazarse por otro a la hora de teclearlo. Como ejemplo, puede servir este extracto donde se combinan además otras etiquetas vistas anteriormente.

<p>Verifique su base de datos y usuario accediendo a la nueva base de datos con el nuevo usuario.</p>

<pre><samp>
C:\><kbd>C:\mysql\bin\mysql -u <var>new_user</var> -p<var>new_password</var> <var>new_database</var></kbd>
</samp></pre>

Notas finales


Para la redacción de este artículo he utilizado algunas deficiones y ejemplos que aparecen en el libro HTML y XHTML: La Guía Definitiva, original de la editorial O'Reilly pero traducido al español por Anaya Multimedia.

En los ejemplos expuestos se ha usado el punto de vista de quien codifica la página, por eso se muestra el código fuente necesario para marcar el contenido. Queda a disposición del lector la prueba de dichos ejemplos en su propio navegador para ver cómo se visualizan. Se ha optado por hacerlo de este modo porque no existen reglas fijas de presentación y estas pueden diferir entre diferentes agentes de usuario (navegadores web).

Actualización (2007-01-04):
Sólo un día después de la publicación de este artículo, me encuentro con esta guía de marcado semántico. Para quienes deseen completar esta lectura, se lo recomiendo encarecidamente: se habla también del correcto uso de los elementos más habituales (encabezados, párrafos, listas, ...) y hay más ejemplos sobre la adecuada utilización de las etiquetas de HTML.

lunes, 25 de diciembre de 2006

Grub

A veces, cuando uno toca lo que no debe o instala sistemas operativos que no respetan para nada el actual MBR, el resultado es que intentas arrancar y o bien te es imposible, o te arranca el bendito Windows. Últimamente he tenido que reinstalar GRUB en el arranque de mi máquina y nunca me acuerdo de cómo se hace, así que siempre tengo que acudir a Google a mirarlo. Pues bien, si me lo apunto aquí seguro que sabré dónde ir a buscarlo:

  1. Arrancar con una Live-CD que disponga de GRUB (como Kubuntu/Ubuntu, Knoppix). O con cualquier distribución que entre sus opciones de arranque esté el modo rescate (rescue mode - F5 - linux rescue).
  2. Ejecutar grub desde consola y en el intérprete de comandos de GRUB:
  • root (hd0,1) # en mi caso /dev/sda2
  • setup (hd0) # /dev/sda
  • quit

Y listos. Ya podemos reiniciar y sacar el cd. Tendremos el menú de GRUB tal cual estaba antes de liarla.

domingo, 3 de diciembre de 2006

Comentarios condicionales de HTML

Las guerras entre navegadores fueron cruentas en su día y sólo han dejado vencidos a su paso: los pobres desarrolladores web que tienen que usar todo su ingenio para conseguir que una página se vea igual en todos los navegadores (actuales, antiguos y futuros).

Afortunadamente, el futuro pinta bastante bien en este aspecto. Los nuevos clientes web que salen al mercado (Firefox, Opera, Safari, Konqueror, etc...) tienen entre sus objetivos seguir y cumplir los estándares que se discuten y aprueban en el W3C.

Pero, ¿qué hacer con los navegadores que a día de hoy se usan aunque sean auténticas reliquias del pasado? Existen varias opciones:


  • Hacer varias hojas de estilos, cada una para cada navegador.

  • Hacer una única hoja de estilos, mezclando código válido (que es lo que el W3C recomienda) con selectores específicos que sacan partido de los errores de interpretación de las CSS de cada navegador.

  • Como variación de la primera opción (varias CSS), podemos hacer una CSS general para todos, y alguna más específica para aquellos navegadores en los que haya algún problemilla que resolver.



La primera opción requiere de 2 cosas: tener una manera de poder identificar a cada uno de los navegadores (a través de un lenguaje de programación del lado del servidor como PHP, por ejemplo), y mucho trabajo por nuestra parte, ya que deberemos repetir muchísimo código en cada una de las hojas de estilos. El trabajo de hacer CSS, en principio, dependerá de nuestra paciencia, pero identificar navegadores web no es una tarea fácil y no siempre será posible llevarlo a cabo (si sólo disponemos de HTML para hacer nuestras páginas).

La segunda opción (una sóla CSS), ha sido durante los últimos años la más usada (e incluso recomendada). Requiere de una gran curva de aprendizaje puesto que navegadores ha habido (y hay) muchos y cada uno tiene unos bugs distintos para explotar.

Tal y como va el artículo, todo parece indicar que la tercera opción es la más recomendable. Si hubiera escrito estas líneas hace un año, mi respuesta hubiera sido que la mejor era la segunda (aunque implique muchas búsquedas en Internet y muchas horas de pruebas y más pruebas), pero el mundillo web tiene estas cosas: lo que hasta ayer era el estándar de facto, mañana mismo se convierte en una tecnología obsoleta. Más o menos es lo que ha pasado. Microsoft ha sacado (después de 6 años de sequía) su nuevo navegador (el flamante y renovado IE 7) y como siempre, para bien o para mal, las reglas del juego han cambiado.

La forma de implantar la tercera opción es hacer una CSS general (que se aplicará a todos los navegadores) desarrollándola en algún cliente web que respete lo más posible los estándares de hojas de estilos (como Opera, Safari o Firefox), y luego hacer otras CSS más reducidas (que servirán para sobrescribir algunas reglas generales) para los (en realidad el) navegadores que no siguen las reglas del juego en algún aspecto. ¿Y cómo se consigue esto? Pues con alguna de las herramientas que la misma Microsoft desarrolló en su momento para competir con la casi desaparecida NetScape: los comentarios condicionales en HTML.

Veamos esto con un ejemplo:

...
<head>
...

<link rel="stylesheet" type="text/css" href="./css/all_nav.css" media="screen" title="Hoja de estilos general" />

<!--[if IE 6]>
<link rel="stylesheet" type="text/css" href="./css/ie_fix.css" media="screen" title="Hoja de estilos específica para IE 6" />
<![endif]-->

<!--[if IE 7]>
<link rel="stylesheet" type="text/css" href="./css/ie7_fix.css" media="screen" title="Hoja de estilos específica para IE 7" />
<![endif]-->

...
</head>
...


Esta técnica (apoyada por la mismísima Microsoft para que los desarrolladores web lleven a cabo la migración de sitios para que funcionen con su nuevo explorador), nos permite tener una CSS general acorde a los estándares promulgados por el W3C que nos servirá para los navegadores actuales y para los que vengan después, y por otro lado, tener localizados, en pequeños archivos, las excepciones a las reglas, sin tener que utilizar molestos y complicados hacks. Así, el código de nuestras páginas validará y a la vez, los contenidos (que es lo que realmente importa), se verán de una forma bastante similar en todos los navegadores que se usan hoy en día.

sábado, 2 de diciembre de 2006

Visita al Laboratorio Aragonés de Usabilidad

Ayer, con motivo del Cadius Zaragoza de Diciembre, fuimos de visita al Laboratorio Aragonés de Usabilidad. Entre los actos a los que asistimos, hubo un focus group sobre la página web que han realizado. Hubo multitud de propuestas y de todas ellas tomaron nota, pero como el movimiento se demuestra andando, aprovecho la ocasión para presentar un rediseño (o realineamiento) de su página web.

La página propuesta ha sido probada en los siguientes navegadores:

  • Firefox 1.0.6 (windows)
  • Firefox 2.0 (linux)
  • Internet Explorer 6.0 (windows)
  • Opera 8 (windows)

Actualización: 2013-01-09

Da gusto ver cómo pasan los años y comprobar que ahí está, ahí está, viendo pasar el tiempo... ;)

jueves, 24 de agosto de 2006

Cómo instalar WAPP

Para empezar, ¿qué significa eso de WAPP? Es un acrónimo que quiere decir Windows Apache PHP4 PHP5. Si hay infinidad de referencias a cómo instalar LAMP (Linux Apache MySQL PHP) o AMP (Apache MySQL PHP), tanto en Linux como en Windows, hay muy pocas explicaciones acerca de cómo instalar un entorno mixto de desarrollo para PHP (versiones 4 y 5). De eso trata este artículo.

PHP es un lenguaje de programación bastante usado en entornos web dinámicos, que ha evolucionado muchísimo en muy poco tiempo. Hace ya 2 años que salió la versión 5, sin embargo, aun siendo mejor, no está siendo usada por la comunidad de programadores. Las razones son simples. Mejor dicho, la razón es simple. Casi todo el hosting que permite la ejecución de scripts PHP está sólamente preparado para PHP4. Los cambios entre ambas versiones son profundos (sobre todo en cuestiones de OOP) y la compatibilidad hacia atrás de la versión 5 tiene sus problemas. Ante esta perspectiva, las empresas de hospedaje web han preferido mantener la versión 4 para que todo el código existente (que es cuantioso) siga funcionando.

Pero como las mejoras de la versión 5 (aunque ya está en preparación la versión 6) son evidentes, qué mejor que juguetear con ella en un entorno controlado (como puede ser nuestro ordenador personal) e ir viendo sobre el terreno cómo se comportan nuestros programas en ambas versiones.

Los siguientes pasos explican como instalar la versión 4 de PHP como módulo de Apache y la versión 5 como CGI, sobre un entorno de desarrollo con Microsoft Windows XP y Apache (ambos componentes se sobrentiende que están ya instalados). Para facilitar la instalación, se considerará que Apache (versión 1.3.x o 2.0.x, no la versión 2.2.x porque actualmente todavía no existe módulo de PHP para esta versión) está instalado en c:\apache\.


  1. Descargar las últimas versiones disponibles tanto de la versión 4 como de la 5. A día de hoy: 4.4.4 y 5.1.6. Es conveniente bajar los comprimidos para win32, no los instaladores. De esta forma podremos llevar a cabo la instalación de una forma más limpia y sin que nos falte nada (los instaladores para Windows sólo instalan PHP como CGI, no como módulo de Apache, y vienen sin extensiones externas).

  2. Descomprimir la versión 4 en el directorio c:\php\.

  3. Copiar el archivo c:\php\php.ini-recommended como c:\php\php.ini.

  4. Será necesario cambiar algunos parámetros del archivo php.ini. Son estos:

    extension_dir = "c:/php/extensions/"

    session.save_path = "C:\php\session" ; además será necesario crear ese directorio


  5. Añadir al PATH del sistema las rutas c:\php y c:\php\extensions. Para ello, al final del actual PATH, añadimos lo siguiente: ;c:\php;c:\php\extensions. El punto y coma es el separador de rutas. De esta forma, en lugar de copiar el fichero al directorio c:\windows\system32\, podremos actualizar a la próxima versión de PHP4 de una forma más ágil y limpia. Lo malo de hacerlo así, es que será necesario reiniciar el ordenador para que el sistema relea el PATH (con cerrar la sesión de usuario no es suficiente).

  6. Crear el fichero c:\apache\conf\php4.conf con el siguiente contenido:

    <VirtualHost *:80>
    # carga el módulo de Apache de PHP
    LoadModule php4_module "c:/php/sapi/php4apache2.dll"

    # permite tener el fichero php.ini en ese directorio y no en c:\windows
    PHPIniDir "C:/php"
    </VirtualHost>


  7. Editamos el fichero c:\apache\conf\httpd.conf y añadimos como última línea esto:

    include conf/php4.conf

    Es conveniente terminar la línea con un retorno de carro (por si acaso).

  8. Por último, como antes he indicado, habrá que reiniciar el sistema por haber cambiado el PATH. Tras hacerlo, ya tendremos instalado PHP4 como módulo de Apache. Para comprobarlo, crearemos en DocumentRoot (se considera como directorio de publicación para este artículo c:\apache\htdocs\, pero se puede cambiar en el archivo de configuración), el fichero prueba_php.php, que tendrá el siguiente contenido:

    <?php
    phpinfo();
    ?>

    Para ejecutarlo, habrá que apuntar el navegador web a http://localhost/prueba_php.php y ver qué aparece. Si todo ha ido bien, deberían mostrarse las características del entorno y los módulos de PHP cargados.



Ahora sigamos con PHP5.

  1. Para ello, lo primero será descomprimir la versión 5 en el directorio c:\php5\.

  2. Copiar el archivo c:\php5\php.ini-recommended como c:\php5\php.ini.

  3. Habrá que retocar ciertos parámetros del archivo php.ini. Son estos:

    ; Windows: "\path1;\path2"
    ;include_path = ".;c:\php5\includes" ; aunque esté comentado, corregimos la ruta para futuros usos

    extension_dir = "c:/php5/ext/"

    session.save_path = "c:/php5/session" ; además será necesario crear ese directorio


  4. Paso opcional. Si necesitamos acceder a bases de datos MySQL, deberemos habilitar la extensión en el archivo php.ini porque por defecto, en la versión 5, viene deshabilitada. Deberemos dejar así esta línea:

    extension=php_mysql.dll ; sin el punto y coma del principio para que no se tome como comentario


  5. Crear el fichero c:\apache\conf\php5.conf con el siguiente contenido:

    # para habilitar la escucha de Apache en otro puerto además del 80
    Listen 8080

    <VirtualHost *:8080>
    ScriptAlias /php5/ "c:/php5/"
    SetEnv PHPRC c:/php5

    # si nuestro DocumentRoot es otro directorio, habrá que cambiarlo
    <Directory "c:/apache/htdocs">
    Options +ExecCGI +FollowSymLinks
    </Directory>
    AddHandler php-cgi-script .php
    Action php-cgi-script /php5/php-cgi.exe
    </VirtualHost>


  6. Editamos el fichero c:\apache\conf\httpd.conf y añadimos como última línea esto:

    include conf/php5.conf

    Es conveniente, como antes hemos indicado, terminar la línea con un retorno de carro (por si acaso).

  7. Como último paso, habrá que reinicar de nuevo el servicio de Apache para que admita los cambios de configuración. Para probar que esta parte también funciona, esta vez pondremos en el navegador web http://localhost:8080/prueba_php.php. Nótese el cambio de puerto en la petición. PHP4, al ser módulo de Apache, recogerá las peticiones que se hagan al puerto 80. PHP5, en cambio, escuchará lo que se le mande en el puerto 8080. De esta forma, ya tenemos listo el entorno mixto de PHP.



Actualización (2006-11-09):
En la instalación de PHP4, si queremos habilitar alguna extensión (por ejemplo la relacionada con gettext [php_gettext.dll] para internacionalizar nuestras aplicaciones), será necesario añadir al path del sistema el directorio c:\php\dlls\. Para ello, habrá que modificar el path y agregar al final: ;c:\php\dlls. Después, hay que reiniciar el equipo para que el sistema se adapte al cambio.

domingo, 22 de enero de 2006

Hojas para tramposos

Curiosa traducción del término inglés cheat sheets. Supongo que nombrarlas como chuletas es algo más correcto y comprensible. Pero ya que espero que no sirvan para aprobar ningún examen sino que se utilicen para resfrescar la memoria cuando más se necesite, creo que la denominación más adecuada sería colecciones de pequeños recordatorios.

Me gustaría destacar 2 de estas colecciones:

Cheat Sheets - ILoveJackDaniels: centrada en temas de desarrollo web. Los formatos disponibles para descargar son PNG y PDF (excepto la de colores RGB, que sólo está en PNG).


Cheat Sheet Roundup. Incluye entre sus referencias a las anteriores y añade otras muchas, como por ejemplo: CVS, Subversion, Vim, ColdFusion, JSP, Java, Python...

Ambos enlaces son indispensables para vuestra colección particular.

jueves, 10 de noviembre de 2005

PCSofía: La sabiduría del PC

Con este nombre se presenta el amigo Hernan Berguan. Espero que nos dé la lata durante mucho tiempo. Estrena publicación online y estrena weblog. Todo un despliegue de medios para intentar llegar a cuanta más gente mejor.

Los temas sobre los que nos va a deleitar están relacionados con el quehacer diario de cualquier usuario de un ordenador personal. He aquí el sumario de temas del primer número.

  • Descubrimiento de la herramienta oculta msconfig
  • Creación de archivos PDF con PDFCreator
  • Enseñanzas sobre como buscar en Google
  • Semejanzas y diferencias entre el Explorer y el Internet Explorer
  • Filosofía y modus vivendi de los pringaos de la informática doméstica
  • Y un apunte sobre retretes galácticos


Que este resumen no os sirva como excusa para no suscribiros, bien al boletín electrónico (en formato PDF), bien a la bitácora. El estilo utilizado es refrescante y educativo. Merece la pena leerlo. A mí ya me ha enganchado y espero con ansia el próximo número.

domingo, 6 de noviembre de 2005

Del.icio.us, o como mantener al día tus favoritos

En casa, en el trabajo, en el cibercafé..., todos en algún momento hemos necesitado guardar un enlace en la lista de favoritos del navegador web. Para muchos, incluso, es un hábito muy común. Pero el sistema tradicional de manejo de estas listas de enlaces, deja bastante que desear en cuanto a clasificación y deslocalización. Mantener múltiples listas, según el navegador que estemos usando o la ubicación donde nos encontremos, y lo que aun es peor, como ir clasificando por temas todos los enlaces no es tarea sencilla si no podemos mantener todo centralizado.

Con el objetivo de paliar estos dos problemas, clasificación y centralización, nace el proyecto del.icio.us. Es un proyecto donde todos los enlaces que van incorporando los usuarios, a la vez son públicos para el resto. Nos permite tener centralizados todos los enlaces porque todos se almacenan en Internet y, gracias a su sistema de clasificación mediante etiquetas (tags en inglés), podremos ir catalogando nuestra colección de favoritos.

La gracia de las etiquetas es que sean a la vez breves y descriptivas. Por ejemplo, si para clasificar una dirección web necesitamos más de 4 o 5 etiquetas, probablemente no estaremos eligiendo las más adecuadas. El otro matiz importante sobre la elección de las etiquetas es que, si son comunes a las que utilizan otros usuarios, será más fácil buscar por estos conceptos dentro del propio sistema del.icio.us. Recordemos que toda la información es compartida y pública y, si la clasificación de la misma es la correcta, será más fácil recuperarla y acceder a otras direcciones relacionadas.

Cómo empezar a utilizar del.icio.us

Para resgistrarse en el sitio web de del.icio.us, sólo es necesario un nombre, una dirección de correo y una contraseña.

El modo de funcionamiento tampoco puede ser más sencillo, pero para que todavía lo sea más, vamos a explicar como simplificarlo gracias a varias extensiones disponibles para el navegador web Firefox.

Extensión delicious

El proceso de agregación de enlaces a nuestra colección no puede ser más simple gracias a esta extensión. Una vez instalada, añade un menú propio al menú contextual propio del navegador y, lo que es mejor, se puede añadir un nuevo botón en la barra de herramientas. Si esta es la opción elegida, mientras visualizamos la página que queremos agregar, sólo hará falta darle al nuevo botón para añadirla a la colección.

Para terminar de completar el proceso, se nos mostrará un diálogo con los siguientes campos:


  • Cuenta de del.icio.us donde agregar el enlace (podemos configurar varias en la extensión).
  • Dirección web de la página.
  • Título
  • Descripción (de no más de 255 caracteres).
  • Etiquetas para clasificar la información (separadas por espacios, se pueden poner tantas como queramos). Para que nos sirvan de referencia, también se mostrarán las etiquetas que nos recomienda el sistema, las de nuestra colección y las más populares que tengan que ver con la información que queremos clasificar.


Truco
Si utilizamos como etiqueta for:nombre_usuario_delicious podremos mandar enlaces a otro usuario. Más información sobre este tema en Microsiervos.

Extensión foxylicious

Una cosa es tener siempre en todo momento y lugar (siempre que tengamos conexión a la red), nuestra colección de enlaces en Internet, pero puede que queramos tener una copia de seguridad, por si acaso, en nuestro propio navegador. Esto es posible gracias a foxylicious. Con esta herramienta podremos mantener una copia sincronizada de la colección de enlaces en nuestros favoritos del navegador.

Después, exportando la lista a formato HTML, tendremos preparada una copia de seguridad.

Extensión delic123

O mejor llamada, delicious todo en uno. Nos intalará una barra de herramientas con todas las opciones a realizar con del.icio.us. Entre sus opciones, destacaré una: el campo de búsqueda que permite buscar enlaces en todo el sitio, en nuestra cuenta y en muchos sitios más.

Si os aficionais al sistema, acabareis utilizando esta última extensión. Está en constante evolución, al igual que el propio del.icio.us, para estar a la par en funcionalidades.

domingo, 2 de octubre de 2005

Extensiones para desarrolladores web en Firefox

Aparte de ser un navegador web más seguro que MSIE, Firefox está también mejor diseñado para usuarios de todo tipo. Las extensiones que se pueden añadir a la aplicación, según gustos y necesidades de cada cual, le dan a este navegador la potencia necesaria para desmarcarse, por ahora, claramente del resto.

En la página oficial de la fundación Mozilla, podeis encontrar una interminable lista de extensiones, plugins y temas para personalizar Firefox.

En este artículo, voy a enumerar algunas extensiones que pueden ser de gran ayuda para el desarrollo de páginas y aplicaciones web. Si conoceis alguna más, no dudeis en comentarla.

Web Developer Toolbar

Tal vez sea la extensión más conocida y más completa. Con ella se pueden realizar multitud de acciones como:

  • deshabilitar la caché, las cookies, las imágenes, java, javascript, los colores de la página, las hojas de estilos, ...,
  • añadir hojas de estilos de usuario, ver todos los archivos CSS de una determinada página, cambiar el modelo de cuadro entre el usado por el motor de Mozilla, Gecko, y el usado por Internet Explorer; ver los estilos aplicados a un elemento de una página, poder cambiar entre los diferentes estilos de los medios utilizados (handheld, screen, print), incluso editar los estilos de una página desde el propio navegador,
  • ver sobreimpresionado en un formulario el código HTML que lo construye (para poder ver campos ocultos en la propia página, por ejemplo), ver el contenido de campos de tipo password (transforma los asteriscos en texto en claro), quitar longitudes máximas a los campos de texto, mostrar información detallada de los formularios (todos los elementos con todos los valores de sus atributos),
  • mostrar las dimensiones y tamaños (y hasta las rutas) de las imágenes (de los elementos img, no de las usadas como fondo en las hojas de estilos), deshabilitar imágenes (incluso las de fondo) o hacerlas invisibles, ...,
  • ver información sobre la página: teclas de acceso rápido (access keys), identificadores y clases de los elementos de la página, tamaños de los elementos de bloque (aquellos que son contenedores de otros elementos), valores de los atributos href de los enlaces, cookies, javascript, listado de enlaces, cabeceras HTTP de respuesta,
  • limpiar la caché, el historial, las cookies; ver los comentarios de una página; marcar todos los enlaces como visitados o no visitados (y probar fácilmente los estilos de cada estado); enlaces para consultar las especificaciones del W3C, ...


La lista de funciones todavía es más larga, pero con esta muestra podeis daros cuenta de su gran utilidad.

HTML Validator

Una forma bastante cómoda de saber si seguimos los estándares del HTML es instalar esta extensión. Podremos ver al instante si la página es válida según el DOCTYPE que hayamos elegido. Marca tanto los errores graves como los avisos. También es posible verificar si cumplimos los diferentes niveles de accesibilidad.

Además, esta herramienta nos da la posibilidad de limpiar y corregir el código HTML, gracias a que está basada en Tidy.

FatWeb

Tras instalar esta utilidad, en la barra de estado del navegador podremos ver tanto el número de archivos que componen la página actual (archivos CSS, JavaScript, imágenes y la propia página HTML), como los bytes que suman entre todos ellos. En una ventana auxiliar, que se mostrará si hacemos click sobre la parte de la barra de estado que ocupa, aparecen en forma de resumen, los tamaños de cada uno de los ficheros.

También proporciona información sobre el tiempo estimado que costaría descargar esa cantidad de bytes con una conexión lenta (56 Kb) y una rápida (1.5 Mb).

Live HTTP Headers

Este visor de cabeceras HTTP puede ser muy útil en cuanto estamos trabajando contra servidores web. Podremos seguir todo el tráfico del protocolo HTTP generado por nuestras peticiones y las respuestas del servidor. Incluso se pueden ver los datos pasados vía POST en los formularios.

Header Monitor

Si tenemos instalada la extensión Live HTTP Headers, también podremos ver en acción a esta otra. Es menos potente que la anterior, pero tiene una ventaja: el contenido de la directiva HTTP que decidamos controlar aparece en la barra de estado del navegador, sin necesidad de abrir una ventana auxiliar.

Tamper Data

Permite ver y modificar las cabeceras HTTP. Puede capturar las peticiones de cada página y alterar los valores de las cabeceras antes de mandarlas al servidor.

User Agent Switcher

Puede ser interesante ver como se muestran algunas páginas según nos identifiquemos con un navegador u otro. Esta utilidad sirve para cambiar la identificación del explorador web. Por defecto viene con algunos definidos, como Internet Explorer 6, Opera 7.54 y NetScape 4.8, pero lo interesante es poder definir cuantas identificaciones queramos.

LinkChecker

Como su nombre indica, sirve para verificar si todos los enlaces de una página van a algún sitio. Conforme vaya analizando los enlaces, veremos como los va poniendo de un color diferente al que tenían en un principio: verde si es correcto, rojo si es inválido, amarillo si se requieren credenciales para seguir el enlace y gris si no ha sido analizado. Una vez que haya terminado, si nos ponemos encima de cada enlace, nos dirá si el enlace es válido o no, si no lo ha analizado por apuntar a una cuenta de correo o contener código javascript (práctica esta que debemos evitar siempre). Si algún enlace no es sintácticamente correcto, es posible que la herramienta se pare y deje de analizar, pero no será muy difícil localizar el enlace conflictivo: el siguiente enlace al último coloreado.

Inspector Widget

Añade una opción en el menú contextual para acceder al inspector DOM que viene en Firefox.

MeasureIt

Sirve para medir zonas de la página en píxeles, tanto la altura como la altura. Como inconvenientes diré que he sido incapaz de redimensionar una zona creada con esta herramienta. No sé si es que no se puede o es que todavía no la sé manejar adecuadamente. Tampoco he sabido como tener más de una zona definida al mismo tiempo.

Checky

Para que no se nos olvide ningún elemento ni ninguna prueba a la hora de validar una página: HTML, CSS, RDF, RSS, WAI/508, enlaces, navegador lynx online, ... Casi todas las herramientas existentes en Internet para validar contenidos están recogidas en esta extensión, y están a un sólo click de distancia.

TAW3

TAW son las siglas de Test de Accesibilidad Web. Pulsando sobre el botón que añade en la barra de estado de Firefox, tendremos la posibilidad de verificar si seguimos las pautas de accesibilidad (niveles 1, 2 y 3). El validador online al que se conecta es www.tawdis.net.

Fangs

¿Cómo saber si los usuarios que utilizan lectores de pantalla ven exactamente el contenido tal y como queremos que lo lean? Esta interesante utilidad viene a solucionar nuestras dudas. En una ventana auxiliar nos mostrará la forma en que un lector de páginas web mostrará la información al usuario. Las herramientas de validación de accesibilidad no aseguran que los contenidos sean realmente accesibles, pero esta herramienta puede ayudarnos, y mucho, a conseguir ese objetivo.

wmlbrowser

Ya no hace falta otra herramienta para visualizar contenido WML. Si desarrollamos páginas para dispositivos móviles con Firefox y esta extensión es más que suficiente.

Dublin Core Viewer

Muestra los metadatos que hay en formato Dublin Core en los elementos de cabecera meta y link.

ColorZilla

Con esta herramienta podremos conseguir los colores de una página y hacer nuestra propia paleta personal. El color capturado es mostrado en formato RGB decimal y hexadecimal, y en formato HSV.

Lleva predefinidas paletas de colores web seguros, colores con nombre, colores del sistema..., además de la posibilidad de añadir más.

jueves, 22 de septiembre de 2005

Otro colaborador

Al igual que a Mr. Azul, jact insistió en que me uniera en su aventura.
Por supuesto, acepté. Sólo espero ser capaz de estar a la altura.
Siempre me he considerado un persona blanda, si me piden ayuda ofrezco la mano.
Cuando este compañero y amigo me lo ofreció con ilusión, no pude decirle que no.

Nali sí es programador y trabaja con jact, pero fuera de su ámbito.
Aunque he tenido el placer, y honor, de complementarme con él en un proyecto de éxito.

Mis escasos conocimientos sobre web y diseño son casi nulos y si alguno hay, caducado.
Así que dudo que alguna vez publique algo sobre esto. Si lo hago, seguro, copiado.

Me decanto más por escribir sobre mi pobre existencia.
Que gracias a gente como jact, y a "alguna" otra, sale a veces de pobre y obtiene ganancia.

Debo agradecer a Mr.Azul que me haya proporcionado un guión.
Quería escribir, y jact deseaba que escribiera. No me surgen buenas ideas bajo presión.

Ya vale de chorradas, por ahora. La próxima vez, algo más serio, prometido.
Tal vez algún día, con esfuerzo, escriba como Fuckowski, o parecido.

viernes, 2 de septiembre de 2005

Cita a ciegas

Quien me iba a decir que asistiría a una. En más de una ocasión estuve a punto de no ir, de no entrar. Pero lo hice, y no me arrepiento. En la quinta edición del Cadius Zaragoza, que organiza Daniel Torres Burriel, fue mi primera vez. Mi primer contacto con personas como Silvia Arcos o los diseñadores de páginas como la Cai o Toc-Toc, Carol y Alberto. No tuve el placer de conocer a todo el grupo pero espero hacerlo en una próxima ocasión.

También, gracias a ese encuentro, he podido descubrir Cocina para hombres, de Joaquín Gracia. Ya he comenzado a publicitarla entre mis amistades.

Sólo soy un simple programador web, con muy poca experiencia en comparación con las personas con las que hablé. Me sentí como el nuevo de una clase donde todos se conocían pero fue muy interesante conocer a los diseñadores, a los habitantes del "otro" lado.

Confío en que se mantenga el espíritu de los encuentros y que al menos nos volvamos a juntar, como mínimo, los mismos el mes que viene. Quiero felicitar desde estas líneas a Daniel por ser el causante de este experimento. Como pudiste observar, tienes un gran poder de convocatoria.

lunes, 22 de agosto de 2005

Comienzo de una aventura

¡Claro que es una aventura! Ya inicié una hace unos años, cuando comencé mis andanzas en esto de Internet, con la publicación de OpenClinic, mi proyecto fin de carrera. Y ahora me embarco en otra. Pero esta vez espero no estar tan solo y contar con colaboraciones. Tanto de la gente que pare ocasionalmente por este trocito de red como por parte de algunos que yo me sé.

Empezaré por definir los objetivos que me he propuesto en la elaboración de este blog:


  • Dicen que lo importante no es la idea, sino el llevarla a cabo. Este es el objetivo principal. ¡Ya basta de palabras y pasemos a la acción!

  • Desde hace unos años, me dedico profesionalmente a la programación web y me gustaría compartir algunos de mis conocimientos y referencias. Es hora de devolver algo de lo mucho que he aprendido en la red de redes.



Me he propuesto, al menos inicialmente, hacer un post al mes. El trabajo, el continuo reciclaje de conocimientos (leer y probar, leer y probar, ...), mi escasa vida social... creo que uno al mes, es más que suficiente.

El nombre del blog se lo debo a un amigo, un buen amigo. Desde luego, imaginación no le falta.

Espero no tardar mucho en personalizar el tema. Me han gustado los que había para elegir, hechos por diseñadores como Jeffrey Zeldman, Dave Shea, Douglas Bowman, Todd Dominey, Dan Rubin, Dan Cederholm, etc. De todos ellos he aprendido algo, pero ya que se supone que vivo de esto, debería notarse en algo. Que menos que hacer un tema...

Y para terminar un deseo: mirar atrás dentro de un año y ver que el viaje ha merecido la pena, y que tal vez haya habido compañía durante el camino. Siempre es más divertido y enriquecedor.