Suscribirse al Feed
31Jul

Aclaración: Generar números aleatorios en Java con la clase Random

Antes que nada, veamos un pequeño ejemplo del uso de la clase Random, para ver su funcionamiento básico:


import java.util.*;
public class NumerosAleatorios
{
public static void main(String args[])
{
Random r=new Random();
r.setSeed(123456789);
System.out.println(r.nextInt(1000));
}
}

Como puedes observar, después de crear el objeto Random, es necesario utilizar el método setSeed(long) para establecer la semilla a partir de la cual se generarán números aleatorios (pseudo-aleatorios)… fíjate como le pasamos un número(que puede ser cualquiera, en formato long logicamente [obviando o no el sufijo L]), que representará la semilla.

Lo primero que es necesario entender, es que con la clase Random se generan números pseudo-aleatorios, por tal motivo siempre que corras el programa te va a salir exactamente el mismo número aleatorio o la misma secuencia (a menos de que se cambie la semilla). Esto se puede observar en el propio método setSeed:


synchronized public void setSeed(long seed) {
this.seed = (seed ^ 0x5DEECE66DL) & ((1L << 48) - 1);
haveNextNextGaussian = false;
}

Entonces… ¿cuál es la solución para generar números realmente aleatorios con la clase Random? El método más sencillo para hacer esto, es insertar un valor en la semilla (en el método setSeed) que cambie cada vez que se ejecute el programa, y el más adecuado es la hora. Por obvios motivos, cada vez que ejecutas un programa la hora y fecha ha cambiado, entonces podemos usar nuestro programa de la siguiente forma:

import java.util.*;
public class aleatorio
{
public static void main(String args[])
{
Random r;
r=new Random();
r.setSeed(new Date().getTime());
System.out.println(r.nextInt(1000));
}
}

De ésta manera la semilla cambiará cada vez que ejecutemos el programa.

31Jul

Pronto habrán cambios

Como la mayoría de ustedes ya habrá notado, el diseño actual de este blog (en comparación con los anteriores) es un poco cutre… bueno, no nos digamos mentiras es verdaderamente feo, pero lastimosamente no he tenido tiempo de jugar un poco con eso.

Lo primero será buscarle un look más atractivo, hoy comienzo a buscar temas haber que encuentro… lo segundo será organizar las secciones mejor, ya que solo con las etiquetas no basta.

Todo esto por haber comprado el dominio, ya que tambien he perdido bastantes visitas a comparación del antiguo blog. Bueno, todo con calma y con buena fe… se aceptan sugerencias.

Un saludo!

27Jul

Repasando RMI

JavaHace bastante tiempo (cuando tenía algo de tiempo), escribi algo sobre RMI y daba un pequeño ejemplo muy simple. Ya bastante gente que ha leído el post, me han hecho preguntas y casualmente la mayoría son del tipo: “quiero hacer que el servidor RMI procese algo, y lo decuelva al cliente”. Esto me hace pensar que talvez no me he hecho entender.

Repasando: el RMI (Remote Method Invocation), permite a una aplicación en Java ejecutar un método (una función), que se encuentra en otra clase ejecutandose en otra máquina. En este caso, la calse que implementa el método es llamada servidor, y la clase que ejecuta dicho método es el cliente. Lo que es importante aclarar es que al usar RMI e invocar un método remoto, la lógica funciona igual que cualquier invocación de un método”local”. Por lo tanto la función que se declare en el servidor, puede tener cualquier tipo de valor de retorno (o void si no se retorna nada); repito: se comporta exactamente igual que si ejecutaramos una función de la misma clase en el mismo equipo.

La confusión talvez se dió porque el ejemplo que pongo es demasiado sencillo, y en el solo se ejecuta un método vacío en el servidor. En este que sigue ya se puede ver más claramente el funcionamiento pleno del RMI:

Descargar código fuente de los ejemplos

26Jul

