万维网的创建者正在创建一个新的去中心化网络
万维网(WWW)的创建者 Tim Berners-Lee 公布了他计划创建一个新的去中心化网络,该网络中的数据将由用户控制。<a href="https://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a> 以创建万维网而闻名,万维网就是你现在所知的互联网。二十多年之后,Tim 致力于将互联网从企业巨头的掌控中解放出来,并通过去中心化网络Decentralized Web将权力交回给人们。Berners-Lee 对互联网“强权”们处理用户数据的方式感到不满。所以他<a href="https://medium.com/@timberners_lee/one-small-step-for-the-web-87f92217d085">开始致力于他自己的开源项目</a> Solid “来将在网络上的权力归还给人们”。Solid 改变了当前用户必须将个人数据交给数字巨头以换取可感知价值的模型。正如我们都已发现的那样,这不符合我们的最佳利益。Solid 是我们如何驱动网络进化以恢复平衡 —— 以一种革命性的方式,让我们每个人完全地控制数据,无论数据是否是个人数据。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/233504e8jyvyv3jq3dk0dd.jpg">Tim Berners-Lee is creating a decentralized web with open source project Solid</a>基本上,<a href="https://solid.inrupt.com/">Solid</a> 是一个使用现有网络构建的平台,在这里你可以创建自己的 “pod” (个人数据存储)。你决定这个 “pod” 将被托管在哪里,谁将访问哪些数据元素以及数据将如何通过这个 pod 分享。Berners-Lee 相信 Solid “将以一种全新的方式,授权个人、开发者和企业来构思、构建和寻找创新、可信和有益的应用和服务。”开发人员需要将 Solid 集成进他们的应用程序和网站…
万维网(WWW)的创建者 Tim Berners-Lee 公布了他计划创建一个新的去中心化网络,该网络中的数据将由用户控制。<a href="https://en.wikipedia.org/wiki/Tim_Berners-Lee">Tim Berners-Lee</a> 以创建万维网而闻名,万维网就是你现在所知的互联网。二十多年之后,Tim 致力于将互联网从企业巨头的掌控中解放出来,并通过去中心化网络Decentralized Web将权力交回给人们。Berners-Lee 对互联网“强权”们处理用户数据的方式感到不满。所以他<a href="https://medium.com/@timberners_lee/one-small-step-for-the-web-87f92217d085">开始致力于他自己的开源项目</a> Solid “来将在网络上的权力归还给人们”。Solid 改变了当前用户必须将个人数据交给数字巨头以换取可感知价值的模型。正如我们都已发现的那样,这不符合我们的最佳利益。Solid 是我们如何驱动网络进化以恢复平衡 —— 以一种革命性的方式,让我们每个人完全地控制数据,无论数据是否是个人数据。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/24/233504e8jyvyv3jq3dk0dd.jpg">Tim Berners-Lee is creating a decentralized web with open source project Solid</a>基本上,<a href="https://solid.inrupt.com/">Solid</a> 是一个使用现有网络构建的平台,在这里你可以创建自己的 “pod” (个人数据存储)。你决定这个 “pod” 将被托管在哪里,谁将访问哪些数据元素以及数据将如何通过这个 pod 分享。Berners-Lee 相信 Solid “将以一种全新的方式,授权个人、开发者和企业来构思、构建和寻找创新、可信和有益的应用和服务。”开发人员需要将 Solid 集成进他们的应用程序和网站…
6 个托管 git 仓库的地方
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。Media
via https://linux.cn/article-10153-1.html
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。Media
via https://linux.cn/article-10153-1.html
6 个托管 git 仓库的地方
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/143554rszbl3h7iahqcm73.jpg">Media</a>也许你是少数一些没有注意到的人之一,就在之前,<a href="https://www.theverge.com/2018/6/4/17422788/microsoft-github-acquisition-official-deal">微软收购了 GitHub</a>。两家公司达成了共识。微软在近些年已经变成了开源的有力支持者,而 GitHub 从成立起,就已经成为了大量的开源项目的实际代码库。然而,最近发生的这次收购可能会带给你一些苦恼。毕竟公司的收购让你意识到了你的开源代码放在了一个商业平台上。可能你现在还没准备好迁移到其他的平台上去,但是至少这可以给你提供一些可选项。让我们找找网上现在都有哪些可用的平台。选择之一: GitHub严格来说,这是一个合格的选项。<a href="https://github.com/">GitHub</a> 历史上没有什么失信的地方,而且微软后来也一直笑对开源。把你的项目继续放在 GitHub 上,保持观望没有什么不可以。它现在依然是最大的软件开发的网络社区,同时还有许多对于问题追踪、代码审查、持续集成、通用的代码管理等很有用的工具。而且它还是基于 Git 的,这是每个人都喜欢的开源版本控制系统。你的代码还是你的代码。如果没有出现什么问题,那保持原状是没错的。选择之二: GitLab<a href="https://gitlab.com">GitLab</a> 是考虑替代代码库平台时的主要竞争者。它是完全开源…
GitHub 被收购导致一些用户去寻找这个流行的代码仓库的替代品。这里有一些你可以考虑一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/143554rszbl3h7iahqcm73.jpg">Media</a>也许你是少数一些没有注意到的人之一,就在之前,<a href="https://www.theverge.com/2018/6/4/17422788/microsoft-github-acquisition-official-deal">微软收购了 GitHub</a>。两家公司达成了共识。微软在近些年已经变成了开源的有力支持者,而 GitHub 从成立起,就已经成为了大量的开源项目的实际代码库。然而,最近发生的这次收购可能会带给你一些苦恼。毕竟公司的收购让你意识到了你的开源代码放在了一个商业平台上。可能你现在还没准备好迁移到其他的平台上去,但是至少这可以给你提供一些可选项。让我们找找网上现在都有哪些可用的平台。选择之一: GitHub严格来说,这是一个合格的选项。<a href="https://github.com/">GitHub</a> 历史上没有什么失信的地方,而且微软后来也一直笑对开源。把你的项目继续放在 GitHub 上,保持观望没有什么不可以。它现在依然是最大的软件开发的网络社区,同时还有许多对于问题追踪、代码审查、持续集成、通用的代码管理等很有用的工具。而且它还是基于 Git 的,这是每个人都喜欢的开源版本控制系统。你的代码还是你的代码。如果没有出现什么问题,那保持原状是没错的。选择之二: GitLab<a href="https://gitlab.com">GitLab</a> 是考虑替代代码库平台时的主要竞争者。它是完全开源…
如何使用 Apache Web 服务器配置多个站点
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。Media
via https://linux.cn/article-10154-1.html
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。Media
via https://linux.cn/article-10154-1.html
如何使用 Apache Web 服务器配置多个站点
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/153824lkmrkizcwr47w9oc.jpg">Media</a>在我的<a href="https://linux.cn/article-9506-1.html">上一篇文章</a>中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用单个 Apache 实例来服务多个站点。注意:我写这篇文章的环境是 Fedora 27 虚拟机,配置了 Apache 2.4.29。如果你用另一个发行版或不同的 Fedora 版本,那么你使用的命令以及配置文件的位置和内容可能会有所不同。正如我之前的文章中提到的,Apache 的所有配置文件都位于 /etc/httpd/conf 和 /etc/httpd/conf.d。默认情况下,站点的数据位于 /var/www 中。对于多个站点,你需要提供多个位置,每个位置对应托管的站点。基于名称的虚拟主机使用基于名称的虚拟主机,你可以为多个站点使用一个 IP 地址。现代 Web 服务器,包括 Apache,使用指定 URL 的 hostname 部分来确定哪个虚拟 Web 主机响应页面请求。这仅仅需要比一个站点更多的配置。即使你只从单个站点开始,我也建议你将其设置为虚拟主机,这样可以在以后更轻松地添加更多站点。在本文中,我将从上一篇文章中我们停止的地方开始,因此你需要设置原来的站点,即基于名称的虚拟站点。准备原来的站点在设置第二个站点之前,你需要为现有网站提供基于名称的虚拟主机。如果你现在没有站点,<a…
如何在流行而强大的 Apache Web 服务器上托管两个或多个站点。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/153824lkmrkizcwr47w9oc.jpg">Media</a>在我的<a href="https://linux.cn/article-9506-1.html">上一篇文章</a>中,我解释了如何为单个站点配置 Apache Web 服务器,事实证明这很容易。在这篇文章中,我将向你展示如何使用单个 Apache 实例来服务多个站点。注意:我写这篇文章的环境是 Fedora 27 虚拟机,配置了 Apache 2.4.29。如果你用另一个发行版或不同的 Fedora 版本,那么你使用的命令以及配置文件的位置和内容可能会有所不同。正如我之前的文章中提到的,Apache 的所有配置文件都位于 /etc/httpd/conf 和 /etc/httpd/conf.d。默认情况下,站点的数据位于 /var/www 中。对于多个站点,你需要提供多个位置,每个位置对应托管的站点。基于名称的虚拟主机使用基于名称的虚拟主机,你可以为多个站点使用一个 IP 地址。现代 Web 服务器,包括 Apache,使用指定 URL 的 hostname 部分来确定哪个虚拟 Web 主机响应页面请求。这仅仅需要比一个站点更多的配置。即使你只从单个站点开始,我也建议你将其设置为虚拟主机,这样可以在以后更轻松地添加更多站点。在本文中,我将从上一篇文章中我们停止的地方开始,因此你需要设置原来的站点,即基于名称的虚拟站点。准备原来的站点在设置第二个站点之前,你需要为现有网站提供基于名称的虚拟主机。如果你现在没有站点,<a…
用 GNOME Boxes 下载一个操作系统镜像
最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。Media
via https://linux.cn/article-10155-1.html
最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。Media
via https://linux.cn/article-10155-1.html
用 GNOME Boxes 下载一个操作系统镜像
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164805hworcwv1opopf1fo.jpg">Media</a>Boxes 是 GNOME 上的虚拟机应用。最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。你现在可以在 Boxes 中自动安装那些发行版以及像 FreeBSD 和 FreeDOS 这样的操作系统,甚至还包括红帽企业 Linux。红帽开发者计划包括了一个<a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">红帽企业版 Linux 的免费订阅</a>。 使用<a href="http://developers.redhat.com">红帽开发者</a>帐户,Boxes 可以自动设置一个名为 Developer Suite 订阅的 RHEL 虚拟机。 下面是它的工作原理。红帽企业版 Linux要创建一个红帽企业版 Linux 的虚拟机,启动 Boxes,点击“新建”。从源选择列表中选择“下载一个镜像”。在顶部,点击“红帽企业版 Linux”。这将会打开网址为 <a href="http://developers.redhat.com">developers.redhat.com</a> 的一个 Web 表单。使用已有的红帽开发者账号登录,或是新建一个。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164806ax9crr1tk2209tx9.png">Media</a>如果这是一个新帐号,Boxes 在继续之前需要一些额外的信息。这一步需要在账户中开启开发者订阅。还要确保 <a href="https://www.redhat.com/wapps/tnc/termsack?event%5B%5D=signIn">接受条款和条件</a>,这样可以在之后的注册中节省一步。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807e0jqboi4m85bge5s.png">Media</a>点击“提交”,然后就会开始下载安装磁盘镜像。下载需要的时间取决于你的网络状况。在这期间你可以去喝杯茶或者咖啡歇息一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807qmbqbvt4cbkdsv44.png">Media</a>等介质下载完成(一般位于 <code>~/Downloads</code> ),Boxes 会有一个“快速…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164805hworcwv1opopf1fo.jpg">Media</a>Boxes 是 GNOME 上的虚拟机应用。最近 Boxes 添加了一个新的特性,使得它在运行不同的 Linux 发行版时更加容易。你现在可以在 Boxes 中自动安装那些发行版以及像 FreeBSD 和 FreeDOS 这样的操作系统,甚至还包括红帽企业 Linux。红帽开发者计划包括了一个<a href="https://developers.redhat.com/blog/2016/03/31/no-cost-rhel-developer-subscription-now-available/">红帽企业版 Linux 的免费订阅</a>。 使用<a href="http://developers.redhat.com">红帽开发者</a>帐户,Boxes 可以自动设置一个名为 Developer Suite 订阅的 RHEL 虚拟机。 下面是它的工作原理。红帽企业版 Linux要创建一个红帽企业版 Linux 的虚拟机,启动 Boxes,点击“新建”。从源选择列表中选择“下载一个镜像”。在顶部,点击“红帽企业版 Linux”。这将会打开网址为 <a href="http://developers.redhat.com">developers.redhat.com</a> 的一个 Web 表单。使用已有的红帽开发者账号登录,或是新建一个。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164806ax9crr1tk2209tx9.png">Media</a>如果这是一个新帐号,Boxes 在继续之前需要一些额外的信息。这一步需要在账户中开启开发者订阅。还要确保 <a href="https://www.redhat.com/wapps/tnc/termsack?event%5B%5D=signIn">接受条款和条件</a>,这样可以在之后的注册中节省一步。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807e0jqboi4m85bge5s.png">Media</a>点击“提交”,然后就会开始下载安装磁盘镜像。下载需要的时间取决于你的网络状况。在这期间你可以去喝杯茶或者咖啡歇息一下。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/25/164807qmbqbvt4cbkdsv44.png">Media</a>等介质下载完成(一般位于 <code>~/Downloads</code> ),Boxes 会有一个“快速…
使用 Podman 以非 root 用户身份运行 Linux 容器
但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。Media
via https://linux.cn/article-10156-1.html
但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。Media
via https://linux.cn/article-10156-1.html
使用 Podman 以非 root 用户身份运行 Linux 容器
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/082845qyjxxcmccjjm6cn0.jpg">Media</a>Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程 —— 包括文件系统、进程和网络的隔离。容器有助于实现可移植性 —— 应用可以在容器镜像中与其依赖项一起分发,并可在几乎任何有容器运行时环境的 Linux 系统上运行。虽然容器技术存在了很长时间,但 Linux 容器是由 Docker 而得到了广泛推广。 “Docker” 这个词可以指几个不同的东西,包括容器技术和工具,周围的社区,或者 Docker Inc. 公司。但是,在本文中,我将用来指管理 Linux 容器的技术和工具。什么是 Docker<a href="https://docs.docker.com/">Docker</a> 是一个以 root 身份在你的系统上运行的守护程序,它利用 Linux 内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像 —— 与容器注册库交互、存储映像、管理容器版本等。它基本上支持运行单个容器所需的所有操作。但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。然而,Podman 在解决这两个问题。Podman 介绍<a href="https://podman.io/">Podman</a> 是一个容器运行时环境,提供与 Docker 非常相似的功能。正如已经提示的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。让我们看看使用 Podman 运行…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/082845qyjxxcmccjjm6cn0.jpg">Media</a>Linux 容器是由 Linux 内核所提供的具有特定隔离功能的进程 —— 包括文件系统、进程和网络的隔离。容器有助于实现可移植性 —— 应用可以在容器镜像中与其依赖项一起分发,并可在几乎任何有容器运行时环境的 Linux 系统上运行。虽然容器技术存在了很长时间,但 Linux 容器是由 Docker 而得到了广泛推广。 “Docker” 这个词可以指几个不同的东西,包括容器技术和工具,周围的社区,或者 Docker Inc. 公司。但是,在本文中,我将用来指管理 Linux 容器的技术和工具。什么是 Docker<a href="https://docs.docker.com/">Docker</a> 是一个以 root 身份在你的系统上运行的守护程序,它利用 Linux 内核的功能来管理正在运行的容器。除了运行容器之外,它还可以轻松管理容器镜像 —— 与容器注册库交互、存储映像、管理容器版本等。它基本上支持运行单个容器所需的所有操作。但即使 Docker 是管理 Linux 容器的一个非常方便的工具,它也有两个缺点:它是一个需要在你的系统上运行的守护进程,并且需要以 root 权限运行,这可能有一定的安全隐患。然而,Podman 在解决这两个问题。Podman 介绍<a href="https://podman.io/">Podman</a> 是一个容器运行时环境,提供与 Docker 非常相似的功能。正如已经提示的那样,它不需要在你的系统上运行任何守护进程,并且它也可以在没有 root 权限的情况下运行。让我们看看使用 Podman 运行…
为什么 Linux 用户应该试一试 Rust
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。Media
via https://linux.cn/article-10157-1.html
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。Media
via https://linux.cn/article-10157-1.html
为什么 Linux 用户应该试一试 Rust
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/090805l94nk97sz87e1yld.jpg">Media</a>Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(<a href="https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted">2016</a>、<a href="https://insights.stackoverflow.com/survey/2017#technology-most-loved-dreaded-and-wanted-languages">2017</a> 和 <a href="https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages">2018</a>)在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。Rust 优点:内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。通用 —— Rust 是适用于任何类型编程的语言快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。高效 —— Rust 是为了便于并发编程而构建的。面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。得到很好的支持 —— Rust 有一个令人印#…
在 Linux 系统上安装 Rust 编程语言可能是你近年来所做的最有价值的事情之一。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/090805l94nk97sz87e1yld.jpg">Media</a>Rust 是一种相当年轻和现代的编程语言,具有许多使其非常灵活而及其安全的功能。数据显示它正在变得非常受欢迎,连续三年(<a href="https://insights.stackoverflow.com/survey/2016#technology-most-loved-dreaded-and-wanted">2016</a>、<a href="https://insights.stackoverflow.com/survey/2017#technology-most-loved-dreaded-and-wanted-languages">2017</a> 和 <a href="https://insights.stackoverflow.com/survey/2018#technology-most-loved-dreaded-and-wanted-languages">2018</a>)在 Stack Overflow 开发者调查中获得“最受喜爱的编程语言”的第一名。Rust 也是开源语言的一种,它具有一系列特殊的功能,使得它可以适应许多不同的编程项目。 它最初源于 2006 年 Mozilla 员工的个人项目,几年后(2009 年)被 Mozilla 选为特别项目,然后在 2010 年宣布供公众使用。Rust 程序运行速度极快,可防止段错误,并能保证线程安全。这些属性使该语言极大地吸引了专注于应用程序安全性的开发人员。Rust 也是一种非常易读的语言,可用于从简单程序到非常大而复杂的项目。Rust 优点:内存安全 —— Rust 不会受到悬空指针、缓冲区溢出或其他与内存相关的错误的影响。它提供内存安全,无回收垃圾。通用 —— Rust 是适用于任何类型编程的语言快速 —— Rust 在性能上与 C / C++ 相当,但具有更好的安全功能。高效 —— Rust 是为了便于并发编程而构建的。面向项目 —— Rust 具有内置的依赖关系和构建管理系统 Cargo。得到很好的支持 —— Rust 有一个令人印#…
使用 Lakka Linux 将你的旧 PC 变成复古游戏主机
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。Media
via https://linux.cn/article-10158-1.html
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。Media
via https://linux.cn/article-10158-1.html
使用 Lakka Linux 将你的旧 PC 变成复古游戏主机
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。你可能已经了解<a href="https://itsfoss.com/lightweight-linux-beginners/">专门用于复活旧计算机的 Linux 发行版</a>。但是你知道有个 Linux 发行版专门是为了将旧电脑变成复古游戏主机创建的么?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095819b5enoa7zo8hwwhw7.jpg">Lakka is a Linux distribution specially for retrogaming</a>认识下 <a href="http://www.lakka.tv/">Lakka</a>,它是一个轻量级 Linux 发行版,可以将旧的或低端的计算机(如 Raspberry Pi)变成一个完整的复古游戏主机,当我说复古游戏主机时,我对主机部分很认真。如果你曾经使用过 Xbox 和 PlayStation,你就会知道典型的主机界面是什么样的。Lakka 提供类似的界面和类似的体验。我稍后会谈到“体验”。先看一下界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095625eagrgrffrug44vfw.gif">Media</a><em>Lakka 复古游戏界面</em>Lakka:为复古游戏而生的 Linux 发行版Lakka 是 <a href="https://www.retroarch.com/">RetroArch</a> 和 <a href="https://www.libretro.com/">Libretro</a> 生态系统的官方 Linux 发行版。RetroArch 是复古游戏模拟器和游戏引擎的前端。你在上面的视频中看到的界面只是 RetroArch。如果你是只想玩复古游戏,只需在当前的 Linux 发行版中安装 RetroArch 即可。Lakka 提供了带有 Libretro 核心的 RetroArch。因此,你会获得一个预先配置完的操作系统,你可以安装或插入 live USB 并开始玩游戏。Lakka 是轻量级的,你可以将它安装在大多数老系统或单板计算机上,如 Raspberry Pi 上。它支持大量的模拟器。你只需要在系统上下载 ROM,Lakka…
如果你有一台吃灰的旧计算机,你可以用 Lakka Linux 将它变成像 PlayStation 那样的复古游戏主机。你可能已经了解<a href="https://itsfoss.com/lightweight-linux-beginners/">专门用于复活旧计算机的 Linux 发行版</a>。但是你知道有个 Linux 发行版专门是为了将旧电脑变成复古游戏主机创建的么?<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095819b5enoa7zo8hwwhw7.jpg">Lakka is a Linux distribution specially for retrogaming</a>认识下 <a href="http://www.lakka.tv/">Lakka</a>,它是一个轻量级 Linux 发行版,可以将旧的或低端的计算机(如 Raspberry Pi)变成一个完整的复古游戏主机,当我说复古游戏主机时,我对主机部分很认真。如果你曾经使用过 Xbox 和 PlayStation,你就会知道典型的主机界面是什么样的。Lakka 提供类似的界面和类似的体验。我稍后会谈到“体验”。先看一下界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/26/095625eagrgrffrug44vfw.gif">Media</a><em>Lakka 复古游戏界面</em>Lakka:为复古游戏而生的 Linux 发行版Lakka 是 <a href="https://www.retroarch.com/">RetroArch</a> 和 <a href="https://www.libretro.com/">Libretro</a> 生态系统的官方 Linux 发行版。RetroArch 是复古游戏模拟器和游戏引擎的前端。你在上面的视频中看到的界面只是 RetroArch。如果你是只想玩复古游戏,只需在当前的 Linux 发行版中安装 RetroArch 即可。Lakka 提供了带有 Libretro 核心的 RetroArch。因此,你会获得一个预先配置完的操作系统,你可以安装或插入 live USB 并开始玩游戏。Lakka 是轻量级的,你可以将它安装在大多数老系统或单板计算机上,如 Raspberry Pi 上。它支持大量的模拟器。你只需要在系统上下载 ROM,Lakka…
使用 Argbash 来改进你的 Bash 脚本
Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。与其他 bash 模块的通用代码不同,它生成你的脚本所需的最少代码。Media
via https://linux.cn/article-10159-1.html
Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。与其他 bash 模块的通用代码不同,它生成你的脚本所需的最少代码。Media
via https://linux.cn/article-10159-1.html
使用 Argbash 来改进你的 Bash 脚本
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/092854nrvazffgzfnqaxfw.png">Media</a>你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了<a href="https://argbash.readthedocs.io/">一个很好的附加组件</a>,它可以帮助你生成更好的脚本。不用担心,它不会花费你很多时间或精力。为什么需要 Argbash?Bash 是一种解释性的命令行语言,没有标准库。因此,如果你编写 bash 脚本并希望命令行界面符合 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">POSIX</a> 和 <a href="https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html">GNU CLI</a> 标准,那么你一般只有两种选择:直接编写为脚本量身定制的参数解析功能(可使用内置的 getopts)。使用外部 bash 模块。第一个选项看起来非常愚蠢,因为正确实现接口并非易事。但是,从 <a href="https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash">Stack Overflow</a> 到 <a href="http://wiki.bash-hackers.org/howto/getopts_tutorial">Bash Hackers</a> wiki 的各种站点上,它却被认为是最佳选择。第二个选项看起来更聪明,但使用模块有它自己的问题。最大的问题是你必须将其代码与脚本捆绑在一起。这可能意味着:要么,你将库作为单独的文件分发或者,在脚本的开头包含库代码有两个文件而不是一个是愚蠢的;但采用一个文件的话,会让一堆上千行的复杂代码污染了你的脚本。这是 Argbash <a href="https://argbash.readthedocs.io/">项目诞生</a>的主要原因。Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/092854nrvazffgzfnqaxfw.png">Media</a>你编写或维护过有意义的 bash 脚本吗?如果回答是,那么你可能希望它们以标准且健壮的方式接收命令行参数。Fedora 最近得到了<a href="https://argbash.readthedocs.io/">一个很好的附加组件</a>,它可以帮助你生成更好的脚本。不用担心,它不会花费你很多时间或精力。为什么需要 Argbash?Bash 是一种解释性的命令行语言,没有标准库。因此,如果你编写 bash 脚本并希望命令行界面符合 <a href="http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html">POSIX</a> 和 <a href="https://www.gnu.org/prep/standards/html_node/Command_002dLine-Interfaces.html">GNU CLI</a> 标准,那么你一般只有两种选择:直接编写为脚本量身定制的参数解析功能(可使用内置的 getopts)。使用外部 bash 模块。第一个选项看起来非常愚蠢,因为正确实现接口并非易事。但是,从 <a href="https://stackoverflow.com/questions/192249/how-do-i-parse-command-line-arguments-in-bash">Stack Overflow</a> 到 <a href="http://wiki.bash-hackers.org/howto/getopts_tutorial">Bash Hackers</a> wiki 的各种站点上,它却被认为是最佳选择。第二个选项看起来更聪明,但使用模块有它自己的问题。最大的问题是你必须将其代码与脚本捆绑在一起。这可能意味着:要么,你将库作为单独的文件分发或者,在脚本的开头包含库代码有两个文件而不是一个是愚蠢的;但采用一个文件的话,会让一堆上千行的复杂代码污染了你的脚本。这是 Argbash <a href="https://argbash.readthedocs.io/">项目诞生</a>的主要原因。Argbash 是一个代码生成器,它为你的脚本生成一个量身定制的解析库。…
一窥你安装的 Linux 软件包
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。Media
via https://linux.cn/article-10160-1.html
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。Media
via https://linux.cn/article-10160-1.html
一窥你安装的 Linux 软件包
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/095619ks5en1rsgvguoojs.jpg">Media</a>你有没有想过你的 Linux 系统上安装了几千个软件包? 是的,我说的是“千”。 即使是相当一般的 Linux 系统也可能安装了上千个软件包。 有很多方法可以获得这些包到底是什么包的详细信息。首先,要在基于 Debian 的发行版(如 Ubuntu)上快速得到已安装的软件包数量,请使用 apt list --installed, 如下:<pre class="prettyprint linenums">$ apt list --installed | wc -l2067</pre>这个数字实际上多了一个,因为输出中包含了 “Listing …” 作为它的第一行。 这个命令会更准确:<pre class="prettyprint linenums">$ apt list --installed | grep -v "^Listing" | wc -l2066</pre>要获得所有这些包的详细信息,请按以下方式浏览列表:<pre class="prettyprint linenums">$ apt list --installed | moreListing...a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [installed]account-plugin-aim/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-google/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-jabber/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-salut/xenial,now 3.12.11-0ubuntu3 amd64 [installed]</pre>这需要观察很多细节 —— 特别是让你的眼睛在所有 2000 多个文件中徘徊。 它包含包名称、版本等,以及更多但并不是以最易于我们人类解析的显示信息。 dpkg-query 使得描述更容易理解,但这些描述会塞满你的命令窗口,除非窗口非常宽。 因此,为了让此篇文章更容易阅读,下面的数据显示已经分成了左右两侧。左侧:<pre class="prettyprint linenums">$ dpkg-query -l | moreDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/…
这些最有用的命令可以让你了解安装在你的 Debian 类的 Linux 系统上的包的情况。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/095619ks5en1rsgvguoojs.jpg">Media</a>你有没有想过你的 Linux 系统上安装了几千个软件包? 是的,我说的是“千”。 即使是相当一般的 Linux 系统也可能安装了上千个软件包。 有很多方法可以获得这些包到底是什么包的详细信息。首先,要在基于 Debian 的发行版(如 Ubuntu)上快速得到已安装的软件包数量,请使用 apt list --installed, 如下:<pre class="prettyprint linenums">$ apt list --installed | wc -l2067</pre>这个数字实际上多了一个,因为输出中包含了 “Listing …” 作为它的第一行。 这个命令会更准确:<pre class="prettyprint linenums">$ apt list --installed | grep -v "^Listing" | wc -l2066</pre>要获得所有这些包的详细信息,请按以下方式浏览列表:<pre class="prettyprint linenums">$ apt list --installed | moreListing...a11y-profile-manager-indicator/xenial,now 0.1.10-0ubuntu3 amd64 [installed]account-plugin-aim/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-facebook/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-flickr/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-google/xenial,xenial,now 0.12+16.04.20160126-0ubuntu1 all [installed]account-plugin-jabber/xenial,now 3.12.11-0ubuntu3 amd64 [installed]account-plugin-salut/xenial,now 3.12.11-0ubuntu3 amd64 [installed]</pre>这需要观察很多细节 —— 特别是让你的眼睛在所有 2000 多个文件中徘徊。 它包含包名称、版本等,以及更多但并不是以最易于我们人类解析的显示信息。 dpkg-query 使得描述更容易理解,但这些描述会塞满你的命令窗口,除非窗口非常宽。 因此,为了让此篇文章更容易阅读,下面的数据显示已经分成了左右两侧。左侧:<pre class="prettyprint linenums">$ dpkg-query -l | moreDesired=Unknown/Install/Remove/Purge/Hold| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)||/…
为什么 Python 这么慢?
对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?Media
via https://linux.cn/article-10161-1.html
对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?Media
via https://linux.cn/article-10161-1.html
为什么 Python 这么慢?
Python 现在越来越火,已经迅速扩张到包括 DevOps、数据科学、Web 开发、信息安全等各个领域当中。然而,相比起 Python 扩张的速度,Python 代码的运行速度就显得有点逊色了。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/114058v8793uq037m9007f.jpg">Media在代码运行速度方面,Java、C、C++、C# 和 Python 要如何进行比较呢?并没有一个放之四海而皆准的标准,因为具体结果很大程度上取决于运行的程序类型,而语言基准测试Computer Language Benchmarks Games可以作为<a href="http://algs4.cs.princeton.edu/faq/">衡量的一个方面。根据我这些年来进行语言基准测试的经验来看,Python 比很多语言运行起来都要慢。无论是使用 <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT 编译器的 C#、Java,还是使用 <a href="https://en.wikipedia.org/wiki/Ahead-of-time_compilation">AOT 编译器的 C、C++,又或者是 JavaScript 这些解释型语言,Python 都<a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/python.html">比它们运行得慢。注意:对于文中的 &ldquo<a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/titter.gif">Mediaython” ,一般指 CPython 这个官方的实现。当然我也会在本文中提到其它语言的 Python 实现。我要回答的是这个问题:对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?主流的说法有这些:“是全局解释器锁Global Interpreter Lock(GIL)的原因”“是因为 Python 是解释型语言而不是编译型语言”“是因为 Python 是一种动态类型的语言”哪一个才是是影响 Python 运行效率的主要原因呢?是全局解释器锁的原因吗?现在很多计算机都配ã…
Python 现在越来越火,已经迅速扩张到包括 DevOps、数据科学、Web 开发、信息安全等各个领域当中。然而,相比起 Python 扩张的速度,Python 代码的运行速度就显得有点逊色了。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/27/114058v8793uq037m9007f.jpg">Media在代码运行速度方面,Java、C、C++、C# 和 Python 要如何进行比较呢?并没有一个放之四海而皆准的标准,因为具体结果很大程度上取决于运行的程序类型,而语言基准测试Computer Language Benchmarks Games可以作为<a href="http://algs4.cs.princeton.edu/faq/">衡量的一个方面。根据我这些年来进行语言基准测试的经验来看,Python 比很多语言运行起来都要慢。无论是使用 <a href="https://en.wikipedia.org/wiki/Just-in-time_compilation">JIT 编译器的 C#、Java,还是使用 <a href="https://en.wikipedia.org/wiki/Ahead-of-time_compilation">AOT 编译器的 C、C++,又或者是 JavaScript 这些解释型语言,Python 都<a href="https://benchmarksgame-team.pages.debian.net/benchmarksgame/faster/python.html">比它们运行得慢。注意:对于文中的 &ldquo<a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/titter.gif">Mediaython” ,一般指 CPython 这个官方的实现。当然我也会在本文中提到其它语言的 Python 实现。我要回答的是这个问题:对于一个类似的程序,Python 要比其它语言慢 2 到 10 倍不等,这其中的原因是什么?又有没有改善的方法呢?主流的说法有这些:“是全局解释器锁Global Interpreter Lock(GIL)的原因”“是因为 Python 是解释型语言而不是编译型语言”“是因为 Python 是一种动态类型的语言”哪一个才是是影响 Python 运行效率的主要原因呢?是全局解释器锁的原因吗?现在很多计算机都配ã…
坚实的 React 基础:初学者指南
这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。Media
via https://linux.cn/article-10162-1.html
这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。Media
via https://linux.cn/article-10162-1.html
坚实的 React 基础:初学者指南
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104728nzehe82q5h9b8fqj.png">Media</a>在过去的几个月里,我一直在使用 React 和 React-Native。我已经发布了两个作为产品的应用, <a href="https://kivenaa.com/">Kiven Aa</a>(React)和 <a href="https://play.google.com/store/apps/details?id=com.pollenchat.android">Pollen Chat</a>(React Native)。当我开始学习 React 时,我找了一些不仅仅是教我如何用 React 写应用的东西(一个博客,一个视频,一个课程,等等),我也想让它帮我做好面试准备。我发现的大部分资料都集中在某一单一方面上。所以,这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。如果你更喜欢视频形式,我在 [YouTube][<a href="https://youtu.be/WJ6PgzI16I4">https://youtu.be/WJ6PgzI16I4</a>] 上传了整个课程,请去看看。让我们开始……React.js 是一个用于构建用户界面的 JavaScript 库你可以构建各种单页应用程序。例如,你希望在用户界面上实时显示变化的聊天软件和电子商务门户。一切都是组件React 应用由组件组成,数量繁多且互相嵌套。你或许会问:”可什么是组件呢?“组件是可重用的代码段,它定义了某些功能在 UI 上的外观和行为。 比如,按钮就是一个组件。让我们看看下面的计算器,当你尝试计算 2 + 2 = 4 -1 = 3(简单的数学题)时,你会在 Google 上看到这个计算器。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104744a002jj0m8gwkxw2m.png">Media</a><em>红色标记表示组件</em>如上图所示,这个计算器有…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104728nzehe82q5h9b8fqj.png">Media</a>在过去的几个月里,我一直在使用 React 和 React-Native。我已经发布了两个作为产品的应用, <a href="https://kivenaa.com/">Kiven Aa</a>(React)和 <a href="https://play.google.com/store/apps/details?id=com.pollenchat.android">Pollen Chat</a>(React Native)。当我开始学习 React 时,我找了一些不仅仅是教我如何用 React 写应用的东西(一个博客,一个视频,一个课程,等等),我也想让它帮我做好面试准备。我发现的大部分资料都集中在某一单一方面上。所以,这篇文章针对的是那些希望理论与实践完美结合的观众。我会告诉你一些理论,以便你了解幕后发生的事情,然后我会向你展示如何编写一些 React.js 代码。如果你更喜欢视频形式,我在 [YouTube][<a href="https://youtu.be/WJ6PgzI16I4">https://youtu.be/WJ6PgzI16I4</a>] 上传了整个课程,请去看看。让我们开始……React.js 是一个用于构建用户界面的 JavaScript 库你可以构建各种单页应用程序。例如,你希望在用户界面上实时显示变化的聊天软件和电子商务门户。一切都是组件React 应用由组件组成,数量繁多且互相嵌套。你或许会问:”可什么是组件呢?“组件是可重用的代码段,它定义了某些功能在 UI 上的外观和行为。 比如,按钮就是一个组件。让我们看看下面的计算器,当你尝试计算 2 + 2 = 4 -1 = 3(简单的数学题)时,你会在 Google 上看到这个计算器。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201810/28/104744a002jj0m8gwkxw2m.png">Media</a><em>红色标记表示组件</em>如上图所示,这个计算器有…