Una ssh no acaba, aunque sus comandos hayan finalizado

Si dentro de una conexión ssh algún comando hace referencia a la salida standard, OpenSSH no cierra la conexión.

Hay que ejecutar todo con >/dev/null

 

http://www.snailbook.com/faq/background-jobs.auto.html

 

Dejar «hueco» en un layout de Grails

Los layouts de grails vienen con tres «huecos» predefinidos, que rellenarán los gsps concretos:

  • Title
  • Head
  • Body

Pero es posible definir «huecos personalizados» de la siguiente forma.

En el layout, definir el «hueco mediante»:

<g:pageProperty name=»page.nombre-del-hueco»/>

 

Y en la gsp, definir el contenido mediante:

    <content tag=»nombre-del-hueco»>
        <h1>Menu</h1>
     </content>

Comprobar un password de usuario manualmente en Grails, saltandose el proceso de Spring Security

El plugin de grails de SpringSecurity ofrece un montón de funcionalidad maravillosa, pero no pone las cosas fáciles para algunas tareas. Por ejemplo, en el típico caso de querer cambiar una contraseña, donde hay que comprobar el password viejo antes de establecer el nuevo, no existe documentación  al respecto.

Tras mucho investigar y leer código, la solución al final es bastante sencilla:

springSecurityService.passwordEncoder.isPasswordValid(user.password, oldPassword, null)

El último parámetro, en lugar de null, debe ser el tipo de salt que utilices. En el caso de Bcrypt se ignora, por lo que está bien pasar null

Establecer el idioma para el cliente de test de Django

Si necesitas especificar un idioma para el cliente de test de Django (django.test.client.Client), puedes hacerlo especificandolo en el settings, mediante la variable:

LANGUAGE_CODE=»en-us»

Comandos de linux poco conocidos: «yes»

De vez en cuando, uno tiene que realizar un proceso que requiere contestar a un montón de preguntas por consola. Por ejemplo, en un proyecto de grails, cada vez que regenerabamos mediante scaffolding, teníamos que aceptar que reemplazase cada una de las clases del proyecto. Este proceso de repetir una y otra vez «y» ENTER, «y» ENTER, «y» ENTER puede llevarte rápidamente hasta la locura, a si que aquí va una ayuda.

En linux tenemos el comando «yes». Si se ejecuta sin parámetros, escribirá una linea con una «y» por pantalla hasta el infinito. Si se ejecuta con un parámetro, escribirá las lineas con ese parámetro.

Por lo tanto para lanzar un comando, y responder con una «y» a todas las preguntas basta con hacer

yes | comando

Y para responder con una «s», por ejemplo:

yes s | comando

Happy coding! 🙂

Error de Amarok2 en Ubuntu 9.04

Amarok2 utiliza el nuevo sistema de sonido de kde «phonon». En varios ordenadores hemos tenido el mismo problema: Al arrancar sale un mensaje que dice algo similar a «The audio playback device Intel ICH5 with CMI9761A+ (Intel ICH5) does not work. Falling back to default».

Solución:

Instalar los siguientes paquetes:

#apt-get install systemsettings pulseaudio phonon-backend-xine

Ejecutar systemsetings. Ir a Multimedia

En la pestaña Backend, elegir xine

En la pestaña DEvice Preference, en Audio Output/Musimarcar Pulseaudio, y comprobar que funciona pulsando el botón Test. Si es así, subirlo al primero de la lista con el botón Prefer, y aplicar los cambios con Apply

La siguiente vez que arranques Amarok, todo debería funcionar estupendamente 🙂

Krusader no abre los archivos rar, en su lugar lanza ark

Para solucionarlo, basta con eliminar el mimetipe application/x-rar-compressed desde kcontrol

VLC no muestra correctamente los subtítulos en Ubuntu

Para que VLC muestre correctamente los subtítulos, hay que ir a preferencias/codecs/otros codecs/subtitulos y cambiar la codificación a ISO-8859-1. Luego, ir a video/subtitulos/redibujado de texto, marcar el check de opciones avanzadas, y escoger un tamaño de fuente de 14 o de 16.

Arrancar un servidor de OpenOffice invisible y sin X

Para programar con el framework Java ONE de OpenOffice, es necesario lanzar un servidor OpenOffice que escuche peticiones. Además, cuando se hace en un servidor GNU/Linux sin XWindows, la cosa se complica más.

La solución es utilizar un servidor de X «de cartón piedra»: Xvfb. Con él instalado, basta con hacer lo siguiente (como root):

Xvfb :1 &
soffice -invisible -accept=»socket,host=0,port=2002;urp;» -display :1 &

Modificar elementos de alfresco desde código java

Este es precisamente el tipo de cosas por las que cree el blog. He estado unas 8 horas para conseguir una línea de código.

Para poder modificar elementos (nodos) de alfresco desde java, es necesario hacer uso de un servicio interno: NodeService. Y ese servicio se obtiene con esta simple línea, que me ha costado tanto encontrar:

NodeService nodeService = Repository.getServiceRegistry(FacesContext.getCurrentInstance()).getNodeService();

Una vez con el objeto nodeService ya se pueden crear nodos, borrarlos, o modificar sus propiedades:

//uuid es un String con el uuid que identifica el objeto alfresco

NodeRef nodeRef=new NodeRef(Repository.getStoreRef(), valores.get(uuid));

QName qname=QName.createQName(«{http://www.alfresco.org/model/content/1.0}name»);

nodeService.setProperty(nodeRef, qname, «nuevoNombre»);