El otro día me dio por pensar cuantos updates debería tener Twitter cada segundo viendo el número de actualizaciones que había por lo de #manifiesto. Para intentar calcularlo creé un script que cada 10 minutos escribiera un tweet en una cuenta guarra de Twitter. Guardé los datos en una BD de SQLite para luego trabajar con los datos obtenidos.
Pues los datos que obtuve durante 1 semana es que cada 10 minutos hay una media de 230.000 updates, cada segundo una media de 380 updates, cada hora 1.380.000 updates. Incluso se puede ver una caída en el servicio.
TwitterTicker es un plugin para jQuery que nos permite añadir un ticker de los ultimos updates que se hacen en un cuenta de Twitter. Las entradas se irán mostrando una a una en el mismo espacio mediante fading.
Su uso es muy sencillo, se crea una capa contenedora y se ejecuta el siguiente código:
Para mí, uno de los mayores fracasos de Twitter es su API, una limitación de su uso increíble para algo que le podría dar mucho juego a la aplicación. Ahora mismo no sé en cuánto está el límite, pero la posibilidad de realizar una aplicación basada en Twitter es una pesadilla.
Para aquellos que no quieran sufrir lo que hemos sufrido con TwitterPoster (los espacios en blanco es porque la gente actualiza su imagen y no podemos recuperar la de todos los usuarios por el límite en el API de Twitter), les recomiendo usar Twitter mediante CURL.
Os paso un script sencillito que he realizado:
<?php
// Primer hacemos login
$url ="https://twitter.com/sessions";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
// Por si tienen limitación por navegador
curl_setopt($ch, curlOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)");
// Poned una ruta para las cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/temp/');
curl_setopt ($ch, CURLOPT_COOKIEFILE, '/temp/');
curl_setopt ($ch, CURLOPT_POSTFIELDS, "username_or_email=[usuario]&password=[contraseña]");
// Para que funcione el https
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, curlOPT_SSL_VERIFYHOST, 2);
curl_exec ($ch);
// Cargamos el home, porque Twitter añade dos campos ocultos para poder publicar por web
$url ="http://twitter.com/home";
curl_setopt($ch, CURLOPT_URL, $url);
$result = curl_exec ($ch);
// Recuperamos los campos ocultos
preg_match('//', $result, $match);
$authenticity_token = $match[1];
preg_match('//', $result, $match);
$siv = $match[1];
// Insertamos el texto
$res = $url ="http://twitter.com/status/update";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'siv='.$siv.'&authenticity_token='.$auth.'&status=[texto]');
curl_exec ($ch);
curl_close ($ch);
unset($ch);
?>
¿Qué fallo tiene este script? pues que si cambian el HTML (campos de formulario, …) o las URLs deja de funcionar, pero al menos no tenemos limitaciones. Eso sí, es más costoso para sus servidores y para los nuestros, porque en vez de hacer una llamada, hacemos 3, y en nuestro caso, a parte parseamos una página para obtener dos campos ocultos.
Aunque el mismo autor reconoce que el código no está muy optimizado, el hecho es que esta librerÃa de PHP para acceder a funciones de Digg, puede ser de suficiente utilidad por si queremos incluir las noticias de Digg actualizadas en nuestra web.
Muestra el número de diggs que tiene una historia, la categorÃa de la historia, cabecera, enlace a entrada original y el resumen. TinyDigg Ejemplo
VÃa / Good PHP Tutorials
Gearman provee un framework para distribuir aplicaciones entre diferentes máquinas o procesos. Permite realizar trabajo en paralelo, balanceo de carga y realizar llamadas de funciones entre diferentes lenguajes:
Open source
Multi-lenguaje: hay interfaz para varios lenguajes (cuya lista sigue creciendo), por lo que permite crear aplicaciones heterogéneas con clientes procesando trabajo en un lenguaje y la aplicación en otro.
Flexible: no está atado a un patrón de diseño específico. Puedes unir aplicaciones distribuidas con el modelo que elijas, por ejemplo Map/Reduce.
Rápido: tiene un protocolo y una interfaz simple con un servidor optimizado en C que minimiza la sobrecarga de la aplicación.
Incrustable: como es rápido y ligero, es válido para aplicaciones de todos los tamaños. Además es fácil añadir aplicaciones ya existentes.
Tolerancia a fallos: además de ayudar en la escalabilidad, permite tolerancia a fallos.
Google ofrece sus aplicaciones GMail, Calendar, GTalk y Page Creator a las empresas para que puedan usarlas desde sus propios dominios.
Esta oferta amplia la anterior de GMail for your Domain, la cual ha conseguido que Google ya tenga miles de dominios registrados.
Estas aplicaciones serán accesibles desde un panel de control y se podrá configurar la interfaz y el color, a parte de administrar los usuarios, los alias y las listas de distribución. Una futura versión premium tendrá más capacidad de almacenamiento.
VÃa / CNet News
Ahora veo un ejemplo en el que un ataque puede evitar estas funciones cuando se crea la página con HTML no estándar. Tenemos el tÃpico ejemplo de un texto que se introduce por un formulario y se presenta como un enlace.