FEX 技术周刊 - 2017/07/10
微信搜索『FEX』关注我们的公众号,及时获得最新资讯。
业界会议
百度 AI 开发者大会
http://create.baidu.com/
如你所知,1956年的夏天,AI出现在人们的视野。也如你所见,六十余年的时间,技术开发者们坚持探索、影响世界。2017 年,又是一个夏天,百度诚邀全球开发者,共享AI技术盛宴。希望一切,依然如你所愿……这次会议前端相关的可关注:百度Web生态构建
深阅读
Better Software Design with Clean Architecture
https://fullstackmark.com/post/11/better-software-design-with-clean-architecture
Clean Architecture provides a simple and effective framework for separating the different aspects of our system producing a highly decoupled, testable architecture. Like most design decisions there are tradeoffs to be made when considering Clean Architecture. I hope this guide has provided some insight on how Clean Architecture can improve your software design and prevent many of the common pitfalls that hinder projects. Like any pattern, it takes a little familiarity with the concepts and principles before they can be effectively applied.
React, Relay and GraphQL: Under the Hood of the Times Website Redesign
https://open.nytimes.com/react-relay-and-graphql-under-the-hood-of-the-times-website-redesign-22fb62ea9764
The New York Times website is changing, and the technology we use to run it is changing too. As the new site rolls out over the next several months, a look under the hood will reveal a number of modern technologies designed to make the site faster and easier to use — for readers, most importantly, but also for our developers. At the center of this has been our adoption of React, Relay and GraphQL.
Under the hood: ReactJS
https://bogdan-lyashenko.github.io/Under-the-hood-ReactJS/
This repository contains an explanation of inner work of ReactJS. In fact, I was debugging through the entire code base and put all the logic on visual block-schemes, analyzed them, summarized and explained main concepts and approaches. I’ve already finished with Stack version and now I work with the next, Fiber version.
Web Frameworks: Foundational Technologies
https://www.sitepen.com/blog/2017/07/06/web-frameworksfoundational-technologies/
In this post we’ll look at how the different web frameworks deal with the fundamentals. We’ll look at what environments are supported, how well aligned they are to the current standards, how they future proof their code, and how they go above and beyond the current standards. This analysis will give us an indication of what sort of foundations we are building on when leveraging a particular framework. Especially in the enterprise, web frameworks are not just nice Christmas gifts. Using the first one we unwrap will affect our applications for a long time.
Chat Bots and the Future of Web Development
https://www.sitepoint.com/chat-bots-and-the-future-of-web-development/
There are currently more than 100,000 bots and developers on the Messenger network alone. More than 10,000 businesses are already using or working on their own bots, and by 2020 80% businesses hope to have chatbots for interacting with customers. In this article, I’ll cover what chatbots are, the sudden boom in their popularity, how they are significantly changing the way we browse and interact with the web, why web developers and designers should care about this paradigm shift, and what they can specifically do to keep up.
A set of best practices for JavaScript projects
https://github.com/wearehive/project-guidelines
While developing a new project is like rolling on a green field for you, maintaining it is a potential dark twisted nightmare for someone else. Here’s a list of guidelines we’ve found, written and gathered that (we think) works really well with most JavaScript projects here at hive.
A Closer Look Into WebRTC
https://webkit.org/blog/7763/a-closer-look-into-webrtc/
We recently announced WebRTC support in Safari 11 on High Sierra and iOS 11 in our last WebKit blog post. Today, we would like to dive into more details of our implementation, and provide some tips on bringing WebRTC support to your website.
[译]Web开发野蛮生长的这17年
http://zcfy.cc/article/i-x27-ve-been-a-web-developer-for-17-years-and-this-is-what-i-learned-daniel-khan-risingstack-3348.html
作者的心得:保持冷静,勿信炒作;不要轻信别人的代码;坚持这几个原则,DRY 原则 - Don’t repeat yourself,Yagni 原则(注:You ain’t gonna need it),KISS - Keep it simple stupid。
一张图看懂小程序全生态
https://mp.weixin.qq.com/s/-O0UIScjtcyUTwph1BEgKA
2017年1月9日,小程序发布在万众瞩目中发布,不仅占据了舆论的风口,也经历了不少起伏。6月9日小程序发布半年。半年来,小程序到底是什么现状?小程序给我们带来哪些改变?创业者该如何看待小程序?小程序生态中暗藏着哪些机会?带着这些疑问,「造个程序」策划了「小程序这半年专题」。
分布式系统中的时间和顺序
https://mp.weixin.qq.com/s?__biz=MzAwMDU1MTE1OQ==&mid=2653548851&idx=1&sn=2470d5d79fd826cb72f9d33cad4887d2
分布式系统用多个设备来处理特定问题,但是如何保证这样的处理结果像单机系统那样正确?这里的正确指的是:以相同的顺序进行相同的一系列操作,分布式系统能得到和单机系统相同的结果。本文主要介绍了分布式系统中 Linearizability 概念,以及它与 Serializability 的区别,并介绍了 Spanner 中是如何通过 TrueTime 来实现 Linearizability。
如何掌握所有的程序语言
http://www.yinwang.org/blog-cn/2017/07/06/master-pl
对的,我这里要讲的不是如何掌握一种程序语言,而是所有的……很多编程初学者至今还在给我写信请教,问我该学习什么程序语言,怎么学习。由于我知道如何掌握“所有”的程序语言,总是感觉这种该学“一种”什么语言的问题比较低级,所以一直没来得及回复他们 :P 可是逐渐的,我发现原来不只是小白们有这个问题,就连美国大公司的很多资深工程师,其实也没搞明白。
MySQL infrastructure testing automation at GitHub
https://githubengineering.com/mysql-testing-automation-at-github/
Our MySQL infrastructure is a critical component to GitHub. MySQL serves GitHub.com, GitHub’s API, authentication and more. Every git request touches MySQL in some way. We are tasked with keeping the data available, and maintaining its integrity. We have the infrastructure to automate away such operations; in this post we share a few examples of how we build trust in our infrastructure through continuous testing. It is essentially how we sleep well at night.
Democratizing Experimentation Data for Product Innovations
https://www.paypal-engineering.com/2017/06/29/democratizing-experimentation-data-for-product-innovations/
A/B Testing (also known as experimentation or bucket testing), enables the product teams to gain more insights and understandings of PayPal users, their behavior and interaction with PayPal product pages, product flows and products in general (with user permissions). It is critical to arrive to some product decisions fast in a data driven manner, and hence facilitates fast iterations and turn-arounds to speed up innovations and product development cycles.
Mastering Async Await in Node.js
https://blog.risingstack.com/mastering-async-await-in-nodejs/
In this article, you will learn how you can simplify your callback or Promise based Node.js application with async functions (async/await).
Mastering Programming
https://www.facebook.com/notes/kent-beck/mastering-programming/1184427814923414
From years of watching master programmers, I have observed certain common patterns in their workflows. From years of coaching skilled journeyman programmers, I have observed the absence of those patterns. I have seen what a difference introducing the patterns can make. Here are ways effective programmers get the most out of their precious 3e9 seconds on the planet.
Habits of a Happy Node Hacker 2017
https://blog.heroku.com/node-habits-2017
Here are 8 habits for happy Node hackers updated for 2017. They’re specifically for app developers, rather than module authors, since those groups have different goals and constraints: Lock Down Your Dependency Tree; Automate Your Code Formatting with Prettier…
Django vs Flask
https://www.git-pull.com/code_explorer/django-vs-flask.html
This analysis is a comparison of 2 python web frameworks, Flask and Django. It discusses their features and how their technical philosophies impact software developers. It is based on my experience using both, as well as time spent personally admiring both codebases.
Where do Type Systems Come From?
http://blog.felipe.rs/2017/07/07/where-do-type-systems-come-from/
In short, type theory was developed to be an alternative to set theory as the foundation of mathematical proofs in symbolic logic due to its ability to solve some contradictions stemming from naive set theory.
The Many Problems with Jenkins and Continuous Delivery
https://thenewstack.io/many-problems-jenkins-continuous-delivery/
Ultimately, the root of these problems stems not from specific tools, but from cultural mistakes. Problem 1: Jenkins has too many plugins. Problem 2: Jenkins was not designed for the Docker age. Problem 3: Jenkins does not support microservices well. Problem 4: CI != CD.
The Options for Programmatically Documenting CSS
https://css-tricks.com/options-programmatically-documenting-css/
Documentation is a topic that always bugs me. Working on poorly documented codebase is a ticking bomb. It makes the onboarding process a tedious experience. Now let’s take a look at the most popular documentation options in CSS.
Designing The Perfect Date And Time Picker
https://www.smashingmagazine.com/2017/07/designing-perfect-date-time-picker/
What could be so difficult about designing a decent date picker? Basically, we just need an input field and an icon that represents a calendar clearly enough, and once the user clicks on that icon, we pop up a little overlay with the days lined up in rows. Right?
Looking at the future of responsive design
https://www.mercurytide.co.uk/blog/article/looking-future-responsive-design/
Responsive web design is the design methodology of making a singular website ‘respond’ to the size of the viewport it is being presented in, allowing users to view your website from any device big or small and have it look as well presented as it does on a desktop computer. From humble beginnings responsive design has evolved gradually over the years, it has taken many different forms as standards and support for modern technologies have improved and the requirement for a way to cater to an increasingly mobile obsessed populace has become more crucial. This whitepaper focuses on the technologies that have emerged to tackle this issue and where they are going.
新鲜货
Google VR Blocks: A Free 3D Modeling Tool for HTC Vive and Oculus Rift
https://vr.google.com/blocks/
Blocks makes creating 3D models easy, powerful, and fun.
Apple’s WWDC 2017 Highlights For iOS Developers
https://www.smashingmagazine.com/2017/07/wwdc-2017-highlights/
Here’s my overview of what happened this WWDC season, with code samples. 另附:来自今日头条技术团队的 WWDC 参会总结
What’s new in Docker 17.06 Community Edition
https://blog.docker.com/2017/07/whats-new-docker-17-06-community-edition-ce/
Docker 17.06 CE (Community Edition) is the first version of Docker built entirely on the Moby Project. New features include Multi-Stage Build, new Networking features, a new metrics endpoint and more! In this Online Meetup, Sophia Parafina, Docker Developer Relations Engineer, demo’d and reviewed these new features.
Introducing code owners
https://github.com/blog/2392-introducing-code-owners
While effective code review is essential to every successful project, it’s not always clear who should review files—even with GitHub’s reviewer suggestions. Now repository maintainers can define exactly which people and teams need to review projects using code owners. This new feature automatically requests reviews from the code owners when a pull request changes any owned files.
React-UWP
https://www.react-uwp.com/
React-UWP came about from our love of React and Microsoft’s UWP Design. We want UWP design easier to implementation in web applications
Chalk V2.0
https://github.com/chalk/chalk/releases/tag/v2.0.0
Chalk is a Node.js module for styling and colorizing terminal output.
Ink - React for CLIs
https://github.com/vadimdemedes/ink
Build and test your CLI output using components.
Announcing Gatsby 1.0.0
https://www.gatsbyjs.org/blog/gatsby-v1/
Gatsby is your friendly, blazing fast static site generator for React. And after nearly a year of research, prototyping, and testing, Gatsby v1 is ready for action.
Rekit 2.0 is out
http://rekit.js.org/
Rekit is a toolkit for building scalable web applications with React, Redux and React-router. It’s an all-in-one solution for creating modern React apps. It helps you focus on business logic rather than dealing with massive libraries, patterns, configurations etc.
ECMAScript Pattern Matching Syntax
https://github.com/tc39/proposal-pattern-matching/blob/master/README.md
Pattern matching is a way to select behaviors based on the structure of a value in a similar way to destructuring. For example, you can trivially match objects with certain properties and bind the values of those properties in the match leg. Pattern matching enables very terse and highly readable functional patterns and is found in a number of languages. This proposal draws heavy inspiration from Rust and F#. This proposal is stage 0 and as such is open to significant revision.
Gitter is open source
https://gitlab.com/gitlab-org/gitter
Gitter is a chat and networking platform that helps to manage, grow and connect communities through messaging, content and discovery.
Making a virtual machine in Google Sheets
https://briansteffens.github.io/2017/07/03/google-sheets-virtual-machine.html
Google Docs has a pretty full-featured scripting system called Apps Script. It lets you write JavaScript to do some pretty useful things: Run code in response to events like documents opening or cells changing; Make custom Google Sheets spreadsheet functions for formulas; Use services like Google Translate to translate text or Gmail to send email; Add new menu items to the Google Docs interface with your custom features. 另附:A virtual machine made with Google Sheets formulas
Infinite Scroll V3.0
https://infinite-scroll.com/
Infinite Scroll is a JavaScript plugin that automatically adds the next page, saving users from a full page load. You’ve likely seen it in use all over the web.
The npm CLI’s Long Term Support (LTS) policy
http://blog.npmjs.org/post/162451604515/the-npm-clis-long-term-support-lts-policy
The npm CLI project does not have designated LTS releases. The project only regularly does releases to the most recent major release.
Britecharts
https://eventbrite.github.io/britecharts/
Britecharts is a client-side reusable Charting Library based on D3.js v4 that allows easy and intuitive use of charts and components that can be composed together creating amazing visualizations.
KeystoneJS
http://keystonejs.com/
Node.js cms and web application platform built on Express and MongoDB. KeystoneJS is the easiest way to build database-driven websites, applications and APIs in Node.js.
data-fns
https://date-fns.org/
date-fns provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates in a browser & Node.js.
Text Mining of Stack Overflow Questions
https://stackoverflow.blog/2017/07/06/text-mining-stack-overflow-questions/
This analysis focuses only on questions posted on Stack Overflow, and uses topic modeling to dig into the text.
Open Legal Documents
http://www.docracy.com/
Docracy is a home for contracts and other legal documents, socially curated by the communities that use them. Our mission is to make these documents freely available for everyone, while in the process making them easier to customize and use. No more shady templates behind a paywall where you click download and just hope for the best. Instead we offer reputable, transparent sources and social proof to help you find something as close as possible to the perfect document.
产品及其它
What habits make a programmer great
https://news.ycombinator.com/item?id=14708350
A quote by Kent Beck: I’m not a great programmer; I’m just a good programmer with great habits. So what are the habits I should cultivate to be a great programmer or even a good one? What are the bad habits that I should drop?
我看绩效考核
http://coolshell.cn/articles/17972.html
制定目标和绩效,目的不是用来考核人的,而用来改善提高组织和人员业绩和效率的。人是复杂的,人是有状态波动的,任何时候都不应该轻易否定人,绩效考核应该考核的是事情,而不是人。我个人比较坚持的认为——绩效分应该打给项目,打给产品,打给部门,打给代码,而不是打给人。
许世伟-编程的意义就是让世界变得有趣一些
https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2650996762&idx=1&sn=4d544cdab81f177604231e0d746d11dc
我们的使命其实很简单,一句话就是:释放社会的创新力。创新力的释放其实是有前提的,如果整个社会的创新环境不好,创新力是没办法释放的。影响创新的根源有哪些呢?一个是基础设施,就是云;第二个就是教育。所以我最想做的事情也是这两件事,一个是云计算,一个是教育。
离开微信15天,你会怎么样
https://mp.weixin.qq.com/s?__biz=MzA5MTMyNzAzMQ==&mid=2651542227&idx=1&sn=d63afc05187a198ed45dbe1fd95e9511
https://mp.weixin.qq.com/s?__biz=MzA5MTMyNzAzMQ==&mid=2651542227&idx=2&sn=05e3696b5a38ed612f8132fffdc50f88
社会交往是人类的基本需求,社交网络将这一需求整合入网,用简单的“0/1”承载起丰富的讯息、互动和人际关系,真正成为麦克卢汉所言的“人的延伸”。微信是国内社交网络的典范,随着使用的拓展与加深,我们却看到一些晦暗面正在发生:社交网络上的信息过载和好友关系庞杂,加重了现代人的焦虑和负担;身在人群,目光却在手机屏幕,出现了“群体性孤独”;永远在线,碎片化生存,真实生活备受分心所扰。社交网络对我们产生了哪些影响?它让我们的生活更好了吗?腾讯研究院开启了一场历时6个月的社交网络斋戒实验,让我们一起来看看实验结果。
人类将会失去这些力量 - 尤瓦尔·赫拉利
https://mp.weixin.qq.com/s?__biz=MzIxNTAzNzU0Ng==&mid=2654586129&idx=1&sn=57c8772f99469aa08f8b488709732069
当你作为一个个人,一家企业、政府部门,或者作为精英阶层,我们在做人工智能的时候,做各种各样决定的时候,一定要注意人工智能不仅仅是单纯的技术问题,同时也要注意到人工智能以及其它技术的发展,将会对社会、经济、政治产生深远的影响。我们一定要注重人工智能技术层面的问题,还要严密关注人工智能的发展对社会可能产生的影响。因此,我们在投资与技术发展的时候,还要投入于社会影响的研究。
– THE END –