跳到主内容

琅環笔记

有博学强记者,尝为鹅厂从事。游于洞宫,遇一人于途,问逍遥曰:“君读书几何?”遥曰:“吾之未读者,则二十年内书盖有之也,若二十年外,则吾固已尽读之矣。”其人论议超然,遥颇内服,相与欢甚。因共至一处,大石中忽然有门,引遥入数歩,则别是天地,宫室嵯峨。引入一室中,陈书满架,其人曰:“此PL史也。”又至一室,则曰:“OS志也。”毎室各有奇书,惟一室屋宇颇高,封识甚严,有二犬守之。遥问故,答曰:“此皆操作系统、编程语言、算法分析、生发正骨诸秘籍。”指二犬曰:“此龙也。”历观诸室书,皆Windows以前事,多所未闻者,如「BeOS」、「Solaris」、「FreeBSD」、「LISP」亦皆在焉。遥心乐之,欲赁住数十日,其人笑曰:“君痴矣。此岂可赁地耶?”即命小童送出,遥问地名,对曰:“琅嬛福地也。”

def get_ipv6():
    import socket
    host_ipv6 = []
    ips = socket.getaddrinfo(socket.gethostname(),80)
    for ip in ips:
        if ip[4][0].startswith('24'):
            # 2408 中国联通
            # 2409 中国移动
            # 240e 中国电信
            host_ipv6.append(ip[4][0])
    return host_ipv6

大多数 Tips 背后总能找到一个设计错误

Tips 之所以让人眼前一亮,那是因为这个 Tips 的结构不寻常。

大体上,是因为设计者没有想到,或者想到了,但没有设计好导致的。

比如下面这个:

database disk image is malformed

SQLite 提示 "database disk image is malformed"

看起来很惊悚,说是数据库磁盘镜像畸形了。

第一感觉似乎是磁盘硬件坏道了?

问题重现

当我在 PyCharm 中选中了项目的根目录后,在菜单 File -> File Properties -> Line Separators 的切换后,SQLite 数据库文件报错了;

我进行这个操作的主要原因是,每当我添加文件到 git 时,以 LF 为分隔符的 sitemap.xml 文件总是有一个 warning;

而这个报错的主要原因,被证明是一个 Python 2 的遗留问题导致的。

>git add .
warning: LF will be replaced by CRLF in docs/sitemap.xml.
The file will have its original line endings in your working directory

问题原因

没有充分证实,但非常有可能是 LF 到 CRLF 的替换损坏了 SQLite 的数据库文件。

你想问问 PyCharm,你怎么这么蠢?

PyCharm 可能会说,怪我干什么,我只是个工具!

但我认为吧,PyCharm 确实有理由识别这是一个数据库文件吧,毕竟你是可以直接打开浏览和处理的。

好在此处,是之用到 SQLite 作为数据生成的本地缓存,且在 GitHub 上有备份,于是拿了一份下来本地覆盖既修复了。