domingo, 19 de septiembre de 2010

JDownloader: Programa de descargas automáticas

Si necesitamos algún programa para la descarga de archivos publicados en sitios de DD, recomiendo el JDownloader.
La descripción que aparece en el sitio oficial, creo que está más que clara:

JD ofrece descargas múltiples paralelas, reconocimiento de captcha, extracción automática de archivos, administración de contraseñas y mucho más. Adicionalmente, soporta muchos sitios de “encriptación de enlaces”, así que solo tendrá que pegar los enlaces “encriptados” y JD hará el resto. JD puede importar archivos DLC, CCF y RSDF.
Por supuesto, JD es gratuito.


Esta aplicación no puede faltar entre aquellos que descargan mucho desde Inet, especialmente para series o anime, que son muchos enlaces :P


Su utilización no es muy complicada:
- Abrir y configurar a gusto (pestaña "ajustes")
- Para agregar enlaces, ir a la pestaña "Capturador de enlaces", ahí se deben pegar todos los enlaces copiados (se puede copiar más de uno por vez) haciendo clic en "Agregar URL(s)". Ésta es la sección previa  antes de que comience la descarga, ahí se pueden organizar los enlaces en paquetes, poner la contraseña para que se descompriman los archivos (cuando son .rar, .zip, etc), indicar la carpeta de descarga, etc. Para iniciar la descarga hay que dar clic en "Agregar todos los enlaces"... y a esperar se ha dicho ;)

Algunas de las ventajas de utilizarlo:

- Permite la descarga de los principales sitios utilizados (megaupload, rapidshare, etc)
- Detecta captchas de forma automática, no hay que estar digitando los textos que piden en la páginas de forma manual (gran punto!), de esta forma podemos dejar descargando de forma desatendida... no hay que estar mirando cada 2 por 3 la pantalla :P
- En caso de alcanzar los topes de descarga por sitio (sí, algunas veces igual queda lo del límite), el programa se autoimpone la revisión del enlace después de X segundos o X minutos, con esto la autodescarga comenzará apenas esté disponible el sitio nuevamente.
- Al utilizar Java y su máquina virtual (JVM), es un programa multiplataforma.


El detalle que he encontrado, es que tras muchas descargas y sin apagar el computador, el JD tiende a consumir mucha memoria y en algunos casos mucho procesador, para esto la solución es simple, cerrar el programa y volver a iniciarlo :P

Referencia:
JDownloader - Página oficial
JDownloader - Descarga

Aplicación en Java utilizando una base de datos embebida

Desde hace un buen rato he estado tratando de decidir qué base de datos utilizar en una aplicación en Java que estoy haciendo y luego de darle varias vueltas las opciones que quedaban eran:

- HSQLDB (http://hsqldb.org/)
- H2 (http://www.h2database.com/)

De las dos opciones la que más ubicaba era HSQLDB por ser utilizada por programas como el OpenOffice, JDownloader, Sockso, etc. Sin embargo, luego de leer un buen resto, le daré una oportunidad a la H2 :P... esto principalmente porque el desarrollador de ella corresponde al creador original de la HSQLDB.

La gracia de este tipo de bases de datos es que son embebidas, es decir, no es necesario instalarlas en el computador donde se ejecutará la aplicación (programa base), sino que sólo se carga una librería dentro de él y listo :)


Hablando un poco de las bases de dato que dejé cómo opción (H2 y HSQLDB): Como todo en esta vida, hay que ver lo malo y lo bueno...

Lo que siempre habrá de tenerse en mente es que ambas trabajan con archivos de texto para guardar y cargar en el inicio, dejando la información en memoria, por lo que hay que tener en cuenta la capacidad del computador donde se trabajará. De por sí la máquina virtual de java (JVM) tiende a consumir grandes cantidades de memoria con programas que se ejecutan por largo tiempo y con mucho manejo de información. Un ejemplo, la JVM se dispara cuando se descargan cosas con el jdownloader y se deja muchas horas o algunos días encendido (especialmente cuando se bajan pelis :P).

Lo bueno de este tipo de BD es que pueden ser configuradas para ser accedidas sólo por la aplicación que la carga o bien como servidor, evitamos instalar algo adicional para que nuestra aplicación funcione -a estas alturas un gran porcentaje de usuarios tiene instalada por defecto la JVM-, permite trabajar con Hibernate y lo importante es que podemos trabajar con código SQL de forma directa... además del hecho que ambas son opensource :)

