jueves, 27 de noviembre de 2014

[Gmail] Respaldar cuenta de correo Gmail a tu PC


Mediante Outlook 


La paquetería de Office tiene un cliente de correo muy bueno como lo es Outlook, en este caso podemos configurarlo para recibir los correos de Gmail lo que provocara que una copia se quede local en nuestro equipo.

Para poder hacer el respaldo haremos lo siguiente, abrimos Outlook (si tenemos Word, Excel y demás es casi seguro que tenemos Outlook), ya lo tenemos configurado con alguna cuenta podemos agregar una más, si no pues seguiremos el asistente para agregar nuestra primera cuenta.



Ilustración 1. Si ya tenemos una cuenta, solo abrimos la opción de archivo y damos clic en agregar cuenta

Nos aparecerá un asistente que estaremos configurando poco a poco como vaya avanzando este paso a paso. Lo dejaremos pendiente y primero configuraremos nuestro correo por lo que abrimos Gmail y entramos a las configuraciones.




Para esto vamos a configurar que queremos activar el reenvio de los correos por medio de POP/IMAP. IMAP nos sirve para controlar y sincronizar los correos de forma online por lo tanto los cambios que se ven reflejados en el programa pues también se ven en la plataforma. En el caso de POP todos los correos son descargados a nuestro equipo y se mantienen ahí aunque no tengamos conexión por lo que esta opción es la indicada para hacer el backup de los correos.

Por default el correo de Gmail tiene como configuración predeterminada que POP este deshabilitado (por eso dejamos pendiente el asistente de Outlook), por lo que vamos a hacer es activarlo y ver las configuraciones que necesitaremos para que nuestro Outlook se ponga a trabajar. Ya estando en configuraciones vamos a buscar la opción de reenvió POP/IMAP y nos centraremos en la opción de POP 


Ilustración 3. Opciones para habilitar POP

 

Vamos a escoger la opción de "Habilitar POP para todo el mail", esto nos permitirá configurar nuestro cliente de correo de una forma correcta, nos dirigimos al final de la página y damos en salvar cambios., podemos volver a entrar y debe de aparecer que el estado del POP debe de estar habilitado.





Ilustración 4. Status POP is Enabled(está habilitado)
Con esto podemos empezar a configurar nuestro correo para esto regresamos a nuestro outllook y empezar a configurar nuestra cuenta. 
Lo primero en el asistente le diremos que queremos configurar de forma manual nuestra cuenta.



Ilustración 5. Opción de configuración manual

En la siguiente pantalla le diremos que queremos configurarlo como POP ó IMAP



Ilustración 6. Habilitamos POP por lo que vamos a configurar de esa manera


Para esto utilizaremos esta referencia de datos



Ilustración 7. Datos de configuración

 

En mi caso utilizaremos datos como esto

 


Ilustración 8. Datos

Una vez llenado entraremos a donde dice más configuraciones y configuraremos en la pestaña última los siguientes datos



Ilustración 9. Configuraciones adicionales

Por ultimo en la pestaña de media que dice Server de salida vamos a decirle que requiere autentificación



Ilustración 10. Configuración de servidor saliente

 
Damos clic en ok y presionamos el botón de probar configuraciones, esto debe de provocar que se haya configurado de forma correcta.



Ilustración 11. Prueba de configuración.

Una vez terminado y ver que el proceso haya completado correctamente recibiremos un correo diciendo que se configuro correctamente ahora solo damos siguiente, hará nuevamente la verificación y nos dará de alta la cuenta.

Esperaremos unos minutos a que nuestra conexión de internet nos haga el trabajo de descargar todos los correos.

En caso que no queramos esperar tanto y queramos que empiece a sincronizar de Ya, vamos a la pestaña de envio/recibido y le decimos que empiece el proceso.





Ilustración 12. Send/Receive all Folder empieza a sincronizar

Todos los correos y archivos que se descargan del correo se almacenan en un solo archivo y de forma local, por lo que si tenemos que cambiar de maquina podemos llevarlo pero esto siempre recomiendo que se haga, se pruebe y después se descarte la maquina original.

Para respaldar hay que ir a archivo en la opción de configuración de cuentas, dentro del mismo Outlook



Ilustración 13. Configuraciones de cuenta
Estando en esa opción podemos entrar a los correos que están habilitados por lo que podemos revisar unas configuraciones, en este caso solo debemos estar al pendiente de la pestaña de archivo de datos. 


