View generate-index-from-config.js
// For every website folder that contains a certain file, autogen an index.html landing page for it. | |
const { readdirSync, statSync, writeFileSync, existsSync, readFileSync } = require('fs'); | |
const { join } = require('path'); | |
// ----------------------------------------- Config | |
const DIR = '/home/deploy/www'; | |
const CONFIG_FILE = 'logo/info.txt'; |
View generate-nginx-config.js
const { readdirSync, statSync, writeFileSync } = require('fs') | |
const { join } = require('path') | |
// ----------------------------------------- Config | |
const DIR = '/home/deploy/www'; | |
const TARGET = '/home/deploy/deployNginxConfig'; | |
const HEADER = ` | |
# Config generated by 'generate-nginx-config.js', do not hand-edit |
View renameToHash.sh
#!/bin/bash | |
# TODO: skip tiny files (so small they couldn't be photos) | |
# TODO: make sure sym links and other file system oddities are handled | |
# TODO: look at paralellization for perf boost | |
# | |
# Constants | |
# | |
CHAR_COUNT=12 | |
BLOCK_COUNT=6 |
View ubuntu-setup.sh
# Update the system's packages | |
apt-get update | |
apt-get upgrade | |
# Set up the `deploy` user | |
useradd deploy | |
mkdir /home/deploy | |
mkdir /home/deploy/.ssh | |
chmod 700 /home/deploy/.ssh | |
usermod -s /bin/bash deploy |
View promise.js
// --------------------------------------------- Promise Implementation | |
Promise = function () { | |
this._stack = []; | |
this._isResolved = false; | |
} | |
Promise.prototype = { | |
success: function(callback){ | |
// Is the promise already resolved? | |
if(this._isResolved) { | |
callback( this._result ); |
View addFileToGit.js
const Octokit = require('@octokit/rest'); // https://octokit.github.io/rest.js/ | |
// Customize this stuff: | |
const auth = 'your-key-generated-in-github-ui'; // PRIVATE! | |
const owner = 'repo-owner'; | |
const repo = 'your-repo-name'; | |
// Constants | |
const userAgent = 'git commiter v1'; | |
const ref = 'heads/master'; |
View node-get-file-contents.js
const fs = require('fs') | |
const path = require('path') | |
const DIR = 'input/'; | |
const readFile = name => fs.readFileSync(name); | |
(async () => { | |
const files = fs.readdirSync(DIR) | |
.filter(s => s.match(/\.csv$/)) // only .csv files -- change to whatever you want. |
View sort-object-keys.ts
export interface SomeShape { | |
b: string, | |
c: string, | |
a: string, | |
} | |
// Specify your sort order here | |
const rank: Array<keyof SomeShape> = ['a', 'b', 'c']; | |
export function sortedKvpString(obj: SomeShape) { |
View keybindings.json
// Place your key bindings in this file to overwrite the defaults | |
[ | |
{ | |
"key": "cmd+d", | |
"command": "editor.action.copyLinesDownAction", | |
"when": "editorTextFocus && !editorReadonly" | |
}, | |
{ | |
"key": "shift+alt+down", | |
"command": "-editor.action.copyLinesDownAction", |
View count-dom-words.js
// Procedure: | |
countWords(document.body); | |
/* | |
* Count the text inside each element. | |
* Parents include all the words of their children. |
NewerOlder