lunes 23 de noviembre de 2009

Próxima liberación de Yupp Framework

Amigos, como todos quienes siguen el grupo sabrán, en la última
versión de Yupp (v0.1.6.7) se me coló un bug en la clase Executer que
no permitía el correcto funcionamiento del framework. Si ven en un
post previo adjunté la solución, esta solución también fue subida al
SVN como todos los cambios que voy haciendo: http://yupp.googlecode.com/svn/trunk/

Ahora me encuentro integrando PostgreSQL al framework. La próxima
versión será la 0.1.7 y aparte de PostgreSQL vendrá con algunos
frameworks Javascript adjuntos, con los cuales estoy haciendo pruebas
de integración, como el editor WYSIWYG TinyMCE y el YUI Calendar.
También hice una siplificación del Router, creando una sola clase y
eliminando las clases Filter y Mapping (ahora todas sus
funcionalidades están en la clase Router).

En definitiva, la próxima versión podrá usarse con cualquiera de estos
DBMS: MySQL, SQLite o PostgreSQL.

domingo 1 de noviembre de 2009

Cómo crear un blog, paso a paso

He actualizado el documento de como crear un blog simple con Yupp PHP Framework para su última versión 0.1.6.7.

El documento puede descargarse desde: http://code.google.com/p/yupp/downloads/list

La última versión del framework se puede descargar desde el mismo sitio y contiene la implementación del blog para poder ver el producto final de lo que se muestra en el documento.

Cualquier duda o comentario la pueden colgar en nuestro grupo: http://groups.google.com/group/yuppframeworkphp


Hasta pronto.

martes 27 de octubre de 2009

Yupp Portal v0.1

Estamos muy contentos de poder liberar la primer versión del componente para crear portales web de Yupp Framework: Yupp Portal

¿Para qué sirve Yupp Portal?

Es una herramienta de alta productividad que permite crear un portal web completo en 5 minutos, sin necesidad de programación extra, solamente es necesario configurar la conexión con la base de datos.

Este componente permite:

Administrar páginas:
  • Crear páginas con un clic
  • Editar contenido con editor visual desde la web
  • Estados de páginas: Normal, Borrador, Deshabilitada, Oculta
  • Edición visual de items del menú principal
  • Edición visual de contenido fijo (por ejemplo banners que se muestran en todas las páginas)
Administración de usuarios:
  • Administración de roles
  • Crear/Editar/Eliminar/Aprobar usuarios
  • Registro de usuarios y aprobación con email en un clic
  • Login/Logout
Tres roles disponibles:
  • Administrador: crea/edita páginas, modifica el menú, crea/edita usuarios
  • Editor: crea/edita páginas, modifica el menú
  • Usuario: ve páginas ocultas

Por más información: http://code.google.com/p/yupp-portal/

domingo 25 de octubre de 2009

Liberamos Yupp PHP Framework v0.1.6.7

Amigos, estamos muy contentos de anunciar la liberación de la nueva versión de Yupp PHP Framework.


Las diferencias con respecto a la versión 0.1.6.4 son:

1. Correccion a YuppForm en el campo date.

2. Se agrega el método YuppController.componentControllersAction() que sirve para mostrar los controladores de un componente dado.

3. Se agrega la restricción "inList" que permite verificar si un valor está en una lista de valores dados.

4. Se agrega el metodo PersistentObject.hasFieldErrors( $attr ) para preguntar si existen errores en el valor de un atributo particular.

5. Se agrega el metodo PersistentObject.attributeDeclaredOnThisClass() para saber si un determinado atributo fue declarado en una clase. Sirve para derivar los nombres de las tablas intermedias en relaciones multiples.

6. Se agrega el helper DisplayHelper.yupp_select para crear selects html de forma sencilla.

7. Se corrije el metodo PersistentObject.validate() para que priorice la validacion de nulos y vacios sobre el resto de las validaciones. Ahora si un valor es nullable(true) y tambien debe ser email(), la validacion de un valor vacío devuelve true, antes fallaba en la validacion de email.

8. Correcciones menores en la clase Contraints.

9. El método PersistentObject.setProperties() ahora hace trim de los valores antes de asginarlos a los campos, esto es para evitar el llenado accidental de datos con espacios en blanco delante o detrás del valor ingresado.

