2024-03-11

24 篇热帖

1. Flowers for Algernon (1965) [pdf] (www.sdfo.org)

《献给阿尔吉侬的花束》(1965) PDF 文档概要

根据提供的PDF文件元数据,该文件是丹尼尔·凯斯所著小说《献给阿尔吉侬的花束》(1965) 的一个数字化版本。

文件基本信息:

  • 文件格式: PDF 1.6
  • 总页数: 23页
  • 创建时间: 2009年6月8日
  • 最后修改时间: 2009年6月8日

技术属性与生成信息:

  • 该PDF文件是由扫描仪(HP Scanjet 7600 series)生成的,并通过Adobe Acrobat 9.0 Paper Capture插件处理完成。
  • 文件已进行线性化处理,通常这有助于优化网络传输和查看性能。
  • 文件不包含AcroForm、XFA表单、数字签名或集合等复杂元素,表明其内容形式较为简单,主要为扫描的文本图像。
  • 文档的唯一标识符(UUID)已记录在元数据中。

总结: 此文件是一份基于实体书扫描制作的电子文档,完整地包含了小说的全部23页内容。其技术元数据清晰地记录了文件的生成流程与格式规范,但未包含文本内容本身的具体章节或情节摘要。

2. LocalSend: Open-source, cross-platform file sharing to nearby devices (localsend.org)

LocalSend:开源跨平台文件共享工具

LocalSend 是一个开源的、跨平台的文件共享应用程序,允许用户在不依赖云端的情况下,向附近设备快速、私密地传输文件。它强调离线操作,确保数据不离开本地网络。

核心特点:

  • 免费且开源:100% 免费,无广告、无追踪,代码完全开源。
  • 跨平台支持:适用于 Windows、macOS、Linux、Android 和 iOS。
  • 安全加密:使用端到端加密(HTTPS),确保只有发送者和接收者能访问文件;可选 PIN 验证增强安全。
  • 无需互联网:完全通过本地 WiFi 网络工作,数据不经过外部服务器。
  • 高速传输:以 WiFi 网络的最大速度传输文件,无带宽限制。
  • 易用性:安装后无需账户或登录,选择文件并点击附近设备即可发送。

使用流程:

  1. 在所有设备上安装并打开 LocalSend。
  2. 选择要发送的文件(支持任何类型,如照片、视频、文档或文本)。
  3. 点击附近设备,文件立即通过本地网络传输。

常见问题:

  • 完全免费,无隐藏费用。
  • 仅限本地网络,不支持互联网传输。
  • 文件默认保存到设备的下载文件夹,可在设置中更改。
  • 无需创建账户或登录。

统计数据:

  • GitHub 上获得 70k+ 星标。
  • 下载量超过 5M+。
  • 拥有 100+ 贡献者。
3. GrapheneOS finds Bluetooth memory corruption via ARM MTE (grapheneos.social)

GrapheneOS 团队宣布,其在 Google Pixel 8 和 Pixel 8 Pro 设备上启用的硬件内存标记支持(基于 ARM MTE 技术),成功发现了一个存在于 Android 14 QPR2 更新中引入的蓝牙低功耗(Bluetooth LE)组件的内存损坏漏洞

目前,该团队正在对此漏洞进行调查,以评估其影响并确定解决方案。团队表示,正在研究如何修复该漏洞,或者考虑作为临时解决方案,禁用在 Android 14 QPR2 中引入的导致此问题的新功能

5. DBeaver – open-source database client (github.com)

DBeaver是一款免费的开源多平台数据库工具,适用于开发者、SQL程序员、数据库管理员和分析师。

核心功能与特性

  • 全面的功能集:包括模式编辑器、SQL编辑器、数据编辑器、AI集成、ER图、数据导出/导入/迁移、SQL执行计划、数据库管理工具、仪表盘、空间数据查看器、代理和SSH隧道、自定义驱动编辑器等。
  • 广泛的数据库支持:开箱即用支持超过100种数据库驱动。理论上支持任何具有JDBC或ODBC驱动的数据库(即几乎所有现有数据库)。
    • 社区版支持MySQL、PostgreSQL、Oracle、SQL Server、SQLite、各种大数据平台(如Hive、Presto、Trino)、数据仓库(如Snowflake、Redshift、BigQuery)等。
    • 商业版(PRO) 扩展功能并支持更多数据源,包括MongoDB、Cassandra、Redis等NoSQL数据库,以及各类平面文件(CSV、XLSX、JSON等)。
  • 智能AI辅助:支持通过OpenAI或Copilot实现智能代码补全和生成。

下载与运行

  • 可从官方网站或GitHub Releases下载预构建的二进制文件,也可获取每日构建的早期访问版本。
  • 通过安装程序或解压归档文件即可运行。DBeaver运行需要Java环境,其发行版中已包含OpenJDK 21,也可通过替换安装目录中的jre文件夹来更改JDK版本。

