Php5Tube es una clase open source que permite acceder de forma sencilla a la API de Youtube, procesando la respuesta XML y devolviendo un array de datos fáciles de leer que convierte el desarrollo en algo intuitivo.
Un ejemplo de uso sería el siguiente:
//get or create youtube username
if( isset($_GET['user']) ){$youtube_user = $_GET['user'];}
else {$youtube_user = 'rickrolled';}
//create phptube object and get videos
include_once("Php5tube.php");
$php5tube = new Php5tube('Video','User','Comment');
$videos = $php5tube->getUserVideos($youtube_user);
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
PHP-FPM (FastCGI Process Manager) es una alternativa a PHP FastCGI que incluye algunas características adicionales como:
Administración de procesos, pudiendo pararlos y arrancarlos
Posibilidad de empezar procesos con diferente uid, gid, chroot, entorno o php.ini
Logs
Reinicio de emergencia
Soporte para upload acelerado
Slowlog
fastcgi_finish_request(), una función especia que ternima la petición, envía los datos al cliente (flush) y continúa realizando otra función (codificación de vídeo, proceso de estadísticas, …)
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.
mod_top es una herramienta que nos permite monitorizar nuestras aplicaciones LAMP, ofreciendo un entorno similar al conocido comando top. La intención es dar soporte a PHP, Perl, Ruby, Python, mySQL, Postgres y Apache1+2 en Linux, pero actualmente solo da soporte a PHP4 y PHP5.
Con mod_top podrás:
Localizar cuellos de botella en tus aplicaciones.
Solucionar problemas de gran consumo de memoria.
Comprender el uso de CPU.
Diagnosticar causas de poco uso y gran uso de recursos.
Algo que nos pasa a los que aprendemos PHP por nuestra cuenta es coger fallos por malas costumbres, otras veces la gente tiene fallos por falta de conocimiento. Aquà os paso resumida una lista de los errores más comunes que se comenten a la hora de programar en PHP.
No escapar lo que nos llegar por parámetro: para evitar el cross-site scripting es necesario escapar las posibles entradas HTML que nos lleguen por parámetro. Si al introducir el usuario nos metieran:
<script>...$lt/script$gt;
serÃa necesario escapar las entidades HTML para evitar ataques. Para ello se usarÃa el siguiente código:
htmlspecialchars($_GET['username'], ENT_QUOTES)
No escapar las entradas de consultas SQL: para evitar SQL-injections es necesario escapar antes el contenido de las entradas que pasamos a nuestras consultas SQL. Por ejemplo, tendrÃamos que crearnos una función que escapara las comillas simples.
Uso incorrecto de las funciones para la cabecera HTTP (header(), session_start() y setcookie()): muchas veces cuando desarrollanos nos encontramos con un mensaje de error que dice que ya se ha mandado la cabecera y que no se puede añadir más información. Esto es debido a que las funciones de cabecera (header(), session_start(), setcookie()) se tienen que usar al principio del script, antes de mandar nada a la salida.
No controlar lo que añades mediante require o include: se trata de no comenter el error de incluir un fichero cuya ruta se pasa por parámetro, ya que aunque nosotros seamos quienes pongan ese valor en el parámetro, puede llegar alguien y cambiar la ruta y pasar otro fichero que no sea de fiar.
Errores de sintaxis: bueno, aquà el autor del artÃculo, se ha quedado un tanto agusto. Todo el mundo comete errores de sintaxis cuando programa, ya sea en PHP, C, .NET o cualquier otro lenguaje de programación. Yo si que comentaria un error que suelo cometer, que es el escribir mal una variable y que el script no falle (como ocurrirÃa en Java), pero que se obtengan datos incorrectos.
No usar la orientación a objetos: desde la versión 4 los objetos se admiten en PHP, en PHP5 se mejoró su utilización. Debemos aprovecharnos de esas posibilidades.
No usar frameworks: no reinventemos la rueda, si ya hay un framework que nos gestiona la base de datos, los errores y otras cosas, no pierdas el tiempo en implementarlo tu mismo.
Desconocer funcionalidades: PHP dispone de muchas funcionalidades en su core o en su librerÃas, cuantas más funcionalidades conozcas, menos tiempo perderas en el desarrollo.
Usar versiones antiguas de PHP: tiene dos inconvenientes, que desaprovechas nuevas funcionalidades y corres el peligro de no tener todos los bugs parcheados.
Doble escapado de comillas: es posible encontrar en código PHP algo asÃ: \’ o \”. Esto suele ocurrir cuando se desarrolla con magic_quotes off y se instala en un servidor con magic_quotes on.
Leyendo una entrada de Korsarios.net sobre la lista de países en SQL, recordé que no hace mucho yo también me tuve que crear una lista parecida, pero esta vez de idiomas. Por eso hemos pensado que no estaría mal ofrecer una serie de recursos sobre idiomas y países, que podamos usar en nuestras páginas web.
Suele ser muy útil cuando queremos mostrar un desplegable con los todos los países que existen. Existe el estándar ISO 3166 para definir los países y sus subdivisiones, codificados mediante dos letras, tres letras o de forma numérica.
También puede ser necesario disponer la lista de países en la base de datos, para eso nada mejor que lo que nos ofrece Korsarios.net, las sentencias sql para la lista de países en español y en inglés.
En otras ocasiones puede que necesitemos ir a distintas páginas según el idioma o país desde dónde se visite la página. El idioma se puede detectar mediante PHP o Javascript. Aunque el idioma no siempre es siempre lo más característico, porque puede tratarse de algo específico del país y no del idioma (por ejemplo, una tienda). Para ello lo mejor es detectar el país según la IP, habiendo dos formas, mediante acceso a BD o sin acceso a BD.
En el caso de que querer la lista de idiomas, tendremos que tener en cuenta el ISO 639, codificado con dos letras y tres letras. Como no, siempre es bueno también tener todos los datos de los idiomas en la BD, en este caso somos nosotros quienes os ponemos en disposición el sql necesario: Idiomas sql