def __init__(self, D=5):
self.keyspace = 
self.D = D
def partition(self, arg):
md5 = hashlib.md5(str(arg)).hexdigest()
return int(md5[:4], 16)
def add(self, hash):
for i in xrange(self.D):
k = self.partition("%s.%s"%(hash,i))
bisect.insort(self.keyspace, (k, hash))
def remove(self, hash):
self.keyspace = [i for i in self.keyspace if i != hash]
def __getitem__(self, i):
def hash(self, key):
p = self.partition(key)
i = bisect.bisect_left(self.keyspace, (p,None))
Monday, May 03, 2010
Consistent Hashing in Python, Redux.
So, you've created a car prefab using WheelCollider components, and now you can apply a motorTorque to make the whole thing move along. ...
I've put some of my gamedev tools for Unity on Github. Uniextensions, some common sense extensions to Unity. React, a visual logic an...
When you start working with threads in your Unity3D project, you will discover that many things need to be done in the main loop. For exampl...
Note, the GetHashCode() method will probably return a unique ID. There is a very remote chance you will get a clashing ID. Update: After...
I've just seen and used a brilliant ssh option. The command: sudo ssh -D localport user@externalhost will set up a local SOCKS proxy l...
I have built a Synthesizer for creating sound effects in Unity. It fills a similar niche to SFXR/BFXR, but aims to have more quality and ver...
Thank to Adrian Boeing I was inspired this morning to hack together a ripple shader for Unity3D. Thanks for the math Adrian. You can see t...
Possibly slightly more correct lighting. The rim light is now only applied in the direction of the sun, rather than being purely based on v...