Skip to content

Instantly share code, notes, and snippets.

View stormslowly's full-sized avatar
🎯
Focusing

pshu stormslowly

🎯
Focusing
  • Hangzhou, Zhejiang, China
View GitHub Profile
@stormslowly
stormslowly / main.rs
Created March 21, 2024 09:43
swc_css_parser_memory_leak_example
use swc_core::common::{FileName, SourceMap};
use swc_core::common::input::StringInput;
use swc_core::common::sync::Lrc;
use swc_core::css::parser::{parser, lexer};
fn main() {
let cm = Lrc::<SourceMap>::default();
let fm = cm.new_source_file(
FileName::Custom("test.css".into()),
@stormslowly
stormslowly / main.rs
Created October 18, 2023 10:10
hash a stylesheet of swc
use std::hash::{Hash, Hasher};
use swc_common::{FileName, SourceMap};
use swc_common::input::StringInput;
use swc_common::sync::Lrc;
use std::borrow::Borrow;
fn main() {
let cm: Lrc<SourceMap> = Default::default();
let fm = cm
@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