# perdiendo.org/museodemetralla

entraron en mi cabeza (201) | libros (20) | me lo llevo puesto (7) | pelis (2) | Renta básica (9) | series (6) | escasez (2) | frikeando (94) | arduino (1) | autoreferencial (11) | bici (1) | esperanto (4) | eve online (3) | git (2) | GNU/linux (4) | markdown (7) | nexus7 (2) | python (7) | raspberry pi (3) | vim (1) | wordpress (1) | zatchtronics (3) | hago (761) | canciones (157) | borradores (7) | cover (42) | el extremo inútil de la escoba (2) | elec (1) | GRACO (2) | guitarlele (11) | ruiditos (11) | Solenoide (1) | fotos (37) | nanowrimo (3) | novela (26) | criaturas del pantano (5) | el año que no follamos (12) | huim (5) | rehab (4) | poemas (357) | Anclajes (15) | andando (3) | B.A.R (7) | Canción de cuna para un borracho (38) | Cercos vacíos (37) | Cien puentes en la cabeza (7) | Conejo azul (6) | Contenido del juego (5) | De tiendas (3) | del pantano (3) | Destrozos (2) | Epilogo (4) | Fuegos de artificio (5) | Imposible rescate (15) | Jugando a rojo (7) | Libro del desencuentro (2) | Lo que sé de Marte (11) | Los cuentos (21) | Montaje del juego (5) | Orden de salida (4) | palitos (31) | Piernas abiertas (7) | Poemas medianos (12) | Privado de sueño (7) | rasguemas (5) | Tanto para nada (17) | Todo a 100 (2) | Uno (4) | relatos (97) | anatemas (9) | orbital (2) | prompts (8) | vindicaciones (103) | perdiendo (1.711) | atranques (1) |

tiny rss

Por qué.

Sigo utilizando RSS para mantenerme al día sin tener que visitar 300 webs una a una. Desde que murió google reader, y después de una breve transición con the old reader, pasé a feedly. No porque me gustara más o menos sino porque no encontré nada que me llevase excesivo tiempo aprender a usar ni que tuviera demasiadas limitaciones en la cuenta gratuita.

Había probado un par de veces con lectores RSS alojados, pero siempre a través de softaculous, no tenía acceso a un terminal. Y, no sé por qué, a través de este instalador siempre me daba problemas nada más usarlo o tras un (breve) periodo de tiempo. Ahora, en aws, decidí probar con tiny-rss.

Instalación.

Clonas el repositorio en el fichero donde quieras instalarlo

$ git clone https://tt-rss.org/git/tt-rss.git tt-rss

Puedes cambiar «tt-rss» por otro nombre de carpeta. Ya en el navegador entras en el nombre que hayas elegido /install. Le indicas la información de la base de datos. En mysql, para crearla:

mysql  -utuusuario -p

Con el nombre de tu usuario, te pregunta la contraseña, y una vez dentro del promt de mysql:

mysql> create database [nombredelabd];

Metes los datos, te genera un config.php que tienes que colocar en el directorio raíz de la instalación y ya puedes entrar en el navegador con usuario admin y contraseña password.

Para que los rss se actualicen te ofrecen tres métodos, yo he optado por el primero (más info en el atareao).

Creamos el archivo /lib/systemd/system/ttrss-update.service

nano /lib/systemd/system/ttrss-update.service

con el contenido

[Unit]
Description=Tiny Tiny RSS update daemon
After=network.target mysqld.service
Requires=mysqld.service

[Service]
User=www-data
Group=www-data
WorkingDirectory=/var/www/html/tt-rss
Type=simple
StandardOutput=null
StandardError=syslog
ExecStart=/usr/bin/php ./update_daemon2.php
PrivateTmp=true
InaccessibleDirectories=/home /root /boot /opt /mnt /media
ReadOnlyDirectories=/etc /usr

[Install]
WantedBy=multi-user.target

Cambia en working directory la dirección de tu instalación, y también el usuario. En mi caso no arrancó hasta que no cambié www-data en User por el nombre de mi usuario.

Activamos

sudo systemctl enable ttrss-update.service

Iniciamos

sudo service ttrss-update start

(con las demás opciones de service, start, stop, restart, reload, force-reload, status, bootstrap).

Atareao utiliza los comandos de systemctl, los dejo abajo porque algún motivo habrá.

sudo systemctl enable ttrss-update.service
sudo systemctl start ttrss-update.service
systemctl status ttrss-update.service
sudo systemctl stop ttrss-update.service

