2作者: Sem_pre大约 1 个月前原帖
没人谈论的问题 你想接受一笔10,000美元的USDC付款。你有两个选择: 选项A:集成一个支付处理器,比如Coinbase Commerce。设置一个账户,嵌入他们的结账小部件,处理他们的SDK。支付100美元的费用(1%)。 选项B:建立自己的区块链监听器。学习ethers.js,订阅USDC转账事件,处理重组、确认和边缘案例。至少需要两周的工作。 没有折中的办法。没有服务可以简单地告诉你:“是的,这笔特定的付款已到账。” 直到现在。 [https://paywatcher.dev?utm_source=hackernews](https://paywatcher.dev?utm_source=hackernews)
1作者: DenisDolya大约 1 个月前原帖
版本1.2引入了两个LZW后端(安全的边界检查与不安全的涡轮模式)、微缓存以实现30-40%的解码速度提升、三种输出格式(RGB888/RGB565LE/RGBA8888)、基于跨度的涡轮位图处理、可选的256KB RGB565 map2以实现一次渲染两个像素、对正确的处置方法3的支持、用于索引输出的渲染器API、在需要原始速度时禁用检查的安全开关,以及避免符号冲突的前缀模式——所有这些都在用户提供的临时缓冲区上实现100%无malloc分配。<p>仓库链接:<a href="https://github.com/Ferki-git-creator/TurboStitchGIF-HeaderOnly-Fast-ZeroAllocation-PlatformIndependent-Embedded-C-GIF-Decoder" rel="nofollow">https://github.com/Ferki-git-creator/TurboStitchGIF-HeaderOn...</a>
1作者: StrangeSound大约 1 个月前原帖
嘿,HN, 在2024年,我的儿子出生了。在漫长的夜晚频繁醒来的时候,我开始(但从未完成)构建一个Electron应用。我很快发现,连接主进程和渲染进程所需的样板代码非常繁琐。我相信和许多人一样,我开始围绕它构建抽象,以便让生活更轻松。 由于在工作中深受NestJS生态系统的影响,我开始喜欢依赖注入(DI)、装饰器和声明式编程风格。 我第一次尝试抽象的结果相当平庸,但我最近决定再试一次。我更加深入地使用装饰器,以便为库提供一种简单易用的干净语法。然后,我将其打包,以便其他人也可以使用。 Electron IPC Bridge允许你在主进程中装饰你的类,并自动配置预加载中的合同。随附的vite插件从这些合同中生成类型,并确保渲染器中的类型安全。如果你更改了合同,类型也会自动更新。简单易用! 之前的代码: ```javascript // 主进程 ipcMain.handle("users.get_profile", async (_event, userId: string) => { return userService.getProfile(userId); }); // 预加载 // 容易出错的通道,或者忘记注册 contextBridge.exposeInMainWorld("api", { getProfile: (id: string) => ipcRenderer.invoke("users.get_profile", id), }); // 渲染器 // 没有类型安全 const profile = await window.api.getProfile(userId); ``` 之后的代码: ```javascript // 主进程 @IpcController() class UsersController { @IpcHandle() async getProfile(userId: string) { return userService.getProfile(userId); } } // 预加载 setupPreload(); // 渲染器 // 100% 类型安全,自动生成的合同,支持IDE自动补全 const profile = await window.api.users.getProfile(userId); ``` 我还尝试提供了一些不同的依赖注入库示例,以帮助人们入门。我把我原来的未完成应用迁移得相当顺利!现在它也使用Nest而不是typedi。 AI披露: 核心:大约90%是手写的,部分地方有一些辅助和重构 Vite插件:大约50/50,倾向于AI主导,因为我在Vite方面的经验不足 文档:大部分是我写的,但AI规划了网站结构,并审核和编辑了我写的内容。它还编写了故障排除页面,并为我生成了一些图表。 这篇帖子完全是我写的!