前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GEEK的心思你别猜

GEEK的心思你别猜

作者头像
ThoughtWorks
发布2018-04-16 10:49:32
5920
发布2018-04-16 10:49:32
举报
文章被收录于专栏:ThoughtWorks

#ThoughtWorkers好声音#第十二期(图片:网络) 都说Geek的世界高深莫测,无法轻易探究。有多高深? 就是写幻灯片都用文本格式,更Geek的做法是,用Scheme这种Lisp方言写幻灯片。有人这么干吗?是的,北京办公室的韩锴就是这么干的。 他使用的是一个叫做Slideshow的工具,瞧瞧,韩老师已经迫不及待地给我们介绍它了。

文本化的幻灯片 - Slideshow

作为一名体面的程序员,作为一名被Unix文化侵染的程序员,作为一名希望世界是由简单的纯文本构成的程序员,生活中充满太多无奈。二进制的格式无处不在,后缀名将文件分出了三六九等。这其中,有两种文件我最无奈,图像和幻灯片,它们总和我的工作生活密切相关。

不过,现在光来了!HuKai在一篇blog里介绍了一个很酷的工具——Dot,它提供了一种可以基于文本描述图形的简洁的DSL。利用这个DSL,可以绘制出相当复杂的图案。激动之余,我开始寻找文本化幻灯片的方法。于是,我发现了DrRacket(它的前身就是大名鼎鼎的DrScheme)。DrRacket是MIT开发的Scheme的运行时,其中包含一个制作幻灯片的组件,名曰Slideshow。

很明显,Slideshow要求使用者用scheme来编写幻灯片,这就满足了像我这样的语言控的怪癖。我也因此放弃了一些其他类似的工具,比如SliTex。在Slideshow中,最核心的概念是pict和slide。slide自然表示一张幻灯片,它是由一个或多个pict按照不同的顺序排列组成的。slideshow的源代码以rkt为后缀名。下面是Slideshow的Hello World(hello.rkt):

第一行代码注册了语言的类型,即slideshow,第二行代码包含一个slide函数的调用,它会产生一张幻灯片,幻灯片的内容是(t “Hello World”)函数的结果——包含字符串“Hello World”的pict。t是Slideshow中众多返回pict的函数之一。在默认情况下,slide函数会把pict置于幻灯片的中间,不过它有一个可选的选项layout来控制pict的位置,让我们在刚才的基础上再增加一张幻灯片:

layout的值包括’center,’top,’tall和’auto,’auto是默认值。slide还有其他选项,title、name、inset和timeout等,可以为slide提供更多可配置的功能。

如果你对t函数使用的字体和大小不满意的话,可以使用text函数来自定义它们。

代码语言:javascript
复制
…
(slide
   #:title “Code Snap”
   (text “String name = getNameFromDB();” '(bold . morden), (+ (current-font-size 10))))

我为这张幻灯片增加了title “Code Snap”,它会出现在幻灯片的顶端。然后使用text函数生成一段Java代码片段,为了让它看上去更像“代码”,使用等宽字体morden并加粗,大小也比默认字号大了10。这时在命令行里键入下面的命令

代码语言:javascript
复制
> slideshow hello.rkt

就能看到前面制作的三张幻灯片依次播放了。如果你现在对Slideshow产生了一点兴趣,那么别犹豫了,在命令行里输入

代码语言:javascript
复制
> slideshow

就立刻能够看到一个介绍Slideshow入门教程幻灯片,它非常给力,而且它就是用Slideshow制作的,你可以在drrakect的安装目录下找到它的源代码。

希望你能花点儿时间学习一下Slideshow,然后从此爱上幻灯片,爱上Scheme!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2014-02-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 思特沃克 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文本化的幻灯片 - Slideshow
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档