Skip to content

Instantly share code, notes, and snippets.

View scientificRat's full-sized avatar
😝
Working

Zhengyue Huang scientificRat

😝
Working
  • Tsinghua University
View GitHub Profile
@scientificRat
scientificRat / nat_traversal_local.py
Last active July 9, 2018 04:28
Nat traversal (text communication)
import socket as sc
import argparse
import os, sys
class NatTraversalTool(object):
def __init__(self, server_address, local_name, remote_name):
self.server_address = server_address
self.local_name = local_name
self.remote_name = remote_name
@scientificRat
scientificRat / print_table_console.py
Created August 14, 2018 03:37
print table to console
def print_table(head, body, padding_left=1, padding_right=2):
# calc column lens
head = list(head)
col_lens = [len(c) + padding_left + padding_right for c in head]
for i in range(len(body)):
body[i] = list(body[i])
row = body[i]
if len(row) > len(head):
head.append('')
col_lens.append(0)
@scientificRat
scientificRat / quicksort.py
Created October 17, 2018 06:30
python quicksort
def quick_sort(array):
def partition(array, start, end):
i = start - 1 # i represent the last index of smaller set
pivot = end - 1
# j represent the working pointer
for j in range(start, end - 1):
# swap
if array[j] < array[pivot]:
i += 1
tmp = array[j]
@scientificRat
scientificRat / shell_sort.py
Created October 17, 2018 06:32
shell-sort implementation in python
def shell_sort(array):
gap = len(array) // 2
while gap > 0:
for i in range(gap, len(array)):
for j in range(i - gap, -1, -1):
if array[j] <= array[j + gap]:
break
tmp = array[j]
array[j] = array[j + gap]
array[j + gap] = tmp
@scientificRat
scientificRat / merge_sort.py
Created October 17, 2018 06:33
merge_sort implementation in python
def merge_sort(array):
if len(array) == 1:
return [array[0]]
elif len(array) == 2:
if array[0] > array[1]:
return [array[1], array[0]]
return [array[0], array[1]]
mid = len(array) // 2
left = merge_sort(array[0:mid])
right = merge_sort(array[mid:])
@scientificRat
scientificRat / THU_Tsinghua_conn_tool.py
Created October 17, 2018 11:12
清华大学校园网命令行登陆/退出脚本
import requests
import argparse
import hashlib
def login(username, password):
password = '{MD5_HEX}' + hashlib.md5(password.encode('utf-8')).hexdigest()
r = requests.post('http://net.tsinghua.edu.cn/do_login.php',
data={'action': 'login', 'username': username, 'password': password, 'ac_id': 1})
print(r.text)
@scientificRat
scientificRat / merge_sort.cpp
Created January 16, 2019 08:24
merge_sort implementation in c++(no array copy)
void mergeSort(int *arr, int *out, int start, int end) {
if (end == start + 1) {
out[0] = arr[start];
return;
}
int mid = (start + end) / 2;
int left_length = mid - start;
int right_length = end - mid;
int *left = new int[left_length];
int *right = new int[right_length];
@scientificRat
scientificRat / png_tight_cut.py
Last active June 19, 2020 07:17
png tight cut, cut the png background
import cv2
import os
import sys
import numpy as np
def tight_cut(path):
path = os.path.abspath(path)
file_name = os.path.basename(path)
dir_name = os.path.dirname(path)
@scientificRat
scientificRat / PythonPollServer.py
Created April 29, 2020 16:42
Fast Python Poll/Epoll Server
import socket
import selectors
in_stream_selector = selectors.DefaultSelector()
out_stream_selector = selectors.DefaultSelector()
write_handlers = {}
class WriteHandler:
@scientificRat
scientificRat / keymap.py
Last active June 28, 2024 16:40
Use raspberry pi as Bluetooth HID mouse/keyboard emulator
#
# Taken from https://www.gadgetdaily.xyz/create-a-cool-sliding-and-scrollable-mobile-menu/
#
# Convert value returned from Linux event device ("evdev") to a HID code. This
# is reverse of what's actually hardcoded in the kernel.
#
# Lubomir Rintel <lkundrak@v3.sk>
# License: GPL
#
# Ported to a Python module by Liam Fraser.