Implementamos tecnologia y es asi como lo hacemos

Herramientas Backup Informacion

Junio 4, 2008 - 9:52 pm - Posted by Camilo Nova

En nuestro trabajo cotidiano es común la necesidad de respaldar los archivos o configuraciones que tenemos en equipos externos a los de nuestro uso diario, en general, lo ideal es asegurarse que se tiene un respaldo de la información importante y que sea fiable al momento de recuperar, claro esta, que también sea económica de implementar llenando los requerimientos establecidos.

Para eso nosotros tenemos una opción que recomendamos, fue elegida luego de utilizar varias herramientas y nos pareció la mejor de todas.

http://areca.sourceforge.net/

Es un software de copias de seguridad personal desarrollado en java y bajo la licencia GLP, con lo cual tenemos plena libertad de usarlo y distribuirlo, a diferencia de las otras opciones disponibles en el mercado. También existe otra opción de un software gratuito que merece la pena una revisión:

http://www.acebackup.com/

Nos gustaria recibir comentarios del uso de estas dos aplicaciones con el fin de definir cual es la mejor opcion, ustedes tienen la palabra.

Etiquetas: , , , | Comente »

Capitulo 7 – Certificacion Java

Mayo 21, 2008 - 9:59 pm - Posted by Camilo Nova

Excepciones y aserciones.

Las excepciones de tipo ‘Runtime’ no son marcadas por el compilador, y no es necesario que el programador las maneje, aunque no es prohibido que lo haga.

Un bloque de codigo ‘catch’ solamente es ejecutado si atrapa una excepcion que provenga de un bloque ‘try’ correspondiente.

Una vez que la ejecucion del programa alcanza un bloque ‘try’ y una excepcion ocurre, el bloque ‘finally’, si existe, es siempre ejecutado independientemente si fue o no capturada una excepcion, a menos que, bajo circunstancias extremas como un llamado a System.exit() ocurran.

Hay dos reglas en la ejecucion de bloques ‘catch’

  1. Solamente un bloque ‘catch’ relevante a la excepcion y encontrado primero por el control de ejecucion, sera el bloque ejecutado para dicha excepcion.
  2. Los bloques ‘catch’ mas especificos (de menor jerarquia en el arbol de clases) deben preceder a los menos especificos (los mas generales). La violacion a esta regla genera un error de compilacion.

Una excepcion puede ser tratada solo por un bloque ‘catch’, donde en dicho bloque en sus parentesis debe existir la clase que representa la excepcion en si misma.

Si una excepcion no es capturada por ningun bloque ‘catch’, una de las siguientes acciones ocurre:

  • Si no hay un bloque ‘finally’, la ejecucion se detiene en el punto donde se lanzo la excepcion y retorna al metodo que la llamo.
  • Si hay un bloque ‘finally’ la ejecucion salta del punto donde se lanzo la excepcion al bloque ‘finally’ y retorna al metodo que la llamo luego del bloque ‘finally’.

Si una excepcion es capturada por un bloque ‘catch’, caso contrario al anterior, ocurre uno de los siguientes casos:

  • Si existe un bloque ‘finally’, el control de ejecucion ejecuta el bloque ‘catch’ y luego el ‘finally’, para luego continuar con el metodo que la llamo.
  • Si no existe un bloque ‘finally’, pasa a ejecutar el bloque ‘catch’ y luego continua con el metodo que la llamo.

El bloque ‘try’ debe estar seguido bien de un bloque ‘catch’ o ‘finally’, o ambos. El bloque ‘try’ por si mismo es ilegal. Cualquier bloque ‘catch’ debe estar precedido de un bloque ‘try’, y un bloque ‘finally’ debe continuar luego del ultimo bloque ‘catch’ o del bloque ‘try’ si no existe un bloque ‘catch’.

Se debe tener en cuenta al momento de sobrecargar un metodo que lanze una excepcion:

  1. Si el metodo a sobrecargar no lanza ninguna excepcion, el metodo que sobrecarga no puede lanzar ninguna excepcion, pero aun asi podra lanzar una excepcion en ejecucion.
  2. Si el metodo a sobrecargar lanza alguna excepcion, es legal para el metodo que sobrecarga no lanzar ninguna excepcion.