技术架构

  • 主要语言:核心以Java编写,同时使用特定于操作系统的原生组件用于桌面UI、高性能数据库驱动和网络。
  • 基础框架
    • 使用OSGI平台进行插件和依赖管理(社区版由130多个插件组成)。
    • 使用Eclipse RCP平台构建富用户界面。
    • 使用JDBC作为基本的数据库连接API。
    • 使用JSQLParser和Antlr4进行SQL语法和语义解析。
  • 依赖管理:作为OSGI应用,使用P2仓库管理第三方依赖,并通过自有的Maven P2仓库补充额外的Maven依赖。
  • 模块化设计:将模型插件与桌面UI插件分离,使得同一套“后端”插件可用于DBeaver和CloudBeaver。

生态与社区

  • 文档与支持:提供完整的产品文档、Wiki、问题追踪器。
  • 构建与贡献:可从源代码构建。项目欢迎Pull Request,并为贡献者提供指南。设有“Good first issue”和“Helpwanted”标签的工单,积极参与的贡献者会获得奖励。
  • 商业化:提供商业版本,支持更多数据库、附加扩展和官方在线支持,许可用户在错误修复和新功能开发方面享有优先权。

CloudBeaver

  • 基于DBeaver平台构建的Web端数据库管理工具,将DBeaver的功能带入Web界面。
  • 支持任何数据库,具备先进的访问管理功能以实现安全协作。
  • 用户无需本地安装,可通过任何联网设备进行数据库管理,其可扩展架构适用于个人开发者和各类组织。
8. Show HN: Teable – Open-Source No-Code Database Fusion of Postgres and Airtable (github.com)

Teable:开源无代码数据库,融合PostgreSQL与Airtable

Teable 是一个开源的无代码数据库平台,旨在结合 PostgreSQL 的强大后端能力与 Airtable 的直观电子表格界面,帮助用户轻松管理数据并促进团队协作。

核心特性

Teable 提供开箱即用的丰富功能,包括:

  • 数据处理:支持聚合、批量编辑、筛选、排序、分组、公式、SQL查询及百万行级别的数据处理。
  • 协作与展示:实时协作、评论、附件预览、多种视图(网格、表单、看板、画廊、日历)。
  • 开发与管理:导入/导出、撤销/重做、历史记录、插件扩展、字段转换与验证。

项目结构与技术栈

项目结构清晰,分为三大部分:

  1. apps (AGPL 3.0):包含前端 (Next.js) 和后端 (NestJS) 应用。
  2. packages (MIT):包含共享代码、国际化、SDK、数据库模式 (Prisma)、UI 组件库和 ESLint 配置等公共包。
  3. plugins (AGPL 3.0):用于开发自定义插件。

部署与开发

  • 部署:支持使用 Docker 快速部署,也提供在 Railway、Render 等平台的一键部署选项。
  • 开发:使用 pnpm 包管理器。开发时,启动后端会自动启动前端开发服务器,支持热重载。插件开发需单独启动。

设计理念与愿景

文章指出,现有无代码工具在数据规模扩大、数据主权、扩展性、对开发者友好度以及长期维护成本等方面存在不足。Teable 提出的未来无代码产品愿景包括:

  • 简易的应用构建界面。
  • 数据的可访问性、可迁移性与可重用性。
  • 支持云端、本地或私有化等多种数据部署选择。
  • 同时满足非技术用户与开发者的需求。
  • 具备处理大规模数据和横向扩展的能力。
  • 易于与其他软件集成。
  • 原生 AI 集成以提升易用性。

Teable 的目标是成为一个能满足现代软件开发演进需求的综合性解决方案。

许可与版本

  • 社区版 (CE):遵循 AGPL 许可,可免费自托管。
  • 企业版 (EE):提供 AI、权限矩阵、自动化等高级功能,采用付费订阅模式。
9. Speech and Language Processing (3rd ed. draft) (web.stanford.edu)

《语音与语言处理》第三版草稿概览

书籍信息:《语音与语言处理:基于语言模型的自然语言处理、计算语言学和语音识别导论》第三版草稿,由Daniel Jurafsky和James H. Martin撰写。

版本状态:当前版本为2026年1月6日发布,主要进行了清理、错误修复,并更新了部分章节中关于变换器的图表。此前的2025年8月版本有较大改动,包括第9章新增DPO、新增自动语音识别和文本转语音章节、重组大语言模型章节,以及第2章新增Unicode内容。

使用与反馈:作者欢迎读者在课堂中使用该草稿章节和幻灯片,并鼓励提供反馈以改进书籍。报告错误或提出建议可通过电子邮件 slp3edbugs@gmail.com,并注明草稿日期。作者对提供过建议和错误修复的众多贡献者表示感谢。

