2019年8月

上一篇文章我们讨论了使用服务器端技术的密码管理工具。这些工具非常有趣而且适合云安装。在本文中,我们将讨论 KeePassXC,这是一个简单的多平台开源软件,它使用本地文件作为数据库。

这种密码管理软件的主要优点是简单。无需服务器端技术专业知识,因此可供任何类型的用户使用。

介绍 KeePassXC

KeePassXC 是一个开源的跨平台密码管理器:它是作为 KeePassX 的一个分支开始开发的,这是个不错的产品,但开发不是非常活跃。它使用 256 位密钥的 AES 算法将密钥保存在加密数据库中,这使得在云端设备(如 pCloud 或 Dropbox)中保存数据库相当安全。

除了密码,KeePassXC 还允许你在加密皮夹中保存各种信息和附件。它还有一个有效的密码生成器,可以帮助用户正确地管理他的凭据。

安装

这个程序在标准的 Fedora 仓库和 Flathub 仓库中都有。不幸的是,在沙箱中运行的程序无法使用浏览器集成,所以我建议通过 dnf 安装程序:

sudo dnf install keepassxc

创建你的皮夹

要创建新数据库,有两个重要步骤:

  • 选择加密设置:默认设置相当安全,增加转换轮次也会增加解密时间。
  • 选择主密钥和额外保护:主密钥必须易于记忆(如果丢失它,你的皮夹就会丢失!)而足够强大,一个至少有 4 个随机单词的密码可能是一个不错的选择。作为额外保护,你可以选择密钥文件(请记住:你必须始终都有它,否则无法打开皮夹)和/或 YubiKey 硬件密钥。

数据库文件将保存到文件系统。如果你想与其他计算机/设备共享,可以将它保存在 U 盘或 pCloud 或 Dropbox 等云存储中。当然,如果你选择云存储,建议使用特别强大的主密码,如果有额外保护则更好。

创建你的第一个条目

创建数据库后,你可以开始创建第一个条目。对于 Web 登录,请在“条目”选项卡中输入用户名、密码和 URL。你可以根据个人策略指定凭据的到期日期,也可以通过按右侧的按钮下载网站的 favicon 并将其关联为条目的图标,这是一个很好的功能。

KeePassXC 还提供了一个很好的密码/口令生成器,你可以选择长度和复杂度,并检查对暴力攻击的抵抗程度:

浏览器集成

KeePassXC 有一个适用于所有主流浏览器的扩展。该扩展允许你填写所有已指定 URL 条目的登录信息。

必须在 KeePassXC(工具菜单 -> 设置)上启用浏览器集成,指定你要使用的浏览器:

安装扩展后,必须与数据库建立连接。要执行此操作,请按扩展按钮,然后按“连接”按钮:如果数据库已打开并解锁,那么扩展程序将创建关联密钥并将其保存在数据库中,该密钥对于浏览器是唯一的,因此我建议对它适当命名:

当你打开 URL 字段中的登录页并且数据库是解锁的,那么这个扩展程序将为你提供与该页面关联的所有凭据:

通过这种方式,你可以通过 KeePassXC 获取互联网凭据,而无需将其保存在浏览器中。

SSH 代理集成

KeePassXC 的另一个有趣功能是与 SSH 集成。如果你使用 ssh 代理,KeePassXC 能够与之交互并添加你上传的 ssh 密钥到条目中。

首先,在常规设置(工具菜单 -> 设置)中,你必须启用 ssh 代理并重启程序:

此时,你需要以附件方式上传你的 ssh 密钥对到条目中。然后在 “SSH 代理” 选项卡中选择附件下拉列表中的私钥,此时会自动填充公钥。不要忘记选择上面的两个复选框,以便在数据库打开/解锁时将密钥添加到代理,并在数据库关闭/锁定时删除:

现在打开和解锁数据库,你可以使用皮夹中保存的密钥登录 ssh。

唯一的限制是可以添加到代理的最大密钥数:ssh 服务器默认不接受超过 5 次登录尝试,出于安全原因,建议不要增加此值。


via: https://fedoramagazine.org/managing-credentials-with-keepassxc/

作者:Marco Sarti 选题:lujun9972 译者:geekpi 校对:wxy

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

Sed 代表 流编辑器 Stream Editor ,常用于 Linux 中基本的文本处理。sed 命令是 Linux 中的重要命令之一,在文件处理方面有着重要作用。可用于删除或移动与给定模式匹配的特定行。

它还可以删除文件中的特定行,它能够从文件中删除表达式,文件可以通过指定分隔符(例如逗号、制表符或空格)进行标识。

本文列出了 15 个使用范例,它们可以帮助你掌握 sed 命令。

如果你能理解并且记住这些命令,在你需要使用 sed 时,这些命令就能派上用场,帮你节约很多时间。

注意:为了方便演示,我在执行 sed 命令时,不使用 -i 选项(因为这个选项会直接修改文件内容),被移除了行的文件内容将打印到 Linux 终端。

但是,如果你想在实际环境中从源文件中删除行,请在 sed 命令中使用 -i 选项。

演示之前,我创建了 sed-demo.txt 文件,并添加了以下内容和相应行号以便更好地理解。

# cat sed-demo.txt

1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

1) 如何删除文件的第一行?

使用以下语法删除文件首行。

N 表示文件中的第 N 行,d 选项在 sed 命令中用于删除一行。

语法:

sed 'Nd' file

使用以下 sed 命令删除 sed-demo.txt 中的第一行。

# sed '1d' sed-demo.txt

2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

2) 如何删除文件的最后一行?

使用以下语法删除文件最后一行。

$ 符号表示文件的最后一行。

使用以下 sed 命令删除 sed-demo.txt 中的最后一行。

# sed '$d' sed-demo.txt

1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu

3) 如何删除指定行?

使用以下 sed 命令删除 sed-demo.txt 中的第 3 行。

# sed '3d' sed-demo.txt

1 Linux Operating System
2 Unix Operating System
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

4) 如何删除指定范围内的行?

使用以下 sed 命令删除 sed-demo.txt 中的第 5 到 7 行。

# sed '5,7d' sed-demo.txt

1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
8 Debian
9 Ubuntu
10 openSUSE

5) 如何删除多行内容?

sed 命令能够删除给定行的集合。

本例中,下面的 sed 命令删除了第 1 行、第 5 行、第 9 行和最后一行。

# sed '1d;5d;9d;$d' sed-demo.txt

2 Unix Operating System
3 RHEL
4 Red Hat
6 Arch Linux
7 CentOS
8 Debian

5a) 如何删除指定范围以外的行?

使用以下 sed 命令删除 sed-demo.txt 中第 3 到 6 行范围以外的所有行。

# sed '3,6!d' sed-demo.txt

3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux

6) 如何删除空行?

使用以下 sed 命令删除 sed-demo.txt 中的空行。

# sed '/^$/d' sed-demo.txt

1 Linux Operating System
2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

7) 如何删除包含某个模式的行?

使用以下 sed 命令删除 sed-demo.txt 中匹配到 System 模式的行。

# sed '/System/d' sed-demo.txt

3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

8) 如何删除包含字符串集合中某个字符串的行?

使用以下 sed 命令删除 sed-demo.txt 中匹配到 SystemLinux 表达式的行。

# sed '/System\|Linux/d' sed-demo.txt

3 RHEL
4 Red Hat
5 Fedora
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

9) 如何删除以指定字符开头的行?

为了测试,我创建了 sed-demo-1.txt 文件,并添加了以下内容。

# cat sed-demo-1.txt

Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
Arch Linux - 1
2 - Manjaro
3 4 5 6

使用以下 sed 命令删除以 R 字符开头的所有行。

# sed '/^R/d' sed-demo-1.txt

Linux Operating System
Unix Operating System
Fedora
debian
ubuntu
Arch Linux - 1
2 - Manjaro
3 4 5 6

使用以下 sed 命令删除 R 或者 F 字符开头的所有行。

# sed '/^[RF]/d' sed-demo-1.txt

Linux Operating System
Unix Operating System
debian
ubuntu
Arch Linux - 1
2 - Manjaro
3 4 5 6

10) 如何删除以指定字符结尾的行?

使用以下 sed 命令删除 m 字符结尾的所有行。

# sed '/m$/d' sed-demo.txt

3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

使用以下 sed 命令删除 x 或者 m 字符结尾的所有行。

# sed '/[xm]$/d' sed-demo.txt

3 RHEL
4 Red Hat
5 Fedora
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

11) 如何删除所有大写字母开头的行?

使用以下 sed 命令删除所有大写字母开头的行。

# sed '/^[A-Z]/d' sed-demo-1.txt

debian
ubuntu
2 - Manjaro
3 4 5 6

12) 如何删除指定范围内匹配模式的行?

