如何为 Github Pages 自定义域名配置 HTTPS?

查看原文

Github Pages 自定义域名无法拥有 HTTPS,这可以通过配置 CDN 服务绕过解决。假设使用 CloudFlare 服务,你可以通过将 name server 指向到 CloudFlare 服务,之后等待 24 小时 SSL 证书发送完毕即可。Techshack Weekly 网站就通过 CloudFlare 做 CDN,同时支持了 HTTPS。

read more

Unix 手册阅读 - rmdir.2

查看原文

rmdir() 函数是命令 rmdir 的底层函数,它可以删除一个空目录。空目录的概念,在 Unix 编程中,是指只包含了 ... 这两项的目录。调用成功意味着:这个目录在文件系统系统中占用的空间被释放。

目录下有文件,意味着它的链接计数不为 0,也就是说,不是空目录。对这样的目录调用 rmdir() 会报错 ENOTEMPTY。

另外,值得一提的是,就算链接计数到 0 了,如果有进程还打开了这个目录,那么调用函数也会失败,报错 EBUSY。

衍生思考:

  • 文件系统节点下明明有 ... 两项,为什么还叫空目录呢?不妨将 ... 看作是进入和离开目录的门的门把手,而非是目录里的文件。
  • rmdir 为什么这么执着于删除空目录,而把删除递归删除文件这种事情交给 rm -r 呢?一个想法是 rmdir …
read more

Unix 手册阅读 - mkdir.2

查看原文

mkdir() 操作当调用成功时,会在文件系统中建立指定名字的目录,其 owner 一般是进程的 uid。目录的 mode 设置规则是:mode & ~umask & 0777。Linux 中新目录继承父目录的 mode 设置,这意味着目录的 gid 也会继承。对于目录来说,一般而言,我们至少会设置一个 x 权限给它,这样我们才能访问到目录中的文件名。

仔细查看这些错误码,会发现主要分成三类:

  • Pathname 有没有问题?
  • 权限有没有问题?
  • 空间还够不够?
read more

Bit Bucket 是什么?

查看原文

Bit Bucket 是一个 Jargon,一般用于说明被丢弃的数据,或者邮件没送出去的借口。它字面意义上就是存放 bit 的桶。这个名词表达了一个概念: bit 是内存中被创建出来是无法摧毁的,最多只能被误放在某个地方。Bit Bucket 就像一个水桶一样,存放所有不要的字节。

read more

阅读 Python 文档 - stat 模块

查看原文

Python stat 模块定义了一些帮助解读 struct stat 结构体的常量和函数。struct stat 结构体可以由 stat, fstat, lstat 这三种操作返回。

我们一般用 ls -l 查看 stat 的信息。

这些常量应该被定义在 <sys/stat.h> 头文件中,例如

  • S_ISDIR(mode) - 目录
  • S_ISCHR(mode) - character special device file (for nocaching device reading)
  • S_ISBLK(mode) - block special device file (for caching device reading)
    • 注 …
read more

阅读源码 - `sys/stat.h`

查看原文

<sys/stat.h> 头文件定义了 stat 数据结构,以及一些检测数据结构字段的宏,这些宏可以用于检测文件类型。

  • stat 函数返回 path 文件信息
  • fstat 函数返回 fd 的文件信息
  • lstat 函数返回 path 的文件信息,若为链接则返回链接的文件信息,而非指向文件的文件信息。
read more

`/dev/null` 是什么?

查看原文

/dev/null 具体来说,是指操作系统中的一个忽略所有写操作,并返回写操作成功的 device file。它也被称作 bit bucket, black hole。它一般用于抛弃不想要的进程输出,或者零输入。

read more

Python 库 - Trio

查看原文

Trio 是另一个 Python Async 编程的库,它的设计和 curio 是很接近的。

  • 通过 trio.run(coro) 运行所有的异步方法。
  • async with trio.open_nursery() as nursery: nursery.call_soon(child) 归组一系列子 coro。
  • trio.run(parent, instruments=[MyTracer()]) 添加流程监控。
  • 同样基于 task 进行管理 coroutine
  • 单线程,无 Thread。
  • 使用场景:10K+ 任务,只要 cpu 和带宽还够用。
read more

« Page 46 / 54 »