2018年6月

Ansible 运行分析工具(ARA)与 Ansible 无缝集成,可以简单便捷的找到你所需数据的方法。

Ansible 是一个多功能平台,它已经成为管理服务器和服务器配置的流行平台。如今,Ansible 大量用于通过持续集成 (CI) 进行部署和测试。

在自动化持续集成的世界中,每天都有数百个甚至数千个作业运行测试、构建、编译、部署等等,这并不罕见。

Ansible 运行分析 (ARA) 工具

Ansible 运行生成大量控制台数据,在 CI 的环境下跟上大量的 Ansible 输出是具有挑战性的。Ansible Run Analysis(ARA) 工具使此详细输出可读并且使作业状态和调试信息更有代表性。ARA 组织了记录的 剧本 playbook 数据,以便你尽可能快速和容易地搜索并找到你感兴趣的内容。

请注意,ARA 不会运行你的 剧本 playbook 。相反,无论在哪它都它作为回调插件与 Ansible 集成。回调插件可以在响应事件时向 Ansible 添加新行为。它可以根据 Ansible 事件执行自定义操作,例如在主机开始执行或任务完成时执行。

AWXTower 相比,它们是控制整个工作流程的工具,具有仓库管理、 剧本 playbook 执行、编辑功能等功能,ARA 的范围相对较窄:记录数据并提供直观的界面。这是一个相对简单的程序,易于安装和配置。

安装

在系统上安装 ARA 有两种方法:

  • 使用托管在 GitHub 帐户 上的 Ansible 角色。克隆仓库并:
ansible-playbook Playbook.yml

如果剧本执行成功,你将看到:

TASK [ara : Display ara UI URL] ************************
   ok: [localhost] => {}
   "msg": "Access playbook records at http://YOUR_IP:9191"

注意:它从 Ansible 收集的 ansible_default_ipv4 fact 中选择 IP 地址。如果没有收集这些 fact,请用 roles/ara/tasks/ 文件夹中 main.yml 文件中的 IP 替换它。

  • ARA 是一个在 GitHub 上以 Apache v2 许可证授权的开源项目。安装说明在快速入门章节。文档FAQ 可在 readthedocs.io 上找到。

ARA 能做些什么?

下图显示了从浏览器启动 ARA 登录页面:

 title=

ARA 登录页面

它提供了每个主机或每个 playbook 的任务结果摘要:

 title=

ARA 显示任务摘要

它允许你通过剧本,play,主机、任务或状态来过滤任务结果:

 title=

通过主机过滤剧本运行

借助 ARA,你可以在摘要视图中轻松查看你感兴趣的结果,无论是特定的主机还是特定的任务:

 title=

每项任务的详细摘要

ARA 支持在同一数据库中记录和查看多个运行。

 title=

显示收集的 fact

总结

ARA 是一个已经帮助我从 Ansible 运行日志和输出中了解更多的有用资源。我强烈推荐给所有的 Ansible 使用者。

请随意分享,并请在评论中告诉我你使用 ARA 的经历。

参见我们的相关文章,[成功使用 Ansible 的秘诀]。


via: https://opensource.com/article/18/5/analyzing-ansible-runs-using-ara

作者:Ajinkya Bapat 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

你好,Vim用户!今天,我偶然发现了一个很酷的程序来提高 Vim 的使用技巧。Vim 是编写和编辑代码的绝佳编辑器。然而,你们中的一些人(包括我)仍在陡峭的学习曲线中挣扎。再也不用了!来看看 PacVim,一款可帮助你学习 Vim 命令的命令行游戏。PacVim 的灵感来源于经典游戏 PacMan,它以一种好玩有趣的方式为你提供了大量的 Vim 命令练习。简而言之,PacVim 是一种深入了解 vim 命令的有趣而自由的方式。请不要将 PacMan 与 pacman (arch Linux 包管理器)混淆。 PacMan 是 20 世纪 80 年代发布的经典流行街机游戏。

在本简要指南中,我们将看到如何在 Linux 中安装和使用 PacVim。

安装 PacVim

首先按如下链接安装 Ncurses 库和开发工具

请注意,如果没有 gcc 4.8.X 或更高版本,这款游戏可能无法正确编译和安装。我在 Ubuntu 18.04 LTS 上测试了 PacVim,并且完美运行。

安装 Ncurses 和 gcc 后,运行以下命令来安装 PacVim。

