关于十三机兵防卫圈,大多数玩家是被游戏精巧的剧情吸引来的。除了剧情之外,这款游戏也提供了高难度的战斗关卡。这篇攻略,为那些想要在战斗中取得好成绩的玩家提供一些建议。
谈《艺术的故事》
如果你对艺术鉴赏感兴趣,请不要错过贡布里希的《艺术的故事》。作者精心挑选了从史前时代到二十世纪的数百件艺术作品,将艺术史发展的脉络娓娓道来。每件作品除了解说之外,还配有图片,这样读者不费吹灰之力,便可将文字描述与作品本身对应起来。
在这里,我写下几点阅读后的感受。下面将要讨论的主题,只占原书篇幅的冰山一角。请有兴趣的读者阅读原书,以获得更全面的体验。
三十而不惑
今年值得回忆的事情并不少:回国举办婚礼、解锁高空跳伞的成就、深度体验意大利的风土人情。不过,我打算跳过年终总结,聊一个更为重要的话题。
对我来说,今年是世界观和方法论走向成熟的一年。我逐渐感觉到,面对纷繁万千的事物,自己形成了特定的思维模式,并且在价值判断上持有越来越鲜明的立场。世界观、方法论和价值判断没有对错之分,但是有高下之别。有一些世界观更准确地描述了世界发展变化的规律。有一些方法论和价值判断让我们做出更好的人生选择。希望我的分析和解释能为你带来一点点启发。
2022 年终总结
哥德尔证明
你的数学老师可能向你提及过『哥德巴赫猜想』。这个猜想认为,任何一个大于 2 的偶数,都可以表示成两个质数之和。这个猜想自 1742 年提出,尽管未能找到任何反例,但没有人能证明它。是否存在这样一种可能,即虽然哥德巴赫猜想是一个真命题,但是我们永远都无法证明它呢?哥德尔向世人展示,这种可能性是存在的。
哥德尔证明了,在一个定义了自然数(非负整数)、加法和乘法的数学体系中,假设这个体系没有矛盾,也就是不存在既真又假的数学命题,那么一定存在无法被证明的真命题。这一结论被称作『哥德尔不完备定理』。所谓的不完备,是指无法从几条有限的公理出发,推导出所有真命题。也就是说,我们可能无法从自然数公理出发,证明哥德巴赫猜想。哥德尔不完备定理的证明过程十分巧妙,本文将向读者展示,哥德尔是怎么做到的。
2021 年终总结
在 Google 工作的一些感受
我来 Google 工作有一年时间了。以下几点,是我个人在 Google 工作的一些感受。
C++ 和 Rust 的移动操作
各种编程语言都支持对象(object)的构造、复制、读取、修改和销毁等操作。其中的复制(copy)操作,就是在计算机内存中的某个新地址,构造一个和原对象一模一样的新对象。
少数语言,例如 C++ 和 Rust,还支持一种叫『移动』(move)的操作。对象的移动,顾名思义,就是把原对象从计算机内存中的某个地址搬运至新的地址。听上去,移动操作做的事情似乎和复制差不多。那么为什么 C++ 和 Rust 要引入移动操作呢?为什么其他大多数语言都不支持移动操作呢?
基于时间的 SQL 盲注
本博客网站由 nginx 驱动,服务器运行在 AWS 上。与其它有固定公网 IP 的服务器一样,我的服务器也时常受到外界的攻击。今天讲解一种常见的攻击方式:基于时间的 SQL 盲注(time-based blind SQL injection)。
2021 年的计划
经历了炼狱一般的 2020 年,每个人都期待着 2021 年能少一些波涛汹涌,多一些风平浪静。尽管没有人知道病毒还会肆虐多久,但是至少,我们可以怀着积极的心态,构思新一年的蓝图。
复利的魔法
在美国,有一种叫 401k 的养老金计划。个人和雇主可以每年向 401k 养老金账户存入一定数量的钱,60 岁之后就可以取出来。在 2020 年,个人每年可以向 401k 账户中存入最多 $19500 而不用上税。这个数字给人的直观感受,应该可以用杯水车薪来形容。很难想象,经历 30 年的通货膨胀,每年能支出的养老金却只有两三万,会是一种怎样的生活水平。所以,401k 账户中的养老金,真的能撑到人死的那一天么?
答案有一些反直觉。需要担心的,不是人还没死,钱就花完了,而是人死了,钱还没花完。假设你所在的公司稍有一些良心,愿意按个人出资的 50% 向你的 401k 账户中存钱。也就是说,每年 401k 账户中新存入的资金有 $29250。如果资产的平均年投资回报率有 7%,如此坚持 30 年,账户的最终余额是 296 万!
为什么说这个答案反直觉呢?大脑的正常思维是,每年存入 $29250,需要大约 100 年的时间才能达到 296 万。但是实际上,这一过程只需要 30 年。这其中的奥秘,就是复利。在复利的帮助下,资产价值会随着时间流逝指数增长。
Don't Use File.separator When Loading Java Resource Files
Don't use File.separator when loading resource files into Java. Even though File.separator
is created to make Java program portable to different platforms, using it to load resource files will just have opposite effect.
看懂上市公司财报
今年的股市因为受到新型冠状病毒的影响,走出了不寻常的行情。虽然一只股票的短期走势受到外部因素的影响很大,但它的长期走势,主要是由公司的经营状况来决定的。要想了解一家上市公司的经营状况,最直观的方式是阅读公司的财报。
在美国上市的公司,有义务在每年和每个季度披露公司财报。年度财报和季度财报都可以在 SEC 网站上查询。考虑到大部分行业都具备一定的季节性,分析公司基本面一般会重点考察年度财报。
大多数公司的年度财报通常有 50 页以上,可见其中包含的内容极为丰富。作为投资者,我们最关心的有如下一些信息:
- 公司在过去的一年中,收入和支出分别是多少。这些信息可以从损益表(income statement)中获取。
- 公司当前的资产和负债分别有多少。这些信息记录在资产负债表(balance sheet)中。
- 过去一年中,公司账户上现金数额的变化及其原因。现金流量表(cash flow statement)里包含了这方面的信息。
下面以苹果公司 2019 年度的财报为例,提取上面三个维度的信息。注意,本文的分析结果仅供参考,并没有推荐购买相应的股票。
Migrate VMware Workstation / Fusion VM to ESXi
I used to run a VM in my mac with VMware Fusion. As my mac is getting older, the VM is becoming slower and slower. One day I got an ESXi host which had sufficient resource to run that VM, but migration from VMware Fusion to ESXi was not a straight forward task. If you are facing similar problem with VMware Workstation or Fusion, the following steps will help you.
2019 年终总结
创业路上
从 2017 年 2 月开始,我在 VMware 工作已经有近三年的时间了。前两年在平台组做了一系列项目,大部分和分布式系统治理有关。不能否认在那里学到了很多知识技能,但总有一天我会彻底厌倦看日志修 bug 的循环往复。2019 年 3 月,我换了一个组,投入到了新产品的开发工作中。
进组的时机正逢项目从第一行代码起步。全组像一家创业公司:我们有大致的目标和方向,但所有的宏观设计和微观实现都需要自己摸索。与许多其他创业公司一样,踩各类知名开源软件的坑是大家都会经历的事情。
我们的项目决定使用 druid 作为时间序列数据库。新数据通过 kafka 源源不断进来,经索引后存放在数据库中,这一过程称为数据摄取。官网上的文档和例子还算齐全,示例程序运行起来也一切正常,但换成我们自己的数据后就立刻出现各类错误,以至于不得不深挖源码一探究竟。这么一个看似照葫芦画瓢的任务,最后花费了我三天时间。
之后我们想比较两种不同的数据摄取方式,其中一种依赖于 twitter 某个 scala 开源库的两年前的代码。那些代码过于古老,存在一系列编译和运行的问题。每一次运行,我都觉得,这是最后一个错误,再过片刻就可以把程序跑通了。但每一次,又会出现新的错误。那些莫名其妙的异常信息迷惑着我,但我没有时间探索这个开源库的细枝末节,与其确切地知道为什么会出错,不如凭借直觉把解决的方法猜出来。经历近一星期的煎熬,我终于跑通了流水线,拿到了两种方案的对比结果。我们最后没有选择这套开源库,但我不认为这是一项做完即被丢弃和遗忘的工作。对创业公司而言,知道为什么某种方式不好,并且有理有据地避开它,可能会在未来节约不小的成本 [1]。
从三月到九月,经历过一周连续五天的 war room,经历过打团战从上午十点到晚上九点半,经历过周六周日接连两天来公司点外卖,我们终于发布了产品的第一个版本。正当所有人想好好庆祝一下的时候,我们的客服电话被打爆了。
Changing the Default Program with update alternatives
It is common to have multiple versions of the same software installed on a single ubuntu machine. With Debian and Ubuntu's update-alternatives
utility, it is easy to choose the default one to use.
简明易懂的量子计算
1936 年,阿兰·图灵发表了图灵机理论,证明了存在一种计算机可以执行任何能被算法表达出来的计算过程。1945 年,第一台图灵完备的电子计算机 ENIAC 投入使用,它和后续的电子计算机改变了人类的历史进程。关于量子计算的研究始于 1980 年代。尽管时至今日,尚未出现能进行复杂计算的量子计算机,但量子计算的相关理论已经成熟。
一般来说,完成一次计算需要做三件事:
提供输入 -> 执行计算过程 -> 提取输出
对于电子计算机而言,输入和输出都可以表达为一串比特。计算过程,就是处理单元在程序的控制下,通过 AND, OR, NOT 等逻辑门电路修改这些比特的过程。
而量子计算机,输入的是量子比特(qubit)。计算过程是量子门(quantum logic gates)修改量子比特的状态(quantum state)。输出的是量子比特观测的结果。
因此,理解量子计算,需要搞清楚量子比特、量子门和量子观测。考虑到量子计算的物理实现有多种方法,且许多细节均为机密,本文只会阐释量子计算的理论基础。
相机的裁切系数
尽管相机厂家为了推动低端单反/微单相机的销售,很少特意强调相机是全画幅还是残画幅,但我们并不能因此低估它的影响。
所谓相机的全画幅和残画幅,是指相机感光元件的大小。全画幅使用 36 x 24 mm 的传感器,常见的残画幅 APS-C 使用 23.6 x 15.7 mm (佳能是 22.2 x 14.8 mm)的传感器。全画幅与某种画幅的传感器的长度之比,称为裁切系数(crop factor)。很容易算出,全画幅的裁切系数为 1,普通 APS-C 画幅的裁切系数为 1.5,对于佳能来说这个值是 1.6。
常用的相机画幅
知道裁切系数有什么用呢?由于画幅不同,为了取得相同的摄影效果,在不同相机上需要设定的焦距、光圈大小和感光度并不一样。有了裁切系数,我们就可以在不同画幅间进行转换:
使用残画幅,在已知某张照片焦距、光圈大小和感光度的条件下,若改为全画幅相机,需使用的焦距、光圈大小和感光度。
或者反过来:
使用全画幅,在已知某张照片焦距、光圈大小和感光度的条件下,若改为残画幅相机,需使用的焦距、光圈大小和感光度。
基督教的核心逻辑
这周日,我被拉去本地某个基督教会听福音。传道者精心准备了演讲,在一个小时里把基督教的核心逻辑说清楚了。这篇文章我就加上自己的理解,以一位非信徒的身份转述一下。各位读者阅毕如果有兴趣,可以去教会聆听正宗的版本。
宗教可以认为是一种高度严密和仪式化的信仰。至于信仰,按照我的理解,便是那些无需证明就自动为真的命题。基督教作为一种宗教,它的信众会相信下面几个基本命题:
- 世界上存在着一位神,他创造了万事万物。
- 神依照自己的形象创造了人。
- 所有人都是有罪的。
- 人在死后会经过审判,有罪的人会下地狱,无罪的人可以上天堂。
- 凡相信这位神和基督耶稣的存在,便会得到救赎,可在审判时洗刷一切罪过。
这些命题都是无法证明的。传道者正确的做法,是通过举例,让听众觉得这些命题应当是真的。当听众不再质疑命题的真伪时,他们就完成了从福音听众到基督徒的转变。
下面我来逐条解释一下这几个命题。
《心理测量者》:有关正义、理想社会与人生信念
在热血的战斗场面从脑海中逐渐消退之后,《心理测量者》留下的,是虚渊玄对正义、理想社会与人生信念的诸多思考。
在这样一个架空的世界里,西比拉系统(Sibyl System)通过测量人的犯罪系数来预测犯罪行为,并允许刑警对犯罪系数高的人实施惩戒。在这个世界,何为正义,是由西比拉决定的。那么正义到底是什么呢?正义与非正义又是如何界定的呢?假设火车会轧死铁轨上的五个孩子,但是你只要把一个胖子从桥上推下去就能救那五个孩子的命,这种行为是正义的么?因为判定正义,是西比拉拥有的特权,所以西比拉可以使用任何逻辑上自洽的判断标准。比如说,比起不作为,把胖子推到桥下的人拥有更高的犯罪系数,因此用一个胖子的命救五个孩子的命是非正义的。更广义的说,正义与非正义并不存在一个绝对的界定,它只要能被普罗大众接受即可。