Skip to content

Instantly share code, notes, and snippets.

View hamishcampbell's full-sized avatar
🚀
rockets

Hamish Campbell hamishcampbell

🚀
rockets
View GitHub Profile
@hamishcampbell
hamishcampbell / gist:837545
Created February 21, 2011 19:18
Example statement to determine linear chainage from line segment (PostgreSQL + PostGIS)
/**
* @lon = longitude of selected point
* @lat = latitude of selected point
*/
SELECT
name,
CAST(
offset +
ST_Length(the_geom) * ST_Line_Locate_Point(the_geom, ST_Point(@lon, @lat))
) AS Double)
@hamishcampbell
hamishcampbell / SilverStripeBuildUpdater.sh
Created March 6, 2011 22:11
Simple Bash script to automate updating of SilverStripe build submodules.
branches=( master 2.4 )
modules=( sapphire cms themes )
for branch in "${branches[@]}"
do
echo "================"
echo "Updating $branch"
echo "----------------"
echo " * pull"
git pull 1> /dev/null
@hamishcampbell
hamishcampbell / gist:872020
Created March 16, 2011 04:34
Example of a regex expression that crashes Apache on Windows
<?php
$rx = <<<'RX'
/
(
(\\.) | # Any escaped character
([^<${]) | # Any character that isn't <, $ or {
(<[^%]) | # < if not followed by %
($[^A-Za-z_]) | # $ if not followed by A-Z, a-z or _
({[^$]) | # { if not followed by $
({$[^A-Za-z_]) # {$ if not followed A-Z, a-z or _
@hamishcampbell
hamishcampbell / gist:873351
Created March 16, 2011 21:27
ParserRegexp state before Apache (windows) crash
object(ParserRegexp)[30]
public 'parser' =>
object(SSTemplateParser)[29]
protected 'includeDebuggingComments' => boolean false
protected 'match_Template_typestack' =>
array
0 => string 'Template' (length=8)
protected 'match_Word_typestack' =>
array
0 => string 'Word' (length=4)
@hamishcampbell
hamishcampbell / gist:912757
Created April 10, 2011 21:45
Quick PHP timezone juggling example.
<?php
$timezoneAuckland = new DateTimeZone('Pacific/Auckland');
$timezoneHelsinki = new DateTimeZone('Europe/Helsinki');
$currentTime = new DateTime('now', $timezoneAuckland);
$helsinkiTime = new DateTime('now', $timezoneHelsinki);
printf(
"It is currently %s <br>",
$currentTime->format(DateTime::RSS)
);
@hamishcampbell
hamishcampbell / polyomino.py
Created June 28, 2012 21:55
Polyomino Solver
# -*- coding: utf-8 -*-
#!/usr/bin/env python
"""Finds n-order Polyominos
https://en.wikipedia.org/wiki/Polyomino
Hamish Campbell <hn.campbell@gmail.com>
http://polemic.net.nz
License: CC-BY 2012, use it for good, not for evil.
"""
@hamishcampbell
hamishcampbell / gist:4133562
Created November 23, 2012 01:20
Dojo 1.8 / AMD Style Gmaps Loader
/**
* Dojo AMD Google Maps Loader Plugin
*/
define([
"dojo/_base/kernel",
"dojo/topic"
], function(kernel, topic) {
var w = kernel.global;
w._googleApiLoadCallback = function() {
@hamishcampbell
hamishcampbell / sha.js
Last active December 18, 2015 13:59 — forked from wombleton/sha.js
console.log(require('crypto').createHash('sha1').update('blob 14\0Hello, World!').digest('hex'));
$> d4fcfe4d339d4e59d168fdf3c0ad445fa980a7d6
@hamishcampbell
hamishcampbell / polyomino.py
Created September 6, 2013 23:26
Polyomino Reference Source - PyCon 2013
# -*- coding: utf-8 -*-
#!/usr/bin/env python
import sys
class Polyomino(object):
def __init__(self, iterable):
self.squares = tuple(sorted(iterable))
def __repr__(self):
@hamishcampbell
hamishcampbell / polyomino-obfus.py
Created September 7, 2013 01:35
Highly readable Polyomino solution
import sys, itertools
class Polyomino(tuple):
def __hash__(_):return(getattr(_,'',''))or[setattr(_,'',setattr(_,'_',map(min,zip(
*(setattr(_,'p',_.__class__((c[1],m-c[0]-1)for(c)in(_.p))if'p'in(_.__dict__)else(_))
or(getattr(_,'p'))))))or(min(getattr(_,'',hash(tuple(sorted(setattr(_,'p',_.__class__(
[(x-_._[0],y-_._[1])for(x,y)in(_.p)])if(_._[0]or(_._[1]))else(_.p))or(_.p))))),
hash(tuple(sorted(_.p))))))for(m)in(itertools.repeat(max(max(_,key=max)),4))]and(getattr(_,''))
def __eq__(*_):return(1&len(set(map(hash,_))))
def __call__(_,__):return[_.__class__(((__,__),))]if(not(1%__))else(set(itertools.chain(*[set([_.__class__
(_+tuple([a]))for(a)in(set((c[0]+x,c[1]+y)for(c,(x,y))in(itertools.product(