$ git clone https://github.com/jmoon018/PacVim.git
$ cd PacVim
$ sudo make install

使用 PacVim 学习 Vim 命令

启动 PacVim 游戏

要玩这个游戏,只需运行:

$ pacvim [LEVEL_NUMER] [MODE]

例如,以下命令以普通模式启动游戏第 5 关。

$ pacvim 5 n

这里,5 表示等级,n表示模式。有两种模式:

  • n – 普通模式。
  • h – 困难模式。

默认模式是 h,这很难:

要从头开始(0 级),请运行:

$ pacvim

以下是我 Ubuntu 18.04 LTS 的示例输出。

要开始游戏,只需按下回车。

现在开始游戏。阅读下一节了解如何玩。

要退出,请按下 ESCq

以下命令以困难模式启动游戏第 5 关。

$ pacvim 5 h

或者,

$ pacvim 5

如何玩 PacVim?

PacVim 的使用与 PacMan 非常相似。

你必须跑过屏幕上所有的字符,同时避免鬼魂(红色字符)。

PacVim有两个特殊的障碍:

  1. 你不能移动到墙壁中(黄色)。你必须使用 vim 动作来跳过它们。
  2. 如果你踩到波浪字符(青色的 ~),你就输了!

你有三条生命。每次打赢 0、3、6、9 关时你都会获得新生命。总共有 10 关,从 0 到 9,打赢第 9 关后,游戏重置为第 0 关,但是鬼魂速度变快。

获胜条件

使用 vim 命令将光标移动到字母上并高亮显示它们。所有字母都高亮显示后,你就会获胜并进入下一关。

失败条件

如果你碰到鬼魂(用红色 G 表示)或者波浪字符,你就会失去一条命。如果命小于 0 条,你将会输掉整个游戏。

这是实现的命令列表:

作用
q退出游戏
h向左移动
j向下移动
k向上移动
l向右移动
w向前移动到下一个 word 开始
W向前移动到下一个 WORD 开始
e向前移动到下一个 word 结束
E向前移动到下一个 WORD 结束
b向后移动到下一个 word 开始
B向后移动到下一个 WORD 开始
$移动到行的末尾
0移动到行的开始
gg/1G移动到第一行的开始
数字加 G移动到由数字给出的行的开始
G移到最后一行的开头
^移到当前行的第一个 word
1337 cheatz(打赢当前关)

玩过几关之后,你可能会注意到 vim 的使用有改善。一段时间后继续玩这个游戏,直到你掌握 Vim 的使用。

建议阅读:

今天就是这些。希望这篇文章有用。PacVim 好玩又有趣并且让你有事做。同时,你应该能够彻底学习足够的 Vim 命令。试试看,你不会感到失望。

还有更多的好东西。敬请关注!

干杯!


via: https://www.ostechnix.com/pacvim-a-cli-game-to-learn-vim-commands/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

了解如何在 RHEL 中使用订阅管理器来启用软件仓库。 这篇文章还包括了将系统注册到 Red Hat 的步骤、添加订阅和发生错误时的解决方案。

Enable repository using subscription-manager

在本文中,我们将逐步介绍如何在刚安装的 RHEL 服务器中启用 Red Hat 软件仓库。

可以利用 subscription-manager 命令启用软件仓库,如下所示:

root@kerneltalks # subscription-manager repos --enable rhel-6-server-rhv-4-agent-beta-debug-rpms
Error: 'rhel-6-server-rhv-4-agent-beta-debug-rpms' does not match a valid repository ID. Use "subscription-manager repos --list" to see valid repositories.

当您的订阅没有配置好时,您会看到上述错误。让我们一步一步地通过 subscription-manager 来启用软件仓库。

步骤 1:使用 Red Hat 注册您的系统

这里假设您已经安装了新系统并且尚未在 Red Hat 上注册。如果您已经注册了该系统,那么您可以忽略此步骤。

您可以使用下面的命令来检查您的系统是否已在 Red Hat 注册了该订阅:

# subscription-manager version
server type: This system is currently not registered.
subscription management server: Unknown
subscription management rules: Unknown
subscription-manager: 1.18.10-1.el6
python-rhsm: 1.18.6-1.el6

在这里输出的第一行中,您可以看到该系统未注册。那么,让我们开始注册系统。您需要在 subscription-manager 命令中使用 register 选项。在这一步需要使用您的 Red Hat 帐户凭证。

