Black as the Pit from pole to pole,
I thank whatever gods may be
For my unconquerable soul.
In the fell clutch of circumstance
I have not winced nor cried aloud.
Under the bludgeonings of chance
My head is bloody, but unbowed.
Beyond this place of wrath and tears
Looms but the Horror of the shade,
And yet the menace of the years
Finds, and shall find, me unafraid.
It matters not how strait the gate,
How charged with punishments the scroll.
I am the master of my fate:
I am the captain of my soul.
William Ernest Henley
lunes, 15 de marzo de 2010
ES - Recordar
Dios:
Llevo injurias a cuestas,
He de ofrecer disculpas,
y siempre he de dar perdon,
Si mis amigos caen uno a uno,
Y sus caminos se separan del mio,
Yo siguiré mi destino.
Siempre fiel a mis principios,
Siempre fiel a mi ideal,
Y asi he de seguir hasta el final.
Si la desesperación llega a mi oido
y la confusión nubla mi mente,
La fuerza de mi corazón queda latente.
Aún cuando mis brazos flaqueen
y una tormenta caiga,
Mi alma no se quebranta.
Aun cuando la noche opaque mi vista,
Que la lluvia detenga mi paso,
Mi espiritu no se cansa.
Llevo injurias a cuestas,
He de ofrecer disculpas,
y siempre he de dar perdon,
Si mis amigos caen uno a uno,
Y sus caminos se separan del mio,
Yo siguiré mi destino.
Siempre fiel a mis principios,
Siempre fiel a mi ideal,
Y asi he de seguir hasta el final.
Si la desesperación llega a mi oido
y la confusión nubla mi mente,
La fuerza de mi corazón queda latente.
Aún cuando mis brazos flaqueen
y una tormenta caiga,
Mi alma no se quebranta.
Aun cuando la noche opaque mi vista,
Que la lluvia detenga mi paso,
Mi espiritu no se cansa.
viernes, 12 de marzo de 2010
Mini Analizador de Puertos en Java
El siguiente código permite realizar una busqueda de puertos en un segmento de Red. El programa es muy sencillo y no cuenta con interfaz gráfica. Su objetivo es realizar un mostrar el uso básico de conexión de Sockets.
Clase IP
PortScanner
Clase IP
public class IP {
//189.231.254.21
private int octeto1;
private int octeto2;
private int octeto3;
private int octeto4;
public IP(int octeto1, int octeto2, int octeto3,int octeto4) {
this.octeto1 = octeto1;
this.octeto2 = octeto2;
this.octeto3 = octeto3;
this.octeto4 = octeto4;
}
public int getOcteto1() {
return octeto1;
}
public void setOcteto1(int octeto1) {
this.octeto1 = octeto1;
}
public int getOcteto2() {
return octeto2;
}
public void setOcteto2(int octeto2) {
this.octeto2 = octeto2;
}
public int getOcteto3() {
return octeto3;
}
public void setOcteto3(int octeto3) {
this.octeto3 = octeto3;
}
public int getOcteto4() {
return octeto4;
}
public void setOcteto4(int octeto4) {
this.octeto4 = octeto4;
}
/**
* Permite incrementar el ip en una unidad
*
*/
public void incrementar() {
this.octeto4 ++;
if ( octeto4 == 256) {
this.octeto4 = 0;
this.octeto3 ++;
if ( octeto3 == 256) {
this.octeto3 = 0;
this.octeto2 ++;
if ( octeto2 == 256) {
this.octeto2 = 0;
this.octeto3 ++;
if ( octeto1 == 256) {
this.octeto1 = 0;
}
}
}
}
}
/**
* Valida si el ip que le llega es mayor que el ip actual
* @param ip
* @return
*/
public boolean isMenor(IP ip) {
if ( this.octeto1 > ip.getOcteto1() ) {
return false;
}
if ( this.octeto2 > ip.getOcteto2() ) {
return false;
}
if ( this.octeto3 > ip.getOcteto3() ) {
return false;
}
if ( this.octeto4 > ip.getOcteto4() ) {
return false;
}
return true;
}
public String toString() {
return octeto1 + "." + octeto2 + "." + octeto3 + "." + octeto4;
}
}
PortScanner
/**
* Realiza el escaneo de IPS
* @author zeneslev
*/
public class PortScanner {
/**
* Reliza el scan en un desde un IP inicial hasta el IP de fin, buscando en
* un puerto en particular.
* @param inicio
* @param fin
*/
public void scan(IP inicio, IP fin) {
// Inicia la iteración desde el ip inicio hasta el fin
while ( inicio.isMenor(fin)) {
Socket s = new Socket( );
try {
// Realiza la conexión al puerto 8080, esperando 5000 ms para
// el timeout
s.connect(new InetSocketAddress(inicio.toString(),8080) , 5000);
System.out.println(" + " + inicio + " OK ");
inicio.incrementar();
//Cierra el socket
s.close();
} catch (IOException e) {
System.out.println(" - " + inicio + " FALLO " + e.getMessage() );
inicio.incrementar();
}
}
}
/**
* Prueba el código
* @param args
*/
public static void main(String[] args) {
IP inicio = new IP(189,231,254,1);
IP fin = new IP(189,231,254,254);
PortScanner p = new PortScanner();
p.scan(inicio, fin);
}
}
lunes, 8 de marzo de 2010
LDAP con OpenDS 2.2
Hace ya algún tiempo trabajé con la Integración del OpenDS y OpenSSO, para complir generar las bases de una plataforma empresarial orientada a Servicios. En aquella ocasión el OpenSSO resulto un poco confuso y un poco dificil de usar, sobre todo sin estar familirizado.
Por otro lado el OpenDS fue una herramienta facil de instalar y de usar, claro está requeriamos de un cliente externo para el control de LDAP, por lo cual utilizamos el Apache Directory Studio, (el cual como adivinaran es Libre). Una vez que se instaló el OpenDS y el Apache Directory Studio, nos fue posible realizar pruebas para poder autenticar usuarios en el LDAP y no en una base de datos.
Un poco de tiempo después y gracias al Libro de Core Java, Volumen II en su octava Edición, nos fue posible poder realizar operaciones de Escritura y de Lectura al LDAP utilizando unicamente el JSDK, sin necesidad de librerias externas como las de Novell.
En la actualidad el OpenDS a mejorado mucho tanto en rendimiento como en la imagen de su administrador, cuenta con muchas de las características que tienen la mayoria de los LDAP, y para los usuarios poco experimientados es una buena alternativa para poder utilizar este tipo de servicios de Directorio.
Por otro lado el OpenDS fue una herramienta facil de instalar y de usar, claro está requeriamos de un cliente externo para el control de LDAP, por lo cual utilizamos el Apache Directory Studio, (el cual como adivinaran es Libre). Una vez que se instaló el OpenDS y el Apache Directory Studio, nos fue posible realizar pruebas para poder autenticar usuarios en el LDAP y no en una base de datos.
Un poco de tiempo después y gracias al Libro de Core Java, Volumen II en su octava Edición, nos fue posible poder realizar operaciones de Escritura y de Lectura al LDAP utilizando unicamente el JSDK, sin necesidad de librerias externas como las de Novell.
En la actualidad el OpenDS a mejorado mucho tanto en rendimiento como en la imagen de su administrador, cuenta con muchas de las características que tienen la mayoria de los LDAP, y para los usuarios poco experimientados es una buena alternativa para poder utilizar este tipo de servicios de Directorio.
miércoles, 24 de febrero de 2010
Sakai herramienta de administración de Cursos y más
Es una herramienta para administración de Cursos al estilo Moodle, sin embargo esta desarrollada en Java y cuenta con algunas aplicaciones interesantes. Por tanto es bueno verificar sus capacidades si requieren de herramientas para administración de Cursos.
Si deseamos ver una comparación entre Sakai y Moodle podemos entrar a la siguiente dirección: Comparación Sakai VS Moodle
Si requieren más información de sakai puedes entrear a http://sakaiproject.org/
Suscribirse a:
Entradas (Atom)