Skip to content

Instantly share code, notes, and snippets.

TG9nIGZpbGUgY3JlYXRlZCBhdDogMjAxNi8xMS8yNSAxNjowMTowMQpSdW5uaW5nIG9uIG1hY2hp
bmU6IGJhZ2dpbnM0CkxvZyBsaW5lIGZvcm1hdDogW0lXRUZdbW1kZCBoaDptbTpzcy51dXV1dXUg
dGhyZWFkaWQgZmlsZTpsaW5lXSBtc2cKRjExMjUgMTY6MDE6MDEuNDU2MzU3IDE1ODQ1IGRldm9s
dmUuY3BwOjQzXSBDaGVjayBmYWlsZWQ6IHQuUGFyc2VQYXJ0aWFsRnJvbVN0cmluZyhkYXRhKSBG
YWlsZWQgdG8gcGFyc2UgbWVzb3Muc2NoZWR1bGVyLkNhbGwgd2hpbGUgZGV2b2x2aW5nIGZyb20g
bWVzb3MudjEuc2NoZWR1bGVyLkNhbGwgZGF0YTogWwosCioxMTZjM2MyZi04ZTE1LTQ1MTktOTA1
ZC02ZWY3YzkwZmY4MDgtNTIwODcQAyKN+OlGCjAKLjExNmMzYzJmLThlMTUtNDUxOS05MDVkLTZl
ZjdjOTBmZjgwOC1POTM4ODQxMDIS1vfpRggBEs/36UYKsv+0IwoKdGFzayAxOjE6MRIHCgUxOjE6
MRoqCigxMTZjM2MyZi04ZTE1LTQ1MTktOTA1ZC02ZWY3YzkwZmY4MDgtUzE4IhMKBGNwdXMQABoJ
CQAAAAAAAPA/IhIKA21lbRAAGgkJAAAAAABAj0AqmycKCQoHZGVmYXVsdCKDJSgJAAAAc0oAAAAv
@windreamer
windreamer / portable_hash.pyx
Created October 12, 2013 13:57
Portable hash in Cython
from libc.stdint cimport int64_t
cdef tuple_hash(obj):
cdef int64_t mul = 1000003, l = len(obj), value = 0x345678, v
for i in obj:
l -= 1
v = portable_hash(i)
if v == -1:
return -1
value = (value ^ v) * mul
mul += <int64_t> (82520 + l * 2)
# -*- coding: utf-8 -*-
#! /usr/bin/python
import urllib2
import os
from BeautifulSoup import BeautifulSoup
import sys
reload(sys)
sys.setdefaultencoding('utf8')