viernes, 22 de julio de 2016

Acordeon de GIT

Un comic con los comandos mas usuales del GIT explicados :)

Los comandos mas usuales del GIT

Espero que esta entrada les sea de utilidad :)

domingo, 29 de mayo de 2016

Instalar SimpleNote en Fedora Linux

Figura 1 - Aplicación Simplenote Oficial para Linux

Si desea poder tomar notas en texto simple y poder accederlas desde cualquier lugar Simplenote es una opcioón mas que recomendable ya que la aplicación es muy sencilla de usar y, mejor aun, ya tiene un cliente oficial para sistemas GNU/Linux.

Si tiene un sistema basado en Debian no hay demasiada ciencia, solo baja el archivo .deb e instala como es usual, pero si su distribucion no usa paquetes .deb neceita bajar un archivo .tar.gz que no parece contener instruciones para instalar en el sistema y hacer visible desde gnome-shell, no se preocupe aqui estan las instruciones de como hacerlo.

Descargando Simplenote.

Vaya a https://simplenote.com/ y descargue el archivo .tar.gz del enlace "Download for Linux tar.gz", como puede ver en la figura 2

Figura 2 - Descarga de Simplenote

Extraiga el contenido de ese paquete y abra un terminal.

Instalando Simplenote.

En el terminal cambie al usuario root y copie la carpeta que extrajo del .tar.gz, Simplenote-linux-x64, a la ubicación /usr/local/

Vaya a /usr/local/Simplenote-linux-x64/ y desde ahi ejecute el siguiente comando:

ln -s /usr/local/Simplenote-linux-x64/Simplenote /usr/local/bin/Simplenote

Lo que este comando hace es crear un enlace al ejecutable en la carpeta /usr/loca/bin con lo cual si ejecuta el comando Simplenote la aplicación se ejecutara sin importar el usuario.

En este punto la aplicación ya esta instalada en el sistema y disponible para todos los usuarios, pero aun no aparece en gnome-shell, esto lo cambiaremos en un momento.

Haciendo Simplenote visible desde gnome-shell

Desde la terminal como usuario root vaya a la carpeta /usr/share/applications/ y en esta usando su editor de texto favorito cree un archivo simplenote.desktop con el siguiente contenido:

[Desktop Entry]
Name=Simplenote
Comment=The Simplest way to keep notes
GenericName=Simplenote
Exec=/usr/local/Simplenote-linux-x64/Simplenote
Icon=/usr/local/Simplenote-linux-x64/Simplenote.png
StartupNotify=false
Terminal=false
Type=Application
Categories=Network;
MimeType=x-scheme-handler/simplenote;

Guarde el archivo y reinicie gnome-shell, esto lo puede hacer presionando Alt+F2, escribiendo r en el dialogo que aparece y presionando Enter.

Tras esto revise las aplicaciones en gnome-shell y deberia ver algo similar a la figura 3.

Figura 3 - Aplicación Simplenote en gnome-shell
Ya puede llamar la aplicación Simplenote desde gnome-shell, aparecera con su icono correcto en la barra de tareas y tambien puede agregarla a sus favoritos.

Espero que la entrada fuera de utilidad y nos vemos en la próxima.

jueves, 26 de mayo de 2016

Instalando Pharo Smalltak en Fedora Linux de 64 bits

Instalando Pharo Smalltalk en Fedora Linux de 64 bits

Transcript:
Instalando Pharo Smalltak en Fedora Linux de 64 bits
Panel 1
Instalar Pharo smalltalk en linux de 64 bits es mas complicado de lo que debería
Pero no imposible, junte valor y pongámoslo en marcha
Panel 2
¿El problema?, el binario de 64 bits de la maquina virtual Pharo aun no esta disponible, por lo que necesitamos as librerias de 32 bits
por suerte esto es sencillo de arreglar
Panel 3
sudo dnf install -y mesa-libGL-devel.i686 mesa-libGLU-devel.i686 libgcc.i686 freetype.i686
Basta un solo comando
Panel 5
OK, hora de hechar a andar Pharo
Panel 7
Exito!
Panel 8
Referencias:
Pharo 64bit dependencies on Fedora

lunes, 7 de octubre de 2013

Enviado correos electronicos con JavaMail

Figura 1 - mail.jar
Figura 1 - mail.jar
Una de las funcionalidades deseables de algún sistema de manejo de datos seria el enviar automáticamente correos electrónicos al momento de que ocurra algún evento en particular, por fortuna si su sistema esta realizado en Java, agregar esta funcionalidad es bastante sencillo, gracias a la librería JavaMail.Para comenzar con su uso lo primero que necesitara es descargar dicha libreria desde la pagina http://www.oracle.com/technetwork/java/index-138643.html necesitara aceptar una licencia de terminos de uso para poder llevar a cabo la descarga, una vez que lo haga extraiga el archivo mail.jar del .zip que descargo


Ahora necesita crear un nuevo proyecto en Eclipse y agregar dicha libreria (mail.jar) al proyecto, instrucciones detalladas en como realizar esta acción pueden encontrarse en una entrada anterior de este blog, basta con que remplaze itext.jar con mail.jar http://hashblogeando.wordpress.com/2013/07/14/itext-generacion-de-archivo-pdf-en-java/ el proyecto resultante lucira similar a la figura 2

Figura 2 - Proyecto con mail.jar
Figura 2 - Proyecto con mail.jar