Ilustración 14. Ruta donde se encuentra el archivo pst(todos los correos)
Con esta ruta podemos buscar el archivo Pst y respaldarlo en caso que nuestro equipo sufra algún problema.


 
Espero haya servido

References


Apps, G. (s.f.). Backing up your mail with POP. Obtenido de Gmail: https://support.google.com/mail/answer/34030?hl=en&authuser=1&ref_topic=3397961

domingo, 23 de noviembre de 2014

[c#] Cambiar ConnectionString almacenado en "Settings" del proyecto en tiempo de ejecución

C# tiene un conjunto de herramientas que hacen que la programación sea mas cómoda y robusta en este caso podemos trabajar directamente con una configuración predeterminada y almacenada dentro del archivo de configuracion en este caso app.config, es muy cómodo para cuando se hace la implementación no tener que cambiar los parámetros de forma local por lo que vamos a configurarlos en tiempo de ejecución.



Para esta configuración en especial se complica un poco ya que el scope de las cadenas de conexion es aplicación por lo que no pueden ser modificadas con un simple "set", por lo que primero puedes hacer lo siguiente.

Primero verificaremos que nos hizo visual  con respecto a la configuración visual que hicimos por lo que abrimos el archivo app.config  en este caso el mio tiene lo siguiente:



    
    
    
      
        
    


En este caso revisemos primero la etiqueta <clear /> es para que las conexiones heredadas no se agreguen a la configuración por ejemplo yo trabajo con mysql por lo si no pongo este parámetro tendré una configuración adicional a SQLExpress que no la necesito por lo que me deshago de ella en el ejecutable.

Segundo el parámetro que viene en la cadena de conexión de name regularmente esta formado por "nombreProyecto.properties.settings.name" puedes borrar todo y dejar name para que puedas acceder desde el código.

Pasamos a la modificación de la cadena de conexión supongamos que tenemos el método siguiente:
 public void cambiarDatosServer(string localhost, string user, string pass)
        {            
            String cadenaNueva = "server=" + localhost + ";user id=" + user + ";password=" + pass + ";persistsecurityinfo=True;database=namedb";
            //abrimos la configuración de nuestro proyecto
            Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            //hacemos la modificacion de la cadena de conexion (ServerDb es el atributo que tengo en app.config) 
            config.ConnectionStrings.ConnectionStrings["ServerDb"].ConnectionString = cadenaNueva;
            //Cambiamos el modo de guardado
            config.Save(ConfigurationSaveMode.Modified,true);
            // modificamos el guardado 
            Settings.Default.Save();   
            //Podemos revisar en la consola que configuraciones quedaron despues del comando
            //aqui en adelante es opcional        
            ConnectionStringSettingsCollection settings =
            ConfigurationManager.ConnectionStrings;
            if (settings != null)
            {
                foreach (ConnectionStringSettings cs in settings)
                {
                    Console.WriteLine(cs.Name);
                    Console.WriteLine(cs.ProviderName);
                    Console.WriteLine(cs.ConnectionString);
                }
            }
        }

Se lleva tres parámetros que son básicos el servidor (Ip ), usuario y password, los cuales forma una cadena de conexión en la variable cadenaNueva.

Posteriormente creamos un objeto del tipo Configuration que podemos usar para que pueda modificar y quitar el nivel de permiso de la aplicación para guardar y posteriormente guardarlo en las configuraciones por default de nuestra aplicación con esto tendremos una cadena de conexión que puede cambiar en tiempo de ejecución.




domingo, 16 de noviembre de 2014

[Galileo] Cambiar intesidad de un led salida pwm

Vamos a hacer un pequeño ejercicio con la tarjeta galileo la cual tiene como característica que cambie la intensidad de un led mediante una salida con PWM primero lo que debemos hacer es identificar las salidas que tenemos con esas características en galileo, solo debemos revisar que venga la salida con un tilde (~), por ejemplo la salida 9,10,11 tienen esa propiedad.







Lo que vamos a hacer es conectar la salida con el Anodo del led y el catodo conectarlo a negativo se recomienda utilizar una resistencia de un entre las conexiones y el led ya sea entre la salida de galileo-anodo ó catodo-tierra en cualquiera de ella para no dañar el led. Para que nos demos una idea podemos ver la siguiente figura de monografías: 


Con esto ya conectado recordemos que antes de hacer cualquier conexión  con galileo les recomiendo leer mi primer post ya una vez conectado abriremos nuestro entorno de programación y ponemos el siguiente codigo:

//numero de salida donde se conecto el led
  int led = 9; 
//valor inicial de la intensidad del brillo
  int brillo=0; 
//valor de cambio entre cada cambio en la intensidad
  int valorCambio=5; 

//metodo para la configuración de codigo
void setup() {
  // configuramos el gpio como salida(led)
  pinMode(led,OUTPUT);
}

//metodo que se estara ejecutando continuamente 
void loop() {
  // valor que inyectamos salida 
  analogWrite(led, brillo);
  //aumentamos la intensidad del brillo 
  brillo = brillo + valorCambio;
  //comparamos si el brillo llego a 0 o 255 cambiamos de signo
  if(brillo==0 || brillo==255) 
     valorCambio = -valorCambio;
  //retardamos 300 milisegundos
  delay(300);
}


Tendríamos algo como esto:


https://github.com/cobymotion/GalileoExamples/
Todo el contenido de los post de arduino son basados en la información que recibí en el curso de Galileo patrocinado por Intel en el Cinvestav de Guadalajara en Noviembre 2014. 
Comunidad de galileo: 

viernes, 14 de noviembre de 2014

[Galileo] Una Aventura nueva con galileo

Con la leyenda de "What will you make?" Intel tiene una propuesta mas en cuanto a tarjetas con sistemas operativos con linux y una especie de combinación con arduino. 





Es una tarjeta basada en la cultura de arduino pero con características propias que Intel a ido agregando a mi punto de vista podemos decir que esta dividida en dos partes, la parte de tener posibilidades muy similares a la de Arduino One y por otro lado el sistema que ya vienen embebido dentro de la misma tarjeta. 

Arduino esta creado con la filosofía que aprender a programar para embebidos no tiene que ser tan engorroso y difícil, por lo que galileo tiene la misma filosofía, inclusive es una tarjeta que a primera vista no es nada diferente a arduino o por lo menos así lo veía en el primer día. 

Galileo es compatible con la versión 1.0 de arduino, con el IDE y con la mayoría de los shield que se tienen para arduino por lo que es un gran potencial. 

Tiene una gran cantidad de conexión que pueden ser usadas y que conforme las vayamos aprendiendo su funcionamiento daremos una breve comentario sobre la experiencia.




La caja de Galileo viene un poco limitada (No incluye cable MiniUSB), tarjeta, conectores para energía y cable de alimentación, esto es la versión que sale para México. 

-IMPORTANTE-
No conectar el cable MiniUsb para alimentar la tarjeta por lo que puede dañarla, primero el procedimiento adecuado es que conectar la energía y posteriormente cuando el led indicador de USB encienda puedas conectar el cable MINI USB
"La tarjeta no se alimenta con el USB"

Se utiliza una IDE parecido al arduino pero con los modelos de la tarjeta Galileo que se utiliza por lo que puedes descargarlo del siguiente enlace. 


Verificar que realmente sea para galileo

Solo se descomprime y se ejecuta para poder trabajar. 

 
Imagen de comunidad Intel

Empezaremos hacer nuestro primer programa blink notaran que son de la misma manera. 

Programa que hace que un led permanezca un segundo prendido y un segundo apagado de manera cíclica

Codigo:

//led que ya viene en la misma tarjeta
int led=13; 

///Configuracin de entrada
void setup() {
  //configuracin del led para salida
  pinMode(led,OUTPUT);

}

//ciclo.  
void loop() {
  //Prende el led  
  digitalWrite(led,HIGH);
  //espera un segundo
  delay(1000); 
  //apaga su led
  digitalWrite(led,LOW);
  //espera un segundo
  delay(1000);  
}



https://github.com/cobymotion/GalileoExamples/


Todo el contenido de los post de arduino son basados en la información que recibí en el curso de Galileo patrocinado por Intel en el Cinvestav de Guadalajara en Noviembre 2014. 

Comunidad de galileo: 


miércoles, 5 de noviembre de 2014

[Mysql] Truncate Tables con llaves Foraneas

Muchas veces queremos truncar las tablas porque queremos reiniciar los contadores o los autonumericos, pero si hemos notado y manejamos llaves foraneas nos puede aparecer el siguiente error.

 

Por lo que para poder reiniciar una tabla o truncar podemos hacerlo con el siguiente codigo, suponiendo que tengo una relación de producto con otra tabla que llam inv_bodega tendríamos que crear el query de la siguiente manera. 


SET FOREIGN_KEY_CHECKS=0;
TRUNCATE cat_productos;
TRUNCATE inv_bodega; 
SET FOREIGN_KEY_CHECKS=1;

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/