0%

LoveLive!学园偶像祭(以下称SIF)是一款对无氪党相当友好的游戏。虽然无氪玩家不使用真金白银换取心资源,但是心在游戏中并不难获取,而且玩家在游戏中遇到的大部分问题都可以通过其他方式解决。

Read more »

本篇,我们来详细讲解 spacemacs evil mode 的常用操作。

Evil,全称 Emulation vim layer。作为 emacs 的扩展插件,它可以模拟绝大多数 vim 的键位和指令。emacs 的功能和可扩展性远在 vim 之上,但键位设计导致其编辑速度无法与 vim 抗衡。evil mode 通过在 emacs 中模拟 vim 的方式解决了这一问题。

启用 evil mode 只需要把 .spacemacs 文件中的 dotspacemacs-editing-style 设定为 'vim 即可。

在阅读本文前,你需要对 vim 的模式和键位有基本的了解。文中用 C- 代表 Ctrl 键,M- 指代 Meta 键(通常映射至 Alt)。列出的操作已在 ubuntu 系统中验证过。windows 与 macOS 的按键可能略有区别。

Read more »

我曾经是 vim 的忠实用户。去年开始尝试使用 emacs。即便花了很多时间记忆键位和指令,我在 emacs 上却始终不能达到 vim 的编辑效率。后来,我听说了 evil mode,也就是在 emacs 中使用 vim 键位的模式。把 evil mode 与自动补全、模糊查询等强大功能整合到一起的,是一款名为 spacemacs 的编辑器。在这一系列文章中,我将讲解如何高效地使用 spacemacs —— vim 和 emacs 的集大成者。

Read more »

如果你拥有自己的域名和服务器,并且想要免费获取 HTTPS 证书,Let's Encrypt 是你的不二之选。本文以 Debian/Ubuntu 系统和 Nginx 为例讲解如何在服务器上部署 Let's Encrypt 证书。

Read more »

From time to time, you may need to execute some privileged commands in a shell script. While using sudo, you may want to either enter your password only once for a long running script, or execute the script without giving a password at all. This article will tell you how to do it in the right way.

Read more »

我从小到大没遇到过一个靠谱的语文老师,作文也总是在二类和三类之间徘徊。第一次了解科学的写作方法,是在 GRE 的课堂上。我把老师讲解的那套议论文的系统性写作理论称为“树形论证框架”。

树形论证框架,就是说文章的逻辑结构长得像一棵倒立的树。作者在开头提出观点。为了论证这个观点是正确的,作者需要给出足以支持该观点的条件。这样的条件可能是一个简单的陈述,可能需要多个陈述同时满足(与条件),可能只需满足几个陈述中的一个(或条件),也可能是与之对立的陈述不成立(非条件)。无论是哪一种情形,现在作者的任务,就从论证原观点是正确的,变成论证支持原观点的条件是正确的(或与原观点对立的条件不成立)。这个转变,就是树形论证框架的核心,又称为递归论证。那么什么时候可以结束呢?当举出的陈述是读者认可的基本原理或客观事实,不需要进一步展开解释的时候,相应的逻辑就自然结束了。当然,实际写作中,为了语言简洁流畅,可以隐含地给出条件,而不需要把所有条件都列出来。只要读者在阅读后可以轻易地找到句子间的逻辑关系即可。

Read more »

如题,这是我 2017 年的简要规划。从今往后,我会在每年年初写一篇规划,年末发表一篇总结。本文是整个系列的第一篇。


首要原则

从初中到现在,我已经和制定规划打了十年交道。这十年的经验汇成一句话:少即是多。人有一种贪大求全的倾向,喜欢把规划写得很宏伟、很美好,然后憧憬它变成现实。但现实是残酷的,资源是有限的,必须集中力量办大事,不能面面俱到。因此,一个好的规划,只会安排几件重要的事。这是制定规划的首要原则。

Read more »

从大一到研二,学期小结终于写到了最后一篇。在学生生涯的结尾,没有求职的压力,又只需要上一门课,生活前所未有得轻松和愉快。摆脱了课业的负担,我尝试了许多原本无暇顾及的事情。

Read more »

ssh to a remote server and run programs inside a terminal is not a big deal for major operating systems. However if the remote program requires graphics display, it will be a little bit tricky. macOS does have a powerful terminal that can automatically create an X window for the remote application. Windows could do that too, with some sort of hacking. Thanks to the great bash on windows, the effort to run remote X applications is now minimized. The detailed steps are shown below.

