miércoles, 2 de febrero de 2011

Movix: gestor de peliculas hecho en Yupp

Movix es una pequeña aplicación que implementé para gestionar mi colección de películas, de modo de saber qué películas tengo y tener un mecanismo fácil para buscar y ordenar películas cuando tengo ganas de ver algo específico.



Esta aplicación básicamente es un proxy que realiza búsquedas de películas en IMDB (http://www.imdb.com), y mediante técnicas de web scrapping, obtiene el contenido buscado y lo guarda en la base de datos local. Nada del otro mundo. La aplicación completa no supera los 127 KB.

Una de las características que más me gustó como quedó implementada es la de mostrar el ranking de la película como una barra coloreada, donde si la película recibe una puntuación de más de 75% se ve en verde y de menos del 30% se ve en rojo, pasando por un par de grados intermedios. Además se puede ordenar por ranking (ver las mejores rankeadas primero). Otra característica útil es la de filtrado por género, de modo que puedo querer una de "acción", y ordenando por rankeo puedo elegir entre las mejores.

Aquí se puede descargar esta y otras aplicaciones: http://code.google.com/p/yupp-apps/

Nota: si bien es una aplicación funcional, no está garantizado que funcione en el 100% de las búsquedas, debido a que las reglas de obtención de la información son estáticas y las páginas de IMDB pueden cambiar en cualquier momento, de todos modos se puede ir adaptando la aplicación a los cambios de IMDB.

lunes, 20 de diciembre de 2010

Yupp Genesis v0.2.5

Estamos contentos de anunciar la liberación de Yupp Framework v0.2.5 (versión Genesis).

Con motivo de esta liberación, se compatibilizaron todas las aplicaciones de Yupp Apps. Las nuevas versiones pueden descargarse aquí: http://code.google.com/p/yupp-apps/

Los cambios hechos desde la liberación anterior pueden verse en la hoja de ruta: http://code.google.com/p/yupp/wiki/Hoja_de_ruta

Notas de la versión: http://code.google.com/p/yupp/wiki/YuppPHPFrameworkv025

Documentación actualizada: http://simplewebportal.net/yupp_framework_php_doc

Descargas: http://code.google.com/p/yupp/downloads/list

Dudas o comentarios: http://groups.google.com/group/yuppframeworkphp


Agradecemos desde ya a toda la comunidad que nos apoya, y a quienes prueban el framework, nos envían consejos y mejoras, y lo usan para sus proyectos.

Para todos, gracias por seguir el desarrollo de este pequeño framework PHP en español, y por apoyarnos. Felices fiestas y un muy feliz año.

martes, 7 de diciembre de 2010

Encuesta sobre la version de PHP que usas

Estoy tratando de implementar algunas características en Yupp que a su vez requieren de características que están disponibles desde PHP 5.3.0.

Siendo que Yupp funciona desde PHP 5.2.3 (e incluso anteriores), estos cambios requerirán el uso de PHP 5.3.0 o superior.

Queda abierta la encuesta para evaluar si vale la pena agregar estas características, en función del costo del cambio de versión de PHP.

¿Qué versión de PHP usas para desarrollar?
¿Qué versión de PHP tienen tus servidores de aplicaciones en producción?


Muchas gracias por la ayuda.

domingo, 5 de diciembre de 2010

Mejorando la performance de Yupp Framework

Hace un par de semanas hice la primer prueba de performance en tiempos de respuesta sobre el framework. Para hacer las pruebas utilicé Apache Bench (http://httpd.apache.org/docs/2.0/programs/ab.html).

Primero lancé una prueba sin ninguna optimización. Para esto utilicé una aplicación simple, sin acceso a la base de datos (lo que llaman un "hello world" básico). De esta prueba obtuve como resultado que el framework soportaba 5.5 pedidos por segundo y en promedio cada pedido se resolvía en 1.8 segundos (esto cuenta envío 
del pedido, procesamiento de Apache, procesamiento del framework y envío de la respuesta).


Luego, puse un objetivo para bajar los tiempos de respuesta y aumentar los pedidos que se pueden hacer por segundo. El objetivo fue llevarlo al doble, o sea: atender 11 pedidos por segundo y que en promedio, el tiempo de respuesta fuera de 0.9 seg.


Luego de algunas optimizaciones en la inclusión de clases en el index.php, se obtuvieron mejores resultados de los esperados: más de 27 pedidos por segundo y una demora promedio de 367 ms por pedido. A continuación dejo el detalle de los resultados.


Creo que con un poco más de optimización podremos llegar a 40 pedidos por segundo y 200 ms de tiempo promedio por pedido. 



C:\wamp\bin\apache\Apache2.2.11\bin>ab -k -n 1000 -c 10 http://localhost/YuppPHPFramework/apli/entrada/index
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/ 

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
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) 






C:\wamp\bin\apache\Apache2.2.11\bin>ab -k -n 1000 -c 10 http://localhost/YuppPHPFramework/apli/entrada/index
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/ 

Benchmarking localhost (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
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:   36.891 seconds
Complete requests:      1000
Failed requests:        0
Write errors:           0
Keep-Alive requests:    997
Total transferred:      449836 bytes
HTML transferred:       33000 bytes
Requests per second:    27.11 [#/sec] (mean) 
Time per request:       368.906 [ms] (mean) 
Time per request:       36.891 [ms] (mean, across all concurrent
requests)
Transfer rate:          11.91 [Kbytes/sec] received 

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.5      0      16
Processing:   266  367  50.1    359     828
Waiting:      266  367  50.1    359     828
Total:        266  367  50.1    359     828 

Percentage of the requests served within a certain time (ms)
  50%    359
  66%    375
  75%    391
  80%    391
  90%    422
  95%    453
  98%    516
  99%    563
 100%    828 (longest request) 



domingo, 21 de noviembre de 2010

Proximas liberaciones del framework

Estimados,

Ya estamos en condiciones de liberar Yupp Framework v0.2.3, pero no haremos liberaciones hasta la v0.2.5, para acumular las mejoras y evitar el elevado costo en tiempo que tiene realizar cada liberación.

Como siempre, el código actualizado estará en nuestro servidor de versiones SVN (con cualquier cliente SVN como Tortoise o Subclipse lo pueden descargar y probar): http://yupp.googlecode.com/svn/YuppPHPFramework/

También puedes ver el código en el SVN por versión: http://yupp.googlecode.com/svn/tags/

Aquí está la hoja de ruta actualizada al día de hoy: http://code.google.com/p/yupp/wiki/Hoja_de_ruta#v0.2.3:
  • Seguiremos la hoja de ruta, actualizando los avances ahí mismo (los tickets resueltos llevan un cartel "HECHO").

Cualquier pregunta o comentario es bienvenido.

Atte.,
Pablo.

martes, 9 de noviembre de 2010

Agrega tus aplicaciones a Yupp Apps

Para quienes quieran mostrar sus desarrollos, aunque sean pequeños, o sean simplemente pruebas del framework, son bienvenidos a enviármelas para su publicación en nuestro sitio de Yupp Apps: http://code.google.com/p/yupp-apps.

La idea es tener todas las aplicaciones desarrolladas con Yupp Framework en un mismo lugar, además que las pruebas que cada uno hizo con el framework, pueden servirle a los demás para comenzar a usarlo. Lo que buscamos son aplicaciones compatibles con la última versión del framework (v0.2.2), o sea que básicamente deben tener un descriptor de la aplicación (ver ejemplos en http://code.google.com/p/yupp-apps/downloads/list).

Esto ayudará a fortalecer la comunidad y mostrar nuestros desarrollos, incluso para ponerse en contacto con otros miembros y poder colaborar en los proyectos en común.

Para enviar tu aplicación, primero ponte en contacto con el grupo respondiendo a este hilo de discusión: http://groups.google.com/group/yuppframeworkphp/browse_thread/thread/c376238ddb1579bb

¡Estamos en contacto!