Ya hasta sale la película de Facebook, no puedo esperar para verla.
La pelicula de Facebook
July 19th, 2010Java4Ever
June 26th, 2010Esto es desarrollo enserio
June 10th, 2010Hay cambios aunque no se note
June 10th, 2010
Últimamente paso mucho tiempo reflexionando sobre si vengo haciendo las cosas bien o si estoy por el camino correcto y tengo mis serias dudas dado que todo esta muy tranquilo a mi parecer, si no veo cambio a la vista no me parece que las cosas avancen, mi cabeza me dice que algo hay que hacer para generar el cambio. A efectos de estas reflexiones me pasaron dos cosas interesantes en estos días.
Hablando con Beto unos días atraz me consulto sobre un proyecto que había desarrollado un tiempo atraz para generar código C# para .NET, más conocido como Gentidades, y me decia que no podía hacer funcionar una cosa del mismo. Hablando con el me hizo recordar que dicha herramienta contaba con una GUI para administrar el modelo de datos, generar la capa de acceso a datos y genarar interfaces gráficas para windows; cosa que había olvidado por completo, y me enorgullecí de mi mismo por un lado de lo que había hecho pero por el otro me apeno no haber continuado desarrollandolo, pensando para mis adentros me dije, me pagan para programar cada pavada todos los días y para algo tan interesante y divertido como el Gentidades nunca pude conseguir un peso de finaciamiento.
Por otro lado, hace unos minutos atraz estaba viendo mi blog y en la parte “acerca de mí”, escrita hace un buen tiempo atraz, ví que puse que deseaba algun día conocer Tokio y como mis lectores saben a principios de año tuve la enorme suerte de poder ir, osea que por gracia divina o lo que sea pude cumplir uno de mis sueños de toda mí vida, conocer la grán ciudad oriental y su cultura.
Estas cosas me hicieron darme cuenta de pequeñas cosas que me pasan día a día y las olvido o se me pasan por alto pero que generan un cambió constante, tan constante que parece tranquidad. Todavía no se si estoy por el camino correcto ni vengo haciendo bien las cosas, creo que nunca lo sabré hasta el final, igualmente no me quejo y seguiré a la esperá del gran cambio.
La vida del Geek
June 9th, 2010Estos son políticos carajo
June 9th, 2010Encontrar problemas con ZendServer y Zend Studio
June 9th, 2010Debo admitir que Php casi siempre fue una herramienta bastante tosca a comparación de herramientas mas amigables como las suites Visual Studio de Microsoft. Los desarrolladores de PHP amamos nuestro entorno de trabajo y la forma que hacemos las cosas, vi sigue siendo y será la mejor IDE para PHP. El tema es que aveces trabajamos con gente no tan enferma como nosotros que prefieren pantallitas, iconitos y botoncitos y grandes carteles rojos para saber que algo no esta bien y corregir los problemas.
Acabo de ver un video de Zend donde muestra una herramienta de detección de errores y problemas en el servidor (Zend Server), para que el Sysadmin pase el problema al desarrollador y este pueda desde su entorno de trabajo(Zend Studio), visualizar los problemas detectados por el sysadmin y corregirlos. Verdaderamente me pareció algo excelente, los dejo con el video.
Embebed Forms en Symfony, una forma fácil
June 3rd, 2010Los formularios embebidos de symfony son una características muy buena del framework, el problema es que utilizarlos es bastante complicado y existe poca documentación oficial al respecto.
Toda esta duda me surgió debido a este video de Francois donde vi un nuevo método de Propel 1.5 para facilitar el proceso de embeber fomularios. El tema es que en varios proyectos que estoy llevando a cabo no tengo pensado migrar a nuevas versiones de symfony en un corto plazo, por eso quise facilitarme la vida implementando algo parecido. Vean el video para ver de lo que les hablo.
mergeRelation from Francois Zaninotto on Vimeo.
He trabajado un poco en el tema y realice una pequeña implementación para facilitar el trabajo parecida a la que se ve en el video, aquí la explicación.
El modelo
Todo parte de la suposición que tenemos una tabla 1 (tbl1) y otra tabla 2 (tbl2) que posee una relación con la primera, a travez del campo tbl1_id, deberemos respetar esta notación siempre para utilizar esta utilidad, la relación debe definirse a travez del campo tabla padre nombre seguido por _id, por ejemplo xxx_id.
Aquí un schema de ejemplo.
Generamos todo, modelo, forms, filters, sql
./symfony propel:build-all
Luego cargar las nuevas tablas a la base. Si no hay datos
./symfony propel:insert-sql
Modificaciones en las clases bases
Ahora, el siguiente paso es modificar la clase base de los forms para contar con los métodos reutilizables a fin de embeber formularios. Personalmente pienso que el mejor lugar es lib/forms/BaseFormPropel.class.php, si conocen un lugar mas apropiado para ubicarlos acepto la recomendación. Los métodos a añadir son tres.
loadAsEmbebedForm : Que añade la relación como un formulario embebido, se utilizará en el método configure de la clase Form del padre.
bindObjectToEmbebed : Al guardar, en caso de realizarse cambios, asocia el objeto padre a los objetos hijos de los formularios embebidos, se llama por bind.
is_seted_value : bindObjectToEmbebed lo utiliza para saber si se produjeron cambios en el formulario embebido.
bind : Redefinimos el metodo para llamar a bindObjectToEmbebed antes de realizar el bind de la clase base. El único que utilizaremos nosotros será loadAsEmbebedForm, los otros se invocarán automaticamente cuando corresponda. Debería quedarles algo así
El widget sfWidgetFormInputAjaxDelete
Luego será necesario que incorporen el widget sfWidgetFormInputAjaxDelete.class.php (lib/widget/) , este creará una entrada de texto con un boton X el cual al ser cliqueado invocará a la accion del modulo que especifiquen para borrar el elemento. Esta acciòn deberá ser implementada por ustedes en el modulo que les parezca.
Deberán tener instalado ysJQueryRevolutionsPlugin para que este widget funcione
http://www.symfony-project.org/plugins/ysJQueryRevolutionsPlugin
Configurar el Formulario Embebido
Con esto tenemos configurada nuestra instalación para embeber todos los formularios que querramos. Veamos como sería para embeber en Tbl1 el formulario Tbl2, lo único que deberemos hacer es configurar el form del modelo Tbl1 (tabla padre) para contener a Tbl2 (tabla hija). Para esto vamos a modificar el método configure utilizando el método recientemente añadido a la clase BaseFormPropel, loadAsEmbebedForm.
class Tbl1Form extends BaseTbl1Form {
public function configure() {
$this->loadAsEmbebedForm(’tbl2′, ‘thetext’, ‘demo/deleteTbl2′);
}
}
Aquí deberán pasar como argumentos al método el nombre del modelo hijo, el método para leer la propiedad que se utilizará como etiqueta del formulario embebido y la URI para la acción que borrará el formulario embebido.
Al terminar deberían probar con alguno módulo que utilice el form y les saldría una cosa parecida a esta.
Eso es todo amigos, les parece sencillo ?
A Gentle Introduction to symfony
May 25th, 2010
Asi se titula el nuevo libro de Fabien sobre Symfony, la piedra que faltaba. Todavía no lo leí mucho, pero aparentemente es una reedición del la Guía Definitiva adaptada para Symfony 1.4.
He notado que no esta el link de descarga de la versión en pdf y tampoco vi la versión para Propel, este libro esta escrito para Doctrine, espero ver pronto ambos links.
Pueden encontrar este libro mediante el siguiente enlace.