Read more »

拖了一个多月的时间,终于告别了《白色相簿2》的征程。完成终章雪菜线之后,整个剧情在 coda (最终章) 走向了总爆发。先前有传闻称,绝大多数玩家在初入 coda 时都会走入冬马NE(又称浮气线)的结局。我也按照 galgame 的传统,一周目不看攻略,完全凭个人喜好做出选择。我原本估计会进入冬马的某个结局,可最后一个选项让我大吃一惊:





我就这样莫名其妙迎来了雪菜TE的结局。可从先前的选择上看,好感度明明是显著偏向冬马和纱的。难道游戏设计出现了 bug? 等我又打完了冬马TE和冬马NE这两个结局,再将做出的选择一一比对,才深刻领悟了 coda 设计的精妙之处。

Read more »

Blue Screen of Death (BSoD) is a famous but annoying symbol of windows operating system. It indicates that there are some fatal errors such that the system can't work safely. General applications don't have the ability to trigger the blue screen, so there should be something wrong with either hardware or drivers, if windows itself is not corrupted. In whatever case, you need to take actions because the blue screen will appear from time to time if the root cause is not found and properly handled.

So how to investigate the root cause of a blue screen failure?

Read more »

《人类简史:从动物到上帝》是一本不同寻常的历史书。这本书中,我最欣赏的一点是,作者彻底放弃了一般历史学者的说教态度和马后炮的研究方法,承认历史的进程实际上受到诸多不确定性因素的影响,不存在什么“历史的必然”。我们常说要“以史为鉴”,就是要把握历史发展的一般规律,并以此来指导现在和未来的决策。不过,人类相信历史存在规律,并从历史事件中总结出一二三条,并不意味着历史有必然的一面,也不代表我们能看到事件发生的真正原因(想想学术界争论不休的各种观点),更不能说时过境迁,了解这些过去的故事对当下的情境能有怎样的帮助。就像今天没有人能断定希拉里或是川普一定可以当选美国总统,但等竞选结果公布之后,就会出现各种理论解释这一结果的成因。此外,在他们上任之前,我们也无从知晓美利坚是会变好还是变坏。研究历史规律,对这些最为实际的问题,往往是没有什么功用的。放弃了这种历史的功利心态,作者站在了超越人类的立场上,以极为宏大的视角描绘了人类数万年发展的基本脉络。这一点,足以让本书与众不同。

整个人类数万年的历史,想要在一本书里表露清楚,不得不选择性地忽略很多大事件,只去探讨能反映历史精髓的事情。在谋篇布局上,作者以三次重大飞跃为分界,以“认知革命”、“农业革命/人类的融合统一”和“科学革命”统领相关的篇章,乍看之下是相当合理的。但是,如果深入到每章节的内部,并仔细研读其中的文字,不难发现作者的行文存在诸多问题。

Read more »

新的改变

这是本博客改用 hexo 引擎和更换主题样式之后的第三次重大更新。现在整个站点 bitmingw.com 以及其引用的所有资源已经强制使用了 HTTPS 加密传输。即使用户最初使用不安全的 HTTP 协议,也会被 301 重定向为 HTTPS 协议。





文章的后续部分会详细讲解本站点 HTTPS 通讯的设计与实现,供各位博主参考。

Read more »

Dynamic programming (DP) is a group of very useful algorithms to solve searching problems. In many cases, it is easy to realize that a particular problem can be solved in DP, but you may spend a lot of time on finding the iterative equations. Distinct Subsequences is one such problem.

Here is the description from leetcode.

Given a string S and a string T, count the number of distinct subsequences of T in S.

A subsequence of a string is a new string which is formed from the original string by deleting some (can be none) of the characters without disturbing the relative positions of the remaining characters. (ie, "ACE" is a subsequence of "ABCDE" while "AEC" is not).

Here is an example:
S = "rabbbit", T = "rabbit"

Return 3.

Read more »

嗯,踏入二次元并不是我预先规划好的事情。我平时喜欢搜集各种音乐来听,其中也包括各类动漫的 OP (Open Song) 和 ED (Ending Song). 不经意间,youtube 推荐的一部 MV 深深吸引了我。这部 MV 的视频取材于《樱花庄的宠物女孩》,我就这样与这部动漫不期而遇了。

