Merge pull request #4 from LCTT/master

更新 20161207
This commit is contained in:
Chang Liu 2016-12-07 22:34:45 +08:00 committed by GitHub
commit f77d927b7a
145 changed files with 7245 additions and 3177 deletions

View File

@ -0,0 +1,50 @@
容器和 Unikernel 能从树莓派和 Arduino 学到什么?
==========================================================================
![](https://opensource.com/sites/default/files/styles/image-full-size/public/images/business/bus-containers.png?itok=vM7_7vs0)
某一天,我和我的一个机械工程师朋友聊天的时候。 他最近在做一个给半挂卡车的电子辅助刹车系统,他提到他们公司的办公室里都是 [Arduinos][1]。这主要是方便员工可以快速的对新的想法进行实验。他也提到了Arduinos 其实比自己画电路板更加昂贵。对此,我感到非常震惊,因为我从软件行业得到的印象是 Arduinos 比定制电路板更加便宜。
我常常把 [Arduinos][2] 和 [树莓派][3] 看做是可以制作非常有趣设备的小型、Cool、特别的组件。我主要从事于软件行业并且总是觉得运行在 x86 和 x86-64 设备上的 Linux 才算是“常规用途”。而事实是Arduinos 并不是特殊用途。实际上,它们是很常规的用途。它们相当的小、便宜,而且非常的灵活。这就是为什么它们像野火一样流行起来的原因。它们有全品类的输入输出设备和扩展卡。它们能让创客们快速的构建非常 Cool 的设备。它们甚至可以让公司可以快速地开发产品。
一套 Arduino 的单价比批量生产的电路板高了很多,但是,看不见的时间成本却低了很多。当电路板大规模生产的时候,价格可以控制的很低,但是,之前的研发费用却高了很多。所以,总而言之,答案就是,使用 Arduino 划得来。
### Unikernel、Rump 内核和容器主机
Unikernel、Rump 内核和迷你 Linux 发行版,这些操作系统是为了特有用途而构建的。这些特有的操作系统,某种程度上就像定制电路板。它们需要前期的投入,还需要设计,但是,当大规模部署的时候,它可以提供强大的性能。
迷你操作系统,例如:红帽企业版 Atomic 或者 CoreOS 是为了运行容器而构建的。它们很小,快速,易于在启动时配置,并且很适合于运行容器。缺点就是它需要额外的工程量来添加第三方插件,比如监控客户端或者虚拟化的工具。副作用就是载入的工具也需要重新设计为超级权限的容器。 如果你正在构建一个巨大的容器环境,这些额外的工作量是划算的。但是,如果只是想尝试下容器,那可能就没必要了。
容器提供了运行标准化的工作流程(比如使用 [glibc][4] 编译的能力。一个好处就是你可以在你的电脑上构建和测试这个工作单元Docker 镜像)并且在完全不同的硬件上或者云端非常顺利的部署,而保持着相同的特性。在生产环境中,容器的宿主机仍然由运维团队进行配置管理,但是应用被开发团队控制。这就是对双方来说最好的合作方式。
Unikernels 和 Rump 内核依旧是为了特定目标构建的,但是却更进一步。整个的操作系统在构建的时候就被开发或者架构师配置好了。这带来了好处,同时还有挑战。
一个好处就是,开发人员可以控制这个工作流程的运转。理论上说,一个开发者可以为了不同的特性,尝试 [不同的 TCP 协议栈][5],并且选择最好的一个。在操作系统启动的时候,开发人也可以配置 IP 地址,而不是通过 DHCP。 开发人员也可以裁剪任何对于应用而言不需要的部分。这也是性能提升的保障,因为减少了[不必要的上下文切换][6]。
同时Unikernel 也带来了挑战。目前,还缺失很多的工具。 现在,和画板子的世界类似,开发人员需要花费很多时间和精力在检查是否有完整的库文件存在,不然的话,他们必须改变他们应用的执行方式。在如何让这个“嵌入式”的操作系统在运行时配置的方面,也存在挑战。最后,每次操作系统的大改动,都需要[反馈到开发人员][7]来进行修改。这并没有一个在开发和运维之间明确的界限,所以我能想象,为了接受了这个开发流程,一些组织或者公司必须要改变。
### 结论
在专门的容器主机比如 Rump 内核和 Unikernel 方面也有一些有趣的传闻,因为,它们会带来一个特定工作流程的潜在变革(嵌入式、云,等等)。在这个令人激动又快速发展的领域请保持你的关注,但是也要谨慎。
目前Unikernel 看起来和定制电路板很像。它们都需要前期的研发投资,并且都是非常独特的,可以为确定的工作流程带来好处。同时,容器甚至在常规的工作流中都非常有趣,而且它不需要那么多的投入。一个简单的例子,运维团队能方便的在容器上部署一个应用,但是在 Unikernel 上部署一个应用则需要重新设计和编码,而且业界并不能完全保证,这个工作流程就可以被部署在 Unikernel 上。
容器Rump 内核 和 Unikernel 有一个光明的未来!
--------------------------------------
via: https://opensource.com/business/16/5/containers-unikernels-learn-arduino-raspberry-pi
作者:[Scott McCarty][a]
译者:[MikeCoder](https://github.com/MikeCoder)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/fatherlinux
[1]: https://opensource.com/resources/what-arduino
[2]: https://opensource.com/life/16/4/arduino-day-3-projects
[3]: https://opensource.com/resources/what-raspberry-pi
[4]: https://en.wikipedia.org/wiki/GNU_C_Library
[5]: http://www.eetasia.com/ARTICLES/2001JUN/2001JUN18_NTEK_CT_AN5.PDF
[6]: https://en.wikipedia.org/wiki/Context_switch
[7]: http://developers.redhat.com/blog/2016/05/18/3-reasons-i-should-build-my-containerized-applications-on-rhel-and-openshift/

View File

@ -0,0 +1,336 @@
Excel “过滤和编辑” - Pandas 中的示范操作
==================================================
![](http://pbpython.com/images/Boolean-Indexing-Example.png)
### 介绍
我听许多人说我[之前的关于 pandas 处理一般的 Excel 任务][1]的文章对于帮助新的 pandas 用户将 Excel 处理过程转化成对应的 pandas 代码是有用的。这篇文章将会保持传统,通过介绍不同的 pandas 使用 Excel 的过滤功能作为一个模型进行索引的例子来理解该处理过程。
大多数 pandas 的新手首先学到的东西就是基本的数据过滤。即使在过去的时间中使用 pandas 工作持续数月,我最近意识到我没有在我每天的工作中使用过的 pandas 过滤的方法还有另外一个好处。也就是说,你可以过滤一组给定的列,而使用一个简化的 pandas 的语法更新另一组列。这和我所说的 Excel 中的“过滤并编辑”很像。
这篇文章将会介绍一些基于各种条件过滤一个 pandas 数据帧并同时更新数据的例子。同时,我将更多的介绍一下 panda 的索引,和如何使用索引功能例如 .loc , .ix 和 .iloc 来简单、快速基于简单或者是复杂的条件来更新一个数据子集。
### Excel: “过滤并编辑”
在数据透视表以外,在 EXCEL 顶部工具栏的工具之一是过滤器。这个简单的工具允许用户通过不同的数据、文本与格式条件去快速过滤与排序数据。这里是由几个不同的条件过滤数据产生的样本数据的基本截图:
![](http://pbpython.com/images/filter-example.png)
该过滤过程是直观的,即使是最新手的用户,也很容易掌握。我也注意到,人们会使用此功能来选择数据行,然后根据行的条件来更新其它的列。下面的例子显示了我所描述的情形:
![](http://pbpython.com/images/commission-example.png)
在这个例子中,我过滤了 Account Number、SKU 和 Unit Price 的数据。接着我手工增加了 Commission_Rate列并且在每个单元格中输入 0.01。这种方法的好处是可以很容易理解,并有助于管理有联系的复杂数据而不用写长长的 Excel 公式或者使用 VBA。这种方法的缺点是它是不可重复的同时对于刚入门的外行人了解哪些条件被用于过滤器可能是比较困难的。
例如,假设你看上述截图,如果不看每一列数据,没有明显的方法去知道什么被过滤了。幸运的是,我们可以在 pandas 中完成相似操作。不用奇怪,在 pandas 中使用简单干净的代码来执行“过滤并编辑”模式是很容易的。
### 布尔检索
现在,我想通过 pandas 中一些布尔索引的细节来使你对这个问题有点感觉。如果你想要去理解 pandas 的在多数情况下的[索引和数据选择][3],那么这是一个要理解的重要概念。这种想法可能看起来有点复杂,对新的 pandas 用户(可能对经验丰富的用户来说太基础),但我认为重要的是要花一些时间了解它。如果你掌握了这一概念,用 pandas 进行数据工作的基本过程将更简单。
pandas 通过标签、基于数字的位置或者一个布尔值True/False列表来支持索引或者选择数据。使用一个布尔值的列表来选择一个行被称为布尔索引将是本文其余部分的重点。
我发现,我的 pandas 的工作流程往往侧重于使用布尔值的列表选择我的数据。换句话说,当我创建了 pandas 数据帧,我倾向于保持数据框架的默认索引。因此,该布尔索引本身并不具有真正意义,同时也不是简单的选择数据。
> 关键点
> pandas 中布尔索引是选择行的数据的强大的和有用的方法之一。
让我们看一些示例的数据帧来帮助澄清在 pandas 中布尔索引做的是什么。
首先,我们将创建一个来自 Python 的列表的非常小的数据帧,并使用它来展示布尔索引是如何工作的。
```
import pandas as pd
sales = [('account', ['Jones LLC', 'Alpha Co', 'Blue Inc', 'Mega Corp']),
('Total Sales', [150, 200, 75, 300]),
('Country', ['US', 'UK', 'US', 'US'])]
df = pd.DataFrame.from_items(sales)
```
|account |Total Sales |Country
:--|:-- |:-- |:
0 |Jones LLC |150 |US
1 |Alpha Co |200 |UK
2 |Blue Inc |75 |US
3 |Mega Corp |300 |US
注意值 0-3是怎么样会自动分配给行的这些都是索引在这个数据集它们不是特别有意义的但对 pandas 是有用的,对于了解如下其他没有描述的用例是重要的。
当我们引用布尔索引时,我们只是说,我们可以通过一个 True 或 Flse 的值的列表表示我们要查看的每一行。
在这种情况下如果我们想查看Jones LLC、Blue Inc 和 Mega Corp 的数据我们可以看到True、False 列表看起来会像这样:
```
indices = [True, False, True, True]
```
这没什么奇怪的,你可以通过把这个列表传入到你的数据帧,你就看到它只会显示该值是 True 的行:
```
df[indices]
```
|account |Total Sales |Country
:--|:--|:--|:--
0 |Jones LLC |150 |US
2 |Blue Inc |75 |US
3 |Mega Corp |300 |US
这里是一个刚刚发生了什么的示意图:
![](http://pbpython.com/images/Boolean-Indexing-Example.png)
手工创建索引列表是可以工作的但是显然对任何一个稍微大点的数据集来说却不是可扩展的或非常有用的。幸运的是pandas 可以用一个简单的查询语言创建这些布尔索引,对熟悉使用 Python (或任何语言)的人应该很容易。
例如,让我们看看来自美国的所有销售的行。如果我们执行一个基于 Country 列的 Python 表达式:
```
df.Country == 'US'
```
```
0 True
1 False
2 True
3 True
Name: Country, dtype: bool
```
这个例子显示了 pandas 如何将你的 Python 的常规逻辑,把它应用到一个数据帧并返回一个布尔值列表。那么这个布尔值的列表可以传递到数据帧来获取相应的行。
在真正的代码中,你不需要做这两个步骤。简洁的做这事的方法典型的看上去如下:
```
df[df["Country"] == 'US']
```
|account |Total Sales |Country
:--|:--|:--|:--
0 |Jones LLC |150| US
2 |Blue Inc |75 |US
3 |Mega Corp| 300| US
虽然这个概念很简单,但你可以编写非常复杂的逻辑,使用 Python 的威力来过滤数据。
> 关键点
> 在这个例子中, `df[df.Country == 'US']` 等价于 `df[df["Country"] == 'US']` . 标记法是简洁的但是在你列名中有空格时不会工作。
### 选择需要的列
现在我们已经指出了如何选择行的数据我们如何控制显示哪些列在上面的例子中没有明确的方法完成这个。Pandas 能使用三种基于位置的索引支持这个用法:.loc 、iloc 和 .ix 。这些功能也允许我们在所看到的行之外挑选列。
关于什么时候选择使用 .loc 、iloc 或者是 .ix在这里很容易困惑。 快速总结的区别是:
- .loc 用于标签索引
- .iloc 用于基于整数的位置
- .ix 是一个快捷方式,它将尝试使用标签(比如 .loc但失败后将退而求其次使用基于整数的位置比如 .iloc
因此问题是我该使用哪个?我必须坦诚地说,我有的时候也会被这些搞混。我发现我最常使用 .loc 。主要是因为我的数据不适合于有意义的基于位置的索引(换句话说,我很少发现自己需要使用 .iloc所以我坚持使用 .loc。
公平地讲,每一个方法都有自己的用途,在许多情况下都是有用的。特别是处理多索引数据帧时。我不会在这篇文章中讨论那个话题-也许在未来的博文会说。
现在我们已经涵盖了这样一个话题,让我们来展示如何筛选一行的值的数据帧,具体选择要显示的列。
继续我们的例子,如果我们只是想显示对应于我们的索引的帐户名称,该怎么做?使用 .loc 很简单:
```
df.loc[[True, True, False, True], "account"]
```
```
1 Alpha Co
2 Blue Inc
3 Mega Corp
Name: account, dtype: object
```
如果你想看到多个列,只需传递一个列表:
```
df.loc[[True, True, False, True], ["account", "Country"]]
```
| account |Country
:--|:--|:--
0 |Jones LLC| US
1 |Alpha Co |UK
3 |Mega Corp |US
真正的威力是当你在你的数据上创建更复杂的查询。在这种情况下,让我们展示所有的帐户名称和 sales > 200 的国家:
```
df.loc[df["Total Sales"] > 200, ["account", "Country"]]
```
|account| Country
:--|:--|:--
3 |Mega Corp| US
这个过程可以看做有点相当于我们上面讨论过的 Excel 过滤器。但是有更多的好处,你还可以限制你检索的列数,而不仅仅是行。
### 编辑列
所有这些都是好的背景知识,但当你使用一个类似的方法基于选择的行来更新一个或多个列时,这个处理过程就真的是非常漂亮。
作为一个简单的例子,让我们增加一个 rate 列到我们的数据:
```
df["rate"] = 0.02
```
| account |Total Sales| Country |rate
:--|:--|:--|:--|:--
0 |Jones LLC |150 |US |0.02
1 |Alpha Co |200 |UK |0.02
2 |Blue Inc |75 |US |0.02
3 |Mega Corp |300 |US |0.02
假如说如果你卖了超过 100你的利率是 5%。基本的过程是设置一个布尔索引来选择列,然后将该值赋给利率列:
```
df.loc[df["Total Sales"] > 100, ["rate"]] = .05
```
| account |Total Sales| Country| rate
:--|:--|:--|:--|:--
0 |Jones LLC |150| US| 0.05
1 |Alpha Co |200 |UK |0.05
2 |Blue Inc |75| US |0.02
3 |Mega Corp |300| US| 0.05
希望你逐步看过这篇文章,这将对于帮助你理解这个语法是如何工作的是有意义的。现在你明白了“过滤并编辑”方法的基本原理。最后一节将介绍 Excel 和 pandas 这个过程的更多细节。
### 将这些组合在一起
对于最后的例子,我们将创建一个简单的佣金计算器,使用以下规则:
- 所有的佣金计算在交易水平
- 所有销售的基础佣金为 2%
- 所有 shirt 都将获得 2.5% 的佣金
- 有个特殊的环节,在一个交易中销售的数额 >10 的 belt 将得到 4% 的佣金
- 所有在一个单一的 shoe 类交易中 > 1000 美元,有一个特别的 250 美元奖金加上一个 4.5% 的佣金
要在 Excel 中做到这一点,使用的过滤器和编辑方法:
- 添加一个 2% 的佣金列
- 添加一个 0 美元的奖金列
- 过滤 shirts并将 vale 改为 2.5%
- 清除过滤器
- 过滤数量 > 10 的 belt ,并将值更改为 4%
- 清除过滤器
- 过滤 > 1000 美元 shoe并相应的增加佣金和奖金为 4.5% 和 250 美元
我不会显示每一步的屏幕快照,但这里是最后一个过滤器的屏幕快照:
![](http://pbpython.com/images/filter-2.png)
这种方法很简单,便于操作,但它不具备很好的可重复性,也不能审核。当然还有其他的方法,如在 Excel 公式或 VBA 中实现这些。然而,这种过滤器和编辑的方法是常用的,可以说明 pandas 的逻辑。
现在,让我们在 pandas 中运行这个例子。
首先,读入 [Excel 文件][4]同时加入默认值为 2% 的 rate 一列:
```
import pandas as pd
df = pd.read_excel("https://github.com/chris1610/pbpython/blob/master/data/sample-sales-reps.xlsx?raw=true")
df["commission"] = .02
df.head()
```
| account number| customer name| sales rep| sku |category |quantity |unit price| ext price| date| commission
:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--
0 |680916 |Mueller and Sons |Loring Predovic |GP-14407 | Belt |19 |88.49 |1681.31 |2015-11-17 05:58:34| 0.02
1 |680916 |Mueller and Sons |Loring Predovic |FI-01804| Shirt |3| 78.07| 234.21 |2016-02-13 04:04:11 |0.02
2 |530925 |Purdy and Sons| Teagan OKeefe |EO-54210 |Shirt |19 |30.21 |573.99 |2015-08-11 12:44:38 |0.02
3 |14406| Harber, Lubowitz and Fahey| Esequiel Schinner| NZ-99565| Shirt| 12| 90.29 |1083.48 |2016-01-23 02:15:50 |0.02
4 |398620| Brekke Ltd |Esequiel Schinner |NZ-99565 |Shirt |5| 72.64 |363.20 |2015-08-10 07:16:03 |0.02
下一个规则是所有 shirt 获得 2.5% 和 Belt 销售 > 10 得到一个 4% 的 rate
```
df.loc[df["category"] == "Shirt", ["commission"]] = .025
df.loc[(df["category"] == "Belt") & (df["quantity"] >= 10), ["commission"]] = .04
df.head()
```
| account number |customer name |sales rep| sku |category |quantity| unit price| ext price |date |commission
:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--
0 |680916| Mueller and Sons| Loring Predovic| GP-14407| Belt| 19 |88.49| 1681.31 |2015-11-17 05:58:34| 0.040
1 |680916| Mueller and Sons| Loring Predovic| FI-01804| Shirt |3 |78.07 |234.21| 2016-02-13 04:04:11 |0.025
2 |530925 |Purdy and Sons |Teagan OKeefe| EO-54210 |Shirt| 19 |30.21 |573.99 |2015-08-11 12:44:38| 0.025
3 |14406| Harber, Lubowitz and Fahey| Esequiel Schinner| NZ-99565| Shirt| 12| 90.29| 1083.48| 2016-01-23 02:15:50 |0.025
4 |398620| Brekke Ltd| Esequiel Schinner| NZ-99565| Shirt| 5 |72.64 |363.20| 2015-08-10 07:16:03 |0.025
最后的佣金规则是加上特别的奖金:
```
df["bonus"] = 0
df.loc[(df["category"] == "Shoes") & (df["ext price"] >= 1000 ), ["bonus", "commission"]] = 250, 0.045
# Display a sample of rows that show this bonus
df.ix[3:7]
```
| account number| customer name |sales rep| sku |category| quantity| unit price| ext price| date| commission| bonus
:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--|:--
3| 14406| Harber, Lubowitz and Fahey| Esequiel Schinner| NZ-99565| Shirt |12 |90.29| 1083.48 |2016-01-23 02:15:50 |0.025 |0
4| 398620| Brekke Ltd| Esequiel Schinner |NZ-99565| Shirt| 5| 72.64| 363.20| 2015-08-10 07:16:03| 0.025| 0
5| 282122| Connelly, Abshire and Von Beth| Skiles| GJ-90272| Shoes| 20| 96.62| 1932.40 |2016-03-17 10:19:05 |0.045 |250
6 |398620 |Brekke Ltd| Esequiel Schinner |DU-87462 |Shirt| 10| 67.64 |676.40| 2015-11-25 22:05:36| 0.025| 0
7| 218667| Jaskolski-OHara| Trish Deckow| DU-87462| Shirt |11| 91.86| 1010.46 |2016-04-24 15:05:58| 0.025| 0
为了做好佣金的计算:
```
# Calculate the compensation for each row
df["comp"] = df["commission"] * df["ext price"] + df["bonus"]
# Summarize and round the results by sales rep
df.groupby(["sales rep"])["comp"].sum().round(2)
```
```
sales rep
Ansley Cummings 2169.76
Beth Skiles 3028.60
Esequiel Schinner 10451.21
Loring Predovic 10108.60
Shannen Hudson 5275.66
Teagan O'Keefe 7989.52
Trish Deckow 5807.74
Name: comp, dtype: float64
```
如果你有兴趣,一个例子手册放在[github][5]。
### 总结
感谢阅读文章。 我发现,在学习如何使用 pandas 的新用户所面临最大的挑战之一,是根据他们基于 Excel 的知识,如何找出建立一个等效的基于 pandas 的解决方案。在许多情况下pandas 的解决方案将是更健壮、更快、更容易审计和更强大的。然而,学习曲线需要花费一些时间。我希望这个展示了如何使用电子表格的过滤工具来解决一个问题的例子,将有助于那些刚刚在开始 pandas 之旅的同学们。祝你好运!
--------------------------------------------------------------------------------
via: http://pbpython.com/excel-filter-edit.html
作者:[Chris Moffitt ][a]
译者:[zky001](https://github.com/zky001)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: http://pbpython.com/author/chris-moffitt.html
[1]: http://pbpython.com/excel-pandas-comp.html
[2]: http://pbpython.com/excel-pandas-comp-2.html
[3]: http://pandas.pydata.org/pandas-docs/stable/indexing.html
[4]: https://github.com/chris1610/pbpython/blob/master/data/sample-sales-reps.xlsx?raw=true
[5]: https://github.com/chris1610/pbpython/blob/master/notebooks/Commissions-Example.ipynb

View File

@ -0,0 +1,61 @@
智能机应该舍弃耳机插口吗?以下是我们的观点
====
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/09/Writers-Opinion-Headphone-Featured.jpg)
尽管苹果公司将在 iPhone 7 上面取消耳机插口的传言早就有了,但是在上周苹果公司的公告证实了这个消息后,它还是成为了一个热门话题。
对于那些不知道这个最新消息的人再介绍下苹果公司已经移除了手机上的耳机接口改为通过闪电接口插入手机。随手机销售的除了闪电接口耳机外还有一个适配器如果人们还想在手机上使用现有的耳机可以使用它。苹果公司也将出售一款新产品AirPods。它们被戴入你的耳朵后通过无线和手机连接。舍弃耳机接口的最大的好处是能够让手机保持干燥和防水。
现在苹果公司将在 iPhone 7 上面取消耳机接口已经是一个重大新闻了,我们询问我们的作者,“你怎么看待智能机取消耳机接口?”
### 我们的观点
Derrik 认为“苹果公司的这种取消手机耳机接口的行为是为了推进更多昂贵的不遵循公开标准的外围设备。”他也不想每使用五个小时就不得不给 AirPods 充电。尽管他知道 3.5毫米 的耳机接口逐渐过时,作为一个“音质发烧友”,他喜欢新的,开放的标准,但“盈利性企业的推动”让他担心设备的自由性。
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/09/headphone-jacks.jpg)
Damien 在自从有了蓝牙耳机后的这段日子里基本不怎么使用耳机接口了。总之,他讨厌有线耳机的电线,所以他认为“移除手机耳机接口的做法非常好。”当然他也理解 Derrik 抱怨无线耳机耗尽电源后需要充电会带来不方便,给他一种“没有依靠”的感觉。
Trevor 直接了当地表明自己认为智能手机移除耳机接口是一种愚蠢的做法,当他了解到 iPhone 7 无法在给手机充电的同时使用耳机后,认为“愚蠢加倍”。他总是使用有线耳机来听音乐或者看视频,从不用蓝牙耳机。因为蓝牙耳机会加速手机电量的消耗,所以他用有线耳机。
Simon 并不是有线耳机的忠诚用户。他并没有见过太多为了留出更多空间而移除耳机接口的手机产品。他认为“接下来要看顾客是喜欢无线耳机、适配器、防水塞,还是 AirPods闪电接口或适配器”。他认为不应该这么快就移除智能机的耳机接口他更喜欢公共的可以适配所有的标准。
James 认为现在的无线技术已经足够成熟,所以他认为 iPhone 7 移除耳机接口是一个不错的策略,因为这也能够促进苹果公司硬件产品的销量。他碰巧使用过昂贵的有线耳机,所以就个人经历而言“还没有被说服,”他表示自己的 Xperia 智能手机虽然有耳机插口但是防水性也不差。
Jeffry 指出“几乎全世界所有科技领域的过渡性尝试,都是在无法从这些尝试中受益的人的强烈反对意见中开始的。”他还记得苹果公司因为移除软盘驱动器和不支持 Flash 曾遭到大量的抨击,但现在两者都已经成为行业规范了。他坚信一切都是为了更好的发展而慢慢演变的,智能机移除耳机接口只是“步入未来的一小步”,而苹果公司“足够勇敢来引导未来智能机的一种走向(顺便通过此方式赚点钱)”。
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/09/Writers-Opinion-Headphone-Headset.jpg)
Vamsi 并不介意耳机接口的移除,只要“有一个更好的解决方案,适用于使用不同类型耳机和其他的设备的用户”。他不认为通过闪电接口使用耳机是一个不错的解决方案,因为这使得几乎所有的其他耳机废弃。至于蓝牙耳机,他只是不想再使用另外一个设备。此外,他不想争论使用无线耳机可以提高手机的防水性能,因为已经存在不少带有耳机接口的设备防水性能也不错。
Mahesh 更喜欢用带有耳机接口的智能手机,因为他经常在给手机充电的同时听音乐。他认为我们将会在接下来的几个月看到移除耳机接口后给用户带来的诸多不方便之处。
Derrik 也不赞同“移除开放标准的接口,使用专有连接”。你可能认为可以通过适配器来使耳机连接手机,但是雷电接口可以被随时关闭,苹果公司也能够随时停止这些适配器的销售。他也指出 AirPods 不会取代蓝牙耳机。
![](https://maketecheasier-2d0f.kxcdn.com/assets/uploads/2016/09/Writers-Opinion-Headphone-AirPods.jpg)
至于我,我会在两方面来考虑这个事情:新技术和苹果公司产品的其他方面。自从 iPhone 系列第一款出售以来,我一直都在使用 iPhone 系列手机。但从 2012 年我用 iPhone 5 开始,我没有更换过手机,所以我是有些过时的。我会是第一批买 iPhone 7 的人。我讨厌白色的耳机线在我脸旁,所以我也可能会选择 AirPods。我很欣赏手机防水性能变得更好。至于同时充电和收听的问题新手机续航时间足够长所以我不认为这是什么大问题。即使我的旧 iPhone 5 手机,续航时间都可以达到 12 到 20 个小时之间。所以我不认为这是一个问题。
我们的作者已经给了你很多他们对于智能手机移除耳机接口的看法。你怎么看待这件事?你会想念耳机接口吗?你会从此技术更新中获得乐趣吗?你是会尝试使用 iPhone 5 还是使用 AirPods让我们在评论区了解你的看法。
--------------------------------------------------------------------------------
via: https://www.maketecheasier.com/should-smartphones-do-away-with-the-headphone-jack/?utm_medium=feed&utm_source=feedpress.me&utm_campaign=Feed%3A+maketecheasier
作者:[Laura Tucker][a]
译者:[WangYueScream](https://github.com/WangYueScream) [LemonDemo](https://github.com/LemonDemo)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.maketecheasier.com/author/lauratucker/

View File

@ -0,0 +1,88 @@
开源可以用来做设计吗?
================
开源的[超凡和强大][15]毋庸置疑。从服务器到个人电脑桌面、移动设备,甚至到所谓的“物联网”,开源在各个领域遍布全球。然而有一个行业,传统的专有闭源软件解决方案依然占据主导地位,并且通常特别昂贵,这就是设计产业。在这篇文章中,我们会大致描述一些自由及开源的替代软件来抛砖引玉,看是否能代替你现在所用的设计工具集。也许你是一个刚起步的设计师,需要节省开支。也许你的经验十分丰富,只是单纯的想换一个更加“开放”的工作方式。读下去,让我们看看[自由及开源软件][14]世界到底带来了什么!
### 绘图
在开源世界,有几个可行且十分强大的工具,代替 Adobe 支持的主流产品。
#### GIMP
GIMP, 或者说 <ruby> [GNU 图像处理程序][13]<rt>GNU Image Manipulation Program</rt></ruby> 是一个非常强大的免费开源软件,可替代 Adobe 公司的 PhotoShop 。它由一个相当强大的核心团队开发和维护,为设计创造提供强大的图片编辑工具,比如滤镜、笔刷、修饰。如果你想使用 UX/UI 库设计模型GIMP 甚至可以处理 .PSD 文件。最后GIMP 还可以用来做数字艺术、logo 等类似的东西。GIMP 可以免费下载并在 Linux、MacOS 和 Windows 上运行。
#### Inkscape
[Inkscape][12] 有一个宣传语,代表着它的核心价值观 —— “Draw Freely”它是一个开源而自由的产品可以替代 Adobe 公司的另一产品 —— 强大、专有而且昂贵的矢量程序 Illustrator 。Inkscape 提供了大量的设计和画图工具,易用的颜色拾取导航栏,滤镜和渐变工具,还有很多很多。如果设计师下决心使用开源软件解决方案,你可以在博客和论坛帖子上找到非常好的在线文档。和 GIMP 一样Inkscape 也可以免费下载并可在 Linux、MacOS 和 Windows 上运行。
想从经验丰富的图形和网页设计师那里学习更多关于这些开源工具的使用知识?请在 YouTube 网站上找一下这些人:
*   [Nick Saporito][3] Nick 有很好的资源,介绍 Inkscape 的基本特性,涵盖了图标、网站或者图形设计师日常会使用的基本功能)。
*   [Irfan Prastinato][2] Irfan 的亮点是使用 Inkscape 专注于现代图标的创作)。
* [Cameron Bohnstedt][1] Cameron 是一个数字艺术家由于他很专业并且有丰富的经验开源工具GIMP、Inkscape、Blender的力量被真正的展示了出来。很有感染力值得一看
### 网页设计与开发
要设计功能丰富、响应快速的网页和原型时,这里有几个工具 —— 有些是开源的 —— 供设计师选择。这些工具最近几年一直在持续发展,在我看来,这应该是反映出了设计发展的趋势是响应式网站设计要和我们生产的设备变化得一样快。
#### Bootstrap
在我看来,[Bootstrap][11] 促进了响应式设计甚至是“移动为先”的设计实现了跳跃式的突破。Boostrap 最初由 Twitter 开发人员 Mark Otto 和 Jacob Thornton 开发,是一个完全开源、完全可定制的开发框架,利用它你可以制作出满足你的客户需求的网页。有了 Bootstrap 就有了坚实的基础, Bootstrap 4.0 目前正在进行内部测试,在稳定的 3.0 版本的基础上做了大量的底层优化,包括 CSS 预处理器从 Less 换成 Sass一个增强的网格系统JavaScript 插件的重构等等。
#### Gravit
另一个自由开源的矢量程序 Gravit它受到越来越多的关注。Gravit 可以在浏览器上运行,不仅是 Adobe Illustrator 在矢量方面的一个切实可行的替代品(尽管功能不是那么丰富),也有望成为一个成熟的设计环境。不论是 logo 设计,还是移动应用、网站,任何东西你都可以拿来会进行设计。自从 Gravit 成为我在浏览器上的可选工具后,我最近一些工作就是靠它完成的,除此之外它还很强大,简洁直观。
### 一些免费但不开源的解决方案……
#### Webflow
[Webflow][9] 是一个强大的全能网页设计环境可以在浏览器上运行。Webflow 的奇妙之处是设计网页基本不需要写代码,当你设计时,它会在后台自动生成代码。我发现 Webflow 的界面十分干净清爽非常直观。诚然Webflow 没有开源,但是免费版支持同时设计和开发两个网页项目。
#### Froont
另一个基于浏览器的网页设计程序是 [Froont][8]。和 Webflow 相似, Froont 设计非常直观简洁,而且强大。利用 Froont在任何相关设备上你都可以高效地设计一个全新、独一无二的响应式网站。和 Webflow 一样Froont 还允许设计师在需要的时候导出代码。
Webflow 和 Froont 除了收费计划外均有免费版,很适于一次设计一个站点,还可以将你的工作成果发布到网上,如果你选择的话。
### 文本编辑器
有一些产品供想使用自由开源编辑器的设计师和开发者选择,作为自己平常编写代码工具的替代品。
#### Atom
Atom 号称为<ruby>“[面向 21 世纪的黑客专用编辑器][7]”<rt>hackable editor for the 21st Century</rt></ruby>, 它是全功能的编辑器,看起来内置了完成工作所需的所有功能 —— 比如代码自动补全、多功能视图等。它的可玩性很高,用户可以以自己喜欢的方式对 Atom 进行自定义。Atom 有自己的包管理器, 用户可以下载成千上万的软件包进一步定制 Atom添加独一无二的功能。
### 结论
当今时代,设计师不要被昂贵臃肿的专有软件所束缚。使用一些自由开源的工具,具有开源意识的设计师有足够多的选择,为他们的客户创造漂亮、实用的设计作品。如果喜欢这篇文章就分享吧,也可以在下面评论你最喜欢的开源的设计工具!
[分享到 Google+][6][分享到 Twitter][5][分享到 Facebook][4]
--------------------------------------------------------------------------------
via: https://freedompenguin.com/articles/opinion/open-source-design-thing/
作者:[Sean LeRoy][a]
译者:[fuowang](https://github.com/fuowang)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://freedompenguin.com/author/seanleroy/
[1]:https://www.youtube.com/channel/UCOfXyFkINXf_e9XNosTJZDw
[2]:https://www.youtube.com/user/desainew
[3]:https://www.youtube.com/channel/UCEQXp_fcqwPcqrzNtWJ1w9w
[4]:http://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[5]:http://twitter.com/intent/tweet/?text=Is+Open+Source+Design+a+Thing%3F&url=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[6]:https://plus.google.com/share?url=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[7]:https://atom.io/
[8]:http://froont.com/
[9]:https://webflow.com/
[10]:https://gravit.io/
[11]:http://getbootstrap.com/
[12]:https://inkscape.org/en/
[13]:https://www.gimp.org/
[14]:https://en.wikipedia.org/wiki/Free_and_open-source_software
[15]:https://medium.com/dawn-capital/why-leverage-the-power-of-open-source-to-build-a-successful-software-business-8aba6f665bc4#.ggmn2ojxp

View File

@ -0,0 +1,151 @@
WattOS一个稳如磐石、快如闪电、面向所有人的轻量级 Linux 发行版
=============================
![WattOS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/wattos-main.png?itok=b7-Z7GK1)
*Jack Wallen 将介绍一下是什么让 WattOS 这么特别。 [使用许可][81]*
Linux 领域里的每个人不是听说过就是使用过某个轻量级的 Linux 发行版。大家都知道我们不断追求的是:占用内存少,配置资源要求低,包含一个轻量级的桌面环境(或者窗口管理器),并且提供和其他发行版相似的桌面布局,把赌注押在相同的需求之上。
这种发行版大多用来工作。有一个可以击垮很多轻量级 Linux 发行版的问题,它们没有真正含有一般用户完成工作需要的工具。结果就是,它们沦落为用来完成特殊任务(像数据恢复、做信息亭等)。
在某种程度上WattOS 陷入了同样的困境(它唯一含有的生产力工具是 PDF 阅读器,而且它使用标准的“任务栏/开始菜单”象征桌面。然而幸运的是WattOS 通过难以置信的运行速度、稳定性以及内置新立得包管理器弥补了这些缺点所以WattOS 可以很容易的成为一个适合所有人的轻量级 Linux 发行版。
到底是什么让 WattOS 如此特别,让我们一起一探究竟。
### 内核
事实上当我发现 WattOS 基于 kernel 4.4 内核时我非常吃惊。升级系统之后,执行 `uname -r` 命令可以看到是 4.4.0-38-generic。鉴于这个发行版的目的是让老旧和运行卡顿的机器重获新生它和我的 Elementary OS Loki 发行版内置相同版本的内核真是一个可爱的惊喜。这意味着 WattOS 在新旧硬件上都会有良好的工作表现。
真正的惊喜不止于此,当你去 WattOS 的网站,你会同时发现 32 位和 64 位版本的下载地址(现在大多数新的发行版都倾向于放弃 32 位发行版本)。所以,不仅系统内核对新式硬件提供支持,而且系统发行版本的多种架构也能让那些老式的 32 位机器重获新生。
### 运行速度
当安装上 WattOS 的时候有那么一刻我对它有纯粹的羡慕。WattOS 的运行速度快的令人难以置信。甚至当它的桌面版作为客户机在 VirtualBox 虚拟机平台工作时,运行速度依然远远超过了我的 Elementary OS Loki 桌面发行版。后来我才了解到当时运行的宿主机是 [System76 Leopard][80],配置有水冷装置的 i7 处理器和 16GB 的运行内存。分配给 WattOS 大约 2G 的内存让它看起来没有什么任务可以拖慢它。WattOS 的运行速度壮观的令人难以诉说,它越来越成熟了。我从没见过火狐浏览器能打开的这么快。
接下来说说 LibreOffice 应用的启动。由于想测试 LibreOffice 的启动速度,所以我打开了新立得软件包管理器,计划安装这一开源办公软件套件的佼佼者。
无果。
安装 LibreOffice 的主要问题是缺少一个依赖软件包 python3-uno而且无论怎么尝试都无法安装成功。然而最后我在 [LibreOffice 官方网站][79] 上下载了 deb 格式的软件包。把下载的文件解压之后,`cd` 到 LibreOffice_5.2.2.2_Linux_x86-64_deb/DEBS/ 目录下,最后通过执行 `sudo dpkg -i *.deb` 命令成功的安装好了 LibreOffice。
LibreOffice 运行的怎么样呢?速度快到要疯了。值得再提的是,我从没见过这个应用能像在 WattOS 上运行的这么快。点击 LibreOffice Writer 的图标,它花费的时间是在 Elementary OS Loki (已经很快了)主机上花费的一半。
### 桌面
我个人偏爱于桌面向更加现代化的趋势进行迭代。我是 Ubuntu 的 Unity 桌面GNOME 3 桌面,以及(特别是) [Elementary OS][78] 的粉丝。所以使用古老风格桌面的主意意味着对我几乎没有吸引力。即便如此WattOS 在把现代设计风格融入老式设计时做的非常好。举例来说,默认的桌面主题(图 1。WattOS 的 UI 设计者巧妙设计了桌面主题,所以它没有完全偏离 Windows XP 或者老式 Linux CDE 风格的窗口管理器的设计理念。
![WattOS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/wattos_a.png?itok=eavmkVgL)
*图 1WattOS 的文件管理器展示了有些现代化的主题 [使用许可][76]*
关于 WattOS 的桌面(基于 [LXDE][75])的确有一些要说的但以前从来没说过,就是每个拥有像简洁、直接,有足够灵活度和自定义度这些特点的 Linux 桌面版,对每个使用过 Windows 95 的电脑使用者来说都会很熟悉。
### 惊喜之处,优点和缺点
正像每个新的 Linux 桌面版的体验那样WattOS 有让人惊喜的地方,同时也有优点和缺点。首先,说说优点。
WattOS 除了绝对的速度(用一个简单的 “WOW” 来评论),还在桌面上固定了一些特别的惊喜(大多数都是预置的应用)。额外的软件中最好的是 [KeePassX][74](一个极少被默认包含在桌面版的应用)。我认为密码管理器应该默认安装在每一个电脑桌面上,值得骄傲的是 WattOS 预装了这个杰出的工具。
下一个讨论的是预装火狐浏览器。许多轻量级的发行版会预装像 [Surf][73] 或者 [Midori][72] 这样的浏览器。这两个浏览器都不错,但是它们的兼容性经常达不到像谷歌文档这样网站的要求。因为 WattOS 含有成熟的火狐浏览器,你会发现该系统的功能在火狐浏览器兼容的网站上表现的很完美。
最后,算不上好的意外。正如我已经提到的,在安装 LibreOffice 时马上就有了故障。然而安装像 GIMP 这样的软件就很顺利(所以我认为这是偶然问题)。除了这一个问题,我觉得默认桌面菜单有些混乱。例如,新立得软件包管理器放在个性化菜单里。我更愿在主菜单中突出显示项中看到它,并且加上类似“软件安装”(或任何其他新用户容易理解)的标签。从我的视角来说,个性化菜单项应该用于放置配置该平台各种风格的工具,而不是安装软件的工具。
除此之外,若想在 WattOS 主攻方向上的找茬的话,特别是你要找一个面对老旧硬件 Linux 发行版时,你会发现这非常困难。
### 结论
尽管 WattOS 主要为老旧硬件设计,但你完全可以把它运行在现代桌面电脑上,并且会运行的很好。根据零学习曲线,你很快就会熟悉 WattOS并发现它运行极快而且稳定。试试这个小排量的 Linux 发行版吧,相信它会给你同样深刻的印象。如果你发现 WattOS 运行的不够快(发生了一些我没有预料到的事),你完全可以去使用 [Microwatt][71](一个更轻的轻量级发行版)。
--------------------------------------------------------------------------------
via: https://www.linux.com/learn/wattos-rock-solid-lightning-fast-lightweight-linux-distro-all
作者:[JACK WALLEN][a]
译者:[fuowang](https://github.com/fuowang)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.linux.com/users/jlwallen
[1]:https://www.youtube.com/channel/UCOfXyFkINXf_e9XNosTJZDw
[2]:https://www.youtube.com/user/desainew
[3]:https://www.youtube.com/channel/UCEQXp_fcqwPcqrzNtWJ1w9w
[4]:http://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[5]:http://twitter.com/intent/tweet/?text=Is+Open+Source+Design+a+Thing%3F&url=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[6]:https://plus.google.com/share?url=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[7]:https://atom.io/
[8]:http://froont.com/
[9]:https://webflow.com/
[10]:https://gravit.io/
[11]:http://getbootstrap.com/
[12]:https://inkscape.org/en/
[13]:https://www.gimp.org/
[14]:https://en.wikipedia.org/wiki/Free_and_open-source_software
[15]:https://medium.com/dawn-capital/why-leverage-the-power-of-open-source-to-build-a-successful-software-business-8aba6f665bc4#.ggmn2ojxp
[16]:https://github.com/majutsushi/tagbar
[17]:http://ctags.sourceforge.net/
[18]:https://github.com/majutsushi/tagbar/zipball/70fix
[19]:https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
[20]:http://www.vim.org/scripts/script.php?script_id=2332
[21]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-2-syntastic/
[22]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-delimitmate-help.png
[23]:https://github.com/Raimondi/delimitMate
[24]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-tagbar-visibility.png
[25]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-tagbar-ex2.png
[26]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-tagbar-example.png
[27]:http://www.tldp.org/LDP/intro-linux/html/sect_06_02.html
[28]:http://majutsushi.github.io/tagbar/
[29]:http://vi.stackexchange.com/questions/388/what-is-the-difference-between-the-vim-plugin-managers
[30]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-vimrc.png
[31]:http://www.vim.org/
[32]:https://github.com/scrooloose/syntastic
[33]:https://github.com/scrooloose/syntastic/blob/master/doc/syntastic.txt
[34]:https://www.howtoforge.com/images/3337/big/syntastic-error-all-descr.png
[35]:https://www.howtoforge.com/images/3337/big/syntastic-error-descr.png
[36]:https://www.howtoforge.com/images/3337/big/syntastic-error-highlight.png
[37]:https://github.com/scrooloose/syntastic
[38]:http://www.vim.org/
[39]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers/
[40]:https://en.wikipedia.org/wiki/Trim_%28computing%29
[41]:https://en.wikipedia.org/wiki/Sudo
[42]:http://snapcraft.io/
[43]:http://flatpak.org/
[44]:https://en.wikipedia.org/wiki/Wine_%28software%29
[45]:https://en.wikipedia.org/wiki/Live_CD
[46]:http://distrowatch.com/
[47]:http://www.internetnews.com/skerner/2009/10/white-house-goes-open-source-w.html
[48]:https://www.whitehouse.gov/blog/2016/10/13/removing-barriers-constituent-conversations
[49]:http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/
[50]:http://midori-browser.org/
[51]:http://surf.suckless.org/
[52]:https://www.keepassx.org/
[53]:http://lxde.org/
[54]:https://www.linux.com/licenses/category/used-permission
[55]:https://www.linux.com/files/images/wattosapng
[56]:https://elementary.io/
[57]:https://www.libreoffice.org/
[58]:https://system76.com/desktops/leopard
[59]:https://www.linux.com/licenses/category/used-permission
[60]:http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/
[61]:http://midori-browser.org/
[62]:http://surf.suckless.org/
[63]:https://www.keepassx.org/
[64]:http://lxde.org/
[65]:https://www.linux.com/licenses/category/used-permission
[66]:https://www.linux.com/files/images/wattosapng
[67]:https://elementary.io/
[68]:https://www.libreoffice.org/
[69]:https://system76.com/desktops/leopard
[70]:https://www.linux.com/licenses/category/used-permission
[71]:http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/
[72]:http://midori-browser.org/
[73]:http://surf.suckless.org/
[74]:https://www.keepassx.org/
[75]:http://lxde.org/
[76]:https://www.linux.com/licenses/category/used-permission
[77]:https://www.linux.com/files/images/wattosapng
[78]:https://elementary.io/
[79]:https://www.libreoffice.org/
[80]:https://system76.com/desktops/leopard
[81]:https://www.linux.com/licenses/category/used-permission

View File

@ -0,0 +1,280 @@
点评 Xubuntu 16.10:起步的好选择
===============
### 简介
[![](https://2.bp.blogspot.com/-i4QOIuRjyWA/WAJ9zWbjKeI/AAAAAAAAM1U/-t0-4KB6cFgdyk3LvYbNDNiuC0dB29vRACLcB/s640/live1.png)][36]
Xubuntu 一直是我最喜欢的发行版之一。与其它的 Linux 发行版相比,它的外观看起来不那么迷人,它当然也不会把你需要的软件全部预装上。
Xubuntu 能够给你的就是一个良好的起点。
如果你是那种喜欢定制桌面和外观的人,那么 XFCE 绝对是适合于这种的最好的桌面环境。如果你的系统资源不足,或想让桌面漂亮舒服, XFCE 还是一个很棒的选择。
Xubuntu 之所以成领先于其它 Linux 发行版,就是因为它默认安装 XFCE 桌面。
毫无疑问在硬件兼容性、易用性、稳定性、易于安装以及拥有一个大型社区等方面Ubuntu 是很难被超越的。Xubuntu 是 Ubuntu Linux 发行版的官方流派,因此你可以拥有所有 Ubuntu 的优点,除了用 XFCE 桌面代替 Unity 桌面。
你可以选择性的安装应用到你的发行版上而不是像其它发行版那样预装了一堆你不需要的应用。Xubuntu 只附带了一些必须的应用,在这么小的核心之外的应用要靠你自己去找并安装。
对我来说,以上就是我为什么认为 Xubuntu 是最棒的发行版的原因。从简单的基本安装开始,然后按照你要的去定制就好了。
### 如何获得 Xubuntu
你可以访问 Xubuntu 的官网:[http://xubuntu.org/][35]。
[![](https://3.bp.blogspot.com/-GnYseQr9r3c/WAKA9R3hHPI/AAAAAAAAM1g/A3rvnr3W3Tk55apwsqmFs8nvr7zAMWnLACLcB/s640/getxubuntu.PNG)][34]
你可以在这里 [http://xubuntu.org/getxubuntu/][33] 找到下载页。
它有两个版本大多数人会选择长期支持版本LTS除非你希望每六个月更新一次系统。而另一个版本是我今天要讲的它就是 16.10 版。 
你既可以选择一个种子文件来下载 ISO也可以访问它的镜像源下载。
[![](https://3.bp.blogspot.com/-VBWH0CJsijM/WAKB3uDPvNI/AAAAAAAAM1k/cpigdxtjMEUQANxb6BF4efS9g7EZDFnZACLcB/s640/mirrorlist.PNG)][32]
如果你选择在镜像源中下载,你需要点击合适的 ISO 文件。比如 64 位的选择 amd-64.iso 文件,而 32 位的选择 i386.iso。
有很多教程,可以教你怎么创建一个 Linux 启动 U 盘:
*   [这是一个如何在 Ubuntu 下创建的教程,同样适用于 Xubuntu][3]
* [你也可以试试这份针对 Xubuntu 的教程][2]
* [或者你也可以试试这个][1]
如果这些你都觉得太复杂,你可以 [从这买一个][31]。
### 安装
[![](https://4.bp.blogspot.com/-4GZVmSbI3nw/WAKDyLh8UdI/AAAAAAAAM10/BhSSR0e3GkYC-5fSrjyLmhNKpuQnogbdQCLcB/s640/install1.png)][30]
像 Ubuntu 其它版本一样,安装 Xubuntu 相当直白。如果你曾经装过一个版本,那么基本上你可以安装任何一个版本。
开始时选择你的安装语言。
[![](https://4.bp.blogspot.com/-0YgUIjeTb6I/WAKECFfeOwI/AAAAAAAAM14/lyUO2P7O9WYjLgCS0i-ARAbhnvGho_71ACLcB/s640/install2.png)][29]
你会被问到,是否需要同时安装更新,是否要安装第三方软件,包括播放音乐的软件和专有驱动。想要完成这些,你需要联网。
再次,这也很直白,我们会在之后再次涉及到这些。
[![](https://1.bp.blogspot.com/-Pzt6YUVJbGY/WAKEf6QY2-I/AAAAAAAAM18/I41MoEvv_aguUX6Y9HkVLC_QnONpzyCVwCLcB/s640/install3.png)][28]
如果你有一个备用的未分配的磁盘分区和并且安装了 Windows您将看到可以选择在已有 Windows 的情况下安装 Xubuntu 并设置双启动。
您也可以选择安装 Xubuntu 作为唯一的操作系统,还可以选择别的任何你喜欢的分区来安装。
[![](https://4.bp.blogspot.com/-tcwOutnWJk8/WAKE5kGhPxI/AAAAAAAAM2A/9ZZrZRi6KR4renDxjwbRw8uoRqpAI8NzACLcB/s640/install4.png)][27]
下一步是设置你所在的区域以确定你的时区。
[![](https://4.bp.blogspot.com/-cCNxMeLAE-Y/WAKFQjSZe2I/AAAAAAAAM2I/ZaTKZ8DAzFg-TOfS5BkNdN1-HYlRXweYwCLcB/s640/install5.png)][26]
接下来两步是选择语言和键盘设置,以确定键盘模式。
[![](https://3.bp.blogspot.com/-rnLEH6sBp7E/WAKFbgaxakI/AAAAAAAAM2M/-mG3lSxc41EKPQ2BnNbSmLRdgVeyT36jwCLcB/s640/install6.png)][25]
最后创建一个默认账户,输入你的名字、你计算机的名字、设置用户名和密码。
Xubuntu 将会被安装在你的电脑上了,你可以继续往下看了。
### 第一印象
[![](https://1.bp.blogspot.com/-twtmUl3w008/WAKFtvOGMuI/AAAAAAAAM2Q/txM1lfCM7QkzhLDqEqacavmAMMg2DSr0ACLcB/s640/fulldesktop.png)][24]
Xubuntu 的初始界面只有一个面板位于蓝色桌面的顶部。通过桌面上的图标,你可以看到所有可用的驱动器。
画面的顶部是个简单的面板。
面板的左侧角落有一个单独的图标(老鼠的样子),点击它后会出现一个时尚而轻量,但功能全面的菜单,它被称为 Whisker胡须菜单。
在右上角有着通知、电源、蓝牙、网络、音量和时钟的图标。
### 连接互联网
[![](https://2.bp.blogspot.com/-nEvPMHkpTQ8/WAKG17nVliI/AAAAAAAAM2Y/2K6alEtBWAg9x9GS7hDEoJwprrwOqUQfwCLcB/s640/internet.png)][23]
你可以通过点击面板上的网络图标来连接互联网。一个无线网络的列表将会出现,你可以选择一个点击,并键入密码,就可以连接了。
我是在我的联想 Ideapad Y700 上安装 Xubuntu 的,这个本子很现代,其上运行的许多发行版在无线网络连接时会有些小问题,我不得不找些规避问题的方法。
但 Xubuntu 16.10 工作的很好,不需要做任何修改。
### 驱动
[![](https://2.bp.blogspot.com/-bBGLZIp5J5k/WAKHG1w2RqI/AAAAAAAAM2c/nSISH5XFhQUfoIpXyuEUKlVqTieEi6_oACLcB/s640/nvidia.png)][22]
为你的电脑寻找可用的附加驱动是十分必要的。
虽然默认的开源驱动是基本够用的,但是如果你有着较好的显卡,并且想获得更好的图形体验,那就十分有必要去寻找专有驱动。
打开菜单,搜索附加驱动,你可以找到附加驱动设置界面。
如果看到你的显卡驱动,但是它不工作,那么我还是建议你用默认的显卡驱动。
### 打印
[![](https://1.bp.blogspot.com/-loH1k_rWYcA/WAKICKT7YUI/AAAAAAAAM2g/01rCedfYovgesf5Cf1RlcwFVfwPwhf2JACLcB/s640/printer.png)][21]
我有一个爱普生 WF-2630 无线打印机。 Xubuntu 能够直接找到这台打印机,并安装相关驱动。
我打印了测试页,发现它的输出非常合适。
### 网络存储
[![](https://4.bp.blogspot.com/-hFDeZKOzZu4/WAKIWilPHoI/AAAAAAAAM2o/GhJBVIDfU0oPgc7Z8cvH4i4gbu_3tlOfgCLcB/s640/wdmycloud.png)][20]
我有一个跨无线网络连接的 WD MyCloud 存储设备。 
可以通过默认的文件管理器 Thunar 来访问这个设备。值得注意的是,我在网络设备中找到了 WD MyCloud 设备,但是点击它时显示错误。
但是我打开 Windows 网络文件夹时WD MyCloud 也显示出来了,而且我也能正常访问该设备上的文件夹。
### 软件
[![](https://1.bp.blogspot.com/-nPqWKUsDVoI/WAKJTxLDxUI/AAAAAAAAM2w/8LoOvhNltV8IQtSoyN_oPWjjKyV1bTMyACLcB/s640/whynotfirefox.png)][19]
我在文章开始时提到了Xubuntu 配备了最少的应用集,不过它包含了你开始所需要的所有应用。
火狐浏览器是它的默认浏览器Thunderbird 是默认的邮件客户端。
[![](https://1.bp.blogspot.com/-Tw2PlooCqVU/WAKJznZu2DI/AAAAAAAAM20/E0RDAQKPxNY6l0TF10s2Yo9ge-LToZFtQCLcB/s640/parole.png)][18]
你也有一个全套的 LibreOffice 套件和 Parole 媒体播放器。
它也有一系列工具,比如图片查看器、计算器、光盘刻录工具,还有一个 BT 下载器。
[![](https://2.bp.blogspot.com/-jDTpUNkQLYA/WAKKLPYyIEI/AAAAAAAAM24/0hcjRSnQonIdhnb1Knq1gMu_2i3bWo3ZQCLcB/s640/imageviewer.png)][17]
我很高兴现在在大多数发行版上Abiword 和 Gnumeric 都被忽略掉了,因为它们实在无关紧要。大多数人们最终会安装 Libreoffice 的。
缺乏专门的音频播放器这点比较奇怪。另外我需要提到的是我通常最终会安装谷歌的 Chrome 浏览器而不是使用Firefox。
本节的第一个图片说明了原因。这张图片里,我试图观看 Google Play 商店的 “Curb Your Enthusiam” 视频,可惜的是各种 DRM 和其它一些问题导致了视频无法播放。
从谷歌网站上一个简单的下载就可以解决问题。如下所示。
[![](https://3.bp.blogspot.com/-_aqn8leBcuY/WAKLOAzAhnI/AAAAAAAAM3A/yruGYEG0PHc4WRAqRjeVoYxjhVlHiIfCwCLcB/s640/Screenshot_2016-10-15_17-57-28.png)][16]
### 安装软件
[![](https://2.bp.blogspot.com/-6kjAgQV6Oss/WAKLhFbihcI/AAAAAAAAM3E/TLeK0xPexNEaxdzb_NkPn_BDDxOoTR2-gCLcB/s640/software.png)][15]
在 Ubuntu 16.04 以后的发行版上普遍存在的一个主要问题是有些程序无法在图形安装软件中安装。
比如在软件管理器中找不到 Steam。
[![](https://3.bp.blogspot.com/-4e1ozcMoijU/WAKL2Gp5C1I/AAAAAAAAM3I/VY7XBvxOLCkiK-UdSvypfQFnrkfCtt3rwCLcB/s640/steamnotinsoftware.png)][14]
如果你使用命令行输入 `sudo apt-cache search steam` 你会发现有这个软件。
[![](https://3.bp.blogspot.com/-rzTMI5a6EAE/WAKMFfDi-2I/AAAAAAAAM3Q/1-l612iZmSEYY188kfyzKo5s75nFWSz6ACLcB/s640/steaminaptget.png)][13]
并不是只有 Steam 被遗漏了,其它软件比如 Skype 同样不能在图形软件管理工具中找到。
我真希望这个问题已经在所有 Ubuntu 发行版中解决了。
我最近还试用了 Kubuntu 16.04 ,发现它的叫做 Discover 的软件工具完全无用,搜索根本不工作。
幸运的是Xubuntu 上的软件管理器可以安装大多数软件包,我利用它搜寻并装上了 Quod Libet 音乐播放器。
[![](https://4.bp.blogspot.com/-l_INcXhflac/WAKMqz8mYtI/AAAAAAAAM3U/qBNl5YO8VOEMndpZm5IEMYOGYrih_Q4DQCLcB/s640/quodlibet.png)][12]
[![](https://1.bp.blogspot.com/-erNT96pq67c/WAKM-331qKI/AAAAAAAAM3Y/jbnf5cZbFxgM9Q543XA3bFDqQ91MkmpJACLcB/s640/music.png)][11]
顺便说一下,如果你在安装 Xubuntu 时选择了同时安装解码器,那么 MP3 播放也不会出现任何问题。
如果没有安装,那么你需要打开终端模拟器,安装 Xubuntu Restricted Extras 包。
### 个性化 Xubuntu
[![](https://1.bp.blogspot.com/-MlFCGvvjSe8/WAKNdG8i6SI/AAAAAAAAM3g/6g7WNJbmZX856kp4ezO56boIWbGLRLMdQCLcB/s640/changewallpaper.png)][10]
在这方面你可以做很多事来定制 Xubuntu [参见这里][9]。
Xubuntu 提供一整套漂亮的壁纸,如上图所示,你要做的第一件事就是选一个好看的壁纸并添加一个 Dock 风格的面板,里面含所有你喜欢的软件的启动器。
[![](https://2.bp.blogspot.com/-h_HRUcMTYu0/WAKN7J_0BJI/AAAAAAAAM3k/NKy7ybXZCEM23IK0Nkjp-TDo2PQ1ff4bQCLcB/s640/newwallpaper.png)][8]
Xubuntu 有一个相对较新的特性就是 XFDashboard 。它带来了与 Gnome 桌面类似的 Dash 面板。你可以在上面添加启动器和能够让应用快速启动的键盘快捷键。
[![](https://1.bp.blogspot.com/-ZCmwHtAahH0/WAKORXPnNFI/AAAAAAAAM3o/lKR4bnEbi-syQdMp_KoCb8xQAd4WTP5dgCLcB/s640/xfdashboard.png)][7]
此图展示了一个快速选择不同工作区和启动应用的好方法。
说老实话,当谈到个性化 Xubuntu 时,有一种世界尽在我掌中的感觉。
[![](https://1.bp.blogspot.com/-lXhn0cuCoe8/WAKOmpBZc6I/AAAAAAAAM3w/1C3ljgPegr887xG5O5A0-0RBPAQlA3qHACLcB/s640/finalcustomisation.png)][6]
### 问题
我在使用 Xubuntu (包括所有基于 Ubuntu 的发行版)时感受到的最大问题就是应用商店里面找不到一些重要的应用。为啥没有 Steam
在 Xubuntu 安装时收到一个崩溃的错误,如下图所示。
[![](https://1.bp.blogspot.com/-saCiLJ-LXiU/WAKPh4EbsKI/AAAAAAAAM34/Cb28FoR-xZYeXd5lmbyOfbK1MuFIr_wmQCLcB/s640/installproblem.png)][5]
我没有搞明白这个问题是怎么回事,因为它没有带来任何副作用。安装工作也没有出岔子。
### 总结
我不对 Xubuntu 点评更多,并不是因为我不喜欢它。事实上我是 Xubuntu 的大粉丝,并且我在另一个电脑上有一个它的深度定制版。
我使用电脑时,我希望了解发生了什么,没有比看到下面这种情况更让人恼火的了。
[![](https://1.bp.blogspot.com/-GX3xYYXeTfY/WAKTRbvHv0I/AAAAAAAAM4Q/NzN8PfAOHGouj6z7-TPLyC18e_TXhCukACLcB/s640/IMG_20161015_163354-min.jpg)][4]
认真的说,为啥会有人认为 windows 适合工作?似乎每隔一就会看到消息 “正在安装(1/285)” ,于是当它自己更新时,你就失去了一个小时。而 Xubuntu和其它发行版一样更新不会打断你每天的工作。
事实是Xubuntu 真的没有什么需要改变的,它可靠、稳定、不需要改变什么(除了软件管理器)。
我非常推荐 Xubuntu。
此外,我还得说去试一试 Peppermint OS、Linux Mint XFCE 或者 Manjaro XFCE 也是十分值得的。
--------------------------------------------------------------------------------
via: http://www.everydaylinuxuser.com/2016/10/an-everyday-linux-user-review-of_15.html
作者:[Gary Newell][a]
译者:[chao-zhi](https://github.com/chao-zhi)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: http://www.everydaylinuxuser.com/2016/10/an-everyday-linux-user-review-of_15.html
[1]:http://www.everydaylinuxuser.com/2015/11/how-to-create-ubuntu-1510-usb-drive.html
[2]:http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xubuntu-Linux-USB-Drive.htm
[3]:http://linux.about.com/od/howtos/ss/How-To-Create-A-UEFI-Bootable-Ubuntu-USB-Drive-Using-Windows.htm#step2
[4]:https://1.bp.blogspot.com/-GX3xYYXeTfY/WAKTRbvHv0I/AAAAAAAAM4Q/NzN8PfAOHGouj6z7-TPLyC18e_TXhCukACLcB/s1600/IMG_20161015_163354-min.jpg
[5]:https://1.bp.blogspot.com/-saCiLJ-LXiU/WAKPh4EbsKI/AAAAAAAAM34/Cb28FoR-xZYeXd5lmbyOfbK1MuFIr_wmQCLcB/s1600/installproblem.png
[6]:https://1.bp.blogspot.com/-lXhn0cuCoe8/WAKOmpBZc6I/AAAAAAAAM3w/1C3ljgPegr887xG5O5A0-0RBPAQlA3qHACLcB/s1600/finalcustomisation.png
[7]:https://1.bp.blogspot.com/-ZCmwHtAahH0/WAKORXPnNFI/AAAAAAAAM3o/lKR4bnEbi-syQdMp_KoCb8xQAd4WTP5dgCLcB/s1600/xfdashboard.png
[8]:https://2.bp.blogspot.com/-h_HRUcMTYu0/WAKN7J_0BJI/AAAAAAAAM3k/NKy7ybXZCEM23IK0Nkjp-TDo2PQ1ff4bQCLcB/s1600/newwallpaper.png
[9]:http://linux.about.com/od/howtos/ss/Customise-The-XFCE-Desktop-Environment.htm
[10]:https://1.bp.blogspot.com/-MlFCGvvjSe8/WAKNdG8i6SI/AAAAAAAAM3g/6g7WNJbmZX856kp4ezO56boIWbGLRLMdQCLcB/s1600/changewallpaper.png
[11]:https://1.bp.blogspot.com/-erNT96pq67c/WAKM-331qKI/AAAAAAAAM3Y/jbnf5cZbFxgM9Q543XA3bFDqQ91MkmpJACLcB/s1600/music.png
[12]:https://4.bp.blogspot.com/-l_INcXhflac/WAKMqz8mYtI/AAAAAAAAM3U/qBNl5YO8VOEMndpZm5IEMYOGYrih_Q4DQCLcB/s1600/quodlibet.png
[13]:https://3.bp.blogspot.com/-rzTMI5a6EAE/WAKMFfDi-2I/AAAAAAAAM3Q/1-l612iZmSEYY188kfyzKo5s75nFWSz6ACLcB/s1600/steaminaptget.png
[14]:https://3.bp.blogspot.com/-4e1ozcMoijU/WAKL2Gp5C1I/AAAAAAAAM3I/VY7XBvxOLCkiK-UdSvypfQFnrkfCtt3rwCLcB/s1600/steamnotinsoftware.png
[15]:https://2.bp.blogspot.com/-6kjAgQV6Oss/WAKLhFbihcI/AAAAAAAAM3E/TLeK0xPexNEaxdzb_NkPn_BDDxOoTR2-gCLcB/s1600/software.png
[16]:https://3.bp.blogspot.com/-_aqn8leBcuY/WAKLOAzAhnI/AAAAAAAAM3A/yruGYEG0PHc4WRAqRjeVoYxjhVlHiIfCwCLcB/s1600/Screenshot_2016-10-15_17-57-28.png
[17]:https://2.bp.blogspot.com/-jDTpUNkQLYA/WAKKLPYyIEI/AAAAAAAAM24/0hcjRSnQonIdhnb1Knq1gMu_2i3bWo3ZQCLcB/s1600/imageviewer.png
[18]:https://1.bp.blogspot.com/-Tw2PlooCqVU/WAKJznZu2DI/AAAAAAAAM20/E0RDAQKPxNY6l0TF10s2Yo9ge-LToZFtQCLcB/s1600/parole.png
[19]:https://1.bp.blogspot.com/-nPqWKUsDVoI/WAKJTxLDxUI/AAAAAAAAM2w/8LoOvhNltV8IQtSoyN_oPWjjKyV1bTMyACLcB/s1600/whynotfirefox.png
[20]:https://4.bp.blogspot.com/-hFDeZKOzZu4/WAKIWilPHoI/AAAAAAAAM2o/GhJBVIDfU0oPgc7Z8cvH4i4gbu_3tlOfgCLcB/s1600/wdmycloud.png
[21]:https://1.bp.blogspot.com/-loH1k_rWYcA/WAKICKT7YUI/AAAAAAAAM2g/01rCedfYovgesf5Cf1RlcwFVfwPwhf2JACLcB/s1600/printer.png
[22]:https://2.bp.blogspot.com/-bBGLZIp5J5k/WAKHG1w2RqI/AAAAAAAAM2c/nSISH5XFhQUfoIpXyuEUKlVqTieEi6_oACLcB/s1600/nvidia.png
[23]:https://2.bp.blogspot.com/-nEvPMHkpTQ8/WAKG17nVliI/AAAAAAAAM2Y/2K6alEtBWAg9x9GS7hDEoJwprrwOqUQfwCLcB/s1600/internet.png
[24]:https://1.bp.blogspot.com/-twtmUl3w008/WAKFtvOGMuI/AAAAAAAAM2Q/txM1lfCM7QkzhLDqEqacavmAMMg2DSr0ACLcB/s1600/fulldesktop.png
[25]:https://3.bp.blogspot.com/-rnLEH6sBp7E/WAKFbgaxakI/AAAAAAAAM2M/-mG3lSxc41EKPQ2BnNbSmLRdgVeyT36jwCLcB/s1600/install6.png
[26]:https://4.bp.blogspot.com/-cCNxMeLAE-Y/WAKFQjSZe2I/AAAAAAAAM2I/ZaTKZ8DAzFg-TOfS5BkNdN1-HYlRXweYwCLcB/s1600/install5.png
[27]:https://4.bp.blogspot.com/-tcwOutnWJk8/WAKE5kGhPxI/AAAAAAAAM2A/9ZZrZRi6KR4renDxjwbRw8uoRqpAI8NzACLcB/s1600/install4.png
[28]:https://1.bp.blogspot.com/-Pzt6YUVJbGY/WAKEf6QY2-I/AAAAAAAAM18/I41MoEvv_aguUX6Y9HkVLC_QnONpzyCVwCLcB/s1600/install3.png
[29]:https://4.bp.blogspot.com/-0YgUIjeTb6I/WAKECFfeOwI/AAAAAAAAM14/lyUO2P7O9WYjLgCS0i-ARAbhnvGho_71ACLcB/s1600/install2.png
[30]:https://4.bp.blogspot.com/-4GZVmSbI3nw/WAKDyLh8UdI/AAAAAAAAM10/BhSSR0e3GkYC-5fSrjyLmhNKpuQnogbdQCLcB/s1600/install1.png
[31]:https://www.osdisc.com/products/xubuntu?affiliate=everydaylinuxuser
[32]:https://3.bp.blogspot.com/-VBWH0CJsijM/WAKB3uDPvNI/AAAAAAAAM1k/cpigdxtjMEUQANxb6BF4efS9g7EZDFnZACLcB/s1600/mirrorlist.PNG
[33]:http://xubuntu.org/getxubuntu/
[34]:https://3.bp.blogspot.com/-GnYseQr9r3c/WAKA9R3hHPI/AAAAAAAAM1g/A3rvnr3W3Tk55apwsqmFs8nvr7zAMWnLACLcB/s1600/getxubuntu.PNG
[35]:http://xubuntu.org/
[36]:https://2.bp.blogspot.com/-i4QOIuRjyWA/WAJ9zWbjKeI/AAAAAAAAM1U/-t0-4KB6cFgdyk3LvYbNDNiuC0dB29vRACLcB/s1600/live1.png

View File

@ -0,0 +1,101 @@
Livepatch —— 免重启给 Ubuntu Linux 内核打关键性安全补丁
============================================================
如果你是一个在企业环境中维护关键性系统的系统管理员,你肯定对以下两件事深有感触:
1) 很难找个停机时间去给系统安装安全补丁以修复内核或者系统漏洞 。如果你工作的公司或者企业没有适当的安全策略,运营管理可能最终会优先保证系统的运行而不是解决系统漏洞。 此外,内部的官僚作风也可能延迟批准停机时间。我当时就是这样的。
2) 有时候你确实负担不起停机造成的损失,并且还要做好用别的什么方法减小恶意攻击带来的的风险的准备。
好消息是 Canonical 公司最近针对 Ubuntu 16.04 (64位版本 / 4.4.x 内核) 发布了 Livepatch 服务,它可以让你不用重启就能给内核打关键性安全补丁。 对,你没看错:使用 Livepatch 你不用重启就能使 Ubuntu 16.04 服务器系统的安全补丁生效。
### 注册 Ubuntu Livepatch 账号
要运行 Canonical Livepatch 服务你先要在这里注册一个账号 [https://auth.livepatch.canonical.com/][1],并且表明你是一个普通用户还是企业用户(付费)。 通过使用令牌,所有的 Ubuntu 用户都能将最多 3 台不同的电脑连接到 Livepatch 服务:
[
![Canonical Livepatch Service](http://www.tecmint.com/wp-content/uploads/2016/10/Canonical-Livepatch-Service.png)
][2]
*Canonical Livepatch 服务*
下一步系统会提示你输入你的 Ubuntu One 凭据,或者你也可以注册一个新账号。如果你选择后者,则需要你确认你的邮件地址才能完成注册:
[
![Ubuntu One Confirmation Mail](http://www.tecmint.com/wp-content/uploads/2016/10/Ubuntu-One-Confirmation-Mail.png)
][3]
*Ubuntu One 确认邮件*
一旦你点了上面的链接确认了你的邮件地址,你就会回到这个界面:[https://auth.livepatch.canonical.com/][4] 并获取你的 Livepatch 令牌。
### 获取并使用 Livepatch 令牌
首先把分配给你账号的这个唯一的令牌复制下来:
[
![Canonical Livepatch Token](http://www.tecmint.com/wp-content/uploads/2016/10/Livepatch-Token.png)
][5]
*Canonical Livepatch 令牌*
然后打开终端,输入:
```
$ sudo snap install canonical-livepatch
```
上面的命令会安装 livepatch 程序,下面的命令会为你的系统启用它。
```
$ sudo canonical-livepatch enable [YOUR TOKEN HERE]
```
如果后一条的命令提示找不到 `canonical-livepatch` ,检查一下 `/snap/bin` 是否已经添加到你的路径, 或者把你的工作目录切换到  `/snap/bin`  下执行也行。
```
$ sudo ./canonical-livepatch enable [YOUR TOKEN HERE]
```
[
![Install Livepatch in Ubuntu](http://www.tecmint.com/wp-content/uploads/2016/10/Install-Livepatch-in-Ubuntu.png)
][6]
*在 Ubuntu 中安装 Livepatch*
之后,你可能需要检查应用于内核的补丁的描述和状态。幸运的是,这很简单。
```
$ sudo ./canonical-livepatch status --verbose
```
如下图所示:
[
![Check Livepatch Status in Ubuntu](http://www.tecmint.com/wp-content/uploads/2016/10/Check-Livepatch-Status.png)
][7]
*检查补丁安装情况*
在你的 Ubuntu 服务器上启用了 Livepatch你就可以在保证系统安全的同时把计划内的外的停机时间降到最低。希望 Canonical 的这个举措会在管理上给你带来便利,甚至更近一步带来提升。
如果你对这篇文章有什么疑问,欢迎在下面留言,我们会尽快回复。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/livepatch-install-critical-security-patches-to-ubuntu-kernel
作者:[Gabriel Cánepa][a]
译者:[Yinux](https://github.com/Yinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/gacanepa/
[1]:https://auth.livepatch.canonical.com/
[2]:http://www.tecmint.com/wp-content/uploads/2016/10/Canonical-Livepatch-Service.png
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/Ubuntu-One-Confirmation-Mail.png
[4]:https://auth.livepatch.canonical.com/
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Livepatch-Token.png
[6]:http://www.tecmint.com/wp-content/uploads/2016/10/Install-Livepatch-in-Ubuntu.png
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/Check-Livepatch-Status.png

View File

@ -0,0 +1,106 @@
玩转 GitHub 的问题单issue
==============================================
![](https://opensource.com/sites/default/files/styles/image-full-size/public/images/business/BUSINESS_opennature_3.png?itok=30fRGfpv)
***图片来源:*** opensource.com
对于大多数开源项目来讲问题追踪系统Issue-tracking system是至关重要的。虽然有非常多的开源工具提供了这样的功能但是大量项目还是选择了 GitHub 自带的问题追踪器Issue Tracker
它结构简单,可以让其他人可以非常轻松地参与进来,但这才仅仅是开始。
如果没有适当的处理你的储存库repository会变得很庞大挤满重复的问题单、模糊不明的特性需求单、含混的 bug 报告单。项目维护者会被大量工作压得喘不过气来,新的贡献者也搞不清楚项目当前的工作重点是什么。
接下来,我们一起研究下,如何玩转 GitHub 的问题单。
### 问题单就是用户的故事
我的团队曾经和开源专家 [Jono Bacon][1] 做过一次对话,他是 [社区艺术The Art of Community][2] 的作者、一位战略顾问、前 GitHub 社区总监。他告诉我们,高质量的问题单是项目成功的关键。有些人把问题单仅仅看作是一堆你不得不去处理的问题列表,但是如果这些问题单管理完善,进行了分类并打上标签,会令人意想不到的提升我们对代码和社区的了解程度,也让我们更清楚问题的关键点在哪里。
“在提交问题单时用户不太会有耐心或者有兴趣把问题的细节描述清楚。在这种情况下你应当努力花最短的时间尽量多的获取有用的信息。”Jono Bacon 说。
统一的问题单模板可以大大减轻项目维护者的负担,尤其是开源项目的维护者。我们发现,让用户讲故事的方法总是可以把问题描述的非常清楚。用户讲故事时需要说明“是谁,做了什么,为什么而做”,也就是:我是【何种用户】,为了【达到何种目的】,我要【做何种操作】。
实际操作起来,大概是这样的:
>我是一名**顾客**,我想**购买东西**,所以我想**创建个账户**。
我们建议,问题单的标题始终使用这样的用户故事形式。你可以设置[问题单模板][3]来保证一致性。
![](https://opensource.com/sites/default/files/resize/issuetemplate-new-520x293.png)
*问题单模板让特性需求单保持统一的形式*
这个做法的核心点在于,问题单要清晰的呈现给它涉及的每一个人:它要尽量简单的指明受众(或者说用户),操作(或者说任务),和输出(或者说目标)。不过,不需要过分拘泥于这个模板,只要能把故事里的是什么事情或者是什么原因说清楚,就达到目的了。
### 高质量的问题单
问题单的质量是参差不齐的,这一点任何一个开源软件的贡献者或维护者都能证实。在[《The Agile Samurai》][4]中概述过一个良好的问题单所应具备的素质。
好的问题单尽量满足如下条件:
- 客户价值所在
- 避免使用术语或晦涩的文字,就算不是专家也能看懂
- 可以切分,也就是说我们可以逐步解决问题
- 尽量跟其他问题单没有瓜葛,依赖其它问题会降低处理的灵活性
- 可以协商,也就说我们有好几种办法达到目标
- 问题足够小,可以非常容易的评估出所需时间和资源
- 可衡量,我们可以对结果进行测试
### 不满足上述条件的问题单呢? 要有约束
如果一个问题单很难衡量或者很难在短时间内完成你也一样有办法搞定它。有些人把这种办法叫做“约束”constraints
例如,“这个产品要快”,这种问题单不符合故事模板,而且是没办法协商的。多快才是快呢?这种模糊的需求没有达到“好问题单”的标准,但是如果你进一步定义一下,例如“每个页面都需要在 0.5 秒内加载完”,那我们就能更轻松地解决它了。我们可以把“约束”看作是成功的标尺,或者要实现的里程碑。每个团队都应该定期的对“约束”进行测试。
### 问题单里面有什么?
敏捷方法中,用户故事里通常要包含验收指标或者标准。在 GitHub 里,建议大家使用 markdown 格式的清单来概括解决这个问题单需要完成的任务。优先级越高的问题单应当包含更多的细节。
比如说,你打算提交一个关于新版网站主页的问题单。那这个问题单的子任务列表可能就是这样的:
![](https://opensource.com/sites/default/files/resize/markdownchecklist-520x255.png)
*使用 markdown 的清单把复杂问题拆分成多个部分*
在必要的情况下你还可以链接到其他问题单以进一步明确任务。GitHub 里做这个挺方便的)
将特性定义的越细化,越容易跟踪进度、测试,最终能更高效的发布有价值的代码。
以问题单的形式收到到问题所在后,还可以用 API 更深入的了解软件的健康度。
“在统计问题单的类型和趋势时GitHub API 可以发挥巨大作用”Bacon 告诉我们,“如果再做些数据挖掘工作,你就能发现代码里的问题点、社区里的活跃成员,或者其他有用的信息。”
有些问题单管理工具提供的 API 可以提高额外信息,比如预估时间或者历史进度。
### 团队协同一致
团队决定使用某种问题单模板后,如何让所有人都照做?存储库里的 ReadMe.md 其实也可以是你们项目的 “How-to” 文档。这个文档应描述清楚这个项目是做什么的最好是用可以搜索的语言以及其他贡献者应当如何参与进来比如提交需求单、bug 报告、建议,或者直接贡献代码)。
![](https://opensource.com/sites/default/files/resize/readme-520x184.png)
*在 ReadMe 文件里增加清晰的说明,供新协作者参考*
ReadMe 文件是提供“问题单指引”的完美场所。如果希望特性需求单遵循“用户讲故事”的格式,那就把格式写在 ReadMe 里。如果使用某种跟踪工具来管理待办事项,那就标记在 ReadMe 里,这样别人也能看到。
“问题单模板、合理的标签、提交问题单的指导文档、确保问题单被分类并及时回应这些对于开源项目都至关重要”Bacon 说。
记住一点:这不是为了完成工作而做的工作。这是让其他人更轻松的发现、了解、融入你的社区而设立的规则。
"关注社区的成长,不仅要关注参与开发者的的数量增长,也要关注那些在问题单上帮助我们的人,他们让问题单更加明确、保持更新,这是活跃沟通和高效解决问题的力量源泉"Bacon 说。
--------------------------------------------------------------------------------
via: https://opensource.com/life/16/7/how-take-your-projects-github-issues-good-great
作者:[Matt Butler][a]
译者:[echoma](https://github.com/echoma)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/mattzenhub
[1]: http://www.jonobacon.org/
[2]: http://www.artofcommunityonline.org/
[3]: https://help.github.com/articles/creating-an-issue-template-for-your-repository/
[4]: https://www.amazon.ca/Agile-Samurai-Masters-Deliver-Software/dp/1934356581

View File

@ -0,0 +1,144 @@
Git 系列(七):使用 Git 管理二进制大对象
=====================
通过这系列的前六篇文章,我们已经学会使用 Git 来对文本文件进行版本控制的管理。我们不禁要问还有二进制文件呢也可进行进行版本控制吗答案是肯定的Git 已经有了可以处理像多媒体文件这样的二进制大对象块blob的扩展。因此今天我们会学习使用 Git 来管理所谓的二进制资产。
似乎大家都认可的事就是 Git 对于大的二进制对象文件支持得不好。要记住,二进制大对象与大文本文件是不同的。虽然 Git 对大型的文本文件版本控制毫无问题,但是对于不透明的二进制文件起不了多大作用,只能把它当作一个大的实体黑盒来提交。
设想这样的场景,有一个另人兴奋的第一人称解密游戏,您正在为它制作复杂的 3D 建模,源文件是以二进制格式保存的,最后生成一个 1GB 大小的的文件。您提交过一次,在 Git 源仓库历史中有一个 1GB 大小的新增提交。随后,您修改了下模型人物的头发造型,然后提交更新,因为 Git 并不能把头发从头部及模型中其余的部分离开来,所以您只能又提交 1GB 的量。接着,您改变了模型的眼睛颜色,提交这部分更新:又是 GB 级的提交量。对一个模型的一些微小修改,就会导致三个 GB 级的提交量。对于想对一个游戏所有资源进行版本控制这样的规模,这是个严重的问题。
不同的是如 `.obj` 这种格式的文本文件,和其它类型文件一样,都是一个提交就存储所有更新修改状态,不同的是 `.obj` 文件是一系列描述模型的纯文本行。如果您修改了该模型并保存回 `.obj` 文件Git 可以逐行读取这两个文件,然后创建一个差异版本,得到一个相当小的提交。模型越精细,提交就越小,这就是标准的 Git 用例。虽然文件本身很大,但 Git 使用覆盖或稀疏存储的方法来构建当前数据使用状态的完整描述。
然而,不是所有的都是纯文本的,但都要使用 Git所以需要解决方案并且已经出现几个了。
[OSTree](https://ostree.readthedocs.io/en/latest/) 开始是作为 GNOME 项目出现的,旨在管理操作系统的二进制文件。它不适用于这里,所以我直接跳过。
[Git 大文件存储](https://git-lfs.github.com/)LFS 是放在 GitHub 上的一个开源项目,是从 git-media 项目中分支出来的。[git-media](https://github.com/alebedev/git-media) 和 [git-annex](https://git-annex.branchable.com/walkthrough/) 是 Git 用于管理大文件的扩展。它们是对同一问题的两种不同的解决方案,各有优点。虽然它们都不是官方的项目,但在我看来,每个都有独到之处:
* git-media 是集中模式,有一个公共资产的存储库。你可以告诉 git-media 大文件需要存储的位置,是在硬盘、服务器还是在云存储服务器,项目中的每个用户都将该位置视为大型文件的中心主存储位置。
* git-annex 侧重于分布模式。用户各自创建存储库,每个存储库都有一个存储大文件的本地目录 `.git/annex`。这些 annex 会定期同步,只要有需要,每个用户都可以访问到所有的资源。除非通过 annex-cost 特别配置,否则 git-annex 优先使用本地存储,再使用外部存储。
对于这些,我已经在生产中使用了 git-media 和 git-annex那么下面会向你们概述其工作原理。
### git-media
git-media 是使用 Ruby 语言开发的,所以首先要安装 gemLCTT 译注Gem 是基于 Ruby 的一些开发工具包)。安装说明在[其网站](https://github.com/alebedev/git-media)上。想使用 git-meida 的用户都需要安装它,因为 gem 是跨平台的工具,所以在各平台都适用。
安装完 git-media 后,你需要设置一些 Git 的配置选项。在每台机器上只需要配置一次。
```
$ git config filter.media.clean "git-media filter-clean"
$ git config filter.media.smudge "git-media filter-smudge"
```
在要使用 git-media 的每个存储库中设置一个属性以将刚刚创建的过滤器结合到要您分类为“媒体media”的文件类型里。别被这种术语混淆。一个更好的术语是“资产”因为“媒体”通常的意思是音频、视频和照片但您也可以很容易地将 3D 模型,烘焙和纹理等归类为媒体。
例如:
```
$ echo "*.mp4 filter=media -crlf" >> .gitattributes
$ echo "*.mkv filter=media -crlf" >> .gitattributes
$ echo "*.wav filter=media -crlf" >> .gitattributes
$ echo "*.flac filter=media -crlf" >> .gitattributes
$ echo "*.kra filter=media -crlf" >> .gitattributes
```
当您要暂存stage这些类型的文件时文件会被复制到 `.git/media` 目录。
假设在服务器已经有了一个 Git 源仓库,最后一步就告诉源仓库“母舰”所在的位置,也就是,当媒体文件被推送给所有用户共享时,媒体文件将会存储的位置。这在仓库的 `.git/config` 文件中设置,请替换成您的用户名、主机和路径:
```
[git-media]
transport = scp
autodownload = false #默认为 true拉取资源
scpuser = seth
scphost = example.com
scppath = /opt/jupiter.git
```
如果您的服务器上 SSH 设置比较复杂,例如使用了非标准端口或非默认 SSH 密钥文件的路径,请使用 `.ssh/config` 为主机设置默认配置。
git-media 的使用和普通文件一样,可以把普通文件和 blob 文件一样对待,一样进行 commit 操作。操作流程中唯一的不同就是,在某些时候,您应该将您的资产(或称媒体)同步到共享存储库中。
当要为团队发布资产或自己备份资料时,请使用如下命令:
```
$ git media sync
```
要用一个变更后的版本替换 git-media 中的文件时(例如,一个已经美声过的音频文件,或者一个已经完成的遮罩绘画,或者一个已经被颜色分级的视频文件),您必须明确的告诉 Git 更新该媒体。这将覆盖 git-media 不会复制远程已经存在的文件的默认设置:
```
$ git update-index --really-refresh
```
当您团队的其他成员(或是您本人,在其它机器上)克隆本仓库时,如果没有在 `.git/config` 中把 `autodownload` 选项设置为 `true` 的话,默认是不会下载资源的。但 git-media 的一个同步命令 `git media sync` 可解决所有问题。
### git-annex
git-annex 的处理流程略微的有些不同,默认是使用本地仓库的,但基本的思想都一样。您可以从你的发行版的软件仓库中安装 git-annex或者根据需要从该网站上下载安装。与 git-media 一样,任何使用 git-annex 的用户都必须在其机器上安装它。
其初始化设置比 git-media 都简单。运行如下命令,其中替换成您的路径,就可以在您的服务器上创建好裸存储库:
```
$ git init --bare --shared /opt/jupiter.git
```
然后克隆到本地计算机,把它标记为 git-annex 的初始路径:
```
$ git clone seth@example.com:/opt/jupiter.clone
Cloning into 'jupiter.clone'...
warning: You appear to have clonedan empty repository.
Checking connectivity... done.
$ git annex init "seth workstation"
init seth workstation ok
```
不要使用过滤器来区分媒体资源或大文件,您可以使用 `git annex` 命令来配置归类大文件:
```
$ git annex add bigblobfile.flac
add bigblobfile.flac
(checksum) ok
(Recording state in Git...)
```
跟普通文件一样进行提交操作:
```
$ git commit -m 'added flac source for sound fx'
```
但是推送操作是不同的,因为 `git annex` 使用自己的分支来跟踪资产。您首次推送可能需要 `-u` 选项,具体取决于您如何管理您的存储库:
```
$ git push -u origin master git-annex
To seth@example.com:/opt/jupiter.git
* [new branch] master -> master
* [new branch] git-annex -> git-annex
```
和 git-media 一样,普通的 `git push` 命令是不会拷贝资料到服务器的,仅仅只是发送了相关的消息,要真正共享文件,需要运行同步命令:
```
$ git annex sync --content
```
如果别人已经提交了共享资源,您需要拉取它们,`git annex sync` 命令将提示您要在本地检出你本机没有,但在服务器上存在的资源。
git-media 和 git-annex 都非常灵活,都可以使用本地存储库来代替服务器,所以它们也常用于管理私有的本地项目。
Git 是一个非常强大和扩展性非常强的系统应用软件,我们应该毫不犹豫的使用它。现在就开始试试吧!
--------------------------------------------------------------------------------
via: https://opensource.com/life/16/8/how-manage-binary-blobs-git-part-7
作者:[Seth Kenlon][a]
译者:[runningwater](https://github.com/runningwater)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth

View File

@ -0,0 +1,117 @@
在 Linux 系统下从 ISO 镜像中提取和复制文件的 3 种方法
============================================================
假设你的 Linux 服务器上有一个超大的 ISO 镜像文件,你想要打开它,然后提取或者复制其中的一个文件。你会怎么做呢?
其实在 Linux 系统里,有很多方法来实现这个要求。
比如说,你可以使用传统的 mount 命令以只读方式把 ISO 镜像文件加载为 loop 设备,然后再把文件复制到另一个目录。
### 在 Linux 系统下提取 ISO 镜像文件
为了完成该测试,你得有一个 ISO 镜像文件(我使用 ubuntu-16.10-server-amd64.iso 系统镜像文件)以及用于挂载和提取 ISO 镜像文件的目录。
首先,使用如下命令创建一个挂载目录来挂载 ISO 镜像文件:
```
$ sudo mkdir /mnt/iso
```
目录创建完成后,你就可以运行如下命令很容易地挂载 ubuntu-16.10-server-amd64.iso 系统镜像文件,并查看其中的内容。
```
$ sudo mount -o loop ubuntu-16.10-server-amd64.iso /mnt/iso
$ ls /mnt/iso/
```
[
![Mount ISO File in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Mount-ISO-File-in-Linux.png)
][1]
*在 Linux 系统里挂载 ISO 镜像*
现在你就可以进入到挂载目录 /mnt/iso 里,查看文件或者使用 [cp 命令][2]把文件复制到 /tmp 目录了。
```
$ cd /mnt/iso
$ sudo cp md5sum.txt /tmp/
$ sudo cp -r ubuntu /tmp/
```
[
![Copy Files From ISO File in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Copy-Files-From-ISO-File-in-Linux.png)
][3]
*在 Linux 系统中复制 ISO 镜像里的文件*
注意:`-r` 选项用于递归复制目录里的内容。如有必要,你也可以[监控复制命令的完成进度][4]。
### 使用 7zip 命令提取 ISO 镜像里的内容
如果不想挂载 ISO 镜像,你可以简单地安装一个 7zip 工具,这是一个自由而开源的解压缩软件,用于压缩或解压不同类型格式的文件,包括 TAR、XZ、GZIP、ZIP、BZIP2 等等。
```
$ sudo apt-get install p7zip-full p7zip-rar [On Debian/Ubuntu systems]
$ sudo yum install p7zip p7zip-plugins [On CentOS/RHEL systems]
```
7zip 软件安装完成后,你就可以使用`7z` 命令提取 ISO 镜像文件里的内容了。
```
$ 7z x ubuntu-16.10-server-amd64.iso
```
[
![7zip - Extract ISO File Content in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Extract-ISO-Content-in-Linux.png)
][5]
*使用 7zip 工具在 Linux 系统下提取 ISO 镜像里的文件*
注意:跟 Linux 的 mount 命令相比起来7zip 在压缩和解压缩任何格式的文件时速度更快,更智能。
### 使用 isoinfo 命令来提取 ISO 镜像文件内容
虽然 `isoinfo` 命令是用来以目录的形式列出 iso9660 镜像文件的内容,但是你也可以使用该程序来提取文件。
我说过isoinfo 程序会显示目录列表,因此先列出 ISO 镜像文件的内容。
```
$ isoinfo -i ubuntu-16.10-server-amd64.iso -l
```
[
![List ISO Content in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/List-ISO-Content-in-Linux.png)
][6]
*Linux 里列出 ISO 文件的内容*
现在你可以按如下的方式从 ISO 镜像文件中提取单文件:
```
$ isoinfo -i ubuntu-16.10-server-amd64.iso -x MD5SUM.TXT > MD5SUM.TXT
```
注意:因为 `-x` 解压到标准输出,必须使用重定向来提取指定文件。
[
![Extract Single File from ISO in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Extract-Single-File-from-ISO-in-Linux.png)
][7]
*从 ISO 镜像文件中提取单个文件*
就到这里吧,其实还有很多种方法来实现这个要求,如果你还知道其它有用的命令或工具来提取复制出 ISO 镜像文件中的文件,请在下面的评论中跟大家分享下。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/extract-files-from-iso-files-linux
作者:[Ravi Saive][a]
译者:[rusking](https://github.com/rusking)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/admin/
[1]:http://www.tecmint.com/wp-content/uploads/2016/10/Mount-ISO-File-in-Linux.png
[2]:http://www.tecmint.com/advanced-copy-command-shows-progress-bar-while-copying-files/
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/Copy-Files-From-ISO-File-in-Linux.png
[4]:http://www.tecmint.com/monitor-copy-backup-tar-progress-in-linux-using-pv-command/
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Extract-ISO-Content-in-Linux.png
[6]:http://www.tecmint.com/wp-content/uploads/2016/10/List-ISO-Content-in-Linux.png
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/Extract-Single-File-from-ISO-in-Linux.png

View File

@ -0,0 +1,232 @@
Apache、Nginx 与 Node.js 之争 —— WordPress 与 Ghost 的性能大对决
============================================================
![Node、Apache 与 Nginx 的对决](https://iwf1.com/wordpress/wp-content/uploads/2016/11/Node-vs-Apache-vs-Nginx-730x430.jpg)
巨头之间的终极对决:崛起的新星 Node.js 能否战胜巨人 Apache 和 Nginx
我和你一样,都阅读过大量散布在互联网各处的意见或事实,其中有一些我认为是可靠的,而其它的可能是谣传,让人难以置信。
我读过的许多信息是相当矛盾的,有人深信 StackOverflow比如[这个](http://stackoverflow.com/questions/9967887/node-js-itself-or-nginx-frontend-for-serving-static-files)和[另一个](http://stackoverflow.com/questions/16770673/using-node-js-only-vs-using-node-js-with-apache-nginx)),而其他人展示了一个清晰的令人惊讶的[结果](http://centminmod.com/siegebenchmarks/2013/020313/index.html),这在推动我自己去做测试来验证结论的过程中扮演了重要的角色。
起初,我做了一些思想准备,我认为我可以避免自己进行实际测试来校验结论的麻烦——在我知道这一切之前我一直这样认为。
尽管如此,回顾之前,似乎我最初的想法是相当准确的,并且被我的测试再次印证。这个事实让我想起了当年我在学校学到的爱因斯坦和他的光电效应的实验,他面临着一个光的波粒二重性的问题,最初的结论是实验受到他的心理状态的影响,即当他期望结果是一个波的时候结果就会是一个波,反之亦然。
也就是说,我坚信我的结果不会在不久的将来被证明二重性,虽然我的心理状态可能在某种程度上对它们有影响。
### 关于比较
上面我读过一份材料具有一种革新的方式,在我看来,需要了解其自然而然的主观性和作者自身的偏见。
我决定采用这种方式,因此,提前声明以下内容:
开发者花了很多年来打磨他们的作品。那些取得了更高成就的人通常参考很多因素来做出自己的抉择,这是主观的做法;你需要推崇和捍卫你的技术决策。
也就是说,这个比较文章的着眼点不会成为另一篇“哥们,使用适合你的东西就好”的口水文章。我将会根据我的自身经验、需求和偏见提出建议。你可能会同意其中一些观点,反对另外一些;这很好——你的意见会帮助别人做出明智的选择。
感谢 [SitePoint][2] 的 Craig Buckler ,重新启发了我对比较类文章的看法——尝试重新忘记自我,并试图让所有的读者心悦诚服。
### 关于测试
所有的测试都在本地运行:
* 英特尔酷睿 i7-2600k四核八线程的机器
* [Gentoo Linux][1] 是用于测试的操作系统
用于基准测试的工具ApacheBench2.3 <$Revision: 1748469 $>
测试包括一系列基准,从 1000 到 10000 个请求以及从 100 到 1000 个的并发请求——结果相当令人惊讶。
此外,我还进行了在高负载下测量服务器功能的压力测试。
至于内容,主要是一个包含一些 Lorem Ipsum 的标题和一张图片静态文件。
[![Lorem Ipsum and ApacheBenchmark](http://iwf1.com/wordpress/wp-content/uploads/2016/11/Lorem-Ipsum-and-ApacheBenchmark-730x411.jpg)
][3]
*Lorem Ipsum 和 ApacheBenchmark*
我决定专注于静态文件的原因是因为它们去除了可能对测试产生影响的各种渲染因素,例如:编程语言解释器的速度、解释器与服务器的集成程度等等。
此外,基于我自身的经验,平均网页加载时间很大一部分通常花费在静态内容上,例如图片,因此关注哪个服务器可以节省我们加载静态内容的时间是比较现实的。
除此之外,我还想测试一个更加真实的案例,案例中我在运行不同 CMS 的动态页面(稍后将详细介绍)时对服务器进行基准测试。
#### 服务器
正如我用的是 Gentoo Linux你就知道我的 HTTP 服务器在一开始就已经经过优化了,因为我在构建系统的时候只使用了我实际需要的东西。也就是说,当我运行我的测试的时候,不会在后台运行任何不必要的代码或加载没用的模块。
[![Apache、Nginx 和 Node.js 的使用的配置对比](http://iwf1.com/wordpress/wp-content/uploads/2016/10/Apache-vs-Nginx-vs-Node.js-use-flags-730x241.jpg)
][4]
*Apache、Nginx 和 Node.js 的使用的配置对比*
#### Apache
```
$: curl -i http://localhost/index.html
HTTP/1.1 200 OK
Date: Sun, 30 Oct 2016 15:35:44 GMT
Server: Apache
Last-Modified: Sun, 30 Oct 2016 14:13:36 GMT
ETag: "2cf2-54015b280046d"
Accept-Ranges: bytes
Content-Length: 11506
Cache-Control: max-age=600
Expires: Sun, 30 Oct 2016 15:45:44 GMT
Vary: Accept-Encoding
Content-Type: text/html
```
Apache 配置了 “event mpm”。
#### Nginx
```
$: curl -i http://localhost/index.html
HTTP/1.1 200 OK
Server: nginx/1.10.1
Date: Sun, 30 Oct 2016 14:17:30 GMT
Content-Type: text/html
Content-Length: 11506
Last-Modified: Sun, 30 Oct 2016 14:13:36 GMT
Connection: keep-alive
Keep-Alive: timeout=20
ETag: "58160010-2cf2"
Accept-Ranges: bytes
```
Nginx 包括几个调整:`sendfile on`、`tcp_nopush on` 和 `tcp_nodelay on`
#### Node.js
```
$: curl -i http://127.0.0.1:8080
HTTP/1.1 200 OK
Content-Length: 11506
Etag: 15
Last-Modified: Thu, 27 Oct 2016 14:09:58 GMT
Content-Type: text/html
Date: Sun, 30 Oct 2016 16:39:47 GMT
Connection: keep-alive
```
在静态测试中使用的 Node.js 服务器是从头定制的这样可以让它尽可能更加的轻快——没有使用外部模块Node 核心模块除外)。
### 测试结果
点击图片以放大:
[![Apache、Nginx 与 Node 的对比:请求负载能力(每 100 位并发用户)](http://iwf1.com/wordpress/wp-content/uploads/2016/11/requests-730x234.jpg)
][5]
*Apache、Nginx 与 Node 的对比:请求负载的性能(每 100 位并发用户)*
[![Apache、Nginx 与 Node 的对比:用户负载能力](http://iwf1.com/wordpress/wp-content/uploads/2016/11/concurrency-730x234.jpg)
][6]
*Apache、Nginx 与 Node 的对比:用户负载能力(每 1000 个请求)*
### 压力测试
[![Apache、Nginx 与 Node 的对比:完成 1000 位用户并发的 100000 个请求耗时](http://iwf1.com/wordpress/wp-content/uploads/2016/11/stress.jpg)
][7]
*Apache、Nginx 与 Node 的对比:完成 1000 位用户并发的 100000 个请求耗时*
### 我们可以从结果中得到什么?
从以上结果判断,似乎 Nginx 可以在最少的时间内完成最多请求,换句话来说,**Nginx** 是最快的 HTTP 服务器。
还有一个相当惊人的事实是在特定的用户并发数和请求数下Node.js 可以比 Nginx 和 Apache 更快。
但当请求的数量在并发测试中增加的时候Nginx 将重回领先的位置,这个结果可以让那些陷入 Node.js 的遐想的人清醒一下。
和 Apache、Nginx 不同的是Node.js 似乎对用户的并发数不太敏感,尤其是在集群节点。如图所示,集群节点在 0.1 秒左右保持一条直线,而 Apache 和 Nginx 都有大约 0.2 秒的波动。
基于上述统计可以得出的结论是网站比较小其使用的服务器就无所谓。然而随着网站的受众越来越多HTTP 服务器的影响变得愈加明显。
当涉及到每台服务器的原始速度的底线的时候,正如压力测试所描述的,我的感觉是,性能背后最关键的因素不是一些特定的算法,而实际上是运行的每台服务器所用的编程语言。
由于 Apache 和 Nginx 都使用了 C 语言—— AOT 语言(编译型语言),而 Node.js 使用了 JavaScript ——这是一种 JIT 语言(解释型语言)。这意味着 Node.js 在执行程序的过程中还有额外的工作负担。
这意味着我不能仅仅基于上面的结果来下结论,而要做进一步校验,正如你下面看到的结果,当我使用一台经过优化的 Node.js 服务器与流行的 Express 框架时,我得到几乎相同的性能结论。
### 全面考虑
逝者如斯夫如果没有服务的内容HTTP 服务器是没什么用的。因此,在比较 web 服务器的时候,我们必须考虑的一个重要的部分就是我们希望在上面运行的内容。
虽然也有其它的功能,但是 HTTP 服务器最广泛的使用就是运行网站。因此,为了看到每台服务器的性能的实际效果,我决定比较一下世界上使用最广泛的 CMS内容管理系统WordPress 和 Ghost —— 内核使用了 JavaScript 的一颗冉冉升起的明星。
基于 JavaScript 的 Ghost 网页能否胜过运行在 PHP 和 Apache / Nginx 上面的 WordPress 页面?
这是一个有趣的问题,因为 Ghost 具有操作工具单一且一致的优点——无需额外的封装,而 WordPress 需要依赖 Apache / Nginx 和 PHP 之间的集成,这可能会导致显著的性能缺陷。
除此之外PHP 距 Node.js 之间还有一个显著的性能落差,后者更佳,我将在下面简要介绍一下,可能会出现一些与初衷大相径庭的结果。
#### PHP 与 Node.js 的对决
为了比较 WordPress 和 Ghost我们必须首先考虑一个影响到两者的基本组件。
基本上WordPress 是一个基于 PHP 的 CMS而 Ghost 是基于 Node.jsJavaScript的。与 PHP 不同Node.js 有以下优点:
* 非阻塞的 I/O
* 事件驱动
* 更新颖、更少的残旧代码
由于有大量的测评文章解释和演示了 Node.js 的原始速度超过 PHP包括 PHP 7我不会再进一步阐述这个主题请你自行用谷歌搜索相关内容。
因此,考虑到 Node.js 的性能优于 PHP一个 Node.js 的网站的速度要比 Apache / Nginx 和 PHP 的网站快吗?
### WordPress 和 Ghost 对决
当比较 WordPress 和 Ghost 时,有些人会说这就像比较苹果和橘子,大多数情况下我同意这个观点,因为 WordPress 是一个完全成熟的 CMS而 Ghost 基本上只是一个博客平台。
然而,两者仍然有共同竞争的市场,这两者都可以用于向世界发布你的个人文章。
制定一个前提,我们怎么比较两个完全基于不同的代码来运行的平台,包括风格主题和核心功能。
事实上,一个科学的实验测试条件是很难设计的。然而,在这个测试中我对更接近生活的情景更感兴趣,所以 WordPress 和 Ghost 都将保留其主题。因此,这里的目标是使两个平台的网页大小尽可能相似,让 PHP 和 Node.js 在幕后斗智斗勇。
由于结果是根据不同的标准进行测量的,最重要的是尺度不一样,因此在图表中并排显示它们是不公平的。因此,我改为使用表:
[![Node、Nginx 和 Apache 性能比较表](http://iwf1.com/wordpress/wp-content/uploads/2016/11/Node-vs-Nginx-vs-Apache-comparison-table-730x185.jpg)
][8]
*Node、Nginx、Apache 以及运行 WordPress 和 Ghost 的比较。前两行是 WordPress底部的两行是 Ghost*
正如你所见,尽管事实上 GhostNode.js正在加载一个更小的页面你可能会惊讶 1kb 可以产生这么大的差异),它仍然比同时使用 Nginx 和 Apache 的 WordPress 要慢。
此外,使用 Nginx 代理作为负载均衡器来接管每个 Node 服务器的请求实际上会提升还是降低性能?
那么,根据上面的表格,如果说它产生什么效果的话,它造成了更慢的效果——这是一个合理的结果,因为额外封装一层理所当然会使其变得更慢。当然,上面的数字也表明这点差异可以忽略不计。
但是上表中最重要的一点是,即使 Node.js 比 PHP 快HTTP 服务器的作用也可能超过某个 web 平台使用的编程语言的重要性。
当然,另一方面,如果加载的页面更多地依赖于服务器端的脚本处理,那么我怀疑结果可能会有点不同。
最后,如果一个 web 平台真的想在这场竞赛里击败 WordPress从这个比较中得出的结论就是要想性能占优必须要定制一些像 PHP-FPM 的工具,它将直接与 JavaScript 通信(而不是作为服务器来运行),因此它可以完全发挥 JavaScript 的力量来达到更好的性能。
--------------------------------------------------------------------------------
via: https://iwf1.com/apache-vs-nginx-vs-node-js-and-what-it-means-about-the-performance-of-wordpress-vs-ghost/
作者:[Liron][a]
译者:[OneNewLife](https://github.com/OneNewLife)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://iwf1.com/tag/linux
[1]:http://iwf1.com/5-reasons-use-gentoo-linux/
[2]:https://www.sitepoint.com/sitepoint-smackdown-php-vs-node-js/
[3]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/Lorem-Ipsum-and-ApacheBenchmark.jpg
[4]:http://iwf1.com/wordpress/wp-content/uploads/2016/10/Apache-vs-Nginx-vs-Node.js-use-flags.jpg
[5]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/requests.jpg
[6]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/concurrency.jpg
[7]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/stress.jpg
[8]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/Node-vs-Nginx-vs-Apache-comparison-table.jpg

View File

@ -0,0 +1,103 @@
在 Linux 系统里识别 USB 设备名字的 4 种方法
============================================================
对于初学者来说,在 Linux 系统里你必须掌握的技术之一就是识别出插入系统里的各种设备。这也许是你的系统硬盘、外部的存储设备或者是可移动设备,比如 USB 设备或 SD 闪存卡等。
现如今,使用 USB 设备来传输文件是十分常见的事,对于那些喜欢使用命令行的新手来说,当你需要格式化 USB 设备时,学会使用不同的方法来识别 USB 设备名是非常重要的。
如果在系统中插入一个设备,尤其是在桌面环境下,比如 USB 设备,它会自动挂载到一个指定目录,一般是在 `/media/username/device-label` 目录下,之后你就可以进入到该目录下访问那些文件了。然而,在服务器上就不是这么回事了,你必须[手动挂载](http://www.tecmint.com/mount-filesystem-in-linux/)这个设备,并且指定一个挂载点。
Linux 系统使用 `/dev` 目录下特定的设备文件来标识插入的设备。你会发现该目录下的某些文件,包括 `/dev/sda` 或者 `/dev/hda` 表示你的第一个主设备,每个分区使用一个数字来表示,比如 `/dev/sda1``/dev/hda1` 表示主设备的第一个分区等等。
```
$ ls /dev/sda*
```
[ ![List All Linux Device Names](http://www.tecmint.com/wp-content/uploads/2016/10/List-All-Linux-Device-Names.png)
][3]
*列出 Linux 系统下所有的设备名*
现在让我们来使用下面一些特殊的命令行工具找出设备名:
### 使用 df 命令来找出插入的 USB 设备名
查看插入你系统里的每一个设备及对应的挂载点,你可以使用下图中的 `df` 命令检查 Linux 系统磁盘空间使用情况:
```
$ df -h
```
[![Find USB Device Name Using df Command](http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name.png)
][5]
*使用 df 命令查找 USB 设备名*
### 使用 lsblk 命令查找 USB 设备名
你也可以使用下面的 `lsblk` 命令(列出块设备)来列出插入你系统里的所有块设备:
```
$ lsblk
```
[
![List Linux Block Devices](http://www.tecmint.com/wp-content/uploads/2016/10/List-Linux-Block-Devices.png)
][7]
*列出 Linux 系统里的块设备*
### 使用 fdisk 工具识别 USB 设备名
[fdisk 是一个功能强大的工具][12],用于查看你系统中的所有分区表,包括所有的 USB 设备,使用 root 权限执行如下命令:
```
$ sudo fdisk -l
```
[
![List Partition Table of Block Devices](http://www.tecmint.com/wp-content/uploads/2016/10/List-Partition-Table.png)
][9]
*列出块设备的分区表*
### 使用 dmesg 命令来识别出 USB 设备名
`dmesg` 是一个用于打印或者控制内核环形缓冲区kernel ring buffer的重要命令。环形缓冲区是一种数据结构它[存放着内核操作数据的信息][13]。
运行如下命令来查看内核操作信息,它同时也会打印出 USB 设备的信息:
```
$ dmesg
```
[
![dmesg - Prints USB Device Name](http://www.tecmint.com/wp-content/uploads/2016/10/dmesg-shows-kernel-information.png)
][11]
*dmesg 打印 USB 设备名*
以上就是这篇文章中提及到的所有命令,我们在命令行下使用不同的方法来找出 USB 设备名。你也可以跟大家分享下实现这个目的的其它方法,或者如果你对这篇文章有什么想法也可以在下面跟大家交流下。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/find-usb-device-name-in-linux
作者:[Aaron Kili][a]
译者:[rusking](https://github.com/rusking)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/tag/linux-tricks/
[2]:http://www.tecmint.com/mount-filesystem-in-linux/
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/List-All-Linux-Device-Names.png
[4]:http://www.tecmint.com/how-to-check-disk-space-in-linux/
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name.png
[6]:http://www.tecmint.com/commands-to-collect-system-and-hardware-information-in-linux/
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Linux-Block-Devices.png
[8]:http://www.tecmint.com/fdisk-commands-to-manage-linux-disk-partitions/
[9]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Partition-Table.png
[10]:http://www.tecmint.com/dmesg-commands/
[11]:http://www.tecmint.com/wp-content/uploads/2016/10/dmesg-shows-kernel-information.png
[12]:http://www.tecmint.com/fdisk-commands-to-manage-linux-disk-partitions/
[13]:http://www.tecmint.com/dmesg-commands/

View File

@ -0,0 +1,306 @@
Linux 下五个最佳的 FPS 游戏
================
![best FPS games for linux](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/fps-games-for-linux.jpg?581)
开源用户久经游戏界的冷落与疏忽,他们给别的操作系统大量生产游戏,却没有几个在 Linux 上可以玩的。要在 Linux 上玩到画质好的 Linux 游戏大作,解决方案就是 [wine][26],但 wine 在开箱即用方面做的并不好。大多数画质一般的小游戏的制作者通常并不考虑为 Linux 开发或移植游戏,因为 Linux 的用户群体太小了。
如今Linux 的用户规模和范畴日益增多,而且你也看到了非开源的组织也[表达了他们对开源的支持][24]。
我们应该对 Linux 游戏抱有期望吗?现在有能在 Linux 系统上运行的大作吗?可以在网上与其他操作系统的用户玩吗?这些问题的答案是响亮的 YES.
让我给你介绍一下 Linux 系统上的 5 个最好的 FPS 游戏(第一人称射击游戏)。想玩这些游戏并不太麻烦,你可以安装任何一种 Linux 系统。我们选择了五个最好的,你可以看看:
### **[1、 CS - 反恐精英全球攻势Counter-Strike: Global Offensive ][19]** 
这个多人的第一人称射击游戏是 Hidden Patch 与 Valve Corporation 开发的游戏,它发布于 2012 年 8 月 21 日,但到 2014 年 9 月份才为 Linux 用户推出 Linux 移植版。
这款游戏本来是为游戏半条命Half-Life所开发的游戏 MOD。
[
![counter strike for linux](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike.jpg?628)
][18]
这款跨平台游戏只支持 Windows、MacOS 和 Linux 用户,电视游戏机用户因为主机游戏更新速度太慢而不支持。这款 Linux 游戏包含四种游戏模式。
#### CS 游戏模式
**经典:竞技模式**
这是让 CS (反恐精英)出名的最有名的游戏模式,五对五,一场三十局。可以加入你同伴的队伍,也可以排队加入随机队伍的空位。
[
![counter strike classic competitive](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike-classic-competitive.jpg?654)
][17]
**经典:休闲模式**
如果玩家不想玩之前的 30 局 16 胜模式,可以选择休闲模式,找个对手按自己的节奏打。系统会自动给玩家穿上防弹衣,也提供防御炸弹用的工具包。成功射杀敌人还有额外奖励。
**爆破模式**
爆破模式是一个快节奏的游戏模式,游戏中玩家轮流保卫一个炸弹点,防御带有起始武器装备的攻击者。这个模式里,如果你在当前局成功射杀敌人,就会在下一局获得更强的武器,最终你会获得一把强大的狙击步枪。
**军备竞赛模式**
这个模式是一种武器升级模式,玩家通过击杀敌人来得到一把升级过的武器。当你取得武器列表中最先进的武器时,你将得到一把金匕首并赢得胜利。
#### CS 的配置要求
**系统:** Ubuntu 12.04
**处理器:** 64-bit 英特尔双核,或 AMD 2.8 GHz 处理器
**内存:** 4 GB
**显卡:** nVidia GeForce 8600/9600GT、ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310、AMD 12.11)、 OpenGL 2.1
**硬盘:** 至少 15 GB 的空间
**声卡:** OpenAL 兼容声卡
### **[2、 无主之地Borderlands 2][16]** 
[
![borderlands 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/borderlands-2_1.jpg?588)
][15]
无主之地是综合了第一人称射击游戏和角色扮演游戏的角色扮演射击游戏,是 Gearbox一个独立游戏开发组制作的。
这个游戏中,四名玩家组成寻宝猎人队伍,做各种主线与支线任务找到潘多拉星球上的”传说宝库“。玩家可以在游戏里到网上与其他玩家组队。这个游戏于 2012 年 9 月 18 日正式出售。游戏采用虚幻引擎 3 和 PhysX Technology 开发。
#### 无主之地 2 游戏情节
这款游戏的游戏情节主要是完成主线任务和搜刮战利品(武器、盾、服饰等等)。游戏里有四种角色,每个角色有不同的技能和操作风格。
* **突击兵Axton**  可以召唤“军刀炮塔“提供攻击性辅助角色;
* **魔女Maya**  可以用一个能量球将敌人暂时固定在一处;
* **刺客Zer0**  可以在短时间内进入隐身状态,并制造全息假象来迷惑敌人;
* **狂枪手Salvador**  可以暂时手持两把武器,比如拿一对火箭筒指向敌人;
|[
![Axton “The Commando”](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/axton_orig.jpg)
][4]
*Axton “突击兵”*
[
![Zero”The Assassin”](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/zero_orig.jpg)
][3]
*Zero “刺客”*
[
![Maya “The Siren”](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/maya.jpg?381)
][2]
*Maya “魔女”*
[
![Salvador ](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/salvador.jpg?375)
][1]
*Salvador “狂枪手”*
这款游戏受到评论家的好评。根据游戏的趣味性、游戏世界的构造,还有 RPG 系统IGN 给这个游戏的评分是 9/10。
#### 无主之地 2 配置要求
**系统:** SteamOS、Ubuntu 14.04
**处理器:** 英特尔双核、AMD Phenom II X4
**处理器速度:** 2.4GHz
**内存:** 4 GB
**硬盘:** 13 GB
**显卡 (NVidia)** Geforce 260
**显卡 (VRam)** 1GB
无主之地 2 Linux 版目前不支持英特尔集成显卡芯片组和 ATI 芯片组。
### **[3、 军团要塞Team Fortress 2][14]** 
[
![team fortress 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_1.jpg?744)
][13]
这款游戏是有史以来最受欢迎,且评分最高的游戏之一,而且它是免费的。这是 [Valve 公司][21] 制作与发售的一款第一人称在线多玩家射击游戏。这款游戏经常更新mod、地图还有装备也常更新。游戏的玩家也可以参与游戏更新的内容设计。游戏于 2013 年 2 月 14 日移植到 Linux 系统。
游戏中,玩家可以加入不同队伍,选择不同角色参与各种游戏模式(包括情报战模式和山丘之王模式)。
#### 军团要塞 2 游戏情节
游戏的故事背景中,两个队伍由两方招的雇佣兵组成,目的是保护其中一方的资产,并销毁另一方的公司资产。两个队伍名字分别代表两方的公司 - RED保证开挖爆破即红队和 BLU建筑联合同盟即蓝队。你可以从九名各有优势和劣势的角色挑选自己喜欢的来玩。
#### 军团要塞 2 游戏模式
**情报战模式**
这个模式的目的是获取一个装有情报的公文包并回到你的大本营,而要防止敌人将公文包成功带回他们的大本营。拿着公文包的玩家可以随时丢掉公文包,或者在被杀的时候掉落。如果在两分钟之内没有别人捡起公文包,公文包就会回到起点。
时间到的时候,分数最高的队伍获胜。
[
![team fortress 2 capture flag](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_2.jpg?779)
][12]
**推车模式**
在这个游戏模式中,地图上只有一个公文包,所以双方需要强盗公文包运送到指定地点。只有同一个队伍的人可以拿公文包,直到成功运到指定地点,或者掉落倒计时结束时公文包回到起始点。
[
![team fortress special delivery](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-special-delivery_orig.jpg)
][11]
**山丘之王**
这个游戏模式的目的是控制地图中心点,并坚持保卫一段时间。
游戏开始时,玩家无法进入守卫点,直到某方达到了进入守卫点的分数,封锁才会被解除。占领控制点的时候,游戏会开始守卫倒计时,这时对方玩家需要夺得控制权,开始他们的守卫倒计时。当某方队伍的倒计时表达到 00:00 的时候,游戏结束,占领控制点的队伍获胜。
[
![team fortress king of the hill](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2-kill-of-the-hill_orig.jpg)
][10]
#### 军团要塞 2 配置要求
**系统:** Ubuntu 12.04
**处理器:** 英特尔双核或 AMD 2.8 GHz
**内存:** 1 GB RAM
**显卡:** nVidia GeForce 8600/9600GT、ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310、 AMD 12.11)、OpenGL 2.1
**网线:** 互联网链接
**硬盘:** 15 GB 可用空间
**声卡:** OpenAL 兼容声卡
**其他:** 鼠标,键盘
### **[4、 地铁 2033 重制版Metro 2033 redux][9]** 
地铁 2033 重制版由 4A 游戏工作室开发、THQ 发售。玩家以 Artyom 的角色在核战后莫斯科的废墟中生存他需要打败一群被称为“DARKENS”的邪恶突变体。
[
![metro 2033 redux](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/metro-2033-redux_orig.jpg)
][8]
有时游戏里的人类也是敌人,所以为了防止被抓住,游戏种玩家应该多用隐形术并悄无声息地干掉敌人。
地铁 2033 受到诸多评论家的好评,其中 IGN 给的评分是 6.9/10。
#### 地铁 2033 游戏情节
游戏主要发生在莫斯科地铁中,有个别任务设在在地面上的核辐射废墟中。游戏是单人游戏,玩家需要看游戏场景片得悉重要情节。
游戏里玩家可以使用传统武器(左轮手枪、猎枪)。玩家需要搜查废墟或尸体获得子弹。
敌人分两类,一类是人,另一类是突变体。人攻击玩家的时候会躲避玩家攻击,而突变体会正面攻击,企图咬伤玩家。
玩家大部分时间都待在黑暗的隧道里,需要手电筒照亮路线。在地面上的时候,玩家需要防毒面具,而这个防毒面具有可能在战斗种受到损害,这样玩家就不得不再去寻找一个新的防毒面具。
#### 地铁 2033 配置要求
**最低配置**
**系统:** 64-bit Ubuntu 12.04 或 14.04 或 Steam OS
**处理器:** 英特尔 i5 2.7 GHz (或同等的 AMD)
**内存:** 4 GB RAM
**显卡:** NVIDIA Geforce 460 / AMD 5850 加 2GB VRAM
**硬盘:** 10 GB 可用空间
**其他:** 因为用OpenGL 4, 游戏不支持英特尔集成显卡
**推荐配置**
**系统:** 64-bit Ubuntu 12.04 or 14.04 or Steam OS
**处理器:** Intel Core i7 2.5 Ghz (or equivalent AMD)
**内存:** 8 GB RAM
**显卡:** NVIDIA Geforce 680 / AMD 7870 with 2GB VRAM+
**硬盘:** 10 GB 可用空间
**其他:** 因为用OpenGL 4, 游戏不支持英特尔集成显卡
### **[5、 求生之路Left 4 Dead 2L4D2][7]** 
这是 Valve 公司制作与发售的多人协作 FPS于 2013 年 7 月发行 Linux 版本。
[
![left 4 dead 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead.jpg?731)
][6]
游戏有四名幸存者供玩家选择,需要打败僵尸,即感染者。这些感染者会因为严重的精神病而极具攻击性。游戏软件里的 AI 会按照玩家的水平而提升游戏难度,使游戏更有挑战性。
### 求生之路 2 游戏情节
这个游戏里共有五个章节,其中每个章节分三到五个级别。每个章节在菜单里和加载屏幕中以电影形式出现,电影主人公是四名幸存者。
[
![left 4 dead 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead-2-gameplay.jpg?779)
][5]
玩家可以看到队伍同伴的生命状况,同时也要注意射击或挥舞武器时不要误伤到同伴。
#### 游戏模式
求生之路 2 总共有 5 种游戏模式:
**战役模式**
四名玩家组成队伍,共同完成故事章节。游戏中遇到的其他幸存者都是 CPU 控制的 NPC。
**单人模式**
和战役模式相近,但队友都是 CPU 控制的 NPC。
**对抗模式**
四名操控幸存者的玩家对抗四名操控特殊感染者的玩家。每一局双方玩家都会调换角色,按幸存者局里面队伍所获得的分数计算积分。
**生存模式**
玩家会被封在某个章节地图中的一个区,游戏开始时画面会出一个计时器。玩家会按照地图里的生存时间得分,坚持的时间越长,得分越高。
**清道夫模式**
玩家分成两组4 对 4一组幸存者一组感染者。幸存者需要收集大量的油桶并装满一个发电机里而感染者则要防止幸存者成功完成任务。
#### 求生之路 2 配置要求
**系统:** Ubuntu 12.04
**处理器:** 英特尔双核或 AMD 2.8 GHz
**内存:** 2 GB RAM
**显卡:** nVidia GeForce 8600/9600GT、ATI/AMD Radeon HD2600/3600 (显卡: nVidia 310、 AMD 12.11)、 OpenGL 2.1
**硬盘:** 13 GB 可用空间
**声卡:** OpenAL 兼容声卡
### 总结
这些年来Linux 已经日益受到游戏厂家们的重视,在游戏界不像以前那么受到冷落。如今的 Linux 已不像昔日以前别的操作系统的用户笼统的概括说“Linux 只能供程序员编程“,但如今的 Linux 已经不同了。
现在,你已经不需要双系统来打游戏,虽然现在的选择暂时不多,但天天都会增加。在这五个游戏中,你最喜欢那一部?在下方的评论里告诉我们吧。
--------------------------------------------------------------------------------
via: http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux
作者:[Mohd Sohail][a]
译者:[jayjay823](https://github.com/jayjay823)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.linuxandubuntu.com/contact-us.html
[1]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/salvador_orig.jpg?375
[2]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/maya_orig.jpg?381
[3]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/zero_orig.jpg
[4]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/axton_orig.jpg
[5]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead-2-gameplay_orig.jpg?779
[6]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead_orig.jpg?731
[7]:http://store.steampowered.com/app/550/
[8]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/metro-2033-redux_orig.jpg
[9]:http://store.steampowered.com/app/286690/
[10]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2-kill-of-the-hill_orig.jpg
[11]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-special-delivery_orig.jpg
[12]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_2_orig.jpg?779
[13]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_1_orig.jpg?744
[14]:http://store.steampowered.com/app/440/
[15]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/borderlands-2_1_orig.jpg?588
[16]:http://store.steampowered.com/app/49520/
[17]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike-classic-competitive_orig.jpg?654
[18]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike_orig.jpg?628
[19]:http://store.steampowered.com/app/730/
[20]:http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux
[21]:http://www.valvesoftware.com/
[22]:http://store.steampowered.com/app/70/?
[23]:http://www.linuxandubuntu.com/home/category/games
[24]:http://www.theverge.com/2016/9/15/12926288/microsoft-really-does-love-linux
[25]:http://linux.com/
[26]:https://www.winehq.org/
[27]:http://www.linuxandubuntu.com/home/category/games
[28]:http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux

View File

@ -0,0 +1,181 @@
在 Linux 下将 PNG 和 JPG 批量互转的四种方法
==============
计算机术语中,批处理指的是用一个非交互式的程序来[执行一序列的任务][11]的方法。这篇教程里,我们会使用 Linux 命令行工具,并提供 4 种简单的处理方式来把一些 `.PNG` 格式的图像批量转换成 `.JPG` 格式的,以及转换回来。
虽然所有示例中我们使用的都是 `convert` 命令行工具,但是您也可以使用 `mogrify` 命令来达到同样的效果。
convert 命令的语法如下
```
$ convert 输入选项 输入文件 输出选项 输出文件
```
而 mogrify 的为:
```
$ mogrify 选项 输入文件
```
注意:在使用 `mogrify` 命令时,默认情况下源图像文件会被转换后的新文件覆盖掉,您可以使用明确的操作选项来禁止覆盖,具体的选项可以在手册页中查询得到。
下面是把所有 `.PNG` 格式图像批量转换为 `.JPG` 格式的各种实现方式。如果想把 `.JPG` 转换为 `.PNG` 格式,也可使用这些命令,按需修改。
### 1、 使用 `ls``xargs` 命令来转换 PNG 和 JPG
[ls 命令](10) 可以列出所有的 png 图像文件, `xargs` 使得可以从标准输入构建和执行 `convert` 命令,从而将所有 `.png` 图像转换为 `.jpg` 图像。
```
----------- 从 PNG 转换到 JPG -----------
$ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'
----------- 从 JPG 转换到 PNG -----------
$ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
```
关于上面命令选项的说明:
1. `-1`  告诉 ls 每行列出一个图像名称的选项标识
2. `-n`  指定最多参数个数,例子中为 1
3. `-c`  指示 bash 运行给定的命令
4. `${0%.png}.jpg`  设置新转换的图像文件的名字,`%` 符号用来删除源文件的扩展名
[
![Convert PNG to JPG Format in Linux](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-in-Linux.png)
][9]
*Linux 中 PNG 格式转为 JPG 格式*
我使用  `ls -ltr` 命令按[修改的日期和时间列出所有文件][8]。
类似的,也可以使用上面的命令要把 `.jpg` 图像转换为 `.png` 格式,只需稍微调整就行。
### 2、 使用 GNU 的 `parallel` 命令来转换 PNG 和 JPG
GNU 的 parallel 使用户能够从标准输入并行构建和执行 shell 命令。确保您的系统上安装了 GNU Parallel否则请使用以下适当的命令进行安装
```
$ sudo apt-get install parallel [在 Debian/Ubuntu 系统中]
$ sudo yum install parallel [在 RHEL/CentOS 和 Fedora 系统中]
```
安装好 `parallel` 工具后,您就可以运行下面的命令来把所有从标准输入的 `.png` 图像转换成 `.jpg` 格式的图像。
```
----------- 从 PNG 转换到 JPG -----------
$ parallel convert '{}' '{.}.jpg' ::: *.png
----------- 从 JPG 转换到 PNG -----------
$ parallel convert '{}' '{.}.png' ::: *.jpg
```
其中:
1. `{}`  输入行替代符,代替了从输入源读取的完整行。
2. `{.}`  去除扩展名的输入行。
3. `:::`  指定输入源的符号,即上面示例的命令行,在这里 *png 或 jpg* 是命令参数。
[
![Parallel Command - Converts All PNG Images to JPG Format](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-Parallel-Command.png)
][7]
*Parallel 命令 把所有 PNG 图像转换为 JPG 格式*
或者,您也可以结合 [ls][6] 和 `parallel` 命令来批量转换所有图像,如图所示:
```
----------- 从 PNG 转换到 JPG -----------
$ ls -1 *.png | parallel convert '{}' '{.}.jpg'
----------- 从 JPG 转换到 PNG -----------
$ ls -1 *.jpg | parallel convert '{}' '{.}.png'
```
### 3、 使用 `for` 循环命令来转换 PNG 和 JPG
为了避免编写 shell 脚本的繁琐,你可以从命令行执行 `for` 循环语句,如下所示:
```
----------- 从 PNG 转换到 JPG -----------
$ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'
----------- 从 JPG 转换到 PNG -----------
$ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'
```
对上面的命令所使用的选项参数的描述:
1. `-c` 允许执行包括在单引号中的循环语句。
2. `image` 变量是目录中的图像名的数量记数器。
3. 对于每个转换操作,在 `$image` 转换为 `${image%.png}.jpg` 这行中,[echo 命令][1]通知用户 png 图像已经转换为 jpg 格式,反之亦然。
4. `${image%.png}.jpg` 语句创建了转换后的图像名字,其中 `%` 表示去除源图像文件的扩展名。
[
![for loop - Convert PNG to JPG Format](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-for-loop-Command.png)
][5]
*for 循环语句 从 PNG 转换到 JPG 格式*
### 4、 使用 Shell 脚本来转换 PNG 和 JPG
如果你不想像前面的例子那样让你的命令行变得邋遢的话,可以写一个小脚本,如下所示:
注意:适当地交换 `.png``.jpg` 扩展名,如下面的例子所示,从一种格式转换到另一种格式:
```
#!/bin/bash
#convert
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo “image $image converted to ${image%.png}.jpg ”
done
exit 0
```
把上面的脚本保存为 `convert.sh` 文件,然后使此脚本文件可执行,接着从存有图像文件的目录下执行。
```
$ chmod +x convert.sh
$ ./convert.sh
```
[
![Batch Image Convert Using Shell Script](http://www.tecmint.com/wp-content/uploads/2016/11/Batch-Image-Convert-Using-Shell-Script.png)
][4]
*使用 Shell 脚本来批量图像转换*
总之,我们介绍了一些重要的将 .png 图像批量转换为 .jpg 格式的方法,以及再转回来。如果还想对图像进行一些优化的话, 您可以移步到 [ Linux 系统中如何压缩 png 和 jpg 图像][3]这篇指导文章。
您可以给我们分享一些包括 Linux 命令行工具在内的把图像从一种格式转成另一种格式的方式方法,或者在下面的评论部分畅所欲言。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/linux-image-conversion-tools/
作者:[Aaron Kili][a]
译者:[runningwater](https://github.com/runningwater)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/echo-command-in-linux/
[2]:http://www.tecmint.com/tag/linux-tricks/
[3]:http://www.tecmint.com/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/
[4]:http://www.tecmint.com/wp-content/uploads/2016/11/Batch-Image-Convert-Using-Shell-Script.png
[5]:http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-for-loop-Command.png
[6]:http://www.tecmint.com/tag/linux-ls-command/
[7]:http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-Parallel-Command.png
[8]:http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time/
[9]:http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-in-Linux.png
[10]:http://www.tecmint.com/tag/linux-ls-command/
[11]:http://www.tecmint.com/using-shell-script-to-automate-linux-system-maintenance-tasks/

View File

@ -0,0 +1,108 @@
怎样在 Arch Linux 终端上更改 WiFi 密码
============================================================
![Update Wifi Network Password From Terminal In Arch Linux](https://www.ostechnix.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
自从修改了我的路由器的 WiFi 网络密码后,我的 Arch Linux 测试机就不能连接到网络了。由于我的 Arch Linux 测试机没有图形化桌面环境,我不得不在终端上更改 WiFi 密码。在图形化操作界面中,更改 WiFi 密码是很容易的。我仅仅需要打开网络管理器,就能很快更改 WiFi 网络密码。但是,我从来没有在 Arch Linux 终端上用命令行来更改 WiFi 密码。我开始在 google 上搜索相关资料,并且在 Arch Linux 论坛找到了一个好的解决办法。如果你也面临同样的问题,读完这篇文章吧,这个方法并没有那么难。
### 在终端更改 WiFi 网络密码
修改了路由器的 WiFi 密码之后,我尝试运行 `wifi-menu` 命令来更新 WiFi 密码,但是它一直报如下错误。
```
sudo wifi-menu
```
它显示了可用的 WiFi 列表。
[
![](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_001-1.png)
][2]
我的 WiFi 网络名为 Murugs9376。我选中了我的 WiFi 网络,然后在 OK 处按下回车。它没有让我输入新的 WiFi 密码(我以为它会先问我是否密码已经更改),却显示了下面的错误。
```
Interface 'wlp9s0' is controlled by netctl-auto
WPA association/authentication failed for interface 'wlp9s0'
```
[
![](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_002-1.png)
][3]
在 Arch 发行版上,我没有太多的经验。因此我去了 Arch Linux 论坛希望能找到解决方法。感天谢地,之前有人发了同样问题的帖子并从一位 Arch 老司机那里得到了解决办法。
网络相关的配置文件都是存放在 `/etc/netctl/` 文件夹下。例如,下面是我的 Arch Linux 测试机上该文件夹下的内容:
```
ls /etc/netctl/
Sample Output:
examples ostechnix 'wlp9s0-Chendhan Cell Service' wlp9s0-Pratheesh
hooks wlp9s0 wlp9s0-Murugu9376
interfaces wlp9s0-AndroidAP wlp9s0-none
```
[
![](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_003-1.png)
][4]
我如果想要更改密码,只需要删除我的 WiFi 网络配置文件 (这里是 `wlp9s0-Murugs9376`) 并且重新运行 `wifi-menu` 命令。
因此,用下面的命令来删除原来的 WiFi 配置文件:
```
sudo rm /etc/netctl/wlp9s0-Murugu9376
```
删除配置文件之后,运行 `wifi-menu` 命令来更新 WiFi 密码。
```
sudo wifi-menu
```
选择 WiFi 网络,并且按回车键。
[
![](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_004-1.png)
][5]
为新配置文件输入一个新名字。
[
![](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_005-1.png)
][6]
最后,输入 WiFi 新密码到配置文件中,并且按下回车键。
[
![](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_006-1.png)
][7]
这样就完成了。现在,我们已经更新了我们的 WiFi 网络密码。像你所看到的一样,在 Arch Linux 终端里面更新 WiFi 密码并不是件很难的事情。任何人都能在几秒钟以内完成它。
如果您觉得这个教程很有帮助,希望您能分享到您的社交网络中来支持我们。
谢谢!
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/update-wifi-network-password-terminal-arch-linux/
作者:[SK][a]
译者:[chenzhijun](https://github.com/chenzhijun)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.ostechnix.com/author/sk/
[1]:http://ostechnix.tradepub.com/free/w_pacb38/prgm.cgi?a=1
[2]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_001-1.png
[3]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_002-1.png
[4]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_003-1.png
[5]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_004-1.png
[6]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_005-1.png
[7]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_006-1.png

View File

@ -0,0 +1,234 @@
Neofetch :带发行版 Logo 图像的系统信息显示工具
============================================================
Neofetch 是一个跨平台的易于使用的 [系统信息显示命令行脚本][3],它收集你的系统信息,并在终端中和图像一起显示出来,这个图像可能是你的发行版的 logo 也可能是你选择的一幅 ascii 艺术字。
Neofetch  [ScreenFetch][4] 或者 [Linux_Logo][5] 很像,但是它可以高度定制,并且还有一些额外的我们要在下面讨论的特点。
它的主要特点有:运行速度快,可以显示全色图像 —— 用 ASCII 字符显示的发行版 logo ,旁边显示系统信息,可以高度定制,可以随时随地显示系统信息,并且在脚本结束的时候还可以通过一个特殊的参数来启用桌面截图。
#### 系统要求:
1. Bash 3.0+ 带 ncurses 支持。
2. w3m-img (有时候会打包成 w3m) 或者 iTerm2 或者 Terminology用于显示图像。
3. [imagemagick][1],用于创建缩略图。
4. 支持 `[\033[14t` 的 [Linux 终端模拟器][2] 或者 xdotool 或者 xwininfo + xprop 或者 xwininfo + xdpyinfo 。
5. Linux 系统中还需要 feh、nitrogen 或者 gsettings 来提供对墙纸的支持。
注意:你可以从 Neofetch 的 Github 页面了解更多关于可选依赖的信息,以检查你的 [Linux 终端模拟器][6] 是不是真的支持 `\033[14t` 或者是否需要一些额外的依赖来使这个脚本在你的发行版上工作得更好。
### 怎样在 Linux 系统上安装 Neofetch
Neofetch 可以从几乎所有 Linux 发行版的第三方仓库轻松安装,请按照以下各自的安装说明进行安装。
#### Debian
```
$ echo "deb http://dl.bintray.com/dawidd6/neofetch jessie main" | sudo tee -a /etc/apt/sources.list
$ curl -L "https://bintray.com/user/downloadSubjectPublicKey?username=bintray" -o Release-neofetch.key && sudo apt-key add Release-neofetch.key && rm Release-neofetch.key
$ sudo apt-get update
$ sudo apt-get install neofetch
```
#### Ubuntu 和 Linux Mint
```
$ sudo add-apt-repository ppa:dawidd0811/neofetch
$ sudo apt-get update
$ sudo apt-get install neofetch
```
#### RHEL, CentOS 和 Fedora
你的系统里面要安装了 `dnf-plugins-core` ,或者用以下命令安装它:
```
$ sudo yum install dnf-plugins-core
```
启用 COPR 仓库然后安装 neofetch。
```
$ sudo dnf copr enable konimex/neofetch
$ sudo dnf install neofetch
```
#### Arch Linux
你可以用 packer 或 Yaourt 从 AUR 安装 neofetch 或 neofetch-git。
```
$ packer -S neofetch
$ packer -S neofetch-git
$ yaourt -S neofetch
$ yaourt -S neofetch-git
```
#### Gentoo
从 Gentoo/Funtoo 的官方源安装 app-misc/neofetch。如果你要安装这个程序的 git 版的话,你可以安装  app-misc/neofetch-9999。
### 怎么在 Linux 中使用 Neofetch
一旦你安装了 Neofetch ,使用它的一般语法是:
```
$ neofetch
```
注意: 要是你没有安装 w3m-img 或者 [imagemagick][7] 的话,[screenfetch][8] 会默认被启用neofetch 会如下图所示显示你的 [ASCII 艺术 logo]。
#### Linux Mint 系统信息
[
![Linux Mint 系统信息](http://www.tecmint.com/wp-content/uploads/2016/11/Linux-Mint-System-Information.png)
][10]
*Linux Mint 系统信息*
#### Ubuntu 系统信息
[
![Ubuntu System Information](http://www.tecmint.com/wp-content/uploads/2016/11/Ubuntu-System-Information.png)
][11]
*Ubuntu 系统信息*
如果你想用图片显示你的发行版 logo需要用下面的命令安装 w3m-img 或者 imagemagick 。
```
$ sudo apt-get install w3m-img [On Debian/Ubuntu/Mint]
$ sudo yum install w3m-img [On RHEL/CentOS/Fedora]
```
然后再次运行 neofetch你就会看到如下图所示的用你系统的默认墙纸来显示图片。
```
$ neofetch
```
[
![Ubuntu System Information with Logo](http://www.tecmint.com/wp-content/uploads/2016/11/Ubuntu-System-Information-with-Logo.png)
][12]
*Ubuntu 系统信息带 logo*
第一次运行 neofetch 后,它会在这里创建一个配置文件: `$HOME/.config/neofetch/config`
这个配置文件可以让你通过 `printinfo ()`  函数来调整你想显示在终端的系统信息。你可以增加,修改,删除,也可以使用 bash 代码去调整你要显示的信息。
你可以如下图所示用你喜欢的编辑器打开这个配置文件:
```
$ vi ~/.config/neofetch/config
```
以下是我系统配置的片段 ,显示了 `printinfo ()` 函数。
Neofetch 配置
```
#!/usr/bin/env bash
# vim:fdm=marker
#
# Neofetch config file
# https://github.com/dylanaraps/neofetch
# Speed up script by not using unicode
export LC_ALL=C
export LANG=C
# Info Options {{{
# Info
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
printinfo() {
info title
info underline
info "Model" model
info "OS" distro
info "Kernel" kernel
info "Uptime" uptime
info "Packages" packages
info "Shell" shell
info "Resolution" resolution
info "DE" de
info "WM" wm
info "WM Theme" wmtheme
info "Theme" theme
info "Icons" icons
info "Terminal" term
info "Terminal Font" termfont
info "CPU" cpu
info "GPU" gpu
info "Memory" memory
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# info "Local IP" localip
# info "Public IP" publicip
# info "Users" users
# info "Birthday" birthday
info linebreak
info cols
info linebreak
}
.....
```
下面的命令可以显示所有你能在 neofetch 脚本中用的参数和配置值:
```
$ neofetch --help
```
要启用所有的功能和参数来运行程序,你可以用 `--test` 参数:
```
$ neofetch --test
```
要再次显示 ASCII 艺术 logo ,你可以用 `--ascii` 参数 :
```
$ neofetch --ascii
```
这篇文章中,我们向你介绍了一个可以高度定制的、用来收集系统信息并将它显示在终端上的命令行脚本。
如果你有什么问题,或者对这个脚本有什么想法,请在下面留言。
最后但是同样重要的是,如果你知道有类似的脚本,请毫不犹豫地告诉我们,感谢反馈。
在此访问 [neofetch Github 仓库][13]。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/neofetch-shows-linux-system-information-with-logo
作者:[Aaron Kili][a]
译者:[Yinux](https://github.com/Yinux)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/install-imagemagick-in-linux/
[2]:http://www.tecmint.com/linux-terminal-emulators/
[3]:http://www.tecmint.com/screenfetch-system-information-generator-for-linux/
[4]:http://www.tecmint.com/screenfetch-system-information-generator-for-linux/
[5]:http://www.tecmint.com/linux_logo-tool-to-print-color-ansi-logos-of-linux/
[6]:http://www.tecmint.com/linux-terminal-emulators/
[7]:http://www.tecmint.com/install-imagemagick-in-linux/
[8]:http://www.tecmint.com/screenfetch-system-information-generator-for-linux/
[9]:http://www.tecmint.com/linux_logo-tool-to-print-color-ansi-logos-of-linux/
[10]:http://www.tecmint.com/wp-content/uploads/2016/11/Linux-Mint-System-Information.png
[11]:http://www.tecmint.com/wp-content/uploads/2016/11/Ubuntu-System-Information.png
[12]:http://www.tecmint.com/wp-content/uploads/2016/11/Ubuntu-System-Information-with-Logo.png
[13]:https://github.com/dylanaraps/neofetch

View File

@ -0,0 +1,42 @@
Eclipse Che下一代基于 Web 的 IDE
============================================================
![Eclipse Che简介下一代基于Web的IDE](https://opensource.com/sites/default/files/styles/image-full-size/public/images/education/EDU_OSDC_OpenClass_520x292_FINAL_JD.png?itok=ETOrrpcP "Introduction to Eclipse Che, a next-generation, web-based IDE")
> 图片来自: opensource.com
即使对于熟练的开发人员,想要去为一个项目贡献代码,正确的安装和配置一个集成开发环境、工作区
workspace和构建工具都是一个十分艰难和浪费时间的任务。[Codenvy][1] 的CEOTyler Jewell也面临着这个问题。当他养好了一些小病又处理了一些管理工作之后试图建立一个简单的 Java 项目来找回他曾经的编程技能。经过多天的努力Jewell 的项目依然无法工作,但这就是给予了他灵感。他想做个可以让“任何人,任何时候都可以为安装软件的项目做贡献”的东西。
正是这个想法引发了 [Eclipse Che][2] 的发展。
Eclipse Che 是一个基于 Web 的集成开发环境IDE和工作区。Eclipse Che 将工作区与合适的运行时软件环境stack捆绑在一起全都紧密结合在一起。在这些工作空间中的项目具有运行所需的一切工具开发人员不用做什么事情只需要创建工作空间时选择正确的软件环境。
Eclipse Che 已经就绪的捆绑软件环境支持绝大多数现代流行语言。现在已经支持 C++、Java、Go、PHP、 Python、 .NET、Node.js、 Ruby on Rails和 Android 开发等。软件环境库Stack Library )提供了多种选择,如果这样还不够,还可以选择创建一个提供自定义的环境的定制软件环境。
Eclipse Che 是一个功能齐全的 IDE而不是一个基于 Web 的简易文本编辑器。它构建于 Orion 和 JDT 之上。支持智能感知Intellisense和调试并集成了 Git 和 Subversion 版本控制软件。IDE 甚至可以由多个用户共享,进行结对编程。只需一个 Web 浏览器,开发人员就可以编写和调试他们的代码。但是,如果开发人员更喜欢使用基于桌面的 IDE也可以使用 SSH 连接到工作空间。
Eclipse Che 底层所采用的主要技术之一是 [Linux 容器][3] - Docker。工作空间是同样是使用 Docker 构建的,安装 Eclipse Che 的本地副本只需要 Docker 和一个小脚本文件。只需在第一次运行时,第一次运行 `che.sh start` 时,就会下载和运行必需的 Docker 容器。但是,如果你觉得设置 Docker 来安装 Eclipse Che 依然太麻烦Codenvy 还提供在线托管的方法。甚至,他们为开源项目的每个贡献者都提供了 4GB 的工作区。使用 Codenvy 的托管选项或者其它的在线托管方式,只需要提供一个 URL 给潜在贡献者,就会自动创建一个包含项目代码的工作区,所有这些只需轻轻点击一下。
除了 Codenvy 之外Eclipse Che 的贡献者还包括微软、红帽、IBM、三星和许多其它的人或组织。很多贡献者正在致力于开发 Eclipse Che 的定制版本以用于其特定用途。例如,三星的 [Artik IDE][4] 项目用于物联网领域。基于 Web 的 IDE 可能会让一些人失业,但 Eclipse Che 提供很多的机会,并且有很多业内的大公司需要,值得一试。
* * *
如果你有兴趣了解更多关于 Eclipse Che[CheConf 2016][5] 将会 11 月 15 日举行。 CheConf 2016 是一个在线会议,可以免费注册。会议开始于东部时间上午 11 点UTC 时间下午 4:00到东部时间下午 5:30UTC 时间下午 10:30结束。
--------------------------------------------------------------------------------
via: https://opensource.com/life/16/11/introduction-eclipse-che
作者:[Joshua Allen Holm][a]
译者:[Vic020](http://www.vicyu.net/)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://opensource.com/users/holmja
[1]:http://codenvy.com/
[2]:http://eclipse.org/che
[3]:https://opensource.com/resources/what-are-linux-containers
[4]:http://eclipse.org/che/artik
[5]:https://eclipse.org/che/checonf/

View File

@ -0,0 +1,94 @@
如何在 Linux 中查找一个文件
============================================================
![linux-find-command](https://www.rosehosting.com/blog/wp-content/uploads/2016/09/linux-find-command.png)
对于新手而言,在 Linux 中使用命令行可能会非常不方便。没有图形界面,很难在不同文件夹间浏览,找到需要的文件。本篇教程中,我会展示如何在 Linux 中查找特定的文件。
第一步要做的是**[通过 SSH 连接到你的 Linux][2]**。在 Linux 中查找文件有两种方法。一种是使用 `find` 命令,另外一种是使用 `locate` 命令。我们先看第一种。
### find 命令
使用 **Linux find 命令**可以用不同的搜索标准如名字、类型、所属人、大小等来搜索目录树。基本语法如下:
```
# find path expression search-term
```
下面是使用 find 命令根据文件名来查找特定文件的一个例子:
```
# find -name test.file
```
命令会搜索整个目录树来查找名为 `test.file` 的文件,并且会提供其存放位置。你可以使用你 Linux 上一个存在的文件名来尝试一下。
find 命令有时会花费几分钟来查找整个目录树,尤其是如果系统中有很多文件和目录的话。要显著减少时间,你可以指定搜索的目录。比如,如果你知道 `/var` 中存在 `test.file`,那就没有必要搜索其它目录。这样,你可以使用下面的命令:
```
# find /var -name test.file
```
find 还可以根据时间、大小、所属人、权限等选项搜索文件。要了解更多关于这些选项的信息,你可以使用查看** Linux find 命令**的手册。
```
# man find
```
### locate 命令
要在Linux中使用`locate`命令,首先需要安装它。
如果你正在使用 Ubuntu运行下面的命令来安装 locate
```
# apt-get update
# apt-get install mlocate
```
如果你使用的是 CentOS ,运行下面的命令来安装 locate
```
# yum install mlocate
```
locate 是一种比 find 更快的方式,因为它在数据库中查找文件。要更新搜索数据库,运行下面的命令:
```
# updatedb
```
使用 locate 查找文件的语法:
```
# locate test.file
```
就像 find 命令一样locate 也有很多选项来过滤输出。要了解更多你可以查看**Linux Locate 命令**的手册。
```
# man locate
```
* * *
当然,如果你使用了我们的 [Linux VPS 托管服务][5],你不必自己这么做,你可以请求我们专业的 Linux 管理员来帮助你。我们是 24x7 服务的,并且会立即处理你的请求。
另外,如果你喜欢这篇文件,请使用左边的按钮分享到社交网络上,或者在下面留言,谢谢。
--------------------------------------------------------------------------------
via: https://www.rosehosting.com/blog/linux-find-file/
作者:[RoseHosting][a]
译者:[geekpi](https://github.com/geekpi)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.rosehosting.com/blog/linux-find-file/
[1]:https://www.rosehosting.com/
[2]:https://www.rosehosting.com/blog/connect-to-your-linux-vps-via-ssh/
[3]:https://www.rosehosting.com/ubuntu-vps.html
[4]:https://www.rosehosting.com/centos-vps.html
[5]:https://www.rosehosting.com/linux-vps-hosting.html

View File

@ -0,0 +1,93 @@
在 Linux 中找出所有在线主机的 IP 地址
============================================================
你可以在 Linux 的生态系统中找到很多[网络监控工具][1],它们可以为你生成出网络中所有设备的摘要,包括它们的 IP 地址等信息。
然而,实际上有时候你只需要一个简单的命令行工具,运行一个简单的命令就能提供同样的信息。
本篇教程会向你展示如何找出所有连接到给定网络的主机的 IP 地址。这里我们会使用 [Nmap 工具][2]来找出所有连接到相同网络的设备的IP地址。
[Nmap][3] (Network Mapper 的简称)是一款开源、强大并且多功能的探查网络的命令行工具,用来[执行安全扫描、网络审计][4]、[查找远程主机的开放端口][5]等等。
如果你的系统中还没有安装 Nmap在你的发行版中运行合适的命令来安装
```
$ sudo yum install nmap         [在基于 RedHat 的系统中]
$ sudo dnf install nmap         [在基于Fedora 22+ 的版本中]
$ sudo apt-get install nmap     [在基于 Debian/Ubuntu 的系统中]
```
安装完成后,使用的语法是:
```
$ nmap [scan type...] options {target specification}
```
其中,**{target specification}**这个参数可以用**主机名、IP 地址、网络**等来替代。
所以要列出所有连接到指定网络的主机 IP 地址,首先要使用 [ifconfig 命令][6]或者[ip 命令][7]来识别网络以及它的子网掩码:
```
$ ifconfig
或者
$ ip addr show
```
[
![Find Network Details in Linux](http://www.tecmint.com/wp-content/uploads/2016/11/Find-Network-Details-in-Linux.png)
][8]
*在 Linux 中查找网络细节*
接下来,如下运行 Nmap 命令:
```
$ nmap -sn 10.42.0.0/24
```
[
![Find All Live Hosts on Network](http://www.tecmint.com/wp-content/uploads/2016/11/Find-All-Live-Hosts-on-Network.png)
][9]
*查找网络中所有活跃的主机*
上面的命令中:
- `-sn` - 是扫描的类型,这里是 ping 方式扫描。默认上Nmap 使用端口扫描,但是这种扫描会禁用端口扫描。
- `10.42.0.0/24` - 是目标网络,用你实际的网络来替换。
要了解全面的信息,查看 Nmap 的手册:
```
$ man nmap
```
或者不带任何参数直接运行 Nmap 查看使用信息摘要:
```
$ nmap
```
此外,对于有兴趣学习 Linux 安全扫描技术的人,可以阅读 [Nmap in Kali Linux][10] 这篇实践指导。
好了,就是这样了,记得在下面的回复区给我们发送问题或者评论。你也可以跟我们分享其他列出指定网络已连接设备的 IP 地址的方法。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/find-live-hosts-ip-addresses-on-linux-network/
作者:[Aaron Kili][a]
译者:[geekpi](https://github.com/geekpi)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/command-line-tools-to-monitor-linux-performance/
[2]:http://www.tecmint.com/nmap-network-security-scanner-in-kali-linux/
[3]:http://www.tecmint.com/nmap-command-examples/
[4]:http://www.tecmint.com/audit-network-performance-security-and-troubleshooting-in-linux/
[5]:http://www.tecmint.com/find-open-ports-in-linux/
[6]:http://www.tecmint.com/ifconfig-command-examples/
[7]:http://www.tecmint.com/ip-command-examples/
[8]:http://www.tecmint.com/wp-content/uploads/2016/11/Find-Network-Details-in-Linux.png
[9]:http://www.tecmint.com/wp-content/uploads/2016/11/Find-All-Live-Hosts-on-Network.png
[10]:http://www.tecmint.com/nmap-network-security-scanner-in-kali-linux/

View File

@ -0,0 +1,94 @@
在 CentOS 和 RHEL 系统上安装安全补丁或自动更新
============================================================
在 Linux 系统上,一个最重要的需求就是为相应的 Linux 版本定期安装最新的安全补丁,或者更新。
在之前的文章中,我们分享了[如何在 Debian/Ubuntu 上配置自动安全更新][1],在这篇文章中,我们将分享如何在 CentOS/RHEL 7/6 版本中设置在需要时自动更新重要的安全补丁。
和它同一家族的其它 Linux 版本Fedora 或 Scientific Linux中可以用类似的方法进行配置。
### 在 CentOS/RHEL 系统上配置自动安全更新
在 CentOS/RHEL 7/6 系统上,你需要安装下面的安装包:
```
# yum update -y && yum install yum-cron -y
```
### 在 CentOS/RHEL 7 系统上启用自动安全更新
安装完成以后,打开 `/etc/yum/yum-cron.conf`,然后找到下面这些行内容,你必须确保它们的值和下面展示的一样
```
update_cmd = security
update_messages = yes
download_updates = yes
apply_updates = yes
```
第一行表明自动更新命令行应该像这样:
```
# yum --security upgrade
```
而其它的行保证了能够通知并自动下载、安装安全升级。
为了使来自 root@localhost 的通知能够通过邮件发送给同一账户(再次说明,你可以选择其他账户,如果你想这样的话),下面这些行也是必须的。
```
emit_via = email
email_from = root@localhost
email_to = root
```
### 在 CentOS/RHEL 6 上启用自动安全更新
默认情况下, cron 任务被配置成了立即下载并安装所有更新,但是我们可以通过在 `/etc/sysconfig/yum-cron` 配置文件中把下面两个参数改为 `yes`,从而改变这种行为。
```
# 不要安装,只做检查(有效值: yes|no
CHECK_ONLY=yes
# 不要安装,只做检查和下载(有效值: yes|no
# 要求 CHECK_ONLY=yes先要检查后才可以知道要下载什么
DOWNLOAD_ONLY=yes
```
为了启用关于安装包更新的邮件通知,你需要把 `MAILTO` 参数设置为一个有效的邮件地址。
```
# 默认情况下 MAILTO 是没有设置的crond 会将输出发送邮件给自己LCTT 译注:执行 cron 的用户,这里是 root
# 例子: MAILTO=root
MAILTO=admin@tecmint.com
```
最后,打开并启用 `yum-cron` 服务:
```
------------- On CentOS/RHEL 7 -------------
systemctl start yum-cron
systemctl enable yum-cron
------------- On CentOS/RHEL 6 -------------
# service yum-cron start
# chkconfig --level 35 yum-cron on
```
恭喜你,你已经成功的在 CentOS/RHEL 7/6 系统上设置了自动升级。
### 总结
在这篇文章中,我们讨论了如何保持你的服务器定期更新或升级最新的安全补丁。另外,为了保证当新的补丁被应用时你自己能够知道,你也学习了如何配置邮件通知。
如果你有任何关于这篇文章的疑问,请在下面的评论区留下你的问题。我们期待收到你的回复。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/auto-install-security-patches-updates-on-centos-rhel/
作者:[Gabriel Cánepa][a]
译者:[ucasFL](https://github.com/ucasFL)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/gacanepa/
[1]:http://www.tecmint.com/auto-install-security-updates-on-debian-and-ubuntu/

View File

@ -0,0 +1,139 @@
安卓编年史8Android 1.5 Cupcake——虚拟键盘打开设备设计的大门
================================================================================
![安卓 1.5 的屏幕软键盘输入时的输入建议栏,大写状态键盘,数字与符号界面,更多符号弹窗。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/kb5.png)
*安卓 1.5 的虚拟键盘输入时的输入建议栏、大写状态键盘、数字与符号界面、更多符号弹窗。
[Ron Amadeo 供图]*
### Android 1.5 Cupcake——虚拟键盘打开设备设计的大门 ###
在 2009 年 4 月,安卓 1.1 发布后将近三个月后,安卓 1.5 发布了。这是第一个拥有公开的、市场化代号的安卓版本纸杯蛋糕Cupcake。从这个版本开始每个版本的安卓将会拥有一个按字母表排序以小吃为主题的代号。
纸杯蛋糕新增功能中最重要的明显当属虚拟键盘。这是 OEM 厂商第一次有可能抛开带有数不清的按键的实体键盘以及复杂的滑动结构,创造出平板风格的安卓设备。
安卓的按键标识可以在大小写之间切换这取决于大写锁定是否开启。尽管默认情况下它是关闭的显示在键盘顶部的建议栏有个选项可以打开它。在按键的弹框中带有省略号的就像“u”上面图那样的可以在按住的情况下可以输入弹框中的[发音符号][1]。键盘可以切换到数字和符号,长按句号键可以打开更多符号。
![1.5和1.1中的应用程序界面和通知面板的对比。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/abweave.png)
*1.5 和 1.1 中的应用程序界面和通知面板的对比。
[Ron Amadeo 供图]*
给新的“摄像机”功能增加了新图标Google Talk 从 IM 中分离出来成为了一个独立的应用。亚马逊 MP3 和浏览器的图标同样经过了重新设计。亚马逊 MP3 图标更改的主要原因是亚马逊即将计划推出其它的安卓应用而“A”图标所指范围太泛了。浏览器图标无疑是安卓 1.1 中最糟糕的设计,所以它被重新设计了,并且不再像是一个桌面操作系统的对话框。应用抽屉的最后一个改变是“图片”,它被重新命名为了“相册”。
通知面板同样经过了重新设计。面板背景加上了布纹纹理,通知的渐变效果也被平滑化了。安卓 1.5 在系统核心部分有许多设计上的微小改变,这些改变影响到所有的应用。在“清除通知”按钮上,你可以看到全新的系统按钮风格,与旧版本的按钮相比有了渐变、更细的边框线以及更少的阴影。
![安卓1.5和1.1中的“添加到主屏幕”对话框。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/widget.png)
*安卓 1.5 和 1.1 中的“添加到主屏幕”对话框。
[Ron Amadeo 供图]*
第三方小部件是纸杯蛋糕的另一个头等特性,它们现在仍然是安卓的本质特征之一。无论是用来控制应用还是显示应用的信息,开发者们都可以为他们的应用捆绑一个主屏幕小部件。谷歌同样展示了一些它们自己的新的小部件,分别来自日历和音乐这两个应用。
![左:日历小部件,音乐小部件以及一排实时文件夹的截图。中:文件夹列表。右:“带电话号码的联系人”实时文件夹的打开视图。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/folders-and-widgets-and-stuff.png)
*左:日历小部件,音乐小部件以及一排实时文件夹的截图。中:文件夹列表。右:“带电话号码的联系人”实时文件夹的打开视图。
[Ron Amadeo 供图]*
在上方左边的截图里你可以看到新的日历和音乐图标。日历小部件只能显示当天的一个事件,点击它会打开日历。你不能够选择日历所显示的内容,小部件也不能够重新设置大小——它就是上面看起来的那个样子。音乐小部件是蓝色的——尽管音乐应用里没有一丁点的蓝色——它展示了歌曲名和歌手名,此外还有播放和下一曲按钮。
同样在左侧截图里,底部一排的头三个文件夹是一个叫做“[实时文件夹](http://android-developers.blogspot.com/2009/04/live-folders.html)”的新特性。它们可以在“添加到主屏幕”菜单中的新顶层选项“文件夹”中被找到,就像你在中间那张图看到的那样。实时文件夹可以展示一个应用的内容而不用打开这个应用。纸杯蛋糕带来的都是和联系人相关的实时文件夹,能够显示所有联系人,带有电话号码的联系人和加星标的联系人。
实时文件夹在主屏的弹窗使用了一个简单的列表视图,而不是图标。联系人只是实时文件夹的一个初级应用,它是给开发者使用的一个完整 API。谷歌用 Google Books 应用做了个图书文件夹的演示,它可以显示 RSS 订阅或是一个网站的热门故事。实时文件夹是安卓没有成功实现的想法之一这个特性最终在蜂巢3.x中被取消。
![摄像机和相机界面,屏幕上有触摸快门。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/device-2013-12-26-11016071.png)
*摄像机和相机界面,屏幕上有触摸快门。
[Ron Amadeo 供图]*
如果你不能认出新的“摄像机”图标,这不奇怪,视频录制是在安卓 1.5 中才被添加进来的。相机和摄像机两个图标其实是同一个应用你可用过菜单中的“切换至相机”和“切换至摄像机”选项在它们之间切换。T-Mobile G1 上录制的视频质量并不高。一个“高”质量的测试视频输出一个 .3GP 格式的视频文件,其分辨率仅为 352 x 288帧率只有 4FPS。
除了新的视频特性,相机应用中还可以看到一些急需的 UI 调整。上方左侧的快照展示了最近拍摄的那张照片,点击它会跳转到相册中的相机胶卷。各个界面上方右侧的圆形图标是触摸快门,这意味着,从 1.5 开始,安卓设备不再需要一个实体相机按钮。
这个界面相比于之后版本的相机应用实际上更加接近于安卓 4.2 的设计。尽管后续的设计会向相机加入愚蠢的皮革纹理和更多的控制设置,安卓最终还是回到了基本的设计,安卓 4.2 的重新设计和这里有很多共同之处。安卓 1.5 中的原始布局演变成了安卓 4.2 中的最小化的、全屏的取景器。
![Google Talk运行在Google Talk中vs运行在IM应用中。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/gtalk-im.png)
*Google Talk 运行在 Google Talk 中 vs 运行在 IM 应用中。
[Ron Amadeo 供图]*
安卓 1.0 的 IM 即时通讯应用功能上支持 Google Talk但在安卓 1.5 中Google Talk 从中分离出来成为独立应用。IM应用中对其的支持已经被移除。Google Talk上图左侧明显是基于 IM 应用(上图右侧)的,但随着独立应用在 1.5 中的发布,在 IM 应用的工作被放弃了。
新的 Google Talk 应用拥有重新设计过的状态栏、右侧状态指示灯、重新设计过的移动设备标识,是个灰色的安卓小绿人图案。聊天界面的蓝色的输入框变成了更加合理的灰色,消息的背景从淡绿和白色变成了淡绿和绿色。有了独立的应用,谷歌可以向其中添加 Gtalk 独有的特性,比如“不保存聊天记录”聊天,该特性可以阻止 Gmail 保存每个聊天记录。
![安卓1.5的日历更加明亮。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/cal15.png)
*安卓 1.5 的日历更加明亮。
[Ron Amadeo 供图]*
日历抛弃了丑陋的黑色背景上白色方块的设计,转变为全浅色主题。所有东西的背景都变成了白色,顶部的星期日变成了蓝色。单独的约会方块从带有颜色的细条变成了拥有整个颜色背景,文字也变为白色。这将是很长一段时间内日历的最后一次改动。
![从左到右:新的浏览器控件,缩放视图,复制/粘贴文本高亮。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/browser-craziness.png)
*从左到右:新的浏览器控件,缩放视图,复制/粘贴文本高亮。
[Ron Amadeo 供图]*
安卓 1.5 从系统全局修改了缩放控件。缩放控件不再是两个大圆形,取而代之的是一个圆角的矩形从中间分开为左右两个按钮。这些新的控件被用在了浏览器、谷歌地图和相册之中。
浏览器在缩放功能上做了很多工作。在放大或缩小之后点击“1x”按钮可以回到正常缩放状态。底部右侧的按钮会将缩放整个页面并在页面上显示一个放大矩形框就像你能在上面中间截图看到的那样。按住矩形框并且释放会将页面的那一部分显示回“1x”视图。安卓并没有加速滚动这使得最快的滚动速度也着实很慢——这就是谷歌对长网页页面导航的解决方案。
浏览器的另一个新增功能就是从网页上复制文本——之前你只能从输入框中复制文本。在菜单中选择“复制文本”会激活高亮模式在网页文本上拖动你的手指使它们高亮。G1 的轨迹球对于这种精准的移动十分的方便,并且能够控制鼠标指针。这里并没有可以拖动的光标,当你的手指离开屏幕的时候,安卓就会复制文本并且移除高亮。所以你必须做到荒谬般的精确来使用复制功能。
安卓 1.5 中的浏览器很容易崩溃——比之前的版本经常多了。仅仅是以桌面模式浏览 Ars Technica 就会导致崩溃,许多其它的站点也是一样。
![](http://cdn.arstechnica.net/wp-content/uploads/2013/12/lockscreen.png)
*Ron Amadeo供图*
默认的锁屏界面和图形锁屏都不再是空荡荡的黑色背景,而是和主屏幕一致的壁纸。
图形解锁界面的浅色背景显示出了谷歌在圆圈对齐工作上的草率和马虎。白色圆圈在黑圆圈里从来都不是在正中心的位置——像这样基本的对齐问题对于这一时期的安卓是个频繁出现的问题。
![Youtube上传工具内容快照自动旋转设置全新的音乐应用设计。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/TWEAKS2.png)
*Youtube 上传工具,内容快照,自动旋转设置,全新的音乐应用设计。
[Ron Amadeo 供图]*
安卓 1.5 给予了 YouTube 应用向其网站上传视频的能力。上传通过从相册中分享视频到 YouTube 应用来完成,或从 YouTube 应用中直接打开一个视频。这将会打开一个上传界面,用户在这里可以设置像视频标题、标签和权限这样的选项。照片可以以类似的方式上传到 Picasa这是一个谷歌建立的图片网站。
整个系统的调整没有多少。常用联系人在联系人列表中可以显示图片(尽管常规联系人还是没有图片)。第三张截图展示了设置中全新的自动旋转选项——这个版本同样也是第一个支持基于从设备内部传感器读取的数据来自动切换方向的版本。
![HTC Magic第二部安卓设备第一个不带实体键盘的设备。](http://cdn.arstechnica.net/wp-content/uploads/2014/04/htc-magic-white.jpg)
*HTC Magic第二部安卓设备第一个不带实体键盘的设备。
[HTC 供图]*
纸杯蛋糕在改进安卓上做了巨大的工作,特别是从硬件方面。虚拟键盘意味着不再需要实体键盘。自动旋转使得系统更加接近 iPhone屏幕上的虚拟快门按键同样也意味着实体相机按键变成了可选选项。1.5 发布后不久第二部安卓设备的出现将会展示出这个平台未来的方向HTC Magic。Magic上图没有实体键盘或相机按钮。它是没有间隙、没有滑动结构的平板状设备依赖于安卓的虚拟按键来完成任务。
安卓旗舰机开始可能有着最多按键——一个实体 qwerty 键盘——后来随着时间流逝开始慢慢减少按键数量。而 Magic 是重大的一步,去除了整个键盘和相机按钮,它仍然使用通话和挂断键、四个系统键以及轨迹球。
#### 谷歌地图是第一个登陆谷歌市场的内置应用 ####
尽管这篇文章为了简单起见主要以安卓版本顺序来组织应用更新但还是有一些在这时间线之外的东西值得我们特别注意一下。2009 年 6 月 14 日,谷歌地图成为第一个通过谷歌市场更新的预置应用。尽管其它的所有应用更新还是要在一个完整的系统发布中进行更新,但是地图从系统中脱离了出来,只要新特性已经就绪就可以随时接收升级周期之外的更新。
将应用从核心系统分离发布到安卓市场上将成为谷歌前进的主要关注点。总的来说OTA 更新是个重大的主动改进——这需要 OEM 厂商和运营商的合作,二者都是拖后腿的角色。更新同样没有做到到达每个设备。今天,谷歌市场给了谷歌一个与每个安卓手机之间的联系渠道,而没有了这样的外界干扰。
然而,这是后来才需要考虑的问题。在 2009 年,谷歌只有两种裸机需要支持,而且早期的安卓运营商似乎对谷歌的升级需要反应积极。这些早期的行动对谷歌这方面来说将被证明是非常积极的决定。一开始,公司只在最重要的应用——地图和 Gmail 上——走这条路线,但后来它将大部分预置应用导入安卓市场。后来的举措比如 Google Play 服务甚至将应用 API 从系统移除加入了谷歌商店。
至于这时的新地图应用,得到了一个新的路线界面,此外还有提供公共交通和步行方向的能力。现在,路线只有个朴素的黑色列表界面——逐步风格的导航很快就会登场。
2009 年 6 月同时还是苹果发布第三代 iPhone——3GS——以及第三版 iPhone OS 的时候。iPhone OS 3 的主要特性大多是追赶上来的项目,比如复制/粘贴和对彩信的支持。苹果的硬件依然是更好的软件更流畅、更整合还有更好的设计。尽管谷歌疯狂的开发步伐使得它不得不走上追赶的道路。iPhone OS 2 是在安卓 0.5 的 Milestone 5 版本之前发布的,在 iOS 一年的发布周期里安卓发布了五个版本。
----------
![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg)
[Ron Amadeo][a] / Ron是Ars Technica的评论编缉专注于安卓系统和谷歌产品。他总是在追寻新鲜事物还喜欢拆解事物看看它们到底是怎么运作的。
[@RonAmadeo][t]
--------------------------------------------------------------------------------
via: http://arstechnica.com/gadgets/2014/06/building-android-a-40000-word-history-of-googles-mobile-os/8/
译者:[alim0x](https://github.com/alim0x) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://en.wikipedia.org/wiki/Diacritic
[a]:http://arstechnica.com/author/ronamadeo
[t]:https://twitter.com/RonAmadeo

View File

@ -0,0 +1,80 @@
安卓编年史9安卓 1.6 Donut——CDMA 支持将安卓带给了各个运营商
================================================================================
![新版安卓市场——黑色比重减少,白色和绿色增多。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/marketab2.png)
*新版安卓市场——黑色比重减少,白色和绿色增多。
[Ron Amadeo 供图]*
###安卓 1.6 Donut——CDMA 支持将安卓带给了各个运营商###
安卓的第四个版本——1.6 甜甜圈——在 2009 年 9 月发布,这时是在纸杯蛋糕面世的 5 个月后。尽管有无数更新,谷歌仍然在给安卓添加基本的功能。甜甜圈带来了对不同屏幕尺寸和 CDMA 的支持,还有一个文本语音转换引擎。
安卓 1.6 是个很好的更新例子,要在今天的话,它将没什么理由作为一个独立更新存在。主要的改进基本上可以总结为新版安卓市场、相机以及 YouTube。从这一年起像这样的应用已经从系统分离开来并且谷歌任何时候都能升级它们。然而在完成所有的这些模块化功能工作之前看起来甚至是一个微小的应用更新似乎都需要完整的系统更新。
另一个重大改进——CDMA 支持——也表明了除了版本号之外,谷歌仍然在忙于将基本功能带到安卓上来。
安卓市场被标注为版本“1.6”,并且得到了一个彻底的改进。原本的全黑设计被抛弃,转向带有绿色高亮的白色应用设计——安卓的设计师很明显使用了安卓吉祥物来获得灵感。
新的市场对谷歌来说一定是个新的应用设计风格。屏幕顶部的五分之一用于显示横幅 logo表明了这个应用确实是“安卓市场”。在横幅之下是应用、游戏以及下载按钮一个搜索按钮被安置在横幅的右侧。在导航键下面显示着特色应用的快照可以在它们之间滑动。再下面是个垂直滚动列表显示了更多的特色应用。
![新的市场设计,展示了:带有截图的应用页面,应用分类页面,应用榜,下载。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/marketpages.png)
*新的市场设计,展示了:带有截图的应用页面、应用分类页面、应用排行榜、下载。
[Ron Amadeo 供图]*
市场的最大的新增内容是包含应用截图。安卓用户终于可以在安装之前看到应用长什么样子——之前他们只能看到简短的描述和用户评论。你的个人星级评价和评论被放在显著位置,随后是描述,最后是截图。查看截图常常需要一点点滚动来查看——如果你想要找个设计尚佳的应用,那可要费一番功夫了。
点击应用或游戏按钮会打开一个分类列表,就像你在上面第二张图看到的那样。选择一个类别之后,更多的导航显示在了屏幕顶部,用户可以看到“热门付费”、“热门免费”,或在分类里看到各自的“热门新品”应用。尽管这些看起来像是会加载出新页面的按钮,实际上它们仅仅是个笨拙的标签页。每个按钮边有个绿色小灯指示现在哪个标签处于活跃状态。这个界面最赞的地方是应用列表是无穷滚动的(滚动加载)——一旦你到达列表底部的时候,它将加载更多应用。这个特性使得查看应用列表变得轻松,但是你点开任意一个应用再返回的话将会丢失你在列表里的位置——你得从头开始查看。下载部分可以做一些连新的 Google Play 商店都做不到的事:不过是显示一个已购买应用列表而已。
尽管新的市场看起来无疑比旧的好多了,但应用间的一致性更糟糕了。看起来就像是每个应用都是由不同团队制作的,他们之间从没沟通过所有的安卓应用应该有的样子。
![相机取景窗,照片回看界面,菜单。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/device-2013-12-27-145949.png)
*相机取景窗,照片回看界面,菜单。
[Ron Amadeo 供图]*
举个例子,相机应用从全屏、精简设计变成一个盒状的边缘带控制的取景窗。在相机应用中,谷歌着手引入拟物化,将应用包装成一个大致复刻了皮革纹经典相机的样子。在相机和摄像机之间切换通过一个缺乏想象力的开关完成,下面是个触摸快门按钮。
点击最近照片快照不再会打开相册,而是一个内建在了相机应用内定制的照片查看器。当你查看照片的时候,皮革质感的控制区从相机操作键变成图片操作键,你可以在这里删除、共享照片,或者把照片设置成壁纸或联系人图像。这里图片之间依然没有滑动操作——切换照片还是要通过照片两侧的箭头按钮完成。
第二张截图展示的是设计师减少对菜单按钮依赖的例子之一,因为安卓团队慢慢开始意识到其在可发现性上的糟糕表现。许多的应用设计者(包括那些在谷歌的)使用菜单作为所有种类的控制和导航元素的集中之处。但大多数用户没想过点击菜单按钮,也从没看到这些指令。
未来版本的安卓的公共主题会将选项从菜单移到主要屏幕上,使得整个系统对用户更加友好。菜单按钮在安卓 4.0 中被完全移除,并且它只在老式应用中被支持。
![电池以及文本语音转换引擎设置。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/settings1.png)
*电池以及文本语音转换引擎设置。
[Ron Amadeo 供图]*
甜甜圈是第一个持续追踪电池使用量的安卓版本。在“关于手机”菜单里有个选项“电池使用”,它会以百分比的方式显示应用以及硬件功能的电池用量。点击其中一项会打开一个单独的相关状态页面。硬件项目有个按钮可以直接跳转到它们的设置界面,所以,举个例子,如果你觉得显示的电池用量太高你可以更改显示的屏幕超时。
安卓 1.6 同样是第一个支持文本语音转换引擎TTS的版本这意味着系统以及应用能够用机器合成声音来回应你。“语音合成器”选项允许你设置语言选择语速以及从安卓市场安装语音数据慎重。今天谷歌在安卓上部署它自己的 TTS 引擎,但是似乎甜甜圈是通过硬编码的方式使用了来自 SVOX 的 TTS 引擎。但 SVOX 的引擎并未部署在甜甜圈上,所以点击“安装语音数据”会链接到安卓市场的一个应用。(甜甜圈的全盛期几年后,这个应用已被撤下。看起来似乎安卓 1.6 再也不能说话了。)
![从左到右:新的小部件,搜索栏界面,新清除通知按钮,新相册控件。](http://cdn.arstechnica.net/wp-content/uploads/2013/12/grabbag16.png)
*从左到右:新的小部件,搜索栏界面,新清除通知按钮,新相册控件。
[Ron Amadeo 供图]*
前端小部件部分花了更多的功夫。甜甜圈带来了全新的叫做“电量控制”小部件。它包含了常见耗电功能的开关Wi-Fi、蓝牙、GPS、同步同谷歌服务器之间以及亮度。
搜索小部件同样经过了重新设计,变得更加纤细,并且内置了一个麦克风按钮用于语音搜索。它现在有了些实质界面并且够实时搜索,不仅仅是搜索互联网,还能搜索你的应用和历史。
“清除通知”按钮大幅缩水并且去掉了“通知”字样。在稍晚些的安卓后续版本总它还会缩减成仅仅是个方形按钮。相册继续遵循了把功能从菜单里拿出来的趋势,并且将它们放在用户面前——单张图片查看界面得到了“设置为”、“分享”以及“删除”按钮。
----------
![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg)
[Ron Amadeo][a] / Ron 是 Ars Technica 的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。
[@RonAmadeo][t]
--------------------------------------------------------------------------------
via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/9/
译者:[alim0x](https://github.com/alim0x) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://arstechnica.com/author/ronamadeo
[t]:https://twitter.com/RonAmadeo

View File

@ -0,0 +1,92 @@
安卓编年史10Android 2.0 Éclair——带动 GPS 产业
================================================================================
youtube视频地址
<iframe width="640" height="360" frameborder="0" src="http://www.youtube-nocookie.com/embed/e52TSXwj774?start=0&amp;wmode=transparent" type="text/html" style="display:block"></iframe>
### Android 2.0 Éclair——带动 GPS 产业 ###
41 天——这是从安卓 1.6 到安卓 2.0 所经历的时间。安卓的第一个大的版本号更迭发生在 2009 年 10 月的[摩托罗拉 Droid][1] 身上,它是第一部“第二代”安卓设备。相对于 G1 而言Droid 进行了大幅的硬件升级,拥有巨大的 3.7 英寸(在当时而言),分辨率 854×480 的 LCD 屏幕。它同样带来了更强劲的性能:一个 600Mhz 的德州仪器 TI OMAP Cortex A8 处理器(还是单核),以及 256MB 的内存。
![摩托罗拉Droid凝视着你的灵魂。](http://cdn.arstechnica.net/wp-content/uploads/2014/03/2181.jpg)
*摩托罗拉Droid凝视着你的灵魂。*
但 Droid 最重要的部分是围绕它的大型广告活动。Droid 是美国运营商威瑞森 Verizon 的旗舰设备这个头衔给它从美国最大运营商那里带来了不少收入。威瑞森从卢卡斯影业那获得了单词“droid”的授权并且开始了[“Droid Does”运动][2]——通过广告将设备定位成一个敢于发声、充满突破的(由此也延伸到安卓身上)强力 iPhone 替代品。媒体常常说 T-Mobile G1 想要成为一个“iPhone 杀手”,但是 Droid 走了出来,并拥有了这个称号。
就和 G1 一样Droid 有个侧滑实体键盘。轨迹球已经不见了但是还是强制性要求有类似十字方向键的东西所以摩托罗拉把一个五键十字方向键放在了键盘右侧。Droid 正面按键从实体按键变成了电容式触摸按键,它们只是被印在了玻璃触摸屏上。安卓 2.0 同样最终取消了必须有“呼叫”和“结束”按钮的强制要求。所以连同十字方向键移到键盘那里的变动正面的按键可以排成漂亮又整洁的一行。所有这些精简结果带来的是有史以来最好看的安卓设备。T-Mobile G1 看起来像是费雪牌的玩具,但摩托罗拉 Droid 看起来像个可以用来削人的工业工具。
![安卓2.0和1.6的锁屏和主屏幕。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/intro202.png)
*安卓 2.0 和 1.6 的锁屏和主屏幕。
[Ron Amadeo 供图]*
威瑞森的一些差劲的广告活动泄漏了这个软件原本平静、水汪汪的远景默认壁纸变成了脏兮兮的混凝土。开机动画用了红色脉动的哈儿HAL 9000的眼球LCTT 译注:哈儿是英国小说家亚瑟·克拉克所著《太空漫游》小说中出现的一部拥有强人工智能的超级电脑),每当你收到邮件的时候,默认通知铃声还会高喊“[DRRRRROOOOIIIIDDDD][3]”。Éclair 泡芙就像是安卓的忧郁少年阶段。
安卓 2.0 中最先呈现给用户的事情之一就是新的锁屏。滑动解锁是苹果的专利,因此谷歌就采用了来自旋转手机的灵感,使用了弧线解锁手势。把你的手指放在锁定图标上并且向右滑动可以解锁设备,从音量图标向左滑动可以让手机静音。手指的自然移动是圆弧状的,所以这手势感觉比按直线滑动更加自然。
默认主屏幕布局取消了多余的模拟时钟小部件,引入了现如今安卓的一个主要部分:主屏幕顶端的一个搜索栏。短信和安卓市场同样花了大功夫在新布局上。应用抽屉页同样被经过了明显的重新设计。
![应用抽屉和“添加到主屏幕”菜单截图。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/icons.png)
*应用抽屉和“添加到主屏幕”菜单截图。
[Ron Amadeo 供图]*
安卓在早期的阶段以极快的步伐开发前进,而安卓团队在考虑界面设计时也从来没有对未来的设备有过真正的规划。摩托罗拉 Droid——拥有 854×480 分辨率的 LCD 显示屏——相对于 320×480 分辨率的 G1 时代设备在分辨率上是个巨大的提升。几乎所有的东西都需要重绘。界面设计的“从头开始”就几乎成为了安卓 2.0 的主要课题。
谷歌借此机会几乎重新设计了安卓的所有图标,从带有等距轴线的卡通风格图标转变为风格更为正式直观的图标。唯一一套没有重绘的图标是状态栏图标,和经过修改的系统其它部分相比显得格格不入。这些图标会从安卓 0.9 一直使用到安卓 2.3。
应用阵容上同样也有一些改变。摄像机被合并到相机中IM 应用被去除并增加了两个新的谷歌应用Car Home这是一个被设计为在驾驶时使用的带有大按钮的启动器还有企业日历除了它支持 Exchange 而不是谷歌日历以外它和常规的日历没什么不一样。奇怪的是谷歌还预装了两个第三方应用程序Facebook 和 Verizon 的 Visual VM 应用 (现在都不能用了)。第二组图片显示的是“添加到主屏幕”菜单,它同样经过了全新的设计。
![一个地点页面,显示“导航”选项,导航免责声明,实际的导航画面,以及交通信息。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/nav2.png)
*一个地点页面,显示“导航”选项,导航免责声明,实际的导航画面,以及交通信息。
[Ron Amadeo 供图]*
除了新的设计以外,安卓 2.0 最突出的亮点是谷歌地图导航。谷歌更新了地图,以支持免费的逐向导航,配有兴趣点搜索和文本到语音引擎,这使得它可以像一个独立的 GPS 设备一样大声读出街道名称。把 GPS 导航从一个单独的产品变成免费的智能手机功能,这几乎一夜之间[摧毁][4]了独立 GPS 市场。TomTom 的股票在安卓 2.0 推出的一周内下跌了近 40
但一开始这个导航应用非常难以找到。你必须打开搜索框,键入一个地点或地址,并点击搜索结果。接下来,点击了“导航”按钮后,谷歌会显示一个警告,声明导航正处于 beta 测试阶段,不应该被信任。点击“接受”后,你可以跳上车,一个粗糙的合成语音会引导你到达目的地。菜单按钮背后隐藏着一个选项,可以查看整个路线上的交通状况和突发事件。导航的设计一直徘徊不前。甚至连谷歌地图主界面都在安卓 4.0 时更新了,安卓 2.0 风格的导航部分还是那么放着,这几乎持续到了安卓 4.3 才有所改观。
地图还会显示路线的概览,其中包含你的路线的交通数据。起初数据只是由常规的交通数据提供商授权,但后来,谷歌通过运行谷歌地图的安卓和 iOS 手机[收集原始交通数据][5]。这是在移动设备地图竞争中谷歌迈向霸主地位的第一步。毕竟,实时交通流量的监控确实仅仅取决于你有多少数据点来源。现在,伴随着数以亿计的 iOS 和安卓的谷歌地图的用户,谷歌已经成为世界上最好的交通数据提供商。
有了地图导航,安卓终于找到了自己的杀手级应用。谷歌公司那时提供了其他人提供不了的东西。“为什么我应该买这个而不是买个 iPhone”问题终于有了个答案。谷歌地图也不需要像许多 GPS 设备一样通过 PC 更新。有了云,地图能够始终保持最新状态,所有这些更新都是免费的。唯一的缺点是,你需要一个互联网连接来使用谷歌地图。
精确的地图在[苹果地图的惨败][6]中被大大宣传,它已经成为了智能手机的最重要的功能之一,即使没有人真正在它们工作的时候赞赏它们。绘制世界真的只是借助了无数人的力量,今天,谷歌的“地球”部门是公司最大的部门,拥有超过[7000 名员工][7]。对于这里的大多数人来说,他们的工作就是驾驶着公司装满了相机的街景车驶过世界上的每一条道路。经过八年的数据收集,谷歌拥有超过[五百万英里][8]的 360 度街景视图,谷歌地图成为了公司不可撼动的支柱之一。
![Car Home主屏幕并且因为有空间加入了一个横版的导航。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/carhome1.png)
*Car Home 主屏幕,并且因为有空间,加入了一个横版的导航。
[Ron Amadeo 供图]*
随着和谷歌地图导航一起到来的还有“Car Home”一个大按钮设计的主屏幕旨在帮助你在驾驶时使用手机。不能定制每一个按钮只是一个独立应用的快捷方式。摩托罗拉 Droid 和其官方的[车载 dock 配件][9]之间有特殊的磁铁,二者接触将自动触发 Car Home。在手机接入 dock 时,按压 Droid 的实体 home 键会打开 Car Home 主屏而不是正常的主屏幕,屏幕上的触摸 Home 键可以打开正常的主屏幕。
Car Home虽然很有用但并没有存在多久——它在安卓 3.0 中被去掉了再也没有回来过。GPS 系统几乎全部用在汽车驾驶时,但它鼓励用户使用如“搜索”这样的功能,它会弹出一个键盘,谷歌的律师可能并不是很喜欢这种功能。随着[苹果的 CarPlay][10]和谷歌的[开放汽车联盟][11]的到来,车载电脑看到了复苏的希望。这一次,重点更多的是在安全上,政府机构(如美国国家公路交通安全管理局)也在协助着这一方面的发展。
----------
![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg)
[Ron Amadeo][a] / Ron 是 Ars Technica 的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。
[@RonAmadeo][t]
--------------------------------------------------------------------------------
via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/10/
译者:[alim0x](https://github.com/alim0x) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://arstechnica.com/gadgets/2009/12/review-of-the-motorola-droid/
[2]:http://www.youtube.com/watch?v=e52TSXwj774
[3]:http://www.youtube.com/watch?v=UBL47tHrvMA
[4]:http://techcrunch.com/2009/10/28/googles-new-mobile-app-cuts-gps-nav-companies-at-the-knees/
[5]:http://googleblog.blogspot.com/2009/08/bright-side-of-sitting-in-traffic.html
[6]:http://arstechnica.com/apple/2012/09/apple-ceo-tim-cook-apologizes-for-ios-6-maps-promises-improvements/
[7]:http://www.businessinsider.com/apple-has-7000-fewer-people-working-on-maps-than-google-2012-9
[8]:https://developers.google.com/events/io/sessions/383278298
[9]:http://www.amazon.com/Motorola-Generation-Vehicle-Charger-Packaging/dp/B002Y3BYQA
[10]:http://arstechnica.com/apple/2014/03/ios-in-the-car-becomes-carplay-coming-to-select-dashboards-this-year/
[11]:http://arstechnica.com/information-technology/2014/01/open-automotive-alliance-aims-to-bring-android-inside-the-car/
[a]:http://arstechnica.com/author/ronamadeo
[t]:https://twitter.com/RonAmadeo

View File

@ -0,0 +1,88 @@
安卓编年史11The Nexus One——迎来 Google Phone
================================================================================
![重新设计的拨号和联系人页面。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/dialercontacts.png)
*重新设计的拨号和联系人页面。
[Ron Amadeo 供图]*
联系人/拨号应用程序的圆角标签拥有了更清晰、更成熟的外观设计。拨号器更名为“电话”,并且拨号按键从圆形改为了圆角矩形。语音邮件、拨号、以及删除按键被放置在底部。这个界面是安卓在 3.0 之前缺乏设计一致性的一个很好的例子。仅仅在这个界面上,标签用的是直角矩形,拨号按键使用圆角矩形,底部按键两侧合起来是个完整的圆。这里就像是个 UI 控件的摸奖袋,没有人尝试过让它们之间相互搭配。
安卓 2.0 的一个新特性是“快速拨号”,它将联系人以略缩图的形式添加到整个系统。从其它应用中点击它们可以打开一个联系这个人的快捷方式列表。这在联系人里并没有多大意义,但像在 Google Talk 中,能够通过点击某人的略缩图来给他拨号是十分方便的。
![](http://cdn.arstechnica.net/wp-content/uploads/2014/01/calls.png)
*[Ron Amadeo 供图]*
安卓 2.0 终于配备了接通和拒绝来电所需要的所有屏幕按键而不再需要实体按钮Droid 从中获益,从它的设计中除去了在现在看来是多余的按钮。安卓对于接通和拒绝来电的解决方案是这些左滑和右滑的标签。他们的工作方式就像是滑动解锁(后来被用到了滑动解锁中)——向右滑动绿色按钮接通来电,向左滑动红色按钮则是拒绝。一旦进入通话中,它看起来就很像安卓 1.6 了。所有选项还是隐藏在菜单按钮之中。
某人在设计拨号界面的时候一定在煲电话粥。他们只是去掉了“拨号盘”上字母的粗体,而不是从安卓 1.6 中重新绘制数字“5”的按键然后就这么收工了。
![计算器和浏览器](http://cdn.arstechnica.net/wp-content/uploads/2014/01/calcubrowser.png)
*计算器和浏览器
[Ron Amadeo 供图]*
计算器从在安卓 0.9 中被引入以来第一次得到改进。黑色玻璃球按钮换成了蓝色和黑色过渡的按钮。旧版计算器按键的按下高亮的红色边框被改为了一个比较正常的白色轮廓。
浏览器的微型网站名称栏改进为一个完整的、功能更完善的地址栏,并且带有书签按钮。为了节省屏幕空间,地址栏被附加到网页上,所以地址栏会随着页面向上滚动,给你留下更多的网页阅读空间。安卓 1.6 独特的缩放控制和附加按钮被去除,被替换为一个更简单的双击缩放手势,并且浏览器可以再次打开 arstechnica.com 而不崩溃了。这里还是没有双指捏合缩放。
![打开设置的相机,闪光灯设置,以及查看照片界面的菜单。](http://cdn.arstechnica.net/wp-content/uploads/2014/03/cam2-these-are-settigns.jpg)
*打开设置的相机,闪光灯设置,以及查看照片界面的菜单。
[Ron Amadeo 供图]*
相机应用有个布满整个左侧的抽屉式菜单,打开它有许多设置。摩托罗拉 Droid 是率先带有 LED 闪光灯的安卓手机之一所以设置里有个闪光灯控制以及还有像场景模式、白平衡、效果、图片尺寸和存储位置SD 卡或内置存储)的设置。
在照片查看界面,谷歌精简了菜单按钮。和屏幕上的选项相比,它们之间不再有重复的选项。这样精简后省下的空间,使得所有的选项能够在菜单里放得下了,而不再需要一个“更多”按钮。
![电子邮件应用的“帐户”页面,新的组合收件箱,系统设置的帐户与同步页面,自动亮度设置。 ](http://cdn.arstechnica.net/wp-content/uploads/2014/02/emailacc2ountsetc.png)
*电子邮件应用的“帐户”页面,新的联合收件箱,系统设置的帐户与同步页面,自动亮度设置。
[Ron Amadeo 供图]*
电子邮件应用程序有了大的功能提升。最重要的是它终于支持了 Microsoft Exchange。安卓 2.0 版本的电子邮件中收件箱和文件夹视图终于分开了,而不是使用安卓 1.0 引入的凌乱的混合视图。电子邮件甚至有了一个统一的收件箱,可以将你不同账户的所有邮件显示到一起。
这个收件箱视图和 Gmail 一起,把普通的电子邮件应用打趴下了。联合收件箱甚至胜过了 Gmail 的功能,这是极其罕见的。尽管如此,相对于 Gmail 来说,电子邮件仍然感觉像个多余的继女。它使用了 Gmail 界面来查看邮件,这意味着收件箱和文件夹使用了黑色主题,查看邮件却奇怪地选择了亮色主题。
捆绑的 Facebook 应用程序有一个很棒的账户同步功能,它可以从社交网络上下载联系人的照片和信息,并无缝集成到联系人应用里。后来 Facebook 和谷歌分道扬镳,[谷歌取消了这一功能][1]。谷歌表示,在 Facebook 不向其共享信息的情况下,与 Facebook 分享信息并不是什么好想法,因此更好的用户体验败给了公司间的政治斗争。
(不幸的是,我们无法展示 Facebook 应用,因为它也是死在 OAuth 更新手中的客户端之一。现在不可能从像这么老旧的应用上登录了。)
最后一张图片显示了自动亮度控制,安卓 2.0 是第一个支持这一功能的版本。Droid 配备了光线传感器,点击该复选框,会使亮度滑块消失,并且允许设备自动控制屏幕亮度。
正如它的名字所暗示的那样,安卓 2.0 是谷歌有史以来最大的更新。摩托罗拉和威瑞森给安卓带来了一个外形酷炫的设备并在广告上投入了数不清的资金。之后的一段时间里“Droid”成为了一个家喻户晓的名字。
### The Nexus One——迎来 Google Phone ###
![](http://cdn.arstechnica.net/wp-content/uploads/2014/03/nexus_4_lineup.jpg)
2010 年 1 月,第一款 Nexus 设备发布,称为“[Nexus One][2]”。对谷歌来说,这部设备是个巨大的里程碑。这是第一部由谷歌设计并冠名的设备,而且谷歌计划直接向消费者出售设备。宏达电代工的 Nexus One 拥有 1GHz 的单核高通骁龙 S1 处理器、512MB 的内存、512MB 存储空间,以及一块 3.7 英寸的 AMOLED 显示屏。
Nexus One 代表着拥有纯净的安卓体验,没有运营商的定制和应用植入。谷歌直接控制安卓的更新。这使得谷歌能够在软件完成时直接向用户进行推送, 而不是再经过运营商的许可。运营商总是拖慢这一过程,因为他们对用户已经付过钱手机并不总是那么热切地想要改善它们。
谷歌[直接在网上][3]销售 Nexus One无锁、无合约、完整零售价 529.99 美元。尽管同样的 Nexus One 在 T-Mobile 商店的合约价仅为 179.99 美元,谷歌想通过它的在线商店改变美国手机行业的运作方式。谷歌当时的想法是先挑选手机,再选择运营商,以此打破美国无线寡头对硬件的控制。
但谷歌的零售革命并没有奏效,在在线手机商店开通半年后,谷歌关闭了该服务。谷歌指出首要问题是销量低。在 2010 年,网上购物并不像今天这样司空见惯,消费者也还没有准备好在他们不能先握在自己手中试用的设备上花费 530 美元。高昂的价格也是一个制约因素;智能手机消费者更习惯于为眼前的设备花费 200 美元,并签署一项为期两年的合同。还有摩托罗拉 Droid 的因素,相比之下这部三个月前发布的设备并没有显著的不足。还由于 Droid 的庞大的营销活动和“iPhone 杀手”的炒作,它已经夺取了大多数 Nexus One 所面向的安卓发烧友市场。
尽管 Nexus One 的网上销售尝试可以被认为是失败的谷歌还是从中学到了很多。2012 年,谷歌以 Google Play 的“设备”板块[重新推出其网上商店][4]。
----------
![Ron Amadeo](http://cdn.arstechnica.net/wp-content//uploads/authors/ron-amadeo-sq.jpg)
[Ron Amadeo][a] / Ron 是 Ars Technica 的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。[@RonAmadeo][t]
--------------------------------------------------------------------------------
via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/11/
译者:[alim0x](https://github.com/alim0x) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://techcrunch.com/2011/02/22/google-android-facebook-contacts/
[2]:http://arstechnica.com/gadgets/2010/01/nexus-one-review/
[3]:http://arstechnica.com/gadgets/2010/01/googles-big-news-today-was-not-a-phone-but-a-url/
[4]:http://arstechnica.com/gadgets/2012/04/unlocked-samsung-galaxy-nexus-can-now-be-purchased-from-google/
[a]:http://arstechnica.com/author/ronamadeo
[t]:https://twitter.com/RonAmadeo

View File

@ -0,0 +1,104 @@
安卓编年史12Android 2.1——动画的大发现(以及滥用)时代
================================================================================
### Android 2.1——动画的大发现(以及滥用)时代 ###
安卓 2.1 随着 Nexus One 的发布一同到来,这时距安卓 2.0 的发布仅仅过了三个月。新系统并不是一个大的更新升级,所以它仍然使用 Éclair泡芙这个名称。安卓的开发以一种闻所未闻的步伐急速进行在过去的 15 个月中,谷歌平均每两个半月就发布一个新版本。
绝大部分得益于威瑞森在市场营销上的努力以及“Droid”产品线安卓日益流行起来。即便如此这个系统还是被人觉得丑这时的安卓工程师看起来就几乎没有接受过正式的设计培训在安卓 2.1 中,他们尝试着通过在所有能用上的地方大量使用动画效果,想让东西看起来更整齐一点。这么做的结果就是系统看起来拼命想要证明它可以实现动画效果。许多新增的部分感觉更像是技术的演示而不是为了用户体验的改善。
![安卓2.1和2.0中的锁屏和主屏幕。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/21.png)
*安卓 2.1 和 2.0 中的锁屏和主屏幕。
[Ron Amadeo 供图]*
安卓 2.0 的旋转拨号式锁屏在仅仅在一个版本之后就被踢到路边去了,取而代之的是和来电界面使用的相同的拉动式标签式解锁。锁屏时钟尝试使用了一种独特的安卓字体,但是相比其它字体来说,它真是丑得可以。
安卓 2.1 最大的特色之一是“动态壁纸”——可互动的或是动态图片可以被设置为壁纸。默认的动态壁纸是个灰色正方形组成的大方阵,不断有蓝色,红色,黄色以及绿色的光点拖着尾巴穿越屏幕。点击屏幕会使光点以你点击的位置为中心向四个方向射出。尽管动态壁纸看起来很棒(并且相对 iPhone 而言是个独特的特性),但动画背景对电池和处理器而言可不是什么好事。它似乎让整个系统的运行都变得有点慢了。
在主屏幕上,默认的谷歌搜索小部件周围有了更多空间,并且现在它位于所在行的正中央。页面指示器现在出现在屏幕底部的左右角落,主屏幕的页数也从 3 页变成了 5 页。底部的应用抽屉标签被替换为一个正方形方阵组成的图标,这个(对应用列表的)暗喻直到今天谷歌也还在使用。
![图片展示了安卓2.1和2.0中的应用抽屉设计以及应用的选择。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/21icons.png)
*图片展示了安卓 2.1 和 2.0 中的应用抽屉设计以及应用的选择。
[Ron Amadeo 供图]*
和新应用抽屉图标一同到来的还有全新的应用抽屉。应用抽屉不再是以前从屏幕底部上拉的带标签容器的样子,新界面显示为一个全屏界面。原先的碳纤维编织纹理被去掉了,变成了一个纯黑背景——这个改变会一直持续到 KitKat。
谷歌决定添加一个浮动的、半透明的 home 图标到应用抽屉的底部,好让人们方便地退出全屏的应用列表界面。这个可以看作是安卓 4.0 中引入的虚拟 home 键的前身。
应用抽屉同样有个俗气的图形效果。在滚动的时候,在应用列表顶部和底部的图标会向内弯曲并且看起来像是向手机深处移动一样,有点像星球大战开场的滚动字幕。
应用的图标也有不多的改变。“Amazon MP3”和“Alarm Clock”闹钟都去掉了前面那个单词然后他们就从按字母排序的列表的前两个位置退了下来。出现了两个新的应用新闻和天气以及 Google Voice这是谷歌的通信服务。由于 Nexus One 不是威瑞森的定制机,威瑞森的可视语音邮件被去掉了。
![修改后的时钟应用。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/clo2ck.png)
*修改后的时钟应用。
[Ron Amadeo 供图]*
不止是名称的更改,时钟应用还迎来了整体上的重制。点击时钟快捷方式不再会打开闹钟页面;取而代之的是去到“桌面时钟”界面(上方左图),它带有一个和壁纸一致的背景。时钟使用和锁屏一样的字体,并从新的新闻和天气应用中获取天气。
新的闹钟页面清除了许多旧版本中奇怪的设计。模拟时钟和可选择的时钟样式已经不见了。复选框已经被一个带绿色亮光的开关所取代,它比“灰色勾选/绿色勾选”更容易理解。尽管可能从快照很难看出来,旧的闹钟设计在时间旁同时显示 AM 和 PM。2.1 的设计里取消了这一项,只显示相关的 AM/PM 标记。底部放置了一个数字时钟,点击时钟图标会将你带回桌面时钟界面。
![安卓2.1和2.0中的相册和单独图片查看界面。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/gallery1.png)
*安卓 2.1 和 2.0 中的相册和单独图片查看界面。
[Ron Amadeo 供图]*
谷歌想要改进安卓外观的欲望在 2.1 的相册中最为明显,这里几乎都是大量使用的动画效果和半透明。当应用打开的时候,单独的图片从屏幕顶部飞下并且打乱成小堆组成相册。当打开相册的时候,图片堆各自分离,照片滑开形成方阵的形式。所有你触摸的东西会弹开,压缩,以及拉伸,就像是果冻的弹簧片一样。
相册这里没有一个“标准”的背景。它会从屏幕上随机选择一张图片并深度模糊,然后作为背景图片使用。当这张图片滑出屏幕显示范围后,它会重新选择一张背景图片,所以背景色调总是会和你的图片相匹配。
屏幕的左上角放置了面包屑导航栏。它显示你当前的位置,以及你所在位置和主界面之间的任何文件夹——它可以被看作是在安卓 3.0 中即将推出的“向上”按钮的前身。在右上角是一个相机的链接,这还留着相同的在安卓 1.6 中登场的人造皮革设计——两个设计截然不同。
而相机是另一个奇怪的、一次性的设计,从来没有哪个安卓应用间的随意的 UI 设计差距能有和新的相册应用间这么明显。它并没有采用安卓的按钮、菜单、或任何现有的 UI 规范。它甚至在每个界面隐藏了状态栏——你几乎不能分辨出你正在盯着的是安卓。
在单张照片查看视图,你终于可以在图片之间滑动切换,从而去掉了短粗的左右箭头。出于某种原因,这个界面并没有颜色匹配的背景。它是应用中唯一一个背景为黑色的部分。缩放控制在右上方(仍然没有两指捏合缩放),可用命令沿着屏幕的底部排成一行。点击“菜单”按钮(虚拟或实体键)并不会像所有其他的应用一样出现一个 2×3 格的方阵——仅仅是底部的一行选项从两个变成了另外三个选项。
![充满动画效果的相册应用。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/gallery2.png)
*充满动画效果的相册应用。
[Ron Amadeo 供图]*
上面第一张图片,显示了一个相册视图。大型相册的话你可以水平滚动,或使用在屏幕底部的快速滚动条。长按图片(虽然有点奇怪,或者可以按实体菜单按钮)会弹出一个“复选框”界面,这时你可以点击几张照片同时选中它们。你选中照片之后,你可以批量分享、删除或旋转照片。
这个界面和接下来的单张照片查看界面的菜单是半透明对话气泡式的点击各个按钮时它们会跳出来。再重复一遍这和你所看到的正常的安卓体验规范大相径庭。相册还是第一个拥有越界效果overscroll的应用之一。当你到达照片墙的底部时整个界面会向滚动的方向扭曲。
2.1 的相册是第一个能同时显示您云存储的 Picasa 照片以及本地照片的客户端。这些照片缩略图的左下角有白色相机快门图标。这后来成为了 Google+ Photos。
之前或之后任何安卓应用程序看起来都不像这个相册。有很好的理由解释这是为什么——它不是谷歌做的!这个应用外包给了 Cooliris他们看样子并没有打算花费精力遵循任何一条现有的安卓 UI 规范。尽管应用是可用的,所有的动画和效果使它看起来像是只注重风格而不注重实质的产物。
![“新闻和天气”应用展示了……新闻和天气。](http://cdn.arstechnica.net/wp-content/uploads/2014/01/newsandweather.png)
*“新闻和天气”应用展示了……新闻和天气。
[Ron Amadeo 供图]*
来比较下相册应用和另一个全新的安卓 2.1 应用新闻和天气。相册是个充满透明动画效果的汇聚而新闻和天气则全是深色渐变和对比色。这个应用提供了桌面时钟的天气显示它甚至还带着一个主屏幕小部件。第一张图显示的是当前位置的天气和六天的预报。沿着屏幕顶部排列着一些标签城市名称旁有个小小的“i”按钮点击它会打开温度和降水图。你可以在图上滑动以得到指定时间的精确温度和降水信息。
这个应用里最大的创新在于可滑动标签,这个想法最终将成为一个标准的安卓 UI 规范。在天气之后是一些可由用户定制的新闻标签,除了点击标签切换之外,你还可以在屏幕上水平滑动,标签也会跟着切换。新闻标签都显示着一个新闻标题列表,它们几乎总是正好截断到你弄不明白这条新闻讲了什么的程度。当你从这个应用打开一个网页时,它并不会启动浏览器。相反,它会在应用内打开新闻,带着个奇怪的白色边框。
![谷歌地图的一些实验性功能新的小部件设计Google Voice里我们能接触到的唯一一个界面以及新的带标签的音乐界面设计。](http://cdn.arstechnica.net/wp-content/uploads/2014/04/ccccombo.jpg)
*谷歌地图的一些实验性功能新的小部件设计Google Voice 里我们能接触到的唯一一个界面,以及新的带标签的音乐界面设计。
[Ron Amadeo 供图]*
安卓 2.1 里的小部件全部经过了重新设计几乎所有东西都带有黑色渐变空间利用上也更加合理。时钟变回了一个圆日历的顶部加上了蓝色着让它和应用变得更加相似。Google Voice 可以启动,但是登录已经失效了——这是你现在能看到的所有东西了。
人们经常忽视的音乐应用有个小更新。四个按钮的主界面被完全去除,并且在屏幕顶部添加了每个音乐显示模式的标签。这意味着在打开应用的时候,你就能直接看到音乐列表,而不是一个导航页。不同于新闻和天气应用里的标签,这些新增的标签不能滑动切换。
----------
![Ron Amadeo](https://cdn.arstechnica.net/wp-content/uploads/2016/05/r.amadeo-45843.jpg)
[Ron Amadeo][a] / Ron 是 Ars Technica 的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。
[@RonAmadeo][t]
--------------------------------------------------------------------------------
via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/12/
译者:[alim0x](https://github.com/alim0x) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[a]:http://arstechnica.com/author/ronamadeo
[t]:https://twitter.com/RonAmadeo

View File

@ -1,3 +1,6 @@
### rusking translating
# Forget Technical Debt —Here'sHowtoBuild Technical Wealth
[Andrea Goulet][58] and her business partner sat in her living room, casually reviewing their strategic plan, when an episode of This Old House came on television. It was one of those moments where ideas collide to create something new. Theyd been looking for a way to communicate their value proposition — cleaning up legacy code and technical debt for other companies. And here they were, face to face with the perfect analogy.

View File

@ -0,0 +1,119 @@
alim0x translating
The history of Android
================================================================================
>Follow the endless iterations from Android 0.5 to Android 7 and beyond.
#### ART—The Android Runtime provides a platform for the future
There aren't too many components that can trace their lineage all the way back to Android 1.0, but in 2014 one of them was Dalvik, the runtime that powers Android apps. Dalvik was originally designed for single-core, low-performance devices, and it prioritized storage and memory usage over performance. Over the years, Google bolted on more and more upgrades to Dalvik, like JIT support, concurrent garbage collection, and multi-process support. But with the advent of multi-core phones that were many times faster than the T-Mobile G1, upgrades could only take Android so far.
The solution was to replace Dalvik with ART, the Android RunTime, a new app engine written from the ground up for modern smartphone hardware. ART brought an emphasis on performance and UI smoothness. ART brought a switch from JIT (Just-in-time) compilation to AOT (Ahead-of-time) compilation. JIT would compile an app every time it was run, saving storage space since compiled code was never written to disk, but instead it took up more CPU and RAM. AOT would save the compiled code to disk, making app start faster and reducing memory usage. Rather than shipping precompiled code, ART would compile code on the device as part of installation, giving the compiler access to device-specific optimizations. ART also brought support for 64-bit which, in addition to more addressable memory, brings better performance from the 64-bit instruction set (particularly in media and cryptography apps).
The best part was this change brought these performance improvements and 64-bit support to every java Android app. ART generates code for every java app, thus any improvements to ART automatically come to these apps. ART was also written with future upgrades in mind, so it would be able to evolve along with Android.
#### A system-wide interface refresh
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/systemui150-1-150x150.jpg)
][1]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/lock-1-150x150.jpg)
][2]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/recent-apps-150x150.jpg)
][3]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/recent2-150x150.jpg)
][4]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/notification-1-150x150.jpg)
][5]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/headsup-1-150x150.jpg)
][6]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/panels-150x150.jpg)
][7]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/noticontrols-150x150.jpg)
][8]
Material Design brought a complete overhaul to nearly every interface in Android. For starters, the entire core System UI was changed. Android got a revamped set of buttons that look a bit like a PlayStation controller: triangle, circle, and square buttons now represented back, home, and recent apps, respectively. The status bar was all new thanks to a set of redesigned icons.
Recent apps got a big revamp, switching from a vertical list of small thumbnails to a cascading view of large, almost fullscreen thumbnails. It also got a new name (which didn't really stick) called "Overview." This definitely seems like something that was inspired by Chrome's tab switcher in past versions.
Chrome's tab switcher was gone in this release, by the way. In an attempt to put Web apps on even ground with installed apps, Chrome tabs were merged into the Overview list. That's right: the list of recent "apps" now showed recently opened apps mixed in with recently opened websites. In Lollipop, the recent apps list also took a "document centric" approach, meaning apps could put more than one listing into the recent apps list. For instance if you opened two documents in Google Docs, both would be shown in recent apps, allowing you to easily switch between them rather than having to switch back and forth via the app's file list.
The notification panel was all new. Google brought the "card" motif to the notification panel, storing each item in its own rectangle. Individual notifications changed from a dark background to a white one with better typography and round icons. These new notifications came to the lock screen, changing it from a mostly-useless interstitial screen to a very useful "here's what happened while your were gone" screen.
Full screen notifications for calls and alarms were banished, replaced with a "heads up" notification that would pop into the top part of the screen. Heads-up notifications also came to "high-priority" app notifications, which were originally intended for IM messages. It was up to developers to decide what was a high-priority notification though, and after developers realized this would make their notifications more noticeable, everyone started forcing them on users. Later versions of Android would fix this by giving users control over the "high-priority" setting.
Google also added a separate-but-similarly-named "priority" notification system to Lollipop. "Priority" notification was a mode in-between completely silent and "beep for everything" allowing users to flag certain people and apps as "important." Priority mode would only beep for these important people. In the UI, this took the form of a set of notification priority controls attached to the volume popup and a new settings screen for priority notifications. And whenever you were in priority mode, there was a little star in the status bar.
Quick Settings got a huge series of improvements The controls were now a panel _above_ the notification panel, so that it could be opened with a "double swipe down" gesture. The first pull down would open the notification panel, and the second pull down gesture would shrink the notification panel and open Quick Settings. The layout of the Quick Settings controls changed, dumping the tile layout for a series of buttons floating on a single panel. The top was a very handy brightness slider, followed by buttons for connectivity, auto rotate, the flashlight, GPS, and Chromecast.
There were also actual in-line panels now in the Quick Settings. It would display Wi-Fi access points, Bluetooth device, and data usage right in the main interface.
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/4-150x150.jpg)
][9]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/gmail2-150x150.jpg)
][10]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/fit-150x150.jpg)
][11]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/messages-1-150x150.jpg)
][12]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/googl1-150x150.jpg)
][13]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/2-150x150.jpg)
][14]
* [
![](https://cdn.arstechnica.net/wp-content/uploads/2016/10/reminers-150x150.png)
][15]
The Material Design revamp gave nearly every app a new icon and brought a brighter, white background to the app drawer. There were lots of changes to the default apps loadout. Say "hello" to the new apps: Contacts, Docs, Fit, Messenger, Photos, Play Newsstand, Sheets, and Slides. Say "goodbye" to the dead apps: Gallery, G+ Photos, People, Play Magazines, Email, and Quickoffice.
Many of these new apps came from Google Drive, which split up from a monolithic app into an app for each product. There was now Drive, Docs, Sheets, and Slides, all from the Drive team. Drive is also responsible for the death of Quickoffice, which was consumed by the Drive team. In the "Google can never make up its mind" category: "People" got renamed back to "Contacts" again, and an SMS app called "Messenger" was reinstated at the behest of cellular carriers. (Those carriers did _not_ like Google Hangouts taking over SMS duties.) We got one genuinely new service: Google Fit, a fitness tracking app that worked on Android phones and Android Wear watches. There was also a revamp of Play Magazines to include websites, so it changes names to "Play Newsstand."
There were more cases of proprietary Google apps taking over for AOSP.
* "G+ Photos" became "Google Photos" and took over default picture duties from the AOSP Gallery, which became a dead app. The name change to "Google Photos" was in preparation for Photos being [pulled out of Google+][16] and launching as a standalone service. The Google Photos launch would happen about six months after the launch of Lollipop—for now, this is just the Google+ app spawning a new icon and interface.
* Gmail took over POP3, IMAP, and Exchange e-mail duties from the "Email" app. Despite being dead Email still had an app icon, which was a fake—it only displayed a message that told users to setup all e-mail accounts in the Gmail app.
* The "People" to "Contacts" change was actually to "Google Contacts" another AOSP replacement app.
--------------------------------------------------------------------------------
via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/
作者:[RON AMADEO][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://arstechnica.com/author/ronamadeo/
[1]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[2]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[3]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[4]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[5]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[6]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[7]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[8]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[9]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[10]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[11]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[12]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[13]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[14]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[15]:http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/28/#
[16]:http://arstechnica.com/gadgets/2015/05/google-photos-leaves-google-launches-as-a-standalone-service/

View File

@ -216,7 +216,7 @@ via: http://www.tecmint.com/install-configure-ganglia-monitoring-centos-linux/
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: http://www.tecmint.com/author/gacanepa/
[1]:http://ganglia.info/

View File

@ -1,134 +0,0 @@
(翻译中 by runningwater)
part 7 - How to manage binary blobs with Git
=====================
In the previous six articles in this series we learned how to manage version control on text files with Git. But what about binary files? Git has extensions for handling binary blobs such as multimedia files, so today we will learn how to manage binary assets with Git.
One thing everyone seems to agree on is Git is not great for big binary blobs. Keep in mind that a binary blob is different from a large text file; you can use Git on large text files without a problem, but Git can't do much with an impervious binary file except treat it as one big solid black box and commit it as-is.
Say you have a complex 3D model for the exciting new first person puzzle game you're making, and you save it in a binary format, resulting in a 1 gigabyte file. Yougit commit it once, adding a gigabyte to your repository's history. Later, you give the model a different hair style and commit your update; Git can't tell the hair apart from the head or the rest of the model, so you've just committed another gigabyte. Then you change the model's eye color and commit that small change: another gigabyte. That is three gigabytes for one model with a few minor changes made on a whim. Scale that across all the assets in a game, and you have a serious problem.
Contrast that to a text file like the .obj format. One commit stores everything, just as with the other model, but an .obj file is a series of lines of plain text describing the vertices of a model. If you modify the model and save it back out to .obj, Git can read the two files line by line, create a diff of the changes, and process a fairly small commit. The more refined the model becomes, the smaller the commits get, and it's a standard Git use case. It is a big file, but it uses a kind of overlay or sparse storage method to build a complete picture of the current state of your data.
However, not everything works in plain text, and these days everyone wants to work with Git. A solution was required, and several have surfaced.
[OSTree](https://ostree.readthedocs.io/en/latest/) began as a GNOME project and is intended to manage operating system binaries. It doesn't apply here, so I'll skip it.
[Git Large File Storage](https://git-lfs.github.com/) (LFS) is an open source project from GitHub that began life as a fork of git-media. [git-media](https://github.com/alebedev/git-media) and [git-annex](https://git-annex.branchable.com/walkthrough/) are extensions to Git meant to manage large files. They are two different approaches to the same problem, and they each have advantages. These aren't official statements from the projects themselves, but in my experience, the unique aspects of each are:
* git-media is a centralised model, a repository for common assets. You tellgit-media where your large files are stored, whether that is a hard drive, a server, or a cloud storage service, and each user on your project treats that location as the central master location for large assets.
* git-annex favors a distributed model; you and your users create repositories, and each repository gets a local .git/annex directory where big files are stored. The annexes are synchronized regularly so that all assets are available to all users as needed. Unless configured otherwise with annex-cost, git-annex prefers local storage before off-site storage.
Of these options, I've used git-media and git-annex in production, so I'll give you an overview of how they each work.
```
git-media
```
git-media uses Ruby, so you must install a gem for it. Instructions are on the[website](https://github.com/alebedev/git-media). Each user who wants to use git-media needs to install it, but it is cross-platform, so that is not a problem.
After installing git-media, you must set some Git configuration options. You only need to do this once per machine you use:
```
$ git config filter.media.clean "git-media filter-clean"$ git config filter.media.smudge "git-media filter-smudge"
```
In each repository that you want to use git-media, set an attribute to marry the filters you've just created to the file types you want to classify as media. Don't get confused by the terminology; a better term is "assets," since "media" usually means audio, video, and photos, but you might just as easily classify 3D models, bakes, and textures as media.
For example:
```
$ echo "*.mp4 filter=media -crlf" >> .gitattributes$ echo "*.mkv filter=media -crlf" >> .gitattributes$ echo "*.wav filter=media -crlf" >> .gitattributes$ echo "*.flac filter=media -crlf" >> .gitattributes$ echo "*.kra filter=media -crlf" >> .gitattributes
```
When you stage a file of those types, the file is copied to .git/media.
Assuming you have a Git repository on the server already, the final step is to tell your Git repository where the "mothership" is; that is, where the media files will go when they have been pushed for all users to share. Set this in the repository's.git/config file, substituting your own user, host, and path:
```
[git-media]
transport = scp
autodownload = false #true to pull assets by default
scpuser = seth
scphost = example.com
scppath = /opt/jupiter.git
```
If you have complex SSH settings on your server, such as a non-standard port or path to a non-default SSH key file use .ssh/config to set defaults for the host.
Life with git-media is mostly normal; you work in your repository, you stage files and blobs alike, and commit them as usual. The only difference in workflow is that at some point along the way, you should sync your secret stockpile of assets (er, media) to the shared repository.
When you are ready to publish your assets for your team or for your own backup, use this command:
```
$ git media sync
```
To replace a file in git-media with a changed version (for example, an audio file has been sweetened, or a matte painting has been completed, or a video file has been colour graded), you must explicitly tell Git to update the media. This overrides git-media's default to not copy a file if it already exists remotely:
```
$ git update-index --really-refresh
```
When other members of your team (or you, on a different computer) clones the repository, no assets will be downloaded by default unless you have set theautodownload option in .git/config to true. A git media sync cures all ills.
```
git-annex
```
git-annex has a slightly different workflow, and defaults to local repositories, but the basic ideas are the same. You should be able to install git-annex from your distribution's repository, or you can get it from the website as needed. As withgit-media, any user using git-annex must install it on their machine.
The initial setup is simpler than git-media. To create a bare repository on your server run this command, substituting your own path:
```
$ git init --bare --shared /opt/jupiter.git
```
Then clone it onto your local computer, and mark it as a git-annex location:
```
$ git clone seth@example.com:/opt/jupiter.cloneCloning into 'jupiter.clone'... warning: You appear to have clonedan empty repository. Checking connectivity... done.$ git annex init "seth workstation" init seth workstation ok
```
Rather than using filters to identify media assets or large files, you configure what gets classified as a large file by using the git annex command:
```
$ git annex add bigblobfile.flacadd bigblobfile.flac (checksum) ok(Recording state in Git...)
```
Committing is done as usual:
```
$ git commit -m 'added flac source for sound fx'
```
But pushing is different, because git annex uses its own branch to track assets. The first push you make may need the -u option, depending on how you manage your repository:
```
$ git push -u origin master git-annexTo seth@example.com:/opt/jupiter.git* [new branch] master -> master* [new branch] git-annex -> git-annex
```
As with git-media, a normal git push does not copy your assets to the server, it only sends information about the media. When you're ready to share your assets with the rest of the team, run the sync command:
```
$ git annex sync --content
```
If someone else has shared assets to the server and you need to pull them, git annex sync will prompt your local checkout to pull assets that are not present on your machine, but that exist on the server.
Both git-media and git-annex are flexible and can use local repositories instead of a server, so they're just as useful for managing private local projects, too.
Git is a powerful and extensible system, and by now there is really no excuse for not using it. Try it out today!
--------------------------------------------------------------------------------
via: https://opensource.com/life/16/8/how-manage-binary-blobs-git-part-7
作者:[Seth Kenlon][a]
译者:[runningwater](https://github.com/runningwater)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/seth

View File

@ -0,0 +1,63 @@
Getting Started with HTTP/2: Part 1
============================================================
![](https://static.viget.com/_284x284_crop_center-center/http2-pizza.png?mtime=20160822160641)
Using pizza to show how HTTP/2 beats HTTP/1.1 when your orders get too big.
_HTTP/2 has some really amazing changes to the way web sites and applications can be built. A year and a half after becoming published, almost [10% of websites support HTTP/2][4]. It has definitely had notable adoption, but the conversation should be pushed further for front-end developers on best practices when using HTTP/2\. This is a multi-part blog post to give front-end developers a guide on how to switch over to HTTP/2. _
_This post covers how HTTP/2 is an improvement to HTTP/1.1 and what that may look like to front-end developers._
### Remind me what HTTP is again...
Hyper Text Transfer Protocol, better known as HTTP, is the protocol that determines how content is transferred over the web. When HTTP/1.1 was standardized in 1999, the web was a very different place than it is today. Tables were king. Styles were usually done inline at the element level, or if the webmaster was more refined, they would put it in a `<style>` tag in the head. JavaScript, if used, was also placed on the document and full sites were generally no larger than a handful of pages.
HTTP/1.1 assumed that this was going to last for a while, so it did not put too much focus on allowing for many assets to be loaded with a site, since that wasn't really a thing developers needed. Therefore it had an extremely simple way of handling assets - you ask for an asset and the server looks for it and either returns what you asked for or it tells you the asset could not be found. This is called "head-of-line blocking" and it is fairly efficient, but when you have mulitple assets, this process happens for every asset in succession. This means that before you can even ask for your second asset, the server has to find your first one and load it or tell you it could not be found.
### The Growth of the Large-Scale Site
In the years that followed 1999, sites became much more complex, with the rise of php and other dynamic languages like Rails. CSS files grew much larger with the shift to responsive development, and thusly CSS compilers like Sass popped up to create a simpler working environment. JavaScript also became a much bigger player on the web, allowing for developers to make complex applications that were once only the work of C++ developers. Images also became much more defined, with the rise of Retina and HD monitors. With these changes, file sizes grew exponentially, so waiting for a few bytes worth of assets to load became kilobytes, even megabytes in some cases. And when you have several hundred kilobytes to load before you can even start loading something else on the page, you just have to optimistically assume that your users have fast internet.
Think of HTTP/1.1 as a quaint, order-at-the-counter neighborhood pizza place. You can show up by yourself and order a Sprite and 2 slices of Angry Hawaiian and be on your way in 3 minutes. They can handle that easily, in fact it's the business model they thrive on - just quick drop-ins with simple orders.
![](https://static.viget.com/_300xAUTO_crop_center-center/http2-pizzaorder1.png?mtime=20160823122331)
However, once you decide to host the little league season awards ceremony at the same pizza place things get more complicated. With everyone ordering different things, it gets disorganized quickly and the wait times go up.
![](https://static.viget.com/_300xAUTO_crop_center-center/http2-pizzaorder2.png?mtime=20160823130750)
### Where HTTP/2 Comes into Play
The major promise of HTTP/2 for a front-end developer is multiplexing. Multiplexing means that asset requests can happen at the same time and the server can then go find those assets. There's no wait time between requests because they all happen at once.
Using the same metaphor, HTTP/2 allows for the pizza place to set the party to its own area in the restaurant, send out a waiter to take orders and bring everything out as it becomes ready. There's no need to wait 30 minutes for your Sprite while everyone else's pizzas cook, so that comes out as one of the first items. This method makes it much easier to manage lots of orders and prevents people from waiting too long to start getting their orders.
The big change multiplexing seems to bring to web development is a change in the way we prepare files to be loaded. A really helpful method for getting around the HTTP/1.1 bottleneck of asset loading is through concatenating and minifying files to be loaded at once. All task runners do this either by default or with very little configuration. Often times too, developers will place their images in sprite sheets, which also cut down on the amount of requests to a server.
### Improvements over HTTP/1.1
Concatenating files was a really smart way to handle the problems of HTTP/1.1's request limits, but the major problem with concatenating your files is that it requires users to download all the assets for the entire site upon first visit. The browser will cache all the assets once they load, which is good and speeds up every following page the user visits, but having a heavy load upfront [is bad for bounce rates][5]. Also they are probably loading assets for pages they won't even visit. Expecting a user to visit every single page to see every style and interact with every script is unrealistic. Furthermore, in places like Canada and Europe and pretty much every US mobile provider, there is a monthly bandwidth cap. Not that loading 54 extra kilobytes of content is going to push someone over the edge for their monthly data allowance, but let's assume that the user wants to reserve those extra bytes for Taylor Swift reaction gifs.
With HTTP/2 and multiplexing, you can run some of the most efficient sites but it will require some rethinking, and even undoing, of previous best practices. Again, my intent is to speed up the conversation on HTTP/2 so we can discover these new best practices with the new tools we have.
In my next post [I'll explore some of the best ways to handle a site built on HTTP/2][6].
--------------------------------------------------------------------------------
via: https://www.viget.com/articles/getting-started-with-http-2-part-1?imm_mid=0eb24a&cmp=em-web-na-na-newsltr_20161130
作者:[Ben][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.viget.com/about/team/btinsley
[1]:https://twitter.com/home?status=Using%20pizza%20to%20show%20how%20HTTP%2F2%20beats%20HTTP%2F1.1%20when%20your%20orders%20get%20too%20big.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fgetting-started-with-http-2-part-1
[2]:https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fgetting-started-with-http-2-part-1
[3]:http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fgetting-started-with-http-2-part-1
[4]:https://w3techs.com/technologies/details/ce-http2/all/all
[5]:https://blog.kissmetrics.com/speed-is-a-killer/
[6]:https://www.viget.com/articles/getting-started-with-http-2-part-2
[7]:https://www.viget.com/about/team/btinsley

View File

@ -1,4 +1,3 @@
翻译中 by-zky001
Apache Spark @Scale: A 60 TB+ production use case
===========
@ -114,10 +113,10 @@ While this post details our most challenging use case for Spark, a growing numbe
via: https://code.facebook.com/posts/1671373793181703/apache-spark-scale-a-60-tb-production-use-case/?utm_source=dbweekly&utm_medium=email
作者:[Sital Kedia][a] [王硕杰][b] [Avery Ching][c]
译者:[zky001](https://github.com/zky001)
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.facebook.com/sitalkedia
[b]: https://www.facebook.com/shuojiew

View File

@ -226,7 +226,7 @@ via: https://dqydj.com/raspberry-pi-hadoop-cluster-apache-spark-yarn/?utm_source
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://dqydj.com/about/#contact_us
[1]: https://www.raspberrypi.org/downloads/raspbian/

View File

@ -0,0 +1,148 @@
PyCharm - The Best Linux Python IDE
=========
![](https://fthmb.tqn.com/AVEbzYN3BPH_8cGYkPflIx58-XE=/768x0/filters:no_upscale()/about/pycharm2-57e2d5ee5f9b586c352c7493.png)
### Introduction
In this guide I will introduce you to the PyCharm integrated development environment which can be used to develop professional applications using the Python programming language.
Python is a great programming language because it is truly cross platform and can be used to develop a single application which will run on Windows, Linux and Mac computers without having to recompile any code.
PyCharm is an editor and debugger developed by [Jetbrains][1] who are the same people who developed Resharper which is a great tool used by Windows developers for refactoring code and to make their lives easier when writing .NET code. Many of the principles of [Resharper][2] have been added to the professional version of [PyCharm][3].
### How To Install PyCharm
I have written a guide showing how to get PyCharm, download it, extract the files and run it.
[Simply click this link][4].
### The Welcome Screen
When you first run PyCharm or when you close a project you will be presented with a screen showing a list of recent projects.
You will also see the following menu options:
* Create New Project
* Open A Project
* Checkout From Version Control
There is also a configure settings option which lets you set up the default Python version and other such settings.
### Creating A New Project
When you choose to create a new project you are provided with a list of possible project types as follows:
* Pure Python
* Django
* Flask
* Google App Engine
* Pyramid
* Web2Py
* Angular CLI
* AngularJS
* Foundation
* HTML5 Bolierplate
* React Starter Kit
* Twitter Bootstrap
* Web Starter Kit
This isn't a programming tutorial so I won't be listing what all of those project types are. If you want to create a base desktop application which will run on Windows, Linux and Mac then you can choose a Pure Python project and use QT libraries to develop graphical applications which look native to the operating system they are running on regardless as to where they were developed.
As well as choosing the project type you can also enter the name for your project and also choose the version of Python to develop against.
### Open A Project
You can open a project by clicking on the name within the recently opened projects list or you can click the open button and navigate to the folder where the project you wish to open is located.
### Checking Out From Source Control
PyCharm provides the option to check out project code from various online resources including [GitHub][5], [CVS][6], Git, [Mercurial][7] and [Subversion][8].
### The PyCharm IDE
The PyCharm IDE starts with a menu at the top and underneath this you have tabs for each open project.
On the right side of the screen are debugging options for stepping through code.
The left pane has a list of project files and external libraries.
To add a file you right-click on the project name and choose "new". You then get the option to add one of the following file types:
* File
* Directory
* Python Package
* Python File
* Jupyter Notebook
* HTML File
* Stylesheet
* JavaScript
* TypeScript
* CoffeeScript
* Gherkin
* Data Source
When you add a file, such as a python file you can start typing into the editor in the right panel.
The text is all colour coded and has bold text . A vertical line shows the indentation so you can be sure that you are tabbing correctly.
The editor also includes full intellisense which means as you start typing the names of libraries or recognised commands you can complete the commands by pressing tab.
### Debugging The Application
You can debug your application at any point by using the debugging options in the top right corner.
If you are developing a graphical application then you can simply press the green button to run the application. You can also press shift and F10.
To debug the application you can either click the button next to the green arrow or press shift and F9.You can place breakpoints in the code so that the program stops on a given line by clicking in the grey margin on the line you wish to break at.
To make a single step forward you can press F8 which steps over the code. This means it will run the code but it won't step into a function. To step into the function you would press F7\. If you are in a function and want to step out to the calling function press shift and F8.
At the bottom of the screen whilst you are debugging you will see various windows such as a list of processes and threads, and variables that you are watching the values for. 
As you are stepping through code you can add a watch on a variable so that you can see when the value changes. 
Another great option is to run the code with coverage checker. The programming world has changed a lot during the years and now it is common for developers to perform test-driven development so that every change they make they can check to make sure they haven't broken another part of the system. 
The coverage checker actually helps you to run the program, perform some tests and then when you have finished it will tell you how much of the code was covered as a percentage during your test run.
There is also a tool for showing the name of a method or class, how many times the items were called, and how long was spent in that particular piece of code.
### Code Refactoring
A really powerful feature of PyCharm is the code refactoring option.
When you start to develop code little marks will appear in the right margin. If you type something which is likely to cause an error or just isn't written well then PyCharm will place a coloured marker.
Clicking on the coloured marker will tell you the issue and will offer a solution.
For example, if you have an import statement which imports a library and then don't use anything from that library not only will the code turn grey the marker will state that the library is unused.
Other errors that will appear are for good coding such as only having one blank line between an import statement and the start of a function. You will also be told when you have created a function that isn't in lowercase.
You don't have to abide by all of the PyCharm rules. Many of them are just good coding guidelines and are nothing to do with whether the code will run or not.
The code menu has other refactoring options. For example, you can perform code cleanup and you can inspect a file or project for issues.
### Summary
PyCharm is a great editor for developing Python code in Linux and there are two versions available. The community version is for the casual developer whereas the professional environment provides all the tools a developer could need for creating professional software.
--------------------------------------------------------------------------------
via: https://www.lifewire.com/how-to-install-the-pycharm-python-ide-in-linux-4091033
作者:[Gary Newell ][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.lifewire.com/gary-newell-2180098
[1]:https://www.jetbrains.com/
[2]:https://www.jetbrains.com/resharper/
[3]:https://www.jetbrains.com/pycharm/specials/pycharm/pycharm.html?&gclid=CjwKEAjw34i_BRDH9fbylbDJw1gSJAAvIFqU238G56Bd2sKU9EljVHs1bKKJ8f3nV--Q9knXaifD8xoCRyjw_wcB&gclsrc=aw.ds.ds&dclid=CNOy3qGQoc8CFUJ62wodEywCDg
[4]:https://www.lifewire.com/how-to-install-the-pycharm-python-ide-in-linux-4091033
[5]:https://github.com/
[6]:http://www.linuxhowtos.org/System/cvs_tutorial.htm
[7]:https://www.mercurial-scm.org/
[8]:https://subversion.apache.org/

View File

@ -0,0 +1,182 @@
Getting Started with HTTP/2: Part 2
============================================================
![](https://static.viget.com/_284x284_crop_center-center/ben-t-http-blog-thumb-01_360.png?mtime=20160928234634)
Firmly planting a flag in the sand for HTTP/2 best practices for front end development.
If you have been keeping up with the talk of HTTP/2, you have probably attempted it or at least thought of how incorporate it into your projects. While there are a lot of hypotheses on how to its features can change your workflow and improve speed and efficiency on the web, best practices still haven't quite been pinned down yet. What I want to cover in this post are some HTTP/2 best practices I have discovered on a recent project.
If you aren't quite sure what HTTP/2 is or why it offers to improve your work, [check out my first post for a bit of background][4]. 
One note though: before we can get going, I need to mention that while your browser probably supports HTTP/2, your server probably doesn't. Check in with your hosting service to see if they offer HTTP/2 compatibility. Otherwise, you may be able to spin up your own server. This post does not cover how to do that unfortunately, but you can always check out the [http2 github][5] for some tools to get going in that direction.
### 🙏 [Rubs Hands Together]
A good way to start is to first organize your files. Take a look at the file tree below for a starting point to organize your stylesheets:
```
`/styles
|── /setup
| /* variables, mixins and functions */
|── /global
| /* reusable components that could be within any component or section */
|── /components
| /* specific components and sections */
|── setup.scss // index for setup styles
|── global.scss // index for global styles`
```
This breaks out your styles into three main categories: Setup, Global and Components. I will get into what each of these directories offer to your project next.
### Setting Up
The Setup level directory will hold all of your variables, functions, mixins and any other definition that another file will need to compile properly. To make this directory fully reusable, it's a good idea to import the contents of this directory into `setup.scss` so that it looks something like this:
```
`/* setup.scss */
/* variables */
@import "setup/variables/colors";
/* mixins */
@import "setup/mixins/color";
/* functions */
@import "setup/functions/color";
... etc`
```
Now that we have a quick reference to any definition on the site, we should be sure to include it at the top of any style file we create from here on out.
### Going Global
Your next directory, Global, should contain components that can be reused across the site within multiple sections, or on every single page. Things like buttons, text and heading styles as well as your browser resets should go here. I do not recommend putting your header or footer styles in here because on some projects, the header is absent or different on certain pages. Furthermore, the footer is always the last element on the page, so it should not be a huge priority to load the styles for it before the user has loaded anything else on the site.
Keeping in mind that your Global styles probably won't work without the things we defined in the Setup directory, your Global file should look something like this:
```
`/* global.scss */
/* application definitions */
@import "setup";
/* global styles */
@import "global/reset";
@import "global/buttons";
@import "global/typography";
@import "global/grid";
... etc`
```
Note that the first thing to import is the Setup styles. This way, any following file that uses something defined in that will have a reference to pull from.
Since the Global styles will be needed on every page of the site, we can load them in the typical way, using a `<link>` in the `<head>`. What you will have will be a very light CSS file, or theoretically light, depending on how much global style you need.
### Finally, Your Components
Notice that I did not include an index file for the Components directory in the file tree above. This is really where HTTP/2 comes into play. Up until now, we have been following standard practices for typical site build out, maintaining a fairly lean infrastructure and opting to globalize only the most necessary styles. Components act as their own index files.
Most developers have their own way of organizing their components, so I am not going to bother going into strategies here. However, all of your components should look something like this:
```
`/* header.scss */
/* application definitions */
@import "../setup";
header {
// styles
}
... etc`
```
This way, again, you have those Setup styles there to make sure that everything is defined during compilation. You don't have to concatenate, minify or really do anything to these files other than compile them, and probably place them in an /assets directory, easy to find for your templates.
Now that our stylesheets are ready to go, building out the site should be simple.
### Building Out the Components
You probably have your own templating language of choice depending on the projects you are on, be it Twig, Rails, Jade or Handlebars. I think the best way to think about your components is that if it has its own template file, it should have a corresponding style with the same name. This way your project has a nice 1:1 ratio across your templates and styles and you know where which file everything is in because they are named accordingly.
Now that that is out of the way, taking advantage of HTTP/2's multiplexing is really simple, so let's build a template:
```
`{# header.html #}
{# compiled header styles #}
<link href="assets/components/header.css" rel="stylesheet" media="all">
<header>
<h1>This Awesome HTTP/2 Site</h1>
... etc`
```
And that is pretty much it! You probably have a less heavy-handed way of linking to assets within your templates, but this shows you that all you need to do is link to that one small header style in the template file before you start your markup. This allows your site to only load the specific assets to the components on any given page, and furthermore, prioritizing the components from the top of your page to the bottom.
### Mixing It All Together
Now that all the components have a structure, the browser will render them something like this:
```
`<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" media="all" href="/assets/global.css">
</head>
<body>
<link rel="stylesheet" media="all" href="/assets/components/header.css">
<header>
... etc
</header>
<link rel="stylesheet" media="all" href="/assets/components/title.css">
<section class="title">
... etc
</section>
<link rel="stylesheet" media="all" href="/assets/components/image-component.css">
<section class="image-component">
... etc
</section>
<link rel="stylesheet" media="all" href="/assets/components/text-component.css">
<section class="text-component">
... etc
</section>
<link rel="stylesheet" media="all" href="/assets/components/footer.css">
<footer>
... etc
</footer>
</body>
</html>`
```
This is an upper level approach, but you will probably have finer-tuned components on your project. For example, you may have a `<nav>` component within the header that has its own stylesheet to load. Feel free to go as deep as you want with your components in a way that makes sense - HTTP/2 will not penalize you with those extra requests!
### Conclusion
This is just a basic look at how to build a project with HTTP/2 in mind on the front end, but this only scratches the surface. Perhaps you noticed a method I used that can be improved upon. Please bring it up in the comments! As stated in my first post, HTTP/2 is probably going to undo some of the standards we have held since HTTP/1, so it will take some serious thinking and experimenting to move into a fully efficient world of HTTP/2 development.
--------------------------------------------------------------------------------
via: https://www.viget.com/articles/getting-started-with-http-2-part-2
作者:[Ben][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.viget.com/about/team/btinsley
[1]:https://twitter.com/home?status=Firmly%20planting%20a%20flag%20in%20the%20sand%20for%20HTTP%2F2%20best%20practices%20for%20front%20end%20development.%20https%3A%2F%2Fwww.viget.com%2Farticles%2Fgetting-started-with-http-2-part-2
[2]:https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.viget.com%2Farticles%2Fgetting-started-with-http-2-part-2
[3]:http://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fwww.viget.com%2Farticles%2Fgetting-started-with-http-2-part-2
[4]:https://www.viget.com/articles/getting-started-with-http-2-part-1
[5]:https://github.com/http2/http2-spec/wiki/Tools

View File

@ -1,4 +1,3 @@
Translating by Bestony
GETTING STARTED WITH ANSIBLE
==========
@ -598,6 +597,6 @@ via: https://gorillalogic.com/blog/getting-started-with-ansible/?utm_source=webo
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://gorillalogic.com/author/josehidalgo/

View File

@ -1,157 +0,0 @@
fuowang翻译中
WattOS: A Rock-Solid, Lightning-Fast, Lightweight Linux Distro For All
=============================
![WattOS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/wattos-main.png?itok=b7-Z7GK1)
Jack Wallen takes a look at what makes lightweight WattOS special.
[Used with permission][81]
Everyone in the land of Linux has either heard of or made use of a lightweight Linux distribution. We all know the drill: small footprint, low resource requirement, includes a lightweight desktop environment (or window manager), and offers the same general layout as the next distribution, staking the same claims.
And most often they do their jobs. One problem that strikes down many of these lightweight Linux distros is that they dont really include the tools the average user needs to get their work done. To that end, they wind up relegated to specialty tasks (like data recovery, kiosks, etc.).
To some extent, WattOS suffers from these same pitfalls (the only productivity tool it includes is a PDF viewer, and it uses the standard “task bar/start menu” metaphor for the desktop). Fortunately, however, WattOS makes up for those shortcomings by way of incredible speed, reliability, and the inclusion of the Synaptic Package Manager; so, WattOS could easily become a lightweight Linux distribution for everyone.
Lets take a look at what makes WattOS special.
### The kernel
I was actually surprised to find WattOS to ship with kernel 4.4\. After an immediate upgrade, the uname -r command returned 4.4.0-38-generic. Considering this is a distribution targeted at bringing life to older, slower machines, the inclusion of the same kernel found on my Elementary OS Loki release was a pleasant surprise. This means WattOS should do a great job of working with both older and newer hardware.
Not so surprising is the fact that, when you go to the WattOS, youll find downloads for both the 32- and 64-bit versions (most modern distros are leaning away from 32-bit releases now). So, not only does the kernel offer support for modern hardware, but the architecture releases will allow you to give life to those older 32-bit machines.
### The speed
Once Id installed WattOS, I had one of those moments of purest envy. The speed at which WattOS runs is incredible. Even when working with the platform as a VirtualBox guest, the speed of the WattOS desktop blew away my Elementary OS Loki desktop. Understand that the machine running the host is a [System76 Leopard][80], with a liquid cooled i7 and 16GB of RAM. Handing over approximately 2GB of RAM to WattOS made it feel like absolutely nothing could slow it down. The impressiveness of the speed is almost too much to describe...it has to be experienced. Ive never witnessed Firefox open so quickly.
Speaking of app launching...LibreOffice. I wanted to test the speed at which LibreOffice would open, so I fired up the Synaptic Package Manager and attempted an install of the flagship, open source office suite.
To no avail.
The issue with installing LibreOffice centered on an uninstallable python3-uno package, and no matter what I tried, I couldnt get it installed. However, after downloading the latest .deb release from the [LibreOffice site][79], I could unpack that download file, cd into LibreOffice_5.2.2.2_Linux_x86-64_deb/DEBS/ and then issue the command sudo dpkg -i *.deb to finally get LibreOffice installed.
How did LibreOffice run? Insanely fast. Once again, Ive never seen this app open as quickly as on WattOS. Upon clicking the LibreOffice Writer icon, the app launched in half the time as it did on the host Elementary OS Loki (and that already is quite fast).
### The desktop
My personal preference of desktops tends to veer toward the more modern iterations. Im a fan of Ubuntu Unity, GNOME 3, and (especially) [Elementary OS][78]. So the idea of using an old-school desktop metaphor has very little appeal to me. Even so, WattOS has done a great job of breathing a bit of modernity into the old school design. Take, for instance, the default desktop theme (Figure 1). The WattOS UI designers have done a decent job of theming the desktop so it doesnt completely fall too far into the well of Windows XP or old-school Linux CDE-like window managers.
![WattOS](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/wattos_a.png?itok=eavmkVgL)
>Figure 1: The WattOS file manage revealing a somewhat modern theme. [Used with permission][76]
Theres really little to say about the WattOS desktop (powered by [LXDE][75]) that hasnt already been said about every Linux desktop of this ilk—its simple, straightforward, offers just enough flexibility and customization, and will be familiar to anyone who has used a computer since Windows 95.
### Surprises, good and bad
As with every new Linux desktop experience, there are always surprises of both the good and bad nature. First, the good.
Beyond the sheer speed of WattOS (and again Ill comment on this with a simple...WOW!), there are a few little nice surprises tacked onto the desktop (most in the way of included applications). One of the best additions (one you rarely find included in a desktop by default) is [KeePassX][74]. Ive come to the conclusion that password managers should be included on every desktop by default...and kudos to WattOS for including this outstanding tool.
Next comes the inclusion of Firefox. Many of the lightweight distributions will include browsers like [Surf][73] or [Midori][72]. Both are fine browsers, but they often fall short when it comes to websites like Google Docs. Because WattOS includes the full-blown Firefox, you will find the platform functions perfectly with any Firefox-compatible website.
Lastly, the less-than-good surprises. As Ive already stated, I ran into an immediate hitch with installing LibreOffice. Installing the likes of GIMP went smoothly, however (so I concluded that was a one-off issue). Beyond that one problem, I believe the default desktop menu to be somewhat poorly laid out. For instance, the Synaptic Package Manager is found in the Preferences menu. Id much rather see that listed prominently in the main menu and labeled something like “Install Applications” (or anything that a new user wouldnt have trouble understanding). From my perspective, the Preferences menu should be dedicated to tools used to configure the various aspects of the platform...not installing applications.
Beyond that, youd be hard-pressed to find anything wrong with WattOS—especially considering youre looking at a Linux distribution geared toward older and lesser-powered hardware.
### The conclusion
Although WattOS is designed to give life to older hardware, theres no reason why it couldnt serve on a modern desktop...and serve it well. With a next-to-zero learning curve, WattOS is instantly familiar, blazingly fast, and rock solid. Give this small footprint Linux distro a try; Im confident youll be equally impressed. And if you find WattOS not fast enough (something I cannot imagine happening), you can always give [Microwatt][71] a go (an even lighter, lightweight distribution).
--------------------------------------------------------------------------------
via: https://www.linux.com/learn/wattos-rock-solid-lightning-fast-lightweight-linux-distro-all
作者:[JACK WALLEN][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.linux.com/users/jlwallen
[1]:https://www.youtube.com/channel/UCOfXyFkINXf_e9XNosTJZDw
[2]:https://www.youtube.com/user/desainew
[3]:https://www.youtube.com/channel/UCEQXp_fcqwPcqrzNtWJ1w9w
[4]:http://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[5]:http://twitter.com/intent/tweet/?text=Is+Open+Source+Design+a+Thing%3F&url=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[6]:https://plus.google.com/share?url=https%3A%2F%2Ffreedompenguin.com%2Farticles%2Fopinion%2Fopen-source-design-thing%2F
[7]:https://atom.io/
[8]:http://froont.com/
[9]:https://webflow.com/
[10]:https://gravit.io/
[11]:http://getbootstrap.com/
[12]:https://inkscape.org/en/
[13]:https://www.gimp.org/
[14]:https://en.wikipedia.org/wiki/Free_and_open-source_software
[15]:https://medium.com/dawn-capital/why-leverage-the-power-of-open-source-to-build-a-successful-software-business-8aba6f665bc4#.ggmn2ojxp
[16]:https://github.com/majutsushi/tagbar
[17]:http://ctags.sourceforge.net/
[18]:https://github.com/majutsushi/tagbar/zipball/70fix
[19]:https://raw.githubusercontent.com/tpope/vim-pathogen/master/autoload/pathogen.vim
[20]:http://www.vim.org/scripts/script.php?script_id=2332
[21]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers-2-syntastic/
[22]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-delimitmate-help.png
[23]:https://github.com/Raimondi/delimitMate
[24]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-tagbar-visibility.png
[25]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-tagbar-ex2.png
[26]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-tagbar-example.png
[27]:http://www.tldp.org/LDP/intro-linux/html/sect_06_02.html
[28]:http://majutsushi.github.io/tagbar/
[29]:http://vi.stackexchange.com/questions/388/what-is-the-difference-between-the-vim-plugin-managers
[30]:https://www.howtoforge.com/images/vim-editor-plugins-for-software-developers/big/vimplugins-vimrc.png
[31]:http://www.vim.org/
[32]:https://github.com/scrooloose/syntastic
[33]:https://github.com/scrooloose/syntastic/blob/master/doc/syntastic.txt
[34]:https://www.howtoforge.com/images/3337/big/syntastic-error-all-descr.png
[35]:https://www.howtoforge.com/images/3337/big/syntastic-error-descr.png
[36]:https://www.howtoforge.com/images/3337/big/syntastic-error-highlight.png
[37]:https://github.com/scrooloose/syntastic
[38]:http://www.vim.org/
[39]:https://www.howtoforge.com/tutorial/vim-editor-plugins-for-software-developers/
[40]:https://en.wikipedia.org/wiki/Trim_%28computing%29
[41]:https://en.wikipedia.org/wiki/Sudo
[42]:http://snapcraft.io/
[43]:http://flatpak.org/
[44]:https://en.wikipedia.org/wiki/Wine_%28software%29
[45]:https://en.wikipedia.org/wiki/Live_CD
[46]:http://distrowatch.com/
[47]:http://www.internetnews.com/skerner/2009/10/white-house-goes-open-source-w.html
[48]:https://www.whitehouse.gov/blog/2016/10/13/removing-barriers-constituent-conversations
[49]:http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/
[50]:http://midori-browser.org/
[51]:http://surf.suckless.org/
[52]:https://www.keepassx.org/
[53]:http://lxde.org/
[54]:https://www.linux.com/licenses/category/used-permission
[55]:https://www.linux.com/files/images/wattosapng
[56]:https://elementary.io/
[57]:https://www.libreoffice.org/
[58]:https://system76.com/desktops/leopard
[59]:https://www.linux.com/licenses/category/used-permission
[60]:http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/
[61]:http://midori-browser.org/
[62]:http://surf.suckless.org/
[63]:https://www.keepassx.org/
[64]:http://lxde.org/
[65]:https://www.linux.com/licenses/category/used-permission
[66]:https://www.linux.com/files/images/wattosapng
[67]:https://elementary.io/
[68]:https://www.libreoffice.org/
[69]:https://system76.com/desktops/leopard
[70]:https://www.linux.com/licenses/category/used-permission
[71]:http://planetwatt.com/new/index.php/2016/09/23/microwatt-r10-released/
[72]:http://midori-browser.org/
[73]:http://surf.suckless.org/
[74]:https://www.keepassx.org/
[75]:http://lxde.org/
[76]:https://www.linux.com/licenses/category/used-permission
[77]:https://www.linux.com/files/images/wattosapng
[78]:https://elementary.io/
[79]:https://www.libreoffice.org/
[80]:https://system76.com/desktops/leopard
[81]:https://www.linux.com/licenses/category/used-permission]

View File

@ -1,313 +0,0 @@
translating by chao-zhi
An Everyday Linux User Review Of Xubuntu 16.10 - A Good Place To Start
===============
### Introduction
[![](https://2.bp.blogspot.com/-i4QOIuRjyWA/WAJ9zWbjKeI/AAAAAAAAM1U/-t0-4KB6cFgdyk3LvYbNDNiuC0dB29vRACLcB/s640/live1.png)][36]
Xubuntu has always been one of my favourite distributions. It doesn't look as glamourous as some of the other Linux offerings out there and it certainly doesn't come with all the software you need pre-installed.
The thing that Xubuntu gives you is a great base to start from. 
If you are the sort of person who likes to customise the look and feel of their desktop then XFCE is definitely the best desktop environment for this. 
If you are low on system resources or you like to keep things nice and slick then XFCE is again a great option.
Xubuntu therefore has a head start on many of the other top Linux distributions because the XFCE desktop is installed by default.
There is no doubt that when it comes to hardware compatibility, ease of use, stability, ease of installation and a large community, Ubuntu is hard to beat.
Xubuntu is an official flavour of the Ubuntu Linux distribution so you get the best of Ubuntu but with the XFCE desktop installed instead of Unity.
If you want to be the one to choose the applications that come with your distribution then some other distributions come lots of applications pre-installed that you may not need.
Xubuntu comes with the bare essentials and beyond the small core of default inclusions it is up to you to find and install the rest.
This for me is why Xubuntu has always been a great distribution. Start with a simple base installation and customise it to be what you want it to be. 
### How To Get Xubuntu
You can visit the Xubuntu website at
 [http://xubuntu.org/][35]
[![](https://3.bp.blogspot.com/-GnYseQr9r3c/WAKA9R3hHPI/AAAAAAAAM1g/A3rvnr3W3Tk55apwsqmFs8nvr7zAMWnLACLcB/s640/getxubuntu.PNG)][34]
The download page can be found at 
[http://xubuntu.org/getxubuntu/][33]
There are two versions available. The LTS version is 16.04 and is the one most people will want to go for unless you like updating your operating system every 6 months.
The other version is the one I am reviewing today which is version 16.10. 
You can either download a torrent in order to get the ISO file or you can visit one of the mirrors.
[![](https://3.bp.blogspot.com/-VBWH0CJsijM/WAKB3uDPvNI/AAAAAAAAM1k/cpigdxtjMEUQANxb6BF4efS9g7EZDFnZACLcB/s640/mirrorlist.PNG)][32]
If you choose to download from a mirror click on the appropriate ISO. For example click on the amd-64.iso file for 64-bit or i386.iso for 32-bit.
There are lots of guides for showing how to create bootable Linux USB drives:
* [This one shows how to create a Ubuntu one but it will work with Xubuntu][3]
* [You can also try this one which is for Xubuntu][2]
* [Or you can even try this one][1]
If all this seems too much trouble you can also
 [buy one from here][31]
.
### Installation
[![](https://4.bp.blogspot.com/-4GZVmSbI3nw/WAKDyLh8UdI/AAAAAAAAM10/BhSSR0e3GkYC-5fSrjyLmhNKpuQnogbdQCLcB/s320/install1.png)][30]
Installation of Xubuntu, as with other flavours of Ubuntu, is relatively straight forward.
If you have installed one, then you can generally install any of them.
Start off by choosing the installation language.
[![](https://4.bp.blogspot.com/-0YgUIjeTb6I/WAKECFfeOwI/AAAAAAAAM14/lyUO2P7O9WYjLgCS0i-ARAbhnvGho_71ACLcB/s320/install2.png)][29]
You will be asked whether you want to update as you go and whether you wish to install the third party codecs and tools which enable you to play MP3 audio and use proprietary drivers.
You need to be connected to the internet in order to do either of these things.
Again It is relatively straight forward and covered later on in the review.
[![](https://1.bp.blogspot.com/-Pzt6YUVJbGY/WAKEf6QY2-I/AAAAAAAAM18/I41MoEvv_aguUX6Y9HkVLC_QnONpzyCVwCLcB/s320/install3.png)][28]
If you have a spare unallocated disk partition and you have Windows installed you will see the option to install Xubuntu alongside Windows in a dual boot setup.
You also get the option to install Xubuntu as the sole operating system and you can also choose something else which lets you partition the way you want to.
[![](https://4.bp.blogspot.com/-tcwOutnWJk8/WAKE5kGhPxI/AAAAAAAAM2A/9ZZrZRi6KR4renDxjwbRw8uoRqpAI8NzACLcB/s320/install4.png)][27]
The next step is to choose where you live. This sets your time zone so that the clock is set up correctly.
[![](https://4.bp.blogspot.com/-cCNxMeLAE-Y/WAKFQjSZe2I/AAAAAAAAM2I/ZaTKZ8DAzFg-TOfS5BkNdN1-HYlRXweYwCLcB/s320/install5.png)][26]
Two steps to go.
Choose your keyboard layout by choosing the language and keyboard configuration.
[![](https://3.bp.blogspot.com/-rnLEH6sBp7E/WAKFbgaxakI/AAAAAAAAM2M/-mG3lSxc41EKPQ2BnNbSmLRdgVeyT36jwCLcB/s320/install6.png)][25]
Finally create a default user.
Enter your name, give your computer a name, set a username and then enter and repeat a password.
Xubuntu will now install and you should be good to go.
### First Impressions
[![](https://1.bp.blogspot.com/-twtmUl3w008/WAKFtvOGMuI/AAAAAAAAM2Q/txM1lfCM7QkzhLDqEqacavmAMMg2DSr0ACLcB/s640/fulldesktop.png)][24]
Xubuntu starts with a blue desktop with a single panel at the top. You will also see all of the drives that are available on your computer as icons on the desktop.
At the top of the screen is a single panel.
The left corner on the panel has a single icon (picture of a mouse) which when clicked brings up a stylish, lightweight but fully functional menu known as the Whisker menu.
The top right corner has icons for notifications, power settings, bluetooth settings, network settings, audio settings and a clock.
### Connecting To The Internet
[![](https://2.bp.blogspot.com/-nEvPMHkpTQ8/WAKG17nVliI/AAAAAAAAM2Y/2K6alEtBWAg9x9GS7hDEoJwprrwOqUQfwCLcB/s640/internet.png)][23]
You can connect to the internet by clicking the network icon on the panel. A list of wireless networks will appear and you can connect to one by clicking on it and enter the password for the network.
I have installed Xubuntu on my Lenovo Ideapad Y700 which is quite modern. Many distributions have caused subtle issues with wireless connectivity which I have had to work around.
Xubuntu 16.10 works without having to make any modifications.
### Drivers
[![](https://2.bp.blogspot.com/-bBGLZIp5J5k/WAKHG1w2RqI/AAAAAAAAM2c/nSISH5XFhQUfoIpXyuEUKlVqTieEi6_oACLcB/s640/nvidia.png)][22]
It is worth looking for additional drivers which may be available for your computer. 
Quite often the default option will be the open source drivers which are decent enough but if you have a good graphics card then it is worth installing the proprietary drivers.
You can find the additional drivers setup screen by opening the menu and searching for additional drivers.
If you see a driver appear for your graphics card and it says not working then I recommend sticking with the default graphics driver.
### Printers
[![](https://1.bp.blogspot.com/-loH1k_rWYcA/WAKICKT7YUI/AAAAAAAAM2g/01rCedfYovgesf5Cf1RlcwFVfwPwhf2JACLcB/s320/printer.png)][21]
I have an Epson WF-2630 wireless printer. Xubuntu was able to find the printer straight away and installed the drivers relevant for the printer.
I printed test pages and the output was perfectly adequate.
### Network Attached Storage
[![](https://4.bp.blogspot.com/-hFDeZKOzZu4/WAKIWilPHoI/AAAAAAAAM2o/GhJBVIDfU0oPgc7Z8cvH4i4gbu_3tlOfgCLcB/s640/wdmycloud.png)][20]
I have a WD MyCloud Storage device which is accessible over a wireless network. 
You can access the device using the default file manager called Thunar. It is worth noting that when I clicked on Network to show devices the WD MyCloud device showed up but when I clicked on it I received an error.
However when I opened the Windows Network Folder the WD MyCloud device showed up again and I was able to access the folders on the drive.
### Software
[![](https://1.bp.blogspot.com/-nPqWKUsDVoI/WAKJTxLDxUI/AAAAAAAAM2w/8LoOvhNltV8IQtSoyN_oPWjjKyV1bTMyACLcB/s640/whynotfirefox.png)][19]
I mentioned at the beginning of the review that Xubuntu comes with a minimal set of applications. There is however almost everything you could need to get started.
Firefox is installed as the default web browser and Thunderbird is the default email client.
[![](https://1.bp.blogspot.com/-Tw2PlooCqVU/WAKJznZu2DI/AAAAAAAAM20/E0RDAQKPxNY6l0TF10s2Yo9ge-LToZFtQCLcB/s640/parole.png)][18]
You also get the full LibreOffice suite and the Parole media player which does the job.
There are a host of other tools such as an image viewer, calculator, disk burning software and a bittorrent client.
[![](https://2.bp.blogspot.com/-jDTpUNkQLYA/WAKKLPYyIEI/AAAAAAAAM24/0hcjRSnQonIdhnb1Knq1gMu_2i3bWo3ZQCLcB/s640/imageviewer.png)][17]
I am glad that Abiword and Gnumeric have largely been omitted from most major distributions nowadays because they are both fairly irrelevant. Most people end up installing LibreOffice anyway.
The lack of a dedicated audio player is a little bit surprising and I have to say that I generally end up installing Google's Chrome browser as opposed to using Firefox.
The top picture in this section shows why. In that picture I am trying to watch Curb Your Enthusiam via the Google Play store but there were various DRM and other issues which prevented the video playing.
I can't be bothered jumping through hoops to bypass these issues when a simple download from the Google website sorts out the issue as shown below.
[![](https://3.bp.blogspot.com/-_aqn8leBcuY/WAKLOAzAhnI/AAAAAAAAM3A/yruGYEG0PHc4WRAqRjeVoYxjhVlHiIfCwCLcB/s640/Screenshot_2016-10-15_17-57-28.png)][16]
### Installing Software
[![](https://2.bp.blogspot.com/-6kjAgQV6Oss/WAKLhFbihcI/AAAAAAAAM3E/TLeK0xPexNEaxdzb_NkPn_BDDxOoTR2-gCLcB/s640/software.png)][15]
The main issue that has plagued Ubuntu based distributions since the release of 16.04 is the fact that certain applications don't appear in the graphical software tool used to install software.
For instance you won't find Steam in the software manager.
[![](https://3.bp.blogspot.com/-4e1ozcMoijU/WAKL2Gp5C1I/AAAAAAAAM3I/VY7XBvxOLCkiK-UdSvypfQFnrkfCtt3rwCLcB/s640/steamnotinsoftware.png)][14]
If you use the command line and type "sudo apt-cache search steam" you will see that the software is available to be installed.
[![](https://3.bp.blogspot.com/-rzTMI5a6EAE/WAKMFfDi-2I/AAAAAAAAM3Q/1-l612iZmSEYY188kfyzKo5s75nFWSz6ACLcB/s640/steaminaptget.png)][13]
Steam isn't the only omission, other packages such as Skype are also not available via the graphical tool. 
I would have expected this to have been resolved by now across all Ubuntu distributions.
I reviewed Kubuntu 16.04 recently and the software tool called Discover was completely inept. The search function didn't work at all.
Fortunately the software manager in Xubuntu generally works for most packages and I used it to search for and install the Quod Libet audio player.
[![](https://4.bp.blogspot.com/-l_INcXhflac/WAKMqz8mYtI/AAAAAAAAM3U/qBNl5YO8VOEMndpZm5IEMYOGYrih_Q4DQCLcB/s640/quodlibet.png)][12]
[![](https://1.bp.blogspot.com/-erNT96pq67c/WAKM-331qKI/AAAAAAAAM3Y/jbnf5cZbFxgM9Q543XA3bFDqQ91MkmpJACLcB/s320/music.png)][11]
Incidentally if you picked the option to install codecs whilst installing Xubuntu then MP3 audio will play without any issues.
If not then you should open a terminal emulator and install the Xubuntu Restricted Extras package.
### Customising Xubuntu
[![](https://1.bp.blogspot.com/-MlFCGvvjSe8/WAKNdG8i6SI/AAAAAAAAM3g/6g7WNJbmZX856kp4ezO56boIWbGLRLMdQCLcB/s320/changewallpaper.png)][10]
There are so many things you can do to
 [customise Xubuntu as shown here][9]
.
Xubuntu comes with a decent set of wallpapers as shown above and one of the first things you might like to do is change the wallpaper and add a new docking style panel with launchers to all of your favourite applications.
[![](https://2.bp.blogspot.com/-h_HRUcMTYu0/WAKN7J_0BJI/AAAAAAAAM3k/NKy7ybXZCEM23IK0Nkjp-TDo2PQ1ff4bQCLcB/s640/newwallpaper.png)][8]
A relatively new feature available for Xubuntu is the XFDashboard. This brings up a dashboard similar to the one supplied with the GNOME desktop. You can add a launcher and keyboard shortcut to make it appear.
[![](https://1.bp.blogspot.com/-ZCmwHtAahH0/WAKORXPnNFI/AAAAAAAAM3o/lKR4bnEbi-syQdMp_KoCb8xQAd4WTP5dgCLcB/s640/xfdashboard.png)][7]
This view provides a nice way of choosing different workspaces and launching applications.
To be honest when it comes to customising Xubuntu the world is your oyster. 
[![](https://1.bp.blogspot.com/-lXhn0cuCoe8/WAKOmpBZc6I/AAAAAAAAM3w/1C3ljgPegr887xG5O5A0-0RBPAQlA3qHACLcB/s640/finalcustomisation.png)][6]
### Issues
My biggest issue with Xubuntu (along with all of the Ubuntu distributions) is the lack of key software programs in the graphical software installer. Why omit Steam?
I received one crash whilst using Xubuntu and that was during the installation as shown by the following image:
[![](https://1.bp.blogspot.com/-saCiLJ-LXiU/WAKPh4EbsKI/AAAAAAAAM34/Cb28FoR-xZYeXd5lmbyOfbK1MuFIr_wmQCLcB/s640/installproblem.png)][5]
I have no idea what the problem was because it didn't actually have any side effects. The installation worked without a hitch.
### Summary
I don't review Xubuntu that often and it isn't because I don't like Xubuntu. In fact I am a big fan of Xubuntu and I have a heavily customised version on one of my other computers. 
I use that computer when I want to get things done because lets face it there is nothing more annoying than seeing this:
[![](https://1.bp.blogspot.com/-GX3xYYXeTfY/WAKTRbvHv0I/AAAAAAAAM4Q/NzN8PfAOHGouj6z7-TPLyC18e_TXhCukACLcB/s640/IMG_20161015_163354-min.jpg)][4]
Seriously how can people say Windows just works when it seems that every other day the message "installing 1 of 285" appears and you lose your computer for an hour whilst it updates itself.
Xubuntu (as with every other distribution) updates without interrupting your day at all.
The truth is that nothing much really changes with Xubuntu. It is solid, steady and it doesn't need to change (except fot the software manager thing).
I would totally recommend Xubuntu.
I have to say that it is worth also checking out Peppermint OS, Linux Mint XFCE or Manjaro XFCE as well.
--------------------------------------------------------------------------------
via: http://www.everydaylinuxuser.com/2016/10/an-everyday-linux-user-review-of_15.html
作者:[Gary Newell][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: http://www.everydaylinuxuser.com/2016/10/an-everyday-linux-user-review-of_15.html
[1]:http://www.everydaylinuxuser.com/2015/11/how-to-create-ubuntu-1510-usb-drive.html
[2]:http://linux.about.com/od/howtos/ss/How-To-Create-A-Persistent-Bootable-Xubuntu-Linux-USB-Drive.htm
[3]:http://linux.about.com/od/howtos/ss/How-To-Create-A-UEFI-Bootable-Ubuntu-USB-Drive-Using-Windows.htm#step2
[4]:https://1.bp.blogspot.com/-GX3xYYXeTfY/WAKTRbvHv0I/AAAAAAAAM4Q/NzN8PfAOHGouj6z7-TPLyC18e_TXhCukACLcB/s1600/IMG_20161015_163354-min.jpg
[5]:https://1.bp.blogspot.com/-saCiLJ-LXiU/WAKPh4EbsKI/AAAAAAAAM34/Cb28FoR-xZYeXd5lmbyOfbK1MuFIr_wmQCLcB/s1600/installproblem.png
[6]:https://1.bp.blogspot.com/-lXhn0cuCoe8/WAKOmpBZc6I/AAAAAAAAM3w/1C3ljgPegr887xG5O5A0-0RBPAQlA3qHACLcB/s1600/finalcustomisation.png
[7]:https://1.bp.blogspot.com/-ZCmwHtAahH0/WAKORXPnNFI/AAAAAAAAM3o/lKR4bnEbi-syQdMp_KoCb8xQAd4WTP5dgCLcB/s1600/xfdashboard.png
[8]:https://2.bp.blogspot.com/-h_HRUcMTYu0/WAKN7J_0BJI/AAAAAAAAM3k/NKy7ybXZCEM23IK0Nkjp-TDo2PQ1ff4bQCLcB/s1600/newwallpaper.png
[9]:http://linux.about.com/od/howtos/ss/Customise-The-XFCE-Desktop-Environment.htm
[10]:https://1.bp.blogspot.com/-MlFCGvvjSe8/WAKNdG8i6SI/AAAAAAAAM3g/6g7WNJbmZX856kp4ezO56boIWbGLRLMdQCLcB/s1600/changewallpaper.png
[11]:https://1.bp.blogspot.com/-erNT96pq67c/WAKM-331qKI/AAAAAAAAM3Y/jbnf5cZbFxgM9Q543XA3bFDqQ91MkmpJACLcB/s1600/music.png
[12]:https://4.bp.blogspot.com/-l_INcXhflac/WAKMqz8mYtI/AAAAAAAAM3U/qBNl5YO8VOEMndpZm5IEMYOGYrih_Q4DQCLcB/s1600/quodlibet.png
[13]:https://3.bp.blogspot.com/-rzTMI5a6EAE/WAKMFfDi-2I/AAAAAAAAM3Q/1-l612iZmSEYY188kfyzKo5s75nFWSz6ACLcB/s1600/steaminaptget.png
[14]:https://3.bp.blogspot.com/-4e1ozcMoijU/WAKL2Gp5C1I/AAAAAAAAM3I/VY7XBvxOLCkiK-UdSvypfQFnrkfCtt3rwCLcB/s1600/steamnotinsoftware.png
[15]:https://2.bp.blogspot.com/-6kjAgQV6Oss/WAKLhFbihcI/AAAAAAAAM3E/TLeK0xPexNEaxdzb_NkPn_BDDxOoTR2-gCLcB/s1600/software.png
[16]:https://3.bp.blogspot.com/-_aqn8leBcuY/WAKLOAzAhnI/AAAAAAAAM3A/yruGYEG0PHc4WRAqRjeVoYxjhVlHiIfCwCLcB/s1600/Screenshot_2016-10-15_17-57-28.png
[17]:https://2.bp.blogspot.com/-jDTpUNkQLYA/WAKKLPYyIEI/AAAAAAAAM24/0hcjRSnQonIdhnb1Knq1gMu_2i3bWo3ZQCLcB/s1600/imageviewer.png
[18]:https://1.bp.blogspot.com/-Tw2PlooCqVU/WAKJznZu2DI/AAAAAAAAM20/E0RDAQKPxNY6l0TF10s2Yo9ge-LToZFtQCLcB/s1600/parole.png
[19]:https://1.bp.blogspot.com/-nPqWKUsDVoI/WAKJTxLDxUI/AAAAAAAAM2w/8LoOvhNltV8IQtSoyN_oPWjjKyV1bTMyACLcB/s1600/whynotfirefox.png
[20]:https://4.bp.blogspot.com/-hFDeZKOzZu4/WAKIWilPHoI/AAAAAAAAM2o/GhJBVIDfU0oPgc7Z8cvH4i4gbu_3tlOfgCLcB/s1600/wdmycloud.png
[21]:https://1.bp.blogspot.com/-loH1k_rWYcA/WAKICKT7YUI/AAAAAAAAM2g/01rCedfYovgesf5Cf1RlcwFVfwPwhf2JACLcB/s1600/printer.png
[22]:https://2.bp.blogspot.com/-bBGLZIp5J5k/WAKHG1w2RqI/AAAAAAAAM2c/nSISH5XFhQUfoIpXyuEUKlVqTieEi6_oACLcB/s1600/nvidia.png
[23]:https://2.bp.blogspot.com/-nEvPMHkpTQ8/WAKG17nVliI/AAAAAAAAM2Y/2K6alEtBWAg9x9GS7hDEoJwprrwOqUQfwCLcB/s1600/internet.png
[24]:https://1.bp.blogspot.com/-twtmUl3w008/WAKFtvOGMuI/AAAAAAAAM2Q/txM1lfCM7QkzhLDqEqacavmAMMg2DSr0ACLcB/s1600/fulldesktop.png
[25]:https://3.bp.blogspot.com/-rnLEH6sBp7E/WAKFbgaxakI/AAAAAAAAM2M/-mG3lSxc41EKPQ2BnNbSmLRdgVeyT36jwCLcB/s1600/install6.png
[26]:https://4.bp.blogspot.com/-cCNxMeLAE-Y/WAKFQjSZe2I/AAAAAAAAM2I/ZaTKZ8DAzFg-TOfS5BkNdN1-HYlRXweYwCLcB/s1600/install5.png
[27]:https://4.bp.blogspot.com/-tcwOutnWJk8/WAKE5kGhPxI/AAAAAAAAM2A/9ZZrZRi6KR4renDxjwbRw8uoRqpAI8NzACLcB/s1600/install4.png
[28]:https://1.bp.blogspot.com/-Pzt6YUVJbGY/WAKEf6QY2-I/AAAAAAAAM18/I41MoEvv_aguUX6Y9HkVLC_QnONpzyCVwCLcB/s1600/install3.png
[29]:https://4.bp.blogspot.com/-0YgUIjeTb6I/WAKECFfeOwI/AAAAAAAAM14/lyUO2P7O9WYjLgCS0i-ARAbhnvGho_71ACLcB/s1600/install2.png
[30]:https://4.bp.blogspot.com/-4GZVmSbI3nw/WAKDyLh8UdI/AAAAAAAAM10/BhSSR0e3GkYC-5fSrjyLmhNKpuQnogbdQCLcB/s1600/install1.png
[31]:https://www.osdisc.com/products/xubuntu?affiliate=everydaylinuxuser
[32]:https://3.bp.blogspot.com/-VBWH0CJsijM/WAKB3uDPvNI/AAAAAAAAM1k/cpigdxtjMEUQANxb6BF4efS9g7EZDFnZACLcB/s1600/mirrorlist.PNG
[33]:http://xubuntu.org/getxubuntu/
[34]:https://3.bp.blogspot.com/-GnYseQr9r3c/WAKA9R3hHPI/AAAAAAAAM1g/A3rvnr3W3Tk55apwsqmFs8nvr7zAMWnLACLcB/s1600/getxubuntu.PNG
[35]:http://xubuntu.org/
[36]:https://2.bp.blogspot.com/-i4QOIuRjyWA/WAJ9zWbjKeI/AAAAAAAAM1U/-t0-4KB6cFgdyk3LvYbNDNiuC0dB29vRACLcB/s1600/live1.png

View File

@ -1,101 +0,0 @@
Yinux 翻译中
Livepatch Apply Critical Security Patches to Ubuntu Linux Kernel Without Rebooting
============================================================
If you are a system administrator in charge of maintaining critical systems in enterprise environments, we are sure you know two important things:
1) Finding a downtime window to install security patches in order to handle kernel or operating system vulnerabilities can be difficult. If the company or business you work for does not have security policies in place, operations management may end up favoring uptime over the need to solve vulnerabilities. Additionally, internal bureaucracy can cause delays in granting approvals for a downtime. Been there myself.
2) Sometimes you cant really afford a downtime, and should be prepared to mitigate any potential exposures to malicious attacks some other way.
The good news is that Canonical has recently released (actually, a couple of days ago) its Livepatchservice to apply critical kernel patches to Ubuntu 16.04 (64-bit edition / 4.4.x kernel) without the need for a later reboot. Yes, you read that right: with Livepatch, you dont need to restart your Ubuntu 16.04 server in order for the security patches to take effect.
### Signing up for Ubuntu Livepatch
In order to use Canonical Livepatch Service, you need to sign up at [https://auth.livepatch.canonical.com/][1] and indicate if you are a regular Ubuntu user or an Advantage subscriber (paid option). All Ubuntu users can link up to 3 different machines to Livepatch through the use of a token:
[
![Canonical Livepatch Service](http://www.tecmint.com/wp-content/uploads/2016/10/Canonical-Livepatch-Service.png)
][2]
Canonical Livepatch Service
In the next step you will be prompted to enter your Ubuntu One credentials or sign up for a new account. If you choose the latter, you will need to confirm your email address in order to finish your registration:
[
![Ubuntu One Confirmation Mail](http://www.tecmint.com/wp-content/uploads/2016/10/Ubuntu-One-Confirmation-Mail.png)
][3]
Ubuntu One Confirmation Mail
Once you click on the link above to confirm your email address, youll be ready to go back to [https://auth.livepatch.canonical.com/][4] and get your Livepatch token.
### Getting and Using your Livepatch Token
To begin, copy the unique token assigned to your Ubuntu One account:
[
![Canonical Livepatch Token](http://www.tecmint.com/wp-content/uploads/2016/10/Livepatch-Token.png)
][5]
Canonical Livepatch Token
Then go to a terminal and type:
```
$ sudo snap install canonical-livepatch
```
The above command will install the livepatch, whereas
```
$ sudo canonical-livepatch enable [YOUR TOKEN HERE]
```
will enable it for your system. If this last command indicates it cant find canonical-livepatch, make sure `/snap/bin` has been added to your path. A workaround consists of changing your working directory to `/snap/bin` and do.
```
$ sudo ./canonical-livepatch enable [YOUR TOKEN HERE]
```
[
![Install Livepatch in Ubuntu](http://www.tecmint.com/wp-content/uploads/2016/10/Install-Livepatch-in-Ubuntu.png)
][6]
Install Livepatch in Ubuntu
Overtime, youll want to check the description and the status of patches applied to your kernel. Fortunately, this is as easy as doing.
```
$ sudo ./canonical-livepatch status --verbose
```
as you can see in the following image:
[
![Check Livepatch Status in Ubuntu](http://www.tecmint.com/wp-content/uploads/2016/10/Check-Livepatch-Status.png)
][7]
Check Livepatch Status in Ubuntu
Having enabled Livepatch on your Ubuntu server, you will be able to reduce planned and unplanned downtimes at a minimum while keeping your system secure. Hopefully Canonicals initiative will award you a pat on the back by management or better yet, a raise.
Feel free to let us know if you have any questions about this article. Just drop us a note using the comment form below and we will get back to you as soon as possible.
--------------------------------------------------------------------------------
via: http://www.tecmint.com/livepatch-install-critical-security-patches-to-ubuntu-kernel
作者:[Gabriel Cánepa][a]
译者:[Yinux](https://github.com/Yinux)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/gacanepa/
[1]:https://auth.livepatch.canonical.com/
[2]:http://www.tecmint.com/wp-content/uploads/2016/10/Canonical-Livepatch-Service.png
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/Ubuntu-One-Confirmation-Mail.png
[4]:https://auth.livepatch.canonical.com/
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Livepatch-Token.png
[6]:http://www.tecmint.com/wp-content/uploads/2016/10/Install-Livepatch-in-Ubuntu.png
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/Check-Livepatch-Status.png

View File

@ -61,7 +61,7 @@ via: https://www.maketecheasier.com/use-old-xorg-apps-unity-8/
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.maketecheasier.com/author/derrikdiener/
[1]:https://www.maketecheasier.com/use-old-xorg-apps-unity-8/#respond

View File

@ -157,7 +157,7 @@ via: https://medium.com/@bartobri/applying-the-linus-tarvolds-good-taste-coding-
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://medium.com/@bartobri?source=post_header_lockup
[1]:https://www.ted.com/talks/linus_torvalds_the_mind_behind_linux

View File

@ -1,102 +0,0 @@
###Translating by rusking
4 Useful Way to Know Plugged USB Device Name in Linux
============================================================
As a newbie, one of the many [things you should master in Linux][1] is identification of devices attached to your system. It may be your computers hard disk, an external hard drive or removable media such USB drive or SD Memory card.
Using USB drives for file transfer is so common today, and for those (new Linux users) who prefer to use the command line, learning the different ways to identify a USB device name is very important, when you need to format it.
Once you attach a device to your system such as a USB, especially on a desktop, it is automatically mounted to a given directory, normally under /media/username/device-label and you can then access the files in it from that directory. However, this is not the case with a server where you have to[ manually mount a device][2] and specify its mount point.
Linux identifies devices using special device files stored in `/dev` directory. Some of the files you will find in this directory include `/dev/sda` or `/dev/hda` which represents your first master drive, each partition will be represented by a number such as `/dev/sda1` or `/dev/hda1` for the first partition and so on.
```
$ ls /dev/sda*
```
[
![List All Linux Device Names](http://www.tecmint.com/wp-content/uploads/2016/10/List-All-Linux-Device-Names.png)
][3]
List All Linux Device Names
Now lets find out device names using some different command-line tools as shown:
### Find Out Plugged USB Device Name Using df Command
To view each device attached to your system as well as its mount point, you can use the [df command][4](checks Linux disk space utilization) as shown in the image below:
```
$ df -h
```
[
![Find USB Device Name Using df Command](http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name.png)
][5]
Find USB Device Name Using df Command
### Use lsblk Command to Find USB Device Name
You can also use the [lsblk command (list block devices)][6] which lists all block devices attached to your system like so:
```
$ lsblk
```
[
![List Linux Block Devices](http://www.tecmint.com/wp-content/uploads/2016/10/List-Linux-Block-Devices.png)
][7]
List Linux Block Devices
### Identify USB Device Name with fdisk Utility
[fdisk is a powerful utility][8] which prints out the partition table on all your block devices, a USB drive inclusive, you can run it will root privileges as follows:
```
$ sudo fdisk -l
```
[
![List Partition Table of Block Devices](http://www.tecmint.com/wp-content/uploads/2016/10/List-Partition-Table.png)
][9]
List Partition Table of Block Devices
### Determine USB Device Name with dmesg Command
dmesg is an important command that prints or controls the kernel ring buffer, a data structure which [stores information about the kernels operations][10].
Run the command below to view kernel operation messages which will as well print information about your USB device:
```
$ dmesg
```
[
![dmesg - Prints USB Device Name](http://www.tecmint.com/wp-content/uploads/2016/10/dmesg-shows-kernel-information.png)
][11]
dmesg Prints USB Device Name
That is all for now, in this article, we have covered different approaches of how to find out a USB device name from the command line. You can also share with us any other methods for the same purpose or perhaps offer us your thoughts about the article via the response section below.
--------------------------------------------------------------------------------
via: http://www.tecmint.com/find-usb-device-name-in-linux
作者:[Aaron Kili ][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/tag/linux-tricks/
[2]:http://www.tecmint.com/mount-filesystem-in-linux/
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/List-All-Linux-Device-Names.png
[4]:http://www.tecmint.com/how-to-check-disk-space-in-linux/
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name.png
[6]:http://www.tecmint.com/commands-to-collect-system-and-hardware-information-in-linux/
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Linux-Block-Devices.png
[8]:http://www.tecmint.com/fdisk-commands-to-manage-linux-disk-partitions/
[9]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Partition-Table.png
[10]:http://www.tecmint.com/dmesg-commands/
[11]:http://www.tecmint.com/wp-content/uploads/2016/10/dmesg-shows-kernel-information.png

View File

@ -1,272 +0,0 @@
【翻译中】 by jayjay823
# 5 Best FPS Games For Linux
![best FPS games for linux](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/fps-games-for-linux.jpg?581)
For so long Linux users filled very excluded from the gaming world, with a lot of games for other OSes and almost no games for Linux. For playing good [Linux games][27] with good graphics the solution was to use [wine][26] but, wine never worked very well out the box. Most of the games were small in size and not too good in graphics, the developers didnt think of porting or creating games for linux because of it small size of users.[Linux][25] is growing everyday in size and quality and it can be noticed when you see new non-FOSS organization [express their love for Linux][24].
So what to expect for [Linux games][23]? Are there any good games for Linux Distros? Playable online with other Operating Systems? The answer for all this is a big YES.
So let me give you 5 best FPS games for Linux. To play these games without much hassle, install any Linux distro for gaming. Weve covered 5 best Linux for gaming so take a look here. 
### **[1\. Counter-Strike: Global Offensive][19]** 
This multiplayer first-person shooter was developed by **Hidden Path** and **Valve Corporation** and it was released in 21 August, 2012 but only was available for Linux users in September 2014 for Linux users.
It was previously developed as a mod for [Half-Life][22].
[
![counter strike for linux](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike.jpg?628)
][18]
The cross-platform play is only possible between users of MacOS, Linux and Windows excluding console users because of its update cycles on the consoles. This Linux game includes four game modes.
### Counter-Strike Game Modes
### Classic: Competitive
This is the most famous mode that made **CS **famous. Its five against five online battle on a best 30 match. With options to join in your team or be queued and be added in a random team when there is a free space to join.
[
![counter strike classic competitive](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike-classic-competitive.jpg?654)
][17]
### Classic: Casual
For users who dont want the options of the first mode which is a best of 30, can find a match and play at their own pace. they automatically receive body armour the defusal kits and get bonus reward for kills.
### Demolition
Demolition is a fast-paced gameplay where the player takes turns in defending a bomb site from attackers with a starting weapon. If you get a kill in every turn your weapon is changed for a better one and the end is a powerful sniper rifle.
### Arms Race
This mode is a gun progression mode, where user gets a new improved weapon as soon as the register a kill. And when you reach the most advanced weapon on the list you get a golden knife and you win the game.
### System requirements for Counter Strike
**OS:** Ubuntu 12.04
**Processor:** 64-bit Dual core from Intel or AMD at 2.8 GHz
**Memory:** 4 GB RAM
**Graphics:** nVidia GeForce 8600/9600GT, ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310, AMD 12.11), OpenGL 2.1
**Storage:** 15 GB available space
**Sound Card:** OpenAL Compatible Sound Card
### **[2\. Borderlands 2][16]** 
[
![borderlands 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/borderlands-2_1.jpg?588)
][15]Borderlands is a blend between first person shooter and role playing games creating a role-playing shooter genre created by Gearbox an independent developer organization.
The game allows the players to play in a campaign that consists of main missions and optional missions with you as a four player group of treasure seekers searching for “The vault” on a planet called pandora. It can be played as a Co-op online campaign game with other online users being the three remained player of your game. This game was  released on September 18, 2012\. Build with unreal engine 3 and PhysX Technology.
### Borderlands 2 Gameplay
The game revolves around completing the main missions and looting (weapons, shields,  skins, etc). The four players of the games each have own ability.
* **Axton**  Can summon a turret to provide offensive support;
* **Maya**  Can trap the enemies for few seconds with a sphere of energy;
* **Zer0 ** Can temporarily become invisible and spawn a hologram decoy to distract enemies;
* **Salvador**  Can temporarily wield two weapons simultaneously. So imagine holding two rocket launchers to your enemies.
| [
![Axton “The Commando”](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/axton_orig.jpg)
][4]Axton “The Commando”[
![Zero”The Assassin”](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/zero_orig.jpg)
][3]Zero”The Assassin” | [
![Maya “The Siren”](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/maya.jpg?381)
][2]Maya “The Siren”[
![Salvador ](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/salvador.jpg?375)
][1]Salvador "the Gunzerker" |
The game was well received by critics and given a 9/10 by IGN regarding the game sense of humour, world structure and RPG System.
### System Requirements For Borderlands 2
**Operating System:** SteamOS, Ubuntu 14.04
**CPU Processor:** Intel Core 2 Quad, AMD Phenom II X4
**CPU Speed:** 2.4GHz
**Memory:** 4 GB RAM
**Hard Disk Space:** 13 GB
**Video Card (NVidia):** Geforce 260
**Video Memory (VRam):** 1GB
Intel Integrated video chipsets and ATI chipsets are currently unsupported for Borderlands 2 Linux.
### **[3\. Team Fortress 2][14]** 
[
![team fortress 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_1.jpg?744)
][13]This is one of the most highly rated and most popular games of all time and it is free. Its a team based First Person online multiplayer Shooter developed and published by [**Valve Corporation**][21]. Its frequently updated and mods, maps, equipment are also updated frequently, Communities also contribute with updates to the game. It was ported to Linux on February 14, 2013.
To play the game, you join a team of nice character class battling against other teams  in different game modes (Including Capture the flag and King of the hill).
### Team Fortress 2 Gameplay
In the games fiction, each team is formed by mercenaries hired by two brothers to protect the company assets belonging to one brother while trying to destroy those of the other. The teams are represented by the name of this brothers  **RED **(Reliable Excavation & Demolition) and **BLU**(Builders League United). You can play by choosing one of the available nine characters with his special abilities and weakness.
### Team Fortress 2 Game Modes
### Capture the flag
The objective in this mode is to obtain a briefcase of intelligence and return to your base while preventing the other team from doing the same. The player carrying the case can drop it at his own will or when is killed. By doing so it starts a two minutes timer that returns the briefcase to its place if the opposing team dont get it in time.
The winning is defined by highest score and when time runs out.
[
![team fortress 2 capture flag](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_2.jpg?779)
][12]
### Special Delivery
On this mode, only one briefcase is available and the teams have to fight to deliver the briefcase on some location. Only member of the team with the briefcase can carry it until either it successfully delivered, or the drop timer expires and the briefcase is returned to its start spawn point.
[
![team fortress special delivery](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-special-delivery_orig.jpg)
][11]
### King of the Hill
The objective is to get control of the single point in the centre of the map. And defend it from the other team for a certain time.
When the match begins the place stays locked until you reach the score points to unlock it and reached and after that its possible for the teams to occupy it. When you occupy it, it starts a countdown where the other team has to re-capture it from your team to stop it and start the countdown for their team. The game ends when the timer for the team that captured the point reaches 00:00.[
![team fortress king of the hill](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2-kill-of-the-hill_orig.jpg)
][10]
### Team Fortress 2 System Requirements
**OS:** Ubuntu 12.04
**Processor:** Dual-core from Intel or AMD at 2.8 GHz
**Memory:** 1 GB RAM
**Graphics:** nVidia GeForce 8600/9600GT, ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310, AMD 12.11), OpenGL 2.1
**Network:** Broadband Internet connection
**Storage:** 15 GB available space
**Sound Card:** OpenAL Compatible Sound Card
**Additional Notes:** Mouse, Keyboard
### **[4\. Metro 2033 redux][9]** 
**_Metro 2033 Redux _**is a first-person shooter video game developed by 4A Games and published by THQ. The game story is played by Artyom in the ruins of a nuclear war in Moscow, a man who must defeat evil mutant race called the dark ones.
[
![metro 2033 redux](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/metro-2033-redux_orig.jpg)
][8]The enemies of this game can also be humans and sometimes to avoid being caught easily is better to use stealth to avoid enemies and silent kills.
Metro has received a favorable critics with 6.9/10 from IGN.
### Metro 2033 Gameplay
Most part of the game is played within the Moscow Metro System with a few missions on the surface where it was devastated by a nuclear weapon. It is a single player campaign game with important plot moments shown in cutscenes.
The game features traditional guns (revolver, shotguns). For ammunition, the user must scavenge for it or search dead bodies.
There are two types of enemies, humans and mutants, while humans can take cover when attacking the mutants stay in the open trying to bite them.
For playing in the tunnels with almost no light the player need a lantern for being able to see the way and because there are some missions on the surface he needs a gas mask also that can get damaged when in combat forcing the player to find a new one.
### Metro 2033 Requirements
**Minimal**
**OS:** 64-bit Ubuntu 12.04 or 14.04 or Steam OS
**Processor:** Intel Core i5 2.7 GHz (or equivalent AMD)
**Memory:** 4 GB RAM
**Graphics:** NVIDIA Geforce 460 / AMD 5850 with 2GB VRAM
**Storage:** 10 GB available space
**Additional Notes:** Due to OpenGL 4, Intel video cards no longer supported
**
Recommended**
**OS:** 64-bit Ubuntu 12.04 or 14.04 or Steam OS
**Processor:** Intel Core i7 2.5 Ghz (or equivalent AMD)
**Memory:** 8 GB RAM
**Graphics:** NVIDIA Geforce 680 / AMD 7870 with 2GB VRAM+
**Storage:** 10 GB available space
**Additional Notes:** Due to OpenGL 4, Intel video cards no longer supported
### **[5\. Left 4 Dead 2 (L4D2)][7]** 
Is a cooperative first-person shooter video game developed and published by Valve Corporation. The game was released for Linux in July 2013.
[
![left 4 dead 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead.jpg?731)
][6]This focuses on four survivors fighting against zombies, knowns as infected, who develop severe psychosis and act extremely aggressive. The game is monitored by the AI Director that monitors the player and adjust the game scenario for a more challenging gameplay.
### Left 4 Dead 2 Gameplay
The game presents five campaign composed of three to five smaller levels, each campaign is presented in menus and loading screens as a film starring the four survivors.
[
![left 4 dead 2](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead-2-gameplay.jpg?779)
][5]For the players to know each of his/her teammates status the players are shown each ones health status and when must be cautious about friend fire and swing weapons near teammates.
### Game Modes
Left for Dead 2 includes 5 possible game modes:
### Campaign
Up to four human teammates have to make their way through campaign stages. Other survivors encountered during the game are controlled by CPU.
### Singleplayer
The difference with campaign mode is that your teammates are controlled by CPU.
### Versus
Up to four human players control four special infected to prevent survivors from completing the stage. The two teams swap sides once per stage and are scored based on their stage progress as Survivors.
### Survival
Survivors are trapped in a section of the campaign maps and must try to survive as long as possible.
### Scavenge
A new 4-on-4 mode that requires the Survivor players to collect and use as many fuel cans scattered about a level to fill up a power generator, while the Infected players attempt to stop them.
### System Requirements For Left for Dead 2
**OS:** Ubuntu 12.04
**Processor:** Dual-core from Intel or AMD at 2.8 GHz
**Memory:** 2 GB RAM
**Graphics:** nVidia GeForce 8600/9600GT, ATI/AMD Radeon HD2600/3600 (Graphic Drivers: nVidia 310, AMD 12.11), OpenGL 2.1
**Storage:** 13 GB available space
**Sound Card:** OpenAL Compatible Sound Card
### Conclusion
Linux during all these years is being noticed by game industries and to make it less excluded from the gaming world. To be a **Linux** user is not like before anymore, like other OSes uses to say “Linux is just for programmers on anything related”.
Today you dont need a dual boot to play games, the options still limited but growing everyday. What is your preferred on the list? Leave your opinion in the comment section below. |
--------------------------------------------------------------------------------
via: http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux
作者:[Mohd Sohail][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.linuxandubuntu.com/contact-us.html
[1]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/salvador_orig.jpg?375
[2]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/maya_orig.jpg?381
[3]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/zero_orig.jpg
[4]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/axton_orig.jpg
[5]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead-2-gameplay_orig.jpg?779
[6]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/left-4-dead_orig.jpg?731
[7]:http://store.steampowered.com/app/550/
[8]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/metro-2033-redux_orig.jpg
[9]:http://store.steampowered.com/app/286690/
[10]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2-kill-of-the-hill_orig.jpg
[11]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-special-delivery_orig.jpg
[12]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_2_orig.jpg?779
[13]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/team-fortress-2_1_orig.jpg?744
[14]:http://store.steampowered.com/app/440/
[15]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/borderlands-2_1_orig.jpg?588
[16]:http://store.steampowered.com/app/49520/
[17]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike-classic-competitive_orig.jpg?654
[18]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/counter-strike_orig.jpg?628
[19]:http://store.steampowered.com/app/730/
[20]:http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux
[21]:http://www.valvesoftware.com/
[22]:http://store.steampowered.com/app/70/?
[23]:http://www.linuxandubuntu.com/home/category/games
[24]:http://www.theverge.com/2016/9/15/12926288/microsoft-really-does-love-linux
[25]:http://linux.com/
[26]:https://www.winehq.org/
[27]:http://www.linuxandubuntu.com/home/category/games
[28]:http://www.linuxandubuntu.com/home/5-best-fps-games-for-linux

View File

@ -105,7 +105,7 @@ via: https://fedoramagazine.org/inkscape-design-imagination/
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://a2batic.id.fedoraproject.org/
[1]:https://1504253206.rsc.cdn77.org/wp-content/uploads/2016/10/back1.png

View File

@ -0,0 +1,84 @@
How to Install Security Updates Automatically on Debian and Ubuntu
============================================================
It has been said before -and I couldnt agree more- that some of the best system administrators are those who seem (note the use of the word seem here) to be lazy all the time.
While that may sound somewhat paradoxical, I bet it must be true in most cases not because they are not doing the job they are supposed to be doing, but rather because they have automated most of it.
One of the critical needs of a Linux system is to be kept up to date with the latest security patches available for the corresponding distribution.
In this article we will explain how to set up your Debian and Ubuntu system to auto install (or update) essential security packages or patches automatically when needed.
Other Linux distributions such as [CentOS/RHEL configured to install security updates automatically][1].
Needless to say, you will need superuser privileges in order to perform the tasks outlined in this article.
### Configure Automatic Security Updates On Debian/Ubuntu
To begin, install the following packages:
```
# aptitude update -y && aptitude install unattended-upgrades apt-listchanges -y
```
where apt-listchanges will report what has been changed during an upgrade.
Next, open /etc/apt/apt.conf.d/50unattended-upgrades with your preferred text editor and add this line inside the Unattended-Upgrade::Origins-Pattern block:
```
Unattended-Upgrade::Mail "root";
```
Finally, use the following command to create and populated the required configuration file (/etc/apt/apt.conf.d/20auto-upgrades) to activate the unattended updates:
```
# dpkg-reconfigure -plow unattended-upgrades
```
Choose `Yes` when prompted to install unattended upgrades:
[
![Configure Unattended Security Updates on Debian](http://www.tecmint.com/wp-content/uploads/2016/11/Configure-Unattended-Security-Updates-on-Debian.png)
][2]
Configure Unattended Security Updates on Debian
then check that the following two lines have been added to /etc/apt/apt.conf.d/20auto-upgrades:
```
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
```
And add this line to make reports verbose:
```
APT::Periodic::Verbose "2";
```
Last, inspect /etc/apt/listchanges.conf to make sure notifications will be sent to root.
[
![Notify Security Updates on Debian](http://www.tecmint.com/wp-content/uploads/2016/11/Notify-Security-Updates-on-Debian.png)
][3]
Notify Security Updates on Debian
In this post we have explained how to make sure your system is updated regularly with the latest security patches. Additionally, you learned how to set up notifications in order to keep yourself informed when patches are applied.
Do you have any questions about this article? Feel free to drop us a note using the comment form below. We look forward to hearing from you.
--------------------------------------------------------------------------------
via: http://www.tecmint.com/auto-install-security-updates-on-debian-and-ubuntu
作者:[Gabriel Cánepa][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/gacanepa/
[1]:http://www.tecmint.com/auto-install-security-patches-updates-on-centos-rhel/
[2]:http://www.tecmint.com/wp-content/uploads/2016/11/Configure-Unattended-Security-Updates-on-Debian.png
[3]:http://www.tecmint.com/wp-content/uploads/2016/11/Notify-Security-Updates-on-Debian.png

View File

@ -87,7 +87,7 @@ via: https://itsfoss.com/cloud-focused-linux-distros/
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 组织翻译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://itsfoss.com/author/aquil/
[1]:https://itsfoss.com/author/aquil/

View File

@ -1,182 +0,0 @@
# 4 Ways to Batch Convert Your PNG to JPG and Vice-Versa
In computing, Batch processing is the [execution of a series of tasks][11] in a program non-interactively. In this guide will offer you 4 simple ways to batch convert several `.PNG` images to `.JPG` and vice-versa using Linux command-line tools.
We will use convert command line tool in all the examples, however, you can as well make use of mogrify to achieve this.
The syntax for using convert is:
```
$ convert input-option input-file output-option output-file
```
And for mogrify is:
```
$ mogrify options input-file
```
Note: With mogrify, the original image file is replaced with the new image file by default, but it is possible to prevent this, by using certain options that you can find in the man page.
Below are the various ways to batch convert your all `.PNG` images to `.JPG` format, if you want to convert `.JPG`to `.PNG`, you can modify the commands according to your needs.
### 1\. Convert PNG to JPG Using ls and xargs Commands
The [ls command][10] allows you to list all your png images and xargs make it possible to build and execute a convert command from standard input to convert all `.png` images to `.jpg`.
```
----------- Convert PNG to JPG -----------
$ ls -1 *.png | xargs -n 1 bash -c 'convert "$0" "${0%.png}.jpg"'
----------- Convert JPG to PNG -----------
$ ls -1 *.jpg | xargs -n 1 bash -c 'convert "$0" "${0%.jpg}.png"'
```
Explanation about the options used in the above command.
1. `-1`  flag tells ls to list one image per line.
2. `-n`  specifies the maximum number of arguments, which is 1 for the case.
3. `-c`  instructs bash to run the given command.
4. `${0%.png}.jpg`  sets the name of the new converted image, the % sign helps to remove the old file extension.
[
![Convert PNG to JPG Format in Linux](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-in-Linux.png)
][9]
Convert PNG to JPG Format in Linux
I used `ls -ltr` command to [list all files by modified date and time][8].
Similarly, you can use above command to convert all your `.jpg` images to `.png` by tweaking the above command.
### 2\. Convert PNG to JPG Using GNU Parallel Command
GNU Parallel enables a user to build and execute shell commands from standard input in parallel. Make sure you have GNU Parallel installed on your system, otherwise install it using the appropriate commands below:
```
$ sudo apt-get install parallel [On Debian/Ubuntu systems]
$ sudo yum install parallel [On RHEL/CentOS and Fedora]
```
Once Parallel utility installed, you can run the following command to convert all `.png` images to `.jpg` format from the standard input.
```
----------- Convert PNG to JPG -----------
$ parallel convert '{}' '{.}.jpg' ::: *.png
----------- Convert JPG to PNG -----------
$ parallel convert '{}' '{.}.png' ::: *.jpg
```
Where,
1. `{}`  input line which is a replacement string substituted by a complete line read from the input source.
2. `{.}`  input line minus extension.
3. `:::`  specifies input source, that is the command line for the example above where *png or *jpg is the argument.
[
![Parallel Command - Converts All PNG Images to JPG Format](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-Parallel-Command.png)
][7]
Parallel Command Converts All PNG Images to JPG Format
Alternatively, you can as well use [ls][6] and parallel commands together to batch convert all your images as shown:
```
----------- Convert PNG to JPG -----------
$ ls -1 *.png | parallel convert '{}' '{.}.jpg'
----------- Convert JPG to PNG -----------
$ ls -1 *.jpg | parallel convert '{}' '{.}.png'
```
### 3\. Convert PNG to JPG Using for loop Command
To avoid the hustle of writing a shell script, you can execute a `for loop` from the command line as follows:
```
----------- Convert PNG to JPG -----------
$ bash -c 'for image in *.png; do convert "$image" "${image%.png}.jpg"; echo “image $image converted to ${image%.png}.jpg ”; done'
----------- Convert JPG to PNG -----------
$ bash -c 'for image in *.jpg; do convert "$image" "${image%.jpg}.png"; echo “image $image converted to ${image%.jpg}.png ”; done'
```
Description of each option used in the above command:
1. -c allows for execution of the for loop statement in single quotes.
2. The image variable is a counter for number of images in the directory.
3. For each conversion operation, the [echo command][1] informs the user that a png image has been converted to jpg format and vice-versa in the line $image converted to ${image%.png}.jpg”.
4. “${image%.png}.jpg” creates the name of the converted image, where % removes the extension of the old image format.
[
![for loop - Convert PNG to JPG Format](http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-for-loop-Command.png)
][5]
for loop Convert PNG to JPG Format
### 4\. Convert PNG to JPG Using Shell Script
If you do not want to make your command line dirty as in the previous example, write a small script like so:
Note: Appropriately interchange the `.png` and `.jpg` extensions as in the example below for conversion from one format to another.
```
#!/bin/bash
#convert
for image in *.png; do
convert "$image" "${image%.png}.jpg"
echo “image $image converted to ${image%.png}.jpg ”
done
exit 0
```
Save it as `convert.sh` and make the script executable and then run it from within the directory that has your images.
```
$ chmod +x convert.sh
$ ./convert.sh
```
[
![Batch Image Convert Using Shell Script](http://www.tecmint.com/wp-content/uploads/2016/11/Batch-Image-Convert-Using-Shell-Script.png)
][4]
Batch Image Convert Using Shell Script
In summary, we covered some important ways to batch convert `.png` images to `.jpg` format and vice-versa. If you want to optimize images, you can go through our guide that shows [how to compress png and jpg images in Linux][3].
You can as well share with us any other methods including [Linux command line tools][2] for converting images from one format to another on the terminal, or ask a question via the comment section below.
--------------------------------------------------------------------------------
via: http://www.tecmint.com/linux-image-conversion-tools/
作者:[Aaron Kili][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.tecmint.com/author/aaronkili/
[1]:http://www.tecmint.com/echo-command-in-linux/
[2]:http://www.tecmint.com/tag/linux-tricks/
[3]:http://www.tecmint.com/optimize-and-compress-jpeg-or-png-batch-images-linux-commandline/
[4]:http://www.tecmint.com/wp-content/uploads/2016/11/Batch-Image-Convert-Using-Shell-Script.png
[5]:http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-for-loop-Command.png
[6]:http://www.tecmint.com/tag/linux-ls-command/
[7]:http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-Using-Parallel-Command.png
[8]:http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time/
[9]:http://www.tecmint.com/wp-content/uploads/2016/11/Convert-PNG-to-JPG-in-Linux.png
[10]:http://www.tecmint.com/tag/linux-ls-command/
[11]:http://www.tecmint.com/using-shell-script-to-automate-linux-system-maintenance-tasks/

View File

@ -1,107 +0,0 @@
translating by chenzhijun
How To Update Wifi Network Password From Terminal In Arch Linux
============================================================
![Update Wifi Network Password From Terminal In Arch Linux](https://www.ostechnix.com/wp-content/plugins/lazy-load/images/1x1.trans.gif)
After changing the Wifi Network password in my Router, My Arch Linux test machine lost the Internet connection. So I wanted to update the new password from Terminal because my Arch Linux test box doesnt have graphical desktop environment. Changing old wifi password to new password is pretty easy in GUI mode. I will simply open the network manager and update the new password to the wifi in few seconds. However, I am not aware of updating the wifi network password from command line in Arch Linux. So, I started to dig into Google and find a perfect solution from the Arch Linux forum. In case you ever been in the same situation, read on. Its not that difficult.
### Update Wifi Network Password From Terminal
After changing the password in Router, I ran _wifi-menu_ command to update the new password. But It kept throwing the following error.
```
sudo wifi-menu
```
It displayed the list of available wifi networks.
[
![sksk_001](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_001-1.png)
][2]
My wifi network name is Murugs9376. Then, I selected my network and hit OK button. Instead of asking the new password (I thought it was going to ask me if the password has been changed.), It showed the following error.
```
Interface 'wlp9s0' is controlled by netctl-auto
WPA association/authentication failed for interface 'wlp9s0'
```
[
![sksk_002](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_002-1.png)
][3]
I dont have much experience in Arch based distributions. So I went thorough the Arch linux forum hoping for the solution. Thankfully, someone has posted the same problem and got the workaround from one of the fellow Arch user. Following is the solution to update the wifi network password from Terminal in Arch based distributions.
The network profiles is stored in the /etc/netctl/ folder. For example, here is my Arch Linux test box wifi network profile details.
```
ls /etc/netctl/
Sample Output:
examples ostechnix 'wlp9s0-Chendhan Cell Service' wlp9s0-Pratheesh
hooks wlp9s0 wlp9s0-Murugu9376
interfaces wlp9s0-AndroidAP wlp9s0-none
```
[
![sksk_003](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_003-1.png)
][4]
All I need to update the new password is to delete the my wifi network profile (Ex. wlp9s0-Murugs9376) and re-run the _wifi-menu_ command to new password.
So, first let us delete the wifi profile using command:
```
sudo rm /etc/netctl/wlp9s0-Murugu9376
```
After deleting the profile, run wifi-menu command to update the new password.
```
sudo wifi-menu
```
Select the wifi-network and press ENTER.
[
![sksk_004](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_004-1.png)
][5]
Enter a name for the profile.
[
![sksk_005](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_005-1.png)
][6]
Finally, Enter the security key to the network profile and hit ENTER key.
[
![sksk_006](http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_006-1.png)
][7]
Thats it. Now, we have updated the password to the wifi network. As you can see, updating password from Terminal in Arch Linux is no big deal. Anyone could do it in a matter of seconds.
If you find this guide useful, please share it on your social networks and support us.
Cheers!
--------------------------------------------------------------------------------
via: https://www.ostechnix.com/update-wifi-network-password-terminal-arch-linux/
作者:[ SK][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.ostechnix.com/author/sk/
[1]:http://ostechnix.tradepub.com/free/w_pacb38/prgm.cgi?a=1
[2]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_001-1.png
[3]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_002-1.png
[4]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_003-1.png
[5]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_004-1.png
[6]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_005-1.png
[7]:http://www.ostechnix.com/wp-content/uploads/2016/11/sk@sk_006-1.png

Some files were not shown because too many files have changed in this diff Show More