Featured

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

本文会不定期更新,以反映当前推荐。最近更新: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 拥有号称永不删除的特性,如果对“文章永不磨灭”有强迫症的话可以考虑
  • 四、保留至少一个备用信息接受渠道
    熟练使用 Google 搜索信息
    使用一个 RSS 阅读器订阅自己喜欢的博客
    虽然传统严肃媒体正在死亡,但还是应该选择几个自己信得过的传统媒体,记住他们的名字和网站。或者使用新闻聚合服务进行订阅
    维护自己的境外社交网络帐号以应不时之需

如果读者不仅有对抗 censorship 的需求,还有匿名的需求(谁也不想去讲“不能!不明白!”是吧),那么在发布和传播这些有匿名需求的信息时还需要注意以下事项

  • 不要使用任何实名制服务
    包括所有大陆互联网服务
  • 隔离常用帐号和备用帐号,使人不能发现关联
  • 学习和使用加密技术

这篇文章旨在呼吁大家立刻从可以做到的事情开始行动,故不作深入讨论。对于互联网时代的个人安全防护,将另文详细讨论。

系列文章

为自己,为别人,准备一条路
预防封号:备用联系方式的选择
告别删文:在哪里写博客?


  1. 为避免与通常说的独立博客的定义相混淆,我在后续文章中将此概念名之为自主博客 
Featured

欢迎访问我的新博客

本站还在持续施工中。本文也会不断更新。

原来的博客虽然是四站同步,现在要么网站倒了了,要么墙了,要么没人看了,要么难以访问。开新博客的计划也在越来越没人写博客的大背景下一拖再拖,而到如今。

然而有几件事促使我终结拖延,重新开站。一是 atreides 所说的“不写空疏的东西,但有所可言时便写出来。信息污染的一个原因就是愚蠢的人说太多,睿智的人说太少。”确实,在这个互联网正在日渐死亡的年代(我知道一定有人对此感到奇怪,我自己关于此的文章尚未写成。有兴趣的读者可阅读霍炬的大作 互联网完蛋了,已经),仍然信奉开放自由互联网的人,倘连这点麻烦也不愿意去做的话,互联网只会凉得更快。从某种角度说,这是我们对互联网社区尽的一点微小的义务。

博士毕业于九十年代的导师那天又一次劝我们建个人网站:”If you don’t have a website, you don’t exist!” 在这个互联网正在崩坏的年代,这句话听起来太有”古道”了。虽则在欧美学术界这个信奉”古道”的圈子,这句话还是相当有效的。

另外也要感谢加鱼俨思在架博客这件事上对我的督促。没有她们,我一定会拖更久。

原有的几个博客的博文中尚有些价值的基本已经迁到本站,没迁的也就不迁了。原有博客也就不再更新。虽则在中国特色国情下,同步一些东西到微信公众号大概还是不免的。原来博文所描述的一些内容有许多已经时过境迁,不再有用,但原文也就不删了。

这里就不附原来博客站的链接了。墙正在日益加高,重现当年”但凡链接到某墙外网站的网页一律墙”的措施也并非不可能。我还想这个小站多活两天。当然,这不会是我重启博客写作之后的唯一一个站点。和我熟的人,在看到我的马甲站时,自然会知道那是我。出于同样的理由,本站也不直接链接到墙外网站,包括朋友们的博客。敬请朋友谅解。有些不方便说的话,还是去马甲站上看好了。

我在一篇新博文中谈到了“自主博客”的概念,我很高兴这个小站是一个自主博客,也推荐所有愿意写点东西的人去开一个自主博客。

欢迎使用 RSS 订阅本站。本站的除全部博文外,各个分类也都提供订阅。在任意文章列表页面的网址后加 feed/ 即可获得订阅地址。

我习惯不断修订文章以维持信息最新,同时保持原文地址不变。而不是有新东西的时候重新发一篇博文。我承诺会尽力维护这个站点保证每个永久链接都长期有效,可以放心用超链接进行引用。

另一个我的坏毛病是,我喜欢在整理发表旧笔记的时候把日期倒填为笔记记录的时候,而不是发上博客的时间。这是一种对于时间记录的强迫症。

可惜的是,对于上述更种更新,使用 RSS 都是不能接受到文章更新的。现在暂未开放邮件订阅的注册。如果读者有需求的话,或许改日会开放。

中文互联网上严肃讨论的消失:不同用户眼中的过去与未来

一系列关于消逝的 BBS/论坛时代的问答。问答内容并非逐字引用,有加工、重构和虚构。感谢五位不愿意具名的朋友的贡献。

引言

这几年来,许多朋友都感到在中文互联网上,严肃讨论正变得越来越稀缺1。一方面,再难有过去的论坛/BBS 那样的有人气的可以进行长文严肃讨论的平台2;另一方面,在如今有人气的各种平台上,只输出立场不交流观点,不好好说话,一言不合就拉黑正在成为常态。对于这种现象,有许多人作过论述。然而,当我和朋友讨论起来的时候,发现对于这件事每个人都有着不同的看法,我并未见到任何一篇文章全面讨论了我朋友眼中的这些因素——我想,假若扩大范围的话,我们一定可以找出更多意想不到的看法。因而我放弃了写一篇系统性论述的打算,而决定将和这些朋友的讨论稍作加工直接放上来,希望读者能从中自行寻到有趣的材料。知乎「朱近野」的这篇有趣回答 中文互联网的产出在渐渐枯萎吗?——朱近野的回答 也启发了本文,所以本文使用问答对话体。

这篇访谈主要关注几个问题:

  1. 中文互联网上的严肃讨论是否濒于消失?大概这点我和大部分我的朋友观点相仿,在问答中就只重点讲不大同意这种看法的人的意见好了。
  2. 中文互联网上可以进行严肃讨论的社区为什么消失了?对于这点,不同朋友给出了非常不同的观察和理解。
  3. 现今的平台是否适合严肃讨论?为什么?
  4. 如果第 2 问中的原因无法得到解决的话,那么预期我们是不可能重建一个适合大众的严肃讨论社区的。然而,有没有办法在小圈子内重建一个严肃讨论的平台呢?

大概因为我自己更想看到问题的希望所在,所以在第 4 点上反复叨扰朋友问个不休。这篇问答似乎可以另起一个标题「严肃讨论社区为什么死?我们怎么重建它?」。起现在这个标题其实是有些大的,但我很想听到大家对于这个大标题的各种看法并补充到本文中,所以标题就不改了。

读者如果有什么想说的话,欢迎在评论中留言,去 GitHub 对 本文 发 Pull Request。如果您有意贡献您的观点,可以联系我。您可以选择自己写完整个问答,也可以约个时间我们聊一聊。我的邮箱是 xw 四十七 @indiana.edu (将数字替换为阿拉伯数字即可)。现在特别希望和没有经历过 BBS/论坛时期的朋友们聊一聊他们怎么看待严肃讨论的需求的。

您可以自由转载和引用,只要在转载引用时加入本文链接即可。本文会不定期更新和修订,如果您希望找到本文的历史版本,GitHub 上的 版本历史 可以帮到您。

访谈记录

朋友甲

关键词:举报

朋友甲谦谦君子,当年在论坛上口碑甚好,所有打过交道的网友都很尊重他。前些年遇到过网络暴力。因为和他在中文互联网的讨论气氛这个议题上有颇多共识,我们的讨论跳过了一些问题。


您曾经是一个重度 BBS 用户。现在对于 matters 这样的公共论坛则不以为然,觉得鱼龙混杂浪费时间。说到这点的话,我倒想起一篇十年前读到的关于网络社区文章,其结论大抵也还适用于 matters 这种公开网络社区。这篇文章说,一般来说一个有人气的网络社区一开始都是由一小群紧密联系的朋友们发动起来的,慢慢引起公众的注意力而有越来越多的人加入,后来者渐渐形成新的势力,原有创建者遂逐渐退出。随着原有核心的退出,讨论水化,最后解体。这大约可以解释您对于无准入门槛的讨论的不感兴趣。

不过,总还是有可能把当年的老朋友们叫过来讨论的吧? 那么是什么阻止了一个服务器在大陆之外的小众邀请制论坛重新把老朋友们集聚起来呢?

还是举报太厉害。现在即使知道对方是好人,也不敢深谈,万一哪天就被截图举报呢?
人文社科知识分子现在是不敢敞开说话了。

这个问题许多人的看法是:老一辈现在生活压力太大。年轻一辈已经没有使用论坛的习惯,您觉得对吗?

还是举报的影响大。年轻人再怎么习惯变了,毕竟人数很多,出一两个朋友还是不难的。

好吧,那不能搞成封闭论坛吗?虽然这样和互联网精神不符,但总可以保证安全吧?

有三个问题。第一个问题是,你朋友的朋友不一定是你的朋友。所以一圈圈邀请出去就可能出现奇怪的人。另一个问题是,现在的举报经常不是举报某个人,而是举报整个社区甚至通讯工具,说这个社区或者软件的使用者统统是反动分子。比如说鹅组事件中某人干的事情。由于这两点,封闭也不能保证安全。此外,还有第三个问题,要是举报给有司也就罢了,现在常常是举报给大 V,大 V 再发动一群人进行网络暴力。所以也就没有清楚的举报边界,什么都可能被举报并被打击。

我想,可以设想这样一种应对方法:1,开源的软件,分布式网站;2,每个群组施以较严格的限制,比如说必须少于 15 人,必须两两互相认识;3,如果 15 个人不够用,有新人要加的话,通过开新群组来解决,每个人可以同时处于不同群组中,可以将信息从一个群组转发到另一个群组,但是客户端可以自动将重复的消息进行去重。

这个应对可以解决一些你说的问题: 1,举报软件的话没意思,因为有的群组是正常群组(其实 Telegram 现在恐怕在某些人眼里已经是反动透顶了吧,所以也不一定真能解决);2,举报群组的话,他只能举报自己所在的群组;3,但是由于群组之间可以转发信息,信息仍然是可流通的。

不过搞成这么麻烦的话,怕是没多少人愿意用了。只能算是一种墨子与公输般的演练罢了。

是的。而且现在严查整个平台/软件的事就已经有了。所以还是博客好。认真写点东西,一次写清楚,其实比群聊更适合讨论严肃问题。

哎,如你所说,人文社科讨论现在是很难了。不过除去人文社科,总还有音乐、理工、小说、电影这些讨论圈子啊。

那些就安全了吗?就说讨论音乐吧,谁能保证哪天不讨论到某个香港音乐人的歌?谁能保证不被举报?
现在也就技术社区还能活着了。

是的,技术社区现在还是比较活跃的。我私以为程序员圈子还能存在社区,说不厚道一点,主要取决于两个因素:1,谁不爽了都可以很快搭一个;2,程序开发这块技术日新月异,不学习就要掉队。所以任何还想不掉队的人都需要利用最新的信息传播技术。

朋友乙

关键词:微信群,圈子稳定化,无意识选择

朋友乙在论坛上以潜水为主,但认识了许多重要的朋友。


您怎么看「为什么中文互联网可以进行严肃交流的论坛消亡了」这个问题呢?

我觉得一个很表面的现象就是论坛老人转到群里去了。早年是转 QQ 群,现在是微信群。

是的,我觉得导致这种转化的一个原因是一种封闭化,小圈子化的趋势,不想和新人纠缠。(参见我和朋友甲问答一开始所提到的核心成员退隐问题)某 BBS 后来大部分活跃成员大部分时间都在非公开版面活动了。但是选择微信群或者 QQ 群,只是因为懒吧?明摆着它们对于长篇讨论都非常不合适。

哎,微信群是挺不方便的。可能是靠论坛交友的人都老了,新人渐渐地不会用论坛交友了。就像我们这代人也不给杂志读者信箱写信交友了。

小朋友不喜欢用论坛是可以理解的。不过老人为什么转移到微信 QQ 上,怕是不能用每代人的习惯不同来解释了吧?

我觉得不是习惯不同,就是圈子稳定下来了。不再有那么强烈的要去论坛上寻觅新朋友的需求了。

需求是一回事,但我觉得微信群发长篇文字,分享资料什么的确实不方便呀。大家为什么愿意容忍这种不便呢?

对的,确实是不方便。
不过我想也未必是真的主观在「忍」,而只是一种无意识的选择。

我大概明白你所说的无意识选择的意思。大部分人的生活就是由一个个无意识的习惯构成的,刷朋友圈,刷微博,刷知乎,刷 BBS,都是这样。手里闲着没事就刷一刷。

是的。如果人生每一分钟做什么都要花脑子去想,那多累啊!

所以其实事情的开端可能很简单。先是加了微信群,然后因为每天都有刷微信的习惯,看见了消息就会去回一句。这时候还是两个都上。然后出于各种偶然原因,BBS 就上得少了。
像是我吧,自从某 BBS 某次升级导致 SSH 上站必须要设置一个选项,我就不上站了。我猜想很多人都和我一样,也许哪天忙起来了好久没开有 term 的电脑,也许换新电脑忘了装 term。不知道什么时候起,反正上站也没什么帖子可以看,就不上了。

是的,开始是版面缺失人气,接着有微信群之后上站不再是必须活动,最后各人出于各自的原因一个个就不上站了。
你还没有提到一个重要因素:人都是从众的。尤其是无意识行为,很容易被大众带着走。
就说微信群取代版聊吧,如果一个话题就是在微信群上起头的,那么不会有人再去版面发贴来讨论这个问题。

在版面发贴说一个「已经被微信群讨论过的话题」的话,好像是在明言有一个公众不能加入的小圈子。

是的。

在微信群取代论坛的这个过程中,我觉得访问便利性是一个很重要的因素。微信是假设人永远在线的,而且你永远需要看手机、看微信。虽然聊天本身并不是生活的必须品,但是看微信这个行为,对于大多数人来说已经被固化为生活的必需。而在已经有一个东西作为备份的情况下,上站就不是一件必要的事情。何况大部分 BBS、论坛对手机的支持并不好。想上站看个东西,还得打开电脑。

