Como convertir imagenes webp a png usando la linea de comandos

El formato webp, es el “nuevo” formato de google para compresion de imagenes sin perdida ideal para internet. Una misma imagen en webp ( 94k ) y en png ( 1.1 M ).

Sin embargo,  no todas las aplicaciones de linux ( o windows o mac ) estan preparadas para trabajar con este formato. Asi que para poder usarlas fuera del navegador deberemos convertirlas.

En linux existe una herramiento webp que vamos a instalar

sudo apt install webp

Y ahora podemos hacer la conversion con el siguiente comando

dwebp <imagen.webp>  -o <imagen.png>

Por si acaso, tambien podemos hacer el camino inverso. Hacer la conversion al nuevo formato webp usando el comando

cwebp <imagen.png> -o <imagen.webp>

Yo ya tengo varios proyectos web y mobiles donde valdria la pena usarla.

Docker Compose Build Image

En la configuración de tu archivo docker-compose.yml, puedes definir si quieres descargar una imagen del dockerhub o si prefieres construirla tu mismo usando el archivo dockerfile de tu proyecto.

Sin embargo, tambien puedes usar las dos instrucciones al mismo tiempo:

build: .
image: testing:prod

En este caso, docker-compose usara el comando build para construir la imagen, pero le pondra el nombre indicado en image 😀

Comandos para manejar npm ( parte I )

NPM es el sistema de gestion de paquetes de nodejs. Con él podemos gestionar las dependencias de nuestros proyectos de #nodejs o #reactnative. También lo podemos usar para instalar aplicaciones globales en nuestro sistema, como por ejemplo: ChromeCast ( aplicación que te permite enviar videos a un chromecast desde la linea de comandos 😉 )

npm init -y

Inicializa el archivo package.json de nuestro proyecto con los valores por defecto. Usar con cuidado porque reescribe el contenido del archivo, si  ya existe.

npm home <paquete>

Abre el navegador con la web oficial del <paquete>

npm repo <paquete>

Abre el navegador con el repositorio oficial del <paquete>

npm outdated

Te indica que paquete tienes desactualizados

npm  prune

Elimina las dependencias que no se estan utilizando

npm list

Te muestra los paquetes que se usan en un proyecto ( ordenado jerarquicamente )

npm dedupe

Intenta reducir las duplicidades de paquetes en tu proyecto

npm audit

Te muestra una lista de bugs conocidos en los paquetes de tu proyecto

npm audit fix

Actualiza los paquetes de tu proyecto que tienen parches de seguridad pendientes.

 

DU Ordenado

Uno de mis comandos favoritos es

du -hs *

el cual me permite conocer los directorios y la cantidad de Gigas que ocupan. Sin embargo, en una lista larga de archivos estos suelen venir desordenados. Y aunque se puede concatenar con el comando sort, al tener estos registros un sufijo ( K, M, G ) suele ser inservible utilizar el comando sort.

Sin embargo, hoy descubri un parametro de sort ( -h ) el cual le permite entender los sufijos. Ahora si tengo una lista de 50 directorios, perfectamente ordenados por tamaño.

du -hs * | sort -h

Como personalizar el login de Drupal, SimpleLogin

El login de Drupal /user/login, suele ser una pagina poco retocada en la mayoria de los sitios drupal. Principalmente, porque no hay un suggestion file para personalizarla ( aunque se puede crear uno, pero hay que indicarlo en el archivo template.php )

Por ejemplo,

function your_themename_theme() {
$items = array();
// create custom user-login.tpl.php
$items[‘user_login’] = array(
‘render element’ => ‘form’,
‘path’ => drupal_get_path(‘theme’, ‘your_themename’) . ‘/templates’,
‘template’ => ‘user-login’,
‘preprocess functions’ => array(
‘your_themename_preprocess_user_login’
),
);
return $items;
}

En este caso, ya podemos crear un archivo llamado user-login.tpl.php en nuestra carpeta templates.

Sin embargo, tambien existe un modulo que nos permite configurarlo de una forma mas plugandplay. Este modulo para personalizar el login de drupal se llama simplelogin.

SimpleLogin, nos permite manejar un login ( bastante simple ) pero mucho mas estetico que el login por defecto que trae drupal

Su configuracion es bastante sencilla. Nos permite definir si queremos un background de fondo, asi como incluir algunos CSS especificos para el login.

 

Como apagar los monitores cuando se activa el screensaver en KDE

Ahora que soy usuario de KDE, tengo un pequeño inconveniente. Cuando se activa el screensaver mis monitores no se apagan.  Y la verdad tener 4 monitores prendidos cuando no los estoy usando … pues no ayuda mucho a ahorrar energia.

Para solucionarlo, usaremos el comando xset

xset dpms force off

Este comando apaga todos mis monitores. Ahora debemos asegurarnos que este comando se ejecute ( preferentemente de forma automatica ) cada vez que se inicia el screensaver.

Para eso, nos vamos a Settings => Notifications y seleccionamos la opcion Event Souce: Screen Saver

Una vez ahi, activamos la opcion Run Command e ingresamos el comando de apagar pantalla. En este caso, le doy una espera de 2 segundos antes de apagar las pantallas y listo … ahora tus monitores no se quedaran prendidos gastando energia cuando esta activo el screensaver.

 

Como ocultar archivos *.pyc en Visual Studio Code

Cuando estoy desarrollando un proyecto en python/django a veces es muy fastidioso tener en la lista de archivos fuente del proyecto a los archivos .pyc

Los archivos *.pyc son los binarios precompilados de python y no sirven para la editar el codigo. Asi que lo mejor es ocultarlos del sidebar.

Para lograrlo debes ir al menu File -> Preferences -> Settings

Y buscar la opcion “exclude”. Ahi debemos agregar el filtro **/*.pyc para ocultar dichos archivos.

AWS S3 Error 403 RequestTimeTooSkewed

Si el servicio de Amazon S3 en algun momento podrias haber obtenido el codigo  de error RequestTimeTooSkewed.  Este error indica que amazon detecto que el fecha hora desde donde se origino la peticion al servicio s3 no concuerda con la fecha hora del servidor s3.

En mi caso, el error se presento usando la libreria knox de nodejs y fue bastante criptico. La funcion callback de knox no generaba ningun error, es decir daba el proceso como valido, sin embargo los archivos no se estaban generando en el s3.

Para validar instale la herramienta aws-shell y ejecute la subida de un archivo con dicha herramienta.

# pip install aws-shell

 

$ aws-shell cp file s3://bucket/file

Al intentar copiar un archivo de ejemplo, ahora si se obtenia el error 403 siguiente:

RequestTimeTooSkewed type,  stating that : The difference between the request time and the current time is too large 

Para solucionarlo debes asegurarte que la fecha hora del servidor este correctamente configurada.

wget –server-response  –spider  http://aws.amazon.com/s3/

Puedes verificar la fecha hora los headers de respuesta de amazon, y compararlos con la fecha hora de tu sistema.