Skip to content

Instantly share code, notes, and snippets.

@arnehormann
arnehormann / truth.sql
Created Jan 24, 2013
Truthiness and MySQL
View truth.sql
SELECT
NULL, # \N
false, # 0
true, # 1
0 = false, # 1
1 = true, # 1
2 = true, # 0
true - false = 0, # 0
true + false = 1, # 1
true = null, # \N
@arnehormann
arnehormann / puttygen.go
Last active May 11, 2020
convert openssl pem private key files to putty ppk files (stdin -> stdout)
View puttygen.go
package main
import (
"bytes"
"crypto/aes"
"crypto/cipher"
"crypto/hmac"
"crypto/rsa"
"crypto/sha1"
"crypto/x509"
@arnehormann
arnehormann / vpngen.rb
Last active Dec 17, 2019
Configuration file generator for OpenVPN which also sets up a ca and generates keys.
View vpngen.rb
#!/usr/bin/env ruby
# Just call this without arguments. It will show a friendly help text.
# For xterm-256color, it will even use colors for some commands!
class AppConfig
@@default_remote = 'vpn.example.com'
@@default_networks = '10.0.0.0/24>192.168.1.0/24'
@@default_subject = '/C=US/ST=CA/L=San Francisco/O=Example/OU=/CN={{name}}'
View static-nginx.sh
#!/bin/bash
### build nginx/openresty as a static binary with most recent libraries.
### apart from build tools, this script depends on sha256sum, tar, curl.
# features
ENABLE_MAIL="${ENABLE_EMAIL:-true}"
ENABLE_MEDIA="${ENABLE_MEDIA:-true}"
ENABLE_WEBDAV="${ENABLE_WEBDAV:-true}"
@arnehormann
arnehormann / gzipstream.go
Last active Sep 27, 2017
A pretty small Go application compressing from stdin to stdout as gzip.
View gzipstream.go
package main
import (
"compress/gzip"
"fmt"
"io"
"os"
"strconv"
"time"
)
@arnehormann
arnehormann / ssl-email.sh
Last active Apr 20, 2016
create openssl certificates for ca, server and user (email); and sign them
View ssl-email.sh
#!/bin/bash
# crash on error exit codes and undefined variables
set -e -u
if [ "true" = "$TRACE" ]; then
# trace execution (+x to get rid of noise)
set -x
fi
View shell-stuff.sh
#!/bin/bash
# stop on errors and undeclared variables
set -e -u -o pipefail
err() {
echo "[$(date +'%Y-%m-%dT%H:%M:%S%z')]: $@" >&2
}
@arnehormann
arnehormann / benchmark-datetime_test.go
Last active Dec 31, 2015
benchmark another way to format mysql date and datetime into a `[]byte`
View benchmark-datetime_test.go
// Go MySQL Driver - A MySQL-Driver for Go's database/sql package
//
// Copyright 2013 The Go-MySQL-Driver Authors. All rights reserved.
//
// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this file,
// You can obtain one at http://mozilla.org/MPL/2.0/.
package mysql
@arnehormann
arnehormann / TestHelper.java
Last active Dec 29, 2015
some reflection magic to help writing table based tests
View TestHelper.java
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.Arrays;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
public final class TestHelper {
public static void test(Object[][] tests, Object target, String methodName, Class<?>...argsTypes) throws Exception {
@arnehormann
arnehormann / errcheck.go
Created Nov 15, 2013
reduce noise in example programs
View errcheck.go
type closer interface {
Close() error
}
type errorMessage string
func (err errorMessage) Error() string {
return string(err)
}