Haciendo TDD en PHP con Silex y PhpUnit (Parte 2)

Hace unos días hemos empezado a trabajar con TDD y Silex en un proyectos bastante especial, “Como utilizar Tdd con Silex utilizando PhpUnit” para ello ya tenemos configurado todo el entorno par a poder empezar a hacer test, escribir código y refactorizar.

Básicamente nuestro proyecto es la API de una calculadora 😉 es decir es una calculadora con la que podremos realizar operaciones aritméticas de 2 operandos con tan solo hacer peticiones GET a una dirección web. Para ello los pasos que daremos serán, refactorizar la aplicación actual para poder ampliarla con la nueva funcionalidad, crear una librería que realice las operaciones aritméticas, modifica el routing para poder hacer las operaciones haciendo peticiones GET desde un Navegador.

Refactorizar el proyecto de Silex con TDD para ampliar la aplicación.

Ahora que tenemos test (aunque solo sean un par) podemos hacer cambios y asegurarnos de que todo sigue funcionando. Lo primero que haremos será mover toda la lógica de la App. Pero antes que nada debemos asegurarnos de que todo está correcto, así que antes de tocar nada lanzamos nuestros tests.

Continúa leyendo “Haciendo TDD en PHP con Silex y PhpUnit (Parte 2)”

Poco a poco con Vagrant

Una de las frases que siempre se toman a broma es “esto en mi PC funciona”, muchas veces necesitamos tener entornos (Sistema operativo, librerías, frameworks, versiones, variables de entorno…) idénticos al que utiliza un sistema en producción y esto a veces es complicado y aparece la dichosa frase “esto en mi PC funciona”.

Otra de las razones es que muchas veces pruebo herramientas software, tecnologías, framework, … y hay veces que termino 

instalando muchos programas, configurando variables de entorno y cosas así para que todo funcione para poder solucionar el problema que estaba intentando.

 

Por ello buscando un poco sobre como disponer de entornos “idénticos” a producción, que puedan crearse y borrase según las necesidades que vayamos teniendo he leído algo sobre Vagrant. Así puedo disponer de máquinas virtuales de “usar y tirar” con las que poder trabajar.

Vagrant es una herramienta para la creación y configuración de entornos de desarrollo virtualizados, básicamente Vagrant es una interfaz de VirtualBox, que facilita la creación de máquinas virtuales.

Continúa leyendo “Poco a poco con Vagrant”

De Scrum a Lean – Kanban una gran herramienta

El otro día ya empezamos a traducir el artículo “De Scrum a Lean” publicado aquí: http://net.tutsplus.com/articles/editorials/from-scrum-to-lean/. En él se habla de los principios de Lean y de cómo con esos principios podemos adaptarlos al desarrollo de software, en este caso vamos a comentar los principios del Kanban y cómo aplicar esta técnica al desarrollo software y sobre todo cuando tenemos como base una metodología Scrum y un equipo que congenia bien.

Kanban una gran herramienta

Hay varias técnicas y herramientas para hacer el trabajo de Lean. Prefiero Kanban, una herramienta basada en tableros, similar al tablero de planificación de Scrum. Podemos imaginar kanban como un embudo doble

Continúa leyendo “De Scrum a Lean – Kanban una gran herramienta”

De Scrum a Lean – aprendiendo un poco

Aunque el objetivo principal de Scrum es la organización y la gestión de proyecto, Lean se centra más en los procesos con el fin de producir más rápidamente productos de calidad. Este modelo de gestión (Lean) puede ser útil para empezar a adoptar principios ágiles, o puede ser a lo que evolucione tu equipo cuando Scrum no es suficiente.

Esta es la historia de Parkos Csaba publicada aquí: http://net.tutsplus.com/articles/editorials/from-scrum-to-lean/, me pareció interesante traducirla y compartirla .

Un poco de historia

Lean es un conjunto de principios definidos por la industria de fabricación de automóviles de Japón en la década de 1980. El ingeniero de calidad de Toyota, John Krafcik, acuñó el término, mientras que la observaba los procesos y herramientas utilizadas para “eliminar el desperdicio” en la producción de automóviles en masa. Aunque no fue hasta 2003 cuando Mary y Tom Poppendieck introdujeron el término Lean como  un proceso de desarrollo software en su libro, Lean Software Development: An Agile Toolkit.

Considerando Scrum como un conjunto de reglas y roles, Lean es un conjunto de principios y conceptos con algunas herramientas. Ambos son considerados como técnicas ágiles, y comparten la misma ideología de entrega rápida mientras reducen defectos y errores. Siempre me gusta enfatizar la adaptación ágil, pero no podemos olvidar  que Scrum se presenta como un conjunto de reglas obligatorias. De hecho algunos fanáticos de Scrum ponen el grito en el cielo si estar reglas no se siguen al pie de la letra.

Continúa leyendo “De Scrum a Lean – aprendiendo un poco”

