Skip to content

Instantly share code, notes, and snippets.

@ficapy
ficapy / leetcode.go
Created April 22, 2021 08:30
open leetcode with the serial number
package main
import (
"fmt"
"os"
"os/exec"
"strconv"
"strings"
)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Author: Ficapy
# Create: '16/3/4'
# !/usr/bin/env python
import ftplib
import hmac
import subprocess, json, base64, binascii, time, hashlib, re, copy, textwrap
@ficapy
ficapy / analysis.py
Created April 12, 2021 05:23
jetbrains plugin development with Kotlin
# var a = new Array()
# document.querySelectorAll('.text-ellipsis').forEach(items=>{a.push(items.title)})
# console.log(a.join('\n'))
# git clone https://github.com/intellij-rust/intellij-rust --depth=1 || true
# ...
# ls -1 | xargs -I{} scc -f json {} | jq '.[] | select(.Name == "Kotlin") | .Code' | pbcopy
# ls -1 | pbcopy
# CPS + 高阶函数可以将递归改写成尾调用,使用Trampoline即可避免爆栈
def cpsF(x,count):
if x == 0:
count(1)
else:
cpsF(x-1,lambda y:count(x*y))
cpsF(257,print)
@ficapy
ficapy / readme.txt
Created March 22, 2021 04:40
recursion
一个纯函数,输出只取决于输入
使用最简单的情况举例,一个递归函数只存在一个递归调用
该递归调用讲函数分成三个部分,
1. 递归基 + 准备部分
2. 递归调用部分
3. 递归调用之后的部分
其中第一部分的 准备部分 可以影响递归调用的参数值
第三可以使用递归返回的值(写的时候可以认为这个值来自未来,或者有些更简单的情况,明显能感受到它就是从后往前在处理)
@ficapy
ficapy / redis.conf
Created March 13, 2021 09:07
redis.conf 中文翻译 版本6.2.1
# Redis configuration file example.
#
# Note that in order to read the configuration file, Redis must be
# started with the file path as first argument:
# 注意,为了读取配置文件,Redis必须以文件路径作为第一个参数启动。
#
# ./redis-server /path/to/redis.conf
# Note on units: when memory size is needed, it is possible to specify
macOS 10.15.7
env SDKROOT="/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk" CFLAGS="-I/usr/local/opt/openssl/include -I/usr/local/opt/readline/include -I/Library/Developer/CommandLineT
ools/SDKs/MacOSX.sdk/usr/include" CPPFLAGS="-I/usr/local/opt/zlib/include" LDFLAGS="-L/usr/local/opt/openssl/lib -L/usr/local/opt/readline/lib" asdf install python 3.9.0
python-build 3.9.0 /Users/ficapy/.asdf/installs/python/3.9.0
python-build: use openssl@1.1 from homebrew
python-build: use readline from homebrew
// https://hackernoon.com/currying-in-js-d9ddc64f162e
function curry1(fn) {
function nest(N, args) {
return (...xs) => {
if (N - xs.length === 0) {
return fn(...args, ...xs);
}
return nest(N - xs.length, [...args, ...xs]);
};
def traverse(root):
stack, ret = [root], []
while stack:
cur = stack.pop()
if isinstance(cur, Node):
# stack.extend([cur.right, cur.left, cur.val]) # <- 前序遍历
# stack.extend([cur.right, cur.val, cur.left]) # <- 中序遍历
stack.extend([cur.val, cur.right, cur.left]) # <- 后序遍历
elif isinstance(cur, int):
ret.append(cur)