持续更新中…
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
目录下即可。