2020年9月

9 月 23 日,上海。

华为在上海召开了规模盛大的华为全联接大会。而就在一周前,华为刚刚遭受到了新一轮的美国禁令的打击。

今天阴有小雨,正如华为目前所面临的困境,但雨很快就停了,华为也在这次全联接大会上给出了自己的答案。

夜来风雨声,花落知多少

美国禁令之下,对华为的各项封锁让每一个国人都感同身受。特别是当你从事的是 ICT 行业相关工作时,美国禁令带给每个人的,不仅仅是触目惊心的封锁,更是成为了每一个 ICT 从业者深深的忧虑,我们每一个人都可能因为美国的封锁而举步维艰。

华为轮值董事长郭平在全联接大会答记者问时坦承:

美国的加大制裁,第三次修改法律制裁确实给我们的生产、运营带来了很大困难,但是具体到每一个芯片是九月十五日才储备入库,所以具体数据还在评估过程中。

作为处于博弈风暴中心的华为,在遭遇了 Intel、AMD、ARM 等硬件企业的断供,在被 Google 等合作厂商拒绝延续服务后,毫无疑问,在相应生态中必然会面临着极大的挑战。在被美国第三轮制裁之后,连台积电都无法再为华为代工,使得华为真正面临“无芯可用”的地步。

对于华为来说,To B 的企业业务所需要的芯片、零部件等资源准备的比较充沛,这部分业务的消耗也不会有明显的波动。但 To C 的手机业务对于芯片的消耗是巨量的。对于一些低端的机型,华为尚可选择联发科的芯片来完成产品的研发。但对于高端产品,联发科的产品还不具备竞争力,或迫使华为暂停生产,努力寻求方案,等待芯片制造商申请许可。

好雨知时节,当春乃发生

面临封锁寒冬,在外界看来,华为所遭受的压力和挑战是前所未有的。但从华为的态度来看,还是处惊不变的,这从郭平在答记者问的讲话中可见一斑:

讲一个我们自己的故事,1990 年代中国交换机 100% 都是非中国的产品,巴黎统筹委员会对七号信令等技术进行出口限制,我们无法获取,就从原理开始,最后做出华为数字交换机。

在遭遇禁令封锁,业务遇阻,在具体的影响还需要进一步评估的同时,华为并没有踟蹰于发展,而是进一步加大了对行业、企业、政务等领域的投入。

郭平讲到:

至于“地主”家的“余粮”,对于包含基站在内的 TO B 业务,我们还是比较充分的,华为希望把联接、计算、人工智能、行业应用结合起来,为客户创造价值,这方面有巨大的机会。

在郭平的演讲中,他举了不同行业的例子,比如通过帮助焦化企业通过 AI 来优化生产模型,可以帮助企业每年节省 2700 万元的成本;通过帮助物流系统引入智慧调度,提升了企业物流园的各项工作效率;通过帮助政府建立智慧城市,提升了城市的调度和治理水平。这些行业的例子,都展示了华为在与企业、政府合作的成就。

TO B 业务是华为一直以来的强项,华为手握通信运营商的基础设施订单,和各行业深度合作,在过去的时间里,打造了各种各样的行业应用。而 5G 作为一个新兴的技术,和华为过去在做的“联接、计算、人工智能、行业应用“整合在一起,构成了华为的新希望—— “5 机”。“5 机”指的是华为通过将“联接、计算、人工智能、行业应用和 5G”进行联接,希望借助 “5 机”对于政府和企业的全面数字化、全面智能化添砖加瓦。借助于 “5 机”,华为可以帮助政府以更高效、更便捷的方式完成城市和地区的治理;借助于“5 机”,华为可以帮助行业和企业更好的完成数字化和智能化,让更多的行业可以享受到科技发展带来的价值。

在华为看来,数字经济的基础是联接和计算。5G、物联网是联接技术;云、AI 代表计算技术。摩尔定律大家都很熟悉,算力随着时间的推移,变得更加强大而且价格低廉。梅特卡夫定律指出,网络的价值随着联接数的增加而倍增。联接的密度乘以计算的精度,就是数字经济的强度。华为希望通过 “5 机”,帮助更多的行业建立起数字化方案,让更多行业可以共享计算机发展的成果。

而另一方面,对于 To C 业务,华为也并没有束手待毙,而是积极应对。华为消费者业务云服务总裁张平安说:

现在我们要做的是在限制的情况下如何继续做好其他方面的创新,……虽然我们在芯片领域会受到一定限制,这是其一。第二,我们看到我们还有 7 亿用户,我们仍然可以为 7 亿用户提供很多创新业务与服务。我们希望能够通过我们的 HMS 能够给用户继续服务好,我们也希望通过我们的操作系统能够继续研发,能够在下一代操作系统有不同的不一样的创新。

刚才问到我们会不会减缓我们的脚步,这更坚定我们构建 HMS 生态的决心。我们认为(我们的)生态一直是非常开放的,因为我们所做的所有生态数字服务以及生态平台系统,最终是服务全球用户。

同时,郭平也说:

我也注意到高通说他们在向美国政府申请出口许可,如果他们申请到,我们很乐意使用高通芯片制造手机。……我们也乐意帮助可信的供应链增强他们的芯片制造、装备、材料的能力,帮助他们也是帮助我们自己。

空山新雨后,天气晚来秋

如果说过去一段时间的遭遇,是华为所面临的阴霾,那么当下全联接大会中所看到的,则是华为的新希望。

停摆一年后,Linux Journal 宣布再次归来

1994 年 4 月诞生的《Linux 杂志》,在持续运营 23 年后因资金耗尽而在 2019 年停止了出版。不过最新的消息是,由 Slashdot Media 拥有的 Linux Journal,已在官网上宣布了它的再次回归。目前尚未恢复任何订阅/发行模型的计划,相关内容将在 LinuxJournal.com 网站上独家发布。近期的目标是让团队熟悉 Linux Journal 网站,并确保它不会再次被关闭。

来源:cnbeta

拍一拍:欢迎归来,LJ!

开发者现可在 Windows 平台上构建和运行 Swift 代码

Swift 团队在周二发布的博客文章中宣布,这将使得开发者能够直接在 Windows 10 平台上构建、运行和调试 Swift 代码,此外工具包中囊括了编译器、标准库、核心库等构建功能性应用程序所需的所有关键要素。

来源:cnbeta

拍一拍:Swift 也希望赢得更多开发者。

阿里启用全球最大液冷数据中心,每年省电 7000 万度

9 月 23 日,阿里巴巴宣布,在杭州的首座超级数据中心——杭州数据中心正式投入使用。工程师将服务器浸泡在特殊冷却液中散热,故障率降低了50%,散热全程无需风扇、空调等制冷设备,整体节能超70%,年均PUE低至1.09,全球最低。

来源:快科技

拍一拍:为阿里点赞,为节能点赞!

有了 Jupyter、PyHamcrest,用一点测试的代码把它们连在一起,你就可以教任何适用于单元测试的 Python 内容。

关于 Ruby 社区的一些事情一直让我印象深刻,其中两个例子是对测试的承诺和对易于上手的强调。这两方面最好的例子是 Ruby Koans,在这里你可以通过修复测试来学习 Ruby。

要是我们能把这些神奇的工具也用于 Python,我们应该可以做得更好。是的,使用 Jupyter NotebookPyHamcrest,再加上一点类似于胶带的粘合代码,我们可以做出一个包括教学、可工作的代码和需要修复的代码的教程。

首先,需要一些“胶布”。通常,你会使用一些漂亮的命令行测试器来做测试,比如 pytestvirtue。通常,你甚至不会直接运行它。你使用像 toxnox 这样的工具来运行它。然而,对于 Jupyter 来说,你需要写一小段粘合代码,可以直接在其中运行测试。

幸运的是,这个代码又短又简单:

import unittest

def run_test(klass):
    suite = unittest.TestLoader().loadTestsFromTestCase(klass)
    unittest.TextTestRunner(verbosity=2).run(suite)
    return klass

现在,装备已经就绪,可以进行第一次练习了。

在教学中,从一个简单的练习开始,建立信心总是一个好主意。

那么,让我们来修复一个非常简单的测试:

@run_test
class TestNumbers(unittest.TestCase):
   
    def test_equality(self):
        expected_value = 3 # 只改这一行
        self.assertEqual(1+1, expected_value)
    test_equality (__main__.TestNumbers) ... FAIL
   
    ======================================================================
    FAIL: test_equality (__main__.TestNumbers)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-7-5ebe25bc00f3>", line 6, in test_equality
        self.assertEqual(1+1, expected_value)
    AssertionError: 2 != 3
   
    ----------------------------------------------------------------------
    Ran 1 test in 0.002s
   
    FAILED (failures=1)

“只改这一行” 对学生来说是一个有用的标记。它准确地表明了需要修改的内容。否则,学生可以通过将第一行改为 return 来修复测试。

在这种情况下,修复很容易:

@run_test
class TestNumbers(unittest.TestCase):
   
    def test_equality(self):
        expected_value = 2 # 修复后的代码行
        self.assertEqual(1+1, expected_value)
    test_equality (__main__.TestNumbers) ... ok
   
    ----------------------------------------------------------------------
    Ran 1 test in 0.002s
   
    OK

然而,很快,unittest 库的原生断言将被证明是不够的。在 pytest 中,通过重写 assert 中的字节码来解决这个问题,使其具有神奇的属性和各种启发式方法。但这在 Jupyter notebook 中就不容易实现了。是时候挖出一个好的断言库了:PyHamcrest。

from hamcrest import *
@run_test
class TestList(unittest.TestCase):
   
    def test_equality(self):
        things = [1,
                  5, # 只改这一行
                  3]
        assert_that(things, has_items(1, 2, 3))
    test_equality (__main__.TestList) ... FAIL
   
    ======================================================================
    FAIL: test_equality (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-11-96c91225ee7d>", line 8, in test_equality
        assert_that(things, has_items(1, 2, 3))
    AssertionError:
    Expected: (a sequence containing <1> and a sequence containing <2> and a sequence containing <3>)
         but: a sequence containing <2> was <[1, 5, 3]>
   
   
    ----------------------------------------------------------------------
    Ran 1 test in 0.004s
   
    FAILED (failures=1)

PyHamcrest 不仅擅长灵活的断言,它还擅长清晰的错误信息。正因为如此,问题就显而易见了。[1, 5, 3] 不包含 2,而且看起来很丑:

@run_test
class TestList(unittest.TestCase):
   
    def test_equality(self):
        things = [1,
                  2, # 改完的行
                  3]
        assert_that(things, has_items(1, 2, 3))
    test_equality (__main__.TestList) ... ok
   
    ----------------------------------------------------------------------
    Ran 1 test in 0.001s
   
    OK

使用 Jupyter、PyHamcrest 和一点测试的粘合代码,你可以教授任何适用于单元测试的 Python 主题。

例如,下面可以帮助展示 Python 从字符串中去掉空白的不同方法之间的差异。

source_string = "  hello world  "

@run_test
class TestList(unittest.TestCase):
   
    # 这是个赠品:它可以工作!
    def test_complete_strip(self):
        result = source_string.strip()
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world")))

    def test_start_strip(self):
        result = source_string # 只改这一行
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world  ")))

    def test_end_strip(self):
        result = source_string # 只改这一行
        assert_that(result,
                   all_of(starts_with("  hello"), ends_with("world")))
    test_complete_strip (__main__.TestList) ... ok
    test_end_strip (__main__.TestList) ... FAIL
    test_start_strip (__main__.TestList) ... FAIL
   
    ======================================================================
    FAIL: test_end_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-16-3db7465bd5bf>", line 19, in test_end_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with '  hello' and a string ending with 'world')
         but: a string ending with 'world' was '  hello world  '
   
   
    ======================================================================
    FAIL: test_start_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-16-3db7465bd5bf>", line 14, in test_start_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with 'hello' and a string ending with 'world  ')
         but: a string starting with 'hello' was '  hello world  '
   
   
    ----------------------------------------------------------------------
    Ran 3 tests in 0.006s
   
    FAILED (failures=2)

理想情况下,学生们会意识到 .lstrip().rstrip() 这两个方法可以满足他们的需要。但如果他们不这样做,而是试图到处使用 .strip() 的话:

source_string = "  hello world  "

@run_test
class TestList(unittest.TestCase):
   
    # 这是个赠品:它可以工作!
    def test_complete_strip(self):
        result = source_string.strip()
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world")))

    def test_start_strip(self):
        result = source_string.strip() # 改完的行
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world  ")))

    def test_end_strip(self):
        result = source_string.strip() # 改完的行
        assert_that(result,
                   all_of(starts_with("  hello"), ends_with("world")))
    test_complete_strip (__main__.TestList) ... ok
    test_end_strip (__main__.TestList) ... FAIL
    test_start_strip (__main__.TestList) ... FAIL
   
    ======================================================================
    FAIL: test_end_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-17-6f9cfa1a997f>", line 19, in test_end_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with '  hello' and a string ending with 'world')
         but: a string starting with '  hello' was 'hello world'
   
   
    ======================================================================
    FAIL: test_start_strip (__main__.TestList)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "<ipython-input-17-6f9cfa1a997f>", line 14, in test_start_strip
        assert_that(result,
    AssertionError:
    Expected: (a string starting with 'hello' and a string ending with 'world  ')
         but: a string ending with 'world  ' was 'hello world'
   
   
    ----------------------------------------------------------------------
    Ran 3 tests in 0.007s
   
    FAILED (failures=2)

他们会得到一个不同的错误信息,显示去除了过多的空白:

source_string = "  hello world  "

@run_test
class TestList(unittest.TestCase):
   
    # 这是个赠品:它可以工作!
    def test_complete_strip(self):
        result = source_string.strip()
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world")))

    def test_start_strip(self):
        result = source_string.lstrip() # Fixed this line
        assert_that(result,
                   all_of(starts_with("hello"), ends_with("world  ")))

    def test_end_strip(self):
        result = source_string.rstrip() # Fixed this line
        assert_that(result,
                   all_of(starts_with("  hello"), ends_with("world")))
    test_complete_strip (__main__.TestList) ... ok
    test_end_strip (__main__.TestList) ... ok
    test_start_strip (__main__.TestList) ... ok
   
    ----------------------------------------------------------------------
    Ran 3 tests in 0.005s
   
    OK

在一个比较真实的教程中,会有更多的例子和更多的解释。这种使用 Jupyter Notebook 的技巧,有的例子可以用,有的例子需要修正,可以用于实时教学,可以用于视频课,甚至,可以用更多的其它零散用途,让学生自己完成一个教程。

现在就去分享你的知识吧!


via: https://opensource.com/article/20/9/teach-python-jupyter

作者:Moshe Zadka 选题:lujun9972 译者:wxy 校对:wxy

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

明天,「Inclusion 外滩大会」就要开幕了,在这场全球金融科技盛会中,作为金融业的得力助手,科技主题,也占据了不少的篇幅。而作为 IT 人,如果你来到了外滩大会,那么下面这些技术分享,一定不能错过。

必看一:OceanBase 是怎样炼成的?

作为一切 IT 应用的基础,数据库是每一场技术大会都必不可少的主题。而随着云计算时代的到来,数据库领域也发生了天翻地覆般的改变。互联网的海量应用场景给了数据库技术最肥沃的试验田。而自研数据库技术得益于国内海量的数据应用,快速创新,持续蓄力。

作为自研数据库的翘楚,OceanBase 是谈及自研数据库绕不过去的话题,在本次的 Inclusion 大会中,主办方邀请了 OceanBase 团队的首席技术官阳振坤博士,来「数据库,新标杆,新征途」分会场分享「OceanBase 数据库七亿 tpmC 的关键技术

除了 OceanBase 以外,关于数据库,主办方还邀请了华东师范大学副院长,“智能+”研究院院长,数据学院教授周傲英博士分享「数据库的发展与中国的机遇」、西安银行科技部总架构师肖梁先生分享「企业级数据库加速客户数字化转型」、恒生电子股份有限公司云基础系统发展部总经理王佳玮分享「证券行业数据库应用创新之路」等。如果你对数据库感兴趣,那么一定不能错过「数据库,新标杆,新征途」分会场所分享的各种技术主题。

必看二:智能驱动金融变革

人工智能、分布式计算等新技术,引领了当下技术的潮流,更是将金融科技推向了新的发展高度。在新的时代,金融的创新更多的依赖这些新兴技术所带来的改变和智能与技术所引导的业务创新场景。在本次大会中,主办方邀请了全球顶级思想领袖、技术大咖和学术精英共同探讨在新的技术潮流下,金融科技将何去何从?

在本次的 Inclusion 大会中,蚂蚁集团副总裁芮雄文将会就新技术潮流下的金融科技这一话题,在「智能计算峰会 - 重塑金融」分会场分享「新时代新要求:科技重塑金融创新」。

不仅如此,蚂蚁集团副总裁韦韬将会分享「安全计算的演变与展望」,介绍蚂蚁集团是如何让计算变得更加安全和可信。

此外,你还可以在「智能计算峰会 - 重塑金融」分会场听到来自蚂蚁集团的计算存储首席架构师何昌华分享「智能计算实践」、美国三院院士,曾获冯诺依曼奖的 Michael Jordan 分享「人工智能发展趋势」以及恒生电子股份有限公司总裁刘曙峰分享「智能化推进金融数字化下半场」等主题。

如果你关注人工智能、机器学习、那么「智能计算峰会 - 重塑金融」,将是你不容错过的一场。

必看三:如何构建可信原生

云原生理念和实践已经取得了广泛的认可和传播,云原生的关键技术也在不断发展,提升IT系统的生产力,然而在注重信任的金融领域,如何在利用云原生带来的效能提升的同时,进一步提升安全和稳定性,仍然是个极具挑战的问题。为了更好的讨论这个问题,本次大会的主办方邀请了蚂蚁集团研究员何征宇在「可信原生 - 安全稳定的基础设施」分享「可信原生: 下一代的金融技术基础设施」。

除了下一代金融技术基础设施的分享以外,「可信原生 - 安全稳定的基础设施」分会场还邀请了陈渝副教授分享「基于 Rust 语言的 OS 探索」和英特尔 IAGS 系统软件 高级技术总监刘秉伟分享「英特尔系统全栈,赋能机密计算新时代」。

未来,每一个金融云,都将会基于可信原生建立,那么在现在,就是来了解他的最好时刻。

必看四:技术风险控制的实现秘诀

随着企业数字化转型的不断推进,越来越多的新兴技术开始出现在企业的各种应用中,这些应用改变了行业,但也同样带来了足以改变行业的问题。在这样的大背景下,控制技术因素引入的稳定性风险就显得日趋重要。在本次大会的「技术风险,稳妥创新分会场,云集了蚂蚁集团、中国人寿、滴滴等多个企业的技术专家,一同探讨如何在企业内进行技术风险的控制。

在「技术风险,稳妥创新」分会场中,以下主题不容错过:

必看五:创新引领未来

产学研的打通,促进了研究的落地发芽,推进了产业和学界的交流和沟通,更是为行业和国家培养了一批又一批的优秀人才,在这次大会中,蚂蚁集团联合产学研机构,邀请了国内外优秀学者共话如何推进计算机科学领域基础性、前瞻性的技术发展和人才培养。在本次外滩大会的「校企合作 - 引领技术 、关注人才、共创未来关注」分会场,你将会了解到全世界高校的尖端研究与新时代下产学研如何合作、共进、共研。

在「校企合作」分论坛,主办方邀请了教育部高等教育司巡视员兼教育部高等教育教学评估中心主任刘凤泰分享「新时代下的校企合作探索与思考

除了这些,还有什么值得看?

如果上面的这五个会场你还觉得不够,Inclusion 外滩大会还有其他的分论坛,可以满足你对于技术的一切要求,比如:

  • 实时智能分论坛:专注实时计算系统和下一代数据存储于计算领域的创新与应用
  • 图智能分论坛:了解复杂金融关系的最优解 —— 图智能
  • 体验科技分论坛:探讨新一代极致的用户体验及最佳工程实践
  • AI 安全分论坛:在新的安全形式下,如何推动和引领业界在AI安全领域的发展?
  • IoT 安全分论坛:在 IoT 新时代,如何在服务模式业务创新的基础上,保障用户的安全和隐私?

当然,整个 Inclusion 外滩大会不止这些,更多的好内容,你可以访问官网 www.inclusionconf.com 了解。

总结

Inclusion 大会作为一场全球金融科技盛会,在科技领域能够邀请如此多的行业专家、学者来一同讨论金融科技的现在与未来,对于每一个从业者来说,都是不可多得的机会。如果你有机会来到外滩大会,一定不要错过这些精彩的分享,来听一听技术专家的分享。

新版龙芯 CPU 信息技术教材问世:覆盖小学、初中

近期,由江苏省中小学教学研究室编著、凤凰科学技术出版社出版的最新龙芯中学、小学信息技术教材问世。据悉,龙芯教材曾经于 2013 年出版,本次为修订再版。除了常规的软件应用介绍以外,还新增了机器人、创客、Scratch 编程、物联网等知识,进一步增强了中小学生动手实践的环节,在使用计算机中学习计算机。新版教材保留了对于龙芯团队、龙芯计算机的介绍,对于龙芯 CPU 的诞生和使命,也用了相当一部分笔墨去体现。

来源:快科技

拍一拍:等我下单买两本回来学习一下,JD 有售~

微软宣布其基于 Chromium 的 Edge 浏览器将于下个月登陆 Linux

这已经是酝酿了一段时间的事情了。该公司首次在 Build 2019 的幻灯片上展示了它的到来,这个消息同时也在当年的 Ignite 上得到了确认。

来源:cnbeta

拍一拍:微软真的想让 Web 开发者加入他们的用户行列,因为很多开发者都在使用 Linux。

台积电 2nm 工艺重大突破,2023 年风险试产良率或达 90%

据悉,台积电去年成立了2nm专案研发团队,寻找可行路径进行开发。有别于 3nm 和 5nm 采用鳍式场效应晶体管(FinFET),台积电的 2nm 工艺改用全新的多桥通道场效电晶体(MBCFET)架构。

来源:雷锋网

拍一拍:技术的进步让人应接不暇。

KeePassXC 是一款有用的开源跨平台密码管理器,即使它不是云端工具,在功能上也毫不逊色。下面,我们就来快速了解一下它。

KeePassXC:一个跨平台的开源密码管理器

KeePassXC 是 KeePassX 的社区复刻版本,旨在成为 KeePass Password Safe(适用于 Windows)的跨平台移植。它是完全免费使用和跨平台的(Windows、Linux 和 macOS)。

事实上,它是目前 Linux 最佳密码管理器之一。它的功能选项既适合新手,也适合那些想要进一步控制以保护系统上的密码数据库的高级用户。

是的,与我最喜欢的 Bitwarden 密码管理器不同,KeePassXC 不是基于云端的,密码永远不会离开系统。有些用户确实喜欢不把密码和秘密保存在云服务器中。

当你开始使用密码管理器时,你应该能在它上找到你所需要的所有基本功能。但是,在这里,为了让你初步了解,我会强调提到一些它提供的功能。

KeePassXC 的功能

值得注意的是,对于一个新手来说,这些功能可能会让人有点不知所措。但是,考虑到你想充分使用它,我想你应该真正了解它所提供的功能:

  • 密码生成器
  • 能够从 1Password、KeePass 1 和任何 CSV 文件导入密码。
  • 通过导出和同步 SSL 证书支持,轻松共享数据库。
  • 支持数据库加密 (256 位 AES)
  • 浏览器集成(可选)
  • 能够搜索你的凭证
  • 在应用中自动输入密码
  • 数据库报告,以检查密码的健康状况和其他统计数字
  • 支持导出为 CSV 和 HTML
  • 支持双因素认证令牌
  • 支持将文件附加到密码中
  • 支持 YubiKey
  • 支持命令行
  • 支持集成 SSH 代理
  • 必要时改变加密算法
  • 能够使用 DuckDuckGO 下载网站图标
  • 数据库超时自动锁定
  • 清除剪贴板和搜索查询的能力
  • 自动保存文件
  • 支持文件夹/嵌套文件夹
  • 设置密码的有效期
  • 提供黑暗主题
  • 跨平台支持

正如你所看到的,它的确是一款功能丰富的密码管理器。所以,我建议你如果想使用提供的每一个功能,就好好探索它。

在 Linux 上安装 KeePassXC

你应该能在你安装的发行版的软件中心找到它。

你也可以从官方网站上获得 AppImage 文件。如果你还不知道的话,我建议你去看看我们的在 Linux 中使用 AppImage 文件的指南。

另外,你还会发现有一个 snap 包可以用。除此之外,你还可以得到 Ubuntu PPA、Debian 包、Fedora 包和 Arch 包。

如果你好奇,你可以直接探索官方下载页面的可用包,并查看他们的 GitHub 页面的源代码。

总结

如果你不是 Bitwarden 等云端开源密码管理器的粉丝,KeePassXC 应该是你的绝佳选择。

在这里你得到的功能数量可以让你可以在多个平台上保证密码的安全和易于维护。即使没有开发团队的“官方”移动应用,你也可以尝试他们的一些推荐应用,它们与其数据库兼容,并提供相同的功能。

你尝试过 KeePassXC 吗?你更喜欢使用什么作为你的密码管理器?请在下面的评论中告诉我你的想法。


via: https://itsfoss.com/keepassxc/

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

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