试想一下,你作为一枚区块链技术开发者,受邀到某个区块链峰会做演讲,你总得做个 PPT 吧,做 PPT, mac 上自带了 keynote、pages 等软件还好,windows 系统的话你还得装个 powerpoint 吧。
到了会上做演讲,要么你自带笔记本,要么会场的电脑也得装了 PPT 播放软件,你才能把 PPT 投射出来。
嗯,情况就是这样。
我总觉得还是有点不方便。
而且,我想,我肯定不是第一个有这种感觉的人。
Origin
最近,我们区块链底层开发组来了好几个实习生,我要给这拨刚毕业的同学们做个 go 语言基础培训,那肯定要做个类似于课件啊、讲义之类的 PPT 吧。
刚开始,我打开了 mac 的 keynote 捣鼓会,其实就跟 windows 上搞 ppt 差不多的操作……
但是,我烦了。
我们这类技术培训,大部分内容跟代码相关,在 PPT 上贴一大段代码毕竟画面不会太好看,“PPT+IDE”组合又得不停地在两种窗口间切换来切换去,并且还得另外准备一份演示用的代码集。
懒人开始思考。
我想起刚学 go 语言那会在 YouTube 上看了不少 Google 大牛的 go 语言布道视频,他们演讲时好像是播放一种叫 slide 的文件,直接呈现在网页里,还可以在里面直接运行代码。
这正是我想要的,我花点时间研究了下其中的内幕。
Experient
slide 是随着 Go 诞生而出现的一种 present
格式,Go 语言研发组那帮老爷们十分喜欢以这种格式分享 Go语言技术心得和想法,几乎所有技术会议的幻灯片均是以 .slide
形式提供的,给人一种“真会装逼”的感觉。
present 是一种文本标记语言,使用普通文本编辑器就能编写(还装什么 powerpoint、keynote啊),只要遵循它的语法,就可以使普通文本内容呈现出特定的格式。说白了,就跟我现在用 markdown 语法写这篇文章差不多,它让作者把精力花在内容上,而无需过多关心格式、排版等问题。
简单体验下 present 语法:
1 | Hello Slide |
就这么几行文本,就可以渲染出下面 3 张 slide。
回车键、方向键都可以控制往前或往后看~,神奇吧~
本地运行的话,有这么几步:
1.先装一个 present 渲染工具。
1 | go get golang.org/x/tools/present |
很不幸,如果你在天朝,无法访问
golang.org/x/tools
, 不过好在你是一个 gopher,肯定知道,它已经转移到github.com/golang/tools
有它的镜像,因此,在你的GOPATH/src
下面手动创建个golang.org/x
文件夹,再git clone github.com/golang/tools
,再go install golang.org/x/tools/cmd/present
,present
就安装到你的GOPATH/bin
目录中了。
2.在 slide 文件目录,将 present 跑起来:
1 | hxzdeMac-mini:~/workspace/slide $ present |
3.打开浏览器访问 http://127.0.0.1:3999
,会列出它渲染的 slide 文件列表,点击进去,就是见证奇迹的时刻……
Present
花点时间熟悉下 persent 语法。
present 语法格式要求用户定义好 头部 和 正文。
header
1 | Title of document |
头部只有标题是必需的,它是第一个非空非注释行,子标题、日前、标签、作者等信息都是可选的,标题、作者头衔以及所在机构作为 slide 的第一页。
标签栏后留一个空行,可以附上作者信息:作者姓名、头衔、所在机构、邮箱、网站、Twitter名等,这部分会显示在最后那张 Thank you
的 slide 中。
body
正文部分以 *
后跟当前页标题来区分每张 slide。
正文语法示例如下,支持多级标题、列表、图片、代码段、网页链接等多种格式。
1 | * Title of slide or section (must have asterisk) |
最最令人兴奋的是,可以在里面直接跑代码:
真正的所见即所得啊,再也不用在代码区和演示文稿窗口间切来切去啦~这正是我等代码家梦寐以求的 PPT 打开方式啊。
关于 present 语法,这里 有详细的文档。
Watch It Everywhere
本地 present 服务可以作为调试用,slide 最终是给别人看的。
通过 https://talks.godoc.org/
提供的 present 渲染服务可以在线浏览 slide,并且支持 github 仓库中的 slide 文件。
Go 开发者们只需要将自己写好的 slide 文件存放在自己 github 上的仓库中,就可以随时随地打开这类 present 文件给大家分享了。
比如,我的 github 有一个叫 slide 的仓库地址:github.com/hxzqlh/slide/
,里面有一个 golang_coding_standard.slide
然后,你只需按照【仓库地址/slide文件名】格式拼接到 https://talks.godoc.org/
后面就可以观看了:
https://talks.godoc.org/github.com/hxzqlh/slide/golang_coding_standard.slide
很实用吧。
但是……
还是因为墙的原因,https://talks.godoc.org/
在大陆是无法直接访问的,有梯子的还可以访问,没有梯子的怎么办?
TODO, 这里先挖个坑:
等有空了,我自己搭建个
https://talks.godoc.org/
镜像。
有个老外在 YouTube 上放了个非常酷炫的 视频 来介绍 present,我上面讲的这些内容,里面都有涉及,我把它搬砖到腾讯视频了,快来看看吧。
Last
如此一番折腾,我们得到了什么?
我们可以不装 office,不用 keynote,只需打开你随身携带的记事本,简简单单地用 present 写 slide,一键上传至 github,只要有网,人人皆可访问。