Calculadora convertir pesos colombianos en dolares y euros

Por Saiyine Enviar correo el 2010-05-06 09:23:53 - Secciones: JAVASCRIPT UTILERIAS - Enlace permanente: 920

Dado el exito de la calculadora de conversion entre dolares y euros, he pensado que quizás estaria bien poder convertir entre otras monedas, y dado que el ultimo comentario de la calculadora pedia pesos colombianos, me he decidido por ellos.

Esta version de la calculadora es sencillisima de usar, solo teneis que escribir la moneda que querais convertir, por ejemplo, pesos colonbianos, y automaticamente saldran las conversiones en las otras monedas, es decir, en dolares y euros. ¡No hay manera mas facil de convertir pesos colombianos en dolares y euros!

SocializerMenefante Del.icio.us Digg Ver los comentarios

Obtener enteros de la consola en Java

Por Saiyine Enviar correo el 2010-02-22 11:12:32 - Secciones: JAVA - Enlace permanente: 909

Una chuletilla de ejemplo para tener a mano como se leen enteros de la entrada de linea en Java.

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 *
 * @author Saiyine
 */
public class PedirEnteros
{

    public PedirEnteros()
    {
    }

    public int obtener()
    {
        String linea = null;
        int val = 0;
        try
        {
            BufferedReader is = new BufferedReader(new InputStreamReader(System.in));
            linea = is.readLine();
            val = Integer.parseInt(linea);
        } catch (NumberFormatException nfex)
        {
            System.err.println("No es un entero: " + linea);
        } catch (IOException ioex)
        {
            System.err.println("Error de entrada salida: " + ioex);
        }
        return val;
    }

    public static void main(String[] args)
    {
        PedirEnteros pe = new PedirEnteros();
        int entero1 = pe.obtener();
        int entero2 = pe.obtener();
        System.out.println(entero1);
        System.out.println(entero2);
    }
}

A petición de un comentario, aunque es sencillisimo.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Descubrir los numeros primos existentes entre dos enteros dados

Por Saiyine Enviar correo el 2010-02-22 11:09:49 - Secciones: JAVA - Enlace permanente: 908

Este sencillo codigo busca los numeros primos que se pueden encontrar dentro de un rango dado por dos enteros.

/**
 *
 * @author Saiyine
 */
public class BuscarPrimos
{
    public BuscarPrimos()
    {
    }

    public boolean esPrimo(int p)
    {
        if (p>1)
        {
            int top=(int)Math.round(Math.sqrt(p))+1;
            for (int i=2;i<=top;i++)
                if ((p % i == 0) && ( p != i))
                {
                    return false;
                }
            return true;
        }
        return false;
    }

    public void rango(int a, int b)
    {
        for (int i=a;i<=b;i++)
            if (esPrimo(i))
            {
                System.out.println(i);
            }
    }

    public static void main(String[] args)
    {
        BuscarPrimos bp = new BuscarPrimos();
        bp.rango(0, 200);
    }
}

No tiene mucho misterio, aunque yo usaria programación dinamica para obtener el listado de enteros.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Converting euros to dollars

Por Saiyine Enviar correo el 2009-07-19 05:17:27 - Secciones: TOOLS ENGLISH JAVASCRIPT CURRENCY - Enlace permanente: 881

Dreamhost

This is an easy to use tool to know the equivalency between dollars and euros.

How it works: just write the amount you want to know the exchange, and push the button corresponding to the other currency, and that's it. Like, if you have 80.40 dollars and want to know its value in euros, write it in the space left to the button called "Dollars", press it, and the value in Euros will appear.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Buscando el pseudo-punto fijo del MD5 en Java

Por Saiyine Enviar correo el 2009-05-10 08:15:57 - Secciones: JAVA MD5 PROGRAMACION - Enlace permanente: 874

Dreamhost

Esta es mi entrada para el reto de encontrar el punto fijo de MD5 que mencionaron el otro dia en programming.reddit. No es un código muy limpio, sino más bien una prueba de concepto para ver que tal se portaba Java... y se porta tres ordenes de magnitud más lento que las implementaciones en C tirando de OpenSSL que usa el ganador (amén de una granja de P4).

En mi maquina de casa, este código me saca unas 44.000 sumas por segundo por nucleo, muy lejos de los millones por segundo de las versiones en código nativo.

package com.saiyine.experimentos.md5;

import java.security.MessageDigest;
import java.util.Random;
import java.util.Timer;
import java.util.TimerTask;

public class Sumador
{
    static String hex = "01234567890abcdef";
    static Random r = new Random();
    static MessageDigest md;
    static int contador = 0;
    static long tiempo = 60;
   
    public Sumador()
    {
        try
        {
            md = MessageDigest.getInstance( "MD5" );
        } catch ( Exception e)
        {
            e.printStackTrace();
        }
    }
   
    public String md5(String cadena)
    {
        String aux ="";
            md.update( cadena.getBytes() );
            byte[] digest = md.digest();
            String moco = "";
            for ( byte b : digest )
            {
                moco = moco +","+( b & 0xff );
                String aux2 =(Integer.toHexString( b & 0xff ));
                while (aux2.length()<2)
                {
                    aux2="0"+aux2;
                }
                aux=aux+aux2;
            }
            md.reset();
        return aux;
    }