引用信息

  • 完整引用格式:Daniel Jurafsky and James H. Martin. 2026. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics, and Speech Recognition with Language Models, 3rd edition. Online manuscript released January 6, 2026. https://web.stanford.edu/~jurafsky/slp3.
  • BibTeX条目已提供。

历史版本:2025年8月和2025年1月的旧版草稿可在线获取。

书籍结构:全书分为两卷,并包含网页附录。

第一卷:大语言模型

  • 第1章:引言
  • 第2章:词与标记(含编辑距离幻灯片)
  • 第3章:N-gram语言模型
  • 第4章:逻辑回归与文本分类
  • 第5章:嵌入
  • 第6章:神经网络
  • 第7章:大语言模型
  • 第8章:变换器
  • 第9章:后训练:指令调优、对齐与测试时计算
  • 第10章:掩码语言模型
  • 第11章:信息检索与检索增强生成
  • 第12章:机器翻译
  • 第13章:RNN与LSTM
  • 第14章:语音学与语音特征提取
  • 第15章:自动语音识别
  • 第16章:文本转语音

第二卷:标注语言结构

  • 第17章:词性与命名实体序列标注
  • 第18章:上下文无关文法与成分解析
  • 第19章:依存解析
  • 第20章:信息抽取:关系、事件与时间
  • 第21章:语义角色标注与论元结构
  • 第22章:情感、情感与内涵的词汇库
  • 第23章:共指消解与实体链接
  • 第24章:语篇连贯
  • 第25章:对话及其结构

附录(仅在线提供)

  • 附录A:隐马尔可夫模型
  • 附录B:朴素贝叶斯分类
  • 附录C:Kneser-Ney平滑
  • 附录D:拼写纠错与噪声信道
  • 附录E:统计成分解析
  • 附录F:上下文无关文法
  • 附录G:组合范畴语法
  • 附录H:句子意义的逻辑表示
  • 附录I:词义与WordNet
  • 附录J:PPMI
  • 附录K:基于框架的对话系统
10. Perf Is Not Enough (motherduck.com)

过度追求性能的误区

数据库行业存在一种对性能的过度崇拜,但单纯追求速度往往忽略了用户体验的整体流程。就像超音速飞机节省的飞行时间,可能被机场安检、登机、行李等环节抵消,数据库中极快的查询速度也可能被连接驱动程序、数据准备等环节拖累。

基准测试的局限性

  • 市场与测试结果背离:2019年GigaOm的基准测试显示Azure Data Warehouse速度领先,但市场选择却是性能垫底的Snowflake和BigQuery更受欢迎。这表明基准测试可能未能反映用户真实体验,或者性能并非决策的唯一关键。
  • 测试内容可能偏差:基准测试(如TPC-H)是行业标准,但可能无法代表实际工作负载。例如,Clickhouse的Clickbench专注于单表扫描和计数,虽能代表某些日志分析场景,却可能误导传统数据仓库用户。
  • 供应商主导的测试偏见:供应商发布的基准测试往往侧重于自身擅长的领域,难以全面、公正地评估性能。

性能的主观性与全局视角

  • 用户感知的性能 ≠ 数据库查询时间:用户感受到的延迟是“从提出问题到获得答案”的全过程,包括编写查询、连接数据库、获取结果、处理数据等。例如,BigQuery曾因JDBC驱动程序的性能问题导致用户体验远差于服务器端查询速度。
  • 易用性直接影响效率:数据库的易用性(如友好的SQL语法、强大的CSV文件解析能力、清晰的结果处理方式)能显著缩短用户从想法到答案的时间。Snowflake和DuckDB在SQL易用性上的创新(如容忍不同语法、GROUP BY ALL)减少了用户查阅文档和调试的时间,这本身就是一种“性能”提升。

数据库的演进速度比当前速度更重要

  • 性能会趋同:随着时间推移,不同数据库会相互借鉴有效的技术(如查询编译、本地缓存),长期来看,重要的性能差异会逐渐缩小。
  • 迭代速度是关键:选择数据库时,其发展速度可能比当前性能排名更重要。例如DuckDB在短期内就从基准测试的中游跃升至领先,证明了其快速迭代的能力。应选择那些进步速度快、团队优秀的数据库。

结论:选择数据库的考量应超越性能

成功的数据库公司并非单靠性能取胜。Redshift的领先地位被Snowflake取代,关键在于其可维护性。在选择数据库时,应更注重:

  1. 易用性、生态系统、与工作流的集成度
  2. 数据库的演进速度和团队潜力
  3. 特定工作负载下的实际体验(建议亲自测试)。
  4. 从问题到答案的整体流程效率,而非仅仅关注查询执行那几秒的差距。