root@kerneltalks # subscription-manager register
Registering to: subscription.rhsm.redhat.com:443/subscription
Username: [email protected]
Password:
Network error, unable to connect to server. Please see /var/log/rhsm/rhsm.log for more information.

如果您遇到上述错误,那么表明您的服务器无法连接到 RedHat。检查您的网络连接,或者您能解决网站名称解析的问题。有时候,即使你能够 ping 通订阅服务器,你也会看到这个错误。这可能是因为您的环境中有代理服务器。在这种情况下,您需要将其详细信息添加到文件 /etc/rhsm/rhsm.conf 中。以下详细的代理信息应根据你的环境填充:

# an http proxy server to use
 proxy_hostname =

# port for http proxy server
 proxy_port =

# user name for authenticating to an http proxy, if needed
 proxy_user =

# password for basic http proxy auth, if needed
 proxy_password =

一旦你完成了这些,通过使用下面的命令重新检查 subscription-manager 是否获得了新的代理信息:

root@kerneltalks # subscription-manager config
[server]
 hostname = [subscription.rhsm.redhat.com]
 insecure = [0]
 port = [443]
 prefix = [/subscription]
 proxy_hostname = [kerneltalksproxy.abc.com]
 proxy_password = [asdf]
 proxy_port = [3456]
 proxy_user = [user2]
 server_timeout = [180]
 ssl_verify_depth = [3]

