Skip to content

Instantly share code, notes, and snippets.

View cmdrkeene's full-sized avatar

Brandon Keene cmdrkeene

View GitHub Profile
@cmdrkeene
cmdrkeene / gnuplot_chart.go
Created August 27, 2014 16:16
Scrap of a GNUPlot chart
// set term png
// set xlabel 'Samples'
// set ylabel 'MB'
// set output 'name.png'
// plot
// "name.dat" using 1:($2/1e6) title 'Sys' with lines,
// "name.dat" using 1:($3/1e6) title 'Alloc' with lines,
// "name.dat" using 1:($4/1e6) title 'Idle' with lines
type chart struct {
filename string
package main
import (
"errors"
"fmt"
"time"
)
var realError = errors.New("real")
var timeoutError = errors.New("timeout")
@cmdrkeene
cmdrkeene / gist:6abefe35ad7f1fd3d2a2
Created October 29, 2014 17:49
uuid v4 and func to swap in test
var uuidFunc = uuidV4 // for swapping in test
func uuidV4() string {
b := make([]byte, 16)
_, err := io.ReadFull(rand.Reader, b)
if err != nil {
panic(err)
}
b[6] = (b[6] & 0x0F) | 0x40
b[8] = (b[8] &^ 0x40) | 0x80
@cmdrkeene
cmdrkeene / gist:ddc8e18a13016a056b33
Created January 22, 2015 01:36
Simple auto test for Go
#!/bin/bash
which entr > /dev/null
if [ $? -ne 0 ]; then
echo "installing entr"
brew install entr
else
echo "watching go files"
fi
@cmdrkeene
cmdrkeene / gist:45863376fe7f23fdec35
Created January 22, 2015 16:59
Don't use primitives for things like email
// An electronic mail address
type email struct {
s string
}
var invalidEmail = errors.New("invalid email")
func newEmail(s string) (email, error) {
s = strings.Trim(s, " ")
@cmdrkeene
cmdrkeene / api_doc.go
Created March 26, 2015 15:28
Generate API docs from source comments
package main
import (
"go/parser"
"go/token"
"io"
"strings"
)
// APIDoc is an API Documentation generator.
@cmdrkeene
cmdrkeene / log.go
Last active August 29, 2015 14:20
A simple leveled logger
package foo
import "os"
import "log"
// Level indicates Logger verbosity
type Level int
// LogLevel specifies the minimum level logged
var LogLevel = Debug
@cmdrkeene
cmdrkeene / log.go
Created May 1, 2015 19:12
An alternative leveled logger package that follows unix convention for output
// Package log follows linux output convention
// Top level functions like Test() and Verbose() set the package "mode"
package log
import (
"io/ioutil"
"log"
"os"
)
brandon:six-emoji{master}$ rake spec
(in /usr/local/src/workspace/six-emoji)
....FFFFF..............................
1)
NoMethodError in 'Emojicon should be creatable (sanity check)'
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.include?
/usr/local/src/workspace/six-emoji/spec/fixjour_builders.rb:6:in `__bind_1247435905_341143'
@cmdrkeene
cmdrkeene / gist:161304
Created August 4, 2009 15:18
Forgive us, for we have sinned
# Execute a block +number+ times. Block should be a predicate (return true/false)
#
# Use procs/lambdas to define callbacks:
# :success => ...
# :retry => ...
# :failure => ...
def do_over(number, options = {}, &block)
options = {
:success => lambda { puts "SUCCESS" },
:retry => lambda { puts "RETRY" },