Actualizaciones de seguridad automáticas en Ubuntu

Un tip breve pero muy útil, casi necesario: si estás a cargo de algún servidor, puedes activar la instalación automática de actualizaciones de seguridad lo que alivia bastante la carga ante anuncios de vulnerabilidades.

Para Ubuntu, puedes consultar la siguiente guía en su documentación comunitaria: Automatic Security Updates.

Las actualizaciones de seguridad se distribuyen a través de un repositorio específico, y cuando se publica una nueva versión por lo general va a estar limitada a solucionar una vulnerabilidad, por lo que el riesgo de que surja alguna incompatibilidad es muy baja.

APIs simples para cuestiones básicas

La simplicidad debería ser un objetivo fundamental en el diseño de una API pública, pero sabemos que en muchos casos no es así. Hace poco encontré dos APIs que son un buen ejemplo de cómo la simplicidad es una característica gravitante a la hora de elegir un servicio:

  • mindicador.cl es un servicio desarrollado por @lee_om que resuelve un problema básico pero muy común en Chile. Es una API de indicadores económicos de Chile, que entrega los valores que más probablemente te van a solicitar integrar en alguna aplicación: UF, UTM, Dólar, Euro, etc. Funciona sin registro y entega datos en JSON. Si vas a utilizarla, se un buen ciudadano y procura utilizar algún caché local.
  • Forecast for Developers es una API de los desarrolladores de Dark Sky, una aplicación de pronóstico meteorológico para iOS bastante popular. Puedes registrar una cuenta gratuita y utilizar sus datos con la condición de dar la atribución que corresponde (un Powered by Forecast basta) para consumir sus datos. La API es muy sencilla, pero la información que trae es muy completa… al punto que para algunas ubicaciones tienen las condiciones por minuto.

La lección acá es Keep it simple, stupid: un servicio para desarrolladores debe estar pensado para poder realmente trabajar con él. Si solicitas registro, que sea automático (yo te entrego mi e-mail y tú me entregas una API key); si es de pago, que se pueda ingresar mi tarjeta de crédito o hacer un pre-pago y listo… no queremos tener que escribirle a alguien ni quiero tener una “relación” con el servicio, sólo los datos, pronto, y de la forma más fácil posible para utilizarlos.

Utilizando funciones anónimas y closures para ordenar un array en PHP

Las funciones anónimas y closures son relativamente nuevas en PHP, y son una adición que nos puede ser muy útil.

Si necesitas ordenar los elementos de un array de forma personalizada (es decir, con una función de comparación definida por el usuario como en el caso de usort, uasort o ksort) puedes utilizar una función anónima y closures para hacerlo de forma muy fácil y directa.

// $elements tiene los elementos sin ordenr

// $order tiene el orden de los elementos
// debe estar definida en el scope superior
$order = get_option('user_defined_order');

usort( $elements, function($a, $b) use ($order) {
	$a_index = array_search($a->ID, $order);
	$b_index = array_search($b->ID, $order);
	if ( $a_index > $b_index ) return 1;
	if ( $a_index < $b_index ) return -1;
	return 0;
});

Empujando los límites de escalabilidad de MySQL

La escalabilidad de MySQL no tiene un límite fijo; depende fundamentalmente del talento y capacidad de un equipo a cargo de su administración

Una preocupación bastante común al evaluar proyectos con una proyección de gran crecimiento es respecto al tipo de base de datos utilizada en relación con sus límites de escalabilidad.

En este sentido, la vieja escuela probablemente vaya a plantear que Oracle es la cura de todos los males habidos y por haber, fundamentalmente bajo el razonamiento de que si es caro es bueno y su amplia utilización en sistemas transaccionales… quizás debamos considerar también alguna cuota de lobby o mimos corporativos.

Por otra parte, los loquillos y hippies de la nueva escuela van a la guerra bajo la bandera de NoSQL y el cuestionamiento is it web scale? que ciertamente puede ser tan reduccionista como lo primero.

Continue reading “Empujando los límites de escalabilidad de MySQL”