sábado, 9 de agosto de 2014

Altas, Bajas, Consultas y Modificaciones desde aplicación java usando BD en mysql

Es complicado comenzar desde cero a usar una conexión desde java a  base de datos, usualmente se busca en internet cómo hacerlo. Algunos ejemplos son bastante útiles, pero no todos están completos o separados de la manera más adecuada, usando clases o métodos.
En este tutorial pretendo organizar la clases y los métodos de una manera más cómoda de modificar.

Comenzemos:
Descripción del proyecto: Crear una aplicación en java desde la que se pueda dar de alta, modificar, eliminar y buscar registros desde una base de datos hecha en mysql. La base de datos es simple, constará de una sola tabla, llamada listanegra, dicha tabla tendrá los siguiente campos: id, nombre, razon, edad. La base de datos tendrá el nombre de bdlistanegra. El identificador (id) que es la clave primaria, será autoincrementado, para facilitar el proceso de registros.
El script de la base de datos queda de la siguiente manera:

create database bdlistanegra;

create table listanegra(
id int auto_increment,
nombre varchar(90),
razon varchar(190),
edad int,
primary key(id)
);

La idea principal de este proyecto, es usar una clase para la conexión a la base de datos, así como los métodos para agregar, actualizar, consultas y eliminar registros en la base de datos, y crear un objeto de dicha clase cuando se requiera acceder a la base de datos.

Deberá haber una clase que se llama ListaNegra, dicha clase contiene los atributos de la tabla listanegra, para poder crear objetos y arreglos de dicho objeto, para almacenar los datos de cada registro, esto facilitará la administración de la información.

La siguiente clase es AdminBDListaNegra contiene los métodos que se invocan para mostrar los registros en tablas, campos de texto, labels, etc., es decir, la manipulación de la información de la base de datos se realiza dentro de esta clase.

Las interfaces gráficas se usarán únicamente para mostrar información de la base de datos.

Bueno, lo único que hay que decir, es que descarguen el paquete completo. Agreguen la base de datos a su gestor de mysql y abran el paquete de java en netbeans. Es necesario configurar la contraseña y nombre de usuario, de acuerdo a sus datos de mysql.
La documentación de los métodos están en línea de código, para evitar escribir aquí.
Bueno, el link de descarga es el siguiente : https://github.com/jesusferm/Black-List-MySQL


Gracias por usar el proyecto, si tienen dudas, por favor comenten.

lunes, 4 de agosto de 2014

Reproducir sonido en segundo plano usando hilos en java

Es posible que necesiten reproducir algún sonido en alguna de sus aplicaciones. Hace poco estaba desarrollando un juego en java, y necesitaba reproducir sonidos. Una manera de hacer es la siguiente.
Por ahora no tiene los métodos de pausar, parar, etc.
Será necesario crear una clase que se llama ReproducirSonidos y la otra llamada PruebasSonidos que es la clase principal.

Nota: Dentro de la carpeta del proyecto, es necesario crear una carpeta llamada sonidos y almacenen ahí los sonidos que usen en su proyecto.



/*
 * Nombre de la clase: ReproducirSonidos
 * Descripción: Controla el sonido que se esté reproduciendo, utilizando un hilo
 *              sin opciones de pausea, stop o reanudar, simplemente lo ejecuta
                y comienza la reproducción de la canción, y espera hasta que finalice.
 */
package pruebassonidos;

import java.io.File;
import java.io.IOException;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;

/**
 *
 * @author gsu Jesús Fernando Merino Merino
 */
public class ReproducirSonidos extends Thread{
    String mensaje;
    String sonido;
    int timeRep=0;
    boolean stop=false;
    public ReproducirSonidos(){
        mensaje="Hola";
    }
    public ReproducirSonidos(String sonido){
        this.sonido=sonido;
    }
    public ReproducirSonidos(String sonido,boolean stop){
        this.sonido=sonido;
        stop=false;
    }
    public void run(){
        repSonido(sonido);
        System.out.println("Este proceso ha terminado:"+this.getName());
    }

    public void setMensaje(String msj){
        this.mensaje = msj;
    }
    
