跳到主要内容

摸鱼精选第 22 期

1. 8K HDR!|为 Chromium 实现 HEVC 硬解 - 原理/实测指南

本文简述了 Web 解码方案现状,介绍了作者为 Chromium 浏览器实现 & 完善硬解过程中遇到的问题和实现原理,并在文末附加了测试结果。

2. 这一年,我对终端组织与技术架构的思考【专家讲技术】

本文作者是咸鱼技术团队的主要负责人宗心。

本文仅以个人观点阐述未来的端研发趋势和人才岗位结构趋势的要求,进而引出闲鱼技术团队今天要做的事情,闲鱼技术团队作为集团创新产品的先头兵,一方面希望通过持续的技术革新为业务带来核心竞争力,另一方面也希望为集团开拓新的技术领域从而引领新的技术风潮,通过技术带来长期的效能红利。

3. clean-code-typescript

Clean code ,代码规范。

扩展阅读:clean-code-javascript

4. React & Redux in TypeScript - Complete Guide

用 ts 写 React 和 Redux 的教程, React 加上类型之后,很多概念和模式需要变化一下,尤其是函数式的编程模式。

5. StateObject 与 ObservedObject

StateObject 在 SwiftUI 2.0 才发布。

StateObject 和 ObservedObject 两者都是用来订阅可观察对象( 符合 ObservableObject 协议的引用类型 )的属性包装器。当被订阅的可观察对象通过内置的 Publisher 发送数据时( 通过 @Published 或直接调用其 objectWillChange.send 方法 ),StateObject 和 ObservedObject 会驱动其所属的视图进行更新。

ObservedObject 在视图的存续期间只保存了订阅关系,而 StateObject 除了保存了订阅关系外还保持了对可观察对象的强引用。

基于 Swift 的 ARC( 自动引用计数 )机制,StateObject 保证了可观察对象的生存期必定不小于视图的存续期,从而确保了在视图的存续期内数据的稳定。

而由于 ObservedObject 只保存了订阅关系,一旦被订阅的可观察对象的生存期小于视图的存续期,视图会出现各种不可控的表现。

6. C++ 20 协程总结

扩展阅读:人人都能学的会 C++协程原理剖析与自我实现

7. Rust 语言之旅

交互式学习 Rust 基础的免费在线教程

8. TextField 在 Flutter 多引擎渲染下需注意的事项

使用 FlutterEngineGroup 时注意的事项:

  1. TextField 必须包裹在 MaterialWidget-Overlay
  
Widget build(BuildContext context) {
return MaterialWidget(
child: Overlay(
initialEntries: [
OverlayEntry(
builder: (context) {
return ...
},
),
],
),
);
}
  1. 键盘弹出问题也不能用传统方法解决,作者采用原生实现时间监听的方法替代。

9. 7GUIs

不用任何框架,仅仅使用原始的 HTML、CSS、JavaScript 开发 7 个 GUI 示例。

在这个框架为核心的时代,脱离了这些框架似乎都丧失了写 GUI 的能力,应该要反思一下了。

10. How to Auto-Generate your Providers with Flutter Riverpod Generator

主要教我们怎么使用riverpod_generator 这个插件来自动生成 Provider。

11. 为什么我推荐使用智能化 async?

JavaScript 的串行处理可以用 Promise.then或者 await,但是遇到每个async函数都需要处理 catch error 的话,就比较啰嗦了。作者希望找到一种更加优雅的写法来满足串行事件处理,通过 combine 多个函数的方式统一处理。

扩展阅读: How to write async await without try-catch blocks in Javascript,作者实现了类似一个库: await-to-js

12. 深入理解 virtual 关键字

C++代码充斥着大量的 virtual 关键字,virtual 本身没啥特异功能,机制原理也很简单。