Java

GeneXus X Evo 1

GeneXus

Hola muchachos de IFX, despues de tiempo, les traigo informacion sobre una herramienta muy interesante que he estado utilizando ultimamente en mis practicas pre-profesionales, y a mi parecer es una buena alternativa para la realidad que vivimos en estos días. Al estar en una realidad cambiante lleno de muchas alternativas en cuanto a lenguajes de programación, motores de bases de datos, servidores, computadoras, equipos moviles, etc. Que uno ya casi no puede abarcar todas las cosas ser un experto en todo!!!….

Seguir leyendo …

Crear hash SHA1, MD5 en Java


Bueno, dado que Fredy durante la madrugada publicó como encriptar con SHA1 y MD5 con c#, y dado que ni en java ni en c# tenemos un metodo md5() o sha1() como en php, aquí les traigo el código para los “Javeros”, es de una clase Encrypt que uso en mis proyectos, que sirve para poder encriptar en md5 y sha1.

package com.ifxperu.utils;

import java.security.MessageDigest;

public abstract class Encrypt {

public static String sha1(String message) {
return encrypt(message, "SHA1");
}

public static String md5(String message) {
return encrypt(message, "MD5");
}

private static String encrypt(String message, String type) {
MessageDigest md;
byte[] buffer, digest;
StringBuilder hash = new StringBuilder();
try {
buffer = message.getBytes("UTF-8");
md = MessageDigest.getInstance(type);
} catch (Exception e) {
throw new RuntimeException(e);
}
md.update(buffer);
digest = md.digest();
for (byte b : digest) {
hash.append(String.format("%02x", b & 0xff));
}
return hash.toString();
}
}

El uso sería simple:

Seguir leyendo …

Máximo común divisor y mínimo común múltiplo según Euclides

Euclides fue un matemático griego que vivió desde el año 325 hasta el 265 a.C. También es conocido como el padre de la geometría. La cuestión es que el patín este, en una de sus tantas masturbaciones cerebrales, eyaculo un método muy eficaz para calcular el máximo común divisor de 2 números; es decir, cualquiera de nosotros, mediante la forma que nos fue enseñada en el colegio, es capaz de hacer un programa para que calcule el máximo común divisor de 2 números, pero la cuestión es que, Euclides ideó un algoritmo que lo hace con menor cantidad de operaciones, ósea de menor complejidad computacional en comparación al algoritmo clásico del MCD.

El algoritmo comprende de pocas operaciones, sin embargo Euclides debe haber tenido una gran imaginación para encontrar una relación entre el MCD y la operación de modulo o resto; siendo esta ultima operación sobre la que este algoritmo basa su funcionamiento. Su implementacion en el lenguaje de programación Java es como sigue:

Seguir leyendo …

Oracle da a conocer lo que tiene preparado para Java

A muchos de nuestros lectores y a todos nuestros editores nos tiene en vilo el que Oracle haya comprado Java y todo lo que eso significa “por teoría”, miedos, angustias, resignación, bueno, leo en FayerWayer que se ha dado a conocer los planes que Oracle tiene preparado para Java en la conferencia OracleWorld desarrollada en San Francisco, California.

Según el plan original, Java iba a actualizarse en el 2012 a una nueva versión de su JDK, pero Oracle ha decidido por “partir” esa actualización en dos fases (sacado de FayerWayer):

Por ello, a mediados de 2011 se lanzará la versión 7, mientras que en 2012 habrá una versión 8. La próxima versión traerá varios cambios, entre los que se destacan:

  • Soporte para lenguajes dinámicos sobre la máquina virtual, lo que por ejemplo facilitaría ejecutar Python o Javascript sobre la máquina virtual de Java.
  • Mejoras en el lenguaje para hacer más fácil la programación. Una de las mejoras más interesantes es que se simplificará la forma en que los programadores usan los recursos, es decir, ya no se tendrán que preocupar de liberar recursos porque la máquina virtual lo hará automáticamente.
  • Simplificación del manejo de errores: ahora se podrá escribir un sólo código para manejar distintos tipos de errores, en lugar de varios bloques para errores distintos.

