S4 es una plataforma open source desarrollada por Yahoo! que permite procesar gran cantidad de datos de forma distributiva. Inicialmente desarrollada para tratar miles de queries de búsquedas por segundo, es posible añadir nodos de forma escalable y no centralizada.
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.
Si el otro día hablaba de oEmbed, hoy voy a hablar de una librería para CodeIgniter que nos puede ser útil para aquellos que desarrollamos usando este framework.
Por ahora detecta los siguientes servicios:
YouTube
Viddler
Qik
Revision3
Vimeo
Hulu
Se echa en falta alguno como Flickr, pero es un principio y nosotros mismos podemos ampliar la librería. Tampoco estaría mal que no fuera necesario indicar el servicio, sino únicamente la URL.
Si el otro dÃa hablabamos de MagpieRSS, hoy tenemos que hablar de SimplePie, una librerÃa en PHP que nos recomienda artux y que nos permite leer los feeds RSS y Atom.
Es fácil de usar incluso para principiantes en PHP, rápido debido a que cachea los contenidos, admite RSS 0.91, RSS 1.0 y RSS 2.0 y Atom 0.3 y 1.0 y muchas cosas más. SimplePie
Algo fuera de lo común, pero que nos puede ser útil alguna vez, es ejecutar en nuestro script PHP, tareas multi-threading.
Aunque PHP no está preparada para la ejecución de threads, el autor del artÃculo se crea una clase para tratar estas ejecuciones. La simulación de los hilos lo realiza mediante la funcion proc_open(), la cual ejecuta un comando y abre punteros de archivo para entrada/salida.
Uno de los problemas que veo es el tratamiento de errores, que aunque se obtienen mediante el buffer de salida de error, no creo que se tenga un buen control sobre estos. Multi-threading strategies in PHP
VÃa / PHPDeveloper.org
PHPAGA es un gestor web de proyectos, tareas, facturas y preosupuestos, que provee una forma eficiente y centralizada de tener al dÃa tus tareas y actividades.
Entre las posibilidades que ofrece incluye la impresión a PDF de los listados, estadÃsticas por proyecto o persona y resúmenes financieros.
PHP 5.2 es necesario para que funcione, a parte no tiene dependencias de PEAR. Usa UTF-8 tanto para el código como para la base de datos y los gráficos se puestran con el componente Graph de eZ y los gráficos se muestran como SVG. PHPAGA
VÃa / International PHP Magazine