Skip to content

Instantly share code, notes, and snippets.

View jackhftang's full-sized avatar

Jack Tang jackhftang

View GitHub Profile

Keybase proof

I hereby claim:

  • I am jackhftang on github.
  • I am jackhftang (https://keybase.io/jackhftang) on keybase.
  • I have a public key whose fingerprint is 8C74 60F5 FC28 D7A2 89CA 10E0 02FE BC30 FFA2 E954

To claim this, I am signing this object:

@jackhftang
jackhftang / register.php
Last active February 16, 2019 09:16
The infamous php if hell refactoring
<?php
function register()
{
if (empty($_POST)) {
return register_form();
}
if (($msg = validate($_POST)) !== null) {
$_SESSION['msg'] = $msg;
@jackhftang
jackhftang / merge_sort.py
Last active April 5, 2018 14:24
parallel merge sort using fork, wait and shared array.
#!/usr/bin/env python3
from multiprocessing import Array
from os import fork, wait, _exit
from random import randint
def merge_sort(type, arr):
N = len(arr)
# create shared array
lis = {1, 2, 3, 4};
all = Flatten[
Outer[ List,
lis, lis, lis, lis, lis,
lis, lis, lis, lis, lis
], 9
];
q2[l_] :=
l[[2]] == 1 && l[[5]] == 3 ||
#define FAILED(x) (!SUCCEEDED(x))
HRESULT BasicFileOpen()
{
// CoCreate the File Open Dialog object.
IFileDialog *pfd = NULL;
HRESULT hr = CoCreateInstance(CLSID_FileOpenDialog, NULL, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&pfd));
if (FAILED(hr)) return hr;
// Create an event handling object, and hook it up to the dialog.
@jackhftang
jackhftang / tag_count.sql
Last active October 3, 2017 09:21
mysql procedure for counting comma delimited varchar
-- base table
CREATE TABLE IF NOT EXISTS tags (
id INT PRIMARY KEY AUTO_INCREMENT,
tags VARCHAR(128)
);
-- prepare data
INSERT INTO tags(tags) VALUES (",3,47,1,5,"), ("1,2,3"), (",4,5,6,7"), ("3,4,6,");
-- create procedure
@jackhftang
jackhftang / todo.html
Created September 29, 2017 17:21
A taste of rxjs + d3
<div>
<ul class="list"></ul>
Item: <input type="text" class="input_todo"/>
<button class="btn_push">Push</button>
<button class="btn_pop">Pop Last</button>
<br>
<span class="msg"></span>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/5.4.3/Rx.min.js"></script>
from bottle import run, post, request
from threading import Thread
from queue import Queue
import datetime
import requests
import shutil
import tempfile
from os.path import join
import time
@jackhftang
jackhftang / mat2csv.py
Created September 2, 2017 06:11
convert matlab .mat to .csv
#!/bin/env python3
import scipy.io
import numpy as np
import sys
from os.path import basename, splitext
src = sys.argv[1]
data = scipy.io.loadmat(src)
dest = f'{splitext(basename(src))[0]}.csv'
@jackhftang
jackhftang / knocking.py
Last active August 28, 2017 00:03
A simple knocking server
from bottle import route, run, template, error
import bottle
import subprocess
from random import random
from time import sleep
sequence = ['key1', 'key2', 'key3']
exclude = ['favicon.ico']
table = {}