Así que, el plan B se dejará ver un poco antes del plan A, en algo así como “un pago a plazos”. Esperemos pues, que el futuro de Java siga siendo algo de que alegrarnos y no decepcionarnos.

Via | FayerWayer
Referencias | Java SE7 – Plan A or Plan B? (JavaOne Conference Blog), Oracle stamps authority on Java roadmap (The Register)

APHU – Aplicación para Horarios UPAO

Esta es una pequeña aplicación en Java que hice en unos ratos libres después de acabar el ciclo anterior pensando en que podría facilitar el proceso tedioso de armar lo horarios por el cual tenemos que pasar cada ciclo los alumnos de la UPAO. Lo que se intenta es presentar las carreras, los cursos y los horarios disponibles de manera que haciendo click en determinados horarios se vea cómo va quedando el horario del alumno, permitiendo ver si hay cursos que se cruzan, o cuales turnos convienen más pensando en que no se quiere tener demasiadas horas libres entre clase y clase o no se quiere estudiar hasta muy tarde. Así lo único que quedará por hacer es ingresar los códigos generados en la aplicación a la intranet de la universidad.

Para los que quieran probar APHU pueden descargarlo desde este link: DESCARGAR APHU
Esta no es para nada una versión final, todavía hay muchas cosas que deseo mejorar para lo cual estoy teniendo en cuanta todos los comentarios que me han hecho, como mejorar el orden de los cursos, avisar si falta elegir turnos de algún curso (por si alguien olvido marcar algún laboratorio), mostrar la si el salón esta cerrado o ya se está llenando, etc etc.

Lady Java (de los creadores de Java4Ever)

Para quienes se acuerden de Java4Ever, pues hoy les presento este nuevo corto presentado por Java Zone (que más bien debería decir Videoclip), para su evento JavaZone 2010. Soy sincero al decir que no me gusta para nada la música ni el estilo de la parodiada (ya sabemos quién) pero la letra en este video estuvo buena, a ver si Oracle deja de tocarnos las narices con la imagen institucional de Java por cierto. Y la gente deja de decir que Java es lento y que por eso no lo usan… bueno eso es otra historia.

Pues nada, disfruten el video y buen fin de semana!

Via | Picando Código

PD: Si alguien consigue el video con subtítulos, pase el link, la letra esta buena (sobre todo la parte de William Henry Gates XD)!.

La clase Robot de Java

Hace tiempo, cuando recién empezaba a programar en Java, ví el nombre de esta clase Robot. A mi me pareció un nombre bastante atractivo, por lo que decidí ver en la documentación del API de Java para saber como usarla.

Yo tenía las sospechas de que seria algo bastante dificultoso de hacer, pero no fue así; solo sabiendo lo básico de la programación orientada a objetos fue necesario para poder hacer unos ejemplos.

Esta clase nos permite manejar mediante metodos las pulsaciones del teclado y del mouse e incluso añadirles un cierto delay(retardo), por lo que se me ocurrio jugarle una broma a mis amigos.

El código lo adjunto aquí en archivo rar que contiene el fuente .java, está un poco desordenado ya que no es un trabajo o algo por estilo, sino un programa que se me ocurrio hacer en mis tiempos de ocio para probar el funcionamiento de esta clase(^^’).

El fuente es un applet, por lo que no podran ejecutarlo así como así, ya que al acceder a metodos nativos del sistema(pulsaciones de teclado), necesito primero firmarlo, lo cual si les interesa lo pueden buscar en google o simplemente me lo hacen saber para responderles.

Además les dejo la url del applet ya subido a un hosting gratuito, en donde podran ver en funcionamiento la broma, la cual no hace mas que escribir algo en el bloc de notas y luego te reinicia la pc.

http://claydergc.webs.com/applet.htm

