Skip to content

Instantly share code, notes, and snippets.

View danwakefield's full-sized avatar
🤠
Probably breaking something.

Daniel Wakefield danwakefield

🤠
Probably breaking something.
View GitHub Profile
-- The args being numeric cause auto casting; This is what we want
-- e.g `COUNT(*)` returns a whole number but we often want to divide it to float
-- Postgres percent function
CREATE OR REPLACE FUNCTION percent(portion numeric, total numeric, round_level integer default 1)
RETURNS numeric
IMMUTABLE
RETURNS NULL ON NULL INPUT
PARALLEL SAFE
as $fbd$
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@danwakefield
danwakefield / uk-postcode-district-centroid.json
Last active February 6, 2024 16:43
UK Postcode District GeoJSON, Centroid points
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
@danwakefield
danwakefield / pre-commit
Created January 6, 2022 14:23
Rubocop pre-commit
#!/bin/bash
# move to `.git/hooks/pre-commit`; run `chmod +x .git/hooks/pre-commit`
set -e
files=$(git diff --staged --name-only --diff-filter=ACMRTUXB | grep '\.rb$' | tr '\\\n' ' ')
# Check we have files before trying to run the tests.
# Prevents getting stuck if we only update non .rb files.
if [[ -n $files ]];then
git diff --staged --name-only --diff-filter=ACMRTUXB | grep '\.rb$' | tr '\\\n' ' ' | xargs --no-run-if-empty bundle exec rubocop -A --config "$(git rev-parse --show-toplevel)/.rubocop.yml"
\set QUIET 1
\pset null '¤'
\set PROMPT1 '[%/] > '
\set PROMPT2 '%R > '
\timing
\x auto
\set VERBOSITY verbose
1 2 diff wanted result
A A A
B < B
C C C
D > D
@danwakefield
danwakefield / ed25519-cert.pub
Last active March 26, 2017 20:14
ed25519.pub
ssh-ed25519-cert-v01@openssh.com AAAAIHNzaC1lZDI1NTE5LWNlcnQtdjAxQG9wZW5zc2guY29tAAAAILfZFL+Sc2QwVYljr+679F2u7l3dCt1W+yHpwKtfk31XAAAAIMWYZwqrMlekLqZnjCq5HA4OPuvRKMtBE7AAuB54McXBAAAAAAAAAAAAAAABAAAAIVNpZ25lZCBrZXkgZm9yIEdDIC0gRXhwOiBNYXIgMjAxOAAAAAgAAAAEYWRteAAAAABY1s8gAAAAAFqXQoAAAAAAAAAAggAAABVwZXJtaXQtWDExLWZvcndhcmRpbmcAAAAAAAAAF3Blcm1pdC1hZ2VudC1mb3J3YXJkaW5nAAAAAAAAABZwZXJtaXQtcG9ydC1mb3J3YXJkaW5nAAAAAAAAAApwZXJtaXQtcHR5AAAAAAAAAA5wZXJtaXQtdXNlci1yYwAAAAAAAAAAAAABFwAAAAdzc2gtcnNhAAAAAwEAAQAAAQEAtUbVYENqorKEn5Q78AqqLR90+T5zIA+NVz7jxuAO8/7eipFfK5UPzZMyObTGl1h/uas0TNcWQcn7vLkggYwMN2ssdjIvW0qMmoLkZq8Tu7lfEVQxxqM+YR93LWJJcIk0lOIdr3QvCD+1dZFQCqiu38RyDmaO09f5iVFUxXhnEx2zt0z/jQh3Xy7aEz9XEmvK6sfLhYkp6ViIvWWVLPJZgYKuoeDiNhHLrFiGqK9g+/Xx2HfCaqcvORcIUs0lYMauP4jOKaL4eEmKSAyAuZp0uSkfMKF2WG/X+IE8elCiBK59PKau34N8qvuhd2UBFpHzlVoIzA2+/UrGn/KXuHahiwAAAQ8AAAAHc3NoLXJzYQAAAQA1p3Jle8BkkFh/ruKL5ua19l8jf9ZTzb3+Re3+0gqfa7Rfxr8ADRdMI971BvmbeTROYprnxzOd32AepWjkvZtTP1KusePp+NKFpWkKkQeMx9eg7Cot0auU6vy5UVHQPGpqaPaCqpXfMz5whv6XP5Xxhzo
@danwakefield
danwakefield / fnmatch.go
Created March 27, 2016 20:53 — forked from lilyball/fnmatch.go
fnmatch implementation for Go
// Provide string-matching based on fnmatch.3
package fnmatch
// There are a few issues that I believe to be bugs, but this implementation is
// based as closely as possible on BSD fnmatch. These bugs are present in the
// source of BSD fnmatch, and so are replicated here. The issues are as follows:
//
// * FNM_PERIOD is no longer observed after the first * in a pattern
// This only applies to matches done with FNM_PATHNAME as well
// * FNM_PERIOD doesn't apply to ranges. According to the documentation,
Verifying that +danielwakefield is my blockchain ID. https://onename.com/danielwakefield
@danwakefield
danwakefield / main.js
Last active December 23, 2015 13:34
Prevent backspace page redirect with vanilla javascript
function preventBackspace() {
function matchesSelector_(el, selector) {
return (el.matches || el.msMatchesSelector).call(el, selector);
}
function prevent(e) {
if (e.which === 8) { // Backspace
if (!matchesSelector_(e.target, 'input:not([readonly]):not([type=radio]):not([type=checkbox]), textarea, [contentEditable], [contentEditable=true]')) {
e.preventDefault();
}
}