源码阅读 - Requests 模块设计

查看原文

requests 一直以来是 For Human 的教科书。我们可以通过 Package 入口文件看看在提供 For Human 的 API 最前面这个库是怎么做模块规划的。1. 检查兼容性,2. 导入各种包的元信息(例如版本,作者,证书等),3. 导出帮助函数,4. 处理兼容问题,5. 导出设计的主 API,6. 导出领域模型,7. 导出常量,8. 导出异常类,9. 设定日志。这几个步骤完全可以借鉴到我们的日常的模块设计去。

read more

Unix true v/s false 命令

查看原文

true 这个 bash 命令一个总是返回 0, 而 false 命令总是返回 1。一般来说 truefalse 是 shell 的内建函数,可以通过 $ which true$which false 验证,一般结果会是 shell built-in command 。少量系统会将这两个命令作为附加程序,那运行的速度就会慢下来。这个对应和 C 语言中的 1 是真而 0 是假是相反的,其实 true 返回 0 / false 返回 1 是 UNIX 一直以来的设定:0表示运行成功,1表示运行失败。例如 …

read more

Bash test 命令

查看原文

Bash 的比较 (test) 是必须掌握的技能。[ true-condition ] 会被解释为 0。方括号 [] 是命令 test 的语法糖。 [[ ... ]] 是升级版的比较,需要注意的是两个方括号里面不会扩展文件名,也不会分词,只会做参数的扩展, $variable 变量的替换,以及能用 &&, ||, <, > 这些操作符。不过在 if 后面,像 test, [], [[]] 这些都是可以省略的。不用 if 的时候方括号很适合做一些一行流的操作,例如: [ -f $variable ] && command-a || command-b 能比较变量文件是否存在,是则执行 command-a, 否则执行 command-b。

read more

如何阅读一个开源项目

查看原文

文中视图推荐如何深度阅读 Rails 项目,但其实也适用于所有你所依赖的库。当出 Bug 的时候,你可能会很深入库的代码去一探究竟。首先,相关领域的好书非常值得一读。例如想深入了解 Git,一本叫做 Pro Git 的书就不能错过。你不一定会成为专家,但是相关领域的知识会得到大大的扩充。其次,官方文档也是个切入点。例如,想深入了解 OAuth,就去看 RFC 文档。最后也最重要,也就是去阅读源码。看源码需要你有足够的经验和能力,最好有一定的能力了再去看。补充:直接问同事/牛人也不错!高手们一般都很乐意倾囊相授。

read more

为何 Unix exit_code 0 表示成功

查看原文

为什么 UNIX 设定 0 是运行成功呢?抛开历史原因,有一些可能的理由:一般 Bash 想知道一个程序的运行结果,要问上两个问题。1. 运行成功了么?2. 如果不成功那么原因是什么?理论上任何值都可以表示运行成功,但 0 相比而言是最方便的。不管在什么系统,使用了什么编码方式,使用了多长的字节表示数字,0 总是一样的。而像 1,在小端表示和大端表示两种风格下其实是不兼容的(10000000, 和 00000001)。一旦决定了用 0 表示成功,那除 0 以外的数字表示运行失败的原因就合乎情理了。

read more

源码阅读 - nohup

查看原文

UNIX 程序 nohup 的源码相当简单,总共就几十行。它的功能是将标准输出和标准错误重定向到 nohup.out (默认)或者参数自定义的日志文件,然后调用 execvp,将 nohup 这个进程在操作系统里整个替换成参数定义的命令起的进程。最为特别的一行代码是 (void)signal(SIGHUP, SIG_IGN);。这行代码会导致进程忽略 HUP 信号,而这个信号按照惯例是终端退出时发送给进程。忽略这个信号将导致终端退出时进程仍然还在运行,从而达到背地里暗戳戳地运行。

read more

nice - 一款设定运行优先级的命令

查看原文

Linux 命令 nice 是对同名的系统调用的简单包装。通过它我们可以启动一个进程,同时设定它进程调度的优先级。更高 niceness 值意味着更低的优先级。值域从 -20 到 19,只有超级用户可以设定负值。它的使用场景特别适合在有多个进程在请求 CPU 资源。高优先级的进程将得到更多的 CPU 时间分片。不过具体如何影响调度算法还取决于操作系统的具体实现,nice 只是给定了一个值而已。

read more

Nohup 的使用简介

查看原文

来看一看 nohup 的使用。 nohup command & 是最基本的用例,它起了一个 command 的进程,标准输出和标准错误重定向到 nohup.out,不响应 SIGHUP 信号。 nohup nice command & 是让 nohup 与另一个 UNIX 应用 nice 混合使用,它是 command 这个进程的优先级变得非常低,占用更少的 CPU 时间。对于使用 ssh 的场景,有可能会因为执行了 nohup 后台任务而拒绝登出,因为 ssh 拒绝丢失后台任务的标准输入的数据。对于这种场景,我们可以加上 < /dev/null 解决。原理是 stdin/stdout/stderr …

read more

URL v/s URI v/s URN

查看原文

术语 URL 还是 URI 很多人搞不清楚区别是什么。简单来说,URI 是比 URL 更大的集合。任何能用 URL 的地方都能用 URI 替代,反之不可以。具体来说,URL 是唯一地址,URN 是唯一名字。URI 的唯一标识,URI 包括 URL 和 URN。协议(访问方式)+ URN 组成了一个 URL。很确定能用某种设备或软件访问一个链接时,我们就能用 URL。

read more

« Page 52 / 54 »