FEX 技术周刊 - 2020/04/20
2020.04.20 - Azure:世界的电脑
业界会议
Microsoft Online Tech Forum
https://techforum.microsoft.com/virtualsummit/zh-cn/index
Microsoft Online Tech Forum 微软在线技术峰会是一场面向技术专业人群与生态合作伙伴的前沿科技交流大会。围绕“数字化转型加速度”主题,以微软自身技术发展和数字化转型实践为引,从云,生产力、商业应用及数字化转型实践层面助力企业及个人提升自身技术实力,加速数字化转型,成就智能未来。强烈推荐两个主题演讲:炉边对谈及技术愿景解读、微软 Azure:世界的电脑。对 Low Code 感兴趣的同学可以关注 Power Platform。
深阅读
Refactoring: This class is too large
https://martinfowler.com/articles/class-too-large.html
An example of refactoring from a real (flawed) code base. In this article I walk through a set of refactorings from a real code base. This is not intended to demonstrate perfection, but it does represent reality.
Writing an Emulator in JavaScript (and Interfacing with Multiple UIs)
https://www.taniarascia.com/writing-an-emulator-in-javascript-chip8/
I spent a good portion of my childhood playing emulated NES and SNES games on my computer, but I never imagined I’d write an emulator myself one day. However, my boyfriend Vanya challenged me to write a Chip-8 interpreter to learn some of the basic concepts of lower-level programming languages and how a CPU works, and the end result is a Chip-8 emulator in JavaScript that I wrote with his guidance.
Reusable Code: The Good, the Bad, and the Ugly
https://codeburst.io/reusable-code-the-good-the-bad-and-the-ugly-e49cd7bd696
The mythical “reusable code” idea has existed for decades. It showed up shortly after the first lines of code were written. We preach re-usability and sometimes strive for it but it rarely becomes a reality. I’ve seen various levels of success with this over the years. Everything from “we have a
reusable library that 75% of us use” to “we have shared code libraries here, but never use them in your projects”. A recent discussion led me to think about this. Why don’t more software development organizations have shared code libraries?
The evolution of asynchronous programming in JavaScript
https://blog.logrocket.com/evolution-async-programming-javascript/
In this article, we will use callbacks, promises, and async/await to illustrate the concepts of async JavaScript and explain how they work.
前端生产方式:过去 10 年回顾和未来 10 年展望
https://mp.weixin.qq.com/s/c6-9wnxKTq5w3BVqlBFxPQ
在写这篇文章之前,我一直在思考该用什么的方式能讲清楚前端为什么要向智能化方向切换的理由,真的反复思考很久,后来决定还是以我做前端的过去 10 年的所见所闻来做个解答吧,这样让大家也都更有些体感。
面向对象编程,再见!
https://mp.weixin.qq.com/s/MndDONJy6it8G_kJZK1yww
几十年来我都在用面向对象的语言编程。我用过的第一个面向对象的语言是 C++,后来是 Smalltalk,最后是 .NET 和 Java。我曾经对使用继承、封装和多态充满热情。它们是范式的三大支柱。我渴望实现重用之美,并在这个令人兴奋的新天地中享受前辈们积累的智慧。想到将现实世界的一切映射到类中,使得整个世界都可以得到整齐的规划,我无法抑制自己的兴奋。然而我大错特错了。当然,面向对象在早期承诺了许多。而直到今天,这些承诺依然在教室里、博客上和网上资源中传授给青涩的程序员们。我花了多年才意识到面向对象的谎言。以前我也曾经青涩,曾经轻信。然后我发现被骗了。再见,面向对象编程。
从MongoDB迁移到ES后,我们减少了80%的服务器
https://mp.weixin.qq.com/s/q-RJx6UPDakWimNnWo_bUA
本文内容涉及到MongoDB与Elasticsearch两大阵营,可能会引起口水之争,仅代表个人经验之谈,非阵营之说,围绕两个话题展开:为什么要从MongoDB迁移到Elasticsearch?如何从MongoDB迁移到Elasticsearch?
33 line React
https://leontrolski.github.io/33-line-react.html
In this post, I’m going to make the smallest React-like thing that can do the above. It’s very mithril influenced.
Profiling React.js Performance
https://addyosmani.com/blog/profiling-react-js/
Today, we’ll look at measuring React component render performance with the React Profiler API, measuring interactions with React’s new experimental Interaction Tracing API and measuring custom metrics using the User Timing API.
Auto Effect Pattern with Redux and React Hooks
https://tech.ebayinc.com/engineering/auto-effect-pattern-with-redux-and-react-hooks/
A pattern for managing HTTP requests with Redux and React hooks. It separates concerns of data fetching and binding logic from components into hooks to make it easier to use.
Best Practices With React Hooks
https://www.smashingmagazine.com/2020/04/react-hooks-best-practices/
This article covers the rules of React Hooks and how to effectively start using them in your projects. Please note that in order to follow this article in detail, you will need to know how to use React Hooks.
Gain access to your functions with CORS
https://www.openfaas.com/blog/function-cors/
This post will show you how to gain access to your functions from a known endpoint through the use of CORS headers.
Userscripts Are Fun And Are Still Very Much Relevant
https://dutzi.party/userscripts-are-fun/
https://github.com/dutzi/userscripts/
A userscript is a script that usually helps make the web a better place. Want to use J and K keys to scroll through the new Facebook UI? There’s a userscript for that! Need that YouTube video on your drive? Guess what? You can!
Comparing HTTP/3 vs. HTTP/2 Performance
https://blog.cloudflare.com/http-3-vs-http-2/
we’re very excited to be allowed to help push this standard forward. Our implementation is holding up well, offering better performance in some cases and at worst similar to HTTP/2. As the standard finalizes, we’re looking forward to seeing browsers add support for HTTP/3 in mainstream versions. As for us, we continue to support the latest drafts while at the same time looking for more ways to leverage HTTP/3 to get even better performance, be it congestion tuning, prioritization or system capacity (CPU and raw network throughput). 另附:How HTTP/3 and QUIC aim to help the connections that need it most.
Object Stores Starting to Look Like Databases
https://www.datanami.com/2020/04/16/object-stores-starting-to-look-like-databases/
Technically, any repository of data could be considered a ‘database’ but now object stores, such as those vast repositories of data sitting behind an S3 API, are beginning to resemble more structured, traditional databases in many ways. This feels a trend and market that will continue to grow in the near future.
TerminusDB: A Technical History
http://blog.terminusdb.com/2020/04/14/terminusdb-a-technical-history/
TerminusDB is an open source (GPLv3) full featured in-memory graph database management system with a rich query language: WOQL (the Web Object Query Language).
The Computer Scientist Who Can’t Stop Telling Stories
https://www.quantamagazine.org/computer-scientist-donald-knuth-cant-stop-telling-stories-20200416/
For pioneering computer scientist Donald Knuth, good coding is synonymous with beautiful expression.
Finally We May Have a Path to the Fundamental Theory of Physics… and It’s Beautiful
https://writings.stephenwolfram.com/2020/04/finally-we-may-have-a-path-to-the-fundamental-theory-of-physics-and-its-beautiful/
The most important thing—about which I’m extremely excited—is that I think we’re finally on the right track. Of course, perhaps not surprisingly, it’s still technically difficult. Part of that difficulty comes directly from computational irreducibility and from the difficulty of working out the consequences of underlying rules. But part of the difficulty also comes from the very success and sophistication of existing physics.
How to Rediscover the Joy of Programming?
https://news.ycombinator.com/item?id=22860682
A popular Hacker News discussion from this week about how to make programming really click for you, rather than being merely a daily slog.
新鲜货
Edge 81 稳定版亮点速览
https://sspai.com/post/60041
经历了早前简短的 暂停 后,新版 Edge 浏览器近期向稳定版用户正式推送了 Edge 81 稳定版本,在这个版本中,不少 Edge 浏览器独有的特色体验悉数回归,总算是实现了 Web 标准兼容性和特色功能之间的完美平衡。在这篇文章中我们就来对 Edge 浏览器新版更新中的亮点进行汇总。
Bash 脚本教程
https://wangdoc.com/bash/
阮一峰老师的互联网文档计划中的 Bash 教程,介绍 Linux 命令行 Bash 的基本用法和脚本编程。
GitHub is now free for teams
https://github.blog/2020-04-14-github-is-now-free-for-teams/
This means teams can now manage their work together in one place: CI/CD, project management, code review, packages, and more. We want everyone to be able to ship great software on the platform developers love. 另附:npm has joined GitHub, So long, and thanks for all the packages!.
Announcing CodePen support for Flutter
https://medium.com/flutter/announcing-codepen-support-for-flutter-bb346406fe50
CodePen has been a big fan of Flutter and the Dart programming language for years. We’re pretty pumped that Flutter now supports mobile and the web. The Flutter community is growing fast, which is why we’re excited to support Flutter with its own custom CodePen editor! Flutter is officially a first-class member of the CodePen community. We can’t wait to see what you build with Flutter on CodePen.
Puppeteer 3.0
https://github.com/puppeteer/puppeteer/releases/tag/v3.0.0
Puppeteer can now fetch a Firefox Nightly binary for you via PUPPETEER_PRODUCT=firefox npm install. Also, there’s now an example showing how to launch Firefox with Puppeteer.
What’s New in Swift 5.2
https://www.raywenderlich.com/9224115-what-s-new-in-swift-5-2
Swift 5.2 is now available as part of Xcode 11.4. In this article, you’ll get an overview of the changes you’ll see moving to Swift 5.2.
All 200+ Google Cloud products described in 4 words or less
https://medium.com/google-cloud/google-cloud-products-described-in-4-words-or-less-7776af0552cd
Includes Google Cloud, Firebase, Google Maps Platform, G Suite APIs.
Vime
https://vime-js.com/
All your media player needs in one place - a modern alternative to Videojs and Plyr. Supports Html5, Hls, Dash, YouTube, Vimeo, Dailymotion and more to come.
React PDF viewer
https://github.com/phuoc-ng/react-pdf-viewer
A React component to view a PDF document. It’s written in TypeScript, and powered by React hooks completely.
Flip Counter Plugin
https://pqina.nl/flip/
flip is the most advanced Flip counter plugin available on the web. It’s super easy to setup, amazingly flexible and beautifully animated.
node-libcurl - libcurl bindings for Node.js.
https://github.com/JCMais/node-libcurl
The fastest URL transfer library for Node.js.
Falcon: Free, open-source SQL client for Windows and Mac
https://github.com/plotly/falcon
Falcon is a free, open-source SQL editor with inline data visualization. It currently supports connecting to RedShift, MySQL, PostgreSQL, IBM DB2, Impala, MS SQL, Oracle, SQLite and more (for connecting to Oracle, please, see here the instructions to install the required free Oracle Instant Client). 另附:TablePlus - Database management made easy.
The Webpage, an online RSS reader and news aggregator, styled like a newspaper
https://news.russellsaw.io/?id=8ae26a2e-ec3b-41f3-bd7c-688349737e7e
RSS Feeds for the 20th century.
KolibriOS
https://kolibrios.org/en/
KolibriOS is a tiny yet incredibly powerful and fast operating system. This power requires only a few megabyte disk space and 8MB of RAM to run. Kolibri features a rich set of applications that include word processor, image viewer, graphical editor, web browser and well over 30 exciting games. Full FAT12/16/32 support is implemented, as well as read-only support for NTFS, ISO9660 and Ext2/3/4. Drivers are written for popular sound, network and graphics cards.
Workstream
https://workstream.paperspace.com/
Your full computer in the cloud. Workstream is a super fast, virtual computer you can use for anything.
Front-End Challenges
https://css-tricks.com/front-end-challenges/
My favorite way to level up as a front-end developer is to do the work. Literally just build websites. If you can do it for money, great, you should. If the websites you make can help yourself or anyone else you care about, then that’s also great. In lieu of that, you can also make things simply for the sake of making them, and you’ll still level up. It’s certainly better than just reading about things!
设计
The Decline of Usability
https://datagubbe.se/decusab/
In which we delve into the world of user interface design.
Inclusive Design vs Accessible Design (with Infographic)
https://www.toptal.com/designers/ui/inclusive-design-infographic
Every designer, regardless of their specialty, should aim to create digital products that can be used by the widest range of people. To do that, they must step away from preconceived notions of what a “typical” user is, and instead, look at people as unique, diverse individuals who have differing abilities at different times in their lives, based on their particular environment.
Open UI
https://open-ui.org/
UI component patterns have evolved and stabilized but have not made their way to browsers or standards. Designers and developers reinvent the same components for every product they build. When building a web app or web page designers and developers should have a common set of components at their disposal. We shouldn’t have to rebuild a dropdown, modal dialog, split button, or other components before we build our products.
产品及其它
Google Wave 的失败给现代实时协作办公的一个重大教训
https://mp.weixin.qq.com/s/dXpC-NOdGVkqTsbKeKl8ng
当Google Wave在2009年的I/O大会上首次亮相时,人们感到它是一种与众不同的工具。不仅是因为它是远程办公热潮出现之前的第一个统一办公区和协作平台,而且还在尝试解决如今我们面临的许多问题。然而,不到两年的时间,Google Wave就失败了。如果我们回顾该平台的推出方式,就不会对于为何它在Saas创新历史上的昙花一现感到奇怪了。该产品缺乏重点,涉及定位问题以及发布计划乏善可陈等等,而且这些只是其中的部分问题。如今,由于越来越多的公司采用分布式模型,因此从Wave的错误中吸取教训非常重要。随着实时协作工具的全面兴起,反思先驱的故事可以为未来提供宝贵的经验教训。
A New Hope
http://blog.cleancoder.com/uncle-bob/2020/04/05/ANewHope.html
Are you glad you’re a programmer Dad? It’s an important job, Son. I never want to be anything else. Except, of course, your Dad.
对数据可视化有兴趣的可以阅读由 AntV 带来的 墨者修齐 2020-04-19 · 香港特别行政区行政长官林郑月娥的民众支持率、Space Junk、龙卷风迁移-可视化大数据移动、The flowing Vector Map
– THE END –