Skip to content

Instantly share code, notes, and snippets.

View joedougherty's full-sized avatar

Joe Dougherty joedougherty

View GitHub Profile
@joedougherty
joedougherty / for_parsimonious.py
Last active July 11, 2018 04:00
Parse sentential logic w/Parsimonious
# -*- coding: utf-8 -*-
from parsimonious.grammar import Grammar
try:
from string import lowercase
except:
from string import ascii_lowercase as lowercase
def vars_expr():
""" Generator-based versions of tokenize and read_from_tokens from Norving's "How to write a Lisp Interpreter in Python" """
from itertools import takewhile
def tokenize(chars):
''' Convert a string expression into a generator of tokens. '''
return (t for t in chars.replace('(', ' ( ').replace(')', ' ) ').split())
def read_from_tokens_gen(tokens, current_token=None):
import logging
def create_logger(self):
# See https://wingware.com/psupport/python-manual/2.3/lib/node304.html
logger = logging.getLogger(self.name)
hdlr = logging.FileHandler(self.logfile)
formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.DEBUG)
@joedougherty
joedougherty / autodetect.py
Last active November 7, 2016 15:55
autodetect.py
#!/usr/bin/env python
import serial
import serial.tools.list_ports as list_ports
def autodetect():
disconnected = True
while disconnected:
ports = list(list_ports.comports())
# Identify correct port ... somehow
@joedougherty
joedougherty / model_rides.py
Last active August 25, 2016 15:06
How do different river sprints affect overall avg mph?
def avg_speed(distance_in_miles, time_in_minutes):
time_in_hrs = time_in_minutes/60.0
return float(distance_in_miles)/float(time_in_hrs)
def river_sprint(avg_mph, river_distance=4.5):
"""
Return the time it would take (in minutes) to
sprint the river at speed given by avg_mph.
"""
return (float(river_distance)/float(avg_mph))*60
@joedougherty
joedougherty / walkjson.py
Last active May 12, 2016 15:00
walkjson
import json
def walkjson(json):
tree = []
if isinstance(json, dict):
for key in json.keys():
value = json[key]
tree.append(key)
tree.append(walkjson(value))
@joedougherty
joedougherty / supervisord_vs_monit.txt
Last active October 31, 2017 16:06
supervisord_vs_monit
supervisord [supervisord.org]
=============================
* Set up jobs via a config file (.ini style)
Example:
--------
[program:forever]
command=/usr/bin/python /root/supervisoreval/bin/forever.py &
numprocs=1
class Adapter:
def __init__(self, object, **adapted_method):
self.object = object
self.__dict__.update(adapted_method)
def __getattr__(self, attr):
return getattr(self.object, attr)
@joedougherty
joedougherty / config_client_updated_with_items.log
Created September 26, 2015 18:21
create-vpn-log-2015-09-26_14:19:26
PLAY [create vpn server] ******************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [create-droplet | ensure dopy is installed (for digitalocean API)] ******
ok: [localhost]
TASK: [create-droplet | create digitalocean droplet] **************************
ok: [localhost]
@joedougherty
joedougherty / vpn_autoconfigure_true.log
Created September 26, 2015 17:51
create-vpn-log-2015-09-26_13:50:59
PLAY [create vpn server] ******************************************************
GATHERING FACTS ***************************************************************
ok: [localhost]
TASK: [create-droplet | ensure dopy is installed (for digitalocean API)] ******
ok: [localhost]
TASK: [create-droplet | create digitalocean droplet] **************************
ok: [localhost]