2021年3月

Evernote 是一款流行的笔记应用。它在推出时是一个革命性的产品。从那时起,已经有好几个这样的应用,可以将网络剪报、笔记等保存为笔记本格式。

多年来,Evernote 一直没有在 Linux 上使用的桌面客户端。前段时间 Evernote 承诺推出 Linux 应用,其测试版终于可以在基于 Ubuntu 的发行版上使用了。

非 FOSS 警报!

Evernote Linux 客户端不是开源的。之所以在这里介绍它,是因为该应用是在 Linux 上提供的,我们也会不定期地介绍 Linux 用户常用的非 FOSS 应用。这对普通桌面 Linux 用户有帮助。

在 Ubuntu 和基于 Debian 的 Linux 发行版上安装 Evernote

进入这个 Evernote 的网站页面

向下滚动一点,接受“早期测试计划”的条款和条件。你会看到一个“立即安装”的按钮出现在屏幕上。点击它来下载 DEB 文件。

从 DEB 文件安装应用,请双击它。它应该会打开软件中心,并给你选择安装它。

安装完成后,在系统菜单中搜索 Evernote 并启动它。

当你第一次启动应用时,你需要登录到你的 Evernote 账户。

第一次运行会带你进入“主页面”,在这里你可以整理你的笔记本,以便更快速地访问。

你现在可以享受在 Linux 上使用 Evernote 了。

体验 Evernote 的 Linux 测试版客户端

由于软件处于测试版,因此这里或那里会有些问题。

如上图所示,Evernote Linux 客户端检测到 Ubuntu 中的深色模式 并自动切换到深色主题。然而,当我把系统主题改为浅色或标准主题时,它并没有立即改变应用主题。这些变化是在我重启 Evernote 应用后才生效的。

另一个问题是关于关闭应用。如果你点击 “X” 按钮关闭 Evernote,程序会进入后台而不是退出。

有一个似乎可以启动最小化的 Evernote 的应用指示器,就像 Linux 上的 Skype。不幸的是,事实并非如此。它打开了便笺,让你快速输入笔记。

这为你提供了另一个 Linux 上的笔记应用,但它也带来了一个问题。这里没有退出 Evernote 的选项。它只用于打开快速记事应用。

那么,如何退出 Evernote 应用呢?为此,再次打开 Evernote 应用。如果它在后台运行,在菜单中搜索它,并启动它,就像你重新打开它一样。

当 Evernote 应用在前台运行时,点击 “文件->退出” 来退出 Evernote。

这一点开发者应该在未来的版本中寻求改进。

我也不能说测试版的程序将来会如何更新。它没有添加任何仓库。我只是希望程序本身能够通知用户有新的版本,这样用户就可以下载新的 DEB 文件。

我并没有订阅 Evernote Premium,但我仍然可以在没有网络连接的情况下访问保存的网络文章和笔记。很奇怪,对吧?

总的来说,我很高兴看到 Evernote 终于努力把这个应用带到了 Linux 上。现在,你不必再尝试第三方应用来在 Linux 上使用 Evernote 了,至少在 Ubuntu 和基于 Debian 的发行版上是这样。当然,你可以使用 Evernote 替代品,比如 Joplin,它们都是开源的。


via: https://itsfoss.com/install-evernote-ubuntu/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

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

Bash 自动测试系统可以使 Bash 代码也通过 Java、Ruby 和 Python 开发人员所使用的同类测试过程。

用 Java、Ruby 和 Python 等语言编写应用程序的软件开发人员拥有复杂的库,可以帮助他们随着时间的推移保持软件的完整性。他们可以创建测试,以在结构化环境中通过执行一系列动作来运行应用程序,以确保其软件所有的方面均按预期工作。

当这些测试在持续集成(CI)系统中自动进行时,它们的功能就更加强大了,每次推送到源代码库都会触发测试,并且在测试失败时会立即通知开发人员。这种快速反馈提高了开发人员对其应用程序功能完整性的信心。

Bash 自动测试系统 Bash Automated Testing System BATS)使编写 Bash 脚本和库的开发人员能够将 Java、Ruby、Python 和其他开发人员所使用的相同惯例应用于其 Bash 代码中。

安装 BATS

BATS GitHub 页面包含了安装指令。有两个 BATS 辅助库提供更强大的断言或允许覆写 BATS 使用的 Test Anything Protocol(TAP)输出格式。这些库可以安装在一个标准位置,并被所有的脚本引用。更方便的做法是,将 BATS 及其辅助库的完整版本包含在 Git 仓库中,用于要测试的每组脚本或库。这可以通过 git 子模块 系统来完成。