使用以下 sed 命令删除第 1 到 6 行中包含 Linux 表达式的行。

# sed '1,6{/Linux/d;}' sed-demo.txt

2 Unix Operating System
3 RHEL
4 Red Hat
5 Fedora
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

13) 如何删除匹配模式的行及其下一行?

使用以下 sed 命令删除包含 System 表达式的行以及它的下一行。

# sed '/System/{N;d;}' sed-demo.txt

3 RHEL
4 Red Hat
5 Fedora
6 Arch Linux
7 CentOS
8 Debian
9 Ubuntu
10 openSUSE

14) 如何删除包含数字的行?

使用以下 sed 命令删除所有包含数字的行。

# sed '/[0-9]/d' sed-demo-1.txt

Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu

使用以下 sed 命令删除所有以数字开头的行。

# sed '/^[0-9]/d' sed-demo-1.txt

Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
Arch Linux - 1

使用以下 sed 命令删除所有以数字结尾的行。

# sed '/[0-9]$/d' sed-demo-1.txt

Linux Operating System
Unix Operating System
RHEL
Red Hat
Fedora
debian
ubuntu
2 - Manjaro

15) 如何删除包含字母的行?

使用以下 sed 命令删除所有包含字母的行。

# sed '/[A-Za-z]/d' sed-demo-1.txt

3 4 5 6

via: https://www.2daygeek.com/linux-remove-delete-lines-in-file-sed-command/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:hello-wn 校对:wxy

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

一旦一个新技术平台在积极发展和商业利益方面达到了一定程度的受欢迎程度,全球的主要公司和小型的初创企业都急于抓住这块蛋糕。在当时 Linux 就是这样的一个平台。一旦实现了其应用程序的普及,个人、公司和机构就开始对其表现出兴趣,到 2000 年,Linux 基金会就成立了。

Linux 基金会旨在通过赞助他们的开发团队来将 Linux 作为一个平台来标准化和发展。Linux 基金会是一个由软件和 IT 巨头(如微软、甲骨文、三星、思科、 IBM 、英特尔等)支持的非营利组织。这不包括为改进该平台而提供服务的数百名个人开发者。多年来,Linux 基金会已经在旗下开展了许多项目。Hyperledger 项目是迄今为止发展最快的项目。

在将技术推进至可用且有用的方面上,这种联合主导的开发具有很多优势。为大型项目提供开发标准、库和所有后端协议既昂贵又耗费资源,而且不会从中产生丝毫收入。因此,对于公司来说,通过支持这些组织来汇集他们的资源来开发常见的那些 “烦人” 部分是有很意义的,以及随后完成这些标准部分的工作以简单地即插即用和定制他们的产品。除了这种模型的经济性之外,这种合作努力还产生了标准,使其容易使用和集成到优秀的产品和服务中。

上述联盟模式,在曾经或当下的创新包括 WiFi(Wi-Fi 联盟)、移动电话等标准。

Hyperledger 项目(HLP)简介

Hyperledger 项目(HLP)于 2015 年 12 月由 Linux 基金会启动,目前是其孵化的增长最快的项目之一。它是一个 伞式组织 umbrella organization ,用于合作开发和推进基于区块链的分布式账本技术 (DLT) 的工具和标准。支持该项目的主要行业参与者包括 IBM、英特尔 和 SAP Ariba 。HLP 旨在为个人和公司创建框架,以便根据需要创建共享和封闭的区块链,以满足他们自己的需求。其设计原则是开发一个专注于隐私和未来可审计性的全球可部署、可扩展、强大的区块链平台。 1 同样要注意的是大多数提出的区块链及其框架。

开发目标和构造:即插即用

虽然面向企业的平台有以太坊联盟之类的产品,但根据定义,HLP 是面向企业的,并得到行业巨头的支持,他们在 HLP 旗下的许多模块中做出贡献并进一步发展。HLP 还孵化开发的周边项目,并这些创意项目推向公众。HLP 的成员贡献了他们自己的力量,例如 IBM 为如何协作开发贡献了他们的 Fabric 平台。该代码库由 IBM 在其项目组内部研发,并开源出来供所有成员使用。

这些过程使得 HLP 中的模块具有高度灵活的插件框架,这将支持企业环境中的快速开发和部署。此外,默认情况下,其他对比的平台是开放的 免许可链 permission-less blockchain 或是 公有链 public blockchain ,甚至可以将它们应用到特定应用当中。HLP 模块本身支持该功能。

有关公有链和私有链的差异和用例更多地涵盖在这篇比较文章当中。

