Capturar webcam con VB.NET

¿Que haremos? Crearemos una aplicación en Visual Studio, la cual hará uso de una webcam para capturar el video en frames independientes y depositarlos en memoria para despues mostralos al usuario a través de un picturebox y un Timer para crear la ilusión de movimiento. ¿Porque lo haremos? Porque es justo y necesario ¿Que necesitamos? [...]

Envío de correo con JavaMail/Netbeans

JavaMail es una expansión de Java que facilita el envío y recepción de e-mail desde código java. JavaMail implementa el protocolo SMTP (Simple Mail Transfer Protocol) así como los distintos tipos de conexión con servidores de correo -TLS, SSL, autentificación con usuario y password, etc [Según SantaWikipedia] ¿Qué necesitamos? JavaMail 1.4.5 Java y Netbeans 6.9 [...]

Proyecto de base de datos Firebird VB

En este proyecto realizaremos una aplicación de base de datos Firebird con el lenguaje de programación de Visual Basic de Microsoft, este proyecto tendrá las funciones básicas de gestión INSERT, DELETE, UPDATE y una interfaz de usuario para utilizarlas. ¿Que necesitamos? Visual Studio 2008 o superior Firebird última versión Firebird ADO.NET Data Provider. Conocimientos básicos [...]

Imprimir imagen con Print

La siguiente clase hace uso de PRINT para imprimir una imagen que se encuentra en un variable de tipo FileInputStream, esta clase a su vez es implementada desde una interfaz que hace fácil su uso, la clase así como todo el proyecto esta comentado. import java.io.File; import javax.print.Doc; import java.io.IOException; import javax.print.DocFlavor; import javax.print.SimpleDoc; import java.io.FileInputStream; [...]

Code Army Bolivia

29/5/10

Convertir HTML a PDF con DOMPDF

JAN29


Buscando alternativas para un trabajo que tenia, me encontre con la libreria DOMPDF, esta libreria te permite convertir archivos HTML a PDF facilmente utilizando PHP, aunque aun se encuentra en fase beta y acepta hojas de estillo (CSS) asi como tablas con formato e imagenes, no es del todo compatible con el lenguaje HTML y CSS ademas de que requiere mucho uso de RAM y Micro, pero sirve para realizar trabajos sencillos.

Lo primero, descargate la libreria desde este enlace en code google. Se encuentra en la version 0.6.0 beta y es la que utilizaremos.
Puedes tambien descargarte la documentacion y ver algunos ejemplos desde se web.

Manos a la obra

El codigo necesario para convertir HTML a PDF es :




<?php
//se incluye la libreria de dompdf
require_once("dompdf/dompdf_config.inc.php");
$code = '<html><head><title>Hola</title></head>
<body><h1>Hola Mundo</h1></body></html>';    
//se crea una nueva instancia al DOMPDF
$dompdf = new DOMPDF();
//se carga el codigo html
$dompdf->load_html($code);
//aumentamos memoria del servidor si es necesario
ini_set("memory_limit","32M"); 
//lanzamos a render
$dompdf->render();
//guardamos a PDF
$dompdf->stream("mipdf.pdf");
?>



Explicacion:

En la primera linea de codigo incluimos la libreria con la palabra reservada REQUIRE_ONCE
En la variable CODE se coloca como un string, el codigo HTML a convertir.
Luego se crea una nueva instancia al objeto dompdf y se carga el codigo HTML
Con ini_set, aumentamos la memoria del servidor que en mi caso, utilizo appserver y tiene 8M de memoria limite, esto no siempre es necesario y depende del serrvidor que utilices.
Por ultimo lanzamos a render y guardamos el PDF

El codigo de prueba utilizado es este, la Oración del Geek:


<html><head>
<title>Oracion del Geek</title>
<style type="text/css">
body{
margin: 15px 40px;
}
table{
text-align:center;
}
p{
text-align:center;
font-style:italic;
font-family:"Times New Roman", Times, serif;
font-size:20px;
}
h1{
color:#0033CC;
text-align:center;
font-style:italic;
font-weight:bold;
border-bottom:#003366 solid 3px;
}
</style>
</head>
<body>
<h1>Oración del Geek</h1>
<table width="563" align="center">
  <tr>
    <td>
    <p><img src="imagen/nerd.jpg" width="450" height="305"></p>
    <p>Padre Nuestro…  </p>
    <p>Santificado sea tu server, </p>
