TagTutorial

用邮件合并为 Word 文档批量配图

引言

在 Word 文档中插入图片是再日常不过的操作之一。然而,如果你有过批量向 Word 中插入图片的经历,那大概不会是什么令人愉快的体验——不仅要考虑粘贴格式、文字环绕等千奇百怪的格式问题,还要应对 Word 顽疾一般的卡顿和崩溃。这些软件缺陷经常能让加图片这类本不费工夫的操作变成一种煎熬。

设想这样的工作场景:你的老板准备对三国公司进行投资,但在此之前想对它的三个子公司——魏国公司、蜀国公司和吴国公司——进行调查,看它们是否在几家主流假新闻媒体——《扭腰时报》、《花儿街日报》和蓬勃新闻——上有过负面报道。为此,你被要求在上述媒体的网站上搜索三家公司的相关报道,并将搜索结果截图,分类汇总到一份报告中。

上面的任务只涉及三家公司和三个网站,加起来也不过需要创建 3 个文档,插入 9 次图片。但如果需要调查的是 30 家公司和 30 个网站呢?逐一手工创建文档并插入图片似乎就不是明智的做法了。且不论操作繁琐和浪费时间,忙中出错的机率也会大大增加。

有没有什么更省事的方法——比如,能不能只提供图片素材和文档模板,剩下的配图工作让机器自动完成?答案是肯定的,方法就是借助 Word 内建的自动化工具——邮件合并

这个答案听起来可能让人有些摸不着头脑——发邮件和插入图片有什么关系?实际上,邮件合并是一个「名不副实」的功能。它的作用是以一个模板为基础,批量将用户提供的信息填入留空位置。之所以被称作「邮件合并」,是因为其最主要的使用场景之一就是制作群发邮件——内容相同、只有称呼等部分因收件人而异。

但邮件合并功能的潜力并不止于填写收件人;它能填写任何文本变量。另一方面,Word 文档中的图片不仅可以直接嵌入在文件中,也可以是指向外部文件(包括本地和远程)的链接。而既然链接的本质是文本,我们就可以通过插入文本的方式插入链接,进而实现插入图片。这样,邮件合并和插入图片间的桥梁就被打通了。后文就以上面设想的工作场景为例,说明如何使用邮件合并功能批量插入图片。

一、准备工作

在正式使用邮件合并前,需要先做一些准备工作。

  1. 按一定的命名规律收集资源文件。 这实际上应该是任何资料收集工作都应遵循的原则,只是对于自动化操作来说格外重要。例如,在上面的情境中,我们可以将针对魏国公司的三张截图分别命名为 1-NYT.png1-WSJ.png1-BBG.png,而将针对另外两家公司的截图各自以

使用 Calibre 的命令行工具下载新闻

Calibre 具有完善的新闻下载功能,可以从各种媒体的网站抓取最新的文章并生成电子书文件。得益于开源社区的贡献,它还内置了针对一千多个不同网站编写的配置方案(称作 recipe),并且更新非常及时。

但是,Calibre 的图形界面非常简陋且经常卡顿,使用起来体验较差。如果要使用定时下载新闻的功能,还必须保证软件一直在后台运行。另外,如果想在 Linux 服务器上运行 Calibre,一般也没有图形界面可用。

Calibre 一言难尽的图形界面
Calibre 一言难尽的图形界面

因此,使用命令行来下载新闻是更快捷、通用、且适合自动化的做法。本文将介绍用 Calibre 的命令行工具下载新闻的一般方法,然后在此基础上说明如何配置自动运行,并将下载好的文件通过不同方式传输到其他设备上阅读。

基本用法

Calibre 在命令行中的新闻下载功能是整合在其格式转换命令 ebook-convert 中的。其基本用法是:

ebook-convert "Title of news source.recipe" outputfile.epub

其中,第一个参数是 recipe 的名称。不过,Calibre 在文档中没有指出的是,在使用内置方案时,Title of news source.recipe 不是指内置方案的文件名,而是指新闻网站的全称,.recipe 不是扩展名,只是一个后缀。只有在找不到对应的内置方案时,Calibre 才认为该参数是自定义方案的绝对路径。…

如何追踪电子邮件的已读状态

