用 VIM 和 markdown 格式写学术论文

概要 相对于其它选择来说,markdown 格式方便人更专注于文章内容的写作。然而它用于写短文绰绰有余,论文排版则需要许多额外的功能。本文介绍了我使用 markdown 写论文的折腾过程,基本上扫清了论文写作中的常见需求:一键搜索并插入引用文献、文档内交叉引用、公式图表编号、LaTeX 输出与模板套用、Word 文档输出、一键后台编译多份文档、同义词查询、拼写语法检查等。 本文虽然主体已经完工,但可能不定期修改,以方便读者理解。如果觉得本文有用,欢迎收藏,并在写论文时回来看看有没有更新。 Update on Apr 29 2020: 增加了对 VIM 之外其它编辑器的一些推荐。 如有难以理解的部分,欢迎留言或者对此文件发 Pull Request。 下面是几个使用示例截屏: 一键搜索引用文献 拼写自动更正 同义词检索替换 编译预览结果 引言 去年这个时候我颇花了一点时间打造了一套 VIM 上使用 markdown 写论文的系统。现在我准备投靠 Emacs 和 org-mode,这套系统以后怕是不会再用了。在这里记下来我的配置,或许对于一些人会有用——毕竟 VIM 用户还是比 Emacs 用户多多了。而且这些的许多配置使用其它文本编辑器的人也可以借用。 为什么使用 markdown 写论文? 使用 markdown 的优点 markdown 是一种只保存必要文档结构,不保存格式和样式信息的文档格式,我们可以用同样一份 md 文档很方便地生成不同格式的最终文档。它语法简明,易读易写,作为纯文本文件,方便使用 git 进行版本控制。相较之下,其它的几种流行格式各有各的缺点 HTML 虽然可以将样式定义都放在 CSS 里,但是 HTML 本身手写起来麻烦且不易读。 […]

使用 VLC 举办在线观影活动

上一篇 讲了使用 SyncPlay 和朋友一起看电影的办法。这篇讲一讲使用 VLC 串流播放电影的办法。 大体来说,这种办法类似于以前一度流行的网络电台。一个主持人负责开设视频流服务器,其它人连上去即可收看。主持人这边的配置略需要折腾,但参与者那边是比较轻松的,只要往播放器里填一个地址就行。用这种方法和朋友分享电影也有一些缺点。除去主持人这边设置有些门槛(本文就意在消除这种门槛)外,对网络条件要求颇高,要是有几十个朋友一起看的话,恐怕谁家的网络都支撑不住,只适合三五好友一起观影。虽然说播放进度是同步的,但是主持人按播放和暂停之后,都要等小一会儿所有人的屏幕才会有反应,这种延迟也是其它方法没有的。 VLC 是一款很流行的开源媒体播放器。本来叫作 VideoLAN Client,从名字可以看出 VideoLAN 这个计划本来是为了提供一套在网上串流分享视频的工具,播放器只是它的 client 端。后来它的 client 端使用的人越来越多,其 server 端的功能也被整合到播放器里,播放器遂改名为 VLC Player。 整合之后,VLC 的在线串流功能和转码功能是做在一起的。在线串流不过是转码的一个特殊应用——区别仅仅是输出。转码的输出是文件,而串流的输出是一个网络视频流。这项功能的使用并不复杂,界面也还算简单,唯一不好的地方是,虽说顺的时候很顺,一路鼠标点点点就可以过去,可是有时候也会掉坑,想从坑里爬出来的话就需要点技术知识,自带的帮助实在不算友好。 所以写这篇短文介绍一下基本操作和常见的坑。 基本操作 基本操作网上图文教程很多,就不写太细了。 启动 VLC 之后,Media 菜单选择 Stream,弹出 Open Media 对话框,按 Add 按钮添加需要播放的视频文件。如果电影文件不止一个,可以依次添加。然后按 Stream 按钮开始串流设置向导。 点 Next,出现协议选择对话框。一般选择 HTTP 协议,然后点击 add 按钮。端口和路径可以使用默认值,也可以自行修改。 下一步是转码设置。可以选择转码或者不转码。这是最容易掉坑的地方,下文详细讨论。一般来说,如果收看的人网络条件都不错,不想占用 CPU 的话就不要转码。 最后确认所有参数并点击 stream 按钮,VLC 会开始播放视频,但是窗口是黑色的。此时可以在另一个 VLC 或者其它播放器中打开 http://IP地址:端口号 来访问以验证服务是否启动成功。将此地址分享给朋友之后,朋友就可以在视频播放器上使用此地址观看视频 […]

