Blog

Cambiar tamaño de las imágenes en una tarea

Desde opencms podemos crear una tarea con la clase org.opencms.scheduler.jobs.CmsCreateImageSizeJob podemos cambiar el tamaño de las imágenes que han subido los usuarios.
La tarea la va a reescalar respetando las proporciones de la imagen, por lo que es muy bueno para evitar imagenes muy grandes subidas por los usuarios.

Antes debemos configurar en WEB-IF/config/opencms-vfs.xml

<loader class="org.opencms.loader.CmsImageLoader">
<param name="image.scaling.enabled">true</param>
<param name="image.scaling.downscale">w:800,h:600,q:97,c:transparent</param>
></loader>

 

El parámetro image.scaling.downscale tiene:

  • w: El ancho de la imagen
  • h: la altura de la imagen
  • q:la callidad de la imagen en porcentaje
  • t: grado de transparencia de la imagen
  • c: color de fondo en hexadecial como c0c0c0

Otros parámetros que podemos configurar son

  • image.folder
  • image.scaling.maxblursize
  • image.scaling.maxsize

La tarea la creamos como el resto:
tareaopencms-cmscreateimagesizejob

Si vagrant no te funciona

Captura de pantalla 2016-04-01 a las 13.27.31

Vagrant es un Docker muy chulo, un virtualizador que nos permite desplegar aplicaciones y entornos seguros de forma que podemos empaquetar dichos entornos y desplegarlos rápida y sencillamente. La ventaja, igual que Docker, es que no metemos máquinas completas y si solo lo mínimamente necesario para que la aplicación pueda ejecutarse. Su instalación es muy sencilla y la creación de máquinas especificas, contenedores, aplicaciones también. Os recomiendo muy encarecidamente que visitéis su web para más información ya que es un campo muy interesante y actualmente es hacia donde tienden todos los ISPs.

Pero, ¿que pasa cuando la máquina se niega a arrancar?. Veamos una posible solución al error `read’: Is a directory @ io_fread – /etc/exports (Errno::EISDIR)

Leer más

Limpiar un disco de una máquina virtual en Virtualbox

Si usáis una máquina virtual dentro de VirtualBox, seguramente hayáis borrado alguna vez ficheros pero vais que el disco sigue manteniendo su tamaño.

La solución es sencilla:

  1. Entrar en la máquina virtual linux
  2. Limpiar de los ficheros que no queremos
  3. Ejecutar “dd if=/dev/zero of=zerofillfile bs=1M” que llenará de ceros todo el espacio libre en el disco
  4. Nos aparecerá un mensaje como “dd: writing ‘zerofillfile’: No space left on device”
  5. Ejecutamos “rm zerofillfile”
  6. Apagamos la máquina virtual con “sudo halt” por ejemplo
  7. Vamos a la carpeta de nuestro ordenador donde se encuentra el fichero del disco. Si tenemos alguna duda podemos verlo en la configuración de la máquina, en el almacenamiento.
  8. VBoxManage modifyhd –compact “RUTA AL FICHERO DEL DISCO”.
  9. Si se trata de un fichero vmdl tenemos que hacer algún paso intermedio:
    1. VBoxManage  clonehd “RUTA AL FICHERO DEL DISCO” “cloned.vdi” –format vdi
    2. VBoxManage modifyhd –compact “cloned.vdi”
    3. VBoxManage  clonehd “cloned.vdi” “RUTA AL FICHERO DEL DISCO” –format vmdk

Como siempre, espero que os sirva.

Filtrar CSS para Safari 9

Como bien sabréis, Safari 9 se ha separado de Chrome, usando el primero webKit, mientras que el segundo usa blink. Aunque parezcan muy similares, al ser el motor de renderizado diferente siempre nos puede dar problemas si “pintamos” nuestras web con un motor (para testear) y de golpe, lo abrimos con otro y nos asustamos.

Por eso, si queréis que en vuestros CSS los ejecute solo Safari y Chrome pase de ellos os recomendamos el poner lo siguiente:

@supports (overflow:-webkit-marquee)
   and (justify-content:inherit) {
    /* Estos estilos solo los ejecutara Safari */
    .poner_aqui_tus_estilos_para_safari {
    }
}

Donde, podréis redefinir vuestras capas y estilos a modo de que Safari los reposicione donde sea necesario. Y todo porque preguntamos al navegador a través de CSS3 si tiene el soporte de esos elementos específicos.

JasperReports el report no encuentra las fonts configuradas en tiempo de ejecución

PROBLEMA:  El informe no funciona porque no encuentra las fonts ya que estas pueden variar de una JVM a otra.

Tendríamos una excepción del tipo…

JRFontNotFoundException: Font 'Arial' is not available to the JVM.

SOLUCIÓN:

  1. Instalar las fuentes en la máquina virtual, esto dependerá un poco del sistema operativo, en linux en general se puede optar por instalar el paquete ttf-mscorefonts, para asegurarnos de las fuentes disponibles en nuestra JVM podemos ejecutar el siguiente código:
    public static void main(String[] args) throws Exception {
                System.out.println(Arrays.asList(GraphicsEnvironment
                        .getLocalGraphicsEnvironment().getAvailableFontFamilyNames()));
    }
  2. También podemos hacer que Jasper ignore las fuentes configuradas y las cambie por alguna de las que tenga disponibles, para esto hay que insertar la siguiente propiedad en el report:
    <property name="net.sf.jasperreports.awt.ignore.missing.font" value="true"/>