Recent Posts

Converting DFA to Regular Expression

September 25, 2019 1 minute read

This post originated from Lab 1 of course Compilers: Principles that I’m currently taking, in which we were required to write a flex program to parse a subset of the C language. The multiline comment /* */ was the most troublesome to handle for most of us (excluding me, for sure).

My speech at Microsoft Summer Camp 2019

August 14, 2019 10 minute read

This is a translated version from the Chinese (original) script. The slideshow can be acquired here. For comments, please head to the Chinese version of this post.

Creating templated Systemd services

July 16, 2019 2 minute read

Last time I wrote an article about NAT traversal using FRP, which has been my personal solution for exposing SSH access of machines behind NAT to the internet for a long time.

Using SSH deploy keys on CircleCI

July 8, 2019 2 minute read

A year ago back I wrote an article on automating build & deployment of GitHub Pages website with Travis CI. It’s a great CI service at first, but since Travis CI has completely moved away from containers, speed is a real issue to whoever is concerned. On the other side, CircleCI is continuing...


June 14, 2019 22 minute read

21 世纪是信息时代,在信息时代中,每个人都有能力去自由地产生、获取、使用和传递信息。而在信息的获取和传递的过程中,计算机互联网是最重要的载体。随着 21 世纪的到来,计算机互联网也走入了家家户户,成为百姓日常生活中不可或缺的基础设施。而随着网络的普及,与其相关的安全事项自然也成为了一个重要话题。

How I saved a lost commit from GitHub

June 7, 2019 2 minute read

Earlier today I force-pushed to my repository USTC-RV-Chisel for testing purposes, without noticing that my local ref origin/master is 1 commit behind the actual master on GitHub. My friend pushed his work (1 commit) to it, and now it’s lost.