返回首页
最新
我今天更新了Firefox,立刻发现打开两个YouTube标签页时CPU使用率达到了30%。这真让人烦。<p>还有其他人遇到同样的问题吗?
我并不讨厌 Azure DevOps。相反,在过去五年多的时间里,它对我们组织来说是一个出色的工具。它的安全性相对容易保障,我们有很多优秀的管道来检查我们的代码、进行部署、与第三方服务集成等。我们对组织的运作有很好的可视化了解。
但是……我不禁觉得它跟不上 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 是否实际上已经到了生命周期结束的阶段?
我希望答案是否定的,我们可以坚持到情况好转。不过,我开始担心这只是沉没成本谬论。无论如何,有什么希望可以提供吗?
我想分享一下PNANA,这是一个我用C++和FTXUI构建的轻量级TUI编辑器,最初是为了个人使用,现在已开源。它是一个简约、快速的基于终端的编辑器,专注于简单的编码和编辑工作流程——没有臃肿的功能,只有针对终端使用场景的核心功能。
<p>主要实用特性</p>
- 轻量级的C++核心,结合FTXUI实现流畅的TUI渲染,快速启动和低资源占用
- 基本但可靠的编辑功能(语法高亮、行号显示、基本导航)
- 简单的构建过程,依赖项极少,易于在Linux/macOS终端上编译和运行
- 早期的LSP集成支持基本的代码补全(仍在完善中,但对常见语言已可用)
<p>这确实是一个早期阶段的项目——我构建它是为了满足自己对一个简约、自建的TUI编辑器的需求,同时学习C++/FTXUI。它还有一些粗糙之处(例如,一些LSP问题,定制化有限),并不打算取代成熟的编辑器如Vim/Nano——只是一个小型的开源项目,适合喜欢简约终端工具的人或想学习用C++进行TUI开发的人。</p>
<p>任何反馈、bug报告或小建议都非常欢迎。我正在慢慢迭代这个项目,期待从HN社区的见解中学习。</p>
感谢您的关注!
大家好!<p>我创建了SHDL(简单硬件描述语言),作为一种将硬件描述简化到其绝对基础的实验。<p>在SHDL中,没有算术运算符,没有隐式位宽,也没有高级构造。你需要从逻辑门和导线显式构建一切,然后以层次化的方式组合更大的组件。这个目标不是合成或性能,而是理解:当抽象被去除时,数字系统实际上是什么样子的。<p>SHDL配有PySHDL,这是一个Python接口,允许你加载电路、输入信号、逐步模拟并观察输出。在底层,SHDL将电路编译为C语言以实现快速执行,但语言本身保持故意简洁和透明。<p>这并不是为了取代Verilog或VHDL。它的目标是:- 从基本原理学习数字逻辑 - 实验HDL和语言设计 - 教授或可视化复杂硬件如何从简单门电路中产生。<p>我特别希望能收到关于以下方面的反馈:- 语言设计选择 - 哪些感觉不必要的限制与教育价值 - 这种“反抽象”HDL对你是否有用。<p>代码库:<a href="https://github.com/rafa-rrayes/SHDL" rel="nofollow">https://github.com/rafa-rrayes/SHDL</a><p>Python包:PySHDL在PyPI上<p>为了让这个更具体,以下是几个用SHDL编写的小示例:<p>1. 全加器<p>组件 FullAdder(A, B, Cin) -> (Sum, Cout) {<p><pre><code> x1: XOR; a1: AND;
x2: XOR; a2: AND;
o1: OR;
连接 {
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;
}</code></pre>
}<p>2. 16位寄存器<p># clk必须在两个周期内保持高电平以存储一个值<p>组件 Register16(In[16], clk) -> (Out[16]) {<p><pre><code> >i[16]{
a1{i}: AND;
a2{i}: AND;
not1{i}: NOT;
nor1{i}: NOR;
nor2{i}: NOR;
}
连接 {
>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}];
}
}</code></pre>
}<p>3. 16位进位加法器<p>使用 fullAdder::{FullAdder};<p>组件 Adder16(A[16], B[16], Cin) -> (Sum[16], Cout) {<p><pre><code> >i[16]{ fa{i}: FullAdder; }
连接 {
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;
}
}</code></pre>