在 Linux 上自定义 bash 命令提示符
尽管很多插件或工具都可以很轻易地满足这一需求,但我们也可以不使用插件和工具,自己手动自定义一些基本的显示方式,例如添加或者修改某些元素、更改前景色、更改背景色等等。Media
via https://linux.cn/article-10280-1.html
尽管很多插件或工具都可以很轻易地满足这一需求,但我们也可以不使用插件和工具,自己手动自定义一些基本的显示方式,例如添加或者修改某些元素、更改前景色、更改背景色等等。Media
via https://linux.cn/article-10280-1.html
在 Linux 上自定义 bash 命令提示符
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/111117mkydge86ndem2xfp.jpg">Media</a>众所周知,<strong>bash</strong>(the <strong>B</strong>ourne-<strong>A</strong>gain <strong>Sh</strong>ell)是目前绝大多数 Linux 发行版使用的默认 shell。本文将会介绍如何通过添加颜色和样式来自定义 bash 命令提示符的显示。尽管很多插件或工具都可以很轻易地满足这一需求,但我们也可以不使用插件和工具,自己手动自定义一些基本的显示方式,例如添加或者修改某些元素、更改前景色、更改背景色等等。在 Linux 中自定义 bash 命令提示符在 bash 中,我们可以通过更改 $PS1 环境变量的值来自定义 bash 命令提示符。一般情况下,bash 命令提示符会是以下这样的形式:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/111320oltgbmz8l3eg891u.png">Media</a>在上图这种默认显示形式当中,“sk” 是我的用户名,而 “ubuntuserver” 是我的主机名。只要插入一些以反斜杠开头的特殊转义字符串,就可以按照你的喜好修改命令提示符了。下面我来举几个例子。在开始之前,我强烈建议你预先备份 ~/.bashrc 文件。<pre class="prettyprint linenums">$ cp ~/.bashrc ~/.bashrc.bak</pre>更改 bash 命令提示符中的 username@hostname 部分如上所示,bash 命令提示符一般都带有 “username@hostname” 部分,这个部分是可以修改的。只需要编辑 ~/.bashrc 文件:<pre class="prettyprint linenums">$ vi ~/.bashrc</pre>在文件的最后添加一行:<pre class="prettyprint linenums">PS1="ostechnix> "</pre>将上面的 “ostechnix” 替换为任意一个你想使用的单词,然后按 ESC 并输入 :wq 保存、退出文件。执行以下命令使刚才的修改生效:<pre class="prettyprint linenums">$ source ~/.bashrc</pre>你就…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/111117mkydge86ndem2xfp.jpg">Media</a>众所周知,<strong>bash</strong>(the <strong>B</strong>ourne-<strong>A</strong>gain <strong>Sh</strong>ell)是目前绝大多数 Linux 发行版使用的默认 shell。本文将会介绍如何通过添加颜色和样式来自定义 bash 命令提示符的显示。尽管很多插件或工具都可以很轻易地满足这一需求,但我们也可以不使用插件和工具,自己手动自定义一些基本的显示方式,例如添加或者修改某些元素、更改前景色、更改背景色等等。在 Linux 中自定义 bash 命令提示符在 bash 中,我们可以通过更改 $PS1 环境变量的值来自定义 bash 命令提示符。一般情况下,bash 命令提示符会是以下这样的形式:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/111320oltgbmz8l3eg891u.png">Media</a>在上图这种默认显示形式当中,“sk” 是我的用户名,而 “ubuntuserver” 是我的主机名。只要插入一些以反斜杠开头的特殊转义字符串,就可以按照你的喜好修改命令提示符了。下面我来举几个例子。在开始之前,我强烈建议你预先备份 ~/.bashrc 文件。<pre class="prettyprint linenums">$ cp ~/.bashrc ~/.bashrc.bak</pre>更改 bash 命令提示符中的 username@hostname 部分如上所示,bash 命令提示符一般都带有 “username@hostname” 部分,这个部分是可以修改的。只需要编辑 ~/.bashrc 文件:<pre class="prettyprint linenums">$ vi ~/.bashrc</pre>在文件的最后添加一行:<pre class="prettyprint linenums">PS1="ostechnix> "</pre>将上面的 “ostechnix” 替换为任意一个你想使用的单词,然后按 ESC 并输入 :wq 保存、退出文件。执行以下命令使刚才的修改生效:<pre class="prettyprint linenums">$ source ~/.bashrc</pre>你就…
如何在 Anbox 上安装 Google Play 商店及启用 ARM 支持
Anbox (Anroid in a Box)是一个自由开源工具,它允许你在 Linux 上运行 Android 应用程序。默认情况下,Anbox 没有 Google Play 商店或 ARM 应用支持。Media
via https://linux.cn/article-10281-1.html
Anbox (Anroid in a Box)是一个自由开源工具,它允许你在 Linux 上运行 Android 应用程序。默认情况下,Anbox 没有 Google Play 商店或 ARM 应用支持。Media
via https://linux.cn/article-10281-1.html
如何在 Anbox 上安装 Google Play 商店及启用 ARM 支持
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/115100j1mj9blltf1njvav.png">Media<a href="https://anbox.io/">Anbox (Anroid in a Box)是一个自由开源工具,它允许你在 Linux 上运行 Android 应用程序。它的工作原理是在 LXC 容器中运行 Android 运行时环境,重新创建 Android 的目录结构作为可挂载的 loop 镜像,同时使用本机 Linux 内核来执行应用。据其网站所述,它的主要特性是安全性、性能、集成和趋同(不同外形尺寸缩放)。使用 Anbox,每个 Android 应用或游戏就像系统应用一样都在一个单独的窗口中启动,它们的行为或多或少类似于常规窗口,显示在启动器中,可以平铺等等。默认情况下,Anbox 没有 Google Play 商店或 ARM 应用支持。要安装应用,你必须下载每个应用的 APK 并使用 adb 手动安装。此外,默认情况下不能使用 Anbox 安装 ARM 应用或游戏 —— 尝试安装 ARM 应用会显示以下错误:<pre class="prettyprint linenums">Failed to install PACKAGE.NAME.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]</pre>你可以在 Anbox 中手动设置 Google Play 商店和 ARM 应用支持(通过 libhoudini),但这是一个非常复杂的过程。为了更容易地在 Anbox 上安装 Google Play 商店和 Google Play 服务,并让它支持 ARM 应用程序和游戏(使用 libhoudini),<a href="https://geeks-r-us.de/2017/08/26/android-apps-auf-dem-linux-desktop/">geeks-r-us.de(文章是德语)上的人创建了一个自动执行这些任务的脚本。在使用之前,我想明确指出,即使在集成 libhoudini 来支持 ARM 后,也并非所有 Android 应用和游戏都能在 Anbox 中运行。某些 Android 应用和游戏可能根本不会出现在 Google Play 商&#…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/115100j1mj9blltf1njvav.png">Media<a href="https://anbox.io/">Anbox (Anroid in a Box)是一个自由开源工具,它允许你在 Linux 上运行 Android 应用程序。它的工作原理是在 LXC 容器中运行 Android 运行时环境,重新创建 Android 的目录结构作为可挂载的 loop 镜像,同时使用本机 Linux 内核来执行应用。据其网站所述,它的主要特性是安全性、性能、集成和趋同(不同外形尺寸缩放)。使用 Anbox,每个 Android 应用或游戏就像系统应用一样都在一个单独的窗口中启动,它们的行为或多或少类似于常规窗口,显示在启动器中,可以平铺等等。默认情况下,Anbox 没有 Google Play 商店或 ARM 应用支持。要安装应用,你必须下载每个应用的 APK 并使用 adb 手动安装。此外,默认情况下不能使用 Anbox 安装 ARM 应用或游戏 —— 尝试安装 ARM 应用会显示以下错误:<pre class="prettyprint linenums">Failed to install PACKAGE.NAME.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]</pre>你可以在 Anbox 中手动设置 Google Play 商店和 ARM 应用支持(通过 libhoudini),但这是一个非常复杂的过程。为了更容易地在 Anbox 上安装 Google Play 商店和 Google Play 服务,并让它支持 ARM 应用程序和游戏(使用 libhoudini),<a href="https://geeks-r-us.de/2017/08/26/android-apps-auf-dem-linux-desktop/">geeks-r-us.de(文章是德语)上的人创建了一个自动执行这些任务的脚本。在使用之前,我想明确指出,即使在集成 libhoudini 来支持 ARM 后,也并非所有 Android 应用和游戏都能在 Anbox 中运行。某些 Android 应用和游戏可能根本不会出现在 Google Play 商&#…
2018 重温 Unix 哲学
在现代微服务环境中,构建小型、单一的应用程序的旧策略又再一次流行了起来。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/123158rm6qqqjgdffp16dm.jpg">Media</a>1984 年,Rob Pike 和 Brian W. Kernighan 在 AT&T 贝尔实验室技术期刊上发表了名为 “<a href="http://harmful.cat-v.org/cat-v/">Unix 环境编程</a>” 的文章,其中他们使用 BSD 的 cat -v 例子来认证 Unix 哲学。简而言之,Unix 哲学是:构建小型、单一的应用程序 —— 不管用什么语言 —— 只做一件小而美的事情,用 stdin / stdout 进行通信,并通过管道进行连接。听起来是不是有点耳熟?是的,我也这么认为。这就是 James Lewis 和 Martin Fowler 给出的 <a href="https://martinfowler.com/articles/microservices.html">微服务的定义</a> 。简单来说,微服务架构的风格是将单个 应用程序开发为一套小型服务的方法,每个服务都运行在它的进程中,并用轻量级机制进行通信,通常是 HTTP 资源 API 。虽然一个 *nix 程序或者是一个微服务本身可能非常局限甚至不是很有用,但是当这些独立工作的单元组合在一起的时候就显示出了它们真正的好处和强大。*nix程序 vs 微服务下面的表格对比了 *nix 环境中的程序(例如 cat 或 lsof)与微服务环境中的程序。 *nix 程序微服务执行单元程序使用 stdin/stdout使用 HTTP 或 gRPC API数据流管道?可配置和参数化命令行参数、环境变量和配置文件JSON/YAML 文档发现包管理器、man、makeDNS、环境变量、OpenAPI让我们详细的看看每一行。执行单元*nix 系统(如 Linux)中的执行单元是一个可执行的文件(二进制或者…
在现代微服务环境中,构建小型、单一的应用程序的旧策略又再一次流行了起来。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/123158rm6qqqjgdffp16dm.jpg">Media</a>1984 年,Rob Pike 和 Brian W. Kernighan 在 AT&T 贝尔实验室技术期刊上发表了名为 “<a href="http://harmful.cat-v.org/cat-v/">Unix 环境编程</a>” 的文章,其中他们使用 BSD 的 cat -v 例子来认证 Unix 哲学。简而言之,Unix 哲学是:构建小型、单一的应用程序 —— 不管用什么语言 —— 只做一件小而美的事情,用 stdin / stdout 进行通信,并通过管道进行连接。听起来是不是有点耳熟?是的,我也这么认为。这就是 James Lewis 和 Martin Fowler 给出的 <a href="https://martinfowler.com/articles/microservices.html">微服务的定义</a> 。简单来说,微服务架构的风格是将单个 应用程序开发为一套小型服务的方法,每个服务都运行在它的进程中,并用轻量级机制进行通信,通常是 HTTP 资源 API 。虽然一个 *nix 程序或者是一个微服务本身可能非常局限甚至不是很有用,但是当这些独立工作的单元组合在一起的时候就显示出了它们真正的好处和强大。*nix程序 vs 微服务下面的表格对比了 *nix 环境中的程序(例如 cat 或 lsof)与微服务环境中的程序。 *nix 程序微服务执行单元程序使用 stdin/stdout使用 HTTP 或 gRPC API数据流管道?可配置和参数化命令行参数、环境变量和配置文件JSON/YAML 文档发现包管理器、man、makeDNS、环境变量、OpenAPI让我们详细的看看每一行。执行单元*nix 系统(如 Linux)中的执行单元是一个可执行的文件(二进制或者…
举例说明 alias 和 unalias 命令
一个记住这些如此长的命令的简便方式就是为这些命令创建一个别名。你可以为任何经常重复调用的常用命令创建别名,而不仅仅是长命令。Media
via https://linux.cn/article-10283-1.html
一个记住这些如此长的命令的简便方式就是为这些命令创建一个别名。你可以为任何经常重复调用的常用命令创建别名,而不仅仅是长命令。Media
via https://linux.cn/article-10283-1.html
举例说明 alias 和 unalias 命令
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/224429noagpp9h5hbi8bk8.jpg">Media</a>如果不是一个命令行重度用户的话,过了一段时间之后,你就可能已经忘记了这些复杂且冗长的 Linux 命令了。当然,有很多方法可以让你 <a href="https://www.ostechnix.com/easily-recall-forgotten-linux-commands/">回想起遗忘的命令</a>。你可以简单的 <a href="https://www.ostechnix.com/save-commands-terminal-use-demand/">保存常用的命令</a> 然后按需使用。也可以在终端里 <a href="https://www.ostechnix.com/bookmark-linux-commands-easier-repeated-invocation/">标记重要的命令</a>,然后在任何时候你想要的时间使用它们。而且,Linux 有一个内建命令 history 可以帮助你记忆这些命令。另外一个记住这些如此长的命令的简便方式就是为这些命令创建一个别名。你可以为任何经常重复调用的常用命令创建别名,而不仅仅是长命令。通过这种方法,你不必再过多地记忆这些命令。这篇文章中,我们将会在 Linux 环境下举例说明 alias 和 unalias 命令。alias 命令alias 使用一个用户自定义的字符串来代替一个或者一串命令(包括多个选项、参数)。这个字符串可以是一个简单的名字或者缩写,不管这个命令原来多么复杂。alias 命令已经预装在 shell(包括 BASH、Csh、Ksh 和 Zsh 等) 当中。alias 的通用语法是:<pre class="prettyprint linenums">alias [alias-name[=string]...]</pre>接下来看几个例子。列出别名可能在你的系统中已经设置了一些别名。有些应用在你安装它们的时候可能已经自动创建了别名。要查看已经存在的别名,运行:<pre class="prettyprint linenums">$ alias</pre>或者,<pre class="prettyprint…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/224429noagpp9h5hbi8bk8.jpg">Media</a>如果不是一个命令行重度用户的话,过了一段时间之后,你就可能已经忘记了这些复杂且冗长的 Linux 命令了。当然,有很多方法可以让你 <a href="https://www.ostechnix.com/easily-recall-forgotten-linux-commands/">回想起遗忘的命令</a>。你可以简单的 <a href="https://www.ostechnix.com/save-commands-terminal-use-demand/">保存常用的命令</a> 然后按需使用。也可以在终端里 <a href="https://www.ostechnix.com/bookmark-linux-commands-easier-repeated-invocation/">标记重要的命令</a>,然后在任何时候你想要的时间使用它们。而且,Linux 有一个内建命令 history 可以帮助你记忆这些命令。另外一个记住这些如此长的命令的简便方式就是为这些命令创建一个别名。你可以为任何经常重复调用的常用命令创建别名,而不仅仅是长命令。通过这种方法,你不必再过多地记忆这些命令。这篇文章中,我们将会在 Linux 环境下举例说明 alias 和 unalias 命令。alias 命令alias 使用一个用户自定义的字符串来代替一个或者一串命令(包括多个选项、参数)。这个字符串可以是一个简单的名字或者缩写,不管这个命令原来多么复杂。alias 命令已经预装在 shell(包括 BASH、Csh、Ksh 和 Zsh 等) 当中。alias 的通用语法是:<pre class="prettyprint linenums">alias [alias-name[=string]...]</pre>接下来看几个例子。列出别名可能在你的系统中已经设置了一些别名。有些应用在你安装它们的时候可能已经自动创建了别名。要查看已经存在的别名,运行:<pre class="prettyprint linenums">$ alias</pre>或者,<pre class="prettyprint…
如何在终端中浏览 Stack Overflow
你可以如你在 Google 搜索中那样直接用英语查询,然后它会使用 Google 和 Stackoverflow API 来搜索给定的查询。Media
via https://linux.cn/article-10284-1.html
你可以如你在 Google 搜索中那样直接用英语查询,然后它会使用 Google 和 Stackoverflow API 来搜索给定的查询。Media
via https://linux.cn/article-10284-1.html
如何在终端中浏览 Stack Overflow
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/234754jwxn6uz09e515frm.png">Media</a>前段时间,我们写了一篇关于 <a href="https://www.ostechnix.com/search-browse-stack-overflow-website-commandline/">SoCLI</a> 的文章,它是一个从命令行搜索和浏览 Stack Overflow 网站的 python 脚本。今天,我们将讨论一个名为 “how2” 的类似工具。它是一个命令行程序,可以从终端浏览 Stack Overflow。你可以如你在 <a href="https://www.ostechnix.com/google-search-navigator-enhance-keyboard-navigation-in-google-search/">Google 搜索</a>中那样直接用英语查询,然后它会使用 Google 和 Stackoverflow API 来搜索给定的查询。它是使用 NodeJS 编写的自由开源程序。使用 how2 从终端浏览 Stack Overflow由于 how2 是一个 NodeJS 包,我们可以使用 Npm 包管理器安装它。如果你尚未安装 Npm 和 NodeJS,请参考以下指南。在安装 Npm 和 NodeJS 后,运行以下命令安装 how2。<pre class="prettyprint linenums">$ npm install -g how2</pre>现在让我们看下如何使用这个程序浏览 Stack Overflow。使用 how2 搜索 Stack Overflow 站点的典型用法是:<pre class="prettyprint linenums">$ how2 <search-query></pre>例如,我将搜索如何创建 tgz 存档。<pre class="prettyprint linenums">$ how2 create archive tgz</pre>哎呀!我收到以下错误。<pre class="prettyprint linenums">/home/sk/.nvm/versions/node/v9.11.1/lib/node_modules/how2/node_modules/devnull/transports/transport.js:59Transport.prototype.__proto__ = EventEmitter.prototype; ^ TypeError: Cannot read property 'prototype' of undefined at Object.<anonymous> (/home/sk/.nvm/versions/node/v9.11.1/lib/node_modules/how2/node_modules/devnull/transports/transport.js:59:46) at Module._compile (internal/modules/cjs/loader.js:654:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10) at Module.load (internal/modules/cjs/loader.js:566:32) at tryModuleLoad (internal/modules/cjs/loader.js:506:12) at Function.Module._load (internal/modules/cjs/loader.js:498:3) at Module.require (internal/modules/cjs/loader.js:598:17) at require (internal/modules/cjs/helpers.js:11:18) at Object.<anonymous> (/home/sk/.nvm/versions/node/v9.11.1/lib/node_modules/how2/node_modules/devnull/transports/stream.js:8:17) at Module._compile (internal/modules/cjs/loader.js:654:30)</pre>我可能遇到了一个 bug。我希望它在未来版本中得到修复。但是,我在<a href="https://github.com/santinic/how2/issues/79">这里</a>找到…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/27/234754jwxn6uz09e515frm.png">Media</a>前段时间,我们写了一篇关于 <a href="https://www.ostechnix.com/search-browse-stack-overflow-website-commandline/">SoCLI</a> 的文章,它是一个从命令行搜索和浏览 Stack Overflow 网站的 python 脚本。今天,我们将讨论一个名为 “how2” 的类似工具。它是一个命令行程序,可以从终端浏览 Stack Overflow。你可以如你在 <a href="https://www.ostechnix.com/google-search-navigator-enhance-keyboard-navigation-in-google-search/">Google 搜索</a>中那样直接用英语查询,然后它会使用 Google 和 Stackoverflow API 来搜索给定的查询。它是使用 NodeJS 编写的自由开源程序。使用 how2 从终端浏览 Stack Overflow由于 how2 是一个 NodeJS 包,我们可以使用 Npm 包管理器安装它。如果你尚未安装 Npm 和 NodeJS,请参考以下指南。在安装 Npm 和 NodeJS 后,运行以下命令安装 how2。<pre class="prettyprint linenums">$ npm install -g how2</pre>现在让我们看下如何使用这个程序浏览 Stack Overflow。使用 how2 搜索 Stack Overflow 站点的典型用法是:<pre class="prettyprint linenums">$ how2 <search-query></pre>例如,我将搜索如何创建 tgz 存档。<pre class="prettyprint linenums">$ how2 create archive tgz</pre>哎呀!我收到以下错误。<pre class="prettyprint linenums">/home/sk/.nvm/versions/node/v9.11.1/lib/node_modules/how2/node_modules/devnull/transports/transport.js:59Transport.prototype.__proto__ = EventEmitter.prototype; ^ TypeError: Cannot read property 'prototype' of undefined at Object.<anonymous> (/home/sk/.nvm/versions/node/v9.11.1/lib/node_modules/how2/node_modules/devnull/transports/transport.js:59:46) at Module._compile (internal/modules/cjs/loader.js:654:30) at Object.Module._extensions..js (internal/modules/cjs/loader.js:665:10) at Module.load (internal/modules/cjs/loader.js:566:32) at tryModuleLoad (internal/modules/cjs/loader.js:506:12) at Function.Module._load (internal/modules/cjs/loader.js:498:3) at Module.require (internal/modules/cjs/loader.js:598:17) at require (internal/modules/cjs/helpers.js:11:18) at Object.<anonymous> (/home/sk/.nvm/versions/node/v9.11.1/lib/node_modules/how2/node_modules/devnull/transports/stream.js:8:17) at Module._compile (internal/modules/cjs/loader.js:654:30)</pre>我可能遇到了一个 bug。我希望它在未来版本中得到修复。但是,我在<a href="https://github.com/santinic/how2/issues/79">这里</a>找到…
GPL 合作承诺的发展历程
GPL 合作承诺GPL Cooperation Commitment消除了开发者对许可证失效的顾虑,从而达到促进技术创新的目的。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/101831jxng18z1101p1xms.png">Media</a>假如能免于顾虑,技术创新和发展将会让世界发生天翻地覆的改变。<a href="https://gplcc.github.io/gplcc/">GPL 合作承诺</a>GPL Cooperation Commitment就这样应运而生,只为通过公平、一致、可预测的许可证来让科技创新无后顾之忧。去年,我曾经写过一篇文章,讨论了许可证对开源软件下游用户的影响。在进行研究的时候,我就发现许可证的约束力并不强,而且很多情况下是不可预测的。因此,我在文章中提出了一个能使开源许可证具有一致性和可预测性的潜在解决方案。但我只考虑到了诸如通过法律系统立法的“传统”方法。2017 年 11 月,RedHat、IBM、Google 和 Facebook 提出了这种我从未考虑过的非传统的解决方案:GPL 合作承诺。GPL 合作承诺规定了 GPL 公平一致执行的方式。我认为,GPL 合作承诺之所以有这么深刻的意义,有以下两个原因:一是许可证的公平性和一致性对于开源社区的发展来说至关重要,二是法律对不可预测性并不容忍。了解 GPL要了解 GPL 合作承诺,首先要了解什么是 GPL。GPL 是 <a href="https://www.gnu.org/licenses/licenses.en.html">GNU 通用许可证</a>GNU General Public License的缩写,它是一个公共版权的开源许可证,这就意味着开源软件的分发者必须向下游用户公开源代码。GPL 还禁止对下游的使用作出限制,要求&#…
GPL 合作承诺GPL Cooperation Commitment消除了开发者对许可证失效的顾虑,从而达到促进技术创新的目的。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/101831jxng18z1101p1xms.png">Media</a>假如能免于顾虑,技术创新和发展将会让世界发生天翻地覆的改变。<a href="https://gplcc.github.io/gplcc/">GPL 合作承诺</a>GPL Cooperation Commitment就这样应运而生,只为通过公平、一致、可预测的许可证来让科技创新无后顾之忧。去年,我曾经写过一篇文章,讨论了许可证对开源软件下游用户的影响。在进行研究的时候,我就发现许可证的约束力并不强,而且很多情况下是不可预测的。因此,我在文章中提出了一个能使开源许可证具有一致性和可预测性的潜在解决方案。但我只考虑到了诸如通过法律系统立法的“传统”方法。2017 年 11 月,RedHat、IBM、Google 和 Facebook 提出了这种我从未考虑过的非传统的解决方案:GPL 合作承诺。GPL 合作承诺规定了 GPL 公平一致执行的方式。我认为,GPL 合作承诺之所以有这么深刻的意义,有以下两个原因:一是许可证的公平性和一致性对于开源社区的发展来说至关重要,二是法律对不可预测性并不容忍。了解 GPL要了解 GPL 合作承诺,首先要了解什么是 GPL。GPL 是 <a href="https://www.gnu.org/licenses/licenses.en.html">GNU 通用许可证</a>GNU General Public License的缩写,它是一个公共版权的开源许可证,这就意味着开源软件的分发者必须向下游用户公开源代码。GPL 还禁止对下游的使用作出限制,要求&#…
i3 窗口管理器使 Linux 更美好
通过键盘操作的 i3 平铺窗口管理器使用 Linux 桌面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/114731z171znh8978ngn8a.jpg">Media</a>Linux(和一般的开源软件)最美好的一点是自由 —— 可以在不同的替代方案中进行选择以满足我们的需求。我使用 Linux 已经很长时间了,但我从来没有对可选用的桌面环境完全满意过。直到去年,<a href="https://xfce.org/">Xfce</a> 还是我认为在功能和性能之间的平和最接近满意的一个桌面环境。然后我发现了 <a href="https://i3wm.org/">i3</a>,这是一个改变了我的生活的惊人的软件。i3 是一个平铺窗口管理器。窗口管理器的目标是控制窗口系统中窗口的外观和位置。窗口管理器通常用作功能齐全的桌面环境 (如 GONME 或 Xfce ) 的一部分,但也有一些可以用作独立的应用程序。平铺式窗口管理器会自动排列窗口,以不重叠的方式占据整个屏幕。其他流行的平铺式窗口管理器还有 <a href="https://code.google.com/archive/p/wmii/">wmii</a> 和 <a href="https://xmonad.org/">xmonad</a> 。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/114747cz93iitfkz4w0in0.png">i3 tiled window manager screenshot</a><em>带有三个的 i3 屏幕截图</em>为了获得更好的 Linux 桌面体验,以下是我使用和推荐 i3 窗口管理器的五个首要原因。1、极简艺术i3 速度很快。它既不冗杂、也不花哨。它的设计简单而高效。作为开发人员,我重视这些功能,因为我可以使用更多的功能以丰富我最喜欢的开发工具,或者使用容器或虚拟机在本地测试内容。此外, i3 是一个窗口管理器,与功能齐全的…
通过键盘操作的 i3 平铺窗口管理器使用 Linux 桌面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/114731z171znh8978ngn8a.jpg">Media</a>Linux(和一般的开源软件)最美好的一点是自由 —— 可以在不同的替代方案中进行选择以满足我们的需求。我使用 Linux 已经很长时间了,但我从来没有对可选用的桌面环境完全满意过。直到去年,<a href="https://xfce.org/">Xfce</a> 还是我认为在功能和性能之间的平和最接近满意的一个桌面环境。然后我发现了 <a href="https://i3wm.org/">i3</a>,这是一个改变了我的生活的惊人的软件。i3 是一个平铺窗口管理器。窗口管理器的目标是控制窗口系统中窗口的外观和位置。窗口管理器通常用作功能齐全的桌面环境 (如 GONME 或 Xfce ) 的一部分,但也有一些可以用作独立的应用程序。平铺式窗口管理器会自动排列窗口,以不重叠的方式占据整个屏幕。其他流行的平铺式窗口管理器还有 <a href="https://code.google.com/archive/p/wmii/">wmii</a> 和 <a href="https://xmonad.org/">xmonad</a> 。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/114747cz93iitfkz4w0in0.png">i3 tiled window manager screenshot</a><em>带有三个的 i3 屏幕截图</em>为了获得更好的 Linux 桌面体验,以下是我使用和推荐 i3 窗口管理器的五个首要原因。1、极简艺术i3 速度很快。它既不冗杂、也不花哨。它的设计简单而高效。作为开发人员,我重视这些功能,因为我可以使用更多的功能以丰富我最喜欢的开发工具,或者使用容器或虚拟机在本地测试内容。此外, i3 是一个窗口管理器,与功能齐全的…
使用 Pandoc 将你的书转换成网页和电子书
通过 Markdown 和 Pandoc,可以做到编写一次,发布两次。Media
via https://linux.cn/article-10287-1.html
通过 Markdown 和 Pandoc,可以做到编写一次,发布两次。Media
via https://linux.cn/article-10287-1.html
使用 Pandoc 将你的书转换成网页和电子书
通过 Markdown 和 Pandoc,可以做到编写一次,发布两次。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/182455gxocchrdgd4pkocz.jpg">Media</a>Pandoc 是一个命令行工具,用于将文件从一种标记语言转换为另一种标记语言。在我 <a href="https://linux.cn/article-10228-1.html">对 Pandoc 的简介</a> 一文中,我演示了如何把 Markdown 编写的文本转换为网页、幻灯片和 PDF。在这篇后续文章中,我将深入探讨 <a href="https://pandoc.org/">Pandoc</a>,展示如何从同一个 Markdown 源文件生成网页和 ePub 格式的电子书。我将使用我即将发布的电子书《<a href="https://www.programmingfightclub.com/">面向对象思想的 GRASP 原则</a>》为例进行讲解,这本电子书正是通过以下过程创建的。首先,我将解释这本书使用的文件结构,然后介绍如何使用 Pandoc 生成网页并将其部署在 GitHub 上;最后,我演示了如何生成对应的 ePub 格式电子书。你可以在我的 GitHub 仓库 <a href="https://github.com/kikofernandez/programmingfightclub">Programming Fight Club</a> 中找到相应代码。设置图书结构我用 Markdown 语法完成了所有的写作,你也可以使用 HTML 标记,但是当 Pandoc 将 Markdown 转换为 ePub 文档时,引入的 HTML 标记越多,出现问题的风险就越高。我的书按照每章一个文件的形式进行组织,用 Markdown 的 H1 标记(#)声明每章的标题。你也可以在每个文件中放置多个章节,但将它们放在单独的文件中可以更轻松地查找内容并在以后进行更新。元信息遵循类似的模式,每种输出格式都有自己的元信息文件。元信息文件定义有关…
通过 Markdown 和 Pandoc,可以做到编写一次,发布两次。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/182455gxocchrdgd4pkocz.jpg">Media</a>Pandoc 是一个命令行工具,用于将文件从一种标记语言转换为另一种标记语言。在我 <a href="https://linux.cn/article-10228-1.html">对 Pandoc 的简介</a> 一文中,我演示了如何把 Markdown 编写的文本转换为网页、幻灯片和 PDF。在这篇后续文章中,我将深入探讨 <a href="https://pandoc.org/">Pandoc</a>,展示如何从同一个 Markdown 源文件生成网页和 ePub 格式的电子书。我将使用我即将发布的电子书《<a href="https://www.programmingfightclub.com/">面向对象思想的 GRASP 原则</a>》为例进行讲解,这本电子书正是通过以下过程创建的。首先,我将解释这本书使用的文件结构,然后介绍如何使用 Pandoc 生成网页并将其部署在 GitHub 上;最后,我演示了如何生成对应的 ePub 格式电子书。你可以在我的 GitHub 仓库 <a href="https://github.com/kikofernandez/programmingfightclub">Programming Fight Club</a> 中找到相应代码。设置图书结构我用 Markdown 语法完成了所有的写作,你也可以使用 HTML 标记,但是当 Pandoc 将 Markdown 转换为 ePub 文档时,引入的 HTML 标记越多,出现问题的风险就越高。我的书按照每章一个文件的形式进行组织,用 Markdown 的 H1 标记(#)声明每章的标题。你也可以在每个文件中放置多个章节,但将它们放在单独的文件中可以更轻松地查找内容并在以后进行更新。元信息遵循类似的模式,每种输出格式都有自己的元信息文件。元信息文件定义有关…
什么是 SRE?它和 DevOps 是怎么关联的?
大型企业里 SRE 角色比较常见,不过小公司也需要 SRE。Media
via https://linux.cn/article-10288-1.html
大型企业里 SRE 角色比较常见,不过小公司也需要 SRE。Media
via https://linux.cn/article-10288-1.html
什么是 SRE?它和 DevOps 是怎么关联的?
大型企业里 SRE 角色比较常见,不过小公司也需要 SRE。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/213800k9fd0ic4d9p64qdq.jpg">Media</a>虽然站点可靠性工程师site reliability engineer(SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题,这篇文章解释了 SRE 的含义,还有 SRE 怎样关联 DevOps,以及在工程师团队规模不大的组织里 SRE 该如何工作。什么是站点可靠性工程?谷歌的几个工程师写的《<a href="http://shop.oreilly.com/product/0636920041528.do">SRE:谷歌运维解密</a>》被认为是站点可靠性工程的权威书籍。谷歌的工程副总裁 Ben Treynor Sloss 在二十一世纪初<a href="https://landing.google.com/sre/interview/ben-treynor.html">创造了这个术语</a>。他是这样定义的:“当你让软件工程师设计运维功能时,SRE 就产生了。”虽然系统管理员从很久之前就在写代码,但是过去的很多时候系统管理团队是手动管理机器的。当时他们管理的机器可能有几十台或者上百台,不过当这个数字涨到了几千甚至几十万的时候,就不能简单的靠人去解决问题了。规模如此大的情况下,很明显应该用代码去管理机器(以及机器上运行的软件)。另外,一直到近几年,运维团队和开发团队都还是完全独立的。两个岗位的技能要求也被认为是完全不同的。SRE 的角色想尝试把这两份工作结合起来。在深入探讨什么是 SRE 以及 SRE 如何和开发团…
大型企业里 SRE 角色比较常见,不过小公司也需要 SRE。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/213800k9fd0ic4d9p64qdq.jpg">Media</a>虽然站点可靠性工程师site reliability engineer(SRE)角色在近几年变得流行起来,但是很多人 —— 甚至是软件行业里的 —— 还不知道 SRE 是什么或者 SRE 都干些什么。为了搞清楚这些问题,这篇文章解释了 SRE 的含义,还有 SRE 怎样关联 DevOps,以及在工程师团队规模不大的组织里 SRE 该如何工作。什么是站点可靠性工程?谷歌的几个工程师写的《<a href="http://shop.oreilly.com/product/0636920041528.do">SRE:谷歌运维解密</a>》被认为是站点可靠性工程的权威书籍。谷歌的工程副总裁 Ben Treynor Sloss 在二十一世纪初<a href="https://landing.google.com/sre/interview/ben-treynor.html">创造了这个术语</a>。他是这样定义的:“当你让软件工程师设计运维功能时,SRE 就产生了。”虽然系统管理员从很久之前就在写代码,但是过去的很多时候系统管理团队是手动管理机器的。当时他们管理的机器可能有几十台或者上百台,不过当这个数字涨到了几千甚至几十万的时候,就不能简单的靠人去解决问题了。规模如此大的情况下,很明显应该用代码去管理机器(以及机器上运行的软件)。另外,一直到近几年,运维团队和开发团队都还是完全独立的。两个岗位的技能要求也被认为是完全不同的。SRE 的角色想尝试把这两份工作结合起来。在深入探讨什么是 SRE 以及 SRE 如何和开发团…
如何更换 Ubuntu 系统的 GDM 登录界面背景
Ubuntu 18.04 LTS 桌面系统在登录、锁屏和解锁状态下,我们会看到一个纯紫色的背景。Media
via https://linux.cn/article-10289-1.html
Ubuntu 18.04 LTS 桌面系统在登录、锁屏和解锁状态下,我们会看到一个纯紫色的背景。Media
via https://linux.cn/article-10289-1.html
如何更换 Ubuntu 系统的 GDM 登录界面背景
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/215150y77msel002uj2mu1.png">Media</a>Ubuntu 18.04 LTS 桌面系统在登录、锁屏和解锁状态下,我们会看到一个纯紫色的背景。它是 GDM(GNOME 显示管理器GNOME Display Manager)从 ubuntu 17.04 版本开始使用的默认背景。有一些人可能会不喜欢这个纯色的背景,想换一个酷一点、更吸睛的!如果是这样,你找对地方了。这篇短文将会告诉你如何更换 Ubuntu 18.04 LTS 的 GDM 登录界面的背景。更换 Ubuntu 的登录界面背景这是 Ubuntu 18.04 LTS 桌面系统默认的登录界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/215144j0j43z646fy6jyim.png">Media</a>不管你喜欢与否,你总是会不经意在登录、解屏/锁屏的时面对它。别担心!你可以随便更换一个你喜欢的图片。在 Ubuntu 上更换桌面壁纸和用户的资料图像不难。我们可以点击鼠标就搞定了。但更换解屏/锁屏的背景则需要修改文件 ubuntu.css,它位于 /usr/share/gnome-shell/theme。修改这个文件之前,最好备份一下它。这样我们可以避免出现问题时可以恢复它。<pre class="prettyprint linenums">$ sudo cp /usr/share/gnome-shell/theme/ubuntu.css /usr/share/gnome-shell/theme/ubuntu.css.bak</pre>修改文件 ubuntu.css:<pre class="prettyprint linenums">$ sudo nano /usr/share/gnome-shell/theme/ubuntu.css</pre>在文件中找到关键字 lockDialogGroup,如下行:<pre class="prettyprint linenums">#lockDialogGroup { background: #2c001e url(resource:///org/gnome/shell/theme/noise-texture.png); background-repeat: repeat; }</pre><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/215145vfzummckrueaware.png">Media</a>可以看到,GDM 默认登录的背景图片是 noise-texture.png。现在修改为你自己的图片路径。也可以选择 .jpg 或 .png 格式的文件,两种格式的图片文件都是支持的。修改完成后的文件内容如下:<pre…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/215150y77msel002uj2mu1.png">Media</a>Ubuntu 18.04 LTS 桌面系统在登录、锁屏和解锁状态下,我们会看到一个纯紫色的背景。它是 GDM(GNOME 显示管理器GNOME Display Manager)从 ubuntu 17.04 版本开始使用的默认背景。有一些人可能会不喜欢这个纯色的背景,想换一个酷一点、更吸睛的!如果是这样,你找对地方了。这篇短文将会告诉你如何更换 Ubuntu 18.04 LTS 的 GDM 登录界面的背景。更换 Ubuntu 的登录界面背景这是 Ubuntu 18.04 LTS 桌面系统默认的登录界面。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/215144j0j43z646fy6jyim.png">Media</a>不管你喜欢与否,你总是会不经意在登录、解屏/锁屏的时面对它。别担心!你可以随便更换一个你喜欢的图片。在 Ubuntu 上更换桌面壁纸和用户的资料图像不难。我们可以点击鼠标就搞定了。但更换解屏/锁屏的背景则需要修改文件 ubuntu.css,它位于 /usr/share/gnome-shell/theme。修改这个文件之前,最好备份一下它。这样我们可以避免出现问题时可以恢复它。<pre class="prettyprint linenums">$ sudo cp /usr/share/gnome-shell/theme/ubuntu.css /usr/share/gnome-shell/theme/ubuntu.css.bak</pre>修改文件 ubuntu.css:<pre class="prettyprint linenums">$ sudo nano /usr/share/gnome-shell/theme/ubuntu.css</pre>在文件中找到关键字 lockDialogGroup,如下行:<pre class="prettyprint linenums">#lockDialogGroup { background: #2c001e url(resource:///org/gnome/shell/theme/noise-texture.png); background-repeat: repeat; }</pre><a href="https://dn-linuxcn.qbox.me/data/attachment/album/201811/28/215145vfzummckrueaware.png">Media</a>可以看到,GDM 默认登录的背景图片是 noise-texture.png。现在修改为你自己的图片路径。也可以选择 .jpg 或 .png 格式的文件,两种格式的图片文件都是支持的。修改完成后的文件内容如下:<pre…
IssueHunt:一个新的开源软件打赏平台
即使是 FOSS 也需要资金来继续开发。如果我们不建立让软件持续开发的系统,我们怎能期待更高质量的软件?Media
via https://linux.cn/article-10290-1.html
即使是 FOSS 也需要资金来继续开发。如果我们不建立让软件持续开发的系统,我们怎能期待更高质量的软件?Media
via https://linux.cn/article-10290-1.html