Skip to content

Instantly share code, notes, and snippets.


Shawn Wang iShawnWang

Block or report user

Report or block iShawnWang

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
iShawnWang / useRouter.ts
Last active Jul 27, 2019
react-router backward hooks, support react-router 4.x | 5.x
View useRouter.ts
import { __RouterContext as RouterContext, RouteComponentProps } from 'react-router'
import { useContext, useMemo, useCallback } from 'react'
import qs from 'qs'
import { Location } from 'history'
interface ParsedQuery {
[whatever: string]: any
export const useRouter = <T>(): RouteComponentProps<T> =>
View json_parser.js
// This is a coding exercise of implementing a parser. Some minor parsing capabilities are not implemented.
// The algorithm are mainly from Douglas Crockford's ''
function json_parse(str) {
var i = 0
var ch = str[i]
// core function that recursively called to move forward scanning pointers and accept tokens
function next(c) {
if (c) {
webfrogs /
Created Mar 30, 2017
Output swift function information whose compile time is large than 100ms
xcodebuild -workspace XXX.xcworkspace -scheme XXX clean build OTHER_SWIFT_FLAGS="-Xfrontend -debug-time-function-bodies" | grep '^\d\{3,\}[.]\{1\}'
QinMing / .zshrc
Last active Oct 12, 2019
.zshrc (lazy loading shell functions)
View .zshrc
# Copyright (c) 2016-2018 Ming Qin (覃明) <>
# Open source under MIT LICENSE.
plugins=(zsh-autosuggestions git pip django docker docker-compose)
# ......
unsetopt AUTO_CD
slavafomin /
Last active Oct 12, 2019
Custom ES6 errors in Node.js

Here's how you could create custom error classes in Node.js using latest ES6 / ES2015 syntax.

I've tried to make it as lean and unobtrusive as possible.

Defining our own base class for errors


# lazyload nvm
# all props goes to
# grabbed from reddit @
lazynvm() {
unset -f nvm node npm npx
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/" ] && . "$NVM_DIR/" # This loads nvm
if [ -f "$NVM_DIR/bash_completion" ]; then
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
remarkablemark / Dockerfile
Last active Oct 14, 2019
Install node and npm with nvm using Docker.
View Dockerfile
# set the base image to Debian
FROM debian:latest
# replace shell with bash so we can source files
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
# update the repository sources list
# and install dependencies
RUN apt-get update \
View Enable crontab log MAC
1. `vim /etc/syslog.conf`
2. Add to end of file: `cron.* /var/log/cron.log`
sudo launchctl unload /System/Library/LaunchDaemons/
sudo launchctl load /System/Library/LaunchDaemons/
52cik /
Last active Oct 12, 2019
npm 淘宝镜像配置
npm set registry # 注册模块镜像
npm set disturl # node-gyp 编译依赖的 node 源码镜像
## 以下选择添加
npm set sass_binary_site # node-sass 二进制包镜像
npm set electron_mirror # electron 二进制包镜像
npm set puppeteer_download_host # puppeteer 二进制包镜像
npm set chromedriver_cdnurl # chromedriver 二进制包镜像
npm set operadriver_cdnurl # operadriver 二进制包镜像
npm set phantomjs_cdnurl # phantomjs 二进制包镜像
You can’t perform that action at this time.