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; [...]

26/7/10

Colorear codigo en Blogger + programa portable

JAN29


Despues de buscar y probar muchas opciones para colorear codigo fuente en blogger sin tener que modificar la plantilla o arriesgarse a que post anteriores que tienen codigo con las etiquetas PRE Y CODE se alteren y queden ilegibles, encontre una alternativa que parece bastante sencilla de usar, es  
Highlight, este es un programa que convierte el codigo fuente en texto con formato, soporta varios lenguajes, esta disponible para windows como linux y lo mejor, es gratis. SI quieres saber mas, visita su web http://www.andre-simon.de

¿COMO USARLO EN BLOGGER?
Paso 1: bajate el programa e instalalo o si prefieres más abajo te dejo un portable que hice.
Paso 2: Con la aplicacion abierta, en la parte superior izquierda, tienes dos pestañas FILE y CLIPBOARD.
File: Esta opcion te permite cargar un archivo que tengas en tu pc, el programa detecta automaticamente el lenguaje.
Clipboard: esta opcion te permite realizar un copy/paste directamente de tu aplicacion IDE.

Configuraciones: esta opcion se encuentra en la parte inferior izquierda
En la pestaña GENERAL, habilita las opciones Add Line Numbers (agrega numeracion a las lineas de codigo), Pad with zeroes (coloca ceros en los numeros), validate input data (valida datos de entrada).
En OUTPUT FORMAT (formato de salida) escoge HTML.

En la pestaña OUTPUT SPECIFIC busca la opcion STYLESHEETS y habilita las opciones EMBED STYLE (CSS) e Inline CSS.

Por ultimo en la pestaña FORMATTING, puedes escoger el color del theme que utilizaras, eso ya depende de los gustos de cada quien, yo me quedo con el formato de visual studio 2008.
Tambien tiene otras opciones interesantes, TAB WIDTH te permite especificar que tamaño en caracteres tendra la tecla TAB, la opcion LINE WRAPPING  especifica el numero de columnas y tambien puedes modificar el tamaño de la fuene y el tipo.


Continuemos, cuando ya tengas el codigo cargado (paso 2), con la opcion FILE, presiona COPY FILE TO CLIPBOARD, si utilizaste la opcion CLIPBOARD, presiona COPY PREVIEW TO CLIPBOARD, abre el notepad y pega ese codigo, no lo pegues directamente en blogger.
Como se ve en la imagen, el programa crea todo el codigo fuente ya formateado, solo nos interesa lo que este entre las etiquetas PRE, borra el resto.

para personalizar un poco mas nuestro codigo, añade este contendor DIV, antes y despues de las etiquetas PRE,  dependiendo de la extension de tu codigo, puedes editar el tamaño HEIGHT de acuerdo a tus necesidades.

01 <div style="overflow: auto; height: 400px; background: none repeat scroll 0% 0% rgb(255, 255, 255);">
02 aqui el codigo
03 </div>
debes tener algo como:

Ahora si, ya puedes pegar este codigo en el editor de blogger

Ejemplos
PHP


01 <?php
02 echo "Hola Mundo";
03 ?>

C#


01 namespace HelloNameSpace
02 {
03       public class HelloWorld
04       {
05             static void Main(string[] args)
06             {
07                   Console.WriteLine("Hola Mundo!");
08 
09             }
10       }
11 }



Java


01 public class HolaMundo
02 {
03     public static void main (String [ ] args)
04     {
05         System.out.println ("Hola mundo");
06      }
07 }
¿Facil no?

La web del program es http://www.andre-simon.de/index.html

También te dejo el portable por si no quieres instalar nada en tu pc, no pesa nada

EXE Portable

Enlace actualizado 18 de enero de 2013

continue reading

14/7/10

Tablas con iText

JAN29

La API de itext vista en un post anterior que nos permite crear archivos PDF desde java, cuenta con muchas otras opciones para crear estos archivos y darles formato, una de ellas, son las tablas.

