Skip to content

Instantly share code, notes, and snippets.

Avatar
📎
"It looks like you're writing a distributed web app!"

Brendan Smithyman bsmithyman

📎
"It looks like you're writing a distributed web app!"
View GitHub Profile
@bsmithyman
bsmithyman / KaiserWindowedSinc.py
Last active Aug 29, 2015
Implementation of Kaiser windowed sinc functions after Graham Hicks's 2002 Geophysics paper
View KaiserWindowedSinc.py
HC_KAISER = {
1: 1.24,
2: 2.94,
3: 4.53,
4: 6.31,
5: 7.91,
6: 9.42,
7: 10.95,
8: 12.53,
9: 14.09,
@bsmithyman
bsmithyman / cdSame.py
Created Jan 29, 2015
Change all IPython parallel workers to a common directory under $HOME
View cdSame.py
def cdSame(profile=None):
import os
from IPython.parallel import Client
if profile:
rc = Client(profile=profile)
else:
rc = Client()
dview = rc[:]
@bsmithyman
bsmithyman / reducer.py
Last active Aug 29, 2015
Common reducer object. This is a subclass of dict that may be particularly useful when accumulating results on remote workers in a parallel execution context, then doing reduce operations on these results.
View reducer.py
class CommonReducer(dict):
'''
Object based on 'dict' that implements the binary addition (obj1 + obj1) and
accumulation (obj += obj2). These operations pass through to the entries in
the commonReducer.
Instances of commonReducer are also callable, with the syntax:
cr(key, value)
this is equivalent to cr += {key: value}.
'''
@bsmithyman
bsmithyman / matchdelete.py
Created Dec 5, 2014
Remove conflicted Dropbox files from a directory
View matchdelete.py
import os
def findMatches(source, substr):
matches = []
for root, dirnames, filenames in os.walk(source):
for filename in filenames:
if filename.find(substr) > -1:
matches.append(os.path.join(root, filename))
return matches
@bsmithyman
bsmithyman / cylon.py
Last active Aug 29, 2015
Python infinite iterator for use with map(...)
View cylon.py
cylon = lambda plan: iter(lambda: plan, None)
if __name__ == '__main__'
for i, skinjob in enumerate(cylon(6)):
print('%d:\t%d'%(i+1, skinjob))
if i >= 11:
break
View dropbox
#!/bin/sh
# /etc/init.d/SpiderOak
### BEGIN INIT INFO
# Provides: SpiderOsk
# Required-Start: $network $syslog $remote_fs
# Required-Stop: $network $syslog $remote_fs
# Should-Start: $named $time
# Should-Stop: $named $time
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
@bsmithyman
bsmithyman / down.sh
Created Oct 5, 2014
OpenVPN down script to remove custom entry in table
View down.sh
#!/bin/bash
TUNNEL="tun0"
TABLE="tablename"
ROUTE=$(ip route list table $TABLE)
ip route del $ROUTE table $TABLE
@bsmithyman
bsmithyman / up.sh
Created Oct 5, 2014
OpenVPN up script to add route to custom table
View up.sh
#!/bin/bash
TUNNEL="tun0"
TABLE="tablename"
OUTADDR=$(ip addr | grep $TUNNEL | sed -nr 's/.*peer ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*/\1/p')
ip route add default via $OUTADDR dev $TUNNEL table $TABLE
@bsmithyman
bsmithyman / dictate.sh
Last active Aug 29, 2015
Dictate a routing table for a hostname on the network
View dictate.sh
#!/bin/bash
HOST=$1
TABLE=$2
IP=$(getent hosts $HOST | cut -d \ -f 1)
CURRENT=$(ip rule | grep $IP | cut -d \ -f 4)
PRIORITY=1000
if [ $CURRENT ]; then
echo Resetting rule for $HOST with IP $IP
@bsmithyman
bsmithyman / uniquerefs.sh
Created Jul 30, 2013
Takes a LaTeX *.aux file as its first argument. Outputs a sorted, unique list of all citekeys from the original document. Useful for e.g., copying formatted bibliographic entries to a new document manually. Written when I was taking Chapter 5 of my PhD thesis and turning it into a paper.
View uniquerefs.sh
#!/bin/sh
< $1 grep \\citation | cut -c 10- | sed -e "s/[{},]/\n/g" | sed -e "/^$/d" | sort -u