根据该项目执行董事 Brian Behlendorf 的说法,Hyperledger 项目的使命有四个。

分别是:

  1. 创建企业级 DLT 框架和标准,任何人都可以移植以满足其特定的行业或个人需求。
  2. 创建一个强大的开源社区来帮助生态系统发展。
  3. 促进所述的生态系统的行业成员(如成员公司)的参与。
  4. 为 HLP 社区提供中立且无偏见的基础设施,以收集和分享相关的更新和发展。

可以在这里访问原始文档

HLP 的架构

HLP 由 12 个项目组成,这些项目被归类为独立的模块,每个项目通常都是结构化的,可以独立开发其模块的。在孵化之前,首先对它们的能力和活力进行研究。该组织的任何成员都可以提出附加建议。在项目孵化后,就会进行积极开发,然后才会推出。这些模块之间的互操作性具有很高的优先级,因此这些组之间的定期通信由社区维护。目前,这些项目中有 4 个被归类为活跃项目。被标为活跃意味着它们已经准备好使用,但还没有准备好发布主要版本。这 4 个模块可以说是推动区块链革命的最重要或相当基本的模块。稍后,我们将详细介绍各个模块及其功能。然而,Hyperledger Fabric 平台的简要描述,可以说是其中最受欢迎的。

Hyperledger Fabric

Hyperledger Fabric 是一个完全开源的、基于区块链的许可 (非公开) DLT 平台,设计时考虑了企业的使用。该平台提供了适合企业环境的功能和结构。它是高度模块化的,允许开发人员在不同的共识协议、链上代码协议(智能合约)或身份管理系统等中进行选择。这是一个基于区块链的许可平台,它利用身份管理系统,这意味着参与者将知道彼此在企业环境中的身份。Fabric 允许以各种主流编程语言 (包括 Java、Javascript、Go 等) 开发智能合约(“ 链码 chaincode ”,是 Hyperledger 团队使用的术语)。这使得机构和企业可以利用他们在该领域的现有人才,而无需雇佣或重新培训开发人员来开发他们自己的智能合约。与标准订单验证系统相比,Fabric 还使用 执行顺序验证 execute-order-validate 系统来处理智能合约,以提供更好的可靠性,这些系统由提供智能合约功能的其他平台使用。与标准订单验证系统相比,Fabric还使用执行顺序验证系统来处理智能合约,以提供更好的可靠性,这些系统由提供智能合约功能的其他平台使用。Fabric 的其他功能还有可插拔性能、身份管理系统、数据库管理系统、共识平台等,这些功能使它在竞争中保持领先地位。

结论

诸如 Hyperledger Fabric 平台这样的项目能够在主流用例中更快地采用区块链技术。Hyperledger 社区结构本身支持开放治理原则,并且由于所有项目都是作为开源平台引导的,因此这提高了团队在履行承诺时表现出来的安全性和责任感。

由于此类项目的主要应用涉及与企业合作及进一步开发平台和标准,因此 Hyperledger 项目目前在其他类似项目前面处于有利地位。


  1. E. Androulaki et al., “Hyperledger Fabric: A Distributed Operating System for Permissioned Blockchains,” 2018.

via: https://www.ostechnix.com/blockchain-2-0-an-introduction-to-hyperledger-project-hlp/

作者:ostechnix 选题:lujun9972 译者:zionfuo 校对:wxy

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

Linux 文件系统多年来在不断发展,让我们来看一下文件系统类型。

虽然对于普通用户来说可能并不明显,但在过去十年左右的时间里,Linux 文件系统已经发生了显著的变化,这使它们能够更好对抗损坏和性能问题。

如今大多数 Linux 系统使用名为 ext4 的文件系统。 “ext” 代表“ 扩展 extended ”,“4” 表示这是此文件系统的第 4 代。随着时间的推移添加的功能包括:能够提供越来越大的文件系统(目前大到 1,000,000 TiB)和更大的文件(高达 16 TiB),更抗系统崩溃,更少碎片(将单个文件分散为存在多个位置的块)以提高性能。

ext4 文件系统还带来了对性能、可伸缩性和容量的其他改进。实现了元数据和日志校验和以增强可靠性。时间戳现在可以跟踪纳秒级变化,以便更好地对文件打戳(例如,文件创建和最后更新时间)。并且,在时间戳字段中增加了两个位,2038 年的问题(存储日期/时间的字段将从最大值翻转到零)已被推迟到了 400 多年之后(到 2446)。