<p>venga a nosotros tu freeware  </p>
<p>Hágase tu downloading así en el http como en el ftp  </p>
<p>Danos hoy nuestro surfing de cada día,  </p>
<p>Perdona nuestros bugs  como nosotros también perdonamos a Microsoft.  </p>
<p>No nos dejes caer en un Mac y líbranos de todo Spyware.  </p>
<p>Enter…</p>
<p><img src="imagen/i-love-geeks.jpg" width="500" height="375"></p></td>
  </tr>
</table>
</body>
</html>

Y me da como resultado:

Lo bueno: Su uso es realmente facil y cuenta con una documentacion amplia
Lo malo: Esta en fase beta y no totalmente compatible
Lo feo: Tarda horrores al procesar tablas complejas y requiere mucha memoria

Aqui te dejo el ejemplo que yo utilice
Click para descargar
enlace actualizado abril 2012

No soy antisocial; Simplemente no soy amistoso al usuario.

continue reading

21/5/10

Yo tambien jugue Pacman

JAN29


El clasico juego PACMAN cumple 30 años de vida y Google sorprendio al mundo al no colocar una imagen estatica, sino el juego de consola completo el que se inicia solo al esperar unos cuantos cuantos segundos.

Ya me imagino las risas y burlas de millones de jovenes-adolescentes al menospreciar este juego con sus "world of warcraft", "ned for speed 3d", "Halo" etc, pero para que se enteren este juego fue uno de lo mejores hace 3 decadas :D y tiene toda una historia detras de sus hombros, es el abuelo de los juegos de hoy en dia los cuales en lo personal me aburren el solo jugarlos un par de vece,  pero Pacman al ser un juego tan simple, tan basico es tan adictivo que solo pueden comprobarlo si lo juegan.


iba a colocar este post mas temprano, pero me pase toda la tarde jugando

Para los que quieran el codigo fuente para jugarlo aqui esta.

continue reading

16/5/10

Reproductor MP3 en java

JAN29


Posteando de tiempo, se me ocurrio compartir el codigo de un simple reproductor mp3 hecho en java con la API de Java Media Framework. El codigo qu presento a continuacion sirve como base para el desarrollo de proyectos mucho mas ambiciosos, pero claro todo depende de las ganas que le pongas al programar, todo esta en tus manos, yo te digo como comenzar pero tu decides como terminar.

El proyecto.
Necesitas:
  • Java, obvio no :D
  • un IDE, yo utilizo Netbeans 6.0
  • el API de Java Media Framework
  • 15 minutos de tu tiempo

Creando la Interfaz

1. Crea un nuevo proyecto en Netbeans y añade un JFrame: reproductor, a este jframe añade un Menu, un JSlider , dos jButton y un label en la parte inferior, trata de que te quede como en la imagen de abajo

El reproductor

2. Crea una nueva clase y llamala mp3.java, esta clase es la encargada de trabajar con los archivos MP3. El codigo necesario esta aqui:


import java.io.IOException;
import java.net.URL;
import javax.media.CannotRealizeException;
import javax.media.Manager;
import javax.media.NoPlayerException;
import javax.media.Player;
import java.util.Timer;
import javax.swing.*;
import java.awt.*;
import java.util.TimerTask;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.filechooser.FileNameExtensionFilter;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class mp3{
//el player
private Player mediaPlayer;
//animacion
private Timer tiempo ;
private TimerTask task;
private int speed = 1000;//velocidad
private int frame=0;
//control    
boolean run = false;    
boolean todo_ok = false;
//archivo
URL mediaURL=null;
String file="";   
//otros
String t=null;
//filtro
private static FileNameExtensionFilter filter = new FileNameExtensionFilter("Archivo MP3","mp3","mp3");
    
//el constructor vacio
    public mp3() {} 
   /* controles de reproduccion */
public String STOP(){        
//comprueba que el reproductor tenga un archivo
    if (todo_ok){
        mediaPlayer.stop();  
        this.todo_ok=false;  
        this.run=false;
        this.file="";
        this.stopAnimation();
    }
    return "Reproductor mp3 - by Mouse";
}

/* Reproduce un archivo mp3, si no encuentra ninguno devuelve
 un string vacio */
public String PLAY(JSlider b){
    t ="No existe ningun archivo...";
    if (todo_ok){
        if(!run){//si ya se esta reproduciendo
            mediaPlayer.start();
            this.run=true;
            t="Reproduciendo";
            this.startAnimation(b);
        }
    }
    return t;
}  
  
 //para la animacion  
public void startAnimation(final JSlider b) {    
    if (todo_ok) {
        tiempo = new Timer();
        task = new TimerTask() {
            public void run() {     
                //calculamos el tiempo de la animacion por 100%
                frame = (int) Math.round((mediaPlayer.getMediaTime().getSeconds() * 100)/mediaPlayer.getDuration().getSeconds());
                //cuando ambos sean iguales quiere decir que el video a alcanzado el final de la reproduccion
                if(mediaPlayer.getMediaTime().getSeconds() == mediaPlayer.getDuration().getSeconds()){
                    frame=100; // 100%
                    STOP();//SE DETIENE Y DESTRUYE EL MEDIA PLAYER
                }
                else // sino
                {
                    // se actualiza el nuevo valor del Slider
                    b.setValue(frame);
                    //Porcentaja de reproduccion
                     System.out.println("Tiempo de reproduccion: " + frame + "% de 100%");
                }
               }
        };
        //se inicia la animacion
        tiempo.schedule(task,0,speed); 
    }
}

//detiene la animacion
public void stopAnimation() {
    tiempo.cancel();
    task.cancel();
}
     
/* Metod que muestra una ventana de dialgo para añadir "archivos" al reproductor
* hace uso del metodo anterior "setvideo"
*/
public String Abrir_mp3(){
    JFileChooser fileChooser = new JFileChooser();
    fileChooser.setFileFilter(filter);
    int result = fileChooser.showOpenDialog(null);  
    if ( result == JFileChooser.APPROVE_OPTION ){
        try {   
            //si se esta reproduciendo un mp3, se detiene
            if(todo_ok){this.STOP();}
            //se asigna a mediaURL el archivo de video seleccionado
            URL url = fileChooser.getSelectedFile().toURL();   
            //se coloca el nombre de la cancion en la variable file
            this.file= fileChooser.getSelectedFile().getName();
            //se asigna el mp3 al reproductor
            mediaPlayer = Manager.createRealizedPlayer( url );
            //se coloca a true
            this.todo_ok=true;          
         } 
         catch (NoPlayerException ex) {
            Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
         } catch (CannotRealizeException ex) {
            Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
         }            catch (IOException ex) {
            Logger.getLogger(mp3.class.getName()).log(Level.SEVERE, null, ex);
         } 
        }
        return "Reproductor mp3 - " + this.file;
    }
}

Explicacion: Como se ve en el codigo, este reproductor tiene los controles basicos para  reproducir PLAY y detener STOP el archivo mp3, ademas unos metodos para animar el jSlider y asi ver el avance en la reproduccion, el metodo Abrir_mp3(); te presenta una ventana de dialogo para que puedas buscar tu archivo MP3 y reproducirlo, todo esto desde una interfaz grafica. El codigo esta bastante comentado.

3. Ahora para implementar este codigo en la interfaz, debes hacer lo siguiente:
Creas una instancia a nuestra clase mp3.java y añades los metodos a sus controles correspondientes.

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
    //abrir mp3
        this.setTitle(mimp3.Abrir_mp3());
}

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
        //dale play
        jLabel1.setText(mimp3.PLAY(jSlider1));
}

private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
       //detener
        this.setTitle(mimp3.STOP());
        jLabel1.setText("Detenido");
}
// instancia a la clase mp3.java    
mp3 mimp3 = new mp3();

Y eso es todo, aqui puedes ver el reproductor funcionando
Aqui el video para una mejor explicacion
esta es la base para reproductores mas trabajados, como por ejemplo mi version personal del reproductor winamp, aun en desarrollo, pero cuando lo termine lo subire para compartirlo con todos


No puede faltar el codigo fuente del proyecto en netbeans 6.0
Click para descargar
Alguna duda, no dudes en preguntar, pero recuerda que puedo aconsejarte pero no realizar todo el trabajo por ti, como dijo el profe Escalante, solo HAY QUE TENER GANAS

continue reading

1/5/10

Crear applets con netbeans (Los *.JAR)

JAN29


Cuando realizamos nuestros applets en Netbeans, como vimos en un sencillo ejemplo anterior, no basta utilizar una sola clase, los applets mas complejos cuentan con varias clases los cuales tenemos que empaquetar en *.JAR y asi mismo algunos applets tambien utilizan librerias (*.jar) de otras personas. El objetivo de este tutorial es el de mostrar como crear un applets desde netbeans 6.0 empaquetarlo y utilizarlo desde un navegador web.

