This commit is contained in:
sejo 2021-07-19 11:55:19 -05:00
parent 125e012d5d
commit 42ca58f8cf
8 changed files with 645 additions and 1 deletions

24
src/apuntes.gmo Normal file
View File

@ -0,0 +1,24 @@
# apuntes
recordatorios de procesos
# no computacionales
=> ./recetas.gmi {recetas}
# computacionales
## línea de comandos
=> ./ffmpeg.gmi {ffmpeg}
=> ./imagemagick.gmi {imagemagick}
=> ./ed.gmi {ed}
=> ./postfix.gmi {postfix}
## misc
=> ./guix.gmi {guix}
## web
=> ./jitsi_hacks.gmi {jitsi hacks}

15
src/ed.gmo Normal file
View File

@ -0,0 +1,15 @@
# ed
pequeño editor de texto
# tips
para formatear un texto asignándole cierto número de columnas, primero guarda con 'w' y luego:
```
e ! fmt -w50 %
```
esto toma la salida del comando fmt aplicada al mismo archivo (%), y la toma como contenido del buffer, reemplazando todo lo que había antes.
el comando 'e' es de "edit"

112
src/ffmpeg.gmo Normal file
View File

@ -0,0 +1,112 @@
# apuntes de ffmpeg
notas de usos comunes que le doy a ffmpeg
# "trim" / cortar
```
ffmpeg -i input.video -ss 5 -t 20 output.video
```
donde:
-ss es el tiempo inicial
-t es la duracion total del nuevo video
# escalar
```
ffmpeg -i input.video -vf scale=640:480 output.video
```
y para reducir el tamaño del archivo, suele ser útil recomprimir con crf (constant rate factor)
```
ffmpeg -i input.video -crf 24 output.video
```
en teoría 24 es una compresión difícil de percibir. números mayores comprimen más.
# cambio de framerate
```
ffmpeg -i input.video -r 30 output.video
```
o
```
ffmpeg -i input.video -filter:v fps=fps=30 output.video
```
# cambio de "velocidad"
obtiene un video a 2x de velocidad:
```
ffmpeg -i input.video -filter:v "setpts=0.5*PTS" output.video
```
para hacer 60x (por ejemplo, convertir minutos a segundos):
```
ffmpeg -i input.video -filter:v "setpts=0.016*PTS" output.video
```
# concatenar
hacer lista de videos con el formato:
```
file 'archivo1'
file 'archivo2'
file 'archivo3'
```
y luego:
```
ffmpeg -f concat -i lista.txt -c copy output.video
```
# generar video desde serie de img
```
ffmpeg -framerate 30 -i frame-%04d.tif -pix_fmt yuv420p -c:v libx264 <output.mp4>
```
# crop (y exportar desde recordmydesktop)
```
ffmpeg -i out.ogv -filter:v "crop=1280:720:0:0" -codec:v libx264 -codec:a libmp3lame output.mp4
```
# video a partir de una imagen
```
# video de una imagen,
# 10 segundos, 30 frames por segundo
ffmpeg -loop 1 \
-i imagen_verde.png \
-t 00:00:10 -r 30 \
video_verde.ogv
```
# video a partir de serie de imágenes
```
# cambia entre imágenes a 2fps,
# video final a 30fps
ffmpeg -framerate 2 \
-i "%02d.png" \
-pix_fmt yuv420p \
-c:v libx264 \
-r 30 salida.mp4
```
# overlay de imagen sobre video
```
ffmpeg -i input.mp4 -i imagen.png -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" output.mp4
```

108
src/guix.gmo Normal file
View File