11. Launch HN: Onedoc (YC W24) – A better way to create PDFs
12. (How to Write a (Lisp) Interpreter (In Python)) (2010) (www.norvig.com)

如何用Python编写Lisp解释器总结

本文核心目标是展示如何用Python实现一个简洁的Scheme(Lisp方言)解释器(命名为Lispy),以阐释编程语言解释器的基本原理。作者追求用尽可能简洁的代码(约117行)实现“软件中的麦克斯韦方程”。

Scheme语言特点

  • 语法极其简洁:全部由表达式组成,无语句与表达式之分。仅需5个关键字(if, define, quote, set!, lambda)和8种语法形式。
  • 表达式类型
    • 原子表达式:数字、符号
    • 列表表达式:以(开头、)结尾的序列。首元素为关键字则为特殊形式,否则为函数调用。

解释器结构

解释器分为两部分:

  1. 解析(parse):将字符流转换为抽象语法树(AST)
    • 词法分析(tokenize):将字符串分割为token(符号、数字、括号)
    • 语法分析(read_from_tokens):递归构建嵌套列表形式的AST
  2. 求值(eval):在给定环境中递归求值AST
    • 环境(Env):变量名到值的映射,支持嵌套作用域(词法作用域)

实现关键

  • 环境设计Env类继承自字典,包含外层环境引用,支持变量查找时向外逐层搜索。
  • 过程表示Procedure类封装参数列表、函数体和定义时的环境。
  • 标准库:预定义了基本算术运算、数学函数、列表操作等。

扩展功能

Lispy支持:

  • 第一阶段(简化版):变量引用、数字常量、if条件、define定义、函数调用
  • 第二阶段(完整版):增加quote(引用)、set!(赋值)、lambda(匿名函数)
  • REPL交互:实现读取-求值-打印循环,方便交互测试。

实现示例

# 核心求值函数简化逻辑
def eval(x, env):
    if x是符号: return 查找变量值
    elif x是数字: return 数字本身
    elif x[0]是'if': 根据条件求值分支
    elif x[0]是'define': 在环境中绑定变量
    elif x[0]是'lambda': 创建过程对象
    else: 求值函数和参数,执行函数调用

评估与局限

  • 优势:代码极其简洁(约4KB源码),演示了语言实现的核心原理。
  • 局限:不完整——缺少字符串类型、异常处理、尾递归优化、部分语法特性(如注释、引号等)。
  • 性能:求值(fact 100)约0.003秒,足够演示使用。

教学意义

通过此解释器实现,展示了:

  1. 编程语言的基本组成(解析与求值)
  2. 变量作用域与闭包的实现机制
  3. 递归在语言解释中的核心作用
  4. Scheme如何用极简语法实现强大表达力

该实现证实了即使用非常少的代码也能构建功能性的编程语言解释器,帮助理解计算机语言的工作原理。

13. eBPF Documentary (www.brendangregg.com)

eBPF 纪录片总结

eBPF 简介 eBPF 是一项革命性技术,类似于在 Linux 内核中嵌入 JavaScript 引擎。它允许在安全、高性能的内核沙箱中运行各类新程序,如今已不再是一个缩写词。该技术将程序运行能力扩展到内核层面,同时保持类似浏览器沙箱的安全特性。

纪录片背景与内容

  • 发布与传播:纪录片于去年年底发布,曾在 KubeCon 上播放,并可在 YouTube 上观看。
  • 核心故事:影片通过采访关键参与者(包括作者在内),讲述了 eBPF 从 2014 年至今的发展历程,揭示了其代码被 Linux 内核接受背后的策略与创造性努力。
  • 技术延伸:纪录片还触及了 eBPF 在 Windows 等平台上的新进展。
  • 制作意义:感谢 Speakeasy Productions 的出色制作,让观众能亲身体验早期开发阶段的故事,同时展现了在大型代码库(如 Linux)中合并代码所需的幕后工作。

早期开发轶事

  • 2014 年,Alexei Starovoitov 访问 Netflix 与作者及 Amer Ather 讨论 eBPF 时,三人沉浸于技术讨论中以至错过午餐并被会议室“请出”。
  • Alexei 对 eBPF 的前景充满信心,但多次强调“如果补丁能被合并”,作者则坚信这项技术潜力巨大,必须实现。

社区发展与贡献者

  • 2014 年仅有少数人参与 eBPF 开发,2015 年后逐渐壮大,如今已有数百名贡献者共同推动其发展。
  • 纪录片中提到多位关键贡献者(如 Brendan Blanco、Yonghong Song 等),作者亦列举了更多重要开发者,并感谢所有人的付出。

