Skip to content

Commit

Permalink
ex9
Browse files Browse the repository at this point in the history
  • Loading branch information
wizardforcel committed Aug 4, 2017
1 parent 213ac3c commit 6fcb60e
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions ex9.md
@@ -0,0 +1,57 @@
# 练习 9:`sed`

> 原文:[Exercise 9: sed](https://learncodethehardway.org/more-python-book/ex9.html)
> 译者:[飞龙](https://github.com/wizardforcel)
> 协议:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻译](https://translate.google.cn/)
使用这些小型项目来研究你自己是有用的,但让我们来看看你主要关注的主题:

+ 开始工作的启动流程,例如你的文本编辑器,你可以打字打的多好,以及计算机内部发生的其他事情。
+ 心理状态,当你开始工作时,建议将日志作为控制它的一种方式。
+ 工作环境包括你的桌子,照明,椅子和你使用的电脑类型。
+ 身体姿势和健康,以避免在工作时受伤。

在这个练习中,我们将采取这一改进计划,并进一步跟踪一些指标。你一直在使用小型命令行工具,阅读并确定其功能,然后花费45分钟来实现一个简单的黑魔法。现在你可以列举你的功能,确定优先级,然后确定在45分钟内可以完成的功能。事实上,你可以回溯目前为止所做的所有项目,以及你的更改笔记,并计算出这一指标,看看你是否在改进。

现在花点时间来回顾你的笔记,并大概估算每45分钟的完成的功能的百分比。在纸上绘制他们,然后看你的笔记,看是否有显著的变化,是好还是坏,当你改变你的工作方式的时候。然后在这个练习中,尝试根据你所做的改变,来预测你将做多少工作。你甚至可以尝试将一些障碍添加回你的流程,看看它如何影响你的生产力。

> 警告
> 请记住,这是个人指标,而不是与任何人分享的内容。这些几乎不科学,意味着你仅仅在分析你的工作方式中获得一些客观性。它们不是可以描述所有程序员的宏观指标,但是你最好相信,如果经理发现你有这些东西,他们会要求看到它们。然后,他们会要求你的团队中的每个人都开始做这些工作,然后管理层将会使用这些来引起大量的麻烦。将你的实验室笔记看做非常私人的记录,并且从不让任何人看到它。
## 挑战练习

这个练习将比其他练习更复杂,因为我们将要处理更多的正则表达式,并实现一个名为`sed`的工具。通过接受利用正则表达式替换模式串,`sed`工具能够让你改变文本,然后在接收到的每一行中,确定要替换什么。难点可能在于实现`sed`的表达式格式,所以我建议你用两种方法来实现:

Lv1 具有命令行选项,用于最基本的`sed`用法,将一个字符串替换为另一个字符串。
Lv2 在这些命令行选项中启用正则表达式。
Lv3 是实现`sed`表达式格式。

使用`sed`的一个例子是,在文本流中将一个单词更改为另一个单词。如果我想更改`ls`的输出,以便使用“author”替换我的名字,我可以这样做:

```
ls -l | sed -e "s/zedshaw/author/g"
```

然而,`sed`的实力在于使用正则表达式来匹配模式串并替换它们。如果你使用 vim 编辑器,那么你已经熟悉这种语法:

```
ls -l | sed -e"s / Jul [0-9] [0-9] / DATE / g"
```

你应该阅读`man sed`页面,但你可能需要进行更多的研究来实现它。我建议你晚上做你的研究,然后根据这项研究,第二天进行45分钟的 Hack。这将有助于你均衡你的指标,专注于你的工作。


## 研究性学习

+ 当你制订指标时,你是否发现了异常或令人惊讶的事情?
+ 在开始本课程之前,你的工作预测是什么?
+ 它如何匹配你实际所做的事情?

## 深入学习

在这个练习的视频(付费)中,我会向你展示一个叫做“运行图”的东西。运行图是你希望监视的一些活动的简单图表,向你显示如何随时间变化。人们使用运行图来发现行为的巨大变化,因为它们是既简单又有效的可视化工具。你将在书中使用运行图,因为它们非常简单但非常强大。

0 comments on commit 6fcb60e

Please sign in to comment.