Better Dev Link – 关于成为更好的程序员的网络资源
大家好,
新年快乐。欢迎来到 2025 年第一期。今年我正努力变得更加规律。期待新的一年,希望大家继续创造酷的东西。对我来说,去年我无法推出另一个 SaaS。我确实彻底检查了我的 cloudcost https://ec2.shop ,现在对其状态更加满意。
本周我们的赞助商是WarpStream ,他们构建了一个令人惊叹的 Kafka 替代品,同时与 Kafka 100% 兼容,而且更便宜。如果您在 Kubernetes 中运行 Kafka,或者希望像 Honeybadger 团队那样用 Kafka 替换 Redis,那么一定要尝试一下WarpStream 。
如果您喜欢 BetterDev,请通过与您的朋友分享来传播信息。如果您愿意支持我的工作,请给我一杯咖啡,我将不胜感激。
- Pixel Federation 将 Amazon MSK 替换为 WarpStream,Apache Kafka 成本节省 83%
视频游戏公司 Pixel Federation 使用 Kafka 作为消息总线来为其实时数据流基础设施提供支持。然而,他们利用 Amazon MSK,其账单增长速度快于数据量增长速度,并且他们必须使用 VPC 对等互连等复杂网络。通过改用 WarpStream,他们节省了 83%,并放弃了 VPC 对等和手动分区重新平衡
- 1,000 行操作系统
从头开始,一步一步构建一个小型操作系统。当您听到操作系统或内核开发时,您可能会感到害怕,操作系统(尤其是内核)的基本功能非常简单。即使是经常被称为庞大的开源软件的Linux,其0.01版本也只有8,413行。今天的 Linux 内核非常大,但它是从一个很小的代码库开始的,就像您的爱好项目一样。我们将用 C 语言实现基本的上下文切换、分页、用户模式、命令行 shell、磁盘设备驱动程序和文件读/写操作。听起来很多,但实际上只有 1,000 行代码!
- 具有 84,688 个正则表达式的 2 层极小极大国际象棋引擎
因此,言归正传,我向您介绍……正则表达式国际象棋:84,688 个正则表达式的序列,当按顺序执行时,将在给定国际象棋棋盘作为输入的情况下下一个(有效的;并非完全糟糕的)棋步。
- 工程师在大型已建立的代码库中犯的错误
作为软件工程师,在大型已建立的代码库中工作是最难学习的事情之一。你无法事先练习(不,开源不会给你同样的体验)。个人项目永远无法教你如何去做,因为它们必然很小并且是从头开始的。
- 自纪元以来的秒数
人们,包括我自己,喜欢说 POSIX 时间,也称为 Unix 时间,是自 Unix 纪元(即 1970 年 1 月 1 日 00:00:00)以来的秒数。这不是真的。或者更确切地说,这并不是大多数人认为的那样。例如,目前是 2024 年 12 月 25 日 18:51:26 UTC。 POSIX 时间为 1735152686。自 POSIX 纪元以来已过去 1735152713 秒。 POSIX 时间数字减少了 27 秒。
- NAT 穿越的工作原理
NAT 下的 2 个设备如何能够直接相互连接,而无需中间的服务器来中继流量?
- Linux 路由基础知识
路由表定义了当 IP 数据包从 Linux 机器发送或通过 Linux 机器发送时会发生什么。但最简单的问题是包裹应该发送到哪个目的地?你的计算机如何知道 LAN ip 需要发送到其他笔记本电脑,而其余的则发送到互联网?
- 用 C 语言编写一个简单的池分配器
当程序需要内存时,可以使用 malloc。与 malloc 类似,池分配器允许用户在运行时分配内存。然而,池分配器比 malloc1 快得多,但代价是池大小固定。它允许用户在 O(1) 恒定时间内分配和释放内存块(从现在起称为块)。此实现还使用很少的内存:创建池时,会分配一个非常小的 Pool 结构以及池本身。空闲块用于存储信息,因此对内存的影响最小。
- Cloudflare 的直播流媒体服务 Stream Live 的幕后花絮
Stream Live 接受来自广播公司的音频/视频内容,并通过 Cloudflare 网络向世界各地的观众实时提供该内容。这篇文章探讨了他们如何使用 RTMPS、SRT、WHIP 和 Spectrum 构建广播摄取。数据被转换并存储在持久对象中,然后通过 HLS 或 DASH 协议提供给查看器。
- B 树:比我想象的更多
B 树本质上是“更好的”二叉搜索树,经过一些努力,它们在数据库应用程序中使用时提高了性能。但不仅仅如此,今天我们将研究磁盘约束、分槽页面,以了解 B 树节点如何自然地融入页面 – 硬盘驱动器同时读取的一块数据。
- SQL NULL 很奇怪
- 摆脱长任务或:我如何学会对循环进行分组并利用收益
数组存在于每个 Web 开发人员的工具箱中,并且有多种方法可以迭代它们。但是,如果选择错误,所有处理时间都将在一个漫长的阻塞任务中同步发生。问题是,最自然的方式也是错误的方式。
需要阅读的代码
- 鲁马莱
Ruby 中的机器学习库。 Rumale 为机器学习算法提供了类似于 Python 中的 Scikit-Learn 的接口。
- 干草堆
使用 OpenHaystack 和 Macless-Haystack 以及用 Go/TinyGo 编写的工具,通过 Apple 的“查找我的”网络跟踪个人蓝牙设备。无需苹果硬件!
- 邮政哑剧
适用于浏览器和无服务器环境的电子邮件解析器
- 大型解析器
文件解析器针对 LLM 摄取进行了优化,不会造成任何损失 🧠 以适合 LLM 的格式解析 PDF、Docx、PPTx。
- @smoores/epub
用于检查、修改和创建 EPUB 3 出版物的 Node.js 库。
工具
- 嘎嘎
调用您的 SSH 会话(同时搜索您的 SSH 配置文件)
- 泰尔莫
一个简单的终端模拟器,可用于在您的网站上创建类似终端的界面
- wasm-vips
用于浏览器和 Node.js 的 libvips,使用 Emscripten 编译为 WebAssembly。
- 复发
使用指数退避和抖动重试命令(+ Starlark 表达式)
- 瓦尼尔
基于源代码的静态分析工具,可自动识别目标系统中缺失的安全补丁列表。默认情况下,Vanir 从开源漏洞 (OSV) 中提取最新的 CVE 及其相应的签名,以便用户可以透明地扫描缺失的补丁以获取最新的 CVE 列表。
- 开放式防火墙
OpenGFW 是 Linux 上 GFW(中国防火墙)的灵活、易于使用的开源实现
- Pig:Postgres 扩展向导
是否曾经希望安装或升级 PostgreSQL 扩展时不需要挖掘过时的自述文件、神秘的配置脚本或随机的 GitHub 分支和补丁?令人痛苦的事实是,Postgres 丰富的扩展功能通常是以复杂的设置为代价的,尤其是当您同时使用多个发行版或 CPU 架构时。 Pig 是一款基于 Go 的包管理器,旨在一次性驯服 Postgres 及其包含 340 多个扩展的生态系统。
- PG点
发现 postgres SQL 脚本中的漏洞