现状与展望

  • 十年后,eBPF 仍处于早期阶段,正是参与的好时机:它可能已存在于你的生产环境内核中,并有工具、库和文档支持入门。
  • 最后,作者祝贺 eBPF 领域的模范初创公司 Isovalent 被思科收购,并推荐观众观看纪录片。
15. Using PostgreSQL for military geoanalytics tasks (klioba.com)

使用 PostgreSQL 进行军事地理分析

文章主旨

本文探讨如何利用 PostgreSQL(结合 PostGIS 扩展)处理军事地理空间数据,解决常见的军事地理分析任务,如查找最近目标、距离计算、点与多边形关系判断和地理空间聚合,并提供优化查询性能的实用方法。文章所用数据均为开源且已获军事代表批准。

数据准备与导入

1. 第一数据源:俄罗斯军事设施多边形数据

  • 来源: OpenStreetMap。
  • 工具: 使用 osm2pgsqlrussia-latest.osm.pbf 文件(3.4 GB)导入 PostgreSQL。
  • 生成表格: 导入后主要产生 planet_osm_lineplanet_osm_pointplanet_osm_polygonplanet_osm_roads 等表。
  • 数据整合: 通过 SQL 脚本,从上述表中筛选军事对象,并应用 100 米缓冲区(ST_Buffer)将点、线要素转换为多边形,最终创建包含 9,252 个军事对象的 military_geometries 表。
  • 备注: 文章提到,自 2022 年初以来,有 2,995 个俄罗斯军事对象在 OSM 中被删除。

2. 第二数据源:NASA 卫星火点数据

  • 来源: 火灾信息资源管理系统。
  • 数据: 包含 2022 年 1 月 1 日至今俄罗斯境内的火灾记录(1,711,475 条)。
  • 导入: 下载数据并导入 PostgreSQL 的 viirs_fire_events 表,该表包含坐标、时间、卫星参数等字段,并自动创建基于经纬度的 GEOMETRY(POINT, 4326) 列。

核心分析任务

查找发生过火灾的军事设施(点是否在多边形内)

  • 目标: 识别自 2022 年初以来,哪些军事设施区域内发生过 NASA 卫星探测到的火灾。
  • 方法: 使用 SQL 查询,结合 ST_Contains 函数,判断 viirs_fire_events 表中的火灾点是否位于 military_geometries 表的多边形范围内。
  • 结果: 找到了 129 个发生过火灾的军事设施,部分设施火灾发生不止一次。

性能优化:地理空间索引

  • 初始问题: 上述查询耗时很长(约 54 分钟),原因在于使用了嵌套循环连接,复杂度为 O(n*m)。
  • 解决方案: 为地理空间数据创建合适的索引以加速空间查询。
  • 索引测试: 测试了多种索引类型(btree, hash, brin, gist, spgist)及其操作符类。
  • 结论
    • GiSTSP-GiST 索引效果最佳,将查询时间从数十分钟缩短到不到 1 秒。
    • GiST(通用搜索树)支持空间重叠和邻近查询,适合多边形等复杂几何。
    • SP-GiST(空间分区通用搜索树)适合非重叠分区的数据结构,但在磁盘上可能效率稍低。
  • 应用: 利用 GiST 索引的 <-> 操作符,可以高效地执行“最近邻”查询,例如查找距离某特定目标(如鞑靼斯坦的沙希德无人机工厂)最近的 10 个火灾点。

高级工具:Uber H3 六边形网格系统

  • 介绍: H3 是一个将地球表面划分为均匀六边形网格的层次系统(15 级),便于高效处理和聚合地理空间数据。
  • 在 PostgreSQL 中的使用: 通过安装 h3 扩展,获得一系列函数。
  • 关键函数
    • h3_lat_lng_to_cell: 将经纬度转换为指定分辨率的 H3 索引。
    • h3_polygon_to_cells: 将多边形转换为覆盖它的 H3 索引集合。
    • h3_grid_disk: 生成围绕某个 H3 索引的“盘”状六边形区域。
  • 应用场景
    • 将军事设施多边形和火灾点转换为 H3 索引(BIGINT 类型)。
    • 使用标准的 B-tree 索引即可对 H3 索引进行高效查询,从而提升复杂地理分析的速度。
    • 可用于计算地理要素密度(例如,展示俄罗斯境内军事设施的分布密度图)。
  • 进阶潜力: 文章提及 H3 可用于更复杂的任务,如“伴飞分析”(识别在相同时间和位置出现,或在特定时间段内共同飞行路线的无人机)。

总结

本文通过实际案例演示了如何利用 PostgreSQL 及其扩展(PostGIS, H3)处理军事地理空间数据。涵盖了从数据导入、基本的空间关系查询(点在多边形内)、到通过空间索引(GiST)进行性能优化,再到使用 H3 六边形网格进行高级聚合分析的全流程,展示了 PostgreSQL 作为强大开源地理分析平台的能力。

