Skip to content

Instantly share code, notes, and snippets.

View dcollien's full-sized avatar

David Collien dcollien

View GitHub Profile
@dcollien
dcollien / workerRunner.py
Created August 18, 2014 09:17
Load text files and reverse their lines, running 4 processes at a time
import os
from multiprocessing import Pool
NUM_PROCESSES = 4
ALLOWED_EXTENSION = '.txt'
NEW_EXTENSION = '.reversed.txt'
OUTPUT_DIR = os.path.join(os.getcwd(), 'output')
def processFile(file):
# process a file, delegated over multiple processes
@dcollien
dcollien / arg_types.py
Last active August 29, 2015 14:07
Automatic Argument Conversion Decorator
import calendar
from datetime import datetime
import types
import json
from functools import wraps
def convert_arg(type_name, value):
converter = None
if not isinstance(type_name, basestring):
converter = type_name
@dcollien
dcollien / db.py
Created November 26, 2014 21:22
MongoAlchemy shortcut layer
from mongoalchemy.fields import DocumentField, StringField
from mongoalchemy.session import Session
from mongoalchemy.query import BadQueryException, BadResultException
from mongoalchemy.query_expression import QueryField
from mongoalchemy.document import DocumentMeta
from pymongo.errors import DuplicateKeyError
from pytz import utc
@dcollien
dcollien / lunch.coffee
Created February 12, 2015 05:19
UrbanSpoon What's for Lunch in Sydney CBD?
request = require 'request'
lastLunches = ''
module.exports = (callback) ->
request {
url: "http://www.urbanspoon.com/api/ispin?p=1&n=7003&r=#{lastLunches}&l=70&v=6f"
}, (err, msg, data) ->
fields = (data.split '\t')
restaurantID = fields[0]
@dcollien
dcollien / olpageapi.py
Last active August 29, 2015 14:25
ol auth
import requests, json, string, os
chars = string.ascii_lowercase
random_crap = ''.join(chars[ord(x) % len(chars)] for x in os.urandom(16))
# Auth
credentials = {'user': 'testapiuser', 'password': 'test1234'}
request_url = "https://www.openlearning.com/json/auth"
response = requests.post(request_url, data=credentials)
token = response.cookies["auth_token"].replace('"', '')
@dcollien
dcollien / server.py
Last active August 29, 2015 14:26
Tornado HMAC Authenticated POST
from tornado import web, ioloop, escape
import hmac, hashlib
SECRET = 'jGW7UPn8T1kpuNP1Op79YIL4Th4a5Cduebgta4riFE2zcAWAmhZToDmevmr4iLfO'
def constant_time_compare(val1, val2):
"""
Returns True if the two strings are equal, False otherwise.
The time taken is independent of the number of characters that match.
@dcollien
dcollien / fancy checkboxes and radio buttons
Last active December 20, 2015 21:19
fancy checkboxes and radio buttons in CSS falls back to ordinary checkboxes if type="checkbox" is not supported
<!DOCTYPE html>
<style>
/* begin fancy checkbox and radio button css */
/* hide input elements we don't want to render. N.B. if type="checkbox" is not supported, this will
fall back to a normal checkbox */
label.input-fancy input[type="checkbox"], label.input-fancy input[type="radio"] {
display:none;
@dcollien
dcollien / colors
Last active December 21, 2015 01:28
Color Swatch
.turquoise.background {
background-color: #1ABC9C;
}
.turquoise.text {
color: #1ABC9C;
}
.turquoise.border {
border-color: #1ABC9C;
}
@dcollien
dcollien / gist:7523295
Created November 18, 2013 06:04
Vectors are fun
<canvas></canvas>
<script>
var L, M, Vect, v;
M = {
TAU: Math.PI * 2,
vary: function(amt) {
return 2 * amt * (Math.random() - 0.5);
<!DOCTYPE html>
<head>
<script>
var start_indicator = 'START';
var lineNum = 0;
var render = function(newData) {
var content = '';
newData = newData.replace(/^\s+|\s+$/g, '');
if (newData === '') return '';
var lines = newData.split('\\n');