diff --git a/translated/tech/20180116 Why building a community is worth the extra effort.md b/published/20180116 Why building a community is worth the extra effort.md similarity index 80% rename from translated/tech/20180116 Why building a community is worth the extra effort.md rename to published/20180116 Why building a community is worth the extra effort.md index 6ff0d4d213..503712cf1a 100644 --- a/translated/tech/20180116 Why building a community is worth the extra effort.md +++ b/published/20180116 Why building a community is worth the extra effort.md @@ -1,23 +1,25 @@ 为什么建设一个社区值得额外的努力 ====== +> 建立 NethServer 社区是有风险的。但是我们从这些激情的人们所带来的力量当中学习到了很多。 + ![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/BUSINESS_brandbalance.png?itok=XSQ1OU16) -当我们在 2003 年推出 [Nethesis][1] 时,我们还只是系统集成商。我们只使用现有的开源项目。我们的业务模式非常明确:为这些项目增加多种形式的价值:实践知识、针对意大利市场的文档、额外模块、专业支持和培训课程。我们还通过向上游贡献代码并参与其社区来回馈上游项目。 +当我们在 2003 年推出 [Nethesis][1] 时,我们还只是系统集成商。我们只使用已有的开源项目。我们的业务模式非常明确:为这些项目增加多种形式的价值:实践知识、针对意大利市场的文档、额外模块、专业支持和培训课程。我们还通过向上游贡献代码并参与其社区来回馈上游项目。 -那时时代不同。我们不能太张扬地使用“开源”这个词。人们将它与诸如“书呆子”,“没有价值”而最糟糕的是“自由”这些词联系起来。这些不太适合生意。 +那时时代不同。我们不能太张扬地使用“开源”这个词。人们将它与诸如“书呆子”,“没有价值”以及最糟糕的“免费”这些词联系起来。这些不太适合生意。 -在 2010 年的一个星期六,Nethesis 的工作人员,他们手中拿着馅饼和浓咖啡,正在讨论如何推进事情发展(嘿,我们喜欢在创新的同时吃喝东西!)。尽管势头对我们不利,但我们决定不改变方向。事实上,我们决定加大力度 - 去做开源和开放的工作方式,这是一个成功运营企业的模式。 +在 2010 年的一个星期六,Nethesis 的工作人员,他们手中拿着馅饼和浓咖啡,正在讨论如何推进事情发展(嘿,我们喜欢在创新的同时吃喝东西!)。尽管势头对我们不利,但我们决定不改变方向。事实上,我们决定加大力度 —— 去做开源和开放的工作方式,这是一个成功运营企业的模式。 多年来,我们已经证明了该模型的潜力。有一件事是我们成功的关键:社区。 -在这个由三部分组成的系列文章中,我将解释社区在开放组织的存在中扮演的重要角色。我将探讨为什么一个组织希望建立一个社区,并讨论如何建立一个社区 - 因为我确实认为这是如今产生新创新的最佳方式。 +在这个由三部分组成的系列文章中,我将解释社区在开放组织的存在中扮演的重要角色。我将探讨为什么一个组织希望建立一个社区,并讨论如何建立一个社区 —— 因为我确实认为这是如今产生新创新的最佳方式。 ### 这个疯狂的想法 与 Nethesis 伙伴一起,我们决定构建自己的开源项目:我们自己的操作系统,它建立在 CentOS 之上(因为我们不想重新发明轮子)。我们假设我们拥有实现它的经验、实践知识和人力。我们感到很勇敢。 -我们非常希望构建一个名为 [NethServer][2] 的操作系统,其使命是:通过开源使系统管理员的生活更轻松。我们知道我们可以为服务器创建一个 Linux 发行版,与当前提供的任何东西相比,这些发行版更容易获取、更易于使用,并且更易于理解。 +我们非常希望构建一个名为 [NethServer][2] 的操作系统,其使命是:通过开源使系统管理员的生活更轻松。我们知道我们可以为服务器创建一个 Linux 发行版,与当前已有的相比,它更容易使用、更易于部署,并且更易于理解。 不过,最重要的是,我们决定创建一个真正的,100% 开放的项目,其主要规则有三条: @@ -25,13 +27,11 @@ * 开发公开 * 社区驱动 - - 最后一个很重要。我们是一家公司。我们能够自己开发它。如果我们在内部完成这项工作,我们将会更有效(并且做出更快的决定)。与其他任何意大利公司一样,这将非常简单。 但是我们已经如此深入到开源文化中,所以我们选择了不同的路径。 -我们确实希望有尽可能多的人围绕着我们、围绕着产品、围绕着公司周围。我们希望对工作有尽可能多的视角。我们意识到:独自一人,你可以走得快 - 但是如果你想走很远,你需要一起走。 +我们确实希望有尽可能多的人围绕着我们、围绕着产品、围绕着公司周围。我们希望对工作有尽可能多的视角。我们意识到:独自一人,你可以走得快 —— 但是如果你想走很远,你需要一起走。 所以我们决定建立一个社区。 @@ -41,11 +41,11 @@ 但是很快就出现了这样一个问题:我们如何建立一个社区?我们不知道如何实现这一点。我们参加了很多社区,但我们从未建立过一个社区。 -我们擅长编码 - 而不是人。我们是一家公司,是一个有非常具体优先事项的组织。那么我们如何建立一个社区,并在公司和社区之间建立良好的关系呢? +我们擅长编码 —— 而不是人。我们是一家公司,是一个有非常具体优先事项的组织。那么我们如何建立一个社区,并在公司和社区之间建立良好的关系呢? 我们做了你必须做的第一件事:学习。我们从专家、博客和许多书中学到了知识。我们进行了实验。我们失败了多次,从结果中收集数据,并再次进行测试。 -最终我们学到了社区管理的黄金法则:没有社区管理的黄金法则。 +最终我们学到了社区管理的黄金法则:**没有社区管理的黄金法则。** 人们太复杂了,社区无法用一条规则来“统治他们”。 @@ -57,7 +57,7 @@ via: https://opensource.com/open-organization/18/1/why-build-community-1 作者:[Alessio Fattorini][a] 译者:[geekpi](https://github.com/geekpi) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/translated/tech/20180410 Bootiso Lets You Safely Create Bootable USB Drive.md b/published/20180410 Bootiso Lets You Safely Create Bootable USB Drive.md similarity index 57% rename from translated/tech/20180410 Bootiso Lets You Safely Create Bootable USB Drive.md rename to published/20180410 Bootiso Lets You Safely Create Bootable USB Drive.md index b0d6f088f5..dca7ede7a4 100644 --- a/translated/tech/20180410 Bootiso Lets You Safely Create Bootable USB Drive.md +++ b/published/20180410 Bootiso Lets You Safely Create Bootable USB Drive.md @@ -1,17 +1,18 @@ -Bootiso 让你安全地创建 USB 启动设备 +Bootiso :让你安全地创建 USB 启动设备 ====== ![](https://www.ostechnix.com/wp-content/uploads/2018/04/USB-drive-720x340.png) -你好,新兵!你们有些人经常使用 **dd 命令**做各种各样的事,比如创建 USB 启动盘或者克隆硬盘分区。不过请牢记,dd 是一个危险且有毁灭性的命令。如果你是个 Linux 的新手,最好避免使用 dd 命令。如果你不知道你在做什么,你可能会在几分钟里把硬盘擦掉。从原理上说,dd 只是从 **“if”** 读取然后写到 **“of”** 上。它才不管往哪里写呢。它根本不关心那里是否有分区表、引导区、家目录或是其他重要的东西。你叫它做什么它就做什么。可以使用像 [**Etcher**][1] 这样的用户友好的应用来代替它。这样你就可以在创建 USB 引导设备之前知道你将要格式化的是哪块盘。 -今天,我发现了另一个可以安全创建 USB 引导设备的工具 **Bootiso** 。它实际上是一个 BASH 脚本,但真的很智能!它有很多额外的功能来帮我们安全创建 USB 引导盘。如果你想确定你的目标是 USB 设备(而不是内部驱动器),或者如果你想检测 USB 设备,你可以使用 Bootiso。下面是使用此脚本的显著优点: +你好,新兵!你们有些人经常使用 `dd` 命令做各种各样的事,比如创建 USB 启动盘或者克隆硬盘分区。不过请牢记,`dd` 是一个危险且有毁灭性的命令。如果你是个 Linux 的新手,最好避免使用 `dd` 命令。如果你不知道你在做什么,你可能会在几分钟里把硬盘擦掉。从原理上说,`dd` 只是从 `if` 读取然后写到 `of` 上。它才不管往哪里写呢。它根本不关心那里是否有分区表、引导区、家目录或是其他重要的东西。你叫它做什么它就做什么。可以使用像 [Etcher][1] 这样的用户友好的应用来代替它。这样你就可以在创建 USB 引导设备之前知道你将要格式化的是哪块盘。 + +今天,我发现了另一个可以安全创建 USB 引导设备的工具 Bootiso 。它实际上是一个 BASH 脚本,但真的很智能!它有很多额外的功能来帮我们安全创建 USB 引导盘。如果你想确保你的目标是 USB 设备(而不是内部驱动器),或者如果你想检测 USB 设备,你可以使用 Bootiso。下面是使用此脚本的显著优点: * 如果只有一个 USB 驱动器,Bootiso 会自动选择它。 * 如果有一个以上的 USB 驱动器存在,它可以让你从列表中选择其中一个。 * 万一你错误地选择一个内部硬盘驱动器,它将退出而不做任何事情。 * 它检查选定的 ISO 是否具有正确的 MIME 类型。如果 MIME 类型不正确,它将退出。 * 它判定所选的项目不是分区,如果判定失败则退出。 - * 它将在擦除和分区 USB 驱动器之前提示用户确认。 + * 它将在擦除和对 USB 驱动器分区之前提示用户确认。 * 列出可用的 USB 驱动器。 * 安装 syslinux 引导系统 (可选)。 * 自由且开源。 @@ -19,46 +20,48 @@ Bootiso 让你安全地创建 USB 启动设备 ### 使用 Bootiso 安全地创建 USB 驱动器 安装 Bootiso 非常简单。用这个命令下载最新版本: + ``` $ curl -L https://rawgit.com/jsamr/bootiso/latest/bootiso -O - ``` -把下载的文件加到 **$PATH** 目录中,比如 /usr/local/bin/. +把下载的文件加到 `$PATH` 目录中,比如 `/usr/local/bin/`。 + ``` $ sudo cp bootiso /usr/local/bin/ - ``` 最后,添加运行权限: + ``` $ sudo chmod +x /usr/local/bin/bootiso ``` 搞定!现在就可以创建 USB 引导设备了。首先,让我们用命令看看现在有哪些 USB 驱动器: + ``` $ bootiso -l - ``` 输出: + ``` Listing USB drives available in your system: NAME HOTPLUG SIZE STATE TYPE sdb 1 7.5G running disk - ``` 如你所见,我只有一个 USB 驱动器。让我们继续通过命令用 ISO 文件创建 USB 启动盘: + ``` $ bootiso bionic-desktop-amd64.iso - ``` -这个命令会提示你输入 SUDO 密码。输入密码并回车来安装缺失的组件(如果有的话),然后创建 USB 启动盘。 +这个命令会提示你输入 `sudo` 密码。输入密码并回车来安装缺失的组件(如果有的话),然后创建 USB 启动盘。 输出: + ``` [...] Listing USB drives available in your system: @@ -79,77 +82,78 @@ ISO succesfully unmounted. USB device succesfully unmounted. USB device succesfully ejected. You can safely remove it ! - ``` -如果你的 ISO 文件 mine 类型不对,你会得到下列错误信息: +如果你的 ISO 文件 MIME 类型不对,你会得到下列错误信息: + ``` Provided file `bionic-desktop-amd64.iso' doesn't seem to be an iso file (wrong mime type: `application/octet-stream'). Exiting bootiso... - ``` -当然,你也能像下面那样使用 **–no-mime-check** 选项来跳过 mime 类型检查。 +当然,你也能像下面那样使用 `–no-mime-check` 选项来跳过 MIME 类型检查。 + ``` $ bootiso --no-mime-check bionic-desktop-amd64.iso - ``` -就像我前面提到的,如果系统里只有1个 USB 设备 Bootiso 将自动选中它。所以我们不需要告诉它 USB 设备路径。如果你连接了多个设备,你可以像下面这样使用 **-d** 来指明 USB 设备。 +就像我前面提到的,如果系统里只有 1 个 USB 设备 Bootiso 将自动选中它。所以我们不需要告诉它 USB 设备路径。如果你连接了多个设备,你可以像下面这样使用 `-d` 来指明 USB 设备。 + ``` $ bootiso -d /dev/sdb bionic-desktop-amd64.iso - ``` -用你自己的设备路径来换掉 “/dev/sdb”. +用你自己的设备路径来换掉 `/dev/sdb`。 -在多个设备情况下,如果你没有使用 **-d** 来指明要使用的设备,Bootiso 会提示你选择可用的 USB 设备。 +在多个设备情况下,如果你没有使用 `-d` 来指明要使用的设备,Bootiso 会提示你选择可用的 USB 设备。 + +Bootiso 在擦除和改写 USB 盘分区前会要求用户确认。使用 `-y` 或 `–assume-yes` 选项可以跳过这一步。 -Bootiso 在擦除和改写 USB 盘分区前会要求用户确认。使用 **-y** 或 **–assume-yes** 选项可以跳过这一步。 ``` $ bootiso -y bionic-desktop-amd64.iso - ``` -您也可以把自动选择 USB 设备与 **-y** 选项连用,如下所示。 +您也可以把自动选择 USB 设备与 `-y` 选项连用,如下所示。 + ``` $ bootiso -y -a bionic-desktop-amd64.iso - ``` 或者, + ``` $ bootiso?--assume-yes?--autoselect bionic-desktop-amd64.iso - ``` 请记住,当你只连接一个 USB 驱动器时,它才会起作用。 -Bootiso 会默认创建一个 **FAT 32** 分区,挂载后用 **“rsync”** 程序把 ISO 的内容拷贝到 USB 盘里。 如果你愿意也可以使用 “dd” 代替 “rsync” 。 +Bootiso 会默认创建一个 FAT 32 分区,挂载后用 `rsync` 程序把 ISO 的内容拷贝到 USB 盘里。 如果你愿意也可以使用 `dd` 代替 `rsync` 。 + ``` $ bootiso --dd -d /dev/sdb bionic-desktop-amd64.iso - ``` -如果你想增加 USB 引导的成功概率,请使用 **“-b”** 或 **“–bootloader”** 选项。 +如果你想增加 USB 引导的成功概率,请使用 `-b` 或 `–bootloader` 选项。 + ``` $ bootiso -b bionic-desktop-amd64.iso - ``` -上面这条命令会安装 **syslinux** 引导程序(安全模式)。注意,“–dd” 选项不可用. +上面这条命令会安装 `syslinux` 引导程序(安全模式)。注意,此时 `–dd` 选项不可用。 + +在创建引导设备后,Bootiso 会自动弹出 USB 设备。如果不想自动弹出,请使用 `-J` 或 `–no-eject` 选项。 -在创建引导设备后,Bootiso 会自动弹出 USB 设备。如果不想自动弹出,请使用 **-J** 或 **–no-eject** 选项。 ``` $ bootiso -J bionic-desktop-amd64.iso - ``` -现在,USB 设备依然连接中。你可以使用 “umount” 命令随时卸载它。 +现在,USB 设备依然连接中。你可以使用 `umount` 命令随时卸载它。 需要完整帮助信息,请输入: + ``` $ bootiso -h +``` 好,今天就到这里。希望这个脚本对你有帮助。好货不断,不要走开哦! @@ -160,9 +164,9 @@ $ bootiso -h via: https://www.ostechnix.com/bootiso-lets-you-safely-create-bootable-usb-drive/ 作者:[SK][a] -译者:[kennethXia](https://github.com/kennethXia) -校对:[校对者ID](https://github.com/校对者ID) 选题:[lujun9972](https://github.com/lujun9972) +译者:[kennethXia](https://github.com/kennethXia) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/translated/tech/20180419 6 Python datetime libraries - Opensource.com.md b/published/20180419 6 Python datetime libraries - Opensource.com.md similarity index 54% rename from translated/tech/20180419 6 Python datetime libraries - Opensource.com.md rename to published/20180419 6 Python datetime libraries - Opensource.com.md index dc637b3543..b76d8e088a 100644 --- a/translated/tech/20180419 6 Python datetime libraries - Opensource.com.md +++ b/published/20180419 6 Python datetime libraries - Opensource.com.md @@ -1,22 +1,24 @@ -6 个 Python 日期库 +6 个 Python 的日期时间库 ===== -### 在 Python 中有许多库可以很容易地测试,转换和读取日期和时间信息。 +> 在 Python 中有许多库可以很容易地测试、转换和读取日期和时间信息。 + ![6 Python datetime libraries ](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/python-programming-code-keyboard.png?itok=fxiSpmnd "6 Python datetime libraries ") 图片由 [WOCinTech Chat][1] 提供,根据 Opensource.com 修改。[CC BY-SA 4.0][2] _这篇文章是与 [Jeff Triplett][3] 一起合写的。_ -曾几何时,我们中的一个人(Lacey)花了超过一个小时盯着 [Python 文档][4]中描述日期和时间格式化字符串的表格。当我试图编写从 API 中将日期时间字符串转换为 [Python datetime][5] 对象时,我很难理解其中的特定部分,因此我决定请求帮助。 +曾几何时,我们中的一个人(Lacey)盯了一个多小时的 [Python 文档][4]中描述日期和时间格式化字符串的表格。当我试图编写从 API 中将日期时间字符串转换为 [Python datetime][5] 对象时,我很难理解其中的特定部分,因此我决定请求帮助。 -有人问道:“为什么你不使用 dateutil 呢?” +有人问道:“为什么你不使用 `dateutil` 呢?” -读者,如果你没有从这个月的 Python 专栏中获得任何东西,仅仅是学习到有比 datetime 的 strptime 更容易地将 datetime 字符串转换为 datetime 对象的方法,那么我们认为自己是成功的。 +读者,如果你没有从这个月的 Python 专栏中获得任何东西,只是学习到有比 datetime 的 `strptime` 更容易地将 datetime 字符串转换为 datetime 对象的方法,那么我们觉得就已经成功了。 -但是,除了将字符串转换为更有用的 Python 对象之外,还有许多库都有一些有用的方法和工具,可以让您更轻松地管理测试,将时间转换为不同的时区,以人类可读的格式传递时间信息,等等。如果这是你在 Python 中第一次尝试日期和时间,请暂停并阅读 _[如何使用 Python][6]的日期和时间_ 。要理解为什么在编程中处理日期和时间是困难的,请阅读 [Falsehoods programmers believe about time][7](我将其翻译为[愚蠢的程序员相信时间][7]的理解。 +但是,除了将字符串转换为更有用的 Python 对象之外,还有许多库都有一些有用的方法和工具,可以让您更轻松地进行时间测试、将时间转换为不同的时区、以人类可读的格式传递时间信息,等等。如果这是你在 Python 中第一次接触日期和时间,请暂停并阅读 _[如何使用 Python的日期和时间][6]_ 。要理解为什么在编程中处理日期和时间是困难的,请阅读 [愚蠢的程序员相信时间][7]。 这篇文章将会向你介绍以下库: + * [Dateutil][8] * [Arrow][9] * [Moment][10] @@ -26,117 +28,97 @@ _这篇文章是与 [Jeff Triplett][3] 一起合写的。_ 随意跳过那些你已经熟悉的库,专注于那些对你而言是新的库。 -### 内建 datetime 模块 +### 内建的 datetime 模块 -(以下这段是原文中侧面的链接,认为i还是不翻译为好,可以考虑将其删除) -More Python Resources - -* [What is Python?][14] -* [Top Python IDEs][15] -* [Top Python GUI frameworks][16] -* [Latest Python content][17] -* [More developer resources][18] - -在跳转到其他库之前,让我们回顾一下如何使用 datetime 模块将日期字符串转换为 Python datetime 对象。 +在跳转到其他库之前,让我们回顾一下如何使用 `datetime` 模块将日期字符串转换为 Python datetime 对象。 假设我们从 API 接受到一个日期字符串,并且需要它作为 Python datetime 对象存在: +``` 2018-04-29T17:45:25Z +``` 这个字符串包括: -* 日期是 YYYY-MM-DD 格式的 -* 字母 “T” 表示时间即将到来 -* 时间是 HH:II:SS 格式的 -* 表示此时间的时区指示符 “Z” 采用 UTC (详细了解[日期时间字符格式][19]) +* 日期是 `YYYY-MM-DD` 格式的 +* 字母 `T` 表示时间即将到来 +* 时间是 `HH:II:SS` 格式的 +* 表示此时间的时区指示符 `Z` 采用 UTC (详细了解[日期时间字符格式][19]) -要使用 datetime 模块将此字符串转换为 Python datetime 对象,你应该从 strptime 开始。 datetime.strptime 接受日期字符串和格式化字符并返回一个 Python datetime 对象。 +要使用 `datetime` 模块将此字符串转换为 Python datetime 对象,你应该从 `strptime` 开始。 `datetime.strptime` 接受日期字符串和格式化字符并返回一个 Python datetime 对象。 -我们必须手动将日期时间字符串的每个部分转换为 Python 的 datetime.strptime 可以理解的合适的格式化字符串。四位数年份由 %Y 表示,两位数月份是 %m,两位数的日期是 %d。在 24 小时制中,小时是 %H,分钟是 %M,秒是 %S。 +我们必须手动将日期时间字符串的每个部分转换为 Python 的 `datetime.strptime` 可以理解的合适的格式化字符串。四位数年份由 `%Y` 表示,两位数月份是 `%m`,两位数的日期是 `%d`。在 24 小时制中,小时是 `%H`,分钟是 `%M`,秒是 `%S`。 为了得出这些结论,需要在[Python 文档][20]的表格中多加注意。 -由于字符串中的 “Z” 表示此日期时间字符串采用 UTC,所以我们可以在格式中忽略此项。(现在,我们不会担心时区。) +由于字符串中的 `Z` 表示此日期时间字符串采用 UTC,所以我们可以在格式中忽略此项。(现在,我们不会担心时区。) 转换的代码是这样的: ``` $ from datetime import datetime - $ datetime.strptime('2018-04-29T17:45:25Z', '%Y-%m-%dT%H:%M:%SZ') - datetime.datetime(2018, 4, 29, 17, 45, 25) ``` -格式化字符串很难阅读和理解。我必须手动计算原始字符串中的字母 “T” 和 “Z”,以及标点符号和格式化字符串,如 %S 和 %m。有些不太了解 datetime 的人阅读我的代码可能会发现它很难理解,尽管其含义已有文档记载,但它仍然很难阅读。 +格式字符串很难阅读和理解。我必须手动计算原始字符串中的字母 `T` 和 “Z”的位置,以及标点符号和格式化字符串,如 `%S` 和 `%m`。有些不太了解 datetime 的人阅读我的代码可能会发现它很难理解,尽管其含义已有文档记载,但它仍然很难阅读。 让我们看看其他库是如何处理这种转换的。 ### Dateutil -[dateutil 模块][21]对 datetime 模块做了一些扩展。 +[dateutil 模块][21]对 `datetime` 模块做了一些扩展。 -继续使用上面的解析示例,使用 dateutil 实现相同的结果要简单得多: +继续使用上面的解析示例,使用 `dateutil` 实现相同的结果要简单得多: ``` $ from dateutil.parser import parse - $ parse('2018-04-29T17:45:25Z') - datetime.datetime(2018, 4, 29, 17, 45, 25, tzinfo=tzutc()) ``` -如果字符串包含时区,那么 dateutil 解析器会自动返回字符串的时区。由于我们在 UTC,你可以看到一个 datetime 对象返回了。如果你想解析完全忽略时区信息并返回原生的 datetime 对象,你可以传递 ignoretz=True 来解析,如下所示: +如果字符串包含时区,那么 `dateutil` 解析器会自动返回字符串的时区。由于我们在 UTC 时区,你可以看到返回来一个 datetime 对象。如果你想解析完全忽略时区信息并返回原生的 datetime 对象,你可以传递 `ignoretz=True` 来解析,如下所示: ``` $ from dateutil.parser import parse - $ parse('2018-04-29T17:45:25Z', ignoretz=True) - datetime.datetime(2018, 4, 29, 17, 45, 25) ``` -Dateutil 还可以解析其他人类可读的日期字符串: +`dateutil` 还可以解析其他人类可读的日期字符串: ``` $ parse('April 29th, 2018 at 5:45 pm') - datetime.datetime(2018, 4, 29, 17, 45) ``` -Dateutil 还提供了像 [relativedelta][22] 的工具,它用于计算两个日期时间之间的时间差或向日期时间添加或删除时间,[rrule][23] 创建重复日期时间,[tz][24] 用于解决时区以及其他工具。 +`dateutil` 还提供了像 [relativedelta][22] 的工具,它用于计算两个日期时间之间的时间差或向日期时间添加或删除时间,[rrule][23] 创建重复日期时间,[tz][24] 用于解决时区以及其他工具。 ### Arrow -[Arrow][25] 是另一个库,其目标是进行操作,格式化,以及处理对人类更友好的日期和时间。它包含 dateutil,根据其[文档][26],它旨在“帮助你使用更少的包导入和更少的代码来处理日期和时间”。 +[Arrow][25] 是另一个库,其目标是操作、格式化,以及处理对人类更友好的日期和时间。它包含 `dateutil`,根据其[文档][26],它旨在“帮助你使用更少的包导入和更少的代码来处理日期和时间”。 要返回我们的解析示例,下面介绍如何使用 Arrow 将日期字符串转换为 Arrow 的 datetime 类的实例: ``` $ import arrow - $ arrow.get('2018-04-29T17:45:25Z') - ``` -你也可以在 get() 的第二个参数中指定格式,就像使用 strptime 一样,但是 Arrow 会尽力解析你给出的字符串,get() 返回 Arrow 的 datetime 类的一个实例。要使用 Arrow 来获取 Python datetime 对象,按照如下所示链式 datetime: +你也可以在 `get()` 的第二个参数中指定格式,就像使用 `strptime` 一样,但是 Arrow 会尽力解析你给出的字符串,`get()` 返回 Arrow 的 `datetime` 类的一个实例。要使用 Arrow 来获取 Python datetime 对象,按照如下所示链式 datetime: ``` $ arrow.get('2018-04-29T17:45:25Z').datetime - datetime.datetime(2018, 4, 29, 17, 45, 25, tzinfo=tzutc()) ``` -通过 Arrow datetime 类的实例,你可以访问 Arrow 的其他有用方法。例如,它的 humanize() 方法将日期时间翻译成人类可读的短语,就像这样: +通过 Arrow datetime 类的实例,你可以访问 Arrow 的其他有用方法。例如,它的 `humanize()` 方法将日期时间翻译成人类可读的短语,就像这样: ``` $ import arrow - $ utc = arrow.utcnow() - $ utc.humanize() - 'seconds ago' ``` @@ -144,23 +126,20 @@ $ utc.humanize() ### Moment -[Moment][28] 的作者认为它是"内部测试版",但即使它处于早期阶段,它也是非常受欢迎的,我们想来讨论它。 +[Moment][28] 的作者认为它是“内部测试版”,但即使它处于早期阶段,它也是非常受欢迎的,我们想来讨论它。 Moment 的方法将字符转换为其他更有用的东西很简单,类似于我们之前提到的库: ``` $ import moment - $ moment.date('2018-04-29T17:45:25Z') - ``` -就像其他库一样,它最初返回它自己的 datetime 类的实例,要返回 Python datetime 对象,添加额外的 date() 调用即可。 +就像其他库一样,它最初返回它自己的 datetime 类的实例,要返回 Python datetime 对象,添加额外的 `date()` 调用即可。 ``` $ moment.date('2018-04-29T17:45:25Z').date - datetime.datetime(2018, 4, 29, 17, 45, 25, tzinfo=) ``` @@ -170,71 +149,60 @@ Moment 还提供了使用人类可读的语言创建新日期的方法。例如 ``` $ moment.date("tomorrow") - ``` -它的 add 和 subtract 命令使用关键字参数来简化日期的操作。为了获得后天,Moment 会使用下面的代码: +它的 `add()` 和 `subtract()` 命令使用关键字参数来简化日期的操作。为了获得后天,Moment 会使用下面的代码: ``` $ moment.date("tomorrow").add(days=1) - ``` ### Maya -[Maya][29] 包含其他流行的库,它们处理 Python 中的日期时间,包括 Humanize, pytz 和 pendulum 等等。这个项目旨在让人们更容易处理日期。 +[Maya][29] 包含了 Python 中其他流行处理日期时间的库,包括 Humanize、 pytz 和 pendulum 等等。这个项目旨在让人们更容易处理日期。 Maya 的 README 包含几个有用的实例。以下是如何使用 Maya 来重新处理以前的解析示例: ``` $ import maya - $ maya.parse('2018-04-29T17:45:25Z').datetime() - datetime.datetime(2018, 4, 29, 17, 45, 25, tzinfo=) ``` -注意我们必须在 maya.parse() 之后调用 .datetime()。如果我们跳过这一步,Maya 将会返回一个 MayaDT 类的示例:。 +注意我们必须在 `maya.parse()` 之后调用 `datetime()`。如果我们跳过这一步,Maya 将会返回一个 MayaDT 类的示例:``。 -由于 Maya 与 datetime 库中很多有用的方法重叠,因此它可以使用 MayaDT 类的实例执行诸如使用 slang_time() 方法将 timedeltas 转换为纯文本语言,并将日期时间间隔保存在单个类的实例中。以下是如何使用 Maya 将日期时间表示为人类可读的短语: +由于 Maya 与 datetime 库中很多有用的方法重叠,因此它可以使用 MayaDT 类的实例执行诸如使用 `slang_time()` 方法将时间偏移量转换为纯文本语言,并将日期时间间隔保存在单个类的实例中。以下是如何使用 Maya 将日期时间表示为人类可读的短语: ``` $ import maya - $ maya.parse('2018-04-29T17:45:25Z').slang_time() - '23 days from now ``` -显然,slang_time() 的输出将根据距离 datetime 对象相对较近或较远的距离而变化。 +显然,`slang_time()` 的输出将根据距离 datetime 对象相对较近或较远的距离而变化。 ### Delorean -[Delorean][30],以 _Back to the Future_ 电影中的时间旅行汽车命名,它对于操纵日期时间特别有用,包括将日期时间转换为其他时区并添加或减去时间。 +[Delorean][30],以 《返回未来》 电影中的时间旅行汽车命名,它对于操纵日期时间特别有用,包括将日期时间转换为其他时区并添加或减去时间。 Delorean 需要有效的 Python datetime 对象才能工作,所以如果你需要使用时间字符串,最好将其与上述库中的一个配合使用。例如,将 Maya 与 Delorean 一起使用: ``` $ import maya - $ d_t = maya.parse('2018-04-29T17:45:25Z').datetime() ``` -现在,随着 datetime 对象 d_t 在你掌控之中,你可以使用 Delorean 来搞一些事情,例如将日期时间转换为美国东部时区: +现在,你有了一个 datetime 对象 d_t,你可以使用 Delorean 来做一些事情,例如将日期时间转换为美国东部时区: + ``` $ from delorean import Delorean - $ d = Delorean(d_t) - $ d - Delorean(datetime=datetime.datetime(2018, 4, 29, 17, 45, 25), timezone='UTC') - $ d.shift('US/Eastern') - Delorean(datetime=datetime.datetime(2018, 4, 29, 13, 45, 25), timezone='US/Eastern') ``` @@ -244,7 +212,6 @@ Delorean(datetime=datetime.datetime(2018, 4, 29, 13, 45, 25), timezone='US/Easte ``` $ d.next_friday() - Delorean(datetime=datetime.datetime(2018, 5, 4, 13, 45, 25), timezone='US/Eastern') ``` @@ -252,7 +219,7 @@ Delorean(datetime=datetime.datetime(2018, 5, 4, 13, 45, 25), timezone='US/Easter ### Freezegun -[Freezegun][32] 是一个可以帮助你在 Python 代码中测试特定日期的库。使用 @freeze_time 装饰器,你可以为测试用例设置特定的日期和时间,并且所有对 datetime.datetime.now(), datetime.datetime.utcnow() 等的调用都将返回你指定的日期和时间。例如: +[Freezegun][32] 是一个可以帮助你在 Python 代码中测试特定日期的库。使用 `@freeze_time` 装饰器,你可以为测试用例设置特定的日期和时间,并且所有对 `datetime.datetime.now()`、 `datetime.datetime.utcnow()` 等的调用都将返回你指定的日期和时间。例如: ``` @@ -264,7 +231,7 @@ def test():  assert datetime.datetime.now() == datetime.datetime(2017, 4, 14) ``` -要跨时区进行测试,你可以将 tz_offset 参数传递给装饰器。freeze_time 装饰器也接受更简单的口语化日期,例如 @freeze_time('April 4, 2017')。 +要跨时区进行测试,你可以将 `tz_offset` 参数传递给装饰器。`freeze_time` 装饰器也接受更简单的口语化日期,例如 `@freeze_time('April 4, 2017')`。 --- @@ -276,8 +243,10 @@ def test():  via: [https://opensource.com/article/18/4/python-datetime-libraries][34] -作者: [Lacey Williams Hensche][35] 选题者: [@lujun9972][36] -译者: [MjSeven][37] 校对: [校对者ID][38] +作者: [Lacey Williams Hensche][35] +选题: [lujun9972](https://github.com/lujun9972) +译者: [MjSeven](https://github.com/MjSeven) +校对: [wxy](https://github.com/wxy) 本文由 [LCTT][39] 原创编译,[Linux中国][40] 荣誉推出 @@ -316,8 +285,5 @@ via: [https://opensource.com/article/18/4/python-datetime-libraries][34] [33]: https://github.com/kennethreitz/maya [34]: https://opensource.com/article/18/4/python-datetime-libraries [35]: https://opensource.com/users/laceynwilliams -[36]: https://github.com/lujun9972 -[37]: https://github.com/MjSeven -[38]: https://github.com/校对者ID [39]: https://github.com/LCTT/TranslateProject [40]: https://linux.cn/ diff --git a/translated/tech/20180427 How to Compile a Linux Kernel.md b/published/20180427 How to Compile a Linux Kernel.md similarity index 55% rename from translated/tech/20180427 How to Compile a Linux Kernel.md rename to published/20180427 How to Compile a Linux Kernel.md index 48926a862d..ce37651eb8 100644 --- a/translated/tech/20180427 How to Compile a Linux Kernel.md +++ b/published/20180427 How to Compile a Linux Kernel.md @@ -1,118 +1,117 @@ 如何编译 Linux 内核 ====== +> Jack 将带你在 Ubuntu 16.04 服务器上走过内核编译之旅。 + ![](https://www.linux.com/sites/lcom/files/styles/rendered_file/public/chester-alvarez-644-unsplash.jpg?itok=aFxG9kUZ) -曾经一段时间内,升级 Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤以及更多的时间。现在,内核安装可以轻易地通过像 `apt` 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核 (比如针对音频产品的实时内核)。 +曾经有一段时间,升级 Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 `apt` 这样的包管理器来处理。通过添加特定的仓库,你能很轻易地安装实验版本的或者指定版本的内核(比如针对音频产品的实时内核)。 考虑一下,既然升级内核如此容易,为什么你不愿意自行编译一个呢?这里列举一些可能的原因: - * 你想要简单了解它 (编译内核) 的过程 + + * 你想要简单了解编译内核的过程 * 你需要启用或者禁用内核中特定的选项,因为它们没有出现在标准选项里 * 你想要启用标准内核中可能没有添加的硬件支持 * 你使用的发行版需要你编译内核 * 你是一个学生,而编译内核是你的任务 -不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的 Linux 内核(很久以前),然后尝试从它启动,我从中 (系统快速地崩溃,然后不断地尝试和失败) 感受到一种特定的兴奋。 -既然这样,让我们来实验一下编译内核的过程。我将使用 `Ubuntu 16.04 Server` 来进行演示。在运行一次常规的 `sudo apt upgrade` 之后,当前安装的内核版本是 `4.4.0-121`。我想要升级内核版本到 `4.17`. 我们小心地开始吧。 +不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。当我第一次编译一个新的 Linux 内核(那是很久以前了),然后尝试从它启动,我从中(系统马上就崩溃了,然后不断地尝试和失败)感受到一种特定的兴奋。 -有一个警告:强烈建议你在虚拟机里实验本模块。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 +既然这样,让我们来实验一下编译内核的过程。我将使用 Ubuntu 16.04 Server 来进行演示。在运行了一次常规的 `sudo apt upgrade` 之后,当前安装的内核版本是 `4.4.0-121`。我想要升级内核版本到 `4.17`, 让我们小心地开始吧。 + +有一个警告:强烈建议你在虚拟机里实验这个过程。基于虚拟机,你总能创建一个快照,然后轻松地从任何问题中回退出来。不要在产品机器上使用这种方式升级内核,除非你知道你在做什么。 ### 下载内核 -我们要做的第一件事是下载内核源码。可以找到所需内核 (在 [Kernel.org][1]) 的 URL 来下载。找到 URL 之后,使用如下命令 (我以 `4.17 RC2` 内核为例) 来下载源码文件: + +我们要做的第一件事是下载内核源码。在 [Kernel.org][1] 找到你要下载的所需内核的 URL。找到 URL 之后,使用如下命令(我以 `4.17 RC2` 内核为例) 来下载源码文件: + ``` wget https://git.kernel.org/torvalds/t/linux-4.17-rc2.tar.gz - ``` 在下载期间,有一些事需要去考虑。 ### 安装需要的环境 -为了编译内核,我们首先得安装一些需要的环境。这可以通过一个命令来完成: +为了编译内核,我们首先得安装一些需要的环境。这可以通过一个命令来完成: + ``` sudo apt-get install git fakeroot build-essential ncurses-dev xz-utils libssl-dev bc flex libelf-dev bison - ``` -务必注意: 你将需要至少 128GB 的本地可用磁盘空间来完成内核的编译过程。因此你必须确保有足够的空间。 +务必注意:你将需要至少 128GB 的本地可用磁盘空间来完成内核的编译过程。因此你必须确保有足够的空间。 ### 解压源码 -在新下载的内核所在的文件夹下,使用该命令来解压内核: +在新下载的内核所在的文件夹下,使用该命令来解压内核: + ``` tar xvzf linux-4.17-rc2.tar.gz - ``` 使用命令 `cd linux-4.17-rc2` 进入新生成的文件夹。 ### 配置内核 -在正式编译内核之前,我们首先必须配置需要包含哪些模块。实际上,有一些非常简单的方式来配置。使用一个命令,你能拷贝当前内核的配置文件,然后使用可靠的 `menuconfig` 命令来做任何必要的更改。使用如下命令来完成: +在正式编译内核之前,我们首先必须配置需要包含哪些模块。实际上,有一些非常简单的方式来配置。使用一个命令,你能拷贝当前内核的配置文件,然后使用可靠的 `menuconfig` 命令来做任何必要的更改。使用如下命令来完成: + ``` cp /boot/config-$(uname -r) .config - ``` -现在你有一个配置文件了,输入命令 `make menuconfig`。该命令将打开一个配置工具 (图 1),它可以让你遍历每个可用模块,然后启用或者禁用你需要或者不需要的模块。 - +现在你有一个配置文件了,输入命令 `make menuconfig`。该命令将打开一个配置工具(图 1),它可以让你遍历每个可用模块,然后启用或者禁用你需要或者不需要的模块。 ![menuconfig][3] -图 1: 运行中的 `make menuconfig`. +*图 1: 运行中的 `make menuconfig`* -[Used with permission][4] - -很有可能你会禁用掉内核中的一个重要部分,所以在 `menuconfig` 期间小心地一步步进行。如果你对某个选项不确定,不要去管它。或者更好的方法是使用我们拷贝的当前运行的内核的配置文件 (因为我们知道它可以工作)。一旦你已经遍历了整个配置列表 (它非常长),你就准备好开始编译了。 +很有可能你会禁用掉内核中的一个重要部分,所以在 `menuconfig` 期间小心地一步步进行。如果你对某个选项不确定,不要去管它。或者更好的方法是使用我们拷贝的当前运行的内核的配置文件(因为我们知道它可以工作)。一旦你已经遍历了整个配置列表(它非常长),你就准备好开始编译了。 ### 编译和安装 -现在是时候去实际地编译内核了。第一步是使用 `make` 命令去编译。那么调用 `make` 命令然后回答必要的问题 (图 2)。这些问题取决于你将升级的现有内核以及升级后的内核。相信我,将会有非常多的问题要回答,因此你得预留大量的时间。 +现在是时候去实际地编译内核了。第一步是使用 `make` 命令去编译。调用 `make` 命令然后回答必要的问题(图 2)。这些问题取决于你将升级的现有内核以及升级后的内核。相信我,将会有非常多的问题要回答,因此你得预留大量的时间。 ![make][6] -图 2: 回答 `make` 命令的问题 +*图 2: 回答 `make` 命令的问题* -[Used with permission][4] +回答了长篇累牍的问题之后,你就可以用如下的命令安装那些之前启用的模块: -回答了长篇累牍的问题之后,你就可以用如下的命令安装那些之前启用的模块: ``` make modules_install - ``` -又来了,这个命令将耗费一些时间,所以要么坐下来看着编译输出,或者去做些其他事 (因为编译期间不需要你的输入)。可能的情况是,你想要进行别的任务 (除非你真的喜欢看着终端界面上飞舞的输出)。 +又来了,这个命令将耗费一些时间,所以要么坐下来看着编译输出,或者去做些其他事(因为编译期间不需要你的输入)。可能的情况是,你想要去进行别的任务(除非你真的喜欢看着终端界面上飞舞而过的输出)。 + +现在我们使用这个命令来安装内核: -现在我们使用这个命令来安装内核: ``` sudo make install - ``` -又一次,另一个将要耗费大量可观时间的命令。事实上,`make install` 命令将比 `make modules_install` 命令花费更多的时间。去享用午餐,配置一个路由器,将 Linux 安装在一些服务器上,或者小睡一会。 +又一次,另一个将要耗费大量可观时间的命令。事实上,`make install` 命令将比 `make modules_install` 命令花费更多的时间。去享用午餐,配置一个路由器,将 Linux 安装在一些服务器上,或者小睡一会吧。 ### 启用内核作为引导 -一旦 `make install` 命令完成了,就是时候将内核启用来作为引导。 -使用这个命令来实现: +一旦 `make install` 命令完成了,就是时候将内核启用来作为引导。使用这个命令来实现: + ``` sudo update-initramfs -c -k 4.17-rc2 - ``` -当然,你需要将上述内核版本号替换成你编译完的。当命令执行完毕后,使用如下命令来更新 grub: +当然,你需要将上述内核版本号替换成你编译完的。当命令执行完毕后,使用如下命令来更新 grub: + ``` sudo update-grub - ``` 现在你可以重启系统并且选择新安装的内核了。 ### 恭喜! -你已经编译了一个 Linux 内核!它是一项耗费一些时间的活动;但是,最终你的 Linux 发行版将拥有一个定制的内核,同时你也将拥有一项被许多 Linux 管理员所倾向忽视的重要技能。 +你已经编译了一个 Linux 内核!它是一项耗费时间的活动;但是,最终你的 Linux 发行版将拥有一个定制的内核,同时你也将拥有一项被许多 Linux 管理员所倾向忽视的重要技能。 -从 Linux 基金会和 edX 提供的免费 ["Introduction to Linux" ][7] 课程来学习更多的 Linux 知识。 +从 Linux 基金会和 edX 提供的免费 [“Introduction to Linux”][7] 课程来学习更多的 Linux 知识。 -------------------------------------------------------------------------------- @@ -121,7 +120,7 @@ via: https://www.linux.com/learn/intro-to-linux/2018/4/how-compile-linux-kernel- 作者:[Jack Wallen][a] 选题:[lujun9972](https://github.com/lujun9972) 译者:[icecoobe](https://github.com/icecoobe) -校对:[校对者ID](https://github.com/校对者ID) +校对:[wxy](https://github.com/wxy) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 diff --git a/sources/tech/20180131 A history of low-level Linux container runtimes.md b/sources/tech/20180131 A history of low-level Linux container runtimes.md index e83477249d..3cd7cafdf0 100644 --- a/sources/tech/20180131 A history of low-level Linux container runtimes.md +++ b/sources/tech/20180131 A history of low-level Linux container runtimes.md @@ -1,3 +1,5 @@ +pinewall translating + A history of low-level Linux container runtimes ====== diff --git a/sources/tech/20180404 Containerization, Atomic Distributions, and the Future of Linux.md b/sources/tech/20180404 Containerization, Atomic Distributions, and the Future of Linux.md index 8111e01a10..1fa68f3778 100644 --- a/sources/tech/20180404 Containerization, Atomic Distributions, and the Future of Linux.md +++ b/sources/tech/20180404 Containerization, Atomic Distributions, and the Future of Linux.md @@ -1,3 +1,5 @@ +pinewall translating + Containerization, Atomic Distributions, and the Future of Linux ====== diff --git a/sources/tech/20180514 LikeCoin, a cryptocurrency for creators of openly licensed content.md b/sources/tech/20180514 LikeCoin, a cryptocurrency for creators of openly licensed content.md deleted file mode 100644 index f08c81b10e..0000000000 --- a/sources/tech/20180514 LikeCoin, a cryptocurrency for creators of openly licensed content.md +++ /dev/null @@ -1,49 +0,0 @@ -translating----geekpi - -LikeCoin, a cryptocurrency for creators of openly licensed content -====== -![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0) - -Conventional wisdom indicates that writers, photographers, artists, and other creators who share their content for free, under Creative Commons and other open licenses, won't get paid. That means most independent creators don't make any money by publishing their work on the internet. Enter [LikeCoin][1]: a new, open source project that intends to make this convention, where artists often have to compromise or sacrifice in order to contribute, a thing of the past. - -The LikeCoin protocol is designed to monetize creative content so creators can focus on creating great material rather than selling it. - -The protocol is also based on decentralized technologies that track when content is used and reward its creators with LikeCoin, an [Ethereum ERC-20][2] cryptocurrency token. It operates through a "Proof of Creativity" algorithm which assigns LikeCoins based partially on how many "likes" a piece of content receives and how many derivative works are produced from it. Because openly licensed content has more opportunity to be reused and earn LikeCoin tokens, the system encourages content creators to publish under Creative Commons licenses. - -### How it works - -When a creative piece is uploaded via the LikeCoin protocol, the content creator includes the work's metadata, including author information and its InterPlanetary Linked Data ([IPLD][3]). This data forms a family graph of derivative works; we call the relationships between a work and its derivatives the "content footprint." This structure allows a content's inheritance tree to be easily traced all the way back to the original work. - -LikeCoin tokens will be distributed to creators using information about a work's derivation history. Since all creative works contain the metadata of the author's wallet, the corresponding LikeCoin shares can be calculated through the algorithm and distributed accordingly. - -LikeCoins are awarded in two ways: either directly by individuals who want to show their appreciation by paying a content creator, or through the Creators Pool, which collects viewers' "Likes" and distributes LikeCoin according to a content's LikeRank. Based on content-footprint tracing in the LikeCoin protocol, the LikeRank measures the importance (or creativity as we define it in this context) of a creative content. In general, the more derivative works a creative content generates, the more creative the creative content is, and thus the higher LikeRank of the content. LikeRank is the quantifier of the creativity of contents. - -### Want to get involved? - -LikeCoin is still very new, and we expect to launch our first decentralized application later in 2018 to reward Creative Commons content and connect seamlessly with a much larger and established community. - -Most of LikeCoin's code can be accessed in the [LikeCoin GitHub][4] repository under a [GPL 3.0 license][5]. Since it's still under active development, some of the experimental code is not yet open to the public, but we will make it so as soon as possible. - -We welcome feature requests, pull requests, forks, and stars. Please join our development on GitHub and our general discussions on [Telegram][6]. We also release updates about our progress on [Medium][7], [Facebook][8], [Twitter][9], and our website, [like.co][1]. - --------------------------------------------------------------------------------- - -via: https://opensource.com/article/18/5/likecoin - -作者:[Kin Ko][a] -选题:[lujun9972](https://github.com/lujun9972) -译者:[译者ID](https://github.com/译者ID) -校对:[校对者ID](https://github.com/校对者ID) - -本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 - -[a]:https://opensource.com/users/ckxpress -[1]:https://like.co/ -[2]:https://en.wikipedia.org/wiki/ERC20 -[3]:https://ipld.io/ -[4]:https://github.com/likecoin -[5]:https://www.gnu.org/licenses/gpl-3.0.en.html -[6]:https://t.me/likecoin -[7]:http://medium.com/likecoin -[8]:http://fb.com/likecoin.foundation -[9]:https://twitter.com/likecoin_fdn diff --git a/sources/tech/20180521 Starting user software in X.md b/sources/tech/20180521 Starting user software in X.md index cf4ae850f6..148127c817 100644 --- a/sources/tech/20180521 Starting user software in X.md +++ b/sources/tech/20180521 Starting user software in X.md @@ -1,3 +1,5 @@ +translating---geekpi + Starting user software in X ====== diff --git a/translated/tech/20180514 LikeCoin, a cryptocurrency for creators of openly licensed content.md b/translated/tech/20180514 LikeCoin, a cryptocurrency for creators of openly licensed content.md new file mode 100644 index 0000000000..4fd5070aed --- /dev/null +++ b/translated/tech/20180514 LikeCoin, a cryptocurrency for creators of openly licensed content.md @@ -0,0 +1,47 @@ +LikeCoin,一种给创作者的开放内容许可的加密货币 +====== +![](https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/osdc_whitehurst_money.png?itok=ls-SOzM0) + +传统观点表明,作家、摄影师、艺术家和其他创作者在 Creative Commons 和其他开放许可下免费共享内容的不会得到报酬。这意味着大多数独立创作者无法通过在互联网上发布他们的作品来赚钱。输入 [LikeCoin][1]:一个新的开源项目,旨在制定这个惯例,艺术家经常为了分发而不得不妥协或牺牲,这是过去的事情。 + +LikeCoin 协议旨在通过创意内容获利,因此创作者可以专注于创造出色的内容而不是出售。 + +协议同样基于去中心化技术,它可以跟踪何时使用内容,并使用 LikeCoin,一种 [Ethereum ERC-20][2] 加密货币令牌奖励其创作者。它通过“创造性证明”算法进行操作,该算法一部分根据作品收到多少个“喜欢”,一部分根据有多少作品衍生自它而分配 LikeCoin。由于开放授权内容有更多机会被重复使用并获得 LikeCoin 令牌,因此系统鼓励内容创作者在 Creative Commons 许可下发布。 + +### 如何运行 + +当通过 LikeCoin 协议上传创意片段时,内容创作者将包括作品的元数据,包括作者信息及其 InterPlanetary 关联数据([IPLD][3])。这些数据构成了衍生作品的家族图表;我们称作品与其衍生品之间的关系为“内容足迹”。这种结构使得内容的继承树可以很容易地追溯到原始作品。 + +LikeCoin 令牌将作品衍生历史记录的信息分发给创作者。由于所有创意作品都包含作者钱包的元数据,因此相应的 LikeCoin 份额可以通过算法计算并分发。 + +LikeCoin 可以通过两种方式获得奖励:直接由想要通过支付内容创建者来表示赞赏的个人或通过 Creators Pool 收集观众的“赞”的并根据内容的 LikeRank 分配 LikeCoin。基于在 LikeCoin 协议中的内容追踪,LikeRank 衡量作品重要性(或者我们在这定义的创造性)。一般来说,一副作品有越多的衍生作品,创意内容的创新越多,内容就会有更高的 LikeRank。 LikeRank 是内容创新性的量化者。 + +### 如何参与? + +LikeCoin 仍然非常新,我们期望在 2018 年晚些时候推出我们的第一个去中心化程序来奖励 Creative Commons 的内容,并与更大的社区无缝连接。 + +LikeCoin 的大部分代码都可以在 [LikeCoin GitHub][4] 仓库中通过[ GPL 3.0 许可证][5]访问。由于它仍处于积极开发阶段,一些实验代码尚未公开,但我们会尽快完成。 + +我们欢迎功能请求,pull request,fork 和 star。请参与我们在 Github 上的开发,并加入我们在 [Telegram][6] 的讨论组。我们同样在 [Medium][7]、[Facebook][8]、[Twitter][9] 和我们的网站 [like.co][1] 发布关于我们进展的最新消息。 + +-------------------------------------------------------------------------------- + +via: https://opensource.com/article/18/5/likecoin + +作者:[Kin Ko][a] +选题:[lujun9972](https://github.com/lujun9972) +译者:[geekpi](https://github.com/geekpi) +校对:[校对者ID](https://github.com/校对者ID) + +本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 + +[a]:https://opensource.com/users/ckxpress +[1]:https://like.co/ +[2]:https://en.wikipedia.org/wiki/ERC20 +[3]:https://ipld.io/ +[4]:https://github.com/likecoin +[5]:https://www.gnu.org/licenses/gpl-3.0.en.html +[6]:https://t.me/likecoin +[7]:http://medium.com/likecoin +[8]:http://fb.com/likecoin.foundation +[9]:https://twitter.com/likecoin_fdn diff --git a/sources/tech/20180516 You-Get - A CLI Downloader To Download Media From 80- Websites.md b/translated/tech/20180516 You-Get - A CLI Downloader To Download Media From 80- Websites.md similarity index 50% rename from sources/tech/20180516 You-Get - A CLI Downloader To Download Media From 80- Websites.md rename to translated/tech/20180516 You-Get - A CLI Downloader To Download Media From 80- Websites.md index ef004bc75d..089169c66b 100644 --- a/sources/tech/20180516 You-Get - A CLI Downloader To Download Media From 80- Websites.md +++ b/translated/tech/20180516 You-Get - A CLI Downloader To Download Media From 80- Websites.md @@ -1,51 +1,51 @@ -You-Get – A CLI Downloader To Download Media From 80+ Websites +You-Get - 支持 80+ 网站的命令行多媒体下载器 ====== ![](https://www.ostechnix.com/wp-content/uploads/2018/05/you-get-1-720x340.jpg) -Most of you may used or heard about **Youtube-dl** , a command line program to download videos from youtube and other 100+ websites. I just stumbled upon a similar utility named **“You-Get”**. It is also a CLI downloader written in Python. It allows you to download images, audios and videos from popular websites like Youtube, Facebook, Twitter and a lot more. Currently, there are 80+ websites are supported. Click [**here**][1] to read the full list of supported sites. +你们大多数人可能用过或听说过 **Youtube-dl**,这个命令行程序可以从包括 Youtube 在内的 100+ 网站下载视频。我偶然发现了一个类似的工具,名字叫做 **"You-Get"**。这是一个 Python 编写的命令行下载器,可以让你从 Youtube,Facebook,Twitter 等很多热门网站下载图片,音频和视频。目前该下载器支持 80+ 站点,点击[**这里**][1]查看所有支持的网站。 -You-Get is not only a downloader, but also can stream the online videos in your media player. It even allows you to search for videos on google. Just pass the search term and You-Get will google it and download the most relevant videos. Another notable feature, it allows you to pause and resume the downloads. It is completely free, open source and cross-platform application that on Linux, Mac OS and Windows. +You-Get 不仅仅是一个下载器,它还可以将在线视频导流至你的视频播放器。更进一步,它还允许你在 Google 上搜索视频,只要给出搜索项,You-Get 使用 Google 搜索并下载相关度最高的视频。另外值得一提的特性是,它允许你暂停和恢复下载过程。它是一个完全自由、开源及跨平台的应用,适用于 Linux,MacOS 及 Windows。 -### Install You-Get +### 安装 You-Get -Make sure you have installed the following prerequisites. +确保你已经安装如下依赖项: + Python 3 -+ FFmpeg (strongly recommended) or Libav -+ (Optional) RTMPDump ++ FFmpeg (强烈推荐) 或 Libav ++ (可选) RTMPDump -You-Get can be installed in many ways. The officially recommended method is using Pip package manager. If you haven’t installed PIP yet, refer the following link. +有多种方式安装 You-Get,其中官方推荐采用 pip 包管理器安装。如果你还没有安装 pip,可以参考如下链接: -[How To Manage Python Packages Using Pip][https://www.ostechnix.com/manage-python-packages-using-pip/] +[如何使用 pip 管理 Python 软件包][2] -Please note that you must install Python 3 version of pip. +需要注意的是,你需要安装 Python 3 版本的 pip。 -Now, run the following command to install You-Get: +接下来,运行如下命令安装 You-Get: ``` $ pip3 install you-get ``` -You can upgrade You-Get to its latest version using command: +可以使用命令升级 You-Get 至最新版本: ``` $ pip3 install --upgrade you-get ``` -### Getting Started With You-Get +### 开始使用 You-Get -The usage is pretty much same as Youtube-dl utility. +使用方式与 Youtube-dl 工具基本一致。 -**Download Videos** +**下载视频** -To download a video, just run: +下载视频,只需运行: ``` $ you-get https://www.youtube.com/watch?v=HXaglTFJLMc ``` -Sample output: +输出示例: ``` site: YouTube title: The Last of The Mohicans by Alexandro Querevalú @@ -61,19 +61,19 @@ Downloading The Last of The Mohicans by Alexandro Querevalú.mp4 ... ``` -You may want to view the details of the video before downloading. You-Get can do that for using **“–info”** or **“-i”** flag. This option will get you all available quality and formats of the given video. +下载视频前,你可能希望查看视频的细节信息。You-Get 提供了 **“–info”** 或 **“-i”** 参数,使用该参数可以获得给定视频所有可用的分辨率和格式。 ``` $ you-get -i https://www.youtube.com/watch?v=HXaglTFJLMc ``` -Or, +或者 ``` -$ you-get -info https://www.youtube.com/watch?v=HXaglTFJLMc +$ you-get --info https://www.youtube.com/watch?v=HXaglTFJLMc ``` -Sample output would be: +输出示例如下: ``` site: YouTube title: The Last of The Mohicans by Alexandro Querevalú @@ -124,15 +124,15 @@ streams: # Available quality and codecs ``` -By default, You-Get will download the format marked with **DEFAULT**. If you don’t like that format or quality, you can pick any other format you like. Use the itag value given in the each format. +默认情况下,You-Get 会下载标记为 **DEFAULT** 的格式。如果你对格式或分辨率不满意,可以选择你喜欢的格式,使用格式对应的 itag 值即可。 ``` $ you-get --itag=244 https://www.youtube.com/watch?v=HXaglTFJLMc ``` -**Download Audios** +**下载音频** -The following command will download an audio from soundcloud website. +执行下面的命令,可以从 soundcloud 网站下载音频: ``` $ you-get 'https://soundcloud.com/uiceheidd/all-girls-are-same-999-prod-nick-mira' Site: SoundCloud.com @@ -145,29 +145,30 @@ Downloading ALL GIRLS ARE THE SAME (PROD. NICK MIRA).mp3 ... ``` -To view the details of the audio file, use **-i** flag. +查看音频文件细节,使用 **-i** 参数: ``` $ you-get -i 'https://soundcloud.com/uiceheidd/all-girls-are-same-999-prod-nick-mira' ``` -**Download Images** +**下载图片** -To download an image, run: +运行如下命令下载图片: ``` $ you-get https://pixabay.com/en/mountain-crumpled-cyanus-montanus-3393209/ ``` +You-Get 也可以下载网页中的全部图片: You-Get can also download all images from a web page. ``` $ you-get https://www.ostechnix.com/pacvim-a-cli-game-to-learn-vim-commands/ ``` -**Search Videos** +**搜索视频** -You-Get doesn’t even a valid URL. You can just pass a random search terms. You-Get will google it and download the most relevant video based on your search string. +你只需向 You-Get 传递一个任意的搜索项,而无需给出有效的 URL;You-Get 会使用 Google 搜索并下载与你给出搜索项最相关的视频。(译者注:Google 的机器人检测机制可能导致 503 报错导致该功能无法使用)。 ``` $ you-get 'Micheal Jackson' Google Videos search: @@ -186,23 +187,23 @@ Downloading Michael Jackson - Beat It (Official Video).webm ... ``` -**Watch Videos** +**观看视频** -You-Get can able to stream the online videos in your media player or browser, just without ads or comment section. +You-Get 可以将在线视频导流至你的视频播放器或浏览器,跳过广告和评论部分。(译者注:使用 -p 参数需要对应的 vlc/chrominum 命令可以调用,一般适用于具有图形化界面的操作系统)。 -To watch videos in a media player, for example VLC, run the following command: +以 VLC 视频播放器为例,使用如下命令在其中观看视频: ``` $ you-get -p vlc https://www.youtube.com/watch?v=HXaglTFJLMc ``` -Or, +或者 ``` $ you-get --player vlc https://www.youtube.com/watch?v=HXaglTFJLMc ``` -Similarly, to stream the videos in your browser, for example chromium, use: +类似地,将视频导流至以 chromium 为例的浏览器中,使用如下命令: ``` $ you-get -p chromium https://www.youtube.com/watch?v=HXaglTFJLMc @@ -210,31 +211,31 @@ $ you-get -p chromium https://www.youtube.com/watch?v=HXaglTFJLMc ![][3] -As you can see in the above screenshot, there is no ads, comment section. Just a plain page with the video. +在上述屏幕截图中,可以看到并没有广告和评论部分,只是一个包含视频的简单页面。 -**Set path and file name for downloaded videos** +**设置下载视频的路径及文件名** -By default, the videos will be downloaded in the current working directory with default video titles. You can, of course, change them as per your liking using **–output-dir/-o** flag to set the path and **–output-filename/-O** to set the name of the downloaded file. +默认情况下,使用视频标题作为默认文件名,下载至当前工作目录。当然,你可以按照你的喜好进行更改,使用 **–output-dir/-o** 参数可以指定路径,使用 **–output-filename/-O** 参数可以指定下载文件的文件名。 ``` $ you-get -o ~/Videos -O output.mp4 https://www.youtube.com/watch?v=HXaglTFJLMc ``` -**Pause and resume downloads** +**暂停和恢复下载** -Press **CTRL+C** to cancel a download. A temporary **.download** file will be saved in the output directory. Next time you run you-get with the same arguments, the download process will resume from the last session. +按 **CTRL+C** 可以取消下载。一个以 **.download** 为扩展名的临时文件会保存至输出路径。下次你使用相同的参数下载时,下载过程将延续上一次的过程。 -In case the file is completely downloaded, the temporary .download extension will be gone, and you-get will just skip the download. To enforce re-downloading, use the **–force/-f** option. +当文件下载完成后,以 .download 为扩展名的临时文件会自动消失。如果这时你使用同样参数下载,You-Get 会跳过下载;如果你想强制重新下载,可以使用 **–force/-f** 参数。 -For more details, refer the help section by running the following command. +查看命令的帮助部分可以获取更多细节,命令如下: ``` $ you-get --help ``` -And, that’s all for now. More good stuffs to come. Stay tuned! +这次的分享到此结束,后续还会介绍更多的优秀工具,敬请期待! -Cheers! +感谢各位阅读! @@ -244,11 +245,12 @@ via: https://www.ostechnix.com/you-get-a-cli-downloader-to-download-media-from-8 作者:[SK][a] 选题:[lujun9972](https://github.com/lujun9972) -译者:[译者ID](https://github.com/译者ID) +译者:[pinewall](https://github.com/pinewall) 校对:[校对者ID](https://github.com/校对者ID) 本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出 [a]:https://www.ostechnix.com/author/sk/ [1]:https://you-get.org/#supported-sites +[2]:https://www.ostechnix.com/manage-python-packages-using-pip/ [3]:http://www.ostechnix.com/wp-content/uploads/2018/05/you-get.jpg