16. Show HN: Timelock.dev – Send a secret into the future using timelock encryption (timelock.dev)
18. Kernel Hardening: Protect Linux user accounts against brute force attacks (github.com)

内核加固:保护Linux用户账户免受暴力攻击

本文档详述了 security-misc 安全软件包所实施的一系列系统加固措施,旨在提升 Linux 系统(特别是 Kicksecure 及 Whonix 发行版)的安全性,抵御各类攻击,包括暴力破解。

核心加固领域

1. 内核空间加固

通过 sysctl 设置和内核启动参数,实施多项安全限制:

  • 访问控制:限制对内核地址、日志、bpf()userfaultfd() 等的访问,需特定能力(如 CAP_SYSLOG)。
  • 功能禁用:禁用 kexecSysRq 键、io_uring 异步I/O、32位 vDSO 映射、legacy TIOCSTI 操作等,以减少攻击面。
  • 信息泄露防护:阻止内核信息泄露到控制台,并限制用户命名空间的使用。
  • 稳定性:配置内核在发生 panic 或警告时立即重启,以缓解拒绝服务攻击。

2. 用户空间加固

  • 进程隔离:禁用 ptrace(),增强地址空间布局随机化(ASLR)的熵。
  • 文件系统:防止在全局可写目录中的硬链接/符号链接竞态条件,并限制意外写入。
  • 内存管理:提高进程内存映射的最低地址和最大区域数。

3. 网络加固

启用多项防护措施:

  • 协议安全:启用 TCP SYN cookie 防护、反向路径过滤、ARP 过滤,禁用 ICMP 重定向和源路由。
  • IPv6:默认启用 IPv6 隐私扩展和每连接随机 MAC 地址,以防止设备追踪。
  • 其他:禁用 TCP 时间戳(可选)、SACK/DSACK(可选),并忽略 ICMP 回显请求。

4. 暴力破解防护(用户账户保护)

这是标题所述的核心保护机制:

  • 使用 pam_faillock 模块,用户账户在 50次 登录失败后将被锁定。
  • 锁定窗口为 7 天(fail_interval=604800)。
  • 锁定账户 永不自动解锁unlock_time=never),必须由管理员通过 faillock 命令手动干预。
  • 此策略同样适用于 root 账户(even_deny_root)。
  • 为避免远程服务被恶意锁定,faillock 会跳过某些服务(如 sshd, dovecot)。
  • 登录过程中会提供失败次数信息和解锁指引。

5. 其他重要加固措施

  • CPU 漏洞缓解:在启动参数中启用最严格的 CPU 漏洞缓解措施(如 Spectre, Meltdown, L1TF, MDS 等),并禁用同步多线程(SMT)。
  • 内核模块
    • 启用内核模块签名验证(计划中)。
    • 禁用新模块在启动后加载。
    • 黑名单并禁用大量非必要或高风险的硬件和网络模块(如蓝牙、FireWire、Thunderbolt、GPS、32位支持等)。
  • 文件与权限
    • 移除非必要二进制文件的 SUID/SGID 位。
    • 为非 root 用户设置更严格的默认 umask (027)。
    • 对家目录执行权限锁定。
  • 安全功能
    • USBGuard:默认阻止运行时插入的未识别 USB 设备,并拒绝可能指示 BadUSB 攻击的设备组合。
    • 紧急关机:在检测到引导盘移除、按下特定键序(默认 Ctrl+Alt+End)或调用特定命令时强制关机。
    • 文件管理器保护:通过 D-Bus 垫片强制所有通过文件管理器打开目录的请求需用户确认。
  • Root 访问限制
    • su 命令仅限 sudo 组成员使用。
    • 通过空的 /etc/securetty 文件阻止从控制台登录 root 账户。
    • 为被锁定密码的用户中止登录。
  • 熵增强:不信任 CPU 和引导加载程序提供的初始熵,并在启动期间从 RAM 收集更多熵。

合规性与范围

  • 该安全包旨在遵循内核自我保护项目(KSPP)的推荐设置,在可行范围内完全或部分合规。
  • 其设计哲学注重可维护性,默认仅加固 Kicksecure/Whonix 系统默认安装的应用程序(如 APT, SSH, Git, 部分文件管理器等)。
  • 部分可能造成严重兼容性问题的加固(如完全禁用用户命名空间、隐藏进程信息)被设为可选,需用户手动启用。

通过这些多层次的配置,security-misc 显著提升了系统对暴力破解及其他常见攻击的防御能力。

19. Rebuilding memchess.com from its archive (grondilu.github.io)

