Skip to content

Instantly share code, notes, and snippets.

@arnehormann
arnehormann / bootstrap-ansible.sh
Created October 24, 2013 16:23
ansible with virtualenv bootstrap script
#!/bin/bash
# exit on error, undeclared variables and pipe failures
set -e -u -o pipefail
# ansible is made for python 2.7+
# TODO: check version(s) and provide better errors if anything fails
# install virtualenv if it's not installed yet
which -s virtualenv || (sudo easy_install pip && sudo pip install virtualenv)
@arnehormann
arnehormann / must.go
Created September 23, 2013 10:58
usage example for reflect.MakeFunc: create panic-on-error wrappers which do not pass the error (in a comfortable but probably rather slow way)
import "reflect"
// assumption for fptr: func with error as last argument
func makeMust(fptr interface{}) {
must := func(in []reflect.Value) []reflect.Value {
if err := in[len(in)-1]; !err.IsNil() {
panic(err.Interface())
}
return in[:len(in)-1]
}
@arnehormann
arnehormann / set.go
Last active December 21, 2015 02:19
functional set variant in golang
package set
type Set interface {
Empty() bool
Size() int
Equal(t Set) bool
Subset(t Set) bool
Superset(t Set) bool
Union(t Set) Set
Intersection(t Set) Set
@arnehormann
arnehormann / shortcut-generator.hta
Created July 11, 2013 14:11
create a bunch of shortcuts to a program with the specified arguments (intended and great for putty with pageant)
<html style="padding: 0; margin: 0; width: 690; height: 480;"><head>
<hta:application id="oShortcutter" applicationname="Shortcutter" border="thin" caption="yes" contextmenu="no" scroll="no" showintaskbar="yes" singleinstance="yes" />
<title>Shortcut Generator</title>
<script language="VBScript">
'<![CDATA[
Option Explicit
On Error Resume Next
Sub SelectFolder
' For next value see http://msdn.microsoft.com/en-us/library/bb773205(VS.85).aspx
@arnehormann
arnehormann / index.html
Created June 14, 2013 08:08
*reflect.StructField
<!DOCTYPE html>
<html><head><title>Go: '*reflect.StructField'</title><style>
html { background-color: #fafafa; }
div[data-kind] {
box-sizing: border-box;
position: relative;
/* font */
font-family: "HelveticaNeue-Light", "Helvetica Neue Light", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
font-weight: 300;
@arnehormann
arnehormann / dirtysql.go
Last active December 18, 2015 10:09
Hit the dangerous wobbly ground running: Quick&dirty up to speed with go database/sql
type must struct {
db *sql.DB
stmt *sql.Stmt
rows *sql.Rows
err error
closers []io.Closer
}
func Open(dbdriver, dsn string) *must {
m := &must{}
@arnehormann
arnehormann / truthtable.js
Created March 14, 2013 15:29
Create a truth table enumerating all possible parameter combinations for a function taking booleans. Arguments: target function, number of boolean arguments, string for true, string for false.
function truthTable(fun, bits, t, f){
var vars = bits || 4
, max = 1 << vars
, tStr = t || ' T '
, fStr = f || ' F '
, i, j, str, arr, set, res;
for (i = 0; i < max; i++) {
str = '';
arr = [];
for (j = vars - 1; j >= 0; j--) {
@arnehormann
arnehormann / liveedit.html
Created March 11, 2013 11:22
CSS live editing test
<html><head><meta charset="utf-8"><title>CSS live editing test</title>
<!-- credit: http://www.campaul.net/blog/2013/01/29/stupid-browser-tricks-live-editing-styles/ -->
<style type="text/css" style="display: none;">
/* show css for a very tight feedback loop */
html { position: absolute; width: 100%; }
head, body { display: block; position: absolute; }
head { width: 40%; right: 0; background: #eee; }
body { width: 60%; left: 0; }
style { display: block; white-space: pre }
</style><style type="text/css" contenteditable="plaintext-only">/* Edit CSS */
@arnehormann
arnehormann / gauges.html
Last active December 14, 2015 11:49
A charting experiment
<html><head><meta charset="utf-8"><title>Donuts</title>
<!-- This is a modified version of the one found at http://www.larentis.eu/donuts/ -->
<style type="text/css">
.donut { font-size: 33px; }
.donut-big { font-size: 62px; }
.donut-small { font-size: 17px; }
.donut {
position: relative;
display: inline-block;
@arnehormann
arnehormann / placeholder-label.html
Created February 5, 2013 09:15
Use placeholder Attributes as Label.
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<style>
[placeholder] { position: relative; }
/* not functional - attr(...) is not part of the shadow-dom parent element :-/;
[placeholder]::-webkit-input-placeholder::before { position: absolute; display: block; content: attr(placeholder); bottom: -1.5em; left: 0; color: #000; }
*/
/* but this is functional - in webkit Browsers */