10. Agregamos soporte para varios subdirectorios dentro del directorio de clases de modelo, para ordenar las clases cuando son muchas.
- Se corrige el metodo ModelUtils.getModelClasses() para poder crear subdirectorios en el directorio del modelo de un componente.
- Correccion al metodo YuppConventions::getModelPath().
- Correccion en PackageNames a una expresion regular para poder poner subdirectorios en el modelo.
- Correcciones en YuppLoader, en el cargado del modelo para permitir definir clases en subdirectorios.

11. Corrección en el método YuppConventions::relTableName(..) donde se creaba mal el nombre de la tabla intermedia para relaciones hasMany si se trataba de salvar una subclase y el atributo estaba declarado en su superclase.

12. Se corrige el helper Helpers.template() para mejorar el pasaje de parametros.

13. Correccion en el mapeo de herencia de tabla multiple para soportar modelos de relaciones y herencia complejos (PersistentManager, PersistentObject, MultipleTableInheritanceSupport).

14. Se corrije el metodo YuppController::getFlash() y se hace limpieza.

15. Corrección de la comparación de strings para generar consultas MySQL (donde el "=" no considera mayúsculas y minúsculas)
- Se reescribió completamente la evaluación de QUery que genera las consultas SQL, para que considera las particularidades de cada DBMS (MySQL, SQLite, PostgreSQL, etc)


Descargas:
http://code.google.com/p/yupp/downloads/list
http://www.simplewebportal.net/host/1022.htm

TAG SVN:
http://code.google.com/p/yupp/source/browse/#svn/tags/v0167

Cualquier duda, consulta o reporte de error pueden hacerla en el grupo google (opción "debates > nueva entrada"):
http://groups.google.com/group/yuppframeworkphp


Hasta pronto!

Pablo Pazos Gutiérrez
Líder de proyecto
Yupp PHP Framework

jueves 17 de septiembre de 2009

Herramientas para comprimir codigo javascript

Para crear sistemas web muchas veces me veo utilizando librerías y scripts javscript que encuentro en internet. Muchos de estos pesan entre 150 y 300 Kb, haciendo que el tiempo de carga de las páginas web sea muy lento. Por suerte existen herramientas que nos permiten comprimir esas librerías y dejarlas de un tamaño aproximadamente de un 30% del tamaño original.

En general estas herramientas tienen un cuadro de texto donde se debe pegar el código javascript a comprimir, elegir algunas opciones de compresión, luego vemos el código comprimido y la razón de compresión (tamaño original / comprimido). Distintas opciones de compresión harán que tu código quede más reducido aún.

Aquí dejo algunos links a estas herramientas:
Feliz compresión!

lunes 3 de agosto de 2009

PHP y los problemas con la sesión

PHP tiene un problema (depende de si se lo considera como tal) con las sesiones cuando se acceden a subdominios del sitio actual.

Hoy particularmente me sucedió que tenía un sitio http://femisaluddigital.net.uy el cual corre con el componente Yupp Portal. En una página del portal había un link a otra página pero el dominio del link era a http://www.femisaluddigital.net.uy/...., notar el WWW adelante.

Entonces, cuando si usuario está logueado en el sitio http://femisaluddigital.net.uy e intenta acceder al link que empieza con www la sesión se pierde y el usuario aparece como no logueado, con los problemas que esto trae (el usuario debe volver a loguearse).

Entonces las opciones serían:
  • Que los links a páginas locales se armen dinámicamente considerando la URL actual (viendo si tiene o no www al principio).
  • Guardar la sesión en la base de datos y que tanto para el dominio que empieza con www como para el que no tiene www, la sesión se acceda de la misma forma.
Hay que tener cuidado que para otro subdominio que no sea www (por ejemplo subdominio.femisaluddigital.ney.uy) tal vez quiera acceder a otra sesión, no a la misma del dominio principal. Esto puede ser un problema y el proceso de guardar y pedir información de la sesión debería ser lo suficientemente inteligente como para distinguir casos, nada muy complicado.

Con este post espero ayudar a otros que tengan el mismo problema. Hay algunos comentarios sobre el tema en la página de documentación de PHP sobre las sesiones, donde también indica que ante un cambio de protocolo (HTTP a HTTPS) la sesión también es eliminada. http://us2.php.net/manual/en/book.session.php

miércoles 8 de julio de 2009

Historia del User Agent

Navegando por internet buscando información acerca de HTTP (estoy estudiando para un próximo exámen de Introducción a las Redes de Computadoras), encontré un artículo muy interesante al respecto de la historia del User Agent que no tiene desperdicio alguno:

http://webaim.org/blog/user-agent-string-history/

Enjoy :)