文件系统类型

要确定 Linux 系统上文件系统的类型,请使用 df 命令。下面显示的命令中的 -T 选项显示文件系统类型。 -h 显示“易读的”磁盘大小。换句话说,调整报告的单位(如 M 和 G),使人们更好地理解。

$ df -hT | head -10
Filesystem     Type      Size  Used Avail Use% Mounted on
udev           devtmpfs  2.9G     0  2.9G   0% /dev
tmpfs          tmpfs     596M  1.5M  595M   1% /run
/dev/sda1      ext4      110G   50G   55G  48% /
/dev/sdb2      ext4      457G  642M  434G   1% /apps
tmpfs          tmpfs     3.0G     0  3.0G   0% /dev/shm
tmpfs          tmpfs     5.0M  4.0K  5.0M   1% /run/lock
tmpfs          tmpfs     3.0G     0  3.0G   0% /sys/fs/cgroup
/dev/loop0     squashfs   89M   89M     0 100% /snap/core/7270
/dev/loop2     squashfs  142M  142M     0 100% /snap/hexchat/42

请注意,/(根)和 /apps 的文件系统都是 ext4,而 /dev 是 devtmpfs 文件系统(一个由内核填充的自动化设备节点)。其他的文件系统显示为 tmpfs(驻留在内存和/或交换分区中的临时文件系统)和 squashfs(只读压缩文件系统的文件系统,用于快照包)。

还有 proc 文件系统,用于存储正在运行的进程的信息。

$ df -T /proc
Filesystem     Type 1K-blocks  Used Available Use% Mounted on
proc           proc         0     0         0    - /proc

当你在整个文件系统中游览时,可能会遇到许多其他文件系统类型。例如,当你移动到目录中并想了解它的文件系统时,可以运行以下命令:

$ cd /dev/mqueue; df -T .
Filesystem     Type   1K-blocks  Used Available Use% Mounted on
mqueue         mqueue         0     0         0    - /dev/mqueue
$ cd /sys; df -T .
Filesystem     Type  1K-blocks  Used Available Use% Mounted on
sysfs          sysfs         0     0         0    - /sys
$ cd /sys/kernel/security; df -T .
Filesystem     Type       1K-blocks  Used Available Use% Mounted on
securityfs     securityfs         0     0         0    - /sys/kernel/security

与其他 Linux 命令一样,这里的 . 代表整个文件系统的当前位置。

这些和其他独特的文件系统提供了一些特殊功能。例如,securityfs 提供支持安全模块的文件系统。

Linux 文件系统需要能够抵抗损坏,能够承受系统崩溃并提供快速、可靠的性能。由几代 ext 文件系统和新一代专用文件系统提供的改进使 Linux 系统更易于管理和更可靠。


via: https://www.networkworld.com/article/3432990/a-guided-tour-of-linux-file-system-types.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:geekpi 校对:wxy

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

了解开源如何促进互动小说的成长和发展。

互动小说技术基金会 Interactive Fiction Technology Foundation (IFTF) 是一个非营利组织,致力于保护和改进那些用来生成我们称之为 互动小说 interactive fiction 的数字艺术形式的技术。当 Opensource.com 的一位社区版主提出一篇关于 IFTF、它支持的技术与服务,以及它如何与开源相交织的文章时,我发现这对于我讲了数几十年的开源故事来说是个新颖的视角。互动小说的历史比 自由及开源软件 Free and Open Source Software (FOSS)运动的历史还要长,但同时也与之密切相关。希望你们能喜欢我在这里的分享。

定义和历史

对于我来说,互动小说这个术语涵盖了读者主要通过文本与之交互的任何视频游戏或数字化艺术作品。这个术语起源于 20 世纪 80 年代,当时由语法解析器驱动的文本冒险游戏确立了什么是家用电脑娱乐,在美国主要以 魔域银河系漫游指南) 和 Infocom 公司的其它佳作为代表。在 20 世纪 90 年代,它的主流商业价值被挖掘殆尽,但在线爱好者社区接过了该传统,继续发布这类游戏和游戏创建工具。

在四分之一个世纪之后的今天,互动小说包括了品种繁多并且妙趣橫生的作品,如从充满谜题的文字冒险游戏到衍生改良的超文本类型。定期举办的在线竞赛和节日为品鉴和试玩新作品提供了个好地方—英语互动小说世界每年都会举办一些活动,包括 Spring ThingIFComp。后者是自 1995 年以来现代互动小说的核心活动,这也使它成为在同类型活动中持续举办时间最长的游戏展示活动。IFComp 从 2017 年开始的评选和排名记录 显示了如今基于文本的游戏在形式、风格和主题方面的惊人多样性。

(作者注:以上我特指英语,因为可能出于写作方面的技术原因,互动小说社区倾向于按语言进行区分。例如也有 法语意大利语 的互动小说年度活动,我就听说过至少一届的中文互动小说节。幸运的是,这些边界易于打破。在我管理 IFComp 的四年中,我们很欢迎来自国际社区的所有英语翻译工作。)

“假冒的猴子”游戏截图

在解释器 Lectrote 上启动 Emily Short 的“假冒的猴子”新游戏(二者皆为开源软件)。

此外由于互动小说专注于文本,它为玩家和作者都提供了最方便的平台。几乎所有能阅读数字化文本的人(包括能通过文字转语音软件等辅助技术阅读的用户)都能玩大部分的互动小说作品。同样,互动小说的创作对所有愿意学习和使用其工具和技术的作家开放。

这使我们了解了互动小说与开源的长期关系,以及从它的全盛时期以来,对于艺术形式可用性的积极影响。接下来我将概述当代开源互动小说创建工具,并讨论共享源代码的互动小说作品古老且有点稀奇的传统。

开源互动小说工具的世界

一些开发平台(其中大部分是开源的)可用于创建传统的语法解析器驱动互动小说,其中用户可通过输入命令(如 向北走拾取提灯收养小猫向 Zoe 询问量子机械学)来与游戏世界交互。20 世纪 90 年代初期出现了几个 适于魔改 hacker-friendly 的语法解析器游戏开发工具,其中目前还在使用的有 TADSAlanQuest,它们都是开源的,并且后两者兼容 FOSS 许可证。

其中最出名的是 Inform,1993 年 Graham Nelson 发布了第一个版本,目前由 Nelson 领导的一个团队进行维护。Inform 的源代码是不太寻常的半开源:Inform 6 是前一个主要版本,它通过 Artistic 许可证开放源码。这其中蕴涵着比我们所看到的更直接的相关性,因为它专有的 Inform 7 将 Inform 6 作为其核心,可以让它在将作品编译为机器码之前,将其 杰出的自然语言语法 (LCTT 译注:此链接已遗失)翻译为其前一代的那种更类似 C 的代码。

inform 7 集成式开发环境截图

Inform 7 集成式开发环境,打开了文档以及一个示例项目

Inform 游戏运行在虚拟机上,这是 Infocom 时代的遗留产物。当时的发行者为了让同一个游戏可以运行在 Apple II、Commodore 4、Atari 800 以及其它种类的“家用计算机”上,将虚拟机作为解决方案。这些原本流行的操作系统中只有少数至今仍存在,但 Inform 的虚拟机使得它创建的作品能够通过 Inform 解释器运行在任何的计算机上。这些虚拟机包括相对现代的 Glulx,或者通过对 Infocom 过去的虚拟机进行逆向工程克隆得到的可爱的古董 Z-machine。现在,流行的跨平台解释器包括如 lectroteGargoyle 等桌面程序,以及如 QuixeParchment 等基于浏览器的程序。以上所有均为开源软件。

如其它的流行开源项目一样,如果 Inform 的发展进程随着它的成熟而逐渐变缓,它为我们留下的最重要的财富就是其活跃透明的生态环境。对于 Inform 来说,(这些财富)包括前面提到的解释器、一套语言扩展(通常混合使用 Inform 6 和 Inform 7 写成),当然也包括所有用它们写成并分享于全世界的作品,有的时候也包括那些源代码。(在这篇文章的后半部分我会回到这个话题)

互动小说创建工具发明于 21 世纪,力求在传统的语法解析器之外探索一种新的玩家交互方式,即创建任何现代 Web 浏览器都能加载的超文本驱动作品。其中的领头羊是 Twine,原本由 Klimas 在 2009 年开发,目前是 GNU 许可证开源项目,有许多贡献者正在积极开发。(事实上,Twine 的开源软件血统可追溯到 TiddlyWiki,Klimas 的项目最初是从该项目衍生而来的)

对于互动小说开发来说,Twine 代表着一系列最开放及最可用的方法。由于它天生的 FOSS 属性,它将其输出渲染为一个自包含的网站,不依赖于需要进一步特殊解析的机器码,而是使用开放并且成熟的 HTML、CSS 和 JavaScript 标准。作为一个创建工具,Twine 能够根据创建者的技能等级,展示出与之相匹配的复杂度。拥有很少或没有编程知识的用户能够创建简单但是可玩的互动小说作品,但那些拥有更多编码和设计技能(包括通过开发 Twine 游戏获得的技能提升)的用户能够创建更复杂的项目。这也难怪近几年 Twine 在教育领域的曝光率和流行度有不小的提升。

另一些值得注意的开源互动小说开发项目包括由 Ian Millington 开发的以 MIT 许可证发布的 Undum,以及由 Dan Fabulich 和 Choice of Games 团队开发的 ChoiceScript,两者也专注于将 Web 浏览器作为游戏平台。除了以上专用的开发系统以外,基于 Web 的互动小说也呈现给我们以开源作品的丰富、变幻的生态。比如 Furkle 的 Twine 扩展工具集,以及 Liza Daly 为自己的互动小说游戏创建的名为 Windrift 的 JavaScript 框架。

程序、游戏,以及游戏程序

Twine 受益于 一个致力于提供支持的长期 IFTF 计划,公众可以为其维护和发展提供资助。IFTF 还直接支持两个长期公共服务:IFComp 和 互动小说归档 IF Archive ,这两个服务都依赖并回馈开源软件和技术。

Harmonia 开场截图

由 Liza Daly 开发的“Harmonia”的开场画面,该游戏使用 Windrift 开源互动小说创建框架创建。

自 2014 年以来,用于运行 IFComp 网站的基于 Perl 和 JavaScript 的应用程序一直是 一个共享源代码项目,它反映了 互动小说特有子组件使用的 FOSS 许可证是个大杂烩,其中包括那些可以让以语法解析器驱动的竞争项目在 Web 浏览器中运行的各式各样的代码库。在 1992 年上线并 在 2017 年成为一个 IFTF 项目 互动小说归档 IF Archive ,是一套完全基于古老且稳定的互联网标准的镜像仓库,只使用了 一点开源 Pyhon 脚本 用来处理索引。

最后,也是最有趣的部分,让我们聊聊开源文字游戏

互动小说归档的主体 由游戏组成,当然,是那些历经岁月的游戏。它们反映了数十年来不断发展的游戏设计趋势和互动小说工具发展。

许多互动小说作品都共享其源代码,要快速找到它们的快速很简单 —— 在 IFDB 中搜索标签 “source available”。IFDB 是另一个长期运行的互动小说社区服务,由 TADS 的创立者 Mike Roberts 私人运营。对更加简单的界面感到舒适的用户,也可以浏览互动小说归档的 games/source 目录,该目录按开发平台和编写语言对内容运行分组(也有很多作品,由于太繁杂或太古老而无法分类,只能浮于顶级目录)。

对这些代码共享游戏随机抽取的几个样本,揭示了一个有趣的窘境:与更广阔的开源软件世界不同,互动小说社区缺少一种普遍认同的方式来授权它生成的所有代码。与软件工具(包括我们用来创建互动小说的所有工具)不同的是,从字面意思上讲,交互式小说游戏是一件艺术作品。这意味着,将面向软件的开源许可证用于交互式小说游戏,并不会比将其用于其它像散文或诗歌作品更适合。但同样,互动小说游戏也是一个软件,它展示了创建者希望合法地与世界分享的源代码模式和技术。一个拥有开源意识的互动小说创建者会怎么做呢?

有些游戏通过将其代码放到公共领域来解决这一问题,或者通过明确的许可证,亦或者如 42 年前由 Crowther 和 Woods 开发的“ 冒险之旅 Adventure 一样通过社区发布。一些人试图将其中的不同部分分开,应用他们自己的许可证,允许免费复用游戏公开的业务逻辑,但禁止针对其散文内容的再创作。这是我在开源自己的游戏 莺巢 The Warbler’s Nest 时采取的策略。天知道这是否能在法律上站得住脚,但我当时没有更好的主意。

当然,你会发现一些作品对所有部分使用单一的许可证,而不介意反对者。一个突出的例子就是 Emily Short 的史诗作品“ 假冒的猴子 Counterfeit Monkey ,其全部采用 Creative Commons 4.0 许可证发布。CC 对其应用于代码感到不满,但你可以认为 Inform 7 源码这种不寻常的散文风格特性 至少比传统的软件项目更适合 CC 许可证。

接下来要做什么呢,冒险者?

