Skip to content

Instantly share code, notes, and snippets.

@zbinlin
zbinlin / checksum-node.js
Last active August 8, 2016 13:56
简单的验证和计算
"use strict";
function sum(buffer) {
let checksum = 0x0000;
let parity = buffer.length % 2;
for (let i = 0, len = buffer.length - parity; i < len; i += 2) {
checksum += buffer.readUInt16BE(i);
}
if (parity) {
checksum += buffer.readUInt8(buffer.length - 1) << 8 | 0x00;
@zbinlin
zbinlin / run.js
Created November 10, 2015 07:16
asyn run task
"use strict";
const format = date => date.toTimeString().split(" ")[0];
/**
* @param {string} [name=fn.displayName||fn.name||"UNKNOW"] task name
* @param {(Function|*)} fn task function
* @param {...} [...args] task function's arguments
* @returns {}
*/
@zbinlin
zbinlin / http-proxy.js
Created September 18, 2015 15:35
http proxy
"use strict";
let http = require("http");
let url = require("url");
let server = http.createServer();
server.on("request", function (req, res) {
let headers = {};
for (const key of Object.keys(req.headers)) {
@zbinlin
zbinlin / 1026.js
Created August 12, 2015 09:31
RegExp
let permut = (arr) => {
if (typeof arr === "string") {
arr = arr.split("");
}
if (arr.length === 1) {
return arr;
}
let rst = [];
for (let i = 0, len = arr.length; i < len; i++) {
let newArr = arr.slice();
@zbinlin
zbinlin / 1025.js
Created July 31, 2015 09:34
auto currying
/**
* Auto Currying
* @param {Function} fn
* @return {Function}
*/
function curring(fn) {
var fnLength = fn.length;
return (function next(argv) {
/*
* *: alnum
* #: digit
* @: alpha
*/
var alpha = [...("a").repeat(6)].map((c, i) => String.fromCharCode(c.charCodeAt(0) + i)).sort(() => Math.random() - 0.5);
var digit = [...("0").repeat(10)].map((c, i) => String.fromCharCode(c.charCodeAt(0) + i)).sort(() => Math.random() - 0.5);
var alnum = [].concat(alpha, digit).sort(() => Math.random() - 0.5);
var collect = {
"*": alnum,
@zbinlin
zbinlin / quoteString.js
Created February 1, 2015 08:39
quoteString
/**
* quote function
* @see {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/quote|MDN}
* @param {string} str
* @param {string} quote
* @returns {string} quote a string
*/
function quoteString(str, quote) {
str = "" + str;
quote = "" + (quote || "\"");
@zbinlin
zbinlin / debounce.js
Last active January 19, 2016 08:04
Debounce
/*
* @param {Function} func
* 需要进行去抖的函数
* @param {number} wait
* 去抖的时间间隔
* @param {boolean} [lead = false]
* 是否要在开始执行
* @returns {Function}
* 返回一个去抖函数
*/
@zbinlin
zbinlin / throttle.js
Created December 13, 2014 12:50
Throttle
/*
* @param {Function} func
* 需要进行节流的函数
* @param {number} wait
* 节流的时间间隔
* @param {boolean} [trail]
* 是否要在结尾执行
* @returns {Function}
* 返回一个节流函数
*/
@zbinlin
zbinlin / SpiralArray.js
Created December 8, 2014 14:47
spiral matrix
/*
* spiral matrix
* 根据给出的行(row)与列(col),生成一个螺旋数组([[x0, y0], .., [x, y]]])
* 如 row = 3, col = 4
* 01, 02, 03, 04
* 10, 11, 12, 05
* 09, 08, 07, 06
* 将生成:
* [[0, 0], [1, 0], [2, 0], [3, 0], [3, 1], [3, 2], [2, 2], [1, 2], [0, 2], [0, 1], [1, 1], [2, 1]]
*