返回首页
最新
我真的很难找到一些有趣的iPhone游戏,这些游戏没有垃圾信息、赌场套路、令人担忧的网络调用等,而且我希望能长期玩下去。<p>我目前只有4款游戏:Strategery、国际象棋、Thronefall和balatro。<p>我很喜欢Archero,但它太像赌场游戏了,所以我已经卸载了。<p>还有其他推荐吗?无论是付费的还是免费的。
我构建了一个 TypeScript 迭代器库(iterflow),并希望测量懒惰和急切管道之间的实际堆内存差异。这是基准测试的详细说明。
<p>管道</p>
急切 - 标准数组链式调用:
<p>const data = Array.from(generateRows(500_000));</p>
<p>const results = data
.filter(r => r.active && r.value > threshold)
.map(r => ({ id: r.id, score: r.value * 1.5 }))
.slice(0, 10_000);</p>
每一步都会产生一个新的中间数组。 .filter() 分配一个,.map() 分配另一个,.slice() 则丢弃大部分的数组。
懒惰 - 通过 iterflow 实现相同的管道:
<p>import { iter } from '@mathscapes/iterflow';</p>
<p>const results = iter(generateRows(500_000))
.filter(r => r.active && r.value > threshold)
.map(r => ({ id: r.id, score: r.value * 1.5 }))
.take(10_000)
.toArray();</p>
generateRows 是一个生成器,每次生成一行。在 .toArray() 拉取值通过链条之前,没有任何数据被实际化。没有中间数组。
<p>结果</p>
数据集:500,000 行
管道:filter(active && value > 5000) → map(score) → take(10,000)
原生数组 (.filter → .map → .slice) 15.4 MB (最小 15.2 MB,最大 16.2 MB)
iterflow (.filter → .map → .take) 5.8 MB (最小 5.8 MB,最大 5.8 MB)
<p>方法论</p>
- 指标:管道前后的 heapUsed 差异,而不是总进程内存
- 两个管道都来自相同的生成器源——差异仅测量管道分配,而不是源数据——在每次运行之间强制调用显式 gc() 的 expose-gc
- 测量前丢弃一次热身运行
- 报告 5 次运行的中位数
- 原生数组运行在管道运行之前将完整的 500k 数据集实际化为数据。该分配不包括在差异中——两种方法在同一基础上进行测量。
<p>关于库的一些说明</p>
- iter() 是对 ES2015 生成器和迭代器协议的封装——没有魔法,只是一个流畅的 API,使调用位置看起来与数组链式调用相同
- .sum() 和 .mean() 仅限于 Iterflow<number> 类型——在非数字迭代器上调用它们会导致编译错误
- 具有一些流式统计操作(.streamingMean()、.ewma()、.windowedMin()),可以在不使用单独累加器的情况下进行运行聚合
- 零运行时依赖
https://www.npmjs.com/package/@mathscapes/iterflow
嘿,HN,
如果你曾尝试导出 Gemini 聊天记录,你就会知道这个问题:没有原生的方法可以做到这一点。
我在研究和写作中大量使用 Gemini。每次会话结束后,我都要做同样繁琐的事情——全选、复制、粘贴到 Word 中、修复格式问题,然后重复。代码块变成了普通文本,标题消失了,表格也崩溃了。每次想保留的对话都需要花费 10 分钟进行整理。
因此,我开发了 Gemini Exporter,这是一款 Chrome 扩展,可以一键处理 Gemini 聊天记录的导出工作流程。
支持的导出格式:
- 导出 Gemini 聊天记录为 Word (DOCX) – 结构保留:标题、列表、代码块,均可编辑
- 导出 Gemini 聊天记录为 PDF – 适合分享、归档或合规的干净布局
- 导出 Gemini 聊天记录为 Google Docs – 直接推送,无需下载文件,随时准备协作
- 导出 Gemini 聊天记录为 Notion – 将对话转换为 Notion 页面,用于文档或知识库
- 导出选定部分或整个聊天记录
- 在导出前设置字体、大小和文本颜色
为什么不直接使用 API?
Gemini API 不会暴露用户现有的对话历史——它只生成新的响应。导出浏览器中已存在的 Gemini 聊天记录的唯一方法是直接从 DOM 中读取。这正是该扩展所做的,完全在客户端进行。没有对话数据会离开你的浏览器用于 Word 和 PDF 导出。
我希望能收到任何复杂聊天记录的反馈——特别是包含大量代码块、数学符号或非常长的多轮对话。这些都是我仍在优化的边缘案例。
→ Chrome 网上应用店:[https://chromewebstore.google.com/detail/gemini-exporter-save-gemi/lgipeakgdkcgnkdljeagconfbfeolidj](https://chromewebstore.google.com/detail/gemini-exporter-save-gemi/lgipeakgdkcgnkdljeagconfbfeolidj)
→ 网站:[https://backrun.co/gemini-exporter](https://backrun.co/gemini-exporter)
我觉得像Unity和Unreal这样的工具有很多以用户界面为中心的工作流程,这对于营造氛围来说并不太好。