Google Docs para gestionar proyectos a distancia (actualización 23/6)

A veces las herramientas simples pueden ser de gran utilidad cuando no contamos con infraestructura en sistemas, problemas de tiempo o por no haber encontrado la herramienta "ideal" (existen muchos sistemas, pero a veces hacen más de lo que necesitamos y se vuelven complejos de usar).



Lo bueno de usar Google Docs es que te resuelve muchos problemas de forma muy simple, agregando una característica muy importante: se puede acceder remotamente desde cualquier navegador sin siquiera necesitar un servidor dedicado y su curva de aprendizaje es muy suave... ¿quién no sabe usar una planilla electrónica?

Fundamentalmente hay que usar un poco de imaginación y bien podremos aplicarlo para gestionar un proyecto web a distancia... como lo estamos haciendo ahora en la última tarea del curso a distancia de Análisis y Diseño Orientado a Objetos, aplicando técnicas de gestión ágil entre 4 personas ;-)


Aquí se puede visualizar la organización de la planilla, compartida entre 4 personas, donde tienes dos grandes divisiones que representan zonas de trabajo: el "Frontend" (la parte pública del sistema) y el "Backend" (la parte privada, el "admin" del sistema). Posteriormente agregamos el título de la tarea y una breve descripción de lo que involucra (no más, esto ayuda a dimensionar claramente lo que lleva hacer el sistema sin ambigüedades y costos ocultos).

Forma de trabajo
  1. Una vez definidas las tareas macro, podemos empezar a agregar las tareas "micro" o sub-tareas, para llegar a afinar lo que hay que hacer, por ejemplo: al principio definimos una tarea "login" que era solo "involucra mostrar el formulario", pero luego lo extendimos porque nos dimos cuenta que además había que hacer "agregar validación por clave".
  2. La idea es que las prioridades se definen de acuerdo a su aparición en la planilla, es decir, lo que está arriba es más importante que lo que está abajo. También pueden ver esto en las divisiones más grandes como Frontend y Backend, en este caso, como estamos siguiendo una "metodología ágil", nuestra prioridad es hacer entregables "visibles para el cliente", así que empezamos por el Frontend.
  3. Para auto-organizarnos, cada desarrollador toma la tarea que quiere hacer de la lista (siguiendo el orden de prioridad) y luego la marca con "verde" y pone su nombre en la columna a la extrema derecha. Así, todos sabemos quién está haciendo qué y así podemos tomar la siguiente tarea, evitando "cuellos de botella" ya que no existe alguien que deba asignar tareas al equipo, siempre hay algo para hacer y evitamos tiempos muertos.
  4. Una vez terminada, se colorea en "gris".
  5. Si queda suspendida por algo, usaremos un color "amarillo".
  6. etc.
Otra cosa que usamos son las solapas al pié de la planilla para agregar otras secciones en el proyecto, como links a documentación (también documentos web compartidos), separar los bugs de las funcionalidades, etc.



Lo bueno es que en un momento dado podemos estar varias personas a la vez en la planilla (desde distintos países) y todos vemos en el instante lo que pasa y hasta podemos usar el chat a la derecha para discutir algún tema en particular.


Todo con una simple planilla web.

Si lo quieres ver, también puedes hacer el documento público para que tu cliente siga los avances del proyecto ;-)

¿Qué más se te ocurre que podrías agregar? ¿algún otro sistema simple que uses y quieras compartir? ;-)

Actualización
  1. Luis Artola, estimado colega, levanta el guante y hace un post comentado su experiencia usando Google Docs en la gestión de proyectos.

SURFORCE_CURSOS: temarios disponibles!

Se encuentran disponibles los temarios de cada curso que estarán iniciando a partir de los primeros días de julio. También, durante este fin de semana, quedará habilitada la posibilidad de pagar a través de la web vuestro lugar en los grupos de los cursos (Paypal, Western Union y giro bancario si estás en Argentina).

Antes que se inicie el proceso de pagos, le estaré comunicando a todos los usuarios registrados.

PD: sepan disculpar las demoras (tengo bastantes correos pendientes). Esta semana hemos estado con pequeños problemas de salud (comunes para el invierno) lo que obligó a estar algunos días en cama.

