Buscando los viejos cuentos de terror de “la mano peluda” que son más o menos conocidos en méxico y estados unidos (hispanoparlantes), encontré una buena página con muchos relatos de terror.
Lo curioso es que los que he escuchado son bastante malos…
Les dejo el enlace para todas las personas que como yo gustamos de asustarnos un poco mientras trabajamos… o manjeando, etc: http://audiorelatosdeterro.blip.tv/file/1648337/
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)
}
}
Más sobre gorm
Bueno, ya estamos cansados de que algunas aspire one con ssd de las muchas que compramos vayan tán lentas (taaan) con windows xp, así que continuando sus optimizaciones ahora intentaremos el método de ewf (extended write filter), en teória éste método cargará el os en ram y protegerá el ssd de escritura, redirigiendo tál escritura a la ram.
Nota: Éste proceso es igual de efectivo en cualquier pc, sirve también para evitar virus y lógicamente es muy deseable para dispositívos embedidos
Anteriormente probamos cosas como quitar la memoria virtual, poner la memoria virtual en una ssd (de las lentas), desactivar las restauraciones, quitar todo del inicio del sistema, etc. Pero aún así las que tienen el ssd más lento siguen igual de inutilizables. Sin más preámbulos comenzamos.
Proceso:
- Descargar los componentes necesarios: ewftool, xplite, el iso trial de windows xp embedded y (opcional si se quiere instalar minlogon que acelera el tiempo de arranque y apagado aunque desactiva las opciones de usuario) minlogon.reg
- Abrir con winrar (o cualquier otro programa de descompresión) el archivo XPEFP2007.exe, dentro de ese exe entrar a la carpeta /rep/ y descomprimir los archivos: fbwf*.*, ewf*.* y minlogon.*
- Ejecutar xplite y desactivar la pretección de archivos de windows (después podrán reactivar dicha protección)
- Eliminar la carpeta \windows\system32\dllcache\ y su contenido
- Eliminar \windows\bootstat.dat
- (Opcional para instalar minlogon) Respaldar \windows\system32\winlogon.exe.
Después copiar a esa misma carpeta minlogon.exe
Renombrar minlogon.exe a winlogon.exe (cuando quieras puedes regresar el archivo original de winlogon.exe)
Correr minlogon.reg
- Aquí copio todos los archivos fbwf*.* y ewf*.* a \windows\system32\ aunque no sé si sea necesario, pero finalmente necesitan algún lugar donde vivir
- Ejecutar ewftool y dar click en “install ewf support”, seguir los consejos dados en “other ways to increase performance and reduce disk writes”, por último dar click en “minimize disk writes”
- (Opcional) Enable HORM
- Cerrar ewftool. Al reiniciar la pc el sistema ya estará protegido contra escritura
- Para activar la protección contra escritura usaremos el comando: “ewfmgr c: -enable”
Para desactivar la pretección usaremos: “ewfmgr c: -commitanddisable –live”
Activar/Desactivar tendrán efecto al siguiente reinicio
Para activar y utilizar HORM:
- Descargar ewf & horm manager de ésta página (versión 1.1 y el paquete de archivos necesarios “ewf files”
- Ejecutar ewf & horm, activar horm
- Ejecutar horm.reg
- Copiar a la raíz de la unidad que contiene windows el archivo horm.dat
- Utiliza el hibernar de windows, el sistema iniciará como en cualquier hibernación, la gracia es que ya no tendrás que volver a hibernar, ahora siempre iniciará con el contenido de esa hibernación
- Como el sistema siempre se restaurará de la hibernación, el tiempo de encendido se reduce muchísimo
- Puedes reiniciar y apagar el equipo normalmente, siempre se restaurará de la hibernación previamente hecha
- Se puede volver a hibernar para guardar un estado distinto
- Para desactivar e iniciar normalmente windows, oprime F8 durante la restauración y selecciona iniciar windows normalmente
Resultados:
- La pc ahora arranca en 15 segundos, desde oprimir el botón de inicio hasta que termina de cargar todo
- Y apaga en sólo 10 segundos o menos (inclusive en 3 segundos)
Tiempo que me tomó:
- Ya con práctica el proceso toma menos de 30 minutos, la primera vez por hacer pruebas y leer las instrucciones tardé unas 4 o 5 horas
Conclusión:
- Usarlo en cualquier pc aún sin tener el problema del ssd!!
- Agradezco a los autores de los enlaces que tengo abajo, ahí podrán encontrar mucha más información de la que yo puse!! y aclaro, éste método lo tomé totalmente de los siguientes sitios.
Enlaces:
Instrucciones resumidas y claras
Instrucciones para seguir este proceso pero aplicado a una pc para automóvil
Enlace principal sobre el tema
Otras instrucciones un poco más atrasadas, también están aplicadas a una pc car
Misma aspire one pero usando vista
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!
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…
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:

Functional Sketch Status Q
- 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:

Phesus Pedidos Mindmap