Skip to content

Instantly share code, notes, and snippets.

View stormslowly's full-sized avatar
🎯
Focusing

pshu stormslowly

🎯
Focusing
View GitHub Profile
@stormslowly
stormslowly / machine.js
Last active December 26, 2019 02:02
Generated by XState Viz: https://xstate.js.org/viz
// Available variables:
// - Machine
// - interpret
// - assign
// - send
// - sendParent
// - spawn
// - raise
// - actions
import generate from "@babel/generator";
import {parse} from "@babel/parser";
import traverse from "@babel/traverse";
import {identifier, isIdentifier, isMemberExpression, memberExpression} from "@babel/types";
import * as fs from 'fs'
const file = process.argv[2]
const ast = parse(fs.readFileSync(file, 'utf-8’)) // 解析得到 ast
traverse(ast, {
CallExpression(path) { // 当遍历到“调用表达式”时进入此回调
if (isMemberExpression(path.node.callee) && // 被调用的函数来自一个成员表达
@stormslowly
stormslowly / collapse
Created March 1, 2019 04:32
time collapse using ffmpeg
#!/usr/bin/env node
const files = process.argv.slice(2)
const cmds = files.map(f =>
`ffmpeg -i ${f} -filter:v "setpts=PTS/30" -crf 20 -r 30 -an -threads 1 -y -vcodec libx264 ${f}.collapse.flv`)
console.log(cmds.join('\n'))
@stormslowly
stormslowly / benchmark.js
Created July 19, 2017 16:51
generate array contains 1 to 1e7
console.time("Array.push");
const array = [];
for (var i = 0; i < 1e7; i++) array[i] = i;
console.timeEnd("Array.push");
console.time("new Array.push");
const array1 = new Array(1e7);
for (var i = 0; i < 1e7; i++) array1[i] = i;
console.timeEnd("new Array.push");
[alias]
st = status
ci = commit
co = checkout
dt = difftool
lg = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen%cr %C(bold blue)<%an>%Creset'
lp = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen%cr %C(bold blue)<%an>%Creset'
ca = commit -a
[color]
ui = auto
@stormslowly
stormslowly / nginxproxy.md
Created January 6, 2017 03:43 — forked from soheilhy/nginxproxy.md
How to proxy web apps using nginx?

Virtual Hosts on nginx (CSC309)

When hosting our web applications, we often have one public IP address (i.e., an IP address visible to the outside world) using which we want to host multiple web apps. For example, one may wants to host three different web apps respectively for example1.com, example2.com, and example1.com/images on the same machine using a single IP address.

How can we do that? Well, the good news is Internet browsers

@stormslowly
stormslowly / download_egghead_videos.md
Last active December 13, 2016 14:19 — forked from ldong/download_egghead_videos.md
download *free* egghead videos

Download videos from egghead

Go to the egghead website, i.e. Building a React.js App

run

var links = $('h4 a').get().map(function(a){ return a.href}).join('\n')
copy(links)
@stormslowly
stormslowly / aiff2mp3.sh
Created January 8, 2016 00:27
convert to aiff to mp3
ffmpeg -i "17 Audio Track.aiff" -f mp3 -acodec libmp3lame -ab 192000 -ar 44100 17.mp3
vcl 4.0;
acl purgers {
"localhost";
"127.0.0.1";
"192.168.199.0"/24;
}
backend default {
.host = "localhost";
@stormslowly
stormslowly / ffmpeg usage memo.txt
Last active October 27, 2016 19:37
convert a m3u8 file to mp4 file
# you should download the files in m3u8 file first
ffmpeg -i the.file.m3u8 -acodec copy -vcodec copy -y -loglevel info -bsf:a aac_adtstoasc -f mp4 your-mp4-file.mp4
# First 10 Minutes
ffmpeg -i VIDEO_SOURCE.mp4 -vcodec copy -acodec copy -ss 0 -t 00:10:00 VIDEO_PART_1.mpg
# Second 10 Minutes
ffmpeg -i VIDEO_SOURCE.mp4 -vcodec copy -acodec copy -ss 00:10:00 -t 00:20:00 VIDEO_PART_2.mpg
# Rest after the first 20 Minutes
ffmpeg -i VIDEO_SOURCE.mp4 -vcodec copy -acodec copy -ss 00:20:00 VIDEO_PART_3.mpg