miércoles, 24 de junio de 2015

¿Es esto arquitectura?


Interesante artículo de Gregor Hohpe que nos enseña por analogía lo que una documentación de una arquitectura de Software debería contener. Muy resumidamente, una descripción de arquitectura de Software debería mostrar decisiones no triviales u obvias hechas en un sistema. Por ejemplo, describir que en el sistema hay una separación de capa de presentación (Front-End) con la capa de datos (Back-End), es lo mismo que decir que en una casa tenemos puertas que tocan el piso para que la gente pueda caminar por ellas.

Quizás determinar que es trivial y qué no lo es puede despertar sospechas de que estamos en terreno de lo subjetivo, pero creo que a como maduramos como desarrolladores de software, y vamos obteniendo experiencia observando patrones recurrentes en los diseños de sistemas en los que participamos, se va volviendo un poco más claro cuando algo es digno de ser documentado. Esto se nota también en el plano del código de programación cuando intentamos que el mismo sea auto-descriptivo y solo comentamos lo que no parece obvio de entender.

viernes, 5 de junio de 2015

Apache2: Configurar una página local con Host personalizado/customizado (Virtual Host)

1. Crear la carpeta /wwww/domain
sudo mkdir -p /www/domain 

2. Cambiar permisos
sudo chown 755 /www/domain sudo chown -R www-data:www-data /www/domain 

3. Editar Apache2 conf
sudo gedit /etc/apache2/apache2.conf Agregar estas líneas:
<VirtualHost *:80>
    # This first-listed virtual host is also the default for *:80
    ServerName gabo.com
    ServerAlias gabo.com
    DocumentRoot /www/domain
</VirtualHost>

<Directory /www/domain/>
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>

4. Agregar una entrada en /etc/hosts
127.0.0.1 gabo.com 

 5. Create el archivo html para prueba
touch /wwww/domain/index.html Con cualquier código HTML:
<http>
<body>
<h1>Hello!</h1>
</body>
</http>

6. Abrir dominio gabo.com en el navegador.

viernes, 12 de diciembre de 2014

Spring Web: Obtener request actual y generar URL de la aplicación

Una forma sencilla de generar el URL base acorde con el contexto de ambiente de la aplicacion a partir del objeto request:

protected static String getBaseEnvLinkURL() {

   String baseEnvLinkURL=null;
   HttpServletRequest currentRequest =
      ((ServletRequestAttributes)RequestContextHolder.currentRequestAttributes()).getRequest();
   baseEnvLinkURL = "http://" + currentRequest.getLocalName(); // lazy about determining protocol
   if(currentRequest.getLocalPort() != 80) {
      baseEnvLinkURL += ":" + currentRequest.getLocalPort();
   }
   if(!StringUtils.isEmpty(currentRequest.getContextPath())) {
      baseEnvLinkURL += currentRequest.getContextPath();
   }            
   return baseEnvLinkURL;
}

jueves, 13 de noviembre de 2014

Ubuntu: Resolviendo problema de instalación con aptitude

Tratando de instalar el reproducto VLC en mi Ubuntu Linux 14 me daba este error usando el comando:

sudo apt-get install vlc

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 vlc : Depends: vlc-nox (= 2.2.0~rc1-1ppa1~trusty) but it is not going to be installed
       Depends: libavcodec56 (>= 7:2.4~) but it is not going to be installed
       Recommends: vlc-plugin-notify (= 2.2.0~rc1-1ppa1~trusty) but it is not going to be installed
       Recommends: vlc-plugin-samba (= 2.2.0~rc1-1ppa1~trusty) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.


Después de intentar muchos comandos para limpiar los paquetes quebrados, finalmente instalé aptitude y corrí el comando:

sudo aptitude install vlc

Y listo, todos mis problemas de paquetes los resolvió aptitude y pude instalar mi reproductor favorito.