Al contrario que su predecesor PS/2, en que cada pulsación de tecla tenía una respuesta eléctrica inmediata, el protocolo USB y también los teclados, son mucho más complejos. Un teclado USB conectado directamente a un osciloscopio no "hace nada" cuando se pulsa una tecla. ¿Por qué? En USB la conexión la maneja el maestro: Los dispositivos por sí mismos no inician ningún intercambio de información. Ben Eater explica con su habitual forma didáctica las bases de un teclado USB, y del protocolo base en general.
Se trata de una herramienta que te puede ayudar a dar con la autoría de cualquier imagen que veas por Internet y así poder dar los créditos pertinentes o comprobar si te van a colar un bulo, lo que en estos días es también muy, pero que muy útil. Permite encontrar coincidencias exactas de la imagen que le digas, o incluso versiones modificadas de la misma; va mucho más allá y es más preciso que el sistema de Google que en realidad sólo te muestra imágenes similares y cada vez es menos efectivo, en especial si se trata de una imagen que lleva ti
"La extrema derecha persigue, no nos engañemos, conservar a toda costa privilegios históricos que, a estas alturas de la película, la mayoría de los mortales del siglo XXI consideran obsoletos, discriminatorios, racistas o injustos. Un mensaje poco apetecible para cosechar votos salvo que contrates al maestro de la estrategia populista: Steve Bannon, el ideólogo estadounidense que puso a Donald Trump en 2016 en la Casa Blanca".
Se trata ni más ni menos que de la posibilidad de ejecutar en nuestro navegador alguno de los 2.400 juegos con los que cuenta el catálogo disponible por los responsables de este proyecto. Muchas opciones y mucha nostalgia que nos han obligado a hacer un intento por seleccionar algunos de los más destacados. Estos son para nosotros -aquí lógicamente los gustos pueden variar- los 39 mejores juegos de la época MS-DOS que podemos disfrutar directamente y gratis en el navegador gracias a este servicio
Parece que el creador de Signal se ha conseguido hacer con uno de los famosos maletines de Cellebrite, la agencia que se suele utilizar para hackear los teléfonos móviles de la gente (siempre y cuando se tenga acceso físico a ellos...por ejemplo, un control en inmigración). Han descubierto que la aplicación de Cellebrite utiliza librerías y software muy anticuado, y lleno de vulnerabilidades un tanto sencillas. Adicionalmente, han descubierto que para hackear iPhones, utilizan librerías que han copiado del iTunes, lo que les expone a copyright
Entre 2017 y 2021 los procesadores Intel y AMD han experimentado una evolución enorme, más profunda, rápida y marcada que la que vivimos entre 2011 y 2016. Esa evolución estuvo impulsada, principalmente, por el golpe de autoridad que dio AMD con la arquitectura Zen, aunque no debemos olvidarnos de la respuesta que dio Intel, ya que la compañía de Santa Clara se vio obligada a abandonar el jardín de los cuatro núcleos.
24K tuits difundiendo un nuevo bulo de la ultraderecha sobre el pacto secreto de Pedro Sánchez con Pablo Iglesias para dejarle un sueldo vitalicio de 107.000 euros anuales. Las cuentas más grandes reciben retuits por miles de bots.
El laboratorio de Oeberst implantó recientemente recuerdos falsos en 52 personas mediante el uso de distintas técnicas en entrevistas. Primero, hicieron que los padres de los participantes respondieran en privado un cuestionario y presentaran algunos recuerdos reales de la infancia y dos que fuesen verosímiles pero falsos, todos de naturaleza negativa, como por ejemplo cómo había muerto una mascota o se había perdido un juguete. Más tarde, los investigadores pidieron a los participantes que recordaran estos eventos inventados de forma detallada
Los informáticos y los matemáticos conocen el atractivo del 42, pero siempre han pensado que se trata de un simple juego que podríamos repetir con cualquier otro número. Sin embargo, acabemos añadiendo un descubrimiento reciente que les mantuvo entretenidos un tiempo. De cómo un número totalmente ordinario atrajo la atención de los amantes de la ciencia ficción, la informática... e incluso de los matemáticos.
CodeTour es una extensión de Visual Studio Code que te permite grabar y reproducir recorridos guiados de tus bases de código. Es como una tabla de contenidos, que puede facilitar la incorporación (o reincorporación) a un nuevo proyecto/área de características, la visualización de informes de errores o la comprensión del contexto de una revisión de código/cambio en una PR. Un "tour de código" es simplemente una serie de pasos interactivos, cada uno de los cuales está asociado a un directorio específico, o archivo (...)
Una familia tratando de comer arenque fermentado sueco (surstromming).
1/ Empieza "hay que tener en cuenta que el reforzamiento de las medidas y actuaciones de prevención y lucha contra el fraude constituye uno de los componentes básicos de las reformas estructurales de apoyo al Plan Nacional de Recuperación, Transformación y Resiliencia"
Wall Street Bets está en boca de todos tras generar la subida de las acciones de GME (Game Stop) para castigar a los fondos de inversión que se aprovechan de las posiciones en corto para obtener beneficios mientras quiebran empresas. Este es el video con el análisis financiero original del usuario u/DeepFuckingValue explicando que las posiciones en corto de GME eran demasiado avariciosas y que comprando ahora que su precio estaba bajo, y aguantándolas, obligaría a los fondos de inversión a recomprarlas a precios desorbitados.
La historia de Internet pasa desde una web de solo lectura en su versión 1.0 a una web social en su versión 2.0, ahora Internet necesita una nueva iteración. Desintermediación, descentralización, servicios y protocolos abiertos… ¿De qué se trata la web 3.0?
Descargar torrents ya no es lo que era; es verdad que aún hay buenas webs para descargar torrents, pero no las vas a encontrar con una simple búsqueda en Google y no creo que quieras pasarte toda la tarde visitando docenas de páginas malas y esquivando anuncios intrusivos solo para ver que no ofrecen lo que buscas. Aquí es donde entro yo para ayudarte: he pasado incontables tardes probando todo tipo de webs de descarga de torrents en España para mantener esta lista actualizada y para mostrarte solo las mejores opciones.
Un hacker, bajo el seudónimo de ‘donk_enby’, se encargó de bajar y archivar todos los posts de la red social, ya que, según ha explicado a Gizmodo, estos son «muy incriminatorios» Lo que ha capturado el hacker son «archivos originales, sin procesar, descargados de Parler, con todo su metadata relacionada.
El ADN no es como la fuente de C, sino más como un código compilado por bytes para una máquina virtual llamada "el núcleo". Es muy dudoso que haya una fuente para esta compilación de bytes; lo que ve es todo lo que obtiene. El lenguaje del ADN es digital, pero no binario. Donde la codificación binaria tiene 0 y 1 para trabajar (2, de ahí el "bi"), el ADN tiene 4 posiciones, T, C, G y A. Mientras que un byte digital consta principalmente de 8 dígitos binarios, un "byte" de ADN (llamado "codón") tiene tres dígitos.
En este artículo presento un total de 84 trabajos y artículos publicados en 2020 que me han parecido especialmente interesantes. Resumen y 11 temas: 1.Image/video classification tasks; 2.Unsupervised learning / self-supervised learning; 3.Natural language processing; 4.Sparse model / Model compression / inference speedup; 5.Optimization/ loss function/ data augmentations; 6.Deep fake; 7.Generative models; 8.Machine learning with natural sciences; 9.Analysis of deep learning;
Lista detallada de diez librerías Python que fueron publicadas o cogieron relevancia este año 2020.
Esta es una parte de una serie de publicaciones donde se crea una lenguaje de programación que soporta concurrencia y orientación a objetos llamado Bolt. En esta parte concretamente se habla de usar LLVM como backend de dicho lenguaje de programación para crear el código ejecutable a partir del lenguaje intermedio (IR) de LLVM proveniente del análisis sintáctico y semántico de fases previas.
AridViper es un troyano, escrito en Python, creado por un grupo de piratas informáticos con la intención de infectar cualquier sistema operativo Windows. Este troyano se distribuye mediante un binario que se encarga de instalar las dependencias de Python en el sistema (para poder ejecutar el malware) y configurarlo para que quede con persistencia.
En los años 60 y 70, Ken Thompson co-inventó el sistema operativo UNIX junto con Dennis Ritchie en Bell Labs. También trabajó en el lenguaje B, el sistema operativo Plan 9, y el lenguaje Go. Él y Ritchie ganaron el premio Turing. Ahora trabaja en Google. Brian Kernighan (el del libro sobre el lenguaje C de "K&R" entre otras mil cosas). Una conversación entre dos de los más grandes.
En este artículo vamos a explicar cómo montar un servidor de descargas automatizado que nos permita seguir series, películas o artistas musicales sin tener que buscarlos y descargarlos manualmente a nuestro media center. Para ello podemos echar mano de un ordenador viejo que tengamos abandonado, un NUC o cualquiera de esos minicacharros ARM baratos tipo Raspberry Pi. En este último caso será recomendable disponer de un disco duro externo para utilizar como medio de almacenamiento, ya que la capacidad interna es muy escasa. Dependiendo de las funciones que queramos utilizar, recomendaría un sistema con al menos 2GB de RAM. Si solo utilizamos alguna cosa concreta podríamos instalar el sistema en una Raspberry Pi 3, que sólo tiene 1GB, pero usando a la vez todos los programas que instalamos en este tutorial se superará esa cifra con facilidad.Utilizaremos una distribución GNU/Linux según nuestras preferencias. Me voy a centrar en RaspberryOS Lite por ser bien conocida y de fácil acceso, con miles de tutoriales en la red, pero cualquier otra es válida. Habrá que tener en cuanta dos factores: los nombres de los paquetes y los comandos de instalación pueden variar de una distro a otra (especialmente si no usamos derivadas de Debian), y el servidor de streaming puede necesitar aceleración 3D hardware si pretendemos usar la función de transcodificación. En los microservidores ARM esta parte es complicada. En RaspberryOS 32bit está disponible, pero en las distros de 64bit para Raspberry es experimental y no puedo asegurar que funcione. Sin embargo la transcodificación es opcional y en la mayoría de casos no la necesitaremos. Tened en cuenta también que para este texto uso la arquitectura armhf, si utilizáis otra distinta adaptad los comandos y repositorios apropiadamente.No voy a explicar la instalación y configuración del sistema operativo ni como añadir un disco externo, ya que esto está más que cubierto por miles de tutoriales en la red. Para los propósitos de este texto, el disco externo estará montado en /mnt/descargas. La configuración de red también es algo muy conocido, en todo caso es recomendable usar una conexión por cable y configurar una IP estática. Asumo que todo el mundo sabe conectar por SSH al servidor. Lo que si voy a recomendar es poner un hostname adecuado e instalar avahi-daemon (en RaspberryOS Lite viene de serie) para acceder al servidor sin tener que recordar una IP. Si, por ejemplo, mi servidor se llama "descargame", estará accesible bajo el dominio descargame.local. Casi todas las distribuciones Linux, así como MacOS y Windows 10 vienen con esta capacidad de serie. Si usáis otra arquitectura diferente de la armhf de este tutorial, substituidla por la vuestra en los comandos y repositorios.Ojo también con la seguridad. Si lo usamos en una red interna doméstica podemos dejarlo tal cuál, pero si vamos a exponerlo a Internet necesitaremos protegerlo con un cortafuegos. Una vez todo esté configurado y funcionando, sólo necesitaremos los puertos 22 (para SSH) y 80 abiertos para el uso normal. Eso sí, montad el cortafuegos al final para no entorpecer la configuración de los programas de descarga., y tened en cuenta que habría que modificar las URLs de los indexers (en Sonarr, Radarr y Lidarr) poniendo 127.0.0.1 o localhost en lugar del nombre de host o la IP externa. Tampoco he añadido configuración SSL para el navegador, pero no sería complicado y hay muchas guías para ello en la red.Para todo lo demás, raspi-config ;-)Al final del tutorial incluiré un archivo comprimido con todos los archivos de servicio, configuración del proxy inverso, la plantilla web y las unidades Monit, que podéis utilizar tal cual o como base para modificar.Dependencias básicasRecordad que estos comandos habrá que ejecutarlos como root, o utilizando sudo. A lo mejor os resulta más sencillo hacer "sudo su" para lograr una consola de root. Lo primero de todo es actualizar la distro e instalar algunas dependencias de las aplicaciones. Como cliente torrent voy a usar Transmission, pero Deluge también nos valdría (aunque resulta más pesado y tiene más dependencias):# apt-get update && apt-get dist-upgrade# apt-get install libicu63 libssl1.1 mono-complete transmission-daemon natpmpc unrar-free nodejs python3-pip python3-distutils git libopenjp2-tools mediainfo libchromaprint-tools smartmontools monit apt-transport-https nginx libxml2-dev libxslt1-dev python3-libxml2 python3-lxml unrar-free ffmpeg libatlas-base-dev python3-numpyNginx es un servidor web y lo vamos a utilizar como proxy inverso para acceder a todas las aplicaciones sin tener que recordar sus respectivos puertos. Monit es un servicio que nos permite comprobar la "salud" del servidor y arrancar o parar servicios, así como tomar acciones si alguno de ellos falla. La última parte de las dependencias (a partir de nginx) sólo las necesitaremos si vamos a instalar Bazarr.El paso anterior habrá activado el servicio mono-xsp4, no lo vamos a utilizar así que lo desactivamos:# systemctl disable mono-xsp4.serviceAplicaciones de manejo de descargasAhora instalaremos las aplicaciones web que se encargan del manejo de las descargas. Por un lado tenemos Jackett, que es una especie de metabuscador. Nos permite seleccionar en qué trackers torrent vamos a buscar contenidos, y sirve los resultados a las demás aplicaciones. Y si, vamos a utilizar torrents porque las cuentas de USENET son de pago ;-) Por otro lado tenemos una serie de programas muy especializados: Sonarr se encarga de las series y programas de TV, Radarr de las películas, y Lidarr de la música.Como extra, vamos a instalar Bazarr para que se encargue de descargar subtítulos, si nos gusta ver contenidos en versión original o bien seguimos cosas tan nuevas que no se hayan doblado aún. Os advierto que puede resultar bastante pesado para el sistema, así que instaladlo solamente si os resulta útil.Hay incluso más programas similares, casi todos derivados unos de otros. Según lo que nos interese podemos instalar otras cosas usando el mismo método. Por ejemplo, recientemente los equipos de Radarr y Lidarr se han fusionado y retomado un viejo proyecto llamado Readarr, que usa una interfaz similar para descargar libros y revistas, tanto en formatos de texto (pdf, epub y otros) como audiolibros. También sirve para los cómics. Aunque en este tutorial no lo vamos a instalar, ya que está muy verde aún, si os interesa podéis darle una oportunidad. El proceso sería similar a Radarr o Lidarr.No utilizaremos Docker ni repositorios de paquetes extras si podemos evitarlo. Supuestamente con Docker la instalación de estos programas es más fácil, pero ocupa más espacio, a menudo produce problemas de permisos y las actualizaciones no son inmediatas. Con los repositorios las actualizaciones también van más lentas, ya que hay que esperar a que alguien monte el paquete correspondiente. Además, al final habrá que toquetear muchos archivos para ajustar los permisos adecuados y que trabajen bien con los demás programas del sistema, así que los beneficios se diluyen. Utilizaremos una instalación manual a la vieja usanza siempre que sea posible.Con una shell remota vía SSH con nuestro miniservidor, nos vamos a /opt, que es donde vamos a situar los archivos correspondientes, y empezamos a descargar los archivos. Es importante revisar que descarguemos la última versión adecuada a nuestro sistema, en este caso ARM32. Notad que estoy usando la versión 3 de Sonarr (la estable es la 2, pero la transición es inminente) y de Radarr (que también se considera menos estable, pero llevo tiempo utilizándola y no me ha dado grandes problemas). En todo caso, estas aplicaciones pueden actualizarse a si mismas automáticamente y no es dificil actualizar a la última versión manualmente aunque hayamos instalado una anterior:# cd /opt# wget "/releases/download/v0.16.1859/Jackett.Binaries.LinuxARM32.tar.gz"# wget "https://services.sonarr.tv/v1/download/phantom-develop/latest?version=3&os=linux" -O sonarr.tar.gzLas URLs de descarga de Sonarr y Radarr enlazan directamente con la última versión disponible en cada momento, pero las de Jackett y Lidarr puede que tengáis que ajustarlas si aparecen nuevas versiones. Usamos la versión Mono de Radarr v3, porque me da un poco de cosa instalar el .Net Core de Microsoft:# wget "https://radarr.servarr.com/v1/update/nightly/updatefile?os=linux&runtime=mono&arch=arm" -O radarr.tar.gz# wget "https://github.com/lidarr/Lidarr/releases/download/v0.7.1.1381/Lidarr.master.0.7.1.1381.linux.tar.gz"Extraemos los archivos y renombramos las carpetas para mantenerlo todo limpio y ordenado:# tar xvf Jackett.Binaries.LinuxARM32.tar.gz && mv Jackett jackett# tar xvf sonarr.tar.gz && mv Sonarr sonarr# tar xvf radarr.tar.gz && mv Radarr radarr# tar xvf Lidarr.master.0.7.1.1381.linux.tar.gz && mv Lidarr lidarrEsta parte es la instalación de Bazarr, que se descarga vía git.# git clone "https://github.com/morpheus65535/bazarr.git" /opt/bazarrY ya podemos borrar los archivos originales descargados:# rm *.tar.gzPermisosA continuación viene una parte crucial de la configuración: los permisos. Queremos que cada una de estas aplicaciones pueda actualizarse a si misma con los mínimos privilegios necesarios. También queremos que puedan interactuar con los archivos descargados por el cliente torrent para organizarlo todo, por ejemplo renombrando o moviendo archivos. Excepto Jackett, que en principio sólo necesita permisos para actualizarse a si mismo, aunque si queremos utilizar la función de carpeta vigilada (black-hole, que consiste en que Jackett descarga el torrent o magnet directamente en una carpeta que el cliente torrent repasa continuamente, añadiendo a la lista de descargas los enlaces que encuentre) deberemos darle también acceso al grupo de Transmission. Sin embargo os advierto que Transmission no puede manejar los magnet que le brinda Jackett con la carpeta vigilada, sino solamente los archivos .torrent. Así que si vamos a usar esta funcionalidad con los magnet tendremos que usar otro cliente. Deluge en cambio parece funcionar correctamente.Vamos a tener un usuario de sistema para cada aplicación y a la vez un grupo común para todas ellas y para el cliente torrent. Como Transmission ya crea un grupo propio, lo utilizaremos en lugar de crear uno nuevo. Para simplificar, actuaré como si fuésemos a utilizar la función de carpeta vigilada de Jackett y Transmission.Creamos los usuarios:# useradd -s /bin/false -d /var/lib/jackett/ -r -m -U jackett# useradd -s /bin/false -d /var/lib/sonarr/ -r -m -U sonarr# useradd -s /bin/false -d /var/lib/radarr/ -r -m -U radarr# useradd -s /bin/false -d /var/lib/lidarr/ -r -m -U lidarr# useradd -s /bin/false -d /var/lib/bazarr/ -r -m -U bazarrY ahora los añadimos al grupo de Transmission:# usermod -a -G debian-transmission sonarr# usermod -a -G debian-transmission radarr# usermod -a -G debian-transmission lidarr# usermod -a -G debian-transmission bazarr# usermod -a -G debian-transmission jackettTenemos que asignar la propiedad de los archivos extraidos al usuario correspondiente, y al grupo común:# chown -R jackett:debian-transmission /opt/jackett # chown -R sonarr:debian-transmission /opt/sonarr# chown -R radarr:debian-transmission /opt/radarr# chown -R lidarr:debian-transmission /opt/lidarr# chown -R bazarr:debian-transmission /opt/bazarrArranque de serviciosAhora vamos a crear los servicios para que todas las aplicaciones se inicien al arranque del sistema. Asumo que a estas alturas casi todo el mundo utiliza SystemD. Jackett es el más sencillo, ya que viene de serie con un script para instalar el servicio:# sh /opt/jackett/install_service_systemd.shAún así, habrá que modificar el archivo creado para que la carpeta vigilada funcione.# nano /etc/systemd/system/jackett.serviceEl aspecto final sería este:- jackett.serviceLos demás tendremos que crearlos manualmente con un editor de texto. Para los novatos, nano es un editor de consola muy sencillo en el que sólo necesitaréis conocer dos atajos de teclado: Ctrl-o (para guardar el archivo) y Ctrl-x (para salir del editor).# nano /etc/systemd/system/sonarr.service# nano /etc/systemd/system/radarr.service# nano /etc/systemd/system/lidarr.service# nano /etc/systemd/system/bazarr.serviceNano soporta operaciones de copiar/pegar con el ratón, así que sólo tenéis que copiar el contenido de los archivos de aquí, o descargarlos directamente al servidor:- sonarr.service- radarr.service- lidarr.service- bazarr.serviceEstos scripts los he creado modificando ligeramente los ejemplos del Wiki de los respectivos proyectos. Lo importante es que el servicio funcione a nombre del usuario propio de la aplicación y el grupo común para todas (debian-transmission). El parámetro UMask es muy importante, porque permite que los archivos creados por una aplicación sean manejables por las demás del mismo grupo.Una vez creados los archivos de servicio, los activamos para que se inicien al arranque del sistema. Excepto Jackett que ya estará activado. Primero recargamos la lista de servicios:# systemctl daemon-reload# systemctl enable sonarr.service# systemctl enable radarr.service# systemctl enable lidarr.service# systemctl enable bazarr.serviceServidor multimedia JellyfinEn este punto tenemos instalados los manejadores de descargas y el cliente torrent, pero nos falta el servidor multimedia. Vamos a utilizar Jellyfin, que es un fork totalmente libre de Emby. Este tiene su propio repositorio, así que resulta más fácil.# wget "https://repo.jellyfin.org/jellyfin_team.gpg.key"# apt-key add jellyfin_team.gpg.key # echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/' /etc/os-release ) main" | tee /etc/apt/sources.list.d/jellyfin.listDonde pone "repo.jellyfin.org" añadid un "https://" delante, que el editor se lo come. Con esto configuramos el repositorio oficial, después simplemente actualizamos la caché de paquetes e instalamos Jellyfin:# apt-get update && apt-get install jellyfinLa aceleración hardware de vídeo para Jellyfin requiere que este pertenezca al grupo video. Además, nos interesa que pueda manejar (y en su caso borrar) los archivos creados por las demás aplicaciones, así que también lo añadiremos al grupo debian-transmission:# usermod -a -G video,debian-transmission jellyfinEn este momento ya tenemos el software instalado, lo que nos queda es todo configuración.Configuración del cliente torrent TransmissionEmpezamos toqueteando la configuración de Transmission, para lo cual el servicio tiene que estar parado (si no lo está, el archivo será sobreescrito al cerrar el programa). Recordad que nuestro disco externo está en /mnt/descargas, y ahí es donde se descargarán los torrents. Nos interesa separar los torrents ya completados de los que aún se están descargando, para evitar problemas cuando nuestros manejadores busquen archivos descargados. También cambiaremos el usuario (rpc-username, yo voy a dejar el que viene por defecto, que es transmission), la contraseña (rpc-password, la ponemos directamente en texto claro entre las comillas y Transmission la cifrará en cuanto arranque) y una lista de IPs a las que se permite el acceso a la interfaz web (rpc-whitelist, ponedlas separadas por comas o usad wildcards). Otra cosa que debemos ajustar es el umask, poniéndolo a 2 para que el resto de aplicaciones del grupo tengan acceso completo a los archivos descargados.El resto de los parámetros de Transmission como el ratio o el límite de sembrado se pueden ajustar a lo que consideréis conveniente:# systemctl stop transmission-daemon.service# nano /etc/transmission-daemon/settings.jsonOs dejo un archivo de ejemplo que podéis usar como base. He añadido al final del ejemplo las líneas correspondientes a la carpeta vigilada (watch-dir), pero si no usáis esto es mejor borrarlas. ¡¡ Y cambiad la contraseña !!- settings.jsonRecordad que todas las líneas de ese archivo deben acabar en coma, excepto la última antes del corchete de cierre. A continuación tendremos que crear las carpetas que hemos especificado en la configuración, y darles los permisos adecuados:# mkdir -p /mnt/descargas/torrents/completos && mkdir /mnt/descargas/torrents/incompletos# chown -R debian-transmission:debian-transmission /mnt/descargas/torrentsPuede ocurrir que nuestro disco externo sea un poco lento al arrancar. Para evitar que Transmission se inicie antes de que el disco se haya montado, deberíamos modificar el archivo de servicio de Transmission. Primero averiguamos la unidad de SystemD que monta el disco con:# systemctl list-units --type=mountEsto nos dará una lista de eventos de montaje de discos. Leyéndola es evidente cuál es nuestro externo, en mi caso la unidad se llama mnt-descargas.mount. Lo añadimos después del After y también como Requires:# nano /lib/systemd/system/transmission-daemon.serviceDe forma que quede así:- transmission-daemon.serviceEntonces recargamos los servicios con# systemctl daemon-reloadProxy inverso con NginxAntes de reiniciar para los pasos finales de la configuración, vamos a configurar también el proxy inverso nginx. La idea es que podamos visitar los diferentes gestores de descargas como si fueran "carpetas" de nuestro servidor, ahorrándonos el recordar sobre que puerto se ejecuta cada uno. Cada location se corresponde con la base_url que configuremos en los respectivos programas. Podéis cambiarlos si queréis, pero aseguráos de que ambas (location de nginx y base_url de Radarr, por ejemplo) sean iguales. Primero borramos la configuración por defecto de nginx, luego creamos nuestra propia configuración en /etc/nginx/sites-available, y después la activamos con un enlace simbólico en /etc/nginx/sites-enabled:# rm /etc/nginx/sites-enabled/default# nano /etc/nginx/sites-available/proxy_inverso# ln -s /etc/nginx/sites-available/proxy_inverso /etc/nginx/sites-enabled/Este archivo es bastante complejo, así que os dejo un ejemplo con todo incluído:- proxy_inversoExplico un poco: en el bloque server debéis modificar el server_name y la IP para poner los de vuestro servidor. Los bloques que no uséis, como Bazarr u Ombi (hablaré sobre este más adelante), podéis borrarlos o desactivarlos añadiendo una almohadilla (#) al principio de cada línea. Finalmente, el bloque Jellyfin tiene su truco. Debido a un fallo en el código de este programa (probablemente heredado de Embi) al activar la base_url el servidor DLNA deja de funcionar correctamente porque los clientes reciben una URL errónea. Para solventar este problema, añadimos las líneasproxy_redirect default;proxy_redirect / /jellyfin/;que nos permiten una funcionalidad similar a la de base_url pero sin romper el servidor DLNA. Mi configuración de ejemplo ya las incluye, así que todo debería funcionar. Si más adelante el equipo de Jellyfin arregla este problema, sólo tenéis que borrar esas líneas y añadir el base_url en la configuración interna de Jellyfin.Al usar nginx como proxy inverso existe un problema potencial que aparecería si intentamos subir archivos torrent de cierto tamaño a Transmission. La configuración por defecto de nginx sólo permite subidas de muy escaso porte, y cuando este se supera se corta la subida. Para evitarlo, editaremos el archivo de configuración general de nginx# nano /etc/nginx/nginx.confy añadiremos bajo el bloque http la siguiente sentencia con un valor razonable (en este caso 4 megas):client_max_body_size 4M;Ya queda poco, podemos reiniciar:# rebootConfiguración de JackettEn cuanto el servidor vuelva a arrancar, podremos visitar con un navegador las interfaces web de los diferentes programas para configurarlos. Deberíamos empezar por Jackett, que escucha en el puerto 9117. Si el servidor se llama descargame, abrimos la página :9117 [[descargame.local:9117]] en el navegador (o también se puede usar directamente la IP) y veremos la interfaz de Jackett aún sin trackers configurados. Lo primero que deberíamos hacer es añadir una contraseña de administración (tecleandola en la casilla correspondiente y después pinchando en "Set Password") y la base_url que hemos configurado en nginx (en Jackett se denomina "Base Path Override"). En nuestro ejemplo es "/jackett". En cuanto pulsemos el botón de "Apply server settings" ya podemos dejar de poner el número de puerto e ir a /jackett [[descargame.local/jackett]] sin más.Ahora configuramos los trackers torrent donde queremos buscar el contenido. Jackett admite tanto trackers públicos como privados o semi-privados (semi-privados son los que requieren registro pero no una invitación explícita, de forma que cualquiera puede registrarse). En ese caso, debemos configurar nuestro nombre de usuario y contraseña de acceso a tales trackers. Dependiendo del contenido que vayamos a buscar, podemos hacer un primer filtrado según los sitios que añadamos. Hay trackers especializados por tipo de contenidos (películas, anime. . . ) o por idiomas. Por ejemplo, si queremos añadir trackers de contenido en castellano exclusivamente, podemos pinchar en "Add indexer" y usar la casilla de búsqueda poniendo "es-", con lo que nos mostrará trackers cuyo idioma sea español. Es aconsejable revisar de vez en cuando la lista de trackers, ya que nuevas versiones de Jackett pueden introducir sitios que antes no estaban disponibles. Jackett se actualizará automáticamente a no ser que marquéis la opción de deshabilitar auto-actualizaciones.Para los trackers semi o totalmente privados, tendremos que configurar nuestros datos de acceso antes de añadirlos, pinchando en el icono de la herramienta. Este icono nos sirve también para configurar qué categorías tiene disponibles cada tracker. Las categorías son un estándar creado para USENET y podéis leer más sobre ellas aquí. En general podéis dejarlas tal como vienen.Otra cosa que podéis configurar son las URLs que algunos trackers disponen como alternativa (por ejemplo TPB) o un proxy a usar para salir a la red. Esto puede ser útil si algún tracker resulta estar bloqueado por vuestro operador o tiene un bloqueo judicial (otra vez, TPB y también desde no hace mucho EpubLibre). Os dejo una captura de los trackers que tengo configurados en mi Jackett como referencia:Si queremos utilizar la función de carpeta vigilada debemos asegurarnos de crearla y darle los permisos adecuados, vía SSH:# mkdir /mnt/descargas/blackhole# chown debian-transmission:debian-transmission /mnt/descargas/blackhole# chmod 775 /mnt/descargas/blackholeEntonces podremos añadir esta carpeta en Jackett (casilla Manual download blackhole directory), y también en la configuración de Transmission (settings.json). Entonces veremos en cualquier búsqueda manual en Jackett un botón para descargar directamente el torrent a la carpeta vigilada, con lo que el cliente torrent la añadirá automáticamente a las descargas. Os recuerdo que este sistema no funcionará con magnets si usamos Transmission.Configuración de SonarrSin cerrar la pestaña de Jackett, abrimos otra nueva para conectar a Sonarr en :8989 [[descargame.local:8989]]. Vamos a la pestaña de Settings y en el apartado General cambiamos el URL Base a "/sonarr". Ahora ya podemos acceder a /sonarr [[descargame.local/sonarr]] sin tener que recordar el número de puerto. En la misma pestaña en que estábamos podríamos configurar autenticación para acceder a Sonarr, en caso de que queramos evitar que "alguien" de casa cambie cosas sin nuestro permiso. Pinchando en el botón de "Show Advanced" podemos acceder a más ajustes, entre los cuales deberíamos activar la actualización automática. Cuando estemos conformes, pinchamos en "Save Changes" y cambiamos al apartado de "Download Clients".Aquí podríamos configurar diversas opciones para enganchar a clientes de USENET o torrent. Estamos utilizando Transmission, así que pinchamos en la opción correspondiente y añadimos los datos necesarios. Basta con escribir un nombre para identificarlo (pongamos "Transmission" por ejemplo), el nombre de usuario y la contraseña de acceso que configuramos antes en settings.json. El resto podemos dejarlo tal cual. Usamos el botón de Test para comprobar que los datos introducidos son correctos y la conexión se produce sin problemas, y guardamos.
A continuación vamos al apartado "Media Management". La mayoría de opciones son autoexplicativas, pero puede que nos interese la opción de CHMOD (en Advanced). La explicación de la opción de renombrado es un poco antiintuitiva, ya que se renombrarán los archivos solo si la marcamos. Lo más importante es la configuración de "Root Folder", que tiene su truco: esta no es la carpeta de las descargas de Transmission, sino la carpeta final a donde Sonarr moverá los episodios y donde los organizará. Dado que usamos diferentes programas para cada tipo de descargas, y cada uno puede tener su "Root Folder", esto nos vendrá bien para organizar los medios en diferentes "bibliotecas" para Jellyfin. Deberíamos crear una carpeta para ello en la consola del servidor, y darle permisos apropiados:# mkdir /mnt/descargas/series# chown sonarr:debian-transmission /mnt/descargas/series# chmod 775 /mnt/descargas/seriesY ahora ya podemos usar el botón de "Add Root Folder", navegar hasta esa carpeta y seleccionarla. Nos movemos a los siguientes apartados: en "Quality" es todo bastante evidente y no hay mucho que explicar, establece límites de tamaño para cada perfil. En "Profiles" deberíamos al menos añadir un perfil en castellano bajo "Language Profiles" para poder buscar contenido en nuestro idioma. No hace falta buscar el título del contenido en nuestro idioma, ya que estos programas integran búsqueda de títulos alternativos (en otros idiomas) y por tanto si les decimos que descargue una serie o película en castellano ellos mismos se encargarán de averiguar cómo se ha titulado aquí. En UI están los ajustes sobre el formato de fecha.El apartado de "Indexers" es muy importante. Aquí añadiremos los trackers donde Sonarr va a buscar enlaces (torrents en nuestro caso) para descargar el contenido. Las instrucciones para esto las encontramos ya en la página principal de Jackett (en "Adding a Jackett indexer in Sonarr or Radarr"), así que no tiene mucho misterio. En algunos casos puede que queramos editar las categorías de búsqueda. Copiamos los datos en las casillas correspondientes y pulsamos "Test" para probar la conexión. Si todo va bien, guardamos. Recordad que la "API Key" que se nos pide es la que proporciona Jackett, que es diferente en cada instalación.Repetiremos la operación con todos los trackers que nos interese añadir a Sonarr. En caso de que tengamos configurado en Jackett un surtido limitado de proveedores, o los que tengamos proporcionen varios tipos de medios, nos puede interesar aglutinar las búsquedas como si fuera un sólo "indexer". Para ello Jackett proporciona un indexer especial con la siguiente URL (modificadla para vuestro caso):/jackett/api/v2.0/indexers/all/results/torznabCon lo que quedaría así:
Configuración de Radarr y LidarrCon Sonarr ya funcionando, pasamos a configurar Radarr y Lidarr. Su configuración es prácticamente idéntica a la de Sonarr, así que sólo voy a repasar los detalles diferentes. Creamos carpetas raíz para ellos con los permisos ajustados:# mkdir /mnt/descargas/peliculas# chown radarr:debian-transmission /mnt/descargas/peliculas# chmod 775 /mnt/descargas/peliculas# mkdir /mnt/descargas/musica# chown lidarr:debian-transmission /mnt/descargas/musica# chmod 775 /mnt/descargas/musicaRadarr escucha en el puerto 7878, así que nos conectamos inicialmente a :7878 [[descargame.local:7878]] para cambiar la Base URL a "/radarr". Así ya podemos conectar directamente a /radarr [[descargame.local/radarr]].Con Lidarr tres cuartos de lo mismo, pero sobre el puerto 8686. De :8686 [[descargame.local:8686]] pasaremos tras cambiar la Base URL (poniendo "/lidarr") a /lidarr [[descargame.local/lidarr]].En Radarr podemos ajustar el idioma de la interfaz así como de la información de las películas bajo el apartado Settings/UI. Así veremos los títulos y sinopsis de las películas en castellano. Aún así, si buscamos el título original de una película en inglés, por ejemplo, seguirá apareciendo en los resultados igualmente. Tendremos que refrescar la página en el navegador para ver los cambios. El idioma del contenido a descargar tendremos que seleccionarlo modificando los perfiles, ya que no hay un "perfil de idioma" específico.Desgraciadamente no podremos librarnos de un "warning" en Radarr que nos apremia a instalar .NET Core. No debería suponer ningún problema de funcionamiento, tan sólo es una molestia. Si a alguien no le importa usar ese software de Microsoft en su distribución Linux, puede hacer caso del aviso.En Lidarr, además de los perfiles de calidad tenemos los llamados "Metadata Profiles". Esto se refiere al tipo de discos que queremos incluir en un perfil. Por ejemplo, quizá nos interesen solamente los discos de estudio y directos, dejando fuera los recopilatorios.Una característica interesante de Radarr es que bajo el apartado Películas/Descubrir podemos ver recomendaciones que nos hace en base al tipo de películas que hayamos añadido previamente. Estas irán cambiando según añadimos más.BackupsEn los tres programas de descargas existe una función de backup que se activa periódicamente y antes de cada actualización. Por seguridad, por si tenemos que reinstalar este servidor alguna vez, podemos hacer que tales backups se guarden en el disco externo. Primero creamos las carpetas y les damos los permisos adecuados:# mkdir -p /mnt/descargas/backups/# chmod 775 /mnt/descargas/backups -R# chown sonarr:debian-transmission /mnt/descargas/backups/sonarr# chown radarr:debian-transmission /mnt/descargas/backups/radarr# chown lidarr:debian-transmission /mnt/descargas/backups/lidarrAhora sólo tenemos que cambiar en la configuración de los tres programas la carpeta donde se guardan. Este ajuste se encuentra en Settings/General (con la opción de mostrar ajustes avanzados activada).Configuración de BazarrBazarr puede requerir dependencias extra. En principio hemos instalado algunas cosas al inicio del tutorial, y el propio Bazarr aporta otras de ellas, pero si no os funciona bien, podemos probar a instalarlas manualmente. No nos interesa instalarlas en el sistema para que no haya conflictos con la paquetería, así que las instalamos localmente sólo para su usuario:# sudo -u bazarr python3 -m pip install -r /opt/bazarr/requirements.txtVamos ahora a configurar el descargador de subtítulos, que escucha en el puerto 6767. Abrimos en nuestro navegador la página :6767 [[descargame.local:6767]] y cambiamos la URL Base a "/bazarr", con lo que ya podremos conectar directamente a /bazarr [[descargame.local/bazarr]]. Tenemos que conectar Bazarr con Sonarr y Radarr, así que en los apartados correspondientes de Settings activamos la conexión y añadimos las URL base de Sonarr y Radarr y sus respectivas claves API (se encuentran en Settings/General de cada programa). También añadimos sus carpetas raíz, ya que los subtítulos se guardarán al lado de cada medio. Veréis que tiene dos casillas, "Path para Sonarr" y "Path para Bazarr", por ejemplo. Esto se debe a que se puede instalar los programas en máquinas distintas y usar carpetas compartidas por red, pero como en nuestro caso todo está en la misma máquina ponemos ambas iguales.En Subtitles podemos configurar un proveedor de servicio Anti-Captcha si usamos alguno (son de pago) y también los parámetros de búsqueda, "arreglos" para subtítulos o si queremos subtítulos forzados o para gente con problemas de audición.En Settings/Providers seleccionamos qué proveedores de subtítulos queremos utilizar. Hay varios enfocados en exclusiva a subtítulos en español (de ambos lados del charco), pero otro que también funciona bien es OpenSubtitles (que requiere una cuenta, pero es fácil registrarse). En Settings/Languages seleccionamos que idiomas de subtítulos queremos. Se pueden añadir varios según váis pinchando en ellos en la lista.Para los dispositivos menos potentes, como nuestra Raspberry, se recomienda usar estos ajustes de la wiki de Bazarr para que sea un poco menos pesado. Como resumen, los listaré aquí:
Un nuevo artículo de la Universidad de Waterloo en Ontario sugiere que los modelos de IA también deberían ser capaces de llevar a cabo un proceso que los investigadores denominan aprendizaje de “menos de un disparo” o LO-shot. En otras palabras, un modelo de IA debería poder reconocer con precisión más objetos que la cantidad de ejemplos en los que fue entrenado. Eso podría resolver un gran problema para un campo que se ha vuelto cada vez más caro e inaccesible a medida que los conjuntos de datos utilizados se vuelven cada vez más grandes
...Existen ya varias aplicaciones que permiten visualizar esa información en entornos gráficos modernos, pero es menos sabido que existe una herramienta para mostrarla también en terminales de texto. Su nombre es TermTrack, y está disponible para su uso en Linux (y claro, a través de WLS, también para Windows 10). No es el típico programa que los responsables de las distribuciones Linux suelen incluir en sus repositorios. De hecho, sólo lo encontraremos en el repositorio comunitario de Arch (AUR)