your excuse: We are currently trying a new concept of using a live mouse. Unfortuantely, one has yet to survive being hooked up to the computer.....please bear with us.
CoffMan Weblog Linux category Java category wiki Image thx to Chenchu Ricochet Robot J2MESimon Says J2ME gameCoffMan WeblogJava stuffLinux stuffImage thx to ChenchuWickleMarihuana Category
   Victor Fariña Infante , info about my own projects and thoughts.
 
login



.:¿?-_-¿?:.
Anton tiene




Powered by

 



Technology, Java, thoughts and projects of Coffman, host of wickle dot com. feel free to make comments.
[Jul 26, 2006]

Bueno, haciendo referencia a una de las necesidades que tenia yo basicas para linux y encontrandolo sin querer (como suele pasar), he encontrado un pequeño manual de como hacer screencasts en linux, quedan bastante bien y son muy faciles de hacer, pongo aqui un pequeños manual.

Introducción

Necesitaremos vnc , pues este metodo usa vnc4server, OJO la version anterior a esta es vncserver y tiene los archivos de configuracion cambiados de sitio.

Instalamos y configuramos

#apt-get install vnc4server xvncviewer


Bajamos pyvnc2swf de  aqui , lo destarreamos y en ese directorio ya lo ejecutaremos luego.
para el vnc4server necesitamos crear un archivo de ejecucion inicial (ejecuta un gestor de ventanas y esas cosas)
el archivos es ~/.vnc/xstartup, el mio tiene esto (pero es muy facil de hacerlo al gusto de cada uno)

#!/bin/sh

# Uncomment the following two lines for normal desktop:
 unset SESSION_MANAGER
 exec /etc/X11/xinit/xinitrc

 [ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
 [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
 xsetroot -solid grey
 vncconfig -iconic &
 xterm -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" &
 startx &

Este archivo lo hacemos ejecutable :
vic@whitewidow:.vnc$ chmod 755 ~/.vnc/xstartup,
y tambien /etc/X11/xinit/xinitrc
whitewidow:/home/vic/pyvnc2swf-0.8.2# chmod 755 /etc/X11/xinit/xinitrc

Al grano

Lo primero es ejecutar el vnc4server y proporcionarle una contraseña para conectarnos a el :

vic@whitewidow:pyvnc2swf-0.8.2$ vnc4server -geometry 800x600 :4

New 'whitewidow:4 (vic)' desktop is whitewidow:4

Starting applications specified in /home/vic/.vnc/xstartup
Log file is /home/vic/.vnc/whitewidow:4.log


Ejecutamos el servidor a 800x600 en la pantalla virtual numero 4
si es la primera vez nos pregunta la password que va a tener el servidor.

Ejecutamos el visor de este escritorio:

vic@whitewidow:pyvnc2swf-0.8.2$ vncviewer whitewidow:4
VNC viewer version 3.3.7 - built Apr 27 2006 07:09:29
Copyright (C) 2002-2003 RealVNC Ltd.
Copyright (C) 1994-2000 AT&T Laboratories Cambridge.
See http://www.realvnc.com for information on VNC.
VNC server supports protocol version 3.8 (viewer 3.3)
Password:


En otra consola o poniendo en segundo plano la ejecucion de esta misma, ejecutaremos OTRO visor del vncserver en el que vamos a grabar lo que vayamos haciendo en la ventana recien surgida:
Pulsamos ctrl-z (pausamos la ejecucion del vncviewer):

[1]+  Stopped                 vncviewer whitewidow:4
vic@whitewidow:pyvnc2swf-0.8.2$ bg
[1]+ vncviewer whitewidow:4 &
vic@whitewidow:pyvnc2swf-0.8.2$


Ahora ejecutamos el vnc2swf que se conecta al servidor y solo mira (graba) todo lo que hagamos:

vic@whitewidow:pyvnc2swf-0.8.2$ ./vnc2swf.py -n -o salida.swf whitewidow:4
Using pygame 1.7.1release
open /dev/sequencer: No such device
Connected: whitewidow:5904, protocol_version=3.8, preferred_encoding=(0, -232, -239)
Password for whitewidow:5904:
VNC Screen: size=800x600, name='whitewidow:4 (vic)'
Output movie size: 800x600
Creating movie: 'salida.swf': version=5, size=800x600, framerate=12.0, compression=None

Con esto todo lo que hagamos en la ventana del vncviewer de la sesion 4 estará grabado en un archivo llamado salida.swf y lo podremos ver poniendo en el navegador la pagina slida.html.

Links


Pues al final es bien facil hacer screencasts desde linux ;)



by coffman - 15:36:57 |

[Jul 06, 2006]

Interesantisimos son los ultimos documentos que estoy leyendo sobre AOP, una metodologia de trabajo que nos ayuda en un monton de tareas de las que ahora nos ocupabamos usando ñapas o malos hábitos de programación.

Problema

El problema es que la programacion orientada a objetos no escala con facilidad en cuanto se aumentan funcionalidades trasversales o requerimientos al desarrollo del programa. Me refiero a funcionalidades trasversales a funcionalidades que no son intrinsicas al modelo de nuestro desarrollo y que pueden ser externalizadas y aplicadas a multiples desarrollos, como por ejemplo Logging, la seguridad, la persistencia, ... Una clase desarrollada por nosotros a priori no tiene porqué saber como implementar la seguridad, como persistirse a si misma o como logear sus propias acciones.

Solución

La solucion viene de la mano de AOP. Nos permite establecer "puntos de ruptura" en los cuales "salta" la ejecucion de otras clases, realizan tareas y devuelven el control al punto de ruptura. Mediante la definicion en un archivo xml del punto de ruptura (que puede ser un patron en el nombre del metodo por ejemplo), le indicamos a nuestro "cargador de clases" ( tomcat, spring, ...) que ejecute otra clase y luego devuelva el control, todo ello sin necesidad de modificar la clase original por supuesto.

Implementaciones de AOP

Algunas implementaciones de AOP son AspectJ, Aspectwerkz, Jboss AOP, Spring AOP, ... . Aunque probablemente el mas potente (y el que yo uso) sea Spring AOP, quizás no sea el mas adecuado para aprender el funcionamiento de la Programacion Orientada a Aspectos. Yo creo que el mas adecuado para aprender es Aspectwerkz debido a la sencillez de su sintaxis y a que se centra exclusivamente en la AOP.

Conceptos Clave

Cross-cutting concerns:
Un problema cruzado es aquella funcionalidad que es trasversal a nuestra clase, de modo que se pueda implementar a varias clases o incluso programas, por ejemplo Logging
Advice:
Del inglés consejo, es el codigo adicional que queremos añadir a nuestro modelo, que puede ser codigo especifico de log, de persistencia, ...
Point-cut :
El punto de corte, es el punto determinado en la ejecucion de nuestro programa donde queremos aplicar el consejo o codigo adicional.

Articulos y Links Relacionados

http://www.programacion.com/java/articulo/jap_aop/
http://en.wikipedia.org/wiki/Aspect-oriented_programming
http://www.onjava.com/pub/a/onjava/2004/07/14/springaop.html



by coffman - 14:53:24 |



CoffMan Site


Since July 2002
Victor Fariña Infante (aka CoffMan) creator of wIckle.com