Skip to content

Instantly share code, notes, and snippets.

@quark-zju
quark-zju / phabricator-gerrit-link.user.js
Created May 4, 2014 07:57
User script: Make Gerrit's "Change-Id" clickable from Phabricator Diffusion
@quark-zju
quark-zju / callbacks.coffee
Created June 2, 2014 03:02
Simple in browser async callbacks
# Original Author: David Morrow
# https://github.com/dperrymorrow/callbacks.js
# MIT license
#
# Modified:
# - Rename method names. For example, remove `Callback`
# - Fix `remove`
# - Remove `instance`, change `method` from string to real method
# - Callbacks.add = Callbacks.get().add
@quark-zju
quark-zju / memory-limit.rb
Last active August 29, 2015 14:02
Handy memory limit script
#!/usr/bin/env ruby
# For Linux only
# Limit: 2.5G, change it if needed
GIGA = 1024 ** 3
MEMORY_LIMIT = GIGA * 5 / 2
CG_DIR = "/sys/fs/cgroup/memory/lm.#{MEMORY_LIMIT}"
if ARGV.any?{|s|s.start_with? '-h'}
@quark-zju
quark-zju / quick-tc.rb
Created July 9, 2014 04:23
Quick & naive upload traffic limit
#!/usr/bin/env ruby
# quick egress traffic limit for linux
# Usage: $0 dev kbps
MIN_RATE = 512
devs = []
rate = 0
dev_names = Dir['/sys/devices/**/net/*'].map{|x|File.basename(x)}
@quark-zju
quark-zju / find-server.rb
Created July 9, 2014 04:30
Find the best server (lowest ping loss and latency) from a list of servers
#!/usr/bin/env ruby
require 'thread_safe'
require 'resolv'
exit 1 if Process.uid != 0
SERVERS = %w[
site-g1.example.com
site-g2.example.com
@quark-zju
quark-zju / lodash.hpp
Last active February 5, 2020 02:14
Little C++ header inspired by Ruby and Lo-dash
// compile with -std=c++1y
#include <algorithm>
#include <functional>
#include <iterator>
#include <vector>
namespace LoDash {
using std::begin;
@quark-zju
quark-zju / iptables_save.c
Last active August 29, 2015 14:05
Python ext for iptables-save
#include <Python.h>
#include <libiptc/libiptc.h>
#include <xtables.h>
#include <stdio.h>
#include <netdb.h>
#include <string.h>
#define buffer_printf(...) {\
char temp_buf[1024];\
@quark-zju
quark-zju / mssh.rb
Last active December 8, 2016 19:09
Use tiled view correctly
#!/usr/bin/env ruby
require 'digest'
hosts = ARGV.to_a
hosts = $<.each_line.map(&:chomp) if hosts.empty?
hosts.uniq!
def system! *args
raise "Cannot exec #{args}" unless system(*args.flatten)
@quark-zju
quark-zju / create_machine.sh
Last active August 29, 2015 14:10 — forked from AVGP/create_machine.sh
Script to create a user-mode linux machine (tested under Debian 7)
#!/bin/sh
### functions
f() { echo "Failed."; exit; }
check_packages()
{
hash linux || apt-get install user-mode-linux || f
hash debootstrap || apt-get install debootstrap || f
@quark-zju
quark-zju / git-pushf
Created December 1, 2014 01:48
Quick & dirty way to sync git to remote
#!/usr/bin/env ruby
# Find git root
while !File.exists?('.git/config')
Dir.chdir('..')
raise 'git root not found' if Dir.pwd == '/'
end
args = ARGV