From c912fb40d1be6fb5e416f8f4e9fb242c6c7cc63b Mon Sep 17 00:00:00 2001 From: qhwdw Date: Mon, 29 Jan 2018 10:22:20 +0800 Subject: [PATCH 01/12] Translating by qhwdw --- .../tech/20170111 When Does Your OS Run.md | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 sources/tech/20170111 When Does Your OS Run.md diff --git a/sources/tech/20170111 When Does Your OS Run.md b/sources/tech/20170111 When Does Your OS Run.md new file mode 100644 index 0000000000..10d0801b14 --- /dev/null +++ b/sources/tech/20170111 When Does Your OS Run.md @@ -0,0 +1,51 @@ +Translating by qhwdw [When Does Your OS Run?][1] +============================================================ + +Here's a question: in the time it takes you to read this sentence, has your OS been running? Or was it only your browser? Or were they perhaps both idle, just waiting for you to do something already? + +These questions are simple but they cut through the essence of how software works. To answer them accurately we need a good mental model of OS behavior, which in turn informs performance, security, and troubleshooting decisions. We'll build such a model in this post series using Linux as the primary OS, with guest appearances by OS X and Windows. I'll link to the Linux kernel sources for those who want to delve deeper. + +The fundamental axiom here is that at any given moment, exactly one task is active on a CPU. The task is normally a program, like your browser or music player, or it could be an operating system thread, but it is one task. Not two or more. Never zero, either. One. Always. + +This sounds like trouble. For what if, say, your music player hogs the CPU and doesn't let any other tasks run? You would not be able to open a tool to kill it, and even mouse clicks would be futile as the OS wouldn't process them. You could be stuck blaring "What does the fox say?" and incite a workplace riot. + +That's where interrupts come in. Much as the nervous system interrupts the brain to bring in external stimuli - a loud noise, a touch on the shoulder - the [chipset][2] in a computer's motherboard interrupts the CPU to deliver news of outside events - key presses, the arrival of network packets, the completion of a hard drive read, and so on. Hardware peripherals, the interrupt controller on the motherboard, and the CPU itself all work together to implement these interruptions, called interrupts for short. + +Interrupts are also essential in tracking that which we hold dearest: time. During the [boot process][3] the kernel programs a hardware timer to issue timer interrupts at a periodic interval, for example every 10 milliseconds. When the timer goes off, the kernel gets a shot at the CPU to update system statistics and take stock of things: has the current program been running for too long? Has a TCP timeout expired? Interrupts give the kernel a chance to both ponder these questions and take appropriate actions. It's as if you set periodic alarms throughout the day and used them as checkpoints: should I be doing what I'm doing right now? Is there anything more pressing? One day you find ten years have got behind you. + +These periodic hijackings of the CPU by the kernel are called ticks, so interrupts quite literally make your OS tick. But there's more: interrupts are also used to handle some software events like integer overflows and page faults, which involve no external hardware. Interrupts are the most frequent and crucial entry point into the OS kernel. They're not some oddity for the EE people to worry about, they're the mechanism whereby your OS runs. + +Enough talk, let's see some action. Below is a network card interrupt in an Intel Core i5 system. The diagrams now have image maps, so you can click on juicy bits for more information. For example, each device links to its Linux driver. + +![](https://manybutfinite.com/img/os/hardware-interrupt.png) + +Let's take a look at this. First off, since there are many sources of interrupts, it wouldn't be very helpful if the hardware simply told the CPU "hey, something happened!" and left it at that. The suspense would be unbearable. So each device is assigned an interrupt request line, or IRQ, during power up. These IRQs are in turn mapped into interrupt vectors, a number between 0 and 255, by the interrupt controller. By the time an interrupt reaches the CPU it has a nice, well-defined number insulated from the vagaries of hardware. + +The CPU in turn has a pointer to what's essentially an array of 255 functions, supplied by the kernel, where each function is the handler for that particular interrupt vector. We'll look at this array, the Interrupt Descriptor Table (IDT), in more detail later on. + +Whenever an interrupt arrives, the CPU uses its vector as an index into the IDT and runs the appropriate handler. This happens as a special function call that takes place in the context of the currently running task, allowing the OS to respond to external events quickly and with minimal overhead. So web servers out there indirectly call a function in your CPU when they send you data, which is either pretty cool or terrifying. Below we show a situation where a CPU is busy running a Vim command when an interrupt arrives: + +![](https://manybutfinite.com/img/os/vim-interrupted.png) + +Notice how the interrupt's arrival causes a switch to kernel mode and [ring zero][4] but it does not change the active task. It's as if Vim made a magic function call straight into the kernel, but Vim is still there, its [address space][5] intact, waiting for that call to return. + +Exciting stuff! Alas, I need to keep this post-sized, so let's finish up for now. I understand we have not answered the opening question and have in fact opened up new questions, but you now suspect ticks were taking place while you read that sentence. We'll find the answers as we flesh out our model of dynamic OS behavior, and the browser scenario will become clear. If you have questions, especially as the posts come out, fire away and I'll try to answer them in the posts themselves or as comments. Next installment is tomorrow on [RSS][6] and [Twitter][7]. + +-------------------------------------------------------------------------------- + +via:https://manybutfinite.com/post/when-does-your-os-run/ + +作者:[Gustavo Duarte][a] +译者:[译者ID](https://github.com/译者ID) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://manybutfinite.com/about/ +[1]:https://manybutfinite.com/post/when-does-your-os-run/ +[2]:https://manybutfinite.com/post/motherboard-chipsets-memory-map +[3]:https://manybutfinite.com/post/kernel-boot-process +[4]:https://manybutfinite.com/post/cpu-rings-privilege-and-protection +[5]:https://manybutfinite.com/post/anatomy-of-a-program-in-memory +[6]:https://manybutfinite.com/feed.xml +[7]:http://twitter.com/manybutfinite \ No newline at end of file From 70b050d503d2cfbc10de9735e0b74d75a6f2a7be Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 29 Jan 2018 20:42:53 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E6=9B=B4=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- published/20171112 Love Your Bugs.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/published/20171112 Love Your Bugs.md b/published/20171112 Love Your Bugs.md index acc421da53..b983fae177 100644 --- a/published/20171112 Love Your Bugs.md +++ b/published/20171112 Love Your Bugs.md @@ -186,7 +186,7 @@ $ : 0100100 所有这些 bug 都很容易修复。前两个 bug 出在客户端上,所以我们在 alpha 版本修复了它们,但大部分的客户端还没有获得这些改动。我们在服务器代码中修复了第三个 bug 并部署了新版的服务器。 -#### 📈 +#### 激增 突然日志服务器集群的流量开始激增。客服团队找到我们并问我们是否知道原因。我花了点时间把所有的部分拼到一起。 @@ -203,7 +203,7 @@ $ : 0100100 问题是,处于这种状态的客户端比我们想象的要多很多。任何有一个损坏文件的客户端都会像被关在堤坝里一样,无法再发送日志。现在这个堤坝被清除了,所有这些客户端都开始发送它们的日志目录的剩余内容。 -#### 我们的选择 +#### 我们的选择 好的,现在文件从世界各地的电脑如洪水般涌来。我们能做什么?(当你在一个有 Dropbox 这种规模,尤其是这种桌面客户端的规模的公司工作时,会遇到这种有趣的事情:你可以非常轻易地对自己造成 DDoS 攻击)。 From c8913fbbf22a1c62bb712d9b045f11c880be4d14 Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Mon, 29 Jan 2018 20:59:10 +0800 Subject: [PATCH 03/12] Revert "Translating by qhwdw" --- .../tech/20170111 When Does Your OS Run.md | 51 ------------------- 1 file changed, 51 deletions(-) delete mode 100644 sources/tech/20170111 When Does Your OS Run.md diff --git a/sources/tech/20170111 When Does Your OS Run.md b/sources/tech/20170111 When Does Your OS Run.md deleted file mode 100644 index 10d0801b14..0000000000 --- a/sources/tech/20170111 When Does Your OS Run.md +++ /dev/null @@ -1,51 +0,0 @@ -Translating by qhwdw [When Does Your OS Run?][1] -============================================================ - -Here's a question: in the time it takes you to read this sentence, has your OS been running? Or was it only your browser? Or were they perhaps both idle, just waiting for you to do something already? - -These questions are simple but they cut through the essence of how software works. To answer them accurately we need a good mental model of OS behavior, which in turn informs performance, security, and troubleshooting decisions. We'll build such a model in this post series using Linux as the primary OS, with guest appearances by OS X and Windows. I'll link to the Linux kernel sources for those who want to delve deeper. - -The fundamental axiom here is that at any given moment, exactly one task is active on a CPU. The task is normally a program, like your browser or music player, or it could be an operating system thread, but it is one task. Not two or more. Never zero, either. One. Always. - -This sounds like trouble. For what if, say, your music player hogs the CPU and doesn't let any other tasks run? You would not be able to open a tool to kill it, and even mouse clicks would be futile as the OS wouldn't process them. You could be stuck blaring "What does the fox say?" and incite a workplace riot. - -That's where interrupts come in. Much as the nervous system interrupts the brain to bring in external stimuli - a loud noise, a touch on the shoulder - the [chipset][2] in a computer's motherboard interrupts the CPU to deliver news of outside events - key presses, the arrival of network packets, the completion of a hard drive read, and so on. Hardware peripherals, the interrupt controller on the motherboard, and the CPU itself all work together to implement these interruptions, called interrupts for short. - -Interrupts are also essential in tracking that which we hold dearest: time. During the [boot process][3] the kernel programs a hardware timer to issue timer interrupts at a periodic interval, for example every 10 milliseconds. When the timer goes off, the kernel gets a shot at the CPU to update system statistics and take stock of things: has the current program been running for too long? Has a TCP timeout expired? Interrupts give the kernel a chance to both ponder these questions and take appropriate actions. It's as if you set periodic alarms throughout the day and used them as checkpoints: should I be doing what I'm doing right now? Is there anything more pressing? One day you find ten years have got behind you. - -These periodic hijackings of the CPU by the kernel are called ticks, so interrupts quite literally make your OS tick. But there's more: interrupts are also used to handle some software events like integer overflows and page faults, which involve no external hardware. Interrupts are the most frequent and crucial entry point into the OS kernel. They're not some oddity for the EE people to worry about, they're the mechanism whereby your OS runs. - -Enough talk, let's see some action. Below is a network card interrupt in an Intel Core i5 system. The diagrams now have image maps, so you can click on juicy bits for more information. For example, each device links to its Linux driver. - -![](https://manybutfinite.com/img/os/hardware-interrupt.png) - -Let's take a look at this. First off, since there are many sources of interrupts, it wouldn't be very helpful if the hardware simply told the CPU "hey, something happened!" and left it at that. The suspense would be unbearable. So each device is assigned an interrupt request line, or IRQ, during power up. These IRQs are in turn mapped into interrupt vectors, a number between 0 and 255, by the interrupt controller. By the time an interrupt reaches the CPU it has a nice, well-defined number insulated from the vagaries of hardware. - -The CPU in turn has a pointer to what's essentially an array of 255 functions, supplied by the kernel, where each function is the handler for that particular interrupt vector. We'll look at this array, the Interrupt Descriptor Table (IDT), in more detail later on. - -Whenever an interrupt arrives, the CPU uses its vector as an index into the IDT and runs the appropriate handler. This happens as a special function call that takes place in the context of the currently running task, allowing the OS to respond to external events quickly and with minimal overhead. So web servers out there indirectly call a function in your CPU when they send you data, which is either pretty cool or terrifying. Below we show a situation where a CPU is busy running a Vim command when an interrupt arrives: - -![](https://manybutfinite.com/img/os/vim-interrupted.png) - -Notice how the interrupt's arrival causes a switch to kernel mode and [ring zero][4] but it does not change the active task. It's as if Vim made a magic function call straight into the kernel, but Vim is still there, its [address space][5] intact, waiting for that call to return. - -Exciting stuff! Alas, I need to keep this post-sized, so let's finish up for now. I understand we have not answered the opening question and have in fact opened up new questions, but you now suspect ticks were taking place while you read that sentence. We'll find the answers as we flesh out our model of dynamic OS behavior, and the browser scenario will become clear. If you have questions, especially as the posts come out, fire away and I'll try to answer them in the posts themselves or as comments. Next installment is tomorrow on [RSS][6] and [Twitter][7]. - --------------------------------------------------------------------------------- - -via:https://manybutfinite.com/post/when-does-your-os-run/ - -作者:[Gustavo Duarte][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://manybutfinite.com/about/ -[1]:https://manybutfinite.com/post/when-does-your-os-run/ -[2]:https://manybutfinite.com/post/motherboard-chipsets-memory-map -[3]:https://manybutfinite.com/post/kernel-boot-process -[4]:https://manybutfinite.com/post/cpu-rings-privilege-and-protection -[5]:https://manybutfinite.com/post/anatomy-of-a-program-in-memory -[6]:https://manybutfinite.com/feed.xml -[7]:http://twitter.com/manybutfinite \ No newline at end of file From 9e1cb763b36a3831bd1da0ed59f7f6901a32fa4d Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 29 Jan 2018 22:10:42 +0800 Subject: [PATCH 04/12] PRF&PUB:20171114 Restore Corrupted USB Drive To Original State In Linux.md @Drshu https://linux.cn/article-9290-1.html --- ...ed USB Drive To Original State In Linux.md | 52 ++++++++----------- 1 file changed, 21 insertions(+), 31 deletions(-) rename {translated/tech => published}/20171114 Restore Corrupted USB Drive To Original State In Linux.md (72%) diff --git a/translated/tech/20171114 Restore Corrupted USB Drive To Original State In Linux.md b/published/20171114 Restore Corrupted USB Drive To Original State In Linux.md similarity index 72% rename from translated/tech/20171114 Restore Corrupted USB Drive To Original State In Linux.md rename to published/20171114 Restore Corrupted USB Drive To Original State In Linux.md index 71aa6d05ec..fd6422e2b9 100644 --- a/translated/tech/20171114 Restore Corrupted USB Drive To Original State In Linux.md +++ b/published/20171114 Restore Corrupted USB Drive To Original State In Linux.md @@ -1,8 +1,6 @@ 在 Linux 上恢复一个损坏的 USB 设备至初始状态 ====== - - ![](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/restore-corrupted-usb-drive-to-original-state-in-linux_orig.jpg) 很多时候我们诸如 SD 卡和 U 盘这样的储存器可能会被损坏,并且因此或其他原因不能继续使用。 @@ -13,56 +11,52 @@ [![Linux 系统磁盘管理器](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/published/usb.png?1510665746)][1] -警告:接下来的操作会将你设备上的所有数据格式化 +**警告:接下来的操作会将你设备上的所有数据格式化。** +无论是上面提及的什么原因,最终的结果是我们无法继续使用这个设备。 - -无论什么原因,最终的结果是我们无法继续使用这个设备。 - -所以这里是一个恢复一个 USB 设备或者是 SD 卡到出厂状态的方法。 +所以这里有一个恢复 USB 设备或者是 SD 卡到出厂状态的方法。 大多数时候通过文件浏览器进行一次简单格式化可以解决问题,但是在一些极端情况下,比如文件管理器没有作用,而你又需要你的设备可以继续工作时,你可以使用下面的指导: -我们将会使用一个叫做 mkusb 的小工具来实现目标,这个工具的安装非常简单。 +我们将会使用一个叫做 `mkusb` 的小工具来实现目标,这个工具的安装非常简单。 +添加 mkusb 的仓库: +``` +sudo apt add repository ppa:mkusb/ppa +``` +现在更新你的包列表: +``` +sudo apt-get update +``` -1. 添加 mkusb 的仓库 +安装 `mkusb: -`sudo apt add repository ppa:mkusb/ppa` +``` +sudo apt-get install mkusb +``` -2. 现在更新你的包列表 - -`sudo apt-get update` - -3. 安装 mkusb - -`sudo apt-get install mkusb` - -现在运行 mkusb 你将会看到这个提示,点击 ‘Yes’。 +现在运行 `mkusb` 你将会看到这个提示,点击 ‘Yes’。 [![运行 mkusb dus](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/editor/run-mkusb.png?1510498592)][2] -现在 mkusb 将会最后一次询问你是否希望继续格式化你的数据,‘Stop’是被默认选择的,你现在选择 ‘Go’并点击‘OK’。 +现在 `mkusb` 将会最后一次询问你是否希望继续格式化你的数据,‘Stop’是被默认选择的,你现在选择 ‘Go’ 并点击 ‘OK’。 [![Linux mkusb](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/editor/final-checkpoint_1.png?1510499627)][3] -窗口将会关闭,摒弃人此时你的终端看起来是这样的。 +窗口将会关闭,此时你的终端看起来是这样的。 [![mkusb usb 控制台](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/editor/mkusb.png?1510499982)][4] 在几秒钟之后,整个过程将会完成,并且你将看到一个这样的弹出窗口。 - - [![恢复损坏的 USB 设备](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/editor/usb_1.png?1510500412)][5] 你现在需要把你的设备从系统推出,然后再重新插进去。你的设备将被恢复成为一个普通设备而且还能像原来一样的工作。 - - [![Linux 磁盘管理器](http://www.linuxandubuntu.com/uploads/2/1/1/5/21152474/editor/usb_2.png?1510500457)][6] 我们现在所做的操作本可以通过终端命令或是 gparted 或者其他的软件来完成,但是那将会需要一些关于分区管理的知识。 @@ -71,23 +65,19 @@ ### 结论 -**mkusb** - -是一个很容易使用的程序,它可以修复你的 USB 储存设备和 SD 卡。mkusb通过 mkusb 的 PPA 来下载。所有在 mkusb 上的操作都需要超级管理员的权限,并且你在这个设备上的所有数据将会被格式化。 +`mkusb` 是一个很容易使用的程序,它可以修复你的 USB 储存设备和 SD 卡。`mkusb` 通过 mkusb 的 PPA 来下载。所有在 `mkusb` 上的操作都需要超级管理员的权限,并且你在这个设备上的所有数据将会被格式化。 一旦操作完成,你将会重置这个设备并让它继续工作。 如果你感到任何疑惑,你可以在下面的评论栏里免费发表。 - - -------------------------------------------------------------------------------- via: http://www.linuxandubuntu.com/home/restore-corrupted-usb-drive-to-original-state-in-linux 作者:[LINUXANDUBUNTU][a] 译者:[Drshu](https://github.com/Drshu) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 From c1e54257e5712d31e33cd153916b7a0ffffb9804 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 29 Jan 2018 22:25:36 +0800 Subject: [PATCH 05/12] PRF&PUB:20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md @CYLeft https://linux.cn/article-9291-1.html --- ... Simulates the display from -The Matrix.md | 139 ++++++++++++++++++ ... Simulates the display from -The Matrix.md | 111 -------------- 2 files changed, 139 insertions(+), 111 deletions(-) create mode 100644 published/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md delete mode 100644 translated/tech/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md diff --git a/published/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md b/published/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md new file mode 100644 index 0000000000..14efe969de --- /dev/null +++ b/published/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md @@ -0,0 +1,139 @@ +Linux/Unix 桌面盛典:模仿 “黑客帝国” 界面! +====== + +《黑客帝国》是 1999 年,由 Wachowki 兄弟编导的科幻动作片。这部电影的荧屏里有无尽的绿色字符降落。数字雨模拟着《黑客帝国》中的虚拟现实活动。现在,Linux 和 Unix 终端上,你也可以通过 CMatrix 模仿出矩阵数字雨。 + +### 安装 cmatrix + +根据你的 Linux/Unix 发行版或操作系统安装并且设置 CMatrix。 + +#### 如何在 Debian/Ubuntu Linux 发行版中安装 cmatrix + +在 Debian/Ubuntu/Mint 系统中键入以下命令 [apt-get 命令][1]/[apt 命令][2]: + +``` +$ sudo apt install cmatrix +``` + +示例输出: + +``` +[sudo] password for vivek: +Reading package lists... Done +Building dependency tree +Reading state information... Done +Suggested packages: + cmatrix-xfont +The following NEW packages will be installed: + cmatrix +0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. +Need to get 15.8 kB of archives. +After this operation, 50.2 kB of additional disk space will be used. +Get:1 http://in.archive.ubuntu.com/ubuntu artful/universe amd64 cmatrix amd64 1.2a-5build2 [15.8 kB] +Fetched 15.8 kB in 0s (19.7 kB/s) +Selecting previously unselected package cmatrix. +(Reading database ... 205388 files and directories currently installed.) +Preparing to unpack .../cmatrix_1.2a-5build2_amd64.deb ... +Unpacking cmatrix (1.2a-5build2) ... +Setting up cmatrix (1.2a-5build2) ... +Processing triggers for man-db (2.7.6.1-2) ... +``` + +#### 如何在 Arch Linux 发行版安装 cmatrix + +键入 pacman 命令: + +``` +$ sudo pacman -S cmatrix +``` + +#### 如何在 FreeBCD 系统中安装 cmatrix + +运行如下命令安装 port: + +``` +# cd /usr/ports/misc/cmatrix/ && make install clean +``` + +或者使用 pkg 命令添加二进制包: + +``` +# pkg install cmatrix +``` + +#### 如何在 macOS Unix 发行版中安装 cmatrix + +键入下列命令: + +``` +$ brew install cmatrix +``` + +#### 如何在 OpenBSD 系统中安装 cmatrix + +键入 pkg_add 命令: + +``` +# pkg_add cmatrix +``` + +### 使用 cmatrix + +简单键入命令: + +``` +$ cmatrix +``` + +[![cmtarix 运转中][3]][3] + +#### 使用键盘 + +在执行期间,下列按键有效(`-s` 模式下,按键无效): + +| 按键 | 说明 | +|---|---| +| `a` | 切换异步滚动 | +| `b` | 随机字符加粗 | +| `B` | 全部字符加粗 | +| `n` | 关闭字符加粗 | +| `0`-`9` | 调整更新时间 | +| `!` `@` `#` `$` `%` `^` `&` `)` | 改变对应的矩阵颜色: `!` – 红、`@` – 绿、`#` – 黄、`$` – 蓝、`%` – 洋红、`^` – 青、 `&` – 白、 `)` – 黑。 | +| `q` | 退出程序 | + +你可以通过以下命令获取 cmatrix 选项: + +``` +$ cmatrix -h +``` + +- `-a`: 异步滚动 +- `-b`: 开启字符加粗 +- `-B`: 所有字符加粗(优先于 -b 选项) +- `-f`: 强制开启 Linux $TERM 模式 +- `-l`: Linux 模式(使用 matrix 控制台字体) +- `-o`: 启用旧式滚动 +- `-h`: 输出使用说明并退出 +- `-n`: 关闭字符加粗 (优先于 -b and -B,默认) +- `-s`: “屏保”模式, 第一次按键时退出 +- `-x`: X 窗口模式,如果你使用的时 mtx.pcf 终端 +- `-V`: 输出版本信息并且退出 +- `-u delay` (0 - 10,默认 4): 屏幕更新延时 +- `-C [color]`: 调整 matrix 颜色(默认绿色) + +现在,你拥有了一款最炫酷的终端应用! + +-------------------------------------------------------------------------------- + +via: https://www.cyberciti.biz/open-source/command-line-hacks/matrix-digital-rain-on-linux-macos-unix-terminal/ + +作者:[nixCraft][a] +译者:[CYLeft](https://github.com/CYLeft) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://www.cyberciti.biz +[1]:https://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html (See Linux/Unix apt-get command examples for more info) +[2]:https://www.cyberciti.biz/faq/ubuntu-lts-debian-linux-apt-command-examples/ (See Linux/Unix apt command examples for more info) +[3]:https://www.cyberciti.biz/media/new/cms/2018/01/small-cmtarix-file.gif diff --git a/translated/tech/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md b/translated/tech/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md deleted file mode 100644 index 7a3a6b6207..0000000000 --- a/translated/tech/20180103 Linux-Unix desktop fun- Simulates the display from -The Matrix.md +++ /dev/null @@ -1,111 +0,0 @@ -Linux/Unix 桌面盛典:伪造“黑客帝国”界面! -====== -《黑客帝国》是 1999 年,由 Wachowki 兄弟撰写的的科幻动作片。这部电影的荧屏里有无尽的绿色字符降落。《黑客帝国》的数字雨模拟着虚拟现实活动。现在,Linux 和 Unix 终端上,你也可以通过 CMatrix 模仿出矩阵数字雨。 - -## 安装 cmatrix - -在你的每一台 Linux/Unix 发行版上安装并且设置 CMatrix。 - -### 如何在 Debian/Ubuntu Linux 发行版中安装 cmatrix - -在 Debian/Ubuntu/Mint 系统中键入以下命令 [apt-get 命令][1]/[apt 命令][2]: -`$ sudo apt install cmatrix` -示例输出: -``` -[sudo] password for vivek: -Reading package lists... Done -Building dependency tree -Reading state information... Done -Suggested packages: - cmatrix-xfont -The following NEW packages will be installed: - cmatrix -0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -Need to get 15.8 kB of archives. -After this operation, 50.2 kB of additional disk space will be used. -Get:1 http://in.archive.ubuntu.com/ubuntu artful/universe amd64 cmatrix amd64 1.2a-5build2 [15.8 kB] -Fetched 15.8 kB in 0s (19.7 kB/s) -Selecting previously unselected package cmatrix. -(Reading database ... 205388 files and directories currently installed.) -Preparing to unpack .../cmatrix_1.2a-5build2_amd64.deb ... -Unpacking cmatrix (1.2a-5build2) ... -Setting up cmatrix (1.2a-5build2) ... -Processing triggers for man-db (2.7.6.1-2) ... -``` - -### 如何在 Arch Linux 发行版安装 cmatrix - -键入 pacman 命令: -`$ sudo pacman -S cmatrix` - -### 如何在 FreeBCD 系统中安装 cmatrix - -安装运行端口: -`# cd /usr/ports/misc/cmatrix/ && make install clean` -或者使用 pkg 命令添加二进制包 -`# pkg install cmatrix` - -### 如何在 macOS Unix 发行版中安装 cmatrix - -键入下列命令: -`$ brew install cmatrix` - -### 如何在 OpenBSD 系统中安装 cmatrix - -键入 pkg_add 命令: -`# pkg_add cmatrix` - -## 使用 cmatrix - -简单模式下,命令: -`$ cmatrix` -[![cmtarix 运转中][3]][3] - -### 使用键盘 - -在执行期间,下列按键有效(-s 模式下,按键无效): -| 按键 | 说明 | -| a | 切换异步滚动 | -| b | 随机字符加粗 | -| B | 字符加粗 | -| n | 关闭字符加粗 | -| 0-9 | 调整更新时间 | -| ! @ # $ % ^ & ) | 改变对应的矩阵颜色: ! – 红, @ – -绿, # – 黄, $ – 蓝, % – 洋红, ^ – 青, & – 白, ) – 黑. | -| q | 退出程序 | - -你可以通过以下命令获取 cmatrix 选项: -`$ cmatrix -h` -示例输出: -``` --a: 异步滚动 - -b: 开启字符加粗 - -B: 所有字符加粗(优先于 -b 选项) - -f: 强制开启 Linux $TERM 模式 - -l: Linux 模式(使用 matrix 控制台字体) - -o: 启用旧式滚动 - -h: 输出使用说明并退出 - -n: 关闭字符加粗 (优先于 -b and -B,默认) - -s: “屏保”模式,, 第一次按键时退出 - -x: X 窗口模式,如果你使用的时 mtx.pcf 终端 - -V: 输出版本信息并且退出 - -u delay (0 - 10, default 4): 屏幕更新延时 - -C [color]: 调整 matrix 颜色(默认绿色) -``` - -现在,你拥有了一款最炫酷的终端软件! - --------------------------------------------------------------------------------- - -via: https://www.cyberciti.biz/open-source/command-line-hacks/matrix-digital-rain-on-linux-macos-unix-terminal/ - -作者:[][a] -译者:[CYLeft](https://github.com/CYLeft) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://www.cyberciti.biz -[1]:https://www.cyberciti.biz/tips/linux-debian-package-management-cheat-sheet.html (See Linux/Unix apt-get command examples for more info) -[2]:https://www.cyberciti.biz/faq/ubuntu-lts-debian-linux-apt-command-examples/ (See Linux/Unix apt command examples for more info) -[3]:https://www.cyberciti.biz/media/new/cms/2018/01/small-cmtarix-file.gif From 1c930cdae85bab068ad1ab6acd42d00a9621650e Mon Sep 17 00:00:00 2001 From: wenwensnow <963555237@qq.com> Date: Mon, 29 Jan 2018 22:42:07 +0800 Subject: [PATCH 06/12] Update 20180125 Linux whereis Command Explained for Beginners (5 Examples).md --- ...Linux whereis Command Explained for Beginners (5 Examples).md | 1 + 1 file changed, 1 insertion(+) diff --git a/sources/tech/20180125 Linux whereis Command Explained for Beginners (5 Examples).md b/sources/tech/20180125 Linux whereis Command Explained for Beginners (5 Examples).md index 45107b050c..2c07001623 100644 --- a/sources/tech/20180125 Linux whereis Command Explained for Beginners (5 Examples).md +++ b/sources/tech/20180125 Linux whereis Command Explained for Beginners (5 Examples).md @@ -1,3 +1,4 @@ +translating by wenwensnow Linux whereis Command Explained for Beginners (5 Examples) ====== From 4bf0d03ac67ca6c0d0819f7e2faf730e6861131a Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 29 Jan 2018 22:43:11 +0800 Subject: [PATCH 07/12] PRF&PUB:20171228 How to exclude file when using scp command recursively.md @geekpi --- ...file when using scp command recursively.md | 102 ++++++++++++++++++ ...file when using scp command recursively.md | 86 --------------- 2 files changed, 102 insertions(+), 86 deletions(-) create mode 100644 published/20171228 How to exclude file when using scp command recursively.md delete mode 100644 translated/tech/20171228 How to exclude file when using scp command recursively.md diff --git a/published/20171228 How to exclude file when using scp command recursively.md b/published/20171228 How to exclude file when using scp command recursively.md new file mode 100644 index 0000000000..20523b6c7c --- /dev/null +++ b/published/20171228 How to exclude file when using scp command recursively.md @@ -0,0 +1,102 @@ +如何在使用 scp 命令时递归地排除文件 +====== + +Q:我需要将所有包含 *.c 文件的文件夹从名为 hostA 的本地笔记本复制到 hostB。我使用的是下面的 `scp` 命令,但不知道如何排除特定的文件(如 *.out): + +``` +$ scp -r ~/projects/ user@hostB:/home/delta/projects/ +``` + +如何告诉 `scp` 命令在 Linux/Unix 命令行中排除特定的文件或目录? + +人们可以使用 `scp` 命令在网络主机之间安全地复制文件。它使用 ssh 进行数据传输和身份验证。典型的语法是: + +``` +scp file1 user@host:/path/to/dest/ +scp -r /path/to/source/ user@host:/path/to/dest/ +``` + +### scp 排除文件 + +我不认为你可以在使用 scp 命令时过滤或排除文件。但是,有一个很好的解决方法来排除文件并使用 ssh 安全地复制它。本页面说明如何在使用 `scp` 递归复制目录时过滤或排除文件。 + +### 如何使用 rsync 命令排除文件 + +语法是: + +``` +rsync av -e ssh --exclude='*.out' /path/to/source/ user@hostB:/path/to/dest/ +``` + +这里: + +1. `-a` :递归到目录,即复制所有文件和子目录。另外,打开归档模式和所有其他选项(相当于 `-rlptgoD`) +2. `-v` :详细输出 +3. `-e ssh` :使用 ssh 作为远程 shell,这样所有的东西都被加密 +4. `--exclude='*.out'` :排除匹配模式的文件,例如 *.out 或 *.c 等。 + + +### rsync 命令的例子 + +在这个例子中,从 `~/virt/` 目录递归地复制所有文件,但排除所有 *.new 文件: + +``` +$ rsync -av -e ssh --exclude='*.new' ~/virt/ root@centos7:/tmp +``` + +示例输出: + +[![Scp exclude files but using rsync exclude command][2]][2] + +如果远程服务器上找不到 `rsync`,那么 `rsync` 命令将失败。在这种情况下,请尝试使用以下 `scp` 命令,该命令在当前目录中使用 [bash shell 模式匹配] [3] (它不能与 `-r` 选项一起使用): + +``` +$ ls +``` + +示例输出: + +``` +centos71.log centos71.qcow2 centos71.qcow2.new centos71.v2.qcow2.new meta-data user-data +``` + +复制除 .new 之外的当前目录中的所有内容: + +``` +$ shopt -s extglob +$ scp !(*.new) root@centos7:/tmp/ +``` + +示例输出: + +``` +centos71.log 100 % 4262 1.3MB/s 00:00 +centos71.qcow2 100 % 836MB 32.7MB/s 00: 25 +meta-data 100 % 47 18.5KB/s 00:00 +user-data 100 % 1543 569.7KB/s 00:00 +``` + +有关更多信息,请参阅以下手册页: + +``` +$ man rsync +$ man bash +$ man scp +``` + +-------------------------------------------------------------------------------- + +via: https://www.cyberciti.biz/faq/scp-exclude-files-when-using-command-recursively-on-unix-linux/ + +作者:[Vivek Gite][a] +译者:[geekpi](https://github.com/geekpi) +校对:[wxy](https://github.com/wxy) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://www.cyberciti.biz +[1]:https://www.cyberciti.biz/cdn-cgi/l/email-protection +[2]:https://www.cyberciti.biz/media/new/faq/2017/12/scp-exclude-files-on-linux-unix-macos-bash-shell-command-line.jpg +[3]:https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html#Pattern-Matching +[4]:https://www.samba.org/ftp/rsync/rsync.html +[5]:https://man.openbsd.org/scp diff --git a/translated/tech/20171228 How to exclude file when using scp command recursively.md b/translated/tech/20171228 How to exclude file when using scp command recursively.md deleted file mode 100644 index e8623baa02..0000000000 --- a/translated/tech/20171228 How to exclude file when using scp command recursively.md +++ /dev/null @@ -1,86 +0,0 @@ -如何在递归地使用 scp 命令时排除文件 -====== - -我需要将所有包含 *.c 文件的文件夹从名为 hostA 的本地笔记本复制到 hostB。我使用的是下面的 scp 命令,但不知道如何排除特定的文件(如 \*.out): -``` -$ scp -r ~/projects/ user@hostB:/home/delta/projects/ -``` -如何告诉 scp 命令在 Linux/Unix 命令行中排除特定的文件或目录? - -人们可以使用 scp 命令在网络主机之间安全地复制文件。它使用 ssh 进行数据传输和身份验证。典型的语法是: - -``` -scp file1 user@host:/path/to/dest/ -scp -r /path/to/source/ user@host:/path/to/dest/ -``` - -## Scp 排除文件 - -我不认为你可以在使用 scp 命令时过滤或排除文件。但是,有一个很好的解决方法来排除文件并使用 ssh 安全地复制它。本页面说明如何在使用 scp 递归复制目录时过滤或排除文件。 - -## 如何使用 rsync 命令排除文件 - -语法是: -`rsync av -e ssh --exclude='*.out' /path/to/source/ [[email protected]][1]:/path/to/dest/` -这里: - - 1. **-a** :递归到目录,即复制所有文件和子目录。另外,打开归档模式和所有其他选项(-rlptgoD) - 2. **-v** :详细输出 - 3. **-e ssh** :使用 ssh 作为远程 shell,这样所有的东西都被加密 - 4. **\--exclude='*.out'** :排除匹配模式的文件,例如 \*.out 或 \*.c 等。 - - -### rsync 命令的例子 - -在这个例子中,从 ~/virt/ 目录递归地复制所有文件,但排除所有 \*.new 文件: -`$ rsync -av -e ssh --exclude='*.new' ~/virt/ [[email protected]][1]:/tmp` -示例输出: -[![Scp exclude files but using rsync exclude command][2]][2] - -如果远程服务器上找不到 rsync,那么 rsync 命令将失败。在这种情况下,请尝试使用以下 scp 命令,该命令在当前目录中使用[ bash shell 模式匹配] [3](它不与 -r 选项一起使用): -`$ ls ` -示例输出: -``` -centos71.log centos71.qcow2 centos71.qcow2.new centos71.v2.qcow2.new meta-data user-data -``` - -centos71.log centos71.qcow2 centos71.qcow2.new centos71.v2.qcow2.new meta-data user-data - -复制除 .new 之外的当前目录中的所有内容: -``` -$ shopt -s extglob -$ scp !(.new)* [[email protected]][1]:/tmp/ -``` -示例输出: -``` -centos71.log 100 % 4262 1.3MB/s 00:00 -centos71.qcow2 100 % 836MB 32.7MB/s 00: 25 -meta-data 100 % 47 18.5KB/s 00:00 -user-data 100 % 1543 569.7KB/s 00:00 -``` - - -有关更多信息,请参阅以下手册页: -``` -$ [man rsync][4] -$ man bash -$ [man scp][5] -``` - - --------------------------------------------------------------------------------- - -via: https://www.cyberciti.biz/faq/scp-exclude-files-when-using-command-recursively-on-unix-linux/ - -作者:[Vivek Gite][a] -译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://www.cyberciti.biz -[1]:https://www.cyberciti.biz/cdn-cgi/l/email-protection -[2]:https://www.cyberciti.biz/media/new/faq/2017/12/scp-exclude-files-on-linux-unix-macos-bash-shell-command-line.jpg -[3]:https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html#Pattern-Matching -[4]:https://www.samba.org/ftp/rsync/rsync.html -[5]:https://man.openbsd.org/scp From 66da7baac7d6909e11e5f407a9cbbe0a5b4f9ca4 Mon Sep 17 00:00:00 2001 From: Wuod3n <33994335+Wuod3n@users.noreply.github.com> Date: Mon, 29 Jan 2018 22:50:32 +0800 Subject: [PATCH 08/12] Delete 20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md --- ...k-backed PyTorch vs Google-s TensorFlow.md | 77 ------------------- 1 file changed, 77 deletions(-) delete mode 100644 sources/talk/20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md diff --git a/sources/talk/20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md b/sources/talk/20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md deleted file mode 100644 index 31dbeb394b..0000000000 --- a/sources/talk/20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md +++ /dev/null @@ -1,77 +0,0 @@ -Translating by Wuod3n -Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow -====== -The rapid rise of tools and techniques in Artificial Intelligence and Machine learning of late has been astounding. Deep Learning, or "Machine learning on steroids" as some say, is one area where data scientists and machine learning experts are spoilt for choice in terms of the libraries and frameworks available. A lot of these frameworks are Python-based, as Python is a more general-purpose and a relatively easier language to work with. [Theano][1], [Keras][2] [TensorFlow][3] are a few of the popular deep learning libraries built on Python, developed with an aim to make the life of machine learning experts easier. - -Google's TensorFlow is a widely used machine learning and deep learning framework. Open sourced in 2015 and backed by a huge community of machine learning experts, TensorFlow has quickly grown to be THE framework of choice by many organizations for their machine learning and deep learning needs. PyTorch, on the other hand, a recently developed Python package by Facebook for training neural networks is adapted from the Lua-based deep learning library Torch. PyTorch is one of the few available DL frameworks that uses tape-based autograd system to allow building dynamic neural networks in a fast and flexible manner. - -In this article, we pit PyTorch against TensorFlow and compare different aspects where one edges the other out. - -Let's get started! - -### What programming languages support PyTorch and TensorFlow? - -Although primarily written in C++ and CUDA, Tensorflow contains a Python API sitting over the core engine, making it easier for Pythonistas to use. Additional APIs for C++, Haskell, Java, Go, and Rust are also included which means developers can code in their preferred language. - -Although PyTorch is a Python package, there's provision for you to code using the basic C/ C++ languages using the APIs provided. If you are comfortable using Lua programming language, you can code neural network models in PyTorch using the Torch API. - -### How easy are PyTorch and TensorFlow to use? - -TensorFlow can be a bit complex to use if used as a standalone framework, and can pose some difficulty in training Deep Learning models. To reduce this complexity, one can use the Keras wrapper which sits on top of TensorFlow's complex engine and simplifies the development and training of deep learning models. TensorFlow also supports [Distributed training][4], which PyTorch currently doesn't. Due to the inclusion of Python API, TensorFlow is also production-ready i.e., it can be used to train and deploy enterprise-level deep learning models. - -PyTorch was rewritten in Python due to the complexities of Torch. This makes PyTorch more native to developers. It has an easy to use framework that provides maximum flexibility and speed. It also allows quick changes within the code during training without hampering its performance. If you already have some experience with deep learning and have used Torch before, you will like PyTorch even more, because of its speed, efficiency, and ease of use. PyTorch includes custom-made GPU allocator, which makes deep learning models highly memory efficient. Due to this, training large deep learning models becomes easier. Hence, large organizations such as Facebook, Twitter, Salesforce, and many more are embracing Pytorch. - -### Training Deep Learning models with PyTorch and TensorFlow - -Both TensorFlow and PyTorch are used to build and train Neural Network models. - -TensorFlow works on SCG (Static Computational Graph) that includes defining the graph statically before the model starts execution. However, once the execution starts the only way to tweak changes within the model is using [tf.session and tf.placeholder tensors][5]. - -PyTorch is well suited to train RNNs( Recursive Neural Networks) as they run faster in [PyTorch ][6]than in TensorFlow. It works on DCG (Dynamic Computational Graph) and one can define and make changes within the model on the go. In a DCG, each block can be debugged separately, which makes training of neural networks easier. - -TensorFlow has recently come up with TensorFlow Fold, a library designed to create TensorFlow models that works on structured data. Like PyTorch, it implements the DCGs and gives massive computational speeds of up to 10x on CPU and more than 100x on GPU! With the help of [Dynamic Batching][7], you can now implement deep learning models which vary in size as well as structure. - -### Comparing GPU and CPU optimizations - -TensorFlow has faster compile times than PyTorch and provides flexibility for building real-world applications. It can run on literally any kind of processor from a CPU, GPU, TPU, mobile devices, to a Raspberry Pi (IoT Devices). - -PyTorch, on the other hand, includes Tensor computations which can speed up deep neural network models upto [50x or more][8] using GPUs. These tensors can dwell on CPU or GPU. Both CPU and GPU are written as independent libraries; making PyTorch efficient to use, irrespective of the Neural Network size. - -### Community Support - -TensorFlow is one of the most popular Deep Learning frameworks today, and with this comes a huge community support. It has great documentation, and an eloquent set of online tutorials. TensorFlow also includes numerous pre-trained models which are hosted and available on [github][9]. These models aid developers and researchers who are keen to work with TensorFlow with some ready-made material to save their time and efforts. - -PyTorch, on the other hand, has a relatively smaller community since it has been developed fairly recently. As compared to TensorFlow, the documentation isn't that great, and codes are not readily available. However, PyTorch does allow individuals to share their pre-trained models with others. - -### PyTorch and TensorFlow - A David & Goliath story - -As it stands, Tensorflow is clearly favoured and used more than PyTorch for a variety of reasons. - -Tensorflow is vast, experienced, and best suited for practical purposes. It is easily the obvious choice of most of the machine learning and deep learning experts because of the vast array of features it offers, and most importantly, its maturity in the market. It has a better community support along with multiple language APIs available. It has a good documentation and is production-ready due to the availability of ready-to-use code. Hence, it is better suited for someone who wants to get started with Deep Learning, or for organizations wanting to productize their Deep Learning models. - -Although PyTorch is relatively newer and has a smaller community, it is fast and efficient. In short, it gives you all the power of Torch wrapped in the usefulness and ease of Python. Because of its efficiency and speed, it is a good option to have for small, research based projects. As mentioned earlier, companies such as Facebook, Twitter, and many others are using Pytorch to train deep learning models. However, its adoption is yet to go mainstream. The potential is evident, PyTorch is just not ready yet to challenge the beast that is TensorFlow. However considering its growth, the day is not far when PyTorch is further optimized and offers more functionalities - to the point that it becomes the David to TensorFlow's Goliath. - -### Savia Lobo -A Data science fanatic. Loves to be updated with the tech happenings around the globe. Loves singing and composing songs. Believes in putting the art in smart. - - --------------------------------------------------------------------------------- - -via: https://datahub.packtpub.com/deep-learning/dl-wars-pytorch-vs-tensorflow/ - -作者:[Savia Lobo][a] -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://datahub.packtpub.com/author/savial/ -[1]:https://www.packtpub.com/web-development/deep-learning-theano -[2]:https://www.packtpub.com/big-data-and-business-intelligence/deep-learning-keras -[3]:https://www.packtpub.com/big-data-and-business-intelligence/deep-learning-tensorflow -[4]:https://www.tensorflow.org/deploy/distributed -[5]:https://www.tensorflow.org/versions/r0.12/get_started/basic_usage -[6]:https://www.reddit.com/r/MachineLearning/comments/66rriz/d_rnns_are_much_faster_in_pytorch_than_tensorflow/ -[7]:https://arxiv.org/abs/1702.02181 -[8]:https://github.com/jcjohnson/pytorch-examples#pytorch-tensors -[9]:https://github.com/tensorflow/models From b4df0ad86f0c4a828ed9866e12f10f2e0e8ab659 Mon Sep 17 00:00:00 2001 From: Wuod3n <33994335+Wuod3n@users.noreply.github.com> Date: Mon, 29 Jan 2018 22:53:30 +0800 Subject: [PATCH 09/12] Create 20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow --- ...book-backed PyTorch vs Google's TensorFlow | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 translated/talk/20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow diff --git a/translated/talk/20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow b/translated/talk/20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow new file mode 100644 index 0000000000..a47aadcc9d --- /dev/null +++ b/translated/talk/20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow @@ -0,0 +1,109 @@ +深度学习战争:Facebook支持的PyTorch与Google的TensorFlow +====== +有一个令人震惊的事实,即人工智能和机器学习的工具和技术在近期迅速兴起。深度学习,或者说“注射了激素的机器学习”是数据科学家和机器学习专家在可用的库和框架方面被宠坏的一个领域。很多这样的框架都是基于Python的,因为Python是一个更通用,相对简单的语言。[Theano] [1],[Keras] [2] [TensorFlow] [3]是一些基于Python构建的流行的深度学习库,目的是使机器学习专家更轻松。 + +Google的TensorFlow是一个广泛使用的机器学习和深度学习框架。 TensorFlow开源于2015年,得到了机器学习专家的广泛支持,TensorFlow已经迅速成长为许多机构为其机器学习和深度学习需求所选择的框架。 另一方面,PyTorch最近开发的用于训练神经网络的Python包被改编自基于Lua的深度学习库Torch。 PyTorch是少数可用的DL框架之一,它使用基于磁带的autograd系统(tape-based autograd system),以快速和灵活的方式构建动态神经网络。 + +在这篇文章中,我们将PyTorch与TensorFlow进行不同方面的比较。 + +让我们开始吧! + +###什么编程语言支持 PyTorch和TensorFlow? + +虽然主要是用C ++和CUDA编写的,但Tensorflow包含一个位于核心引擎上的Python API,使得更便于被Pythonistas使用。 除了Python,它还包括C ++,Haskell,Java,Go和Rust等其他API,这意味着开发人员可以用他们的首选语言进行编码。 + +虽然PyTorch是一个Python软件包,但你也可以提供使用基本的C / C ++语言的API进行编码。 如果你习惯使用Lua编程语言,你也可以使用Torch API在PyTorch中编写神经网络模型。 + +###PyTorch和TensorFlow有多么易于使用? + +如果将TensorFlow作为一个独立的框架使用,它可能会有点复杂,并且会给深度学习模型的训练带来一些困难。 为了减少这种复杂性,可以使用位于TensorFlow复杂引擎之上的Keras封装,简化深度学习模型的开发和训练。 TensorFlow也支持PyTorch目前没有的[分布式培训] [4]。 由于包含Python API,TensorFlow也可以在生产环境中使用,即可用于培训练和部署企业级深度学习模型。 + +PyTorch由于Torch的复杂而被Python重写。 这使得PyTorch对于开发人员更为原生。 它有一个易于使用的框架,提供最大化的灵活和速度。 它还允许在训练过程中快速更改代码而不妨碍其性能。 如果你已经有了一些深度学习的经验,并且以前使用过Torch,那么基于它的速度,效率和易用性,你会更喜欢PyTorch。 PyTorch包含定制的GPU分配器,这使得深度学习模型具有高度的内存效率。 由此,训练大型深度学习模型变得更容易。 因此,Pytorch +在Facebook,Twitter,Salesforce等大型组织广受欢迎。 + +###用PyTorch和TensorFlow训练深度学习模型 + +PyTorch和TensorFlow都可以用来建立和训练神经网络模型。 + +TensorFlow在SCG(静态计算图)上工作,包括在模型开始执行之前定义静态图形。 但是,一旦开始执行,在模型内的调整更改的唯一方法是使用[tf.session and tf.placeholder tensors][5]。 + +PyTorch非常适合训练RNNs(递归神经网络),因为它们在[PyTorch] [6]中比在TensorFlow中运行得更快。 它适用于DCG(动态计算图),可以随时在模型中定义和更改。 在DCG中,每个模块可以单独调试,这使得神经网络的训练更简单。 + +TensorFlow最近提出了TensorFlow Fold,这是一个旨在创建TensorFlow模型的库,用于处理结构化数据。 像PyTorch一样,它实现了DCGs,在CPU上提供高达10倍的计算速度,在GPU上提供超过100倍的计算速度! 在[Dynamic Batching] [7]的帮助下,你现在可以执行尺寸和结构都不相同的深度学习模型。 + +###GPU和CPU优化的比较 + +TensorFlow的编译时间比PyTorch短,为构建真实世界的应用程序提供了灵活性。 它可以从CPU,GPU,TPU,移动设备到Raspberry Pi(物联网设备)等各种处理器上运行。 + +另一方面,PyTorch包括张量(tensor)计算,可以使用GPU将深度神经网络模型加速到[50倍或更多] [8]。 这些张量可以停留在CPU或GPU上。 CPU和GPU都是独立的库, 无论神经网络大小如何,PyTorch都可以高效地利用。 + +###社区支持 + +TensorFlow是当今最流行的深度学习框架之一,由此也给它带来了庞大的社区支持。 它有很好的文档和一套详细的在线教程。 TensorFlow还包括许多预先训练过的模型,这些模型在[github] [9]上托管和提供。 这些模型提供给热衷于使用TensorFlow开发者和研究人员一些现成的材料来节省他们的时间和精力。 + +另一方面,PyTorch的社区相对较小,因为它最近才发展起来。 与TensorFlow相比,文档并不是很好,代码也不是很容易获得。 然而,PyTorch确实允许个人与他人分享他们的预训练模型。 + +### PyTorch和TensorFlow-力量悬殊的故事 + +就目前而言,由于各种原因,Tensorflow显然比PyTorch更受青睐。 + +Tensorflow很大,经验丰富,最适合实际应用。 是大多数机器学习和深度学习专家明显的选择,因为它提供了大量的功能,最重要的是它在市场上的成熟应用。 它具有更好的社区支持以及多语言API可用。 它有一个很好的文档库,由于从准备到使用的代码使之易于生产。 因此,它更适合想要开始深度学习的人,或者希望开发深度学习模型的组织。 + +虽然PyTorch相对较新,社区较小,但它速度快,效率高。 总之,它给你所有的优势在于Python的有用性和易用性。 由于其效率和速度,对于基于研究的小型项目来说,这是一个很好的选择。 如前所述,Facebook,Twitter等公司正在使用Pytorch来训练深度学习模型。 但是,使用它尚未成为主流。 PyTorch的潜力是显而易见的,但它还没有准备好去挑战这个TensorFlow的野兽。 然而,考虑到它的增长,PyTorch进一步优化并提供更多功能的日子并不遥远,直到与TensorFlow可以比较。 + +###Savia Lobo +非常喜欢数据科学。 喜欢更新世界各地的科技事件。 喜欢歌唱和创作歌曲。 相信才智上的艺术。 + +-------------------------------------------------------------------------------- + +via: https://datahub.packtpub.com/deep-learning/dl-wars-pytorch-vs-tensorflow/ + +作者:[Savia Lobo][a] +译者:[Wuod3n](https://github.com/Wuod3n) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://datahub.packtpub.com/author/savial/ +[1]:https://www.packtpub.com/web-development/deep-learning-theano +[2]:https://www.packtpub.com/big-data-and-business-intelligence/deep-learning-keras +[3]:https://www.packtpub.com/big-data-and-business-intelligence/deep-learning-tensorflow +[4]:https://www.tensorflow.org/deploy/distributed +[5]:https://www.tensorflow.org/versions/r0.12/get_started/basic_usage +[6]:https://www.reddit.com/r/MachineLearning/comments/66rriz/d_rnns_are_much_faster_in_pytorch_than_tensorflow/ +[7]:https://arxiv.org/abs/1702.02181 +[8]:https://github.com/jcjohnson/pytorch-examples#pytorch-tensors +[9]:https://github.com/tensorflow/models + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 529ccdb5a97fadaeca213a91450c2b47243eab5b Mon Sep 17 00:00:00 2001 From: "Xingyu.Wang" Date: Mon, 29 Jan 2018 22:58:47 +0800 Subject: [PATCH 10/12] Rename 20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow to 20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md --- ...rning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename translated/talk/{20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow => 20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md} (100%) diff --git a/translated/talk/20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow b/translated/talk/20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md similarity index 100% rename from translated/talk/20170915 Deep learning wars: Facebook-backed PyTorch vs Google's TensorFlow rename to translated/talk/20170915 Deep learning wars- Facebook-backed PyTorch vs Google-s TensorFlow.md From ff8ccce38b1ce40855f671466f7bd9b508e53e80 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 29 Jan 2018 23:32:20 +0800 Subject: [PATCH 11/12] PRF:20171219 Migrating to Linux- Graphical Environments.md @CYLeft --- ...rating to Linux- Graphical Environments.md | 89 ++++++++++--------- 1 file changed, 49 insertions(+), 40 deletions(-) diff --git a/translated/tech/20171219 Migrating to Linux- Graphical Environments.md b/translated/tech/20171219 Migrating to Linux- Graphical Environments.md index c4450237a8..2a8991b8bf 100644 --- a/translated/tech/20171219 Migrating to Linux- Graphical Environments.md +++ b/translated/tech/20171219 Migrating to Linux- Graphical Environments.md @@ -1,108 +1,117 @@ -迁移到 Linux 系统:图形操作环境 +迁移到 Linux:图形操作环境 ====== -这是我们迁移到 Linux 系统系列的第三篇文章。如果你错过了先前的两篇,这里供有两文的链接 [Linux 新手指导][1] 和 [Linux 文件及文件系统][2]。本文中,我们将讨论图形操作环境。在 Linux 系统中,你可以依照喜好选择并且定制一个图形界面,你有很大的选择余地,这也是 Linux 优越的体验之一。 +![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/linux-migration_0.jpg?itok=0tviWTqd) + +> 这篇文章对 Linux 图形环境做了一番介绍,展示了在不同的 Linux 发行版上的各种选择。 + +这是我们迁移到 Linux 系统系列的第三篇文章。如果你错过了先前的两篇,这里有两文的链接《[入门介绍][1]》 和 《[磁盘、文件、和文件系统][2]》。本文中,我们将讨论图形操作环境。在 Linux 系统中,你可以依照喜好选择并且定制一个图形界面,你有很大的选择余地,这也是 Linux 优越的体验之一。 一些主流的 Linux 图形界面包括:Cinnamon、Gnome、KDE Plasma、Xfce 和 MATE,总之这里有很多选择。 -有一点经常混淆 Linux 新手,虽然特定的 Linux 系统分配了一个缺省的图形环境,但是一般你可以随时更换这个图形接口。这和 Windows 或 Mac OS 的惯用者的定势思维不同。安装图形环境是一件独立的事情,很多时候,Linux 和其图形环境连接地并不紧密。此外,你在一个图形环境构建运行的程序同样适用于另一个图形环境。比如说一个为 KDE Plasma 图形环境编写的应用程序完全适用于 Gnome 桌面图形环境。 +有一点经常混淆 Linux 新手,虽然某个 Linux 系统分配了一个缺省的图形环境,但是一般你可以随时更换这个图形界面。这和 Windows 或 Mac OS 的惯用者的定势思维不同。安装图形环境是一件独立的事情,很多时候,Linux 和其图形环境的连接并不紧密。此外,你在一个图形环境构建运行的程序同样适用于另一个图形环境。比如说一个为 KDE Plasma 图形环境编写的应用程序完全适用于 Gnome 桌面图形环境。 -由于人们熟悉 Windwos 和 MacOS 系统,部分 Linux 操作系统的图形环境在一定程度上尝试着去模仿它们。但是另一些 Linux 图形界面是独特的。 +由于人们熟悉 Windows 和 MacOS 系统,部分 Linux 操作系统的图形环境在一定程度上尝试着去模仿它们,但另一些 Linux 图形界面则是独特的。 -下面,我将就一些不同的 Linux 发行版,展示几个 Linux 图形环境。如果你不确定应该采用那个 Linux 发行版,那我建议你使用有长期支持(LTS)的版本,[Ubuntu][3](Ubuntu 16.04 正在开发)。Ubuntu 稳定且真的非常好用。 +下面,我将就一些不同的 Linux 发行版,展示几个 Linux 图形环境。如果你不确定应该采用那个 Linux 发行版,那我建议你从 [Ubuntu][3] 开始,获取其长期支持(LTS)的版本(Ubuntu 16.04.3 LTS 正在开发)。Ubuntu 稳定且真的非常好用。 ### 由 Mac 过渡 -Elementary OS 发行版提供了和 Mac 系统风格很接近的界面。它的默认图形环境被称作 Pantheon,是一款很适合 Mac 用户过渡使用的图形环境。这款图形界面发行版的屏幕底部有一个停靠栏,专为极简者使用。为了保持简约的风格,很多默认的应用程序甚至都不会有自己的菜单。相反,它们的按钮和控件在应用程序的标题栏上(图 1)。 - +Elementary OS 发行版提供了和 Mac 系统风格很接近的界面。它的默认图形环境被称作 Pantheon,是一款很适合 Mac 用户过渡使用的图形环境。这款图形界面发行版的屏幕底部有一个停靠栏,专为极简者使用而设计。为了保持简约的风格,很多默认的应用程序甚至都不会有自己的菜单。相反,它们的按钮和控件在应用程序的标题栏上(图 1)。 ![Elementary OS][5] -图 1: Elementary OS Pantheon. +*图 1: Elementary OS Pantheon.* Ubuntu 发行版提供的一个默认的图形界面,也和 Mac 相似。Ubuntu 17.04 或者更老的版本都使用 Unity 图形环境,Unity 停靠栏的默认位置在屏幕的左边,屏幕顶部有一个全局应用程序共享的菜单栏。 ### 由 Windows 过渡 -在 Windows 之后,ChaletOS 界面模块帮助 Windows 用户轻松的过渡到 Linux。ChaletOS 使用的图形环境是 Xfce(图 2)。在屏幕的左下角有一个开始按钮,主页目录里有一个搜索栏。屏幕的右下角是一个桌面图标和一些通知信息。这看起来和 Windows 非常像,乍一看,可能都会以为桌面跑的是 Windows。 +ChaletOS 亦步亦趋模仿 Windows 界面,可以帮助 Windows 用户轻松的过渡到 Linux。ChaletOS 使用的图形环境是 Xfce(图 2)。在屏幕的左下角有一个开始(主)菜单和搜索栏。屏幕的右下角是一个桌面图标和一些通知信息。这看起来和 Windows 非常像,乍一看,可能都会以为桌面跑的是 Windows。 -Zorin OS 发行版同样尝试模仿 Windows。 Zorin OS 使用的 Dnome 的改进桌面工作起来和 Windows 的图形界面很相似。左下角的开始按钮、右下角的通知栏和信息通知栏。开始按钮会弹出一个和 Windows无异的应用程序列表和搜索框。 +![ChaletOS][6] -### 独特的图形环境 +*图 2: ChaletOS with Xfce.* + +Zorin OS 发行版同样尝试模仿 Windows。 Zorin OS 使用的 Gnome 的改进桌面,工作起来和 Windows 的图形界面很相似。左下角的开始按钮、右下角的通知栏和信息通知栏。开始按钮会弹出一个和 Windows 无异的应用程序列表和搜索框。 + +### 独有的图形环境 Gnome 桌面(图 3)是最常用的图形环境之一。许多发行版将 Gnome 作为默认的图形环境。Gnome 并不打算模仿 Windows 或是 MacOS,而是以其自身的优雅和易用为目标。 -Cinnamon 环境为摆脱 Gnome 桌面环境消极的一面而被创造,在版本 2 到 版本 3 有彻底的改变。尽管 Cinnamon 和前辈 Gnome version 2 外观不相似,但是它依旧尝试提供一个简约的界面,而且它的功能和 Windows XP 类似。 +![][7] -MATE 图形环境在 Gnome version 2 之后直接建模,在它的屏幕顶部有一个用作设置和存放应用的菜单栏,底部提供了一个应用程序运行选项卡和一些其他组件。 +*图 3:openSUSE with Gnome.* -KDE plasma 是一个为了可以在桌面或是面板上安装组件而建立(图 4)。 +Gnome 桌面环境从版本 2 到 版本 3 发生了巨变,Cinnamon 环境为消除该改变带来的不利影响而创造。尽管 Cinnamon 和前辈 Gnome 2 外观不相似,但是它依旧尝试提供一个简约的界面,而且它的功能和 Windows XP 类似。 + +MATE 图形环境直接模仿于 Gnome 2,在它的屏幕顶部有一个用作设置和存放应用的菜单栏,底部提供了一个应用程序运行选项卡和一些其他组件。 + +KDE plasma 围绕组件界面而构建,组件可以安装在桌面或是面板上(图 4)。 ![KDE Plasma][8] -图 4: 安装了 KDE Plasma 的 Kubuntu 操作系统。 +*图 4: 安装了 KDE Plasma 的 Kubuntu 操作系统。* -[使用许可][6] - -没有图形环境本身就是一个很好的图形环境。不同的风格适用不同的用户风格。另外,似乎从 [Ubuntu][3] 开始有繁多的选项。 +没有那个图形环境比另外一个更好。不同的风格适用不同的用户风格。另外,如果选择太多无从下手,那就从 [Ubuntu][3] 开始吧。 ### 相似与不同 -不同的操作系统处理事务方式不同,这会给使用者的过渡带来挑战。比如说,菜单栏可能出现在不同的位置,然后设置有可能用不同的选项入口路径。我列举了一些相似或不同地方来帮助减少 Linux 调整。 +不同的操作系统处理方式不同,这会给使用者的过渡带来挑战。比如说,菜单栏可能出现在不同的位置,然后设置有可能用不同的选项入口路径。我列举了一些相似或不同地方来帮助减少 Linux 调整。 -### 鼠标 +#### 鼠标 Linux 的鼠标通常和 Windows 与 MacOS 的工作方式有所差异。在 Windows 或 Mac,双击标签,你几乎可以打开任何事物,而这在 Linux 图形界面中很多都被设置为单击。 -此外在 Windows 系统中,你通常通过单机窗口获取焦点。在 Linux,很多窗口的焦点获取被设置为鼠标悬浮,即便鼠标悬浮下的窗口并不在屏幕顶端。这种微妙的差异有时候会让人很吃惊。比如说,在 Windows 中,假如有一个后台应用(不在屏幕顶层),你移动鼠标到它的上面,不点击鼠标仅仅转动鼠标滚轮,顶层窗口不会滚动。而在 Linux 中,后台窗口(鼠标悬停的那个窗口)会滚动。 +此外在 Windows 系统中,你通常通过单击窗口获取焦点。在 Linux,很多窗口的焦点获取方式被设置为鼠标悬停,即便鼠标悬停下的窗口并不在屏幕顶端。这种微妙的差异有时候会让人很吃惊。比如说,在 Windows 中,假如有一个后台应用(不在屏幕顶层),你移动鼠标到它的上面,不点击鼠标仅仅转动鼠标滚轮,顶层窗口会滚动。而在 Linux 中,后台窗口(鼠标悬停的那个窗口)会滚动。 -### 菜单 +#### 菜单 -应用菜单是电脑程序的一个基本部件,最近似乎可以调整移动菜单栏到不碍事的地方,甚至干脆完全删除。大概,当你迁移到 Linux,你可能找不到你期待的菜单。应用程序菜单会像 MacOS一样出现在全局共享菜单栏内。和很多移动应用程序一样,菜单可能在“更多选项”的图标里。或者,这个菜单干脆被完全移除被一个按钮取代,正如在 Elementary OS Pantheon 环境里的一些程序一样。 +应用菜单是电脑程序的一个主要集中位置,最近似乎可以调整移动菜单栏到不碍事的地方,甚至干脆完全删除。大概,当你迁移到 Linux,你可能找不到你期待的菜单。应用程序菜单会像 MacOS一样出现在全局共享菜单栏内。和很多移动应用程序一样,该菜单可能在“更多选项”的图标里。或者,这个菜单干脆被完全移除被一个按钮取代,正如在 Elementary OS Pantheon 环境里的一些程序一样。 -### 工作空间 +#### 工作空间 -很多 Linux 图形环境提供了多个工作空间。一个工作空间包含的正在运行的程序窗口充盈了整个屏幕。切换到不同的工作空间将会该片程序的可见性。这个概念是把当前工程运行使用的全部应用程序分组到一个工作空间,而一些为另一个工程使用的应用程序会被分组到不同的工作空间。 +很多 Linux 图形环境提供了多个工作空间。一个工作空间包含的正在运行的程序窗口充盈了整个屏幕。切换到不同的工作空间将会改变程序的可见性。这个概念是把当前项目运行使用的全部应用程序分组到一个工作空间,而一些为另一个项目使用的应用程序会被分组到不同的工作空间。 -不是每一个人都需要甚至是喜欢工作空间,但是我提到它是因为,作为一个新手,你可能无意间通过一个组合键切换了工作空间,然后,“喂!我的应用程序哪去了?”如果你看到的还是你熟悉的煮面壁纸,那你可能只是切换了工作空间,你所有的应用程序还在一个工作空间运行,只是现在不可见。在很多 Linux 环境中,通过敲击 Alt-Ctrl 和一个箭头(上、下、左或右)可以切换工作空间。发现你的应用程序一直都在另一个工作空间里运行还是很有很可能的。 +不是每一个人都需要甚至是喜欢工作空间,但是我提到它是因为,作为一个新手,你可能无意间通过一个组合键切换了工作空间,然后,“喂!我的应用程序哪去了?” 如果你看到的还是你熟悉的桌面壁纸,那你可能只是切换了工作空间,你所有的应用程序还在一个工作空间运行,只是现在不可见而已。在很多 Linux 环境中,通过敲击 `Alt+Ctrl` 和一个箭头(上、下、左或右)可以切换工作空间。很有可能发现你的应用程序一直都在另一个工作空间里运行。 当然,如果你刚好喜欢工作空间(很多人都喜欢),然后你就发现了一个 Linux 很有用的默认功能。 -### 设置 +#### 设置 -许多 Linux 图形环境提供一些类型的设置程序或是面板让你在机器上配置设置。值得注意的是类似 Windows 和 MacOS,Linux 可以配置好很多细节,但不是所有的详细设置都可以在设置程序上找到。但是这些设置项已经足够满足大部分典型的桌面系统,比如选择桌面壁纸,改变息屏时间,连接打印机等其他一些设置。 +许多 Linux 图形环境提供一些类型的设置程序或是面板让你在机器上配置设置。值得注意的是类似 Windows 和 MacOS,Linux 可以配置好很多细节,但不是所有的详细设置都可以在设置程序上找到。但是这些设置项已经足够满足大部分典型的桌面系统,比如选择桌面壁纸,改变熄屏时间,连接打印机等其他一些设置。 -和 Windows 或者 MacOS 相比,Linux 的应用程序设置的分组或是命名都有不同的方式。甚至同是 Linux 系统,不同的图形界面也会出现不同的设置,这可能需要时间适应。当然,在你的图形环境中设置配置的问题可以通过在线查询这样一个不错的方法解决。 +和 Windows 或者 MacOS 相比,Linux 的应用程序设置的分组或是命名都有不同的方式。甚至同是 Linux 系统,不同的图形界面也会出现不同的设置,这可能需要时间适应。当然,在你的图形环境中设置配置的问题可以通过在线查询这样不错的方法解决。 -### 应用程序 +#### 应用程序 -最后,Linux 的应用程序也可能不同。你可能会发现一些熟悉的应用程序,但是对你来说更多的将会是崭新的应用。比如说,你能在 Linux 上找到 Firefox、Chrome和 Skype。如果不能找到特定的应用程序,通常你能使用一些替代程序。如果还是不能,那你可以使用 WINE 这样的兼容层来运行 Windows 的应用程序。 +最后,Linux 的应用程序也可能不同。你可能会发现一些熟悉的应用程序,但是对你来说更多的将会是崭新的应用。比如说,你能在 Linux 上找到 Firefox、Chrome 和 Skype。如果不能找到特定的应用程序,通常你能使用一些替代程序。如果还是不能,那你可以使用 WINE 这样的兼容层来运行 Windows 的应用程序。 -在很多 Linux 图形环境中,你可以通过敲击 Windows 的标志键来打开应用程序菜单栏。在其他一些情况中,你不都不点击开始或家按钮俩启动应用程序菜单。很多图形环境中,你可以通过分类搜索到应用程序而不一定需要它的特定程序名。比如说,你要使用你不清除名字编辑器程序,这时候,你可以在应用程序菜单栏键的搜索框中键入“editor”字样,他将为你展示一个甚至更多的被认为是编辑器类的应用程序。 +在很多 Linux 图形环境中,你可以通过敲击 Windows 的标志键来打开应用程序菜单栏。在其他一些情况中,你不得不点击开始(主)按钮或应用程序菜单。很多图形环境中,你可以通过分类搜索到应用程序而不一定需要它的特定程序名。比如说,你要使用一个你不清楚名字的编辑器程序,这时候,你可以在应用程序菜单栏键的搜索框中键入“editor”字样,它将为你展示一个甚至更多的被认为是编辑器类的应用程序。 -帮你开个头,这里列举了一点可能成为 Linux 系统使用的替代程序。 +为帮你起步,这里列举了一点可能成为 Linux 系统使用的替代程序。 -[linux][10] +![linux][10] 请注意,Linux 提供了大量的满足你需求的选择,这张表里列举的一点也不完整。 -通过 [“Linux 指导”][9] Linux 基金会的免费在线课程,了解更多关于 Linux 内容。 - -------------------------------------------------------------------------------- via: https://www.linux.com/blog/learn/2017/12/migrating-linux-graphical-environments 作者:[John Bonesio][a] -译者:[译者ID](https://github.com/CYLeft) -校对:[校对者ID](https://github.com/校对者ID) +译者:[CYLeft](https://github.com/CYLeft) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]:https://www.linux.com/users/johnbonesio -[1]:https://www.linux.com/blog/learn/intro-to-linux/2017/10/migrating-linux-introduction -[2]:https://www.linux.com/blog/learn/intro-to-linux/2017/11/migrating-linux-disks-files-and-filesystems +[1]:https://linux.cn/article-9212-1.html +[2]:https://linux.cn/article-9213-1.html [3]:https://www.evernote.com/OutboundRedirect.action?dest=https%3A%2F%2Fwww.ubuntu.com%2Fdownload%2Fdesktop [5]:https://www.linux.com/sites/lcom/files/styles/rendered_file/public/elementaryos.png?itok=kJk2-BsL (Elementary OS) +[6]:https://www.linux.com/sites/lcom/files/styles/rendered_file/public/chaletos.png?itok=Zdm2rRgu +[7]:https://www.linux.com/sites/lcom/files/styles/rendered_file/public/opensuse.png?itok=TM0Q9AyH [8]:https://www.linux.com/sites/lcom/files/styles/rendered_file/public/kubuntu.png?itok=a2E7ttaa (KDE Plasma) [9]:https://training.linuxfoundation.org/linux-courses/system-administration-training/introduction-to-linux From 402c9ef25d3a7efede9426352598f505322ea039 Mon Sep 17 00:00:00 2001 From: wxy Date: Mon, 29 Jan 2018 23:32:52 +0800 Subject: [PATCH 12/12] PUB:20171219 Migrating to Linux- Graphical Environments.md @CYLeft https://linux.cn/article-9293-1.html --- .../20171219 Migrating to Linux- Graphical Environments.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {translated/tech => published}/20171219 Migrating to Linux- Graphical Environments.md (100%) diff --git a/translated/tech/20171219 Migrating to Linux- Graphical Environments.md b/published/20171219 Migrating to Linux- Graphical Environments.md similarity index 100% rename from translated/tech/20171219 Migrating to Linux- Graphical Environments.md rename to published/20171219 Migrating to Linux- Graphical Environments.md