Groovy

Una perspectiva del uso de tuplas en Groovy!

El uso de Tuplas en Groovy me parecía algo innecesario, ya que el lenguaje cuenta con listas muy agradables y un método que permite hacerlas inmutables.

def lista1 = ["Rodrigo", 30]
lista1.collect{ it }

def lista2 = ["Rodrigo", 30].asImmutable()
println(lista2.getClass())
lista2[0] = 'Rambo!'

/**
class java.util.Collections$UnmodifiableRandomAccessList
...
java.lang.UnsupportedOperationException
        at java.util.Collections$UnmodifiableList.set(Collections...
*/

Y porque hacer algo como lo anterior si Groovy cuenta con tuplas (groovy.lang.Tuple).

def tuple = new Tuple("Rodrigo", 30)
println(tuple)
java.util.Collections.reverse(tuple)

/**
[Rodrigo, 30]
...
java.lang.UnsupportedOperationException
        at java.util.AbstractList.set(AbstractList
*/

No se si sea mejor usar listas inmutables en lugar de tuplas, pero una queja es que no se puede hacer una tupla como lo haría con una lista ([...]), como lo siguiente.

def tuple = (“Rodrigo”, 30)

/** expecting ')', found ',' at ... */

Un Blog hecho en Grails? así es y se llama Anelisse

Hace ya un buen rato que no publico nada en este pequeño espacio que Java México me da, sin embargo hoy quisiera hacer de su conocimiento el avance de un proyecto personal que he tenido en mente durante ya un par de años desde que inicie con mi blog el cual de momento se encuentra abajo. Pero cuando inicie me di cuenta que aunque los ya conocidos sistemas de blog como wordpress(que use por mucho tiempo), joomla o drupal en este punto tienen miles de configuraciones y plugins para casi cualquier cosa, sin embargo por mas que busque nunca pude encontrar un sistema de blog hecho en Java o en algún lenguaje para la JVM, muchos de ustedes se preguntaran porque Java o en esta caso porque Grails? la respuesta es sencilla, siempre me ha gustado Java desde que inicie el mundo de la programación me gusto mucho y creo que ya es hora de que tenga también su propio sistema de blogueo que tiene desventajas frente a los demás sí en especial conseguir el hosting para echarlo a andar pero bueno la idea es que este ahí disponible para quien guste utilizarlo y porque no también modificarlo.

KataWordWrap

Como parte de mi pomodoro y recomendación de mi estimado amigo Alfred (@alfredochv) me di un poco de tiempo para hacer la kata WordWrap. Les comparto mi solución, se me ocurrió otra manera de hacerlo, pero por falta de tiempo no la he concretado, tal vez la haga otro día.

/*
Ejemplo con 4 columnas

You write a class called Wrapper
....|
You
writ
e a
clas
s
call
ed
Wrap
per
*/