以下命令会将 BATS 及其辅助库安装到 Git 知识库中的 test 目录中。

git submodule init
git submodule add https://github.com/sstephenson/bats test/libs/bats
git submodule add https://github.com/ztombol/bats-assert test/libs/bats-assert
git submodule add https://github.com/ztombol/bats-support test/libs/bats-support
git add .
git commit -m 'installed bats'

要克隆 Git 仓库并同时安装其子模块,请在 git clone 时使用 --recurse-submodules 标记。

每个 BATS 测试脚本必须由 bats 可执行文件执行。如果你将 BATS 安装到源代码仓库的 test/libs 目录中,则可以使用以下命令调用测试:

./test/libs/bats/bin/bats <测试脚本的路径>

或者,将以下内容添加到每个 BATS 测试脚本的开头:

#!/usr/bin/env ./test/libs/bats/bin/bats
load 'libs/bats-support/load'
load 'libs/bats-assert/load'

并且执行命令 chmod +x <测试脚本的路径>。 这将 a、使它们可与安装在 ./test/libs/bats 中的 BATS 一同执行,并且 b、包含这些辅助库。BATS 测试脚本通常存储在 test 目录中,并以要测试的脚本命名,扩展名为 .bats。例如,一个测试 bin/build 的 BATS 脚本应称为 test/build.bats

你还可以通过向 BATS 传递正则表达式来运行一整套 BATS 测试文件,例如 ./test/lib/bats/bin/bats test/*.bats

为 BATS 覆盖率而组织库和脚本

Bash 脚本和库必须以一种有效地方式将其内部工作原理暴露给 BATS 进行组织。通常,在调用或执行时库函数和运行诸多命令的 Shell 脚本不适合进行有效的 BATS 测试。

例如,build.sh 是许多人都会编写的典型脚本。本质上是一大堆代码。有些人甚至可能将这堆代码放入库中的函数中。但是,在 BATS 测试中运行一大堆代码,并在单独的测试用例中覆盖它可能遇到的所有故障类型是不可能的。测试这堆代码并有足够的覆盖率的唯一方法就是把它分解成许多小的、可重用的、最重要的是可独立测试的函数。

向库添加更多的函数很简单。额外的好处是其中一些函数本身可以变得出奇的有用。将库函数分解为许多较小的函数后,你可以在 BATS 测试中 援引 source 这些库,并像测试任何其他命令一样运行这些函数。

Bash 脚本也必须分解为多个函数,执行脚本时,脚本的主要部分应调用这些函数。此外,还有一个非常有用的技巧,可以让你更容易地用 BATS 测试 Bash 脚本:将脚本主要部分中执行的所有代码都移到一个函数中,称为 run_main。然后,将以下内容添加到脚本的末尾:

if [[ "${BASH_SOURCE[0]}" == "${0}" ]]
then
  run_main
fi

这段额外的代码做了一些特别的事情。它使脚本在作为脚本执行时与使用 援引 source 进入环境时的行为有所不同。通过援引并测试单个函数,这个技巧使得脚本的测试方式和库的测试方式变得一样。例如,这是重构的 build.sh,以获得更好的 BATS 可测试性

编写和运行测试

如上所述,BATS 是一个 TAP 兼容的测试框架,其语法和输出对于使用过其他 TAP 兼容测试套件(例如 JUnit、RSpec 或 Jest)的用户来说将是熟悉的。它的测试被组织成单个测试脚本。测试脚本被组织成一个或多个描述性 @test 块中,它们描述了被测试应用程序的单元。每个 @test 块将运行一系列命令,这些命令准备测试环境、运行要测试的命令,并对被测试命令的退出和输出进行断言。许多断言函数是通过 batsbats-assertbats-support 库导入的,这些库在 BATS 测试脚本的开头加载到环境中。下面是一个典型的 BATS 测试块:

@test "requires CI_COMMIT_REF_SLUG environment variable" {
  unset CI_COMMIT_REF_SLUG
  assert_empty "${CI_COMMIT_REF_SLUG}"
  run some_command
  assert_failure
  assert_output --partial "CI_COMMIT_REF_SLUG"
}

如果 BATS 脚本包含 setup(安装)和/或 teardown(拆卸) 函数,则 BATS 将在每个测试块运行之前和之后自动执行它们。这样就可以创建环境变量、测试文件以及执行一个或所有测试所需的其他操作,然后在每次测试运行后将其拆卸。Build.bats 是对我们新格式化的 build.sh 脚本的完整 BATS 测试。(此测试中的 mock_docker 命令将在以下关于模拟/打标的部分中进行说明。)

当测试脚本运行时,BATS 使用 exec(执行)来将每个 @test 块作为单独的子进程运行。这样就可以在一个 @test 中导出环境变量甚至函数,而不会影响其他 @test 或污染你当前的 Shell 会话。测试运行的输出是一种标准格式,可以被人理解,并且可以由 TAP 使用端以编程方式进行解析或操作。下面是 CI_COMMIT_REF_SLUG 测试块失败时的输出示例:

 ✗ requires CI_COMMIT_REF_SLUG environment variable
   (from function `assert_output' in file test/libs/bats-assert/src/assert.bash, line 231,
    in test file test/ci_deploy.bats, line 26)
     `assert_output --partial "CI_COMMIT_REF_SLUG"' failed

   -- output does not contain substring --
   substring (1 lines):
     CI_COMMIT_REF_SLUG
   output (3 lines):
     ./bin/deploy.sh: join_string_by: command not found
     oc error
     Could not login
   --

   ** Did not delete , as test failed **

1 test, 1 failure

下面是成功测试的输出:

✓ requires CI_COMMIT_REF_SLUG environment variable

辅助库

像任何 Shell 脚本或库一样,BATS 测试脚本可以包括辅助库,以在测试之间共享通用代码或增强其性能。这些辅助库,例如 bats-assertbats-support 甚至可以使用 BATS 进行测试。

库可以和 BATS 脚本放在同一个测试目录下,如果测试目录下的文件数量过多,也可以放在 test/libs 目录下。BATS 提供了 load 函数,该函数接受一个相对于要测试的脚本的 Bash 文件的路径(例如,在我们的示例中的 test),并援引该文件。文件必须以后缀 .bash 结尾,但是传递给 load 函数的文件路径不能包含后缀。build.bats 加载 bats-assertbats-support 库、一个小型 helpers.bash 库以及 docker_mock.bash 库(如下所述),以下代码位于测试脚本的开头,解释器魔力行下方:

load 'libs/bats-support/load'
load 'libs/bats-assert/load'
load 'helpers'
load 'docker_mock'

打标测试输入和模拟外部调用

大多数 Bash 脚本和库运行时都会执行函数和/或可执行文件。通常,它们被编程为基于这些函数或可执行文件的输出状态或输出(stdoutstderr)以特定方式运行。为了正确地测试这些脚本,通常需要制作这些命令的伪版本,这些命令被设计成在特定测试过程中以特定方式运行,称为“ 打标 stubbing ”。可能还需要监视正在测试的程序,以确保其调用了特定命令,或者使用特定参数调用了特定命令,此过程称为“ 模拟 mocking ”。有关更多信息,请查看在 Ruby RSpec 中 有关模拟和打标的讨论,它适用于任何测试系统。

Bash shell 提供了一些技巧,可以在你的 BATS 测试脚本中使用这些技巧进行模拟和打标。所有这些都需要使用带有 -f 标志的 Bash export 命令来导出一个覆盖了原始函数或可执行文件的函数。必须在测试程序执行之前完成此操作。下面是重写可执行命令 cat 的简单示例:

function cat() { echo "THIS WOULD CAT ${*}" }
export -f cat

此方法以相同的方式覆盖了函数。如果一个测试需要覆盖要测试的脚本或库中的函数,则在对函数进行打标或模拟之前,必须先声明已测试脚本或库,这一点很重要。否则,在声明脚本时,打标/模拟将被原函数替代。另外,在运行即将进行的测试命令之前确认打标/模拟。下面是build.bats 的示例,该示例模拟 build.sh 中描述的raise 函数,以确保登录函数会引发特定的错误消息:

@test ".login raises on oc error" {
  source ${profile_script}
  function raise() { echo "${1} raised"; }
  export -f raise
  run login
  assert_failure
  assert_output -p "Could not login raised"
}

一般情况下,没有必要在测试后复原打标/模拟的函数,因为 export(输出)仅在当前 @test 块的 exec(执行)期间影响当前子进程。但是,可以模拟/打标 BATS assert 函数在内部使用的命令(例如 catsed 等)是可能的。在运行这些断言命令之前,必须对这些模拟/打标函数进行 unset(复原),否则它们将无法正常工作。下面是 build.bats 中的一个示例,该示例模拟 sed,运行 build_deployable 函数并在运行任何断言之前复原 sed

@test ".build_deployable prints information, runs docker build on a modified Dockerfile.production and publish_image when its not a dry_run" {
  local expected_dockerfile='Dockerfile.production'
  local application='application'
  local environment='environment'
  local expected_original_base_image="${application}"
  local expected_candidate_image="${application}-candidate:${environment}"
  local expected_deployable_image="${application}:${environment}"
  source ${profile_script}
  mock_docker build --build-arg OAUTH_CLIENT_ID --build-arg OAUTH_REDIRECT --build-arg DDS_API_BASE_URL -t "${expected_deployable_image}" -
  function publish_image() { echo "publish_image ${*}"; }
  export -f publish_image
  function sed() {
    echo "sed ${*}" >&2;
    echo "FROM application-candidate:environment";
  }
  export -f sed
  run build_deployable "${application}" "${environment}"
  assert_success
  unset sed
  assert_output --regexp "sed.*${expected_dockerfile}"
  assert_output -p "Building ${expected_original_base_image} deployable ${expected_deployable_image} FROM ${expected_candidate_image}"
  assert_output -p "FROM ${expected_candidate_image} piped"
  assert_output -p "build --build-arg OAUTH_CLIENT_ID --build-arg OAUTH_REDIRECT --build-arg DDS_API_BASE_URL -t ${expected_deployable_image} -"
  assert_output -p "publish_image ${expected_deployable_image}"
}

有的时候相同的命令,例如 foo,将在被测试的同一函数中使用不同的参数多次调用。这些情况需要创建一组函数:

  • mock_foo:将期望的参数作为输入,并将其持久化到 TMP 文件中
  • foo:命令的模拟版本,该命令使用持久化的预期参数列表处理每个调用。必须使用 export -f 将其导出。
  • cleanup_foo:删除 TMP 文件,用于拆卸函数。这可以进行测试以确保在删除之前成功完成 @test 块。

由于此功能通常在不同的测试中重复使用,因此创建一个可以像其他库一样加载的辅助库会变得有意义。

docker\_mock.bash 是一个很棒的例子。它被加载到 build.bats 中,并在任何测试调用 Docker 可执行文件的函数的测试块中使用。使用 docker_mock 典型的测试块如下所示:

@test ".publish_image fails if docker push fails" {
  setup_publish
  local expected_image="image"
  local expected_publishable_image="${CI_REGISTRY_IMAGE}/${expected_image}"
  source ${profile_script}
  mock_docker tag "${expected_image}" "${expected_publishable_image}"
  mock_docker push "${expected_publishable_image}" and_fail
  run publish_image "${expected_image}"
  assert_failure
  assert_output -p "tagging ${expected_image} as ${expected_publishable_image}"
  assert_output -p "tag ${expected_image} ${expected_publishable_image}"
  assert_output -p "pushing image to gitlab registry"
  assert_output -p "push ${expected_publishable_image}"
}

该测试建立了一个使用不同的参数两次调用 Docker 的预期。在对Docker 的第二次调用失败时,它会运行测试命令,然后测试退出状态和对 Docker 调用的预期。

一方面 BATS 利用 mock_docker.bash 引入 ${BATS_TMPDIR} 环境变量,BATS 在测试开始的位置对其进行了设置,以允许测试和辅助程序在标准位置创建和销毁 TMP 文件。如果测试失败,mock_docker.bash 库不会删除其持久化的模拟文件,但会打印出其所在位置,以便可以查看和删除它。你可能需要定期从该目录中清除旧的模拟文件。

关于模拟/打标的一个注意事项:build.bats 测试有意识地违反了关于测试声明的规定:不要模拟没有拥有的! 该规定要求调用开发人员没有编写代码的测试命令,例如 dockercatsed 等,应封装在自己的库中,应在使用它们脚本的测试中对其进行模拟。然后应该在不模拟外部命令的情况下测试封装库。

这是一个很好的建议,而忽略它是有代价的。如果 Docker CLI API 发生变化,则测试脚本不会检测到此变化,从而导致错误内容直到经过测试的 build.sh 脚本在使用新版本 Docker 的生产环境中运行后才显示出来。测试开发人员必须确定要严格遵守此标准的程度,但是他们应该了解其所涉及的权衡。

总结

在任何软件开发项目中引入测试制度,都会在以下两方面产生权衡: a、增加开发和维护代码及测试所需的时间和组织,b、增加开发人员在对应用程序整个生命周期中完整性的信心。测试制度可能不适用于所有脚本和库。

通常,满足以下一个或多个条件的脚本和库才可以使用 BATS 测试:

  • 值得存储在源代码管理中
  • 用于关键流程中,并依靠它们长期稳定运行
  • 需要定期对其进行修改以添加/删除/修改其功能
  • 可以被其他人使用

一旦决定将测试规则应用于一个或多个 Bash 脚本或库,BATS 就提供其他软件开发环境中可用的全面测试功能。

致谢:感谢 Darrin Mann 向我引荐了 BATS 测试。


via: https://opensource.com/article/19/2/testing-bash-bats

作者:Darin London 选题:lujun9972 译者:stevenzdg988 校对:wxy

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

推特 CEO 的第一条推文可能拍卖出 250 万美元

前两天,推特 CEO Dorsey 将其发布的第一条推文,同时也是推特全平台的历史首条推文通过 Valuables 以 NFT 的形式进行了拍卖,尽管当时没有宣布拍卖何时结束,也没有宣布拍卖所得会捐赠给慈善事业,但是人们还是纷纷涌入竞相出价。获胜者将获得一份“该推特的数字证书”。

目前,这条推文的拍卖出价已经高达 250 万美元。出价者为预言机系统 Bridge Oracle 首席执行官,此前孙宇晨出价 200 万美元。拍卖将于 3 月 21 日结束,所以很可能会有更高的出价。Dorsey 计划将拍卖所得的比特币捐给一个非营利组织,以用于非洲的 COVID-19 救援。

或许在现在看起来 NFT 的火爆有些魔怔,不过也许将来会发现其价值,虽然这个拍卖价值目前看起来高的离谱。

RedMonk 排名:JavaScript 稳居榜首

RedMonk 在过去的十年里,定期将 Stack Overflow 上的语言讨论与 GitHub 上的使用情况关联起来,以洞察采用趋势。最新的排名是,JavaScript 仍然位居榜首,其次是 Python、Java、PHP,C#、C++ 和 CSS 并列第五名。与早期版本的排名相比,放在前 20 名的语言中有一半出现了变动。

JavaScript 能稳居榜首,既意外也不意外,毕竟这是一个 Web 互联网的时代。

微软正式干掉了传统版 Edge 浏览器

微软宣布,“我们新的现代浏览器微软 Edge 在一年多前首次亮相,今天可以在数亿台设备上找到它。去年 8 月,我们宣布传统版 Edge 桌面应用支持将于 2021 年 3 月 9 日结束。”

在 3 月份的星期二补丁周期中,微软发布了对传统版 Edge 浏览器的最后一次更新。而在下个月将会发布移除更新,在所有 Windows 10 设备上用 Chromium Edge 来取代传统版 Edge。

虽然当时微软放弃传统版 Edge 浏览器这一决策令人吃惊,但是效果确实出奇的好。不过 Edge 传统版的落幕,还是让人有点淡淡的忧伤。

通过 Linux,你可以将任何设备变成服务器,以共享数据、媒体文件,以及其他资源。

 title=

在 2021 年,人们喜欢 Linux 的理由比以往任何时候都多。在这个系列中,我将分享 21 个使用 Linux 的不同理由。这里有四个开源工具,可以将任何设备变成 Linux 服务器。

有时,我会发现有关服务器概念的某种神秘色彩。许多人,如果他们在脑海中有一个形象的话,他们认为服务器一定是又大又重的机架式机器,由一个谨慎的系统管理员和一群神奇的修理工精心维护。另一些人则把服务器设想成虚无缥缈的云朵,以某种方式为互联网提供动力。

虽然这种敬畏对 IT 工作的安全性是有好处的,但事实上,在开源计算中,没有人认为服务器是或应该是专家的专属领域。文件和资源共享是开源不可或缺的,而开源让它变得比以往任何时候都更容易,正如这四个开源服务器项目所展示的那样。

Samba

Samba 项目 是 Linux 和 Unix 的 Windows 互操作程序套件。尽管它是大多数用户从未与之交互的底层代码,但它的重要性却不容小觑。从历史上看,早在微软争相消灭 Linux 和开源的时候,它就是最大最重要的目标。时代变了,微软已经与 Samba 团队会面以提供支持(至少目前是这样),在这一切中,该项目继续确保 Linux 和 Windows 计算机可以轻松地在同一网络上共存。换句话说,无论你使用什么平台,Samba 都可以让你可以轻松地在本地网络上共享文件。

KDE Plasma 桌面上,你可以右键点击自己的任何目录,选择属性。在属性对话框中,点击共享选项卡,并启用与 Samba 共享(Microsoft Windows)

 title=

就这样,你已经为本地网络上的用户打开了一个只读访问的目录。也就是说,当你在家的时候,你家同一个 WiFi 网络上的任何人都可以访问该文件夹,如果你在工作,工作场所网络上的任何人都可以访问该文件夹。当然,要访问它,其他用户需要知道在哪里可以找到它。通往计算机的路径可以用 IP 地址 表示,也可以根据你的网络配置,用主机名表示。

Snapdrop

如果通过 IP 地址和主机名来打开网络是令人困惑的,或者如果你不喜欢打开一个文件夹进行共享而忘记它是开放的,那么你可能更喜欢 Snapdrop。这是一个开源项目,你可以自己运行,也可以使用互联网上的演示实例通过 WebRTC 连接计算机。WebRTC 可以通过 Web 浏览器实现点对点的连接,也就是说同一网络上的两个用户可以通过 Snapdrop 找到对方,然后直接进行通信,而不需要通过外部服务器。

 title=

一旦两个或更多的客户端连接了同一个 Snapdrop 服务,用户就可以通过本地网络来回交换文件和聊天信息。传输的速度很快,而且你的数据也保持在本地。

VLC

流媒体服务比以往任何时候都更常见,但我在音乐和电影方面有非常规的口味,所以典型的服务似乎很少有我想要的东西。幸运的是,通过连接到媒体驱动器,我可以很容易地将自己的内容从我的电脑上传送到我的房子各个角落。例如,当我想在电脑显示器以外的屏幕上观看一部电影时,我可以在我的网络上串流电影文件,并通过任何可以接收 HTTP 的应用来播放它,无论该应用是在我的电视、游戏机还是手机上。

VLC 可以轻松设置流媒体。事实上,它是媒体菜单中的一个选项,或者你可以按下键盘 Ctrl+S。将一个文件或一组文件添加到你的流媒体队列中,然后点击 Stream 按钮。

 title=

VLC 通过配置向导来帮助你决定流媒体数据时使用什么协议。我倾向于使用 HTTP,因为它通常在任何设备上可用。当 VLC 开始播放文件时,请进入播放文件计算机的 IP 或主机名以及给它分配的端口 (当使用 HTTP 时,默认是 8080), 然后坐下来享受。

PulseAudio

我最喜欢的现代 Linux 功能之一是 PulseAudio。Pulse 为 Linux 上的音频实现了惊人的灵活性,包括可自动发现的本地网络流媒体。这个功能对我来说的好处是,我可以在办公室的工作站上播放播客和技术会议视频,并通过手机串流音频。无论我走进厨房、休息室还是后院最远的地方,我都能获得完美的音频。此功能在 PulseAudio 之前很久就存在,但是 Pulse 使它像单击按钮一样容易。

需要进行一些设置。首先,你必须确保安装 PulseAudio 设置包(paprefs),以便在 PulseAudio 配置中启用网络音频。

 title=

paprefs 中,启用网络访问你的本地声音设备,可能不需要认证(假设你信任本地网络上的其他人),并启用你的计算机作为 Multicast/RTP 发送者。我通常只选择串流通过我的扬声器播放的任何音频,但你可以在 Pulse 输出选项卡中创建一个单独的音频设备,这样你就可以准确地选择串流的内容。你在这里有三个选项:

  • 串流任何在扬声器上播放的音频
  • 串流所有输出的声音
  • 只将音频直接串流到多播设备(按需)。

一旦启用,你的声音就会串流到网络中,并可被其他本地 Linux 设备接收。这是简单和动态的音频共享。

分享的不仅仅是代码

Linux 是共享的。它在服务器领域很有名,因为它很擅长服务。无论是提供音频流、视频流、文件,还是出色的用户体验,每一台 Linux 电脑都是一台出色的 Linux 服务器。


via: https://opensource.com/article/21/3/linux-server

作者:Seth Kenlon 选题:lujun9972 译者:geekpi 校对:wxy

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

漏洞赏金计划吸引了更多道德黑客,但有 2/3 是为了好玩

漏洞赏金计划的目标是为道德黑客提供一种手段,在网络犯罪分子利用这些漏洞之前发现并披露这些漏洞。漏洞赏金平台 HackerOne 的《2021 年黑客报告》显示,发现安全漏洞并提交给漏洞赏金项目的道德黑客数量在去年增加了近三分之二。仅在去年,道德黑客就通过向 HackerOne 漏洞赏金计划披露漏洞获得了 4000 万美元的收入,而 2019 年则为 1900 万美元。

虽然发现漏洞在道德黑客行为中起到的经济激励作用:76% 接受调查的人表示他们是为了赚钱,但 85% 参与漏洞赏金计划的人表示他们是为了学习,而三分之二的人是为了好玩。

Linux 基金会推出 sigstore 软件真实性验证服务

这项服务使得软件开发者能够轻松地对各种软件工件进行签名,比如发行文件、容器镜像以及二进制文件。通过将签名材料存储在防篡改的公共日志中,Linux 基金会希望 sigstore 签名服务能够在开源软件开发领域普及开来。

此前很少有开源项目使用加密签名手段,主要原因是软件维护人员在密钥管理、撤销和公钥分配等工作方面遇到了一定的挑战。通常他们将公钥存储在易受黑客攻击的网站上,甚至放置在公共 git 存储库的 README 文件中。但随着 sigstore 公共服务的推出,我们可以使用临时密钥和信任根来规避上述问题(后者源于开放且可审核的公共透明日志)。

公钥是需要公开的,但是确保公开的公钥是可信的才是安全和信任的基石,这项服务可以有效而便捷地为开源软件分发提供安全保障。

世界上最强大的超算“富岳”即将全面投入运行

经过 7 年研制,世界上最快的超级计算机“富岳”在日本正式建成,现在已经可以供研究人员开始使用。其交付工作已于 2020 年 5 月完成,其后一直在对其进行试用。目前,该计算机已全面开放共享使用,日本信息科学与技术研究机构已选定 74 个研究项目,将于下月起实施。

“富岳”已经连续两届蝉联 Top500 榜首,其性能为 442 petaflops,遥遥领先于竞争对手,是榜单上第二名 IBM 的 Summit 的 3 倍,后者的性能为 148.8 petaflops。

超算竞赛极大的推高了计算力对世界的影响,在重要领域极有价值。不过,更重要的是,研发出来的超算能有合适的应用发挥其能力。

基于 Linux 的 Moodle 学习管理系统进行远程教学。

 title=

这次大流行对远程教育的需求比以往任何时候都更大。使得像 Moodle 这样的 学习管理系统 learning management system (LMS)比以往任何时候都重要,因为越来越多的学校教育是借助虚拟现实技术的提供。

Moodle 是用 PHP 编写的免费 LMS,并以开源 GNU 公共许可证(GPL)分发。它是由 Martin Dougiamas 开发的,自 2002 年发布以来一直在不断发展。Moodle 可用于混合学习、远程学习、 翻转课堂 flipped classroom 和其他形式的在线学习。目前,全球有超过 1.9 亿用户 和 145,000 个注册的 Moodle 网站。

我曾作为 Moodle 管理员、教师和学生等角色使用过 Moodle,在本文中,我将向你展示如何设置并开始使用它。

在 Linux 系统上安装 Moodle

Moodle 对 系统要求 适中,并且有大量文档可为你提供帮助。我最喜欢的安装方法是从 Turnkey Linux 下载并制作 ISO,然后在 VirtualBox 中安装 Moodle 网站。

首先,下载 Moodle ISO 保存到电脑中。

下一步,安装 VirtualBox 的 Linux 命令行如下:

$ sudo apt install virtualbox

或,

$ sudo dnf install virtualbox

当下载完成后,启动 VirtualBox 并在控制台中选择“ 新建 New ”按钮。

 title=

选择使用的虚拟机的名称、操作系统(Linux)和 Linux 类型(例如 Debian 64 位)。

 title=

下一步,配置虚拟机内存大小,使用默认值 1024 MB。接下来选择 “ 动态分配 dynamically allocated ”虚拟磁盘并在虚拟机中添加 Moodle.iso 镜像。

 title=

将你的网络设置从 NAT 更改为 “ 桥接模式 Bridged adapter ”。然后启动虚拟机并安装 ISO 以创建 Moodle 虚拟机。在安装过程中,系统将提示为 root 帐户、MySQL 和Moodle 创建密码。Moodle 密码必须至少包含八个字符,至少一个大写字母和至少一个特殊字符。

重启虚拟机。安装完成后,请确保将 Moodle 应用配置内容记录在安全的地方。(安装后,可以根据需要删除 ISO 文件。)

 title=

重要提示,在互联网上的任何人还看不到你的 Moodle 实例。它仅存在于你的本地网络中:现在只有建筑物中与你连接到相同的路由器或 wifi 接入点的人可以访问你的站点。全世界的互联网无法连接到它,因为你位于防火墙(可能嵌入在路由器中,还可能嵌入在计算机中)的后面。有关网络配置的更多信息,请阅读 Seth Kenlon 关于 打开端口和通过防火墙进行流量路由 的文章。

开始使用 Moodle

现在你可以登录到 Moodle 机器并熟悉该软件了。使用默认的用户名 admin 和创建 Moodle VM 时设置的密码登录 Moodle。

 title=

首次登录后,你将看到初始的 Moodle 网站的主仪表盘。

 title=

默认的应用名称是 “Turnkey Moodle”,但是可以很容易地对其进行更改以适合你的学校、课堂或其他需要和选择。要使你的 Moodle 网站个性化,请在用户界面左侧的菜单中,选择“站点首页Site home”。然后,点击屏幕右侧的 “ 设置 Settings ” 图标,然后选择 “ 编辑设置 Edit settings ”。

 title=

你可以根据需要更改站点名称,并添加简短名称和站点描述。

 title=

确保滚动到底部并保存更改。现在,你的网站已定制好。

 title=

默认类别为其他,这不会帮助人们识别你网站的目的。要添加类别,请返回主仪表盘,然后从左侧菜单中选择 “ 站点管理 Site administration ”。 在 “ 课程 Courses ”下,选择 “ 添加类别 Add a category ”并输入有关你的网站的详细信息。

 title=

要添加课程,请返回 “ 站点管理 Site administration ”,然后单击 “ 添加新课程 Add a new course ”。你将看到一系列选项,例如为课程命名、提供简短名称、设定类别以及设置课程的开始和结束日期。你还可以为课程形式设置选项,例如社交、每周式课程、主题,以及其外观、文件上传大小、完成情况跟踪等等。

 title=

添加和管理用户

现在,你已经设置了课程,你可以添加用户。有多种方法可以做到这一点。如果你是家庭教师,则手动输入是一个不错的开始。Moodle 支持基于电子邮件的注册、LDAPShibboleth(口令或暗语) 和许多其他方式等。校区和其他较大的机构可以用逗号分隔的文件上传用户。也可以批量添加密码,并在首次登录时强制更改密码。有关更多信息,一定要查阅 Moodle 文档

Moodle 是一个非常细化的、面向许可的环境。使用 Moodle 的菜单将策略和角色分配给用户并执行这些分配很容易。

Moodle 中有许多角色,每个角色都有特定的特权和许可。默认角色有管理员、课程创建者、教师、非编辑教师、学生、来宾和经过身份验证的用户,但你可以添加其他角色。

为课程添加内容

一旦搭建了 Moodle 网站并设置了课程,就可以向课程中添加内容。Moodle 拥有创建出色内容所需要的所有工具,并且它建立在强调 社会建构主义 观点的坚实教学法之上。

我创建了一个名为 “Code with Mu” 的示例课程。它在 “ 编程 Programming ” 类别和 “Python” 子类别中。

 title=

我为课程选择了每周式课程,默认为四个星期。使用编辑工具,我隐藏了除课程第一周以外的所有内容。这样可以确保我的学生始终专注于材料。

作为教师或 Moodle 管理员,我可以通过单击 “ 添加活动或资源 Add an activity or resource ” 来将活动添加到每周的教学中。

 title=

我会看到一个弹出窗口,其中包含可以分配给我的学生的各种活动。

 title=

Moodle 的工具和活动使我可以轻松地创建学习材料,并以一个简短的测验来结束一周的学习。

 title=

你可以使用 1600 多个插件来扩展 Moodle,包括新的活动、问题类型,与其他系统的集成等等。例如,BigBlueButton 插件支持幻灯片共享、白板、音频和视频聊天以及分组讨论。其他值得考虑的包括用于视频会议的 Jitsi 插件、抄袭检查器 和用于颁发徽章的 开放徽章工厂

继续探索 Moodle

Moodle 是一个功能强大的 LMS,我希望此介绍能引起你的兴趣,以了解更多信息。有很多出色的 指南 可以帮助你提高技能,如果想要查看 Moodle 的内容,可以在其 演示站点 上查看运行中的 Moodle;如果你想了解 Moodle 的底层结构或为开发做出 贡献,也可以访问 Moodle 的源代码。如果你喜欢在旅途中工作,Moodle 也有一款出色的 移动应用,适用于 iOS 和 Android。在 TwitterFacebookLinkedIn 上关注 Moodle,以了解最新消息。


via: https://opensource.com/article/20/10/moodle

作者:Don Watkins 选题:lujun9972 译者:stevenzdg988 校对:wxy

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