A veces cuando desarrollamos mapas usando Google Maps, nos pueden quedar iconos muy pegados los unos a los otros, siendo bastante complicado apreciar algo en el mapa.
php_google_maps es una librería que nos permite trabajar facilmente con los mapas de Google, y que además añade una clase que permite agrupar puntos en el mapa según su separación. Introduction to Marker Clustering With Google Maps
Vía / fede.carg
jQuery es una liviana libreria de JavaScript, pensada para interactuar con los elementos de una web por medio del DOM. Lo que la hace tan especial es su sencillez y su reducido tamaño.
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.
La verdad es que tiro de vez en cuando Google Translate, pero sobre todo para temas personales, para alguna aplicación web no creo que sea muy útil, entre otras cosas porque a veces las traducciones en algunos casos son un poco raras, pero nunca vienen mal tener esta librería para realizar traducciones.
El uso es muy sencillo:
require_once('googleTranslate.class.php');
$gt = new GoogleTranslateWrapper();
/* Traduce una pagina web */
$page_contents = file_get_contents('http://some-web-page/');
/* Traduce al frances */
echo $gt->translate(page_contents , "fr", "en");
/* Si hay error lo muestra */
if(!$gt->isSuccess()) {
echo $gt->getLastError();
}
Actualización: me avisa Javier Martín que él ha implementado una librería parecida que añade algunas características interesantes como independencia de CURL.
Google ha recomendado una serie de consejos para optimizar nuestro código PHP, y no se ha hecho esperar la respuestade la comunidad, diciendo que son consejos erróneos.
Los consejos que suelo leer sobre optimizar PHP no se basan en micro-optimizaciones (usar switch o if, comillas dobles o simples, …) sino en optimizaciones más generales: buen código, caché, …
Vía / PHPDeveloper.org