Please see: https://github.com/kevinSuttle/html-meta-tags, thanks for the idea @dandv!
Copied from http://code.lancepollard.com/complete-list-of-html-meta-tags/
| echo 'export PATH=$HOME/local/bin:$PATH' >> ~/.bashrc | |
| . ~/.bashrc | |
| mkdir ~/local | |
| mkdir ~/node-latest-install | |
| cd ~/node-latest-install | |
| curl http://nodejs.org/dist/node-latest.tar.gz | tar xz --strip-components=1 | |
| ./configure --prefix=~/local | |
| make install # ok, fine, this step probably takes more than 30 seconds... | |
| curl https://www.npmjs.org/install.sh | sh |
| ############################################## | |
| # Sample client-side OpenVPN 2.0 config file # | |
| # for connecting to multi-client server. # | |
| # # | |
| # This configuration can be used by multiple # | |
| # clients, however each client should have # | |
| # its own cert and key files. # | |
| # # | |
| # On Windows, you might want to rename this # | |
| # file so it has a .ovpn extension # |
| #!/bin/sh | |
| ### | |
| # SOME COMMANDS WILL NOT WORK ON macOS (Sierra or newer) | |
| # For Sierra or newer, see https://github.com/mathiasbynens/dotfiles/blob/master/.macos | |
| ### | |
| # Alot of these configs have been taken from the various places | |
| # on the web, most from here | |
| # https://github.com/mathiasbynens/dotfiles/blob/5b3c8418ed42d93af2e647dc9d122f25cc034871/.osx |
| # code inspired from http://jainmarket.blogspot.com/2009/05/creating-custom-table-view-cell.html | |
| class CustomCell < UITableViewCell | |
| attr_accessor :primaryLabel | |
| attr_accessor :secondaryLabel | |
| def createLabels | |
| @primaryLabel = UILabel.alloc.init |
| /** | |
| * This casper scipt checks for 404 internal links for a given root url. | |
| * | |
| * Usage: | |
| * | |
| * $ casperjs 404checker.js http://mysite.tld/ | |
| * $ casperjs 404checker.js http://mysite.tld/ --max-depth=42 | |
| */ | |
| /*global URI*/ |
| module.exports = function(grunt) { | |
| function getJadeFiles(srcdir, destdir, wildcard) { | |
| var path = require('path'); | |
| var files = {}; | |
| grunt.file.expand({cwd: srcdir}, wildcard).forEach(function(relpath) { | |
| files[path.join(destdir, relpath.replace('.jade','.xml'))] = path.join(srcdir, relpath); | |
| }); | |
| return files; |
This can reduce files to ~15% of their size (2.3M to 345K, in one case) with no obvious degradation of quality.
ghostscript -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/printer -dNOPAUSE -dQUIET -dBATCH -sOutputFile=output.pdf input.pdf
Other options for PDFSETTINGS:
I've done the same process every couple years since 2013 (Mountain Lion, Mavericks, High Sierra, Catalina) and I updated the Gist each time I've done it.
I kinda regret for not using something like Boxen (or anything similar) to automate the process, but TBH I only actually needed to these steps once every couple years...