Skip to content

Instantly share code, notes, and snippets.

@uinz
uinz / p-map.ts
Last active March 16, 2018 17:37
promise map concurrency
export function promiseMap<T>(iterable: T[], mapper: (item: T, index?: number) => void, concurrency?: number) {
if (!concurrency) {
return Promise.all(iterable.map(mapper));
}
return new Promise((resolve, reject) => {
let ongoing = 0;
let completed = 0;
const result = Array(iterable.length);
const promiseGens = iterable.map((item, index) => {
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Ansi 0 Color</key>
<dict>
<key>Blue Component</key>
<real>0.12923833727836609</real>
<key>Color Space</key>
<string>Calibrated</string>
git checkout . && git clean -xdf
function formate(num) {
return num.toFixed(8).replace(/(.+\.\d\d+?)(0+?)$/, '$1')
}
formate(0.10000) // 0.10
formate(0.111111000) // 0.111111
@uinz
uinz / reconnect-ws.ts
Last active March 26, 2018 15:23
reconnect ws
import { EventEmitter } from 'events';
import * as SocksProxyAgent from 'socks-proxy-agent';
import * as WebSocket from 'ws';
export class WS extends EventEmitter {
private instance?: WebSocket;
constructor(
private url: string,
private proxy?: string
@uinz
uinz / note.md
Last active March 29, 2018 13:22
所谓FLIP

首先我是被这个动画效果吸引到的, 效果好棒

说用到 FLIP (First, Last, Invert, Play) 不要被英文单词吓到, 原理可能比你想象的简单

虽然它很简单, 但也是为了解决一些问题才提出来的.

这个FLIP 要做的事情呢, 就是提高动画的帧率 但是呢, 浏览器这个东西吧, 就是比较矫情, 主要有一下2个特点

  1. 浏览器 transition 对 opacity transform 的动画会采用 GPU 加速
@uinz
uinz / tail.js
Last active March 30, 2018 03:32
尾递归优化
'use strict';
function fibonacci(n) {
if (n <= 1) {
return 1
};
return fibonacci(n - 1) + fibonacci(n - 2);
}
function fibonacciTail(n, ac1 = 1, ac2 = 1) {
@uinz
uinz / curry.js
Created March 30, 2018 05:55
curry
function curry(func) {
return function caller(...args) {
if (args.length >= func.length) {
return func(...args)
} else {
return (..._args) => caller(...args, ..._args)
}
}
}
@uinz
uinz / decorator.js
Created July 5, 2018 13:16
Decorator babel 与 typescript 兼容
export function decoratorName() {
return function(target, prop, descriptor) {
if (descriptor) {
if (descriptor.value) {
// Typescript & @decorator method() { }
const originFunction = descriptor.value;
descriptor.value = function(...args) {
// @TODO:
return originFunction(...args);
};
@uinz
uinz / group.ts
Last active July 25, 2018 08:51
求给定数组 arr, 求 和为 num 的组合
function sum(arr: number[]) {
return arr.reduce((r, n) => r + n, 0);
}
function group(arr: number[], num: number) {
const result = [];
(function loop(unselectedList = [], selectedList = []) {
if (unselectedList.length === 0) {