MemChess 是一个象棋教学工具,旨在帮助用户学习每个象棋开局及其变体中最受欢迎的走法。它通过询问用户最佳走法,然后返回一个合理的走法来互动。该工具基于众多大师级(Elo 分数 >2200)棋手的历史走法数据进行分析和决策。它更频繁地使用最常见的走法,但也会包含一些较少见的开局以增加多样性。目前,MemChess 正处于积极开发阶段,目标是通过这种互动方式帮助用户提高象棋水平。

20. How far are we from intelligent visual deductive reasoning? (arxiv.org)

文章标题:我们距离智能视觉演绎推理还有多远?

主要内容

  1. 研究背景与目标:视觉语言模型在多样化的视觉语言任务上已取得显著进展,但其在更复杂且较少探索的视觉演绎推理领域的能力尚未明确。本研究旨在揭示当前先进视觉语言模型在此领域的潜在盲点。

  2. 研究方法

    • 采用瑞文推理测验作为评估工具,该测验要求模型仅依赖视觉线索进行多跳关系与演绎推理。
    • 对多种主流视觉语言模型进行全面评估,测试了上下文学习、自一致性、思维链等标准策略。
    • 使用三个多样化数据集:Mensa IQ测试、IntelligenceTest和RAVEN
  3. 主要发现

    • 尽管大语言模型在基于文本的推理中表现优异,但视觉演绎推理能力仍远未达到同等水平。
    • 对大语言模型有效的标准策略(如思维链)未能直接适用于视觉推理任务。
    • 详细分析表明,视觉语言模型难以完成此类任务的主要原因是无法感知和理解瑞文示例中多个复杂的抽象模式
  4. 结论:当前视觉语言模型在视觉演绎推理方面存在显著局限,需进一步研究以提升其抽象模式理解与多步推理能力。

21. Show HN: Async tasks in 350 lines of C (github.com)

异步任务C库摘要

概述

该库提供一个最小化的C语言异步任务系统,包含类型和函数集。设计上,常见情况下为无锁操作,仅在分配任务池后备内存或工作线程任务不足时使用锁。使用标准C11编写,依赖C POSIX库。

核心功能

  • 创建执行器:通过cr_executor_create函数指定工作线程数量,例如创建4个线程的执行器。
  • 创建任务:使用cr_task_create函数定义任务,传入执行器、函数和参数。
  • 任务运行
    • 默认情况下,调用cr_task_run会立即执行任务。
    • 如需延迟执行,可先调用cr_task_wait(增加等待计数),然后稍后调用cr_task_signal(减少计数,当计数为零且运行被调用时触发执行)。

任务依赖管理

  • 依赖关系可通过cr_task_request_signal函数建立,例如任务2等待任务1完成。
  • 简写函数cr_task_wait_request_signal合并等待和信号请求,简化常见模式。
  • 等待和信号调用必须平衡;任务在等待计数归零且运行被调用后执行。

同步等待

  • 使用cr_task_sync函数可同步等待任务完成。
  • 任务执行后自动销毁,因此同步前需调用cr_task_retain保留任务,之后调用cr_task_release释放。
  • 提供简写cr_task_run_sync,整合保留、运行、同步和释放步骤。

示例用法

  • 创建执行器和任务,并立即运行。
  • 设置任务延迟执行或依赖执行。
  • 使用简写函数简化代码流程。

该库旨在以最少代码实现高效的异步任务管理,适用于需要并发处理的C项目。

22. PaperMC/Paper: The most widely used, high performance Minecraft server (github.com)

PaperMC/Paper:高性能Minecraft服务器

概述

PaperMC/Paper 是最广泛使用的、高性能的 Minecraft 服务器,旨在修复游戏玩法和机制上的不一致性。

支持与讨论

  • 论坛或 Discord 服务器

使用指南

服务器管理员

  • Paperclip:一个可下载并直接运行的 jar 文件。
  • 下载与运行:从下载页面获取 Paper,然后直接运行 Paperclip jar 文件。
  • 文档:使用文档见 docs.papermc.io
  • 新功能预览:可查看即将到来的功能。

插件开发者

  • API:参见 Paper API
  • 即将到来、待定和最近添加的 API:查看相应页面。
  • 仓库(paper-api)
    • Gradle 配置
      repositories {
          maven {
              url = uri("https://repo.papermc.io/repository/maven-public/")
          }
      }
      dependencies {
          compileOnly("io.papermc.paper:paper-api:26.1.2.build.+")
      }
      java {
          toolchain.languageVersion.set(JavaLanguageVersion.of(25))
      }
      
    • Maven 配置
      <repository>
          <id>papermc</id>
          <url>https://repo.papermc.io/repository/maven-public/</url>
      </repository>
      <dependency>
          <groupId>io.papermc.paper</groupId>
          <artifactId>paper-api</artifactId>
          <version>[26.1.2.build,)</version>
          <scope>provided</scope>
      </dependency>
      