@ -0,0 +1,108 @@
# guix
sistema operativo cuyo estado se describe en un archivo de texto
=> https://guix.gnu.org/ guix
# configuración del sistema
configura el sistema a partir del archivo config.scm:
```
sudo guix system reconfigure config.scm
```
# paquetes
instala los paquetes que están (d)escritos en el archivo paquetes.scm:
```
guix package -m paquetes.scm
```
este es el archivo paquetes.scm que utilizamos:
``` paquetes.scm
; paquetes.scm
(specifications->manifest
(list
; multimedia
"evince" ; pdf viewer
"vlc"
"peek" ; screen record
"imagemagick"
"ffmpeg"
"libreoffice"
"audacity"
; image
"inkscape"
"mypaint"
"krita"
; browsers
"icecat"
"netsurf"
"lynx"
"lagrange" ; gemini
"bombadillo" ; gemini / gopher
"python-vf-1" ; gopher
; programming
"make"
"git"
"python"
"clang-toolchain"
"pandoc"
"gforth"
"avr-toolchain" ; avr
; verilog:
"iverilog" "icestorm" "nextpnr-ice40" "yosys"
; 100r:
"sdl2"
; fonts
"font-openmoji"
"font-fira-code"
"font-fira-mono"
"font-fira-sans"
"font-gnu-unifont"
"font-gnu-freefont"
"font-liberation"
"font-libertinus"
"font-google-roboto"
"font-google-noto"
"font-dejavu"
; utils
"xclip"
"wget" "curl"
"cryptsetup"
"rsync"
"bash-completion"
"adb"
"bc" ; calculator
"htop" ; system monitor
"zip" "unzip"
"stapler" ; pdf manipulation
;misc
"vinagre" ; vnc viewer
"tigervnc-client"
"xscreensaver"
"keepassxc"
"syncthing-gtk"
"syncthing"
; comms
"icedove"
"telegram-desktop"
"filezilla"
"openssh"
"qtox"
; text editors
"mousepad"
"vim"
))
```

141
src/imagemagick.gmo Normal file
View File

@ -0,0 +1,141 @@
# apuntes de imagemagick
# redimensiona imagen
```
convert imagen.png -resize 100x100 imagen100.png
```
o con -scale, para no interpolar y mantener la apariencia de pixeles
```
convert imagen.png -scale 200% imagenx2.png
```
# reemplaza color por otro
reemplaza azul por blanco:
```
convert imagen.png -fill white -opaque blue salida.png
```
se puede agregar fuzz factor:
```
convert imagen.png -fuzz 45% -fill white -opaque blue salida.png
```
y para convertir a transparente:
```
convert imagen.png -fuzz 45% -transparent blue salida.png
```
# elimina metadatos exif
para imágenes jpg
```
convert foto.jpg -strip fotolimpia.jpg
```
esto re-comprime la imagen, pero puede usarse al mismo tiempo que se redimensiona
```
convert foto.jpg -strip -resize 640x480 fotolimpia_480p.jpg
```
# convierte pdf
## imagen a pdf
por default la conversión sucede en baja calidad, esto la mejora:
```
convert imagen.png -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf
```
## pdf a imagen
para el caso opuesto:
```
convert -quality 100 -units PixelsPerInch -density 300x300 imagen.pdf imagen.png
```
# reduce la cantidad de colores
deja que imagemagick elija qué colores utilizar:
```
convert imagen.png -colors 8 imagen_8.png
```
o con dithering:
```
convert imagen.png -dither FloydSteinberg -colors 8 imagen_8.png
```
en -dither se puede usar None, Riemersma, o FloydSteinberg
# genera mapas de bits
con color plano:
```
convert -size 100x100 xc:'rgb(0,255,0)' imagen_verde.png
```
con ruido:
```
convert -size 100x100 xc: +noise Random imagen_ruido.png
```
# compone/encima imágenes
para componer una imagen con fondo transparente sobre otra que se convertirá en su fondo
```
composite -gravity center imagen_con_alpha.png fondo.png resultado.png
```
# mosaico de imágenes
combina varias imágenes en mosaico, con margen de 0 entre ellas:
```
montage imagen1.png imagen2.png -geometry +0+0 mosaico.png
```
el parámetro geometry indica los márgenes entre imágenes, y opcionalmente sus dimensiones:
```
montage imagen1.png imagen2.png -geometry 100x100+0+0 mosaico.png
```
para asignar fondo transparente al montaje:
```
montage imagen1.png imagen2.png -geometry +0+0 -background none mosaico.png
```
# corta
para cortar una imagen a ciertas dimensiones (wxh) y cierto offset en x,y
```
convert imagen.png -crop 300x300+100+50 +repage recorte.png
```
para quitarte el borde de color constante a una imagen
```
convert imagen.png -trim +repage sinborde.png
```
TODO: notas sobre -chop

