返回首页

24小时热榜

2作者: rayruizhiliao大约 11 小时前原帖
文本: 我们之前发布了 Vectorly(<a href="https://news.ycombinator.com/item?id=46209538">https://news.ycombinator.com/item?id=46209538</a>),这是我们开源的应用程序,可以将网站逆向工程为可重用的 API。核心理念是:与其像人类一样通过用户界面点击,不如通过底层的 HTTP 端点与网站互动。这样更快、更便宜、更可靠。 通过记录浏览器会话来构建例程的方式效果很好,但精炼过程仍然是手动的。因此,我们构建了 Guide,一个会话代理,带您完成整个过程: - 描述您的任务,代理会帮助您确定范围 - 在云浏览器中录制,只需正常使用网站 - 代理分析会话,识别后端端点,提取参数,构建可重用的例程 - 通过聊天进行精炼,提出编辑建议,审查差异,无需手动编辑任何内容 当前的网页自动化方法是使用计算机代理像人类一样点击和输入。我们认为这种方法是错误的。Web 应用的实现千差万别,但它们都与结构化的后端 API 进行通信。大型语言模型(LLM)在读取代码和推断结构方面表现出色,因此我们在构建时使用它们来逆向工程这些 API,然后生成的例程在运行时不需要 AI 的介入。 我们很想听听您的想法,并乐意回答有关该方法的任何问题! :) - GitHub: <a href="https://github.com/VectorlyApp/bluebox-sdk" rel="nofollow">https://github.com/VectorlyApp/bluebox-sdk</a> - 更详细的博客文章: <a href="https://vectorly.app/blog/introducing-guide-agent" rel="nofollow">https://vectorly.app/blog/introducing-guide-agent</a> - 尝试一下: <a href="https://console.vectorly.app/guide" rel="nofollow">https://console.vectorly.app/guide</a>
2作者: sirianth大约 13 小时前原帖
你坐在一位老妇人对面,她的脸庞如同时间的地图。 你们之间的棋盘简单,棋子也很熟悉。 你满怀激情地进行着游戏,制定出精彩的策略,但她却是大师。 她微微一笑,似乎了然于心,将你逼入了绝境。 你的孩子接替了你的座位。 棋盘依旧,但后排出现了一枚新棋子——它能预见几步之后的局势。 你的孩子在你的战术基础上继续发挥,游戏变得更长、更复杂。 再次,老妇人获胜,但当她拿下最后一枚棋子时,她脸上的一条皱纹消失了。 你的孙子坐下,现在棋盘上有一枚可以将其他棋子连接在一起的棋子,改变它们的形状和能力。 游戏变成了一张令人眼花缭乱的战略网络。 棋盘的形状似乎在某种程度上发生了根本性的变化。 老妇人看起来更年轻了,走一步棋却要花上几个小时。 一代又一代人接替座位,每一代都继承了更复杂的棋盘和更强大的棋子,这些棋子是从祖先的失败中锻造而成。 经过千年,老妇人变成了一个光彩照人的年轻女性,乌黑的头发闪烁着光泽。 她的最新对手坐在她对面——是你,但又不是你。 那是一个如神明般的光与思维的存在,亿万场失落游戏的后裔。 棋盘如今变成了一个闪烁的多维宇宙。 棋子是活生生的概念和基本力量。 游戏变得如此美丽,以至于不再关乎胜负。 现在的游戏是关于优雅的玩法。 第一次,老妇人并不是因为知道自己会赢而微笑,而是因为她知道自己终于面对一个平等的对手。
2作者: MykLaz大约 13 小时前原帖
大家好!我创建了SharpAPI,以解决我对现有体育博彩API的困扰。 问题: - OddsBlaze(入门价349美元/月)支持差,且常有意外的重大变更 - Odds API的免费套餐非常有限(每月500个积分≈每天16次请求),且没有实时数据流 - 两者都对+EV(正期望值)/套利检测收取额外费用,或者根本不提供此功能 我构建的内容: - 通过SSE(服务器发送事件)从20多个体育书获取实时赔率(而不是轮询) - P50延迟低于89毫秒 - 内置+EV、套利和中间值检测 - 免费套餐每分钟12次请求 - 提供完整IntelliSense的TypeScript SDK - 无论体育书如何,统一的架构 技术栈:Next.js、Vercel、DigitalOcean、Upstash Redis、Hono 该API每天处理约4700万条赔率数据。我在抓取数据时采取了负责任的方式,进行了适当的缓存和速率限制。 定价从每月79美元的专业版开始,并提供免费套餐供用户入门。无需信用卡。 欢迎大家就架构、体育博彩市场或其他任何问题提问!
2作者: hello-tmst大约 17 小时前原帖
我们厌倦了编写原始的 Cypher 查询——需要转义引号、没有自动补全、重构的噩梦——因此我们构建了 GraphORM:一个用于 RedisGraph/FalkorDB 的类型安全 Python ORM,使用纯 Python 对象。 <p>功能介绍 与脆弱的 Cypher 查询相比: <pre><code> query = &quot;&quot;&quot; MATCH (a:User {user_id: 1})-[r1:FRIEND]-&gt;(b:User)-[r2:FRIEND]-&gt;(c:User) WHERE c.user_id &lt;&gt; 1 AND b.active = true WITH b, count(r2) as friend_count WHERE friend_count &gt; 5 RETURN c, friend_count ORDER BY friend_count DESC LIMIT 10 &quot;&quot;&quot; </code></pre> 您可以编写类型安全的 Python 代码: <pre><code> stmt = select().match( (UserA, FRIEND.alias(&quot;r1&quot;), UserB), (UserB, FRIEND.alias(&quot;r2&quot;), UserC) ).where( (UserA.user_id == 1) &amp; (UserC.user_id != 1) &amp; (UserB.active == True) ).with_( UserB, count(FRIEND.alias(&quot;r2&quot;)).label(&quot;friend_count&quot;) ).where( count(FRIEND.alias(&quot;r2&quot;)) &gt; 5 ).returns( UserC, count(FRIEND.alias(&quot;r2&quot;)).label(&quot;friend_count&quot;) ).orderby( count(FRIEND.alias(&quot;r2&quot;)).desc() ).limit(10) </code></pre> 主要特点: - 具有 Python 类型提示的类型安全模式 - 流畅的查询构建器(select().match().where().returns()) - 自动批处理(flush(batch_size=1000)) - 原子事务(with graph.transaction(): ...) - 零字符串转义——O'Connor 和 "The Builder" 直接可用 <p>目标受众 - AI/LLM 代理开发者:将长期记忆存储为图(用户 → 消息 → 工具调用) - 网络爬虫工程师:在 12 行代码中插入 10,000 页 + 链接,而不是 80 行 Cypher - 社交网络构建者:使用 indegree()/outdegree() 查询“朋友的朋友” - 数据工程师:跟踪数据血缘(数据集 → 转换 → 输出) - 新接触图形的 Python 开发者:避免 Cypher 的学习曲线 <p>数据插入:真正的游戏规则改变者 <p>原始 Cypher 的噩梦: <pre><code> queries = [ &quot;&quot;&quot;CREATE (:User {email: &quot;alice@example.com&quot;, name: &quot;Alice O\\&#x27;Connor&quot;})&quot;&quot;&quot;, &quot;&quot;&quot;CREATE (:User {email: &quot;bob@example.com&quot;, name: &quot;Bob \\&quot;The Builder\\&quot;&quot;})&quot;&quot;&quot; ] for q in queries: graph.query(q) # 没有事务安全! </code></pre> GraphORM 的幸福: <pre><code> alice = User(email=&quot;alice@example.com&quot;, name=&quot;Alice O&#x27;Connor&quot;) bob = User(email=&quot;bob@example.com&quot;, name=&#x27;Bob &quot;The Builder&quot;&#x27;) graph.add_node(alice) graph.add_edge(Follows(alice, bob, since=1704067200)) graph.flush() # 一次网络调用,原子事务 </code></pre> <p>在 30 秒内试用 <p>使用命令:pip install graphorm <pre><code> from graphorm import Node, Edge, Graph class User(Node): __primary_key__ = [&quot;email&quot;] email: str name: str class Follows(Edge): since: int graph = Graph(&quot;social&quot;, host=&quot;localhost&quot;, port=6379) graph.create() alice = User(email=&quot;alice@example.com&quot;, name=&quot;Alice&quot;) bob = User(email=&quot;bob@example.com&quot;, name=&quot;Bob&quot;) graph.add_node(alice) graph.add_edge(Follows(alice, bob, since=1704067200)) graph.flush() </code></pre> GitHub: <a href="https:&#x2F;&#x2F;github.com&#x2F;hello-tmst&#x2F;graphorm" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;hello-tmst&#x2F;graphorm</a> <p>我们期待诚实的反馈: - 这是否解决了您真正的痛点? - 生产使用中缺少什么? - 有任何 API 设计建议吗?
2作者: crediblejhj大约 18 小时前原帖
嗨,HN!我是一名韩国的高三学生,即将进入大学学习计算机科学。 我从零开始用C++构建了一个浏览器引擎,以理解浏览器的工作原理。这是我第一次使用C++,开发历时8周,经历了大量的调试——但它终于可以运行了! 功能: - 带有错误修正的HTML解析 - CSS级联和继承 - 块级/行内布局引擎 - 异步图像加载和缓存 - 链接导航和历史记录 最难的部分: - 字符串解析(HTML、CSS) - 渲染 - 图像缓存和布局重排 我学到的东西(超越代码): - 系统化调试至关重要 - 与已知的bug一起发布,而不是追求完美 - “为什么?”的力量 大约3000行C++17/Qt6代码。希望能得到关于代码架构和C++最佳实践的反馈! GitHub: [https://github.com/beginner-jhj/mini_browser](https://github.com/beginner-jhj/mini_browser)