Spectrimage分析上传的照片,在您的浏览器中直接创建视觉色彩光谱,无需服务器连接。它首先将图像调整大小,最长边不超过300像素,然后将每个像素转换为HSL(色相、饱和度、亮度)。 颜色被分为180个色相区间(2度切片),非彩色(黑、白、灰)被单独分离。在每个区间内,像素按亮度排序,最暗/最亮的20%用于定义阴影和色调,而中间的20%代表纯色。 最后,这些颜色列以ROYGBIV顺序排列并在画布上显示,列的高度反映了色相的普遍程度。每列内的渐变视觉上表示从色调到纯色再到阴影的过渡,即使对于大型图像也能提供平滑快速的色彩分析。
## 软件开发中的替罪羊机制
软件故障很少通过客观分析来解决;相反,组织常常陷入一种**替罪羊**模式,反映了古代社会的仪式。当问题出现时,会产生对可见行动的压力,导致选择一个“受害者”——一个基础组件或技术——来承担责任,无论实际原因如何。这并非关于解决问题,而是通过归咎来恢复社会秩序。
这种“**战争理由工程**”是由那些利用失败来推动自己偏好解决方案的人推动的,他们将现有系统描绘成固有缺陷。一个损坏的功能成为拆除一个正常运行的基础的理由,即使它与故障无关。这受到确认偏差和可得性偏差等认知偏差的助长,并在低信任环境中蓬勃发展。
敏捷运动本身就是一个典型的例子,其中“瀑布模型”成为更广泛的项目失败的便捷替罪羊,从而实现方法论的彻底转变。
抵制这种模式需要严格的根本原因分析,将故障与基础分离,并根据价值评估解决方案,而不是将其视为对感知缺陷的反应。认识到这种动态——危机、替罪羊、虚假因果关系——对于培养更理性、更有效的工程文化至关重要。最终,选择工程而非叙事对于避免重复破坏和重建的循环至关重要。
## Brunost:一种新挪威语编程语言
John Lindbakk 创建了“Brunost”,一种受同名挪威山羊奶酪启发的函数式编程语言——香甜、顺滑且富有深度。该语言的独特之处在于它严格执行新挪威语(Nynorsk),一种挪威书面标准,要求所有变量、函数和参数名称都符合其词典。如果未使用新挪威语,则会标记错误。
Brunost 是一种解释型语言,具有松散的类型系统,解释器使用 Zig 编写以提高速度。主要特性包括不可变性(使用 `fast`)、条件语句 (`viss`)、函数 (`gjer`)、循环 (`forKvart`、`medan`) 以及异常处理 (`prøv`/`fang`)。
作者承认该项目具有趣味性,不打算构建完整的生态系统,但欢迎贡献。示例展示了 Brunost 的功能,包括斐波那契数列、FizzBuzz 甚至康威生命游戏的实现。虽然不打算用于生产环境,但 Brunost 是一次有趣的语言设计探索,也是对新挪威语的庆祝。感兴趣的人可以在 GitHub 仓库中进行实验。
## trust-manager:简化 Emacs 信任管理
Emacs 30 引入了一项重要的安全特性:显式文件信任。虽然默认将所有文件视为不信任,从而提高了安全性,但这可能会带来不便,导致用户为了可用性而禁用该系统。`trust-manager` 包,可在 MELPA 上获取,解决了这种冲突。
具体来说,Emacs Lisp Flymake 后端等功能对于不信任的文件会被禁用,提示用户消息并需要手动配置信任。`trust-manager` 通过在首次访问项目时仅提示用户*一次*是否信任,从而简化了此过程。然后会记住这个选择。
除了这种“即时”提示之外,它还会自动信任重要的文件,例如 init 文件和加载路径上的文件。模式行指示器(?)可以直观地标记不信任的缓冲区,从而实现快速的点击信任功能。用户还可以通过 `M-x trust-manager-customize` 或专用命令直接自定义信任设置。
`trust-manager` 旨在平衡 Emacs 增强的安全性与不会鼓励禁用关键保护的用户体验。