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; } } ```
1作者: michaloo15 天前
嗨,各位 HN 用户, 我白天是一名数据分析和跟踪顾问。这个产品是我为自己的项目开发的,后来决定将其产品化。 我同时在测试两件事: * 商业模式:在通常采用订阅模式的行业中,采用一次性付费模式 * 技术架构:在你的基础设施上实现自动化 DevOps(类似于 ServerPilot 或 Laravel Forge,但用于无服务器设置,因此可以持续维护) 技术细节: * 最小化的跟踪脚本,默认无 Cookie * 开箱即用的来自你子域名的第一方跟踪 * Web 安装程序使用一次性 API 令牌配置所有内容,我不需要持续访问。安装完成后,它就成为用户基础设施的一部分 欢迎提供反馈或提出关于架构或商业模式的问题。