2作者: gethly15 天前
我今天更新了 Firefox,立刻就发现开了两个 YouTube 标签页时 CPU 占用率达到了 30%。烦死了。<p>有人也遇到同样的情况吗?
1作者: sam25615 天前
我并不讨厌 Azure DevOps。相反,在过去的 5 年多里,它一直是我们在组织中使用的绝佳工具。它相当容易进行安全设置,我们有大量优秀的流水线,可以检查我们的代码、进行部署、与第三方服务集成等等。我们对组织有很好的可见性。 但……我忍不住觉得它跟不上 GitHub 的发展,现在面临一个问题:如果想保持竞争力,我们是不是别无选择,只能痛苦地迁移到 GitHub Enterprise? 具体来说,我们感受到的痛点包括: 1. Copilot PR 审查在哪里?在 GitHub 中,我只需点击一个按钮,就能通过 Copilot 立即获得对任何 PR 的初步审查。当然,它并不完美,但它几乎是免费的。 2. MCP?好吧,DevOps 终于有了 MCP 服务器,而且它实际上相当不错。但它花了很长时间才推出。这会是一个重复出现的模式吗?我们是否需要等待一年才能获得 GitHub 用户立即使用的工具? 3. Claude Code。在 GitHub 上,我可以从任何地方(浏览器、桌面、手机)给 Claude Code 分配任务,它会在一个小小的开发容器中运行,然后带着一个 PR 回来。同样,它并不总是完美的,但初级开发人员的 PR 也是如此。而且 Claude Code 不会在意我是否在周五晚上给它分配任务。 所以,标题中的问题是:ADO 实际上是否已经到了生命周期终点(EOL)? 我希望答案是否定的,我们可以坚持下去,直到情况好转。但我开始担心,这仅仅是沉没成本谬误。有人能提供一些希望吗?
2作者: Frameser15 天前
我想分享一下 PNANA,这是一个用 C++ 和 FTXUI 构建的轻量级 TUI 编辑器,我一直在为个人使用而构建,现在已经开源了。它是一个极简、快速的基于终端的编辑器,专注于简单的编码和编辑工作流程——没有臃肿的功能,只有针对终端使用场景的核心功能。 关键的实用功能: * 轻量级的 C++ 核心,使用 FTXUI 实现流畅的 TUI 渲染,快速启动和低资源占用 * 基本但可靠的编辑功能(语法高亮、行号、基本导航) * 简单的构建过程,依赖项最少,易于在 Linux/macOS 终端上编译和运行 * 早期 LSP 集成支持基本代码补全(仍在完善中,但对常用语言有效) 这绝对是一个早期项目——我构建它的目的是为了满足我对一个极简、自制的 TUI 编辑器的需求,并在此过程中学习 C++/FTXUI。肯定存在一些不足之处(例如,一些 LSP 问题、有限的自定义),它并不打算取代像 Vim/Nano 这样的成熟编辑器——只是一个小型的开源项目,适合那些喜欢极简终端工具或想用 C++ 学习 TUI 开发的人。 欢迎任何反馈、错误报告或微小的建议。我正在慢慢地迭代它,并希望从 HN 社区的见解中学习。 感谢您的关注!
3作者: rafa_rrayes15 天前
大家好! 我构建了 SHDL(Simple Hardware Description Language,简单硬件描述语言),作为一种将硬件描述精简到绝对基础的实验。 在 SHDL 中,没有算术运算符,没有隐式的位宽,也没有高级结构。你完全从逻辑门和导线开始构建一切,然后以分层的方式组合更大的组件。目标不是合成或性能,而是理解:当抽象被移除时,数字系统实际上是什么样子的。 SHDL 附带 PySHDL,这是一个 Python 接口,可以让你加载电路、探测输入、步进模拟并观察输出。在底层,SHDL 将电路编译成 C 以实现快速执行,但语言本身保持了有意的小巧和透明。 这并不是要取代 Verilog 或 VHDL。它的目标是: - 从基本原理学习数字逻辑 - 试验 HDL 和语言设计 - 教学或可视化复杂硬件如何从简单门电路演变而来 我特别希望收到关于以下方面的反馈: - 语言设计选择 - 哪些感觉不必要地受限,哪些具有教育价值 - 这种“反抽象”的 HDL 对你是否有用 代码仓库:[https://github.com/rafa-rrayes/SHDL](https://github.com/rafa-rrayes/SHDL) Python 包:PySHDL on PyPI 为了更具体,这里有一些用 SHDL 编写的小型工作示例: 1. 全加器 ``` component FullAdder(A, B, Cin) -> (Sum, Cout) { x1: XOR; a1: AND; x2: XOR; a2: AND; o1: OR; connect { A -> x1.A; B -> x1.B; A -> a1.A; B -> a1.B; x1.O -> x2.A; Cin -> x2.B; x1.O -> a2.A; Cin -> a2.B; a1.O -> o1.A; a2.O -> o1.B; x2.O -> Sum; o1.O -> Cout; } } ``` 2. 16 位寄存器 ``` # clk 必须高电平持续两个周期才能存储一个值 component Register16(In[16], clk) -> (Out[16]) { >i[16]{ a1{i}: AND; a2{i}: AND; not1{i}: NOT; nor1{i}: NOR; nor2{i}: NOR; } connect { >i[16]{ # 在 clk 上捕获 In[{i}] -> a1{i}.A; In[{i}] -> not1{i}.A; not1{i}.O -> a2{i}.A; clk -> a1{i}.B; clk -> a2{i}.B; a1{i}.O -> nor1{i}.A; a2{i}.O -> nor2{i}.A; nor1{i}.O -> nor2{i}.B; nor2{i}.O -> nor1{i}.B; nor2{i}.O -> Out[{i}]; } } } ``` 3. 16 位行波进位加法器 ``` use fullAdder::{FullAdder}; component Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) { >i[16]{ fa{i}: FullAdder; } connect { A[1] -> fa1.A; B[1] -> fa1.B; Cin -> fa1.Cin; fa1.Sum -> Sum[1]; >i[2,16]{ A[{i}] -> fa{i}.A; B[{i}] -> fa{i}.B; fa{i-1}.Cout -> fa{i}.Cin; fa{i}.Sum -> Sum[{i}]; } fa16.Cout -> Cout; } } ```