跳至内容

来自工作室

工作手记。
走进我们的创作。

我们在设计独立软件时学到的东西:布局引擎、默认私有工具以及想法和有用产品之间的顽固细节。

PhotoBooks 指南

PhotoBooks 裁切编辑器,用于调整照片在页面中的呈现方式

如何用照片讲述旅行故事

为旅行照片书安排开场、地点氛围、细节和结尾,让它成为一个故事,而不只是景点合集。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 封面编辑器,显示横跨封面正面与书脊的标题

怎样才算好的照片书封面?

选择封面照片、清晰易读的标题和简洁的视觉层次,让照片书无论以原尺寸还是缩略图显示,都能清楚传达主题。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 封面编辑器,显示横跨封面正面与书脊的标题

为照片书增添意义的说明文字

撰写照片说明,保留姓名、日期和小故事,而不是复述照片中已经看得见的内容。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 裁切编辑器,用于调整照片在页面中的呈现方式

竖幅与横幅照片:如何搭配

搭配竖幅与横幅照片,避免裁掉人脸、勉强裁切,或让每页都一个样。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 的 PDF 导出控件,用于导出完成的照片书

准备供印刷的照片书 PDF

将照片书 PDF 送印前,检查页面尺寸、出血、页边距、图像细节和印刷方要求。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 封面编辑器,显示横跨封面正面与书脊的标题

制作一本作为礼物的照片书

围绕收礼人策划一本有个人意义的照片书,悄悄收集照片,并为印刷样张留出时间。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 编辑工具,照片排列在照片书的跨页中

为什么照片应留在你的设备上

了解在设备上制作照片书的隐私边界,包括 iCloud、导出的 PDF 和第三方印刷。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 照片选择界面,显示一个准备制作成照片书的相簿

值得收入照片书的小时刻

在家庭照片书的重要事件之外,选择能保留日常习惯、熟悉场所和人际关系的生活照片。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 格式控件,用于选择照片书的尺寸

一页应该放多少张照片?

根据主题、印刷尺寸和页面节奏决定照片密度,而不是尽量往一本书里塞进最多的图片。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 裁切编辑器,用于调整照片在页面中的呈现方式

如何处理印刷照片书中的低分辨率照片

根据像素尺寸估算印刷细节,缩小照片的排版尺寸,保留有意义的照片,同时不承诺恢复已经丢失的细节。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 照片选择界面,显示一个准备制作成照片书的相簿

制作宝宝第一年的照片书

围绕成长、家庭关系和日常生活整理宝宝第一年的照片书,不必把每个成长里程碑都变成必须按时完成的任务。

  • PhotoBooks
  • 实用指南
↗
PhotoBooks 的 PDF 导出控件,用于导出完成的照片书

印刷照片书前的最后检查清单

批准照片书送印前,分别检查故事、裁切、拼写、PDF 尺寸和印刷方要求。

  • PhotoBooks
  • 实用指南
↗

MailVault 指南

MailVault 演示收件箱,按发件人分组

邮件归档与邮件备份:有什么区别?

区分可供查阅的邮件归档与用于恢复的备份,并了解为什么同步收件箱不能替代其中任何一个。

  • MailVault
  • 实用指南
↗
MailVault 演示收件箱,按发件人分组

什么是 EML 文件,为什么它很重要?

了解 EML 文件包含什么、它与截图或 PDF 有何不同,以及开放格式的邮件文件为什么有助于保存可迁移的归档。

  • MailVault
  • 实用指南
↗
MailVault 演示收件箱,按发件人分组

实用的邮件归档文件夹结构

按账户和日期整理邮件归档备份,记录覆盖范围,并保留应用管理的邮件结构。

  • MailVault
  • 实用指南
↗
MailVault 演示归档中的搜索结果,带有发件人和标签筛选条件

查找本地邮件归档中的旧附件

先缩小邮件搜索范围来查找已归档的附件,再核实文件在本地可用,而不只是邮件中的链接。

  • MailVault
  • 实用指南