Con itex podemos crear tablas sencillas y tambien tablas complejas, estas ultimas necesitas de un planeamiento previo, para que las tablas salgan como nosotros queremos y tenemos pensado.

El objeto para crear una tabla es PdfPTable, al cual podemos especificarle la cantidad de columnas que queremos. para rellenar la tabla, podemos utilizar:
mitabla.addCell("Contenido");

o para mayor control, podemos utilizarla de esta forma:

PdfPCell celda =new PdfPCell (new Paragraph("Historial de Observaciones",
                FontFactory.getFont("arial",   // fuente
                22,                            // tamaño
                Font.BOLD,                   // estilo
                BaseColor.RED)));             // color
mitabla.addCell(celda);

Itext va rellenando la tabla, celda por celda, de izquierda a derecha y de abajo a arriba, de forma secuencial. Aqui puedes encontrar mayor informacion de la API de Itext.

El Codigo:
Esta clase que se llama tablaspdf.java, contiene dos metodos, para crear archivos pdf con tablas, simples y complejas.

01 import com.itextpdf.text.BaseColor;
02 import com.itextpdf.text.Document;
03 import com.itextpdf.text.DocumentException;
04 import com.itextpdf.text.Element;
05 import com.itextpdf.text.Font;
06 import com.itextpdf.text.FontFactory;
07 import com.itextpdf.text.Paragraph;
08 import com.itextpdf.text.pdf.PdfPCell;
09 import com.itextpdf.text.pdf.PdfPTable;
10 import com.itextpdf.text.pdf.PdfWriter;
11 import java.io.File;
12 import java.io.FileNotFoundException;
13 import java.io.FileOutputStream;
14 /**
15  * @web http://jc-mouse.blogspot.com/
16  * @author Mouse
17  */
18 public class tablaspdf {
19     
20     public void tablaspdf() throws DocumentException, FileNotFoundException{         
21         // se crea instancia del documento
22         Document mipdf = new Document();
23         // se establece una instancia a un documento pdf
24         PdfWriter.getInstance(mipdf, new FileOutputStream(new File("e:/pdf/tablas.pdf")));
25         mipdf.open(); // se abre el documento
26             
27         mipdf.addTitle("Tablas con itext"); // se añade el titulo
28         mipdf.addAuthor("jc mouse"); // se añade el autor del documento
29         mipdf.addSubject("ocio"); //se añade el asunto del documento
30         mipdf.addKeywords("jc mouse"); //Se agregan palabras claves                            
31             
32         /* ahora si tablas */           
33         //mipdf.add(Tabla_Simple());
34         mipdf.add(Tabla_compleja());
35         mipdf.close(); //se cierra el PDF               
36         System.out.println("documento pdf creado");
37     }
38     
39     public PdfPTable Tabla_Simple(){    
40         //creamos la tabla con 3 columnas
41         PdfPTable mitablasimple=new PdfPTable(3);
42         //añadimos contenido a las celdas
43         mitablasimple.addCell("Enero");
44         mitablasimple.addCell("Febrero");
45         mitablasimple.addCell("Marzo");
46         mitablasimple.addCell("Abril");
47         mitablasimple.addCell("Mayo");
48         mitablasimple.addCell("Junio");
49         mitablasimple.addCell("Julio");
50         mitablasimple.addCell("Agosto");
51         mitablasimple.addCell("Septiembre");
52         mitablasimple.addCell("Octubre");
53         //retornamos la tabla
54         return mitablasimple;        
55     }
56     
57     public PdfPTable Tabla_compleja(){ 
58         //creamos una tabla con 3 columnas
59         PdfPTable mitablacompleja=new PdfPTable(3);
60         //añadimos texto con formato a la primera celda
61         PdfPCell celda =new PdfPCell (new Paragraph("Historial de Observaciones",
62                 FontFactory.getFont("arial",   // fuente
63                 22,                            // tamaño
64                 Font.BOLD,                   // estilo
65                 BaseColor.RED)));             // color
66         //unimos esta celda con otras 2
67         celda.setColspan(3);
68         //alineamos el contenido al centro
69         celda.setHorizontalAlignment(Element.ALIGN_CENTER);
70         // añadimos un espaciado
71         celda.setPadding (12.0f);
72         //colocamos un color de fondo
73         celda.setBackgroundColor(BaseColor.GRAY);
74         //se añade a la tabla
75         mitablacompleja.addCell(celda);
76         
77         //fila 2
78         celda = new PdfPCell(new Paragraph ("AUDITORIA DE SISTEMAS"));
79         celda.setColspan(2);
80         celda.setBackgroundColor(BaseColor.GREEN);
81         mitablacompleja.addCell(celda);        
82         celda = new PdfPCell(new Paragraph ("Aprobado"));        
83         celda.setBackgroundColor(BaseColor.LIGHT_GRAY);
84         mitablacompleja.addCell(celda);
85         //fila 3        
86         celda = new PdfPCell(new Paragraph ("COMPILADORES"));
87         celda.setColspan(2);
88         celda.setBackgroundColor(BaseColor.YELLOW);
89         mitablacompleja.addCell(celda);        
90         celda = new PdfPCell(new Paragraph ("Reprobado"));        
91         celda.setBackgroundColor(BaseColor.LIGHT_GRAY);
92         mitablacompleja.addCell(celda);
93         //fila 4        
94         celda = new PdfPCell(new Paragraph ("Prog. Bajo Nivel"));
95         celda.setColspan(2);
96         celda.setBackgroundColor(BaseColor.CYAN);
97         mitablacompleja.addCell(celda);        
98         celda = new PdfPCell(new Paragraph ("Eximido"));        
99         celda.setBackgroundColor(BaseColor.LIGHT_GRAY);
100         mitablacompleja.addCell(celda);
101         //fila 5
102         mitablacompleja.addCell("Conclusion");
103         celda = new PdfPCell(new Paragraph ("¡¡¡GET A LIFE!!!"));
104         celda.setHorizontalAlignment(Element.ALIGN_RIGHT);
105         celda.setColspan(2);
106         celda.setBackgroundColor(BaseColor.ORANGE);
107         mitablacompleja.addCell(celda);
108         // se retorna la tabla
109         return mitablacompleja;    
110     }
111 }


