This gist shows how to create a GIF screencast using only free OS X tools: QuickTime, ffmpeg, and gifsicle.
To capture the video (filesize: 19MB), using the free "QuickTime Player" application:
| user www-data; | |
| worker_processes 4; | |
| error_log /var/log/nginx/error.log; | |
| pid /var/run/nginx.pid; | |
| events { | |
| worker_connections 1024; | |
| } |
| if (window.location.href == "https://www.youtube.com/feed/channels") { | |
| let rssText = [...document.querySelectorAll("#main-link.channel-link")].map((e) => { | |
| const [, a, b] = e.href.match("/((?:user)|(?:channel))/(.*)$"); | |
| return "https://www.youtube.com/feeds/videos.xml?" + (a === "user" ? "user=" : "channel_id=") + b; | |
| }).join("\n") | |
| if (rssText) { | |
| navigator.clipboard.writeText(rssText).then( | |
| () => alert("A list of channel RSS feeds has been copied to the clipboard. \nPaste these into rssmix.com to generate a single RSS feed, or opml-gen.ovh to generate an OPML file.") | |
| ).catch( | |
| () => { |
| // Create a Promise that resolves after ms time | |
| var timer = function(ms) { | |
| return new Promise(resolve => { | |
| setTimeout(resolve, ms); | |
| }); | |
| }; | |
| // Repeatedly generate a number starting | |
| // from 0 after a random amount of time | |
| var source = async function*() { |
| # get total requests by status code | |
| awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | |
| # get top requesters by IP | |
| awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head | awk -v OFS='\t' '{"host " $2 | getline ip; print $0, ip}' | |
| # get top requesters by user agent | |
| awk -F'"' '{print $6}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head | |
| # get top requests by URL |
| node_modules | |
| dist/ | |
| yarn.lock | |
| wwwroot |
| node_modules | |
| dist/ | |
| yarn.lock | |
| wwwroot |
| import { ApolloServer, gql } from 'apollo-server-micro'; | |
| const typeDefs = gql` | |
| type Query { | |
| sayHello: String | |
| } | |
| `; | |
| const resolvers = { | |
| Query: { |
Each of these commands will run an ad hoc http static server in your current (or specified) directory, available at http://localhost:8000. Use this power wisely.
$ python -m SimpleHTTPServer 8000