Para ejecutar un programa con aserciones se pasa el parametro -ea (enableassertions) al momento de ser ejecutado.

Es clave recordar que las aserciones deben ser usadas unicamente con propositos de pruebas y no debe confiarse en ellas para una aplicacion en produccion.

Etiquetas: , | Comente »

Ejemplo Aserciones (Assert) Java

Mayo 21, 2008 - 9:34 pm - Posted by Camilo Nova

El siguiente es un ejemplo de una asercion en java, que permite realizar pruebas sobre el codigo, sobretodo en la etapa de verificacion de la calidad.

Para compilar el codigo se hace de la misma manera que siempre

javac AssertionExample.java

Para ejecutarlo se deben habilitar las aserciones:

java -ea AssertionExample

Tambien puede ser ejecutado normalmente

java AssertionExample

Aqui esta el codigo, un ejemplo sencillo pero que muestra la funcionalidad que tiene para realizar verificaciones.

public class AssertionExample{
    public static void main(String[] args) {
        int x = -15;
        DataAccess da = new DataAccess();
        assert x > 0 : "El valor debe ser positivo";
        System.out.println("Valor positivo x: " + x);
    }
}

Etiquetas: , | 5 Comentarios »

Capitulo 6 – Certificacion Java

Mayo 21, 2008 - 3:43 pm - Posted by Camilo Nova

El argumento legal de una estructura if() es ‘boolean’. Esto quiere decir que lo comprendido en el paréntesis debe dar como resultado un valor ‘boolean’

Listado de estructuras if-else:
- Hay dos tipos de estructuras, ‘if’ cuando es permitido que el bloque posiblemente no sea ejecutado, e ‘if-else’ cuando de seguro uno de los bloques sera ejecutado.
- Se pueden anidar como el anterior en expresiones ‘if-else if’ e ‘if-else if-else’.
- La primera estructura es ‘if’.
- Cualquiera de estas estructuras pueden anidarse dentro de otra.

En una estructura ’switch’, el caso ‘default’ no necesariamente debe ir al final. Puede estar en cualquier parte del bloque ’switch’.

Los argumentos legales para una estructura ’switch’ son: byte, short, char, int y enum. Si se intenta utilizar otro tipo se recibirá un error de compilación. Si existen dos ‘case’ iguales se generara un error de compilación.

De no escribir ‘break’ al final de cada caso ‘case’ la ejecución continuara hasta encontrar un ‘break’ o el final del bloque. Las sentencias de iteración en java son: while, do-while, for y for-each.

El bloque ‘do-while’ garantiza que el código sea ejecutado una vez antes de que se compruebe la expresión con la que decide si se ejecuta nuevamente o no, mientras que el bloque ‘while’ puede que no se ejecute ni una sola vez.

La sintaxis para un bloque ‘for-each’ es:
for(<variable Array o Colleccion> : <colección>) {
//Código a ejecutar
}

Se recorre la colección o array determinado por <colección> y asigna cada elemento iterado a la variable <variable> que sea del tipo indicado en la colección.

Existe una palabra reservada que permite saltar la ejecución dentro de un bucle, esta palabra es ‘continue’ y se puede utilizar en el siguiente bloque:
OuterLoop: for (int i=0; i < 10; i++) {
InnerLoop: for (int j=0; j < 10: j++) {
System.out.println(i +” – ” + j);
if ( i == j ) continue OuterLoop;
}
}
Hay varias cosas para tener en cuenta con este código. Lo primero es la capacidad para etiquetar un bucle, para esto se coloca un ‘label’ separado por ‘:’ de la declaración del bucle, esto permite identificar varios bucles encadenados de tal manera que se pueda saltar hacia cualquiera de ellos con la palabra reservada ‘continue’

fuera La palabra reservada ‘continue’ solamente es valida dentro de una estructura de bucle, de ser escrita porque generara un error de compilación. Esta palabra reservada sirve para saltarse o parar la iteración actual del bucle pasando a donde se le indique en la etiqueta, si no se indica etiqueta se salta la iteración del bucle donde se encuentre.

