一种新的安全检测的方法
不要只测试已有系统,强安全要求更积极主动的策略。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/123745dk16klj99jpkjw2w.png">Media</a>我们当中有多少人曾说出过下面这句话:“我希望这能起到作用!”?毫无疑问,我们中的大多数人可能都不止一次地说过这句话。这句话不是用来激发信心的,相反它揭示了我们对自身能力和当前正在测试的功能的怀疑。不幸的是,这句话非常好地描述了我们传统的安全模型。我们的运营基于这样的假设,并希望我们实施的控制措施 —— 从 web 应用的漏扫到终端上的杀毒软件 —— 防止恶意的病毒和软件进入我们的系统,损坏或偷取我们的信息。渗透测试通过积极地尝试侵入网络、向 web 应用注入恶意代码或者通过发送钓鱼邮件来传播病毒等等这些步骤来避免我们对假设的依赖。由于我们在不同的安全层面上来发现和渗透漏洞,手动测试无法解决漏洞被主动打开的情况。在安全实验中,我们故意在受控的情形下创造混乱,模拟事故的情形,来客观地检测我们检测、阻止这类问题的能力。“安全实验为分布式系统的安全性实验提供了一种方法,以建立对抗恶意攻击的能力的信心。”在分布式系统的安全性和复杂性方面,需要反复地重申混沌工程界的一句名言,“希望不是一种有效的策略”。我们多久会主动测试一次我们设计或构建的系ń…
不要只测试已有系统,强安全要求更积极主动的策略。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/123745dk16klj99jpkjw2w.png">Media</a>我们当中有多少人曾说出过下面这句话:“我希望这能起到作用!”?毫无疑问,我们中的大多数人可能都不止一次地说过这句话。这句话不是用来激发信心的,相反它揭示了我们对自身能力和当前正在测试的功能的怀疑。不幸的是,这句话非常好地描述了我们传统的安全模型。我们的运营基于这样的假设,并希望我们实施的控制措施 —— 从 web 应用的漏扫到终端上的杀毒软件 —— 防止恶意的病毒和软件进入我们的系统,损坏或偷取我们的信息。渗透测试通过积极地尝试侵入网络、向 web 应用注入恶意代码或者通过发送钓鱼邮件来传播病毒等等这些步骤来避免我们对假设的依赖。由于我们在不同的安全层面上来发现和渗透漏洞,手动测试无法解决漏洞被主动打开的情况。在安全实验中,我们故意在受控的情形下创造混乱,模拟事故的情形,来客观地检测我们检测、阻止这类问题的能力。“安全实验为分布式系统的安全性实验提供了一种方法,以建立对抗恶意攻击的能力的信心。”在分布式系统的安全性和复杂性方面,需要反复地重申混沌工程界的一句名言,“希望不是一种有效的策略”。我们多久会主动测试一次我们设计或构建的系ń…
在 Linux 命令行上拥有一头奶牛
使用 cowsay 实用程序将牛的话语带到你的终端输出。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/132737a4vjqeyp1ndm41vw.png">Media</a>欢迎来到 Linux 命令行玩具第四天。如果这是你第一次访问这个系列,你可能会问自己,什么是命令行玩具。我们也在考虑这一点,但是一般来说,这可能是一个游戏,或者任何简单的娱乐,可以帮助你在终端玩得开心。你们中的一些人会见过我们之前的选中的各种玩具,但是我们希望至少有一个对每个人来说都是新的。因为几乎所有我告诉他这个系列的人都已经问过它了,所以今天的选中的玩具是必须提及的。你也不会认为我们会在不提及 cowsay 的情况下完成这个系列,对吧?cowsay 是一个神奇的实用程序,它将文本作为 ASCII 艺术牛的讲话文本输出。你可能会发现 cowsey 打包在你的默认存储库中,甚至可能已经安装了。对我来说,在 Fedora,像这样安装:<pre class="prettyprint linenums">$ sudo dnf install -y cowsay</pre>然后,用 cowsey 调用它,然后是你的消息。也许你想到昨天我们谈到的 <a href="https://opensource.com/article/18/12/linux-toy-fortune">fortune 应用</a> 连接起来。<pre class="prettyprint linenums">$ fortune | cowsay _________________________________________/ If at first you do succeed, try to hide \\ your astonishment. / ----------------------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||</pre>就这样!cowsay 还有点小变体,称为 cow 文件,通常可以在 /usr/share/cowsay 找到 ,要查看系统上可用的 cow 文件,请在 cowsay 之后使用 -l 。然后,用 -f 试试其中之一。<pre class="prettyprint linenums">$ cowsay -f dragon "Run for cover, I feel a sneeze coming on." _______________________________________/ Run for cover, I feel a sneeze coming \\ on. / -----------------------…
使用 cowsay 实用程序将牛的话语带到你的终端输出。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/132737a4vjqeyp1ndm41vw.png">Media</a>欢迎来到 Linux 命令行玩具第四天。如果这是你第一次访问这个系列,你可能会问自己,什么是命令行玩具。我们也在考虑这一点,但是一般来说,这可能是一个游戏,或者任何简单的娱乐,可以帮助你在终端玩得开心。你们中的一些人会见过我们之前的选中的各种玩具,但是我们希望至少有一个对每个人来说都是新的。因为几乎所有我告诉他这个系列的人都已经问过它了,所以今天的选中的玩具是必须提及的。你也不会认为我们会在不提及 cowsay 的情况下完成这个系列,对吧?cowsay 是一个神奇的实用程序,它将文本作为 ASCII 艺术牛的讲话文本输出。你可能会发现 cowsey 打包在你的默认存储库中,甚至可能已经安装了。对我来说,在 Fedora,像这样安装:<pre class="prettyprint linenums">$ sudo dnf install -y cowsay</pre>然后,用 cowsey 调用它,然后是你的消息。也许你想到昨天我们谈到的 <a href="https://opensource.com/article/18/12/linux-toy-fortune">fortune 应用</a> 连接起来。<pre class="prettyprint linenums">$ fortune | cowsay _________________________________________/ If at first you do succeed, try to hide \\ your astonishment. / ----------------------------------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||</pre>就这样!cowsay 还有点小变体,称为 cow 文件,通常可以在 /usr/share/cowsay 找到 ,要查看系统上可用的 cow 文件,请在 cowsay 之后使用 -l 。然后,用 -f 试试其中之一。<pre class="prettyprint linenums">$ cowsay -f dragon "Run for cover, I feel a sneeze coming on." _______________________________________/ Run for cover, I feel a sneeze coming \\ on. / -----------------------…
你所不知道的知识共享(CC)
知识共享为艺术家提供访问权限和原始素材。大公司也从中受益。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/182859vzilqpgm4bvdktck.png">Media</a>我毕业于电影学院,毕业后在一所电影学校教书,之后进入一家主流电影工作室,我一直在从事电影相关的工作。创意产业的方方面面面临着同一个问题:创作者需要原材料。有趣的是,自由文化运动提出了解决方案,具体来说是在自由文化运动中出现的知识共享Creative Commons组织。知识共享能够为我们提供展示片段和小样和其他事情一样,创造力也需要反复练习。幸运的是,在我刚开始接触电脑时,就在一本关于渲染工场的专业杂志中接触到了开源这个存在。当时我并不理解所谓的“开源”是什么,但我知道只有开源工具能帮助我在领域内稳定发展。对我来说,知识共享也是如此。知识共享可以为艺术家们提供充满丰富艺术资源的工作室。我在电影学院任教时,经常需要给学生们准备练习编辑、录音、拟音、分级、评分的示例录像。在 Jim Munroe 的独立作品 <a href="http://infestwisely.com">Infest Wisely</a> 中和 <a href="https://vimeo.com/creativecommons">Vimeo</a> 上的知识共享内容里我总能找到我想要的。这些逼真的镜头覆盖内容十分广泛,从独立制作到昂贵的高品质的升降镜头(一般都会用无人机代替)都有。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/182902ijudjzfjd4r5pncp.png">Media</a>对实验主义艺术来说,确有无尽可能。知识共…
知识共享为艺术家提供访问权限和原始素材。大公司也从中受益。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/182859vzilqpgm4bvdktck.png">Media</a>我毕业于电影学院,毕业后在一所电影学校教书,之后进入一家主流电影工作室,我一直在从事电影相关的工作。创意产业的方方面面面临着同一个问题:创作者需要原材料。有趣的是,自由文化运动提出了解决方案,具体来说是在自由文化运动中出现的知识共享Creative Commons组织。知识共享能够为我们提供展示片段和小样和其他事情一样,创造力也需要反复练习。幸运的是,在我刚开始接触电脑时,就在一本关于渲染工场的专业杂志中接触到了开源这个存在。当时我并不理解所谓的“开源”是什么,但我知道只有开源工具能帮助我在领域内稳定发展。对我来说,知识共享也是如此。知识共享可以为艺术家们提供充满丰富艺术资源的工作室。我在电影学院任教时,经常需要给学生们准备练习编辑、录音、拟音、分级、评分的示例录像。在 Jim Munroe 的独立作品 <a href="http://infestwisely.com">Infest Wisely</a> 中和 <a href="https://vimeo.com/creativecommons">Vimeo</a> 上的知识共享内容里我总能找到我想要的。这些逼真的镜头覆盖内容十分广泛,从独立制作到昂贵的高品质的升降镜头(一般都会用无人机代替)都有。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/14/182902ijudjzfjd4r5pncp.png">Media</a>对实验主义艺术来说,确有无尽可能。知识共…
使用 gorilla/mux 进行 HTTP 请求路由和验证
gorilla/mux 包以直观的 API 提供了 HTTP 请求路由、验证和其它服务。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/091045efoxfuuutxkos2xo.png">MediaGo 网络库包括 http.ServeMux 结构类型,它支持 HTTP 请求多路复用(路由):Web 服务器将托管资源的 HTTP 请求与诸如 /sales4today 之类的 URI 路由到代码处理程序;处理程序在发送 HTTP 响应(通常是 HTML 页面)之前执行适当的逻辑。 这是该体系的草图:<pre class="prettyprint linenums"> +-----------+ +--------+ +---------+HTTP 请求---->| web 服务器 |---->| 路由 |---->| 处理程序 | +-----------+ +--------+ +---------+</pre>调用 ListenAndServe 方法后启动 HTTP 服务器:<pre class="prettyprint linenums">http.ListenAndServe(":8888", nil) // args: port & router</pre>第二个参数 nil 意味着 DefaultServeMux 用于请求路由。gorilla/mux 库包含 mux.Router 类型,可替代 DefaultServeMux 或自定义请求多路复用器。 在 ListenAndServe 调用中,mux.Router 实例将代替 nil 作为第二个参数。 下面的示例代码很好的说明了为什么 mux.Router如此吸引人:1、一个简单的 CRUD web 应用程序crud web 应用程序(见下文)支持四种 CRUD(创建/读取/更新/删除)操作,它们分别对应四种 HTTP 请求方法:POST、GET、PUT 和 DELETE。 在这个 CRUD 应用程序中,所管理的资源是套话与反套话的列表,每个都是套话及其反面的的套话,例如这对:<pre class="prettyprint linenums">Out of sight, out of mind. Absence makes the heart grow fonder.</pre>可以添加新的套话对,可以编辑或删除现有的套话对。CRUD web 应用程序:<pre class="prettyprint linenums">package mainimport ( "gorilla/mux" "net/http" "fmt" "strconv")const GETALL string = "GETALL"const GETONE string = "GETONE"const POST string = "POST"const PUT string = "PUT"const DELETE string = "DELETE"type clichePair struct { Id int Cliche string Counter string}// Message sent to goroutine that accesses the requested resource.type crudRequest struct { verb string cp *clichePair id int cliche string counter string confirm chan string}var clichesList =…
gorilla/mux 包以直观的 API 提供了 HTTP 请求路由、验证和其它服务。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/091045efoxfuuutxkos2xo.png">MediaGo 网络库包括 http.ServeMux 结构类型,它支持 HTTP 请求多路复用(路由):Web 服务器将托管资源的 HTTP 请求与诸如 /sales4today 之类的 URI 路由到代码处理程序;处理程序在发送 HTTP 响应(通常是 HTML 页面)之前执行适当的逻辑。 这是该体系的草图:<pre class="prettyprint linenums"> +-----------+ +--------+ +---------+HTTP 请求---->| web 服务器 |---->| 路由 |---->| 处理程序 | +-----------+ +--------+ +---------+</pre>调用 ListenAndServe 方法后启动 HTTP 服务器:<pre class="prettyprint linenums">http.ListenAndServe(":8888", nil) // args: port & router</pre>第二个参数 nil 意味着 DefaultServeMux 用于请求路由。gorilla/mux 库包含 mux.Router 类型,可替代 DefaultServeMux 或自定义请求多路复用器。 在 ListenAndServe 调用中,mux.Router 实例将代替 nil 作为第二个参数。 下面的示例代码很好的说明了为什么 mux.Router如此吸引人:1、一个简单的 CRUD web 应用程序crud web 应用程序(见下文)支持四种 CRUD(创建/读取/更新/删除)操作,它们分别对应四种 HTTP 请求方法:POST、GET、PUT 和 DELETE。 在这个 CRUD 应用程序中,所管理的资源是套话与反套话的列表,每个都是套话及其反面的的套话,例如这对:<pre class="prettyprint linenums">Out of sight, out of mind. Absence makes the heart grow fonder.</pre>可以添加新的套话对,可以编辑或删除现有的套话对。CRUD web 应用程序:<pre class="prettyprint linenums">package mainimport ( "gorilla/mux" "net/http" "fmt" "strconv")const GETALL string = "GETALL"const GETONE string = "GETONE"const POST string = "POST"const PUT string = "PUT"const DELETE string = "DELETE"type clichePair struct { Id int Cliche string Counter string}// Message sent to goroutine that accesses the requested resource.type crudRequest struct { verb string cp *clichePair id int cliche string counter string confirm chan string}var clichesList =…
创建一个容器化的机器学习模型
数据科学家在创建机器学习模型后,必须将其部署到生产中。要在不同的基础架构上运行它,使用容器并通过 REST API 公开模型是部署机器学习模型的常用方法。Media
via https://linux.cn/article-10349-1.html
数据科学家在创建机器学习模型后,必须将其部署到生产中。要在不同的基础架构上运行它,使用容器并通过 REST API 公开模型是部署机器学习模型的常用方法。Media
via https://linux.cn/article-10349-1.html
创建一个容器化的机器学习模型
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/091829w45rgg1peoawzce7.jpg">Media</a>数据科学家在创建机器学习模型后,必须将其部署到生产中。要在不同的基础架构上运行它,使用容器并通过 REST API 公开模型是部署机器学习模型的常用方法。本文演示了如何在 <a href="https://fedoramagazine.org/running-containers-with-podman/">Podman</a> 容器中使用 <a href="https://connexion.readthedocs.io/en/latest/">Connexion</a> 推出使用 REST API 的 <a href="https://www.tensorflow.org">TensorFlow</a> 机器学习模型。准备首先,使用以下命令安装 Podman:<pre class="prettyprint linenums">sudo dnf -y install podman</pre>接下来,为容器创建一个新文件夹并切换到该目录。<pre class="prettyprint linenums">mkdir deployment_container && cd deployment_container</pre>TensorFlow 模型的 REST API下一步是为机器学习模型创建 REST API。这个 <a href="https://github.com/svenboesiger/titanic_tf_ml_model">github 仓库</a>包含一个预训练模型,以及能让 REST API 工作的设置。使用以下命令在 deployment_container 目录中克隆它:<pre class="prettyprint linenums">git clone https://github.com/svenboesiger/titanic_tf_ml_model.git</pre>prediction.py 和 ml_model/<a href="https://github.com/svenboesiger/titanic_tf_ml_model/blob/master/prediction.py">prediction.py</a> 能进行 Tensorflow 预测,而 20x20x20 神经网络的权重位于文件夹 <a href="https://github.com/svenboesiger/titanic_tf_ml_model/tree/master/ml_model/titanic">ml_model/</a> 中。swagger.yaml<a href="https://github.com/svenboesiger/titanic_tf_ml_model/blob/master/swagger.yaml">swagger.yaml</a> 使用 <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md">Swagger规范</a> 定义 Connexion 库的 API。此文件包含让你的服务器提供输入参数验证、输出响应数据验证、URL 端点定义所需的所有信息。额外地,Connexion 还将给你提供一个简单但有用的单页 Web 应用,它演示了如何使用 Javascript 调用 API 和更新 DOM。<pre class="prettyprint linenums">swagger: "2.0"info: description: This is the swagger file that goes with our server code version: "1.0.0" title: Tensorflow Podman Articleconsumes: - "application/json"produces: - "application/json"basePath: "/"paths: /survival_probability: post: operationId:…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/091829w45rgg1peoawzce7.jpg">Media</a>数据科学家在创建机器学习模型后,必须将其部署到生产中。要在不同的基础架构上运行它,使用容器并通过 REST API 公开模型是部署机器学习模型的常用方法。本文演示了如何在 <a href="https://fedoramagazine.org/running-containers-with-podman/">Podman</a> 容器中使用 <a href="https://connexion.readthedocs.io/en/latest/">Connexion</a> 推出使用 REST API 的 <a href="https://www.tensorflow.org">TensorFlow</a> 机器学习模型。准备首先,使用以下命令安装 Podman:<pre class="prettyprint linenums">sudo dnf -y install podman</pre>接下来,为容器创建一个新文件夹并切换到该目录。<pre class="prettyprint linenums">mkdir deployment_container && cd deployment_container</pre>TensorFlow 模型的 REST API下一步是为机器学习模型创建 REST API。这个 <a href="https://github.com/svenboesiger/titanic_tf_ml_model">github 仓库</a>包含一个预训练模型,以及能让 REST API 工作的设置。使用以下命令在 deployment_container 目录中克隆它:<pre class="prettyprint linenums">git clone https://github.com/svenboesiger/titanic_tf_ml_model.git</pre>prediction.py 和 ml_model/<a href="https://github.com/svenboesiger/titanic_tf_ml_model/blob/master/prediction.py">prediction.py</a> 能进行 Tensorflow 预测,而 20x20x20 神经网络的权重位于文件夹 <a href="https://github.com/svenboesiger/titanic_tf_ml_model/tree/master/ml_model/titanic">ml_model/</a> 中。swagger.yaml<a href="https://github.com/svenboesiger/titanic_tf_ml_model/blob/master/swagger.yaml">swagger.yaml</a> 使用 <a href="https://github.com/OAI/OpenAPI-Specification/blob/master/versions/2.0.md">Swagger规范</a> 定义 Connexion 库的 API。此文件包含让你的服务器提供输入参数验证、输出响应数据验证、URL 端点定义所需的所有信息。额外地,Connexion 还将给你提供一个简单但有用的单页 Web 应用,它演示了如何使用 Javascript 调用 API 和更新 DOM。<pre class="prettyprint linenums">swagger: "2.0"info: description: This is the swagger file that goes with our server code version: "1.0.0" title: Tensorflow Podman Articleconsumes: - "application/json"produces: - "application/json"basePath: "/"paths: /survival_probability: post: operationId:…
在 Linux 中使用 SoundConverter 轻松转换音频文件格式
如果你正在寻找将音频文件格式转换为 wav、mp3、ogg 或任何其他格式,SoundConverter 是你在 Linux 中需要的工具。Media
via https://linux.cn/article-10350-1.html
如果你正在寻找将音频文件格式转换为 wav、mp3、ogg 或任何其他格式,SoundConverter 是你在 Linux 中需要的工具。Media
via https://linux.cn/article-10350-1.html
在 Linux 中使用 SoundConverter 轻松转换音频文件格式
如果你正在寻找将音频文件格式转换为 wav、mp3、ogg 或任何其他格式,SoundConverter 是你在 Linux 中需要的工具。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/150512n4pw4zibi0mnciwo.png">Audio Converter in Linux</a>最近我购买了一些没有 DRM 的音乐。我是从 <a href="https://en.wikipedia.org/wiki/Saregama">SaReGaMa</a> 那里买的,这是一家印度历史最悠久,规模最大的音乐品牌。下载的文件采用高清质量的 WAV 格式。不幸的是,Rhythmbox 无法播放 WAV。最重要的是,单个文件大小约为 70MB。想象一下,将这么大的音乐传输到智能手机。它会不必要地占用大量空间。所以我认为是时候将 WAV 文件转换为 MP3 —— 这个长青且最流行的音乐文件格式。为此,我需要一个在 Linux 中的音频转换器。在这个教程中,我将向你展示如何使用名为 SoundCoverter 的 GUI 工具轻松地将音频文件从一种格式转换为另一种格式。在 Linux 中安装 SoundConverter<a href="http://soundconverter.org/">SoundConverter</a> 是一款流行的自由开源软件。它应该可以在大多数 Linux 发行版的官方仓库中找到。Ubuntu/Linux Mint 用户只需在软件中心搜索 SoundConverter 并从那里安装即可。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/150513ulebo0bf63e3e9wf.png">SoundConverter application in Software Center of Ubuntu</a><em>SoundConverter 可以从软件中心安装</em>或者,你可以使用命令行方式。在基于 Debian 和 Ubuntu 的系统中,你可以使用以下命令:<pre class="prettyprint linenums">sudo apt install soundconverter</pre>在 Arch、Fedora 和其他非基于 Debian 的发行版中,你可以使用你的发行版的软件中心或软件包管理器。在 Linux 中使用 SoundConverter 转换音频文件格&#…
如果你正在寻找将音频文件格式转换为 wav、mp3、ogg 或任何其他格式,SoundConverter 是你在 Linux 中需要的工具。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/150512n4pw4zibi0mnciwo.png">Audio Converter in Linux</a>最近我购买了一些没有 DRM 的音乐。我是从 <a href="https://en.wikipedia.org/wiki/Saregama">SaReGaMa</a> 那里买的,这是一家印度历史最悠久,规模最大的音乐品牌。下载的文件采用高清质量的 WAV 格式。不幸的是,Rhythmbox 无法播放 WAV。最重要的是,单个文件大小约为 70MB。想象一下,将这么大的音乐传输到智能手机。它会不必要地占用大量空间。所以我认为是时候将 WAV 文件转换为 MP3 —— 这个长青且最流行的音乐文件格式。为此,我需要一个在 Linux 中的音频转换器。在这个教程中,我将向你展示如何使用名为 SoundCoverter 的 GUI 工具轻松地将音频文件从一种格式转换为另一种格式。在 Linux 中安装 SoundConverter<a href="http://soundconverter.org/">SoundConverter</a> 是一款流行的自由开源软件。它应该可以在大多数 Linux 发行版的官方仓库中找到。Ubuntu/Linux Mint 用户只需在软件中心搜索 SoundConverter 并从那里安装即可。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/15/150513ulebo0bf63e3e9wf.png">SoundConverter application in Software Center of Ubuntu</a><em>SoundConverter 可以从软件中心安装</em>或者,你可以使用命令行方式。在基于 Debian 和 Ubuntu 的系统中,你可以使用以下命令:<pre class="prettyprint linenums">sudo apt install soundconverter</pre>在 Arch、Fedora 和其他非基于 Debian 的发行版中,你可以使用你的发行版的软件中心或软件包管理器。在 Linux 中使用 SoundConverter 转换音频文件格&#…
Caffeinated 6.828:实验 4:抢占式多任务处理
在本实验中,你将在多个同时活动的用户模式环境之间实现抢占式多任务处理。Media
via https://linux.cn/article-10351-1.html
在本实验中,你将在多个同时活动的用户模式环境之间实现抢占式多任务处理。Media
via https://linux.cn/article-10351-1.html
Caffeinated 6.828:实验 4:抢占式多任务处理
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/125727xit7uuvtt0r7j715.jpg">Media简介在本实验中,你将在多个同时活动的用户模式环境之间实现抢占式多任务处理。在 Part A 中,你将在 JOS 中添加对多处理器的支持,以实现循环调度。并且添加基本的环境管理方面的系统调用(创建和销毁环境的系统调用、以及分配/映射内存)。在 Part B 中,你将要实现一个类 Unix 的 fork(),它将允许一个用户模式中的环境去创建一个它自已的副本。最后,在 Part C 中,你将在 JOS 中添加对进程间通讯(IPC)的支持,以允许不同用户模式环境之间进行显式通讯和同步。你也将要去添加对硬件时钟中断和优先权的支持。预备知识使用 git 去提交你的实验 3 的源代码,并获取课程仓库的最新版本,然后创建一个名为 lab4 的本地分支,它跟踪我们的名为 origin/lab4 的远程 lab4 分支:<pre class="prettyprint linenums"> athena% cd ~/6.828/lab athena% add git athena% git pull Already up-to-date. athena% git checkout -b lab4 origin/lab4 Branch lab4 set up to track remote branch refs/remotes/origin/lab4. Switched to a new branch "lab4" athena% git merge lab3 Merge made by recursive. ... athena%</pre>实验 4 包含了一些新的源文件,在开始之前你应该去浏览一遍:<pre class="prettyprint linenums">kern/cpu.h Kernel-private definitions for multiprocessor supportkern/mpconfig.c Code to read the multiprocessor configuration kern/lapic.c Kernel code driving the local APIC unit in each processorkern/mpentry.S Assembly-language entry code for non-boot CPUskern/spinlock.h Kernel-private definitions for spin locks, including the big kernel lock kern/spinlock.c Kernel code implementing spin lockskern/sched.c Code skeleton of the scheduler that you are about to implement</pre>实验要求本实验分为三部分:Part A、Part B 和 Part C。我们计划为每个部分分配一周的时间。和以前一样,你需要完成实验中出现的、所有常规练ߖ…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/125727xit7uuvtt0r7j715.jpg">Media简介在本实验中,你将在多个同时活动的用户模式环境之间实现抢占式多任务处理。在 Part A 中,你将在 JOS 中添加对多处理器的支持,以实现循环调度。并且添加基本的环境管理方面的系统调用(创建和销毁环境的系统调用、以及分配/映射内存)。在 Part B 中,你将要实现一个类 Unix 的 fork(),它将允许一个用户模式中的环境去创建一个它自已的副本。最后,在 Part C 中,你将在 JOS 中添加对进程间通讯(IPC)的支持,以允许不同用户模式环境之间进行显式通讯和同步。你也将要去添加对硬件时钟中断和优先权的支持。预备知识使用 git 去提交你的实验 3 的源代码,并获取课程仓库的最新版本,然后创建一个名为 lab4 的本地分支,它跟踪我们的名为 origin/lab4 的远程 lab4 分支:<pre class="prettyprint linenums"> athena% cd ~/6.828/lab athena% add git athena% git pull Already up-to-date. athena% git checkout -b lab4 origin/lab4 Branch lab4 set up to track remote branch refs/remotes/origin/lab4. Switched to a new branch "lab4" athena% git merge lab3 Merge made by recursive. ... athena%</pre>实验 4 包含了一些新的源文件,在开始之前你应该去浏览一遍:<pre class="prettyprint linenums">kern/cpu.h Kernel-private definitions for multiprocessor supportkern/mpconfig.c Code to read the multiprocessor configuration kern/lapic.c Kernel code driving the local APIC unit in each processorkern/mpentry.S Assembly-language entry code for non-boot CPUskern/spinlock.h Kernel-private definitions for spin locks, including the big kernel lock kern/spinlock.c Kernel code implementing spin lockskern/sched.c Code skeleton of the scheduler that you are about to implement</pre>实验要求本实验分为三部分:Part A、Part B 和 Part C。我们计划为每个部分分配一周的时间。和以前一样,你需要完成实验中出现的、所有常规练ߖ…
神奇的 Linux 命令行字符形状工具 boxes
本文将教你如何在 Linux 命令行终端中使用 boxes 工具绘制字符形状图形来包装你的文字让其更突出。Media
via https://linux.cn/article-10352-1.html
本文将教你如何在 Linux 命令行终端中使用 boxes 工具绘制字符形状图形来包装你的文字让其更突出。Media
via https://linux.cn/article-10352-1.html
神奇的 Linux 命令行字符形状工具 boxes
本文将教你如何在 Linux 命令行终端中使用 boxes 工具绘制字符形状图形来包装你的文字让其更突出。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/193631nj5mt5htxujjcjeh.png">Media</a>现在正值假期,每个 Linux 终端用户都该得到一点礼物。无论你是庆祝圣诞节还是庆祝其他节日,或者什么节日也没有,都没有关系。我将在接下来的几周内介绍 24 个 Linux 命令行小玩具,供你把玩或者与朋友分享。让我们享受乐趣,让这个月过得快乐一点,因为对于北半球来说,这个月有点冷并且沉闷。对于我要讲述的内容,可能你之前就有些了解。但是,我还是希望我们都有机会学到一些新的东西(我做了一点研究,确保可以分享 24 个小玩具)。24 个 Linux 终端小玩具中的第一个是叫做 boxes 的小程序。为何从 boxes 说起呢?因为在没有它的情况下很难将所有其他命令礼物包装起来!在我的 Fedora 机器上,默认没有安装 boxes 程序,但它在我的普通仓库中可以获取到,所以用如下命令就可安装:<pre class="prettyprint linenums">$ sudo dnf install boxes -y</pre>如果你在使用其他 Linux 发行版,一般也都可以在默认仓库中找到 boxes。boxes 是我真正希望在高中和大学计算机课程中就使用的实用程序,因为善意的老师要求我在每个源文件、函数、代码块等开头添加一些特定外观的备注信息。<pre class="prettyprint linenums">/***************//* Hello World *//***************/</pre>事实证明,一旦你需要在框内添加几行文字,…
本文将教你如何在 Linux 命令行终端中使用 boxes 工具绘制字符形状图形来包装你的文字让其更突出。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/193631nj5mt5htxujjcjeh.png">Media</a>现在正值假期,每个 Linux 终端用户都该得到一点礼物。无论你是庆祝圣诞节还是庆祝其他节日,或者什么节日也没有,都没有关系。我将在接下来的几周内介绍 24 个 Linux 命令行小玩具,供你把玩或者与朋友分享。让我们享受乐趣,让这个月过得快乐一点,因为对于北半球来说,这个月有点冷并且沉闷。对于我要讲述的内容,可能你之前就有些了解。但是,我还是希望我们都有机会学到一些新的东西(我做了一点研究,确保可以分享 24 个小玩具)。24 个 Linux 终端小玩具中的第一个是叫做 boxes 的小程序。为何从 boxes 说起呢?因为在没有它的情况下很难将所有其他命令礼物包装起来!在我的 Fedora 机器上,默认没有安装 boxes 程序,但它在我的普通仓库中可以获取到,所以用如下命令就可安装:<pre class="prettyprint linenums">$ sudo dnf install boxes -y</pre>如果你在使用其他 Linux 发行版,一般也都可以在默认仓库中找到 boxes。boxes 是我真正希望在高中和大学计算机课程中就使用的实用程序,因为善意的老师要求我在每个源文件、函数、代码块等开头添加一些特定外观的备注信息。<pre class="prettyprint linenums">/***************//* Hello World *//***************/</pre>事实证明,一旦你需要在框内添加几行文字,…
从 Linux 终端查看笔记本电池状态和等级的 5 个方法
在 Linux 上有很多这样的实用工具,而且可以在命令行使用。Media
via https://linux.cn/article-10353-1.html
在 Linux 上有很多这样的实用工具,而且可以在命令行使用。Media
via https://linux.cn/article-10353-1.html
从 Linux 终端查看笔记本电池状态和等级的 5 个方法
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/201147imjo55telvtievof.jpg">Media</a>我们可以轻松地通过图形化界面查看当前电量百分比、是否在充电以及当前电量还可以使用多长时间等电池状态,但是却无法查看电池健康度等相关信息。在这篇文章就是为了解决这些问题。在 Linux 上有很多这样的实用工具,而且可以在命令行使用。这篇文章今天就要探讨这个主题,我会尽我所能的覆盖尽可能多的信息。每月检查一次你的电池健康度是一个很好的想法。它可以帮你检查你当前遇到的问题是否与电池或者充电相关。同时,我们也可以查看电池模组名称、电源、厂商以及电池规格等。电源管理是在不使用时关闭电源或者切换系统的组件到低耗模式的一种功能。几种在 Linux 下检查电池状态的实用工具upower:是一个命令行工具,其提供了罗列系统中电源的接口。acpi:显示来自 /proc 或者 /sys 文件系统中的一些信息,例如电池状态或者热量信息。batstat:是一个为 Linux 打印电池状态的命令行工具。tlp:可以为你带来更高级的电源管理,而无需修改任何配置。class file:这个 sysfs 文件系统是一个提供了内核数据结构接口的伪文件系统。如何使用 upower 命令检查笔记本电池状态<a href="https://upower.freedesktop.org/">upower</a> 是一个命令行工具,其提供了罗列系统中电源的接口。它在你的电脑上可以控制不同操作…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/201147imjo55telvtievof.jpg">Media</a>我们可以轻松地通过图形化界面查看当前电量百分比、是否在充电以及当前电量还可以使用多长时间等电池状态,但是却无法查看电池健康度等相关信息。在这篇文章就是为了解决这些问题。在 Linux 上有很多这样的实用工具,而且可以在命令行使用。这篇文章今天就要探讨这个主题,我会尽我所能的覆盖尽可能多的信息。每月检查一次你的电池健康度是一个很好的想法。它可以帮你检查你当前遇到的问题是否与电池或者充电相关。同时,我们也可以查看电池模组名称、电源、厂商以及电池规格等。电源管理是在不使用时关闭电源或者切换系统的组件到低耗模式的一种功能。几种在 Linux 下检查电池状态的实用工具upower:是一个命令行工具,其提供了罗列系统中电源的接口。acpi:显示来自 /proc 或者 /sys 文件系统中的一些信息,例如电池状态或者热量信息。batstat:是一个为 Linux 打印电池状态的命令行工具。tlp:可以为你带来更高级的电源管理,而无需修改任何配置。class file:这个 sysfs 文件系统是一个提供了内核数据结构接口的伪文件系统。如何使用 upower 命令检查笔记本电池状态<a href="https://upower.freedesktop.org/">upower</a> 是一个命令行工具,其提供了罗列系统中电源的接口。它在你的电脑上可以控制不同操作…
制定开源战略的免费指南
了解如何使用 TODO Group 的成熟实践,使您的组织的开源软件目标与您的业务目标保持一致。Media
via https://linux.cn/article-10354-1.html
了解如何使用 TODO Group 的成熟实践,使您的组织的开源软件目标与您的业务目标保持一致。Media
via https://linux.cn/article-10354-1.html
制定开源战略的免费指南
了解如何使用 TODO Group 的成熟实践,使您的组织的开源软件目标与您的业务目标保持一致。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/203806ezd0j0tcatkjukkt.jpg">Media</a>大多数使用开源的公司都了解其商业价值,但他们可能缺乏战略性地实施开源计划和获得全部回报的工具。根据 <a href="https://thenewstack.io/open-source-culture-starts-with-programs-and-policies/">The New Stack</a> 最近的一项调查,“开源计划的三大好处是 1)提高了对开源的认识,2)提高了开发周期的速度和灵活性,以及 3)更好的许可证合规性。”运作一个开源计划办公室涉及到创建策略来帮助你定义和实施你的方法,并衡量你的进度。由 Linux 基金会与 TODO Group 合作开发的<a href="https://www.linuxfoundation.org/resources/open-source-guides/">企业开源指南</a>基于多年的经验和实践提供了专业开源知识。最新的指南中,<a href="https://www.linuxfoundation.org/resources/open-source-guides/setting-an-open-source-strategy/">设置开源战略</a>详细介绍了制定战略和确保成功之路的基本步骤。根据该指南,“你的开源战略将管理、参与和创建开源软件的计划与计划所服务的业务目标联系起来。这可以开辟许多机会并促进创新。”该指南涵盖以下主题:为什么制定战略?你的战略文件战略方法关键考虑因素其他组成确定投资回报率投资目标这里关键的第一步是创建和将你的开源策略形成文字,该策略将“帮助你最大限度地提高组织从开源中获得的利益。”同时,你详细的策略可以帮助你避免因错误而导致…
了解如何使用 TODO Group 的成熟实践,使您的组织的开源软件目标与您的业务目标保持一致。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/16/203806ezd0j0tcatkjukkt.jpg">Media</a>大多数使用开源的公司都了解其商业价值,但他们可能缺乏战略性地实施开源计划和获得全部回报的工具。根据 <a href="https://thenewstack.io/open-source-culture-starts-with-programs-and-policies/">The New Stack</a> 最近的一项调查,“开源计划的三大好处是 1)提高了对开源的认识,2)提高了开发周期的速度和灵活性,以及 3)更好的许可证合规性。”运作一个开源计划办公室涉及到创建策略来帮助你定义和实施你的方法,并衡量你的进度。由 Linux 基金会与 TODO Group 合作开发的<a href="https://www.linuxfoundation.org/resources/open-source-guides/">企业开源指南</a>基于多年的经验和实践提供了专业开源知识。最新的指南中,<a href="https://www.linuxfoundation.org/resources/open-source-guides/setting-an-open-source-strategy/">设置开源战略</a>详细介绍了制定战略和确保成功之路的基本步骤。根据该指南,“你的开源战略将管理、参与和创建开源软件的计划与计划所服务的业务目标联系起来。这可以开辟许多机会并促进创新。”该指南涵盖以下主题:为什么制定战略?你的战略文件战略方法关键考虑因素其他组成确定投资回报率投资目标这里关键的第一步是创建和将你的开源策略形成文字,该策略将“帮助你最大限度地提高组织从开源中获得的利益。”同时,你详细的策略可以帮助你避免因错误而导致…
TLDR 页:Linux 手册页的简化替代品
有时候,当你在寻找命令的基本信息时,man 就会显得有点庞杂。为了解决这个问题,人们创建了TLDR 页。Media
via https://linux.cn/article-10355-1.html
有时候,当你在寻找命令的基本信息时,man 就会显得有点庞杂。为了解决这个问题,人们创建了TLDR 页。Media
via https://linux.cn/article-10355-1.html
TLDR 页:Linux 手册页的简化替代品
<a href="https://fossbytes.com/wp-content/uploads/2017/11/tldr-page-ubuntu.jpg">tldr page ubuntu</a>在终端上使用各种命令执行重要任务是 Linux 桌面体验中不可或缺的一部分。Linux 这个开源操作系统拥有<a href="https://fossbytes.com/a-z-list-linux-command-line-reference/">丰富的命令</a>,任何用户都无法全部记住所有这些命令。而使事情变得更复杂的是,每个命令都有自己的一组带来丰富的功能的选项。为了解决这个问题,人们创建了<a href="https://fossbytes.com/linux-lexicon-man-pages-navigation/">手册页</a>man page,(手册 —— man 是 manual 的缩写)。首先,它是用英文写成的,包含了大量关于不同命令的深入信息。有时候,当你在寻找命令的基本信息时,它就会显得有点庞杂。为了解决这个问题,人们创建了<a href="https://github.com/tldr-pages/tldr">TLDR 页</a>。什么是 TLDR 页?TLDR 页的 GitHub 仓库将其描述为简化的、社区驱动的手册页集合。在实际示例的帮助下,努力让使用手册页的体验变得更简单。如果还不知道,TLDR 取自互联网的常见俚语:太长没读Too Long Didn’t Read。如果你想比较一下,让我们以 tar 命令为例。 通常,手册页的篇幅会超过 1000 行。tar 是一个归档实用程序,经常与 bzip 或 gzip 等压缩方法结合使用。看一下它的手册页:<a href="https://fossbytes.com/wp-content/uploads/2017/11/tar-man-page.jpg">tar man page</a>而另一方面,TLDR 页面让你只是浏览一下命令,看看它是如何工作的。 tar 的 TLDR 页面看起来像这样,并带有一些方便的例子 —— 你可以使用此实用程序完成的最常见任务:<a href="https://fossbytes.com/wp-content/uploads/2017/11/tar-tldr-page.jpg">tar tldr pag…
<a href="https://fossbytes.com/wp-content/uploads/2017/11/tldr-page-ubuntu.jpg">tldr page ubuntu</a>在终端上使用各种命令执行重要任务是 Linux 桌面体验中不可或缺的一部分。Linux 这个开源操作系统拥有<a href="https://fossbytes.com/a-z-list-linux-command-line-reference/">丰富的命令</a>,任何用户都无法全部记住所有这些命令。而使事情变得更复杂的是,每个命令都有自己的一组带来丰富的功能的选项。为了解决这个问题,人们创建了<a href="https://fossbytes.com/linux-lexicon-man-pages-navigation/">手册页</a>man page,(手册 —— man 是 manual 的缩写)。首先,它是用英文写成的,包含了大量关于不同命令的深入信息。有时候,当你在寻找命令的基本信息时,它就会显得有点庞杂。为了解决这个问题,人们创建了<a href="https://github.com/tldr-pages/tldr">TLDR 页</a>。什么是 TLDR 页?TLDR 页的 GitHub 仓库将其描述为简化的、社区驱动的手册页集合。在实际示例的帮助下,努力让使用手册页的体验变得更简单。如果还不知道,TLDR 取自互联网的常见俚语:太长没读Too Long Didn’t Read。如果你想比较一下,让我们以 tar 命令为例。 通常,手册页的篇幅会超过 1000 行。tar 是一个归档实用程序,经常与 bzip 或 gzip 等压缩方法结合使用。看一下它的手册页:<a href="https://fossbytes.com/wp-content/uploads/2017/11/tar-man-page.jpg">tar man page</a>而另一方面,TLDR 页面让你只是浏览一下命令,看看它是如何工作的。 tar 的 TLDR 页面看起来像这样,并带有一些方便的例子 —— 你可以使用此实用程序完成的最常见任务:<a href="https://fossbytes.com/wp-content/uploads/2017/11/tar-tldr-page.jpg">tar tldr pag…