Skip to content

Instantly share code, notes, and snippets.

View wrunk's full-sized avatar

Warren Runk wrunk

View GitHub Profile
@wrunk
wrunk / user_test.go
Last active January 25, 2021 23:34
Golang unit test for panic scenario
func TestUserFail(t *testing.T) {
func() {
defer func() {
if r := recover(); r == nil {
t.Errorf("TestUserFail should have panicked!")
}
}()
// This function should cause a panic
CreateUser(12, "hello")
@wrunk
wrunk / pre-commit
Created October 28, 2016 18:24
Golang git pre commit hook
#!/bin/sh
#
# Note this is mostly the standard git pre-commit.sample which can be found
# in your repo's .git/hooks/ directory with golang fmt added at the bottom.
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
@wrunk
wrunk / GolangJSONCustomMarshal.go
Created October 12, 2016 22:59
Golang JSON Custom Marshal
/*
In a fairly typical webapp data model you often want to send
the client different "views" of the data model.
Many database and caching tools require the base model to be quite
standard with json tags and types, so the following approach is
ideal:
Based on this blog post and SO question:
@wrunk
wrunk / xorm_jsonb_struct_field_issue.go
Created June 14, 2016 20:05
Golang xorm jsonb struct field issue
package main
import (
"fmt"
"github.com/go-xorm/xorm"
_ "github.com/lib/pq"
"math/rand"
"time"
)
@wrunk
wrunk / python_multiprocessing_pool_with_queues.py
Last active January 27, 2020 13:08
Python multiprocessing pool with queues
from multiprocessing.pool import ThreadPool as Pool
from multiprocessing import Queue as PQueue
import Queue
my_dict = {
'url1': 'url2',
'url3': 'url4',
}
my_q = PQueue()
@wrunk
wrunk / bash_profile
Created March 16, 2015 21:32
Some of my bashrc/profile settings
#!/bin/bash
# --------------------------------------------------------------------------- #
# These are git settings from:
# http://neverstopbuilding.net/gitpro/
# --------------------------------------------------------------------------- #
#source ~/.git-completion.bash
#source ~/.git-prompt.sh
#
# Settings for python virtual envs and the python virtualenvwrapper
@wrunk
wrunk / cheatsheet.go
Last active September 8, 2021 21:20
Go cheatsheet
/* This document is for quick ref while learning golang */
// Allocating Slices
// Using slice literals
// Make a slice of strings
strs := []string{"aaa", "bbb", "ccc", "ddd"}
// Bytes
key := []byte("5e8487e6")
// Declaring a var my_slice for later makeage
@wrunk
wrunk / sharded_guid.py
Last active August 29, 2015 14:09
Sharded globally unique identifier mini library for python2.7
#!/usr/bin/env python
# Written by Warren Runk
# This file is free software in the public domain.
import base64
import random
import uuid
@wrunk
wrunk / guid_python.py
Last active August 29, 2015 14:09
Creating GUIDs in python using the first two chars to get a shard
#!/usr/bin/env python
# Written by Warren Runk
# This file is free software in the public domain.
import base64
import uuid
#!/usr/bin/env python
# This script is free software written by Warren Runk (warren.runk@gmail.com)
"""
This is a (hopefully) simple example of how to download your appengine logs to a normal
linux (non google or appengine) computer using remote api and logservice.
You can use appcfg.py to "request_logs" but that is not practical for real workloads
From here you can download smaller time slices of logs as necessary depending on your scale.