没错。像当初使用拨号上网的时候,上站很麻烦很不稳定,大家还是千方百计地去上,无论是学生还是已经有工作的人。可见麻烦也不是决定性因素。那时候就只能在 BBS 上找到聊得来的人。
而微信群备份了一个版面的活跃网友之后,有什么话想说,想让某些人听到,BBS 已经不再是唯一的途径。这时候,访问上的一丢丢麻烦,就会随着时间,一点点地减少愿意上站的人数。

但是,对于分享资料,沉淀过往讨论的精华之类的事情,微信群确实很不方便啊。

没有人否认这点。只是,当一个群里的大部分人都不再上站之后,这件事就已经积重难返了。你不可能把文章发到一个没有人看的地方。
恐怕你这篇访谈,写成之后也是要在微信朋友圈和微信群上发链接吧?
至于说沉淀讨论精华,这是一个纯粹活雷锋的事情。在 BBS 用户比较多的时候,出雷锋的机率还比较大。人气下来之后,就没有人愿意整版,标记精华了。

总结一下,您的主要观点是,用户的迁移更多的是一种无意识的行为。这不是一件令人开心的事情,但事情就是这样发生了。也正因为大部分人的决定都是无意识的,大部分人只是别人用什么就跟着用什么,所以想复兴论坛就非常困难。

朋友丙

关键词:在学校的环境没有了;麻烦。

朋友丙在论坛上有过一群线上线下关系都非常好的朋友。


从你的角度看,您认为中文互联网社区为什么消亡了呢?

人人网如果没死的话还挺好的,算你说的社区吗?

人人网是社区,但日志评论显然对于长篇回复并不友好,所以并不是我想问的「可以进行严肃交流的论坛」。人人网上基于日志转发评论的交流大部分还是「点赞之交」,很难深入地讨论点什么。当然这个在微信朋友圈时代就更明显了。那么,您认为可以进行严肃讨论的社区为什么消失了呢?

流量,麻烦。

您真是言简意赅。只团结老朋友的小圈子社区不受第一个影响吧。您愿意说说什么叫「麻烦」吗?

老朋友离开校园之后,没办法固守封闭的校园论坛,而且上不去。不得不说,不做学生之后心态变化很大。

您提到了两个因素。第一个因素只能解释校园论坛的萧条。怕是您说的心态变化才是主要原因吧?大部分中国人并不像欧美人一样有大把的时间烧在业余兴趣上。尤其是有娃的人基本已经忙到没空考虑别的问题。

不是。有更多时间看电影之后,我只想看电影,不想写影评了。

因为懒得写了吗?

不是懒,是觉得有更多的电影需要看,不然影评没法写。此外,我还有一些别的兴趣,正在给自己写几本手册。

所以你的精神生活还是很丰富的,没有成为社畜,而是在走深入钻研的路线了?
但是我还有两个疑问没有得到解答。1,没有社交需求么?还是说有,但是觉得现有平台不能满足,就算了?如果现有平台不行的话,考虑过用别的方式维持社交么?

建平台讨论过,预计老朋友不会买账。在学校的时候,有 10% 兴趣重合的老朋友天天聚在一起,这种环境不存在了。

嗯,那么我把问题再细化一点吧。实际上这里有两种需求

  1. 老朋友的联系。大家其实并不在乎这些讨论是否可以让公众可以看到和参与。这样的话,邮件组可以很好地满足需求。并不需要折腾,我不太明白为什么老朋友会不买账。

  2. 基于同一个兴趣,和研究程度相当的人进行的深入讨论。这就需要是一个公开可搜索到的论坛,否则你无法加入别人的讨论,别人也不能发现你。当然,公开论坛搭起来就会麻烦一些。

我们先说第一个问题好了。考虑过建一个邮件组把您当年朋友聚起来吗?

绝对不可能,为什么要招人讨厌呢?

为什么这么说呢?

论坛可以选择不上,邮件不能不收啊。每天查工作邮件都烦死了。闲着没事去看,是享受;收到消息去看,是负担。

这其实是有解决办法的。设置一条邮件过滤规则,把邮件组的邮件都放到一个文件夹中。关掉那个文件夹的新邮件提醒,不显示在未读邮件列表里。这不就解决你说的问题了么?

让所有人都这么做一遍?我自己都懒得弄。

所以还是「麻烦」。

对。咱们在这里诠释「麻烦」呢。

好吧,第二个问题,对某个深入兴趣来说,您没有和人讨论交流的需求吗?

小众同好,国内本来就不多,还不如去国外论坛。

但总有一些小众爱好是只有中国人玩的。

唉,我完全没参与过这样的。

说到「麻烦」,举个不当的例子吧,我们前阵子组了个在线一起看电影的群。沟通协调,配置软件以同步播放进度什么的,按您的说法,也是「麻烦」呢。

个人体会,在国内,周围都是中国人,又拥挤,宁可少说几句话。
记得在美国短暂访问的时候,一个大气专业的朋友说要去沙龙上讲气候,当时我就想国内估计不会有这样的活动。

既然这个问答都是说汉语的人看,也许有人不明白什么是您说的沙龙,可以解释一下么?

这个不容易说清。是一种有组织的私人聚会。每次会有人讲个专题。我乍听起来是匪夷所思的,转念一想若是在美国待几年我说不定也去。

这种沙龙在什么条件下才会有,倒是一个有意思的问题。今天就先到这里。

朋友丁

主要观点:国家资本主义;即时回复工具的取代;一对一交流对论坛的取代

和朋友丁的这个对话还是很容易理解的,没有什么背景介绍需要补充。


我想采访一下当年的 BBS/论坛重度用户们,看看大家对于是什么因素阻止大家回到 BBS 或者新开论坛有什么看法。
您说,是什么在阻止大家重新开一个论坛把老朋友们都聚起来呢?

这个我还真不好说。感觉好多东西都在阻碍。

我个人感觉:1,很多讨论需要深化,更进一步的探索只能留给个人去做。比如我现在在读政治哲学的东西,这不是和以前小伙伴可以详细说的;2,大家都更忙了;3,太多言论禁区客观上也阻碍了它。

对于你的第三点,朋友甲和你观点相近,觉得举报太多。对于你的第一点,您也和朋友丙一样走向深入钻研的方向了。那么我们先谈这点吧,我可以把问朋友丙的问题重复一下:
1,在您新的探索路上,就没有社交需求么?还是说有,但是觉得现有平台不能满足,就算了?2,如果现有平台不行的话,考虑过用别的方式维持社交么?

论坛本身在我看来需要层级化推进。但目前没有论坛工具可以用。然后和专门人单独聊的话,大多数时候微信确实够用。

微信聊长篇是非常非常蹩脚的,不是吗?

可以语音啊。交流一些特定点和思路,然后工作继续自己做。

这并不是微信的特点嘛,没有微信的时候,我们也有电话、短信、寻呼机甚至信件。

对啊,视频和语音聊天。总之都有工具。所以以前有论坛的时候很多人上年纪也 BBS 玩得少。重要的工作可以附件传递。

好的,那让我们返回到第三点,举报和限制的影响。您所研究的政治哲学确实容易被举报。但是对于音乐电影之类的东西,为什么现在也不能有人办起来论坛呢?

电影和音乐口味更加分化。而且有豆瓣和网易云音乐等。

所以你的意思是,豆瓣和网易云音乐已经满足了大部分人的大部分需求,专门为了自己的这个爱好去折腾小众论坛的动力不足?

对。大部分人只要基础的。
哪怕是小众,也很多都是听和看,而不会专门去写什么。举个例子,其实现在还听碎瓜摇滚的人挺多的,更不要说爵士电音什么的。但是你开个摇滚论坛或者邮件组,是用来干什么的呢?
音乐和电影都更多是资源加对该资源的点评就好了。这显然不是小众论坛可以支持且存活的。并不会有太多听碎瓜的小朋友一起长篇讨论碎瓜。且人们对资源发言的表达欲很大程度上被弹幕和即时评论分流了。不太会说我在 A 处欣赏资源,再跑去 B 处专门写。

我想,弹幕、短评和长篇讨论向来就是两种需求,对吧?小众论坛的成本不高,为什么不几个人自己搞起来呢?

成本很高的。有监管,个人不能建论坛。大量翻墙上论坛也会有被抓风险。

这个还真不一定需要翻墙。建在境外的服务器并不一定被墙啊。比如说本文所在的博客就没有被墙不是?但是各地访问不流畅这个事没法,现在国际网就是越来越难上了。

是啊。

好的,访问困难这个问题就算讨论过了,确有一定的客观困难,也需要一点折腾。让我们再明确一下剩下的问题,多人讨论的需求不能满足怎么办。我在谈两种不同的需求

  1. 老朋友的联系。大家其实并不在乎这些讨论是否可以让公众可以看到和参与。这样的话,邮件组可以很好地满足需求。并不需要折腾。

  2. 基于同一个兴趣,和研究程度相当的人进行的深入讨论。这就需要是一个公开可搜索到的论坛,否则你无法加入别人的讨论,别人也不能发现你。当然,公开论坛搭起来就会麻烦一些。

我没有第一点需求,微信就够了。第二点的话,我一个猫群也可以聊中文和文化,基本日常小讨论够用了。而我真正严肃在做的东西,没人讨论。所以也是伪需求。我现在倾向于深度讨论是点对点的。尤其前沿或者基本没人做的东西。严肃创作,也更多是一个人的事。而且人文领域重要的是自己做成体系,要独自探索,不是在一个标准范式下讨论的技术论坛。

问题是,你怎么找到和你研究程度相当的人呢?靠熟人介绍么?这就是公开讨论区的意义所在啊!

看论文搜啊!从学科角度来说某个领域在做的就那么几个人啊。然后有价值的公号作为媒体发表就好了。

严肃研究也没那么频繁的讨论需求啊。

不需要频繁啊,一个月写篇文章丢到论坛上去也无妨嘛。

那这个有各个好的学术公号一直在做了。

学术公号的问题是,你很难去认真写个长篇回复。微信公号的评论区写长文并不方便。

要讨论直接发邮件给当事人啊。

好的,你重申了这种讨论更多是一对一的讨论,并不需要论坛。也就是说对于具体深入领域来说,你不认为有发现新朋友的需求。但这样的话,我还是会有一些疑问。比如说,你怎么发现学术公号?

因为可能我在我关心的领域有熟人圈。

所以你的回答是,做这种人文研究,不需要任何信息技术。在纸媒时代,靠熟人圈和期刊(学术公号也是一种变相的期刊,只是更加分散更不容易被发现),在互联网时代,你还是觉得有这些就够了。
这也是我在和朋友甲的讨论中说到的,为什么 IT 技术论坛永远存在的原因:因为这个领域日新月异。论文对于 IT 技术来说太慢太慢了。

对啊,因为我关心的领域好几十年没进展了。

看起来互联网社区的死活与否,对于你们没有影响。当然有的领域就不一样,以前有互联网社区,现在就退回到了熟人圈+期刊的倒霉境地。

我认为互联网社区主要功能是普及认知和推动公共生活的。然后技术论坛一直似乎都还有。所以我不知道你说的到底是什么社区萎缩到让人用不了了。

好吧,你说的互联网社区的主要功能为什么在中国不能存在我们都心知肚明。对于我说的倒了大霉的社区,让我举两个例子吧。

设若某种小众乐器的爱好者需要分享资料,讨论技术。你懂的,微信群用来干这事有多不合适。没有论坛的话,就倒退到熟人介绍+微信群+公号发布百度网盘资源。而如果运气不好没有熟人,可能永远也接不上组织。

说完反面例子,再举个正面例子。在家里玩模拟赛车是一个小众爱好,可能要配置环绕显示器、G 力座椅、直驱方向盘等等硬件。许多资深玩家都 DIY 过硬件。可以想见,新人入门需要看很多前辈积累的资料。好在现在还有 http://bbs.srfcworld.com/forum.php 这样的论坛存在。

你看,这种小众领域,论坛对于沉淀资料具有非常重要的作用。

啊,果然这是我完全不熟的领域。
那可以重新建论坛么?

这是个好问题,我没有答案。我是看到中文互联网社区衰败的现实,来问大家怎么看这一切发生的原因。

我看这个原因就是因为小众不赚钱,没大平台支持?
基本大家现在都是百度网盘存资料,公号或者微博定期更新,或者 lofter。

对,这其实效率蛮低的。我又想起一个例子,智能手机刷机的论坛早在刷机不再流行之前就已经黄得差不多了。

那是因为厂商打击。厂商不希望用户自由刷机。

也许有这个因素吧,这个例子不大好,干扰因素太多。

我觉得罪恶之源就是垄断和那啥。所以国家资本主义加全球新自由主义是万恶之源。所以我才觉得我们时代严肃的人文讨论必须追溯到政治哲学。

哈哈,这回到你的研究兴趣上了。不然你给个总结?

我觉得我的回答我个人可以总结为:1,国家资本主义下的垄断加啥啥;2,即时回复对大众表达欲的分流;3,个人社交饱和,和关心领域的缩减与深入带来点对点交流需求挤压公共交流。

朋友戊

关键词:人心不古;大毒草与商业利益

朋友戊的背景其实也没有什么需要介绍的,从对话中不难看出,他对于技术深有钻研且有不少同好。


我正在和一些当年的 BBS/论坛重度用户朋友聊「为什么中文互联网上可以进行严肃讨论的论坛消亡」这个问题。已经问过的朋友们给出了很多不同的原因。

对……这个问题大家都有自己的看法。

比如说有的朋友就认为是举报太多。

说到这个,最近有一个有趣的现象,中文世界的审查部门已经变得越来越内卷化。

是说队伍越来越大,这些人的效率也越来越低?所以各种莫名其妙的事情就越来越多?

这个行当看起来很快就会被 AI 替代吧,到时候就会更有趣……

像是现在就有谣言说,有平台在机器学习文章的传播规律。

是的,这就非常可恶。人有良知,这种默认就删的算法可是一点良知都没有。最可怕的是大家都因为懒就接受了算法的统治,这种事情发生过不止一次了。

的确是非常值得警惕的事情,可能会对社会有深远的影响。不过今天我们可能不能讨论太多,不然篇幅就太长了。

我有一个问题,就是是不是不光是中文,世界范围内严肃讨论是不是都越来越式微了?

是的,根据 Oxford Internet Institute 的研究,世界范围内论坛和博客都在流失用户。

