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 上应验了。

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

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

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

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

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

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

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

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

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

Read more
Brackets in JavaScript
26 Feb 2014

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

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

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

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

Read more
用 asyncJS 异步加载 JavaScript
20 Oct 2013

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

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

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

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

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

Read more
记录离线流量
24 Jul 2013

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

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

Read more
翻译中的一些取舍
02 Apr 2011

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

Read more