FEX 技术周刊 – 2016/03/28

最后更新于:2022-04-01 00:04:12

## 深阅读 **How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript** [http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/](http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/) [http://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm](http://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm) 由于 npm 上一个开发者下架了自己的所有模块,尤其是其中用得比较多的 left-pad,导致 Babel 等好多模块构建失败,这个事件引发了许多讨论,有人吐槽 npm 中有大量只有几行代码的模块,有人吐槽 npm 脚本很危险(可以通过 npm install –ignore-scripts 关掉),感兴趣的可以继续 阅读:[http://lucumr.pocoo.org/2016/3/24/open-source-trust-scaling/](http://lucumr.pocoo.org/2016/3/24/open-source-trust-scaling/) [http://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/](http://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/) [https://medium.freecodecamp.com/npm-package-hijacking-from-the-hijackers-perspective-af0c48ab9922#.to7j5qyy0](https://medium.freecodecamp.com/npm-package-hijacking-from-the-hijackers-perspective-af0c48ab9922#.to7j5qyy0) [http://blog.npmjs.org/post/141702881055/package-install-scripts-vulnerability](http://blog.npmjs.org/post/141702881055/package-install-scripts-vulnerability) [http://blog.h5jun.com/post/left-pad.html](http://blog.h5jun.com/post/left-pad.html) [https://ponyfoo.com/articles/npm-meltdown-security-concerns](https://ponyfoo.com/articles/npm-meltdown-security-concerns) [http://developer.telerik.com/featured/left-pad-indicative-fragile-javascript-ecosystem/](http://developer.telerik.com/featured/left-pad-indicative-fragile-javascript-ecosystem/) cnpm 已经将 unpublish 权限收敛到了 admin[https://github.com/cnpm/cnpmjs.org/issues/866](https://github.com/cnpm/cnpmjs.org/issues/866) **Introduction to Immutable.js and Functional Programming Concepts** [https://auth0.com/blog/2016/03/23/intro-to-immutable-js/](https://auth0.com/blog/2016/03/23/intro-to-immutable-js/) Learn about functional data structures and their uses in this overview of Facebook’s popular library for JavaScript: Immutable.js **When should I use TypeScript?** [https://medium.com/@alexewerlof/when-should-i-use-typescript-311cb5fe801b#.q76w4w76y](https://medium.com/@alexewerlof/when-should-i-use-typescript-311cb5fe801b#.q76w4w76y) Last summer we had to convert a huge code base (18,000+ LOC) from Javascript to Typescript. During this transition I learned a lot about the differences and similarities of the two. I developed an idea about what makes a good use case for Typescript and when it doesn’t make sense to use it. **如何实现一个 Virtual DOM 算法** [http://mp.weixin.qq.com/s?__biz=MzI5MTE4NjQ4Ng==&mid=401684442&idx=1&sn=18750a1fe95490ec43b963fd0e750962](http://mp.weixin.qq.com/s?__biz=MzI5MTE4NjQ4Ng==&mid=401684442&idx=1&sn=18750a1fe95490ec43b963fd0e750962) 本文会分享怎么用 300~400 行代码实现一个基本的 Virtual DOM 算法,并且尝试尽量把 Virtual DOM 的算法思路阐述清楚。希望在阅读本文后,能让读者深入理解 Virtual DOM 算法,给我们现有前端的编程提供一些新的思考。 **React 同构实践与思考** [http://zhuanlan.zhihu.com/purerender/20669111](http://zhuanlan.zhihu.com/purerender/20669111) 众所周知,目前的 WEB 应用,用户体验要求越来越高,WEB 交互变得越来越丰富!前端可以做的事越来越多,去年 Node 引领了前后端分层的浪潮,而 React 的出现让分层思想可以更多彻底的执行,尤其是 React 同构 (Universal or Isomorphic) 这个黑科技到底是怎么实现的,我们来一探究竟。 **How Medium does progressive image loading** [https://jmperezperez.com/medium-image-progressive-loading-placeholder/](https://jmperezperez.com/medium-image-progressive-loading-placeholder/) Medium 的图片先模糊到清晰上如何实现的。 **前端文本截断** [http://efe.baidu.com/blog/text-truncating/](http://efe.baidu.com/blog/text-truncating/) 很古老的问题了,其中涉及到的细节点其实很多。 **移动端地图技术分享** [http://www.jianshu.com/p/41179be5893a](http://www.jianshu.com/p/41179be5893a) 地图服务的实现原理介绍。 **Stack Overflow:云技术程序员收入最高 [http://www.199it.com/archives/451195.html](http://www.199it.com/archives/451195.html) 上周发过[原版](http://stackoverflow.com/research/developer-survey-2016),这是其中一部分翻译的版本,之前漏过的可以看看,主要是语言部分的流行及受欢迎程度。 **React Native and its problems** [http://blog.dev-area.net/2016/01/29/react-native-and-its-problems/](http://blog.dev-area.net/2016/01/29/react-native-and-its-problems/) 使用 React Native 过程中遇到的问题。 **Chromium网页渲染机制简要介绍和学习计划** [http://blog.csdn.net/luoshengyang/article/details/50916769](http://blog.csdn.net/luoshengyang/article/details/50916769) 深入代码细节的解析,不过估计大部分人看不懂。 **Growth: 全栈增长工程师指南** [http://growth.phodal.com/](http://growth.phodal.com/) 作者挺能写的,也不容易了,但大家需要有自己的判断啊,别光看字数多就点赞。 **My SublimeText-killer Atom setup for developing React apps** [https://medium.com/unhandled-exception/my-sublimetext-killer-atom-setup-for-developing-react-apps-fa3c06505dd#.xvvuqhreb](https://medium.com/unhandled-exception/my-sublimetext-killer-atom-setup-for-developing-react-apps-fa3c06505dd#.xvvuqhreb) 推荐了一些 Atom 插件,喜欢折腾编辑器的可以看看,不过貌似安装插件需要科学上网。 **H5、React Native、Native应用对比分析** [http://my.oschina.net/vczero/blog/597980](http://my.oschina.net/vczero/blog/597980) 通过一个简单应用来对比使用这三种技术开发的情况,然后顺带植入广告。 **Android自定义Lint实践** [http://tech.meituan.com/android_custom_lint.html](http://tech.meituan.com/android_custom_lint.html) 如何写自己的规则。 **Cookpad近期微服务经验总结** [http://liubin.org/blog/2016/03/16/microservice-at-cookpad/](http://liubin.org/blog/2016/03/16/microservice-at-cookpad/) Cookpad是日本最大的在线菜谱分享公司,上市企业;这都不算啥,说到Rails,日本人没有不知道Cookpad的,可以说Cookpad将Rails用到了极致,相信他们在微服务方面的经验也能为我们带来帮助。 **一名全栈工程师Node.js之路** [http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=405001493&idx=1&sn=f0ecab9b31bad83fb065ac37bb728245](http://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=405001493&idx=1&sn=f0ecab9b31bad83fb065ac37bb728245) 写得还挺详细 **用Node.js开发微信墙简明教程** [http://blog.h5jun.com/post/%E7%94%A8Node.js%E5%BC%80%E5%8F%91%E5%BE%AE%E4%BF%A1%E5%A2%99%E7%AE%80%E6%98%8E%E6%95%99%E7%A8%8B.html](http://blog.h5jun.com/post/%E7%94%A8Node.js%E5%BC%80%E5%8F%91%E5%BE%AE%E4%BF%A1%E5%A2%99%E7%AE%80%E6%98%8E%E6%95%99%E7%A8%8B.html) 这是一个简单的用Node.js开发微信墙的教程,在这个教程中,包括以下几部分内容:验证服务器有效性;接收用户通过微信订阅号发给服务器的消息;解析收到的XML文本消息格式为JSON;用模板构造应答用户的XML文本消息;将接收到的消息通过WebSocket服务广播;获取消息发送人的用户基本信息(名字和头像)。 **以20像素为基准的CSS网页布局实践分享** [http://www.zhangxinxu.com/wordpress/2016/03/css-layout-base-20px/](http://www.zhangxinxu.com/wordpress/2016/03/css-layout-base-20px/) 看似是简单的要求以20像素为基准,实际上根植于体系中并有一套完整的解决方案。另附作者的另一个新文章:[简单了解CSS3的all属性](http://www.zhangxinxu.com/wordpress/2016/03/know-about-css3-all/) **从网易与淘宝的font-size思考前端设计稿与工作流** [http://www.cnblogs.com/lyzg/p/4877277.html](http://www.cnblogs.com/lyzg/p/4877277.html) 还没空仔细看,目测有价值 **ReactNative增量升级方案** [https://github.com/cnsnake11/blog/blob/master/ReactNative%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC/ReactNative%E5%A2%9E%E9%87%8F%E5%8D%87%E7%BA%A7%E6%96%B9%E6%A1%88.md](https://github.com/cnsnake11/blog/blob/master/ReactNative%E5%BC%80%E5%8F%91%E6%8C%87%E5%AF%BC/ReactNative%E5%A2%9E%E9%87%8F%E5%8D%87%E7%BA%A7%E6%96%B9%E6%A1%88.md) 作者写了不少 ReactNative 相关的文章 **前端的自我成长** [http://mp.weixin.qq.com/s?__biz=MzIzMzEzODYwOA==&mid=416695997&idx=1&sn=f57f073bcb3a9559f0575d0a7584a246](http://mp.weixin.qq.com/s?__biz=MzIzMzEzODYwOA==&mid=416695997&idx=1&sn=f57f073bcb3a9559f0575d0a7584a246)  前端其实是个特别苦逼的职业,因为前端技术一直革命的特别快,新技术、新技巧在不断地被发明出来。到目前为止,还没有任何一个大学会教前端,倒是有些培训班,会讲网页开发三剑客。这里讲的内容,希望带给大家的,就是该如何学习前端,实现自身成长。 **JSPatch开源经验分享** [http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=403063229&idx=1&sn=34651b982e211ae64742913026d459b0](http://mp.weixin.qq.com/s?__biz=MzA3ODg4MDk0Ng==&mid=403063229&idx=1&sn=34651b982e211ae64742913026d459b0) JSPatch 在国内开源方面做得很不错,很多公司都在使用。 ## 新鲜货 **ua-device** [https://github.com/fex-team/ua-device](https://github.com/fex-team/ua-device) FEX 团队用心打造的 UA 解析库,我们分析了无数条日志,并结合各种网上的信息,整理出了这个对国内各种手机识别率最高的 UA 库,欢迎大家使用,并一起完善。 **iTerm2 指南** [http://wdxtub.com/2016/03/20/iterm2-guide/](http://wdxtub.com/2016/03/20/iterm2-guide/) 用好 iTerm2 可以极大提升效率,这里面介绍的只是一部分,iTerm2 有大量功能,建议开启每日技巧(Tip of the Day),日积月累地学习。 **React Native 0.22.0** [https://github.com/facebook/react-native/releases/tag/v0.22.0](https://github.com/facebook/react-native/releases/tag/v0.22.0) 更新还是挺勤快的,居然这次有 99 个贡献者。 **BuckleScript** [https://github.com/bloomberg/bucklescript](https://github.com/bloomberg/bucklescript) 将 OCaml 编译为 JavaScript 的工具 **Opensource kit** [https://github.com/mr47/opensource-kit](https://github.com/mr47/opensource-kit) JavaScript 开源项目模板,整合了许多工具 **Emulators written in JavaScript** [https://github.com/fcambus/jsemu](https://github.com/fcambus/jsemu) 收录了各种 JS 写的模拟器 **Directory Upload - Spec** [https://wicg.github.io/directory-upload/proposal.html](https://wicg.github.io/directory-upload/proposal.html) This spec enables directory uploading by allowing a developer to read directory contents (files and sub-directories) asynchronously and be able to identify the directory structure. This specification proposes changes to [HTML] (in particular, additional API surface on HTMLInputElement, along with an additional atribute on the element) as well as a new specification called Directory Upload which brings directories to the web. **Small** [https://github.com/wequick/Small](https://github.com/wequick/Small) 支持 Android 和 iOS 的插件化框架。 **SSH for Clusters and Teams** [http://gravitational.com/teleport/](http://gravitational.com/teleport/) 团队 SSH 解决方案,提升效率。 **Docker for Mac and Windows Beta: the simplest way to use Docker on your laptop** [https://blog.docker.com/2016/03/docker-for-mac-windows-beta/](https://blog.docker.com/2016/03/docker-for-mac-windows-beta/) 终于不是用 VirtualBox 了,用起来会更加自然。 **It’s Official: JavaScript Is The Most Commonly Used Programming Language On Earth** [http://arc.applause.com/2016/03/22/javascript-is-the-worlds-dominant-programming-language/](http://arc.applause.com/2016/03/22/javascript-is-the-worlds-dominant-programming-language/) **match - A JavaScript library to test JSON with some nice features.** [https://github.com/ozkxr/match](https://github.com/ozkxr/match) It is built to test REST API endpoints but, of course, you can use it to whatever you want. ## 产品及其它 **一个Geek范的H5页面制作工具** [http://zhuanlan.zhihu.com/wonderful/20675594](http://zhuanlan.zhihu.com/wonderful/20675594) 百度出品的H5页面确实都是业界比较先进的,尤其是在对技术的运用上,非常的得当。工具的诞生的目的不外乎两点:节约劳动时间和辅助完成无法徒手完成的任务。而节约时间又可以从提升劳动效率和减少沟通成本入手,对于IT业来说,这也是提升工程效率的最重要两个方式。所以我们不妨从这两方面去看一下这款H5工具,是不是一款优秀的工具。 **Docker三年回顾:梦想依然在,人生正当年** [http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=403178679&idx=1&sn=d555a7c9dfdd407b66d1e555b49ea374&scene=0#rd](http://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=403178679&idx=1&sn=d555a7c9dfdd407b66d1e555b49ea374&scene=0#rd) 细谈Docker,我们发现,其背后的容器技术,其实并非首创,早在十数年前,容器技术便已有雏形,那究竟为何Docker的席卷之势空前之大。不论是技术领域有什么独到之处,还是时势造就了如今大好的局面,我们都没有理由不来细细品鉴Docker这三年来的种种发展。 **安卓之父,真正的极客,一个与乔布斯并列的改变世界的人…** [http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=403343518&idx=1&sn=eb4a5194c17e9093b70035cbf100f350](http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=403343518&idx=1&sn=eb4a5194c17e9093b70035cbf100f350) 安迪·鲁宾:真正的Geek,从不关心技术之外的人和事。 **WebAPP与原生APP的交互设计区别** [http://www.jianshu.com/p/7c0eac6070b5](http://www.jianshu.com/p/7c0eac6070b5) 挺不错的总结 **程序bug导致了天大的损失,要枪毙程序猿吗** [http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=403431752&idx=1&sn=1c79c8b03e2b8839160b5f6cd830588a&scene=0#rd](http://mp.weixin.qq.com/s?__biz=MjM5NzA1MTcyMA==&mid=403431752&idx=1&sn=1c79c8b03e2b8839160b5f6cd830588a&scene=0#rd) 2015年9月3日,随着东京最高法院驳回瑞穗证券的上诉,维持二审的原判结果,一个长达10年的诉讼终于画下了句号。这个判例将对IT行业产生深远的影响:如果程序的bug导致了巨大的经济损失,应该由谁来承担?用户?运营商?还是系统开发商?
';