Blitz: sistema de plantillas para PHP

Blitz es un sistema de plantillas para PHP que está desarrollado en C y compilado como una extensión para PHP. Habiendo ya muchos sistemas de plantillas para PHP, la pregunta es ¿por qué usar una nueva? la respuesta es simple, Blitz es uno de los sistema de plantillas más rápidos que hay y permite a los desarrolladores crear código compacto y sencillo de leer y modificar, incluso para aquellas aplicaciones con una lógica de presentación compleja.
Blitz se basa en dos conceptos: view controllers que contienen la lógica de presentación sin etiquetas HTML, y las plantillas que contienen el HTML, variables y lógica como condiciones de presentación de datos, includes y llamadas a métodos de usuario.
Blitz
Vía / International PHP Magazine

links for 2007-07-06

Stubbles: framework PHP

stubbles.pngStubbles es un framework para PHP5 que combina las características favoritas de otros lenguajes de programación y frameworks, en vez de usar los paquetes que te gustan y combianrlos con PEAR, Zend Framework u otros frameworks de PHP.

Entre las características que ofrece, nos encontramos con:

Stubbles

Vía / PHPDeveloper.org

JSDoc: documentar javascript

JSDoc es una aplicación realizada en Perl que nos genera la documentación de nuestros scripts Javascript de forma automática. Basado en el conocido javadoc, obtiene los comentarios de documentación (/** … */) para obtener la información sobre las funciones.

Así, por ejemplo, si tenemos la siguiente función:

/**
* Figura es una clase abstracta. Define
* lo que otras subclases heredarán de una
* figura geométrica genérica
* @constructor
*/
function Figura(color){
this.color = color;
}

obtendremos lo siguiente:

Constructor Summary
Shape ()
Construct a new Shape object.

JSDoc

Vía / Blogging Dashin

TrimQuery: usa SQL en Javascript

TrimQuery es un script que permite usar sentencias SQL para obtener datos contenidos en un objeto JSON.

Entre las características que permite, nos encontramos con:

  • Codificado en Javascript estándar.
  • Admite SELECT … FROM.
  • Cláusulas WHERE.
  • Ordenación (ORDER BY) de varias columnas de forma ascendente (ASC) y descendente (DESC).
  • Alias (AS).
  • Agrupaciones (GROUP BY y HAVING).
  • Funciones: SUM, COUNT y AVG.
  • Joins
  • LIMIT y offsets.
  • Parametrización.
  • Es ligero (más o menos), ya que ocupa menos de 700 líneas.

Si por ejemplo disponemos del siguiente objeto:

Invoice  : [ { id: 1, total: 100, custId: 10 },
{ id: 2, total: 200, custId: 10 },
{ id: 3, total: 300, custId: 10 },
{ id: 4, total: 400, custId: 20 } ],
Customer : [ { id: 10, acctBalance: 1000 },
{ id: 20, acctBalance: 2000 },
{ id: 30, acctBalance: 3000 } ]

Podemos obtener datos con la siguiente consulta:

SELECT Customer.id, Customer.acctBalance, Invoice.total
FROM Customer, Invoice
WHERE Customer.id = Invoice.custId
ORDER BY Customer.id

Es sensible a mayúsculas y minúsculas, ya que diferencia entre FROM y from.

Demo

TrimQuery

Vía / dzone

|

Recursos para crear paginación

A la hora de crear paginación en los resultados que devuelve una búsqueda en nuestra aplicación hay que tener varias cosas en cuenta. Sobre todo cuando queremos mostrar los resultados totales. Para saber cuántos resultados se han obtenido, debemos hacer una consulta del tipo:

select count(1) from tabla

Esto suele ser lo más eficiente, ya que la otra opción es hacer la consulta sin más y luego contar el número de registros (a mí me parece una locura, pero lo he visto en varios sitios).

Si ya hemos calculado el número de registros, ahora podemos obtener únicamente un rango de registros ya sea con LIMIT en MySQL o haciendo uso del ROWNUM en Oracle.

¿Presenta algún problema calcular inicialmente el número de registros?, pues sí, si la consulta es pesada, por ejemplo por su complejidad, se deberá realizar dos veces, la primera para calcular el número de registros y la segunda para obtener los datos, por lo que perdemos un tiempo precioso.

Lo lógico sería hacer un estudio de cuántos registros se pueden obtener de la consulta, si son relativamente pocos, quizás compense obtener todos y no tener que hacer dos consultas. También puede ser interesante conocer hasta que página suele acceder el usuario, no creo que más de 5 a 10 páginas, si el usuario llega a ese número de páginas consultadas y no encuentra nada, o lo da por imposible o refina la búsqueda.

Lo mejor sería que no aparecieran el número de registros totales encontrados, aunque esto a veces no es posible ya que las especificaciones del cliente lo obligan, entre otras cosas porque ese dato puede llegar a dar cierto prestigio sobre la calidad del buscador.

Tampoco olvidar que las bases de datos no recuperan todos los registros de una sola vez, sino que los va recuperando según se van solicitando, al menos así lo hacen bases de datos como Oracle.

De todas formas, para aquellos que necesiten realizar paginación en sus aplicaciones web, os pasamos una serie de tutoriales que esperamos sean de utilidad:

links for 2007-07-04

Proyectos open source alternativas a MySpace

Os presentamos una lista de proyectos open source para crear vuestras propias alternativas a MySpace.

  • Elgg: creado inicialmente para comunidades educativas, permite crear comunidades, blogs y sistema de compartición de archivos.
  • People Aggregator: a parte de ser un sistema de alojamiento dónde crear tu propia red social, también puedes descargártelo, instalarlo en tu servidor y configurarlo según tus necesidades.
  • Open PNE: uno de los proyectos más definidos, pero con el problema de ser un proyecto japonés con una no muy buena traducción al inglés.
  • Joomla Community Builder: no se trata de un proyecto para la creación de redes sociales, sino una extensión para Joomla que va en esa dirección, con una curva de aprendizaje sencilla.
  • PHPizabi: otra herramienta para crear comunidades con más de 90.000 descargas, nos permite crear redes sociales y lugares para reunirse usuarios.
  • AroundMe: clon de MySpace que permite crear blogs, wikis y comunidades.

5 Open Source Alternatives to Create Your Own MySpace

Vía / dzone