Skip to content

Instantly share code, notes, and snippets.

View SegFaultAX's full-sized avatar

Michael-Keith Bernard SegFaultAX

View GitHub Profile
@SegFaultAX
SegFaultAX / gist:5344166cd5e937544270
Last active August 29, 2015 14:24
Comparing and benchmarking Levenshtein distance implementations
#!/usr/bin/env python
import copy
import random
import functools
def memoize(fn):
memo = {}
@functools.wraps(fn)
def _wrapper(*args):
@SegFaultAX
SegFaultAX / find_collisions.py
Last active August 29, 2015 14:24
Elasticsearch mapping analyzer
#!/usr/bin/env python
import os
import json
import sqlite3
import argparse
from collections import namedtuple, OrderedDict
from operator import attrgetter
from StringIO import StringIO
>>> def example():
... return 1, 2, 3
...
>>> example()
(1, 2, 3)
>>> a, b, c = example()
>>> a
1
>>> b
2
@SegFaultAX
SegFaultAX / gist:4906429beff41460e6de
Created March 20, 2015 02:46
IPAddr prefix length hack
class OTIPAddr < IPAddr
attr_reader :mask_addr
def prefix_len
@mask_addr.to_s(2).count "1"
end
end
import argparse
def main():
parser = argparse.ArgumentParser("Do a thing with stuff!")
parser.add_argument("number", type=int)
args = parser.parse_args()
print "nan" * args.number + " batman!"
@SegFaultAX
SegFaultAX / gist:cc6caa30136f213b5e12
Created March 13, 2015 20:39
Elasticsearch Curator - Index Filtering Proposal #1
import re
import operator
import curator
import elasticsearch
class IndexFilter(object):
def __init__(self,
time_format="%Y.%m.%d",
@SegFaultAX
SegFaultAX / gist:520fe589dfe22ec10ae8
Created March 7, 2015 09:14
Internal Iterators in Python
class Enumerable(object):
def map(self, fn):
acc = []
self.each(lambda xs: acc.append(fn(xs)))
return self.__class__(acc)
collect = map
def filter(self, pred):
acc = []
@SegFaultAX
SegFaultAX / gist:d51da36f7eb65f58db7d
Last active August 22, 2021 02:40
Eager, re-entrant elapsed time logger
from __future__ import print_function
import time
import functools
import contextlib
LOG_FMT = "{name}: {cp} @{total:0.4f}s ({dur:0.4f}s since {prev})"
def coroutine(f):
@functools.wraps(f)
def coro(*args, **kwargs):
@SegFaultAX
SegFaultAX / gist:f48fe6930d18b52118ab
Last active August 29, 2015 14:05
Reducers in Python [incomplete]
import copy
class ReducedException(Exception):
def __init__(self, reduced_value):
super(ReducedException, self).__init__()
self.reduced_value = reduced_value
def conj(coll, *es):
"""Conjoin elements to coll. Works correctly for most collection types"""
@SegFaultAX
SegFaultAX / gist:7916de1d008e94814257
Last active August 22, 2021 02:40
Elapsed time context manager with checkpoints
from __future__ import print_function
import time
import contextlib
def format_checkpoints(cps):
pairs = [cps[i:i+2] for i in range(len(cps)-1)]
fmts = ["{0[0]} to {1[0]} in {2:.04f}s".format(start, end, end[1] - start[1])
for start, end in pairs]
return ", ".join(fmts)