Java

Feliz Día, #programadores

programadorComo todos bien sabemos (bueno y el que no lo sabe, pues como que se va enterando XD), el día 13 de setiembre celebramos el día del programador, gracias a una iniciativa de Valentin Balt … y como no podía ser de otra manera, esta celebración tiene su explicación informática:

El día 13 de septiembre es el día 256 de un año normal, y para los programadores, esto va más allá de un simple número porque se trata de una potencia de dos (2^8) y el número de valores que se pueden representar en un byte.

Pues bien, con este post queremos desearle un ¡¡FELIZ DIA!! a todos aquellos quienes día a día sentimos esa pasión por resolver problemas y encontrar soluciones que requieren de un pensamiento abstracto y lógico. Seguir leyendo …

Google App Engine: “Failed to compile JSP Files” y como solucionarlo

Google App Engine es la plataforma de Google para los desarrolladores que tienen ansias de explotar sus capacidades para sus aplicaciones en Python y Java en la nube. Al ser una plataforma abierta se han desarrollado plugins para los entornos de desarrollo como Netbeans o Eclipse que facilite la interacción y sea aprovechado al máximo, tanto que se puede emular localmente o directamente deployarlo a la plataforma.

Tenía desarrollando una pequeña aplicación de ejemplo (que no era la gran cosa) para un poco configurar el plugin de Netbeans (en Eclipse funcionaba perfectamente) y eventualmente darle un fin informático. Hice todas las conexiones tomadas de la página de Kenai (quien proporciona el plugin de GAE para Netbeans) y configuré el plugin adecuadamente y entonces sólo me quedaba empezar a programar.

Todo iba bien hasta que a la hora de deployar o dicho de otra forma, “subir mi aplicación a la nube”, ocurría un error de la plataforma (no de mi aplicación en específico) el cual tenía este aspecto:

Sin ser la demás información relevante, la plataforma compilaba mis archivos hasta un 8% y luego me mostraba el error de que no podía “compilar” el proyecto por no encontrar el compilador de Java(se mostraba frecuentemente entre los parrafos el error “Unable to update app: Failed to compile jsp files.”) y me rompía la cabeza queriendo encontrar el problema entre los archivos de mi aplicación, las configuraciones del servidor e incluso reinstalando todo, hasta que en los foros de Google encontré que este error es tan común como tan simple.

Existe la posibilidad de que el plugin no reconozca de primeras la instalación que tengas de Java por un simple error en los archivos de configuración el cual redirigen a un parámetro equivocado. En buen cristiano, el plugin de GAE no sabe dónde está tu instalación de Java.

Seguir leyendo …

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 …

Buscaminas con Java

Buscaminas en Java

En una rapida reunión sobre programación que tuvimos en la UPAO con Alex(de javatutoriales.blogspot.com) que estaba de visita por el congreso, nos dio un ejercicio de como resolver un buscaminnas, donde:

Te daban: Tenias que devolver
**.*
..**
*.**
**4*
35**
*2**

o sea remplazar los puntos por el numero de asteriscos que tienen alrededor.

Gracias a eso, se me dio por pasarlo a una aplicación de escritorio con Swing, al estilo de Windows, pero mas simple, y aunque aun esta incompleto(porque le falta decir cuando has ganado) se puede estudiar el codigo, y entender como generar botones dinámicamente, y como funciona el buscaminas a grandes razgos.

Bueno a continuación adjunto tanto el codigo fuente como el jar, espero que haya sido de su utilidad.

Codifo fuente / Jar Ejecutable

PD: Este es mi primero post, disculpen si hice algo malo =).

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)

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.

Uso de la Notación Postfija en la diagonalización de matrices [ I ]

La notación postfija o notación polaca inversa (eso sonó a pose del kamasutra), es un método algebraico alternativo de introducción de datos. Su nombre viene por analogía con la relacionada notación polaca, una notación de prefijo introducida en 1920 por el matemático polaco Jan Lukasiewicz, en donde cada operador está antes de sus operandos [Wikipedia].

Nosotros normalmente escribimos en la forma infija, es decir:

OPERANDO1 OPERADOR OPERANDO2

5                    +                2

La forma postfija consiste en poner el operador al final, lo que seria equivalente a:

OPERANDO1 OPERANDO2 OPERADOR

5                   2                 +

La notación postfija también puede ser representada en el recorrido en post-orden de un árbol binario que contenga de forma ordenada la expresión algebraica que estamos representando, es decir, si recorremos de la forma IZQUIERDA – DERECHA – RAIZ.

image

Seguir leyendo …