1作者: alameenpd20 天前原帖
嗨,HN,我正在构建 Whisper([https://usewhisper.dev](https://usewhisper.dev)),这是一款 AI 代码审查工具,能够进行代码质量和安全分析。它追踪执行流程,捕捉 SQL 注入、身份验证绕过和竞争条件等标准 PR 审查者常常遗漏的问题。 <p>问题</p> AI 代码审查工具能够发现样式问题,而安全扫描器仅检查依赖项。但您代码中的逻辑安全缺陷却常常被忽视。比如,用户输入在到达数据库之前经过三个函数而导致的 SQL 注入;支付处理中的竞争条件;隐藏在中间件中的身份验证绕过。 <p>我曾经发布过这些漏洞。您的 PR 审查者说“看起来不错”。您的安全扫描器显示通过(反正只检查依赖项)。两周后,渗透测试人员发现了在 PR 中一直可见的漏洞。 <p>为什么要与资金充足的初创公司竞争?</p> 这是个合理的问题。Greptile 融资数百万,Codacy、SonarQube 和 Snyk 都是行业巨头。我的观点是:他们解决的是错误的问题。 <p>大多数 AI 审查工具只是带有 GPT 的代码检查工具。它们查看差异并评论样式。安全扫描器要么只检查依赖项,要么产生 1000 多个误报。那些同时做两者的?是不同的产品,彼此之间没有沟通。 <p>我正在构建不同的东西:具有语义理解的执行流程追踪。Whisper 从用户输入追踪数据,通过您的逻辑找到它到达敏感操作的地方。 <p>大型企业无法轻易复制这一点。它们基于模式匹配构建,而追踪执行流程需要不同的架构。我有以下优势: - 速度:我在几天内推出功能,而他们需要经过企业合规流程 - 专注:解决一个问题(PR 中的安全性)而不是面面俱到 - 定价:每位开发者 30 美元,而他们的企业模式是每个座位 100-300 美元 - 开发体验:2 分钟设置,而他们需要 45 分钟的企业入职培训 <p>他们优化企业合同,而我优化希望 PR 不再发布漏洞的开发者。 <p>工作原理</p> 示例:标准审查者说“看起来不错” ```javascript const user = await getUser(req.headers.auth); const data = await db.query( `DELETE FROM users WHERE id = ${user.id}` ); ``` <p>Whisper 从 JWT 负载追踪 user.id,通过 getUser() 到 SQL 模板字面量。标记 SQL 注入,并建议使用参数化查询。 <p>竞争条件示例: ```javascript async function processPayment(userId, amount) { const balance = await getBalance(userId); if (balance >= amount) { await charge(userId, amount); await updateBalance(userId, balance - amount); } } ``` <p>Whisper 发现并发请求可能导致检查和更新之间的双重收费。 <p>状态</p> 目前处于私有测试阶段,已有早期工程团队参与。分析了超过 240 万行代码,捕获了 1247 个漏洞,平均扫描时间为 47 秒。支持所有主要语言,并对 Next.js、React 和 tRPC 有深入的框架理解。 <p>我想要的</p> 希望获得来自以下工程师的反馈: - 被扫描器的误报淹没 - 不断发布在 PR 中可见的漏洞 - 认为在这里竞争是疯狂的(告诉我为什么!) <p>我主要是独立开发,没有风险投资。只是解决我一直遇到的问题。 <p>免费试用:[https://usewhisper.dev](https://usewhisper.dev)
1作者: dawitworku20 天前原帖
嗨,HN 我创建了 DownloadStuffs,这是一个快速、现代的界面,用于探索互联网档案馆。 默认的互联网档案馆用户界面功能强大,但我常常发现它存在以下问题: - 在移动设备上速度较慢 - 难以预览多个文件的项目(系列、播放列表) - 下载大文件时不可靠(CORS、链接失效、不清楚“最佳文件”) 因此,我制作了一个更简洁、更具个性的替代方案。 它的功能包括: - 快速搜索,支持真实的服务器端分页 - 按媒体类型过滤 + 按相关性、下载量、观看次数、最近更新排序 - 页面内视频/音频预览,并支持播放列表队列 - 可靠的下载代理(避免浏览器/CORS问题) - 批量/播放列表 ZIP 下载,适用于系列和收藏 - 现场演示: [https://downloadstuffss.vercel.app/](https://downloadstuffss.vercel.app/) 技术栈:Bun + TypeScript + Vite + Vercel 仅使用公共互联网档案馆 API(与 IA 无关)。 我非常希望能收到反馈、边缘案例或改进大型公共档案用户体验的想法。 谢谢! — Dawit
13作者: kinduff20 天前原帖
大家好!<p>自从我了解到Teenage Engineering的Pocket Operators以来,我就成为了它们的忠实粉丝。今天我甚至拥有一台EP-133 K.O. II,我非常喜欢。<p>几个月前,Reddit用户andiam03分享了一份包含一些鼓点模式的Google表格[1]。我觉得这是一个非常酷的分享和理解节拍的方式。<p>在周末,我编写了一个基本版本的应用程序,今天我想和大家分享。我在空闲时间对它进行了多次迭代,昨天我觉得有了一个相当不错的版本可以分享给大家。<p>这个应用并不是为了作为一个音序器,而是一个用来实验节拍和基本声音的工具,可以保存它们并在你的歌曲中使用。它还具有通过链接分享的功能。<p>这个应用是使用Tone.js [2]、Stimulus [3]构建的,并作为静态网站部署在Render [4]上。我使用了一种大型语言模型(LLM)来阅读Tone.js的文档并生成声音,因为我对声音制作没有知识,然后在此基础上进行了修改。<p>总之,希望你们喜欢!我在构建它的过程中非常开心。<p>[0]: <a href="https://teenage.engineering" rel="nofollow">https://teenage.engineering</a><p>[1]: <a href="https://docs.google.com/spreadsheets/d/1GMRWxEqcZGdBzJg52soeVaY7iUSj1YncfIJZIPScBhM/edit" rel="nofollow">https://docs.google.com/spreadsheets/d/1GMRWxEqcZGdBzJg52soe...</a><p>[2]: <a href="https://tonejs.github.io" rel="nofollow">https://tonejs.github.io</a><p>[3]: <a href="https://stimulus.hotwired.dev" rel="nofollow">https://stimulus.hotwired.dev</a><p>[4]: <a href="http://render.com" rel="nofollow">http://render.com</a>