martes, 15 de mayo de 2012

Programando Twitter con Yupp Framework

En este momento me encuentro en pleno proceso de actualización de la documentación de Yupp dado que hace muy poco liberamos la versión 0.5.

Una de las ideas de esta documentación es que sea aprender con ejemplos y programando en Yupp, para esto pensé que sería interesante desarrollar una aplicación del estilo Twitter. Así es como va quedando, en breve publico la aplicación y su explicación:

Perfil del usuario loguedo (puedo ver mis twitts y los de los usuarios que sigo, ver a quienes sigo y hacer nuevos twitts)

Perfil de otro usuario (puedo seguirlo, y ver los twitts suyos y de quienes sigue)

Búsqueda de usuarios (al hacer clic en su nombre veo su perfil)


Quedará lista dentro de muy poco!

martes, 1 de mayo de 2012

Nueva versión de Yupp Framework

¡Liberamos Yupp PHP Framework v0.5!



Los principales cambios con respecto a la versión anterior son:


  • Mejoras generales de performance.
  • Se agrega transaccionalidad al save en cascada de PersistentObject.
  • Se agrega método aRemoveAllFrom a PersistentObject.
  • Se externaliza la generación de errores de validación en PersistentObject a la nueva clase Errors.
  • Actualización de librerías javascript (jQuery, TinyMCE).
  • Mejoras al helper html.
  • Mejoras a vistas de scaffolding, por ejemplo para mostrar errores en campos.
  • Soporte para creación de bases de datos que aún no existen.
  • Soporte para serialización a JSON de listas de elementos PersistentObject.
  • Mejoras a Yupp Desktop (por ejemplo poder cambiar de layout).
  • Se quita el soporte para webflows.
  • Otros cambios y correcciones menores (PersistentObject, PersistentManager, DAL, Logger, entre otras clases).

En breve actualizaremos la documentación del proyecto.


martes, 24 de abril de 2012

Mejorando la performance para Yupp v0.5

En un artículo anterior que tiene casi un año y medio, estuvimos testeando la performance de Yupp PHP Framework. Ahora en vistas de una nueva liberación del framework, varias optimizaciones se han hecho, tanto a nivel de reorganización de código como a nivel de micro optimizaciones de PHP.

En el artículo anterior veíamos los siguientes resultados:

Finished 1000 requests 
Server Software:        Apache/2.2.11
Server Hostname:        localhost
Server Port:            80 

Document Path:          /YuppPHPFramework/apli/entrada/index
Document Length:        33 bytes 

