Skip to main content

3月12日内容汇总

· 15 min read
加菲猫

⭐️ Go 高性能 - map 优化 (三)

⭐️ Go 高性能 - map 优化 (二)

⭐️ Go 语言中结构体嵌入结构体

⭐️ Go Slice 扩容的这些坑你踩过吗

📒 Go 为什么不像 Rust 用 ?!做错误处理

📒 字节跳动自研 Web 构建工具 Rspack 正式发布

⭐️ 跟着 Go 作者学泛型

⭐️ Webpack 迁移 Rspack 速攻实战教程(前瞻版)

⭐️ Go 高性能 - 内存对齐

⭐️ Go 高性能 - map 优化 (一)

📒 Next.js了解篇|一文带你梳理清楚 Next.js 的功能

📒 Go 在 3.8 妇女节(女神节)发布最新版本 Go 1.20.2 和 Go 1.19.7 安全更新

📒 解析 React 性能优化 API

⭐️ Go 高性能 - 逃逸分析

📒 一篇文章带你理解 React 中最“臭名昭著”的 useMemo 和 useCallback

📒 GSAP从入门到精通

⭐️ 最新最全Go主流框架高频面试题大全

📒 2023 年静态站点生成器 (SSG) 指南

📒 Node.js Toolbox:发现 Node.js 包的一种新方法

https://nodejstoolbox.com/

⭐️ Golang下的ORM框架gorm的介绍和使用

⭐️ 如何使用 splitChunks 精细控制代码分割

📒 浅析 SplitChunksPlugin 及代码分割的意义

📒 5W1H 带你入门 Monorepo

⭐️ 面试官:请说一下如何优化结构体的性能

⭐️ Go 高性能 - 打印调用堆栈

⭐️ Go 高性能 - 结构体优化 (一)

⭐️ Go 高性能 - index vs value in for

⭐️ Go 高性能 - int to string

📒 参考云谦大佬的项目,用 ChatGPT 给前端相关文章写总结

https://github.com/sorrycc/url-system

https://github.com/advancedlogic/GoOse

https://pkg.go.dev/golang.org/x/net/html

📒 前端构建工具进化历程

📒 18个很有用的 CSS 技巧

📒 Go 语言怎么一键生成一个 gRPC 服务

⭐️ Go 最细节篇|内存回收又踩坑了

⭐️ Go设计模式实战--用状态模式实现系统工作流和状态机

⭐️ 「每周译Go」如何在 Go 中使用结构体标签(文末有GIFT)

⭐️ Go设计模式--享元模式,节省内存的好帮手

📒 MDH 前端周刊第 90 期:Signals、Signia、Replit、ChatGPT、CHIPS、技术债

《Demystifying Create React Signals Internals · Daishi Kato's blog》。本文主要介绍了 create-react-signals 库的内部工作原理,这个库的主要目的是将 React 组件中的状态管理从 React 自身分离出来,并使用 signals 来实现状态管理。Signals 是一种包含订阅、获取和设置值等功能的存储对象。文章讲解了如何使用自定义 JSX 转换器将 Signals 转换为可在 React 中使用的组件,以及如何处理对象类型的信号和跳过 diffing 等问题。作者认为,Signals 仍然是 React 中一个开放的研究领域,而使用 Observable 作为新的基元可以进一步探索这种方法。

https://blog.axlight.com/posts/demystifying-create-react-signals-internals/

《The JavaScript Site Generator Review》。该篇文章对当前流行的七种 JavaScript 网站生成器进行了评论。对于 npm 安装时间、客户端 JavaScript 基线、node_modules 权重、npm 审计、遥测(TELEMETRY)等内容进行了测试。其中,有些工具使用创建 x 包来安装依赖,并且包括了帮助用户安装依赖的步骤。然而,这些工具中有一些隐藏了 npm 审计结果(包括关于高严重度的安全漏洞)。还有一些工具默认开启了遥测功能,需要用户选择退出。此外,该文还附带了作者之前的评论和文章链接。