反正诸如 Twitter 或者新浪微博这种限制字数的地方是不可能严肃讨论的……

回到问题上:言论审查应该是一方面的原因(西方也有言论审查),但是我觉得不是唯一的原因。

你看五六十年代言论全面审查的时候,也不乏有人好好说话。
现在的 Twitter 上面的反华势力,没人审查他们的政治观点,但是也都不好好说话。

这里的原因很多,比如说 SNS 中的 filter bubble,每个人只看和自己意见一样的人,促进党同伐异。然后手机的流行使得人们不愿意写长的东西。

对,在这种 filter bubble 里面呆久了, 人就容不得不同意见。讨论起来只看立场一样不一样,不管别的。

没有人写长文也是一个问题。

还有一个可能性是,之前发表言论基本上是知识分子的特权。互联网高度普及之后大众才能公开发表言论。然而大众言论的水平,可能自古以来一直是这样……
只是现在 SNS 发达了,你能看见了而已。以前这种东西想上报纸会被退稿……

不但能看见了,而且被污染了。有的人可能本来天天看正常东西他也挺正常的,现在天天看垃圾他也就垃圾了。

对。大部分人都这样。你看多了垃圾话,在全是垃圾话的地方,就只能说垃圾话。

所谓的内容推荐算法更是推波助澜。

设计内容推荐算法的人,根本不知道什么叫内容。这就叫 garbage in,garbage out。

哈哈哈,是这样的。
所以我们举出了三个因素:微博这种短内容平台的兴起,SNS 上的 filter bubble 和内容推荐算法对人观点的固化,越来越多低水平用户加入互联网上的讨论。种种原因使得讨论环境污染化,而人也被影响。

现在的某校学生里面,好好说话的人感觉比以前少。当然这可能是不好好说话的人嗓门大的原因。

这和我的听闻是一致的。而且就是其中比较有出息的,能认识到情况很坏的那些人,有时候都不免受影响。似乎要洗掉这种坏影响需要本人特别注意才行。

这些东西传染性很大。

毒性很大!

哪怕是九几级的校友,现在中毒的也不在少数。更别说我们这辈或者小朋友们了。

真正的大毒草是这种无色无形的!

大毒草跟商业利益已经高度一致了,这就很难办,世界各国都差不太多。(当然组织形式有所不同)

早死晚死,都是一个死……

不光是论坛。整个互联网的信息都在劣化。现在的搜索引擎都不能用。Google 现在倒退了,大家还唯 Google 马首是瞻,开倒车不以为耻。

没错,现在 Google 搜出点有用的长尾信息真是太难了。

感觉大家的有效信息获取方式已经回退到前互联网时代了。

就是我在前面和朋友丁说的,熟人+集中出版式信息发布渠道。

关键是这种获取方式连 2000 年都不如。这就很愁人。

真的,愁死人了。感觉我们这茬人一死,人类文明是不是就得进入大倒退时代?

咱们这茬人生前就能看到人类文明大倒退吧。知识得有人接受才谈得上传承。

那我问点具体的问题吧。你不再每天上 BBS/论坛的原因是什么呢?是某种偶然因素还是明确的某个事件?

非常明确。某校论坛的校方管理者尝试加强对该论坛的管控,全站哗然。我被恶心到了,以后就不上了。

校方对于校园论坛肯定有一定的管制要求。我理解的话,既然能活这么久,校方和站方都在维持一种微妙的平衡,何以这种平衡就打破了呢?

现在站方和校方管理者都不行了。之前维持一个自治的论坛算他们的政绩吧。现在上面也不需要这种政绩了?现在流行的是定于一尊。

我听说某校现在线上线下都有一些学生负责汇报思想动向什么的。有人蔑称他们为「特务」。

以前也有人愿意干,但是总的来说是被大家看不起的。现在的小孩,估计都持事不关己的观点。
当然持事不关己的观点,未必不是一件好事。这样「特务」的存在意义就被消解了……
反正现在审查的意义已经被消解得差不多了,所以负责思想动向的人加班加点干活也是徒劳无功。

这听起来相当的后现代啊。虽然置身其中的很多人自己的精神生活完全是前现代的。我有点可怜那些浪费自己生命的抓思想动向的人了。

对,哈哈哈哈哈。

好吧,那么您原来喜欢的校园论坛您是不愿意再上了,有没有考虑再建一个论坛呢?因为聚不起来人?

对,现在都已经微信群化了。

几个老朋友自娱自乐也不错?哪怕就十几个人呢?

十几个人的话,在哪儿都行。不一定需要一个论坛。

所以我归纳着,对于论坛来说,至少现在还有两种 niches。
一种就是一群两两互相认识的老朋友。这个呢,如果大家在国外或者还在学术圈的话,肯定都常用邮件,所以原则上邮件组是可以用的。
一种就是某些非常小众的爱好,会希望有一个公开的论坛,这样别的人在搜索的时候可以搜到,也就可以遇见几个新朋友。

对的。要是说小规模的邮件组,我是一直都有的。也有 Hangouts 讨论组,搜索东西比微信方便。技术方面的论坛,也还活着。

您这个回答和别人都不一样,也许和您的技术背景有关。也许严肃讨论和论坛之类的东西,就只能在技术社区继续存在了。

在技术社区一直存在。而且应该也不会消亡。


以下为脚注


  1. 在开始之前,或许应该说说我眼中的「网上严肃讨论」是什么。这里我不想长篇大论去设定一个苛刻的理想的讨论空间应该是什么样的标准,只说最简单的:在交流观点的时候认真表达贡献自己的观点或知识,对于别人的观点或知识予以认真回应。而一个可以进行严肃讨论的社区,应当提供这种严肃讨论的可能(显然,这势必要求可以用长文来回应),有人愿意做这样的平等讨论,交流的结果可以作为社区的积累。 
  2. 当然,并不是说论坛/BBS 就没有水。实际上大部分贴子都是水贴,只是说,最起码长文严肃讨论还是可能的,一个主题也可以在相当长时间内有相当的热度。 

那些年用过的照相设备

Last updated on Apr 30 2020

本文原来是购买 GX85 之后的 感想 的一部分。现单独拆成一篇并修订,以便每年不断更新我和照相这件事的故事。

「拍娃」和「谈恋爱」这两件事,过去是,现在是,大概将来仍然会是人们购买相机的重要动力——如果将来还有相机这种东西的话。那时还说得过去的中国城市家庭,几乎都会有一本影集。我家也不例外:父母的约会、我小时候的蠢样,都在其中。除去某些重大场合是借单位相机或者请照相馆拍的以外,那相册中的照片基本都是一部日本产的胶卷「傻瓜相机」拍出来的。父亲对于那部相机甚为宝惜,直到这台相机封存之日,仍然连纸盒包装在内的一切都崭崭新。现在看来,那种傻瓜相机,几乎没有任何可调节选项,曝光控制中唯一自动化的部分只有测光,只是靠大景深来实现随手可拍,当然是比不上现在的任何一种照相设备了。然而那时廉价的「傻瓜相机」承载了中国无数家庭的记忆。一卷 36 张的胶卷,在工资只有三百块的年代,也是很昂贵的耗材了。在使用那部傻瓜机的时候,父亲每次买胶卷都必买柯尼卡,按他的说法,虽然最贵,但是最好。当然这在摄影发烧友的眼中不算什么了,不过对于平素非常节俭的父亲来说,在那个物质还比较不充足的年代,是他为数不多的对于品质的追求。那台傻瓜相机因为是家里贵重的财产,默认我是不应该去碰它的。唯一一次因为好奇打开的结果,是使几乎一卷胶卷报废,其中包括父亲和单位朋友一次旅途的几乎所有照片。父亲为此很不开心,不知道该怎么和朋友们交待。

下图为那台相机所拍的郊游野餐

 傻瓜相机所摄郊游野餐

我父亲对摄影的兴趣从童年一直持续到他最后的日子。小时候玩暗室技术,后来则是 PS 高手。一向将老一辈人勤俭持家风格发扬到极致的他,在买数码相机这件事上,反而出乎意料地完全没有反对母亲的提议。于是,2002 年,我家并不算晚地踏入了数字影像时代。这部数码相机被我父亲用了十年之久,算是他对勤俭风格的坚持。它虽只是一部两百万像素的尼康低端消费级相机 E3100,画质比不上现今的主流手机,相对于前一部相机的进步无疑是巨大的。有了真正可以对焦和变焦的镜头,还有即时预览图像的液晶显示屏,而不再需要冲洗完成之后才能知道拍照是否成功,更不用说插上 64MB 的 CF 卡之后可以存储胶卷时代不敢梦想的 200 张照片。得益于小底易于实现微距,第一次体验微距拍摄的时候全家人无比惊奇于那纤毫毕现的细节。极轻极小,虽然没有调节选项,但全自动设置往往已经够用。家里人无论去哪里几乎总会带上这部相机。在那个经济迅速腾飞,家庭收入开始增长的年代,它记录了家里无数的第一次:第一次自费出门旅游、第一次坐飞机、第一次坐动车……

下图是这部相机所拍的三亚旅游照片

 尼康 E3100 所摄 三亚某地

不久,父亲又买了打印机和扫描仪。家里全部的老照片也被扫描进电脑。胶卷时代自此结束。那台父亲无比爱护的傻瓜相机留给我之后,我也没有用过一次。反正要拍照的时候,只要认真保证不会弄坏相机,总是可以把家里的数码相机借出来的。

下图是高中时运动会时用它拍的照片。正在跳高的是我的好朋友。

 尼康 E3100 所摄 高中朋友跳高

07 年去北京上学,从此一年到头没几天在家。我的第一部手机是摩托的 E2,带有一个与傻瓜相机原理约略相同的 130 万像素摄像头。超焦距成像,CCD 自动测光,电子快门,可调节的选项为零。进入相机程序也颇麻烦。不过那时我已经很感幸福,毕竟它的画质已经好于我家那个古老的胶卷傻瓜相机,兼有数码成像的方便。拥有父辈和我同样年龄时不敢想的设备,对于捕捉大学期间的各种新鲜事情来说,那是非常足够了。虽然没有任何选项,但摩托的直出调教非常讨喜,颜色饱满鲜艳,也不容易过曝。刚进大学什么都新鲜,无论是校园各处的风景,还是海报、课程表,一概都拍了下来。出去游玩的时候它的重要性更不必说。(我现在舍友的大头照,还是那年秋天野外观测时拍下来的。谁能想到这就是十年的友情呢?)

 Moto E2 所摄 讲堂海报

后来我最喜欢的手机三星 I780 的后置摄像头反而倒退一步,无论低光照场景还是颜色调教都比不上摩托罗拉,前置摄像头也只是聊胜于无。想十全十美是很难的。而那时摄像头最好的手机大概是诺基亚的 N97,外型够帅,镜头很大,滑盖露出摄像头,死党手里就有一个。然而即使 S60 系统并不会像早期 Android 一样卡顿,这个机器的快门延迟也达一秒以上。总体来说,虽然我 2011 年本科毕业时消费级卡片机的市场已经被手机打击得相当厉害,以那时手机蹩脚的拍照性能,那时候如果谁说手机拍照会满足绝大部分的拍摄需要,大概任何一个摸过中端相机的人都不会相信。

索性在这里把所有手机的故事都讲了吧。研一时的 HTC ChaCha 是第一台有自动对焦可以扫二维码的手机可惜没两天就丢了。之后的里程碑 2 又回到了熟悉的摩托罗拉,还是一样舒服的颜色曲线调教而摄像头更加强大,甚至还有实体两段快门按键。不过快门延迟的问题直到我后面的两部手机还是没有解决,Lumia 638/640 都是几百块的廉价机型不能要求太多。16 年换 iPhone SE 之后才终于体会到了手机摄像头技术进步的福利,即指即拍和很低的快门延迟虽然不能和微单、单反比,但大部分场合已经完全够用。苹果的直出调教是一向的优秀省心。

下面三张照片分别是 Moto ME722,Nokia Lumia 638,iPhone SE 拍摄的。可见最后一张相对于前两张画质的飞跃式进步。

 Moto ME722 所摄 五台山

 Lumia 638 所摄 德胜门箭楼

 iPhone SE 所摄 San Diego 街景

说回相机吧,那是我花了更多心血的地方。

2010 年,我还有一年毕业。我想记录下校园一整年的变化,留作永远的回忆。于是我战战兢兢地向父亲打报告要求买相机的经费。其实还出乎意料地顺利,只是父亲十分精准地预言了将来的发展「我怕你将来没多久就要换更好的相机」。但当时我对自己继承勤俭家风相当自信,而且不愿意继承那台已经用了近十年的尼康小 DC 凑合一下「以待将来一步到位」,打包票说做了十足的购机调查,至少能用个五年。在巨细靡遗的调查(甚至包括了对所有电池技术的详细调研)之后,我选择了一个看起来不算贵,对于摄影入门该有的功能似乎也有的机器:富士 S1770,大概一千二三百到手。不论那台机器的参数现在看起来如何的寒酸1,但摄影技术的大门终于向我打开了。

纵然这台机器有着无数的坑,好歹是自己选的,理论上有 PSAM 档(虽然由于光圈形同虚设,意思并不大),可以试验各种曝光参数,直方图预览也颇方便。从图书馆搬回来一摞一摞的摄影书来学习基本摄影概念,得到舍友的评价:「你适合搞科研」。打开新世界之后创作热情迅速迸发,公交车外移行闪烁的霓虹灯、多次闪光拍下上铺兄弟的四个身位、用那糟糕镜头做的虚化尝试……难以想象当时竟然试验了那么多有趣的东西。快门光圈景深焦距,各种曝光要素的基础知识就是从下决心买这台相机开始熟悉的。大四时华北、江南等各地出游和班级毕业旅行的记录都是用它拍下的。和某前任的大部分照片也是它拍下的。所以直到现在,我还能回忆起那台相机握在手里的手感,满满的都是回忆。

下面三张照片都是用它直出的。前两张展示了一下它仅有的优点:超长焦距。

 富士 S1770 所摄 月亮

 富士 S1770 所摄 殿顶

 富士 S1770 所摄 张家界