Conclusión sesuda.

Usar RSS te da acceso a un montón de información personalizable de forma rápida. Usar tu propio gestor te evita las limitaciones de monetización de los distintos proveedores. Una instancia en aws, por unos 60 pavos al año, está resultando una cosa muy interesante, he metido en ella esta web, un backup de r4sp1, un servidor mumble y uno XMPP.

No hubiera tenido ni idea de qué hacer con ella si no me hubiera pasado antes un buen tiempo con la r4sp1.nl, en la que, por cierto, en cuanto pueda incluiré un manual más detallado y explicativo de todo esto.

multiplicador de señal

Hacía mucho tiempo que no me acercaba a TIS-100, y hace un rato, en un hueco, pensé en entrar en alguno de los puzzles que no había conseguido hacer antes, lo que me llevó a este multiplicador de señal. Y parece que quizá, después de años luchando con python, con juegos como este, con pseudo código, al final es posible que mi cerebro esté aprendiendo de algún modo. De un problema al que hace algo más de un año no conseguía encontrar ni el comienzo de una solución, aunque fuera remoto, he pasado a separar rapidamente un contador, un generador de números y un sumador.

Es una tontería y no tiene ningún misterio, pero a mí me hace muchísima ilusión haber sido capaz de plantearlo y resolverlo. Los resultados no son espectaculares pero a mí, desde luego, me bastan.

El nodo de arriba a la izquierda es un contador del primer factor. Comprueba que no es cero, lo manda a la derecha, le resta uno y vuelve a empezar. Cuando llega a cero manda un cero a la derecha y toma un número nuevo de arriba. Tal y como he decidido hacerlo este factor no puede ser nunca cero, porque es el que indica las veces que tiene que sumarse el otro. Podría ser perfectamente al revés, claro.

# CUENTA ATRAS
MOV UP ACC # mueve arriba a la memoria ACC
INI: # etiqueta de salida de INI
MOV ACC RIGHT # mueve la memoría ACC a la derecha
JEZ OUT # si ACC es cero salta a OUT
SUB 1 # réstale uno a ACC
JMP INI # salta a INI
OUT: # nada (vuelta al inicio)

El de arriba a la derecha almacena el otro factor, verifica que lo que ha recibido a la izquierda no es cero y manda el número hacia abajo, y vuelve a hacerlo una y otra vez hasta que la izquierda le manda un cero. Cuando es un cero manda abajo un -1. El primer factor no puede ser cero pero este sí, y en caso de serlo mandará ceros hacia abajo hasta encontrarse con un cero en el nodo izquierdo, así que la señal de aviso de cambio no puede ser otro cero. En el ejercicio sólo se multiplican números positivos.

# ENVIA N ABAJO
MOV UP ACC # mueve arriba a ACC
INI: SAV # etiqueta de salida de INI, guarda ACC en BAK
MOV LEFT ACC # mueve la izquierda a ACC
JEZ OUT # si ACC es cero vete a OUT
SWP # intercambia BAK con ACC
MOV ACC DOWN # mueve ACC abajo
JMP INI # salta a ini
OUT: MOV -1 DOWN # salida de OUT, mueve -1 abajo

El de abajo a la izquierda es sólo un buffer que seguro que podría quitar, simplemente recoge lo que tiene a la derecha y lo vuelve a colocar disponible para el nodo de la derecha.

# ALMACEN
MOV RIGHT RIGHT # mueve derecha a la derecha

El de abajo a la derecha va a sumar los números que manda el de arriba hasta que reciba la señal de empezar de cero, utilizando el nodo de la izquierda como almacén, y en ese momento manda el resultado final de la suma abajo. Este nodo (bueno, todos, pero este especialmente) seguro que se puede hacer de un modo mejor. Tienes dos sitios donde almacenar un número, ACC y BAK, pero la única forma de interactuar con BAK es ejecutar el comando SAV, que copia ACC en ella, y el comando SWP, que intercambia los valores de ambas, por eso tengo que utilizar LEFT. Coloco un cero en left al empezar para no tener que dividir el código entre el primer número de una secuencia y los demás.

# SUMA NUMEROS
MOV 0 LEFT # mueve cero a la izquierda
INI:MOV UP ACC # destino de INI, mueve arriba a ACC
JLZ OUT # si ACC es menor que cero vete a OUT
ADD LEFT # suma izquierda a ACC
MOV ACC LEFT # mueve ACC a la izquierda
JMP INI # salta a INI
OUT:MOV LEFT DOWN # mueve izquierda abajo.