miércoles, 29 de octubre de 2014

[C#] Poner color de fondo e imagen a un MidiContainer

Con comodidad o estética muchas veces utilizamos formularios como contenedores de ventana, en este caso tenemos un MidiContainer que es un componentes WindowsForm que cuando lo pones como MidiContainer te genera un color predeterminado (Casi siempre de color gris), esto puede cambiar.


Una vez que tenemos no podemos hacer mucho por medio de la parte visual pero por medio del código si es posible, lo que vamos a hacer es crear un método Load (el constructor no nos sirve) y poner el siguiente código.


private void Load(object sender, EventArgs e)
        {
            MdiClient ctlMDI;
            foreach (Control ctl in this.Controls)
            {
                try
                {
                    ctlMDI = (MdiClient)ctl;                    
                    ctlMDI.BackColor = Color.White; //ponemos color blanco
                } catch (InvalidCastException exc) {}
            }
            //pongo imagen que importe al proyecto llamada fondo
            this.BackgroundImage = Sidest.Properties.Resources.fondo;
            // la pongo al centro de la ventana. 
            this.BackgroundImageLayout = ImageLayout.Center;
            
        }


Con esto mi formulario quedará con el fondo blanco, además de una imagen centrada como fondo. 

martes, 28 de octubre de 2014

[Java] Hello World con RMI


RMI concepto

Es un tipo de tecnología que implementa la posibilidad de invocar metodos de un objeto que se corre en una maquina virtual desde otro objeto corriendo en una maquina virtual separada

A grandes rasgos la invocación en un procedimiento de RMI consiste en compartir una misma “interface” donde no se tiene un metodo implementado.

Aunque se ve como llamar o invocar a un metodo normal, se procesa y se ejecuta de manera remota.



Este sería el concepto




Primero se creara la interfaz que se compartira. 


import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ObjetoRemoto extends Remote {
        public String getSaludo(String nombre)
                throws RemoteException;
}


Se implementa la interfaz 

   
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;


public class ObjetoRemotoImple extends UnicastRemoteObject
implements ObjetoRemoto {

    public ObjetoRemotoImple() throws RemoteException {
        super(); 
    }

 
    @Override
    public String getSaludo(String nombre) throws RemoteException {
            String nombreMayus = nombre.toUpperCase(); 
            return "HOLA SOY RMI Y ME LLAMO " + nombreMayus;
    }
    
}


Y crearemos una clase principal que generara la instancia del objeto que se consumira. 

import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;

public class ServerRMI {
    
    public static void main(String[] args) throws Exception{
        System.out.println("Abriendo servidor");
        ObjetoRemotoImple objR = new ObjetoRemotoImple(); 
        Registry registry = LocateRegistry.getRegistry(5001);
        registry.rebind("OBJRemoto", objR);
        System.out.println("Servidor activo");
    }
    
}

Proceso de compilación 
  1. Primero Compilaremos todas las clases utilizando el siguiente comando:
    javac ServerRMI
  2. Luego crearemos el stub para el cliente
    rmic ObjectoRemotoImple
    Esto nos generara un archivo _stub que tendra que copiarse al path del cliente
  3. Levantamos el registro
    rmiregistry 5001 
    5001 porque es el puerto que utiliza la aplicación
Con esto ya es posible consumir los servicios y los hacemos con un cliente como el siguiente 

La Interfaz 


import java.rmi.Remote;
import java.rmi.RemoteException;

public interface ObjetoRemoto extends Remote {
        public String getSaludo(String nombre)
                throws RemoteException;
}

Cliente 
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;


public class ClienteRMI {
    public static void main(String[] args) throws Exception {
        Registry reg = LocateRegistry.
                getRegistry("127.0.0.1",5001);
        ObjetoRemoto remoto ; 
        remoto = (ObjetoRemoto)reg.lookup("OBJRemoto"); 
        String cadena = remoto.getSaludo("Luis"); 
        System.out.println("El nombre es " + cadena);
    }
}

Con esto ya sera posible hacer el hola mundo desde RMI 


Descargar codigo de github

https://github.com/cobymotion/RMIHelloWorld/