Artículos destacados de Mayo

El blog cumple dos meses y acudo puntual a realizar el listado de los artículos más interesantes que he podido leer este mes.
Aquí está el del mes de Abril.

Zevillage, un pueblo de trabajadores web en el norte de Francia

Xavier Mazenod es el creador del proyecto Zevillage, una iniciativa que no podría resultar más atractiva: crear una comunidad local de trabajadores web en Normandia, al norte de Francia al oeste de Francia, como bien ha puntualizado el propio Xavier :). El portal tiene como objetivo fomentar la creación de una comunidad rural de teletrabajadores; proporciona multitud de recursos y soporte para facilitar el traslado de los trabajadores que quieran cambiar de aires, también ofrece un listado sobre google maps de los profesionales de la zona y además plantea debates relacionados, como la viabilidad y rentabilidad de portar la conexión de fibra óptica al entorno de los pueblos. Es un enorme paso hacia delante del networking en este sector, no solamente se trata de conectar a los profesionales entre sí, sino que es una manera de atraer a las zonas rurales a trabajadores que no necesariamente estan atados a vivir en grandes urbes y que, gracias a las conexiones de banda ancha actuales, pueden compatibilizar el estar conectados con el resto del mundo y disfrutar de un entorno de trabajo privilegiado. De hecho, han creado una cuenta en flickr donde nos muestran el entorno donde viven y trabajan. La iniciativa tiene otra gran ventaja asociada, que no es otra que la revitalización de los tristemente casi ya abandonados entornos rurales gracias a la aportación de trabajadores jóvenes que podrán modernizar su entorno, y colaborar con grandes mejoras a la región donde vivan. En Web Worker Daily publicaron un artículo muy interesante donde planteaban la idea de una comunidad local de teletrabajadores para coordinar no solo tareas profesionales, sino todo tipo de servicios y necesidades, como, por ejemplo, compartir la niñera (o niñero), el secretario/a...

A mi me encanta la idea, ¿vosotros os mudaríais a una zona rural si trabajarais desde casa?

Cómo insertar automáticamente la fecha y hora en mysql

