成吨提高开发效率的终极武器——自己开发workflow
之前曾写过一篇文章:如何大幅度提高 Mac 开发效率,主要介绍了各种提高 Mac 效率的方法,美中不足的是忘记了介绍神器 Alfred。
更大的问题在于,不管是 Alfred 还是其他的应用,我们都是被动的使用者。也就是说我们只能学习如何使用现有的工具,却不能利用自己的编程技能去提高效率,而所谓的工具,唯一的目的和价值就是提高自己的工作效率,解决痛点,而非被人学习如何使用。
这篇文章的主要目的就是介绍如何在 Alfred 打造自己的 workflow,从而能自己发现、并解决那些可以被自动化脚本取代的、无聊的工作。作为示范,我提供了两个插件:
- 快速打开&关闭 shadowsocks 连接
- 截图后快速上传到七牛
他们使用不同的技术制作而成,但宗旨只有一个:“找到一切可以被自动化的流程并且用脚本来完成”,都开源在我的Github。
Workflow
workflow 是 Alfred 中最强大的部分,它能把常见工作转变成一个工作流
AppleScript
如果你使用 GoAgentX 这个软件,并且用 shadowsocks 翻墙,那么频繁的关闭和打开连接应该是无法避免的。
为了避免频繁的移动鼠标和点击,我希望用命令的方式来打开和关闭 shadowsocks 连接,如下图所示:
这其实类似于按键精灵的思想,因为我们希望有人能自动点击那个连接按钮或者关闭按钮。这种情况下可以考虑使用 AppleScript。它的作用是方便我们和程序进行交流,从而执行一系列程序内置的操作指令。
这里我不想自己介绍它的语法,因为实在是太白话了,文末的参考资料中也有详细的解释。来看一下第一个插件的脚本:
on alfred_script(q) -- 根据自己的需要修改profileName set profileName to "shadowsocks" tell application "GoAgentX" if q is "c" then toggle status of profileName to running else if q is "d" then toggle status of profileName to stopped end if end tell end alfred_script
如果你略具备编程经验,你一定会好奇这行代码是怎么写出来的,以及他们的语法是什么:
toggle status of profileName to running
首先打开系统应用:脚本编辑器(Script),然后选择 文件->打开字典,找到 GoAgentX 这个应用,你就会发现所有的语法都在这里了:
所以,有心的开发者日后在自己的应用中也可以考虑添加对 AppleScript 的支持。
Python
如果是和外部程序交互,比如网络请求,文件读写,执行 bash 脚本等等,就不再适合使用 AppleScript 这么简单的脚本了,推荐使用 Python 进行编程。
长久以来,写博客时把图片上传到图床一直是一个繁琐的任务:
- 截图
- 打开截图保存目录,复制图片
- 去七牛上传
- 复制 url
- 粘贴到 markdown 文本中
通过 workflow,我们可以把上述步骤简化为简单的三步,省略大量时间:
- Command+Ctrl+A 截图(图片不要保存在本地,存在剪贴板中即可)
- 在 Alfred 中输入
gn
- 图片会自动上传,并且把 Url 复制到剪贴板中,你只要按下 Command + V 即可
具体的实现也不复杂,由于已经开源所以就不分析了,简单介绍一下用法:
- 首先运行在 Alfred 中输入
qnconf
,后面要加上 AK 和 SK,这是你的密钥,可以从官网获取,输入如下:
qnconf xxx xxx
- 在 workflow 插件的文件夹中,有一个
conf.txt
文件,你需要打开它,设置上传到哪个 bucket,以及你的图床前缀,可以根据我现有的文件做修改。 - 使用时,确保剪贴板中有图片,在 Alfred 中输入
qn
后面也可以指定一个参数名,表示上传图片的名称。如果不写则默认是当前时间戳。 - 运行后,图片的 url 已经复制在你的剪贴板中了,尽情使用吧。
写在最后
这篇文章的目的不是介绍 workflow 的开发,也不是介绍 Python 的语法,这些资料网上应有尽有。
学习一门脚本语言,结合一个伟大的应用,大幅度提升自己的效率,这种一举两得的事情实在是再美好不过了。
参考资料
- AppleScript的终极入门手册
- Alfred workflow 开发指南
- pngpaste