使用 SyncPlay 和异地朋友一起看电影

近日疫情致令本州下了居家令。不过在居家令之前,本也不敢出门了。线下社交完全停滞,就和朋友们约着在线上一起做些事情。比如线上的 movie night。今晚成功举行了第一次,大家聊得很开心。这里是一份实操指南。和我以前写的指南风格不同,为了将来邀请不那么懂技术的朋友一起看电影,会写得很详细。 在开始正文之前,先列举一下各种在线一起看电影的方法。大致来说,需要两种工具。一种用来同步所有人的播放进度条,方便有人去喝水上厕所时大家聊天等待。另一种用于语音聊天。后者没什么可说的,前者才是难点,可惜并没有什么可以通吃所有视频的方案。 对于 Netflix、Youtube、Amazon Prime 乃至优酷、爱奇艺、B 站等国内视频网站,有许多浏览器插件可以用于同步播放进度。 对于本地文件,有两种方案 一种是我们今天晚上所采用的,每个人在各自电脑上播放视频,使用软件同步播放进度。这是今天的主题 一种是由一个人设置 video streaming server,其它人连上去观看。以前常用 Winamp、foobar2000 来开设或收听 ShoutCast 网络电台的人对此一定不会陌生。就是在网络电台中播放视频罢了。如何使用 VLC 来开设「网络电视台」我会另文详述。Plex 和 Kodi 也可以用来这么干,但是这些 Media Center PC 的解决方案未免太重型了。 还有的观影 app 或者服务本身支持多人一起在线观看电影。有些已经死了,现在有一个叫 微光 的 app 还活着。倒是「虚拟电影院」类的 VR 软件颇为不少,有 VR 头显的人可以试试。 有一篇不错的 英文文章 总结了各种工具。其中对于中文互联网常见工具欠奉。比如说,有一个叫 Coplay 的 Firefox/Chrome 插件支持常见的国内视频网站。 好了,开始正题。SyncPlay 是一个跨平台的用于同步各自电脑上视频播放进度的开源软件。支持 Windows Mac Linux *BSD。 使用 SyncPlay 来一起看电影的话,需要如下条件。如果不能满足的话,或应考虑换别的方法一起看电影 […]

告别删文:在哪里写博客?

本文意在比较几种值得推荐的热门博客方案。包括自建 WordPress 博客站、GitHub 静态博客、Blogger 和 WordPress.com 等。主要面对还在几种技术方案之间进行犹豫的人,已经搭好博客的人也可以在考虑备份博客站时用以参考。因为每种方案在网上都有很多详尽的教程,本文不对具体搭建过程做详细的逐步解说。但对于通常教程中未提及的部分,以 Tips 的方式补充说明。只看结论的话拖到最末即可。 为照顾没有技术基础的读者,本文使用脚注对一些词语做了注解,可点击相应链接跳转脚注和跳回原文。如果您觉得本文尚有未尽或难懂之处,欢迎在评论区留言,在 GitHub 上提 Issue,或者对这个文件发 PR。 感谢 atreides 对本文的批评和贡献。 CHANGELOG: Update on April 8th 2020: 增加了「广告收入」评价,补充了托管型 VPS Update on March 8th 2020: 增加了 netlify, GAE 和「长期可持续性」评价 Update on March 7th 2020: 增加了 docker 部署 Update on March 5th 2020: 接受了 atreides 的修改意见,增加了不同评价标准的横向比较评价,增加大量脚注和 Tips,重写了自建站点和静态博客两章 自主博客 在这系列文章的开篇中,我提到,要想保证自己对于自己产出的文字有绝对的控制权,一个自主博客1站点是最可靠的文字存档所在地。先定义一下这里我们所说的自主博客: 自主博客 所谓自主博客,是指博客的作者对于一切内容和内容的呈现形式和传播方式拥有最终决定权的博客。 […]

