1 分•作者: xoxxala•5 个月前
返回首页
最新
1 分•作者: johnbarron•5 个月前
1 分•作者: gvsh_maths•5 个月前
我构建了一个 TypeScript 迭代器库 (iterflow),并想测量惰性管道和急切管道之间的实际堆差异。这是基准测试报告。<p>管道<p>急切 - 标准数组链式操作:<p>const data = Array.from(generateRows(500_000));<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() 丢弃大部分。<p>惰性 - 通过 iterflow 的相同管道:<p>import { iter } from '@mathscapes/iterflow';<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();
generateRows 是一个生成器,一次产生一行数据。在 .toArray() 通过链拉取值之前,没有任何东西被物化。没有中间数组。<p>结果<p>数据集:500,000 行
管道:filter(active && value > 5000) → map(score) → take(10,000)<p>原生数组 (.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>- 指标:管道前后堆使用量的差值,而不是总的进程内存
- 两个管道都从同一个生成器源开始——差值仅衡量管道分配,而不是源数据——在每次运行之间强制使用 --expose-gc 和显式的 gc() 调用
- 在测量之前丢弃一次预热运行
- 报告 5 次运行的中位数
- 原生数组运行在管道运行之前将完整的 50 万数据集物化到 data 中。该分配不包含在差值中——两种方法在相同的条件下进行测量。<p>关于该库的几点说明<p>- iter() 是 ES2015 生成器和迭代器协议的包装器——没有魔法,只是一个流畅的 API,因此调用站点看起来与数组链式操作相同
- .sum() 和 .mean() 仅被类型化为 Iterflow<number>——在非数字迭代器上调用它们是一个编译错误
- 具有一些流式统计操作 (.streamingMean(), .ewma(), .windowedMin()),用于在没有单独累加器的情况下运行聚合
- 零运行时依赖<p>https://www.npmjs.com/package/@mathscapes/iterflow
1 分•作者: backrun•5 个月前
嘿,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 Web Store:https://chromewebstore.google.com/detail/gemini-exporter-save-gemi/lgipeakgdkcgnkdljeagconfbfeolidj
→ 网站:https://backrun.co/gemini-exporter
1 分•作者: brewcrew•5 个月前
1 分•作者: johnbarron•5 个月前
1 分•作者: mmmmkay•5 个月前
5 分•作者: general_reveal•5 个月前
我觉得像 Unity 和 Unreal 这样的引擎,它们很多工作流程都侧重于用户界面,这可能不太适合那种随性创作的感觉。
1 分•作者: paulpauper•5 个月前
1 分•作者: paulpauper•5 个月前
1 分•作者: zzzeek•5 个月前
1 分•作者: piotrbednarsalt•5 个月前
1 分•作者: chmaynard•5 个月前
1 分•作者: samfierro•5 个月前
1 分•作者: eatonphil•5 个月前
1 分•作者: RaouleDuke•5 个月前
1 分•作者: kitasan•5 个月前
嘿,HN!我们发布了 OxiGDAL v0.1.0,这是一个用 100% 纯 Rust 编写的生产级地理空间数据抽象库——无需 C/C++/Fortran 工具链。
如果你曾经与 gdal-sys 链接错误、为了读取 GeoTIFF 而臃肿的 Docker 镜像,或者 GDAL 在多线程代码中的数据竞争错误作斗争,那么这个库就是为你准备的。
它涵盖的内容:
- 11 种格式驱动程序(GeoTIFF/COG、GeoJSON、GeoParquet、Zarr、FlatGeobuf、Shapefile、NetCDF、HDF5、GRIB、JPEG2000、VRT)
- 完整的 CRS 转换(纯 Rust PROJ,包含 1000 多个 EPSG 代码)
- SIMD 加速的栅格/矢量算法(AVX2、AVX-512、NEON 自动检测)
- 云原生 I/O(COG 的 HTTP 范围读取,全程异步)
- 跨平台绑定:Python (numpy/arrow-native)、Node.js、WASM、iOS、Android
- 68 个工作区 crate 中约 50 万行代码
只需 cargo add oxigdal -- 无需系统库,无需 pkg-config,无需 cmake。编译成单个静态二进制文件。开箱即用,可在 WASM 和 Lambda 中运行。
GitHub: <a href="https://github.com/cool-japan/oxigdal" rel="nofollow">https://github.com/cool-japan/oxigdal</a>
我们欢迎来自地理空间社区的反馈。很乐意回答任何问题!
1 分•作者: sestep•5 个月前
3 分•作者: ogou•5 个月前
6 分•作者: jhalderm•5 个月前