    public void repSonido(String sonido){
        SourceDataLine soundLine = null;
        int BUFFER_SIZE = 64*1024;  // 64 KB
        // Set up an audio input stream piped from the sound file.
        try {
           File soundFile = new File(sonido);
           AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(soundFile);
           AudioFormat audioFormat = audioInputStream.getFormat();
           DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
           soundLine = (SourceDataLine) AudioSystem.getLine(info);
           soundLine.open(audioFormat);
           soundLine.start();
           int nBytesRead = 0;
           byte[] sampledData = new byte[BUFFER_SIZE];
           while (nBytesRead != -1) {
              nBytesRead = audioInputStream.read(sampledData, 0, sampledData.length);
              if (nBytesRead >= 0) {
                 // Writes audio data to the mixer via this source data line.
                 soundLine.write(sampledData, 0, nBytesRead);
              }
           }
        } catch (UnsupportedAudioFileException | IOException | LineUnavailableException ex) {
            System.err.println("Error: "+ex.getMessage());
        } finally {
           soundLine.drain();
           soundLine.close();
        }
    }
}

Clase principal del proyecto...
/*
 * Clase: PruebaSonidos
 * Descripción: Programa que reproduce una cación en segundo plano, usando hilos.
 */
package pruebassonidos;


/**
 *
 * @author gXfer Jesus Fernando Merino Merino
 */
public class PruebasSonidos {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ReproducirSonidos reproducir = new ReproducirSonidos("sonidos/ajws.au");
        reproducir.start();
        System.out.println("Después de la canción");
    }
}

Pueden descargar el proyecto aquí. Gracias por visitar, si tienen dudas comenten por favor.

sábado, 2 de agosto de 2014

Crear instalador de aplicación programada en Visual Basic

En algunos proyecto es necesario crear un instalador, esto para probar que realmente funcione dicho programa. El proceso que explicaré a continuación es un poco tedioso, pero espero explicarlo de manera detallada.
Primero: necesitan tener listo su programa programado en Visual Basic o .net como lo conozcan.
Segundo: necesitan descargar e instalar setup factory este programa nos ayudará a empaquetar el programa y general un instalador. Dicho software lo tendrán que conseguir ud's mismos. una vez que tengan instalado dicho programa, pueden continuar con el tutorial. Pueden descargarlo de aquí

Tercero. Una vez que tengamos listo el programa a empaquetar realizaremos lo siguiente:
Compilar en modo debug y release el proyecto en visual basic, comos e muestra en las imagenes.
Después de realizar dicho proceso, verificar en la carpeta del proyecto que haya archivos en las carpetas con el nombre de bin y obj , así como también dentro de las carpetas de debug y release que están dentro de la carpeta bin.
La estructura es la siguiente:
bin
    debug
    release
obj
   x86
Si dichas carpetas contiene archivos, entonces procedemos al siguiente paso.
Crear un carpeta en C:\ con el nombre de su proyecto, bueno, esto es de preferencia solamente, no es necesario pero es más recomendable. Dentro de esta carpeta poner las carpetas de bin y obj que contiene la carpeta de su proyecto hecho en Visual Basic.

Siguiente paso: abrir el programa de setup factory al abrir el programa, le preguntará si desean abrir un proyecto o crear uno nuevo. clic en crear nuevo proyecto y luego clic en aceptar.

Después es necesario agregar la siguiente información, si hay algo que no sepan, pueden dejarlo en limpio. Claro, que el nombre del proyecto y la versión no se puede dejar en limpio. Después dar clic en Siguiente.

Ahora es necesario seleccionar la arquitectura en la que se podrá instalar dicho software. Después de que seleccionen la arquitectura deseada, clic en siguiente.

Indicar la ruta en la que está almacenado el proyecto, recuerden que se creó una carpeta en la C:\ con el nombre de su proyecto, bueno, ahora indicar dicha ubicación y clic en siguiente.

Seleccionar el tema que desean para que se muestre al momento de instalarlo, seleccionen el que más le guste, o que se ajuste a su software que crearán.

Seleccionar los idiomas que desean que el usuario vea al momento de instalar, cabe indicar que si seleccionan inglés u otros idiomas, deben tomar en cuenta que la interfaz gráfica pueda soportar dichos idiomas.

Ahora es momento de seleccionar los sistemas operativos en las que se pueda instalar dicho software, es mejor dejarlo que se pueda instalar en todos.

Esta es la interfaz que se muestra después de terminar los pasos anteriores.

Ahora es necesario configurar algunas pantallas que se muestran durante la instalación. Ir al menú en la opción Project en la opción Screens.

Esta es la pantalla de Screens, seleccionamos la pestaña Before Installing.

Aquí pueden seleccionar las ventanas que quieran que se muestre en la instalación. Pero la importante ahora es, que la ubicación en la que se almacene el programa no pueda ser cambiada por el usuario, esto debido a que no es fácil cambiar de ubicación, y eso puede causar problemas en la ejecución del software.
Lo que se necesita, es desahabilitar la opción de poder seleccionar el cambio de ubicación.

