- Published on
2023-第二十三周
- Authors
- Name
- AgedCoffee
- @__middle__child
该周报主要为各个地方内容的汇总整理
技术
The evolution of React APIs and code reuse
本文讨论了 React 的演变以及出现的各种代码重用模式,包括 mixins、higher-order components 和 render props。它探讨了塑造它们的基本思维模型、带来的权衡以及过度使用它们的陷阱。最终,文章得出结论,拥有清晰准确的技术思维模型是掌握技术的关键,而对事物如何工作的集体理解有助于在代码库中创建一致的视觉和结构。
云音乐低代码 + ChatGPT 实践方案与思考
网易云音乐前端团队已将 LLM 集成到其低代码平台中,以增强用户体验。AI Copilot 功能使用户可以使用自然语言创建、修改和配置组件并生成代码片段。此外,该团队还开发了一个基于 LLM 的问答系统,以提供更好的用户体验。该平台基于源代码驱动的低代码开发系统,可以实现灵活高效的开发。该团队还强调了在低代码产品设计中拥抱开源社区和主流生态系统的重要性。作者认为,LLM 将对工作和生活产生重大影响,探索和应用这些变化至关重要。
The origin private file system
文件系统标准引入了源私有文件系统 (OPFS),作为页面来源私有且用户不可见的存储端点,提供高度优化的性能访问特殊文件的可选方式。现代浏览器支持 OPFS。传统的网络文件处理方式不符合用户编辑文件的思考方式,意味着用户最终会得到输入文件的下载副本。文件系统访问 API 引入了三种选择器方法,使得网络文件的现代化处理更加流畅。通过这些方法访问的文件和文件夹存在于用户可见的文件系统中。从网络保存的文件,特别是可执行文件,都会被标记为 Web 标记,因此操作系统可以在执行潜在危险文件之前显示额外的警告。原始私有文件系统不适合用户查看,且站点来源私有。
HTML's Graphical 3D Future
Lume 是一个项目,它提供了一组用于 3D 渲染的 HTML 元素,基于 three.js 进行渲染,并使用由 Solid.js 支持的响应式和模板化系统来定义新的自定义 HTML 元素。Lume 允许开发人员在 3D 空间内使用所有今天的 HTML/CSS 能力,具有额外的图形能力,获得 3D 内容的可访问性。Lume 还提供了 Lume Element,用于定义自定义元素的系统。该文章提到了 Lume 在 Three.js 基础上构建的其他功能,以及 Lume 路线图的更多细节。
Software 2.0
- 神经网络代表了软件开发方式的根本转变,呈现出向以数据训练的抽象语言编写的软件 2.0 转变的趋势。
- 将复杂的程序移植到软件 2.0 堆栈中具有许多优势,包括计算的同质性、在硅中的简单集成,以及能够处理具有大数据集的实际问题的能力。
- 谷歌处于这种转变的前沿,专注于将其大部分组件重写为软件 2.0 代码,并将统计强度融合成对世界的一致理解。
神经网络不仅仅是机器学习工具箱中的另一个工具;它们代表了软件开发向软件 2.0 的根本转变,该软件是用抽象且不易理解的语言编写的,并依赖数据和神经网络结构来确定所需的行为。随着越来越复杂的程序移植到 2.0 堆栈中,这种转变正在行业内发生,这种方法有许多好处,包括计算机同质性和在硅中易于实现。这种转变的示例包括视觉识别、语音识别和合成、机器翻译、游戏以及数据库。
Building a magical AI-powered semantic search from scratch
- 由于大型语言模型和 OpenAI 的完成 API 的最新进展,构建基于 AI 的语义搜索现在变得易于实现和快捷。
- 为了对内容进行索引,必须将文章块转换为嵌入向量,将这些嵌入向量存储在数据库中,将用户查询转换为嵌入向量,并使用余弦相似度将其与存储的嵌入向量进行比较。
- 为了确保返回给定查询的最相关结果,需要使用更高的余弦相似度阈值为 0.85,并利用 OpenAI 的完成 API 与人工编写的提示来提供准确且易于访问的响应。
本文作者使用 OpenAI 的大型语言模型和 Supabase 的 pgvector 数据库为其博客构建了一个基于 AI 的语义搜索。该项目涉及将博客内容索引化,将其转换为嵌入向量并将其存储在数据库中。作者解释了什么是嵌入向量以及它们如何工作,包括使用余弦相似度来确定句子之间的相似度。本文还涵盖了如何使用 OpenAI 的完成 API 获取人类可读的搜索输出。
工具
react-unity-webgl
React Unity WebGL 提供了一种现代解决方案,用于将 Unity WebGL 构建嵌入到 React 应用程序中,同时为 Unity 和 React 之间的双向通信和交互提供高级 API。
bundlejs
一个在线工具,可以快速打包和压缩您的项目,并在本地浏览器上查看压缩后的 gzip/brotli 文件大小。
taichi.js
对 webGPU 使用的 js 封装
eslint-plugin-perfectionist
🦄 ESLint 插件,用于对各种数据进行排序,例如对象、导入、类型、枚举、JSX 属性等。
更新
HTTP Batch Stream Link
httpBatchLink 是一个终止链接,它将多个 tRPC 操作批处理成一个 HTTP 请求,发送到单个 tRPC 过程中。它用于减少发送的 HTTP 请求数量和服务器上的数据库查询数量。可以设置最大 URL 长度选项来限制一批发送的请求数量。批处理功能可以在服务器或 tRPC 客户端上通过将 httpBatchLink 替换为 httpLink 来禁用。
astro 2.6
Astro 2.6 发布了几个实验性功能,现在已经稳定并可用于所有 Astro 项目。这些功能包括中间件、混合 SSR 输出模式、自定义客户端指令和 CSS 内联。中间件允许开发人员在页面呈现并返回给用户之前或之后运行代码。混合 SSR 输出模式将交互式 API 端点和页面混合到站点中,同时默认情况下保持整个项目静态和预渲染。自定义客户端指令允许开发人员定义自己的客户端指令,而 CSS 内联会自动将小的 CSS 片段内联到 HTML 中,以加快页面加载速度。
其他
如果你有原创性,就可以回避竞争。基本上,如果你与别人发生竞争,那是因为你们在做同样的事情。如果每个人做的事情都有所不同,就可以减少竞争,或者不存在竞争。所以,不要模仿他人。
-- Naval,美国著名风投家