尽管电子邮件的地位已经大不如前,但它仍然是工作、学术等场合下最可靠的通讯方式方式。然而,作为一种古老的协议,电子邮件不支持很多现代工具的常见特性,一个最明显的例子就是已读回执。考虑到需要用到邮件交流的往往是一些正式、重要的事项,这其实是一个很大的痛点——你可能并不关心一条随手发出的 iMessage 是否被及时看到,但一定十分在意一封字斟句酌、徘徊已久才发给老师、老板的邮件会不会被淹没在对方的收件箱中。

部分邮件服务商——例如国内的网易、QQ,国外的 Outlook 等——注意到了这一需求,在发信页面中提供了要求「已读回执」的选项。但它们所谓的已读回执功能都需要对方在打开邮件后,手动确认发送回执。且不论这种机制是否会让收件人感到冒犯,它也没有解决最根本的「鸡生蛋和蛋生鸡」问题——如果对方根本就没有打开邮件,也就更不可能给你发送回执了。

QQ 邮箱提供的已读回执选项和收件端效果

那么,有没有什么办法能不依赖特定服务商/客户端,在邮件中实现已读回执,并且做到对收件人透明呢?

注:本文意识到并承认「已读回执」功能在技术层面之外存在潜在的礼仪或伦理争议,但这超出了文章的讨论范围。本文对需求和实现方式的讨论不代表赞成或反对特定的行为,请读者自主判断这些功能的价值和用途并合理利用。)

用 GetNotify 实现邮件追踪:基本操作

GetNotify 就是这样一个邮件阅读状态追踪服务。它的原理很巧妙:当你通过 GetNotify 发送一封邮件时,它会在邮件的末尾插入一个长宽均为 1 像素的白色 png 图片链接;这张图片存储在 GetNotify 的服务器上。因此,只要 GetNotify 的服务器收到了下载这张图片的请求,就表明有人打开了你的邮件。

GetNotify 对邮件的处理方式

GetNotify 的使用方式很简单。注册账号后,在任何客户端中用该注册邮箱发信时,只要在收件人的邮箱地址后加上 .getnotify.com,GetNotify 就会对你的邮件做上述处理,并开始追踪其阅读状态。

例如,如果你想追踪发送给

[email protected]

这一地址的邮件,只需将收件人填写为:

[email protected]

免费字体获取和使用指南

导语

一个不难发现的现象是,最近几年,中文互联网上对字体的关注和认知明显比过去更深了。在各类网页、app 中,我们开始看到了更多样的字体选择;更换字体功能已经成为了国内 Android 手机的标配;一些企业开始注意到字体设计在品牌形象构建中的重要性;许多用户,即便未必了解字体排印的专门知识,也越发积极参与到有关字体的讨论中。的确,字体不仅是任何平面设计中的重要组成部分,也是表达个性、传情达意不可或缺的渠道。

但尽管有这些切实的需求,不少人对寻找和获取字体的渠道似乎并不十分了解。在我的观察中,周围很多人在有找字需求时,往往都是用百度检索一下字体名称,然后在五花八门的「字体下载站」上随便找一个链接下载。且不论这通常是违反授权的盗版行为,通过这些渠道获得的字体文件也往往是版本老旧、残缺不全的,在使用中会遇到各种各样的问题,反而违背了用字体美化设计的初衷。也有不少人因为顾忌高额的授权费和繁杂的协议文本,放弃寻找更合适的字体。这不能不说是一种遗憾。

针对这些需求和问题,本文试图给出一个较为全面的免费字体寻找方案。后文中,我将按照授权严格程度的顺序,依次介绍开源字体—免费商用字体—免费非商用字体的寻找渠道,并作出一些基于个人经验和偏好的推荐,顺带穿插一些对字体许可常见问题的说明,希望能对你找到合适的字体有所帮助。

不同严格程度的字体许可证

免责声明:本文涉及对字体/字库/字库软件等的分发、使用等著作权相关法律问题的讨论。其中很多目前在法律上并无明确规定,学理上存在争议,不同国家、甚至相同法域内也存在相互冲突的判例。因此,文章内容仅代表个人观点,仅供参考,不应被作为正式的法律意见,作者不对采纳文中建议或观点所可能产生的任何责任或后果承担责任。

