Skip to content

Instantly share code, notes, and snippets.

@thomseddon
thomseddon / install
Last active December 27, 2015 18:19
Install node.js on linux
#!/bin/bash
# Get the latest version no.
version=$(wget --quiet --output-document - \
http://nodejs.org/dist/latest/SHASUMS.txt |
head --lines 1 |
cut --fields 3 --delimiter " " |
cut --fields 2 --delimiter "-")
name=node-$version-linux-x64
@thomseddon
thomseddon / SoftDeleteBehavior.php
Last active December 26, 2015 12:39
CakePHP Soft Delete Behaviour
<?php
App::uses('ModelBehavior', 'Model');
class SoftDeleteBehavior extends ModelBehavior {
public function setup(Model $Model, $settings = array()) {
$field = isset($settings['field']) ? $settings['field'] : 'is_deleted';
$this->settings[$Model->alias]['field'] = $field;
}
@thomseddon
thomseddon / format.sh
Last active December 23, 2015 04:29
Reformat cakephp templates (generated with bake) to bootstrap style using sed
# Remove "actions" divs
find View/ -name "*.ctp" -exec sed -i ':a;N;$!ba;s/<div class="actions">\(.*\)<\/div>//g' '{}' \;
# Add "table" class to tables
find View/ -name "*.ctp" -exec sed -i "s/<table\(.*\)/<table class=\"table table-striped\">/g" '{}' \;
# Add btn classes to buttons
find View/ -name "*.ctp" -exec sed -i "s/view\(.*\))/view\1, array('class' => 'btn btn-default'))/g" '{}' \;
find View/ -name "*.ctp" -exec sed -i "s/edit\(.*\))/edit\1, array('class' => 'btn btn-info'))/g" '{}' \;
find View/ -name "*.ctp" -exec sed -i "s/delete\(.*\), null/delete\1, array('class' => 'btn btn-danger')/g" '{}' \;
@thomseddon
thomseddon / gist:5511325
Last active December 16, 2015 22:59
Connect sessions only on certain routes
var session = express.session();
// Slightly Invasive
app.get('/home', session, routes.home);
app.get('/about', routes.about);
app.get('/faq', routes.faq);
// or
// Crude
#!/usr/bin/env bash
set -e
set -x
### How To Use
#
# sudo bash -c 'bash \
# <(curl -sLB https://raw.github.com/gist/5080906/bootstrap_chef_server_rpm.sh) \
# --hostname foo.example.com'
#
@thomseddon
thomseddon / gitclean.sh
Last active December 11, 2015 23:28
Simple bash script to clean MULTIPLE unwanted files out of a git repo
#!/bin/bash
#
# Usage: ./gitclean.sh <branch> <path-to-match>
# Requires clean working tree (i.e. delete files in <path> and commit)
#
# Thom Seddon <thom@seddonmedia.co.uk>
git ls-tree --name-only -r $1 $2 | while read FILE; do
git filter-branch --index-filter "git rm --cached ${FILE}" HEAD
done
@thomseddon
thomseddon / gist:4547288
Created January 16, 2013 13:56
SSH Shortcut Note: Requires customisation !
sshs () {
case $1 in
vps) ssh name@domain.com ;;
aws) ssh ec2-user@really-long-aws-domain.com -p 2222 ;;
client) ssh client@clientdomain.com ;;
*) echo "Dont know '$1', sorry" ;;
esac
}
@thomseddon
thomseddon / gist:3834721
Created October 4, 2012 16:21
AngularJS: Avoid redirection loop in legacy browser (IE) with HTML5 mode
var buggyAndroid = parseInt((/android (\d+)/.exec(window.navigator.userAgent.toLowerCase()) || [])[1], 10) < 4;
if (!history.pushState || buggyAndroid) {
if (window.location.hash) {
if(window.location.pathname !== '/') window.location.replace('/#!' + window.location.hash.substr(2)); //Hash and a path, just keep the hash (redirect)
} else {
window.location.replace('/#!' + window.location.pathname); //No hash, take path
}
}
//And then in app.config:
# Test:
$ curl http://127.0.0.1:3000
# With debug set to true
$ node test.js
OAuth2Error: The access token was not found
at OAuth2Error (/home/thom/Dev/node/t/node_modules/oauth2-server/lib/error.js:30:12)
at Authorise.getBearerToken (/home/thom/Dev/node/t/node_modules/oauth2-server/lib/authorise.js:70:17)
at run (/home/thom/Dev/node/t/node_modules/oauth2-server/lib/runner.js:15:14)
at runner (/home/thom/Dev/node/t/node_modules/oauth2-server/lib/runner.js:19:5)
@thomseddon
thomseddon / proxy
Created February 25, 2015 20:31
Create proxies in iptables
#!/bin/bash
#
# Copyright Thom Seddon 2015
# MIT
#
if [ "$1" == "" ] || [ "$1" == "help" ]; then
echo "Usage: ~/.proxy <option>"
echo
echo " Options: "