Git: An intro of plumbing and porcelain commands
05 Apr 2015

这是去年七月给新入职美团的员工做的 Git 入门讲座。主要讲了 git 底层的命令 (plumbing) ,以及 git 工作的基本原理。

View it on Slideshare.

多快好省的前端开发实践
07 Nov 2014

这是我 10 月 25 日在 w3ctech 上做的演讲。PDF 可以在这里下载,也可以在 Slideshare 直接观看

关于 YUI 停止维护的一点想法
12 Sep 2014

我在调研 Node 语言的时候写到:

与其说 Node.js 替代了 Ruby,倒不如说是轻量级框架替代了重量级框架。现在前端敏捷开发的需求非常强烈,新技术和工具不断涌现。更合理的技术栈应该做到合理分层,各层独立。这样任何一层可以被类似的技术替代,而不至于“牵一发而动全身”。用大而全的框架愈来愈不适应快速更新的技术演进了。

没想到在 YUI 上应验了。

Node.js/JavaScript 语言调研
19 Jun 2014

这篇文章更多的是从宏观的、语言的层面分析 Node.js,原来写在公司内部的 wiki 上。

生命周期管理和元素默认行为及其内部实现
21 May 2014

这是在公司吃货啃谈会上做的一个主题演讲。简报在这里

改进合作 git 工作流:自动提取、合并提交
27 Mar 2014

这是我为美团前端 blog 写的一篇文章,原文在这里

每天,美团的上百名工程师都在不断改进美团的用户体验,或是加入各种新鲜的功能。作为负责展现、交互的前端工程师,我们上线的次数可达一天数十次。

我们使用 Stash 托管项目代码。每个功能都新增一个新任务分支 (feature branch),当开发测试完成后,推送任务分支到 Stash 上,并创建 pull request 进入代码审查,直到被通过,等待上线。

为了保证开发速度,我们不断改进完善这个发布流程,让这个过程更简单、高效。

Brackets in JavaScript
26 Feb 2014

这是在公司吃货啃谈会上做的一个五分钟演讲。简报在这里

反科里化的简单推导
31 Oct 2013

反科里化 (uncurrying) 是非常有趣的一个概念。

让我们像推导数学公式一样推导一下 JavaScript 里的反科里化:

用 asyncJS 异步加载 JavaScript
20 Oct 2013

根据 MDN 的文档和实际的测试,如果有 <script> 标签在 <link rel="stylesheet" ...> 之后,页面要等待 CSS 加载才能完成解析。造成 DOMContentLoaded 的延迟。

真实的页面可能更糟,在页面底部有外链的 JavaScript,之后有内嵌的函数。在这种情况下,页面需要等待 JavaScript 加载完成之后才能执行后续的函数,造成 DOMContentLoaded 的进一步延迟。

更安全的异步加载 CSS
27 Aug 2013

为了加快浏览器渲染,我们未来需要异步加载一些 CSS,这用 JavaScript 实现起来很简单。但对于有些核心页面,我们希望可以保证在没有 JavaScript 的情况下仍然可以正常显示。

为了同时满足这两种不同的需求,我们可以把 CSS 放在 <noscript> 里,这样正常情况下我们会异步加载 CSS,如果用户没有 JavaScript,则会退回传统的同步加载。

记录离线流量
24 Jul 2013

在 web app 里,我们希望可以更准确的记录用户的访问记录。但移动设备并不总是有可用的网络连接,比如在地铁上,手机信号总是时有时无。如果按照 PC 上简单的记录方法,会漏计不少访问信息。

我们的 web app 设计之初就考虑并实现了离线浏览,记录离线流量能帮助我们更好的了解用户的浏览习惯,改进我们的产品,这是有确实而迫切的需求的。

翻译中的一些取舍
02 Apr 2011

最近玩票性质的接了一个小活:翻译 iPhone: The Missing Manual 中的部分内容。因为时间也比较紧张,译文几乎是一稿完成,并未做太多推敲,但其中也多少反应了我对翻译的一些理解,尤其是在时间比较紧张时翻译中的一些取舍,写出来供人参考,也算是个工作小结。