Posts Tagged ‘Symfony’

Libro: Desarrollo web ágil con Symfony2

Domingo, enero 22nd, 2012

Portada del Libro

Javier Eguiluz, el incansable programador de symfony, responsable del sitio symfony.es, el cual es uno de los principales sitios referencia del framework  symfony en español  y principal traductor de la documentación oficial de symfony al castellano, la cual nos ofrece gratuitamente a través de su sitio web librosweb.es, esta vez nos ofrece un libro de su completa autoría y que dice ser el primer libro publicado del mundo sobre symfony 2.0 (creo que es el primero luego la documentación oficial).

 

El libro tiene un costo de 10€ por lo que no vale la pena que lo cuelgues en alguna web para que los demás lo descarguen libremente (deja que el autor reciba su paga, ya mucho nos a dado gratis y además es un precio consciente) e incluye todas las actualizaciones posteriores y es en formato digital, se compra usando paypal, se ve muy bueno y completo y trata el tema del framework con el enfoque del desarrollo de una aplicación llamada Cupon, el cual es un clon de Groupon y su código fuente se encuentra disponible libremente a través de la página del proyecto Cupon en github.

Si quieres saber más del libro visita:

http://www.symfony.es/2011/12/27/ya-disponible-el-primer-libro-sobre-symfony2/ y la portada de http://www.symfony.es/

Acá te dejo una muestra del primer capítulo:

 

Aprende Symfony2 con el proyecto Desymfony

Domingo, agosto 7th, 2011

En el marco de las Jornadas Symfony 2011 llevadas a cabo en España, en donde hubo un curso de Symfony2, varias sesiones prácticas y un hacking day, nos llega una aplicación tutorial desarrollada el primer día: Desymfony.

La aplicación desarrollada es el sitio web ficticio de las propias Jornadas Symfony. Su finalidad es didáctica, por lo que ha sido necesario realizar algunas simplificaciones en su funcionamiento y arquitectura. No obstante, la aplicación sigue la filosofía y buenas prácticas recomendadas por Symfony2.

También se incluye una versión móvil, realizada por Pablo Godel, y mejoras adicionales realizadas por Ideup! en la rama ideup.

Esta aplicación sigue la filosofía de Symfony de “aprender haciendo” con aplicaciones tutorial como por ejemplo askeet, jobeet que han servido de mucho en el pasado para aprender este apasionante framework de desarrollo en php y demuestra lo que a ido creciendo la comunidad de Symfony en el mundo (que de por si ya es grande) ya que estamos acostumbrados que este tipo de aplicaciones fueran entregadas como material didáctico por el equipo de desarrollo de Symfony y en este caso Desymfony es entregada por los miembros de su comunidad de usuarios.

Para mayor información de este proyecto (como por ejemplo, como instalar), puedes ir directamente a su repositorio git:

https://github.com/desymfony/desymfony#readme

 

Graficando tu esquema de base de datos en Symfony

Miércoles, junio 23rd, 2010

Logo SymfonyUna de las cosas que más aburren y fastidian a los programadores es el documentar, sin embargo esta actividad es parte vital de cualquier proyecto de desarrollo,  ya decía en mi post anterior que una de las características del éxito de una aplicación de Software Libre es si esta, está bien documentada.

Bueno, luego de trabajar un buen tiempo con Symfony como framework de desarrollo para php, coincidencialmente descubrí una funcionalidad que no estaba documentada a simple vista en el libro de Symfony o en tutoriales que había leído ( o tal vez no me fije bien en esa parte ), esta funcionalidad, la cual creo que es provista por el ORM propel en sí,  te permite dado el esquema de tu base de datos generar un archivo de texto que puede ser usado por graphviz para generar el diagrama de relaciones.

Al ejecutar el siguiente comando en la raíz de tu aplicación:

symfony propel:graphviz

Esto genera un archivo con la extensión .dot en el directorio graph de tu aplicación, el cual puedes transformar en una imagen en formato png usando el siguiente comando:

dot -Tpng graph/propel.schema.dot -o graph/propel.schema.png

Claro debes tener instalado el paquete graphviz para poder hacer uso del comando dot, esto generará un gráfico parecido a este:

propel schema graphviz

Relaciones de tablas entre Estados, Municipios y Parroquias

Esto fue probado con diagramas de bases de datos complejos y los gráficos obtenidos fueron muy profesionales, bien dimensionados y ordenados, al parecer esta funcionalidad era un plugin que luego fue incorporado formalmente al core de Symfony, así que la poca documentación de uso que encontré fue la del mismo plugin en:

http://trac.symfony-project.org/wiki/sfPropelGraphviz

