Skip to content

Instantly share code, notes, and snippets.

View songlairui's full-sized avatar
🌴
On vacation

lary songlairui

🌴
On vacation
  • Bytedance
  • ShenZhen
View GitHub Profile
@songlairui
songlairui / adminer.css
Last active April 4, 2024 16:58
Minimalist Adminer Theme (only override default theme color)
:root {
--fg: #eed;
--bg: #000;
--text-accent: #eee;
--text-1-accent: #eee;
--text-2-accent: #eea;
--text-link: #fe9;
--text-link-dark: #cc7;
--text-second: #eee;
--text-input: #ddd;
@songlairui
songlairui / hack-router-require.js
Created September 8, 2020 10:27
require 项目中 route 获取去除 component 的内容
/* eslint-disable node/no-deprecated-api */
const fs = require('fs')
const t = require('@babel/types')
const parser = require('@babel/parser')
const generator = require('@babel/generator').default
const traverse = require('@babel/traverse').default
/**
* 将 es6 的 routes 转为 cjs 用于 node 脚本直接使用
@songlairui
songlairui / complex-git-status.md
Created March 28, 2020 12:57
git 常用命令

git 常用状态命令

分支对比 git rev-list

# 查询分支间 up and down
git rev-list --left-right ${base_commit}...${compare_commit}

# 支持传入 commit 和 分支名
git rev-list --left-right 1520533d110efae320801bde33770ac9fc1fee8a...origin/master
@songlairui
songlairui / detective-vue-with-alias.polyfill.js
Last active March 7, 2020 02:55
madge 识别 vue 单文件组件. 支持 alias 需添加 filing-cabinet 参数
const precinct = require('precinct')
const compiler = require('vue-template-compiler')
const fs = require('fs')
const path = require('path')
const cabinet = require('filing-cabinet')
const debug = require('debug')('vue-madge polyfill');
// 修饰 precinct.paperwork, 令之遇到vue文件, 去除template部分, 当作js文件处理
function decoratePrecinct() {
@songlairui
songlairui / rsync_test.sh
Created December 4, 2019 05:24
测试 Rsync SRC 末尾带 / 的表现
#!/bin/sh
## [without test folder created] create ~/test/test Then put files
## [with test folder created] create ~/test/test Then put files
rsync -avz --exclude='node_modules/' --exclude='_static/' ./test ali:test
## [without] create ~/test Then put files
## [with] create ~/test Then put files
rsync -avz --exclude='node_modules/' --exclude='_static/' ./test/ ali:test
@songlairui
songlairui / gen_cert.js
Created November 29, 2019 10:19
generate self signed cerifcate. chrome, android mobile, traefik 生成自签名证书, 可用于 chrome 浏览器,安卓手机,traefik本地证书
var fs = require("fs");
var selfsigned = require("selfsigned");
const SITE_PATTERN = "*.local.dev";
var attrs = [
{ name: "commonName", value: SITE_PATTERN },
{ name: "countryName", value: "cn" },
{ name: "localityName", value: "sz" },
{ name: "stateOrProvinceName", value: "gd" },
@songlairui
songlairui / open-tmux.js
Last active November 25, 2019 17:28
Tmux open with multi-pane within different working dir. 使用tmux快速切换到多个工作目录。
/**
* 使用 nodejs 打开
*/
const { spawnSync } = require("child_process");
// 关闭 tmux-session
spawnSync("tmux", ["kill-session", "-t", "developing"]);
// 打开上方 `open-tmux.sh`
spawnSync("osascript", [
@songlairui
songlairui / generic_key.ts
Created November 22, 2019 10:51
Typescript 用法探索
/**
* interface OOO { o: string }
* key in keyof OOO
* 等价于 key in 'o' | 'o'
* 等价于 key in 'o'
* 一定程度绕过直观上需要传入generic type的场景 function t<T,B>():<T<B>>{return {} as any}
*/
function geta<KEY extends string = 'data'>(aa: string) {
const b: { [key in KEY]: any } = {
@songlairui
songlairui / tmp-electron-next
Created November 4, 2019 05:08
electron next 多inst
'use strict';
var __importDefault =
(this && this.__importDefault) ||
function(mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
var __importStar =
(this && this.__importStar) ||
function(mod) {
if (mod && mod.__esModule) return mod;
@songlairui
songlairui / Dockerfile-vs-remote
Created June 11, 2019 09:03
VSCode 远程 Container 使用zsh
#-------------------------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
#-------------------------------------------------------------------------------------------------------------
FROM node:lts
# Configure apt
ENV DEBIAN_FRONTEND=noninteractive