Skip to content

Instantly share code, notes, and snippets.

View SegFaultAX's full-sized avatar

Michael-Keith Bernard SegFaultAX

View GitHub Profile
@SegFaultAX
SegFaultAX / nginx_logs.py
Created January 23, 2017 23:24
Parse nginx logs to sqlite3
#!/usr/bin/env python
# The MIT License (MIT)
# Copyright (c) 2016 Michael-Keith Bernard
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
@SegFaultAX
SegFaultAX / traverse.py
Created February 3, 2017 21:34
Traverse a Python dict and find all key paths
def iter_paths(d):
def iter1(d, path):
paths = []
for k, v in d.items():
if isinstance(v, dict):
paths += iter1(v, path + [k])
paths.append((path + [k], v))
return paths
return iter1(d, [])
@SegFaultAX
SegFaultAX / agg.py
Created February 15, 2017 04:35
Demonstration of timeseries data, windowing, and aggregation [python]
import datetime
import random
import itertools
import pprint
TIME_FORMAT = "%Y-%m-%dT%H:%M:%S"
NUM_USERS = 1e6
BROWSERS = ["Chrome", "Firefox", "IE"]
def logstream(start_time, end_time, max_step=10000):
@SegFaultAX
SegFaultAX / transitive.py
Created March 10, 2017 22:12
Simple Dependency graph / Transitive closure [python]
def dependencies(partials):
shallow_dep_list = { m.name: m.inherits for m in partials }
def transitive1(otl):
deps = []
rest = list(shallow_dep_list[otl])
while rest:
e = rest.pop()
deps.append(e)
rest += [d for d in shallow_dep_list[e] if d not in deps]
return deps
@SegFaultAX
SegFaultAX / points.py
Created April 18, 2017 16:09
Simulate flakey and flapping counters in Graphite to differentiate "max" and "last" aggregations [python]
#!/usr/bin/env python
import pprint
import csv
import random
import functools
import itertools
def coroutine(f):
@functools.wraps(f)
@SegFaultAX
SegFaultAX / diskstats.rb
Last active May 11, 2017 16:04
Parse diskstats (/proc/diskstats) [Ruby]
EXAMPLE = <<-EOE
1 0 ram0 0 0 0 0 0 0 0 0 0 0 0
1 1 ram1 0 0 0 0 0 0 0 0 0 0 0
1 2 ram2 0 0 0 0 0 0 0 0 0 0 0
1 3 ram3 0 0 0 0 0 0 0 0 0 0 0
1 4 ram4 0 0 0 0 0 0 0 0 0 0 0
1 5 ram5 0 0 0 0 0 0 0 0 0 0 0
1 6 ram6 0 0 0 0 0 0 0 0 0 0 0
1 7 ram7 0 0 0 0 0 0 0 0 0 0 0
1 8 ram8 0 0 0 0 0 0 0 0 0 0 0
@SegFaultAX
SegFaultAX / Safely.java
Last active July 28, 2017 16:45
Safely convert a function `T -> R throws E` to `T -> Optional<R>` [Java]
class Example {
<T, R, E extends Exception> Function<T, Optional<R>> safely(Function<T, R> fun, Class<E> exc) {
return v -> {
try {
return Optional.ofNullable(fun.apply(v));
} catch (Exception e) {
if (exc.isInstance(e)) {
return Optional.empty();
} else {
throw e;
@SegFaultAX
SegFaultAX / check-git-remote-version.rb
Last active December 19, 2017 01:36
Git Remote Version Check [Ruby] [Sensu]
#!/usr/bin/env ruby
#
# check-git-remote-version.rb
#
# DESCRIPTION:
# Ensure git repo is in-sync with remote
# This check verifies that the current version of a git repo reflects the
# latest version of a particular ref on a named remote repository.
#
# PLATFORMS:
@SegFaultAX
SegFaultAX / decorator.py
Created January 3, 2018 01:41
Decorator Example [Python]
def log_arguments(function_to_wrap):
def new_wrapped_function(*args, **kwargs):
name = function_to_wrap.func_name
print("Calling {} with args {} and kwargs {}".format(
name, args, kwargs))
return function_to_wrap(*args, **kwargs)
return new_wrapped_function
def add(a, b):
return a + b
@SegFaultAX
SegFaultAX / either.md
Last active January 12, 2018 01:56
data Either e a = Left e | Right a from Haskell in Python