如果你希望开始探索互动小说的世界,这里有几个链接可供你参考:

  • 如上所述,IFDB互动小说归档都提供了可浏览的界面,用于浏览超过 40 年价值的互动小说作品。其中大部分可以在 Web 浏览器中玩,但有些需要额外的解释器程序。IFDB 能帮助你找到并安装它们。IFComp 的年度结果页面展现了另一个视图,帮助你了解最佳的免费和归档可用作品。
  • 互动小说技术基金会是一个非营利组织,主要帮助并支持 Twine、IFComp 和互动小说归档的发展,以及提升互动小说的无障碍功能、探索互动小说在教育领域中的应用等等。加入其邮件列表,可以接收 IFTF 的每月资讯,浏览其博客,亦或浏览一些主题商品
  • 在今年的早些时候,John Paul Wohlscheid 写了这篇关于开源互动小说工具的文章。它涵盖了一些这里没有提及的平台,所以如果你还想了解更多,请看一看这篇文章。

via: https://opensource.com/article/18/7/interactive-fiction-tools

作者:Jason Mclntosh 选题:lujun9972 译者:cycoe 校对:wxy

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

自从第一个 Linux 内核发布已经过去 28 年了。自 1991 年以来发布了几十个 Linux 内核版本,你喜欢的是哪个?投个票吧!

让我们回到 1991 年 8 月,那个创造历史的时间。科技界经历过许多关键时刻,这些时刻仍在影响着我们。在那个 8 月,Tim Berners-Lee 宣布了一个名为 万维网 World Wide Web 的有趣项目,并推出了第一个网站;超级任天堂在美国发布,为所有年龄段的孩子们开启了新的游戏篇章;在赫尔辛基大学,一位名叫 Linus Torvalds 的学生向同好们询问(1991 年 8 月 25 日)了他作为业余爱好开发的新免费操作系统的反馈。那时 Linux 内核诞生了。

如今,我们可以浏览超过 15 亿个网站,在我们的电视机上玩另外五种任天堂游戏机,并维护着六个长期 Linux 内核。以下是我们的一些作者对他们最喜欢的 Linux 内核版本所说的话。

“引入模块的那个版本(1.2 吧?)。这是 Linux 迈向成功的未来的重要一步。” - Milan Zamazal

“2.6.9,因为它是我 2006 年加入 Red Hat 时的版本(在 RHEL4 中)。但我也更钟爱 2.6.18(RHEL5)一点,因为它在大规模部署的、我们最大客户(Telco, FSI)的关键任务工作负载中使用。它还带来了我们最大的技术变革之一:虚拟化(Xen 然后是 KVM)。” - Herve Lemaitre

“4.10。(虽然我不知道如何衡量这一点)。” - Ivan Bazulic

“Fedora 30 附带的新内核修复了我的 Thinkpad Yoga 笔记本电脑的挂起问题;挂起功能现在可以完美运行。我是一个笨人,只是忍受这个问题而从未试着提交错误报告,所以我特别感谢这项工作,我知道一定会解决这个问题。” - MáirínDuffy

“2.6.16 版本将永远在我的心中占有特殊的位置。这是我负责将其转换为在 hertz neverlost gps 系统上运行的第一个内核。我负责这项为那个设备构建内核和根文件系统的工作,对我来说这真的是一个奇迹时刻。我们在初次发布后多次更新了内核,但我想我必须还是推选那个最初版本,不过,我对于它的热爱没有任何技术原因,这纯属感性选择 =)” - Michael McCune

“我最喜欢的 Linux 内核版本是 2.4.0 系列,它集成了对 USB、LVM 和 ext3 的支持。ext3 是第一个具有日志支持的主流 Linux 文件系统,其从 2.4.15 内核可用。我使用的第一个内核版本是 2.2.13。” - Sean Nelson

“也许是 2.2.14,因为它是在我安装的第一个 Linux 上运行的版本(Mandrake Linux 7.0,在 2000 IIRC)。它也是我第一个需要重新编译以让我的视频卡或我的调制解调器(记不清了)工作的版本。” - GermánPulido

“我认为最新的一个!但我有段时间使用实时内核扩展来进行音频制作。” - Mario Torre

在 Linux 内核超过 52 个的版本当中,你最喜欢哪一个?参加我们的调查并在评论中告诉我们原因。


via: https://opensource.com/article/19/8/linux-kernel-favorite-release

作者:Lauren Pritchett 选题:lujun9972 译者:wxy 校对:wxy

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