然而用得越久,S1770 性能上的局限越让我挠头。不用想星空夜景,也不用想抓拍。高感、快门、延迟上的痛点让出门旅行都不能拍个痛快。新手机里程碑 2 的出片效果之好让我更想摔相机。2014 年,终于抓住机会用一千五百块的价格拿下了松下 GF5,我的第一台真正意义上有丰富可调节参数的可换镜头相机2。现在看来,这个价格简直不可思议,也是当年市场形势使然。

新机拿到手里,大气不敢出地装上镜头,按下快门的那一瞬间,手上机械快门传来的震动就使人心潮涌动。快门震动感、旋转变焦环和对焦环时的手感,让人一下子就明白为什么那么多人迷恋胶卷时代单反相机的手感——那种把握住手中机械的掌控感,大约和开手动档汽车的乐趣是相通的。

作为穷人,没钱买镜头。彼时松下最便宜的 25 1.7 还没有上市,20 神饼虽然风靡一时二手也要至少一千两百块。看着各种镜头垂涎,甚至开始打起了转接手动头的主意。终于还是悬崖勒马没有走上这条烧器材的不归路。自带的 14-42 套头虽然光圈小画质一般,但是基本覆盖常用焦段,对焦迅速,有防抖,在各家的套装狗头中完全不落下风。

穷人烧不起器材,但还是可以进一步学习提高摄影技术。认真读完了《纽摄》3,进一步了解了用光和透视。时而用强光手电进行补光,买了三脚架来实验各种长曝光效果。

 松下 GF5 所摄 百望山下

那时候正值硕士毕业,第一轮申请悲剧掉了,毕业的压力和异国恋的压力都颇大,同实验室师兄弟在那段时间一起互相支持。相机记录下了在生物物理所的日子里师兄弟们的快乐时光。飞往美国的旅途,在 Bloomington 的最初印象,都靠它记录下来那些记忆。和某前任的最后几次见面,在国内和美国的几次出游,也带上了它。可惜的是和她分手之后心灰意懒,不想出门,这台相机只被我经常使用了两年时间就开始吃灰。一来出门很少,二来手机拍照足够便利,带上相机背大包在博物馆往往还需要存包。甚至在回国的时候也没有带上(根据以前的经验,带上也不会用的),和父亲最后的合影都是 iPhone 留下的。父亲故去之后,母亲来美国探望我的时候,本来想买个新相机,还是作罢,于是 18 年和母亲出游的照片也是它留下的。不过,因为它小巧方便,后来有了 GX85 之后,出游的时候还是经常带着它,两机各带一镜头,免去了换镜头的烦恼。

GX85 的购买动机在本文原来所属的那篇文章里交待了一下——我期待这是一个让我「重新发现生活的美好,重拾进取的热情」的契机。购入之后,也确实达到了预想的目的。初次带着它独自去 San Diego 散心,一扫失恋的阴霾,这次漫无目标不做打卡预期的旅行也似乎让我找到了最喜欢的旅行方式。另一次同样无组织无计划的旅行中,在马尔马拉海上目睹太阳在君士坦丁堡老城落下,成为永恒的记忆。2019 一年所拍下的照片超过之前数年之和。

GX85 的硬件相对于 GF5 无论是操控还是功能上都有所进步4。19 年用它折腾了不少有趣的延时摄影。因为有热靴,用闪光灯拍出各种有趣的照片也提上了日程。希望 2020 年能有闲暇和热情把许多计划完成。

外一篇——父亲的摄影故事

原本散见于本文的脚注,现集结在一起。或许会继续修订扩充。主要是对先父的追忆流水帐,读者未必会感兴趣。

我父亲对摄影的接触比我早多了。当我父亲还在中小学的时候,就和我大伯兄弟俩借出我爷爷奶奶单位里的 120 双反相机出来拍照——那种完全没有自动测光对焦的机械相机,想拍出能看的照片是非得明白照相机的工作原理不可的。拍出照片之后,还需自行去暗室显影定影冲洗照片。不过放大机和彩色照片还是过于高级的东西,一般的孩子无缘上手。

汤姆牌傻瓜相机的故事在本篇中已经讲过。我家的第一台数码相机,那台两千块的尼康小 DC 被父亲一直用到塑料老化,电池卡扣断裂,还用橡皮筋捆起来继续用。

大约我高中的时候,买第一台数码相机四五年之后,他又买了家里第一台 DV。那台 DV 还是使用磁带录像的,导出到电脑里时需要使用视频采集卡。他用那部 DV 剪辑了几段视频,花了不少心血。

当然磁带是太不方便了,在存储卡 DV 成为主流之后,又有了一部新的 DV。虽然像素不如尼康小 DC 高,但是毕竟没有损坏的零件,所以第一台数码相机就这样吃灰了。

在我买了第二台相机 GF5 之后不久,他终于下定决心淘汰掉那台尼康 DC。问了一下我的意见之后,买了尼康新出的小卡片。综合来看是比我的第一台相机强多了。

不久因为记录游泳的需求,又买了一台索尼的防水卡片机。因为机身实在是小巧轻量,前一台尼康即使有更好的画质也还是吃灰了。所以想想的话,我离家之后,他自己的生活还是有很多乐趣的,这让我回忆起来的时候很感欣慰。

不过因为他在手机上始终比较吝啬,一直没有享受过高画质手机摄影的便利。不过他走了之后,我在电脑里找到了许多手机自拍的鬼脸,也算是赶上了末班车。

PS 是另一个故事了,本就有绘画功底,透视用光构图都有相当基础,P 出的图片可以以假乱真。他很享受这其中创作的乐趣。改日会把他的作品发上来。


  1. 说起来呢,那台机器也真是够寒酸的。不然也不会到 2014 年的时候我迅速食言趁着双十一买了我的第二台相机。堪比手机的一秒多的快门延迟,只有两档的形同虚设的 ND 滤镜光圈,号称机身防抖但完全扛不住这机器长焦端 420mm 等效焦距,ISO400 就是可用极限,涂抹成油画一般的降噪风格,没有任何拨轮的操纵非常不方便。

    虽然前面吐槽那么惨,但是还是有优点的。宽大舒适的握把,富士的色彩调教,CCD 的全局电子快门,加上电池不过 440g 的重量,外加我的独脚架,携带起来比后来的微单还要轻巧。白饶的 EVF 虽然分辨率惨淡,在光线强烈时的确是不可或缺。 

  2. 这套机器相对于前一台的提升无疑是巨大的。有丰富完整的光圈快门设置,真正的机械快门和叶片光圈,再也没有对焦和快门延迟的烦恼,可以随时抓拍,高感相对于前一台机器的 CCD 来说大有进步。够用的不牺牲画质的全尺寸连拍,松下机器一贯强大的视频录像功能。虽然说 S1770 我只敢开 ISO200,GF5 保证画质一般也只开到 ISO400,但是 CCD 底在 ISO800 下是满屏雪花不能用,Live MOS 至少不求画质只求记录的话还可以在高感下试试。

    除去技术参数上的进步以外,触屏对焦、松下更好用的傻瓜模式一键出图也是操纵上的优点。 

  3. 关于纽摄:虽然这更多地是一本讲技术的书,相对于其它技术书籍,它提出的三原则虽有小学作文之嫌,但也让我开始审视每张照片的表现意图。

    对于拍照,或者摄影的观感也产生了变化。从「记录生活」,到「识别生活中的美,拍出好看到的照片」,到「创造条件表达自己」,真正意识到了,摄影是关于光与影的艺术。 

  4. 作为定位中端的机器,装备了单反上作为标配的一些操控设计:前后拨轮操作、电子取景器、热靴。同时功能上多出了机身五轴防抖、可翻转电容触屏、4K 视频录制能力、延时摄影定时器、WiFi 传图和手机遥控。可惜的是高感进步不多。 

Apr 22 2020 digest

一如既往,这个不定期 digest 主要包含在 RSS 中无法推送的博文更新,和不值当单独写一篇博文的零碎东西。

近来观察

美国平民有好多 N95!

自从美国改口支持大家戴口罩以来,本屯超市几乎立刻人手一个口罩。仔细一看,大部分美国人都戴着 N95。N95 现在在美国正常渠道根本买不到。如果不把人往坏处想的话,那就是他们平时家里拾掇院子除草吹叶、做木工活的时候用的吧?住在纽约市的朋友说,那里 N95 极其紧缺,但超市里美国人戴 N95 的比例仍然很高。

不过超市工作人员大部分没有防护,万恶的资本主义社会。

中外有别

据我观察,分享到微信朋友圈的博客链接,海外用户基本上是直接访问原网页。而国内用户是通过 weixin110.qq.com 转接过去的。如果微信决定封掉某个链接的话,国内的朋友就会点不开;如果没封,就会有一点延迟,然后跳转原网页。这个区分似乎是 IP 来区分的,不是按微信的注册地或者注册手机号来区分。

如果在朋友圈中发表包含领导人名讳的图片,该图片会立刻 OCR 后屏蔽掉,只有自己可见,朋友不可见。有趣的是,过两天之后,不知道是不是经过了人工审查,这张图片可能会被重新放出来——只是,这时候只有使用国外手机号注册的微信号可以查看,国内手机号注册的微信,无论当前在哪里,一律看不到。

网络不是法外之地

我鼓动大家多多考虑 plan B,免得文章被微信删了之后不爽的那篇文章 为自己,为别人,准备一条路 也顺手发在微信公众号上一份。在发出去一个多月后,微信以违反《网络安全法》为名删除了这篇文章。呐,这真是自我实现的预言啊。据说是被人工删除的,所以无法申诉。

可以和 微软笑话一则 对照。微软在一台已经安装了 Win10 的电脑上说“这台电脑无法运行 Win10”,微信删除了一篇内容是“少用微信公号,它会乱删你文章”的文章。一个审查员决定删掉一篇暗示“谁删本文谁就是狗”的文章。求仁得仁啊!

博文扩散渠道测试

这年头没什么人用 RSS,基本上不必指望有人订阅自己的博客。
博客方便写长一点的东西——直接在朋友圈发长文就不太方便。测试了一下,那篇关于 Trump 的梦大概我微信好友的 1/10 确实点开了。或可作为“朋友圈查看人数与点赞比”的一个数据点。毕竟微信从来不告诉你有多少人看了你朋友圈——除非你用的是微信公号。
总体来说,微信朋友圈转载自己博文的话,点开率看起来比豆瓣要高一点。毕竟豆瓣上大家的时间线里挤满了影评书评,除非好友都旨趣相设,点击率一般是不高的。
知乎上的回答如果要附自己博客的链接的话,愿意点进来看的人非常少,效率颇低。

搬运旧文

考据文一篇 爱因斯坦与《自然辩证法》

关于“自然辩证法”,读者可以搜索一篇有趣的小文“辩证法与放屁”,初中时只晓得《矛盾论》非要说正电荷负电荷是矛盾肯定是不对的我对此文万分佩服。

几篇生活、学习经验短文
锻炼后肌肉酸痛的原因与规避方法
UPS 电源选购
浅谈Word中的主题与样式

还有一篇中二时期的尴尬博文也被我从网易博客里刨了出来,那时候我高二。太尴尬了,你们不要点开看了
昆虫杂感

另有几篇旧助听器和旧手机的上手体验,是08、09年发的,看上去也非常有年代感了,供有考古癖的读者阅读

08年的 助听器感受
09年的 新手机I780使用感受I780使用手记。那时候觉得 Windows Mobile 好得不行。
后来换 Android,给我留下的印象极其恶劣,见11年的 HTC ChaCha 入手感觉

是的,上述文章都写的不好。本不值得从旧博客里挖出来的。只是觉得大抵现代人不免总有些数码生活,回顾看看历史变迁或者会有些感触。因而辟了一个叫 Digital 的新类别,主要是些我自己的数字生活的点滴。

新增了一个类目叫 Amusement,存一些好笑或者好玩的东西。现在其中比较有趣的可能只有一篇
微软笑话一则

其它的旧文可能对读者就不大有趣,在此就不提了。

更新博文

告别删文:在哪里写博客?
Update on April 8th 2020: 增加了“广告收入”评价,补充了托管型 VPS

其它博文大多是小幅更新修订。

用 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 本身手写起来麻烦且不易读。
  • Microsoft Word 当然在会用的人手里非常强大,也能实现结构和样式的分离,不过难以用 git 来进行版本控制。纯文本文件爱好者会不大喜欢这种格式。另外许多院系大部分教授偏爱 LaTeX 生成的 PDF 而不喜欢 Word。
  • LaTeX 作为理科学术界论文写作的事实标准已经有几十年。主要缺点是配置麻烦,不稳定,没有实现彻底的文档结构与样式的分离。这套老旧的系统已经背上了太多历史包袱。层层叠叠的复杂依赖关系令人望而生畏,初学者容易陷入各种配置问题或者受到上游包更新所引入 bug 的影响而捣腾半天编译不出来。幸而这些年有了 Overleaf 这样的在线编辑和编译平台,大大减少了普通用户的折腾程度。从 LaTeX 系统的发展史来说,TeX 本身是一套强大的排版语言,写作时需要将文档内容和排版指令混在一起,这当然非常麻烦,所以现在没人直接用 TeX 写东西了。LaTeX 这套宏包的出现才使得 LaTeX 系统看上去像是在使用和 HTML 相仿的标记语言,便利用户将文档结构和样式信息做分析,然而这种尝试并不彻底。而且相对于 markdown 的简洁来说,文档中留有大量哆嗦的“标记”,影响原始文档的阅读体验。
markdown 写论文的缺点
由于 markdown 最早只被设计了非常轻量的功能,各种扩展功能如表格、交叉引用、数学公式支持等均告厥如。后者不同人开发了不同的 markdown 扩展语法用于扩展 markdown 的功能。然而这些扩展也带来一些新的问题

  • 首当其冲的就是,不同人做的扩展的语法并不兼容。在最基本的 markdown 语法之外的其它语法如巴别塔一样混乱。这些不同的 markdown 语法被称为不同的 flavor。CommonMark 是一个现在采用比较广的标准,但它只是对于不同 flavor 所取的最大公约数,其功能是相当有限的。使用 CommonMark 之外的语法,就要冒着文档在某些平台上无法编译或者正确显示的风险。对此,我决定选用 pandoc 所支持的语法。连 pandoc 也不支持的写法,就要冒不小的将来无法编译的风险了,需要将最终结果转存为别的格式以防万一。
  • 第二个问题是,如果在 markdown 上扩展过多的新语法,同时又坚持 markdown 的设计原则——一切标记尽可能地简短不影响阅读,那么就不得不去记忆眼花缭乱的各种特殊符号的含义。这时 LaTeX 的各种宏虽然写起来冗长,反而易于长期维护。