47
src/jitsi_hacks.gmo Normal file
View File

@ -0,0 +1,47 @@
# hacking jitsi meet
esta es una colección de funciones de javascript para modificar localmente el diseño/layout de una videollamada de jitsi meet.
las hemos usado tanto para adecuar el diseño de una videollamada para que sea capturada/retransmitida, como para que todes les integrantes modifiquen el diseño y tengamos un punto de vista similar.
estas funciones se pueden ejecutar directamente en la consola web del navegador, ya sea descendiente de firefox o de chrom(ium) (ctrl+shift+k, o con F12 y eligiendo la tab de consola)
# cambia el color de fondo
esta línea cambia el color de fondo a negro:
```
document.getElementById('largeVideoContainer').style.backgroundColor='black';
```
# deja de mostrar a quienes no tienen video encendido
para cuando hay participantes presentes sin video, en la vista de mosaico:
```
for(c of document.getElementsByClassName('display-avatar-only')){
c.style.display='none'
};
```
# espejea a todos los videos y redimensiónalos
en la vista de mosaico, por defecto une misme se muestra con la toma "en espejo" y todes les demás con la toma "normal".
cuando se trabaja con espacialidades, esta situación puede volverse confusa (e.g. todes queremos señalar a "la izquierda"). con este código podemos unificarnos.
este ciclo hace que todos los videos estén "en espejo", además de que permite que crezcan un poco en el mosaico.
```
for(v of document.getElementsByTagName('video')){
v.classList.add('flipVideoX'); // "espejea"
v.style.objectFit = 'cover'; // "redimensiona"
};
```
# re-ordena
pendiente: código/tutorial para re-ordenar la cuadrícula a una configuración predeterminada.

View File

@ -2,7 +2,7 @@
writing code closer to the machine(s)
# texts
# textos
=> ./s-camino.gmi {s-camino}
@ -13,3 +13,7 @@ writing code closer to the machine(s)
=> ./nibble_dice_tracker.gmi {nibble dice tracker}
=> ./darena.gmi {darena}
=> ./avr-asm.gmi {avr-asm}
# command-line interface notes
=> ./apuntes.gmi {apuntes}

193
src/recetas.gmo Normal file
View File

