Skip to content

Instantly share code, notes, and snippets.

@shazow
shazow / gist:5658843
Created May 27, 2013 20:04
Parsing nginx-style access logs in Python.
import re
RE_LOG = re.compile(
'(?P<ip>[(\d\.)]+) '
'- - '
'\[(?P<timestamp>.*?)\] '
'"(?P<request>.*?)" '
'(?P<status>\d+) '
'(?P<size>\d+) '
'"(?P<referrer>.*?)" '
@shazow
shazow / gist:5666792
Last active December 17, 2015 20:19
Bitcoin helpers, candidate for unstdlib.py?
import re
import hashlib
import unstdlib
RE_WALLET_ADDRESS = re.compile('^[a-zA-Z1-9]{27,35}$')
ALPHABET_BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
class NETWORK_VERSIONS:
@shazow
shazow / gist:5754021
Last active December 18, 2015 08:29
I want a Python key namespace utility that lets me do things like this...
# Import from an imaginary package I wish existed...
from keyspace import KeySpace, Key, Prefix
class MyKeys(KeySpace):
prefix_users = Prefix('u')
user_set = Key('users')
KEYS = MyKeys(prefix='prod', delim=':')
@shazow
shazow / gist:6228559
Created August 14, 2013 06:40
OAuth2 for GA in Go
func AccountConnectHandler(w http.ResponseWriter, r *http.Request) {
// TODO: Check state? r.FormValue("state")
transport := &oauth.Transport{
Config: &config,
Transport: &urlfetch.Transport{
Context: appengine.NewContext(r),
},
}
@shazow
shazow / controller.go
Created September 1, 2013 20:37
Controller miniframework for webapps (in progress)
package foo
import (
"appengine"
"appengine/urlfetch"
"code.google.com/p/goauth2/oauth"
"code.google.com/p/google-api-go-client/analytics/v3"
"code.google.com/p/google-api-go-client/oauth2/v2"
"github.com/gorilla/sessions"
"html/template"
@shazow
shazow / memoizer.go
Last active December 22, 2015 02:59
Generic memoizer in Go. (http://play.golang.org/p/ct8ySJ3eh4)
package main
import (
"errors"
"fmt"
"reflect"
"runtime"
)
var ErrMissedCache = errors.New("Memoizer: Missed cache.")
@shazow
shazow / gist:6428419
Created September 3, 2013 19:25
Caching with Go
// Without caching, or with a memoization wrapper:
func (c *Context) FooApi() (*Result, error) {
return c.apiClient.someGoogleApiQuery.Do()
}
func (c *Context) BarApi(someArg string) (*Result, error) {
return c.apiClient.someGoogleApiQuery.Filter(someArg).Do()
}
@shazow
shazow / cache_key_generator.py
Last active December 24, 2015 17:49
Cache key generator, can be used for things like dogpile.cache
"""
Based on code of dogpile.cache.util.function_key_generator(...) but adds support for kw.
Related dogpile.cache bug: https://bitbucket.org/zzzeek/dogpile.cache/issue/43/kw-support-in-function_key_generator
Usage:
from dogpile.cache import make_region
my_region = make_region(
function_key_generator=make_key_generator,
@shazow
shazow / gist:7091224
Created October 21, 2013 21:21
Disabled backend for dogpile.cache, useful for testing.
from dogpile.cache.api import CacheBackend, NO_VALUE
class DisabledBackend(CacheBackend):
def __init__(self, arguments):
pass
def get(self, key):
return NO_VALUE
def set(self, key, value):
@shazow
shazow / gist:8036248
Last active December 31, 2015 19:49
Human helpers (unstdlib.py candidates)
import re
from unstdlib import html
_Default = object()
RE_HUMAN_URL = re.compile('^(\w*://)?(www\.)?(.+)/?$')
def human_url(s, max_length=None):