Skip to content

Instantly share code, notes, and snippets.

/*
* *: 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 / 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) {
@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 / 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 / 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 / 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;
/*
* version: 0.0.4
*
* infiniteScrolling(document.querySelector("ul"), function (el, done) {
* // 在此可通过 ajax 去获取分页的数据,然后可以把数据插入到 el 内(el 即是 document.querySelector("ul"))
* // 当插入数据完成后,如果不是最后一页,必须调用 done()。
* }, 100); // 100 表示 ul 距离视口 100px 触发 callback 函数,此参数可以省略,如果省略,则距离 ul 的最后一个元素
*/
;(function (root, factory) {
@zbinlin
zbinlin / shared-session-storage.html
Last active December 7, 2016 03:16
shared session storage
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<button onclick="changeColor()">Change Color</button>
<script src="./shared-session-storage.js"></script>
<script>
/**
* For Google Voice
* @Author zbinlin <[email protected]>
*/
var sleep = delay => new Promise(resolve => setTimeout(resolve, delay));
var composeClick = function x(btn) {
var rect = btn.getBoundingClientRect();
var x = Math.floor(rect.clientX + rect.width * Math.random());
var y = Math.floor(rect.clientY + rect.height * Math.random());
@zbinlin
zbinlin / test.md
Last active July 13, 2018 08:11
test

[基础] 实现一个简单的闭包。

function count() {
    var i = 0;
    return function _next_() {
        return i++;
    };
}