1985年推出的Commodore Amiga电脑,在当时拥有无与伦比的图形处理能力。 它配备了一套复杂的定制芯片,使其能够实现其他个人电脑无法企及的功能。 本网站致力于展示为Commodore Amiga家用电脑制作或使用的图形作品。
1985年推出的Commodore Amiga电脑,在当时拥有无与伦比的图形处理能力。 它配备了一套复杂的定制芯片,使其能够实现其他个人电脑无法企及的功能。 本网站致力于展示为Commodore Amiga家用电脑制作或使用的图形作品。
## 欧盟电池护照:摘要 从2027年起,欧盟将要求所有新电池(包括智能手机、电动汽车和电动自行车中的电池)拥有“数字护照”。该护照是一种通过二维码访问的数字记录,详细记录电池的整个生命周期——从原材料采购和碳足迹到性能、维修历史和可回收性。 目标是促进电池材料的循环经济,减少对进口的依赖,并确保负责任的采购和回收。对于消费者而言,这意味着更大的透明度和做出明智购买决策的能力。您将能够根据环境影响比较产品,在购买二手电池时验证电池健康状况,并使用记录的维修历史验证保修索赔。 电池护照还激励制造商生产更耐用、可维修和可回收的产品。虽然该法规适用于2027年2月*之后*投放市场的电池,但现在就开始通过优先考虑电池健康并选择参与试点计划的制造商(如苹果、三星和特斯拉)进行准备是推荐的。该举措是迈向更广泛的“数字产品护照”的垫脚石,涵盖更广泛的商品,使消费者能够获取生命周期数据,从而做出更可持续的选择。
Spectrimage分析上传的照片,在您的浏览器中直接创建视觉色彩光谱,无需服务器连接。它首先将图像调整大小,最长边不超过300像素,然后将每个像素转换为HSL(色相、饱和度、亮度)。 颜色被分为180个色相区间(2度切片),非彩色(黑、白、灰)被单独分离。在每个区间内,像素按亮度排序,最暗/最亮的20%用于定义阴影和色调,而中间的20%代表纯色。 最后,这些颜色列以ROYGBIV顺序排列并在画布上显示,列的高度反映了色相的普遍程度。每列内的渐变视觉上表示从色调到纯色再到阴影的过渡,即使对于大型图像也能提供平滑快速的色彩分析。
## HTTP 路径中的双斜线:并非规范化问题 RFC 3986 定义了 URI 语法,明确允许空路径段,这意味着 URL 路径中的双斜线 (`//`) 在语法上是有效的。它们代表零长度的段,并非错误。根据 RFC 标准,规范化关注大小写、百分比编码和点段移除——*而非*折叠空段。 HTTP (RFC 9110) 使用 RFC 3986 的路径语法。路径是资源标识符的一部分,对其进行更改(例如折叠 `//`)会改变标识符本身,除非服务器明确定义这两种形式是等效的。 一些实现(例如启用 `merge_slashes` 的 nginx,以及 Go 的 `net/http.ServeMux`)错误地折叠双斜线。然而,这偏离了既定标准。在涉及嵌套层次结构的情况下,例如 Git 仓库,这些双斜线可以作为重要的分隔符,折叠它们可能导致歧义或功能损坏。因此,将 `//` 折叠为 `/` 并非正确的规范化。
我们最初在一个小公寓里,为另一个商业想法寄送信件。那时我发现,蜡封的个性化触感对回复率影响最大。我开始制作简单的系统,尽可能多地手工制作蜡封。最初的手工流程,现在已经发展成一个复杂的操作,能够处理大量的批量邮件订单,同时保持其真实的手工感。
## 软件开发中的替罪羊机制
软件故障很少通过客观分析来解决;相反,组织常常陷入一种**替罪羊**模式,反映了古代社会的仪式。当问题出现时,会产生对可见行动的压力,导致选择一个“受害者”——一个基础组件或技术——来承担责任,无论实际原因如何。这并非关于解决问题,而是通过归咎来恢复社会秩序。
这种“**战争理由工程**”是由那些利用失败来推动自己偏好解决方案的人推动的,他们将现有系统描绘成固有缺陷。一个损坏的功能成为拆除一个正常运行的基础的理由,即使它与故障无关。这受到确认偏差和可得性偏差等认知偏差的助长,并在低信任环境中蓬勃发展。
敏捷运动本身就是一个典型的例子,其中“瀑布模型”成为更广泛的项目失败的便捷替罪羊,从而实现方法论的彻底转变。
抵制这种模式需要严格的根本原因分析,将故障与基础分离,并根据价值评估解决方案,而不是将其视为对感知缺陷的反应。认识到这种动态——危机、替罪羊、虚假因果关系——对于培养更理性、更有效的工程文化至关重要。最终,选择工程而非叙事对于避免重复破坏和重建的循环至关重要。
## Brunost:一种新挪威语编程语言
John Lindbakk 创建了“Brunost”,一种受同名挪威山羊奶酪启发的函数式编程语言——香甜、顺滑且富有深度。该语言的独特之处在于它严格执行新挪威语(Nynorsk),一种挪威书面标准,要求所有变量、函数和参数名称都符合其词典。如果未使用新挪威语,则会标记错误。
Brunost 是一种解释型语言,具有松散的类型系统,解释器使用 Zig 编写以提高速度。主要特性包括不可变性(使用 `fast`)、条件语句 (`viss`)、函数 (`gjer`)、循环 (`forKvart`、`medan`) 以及异常处理 (`prøv`/`fang`)。
作者承认该项目具有趣味性,不打算构建完整的生态系统,但欢迎贡献。示例展示了 Brunost 的功能,包括斐波那契数列、FizzBuzz 甚至康威生命游戏的实现。虽然不打算用于生产环境,但 Brunost 是一次有趣的语言设计探索,也是对新挪威语的庆祝。感兴趣的人可以在 GitHub 仓库中进行实验。
## 重新思考软件安全:极简内核方法 当前的软件部署依赖于在完整的Linux内核之上运行单个进程的容器——一个庞大而复杂的系统,大多数应用程序不需要它的许多功能。这造成了一个巨大的攻击面,尤其是在处理不受信任的代码,例如第三方库或AI代理时。现有的解决方案,如精简内核或unikernel,在复杂性和维护功能方面面临挑战。 这种方法提出了一种激进的简化:与其减少内核,不如*只*构建所需的部分。分析表明,大多数进程只使用一小部分系统调用(大约40个,而总共有450个)。这个想法是将这些必要的系统调用实现为一个库——一个“库内核”,并在二进制级别拦截标准的系统调用指令(0F 05)。 通过在加载时重写二进制文件,用跳转到自定义处理程序的指令替换系统调用指令,从而绕过拦截的挑战(编译器集成、libc覆盖)。这个处理程序在轻量级虚拟机中运行,使用LSTAR MSR机制捕获JIT编译的代码,并通过自愈机制以最小的开销执行策略并模拟系统调用。 这创建了一个安全、可审计的环境,所有与系统的交互都受到控制,为安全执行不受信任的代码(如AI代理)提供了基础。这是朝着一个专注于安全和可见性的极简VM运行时迈出的第一步。
## trust-manager:简化 Emacs 信任管理
Emacs 30 引入了一项重要的安全特性:显式文件信任。虽然默认将所有文件视为不信任,从而提高了安全性,但这可能会带来不便,导致用户为了可用性而禁用该系统。`trust-manager` 包,可在 MELPA 上获取,解决了这种冲突。
具体来说,Emacs Lisp Flymake 后端等功能对于不信任的文件会被禁用,提示用户消息并需要手动配置信任。`trust-manager` 通过在首次访问项目时仅提示用户*一次*是否信任,从而简化了此过程。然后会记住这个选择。
除了这种“即时”提示之外,它还会自动信任重要的文件,例如 init 文件和加载路径上的文件。模式行指示器(?)可以直观地标记不信任的缓冲区,从而实现快速的点击信任功能。用户还可以通过 `M-x trust-manager-customize` 或专用命令直接自定义信任设置。
`trust-manager` 旨在平衡 Emacs 增强的安全性与不会鼓励禁用关键保护的用户体验。
## 序:概要
本文探讨了“序”的数学概念——我们如何基于诸如大小或年龄之类的标准来排列对象,重点不在于*依据什么*排序,而在于排序关系本身的*性质*。序被定义为具有二元关系(通常可视化为箭头)并遵循特定规律的集合。
**线性(全)序**很简单:每个对象都有明确的位置。它们遵循自反性(一个对象与自身相关)、传递性(如果 a > b 且 b > c,则 a > c)、反对称性(如果 a > b 且 b > a,则 a=b)和完备性(每对元素都是可比较的)。
**偏序**放宽了“完备性”的要求,允许存在不可比较的元素。当无法进行完全排序时,这很有用(例如,对从未互动过的人进行排名)。偏序与线性序一样,遵循自反性、传递性和反对称性。
重要的是,序可以被视为**范畴**——具有对象和它们之间关系的结构(态射)。缺乏反对称性的预序也是范畴。序中的**并**(最小上界)和**交**(最大下界)操作直接对应于范畴中的**余积**和**积**,分别。
本文介绍了**格**(具有并和交的偏序)和**分配格**,它们通过**伯科夫表示定理**与集合的包含序相关联。最终,理解序为探索更复杂的范畴概念奠定了基础。