1. 开源字体

1.1 中文开源字体

在今天说到开源字体,一个绝对不可能绕过的名字就是由 Adobe 和 Google 合作的「思源」系列字体。2014 年,横空出世的思源黑体凭借广泛的字符覆盖、多样的字重选择、现代的设计风格,让人们意识到原来自由和高质是可以兼得的;而去年,思源宋体的发布又填补了中文高质量开源衬线体的空白,给正文的排印增加了一个至少是不会犯错的选择,名噪一时的「biang」字彩蛋也给它带来了不少关注度。

思源黑体和思源宋体

不过,正如谷歌给思源系列起的名字「Noto」(No Tofu,消灭豆腐块)所示,思源字体开发的主要目标在于提供一个尽可能覆盖汉字圈用字需求、减少无字可用现象的解决方案。因此,尽管在设计上已经非常优秀,但思源系列并不是十全十美的。例如,不少专业从业人员就指出思源黑体在笔画处理、行高等方面存在瑕疵;而思源宋体所附带的西文是没有斜体的。当然,对于一款开源字体,我们似乎也不应过分苛求。

思源系列之外,虽然也存在一些中文开源字体,但往往在质量或字符集完整性上就较为逊色了。文泉驿系列可能是一个较为可靠的选择,但在设计上并无太多可圈可点之处。更多的一些选择可以在这个页面找到。

1.2 西文开源字体

相比于稀有的中文开源字体,西文开源字体的选择范围就大得多了。唯一的问题在于如何在茫茫网页中找到它们。我所知道的开源字体资源网站包括 Font LibraryGoogle Fonts,里面都收录了数目繁多的开源字体,并且可以按照风格、字符集等进行过滤;结合按受欢迎程度排序的功能,很容易就能找到合适且高质量的字体。此外,…

用 Apple Configurator 给 iOS 设备安装中文字体

随着 iOS 设备的性能和功能日渐强大,越来越多的人选择将其作为主力工作设备使用。然而,相比于桌面操作系统,iOS 在办公应用上的一大缺失就是无法自由安装字体。如果说系统内建的西文字体数量尚可满足需求,中文字体仅靠一个苹方撑场面的现状,显然是远远不够的。

俗话说得好,苹果关上一扇门,就会打开一扇窗;在自定义字体上,这句话同样适用。利用苹果提供的 Configuration Profile(配置描述文件)功能,我们就可以方便地控制 iOS 设备的一些隐藏功能,包括自定义字体。

此前,少数派上已经有借助 Workflow 安装字体的教程,App Store 上还有一款名为 AnyFont 的 app 专门用于满足这一需求。可惜的是,它们只能安装体积较小的西文字体,而无法正常安装 CJK 字体。1

但这个问题其实并不难解决。其实,针对描述文件的制作和安装,苹果提供了一个官方工具——Apple Configurator,并通过 Mac App Store 免费提供。借助该工具,我们就能方便地生成包含自定义字体的描述文件并安装到设备上。

更重要的是,由于 Apple Configurator 的本意是为企业和学校等机构提供一个批量部署 iOS 设备的工具,它对于批量、重复操作是非常友好的,这也就意味着能用较少的时间一次性安装好常用字体。

下面,我们以安装开源的 Source

如何不借助插件在全平台优化维基百科显示效果

维基百科对我们的重要性不言而喻,无论是在生活中还是学习中,如果要获取对某一话题的初步认识,维基百科一般都是那个最便捷且相对可靠的信息来源。

但或许是因为太过关注内容本身,即使在这个网页设计技术百花齐放的年代,维基百科的外观却与十年前没什么太大区别。如果说其页面设计上的素面朝天还可以美其名为「简约」的话,字体排印上的简陋就只能评价为「放任自流」了。特别是在阅读篇幅较长的词条时,那小而拥挤的正文字体总是让我的眼睛酸痛到怀疑人生。

维基百科简约(陋)的默认风格