¡Saludos! ;-)

Lo bueno de usar un IDE + SVN (captura)


A veces entramos fácilmente en la discusión de si usar un IDE o un "Editor con Esteroides", o si usar o no un SCM, etc, bueno, aquí un ejemplo de lo que es retomar un proyecto que dejaste colgado y no te acuerdas qué fue lo último que modificaste localmente con respecto a lo último que tienes en tu servidor de producción.

Usando Netbeans 6.7 RC2 + SVN, abro el fuente y le doy a la combinación "ALT + D" (lo configuré así para que me ejecute el comando diff de SVN), lo cual muestra gráficamente las diferencias entre ambas versiones.

Lo que está a la izquierda es lo último versionado, lo que está a la derecha son los cambios locales que hice hace unos días (agregando un control para que antes de asignar verifique si están registradas las variables).

Lo bueno es que si cometí errores, puedo presionar sobre las "x" rojas y eliminar las líneas locales diferentes que no quiero dejar (de todas formas puedo volver atrás cuando quiera y comparar las versiones que quiera, no importa cuales, y recuperar cualquier línea de código).

Para quién aún no usa IDE's y versionado, no, no es lo mismo que un "Editor con Esteroides" (si no te muestra el contenido público de un objeto, yo no lo considero un IDE).

¡Semana próxima: Segundo Semestre de Cursos a Distancia!

A partir del lunes próximo iniciamos el armado de grupos y cobro de las reservas para los cursos del segundo semestre del año:

  • Programación Orientada a Objetos en PHP5 (3ra Edición)
  • Introducción a Zend Framework (2da Edición)
  • Introducción a los Patrones de Diseño (2da Edición)
  • Análisis y Diseño Orientado a Objetos (2da Edición)

Tentativamente la fecha de inicio es el primer lunes de Julio 2009, con los grupos que se hayan armando a partir de los usuarios que realizaron su pago. El cupo mínimo de alumnos será de 20 por grupo y se irá iniciando un grupo por semana, en caso de no llegar a los cupos mínimos, se posterga una semana.

El costo sigue siendo el mismo, un único pago de USD 50 por persona durante dos meses, y la forma de pago oficial es a través de Paypal y la alternativa a través de Western Union (solo si estás en Argentina podemos hacer una transferencia bancaria).

AVISO IMPORTANTE: para este nuevo período se abrirán menos grupos que en el primer período, principalmente por un tema de sobrecarga de trabajo que tuvimos en el primer semestre de este año, y que quiero evitar que nos atrasemos con algún grupo o que los docentes terminemos extremadamente cansados :-(

Si estás interesado, no pierdas un lugar a partir del próximo lunes, donde habilitaré el pago de los cursos y empezaré a armar los grupos que inician por semana.

Si aún no estás registrado en SURFORCE, ingresa TUS DATOS REALES (incluyendo la foto) en http://registracion.surforce.com (los datos son privados y confidenciales, sin ellos, no voy a enviar datos de pago ni habilitar alumnos bajo seudónimos ni nombres fantasía).

Los cursos se dictarán a través de Moodle (sistema de educación a distancia) en la dirección http://formacion.surforce.com

Saludos!

PD: también, a más tardar el lunes próximo, estaré entregando los diplomas a todos los alumnos que aprobaron los cursos del primer semestre.

Por actualizar apurado de ZF 1.7 a 1.8 (actualizado)

Notice: Zend_Loader::Zend_Loader::autoload is deprecated as of 1.8.0 and will be removed with 2.0.0; use Zend_Loader_Autoloader instead in [..]/library/Zend/Loader.php on line 186

Interesante, ni bien lo solucione les comento ;-)

Actualización

Antes estábamos usando:

include "Zend/Loader.php";
Zend_Loader::registerAutoload();


Ahora debemos usar:

require_once 'Zend/Loader/Autoloader.php';

$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
$loader->suppressNotFoundWarnings(false);

Luego que lea un poco más me fundamentaré mejor sobre lo que hay que hacer de ahora en adelante ,-)

Nueva actualización:

Cómo usar componentes de Zend Framework fuera del MVC

