2 分•作者: paulpauper•3 天前
返回首页
一周热榜
2 分•作者: snyp•4 天前
我是一名中高级软件工程师(约 7 年工作经验),正尝试转入人工智能/机器人领域的应用研究。没有博士学位。
如果您曾招聘过研究工程师/应用科学家/机器人相关职位:
* 什么能区分一位优秀的非博士候选人和“喜欢机器学习的聪明软件工程师”?
* 哪些成果最有说服力(复现论文、开源贡献、参与实际系统开发、会议 workshop 论文等)?
* 面试中通常会暴露哪些技能差距?
* 如果您已经成功转型,您觉得什么对您有效?
2 分•作者: saradev2025•6 天前
2 分•作者: dworks•4 天前
2 分•作者: monero-xmr•5 天前
2 分•作者: superstarryeyes•3 天前
好吧,我当然尝试了。我必须这样做,因为它有一个受“数字极简主义”启发的特定特性。
这个特性是它每天(或每 X 天)只允许你获取一次新文章。
为什么?让我来解释一下...
我希望我的互联网内容像一份无聊的报纸。你早上拿到它,一边喝着早晨的咖啡,一边读完所有内容,然后就结束了!今天不再有新的信息了。没有提示,没有警报,平静,安静,禅意等等。
但有了这个,我需要它能够一次性从我数百个订阅源中获取所有文章。这就是 Zig 和 curl 优化发挥作用的地方。我尝试了所有能想到的技巧。如果我遗漏了什么,请告诉我!
首先,我在网络层使用了 curl multi。很酷的是它会自动进行 HTTP/2 多路复用,这意味着如果你的订阅源托管在同一个 CDN 上,它会重用相同的连接。我已将其配置为总共处理 50 个连接,每个主机最多 6 个连接,这似乎是服务器开始变得可疑之前的最佳点。此外,还有条件 GET。如果订阅源自上次以来没有更改,服务器只会说“未修改”,我们立即退出。
当 curl 正在下载订阅源时,我不希望 CPU 闲置,所以当 curl 完成下载单个订阅源时,它会触发一个回调,立即将 XML 扔进一个工作线程池进行解析。主线程继续管理所有网络事务,而工作线程并行处理 XML。Zig 的内存模型非常适合这个。每个订阅源都有自己的 ArenaAllocator,它基本上是一个游乐场,你可以在解析期间分配字符串,然后当我们完成时,我们只需一次性清除整个 arena。
对于解析本身,我正在使用 libexpat,因为它不会像 DOM 解析器那样将整个 XML 加载到内存中。这很重要,因为一些播客订阅源尤其是 10MB+ 的 XML。因此,通过智能截断,我们下载前几个 X mb(可配置),向后扫描以找到最后一个完整的 item 标签,在那里截断它,然后只解析它。即使订阅源大小变得很大,也能保持内存使用量合理。
对于 UI,我只是将所有内容管道到系统的“less”命令。你可以免费获得 vim 导航、搜索和分页。此外,我正在使用 OSC 8 超链接,因此你实际上可以单击链接以在浏览器中打开它们。不需要任何 TUI 框架。我还包括了 OPML 导入/导出和订阅源组作为附加功能。
结果:在几秒钟内从数百个 RSS 订阅源中检索内容,并且在一天剩下的时间里安心。
代码是开源的,并获得 MIT 许可。如果你有关于如何使其更快或更好的想法,请在下面评论。也欢迎在此处或 GitHub 上提出功能请求和其他建议。
2 分•作者: nalife520•6 天前
2 分•作者: DaNmarner•4 天前
2 分•作者: fortran77•5 天前
2 分•作者: DinakarS•4 天前
基于预设种子,非常酷的艺术生成器。<p>当你复制并分享链接时,会程序化地生成相同的艺术作品。<p>在你的浏览器本地运行 - 隐私安全。 欢迎你的评论和反馈。感谢你的体验!!:)
2 分•作者: debarshri•5 天前
2 分•作者: ctrl-alt-auto•5 天前
2 分•作者: mitchbob•4 天前
2 分•作者: alexpadula•3 天前
2 分•作者: modinfo•5 天前
2 分•作者: gnabgib•4 天前
2 分•作者: mubou2•4 天前
2 分•作者: pbowyer•3 天前
2 分•作者: divbzero•4 天前
2 分•作者: myfrontpocket•5 天前