TIP: Convertir fecha y hora de String a java.sql.Date/Time

Esta es una forma simple de poder convertir fechas y hora de formato String a formato java.sql.Date y java.sql.Time respectivamente:

Convirtiendo Fecha de String a java.sql.Date:

String fecString = "2010-12-30"
java.sql.Date fecFormatoDate = null;
try {
      SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd", new Locale("es", "ES"));
      fecFormatoDate = new java.sql.Date(sdf.parse(fecString).getTime());
      System.out.println("Fecha con el formato java.sql.Date: " + fecFormatoDate);
} catch (Exception ex) {
      System.out.println("Error al obtener el formato de la fecha/hora: " + ex.getMessage());
}

Convirtiendo Fecha de String a java.sql.Time:

String horString = "10:28:31"
java.sql.Time fecFormatoTime = null;
try {
      SimpleDateFormat sdf = new java.text.SimpleDateFormat("hh:mm:ss", new Locale("es", "ES"));
      fecFormatoTime = new java.sql.Time(sdf.parse(horString).getTime());
      System.out.println("Fecha con el formato java.sql.Time: " + fecFormatoTime);
} catch (Exception ex) {
      System.out.println("Error al obtener el formato de la fecha/hora: " + ex.getMessage());
}

Los usuarios no aprenden: contraseñas débiles

La verdad es increíble como muchos de los usuarios que trabajan en empresas no le toman la importancia debida a sus contraseñas y mas aun si son servicios como el correo electrónico.

Les comento que hace unos días atrás estuvimos con un Analista de Seguridad de la empresa donde laboro creando un pequeño laboratorio, el cual consistía en encontrar la mayor cantidad de usuarios que dejan sus contraseñas con palabras que son tan fáciles de encontrar que casi ni demando esfuerzo.

Para esto creamos una pequeña aplicación en Java, que consistía en leer una lista de usuarios colocando una contraseña al azar y comenzábamos a escanear la cantidad de usuarios que tenían esta contraseña y vaya sorpresa que nos dimos, no habíamos llegado ni a la mitad y ya teníamos 97 usuarios con esta contraseña.


La empresa tiene una política de capacitación y orientación para este tipo de temas, es mas, siempre se les indica que deben de cambiar la contraseña del correo de forma periódica, pero al parecer a los usuarios poco les importa lo critico que podría ser esto. Es tan cierto al decir que el eslabón mas débil en la seguridad son los usuarios.

Tal vez muchos se preguntaran, ¿y porque no utilizaron herramientas ya existentes?, bueno la verdad decidimos crear esta pequeña aplicación como punto de partida debido a que le seguiremos agregando mas cosas y tal vez mas adelante tener una herramienta definitiva para estos fines.

Añadir librerías dinámicas (*.dll, *.so) en Glassfish

Hola de nuevo por aqui retomando el blog ya que lo he tenido un poco olvidado, pero no por no querer postear si no que el trabajo me esta consumiendo lamentablemente y casi no he tenido tiempo de poder escribir algo. Pero bueno trataremos en lo posible de seguir aportando en el poco tiempo que podamos tener. En esta oportunidad estuve trabajando con un servicio web sobre glassfish, el cual este servicio hacia uso de una libreria que esta a su vez utilizaba librerías del tipo *.so, esto obviamente sobre linux, el tema es que me dedique a buscar informacion para poder ver la forma de como agregar esta librerias al library_path para que se puedan utilizar desde glassfish, y era tan simple como parece.

Esto lo realice sobre un servidor RHEL 5.4 x64, y con la version 2.1.1 de glassfish. Entonces para esto solo tendremos que acceder a la configuración del servidor por intermedio del administrador web y ubicarnos en “Application Server” luego nos dirigimos a la pestaña “Configuración JVM” y luego en “Configuración de Ruta”, una vez alli nos ubicamos en el ultimo cuadro de texto que dice “Sufijo de ruta de biblioteca nativa” y alli agregamos la ruta de las librerias que utilizaremos

