Skip to content

Instantly share code, notes, and snippets.

🐍
Snek

Greg Taylor gtaylor

🐍
Snek
Block or report user

Report or block gtaylor

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
@gtaylor
gtaylor / plugin_distutils
Created Jan 11, 2011
Distributing Twisted plugins with distutils
View plugin_distutils
"""
Example of a way to distribute Twisted plugins with distutils. This would go in your setup.py file.
data_files would get passed to setup() through the data_files keyword.
"""
from distutils.sysconfig import get_python_lib
TWISTED_PLUGIN_PATH = os.path.join(get_python_lib(), 'twisted', 'plugins')
MODULE_PLUGIN_PATH = os.path.join('your_module', 'twisted', 'plugins')
data_files = [
@gtaylor
gtaylor / gist:1635814
Created Jan 18, 2012
jQuery form validation mixin
View gist:1635814
class FrontendFormErrorHandlingMixin(object):
"""
Provides some convenience methods for handling errors on the front end.
See :meth:`get_errors`.
"""
def get_errors(self):
"""
Returns a list of form validation erros
in a dictionary format. More JSON friendly. Less stupid.
"""
@gtaylor
gtaylor / gist:1764759
Created Feb 8, 2012
Starting an instance with boto
View gist:1764759
import boto
# This is used to create an EC2Connection object, which provides an API to
# work with the EC2 service.
conn = boto.connect_ec2('your-aws-key-here', 'your-secret-here')
# Launch an instance with the specified AMI (Amazon Machine Instance)
# in a small VM. In this case, the AMI is Ubuntu 11.10.
reservation = conn.run_instances('ami-0fe3dc7b', instance_type='t1.micro')
@gtaylor
gtaylor / gist:1901752
Created Feb 24, 2012
Dynamic Fabric deployment with boto
View gist:1901752
def ec2():
"""
Set env.roledefs according to our deployment setup. From this, an
env.hosts list is generated, which determines which hosts can be
messed with. The roledefs are only used to determine what each server is.
Since we are running on EC2, these instances are completely variable.
We need to hit their API to determine which instances are currently in
service.
"""
@gtaylor
gtaylor / gist:4288166
Created Dec 14, 2012
Alex Gaynor's Shit List
View gist:4288166
Alex Gaynor's Shit List
-----------------------
* Everyone.
@gtaylor
gtaylor / gist:6378871
Created Aug 29, 2013
A very naive HTTP server that listens for a Github webhook. Upon receiving a request, we build the Pelican content and upload to S3.
View gist:6378871
/*
A very basic HTTP server that listens for Github webhooks. When we hear from
Github, build the blog and upload to S3.
Note: This is a very naive server. We don't attempt to authenticate in any
way, and we don't block to prevent spamming.
*/
package main
import (
@gtaylor
gtaylor / bt-182p3.diff
Created Mar 13, 2014
PennMUSH 1.8.2p3 diff to incorporate liberated btech from BattletechMUX
View bt-182p3.diff
diff -ur -x btech -x .svn -x '*.o' -x data pennmush/game/mushcnf.dst btpenn/game/mushcnf.dst
--- pennmush/game/mushcnf.dst 2007-04-22 09:00:06.000000000 -0700
+++ btpenn/game/mushcnf.dst 2007-02-04 20:58:41.000000000 -0800
@@ -840,3 +840,7 @@
###
include restrict.cnf
+###
+### BattleTech options are in btech.cnf
+###
View gist:9aec5dda57f5ae019435
libconn = librato.connect(settings.LIBRATO_USERNAME, settings.LIBRATO_API_KEY)
libconn.submit(
metric_name, count, type='gauge', source=_METRIC_SOURCE, period=300, measure_time=epoch)
File "/home/gtaylor/workspace/coursebook/pathwright/apps/pwstats/src/metric_api.py", line 35, in send_counter_metric
**kwargs)
File "/home/gtaylor/.virtualenvs/coursebook/lib/python2.7/site-packages/librato/__init__.py", line 182, in submit
self._mexe("metrics", method="POST", query_props=payload)
File "/home/gtaylor/.virtualenvs/coursebook/lib/python2.7/site-packages/librato/__init__.py", line 148, in _mexe
resp_data, success, backoff = self._process_response(resp, backoff)
View gist:d7e78505c5eaed70ecde
DROP FUNCTION modify_player_inventory(
player_id integer, mod_amount integer, item_name text
);
CREATE OR REPLACE FUNCTION modify_player_inventory(
player_id integer, mod_amount integer, item_name text
) RETURNS integer AS
$BODY$
BEGIN
LOOP
-- first try to update the key
View gist:e3926a90fe108d52a4c8
WITH RECURSIVE cte (
id, discussion_id, body, num_votes, last_edited_time,
class_section_id, created_time, modified_time,
author_id, reply_parent_id, num_inappropriate_flags,
path, depth
) AS (
SELECT discussion_response.id, discussion_response.discussion_id,
discussion_response.body, discussion_response.num_votes,
discussion_response.last_edited_time,
discussion_response.class_section_id,
You can’t perform that action at this time.