给写作者们的 7 个命令行工具
扔掉你的文字编辑器,然后使用这些开源工具在命令行上写作吧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/13/224349sakaydvbedllll9l.jpg">Media</a>对于大多数人(尤其是非技术人员),写作意味着在 LibreOffice Writer 或者其他带图形界面的文字处理应用上编辑文本。但是还有许多可行的方法可以让任何人通过文本传递他们的信息,尤其是越来越多的作者选择<a href="https://plaintextproject.online">拥抱纯文本</a>。在使用图形界面写作的世界同样有命令行工具的一席之地。这些命令行工具可以帮助他们进行写作,检查他们的拼写等等 —— 无论是在写一篇文章、博客或者故事;写一个 README 文件;或者准备一份技术文档的时候。下面是一些在任何写作情况下都有用的命令行工具。编辑器没错,你可以在命令行进行真正的写作。我知道一些写作者会使用 <a href="https://www.nano-editor.org/">Nano</a>、<a href="https://www.vim.org">Vim</a>、<a href="https://www.gnu.org/software/emacs/">Emacs</a>、以及 <a href="https://opensource.com/article/17/1/jove-lightweight-alternative-vim">Jove</a> 等编辑器在终端窗口中进行工作。而这些编辑器<a href="https://en.wikipedia.org/wiki/List_of_text_editors#Text_user_interface">并非屈指可数</a>。文本编辑器的优势在于它们简单易用以及更专注于文本。非常适合用于编辑任何文本的初稿甚至完成一个漫长而复杂的写作项目。如果你想在命令行中获得更像文字编辑器的体验,不妨了解一下 <a href="https://cowlark.com/wordgrinder/">WordGrinder</a>。它是一款简单但拥有足够的编写和发布功能的文字编辑器。它支持基本的格…
扔掉你的文字编辑器,然后使用这些开源工具在命令行上写作吧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/13/224349sakaydvbedllll9l.jpg">Media</a>对于大多数人(尤其是非技术人员),写作意味着在 LibreOffice Writer 或者其他带图形界面的文字处理应用上编辑文本。但是还有许多可行的方法可以让任何人通过文本传递他们的信息,尤其是越来越多的作者选择<a href="https://plaintextproject.online">拥抱纯文本</a>。在使用图形界面写作的世界同样有命令行工具的一席之地。这些命令行工具可以帮助他们进行写作,检查他们的拼写等等 —— 无论是在写一篇文章、博客或者故事;写一个 README 文件;或者准备一份技术文档的时候。下面是一些在任何写作情况下都有用的命令行工具。编辑器没错,你可以在命令行进行真正的写作。我知道一些写作者会使用 <a href="https://www.nano-editor.org/">Nano</a>、<a href="https://www.vim.org">Vim</a>、<a href="https://www.gnu.org/software/emacs/">Emacs</a>、以及 <a href="https://opensource.com/article/17/1/jove-lightweight-alternative-vim">Jove</a> 等编辑器在终端窗口中进行工作。而这些编辑器<a href="https://en.wikipedia.org/wiki/List_of_text_editors#Text_user_interface">并非屈指可数</a>。文本编辑器的优势在于它们简单易用以及更专注于文本。非常适合用于编辑任何文本的初稿甚至完成一个漫长而复杂的写作项目。如果你想在命令行中获得更像文字编辑器的体验,不妨了解一下 <a href="https://cowlark.com/wordgrinder/">WordGrinder</a>。它是一款简单但拥有足够的编写和发布功能的文字编辑器。它支持基本的格…
Bash 中使用控制运算符连接命令
在命令行中,使用控制运算符为复合命令添加逻辑。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/13/234800qr3691m74995qz56.jpg">Media</a>经常会使用一些简单的复合指令,比如说在一个命令行中连接几个命令。这些命令使用分号分隔,表示一个命令结束。为了在一个命令行中创建一系列简单的 shell 命令,只需要使用分号把每一条命令分隔开,就像下面这样:<pre class="prettyprint linenums">command1 ; command2 ; command3 ; command4 ;</pre>最后一个分号你可以不用添加,因为当你按下回车键时就表示一个命令的结束,但是为了和其它的保持一致,还是建议加上比较好。所有的命令执行都没有什么问题 —— 只要没有什么意外发生。但是当出问题时到底发生了什么呢?我们可以预测,并且通过 Bash 中内置的 && 和 || 运算符跟踪这些错误。这两个控制运算符提供了一些流控制,可以让我们改变代码执行队列的顺序。分号和换行符也被认为是 Bash 的控制运算符。&& 运算符意义简单来说就是“如果 command1 执行成功,就接着执行 command2。”如果 command1 因为任何原因执行失败,那么 command2 将不执行。这个语法看下来像这样:<pre class="prettyprint linenums">command1 && command2</pre>这样写是允许的,因为每一个命令都会返回一个值(RC)给 shell 来表示这个命令在执行的过程中是否执行成功或者失败。通常,返回值是 0 表示成功,而一个正数值表示不同种类的错误。有一些系统管理工具仅仅返回一个 1 来…
在命令行中,使用控制运算符为复合命令添加逻辑。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/13/234800qr3691m74995qz56.jpg">Media</a>经常会使用一些简单的复合指令,比如说在一个命令行中连接几个命令。这些命令使用分号分隔,表示一个命令结束。为了在一个命令行中创建一系列简单的 shell 命令,只需要使用分号把每一条命令分隔开,就像下面这样:<pre class="prettyprint linenums">command1 ; command2 ; command3 ; command4 ;</pre>最后一个分号你可以不用添加,因为当你按下回车键时就表示一个命令的结束,但是为了和其它的保持一致,还是建议加上比较好。所有的命令执行都没有什么问题 —— 只要没有什么意外发生。但是当出问题时到底发生了什么呢?我们可以预测,并且通过 Bash 中内置的 && 和 || 运算符跟踪这些错误。这两个控制运算符提供了一些流控制,可以让我们改变代码执行队列的顺序。分号和换行符也被认为是 Bash 的控制运算符。&& 运算符意义简单来说就是“如果 command1 执行成功,就接着执行 command2。”如果 command1 因为任何原因执行失败,那么 command2 将不执行。这个语法看下来像这样:<pre class="prettyprint linenums">command1 && command2</pre>这样写是允许的,因为每一个命令都会返回一个值(RC)给 shell 来表示这个命令在执行的过程中是否执行成功或者失败。通常,返回值是 0 表示成功,而一个正数值表示不同种类的错误。有一些系统管理工具仅仅返回一个 1 来…
一种新的安全检测的方法
不要只测试已有系统,强安全要求更积极主动的策略。<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