Como decía es necesario firmar el applet, por lo que por ser una broma les aparecerá que acepten que se ejecute el applet en su browser el cual esta con un nombre que no es mio, si mal no recuerdo el nombre que le puse fue “Juan”, para que mis amigos no sepan que fui yo.

Por lo demás no se preocupen, solo es una prueba del funcionamiento de la clase java.awt.Robot, lo unico si les recomiendo que guarden todo lo que esten haciendo porq les reiniará la pc; en todo caso eso pueden verlo en el codigo que adjunté si es que no deseean ejecutar el applet.

http://seccperu.org/files/PruebaRobot.rar

Bueno, espero les haya servido de algo este post.

Saludos.

Java 4 Ever

A pesar de la discontinuidad de nuestros post, sólo decirles que estamos entrando a un proceso de cambio, pero eso es otra historia, solo lo pongo para que sepan que seguimos aquí.

Hoy vine para postear este video – corto que está rondando en Twitter acerca de alguien que decidió romper las ‘reglas’ que me pareció genial. Y es que… la uniformidad en la informática siempre es mala.  Jeje , disfruten este corto. (está en inglés).

Saludos.

Anagramas en Java

Un anagrama es una palabra que resulta de la transposición de las letras de otra palabra. Por ejemplo con ifx podemos obtener ifx,ixf,fix,fxi,xif,xfi (saber cuales de estas son palabras reales es un asunto totalmente distinto …). Hacer un programa en java para obtener todas estas posibles conjugaciones no es difícil, pero es interesante porque se requiere usar un método recursivo y esta clase de métodos tiende a seguir el patrón pocas líneas de código bastante dolor de cabeza. Esta es sólo una manera de solucionar un anagrama, debe de haber varias más.

import java.util.ArrayList;

public class Anagrama {
    private ArrayList<String> soluciones=new ArrayList<String>();

    public Anagrama(){  }

    public static void main(String args[]){
        Anagrama a=new Anagrama();
        String palabra="ifx";
        a.resolver(palabra);
        System.out.println(a.getSoluciones());
    }

    public void resolver(String palabra){
        palabra=palabra.toLowerCase();
        char[] letras=palabra.toCharArray();
        int tamanioPalabra=letras.length;
        int numeroIteraciones=0;
        char[] cadenaActual=new char[letras.length];
        resolver(letras,cadenaActual,tamanioPalabra,numeroIteraciones);
    }

    private void resolver(char[] letras,char[] cadenaActual,
            int tamanioPalabra,int numeroIteraciones){
        if (numeroIteraciones==tamanioPalabra){
            getSoluciones().add(new String(cadenaActual));
        }
        numeroIteraciones++;
        for(int i=0;i<tamanioPalabra;i++){
            if (letras[i]=='A'){
                //Como se paso todas las letras a minúscula, se usa "A"
                //para indicar que la letra en esa posición ya se utilizó,
                //de ser así sólo paso a la siguiente letra
            }else{
                char valorEliminado=letras[i];
                //valorEliminado es la letra que ya use y no
                //se debe seguir usando
                cadenaActual[numeroIteraciones-1]=valorEliminado;
                letras[i]='A';
                //Un valor q le doy para mostrar que ya lo elimine
                resolver(letras,cadenaActual,tamanioPalabra,numeroIteraciones);
                letras[i]=valorEliminado;
            }
        }
    }

    public ArrayList<String> getSoluciones() {
        return soluciones;
    }

    public void setSoluciones(ArrayList<String> soluciones) {
        this.soluciones = soluciones;
    }

}

Novedades en Java 7

Segun rumores en la web, el lanzamiento de Java 7 podria realizarce a finales de año, o en todo caso para el 2011, aqui les traemos algunas novedades de lo que podria incluir esta nueva versión: Soporte a lenguajes dinámicos, Strings en switch, una nueva API de I/O, recursos trabajados para números binarios, etc.
Seguir leyendo …