    public static int parecido(String cadena1, String cadena2, int imprimir)
    {
        int aux = -1;
        for (int i=0;i<32; i++)
        {
            cadena1 = cadena1.substring(1, 32) + cadena1.charAt(0);
            int contador = 0;
            for (int j=0;j<32; j++)
            {
                if (cadena1.charAt(j) == cadena2.charAt(j))
                {
                    contador++;
                } else
                {
                    contador=0;
                }
            }
            if (contador>aux)
                aux=contador;
        }
        if (aux > imprimir)
        System.out.println(cadena1+" - "+cadena2+ " "+aux);
        return aux;
    }
   
    public static char hexa()
    {
       int i = r.nextInt(15);
        return hex.charAt(i);
    }   
   
    public static String azar(String cadena)
    {
        return hexa() + cadena.substring(0,cadena.length()-1);
    }   
   
    public static void main(String[] args)
    {
        Sumador s = new Sumador();
       
        Timer t = new Timer();
        TimerTask task = new TimerTask()
        {
            public void run()
            {
                System.out.println((contador/tiempo)+" comprobaciones/segundo");
                contador=0;
            }
        };
        t.schedule(task, tiempo * 1000, tiempo * 1000);                 
       
        String cadena1 = s.md5(""+(r.nextLong()*r.nextLong()*r.nextLong()));
        String cadena2 = null;
           
        while (true)
        {
            cadena1 = azar(cadena1);
            cadena2 = s.md5(cadena1);
            parecido(cadena1,cadena2,8);
            contador++;
        }
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Pasar un numero variable de parametros en Java

Por Saiyine Enviar correo el 2009-04-06 08:13:20 - Secciones: JAVA PROGRAMACION - Enlace permanente: 871

Dreamhost

Via Mundogeek descubro que desde hace unos añitos, parece ser que desde la especificación Java 1.5, se puede pasar un número variable de parámetros a cualquier método.

En realidad se convierte en un array en tiempo de compilación, pero que se le va a hacer, algo es algo. Además, puntos extra por utilizar un foreach para la demostración.

public class Conjunto 
{
    public Conjunto(String... cadenas)
    {
        for (String cadena : cadenas)  
              System.out.println(cadena);  
    }
    
    public static void main(String... args) 
    {
        Conjunto saludos = new Conjunto("Hola", "Ciao", "Hello");
        Conjunto mascotas = new Conjunto("Pulpo");
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Cambiar una imagen al pasar un ratón por encima en Javascript

Por Saiyine Enviar correo el 2009-01-26 08:24:53 - Secciones: JAVASCRIPT - Enlace permanente: 859

Dreamhost

Este es un truco bastante sencillo, pero que puede usarse para efectos muy interesantes, como los típicos botones difuminados que se definen al pasar el ratón por encima, o el ya clásico de la hilera de iconos que el icono que tiene el puntero de ratón encima es mayor que los demás.

    

El código, muy simple, seria algo como:

<img src="imagen1.jpg"
                id="img"
                onmouseover="img.src='imagen2.jpg'"
                onmouseout="img.src='imagen1.jpg';">

SocializerMenefante Del.icio.us Digg Ver los comentarios

Convertir imagen en circulitos en Processing

Por Saiyine Enviar correo el 2008-12-30 02:52:02 - Secciones: PROCESSING JAVA APPLET GRAFICOS PROGRAMACION - Enlace permanente: 856

Dreamhost

Como lo prometido es algo que debe cumplirse, aqui llevais mi primera obra maestra en Processing.

Aunque la primera impresión es que el entorno de programación es una porqueria, y a los 10 minutos ya estaba revisando si se le puede echar mano al código fuente y hacer que el cortar y pegar funcione como dios manda, tengo que admitir que la idea en si es bastante buena: una abstracción basada en la maquina virtual de Java para trabajar con gráficos.

Todo funciona al pelete, aunque igual la ayuda es un poco petarda y el entorno es una mierda. Es sopar unos cuantos ejemplos y ya lo tienes todo para concentrarte en trabajar con imagenes directamente con los valores RGB de cada punto. A ver si encuentro mis viejos programas en Pascal de cuando programar en VGA con 256 colores era tirar un puntero y a jugar, y los vuelvo a la vida con este programazo.

¡Además punto extra porque uno de los dos tipos que han montado esto se apellida Fry! ¡Jugón!

This browser does not have a Java Plug-in.
Get the latest Java Plug-in here.


Necesita Java. Pincha en la foto con el ratón.

/**
 * CircleandoVisible
 *
 * - Un sencillo para ir aprendiendo a manejar Processing
 * Lee una imagen, y convierte pixeles al azar en circulos de 10 pixeles de diametro al pulsar el ratón
 */

// Variable a la que queremos que pueda acceder todo el programa
PImage img;

void setup()
{
  // Carga la imagen de ejemplo
  img = loadImage("f16.jpg");
  
  // El tamaño de la pizarra será igual que el de la imagen
  size(img.width, img.height);

  // La usamos de fondo
  image(img, 0, 0);

  // Queremos un diseño sin bordes  
  smooth();

  // No ejecutamos el bucle (solo redibujamos con el ratón pulsado)  
  noLoop();
}

void draw()
{
  for(int i = 0; i < 100; i++)
  {
    int x1 = int(random(0, width));
    int y1 = int(random(0, height));
    strokeWeight(10);
    stroke(color(img.pixels[y1*img.width + x1]), 128);
    point(x1,y1);
  }
}

void mousePressed()
{
  loop();
}

void mouseReleased()
{
  noLoop();
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Como hacer un beep de windows en Java

Por Saiyine Enviar correo el 2008-08-19 02:46:58 - Secciones: JAVA - Enlace permanente: 845

Hacer sonar la campana de windows, o mejor dicho, el sonido asociado al evento campana, desde Java, es bastante fácil, solo teneis que usar la siguiente linea:

Toolkit.getDefaultToolkit().beep();

Recordad que, al ser un método gráfico, debeis incluir lo siguiente al comienzo de vuestra clase:

import java.awt.*;

SocializerMenefante Del.icio.us Digg Ver los comentarios

Formula para el cansancio de los jugadores

Por Saiyine Enviar correo el 2008-06-17 12:07:06 - Secciones: GOALUNITED JAVASCRIPT UTILERIAS - Enlace permanente: 838

Dreamhost

A raiz de esta entrada del foro de goalunited en la que se comenta una formula para optimizar los entrenamientos, me he decidido a compartirla en la web por si a alguien le pudiera interesar.

Bueno, la verdad es que lo primero que he pensado ha sido probar a poner una aplicación ROR en heroku, pero es solo de invitación, así que habrá que contentarse con un sencillo javascript de los de toda la vida.

Esto va así: introducid en las casillas la habilidad, experiencia y motivación de vuestro Segundo Entrenador, y obtendreis un número, que he llamado Capacidad por llamarlo de alguna manera, que, presuntamente, si es menor que 1, te permitirá entrenar una habilidad sin descanso tantos cuadraditos como le hayas puesto.

Cuadritos:

Habilidad:

Experiencia:

Motivacion:

Entrenador: 0

Capacidad: 1.35

SocializerMenefante Del.icio.us Digg Ver los comentarios

Eclipse no autocompleta

Por Saiyine Enviar correo el 2008-05-12 07:29:46 - Secciones: JAVA ECLIPSE - Enlace permanente: 822

Dreamhost

¡Mi eclipse ha dejado de auto-completar! Por alguna razón, el entorno de programación Eclipse deja de autocompletar el código que vamos escribiendo.

Estamos programando y de repente, sin comerlo ni beberlo, Eclipse deja de mostrar los métodos que tiene a su disposición el objeto que acabamos de escribir. Como mucho, nos muestra un error diciendo que la linea no puede acabarse así, por las buenas, con un punto.

Para solucionarlo, id a: Window -> Preferences -> Java -> Editor -> Content Assistant -> Advanced y pulsad en Restore defaults. ¡Eso deberia hacer el milagro!

SocializerMenefante Del.icio.us Digg Ver los comentarios

Arrancando correctamente los hilos en Java

Por Saiyine Enviar correo el 2008-01-06 02:47:12 - Secciones: JAVA THREADS - Enlace permanente: 811

Dreamhost

En relación a la entrada "Ejecutar en segundo plano usando hilos (threads)", me gustaria comentar que un error muy común, que ha sido perpetuado por algún libro de texto, es creer que los métodos run y start de los hilos son equivalentes. Nada más lejos de la realidad, como os muestro con este ejemplo.

public class ThreadsEjemplo2 extends Thread
{
    
    public ThreadsEjemplo2(String str)
    {
        super(str);
    }
    
    public void run()
    {
        for (int i = 0; i < 10 ; i++)
        {
            try
            {
                Thread.sleep(Math.round(Math.random()*200));
            } catch (Exception E)
            {
               
            }
                System.out.println(getName());
        }
            System.out.println("Fin " + getName());
    }
    
    public static void main (String [] args)
    {
        new ThreadsEjemplo2("A").run();
        System.out.println("Y ahora los demás");
        new ThreadsEjemplo2("B").start();
        new ThreadsEjemplo2("C").start();
        new ThreadsEjemplo2("D").start();
    }
}

La salida de esta clase nos muestra claramente que primero se ejecuta el primer "hilo", que no es tal, sino una ejecución lineal normal y corriente debido a la llamada incorrecta a al método run en vez de al start, y luego si se lanzan los otros tres como debe ser.

A
A
A
A
A
A
A
A
A
A
Fin A
Y ahora los demás
B
D
B
C
D
B
C
C
D
B
B
C
D
B
C
B
C
D
B
C
B
D
B
Fin B
D
C
D
C
D
D
Fin D
C
Fin C

Aaah, está bien, lo admito: me pasó a mi el otro día y lo he escrito más como autorecordatorio que otra cosa.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Calcular la letra del DNI

Por Saiyine Enviar correo el 2007-12-23 04:35:03 - Secciones: JAVASCRIPT - Enlace permanente: 807

Dreamhost

La letra del DNI sirve para validar que el DNI introducido es correcto y no una simple invención, siendo bastante fácil de calcular, ya que es un simple resto codificado del número.

Para obtener DNIs válidos, introducid numeros cualesquiera en el siguiente espacio habilitado:

Y, a continuación, el código fuente para que hagais los experimentos pertinentes...

<head>
<script>
function objeto(id)
{
  return document.getElementById(id);
}

function verletra()
{
        cadena="TRWAGMYFPDXBNJZSQVHLCKET";
        posicion = objeto("dni").value % 23;
        letra = cadena.substring(posicion,posicion+1);
        objeto("dnidiv").innerHTML = objeto("dni").value+" - "+letra;
}
</script>
</head>
<body>
DNI:<br>
<input type="text" id="dni" maxlenght="9" size="9" onkeyup="verletra()">
<h1><div id="dnidiv"></div></h1>
</form>
</body>

SocializerMenefante Del.icio.us Digg Ver los comentarios

Writing text into a file in Java

Por Saiyine Enviar correo el 2007-12-22 06:22:08 - Secciones: JAVA ENGLISH - Enlace permanente: 806

Dreamhost

The easiest way to write text into a file with Java is shown in the next code.

  try
  {
    BufferedWriter out = new BufferedWriter(new FileWriter("outfilename"));
    out.write("aString");
    out.close();
  }
  catch (IOException e)
 {
 }

Beware that this code will overwrite the file.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Escribir en un fichero en Java

Por Saiyine Enviar correo el 2007-12-22 06:21:34 - Secciones: JAVA - Enlace permanente: 805

Dreamhost

La manera más sencilla de escribir texto en un fichero en Java parece ser la siguiente.

  try
  {
    BufferedWriter out = new BufferedWriter(new FileWriter("nombre del fichero"));
    out.write("cadena");
    out.close();
  }
  catch (IOException e)
 {
 }

Ojo que este código sobreescribirá el fichero si ya existe.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Evitando el java.lang.OutOfMemoryError

Por Saiyine Enviar correo el 2007-11-10 12:27:37 - Secciones:  JAVA  - Enlace permanente: 798

Si tu programa en Java se queda sin memoria suficiente, tiene lugar el siguiente error:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

Se puede deber a dos motivos:

   * Que tu aplicación en Java tenga una perdida de memoria. Toca buscar el problema en el código, en breve os haré un post comentando el profiler que suelo usar, que me parece genial aunque a 400€ por licencia no creo que esté al alcance de todo el mundo.
   * Que tu programa realmente necesite un montón de memoria. En este caso, la memoria disponible la puedes incrementar llamando a la maquina virtual con estos parametros:

java -Xms<tamaño de inicio de la memoria> -Xmx<tamaño máximo>

Por defecto tenemos:

java -Xms32m -Xmx128m

Estos parametros se pueden pasar en diferentes puntos dependiendo del entorno que utilicemos para programar.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Memoria libre en Java

Por Saiyine Enviar correo el 2007-11-10 12:15:29 - Secciones:  JAVA  - Enlace permanente: 797

Dreamhost

Conocer la cantidad de memoria libre en un programa Java es realmente sencillo:

public class Memoria
{
  public static void main(String[] args)
  {
    System.out.println("Total: "+Runtime.getRuntime().totalMemory());    
    System.out.println("Libre: "+Runtime.getRuntime().freeMemory());
  }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Calling hierarchy in Java

Por Saiyine Enviar correo el 2007-10-20 06:45:13 - Secciones:  JAVA ENGLISH  - Enlace permanente: 796

Dreamhost

With the next code you'll be able to know the calling hierarchy at runtime, or, in layman's words, who the heck is calling your code while the program is running. It has a problem, tough: it only works for Java 5 or better.

public class Llamadas
{
        static public void fin()
        {
                StackTraceElement trace[] = Thread.currentThread().getStackTrace();
                for (StackTraceElement St : trace)
                {
                        System.out.println(St);
                }
        }
       
        static public void salto()
        {
                fin();
        }
       
        public static void main(String[] args)
        {
                salto();
        }
}

Should print something like...

java.lang.Thread.getStackTrace(Unknown Source)
pruebas.Llamadas.fin(Llamadas.java:7)
pruebas.Llamadas.salto(Llamadas.java:16)
pruebas.Llamadas.main(Llamadas.java:21)

The code is extremely simple: the main class calls salto, who itself calls the fin method. This fin method contains a foreach wich prints the return from a call to getStackTrace, the subroutine call stack.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Jerarquia de llamada en Java

Por Saiyine Enviar correo el 2007-10-20 06:37:48 - Secciones:  JAVA  - Enlace permanente: 795

Dreamhost

Con el siguiente código podreis conocer la jerarquia de llamada de vuestro código en tiempo de ejecución, con la única limitación de que solo funciona a partir de Java 5:

public class Llamadas
{
        static public void fin()
        {
                StackTraceElement trace[] = Thread.currentThread().getStackTrace();
                for (StackTraceElement St : trace)
                {
                        System.out.println(St);
                }
        }
       
        static public void salto()
        {
                fin();
        }
       
        public static void main(String[] args)
        {
                salto();
        }
}

Deberia devolver algo como...

java.lang.Thread.getStackTrace(Unknown Source)
pruebas.Llamadas.fin(Llamadas.java:7)
pruebas.Llamadas.salto(Llamadas.java:16)
pruebas.Llamadas.main(Llamadas.java:21)

El programa es extremadamente sencillo: la clase principal llama al método salto, que a su vez llama al método fin, que es el que contiene la llamada a getStackTrace, que es ni más ni menos que la pila de llamadas de subrutina.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Adjusting the priority of threads in Java

Por Saiyine Enviar correo el 2007-08-23 12:14:10 - Secciones:  JAVA ENGLISH  - Enlace permanente: 789

With the next code we'll be able to control the priority our Java program's threads run.

    Thread me = Thread.currentThread();
    me.setPriority(Thread.MIN_PRIORITY);

For the example we've used the minimun priority, so every other process will have preference for CPU time but this. To check the others priority levels, look at the Thread object with an object inspector, or use an IDE with the ability of showing avaliable methods as you program, like Eclipse.

There's a problem: JDK has 10 priority levels, while every OS has its own number. For example, Windows NT has seven and is not uncommon for a Unix system to be in the hundreds. The best approach is to stick to MAX_PRIORITY, NORM_PRIORITY and MIN_PRIORITY within the code.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Controlar la prioridad de los hilos en Java

Por Saiyine Enviar correo el 2007-08-23 12:13:41 - Secciones:  JAVA  - Enlace permanente: 788

Dreamhost

Con el siguiente código podremos controlar la prioridad con que corren los hilos, o threads, de nuestros programas Java.

    Thread me = Thread.currentThread();
    me.setPriority(Thread.MIN_PRIORITY);

Para el ejemplo hemos usado la prioridad minima, es decir, que cualquier otro proceso tenga preferencia en la cpu antes que nuestro hilo. Para ver otros niveles de prioridad, consulta el objeto Thread con un inspector de objetos, o usa un entorno de programacion que muestre los metodos disponibles conforme se escribe, como Eclipse.

Pero hay un problema, la maquina virtual de Java tiene 10 niveles de prioridad que no tienen porqué coincidir con los del sistema operativo sobre el que está corriendo. Por ejemplo, Windows NT tiene siete, y no es nada raro que un sistema Unix tenga cientos. Por ello, lo mejor es utilizar solo MAX_PRIORITY, NORM_PRIORITY y MIN_PRIORITY en su codigo.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Running background code in Java with Runnable

Por Saiyine Enviar correo el 2007-07-05 02:46:04 - Secciones:  JAVA ENGLISH  - Enlace permanente: 782

Within Java, there are three main ways you can execute background threads: to inherit from the Thread class, to implement the Runnable interface and the TimerTask object.

This second example shows the second way, which is implementing the Runnable interface, that is almost identical to inheriting from Thread. What's its use, then? Easy, Java doesn't support multiple inheritance, so if we only had the Thread way we would be stuck without being able of accessing others classes in this way. So here comes implementing the Runnable interface, wich allows us inheriting from wichever class we want AND running the class in the background if we want to.

The code is fairly easy, and very similar to the Thread's. See that we use implementand not extends when declaring the class.

public class ThreadSample implements Runnable
{
    public void run()
    {
        for (int i = 0; i < 5000 ; i++)
            System.out.println(i + " " + Thread.currentThread().getName());
        System.out.println("End of thread " + Thread.currentThread().getName());
    }
    public static void main (String [] args) {
        new Thread ( new ThreadSample() , "+").start();
        new Thread ( new ThreadSample() , "-").start();
        new Thread ( new ThreadSample() , ":").start();
        new Thread ( new ThreadSample() , "*").start();
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Ejecutar en segundo plano usando hilos (runnable)

Por Saiyine Enviar correo el 2007-07-05 02:33:01 - Secciones:  JAVA  - Enlace permanente: 781

Dreamhost

En Java, existen tres formas principales para ejecutar tareas en segundo plano: heredar la clase Thread, implementar la interfaz Runnable y la clase TimerTask.

En este segundo ejemplo os muestro la segunda variante, que es la implementación de la interfaz Runnable, que es practicamente igual que heredar de Thread. ¿Que sentido tiene, entonces? Pues muy sencillo, en Java solo se puede heredar de una clase, así que si nuestra tarea hereda de alguna otra, tendriamos que descartar el método de la clase Thread. Pero podemos, además de heredar, implementar una interfaz, y ahí entra Runnable.

El código es muy sencillo, y muy similar al ejemplo de Thread. Observad que usamos implement y no extends en la llamada de la clase.

public class ThreadSample implements Runnable
{
    public void run()
    {
        for (int i = 0; i < 5000 ; i++)
            System.out.println(i + " " + Thread.currentThread().getName());
        System.out.println("End of thread " + Thread.currentThread().getName());
    }
    public static void main (String [] args) {
        new Thread ( new ThreadSample() , "+").start();
        new Thread ( new ThreadSample() , "-").start();
        new Thread ( new ThreadSample() , ":").start();
        new Thread ( new ThreadSample() , "*").start();
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Running background code in Java with Threads

Por Saiyine Enviar correo el 2007-07-03 03:22:42 - Secciones:  JAVA ENGLISH  - Enlace permanente: 779

Dreamhost

Within Java, there are three main ways you can execute background threads: to inherit from the Thread class, to implement the Runnable interface and the TimerTask object.

This first example shows how to use the inheritance of the Thread class. Copy-paste it into your editor of choice and check how easy is to create alternative threads to your program main's. Look how the threads concurrency makes the threads output get mixed at the console: probably it'll become more aparent by increasing the top of the for.

public class ThreadEjemplo extends Thread
{
    
    public ThreadEjemplo(String str)
    {
        super(str);
    }
    
    public void run()
    {
        for (int i = 0; i < 100 ; i++)
            System.out.println(getName());
        System.out.println("Fin " + getName());
    }
    
    public static void main (String [] args)
    {
        new ThreadEjemplo("A").start();
        new ThreadEjemplo("B").start();
        new ThreadEjemplo("C").start();
        new ThreadEjemplo("D").start();
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Ejecutar en segundo plano usando hilos (threads)

Por Saiyine Enviar correo el 2007-07-03 03:16:44 - Secciones:  JAVA  - Enlace permanente: 778

Dreamhost

En Java, existen tres formas principales para ejecutar tareas en segundo plano: heredar la clase Thread, implementar la interfaz Runnable y la clase TimerTask.

Este primer ejemplo muestra como usar la herencia de la clase Thread. Copiad al portapapeles, pegad en vuestro editor, y comprobar lo sencillo que es crear hilos de ejecucion alternativos al principal de vuestro programa. Observad como se ejecutan concurrentemente de manera que sus salidas se mezclan en pantallas, probablemente será más evidente conforme mayor sea el bucle de ejecución.

public class ThreadEjemplo extends Thread
{
    
    public ThreadEjemplo(String str)
    {
        super(str);
    }
    
    public void run()
    {
        for (int i = 0; i < 100 ; i++)
            System.out.println(getName());
        System.out.println("Fin " + getName());
    }
    
    public static void main (String [] args)
    {
        new ThreadEjemplo("A").start();
        new ThreadEjemplo("B").start();
        new ThreadEjemplo("C").start();
        new ThreadEjemplo("D").start();
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Añadir lineas a un fichero de texto en Java

Por Saiyine Enviar correo el 2007-06-11 03:16:37 - Secciones:  JAVA  - Enlace permanente: 770

Dreamhost

Añadir lineas a un fichero de texto es tan sencillo como el código que os presento a continuación:

        try
        {
                BufferedWriter out = new BufferedWriter(new FileWriter("fichero", true));
                out.write("linea de texto");
                out.close();
        } catch (IOException e)
        {
        }

SocializerMenefante Del.icio.us Digg Ver los comentarios

Alto y ancho de la pantalla en Java

Por Saiyine Enviar correo el 2007-06-11 02:25:34 - Secciones:  JAVA  - Enlace permanente: 769

Dreamhost

Obtener el ancho y alto de la pantalla en Java es bastante fácil, solo tenemos que acceder al toolkit que estemos usando en nuestro programa, es decir, a la libreria que se encarga de dibujar los botones, ventanas y demás en la pantalla.

...
   int ancho = java.awt.Toolkit.getDefaultToolkit().getScreenSize().width;
   int alto = java.awt.Toolkit.getDefaultToolkit().getScreenSize().height;
...

SocializerMenefante Del.icio.us Digg Ver los comentarios

Saber si un fichero existe, o no, en Java

Por Saiyine Enviar correo el 2007-05-31 03:31:21 - Secciones:  JAVA  - Enlace permanente: 765

El siguiente código os dirá si un fichero dado existe en el sistema.

import java.io.*;

public class ExisteFichero
{
  public static void main(String args[])
  {
    if (new File(args[0]).exists())
    {
      System.out.println("El fichero existe.");
    } else
    {
      System.out.println("El fichero NO existe.");    
    }
  }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Quien es el estupido ahora

Por Saiyine Enviar correo el 2007-05-21 03:48:59 - Secciones:  PRINCIPAL AJAX JAVASCRIPT IMAGENES  - Enlace permanente: 763

Dreamhost

Bien, en vista del exito del contador pseudo-falso del otro dia, me he decidido a escribir, y cuando digo escribir me refiero, naturalmente, a pagarle a un chino para que me lo escriba, lo que creo que es el primer Ajax de la historia de la página de Saiyine. Si, se lo que estais pensando, vais a hacer la tipica broma de "Ajax, el de la Iliada", pero no, tambien se llama Ajax a hacer virguerias en javascript sin tener que recargar la página. Si, tambien es un detergente. Y un equipo de fútbol.

A menudo me preguntan como es posible que despues de todo el dia tecleando por dinero, llegue a mi casa y me ponga a teclear por placer. Es probable que la respuesta tenga relación con que nadie me lo ha preguntado nunca, pero prefiero pensar que se debe al simple hecho de que me gusta programar y que se me haga la una de la mañana haciendo cositas como este contador Ajax... cuyo código fuente explicado lo colgaré en unos dias, si alguien no pudiese o pudiera esperar para verlo, que le eche una visual a las interioridades de la página con el navegador.

Basicamente, lo que he hecho es un .php que me dice cuantas visitas llevo, y con el Ajax lo llamo cada 30 segundos. Mucho más sencillo de lo que esperaba, la verdad.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Visitando que es gerundio

Por Saiyine Enviar correo el 2007-05-14 03:55:47 - Secciones:  PRINCIPAL VIDEOS JAVASCRIPT  - Enlace permanente: 760

Dreamhost

Ni una patada rotatoria de Chuck Norris podría expresar lo que siento en estos momentos, y no, no me refiero a la cancelación del proyecto de hacer un remake del clásico del cine El-Hombre con Brad Pitt como protagonista, sino al hecho de que en unos dias romperemos la barrera sónica de las 500.000 visitas.

500.000

Me hubiera gustado montar algo tipo lo que tienen los de devianart para simular el conteo, pero, lamentablemente, 2.000 visitas al dia son una cada 46 segundos, por lo que hubiera sido bastante soso. Pero bueno, para compensar os dejo esta tonteria en javascript y un video cortesia de Tapanez.

(El código fuente del pseudo-contador, en breve explicado en un post propio)

Alex Gaudino Ft Crystal Waters- Destination Calabria

SocializerMenefante Del.icio.us Digg Ver los comentarios

To read data from an URL with JAVA

Por Saiyine Enviar correo el 2007-03-05 04:20:33 - Secciones:  JAVA ENGLISH  - Enlace permanente: 752

Dreamhost

To read the data inside a file from the Web with Java is fairly easy. Just create an URL object (remember to import java.io.* to have it avaliable for your code) and tunnel its stream to the usual InputStreamReader.

Just be aware that it doesn't seem to support HTTP authentication!

import java.net.*;
import java.io.*;

public class URLReader
{
  public static void main(String[] args) throws Exception
  {
    URL pagina = new URL("http://www.google.com/");
    BufferedReader in = new BufferedReader
         (new InputStreamReader(pagina.openStream()));
    String entrada;
    while ((entrada = in.readLine()) != null)
      System.out.println(entrada);
    in.close();
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Leer datos de una URL en java

Por Saiyine Enviar correo el 2007-03-05 04:19:46 - Secciones:  JAVA  - Enlace permanente: 751

Dreamhost

Leer los datos contenidos en un fichero de la Web en Java es bastante fácil. Simplemente, crea un objeto URL (recuerda importar java.io.* para tenerlo disponible para tu código) y envialo como entrada al típico InputStreamReader.

¡Una cosa a tener en cuenta es que no parece soportar autentificación HTTP!

import java.net.*;
import java.io.*;

public class URLReader
{
  public static void main(String[] args) throws Exception
  {
    URL pagina = new URL("http://www.google.com/");
    BufferedReader in = new BufferedReader
         (new InputStreamReader(pagina.openStream()));
    String entrada;
    while ((entrada = in.readLine()) != null)
      System.out.println(entrada);
    in.close();
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Change the default java virtual machine in a Ubuntu Linux install

Por Saiyine Enviar correo el 2007-01-03 12:48:03 - Secciones:  LINUX UBUNTU JAVA ENGLISH  - Enlace permanente: 743

Dreamhost

Sometimes, we need to use a selected Java virtual machine, and rarely is the Ubuntu's preinstalled, gij, but the official from Sun. To solve it should be as easy as installing the appropiated .deb packages, but it won't work, we install them and still get gij instead of Sun's.

To get to use the JVM from Sun we'll have to run the next command, forgotten for some reason by the java package maintainers:

sudo update-alternatives --config java

We'll be offered the different installed JVM and then, just have to choose our favourite.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Cambiar la maquina virtual por defecto en Linux Ubuntu

Por Saiyine Enviar correo el 2007-01-03 12:42:08 - Secciones:  LINUX UBUNTU JAVA  - Enlace permanente: 742

Dreamhost

A veces, necesitamos usar una maquina virtual de Java en particular, y raramente se trata de la que nuestra Ubuntu nos ofrece por defecto, gij, sino la oficial de Sun. Solucionarlo deberia ser tan sencillo como instalar los paquetes .deb, pero algo no marcha, los instalamos y al ejecutar seguimos obteniendo la dichosa gij.

Para conseguir usar la máquina de Sun deberemos ejecutar el siguiente comando, que por alguna razón a los mantenedores del paquete .deb se les olvidó incluir en el proceso de instalación:

sudo update-alternatives --config java

Nos aparecerá un menú en el que elegir nuestra máquina virtual por defecto, y a funcionar.

SocializerMenefante Del.icio.us Digg Ver los comentarios

CLI output staying at the same line

Por Saiyine Enviar correo el 2006-10-25 02:57:53 - Secciones:  JAVA ENGLISH  - Enlace permanente: 715

Dreamhost

Sometimes, we need our text mode's program to keep showing the data in a single line without feeding, just like the DOS era compressors (think PkZip).

This is really easy to do with console commands, like the one to come back to the begining of the line without line feeding.

        for (int i=0; i<10; i++)
        {
                System.out.print("this is line " + i + "\r");
        }
        System.out.println();   

SocializerMenefante Del.icio.us Digg Ver los comentarios

Salida en modo texto se mantiene en la misma linea

Por Saiyine Enviar correo el 2006-10-25 02:57:15 - Secciones:  JAVA  - Enlace permanente: 714

Dreamhost

A veces, necesitamos que la salida de nuestro programa modo texto se muestre siempre en la misma linea, y que solo avance cuando se llegue a un determinado punto de ejecución, a lo pkzip.

Esto es fácil de lograr usando los comandos de consola, en este caso, el de volver al inicio de linea sin avanzar.

        for (int i=0; i<10; i++)
        {
                System.out.print("this is line " + i + "\r");
        }
        System.out.println();   

SocializerMenefante Del.icio.us Digg Ver los comentarios

Knowing what key has been pressed

Por Saiyine Enviar correo el 2006-10-25 02:54:49 - Secciones:  JSCRIPT JAVASCRIPT ENGLISH  - Enlace permanente: 713

Dreamhost

To get to know what key has been pressed in a web page is fairly easy. Just assign a variable to the onkeypressed event and read it, being careful to respect the diference between JScript of internet explorer and the real Javascript from other browsers. That's the meaning of the if conditional lines.

<script language="JavaScript">
<!--

document.onkeypress = keyhandler;

function keyhandler(e) {
    if (document.layers)
        Key = e.which;
    else
        Key = window.event.keyCode;
    if (Key != 0)
        alert("Key pressed! ASCII-value: " + Key);
}
//-->
</script>

SocializerMenefante Del.icio.us Digg Ver los comentarios

Saber que tecla ha sido pulsada

Por Saiyine Enviar correo el 2006-10-25 02:54:05 - Secciones:  JSCRIPT JAVASCRIPT  - Enlace permanente: 712

Averiguar que tecla ha sido pulsada en una página web es fácil. Simplemente, asigna una variable al evento onkeypressed y leelo, con cuidado de respetar la diferencia entre el JScript de internet explorer y el Javascript real de otros navegadores. Para eso son las lineas del if.

<script language="JavaScript">
<!--

document.onkeypress = keyhandler;

function keyhandler(e) {
    if (document.layers)
        Key = e.which;
    else
        Key = window.event.keyCode;
    if (Key != 0)
        alert("Key pressed! ASCII-value: " + Key);
}
//-->
</script>

SocializerMenefante Del.icio.us Digg Ver los comentarios

Buscar cadenas en un texto

Por Saiyine Enviar correo el 2006-06-22 12:07:57 - Secciones:  JAVA  - Enlace permanente: 685

Dreamhost

Buscar cadenas en un panel de texto de Java es tan sencillo como aprovechar el método indexOf de las cadenas, para lo cual tenemos que convertir primero el JTextPane en una cadena con .getText():

JTextPane tp;
...
if (tp.getText().indexOf(cadena)>-1)
{
// Hacer algo si la cadena está en el panel de texto
}

ACTUALIZACION 20060905: Una corrección, y un ejemplo, a ver si así se ve mejor.

class cadenas {
    public static void main(String[] args)
   {
        String path = new String("Hola que tal");
        System.out.println("Hola = " + path.indexOf("Hola"));    // Hola = 0
        System.out.println("ola   = " + path.indexOf("ola"));      // ola   = 1
        System.out.println("Jola = " + path.indexOf("Jola"));     // Jola = -1
    }
}

SocializerMenefante Del.icio.us Digg Ver los comentarios

Añadir lineas a un panel de texto JTextPane

Por Saiyine Enviar correo el 2006-06-22 12:06:59 - Secciones:  JAVA  - Enlace permanente: 684

Dreamhost

Los paneles de texto de Java parecen carecer de un método para añadir lineas de texto sueltas. Por ello, os propongo este pequeño truco para añadir texto a un JTextPane: leer el contenido previamente e incluirlo en la expresión.

JTextPane tp;
...
tp.setText("Esta linea se añadirá por delante del texto.\n"+tp.getText());

Observad el uso de caracteres escapados, en este caso un salto de linea, y la clave del ejemplo, el empleo del método .getText() del propio JTextPane para leer el contenido y volver a volcarlo junto con el nuevo texto.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Conversor entre euros y dolares

Por Saiyine Enviar correo el 2005-05-29 23:59:00 - Secciones:  UTILERIAS JAVASCRIPT - Enlace permanente: 371

Dreamhost

Este es un minúsculo javascript que me he currado para poder ir sabiendo lo que llevo ganado con la publicidad, que los de Google dan en dolares, y de momento aquí en Europa aún no los gastamos.

Funcionamiento: escribe el valor en la moneda que tengas, con los decimales separados por un punto a lo anglosajón, y pulsa su botón para que aparezca convertido en la otra moneda. Es decir, si tienes 80.40 dolares, escribelo en la casilla "Dolares" y, al pulsar su botón, aparecera su valor en euros.

SocializerMenefante Del.icio.us Digg Ver los comentarios

Fondos de pantalla

. . .

Recomendamos


. . .

Descargas

  • ApagaPC
    apagapc241.exe  (3540)
  • LimpiaDocus
    LimpiaDocus001.exe  (2828)
  • RCM
    rcm001.zip  (2385)
  • Popmail
    popmail-0.4-psmn.tar.gz  (2463)
  • Manual de Delphi en PDF
    delphi_pdf.zip  (3052)
  • Evangelio del Perl
    Evangelio_del_perl.pdf  (2880)
  • Excel Simpsons
    Excel Simpsons  (3046)
  • . . .

    Proyectos Online

  • Saiyine Store
  • Kunowalls!!!
  • Fondos de pantalla
  • Picaday: imagenes sexys o chocantes.
  • Scarlett: fotos de Scarlett Johansson
  • WhatsmyIP: obtener tu IP pública
  • Uma Thurman: galeria de Uma Thurman
  • FunPics: imagenes graciosas
  • . . .

    Blogs

  • Por lo que más querais, no entreis a estos: Tapanez, Yhandros, Onez.

  • Otros en español: El Mundo Today, La libreta de Van Gaal, Chavalina, Kirai, Mundo Geek, Microsiervos.

  • Mis lecturas en guiri: Michael Yon, Coding Horror, YCombinator news, MySQL Performance, Slashdot.

    . . .
  • Utilidades

  •  Coral  (1235), cacheando webs
  •  Spam.la  (1467), correo de usar y tirar
  •  Mailinator  (1385), correo de usar y tirar
  •  Bug me not  (1246), absurdos registros di NO
  •  Trashmail  (1285), correo de usar y tirar

    . . .

  • Faq

  • ¿MlDonkey para windows?
    Pues si, ya hay un port, y lo podeis encontrar aqui.
  • ¿Imagenes del universo?
    Puesss, mi favorita es astrored, aunque debe haber muchas similares.
  • ¿Drivers para voodoo?
    Probad aqui para la voodoo 3.
  • . . .

    Busquedas


    Varios ejemplos de lo que buscaban visitantes recientes:

    . . .

    Página web ©2001-2010 Saiyine generada en s, con 4777143 visitas en total, hoy (de un total de 0 previstas).

    . . .