y prácticamente eso seria todo. Ojo que esto es una forma de hacerlo, no trato de decir que sea la única, tal vez alguien conoce de alguna otra manera de hacerlo y lo pueda compartir.

¿Quieres una memoria de pingüino?

Algo sugestivo el titulo :). Revisando algunos blogs por la red me tope con este interesante post, en donde el autor te invita a participar en un curioso sorteo en el cual el premio no es nada mas ni nada menos que un pendrive o memoria usb de 2 Gb. de capacidad con el diseño de nuestro gran amigo Tux.Bueno, los invito a participar, a ver si tenemos algo de suerte. Podemos inscribirnos hasta el 2 de octubre.

MPD + Sonata + Conky en Archlinux

Hace poco revisando por la web me tope con este post en ubuntulife, sobre unos scripts que hace uso de conky para mostrar el cover en tu escritorio de tu cancion que en ese momento estas reproduciendo, pero adaptado para el reproductor DeadBeef. Bueno en vista que yo utilizo MPD y Sonata como reproductor, decidi adaptar estos scripts, haciendo solo unas pequeñas modificaciones. Ya en el link que indico te dice como hay que configurarlo, yo solo pondre los dos archivos que modifique para este caso:

Archivo db.conky

# An album art conky for MPD + Sonata
background no
update_interval 1
cpu_avg_samples 2
net_avg_samples 2
double_buffer yes
no_buffers yes
text_buffer_size 1024
imlib_cache_size 0

own_window yes
own_window_type override
own_window_transparent yes
own_window_hints undecorate,sticky,skip_taskbar,skip_pager,below

border_inner_margin 1
border_outer_margin 0

minimum_size 400 100
maximum_width 1000

alignment bl
gap_x 4
gap_y 30

draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_shade_color 181818

use_xft yes
xftfont Droid Sans:size=9
xftalpha 1.0
uppercase no
override_utf8_locale yes
default_color 0b0b0b

color1 606060

TEXT
${voffset 7}${goto 140}${font Droid Sans:size=9:bold}$mpd_artist$font
${goto 140}$mpd_title
${goto 140}$mpd_album
${goto 140}${font Droid Sans:size=8}$mpd_elapsed/$mpd_length$font
${texeci 10 ~/.config/conky/db-cover.sh}${image ~/.config/conky/conkyCover.png}

Archivo db-cover.sh

#! /bin/bash
# An album art script for MPD + Sonata

ARTCACHE=$HOME/.covers
ARTIST="`sonata info | grep 'Artista' | cut -d":" -f2 | sed 's/^[[:space:]]//g'`"
ALBUM="`sonata info | grep 'Álbum' | cut -d":" -f2 | sed 's/^[[:space:]]//g'`"
CURCOVER="$ARTCACHE/$ARTIST-$ALBUM.jpg"
CONKYDIR="$HOME/.config/conky"
COVER="$CONKYDIR/conkyCover.png"

if [ ! -f "$CURCOVER" ]; then
 convert $CONKYDIR/Vinyl/base.png $CONKYDIR/Vinyl/top.png \
 -geometry +0+0 -composite "$COVER"
else
 cp "$CURCOVER" "$COVER"

 ASPECT=$(($(identify -format %w "$COVER") - $(identify -format %h "$COVER")))

 if [ "$ASPECT" = "0" ]; then
 convert "$COVER"  -thumbnail 300x86 "$COVER"
 convert "$COVER" -crop 86x86+$(( ($(identify -format %w "$COVER") - 86) / 2))+0 +repage "$COVER"
 else
 convert "$COVER"  -thumbnail 86x500 "$COVER"
 convert "$COVER" -crop 86x86+0+$(( ($(identify -format %h "$COVER") - 86) / 2)) +repage "$COVER"
 fi
 convert $CONKYDIR/Vinyl/base.png "$COVER" -geometry +4+3 \
 -composite $CONKYDIR/Vinyl/top.png -geometry +0+0 -composite "$COVER"
fi

Y bueno eso seria todo, definitivamente esto se podria mejorar. Aqui un ScreenShoot