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.
Interesante librería que nos permite trabajar con DOMDocument de una forma sencilla, permite xpath y namespaces. La librería me recuerda a QueryPath, la cual realiza funciones similares.
Couchio, the company founded by Damien Katz, creator of CouchDB, has announced the release of CouchDB SDK for Android, a mobile version of the document database that can be used offline. By Abel Avram …
Tutorial que nos muestra como obtener el huso horario según una latitud y logitud. Para obtener el dato, hace uso de el API de Google Maps y GeoNames.org. Además ofrece la parte PHP y la parte Javascript (realizada en Mootools).
Es un script interesante para aquellas aplicaciones que obtiene datos (introducidos por el usuario, por ejemplo) de diferentes partes del mundo. Getting Time Zone from Latitude & Longitude
Vía / PHPDeveloper.org
Kohana es un framework de PHP que deriva de CodeIgniter, el cual ya he comentado aquà que me gusta bastante. Basado inicialmente en CI, posee las mismas caracterÃsticas que este: seguro, liviano, fácil de aprender, MVC, compatible con UTF-8 y fácilmente extensible.
PHP5: es estrictamente PHP, lo que aporta la programación orientada a objetos.
El diseño de patrones MVC continua el de CI: por lo que, aunque son diferentes, un usuario de CI no tendrá problemas para adaptarse al de Kohana.
Dirigido por una comunidad: no por una empresa, una comunidad de desarrolladores puede dar respuestas más rápidas al no estar limitadas por las decisiones de una empresa.
Los datos GET, POST, COOKIE y SESSION funcionan como se esperan: no se limita su uso, aunque si se ofrece el mismo tratamiento ante ataques XSS que ofrece CI.
Recursos, modulos y herencia en cascada: los controladores, librerÃas, helpers y vistas pueden ser cargados desde cualquier lugar de la aplicación, del sistema o de módulos. Las opciones de configuración se heredan y pueden ser modificadas dinámicamente por cada aplicación.
No hay conflictos de nomenclaturas: se usan sufijos en las clases (por ejemplo _Controller) para evitar conflictos.
Carga automática de clases: las librerÃas, controladores, modelos y helpers no se precargan, sino que se cargan dinámicamente cuando se solicitan.
Los helpers son clases estáticas y no funciones: en vez de usar form_open() usarÃamos form::open().
Manejador de eventos: los eventos pueden ser añadidos, modificados o eliminados de forma dinámica, permitiendo cambios en la ejecución de los procesos sin tener que modificar el core.
Ha salido la nueva versión de CodeIgniter (1.7.1) que soluciona algunos bugs y trae algunas mejoras, como por ejemplo evitar XSS en casos específicos contra Internet Explorer.
Sigo recomendando CodeIgniter a todos aquellos que programen PHP. CodeIgniter 1.7.1
Vía / PHPDeveloper.org