Skip to content

Instantly share code, notes, and snippets.

View JustinSDK's full-sized avatar
👨‍👩‍👧
Working from home

Justin Lin JustinSDK

👨‍👩‍👧
Working from home
View GitHub Profile
@JustinSDK
JustinSDK / simple_type_checking.py
Last active August 1, 2018 01:32
simple_type_checking.py
import sys, re, ast
type_hints_re = re.compile(r'([a-zA-Z]+):\s*([a-zA-Z]+)')
code = '''
"""x: int"""
x = 2
'''
node = ast.parse(code)
@JustinSDK
JustinSDK / modify_ast.py
Created August 1, 2018 01:51
modify_ast.py
import ast
code = '''
def add(n1, n2):
return n1 + n2
print(add(3, 4))
'''
class CrazyTransformer(ast.NodeTransformer):
def visit_BinOp(self, node):
@JustinSDK
JustinSDK / async_demo.py
Last active August 14, 2018 06:14
async_demo.py
from concurrent.futures import ThreadPoolExecutor
import time
import random
def doAsync(task):
g = task()
future = next(g)
while True:
try:
future = g.send(future.result())
@JustinSDK
JustinSDK / download.py
Created August 14, 2018 07:54
download.py
from urllib.request import urlopen
def download(url, file):
with urlopen(url) as url, open(file, 'wb') as f:
f.write(url.read())
urls = [
'http://openhome.cc/Gossip/Encoding/',
'http://openhome.cc/Gossip/Scala/',
'http://openhome.cc/Gossip/JavaScript/',
@JustinSDK
JustinSDK / bytecode_abc_1.py
Last active August 25, 2018 08:02
Byte Code ABC - 1
class Num:
def __init__(self, value):
self.value = value
def evaluate(self, stack):
push(stack, self.value)
return stack
class Add:
def __init__(self, left, right):
@JustinSDK
JustinSDK / bytecode_abc_2.py
Last active August 25, 2018 08:01
Byte Code ABC - 2
class Num:
def __init__(self, value):
self.value = value
def bc_instructn(self, bytecodes):
bytecodes.append(f'push {self.value}')
return bytecodes
class Add:
def __init__(self, left, right):
@JustinSDK
JustinSDK / array.wat
Last active September 20, 2018 00:09
Wasm Array
;; 說明:https://openhome.cc/Gossip/WebAssembly/Array.html
(module
(import "env" "log" (func $log (param i32)))
(memory 1)
;; 建立新陣列
(func $arr (param $len i32) (result i32)
(local $offset i32) ;; 記錄陣列偏移量
(set_local $offset (i32.load (i32.const 0))) ;; 取得偏移量
@JustinSDK
JustinSDK / first_three_js.html
Last active March 1, 2019 10:34
First Three.js
<html>
<body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/96/three.min.js"></script>
<script src="https://threejs.org/examples/js/controls/OrbitControls.js"></script>
<script>
// 場景
const scene = new THREE.Scene();
@JustinSDK
JustinSDK / es6-iterator-promise.js
Created May 7, 2019 04:31
es6-iterator-promise
// 自行實作迭代器
const vertex1 = {
x: 1,
y: 2,
z: 3,
[Symbol.iterator]() {
const keys = Object.keys(this);
let i = 0;
return {
next: () => {
@JustinSDK
JustinSDK / es7-iterator-async-await.js
Created May 7, 2019 05:43
es7-iterator-async-await.js
// 自行實作迭代器
const vertex1 = {
x: 1,
y: 2,
z: 3,
[Symbol.iterator]() {
const keys = Object.keys(this);
let i = 0;
return {
next: () => {