系统简介

我的这套系统以 pandoc 作为核心,扩充 vanilla markdown 所不支持的各种高级功能。同时使用一系列 VIM 插件来改善在 VIM 上写论文的体验。我所使用的 VIM 插件,在其它编辑器上也可以配置类似功能,参见“其它编辑器”一节的概述。

下面分为 markdown 扩展、VIM 写作环境和编译系统三部分来概括。

markdown 扩展

  • LaTeX 公式支持:pandoc 自带,需要安装 LaTeX
  • 表格支持:pandoc 自带
  • BibLaTeX 文献引用支持:pandoc-citeproc 插件(最新的 pandoc 已经自带)支持 markdown 插入引用。Zotero 管理文献,Zotero 的 Better BibTeX 插件用于连接 Zotero 和 VIM、pandoc 编译系统。
  • 标题、图表的编号和交叉引用:pandoc-crossref 插件

VIM 写作环境

编译系统

  • 使用 Makefile 管理文稿、图片与输出的最终 PDF 文件之间的更新关系。我使用 GNU make,因为微软的 nmake 功能实在有点少。
  • 为了在 VIM 后台编译文档,使用 VIM 插件 asyncrun.vim
  • 使用 Sumatra PDF 预览生成的 PDF,因为它轻量而且不会对 PDF 文件上锁,在 PDF 文件被更新之后可以实时更新预览

其它编辑器

本文使用 VIM 主要是因为习惯了 VIM 文本编辑的按键绑定。如果读者对于 VIM 并无偏好的话,也可以使用其它编辑器。自然,和 VIM 齐名的 Emacs 是可以配置出本文“VIM写作环境”一节所说的各种改进,不再详谈。当然,Atom 和 VSCode 也可以在配置插件之后做到类似的效果。对于懒得配置各种编辑器插件的人来说,我推荐 Zettlr,它直接解决了本文中涉及的许多问题,如 Zotero 支持、表格绘制、拼写语法检查等。不过读者大概已经发现了,本文推荐的所有东西都是开源软件。对于自己的论文这种重要的东西,使用开源软件更不容易在多年之后发现自己无法正确编译自己的论文。

功能配置

pandoc 安装与插件配置

pandoc 可以从官网直接下载安装。也可以使用系统的包管理器安装。Windows 用户也可以使用 scoop 这样的第三方包管理器。安装完成之后,为了调用方便起见,最好加到系统的 PATH 里。

pandoc-citeproc 在最新版的 pandoc 中已经自带,无需额外下载。pandoc 主体和 pandoc-citeproc 对于 markdown 语法的扩充详见官方帮助。对于论文写作来说,特别需要的几点扩充分别是:表格脚注数学公式引用文献格式。这些都可以手写,但是许多文本编辑器都可以配置一些快捷键,就不用记忆和手敲这些东西,便捷程度接近 Word。尤其是引用文献,手写起来非常麻烦。在下一节会详细介绍我的配置。

pandoc 本身没有包含交叉引用的功能。pandoc-crossref 这个 pandoc filter 可以实现这些功能。直接去它网页依说明下载安装即可。需要注意的是,如果下载已经编译好的版本,需要下载和自己的 pandoc 版本相对应的版本。有了这个插件就可以实现公式、图表、标题的交叉引用,还可以实现一个图表中插入多个子图。读者可自行参详其帮助。

如果需要使用 pandoc 生成 tex、PDF、Beamer 演示文稿,需要在系统中安装全套 LaTeX。我建议读者直接安装 TeXLive 发行版。不要安装2018版,2018版里有个 bug 需要升级一下或者手动修理。现在 2019 版还是比较稳定的。TeXLive 中带有很多 engine,我推荐使用 xelatex 作为 PDF 输出引擎,否则文档中有非拉丁字符的话容易出 bug。

具体的 pandoc 命令,可以参考下面章节中我的一键编译系统的 Makefile 中相应命令。

pandoc 编译生成 PDF 时可以套用各种 LaTeX 模板。我使用并修改了这位哥们的模板:phd_thesis_markdown

设置 Zotero 引用文献

Zotero 用于管理参考文献非常好用。使用别的文献管理软件的人,我就不知道怎么搞了。

Zotero 的 Better BibTeX 插件有很多非常有用的功能。在这些我们主要用到它的两个功能:

  • 生成一个实时更新的 BibTeX 文件,这样在 LaTeX 或者 markdown 文档中就可以方便地引用。没有这个插件的话,每当 Zotero 中新加一篇参考文献,就得手工编辑一下 bib 文件,这就很麻烦。
  • 在文本编辑器中一键呼出 Zotero 的检索条,输入搜索关键词之后直接插入 citation 到光标所在位置。

后者的效果已经在前文中展示过。

一键搜索引用文献

Better BibTex 的帮助中,对于如何在各种文本编辑器中设置一键搜索引用有详尽的说明,见此链接。对于 VIM 来说,将此帮助中的代码插入 vimrc 即可。特别需要指出的是,Windows 用户需要安装 curl 才能让那段代码正常工作。我觉得用 scoop 安装 curl 会比较省心。

配置VIM 写作环境

这里主要介绍几个 VIM 插件的用途和配置方法。

vim-pandoc

VIM 插件 vim-pandoc vim-pandoc-syntax 是一套比较好的支持 pandoc 扩展 markdown 语法的 VIM 插件。主要功能有:语法高亮、将公式上标下标直接以上下标字体显示在 VIM 中、一键编译(我自己是出于别的目的另配了编译系统)、目录、章节跳转、各种快捷键等。

如果没有安装 VIM python 支持的话,这两个插件只能使用一些基本功能。虽然说基本功能对于大多数用户也完全够用了。如果准备长期使用 pandoc 写作的话,建议安装 VIM 的 python 支持以使用这个插件的全部功能,增加工作效率。

VIM 的 python 支持安装起来非常麻烦。因为必须和编译 VIM 时所用的 python 版本完全一致。这就意味着往往需要在操作系统里已经装的 python 之外再安装一个低版本的 python。安装完之后再在 vimrc 里配置 pythonthreehomepythonthreedll 两个变量。详见本文末尾我的 vimrc。如果中文互联网上没有好的介绍 VIM python 支持的文章的话,或许哪天我另写一篇。

下图显示了使用此插件查看论文大纲的样子:

显示论文大纲

vim-table-mode

vim-table-mode 这个插件主要是为了解决在 markdown 中绘制表格特别麻烦的问题。Emacs 中有 table-mode 非常好用,所以有人写了一个 vim-table-mode。

使用起来非常简单,像 Emacs table-mode 一样,开启之后在一行开头输入 | 之后它就会自动排版和伸缩表格。这样的话,在 VIM 中画表格反而比在 Word 中还快。

thesaurus_query.vim

thesaurus_query.vim 是一个同义词查询插件。写英文论文的时候,同义词查询太重要了!有了这东西就再也不用搜索枯肠去想哪个词最贴切。有时候明明觉得有一个词适合用在此处,但是就是想不起来,翻汉英词典太慢,还经常查不着。这时候就可以直接先敲一个能想出来的小学英语级大俗词,然后检索一下同义词,从里面选一个即可。

效果如下图所示:

同义词检索替换

Goyo

goyo 是一个让写作时排除干扰的插件,开启之后写作界面就特别清爽。

拼写语法检查

拼写检查是 VIM 自带的功能。在 vim-pandoc 中也是默认对正文开启而对代码区块关闭的。如果需要手工开启的话,输入 :set spell 命令即可。写东西时可以用 Ctrl-x s (先按下 Ctrl-x,再按下 s)来对上一个标红的单词进行更正,效果如下图。

拼写自动更正

语法检查就要麻烦一些。我用的是 vim-grammarous 这个插件。它调用了 LanguageTool 来对文本进行语法检查。

LanguageTool 是许多开源 Office 类软件如 LibreOffice 中常用的语法检查器。使用 vim-grammarous 这个插件的话,不能使用 LanguageTool 的在线版,而需要安装它的开源本地版。安装 LanguageTool 需要先安装 Java 运行环境。

配置一键编译和预览

Makefile 系统

使用 markdown 或者 LaTeX 写文章的好处之一就是,如果文章中的图表因为种种原因需要更新(比如说补充数据),不需要大费周章一个个重新拖到文档里,直接重新编译一下就好。我甚至让我的程序直接输出图表到我的文章目录下,运行完程序图表就自动更新。同样,我们也可以在多份文档,比如说幻灯片、海报、报告、期刊文章中使用同一组图片,而不需要把它们到处复制来复制去。

在这种情况下,使用 Makefile 来管理各种更新依赖关系就特别方便。无论是文稿本身、文稿中的图片、还是某个模板文件被修改,都可以触发重新编译。

在我的 Makefile 当中,我主要做了几件事:

  • 定义了 bib 文件的路径、LaTeX模板、pandoc 编译选项等全局变量
  • 定义了 tex、PDF、docx 等输出 target
  • 文章、海报、幻灯片被统一管理起来

我的 Makefile 写的有些复杂,读者未必需要其中所有的功能。故而附在文章最末。

如果读者不会写 Makefile 的话,也可以不用 make,而直接使用 vim-pandoc 中提供的编译文档工具,或者手工编译。那样的话,编译命令未免有点长,还是写个脚本方便一点。

LaTeX 模板

因为我这次并没有向期刊投稿的需求,所以就套用了一个非常普通的模板 phd_thesis_markdown。读者可以研究修改模板文件。

一键编译和预览

为了能够在 VIM 后台一键编译,我使用了 asyncrun.vim 这个插件。配置一下,无论是运行 make 命令还是别的编译命令都很方便。读者可参考我的 vimrc。

预览 PDF 我用的是 Sumatra PDF,因为 Adobe PDF 会锁住 PDF 文件。用 Adobe PDF 打开的文件,其它程序无法修改,也就无法在预览的同时进行任何修改。Sumatra PDF 没有这个问题,PDF 文件被修改之后它会实时更新。效果如下图:

编译预览结果

当然,我弄这一套,是因为那时候还没有 Windows 下比较好的 VIM markdown 预览插件。现在的话,读者可以考虑 markdown-preview 之类的插件。曾经这个插件是不支持 Windows 的。当然,这个插件预览的是 HTML,和 PDF 显示效果会有一点差异。

附录

对于以下附录,如果需要代码高亮的话,可查看 GitHub 版本

我的 vimrc 中相关设置

下面是我的 vimrc。vimrc 文件中双引号 " 起头的是注释

" 设置中文折行显示和 gq J 时不加空格, 其中 M 在新版 VIM 中已经默认有了
set formatoptions+=mM

" 设置 VIM 的 python 支持以启用一些 VIM 插件的全部功能。读者应自行修改路径
" 事实证明 VIM 非常聪明,能认反斜杠。路径字符串不要加引号,加了会出错!
set pythonthreehome=C:\tree\HighSmall\Python36-32
set pythonthreedll=C:\tree\HighSmall\Python36-32\python36.dll


" Zotero Better BibTex 设置
function! ZoteroCite()
  " pick a format based on the filetype (customize at will)
  let format = &filetype =~ '.*tex' ? 'citep' : 'pandoc'
  let api_call = 'http://localhost:23119/better-bibtex/cayw?format='.format.'&brackets=1'
  let ref = system('curl -s '.shellescape(api_call))
  return ref
endfunction

noremap <leader>z "=ZoteroCite()<CR>p
inoremap <C-z> <C-r>=ZoteroCite()<CR>

” 插件设置
call plug#begin()
Plug 'vim-pandoc/vim-pandoc-syntax', { 'for': 'markdown' }
Plug 'vim-pandoc/vim-pandoc', { 'for': 'markdown' }
Plug 'dhruvasagar/vim-table-mode', { 'for': 'markdown' }
Plug 'ron89/thesaurus_query.vim'
Plug 'rhysd/vim-grammarous'
Plug 'junegunn/goyo.vim'
Plug 'skywind3000/asyncrun.vim'
” 下面两个曾经对于 Windows 用户没用,所以注释掉了。现在新版据说 Windows 可用
" Plug 'iamcco/mathjax-support-for-mkdp', { 'for': 'markdown' }
" Plug 'iamcco/markdown-preview.vim', { 'for': 'markdown' }
call plug#end()

" 设置按 \ s 键自动更新文档并编译
noremap <Leader>s :update<CR>
au filetype pandoc au BufWritePost *.md :mks! |:AsyncRun make

" 设置引用文献库的位置,请自行修改
au filetype pandoc
    \ let g:pandoc#biblio#bibs = ['C:\abc\efg\BetterBib.bib']

我的 Makefile

变量定义

通用变量定义部分我是写到一个单独的文件,再 include 进来的。读者不一定需要这种写法。此外,其中的各种路径请读者修改为实际路径。

Makefile 文件中 # 开头的一行是注释

# Here we set a variable to indicate we are using Windows
WINDOWS=1

# command to open pdf. If it is running, don't open again. Please change path
OPEN_PDF=powershell -c "if(-Not(Get-Process -Name SumatraPDF -ErrorAction SilentlyContinue)){ start C:\abc\def\SumatraPDF\SumatraPDF.exe $(DOCNAME).pdf}"

# command to open pdf in Linux. If it is running, don't open again.
# OPEN_PDF=if pgrep "pdf" >/dev/null; then pdfviewer $(DOCNAME).pdf&; fi

# location of bib file. Please change path
GLOBAL_BIBFILE=C:\abc\def\BetterBib.bib

# define python command and pandoc command, if they are not in path, specify them here
PY=python
PANDOC=pandoc
PANDOC_COMMON_OPT=-F pandoc-crossref --number-sections

# set bibtex option for pandoc
BIB_OPT=--bibliograph="$(GLOBAL_BIBFILE)"

# OS specific part

