Blog de Phesus Opensource Software
Posts tagged groovy
Gorm Standalone, desktop, outside grails, etc.
Mar 28th
Hola!, hace algunos días me estuve peleando con la instalación del gorm que viene en el nuevo grails 1.1, obviamente como dice el título yo lo quería funcionando en mi aplicación de escritorio, por algún motivo aunque la solución era muy simple nunca encontré un ejemplo claro, así que para quién le sirva lo pondré aquí.
Primero que nada necesitarán grails 1.1 y groovy 1.6, básicamente el paquete de grails traé todas las dependencias necesarias entre las cuales estarán hibernate y spring.
Aclaro que aunque se usan todas éstas tecnologías en realidad la aplicación no debe tener ninguna orientación, si no que se puede agregar sin importar que utilicemos el framework spring-mvc.
- Insertamos el siguiente archivo en el classpath, deben cambiar los datos de su base de datos y su base-package por los suyos!
applicationcontext - Escribimos el código de inicialización de todo el framework, aquí viene el “truco”
import org.springframework.context.support.ClassPathXmlApplicationContext; ...... def factory = new ClassPathXmlApplicationContext('(tu paquete)/applicationContext.xml')En package simplemente pongan el nombre de su paquete (lo digo para quién aún no sepa eso) , en en mi caso fue “nadesicoi”
- Escribir algún dominio, por ejemplo:
@grails.persistence.Entity class Hoja { String alfa String beta }Creo que sobra decir que la clase Entity vuelve a nuestra clase un dominio
- Sólo resta hacer una prueba en cualquier lugar de nuestro programa:
package nadesicoi import org.springframework.context.support.ClassPathXmlApplicationContext; class Prueba { static def ejecuta() { def factory = new ClassPathXmlApplicationContext('nadesicoi/applicationContext.xml') //Operaciones gorm def obj = new Hoja(alfa:'a', beta:'b') obj.save() Hoja.findAll().each() { println it.dump() } println Hoja.get(21).alfa def obj = Hoja.list(max:10) } }
Zero scientific notation in string
Feb 9th
The old-school way to remove that ugly scientific notation (tell me if something more sofisticated way is out there):
def a = 1600.00 * 100
a =/ 100
println a // prints 1.6E+3
println String.format(“%.2f”, a) // this print 1600.00
Ah!, it is on groovy!
Groovy swingbuider binding
Feb 9th
Sigo trabajando con la mejora al ajustador del altera para terminar cierto trabajo tedioso… en fin, si alguien necesita modificar cortes de caja (de esos que salen en tickets) avíseme!, tengo un programa gratuito para hacerlo (ese es el altera).
En fin, trabajando con la interfáz gráfica e intentando buscar un editor visual para swingbuilder o para javafx (de éste último encontré uno, se llama jfxbuilder) me di cuenta que seguiré haciendo los formularios en java y los controladores en groovy por el momento y para facilitar las cosas ahora estoy usando el binding de groovy.
Démosle un vistazo, la página oficial es ésta: http://docs.codehaus.org/display/GROOVY/SwingBuilder.bind y aquí viene lo que averigué en dos pequeños ejemplos (ambos usando swingbuilder):
Ligar un slider a un jtextfield (cuando movamos el slider se cambiará el texto en el campo):
slider= slider(maximum:10, minimum:1)
txt = textField(text: bind(source:slider, sourceProperty:’value’), columns:10)
Bueno como muchos ya saben ésto es más fácil con un bind que con eventos, ahora bien, si tienen una versión más nueva de groovy podrán hacer lo siguiente:
slider= slider(maximum:10, minimum:1)
txt = textField(text: bind{ slider1.value }, columns:10)
Otra nota importante es que al parecer hasta la versión actual no hay binding bidireccional!! (1.6 RC 3 aunque yo probé 1.51)
Así es que continuaré con ese ajustador…
Primer Día!
Feb 3rd
Pues hoy ha sido un gran día para los avances de phesus!, en primer lugar por una gran noticia personal y después porqué sigo con la cadena de ideas y hallazgos que me persiguen desde ayer, así que a manera de registro aquí está.
Los hallazgos de hoy
- Los servicios de alojamiento CLOUD, es simple, ¿han tenido el problema típico de que siempre te sobra o falta capacidad en el servidor? y ¿el servidor es demasiado caro aunque me sobra capacidad? y… eventualmente hará falta más capacidad y necesitaré hacer algo. Bien, problema arreglado (al parecer) sólo tienes que pagar lo que utilizas y en cualquier momento puedes hechar mano de más servidores de la nube. Los proveedores que encontré por ahora son: http://gogrid.com/ y http://aws.amazon.com/ec2/
- Los protocol buffers (este hallazgo en realidad es de ayer). Esta API desarrollada por google es una alternativa al xml, yaml, etc. al escribirse es legible, parecida a la definición de una clase, pero aquí viene lo interesante, se compila en bytes, ésto la vuelve ilegible y mucho más rápida de leer (de 3 a 10 veces en comparación con xml), además de poderla enviar fácilmente como una cadena de bytes a donde sea, bastante bien!
- Backbase: Client Framework y Telamon Client framework es un marco de trabajo (principalmente una librería de objetos para mi interés particular) ajax!, traé unos excelentes objetos para hacer cualquier interfáz de escritorio que podrías hacer con swing por ejemplo, pero esto no me interesaría tanto si no fuera porqué hace sinergía con Telamon su editor WYSIWYG que funciona stand-alone y como plugin de eclipse, al parecer por sus tutoriales y videos es toda una joya ajax.
- Screenshot Captor.
Las ideas de hoy
- Programa de pedidos: probar un clásico applet o backbase y hacer algo bastante web 2.0?. bueno mi respuesta obviamente es la segunda, pero estrategicamente terminaré haciendolo como applet y dejaré la prueba de backbase para el resto del prototipo status q (vease trabajo de hoy)
- Probar los protocol buffers de google en los archivos de configuración futuros y si funcionan aplicarlos en nadesico y omoikane
- Ordenar la oficina y comenzar a dedicarle tiempo a los pendientes antiguos!!
- Sé que hay más pero ya no los recuerso :S
- Organizar archivos del disco duro
- Organizar favoritos
- Configurar correo phesus.com, poner cliente de correo y lector de feeds de blogs y noticias
- Volver opensource el prototipo que haré de pedidos
El trabajo de hoy
- La primera parte del prototipo Status Q. Yo lo llamo el boceto funcional!. Tal como estaba planeado, extraé información de phesus nadesico a través de xml rpc y simplemente despliega un top 10 muy sencillo usando, claro, componentes de la api google visualization:
- Phesus Pedidos (Prototipo). Aplicación sencilla para mantener control y memoria de los pedidos (y peticiones) de nuestros clientes. Sobretodo quiero probar algunas cosas. Espero tenerla lista en unos días por ahora tengo el mapa de la idea:

