2022年8月

使用位字段和掩码是不用数据结构组合数据的常用方法。

 title=

假设你在用 C 语言写一个国际象棋游戏。追踪棋盘上棋子的一种方法是定义一个结构,该结构定义了棋盘上每个可能的棋子及其颜色,因此每个格子都包含该结构中的一个元素。例如,你可以将结构定义成下面这样:

struct chess_pc {
   int piece;
   int is_black;
}

有了这个数据结构,你的程序就会知道每个格子里是什么棋子及棋子的颜色。你可以快速识别出棋子是兵、车、马、象、后还是王,以及棋子是黑还是白。但是,有一种更直接的方法来跟踪这些信息,同时只用更少的数据和内存。与为棋盘上的每个方格存储两个 int 值的结构不同,我们可以存储单个 int 值,并使用二进制位字段和掩码来标识每个方格中的棋子和颜色。

比特和二进制

当使用位字段表示数据时,我们最好像计算机一样思考。让我们从列出可能的棋子开始,并为每个棋子分配一个数字。让我们进入下一个步骤,用二进制表示这个数字,也就是按照计算机追踪它的方式。记住,二进制数是由比特组成的,比特要么是 0,要么是 1。

  • 00000000: 空(0)
  • 00000001: 兵(1)
  • 00000010: 车(2)
  • 00000011: 马(3)
  • 00000100: 象(4)
  • 00000101: 后(5)
  • 00000110: 王(6)

要列出一个棋盘上的所有棋子,我们只需要三个比特从右到左依次代表值 1、2 和 4。例如,数字 6 是二进制的 110。6 的二进制表示中的其他所有位都是 0。

一个聪明一点的方法:我们可以使用那些额外的总是为零的比特来跟踪一个棋子是黑还是白。我们可以使用数字 8(二进制 00001000)来表示棋子是否为黑色。如果这一位是 1,则代表该棋子是黑色;如果是 0,则代表该棋子是白色。这被称为位字段,稍后我们可以使用二进制掩码将其取出。

用位字段存储数据

要编写一个使用位字段和掩码的国际象棋程序,我们可以从以下定义开始:

/* 棋子 */

#define EMPTY 0   // 空
#define PAWN 1    // 兵
#define ROOK 2    // 车
#define KNIGHT 3  // 马
#define BISHOP 4  // 象
#define QUEEN 5   // 后
#define KING 6    // 王

/* 棋色 */

#define BLACK 8   // 黑
#define WHITE 0   // 白

/* 掩码 */

#define PIECE 7

当你为一个棋格赋值时,比如初始化棋盘,你可以赋一个 int 类型的值来跟踪棋子及其颜色。例如,要在棋盘的 0,0 位置存储棋子黑车,你可以使用下面的代码:

  int board[8][8];
..
  board[0][0] = BLACK | ROOK;

| 是二进制“或”(OR)操作符,这意味着计算机将合并两个数字的比特。对于每个比特的位置,如果任意一个数字的比特为 1,该位置比特的结果也是 1。BLACK 的值(8,即二进制下的 00001000)和 ROOK 的值(2,即二进制下的 00000010)的二进制或结果是二进制下的 00001010,即 10:

    00001000 = 8
 OR 00000010 = 2
    ________
    00001010 = 10

类似地,要在棋盘的 6,0 位置存储一个白色兵,你可以这样做:

  board[6][0] = WHITE | PAWN;

这样存储的值就是 WHITE(0)和 PAWN(1)的二进制或的结果,也即是 1。

    00000000 = 0
 OR 00000001 = 1
    ________
    00000001 = 1

用掩码获取数据

在下棋过程中,程序需要知道棋格中的棋子和它的颜色。我们可以使用二进制掩码来分离这部分。

举个例子,程序可能需要知道棋局中棋盘上特定棋格的内容,例如位于 board[5][3] 的数组元素。这个是什么棋子,是黑的还是白的?为了识别棋子,使用二进制“与”(AND)操作符将元素的值与掩码 PIECE 结合起来:

  int board[8][8];
  int piece;
..
  piece = board[5][3] & PIECE;

二进制“与”(AND)操作符(&)将两个二进制值结合,这样对于任意位,如果两个数字中的那个位都是 1,那么结果也是 1。例如,如果 board[5][3] 的值是 11(二进制下的 00001011),那么 11 和 掩码 PIECE(7,二进制下的 00000111)二进制与的结果为二进制下的 00000011,也即 3。这代表马,马的值是 3。

    00001011 = 11
AND 00000111 = 7
    ________
    00000011 = 3

解析棋子的颜色是一个简单的事情,只需要将棋子的值与 BLACK 位字段进行二进制与操作。比如,你可以写一个名为 is_black 的函数来确定棋子是黑还是白:

int
is_black(int piece)
{
  return (piece & BLACK);
}

之所以可以这样,是因为 BLACK 的值为 8(二进制下的 00001000)。在 C 语言中,任何非零值都被视为 True,零总是 False。所以如果 5,3 处的棋子是黑色的,则 is_black(board[5][3]) 返回 True 值(8);如果是白色的,则返回 False 值(0)。

位字段

使用位字段和掩码是不使用结构组合数据的常用方法。它们值得被程序员收藏到“工具包”中。虽然数据结构对于需要跟踪相关数据的有序编程是一种有价值的工具,但是使用单独的元素来跟踪单个的开或闭值(例如棋子的颜色)的效率较低。在这些情况下,可以考虑使用位字段和掩码来更高效地组合数据。


via: https://opensource.com/article/21/8/binary-bit-fields-masks

作者:Jim Hall 选题:lujun9972 译者:FYJNEVERFOLLOWS 校对:wxy

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

这篇文章详细总结了以太网分离器,以及它们的速度,还有各种常见问题等信息,来帮助你选择最合适的硬件。

交换机 Switch 集线器 Hub ,还有 以太网分离器 Ethernet Splitter 是用来帮助扩展网络的网络设备。这其中,最基础的设备就是小巧的以太网分离器了。它们是一种小型设备,可以将一个以太网信号分成两个。它们简单易用,并且还便宜。这可以算是最简单的网络设备之一了,因为它们不需要提供电源,也没有特定的按键或者 LED 灯来提示状态。只是在一个小设备上有三个以太网端口,其中两个在一侧,另一个在另一侧。有些品种是在一侧有带着一小段 RJ45 接口的网线,另一侧是两个以太网端口。

尽管在网络世界中,分离器已经存在了相当长一段时间了,很多人还是不知道如何有效使用它们。与普遍的看法相反的是,以太网分离器应该总是成对购买。直接把分离器的一端和路由器连接,再把两个设备与分离器的两个端口连接,这样是不行的。想让分离器在网络中正常工作,是有一个正确的设置技巧的。

如何使用以太网分离器进行一个基本的设置

要让不同房间的两个设备连接到主信号源,以太网分离器是非常方便的。大多数情况下,它们可以节约网线、墙上的网络插座,并提供了可靠的连接。就像之前说的,以太网分离器是成对出售的。一个分离器将来自设备(通常是路由器)上的信号合并,然后另一个把信号分成两个信道,这样就可以让两个设备通信了。

路由器在房间 A,两个 PC 在房间 B,但是每个房间的墙上只有一个以太网插座。这种情况下,就需要一个分离器,两条网线连到路由器上,网线的另外一端连到分离器上,然后分离器的另一端连到房间 A 墙上的接口。这样路由器的两个信号就合并到一起了。接下来,另一个分离器只有一个端口的那一端接到房间 B 墙上的接口上。从房间 A 合并的信号现在就会分成两个,这样在房间 B 里面,你就可以有两个以太网端口了。

分离器的优势是它可以大量减少墙上的接口,也会大量减少你这种情况下所需的网线。它会帮你避免“网线地狱”,因为这样会将所需要的端口/网线降低两倍。

sample diagram using ethernet splitter

以太网分离器会降低网速吗?

网络连接会变慢吗?这可能是你想到的常见问题之一。好吧,答案取决于你的网络类型。理想情况下,分离器是 BASE-T 标准,也就是 快速以太网 Fast Ethernet 。它们可以支持高达 Mbps 级的速度。

如果分离器在一个 100Mbps 的网络中使用,答案是否定的,它是不会降低网速的。然而,如果你的路由器可以提供 1Gbps 传输速率,然后你在中间用了一个分离器,那么带宽将被限制在 100Mbps。这种情况下,分离器确实会限制速度,连接会变慢。

以太网分离器的优势和劣势

