import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;
/**
* Invoca el comando ls -l para leer los archivos que se
* encuentran en un directorio.
*
* @author gilberto.flores
* @version 1.0
*
*/
public class LeerArchivosLs {
public static void main(String[] args) {
try {
// UNIX - Se indica la operación que se va a ejecutar
Process proc = Runtime.getRuntime().exec("ls -l /");
InputStream is = proc.getInputStream();
// Se transforma el de un stream de 8 bits a uno de 16
InputStreamReader isr = new InputStreamReader(is);
// Entubar el Stream en el Buffer Reader
BufferedReader reader = new BufferedReader(isr);
// Procesamos el Stream
String line = null;
while ( (line = reader.readLine() ) != null ) {
System.out.println(line);
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
miércoles, 29 de febrero de 2012
jueves, 23 de febrero de 2012
Oracle y Flash Recover
Iniciar una base de datos
sql> STARTUP MOUNT;
sql> ALTER DATABASE OPEN;
Validar el uso del segmento de disco asignado a flash
sql> SELECT * FROM V$recovery_file_dest;
Consultar los La lista de archivos
sql> archive log list;
sql> STARTUP MOUNT;
sql> ALTER DATABASE OPEN;
Validar el uso del segmento de disco asignado a flash
sql> SELECT * FROM V$recovery_file_dest;
Consultar los La lista de archivos
sql> archive log list;
miércoles, 21 de septiembre de 2011
JSF 2.0 El momento ha llegado
Por fin nos hemos decido a retomar la tecnología de JSF 2.0 evaluando ICE Faces 2.0.2 (Ya que con el 2.0 no nos fue muy bien) y PrimeFaces, para poder decidir cual es mejor para nuestros proyectos.
Es necesario evolucionar y para lograrlo debemos considerar:
La migración de nuestras aplicaciones actuales
Nuestras aplicaciones requieren de servidores con una versión en específico debido a que utilizamos JPA 1.0 y ICE Faces 1.8, por lo cual para producción utilizamos Glassfish 2.1 y para desarrollo Tomcat 6.0. Por lo tanto si deseamos implementar las nuevas tecnologías será necesario utilizar:
Es necesario evolucionar y para lograrlo debemos considerar:
La migración de nuestras aplicaciones actuales
Nuestras aplicaciones requieren de servidores con una versión en específico debido a que utilizamos JPA 1.0 y ICE Faces 1.8, por lo cual para producción utilizamos Glassfish 2.1 y para desarrollo Tomcat 6.0. Por lo tanto si deseamos implementar las nuevas tecnologías será necesario utilizar:
- Glassfish 3
- Tomcat 7.0 para desarrollo
- JSF 2.0
- JPA 2.0
- ICE Faces 2.0
Avanzar
La tecnología lleva un paso arrollador y para las personas que buscamos utilizar un poco, resulta díficil estar al día. Ya sea porque:
- No hay proyectos que los lleven a hacer,
- Los proyectos actuales tienen muchos cambios y es díficil migrarlos sin impactar a la organización
- Los líderes organizacionales no creen en la nueva tecnología y responden al reto: ¿Por qué cambiar ahora? si lo que tenemos nos da resultados
- No se cuenta con un plan de capacitación para los desarrolladores de la empresa, seguirán utilizando versiones anteriores por el resto de su vida organizacional.
- El implementar tecnologías nuevas tiene un costo, ¿Cuál es el beneficio de cambiar?
- Que al paso que avanza la tecnología la infraestructura que soporta nuestras aplicaciones se volverá obsoleta
- Migrar de la versión anterior a una actual quizás sea más difícil y requiera una inversión mayor.
- El esfuerzo para los desarrolladores será mayor porque no están involucrados en las nuevas tecnologías.
- El mantenimiento de las aplicaciones actuales y los problemas en la infraestructura se volverán recurrrentes y los desarrolladores no serán capaces de implementar nuevos proyectos.
lunes, 15 de marzo de 2010
Invictus
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
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
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);
}
}
Suscribirse a:
Entradas (Atom)