Skip to content

Instantly share code, notes, and snippets.

View kaidokert's full-sized avatar

Kaido Kert kaidokert

View GitHub Profile
@kaidokert
kaidokert / django-min.py
Created May 3, 2015 19:20
Minimal django to serve a html page
import sys
from django.conf.urls import url
from django.core.wsgi import get_wsgi_application
from django.http import HttpResponse
from django.conf import settings
settings.configure(
DEBUG='on',
ROOT_URLCONF=__name__,
)
@kaidokert
kaidokert / cloud.providers
Created May 8, 2015 19:07
Minimal salt cloud.providers file to configure ec2 access
my-ec2-config:
id: GKTADJGHEIQSXMKKRBJ08H
key: askdjghsdfjkghWupUjasdflkdfklgjsdfjajkghs
keyname: default
private_key: /root/default.pem
provider: ec2
# full file here : http://docs.saltstack.com/en/latest/ref/clouds/all/salt.cloud.clouds.ec2.html
# if any of the vars is missing, you'll get
# [WARNING ] The cloud driver, 'ec2', configured under the 'my-ec2-config' cloud provider alias was not loaded since 'ec2.get_configured_provider()' could not be found. Removing it from the available providers list
@kaidokert
kaidokert / pint_args_decorator.py
Last active August 29, 2015 14:24
Force pint args to be of particular dimensionality
import pint
import functools
import itertools
ureg = pint.UnitRegistry()
def require_args(*args):
units = args
@kaidokert
kaidokert / configs.py
Last active August 29, 2015 14:25
Everyones favorite config formats
# pip install pytoml pyaml
import pytoml
import yaml
import json
# no ConfigParser here
testdict={'copterz': 'lol',
'nest': {'this': 'that'},
'nestnest': {'hive': { 'bees' : 3, 'ants' : -1} , 'house' : 'frogs' },
'mah' : ['dogs','catz'],
@kaidokert
kaidokert / pippi.py
Last active August 29, 2015 14:26
Use pip to find all available and matching versions of a package
import logging
import pip
log = logging.getLogger(__name__)
def check_package(package):
requirement = pip.req.InstallRequirement.from_line(package)
@kaidokert
kaidokert / wall_of_fame.py
Created August 2, 2015 16:45
Simple page scraping with html5lib
import html5lib
import requests
def get_packages():
page = 'https://python3wos.appspot.com/'
doc = html5lib.parse(requests.get(page).content,
namespaceHTMLElements=False)
table = doc.find('body/div/div/table/tbody')
if not table:
{%- set fqdn = grains['id'] %}
{%- set internal_ip = grains['ip4_interfaces']['eth0'][0] %}
hostname-match:
file.managed:
- name: /etc/hostname
- contents: {{ fqdn }}
primary_ip_in_host_file:
host.present:
@kaidokert
kaidokert / osx-for-hackers.sh
Created December 31, 2015 19:41 — forked from matthewmueller/osx-for-hackers.sh
OSX for Hackers (Mavericks/Yosemite)
# OSX for Hackers (Mavericks/Yosemite)
#
# Source: https://gist.github.com/brandonb927/3195465
#!/bin/sh
# Some things taken from here
# https://github.com/mathiasbynens/dotfiles/blob/master/.osx
# Ask for the administrator password upfront
@kaidokert
kaidokert / librato_alerts_to_yaml.py
Created January 6, 2016 02:30
Dump all defined alerts in Librato to a cleaned and ordered Yaml file, to use in Salt
import argparse
import collections
import yaml
import librato
# ht to http://stackoverflow.com/a/16782282/295231
# http://stackoverflow.com/a/20720773/295231
class UnsortableList(list):
def sort(self, *args, **kwargs):
@kaidokert
kaidokert / varmacros.h
Created January 8, 2016 01:11
Portable variadic macros
// excellent solution from here : http://stackoverflow.com/a/24028231/295231
//macro glue to make it work on msvc/gcc
#define GLUE(x, y) x y
#define RETURN_ARG_COUNT(_1_, _2_, _3_, _4_, _5_, count, ...) count
#define EXPAND_ARGS(args) RETURN_ARG_COUNT args
#define COUNT_ARGS_MAX5(...) EXPAND_ARGS((__VA_ARGS__, 5, 4, 3, 2, 1, 0))