viernes, 20 de noviembre de 2009

Como poner agregar un Objeto a Java RMI

Para poder cargar un objeto en Java RMI primero necesitamos crear una interfaz remota, esta interfaz extenderia la interfaz Remote o Activable de RMI, luego creamos una clase que implemente esa interfaz y extienda UnicastRemoteObject, con eso realizado, creamos una clase con el metodo main y ahi obtenemos el Context de ejecucion, creamos el objeto y usando el metodo bind, ponemos un nombre para el objeto y pasamos el objeto como parametro, ahora necesitamos poner a funcionar el RMIRegistry, en GNU/Linux abrimos una consola y escribimos rmiregistry y con eso empieza a funcionar el registro, esto nos dicen en todos lados, pero necesitamos agregar el classpath nuestras clases, sobre todo la interfaz remota, una opcion es ponerlo directamente en el la carpeta lib de del jre, otra es añadirlo en los parametros al invocar rmiregistry, una tercer forma es ir con la consola hasta la carpeta raiz donde se encuentran nuestras clases compiladas, y ahi iniciar la ejecución de rmiregistry.

Con el servidor corriendo, creamos una clase cliente que acceda la objeto remoto, esto se hace obteniendo el Context, invocamos el metodo lookup y de parametro le damos rmi://servidor/objeto donde objeto es el nombre que le dimos al objeto al cargarlo en rmiregistry. Y listo, ahora es como si el objeto estuviera ejecutandose en nuestra maquina local. Luego pondre el codigo fuente de un pequeño ejemplo para que puedan probarlo. Hay muchas guias sobre esto, pero muchas omiten la parte del classpath.

jueves, 5 de noviembre de 2009

Ejecutar una maquina virtual de VirtualBox desde consola

Para ejecutar una máquina de VirtualBox desde una terminal el comando es el siguiente:

VBoxManage startvm "tumaquinavirtual"

Obviamente tu maquina virtual es el nombre que le pusiste a la maquina virtual en VirtualBox. También es necesario que ya este creada e instalada la maquina virtual. Podemos probar por terminal o consola, nos abrira la maquina virtual. Al cerrar la maquina virtual, podemos elegir si queremos que nos guarde el estado, obviamente esto es si le dimos cerrar a la ventana de la maquina virtual.

Esto nos permite agregarla al inicio de nuestra sesión en Ubuntu, para esto necesitamos ir Sistema->Preferencias->Aplicaciones al inicio. Ahí en la pestaña Programas de inicio, le damos añadir, en Nombre ponemos un nombre para esta aplicación, en Orden VBoxManage startvm "tumaquinavirtual" y en comentario alguna descripción.

Ahora cada vez que iniciemos sesión nos cargará la maquina virtual. Si queremos que ya no lo haga podemos desactivarla en Aplicaciones al inicio, para posteriormente volver a poder cargarla al inicio simplemente volviendo a activarla o darle eliminar para no tenerla en definitiva al inicio, a menos que volvamos a añadirla a la lista manualmente.

domingo, 1 de noviembre de 2009

Agregar diccionario de la Real Academia Española a Ubuntu

En Pc-World publicaron como agregar un diccionario a Ubuntu, para cualquier programa, pero ahi viene en inglés, aqui les dejo como ponerlo en español ;D

1.- Instalar googlizer, Sistemas->Administración->Synaptic y le damos en la búsqueda(ojo no usen la búsqueda rápida) googlizer, lo seleccionamos e instalamos. Por consola es más rápido, sudo apt-get install googlizer.

2.- En el menu Aplicaciones->Internet->Googlizer lo arrastramos y colocamos en el panel superior de Gnome.

3.- Al lanzador de Googlizer que colocamos en el panel le damos click con el boton derecho del mouse, elegimos propiedades.













4.- En las propiedades seleccionamos comando y pegamos esto:
googlizer --url http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=


5.- Listo ahora elegimos cualquier palabra en español y le damos click al boton de googlizer, la G y nos abrira el diccionario de la RAE con esa palabra.

Aquí seleccione diccionario y le di en Googlizer.

