abr 1

Según los benchmarks publicados , Firefox 3 beta 5 es el navegador más rápido…habrá que comprobarlo por si estuvieran trucados :D ,algunas imágenes de los resultados: Leer el resto de la entrada »

mar 29

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 :)

mar 27


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.

mar 23

Podeis encontrar nuevos documentos para usar zenphp en:

http://code.google.com/p/zenphp/w/list

Pronto: resultados de la última encuesta, la de si usar o no un generador :)

Saludos.

mar 21

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.

mar 15

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.

Leer el resto de la entrada »

mar 11

Resumen del proyecto

11 marzo, 2008

Con éste artículo quiero proponer una pirámide real del programador de un framework, (sufrido XD ) y bueno, explicar los procesos que se llevan a cabo…

Leer el resto de la entrada »

mar 9

Scaffolding terminado

9 marzo, 2008

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!

mar 4

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:

mar 3

Free no es gratis

3 marzo, 2008

Hola,acabo de volver de un finde fuera donde he tenido que aclarar el concepto de freesource…
Cuando uno dice, esto es “free” no quiere decir necesariamente, gratis, y es que pienso que es necesario aclarar el concepto del freesource, su espíritu libre no es de provecho…

Cambiando de tema, estoy con el Scaffolding de zenphp, llamado zen_andamio, hasta ahora lee las bases de datos de una conexión, sus tablas, sus campos etc, y las devuelve así como puede detectar los modelos de una aplicación y colocar los enlaces para acceder a ellos.

Close
E-mail It