Preface
有个小伙伴给我介绍了一家互联网公司,说让我投份简历看看能不能争取到一份校招实习资格。后来和这个公司的 HR 联系了一下,说让我先做做题。题目一共两道:
- 第1题可能涉及到公司的业务,这里不做透露。
- 第2题是写一个 Android 自定义控件,是个尺子控件,要求使用系统提供的绘图API(
android.graphics.Canvas
)来做。
下面我就说下这次做自定义尺子控件都学到了什么。
今天看英语语法的时候 随意的看了一眼键盘,意外的发现 除了 pause
break
和 scroll
这几个键以外,还有个 SysRq
。然后查了一下,发现这个键在 Linux 下大有用途:
In Linux, the kernel can be configured to provide functions for system debugging and crash recovery. This use is known as the “Magic SysRq key”.
在 Linux 下,通过对内核进行配置 可以让它来提供一些功能,比如调试操作系统以及崩溃恢复(Crash Recovery)。这种 SysRq 用法被称之为 “Magic SysRq key”。
- System request - wikipedia.org
当 Linux 系统崩溃但还没到 kernel panic 的地步的时候(比如 CPU soft lockup),就可以使用这棵最后的救命稻草。下面我就来介绍一下 SysRq 的使用方法。
“我辛辛苦苦挣的钱都去哪儿了”,我可不希望以后什么什么时候开始说这种话,于是 搭建个记账软件来记录自己的收支吧。
该软件优点如下:
csv
格式的文件,进一步对资金流向做分析什么的。目前我能想到的唯一缺点就是:没能和各种银行/支付机构(比如支付婊)进行接口对接,实现自动记录收入支出。
另外,该软件作者表示 “不支持自动支付重复性交易”,原因是:
I believe that if you are serious about changing your financial habits, you should be aware of what happens on your accounts. The money you spend and the money you earn. By entering each transaction manually, you will feel what you spend.
我认为如果你真的想改变你的财务习惯的话,你应该更关心你的账户,你花的钱还有你挣的钱。通过手动地录入每次交易,让你切实体会到钱都花在哪里了。
《你不知道的JS》 (You don’t know JS) 读书笔记
一直以为 JavaScript 就是 Script 版的 Java,但在看了这本书后才知道,它丫的就是个 Script,跟 Java 一点儿关系都没有。
JS 有一些 Java 没有的特性,比如:
function
当对象用(看过书后发现 function
真的是个对象)null
还有 undefined
还有 undecleared
var
定义的变量的作用域不符合常理(至少我觉得跟 Java 里定义出来的变量的作用域不一样)this
is not this.我本来还想指望看完这系列书后能对 JS 的刻板印象有所改观,然而事与愿违。
下面我将以一个水平不及初级Lava程序员的程序员的角度,为本书做一份笔记。
前些阵子瓷国各种网盘纷纷倒下,我也越来越担心自己的数据安全,没准哪天我的网盘帐号就被”无缘无故”的删掉什么的,于是我就琢磨着搭建个自己的私人网盘。现在这个时代最不缺的就是轮子,随便一搜就有好几个符合要求的自搭建(Self-Hosted)网盘软件:
综上,我选择 Nextcloud。
接下来的问题是,我以后必定会在同一台主机内搭建多个网站,但 80 端口只能被一个进程监听。解决这个问题就是使用 Nginx 做反向代理,把入站连接根据域名/路径来转发到主机内的不同端口上。
还有一个问题就是通信安全问题。用 HTTP 这种明文通信协议的话,在通过某些恶意防火墙的时候 很可能会把通信内容给镜像下来 然后拿去分析。解决这个问题也不难,弄个免费 SSL 证书即可,比如 “Let’s Encrypt“。
注意: 本文使用 Ubuntu 作为服务器系统,部分特性(比如 ufw
)不存在于其他 Linux 发行版里 或 需要代替方案(比如用 iptables
代替 ufw
)。