Skip to content

Instantly share code, notes, and snippets.

View weaver's full-sized avatar

Ben Weaver weaver

View GitHub Profile
## An example of using lxml as a namespace-aware, event-based push
## parser.
import urllib2
from contextlib import closing
from lxml import etree
class Target(object):
def start(self, tag, attr):
@weaver
weaver / starttls.py
Created February 3, 2010 07:40
Example of STARTTLS with Tornado
"""starttls -- an example of wrapping a non-blocking socket with TLS.
Example:
> openssl req -new -x509 -days 365 -nodes -out /tmp/cert.crt -keyout /tmp/cert.key
> python /path/to/this-file.py
starting client: 7
starting server: 8
client said: 'hello'.
server said: "YOU SAID: 'hello'".
#!/usr/bin/env python
"""ply-path -- analysis of an path expression using PLY
Example: ply-path.py 'child::para[position()>1]'
"""
import sys
from ply import lex
@weaver
weaver / demo-client.py
Created March 1, 2010 16:20
XMPP client/server that use JSON info queries.
#!/usr/bin/env python
"""demo-client.py -- query the demo server
Example:
## In one terminal:
> python demo-server.py
## In another terminal:
> python demo-client.py '*'
@weaver
weaver / viewMiddleware.js
Created August 9, 2010 23:06
Express middleware for adding template bindings #nodejs
// This is rudimentary view-level middleware for Express. When
// ServerResponse.render() is called, any middleware methods are
// invoked in the order they were registered. They are passed the
// request, response, and local template bindings.
//
// For example:
//
// var connect = require('connect'),
// app = require('express').createServer();
//
@weaver
weaver / amap.js
Created August 10, 2010 02:59
Asynchronous map #nodejs
// amap -- asynchronous map
//
// Maps fn over list and passes the result to callback. For example,
//
// function loadEntries(folder, callback) {
// fs.readdir(folder, function(err, files) {
// if (err) throw err;
// amap(files, callback, function(name, index, next) {
// load(path.join(folder, name), next);
// });
@weaver
weaver / password-test.js
Created August 10, 2010 20:52
Hash passwords for storage. #nodejs
var assert = require('assert'),
sys = require('sys'),
pwd = require('password'),
vows = require('vows');
vows.describe('Password').addBatch({
'The default method': method(pwd),
'The bcrypt method': method(pwd.bcrypt),
'The sha512 method': method(pwd.sha512)
}).export(module);
@weaver
weaver / make-selector.js
Created October 14, 2010 18:54
Create an absolute jQuery selector for a DOM element.
// Create an absolute jQuery selector for a DOM element.
//
// + el - Element to select.
//
// Returns String selector.
function makeSelector(el) {
var tag, index, stack = [];
for (; el.parentNode; el = el.parentNode) {
tag = el.tagName;
@weaver
weaver / grabme.py
Created October 15, 2010 17:53
Download some grab.by images into the current directory.
#!/usr/bin/env python
## Download some grab.by images into the current directory.
## Requires curl command-line utility.
##
## The bounds should be given in base62 (e.g. in the range 0 - ZZZZ).
##
## Example:
##
## mkdir /tmp/grab
@weaver
weaver / .gitignore
Created February 6, 2011 18:39
Node vs Scheme vs Ruby vs Python web server benchmarks.
gambit-server/web-server
snap-hello-server/bin
snap-hello-server/dist/