Skip to content

Instantly share code, notes, and snippets.

View loki42's full-sized avatar

Loki Davison loki42

View GitHub Profile
@loki42
loki42 / gist:10229793
Last active August 29, 2015 13:58
Simple generator for CRYENGINE 3.5 binary vegetation files with Python
import sys, uuid
import math
from struct import *
file_for_import = sys.argv[1]
layer = sys.argv[2]
y_offset = float(sys.argv[3])
x_offset = float(sys.argv[4])
z_offset = float(sys.argv[5])
scale_multiplier = 1.0
@loki42
loki42 / gist:3128229
Created July 17, 2012 09:09
ipv6 gevent server
s = gevent.socket.socket(gevent.socket.AF_INET6, gevent.socket.SOCK_STREAM)
s.bind(('::', 0))
s.listen(2048)
@loki42
loki42 / gist:2915827
Created June 12, 2012 07:12
create an ephemeral node with kazoo (zookeeper) to add a server to a zookeeper based nameserver.
from netifaces import ifaddresses, AF_INET
def ip4_addresses():
for interface in ['eth0', 'eth1', 'wlan0']:
try:
link = ifaddresses(interface)
if AF_INET in link:
return link[AF_INET][0]['addr']
except ValueError:
pass
@loki42
loki42 / gist:2915814
Created June 12, 2012 07:09
kazoo (zookeeper) callback with gevent
from functools import partial
import gevent
def kazoo_callback(zk, func, event):
"""
usage example
zk.get_children("/redis/providers", partial(kazoo_callback, zk, provider_changed))
"""
def watcher(e):
print "### watcher called", event
@loki42
loki42 / gist:2774832
Created May 23, 2012 11:55
syslog with python
import logging
import logging.handlers
def get_logger(name=None, address='/dev/log', level=logging.DEBUG):
my_logger = logging.getLogger(name)
my_logger.setLevel(logging.DEBUG)
handler = logging.handlers.SysLogHandler(address = address)
formatter = logging.Formatter('%(module)s[%(process)s]: %(levelname)s %(message)r')
handler.setFormatter(formatter)
my_logger.addHandler(handler)
@loki42
loki42 / gist:2673589
Created May 13, 2012 03:11
zeromq bind to random port
>>> from gevent_zeromq import zmq
>>> context = zmq.Context()
>>> internal_socket = context.socket(zmq.PULL)
>>> internal_socket.bind_to_random_port("tcp://*")
59994
>>> internal_socket.bind_to_random_port("tcp://localhost")
Traceback (most recent call last):
File "<input>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/zmq/core/pysocket.py", line 148, in bind_to_random_port
raise ZMQBindError("Could not bind socket to random port.")
@loki42
loki42 / gist:2396381
Created April 16, 2012 04:52
redis beaker setup
# from www.musicfilmcomedy.com
def setup_redis_session(app):
redis_pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
return SessionMiddleware(app, type="redis", url="localhost:6379", key="musicfilmcomedy", connection_pool=redis_pool)
@loki42
loki42 / gist:2349796
Created April 10, 2012 09:30
multilingual python web app with babel
# get all langs from db
all_available_languages = [a['lang'] for a in cur.fetchall()]
def get_lang(lang):
default = 'en'
mo_dir = os.path.join(os.path.abspath(os.curdir), 'locale')
domain = 'musicfilmcomedy'
langs = [lang.replace('-', '_')]
langs.append(default)
@loki42
loki42 / gist:2342765
Created April 9, 2012 10:28
beaker redis
from beaker.middleware import CacheMiddleware, SessionMiddleware
def setup_redis_session(app):
return SessionMiddleware(app, type="redis", url="localhost:6379", key="appname")
application = cherrypy.Application(Root(all_available_languages), '', config='musicfilmcomedy.conf')
application.wsgiapp.pipeline.append(('beaker', setup_redis_session))