El proyecto:
1. Crea un nuevo proyecto en netbeans, JAVA - JAVA APLICATION, llamalo "javaapplet".
2. En el proyecto que se crea, elimina el archivo MAIN, ya que no lo necesitamos.
3. Crea un nuevo JAppletForm, clic derecho sobre el paquete "javaapplet" y NEW - JAppletForm... llama a esta nueva clase "interfaz"
Si no encuentras esa opcion, debes escoger NEW - OTHER... y en la ventana que te aparece, escoges SWING GUI FORMS - JAPPLET FORM.
4.Al nuevo jAppletForm: Interfaz, añade los siguientes controles:

5. Crea una nueva clase; New - Java Class..., y llamalo "imagenNET.java" añade el siguiente codigo:


package javaapplet;
import java.awt.Dimension;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
/**
 * @web http://jc-mouse.blogspot.com/
 * @author Mouse
 */
public class imagenNET extends javax.swing.JLabel {
    
   String imagen;
   BufferedImage _image;    
     
    public imagenNET(String i,Dimension d){
        this.imagen=i;
        this.setBounds(0, 0, (int) d.getWidth(),(int) d.getHeight());
        cargar_imagen();
    }    
    /* carga la imagene de la pagina en memoria */   
    public void cargar_imagen(){    
            try {
                URL _url = new URL(this.imagen);
                _image = ImageIO.read(_url);
            } catch (IOException ex) {
                Logger.getLogger(imagenNET.class.getName()).log(Level.SEVERE, null, ex);
            }
            ImageIcon imagenFondo = new ImageIcon(_image);
            this.setIcon(imagenFondo);
            this.repaint();
    }      
}
Esta clase, que se extiende de un JLabel,  lo unico que hace, es añadir una imagen desde internet a este objeto.
6. Ya solo queda añadir un evento al JButton de la clase interfaz y colocar el siguiente evento:

El proyecto ya esta terminado, y lo ejecutamos desde netbeans para ver que este todo bien. Para generar los .class y el . JAR, debemos hacer clic derecho sobre el proyecto y elegir "Clean and build"

Luego cuando genero los class necesarios, para ejecutar el applet, clic derecho sobre la clase principal que tenga el metodo runable, en este caso nuestra clase "interfaz" y escogemos "Run File"
El applet se ejecuta desde el AppletViewer de java, como se ve en la imagen de abajo

Implementar el applet en un navegador web.
Cuando utilizamos la opcion "Clean And Build", netbeans generos todos los archivos necesarios para implementar el applet en navegadores web. Si se fija en la pestaña Files, podra ver que los archivos principal que necesitamos es el "javaapplet.jar", y el IDE,  tambien genero el archivo HTML correspondiente.

Son estos dos archivos que utilizaremos, copialos a una misma carpeta y abre el archivo HTML con el bloc de notas. Modifica el codigo HTML de la siguientye forma:


<HTML>
<HEAD>
   <TITLE>Applet HTML Page - by mouse</TITLE>
</HEAD>
<BODY>
<APPLET code="javaapplet.interfaz" archive="javaapplet.jar" width=650 height=600></APPLET>
</BODY>
</HTML>

En la etiqueta code, especificamos el paquete (javaapplet) y seguido de un punto, la clase principal que se ejecuta primero (interfaz).
En la etiqueta Archive, colocamos el nombre del paqute (javaapplet.jar), si este proyecto utilizara mas de un paquete, entonces colocamos los nombres de todos los paquetes seguidos de una coma, por ejemplo
archive="javaapplet.jar, otralibreria.jar, yotromas.jar"
Tambien especificamos el tamaño del applet con las etiquetas width y height.

IMPORTANTE: Este applet funciona correctamente desde el appletviewer, pero no funcionara desde un navegador web, esto debido a que ciertos applets, al hacer uso de recursos de la pc, o en este caso al tratar de conectarse a internet  para cargar una imagen, interfiere con la seguridad del equipo y por tanto el navegador no permite que se ejecute, para evitar esto, debemos FIRMAR DIGITALMENTE el applet para asi otorgarle los permisos necesarios para su correcta ejecucion. Este tuto no trata de firmas, eso se vera en otro tutorial.

No todos los applets necesitan contar con una firma digital para su ejecucion.

Cuando ejecutamos el applet ya con firma desde un navegador web, este nos informa de una aplicacion que desea ejecutarse, osea nos pide permiso.

Aqui tenemos el applet firmado y ejecutandose desde un navegador web (Firefox)
El videotutorial
Para descargar el proyecto en netbeans 6.0, el codigo fuente, los applets con el html firmado y no firmado para que se vea la diferencia entre ambos, el *.Jar que esta firmado, tiene una validez de 120 dias hasta caducar contando desde hoy (1 de mayo)
Click para descargar

¿me falto algo?

continue reading

Post recomendado