# for windows and nmake, use below
ifdef WINDOWS
# this is for non utf-8 terminal. Pandoc only work in utf-8
OS_OPTION=chcp.com 65001
# in case of MSYS make, del is not recognized
RM_CMD_HEAD=powershell -c "rm 
# define directory path
BASEDIR=.
RMTEX=powershell -c "rm tex2pdf* -r -fo"

else
# for *nix, use below
# no need to change code page
OS_OPTION=echo nothing
# since powershell need the double quote, have to add this too
# simple rm -f quote *.pdf cannot delete it
# add -f to omit error messages
RM_CMD_HEAD=bash -c "rm -f
BASEDIR=$(CURDIR)
RMTEX=rm -rf tex2pdf*
endif

# define image files path
IMAGEDIR=$(BASEDIR)/images

# define style files directory
# Pandoc can use both / and \ to find files, no need to change path separator
STYLEDIR=$(BASEDIR)/style
TEX_TEMPLATE=$(STYLEDIR)/template.tex
TEX_HEAD=$(STYLEDIR)/preamble.tex
HTML_TEMPLATE=$(STYLEDIR)/template.html
REF_STYLE=$(STYLEDIR)/ref_format.csl
BEAMER_HEAD=$(STYLEDIR)/preamble_beamer.tex

定义几个文档文件名(具体来说,可能会有海报、文章、报告等)

DOCNAME=paper_name
DOCNAME2=slides_name

文章 PDF 输出

这是一个示例。读者如果没有拆分多个 Makefile 的话,可以去掉 dependency 中的 make/target.mk

在这些指定了,如果 markdown 源文档、Makefile 本身、各种模板文件、图片附件目录产生改变的话,就重新编译文档。

$(DOCNAME).pdf: $(DOCNAME).md makefile make/target.mk \
       $(STYLEDIR) $(TEX_HEAD) $(TEX_TEMPLATE) $(REF_STYLE) \
       $(IMAGEDIR)
    $(OS_OPTION)
    $(PANDOC) $(DOCNAME).md \
        -o $(DOCNAME).pdf \
        $(PANDOC_COMMON_OPT) \
        $(BIB_OPT) \
        -H "$(TEX_HEAD)" \
        --template="$(TEX_TEMPLATE)" \
        --csl="$(REF_STYLE)" \
        --pdf-engine=xelatex \
        --verbose

文章 tex 输出

这里我定义了两个 tex 输出,一个是完整版,可以用 latexmk 编译生成 PDF,一个是只包含文档主体,没有套用任何模板的 tex 文件,方便手工套用其它 LaTeX 模板。

$(DOCNAME).tex: $(DOCNAME).md makefile make/target.mk 
    $(OS_OPTION)
    $(PANDOC) $(DOCNAME).md \
        -o $(DOCNAME).tex \
        $(PANDOC_COMMON_OPT) \
        --biblatex \
        --pdf-engine=xelatex \
        --verbose

$(DOCNAME)_full.tex: $(DOCNAME).md makefile make/target.mk \
    $(STYLEDIR) $(TEX_HEAD) $(TEX_TEMPLATE) $(REF_STYLE)
    $(OS_OPTION)
    $(PANDOC) $(DOCNAME).md -s \
        -o $(DOCNAME)_full.tex \
        $(PANDOC_COMMON_OPT) \
        $(BIB_OPT) \
        -H "$(TEX_HEAD)" \
        --template="$(TEX_TEMPLATE)" \
        --csl="$(REF_STYLE)" \
        --pdf-engine=xelatex \
        --verbose

文章 docx 和 HTML 输出

这两个没什么说的。就是发给不喜欢 LaTeX PDF的人看文章用的。

$(DOCNAME).docx: $(DOCNAME).md makefile make/target.mk \
    $(IMAGEDIR)
    $(OS_OPTION)
    $(PANDOC) $(DOCNAME).md \
        -o $(DOCNAME).docx \
        $(PANDOC_COMMON_OPT) \
        $(BIB_OPT) \
        --verbose

$(DOCNAME).html: $(DOCNAME).md 
    $(OS_OPTION)
    $(PANDOC) $(DOCNAME).md -s \
        -o $(DOCNAME).html \
        $(PANDOC_COMMON_OPT) \
        $(BIB_OPT) \

Beamer 幻灯片输出

$(DOCNAME2).pdf: $(DOCNAME2).md makefile make/target.mk \
       $(STYLEDIR) $(REF_STYLE) \
       $(IMAGEDIR)
    $(OS_OPTION)
    $(PANDOC) $(DOCNAME2).md \
        -t beamer \
        -o $(DOCNAME2).pdf \
        $(PANDOC_COMMON_OPT) \
        $(BIB_OPT) \
        -H "$(BEAMER_HEAD)" \
        --csl="$(REF_STYLE)" \
        --pdf-engine=xelatex \
        --verbose

通用 target

这里设置了几个用于清理文件、编译全部文件之类的通用 PHONY 目标。其中 default 应该放在最前面,是执行 make 命令时希望默认执行的目标。因为我大部分时候并不需要编译 docx、html 之类的格式,默认目标我只设置了编译 PDF 并预览。

default: $(DOCNAME).pdf
    $(OPEN_PDF)

all: $(DOCNAME).pdf $(DOCNAME).tex $(DOCNAME)_full.tex \
    $(DOCNAME).docx $(DOCNAME).html

help:
    @echo "make" to compile pdf and view it
    @echo "make all" to compile pdf, html, docx and tex
    @echo "make $(DOCNAME).tex" to get parital tex to paste to overleaf
    @echo "make $(DOCNAME)_full.tex" to get complete tex file
    @echo "make $(DOCNAME).docx" to get docx
    @echo "make $(DOCNAME).html" to get html
    @echo "make clean" to remove all output documents
    @echo "make help" to display this help


cleantex:
    $(RMTEX)


clean: cleantex
    $(RM_CMD_HEAD) *.pdf"
    $(RM_CMD_HEAD) *.tex"
    $(RM_CMD_HEAD) *.docx"
    $(RM_CMD_HEAD) *.html"


.PHONY: default all clean help cleantex 

要不要买新 iPhone SE

问题分析

手持初代 iPhone SE,迄今已经快四年。它是过去几年中买的最值的电子产品之一。年年都传说苹果要发下一代 SE,传了四年,新 SE 终于发布。但是看着手里还没坏的旧手机,反而更加纠结了。

分析了一下这个问题,要不要换主要取决于两个问题:

  • 当前的手机及其配套工具链还能撑多久?
  • 新的手机或替代工具链什么时候能出来?

进一步回答这两个问题,需要列举一下当前手机可能的升级替代方案。然后可以细化可能的方案

  1. 将来换一个新手机
  2. 保留当前手机或者一个较便宜的手机随身,将其它需求分散在 iPad、PC 等其它设备上

我的需求

细化升级替代方案还需要考虑我对手机的需求。

目前我手机的主要用途有:

  • 打电话收短信
  • 微信、知乎之类的毒瘤 app。回国的话还需要淘宝、支付宝、京东
  • 外出时需要地图
  • 播客、音乐播放等
  • 日历、待办事项、邮件等经典 PIM 应用
  • 随手拍照存档、生活记录
  • 随手查询信息,包括但不限于:浏览网页、查找百科词典

显然上述使用是相当轻度的,手机并不居于我数字生活的中心位置。结合上述用途,我对手机的需求,依重要性排序如下:

  1. 为了制住毒瘤 app,稳定不折腾,也为了一些手头只兼容 iOS 的设备,我只买 iPhone
  2. 因为仅是轻度使用,价格越便宜越好
  3. 因为手机存储有大量敏感个人信息且一直联网,系统必须保持最新
  4. CPU 性能只需要能够流畅打开毒瘤 app 即可。实际上,只需要能快速打开微信。所以要求并不高
  5. 不打游戏不看视频,喜欢单手握持打字,屏幕越小越好
  6. 虽然我有相机,但是如果手机照相功能比较强大的话,还是很方便的。这并不是一个必需项
  7. 容量上,在不过分提高价格的前提下,越大越好,省得浪费时间删东西
  8. 有防水会比较方便。没有也可以接受

可选方案

由上,限定 iOS 的话,可选方案就只有 iPhone 和 iPad 的组合了。在当前,两代 SE 之外的 iPhone 价格太贵,违反需求2,从方案中排除。那么只有这四种可能方案:

  1. 买最新版 iPhone SE 128G
  2. 当前手机留用,将来买 iPad 补足需求
  3. 当前手机坚持到第三代 SE 上市
  4. 当前手机用到不能用,届时更换那时最便宜的 iPhone

这里隐含的一点假设是,上述四种方案哪一种在第三代 SE 上市后都会重新估量是否要换机。

那么,比较这几种方案,有两个很重要的因素:初代 iPhone SE 什么时候就不能用了?第三代 SE 什么时候会上市?

未来预测

当前手机的剩余使用时间

这个问题取决于几个因素:苹果对现在手中手机的支持时间;下一个不得不换机的重大需求节点或者技术节点

苹果对手机的支持

理论上手机当然可以在箱子里放无限久,但是苹果并不会给老设备提供最新的 iOS 系统。过时的 iOS 系统暴露于互联网上会有安全风险。对于看重安全性的用户来说,不能使用最新 iOS 系统的设备就不应该再作为主力设备使用了。

就过去来看,苹果一款手机上市之后,一般会在四年多的时间里一直可以使用最新 iOS 系统。四年多的支持力度相对于 Android 手机来说已经算非常长了。如果按这个预期来算,上代 SE 和 2015 年发布的 6s 属于同一代,从 6s 起算,已经超过了四年,随时有可能停止支持。

但从另一个角度说,苹果自从前两年被大家骂“一升级系统手机就变卡”、“新机一上市老机器就变卡”之后,为了挽回形象,这两年的新系统已经没有上述现象。iOS 11-13 越升级越流畅、手机剩余存储空间越多;老池老化降频也变成了一个可选选项。也不好说苹果会不会继续保持目前的良心:只要硬件还跑得起来,就提供最新系统。

对此我们可以参考前两代被停止支持的机器。根据网友汇总,使用 A7、A8 处理器的 5s 和 6 于 2019 年止步于 iOS 12,恐怕主要原因是它们只有 1G RAM。同样使用 A8 处理器的 iPad mini 4 却仍然可以收到 iPadOS 13。再上一代是使用 A6 处理器的 5 和 5c,止步于 iOS 10。它们被抛弃的主要原因是 A6 处理器还是一个32位处理器。

如果这样看的话,似乎 SE 所用的 A9 处理器和 2GB 内存并不构成升级新操作系统的障碍。如果苹果大发善心的话,也许还可以再战数年。但从苹果的利益来看,对老机器一直保持支持显然不利于新机器的销售,找个莫须有的理由不再支持 A9 处理器这代机器也不是没有可能。

好在 iOS 14 的开发者预览马上就要出来了。如果 iOS 14 依然支持老 SE,就多了那么一点理由去相信苹果不会无故放弃老设备。如果 iOS 14 就已经像许多传言所说那样抛弃了 SE,SE 作为主力机的生命周期就将停止于今年秋季。

同样,虽然 7、8 的用户肯定不用担心今年秋天就没有新 iOS 可用,但是观察一下 iOS 14 对于 6s 和 SE 的支持也可以帮助猜测苹果是否会在发布四年多后停止自己手机的支持。

下一个智能手机换机节点

像我这样的老 SE 钉子户总觉得这两年智能手机的发展殊无新意,所以没有换机的动力。而 2007-2015 年那几年,每一两年都有不得不换机的重大变革:电容触屏、3G、4G、GPS、不断提升并消灭掉消费级卡片机市场的手机摄像头、还有越来越吃性能的各种 app。这些变革大多是不得不跟进的。还有一些可跟可不跟的东西,如智能手表、无线耳机,也在催促人换机。

近几年来,智能手机的技术升级越来越落在我们这些实用主义者觉得无关紧要的地方:全面屏、三摄四摄五摄和快充。在乎这些的人,本来也不是新 SE 的受众。

对于手持旧 iPhone 的人,恐怕最重要的事情是:什么时候旧手机就会卡到不能用?我倾向于认为,日常高频应用受制于电池容量问题,不太可能继续无止境地索取 CPU 性能。初代 SE 仍然可以在相当长时间内维持得过去的使用体验。无非是新机2秒打开一个 app,旧 SE 需要4秒打开,并不会到不能忍受的程度。

在可见的未来,智能手机的新卖点有几个:5G、折叠屏和类似 Google Glasses 一样的新一代随身设备。

5G 在欧美普及还需要两年以上,在 5G 普及之后智能手机上 5G 的 killer app 才会逼得大家不得不换 5G 手机。现在来看,喜欢用手机看网络视频的人本来也不是 SE 这种小屏手机的目标用户,高清视频这条需求可以划掉。另一个可能的趋势是大量 app 和游戏改在云端渲染,减少本地的压力。这样的话似乎买高端手机的人亏得更厉害。最后一点是无处不在的 AR,目前还很难说它到底会有多大的应用前景。考虑到 WiFi 下的 AR 直到今天也没弄出什么杀手级应用,我对于 5G 时代能出现什么样的全民 AR 应用表示谨慎怀疑。综上,在 5G 这一点上,我认为老 SE 和新 SE 都还有至少两到三年的好日子。

折叠屏是另一个非常影响用户体验的新技术。考虑到 app 生态的话,估计大部分 app 会在摊开后使用 Pad 版界面,合上后适配手机版界面。那么传统直板手机倒不会说不能用,只是不够酷,用着不爽罢了。需要指出的是,折叠屏手机为了电池续航,目前仍然无法减少重量,折上之后是相当笨重的。

最后,如果 Google Glasses 什么的真的在 5G 时代流行起来了,我觉得现在所有手机都会成为过时的古董。不过由前所述,恐怕在三年之内也不太可能。

综上,从下一个“不得不换”的换机节点来考虑,无论新 SE 还是老 SE,在3年之内似乎都不用太着急。

下一代低价 iPhone 的推出时间

第一款低价 iPhone 是 iPhone 5c。然而卖得并不好。初代 SE 是第一代成功的低价 iPhone,主要收割了一批小屏爱好者。由于 5c 过去没两年,初代 SE 之后就年复一年地传二代 SE 的谣言。结果一等就是整整四年。

