第1期 — 2019-05-06

在浏览器中阅读

周e信

Node.js

Electron 5.0.0 发布🔗

Electron 5 此版本这三者分别升级到了:Chromium 73.0.3683.119、Node.js 12.0.0 与 V8 7.3.492.27。

Electron 5 继续践行 Promise 化,将 Electron 中基于回调的 API 转换为 Promise。

systemPreferences 添加或改进了一些功能,用于获取 macOS 系统颜色。

此外,根据版本支持计划,Electron 2.0.X 已经 EOF,官方不再对其提供支持。同时,6.0.0 版本的发布计划也已经出炉。

官方原文

h4cd

Node.js 最佳实践 - 新增避免将私密信息发布到npm🔗

Node.js 最佳实践最近添加了避免将私密信息发布到npm的条目.

应使用.npmignore,.gitignore的黑名单和package.json中的files白名单配合使用将私密信息排除到提交中.

更多私密信息处理办法见6.3 把机密信息从配置文件中抽离出来,或者使用包对其加密

不要在配置文件或源代码中存储纯文本机密信息。相反, 使用诸如Vault产品、Kubernetes/Docker Secrets或使用环境变量之类的安全管理系统。最后一个结果是, 存储在源代码管理中的机密信息必须进行加密和管理 (滚动密钥(rolling keys)、过期时间、审核等)。使用pre-commit/push钩子防止意外提交机密信息。

Yoni Goldberg

Node12.1.0,Node11.15.0发布,Node12新特性🔗

Node12.1.0发布, Node11.15.0发布

Node12有哪些值得关注的新特性 V8 更新带来好多不错的特性。 HTTP 解析速度提升。 启动速度大幅提升。 更好的诊断报告和堆分析工具。 ECMAScript 模块更新。 提供了生成堆转储的功能,从而可以更轻松地调查内存问题。 工作线程不再需要标志。 http已将其默认解析器更新为llhttp。 assert 验证所需的参数并调整松散的断言。 buffer 改进使其更稳定和安全。 async_hooks 删除已弃用的功能。

Michaël Zasso , Shelley Vohr, hzrWeber

前端

Facebook在f8开发者大会2019上宣布将使用React+GraphQL+Relay完全重写facebook.com🔗

此次 f8 开发者大会 2019 上,facebook 宣布重新设计 facebook.com 的代号为"FB5"。

徐川

十行代码实现React Hooks🔗

代码解千言 。 “魔法”就是数组。

Ka

作为一个Laravel社区成员,我为什么喜欢react更多于vue一些🔗

我使用 TypeScript; 我只用 function,不用 class; 我使用 Redux + Immer; 我基本不构建 SPA,而是普通的 server/client app,后端用 Laravel;

React 和 typescript 结合很好; React 提倡用 function; React 使用小 api 例如 都是 props,而不是 v-for,v-if; React 从根本上解决问题。

结论:我为什么喜欢 React:

  • API 保持简单,React 宣言其关注在可组合性上
  • React Team 一般会从根本上反思问题

Sebastian De Deyne

React Native用了三年,发布了四个高分app后我学到了什么🔗

快速开发,适合创业公司。 React Native != Web。 推荐的第三方库 react-native-firebase  用于通知 tipsi-stripe  用于支付 date-fns  用于日期 react-native-svg  用于 svg 同时在 ios 和安卓上测试,要真机测试。 作者对 React Native 持非常正面的观点,以后会继续使用。

Kyle Erickson

Babylon.js 4.0发布-最强webGL图形引擎🔗
  • 添加了虚拟场景检测器工具
  • 增强了现实渲染物理引擎
  • 增加了对 ammo.js 物理引擎的支持
  • 新的站点外观
  • 在线可编辑demo

Microsoft

数据库

nodejs代码运行内存mongo🔗

默认会下载对应平台的最新 mongodb,并将数据存储到内存中,大约占据 7M 内存空间。默认不需要配置,也可以通过代码,环境变量,package.json 来配置。支持replica set

Pavel Chertorogov

mongo charts预览版支持嵌入到网页🔗