正因如此,改善维基百科的阅读体验是一个「硬」需求。目前,常见的方法通常有两种。一是利用各浏览器自带的阅读模式。但是,这种方法的自定义灵活性较小,且依赖于浏览器的支持。主流的 Chrome 浏览器干脆就没有内置阅读器功能。二是利用浏览器插件,如 Stylish、Wikiwand 等。这种方法可定制性强,但加载插件需要消耗额外的资源。另外,这两种方法的共同弊端在于不具有跨平台性:配置好的阅读环境无法在不同电脑上同步,对于移动端也缺乏良好的支持。

其实,作为一个自带 geek 属性的服务,维基百科本身已经提供了强大的外观定制功能。利用这一功能,我们不仅可以在预置的几种主题间切换,而且可以自定义页面的 CSS、JavaScript,打造出最适合自己的维基百科外观。下文就介绍如何操作,并给出一些参考配置方案。

注意:维基百科的各项设置需要登录才能访问。注册过程非常简单,在此不赘。

登录后,点击页面右上角的 Preferences/参数设置 链接打开设置,然后切换到 Appearance/显示 选项卡。可以看到,维基百科共提供了五种皮肤供用户选择。然而,它们中的绝大多数都只会让本就简陋的页面变得更加复古……

听起来很芬芳的「科隆香水蓝」主题……祝你拥有愉快的一天

唯一比较符合当下设计审美的,大概只有 MinervaNeue 这款皮肤,它实际上就是维基百科移动版页面的桌面端移植。选中该选项,然后点击页面底部的 Save/保存即可应用该皮肤,其效果如下:

MinervaNeue 皮肤的效果

可以看出,界面的整洁度和可读性已经比之前高了不少。不过,这样的效果仍然不能让人完全满意。例如,字号还是过小,在电脑屏幕上看起来较为吃力;没有两端对齐,文本块的右侧边缘看起来不够整齐等。对有的用户而言,可能还希望换上自己喜欢的字体。要进一步完善效果,就要用到自定义 CSS 的功能了。

再次进入设置页面,点击 MinervaNeue 主题右侧的 Custom CSS/自定义 CSS 链接。由于我们是第一次修改该主题的样式,将会直接跳转到创建页面。

CSS 编辑界面

在代码框中输入下列内容:…

用 Tiny Tiny RSS 自建 RSS 服务

1.1 为什么要考虑自己搭建 RSS 服务

Google Reader 在 2013 年的下线似乎标志着 RSS 黄金时代的结束。在那之后,虽然陆续出现过很多替代品,但 RSS 的地位已经被无限刷新的信息流、算法推荐等新技术逐渐取代了。

不过,尽管小众,RSS 仍然是不少极客用户获取信息的首选。的确,如果对信息来源要求苛刻且善加维护,RSS 仍然是高效获取信息的不二选择。当然,为了充分发挥 RSS 的优势,一个好用的 RSS 服务也是很重要的。但是,「好」的标准又是什么呢?

在多年日常将 RSS 作为主要信息来源之一、并尝试了多种主流的 RSS 服务之后,我认为一个合格的 RSS 服务应当满足下列要求:

  1. 同步及时;
  2. 订阅源管理便捷、支持导入/导出;
  3. 设计简洁、适合阅读、可定制;
  4. 客户端支持全面;
  5. 可自定过滤规则。

对于上述需求中的前几项,目前常见的 RSS 服务各有侧重。例如,最常见的 Feedly 在界面美观程度上较为突出,而 Inoreader 则在订阅源的管理上功能更为全面等,但并不存在一个全能选手。而至于最后一项需求,即自定规则对文章进行过滤,这些主流服务就显得特别「吝啬」了,要么不提供这样的功能,要么作为收费服务额外提供。…

一只叛逆的鸭子——DuckDuckGo 简介

1993 年,《纽约客》(The New Yorker)杂志刊登了一幅漫画:一只黑狗站在电脑椅上,爪子扶着键盘。它望向站在地上、表情迷茫的一只同类,无不兴奋地说:「在互联网上,没人知道你是一条狗。」(On the Internet, nobody knows you’re a dog.)这幅漫画成了《纽约客》历史上重印最多的一幅,画中那只狗的台词也成了 IT 界广为流传的经典笑话。

「在互联网上,没人知道你是一条狗。」

然而,这句笑话或许真的要变成笑话了。