Uno de los caminos para crear una "plataforma de desarrollo" (y bajar costos de desarrollo) es tener unificadas todas las herramientas que usamos a la hora de desarrollar nuestros sistemas.

Por ejemplo, no deberíamos tener distintas clases de acceso a base de datos o generación de logs según el entorno que estemos trabajando (a menos que tengas una razón coherente para hacerlo ;-) ). Si desarrollas dentro de la misma empresa / proyecto tanto sistemas web tradicionales, sistemas de gestión, páginas wap, o aplicaciones de envío SMS (como es en mi caso), no debería haber razón para tener código duplicado.

Una "plataforma" debería servir para eso, tener ya resuelto los problemas triviales y habituales para concentrarnos solo en los problemas nuevos y no triviales.

Una de las grandes ventajas de Zend Framework es poder usar cada uno de sus componentes fuera de la estructura tradicional de MVC, evitando necesariamente tener que usar un controller, modelo y vista. Si ya usas Zend Framework, puedes aprovechar los componentes también de forma aislada, lo que reusas código y conocimiento en el desarrollo de sistemas (aprendes a usar un componente y lo sigues usando en todos los sistemas).

Un caso puntual es poder eliminar todas las clases "artesanales" que hoy día tenemos para la generación de logs y empezar a uzar Zend_Log.

"La forma de hacerlo"

La primera, es instalar en nuestros servidores en un lugar estandarizado las "librerías", como por ejemplo en /var/www/library instalar Zend Framework.

Luego, deberíamos crear un archivo de configuración para que nuestra aplicación pueda encontrar fácilmente los componentes de Zend. Mi sugerencia es que usen la función de "autoload" (Zend_Loader), así no tienen que estar viendo de llamar una a una las clases que necesitan cada uno de los componentes.

config.php


set_include_path
(
'.' .
PATH_SEPARATOR . '/var/www/library' .
PATH_SEPARATOR . get_include_path()
);

include
"Zend/Loader.php";
Zend_Loader::registerAutoload();



Y así incluiríamos ahora la clase Zend_Log en nuestros desarrollos:

test.php

require_once 'config.php';

$writer = new Zend_Log_Writer_Stream('/tmp/test.log');

$logger = new Zend_Log();
$logger->addWriter($writer);

$logger->log('This is a log message!', Zend_Log::INFO);


Listo, ya tenemos un scripts en PHP común y corriente, pero usando ahora un componente del framework Zend.

Así deberíamos poder hacerlo con todos los componentes básicos (base de datos, logs, envío de emails, config, etc), y evitar tener que reinventar la rueda.

¿Te parece útil?

¿Una nueva razón para usar Zend? ¿otros frameworks te permiten hacer lo mismo?

"La decadencia de forosdelweb.com", parte II

Si luego de leer varios comentarios "políticamente correctos" (aunque por dentro estén insultándote), este último comentario terminó de dejar claro cómo son verdaderamente las cosas (que error ni error):



Veo que la filosofía es "estás conmigo o contra mi", no hay puntos medios ni sincero reconocimiento de errores, pura y llana "cortina de humo".

Al final de cuentas:

¿Todo esto fue una forma indirecta de intentar sacarme del foro de POO de PHP?

... el tiempo dirá.

La decadencia de forosdelweb.com

Algunos lectores han seguido mi twitter ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], más comentarios de usuarios, etc) y se han sorprendido tanto como yo de mi "degradación" en forosdelweb.com, donde los "moderadores" del área de POO para PHP votaron para sacarme el rol de "colaborador" y pasarme a "usuario común".

Haciendo un resumen de los hechos, mi sorpresa fue mayor cuando me doy cuenta que hacía por lo menos 20 días que no participaba "colaborando" en la respuesta de dudas de los usuarios (los cursos me tienen un poco ocupado), que a la fecha y luego de 4 años, suman más de 900.

Aún recuerdo el primer mensaje que me envió cvander (el propietario del sitio, maestrosdelweb.com) anunciando que pasaba a grado de "colaborador":

30-ene-2007, 17:18
Moderador
cvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassiecvander es mas bueno que la perra Lassie

Avatar de cvander