预防封号:备用联系方式的选择

Update on Aug 06 2020: 写此文时正值大批朋友微信号被封而失联,谈的还主要是删号的应对。那时也没有想到有一天我们会讨论「微信还能不能用下去」的问题。想看微信等价物推荐的朋友,可跳过「注册马甲」一节,甚至直接跳到「聊天软件」一节也无不可。 Updated on Aug 01 2020: 添加了 keybase 被 Zoom 收购的新闻,未撤回对 keybase 的推荐。 继续昨天的话题,今天开始掰开细讲讲昨天说的各方面。先讲最重要的好了:如何应对杀档? 及时备份资料 这条说起来容易做起来难。因为大部分人并不懂技术。虽然现在 GitHub 上几乎什么网站的备份代码都可以找得到,可是对于没有技术的同学还是未免太难。所以,平时没事结交两个技术宅朋友吧! 但选择一些备用的联系方式,则并不需要懂什么技术。在登不上原帐号的时候,使用备份联系方式和朋友保持联络,也是相当靠谱的。他们有种就把全站用户都杀掉嘛!我们换个地方,接着聊! 备用联系方式的选择 注册马甲 如果能够预知自己发的某些内容会有风险的话,提前养一个小号是一个好主意。可以让自己的马甲专门用于发危险内容,这样主号被封的概率就要小得多,也就不用头大资料备份的事情。大不了马甲被封掉之后再注册一个就是。 注册马甲的注意事项: 不要使用和主号同样的手机号、邮箱进行注册。否则会一封全封。 如果有条件使用境外手机号注册,优先使用境外手机号注册。由于种种原因,目前来看,境外手机号注册的微信号被封之后大概率仍然可以正常使用,只是发出的东西大陆手机号注册的朋友看不见。而大陆手机号注册的帐号被封之后是完全无法使用的。当然,境外手机号注册的帐号影响力大到一定程度也会被彻底杀档,只是绝大部分人够不到那条线。不是所有平台都像微信一样中外有别,但一般来说用境外手机号除了功能受点限制,总体是利大于弊的。 有很多买到外国手机号的方法,其中不乏免费服务。如果信不过那些小公司的话,可以购买一个 Skype 外国号码,就是略伤荷包。直接在淘宝买一个支持漫游到中国的外国 SIM 卡也是可以的。这些破财的办法供不会科学上网的朋友使用。 比较经典的一个套路是先去小网站注册一个免费的美国号码,再用它注册 Google Voice,最后用 Google Voice 号码注册微信。平时注意时不时登录一下自己的 Google Voice 帐户,免得号码被 Google 收回,被收回的话自己的微信号也就不安全了。 境外手机号注册的微信使用微信支付不方便。在网上可以搜到破除限制的方法,但是绑定银行卡之后也就把自己的主号小号连了在一起一损俱损,还是放弃吧。 完全没有任何使用记录的小号被封杀的可能性要高于长期使用的微信号。所以,有事没事养一养号,发发消息,点点赞,关注个公众号什么的。 注册完之后及时添加自己朋友。最好是在聊天中亲自发送名片,以防别人冒充自己。也可以在朋友圈中发送小号的二维码。这样做会损失一点匿名性,需要匿名的朋友就不要用了。 当然,这并不是根本性的解决办法,只是对封号后的损失做了一个隔离。我更推荐更彻底的方案:一劳永逸地结束这种躲迷藏,请往下看。 境外社交网站 之所以把这个放在前面来说,是因为想把自己朋友圈整个搬过去以继续原来的讨论的话,这是比较容易的。恐怕很多未雨绸缪的朋友已经注册了那些著名的「不存在」的网站,比如说 Facebook 什么的。 个人来说我对 […]

