Resultados de la encuesta sobre el nuevo logotipo

Parece ser que esta vez o estamos todos de acuerdo o no coincidimos porque ha sido la encuesta más equlibrada de todas aunque también es verdad que los logos son muy parecidos entre sí, sólo cambian pequeños detalles pero en líneas generales si que os gustan tanto como a mi y me alegro por ello 🙂

La opinión de alguien en la encuesta acerca de la filosofía del proyecto ha sido la siguiente

“En mi opinión, los tres primeros són demasiado mediocres y comunes. El cuarto es bueno, transmite buenas vibraicones, pero el quinto creo que transmite la pura esencia ZEN del proyecto.”

Gracias por el comment 🙂

Veamos las gráficas:

Encuesta para selección del nuevo logotipo de zenphp

Por ahora ,el logotipo 5 ha pasado a formar parte del contenido del proyecto.
Seguiremos informando!

Aumentando la eficiencia del framework

Después de muchos estudios y procesos de optimización,la última medición con el profiler PHP sobre zenphp, con el tema por defecto ha conseguido reducir al mínimo las llamadas al sistema, apertura de ficheros y operaciones ineficientes, incluso usando el compactador HTML [ver clase] lo que más se lleva es la función require de zen___carga_clase() que es la función usada para, como su nombre indica, cargar clases en nuestras aplicaciones, de hecho, usando dos aplicaciones y vinculando las bases de datos entre ellas, el resultado es el siguiente:

En zenphp no existe la función “autoload()“, que es una función muy famosa en PHP5: sirve para hacer un “require” de cualquier clase cuando la instanciamos por primera vez y no está en el ámbito actual.

Esto se hace para mantener nuestras aplicaciones sin sobrecarga, así que sólo usamos lo que cada parte de nuestra aplicación necesita en cada momento.

Veamos la gráfica:

  • Nos quiere decir, que mientras más clases usemos,más veces vamos a llamar a la función zen___carga_clase y con ello será más ineficiente, sin embargo no se hacen demasiadas llamadas ya que no solemos utilizar miles de clases en una aplicación pero si hasta cientos de ellas…
  • preg_replace() se usa muy poco, una única vez en la salida de la plantilla y cuando la compactación está activada, asi que si vamos a utilizar mucho procesamiento HTML y mostrar muchas veces la salida de la clase zen_plantilla, entonces es mejor desactivarla…cosa no muy probable…
  • Salta varias veces con la alerta E_STRICT.Hay algunas consideraciones a tener en cuenta con el tipo de error STRICT en PHP, ya que zenphp está escrito en PHP4 y PHP5…tiene características que serán eliminadas a partir de PHP6.x en adelante; …por lo tanto PHP5 intenta mostrar alertas cuando se hacen cosas como crear una variable con una referencia a partir de una función como puede ser un  constructor de una clase…son pequeños detalles pero consumen unos milisegundos de tiempo.
  • La función setlocale(); se toma alrededor de un milisegundo y medio, es la última ineficiente del conjunto inevitable…como sólo es llamada una vez no la considero para mejora, ya que es más ineficiente leer todas las constantes de idiomas (en lugar de usar fichero .mo [poedit]) como se hacía en los primeros prototipos del framework…
  • El resto de peticiones no se pueden considerar ineficientes…

Seguiremos optimizando 🙂

Nuevos Videotutoriales : MVC modificado y un proyecto de ensayo


Nuevos videotutoriales han sido añadidos a la sección de documentos de la Forja.

En este caso para explicar como funciona el modelo+visualizador junto con la sencillez de añadir un andamio o Scaffolding.

Se añaden junton con un vídeo del generador de aplicaciones Gtk y el inicio de un ensayo científico sobre la meditación.

Pisando el acelerador con zenphp

Hay un nuevo documento en la sección de documentos de zenphp en la forja
https://forja.rediris.es/docman/?group_id=252
donde se exponen los distintos métodos para acelerar PHP y zenphp al máximo en nuestro servidor asi como nuestras aplicaciones! 🙂

Ésta es la dirección:
https://forja.rediris.es/docman/view.php/252/521/AceleradoresPHP_final.pdf

He escrito además un pequeño artículo acerca de los aceleradores en forma de plugin para WordPress, en la web de la comunidad de PHP granadina : GranadaPHP.

Que la santa semana esté con vosotros ,aquí y ahora.

Saludos.

¿Qué es código bien escrito?

Pues, no es lo mismo

strtolower(strpos($ruta,-3,3))

que

strpos(strtolower($ruta),-3,3)

ya que el primero pasa a minúsculas sólo 3 letras y el segundo toda la cadena que puede contener cientos o miles de caracteres y esto repetido 100 veces compromete un script de 1 a 5 segundos de promedio en lugar de tan sólo unos microsegundos, es una diferencia a tener en cuenta…

En zenphp se intenta hacer todo con el código bien escrito, es por eso que se tarda un poco más en terminar algunos puntos críticos como se tardó en escribir zen_andamio o ahora el generador pero merece la pena.
Si revisais el código del framework veréis más cosas como esta, por ejemplo, cargar el número de componentes de un vector y guardarlo en una variable antes de un bucle es más rápido que cargarlo en cada iteración en la comprobación de un for,
y etc.

La paciencia es una cualidad muy positiva.

Continue reading

Scaffolding terminado

Por fin, oh mondié!!, terminé con el Andamio de zenphp, el Scaffolding…

bueno,he creado un PDF (alojado en el directorio de documentos del proyecto) para ayudar a usarlo, creo que es bastante fácil y agradable de leer. 🙂

Continúo con la caché y, tras las optimizaciones, queda menos trabajo que realizar para finalizar el gestor de contenidos (CMS) y el generador de aplicaciones PHP/GTK.
¡Ánimo a todos!

Razones para usar las clases de zenphp:eficiencia y seguridad

1. ¿Construir el HTML mientras se hacen las consultas?…o más bien…
2. ¿Construir un array y después procesar el HTML?

Estudiando los casos: en (1) tenemos una consulta a la base de datos, esto requiere una negociación de conexión y el intercambio de información con el servidor mySQL por cada iteración, y rellenar con las tuplas obtenidas el HTML resultante, para ir mostrándolo o bien ir almacenándolo en una cadena.
Sin embargo en (2) tenemos un bucle que almacena los datos en un array y los devuelve para reemplazar sólo las etiquetas de un fichero HTML en una cadena, sin concatenar nada…

Es evidente que (2) es más eficiente que (1) en memoria y tiempo ,O( n ) con n=número de tuplas, porque construye el HTML y lo mantiene en memoria entre llamadas, en lugar de tener que recorrer todos los datos concatenando una cadena de texto enorme que es el HTML final y tomando su contenido de varias partes haciendo que la salida tarde más en ser devuelta (ya que necesita salir de la última llamada de la pila) , O( n* log(n) ).

Al margen de la eficiencia, una razón para usar zenphp es que es altamente funcional y se pueden hacer aplicaciones realmente rápido y en cuanto a seguridad, no se detectaron problemas, quizás llevo ventaja por no ser muy conocido.

Aquí una gráfica de las 20 aplicaciones PHP más inseguras: