2021

Python 以及 Bash 处理命令行参数的模板

Python 和 Bash 是很方便的便携命令行工具的语言。在实现命令行工具时,为了保障工具的灵活性,我们希望很多参数可以通过命令行来设置。这篇文章我们整理一下 Python 和 Bash 脚本编写过程中命令行参数的处理方法。

Jun 17
点击再载入 Disqus 的评论模块

本博客采用了 Disqus 的评论系统,然而遗憾评论数非常少,所以每次都直接载入评论模块感觉会浪费带宽和流量。所以我希望实现 Lazy Load 方式载入评论,即只要用户点击一个按钮之后才会显示评论模块。

Jun 16
Unraid: 手动更新 Docker 应用

最近 Unraid 出现了一个问题。明明一个 Docker 应用已经有了新版本,但是在 Unraid 的 Docker 页面使用 “Check for updates” 按钮却无法找到新版本。在网上搜索这个问题,大部分是在讨论是 Unraid 在检查更新的时候会显示新版本 “Not avaiable”,我这里却是每个应用都是 “Up to date” 状态。鉴于网上找不到合适的方法解决这个问题,我们可以通过命令行来手动更新。

Jun 16
公式离线渲染的性能问题

之前我在 Hexo + Mathjax: 公式离线渲染 介绍了在服务器端,也就是 Hexo 端渲染时就将 Mathjax 公式渲染成 Html 的方法。不过随着文章数量的增加,Hexo 渲染时会出现并发渲染公式的页面太多导致服务器内存溢出的问题(我用一个小虚拟机来做服务器博客后端,内存只有 2 GB)。因此有必要控制公式渲染的并发数。另一方面,公式渲染时纯 CPU 计算过程,不涉及 IO,因此使用异步函数加速意义也不太大。因此我们的核心思想是把之前实现的异步渲染版本换成同步渲染。

Jun 09
CSS 技巧:Scroll-Then-Fixed

这里说的 Scroll-Then-Fixed 是指在网页中有一些元素开始时可以跟随内容滚动,而待滚动到特定位置之后这些元素的位置保持不动,不会跟着内容滚动到看不见的区域。

Jun 05
IEEE 802.11 DCF 性能分析的经典模型

DCF 机制是 IEEE 802.11 协议的 MAC 层接入机制的核心。对其进行理论分析式进行 IEEE 802.11 协议改进与重新设计的基础。Bianchi [1] 的一篇经典论文提出了一种基于 Markov 模型的 DCF 机制性能分析方法。这篇经典论文有超过 1 万次应用,可以说是相关领域的必读论文。这篇文章针对这个 Markov 模型进行简单介绍。读者应当自行具备 Markov 模型的基本知识。

Jun 04
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