Aquí podemos observar el resultado de la consulta.
















Para utilizar en cualquier otro buscador, solo necesitamos crear nuevos lanzadores, donde el comando seria:

googlizer --url http://direccion

Obviamente, el servicio de busqueda debe soportar que en la url se añada el criterio de busqueda, en la rae la dirección es

http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=

Entonces se añade diccionario al final y se envia buscar, esto es lo que hace googlizer por nosotros, si buscamos la palabra diccionario, queda la direccion

http://buscon.rae.es/draeI/SrvltConsulta?TIPO_BUS=3&LEMA=diccionario

Esto mismo deberia funcionar en cualquier distribución de GNU/Linux que tenga instalado Googlizer, bastante sencilla la cosa.

sábado, 17 de octubre de 2009

Doce puntos a considerar cuando utilizas Ubuntu

Estoy teniendo un problema en Ubuntu, el sistema se me esta congelando durante la ejecución, estoy utilizando Ubuntu 9.04. La situación empezó por que mi computadora de la casa es vieja, una Dell Optiplex 160L con 2 Gb en ram, Pentium 4, dos discos duros, uno de 40 Gb y otro de 160Gb, la tarjeta de video es Intel 845G, esta tarjeta es el origen de mis problemas. Todo funcionaba bien en 8.04, pero decidi moverme a 9.04 por que quería opciones nuevas y aplicaciones más actuales através de los repositorios. El asunto es que dicha tarjeta de video, así como muchas tarjetas de video Intel, empezaron a sufrir problemas en 8.10 no por problemas de Ubuntu, sino de Intel que decidio hacer cambios drásticos en los drivers de video. Hay que admitirlo, la tarjeta es vieja, mi computadora es vieja. La tarjeta ha sido puesta en la lista negra del Compiz-Fusion, dado que ocasionaba problemas el soportarla. Total, que parecian las cosas ir bien pero queria una mejor aceleración de video. así que lo primero que pense fue en buscar por la red. La solución usar los repositorios de Launchpad para los drivers de video, los cuales son repositorios de desarrollo. Instale los drivers nuevos, parecia ir un poco mejor, pero en una actualización reciente empezo el problema del congelamiento, terminando hace unas horas con una resolución a 600 x 480, sin poder cambiar, luego de haber instalado una actualización del video. No se pudo corregir ni usando xfix en el menu de recuperación al arranque. Pense que el congelamiento se debia al sobrecalentamiento de la computadora, la abri y probe, el abánico funciona perfectamente. Total que dije, deben ser los repositorios, dado que incluso podia generar un problema con los drivers y el kernel. Así que arranque desde el LiveCD llevo dos horas trabajando con el Live CD siendo que el problema era de unos minutos para que se congelará la pantalla. Así que consideré prudente dar unos cuantos consejos para evitar esto:

1. No usar repositorios externos a Ubuntu sino conoces para que son.
2. Evitar absolutamente los repositorios de desarrollo para drivers y el kernel si no eres desarrollador del kernel, drivers o tester de la distribución.
3. Usar solo repositorios de confianza, no colocarlos en la lista de repositorios tan solo por que los postearon en una pagina.
4. No bajar .deb de aplicaciones de páginas desconocidas o que no son de confianza, dado que no puedes saber que pueden contener en realidad.
5. Si existe una versión más estable que las nuevas, como una LTS, no cambies a una nueva sino es por que en realidad necesitas hacer el cambio.
6. Existen otras formas de instalación a parte de los repositorios.
7. Informate bien antes de hacer cambios, que por obtener un poco más de rendimiento te puedes meter en problemas de reinstalaciones.
8. Si aun asi decides arriesgarte, recuerda guardar las instrucciones para poder volver a un estado anterior, como por ejemplo, en una memoria USB.
9. Recuerda siempre hacer respaldos.
10. No te pongas a hacer experimentos cuando no estas de vacaciones. El trabajo es el trabajo y no puede esperar a corrijas los errores por andar experimentando.
11. Ubuntu viene con las cosas configuradas de forma de hacerlas funcionar bien, si no te funcionan y pruebas lo normal, lo minimo, nada raro como andar metiendo repositorios de desarrollo y aun asi no te funciona, es que probablemente no funcione, no hagas cambios a lo loco, hay mejores distribuciones para eso como Debian o Gentoo.
12. Una cosa son los repositorios de aplicaciones y otra muy diferente los que tienen que ver con los drivers y el kernel.