Editando templates de formularios en Symfony 1.2

Miércoles, mayo 19th, 2010

Logo Symfony Normalmente los formularios en Symfony se muestran con un poco de html incluido para hacerlos más agradables a la vista y además para evitar que el programador se preocupe de más en la presentación del mismo.

La forma en que salen los formularios en Symfony sirven como vienen por defecto a la mayoría de la gente, vienen por defecto con una presentación tipo tabla y una tipo lista, para seleccionar la tipo lista basta con agregar en la configuración de tu formulario la siguiente linea ( Ver sección “1.2.4  más allá de las tablas generadas” del manual de formularios para symfony 1.2 ):

$this->widgetSchema->setFormFormatterName(‘list’);

Ahora si no quieren ningún elemento tipo tabla y además no quieren ninguno tipo lista, tienen que reescribir su propia clase que herede de sfWidgetFormSchemaFormatter y reescriba sus métodos, en mi caso necesitaba un diseño completamente limpio, sin nada de etiquetas html, así que cree la carpeta widget dentro de lib y allí cree un archivo llamado sfWidgetFormSchemaFormatterNull.class.php, el contenido del archivo es el siguiente:

<?php

class sfWidgetFormSchemaFormatterNulo extends sfWidgetFormSchemaFormatter
{
protected
$errorRowFormat  = “%errors%”,
$errorRowFormatInARow  = “%error%”,
$errorListFormatInARow = “%errors%”;
}

Y en mi formulario declare el estilo a usar con:

$this->widgetSchema->setFormFormatterName(‘nulo’);

Si quieren saber que métodos reescribir o quieren fijarse de como esta hecho el de las tablas o las listas, revisen los siguientes archivos:

/usr/share/pear/symfony/widget/sfWidgetFormSchemaFormatter.class.php
/usr/share/pear/symfony/widget/sfWidgetFormSchemaFormatterList.class.php
/usr/share/pear/symfony/widget/sfWidgetFormSchemaFormatterTable.class.php

En mi caso tengo instalado symfony en /usr/share/pear/symfony/, ustedes busquen el path de su instalación de symfomy y traten de ubicar esos archivos.

Si quieren ahondar un poco más sobre el tema, pueden ir al siguiente enlace ( en ingles ):

http://www.thatsquality.com/articles/7-days-of-symfony-1-1-forms-widgets-and-validators-day7

Nota: Si van a copiar código de acá, tengan cuidado con las comillas dobles, ya que no se copian adecuadamente.

Sistema de gestión de escuelas

Domingo, mayo 2nd, 2010

Hace un tiempo escribí sobre i-educar una aplicación brasileña para la gestión de escuelas, la cual está en portugués y está más orientada  a que una prefectura/alcaldíaproyecto_alba_logo o municipalidad gestione desde un sitio web centralizado todo lo relacionado con las escuelas de su área.

En esta oportunidad les escribo para presentarles al argentino proyecto alba, el cual es el responsable de realizar una aplicación realizada en php usando MVC a través del framework symfony, lo cual garantiza que está realizada usando altos estándares de desarrollo y que es fácil de colaborar y modificar a nuestras necesidades. Está orientada a gestionar todo lo referente a una escuela, entre sus principales características tenemos:

  1. Lo más importante, es software libre usando la licencia GPL v2.
  2. A través de un poderoso perfil de alumno, maneja y controla las vacunas de los alumnos, datos personales, de contacto ( padres ), etc…
  3. Maneja las notas, horarios de clases, las materias de los alumnos.
  4. Mantiene registros de los profesores.
  5. Permite generar fácilmente constancias de estudio, boletines.
  6. Manejar  diferentes sedes.
  7. Generar reportes.
  8. Está completamente en castellano.
notas del boletin

Captura de pantalla del área de "Notas del Boletín"

Si deseas ver un demostración online de la aplicaciòn puedes ir al siguiente enlace:

http://demo.proyectoalba.com.ar/

El trac del proyecto, en donde van a conseguir documentación acerca de la instalación, código fuente, reportar bugs ( errores ) y demás en:

http://alba.pressenter.com.ar/cgi-bin/trac.cgi

La web oficial del proyecto:

http://www.proyectoalba.com.ar/

Un proyecto como este puede ahorrar costos y generar valor agregado, trasladando los costos de comprar una licencia hacía empresas/comunidades o personas de nuestro entorno o área, por adaptación, mantenimiento y soporte técnico y estás mismas comunidades pueden retornar lo que tomaron en forma de parches, mejoras al código, donaciones al proyecto original, cumpliendo plenamente con el ecosistema de autosustentabilidad del software libre.

