1作者: Metalnem3 天前原帖
大家好!<p>如果这里有Nespresso的爱好者,您可能想查看我妻子为比较Nespresso胶囊而制作的网站 — <a href="https:&#x2F;&#x2F;www.nespressocapsules.coffee" rel="nofollow">https:&#x2F;&#x2F;www.nespressocapsules.coffee</a>。这是一个基于Python的网络应用程序,从www.nespresso.com&#x2F;tw&#x2F;en(在台湾,咖啡因含量必须依法明确标示)提取数据,进行处理,并通过响应式HTML界面展示。后端完全使用Azure Functions实现。数据存储在Azure Blob Storage中的SQLite数据库中,胶囊图片也存储在那里,图片在保存之前使用Pillow库进行处理和调整大小。该应用程序生成动态HTML表格,使用Bootstrap主题以实现现代外观,并通过JavaScript按任意列对表格进行排序。静态内容通过Cloudflare提供,并启用了缓存以减少延迟和带宽使用。Cloudflare还处理HTTPS重定向。<p>这个项目的想法源于我们想比较不同Nespresso胶囊中的咖啡因含量。我知道Alvin Bunk提供的电子表格(<a href="https:&#x2F;&#x2F;docs.google.com&#x2F;spreadsheets&#x2F;d&#x2F;1kZJCdTmqQla2ha3DDYyixQDIUuf9wLvt3122akBkhgM" rel="nofollow">https:&#x2F;&#x2F;docs.google.com&#x2F;spreadsheets&#x2F;d&#x2F;1kZJCdTmqQla2ha3DDYyi...</a>)以及可以使用Azure Functions构建可扩展应用程序的可能性——而且成本低廉。因此,她将这两者结合起来,构建了一个(希望)有用的工具。
2作者: rjyoungling3 天前原帖
网址中的错别字:<a href="https:&#x2F;&#x2F;vibeflirting.com&#x2F;" rel="nofollow">https:&#x2F;&#x2F;vibeflirting.com&#x2F;</a><p>嗨,HN, 经过多年的反复尝试学习编程(我有纯数学背景,但一直陷入教程的泥潭),我终于在Claude Code的耐心指导下完成了一些实际的项目。<p>问题是:大多数男性的约会个人资料照片都很糟糕。光线差、角度不佳、构图不讨喜。男性通常不喜欢拍照,所以我们的照片效果很差。<p>我的解决方案:建立了一个流程,能够处理上传的照片,并通过将AI工具结合在一起来专门为约会应用程序增强这些照片。我尝试了不同的方法,但在训练flux和使用enhancor或kontext来处理皮肤纹理(以及使用midjourney进行小幅编辑)方面取得了最大的成功。<p>技术栈:前端使用原生HTML/CSS/JS,后端使用Netlify Functions,存储使用Cloudinary,数据库使用Google Sheets。没有使用框架——保持简单,以便实际完成一些东西。<p>(我也尝试过使用Tailwind和CSS,但最终导致了构建冲突,所以我将其移除,全部用纯CSS编写。吸取了教训。)<p>学习曲线很陡峭,但Claude Code解答了数百个基本问题。我使用待办文件夹在会话之间保存上下文,并使用截图文件夹进行调试帮助。还有其他一些方法,但随着创新的步伐,这些方法中的许多已经过时。<p>花了大约两个月才将一切弄好。现在我主要感到高兴的是终于完成了一些东西,并“vibelearned”。希望通过逐步发布和学习,我能够应对更复杂的项目。<p>欢迎对这个新独立开发者/新手程序员的任何建议。<p>RJ
13作者: anerli3 天前原帖
嗨,HN,Anders 和 Tom 在这里。两个月前,我们发布了一篇关于我们的 AI 测试自动化框架的文章,获得了相当不错的关注(<a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=43796003">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=43796003</a>)。<p>我们收到了社区的很多优秀反馈,其中最积极的反应是关于我们在浏览器代理中使用的以视觉为先的设计理念。然而,许多人希望能够在测试领域之外使用底层代理。因此,今天我们发布了功能齐全的 AI 浏览器自动化框架。<p>您可以使用它来自动化网页上的任务,在没有 API 的情况下进行应用之间的集成,提取数据,测试您的网页应用,或者作为您自己浏览器代理的构建模块。<p>传统上,浏览器自动化只能通过 DOM 完成,尽管这并不是人类使用浏览器的方式。大多数浏览器代理仍然停留在这种范式中。通过以视觉为先的方法,我们避免依赖不稳定的 DOM 导航,并在各种网站中处理复杂交互时表现更好,例如:<p>- 拖放交互<p>- 数据可视化、图表和表格<p>- 带有嵌套 iframe 的遗留应用<p>- 以 Canvas 和 WebGL 为重的网站(如设计工具或照片编辑)<p>- 通过浏览器流式传输的远程桌面<p>为了准确与浏览器进行交互,我们使用视觉基础模型根据像素坐标执行精确操作。Magnitude 使用的模型必须足够智能以规划操作,同时也能够执行这些操作。并不是很多模型既聪明又具备视觉基础。我们强烈推荐 Claude Sonnet 4 以获得最佳性能,但如果您更喜欢开源,我们也支持 Qwen-2.5-VL 72B。<p>大多数浏览器代理从未进入生产环境。这是因为(1)上述提到的不稳定的 DOM 导航,以及(2)大多数浏览器代理提供的控制能力不足。主流范式是您给代理一个高层次的任务 + 工具,然后希望能顺利完成。这对于需要可靠和具体的生产自动化来说,很快就会崩溃。使用 Magnitude,您可以通过我们的 `act()` 和 `extract()` 语法对代理进行细粒度控制,并根据需要与您自己的代码混合。您还可以在操作和代理级别完全控制提示。<p>```ts<p>&#x2F;&#x2F; Magnitude 可以处理高层次任务<p>await agent.act(&#x27;创建一个问题&#x27;, {<p><pre><code> &#x2F;&#x2F; 可选地传递代理将在适当的地方使用的数据 data: { title: &#x27;使用 Magnitude&#x27;, description: &#x27;运行 &quot;npx create-magnitude-app&quot; 并按照说明进行操作&#x27;, }, </code></pre> });<p>&#x2F;&#x2F; 它也可以处理低层次的操作<p>await agent.act(&#x27;将 &quot;使用 Magnitude&quot; 拖动到进行中的列顶部&#x27;);<p>&#x2F;&#x2F; 根据与提供的 zod 模式匹配的 DOM 内容智能提取数据<p>const tasks = await agent.extract(<p><pre><code> &#x27;列出进行中的问题&#x27;, z.array(z.object({ title: z.string(), description: z.string(), &#x2F;&#x2F; 代理可以提取现有数据或新的见解 difficulty: z.number().describe(&#x27;将难度评分为 1-5&#x27;) })), </code></pre> );<p>```<p>我们有一个设置脚本,可以轻松开始使用示例,只需运行 &quot;npx create-magnitude-app&quot;。我们很想听听您的想法!<p>仓库: <a href="https:&#x2F;&#x2F;github.com&#x2F;magnitudedev&#x2F;magnitude">https:&#x2F;&#x2F;github.com&#x2F;magnitudedev&#x2F;magnitude</a>
3作者: ww5203 天前原帖
在严格的静态类型语言中进行动态调度是很困难的。像下面这样简单的代码: ```zig map.put("add", add); map.put("hello", hello); fn add(a: i32, b: i32) i32 { return a + b; } fn hello() []const u8 { return "Hello World"; } ``` 是不可行的,因为映射的键/值的值类型需要相同,但所有函数的类型都是不同的。动态调用具有不同参数数量、不同参数类型和不同返回类型的函数是非常困难的。 其他语言通常使用动态类型、运行时反射、宏,或者传入一个大的泛型参数,让函数自己去处理。 在ZigJR中,我利用Zig的编译时特性进行编译时反射,以确定函数的参数类型、返回类型和返回错误。我将这些信息封装成一个特定的调用对象,并使用接口模式生成一个统一类型的对象,以便放入映射中。这并不容易,但可以实现。 [1] [1] [https://github.com/williamw520/zigjr/blob/master/src/rpc/json_call.zig](https://github.com/williamw520/zigjr/blob/master/src/rpc/json_call.zig)