持续更新中…
1. Golang
- 使用 trimpath 移除编译路径,避免暴露编译路径信息
| |
添加之前异常输出路径 /Users/shaowenchen/Code/Github/ops/main.go,添加之后异常输出路径 main.go 。
- -ldflags “-w -s” 移除调试信息,减小二进制文件大小
| |
添加之前 55 MB,添加之后 44 MB。
2. Python
- 提前编译生成 pyc 文件
| |
虽然 pyc 可以被反编译,但这么做可以增加一点难度。通常启动配置文件被编译之后,不会移除源码,这是为了部署时调试。
3. Node
- 提交 yarn.lock 文件,生产时使用
--frozen-lockfile锁定依赖
| |
package.json 用于指定版本范围,而 yarn.lock 锁定精确版本。
使用 yarn install, 如果 package.json 依赖版本与 yarn.lock 冲突,会更新 yarn.lock 文件。
--frozen-lockfile 锁定依赖版本,不会更新 yarn.lock 文件,也大大节省了安装时间,避免卡在 Building fresh packages。但需要注意检查一下 yarn.lock 中的文件链接是否符合预期,比如是否使用的内网等。
- 安装依赖包时 ESOCKETTIMEDOUT
| |
或者
| |
将超时时间从默认的 30s 改为 300s。
另一种说法是,磁盘慢了,导致安装依赖包超时,可以尝试升级试试。
4. Makefile
-j开启多线程构建
| |
-j 默认使用与 CPU 核心数相同的线程数,可以使用 -j 4 指定线程数。
虽然并行构建的效率高,如果有依赖关系可能导致构建失败,同时排查问题也会更复杂。
5. 平台侧
- Docker 无法拉取 v1 镜像格式
| |
如果你使用的 Docker 版本小于 19.03,可以在 /etc/docker/daemon.json 中设置 "disable-legacy-registry":true,重启 Docker 即可。或者在 Docker Client 命令中添加 --disable-legacy-registry 参数拉取。
原因在于 v1 镜像格式已经被弃用,Docker 新版本已经不再支持 v1 镜像格式。
- 使用 buildx
使用 buildx 能更好使用缓存。但 Docker 默认不安装 buildx,需要手动安装。
对于 linux 系统,先去 buildx release 页面下载对应的二进制文件 https://github.com/docker/buildx/releases ,然后将二进制文件重命名为 docker-buildx,放到 $HOME/.docker/cli-plugins 目录下即可。
