A

  1. Merge Intervals

拿到题的第一反应是,先对数组进行排序,然后对排序后的数组进行遍历和合并。但是看到这个是被标为「中等」难度的题,应该不会这么简单吧?然后,又往递归方法的方向想了想,越想越觉得递归解决不了问题(或者搞起来好麻烦)。最后,按照先排序再合并的思路写了代码,调试了一下就提交通过了,运行效率却不咋地。通过这次解题,发现自己对确定解法这块还是靠感觉靠蒙,容易被一些外界因素带偏了思路。

R

requestAnimationFrame Scheduling For Nerds Paul Irish

Paul 大神介绍了 requestAnimationFrame (后文简称 rAF)的执行机制。rAF 的回调都在下一个 frame 中执行。所有 rAF 中的回调都在同一个 frame 中执行,浏览器会等待 rAF 回调执行完毕之后,才会继续进行 layout、paiting、composition 等。rAF 回调的第一个参数是主进程的执行时间,使用 performance.now 也可以获取主进程的执行时间。

文中也推荐了 Jake Archibald 的关于 Event Loop 的演讲视频,这个视频有 50 多分钟,对 Event Loop 的执行原理进行了深入浅出的讲解,演讲 keynote 中的动画也生动形象。印象比较深的一点是,浏览器的多个 Tab 页会共用主进程的 Event Loop,当一个 Tab 页卡死时,其余的 Tab 页也都不能响应。有几种情形是不共用的,比如:标签 a 设置了 ref=”noopener”;iframe 中是跨域的子页面。

T

使用 Automator 定制一个 service 菜单进行一些工作的快捷处理。

之前动画同学找我帮忙出一个脚本来批量转换图片尺寸,他们可以接受在「终端」上跑一些简单的命令来运行脚本。我按照他们的要求提供了一个基于 sips 的处理脚本,用法是只要把这个脚本复制到待处理的图片文件夹下,然后把脚本拖入到终端上,回车即可。

现在看来,这个用法对动画同学来说,太麻烦了。一个改进的办法是,使用 Automator 定制一个 service 菜单,用户只要点击菜单,即可触发脚本执行任务。这样对没有编程经验的人来说,使用起来也更友好了。另外,开发者也可以定制一些快捷菜单,用于处理日常的一些任务。

之所以想到使用 Automator,是因为看了这篇博文:利用 Automator 自动化你的工作

S

本周推荐 Jake Archibald 的关于 Event Loop 的演讲: SmashingConf London — Jake Archibald on ‘The Event Loop’