Parece que la nueva versión de PHP (5.3) va a mejorar el rendimiento considerablemente en muchas de nuestras aplicaciones. En algunos casos hasta en un 30%:
CMS hay muchos y cada día aparece uno nuevo, supongo que es porque cada cual hace las cosas a su manera y no hay un CMS que lo haga tal como uno quiere, por ello será por lo que los desarrolladores crean CMS nuevos. Lo cual nos lleva a que el mejor CMS que haya (Drupal, Joomla, …) no tiene que ser el que más nos guste.
En este caso se trata de ConstructrCMS, un CMS en PHP y MySQL que nos ofrece ente otras cosas:
URLs amigables
Cache
ACL
Login mediante hash vía link
TinyMCE integrado
Prototype y Scriptaculous
UTF-8
Uploads mediante FTP y sincronización automática después del FTP
Yo más diría que se deben conocer, porque algunas suelen ser algo desconocidas.
SimpleXML: parser de XML muy sencillo y potente, ya he hablado de esta librería y la diferencia con el método anterior de parsing de los xml es abismal.
JSON y SOAP: para la comunicación entre aplicaciones, a mí personalmente JSON me encanta y su uso es simple, muy simple.
PDO: capa de abstracción para acceso de la BD que nos permite acceder a MS SQL Server, Sybase, Firebird/Interbase, IBM, Informix, MySQL, Oracle, ODBC y DB2, PostgreSQL, SQLite de forma transparente.
SPL: o Standard PHP Library, permite convertir elementos en arrays y tratarlos con iteradores.
SQLite: librería para poder trabajar con esta base de datos (SQLite).
El otro día nos preguntaban que funcionalidades se le podía añadir a la entrada Laboratorio: Recorta imágenes dinámicamente con PHP y HTML. Y aunque son muchas, depende de la imaginación que tengamos, a mí se me ha ocurrido escribir el título del blog en la cabecera usando un filtro blur para resaltar el texto, algo que he visto en varios lugares.
A parte de la casi compra de Bea por parte de Oracle (serÃa una buena noticia para los que desarrollen con Weblogic), nos enteramos de una gran noticia para los desarrolladores de PHP, y es que Oracle contribuye con un driver PHP open source para su OCI8. Este driver nos permite acceder a las caracterÃsticas que nos ofrece la base de datos de Oracle, pudiendo asà disponer del pool de conexiones, entre otras cosas.
Uno de las prioridades de Oracle es hacerse un hueco en la web2.0, para lo cual en colaboración de Zend pretende sacar este driver para asà poder realizar aplicaciones que necesiten la robustez de la base de datos Oracle. Oracle Contributes Open Source Driver for PHP
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.