Liferay IDE – Creando un Portlet más allá del “hello world”

Vamos a crear un portlet con un poquito de chicha utilizando Liferay IDE, no es el típico hola mundo, sino un pequeño formulario, así aprenderemos como procesar un formulario con Liferay.

Lo primero será crear el portlet, como vemos aquí:

Lo añadimos a Tomcat.

Con esto tenemos creado un portlet “Hola mundo”, pero vamos a ir un poco más allá, vamos a procesar un formulario para ver cómo se trabaja con los distintos modos del portlet y así tener un portlet con algo de funcionalidad.

Lo primero que vamos a hacer es crear una clase llamada UserRegistrationPortlet que extienda a GenericPortlet, esta clase estará dentro de la carpeta src, en el paquete com.jesuslc

Continúa leyendo “Liferay IDE – Creando un Portlet más allá del “hello world””

Aprendiendo sobre portlets

Cuando nos decidimos a utilizar Liferay una de las cosas que debemos tener en cuenta es que debemos aprender sobre portlets.

Pero por dónde empiezo a la hora de desarrollar un portlet, que métodos tengo que implementar, como es el ciclo de vida de un portel.

Estas son muchas de las preguntas que nos surgen y que vamos a recopilar aquí.

Donde se ejecuta un portlet

Los portlets se ejecutan en un contenedor de portlets, existen muchos contenedores de portltes como JetSpeed o Liferay.

Qué métodos debe implementar

Esta es la interfaz que debe implementar un portlets. Normalmente lo que se hace es extender a javax.portlet.GenericPortlet

Continúa leyendo “Aprendiendo sobre portlets”

Como crear Portlets utilizando Liferay IDE

Hace unos días contamos como instalar Liferay IDE sobre eclipse, creo que es hora de desarrollar un pequeño portlet “Hola Mundo” para probar las funcionalidades de Liferay IDE.

Los portlets se ejecutan dentro de un contenedor que gestiona su ciclo de vida, realizando llamadas a métodos equivalentes a render() o destroy(). Finalmente, este contenedor puede formar parte de un software de portales empresarial, como Liferay, Oracle Weblogic Portal o IBM Websphere Portal. En nuestro caso Liferay.

Manos a la obra.

Cambiar a la perspectiva Liferay

Lo primero será abrir Eclipse, elegir el workspace (yo he creado uno en el mismo directorio donde descomprimimos Liferay) y cambiar a la perspectiva de Liferay. Para ello vamos a windows->Open Perspective->Other y seleccionamos Liferay

Configurar el servidor

Ahora es hora de configurar un servidor de aplicaciones. Nosotros vamos a escoger el que viene con Liferay. Si ya tienes un Tomcat instalado en tu máquina ( XAMPP o similar) solo debemos cambiar unas cosillas.

Continúa leyendo “Como crear Portlets utilizando Liferay IDE”

Vocabulario software, la jerga de los informáticos

Este post es una traducción de: http://www.javacodegeeks.com/2012/12/agile-software-developer-terminology-for-new-programmers.html

Muchas veces cuando estamos leyendo un artículo técnico las siglas y la jerga se ponen un poco cuesta arriba. Sobre todo al principio cuando no se es muy ducho en la materia (como yo) siglas como DRY (que no es lo mismo que DRY), YAGNI,.. nos suenan un poco raro. Traduzco el post porque me parece interesante tener un pequeño diccionario con todos estos términos.

Continúa leyendo “Vocabulario software, la jerga de los informáticos”

Estructura de un portlet Liferay

Anteriormente ya hemos hablado de Liferay y de como por medio de portlets podemos ampliar la funcionalidad del CMS. Aunque siempre viene bien refrescar un poco los conceptos.

Según la wikipedia los portlets son componentes modulares de las interfaces de usuario gestionadas y visualizadas en un portal web. Los portlets producen fragmentos de código de marcado que se agregan en una página de un portal.

Por ejemplo podemos tener un portlet que nos provea de información meteorológica de nuestra ciudad, o un portlet que nos indique que tenemos un nuevo correo electrónico

Aquí presentamos la estructura de un portlet genérico. Esta estructura es la que utilizan la mayoría de los portlets, ahora vamos a explicar poco a poco cada uno de los directorios:

Continúa leyendo “Estructura de un portlet Liferay”

Documentación de Kunagi en español

Hace un tiempo hablé de diferentes herramientas para gestión de proyectos, de entre todas ellas elegí Kunagi.

Está en inglés y he intentado traducirlo, pero me encontré con que no es posible. Así que al menos voy a realizar pequeña user guide en español para ver como funciona.

En cada una de las secciones de kunagi existen un poco de documentación donde se explica en detalle para que funcionalidad tiene esa parte de la aplicación. He dividido por títulos y subtítulos.

Al final he dejado un PDF con el post.

Continúa leyendo “Documentación de Kunagi en español”