使用 GNOME Web “安装”独立 Web 应用
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144313ruvekekh3fv6lku3.jpg">Media</a>你是否经常使用单页 Web 应用(SPA),但失去了一些完整桌面应用的好处? GNOME Web 浏览器,简称为 Web(又名 Epiphany)有一个非常棒的功能,它允许你“安装” 一个 Web 应用。安装完成后,Web 应用将显示在应用菜单、GNOME shell 搜索中,并且它在切换窗口时是一个单独的项目。这个简短的教程将引导你完成使用 GNOME Web “安装” Web 应用的步骤。安装 GNOME WebGNOME Web 未包含在默认的 Fedora 安装中。要安装它,请在软件中心搜索 “web”,然后安装。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144315pgdorhudijaagijg.png">Media</a>或者,在终端中使用以下命令:<pre class="prettyprint linenums">sudo dnf install epiphany</pre>安装为 Web 应用接下来,启动 GNOME Web,然后去浏览要安装的 Web 应用。使用浏览器连接到应用,然后从菜单中选择“将站点安装为 Web 应用”:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144316a20evkveax6tyyto.png">Media</a>GNOME Web 接下来会出现一个用于编辑应用名称的对话框。将其保留为默认值 (URL) 或更改为更具描述性的内容:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144317dxw00zkz866dldkr.png">Media</a>最后,按下“创建”以 “安装” 你的新 Web 应用。创建 Web 应用后,关闭 GNOME Web。使用新的 Web 应用像使用任何典型的桌面应用一样启动 Web 应用。在 GNOME Shell Overview 中搜索它:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144318pfjmkaa09sh5ssas.jpg">Media</a>此外,Web 应用将在 alt-tab 应用切换器中显示为单独的应用:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144321vhm050i38ghitzfk.jpg">Media</a>另一个额外的功能是来自“已安装”的 Web 应用的所有 Web 通知都显示为常规 GNOME Ű…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144313ruvekekh3fv6lku3.jpg">Media</a>你是否经常使用单页 Web 应用(SPA),但失去了一些完整桌面应用的好处? GNOME Web 浏览器,简称为 Web(又名 Epiphany)有一个非常棒的功能,它允许你“安装” 一个 Web 应用。安装完成后,Web 应用将显示在应用菜单、GNOME shell 搜索中,并且它在切换窗口时是一个单独的项目。这个简短的教程将引导你完成使用 GNOME Web “安装” Web 应用的步骤。安装 GNOME WebGNOME Web 未包含在默认的 Fedora 安装中。要安装它,请在软件中心搜索 “web”,然后安装。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144315pgdorhudijaagijg.png">Media</a>或者,在终端中使用以下命令:<pre class="prettyprint linenums">sudo dnf install epiphany</pre>安装为 Web 应用接下来,启动 GNOME Web,然后去浏览要安装的 Web 应用。使用浏览器连接到应用,然后从菜单中选择“将站点安装为 Web 应用”:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144316a20evkveax6tyyto.png">Media</a>GNOME Web 接下来会出现一个用于编辑应用名称的对话框。将其保留为默认值 (URL) 或更改为更具描述性的内容:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144317dxw00zkz866dldkr.png">Media</a>最后,按下“创建”以 “安装” 你的新 Web 应用。创建 Web 应用后,关闭 GNOME Web。使用新的 Web 应用像使用任何典型的桌面应用一样启动 Web 应用。在 GNOME Shell Overview 中搜索它:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144318pfjmkaa09sh5ssas.jpg">Media</a>此外,Web 应用将在 alt-tab 应用切换器中显示为单独的应用:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/144321vhm050i38ghitzfk.jpg">Media</a>另一个额外的功能是来自“已安装”的 Web 应用的所有 Web 通知都显示为常规 GNOME Ű…
混合软件开发角色效果更佳
为什么在工程中混合角色对用户更好的三个原因。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/152638jli5ohrhtoth6i0q.png">Media</a>大多数开源社区没有很多正式的角色。当然,也有一些固定人员帮助处理系统管理员任务、测试、编写文档以及翻译或开发代码。但开源社区的人员通常在不同的角色之间流动,往往同时履行几个角色的职责。相反,大多数传统公司的团队成员都定义了角色,例如,负责文档、技术支持、质量检验和其他领域。为什么开源社区采取共享角色的方法,更重要的是,这种协作方式如何影响产品和客户?<a href="https://nextcloud.com/">Nextcloud</a> 采用了这种社区式的混合角色的做法,我们看到了我们的客户和用户受益颇多。1、更好的产品测试每个测试人员都会说测试是一项困难的工作。你需要了解工程师开发的产品,并且需要设计测试案例、执行测试案例并将结果返回给开发人员。完成该过程后,开发人员将进行更改,然后重复该过程,根据需要来回进行多次,直到任务完成。在社区中,贡献者通常会对他们开发的项目负责,因此他们会对这些项目进行广泛的测试和记录,然后再将其交给用户。贴近项目的用户通常会与开发人员协作,帮助测试、翻译和编写文档。这将创建一个更紧密、更快的反馈循环,从而加快开发速度并提高质量。当开发人员Ç…
为什么在工程中混合角色对用户更好的三个原因。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/152638jli5ohrhtoth6i0q.png">Media</a>大多数开源社区没有很多正式的角色。当然,也有一些固定人员帮助处理系统管理员任务、测试、编写文档以及翻译或开发代码。但开源社区的人员通常在不同的角色之间流动,往往同时履行几个角色的职责。相反,大多数传统公司的团队成员都定义了角色,例如,负责文档、技术支持、质量检验和其他领域。为什么开源社区采取共享角色的方法,更重要的是,这种协作方式如何影响产品和客户?<a href="https://nextcloud.com/">Nextcloud</a> 采用了这种社区式的混合角色的做法,我们看到了我们的客户和用户受益颇多。1、更好的产品测试每个测试人员都会说测试是一项困难的工作。你需要了解工程师开发的产品,并且需要设计测试案例、执行测试案例并将结果返回给开发人员。完成该过程后,开发人员将进行更改,然后重复该过程,根据需要来回进行多次,直到任务完成。在社区中,贡献者通常会对他们开发的项目负责,因此他们会对这些项目进行广泛的测试和记录,然后再将其交给用户。贴近项目的用户通常会与开发人员协作,帮助测试、翻译和编写文档。这将创建一个更紧密、更快的反馈循环,从而加快开发速度并提高质量。当开发人员Ç…
Git 前时代:使用 CVS 进行版本控制
我认为要弄明白为什么 Git 的分布式特性是对以前的版本控制系统的较大改善的话,除了折腾 CVS 外,没有更好的办法。Media
via https://linux.cn/article-10319-1.html
我认为要弄明白为什么 Git 的分布式特性是对以前的版本控制系统的较大改善的话,除了折腾 CVS 外,没有更好的办法。Media
via https://linux.cn/article-10319-1.html
Git 前时代:使用 CVS 进行版本控制
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/184906o6039mi866ammq61.jpg">Media</a>GitHub 网站发布于 2008 年。如果你的软件工程师职业生涯跟我一样,也是晚于此时间的话,Git 可能是你用过的唯一版本控制软件。虽然其陡峭的学习曲线和不直观地用户界面时常会遭人抱怨,但不可否认的是,Git 已经成为学习版本控制的每个人的选择。Stack Overflow 2015 年进行的开发者调查显示,69.3% 的被调查者在使用 Git,几乎是排名第二的 Subversion 版本控制系统使用者数量的两倍。<a href="#fn1">1</a> 2015 年之后,也许是因为 Git 太受欢迎了,大家对此话题不再感兴趣,所以 Stack Overflow 停止了关于开发人员使用的版本控制系统的问卷调查。GitHub 的发布时间距离 Git 自身发布时间很近。2005 年,Linus Torvalds 发布了 Git 的首个版本。现在的年经一代开发者可能很难想象“版本控制软件”一词所代表的世界并不仅仅只有 Git,虽然这样的世界诞生的时间并不长。除了 Git 外,还有很多可供选择。那时,开源开发者较喜欢 Subversion,企业和视频游戏公司使用 Perforce (到如今有些仍在用),而 Linux 内核项目依赖于名为 BitKeeper 的版本控制系统。其中一些系统,特别是 BitKeeper,会让年经一代的 Git 用户感觉很熟悉,上手也很快,但大多数相差很大。除了 BitKeeper,Git 之前的版本控制系统都是以不同的架构模型为基础运行的。《<a href="https://ericsink.com/vcbe/index.html">Version Control By Example</a>》一书的作者 Eric Sink 在他的书中对版本控制进行了分类,按其说法,Git 属于第三代版本控制系统,而大多数 Git 的前身,即流行于二十世纪九零年代和二十一世纪早期的系统,都属于第二代版本控制系统。<a href="#fn2">2</a> 第三代版本控制系统是分布式的,第二代是集中式。你们以前大概都听过 Git 被描述为一款“分布式”版本控制系统。我一直都不明白分布式/集中式之间的区别,随后自己亲自安装了一款第二代的集中式版本控件系统,并做了相关实验,至少明白了一些。我安装的版本系统是 CVS。CVS,即 “并发版本系统Concurrent Versions System” 的缩写,是最初的第二代版本控制系统。大约十年间,它是最为流行的版本控制系统,直到 2000 年被 Subversion 所取代。即便如此,Subversion 被认为是 “更好的 CVS”,这更进一步突出了 CVS 在二十世纪九零年代的主导地位。CVS 最早是由一位名叫 Dick Grune 的荷兰科学家在 1986 年开发的,当时有一个编译器项目,他正在寻找一种能与其学生合作的方法。<a href="#fn3">3</a> CVS 最初仅仅只是一个包装了 RCS(修订控制系统Revision Control System) 的 Shell 脚本集合,Grune 想改进这个第一代的版本控制系统。 RCS 是按悲观锁模式工作的,这意味着两个程序员不可以同时处理同一个文件。需要编辑一个文件话,首先得向 RCS 系统请求一个排它锁,锁定此文件直到完成编辑,如果你想编辑的文件有人正在编辑,你就必须等待。CVS 在 RCS 基础上改进,并把悲观锁模型替换成乐观锁模型,迎来了第二代版本控制系统的时代。现在,程序员可以同时编辑同一个文件、合并编辑部分,随后解决合并冲突问题。(后来接管 CVS 项目的工程师 Brian Berliner 于 1990 年撰写了一篇非常易读的关于 CVS 创新的 <a href="https://docs.freebsd.org/44doc/psd/28.cvs/paper.pdf">论文</a>。)从这个意义上来讲,CVS 与 Git 并无差异,因为 Git 也是运行于乐观锁模式的,但也仅仅只有此点相似。实际上,Linus Torvalds 开发 Git 时,他的一个指导原则是 WWCVSND,即 “CVS 不能做的What Would CVS Not Do”。每当他做决策时,他都会力争选择那些在 CVS 设计里没有使用的功能选项。<a href="#fn4">4</a> 所以即使 CVS 要早于 Git 十多年,但它对 Git 的影响是反面的。我非常喜欢折腾 CVS。我认为要弄明白为什么 Git 的分布式特性是对以前的版本控制系统的极大改善的话,除了折腾 CVS 外,没有更好的办法。因此,我邀请你跟我一起来一段激动人心的旅程,并在接下来的十分钟内了解下这个近十年来无人使用的软件。(可以看看文末“修正”部分)CVS 入门CVS 的安装教程可以在其 <a href="https://www.nongnu.org/cvs/">项目主页</a> 上找到。MacOS 系统的话,可以使用 Homebrew 安装。由于 CVS 是集中式的,所以它有客户端和服务端之区分,这种模式 Git 是没有的。两端分别有不同的可执行文件,其区别不太明显。但要开始使用 CVS 的话,即使只在你的本地机器上使用,也必须设置 CVS 的服务后端。CVS 的后端,即所有代码的中央存储区,被叫做存储库 repository。在 Git 中每一个项目都有一个存储库,而 CVS 中一个存储库就包含所有的项目。尽管有办法保证一次只能访问一个项目,但一个中央存储库包含所有东西是改变不了的。要在本地创建存储库的话,请运行 init 命令。你可以像如下所示在家目录创建,也可以在你本地的任何地方创建。<pre class="prettyprint linenums">$ cvs -d ~/sandbox init</pre>CVS 允许你将选项传递给 cvs 命令本身或 init 子命令。出现在 cvs 命令之后的选项默认是全局的,而出现在子命令之后的是子命令特有选项。上面所示例子中,-d 标志是全局选项。在这儿是告诉 CVS 我们想要创建存储库路径在哪里,但一般 -d 标志指的是我们想要使用的且已经存在的存储库位置。一直使用 -d 标志很单调乏味,所以可以设置 CVSROOT 环境变量来代替。因为我们只是在本地操作,所以仅仅使用 -d 参考来传递路径就可以,但也可以包含个主机名。此命令在你的家目录创建了一个名叫 sandbox 的目录。 如果你列出 sandbox 内容,会发现下面包含有名为 CVSROOT 的目录。请不要把此目录与我们的环境变量混淆,它保存存储库的管理文件。恭喜! 你刚刚创建了第一个 CVS 存储库。检入代码假设你决定留存下自己喜欢的颜色清单。因为你是一个有艺术倾向但很健忘的人,所以你键入颜色列表清单,并保存到一个叫 favorites.txt 的文件中:<pre class="prettyprint linenums">blueorangegreendefinitely not yellow</pre>我们也假设你把文件保存到一个叫 colors 的目录中。现在你想要把喜欢的颜色列表清单置于版本控制之下,因为从现在起的五十年间你会回顾下,随着时间的推移自己的品味怎么变化,这件事很有意思。为此,你必须将你的目录导入为新的 CVS 项目。可以使用 import 命令:<pre class="prettyprint linenums">$ cvs -d ~/sandbox import -m "" colors colors initialN colors/favorites.txtNo conflicts created by this import</pre>这里我们再次使用 -d 标志来指定存储库的位置,其余的参数是传输给 import 子命令的。必须要提供一条消息,但这儿没必要,所以留空。下一个参数 colors,指定了存储库中新目录的名字,这儿给的名字跟检入的目录名称一致。最后的两个参数分别指定了 “vendor” 标签和 “release” 标签。我们稍后就会谈论标签。我们刚将 colors 项目拉入 CVS 存储库。将代码引入 CVS 有很多种不同的方法,但这是 《<a href="http://shop.oreilly.com/product/9780974514000.do">Pragmatic Version Control Using CVS</a>》 一书所推荐方法,这是一本关于 CVS 的程序员实用指导书籍。使用这种方法有点尴尬的就是你得重新检出check out工作项目,即使已经存在有 colors 此项目了。不要使用该目录,首先删除它,然后从 CVS 中检出刚才的版本,如下示:<pre class="prettyprint linenums">$ cvs -d ~/sandbox co colorscvs checkout: Updating colorsU colors/favorites.txt</pre>这个过程会创建一个新的目录,也叫做 colors。此目录里会发现你的源文件 favorites.txt,还有一个叫 CVS 的目录。这个 CVS 目录基本上与每个 Git 存储库的 .git…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/184906o6039mi866ammq61.jpg">Media</a>GitHub 网站发布于 2008 年。如果你的软件工程师职业生涯跟我一样,也是晚于此时间的话,Git 可能是你用过的唯一版本控制软件。虽然其陡峭的学习曲线和不直观地用户界面时常会遭人抱怨,但不可否认的是,Git 已经成为学习版本控制的每个人的选择。Stack Overflow 2015 年进行的开发者调查显示,69.3% 的被调查者在使用 Git,几乎是排名第二的 Subversion 版本控制系统使用者数量的两倍。<a href="#fn1">1</a> 2015 年之后,也许是因为 Git 太受欢迎了,大家对此话题不再感兴趣,所以 Stack Overflow 停止了关于开发人员使用的版本控制系统的问卷调查。GitHub 的发布时间距离 Git 自身发布时间很近。2005 年,Linus Torvalds 发布了 Git 的首个版本。现在的年经一代开发者可能很难想象“版本控制软件”一词所代表的世界并不仅仅只有 Git,虽然这样的世界诞生的时间并不长。除了 Git 外,还有很多可供选择。那时,开源开发者较喜欢 Subversion,企业和视频游戏公司使用 Perforce (到如今有些仍在用),而 Linux 内核项目依赖于名为 BitKeeper 的版本控制系统。其中一些系统,特别是 BitKeeper,会让年经一代的 Git 用户感觉很熟悉,上手也很快,但大多数相差很大。除了 BitKeeper,Git 之前的版本控制系统都是以不同的架构模型为基础运行的。《<a href="https://ericsink.com/vcbe/index.html">Version Control By Example</a>》一书的作者 Eric Sink 在他的书中对版本控制进行了分类,按其说法,Git 属于第三代版本控制系统,而大多数 Git 的前身,即流行于二十世纪九零年代和二十一世纪早期的系统,都属于第二代版本控制系统。<a href="#fn2">2</a> 第三代版本控制系统是分布式的,第二代是集中式。你们以前大概都听过 Git 被描述为一款“分布式”版本控制系统。我一直都不明白分布式/集中式之间的区别,随后自己亲自安装了一款第二代的集中式版本控件系统,并做了相关实验,至少明白了一些。我安装的版本系统是 CVS。CVS,即 “并发版本系统Concurrent Versions System” 的缩写,是最初的第二代版本控制系统。大约十年间,它是最为流行的版本控制系统,直到 2000 年被 Subversion 所取代。即便如此,Subversion 被认为是 “更好的 CVS”,这更进一步突出了 CVS 在二十世纪九零年代的主导地位。CVS 最早是由一位名叫 Dick Grune 的荷兰科学家在 1986 年开发的,当时有一个编译器项目,他正在寻找一种能与其学生合作的方法。<a href="#fn3">3</a> CVS 最初仅仅只是一个包装了 RCS(修订控制系统Revision Control System) 的 Shell 脚本集合,Grune 想改进这个第一代的版本控制系统。 RCS 是按悲观锁模式工作的,这意味着两个程序员不可以同时处理同一个文件。需要编辑一个文件话,首先得向 RCS 系统请求一个排它锁,锁定此文件直到完成编辑,如果你想编辑的文件有人正在编辑,你就必须等待。CVS 在 RCS 基础上改进,并把悲观锁模型替换成乐观锁模型,迎来了第二代版本控制系统的时代。现在,程序员可以同时编辑同一个文件、合并编辑部分,随后解决合并冲突问题。(后来接管 CVS 项目的工程师 Brian Berliner 于 1990 年撰写了一篇非常易读的关于 CVS 创新的 <a href="https://docs.freebsd.org/44doc/psd/28.cvs/paper.pdf">论文</a>。)从这个意义上来讲,CVS 与 Git 并无差异,因为 Git 也是运行于乐观锁模式的,但也仅仅只有此点相似。实际上,Linus Torvalds 开发 Git 时,他的一个指导原则是 WWCVSND,即 “CVS 不能做的What Would CVS Not Do”。每当他做决策时,他都会力争选择那些在 CVS 设计里没有使用的功能选项。<a href="#fn4">4</a> 所以即使 CVS 要早于 Git 十多年,但它对 Git 的影响是反面的。我非常喜欢折腾 CVS。我认为要弄明白为什么 Git 的分布式特性是对以前的版本控制系统的极大改善的话,除了折腾 CVS 外,没有更好的办法。因此,我邀请你跟我一起来一段激动人心的旅程,并在接下来的十分钟内了解下这个近十年来无人使用的软件。(可以看看文末“修正”部分)CVS 入门CVS 的安装教程可以在其 <a href="https://www.nongnu.org/cvs/">项目主页</a> 上找到。MacOS 系统的话,可以使用 Homebrew 安装。由于 CVS 是集中式的,所以它有客户端和服务端之区分,这种模式 Git 是没有的。两端分别有不同的可执行文件,其区别不太明显。但要开始使用 CVS 的话,即使只在你的本地机器上使用,也必须设置 CVS 的服务后端。CVS 的后端,即所有代码的中央存储区,被叫做存储库 repository。在 Git 中每一个项目都有一个存储库,而 CVS 中一个存储库就包含所有的项目。尽管有办法保证一次只能访问一个项目,但一个中央存储库包含所有东西是改变不了的。要在本地创建存储库的话,请运行 init 命令。你可以像如下所示在家目录创建,也可以在你本地的任何地方创建。<pre class="prettyprint linenums">$ cvs -d ~/sandbox init</pre>CVS 允许你将选项传递给 cvs 命令本身或 init 子命令。出现在 cvs 命令之后的选项默认是全局的,而出现在子命令之后的是子命令特有选项。上面所示例子中,-d 标志是全局选项。在这儿是告诉 CVS 我们想要创建存储库路径在哪里,但一般 -d 标志指的是我们想要使用的且已经存在的存储库位置。一直使用 -d 标志很单调乏味,所以可以设置 CVSROOT 环境变量来代替。因为我们只是在本地操作,所以仅仅使用 -d 参考来传递路径就可以,但也可以包含个主机名。此命令在你的家目录创建了一个名叫 sandbox 的目录。 如果你列出 sandbox 内容,会发现下面包含有名为 CVSROOT 的目录。请不要把此目录与我们的环境变量混淆,它保存存储库的管理文件。恭喜! 你刚刚创建了第一个 CVS 存储库。检入代码假设你决定留存下自己喜欢的颜色清单。因为你是一个有艺术倾向但很健忘的人,所以你键入颜色列表清单,并保存到一个叫 favorites.txt 的文件中:<pre class="prettyprint linenums">blueorangegreendefinitely not yellow</pre>我们也假设你把文件保存到一个叫 colors 的目录中。现在你想要把喜欢的颜色列表清单置于版本控制之下,因为从现在起的五十年间你会回顾下,随着时间的推移自己的品味怎么变化,这件事很有意思。为此,你必须将你的目录导入为新的 CVS 项目。可以使用 import 命令:<pre class="prettyprint linenums">$ cvs -d ~/sandbox import -m "" colors colors initialN colors/favorites.txtNo conflicts created by this import</pre>这里我们再次使用 -d 标志来指定存储库的位置,其余的参数是传输给 import 子命令的。必须要提供一条消息,但这儿没必要,所以留空。下一个参数 colors,指定了存储库中新目录的名字,这儿给的名字跟检入的目录名称一致。最后的两个参数分别指定了 “vendor” 标签和 “release” 标签。我们稍后就会谈论标签。我们刚将 colors 项目拉入 CVS 存储库。将代码引入 CVS 有很多种不同的方法,但这是 《<a href="http://shop.oreilly.com/product/9780974514000.do">Pragmatic Version Control Using CVS</a>》 一书所推荐方法,这是一本关于 CVS 的程序员实用指导书籍。使用这种方法有点尴尬的就是你得重新检出check out工作项目,即使已经存在有 colors 此项目了。不要使用该目录,首先删除它,然后从 CVS 中检出刚才的版本,如下示:<pre class="prettyprint linenums">$ cvs -d ~/sandbox co colorscvs checkout: Updating colorsU colors/favorites.txt</pre>这个过程会创建一个新的目录,也叫做 colors。此目录里会发现你的源文件 favorites.txt,还有一个叫 CVS 的目录。这个 CVS 目录基本上与每个 Git 存储库的 .git…
4 个 Markdown 开源编辑器
如果你正在寻找一种简便的方法去格式化 Markdown 文本,那么这些编辑器可能会满足你的需求。Media
via https://linux.cn/article-10320-1.html
如果你正在寻找一种简便的方法去格式化 Markdown 文本,那么这些编辑器可能会满足你的需求。Media
via https://linux.cn/article-10320-1.html
4 个 Markdown 开源编辑器
如果你正在寻找一种简便的方法去格式化 Markdown 文本,那么这些编辑器可能会满足你的需求。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/231616mtbtzg50m5p5m7m6.jpg">Media</a>我的文章、散文、博客等等基本上都是在文本编辑器上使用 <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> 写作的。当然,我不是唯一使用 Markdown 写作的人。不仅仅无数的人在使用 Markdown,而且也产生了许多服务于 Markdown 的工具。谁能想到由 John Gruber 和之后的 Aaron Schwartz 创造的一种格式化网页文档的简便的方法如此的受欢迎呢?我的大多数协作都是在文本编辑器上进行,我能理解为什么 Markdown 编辑器会如此受欢迎 —— 可以快速格式化,可以轻便的将文档转换为其他的格式,可以实时预览。如果你想用 Markdown 和寻找一个专用的 Markdown 编辑器,那么这里有四个开源编辑器可能会让你写作更加轻松。Ghostwriter在我使用过的或试过的 Markdown 编辑器中 <a href="https://wereturtle.github.io/ghostwriter/">Ghostwriter</a> 能排进前三。我已经使用或试了不少。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/231627mqxlqrkrqiu9fcdq.png">Media</a>作为一个编辑器,Ghostwriter 就像一个画布,你可以手动进行编辑和添加格式。如果你不想这么做或者只想学习 Markdown 或者不知道如何添加,你可以从 Ghostwriter 的格式化菜单中选择你想要的格式。一般的,它只有一个基本的格式:列表、字符格式化和缩进。所以你必须手动的添加标题、代码。而且它有一个有趣的任务列表选项,很多人都在用 Markdown 去创造任务列"…
如果你正在寻找一种简便的方法去格式化 Markdown 文本,那么这些编辑器可能会满足你的需求。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/231616mtbtzg50m5p5m7m6.jpg">Media</a>我的文章、散文、博客等等基本上都是在文本编辑器上使用 <a href="https://en.wikipedia.org/wiki/Markdown">Markdown</a> 写作的。当然,我不是唯一使用 Markdown 写作的人。不仅仅无数的人在使用 Markdown,而且也产生了许多服务于 Markdown 的工具。谁能想到由 John Gruber 和之后的 Aaron Schwartz 创造的一种格式化网页文档的简便的方法如此的受欢迎呢?我的大多数协作都是在文本编辑器上进行,我能理解为什么 Markdown 编辑器会如此受欢迎 —— 可以快速格式化,可以轻便的将文档转换为其他的格式,可以实时预览。如果你想用 Markdown 和寻找一个专用的 Markdown 编辑器,那么这里有四个开源编辑器可能会让你写作更加轻松。Ghostwriter在我使用过的或试过的 Markdown 编辑器中 <a href="https://wereturtle.github.io/ghostwriter/">Ghostwriter</a> 能排进前三。我已经使用或试了不少。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/231627mqxlqrkrqiu9fcdq.png">Media</a>作为一个编辑器,Ghostwriter 就像一个画布,你可以手动进行编辑和添加格式。如果你不想这么做或者只想学习 Markdown 或者不知道如何添加,你可以从 Ghostwriter 的格式化菜单中选择你想要的格式。一般的,它只有一个基本的格式:列表、字符格式化和缩进。所以你必须手动的添加标题、代码。而且它有一个有趣的任务列表选项,很多人都在用 Markdown 去创造任务列"…
如何在 Linux 中从一个 PDF 文件中移除密码
我知道这个 PDF 文件的密码,但是我不想透露密码。作为代替,我只想移除密码并发送文件给他。Media
via https://linux.cn/article-10321-1.html
我知道这个 PDF 文件的密码,但是我不想透露密码。作为代替,我只想移除密码并发送文件给他。Media
via https://linux.cn/article-10321-1.html
如何在 Linux 中从一个 PDF 文件中移除密码
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/234454fw5uhgh80umgcl88.png">Media</a>今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友。我知道这个 PDF 文件的密码,但是我不想透露密码。作为代替,我只想移除密码并发送文件给他。我开始在因特网上查找一些简单的方法来从 PDF 文件中移除密码保护。在快速 google 搜索后,在 Linux 中,我带来四种方法来从一个 PDF 文件中移除密码。有趣的事是,在几年以前我已经做过这事情但是我忘记了。如果你想知道,如何在 Linux 中从一个 PDF 文件移除密码,继续读!它是不难的。在Linux中从一个PDF文件中移除密码方法 1 – 使用 Qpdf<strong>Qpdf</strong> 是一个 PDF 转换软件,它被用于加密和解密 PDF 文件,转换 PDF 文件到其他等效的 PDF 文件。 Qpdf 在大多数 Linux 发行版中的默认存储库中是可用的,所以你可以使用默认的软件包安装它。例如,Qpdf 可以被安装在 Arch Linux 和它的衍生版,使用 <a href="https://www.ostechnix.com/getting-started-pacman/">pacman</a> ,像下面显示。<pre class="prettyprint linenums">$ sudo pacman -S qpdf</pre>在 Debian、Ubuntu、Linux Mint 上:<pre class="prettyprint linenums">$ sudo apt-get install qpdf</pre>现在,让我们使用 qpdf 从一个 pdf 文件移除密码。我有一个受密码保护的 PDF 文件,名为 secure.pdf。每当我打开这个文件时,它提示我输入密码来显示它的内容。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/234458mixslisxmuuxisrp.png">Media</a>我知道上面 PDF 文件的密码。然而,我不想与任何人共享密码。所以,我将要做的事是简单地移除 PDF 文件的密码,使用 Qpdf…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/234454fw5uhgh80umgcl88.png">Media</a>今天,我碰巧分享一个受密码保护的 PDF 文件给我的一个朋友。我知道这个 PDF 文件的密码,但是我不想透露密码。作为代替,我只想移除密码并发送文件给他。我开始在因特网上查找一些简单的方法来从 PDF 文件中移除密码保护。在快速 google 搜索后,在 Linux 中,我带来四种方法来从一个 PDF 文件中移除密码。有趣的事是,在几年以前我已经做过这事情但是我忘记了。如果你想知道,如何在 Linux 中从一个 PDF 文件移除密码,继续读!它是不难的。在Linux中从一个PDF文件中移除密码方法 1 – 使用 Qpdf<strong>Qpdf</strong> 是一个 PDF 转换软件,它被用于加密和解密 PDF 文件,转换 PDF 文件到其他等效的 PDF 文件。 Qpdf 在大多数 Linux 发行版中的默认存储库中是可用的,所以你可以使用默认的软件包安装它。例如,Qpdf 可以被安装在 Arch Linux 和它的衍生版,使用 <a href="https://www.ostechnix.com/getting-started-pacman/">pacman</a> ,像下面显示。<pre class="prettyprint linenums">$ sudo pacman -S qpdf</pre>在 Debian、Ubuntu、Linux Mint 上:<pre class="prettyprint linenums">$ sudo apt-get install qpdf</pre>现在,让我们使用 qpdf 从一个 pdf 文件移除密码。我有一个受密码保护的 PDF 文件,名为 secure.pdf。每当我打开这个文件时,它提示我输入密码来显示它的内容。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/07/234458mixslisxmuuxisrp.png">Media</a>我知道上面 PDF 文件的密码。然而,我不想与任何人共享密码。所以,我将要做的事是简单地移除 PDF 文件的密码,使用 Qpdf…
为什么未来的学校是开放式的
一个学生对现代教育并不那么悲观的观点。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/08/132045udrlgeuqgqgqka0e.png">Media</a>最近有些人和我说现代教育会是什么样子,我回答说:就像过去一百年一样。我们为什么会对我们的教育体系保持悲观态度呢?这不是一个悲观的观点,而是一个务实的观点。任何花时间在学校的人都会有同样的感觉,我们对教导年轻人的方式固执地抵制变革。随着美国学校开始新的一年,大多数学生回到了桌子排成一排排的教室。教学环境主要以教师为中心,学生的进步由卡内基单位和 A-F 评分来衡量,而合作通常被认为是作弊。我们从哪能够找到证据指出这种工业化模式正在产生所预想的结果?每个孩子都得到个人关注,以培养对学习的热爱,并发展出当今创新经济中茁壮成长所需的技能,我们很可能对现状非常满意。 但是,任何真实客观地看待当前的指标都表明要从基本开始改变。但我的观点并非悲观。 事实上,非常乐观。尽管我们可以很容易的阐述现代教育的问题所在,但我也知道一个例子,教育利益相关者愿意走出那些舒适的环境,并挑战这个对变革无动于衷的体系。教师要与同龄人进行更多的合作,并采取更多方式公开透明的对原型创意进行展示,从而为学生带来真正的创新 —— 而不是通过技术重新包装传统&#…
一个学生对现代教育并不那么悲观的观点。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/08/132045udrlgeuqgqgqka0e.png">Media</a>最近有些人和我说现代教育会是什么样子,我回答说:就像过去一百年一样。我们为什么会对我们的教育体系保持悲观态度呢?这不是一个悲观的观点,而是一个务实的观点。任何花时间在学校的人都会有同样的感觉,我们对教导年轻人的方式固执地抵制变革。随着美国学校开始新的一年,大多数学生回到了桌子排成一排排的教室。教学环境主要以教师为中心,学生的进步由卡内基单位和 A-F 评分来衡量,而合作通常被认为是作弊。我们从哪能够找到证据指出这种工业化模式正在产生所预想的结果?每个孩子都得到个人关注,以培养对学习的热爱,并发展出当今创新经济中茁壮成长所需的技能,我们很可能对现状非常满意。 但是,任何真实客观地看待当前的指标都表明要从基本开始改变。但我的观点并非悲观。 事实上,非常乐观。尽管我们可以很容易的阐述现代教育的问题所在,但我也知道一个例子,教育利益相关者愿意走出那些舒适的环境,并挑战这个对变革无动于衷的体系。教师要与同龄人进行更多的合作,并采取更多方式公开透明的对原型创意进行展示,从而为学生带来真正的创新 —— 而不是通过技术重新包装传统&#…
关于 top 工具的 6 个替代方案
我并不会说它们比 top 更好或者可以完全替代 top,但多了解一些类似的工具总是好的。Media
via https://linux.cn/article-10323-1.html
我并不会说它们比 top 更好或者可以完全替代 top,但多了解一些类似的工具总是好的。Media
via https://linux.cn/article-10323-1.html
关于 top 工具的 6 个替代方案
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/08/134540t9h4rrsd9k68pahm.jpg">Media</a>在 GitHub 和 GitLab 上,不断有来自世界各地的开源应用程序和工具涌现。其中有全新的应用程序,也有针对现有各种被广泛使用的 Linux 程序的替代方案。在本文档中,我会介绍一些针对 <a href="https://www.ostechnix.com/the-top-command-tutorial-with-examples-for-beginners/">top</a> 工具(也就是命令行任务管理器程序)的替代方案。top 工具的替代方案在本文中,将会介绍以下 6 种 top 工具的替代方案:HtopVtopGtopGotopPtopHegemon如果后续有更多类似的工具,原作者会在原文进行更新。如果你对此有兴趣,可以持续关注。Htophtop 是一个流行的开源跨平台交互式进程管理器,也是我最喜欢的系统活动监控工具。htop 是对原版 top 工具的扩展。它最初只是用于 Linux 系统,后来开发者们不断为其添加对其它类 Unix 操作系统的支持,包括 FreeBSD 和 Mac OS。htop 还是一个自由开源软件,它基于 ncurses 并按照 GPLv2 发布。和原版的 top 工具相比,htop 工具有这些优势:htop 比 top 启动更快htop 支持横向滚动和纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行在 top 工具中进行杀死进程、更改进程优先级这些操作时,需要输入进程 ID,而在 htop 工具中则不需要输入在 htop 中可以同时杀死多个进程在 top 中每次输入一个未预设的键都要等待一段时间,尤其是在多个键组成转义字符串的时候就更麻烦了在很多 Linux 发行版的默认软件仓库中,都带有了…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/08/134540t9h4rrsd9k68pahm.jpg">Media</a>在 GitHub 和 GitLab 上,不断有来自世界各地的开源应用程序和工具涌现。其中有全新的应用程序,也有针对现有各种被广泛使用的 Linux 程序的替代方案。在本文档中,我会介绍一些针对 <a href="https://www.ostechnix.com/the-top-command-tutorial-with-examples-for-beginners/">top</a> 工具(也就是命令行任务管理器程序)的替代方案。top 工具的替代方案在本文中,将会介绍以下 6 种 top 工具的替代方案:HtopVtopGtopGotopPtopHegemon如果后续有更多类似的工具,原作者会在原文进行更新。如果你对此有兴趣,可以持续关注。Htophtop 是一个流行的开源跨平台交互式进程管理器,也是我最喜欢的系统活动监控工具。htop 是对原版 top 工具的扩展。它最初只是用于 Linux 系统,后来开发者们不断为其添加对其它类 Unix 操作系统的支持,包括 FreeBSD 和 Mac OS。htop 还是一个自由开源软件,它基于 ncurses 并按照 GPLv2 发布。和原版的 top 工具相比,htop 工具有这些优势:htop 比 top 启动更快htop 支持横向滚动和纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行在 top 工具中进行杀死进程、更改进程优先级这些操作时,需要输入进程 ID,而在 htop 工具中则不需要输入在 htop 中可以同时杀死多个进程在 top 中每次输入一个未预设的键都要等待一段时间,尤其是在多个键组成转义字符串的时候就更麻烦了在很多 Linux 发行版的默认软件仓库中,都带有了…
如何在 Ubuntu 18.04 LTS 中配置 IP 地址
在 Ubuntu 18.04 LTS 中配置 IP 地址的方法和以往使用的配置方法有很大的不同。和旧版本的不同之处在于,Ubuntu 18.04 使用 Netplan 来配置 IP 地址Media
via https://linux.cn/article-10324-1.html
在 Ubuntu 18.04 LTS 中配置 IP 地址的方法和以往使用的配置方法有很大的不同。和旧版本的不同之处在于,Ubuntu 18.04 使用 Netplan 来配置 IP 地址Media
via https://linux.cn/article-10324-1.html
如何在 Ubuntu 18.04 LTS 中配置 IP 地址
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/100932s1ac5lcvvvm6f5f1.jpg">Media</a>在 Ubuntu 18.04 LTS 中配置 IP 地址的方法和以往使用的配置方法有很大的不同。和旧版本的不同之处在于,Ubuntu 18.04 使用 <strong>Netplan</strong> 来配置 IP 地址,<strong>Netplan</strong> 是一个新的命令行网络配置工具。其实在 Ubuntu 17.10 的时候 Ubuntu 开发者就已经介绍过 Netplan 了。接下来要介绍的新的 IP 配置方法不会再用到 /etc/network/interfaces 这个文件,取而代之的是一个 YAML 文件。默认的 Netplan 配置文件一般在 /etc/netplan 目录下。 在这篇教程中,我们会去学习在 <strong>Ubuntu 18.04 LTS</strong> 的最小化服务器中配置静态 IP 和动态 IP 。在 Ubuntu 18.04 LTS 中配置静态 IP 地址首先先找到 Netplan 默认的网络配置文件所在之处:<pre class="prettyprint linenums">$ ls /etc/netplan/50-cloud-init.yaml</pre>我们可以看到,默认的网络配置文件是 50-cloud-init.yaml ,这是一个 YAML 文件。然后我们再看一下这个文件的内容是什么:<pre class="prettyprint linenums">$ cat /etc/netplan/50-cloud-init.yaml</pre>我在之前安装 Ubuntu 18.04 的时候为了从 DHCP 服务器获取 IP 地址已经已经做过了网卡的相关配置,所以详细配置直接看下图:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/100932lxoff3pq4cg4siiu.png">Media</a>可以看到这边有两个网卡,分别是 enp0s3 和 enp0s8 ,并且这两个网卡都配置为从 DHCP 服务器中获取 IP。现在我们给这两个网卡都配置为静态 IP 地址,先用任意一种编辑器来编辑配置文件。<pre class="prettyprint linenums">$ sudo nano /etc/netplan/50-cloud-init.yaml</pre>接下来我们分别添加 IP 地址、子网掩码、网关、DNS 服务器等配置。分别用 192.168.225.50 作为网卡 enp0s3 的 IP 地址, 192.168.225.51 作为&…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/100932s1ac5lcvvvm6f5f1.jpg">Media</a>在 Ubuntu 18.04 LTS 中配置 IP 地址的方法和以往使用的配置方法有很大的不同。和旧版本的不同之处在于,Ubuntu 18.04 使用 <strong>Netplan</strong> 来配置 IP 地址,<strong>Netplan</strong> 是一个新的命令行网络配置工具。其实在 Ubuntu 17.10 的时候 Ubuntu 开发者就已经介绍过 Netplan 了。接下来要介绍的新的 IP 配置方法不会再用到 /etc/network/interfaces 这个文件,取而代之的是一个 YAML 文件。默认的 Netplan 配置文件一般在 /etc/netplan 目录下。 在这篇教程中,我们会去学习在 <strong>Ubuntu 18.04 LTS</strong> 的最小化服务器中配置静态 IP 和动态 IP 。在 Ubuntu 18.04 LTS 中配置静态 IP 地址首先先找到 Netplan 默认的网络配置文件所在之处:<pre class="prettyprint linenums">$ ls /etc/netplan/50-cloud-init.yaml</pre>我们可以看到,默认的网络配置文件是 50-cloud-init.yaml ,这是一个 YAML 文件。然后我们再看一下这个文件的内容是什么:<pre class="prettyprint linenums">$ cat /etc/netplan/50-cloud-init.yaml</pre>我在之前安装 Ubuntu 18.04 的时候为了从 DHCP 服务器获取 IP 地址已经已经做过了网卡的相关配置,所以详细配置直接看下图:<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/100932lxoff3pq4cg4siiu.png">Media</a>可以看到这边有两个网卡,分别是 enp0s3 和 enp0s8 ,并且这两个网卡都配置为从 DHCP 服务器中获取 IP。现在我们给这两个网卡都配置为静态 IP 地址,先用任意一种编辑器来编辑配置文件。<pre class="prettyprint linenums">$ sudo nano /etc/netplan/50-cloud-init.yaml</pre>接下来我们分别添加 IP 地址、子网掩码、网关、DNS 服务器等配置。分别用 192.168.225.50 作为网卡 enp0s3 的 IP 地址, 192.168.225.51 作为&…
如何在 Linux 上管理字体
虽然在 Linux 平台上尚未找到完美的字体渲染方案,但开源平台做的很好一件事的就是允许用户轻松地管理他们的字体。Media
via https://linux.cn/article-10325-1.html
虽然在 Linux 平台上尚未找到完美的字体渲染方案,但开源平台做的很好一件事的就是允许用户轻松地管理他们的字体。Media
via https://linux.cn/article-10325-1.html
如何在 Linux 上管理字体
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/111530pvtueaeqvajzjptz.jpg">Media</a>我不仅写技术文档,还写小说。并且因为我对 GIMP 等工具感到满意,所以我也(LCTT 译注:此处应指使用 GIMP)为自己的书籍创作了封面(并为少数客户做了图形设计)。艺术创作取决于很多东西,包括字体。虽然字体渲染已经在过去的几年里取得了长足进步,但它在 Linux 平台上仍是个问题。如果你在 Linux 和 macOS 平台上比较相同字体的外观,差别是显而易见的,尤其是你要盯着屏幕一整天的时候。虽然在 Linux 平台上尚未找到完美的字体渲染方案,但开源平台做的很好一件事的就是允许用户轻松地管理他们的字体。通过选择、添加、缩放和调整,你可以在 Linux 平台上相当轻松地使用字体。此处,我将分享一些这些年来我的一些技巧,可以帮我在 Linux 上扩展“字体能力”。这些技巧将对那些在开源平台上进行艺术创作的人有特别的帮助。因为 Linux 平台上有非常多可用的桌面界面(每种界面以不同的方式处理字体),因此当桌面环境成为字体管理的中心时,我将主要聚焦在 GNOME 和 KDE 上。话虽如此,让我们开始吧。添加新字体在相当长的一段时间里,我都是一个字体收藏家,甚至有些人会说我有些痴迷。从我使用 Linux 的早期开始,我就总是用相同的方法向我的桌面添加字体。有两种方法可以做到这一点:使字体按…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/111530pvtueaeqvajzjptz.jpg">Media</a>我不仅写技术文档,还写小说。并且因为我对 GIMP 等工具感到满意,所以我也(LCTT 译注:此处应指使用 GIMP)为自己的书籍创作了封面(并为少数客户做了图形设计)。艺术创作取决于很多东西,包括字体。虽然字体渲染已经在过去的几年里取得了长足进步,但它在 Linux 平台上仍是个问题。如果你在 Linux 和 macOS 平台上比较相同字体的外观,差别是显而易见的,尤其是你要盯着屏幕一整天的时候。虽然在 Linux 平台上尚未找到完美的字体渲染方案,但开源平台做的很好一件事的就是允许用户轻松地管理他们的字体。通过选择、添加、缩放和调整,你可以在 Linux 平台上相当轻松地使用字体。此处,我将分享一些这些年来我的一些技巧,可以帮我在 Linux 上扩展“字体能力”。这些技巧将对那些在开源平台上进行艺术创作的人有特别的帮助。因为 Linux 平台上有非常多可用的桌面界面(每种界面以不同的方式处理字体),因此当桌面环境成为字体管理的中心时,我将主要聚焦在 GNOME 和 KDE 上。话虽如此,让我们开始吧。添加新字体在相当长的一段时间里,我都是一个字体收藏家,甚至有些人会说我有些痴迷。从我使用 Linux 的早期开始,我就总是用相同的方法向我的桌面添加字体。有两种方法可以做到这一点:使字体按…
9 个鲜为人知的 Python 数据科学库
除了 pandas、scikit-learn 和 matplotlib,还要学习一些用 Python 进行数据科学的新技巧。Media
via https://linux.cn/article-10326-1.html
除了 pandas、scikit-learn 和 matplotlib,还要学习一些用 Python 进行数据科学的新技巧。Media
via https://linux.cn/article-10326-1.html
9 个鲜为人知的 Python 数据科学库
除了 pandas、scikit-learn 和 matplotlib,还要学习一些用 Python 进行数据科学的新技巧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/115459xoovm8j1z8bvu86z.jpg">Media</a>Python 是一种令人惊叹的语言。事实上,它是世界上增长最快的编程语言之一。它一次又一次地证明了它在各个行业的开发者和数据科学者中的作用。Python 及其库的整个生态系统使其成为全世界用户的恰当选择,无论是初学者还是高级用户。它成功和受欢迎的原因之一是它的一组强大的库,使它如此动态和快速。在本文中,我们将看到 Python 库中的一些数据科学工具,而不是那些常用的工具,如 pandas、scikit-learn 和 matplotlib。虽然像 pandas、scikit-learn 这样的库是机器学习中最常想到的,但是了解这个领域的其他 Python 库也是非常有帮助的。Wget提取数据,尤其是从网络中提取数据,是数据科学家的重要任务之一。<a href="https://pypi.org/project/wget/">Wget</a> 是一个免费的工具,用于从网络上非交互式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,以及通过 HTTP 代理进行访问。因为它是非交互式的,所以即使用户没有登录,它也可以在后台工作。所以下次你想下载一个网站或者网页上的所有图片,wget 会提供帮助。安装:<pre class="prettyprint linenums">$ pip install wget</pre>例子:<pre class="prettyprint linenums">import wgeturl = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'filename = wget.download(url)100% [................................................] 3841532 / 3841532filename'razorback.mp3'</pre>钟摆对于在 Python 中处理日期时间感到沮丧的人来说, <a href="https://github.com/sdispater/pendulum">Pendulum</a> 库是很有帮助的z…
除了 pandas、scikit-learn 和 matplotlib,还要学习一些用 Python 进行数据科学的新技巧。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/115459xoovm8j1z8bvu86z.jpg">Media</a>Python 是一种令人惊叹的语言。事实上,它是世界上增长最快的编程语言之一。它一次又一次地证明了它在各个行业的开发者和数据科学者中的作用。Python 及其库的整个生态系统使其成为全世界用户的恰当选择,无论是初学者还是高级用户。它成功和受欢迎的原因之一是它的一组强大的库,使它如此动态和快速。在本文中,我们将看到 Python 库中的一些数据科学工具,而不是那些常用的工具,如 pandas、scikit-learn 和 matplotlib。虽然像 pandas、scikit-learn 这样的库是机器学习中最常想到的,但是了解这个领域的其他 Python 库也是非常有帮助的。Wget提取数据,尤其是从网络中提取数据,是数据科学家的重要任务之一。<a href="https://pypi.org/project/wget/">Wget</a> 是一个免费的工具,用于从网络上非交互式下载文件。它支持 HTTP、HTTPS 和 FTP 协议,以及通过 HTTP 代理进行访问。因为它是非交互式的,所以即使用户没有登录,它也可以在后台工作。所以下次你想下载一个网站或者网页上的所有图片,wget 会提供帮助。安装:<pre class="prettyprint linenums">$ pip install wget</pre>例子:<pre class="prettyprint linenums">import wgeturl = 'http://www.futurecrew.com/skaven/song_files/mp3/razorback.mp3'filename = wget.download(url)100% [................................................] 3841532 / 3841532filename'razorback.mp3'</pre>钟摆对于在 Python 中处理日期时间感到沮丧的人来说, <a href="https://github.com/sdispater/pendulum">Pendulum</a> 库是很有帮助的z…
Emacs 系列(三): Org 模式的补充
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/195006oz8xr841oko616x3.png">Media</a>这是 <a href="https://changelog.complete.org/archives/tag/emacs2018">Emacs 和 Org 模式系列</a>的第三篇。Todo 的跟进及关键字当你使用 Org 模式来跟进你的 TODO 时,它有多种状态。你可以用 C-c C-t 来快速切换状态。我将它设为这样:<pre class="prettyprint linenums">(setq org-todo-keywords '( (sequence "TODO(t!)" "NEXT(n!)" "STARTED(a!)" "WAIT(w@/!)" "OTHERS(o!)" "|" "DONE(d)" "CANCELLED(c)")))</pre>在这里,我设置了一个任务未完成的五种状态:TODO、NEXT、STARTED、WAIT 及 OTHERS。每一个状态都有单个字的快捷键(t、n、a 等)。管道符(|)之后的状态被认为是“完成”的状态。我有两个“完成”状态:DONE(已经完成)及 CANCELLED(还没完成,但由于其它的原因无法完成)。! 的含义是记录某项更改为状态的时间。我不把这个添加到完成的状态,是因为它们已经被记录了。@ 符号表示带理由的提示,所以当切换到 WAIT 时,Org 模式会问我为什么,并将这个添加到笔记中。以下是项目状态发生变化的例子:<pre class="prettyprint linenums">** DONE This is a test CLOSED: [2018-03-02 Fri 03:05] - State "DONE" from "WAIT" [2018-03-02 Fri 03:05] - State "WAIT" from "TODO" [2018-03-02 Fri 03:05] \\ waiting for pigs to fly - State "TODO" from "NEXT" [2018-03-02 Fri 03:05] - State "NEXT" from "TODO" [2018-03-02 Fri 03:05]</pre>在这里,最新的项目在最上面。议程模式,日程及期限当你处在一个待办事项时,C-c C-s 或 C-c C-d 可以为其设置相应的日程或期限。这些都是在议程模式中的功能。它们的区别在于其意图和表现。日程是你希望在某个时候完成的事情,而期限是在某个特定的时间应该完成的事情。默认情况下,议程视图将在项目௚…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/09/195006oz8xr841oko616x3.png">Media</a>这是 <a href="https://changelog.complete.org/archives/tag/emacs2018">Emacs 和 Org 模式系列</a>的第三篇。Todo 的跟进及关键字当你使用 Org 模式来跟进你的 TODO 时,它有多种状态。你可以用 C-c C-t 来快速切换状态。我将它设为这样:<pre class="prettyprint linenums">(setq org-todo-keywords '( (sequence "TODO(t!)" "NEXT(n!)" "STARTED(a!)" "WAIT(w@/!)" "OTHERS(o!)" "|" "DONE(d)" "CANCELLED(c)")))</pre>在这里,我设置了一个任务未完成的五种状态:TODO、NEXT、STARTED、WAIT 及 OTHERS。每一个状态都有单个字的快捷键(t、n、a 等)。管道符(|)之后的状态被认为是“完成”的状态。我有两个“完成”状态:DONE(已经完成)及 CANCELLED(还没完成,但由于其它的原因无法完成)。! 的含义是记录某项更改为状态的时间。我不把这个添加到完成的状态,是因为它们已经被记录了。@ 符号表示带理由的提示,所以当切换到 WAIT 时,Org 模式会问我为什么,并将这个添加到笔记中。以下是项目状态发生变化的例子:<pre class="prettyprint linenums">** DONE This is a test CLOSED: [2018-03-02 Fri 03:05] - State "DONE" from "WAIT" [2018-03-02 Fri 03:05] - State "WAIT" from "TODO" [2018-03-02 Fri 03:05] \\ waiting for pigs to fly - State "TODO" from "NEXT" [2018-03-02 Fri 03:05] - State "NEXT" from "TODO" [2018-03-02 Fri 03:05]</pre>在这里,最新的项目在最上面。议程模式,日程及期限当你处在一个待办事项时,C-c C-s 或 C-c C-d 可以为其设置相应的日程或期限。这些都是在议程模式中的功能。它们的区别在于其意图和表现。日程是你希望在某个时候完成的事情,而期限是在某个特定的时间应该完成的事情。默认情况下,议程视图将在项目௚…