Merge pull request #7 from LCTT/master

更新
This commit is contained in:
Lv Feng 2016-11-26 15:08:31 +08:00 committed by GitHub
commit 9ba15aaf75
27 changed files with 1100 additions and 1230 deletions

View File

@ -1,27 +1,27 @@
# aria2 (命令行下载器)命令行实例
aria2 (命令行下载器)实例
============
[aria2][4] 是一个免费的、开源的、轻量级多协议和多源命令行下载工具。它支持 HTTP/HTTPS、 FTP、 SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候,自动验证数据块。它可以通过多源或者多协议下载一个文件,并且尝试利用你的最大下载带宽。默认情况下,所有的 Linux 发行版都包括 aria2所以我们可以从官方库中很容易的安装。一些 GUI 下载管理器例如 [uget][3] 使用 aria2作为一个插件来提高下载速度。
[aria2][4] 是一个自由、开源、轻量级多协议和多源的命令行下载工具。它支持 HTTP/HTTPS、FTP、SFTP、 BitTorrent 和 Metalink 协议。aria2 可以通过内建的 JSON-RPC 和 XML-RPC 接口来操纵。aria2 下载文件的时候,自动验证数据块。它可以通过多个来源或者多协议下载一个文件,并且尝试利用你的最大下载带宽。默认情况下,所有的 Linux 发行版都包括 aria2所以我们可以从官方库中很容易的安装。一些 GUI 下载管理器例如 [uget][3] 使用 aria2 作为插件来提高下载速度。
### Aria2 特性
#### Aria2 特性
* HTTP/HTTPS GET 支持
* HTTP 代理支持
* HTTP BASIC 认证支持
* HTTP 代理认证支持
* FTP 支持(主动、被动模式)
* 支持 HTTP/HTTPS GET
* 支持 HTTP 代理
* 支持 HTTP BASIC 认证
* 支持 HTTP 代理认证
* 支持 FTP (主动、被动模式)
* 通过 HTTP 代理的 FTPGET 命令行或者隧道)
* 分段下载
* Cookie 支持
* 支持 Cookie
* 可以作为守护进程运行。
* 使用 快速扩展的 BitTorrent 协议支持
* 在多 torrent 文件下选择性下载
* Metalink 3.0 版本支持HTTP/FTP/BitTorrent
* 支持使用 fast 扩展的 BitTorrent 协议
* 支持在多文件 torrent 中选择文件
* 支持 Metalink 3.0 版本HTTP/FTP/BitTorrent
* 限制下载、上传速度
#### 1) Linux 下安装 aria2
### 1) Linux 下安装 aria2
我们可以很容易的在所有的 Linux 发行版 上安装 aria2 命令行下载器,例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要输入下面的命令安装即可。对于 CentOS、 RHEL 系统,我们需要开启 [uget][2] 或者 [RPMForge][1] 库的支持。
我们可以很容易的在所有的 Linux 发行版上安装 aria2 命令行下载器,例如 Debian、 Ubuntu、 Mint、 RHEL、 CentOS、 Fedora、 suse、 openSUSE、 Arch Linux、 Manjaro、 Mageia 等等……只需要输入下面的命令安装即可。对于 CentOS、 RHEL 系统,我们需要开启 [uget][2] 或者 [RPMForge][1] 库的支持。
```
[对于 Debian、 Ubuntu 和 Mint]
@ -44,7 +44,7 @@ $ sudo pacman -S aria2
```
#### 2) 下载单个文件
### 2) 下载单个文件
下面的命令将会从指定的 URL 中下载一个文件,并且保存在当前目录,在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)。
@ -63,9 +63,9 @@ Status Legend:
```
#### 3) 使用不同的名字保存文件
### 3) 使用不同的名字保存文件
在初始化下载的时候,我们可以使用 -o小写选项在保存文件的时候使用不同的名字。这儿我们将要使用 owncloud.zip 文件名来保存文件。
在初始化下载的时候,我们可以使用 `-o`(小写)选项在保存文件的时候使用不同的名字。这儿我们将要使用 owncloud.zip 文件名来保存文件。
```
# aria2c -o owncloud.zip https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
@ -82,9 +82,9 @@ Status Legend:
```
#### 4) 下载速度限制
### 4) 下载速度限制
默认情况下aria2 利用全带宽限制文件,在文件下载完成之前,我们不可以在服务器上使用任何东西(这将会影响其他服务访问带宽)。所以在下载大文件时最好使用 max-download-limit 选项来避免进一步的问题。
默认情况下aria2 会利用全部带宽来下载文件,在文件下载完成之前,我们在服务器就什么也做不了(这将会影响其他服务访问带宽)。所以在下载大文件时最好使用 `max-download-limit` 选项来避免进一步的问题。
```
# aria2c --max-download-limit=500k https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
@ -101,9 +101,9 @@ Status Legend:
```
#### 5) 下载多个文件
### 5) 下载多个文件
下面的命令将会从指定位置下载不止一个文件并保持到当前目录,在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)。
下面的命令将会从指定位置下载超过一个的文件并保存到当前目录,在下载文件的过程中,我们可以看到文件的(日期、时间、下载速度和下载进度)。
```
# aria2c -Z https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2 ftp://ftp.gnu.org/gnu/wget/wget-1.17.tar.gz
@ -123,9 +123,9 @@ Status Legend:
```
#### 6) 恢复不完整下载
### 6) 续传未完成的下载
当你遇到一些网络连接问题或者系统问题的时候,并将要下载一个大文件(例如: ISO 镜像文件),我建议你使用 -c 选项,他可以通过状态帮助我们恢复已经存在的未完成的下载,并且像往常一样完成。不然的话,当你再次下载,它将会初始化新的下载,并保存成一个不同的文件名(自动的在文件名后面添加 .1 )。注意:如果任意打断发生aria2 使用 .aria2 后缀保存文件。
当你遇到一些网络连接问题或者系统问题的时候,并将要下载一个大文件(例如: ISO 镜像文件),我建议你使用 `-c` 选项,它可以帮助我们从该状态续传未完成的下载,并且像往常一样完成。不然的话,当你再次下载,它将会初始化新的下载,并保存成一个不同的文件名(自动的在文件名后面添加 .1 )。注意:如果出现了任何中断aria2 使用 .aria2 后缀保存(未完成的)文件。
```
# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
@ -142,7 +142,7 @@ db0b08|INPR| 3.3MiB/s|/opt/owncloud-9.0.0.tar.bz2
Status Legend:
(INPR):download in-progress.
如果重新启动传输aria2 将会恢复下载
如果重新启动传输aria2 将会恢复下载
# aria2c -c https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
[#873d08 21MiB/21MiB(98%) CN:1 DL:2.7MiB]
@ -158,9 +158,9 @@ Status Legend:
```
#### 7) 从文件获取输入
### 7) 从文件获取输入
或许 wget 可以从一个文件获取输入的 URL 列表来下载。我们需要创建一个文件,将每一个 URL 存储在单独的行中。ara2 命令行可以添加 -i 选项来执行此操作。
就像 wget 可以从一个文件获取输入的 URL 列表来下载一样。我们需要创建一个文件,将每一个 URL 存储在单独的行中。ara2 命令行可以添加 `-i` 选项来执行此操作。
```
# aria2c -i test-aria2.txt
@ -180,9 +180,9 @@ Status Legend:
```
#### 8) 每个主机使用两个连接来下载
### 8) 每个主机使用两个连接来下载
默认情况,每次下载连接到一台服务器的最大数目,对于一条主机只能建立一条。我们可以通过 aria2 命令行添加 -x22 表示两个连接)来创建到每台主机多于一个连接,以加快下载速度。
默认情况,每次下载连接到一台服务器的最大数目,对于一条主机只能建立一条。我们可以通过 aria2 命令行添加 `-x2`2 表示两个连接)来创建到每台主机多个连接,以加快下载速度。
```
# aria2c -x2 https://download.owncloud.org/community/owncloud-9.0.0.tar.bz2
@ -199,9 +199,9 @@ Status Legend:
```
#### 9) 下载种子文件
### 9) 下载 BitTorrent 种子文件
我们可以使用 aria2 命令行直接下载一个种子文件
我们可以使用 aria2 命令行直接下载一个 BitTorrent 种子文件
```
# aria2c https://torcache.net/torrent/C86F4E743253E0EBF3090CCFFCC9B56FA38451A3.torrent?title=[kat.cr]irudhi.suttru.2015.official.teaser.full.hd.1080p.pathi.team.sr
@ -221,25 +221,25 @@ Status Legend:
```
#### 10) 下载 Bit 种子磁力链接
### 10) 下载 BitTorrent 磁力链接
使用 aria2 我们也可以通过 bit 磁力链接直接下载一个种子文件
使用 aria2 我们也可以通过 BitTorrent 磁力链接直接下载一个种子文件:
```
# aria2c 'magnet:?xt=urn:btih:248D0A1CD08284299DE78D5C1ED359BB46717D8C'
```
#### 11) 下载 Metalink Bit 种子
### 11) 下载 BitTorrent Metalink 种子
我们也可以通过 aria2 命令行直接下载一个 Metalink 文件。
我们也可以通过 aria2 命令行直接下载一个 Metalink 文件。
```
# aria2c https://curl.haxx.se/metalink.cgi?curl=tar.bz2
```
#### 12) 从密码保护的网站下载一个文件
### 12) 从密码保护的网站下载一个文件
或者,我们也可以从一个密码保护网站下载一个文件。下面的命令行将会从一个密码保护网站中下载文件。
@ -250,7 +250,7 @@ Status Legend:
```
#### 13) 阅读更多关于 aria2
### 13) 阅读更多关于 aria2
如果你希望了解了解更多选项 —— 它们同时适用于 wget可以输入下面的命令行在你自己的终端获取详细信息
@ -268,10 +268,8 @@ or
via: http://www.2daygeek.com/aria2-command-line-download-utility-tool/
作者:[MAGESH MARUTHAMUTHU][a]
译者:[yangmingming](https://github.com/yangmingming)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,7 +1,8 @@
谁需要 GUI——Linux 终端生存之道
谁需要 GUI—— Linux 终端生存之道
=================================================
完全在 Linux 终端中生存并不容易,但这绝对是可行的。
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-1-100669790-orig.jpg)
### 处理常见功能的最佳 Linux shell 应用
@ -18,7 +19,7 @@
### 在 Linux 终端里浏览网页
我有一个词要告诉你:[w3m][5]。好吧,我承认这并不是一个真实的词。但 w3m 的确是我在 Linux 终端的 web 浏览器选择。它能够很好的呈现网页,并且它也足够强大,可以用来在像 Google+ 之类的网站上发布消息(尽管方法并不有趣)。 Lynx 可能是事实上的基于文本的 Web 浏览器,但 w3m 还是我的最爱。
我有一个词要告诉你:[w3m][5]。好吧,我承认这并不是一个真实的词。但 w3m 的确是我在 Linux 终端的 web 浏览器选择。它能够很好的呈现网页,并且它也足够强大,可以用来在像 Google+ 之类的网站上发布消息(尽管方法并不有趣)。 Lynx 可能是基于文本的 Web 浏览器的事实标准,但 w3m 还是我的最爱。
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-4-100669838-orig.jpg)
@ -30,7 +31,7 @@
### 在 Linux 终端里处理文字
在一个只有文本的 shell 之中,“文本编辑器” 和 “文字处理程序” 实在没有什么大的区别。但是像我这样需要大量写作的,有一个专门用于长期写作的软件是非常必要的。而我最爱的就是 wordgrinder。它由足够的工具让我愉快工作——一个菜单驱动的界面使用快捷键控制并且支持OpenDocument、HTML或其他等多种文件格式。
在一个只有文本的 shell 之中,“文本编辑器” 和 “文字处理程序” 实在没有什么大的区别。但是像我这样需要大量写作的,有一个专门用于长期写作的软件是非常必要的。而我最爱的就是 wordgrinder。它由足够的工具让我愉快工作——一个菜单驱动的界面使用快捷键控制并且支持 OpenDocument、HTML 或其他等多种文件格式。
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-6-100669795-orig.jpg)
@ -41,14 +42,14 @@
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-7-100669796-orig.jpg)
### 在 Linux 终端里发送即时消息
When I realized how will I could instant message from the terminal, my head exploded. You know Pidgin, the multi-protocol IM client? Well, it has a version for the terminal, called “finch,” that allows you to connect to multiple networks and chat with multiple people at once. The interface is even similar to Pidgin. Just amazing. Use Google Hangouts? Try hangups. It has a nice tabbed interface and works amazingly well. Seriously. Other than needing perhaps some emoji and inline pictures, instant messaging from the shell is a great experience.
当我在想如果可以在终端里发送即时消息会是什么样子的时候,我的思绪瞬间爆发了。你可能知道 Pidgin——一个支持多种协议的 IM 客户端,它也有一个终端版,叫做“[finch][8]”,你可以使用它来同时链接多个网络、同时和几个人聊天。而且,它的界面也和 Pidgin 极为相似。多么令人惊叹啊!想要使用 Google 环聊Google Hangouts就试试 [hangups][9]。它有一个非常漂亮的分页式界面,并且效果非常好。认真来说,除了一些可能需要的 emoji 表情和嵌入式图片外,在终端里发送即时消息真的是一个很好的体验。
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-8-100669797-orig.jpg)
### 在 Linux 终端里发布推文
这不是开玩笑!由于 [rainbowstream][10] 的存在我们已经可以在终端里发布推文了。尽管我时不时遇到一些bug但整体上它工作得很好。虽然没有网页版 Twitter 或官方移动客户端那么好用但这是一个终端版的Twitter来试一试吧。尽管它的功能还未完善但是用起来还是很酷不是吗
这不是开玩笑!由于 [rainbowstream][10] 的存在,我们已经可以在终端里发布推文了。尽管我时不时遇到一些 bug但整体上它工作得很好。虽然没有网页版 Twitter 或官方移动客户端那么好用,但这是一个终端版的 Twitter来试一试吧。尽管它的功能还未完善但是用起来还是很酷不是吗
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-9-100669798-orig.jpg)
@ -60,13 +61,13 @@ When I realized how will I could instant message from the terminal, my head expl
### 在 Linux 终端里管理进程
可以使用 [htop][12]。与 top 相似,但更好用、更美观。有时候,我打开 htop 之后就让它一直运行。没有愿意,就是喜欢!从某方面说,它就像将音乐可视化——当然,这里显示的是 RAM 和 CPU 的使用情况。
可以使用 [htop][12]。与 top 相似,但更好用、更美观。有时候,我打开 htop 之后就让它一直运行。没有原因,就是喜欢!从某方面说,它就像将音乐可视化——当然,这里显示的是 RAM 和 CPU 的使用情况。
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-11-100669800-orig.png)
### 在 Linux 终端里管理文件
在一个纯文本终端里并不意味着你不能享受生活的美好之物。比方说一个出色的文件浏览和管理器。这方面,[Midnight Commander][13] 是很好用的。
在一个纯文本终端里并不意味着你不能享受生活之美好。比方说一个出色的文件浏览和管理器。这方面,[Midnight Commander][13] 是很好用的。
![](http://core0.staticworld.net/images/article/2016/07/linux-terminal-12-100669801-orig.png)
@ -78,7 +79,7 @@ When I realized how will I could instant message from the terminal, my head expl
### 在 Linux 终端里进行讲稿演示
这类软件有 LibreOffice、Google slides、gasp 或者 PowerPoint。我在讲稿演示软件花费很多时间很高兴有一个终端版的软件。它称做“[文本演示程序][16]”。很显然,没有图片,只是一个使用简单标记语言将放在一起的幻灯片展示出来的简单程序。它不可能让你在其中插入猫的图片,但可以让你在终端里进行完整的演示。
这类软件有 LibreOffice、Google slides、gasp 或者 PowerPoint。我在讲稿演示软件花费很多时间很高兴有一个终端版的软件。它称做“[文本演示程序tpp][16]”。很显然,没有图片,只是一个使用简单标记语言将放在一起的幻灯片展示出来的简单程序。它不可能让你在其中插入猫的图片,但可以让你在终端里进行完整的演示。
--------------------------------------------------------------------------------

View File

@ -0,0 +1,188 @@
写一个 JavaScript 框架:比 setTimeout 更棒的定时执行
===================
这是 [JavaScript 框架系列][2]的第二章。在这一章里,我打算讲一下在浏览器里的异步代码不同执行方式。你将了解定时器和事件循环之间的不同差异,比如 setTimeout 和 Promises。
这个系列是关于一个开源的客户端框架,叫做 NX。在这个系列里我主要解释一下写该框架不得不克服的主要困难。如果你对 NX 感兴趣可以参观我们的 [主页][1]。
这个系列包含以下几个章节:
1. [项目结构][2]
2. 定时执行 (当前章节)
3. [沙箱代码评估][3]
4. [数据绑定介绍](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-dirty-checking/)
5. [数据绑定与 ES6 代理](https://blog.risingstack.com/writing-a-javascript-framework-data-binding-es6-proxy/)
6. 自定义元素
7. 客户端路由
### 异步代码执行
你可能比较熟悉 `Promise`、`process.nextTick()`、`setTimeout()`,或许还有 `requestAnimationFrame()` 这些异步执行代码的方式。它们内部都使用了事件循环,但是它们在精确计时方面有一些不同。
在这一章里,我将解释它们之间的不同,然后给大家演示怎样在一个类似 NX 这样的先进框架里面实现一个定时系统。不用我们重新做一个,我们将使用原生的事件循环来达到我们的目的。
### 事件循环
事件循环甚至没有在 [ES6 规范](http://www.ecma-international.org/ecma-262/6.0/)里提到。JavaScript 自身只有任务Job和任务队列job queue。更加复杂的事件循环是在 NodeJS 和 HTML5 规范里分别定义的,因为这篇是针对前端的,我会在详细说明后者。
事件循环可以被看做某个条件的循环。它不停的寻找新的任务来运行。这个循环中的一次迭代叫做一个滴答tick。在一次滴答期间执行的代码称为一次任务task
```
while (eventLoop.waitForTask()) {
eventLoop.processNextTask()
}
```
任务是同步代码,它可以在循环中调度其它任务。一个简单的调用新任务的方式是 `setTimeout(taskFn)`。不管怎样, 任务可能有很多来源,比如用户事件、网络或者 DOM 操作。
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_event_lopp_with_tasks-1470127590983.svg)
### 任务队列
更复杂一些的是,事件循环可以有多个任务队列。这里有两个约束条件,相同任务源的事件必须在相同的队列,以及任务必须按插入的顺序进行处理。除此之外,浏览器可以做任何它想做的事情。例如,它可以决定接下来处理哪个任务队列。
```
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
}
```
用这个模型,我们不能精确的控制定时。如果用 `setTimeout()`浏览器可能决定先运行完其它几个队列才运行我们的队列。
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_event_loop_with_task_queues-1470127624172.svg)
### 微任务队列
幸运的是事件循环还提供了一个叫做微任务microtask队列的单一队列。当前任务结束的时候微任务队列会清空每个滴答里的任务。
```
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
const microtaskQueue = eventLoop.microTaskQueue
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask()
}
}
```
最简单的调用微任务的方法是 `Promise.resolve().then(microtaskFn)`。微任务按照插入顺序进行处理,并且由于仅存在一个微任务队列,浏览器不会把时间弄乱了。
此外,微任务可以调度新的微任务,它将插入到同一个队列,并在同一个滴答内处理。
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_event_loop_with_microtask_queue-1470127679393.svg)
### 绘制Rendering
最后是绘制Rendering调度不同于事件处理和分解绘制并不是在单独的后台任务完成的。它是一个可以运行在每个循环滴答结束时的算法。
在这里浏览器又有了许多自由:它可能在每个任务以后绘制,但是它也可能在好几百个任务都执行了以后也不绘制。
幸运的是,我们有 `requestAnimationFrame()`,它在下一个绘制之前执行传递的函数。我们最终的事件模型像这样:
```
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
const microtaskQueue = eventLoop.microTaskQueue
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask()
}
if (shouldRender()) {
applyScrollResizeAndCSS()
runAnimationFrames()
render()
}
}
```
现在用我们所知道知识来创建定时系统!
### 利用事件循环
和大多数现代框架一样,[NX][1] 也是基于 DOM 操作和数据绑定的。批量操作和异步执行以取得更好的性能表现。基于以上理由我们用 `Promises``MutationObservers``requestAnimationFrame()`
我们所期望的定时器是这样的:
1. 代码来自于开发者
2. 数据绑定和 DOM 操作由 NX 来执行
3. 开发者定义事件钩子
4. 浏览器进行绘制
#### 步骤 1
NX 寄存器对象基于 [ES6 代理](https://ponyfoo.com/articles/es6-proxies-in-depth) 以及 DOM 变动基于[MutationObserver](https://davidwalsh.name/mutationobserver-api) (变动观测器)同步运行(下一节详细介绍)。 它作为一个微任务延迟直到步骤 2 执行以后才做出反应。这个延迟已经在 `Promise.resolve().then(reaction)` 进行了对象转换,并且它将通过变动观测器自动运行。
#### 步骤 2
来自开发者的代码(任务)运行完成。微任务由 NX 开始执行所注册。 因为它们是微任务,所以按序执行。注意,我们仍然在同一个滴答循环中。
#### 步骤 3
开发者通过 `requestAnimationFrame(hook)` 通知 NX 运行钩子。这可能在滴答循环后发生。重要的是,钩子运行在下一次绘制之前和所有数据操作之后,并且 DOM 和 CSS 改变都已经完成。
#### 步骤 4
浏览器绘制下一个视图。这也有可能发生在滴答循环之后,但是绝对不会发生在一个滴答的步骤 3 之前。
### 牢记在心里的事情
我们在原生的事件循环之上实现了一个简单而有效的定时系统。理论上讲它运行的很好,但是还是很脆弱,一个轻微的错误可能会导致很严重的 BUG。
在一个复杂的系统当中,最重要的就是建立一定的规则并在以后保持它们。在 NX 中有以下规则:
1. 永远不用 `setTimeout(fn, 0)` 来进行内部操作
2. 用相同的方法来注册微任务
3. 微任务仅供内部操作
4. 不要干预开发者钩子运行时间
#### 规则 1 和 2
数据反射和 DOM 操作将按照操作顺序执行。这样只要不混合就可以很好的延迟它们的执行。混合执行会出现莫名其妙的问题。
`setTimeout(fn, 0)` 的行为完全不可预测。使用不同的方法注册微任务也会发生混乱。例如,下面的例子中 microtask2 不会正确地在 microtask1 之前运行。
```
Promise.resolve().then().then(microtask1)
Promise.resolve().then(microtask2)
```
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_microtask_registration_method-1470127727609.svg)
#### 规则 3 和 4
分离开发者的代码执行和内部操作的时间窗口是非常重要的。混合这两种行为会导致不可预测的事情发生,并且它会需要开发者了解框架内部。我想很多前台开发者已经有过类似经历。
### 结论
如果你对 NX 框架感兴趣,可以参观我们的[主页][1]。还可以在 GIT 上找到我们的[源代码][5]。
在下一节我们再见,我们将讨论 [沙盒化代码执行][4]
你也可以给我们留言。
--------------------------------------------------------------------------------
via: https://blog.risingstack.com/writing-a-javascript-framework-execution-timing-beyond-settimeout/
作者:[Bertalan Miklos][a]
译者:[kokialoves](https://github.com/kokialoves)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://blog.risingstack.com/author/bertalan/
[1]: http://nx-framework.com/
[2]: https://blog.risingstack.com/writing-a-javascript-framework-project-structuring/
[3]: https://blog.risingstack.com/writing-a-javascript-framework-sandboxed-code-evaluation/
[4]: https://blog.risingstack.com/writing-a-javascript-framework-sandboxed-code-evaluation/
[5]: https://github.com/RisingStack/nx-framework

View File

@ -0,0 +1,108 @@
如何按最后修改时间对 ls 命令的输出进行排序
============================================================
Linux 用户常常做的一个事情是,是在命令行[列出目录内容][1]。
我们已经知道,[ls][2] 和 [dir][3] 是两个可用在列出目录内容的 Linux 命令,前者是更受欢迎的,在大多数情况下,是用户的首选。
我们列出目录内容时,可以按照不同的标准进行排序,例如文件名、修改时间、添加时间、版本或者文件大小。可以通过指定一个特别的参数来使用这些文件的属性进行排序。
在这个简洁的 [ls 命令指导][4]中,我们将看看如何通过上次修改时间(日期和时分秒)[排序 ls 命令的输出结果][5] 。
让我们由执行一些基本的 [ls 命令][6]开始。
### Linux 基本 ls 命令
1、 不带任何参数运行 ls 命令将列出当前工作目录的内容。
```
$ ls
```
![List Content of Working Directory](http://www.tecmint.com/wp-content/uploads/2016/10/List-Content-of-Working-Directory.png)
*列出工作目录的内容*
2、要列出任何目录的内容例如 /etc 目录使用如下命令:
```
$ ls /etc
```
![List Contents of Directory](http://www.tecmint.com/wp-content/uploads/2016/10/List-Contents-of-Directory.png)
*列出工作目录 /etc 的内容*
3、一个目录总是包含一些隐藏的文件至少有两个因此要展示目录中的所有文件使用`-a`或`-all`标志:
```
$ ls -a
```
![List Hidden Files in Directory](http://www.tecmint.com/wp-content/uploads/2016/10/List-Hidden-Files-in-Directory.png)
*列出工作目录的隐藏文件*
4、你还可以打印输出的每一个文件的详细信息例如文件权限、链接数、所有者名称和组所有者、文件大小、最后修改的时间和文件/目录名称。
这是由` -l `选项来设置,这意味着一个如下面的屏幕截图般的长长的列表格式。
```
$ ls -l
```
![Long List Directory Contents](http://www.tecmint.com/wp-content/uploads/2016/10/ls-Long-List-Format.png)
*长列表目录内容*
### 基于日期和基于时刻排序文件
5、要在目录中列出文件并[对最后修改日期和时间进行排序][11],在下面的命令中使用`-t`选项:
```
$ ls -lt
```
![Sort ls Output by Date and Time](http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-by-Date-and-Time.png)
*按日期和时间排序ls输出内容*
6、如果你想要一个基于日期和时间的逆向排序文件你可以使用`-r`选项来工作,像这样:
```
$ ls -ltr
```
![Sort ls Output Reverse by Date and Time](http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-Reverse-by-Date-and-Time.png)
*按日期和时间排序的逆向输出*
我们将在这里结束,但是,[ls 命令][14]还有更多的使用信息和选项,因此,应该特别注意它或看看其它指南,比如《[每一个用户应该知道 ls 的命令技巧][15]》或《[使用排序命令][16]》。
最后但并非最不重要的,你可以通过以下反馈部分联系我们。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time
作者:[Aaron Kili][a]
译者:[zky001](https://github.com/zky001)
校对:[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/file-and-directory-management-in-linux/
[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/
[3]:http://www.tecmint.com/linux-dir-command-usage-with-examples/
[4]:http://www.tecmint.com/tag/linux-ls-command/
[5]:http://www.tecmint.com/sort-command-linux/
[6]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Content-of-Working-Directory.png
[8]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Contents-of-Directory.png
[9]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Hidden-Files-in-Directory.png
[10]:http://www.tecmint.com/wp-content/uploads/2016/10/ls-Long-List-Format.png
[11]:http://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/
[12]:http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-by-Date-and-Time.png
[13]:http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-Reverse-by-Date-and-Time.png
[14]:http://www.tecmint.com/tag/linux-ls-command/
[15]:http://www.tecmint.com/linux-ls-command-tricks/
[16]:http://www.tecmint.com/linux-sort-command-examples/

View File

@ -0,0 +1,110 @@
在 Linux 上使用 Glyphr 设计自己的字体
=============
LibreOffice 提供了丰富的字体,并且用户可以自由选择和下载增加自己的字体。然而,就算是你想创造自己的字体,也可以非常容易地使用 Glyphr 来做到。Glyphr 是一个新开源的矢量字体设计器,通过直观而易用的图形界面和丰富的功能集可以完成字体设计的方方面面。虽然这个应用还在早期开发阶段,但是已经十分棒了。下面将会有一个简短的快速入门教你如何使用 Glyphr 创建字体并加入到 LibreOffice。
首先,从[官方 Git 库][14]下载 Glyphr。它提供 32 位和 64 位版本的二进制格式。完成下载后,进入下载文件夹, 解压文件,进入解压后的文件夹,右键点击 Glyphr Studio选择“Run”。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_1.png)
][13]
启动应用后会给你三个选项。一个是从头创建一个新的字体集;第二个是读取已经存在的项目,可以是 Glyphr Studio 项目文件也可以是其他OpenType 字体otf或 TrueType 字体ttf甚至是 SVG 字体。第三个是读取已有的两个示例之一,然后可以在示例上修改创建。我将会选择第一个选项,并教你一些简单的设计概念。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_2.png)
][12]
完成进入编辑界面后, 你可以从屏幕左边的面板中选择字母,然后在右边的绘制区域设计。我选择 A 字母的图标开始编辑它。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_3.png)
][11]
要在绘图板上设计一些东西我们可以从该板的左上角选择矩形、椭圆形或者路径等同处的“形状”工具也可以使用该工具的第二行的第一项的路径编辑工具。使用任意工具开始在板上放路径点path point来创建形状。添加的点数越多接下来步骤的形状选项就越多。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_4.png)
][10]
将点移动到不同位置可以获得不同的路径,可以使用路径编辑工具右边的路径编辑,点击形状会出现可编辑点。然后可以把这些点拖到你喜欢的任意位置。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_5.png)
][9]
最后,形状编辑工具可以让你选择形状并将其拖动到其它位置、更改其尺寸以及旋转。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_6.png)
][8]
其它有用的设计动作集还有左侧面板提供的复制-粘贴、翻转-旋转操作。来看个例子,假设我现在正在创作 B 字母, 我要把已经创建好的上部分镜像到下半部分,保持设计的高度一致性。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_7.png)
][7]
现在,为了达到这个目的,选择形状编辑工具,选中欲镜像的部分,点击复制操作,然后在其上点击图形,拖放粘帖的形状到你需要的位置,根据你的需要进行水平翻转或者垂直翻转。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_8.png)
][6]
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_9.png)
][5]
这款应用在太多地方可以讲述。如果有兴趣深入,可以深入了解数字化编辑、弯曲和引导等等,
然而,字体并不是仅仅是单个字体的设计,还需要学习字体设计的其他方面。通过应用左上角菜单栏上的“导航”还可以设置特殊字符对之间的字间距、增加连字符、部件、和设置常规字体设置等。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_10.png)
][4]
最棒的是你可以使用“测试驱动”来使用你的新字体,帮助你判断字体设计如何、间距对不对、尽量来优化你的字体。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_11.png)
][3]
完成设计和优化后,我们还可以导出 ttf 和 svg 格式的字体。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_12.png)
][2]
要将新的字体加入到系统中,打开字体浏览器并点击“安装”按钮。如果它不工作,可以在主目录下创建一个新的文件夹叫做`.fonts`,并将字体复制进去。也可以使用 root 用户打开文件管理器,进入 `/usr/share/fonts/opentype` 创建一个新的文件夹并粘贴字体文件到里面。然后打开终端,输入命令重建字体缓存:`sudo fc-cache -f -v`。
在 LibreOffice 中已经可以看见新的字体咯,同样也可以使用你系统中的其它文本应用程序如 Gedit 来测试新字体。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_13.png)
][1]
--------------------------------------------------------------------------------
via: https://www.howtoforge.com/tutorial/how-to-design-and-add-your-own-font-on-linux-with-glyphr/
作者:[Bill Toulas][a]
译者:[VicYu/Vic020](http://vicyu.net)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://twitter.com/howtoforgecom
[1]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_13.png
[2]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_12.png
[3]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_11.png
[4]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_10.png
[5]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_9.png
[6]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_8.png
[7]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_7.png
[8]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_6.png
[9]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_5.png
[10]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_4.png
[11]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_3.png
[12]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_2.png
[13]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_1.png
[14]:https://github.com/glyphr-studio/Glyphr-Studio-Desktop

View File

@ -0,0 +1,192 @@
全新 Kali Linux 系统安装指南
===============
Kali Linux 系统可以说是在[安全测试方面最好][18]的开箱即用的 Linux 发行版。Kali 下的很多工具软件都可以安装在大多数的 Linux 发行版中Offensive Security 团队在 Kali 系统的开发过程中投入大量的时间精力来完善这个用于渗透测试和安全审计的 Linux 发行版。
Kali Linux 是基于 Debian 的面向安全的发行版本。该系统由于预安装了上百个知名的安全工具软件而出名。
Kali 甚至在信息安全领域还有一个含金量较高的认证叫做“Kali 渗透测试Pentesting with Kali”认证。该认证的申请者必须在艰难的 24 小时内成功入侵多台计算机,然后另外 24 小时内完成渗透测试报告并发送给 Offensive Security 的安全人员进行评审。成功通过考试的人将会获得 OSCP 认证证书。
本安装指南及以后的文章主要是为了帮助个人熟悉 Kali Linux 系统和其中一些工具软件的使用。
**请谨慎使用 Kali 下的工具,因为其中一些工具如果使用不当将会导致计算机系统损坏。请在合法的途径下使用所有 Kali 系列文章中所包含的信息。**
### 系统要求
Kali 系统对硬件有一些最基本的要求及建议。根据用户使用目的,你可以使有更高的配置。这篇文章中假设读者想要把 kali 安装为电脑上唯一的操作系统。
1. 至少 10GB 的磁盘空间;强烈建议分配更多的存储空间。
2. 至少 512MB 的内存;希望有更多的内存,尤其是在图形界面下。
3. 支持 USB 或 CD/DVD 启动方式。
4. Kali Linux 系统 ISO 镜像下载地址 [https://www.kali.org/downloads/][1]。
### 使用 dd 命令创建 USB 启动工具
该文章假设可使用 USB 设备来引导安装系统。注意尽可能的使用 4GB 或者 8GB 的 USB 设备,并且其上的所有数据将会被删除。
本文作者在使用更大容量的 USB 设备在安装的过程中遇到了问题,但是别的人应该还是可以的。不管怎么说,下面的安装步骤将会清除 USB 设备内的数据。
在开始之前请务必备份所有数据。用于安装 Kali Linux 系统的 USB 启动设备将在另外一台机器上创建完成。
第一步是获取 Kali Linux 系统 ISO 镜像文件。本指南将使用最新版的包含 Enlightenment 桌面环境的 Kali Linux 系统进行安装。
在终端下输入如下命令来获取这个版本的 ISO 镜像文件。
```
$ cd ~/Downloads
$ wget -c http://cdimage.kali.org/kali-2016.2/kali-linux-e17-2016.2-amd64.iso
```
上面两个命令将会把 Kali Linux 的 ISO 镜像文件下载到当前用户的 Downloads 目录。
下一步是把 ISO 镜像写入到 USB 设备中来启动安装程序。我们可以使用 Linux 系统中的 `dd` 命令来完成该操作。首先,该 USB 设备要在 `lsblk` 命令下可找到。
```
$ lsblk
```
![Find Out USB Device Name in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name-in-Linux.png)
*在 Linux 系统中确认 USB 设备名*
确定 USB 设备的名字为 `/dev/sdc`,可以使用 dd 工具将 Kali 系统镜像写入到 USB 设备中。
```
$ sudo dd if=~/Downloads/kali-linux-e17-2016.2-amd64.iso of=/dev/sdc
```
**注意:**以上命令需要 root 权限,因此使用 `sudo` 命令或使用 root 账号登录来执行该命令。这个命令会删除 USB 设备中的所有数据。确保已备份所需的数据。
一旦 ISO 镜像文件完全复制到 USB 设备,接下来可进行 Kali Linux 系统的安装。
### 安装 Kali Linux 系统
1、 首先把 USB 设备插入到要安装 Kali 操作系统的电脑上,然后从 USB 设备引导系统启动。只要成功地从 USB 设备启动系统你将会看到下面的图形界面选择“Install”或者“Graphical Install”选项。
本指南将使用“Graphical Install”方式进行安装。
![Kali Linux Boot Menu](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Boot-Menu.png)
*Kali Linux 启动菜单*
2、 下面几个界面将会询问用户选择区域设置信息比如语言、国家以及键盘布局。
选择完成之后,系统将会提示用户输入主机名和域名信息。输入合适的环境信息后,点击继续安装。
![Set Hostname for Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Set-Hostname-for-Kali-Linux.png)
*设置 Kali Linux 系统的主机名*
![Set Domain for Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Set-Domain-for-Kali-Linux.png)
*设置 Kali Linux 系统的域名*
3、 主机名和域名设置完成后需要设置 root 用户的密码。请勿忘记该密码。
![Set Root User Password for Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Set-Root-User-Password-for-Kali-Linux.png)
*设置 Kali Linux 系统用户密码*
4、 密码设置完成之后安装步骤会提示用户选择时区然后停留在硬盘分区界面。
如果 Kali Linux 是这个电脑上的唯一操作系统最简单的选项就是使用“Guided Use Entire Disk”然后选择你需要安装 Kali 的存储设备。
![Select Kali Linux Installation Type](http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Type.png)
*选择 Kali Linux 系统安装类型*
![](http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Disk.png)
*选择 Kali Linux 安装磁盘*
5、 下一步将提示用户在存储设备上进行分区。大多数情况下我们可以把整个系统安装在一个分区内。
![Install Kali Linux Files in Partition](http://www.tecmint.com/wp-content/uploads/2016/10/Install-Kali-Linux-Files-in-Partition.png)
*在分区上安装 Kali Linux 系统*
6、 最后一步是提示用户确认将所有的更改写入到主机硬盘。注意,点确认后将会**清空整个磁盘上的所有数据**。
![Confirm Disk Partition Write Changes](http://www.tecmint.com/wp-content/uploads/2016/10/Confirm-Disk-Partition-Write-Changes.png)
*确认磁盘分区更改*
7、 一旦确认分区更改安装包将会进行复制文件的安装过程。安装完成后你需要设置一个网络镜像源来获取软件包和系统更新。如果你希望使用 Kali 的软件库,确保开启此功能。
![Configure Kali Linux Package Manager](http://www.tecmint.com/wp-content/uploads/2016/10/Configure-Kali-Linux-Package-Manager.png)
*配置 Kali Linux 包管理器*
8、 选择网络镜像源后系统将会询问你安装 Grub 引导程序。再次说明,本文假设你的电脑上仅安装唯一的 Kali Linux 操作系统。
在该屏幕上选择“Yes”用户需要选择要写入引导程序信息的硬盘引导设备。
![Install GRUB Boot Loader](http://www.tecmint.com/wp-content/uploads/2016/10/Install-GRUB-Boot-Loader.png)
*安装 Grub 引导程序*
![Select Partition to Install GRUB Boot Loader](http://www.tecmint.com/wp-content/uploads/2016/10/Select-Partition-to-Install-GRUB-Boot-Loader.png)
*选择安装 Grub 引导程序的分区*
9、 当 Grub 安装完成后,系统将会提醒用户重启机器以进入新安装的 Kali Linux 系统。
![Kali Linux Installation Completed](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Installation-Completed.png)
*Kali Linux 系统安装完成*
10、 因为本指南使用 Enlightenment 作为 Kali Linux 系统的桌面环境,因此默认情况下是启动进入到 shell 环境。
使用 root 账号及之前安装过程中设置的密码登录系统,以便运行 Enlightenment 桌面环境。
登录成功后输入命令`startx`进入 Enlightenment 桌面环境。
```
# startx
```
![Start Enlightenment Desktop in Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Start-Enlightenment-Desktop-in-Kali-Linux.png)
*Kali Linux 下进入 Enlightenment 桌面环境*
初次进入 Enlightenment 桌面环境时,它将会询问用户进行一些首选项配置,然后再运行桌面环境。
[
![Kali Linux Enlightenment Desktop](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Enlightenment-Desktop.png)
][2]
*Kali Linux Enlightenment 桌面*
此时,你已经成功地安装了 Kali Linux 系统,并可以使用了。后续的文章我们将探讨 Kali 系统中一些有用的工具以及如何使用这些工具来探测主机及网络方面的安全状况。
请随意发表任何评论或提出相关的问题。
--------------------------------------------------------------------------------
via: http://www.tecmint.com/kali-linux-installation-guide/
作者:[Rob Turner][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/robturner/
[1]:https://www.kali.org/downloads/
[2]:http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Enlightenment-Desktop.png
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/Start-Enlightenment-Desktop-in-Kali-Linux.png
[4]:http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Installation-Completed.png
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Select-Partition-to-Install-GRUB-Boot-Loader.png
[6]:http://www.tecmint.com/wp-content/uploads/2016/10/Install-GRUB-Boot-Loader.png
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/Configure-Kali-Linux-Package-Manager.png
[8]:http://www.tecmint.com/wp-content/uploads/2016/10/Confirm-Disk-Partition-Write-Changes.png
[9]:http://www.tecmint.com/wp-content/uploads/2016/10/Install-Kali-Linux-Files-in-Partition.png
[10]:http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Disk.png
[11]:http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Type.png
[12]:http://www.tecmint.com/wp-content/uploads/2016/10/Set-Root-User-Password-for-Kali-Linux.png
[13]:http://www.tecmint.com/wp-content/uploads/2016/10/Set-Domain-for-Kali-Linux.png
[14]:http://www.tecmint.com/wp-content/uploads/2016/10/Set-Hostname-for-Kali-Linux.png
[15]:http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Boot-Menu.png
[16]:http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name-in-Linux.png
[17]:http://www.tecmint.com/best-linux-desktop-environments/
[18]:http://www.tecmint.com/best-security-centric-linux-distributions-of-2016/

View File

@ -0,0 +1,58 @@
何时 NGINX 将取代 Apache
=====
> NGINX 和 Apache 两者都是主流的开源 web 服务器,但是据 NGINX 的首席执行官 Gus Robertson 所言,他们有不同的使用场景。此外还有微软,其 web 服务器 IIS 在活跃网站的份额在 20 年间首次跌破 10%。
![活跃网站的 web 服务器市场份额](http://zdnet1.cbsistatic.com/hub/i/r/2016/11/07/f38d190e-046c-49e6-b451-096ee0776a04/resize/770xauto/b009f53417e9a4af207eff6271b90c43/web-server-popularity-october-2016.png)
*Apache 是最受欢迎的 web 服务器,不过 NGINX 正逐渐增长,而微软的 IIS 几十年来首次跌破 10%。*
[NGINX][4] 已经成为第二大 web 服务器。它在很久以前就已经超越了[微软 IIS][5],并且一直在老大 [Apache][6] 的身后穷追不舍。但是NGINX 的首席执行官Gus Roberston 在接受采访时表示Apache 和 NGINX 的用户群体不一样。
“我认为 Apache 是很好的 web 服务器。NGINX 和它的使用场景不同”Robertson 说。“我们没有把 Apache 当成竞争对手。我们的用户使用 NGINX 来取代硬件负载均衡器和构建微服务,这两个都不是 Apache 的长处。”
事实上Robertson 发现许多用户同时使用了这两种开源的 web 服务。“用户会在 Apache 的上层使用 NGINX 来实现负载均衡。我们的架构差异很大,我们可以提供更好的并发 web 服务。”他还表示 NGINX 在云环境中表现更优秀。
他总结说,“我们是唯一一个仍然在持续增长的 web 服务器,其它的 web 服务器都在慢慢缩小份额。”
这不太准确。根据 [Netcraft 十月份的网络服务器调查][7]Apache 当月的活跃网站增加得最多,获得了 180 万个新站点,而 NGINX 增加了 40 万个新站点,排在第二位。
这些增长,加上微软损失的 120 万个活跃站点,导致微软的活跃网站份额下降到 9.27%,这是他们第一次跌破 10%。Apache 的市场份额提高了 0.19%,并继续领跑市场,现在坐拥 46.3% 的活跃站点。尽管如此,多年来 Apache 一直在缓慢下降,而 NGINX 现在上升到了 19%。
NGINX 的开发者正在努力创造他们的核心开放open-core )的商业 web 服务器 —— [NGINX Plus][8]通过不断的改进使其变得更有竞争力。NGINX Plus 最新的版本是 [NGINX Plus 11 版R11][9],该服务器易于扩展和自定义,并支持更广泛的部署。
这次最大的补充是 [动态模块][10] 的二进制兼容性。也就是说为 [开源 NGINX 软件][11] 编译的动态模块也可以加载到 NGINX Plus。
这意味着你可以利用大量的[第三方 NGINX 模块][12] 来扩展 NGINX Plus 的功能,借鉴一系列开源和商业化生产的模块。开发者可以基于支持 NGINX Plus 的内核创建自定义扩展、附加组件和新产品。
NGINX Plus R11 还增强了其它功能:
* [提升 TCP/UDP 负载均衡][1] —— 新功能包括 SSL 服务器路由、新的日志功能、附加变量以及改进的代理协议支持。这些新功能增强了调试功能,使你能够支持更广泛的企业应用。
* [更好的 IP 定位][2] —— 第三方的 GeoIP2 模块现在已经通过认证,并提供给 NGINX Plus 用户。这个新版本提供比原来的 GeoIP 模块更精准和丰富的位置信息。
* [增强的 nginScript 模块][3] —— nginScript 是基于 JavaScript 的 NGINX Plus 的下一代配置语言。新功能可以让你在流TCP/UDP模块中即时修改请求和响应数据。
最终结果NGINX 准备继续与 Apache 竞争顶级 web 服务器的宝座。至于微软的 IIS它将逐渐淡出市场。
--------------------------------------------------------------------------------
via: http://www.zdnet.com/article/when-to-use-nginx-instead-of-apache/
作者:[Steven J. Vaughan-Nichols][a]
译者:[OneNewLife](https://github.com/OneNewLife)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.zdnet.com/meet-the-team/us/steven-j-vaughan-nichols/
[1]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-tcp-udp-lb
[2]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-geoip2
[3]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-nginScript
[4]:https://www.nginx.com/
[5]:https://www.iis.net/
[6]:https://httpd.apache.org/
[7]:https://news.netcraft.com/archives/2016/10/21/october-2016-web-server-survey.html
[8]:https://www.nginx.com/products/
[9]:https://www.nginx.com/blog/nginx-plus-r11-released/
[10]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-dynamic-modules
[11]:https://www.nginx.com/products/download-oss/
[12]:https://www.nginx.com/resources/wiki/modules/index.html?utm_source=nginx-plus-r11-released&utm_medium=blog

View File

@ -1,30 +1,25 @@
[XFCE 桌面新增‘免打扰’模式以及单一应用通知设置的新特性][7]
Xfce 桌面新增‘免打扰’模式以及单一应用通知设置的新特性
============================================================
Xfce 的开发者们正忙于把 Xfce 的应用和部件[转移][3]到 GTK3 上,在这个过程中,他们也增加了一些新的特性。
**"免打扰“**,一个更加被需要的特性,[最近][4]已登陆到了 _xfce-notifyd_ 0.3.4 (Xfce 通知进程)上。
**“免打扰”**,一个常被要求增加的特性,[最近][4]已登陆到了 xfce-notifyd 0.3.4 (Xfce 通知进程)上。
更近一步地,**最新的 _xfce-notifyd_ 包括一个选项可以在单一应用基础上开启或关闭通知。
更近一步地,**最新的 xfce-notifyd 包括一个可以在单一应用基础上开启或关闭通知的选项
当一个应用发出一个通知以后,这个应用就被加入到到了通知设置的列表里。从通知列表里,你可以控制哪些应用能够显示通知。
”免打扰“模式和特殊应用通知设置均可在 设置 > 通知 中找到:
”免打扰“模式和应用特定的通知设置均可在“设置” > “通知” 中找到:
[
![](https://1.bp.blogspot.com/-fvSesp1ukaQ/WCR8JQVgfiI/AAAAAAAAYl8/IJ1CshVQizs9aG2ClfraVaNjKP3OyxvAgCLcB/s400/xfce-do-not-disturb.png)
][5]
现在为止,还没有方法可以访问由于启用”免打扰“模式而错过的消息。然而,可以预期将来会发布**通知记录/维持的特性。**
现在,没有方法可以访问由于启用”免打扰“模式而错过的消息。然而,**通知记录/维持特性被期待在将来会释放。**
最后, xfce-notifyd 0.3.4 的**另一个特性**是**选择在主监视器显示通知**(直到现在,通知都是显示在当前监视器)。这个特性目前在图形设置界面里是没有的,必须使用 `Xfconf`(设置编辑)在 xfce-notifyd 下增添一个叫做 `/primary-monitor`(没有引号)的布尔属性,并设置为 `True` 来启用该特性:
最后, _xfce-notifyd_ 0.3.4 的**另一个特性**是**选择在基本监视器显示通知**(直到现在,通知都是显示在主动监视器)。这个特性目前在 GUI 上是不能用的,必须使用 Xfconf设置编辑_xfce-notifyd_ 增添一个叫做“/基本监视器”(没有引号)的布尔属性并设置为 "TRUE" 来启用该特性:
[
![](https://2.bp.blogspot.com/-M8xZpEHMrq8/WCR9EufvsnI/AAAAAAAAYmA/nLI5JQUtmE0J9TgvNM9ZKGHBdwwBhRH3QCLcB/s400/xfce-xfconf.png)
][6]
**_xfce4-notifyd_ 0.3.4 特性目前在 PPA 上是不可用的,但是不久它可能被增添到[Xfce GTK3][1]中。**
**xfce4-notifyd 0.3.4 目前在 PPA 上还没有,但是不久它可能被增添到 [Xfce GTK3 PPA][1]中。**
**如果你想直接从源代码编译,从[这儿][2]下载。**
@ -32,9 +27,9 @@ Xfce 的开发者们正忙于把 Xfce 的应用和部件[转移][3]到 GTK3
via: http://www.webupd8.org/2016/11/xfce-gets-do-not-disturb-mode-and-per.html
作者:[Andrew ][a]
作者:[Andrew][a]
译者:[ucasFL](https://github.com/ucasFL)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,65 +1,56 @@
现在Linux运行在99.6%的TOP500超级计算机上
现在 Linux 运行在 99.6% TOP500 超级计算机上
============================================================
[
![Linux rules the world of supercomputers](https://itsfoss.com/wp-content/uploads/2016/11/Linux-King-Supercomputer-world-min.jpg)
][12]
_简介虽然Linux在桌面操作系统只有2%的市场占有率但是对于超级计算机来说Linux用99%的市场占有率轻松地获取了统治地位。_
_简介虽然 Linux 在桌面操作系统只有 2% 的市场占有率但是对于超级计算机来说Linux 99% 的市场占有率轻松地获取了统治地位。_
**Linux运行在超过99%的TOP500超级计算机上**这并不会让人感到惊讶。2015年我们报道过[《Linux正运行在超过97%的TOP500超级计算机上》][13]今年Linux表现得更好。
**Linux 运行在超过 99% TOP500 超级计算机上**这并不会让人感到惊讶。2015 年我们报道过[“Linux 正运行在超过 97% 的 TOP500 超级计算机上”][13],今年 Linux 表现得更好。
[#Linux now runs on more than 99% of top 500 #supercomputers in the world][4]
这些信息是由独立组织 [Top500][4] 收集的,每两年他们会公布已知的最快的 500 台超级计算机的细节。你可以[打开这个网站,用以下条件筛选所需要的信息][15]:国家、使用的操作系统类型、所有者等。别担心,我将会从这份表格中筛选整理出今年几个有趣的事实。
[点击到twitter][5]
### Linux 运行在 500 台超级计算机中的 498 台
这些信息是由独立组织[Top500][4]收集的每两年他们会公布已知的最快的500台超级计算机的细节。你可以[打开这个网站,用以下条件筛选所需要的信息][15]:国家、使用的操作系统类型、所有者等。别担心,我将会从这份表格中筛选整理出今年几个有趣的事实
如果要将上面的百分比细化到具体数量的话500 台超级计算机中的 498 台运行着 Linux。剩余的两台超级计算机运行着基于 Unix 的操作系统。直到去年,还有一台超级计算机上在运行 Windows今年的列表中没有出现 Windows 的身影。或许,这些超级计算机没一台能运行 Windows 10一语双关
### Linux运行在500台超级计算机中的498台
如果要将上面的百分比细化到具体数量的话500台超级计算机中的498台运行着Linux。剩余的两台超级计算机运行着基于Unix的操作系统。直到去年还有一台超级计算机上在运行Windows今年的列表中没有出现Windows的身影。或许这些超级计算机没一台能运行Windows 10一语双关
总结一下今年表单上TOP500超级计算机所运行操作系统情况
总结一下今年表单上 TOP500 超级计算机所运行操作系统情况:
* Linux: 498
* Unix: 2
* Windows: 0
还有一份总结它清晰展现了每年Linux在TOP500超级计算机的份额的变化情况。
还有一份总结,它清晰展现了每年 Linux TOP500 超级计算机的份额的变化情况。
* 2012年: 94%
* [2013][6]年: 95%
* [2014][7]年: 97%
* [2015][8]年: 97.2%
* 2016年: 99.6%
* 2017年: ???
* 2012 年: 94%
* [2013][6] 年: 95%
* [2014][7] 年: 97%
* [2015][8] 年: 97.2%
* 2016 年: 99.6%
* 2017 年: ???
另外最快的前380台超级计算机运行着Linux包括在中国的那台最快的超级计算机。排名第386和第387的超级计算机运行着Unix它们同样来自中国。
另外最快的前380台超级计算机运行着 Linux包括在中国的那台最快的超级计算机。排名第 386 和第 387 的超级计算机运行着 Unix它们同样来自中国。←_←
### 其他关于最快的超级计算机的有趣数据
[
![List of top 10 fastest supercomputers in the world in 2016](https://itsfoss.com/wp-content/uploads/2016/11/fastest-supercomputers.png)
][16]
除去Linux我在表单中还找到了几个有趣的数据想跟你分享。
除去 Linux我在表单中还找到了几个有趣的数据想跟你分享。
* 全球最快的超级计算机是[神威太湖一号][9]. 它位于[国家超级计算无锡中心][10]。它有着93PFlops的速度.
* 全球第二快的超级计算机是中国的[天河二号][11]第三的位置则属于美国的Titan。
* 在速度前十的超级计算机中美国占据了5台日本和中国各有4台瑞士有1台。
* 美国和中国都各有171台超级计算机进入了TOP500的榜单中。
* 日本有27台法国有20台印度、俄罗斯和沙特阿拉伯各有5台进入了榜单中。
* 全球最快的超级计算机是[神威太湖之光][9]. 它位于中国的[国家超级计算无锡中心][10]。它有着 93PFlops 的速度。
* 全球第二快的超级计算机是中国的[天河二号][11],第三的位置则属于美国的 Titan。
* 在速度前十的超级计算机中,美国占据了 5 台,日本和中国各有 4 台,瑞士有 1 台。
* 美国和中国都各有 171 台超级计算机进入了 TOP500 的榜单中。
* 日本有 27 台,法国有 20 台,印度、俄罗斯和沙特阿拉伯各有 5 台进入了榜单中。
有趣的事实,不是吗?你能点击[这里][18]筛选出属于自己的榜单来获得更多信息。现在我很开心来宣传 Linux 运行在 99% 的 TOP500 超级计算机上,期待下一年能有 100% 的更好成绩。
有趣的事实,不是吗?你能点击[这里][18]筛选出属于自己的榜单来获得更多信息。现在我很开心来宣传Linux运行在99%的TOP500超级计算机上期待下一年能有100%的更好成绩。
当你在阅读这篇文章时请在社交平台上分享这篇文章这是Linux的一个成就我们引以为豪~:P
当你在阅读这篇文章时,请在社交平台上分享这篇文章,这是 Linux 的一个成就,我们引以为豪~ :P
--------------------------------------------------------------------------------
via: https://itsfoss.com/linux-99-percent-top-500-supercomputers
作者:[Abhishek Prakash ][a]
作者:[Abhishek Prakash][a]
译者:[ypingcn](https://github.com/ypingcn)
校对:[jasminepeng](https://github.com/jasminepeng)

View File

@ -1,3 +1,7 @@
/*翻译中 WangYueScream LemonDemo*/
What is open source
===========================

View File

@ -1,68 +0,0 @@
/*翻译中 WangYueScream LemonDemo*/
Fedora-powered computer lab at our university
==========
![Fedora-powered computer lab at our university](https://cdn.fedoramagazine.org/wp-content/uploads/2016/10/fedora-powered-computer-lab-945x400.png)
At the [University of Novi Sad in Serbia, Faculty of Sciences, Department of Mathematics and Informatics][5], we teach our students a lot of things. From an introduction to programming to machine learning, all the courses make them think like great developers and software engineers. The pace is fast and there are many students, so we must have a setup on which we can rely on. We decided to switch our computer lab to Fedora.
### Previous setup
Our previous solution was keeping our development software in Windows [virtual machines][4] installed on Ubuntu Linux. This seemed like a good idea at the time. However, there were a couple of drawbacks. Firstly, there were serious performance losses because of running virtual machines. Performance and speed of the operating system was impacted because of this. Also, sometimes virtual machines ran concurrently in another users session. This led to serious slowdowns. We were losing precious time on booting the machines and then booting the virtual machines. Lastly, we realized that most of our software was Linux-compatible. Virtual machines werent necessary. We had to find a better solution.
### Enter Fedora!
![Computer lab in Serbia powered by Fedora](https://cdn.fedoramagazine.org/wp-content/uploads/2016/10/jxXtuFO-1024x576.jpg)
Picture of a computer lab running Fedora Workstation by default
We thought about replacing the virtual machines with a “bare bones” installation for a while. We decided to go for Fedora for several reasons.
#### Cutting edge of development
In our courses, we use many different development tools. Therefore, it is crucial that we always use the latest and greatest development tools available. In Fedora, we found 95% of the tools we needed in the official software repositories! For a few tools, we had to do a manual installation. This was easy in Fedora because you have almost all development tools available out of the box.
What we realized in this process was that we used a lot of free and open source software and tools. Having all that software always up to date was always going to be a lot of work but not with Fedora.
#### Hardware compatibility
The second reason for choosing Fedora in our computer lab was hardware compatibility. The computers in the lab are new. In the past, there were some problems with older kernel versions. In Fedora, we knew that we would always have a recent kernel. As we expected, everything worked out of the box without any issues.
We decided that we would go for the [Workstation edition][3] of Fedora with [GNOME desktop environment][2]. Students found it easy, intuitive, and fast to navigate through the operating system. It was important for us that students have an easy environment where they could focus on the tasks at hand and the course itself rather than a complicated or slow user interface.
#### Powered by freedom
Lastly, in our department, we value free and open source software greatly. By utilizing such software, students are able to use it freely even when they graduate and start working. In the process, they also learn about Fedora and free and open source software in general.
### Switching the computer lab
We took one of the computers and fully set it up manually. That included preparing all the needed scripts and software, setting up remote access, and other important components. We also made one user account per course so students could easily store their files.
After that one computer was ready, we used a great, free and open source tool called [CloneZilla][1]. CloneZilla let us make a hard drive image for restoration. The image size was around 11GB. We used some fast USB 3.0 flash drives to restore the disk image to the remaining computers. We managed to fully provision and setup twenty-four computers in one hour and fifteen minutes, with just a couple of flash drives.
### Future work
All the computers in our computer lab are now exclusively using Fedora (with no virtual machines). The remaining work is to set up some administration scripts for remotely installing software, turning computers on and off, and so forth.
We would like to thank all Fedora maintainers, packagers, and other contributors. We hope our work encourages other schools and universities to make a switch similar to ours. We happily confirm that Fedora works great for us, and we can also vouch that it would work great for you!
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/fedora-computer-lab-university/
作者:[Nemanja Milošević][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/nmilosev/
[1]:http://clonezilla.org/
[2]:https://www.gnome.org/
[3]:https://getfedora.org/workstation/
[4]:https://en.wikipedia.org/wiki/Virtual_machine
[5]:http://www.dmi.rs/

View File

@ -1,89 +0,0 @@
Martin translating
[
![open source vs closed source](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/open-source-vs-closed-source_orig.jpg)
][2]There are many differences between **open source operating system** and **closed source operating system**. Here we have written few of them.
### What Is Open Source? It's Freedom!
[
![what is open source?](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/what-is-open-source.jpg?250)
][1]
This is the most important thing that a user should possess. I may or may not be modifying the code but someone who wants to modify the code for good purposes should not be restricted. And a user should be allowed to share the software if he likes it. And this is all possible with **open source** software.
The **closed source** operating systems have really scaring license terms. Moreover do all the people read the license terms?, Nope, most of them  just click Accept.
* * *
### Cost
Nearly all of the open source operating systems are free of cost. People only donate voluntarily. And a single installation **CD/DVD or USB** can be used to install the OS in as many computers as possible.
Closed source operating systems are very costly when compared with open source OSs and if you are building a PC, it may cost you at least $100 per PC.
We could use the money that we may spend on closed source software to buy better.
### Choice
There are numerous open source operating systems out there. So if you dont like a distro then you can try others and at least a single operating system will be suitable for you.
Distros like Ubuntu studio, Bio Linux, Edubuntu, Kali Linux, Qubes, SteamOS are some of the distros that are created for the particular type of users.
Is there anything called choice in closed source operating systems? I dont think so.
### Privacy
There is no need for **Open source operating systems** to collect user data. They are not going show any personalized ads or sell your data to third parties. If the developers need money they will ask for donations or display ads on their website. ADs will always be related to Linux, so it also helps us.
You might have known how a major closed source operating system(you know what its name is) is said to be collecting users data which caused many people to turn down their free upgrade offer. Many users of that OS had even turned off updates to avoid any upgrade, it means they preferred security risk to free upgrade.
### Security
Open source software are mostly secure. They are not secure because of less market share but the way they are made. Qubes Os is one of the most secure OS that isolates the running software from one another.
Closed source operating systems compromise security for usability making them more vulnerable.
### Hardware support
Many of us might have an old PC that we dont want to throw away and at that situation lightweight distros that are capable of giving a new life to them. Here is a list of lightweight operating systems you can try these distros [5 Lightweight Linux for old computers][3]. Linux based OSs comes with drivers for almost all devices, so there wont be any need to search and install drivers.
Many a time closed source operating systems scrap support for older hardware forcing the user to buy new hardware. We may have to search and install drivers ourself.
### Community Support
Nearly all of the **open source OSes** have user forums where you can ask questions and get answers from other users. People share tips and tricks and help each other. Experienced Linux users love to help newbies, so they always try their best to help them.
**Closed source OSes **community is not even comparable to open source OS community. Questions asked might even go unanswered.
### Monetisation
Making many out of OSes will be tough. Developers accept donations from users and get some money from ads that are displayed on their website. Most of the donations are used to pay hosting bills and developers salary.
Many of the closed source OSes not only make money from licensing their software but also through targeted ads.
### Crapware
I accept some of the open source operating systems provide some software that we may not use in our lifetime and some people consider them as crapware. But there are distros that provide the minimal installation that contain no unwanted software. So, crapware is not really a problem.
All the closed source operating systems contain crapware installed by the manufacturer and will force as to do a clean installation.
Open source software is more like a philosophy . Its a way of sharing and learning. Its even good for the economy.
So, we have listed things that we know. If you think we have missed some points, then please do comment and let us know.
--------------------------------------------------------------------------------
via: http://www.linuxandubuntu.com/home/open-source-vs-closed-source
作者:[Mohd Sohail][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.linkedin.com/in/mohdsohail
[1]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/what-is-open-source_orig.jpg?250
[2]:http://www.linuxandubuntu.com/home/open-source-vs-closed-source
[3]:http://www.linuxandubuntu.com/home/5-lightweight-linux-for-old-computers

View File

@ -1,3 +1,5 @@
fuowang翻译中
WattOS: A Rock-Solid, Lightning-Fast, Lightweight Linux Distro For All
=============================

View File

@ -1,115 +0,0 @@
3 Ways to Extract and Copy Files from ISO Image in Linux
============================================================
Lets say you have a large ISO file on your Linux server and you wanted to access, extract or copy one single file from it. How do you do it? Well in Linux there are couple ways do it.
For example, you can use standard mount command to mount an ISO image in read-only mode using the loop device and then copy the files to another directory.
### Mount or Extract ISO File in Linux
To do so, you must have an ISO file (I used ubuntu-16.10-server-amd64.iso ISO image) and mount point directory to mount or extract ISO files.
First create an mount point directory, where you will going to mount the image as shown:
```
$ sudo mkdir /mnt/iso
```
Once directory has been created, you can easily mount ubuntu-16.10-server-amd64.iso file and verify its content by running following command.
```
$ 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]
Mount ISO File in Linux
Now you can go inside the mounted directory (/mnt/iso) and access the files or copy the files to `/tmp`directory using [cp command][2].
```
$ 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]
Copy Files From ISO File in Linux
Note: The `-r` option used to copy directories recursively, if you want you can also [monitor progress of copy command][4].
### Extract ISO Content Using 7zip Command
If you dont want to mount ISO file, you can simply install 7zip, is an open source archive program used to pack or unpack different number of formats including TAR, XZ, GZIP, ZIP, BZIP2, etc..
```
$ sudo apt-get install p7zip-full p7zip-rar [On Debian/Ubuntu systems]
$ sudo yum install p7zip p7zip-plugins [On CentOS/RHEL systems]
```
Once 7zip program has been installed, you can use 7z command to extract ISO file contents.
```
$ 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 Extract ISO File Content in Linux
Note: As compared to Linux mount command, 7zip seems much faster and smart enough to pack or unpack any archive formats.
### Extract ISO Content Using isoinfo Command
The isoinfo command is used for directory listings of iso9660 images, but you can also use this program to extract files.
As I said isoinfo program perform directory listing, so first list the content of ISO file.
```
$ 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]
List ISO Content in Linux
Now you can extract a single file from an ISO image like so:
```
$ isoinfo -i ubuntu-16.10-server-amd64.iso -x MD5SUM.TXT > MD5SUM.TXT
```
Note: The redirection is needed as `-x` option extracts to stdout.
[
![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]
Extract Single File from ISO in Linux
Well, there are many ways to do, if you know any useful command or program to extract or copy files from ISO file do share us via comment section.
--------------------------------------------------------------------------------
via: http://www.tecmint.com/extract-files-from-iso-files-linux
作者:[Ravi Saive][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/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

@ -1,3 +1,5 @@
###Translating by rusking
4 Useful Way to Know Plugged USB Device Name in Linux
============================================================

View File

@ -1,223 +0,0 @@
Translating by rusking
# Kali Linux Fresh Installation Guide
Kali Linux is arguably one of the best out of the box [Linux distributions available for security testing][18]. While many of the tools in Kali can be installed in most Linux distributions, the Offensive Security team developing Kali has put countless hours into perfecting their ready to boot security distribution.
Kali Linux is a Debian based, security distribution. The distribution comes pre-loaded with hundreds of well known security tools and has gained quite a name for itself.
Kali even has an industry respected certification available called “Pentesting with Kali”. The certification is a rigorous 24 hour challenge in which applicants must successfully compromise a number of computers with another 24 hours to write up a professional penetration test report that is sent to and graded by the personnel at Offensive Security. Successfully passing this exam will allow the test taker to obtain the OSCP credential.
The focus of this guide and future articles is to help individuals become more familiar with Kali Linux and several of the tools available within the distribution.
Please be sure to use extreme caution with the tools included with Kali as many of them can accidentally be used in a manner that will break computer systems. The information contained within all of these Kali articles is intended for legal usages.
#### System Requirements
Kali has some minimum suggested specifications for hardware. Depending upon the intended use, more may be desired. This guide will be assuming that the reader will want to install Kali as the only operating system on the computer.
1. At least 10GB of disk space; strongly encouraged to have more
2. At least 512MB of ram; more is encouraged especially for graphical environments
3. USB or CD/DVD boot support
4. Kali Linux ISO available from [https://www.kali.org/downloads/][1]
#### Create a Bootable USB Using dd Command
This guide will be assuming that a USB drive is available to use as the installation media. Take note that the USB drive should be as close to 4/8GB as possible and ALL DATA WILL BE REMOVED!
The author has had issues with larger USB drives but some may still work. Regardless, following the next few steps WILL RESULT IN DATA LOSS ON THE USB DRIVE.
Please be sure to backup all data before proceeding. This bootable Kali Linux USB drive is going to be created from another Linux machine.
Step 1 is to obtain the Kali Linux ISO. This guide is going to use the current newest version of Kali with the Enlightenment [Linu desktop environment][17].
To obtain this version, type the following into a terminal.
```
$ cd ~/Downloads
$ wget -c http://cdimage.kali.org/kali-2016.2/kali-linux-e17-2016.2-amd64.iso
```
The two commands above will download the Kali Linux ISO into the current users Downloads folder.
The next process is to write the ISO to a USB drive to boot the installer. To accomplish this we can use the ddtool within Linux. First, the disk name needs to be located with lsblk command though.
```
$ lsblk
```
[
![Find Out USB Device Name in Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name-in-Linux.png)
][16]
Find Out USB Device Name in Linux
With the name of the USB drive determined as `/dev/sdc`, the Kali ISO can be written to the drive with the ddtool.
```
$ sudo dd if=~/Downloads/kali-linux-e17-2016.2-amd64.iso of=/dev/sdc
```
Important: The above command requires root privileges so utilize sudo or login as the root user to run the command. Also this command will REMOVE EVERYTHING on the USB drive. Be sure to backup needed data.
Once the ISO is copied over to the USB drive, proceed further to install Kali Linux.
### Installation of Kali Linux Distribution
1. First, plug the USB drive into the respective computer that Kali should be installed upon and proceed to boot to the USB drive. Upon successful booting to the USB drive, the user will be presented with the following screen and should proceed with the Install or Graphical Install options.
This guide will be using the Graphical Install method.
[
![Kali Linux Boot Menu](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Boot-Menu.png)
][15]
Kali Linux Boot Menu
2. The next couple of screens will ask the user to select locale information such as language, country, and keyboard layout.
Once through the locale information, the installer will prompt for a hostname and domain for this install. Provide the appropriate information for the environment and continue installing.
[
![Set Hostname for Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Set-Hostname-for-Kali-Linux.png)
][14]
Set Hostname for Kali Linux
[
![Set Domain for Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Set-Domain-for-Kali-Linux.png)
][13]
Set Domain for Kali Linux
3. After setting up the hostname and domain name, the root users password needs to be set. DO NOT FORGET THIS PASSWORD.
[
![Set Root User Password for Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Set-Root-User-Password-for-Kali-Linux.png)
][12]
Set Root User Password for Kali Linux
4. After setting the password is set, the installer will prompt for time zone data and then pause at the disk partitioning.
If Kali will be the only operating on the machine, the easiest option is to use Guided Use Entire Disk and then select the storage device you wish to install Kali.
[
![Select Kali Linux Installation Type](http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Type.png)
][11]
Select Kali Linux Installation Type
[
![Select Kali Linux Installation Disk](http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Disk.png)
][10]
Select Kali Linux Installation Disk
5. The next question will prompt the user to determine the partitioning on the storage device. Most installs can simply put all data on one partition though.
[
![Install Kali Linux Files in Partition](http://www.tecmint.com/wp-content/uploads/2016/10/Install-Kali-Linux-Files-in-Partition.png)
][9]
Install Kali Linux Files in Partition
6. The final step with ask the user to confirm all changes to be made to the disk on the host machine. Be aware that continuing will ERASE DATA ON THE DISK.
[
![Confirm Disk Partition Write Changes](http://www.tecmint.com/wp-content/uploads/2016/10/Confirm-Disk-Partition-Write-Changes.png)
][8]
Confirm Disk Partition Write Changes
7. Once confirming the partition changes, the installer will run through the process of installing the files. Once it is completed, the system will want to setup a network mirror to obtain future pieces of software and updates. Be sure to enable this functionality if you wish to use the Kali repositories.
[
![Configure Kali Linux Package Manager](http://www.tecmint.com/wp-content/uploads/2016/10/Configure-Kali-Linux-Package-Manager.png)
][7]
Configure Kali Linux Package Manager
8. After selecting a network mirror, the system will ask to install grub. Again this guide is assuming that Kali is to be the only operating system on this computer.
Selecting Yes on this screen will allow the user to pick the device to write the necessary boot loader information to the hard drive to boot Kali.
[
![Install GRUB Boot Loader](http://www.tecmint.com/wp-content/uploads/2016/10/Install-GRUB-Boot-Loader.png)
][6]
Install GRUB Boot Loader
[
![Select Partition to Install GRUB Boot Loader](http://www.tecmint.com/wp-content/uploads/2016/10/Select-Partition-to-Install-GRUB-Boot-Loader.png)
][5]
Select Partition to Install GRUB Boot Loader
9. Once the installer finishes installing GRUB to the disk, it will alert the user to reboot the machine to boot into the newly installed Kali machine.
[
![Kali Linux Installation Completed](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Installation-Completed.png)
][4]
Kali Linux Installation Completed
10. Since this guide installed Enlightenment as the Kali desktop environment, it will likely default boot into a shell.
In order to launch Enlightenment, log in as the user root with the password created earlier in the installation process.
Once logged in all that needs to be issued to start Enlightenment is the command startx.
```
# startx
```
[
![Start Enlightenment Desktop in Kali Linux](http://www.tecmint.com/wp-content/uploads/2016/10/Start-Enlightenment-Desktop-in-Kali-Linux.png)
][3]
Start Enlightenment Desktop in Kali Linux
The first time that Enlightenment is run, it will ask the user for some configuration preferences and then launch the Desktop Environment.
[
![Kali Linux Enlightenment Desktop](http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Enlightenment-Desktop.png)
][2]
Kali Linux Enlightenment Desktop
At this point, Kali is successfully installed and ready to be used! Upcoming articles will walk through the tools available within Kali and how the can be utilized to test the security posture of hosts and networks. Please feel free to post any comments or questions below.
--------------------------------------------------------------------------------
via: http://www.tecmint.com/kali-linux-installation-guide/
作者:[Rob Turner][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/robturner/
[1]:https://www.kali.org/downloads/
[2]:http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Enlightenment-Desktop.png
[3]:http://www.tecmint.com/wp-content/uploads/2016/10/Start-Enlightenment-Desktop-in-Kali-Linux.png
[4]:http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Installation-Completed.png
[5]:http://www.tecmint.com/wp-content/uploads/2016/10/Select-Partition-to-Install-GRUB-Boot-Loader.png
[6]:http://www.tecmint.com/wp-content/uploads/2016/10/Install-GRUB-Boot-Loader.png
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/Configure-Kali-Linux-Package-Manager.png
[8]:http://www.tecmint.com/wp-content/uploads/2016/10/Confirm-Disk-Partition-Write-Changes.png
[9]:http://www.tecmint.com/wp-content/uploads/2016/10/Install-Kali-Linux-Files-in-Partition.png
[10]:http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Disk.png
[11]:http://www.tecmint.com/wp-content/uploads/2016/10/Select-Kali-Linux-Installation-Type.png
[12]:http://www.tecmint.com/wp-content/uploads/2016/10/Set-Root-User-Password-for-Kali-Linux.png
[13]:http://www.tecmint.com/wp-content/uploads/2016/10/Set-Domain-for-Kali-Linux.png
[14]:http://www.tecmint.com/wp-content/uploads/2016/10/Set-Hostname-for-Kali-Linux.png
[15]:http://www.tecmint.com/wp-content/uploads/2016/10/Kali-Linux-Boot-Menu.png
[16]:http://www.tecmint.com/wp-content/uploads/2016/10/Find-USB-Device-Name-in-Linux.png
[17]:http://www.tecmint.com/best-linux-desktop-environments/
[18]:http://www.tecmint.com/best-security-centric-linux-distributions-of-2016/

View File

@ -1,3 +1,4 @@
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)

View File

@ -1,68 +0,0 @@
Is Mozilla Firefox Collecting Your Data Without Your Consent?
============================================================
![Mozilla Firefox collects your data](https://iwf1.com/wordpress/wp-content/uploads/2016/11/Mozilla-Firefox-collects-your-data-730x429.jpg)
A geolocation service packaged with Firefox web-browser is running in the background even while the latter is closed.
Weve still not fully recovered from the news about the scandalous browser add-on which meant to protect users privacy but instead **[sells their information to third-party companies][1]**, and already we are perhaps in front of another, much bigger in scale, new outrage.
**MLS** is Mozilla Location Service which lets devices determine their location based on network infrastructure like WiFi access points, cell towers and Bluetooth beacons.
Pretty much, it is Mozillas equivalent to Google Location Service which is the service used when you turn on your GPS on Android devices and opt for High accuracy mode.
Those of you who ever experienced GPS issues will probably know to appreciate how accurate this mode actually is.
But besides being able to accurately pinpoint your location, another side of it is that the service, through the use of WiFi networks, is able to collect personally identifiable information of both the **users who knowingly contribute to the database** and the **owners of the WiFi devices being scanned**.
That being said, Mozilla also mentions you can opt out from the service, but can you really?
### When The Background Becomes Your Privacy Foreground
Being a [crowdsource][2] project, in order to maintain and grow MLS, Mozilla is in fact dependent of users contributions, thus theyve developed a number of ways through which users can participate.
One of these ways, meant to be used by end users is a Android app called Stumbler:
> “Mozilla Stumbler is an open-source wireless network scanner which collects GPS, cellular and wireless network metadata for our crowd-sourced location database.”[1]
Yet Stumbler is not only a standalone app but also a service used by Firefox for Android “to contribute data and enhance” MLS.
The problem with that service lies in the fact it runs in the background without most users are aware of it and **even though you may disable it**.
According to Mozilla[1], to enable the service you need to open the Settings menu (in Firefox for Android) -> Open the Privacy section -> scroll to the bottom to see the Data Choices, and finally, Check the Mozilla Location Service box.
[
![Mozilla Location Services is unchecked yet Stumbler is on](http://iwf1.com/wordpress/wp-content/uploads/2016/11/Mozilla-Location-Services-is-unchecked-yet-Stumler-is-on-730x602.jpg)
][3]
Mozilla Location Services is unchecked yet Stumbler is on
In reality, youll find that the Stumbler service is **actively running on your device in the background**, meaning its practically invisible because it has no interface, even though the MLS box is unchecked and furthermore, even if all the Data Choices check boxes are unchecked and Firefox browser itself is closed.
Apparently, the only way to stop stumbler is by ending it directly, however to do so, youll first need a way to detect its running and ultimately, thats just a temporary solution that only lasts until the devices next reboot.
### How To Stay Safer?
In order to exempt yourself from MLS data collection, there are still a few methods you may practice, in the hope those wouldnt be disregarded by Mozilla just like the MLS check box in Firefox for Android.
Make your wireless network hidden or add the string “_nomap” to the end of its name, e.g “myWirelessNetwork” becomes “myWirelessNetwork_nomap”. This should signal Mozillas applications that you do not wish to participate in their data collection.
As for the Stumbler service on Android, due to being a service (as opposed to a process), youll probably wont be able to see it in the list of running processes / recent apps. Thus, either use a dedicated app to close it or enable “Developer Options” and go to “Running services” -> tap on Firefox and finally, stop “stumbler”.
--------------------------------------------------------------------------------
via: https://iwf1.com/is-mozilla-firefox-collecting-your-data-without-your-consent/
作者:[Liron][a]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://iwf1.com/is-mozilla-firefox-collecting-your-data-without-your-consent/
[1]:https://iwf1.com/shock-this-popular-browser-add-on-sells-your-browsing-history/
[2]:https://en.wikipedia.org/wiki/Crowdsourcing
[3]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/Mozilla-Location-Services-is-unchecked-yet-Stumler-is-on.jpg

View File

@ -0,0 +1,84 @@
我们大学的机房使用 Fedora 系统
==========
![Fedora-powered computer lab at our university](https://cdn.fedoramagazine.org/wp-content/uploads/2016/10/fedora-powered-computer-lab-945x400.png)
在[塞尔维亚共和国诺维萨德大学的自然科学系和数学与信息学系][5],我们教学生很多东西。从编程语言的入门到机器学习,所有开设的课程最终目的是让我们的学生能够像专业的开发者和软件工程师一样思考。课程时间紧凑而且学生众多,所以我们必须对现有可利用的资源进行合理调整以满足正常的教学。最终我们决定将机房电脑系统换为 Fedora。
### 以前的设置
我们过去的解决方案是在 Ubuntu 系统上面安装 Windows [虚拟机][4]并在虚拟机下安装好教学所需的开发软件。这在当时看起来是一个很不错的主意。然而,这种方法有很多弊端。首先,因为运行虚拟机导致了严重的计算机性能的浪费。因为运行虚拟机导致计算机性能利用率不高和操作系统的运行速度降低。此外,虚拟机有时候会在另一个用户会话里面同时运行。这会导致计算机工作效率的严重降低。我们有限的宝贵时间不应该花费在启动电脑和启动虚拟机上。最后,我们意识到我们的大部分教学所需软件都有对应的 Linux 版本。虚拟机不是必需的。我们不得不寻找一个更好的解决办法。
### 进入 Fedora!
![Computer lab in Serbia powered by Fedora](https://cdn.fedoramagazine.org/wp-content/uploads/2016/10/jxXtuFO-1024x576.jpg)
默认运行 Fedora 工作站版本的一个机房的照片
我们思考过暂时替代以前的安装 Windows 虚拟机方案。我们最终决定使用 Fedora 有很多原因。
#### 发展的前沿
在我们所教授的课程中,我们会用到很多各种各样的开发工具。因此,我们能及时获取到最新的、最好用的开发工具很重要。在 Fedora 下,我们发现我们用到的开发工具有 95% 都能够在官方的软件仓库中找到。只有少量的一些工具,我们不得不手动安装。这在 Fedora 下很简单,因为你能获取到几乎所有的能开箱即用的开发工具。
我们意识到在这个过程中我们使用了大量自由、开源的软件和工具。这些软件总是能够及时更新并且可以用来做大量的工作而不仅仅局限于 Fedora 平台。
#### 硬件兼容性
我们选择 Fedora 用作机房的第二个原因是硬件兼容性。机房现在的电脑还是比较崭新的。过去比较低的内核版本总有些问题。在 Fedora 下,我们发现我们总能获得最新的内核版本。正如我们预期的那样,一切运行完美,没有任何差错。
我们决定我们最终会使用带有 [GNOME 桌面环境][2]的 Fedora [工作站版本][3]。学生群体通过使用这个版本的 Fedora 会发现很容易、直观、快速的上手。学生有一个简单舒适的环境对我们很重要,这样他们会更多的关注自己的任务和课程本身而不是一个复杂的或者运行缓慢的用户界面。
#### 自主的技术支持
最近,我们院系给予自由、开放源代码的软件很高的评价。通过使用这些软件,学生们即便在毕业后和工作的时候,仍然能够继续自由地使用它们。在这个过程中,他们通常也对 Fedora 和自由、开源的软件有一定了解。
### 转换机房
我们将机房的一台电脑完全手动安装。包括准备所有必要的脚本和软件,设置远程控制权限和一些其他的重要组成部分。我们也为每一门课程单独设置一个用户以方便学生存储他们的文件。
一台电脑安装配置好后,我们使用一个强大的、免费的、开源的叫做 [CloneZilla][1] 的工具。 CloneZilla 能够让我们为硬盘镜像做备份。镜像大小约为 11 G。我们用一些带有高速 USB 3.0 接口的闪存来还原磁盘镜像到剩余的电脑。我们仅仅利用若干个闪存设备花费了 75 分钟设置好剩余的 24 台电脑。
### 将来的工作
我们机房现在所有的电脑都完全使用 Fedora (没有虚拟机)。剩下的工作是设置一些管理脚本方便远程安装软件,电脑的开关等等。
我们由衷地感谢所有 Fedora 的维护人员,包制作人员和其他贡献者。我们希望我们的工作能够鼓励其他的学校和大学像我们一样将机房电脑的操作系统转向 Fedora。我们很高兴地确认了 Fedora 完全适合我们同时我们也担保 Fedora 同样适合你。
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/fedora-computer-lab-university/
作者:[Nemanja Milošević][a]
译者:[WangYueScream](https://github.com/WangYueScream)[LemonDemo](https://github.com/LemonDemo)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/nmilosev/
[1]:http://clonezilla.org/
[2]:https://www.gnome.org/
[3]:https://getfedora.org/workstation/
[4]:https://en.wikipedia.org/wiki/Virtual_machine
[5]:http://www.dmi.rs/

View File

@ -0,0 +1,89 @@
开源 vs. 闭源
===========================
[![开源 vs. 闭源](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/open-source-vs-closed-source_orig.jpg)][2]
**开源操作系统**和**闭源操作系统**之间有诸多不同。这里我们仅寥书几笔。
### 开源是什么?自由!
[![开源是什么?](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/what-is-open-source.jpg?250)][1]
这是用户需要知道的最重要的一点。无论我是否打算修改代码,其他人出于善意的修改都不应受到限制。且如果用户喜欢,他们可以分享这个软件。使用**开源**软件,这些都是可能的。
**闭源**操作系统的许可条款很是吓人。但真的所有人都会看吗Nope许多用户只是点了一下Accept
### 价格
几乎所有的开源操纵系统是免费的。仅有自愿性质的捐款。且只需一个安装 **CD/DVD 或 USB** 就能将系统安装到所有你想要安装的电脑上。
闭源操作系统相较于开源 OS 就贵了许多,如果你用它来构建 PC每台 PC 得你花不少于 $100。
我们可以用花在闭源软件上的钱去买更好的东西。
### 选择
开源操作系统的发行版有很多。如果你不中意眼下的这个,你可以尝试其他的发行版,总能找到适合你的那一个。
诸如 Ubuntu studioBio LinuxEdubuntuKali LinuxQubesSteamOS 这些发行版,就是针对特定用户群产生的发行版。
闭源软件有“选择”这种说法吗?我觉得是没有的。
### 隐私
**开源操作系统**无需收集用户数据信息。不会根据用户的个性显示广告,也不会把你的信息卖给第三方机构。如果开发者需要资金,他们会要求捐助,或是在他们的网页上打广告。广告的内容也会与 Linux 相关,对我们有益无害。
你一定知道那个主流的闭源操作系统(名字就不写了,大家都知道的),据说因为收集用户信息这件事,导致多数用户关闭了他们的免费更新服务。多数该系统的用户为了避免升级,将更新功能关闭,他们宁可承担安全风险也不要免费更新。
### 安全
开源软件大多安全。究其缘由不仅有市场占有率低这个原因,其本身的构成方式就比较安全。例如, Qubes Os 是最安全的操作系统之一,它将运行的软件相互隔离。
闭源操作系统向易用性妥协,使其变得愈发脆弱。
### 硬件支持
我们中有大多数人,家里还放着那些不想丢的旧 PC这时一个轻量级的发行版可能会让这些老家伙们重获新生。你可以试试在文章 [5 个适合旧电脑的轻量级 Linux][3] 中罗列的那些轻量级操作系统发行版。基于 Linux 的系统几乎包含所有设备的驱动,所以基本不需要你亲自寻找、安装驱动。
闭源操作系统时不时中止对旧硬件的支持,迫使用户去购买新的硬件。我们还不得不亲自寻找、安装驱动。
### 社区支持
几乎所有的**开源操作系统**都有用户论坛,你可以在那里提问题,并从别的用户那里得到答案。大家在那里分享技巧和窍门,互帮互助。有经验的 Linux 用户往往乐于帮助新手,为此他们常常不遗余力。
**闭源操作系统**社区和开源操作系统社区简直无法相提并论。提出的问题常常得不到回答。
### 商业化
在操作系统上挣钱是非常困难的。开发者一般通过用户的捐款和在网站上打广告来挣钱。捐款主要用于支付主机的开销和开发者的薪水。
许多闭源操作系统,不仅仅通过出售软件的使用许可这种方式来赚钱,还会推送广告大赚一票。
### 垃圾应用
我承认有些开源操作系统会提供一些我们可能一辈子都不会用到的应用,有些人认为他们是垃圾应用。但是也有发行版只提供最小安装,其中就不包含这些不想要的软件。所以,这不是真正的问题。
而所有的闭源操作系统中都包含厂商安装的垃圾应用,强制你安装,就像在安装一个干净系统一样。
开源软件更像是一门哲学。一种分享和学习的方式。甚至还有益于经济。
我们已经将我们知晓的罗列了出来。如果你觉得我们还漏了些什么,可以评论告诉我们。
--------------------------------------------------------------------------------
via: http://www.linuxandubuntu.com/home/open-source-vs-closed-source
作者:[Mohd Sohail][a]
译者:[martin2011qi](https://github.com/martin2011qi)
校对:[jasminepeng](https://github.com/jasminepeng)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://www.linkedin.com/in/mohdsohail
[1]:http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/what-is-open-source_orig.jpg?250
[2]:http://www.linuxandubuntu.com/home/open-source-vs-closed-source
[3]:http://www.linuxandubuntu.com/home/5-lightweight-linux-for-old-computers

View File

@ -1,190 +0,0 @@
写一个比setTimeout更棒的javascript框架
===================
这是JavaScript框架系列的第二章. 在这一章里, 我打算讲一下浏览器的异步代码不同执行方式. 你将了解定时器和事件循环直接的不同差异, 比如 setTimeout 和 Promises.
这个系列是一个开源的客户端框架, 叫做 NX. 在这个系列里, 我主要解释一下写该框架不得不客服的主要困难. 如果你对NX感兴趣可以参观我们的 [主页][1].
这个系列包含以下几个章节:
1. [项目结构][2]
2. 定时执行 (当前章节)
3. [沙箱代码评估][3]
4. 数据绑定 (part 1)
5. 数据绑定 (part 2)
6. 自定义元素
7. 客户端侧路由
### 异步代码执行
你可能比较熟悉 Promise, process.nextTick(), setTimeout() and maybe requestAnimationFrame() 这些作为异步执行的代码. 它们都是内部事件循环, 但是他们确实有一些不同.
在这一章里, 我将解释它们之间的不同, 然后给大家演示一个先进的定时系统框架, 像NX 这样的框架. 不用我们重新做一个,我们将使用原生的内部循环来达到我们的目的.
### 事件循环
事件循环甚至没有在ES6里提到. JavaScript只有jobs 和 job queues. 更加复杂的事件循环是在NodeJS 和HTML5里分别指定的. 我会在后面详细说明.
事件循环叫做一个理由的循环. 它不停的寻找新的任务来运行. 这个循环中的一次事件叫做tick. 运行tick期间的代码叫做task.
```
while (eventLoop.waitForTask()) {
eventLoop.processNextTask()
}
```
Tasks 是同步代码他可以在其它的循环中调用. 一个简单的调用新任务的方式是setTimeout(taskFn). 不管怎样, tasks可能有很多比如 用户事件, networking 或者 DOM 操作.
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_event_lopp_with_tasks-1470127590983.svg)
### 任务队列
简单来说, 事件循环可以有多个任务队列. 这里有两个约束条件,相同数据源的事件必须在相同的队列以及任务必须做插入顺序处理. 除此之外, 浏览器可以做任何他想做的事情. 例如, 它可以决定接下来处理哪个任务队列.
```
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
}
```
用这个模型, 我们不能精确的控制定时. 如果用setTimeout()浏览器可能决定先运行完其它几个队列才运行我们的队列.
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_event_loop_with_task_queues-1470127624172.svg)
### The microtask queue
幸运的是, 事件循环还提供了单个队列叫做microtask队列. 当前任务结束的时候microtask队列会清空每个tick里的任务.
```
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
const microtaskQueue = eventLoop.microTaskQueue
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask()
}
}
```
最简单的调用microtask的方法是Promise.resolve().then(microtaskFn). Microtasks做插入顺序的处理, 并且由于仅存在一个microtask队列, 现在浏览器对于我们来说并不是杂乱无章的了.
此外, microtasks 可以安排新的 microtasks插入到相同的队列.
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_event_loop_with_microtask_queue-1470127679393.svg)
### 绘制
最后是绘制调度. 不同于事件处理和分解, 绘制并不是在后台任务完成的. 它是在每个循环tick结束时运行的算法.
在这里浏览器又有了许多自由: 他可能在每个任务以后绘制, 但是他也肯能在好几百个任务都执行了以后也不绘制.
幸运的是, 我们有 requestAnimationFrame(), 它表示在下一个绘制之前执行. 我们最终的模型像这样.
```
while (eventLoop.waitForTask()) {
const taskQueue = eventLoop.selectTaskQueue()
if (taskQueue.hasNextTask()) {
taskQueue.processNextTask()
}
const microtaskQueue = eventLoop.microTaskQueue
while (microtaskQueue.hasNextMicrotask()) {
microtaskQueue.processNextMicrotask()
}
if (shouldRender()) {
applyScrollResizeAndCSS()
runAnimationFrames()
render()
}
}
```
现在用我们所知道知识来创建定时系统!
### 利用事件循环
和大多数现代框架一样, NX 也是基于 DOM 操作和 后台数据绑定的.在批操作和异步执行方面有更好的性能表现. 基于以上理由我们用 Promises, MutationObservers and requestAnimationFrame().
我们所期望的定时器是这样的:
1. 代码来自于开发者
2. 数据绑定和DOM操作由NX来执行
3. developer定义HOOKS
4. 浏览器进行绘制
#### 步骤 1
NX 寄存器对象基于ES6转变 以及 DOM转换基于MutationObserver(变动观测器)同步运行(下一节详细介绍). 它作为一个microtasks延迟直到步骤 2 执行以后才有反应. 这个延迟已经在 Promise.resolve().then(reaction) 进行了对象转换, 并且它将通过变动观测器自动运行.
#### 步骤 2
开发人员完成了代码(任务). NX的microtask反应注册器开始运行. 当它们进入队列运行. 注意我们仍然在同一个tick循环中.
#### 步骤 3
开发者通过requestAnimationFrame(hook)通知NX运行hooks. 这可能在tick循环后发生. 重要的是hooks运行在下一次绘制之前和所以数据操作之后, 并且DOM和CSS改变都已经完成 .
#### 步骤 4
浏览器绘制下一个视图. 这也有可能发生在tick循环之后, 但是绝对不会发生在步骤3的tick之前.
### 牢记在心里的事情
我们实现了一简单而有效的定时系统. 理论上讲它运行的很好, 但是还是很脆弱, 一个轻微的错误可能会导致很严重的BUG.
在一个复杂的系统当中, 最重要的就是建立一定的规则并在以后保持它们. 在NX中有以下规则.
1. 永远不用setTimeout(fn, 0)来进行内部操作
2. 用相同的方法来注册microtasks
3. microtasks仅供内部操作
4. 不要干预开发者hook运行时间
#### 规则 1 和 2
序列化数据和DOM操作. 这样只要不混合就可以很好的延迟它们. 混合执行会出现莫名其妙的问题.
setTimeout(fn, 0) 完全不可预测. 使用不同的方法注册microtasks也会发生混乱. 例如 下面的例子中microtask2不会在 microtask1之前正确运行.
```
Promise.resolve().then().then(microtask1)
Promise.resolve().then(microtask2)
```
![](https://risingstack-blog.s3.amazonaws.com/2016/Aug/Execution_timing_microtask_registration_method-1470127727609.svg)
#### 规则 3 和 4
分离开发者的代码执行和内部操作是非常重要的. 混合这两种行为会导致不可预测的事情发生, 并且它会迫使开发者了解框架内部. 我想很多前台开发者已经有过类似经历.
### 结论
如果你对 NX 框架感兴趣, 可以参观我们的主页. 还可以再GIT上找到我们的源代码 [NX source code][5] .
在下一节我们再见 [sandboxed code evaluation][4]!
你也可以给我们留言.
--------------------------------------------------------------------------------
via: https://blog.risingstack.com/writing-a-javascript-framework-execution-timing-beyond-settimeout/?utm_source=javascriptweekly&utm_medium=email
作者:[Bertalan Miklos][a]
译者:[kokialoves](https://github.com/kokialoves)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://blog.risingstack.com/author/bertalan/
[1]: http://nx-framework.com/
[2]: https://blog.risingstack.com/writing-a-javascript-framework-project-structuring/
[3]: https://blog.risingstack.com/writing-a-javascript-framework-sandboxed-code-evaluation/
[4]: https://blog.risingstack.com/writing-a-javascript-framework-sandboxed-code-evaluation/
[5]: https://github.com/RisingStack/nx-framework

View File

@ -1,212 +0,0 @@
翻译完成 by zky001
如何通过最后修改的日期和时间对ls命令的输出进行排序
============================================================
Linux用户常常做的一个事情是是在命令行[列出目录内容][1]。
我们已经知道,[ls][2]和[dir][3]是两个可用在列出目录内容的Linux命令前者是更受欢迎的在大多数情况下是用户的首选。
我们列出目录内容,可以按照不同的标准进行排序,例如文件名,修改时间,添加时间,版本或者文件大小。
可以通过指定一个特别的参数来使用这些文件的属性进行排序。
在这个简洁的[ls命令指导][4]中,我们将看看如何通过上次修改时间 (日期和时分秒)[排序ls命令的输出结果][5] 。
让我们由执行一些基本的[ls命令][6]开始
### Linux基本ls命令
1. 不带任何参数运行ls命令将列出当前工作目录的内容。
```
$ ls
```
[![List Content of Working Directory](http://www.tecmint.com/wp-content/uploads/2016/10/List-Content-of-Working-Directory.png)][7]
列出工作目录的内容
2.要列出任何目录的内容,例如 /etc 目录使用:
```
$ ls /etc
```
[![List Contents of Directory](http://www.tecmint.com/wp-content/uploads/2016/10/List-Contents-of-Directory.png)][8]
列出工作目录/etc的内容
3.一个目录总是包含一些隐藏的文件(至少有两个),因此,要展示目录中的所有文件,使用“-a”或“-all”标志:
```
$ ls -a
```
[![List Hidden Files in Directory](http://www.tecmint.com/wp-content/uploads/2016/10/List-Hidden-Files-in-Directory.png)][9]
列出工作目录的隐藏文件
4.你还可以打印输出的每一个文件的详细信息,例如文件权限,链接数,
所有者名称和组所有者,文件大小,最后修改的时间和文件/目录名称。
这是由` -l `选项来设置,这意味着一个如下面的屏幕截图般的长长的列表格式
```
$ ls -l
```
[![Long List Directory Contents](http://www.tecmint.com/wp-content/uploads/2016/10/ls-Long-List-Format.png)][10]
长列表目录内容
###基于日期和基于时刻排序文件
5.
要在目录中列出文件并[对最后修改日期和时间进行排序][11],在下面的命令中使用“-t”选项:
```
$ ls -lt
```
[![Sort ls Output by Date and Time](http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-by-Date-and-Time.png)][12]
按日期和时间排序ls输出内容
6.
如果你想要一个基于日期和时间的逆向排序文件,你可以使用“-r”选项来工作像这样
```
$ ls -ltr
```
[![Sort ls Output Reverse by Date and Time](http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-Reverse-by-Date-and-Time.png)][13]
按日期和时间排序的逆向输出
我们将在这里结束,但是,有更多的使用信息和选项在[ls命令][14]
因此,使它成为一个点来看看它或任何其他指南提供[每一个用户应该知道ls的命令技巧][15]或[使用排序命令][16]。
最后但并非最不重要的,你可以通过以下反馈部分联系我们
--------------------------------------------------------------------------------
via: http://www.tecmint.com/sort-ls-output-by-last-modified-date-and-time
作者:[Aaron Kili][a]
译者:[zky001](https://github.com/zky001)
校对:[校对者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/file-and-directory-management-in-linux/
[2]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/
[3]:http://www.tecmint.com/linux-dir-command-usage-with-examples/
[4]:http://www.tecmint.com/tag/linux-ls-command/
[5]:http://www.tecmint.com/sort-command-linux/
[6]:http://www.tecmint.com/15-basic-ls-command-examples-in-linux/
[7]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Content-of-Working-Directory.png
[8]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Contents-of-Directory.png
[9]:http://www.tecmint.com/wp-content/uploads/2016/10/List-Hidden-Files-in-Directory.png
[10]:http://www.tecmint.com/wp-content/uploads/2016/10/ls-Long-List-Format.png
[11]:http://www.tecmint.com/find-and-sort-files-modification-date-and-time-in-linux/
[12]:http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-by-Date-and-Time.png
[13]:http://www.tecmint.com/wp-content/uploads/2016/10/Sort-ls-Output-Reverse-by-Date-and-Time.png
[14]:http://www.tecmint.com/tag/linux-ls-command/
[15]:http://www.tecmint.com/linux-ls-command-tricks/
[16]:http://www.tecmint.com/linux-sort-command-examples/

View File

@ -0,0 +1,108 @@
在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镜像
Now you can go inside the mounted directory (/mnt/iso) and access the files or copy the files to `/tmp`directory using [cp command][2].
现在你就可以进入到挂载目录/mnt/iso里查看文件或者使用cp命令把文件复制到/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选项用于递归复制目录里的内容。如有必要你也可以监控复制命令的完成进度。
### 使用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)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,111 +0,0 @@
# 在Linux上使用Glyphr设计自己的字体
LibreOffice 提供了丰富的字体, 并且用户可以自由选择和下载增加自己的字体.即使你想创造自己的字体, 同样也可以非常简单的使用Glyphr创建.Glyphr可以直观的新开源字体设计器, 使用简单的交互界面和覆盖字体设计每一部分的强大功能集.虽然应用还在早起开发阶段, 但是这已经很强大了. 下面将会有一个简短的快速入门教你如何使用Glyphr创建字体并加入LibreOffice.
首先, 从官方Git库下载Glyphr([https://github.com/glyphr-studio/Glyphr-Studio-Desktop][14]). 它提供32位和64位版本.完成下载后, 进入下载文件夹, 解压文件, 进入解压文件, 右键点击Glyphr Studio, 选择"Run".
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_1.png)
][13]
启动应用后会给你三个选项.一个是从头创建一个新的字体集. 第二个是读取已经存在的项目,可以是Glyphr Studio项目文件, 也可以是其他开源或ttf, 甚至是SVG字体.第三个是读取已有示例,然后可以在示例上修改创建.我将会选择第一个选项,并教你一些简单的设计概念.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_2.png)
][12]
完成进入编辑界面后, 你可以从左边的面板中选择字母,然后在右边的区域设计. 我选择A字母开始编辑.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_3.png)
][11]
要在绘图板上设计一些东西,我们可以从板的左上角选择矩形,椭圆形或者路径共享的“形状”工具,也可以使用工具的第二行的第一项的路径编辑工具。使用任意工具,开始在板上放点来创建形状。添加的点数越多, 接下来设计的形状选项就越大。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_4.png)
][10]
点移动到不同位置可以获得不同的路径, 可以使用路径编辑工具右边的路径编辑,点击会出现可编辑点.然后拖到任意点到你喜欢的位置.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_5.png)
][9]
最后,形状编辑工具帮助选择形状并将其拖动到位置,更改其尺寸以及旋转。
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_6.png)
][8]
在进入了字母设计阶段,其他有用的设计动作集合是左侧面板提供的复制-粘贴, 翻转-旋转操作.来看个例子,假设我现在正在创作B字母, 我要下部分镜像已经创建好的上部分一样,保持良好的水平和一致性.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_7.png)
][7]
现在, 为了达到这个目的, 选择形状编辑工具, 选中欲编辑部分, 点击复制操作, 然后点击图形以外的地方, 在需要的位置粘贴,加上水平翻转或者垂直翻转到达目的.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_8.png)
][6]
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_9.png)
][5]
这款应用在太多地方可以讲述.如果有兴趣深入,可以深入了解数字话编辑,弯曲和引导等等.
然而,字体并不是仅仅是单个字体的设计, 还需要发现字体设计的其他方面.通过应用左上角菜单栏上的"导航"还可以设置字间距, 斜体, 常规字体设置等.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_10.png)
][4]
最棒的是你可以使用"测试驱动"来使用你的新字体, 帮助你判断字体设计如何, 间距对不对, 最大化来优化你的字体.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_11.png)
][3]
完成设计和优化后, 我们还可以导出ttf和svg格式.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_12.png)
][2]
将新的字体加入到系统中, 打开字体浏览器并点击"安装"按钮. 如果它没有任何反应, 可以在主目录下创建一个新的文件夹叫做".fonts",并将字体复制进去.也可以使用root用户打开文件管理器, 进入/usr/share/fonts/opentype, 穿件一个新的文件夹并粘贴新的文件.然后打开终端,输入命令重建字体缓存"sudo fc-cache -f -v"
在LibreOffice中已经可以看见新的字体咯, 同样也可以使用Gedit来测试新字体.
[
![](https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/pic_13.png)
][1]
--------------------------------------------------------------------------------
via: https://www.howtoforge.com/tutorial/how-to-design-and-add-your-own-font-on-linux-with-glyphr/
作者:[Bill Toulas][a]
译者:[VicYu/Vic020](http://vicyu.net)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://twitter.com/howtoforgecom
[1]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_13.png
[2]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_12.png
[3]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_11.png
[4]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_10.png
[5]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_9.png
[6]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_8.png
[7]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_7.png
[8]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_6.png
[9]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_5.png
[10]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_4.png
[11]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_3.png
[12]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_2.png
[13]:https://www.howtoforge.com/images/how-to-design-and-add-your-own-font-on-linux-with-glyphr/big/pic_1.png
[14]:https://github.com/glyphr-studio/Glyphr-Studio-Desktop

View File

@ -1,59 +0,0 @@
OneNewLife translated
什么时候用 NGINX 来取代 Apache
=====
>两者都是主流的开源网络服务器,但是据 NGINX 的首席执行官 Gus Robertson 所言,他们有不同的使用场景。还有微软呢?他们家的服务器的活跃网站份额在 20 年间首次跌破 10%。
![web 服务器热度2016 年 10 月](http://zdnet1.cbsistatic.com/hub/i/r/2016/11/07/f38d190e-046c-49e6-b451-096ee0776a04/resize/770xauto/b009f53417e9a4af207eff6271b90c43/web-server-popularity-october-2016.png)
Apache 是最受欢迎的网络服务器,不过 NGINX 正迎头直上,而微软的 IIS 几十年来首次跌破 10%。
[NGINX][4] 已经成为第二大网络服务器。它在很久以前就已经超越了[微软因特网信息服务IIS][5],并且一直在老大 [Apache][6] 的身后穷追不舍。但是NGINX 的首席执行官在接受采访时表示Apache 和 NGINX 的用户群体不一样。
“我认为 Apache 是一个伟大的网络服务器。NGINX 和它的使用场景不同”Robertson 说。“我们没有把 Apache 当成竞争对手。我们的用户使用 NGINX 来取代硬件负载均衡器和构建微服务,这两个都不是 Apache 的长处。”
事实上Robertson 发现许多用户同时使用了两种开源的网络服务。“用户会在 Apache 的上层使用 NGINX 来实现负载均衡。我们的架构是完全不同的,我们可以做更好的并发网络服务。”他还表示 NGINX 在云配置方面的表现更优秀。
他总结说,“我们是唯一一个仍然在持续增长的网络服务器,其它的网络服务器都在慢慢成为明日黄花。”
这些增长,加上微软损失的 120 万个活跃站点,导致微软的活跃网站份额下降到 9.27%,这是他们第一次跌破 10%。Apache 的市场份额提高了 0.19%,并继续领跑市场,现在坐拥 46.3% 的活跃站点。尽管如此,多年来 Apache 一直在缓慢下降,而 NGINX 现在上升到了 19%。这不太准确。根据[Netcraft 十月份的网络服务器调查][7]Apache 当月的活跃网站增加得最多,获得了 180 万个新站点,而 NGINX 增加了 40 万个新站点,增长率排第二。
NGINX 的开发者正在努力创造他们的开放商业网络服务器 —— [NGINX Plus][8]通过不断的改进使其变得更有竞争力。NGINX Plus 最新的 [第 11 个发行版R11][9]发行了,这个版本更易于扩展和自定义,并支持更广泛的部署。
这次最大的补充是 [动态模块][10] 的二进制兼容性。这意味着通过 [开源 NGINX 软件][11] 编译的动态模块可以加载到 NGINX Plus。
这意味着你可以利用大量的 [第三方 NGINX 模块][12] 来扩展 NGINX Plus 的功能,仿照一系列开源和商业化的生产模块。开发者可以基于支持 NGINX Plus 的内核创建自定义扩展、附加组件和新产品。
NGINX Plus R11 还增强了其它功能:
* [提升 TCP/UDP 负载均衡][1] —— 新功能包括 SSL 服务器路由、新的日志功能、附加变量以及改进的代理协议支持。这些新功能增强了调试功能,使你能够支持更广泛的企业应用。
* [更好的 IP 定位][2] —— 第三方的 GeoIP2 模块现在已经通过认证,并提供给 NGINX Plus 用户。这个新版本提供比原来的 GeoIP 模块更精准和丰富的位置信息。
* [增强的 nginScript 模块][3] —— nginScript 是基于 JavaScript 的 NGINX Plus 的下一代配置语言。新功能可以让你在流TCP/UDP模块中即时修改请求和响应数据。
The end result? NGINX is poised to continue to make the race for the top web server a two-horse race. Microsoft IIS? It continues to slowly fade away.
最终结果NGINX 准备继续与 Apache 竞争顶级网络服务器的宝座。至于微软的 IIS它将逐渐消亡。
--------------------------------------------------------------------------------
via: http://www.zdnet.com/article/when-to-use-nginx-instead-of-apache/
作者:[ Steven J. Vaughan-Nichols][a]
译者:[OneNewLife](https://github.com/OneNewLife)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:http://www.zdnet.com/meet-the-team/us/steven-j-vaughan-nichols/
[1]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-tcp-udp-lb
[2]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-geoip2
[3]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-nginScript
[4]:https://www.nginx.com/
[5]:https://www.iis.net/
[6]:https://httpd.apache.org/
[7]:https://news.netcraft.com/archives/2016/10/21/october-2016-web-server-survey.html
[8]:https://www.nginx.com/products/
[9]:https://www.nginx.com/blog/nginx-plus-r11-released/
[10]:https://www.nginx.com/blog/nginx-plus-r11-released/?utm_source=nginx-plus-r11-released&utm_medium=blog#r11-dynamic-modules
[11]:https://www.nginx.com/products/download-oss/
[12]:https://www.nginx.com/resources/wiki/modules/index.html?utm_source=nginx-plus-r11-released&utm_medium=blog

View File

@ -0,0 +1,74 @@
# 火狐是否在未经授权的情况下搜集您的数据?
![Mozilla Firefox collects your data](https://iwf1.com/wordpress/wp-content/uploads/2016/11/Mozilla-Firefox-collects-your-data-730x429.jpg)
使用Firefox Web浏览器打包的地理位置服务即使其被关闭也会在后台运行。
我们还没有从关于浏览器插件丑闻的新闻中恢复过来。插件原本目的是保卫隐私,**但现在却把信息卖给了第三方公司**。然而更令人愤怒的是其规模完全超出我们的预期。
**MLS**是Mozilla位置服务其架构类似于WIFI接入点、无线电基站和蓝牙信标可以让让设备通过网络确定其位置。
MLS非常像是Google位置服务后者是需要在Android设备上打开GPS并选择“高精度”模式时使用的服务。
那些曾经经历过GPS问题的人可能会知道这个模式是多么精确。
MLS服务除了能够准确地确定您的位置以外通过使用WiFi网络的服务能够收集两种个人身份信息包括
**对数据库做出贡献的用户**和**被扫描的WiFi设备的所有者**。
话虽这么说Mozilla也提到说你可以选择退出服务但你真的可以退出吗
### 当后台变成你隐私的展台
作为一个众包项目为了维护和发展MLSMozilla事实上非常依赖于用户的贡献因此他们开发了多种方法以便用户参与进来。
其中之一就是被终端用户使用的一款名为Stumbler的Android应用程序
> Mozilla Stumbler是一个开源的无线网络扫描器它为我们的crowd-sourced位置数据库收集GPS蜂窝和无线网络元数据。[1]
这样以来Stumbler不仅仅是一个独立的应用程序同时也是Firefox 在Android设备上提供的一种为MLS“贡献数据和增强功能”的服务。
该服务的问题在于它在后台运行,而大多数用户都不知道它,**即使您可能已经禁用它**。
根据Mozilla提供的信息 [1]要启用该服务您需要打开设置菜单在Firefox for Android版本中 - >打开隐私部分 - >滚动到底部以查看数据选择最后勾选Mozilla位置服务框。
[
![Mozilla Location Services is unchecked yet Stumbler is on](http://iwf1.com/wordpress/wp-content/uploads/2016/11/Mozilla-Location-Services-is-unchecked-yet-Stumler-is-on-730x602.jpg)
][3]
Mozilla定位服务尚未勾选但Stumbler已开启
实际上你会发现Stumbler服务**正在你的设备后台运行**这意味着它几乎不可见因为它没有接口即使MLS框未被选中即使所有的数据选择复选框都未选中甚至Firefox浏览器本身已被关闭。
显然停止stumbler的唯一方法是直接结束它。然而这样做你首先需要一种方法来检测它的运行和结束最终这只是一个设备重启前的临时解决方案。
### 如何保证安全
为了避免MLS收集您的数据仍然有一些方法值得您尝试一下希望这些方法不会像在Firefox for Android中的MLS复选框一样被Mozilla忽视。
您可以将您的无线网络SSID隐藏或者在SSID结尾添加“_nomap”,例如将您的SSID从“myWirelessNetwork”更名为“myWirelessNetwork_nomap”。这在向Mozilla的应用程序暗示您不希望参与他们的数据收集活动。
对于Android上的Stumbler服务由于是一个服务而不是进程您可能无法在运行的进程/最近的应用程序列表中看到它。 因此,使用专用应用程序关闭它或启用“开发人员选项”,并转到“运行服务” - >点击Firefox最后停止“stumbler”。
--------------------------------------------------------------------------------
via: https://iwf1.com/is-mozilla-firefox-collecting-your-data-without-your-consent/
作者:[Liron][a]
译者:[flankershen](https://github.com/flankershen)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]:https://iwf1.com/is-mozilla-firefox-collecting-your-data-without-your-consent/
[1]:https://iwf1.com/shock-this-popular-browser-add-on-sells-your-browsing-history/
[2]:https://en.wikipedia.org/wiki/Crowdsourcing
[3]:http://iwf1.com/wordpress/wp-content/uploads/2016/11/Mozilla-Location-Services-is-unchecked-yet-Stumler-is-on.jpg