forked from sejo/compudanzas
apuntes
This commit is contained in:
parent
125e012d5d
commit
42ca58f8cf
|
@ -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}
|
|
@ -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"
|
|
@ -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
|
||||
```
|
|
@ -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"
|
||||
))
|
||||
```
|
|
@ -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
|
|
@ -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.
|
|
@ -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}
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue