PHPillow es una librería PHP que nos permite interactuar con CouchDB (base de datos documental de Apache basada en JSON).
Ahora que el NoSQL es una alternativa a las bases de datos relacionales, esta librería nos ayudará bastante a la hora de realizar nuestra aplicación, ya que el código es bastante sencillo.
class myBlogDocument extends phpillowDocument {
protected static $type = 'blog_entry';
protected $requiredProperties = array( 'title', 'text', );
public function __construct() {
$this->properties = array(
'title' => new phpillowStringValidator(),
'text' => new phpillowTextValidator(),
'comments' => new phpillowDocumentArrayValidator( 'myBlogComments' )
);
parent::__construct();
}
protected function generateId() {
return $this->stringToId( $this->storage->title );
}
protected function getType() {
return self::$type;
}
}
Phalanger es una implementación de PHP que permite incluir código PHP en el entorno del framework .NET de forma rápida y compatible con la mayorÃa del código PHP.
El desarrollador podrá beneficiarse de la facilidad y eficiencia de PHP y del poder y riqueza de .NET. Phalanger compila los scripts PHP en código MSIL, el cual puede ser ejecutado en .NET o Mono.
Phalanger incluye funciones de tratamiento de strings o arrays que han sido reimplementadas, teniendo un buen rendimiento. Lo único malo es que por ahora solo soporta código para PHP4. Phalanger
VÃa / AjaxLine
CMS Made Simple, como bien indica su nombre, es un CMS para PHP que nos permite crear un sitio web de forma rápida y sencilla, y poder gestionar igualmente sus contenidos. No es tan solo rápida la realización de páginas, sino el aprendizaje de la utilización de la aplicación, la gestión es muy intuitiva y además permite añadir nuevos módulos para ampliar las funcionalidades del sistema.
Entre las caracterÃsticas generales nos encontramos con lo que normalmente tienen los CMS: url friendly, modular y extensible, ACL, contenido jerárquico, administración multi-idioma, accesibilidad WAI y WCGA, XHTML/CSS, plantillas Smarty y mucho más. CMS Made Simple
VÃa / Tripix
The PHP Benchmark es un sitio que realiza tests de prueba para ver rendimientos de funciones y así programar de forma más eficiente. La página está bastante completa, ya que también ofrece el código de las funciones que ha ejecutado.
Gracias a las pruebas podemos darnos cuenta de:
Realizar un foreach es siempre más rápido, y si no recuperamos la clave del array mejor aún.
Un for es más rápido si no calculamos previamente en una variable el tamaño del array que recorremos, y que sizeof es más rapido que count.
Cuando vamos a asignar el valor de una posición de un array a una variable para tratar con ella, es conveniente hacerlo por referencia ($alias = &$aSingleDimArray[$i]).
No es más rápido crear un objeto como referencia ($obj =& new SomeClass();).
if es más rápido que switch/case, y ligeramente más rápido es usar == que ===.
Parece ser que el uso de comilla simple o doble en las últimas versiones se ha mejorado y no existe apenas diferencia.
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.
Cada día suenan más las bases de datos clave-valor, y entre ellas Tokyo Tyrant, por lo que no nos vendrá mal hacer uso de la librería PECL para ella, lástima que sea PECL. PHP Tokyo Tyrant
Jaws es un CMS en PHP con el cual podremos crear nuestros propios sitios web.
Su interfaz es muy amigable, con un diseño limpio e iconos muy web 2.0, por lo que parece que su administración, por lo poco he visto en la demo, no representa mucha complicación.
Dentro de Jaws podemos distinguir en gadgets, que son módulos que añaden funcionalidades a nuestra aplicación, y plugins, que modifican el texto de los gadgets.
Entre los gadgets oficiales tenemos uno para gestionar la inclusión de banners, blogs, chat, FAQ, navegador de ficheros, glosario, menu, organizador de fotografÃas y varios más. Además existen otros dos componentes que nos ayudarán en nuestros desarrollos: Wiki para la creación de XHTML válido mediante clases de PHP y Omni para la gestión de sesiones.
Un nuevo CMS a tener en cuenta, esperemos que la comunidad de desarrolladores la enriquezcan al igual que pasa con Drupal, WordPress u otros. Jaws
2 Comments
TambÃen se pueden guardar objetos PHP fácilmente en CouchDB con Object Freezer (másinfo)
TambÃen se pueden guardar objetos PHP fácilmente en CouchDB con Object Freezer (más info)
Gracias Isra por la info, voy a echarle un ojo 🙂