这是去年七月给新入职美团的员工做的 Git 入门讲座。主要讲了 git 底层的命令 (plumbing) ,以及 git 工作的基本原理。
View it on Slideshare.
我在调研 Node 语言的时候写到:
与其说 Node.js 替代了 Ruby,倒不如说是轻量级框架替代了重量级框架。现在前端敏捷开发的需求非常强烈,新技术和工具不断涌现。更合理的技术栈应该做到合理分层,各层独立。这样任何一层可以被类似的技术替代,而不至于“牵一发而动全身”。用大而全的框架愈来愈不适应快速更新的技术演进了。
没想到在 YUI 上应验了。
这篇文章更多的是从宏观的、语言的层面分析 Node.js,原来写在公司内部的 wiki 上。
这是在公司吃货啃谈会上做的一个主题演讲。简报在这里。
每天,美团的上百名工程师都在不断改进美团的用户体验,或是加入各种新鲜的功能。作为负责展现、交互的前端工程师,我们上线的次数可达一天数十次。
我们使用 Stash 托管项目代码。每个功能都新增一个新任务分支 (feature branch),当开发测试完成后,推送任务分支到 Stash 上,并创建 pull request 进入代码审查,直到被通过,等待上线。
为了保证开发速度,我们不断改进完善这个发布流程,让这个过程更简单、高效。
这是在公司吃货啃谈会上做的一个五分钟演讲。简报在这里。
反科里化 (uncurrying) 是非常有趣的一个概念。
让我们像推导数学公式一样推导一下 JavaScript 里的反科里化:
根据 MDN 的文档和实际的测试,如果有 <script>
标签在 <link rel="stylesheet" ...>
之后,页面要等待 CSS 加载才能完成解析。造成 DOMContentLoaded 的延迟。
真实的页面可能更糟,在页面底部有外链的 JavaScript,之后有内嵌的函数。在这种情况下,页面需要等待 JavaScript 加载完成之后才能执行后续的函数,造成 DOMContentLoaded 的进一步延迟。
为了加快浏览器渲染,我们未来需要异步加载一些 CSS,这用 JavaScript 实现起来很简单。但对于有些核心页面,我们希望可以保证在没有 JavaScript 的情况下仍然可以正常显示。
为了同时满足这两种不同的需求,我们可以把 CSS 放在 <noscript>
里,这样正常情况下我们会异步加载 CSS,如果用户没有 JavaScript,则会退回传统的同步加载。
在 web app 里,我们希望可以更准确的记录用户的访问记录。但移动设备并不总是有可用的网络连接,比如在地铁上,手机信号总是时有时无。如果按照 PC 上简单的记录方法,会漏计不少访问信息。
我们的 web app 设计之初就考虑并实现了离线浏览,记录离线流量能帮助我们更好的了解用户的浏览习惯,改进我们的产品,这是有确实而迫切的需求的。
最近玩票性质的接了一个小活:翻译 iPhone: The Missing Manual 中的部分内容。因为时间也比较紧张,译文几乎是一稿完成,并未做太多推敲,但其中也多少反应了我对翻译的一些理解,尤其是在时间比较紧张时翻译中的一些取舍,写出来供人参考,也算是个工作小结。