Calcular distancias en PHP
Función PHP que calcula la distancia entre dos puntos usando latitudes y longitudes. Devuelve los datos en millas, kilómetros y millas naúticas.
Vía / DZone
A veces es un lío enorme recuperar BDs obtenidos de dumps cuando el fichero es enorme, sobre todo si usamos phpMyAdmin (y no tenemos acceso a él). Por ello este script nos puede venir muy bien para recuperar backups anteriores, ya que recupera de poco en poco y se auto-reinicia él mismo.
MemProxy es un script PHP sencillo pero potente, que nos permite tener un servidor proxy de peticiones web y cachea los contenidos en memcached. Tan solo es necesario PHP5.2, la extensión PECL para memcache, servidor web con capacidad de re-escritura y memcached.
En el siguiente ejemplo:
$backend_array = array(
"www.example.com" =>
array(
array("app1.example.com", 80),
array("app2.example.com", 80),
array("app3.example.com", 80),
),
"another.example.com" =>
array(
array("app1.example.com", 8080),
array("app2.example.com", 8080),
array("app3.example.com", 8080),
),
);
las claves de los arrays (www.example.com y another.example.com) son los host names de los sitios en los que se quiere hacer proxy. MemProxy usará el valor de HTTP_HOST para determinar la clave. Esto sería como un hosting virtual basado en nombres.
La API de Google para acortar URLs permite acortar URLs, recuperar info del link original y las URLs acortadas de un usuario, aunque para usarlo se necesita crear una clave y dar de alta proyecto.
El resto es fácil, acceso mediante CURL y listo:
define('GOOGLE_API_KEY', '[insert your key here]');
define('GOOGLE_ENDPOINT', 'https://www.googleapis.com/urlshortener/v1');
function shortenUrl($longUrl)
{
// initialize the cURL connection
$ch = curl_init(
sprintf('%s/url?key=%s', GOOGLE_ENDPOINT, GOOGLE_API_KEY)
);
// tell cURL to return the data rather than outputting it
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// create the data to be encoded into JSON
$requestData = array(
'longUrl' => $longUrl
);
// change the request type to POST
curl_setopt($ch, CURLOPT_POST, true);
// set the form content type for JSON data
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/json'));
// set the post body to encoded JSON data
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($requestData));
// perform the request
$result = curl_exec($ch);
curl_close($ch);
// decode and return the JSON response
return json_decode($result, true);
}
$response = shortenUrl('http://phpriot.com');
echo sprintf(
'%s was shortened to %s',
$response['longUrl'],
$response['id']
);
Shortening URLs for goo.gl with Google’s URL Shortener API
Vía / PHPDeveloper.org
PHPico es una librería PHP que nos permite crear y manipular iconos (formato .ICO), pudiendo leer y escribir archivos de iconos. Permite crear iconos vacíos, añadir imágenes de diferentes tamaños y bits, quitar imágenes de los iconos, indicar el color de los iconos, añadir definiciones de colores, …
require_once('PHPico.php');
$i = new PHPicoImage();
$i->createBlankImage(8, 8, 8);
$i->addColor(0, 3, 255, 0, 0, 0);
$i->addColor(0, 2, 0, 255, 0, 0);
$i->addColor(0, 1, 0, 0, 255, 0);
$i->setPixel(0, 0, 0, 3, 0);
$i->setPixel(0, 1, 1, 2, 0);
$i->setPixel(0, 2, 2, 1, 0);
$i->setPixel(0, 3, 3, 3, 0);
$i->save('F', 'test.ico');
Si el otro día hablaba sobre PHP Quick Profiler, una clase que nos permite realizar debug en nuestras aplicaciones, hoy os enlazo con mod para integrarlo con CodeIgniter.
Es necesario tener activados los hooks de CodeIgniter y activar el profiler de CodeIgniter. A mí personalmente no me gusta usar los hooks, pero aún así se trata de una buena solución.
PHP Quick Profiler para CodeIgniter
Comments are closed.
Si no me falla la vista (la verdad la vi por 5 segundos) creo que esa funcion esta basada en la formula de los cosenos esfericos y aunque funciona, el margen de error es bastante elevado (chillar al que hizo el planeta tan deforme 😛 )
En fin, la mas acertada que consegui es la formula de Vicenty que podeis conseguir aca en JS http://www.movable-type.co.uk/scripts/latlong-vincenty-direct.html (pasarla a php toma 5 minutos) y si quereis conocer mas sobre calculo de distancias os recomiendo este otro vinculo http://www.movable-type.co.uk/scripts/latlong.html
Muchas gracias a los dos. Me vendrá de perlas.