Skip to content

Instantly share code, notes, and snippets.

View dankrause's full-sized avatar

Dan Krause dankrause

View GitHub Profile
@dankrause
dankrause / event.py
Last active August 29, 2015 13:57
Toy pub/sub implementation in python
from functools import partial
from fnmatch import fnmatchcase
from collections import defaultdict
class Event(dict):
handlers = defaultdict(list)
@classmethod
def subscribe(cls, *args):
if not callable(args[-1]):
@dankrause
dankrause / jobclient.py
Last active August 29, 2015 14:00
An example jobboard client for taskflow
#!/usr/bin/env python
"""jobclient.py
Usage:
jobclient.py [options] <jobboard_name> create <name> <details>
jobclient.py [options] <jobboard_name> list
jobclient.py [options] <jobboard_name> delete <uuid>
jobclient.py [options] <jobboard_name> clear
Options:
@dankrause
dankrause / fsm.py
Last active August 29, 2015 14:05
Toy finite state machine implementation in Python
import itertools
class FSMException(Exception):
pass
class DuplicateRule(FSMException):
pass
class InvalidStateTransition(FSMException):
@dankrause
dankrause / tgtadm.py
Created January 25, 2013 13:14
A drop in replacement for tgtadm. This was written to help troubleshoot some issues with an older version of tgt on CentOS (back when tgtd used the abstract socket namespace for its IPC socket).
#!/usr/bin/python
import socket
import struct
def enum(*args, **kwargs):
kwargs["__getitem__"] = lambda self, key: args[key]
return type('Enum', (object,), dict(zip(args, values), **kwargs))()
class IPCClient(object):
@dankrause
dankrause / roku.py
Created July 15, 2013 14:19
Tiny Roku remote library. Requires requests and ssdp.py from here: https://gist.github.com/dankrause/6000248
import ssdp
import requests
from xml.etree import ElementTree
class RokuApp(object):
def __init__(self, app_id, name, version, remote=None):
self.id = app_id
self.name = name
self.version = version
self._remote = remote
@dankrause
dankrause / supercmd.py
Last active January 3, 2016 11:49
Run commands with sets of preconfigured environment variables. Mimics supernova (https://github.com/major/supernova) but not tied to Nova (or Openstack) in any way.
#!/usr/bin/env python
"""supercmd
Usage:
supercmd [-c <file>] list
supercmd [-c <file>] show <environment> [<command>]
supercmd [-c <file>] keyring [set|get] <environment> <parameter>
supercmd [-c <file>] <environment> <command> [<args>...]
supercmd -h | --help
@dankrause
dankrause / smilebasic.lang
Last active December 13, 2017 14:31
GTKSourceView syntax highlighting for SmileBASIC
<?xml version="1.0" encoding="UTF-8"?>
<!-- Place this file in /usr/share/gtksourceview-3.0/language-specs/ -->
<language id="smilebasic" _name="SmileBASIC" version="2.0" _section="Sources">
<metadata>
<property name="mimetypes">text/x-smilebasic</property>
<property name="globs">*.sbas</property>
<property name="line-comment-start">'</property>
</metadata>
### Keybase proof
I hereby claim:
* I am dankrause on github.
* I am dankrause (https://keybase.io/dankrause) on keybase.
* I have a public key ASBmYrX3pc6j-rDw3Yfm1F_mBjHX0SLjDc1izIvsgICs7wo
To claim this, I am signing this object:
@dankrause
dankrause / pngmeta.py
Created December 21, 2012 18:34
A command-line tool that manipulates png meta-data in a very Unix-like way. Requires the Python Imaging Library (PIL).
#!/usr/bin/env python
import json, optparse, sys
try:
import PIL.Image, PIL.PngImagePlugin
except:
print >> sys.stderr, "Unable to import Python Imaging Library. Please ensure that it is installed."
sys.exit(1)
import builtins
import collections
import contextlib
import copy
import dis
import json
import socket
import struct
import types