tee
read from stdin, write to stdout AND files.
curl https://github.com/fannheyward.keys | tee -a ~/.ssh/authorized_keys
fastlane notes
gem install fastlane -NV
.
fastlane match:
1. `fastlane match init` 初始化生成 `Matchfile`,设置私有仓库来保存密钥和证书。
2. `fastlane match development/appstore` 同步或生成证书及描述文件,多 target 可以通过 `--git_branch` 指定
3. `fastlane match nuke distribution` 吊销证书
fastlane gym --scheme X
编译打包。
fastlane pilot upload
上传 TestFlight.
fastlane deliver
上传 iTC.
Bash Set notes
set -u
不存在的变量报错中止set -e
发生错误时中止set -x
打印输出要执行的命令
Nginx limit_req
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=10r/s;
location /api {
limit_req zone=req_zone burst=10 nodelay;
}
rate 限定单位时间内的请求数,burst 限定缓冲队列长度。上面配置是用 client IP 做请求限制,单 IP 限制每秒钟最多十个请求,也就是每 100ms 只能有一个请求,如果 100ms 内有超过一个的请求到达,会被放进 buffer 队列,大小由 burst 指定,所以 100ms 内的第 11 个请求会被 503。
limit_req zone=req_zone;
- 严格按照 rate 来处理请求
- 超过 rate 处理能力的直接 drop
- 收到的请求无延时
limit_req zone=req_zone burst=5;
- 按照 rate 设置处理请求
- 设置一个大小为 5 的缓冲队列,在缓冲队列中的请求会被慢慢处理
- 超出 burst+rate 的请求会被直接 drop
- 收到的请求有延时
limit_req zone=req_zone burst=5 nodelay;
- 按照 rate 设置处理请求
- 设置一个大小为 5 的缓冲队列
- 峰值处理能力是 burst+rate,超出处理能力的请求被直接 drop
- 完成峰值请求后,缓冲队列不能再放入请求。假如
rate=10r/s
, 峰值后这段时间没有请求过来,则每 0.01s 缓冲队列恢复一个缓冲请求的能力,直到恢复能缓冲 5 个请求 - 收到的请求无延时
张姐
刚吃完老张给我们做的最后一顿午饭。
虽然我时不时的黑她做饭“黑暗料理”,她也会威胁我说“再黑我就一个月不做豆角”,但真的说从明天不再有她的午饭,还是很伤感的。
回去挺好,陪着三个孩子长大,祝一切顺利。
macOS 独立设置应用语言
英文系统下让某些应用的语言是中文,可以通过 defaults
设置:
defaults read
查找应用的 bundle IDdefaults write com.apple.Safari AppleLanguages '("zh-Hans-CN")'
设置应用语言为中文
cURL Notes
curl -c cookie.txt URL
: save cookies to cookie.txtcurl -b cookie.txt URL
: read cookie from cookie.txt and put into requestcurl -H 'User-Agent: FakeUA' URL
: set HTTP headercurl -I URL
: show header onlycurl -L URL
: follow 30x redirectcurl -o new_name/-O URL
: save response to filecurl -X POST --data "data=xxx" URL
: POST data to URLcurl -w "@curl-format.txt" URL
: format details of request, which you can use this to timing request:
➜ cat curl-format.txt
time_namelookup: %{time_namelookup}\n
time_connect: %{time_connect}\n
time_appconnect: %{time_appconnect}\n
time_redirect: %{time_redirect}\n
time_pretransfer: %{time_pretransfer}\n
time_starttransfer: %{time_starttransfer}\n
----------\n
time_total: %{time_total}\n
➜ curl -w "@curl-format.txt" -o /dev/null -s https://fann.im
time_namelookup: 0.015
time_connect: 0.015
time_appconnect: 0.329
time_redirect: 0.000
time_pretransfer: 0.329
time_starttransfer: 0.377
----------
time_total: 0.377
30
而立。
Converting MyISAM to InnoDB
如果数据量小且不在服务中,可以直接修改表结构:
ALTER TABLE table_name ENGINE=InnoDB;
然后现实是需要迁移表的数据量往往很大,不好直接 ALTER。一个办法是导出-修改表结构-导入,需要修改的有表名,engine,导入后重命名新/旧表。需要注意的是 mysqldump 默认有 DROP TABLE
命令,需要去掉,不然导入时候会直接删掉旧表。
还有一个方法是按照旧表结构新建表,将数据从旧表导入新表:
CREATE TABLE innodb_table LIKE mytable;
ALTER TABLE innodb_table ENGINE=InnoDB;
INSERT INTO innodb_table SELECT * FROM mytable;
数据量大的话可以事务处理:
START TRANSACTION;
INSERT INTO innodb_table SELECT * FROM mytable WHERE id BETWEEN x AND y;
COMMIT;
数据验证完整后重命名:
RENAME TABLE mytable TO mytable_old, innodb_table TO mytable;
//DROP TABLE mytable_old;