https://www.zachleat.com/web/site-generator-review/

《Effective Higher-Order Components :: Building Better Software Slower》。本文介绍了 React 中的高阶组件(Higher-Order Components,简称 HOC),它是一个接受组件的函数,并在附加逻辑的包裹下返回它。作者指出,虽然 HOC 带来了无限的可能性,但实际应用应限于透明地添加包装或逻辑。同时,作者提出了 HOC 的一些惯例和注意事项,例如 HOC 不应该改变所提供的组件的 API,HOC 应该有一个符合 withNoun 模式的名字,除了组件本身之外,HOCs 不应该有任何参数等等。此外,作者还介绍了一些最常见的 HOC,例如 Props记录、添加格式化等。最后,作者强调,HOC 应该是一个减轻 JSX 精神负担的工具,而不是炫耀函数式编程技巧的机会。钩子是一个更可预测的、明确的模式,但好的 HOC 依然存在并提供了强大的模式。

https://www.bbss.dev/posts/effective-hocs/

《Introducing ChatGPT and Whisper APIs》。OpenAI 宣布,其 ChatGPT 和 Whisper 模型现已可用于 API,让开发者能够使用尖端的语言和语音转文本功能。通过一系列系统级别的优化,自去年 12 月以来,ChatGPT 的成本降低了 90%;现在将这些节省成本传递给 API 用户。开发者现在可以在 API 中使用我们的开源 Whisper large-v2 模型,获得更快速、更具成本效益的结果。Snap Inc.、Quizlet、Instacart 和 Shopify 等公司已经开始使用 ChatGPT API 和 Whisper API。OpenAI 还改进了 API 服务条款以更好地满足开发者的需求。同时,OpenAI 还提供专用实例,使开发者能够深入控制特定模型版本和系统性能。

https://openai.com/blog/introducing-chatgpt-and-whisper-apis

《ChatGPT use case examples for programming - RisingStack Engineering》。本文介绍了一些人们如何在职业网页开发中使用 GPT 等 “AI” 工具。作者分享了他的同事们使用 GPT 及其各种变体的经验,以帮助读者更好地理解它们的实用性。例如,Code GPT 是一个 VS Code 插件,可以从注释提示中生成代码、生成单元测试、查找问题、重构代码、记录和解释代码、以及提出问题。ChatGPT 则可用于编写 Mongo 查询、代替 StackOverflow 等。然而,作者指出,使用这些工具时需要小心检查生成的内容,因为 GPT 可能会产生不对的结果。此外,尽管 “AI” 不会大规模取代就业岗位,但它将提高生产力,就像 Photoshop 是更好的画笔一样。

https://blog.risingstack.com/chatgpt-use-case-examples-for-programming/

《React vs Signals: 10 Years Later》。本文探讨了 JavaScript 中的信号(Signals)技术,以及它与 React 的区别和联系。信号是一种细粒度的响应式编程技术,可以用于前端开发中的数据流管理。尽管在 React 和虚拟 DOM 的兴起中,信号被认为是不可预测和危险的模式,但实际上信号从未消失,而是以第三方库或框架的形式存在。本文介绍了 SolidJS,这是一种新型的信号技术,它采用了组合、单向数据流和显式变异等原则,并将所有东西都视为 Effect,与 React 不同的是,它不会将所有操作视为纯函数,而是通过隔离更新来实现状态变化。作者认为,React 曾经 “修复” 了前端开发,但现在信号技术的复兴又将其推向了新的竞争时代。

https://dev.to/this-is-learning/react-vs-signals-10-years-later-3k71