为自己,为别人,准备一条路

本文会不定期更新,以反映当前推荐。最近更新:2020年3月7日 我很想给这篇文章起一个更符合它本意的标题,却因为担心被过滤而放弃。写这篇文章的时候,也在绞尽脑汁绕开各种形形色色的不可说的词汇——这个列表现在是越来越长了。这种荒诞一个月来每个人都感同身受。任何一篇看上去有意思的文章,都要抓紧时间看,因为下次点开的时候很可能只能看见一个红底感叹号。 无庸讳言,这次国难的严重后果与信息的封锁不无关系。我们见证了传统媒体在这次事件中的集体失声——老实说,这并不令人奇怪,由于种种原因,他们本来就在缓慢走向死亡。自媒体业已成为大众获取最新信息的首要通道——而我们却见证了新的中国速度:文章被撤的速度。我想,这或许应该成为一个无关政见的共识:保证每一个真实的声音都可以被听到,对于避免这样的灾难至关重要。 互联网刚流行的时候,人们说:在网上没有人知道你是一条狗。现在我们可以说:你永远不知道那头看你的文章不爽要拿掉的是不是一条狗。如今形势有如“南蛮入侵”,反贼要挨一刀,忠臣也要挨一刀,会不会掉血,全凭运气。无论是否拥护建制,都应该承认,为了自己,也为了所有人,我们需要一条通畅交换信息的道路。 然而,尽管“南蛮入侵”已经无法让任何人视而不见,我见到的绝大多数人却仍然只依靠两微一条获取信息。甚至于极其重要的信息,如警讯或者呼救,也都以两微截图的方式进行流传。在中国,移动互联网极其彻底地改变了所有人的信息获取方式。而以两微一条为代表的中心化互联网服务,正是信息封锁的重灾区。讽刺的是,正是在这样的平台上,以截图形式流传的信息反而成为了谣言的温床。 很多人又一次喊出“逃离XX”的口号,而私以为大部分人并不能做到。社交网络服务天然具有集聚性,我们总是使用我们的朋友所使用的服务。切换到新的平台不仅需要克服自身的懒惰,还需要说服自己的朋友,这太难了。 然而,我们总还是可以做点什么。从今天开始,为自己准备一些 Plan B,让自己再次被迫噤声的时候可以发出自己的声音,让敲钟人敲响的钟声可以被更多人听到,这些并不那么困难。虽然还是需要少许时间来注册一些服务——自由永远是有代价的。 谨在此呼吁每一个为今天的局面感到愤怒的人花一点时间做做下面的事情。当自己辛辛苦苦写了几小时的文章被删掉的时候,当自己看到很好的文章却转眼消失的时候,当自己遍寻真相而不得的时候,花一点时间去行动。每个人都这样做的话,情况就会不一样。 不必一次做到最好,挑选每一项中自己自己最容易做到的立刻去做,并不花费多少时间。世界就是在一点一分的努力中变好的。 一、保证自己有至少一个科学上网的梯子,这是下面几乎所有措施的前提 二、保证有至少一个备用联系方式,以防自己被删号后联系不到朋友: Facebook、Twitter、Whatsapp、Telegram、Signal、Keybase、IRC 甚至电子邮件都可以 电子邮件推荐使用大陆以外的服务商。有精力的话可以熟悉一下 PGP 或者 S/MIME 邮件加密。 就人气来说前三个用的人更多一些,但大公司并不那么值得信任。 如果注重安全和保密,推荐 Signal 和 Keybase,尤其推荐后者。 Telegram 的功能较多,用户群体现在也不少,安全性凑合,是个比较中庸的选择。 三、保证有至少一个备用的公开信息发布渠道 独立博客、Matters、GitHub、Facebook、Twitter 都可以 我把独立博客1放在首位,因为自己控制一切才能保证不会被删除。这里我所说的独立,是指自己拥有域名,拥有完全的掌握权。为此可以选择自建服务器,也可以使用 GitHub 搭建博客。无论使用 WordPress 还是 GitHub,相应教程网上都有很多 如果觉得独立博客搭起来太麻烦,也可以使用博客托管商,但不要使用任何大陆博客托管商——覆巢之下安有完卵 境外著名博客托管商基本都墙掉了,所以也不大推荐。目前 wordpress.com 的 IP 疑似已经解封但何时再次封禁尚不确定。 同样,不要使用任何国内域名注册商的域名注册服务 服务器在境外的小型博客托管商如 Bitcron 等因为流量较小大概一段时间内不会被墙,也可以考虑 GitHub 被墙的可能性暂时是比较小的,不架网站而只使用普通的 md 页面展示甚至于用 issue、gist 来发布信息也是不少人的选择 其它三个选择现在都已经被墙,国内的朋友比较难读到。其中 Matters 拥有号称永不删除的特性,如果对“文章永不磨灭”有强迫症的话可以考虑 […]

