Skip to content

Instantly share code, notes, and snippets.

@clinyong
clinyong / tree-printer.js
Last active May 8, 2022 04:16
A gist to print binary tree in Node.js
View tree-printer.js
class TreePrinter {
constructor() {
this._maxDigits = 0;
}
// BFS: https://en.wikipedia.org/wiki/Breadth-first_search
// empty node will be null in list
_getBreadthFirstList(rootNode, maxHeight) {
const queue = [rootNode];
const list = [];
@clinyong
clinyong / config.yaml
Created September 25, 2020 16:56
clash custom
View config.yaml
payload:
# company ban
- DOMAIN-SUFFIX,yinxiang.com,Proxy
- DOMAIN-SUFFIX,yuque.com,Proxy
- DOMAIN-SUFFIX,shimo.im,Proxy
- DOMAIN-SUFFIX,docs.qq.com,Proxy
# custom
- DOMAIN-SUFFIX,setapp.com,Proxy
- DOMAIN-SUFFIX,ankiweb.net,Proxy
View subconverter-config
[rulesets]
ruleset=🎯 全球直连,clash-classic:https://gist.githubusercontent.com/clinyong/5d734fc72d0390e831c4e5279a69a9f3/raw/5a3eaa83e1c637a2356df744fb9b48bcd941e5d9/clash-pdd,86400
@clinyong
clinyong / Promise.ts
Created July 23, 2018 02:50
Minimal promise implementation for JavaScript
View Promise.ts
class Promise() {
constructor() {
}
}
@clinyong
clinyong / event-pool.js
Last active July 5, 2018 03:48
Minimum react event pool
View event-pool.js
const eventPool = [];
const EVENT_POOL_SIZE = 10;
function SyntheticEvent(nativeEvent) {
this.nativeEvent = nativeEvent;
}
SyntheticEvent.prototype.persist = function persist() {
this.isPersistent = true;
};
@clinyong
clinyong / Transaction.js
Created August 19, 2017 08:58
react transaction demo
View Transaction.js
/**
* Copyright 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*
*
*/
@clinyong
clinyong / walkdir.js
Created February 24, 2017 14:52
walk directory
View walkdir.js
function walkDir(root) {
const stat = fs.statSync(root);
if (stat.isDirectory()) {
const dirs = fs.readdirSync(root).filter(item => !item.startsWith('.'));
let results = dirs.map(sub => walkDir(`${root}/${sub}`));
return [].concat(...results);
} else {
return root;
}
@clinyong
clinyong / arguments.js
Created February 24, 2017 00:57
将传入的参数转成数组
View arguments.js
var Thunk = function(fn){
return function (){
var args = Array.prototype.slice.call(arguments);
return function (callback){
args.push(callback);
return fn.apply(this, args);
}
};
};
@clinyong
clinyong / checkTS
Last active January 22, 2017 14:07
use tslint to check ts or tsx file before commit
View checkTS
#!/bin/sh
files=$(git diff --cached --name-only --diff-filter=ACM | grep -E "\.tsx?$")
if [ "$files" = "" ]; then
exit 0
fi
pass=true
for file in ${files}; do
View audio.js
var audioCtx = new AudioContext();
var source = audioCtx.createBufferSource();
fetch(
'http://7xsym0.com2.z0.glb.qiniucdn.com/%E9%82%93%E7%B4%AB%E6%A3%8B%20-%20A.I.N.Y.%2528%E7%88%B1%E4%BD%A0%2529.mp3', {
})
.then(function(resp){
resp.arrayBuffer().then(function(buffer){
audioCtx.decodeAudioData(buffer, function(decodedData) {