El resultado es:
Tabla Simple
Tabla con formato

continue reading

9/7/10

Problema resuelto ACM: 3n+1

JAN29

El problema dice asi:
PROBLEMA

Considerando el siguiente algoritmo

input n
print n
if n = 1 then STOP
if n is odd then  n <- 3n + 1
else n <- n/2
GOTO 2


Teniendo la entrada 22, la siguiente secuencia de números se imprimirán 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1

El ciclo termina cuando se imprime 1.

Dado un numero "n" de entrada, es posible determinar el número de números impresos (incluyendo el 1). Para un "n" dado esto se llama el ciclo de longitud de "n". En el ejemplo anterior, la duración del ciclo de 22 es 16.

Para cualquier par de números de i y j que son determinar la duración del ciclo máximo entre estos rangos.

ENTRADA
La entrada consistirá en una serie de pares de números enteros i y j, un par de enteros por línea. Todos los números enteros será inferior a 1.000.000 y mayor que 0.

Usted debe procesar todos los pares de números enteros y para cada par determinar la duración del ciclo máximo sobre todos los enteros incluyendo i y j.

Usted puede asumir que ninguna operación se desborda un entero de 32 bits.

SALIDA
Para cada par de enteros i y j debe imprimir como salida i, j, y la duración del ciclo máximo de enteros entre e incluyendo i y j. Estos tres números deben ser separados por al menos un espacio con los tres números en una línea y con una línea de salida para cada línea de entrada. Los enteros i y j deben aparecer en la salida en el mismo orden en que aparecieron en la entrada y debe ser seguido por la duración del ciclo máximo (en la misma línea).