Para saltarse el bucle completo es necesario recurrir a la palabra reservada ‘break’. Esta palabra reservada puede ser utilizada tanto en un bucle como en una estructura ’switch’ y tiene el mismo comportamiento dentro de los bucles que ‘continue’.

Etiquetas: , | Comente »

Capitulo 5 – Certificacion Java

Mayo 20, 2008 - 7:30 am - Posted by Camilo Nova

La relación de herencia ‘extends’ es llamada “es un”. Si jaguar extiende de vehículo, entonces jaguar “es un” vehículo.

La relación “tiene un” proviene cuando una clase declara un atributo, así <clase> tiene un <atributo>. Si jaguar declara un atributo Motor, entonces jaguar “tiene un” Motor y “es un” vehículo.

La encapsulacion se refiere a la capacidad de tener atributos (propiedades) y métodos (comportamiento) unidos en una clase.

Una buena encapsulacion requiere que todos los atributos sean declarados ‘private’, lo cual a su vez es una buena practica de programacion.

La relación “tiene un” esta relacionada con la encapsulacion y “es un” con la herencia.

Alta Cohesión y Bajo Acoplamiento. La cohesión se refiere a como es la estructura interna de una clase y el acoplamiento a su relación con las demás.

En caso de una conversión implícita (cast) de tipos de datos primitivos no permitida, el error es informado en tiempo de compilacion.

Importante para recalcar en una conversión implícita:

1) No existe conversión entre tipos booleanos y no-booleanos

2) Un tipo de dato primitivo se puede convertir en otro dato primitivo de mayor o igual tamanno

Una conversión explicita es aquella que el programador determina en código fuente, la implícita es aquella que da por hecha el compilador.

Sobreescribir un método es cambiar el comportamiento de un método definido previamente, Sobrecargar es implementar la funcionalidad de un método usando el mismo nombre pero diferentes parámetros.

A partir de la versión 5.0 el tipo de retorno de un método sobreescrito puede ser una clase que herede o implemente la clase o interfaz con la cual fue declarado el tipo de retorno en el método. Es decir si el método en la clase padre tiene un tipo de retorno “Carro” es valido que una clase que sobreescriba ese mismo método implemente un tipo de retorno “Cadillac”, claro si, Cadillac “es un” Carro.

Una sobrecarga de método es una funcionalidad que permite escribir varios métodos con el mismo nombre en una misma clase, teniendo diferentes parámetros pero el mismo tipo de retorno.

Un método puede ser sobreescrito (Overwrite) o sobre cargado (Overloaded) a la vez en una clase que hereda.

Elementos importantes a resaltar:

-Dos o mas métodos con el mismo nombre y diferentes parámetros o en orden distinto se dice que son sobrecargados (Overloaded)

-Dos métodos sobrecargados pueden tener el mismo o diferente tipo de retorno

-Los métodos sobrecargados son practicamente independientes entre ellos

-Cualquiera de los métodos de la superclase pueden ser sobrecargados por la subclase

-Diferentes métodos sobrecargados pueden tener diferentes tipos de declaraciones ‘throws’

-Diferentes métodos sobrecargados pueden tener diferentes modificadores

Los métodos constructores de la clase no pueden ser sobreescritos, pero si pueden ser sobrecargados en la misma clase

Recordemos:

Un constructor debe tener el mismo nombre de la clase y cero o mas parámetros sin tipo de retorno.

Una clase puede tener mas de un constructor, si no se define un constructor el compilador define uno por defecto sin argumentos.

Etiquetas: , | 1 Comentario »

AxiaCore Blog

Publicidad

Etiquetas

Nosotros Leemos

Comentarios Recientes:

  • Wiiich0: Buen dato y gracias por compartir conocimiento. Salu2
  • NMarthacecilia: Hola .yo tambien lo conoci en un momento pequeño ,en la fundación molano, es de mi interes volver a...
  • Jorge Chávez: Algo que me ha interesado en los últimos días es intentar agregar nuevos widgets en el filtro, que...
  • Jorge Chávez: Excelente post! Sin duda los filtros son un problema con la falta de documentación oficial, pero en lo...
  • CBTIS_102: pzz la vdd python es un programa muy completo y facil, pero a veces los que enseñan python son pesimos,...

Enlaces Recientes:

Archivo

Admin