Para insertar automáticamente la fecha y la hora, es decir, el timestamp, en un campo de tipo TIMESTAMP en una tabla en MySQL podemos utilizar CURRENT_TIMESTAMP, siempre que estemos utilizando una versión de servidor Mysql superior a la 4.1. Si se utiliza el timestamp automático en las inserciones, cuando se omita el campo en una inserción, éste tomara el valor de fecha y hora que tenga el servidor en ese momento. Para esto se debe usar la propiedad DEFAULT CURRENT_TIMESTAMP en la creación del campo. Si se utiliza en las actualizaciones, cuando se produzca una sentencia UPDATE que omita el campo que tiene la propiedad en el timestamp, el campo tomará el valor actual de fecha y hora del servidor. Para esto se debe usar la propiedad ON UPDATE CURRENT_TIMESTAMP en la creación del campo. Se pueden usar por separado, o combinadas:

Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones como actualizaciones
mysql> CREATE TABLE tabla_ejemplo1 (
fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP  
ON UPDATE CURRENT_TIMESTAMP
);
Query OK, 0 rows affected (0.09 sec)
Tabla con un campo timestamp que toma un valor de fecha automático tanto en inserciones pero NO en actualizaciones
mysql> CREATE TABLE tabla_ejemplo2 (
fecha TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
Query OK, 0 rows affected (0.03 sec)
Tabla con un campo timestamp que toma un valor de fecha automático en actualizaciones pero NO en inserciones
mysql> CREATE TABLE tabla_ejemplo3 (
fecha TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
Query OK, 0 rows affected (0.02 sec)
Ejemplo de inserción en una tabla con un campo DEFAULT CURRENT_TIMESTAMP
mysql> INSERT INTO tabla_ejemplo2 VALUES();
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM tabla_ejemplo2;
+---------------------+
| fecha               |
+---------------------+
| 2008-05-31 20:06:50 |
+---------------------+
1 row in set (0.00 sec)
Ejemplo de actualización de un campo con la propiedad ON UPDATE CURRENT_TIMESTAMP
mysql> INSERT INTO tabla_ejemplo3 VALUES();
Query OK, 1 row affected (0.03 sec)
mysql> ALTER TABLE tabla_ejemplo3 ADD COLUMN descripcion VARCHAR(20);
Query OK, 1 row affected (0.13 sec)
mysql> UPDATE tabla_ejemplo3 SET descripcion = 'descripcion';
Query OK, 1 row affected (0.02 sec)
mysql> SELECT * FROM tabla_ejemplo3;
+---------------------+-------------+
| fecha               | descripcion |
+---------------------+-------------+
| 2008-05-31 20:00:00 | descripcion |
+---------------------+-------------+
1 row in set (0.00 sec)

Validación de un form con campos de tipo file usando la propiedad #required

Por lo visto, no se puede utilizar la propiedad #required para hacer que los campos de tipo file en los formularios de Drupal sean obligatorios. El problema es que el campo que contiene la ruta del fichero se vacía al realizar la carga, ya que ésta se realiza a nivel de sesión.

Jornada de talleres abiertos de barcelona

Ayer, junto a Natalia, un grupo del taller donde dibujo, Lorena también se apuntó, fuimos a dar una vuelta por la Ciutat Vella, para ver por dentro los talleres de los creadores de la zona, en las jornadas de tallers oberts (talleres abiertos), que se organizan cada año en Barcelona.
En el museo marítimo tenían expuestas algunas obras de los 48 talleres participantes, pero a nosotros lo que nos interesaba en realidad era ver el interior de los talleres y comentar la obra con los propios creadores. Estuvimos unas tres horas de visita y nos dio tiempo a ver gran parte de los talleres, pero acabamos exhaustos.
Las visitas más interesantes fueron las del estudio del pintor Milan, que nos enseñó y explicó gran parte de su obra, la explicación y el personaje fueron ciertamente impactantes, pero su obra produjo opiniones diversas en el grupo. También pudimos ver en vivo como se realizan grabados en papel utilizando placas de cobre entintadas en el taller de Tomás Pariente Dutor, el propio grabador nos explicó y demostró, paso a paso de cómo se entinta la placa, cómo se graba, cómo se seca...
En el taller de Cathrine Muryn no pudimos hablar con la pintora, que se encontraba indispuesta, pero sí con sus extravagantes amigos, y pudimos observar parte de su obra en proceso, que, según estos curiosos personajes que nos encontramos en el taller, significa algo diferente para cada persona que lo mira.

¿Cómo colaborar para conseguir una mayor propagación de Drupal?

Hace un tiempo que me pregunté por qué Drupal no es el sistema de gestión de contenidos líder para webs sociales en PHP, y uno de los factores que más saltan a la vista es el desconocimiento, bien porque no se conoce la existencia del sistema (cada vez menos), o porque los programadores, diseñadores, webmasters... no conocen en profundidad las ventajas de utilizar Drupal para acelerar el proceso de desarrollo de una página web.

¿Cómo formatear una tabla en Drupal con theme table?

Puede ser que necesitemos construir una tabla formateada para alguna de nuestras páginas o módulos de Drupal, para ello, el sistema de theming nos permite mostrar tablas configurables a través del theme_table. Para ello, necesitamos una consulta, en el ejemplo muestro todos los usuarios de la aplicación , y sus fechas de creación y último ingreso. Para mostrar la cabecera y habilitar la ordenación en las columnas, cargamos el array $header, al que le pasamos data, que será el texto de cabecera de la columna, field, que será el nombre de la columna recuperada en la consulta (se requiere si se necesita realizar una ordenación), y opcionalmente sort, que será asc o desc, según necesitemos que esté ordenada la tabla por defecto. También le podremos pasar los atributos HTML que queramos, como colspan o clases CSS. El array $rows es el que tiene los datos, y se puede rellenar de forma simple, pasándole los datos cargados de la base de datos, como en el ejemplo, o de forma compleja, pasándole data para los datos y los atributos CSS o HTML como segundo parámetro. También se le puede pasar un array $attributes, para controlar los estilos CSS y HTML desde este array, en lugar de desde $header y $rows. Para poder activar la ordenación, es necesario añadirle la función tablesort_sql a la hora de ejecutar la consulta con db_query.

Primera Barcelona PHP Workshop en Junio

Gracias a Santiago me he enterado de la primera Barcelona PHP Workshop que tendrá lugar en el Citilab de Cornellá el sábado 7 de Junio (07/06/2008) de 9.30 a 20.00.
El programa incluye charlas muy interesantes sobre symfony, Ajax, seguridad y muchas más cosas.
La inscripción solamente cuesta 5€, por lo que si te interesa la programación en PHP, no hay excusa para no apuntarse.

Wok sushi, probablemente el peor restaurante "japonés" de Barcelona

Ayer fui con Lorena al Cosmocaixa, en la noche de puertas abiertas debido al día mundial de los museos. Después de darnos una vuelta, hacer unas cuantas fotos y videos (que podéis ver en la reseña que ha hecho en su blog), fuimos a un restaurante japonés que hay por la zona y que habíamos visto en alguna ocasión de paso: el Wok Sushi.

Cómo añadir nuevos Token en Drupal

Si estamos desarrollando un sitio en Drupal que utilice Tokens, que son pequeños trozos de texto a modo de comodín que son reemplazados por sus valores definitivos sobre una plantilla definida, puede que queramos añadir algún Token más aparte de los que vienen por defecto con la instalación de Drupal o alguno de sus módulos.

Existen diversos módulos que utilizan Token para funcionar, el ejemplo más claro es el de pathauto que realiza una substitución automática de los títulos de los nodos según los patrones que le indiquemos, o el sistema de comercio electrónico Ubercart.

Por ejemplo, la lista de tokens globales es esta:

Global tokens

  • [user-name] Nombre del usuario identificado.
  • [user-id] Id del usuario identificado.
  • [user-mail] Correo electrónico del usuario identificado.
  • [site-url] Url del sitio Drupal.
  • [site-name] Nombre del sitio Drupal.
  • [site-slogan] Slogan del sitio Drupal.
  • [site-mail] E-mail de contacto del sitio Drupal.
  • [site-date] Fecha actual del servidor.

Si quisieramos añadir nuevos comodines, deberemos utilizar las funciones del API del módulo Token; que son los hooks hook_token_list y hook_token_value.

  • hook_token_list sirve para mostrar un listado de los tokens disponibles en el texto a modo informativo.
  • hook_token_value es llamada al realizar las substituciones de los comodines y se encarga de reemplazarlos por sus valores reales.

Páginas