Ejemplo:

entrada
1 10
100 200
201 210
900 1000

Salida
1 10 20
100 200 125
201 210 89
900 1000 174

[Traducido por San Google] :)

SOLUCION:


public class solucion {
    
   int mayor=1;

   public solucion(int numero1, int numero2){
    //capturamos el valor original de entrada   
    int n1=numero1;
    int n2=numero2;       
    // si n1 > n2 se invierten los valores   
    if(numero1>numero2){int tmp=numero1; numero1=numero2; numero2=tmp;}
        // los numeros deben estar entre 0 y 1000000   
        if (((numero1<=1000000) && (numero1>0))&& ((numero2<=1000000)&& (numero2>0))){
            //comienza el ciclo entre n1 y n2
            for(int i=numero1; i<=numero2;i++){
                //obtenemos el numero total de ciclos para i
                int j = ciclo(i);
                //establecemos el mayor ciclo
                if(j>mayor){
                    mayor=j;
                }
            }
            //muestra la solucion en consola
            System.out.println("Solucion " + n1 + " " + n2 + " " + mayor);
        } 
        else{
            System.out.println("EL rango de datos no es valido");
        }
   }
   
   //metodo que evalua la expresion y retorna el total del ciclo
   private int ciclo(int n){
       //establecemos un contador e 1
        int count = 1;
        //System.out.print("Para [" +n+"] Serie= ");//opcional
        //comenzamos el ciclo
        while(true){            
            //System.out.print(n+" ");//opcional
            //cuando se llegue a 1 se rompe el ciclo
            if(n==1){break;}
            if(!espar(n)){
                n = (3 * n) + 1;
            }
            else{
                n = n / 2;
            }
            count++;
        }        
        //System.out.println(" ciclos: "+ count +" ");//opcional
        return count;
    }
   
    private boolean espar(int n){
        return ((n % 2) == 0);
    }
}

Implementando la clase en el main:


public class Main {
    public static void main(String[] args) {
        new solucion(1,10);
        new solucion(100,200);
        new solucion(201,210);
        new solucion(900,1000);
        
    }
}


Nota: en la clase Solucion.java, tenemos lineas de codigo marcadas como "opcional", estas lineas de codigo solo sirven para ver con mas detalle la solucion del problema, por ejemplo con esas lineas habilitadas para entrada (1,10), tenemos:


Más vale post publicado que cientos preparados.

continue reading

6/7/10

Reproductor MP3 en java con Playlist

JAN29


Como muchos me pidieron un reproductor de mp3 con un playlist, ahora dejo a consideracion de los programadores el codigo fuente completo hecho con netbeans 6.0 y la api de Java Media.

Hasta la fecha ya deje muchos tutoriales sobre como utilizar esa API, asi que no veo la razon de redundar sobre lo mismo, por ese motivo en esta ocasion solamente dejare el codigo fuente para que sea examinado por ustedes, claro esta el codigo esta extra comentado y lo mas simple posible, y si siguen los tutos que hice creo que no habra donde perderse, ademas de que examinar el codigo fuente y ver como funciona  es una buena practica de INGENIERIA INVERSA que todo programador debe conocer.

Este reproductor tiene la capacidad de abrir archivos mp3 y cargarlos en un playlist para poder reproducirlos uno por uno, ademas tiene implementados los controles Preview y Next para poder pasar de una cancion a otra  con un simple clic, las canciones pueden ser reproducidas desde el boton PLAY o haciendo doble clic en el archivo seleccionado en el playlist. 

Dicho esto no queda mas que dejar un video de como quedo el reproductor
La interfaz que se ve es gracias al skin de Substance, esta libreria junto a las demas librerias de JMF estan en el RAR, asi que no queda mas que decir sino que a bajarselo y estudiarlo.
Click para descargar
Enlaces vivitos y coleando ;)

continue reading

Post recomendado