Skip to content

Instantly share code, notes, and snippets.

View byrnedo's full-sized avatar

Donal Byrne byrnedo

View GitHub Profile
@byrnedo
byrnedo / check_docker_newer_tag.sh
Created April 7, 2016 07:08
Check if newer docker image available.
#!/bin/bash
# ensure running bash
if ! [ -n "$BASH_VERSION" ];then
echo "this is not bash, calling self with bash....";
SCRIPT=$(readlink -f "$0")
/bin/bash $SCRIPT
exit;
fi
@byrnedo
byrnedo / ComputeHmac256.go
Created September 12, 2016 07:32
Compute a hmac for a message in golang
func ComputeHmac256(message string, secret string) string {
key := []byte(secret)
h := hmac.New(sha256.New, key)
h.Write([]byte(message))
return base64.StdEncoding.EncodeToString(h.Sum(nil))
}
@byrnedo
byrnedo / clusterplz.sh
Created March 7, 2024 10:21
Start a multipass n node cluster, and handle it easily.
#!/bin/bash
SCRIPT_DIR=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)
POSITIONAL_ARGS=()
while [[ $# -gt 0 ]]; do
case $1 in
# -e|--extension)
# EXTENSION="$2"
@byrnedo
byrnedo / next-oncall.sh
Created February 9, 2024 12:12
Get next on call date from Pagerduty
#!/bin/bash
# NOTE: assumes bsd `date` (as in mac)
set -euo pipefail
user_name="Your Name"
PD_TOKEN=${PD_TOKEN:-}
if [ -z "$PD_TOKEN" ]; then
PD_TOKEN=$(cat ~/.pagerduty.token)
@byrnedo
byrnedo / .BuildDockerfile
Last active January 27, 2024 17:25
Go project Makefile with build done in docker
FROM golang:1.9-alpine
# vi: ft=dockerfile
RUN apk update && apk add curl \
git \
protobuf \
bash \
make \
openssh-client && \
rm -rf /var/cache/apk/*
@byrnedo
byrnedo / Startup.vb
Created January 11, 2019 12:23
VB Dotnet Owin Auth0 Startup
Imports Microsoft.Owin
Imports Microsoft.Owin.Security.OpenIdConnect
Imports Owin
Imports Microsoft.Owin.Security
Imports Microsoft.Owin.Security.Notifications
Imports Microsoft.Owin.Security.Cookies
Imports Microsoft.IdentityModel.Protocols.OpenIdConnect
Imports Microsoft.IdentityModel.Tokens
Imports System.Threading.Tasks
@byrnedo
byrnedo / repo.go
Last active December 19, 2023 12:18
Repo setup for go that lets you use transactions transparently
package repo
import (
"context"
"database/sql/driver"
"github.com/jmoiron/sqlx"
)
// can be either a *sqlx.DB or a *sqlx.Tx
@byrnedo
byrnedo / multierror.go
Created November 16, 2022 14:30
Multierror.go, mutliple go error container.
// MultiError don't use directly, use NewMultiError
type MultiError map[string]error
// NewMultiError returns nil if all errs are nil
func NewMultiError(errs map[string]error) error {
for k, v := range errs {
if v == nil {
delete(errs, k)
}
}
@byrnedo
byrnedo / debounce.go
Last active November 2, 2022 08:53
Debounce go channel
package pkg
import (
"context"
"time"
)
// Debounce takes a channel, and will notify the output channel with the last received message at frequency min.
// Upon cancel or max timeout, it will check one last time for a message.
// Cancelling the ctx will cause the goroutine to exit.
@byrnedo
byrnedo / sqlx-stats-logger.go
Created July 21, 2022 05:59
Go routine to periodically log sqlx connection pool stats
go func(dbx *sqlx.DB) {
ticker := time.NewTicker(5 * time.Second)
defer ticker.Stop()
for {
select {
case <-ticker.C:
stats := dbx.Stats()
b, _ := json.Marshal(stats)
log.Printf("db stats: %d open, %d idle, %d in-use", stats.OpenConnections, stats.Idle, stats.InUse)