1
0
mirror of https://github.com/apachecn/lmpythw-zh.git synced 2025-05-28 12:02:19 +00:00
lmpythw-zh/ex25.md
wizardforcel 9363bc863b ex25
2017-08-11 10:03:09 +08:00

36 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 练习 25`xargs`
> 原文:[Exercise 25: xargs](https://learncodethehardway.org/more-python-book/ex25.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
我们回到挑战模式的练习,并为你热身,你将会实现`xargs`。这应该是一个简单的实现,但是`xargs`可能很复杂,因为你需要启动其他程序才能使其运行。你要研究的 Python 模块是[`subprocess`](https://docs.python.org/2/library/subprocess.html),可以从 Python 运行其他程序并收集其输出。你将需要了解该模块,稍后完成`xargs`和本书的许多其他项目,因此要好好研究。
## 挑战练习
实现`xargs`只需 45 分钟,所以你可以做出一些东西,之后你可以审计它。记住第一个 Hack 就是让项目能运行,而不是使其完美。你将在此项目中的后续步骤中优化它并使其更好。记住你可以键入:
```
man xargs
```
获取`xargs`的手册页并研究如何工作。这是一个方便的 Unix 工具,但你也可以使用`find`做几乎相同的事情。当你实现`xargs`时,尝试找出,它比起`find --exec`有什么优势。
经过 45 分钟的 Hack你应该休息一下然后使用第三部分的代码审计检查清单对代码进行客观的审计。不要修复代码只需编写注释指出需要改变什么有什么缺陷。在尝试修复时很难保持客观所以只需要注意审计中的问题然后在下一轮中修复它们。
然后,你将进行一系列代码/审计的计时会话,来习惯于进行审计。花费你所需的尽可能长的时间,尽可能多地实现`xargs`,然后继续下一个项目。
>
> 记住要在日志中跟踪你的缺陷,所以你可以绘制它们的运行图,并寻找趋势。
## 研究性学习
+ 在代码/审计的流程中,你是否发现任何你不断犯下的错误?把这些当成潜在的事情写下来并处理。
+ 你的代码/审计流程中,是否有一个特定的时间点,有或多或少的缺陷?比起最开始更多,还是三到四个流程之后更多?为什么会这样?
+ 尝试为你的`xargs`的实现编写自动测试,并查看是否降低你的缺陷率。在下一个练习中,你将会进行一个更加受控的测试研究,就像这样,但是现在尝试一下,看看你发现了什么。