viernes 28 de agosto de 2009

Ejecutando Scripts Groovy con Grails

Necesito (Quiero) poder hacer scripts Groovy que serán ejecutados desde un controlador en Grails para analizar la base de datos y crear gráficos estadísticos.

La idea es no tener que tocar el código para poder crear nuevos informes, simplemente añadiendo el archivo en su carpeta correspondiente la aplicación los mostrará y nos permitirá ejecutarlos.

La primera dificultad ha sido averiguar como ejecutar un script externo. Para hacerlo nos debemos servir de la clase GroovyShell como descubrí en este sitio.

El otro reto, era disponer de la conexión a la base de daos en el script, la solución la encontré aqui.

No tengo experiencia suficiente con Grails como para saber si hay una forma mejor de hacerlo, pero por ahora mi solución ha sido...

NOTA: Todavía no esta terminado, lo iré ampliando según lo vaya resolviendo.


import groovy.sql.Sql

class StatsController {
javax.sql.DataSource dataSource

def index = {
Binding binding = new Binding();
binding.setVariable("dataSource",dataSource)
GroovyShell shell = new GroovyShell(binding)
File file = new File("src/stats/test.groovy")
Object value = shell.evaluate(file)
...


El contenido del archivo test.groovy podría ser algo parecido a...


import groovy.sql.Sql

def sql = new Sql(dataSource)
def valor_campo = new String(sql.firstRow("select campo from tabla").campo)
println valor_campo


Continuara...

domingo 16 de agosto de 2009

Grails - WebFlow - Serializable Error

Primero... un buen sitio por donde empezar .

El caso es que estoy intentando hacer un registro de usuarios que comprende varias página, así que necesito pasarme la Domain Class de User durante el flujo. Para eso se supone que tenemos el contexto "flow"


...
def u=new User(params)
flow.user=u
...


El tema es que cuando llegaba aquí me lanzaba la excepción "Could not serialize flow execution; make sure all objects stored in flow or flash scope are serializable"

Pues no desespereís! solo teneis que ir a la clase User y definirla como "serializable"


class User implements Serializable {
...

Grails

Ahora estoy investigando Grails un estupendo framework para Java, si a esto, le unimos mis pocos conocimientos del lenguaje y del paradigma MVC pues imaginaros el dolor de cabeza con el que termino cada vez que le dedico uno de los pocos ratos libres que tengo.

Utilizaré este mismo blog, como block de notas, donde iré apuntando las cosas que considere me vendrán bien recordar en el futuro, o que pueden servir a otros para salir de un atasco, que nadie se haga ilusiones!

jueves 23 de abril de 2009

Funcionarios Armados

El otro día viví un episodio, cuanto menos surrealista y seguramente denunciable, pero creo que hay cosas que es mejor dejar pasar, que el tiempo es oro y la justicia en este país tiene otros problemas más graves.
Ante un inocente acto de reprimenda a un niño que estaba incordiando al mío, fruto de la impasibilidad de sus padres y la tensión del momento. Se ocasiono una pequeña discusión entre madres, supongo que bastante típica en los colegios.
El caso es que días después, el marido de ella, funcionario de la Agencia Tributaría se acerco a la mía y sin tan siquiera saludar la soltó... “No vuelvas a acercarte a mi hijo o haré la vida imposible a tu familia”.
He de suponen que se refiere a que aprovechando su cargo publico, lucraría su prepotencia y despotismo gastando dinero público haciéndonos dar cuentas ante Hacienda, como si eso nos tuviera que preocupar.
Bastante pésimo, ¿no?

viernes 17 de octubre de 2008

Situando la fortuna del momento

Aquí se aprecia, como gracias a estar en un sitio dado, en el momento preciso pues te puede ahorrar una fortuna en publicidad. Es lo que nos ocurrió cuando la gente de "el hormiguero" de la cadena de televisión cuatro se encontró con uno de nuestros camiones que les venia al pelo para hacer una de sus supervivencias extremas...

miércoles 3 de septiembre de 2008

Acceso denegado en el WD MyBook World Edition


Si te has encontrado el problema de que pasados 10 minutos subiendo archivos a tu nuevo y flamante Western Digital MyBook World Edition te ha dado un error de acceso denegado, tienes dos posibles soluciones, devolverlo o intentar hackearle para solucionar el fallo y ya de paso disfrutar de algunas opciones simpáticas y útiles con las que sacar partido gracias a su Linux Embebido.

A mi, una utilidad que me ha hecho gracia es la de montarle un cliente de bittorrent para que el propio disco duro, que es mucho más silencioso, se lo curre y no tenga que tener el ordenador todo el día encendido.

Mi conocimientos de Linux son bastante limitados y no ha sido nada complicado, de todas formas, si te entiendes con los "guiris" quizás te venga mejor esta web: Hacking WD MyBook World Ed.

Una vez hayas averiguado la IP de tu equipo entra usando el navegador para configurarle, por defecto el usuario administrador es "admin" y la clave es "123456".

Te recomiendo asignarle una IP fija en la opción General Setup|Configure the Network Settings, siguiendo el asistente. Es importante que le des la puerta de enlace y las DNS para que tenga acceso a internet.

Create un nuevo usuario, que será con el que accederás mas adelante al sistema operativo.

Utiliza la siguiente url http://ip-of-your-mybook/auth/firmware_upgrade.pl?fwserver=martin.hinner.info/mybook/firmware.php, poniendo la IP de tu equipo donde indica ip-of-your-mybook.

Esto es para que se actualice el firmware teóricamente, pero a mi me da, que lo único que hace es dejarte el SSH abierto temporalmente.

Accedemos a el mediante SSH poniendo el nombre del usuario en mayúsculas seguido de la ip, en mi caso es ssh JAVIER@192.168.2.4 (en windows puedes usar un programita llamado PuTTY, que dicho sea de paso no tiene nada que ver con lo que estas pensando)

Nos debe pedir la contraseña, eso querrá decir que lo complicado esta hecho.

ahora debemos ejecutar los siguientes comandos (lo que esta después de las !! son comentarios, no transcribirlos ;-) )
# su - !! para darnos permisos de Súper!
# umount /shares/internal/ !! para desmontar la partición de datos compartidos
# mkfs.ext3 /dev/md4 !! para formatear la partición de datos
# reboot !! a disfrutar!!!

Espero que después de esto, tengas tu disco funcionando sin problemas, en caso contrario no dudes en poner tu comentario o enviarme un correo.

Mas adelante, en otro post, hablare de como se configura el torrent es este equipo, que aunque lento, tiene su gracia.



ACTUALIZACION: Si estas a tiempo, mi recomendación es que lo devuelvas a no ser que tengas muy claro que quieres hacer algo especifico con él, es un cacharro excesivamente lento e inestable.

martes 12 de agosto de 2008

Carrefour Swap

Tengo claro que la industria de los video juegos soporta grandes gastos en la producción de sus lanzamientos, que lógicamente intentan rentabilizar “obligando” a los fabricante a que protejan los intereses conjuntos impidiendo el pirateo.

Pero lo único que consiguen es crear un mercado negro paralelo, que fabrica chips y artilugios para saltarse todas estas protecciones, llegando en muchos casos a costar más de la mitad de lo que cuesta el aparato a “reventar”.

Con cada generación de consolas Wii, Nintento intenta protegerse de los piratas complicandolos la vida para “chipearlas” con diferentes técnicas, pero al final, lo único que consiguen es que un gran porcentaje de estas consolas que terminan estropeadas retornen a sus servicios técnicos amparadas por el cambio instantaneo que los grandes almacenes hacen cuando el cliente no quiere un producto, o por que vengan “defectuosas de fábrica”.

A lo que voy, que al final, no tiene sentido intentar garantizar los ingresos vía protección antipirateo, y tendrán que empezar a emplear a parte de los creativos en imaginar como sacar la pasta sin cobrar por el juego.