这有几个原因。首先是小屏手机的市场急剧边缘化。由于耗电 app 越来越多,手机不得不做得越来越大以增加电池容量;同时大部分用户用惯了大屏就不想用回小屏。仅仅因为想买一款小屏手机而想买新 SE 的用户还是太少,不足以让苹果单独推出一款手机。但更重要的是,苹果当初用 SE 收割了大批还在使用 4S 到 5S 不愿意换机的钉子户。而在初代 SE 推出之后的两年,新的 SE、6s 钉子户换机的动力却不高。新 SE 拖了四年才登场,一次收割从 iPhone 6 到 iPhone 8 的钉子户。虽然说新 SE 的升级并不明显,但是再不推出新 SE 的话,这些钉子户有相当大一部分可是要转投 Android 去了。

从苹果利益最大化来看,下次推出低价 iPhone 估计还是得等到能一波清掉一大堆钉子户的时候。如果智能手机技术继续停滞的话,我们至少需要等四年。即使是出现了新的杀手级应用,如前所论,也大概率是在该应用已经快普及的时候才会推出,怎么也是三年之后的事情了。

方案比较

由“换机节点”一文来看,在任何一种必须换机的理由下,iPad 都不会比手中目前的旧 SE 用得更久。仅在苹果停止 iOS 支持这种场景下 iPad 可以多撑一段时间。


假设场景1:苹果一直支持旧 SE 或用户不在乎安全性。3年之后 5G 逼人不得不换手机

  • 当前手机再撑3年,需要换一块电池,只需要45刀
  • 买新 SE 需要450刀,3年之后还是得换

在此种场景下,400刀差价提供了3年更加流畅的使用体验。


假设场景2:苹果支持旧 SE,但是 5G 并未催生杀手级应用

那么新 SE 就可以使用四年,且旧 SE 可能需要换第二次电池。350刀差价提供了4年更加流畅的使用体验。


假设场景3:苹果放弃支持旧 SE,且用户在乎系统安全性

如果苹果在1年之内明确放弃支持旧 SE,那么直接上船新 SE 即可。新 SE 可以使用两到四年(取决于下一波换机潮是否在3年后发生),怎么也比买 iPhone 11 系列划算。买 iPhone 12 系列同样对于轻度使用者是亏的——哪怕它支持 5G,指望 AMOLED 屏幕用8年也相当不现实。

如果苹果在2年后放弃支持旧 SE,刚好在新 SE 下市节点前后,这是最麻烦的。
无论是两年后买新 SE 还是直接买 5G iPhone,都比现在就入手新 SE 亏。买新 SE 的话,只剩一到两年就该考虑升级;买 5G iPhone 的话,年均使用成本太高。最佳策略就是现在立刻上船新 SE。

值得指出的是,由于新 SE 价格如此低廉,仅从经济帐上算,买一个 iPad 来逃避苹果的系统升级周期完全不比现在就买新 SE 更划算。但是,这样干(iPad 做主力机,旧手机只打电话)的话,你就多了一个平板可以用哇!觉得一定要买一个平板的人可以考虑这种方案。


综上,对于在意系统安全性的老 iPhone 钉子户,只要苹果确定在2年之内放弃支持旧 SE,现在立刻入手新 SE 就是最佳方案。即使考虑到苹果有发善心的可能,不确定是否会放弃支持,现在就入手新 SE 总不会是最坏的情况。

对于不在乎系统安全性的用户,是否要上船新 SE,取决于用户认为每年付100多刀买一个更流畅的手机是否划算。

就我自己来说,假设场景2和假设场景3是我认为最有可能发生的事情。总之,现在买新 SE 并不亏。几年一度的“苹果税”啊……

这里所说的“现在”不等于要立刻抢购,想观望一下 iOS 14 是否会支持旧手机的话完全可以观望一下。当然,现在买红色版新 SE,相当于为新冠疫情捐款送手机!这个机会是过了这村没这店了。虽然我也不知道这种“捐款”能不能抵个人所得税,我怀疑只能抵苹果公司自己的税。

梦中梦一则

今天早上做了一个梦中梦。梦见 Trump 总统躺在担架上,据说是死于新冠病毒。他脸色一如既往地红润,一头金毛还如平常一样地不羁,只是难得地闭上了他的嘴,显露出半是不屑半是安详的神色。遗体身着黑色西装,脚上却没有鞋子。我被人叫来把他抬走,却没有人给我口罩,我并不抱怨,内心感到非常平静。

一睁眼发现我在一张床上,宿舍区的美国大妞们完全没有保持 social distance 而在大喊大叫跑来跑去。一个两年没见的老朋友远远喊我赶紧下床出去吃饭,我在床上懒洋洋地应着:“刚刚我梦见特朗普死了!这么好的梦,谁愿意醒啊!”

似乎意识到特朗普之死不过是一个梦,这个梦也就不美,于是我真正地醒来,回到了自己的床上。

使用 VLC 举办在线观影活动

上一篇 讲了使用 SyncPlay 和朋友一起看电影的办法。这篇讲一讲使用 VLC 串流播放电影的办法。

大体来说,这种办法类似于以前一度流行的网络电台。一个主持人负责开设视频流服务器,其它人连上去即可收看。主持人这边的配置略需要折腾,但参与者那边是比较轻松的,只要往播放器里填一个地址就行。用这种方法和朋友分享电影也有一些缺点。除去主持人这边设置有些门槛(本文就意在消除这种门槛)外,对网络条件要求颇高,要是有几十个朋友一起看的话,恐怕谁家的网络都支撑不住,只适合三五好友一起观影。虽然说播放进度是同步的,但是主持人按播放和暂停之后,都要等小一会儿所有人的屏幕才会有反应,这种延迟也是其它方法没有的。

VLC 是一款很流行的开源媒体播放器。本来叫作 VideoLAN Client,从名字可以看出 VideoLAN 这个计划本来是为了提供一套在网上串流分享视频的工具,播放器只是它的 client 端。后来它的 client 端使用的人越来越多,其 server 端的功能也被整合到播放器里,播放器遂改名为 VLC Player。

整合之后,VLC 的在线串流功能和转码功能是做在一起的。在线串流不过是转码的一个特殊应用——区别仅仅是输出。转码的输出是文件,而串流的输出是一个网络视频流。这项功能的使用并不复杂,界面也还算简单,唯一不好的地方是,虽说顺的时候很顺,一路鼠标点点点就可以过去,可是有时候也会掉坑,想从坑里爬出来的话就需要点技术知识,自带的帮助实在不算友好。

所以写这篇短文介绍一下基本操作和常见的坑。

基本操作

基本操作网上图文教程很多,就不写太细了。

  1. 启动 VLC 之后,Media 菜单选择 Stream,弹出 Open Media 对话框,按 Add 按钮添加需要播放的视频文件。如果电影文件不止一个,可以依次添加。然后按 Stream 按钮开始串流设置向导。
  2. 点 Next,出现协议选择对话框。一般选择 HTTP 协议,然后点击 add 按钮。端口和路径可以使用默认值,也可以自行修改。
    step 2
  3. 下一步是转码设置。可以选择转码或者不转码。这是最容易掉坑的地方,下文详细讨论。一般来说,如果收看的人网络条件都不错,不想占用 CPU 的话就不要转码。
    step 3
  4. 最后确认所有参数并点击 stream 按钮,VLC 会开始播放视频,但是窗口是黑色的。此时可以在另一个 VLC 或者其它播放器中打开 http://IP地址:端口号 来访问以验证服务是否启动成功。将此地址分享给朋友之后,朋友就可以在视频播放器上使用此地址观看视频
    step 4
  5. 在播放时,只有主持人可以拖拉进度条、播放和暂停。其它人只能选择看或者不看。需要一起语音聊天讨论剧情的话,另外开一个语音聊天软件就可以。

也可以通过命令行的方式来启动服务,复制第4步中显示的命令行参数并保存,即可在下次使用命令行直接启动服务。命令行大致形如: vlc 文件名 转码输出参数

官方的帮助见 Streaming HowTo New

FAQ

  1. 如何获得用于分享给别人的播放地址?

    播放地址分为两部分。一个是 IP 地址或者域名,一个是端口号。
    如果服务端和播放端都在同一个局域网,或者服务端有公网 IP,那么直接使用服务端的 IP 地址即可。Windows 下可以在 cmd 中敲 ipconfig 获得 IP 地址。Linux 下可以用 ip a 命令查看 IP 地址。有自己域名的人可以把域名绑定到 IP 上方便记忆。不过我想有域名的人都不需要人教如何查看 IP 地址。
    如果服务端在路由器后面的话,参见下面一个问题。
    端口号就是第2步所填写的端口号。默认是 8080。

  2. 电脑在路由器后面怎么办?

    如果运行服务的电脑在路由器后面,播放视频的朋友不在同一个网段,就得配置端口转发。当然如果就是在自己家里播放,自己家里收看,无须做端口转发。
    登入路由器的管理界面之后,设置一条端口转发规则,将一个对外的 TCP 端口A转发到自己开设服务的电脑上 VLC 所侦听的端口B。B端口就是第2步所设置的端口,默认是 8080。
    填写端口转发规则时,对外端口可以随便填,推荐大于 1024,但是不能大于 65535。转发的目标 IP 如前一问所述,可以通过 ipconfig 或者 ip 命令查看。
    port forward
    在和人分享播放地址时,IP地址要填写自己路由器的公网地址(可以通过访问各种显示当前 IP 的网站来查看自己的 IP。比如说直接在 Google 里搜索 “My IP address”,Google 就会告诉你。),端口号要填写被转发的端口A,而不要填写端口B。

  3. 什么时候需要转码?

    转码会占用相当的 CPU 资源。所以如无必要可以不转码。
    视频码率太高,以至于网络无法负载,视频严重卡顿的时候需要转码。
    照前述基本操作步骤无法观看视频的时候有可能是视频或音频格式不兼容,此时可以试试转码看能否解决问题。值得一提的是 DTS 音轨不支持串流,必须转码。
    蓝光原盘兼具码率过高和 DTS 音轨两个问题,必须转码。详见下节的讨论

  4. 可以使用 HTTP 之外的协议吗?

    可以。VLC 提供的各种串流选项都可以用。只是 HTTP 用的最多,兼容性最强。

  5. 可以挂字幕吗?

    原则上可以。在第3步转码选项中有字幕选项。字幕有软硬两种(英文说法是 Closed Caption 和 Open Caption)。软字幕指的是播放者可以自行决定字幕开关,而硬字幕是直接修改了视频画面。
    软字幕有两种格式选择,硬字幕选项通过勾选 “Overlay subtitles on the video” 实现。
    subtitles option
    我没发现任何一种软字幕选项可以在 VLC 客户端播放,可能有些格式可以在智能电视上播放,但我没有测试。
    如上述,VLC 支持在转码的同时将字幕硬压到视频流中。如果要这样做的话,必须选择对视频进行转码。硬压的字幕只有主持人可以选择字幕,其它人只能接受主持人选择的字幕。主持人在播放时正常在窗口中右键选择字幕即可。

  6. 如何实时监视播出效果?

    实时监视播放效果是必须的。不然岂不是只给别人放电影,自己只能盯着黑屏幕,比电影放映员还惨。
    有两个办法。一个是第4步提到的,再开一个 VLC 窗口,填上播放地址之后进行收看。优点是可以确保自己看到的效果和其它观众看到的效果一模一样。缺点是设置不当的话会占用自己的网络带宽,可以同时支持的观众数目减一。
    另一个办法是在第2步添加 HTTP 协议的时候,勾选 “Display locally”。优点是不会占用网络带宽,缺点是体会不到其它观众的延迟(扶额,这也许不是缺点,只是不能与民同乐)。此外有时会有不明故障,明明别人都可以正常收看,自己却无法看到图像。
    display locally

几个特殊问题

如果按以上步骤操作一切顺利,读者无需查看此节。这里只对一些特殊问题给出解答。

转码的参数设置

在第3步中,VLC 有几个预设好的转码方案。通常来说,第一个 H264 视频/MP3 音频/MP4 封装的选项具有最好的兼容性。也可以根据需要选用其中其它的预设。

如果要修改某个预设,按扳手图标;如果要新增预设,按最右的图标。

视频转码非常消耗 CPU,如果只有音频格式不兼容需要转码,视频不想动的话,可以新建一个仅对音频转码的预设。也可以直接在第4步的命令行参数中删掉 vcodec 选项。

特别需要指出的是,很多时候音频流不仅要看编码,也要看采样率。至少,在很多时候对于来自光盘的 DTS 和 AC3 音轨,使用默认的 44.1kHz 采样率无法正确编解码,需要改为 48kHz 才能让观众正常收听。

VLC 48k sampling rate

视频编码推荐 H264,因为兼容性良好而且相对于 H265 更节省 CPU。如果自信自己的机器性能非常强大,所有观众的播放软件都足够新,可以使用 H265 编码以节约网络带宽。但该 GUI 界面并不能指定使用多少线程进行编码,如有必要用到 CPU 的全部能力,需要在命令行中指定线程数,参见官方帮助示例
视频码率可以不填,VLC 会自动选择一个画质损失不大的码率。视频质量之类的参数不必深究,VLC 使用 FFmpeg 进行编解码,若需要全面了解其参数选项建议研读 FFmpeg 的帮助。

音频编码一般来说 MPEG4/AAC 就足够好了,而且兼容性很好,几乎所有设备都可以播放。MP3、AC3 之类的格式都有点太老了。其它新格式的兼容性不如 AAC。码率可根据个人对音质的要求酌情选择。

蓝光原盘的推荐设置

当源文件为蓝光原盘时,必须转码。原因有二,首先是 DTS 格式音轨无法串流必须做音频转码;其次码率过高,大部分情况下网络无法流畅播放。

蓝光原盘的音轨大多为多声道 DTS 格式。音频转码的时候必须选择 48kHz 采样率,否则没有声音。
也许有人觉得自己网络条件非常好,想只对音频转码而保持视频不转码,但这会遇到严重的音画不同步问题,非常不建议这样做。

软字幕无法正常传送到其它 VLC 客户端,需要在第3步选择将字幕硬压到视频流中。参见 FAQ 第5问的解答。

