Groovy: Ejemplos Básicos de Programación

July 1, 2009 – 11:52 am
Tags: ,

En el siguiente archivo Groovy Examples pueden encontrarse algunos ejemplos básicos de programación utilizando el lenguaje Groovy.
Entre otros pueden encontrarse los siguientes ejemplos:

  • En el archivo _1_Hello hay una introduccion a la definicion de variables, rangos, listas y mapas y a la definicion de closures
  • En el archivo _2_Estructuras_Logicas hay una descripcion de la forma en que trabajan las estructuras de control basicas y los loops particulares de groovy
  • En el archivo _3_Metodos hay una explicacion del llamado a métodos y las sentencias try_catch_finally

Descargar Archivo Groovy Examples

Ejemplo de Loops con Groovy:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
public static void loops(){
 
//la variable it es el iterador
 
//al igual que todas los loop y closures, las sentencias del bucle se declaran entre corchetes
 
		// inicia en 0
 
		5.times {println "Times + $it "}
 
		1.upto(3) {println "Up + $it "}
 
		4.downto(1) {println "Down + $it "}
 
 
 
		def sum = 0
 
		1.upto(100) {sum += 1}
 
		println sum
 
 
 
		(1..6).each {println "Range $it"}
 
	}

Geo Marketing, ¿Herramienta o Gadget?

June 25, 2009 – 12:31 pm
Tags: , , , , ,

El Geomarketing es una herramienta que cuenta con los SIG (Sistemas de Información Geográfica) para relacionar el marketing con aspectos sociodemográficos; existen diversos modelos de investigación  que permiten visualizar distribuciones geográficas que facilitan la toma  de decisiones relevantes a la proyección y concentración de negocios.

Esta herramienta  valora factores representativos para la empresa como la ubicación, la competencia, las sucursales, entre otros.  Además colabora en la identificación de consumidores potenciales teniendo en cuenta aspectos como  el estrato, el nivel sociocultural, las necesidades etc.

Como elementos vitales para la aplicación del Geomarketing se identifican la calidad de la información, la definición de variables a analizar y la definición de objetivos; la información es filtrada, procesada y analizada mediante modelos estadísticos, matemáticos y espaciales obteniendo como resultado mapas temáticos digitales o impresos, en los que son representados los factores anteriormente relacionados respecto a la empresa y los consumidores.  Sin dejar de lado los aspectos cuantitativos y cualitativos que hacen parte de un análisis de este tipo.

Geo Marketing, ¿Herramienta o Gadget?: A continuación se publica la presentación realizada por el economista Javier Carranza en el auditori de la Universidad Nacional de Colombia el Miercoles 24 de Junio de 2009 sobre Geomarketing:

gr8conf: Conferencia dedicada a Groovy, Grails y Griffon

June 25, 2009 – 12:00 am
Tags: ,


En días pasados se realizó la conferencia gr8conf dedicada por completo a los temas de Groovy, Grails y Griffon.
Griffon es un nuevo framework destinado al desarrollo de interfaces gráficas:

Although several options exist for interface development in Java, even popular UI toolkits like Swing have been notoriously complex and difficult to use. Griffon, an agile framework that uses Groovy to simplify Swing, makes UI development dramatically faster and easier. In many respects, Griffon is for desktop development what Grails is for web development. While it’s based on Swing, its declarative style and approachable level of abstraction is instantly familiar to developers familiar with other technologies such as Flex or JavaFX.

A continuación algunas de las presentaciones disponibles en Slideshare:

Recopilación de Enlaces con Documentación sobre Groovy y Grails

June 4, 2009 – 12:20 pm
Tags: ,

Documentación sobre Groovy y Grails

Introducción al Desarrollo de Aplicaciones con Groovy y Grails (Parte 6)

June 3, 2009 – 11:51 am
Tags: , ,

Generación de RSS con Grails

