Elgg es una aplicación open source que permite crear redes sociales de forma sencilla y con bastantes características que completarán nuestra web.
Entre las características del administrador nos encontramos con administración de usuarios, objetos, ficheros y del sitio, gráficas con relaciones de los usuarios, múltiples sitios por instalación, internacionalización, sistema de etiquetas, ACL, vistas, eventos, plugins y API para widgets.
Además permite RSS, FOAF, XFN, OpenId, OpenSocial, OAuth, JSON, Ajax con jQuery, sistema de caché que permite memcached.
Lógicamente, el usuario final dispondrá de su perfil, panel, feeds de su actividad, preferencias, blog, aplicaicones OpenSocial, repositorio de ficheros, foros y mucho más.
Elgg necesita PHP 5.2+, Apache, GD, MySQL 5+ y mod_rewrite. A parte OpenSocial necesita Mcrypt y la librería PHP SOAP. Elgg
Vía / WebAppers
La paginación es algo de lo más costoso a la hora de realizar una búsqueda. Si nos ponemos en el caso de miles de registros con ordenación por cierto campo, la búsqueda puede ser una query muy costosa. Si además unimos el cálculo total de registros encontrados, la página puede tardar mucho en devolverse.
Debido a ello, para agilizar este tipo de páginas existen unos consejos a tener en cuenta:
Cachea todo lo que se pueda: el caché evita que se realicen consultas a la BD.
No muestres todos los resultados: Google no lo hace y nadie se queja por ello. Limita el total de registros a 100 o 500, nadie visita más de 10 páginas normalmente.
No muestres el total de páginas o páginas intermedias: ofrece tan solo en enlace a “página siguiente”, para lo cual puedes obtener 21 registros y mostrar solo 20, así si la consulta te devuelve menos de 21 es que no hay página siguiente.
Estima el número de resultados: esto también lo hace Google, en vez de calcular el número exacto, se trata de estimar el número aproximado de resultados. Usa EXPLAIN para obtener ese número, puedes usar el campo rows como aproximación.
Parece que Feedburner está dando problemas, y ahora parece que te muestra los usuarios que leyeron tu blog el día anterior, y no el numero de suscritos como se mostraba anteriormente, por lo que a los que no escribimos posts a diarios, el número que muestra Feedburner puede variar muchísimo.
Por ello, puede ser interesante mostrar la media semanal o mensual, como queramos, de los usuarios que nos leen:
Extenso y completo tutorial que nos enseña cómo trabajar con Amazon Web Services (AWS) en PHP. Para lo cual primeramente nos explica qué servicios ofrece Amazon:
Amazon Simple Storage Service (Amazon S3): almacenamiento
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.