Skip to content

Instantly share code, notes, and snippets.

@shawnchin
shawnchin / blinky.py
Last active August 29, 2015 14:08
Quick REST Client Wrapper, and an example wrapper for the blink(1)control REST API
"""
Wrapper client for the blink(1)control REST API.
Example Usage:
import blinky
b = Blinky()
b.on() # Let there be (white) light
# Have the first LED fade to #336699 over 10 seconds
<html>
<head>
<meta http-equiv="refresh" content="60" />
<!--link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" -->
<!-- link href="picwall.css" rel="stylesheet" /-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/masonry/3.3.1/masonry.pkgd.min.js"></script>
<!--script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script-->
<!--script src="picwall.js"></script-->
import os
import inspect
import logging
import unittest
from glob import glob
def locate_suites(test_dirname="tests", test_file_prefix="test_"):
"""
Recursively search the test_dirname directory for *.py files that starts
with test_file_prefix and returns all test suites found within them.
import sys, math
p,t,w=map(int,sys.argv[1:]) # read input
grid = [[' ']*(w+1) for i in range(0,w+1)] # prepare grid
def plot(x,y):
"""plots point on grid"""
grid[int(round(x))][int(round(y))]='x'
def line (x0, y0, x1, y1):
"""draw line using bresenham's line algorithm"""
// return data-* attributes of a node as a dict
function getDataAttributes(node) {
var vstr = $().jquery.split(".");
var v0 = parseInt(vstr[0]) || 0,
v1 = parseInt(vstr[1]) || 0,
v2 = parseInt(vstr[2]) || 0;
// jQuery >= 1.4.4 has built in op to do this.
if ( v0 > 1 || (v0 == 1 && v1 > 4) || (v0 == 1 && v1 == 4 && v2 >= 4)) {
@shawnchin
shawnchin / prefixmatch.py
Created December 10, 2010 16:23
a trie-based prefix matching utility
#!/usr/bin/env python
# Description: a trie-based prefix matching utility
# Author: Shawn Chin (http://shawnchin.github.com)
#
# Usage:
# keys = ["BANANA", "APPLE", "DURIAN", "MANGO"]
# m = PrefixMatch(keys)
# m.add_key("ORANGE") # extend list of keys
# m.match("BANANA") # returns True (matches key)
# m.match("ORANGEBOY") # returns True (starts with key)
@shawnchin
shawnchin / ls-svn.py
Created January 12, 2011 12:24
(P.O.C) script to colorise ls output based on svn status
#!/usr/bin/env python
"""
Author: Shawn Chin (http://shawnchin.github.com)
Description: colorise output of `ls` based on svn status
Note:
This is a proof-of-concept implementation and only performs
a basic `ls` call in the current working directory.
"""
@shawnchin
shawnchin / mydatetime.py
Created January 27, 2011 17:39
custom time delta that attempts returns deltas in terms of years, months, days
#!/usr/bin/env python
from datetime import timedelta
def time_delta(d1,d2):
"""
Returns time delta as the following tuple:
("before|after|same", "years", "months", "days")
"""
if d1 == d2:
return ("same",0,0,0)
/* scroll page so obj is visible in current view with
* a _minimum_ bottom margin of "bottom_margin" (default:20).
* -- requires jQuery --
*/
function scroll_to(obj, bottom_margin, speed) {
bottom_margin = bottom_margin || 20;
var target_height = obj.height() + bottom_margin;
var visible_height = $(window).height();
var scroll_top = obj.offset().top;
if (target_height < visible_height) {
#!/usr/bin/env python
import itertools
from dateutil import parser
jumpwords = set(parser.parserinfo.JUMP)
keywords = set(kw.lower() for kw in itertools.chain(
parser.parserinfo.UTCZONE,
parser.parserinfo.PERTAIN,
(x for s in parser.parserinfo.WEEKDAYS for x in s),
(x for s in parser.parserinfo.MONTHS for x in s),