Skip to content

Instantly share code, notes, and snippets.

View idiotWu's full-sized avatar

Daofeng Wu idiotWu

  • Tokyo, Japan
  • 01:47 (UTC +09:00)
View GitHub Profile
@idiotWu
idiotWu / fake-observable.js
Created May 18, 2017 09:08
A fake observable
let currentCaller = null;
class FakeObservable {
constructor() {
this._value = null;
this._callers = new Set();
}
set(val) {
this._value = val;
@idiotWu
idiotWu / attach-events.js
Last active October 6, 2017 15:22
attach-events decorator for react
/**
* @decorator
* Attach events to DOM element
*
* @param {Element|Function} elemOrFunc: DOM Element, or a function returns element
* @param {String} events: a list events separated with ','
*
* Usage:
* @attachEvents(window, 'click')
* handleWindowClick(evt) {
@idiotWu
idiotWu / unlock.js
Last active November 19, 2017 11:53
Unlock netease music
const http = require('http');
const net = require('net');
const url = require('url');
const IP = '211.161.244.70';
const hosts = {
'p[1-4].music.126.net': 'cloudedge.chinanetcenter.com',
'm10.music.126.net': 'ws.acgvideo.com',
};
@idiotWu
idiotWu / Nyanaba.user.js
Last active November 28, 2018 12:45
nyan your reports
// ==UserScript==
// @name Nyanaba
// @namespace https://manaba.kic.kagoshima-u.ac.jp
// @version 0.1
// @description nyan your reports
// @author Dolphin Wood
// @match https://manaba.kic.kagoshima-u.ac.jp/ct/home
// @noframes
// ==/UserScript==
@idiotWu
idiotWu / nyan.js
Last active November 29, 2018 11:09
class Nyan {
constructor(speed = 3) {
this.x = 0;
this.y = 0;
this.max_x = 0;
this.max_y = 0;
this.vx = this.vy = speed;
const img = this.img = new Image();
img.src = 'http://www.nyan.cat/images/thumbs/balloon.gif';
@idiotWu
idiotWu / otsuka.js
Last active December 18, 2018 05:36
const src = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAKTWlDQ1BQaG90b3Nob3AgSUNDIHByb2ZpbGUAAHjanVN3WJP3Fj7f92UPVkLY8LGXbIEAIiOsCMgQWaIQkgBhhBASQMWFiApWFBURnEhVxILVCkidiOKgKLhnQYqIWotVXDjuH9yntX167+3t+9f7vOec5/zOec8PgBESJpHmomoAOVKFPDrYH49PSMTJvYACFUjgBCAQ5svCZwXFAADwA3l4fnSwP/wBr28AAgBw1S4kEsfh/4O6UCZXACCRAOAiEucLAZBSAMguVMgUAMgYALBTs2QKAJQAAGx5fEIiAKoNAOz0ST4FANipk9wXANiiHKkIAI0BAJkoRyQCQLsAYFWBUiwCwMIAoKxAIi4EwK4BgFm2MkcCgL0FAHaOWJAPQGAAgJlCLMwAIDgCAEMeE80DIEwDoDDSv+CpX3CFuEgBAMDLlc2XS9IzFLiV0Bp38vDg4iHiwmyxQmEXKRBmCeQinJebIxNI5wNMzgwAABr50cH+OD+Q5+bk4eZm52zv9MWi/mvwbyI+IfHf/ryMAgQAEE7P79pf5eXWA3DHAbB1v2upWwDaVgBo3/ldM9sJoFoK0Hr5i3k4/EAenqFQyDwdHAoLC+0lYqG9MOOLPv8z4W/gi372/EAe/tt68ABxmkCZrcCjg/1xYW52rlKO58sEQjFu9+cj/seFf/2OKdHiNLFcLBWK8ViJuFAiTcd5uVKRRCHJleIS6X8y8R+W/QmTdw0ArIZPwE62B7XLbMB+7gECiw5Y0nYAQH7zLYwaC5EAEGc0Mnn3AACTv/mPQCsBAM2XpOMAALzoGFyolBdMxggAAESggSqwQQcMwRSswA6cwR28wBcCYQZEQAwkwDwQQgbkgBwKoRiWQRlUwDrYBLWwAxqgEZrhELTBMTgN5+ASXIHrcBcGYBiew
@idiotWu
idiotWu / engine.c
Last active June 4, 2019 16:39
Simple timeline-based animation engine
/**
* Timeline based animation engine
*
* t
* ------+------------------------------------------> timeline
* +-----|-+
* | A | | <- animation{}
* +-----|-+
* +--|------+
* | | A |
@idiotWu
idiotWu / gist:db9a1c629200c04999283df90fab88cf
Created May 1, 2020 04:04 — forked from kyontan/gist:7678042
游書体を加えたCSS font-family
/* ヒラギノ角ゴ */
font-family: "ヒラギノ角ゴ Pro", "Hiragino Kaku Gothic Pro", "メイリオ", Meiryo, "MS Pゴシック", "MS PGothic", sans-serif;
/* ヒラギノ明朝 */
font-family: "ヒラギノ明朝 Pro", "Hiragino Mincho Pro", "MS P明朝", "MS PMincho", serif;
/* From: 游明朝体・游ゴシック体のCSSでの利用 - Qiita [キータ]
* http://qiita.com/shinnn/items/5be7e8106189311559c1
*/
const magnitude = {
'十': 1e1,
'百': 1e2,
'千': 1e3,
'万': 1e4,
'亿': 1e8,
};
const num = {};
@idiotWu
idiotWu / re-react-hook.js
Last active September 19, 2021 07:03
Reimplement react hooks
const hookMap = new WeakMap();
let currentContext = null;
let currentIndex = 0;
function load(component) {
if (!hookMap.has(component)) {
hookMap.set(component, []);
}