生成 iframe 代码嵌入 html 中。目前支持两种方式:

  • 完全公开,所有人可见
  • 更多身份验证选项,指定可见范围 所有图标都可以实时更新。 更多Demo

Jane Fine

Hazelcast回喷redis基准测试2018结果🔗

Hazelcast 演示展示了接近线性的缩放,而 Redis 只有 32 个线程达到极限。根据我们与全球最大客户的经验,Redis 的线程限制极其成问题,要么无法满足概念验证要求,要么无法适应负载增长。

hazelcase,banq

MongoDB宣布3900万美元收购开源数据库公司Realm🔗

Realm 是一家面向移动应用的开源数据库公司,在被收购之前已经成功筹集了 4000 万美元。通过收购 Realm,Mongo 不仅获得了强悍的移动解决方案,填补了 MongoDB Mobile 的不足,而且还获得了 Realm 的技术、用户群和工程人才。

cnBeta.COM

Python

Python3.7新特性dataclass,async,await等🔗

dataclass

修饰符@dataclass为类自动构建构造函数,其参数为此类声明的属性按顺序赋值。

from typing import List
from dataclasses import dataclass, field

@dataclass
class Foo:
    name: str
    id: str
    bars: List[str] = field(default_factory=list)


# usage

a_foo = Foo("My foo’s name", "Foo-ID-1", ["1","2"])

Asyncio 和 async/await

async/await成为了保留关键字。同时简化了Asyncio的使用。

3.7之前:

import asyncio
loop = asyncio.get_event_loop()
loop.run_until_complete(some_async_task())
loop.close()

3.7之后:

import asyncio
asyncio.run(some_async_task())

新关键字breakpoint()

do_something()
breakpoint() #进入调试
do_something_else()

上下文变量

import contextvars
import asyncio

val = contextvars.ContextVar("val", default="0")

async def setval():
   val.set("1") #独立的val,设置的值不会影响其他上下文

async def printval():
   print(val.get()) #独立的val,取得是默认值

asyncio.run(setval()) # 1
asyncio.run(printval()) # 0

Dictionaries 默认就是保持顺序的

3.7后默认的字典就是保持顺序的,OrderedDict依然未变。

CASEY FAIST

运维

dockly - 沉浸式docker管理命令行工具🔗

安装sudo npm install -g dockly,运行dockly。会自动检测本地 docker 服务。

Liran Tal

Debian 归档Wheezy,Jessie版本 🔗

2019 年 3 月 debian 发表声明宣布系统的分支 Wheezy,Jessie 将归档,这导致其资源链接由原来的 deb.debian.org 转到 archive.debian.org, 最终结果是,许多依赖 debian:wheezy 或 debian:jessie 的 docker 镜像不能构建。

Ka

Java

Google 发布新的 Java 日志框架 Flogger,总体可读性增加🔗

据 Google 宣称,Flogger 可“比现有的日志 API 提供更多的优点”。其中包括:降低了禁用日志语句的代价、增加了总体的可读性,以及对可扩展性的支持。

Flogger 宣称其主要优点之一是“对于已禁用日志层级的完全无代价实现”,而其他所有日志记录框架依然可能会对已禁用的日志语句生成字节码。Flogger 在设计上考虑了完全避免产生额外的代价。

示例:

logger.atError()
  .withCause(exception)
  .log("The arg, ‘%s’ caused an error", arg);

疑问:如果这样写

logger.at(DEBUG)
  .log("The request is ‘%s’ caused an error", JSON.toString(request));

也还是无解的吧?

Dustin Schultz,盖磊

其他

VS Code Remote 发布!开启远程开发新时代🔗

北京时间 2019 年 5 月 3 日,在 PyCon 2019 大会上,微软发布了 VS Code Remote,开启了远程开发的新时代!

这次发布包含了三款核心的全新插件,它们可以帮助开发者在容器、物理机器或虚拟机,以及 Windows Subsystem for Linux (WSL) 中实现无缝的远程开发。通过安装 Remote Development Extension Pack ,你可以快速上手远程开发。

P.S: 该功能目前仅支持在 Insider 版本中使用,当然最终也会在 Stable 版本中提供。

VS Code Team, 韩骏

扫描二维码关注微信公众号
本期阅读量