Skip to content

Instantly share code, notes, and snippets.

@chobits
chobits / perf.lua
Last active January 22, 2024 07:08
perfermance test for kong old and new dns client library
--[[
run it by this command:
$ resty --shdict "kong_dns_cache 10m" --shdict "kong_dns_cache_ipc 10m" ./perf.lua
]]
pcall(require, "luarocks.loader")
require("kong.globalpatches")()
local json = require("cjson").encode
@chobits
chobits / bt.lua
Last active September 7, 2023 03:15
trace function call chains while reading the lua source
-- Trace request context exclusively within Lua projects
-- executed by the Lua-nginx-module
--
-- The timer context is not available within functions triggered by
-- ngx.timer.at(). However, you can easily make adjustments to this file to
-- enable it.
--
-- In your lua source file:
-- require("bt").init_hook()
@chobits
chobits / excepthook.py
Created April 12, 2012 07:33
python: hook exception handler
import sys
def my_excepthook(exc_type, exc_value, tb):
print 'My Excepthook:'
# traceback display: see tb_printinternal from cpython source
print ' Traceback (most recent call last):'
while tb:
filename = tb.tb_frame.f_code.co_filename
name = tb.tb_frame.f_code.co_name
@chobits
chobits / test_log_alibaba_tengine_pull_1105.md
Last active December 20, 2018 11:23
test case for updating nginx-1.15.1 modules

Test Case:

  • Case failure:
    • sub_filter_slice.t: current tengine has its slice module, so this case is not run for nginx module.
    • limit_conn_complex.t: limit_req module is not updated.
    • index2.t: current tengine does not merge http://hg.nginx.org/nginx/rev/d91a8c4ac6bb.
    • userid.t: tengine refactor 404 page. It outputs URI in response, the URI has "expires" string, which makes case failed.
mail message modified:
Xiaochen Wang <wangxiaochen0@gmail.com>
11:07 AM (2 hours ago)
to web-07
hi mike,
We still have an issue, always crashed on first instruction of tracing generated machine code.
@chobits
chobits / spdy_zlib.py
Last active December 28, 2015 11:49
zlib wrapper for spdy v2/v3
# Used for python 3.3+
# API: decompress, compress
# zlib dictionary support for python: http://bugs.python.org/issue14684
#
# For test:
# $ python3 spdy_zlib.py
import zlib
spdy_v2_dict = b'''\
@chobits
chobits / nginx_kqueue_event.txt
Last active December 22, 2015 02:19
nginx source notes
The available and post_available field of structure ngx_event_t is only used by KQUEUE.
Other event modules (epoll, poll and etc) donest care about it.
For read event, available means size of data ready to read.
For read event(listening event), available means size of listen backlog.
post_avalibale is only used for multi-thread & KQUEUE.
multi_accept directive doesn't matter for kqueue. (see http://forum.nginx.org/read.php?2,3638,3661)
@chobits
chobits / finalizer_garbage.py
Created April 5, 2012 12:32
Python: how to create finalizer garbage
import gc
class A():
# For Python, finalizers means instance objects with __del__ methods.
def __del__(self):
pass
print gc.garbage
# []
@chobits
chobits / gist:2205352
Created March 26, 2012 14:11
python: careful of swaping value
>>> class A():
... val = 0
...
>>> a = A()
>>> a.val, a = 1, a.val # right
>>> a = A()
>>> a, a.val = a.val, 1 # wrong
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'int' object has no attribute 'val'
@chobits
chobits / gist:2069014
Created March 18, 2012 04:57
python *args, **kwargs
>>> def test(a, b):
... print a, b
...
>>> test('hello', 'world')
hello world
>>> test(*('hello', 'world')) # tuple
hello world
>>> test(*iter(['hello', 'world'])) # iter
hello world
>>> test(*['hello', 'world']) # list