Otro punto a favor de este tipo de bases de datos, es que al ser de fácil y rápido uso, nos sirven para hacer pruebas en aplicaciones que serán utilizadas para conectarse a otras bases de datos más robustas.

Ya en un próximo post hablaré un poco de cómo usar la H2 ;)

Referencias:
Wiki - Embedded database
Wiki - Comparison of relational DB
H2 Database Engine
HSQLDB - HyperSQL

domingo, 5 de septiembre de 2010

Screen: múltiples consolas en sólo una ventana

Hace mucho que quería escribir sobre este comando, pero se me había quedado en el tintero así que lo hago ahora :P

El "screen" es un comando que sirve para virtualizar consolas y guardar aquellas que se encuentren abiertas. La mejor utilidad se puede encontrar cuando uno se conecta por ssh a algún computador remoto y zas! múltiples consolas en tan solo una conexión! :D Por qué tanta alegría? cuando se trabaja desde windows por lo general se utiliza algún programa como el putty, teniendo que ejecutarlo cada vez que se necesite tener una segunda ventana, sin embargo, si utilizamos el comando screen, con una ventana nos es suficiente ;)
Para hacer una idea de lo que hablo podemos imaginar al screen como el firefox y sus pestañas, se tiene la base (firefox) y por cada página una pestaña; además, también se puede "guardar la sesión" al momento de cerrar pudiendo volver a cargarla la próxima vez.
Ya dicha la introducción ahora veamos cómo usarlo :)


Iniciar sesión por primera vez

Ejecutar el comando "screen". Hay que hacer notar que la sesión se inicia en la misma carpeta desde donde se ejecutó el comando screen, por lo que todas las ventanas que se creen en la sesión actual cargarán la misma ruta inicial. Por ejemplo, si la ruta donde se ejecuta el comando es en "/var/log/" (pwd = /var/log/), todas las nuevas ventanas que se agreguen comenzarán en "/var/log/" y no en la raíz del usuario.
Ya estando dentro de la sesión de screen, se pueden ejecutar ciertos comandos para hacer varias cosas. Todos los comandos comienzan con "ctrl+a" seguido de la opción a utilizar, es decir: presionar "ctrl" junto con la "a", soltar las teclas y luego escribir la letra que corresponda al comando.
Las combinaciones que más utilizo y algunas otras útiles son las siguientes:

* Crear nueva ventana -> ctrl+a c

* Cambiar de ventana
Acá existen varias formas de hacerlo:

- ctrl+a " <-- muestra el listado de ventanas abiertas. Para seleccionar una ventana hay que moverse con las flechas y presionar enter sobre la ventana elegida
- ctrl+a n <-- cambia a la ventana siguiente
- ctrl+a p <-- cambia a la ventana anterior
- ctrl+a [nro de ventana] <-- cambiar a una ventana específica según posición. Las posiciones comienzan en 0. Por ejemplo: ir a la tercera ventana = ctrl+a 2

* Guardar la sesión actual y salir -> ctrl+a d
La utilidad de guardar una sesión viene dada por el hecho de que al guardar la sesión se guardan todas las ventanas y lo que ahí se estuviera ejecutando.
Al recargar una sesión guardada se carga todo tal cual como estaba al momento de guardar. Esto es especialmente útil cuando se están editando varios archivos, dado que nos evitamos el tener que volver a abrir todo la próxima vez que sigamos trabajando en ellos.