↗
MailVault 演示收件箱,按发件人分组

如何把邮件归档备份到外置硬盘

将稳定的邮件归档复制到独立硬盘,核实有代表性的邮件,并测试恢复后再依赖这份备份。

  • MailVault
  • 实用指南
↗
MailVault 演示收件箱,按发件人分组

关闭旧邮箱账户前应该保存什么

清点文件夹,保存完整邮件和附件,更新依赖该账户的登录信息,并在关闭邮箱账户前测试离线访问。

  • MailVault
  • 实用指南
↗
MailVault 演示归档中的搜索结果,带有发件人和标签筛选条件

如何检查邮件归档是否完整

核实归档范围、文件夹覆盖情况、邮件正文和附件,再测试独立恢复,然后才删除服务器邮件。

  • MailVault
  • 实用指南
↗
MailVault 演示归档中的搜索结果,带有发件人和标签筛选条件

让收据和订单确认邮件容易查找

根据实用的搜索线索整理购买往来邮件,保留完整邮件,并保存仅通过链接提供的文档。

  • MailVault
  • 实用指南
↗
MailVault 演示收件箱,按发件人分组

如何整理多个账户的邮件历史

整理多个邮件归档时,保留账户身份,记录日期覆盖范围,并明确个人与工作资料的访问权限。

  • MailVault
  • 实用指南
↗
MailVault 演示归档中的搜索结果,带有发件人和标签筛选条件

更换电脑时,邮件归档会怎样?

迁移邮件归档时一并保留文件夹结构,核实完成前保留旧副本,并区分邮件文件与账户凭据。

  • MailVault
  • 实用指南
↗
MailVault 演示收件箱,按发件人分组

建立已归档邮件的定期备份习惯

根据你能承受丢失的归档邮件量,选择备份频率、独立存储位置和恢复测试方式。

  • MailVault
  • 实用指南
↗

MeatPad 指南

MeatPad 正在编辑带语法高亮的 Markdown 文档

给只想写作的人看的 Markdown

从标题、段落、列表和链接开始,让 Markdown 保持简单,使文章作为纯文本也能读懂。

  • MeatPad
  • 实用指南
↗
MeatPad 笔记工作区,显示笔记列表与内容搜索

把零散笔记整理成实用的项目简报

将一堆想法整理成项目简报,明确问题、受众、范围、待解问题和可观察的完成标准。

  • MeatPad
  • 实用指南
↗
MeatPad 项目编辑器,显示文件树、标签页和带语法高亮的 Swift 代码

笔记与小项目的简单文件夹结构

用少量文件夹存放待整理笔记、进行中的项目、参考资料和已完成工作,避免建立自己无法维护的归档系统。

  • MeatPad
  • 实用指南
↗
MeatPad 正在编辑带语法高亮的 Markdown 文档

博客草稿的实用 Markdown 工作流程

把文章简报、Markdown 草稿、来源链接和图片放在一起,并在发布前检查渲染结果。

  • MeatPad
  • 实用指南
↗
MeatPad 项目编辑器,显示文件树、标签页和带语法高亮的 Swift 代码

让代码片段在半年后仍然有用

为代码片段注明用途、环境、示例和验证日期,让保存的片段依然容易理解,并能安全复用。

  • MeatPad
  • 实用指南
↗
MeatPad 笔记工作区,显示笔记列表与内容搜索

让会议笔记带来明确的下一步

记录决定、行动、负责人和待解问题,无须把会议笔记写成逐字稿。

  • MeatPad
  • 实用指南
↗
MeatPad 笔记工作区,显示笔记列表与内容搜索

什么时候一个纯文本文件就够了

简单写作和笔记可以使用纯文本,同时识别协作、结构或专业工具需求何时需要不同格式。

  • MeatPad
  • 实用指南
↗
MeatPad 项目编辑器,显示文件树、标签页和带语法高亮的 Swift 代码

在应用之间迁移笔记而不丢失结构