Fecha de Ingreso: noviembre-2002
Ubicación: Ciudadano del mundo
Mensajes: 10.082
Enviar un mensaje por MSN a cvander
cvander está desconectado
Colaborador del foro

Un saludo.

Debido a tu trayectoria a forosdelweb.com y la recomendación de algunos moderadores, te hemos otorgado el rango de "colaborador".

Este rango te otorga algunas ventajas en el foro (más capacidad de mensajes privados, envío de adjuntos y otros), así como un foro privado donde los colaboradores hablan de todo tipo de temas personales, así como envían sugerencias sobre el foro.

No hay ninguna responsabilidad con la leyenda, sino es simplemente un agradecimiento por tu apoyo.

Un saludo.
__________________
- Christian Van Der Henst S. [twitter: @cvander]
Maestros del Web



El tiempo pasó y me entero a través de un sintético mensaje con el título de "colaborador" lo siguiente:

31-mar-2009, 11:54
GatorV
$this->role('moderador');
GatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra LassieGatorV es mas bueno que la perra Lassie

Avatar de GatorV

Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 20.286
GatorV está desconectado
Colaborador

Que tal Enrique,

Hubo varios reportes de "quejas" ya sabes, y la administración del foro decidio que lo mejor para las dos partes (FDW y tu) lo mejor era pasarte nuevamente al grupo de usuarios normal.

Espero entiendas el porque de esta decisión y creo yo en lo personal es lo mejor para las dos partes.

Saludos.
__________________
Blog Web


Nota: el resaltado es mío.

Mi sorpresa a sido mayúscula, amén de que no veo tan "dramático" perder una seudo-calificación que puedan darte de uno de los tantos foros que pululan en la web, me indigna en la forma que se procedió, sin transparencia y dar la cara (lo peor es que conozco a algunos personalmente), ya que luego de intercambiar varios mensajes con GatorV (actual moderador del área de POO en forosdelweb.com) me deja claro que el solo es el "mensajero" y "otros moderadores" (que aparentemente no puedo saber los nombres) decidieron mi "degradación".

También he preguntado las razones concretas pero solo recibo un genérico "quejas de usuarios", no sé cuales, tampoco la cantidad de usuarios ni la cantidad de quejas, ni cuantos moderadores votaron en mi contra, ni cuantos fueron los votos, ni tampoco hay forma de réplica o defensa alguna.

Aclaraciones varias


Creo que todo el mundo sabe que al participar en un foro se dan discusiones acaloradas y es casi imposible que no existan quejas, a menos que seas un provocador nato que solo busca el conflicto y no aporta absolutamente nada.

En mi contra puedo decir que tengo un humor bastante irónico y que no puedo caerle bien a todo el mundo (creo que los demás me toman más en serio de lo que me tomo yo mismo), y más de una vez rezongué a usuarios por su necedad de leer un manual o por repetir conceptos errados sin razonarlos (principalmente de los que se venden como "expertos"). Además, es casi imposible que luego de unos años de volverse "conocido en el ambiente de PHP" no encuentre tanto seguidores como detractores, en igual proporción, lo que genera que por cada palabra que diga tenga 2 personas que están de acuerdo y 2 que simplemente buscarán atacarme a título personal (algo que se ha visto muy seguido en forosdelweb.com).

A mi favor puedo decir que son más las contribuciones que he brindado al foro que las discusiones etéreas en las que he participado, y así lo tienen claro los administradores (GatorV) que en múltiples situaciones le he avisado para que tome cartas en el asunto.

Lamentablemente mi colega (quién estimo mucho desde hace años) se ha tomado la moderación tan al extremo que no se puede comentar ningún asunto que exista un mínima discusión "sana y normal", que esta es borrada, por lo tanto el último año sentía "reserva" de decir algo, ya que seguro iba a ser "censurado", igual que con los demás usuarios.

Respuesta Oficial de Forosdelweb.com


Luego de varios intercambios con mi amigo GatorV, ya que la verdad sigo "indignado" de cómo procedieron, nuevamente, por la forma y no en sí por el resultado (un cambio de "tipo de usuario").

Recibo esta "diplomática" respuesta del responsable de forosdelweb.com, Cvander, que en resumen dice:

"las formas en las que a veces contestas han causado conflictos con otros usuarios que simplemente no comprenden tu sarcasmo, ni lo políticamente incorrecto que sueles ser a veces, generando reportes en varios de tus mensajes. Por esto mismo, algunos moderadores mencionaron cuál sería la forma de proceder, cómo podian darte una infracción pues normalmente los colaboradores no causan estos conflictos..."

Si esto fuera un trabajo diría que esto es un "despido indirecto" ;-)

Al que resumo (los intercambios con Cvander continuaron) que la razón fundamental se debe a que les doy mucho trabajo de moderación, mis respuestas generan un conflicto que no pueden manejar, en contraoposición a los aportes que di y puedo dar en el foro de "POO PHP".

Interesante. Lo primero que me preocupa es, habiendo tantos problemas para resolver, tengan que hacer este tipo de "penalizaciones" con un usuario que aporta constantemente al foro, y posteriormente no se cuestionen si "ese trabajo que les doy" no se debe al exceso de moderación y censura que existe en el foro.

Aunque verdaderamente dudo ser "el colaborador conflictivo del foro".

Para resumir, copio mi respuesta a Cvander:

31-mar-2009, 20:36
enriqueplace
enriqueplace merece que le prestes tu consolaenriqueplace merece que le prestes tu consola

Avatar de enriqueplace

Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 960
Enviar un mensaje por Skype™ a enriqueplace
enriqueplace esta en línea ahora
Respuesta: Tema de colaborador

Tal y como se lo comenté a GatorV

1 - Me entero por la espalda, sin mediar ningún tipo de comunicación previa que "un grupo de notables" a votado mi "degradación" como usuario dentro de FOROS

2 - Se argumenta "quejas" pero no hay "pruebas" en base a cuantos usuarios ni a qué tipo de quejas ni si estas son justificadas o no, lo decidieron unos pocos en donde no tuve ninguna ingerencia.

3 - No hay forma de "defensa" ni de respuesta, nadie advierte ninguna situación (mayor es mi sorpresa de estar casi ausente por 20 días de los foros).

4 - Lo único que dan como mensaje es que prefieren el "silencio" en los foros a una discusión al respecto. Se ha distorsionado gravemente el foro de POO ya que no hay aportes de nivel y mediante una moderación "excesiva" ya casi nadie puede discrepar con nadie por miedo a ser eliminado (en lo personal ya fueron varios mensajes mios borrados y no los justifico).

5 - Posteriormente me notifican de este cambio de "grado", nadie sabe responder nada, dicen que es "por mi bien" y que hable con "cvander". Argumentos y transparencia "cero".

Vergüenza ajena, no por el hecho en sí de una seudo-categorización en un foro, es por la forma en que se ha hecho.

La verdad que no entiendo como GatorV apoya esto, me molesta el hecho de cómo procedieron, como cobardes y completamente abusando de una autoridad que no tienen sobre mi proceder ("he sido juzgado").

Todo esto me parece sumamente arbitrario, subjetivo y poco serio.




Para empeorarla, nunca tuve respuesta.

En resumen

Luego de cuatro años de participar en el foro de PHP de forosdelweb.com, donde muchos de mis respuestas se transformaron en post de este mismo blog, si bien ahora no he tenido tiempo de seguir participando, actualmente no tengo motivos para seguir haciendo el mismo trabajo de forma desinteresada, ya que los mismos responsables del foro desalientan a los propios colaboradores.

Con estas actitudes, muy difícil que alguien quiera colaborar.

Enlaces relacionados: no te pierdas la segunda parte, la respuesta "oficial y final" de Cvander

Nueva versión del libro: "POO para PHP5" (edición "abril 2009")




Ya se encuentra disponible la nueva versión del libro (v1.8) que incluye todas las correcciones y sugerencias de los lectores desde febrero 2009 y un nuevo anexo "Lo Nuevo en PHP5" donde se empieza a abordar cada una de las nuevas características de PHP5, comentadas y con ejemplos prácticos para aprender a sacarle el máximo de provecho (pueden acceder a nuevos capítulos de ejemplo del libro).