[rhsm]
 baseurl = [https://cdn.redhat.com]
 ca_cert_dir = [/etc/rhsm/ca/]
 consumercertdir = [/etc/pki/consumer]
 entitlementcertdir = [/etc/pki/entitlement]
 full_refresh_on_yum = [0]
 manage_repos = [1]
 pluginconfdir = [/etc/rhsm/pluginconf.d]
 plugindir = [/usr/share/rhsm-plugins]
 productcertdir = [/etc/pki/product]
 repo_ca_cert = /etc/rhsm/ca/redhat-uep.pem
 report_package_profile = [1]

[rhsmcertd]
 autoattachinterval = [1440]
 certcheckinterval = [240]

[logging]
 default_log_level = [INFO]

[] - Default value in use

现在,请尝试重新注册您的系统。

root@kerneltalks # subscription-manager register
Registering to: subscription.rhsm.redhat.com:443/subscription
Username: [email protected]
Password:
You must first accept Red Hat's Terms and conditions. Please visit https://www.redhat.com/wapps/tnc/termsack?event[]=signIn . You may have to log out of and back into the Customer Portal in order to see the terms.

如果您是第一次将服务器添加到 Red Hat 帐户,您将看到上述错误。转到该 URL并接受条款。回到终端,然后再试一次。

oot@kerneltalks # subscription-manager register
Registering to: subscription.rhsm.redhat.com:443/subscription
Username: [email protected]
Password:
The system has been registered with ID: xxxxb2-xxxx-xxxx-xxxx-xx8e199xxx

Bingo!系统现在已在 Red Hat 上注册。你可以再次用 version 选项来验证它。

#subscription-managerversionservertype:RedHatSubscriptionManagementsubscriptionmanagementserver:2.0.43-1subscriptionmanagementrules:5.26subscription-manager:1.18.10-1.el6python-rhsm:1.18.6-1.el6" decode="true"  ]root@kerneltalks # subscription-manager version
server type: Red Hat Subscription Management
subscription management server: 2.0.43-1
subscription management rules: 5.26
subscription-manager: 1.18.10-1.el6
python-rhsm: 1.18.6-1.el6

步骤 2:将订阅添加到您的服务器

首先尝试列出软件仓库。您将无法列出任何内容,因为我们尚未在我们的服务器中添加任何订阅。

root@kerneltalks # subscription-manager repos --list
This system has no repositories available through subscriptions.

正如您所看到 subscription-manager 找不到任何软件仓库,您需要将订阅添加到您的服务器上。一旦订阅被添加,subscription-manager 将能够列出下列的软件仓库。

要添加订阅,请先使用以下命令检查服务器的所有可用订阅:

root@kerneltalks # subscription-manager list --available
+-------------------------------------------+
Available Subscriptions
+-------------------------------------------+
Subscription Name: Red Hat Enterprise Linux for Virtual Datacenters, Standard
Provides: Red Hat Beta
Red Hat Software Collections (for RHEL Server)
Red Hat Enterprise Linux Atomic Host Beta
Oracle Java (for RHEL Server)
Red Hat Enterprise Linux Server
dotNET on RHEL (for RHEL Server)
Red Hat Enterprise Linux Atomic Host
Red Hat Software Collections Beta (for RHEL Server)
Red Hat Developer Tools Beta (for RHEL Server)
Red Hat Developer Toolset (for RHEL Server)
Red Hat Developer Tools (for RHEL Server)
SKU: RH00050
Contract: xxxxxxxx
Pool ID: 8a85f98c6011059f0160110a2ae6000f
Provides Management: Yes
Available: Unlimited
Suggested: 0
Service Level: Standard
Service Type: L1-L3
Subscription Type: Stackable (Temporary)
Ends: 12/01/2018
System Type: Virtual

您将获得可用于您的服务器的此类订阅的软件仓库列表。您需要阅读它提供的内容并记下对您有用或需要的订阅的 Pool ID

现在,使用 pool ID 将订阅添加到您的服务器。

# subscription-manager attach --pool=8a85f98c6011059f0160110a2ae6000f
Successfully attached a subscription for: Red Hat Enterprise Linux for Virtual Datacenters, Standard

如果您不确定选择哪一个,则可以使用下面的命令自动地添加最适合您的服务器的订阅:

root@kerneltalks # subscription-manager attach --auto
Installed Product Current Status:
Product Name: Red Hat Enterprise Linux Server
Status: Subscribed

接下来是最后一步启用软件仓库。

步骤 3:启用软件仓库

现在您将能够启用软件仓库,该软件仓库在您的附加订阅下可用。

root@kerneltalks # subscription-manager repos --enable rhel-6-server-rhv-4-agent-beta-debug-rpms
Repository 'rhel-6-server-rhv-4-agent-beta-debug-rpms' is enabled for this system.

到这里,您已经完成了。您可以用 yum 命令列出软件仓库并确认。


via: https://kerneltalks.com/howto/how-to-enable-repository-using-subscription-manager-in-rhel/

作者:kerneltalks 译者:S9mtAt 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

关注于易用性,Stratis 为桌面用户提供了一套强力的高级存储功能。

对桌面 Linux 用户而言,极少或仅在安装系统时配置本地存储。Linux 存储技术进展比较慢,以至于 20 年前的很多存储工具仍在今天广泛使用。但从那之后,存储技术已经提升了不少,我们为何不享受新特性带来的好处呢?

本文介绍 Startis,这是一个新项目,试图让所有 Linux 用户从存储技术进步中受益,适用场景可以是仅有一块 SSD 的单台笔记本,也可以是包含上百块硬盘的存储阵列。Linux 支持新特性,但由于缺乏易于使用的解决方案,使其没有被广泛采用。Stratis 的目标就是让 Linux 的高级存储特性更加可用。

简单可靠地使用高级存储特性

Stratis 希望让如下三件事变得更加容易:存储初始化配置;后续变更;使用高级存储特性,包括 快照 snapshots 精简配置 thin provisioning ,甚至 分层 tiering

Stratis:一个卷管理文件系统

Stratis 是一个 卷管理文件系统 volume-managing filesystem (VMF),类似于 ZFSBtrfs。它使用了存储“池”的核心思想,该思想被各种 VMF 和 形如 LVM) 的独立卷管理器采用。使用一个或多个硬盘(或分区)创建存储池,然后在存储池中创建 volume 。与使用 fdiskGParted 执行的传统硬盘分区不同,存储池中的卷分布无需用户指定。

VMF 更进一步与文件系统层结合起来。用户无需在卷上部署选取的文件系统,因为文件系统和卷已经被合并在一起,成为一个概念上的文件树(ZFS 称之为 数据集 dataset ,Brtfs 称之为 子卷 subvolume ,Stratis 称之为文件系统),文件数据位于存储池中,但文件大小仅受存储池整体容量限制。

换一个角度来看:正如文件系统对其中单个文件的真实存储块的实际位置做了一层 抽象 abstract ,而 VMF 对存储池中单个文件系统的真实存储块的实际位置做了一层抽象。

基于存储池,我们可以启用其它有用的特性。特性中的一部分理所当然地来自典型的 VMF 实现 implementation ,例如文件系统快照,毕竟存储池中的多个文件系统可以共享 物理数据块 physical data block 冗余 redundancy ,分层, 完整性 integrity 等其它特性也很符合逻辑,因为存储池是操作系统中管理所有文件系统上述特性的重要场所。

上述结果表明,相比独立的卷管理器和文件系统层,VMF 的搭建和管理更简单,启用高级存储特性也更容易。

Stratis 与 ZFS 和 Btrfs 有哪些不同?

作为新项目,Stratis 可以从已有项目中吸取经验,我们将在第二部分深入介绍 Stratis 采用了 ZFS、Brtfs 和 LVM 的哪些设计。总结一下,Stratis 与其不同之处来自于对功能特性支持的观察,来自于个人使用及计算机自动化运行方式的改变,以及来自于底层硬件的改变。

首先,Stratis 强调易用性和安全性。对个人用户而言,这很重要,毕竟他们与 Stratis 交互的时间间隔可能很长。如果交互不那么友好,尤其是有丢数据的可能性,大部分人宁愿放弃使用新特性,继续使用功能比较基础的文件系统。

第二,当前 API 和 DevOps 式 Devops-style 自动化的重要性远高于早些年。Stratis 提供了支持自动化的一流 API,这样人们可以直接通过自动化工具使用 Stratis。

第三,SSD 的容量和市场份额都已经显著提升。早期的文件系统中很多代码用于优化机械介质访问速度慢的问题,但对于基于闪存的介质,这些优化变得不那么重要。即使当存储池过大而不适合使用 SSD 的情况,仍可以考虑使用 SSD 充当 缓存层 caching tier ,可以提供不错的性能提升。考虑到 SSD 的优良性能,Stratis 主要聚焦存储池设计方面的 灵活性 flexibility 可靠性 reliability

最后,与 ZFS 和 Btrfs 相比,Stratis 具有明显不一样的 实现模型 implementation model (我会在第二部分进一步分析)。这意味着对 Stratis 而言,虽然一些功能较难实现,但一些功能较容易实现。这也加快了 Stratis 的开发进度。

了解更多

如果希望更多了解 Stratis,可以查看本系列的第二部分。你还可以在 Stratis 官网 找到详细的设计文档

如何参与

如果希望参与开发、测试 Stratis 或给出反馈,请订阅我们的邮件列表

GitHub 上的开发项目包括 守护进程 (使用 Rust 开发)和 命令行工具 (使用 Python 开发)两部分。

可以在 Freenode IRC 网络的 #stratis-storage 频道加入我们。

Andy Grover 将在今年的 LinuxFest Northwest 会议上演讲。查看会议安排注册参会


via: https://opensource.com/article/18/4/stratis-easy-use-local-storage-management-linux

作者:Andy Grover 选题:lujun9972 译者:pinewall 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Ohcount 是一个简单的命令行工具,可用于分析源代码并打印代码的总行数。它不仅仅是代码行计数器,还可以在含有大量代码的目录中检测流行的开源许可证,例如 GPL。此外,Ohcount 还可以检测针对特定编程 API(例如 KDE 或 Win32)的代码。在编写本指南时,Ohcount 目前支持 70 多种流行的编程语言。它用 C 语言编写,最初由 Ohloh 开发,用于在 www.openhub.net 中生成报告。

在这篇简短的教程中,我们将介绍如何安装和使用 Ohcount 来分析 Debian、Ubuntu 及其变体(如 Linux Mint)中的源代码文件。

Ohcount – 代码行计数器

安装

Ohcount 存在于 Debian 和 Ubuntu 及其派生版的默认仓库中,因此你可以使用 APT 软件包管理器来安装它,如下所示。

$ sudo apt-get install ohcount

用法

Ohcount 的使用非常简单。

你所要做的就是进入你想要分析代码的目录并执行程序。

举例来说,我将分析 coursera-dl 程序的源代码。

$ cd coursera-dl-master/
$ ohcount

以下是 Coursera-dl 的行数摘要:

如你所见,Coursera-dl 的源代码总共包含 141 个文件。第一列说明源码含有的编程语言的名称。第二列显示每种编程语言的文件数量。第三列显示每种编程语言的总行数。第四行和第五行显示代码中由多少行注释及其百分比。第六列显示空行的数量。最后一列和第七列显示每种语言的全部代码行数以及 coursera-dl 的总行数。

或者,直接使用下面的完整路径。

$ ohcount coursera-dl-master/

路径可以是任何数量的单个文件或目录。目录将被递归探测。如果没有给出路径,则使用当前目录。

如果你不想每次都输入完整目录路径,只需 cd 进入它,然后使用 ohcount 来分析该目录中的代码。

要计算每个文件的代码行数,请使用 -i 标志。

$ ohcount -i

示例输出:

当您使用 -a 标志时,ohcount 还可以显示带标注的源码。

$ ohcount -a

如你所见,显示了目录中所有源代码的内容。每行都以制表符分隔的语言名称和语义分类(代码、注释或空白)为前缀。

有时候,你只是想知道源码中使用的许可证。为此,请使用 -l 标志。

$ ohcount -l
lgpl3, coursera_dl.py
gpl coursera_dl.py

另一个可用选项是 -re,用于将原始实体信息打印到屏幕(主要用于调试)。

$ ohcount -re

要递归地查找给定路径内的所有源码文件,请使用 -d 标志。

$ ohcount -d

上述命令将显示当前工作目录中的所有源码文件,每个文件名将以制表符分隔的语言名称为前缀。

要了解更多详细信息和支持的选项,请运行:

$ ohcount --help

对于想要分析自己或其他开发人员开发的代码,并检查代码的行数,用于编写这些代码的语言以及代码的许可证详细信息等,ohcount 非常有用。

就是这些了。希望对你有用。会有更好的东西。敬请关注!

干杯!


via: https://www.ostechnix.com/ohcount-the-source-code-line-counter-and-analyzer/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

看看我们现在在读什么?

最近我在作者社区征集分享大家正在读的书。大家生活阅历和工作岗位各不相同,共同点是每天都与 Linux 和开源打交道。

享受这份不可思议的书单吧,其中大部分是免费的,可以下载。

在书单中,你可能发现一直想读的书、完全陌生的书以及像老朋友一样的已经读过的书。

我们期待你给出对书单的看法,可以在分享在下方的评论区,也可以通过 #Linuxbooks 和 #opensourcebooks 主题词分享在 Twitter 上。

加入你书单的 17 本书

文末,还附赠了一篇科幻小说作品。

FreeDOS 的 23 年岁月,作者 Jim Hall

从去年起,FreeDOS 项目已经 23 岁了。虽然在 23 年中并没有什么特殊事件,但该项目决定庆祝这个里程碑,形式为分享不同人群使用 FreeDOS 或对 FreeDOS 做出贡献的故事。这本以 CC BY 协议开源的书籍收录了一系列短文,描绘了 FreeDOS 从 1994 开始的历程,以及人们现在如何使用 FreeDOS。(Jim Hall 推荐并评论)

JavaScript 编程精解,作者 Marijn Haverbeke

这本书基于无处不在的编程语言 Javascript,教你编写制作精美的程序。你可以学习语言的基本知识和高级特性,学习如何编写可在浏览器或 Node.js 环境中运行的程序。本书包含 5 个有趣的项目,例如制作游戏平台,甚至编写你自己的编程语言,在这过程中你会更加深入理解真实的编程。(Rahul Thakoor 推荐并评论)

使用开源打造未来,作者 VM (Vicky) Brasseur

如果你希望在开源领域做出贡献但无从下手,这本书会教会你。内容包括如何确定要加入的项目,以及如何做出你的首次贡献。(Ben Cotton 推荐并评论)

Git 团队协作,作者 Emma Jane Hogbin Westby

Git 是一款版本管理系统,被个人和团队广泛使用;但其强大的功能也意味着复杂性。这本书指导你如何在团队环境中有效地使用 Git。想了解更多信息,请参考我们的深入点评。(Ben Cotton 推荐并评论)

谈判力,作者 Fisher, Ury 及 Patton

哈佛谈判项目 The Harvard Negotiation Project 成立于 20 世纪七十年代,是一个经济学家、心理学家、社会学家和政治学者共同参与的学术项目,目标是建立一个让谈判各方都受益更多的谈判框架。他们的框架和技巧已经在各类场景发挥作用,其中包括 1978 年埃及与以色列之间的签订的 戴维营协议 Camp David Accords

原则式谈判 Principled Negotiation 包括理解谈判参与者的真实需求,以及基于该信息达成各方都可接受的条款。同样的技巧可以在处理人与人之间的纠纷、关于车辆与房屋的谈判以及与保险公司的商讨时发挥作用。

