Via Noir Chicago!

Last weekend I went to Chicago with my roommate. I split up with my roommate after we arrived in the city.

Before the battle, there are riots against Trump’s presidency on south side of Chicago River and in Millennium Park. (The surprising part is that Chicago police are on bikes.) The POC soon announced that there will be no anomaly portals in those areas.

Play Hard Play Fair Signing Board!
Play Hard Play Fair Signing Board!

This battle was more harsh than I originally thought. Enlightened faction players are organized into car teams, bike teams and foot teams. My team was assigned to guard a target portal in Milton Lee Oliver Park in east part of Chicago. Although we lost the battle because the resistance faction deployed 3 teams to our portal, Enlightened faction won the battle in the end and I leveled up to L13 as well. Everyone enjoyed the night view of Chicago and we had a fun after party in a pizza restaurant. According to my GPS, our team covered a distance of 16 km during the whole anomaly. Continue reading Via Noir Chicago!


Portal @ SHS紧接着高考的毕业,见多了的合照、毕业典礼、教师赠言。


过去的三年,我在控制自己的情感上越发的熟练。站在现在已经获得美国 F-1 签证的我的视角,看 5 年前的自己,觉得 too young too simple sometimes naive,看 3 年前刚进上中的自己,就像在看昨天的自己的背影。然而那个时候的我不会想到,被录取并决定去上中成为了世界线的分歧点,此后的 3 年(不能说全部是愉快的)不断把我推向出国深造的未来。




It’s happening, and here I come.



それぞれの場所へ旅立っても、友達だ 聞くまでもないじゃん。
Your presence will always linger in my heart.

El Psy Congroo

Continue reading 毕业后记

EarthLiveShell 在桌面从太空看地球

之前在 GitHub 上看到 bitdust 用 C# 做的一个能够获取卫星影像并设定为壁纸的程序 EarthLiveSharp (v2ex 讨论),可惜只能在 Windows 下工作。趁着会考完结花几天时间用 Bash 实现了一个能够在 Linux Gnome 下工作的版本

setsid <command> & 可以使进程直接挂在 init 下面作为新的 session 运行,EarthLiveShell 的服务进程即使用这种方法保持在后台。



Time-based One Time Password Algorithm

Follow the algorithm

As implemented in Google Authenticator app, you’ll need:

  • A shared secret key K, which is base32 encoded
  • a specific time period since UNIX epoch T

I’ll use K = GEZDGNBVGY3TQOJQGEZDGNBVGY3TQOJQ and T = 1450235092 (which is Wed, 16 Dec 2015 11:04:52 CST) for example. In the Google Authenticator App, both K and T are passed to TOTP as hexadecimal values (or byte arrays).

Since K is a base32 encoded string, we’ll decode it to byte format. Password changes every 30 seconds, T should be divided by 30, tuncated to integer and converted to hex and padded to 16 hexadecimal digits.

Continue reading Time-based One Time Password Algorithm

Systemd Timers小结





[Unit] Description=Value


[Timer] Unit=Value


[Timer] 绝对触发时间

OnCalendar=Value可以指定在系统时钟的某一特定时刻触发timer。懒的话可以直接使用hourlymonthly这样的词语,也可以输入DAY YYYY-MM-DD HH:MM:SS。比如hourly*:00:00等价,Wed *:00:00就是每个星期三隔一个小时触发一次。 Continue reading Systemd Timers小结