Skip to content

Instantly share code, notes, and snippets.

Watchers per repo, for each of my repos. Note: The GitHub API only lets me get the first few repos, so the list is incomplete.

Edit on Tributary.io

import sys
import os
try:
from setuptools import setup, find_packages
except ImportError:
from distutils.core import setup
from distutils.util import convert_path
def _find_packages(where='.', exclude=()):
@streeter
streeter / swizzle.m
Created July 27, 2013 00:58
Swizzle methods in Objective-C
#import <objc/runtime.h>
static void SwizzleClassMethod(Class klass, SEL original, SEL new)
{
Method origMethod = class_getClassMethod(klass, original);
Method newMethod = class_getClassMethod(klass, new);
if (class_addMethod(klass, original, method_getImplementation(newMethod), method_getTypeEncoding(newMethod))) {
class_replaceMethod(klass, new, method_getImplementation(origMethod), method_getTypeEncoding(origMethod));
@streeter
streeter / ECDesignatedInitializer.m
Created July 19, 2013 22:14
Bless and designate certain initializers as the proper initializer to use.
// Bless a certain initializer at compile time
//
// Sample usage:
// - (instancetype)initWithObject:(id)object
// - (instancetype)init ECDesignatedInitializer(initWithObject:);
//
#define ECDesignatedInitializer(__SEL__) __attribute__((unavailable("Invoke the designated initializer `" # __SEL__ "` instead.")))
from threading import local
_blah = local()
class StopThatShit(Exception):
pass
def patch():
from django.db.backends import util
from django import template
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import DataMigration
from django.db import models
class Migration(DataMigration):
def forwards(self, orm):
db.execute('UPDATE auth_user SET password=CONCAT("bcrypt", SUBSTR(password, 3)) WHERE password LIKE "bc$%%"')
@streeter
streeter / pyupgrades.py
Created March 3, 2013 04:50
List all upgrades for python packages available in the current environment.
#!/usr/bin/env python
import xmlrpclib
import pip
import argparse
from pkg_resources import parse_version
def version_number_compare(version1, version2):
return cmp(parse_version(version1), parse_version(version2))
@streeter
streeter / arbiter.py
Created February 20, 2013 02:25
Properly reexec gunicorn's Arbiter
def reexec(self):
"""\
Relaunch the master and workers.
"""
self.kill_workers(signal.SIGQUIT)
fds = [l.fileno() for l in self.LISTENERS]
os.environ['GUNICORN_FD'] = ",".join([str(fd) for fd in fds])
os.chdir(self.START_CTX['cwd'])
[streeter@mail]:~$ source /usr/local/bin/virtualenvwrapper.sh
Traceback (most recent call last):
File "/usr/lib/python2.6/logging/handlers.py", line 72, in emit
self.doRollover()
File "/usr/lib/python2.6/logging/handlers.py", line 129, in doRollover
os.rename(self.baseFilename, dfn)
OSError: [Errno 13] Permission denied
Traceback (most recent call last):
File "/usr/lib/python2.6/logging/handlers.py", line 71, in emit
if self.shouldRollover(record):
@streeter
streeter / slowqueryconvert.py
Created September 19, 2012 19:18
Convert RDS slow_query Table Log to text format
#!/usr/bin/env python
"""
Queries the slow_log database table maintained by Amazon RDS and outputs
it in the normal MySQL slow log text format for parsing by mk-query-
digest.
"""
import argparse
import _mysql