FN +
F1
= brightness -F2
= brightness +F3
= calculatorF4
= my computer
Base list blatantly copied (and slightly extended) from
https://www.fortheloveofwords.net/npr-top-100-science-fiction-fantasy-books/
Genres from SF Signal's
A Guide to Navigating NPR's Top 100 Science Fiction and Fantasy Books
Details: https://en.wikipedia.org/wiki/SF_Masterworks
#!/usr/bin/env -S node --no-warnings | |
const { JSDOM } = require("jsdom"); | |
const ua = 'Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/110.0'; | |
function listHeadlines(url, title, selector) { | |
return fetch(url, { headers: { "User-Agent": ua}}).then((res) => res.text()).then((text) => { | |
const doc = (new JSDOM(text)).window.document; | |
const titles = Array.from(doc.querySelectorAll(selector)).map(el => el.textContent.trim()); | |
console.log(`====== [${title}] ======`); | |
titles.forEach((text) => console.log(`* ${text}`)); | |
}); |
If you're reading this because we talked at the course held by Aya & Angela, Glide Roller Skating (GRS), then you can find me on facebook, but I comment from time to time at the (mostly Hungarian) group Dunaguri.
Angela is active in the Artistic Roller Skating group as well, but I'll miss their lessons greatly and it saddens my heart to loose such wonderful teachers. I'm a novice, I started roller skating early 2022 and while I practice a lot, please take what I say with a grain salt, there are hundred times better and better informed skaters out there.
; MonSwap - Swaps all the application windows from one monitor to another. | |
; see: https://www.autohotkey.com/boards/viewtopic.php?t=68311 | |
; v1.0.0 Author: Alan Henager | |
; v1.0.1 Xenrik - Updated to use relative screen size when swapping | |
; v1.0.2 Boiler, Masgo - exclude Windows 10 secondary monitor taskbar from being swapped | |
; v1.0.3 Szkrd - dumbing it down for two vertical monitors, 1 below, 2 above | |
; +-------+ | |
; | 2 | | |
; +-------+ | |
; +-------+ |
// this is a very simple implementation of rot13 cypher over sockets, to avoid primitive | |
// deep packet inspection (https://gist.github.com/gmurdocca/88857b58dc4668d88b0d0fae6ebf8b64); | |
// a more robust solution would be to use obs4 (https://github.com/Yawning/obfs4), which | |
// implements the ScrambleSuit protocol as a tor transport plugin with a standalone | |
// runner/wrapper (for example https://github.com/twisteroidambassador/ptadapter in python) | |
const net = require('net'); | |
const parseIpPort = (s = '') => ({ ip: s.split(':')[0], port: parseInt(s.split(':')[1], 10) }); | |
const addrs = { from: parseIpPort(process.argv[2]), to: parseIpPort(process.argv[3]) }; | |
const ports = { from: addrs.from.port, to: addrs.to.port } | |
const hosts = { from: addrs.from.ip, to: addrs.to.ip } |
const net = require('net'); | |
const spawn = require('child_process').spawn; | |
const ports = [80, 5000]; | |
const sleepSecs = 30; | |
const interfaceMatcher = /(169\.254\.[\d\.]+)/; | |
function doForward(listenInterface = '0.0.0.0') { | |
const server = net.createServer(function (from) { | |
const to = net.createConnection({ host: '127.0.0.1', port: ports[1] }); | |
from.pipe(to).on('error', (err) => console.log('from error', err.code)); |