jueves, 29 de octubre de 2015

Ordenar lista de Strings en Java

Aquí les dejo un ejemplo sencillo de cómo ordenar una lista de Strings en Java.

Fig. 1. Resultado del ordenamiento en Java

El ejemplo de ordenamiento lo implementé directamente sobre el método principal de una clase. Este es el código:

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package ordenarnombres;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Balam-PC
 */
public class OrdenarNombres {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        List<String> nombres = new ArrayList<String>();
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int opcion = 0;
        int numeroInserciones = 0;
        
        try {
            do{
                System.out.println("============== MENU ==============\n");
                System.out.println("1) Insertar nombres");
                System.out.println("2) Imprimir nombres");
                System.out.println("3) Ordenar nombres");
                System.out.println("4) Salir\n");
                System.out.println("Inserta la opción (1, 2, 3 ó 4): ");
                opcion = Integer.parseInt(br.readLine());
                
                switch(opcion){
                    case 1:
                        System.out.println("¿Cuántos nombres deseas insertar? ");
                        numeroInserciones = Integer.parseInt(br.readLine());
                        for (int i = 0; i < numeroInserciones; i++) {
                            System.out.println("Nombre [" + (i+1) + "]: ");
                            nombres.add(br.readLine());
                        }
                        break;
                    case 2:
                        System.out.println("Nombres:");
                        for (String str : nombres) {
                            System.out.println(str);
                        }
                        System.out.println("Presione enter para continuar...");
                        br.readLine();
                        break;
                    case 3:
                        Collections.sort(nombres);
                        System.out.println("Arreglo ordenado. Presione enter para continuar...");
                        br.readLine();
                        break;
                }
            }while(opcion != 4);
        } catch (IOException ex) {
            Logger.getLogger(OrdenarNombres.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}
 
Les dejo el proyecto; está hecho en NetBeans 7.4:


miércoles, 28 de octubre de 2015

Envío de correos electrónicos con PHP y Gmail

En esta ocasión quiero compartir un ejemplo que preparé para el envío de correos electrónicos mediante PHP. Estoy usando la librería phpmailer. La página web principal solamente contiene los elementos como cajas de textos y un botón para enviar la información del usuario a un archivo que llevará a cabo la conexión con una cuenta de Google para poder enviar el correo electrónico. Por lo tanto, voy a centrarme en explicar el archivo que lleva a cabo la tarea del envío del correo electrónico.

Lo primero que requerimos es tener una cuenta en Gmail. Si no contamos con una cuenta en Gmail, habrá que crearla, ya que este ejemplo funciona específicamente con una cuenta de Gmail.

Ahora tendremos que hacer unos ajustes a nuestra cuenta de Gmail para poder enviar correos electrónicos desde nuestra aplicación de PHP. Para esto entramos a nuestra cuenta y en la esquina, donde se muestra nuestro nombre de usuario, damos clic y elegimos Mi cuenta.

Fig. 1. Acceder a mi cuenta de Gmail

A continuación, debemos buscar la opción Cómo acceder a Google

Fig. 2. Cómo acceder a Google

En la pantalla siguiente, debemos buscar y activar la opción Permitir el acceso de aplicaciones menos seguras.

Fig. 3. Permitir el acceso de aplicaciones menos seguras. 

Con esto termina la configuración necesaria de la cuenta de Gmail para poder enviar correos desde nuestra aplicación en PHP.

NOTA: es posible que la primera vez que usemos la aplicación PHP para envío de mensajes con Gmail, la cuenta se bloquee; esto es normal. Para solucionar el problema, deben loguearse nuevamente en la cuenta de Gmail y les pedirá un modo seguro de autenticación (eligen la opción por mensaje). Después de autenticarse deberían poder enviar mensajes desde PHP a través de su cuenta de Gmail.

En el archivo sendMail.php, dentro de la carpeta php (del proyecto que les comparto hasta abajo), encontramos los siguientes datos de configuración:

$mail->SMTPSecure = "tls";            /* El tipo de seguridad será TLS */
$mail->Host       = "smtp.gmail.com"; /* Este es el host smtp de Gmail */
$mail->Port       = 587;              /* Configuramos el puerto, si es TLS el puerto es 587 */
$mail->Username   = "pruebaelrincondelprogramador@gmail.com";  /* Nombre de usuario de la cuenta Gmail que usaremos para envío de mensajes */
$mail->Password   = "prueba12345";                   /* Contraseña de la cuenta de Gmail anterior */

De estos datos, lo único que modificaremos será la propiedad Username y la propiedad Password; que son simplemente el nombre de usuario y la contraseña de nuestra cuenta de Gmail que usaremos como medio para envío de correos electrónicos mediante nuestra aplicación en PHP. Los datos como SMTPSecure, Host y Port, son exclusivos para cuentas de Gmail, si queremos usar una cuenta de Hotmail u otra, habrá que investigar cuál es el host, la seguridad y el puerto de ese tipo de cuenta en específico.

En las siguientes líneas, tendremos que modificar los datos de la propiedad SetFrom; esta propiedad indica quién es el remitente. La propiedad Subject sirve para definir el asunto del mensaje. La propiedad MsgHTML es el cuerpo del mensaje; podemos utilizar código HTML para definir nuestro mensaje. La propiedad AddAddress sirve para configurar el correo y el nombre al que se le va a enviar el correo electrónico.

$mail->SetFrom($correo, $nombre); /* Configuramos los datos que se mostrarán del remitente (el que escribe el mensaje) */
$mail->Subject    = "El asunto del mensaje"; /* Configuramos el asunto que contendrá el mensaje */
$mail->MsgHTML($nombre." escribió:".$comentarios." - Teléfono: ".$telefono." - Correo: ".$correo); /* Configuramos el contenido del mensaje */
$mail->AddAddress($correo, $nombre); /* Configuramos el correo y el nombre a quien se le va a enviar el mensaje (el destinatario) */

Finalmente les dejo los archivos del proyecto completo. También pueden hacer uso de la cuenta de Gmail que dejo en el ejemplo (sólo no abusen de su utilización ya que podrían bloquearla o marcarla como spam).


También si quieren ver la demostración en línea, ingresen al siguiente link: [DEMO]


martes, 6 de octubre de 2015

Nube de palabras con JavaScript y jQCloud

¿Qué es?

Una nube de palabras o nube de etiquetas es una representación visual de las palabras que conforman un texto, en donde el tamaño es mayor para las palabras que aparecen con más frecuencia (wikipedia).

Fig. 1. Nube de palabras

¿Para qué sirve?

Uno de sus usos principales es la virualización de las etiquetas de un sitio web, de modo que los temas más frecuentes en el sitio se muestren con mayor prominencia. Las etiquetas son palabras clave que suelen estar oredenadas alfabéticamente o, en ocasiones, agrupadas semánticamente. La importancia de una etiqueta se muestra con el tamaño de la fuente y/o color.

¿Qué se necesita para hacer una nube de palabras?

En Internet existen librerías diversas para la creación de una nube de palabras. Es algo bastante sencillo; para este caso voy a usar la librería jQCloud, la cuál podrán descargar desde este link.

Primeramente, debemos agregar la librería JQuery entre las etiquetas <head></head> de nuestra (s) página (s) web. Para esto utilizamos la siguiente línea de código:

        <script src="js/jquery.min.js"></script>

Si no contaran con la librería JQuery en su proyecto, pueden agregar la ruta web para descargarla cada vez que entren a la página web:

A continuación, debemos agregar las librerías de jQCloud; para esto copiamos las siguientes líneas de código dentro de la etiquetas <head></head>:

        <script src="jqcloud2/dist/jqcloud.min.js"></script>
        <link rel="stylesheet" href="jqcloud2/dist/jqcloud.min.css">

Una vez hecho lo anterior, es el momento de insertar las palabras y el div donde se va a visualizar nuestra nube de palabras. Para hacer esto, agregamos el código siguiente entre las etiquetas <body> y </body>:

        <div style="width:90%; height: 70%;" id="demo"></div>    
        <script>
            var words = [
                {text: ".NET", weight: 13},
                {text: "C++", weight: 16.5},
                {text: "Java", weight: 9.4},
                {text: "Ruby", weight: 8},
                {text: "Python", weight: 6.2},
                {text: "PHP", weight: 5},
                {text: "Pascal", weight: 5},
                {text: "Javascript", weight: 5},
                {text: "HTML5", weight: 5},
                {text: "Ensamblador", weight: 5},
                {text: "Lorem", weight: 13},
                {text: "Ipsum", weight: 10.5},
                {text: "Dolor", weight: 9.4},
                {text: "Sit", weight: 8},
                {text: "Amet", weight: 6.2},
                {text: "Consectetur", weight: 5},
                {text: "Adipiscing", weight: 5},
                {text: "Java", weight: 9.4},
                {text: "Ruby", weight: 8},
                {text: "Python", weight: 6.2},
                {text: "PHP", weight: 5},
                {text: "Pascal", weight: 5},
                {text: "Javascript", weight: 5},
                {text: "HTML5", weight: 5},
                {text: "Ensamblador", weight: 5}
              /* ... */
            ];

            $('#demo').jQCloud(words);
        </script>

El resultado es el siguiente:

Fig. 2. Nube de palabras con jQCloud

El código completo de la página web es el siguiente:

<html>
    <head>
        <title>
        </title>
        <script src="js/jquery.min.js"></script>
        <script src="jqcloud2/dist/jqcloud.min.js"></script>
        <link rel="stylesheet" href="jqcloud2/dist/jqcloud.min.css">
    </head>
    <body>
        <div style="width:90%; height: 70%;" id="demo"></div>    
        <script>
            var words = [
                {text: ".NET", weight: 13},
                {text: "C++", weight: 16.5},
                {text: "Java", weight: 9.4},
                {text: "Ruby", weight: 8},
                {text: "Python", weight: 6.2},
                {text: "PHP", weight: 5},
                {text: "Pascal", weight: 5},
                {text: "Javascript", weight: 5},
                {text: "HTML5", weight: 5},
                {text: "Ensamblador", weight: 5},
                {text: "Lorem", weight: 13},
                {text: "Ipsum", weight: 10.5},
                {text: "Dolor", weight: 9.4},
                {text: "Sit", weight: 8},
                {text: "Amet", weight: 6.2},
                {text: "Consectetur", weight: 5},
                {text: "Adipiscing", weight: 5},
                {text: "Java", weight: 9.4},
                {text: "Ruby", weight: 8},
                {text: "Python", weight: 6.2},
                {text: "PHP", weight: 5},
                {text: "Pascal", weight: 5},
                {text: "Javascript", weight: 5},
                {text: "HTML5", weight: 5},
                {text: "Ensamblador", weight: 5}
              /* ... */
            ];

            $('#demo').jQCloud(words);
        </script>
    </body>
</html>

Los archivos de este ejemplo pueden descargarlos desde los siguientes links:

MEGA | OneDrive

Para ver la demostración en línea, ingresen al siguiente link: [DEMO]