清点笔记格式,导出有代表性的样本,并在迁移整个笔记合集前检查链接、图片和元数据。

  • MeatPad
  • 实用指南
↗
MeatPad 正在编辑带语法高亮的 Markdown 文档

用于日常项目的 Markdown 检查清单

写出具体的 Markdown 任务,将行动与想法分开,并让清单保持简短,方便在日常项目工作中回顾。

  • MeatPad
  • 实用指南
↗
MeatPad 笔记工作区,显示笔记列表与内容搜索

为笔记文件命名,方便日后查找

选择包含实用主题、必要日期的文件名,并采用稳定的命名规则,便于搜索且保留链接有效性。

  • MeatPad
  • 实用指南
↗
MeatPad 正在编辑带语法高亮的 Markdown 文档

使用 Markdown 表格,而不让笔记难以编辑

用 Markdown 表格进行简短比较,保持单元格简洁;信息超出这种格式的承载能力时,改用列表或电子表格。

  • MeatPad
  • 实用指南
↗
MeatPad 笔记工作区,显示笔记列表与内容搜索

每周回顾笔记、想法和未完成任务

回顾近期笔记,选出下一步行动,归档已完成工作,不必把每周检查变成一次全面重整。

  • MeatPad
  • 实用指南
↗

50,000 封邮件,14 毫秒:MailVault 背后的搜索索引

MailVault 在 50,000 封邮件的邮箱上,每个查询的搜索用时 7 到 14 毫秒。测量数据、用来复现它们的命令、背后朴素的 SQL 索引,以及我们发布后又发现的 30 倍性能下降。

  • 搜索
  • SQLite
  • MailVault
↗

两个 Mac 应用,一台 Mac mini:589 项测试全程入镜

一个下午,一台 Mac mini,两段录屏:MeatPad 的 50 个 XCUITest 用例,405.032 秒;MailVault 跨 81 个 spec 文件的 539 个端到端用例,16 分钟 3 秒。为什么一个用例在一边要花 8.3 秒,在另一边只要 1.8 秒。

  • 测试
  • XCUITest
  • WebdriverIO
↗

八次点击 98 秒:测试 SwiftUI 应用与测试 Tauri 应用

一台 Mac mini 跑我们两款桌面应用的全部测试。MailVault 拿到了 1,604 个测试用例和 53 个端到端规格。MeatPad 有了它的第一批 UI 测试,代价是每次点击十二秒。这里是测量数据,以及造成这一差距的那个结构性原因。

  • 测试
  • SwiftUI
  • Tauri
↗

63 MB:一个不是浏览器的 Mac 代码编辑器要花多少内存

MeatPad 开着十九个小时占 63 MB,载入一个 2,721 个文件的项目后占 108 MB。这里有测量结果、可以自己重跑的命令、数字背后的四个设计决定,以及唯一会让一切崩掉的文件大小。

  • 性能
  • macOS
  • MeatPad
↗

一台 Mac mini 替你点开邮件客户端,免得你事后吃苦头才发现问题

MailVault 的每一个功能,只有在一台机器打开真实应用、点击真实按钮、并从实际屏幕上读取结果之后,才会发布。端到端测试套件是如何运作的,以及它为何运行在一台 Mac mini 上,而不是我们平时工作用的那台机器上。

  • 测试
  • Tauri
  • MailVault
↗

Gmail 限量配给你自己的邮件:每日 2,500 MB 下载上限

Google 将 IMAP 下载限制为每位用户每日 2,500 MB,超出后账户最长可能被锁定 24 小时。这对任何要归档大型邮箱的人意味着什么——以及当服务器喊停时,备份工具应该如何应对。

  • Gmail
  • IMAP
  • MailVault
↗

网络解决了自动砌筑问题。为什么没有写真集?

多年来,浏览器一直将不均匀的内容放入平衡的网格中。印刷相册仍然要求人们将每张照片拖到一个盒子里。缺失的不是布局,而是判断力。

  • 自动布局
  • 计算设计
  • PhotoBooks
↗