《樱花庄》并不算知名的神番,但如今细想起来,拿它来入宅真是合适不过。十多年前,我在电视里看过神作 EVA (《新世纪福音战士》), 但那时的我头脑中丝毫没有 ACG 的概念。上大学以来陆续看过少数几部动漫,印象比较深刻的也只有《秒速五厘米》了。很可惜《秒五》剧情太短,哭过就完了,没能让我一遍又一遍地回忆、反思,于是我又错失了一次入宅的机会。《樱花庄》并没有采用《秒五》的煽情策略,而是牢牢围绕一条主线展开:一群天才与凡人在樱花庄这个屋檐下生活。作为轻小说改编的作品,深入刻画人性并不是它的本意。那种有矛盾有尴尬,但又处处充满了爱与友善的气氛,才是动漫着重描写的。

Read more »

不同的人用微信找我聊天的方式是不太一样的。其中一些人喜欢先发一句 “在嘛?” 之类的问候语,等到我回复之后才给出后文。另一些人则是直接把想说的话甩过来。这其中的差别很有意思。为了简化,本文不讨论 “宝贝儿~” 、 “你在干嘛?” 、 “想你~” 这种开场白。

Read more »

The Concept

Partial function is a function partially complete. As a transformer, it is a way to create new functions from existing functions, meanwhile adding your own things. It can be named whatever you want, but I call it partial to keep consistency with the concept.

Here is a typical implementation of partial function.

1
2
3
4
5
6
7
8
def partial(method, name, **specified):
@functools.wraps(method)
def wrapper(self, *args, **kwargs):
final = dict(specified)
final.update(kwargs)
return getattr(self, method.__name__)(*args, **final)
wrapper.__name__ = name
return wrapper

It seems to be pretty complex. This article will help you understand this function.

Read more »

从今天起,本博客将放弃原主题 yilia, 转而使用新主题 NexT.

从 2014 年博客在 GitHub Pages 上线至今,除了框架从 Jekyll 变成了 hexo 之外,并没有经历过大规模的改版。这体现了我对 yilia 主题一贯的偏爱。2014 年的 yilia 更像是一个私人的藏品,在代码仓库里还夹杂了日语五十音这种私货。我有幸成为了这个主题的第二个开发者,规范了代码仓库的内容,还修复了部分 bug. 随着该项目的 star 数从几十增长到一千,越来越多的人加入到开发者的行列中,使它在两年的时间里不断完善。

然而 yilia 设计上的部分缺陷最终使我放弃了这个主题。

首先,这个主题最大的卖点在于其繁复的页面设计,移动端甚至使用了侧滑来展示导航内容。这种设计过于追求美感,却丧失了纯净的阅读体验。腾讯将侧滑菜单视为广告予以屏蔽的做法虽不恰当,但也足以说明这已经不是腾讯心目中博客文章该有的样子了。

其次,yilia 虽不断升级其外观设计,却并未充分挖掘 hexo 的潜力。归档页面没有重新设计,只是重复展现主页的内容,相当于放弃了这个功能。分类和标签都长成了标签的样子,而且大小完全一致,数目增多之后难以分辨。先前有其他开发者提出过相关问题,当前活跃的 pull request 多达三十余条,但作者本人并未积极处理这些问题。

最后,甚至连 yilia 最引以为豪的美感也出现了不可解决的缺陷。hexo 有一个 bug, 会导致编译后的 HTML 文件中的引号从 Markdown 中的直引号变成弯引号。由于 yilia 使用了微软雅黑作为显示字体,这个字体中的弯引号被视为中文引号,其字符宽度非常夸张,严重影响了英文的显示。因为这个 bug 不太可能得到修复,所以 yilia 主题就无法解决这个颜值上的致命伤。

经过再三评估和测试,我决定使用 NexT 这款人气更高也更为成熟的主题。该主题的页面极为简洁,符合沉浸式的阅读体验。时间轴和标签云的设计精湛,极大方便了读者的查阅。同时 NexT 提供了强大的插件支持,例如第三方全文检索,使得静态网页的能力完全不输 wordpress, 这也是它的一大亮点。

博客外观的改版结束了,但博客内容的更新会一直继续。