class Wrapper{
    static wrap = { inputStr, colNum ->
        if(colNum <= 0 || inputStr.length() <= colNum){
            return inputStr
        }

        def outputString = ""
        def tempStr = inputStr[0..colNum-1]
        def inputStrLength = inputStr.length()-1
        def finPosTmp = 0
        def iniPosInputStr = 0
        def lastWhiteSpace = tempStr.lastIndexOf(' ')
       
        if(tempStr.endsWith(' ')){
            finPosTmp = tempStr.length() -1
            iniPosInputStr = colNum-1
        }else if(lastWhiteSpace > 0){
            finPosTmp = lastWhiteSpace
            iniPosInputStr = lastWhiteSpace + 1
        }else{
            finPosTmp = colNum-1

Como se puede Exportar datos de una BD a un exel

Tengo muy poco usando el lenguaje de Groovy y surgió la necesidad de importar los datos de una BD a un exel serviria mucho un ejemplo la vdd no tengo la menor idea de como hacerlo la BD se tiene pensado montarla en Mysql les estare muy agradecida de sus aportaciones. De antemano muchas gracias.

JavaOne 2012 charlas técnicas en YouTube

El equipo del Oracle Learning Portal publica las charlas técnicas impartidas en la JavaOne 2012 en su canal de YouTube.

Las charlas son variadas y no tienen desperdicio, las pongo aquí para que las puedan aprovechar.

JavaOne 2012 Technical Tracks:

  1. Core Java Platform (69 videos)
  2. Development Tools and Techniques (75 videos)
  3. Emerging Languages on the JVM (35 videos)
  4. Enterprise Service Architectures and the Cloud (66 videos)
  5. Java EE Web Profile and Platform Technologies (81 videos)
  6. Java ME, Java Card, Embedded and Devices (78 videos)
  7. JavaFX and Rich User Experiences (48 videos)

Y aquí el canal de Oracle Learning Portal.

String Calculator en Groovy

Hola, como parte de la tarea de un curso que estoy tomando, nos dejaron resolver String Calculator y aquí comparto mi solución, la termine en poco tiempo, pero no en menos de 30 minutos la parte de probar las exceptions se me dificulto, se que con shouldFail de GroovyTestCase eso se pudo resolver, pero quise experimentar un poquito. Ya me dio flojera hacer que los delimitadores fueran mas complejos como por ejemplo [****].

String.metaClass.sum = { ->
        if(delegate.trim()){
                def delimiters = '[,'

                if(delegate.startsWith("//")){
                        def limitPosition = delegate.indexOf("\n");
                        delimiters += delegate[2..limitPosition]
                }

                def negatives = []
               
                def result = delegate.split(delimiters + ']').collect{ num ->
                        num = num.isNumber() ? num as int : 0
                        num >= 0 ?: (negatives << num)
                        num < 1001? num : 0
                }.sum()
                if(negatives){
                        throw new RuntimeException(
                                "Negatives not allowed $negatives"
                        )
                }
                result
        } else {
                0
        }
}

assert 0 == "".sum()
assert 0 == " ".sum()
assert 1 == "1".sum()
assert 1 == " 1".sum()
assert 1 == " 1 ".sum()

Como hacer pruebas a un script Groovy

Como probar un script Groovy.

Hola, te voy a platicar unas formas en las que vas a poder alardear que tus ‘scripts’ en Groovy tienen todas las pruebas unitarias necesarias y que el día de la instalación a producción te lo pueden dar libre, porque no tiene caso que pierdas tu tiempo viendo como los demás se sorprenden de lo bien que esta jalando tu ‘script’; aunque seguramente un sysadmin sea tu usuario. :)

¡Obvio, lo anterior es broma!

Assert es tu amigo.

Quisiera platicar de assert, aunque la información sobre esta herramienta en Groovy es muy extensa en Internet.

Los assert dentro del código son muy útiles cuando muestras a tus amigos los bocetos de las ideas que tuviste en la noche. Por ejemplo:

def saludos   = ['no':false, 'si': true, 'claro': true, 'no lo se': false]
def respuesta = 'si'

assert respuesta in saludos

println saludos."$respuesta"

En este caso es importante que el assert haga su trabajo, de lo contrario ocurrirá una groovy.lang.MissingPropertyException.

Un vistazo a Griffon

Tuve la curiosidad de usar este framework al leer este post Aqui y como soy medio lento en aprender haber como me va.

¿Donde lo descargo?

http://griffon.codehaus.org/Download

Grails y Oracle

Que hago mal???

Pues estoy tratando de conectar Grails a una base de datos Oracle y nada mas no puedo, el IDE en el que estoy trabajando es:

  • Netbeans 7.1.2
  • Grails 2.0.3

Estoy ya configurando el archivo de DataSourde.groovy como sigue:

 
dataSource {
    pooled = true
    dbCreate = "update"
    driverClassName = "oracle.jdbc.driver.OracleDriver"
}
hibernate {
    cache.use_second_level_cache = true
    cache.use_query_cache = false
    cache.region.factory_class = 'net.sf.ehcache.hibernate.EhCacheRegionFactory'
}
// environment specific settings
environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            user="RH"
            password="METROSIRH"
            url = "jdbc:oracle:thin:@160.1.X.X:1521:METROSISDV=true"
        }
    }
}

Como utilizar el Bootstrap de twitter en Grails

¿Qué es el Bootstrap de twitter?

Twitter Bootstrap es una solución flexible que ofrece muchas más potencia que el CSS normal. Conseguimos una serie de características extras como las declaraciones anidadas, mixins, operaciones y funciones de color. Es fácil de implementar en el código tan sólo incluyendo la declaración en la cabecera y usar los componentes disponibles.

La evolución de Bootstrap dentro de Twitter ha sido un trabajo constante para disponer de una herramienta que les permitiera escalar más fácilmente y mantener los proyectos que iban desarrollando. Al principio de todo cada ingeniero usaba cualquier librería con la que estuviera familiarizado lo que producía graves inconsistencias al intentar crecer. Por lo tanto Twitter Bootstrapes un gran ejemplo para todos los desarrolladores que trabajamos en compañías grandes en la que es necesario disponer de un framework uniforme para ir evolucionando.

Podéis echar un vistazo a todo el código en la sección que dispone Twitter en GitHub. Allí comprobaréis todo lo los archivos que lo componen por separado:

reset.css para eliminar los elementos innecesarios.

Distribuir contenido