Publicidad
Anotaciones reducidas
La vida en un día: Película de un día en la Tierra
La vida en un día -Life in a day- es una película hecha por los propios usuarios de Youtube, que durante el día 24 de Julio del 2010 grabaron las cosas que pasaban en su vida durante ese día, y el director Kevin McDonald ha reunido en forma de película de un día en la Tierra.
De una hora y media de duración, veremos todo tipo de escenas en todas las partes del mundo, con una emotiva visión del mundo real tanto con sus cosas bellas y buenas, como con la más cruda visión del ser humano y su realidad.
Video: Las posibilidades de Kinect
Cuando oímos hablar de Kinect, no podemos evitar pensar en un "simple" aparato de detección de movimientos para videojuegos, y en cierto modo es así.
Lo bueno es que Microsoft ha lanzado una SDK de Kinect para que los usuarios puedan crear aplicaciones que exploten las capacidades del dispositivo, dando lugar a miles de ideas.
El siguiente video es al fin y al cabo con fines publicitarios, pero nos da que pensar acerca de las aún sin explotar posibilidades de Kinect. Disfrutadlo.
A Space Journey: Una excursión por el espacio en un video HD
A mi personalmente me encanta ver imágenes y fotografías del espacio, ver planetas lejanos, nebulosas o constelaciones. Es por eso que quiero compartir con ustedes A Space Journey, una excursión por el espacio en un video HD de Youtube, acompañado por una buena música y una ingente cantidad de fotografías espaciales.
Realmente merece la pena ver el video en pantalla completa y seleccionando que se reproduzca a 720p para disfrutar más del mismo.
[A Space Journey: Una excursión por el espacio en un video HD]
La historia de los Exploradores Web
Desde prácticamente los comienzos de Internet los Exploradores Web o Navegadores web nos han acompañado, haciendo las veces de herramientas indispensables para una navegación que a cada año que pasa se hace más cómoda y más intuitiva.
En Testking encuentro una imágen que contiene un gran esquema de la historia de los Exploradores Web desde el primer Nescape en 1994 hasta los navegadores modernos de este año 2011.
Una imágen interesante para conocer cuál ha sido la evolución en éste área.
Mapa de vuelos mundiales en 24 horas [Video]
Interesante video donde se muestra un mapa de vuelos mundiales en 24 horas, siendo cada punto amarillo la representación de un avión. Viendo el video podemos apreciar el impresionante afluente de vuelos en Estados Unidos y Asia, pero sobre todo la gran cantidad de vuelos en Estados Unidos.
Últimos comentarios
Fans en Facebook de Ruta Relativa
Lo más comentado
Lo más visto
Post al azar
Como unir archivos en Linux
Publicado por KeLDroX el día 28/01/2010Guardado en Linux,Tips
Ver online El Club de la Comedia en la Sexta
Publicado por sergiocius el día 09/03/2011Guardado en Anotaciones reducidas
Descarga oficial de las OST de God of War
Publicado por sergiocius el día 18/03/2010Guardado en Descargas,Videojuegos
El estado de Internet [Video]
Publicado por sergiocius el día 08/03/2010Guardado en Internet,Videos
Conceep: Gana dinero respondiendo preguntas
Publicado por sergiocius el día 18/05/2010Guardado en Web
Hace poco realizamos una función Curl para Python, ya que teníamos la necesidad de realizar peticiones a una página Web en dicho lenguaje. En todos los servidores no tenemos la posibilidad de usar Python por ello hemos trasladado la función a otro lenguaje más Universal como es PHP. La función Curl para PHP es muy parecida, aunque le hemos añadido unas cuantas mejoras.
function followLocation($crCurl, &$crInfo)
{
// Variables
static $nCurlLoops = 0;
$nCurlMaxLoops = 20;
$sPage = null;
$aMatches = null;
$aLastUrl = null;
$aUrl = null;
$sHeader = null;
// Si hemos realizado 20 redirecciones paramos
if( $nCurlLoops >= $nCurlMaxLoops )
return false;
// Obligamos que la petición nos nuestre la cabecera para poder ver donde nos llevara la redireccion
curl_setopt( $crCurl, CURLOPT_HEADER, 1 );
// Ejecutamos curl
$sPage = curl_exec( $crCurl );
// Obtenemos información sobre la petición
$crInfo = curl_getinfo( $crCurl );
// Separamos la cabecera de lo que esl contenido de la página
list( $sHeader, $sPage ) = explode( "\n\n", $sPage, 2 );
if( in_array( $crInfo["http_code"], array( 301, 302 ) ) )
{
// Obtenemos la dirección donde se iba a realizar la redicción
$aMatches = array();
preg_match( "/Location:(.*?)\n/", $sHeader, $aMatches );
$aUrl = @parse_url( trim( array_pop( $aMatches ) ) );
// Comprobamos sea un array valido, de no serlo no podremos realizar la redirección
if( ! is_array( $aUrl) )
return $sPage;
// Obtenemos desde donde se va hacer la redirección
$aLastUrl = parse_url( curl_getinfo( $crCurl, CURLINFO_EFFECTIVE_URL ) );
// Contruimos la url de la redirección
if( ! $aUrl["scheme"] )
$aUrl["scheme"] = $aLastUrl["scheme"];
if( ! $aUrl["host"] )
$aUrl["host"] = $aLastUrl["host"];
if( ! $aUrl["path"] )
$aUrl["path"] = $aLastUrl["path"];
// Realizamos la petición con la nueva URL obtenida que sera la redicción
curl_setopt( $crCurl, CURLOPT_URL, $aUrl["scheme"] . "://" . $aUrl["host"] . $aUrl["path"] . ($aUrl["query"]? "?" . $aUrl["query"] : "") );
// Sumamos la redirección
++$nCurlLoops;
return followLocation( $crCurl, $crInfo);
}
else
{
$crInfo["redirect_count"] = $nCurlLoops;
return $sPage;
}
}
function curl($aArgumentos, &$crInfo = false)
{
// Variables
$sUrl = (! empty( $aArgumentos["url"] ) ? $aArgumentos["url"] : null);
$sPostField = (! empty( $aArgumentos["post"] ) ? http_build_query( $aArgumentos["post"] ) : null);
$ckCookie = (! empty( $aArgumentos["cookie"] ) ? $aArgumentos["cookie"] : null);
$nHeader = (! empty( $aArgumentos["header"] ) ? $aArgumentos["header"] : 0);
$nReturn = (! empty( $aArgumentos["return_transfer"] ) ? $aArgumentos["return_transfer"] : 1);
$nTimeOut = (! empty( $aArgumentos["time_out"] ) ? $aArgumentos["time_out"] : 30);
$sAgent = (! empty( $aArgumentos["agent"] ) ? $aArgumentos["agent"] : "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8");
$sReferer = (! empty( $aArgumentos["referer"] ) ? urlencode( $aArgumentos["referer"] ) : "-");
$aReferer = (! empty( $aArgumentos["aReferer"] ) ? $aArgumentos["aReferer"] : array() );
$aProxys = (! empty( $aArgumentos["proxy"] ) ? $aArgumentos["proxy"] : array() );
$sUserPasswd = (! empty( $aArgumentos["user_passwd"] ) ? $aArgumentos["user_passwd"] : null);
$aProxy = null;
$nRandom = null;
$crCurl = curl_init();
$sPage = null;
$aHeader = array( "Accept: image/gif, image/x-bitmap, image/jpeg, image/pjpeg", "Connection: Keep-Alive", "Content-type: application/x-www-form-urlencoded;charset=UTF-8" );
$nRandomRf = null;
// Comprobamos si nos han pasado un array con referers para modificar el referer
if( count( $aReferer ) )
{
// Referer aleatorio
$nRandomRf = rand( 0, count( $aReferer ) -1 );
$sReferer = str_replace( "[curl_text]" , $sReferer, $aReferer[$nRandomRf] );
}
// Opciones
curl_setopt( $crCurl, CURLOPT_URL, $sUrl );
curl_setopt( $crCurl, CURLOPT_HEADER, $nHeader );
curl_setopt( $crCurl, CURLOPT_RETURNTRANSFER, $nReturn );
curl_setopt( $crCurl, CURLOPT_HTTPHEADER, $aHeader );
curl_setopt( $crCurl, CURLOPT_CONNECTTIMEOUT, $nTimeOut );
curl_setopt( $crCurl, CURLOPT_REFERER, $sReferer );
curl_setopt( $crCurl, CURLOPT_USERAGENT, $sAgent);
if( $sUserPasswd )
curl_setopt( $crCurl, CURLOPT_USERPWD, $sUserPasswd );
if( count( $aProxys ) )
{
// Usamos un random para ir cambiando de proxys
$nRandom = rand( 0, count( $aProxys ) - 1 );
$aProxy = explode( ":", $aProxys[$nRandom] );
curl_setopt( $crCurl, CURLOPT_CONNECTTIMEOUT, 60 );
curl_setopt( $crCurl, CURLOPT_PROXY, $aProxys[$nRandom] );
curl_setopt( $crCurl, CURLOPT_HTTPPROXYTUNNEL, 0);
}
if( $sPostField )
{
curl_setopt( $crCurl, CURLOPT_POST, 1 );
curl_setopt( $crCurl, CURLOPT_POSTFIELDS, $sPostField );
}
if( $ckCookie )
{
curl_setopt( $crCurl, CURLOPT_COOKIEJAR, $ckCookie );
curl_setopt( $crCurl, CURLOPT_COOKIEFILE, $ckCookie );
}
// open basedir Or Safe Mode
if( ini_get( "open_basedir" ) == "" && ini_get( "safe_mode" == "Off" ) )
{
curl_setopt( $crCurl, CURLOPT_FOLLOWLOCATION, 1 );
$sPage = curl_exec( $crCurl );
$crInfo = curl_getinfo( $crCurl );
}
else
return followLocation( $crCurl, $crInfo );
// Comprobamos si ha sido exitosa la conexion de no serlo volvemos hacerla
if( ! in_array( $crInfo["http_code"], array( 200, 302, 301 ) ) )
curl( $aArgumentos );
// Si la conexión ha sido posible cerramos
if( in_array( $crInfo["http_code"], array( 200, 302, 301 ) ) )
curl_close( $crCurl );
return( $sPage );
}
| url: | Dirección donde se realizará la petición por CURL. |
| post: | Datos que se enviarán en una operación de tipo “HTTP POST”. Debe ser pasado como una cadena ‘para1 = val1 & para2 = val2 &…’. |
| cookie: | Dirección donde se guardará la cookie, si se añade sólo el nombre se guardara en el directorio donde se ejecute el Script. |
| header: | Mostrar la cabecera HTTP, por defecto 0. |
| return_transfer: | Posibilidad de obtener el HTML de la petición. Por defecto 1. |
| time_out: | Tiempo de espera para la petición. Por defecto 30. |
| agent: | Contenido de “User-Agent:” para la cabecera en una petición HTTP. Por defecto ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8′. |
| referer: | Contenido de “Referer:” para la cabecera en una petición HTTP. Por defecto ‘-’. |
| aReferer: | Array con varios casos de ‘Referer:’. Podríamos añadir todos las referencias de Google, Yahoo, etc. Así mostraría el referido como si viniera de unos de estos buscadores. Por defecto NULL. |
| proxy: | Array con varias IP de servidores Proxy. Por defecto NULL. |
| user_passwd: | Usuario y contraseña que se usarán para la conexión, con el formato USUARIO:PASSWORD. Por defecto NULL. |
curl(array( "url" => "http://twitter.com/statuses/update.json",
"post" => array( "status" => "Hola desde PHP!" ),
"user_passwd" => "keldrox:password"
));
Una simple función Curl para PHP que nos ayudará a la hora de desarrollar scripts que necesiten realizar muchas peticiones. Ya que su simpleza enviando solo argumentos nos ayuda estar escribiendo muchas líneas de opciones para las peticiones Curl, aparte de tener un código más simple.
Enlace: Descargar Curl para PHP
Artículos relacionados
Usar Google Translate con PHP y Python
Publicado por sergiocius el día 28/06/2010Guardado en Desarrollo
Contactable: Plugin para wordpress para feedback y contacto
Publicado por sergiocius el día 24/06/2010Guardado en Plugins
Escribir un post en Blogger usando cUrl y PHP
Publicado por sergiocius el día 23/06/2010Guardado en Blogosfera,Desarrollo
¿Cómo puedo hacer ping XML-RPC con PHP?
Publicado por KeLDroX el día 06/05/2010Guardado en Desarrollo,Php
Detectar la procedencia del usuario por la IP en PHP
Publicado por sergiocius el día 23/04/2010Guardado en Desarrollo,Php
Sobre KeLDroX
Desarrollador en entornos web y Diseñador de profesión, muy activo, que busca siempre enfrentarse a retos cada vez más dificiles. Si un día no hago algo nuevo o no he superado alguna dificultad para mi es un día vacío. Cuento con dos titulaciones: Técnico en Explotación de Sistemas Informáticos y Técnico Superior en Desarrollo de Aplicaciones Informáticas. Fundé rutarelativa porque siempre quise tener un sitio en donde compartir mis experiencias profesionales y a los problemas que me enfrento día a día en el ámbito profesional.
Escribir comentario en Curl en PHP