Recordar las tres versiones del libro:
  1. Edición económica: 30 USD (2 meses de actualizaciones, material extra y consultas sobre dudas)
  2. Edición estándar: 50 USD (4 meses)
  3. Edición extendida: 60 USD (6 meses)
El medio de pago oficial es a través de Paypal y el medio alternativo es a través de Western Union. Una vez confirmado el pago (dentro de las primeras 24hs) se hace envío del libro digital (pdf) y se da acceso a usuarios.surforce.com para poder usar todos los servicios asociados.

A la fecha se llevan vendidos 75 libros
, entre alumnos y no alumnos de los Cursos de POO.

Recuerda: para el segundo semestre del año se volverán a abrir los cursos de POO, los cuales están basados en el libro pero abordando nuevos trabajos semanales para profundizar los conceptos tratados.


Más información

¿Qué nombres ponerles a nuestros componentes en un framework MVC?

Este es un tema por el que he pasado un tiempo analizando y no encontrando información "oficial" explícita sobre cómo debemos nombrar nuestros módulos/controllers, principalmente si usar palabras en "singular" o en "plural" (si alguien encuentra, me avisa). A veces, la forma de llegar a un criterio es buscar ejemplos en otros proyectos y aprender de la experiencia de otros, pero no fue el caso, ya que podemos encontrar tanto como (inglés o castellano):
  • "usuarios" o "usuario"
  • "facturas" o "factura"
  • "stocks" o "stock"
  • "proveedores" o "proveedor"
  • "páginas" o "página"
  • etc
Si alguien tiene la misma duda, paso a comentarles mis criterios para que tengan una referencia más a la hora de decidirse ;-)

En lo personal estaba usando el siguiente criterio (que no quiere decir que sea correcto ni el mejor): que la url fuera coherente con su lectura, es decir, prefiero que diga:
  • surforce.com/usuarios/ficha/ver/id/1
Y no
  • surforce.com/usuario/ficha/ver/id/1
Ya que es funcionalidad (módulo) que se aplica a "todos" los usuarios y no a un usuario, y el controller afecta a un solo usuario (y así ajustar los nombres de los elementos).

Ejemplos:
  • A pesar que existe en la documentación referencia a los módulos, no especifica exactamente cómo nombrarlos, aunque muestra ejemplos tanto en singular como en plural.
  • En los mismos ejemplos muestran "blog" y "news", por lo que yo lo analizaría por el lado de "si es un módulo de blog (uno) lo usaría en singular, pero si es un módulo que maneja varios blogs (más de uno), lo llamaría blogs" ("módulo de blogs").
Usando un poco el sentido común, sin pensar en MVC ni en ZF, ¿si necesitara crear módulos para un sistema, qué nombres les daríamos?
  1. Sistema de Gestión de Usuarios -> modulo "usuarios"
  2. Sistema de Gestión de Administración -> modulo "admin"
  3. Sistema de manejo de Stock -> modulo "stock"
  4. Sistema de manejo de Ventas -> módulo de "ventas"
Indistintamente de lo que hagan otros proyectos (como Magento, que veo que muchos usan como único referente), tendríamos que analizar más proyectos o encontrar algo "oficial" de la propia Zend.

Mi criterio sobre el tema de "nombres":
  • Una cosa es el nombre de un Model, donde yo usaría lo mismo que el criterio general de nombre de clases de POO, en singular.
  • Otra cosa son los controllers, que actualmente estoy usando más que nada el criterio de "url usable", que quede coherente a la lectura (no es lo mejor -sé que se pueden configurar las url's- pero tampoco encontré una documentación oficial que aclare este tema), por lo tanto si se aplica a uno o a muchos, usaría singular o plural.
  • Y otra cosa es el nombre del módulo, que creo también pasa por el tema de nuestra decisión de nombres, más que un tema de nombre de Clase o de Controller (por más que todos son "clases", son "especiales" y específicas del MVC y de Zend), también usaría singular o plural.
Creo que por ahí pasa la discusión, no sé que piensan ustedes y qué criterios usan para definir los nombres de sus componentes, sean tanto en Zend como en otros frameworks que usan MVC.

Soy todo oídos ;-)

Entradas populares