整理自「开发 Tips」系列,汇总常用开发工具与效率提升相关技巧。
1. Babel 转码器
ES6 提供了许多新特性,但并不是所有的浏览器都能够完美支持,ES5 支持得好很多。Babel 是一个 ES6 转码器,可以将 ES6 代码转为 ES5 代码。这意味着,你可以用 ES6 的语法编写程序,又不用担心现有环境是否支持。
| |
Babel 的配置文件是 .babelrc ,存放在项目的根目录下。使用该文件设置转码规则和插件,基本格式如下:
| |
2. Badge 生成器
开源项目的文档中,通常会添加各种 Badge 。这些 Badge 有的是写死的,有的是第三方工具动态获取的。推荐 http://shields.io/ 可以非常方便的生成各种 Badge 。
3. 代码统计工具 - Cloc
Cloc 是一款使用 Perl 语言开发的开源代码统计工具,支持多平台、多语言,能够计算指定目标文件或文件夹中的文件数(files)、空白行数(blank)、注释行数(comment)和代码行数(code)。
Windows 下,可以先下载安装 msys2,使用 $pacman -S cloc 安装 Cloc,然后统计:
| |
4. 监控 Celery 的工具 - Flower
Flower 是基于 Web 的 Celery 监控和管理工具。提供的功能有:
- 查看 worker 状态和统计信息
- 关闭和重启 worker 实例
- 控制 worker 池的大小
- 显示 task 详细信息
- 查看当前运行的 task
- 查看 tasks 的调度
- 唤醒和终止tasks
- …
安装:
| |
运行:
| |
打开:http://localhost:5555,访问:

5. 远程控制工具 - TeamViewer
由于,目前(2018.11)Mac OS X 的 QQ 不支持远程协助。推荐另外一个远程控制软件:
TeamViewer 兼容于 Microsoft Windows、Mac OS X、Linux、iOS、Android 操作系统,也可以通过网页浏览器连线已安装 TeamViewer 的计算机。
6. 性能测试 - Locust
Locust 是开源、使用 Python 开发的性能测试工具。它基于事件、支持分布式,并且提供 Web UI 进行测试执行和结果展示。由于使用的是 gevent 的协程并发机制,在并发量上 Locust 显著优于其他同类工具。
安装:
| |
编写一个测试用例:
test.py
| |
执行测试:
| |
Web UI 访问,打开链接: http://localhost:8089/
7. pandoc 简单使用技巧
Pandoc 是由 John MacFarlane 开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的 “瑞士军刀”。
Pandoc 使用 Haskell 语言编写,以命令行形式实现与用户的交互,可支持多种操作系统。
下载地址: https://github.com/jgm/pandoc/releases/ 。
Pandoc 的基本指令格式是:
| |
简单的格式转换:
| |
其中 -o ouput.html 表示输出文件为 output.html,input.md 是输入文件。
Pandoc 会根据文件的后缀名自动判断格式,用户也可以显式地指定输入文件和输出文件格式:
| |
其中 -f markdown 表示输入文件格式为 Markdown,-t html 表示输出文件格式为 HTML。
详细的指令参数请参见 Pandoc 用户手册。
8. 会话管理工具 tmux
tmux 是一个终端复用工具。用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板,对于同时使用多个命令行,或多个任务时非常方便。
在 OS X 中使用 brew 进行安装:
| |
下面是一些常用的命令:
- 创建一个新的会话
| |
- 断开当前会话
| |
- 进入会话
| |
简写 tmux a -t session_name
- 关闭会话
| |
- 查看所有会话
| |
简写 tmux ls(快捷键:Ctrl+b+s)
- 关闭所有会话
| |
- 切换到某一会话
| |
- 重命名会话
| |
如果提示 sessions should be nested with care, unset $TMUX to force ,执行 unset TMUX 即可。
9. 使用 rclone 挂载 OneDrive 到服务器
Rclone 能够方便的管理 OneDrive、Google Drive、Amazon Drive 等各种云盘和对象存储,支持挂载盘符、命令行上传下载文件。
- 安装
| |
- 本地授权
需要先安装 rclone ,然后执行:
| |
在页面登陆 OneDrive 账号,授权成功后,将整个 Token: {"access_token":"","expiry":""} 拷贝备用。
- 服务器端配置
需要先安装 rclone ,然后执行:
| |
按照提示输入相关信息,仅当提示如下信息时:
| |
选择 n,在 result 中输入上面拷贝的 Token Json 字符串。继续配置,最后保存即可。
- 挂载 OneDrive
| |
- DriveName 是新增时填入的 name
- Folder 为 OneDrive 上的文件夹
- LocalFolder 为服务器上的文件夹
例如,rclone mount onedrive:Code /data --copy-links --no-gzip-encoding --no-check-certificate --allow-other --allow-non-empty --umask 000& ,就是将 OneDrive 上 Code 目录挂载到本地 /data 目录。
如果提示 fuse 相关错误,执行 yum install -y fuse 即可解决。
10. VS Code 终端执行 .bash_profile 初始化脚本
通过添加启动命令参数,可以使得打开 shell 时,执行初始化脚本 .bash_profile 。
编辑 settings.json,以 OS X 为例,新增如下内容即可:
| |
11. VS Code 配置 zsh 后,图标无法显示
由于安装补丁字体之后,VS Code 无法自动检测到,需要在 settings.json 中进行配置。
| |
参考: https://gist.github.com/kevin-smets/8568070
12. OS X 制作 CentOS 启动盘
- 查看 U 盘的挂载点
| |
- 卸载 U 盘
| |
- 写入 ISO 镜像
| |
if 参数指定待写入文件位置,of 参数指定输出文件位置,这里的意思是,将镜像写入到 U 盘中。需要注意的是,rdisk2 表示的是 disk2 的原始盘,bs=1m 表示写入块的大小为 1MB ,目的是为了更快写入数据。
可以通过 Ctrl + T 查看写入进度。
- 弹出 U 盘
大约几分钟之后,写入完毕。弹出 U 盘:
| |
13. 如何运行一个 Go 写的项目
通过 Readme 文档、Makefile 文件、脚本,通常可以快速了解如何运行一个 Go 写的项目。但有时,由于资料不完善,需要自己尝试摸索。
13.1 包含 Gopkg.lock 和 Gopkg.toml 文件的项目
Gopkg.local 和 Gopkg.toml 是 dep 用于包管理的两个文件,需要将项目拷贝到 $GOPATH/src 目录下。
如果项目目录下,还有 vendor 目录,可以找到入口文件(通常是 main.go ),直接执行编译命令。
| |
如果没有 vendor 目录,则需要首先安装依赖包。
- 安装 dep
| |
- 安装依赖
| |
dep 会将依赖安装到当前项目的 vendor 目录下。安装完毕,再执行编译命令。
13.2 包含 go.sum 和 go.mod 文件的项目
go.sum 和 go.mod 是 Go Modules 用于包管理的两个文件。
如果项目下有 vendor 文件夹,那么直接编译即可。
| |
如果项目下没有 vendor 文件夹,则需要首先安装依赖包。
go module 是 go 1.11 版本内置的特性,不需要安装。安装依赖包:
| |
14. 打开 OS X 原生 NTFS 支持
- 插上磁盘,查看盘符
| |
这里的 SSD 就是 Volume Name。
- 更新 /etc/fstab文件
| |
输入密码,然后输入 LABEL=SSD none ntfs rw,auto,nobrowse,其中 SSD 为 Volume Name。
按 Ctrl + X,接着按 Y 保存。
- 创建访问链接
| |
SSD 为 Volume Name ,需要更具具体情况替换。
15. Secure shell Extension 插件 NaCI 退出,状态 255
报错原因是本地保存的指纹信息与主机信息不符。
解决办法:
在 shell 窗口,按下 Ctrl+Shift+J 进入调试窗口,在 console 执行:
| |
清空 known_hosts 即可。
16. Azure 镜像代理
在国内的服务器上,拉取某些镜像速度较慢,或根本就无法拉取。Azure 提供了容器仓库的镜像代理服务。
| 无法拉取的镜像源 | 替换之后的镜像源 |
|---|---|
| k8s.gcr.io | gcr.azk8s.cn/google_containers |
| docker.io | dockerhub.azk8s.cn |
| gcr.io | gcr.azk8s.cn |
| quay.io | quay.azk8s.cn |
17. watch 命令
watch 命令可以周期性地执行指定的命令。
常用参数:
- n,间隔时间,默认值 2 秒
- d,高亮显示变化区域
使用示例:
- 每隔 1 秒高亮显示网络链接数的变化情况
| |
- 每隔 3 秒输出一次系统的平均负载
| |
- 每隔 0.5 秒发一次请求
| |
18. VS Code Terminal 字体异常
由于在 OS X 下,VS Code 配置 zsh 后,图标无法显示。需要将 terminal 字体设置为 Source Code Pro for Powerline。而这个字体并不是各个操作系统的内置字体。下面是安装该字体的步骤:
下载字体:
| |
安装字体:
- Windows
将字体移动到 C:\WINDOWS\Fonts 下。
- Linux
| |
- OS X
| |
19. VS Code 远程开发插件
VS Code 推出了官方远程开发插件扩展。工作原理是,将 VS Code 划分为客户端和服务端,客户端主要负责 UI 部分,服务端主要负责完成开发需求。
下面是架构图:

Remote Development 套件相关的插件主要有三个:
- Remote SSH
通过 SSH 连接到 Linux 服务器,部分系统版本可能需要调整(升级 glibc、libstdc++ 等)。
- Remote Containers
允许将本地文件夹挂载到指定的 Docker 容器。可以使用本地文件夹中的 Dockerfile 、docker-compose.yml ,也可以直接挂载到已经存在的容器中。
- Remote WSL
连接到已经运行的 Windows Subsystem for Linux 环境。
上面所有插件远程连接之后的效果是,可以在本地 VS Code 上编辑远程文件目录,同时打开命令行时已经连接上远程终端。
20. OS X 上,执行 git 命令报错,xcrun: error
升级最新版本 OS X 之后,执行 git pull 命令,提示错误:
| |
需要安装 Xcode toolkit :
| |
如果依然报错,可以尝试重置:
| |
21. DNS 的 SPF 记录
在发送邮件时,由于发件人可以任意指定,收件人无法验证发件人是否真实。SPF 就是为了解决伪造发件人问题。
例如,收件方收到来自主机 IP 10.10.10.10 的邮件,声称发件人为 admin@domain.com。为了验证发件人信息,收件方会去查询 SPF 记录,是否允许 IP 10.10.10.10 的主机发送邮件。如果不允许,则退信或当作垃圾邮件。
相关原理和配置可以参考文档,SPF 记录:原理、语法及配置方法简介
。
22. kubebuilder 安装脚本
| |
