Odia a tu enemigo pero aprende de el: live coding o hot reload

Ahora las «nuevas religiones» disfrazadas de psicología barata + neoliberalismo donde te dicen «vive como un castrado y trabaja como un gilipollas que otros necesitan hacerse ricos de tu sudor», el odio esta prohibido, pues no hijo no, hay que odiar y pensar porque odias, para que no sea un odio irracional y ni un paso atrás.

Pues el famoso Live Coding o Hot Reload del que chulean mucho gilipollas de portátil blanco con manzana de los que dicen «tío, macOs es unix» (hay que ser tonto o mala persona para intoxicar con semejante mierdas y verdades a medias) con sus IDEs modernos y sus lenguajes modernos.

Pues si, odia, pero mola lo de que «algo automágicamente» te compile o relance el proyecto cuando cambias cosas.

Pues lo puedes hacer bien en 4 lineas, si repitió en 4 lineas de bash, y en plan bien no usando una espera activa (es decir quemando CPU en un bucle infinito y sleeps de un segundo) si no usando la maravilla que trae GNU/Linux de Inotify y su comando para shell en Inotify-tools .

En mi caso quería hacer un diagrama con plantuml y hacerlo en plan en una pantalla el editor y el otro el resultado:

file=$1
dirname=$(dirname "$1")
basename=$(basename "$1")
filename=${basename%.*}

java -jar plantuml.jar "$1"
xdg-open "${filename}.png"

inotifywait -m -e create -e modify -e close_write "$dirname" |
while read filename eventlist eventfile
do
  java -jar plantuml.jar "$1"
done

Esta guardado en el git plantuml-watch .

Por cierto os preguntaréis como funciona, básicamente el inotifywait llena el stdout y lo pipeo hacia el read como si fuera un fichero y voy esperando por nuevas lineas. Y también te preguntarás por que monitorizo mas eventos que solo el modify, pues porque el editor que suelo usar es Geany y el mamón hace unas rayadas a bajo nivel en vez de editar el fichero, es como que crea uno temporal en el mismo directorio y copia (moviendo) el contenido al que esta editando.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.