Control de versiones centralizado con Bazaar

0 comentarios

Bazaar es un sistema de control de versiones distribuído, que en lo personal me ha resultado muy fácil y cómodo de utilizar.

Probablemente una de sus mejores características es que permite ser bastante flexible en cuanto a los flujos de trabajo que puedes utilizar con él — esto es parte fundamental de la filosofía de Bazaar — ya que si bien está diseñado para trabajar perfectamente de modo distribuído, también se adapta de forma excelente a un flujo de trabajo centralizado, en cuyo esquema adopta un modo de trabajo muy similar a Suversion pero manteniendo ciertas ventajas propias de los sistemas distribuidos, como contar con una copia local del repositorio, acceso local al historial de cambios (y poder consultar rápidamente el registro de cambios), poder realizar commits locales al no tener conexión a internet, volver rápidamente a versiones anteriores, etc.

El modo particular de implementar un flujo centralizado de control de versiones con Bazaar puede variar, pero detallaré algunas de sus posibilidades.

Continuar leyendo “Control de versiones centralizado con Bazaar”

La des/ilusión de la red

0 comentarios

Hace algunos posts (lo que en la práctica significa hace unos buenos meses atrás) publiqué sobre Evgeny Morozov y su charla en TED sobre cómo la red ayuda a las dictaduras. Este bielorruso es un ácido crítico de la idea de la red como facilitadora de la democracia o como herramienta que potencie el activismo. A principios de este año publicó un libro llamado The Net Delusion: the dark side of internet freedom dedicado completamente a este tema.

En el otro rincón, tenemos a Cory Doctorow, un “autor de ciencia ficción, activista, periodista y blogger” que entre otras cosas es co-editor de Boing Boing y que ha realizado un comentario muy interesante y profundo de los argumentos que Morozov plantea en su libro, concediéndole la razón en muchas oportunidades pero también haciendo una lectura crítica y que en muchos casos complementa o derechamente desarticula lo planteado en el libro.

Continuar leyendo “La des/ilusión de la red”

Tu memoria en la nube

2 comentarios

Concuerdo con Robert Cringely cuando afirma que si este va a ser el año de la consagración de la cloud computing, probablemente también será el año en que nos va a decepcionar. No se trata de hacer profecías apocalípticas ni ser especialmente pesimista, sino quizás más bien a una consecuencia natural del hype en torno a la cloud computing, ya que siempre es difícil vivir a la altura de expectativas irreales —ya sea por su desconocimiento o por lo infladas que han sido como discurso de venta… y al hablar de cloud computing, creo no equivocarme al plantear que de forma importante estas expectativas tienen especial relación con la conservación de nuestra memoria.

Continuar leyendo “Tu memoria en la nube”

WordPress: no sólo blogs

7 comentarios

Con ocasión del WordCamp Chile 2010, junto a Basilio Cáceres preparamos una presentación sobre nuestras razones para utilizar WordPress en sitios dedicados principalmente a la publicación de contenidos en estructuras más complejas que un blog.

La presentación no es tanto técnica sino más bien estratégica, y expande lo que hace algunos meses Basilio había identificado como tres razones para desarrollar sitios web sobre WordPress: experiencia de uso, extensibilidad y comunidad.

Continuar leyendo “WordPress: no sólo blogs”

Usando la API de Transients en WordPress

0 comentarios

WordPress tiene varias API’s muy interesantes y prácticas, aunque no todas ellas son igual de conocidas.

Una de las que he venido a conocer más recientemente es la API de Transients, que permite trabajar con datos temporales de un modo simple y estándar, lo que resulta ideal si quieres crear una caché de datos con un tiempo de expiración, por ejemplo, al realizar consultas muy complejas a la base de datos o al obtener datos desde una fuente externa.

Esta API trabaja de forma muy similar al API de opciones, pero con el agregado de un tiempo de expiración de los datos, tras el cual WordPress eliminará la información almacenada en la base de datos. En nuestro plugin/widget/clase/función podremos implementar los métodos necesarios para chequear si existe el contenido cacheado o bien refrescar los datos, según sea necesario. La API implementa tres funciones que nos permiten guardar, obtener, o eliminar los datos, respectivamente:

/**
 * Guardar datos a la base de datos
 * @param string $transient Nombre del transient
 * @param mixed $value Datos que se guardarán. WordPress detecta si es un string o datos más complejos, y en este caso los guardará automáticamente como datos serializados
 * @param int $expiration El tiempo de expiración, en segundos.
 * @return boolean Verdadero o falso, de acuerdo a si la operación se ha realizado
 **/
set_transient($transient, $value, $expiration);

/**
 * Obtener datos
 * @param $transient string Nombre del transient.
 * @return mixed Los datos del transient, ya sea como string, como array u objeto si eran datos serializados, o bien falso si los datos no existen.
 **/
get_transient($transient);

/**
 * Borrar datos, para cuando se quieran borrar antes del tiempo de expiración
 * @param $transient string Nombre del transient
 * @return boolean Verdadero o falso, de acuerdo a si la operación se ha realizado
 **/
delete_transient($transient);

De este modo, en nuestro plugin/widget/función/etc. sólo nos bastará comprobar si los datos ya existen y refrescarlos en caso que sea necesario:

function mi_funcion(){
	global $wpdb;
	$transient_data = get_transient('mis_datos');
	if ( ! $transient_data ) {
		// Obtener los datos
		$get_data =  json_decode( file_get_contents( 'http://search.twitter.com/search.json?q=from%3Afelipelavinz' ) );
		// Guardarlos en el transient
		if ( set_transient('mis_datos', $get_data, 3600) ) $transient_data = $get_data;
	}
	foreach ( $transient_data as $key=>$val ) {
		// Procesar los datos
	}
}

Una buena manera de mejorar la performance de tus plugins/widgets/funciones.