Cambiar puerto en politicas SELinux (SELinux policy) en CentOS – RedHat 6.4 – Fedora

Para permitir utilizar el puerto 443 (HTTPs) en el servicio sshd con SELinux habilitado, nos podemos basar en la siguiente guía

 

Listado de puertos utilizados por el servicio http

 
Eliminamos del servicio http y lo agregamos al servicio ssh

 

Habilitamos el servicio SSH para que escuche por el puerto 443

 

Agregamos el puerto en el archivo

 

Reiniciamos los servicios

 

 

Descarga recursiva de carpeta utilizando ftp desde terminal linux

Para descargar de manera recursiva los archivos y carpetas contenidos en un directorio, mediante FTP y desde una consula en linux, se puede utilizar el siguiente comando:

 

 

 

Configuración de variables de entorno en Tomcat de Netbeans

Cuando utilizamos el servidor tomcat que viene junto a Netbeans, en ocasiones necesitamos agregar variables de entorno para nuestras aplicaciones java, y aunque existen diversas maneras, a continuación muestro una de ellas:

Archivo setenv.sh

Se debe crear, en el caso de no existir el siguiente archivo:

Donde ~ es la ruta del directorio home del usuario en linux

La ruta puede variar ligeramente si las versiones descargadas e instaladas son distintas.
Contenido:
En el archivo setenv.sh se puede colocar las variables necesarias.

Este archivo será utilizado por el tomcat de nuestro de netbeans al iniciarlo y con ello tendremos acceso a dichas variables en nuestra aplicación java

 

Niveles de Log4j

Cuando utilizamos componentes para gestionar el log de nuestra aplicaciones java, podemos utilizar Log4j. Este logger nos permite trabajar con varios niveles, los cuales incluyen DEBUG, INFO, WARN, ERROR y FATAL, los cuales están definidos en la clase org.apache.logging.log4j.Level

Si no se asigna un nivel de logueo, entonces se utilizará el especificado más recientemente en una clase de nuestra aplicación, según la ejecución de la misma El logger raíz (root) se ubica al inicio de la cadena de herencia y siempre tendrá asignado un nivel de logueo.

El logger es el núcleo del proceso de registro de novedades (logging) de nuestra aplicación.  Cuando utilizamos log4j, existen 5 niveles que se utilizan con normalidad (sin incluir los niveles personalizados).

DEBUG, Nivel de depuración, utilizado para mostrar información muy detallada de eventos que suceden en el sistema. Se recomienda su utilización para depurar aplicaciones

INFO, Nivel utilizado para proporcionar mensajes informativos que resalten el progreso de la aplicación de manera general.

WARN, Nivel utilizado para alertar sobre situaciones potencialmente dañinas.

ERROR, Nivel utilizado para proporcionar mensajes de error ante eventos que podrían permitir que la aplicación continúe funcionando.

TRACE, El nivel de seguimiento es utilizado para proporcionar información sobre eventos con mayor detalle que el nivel de depuración (DEBUG)

FATAL, En nivel Fatal, está destinado para eventos que producen errores muy graves que presumiblemente dará lugar a que la aplicación deje de funcionar.

Adicionalmente, existen dos niveles especiales de logueo disponibles:

ALL, Este nivel tienen el rango más bajo posible y es utilizado para activar todos los registros de logueo.

OFF, Este nivel tiene el rango más elevado posible y es utilizado para desactivar el logueo.

 

¿Qué es un patrón de diseño de software?

Un patrón de diseño de software es una solución a un problema común o repetitivo. Los patrones de diseño se los utiliza mucho en la programación orientada a objetos y se los puede clasificar en: patrones de construcción, patrones de estructuración, patrones de comportamiento y patrones compuestos.

Patrones de construcción

Están enfocados en la conceptualización de las formas para crear objetos, de esta forma los métodos de instanciación de clases se encapsulan en este tipo de patrones. Su utilidad radica en que si cambia la manera de instanciar una clase, las actualizaciones requeridas en nuestra aplicación serán mínimas o mejor aún innecesarias.

 

Patrones de estructuración

Están enfocados en conceptualizar la interfaz de uno o varios objetos con el fin de separar su implementación. Son útiles también para abstraer las relaciones de herencia o de composición presentes en varios objectos.

 

Patrones de comportamiento

Están enfocados en la estructuración de datos y la organización de las interacciones, procesamiento de datos y la distribución de los distintos algoritmos entre los objetos.

 

Patrones compuestos

Son patrones formados a partir de la combinación de uno o varios patrones de los tipos descritos anteriormente.