Skip to content

Instantly share code, notes, and snippets.

Avatar

Bruce He HeGanjie

View GitHub Profile
@HeGanjie
HeGanjie / geo2screen.ts
Created Sep 11, 2021
自适应坐标转换工具类
View geo2screen.ts
import * as d3Scale from "d3-scale"
import _ from "lodash";
export interface MappingInfo {
onWindowSize: number[]
screenA: number[]
geoA: number[]
screenB: number[]
geoB: number[]
}
@HeGanjie
HeGanjie / tailwind.config.js
Last active Jul 12, 2021
tailwindcss with px2rem
View tailwind.config.js
module.exports = {
purge: ['./src/**/*.html', './src/**/*.tsx', './src/**/*.ts'],
darkMode: false, // or 'media' or 'class'
theme: {
// https://github.com/tailwindlabs/tailwindcss/issues/1232
// using px2rem, 1rem = 100px for 1920 screen
fontSize: {
"xs": "0.12rem",
"sm": "0.14rem",
"base": "0.16rem",
@HeGanjie
HeGanjie / document.ejs
Last active Dec 13, 2020
rem 全屏自适应逻辑,1080p下 1rem=100px
View document.ejs
<!doctype html>
<html style="font-size: 100px">
<head>
<meta charset="utf-8" />
<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no" />
<% if (context.title != null) { %>
<title><%= context.title %></title>
<% } %>
View combination.js
// in: [['xxx'], ['yyy', 'zzz'], ...]
// out: [['xxx', 'yyy', ...], ['xxx', 'zzz', ...]]
function calcCombination(options) {
if (_.isEmpty(options)) {
return [[]]
}
let [firstOpt, ...rest] = options
let remainCombinations = calcCombination(rest)
return _.flatMap(remainCombinations, rc => {
return firstOpt.map(o1 => [o1, ...rc])
View one-line-port-forward.sh
# https://unix.stackexchange.com/questions/10428/simple-way-to-create-a-tunnel-from-one-local-port-to-another
ssh -L -R # limit for 0.0.0.0
watch -n0 busybox nc -l -p 3389 -e /bin/nc 127.0.0.1 8000 # have restart time gap
socat tcp-listen:443,reuseaddr,fork tcp:localhost:8080 # need install
# can not install socat, compile yourself? https://github.com/cornerpirate/socat-shell
@HeGanjie
HeGanjie / common-styled-component.jsx
Last active Feb 23, 2020
Allow you quickly style a div like this: <Box mg10x pd20y textCenter width300 itblock font20 color-white bold />
View common-styled-component.jsx
import styled from '@emotion/styled'
import _ from 'lodash'
const DirectDict = {
t: [0],
r: [1],
b: [2],
l: [3],
x: [1, 3],
@HeGanjie
HeGanjie / a.sh
Created Apr 23, 2018
quick run typescript
View a.sh
npx -p typescript -p ts-node -c "nodemon --watch 'src/**/*.ts' --ignore 'src/**/*.spec.ts' --exec 'ts-node' src/server/app.ts"
debug:
npm i ts-node --no-save
npx -p typescript -p ts-node -c 'node -r ts-node/register --inspect-brk src/server/app.ts'
npx webpack --progress
@HeGanjie
HeGanjie / app.js
Last active Feb 1, 2018
Lite http dynamic proxy in js
View app.js
// https://imququ.com/post/web-proxy.html
// test cmd:
// curl --proxytunnel -x http://localhost:8000 --proxy-basic --proxy-user a:b httpbin.org/get
var http = require('http')
var net = require('net')
var url = require('url')
function connect(cReq, cSock) {
let u = url.parse('http://' + cReq.url)
View circular-progress.jsx
import React from 'react'
import * as d3 from 'd3'
export default class CircularProgress extends React.Component {
constructor(props) {
super(props);
this.state = {
aProgress: props.min
}
View android-flex.css
.flex {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
.flex.flex--reverse {
-webkit-box-orient: horizontal;