Recent Posts

Vim 里的特殊字符处理

问题

在处理某个文件时,发现里面有一些类似 <200b> 这样的特殊字符,需要清理掉。

处理办法

经过搜索,在 Vim 里处理这些特殊字 …

gettid() 编译问题

代码里用到的 gettid(),编译时有报错,说找不到对应的头文件。

根据 man gettid 里的说法,libc 并没有提供这个系统调用的包装:

NOTES
    Glibc does not …

Python 打包工具 zipapp

Python 标准库里提供了一个项目打包压缩的工具 zipapp,可以把项目打包到一个可执行文件里,从而方便地发布或者分享出去;收 …

.NET Framework 3.5 installation error

安装某软件时,它提示有对 .NET 3.5 的依赖,因为本地没有安装对应的版本。但 Windows 在自动安装 .NET 3.5 失败了,返回了错误号:0x800F081F …

Pelican 编译问题

今天遇到了一个问题:重新编译 pelican 项目时,发现编译生成的 articles 数量要比正常的少很多,而且没有任何出错信息。

经过研究,找 …

使用 Kill 发信号时误杀进程的问题

程序里会使用 Kill 发送 SIGTERM 信号,要求某进程组结束:

kill -15 -<pgid>

实际运行时发现一个问题,除了这个目标进程组之外,有时候其他 …

Python decorator 被装饰函数的调用问题

装饰器模式(Decorator Pattern)可以在不需要改变函数实现的情况下,修改或者完善它的功能。多数情况下是在被装饰函数调用的之前 …

Python decorator 装饰器的 wrapper 问题

问题:

def log(func):
    def wrapper(*args, **kwargs):
        print('before call %s' % func.__name__)
        func(*args, **kwargs)
        print('after call %s' % func.__name__)

    return wrapper

@log
def test_func(a, b):
    print('%d + %d = %d' % (a, b, a + b))

使用 @log 的 decorator 后,以下的打印 …

Python decorator 装饰器

装饰器模式(Decorator Pattern)是设计模式中的一种,主要目的是提供了这样一种操作,可以在不需要改变函数实现代码的情况下,用来 …

运行程序时设置 timeout 超时

问题

因为有个临时的需求,所以开了服务并监听在某个公网端口上,然后忘了关了 …… 直到很久才想起 ……

解决

对于类似的使用 …