En esta sección del tutorial utilizaremos un plugin para la generación de RSS utilizando grails.  (Puede encontrar una lista de los plugins existentes en la siguiente ubicación: http://grails.org/plugin/home

El plugin que utilizaremos para la generación de rss se llama Feeds.  Para instalarlo ejecutamos el siguiente comando (tenga en cuenta estar ubicado en la carpeta de su proyecto)

> F:\dev\issuetracker>grails install-plugin feeds

Cuando aparezca en la consola el mensaje “Plugin feeds-1.4 installed” podemos seguir al siguiente paso del tutorial.

Vamos a crear un feed rss con los issues creados en el sistema. Primero procedemos a ubicar el archivo /issuetracker/grails-app/controllers/IssueController.groovy y adicionamos el siguiente método:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def feed = {
        render(feedType:"rss", feedVersion:"2.0") {
            title = "Mi feed de prueba "
            link = "http://localhost:8080/issuetracker/issue/feed"
            description = "Issues Grails news feed"
 
            Issue.list().each() { 
            	issue -> entry(issue.submitter) { 
            		link = "http://your.test.server/article/${issue.id}" 
            		issue.description // return the content 
            	} 
            } 
        } 
    }

Si digitamos la dirección http://localhost:8080/issuetracker/issue/feed podremos ver generado el siguiente feed:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Mi feed de prueba</title>
    <link>http://localhost:8080/issuetracker/issue/feed</link>
    <description>Issues Grails news feed</description>
    <item>
      <title>User 1</title>
      <link>http://your.test.server/article/5</link>
      <content:encoded>My report from error</content:encoded>
      <guid>http://your.test.server/article/5</guid>
    </item>
    <item>
      <title>User 2</title>
      <link>http://your.test.server/article/6</link>
      <content:encoded>This component does not work in firefox</content:encoded>
      <guid>http://your.test.server/article/6</guid>
    </item>
  </channel>
</rss>

Si queremos incluir el enlace para la visualización del RSS en nuestra página de listado de Issues podemos adicionar el siguiente código al archivo /issuetracker/grails-app/views/issue/list.gsp

1
2
3
   <div >
	<a href="${createLinkTo(dir:'issue/feed', file:'')}">View RSS</a>
   </div>

Introducción al Desarrollo de Aplicaciones con Groovy y Grails (Parte 5)

June 3, 2009 – 11:20 am
Tags: , ,

Modificación de las Vistas Generadas por Grails

En muchas ocasiones no es suficiente la funcionalidad que genera automáticamente el marco de trabajo Grails.  En la presente sección realizaremos algunas modificaciones a las pantallas generadas por la herramienta.

Vamos a la carpeta ‘grails-app/views‘, notese que hay una carpeta por cada tabla creada, en estas carpetas estará en código seudo-HTML para cada una de nuestras vistas en la aplicación.

El siguiente paso es modificar algunas de las vistas para ver su funcionamiento, para nuestro ejemplo vamos a modificar la vista que muestra la lista de “issues”, abrimos el archivo ‘grails-app/views/issue/list.gsp‘, pero, primero vamos a crear un nuevo tag dinamico para nuestra aplicación (ud puede ver mas de los tags en http://grails.org/Dynamic+Tag+Libraries).

Teniendo como base la carpeta de nuestro proyecto ejecutamos el comando:

> grails create-tag-lib Misc

Una vez ejecutado este comando se creara el archivo ‘grails-app/taglib/MiscTagLib.groovy ‘ y a este le vamos a añadir las siguientes líneas de código:

Descargamos la siguiente imagen: http://openclipart.org/people/hrum/hrum_cocktail.png y la copiamos en la carpeta issuetracker\web-app\images (es recomendable reducir el tamaño de la imagen para una mejor visualización).

Ahora modificamos   el archivo ‘grails-app/views/issue/list.gsp ‘ de la siguiente forma: (Nótense las líneas 27, y 39 a la 43.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
        <meta name="layout" content="main" />
        <title>Issue List</title>
    </head>
    <body>
        <div class="nav">
            <span class="menuButton"><a class="home" href="${resource(dir:'')}">Home</a></span>
            <span class="menuButton"><g:link class="create" action="create">New Issue</g:link></span>
        </div>
        <div class="body">
            <h1>Issue List</h1>
            <g:if test="${flash.message}">
            <div class="message">${flash.message}</div>
            </g:if>
            <div class="list">
                <table>
                    <thead>
                        <tr>
                   	        <g:sortableColumn property="id" title="Id" />
                   	        <th>Component</th>
                   	        <g:sortableColumn property="type" title="Type" />
                   	        <g:sortableColumn property="submitter" title="Submitter" />
                   	        <g:sortableColumn property="description" title="Description" />
                   	        <g:sortableColumn property="status" title="Status" />
                   	        <g:sortableColumn property="bounty" title="Bounty" />
                        </tr>
                    </thead>
                    <tbody>
                    <g:each in="${issueInstanceList}" status="i" var="issueInstance">
                        <tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
                            <td><g:link action="show" id="${issueInstance.id}">${fieldValue(bean:issueInstance, field:'id')}</g:link></td>
                            <td>${fieldValue(bean:issueInstance, field:'component')}</td>
                            <td>${fieldValue(bean:issueInstance, field:'type')}</td>
                            <td>${fieldValue(bean:issueInstance, field:'submitter')}</td>
                            <td>${fieldValue(bean:issueInstance, field:'description')}</td>
                            <td>${fieldValue(bean:issueInstance, field:'status')}</td>
                            <td>
                            	<g:repeat times="${issueInstance.bounty}">  
   									<img src="${createLinkTo(dir:'images', file:'hrum_cocktail.png')}" alt="${issueInstance.bounty} beers"/>  
   								</g:repeat>  
                            </td>
                        </tr>
                    </g:each>
                    </tbody>
                </table>
            </div>
            <div class="paginateButtons">
                <g:paginate total="${issueInstanceTotal}" />
            </div>
        </div>
    </body>
</html>

Ahora nuestro listado de Issues se verá de la siguiente forma:

Introducción al Desarrollo de Aplicaciones con Groovy y Grails (Parte 4)

June 2, 2009 – 5:49 pm
Tags: , ,

Pruebas Unitarias de Proyectos Grails

Grails soporta los conceptos de “Pruebas Unitarias” y “Pruebas de Integración“.
Las “pruebas unitarias” se orientan a pruebas pequeñas de ejecución rápida que no soportan carga de Componentes.  Las “pruebas de integración” se encargan de evalular el ambiente en el que se ejecuta el aplicativo.

Read the rest of this entry »

Introducción al Desarrollo de Aplicaciones con Groovy y Grails (Parte 3)

June 2, 2009 – 4:05 pm
Tags: , ,

Configuración de Eclipse con soporte para Groovy y Grails

A continuación se describirá el proceso para configurar el entorno de Eclipse con las opciones para edición de Código Groovy y soporte para aplicaciones Grails.  (Eclipse es un entorno de desarrollo múltiplataforma de código abierto. Más información en esta dirección: http://es.wikipedia.org/wiki/Eclipse_(software) ) .

Primero abrir eclipse y seleccionar en el menú la opción  help → software updates.   Esta opción abrirá una nueva pantalla. En esta seleccionamos la opción  Avaliable Software: Read the rest of this entry »

Introducción al Desarrollo de Aplicaciones con Groovy y Grails (Parte 2)

May 31, 2009 – 8:23 am
Tags: , ,

Creando una Clase del Dominio del Problema

Para nuestro ejemplo vamos a crear los siguientes modelos de dominio: Project, Component, and Issue.
La clase “Project” que representa el proyecto de software para el cual vamos a registrar incidencias (Bugs).
Un Project puede tener uno o más Componentes (Ejm: gui, documentación, etc)
Un Componente solo está asociado a un proyecto y puede tener cero o más Issues asociados.
Un objeto Issue está asociado a un Componente.

Read the rest of this entry »

Introducción al Desarrollo de Aplicaciones con Groovy y Grails (Parte 1)

May 30, 2009 – 11:39 pm
Tags: , , ,

Introducción:

Grails es un marco de trabajo para el desarrollo de aplicaciones web que se basa en las ideas de
Codificación a través de Convenciones” (coding by convention) y DRY (don’t repeat yourself) utilizando el lenguaje de programación Groovy.

Grails se ejecuta sobre una máquina virtual de Java, teniendo acceso completo a la plataforma y librerías Java.

Con Grails pueden crearse fácilmente aplicaciones web gracias a:

  • Ofrece un Entorno completo para el desarrollo y publicación de aplicaciones: Todas las dependencias y configuración requeridas para ejecutar las aplicaciones web son proporcionadas por Grails.  Usted debe solamente preocuparse por el código particular de su aplicación.
  • Incluye un servidor Jetty embebido.
  • El modo de desarrollo automáticamente recarga los cambios realizados al código de la aplicación sin tener que reiniciar el servidor web.
  • Ofrece mapeo de persistencia automàtico para las clases del Dominio del problema, así como también manejo automàtico de las relaciones entre las entidades.
  • Ofrece scaffolding para el acceso a datos, ofreciendo posibilidades para el desarrollo rápido de operaciones CRUD (Create, Read, Update, Delete).
  • Soporte de tecnologías para la implementación de vistas de datos utilizando “dynamic tag libraries” y “Groovy Server Pages (GSP)”
  • Extensibilidad a través de la utilización de plugins.

Read the rest of this entry »