Ahora tendre que instalar 8.04 o volver a instalar 9.04 que aun no tengo los conocimientos necesarios para devolver la distribución a como estaba, que de hecho, movi demasiadas cosas como para poder hacer que quede bien fácilmente.

viernes, 25 de septiembre de 2009

Usar Apache Mina para comunicar Java y Python

He estado haciendo unas pruebas con Apache Mina, un framework para el desarrollo de aplicaciones en red en Java, necesitaba desarrollar un pequeño programa que funcione como servidor para obtener de el direcciones de red a las cuales se tienen que conectar diferentes maquinas, entonces, usando Apache Mina existe un Filtro que se encarga de decodificar y codificar los mensajes recibidos en formato de texto. Dicho filtro se puede obtener de TextLineCodecFactory, se tiene que indicar el Charset que se usa, en Linux se usa utf-8, por lo cual lo indicamos al crear el TextLineCodecFactory. Empece mis pruebas, el cliente para este servidor sera en otra plataforma diferente a Java. Decidi probar con Python y tenia un problema, el servidor recibia los mensajes pero no los pasaba al metodo messageReceived en donde los procesaria, simplemente invitiendo la cadena que me enviaran, como dije, este es solo un ejemplo. El asunto es que para que funcione el TextLineCodecFactory las cadenas que se envien deben terminar en salto de linea \n para que se tome que llego un mensaje nuevo, una vez agregado esto a los mensajes, todo funciono correctamente.

*** Este es el codigo del servidor modificado del ejemplo de Apache Mina: ***


import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandler;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;

/**
* {@link IoHandler} implementation of reverser server protocol.
*
* @author The Apache Directory Project (mina-dev@directory.apache.org)
* @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (Fri, 13 Jul 2007) $,
*/
public class ReverseProtocolHandler extends IoHandlerAdapter {
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
cause.printStackTrace();
// Close connection when unexpected exception is caught.
session.close();
}

@Override
public void messageReceived(IoSession session, Object message) throws Exception {
System.out.println("Mensaje recibido:" + message);
// Invertir la cadena
String str = message.toString();
StringBuffer buf = new StringBuffer(str.length());
for (int i = str.length() - 1; i >= 0; i--) {
buf.append(str.charAt(i));
}

String s = "Invertido: " + buf.toString();
//Enviar la cadena
session.write(s);
}

@Override
public void sessionCreated(IoSession session) throws Exception {
super.sessionCreated(session);
session.write("hola mundo");
}

@Override
public void sessionOpened(IoSession session) throws Exception {
super.sessionOpened(session);
session.write("hey mundo");
}
}


*** El codigo de la clase que pone en funcionamiento el servidor: ***



import java.net.InetSocketAddress;
import java.nio.charset.Charset;
import org.apache.mina.common.IoAcceptor;
import org.apache.mina.filter.LoggingFilter;
import org.apache.mina.filter.codec.ProtocolCodecFilter;
import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
import org.apache.mina.transport.socket.nio.SocketAcceptor;
import org.apache.mina.transport.socket.nio.SocketAcceptorConfig;

/**
* (Entry point) Reverser server which reverses all text lines from
* clients.
*
* @author The Apache Directory Project (mina-dev@directory.apache.org)
* @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (Fri, 13 Jul 2007) $,
*/
public class Main {
private static final int PORT = 8080;

public static void main(String[] args) throws Exception {
IoAcceptor acceptor = new SocketAcceptor();

// Prepare the configuration
SocketAcceptorConfig cfg = new SocketAcceptorConfig();
//Aqui indicamos que el Charset es UTF-8
TextLineCodecFactory textLineCodecFactory = new TextLineCodecFactory(Charset.forName("UTF-8"));
cfg.setReuseAddress(true);
cfg.getFilterChain().addLast("logger", new LoggingFilter());
cfg.getFilterChain().addLast(
"codec",
new ProtocolCodecFilter(textLineCodecFactory));
// Bind
acceptor.bind(new InetSocketAddress(PORT),
new ReverseProtocolHandler(), cfg);


System.out.println("Listening on port " + PORT);
}
}