当然实时转码的话,未免有点损失画质,使用蓝光原盘作为源文件的优点也就没有了。如果希望有比实时转码更好一点的画质的话,建议事先转码,串流播放的时候不转码。
事前转码可以继续用 VLC。但若希望仔细调节码率和画质参数,建议研究FFmpeg,直接使用 FFmpeg 丰富的参数进行定制。懒得研究 FFmpeg 的话,可以使用 HandBrake 这一 FFmpeg 的 GUI 界面。HandBrake 内置了许多预设,可以直接套用。

和朋友一起看电影系列

使用 SyncPlay 和异地朋友一起看电影
使用 VLC 举办在线观影活动

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

近日疫情致令本州下了居家令。不过在居家令之前,本也不敢出门了。线下社交完全停滞,就和朋友们约着在线上一起做些事情。比如线上的 movie night。今晚成功举行了第一次,大家聊得很开心。这里是一份实操指南。和我以前写的指南风格不同,为了将来邀请不那么懂技术的朋友一起看电影,会写得很详细。

在开始正文之前,先列举一下各种在线一起看电影的方法。大致来说,需要两种工具。一种用来同步所有人的播放进度条,方便有人去喝水上厕所时大家聊天等待。另一种用于语音聊天。后者没什么可说的,前者才是难点,可惜并没有什么可以通吃所有视频的方案。

  • 对于 Netflix、Youtube、Amazon Prime 乃至优酷、爱奇艺、B 站等国内视频网站,有许多浏览器插件可以用于同步播放进度。
  • 对于本地文件,有两种方案
    • 一种是我们今天晚上所采用的,每个人在各自电脑上播放视频,使用软件同步播放进度。这是今天的主题
    • 一种是由一个人设置 video streaming server,其它人连上去观看。以前常用 Winamp、foobar2000 来开设或收听 ShoutCast 网络电台的人对此一定不会陌生。就是在网络电台中播放视频罢了。如何使用 VLC 来开设「网络电视台」我会另文详述。PlexKodi 也可以用来这么干,但是这些 Media Center PC 的解决方案未免太重型了。
  • 还有的观影 app 或者服务本身支持多人一起在线观看电影。有些已经死了,现在有一个叫 微光 的 app 还活着。倒是「虚拟电影院」类的 VR 软件颇为不少,有 VR 头显的人可以试试。

有一篇不错的 英文文章 总结了各种工具。其中对于中文互联网常见工具欠奉。比如说,有一个叫 Coplay 的 Firefox/Chrome 插件支持常见的国内视频网站。

好了,开始正题。SyncPlay 是一个跨平台的用于同步各自电脑上视频播放进度的开源软件。支持 Windows Mac Linux *BSD。

使用 SyncPlay 来一起看电影的话,需要如下条件。如果不能满足的话,或应考虑换别的方法一起看电影

  • 将待播放的视频文件预先分发给每一个人。在海外 DropBox 的速度相当不错,国内就得另想办法了。
  • 在每个人的电脑上安装 SyncPlay (不想安装可以用绿色版)
  • 保证每个人的电脑上有至少一个 SyncPlay 支持的视频播放器,比如说 VLC、MPC、mpv。没有的话需要装一个。
  • 准备一个用于语音聊天的平台,用电话、微信、QQ 还是 Skype、Zoom 都无所谓。就我有限的体验来看,似乎跨国视频还是 Zoom 最流畅。
  • 最后是一句废话:需要有一台能上网的电脑。但对网速没有要求

作为最佳实践,在观影活动开始之前,多人观影活动的主持者需要做如下事情

  • 用 Google Docs 或者类似的在线文档平台创建一个公告板,用于汇总本次观影活动的信息。微信群聊的大水很容易淹没通知信息,所以需要一个专门的公告板
  • 将视频文件上传到一个网盘上
  • 在公告板上列出如下信息
    • 放映活动的时间
    • 视频文件的下载地址
    • SyncPlay 的服务器地址和房间名称。
      如果不打算自建服务器的话,可以使用 SyncPlay 官方提供的四个服务器地址。需要详细到端口号(不同端口是不同的服务器)。房间名称可由活动组织者指定任意字词,只要大家都在一个服务器上的一个房间即可同步
    • 语音聊天所用的平台和加入的方法。
      比如说使用 Zoom 的话可贴出 Zoom 链接
  • 其它步骤与普通参与者相同

作为最佳实践,观影活动的参与者需要做的事情如下

  1. 查看组织者所发布的活动公告,并下载视频文件
  2. 如果希望自己晚到时别人等一下自己,可在公告板上留下自己的名字
  3. 安装 SyncPlay 和一个 SyncPlay 所支持的视频播放器。如已安装可跳过此步
  4. 在活动开始前几分钟,关闭电脑上的其它视频播放器窗口,打开 SyncPlay,在其界面中依次填写下列各项
    • Server address 填写活动公告给出的服务器地址
    • Default room 填写活动公告给出的房间名
    • Username 可不填,推荐填写一个方便别人认出自己的名字
    • 如果已经安装了支持的播放器,”Path to media player” 一项应该已经自动填好。如果安装了多个播放器,选一个自己喜欢的。
      SyncPlay start
  5. 点击 “Store configuration and run SyncPlay” 按钮,会弹出一个视频播放器窗口。将准备一起看的视频文件拖入该视频播放器窗口中(而不是 SyncPlay 窗口中)。此时 SyncPlay 窗口右半边显示房间中已有的用户和每个用户播放器中的文件名。请保证自己的用户名后面显示了视频文件名,而非空白。如果不是这样,请重复第 4 步和第 5 步,可能是未关闭所有已有视频窗口。
    SyncPlay ready
  6. 连上语音/视频聊天平台,和所有人打个招呼
  7. 人到齐之后,每个人都勾选 SyncPlay 窗口右下角的 “I’m ready to watch”。然后任意一个人点击视频播放器的播放按钮,所有人的视频就会同步开始播放。
  8. 视频开始播放后,使用音箱的观众应将自己语音聊天的麦克风关闭,以免形成回声。使用耳机的用户不需要闭麦。觉得自己这边环境太吵的人也应当主动闭麦。
  9. 如果使用 Zoom 群聊,将 Zoom 视频窗口最小化,它会自动生成一个悬浮窗。视频全屏播放时不会遮挡这个悬浮窗,方便在看电影时控制自己的麦克风。
    如果麦克风常开,不需要 Zoom 悬浮窗,也不希望视频被 Zoom 的悬浮窗所遮挡,那么不要最小化 Zoom 窗口,直接让播放器全屏即可
  10. 在开口说话之前,看一眼自己的麦克风是否已经关闭。如果关闭的话,先打开麦克风再讲话
  11. 如果需要离开片刻,可以在剧情不紧张的时候按下暂停,和朋友们解释一下后离开。其它人的视频也会暂停,可以用这个时间讨论剧情或者闲聊。

观影活动结束后,建议主持者删除网盘上的视频文件,以保护自身隐私。

总体来说,SyncPlay 这套方案优点很多

  • 完美的跨平台支持,所有人都可以用
  • 对网络条件要求很低
  • 因为视频文件在本地播放,可以有很好的画质
  • 非常稳定,很少出问题
  • 开源软件,可以选择自建服务器,不用担心隐私泄露

但也有一些缺点

  • 每个人都需要下载视频文件。这并不方便,也不总是可行。
  • 需要安装 SyncPlay,略麻烦了一点
  • 语音群聊的时候使用音箱观影的人大部分时候需要闭麦
  • 弹幕功能仅支持 mpv 播放器,所以主要还是和语音群聊搭配使用

和朋友一起看电影系列

使用 SyncPlay 和异地朋友一起看电影
使用 VLC 举办在线观影活动

宅在家里干点啥

国内的疫情局势已经稳定,现在旅居海外的中国人开始和欧美各国人民一起享受禁足宅家的“乐趣”。在家里呆着干点啥呢?询问了一下已经在家里蹲了俩月的国内朋友,发现大家干的有意思的事情还是不少的。

遥想上次因为 SARS 而放假还是初中的时候,那时候颇是过了段快乐的日子。成天自以为是地鼓捣点实验,翻书以为自己做出了什么惊人发现,天气晴好的时候搬着望远镜看星星看月亮,遥望着喜欢的女孩的背影发呆,把老师布置的假期作业用放大镜烧出“垃圾”两个字交了上去却被课代表庇护而没有报告老师。不知道这段时间的禁足会做点什么事情呢?

这篇更多地是一篇写给自己看的东西,算是立些 flags 罢。大概最后不免沮丧地发现大部分预订的目标还是一如既往地没有完成。不过读者倘使有什么好的建议的话,欢迎告诉我。

第一个小目标还是定个容易实现一点的吧:每天不要刷疫情新闻了。现在局势已经日趋明朗:各国都在根据国情努力找到让本国卫生系统不崩溃的办法。如果不打算做点什么的话,安心宅家里就是你好我好大家好。如果实在是精力过剩手头没事干,就去找找什么纾解疫情的活动还缺志愿者。

第二个小目标是放下手机。反正不出门,什么都可以在电脑上完成,正好戒一戒手机依赖症。当然电脑也最好少开几个窗口,专心做点事情。

第三个目标是读一些平时没有时间或者心情读的书。有些平时静不下心看的电影或者戏剧也适合这时候去看看。少看不看知乎和各种已经一泡污的中文 SNS。这两天在看维也纳国家歌剧院和纽约大都会歌剧院的“尼伯龙根的指环”。两家剧院都因应疫情而免费放出历史录像,观后颇有余音绕梁之感,只恨年年惊蛰春分前后总是睡不足,难得有十足精力去尽情领会其中妙味。

第四个目标是每天写点东西。或许是些论文报告之类的“有用”玩意,或者是和友人的邮件闲扯之类的无用文字,思有所得便尽量记下些东西来。年岁日长,记忆日差,大概不能像以前一样把一些主意只是存在脑中在数年中慢慢推演了。

第五个目标是给久未联系的朋友们打个电话聊聊天。与其在手机上和不相干的人就不相干的事情瞎扯斗气,不如和关心的人谈谈人生感悟。

第六个目标是把一些搁置已久的个人小项目完成几个。

最后立一个明知不太可能完成的目标罢:早睡早起。眼见得今天又不能早睡了,哈哈。也不知道这七个目标最后能完成多少。

删文机制的技术讨论

本文包含虚构,如有雷同,也许有巧合。主要讨论相关技术,读者请勿过度联想。

前两天,在某国某知名 app 上,大量网友使用不同方式接力转发一篇“发勺子的人”。然而无论网友用什么办法,图片、竖排、旋转还是译成其它语言,都旋发旋禁。之后有一篇评述此事件的文章“今天是XXXX诞生以来最荒谬的一天”广为流传。

关于此事,解读很多,其中不乏有大胆创新、思路开阔、老成谋国、演绎非凡的观点。我等既不大胆,也没有思路,年纪不老,更没有多少演绎能力,所做出的推测,原本是最无足奇的。不揣冒昧,以飨读者。

据野叟村言,某知名 app 长期与某某、某某知名学府合作,效唐朝大案牍术遗智,建造了一套“‘威行’风闻系统”。无论什么文章、图片,皆可实时显示其传播踪迹。使用机器学习技术,深入分析造成舆情的文章的文字特征与传播规律。

根据这套系统训练学习的结果,某些用户向来最喜欢分享某类文章;某些文章如果在初期具有某种传播趋势(比如被看到之后转发率极高),就很可能大规模传播。布希大统领有言“先发制人”。待到舆情形成,就已经晚了。这套系统可以在不识别文章内容的情况下,仅从文章传播规律分析,就预判内容是否可能造成舆情,予以预防性封禁,待人工审核定夺。比爱国者导弹什么的高到不知哪里去了。

以多种形式被传播的“发勺子的人”一文,就因读者一见即转,屡屡触发自动封禁。追究起来,只是机器系统的一次日常作业。人工审核者们只是系统的一个螺丝钉,滥放文章或许有责任,滥封文章集体无责任,看到机器系统报上来的文章,自然本着“应封尽封”的生存精神,一律拿下。所有网友殚精竭虑创作的图片艺术,只增加了他们几秒钟的工作量,就变成了晚间“今日舆情分析报告”里的一个数字。

有司根据“今日舆情分析报告”下令对此类消息一律放行,已经是几小时之后的事情了。“今天是XXXX诞生以来最荒谬的一天”就在这个时候发出,因而尽管转发众多,完全没有被删的迹象。

某计算机安全专家表示,这套基于传播规律的封禁系统虽然对于内容不敏感,封禁效率高,开销少,但仍然存在可被攻击的弱点。该专家构造弱点如下:假定存在一种机制,使得每个读者在转发时重新构造一条与原消息哈希摘要不同的消息,则该系统将无法追踪内容的转发,自然无法工作。当然,仅仅在转发时扰乱消息是不够的,消息必须在转发过程中保持人类可读。

对于这种攻击,假定消息以图片形式发出,有几种可能的实现方法。

  1. 图片添加随机扰动。在消息中醒目标示请读者在转发之前访问某网站以获取新的随机扰动图片。此种攻击的缺点在于,用于生成新图片的网站是其薄弱环节。

  2. 图片添加伪随机扰动,随机数种子在图片中附上。用户端安装软件自动解出随机数种子,反卷积得到原始图片,二次加扰后将新随机数种子附在新图片中发出。此种攻击的缺点在于,封禁系统一方得到这套算法后就可以轻易破解。

  3. 理想情况下,构造一种添加随机扰动的方法,在无穷多次添加扰动之后,信息仍然可读。目前还不知道有这种算法,它也许是存在的。

  4. 不可逆伪随机扰动。使用一种算法构建一组 mask:m1、m2、m3 乃至于 mN。N足够大,足够所有人转发使用。得到一张被 mask 的图片之后,并不知道 mask 本身是什么,也无法解出原图片,但可以依特定算法算出被 m(n+1) 所 mask 后的图片是什么。每个用户收到图片之后,向前迭代任意步后转发即可。这个的构造并不难,留给读者做思考题。因为 N 足够大,所以封禁系统一方不可能遍历所有可能 mask 并生成其哈希摘要。