Skip to content

Instantly share code, notes, and snippets.

Jiangge Zhang tonyseek

View GitHub Profile
@tonyseek
tonyseek / ietf-rfc-dl.sh
Last active Jan 23, 2020
Download IETF RFC
View ietf-rfc-dl.sh
#!/usr/bin/env bash
set -e
set -o pipefail
RFC_ID="$1"
if ! grep -qE '^[[:digit:]]+$' <<<"$RFC_ID"; then
printf >&2 'Usage: %s RFC_ID\n' "$(basename "$0")"
exit 2
fi
@tonyseek
tonyseek / treecache.py
Last active Jul 4, 2019
Use TreeCache of Kazoo to get node data.
View treecache.py
import logging
import threading
from kazoo.client import KazooClient
from kazoo.recipe.cache import TreeCache, TreeEvent
class TreeCacheListener(object):
CONNECTIVE_EVENTS = {
@tonyseek
tonyseek / instance_method_decorator.py
Last active Nov 21, 2018
The decorator on instance method as a descriptor
View instance_method_decorator.py
import functools
class Increment(object):
def __init__(self, wrapped, delta):
self.wrapped = wrapped
self.delta = delta
def __get__(self, instance, owner=None):
method = self.wrapped.__get__(instance, owner)
@tonyseek
tonyseek / clean_code_wcc
Last active Jul 21, 2018
Remove wild control characters from files which was edited by VSCode
View clean_code_wcc
#!/usr/bin/env sh
# Clean up the control characters of documents
# See also: https://wdd.js.org/vscode-control-characters-problem.html
# https://github.com/Microsoft/vscode/issues/37114
exec find . -type f -name '*.md' -exec perl -pi -e 's/[\x{0000}\x{0001}\x{0002}\x{0003}\x{0004}\x{0005}\x{0006}\x{0007}\x{0008}\x{000b}\x{000c}\x{000d}\x{000e}\x{000f}\x{0010}\x{0011}\x{0012}\x{0013}\x{0014}\x{0015}\x{0016}\x{0017}\x{0018}\x{0019}\x{001a}\x{001b}\x{001c}\x{001d}\x{001e}\x{001f}\x{001c}\x{007f}]//gm' {} +
@tonyseek
tonyseek / mysql-backup.sh
Last active May 28, 2018
Perform MySQL incremental backup with Percona XtraBackup
View mysql-backup.sh
#!/bin/sh
set -e
MYSQL_USERNAME='root'
MYSQL_PASSWORD=''
MYSQL_HOST='127.0.0.1'
MYSQL_PORT='3306'
MYSQL_DATADIR='/var/lib/mysql'
@tonyseek
tonyseek / README.md
Last active Oct 28, 2017
Downgrade Sketch documents
View README.md

Downgrade Sketch Document

Why

I don't wish to buy Sketch 3 again since I bought it from MacAppStore but lost continue upgrades and 5 devices support. A old version of Sketch will be restricted from opening documents created by the new versions of Sketch.

This is a workaround for some Sketch documents which don't depend on any

@tonyseek
tonyseek / android-captive.sh
Last active Apr 21, 2020
Overrides the captive portal settings of Android in the People's Republic China Mainland
View android-captive.sh
#!/usr/bin/env sh
adb shell settings put global captive_portal_fallback_url http://g.cn/generate_204
adb shell settings put global captive_portal_http_url http://www.google.cn/generate_204
adb shell settings put global captive_portal_https_url https://www.google.cn/generate_204
adb shell settings put global captive_portal_other_fallback_urls http://www.qualcomm.cn/generate_204
View namedtuple.py
import operator
class Node(tuple):
path = property(operator.itemgetter(0))
data = property(operator.itemgetter(1))
stat = property(operator.itemgetter(2))
@tonyseek
tonyseek / logging-and-gevent.py
Last active Sep 8, 2016
The deadlock caused by inconsistent thread ident (RLock of logging handlers)
View logging-and-gevent.py
import logging
import itertools
import gevent.monkey
class SlowHandler(logging.Handler):
def emit(self, record):
gevent.sleep(1)
@tonyseek
tonyseek / surge_to_ssx.py
Created Aug 23, 2016
Migrate the Surge configuration to ShadowsocksX because the Surge Mac 2.0 restricts device numbers.
View surge_to_ssx.py
#!/usr/bin/env python3
"""ShadowsocksX Migration.
This script generates ShadowsocksX profiles from the Surge configuration.
"""
import os
import json
import time
You can’t perform that action at this time.