2021

Python 中的 Inspect 模块

1 背景

今天在 Github 的时间线上看到了一个有意思的 Python 库,名字叫做 "IceCream"。这个库用来取代 print() 函数,实现更加可控且优雅的调试输出。IceCream 的接口形式非常简单,只要直接将函数的调用形式传入即可。如下面的代码:

1
2
3
4
5
6
from icecream import ic

def foo(i):
return i + 333

ic(foo(123))

会产生下面的输出

1
ic| foo(123): 456

这个是怎么实现的呢?我查了一下代码发现 ic 函数(实际上一个实现了 __call__ 的类的实例)主要使用了 inspect 这个库。这是一个 Python 的标准库而我从来没有用过。

May 27
Unraid:重新激活 disabled 状态的硬盘

1 前言

Unraid 论坛上有这么个问题:How do you reactivate a faulty drive from UDMA CRC Error Count。这里说的 "UDMA CRC Error Count" 错误一般是硬盘写入失败时发生,这可能是由于线缆接触不良导致的。写入失败后硬盘会重试,因此这个错误不会带来数据损坏的严重后果。在 Unraid 中,出现这种错误一般会使得硬盘从 "healthy" 状态进入 "error" 状态,但是其实此时硬盘我们仍然是可用的。

May 19
Weekly-71
“杂交水稻之父”、中国工程院院士、“共和国勋章”获得者袁隆平因病医治无效,于 5 月 22 日 13 时 07 分在长沙逝世,享年 91 岁。
May 15
【旧文】Mac 党的福音:两行命令搞定 eps 转 pdf 以及切除白边

研究僧们在搬砖的时候常常需要将 eps(matlab 仿真的输出图像,fig 图另存为即可得到 eps 格式)转换成为 pdf 格式,以方便插入 Latex 写的论文中,与此同时,除了进行格式转换以外,还需要去除原图无用的白边。一般同学们都是都是用 Acrobat 来转的。但是上述的任务其实都是固定的套路,每次用 Acrobat 转难免烦心,而且安装 Acrobat 也比较麻烦。下面推荐的一个命令行工具 epstool.

May 12
在 Ubuntu 上安装 OpenVPN 2.4

在之前的文章 Pritunl: 网关与 DNS 设置 中我提到可以使用 pull-filter 来阻止 OpenVPN 覆盖本地网关,从而使得我们在接入私网的同时,走本地的网关上公网。但是 pull-filter 这个配置属性要在 OpenVPN 2.4 版本及以上才有。在 Ubuntu 16.04 中通过 apt 直接安装的 OpenVPN 是 2.3 版本的,更高的版本需要我们手动安装。

May 11
Nginx: 文件不存在即进行转发

这里给出一个非常有用的 Nginx 范式。假设我们使用 Nginx 来托管一个静态网站(Mostly),同时需要集成一个 Restful API 服务。我们希望这两个服务能够在同一个 Nginx 配置下的同一个域名内实现。因此我们需要实现在 Nginx 中当一个路径没有匹配文件时将请求传递给 Restful 服务器。

Apr 18