GPG SKS 同步网络被投毒事件及其影响

2019年6月,有不知名攻击者对 GPG SKS 密钥同步服务器投毒,详情见 SKS 网络和 GPG 的核心维护者 rjhansen的解释。 根据 rjhansen 的说法,投毒已成既成事实,该隐患短期内无法从SKS或OpenPGP协议中移除。 可能产生的严重后果有许多,比如说,如果有人再次对各大 Linux 发行版包管理器的 GPG 证书投毒,将导致受影响的 Linux 系统无法执行任何包更新。 因为关于这个重大事件的中文资料几乎没有,特此综合英文资料做一综合评述。 熟悉 GPG 的朋友从 rjhansen 文中已经可以明白前因后果。在开始讨论之前,先对不熟悉此事件的读者做一下科普。 什么是 GPG?为什么 GPG 证书服务器被破坏影响很大? GPG 是 GNU 开源版本的 PGP,是一个加密软件。可以用于加密、签署和验证身份。在开源软件世界中广为采用,尤其是 GNU 生态圈内的各大 Linux 发行版和软件的包管理器都广泛使用 GPG 对重要文件进行签名,以防用户下载到冒名恶意软件。 因此,如果 GPG 不能正常工作,不能正常从其证书服务器拉取证书,可能导致一系列依赖 GPG 的软件出现故障,比如说无法正常升级软件包。 什么是 SKS 公钥服务器同步网络? GPG 与 SSL 证书系统不同,它不依赖一个权威的第三方来为每一个证书提供背书。相反,每个用户应该自行选择信任哪些证书。那么,如何解决无法见面验证时的 TOFU (trust on […]

关于文本编辑器的一点想法

在强迫自己用VIM写了三篇 paper 之后,我觉得我的 VIM 终于可以出师了。现在开始了 Emacs 的折腾之路。 这其间有几点感触 掌握新的编辑器的最佳方法是逼自己用它完成一个大项目。每天每一步都去想:如何能让操作更方便一些? VIM 和 Emacs 虽然说总被奉为神器,但确实已经开始显露疲态——负的历史包袱太重。就特殊用途来说,自然和大型 IDE 难以比肩,现在连 VSC 这样的新兴编辑器也要追不上了。 然而它们的魅力在哪里?在于——当你只是为了某个小任务想扩展一点功能的时候,用 VIM/Emacs 可以在极短时间内完成——而用 VSC 这样的编辑器,可能就必须要开发新的插件了。TypeScript 什么的门槛再低,也没有一行 VIM 宏来得快。 但是当使用者希望有像 IDE 一样的复杂支持时,VIM/Emacs 毕竟还是小众工具,开发者群体和 VSC 这样火爆的当代编辑器自然有些逊色。大部分插件都属于个人作品,加之UNIX哲学的影响,往往需要组合使用不同插件才能完成某个复杂工作环境的搭建——当然这也是折腾开源软件系统的乐趣之一。可是,对于追求稳定性的人来说,开源软件的频繁更新和复杂的依赖关系往往导致上手之后层出不穷的 bug 。 所以,VIM/Emcas 在当今的意义在哪里呢? VIM 的文本编辑操作经过历史的检验,恐怕在脑机接口出现之前,都会是效率最高的操作方式。现在的大型IDE一般也提供了 VIM 模式的支持,甚至于对 VIM 宏和 ex mode 的支持。一味坚持原教旨 VIM 而拒绝这些先进工具显然是不明智的。 而 Emacs 恐怕主要的用户群体将一直会是有着造轮子爱好的人。只打算装装插件开箱即用的人,不一定适合使用 Emacs。不过要是用一个软件解决从上网、电邮、聊天到煮咖啡的所有需求,大概 Emacs 生态仍然是目前唯一的选择。 不过呢,所有的东西都自带一个文本编辑器。Word 里有一个,WordPress 里有一个,所有的 […]

在美国用照片自制明信片

Update 2020: 邮资一节改用 USPS 2020 年的邮资标准 现在是一个数字化的时候,实体的东西越来越少见,也被很多人当作仅仅是一种情怀。虽则如此,收到定制的明信片,在这个所有东西都被商业化社会所批量复制的年代,还是会让人感到独特。 本文将概述以下几个方面 如何在美国邮寄明信片 如何定制明信片 如何定制邮票 阅读本文之后,你将知道在美国邮寄明信片的所有知识,从如何最省钱,到如何制作一张从图案到邮票全定制的独特明信片。 如何在美国邮寄明信片 尺寸 明信片,即 Postcard,按美国邮政 (USPS) 的定义,是任何符合下述尺寸标准的卡片 Rectangular At least 3-1/2 inches high x 5 inches long x 0.007 inch thick No more than 4-1/4 inches high x 6 inches long x 0.016 inches thick 定义来源 https://pe.usps.com/businessmail101?ViewName=Cards 只需要写清地址,付清邮资,就可以寄出。然而,实际上,这个尺寸对于小批量定制明信片的人来说,几乎没有任何参考价值。明信片与平信邮资不同,但是,你很难买到明信片邮资标准的邮票!在定制邮票章节我们会详细讨论这一点。实际上绝大部分人都是贴上平信邮资的邮票寄明信片的。那么此时明信片的尺寸不受上述限制,而受USPS平信尺寸限制,如下: Rectangular At least 3-1/2 inches high […]

UPS 电源选购

UPS,Uninterruptible Power Supply,不间断电源。用于给没有电池的台式机、服务器等提供备用电力。当停电时可以提供几分钟的电供关机存盘。 现在 SSD 越来越常用,意外断电最坏情况下可能会全盘数据丢失。一个 UPS 还是有必要的。关于 UPS 的选购此方面网上中文材料甚少。 选购时需要考虑的主要指标有三个 输出,单位是伏安而不是瓦 之所以不用瓦是因为一般此数需要大于实际能负载的电器瓦数。涉及到逆变器的效率、虚功功率,功率因数等问题。厂商推荐将伏安除以1.6来估计最大负载。 大部分UPS在超负载的时候,即使没有当前没有停电也会报警,严重的甚至会拒绝供电。 电池容量 厂商基本都不标。只标多大功率的负载下有多长续航时间。 技术形式 离线式(Standby)在断电后会有5到20毫秒的切换时间。对于一般的电感变压器来说无所谓了,用电端是察觉不到的。此类 UPS 在停电后切换到电池供电是由机械开关完成的。便宜货都是这种,大厂不给这种类型的出高负载的型号 主动在线式(Line Interactive)稍好一点。有多种技术形式,优点是自带稳压,轻度电压不稳时可以修正电压而不需要损耗电池。Standby 则只要电压不稳就要用电池供电。 在线式(On Line)就要贵很多了,不论断不断电,输出都从逆变器走,自带稳压。有多种技术形式。但是一毫秒都不容许掉电的应用场合只能用这种。因为任何时候都从逆变器走,所以也费电。