@ -0,0 +1,193 @@
# recetas veganas
recetas que solemos preparar, en remix constante
# hotcakes de chocolate
~35 min
~10-12 piezas
(remix de la receta en pag 46 del libro "cocinar vegano vol.1" de francesca carpinelli cocinavegano.com)
## ingredientes
* 2 tazas avena (hojuela de grano entero, "old-fashioned")
* 1.5 tazas leche de soya
* 1 cdita polvo para hornear
* 1 cdita bicarbonato de sodio
* 1 cdita canela en polvo
* 1/2 cdita sal de mar
* 3 cdas azucar mascabado
* 2 cdas cocoa en polvo
* 1 cda extracto de vainilla
* 1 cdita aceite de coco (u otro)
* 1/2 taza chocolate amargo en trozos (opcional)
## instrucciones
* muele la avena hasta hacerla harina
* agrega el polvo para hornear, bicarbonato de sodio, sal, canela, cocoa y azucar
* mezcla bien
* poco a poco agrega leche de soya y bate hasta incorporar los ingredientes
* agrega el extracto de vainilla y bate de nuevo
* coloca sarten a fuego medio
* cuando se caliente, aceita y sirve la mezcla en partes iguales
* cuando se hagan burbujas en la superficie, agrega trozos de chocolate y voltea
* retira cuando tengan la consistencia que te agrade
(recuerda que no hay ingredientes crudos en la receta por lo que no hay riesgos por si parece que algo falta de cocerse)
## sugerencia
sirve con frutos rojos, moras, platano, mermeladas, mantequilla de cacahuate y/o de almendra.
# "leche" y "queso" de soya
preparar "leche" de soya resulta en restos llamados "okara", que puede usarse entre otras cosas para preparar un "queso"
~60 min
~1 lt de leche y
un queso de ~120 gr
## ingredientes
solo para la "leche":
* 1/2 taza frijol de soya seco
* 4 tazas agua
para el queso:
* 2 cditas levadura nutricional
* 1/2 cdita sal
* 1/2 limón
* 1 chorrito aceite de oliva
* 3 tazas agua
necesitas alguna herramienta para licuar/moler, y otra para colar finamente (e.g. manta de cielo)
dos ollas y algunos recipientes, y un colador ayuda
## instrucciones
### previo:
* deja remojando el frijol de soya por unas 8 horas
### durante:
para el queso:
* empieza a hervir 3 tazas de agua
para la leche:
* escurre el frijol de soya - al remojarse crece como hasta 1.5 tazas
* muele en la licuadora el frijol con 3 tazas de agua
* usa la manta de cielo para filtrar y exprimir el resultado dentro de una olla
(el liquido se vuelve la leche, y lo solido es la okara)
* pon la olla de la leche a hervir, cuidando de quitarle la espuma y nata
* cuando hierva, cambia a fuego medio y espera ~20 minutos, quitando espuma y
revolviendo en ocasiones
* deja enfriar y bebe!
para el queso:
* tan pronto el agua hierva, y ya tengas la okara, ponla en esa olla
* deja cocer a fuego medio durante 15-20 minutos
* usa el colador y la manta de cielo para filtrar el resultado (el liquido ya no
lo usaremos, y el solido es la okara cocida)
* deja enfriar un rato
* cuando te sea posible, exprime para quitar todo el liquido que puedas
* coloca la okara cocida y "seca" en un recipiente
* sirve encima la levadura nutricional, sal, limon y aceite de oliva
* mezcla muy bien con tus manos
* compacta la mezcla para que sea "queso"
* aparentemente conviene refrigerar un rato antes de comerlo
## referencias
remix de estas recetas:
=> https://simpleveganblog.com/homemade-soy-milk/ leche de soya
=> https://youtube.com/watch?v=BU2LEYHb_qk tofu casero (youtube)
# pastel de garbanzo
remix de "falafel al horno"
(receta en proceso de afinarse porque la hago de manera intuitiva (?))
~60 min
~2 "pasteles"
## ingredientes
### para la masa
* 1 taza garbanzo seco
* 2 jitomates medianos
* 1/2 cebolla
* 2 dientes ajo
* 1 cucharada sal
* 1 cucharadita pimienta
* 1 cucharada comino
* 1.5 tazas agua
* 1 cucharadita aceite
* al gusto cilantro
* al gusto chiles serranos
### extras:
* 1 cucharadita ajonjoli
* 1 pimiento
* 1/2 taza setas
* 1/2 taza espinaca
necesitas horno y alguna herramienta para moler/licuar
## instrucciones
### previo:
* deja remojando los garbanzos entre 8 y 12 horas (crecen como a 2.25 tazas)
### durante:
* escurre y enjuaga los garbanzos
* muele en la licuadora los garbanzos con el agua, cebolla, jitomates, ajo, sal,
pimienta, comino, cilantro y chile(s)
* aceita un par de moldes para pan y sirve la mezcla en ellos
* opcional: deja reposar en el refrigerador por ~30 minutos
* parte los pimientos y setas en rebanaditas, coloca junto con la espinaca y
ajonjoli en la superficie de la masa
* coloca los moldes en el horno, enciende a ~300 grados C
* espera unos 40-50 minutos, o hasta que adquieran la consistencia que desees
* apaga el horno y aprovecha el calor para seguir cociendo
* deja enfriar y sirve!
queda bien junto con limon, aguacate, y alguna salsa (en proceso de definirla)
# kombucha
(notas que uso para cada ronda)
~1 lt de kombucha
## ingredientes
* 1/2 taza liquido iniciador + scoby
* 1 taza agua caliente
* 1 cucharadita te negro (o 2 sobres)
* 1/4 taza azucar mascabado (4 cucharadas)
* 3 tazas agua fria
## instrucciones
* prepara el te con el agua caliente
* cuela las hojas del te
* disuelve la azucar en el te
* diluye el te con el agua fria
* agrega la mezcla al liquido iniciador + scoby
* tapa con tela / filtros de cafe, y espera al menos un par de semanas