Skip to content

Instantly share code, notes, and snippets.

View willjobs's full-sized avatar

Will Jobs willjobs

View GitHub Profile
@willjobs
willjobs / megabackup.sh
Last active October 1, 2017 10:14 — forked from matteomattei/megabackup.sh
Mega server backup using megatools (revised for updated megatools, serverpilot app locations, and to include timestamps)
#!/bin/bash
now=$(date +"%T")
echo "Starting backup at ${now}..." | tee -a /root/megabackup.log
SERVER="servername"
DAYS_TO_BACKUP=7
WORKING_DIR="/root/backup_tmp_dir"
BACKUP_MYSQL="true"
@willjobs
willjobs / enumerate_bin.R
Last active October 2, 2017 03:04
R script to enumerate all binary strings of a certain length and type. Useful for getting all possible combinations of columns, for example.
# "enumerate_bin("1xx000") generates a vector of all binary strings: c("100000","101000","110000","111000")
enumerate_bin <- function(input_str) {
strlen<-nchar(input_str)
for(i in 1:strlen) {
if(tolower(substr(input_str,i,i))=="x") {
str0 <- paste(substr(input_str,1,i-1),"0",substr(input_str,i+1,strlen),sep="")
str1 <- paste(substr(input_str,1,i-1),"1",substr(input_str,i+1,strlen),sep="")
return(c(enumerate_bin(str0), enumerate_bin(str1)))
}
}
@willjobs
willjobs / Fastmail-tampermonkey.txt
Last active October 2, 2017 04:14
Tampermonkey/greasemonkey script to fix FastMail's email body width (which is set to 938px) to fit on the page
// ==UserScript==
// @name Fastmail - email body width
// @description Fix width of emails being wider than screen
// @author Will Jobs
// @id fastmail-emailwidth
// @include https://www.fastmail.com/mail/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant GM_addStyle
// ==/UserScript==
@willjobs
willjobs / google-sumdollars.js
Created October 2, 2017 03:11
Custom function for Google sheets to sum all of the dollar amounts written in notes in a given cell. If given a range of cells, will calculate the sums for each cell independently and output them below the cell with the formula.
function sumdollars(input) {
if(input.map) {
return input.map(sumdollars);
} else {
if(input.length === 0) {return 0;}
if(typeof input === 'number') {return input;}
var strArr = input.split('$').slice(1);
var mysum = 0;
for(i=0; i < strArr.length; i++) {
mysum += parseFloat(strArr[i].split(/[^0-9\.]+/)[0]);
@willjobs
willjobs / wifi-passwords.ps1
Created October 2, 2017 03:33
PowerShell script to show all wifi passwords saved in Windows
(netsh wlan show profiles) | Select-String "\:(.+)$" | %{$name=$_.Matches.Groups[1].Value.Trim(); $_} | %{(netsh wlan show profile name="$name" key=clear)} | Select-String "Key Content\W+\:(.+)$" | %{$pass=$_.Matches.Groups[1].Value.Trim(); $_} | %{[PSCustomObject]@{ PROFILE_NAME=$name;PASSWORD=$pass }} | Format-Table -AutoSize
@willjobs
willjobs / getMonth.gs
Created October 11, 2017 05:24
Google Sheets custom function to get month name (either full or 3-character abbreviation), given an integer
function getMonthText(val, short) {
if(val !== parseInt(val,10)) {
return "";
}
if(val < 1 || val > 12) {
return "";
}
var x = "";
switch(val) {
case 1:
@willjobs
willjobs / magoosh_gre_time.js
Created November 29, 2017 08:10
JS code to summarize the amount of video content on the Magoosh GRE site (https://gre.magoosh.com/lessons)
overall_sum = 0;
$('.thin.list-unstyled.lesson-list-condensed').each(function(idx, el) {
sum = 0;
$(el).find('.lesson-item').each(
function(idx2, inner_el) {
time = $(inner_el).find('.lesson-item-subtitle').text();
time = time.split(':');
if(time.length > 1) {
@willjobs
willjobs / Excel Comparison.txt
Last active January 31, 2021 02:22
Custom Excel Functions to compare two strings
Public Function countDifferences(str1 As String, str2 As String) As Integer
Dim i As Integer
If Len(str1) <> Len(str2) Then
countDifferences = -1
Exit Function
End If
countDifferences = 0
For i = 1 To Len(str1)
If Mid(str1, i, 1) <> Mid(str2, i, 1) Then
@willjobs
willjobs / ynab-google-sheets.js
Last active June 2, 2023 06:16 — forked from notself/ynab-google-sheets.js
Revisions to the original gist to add columns, show split subtransactions on multiple rows by default, fix time discrepancies, and add an indicator of the last data pull
function YNABAccounts(accessToken, budgetId) {
const accounts = _getBudgetAccounts(accessToken, budgetId);
if(accounts == null) {
return null;
}
const columns = ["Name", "Type", "Budget", "Closed", "Balance"];
const rows = accounts.map(function (acc) {
return [
@willjobs
willjobs / python_subdir_import.py
Last active January 31, 2021 02:23
Python Relative Imports
# allows importing of ModuleB from ModuleA within the same subdirectory, when the code is run from a parent directory
# see https://stackoverflow.com/a/49375740/1102199
import os
import sys
sys.path.append(os.path.dirname(os.path.realpath(__file__)))