¿Es Ubuntu un Monopolio?

Esto de verdad es algo que se venía venir. Y es que no es un secreto para nadie que Ubuntu actualmente es la distribución más usada, al punto tal de casi volverse un monopolio en el ámbito de Linux, es lo que pienso (y no soy el único).

De por sí todos conocemos al “grande” del software Microsoft con su inmenso monopolio, y su afán de atacar a GNU/Linux… e inclusive Google parece que será un nuevo monopolio (no nos digamos mentiras, ya lo es).

Y como siempre, no nos damos de cuenta de ello hasta que ya pasa. Ubuntu es considerada una de las mejores distros actualmente y, aunque existen literalmente cientos de distribuciones (más de 500 según el último recuento de DistroWatch), tan sólo un puñado tienen relevancia real, y de esas 5 ó 6 grandes distribuciones destaca claramente la solución creada por Canonical, que ya ha “conquistado” el corazón de millones de usuarios.

Recordemos que uno de los pilares de GNU/Linux y el software libre es la variedad de opciones a escoger, y si en dado caso Ubuntu se vuelve la única referencia notable o única opción en el mundo de Linux, su futuro lo veo mal… muy mal.

Ahora analicemos otro punto (y este ya es una opinión muy mia) . La cantidad de usuarios que usan Ubuntu como su primera distribución lo hacen por uno de los siguientes motivos:

  • Vieron un video en el Youtube (u otro medio) , en donde ven una vistosa e impresionante interfaz gráfica (por supuesto me refiero a Beryl, Compiz, XGL, para el ejemplo da igual).
  • Se enteraron de que sin más ni más, te mandan los CDs completamente gratis a tu casa.
  • Es una de las pocas que está pensada para novatos, y personas que no han usado ninguna distro en su vida.
  • Se hartaron de Windows y quieren usar un sistema operativo mejor, LIBRE, seguro, LIBRE… ahhh y quiere ser libre. Y además quiere APRENDER y llenar su ser de conocimiento.

Pero no nos digamos mentiras, de las cuatro opciones mencionadas anteriormente, desgraciadamente la última es la menos probable. Comenzando por que la LIBERTAD no nos importa para nada, así que no vengan a decir que usan Ubuntu porque es libre (que sí, en principio lo es), y si no me crees: clic aquí y aquí, la verdad no nos basta con el OGG, ni con formatos de video libres, o… ¿cómo vamos a dejar de ver esa hermosa colección de videos que me costo tanto recopilar cuando usaba Windows? Y mucho menos nos importa que los drivers para mi nVidia no sean libres, ya que para lo único que instale Ubuntu fue para instalar eso tan bonito que llaman Beryl.

Lo siento si alguno se sintió aludido, pero reitero: es mi opinión. Finalizando: Canonical ha hecho un buen trabajo de su parte, haciendo que cada vez más usuarios se pasen desde Windows a Ubuntu (al menos por probar)… desafortunadamente de TODOS esos usuarios, muy pocos entienden de verdad el sentido de GNU/Linux.

………….

24Jul

Test de adicción al blogging

87%How Addicted to Blogging Are You?

Me leo en Linuxeando… por un mundo sin ventanas, que leyó en UbuntuTips, que leyó en HacheMuda, que pilló este test (vaya salto de links), en donde te hacen una serie de preguntas para evaluar que tan adicto eres al blogging. Bastante interesante, por cierto, el resultado de arriba es el mio.

Saludos!!

23Jul

[MS Windows Explorer] Exploit Gif para Denial of Service

Éste es reciente, se trata de un exploit creado en Perl que al ser compilado crea una imagen Gif que causa un Denial of Service en el Explorer de Windows. Basta con abrir el explorador y situarse en la carpeta donde se encuentre dicho archivo y ploff! se te vuelve loco XD. El scipt lo puedes pillar aquí:

http://www.milw0rm.com/exploits/4215 

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS