Plantilla en Java del patrón Singleton para Eclipse

Parafraseando a Groucho Marx: éstos son mis títulos de post. Si a usted no le gustan, tengo otros 😉

Warning: post muy técnico.

Si programas en un lenguaje orientado a objetos, es probable que te hayas encontrado a menudo con el patrón singleton. Últimamente me he encontrado tecleando las líneas de este patrón en Java una y otra vez, con lo que se me ha encendido la bombilla de la pereza: «y ésto… ¿no lo podré automatizar?» Por supuesto. En Eclipse es sencillo:

Window->Preferences->Java->Editor->Templates. Click en New e insertar el siguiente código. Darle un nombre («singleton» podría ser una decisión acertada 😉 . Cuando quieras usar el patrón en tus clases Java, escribe «singleton» y pulsa Ctrl+Espacio. ¡Magia!

private static ${enclosing_type} instance;
private ${enclosing_type}(){}
public static ${enclosing_type} getInstance(){
if(null == instance){
instance = new ${enclosing_type}();
}
return instance;
}

Nota: ojito, que esta forma de implementación del patrón parece sufrir una condición de carrera en el bloque if … una posible solución sería inicializar la referencia estática en la propia sección de declaraciones.

Cómo borrar la caché de credenciales de Eclipse

Si trabajas con Eclipse y Subversion (plugin Subclipse) tal vez te haya pasado: has metido mal el login y/o password en la ventana de autenticación y quieres poner el correcto. O bien, has puesto el correcto pero al día siguiente te comunican que ha cambiado. Eclipse no te dejará cambiarlo, se acordará constantemente del viejo. ¿Cómo arreglarlo? Borrándole la memoria 🙂 Es decir, borrando el fichero caché de credenciales que en mi PC se guarda aquí:

~/.eclipse/org.eclipse.platform_3.3.0_1543616141/configuration/org.eclipse.core.runtime/.keyring

Espero que al menos os sirva para ahorraros el quebradero de cabeza que he sufrido (y a mí para recordarlo en el futuro…)

Ubuntu y Tomcat : silencio en los logs

Ésta es fácil: has instalado Tomcat 5.5 y el sun-java5-jdk para empezar a desarrollar JSPs y servlets. Parece que todo va bien cuando lanzas Tomcat:

$ export JAVA_HOME=/usr/lib/jvm/java-1.5.0-sun-1.5.0.11/
$ sudo /usr/share/tomcat5.5/bin/startup.sh
Using CATALINA_BASE: /usr/share/tomcat5.5
Using CATALINA_HOME: /usr/share/tomcat5.5
Using CATALINA_TMPDIR: /usr/share/tomcat5.5/temp
Using JRE_HOME: /usr/lib/jvm/java-1.5.0-sun-1.5.0.11/

Pero resulta que por mucho que intentas conectarte a localhost:8180 , no hay conexión con Tomcat. Un análisis con netstat de los puertos a la escucha revela que el 8180 no está por la labor:
$ sudo netstat -plut
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 *:www *:* LISTEN 3679/apache
tcp6 0 0 *:ssh *:* LISTEN 3602/sshd

¿Dónde está el problema? En un archivo de tipo pipe que se crea en /usr/share/tomcat5.5/logs/catalina.out de forma incorrecta y que de rebote, bloquea Tomcat y no le permite enlazarse con el puerto 8180. La solución, sacada de este blog:

$ cd /usr/share/tomcat5.5/logs
$ sudo mv catalina.out catalina.out.old
$ sudo touch catalina.out
$ sudo chown tomcat55:nogroup catalina.out

Ahora, reiniciamos Tomcat y ¡listo! Ya podemos empezar a desarrollar nuestros servlets en http://localhost:8180

Fedora Core 8: IMPRESIONANTE

1.pngMañana día 8, a las 3 GMT, verá la luz Fedora Core 8. Aparte de las versiones (spins) GNOME y KDE, esta vez también publicarán otras 3 spins: Games, Developers y Electronic Labs. Entre las novedades a nivel de paquetes, se incluyen:
* PulseAudio (nuevo servidor de sonido)
* un nuevo look&feel
* CodecBuddy (codeina) una pequeña aplicación que salta al intentar ver u oír archivos multimedia con codecs propietarios (explica por qué Fedora no los soporta de serie y ofrece ayuda para conseguir esos codecs si insistimos en usarlos)
* system-config-firewall (nueva herramienta gráfica para la configuración del firewall)
* mejoras en el gestor de impresoras (al enchufar una nueva impresora se autoconfigurará automáticamente)
* mejoras en los interfaces gráficos de gestión de Bluetooth
* Soporte Java: IcedTea (la compilación de OpenJDK para dejarla niquelada en Fedora)
* inclusión del NetworkManager 0.7 (que entre otras mejoras incluye la gestión de los passwords de redes wireless WPA Enterprise – como es el caso de Eduroam – a través del keyring)
* mejoras en el soporte de portátiles (suspender/hibernar, mejor soporte de teclas multimedia, mejor aprovechamiento de la batería)
* Compiz instalado por defecto (se activa desde Preferences > Desktop Effects)
* Compiz Fusion (la integración de Compiz y Beryl está disponible en los repositorios a través de YUM)
* mejoras en el gestor de paquetes (a través de Pirut se pueden crear muy fácilmente y de forma gráfica las definiciones de nuevos repositorios)
* el proyecto «online-desktop» es directamente instalable a través del paquete online-desktop de los repositorios de Fedora (sólo por esto, este fin de semana mismo actualizaré mi FC6 a Fedora Core 8)
* mejoras en la seguridad (a través de SELinux y PolicyKit)
* gestión segura a través de SSL y certificados digitales de máquinas virtuales con Xen, KVM & QEMU
* nuevo sistema de ayuda a la traducción online – Transifex-
* un nuevo sistema de loggin – Rsyslog –
* una versión personalizada de Eclipse (Fedora Eclipse) que viene con numerosos y útiles plugins preinstalados (JDT, CDT, Autotools, Mylyn, PHPEclipse, Specfile Editor, PyDev, ChangeLog y soporte de CVS, Subversion e incluso de Git !).

Para más información y detalles, recomiendo la página wiki de novedades de la versión 8 de Fedora. Lo dicho, IMPRESIONANTE.

Beta de Zend Studio para Eclipse

zend_studio_box_gif.gif Zend acaba de lanzar una versión beta del entorno de desarrollo Zend Studio para Eclipse bajo el nombre en clave «Neon». Basado en Zend Studio y el proyecto Eclipse PHP Developers Tools (PDT), Zend Studio for Eclipse se convierte así en el IDE para PHP más potente del mercado, ofreciendo así al desarrollador profesional de PHP la potencia de Zend Studio y el soporte multilenguaje de Eclipse y su enorme conjunto de extensiones (plugins).

En concreto, Zend Studio para Eclipse aporta:
* Las ventajas de Eclipse/PDT:
o Una comunidad de millones de usuarios y miles de desarrolladores
o Cientos de plugins
o Soporte multi-lenguaje en una única herramienta (Eclipse)
o Coloreado de sintaxis PHP, autocompletado de código e inspección de métodos y atributos
o Soporte básico de depuración de scripts PHP

* Valor añadido de Zend Studio:
o Soporte de depuración más avanzada (permitiendo debugging local como remoto)
o Soporte a la refactorización de código
o Análisis de rendimiento y Code Coverage
o Soporte de baterías de test PHPUnit
o Integración mejorada con Zend Framework
o Posibilidad de edición HTML WYSIWYG
o Integración con Zend Platform
o Herramientas de migración para los usuarios de Zend Studio
o Integración BIRT
o Instalación simplificada

Ya es posible descargar gratuitamente una copia de la beta