Skip to content

Instantly share code, notes, and snippets.

@wilburding
wilburding / simulate.py
Last active December 15, 2015 11:39
simulate the mechanism of how BigWorld handles priorities of entities in the aoi of a witness. it seems that the priorities will finally all be cleared to zero, though very slow, hundreds of thousands iterations usually required at least and sometimes 100M iterations won't do, if all other entities are static.
#!/usr/bin/env pypy-c
from __future__ import print_function
import random
import math
import sys
import signal
import os
import time
#include <iostream>
#include <vector>
#include <string>
#include <mutex>
#include <future>
#include <chrono>
#include <utility>
#include <assert.h>
#include <pthread.h>
#include <iostream>
#include <vector>
#include <string>
#include <mutex>
#include <future>
#include <chrono>
#include <random>
#include <utility>
#include <assert.h>
@wilburding
wilburding / timeit.cpp
Created April 5, 2013 12:19
time any callable
template<class F, class ...Args>
void timeit(uint32_t repeat, F&& f, Args&&... args)
{
auto begin_time = chrono::high_resolution_clock::now();
for(uint32_t i = 0; i < repeat; ++i)
f(forward<Args>(args)...);
auto end_time = chrono::high_resolution_clock::now();
printf("total time: %lldus\n", chrono::duration_cast<chrono::microseconds>(end_time - begin_time).count());
printf("average time: %lldns\n", chrono::duration_cast<chrono::nanoseconds>(end_time - begin_time).count() / repeat);
@wilburding
wilburding / tagged_pointer.cpp
Created April 5, 2013 14:06
tagged pointer for lockfree algorithm(64bit assumed)
template<class T>
class TaggedPointer
{
public:
explicit TaggedPointer(T* ptr = nullptr)
:ptr_(ptr),
counter_(0)
{}
inline T* load_ptr() noexcept
@wilburding
wilburding / shared_ptr.cpp
Created April 17, 2013 13:14
toy shared_ptr
#include <iostream>
#include <vector>
#include <string>
#include <mutex>
#include <future>
#include <chrono>
#include <random>
#include <utility>
#include <assert.h>
@wilburding
wilburding / jinja_template.py
Last active December 17, 2015 19:19
a simple jinja template integretion to tornado
#!/usr/bin/env python
#fileencoding=utf-8
from jinja2 import Environment
from jinja2 import FileSystemLoader
import datetime
def guess_autoescape(template_name):
@wilburding
wilburding / tmux.conf
Last active July 4, 2018 02:37
my tmux conf(adapted from XuTao's)
# author: XuTao <butbueatiful@gmail.com>
# time: Sun Jul 15 21:57:17 CST 2012
# Usage: mv tmux_conf.txt ~/.tmux.conf
#------------------------------------------
#-- base --#
set -g default-terminal "xterm-256color"
#set -g default-terminal "xterm"
set -g display-time 3000
set -g history-limit 65535
@wilburding
wilburding / ip_to_location.py
Last active December 21, 2015 08:29
Python写的读取纯真IP地址数据库脚本,提供简单的查询功能
#!/usr/bin/env python
#fileencoding=utf-8
import struct
import socket
class Node(object):
__slots__ = ('ip', 'country', 'district')
@wilburding
wilburding / mongod.service
Last active August 29, 2015 14:24
mongod.service
[Unit]
Description=mongod.service
After=network.target disable_thp.service
[Service]
ExecStartPre=/usr/bin/install -d -m 0755 -o mongod -g mongod /var/run/mongodb
ExecStart=/usr/bin/mongod -f /etc/mongod.conf --fork --pidfilepath=/var/run/mongodb/mongod.pid
ExecStop=/usr/bin/kill -TERM $MAINPID
Type=forking
PIDFile=/var/run/mongodb/mongod.pid