经过6个月将AI语音助手与旧系统集成的过程,我厌倦了与2003年的SOAP作斗争。于是我开发了Hopeless,旨在将6个月的集成时间缩短到2周。令牌减少约70%。它可以与任何遗留系统兼容。
返回首页
一周热榜
我确实尽力了。我必须这样做,因为它有一个受“数字极简主义”启发的独特之处。
这个独特之处在于,它只允许你每天(或每X天)获取一次新文章。
为什么呢?让我来解释一下……
我希望我的互联网内容像一份无聊的报纸。你早上拿到它,边喝早咖啡边读完整份,然后就结束了!今天没有更多的新信息了。没有提示,没有警报,宁静、安静、禅意等等。
但为了实现这一点,我需要能够在一次操作中从我数百个源中获取所有文章。这就是Zig和curl优化发挥作用的地方。我尝试了所有的技巧。如果我遗漏了什么,请告诉我!
首先,我在网络层使用了curl multi。它的一个好处是自动进行HTTP/2复用,这意味着如果你的源托管在同一个CDN上,它会重用相同的连接。我将其配置为总共处理50个连接,每个主机最多6个,这似乎是在服务器开始变得可疑之前的最佳点。此外,还使用了条件GET。如果一个源自上次以来没有变化,服务器会直接返回“未修改”,我们立即退出。
在curl下载源的时候,我不想让CPU闲着,所以当curl完成下载一个源时,它会触发一个回调,立即将XML抛入一个工作线程池进行解析。主线程继续管理所有网络事务,而工作线程则并行处理XML。Zig的内存模型非常适合这个。每个源都有自己的ArenaAllocator,这基本上是一个可以在解析过程中分配字符串的游乐场,然后当我们完成时,我们只需一次性清除整个区域。
在解析方面,我使用了libexpat,因为它不会像DOM解析器那样将整个XML加载到内存中。这一点很重要,因为某些播客源的XML文件大小通常超过10MB。因此,通过智能截断,我们下载前几MB(可配置),向后扫描以找到最后一个完整的项目标签,然后在此处截断,只解析这一部分。即使在源的大小变得庞大时,也能保持内存使用的合理性。
至于用户界面,我只是将所有内容通过系统的“less”命令进行管道处理。你可以免费获得vim导航、搜索和分页功能。此外,我还使用了OSC 8超链接,因此你实际上可以点击链接在浏览器中打开它们。完全不需要TUI框架。我还添加了OPML导入/导出和源分组作为附加功能。
结果是:在几秒钟内从数百个RSS源中检索到内容,余下的时间则心安理得。
代码是开源的,采用MIT许可证。如果你有想法让它更快或更好,请在下面评论。功能请求和其他建议也欢迎在这里或GitHub上提出。
大家好!我们已经决定继续在公立学校就读。我完全理解我们应该更加关注社交/情感和课外活动方面。关于学术教育,除了标准的Kumon(公文式学习)、俄罗斯数学学校和新加坡数学之外,你们是如何补充他们的教育的?
我听说很多关于Alpha学校和人工智能学习的“东西”,但有没有人尝试过一些他们喜欢的?我们尝试过:
1. 像Tynker这样的东西
2. 我们喜欢可汗学院儿童版
3. 还没有尝试过任何订阅盒子的内容
嗨,HN。
电梯演讲:brig 是一个命令行工具,用于根据 devcontainers 规范启动容器,能够验证配置是否符合该规范,并旨在成为官方 CLI 工具的几乎无缝替代品。
验证这一点对我个人来说非常重要;我希望继续使用我团队正在使用的相同 devcontainer.json 文件,并希望我所做的任何增强仍然可以在他们的 VSCode 环境中使用。
---
我非常喜欢 devcontainers 的理念,并推动我的团队在几乎所有代码库中采用它们。我也很喜欢它们名义上并不依赖于 VSCode(它们只是带有一些便利功能的容器)。多年来,我一直依赖一个简单的 shell 脚本来根据项目的 Containerfile/Dockerfile 启动容器。
直到最近我才开始深入研究该规范;当我这样做时,我发现了一些相当不错的功能(例如,生命周期脚本),这些功能在不需要对我的 start-dev-container.sh 脚本添加临时解决方案的情况下会非常好用。
顺便提一下,我已经很多年没有写过比 shell 和 Python 脚本更复杂的东西(甚至更久没有为自由开源软件做出贡献)。由于 Go 在我使用的工具(OpenTofu、Podman、Docker)中被广泛使用,我觉得这不是学习 Go 的坏借口。
我将对 devcontainers 的兴趣和学习 Go 的愿望结合在一起,这就是结果。
虽然我写这个是为了满足我自己的需求,但我希望其他人也能从中受益。
[1]: [https://containers.dev](https://containers.dev)
[2]: [https://github.com/nlsantos/brig/blob/38d4ae10557422c37af349c9df3b460c343d487c/start-dev-container.sh](https://github.com/nlsantos/brig/blob/38d4ae10557422c37af349...)
嘿,HN!我在婚礼后创建了这个工具,因为我有5000张照片需要整理。
关键见解:大部分照片整理的时间都花在审查近似重复的照片上。专业摄影师通常会连续拍摄,因此你会得到同一时刻的10张以上的照片。
PicPick利用CLIP嵌入技术对视觉上相似的照片进行聚类,然后添加人脸识别功能,以保持组内的一致性(这样你就不会因为“新娘与父母”和“新娘与朋友”看起来相似而混淆)。
技术栈:
- 使用CLIP进行语义相似性分析(不仅仅是感知哈希)
- 使用face_recognition(dlib)进行人脸检测
- 在组合特征上进行DBSCAN聚类
- 使用FastAPI和原生JS构建用户界面
- 使用SQLite存储所有数据
这项技术将我的审查集从5000张减少到了大约1000个聚类,我在几个小时内将其过滤到300张用于相册,而不是几天。
聚类参数是可调的——对于重复较多的专业拍摄可以设置得更紧凑,对于休闲照片则可以放宽一些。
欢迎反馈!特别是在以下方面:
1. 更好的聚类算法(目前使用的是基于CLIP嵌入 + 时间戳 + 人脸向量的DBSCAN)
2. 快速审查的用户界面改进
3. 处理没有人脸的照片(风景、食物等)
该工具完全离线工作,无需云上传。
我开发了一个小型Linux工具,用于确定性地验证GPU PCIe链接的健康状况和带宽。<p>该工具报告以下内容:
- 协商的PCIe代数和宽度
- 主机到设备(Host→Device)和设备到主机(Device→Host)的内存拷贝带宽峰值
- 通过NVML获取的持续PCIe发送(TX)/接收(RX)利用率
- 基于可观察硬件数据得出的规则性判断<p>之所以开发这个工具,是因为PCIe问题(如代数降级、通道宽度减少、扩展卡、分叉)通常在应用层是不可见的,且无法通过内核调优或异步重叠来解决。<p>仅限Linux:该工具依赖于sysfs和PCIe AER暴露,而Windows并不提供这些功能。