Clic en editar y despalomear la opción de Enabled, e indicar la ubicación de instalación del Software, es decir: C:\nombredelacarpetadesuproyecto

Ahora es necesario modificar las propiedades de su ejecutable principal, ustedes deben de saber cuál es la interfaz o el ejecutable que inicia toda la aplicación.
 Clic derecho sobre el ejecutable que hayan seleccionado, y luego en File Properties.

Seleccionar la pestaña de Shortcuts

Y activar la opción Desktop y agregar un nombre con el que aparecerá la aplicación una vez instalada, así como también el nombre del acceso directo.

Una vez finalizado los pasos anteriores, ir al menú y seleccionar la opcion de build. Les mostrará opciones de almacenamiento del software, seleccionen una opción y clic en siguiente.

Seleccionen la ubicación en la que se almacenará el instalador y clic en siguiente.

Esperar a que termine el proceso.

Si el proceso termina sin errores, entonces el instalador se realizó con éxito.

El instalador se obtiene de la siguiente manera, y obtienen listo el instalador, ahora pueden instalarlo en cualquier otra sistema operativo.

Instalando de prueba.







Y listo eso es todo. Si tiene dudas. Por favor dejen sus comentarios. Gracias por su tiempo

miércoles, 30 de julio de 2014

Script que avisa el estado de la carga de la batería de la laptop linux

#!/bin/bash

# low battery in %
LOW_BATTERY="40"

# critical battery in % (execute action)
CRITICAL_BATTERY="5"

# action
ACTION="/sbin/poweroff"

# sleep 5 mins
SLEEP="300"

# display icon
LOWBAT_ICON="/usr/share/icons/gnome/32x32/status/battery-low.png"
CRITBAT_ICON="/usr/share/icons/gnome/32x32/status/battery-caution.png"
FULLBAT_ICON="/usr/share/icons/gnome/32x32/status/battery-full-charged.png"

# path to battery /sys
BATTERY_PATH="/sys/class/power_supply/BAT0/"

# notify sound
PLAY="aplay /usr/share/sounds/linuxmint-gdm.wav"

while [ true ]; do
if [ -e "$BATTERY_PATH" ]; then
BATTERY_ON=$(cat $BATTERY_PATH/status)
CURRENT_BATTERY=$(cat $BATTERY_PATH/capacity)

if [ "$BATTERY_ON" == "Discharging" ]; then

if [ "$CURRENT_BATTERY" -lt "$CRITICAL_BATTERY" ]; then
$($PLAY)
notify-send -i "$CRITBAT_ICON" "Battery is Critical - $CURRENT_BATTERY%. Shutting down in 60 sec."
sleep 60
$($ACTION)

elif [ "$CURRENT_BATTERY" -lt "$LOW_BATTERY" ]; then
$($PLAY)
notify-send -i "$LOWBAT_ICON" "Battery is Low - $CURRENT_BATTERY%."
fi

elif [ "$BATTERY_ON" == "Full" ]; then
$($PLAY)
notify-send -i "$FULLBAT_ICON" "Battery is Full - 100%."
fi
fi
sleep $SLEEP
done

Obtener fecha del sistema y colocarlo en un JDateChooser Java

Recientemente me fue necesario obtener la fecha del sistema para colocarlo en un JDateChooser, con la finalidad de que la fecha no fuera null, ya que eso puede causar excepciones cuando se intente obtener la fecha de un JDateChooser en caso de que no haya fecha seleccionada.
Para agregar el JCalendar a la paleta seguir este tutorial 
La interfaz que se crea es sencilla, es la siguiente:

Previo a esto, es necesario agregar un jar llamado jcalendar, tal y como se ve en la imagen de abajo:


Es un JFrame que contiene una JLabel y un JDateChooser. Todo lo que hay que hacer es agregar lo siguiente el constructor que trae por el default.

public FechasJdate() {
        initComponents();
        Calendar c2 = new GregorianCalendar();
        jDateChooser1.setCalendar(c2);
}

Ahora a ejecutar el paquete y listo. Cuando inicie el programa automáticamente la fecha del día se mostrará en el JDateChooser

El ejemplo lo pueden descargar de aquí: https://mega.nz/#!DFg0mLRT!AsMvgh4DX3QDklgKRBKL0b-rohPgriekVBTEmaRTenw