Skip to content

Instantly share code, notes, and snippets.

View jdennes's full-sized avatar

James Dennes jdennes

View GitHub Profile
@jdennes
jdennes / pre-revprop-change.py
Created November 18, 2009 21:46
pre-revprop-change svn hook in python
# pre-revprop-change.py:
#
# Performs the following:
# - Makes sure that only the log message may be modified
# - Makes sure that the action is either addition or modification, but not deletion
# - Makes sure that an empty log message isn't entered
#
# usage: pre-revprop-change.py -t REPOS REV USERNAME PROPNAME ACTION
# N.B. The new value of the property is passed via standard input
# e.g. in pre-revprop-change.cmd (under Windows)
@jdennes
jdennes / pre-commit.py
Created November 18, 2009 21:48
pre-commit svn hook in python
# pre-commit.py:
#
# Performs the following:
# - Makes sure the author has entered a log message.
# - Makes sure the author is only creating a tag, or if deleting a tag, author is a specific user
# - Makes sure the author is not committing to a particular set of paths in the repository
#
# Script based on http://svn.collab.net/repos/svn/trunk/tools/hook-scripts/log-police.py
#
# usage: pre-commit.py -t TXN_NAME REPOS
@jdennes
jdennes / gist:253939
Created December 11, 2009 03:01
Basic .NET .gitignore entries
# Basic .NET .gitignore entries:
*resharper.user
[Dd]ebug/
[Rr]elease/
build/
[Bb]in/
[Oo]bj/
*.suo
*.sln.cache
@jdennes
jdennes / appengine_console.py
Created June 6, 2010 22:59
An interactive console for App Engine apps
#!/usr/bin/python
# An interactive console for App Engine apps
# Usage: ./appengine_console.py app_id [host]
import code
import getpass
import sys
sys.path.append("/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine")
@jdennes
jdennes / Fixing cygwin remap errors
Created July 27, 2010 06:35
Fixing cygwin remap errors
In the case of cygwin producing an error of the form "*** fatal error - unable to remap ...":
1. Make sure rebase package is installed (use cygwin setup.exe utility)
2. Kill all cygwin processes
3. Run cmd.exe
4. cd C:\cygwin\bin\
5. .\ash.exe
6. ./rebaseall
Checking for program g++ or c++ : /usr/bin/g++
Checking for program cpp : /usr/bin/cpp
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for g++ : ok
Checking for program gcc or cc : /usr/bin/gcc
Checking for program ar : /usr/bin/ar
Checking for program ranlib : /usr/bin/ranlib
Checking for gcc : ok
Checking for library dl : yes
GNU Make 3.81
Copyright (C) 2006 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.
This program built for i386-apple-darwin10.0
Reading makefiles...
Updating goal targets....
File `all' does not exist.
@jdennes
jdennes / 01_unvalidated_cm_signup_form.html
Created September 7, 2010 06:26
Easily adding basic validation to your Campaign Monitor subscribe form with jQuery
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style type="text/css">
span.label,span.spacer,span.multiple span {width:120px;float:left;}
span.multiple {float:left;}
span.button {padding-left:120px;}
div.clear {clear:both;padding-top:5px;}
</style>
@jdennes
jdennes / riceisnice.rb
Created November 8, 2010 12:18
Automatically download the http://www.riceisnice.net playlist
# Automatically download the http://www.riceisnice.net playlist
require 'rexml/document'
`wget http://www.riceisnice.net/player/playlist.xml`
file = File.open('playlist.xml', 'r')
doc = REXML::Document.new(file.read)
files = []
doc.elements.each('playlist/item/path') do |p|
files << p.text
@jdennes
jdennes / ivyleague.rb
Created December 20, 2010 23:47
Automatically download the http://www.ivyleague.com.au/ playlist
# Automatically download the http://www.ivyleague.com.au/ playlist
require 'rexml/document'
`wget http://www.ivyleague.com.au/medias/audioplayer/data.xml`
file = File.open('data.xml', 'r')
doc = REXML::Document.new(file.read)
files = []
doc.elements.each('songs/song') do |s|
files << "http://www.ivyleague.com.au#{s.attributes["url"]}"