TUNA技术沙龙及A Pretty Printer Library in Haskell

技术沙龙准备

三天前王康提议开学前的周末搞个活动,之后敲定由Cheer Xiao、heroxbd、Aron Xu和我做演讲。得到消息很诧异,因为以上几位都有丰富的系统管理经验,我就不知道能干什么了……但毕竟被逼上梁山了,最后Cheer Xiao让我讲Haskell。

我考虑了几种讲法:

  • 纯粹讲语法。大家可能不会有什么兴趣。
  • 和其他语言做比较,找设计独到的地方。以前做过类似的事,不太想重复。
  • 找一个function pearl。思考再三,觉得以前看过的Philip Wadler的pretty printer可能是最合适的了,用不到Haskell很多特性,需要了解的语法很少就能上手。在开头简单地过一下语法中的一个子集就能满足后面讲pretty printer的需求。

幻灯片工具jmpress.js

要是以前我肯定会纠结选择org-mode还是用pandoc风味的markdown,生成.tex文件后还要折腾xelatex的各种宏包,特别是得处理beamer的很多麻烦问题。由于我对LaTeX不熟,用起来势必捉襟见肘。尽管LaTeX号称排版功能强大,但我这样的入门用户是用起来就带脚炼跳舞。另外幻灯片缺乏显示以外的其他控制功能。索引、进度条、现代化一点的动画等,我知道LaTeX当然都能做,但做起来肯定不方便,它使用的语言看着就让人倒胃口了。

现在学了点网页前端领域的皮毛,htmlcssjavascript,一个个就其本身来说,都是我没法接受的。但引入了一层抽闲:各种现代化的模板引擎和coffeescripthtml这些东西就不再让人倒胃了。

我选择了jmpress.js作为演示工具。内容用jade编写,样式用stylus生成,脚本使用coffeescript

构建工具选用grunt-0.4.0,其grunt-contrib-watch插件能自动检测源文件是否修改并更新相关目标文件。源文件保存后,在浏览器里刷新就能立刻看到结果。而用beamer写的幻灯片,内容多了之后就得等上半分钟,很影响体验。

使用了coffeescript,几行代码就能实现其他幻灯片工具里难以实现的功能:

  • 在底部添加进度条,用彩虹色表示时间
  • 项目列表(还包括其他元素)的增量式显示
  • 操作DOM实现内容的复制

我把这次演讲当成了前端知识的一个极佳锻炼机会。

现场

今天14:00活动开始。来现场的人好多……远远超过预期了,TUNA的潜水会员还真有这么多啊。碰到了好多久仰却从未谋面的人如heroxbd、smilekzs,神秘的curimit,高中+大学学长Gene……还有好多熟人就不讲了啊,不认识的同学还是不认识……以后是不是考虑结束后聚餐什么的。

首先Cheer Xiao和heroxbd给大家介绍了Google Summer of Code的事项,然后Debian Developer Aron Xu介绍了systemd,至于他们讲了什么……很抱歉,我一直在调css,设置字体大小,临到沙场才发现了好多之前没发现的bug,没怎么认真听……抱歉啊。

最后的遗憾是大家没有合影留念。

TUNA

另外还有很多事情懵懵懂懂。在TUNA打了一年酱油却对TUNA的前生今世没有什么了解,包括但不限于活跃成员、目标计划、任务、指导教师、经费、活动场地、管理服务器、校内地位等。

平时在邮件列表里经常能看到“出口 QoS 策略讨论”、“rootkit 事件”等高深问题,可惜都没有找到老会员问清。

先偏一下话题。在一些问答社区里提问时,提问前先要自己搜寻相关资料做尝试,提问时要提供间断、具体、清晰的描述,热心回答者有疑问时要注意补充说明,任务完成后还要注意总结。作为TUNA邮件列表用户,我们是不是也应该注意这些?

A Pretty Printer Library in Haskell

HTML幻灯片

tarball下载