Skip to content

Instantly share code, notes, and snippets.

View aprice's full-sized avatar

Adrian Price aprice

View GitHub Profile
@aprice
aprice / local-datetime.js
Last active December 30, 2015 15:09
This snippet uses jQuery to replace the text of elements with data-datetime, data-date, or data-time attributes containing a JavaScript (millisecond) timestamp with local & locale date/time/datetime strings. No more asking users for locale information!
/* e.g. <span data-datetime="1395760693000">2014-03-25 15:18:13</span> will be replaced with localized date/time on load */
$("[data-datetime]").each(function () {
el = $(this);
el.text(new Date(parseInt(el.data("datetime"))).toLocaleString());
});
/* e.g. <span data-date="1395760693000">2014-03-25</span> */
$("[data-date]").each(function () {
el = $(this);
el.text(new Date(parseInt(el.data("date"))).toLocaleDateString());
@aprice
aprice / tooltips.css
Last active August 29, 2015 14:04
HTML5/CSS3 tooltips. Any visible element with a data-tooltip attribute will have the value of that attribute displayed in a tooltip on hover, using only CSS.
*[data-tooltip]::before
{
box-shadow: .3em .3em .3em rgba(0, 0, 0, 0.4);
max-width: 30em;
font-size: 80%;
font-weight: normal;
background: #ff9;
color:#000;
border: 1pt solid #000;
padding: 0.5em;
@aprice
aprice / benchwc.sh
Created September 16, 2016 19:28
Compare golang benchmarks between working copy and pristine
#!/bin/bash
# Usage: benchwc.sh "path/to/package" "-build flags"
# e.g. benchwc.sh ./mypkg "-cpu=1,2,4 -tags=debug -benchtime=2s"
DIR=${1:-.}
BFLAGS=$2
git stash save || exit 1
cd $DIR && go test -run=^$ -bench=. -benchmem $BFLAGS | tee old.out
git stash pop || exit 1
cd $DIR && go test -run=^$ -bench=. -benchmem $BFLAGS | tee new.out
benchcmp old.out new.out | tee comparison.out
@aprice
aprice / makefile
Last active January 8, 2023 16:53
Full base Golang makefile for developers and Jenkins. Handles installing tools, formatting, linting, cross-compilation, installation, and packaging for distribution.
# This file is intended as a starting point for a customized makefile for a Go project.
#
# Targets:
# all: Format, check, build, and test the code
# setup: Install build/test toolchain dependencies (e.g. gox)
# lint: Run linters against source code
# format: Format the source files
# build: Build the command(s) for target OS/arch combinations
# install: Install the command(s)
# clean: Clean the build/test artifacts
@aprice
aprice / aws_peers.go
Last active April 7, 2017 19:07
Get the list of IP addresses of instances in the same ASG, excluding this instance
package config
import (
"errors"
"io/ioutil"
"net/http"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/autoscaling"
@aprice
aprice / collator.go
Last active April 26, 2017 19:30
Simple, un-typed fan-in/fan-out result collator. Easy to customize for type safety.
type Collator struct {
results chan interface{}
errors chan error
wg *sync.WaitGroup
}
func NewCollator() *Collator {
return &Collator{
results: make(chan interface{}),
errors: make(chan error),
@aprice
aprice / password.go
Last active May 10, 2017 14:39
Simple, secure, best-practices password storage in Go.
package password
import (
"bytes"
"crypto/rand"
"crypto/sha256"
"fmt"
"bufio"
"errors"
"io"
@aprice
aprice / busboy.go
Created August 11, 2017 15:07
busboy cleans up after Chef nodes terminated in EC2 by listening for CloudWatch termination events on an SQS queue.
package main
import (
"encoding/json"
"fmt"
"io"
"io/ioutil"
"log"
"os"
"time"
@aprice
aprice / tf.sh
Created November 28, 2017 19:40
Terraform helper script for workspace-per-environment model
#!/bin/bash
cmd=$1
shift
env=$1
shift
terraform workspace select $env || exit_error "failed to select workspace $env"
case $cmd in
# Custom command: plan -> outfile, confirm, apply outfile
planapply)
@aprice
aprice / mrclean.sh
Created November 30, 2017 20:22
Simple utility for showing/cleaning up kitchen test instances that may have been forgotten.
#!/bin/bash
# Usage:
# mrclean - list kitchen instances in all cookbooks
# mrclean destroy - destroy kitchen instances in all cookbooks
# Update to your cookbook path
CBDIR=$HOME/chef-repo/cookbooks
for c in $CBDIR/*; do
echo $(basename $c)