## 设置一个 .onion 站点:快速指南 本指南详细介绍了如何轻松创建一个现有网站的 .onion 镜像。这个过程很简单,只需要几个命令和配置更改。作者设置此站点主要是为了挑战自我并支持言论自由/反审查理念。 设置使用 DigitalOcean 的 Debian VPS 和 Caddy Web 服务器。首先,通过 `apt` 安装 Tor。然后,修改 Tor 配置文件 (`/etc/tor/torrc`) 以创建一个隐藏服务,指定端口(通常为 80)并禁用不必要的功能,如 SOCKS 代理和目录服务。重启 Tor 后,会生成一个唯一的 .onion 地址,并可在 `/var/lib/tor/hidden_service/hostname` 中找到。 如果 Caddy 已经在端口 80 上提供该站点,则只需要最少的配置。 .onion 站点不可用 HTTPS,因此使用 HTTP。最后,作者建议通过在常规网站上添加 `Onion-Location` 标头来宣传 .onion 地址,从而无缝地将 Tor 用户引导至镜像站点。整个过程简单易懂,即使是不熟悉暗网的人也能轻松上手。
## Baker:快速、灵活的项目脚手架工具
Baker 是一个用 Rust 编写的命令行工具,用于快速搭建具有可定制模板的新项目。它以其语言无关的方法脱颖而出,支持用于自动化任务的钩子,无论项目的语言如何。安装可以通过 Scoop、Homebrew 或可下载的二进制文件轻松完成。
模板使用 `baker.yaml`(或 JSON)定义,以配置设置、提示和文件生成。Baker 利用 MiniJinja 模板引擎,允许动态内容、条件文件创建以及文件名和内容中的变量替换。它支持结构化数据输入(JSON/YAML),并通过 JSON Schema 进行验证,并提供灵活的问题类型,包括单个输入、布尔值、多项选择和复杂的 JSON/YAML 编辑器。
主要功能包括用于自定义逻辑的预/后钩子、特定于平台的配置以及用于条件提示的强大 `ask_if` 属性。答案可以交互式地提供,通过文件提供,或通过管道输入以进行 CI/CD 集成。Baker 优先考虑安全性,具有钩子执行警告,并提供轻量级、跨平台体验。它是一个比 Kickstart 和 Cookiecutter 等工具更强大、更灵活的替代方案。
## 对 Next.js 15 & React 服务器组件的批评
本文详细描述了一位开发者在使用 Next.js 的 App Router 和 React 服务器组件 (RSC) 时遇到的挫败感,认为它们的基本设计选择存在缺陷,尽管最初很有前景。作者和许多其他 Web 开发人员认为该系统过于复杂且不直观。
RSC 将组件分为“服务器”和“客户端”类型,旨在实现高效的数据获取和渲染。然而,令人困惑的命名约定和限制——例如难以轻松执行乐观更新——导致代码混乱和不必要的复杂性。导航感觉缓慢,因为即使客户端已经拥有数据,每个页面都会重新获取数据。
作者成功地将一个项目从 Next.js 迁移到 TanStack Start,强调了简化的开发体验、改进的性能和更好的类型安全性。他们提倡使用 Astro 或 Fresh 等替代框架来构建静态网站,并使用 TanStack Start 来构建动态 Web 应用程序。虽然称赞了 `next/metadata` 和 `next/og`,但作者最终认为 Next.js 缺乏对开发者的尊重,并鼓励探索 Vite 生态系统中更注重开发者体验的工具。他们总结说,个人将优先考虑重视开发者体验的工具。
Harbor的临床试验数据采集应用最初使用标准的React `useState` 和 `Context` 进行状态管理,但在处理代表复杂临床试验数据的深度嵌套组件树时遇到了性能问题。树中的一个状态更新会触发完全重新渲染,影响响应速度。
为了解决这个问题,Harbor采用了使用Jotai库的“原子状态”管理。Jotai允许开发者定义小的、独立的单位状态(“原子”),并且只有当这些特定原子发生变化时,才会重新渲染依赖于这些原子的组件。这与Context形成对比,Context中的更改通常会导致更广泛的重新渲染。
由于Jotai具有类似`useState`的API,因此过渡非常顺利。通过利用受控输入和原子状态,Harbor在显著提高性能的同时,保持了惯用的React代码,避免了完全受控或非受控输入方法的权衡。这使得能够提供响应迅速且性能良好的用户体验,这对于复杂的数据采集应用至关重要。最终,使用Jotai的原子状态在功能丰富性和实际规模性能之间取得了平衡。
Example.fi 托管了一个基本的 IRC 服务器,以此致敬这项技术在在线通信领域的先驱作用。IRC 创建于 1988 年,是现代聊天和社交媒体发展的基础,它将人们连接在实时的文本对话中。
这个 IRC 服务器的独特之处在于它的实现方式:它使用 AWK 编写,AWK 是一种文本处理脚本语言,展示了 IRC 协议的适应性。虽然有意限制(大约 60 行代码!),但它既是一个教育工具,也是对 IRC 长期影响的致敬。
连接到 example.fi 的用户应避免使用高级 IRC 功能,并且可能需要使用特定设置(例如 Irssi 中的 `-nocap`),因为其实现经过简化。代码将在稍后公开发布。