如果《纽约客》漫画中的那只狗还在上网,它大概会惊恐地发现,在今天的互联网上,别人不仅知道它是一条狗,而且知道它的名字、主人、地址、品种、血统、毛色,甚至知道它最喜欢吃什么牌的狗粮、有没有做过绝育、跟隔壁那只猫上次打架是哪天。

这就是如今网络的现状——「隐私」「匿名」这些传统上互联网的题中之义,已经越来越让人感到陌生了。各种网站、服务日渐把收集用户数据作为最重要的商业模式,用户的隐私信息在网络上无处遁形,甚至成为网站间流通的通货:一分钟前搜索的关键词,一分钟后就成了社交网站和购物网站上广告的标题。真实世界和虚拟世界之间的边界模糊了。你在网络上的任何行为,都可能成为追踪到个人的蛛丝马迹。人类花了几万年进化到衣冠楚楚的文明社会,互联网只用了几十年就把他们打回了衣不蔽体的原形。

不过,还是有一些不愿意束手就擒的人、一些不愿意随波逐流的网站。它们在瓜分用户数据的狂潮中站出来,大声疾呼隐私的重要性,坚定地承诺「我们不追踪你的信息」,让你在互联网巨头们张牙舞爪的入侵中看到一股清流。

看到这里,你脑海中大概会浮现出钢铁侠那样高大英武的形象,或者是黑客帝国中那些充满科技感、闪着绿光的操作界面。

直到你看到这个网站的图标。

DuckDuckGo 首页

初见 DuckDuckGo 的人恐怕都会第一眼被它那古怪的 logo 所吸引:一只鸭子傻乎乎地张着大嘴,挂着一副人畜无害的表情,两撮鸭毛在头顶戏谑地翘起,脖子上不合时宜地挂着一副与红色背景格格不入的绿色领结。这样一副似乎是从搞笑漫画中走出来的形象,与页面下方那句严肃的标语「The search engine that doesn’t track you(不会追踪你的搜索引擎)」形成了鲜明的对比——这只鸭子真的没有跑错片场吗?

DuckDuckGo 创立于 2008 年,创始人是毕业于麻省理工的 Gabriel Weinberg。谈到这个奇怪的网站名字,Weinberg …

根据电源连接状态自动切换默认浏览器

Safari 和 Chrome 是 macOS 平台上最主流的两个浏览器,如何在它们之间取舍也一直是热门话题。虽然两者性能、速度孰优孰劣并无定论,但 Safari 更加稳定省电、Chrome 在功能和扩展性上更优则是没有疑问的。因此,对于 MacBook 而言,用电池供电时使用 Safari 是更经济的选择,而连接电源时则可放心使用 Chrome,享受其丰富的扩展程序带来的便利。但显然,每次插拔电源后手动切换默认浏览器是十分麻烦的,如何将其自动化呢?

我们可以使用一款名为 ControlPlane 的免费工具来达成上述目的。该软件的机制非常类似于 IFTTT,即当检测到一定条件发生时,自动触发相应的操作。据此,前述需求实际上可以表述为:如果连接电源适配器,则将默认浏览器设置为 Chrome;如果拔下电源适配器,则将默认浏览器设置为 Safari。下面介绍如何利用这套机制实现文首提出的需求。

首先下载安装 ControlPlane。打开后,可以看到「通用」(General)、「情境」(Contexts)、「迹象」(Evidence Sources)、「规则」(Rules)、「动作」(Actions)、「高级」(Advanced)等选项卡。上述几个概念的逻辑关系是:当特定的「迹象」出现时,触发相应的「规则」;软件将据此判断电脑当前处于何种「情境」,从而执行与其关联的「动作」。

软件主界面

首先在「通用」(General)选项卡中,勾选「登录时启动 ControlPlane」(Start ControlPlane at login),允许其随系统自启。

然后,切换到「情境」(Contexts)选项卡。点击「+」,新建一个名为「Battery」的情境。

新建情境

接着,在「迹象」(Evidence Sources)选项卡中,勾选「连接的电源适配器」(Attached Power Adapter),允许将电源连接情况作为判断情境的标准。

允许将电源连接情况作为判断情境的标准

在「规则」(Rules)选项卡中,点击「+」>「添加『连接的电源适配器』规则…」(Add ‘Attached Power …