这与开源软件开发有什么联系呢?在某种意义上,开源领域中的一切都是谈判。提交漏洞报告就是指出某些代码工作不正常,让某些人放下手头工作并优先处理该漏洞。邮件列表中对完成某些工作的正确方式的激烈讨论或对功能请求的评论,都是一种关于项目范畴和目标的谈判,通常是在信息不充足情况下进行的。

将上述对话视为一种探索,试图理解为何其它人提出来某些需求,让其明白你为何持有另外的观点,可以让你在开源项目中显著地改善人际关系和提高工作效率。(Dave Neary 推荐并评论)

只是为了好玩:Linux 之父 Linus Torvalds 自传,作者 Linus Torvalds 等

Linux 是一款令人惊奇的、强力的操作系统,引发了关于透明和开放的运动。驱动 Linux 的开源思潮对传统商业和资本增值模型造成冲击。在本书中,你会了解到 Linus 本人及 Linux 操作系统的过人之处。洞悉那些改变 Linus 命运的经历,这些经历让他从一个喜欢折腾他祖父钟表的怪人,转变成编写全球主流操作系统 Linux 的大师。(Don Watkins 推荐并评论)

1 个月速成 Linux,作者 Steven Ovadia

这本书用于教会非技术领域的用户如何使用桌面版 Linux,读者每天花费一小时即可。这本书覆盖面比较很广,包括选择桌面环境、安装软件以及如何使用 Git。阅读完这本书,你可以完全使用 Linux 替换掉其它操作系统。(Steven Ovadia 推荐并评论)

Linux 实战,作者 David Clinton

这本身介绍了不少 Linux 管理工具的干货,适用于想提升技术水平的人群,包括 IT 专家、开发者、DevOps 专家等。本书不是割裂地介绍各种技术,而是按照真实项目组织内容,例如异地备份自动化、Web 服务器安全加密以及搭建可以安全连接公司资源的 VPN 等。更多内容可以参考作者的另一本书。(David Clinton 推荐并评论)

创客丛书: 为创客准备的 Linux,作者 Aaron Newcomb

对于想通过 树莓派 创造和创新的人来说,这本书是必读的。这本书将领你入门,让你玩转你的树莓派,同时帮你理解 Raspbian Linux 操作系统(与传统 Linux )的细微差别。书中文字巧妙又浅显,可以让任何阅读本书的创客解锁树莓派的潜力。文字简洁,编写精良,包含大量极好的阐述和实战案例。(Jason Hibbets 推荐,Don Watkins 评论)

人性管理:一个软件工程经理刺激诙谐的经历 by Michael Lopp

Michael Lopp 是热门博客 Rands 在休息的作者,他的笔名 Rands 更为人熟知。这本书是在博客帖子的基础上修订集结而成,内容为软件开发团队的管理。Rands 的工作哲学为“软件开发中最复杂的部分是人际交往”,这是我对于本书和博客内容最欣赏的一点。本书涵盖一系列主题,包括分析一个团队,理解每个团队成员的个性以及设计如何让每个人都各尽所能。

这些主题适用面很广,作为一个开源社区管理者,我一直和这些事情打交道。如何得知某个成员已经精疲力尽?如何组织一个好的会议?如何在项目和团队扩大时形成项目和团队文化?如何判断流程是适度的?在开发之外,这类问题一直涌现出来;Rands 的不羁、诙谐的看法让人受教的同时给人感到快乐。(Dave Neary 推荐并评论)

开源:来自开源革命的呐喊 (O'Reilly, 1999)

对于开源狂热者而言,这本书是必读的。Linus Torvalds、Eric S. Raymond、Richard Stallman、Michael Tiemann、 Tim O'Reilly 等开源运动中的领军人物分享他们对发展迅猛的开源软件运动的看法。(Jim Hall 推荐,Jen Wike Huger 评论)

创作开源软件:如何运营一个成功的自由软件项目,作者 Karl Fogel

这本书面向人群包括,期望建立或已经正在建立开源社区,或更好的理解成功开源项目社区的开发趋势。Karl Fogel 分析研究了成功开源项目的特点,以及它们如何围绕项目发展成社区。对于如何围绕项目发展社区,这本书为社区管理者(或致力于成为社区管理者的人)提供了建设性的建议。鲜有书籍可以(像本书这样)深入观察开源社区的发展并给出大量成功点子,但你仍需要结合你的项目和社区因地制宜的行动。(Justin Flory 推荐并评论)

机器人编程,作者 Albert W. Schueller

这本书介绍乐高头脑风暴 NXT 编程的基础。并不需要读者编写复杂的程序,而是通过编程让设备可以感知并与真实世界进行交互。通过完成传感器、电机实验,以及编程制作音乐,你可以了解软硬件如何协调工作。(Rahul Thakoor 推荐并评论)

AWK 编程语言,作者 Alfred V. Aho, Brian W. Kernighan 和 Peter J. Weinberger

这本书的作者就是 awk 语言的发明者,本书风格类似于 20 世纪 70 至 90 年代贝尔实验室 Unix 小组出版的类 Unix 工具书籍,使用简明、紧凑的文字介绍了 awk 的原理和目标。书中包含不少示例,从简单的开始,后面会结合描述详尽的问题或前沿案例,示例也变得复杂。本书刚出版时,典型的读者需求如下:处理和转换文本或数据文件,以及便捷地创建查询表、使用正则表达式、根据输入调整结构、对数值执行数学变换并便捷设置输出格式等。

上述需求依然存在,现在这本书也可以给人们提供一个回顾那个只能使用终端交互的年代的机会。在那时,通过“模块化”可以使用多个单一用途的程序编写 shell 脚本,用于管道处理数据,最终计算机给出人们预期的结果。在今天,awk 被视为运维工具,在处理配置文件和日志文件方面效果不错,这本书也介绍了一些这方面的内容。(Jim Hall 推荐,Chris Hermansen 评论)

像计算机科学家一样思考 Python,作者 Allen Downey

这本书是作者系列图书中的一本,介绍 Python 编程语言,系列中还有其它编程语言,包括 Java 和 Perl 等。介绍完基础的编程语法后,本书进入主题环节,着重介绍问题解决者如何构建解决方案。本书概念层次清晰,对编程初学者是很好的入门读物;对于希望在课堂等地方提高编程技能的新手,本书也适用;本书的若干章节配有例子和习题,可供测试已学的技能。(Steve Morris 介绍并评论)

认识开源和自由软件协议 (O'Reilly, 2004)

“这本书填补了开源理念与法律基础上的真实意义之间的空白。如果你对开源和自由软件协议感兴趣,那么本书可以帮忙加深理解。如果你是一名开源/自由软件开发者,这本书显然是必须的。“(Jim Hall 推荐,评论来自 Amazon

Unix 文本处理,作者 Dale Dougherty 及 Tim O'Reilly

本书写于 1987 年,用于介绍 Unix 系统及作家如何使用 Unix 工具帮助其工作。对于希望学习包括 vi 编辑器、awk、shell 脚本在内的 Unix shell 基础及 nroff/troff 排版系统的初学者而言,本书仍然是有用的资源。原版已绝版,但 O'Reilly 将本书制作为电子书,可在其网站上免费获得。(Jim Hall 推荐并评论)

福利:科幻小说

11 号太空站,作者 Emily St. John Mandel

故事时间设定为不远的未来,地球人口随着神秘而致命的流感爆发而锐减,故事发生在 20 年后。主人公 Kirsten Raymonde 是一名年轻女性,坚信“仅仅活着是不够的”,为此她在后世界末日时代带着一个游牧剧团在五大湖区域附近勇敢地旅行。这是个精彩的故事,很值得一读。

这本书让我震惊的是我们与技术之间实际上那么脆弱的关系。Douglas Adams 的 《Mostly Harmless》 书中有一句话很经典:“仅靠双手,他无法制造一个面包机。但他可以制作三明治,就是这样”。在 Kristin Raymonde 的世界中,每个人仅能靠自己的双手。这里没有电,因为电力网络无法运作;没有汽车,因为炼油厂无法运作。

书中有一个有趣的桥段,一个发明家使用自行车组装了一台发电机,试图启动一台笔记本电脑,尝试查看是否还存在互联网。我们看到旧世界留存的、无用的东西堆成的文明博物馆,内容包括护照、移动电话、信用卡和高跟鞋等。

世界上的全部技术都变得无用。(Dave Neary 推荐并评论)


via: https://opensource.com/article/18/5/list-books-Linux-open-source

作者:Jen Wike Huger 选题:lujun9972 译者:pinewall 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出