Skip to content

Instantly share code, notes, and snippets.

@lummie
lummie / create-ca-bundle.sh
Created November 20, 2015 15:53
SUSE Enterprise linux create a ca-bundle.pem from the certificates in /etc/ssl/certs
#!/bin/bash
if [ -f /etc/ssl/ca-bundle.pem ]
then
mv /etc/ssl/ca-bundle.pem /etc/ssl/ca-bundle.pem.old
fi
find /etc/ssl/certs -maxdepth 1 -type f -exec cat {} \; >> /etc/ssl/ca-bundle.pem
@lummie
lummie / GoSublime.sublime-settings
Created November 30, 2015 11:55
GoSublime User settings for build / test on Save
{
"on_save": [{
"cmd": "gs9o_run_many", "args": {
"commands":[
["clear"],
["sh", "if [ -f onsave.sh ]; then ./onsave.sh; else gofmt -s -w ./ && go build . errors && go test -i && go test && go vet && golint ; fi"]
],
"focus_view": false
}
}],
@lummie
lummie / generic_channel.go
Created April 27, 2017 07:47
Go Example - Channel that can receive any type
package main
import (
"log"
"reflect"
)
/*
This is an example of a channel that can receive any data type, e.g. different struct types
@lummie
lummie / extend_struct_json.go
Created July 25, 2017 17:04
Idiomatic way to extend a struct when marshalling to Json
package main
// This example shows how to extend a struct for marshalling, e.g. to Json to allow private fields
// to be exposed or for adding additonal fields that are populated at runtime.
import (
"encoding/json"
"fmt"
"time"
)
@lummie
lummie / throttle_concurrent_work.go
Created May 3, 2020 13:56
Simple pattern using a channel to throttle the number of concurrent workers
// change the channel size to the number of concurrent tasks you'd like
var throttle = make(chan struct{}, 1)
func DoStuff() {
// block until we can add to throttle channel
throttle <- struct{}{}
defer func() {
<-throttle // remove from channel when we are done
}()
// do your funky stuff
@lummie
lummie / string_test.go
Created June 8, 2017 07:53
Golang Test Empty string vs len
package string_test
import "testing"
func Benchmark_StringNotEqual(b *testing.B) {
z := ""
i := 0
for i:= 0; i<b.N; i++ {
if z != "" {
i++
@lummie
lummie / go_channel_simple_worker_pattern.go
Created September 28, 2021 14:59
Go channel based Simple Worker pattern
package main
import (
"fmt"
"log"
"sync"
)
/*
This is an example of a worker pattern for channels
@lummie
lummie / gist:732b8cb0b478966b91a7f9244c7aeac7
Last active December 12, 2021 20:20
Change exif timezone with exiftool -8 hour
// I'm forever forgetting to adjust the time zone on my camera when taking pictures on vacation
// this uses the linux exiftool to adjust the timezone -8 hours for all images in a directory
exiftool "-DateTimeOriginal-=0:0:0 8:0:0" *
@lummie
lummie / .bashrc
Last active July 14, 2022 06:49
k8s, git, full path PS1 bash prompt
# install kube-ps1 from https://github.com/jonmosco/kube-ps1
alias sn="kubectl config set-context --current --namespace" # switch namespace
# setup bash prompt
source "/usr/local/opt/kube-ps1/share/kube-ps1.sh" && k8s='$(kube_ps1)' # k8s cluster
export PS1="\n\n 🦔" # headgehog
export PS1="$PS1\n┏━━━━━┯━ 🕰 \t ━━━━━━━━━━━━━━━━━━━━━━━━━" # headgehog
export PS1="$PS1\n┃ git │ \$(git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/(\1)/')" # git branch
export PS1="$PS1\n┃ k8s │ $k8s" # k8s info
@lummie
lummie / FileServerWith404.go
Last active February 24, 2023 22:46
A wrapper for GOs http.FileServer that allows a custom 404 handler to be assigned
package middleware
import (
"net/http"
"os"
"path"
"strings"
)
// FSHandler404 provides the function signature for passing to the FileServerWith404