*** El codigo del cliente en python es este: ***


import socket
import time

if __name__ == '__main__':
# Se establece la conexion
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(("localhost", 8080))

# Se recibe la respuesta y se escribe en pantalla
datos = s.recv(5000)
print datos

# Se espera respuesta, se escribe en pantalla y se cierra la
# conexion

# Se envia "hola"
mensaje = "hola\n"
s.send(unicode(mensaje, "utf-8" ))
datos = s.recv(5000)
#time.sleep(1)
print datos
mensaje = "probando\n"
#time.sleep(1)
s.send(unicode(mensaje, "utf-8" ))
datos = s.recv(5000)
print datos
# Se envia "adios"
s.send("adios\n")
#time.sleep(1)
s.close()

viernes, 18 de septiembre de 2009

Menus transparentes y Nautilus transparente


En mi anterior post, Ventanas transparentes en compuz-fusion, explique como poner las ventanas tranparentes, ahora basado en lo que explico ahi y en como activar el blur en compiz, les dire como poner menus transparentes con desenfoque. Añadiremos una nueva entrada en las transparencias con los siguientes valores:

Window: Menu | PopupMenu | DropdownMenu
Window values: 90

Podemos poner un valor mas bajo de opacidad, pero solo si tenemos el efecto blur, recuerden que ese efecto depende de la tarjeta de video, asi que si tu tarjeta no es nvidia o ati es mejor no activar el blur.

Si tenemos el blur activado, podremos ver que nuestros menus son transparentes y tienen un desenfoque en el fondo.

Para poner las ventanas de nautilus transparentes:
Window: name=nautilus
Window values: 80

Aqui pongo una imagen del nautilus, lamentablemente no pude tomar una de los menus transparentes, el sistema no me deja tomar la captura.

domingo, 14 de junio de 2009

Obtener un mejor driver de video Intel en Ubuntu 9.04

Esta guía debería desaconsejarla, ya que utiliza un repositorio Launchpad de desarrollo para el kernel, y como ya comente en los Doce puntos a considerar si utilizas Ubuntu, al hacer esto un tiempo despues tuve problemas.

Me he encontrado con una guia para usar los drivers de video más actuales de Intel en Ubuntu 9.04, he leido en diversas partes son la base a utilizar para Ubuntu 9.10.

Viene con varias opciones, utlizar unicamente los drivers nuevos, utilizarlos junto con el nuevo kernel de Linux 2.6.30 y utilizar ese kernel junto con drivers en desarrollo.

Denominan a estas configuraciones segura(safe), optima(optimal) y bleeding edge (no se cual seria la traducción o tal vez bajo tu propio riesgo?).

Esto permite utilizar la nueva tecnica de aceleracion que esta implementando Intel, UXA.

He instalado la optima, el unico problema es si tienes que usar drivers propietarios para algun dispositivo, ya no los puedes usar, ademas, no me gusta usar kernels distintos al oficial, lo probe y funcionaba mejor la aceleracion(no igual que antes con el driver i810) en mi tarjeta 845G de intel, pero probando el Warcraft III por medio de Virtualbox, teniendo activada la aceleracion en la maquina virtual, no se veia nada.

Total que mejor regrese al kernel normal, la configuracion segura. Le paso lo mismo al Warcraft III con el Virtualbox. Pero instale el wine y si corrio el Warcraft III XD en Ubuntu 8.04 no corria con wine XD

El link de la guia es este, en ingles:

UbuntuForums

Saludos y suerte a quienes prueben esto.

Como activar el blur en compiz

En este momento no puedo agregar imagenes, pero el proceso para utilizar el blur(desenfoque) en compiz es el siguiente en el administrador de compiz-fusion:

a) activar windows-blur
b) en la ventana del windows-blur se debe especificar a cuales ventanas se agrega el windows-blur, si se deja any, se le aplicara a cualquier ventana que tengas partes transparentes.

OJO: El efecto de windows blur depende de la tarjeta de video y debe ser una ati o nvidia, por que he probado con las intel... y no funciona o jala muy lento, pero incluso en las otras consume muchos recursos asi que es cuestion de cada quien ponerlo o no. Queda bien con menus transparentes.

Con esto añado el post que habia prometido hace 2 meses jajaja que lentitud :P

miércoles, 22 de abril de 2009

Oracle compra a SUN

Finalmente fue Oracle, y no IBM, quien compró a SUN por $7,400 millones de dolares(que me den un millón aunque sea XD). Bueno, lo que me preocupa es que va a suceder con el software libre que liberó SUN, en el último de los casos creo que van a salir varios forks a raiz de esta compra.

Por lo que dicen en las noticias y blogs, el principal interes de Oracle en comprar SUN es JAVA, seguido de Solaris.

Poco puedo decir de esto, que me nubla el animo :P

Este es el enlace:
http://www.nytimes.com/2009/04/21/technology/companies/21sun.html?_r=1&ref=technology

jueves, 16 de abril de 2009

Libro sobre el Shell de Linux

Esta bastante entretenido, y muy comico por cierto XD

http://apoie.org/JulioNeves/IndexEspanhol.htm

martes, 14 de abril de 2009

Ventanas transparentes en Compiz-Fusion

Hola a todos los Hijos de Cronos, en compiz-fusion para tener ventanas transparentes, hacemos lo siguiente, primero necesitamos el Administrador de Configuracion de Compiz-Fusion, en Ubuntu se instala asi:

sudo apt-get install compizconfig-settings-manager

Para usarlo vamos a sistema -> preferencias -> administrador de opciones de compiz-fusion o algo similar en el nombre.

Entramos, vamos a General Options (Imagen 1) y elegimos la pestaña Opacity Settings(Imagen 2). En Ubuntu 8.04, Opacity Settins se encuentra en donde indico, en 8.10 se encuentra en Brightness, Contrast and Transparency.











Imagen 1











Imagen 2



En window opacity, presionamos nuevo (indicado por la flecha en la segunda imagen) y aparecera un cuadro de dialogo (imagen 3).





Imagen 3


En el cuadro de dialogo hay un cuadro de texto que tiene una etiqueta que dice Opacity Windows, estas son las ventanas a las cuales vamos a aplicar la transparencia, podemos poner el tipo de ventanas de gnome o elegir el presionar el boton con el signo de mas y elegir opciones, como el titulo de la ventana, el rol de la ventana, la clase de ventana, etc. podemos tener varias de estas configuraciones para diferentes ventanas. Abajo aparece Opacity Window Value, con la barra eligiremos el nivel de opacidad, 0 es completamente transparente y 100 es completamente opaca. Ahora unos ejemplos, en opacity window es que escribes y en opacity window values que valor introduces:

Opacity window: dock
Opacity window values: 60

Esto hace transparentes las barras de tareas superior e inferior del gnome. Algunos pensaran que se pueden hacer transparentes por default, pero con esto son verdaderamente transparentes, mueve una ventana debajo de ellas y veras que si aparecen abajo de las barras.

Opacity window: tooltip
Opacity window values: 70

Son los cuadritos de informacion que aparecen sobre botones y otras cosas cuando dejas el mouse sobre ellos.

Opacity window: title=emesene
Opacity window values: 70

Esto hace transparente la ventana del programa emesene.

Opacity window: title=Songbird
Opacity window values: 70

Esto hace transparente la ventana del programa Songbird.

Opacity window: rol=chat
Opacity window values: 70

Hace transparentes las ventanas de chat, no importa el programa.

Es importante nunca cerrar el cuadro de dialogo dejando los valores 0, pues si se trata del dock, no se verian las barras de tareas, o si es un menu, tampoco.

Aqui les dejo un ejemplo con Songbird y las barras de tareas:
















Posteriormente voy a explicar como añadir el efecto de blur o desenfoque, hasta luego.