Archive for noviembre, 2008

5 aplicaciones Windows que no te pueden faltar

Voy a presentar 5 aplicaciones para Windows que ahora mismo en mi equipo son imprescindibles. Todas ellas son gratuitas, aunque no todas libres.

Una característica común es que son simples y consumen pocos recursos.

Y empezamos ya:

  1. 7-Zip: ¿Por qué seguir usando un winzip de evaluación si tenemos 7-Zip?. Magnífica aplicación libre.
  2. Notepad++: Otra magnífica aplicación libre, en esta ocasión para ampliar enormemente las capacidades del clásico notepad. Pestañas, coloreado de sintaxis y muchísimo más.
  3. WinMerge: Esta estupenda aplicación nos será tremendamente útil para comparar archivos y directorios completos. Además también es libre.
  4. Foxit Reader: Este lector pdf es un magnífico sustituto del Acrobat Reader. Muchísimo más rápido y ligero. Pruébalo y no volverás a usar el de Acrobat. Tiene una versión gratuita (no libre) que es la que yo utilizo y además una de pago que le añade muchas más opciones y con un precio bastante asequible (40 $).
  5. PDF Creator: Otra aplicación libre. En este caso se nos instala una nueva impresora que nos permite “imprimir” a un archivo pdf. Es ideal por ejemplo en un portátil en el que no tenemos siempre la impresora a mano.

Espero que os guste la lista. Si conocéis otras aplicaciones que podrían estar aquí, poned un comentario.

27 noviembre 2008 at 8:16 pm Deja un comentario

¿Qué es Spring? Explicación básica y descripción

Hola a todos. Esta es una pequeña entrada para presentar el framework Spring, desarrollo de código libre de la empresa Spring Sources.

Lo primero que hay que entender de Spring, es que es un conjunto de módulos, de los cuales podemos utilizar los que queramos. Digo esto porque parece que hay bastante confusión comparando Spring con Struts por ejemplo, cuando esa comparación sería con el módulo Spring MVC.

Spring

El núcleo de Spring, su “core”, realiza lo que se llama inversión de control, más concretamente inyección de dependencias. Básicamente lo que significa esto es que la creación de nuestros objetos las lleva a cabo un contenedor externo inyectándolos a otros objetos que dependan de los primeros. Además esto se logra sin que nuestro código tenga dependencia alguna con Spring, salvo la clase que cree el contenedor Spring.

La primera ventaja que tenemos es que desaparece de nuestro código toda la creación de objetos y paso de dependencias, con lo que tendremos un código más limpio. Eso sí, aparece un xml (habitualmente) que refleja los objetos a crear y las relaciones entre ellos.

Pero en mi opinión la principal ventaja de utilizar Spring, es que nos anima a que hagamos una programación basada en interfaces, con lo que se logra el máximo desacoplamiento entre clases. Nuestro objeto A depende del interface IB únicamente. La implementación de IB que voy a utilizar en A la defino en el xml, siendo extremadamente sencillo cambiar dicha implementación, sin tocar nada del código.

umlspring1

Algunos de los otros módulos que Spring nos proporciona son:

  • AOP o Programación Orientada a Aspectos, que merece una entrada para ella sola.
  • Acceso a base de datos.
  • Transacciones.
  • Acceso a recursos (internacionalización por ejemplo).
  • Validación.
  • MVC, es decir, Modelo Vista Controlador.

Seguro que en este blog en un futuro aparecen ejemplos de más de uno de ellos.

20 noviembre 2008 at 5:49 pm 10 comentarios

Instalando Hudson sobre Tomcat en Ubuntu 8.04

En esta pequeña entrada voy a comentar los retoques que he tenido que hacer para conseguir instalar Hudson sobre Tomcat en mi XUbuntu 8.04 (estoy seguro de que en una Ubuntu es igual).
Hudson

Para empezar me descargué el war de la web de Hudson e instalé Tomcat a través de Synaptic (la versión que instala es la 5.5).

Quería desplegar Hudson a través de la aplicación de manager que viene con Tomcat, por lo que añadí un usuario con rol admin en /etc/tomcat5.5/tomcat-users.xml.

Entré en http://server:8180/manager/html (el puerto 8180 es con el que se ha instalado por defecto) y a través del formulario intenté desplegar el war (en la parte de “deploy” y “select war file to deploy”). Una rápida búsqueda en Google me llevó al problema (Inglés en inglés) y a la solución (Inglésen inglés): añadí al final de /etc/default/tomcat5.5:

TOMCAT5_SECURITY=no

Tras hacer esto (y tras reiniciar Tomcat como tras cada paso) Hudson se desplegó correctamente. Ahora sólo quedaba apuntar mi navegador a http://server:8180/hudson/ y esperar a que Hudson terminara su configuración. Pero de nuevo apareció otro error, en este caso de permisos. La solución estaba en el mismo lugar que la anterior, y esto fue lo que hice:

  • Cree el directorio /home/hudson y le puse de propietario tomcat55:nogroup el usuario con el que corre Tomcat por defecto. Además le di permisos rwxr-xr-x.
  • Edité el script para lanzar Tomcat (/etc/init.d/tomcat5.5) añadiendo en la parte que se define JAVA_OPTS: -DHUDSON_HOME=/home/hudson

Tras el último reinico, ¡por fin se terminó la instalación!. Ya podemos ver la página principal de Hudson.

hudson_3_640

Un poco vacía, pero ya la iremos llenando… ¿verdad?

10 noviembre 2008 at 9:25 pm 5 comentarios

Gestión de dependencias en OSGi (y 2)

En la primera parte de esta entrada vimos cómo exportar e importar paquetes, y ahora vamos a ver el funcionamiento con varias versiones de dichos paquetes.

Para empezar, es el momento de mejorar nuestro Logger:

package org.tcymu.osgi.log.logger;

import java.text.SimpleDateFormat;
import java.util.Date;

public class Logger {
	private SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss.S");
	private Date date = new Date();

	public void log(String msg) {
		date.setTime(System.currentTimeMillis());
		System.out.println(dateFormat.format(date) + ": " + msg);
	}
}

Y también actualizamos las siguientes líneas del MANIFEST para cambiar su versión:

Bundle-Version: 1.0.1
Export-Package: org.tcymu.osgi.log.logger;version="1.0.1"

Si empezamos a instalar de nuevo los módulos (hemos generado una nueva versión logbundle-1.0.1.jar) en Felix, comprobamos que podemos perfectamente tener dos versiones de una librería (en este caso nuestro Logger) instaladas, y que cada aplicación según su configuración utilizará una u otra. Si hacemos la prueba vemos que si tenemos las dos versiones del Logger va a utilizar la versión 1.0.1. ¿Por qué?. La respuesta es que version="1.0.0" se interpreta como version >= 1.0.0 y el contenedor selecciona la mayor. ¿Existe otra manera de definir las versiones?. Por supuesto. Los intervalos:

version="1.0.0" se interpreta como version >= 1.0.0
version="[1.0.0,1.1.0)" se interpreta como 1.0.0 <= version < 1.1.0
version="(1.0.0,1.1.0]" se interpreta como 1.0.0 < version <= 1.1.0

NOTA: Nótese la notación estilo matemático para definir los intervalos abiertos o cerrados.

Por lo tanto si modificamos el MANIFEST de nuestro módulo de aplicación, en concreto la siguiente línea:

Import-Package: org.osgi.framework,org.tcymu.osgi.log.logger;version="[1.0.0,1.0.0]"

comprobamos que ahora hemos forzado a que utilice la versión antigua.

También debemos conocer que en el caso de que tengamos módulos que exportan un mismo paquete con una misma versión, todavía podemos diferenciarlos y forzar la carga de uno determinado mediante la utilización de atributos. Por ejemplo, si tenemos exportado nuestro Logger de esta manera:

Export-Package: org.tcymu.osgi.log.logger;version="1.0.1";provider="tcymu"

Y existiera otro módulo que exportara el mismo paquete, se podría forzar a utilizar nuestro paquete mediante:

Import-Package: org.tcymu.osgi.log.logger;version="1.0.1";provider="tcymu"

Existen más posibilidades que dejaremos en el tintero de momento, como por ejemplo la directiva resolution, el atributo use, la fragmentación de módulos o la dependencia de módulos (Require-Bundle). Se puede ver todo esto en la especificación descargable (previo registro) en la web de OSGi.

Y esto es todo de momento. Próximamente veremos la utilización de servicios en OSGi.

3 noviembre 2008 at 7:50 pm 1 comentario


Mi perfil

View Miguel Orbegozo's profile on LinkedIn

Feedjit

Feeds

Otros…

BlogESfera Directorio de Blogs Hispanos - Agrega tu Blog

Bitacoras.com

Add to Technorati Favorites