从源代码编译

  • 要求:JDK 25 和网络连接。
  • 步骤
    1. 克隆仓库。
    2. 运行 ./gradlew applyPatches
    3. 运行 ./gradlew createPaperclipJar
  • 编译产物位置paper-server/build/libs 目录。
  • 查看所有任务:运行 ./gradlew tasks

其他信息

  • 拉取请求:参见 Contributing 指南。
  • 旧版本(1.21.3 及以下):相关分支位于归档仓库。
  • 支持项目
    • PaperMC 通过 Open Collective(由 Open Source Collective 托管)管理开支并保持透明。
    • 可在项目网站上了解更多财务支持信息。
    • 捐赠渠道:Open Collective 或 GitHub Sponsors。
  • 特别感谢
    • YourKit:提供 Java 和 .NET 性能分析器,授予 Paper 开源许可证。
    • JetBrains:授予开源许可证,推荐使用 IntelliJ IDEA 进行开发。
    • 所有赞助商。
23. The Best Essay (paulgraham.com)

这篇文章探讨了“最好的文章”应该具备的特质以及如何写出好文章。作者认为,最好的文章并非文笔最佳,而是其主题能够向读者揭示重要且令人惊讶的新知识。因此,最可能产生最好文章的领域往往是科学或技术上的重大发现,例如达尔文在1844年关于自然选择的论述。

文章指出,最好的文章通常不具有永恒不变性,因为一旦一个伟大发现被广泛接受,相关论述便失去新颖性。然而,要写出在更深层意义上“永恒”的文章,可以探讨那些人类总会反复犯的错误、被系统灌输的谎言,或需要亲身经历才能深刻理解的话题(如养育孩子的具体体验)。

对于写作过程,作者强调应从一个有潜力的“问题”或好奇心出发,而非选定一个宏大的主题。写作的本质是通过“出声思考”(即用文字具体化想法)来发现观点。最初写下的内容往往是错误或不完整的,但这正是写作发挥作用的关键:通过反复重读和严格修改,迫使想法从模糊变为清晰,甚至发现隐藏的错误假设。

在写作中,当一个问题引出多个可能的分支时,应选择最能结合“普遍性”和“新颖性”的方向。写作过程需要敢于剪切不理想的分支,不应因为投入了努力而保留平庸内容。

作者认为,要获得能产出好文章的问题,关键在于拓宽输入的广度和深度:通过阅读、交流、实践来广泛涉猎不同领域,并通过解决具体问题来深入了解某个领域。虽然写作本身需要持续的努力和修改,但决定文章上限的往往是最初问题的灵感和洞察力。最终,一篇好文章的质量取决于其中发现的新想法,而获得这些想法的方法是广泛搜寻问题,并对答案保持极度严格的要求。

24. European Commission's use of Microsoft 365 infringes data protection law for EU (www.edps.europa.eu)

欧洲数据保护监督局裁定欧盟委员会使用微软365违反数据保护法

欧洲数据保护监督局(EDPS)经调查发现,欧盟委员会在使用微软365服务时,违反了多项欧盟机构数据保护法规——《欧盟第2018/1725号条例》。EDPS已对欧盟委员会作出具有约束力的纠正决定。

主要违规内容包括:

  1. 数据跨境传输缺乏适当保障:欧盟委员会未能提供充分保障措施,以确保在欧盟/欧洲经济区以外传输的个人数据获得与欧盟境内基本等同的保护水平。
  2. 数据处理目的不明确:其与微软的合同中,未充分规定在使用微软365时需收集的个人数据类型及其明确、具体的使用目的。
  3. 作为数据控制方的责任疏失:欧盟委员会对包括数据传输在内的,由其自身或代表其进行的数据处理操作负有控制责任,但其履行不当。

EDPS局长指出,所有欧盟机构均有责任确保其个人数据处理(包括使用云服务时)遵循强有力的数据保护措施,以符合法规要求。

基于调查结果,EDPS命令欧盟委员会:

  • 暂停特定数据流:自2024年12月9日起,暂停所有因使用微软365而流向欧盟/欧洲经济区以外(且未获充分性认定)的微软公司、其关联机构及子处理者的数据流。
  • 实现合规:必须在2024年12月9日前,使其因使用微软365而进行的所有数据处理操作完全符合《欧盟第2018/1725号条例》。

EDPS认为,鉴于违规行为的严重性和持续时间,所采取的纠正措施是恰当、必要且相称的。这些违规涉及欧盟委员会使用微软365的所有处理操作,影响范围广泛。EDPS在措施中也考虑了避免过度妨碍欧盟委员会履行公务,以及给予其必要时间进行整改。

此决定不影响EDPS未来可能采取的进一步行动。