《I'm not sure I understood this article. I think... — DEV Community》。这是 Dan 对于上一篇文章(Signals 主题)的评论。他探讨了 React 和 Solid 在处理渲染逻辑上的不同策略。React 的核心思想是,能够编写渲染逻辑,使其在初始化和更新时都能够运行,并且不会与传递的数据不同步。Solid 则只有模板中的 “空洞” 是响应式的,因此不能像 React 那样使用 if 语句和控制流。作者认为,Solid 的优点在于可以避免部分逻辑的重新执行,但这并不是最终的理想状态。通过编译器,可以实现在不重组代码的情况下自动确定 “组”,以达到类似 useMemo 的优化效果。最后,作者指出 React 不需要将渲染逻辑从内向外编写才能实现更新,这是 React 默认具备的响应性。

https://dev.to/dan_abramov/comment/256g9

《Remote Access to Your Repls via SSH》。Replit 是一个基于云的编码平台,它的所有付费计划都增加了使用 SSH 远程访问 Repls 的功能。订阅了付费计划的用户可以添加他们的 SSH 密钥,并远程操作他们的 Repl。此举使用户能够充分利用 Replit 的功能,同时继续使用其本地开发环境。Replit 将每个 Repl 放入自己的容器中,一旦连接被打开就会运行。在该容器内,一个 SSH 服务器处理所有远程访问需求。一个代理接收连接,验证密钥,并将 SSH 连接通过加密的 SSH 隧道路由到 Repl。

https://blog.replit.com/ssh

《Introducing Signia》。TLDraw 的开发团队发布了其核心反应式状态管理系统的开源项目 Signia。该库是用于使用基于逻辑时钟的新惰性反应模型处理细粒度反应值(称为 “信号”)的原始库,它诞生的原因是需要高效地处理经常更改的大型派生不可变集合。除了核心库之外,还发布了与 React 绑定的内容。Signia 的 API 类似于 Jotai、@preact/signals 和 Recoil 等类库,其主要区别特征是具有增量派生和内置支持回滚的事务。Signia 的反应性系统基于单个整数,即全局逻辑时钟,每当更新根状态值时,该时钟就会递增。比较时钟值允许 Signia 始终缓存派生值,而不管它们是否正在被积极观察。Signia 的响应式系统基于逻辑时钟和差异,可以实现增量计算派生值。

https://tldraw.substack.com/p/introducing-signia

《The 25 Percent Rule for Tackling Technical Debt》。这篇文章讨论了技术债务的不同类型,并提出了一种 “25% 规则”,即每周花费 10%的时间解决日常技术债务,另外 10%的时间解决每周技术债务,剩下的 5%用于处理每月和每年的技术债务。作者认为,解决技术债务并不是大规模修复的问题,而是通过文化建设来实现。通过改进日常工作中的代码、庆祝重构代码的能力以及知道何时选择好的而不是完美的,可以帮助解决技术债务问题。

https://shopify.engineering/technical-debt-25-percent-rule

《You Don't Need a Build Step》。本文探讨了为什么现代 Web 开发需要构建步骤,以及如何使用 Deno 和 Fresh 等工具实现无需构建的开发。文章介绍了构建步骤的来龙去脉,包括编译、压缩、打包和代码分割等过程,并列举了一些流行的构建工具。作者认为,构建步骤是现代 Web 开发不可避免的一部分,但也带来了复杂性和长时间的构建时间。使用 Deno 和 Fresh 可以实现无需构建的开发,从而提高开发效率和代码质量。

https://deno.com/blog/you-dont-need-a-build-step

《Three ways to activate an inspector in Node.js | pawelgrzybek.com》。本文介绍了三种激活 Node.js inspector 的方法,其中一种是使用 NODE_OPTIONS 环境变量来调试间接运行 Node 的进程。如果您是 Node.js 调试器的新手,可以查看作者之前发布的两篇文章:“在 Google Chrome 中进行基本的 Node.js 调试” 和 “解释 Visual Studio Code 调试器中的继续、步过、步入和步出操作”。

https://pawelgrzybek.com/three-ways-to-activate-an-inspector-in-node-js/

MDH 前端周刊第 90 期:Signals、Signia、Replit、ChatGPT、CHIPS、技术债

📒 Go语言爱好者周刊:第 179 期 —— Google 出品的分布式应用 Go 框架 weaver