以太网分离器在一些情况下很有用,但是它们也有一些缺点。首先,每个以太网端口只能提供最高 100Mbps 的速度。因为这个限制,网络中能够提供高于 100Mbps 的资源就不能被合理优化了。另外,因为你能连接的设备数量被限制在两个,如果你有两个以上的设备,以太网分离器并不是最佳选择。

此外,如果路由器只剩下一个以太网端口,使用分离器是不现实的;这时候就只能做一些牺牲了。然后,尽管它们可以减少把两个网络合并所需要的网线,这种方式需要两个分离器才能工作。

另一方面,以太网分离器也有一些优势。它们比起传统的网络设备要便宜,也不需要复杂的设置。不像其他网络设备,它们也不需要软件和其他配置。在设备不多的家庭网络中,比如说一个房间最多两个设备,以太网分离器是一个很好的选择。如果你只需要 100Mbps 的网络,只有两个设备要连接,以太网分离器是最好的选项。

以太网分离器出现已经很长时间了,但是由于非常简单,也没有太多可以改进的空间。它们仍然是基于过时的 快速以太网 Fast Ethernet 标准,这也许和今天高速网络的需求有点格格不入。尽管有它们的优势,大多数情况下,它们还真不是一个现实的解决方案。随着现在技术的进步,以太网分离器的前景依然光明。也许某个天才可以让它用在 千兆以太网 Gigabit Ethernet 标准上。

现在你已经对以太网分离器有一些了解了,下面是一些常见问题(FAQ)。

常见问题

可以把一条以太网线分到两个设备上吗?

如果你想把一条以太网线分到两个设备上,这是很正常的想法。然而,这就需要买一个以太网线共享分离套件。分离器套件可以让多个设备同时使用同一条网线。如果你想把 PC 和笔记本,或者 PC 和游戏主机,同时连到同一个网线上,这是个不错的选择。

说到连接速度,以太网线会超过其他连接方式。当有些东西需要快速连接,比如说游戏,以太网线通常都是最好的选择。

需要指出的是,你不能用一个网线连接两个设备,因为它们只是为一个设备而设计的,这也就是为什么你需要一个以太网分离器。它会连到一个已有的网线上,然后为两个设备提供连接。

我怎么把两个设备连到一个以太网端口?

两个设备可以连到一个以太网端口。然而,就像之前说的,你需要使用网线共享套件。这是因为每个以太网连接是为一个单个设备设计的。

有了以太网线共享套件,你就可以给一个以太网端口连上多个设备了,这对于家庭网络来说是非常方便的。如果你有不多的几个以太网连接可用,然后需要很多的 LAN 连接,这肯定有用。

还需要说的一点是,如果你有多余的以太网端口可用,如果是这种情况,最好的选择是给每个设备分配一个端口。当这种情况不行的时候,网线共享套件或者分离器是一个完美的备选方案。

以太网分离器和交换机有什么区别?

以太网分离器和交换机工作起来差不多,但是从根本上是不同的。以太网分离器可以在同一根以太网线上运行两个独立的连接。然而,这最多就是两个连接。如果你只想要一个另外的设备连到这个以太网上,这是个不错的选择。但是,再有其他设备就不行了。

如果你想往一个以太网连接上连很多个设备,就需要买一个以太网交换机。除了可以允许多于两个设备连接外,交换机和以太网分离器相似。如果有很多要连接的设备,但是只有几个以太网端口,交换机是非常方便的,比如说你正在连接很多设备到 LAN。

虽然它们支持堆叠,但需要记住的是,它们也需要供电。交换机和分离器的另一个不同是,分离器不要供电,可以直接连到以太网端口。

我需要以太网交换机还是分离器?

你要连接的设备的数量决定了是需要一个交换机还是分离器。如果只需要连两个设备,可以用以太网分离器,也不用给他供电。

相反的,如果需要连几个设备,以太网交换机是一个理想的解决方案。它可以连接几个设备到同一个以太网端口,但是它需要供电。

我希望这篇指南能帮你了解以太网分离器以及如果使用它们。从网上可以以很低的价格买到。然而,如果需要超过 100Mbps 的速度,也许你需要给你的网络配置一下线路。

这篇文章是我们硬件指南的一部分。

Featured Photo by Jainath Ponnala on Unsplash


via: https://www.debugpoint.com/ethernet-splitter-speed/

作者:Arindam 选题:lkxed 译者:MCGA 校对:校对者ID

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

黑客干掉了武装机器狗

有公司生产了一种可以配装武器的机器狗,这让人十分担心。近日,有黑客发布视频显示,使用一种名为 Flipper Zero 的黑客设备,它可以发送和接收 RFID、蓝牙、NFC 和其他频段的无线信号,即可远程关闭这种机器狗。按下 Flipper 上的一个按钮,机器狗就会抽搐并倒在地上。黑客发现,机器狗在出厂时有一个连接到配电板上的远程切断开关,这个切断开关会监听 433MHz 的特定信号。如果它听到这个信号,就会关闭机器人。黑客在 GitHub 公开了相关工作。

消息来源:VICE
老王点评:无论如何,AI 机器人被用于武装都非常可怕。

一家不追踪你的浏览和位置的手机运营商

除了永远脱离网络之外,普通人几乎没有选择可以有意义地抵制在线追踪。研究人员提出了一种电话运营商如何停止自动收集用户位置的技术解决方案后,决定自己成立一家名为 Invisv 的公司来提供这种电信服务。它提供的移动数据旨在将用户与特定的标识符分离,因此该公司无法访问或跟踪客户的元数据、位置信息或移动浏览。该服务的本质是随机变换你的设备 IMSI。值得注意的是,Invisv 只提供移动数据;没有语音通话服务。

消息来源:Wired
老王点评:这是某种从电信运营商层面开始的代理?事实上,我想大部分人已经放弃了被追踪的反抗了吧。

国内算力最大的通用 GPU 芯片集成了 770 亿晶体管

国内科技企业壁仞科技正式发布 BR100 系列通用计算 GPU,号称算力国内第一,多项指标媲美甚至超越国际旗舰产品。它采用了台积电 7nm 工艺制造、集成了多达 770 亿个晶体管,规模上堪比人类大脑神经细胞,已经非常接近 800 亿个晶体管的英伟达 GH100 计算核心。

消息来源:壁仞科技
老王点评:看到国内能在芯片方面取得进步,还是很高兴的。

让我们了解一下这个具有令人愉悦的用户界面、跨平台可用的开源密码管理器。

有大量适用于个人和团队的免费的和收费的密码管理器。

然而,当谈到开源方案时,它通常仅限于几个好的方案,如 SeahorseKeePassXCBitwarden

如果你已阅读过我们的 Linux 最佳密码管理器列表,你可能已经知道其中的一些。

我偶然发现了另一个有趣的开源密码管理器 Padloc,它可以因其用户体验而进入该列表。

Padloc:安全的跨平台密码管理器应用

padloc screenshot

虽然 Padloc 并不是特别流行,但它可不仅仅是又一个开源密码管理器。

你可以通过该应用和端到端加密来保护密码,从而获得令人耳目一新的用户体验。它旨在提供一个干净简单的界面来使用。

padloc light mode

提供免费版本,但提供付费订阅以解锁大多数功能。

它支持所有主要平台,包括 Linux、Windows、macOS、Android 和 iOS。

你还可以获得 Mozilla Firefox 和谷歌 Chrome 的浏览器扩展以及所有可用的应用。因此,你也可以随时选择在浏览器上访问/使用它。

有趣的是,直到最近,该项目近两年都没有看到任何重大更新。但是,这个开源项目一直在修修补补。

Padloc 的特点

padloc active sessions

Padloc 提供一系列免费和收费功能。根据你的要求,你可以选择升级到付费订阅。

一些功能包括:

  • 保管库项目无限制
  • 设备数量无限制
  • 通过电子邮件进行双因素身份验证
  • 添加标签
  • 生成独特的密码
  • 支持使用 Favicon 来识别保管库项目
  • 深/浅模式主题
  • 主动会话管理
  • 导入/导出功能(加密容器/CSV)
  • 团队支持(付费)
  • 多因素身份验证(付费)
  • 记笔记(付费)
  • 文件附件(付费)
  • 安全报告(付费)

从技术上讲,你可以获得所有基本功能。但是,要充分利用它,你需要订阅起价为每月 3.49 美元或每年 34.9 美元的高级订阅。

在 Linux 上安装 Padloc

padloc app screenshot 1

Padloc 为你提供了多种适用于 Linux 的选项。你可以下载 AppImage、.deb、Snap 或 Flatpak 包。

此外,你可以下载非 electron 的桌面客户端版本,这很好!

我测试了 AppImage 文件,它运行良好。你可以按照我们的指南 使用 AppImage设置 Flatpak安装 deb 包 开始使用。

你可以查看其 官方网站GitHub 页面 了解更多信息。

Padloc

一个略显昂贵的密码管理器带来良好的用户体验

它的用户界面和使用它的整体体验给我留下了深刻的印象。

如果你优先考虑用户界面、极简主义和开源技术,无论你决定免费使用还是付费使用,Padloc 都是一个有用的选择。

当然,如果你想要物有所值(或更便宜)的东西,你可以随时选择 Bitwarden 之类的东西。


via: https://itsfoss.com/padloc/

作者:Ankush Das 选题:lkxed 译者:geekpi 校对:wxy

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

随着在设备上使用各种程序的用户的需求变得越来越复杂,程序本身也需要跟上用户的现实需求和未来期望。

我发现我每天需要的东西是一个在网页浏览器保持登录多个账号的简单方法。我 可以 根据需要对我的每个账号进行登录和注销操作,但在短时间内切换多个账号时,这变得非常乏味。

最初,我使用谷歌浏览器,它拥有管理多个帐户的能力。这很有效,但管理起来略显繁琐,而且明明只需 一个 谷歌账号就能搞定的事却要创建一个新的谷歌账号来完成,这显得有点儿笨拙。

这是我转而使用 Firefox 多账户容器 Multi-Account Containers 功能的原因。它不仅比我在谷歌 Chrome 浏览器上的设置灵活得多,而且我还使用了由我的浏览器开发者自己创建的工具,从而在整体上获得了更流畅和更简单的体验。

Firefox 中的容器图示

Firefox 中的多帐户容器是什么?

如果你想将数字生活的各个部分彼此分开,多账户容器也非常有效。通过使用容器,你在一个容器中的浏览活动不会与其他容器共享。这种隔离意味着你可以在不同容器中登录同一网站上的两个不同帐户。你的登录会话、网站偏好和跟踪数据将被限制在你使用某个网站的容器中。

它还有什么其他优势?想象一下,你在亚马逊或其他电子商务网站上购物。你浏览了一些商品,但没有购买任何东西。现在,如果你浏览网络,你会看到与你浏览的产品相关的广告。尽管有广告拦截器,一些网站仍会显示广告。使用容器,你可以将你的购物网站与其他网站分开。(LCTT 校注:甚至根据你的浏览历史,你再次访问同一网站时看到的价格可能会被“宰熟”——反复浏览代表了你的购买倾向。)

再给大家分享一个例子。Firefox 默认提供一个 Facebook 容器。默认情况下,此容器包括 Facebook、Messenger 和 Instagram 网站。这意味着当你打开这三个网站中的任何一个时,它们都只会在“Facebook 容器”中打开。因此,Facebook 将无法跟踪你在其他网站上的活动。

这是 很少有人知道或使用的 Firefox 功能 之一。

使用多账户容器

安装 Firefox 多账户容器是一个非常简单的过程,只需点击几下。

首先,前往 Firefox 附加组件网站上的 扩展程序页面。之后你唯一需要做的就是单击 “添加到 Firefox” 按钮。

安装完成!现在我们可以实际使用一下这个新的扩展。

可能你还没有注意到,你的搜索栏右侧应该会出现一个新图标:

这是你将用于与 Firefox 多帐户容器交互的图标。如果你单击该图标,你将看到一个小菜单:

让我们使用这个扩展尝试一些例子,看看多账户容器是如何工作的。

设置容器

首先,我们需要生成一个容器。点击多账户容器菜单中的 ` 管理容器 Manage Containers ,然后点击 新建容器 New Container

接着输入新容器的名称,选择颜色和图标。然后,点击 “OK” 保存新容器。

大功告成!我们现在可以返回主菜单在新容器中打开一个新选项卡:

你还会注意到新选项卡有一些样式,表示它正在容器内运行:

观察容器工作

现在让我们看看容器在使用时实际做了什么。

我们将在一个普通的浏览器选项卡中访问 Linode 管理网站,我已经在其中登录:

现在让我们尝试在 Firefox 容器中打开相同的页面,此时我被重定向到 Linode 登录页面:

为什么我被重定向了?因为现在我没有登录。这就是 Firefox 容器的乐趣之一:在一个浏览器会话中登录后,再进入一个容器,就好像你以前从未访问过该站点一样。

如果你在容器内完成对某个网站的登录,你从容器中访问该网站时将会保持登录状态。你还可以使用此功能从容器内登录网站,从而使该网站的所有数据与你的正常浏览器数据相隔开。

注意:你的浏览器历史记录本身之类的内容仍会暴露给你的正常浏览器会话。容器功能只是提供了一种方法来分离本文中提到的登录帐户等内容。

总结

对于那些在乎自己的隐私,或者只是想真正尝试对其系统的安全性进行严格控制的人来说,多账户容器被证明是一个很棒的功能。

例如,你可以在容器内登录你的谷歌帐户,谷歌永远不会知悉你在容器外的信息。 对拥有多个帐户的人来说,此扩展程序是一个不错的选择。有了它无需为你要使用的每样东西创建单独的浏览器帐户。

好了,这就是 Firefox 的多帐户容器的基本知识。

需要任何帮助,或者只是有点问题?请随时在评论区指出。


via: https://itsfoss.com/firefox-containers/

作者:Hunter Wittenborn 选题:lujun9972 译者:hanszhao80 校对:校对者ID

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

Facebook 创始人年轻时也曾宣誓捍卫用户隐私

2003 年 Slashdot 曾经 报道,哈佛大学新生扎克伯格和加州理工新生丹吉洛开发了一个系统,可以分析用户的音乐播放列表并学习人们的收听模式。这个制作播放列表的软件是他们的高中毕业项目。这篇帖子引起了微软和其他公司的注意,有公司给出了一份接近一百万美元的报价,但他们拒绝了。有趣的是,在该帖子的一个评论中,后来成为 Facebook 创始人的扎克伯格曾发誓要保护用户隐私,“除了你之外,你的音乐收听数据都不会提供给其他任何人。我们希望利用大量的数据来帮助分析,但你的个人数据将永远不会被其他人看到。”而后来成为 Quora 联合创始人和 CEO 的丹吉洛,也补充说,“我不会向人们发送垃圾邮件。我保证。”

消息来源:Slashdot
老王点评:曾经的年轻人都怀着淳朴的理想,然而成为巨龙之后,都喜欢珠宝。

研究人员发布可以本地运行的 Copilot 替代品

GitHub Copilot 是最近几个在 AI 帮助下生成编程代码建议的工具之一,但在许可证方面和该软件向微软公司发送遥测数据方面存在一些争议。美国纽约大学的一位研究人员开源了一个 Copilot 的替代品 FauxPilot,它可以在本地运行,而不会将数据发送回微软。FauxPilot 不使用 Codex,它依靠的是 Salesforce 的 CodeGen 模型。但该模型也是在 GitHub 所有的公共代码上训练的,因此许可证问题并没有得到解决。当然,你可以使用这个可以本地运行的 AI 模型专门针对某类许可证进行学习,或许针对你自己希望重复使用的代码进行学习。

消息来源:The Register
老王点评:如果计算量可以承受,我想这个开源的 AI 工具或许在某些开发组织里面发挥作用。

OpenSUSE 考虑移除 Reiserfs 文件系统

20 多年前,Reiserfs 首次引入 SUSE 时,它是当时领先的文件系统,首次为 Linux 引入了日志保护。但在 Reiserfs 作者因谋杀罪而入狱后,该文件系统的开发就停滞了。ReiserFS 一度是 SUSE 的默认文件系统。Reiserfs 现在缺乏用户期望拥有的很多功能,SUSE 的开发者制定了在 SUSE 滚动版中立即移除 Reiserfs 的计划,稳定版也将在几个版本后移除支持。而 Linux 内核从 5.18 开始正在逐渐弃用 ReiserFS,并计划在 2025 年完全删除相关代码。

消息来源:Phoronix
老王点评:本来颇有希望的一个文件系统,却中途崩沮。从某种意义上说,现在的很多开源项目还相当依赖其灵魂人物,一旦遇到“被卡车撞了”这样的意外,如果没有及时引起社区关注和接手,很可能就随同夭折了。