Botones para enlaces en symfony

Lunes, marzo 29th, 2010

Una de las cosas que symfony como framework no tiene ( y no tiene por que tenerlo ) y que toda aplicación debe tener, es un set de botones coherente, liviano, simple, con código reutilizable y atractivo.

cancelar_Guardar

Teniendo tiempo buscando una solución para esto me encontré con múltiples opciones que no eran funcionales por que implicaban diseñar una imagen por cada botón, o era un diseño muy simple, o una etiqueta CSS por cada botón, o usaba javascript ( lo cual no es muy accesible ), pero a la final la perseverancia dio resultados y me conseguí este método de hacer botones y que era justo lo que estaba buscando y además funciona muy bien con cualquier navegador.

Acá voy a explicar como se usa en el framework symfony, sin embargo lo puedes adaptar a cualquier aplicación web.

Primero creamos un archivo css, llamado buttons.css y lo metes en el directorio web/css con el siguiente contenido:

/* BUTTONS */

.buttons a, .buttons button{
    display:block;
    float:left;
    margin:0 7px 0 0;
    background-color:#f5f5f5;
    border:1px solid #dedede;
    border-top:1px solid #eee;
    border-left:1px solid #eee;

    font-family:"Lucida Grande", Tahoma, Arial, Verdana, sans-serif;
    font-size:100%;
    line-height:130%;
    text-decoration:none;
    font-weight:bold;
    color:#565656;
    cursor:pointer;
    padding:5px 10px 6px 7px; /* Links */
}
.buttons button{
    width:auto;
    overflow:visible;
    padding:4px 10px 3px 7px; /* IE6 */
}
.buttons button[type]{
    padding:5px 10px 5px 7px; /* Firefox */
    line-height:17px; /* Safari */
}
*:first-child+html button[type]{
    padding:4px 10px 3px 7px; /* IE7 */
}
.buttons button img, .buttons a img{
    margin:0 3px -3px 0 !important;
    padding:0;
    border:none;
    width:16px;
    height:16px;
}

/* STANDARD */

button:hover, .buttons a:hover{
    background-color:#dff4ff;
    border:1px solid #c2e1ef;
    color:#336699;
}
.buttons a:active{
    background-color:#6299c5;
    border:1px solid #6299c5;
    color:#fff;
}

/* POSITIVE */

button.positive, .buttons a.positive{
    color:#529214;
}
.buttons a.positive:hover, button.positive:hover{
    background-color:#E6EFC2;
    border:1px solid #C6D880;
    color:#529214;
}
.buttons a.positive:active{
    background-color:#529214;
    border:1px solid #529214;
    color:#fff;
}

/* NEGATIVE */

.buttons a.negative, button.negative{
    color:#d12f19;
}
.buttons a.negative:hover, button.negative:hover{
    background:#fbe3e4;
    border:1px solid #fbc2c4;
    color:#d12f19;
}
.buttons a.negative:active{
    background-color:#d12f19;
    border:1px solid #d12f19;
    color:#fff;
}

Para darle un carácter de individualidad a sus botones se necesita colocar una pequeña imagen o icono a un lado y para ello nos bajamos el arsenal de 700 iconos 16x16px de FAMFAMFAM los cuales solo ocupan 1mb y además son libres de usar ya que tienen licencia Creative Commons Attribution, el archivo que nos descargamos lo extraemos y la carpeta icons la pasamos íntegramente al directorio web/images/

Ahora pasamos al código de nuestra aplicación, donde vayamos a usar un icono debemos incluir el archivo css, sin embargo si lo van a usar en la mayoría de vistas sugiero que lo incluyan en el archivo layout.php en mi caso lo tengo en app/frontend/templates/layout.php, simplemente agregamos la siguiente linea en la parte superior, debajo de todos los css que hayas declarado:

<?php echo stylesheet_tag(‘buttons’) ?>

Luego de esto ya podemos hacer disposición de usar nuestros botones en la vista

Por ejemplo en un formulario podríamos hacer lo siguiente, sustituyendo el código del botón por defecto y del enlace de cancelar:

CancelarCancelar

El class negative hace que el rolover dle botón sea de color rojo, el class positive hace que el rolover del botón sean verde y si no declaran ninguna clase, el rolover del botón sera en un bonito color azul claro.

Si quieren saber más al respecto, pueden visitar el enlace que tome como referencia en:

http://particletree.com/features/rediscovering-the-button-element/

Symfoclipse ha muerto

Martes, febrero 3rd, 2009

Acabo de ver en el sitio oficial de Synfoclipse el siguiente mensaje:

Al parecer el autor pensó que el desarrollo del plugin y su libre distribución bajo una licencia dual ( libre para usos no comerciales ) le resultaría económicamente sustentable mediante el pago de la licencia y los adsense del website del plugin y al no ser así decidió cerrar su desarrollo.

bueno… hay maneras de ganar mas dinero ( $$$$ ) que con adsense usando otros servicios de publicidad, no se por que la gente sigue confiando en adsense, para que me pagen 0.000000000000001 $ por cada click que den en la publicidad y ademas me paguen cuando tenga acumulados 100$ prefiero no colocar nada de publicidad.

Es lamentable de verdad que el autor cierre su desarrollo sin buscar alternativas de que le puedan permitir a su proyecto ser autosustentable, ni modo, debido a que hace tiempo publique una guía de como instalarlo, acá les dejo un pequeño mirror del plugin de la última vez que lo descargue para que al menos les pueda seguir sirviendo la guía:

http://www.richzendy.org/repo/symfoclipse/

eclipse+symfoclypse+symfony+clay en fedora 9

Jueves, septiembre 25th, 2008

Bueno esto más bien es un tutorial de instalación de todas estas herramientas, mucha gente pregunta en foros, listas de correo y demás relacionadas con symfony que recomiendan los gurus como ide de desarrollo para programar con symfony y basado en lo que han contestado la mayoría me decidí a probarlo por mi mismo y sobre todo instalarlo en mi fedora con el eclipse provisto por la distribución.

Antes que nada debo decir que esta combinación es muy buena para desarrollar y sobre todo cómoda, sin embargo está el inconveniente de que el eclipse consume muchos recursos, así que si no tiene una máquina generosa en recursos de RAM, es mejor que considere usar un vim enhierrado con autocompletación de código o alguna otra cosa como komodo edit para desarrollar.


Instalando eclipse + PDT + CLAY + Symfoclipse en Fedora 9

  • Primero vamos a instalar eclipse desde los repositorios oficiales:

[root@zeus ~]# yum install eclipse-subclipse-book

Al instalar este paquete, tendremos el libro de subversion con eclipse y además el plugin de subversion para eclipse el cual es muy necesario para trabajar con symfony y por dependencias nos instalara el IDE de desarrollo Eclipse con todo lo necesario.

  • Luego nos vamos a la página de PDT:

http://www.eclipse.org/pdt/

Y buscamos el área de downloads para PDT ( PDT es necesario para que funcione symfoclipse ):

http://download.eclipse.org/tools/pdt/downloads/

De allí nos vamos a la última versión de PDT:

http://download.eclipse.org/tools/pdt/downloads/release.php?release=R20080603

Y desde esta parte seleccionamos el paquete PDT All-in-One, el cual contiene PDT con todas sus dependencias necesarias para funcionar y además incluye eclipse.

Si no tenemos eclipse instalado o no se encuentra en los repositorios de la distribución que usemos, es buena opción usar este paquete de una vez, de lo contrario lo descargamos para posteriormente copiarnos toda el área de plugins.

Al descargarlo lo extraes, al extraerlo se creará un directorio llamado eclipse, adentro encontraras 2 directorios, plugins y features, debes copiar todo el contenido a los respectivos /user/share/eclipse/plugins y /user/share/eclipse/features

[code="Bash'""]
[root@zeus ~]# cd eclipse/plugins
[root@zeus plugins]# cp -r * /usr/share/eclipse/plugins/
[root@zeus plugins]# cd ../features/
[root@zeus features]# cp -r * /usr/share/eclipse/features/
[/code]

Ejecutamos eclipse como root, desde una consola como root colocamos el comando: eclipse

Vamos a instalar el plugin de symfoclipse, para ello, pulsamos en el menú en la opción de help/Software Updates/Find and Install

En la ventana que se abre, seleccionamos la opción “Search for new features to install” y le damos al botón de “Next“, luego le damos click al botón de “New Remote Site” en la ventanita que se abre le colocamos un nombre cualquiera en el campo “Name:” y en el campo “URL:” colocamos la siguiente dirección:

http://noy.cc/symfoclipse

NOTA: Este plugin tiene restricciones de uso, es de libre uso para fines no comerciales ( justo el que le estoy dando yo en este momento ) y si se quiere usar con fines comerciales se debe contactar al autor y suministrarle un pago de 20 euros ( esta es la tarifa al momento de escribir esto ), nadie te va a perseguir si usas este programa con fines comerciales, sin embargo creo en que el trabajo de cada quien se debe respetar y lo justo sería pagar el costo del programa que total no es mucho si se desea usar para tal fin.

Seleccionamos dicho repositorio y le damos en finish y seguimos el asistente de instalación seleccionando lo necesario para que se instale el plugin.

Para usar el plugin de symfony debemos tener la version 1.0.X de symfony, con la versión 1.1.X no sirve, se instala pero no realiza ninguna acción.

  • Vamos a instalar symfony 1.0.X, para ello necesitamos el paquete php-pear:

[code="Bash'""]
[root@zeus home]# yum install php-pear
[/code]

Como referencia, en el la siguiente dirección explican como instalar esta versión de symfony:

http://www.symfony-project.org/installation/1_0

Sin embargo acá usamos la versión resumida:

[code="AppleScript'""]
[root@zeus home]# pear channel-discover pear.symfony-project.com
[/code]

Y luego instalamos la versión 1.0.17 del framework, que es la versión más nueva de esta rama:

[code="Bash'""]
[root@zeus home]# pear install symfony/symfony-1.0.17
[/code]

Al finalizar la descarga verás un mensaje como:

install ok: channel://pear.symfony-project.com/symfony-1.0.17

Que indica que está instalado el framework, para verificarlo solo colocar:

[code="Bash'""]
[root@zeus home]# symfony -V
symfony version 1.0.17
[/code]

  • Probar el plugin de eclipse:

Esta parte es la más importante y confusa de toda la historia debido a que casi no se consigue una documentación coherente de como se verá el plugin o de como se usa,  pero no te preocupes, acá se te dirá que hacer:

Ahora supondremos que tienes eclipse abierto como un usuario cualquiera del sistema ( si, el tuyo seria el más adecuado :-D ) y vamos a darle click a la opción del menú: Window/Show View/Other y en la ventana que se abre debes navegar hasta la opción “PHP Tools” y abrir el árbol de opciones que contiene y debes seleccionar “Synfony View“, das click en el botón de aceptar y ya está.

Debemos ahora crear un proyecto:

File/New/Proyect

Y en las opciones que salen, navegas hasta PHP y seleccionas la opción contenida en el llamada “PHP Project“, le das al botón de “Next” y en la siguiente ventana debes colocar el nombre a tu proyecto y pulsar al botón de “Finish“, esperas un poco y te va a salir una ventana que dice en ingles “This kind of project is associated with the php perspective. Do you want to open this perspective now?” y debes seleccionar que si.

Al realizar esta acción debes ver que una nueva pestaña aparecio justo al lado de la pestaña del área de navegación de tu proyecto la cual tiene el logo de symfony, seleccionamos esta pestaña y sobre esta área de trabajo haremos todo nuestro proyecto con symfony, allí podremos dar click derecho justo encima del directorio de nuestro proyecto y en el menú desplegable al final debe aparecer la opción “init-project” con esto damos inicio a nuestro proyecto y luego de esto al dar click derecho sobre el mismo directorio veremos todas las acciones asociadas con symfony  disponibles con un simple click :-D

  • Ahora vamos a instalar clay:

Para instalar el plugin llamado clay el cual nos permite realizar modelado de bases de datos con unos cuantos clicks, simplemente nos bajamos el paquete desde:

http://azurri.jp/en/software/clay/download.html

Extraemos el archivo y copiamos el contenido ( como root ) del directorio plugins y features a /usr/sahre/eclipse/plugins y /usr/share/eclipse/features respectivamente.

Para usar este plugin simplemente debes ver la guía en :

http://azurri.jp/en/software/clay/quick_start_guide.html

Sin embargo te adelanto que tienes que tener un proyecto cualquier creado y en el hacemos click en : File/New/Other y en la ventana que se abre desplegamos las opciones de “Database Modeling” y seleccionamos “Azurri Clay Database Desing Diagram

Lo demás de su uso no se explicará ya que de aquí en adelante todo es muy intuitivo.
:-D

Libros para diseñadores web

Martes, enero 15th, 2008

Si eres diseñador web o pretendes serlo, he encontrado un sitio con los libros imprescindibles para cualquiera que desee abordar las nuevas tecnologías en esta materia, el sitio en cuestión es:

http://www.librosweb.es/

Todos estos libros ( que no son muchos pero si suficientes ) se encuentran en completo castellano, en formato html para leerlo por capitulos desde la misma web o en formato pdf para imprimir.

Actualmente me encuentro leyendo el de symfony un framework en php, el cual es una traducción de uno en ingles y es excelente, realmente lo recomiendo.

symfony book

Ojalá los aprovechen o incluso puedan colaborar en su mejoramiento o difusión.

Estoy también en:
Galería
Causas

Copyright © 2012 Richzendy.org. Search Engine Optimization by Star Nine. Distributed by Wordpress Themes