Notara que en la figura el proyecto contiene dos archivos en el paquete mx.com.develHash.correo, los cuales son el código de nuestro programa y el archivo de propiedades, este ultimo es un archivo de texto plano con este contenido:

mail.smtp.host=smtp.gmail.com
mail.smtp.socketFactory.port=465
mail.smtp.starttls.enable=true
mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory
mail.smtp.port=465
mail.smtp.auth=true

Copie estos datos en un archivo gmail.properties y coloque dicho archivo en el mismo directorio donde esta el código de nuestro programa como muestra la figura 3

Figura 3 - Ubicación de archivo .properties
Figura 3 - Ubicación de archivo .properties


La ubicación del archivo es muy importante, ya que el archivo gmail.properties contiene los datos para conectarse con el servidor de gmail y enviar un correo usando SSL

Ahora si, cree una nueva clase Java con el nombre CorreoSender.Java y copie el siguiente código:

package mx.com.develHash.correo;

import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Properties;

import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

/**
 * Crea y envia un correo electronico

 * @author david
 *
 */

public class CorreoSender {

    static public void main(String[] args) {
        
        // Nombre de usuario y contraseña del correo respectivamente
        final String usuario = "<Su correo en gMail>";
        final String passwd = "<Su contraseña>";

        Properties props = new Properties();
        DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        Calendar cal = Calendar.getInstance();
        Session session;

        // Obtenemos los datos para utilizar el servidor de correo
        try {

            props.load(CorreoSender.class.getClassLoader().getResourceAsStream(
                    "mx/com/develHash/correo/gmail.properties"));

        } catch (IOException e) {
            System.err.println("********** Error al acceder a gmail.properties");
            e.printStackTrace();
        }

        // Iniciamos sesion para envio de correos
        session = Session.getInstance(props, new javax.mail.Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(usuario, passwd);
            }
        });

        // Creamos el coreo
        try {

            Message message = new MimeMessage(session);

            message.setFrom(new InternetAddress(usuario));
            message.setRecipients(Message.RecipientType.TO,
                    InternetAddress.parse("<Destinatario>"));

            message.setSubject("Correo de prueba");

            message.setText("Mensaje de prueba generado en la fecha "
                    + dateFormat.format(cal.getTime() ) );

            // Enviamos el correo
            System.out.println("Enviando correo...");

            Transport.send(message);

            System.out.println("Correo enviado");

        } catch (MessagingException e) {
            throw new RuntimeException(e);
        }
    }
}

Las lineas en rojo se detallaran a continuación:

final String usuario = "<Su correo en gMail>" y final String passwd = "<Su contraseña>": Estas dos cadenas de texto simplemente contienen el nombre de usuario y la contraseña de su correo, en este caso particular el usuario y contraseña de su cuenta en gmail, cabe mencionar que el usuario debe estar en la forma nombreUsuario@gmail.com o de lo contrario no funcionara.

props.load(CorreoSender.class.getClassLoader().getResourceAsStream( "mx/com/develHash/correo/gmail.properties")); Con esta linea cargamos el contenido del archivo gmail.properties, que ,como ya se menciono, contiene los parametros de conexión con el servidor de gmail, noatara que en la linea indicada se hace mencion  tanto al nombre de la clase, CorreoSender, como a la ruta interna del paquete, mx/com/develHash/correo/gmail.properties,  esto es vital para que nuestro programa funcione, por lo que si modifico alguno de esos datos el cambio debe de reflejarse aquí también.

 session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(usuario, passwd); } Iniciamos una sesión con el servidor de correo y nos identificamos con este por medio del usuario y contraseña que declaramos anteriormente.

 message.setFrom(new InternetAddress(usuario)); Indicamos quien es el remitente del correo

message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(<Destinatario>)); Indicamos a quien deseamos enviar el correo.

message.setSubject("Correo de prueba"); Establecemos cual es el asunto del mensaje.

message.setText("Mensaje de prueba generado en la fecha " + dateFormat.format(cal.getTime() ) ); indicamos el texto del mensaje, en este caso en particular se agrega la fecha y hora de envio.

Transport.send(message); Enviamos el mensaje.

Una vez que ejecute el programa, si todo salio bien, obtendrá una salida en consola similar a la figura 4, debo mencionar que el envio no es instantáneo de que aparezca el mensaje "Enviando Correo..." a que se muestre "Correo Enviado" tomara un par de segundos.

Figura 4 - Salida del programa
Figura 4 - Salida del programa

Puede comprobar que el correo se halla enviado adecuadamente con abrir la cuenta de destino que halla seleccionado, lo que debería mostrarle un mensaje similar a la figura 5

Figura 5 - Resultado
Figura 5 - Resultado


Ya para concluir debo recordar que el ejemplo usa el correo con SSL, si bien esto es una medida de seguridad extra que no esta demas podría darse el caso que desee evitarla, si asi fuera le recomiendo revisar los ejemplos indicados en el area de referencias, los cuales además podrian darle ideas que tal vez se ajusten mas a lo que desea obtener. Aparte las posibilidades con javamail son bastante extensas y espero cubrir mas de estas en el futuro.

Por lo pronto espero que la entrada halla sido de ayuda y nos vemos pronto.

Referencias

http://www.chuidiang.com/java/herramientas/javamail/empezar-javamail.php

http://www.mkyong.com/java/javamail-api-sending-email-via-gmail-smtp-example/