Concurrency Level:      10
Time taken for tests:   181.797 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    995
Total transferred:      449790 bytes
HTML transferred:       33000 bytes
Requests per second:    5.50 [#/sec] (mean)
Time per request:       1817.969 [ms] (mean)
Time per request:       181.797 [ms] (mean, across all concurrent

requests)
Transfer rate:          2.42 [Kbytes/sec] received 

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0      16
Processing:  1031 1810 445.8   1672    4844
Waiting:     1031 1810 445.9   1672    4844
Total:       1031 1810 445.8   1672    4844 

Percentage of the requests served within a certain time (ms)
  50%   1672
  66%   1828
  75%   2063
  80%   2344
  90%   2516
  95%   2641
  98%   2719
  99%   2828
 100%   4844 (longest request)




Estos son los nuevos resultados:

Finished 1000 requests

Server Software:        Apache/2.2.11
Server Hostname:        localhost
Server Port:            80
Document Path:          /YuppPHPFramework/biblioteca/libro/list
Document Length:        3053 bytes
Concurrency Level:      10
Time taken for tests:   46.109 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    995
Total transferred:      3471784 bytes
HTML transferred:       3053000 bytes
Requests per second:    21.69 [#/sec] (mean)
Time per request:       461.094 [ms] (mean)
Time per request:       46.109 [ms] (mean, across all concurrent requests)
Transfer rate:          73.53 [Kbytes/sec] received


Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.0      0       0
Processing:   219  459 158.1    453    4188
Waiting:      219  459 158.1    453    4188
Total:        219  459 158.1    453    4188


Percentage of the requests served within a certain time (ms)
  50%    453
  66%    484
  75%    516
  80%    531
  90%    563
  95%    672
  98%    719
  99%    766
 100%   4188 (longest request)


Conclusiones:

Las pruebas se hicieron en la misma computadora, así que no hay variaciones de hardware.

Lo que podemos notar es que aunque las nuevas pruebas transfieren más datos, se aumentó el nivel de concurrencia de pedidos atendidos en un 75% (de 5.5 pedidos por segundo a 21.69 pedidos por segundo).

En valores globales, se bajó el tiempo de atención global de pedidos a un 27% (de 99% de los pedidos atendidos en menos de 2828 ms bajó a 766 ms).

Yupp está mejorando y se demuestra en los números. Además se debe considerar que se agregaron características y funcionalidades, por lo que el framework en si es un poco más pesado que en el momento de la primer prueba.


viernes, 6 de abril de 2012

Novedades sobre el estado del proyecto

Estimados, si bien hace un tiempo que no hay novedades sobre Yupp, quiero comentarles que el desarrollo nunca paró, aunque se está dando con más lentitud que antes.

En este momento estamos trabajando duro en la aplicación YuppCMS, y dentro de poco vamos a liberar nuevas versiones, tanto del CMS como de Yupp Framework.

Las novedades en Yupp serán muchísimas correcciones y mejoras, logrando un framework cada vez más estable, robusto y seguro. Algunos de los cambios más notables son el agregado de transaccionalidad para las consultas a la base de datos, actualización de las librerías javascript integradas al framework, quitamos el soporte para WebFlows, y optimizamos el código para obtener mejor performance.

Sobre el CMS, ya está tomando forma, tiene casi todas las funcionalidades básicas desarrolladas, y es bastante funcional. Incluso ya hay un portal web que lo usa: http://openehr.org.es/

Ahora que tenemos estas dos herramientas bastante desarrolladas, estamos buscando socios para implantarlas en proyectos concretos. Nuestro objetivo es poder difundirlas y utilizadas, porque es la forma en la que pueden seguir desarrollándonse y evolucionar.
Si estás interesado en los proyectos, envíame un correo a pablo.swp[arroba]gmail[punto]com. Nos interesa vincularnos con empresas de desarrollo de software, desarrollo de aplicaciones web y empresas de diseño web. También nos interesa vincularnos con freelancers en estas áreas. En ambos casos podemos brindar capacitación, soporte, apoyo en proyectos, asesoría tecnológica, etc. Estas son herramientas que buscan productividad en el desarrollo de software y aplicaciones web en particular, además de servir para prototipado de proyectos de mediano o gran porte (para mostrarle algo andando al cliente en poco tiempo).

miércoles, 25 de enero de 2012

Liberamos Yupp CMS v0.2

El proyecto va tomando forma con nuevas funcionalidades, mejoras y código más limpio. Todavía falta mucho camino por recorrer, pero vamos bien. Espero que en poco tiempo más gente se sume al proyecto y puedan aportar módulos y skins.

El CMS puede ser descargado desde:



Les recuerdo algunos posts anteriores sobre el CMS:


Algunos comentarios:
  • Funciona con la versión trunk de Yupp Framework: http://yupp.googlecode.com/svn/trunk/YuppPHPFramework/
  • Para instalar es solo:
    • copiar el directorio en yupp/apps
    • crear la base de datos yupp_cms (corregir datos de conexión a la base si es necesario)
    • correr el bootstrap del cms (creará algunas páginas y módulos de ejemplo)

Solo para fanaticos de PHP

Muy bueno:

miércoles, 5 de octubre de 2011

Acelerando la ejecucion de jquery

Ayer leí un artículo interesante, sobre cómo registrar eventos con jQuery en distintos elementos del DOM, y cómo con live() funciona más rápido que haciendo el registro luego de que termine de cargar el DOM.

http://encosia.com/dont-let-jquerys-document-ready-slow-you-down/