Iniciar una nueva sesión sin perder alguna existente
Sólo hay que iniciar sesión desde cero con el comando "screen"
$ screen

Finalizar sesión
Para finalizar la sesión, sin guardar, sólo hay que cerrar todas las ventanas abiertas. Ejecutar "exit" o "logout" en cada una.


Cargar sesión previamente guardada
Parar cargar cualquier sesión, se debe ejecutar el comando más la opción "r".
$ screen -r
En el caso de que se encuentren varias sesiones guardadas, aparecerá un listado con todas las existentes. Un ejemplo de sesiones creadas sería:

$ screen -r
There are several suitable screens on:
17818.pts-0.box220 (Detached)
19712.pts-0.box220 (Detached)
Type "screen [-d] -r [pid.]tty.host" to resume one of them.

Tal como sale ahí, para iniciar una sesión específica del listado habría que ejecutar la recuperación + el nombre de la sesión a cargar. Por ejemplo:

$ screen -r 19712.pts-0.box220

Soltar sesión que se encuentra "tomada"En el caso de que exista algún corte de conexión y se nos corte la comunicación con el servidor no perdemos lo que teníamos abierto, pero al volver a conectarse y tratar de recuperar la sesión con screen -r nos aparecerá un mensaje de error ya que la sesión "aparentemente" se encuentra en uso... es en estos casos donde aparece la opción "-d".
La opción -d nos sirve para liberar una sesión que se encuentra tomada, pero su mayor uso es en combinación con la opción -r.
Para recargar la sesión en la que nos encontrábamos antes de que se produjera el corte sólo debemos escribir:

$ screen -dr

En el caso de que exista más de una sesión abierta, se debe utilizar los mismo que detallo en la parte de "cargar una sesión guardada" (ver más arriba).

Otras cosas útiles

- ctrl+a A <-- asigna un nombre a la ventana actual
- ctrl+a [ <-- copiar texto en el bufer de screen
Con esta opción se puede copiar algún texto desde el editor que se esté utilizando y luego pegarla en otra ventana (si es que es muy práctico esto!). Para comenzar a copiar hay que moverse con los cursores por la pantalla y presionar la barra espaciadora justo en el punto desde dónde se iniciará la copia, luego para finalizar hay que presionar enter en el punto "hasta" donde se quiere copiar.
- ctrl+a ] <-- pegar el texto del bufer de screen

Configurar la carga de screen

Aparte de lo que comenté anteriormente, es posible configurar varias cosas para "screen" ingresando comandos en el archivo llamado ".screenrc" que se debe dejar en la raíz de la cuenta del usuario que ejecuta el comando.
No me acuerdo qué significa cada comando, así que copiaré como ejemplo el contenido de un archivo que utilizo algunas veces:

startup_message off
hardstatus alwayslastline '%{= wk}%?%-Lw%?%{r}(%{k}%n*%f%t%?(%u)%?%{r})%{k}%?%+Lw%?%?%= %m/%d %C%A'
activity ''

Ese código deja una línea fija en la parte de abajo, mostrando el listado de ventanas abiertas, cuál se está utilizando actualmente y la fecha y hora del servidor.


Lo que encuentro excelente de todo esto, es que es posible conectarse por ssh, iniciar una sesión screen, trabajar todo lo que se pueda, guardar la sesión, cerrar el ssh y después podemos cargar nuevamente la sesión de screen desde donde queramos: otra sesión ssh, el mismo computador, etc.
Es más, si estamos trabajando con screen y se corta internet o la luz, no importa! podemos recargar la sesión de screen cuando nos volvamos a conectar :D
También es práctico cuando se cargan las X, evitas tener muchas ventanas de consolas en la pantalla (xterm, gnome-terminal, etc), pudiendo tener sólo una cargada ocupando espacio y todas las demás de forma virtual.
-