有所为,有所不为:在 Linux 中使用超级用户权限
sudo 命令允许特权用户以 root 用户身份运行全部或部分命令,但是理解其能做什么和不能做什么很有帮助。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/150241zxirustxuvt8osz8.jpg">Media</a>在你想要使用超级权限临时运行一条命令时,sudo 命令非常方便,但是当它不能如你期望的工作时,你也会遇到一些麻烦。比如说你想在某些日志文件结尾添加一些重要的信息,你可能会尝试这样做:<pre class="prettyprint linenums">$ echo "Important note" >> /var/log/somelog-bash: /var/log/somelog: Permission denied</pre>好吧,看起来你似乎需要一些额外的特权。一般来说,你不能使用你的用户账号向系统日志中写入东西。我们使用 sudo 再尝试一次吧。<pre class="prettyprint linenums">$ sudo !!sudo echo "Important note" >> /var/log/somelog-bash: /var/log/somelog: Permission denied</pre>嗯,它还是没有啥反应。我们来试点不同的吧。<pre class="prettyprint linenums">$ sudo 'echo "Important note" >> /var/log/somelog'sudo: echo "Important note" >> /var/log/somelog: command not found</pre>也可以查看:<a href="https://www.networkworld.com/article/3242170/linux/invaluable-tips-and-tricks-for-troubleshooting-linux.html">在 Linux 下排查故障的宝贵提示和技巧</a>。接下来该干什么?上面在执行完第一条命令后的回应显示,我们缺少向日志文件写入时必须的特权。第二次,我们使用 root 权限运行了第一次的命令,但是返回了一个“没有权限”的错误。第三次,我们把整个命令放在一个引号里面再运行了一遍,返回了一个“没有发现命令”的错误。所以,到底错在哪里了呢?第一条命令:没有 root 特权,你无法向这个日志中写入东西。第二条命令:你的$…
sudo 命令允许特权用户以 root 用户身份运行全部或部分命令,但是理解其能做什么和不能做什么很有帮助。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/150241zxirustxuvt8osz8.jpg">Media</a>在你想要使用超级权限临时运行一条命令时,sudo 命令非常方便,但是当它不能如你期望的工作时,你也会遇到一些麻烦。比如说你想在某些日志文件结尾添加一些重要的信息,你可能会尝试这样做:<pre class="prettyprint linenums">$ echo "Important note" >> /var/log/somelog-bash: /var/log/somelog: Permission denied</pre>好吧,看起来你似乎需要一些额外的特权。一般来说,你不能使用你的用户账号向系统日志中写入东西。我们使用 sudo 再尝试一次吧。<pre class="prettyprint linenums">$ sudo !!sudo echo "Important note" >> /var/log/somelog-bash: /var/log/somelog: Permission denied</pre>嗯,它还是没有啥反应。我们来试点不同的吧。<pre class="prettyprint linenums">$ sudo 'echo "Important note" >> /var/log/somelog'sudo: echo "Important note" >> /var/log/somelog: command not found</pre>也可以查看:<a href="https://www.networkworld.com/article/3242170/linux/invaluable-tips-and-tricks-for-troubleshooting-linux.html">在 Linux 下排查故障的宝贵提示和技巧</a>。接下来该干什么?上面在执行完第一条命令后的回应显示,我们缺少向日志文件写入时必须的特权。第二次,我们使用 root 权限运行了第一次的命令,但是返回了一个“没有权限”的错误。第三次,我们把整个命令放在一个引号里面再运行了一遍,返回了一个“没有发现命令”的错误。所以,到底错在哪里了呢?第一条命令:没有 root 特权,你无法向这个日志中写入东西。第二条命令:你的$…
学习 Linux/*BSD/Unix 的 30 个最佳在线文档
如果你仅仅需要知道某个命令或者某个配置文件的格式那么你可以使用手册页,但是手册页对于 Linux 新手来说并没有太大的帮助。想要通过使用手册页来学习一些新东西不是一个好的选择。Media
via https://linux.cn/article-10311-1.html
如果你仅仅需要知道某个命令或者某个配置文件的格式那么你可以使用手册页,但是手册页对于 Linux 新手来说并没有太大的帮助。想要通过使用手册页来学习一些新东西不是一个好的选择。Media
via https://linux.cn/article-10311-1.html
学习 Linux/*BSD/Unix 的 30 个最佳在线文档
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/183907otf606qf4ddc60c1.jpg">Media</a>手册页(man)是由系统管理员和 IT 技术开发人员写的,更多的是为了作为参考而不是教你如何使用。手册页对于已经熟悉使用 Linux、Unix 和 BSD 操作系统的人来说是非常有用的。如果你仅仅需要知道某个命令或者某个配置文件的格式那么你可以使用手册页,但是手册页对于 Linux 新手来说并没有太大的帮助。想要通过使用手册页来学习一些新东西不是一个好的选择。这里有将提供 30 个学习 Linux 和 Unix 操作系统的最佳在线网页文档。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/184005ap6i6j6mkrhuxyhz.jpg">Dennis Ritchie and Ken Thompson working with UNIX PDP11</a>值得一提的是,相对于 Linux,BSD 的手册页更好。#1:Red Hat Enterprise Linux(RHEL)<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/183929mkn4w1tonddwctdw.png">Red hat Enterprise Linux 文档</a>RHEL 是由红帽公司开发的面向商业市场的 Linux 发行版。红帽的文档是最好的文档之一,涵盖从 RHEL 的基础到一些高级主题比如安全、SELinux、虚拟化、目录服务器、服务器集群、JBOSS 应用程序服务器、高可用性集群(HPC)等。红帽的文档已经被翻译成 22 种语言,发布成多页面 HTML、单页面 HTML、PDF、EPUB 等文件格式。好消息同样的文档你可以用于 Centos 和 Scientific Linux(社区企业发行版)。这些文档随操作系统一起下载提供,也就是说当你没有网络的时候,你也可以使用它们。RHEL 的文档<strong>涵盖从安装到配置器群的所有内容</strong>。唯一的缺点是你需要成为付费用户&#…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/183907otf606qf4ddc60c1.jpg">Media</a>手册页(man)是由系统管理员和 IT 技术开发人员写的,更多的是为了作为参考而不是教你如何使用。手册页对于已经熟悉使用 Linux、Unix 和 BSD 操作系统的人来说是非常有用的。如果你仅仅需要知道某个命令或者某个配置文件的格式那么你可以使用手册页,但是手册页对于 Linux 新手来说并没有太大的帮助。想要通过使用手册页来学习一些新东西不是一个好的选择。这里有将提供 30 个学习 Linux 和 Unix 操作系统的最佳在线网页文档。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/184005ap6i6j6mkrhuxyhz.jpg">Dennis Ritchie and Ken Thompson working with UNIX PDP11</a>值得一提的是,相对于 Linux,BSD 的手册页更好。#1:Red Hat Enterprise Linux(RHEL)<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/183929mkn4w1tonddwctdw.png">Red hat Enterprise Linux 文档</a>RHEL 是由红帽公司开发的面向商业市场的 Linux 发行版。红帽的文档是最好的文档之一,涵盖从 RHEL 的基础到一些高级主题比如安全、SELinux、虚拟化、目录服务器、服务器集群、JBOSS 应用程序服务器、高可用性集群(HPC)等。红帽的文档已经被翻译成 22 种语言,发布成多页面 HTML、单页面 HTML、PDF、EPUB 等文件格式。好消息同样的文档你可以用于 Centos 和 Scientific Linux(社区企业发行版)。这些文档随操作系统一起下载提供,也就是说当你没有网络的时候,你也可以使用它们。RHEL 的文档<strong>涵盖从安装到配置器群的所有内容</strong>。唯一的缺点是你需要成为付费用户&#…
Emacs 系列(二):org 模式介绍
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/222917qmi4mc9o34euemqr.png">Media</a>在我 Emacs 系列中的<a href="https://linux.cn/article-10297-1.html">第一篇文章</a>里,我介绍了我在用了几十年的 vim 后转向了 Emacs,org 模式就是我为什么这样做的原因。org 模式的精简和高效真的震惊了我,它真的是个“杀手”应用。所以,org 模式到底是什么呢?这是我昨天写的:它是一个组织信息的平台,它的主页上这样写着:“一切都是纯文本:org 模式用于记笔记、维护待办事项列表、计划项目和使用快速有效的纯文本系统编写文档。”这是事实,但并不是很准确。org 模式是一个你用来组织事务的小工具。它有一些非常合理的默认设置,但也允许你自己定制。主要突出在这几件事上:<strong>维护待办事项列表</strong>:项目可以分散在 org 文件中,包含附件,有标签、截止日期、时间表。有一个方便的“日程”视图,显示需要做什么。项目也可以重复。<strong>编写文档</strong>:org 模式有个特殊的功能来生成 HTML、LaTeX、幻灯片(用 LaTeX beamer)和其他所有的格式。它也支持直接在缓冲区中运行和以 Emacs 所支持的的语言进行文学编程literate programming。如果你想要深入了解这项功能的话,参阅<a href="http://www.howardism.org/Technical/Emacs/literate-devops.html">这篇文学式 DevOps 的文章</a>。而 <a href="https://orgmode.org/worg/">整个 Worg 网站</a> 是用 org 模式开发的。<strong>记笔记</strong>:对,它也能做笔记。通过全文搜索,文件的交叉引用(类似 wiki),UUID,甚至可以与其…
<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/222917qmi4mc9o34euemqr.png">Media</a>在我 Emacs 系列中的<a href="https://linux.cn/article-10297-1.html">第一篇文章</a>里,我介绍了我在用了几十年的 vim 后转向了 Emacs,org 模式就是我为什么这样做的原因。org 模式的精简和高效真的震惊了我,它真的是个“杀手”应用。所以,org 模式到底是什么呢?这是我昨天写的:它是一个组织信息的平台,它的主页上这样写着:“一切都是纯文本:org 模式用于记笔记、维护待办事项列表、计划项目和使用快速有效的纯文本系统编写文档。”这是事实,但并不是很准确。org 模式是一个你用来组织事务的小工具。它有一些非常合理的默认设置,但也允许你自己定制。主要突出在这几件事上:<strong>维护待办事项列表</strong>:项目可以分散在 org 文件中,包含附件,有标签、截止日期、时间表。有一个方便的“日程”视图,显示需要做什么。项目也可以重复。<strong>编写文档</strong>:org 模式有个特殊的功能来生成 HTML、LaTeX、幻灯片(用 LaTeX beamer)和其他所有的格式。它也支持直接在缓冲区中运行和以 Emacs 所支持的的语言进行文学编程literate programming。如果你想要深入了解这项功能的话,参阅<a href="http://www.howardism.org/Technical/Emacs/literate-devops.html">这篇文学式 DevOps 的文章</a>。而 <a href="https://orgmode.org/worg/">整个 Worg 网站</a> 是用 org 模式开发的。<strong>记笔记</strong>:对,它也能做笔记。通过全文搜索,文件的交叉引用(类似 wiki),UUID,甚至可以与其…
持续基础设施:另一个 CI
想要提升你的 DevOps 效率吗?将基础设施当成你的 CI 流程中的重要的一环。Media
via https://linux.cn/article-10313-1.html
想要提升你的 DevOps 效率吗?将基础设施当成你的 CI 流程中的重要的一环。Media
via https://linux.cn/article-10313-1.html
持续基础设施:另一个 CI
想要提升你的 DevOps 效率吗?将基础设施当成你的 CI 流程中的重要的一环。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/234649ptzfbk9m9ll19bbt.jpg">Media</a>持续交付(CD)和持续集成(CI)是 DevOps 的两个众所周知的方面。但在 CI 大肆流行的今天却忽略了另一个关键性的 I:基础设施infrastructure。曾经有一段时间 “基础设施”就意味着无头headless的黑盒子、庞大的服务器,和高耸的机架 —— 更不用说漫长的采购流程和对盈余负载的错误估计。后来到了虚拟机时代,把基础设施处理得很好,虚拟化 —— 以前的世界从未有过这样。我们不再需要管理实体的服务器。仅仅是简单的点击,我们就可以创建和销毁、开始和停止、升级和降级我们的服务器。有一个关于银行的流行故事:它们实现了数字化,并且引入了在线表格,用户需要手动填写表格、打印,然后邮寄回银行(LCTT 译注:我真的遇到过有人问我这样的需求怎么办)。这就是我们今天基础设施遇到的情况:使用新技术来做和以前一样的事情。在这篇文章中,我们会看到在基础设施管理方面的进步,将基础设施视为一个版本化的组件并试着探索不可变服务器immutable server的概念。在后面的文章中,我们将了解如何使用开源工具来实现持续的基础设施。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/234703chepr86lrl5qy7j4.jpg">continuous infrastructure pipeline</a><em>实践中的持续集成流程</em>这是我们熟悉的 CI,尽早发布、 …
想要提升你的 DevOps 效率吗?将基础设施当成你的 CI 流程中的重要的一环。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/234649ptzfbk9m9ll19bbt.jpg">Media</a>持续交付(CD)和持续集成(CI)是 DevOps 的两个众所周知的方面。但在 CI 大肆流行的今天却忽略了另一个关键性的 I:基础设施infrastructure。曾经有一段时间 “基础设施”就意味着无头headless的黑盒子、庞大的服务器,和高耸的机架 —— 更不用说漫长的采购流程和对盈余负载的错误估计。后来到了虚拟机时代,把基础设施处理得很好,虚拟化 —— 以前的世界从未有过这样。我们不再需要管理实体的服务器。仅仅是简单的点击,我们就可以创建和销毁、开始和停止、升级和降级我们的服务器。有一个关于银行的流行故事:它们实现了数字化,并且引入了在线表格,用户需要手动填写表格、打印,然后邮寄回银行(LCTT 译注:我真的遇到过有人问我这样的需求怎么办)。这就是我们今天基础设施遇到的情况:使用新技术来做和以前一样的事情。在这篇文章中,我们会看到在基础设施管理方面的进步,将基础设施视为一个版本化的组件并试着探索不可变服务器immutable server的概念。在后面的文章中,我们将了解如何使用开源工具来实现持续的基础设施。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/04/234703chepr86lrl5qy7j4.jpg">continuous infrastructure pipeline</a><em>实践中的持续集成流程</em>这是我们熟悉的 CI,尽早发布、 …
如何实现 Linux + Windows 双系统启动
设置你的计算机根据需要启动 Windows 10 或 Ubuntu 18.04。Media
via https://linux.cn/article-10314-1.html
设置你的计算机根据需要启动 Windows 10 或 Ubuntu 18.04。Media
via https://linux.cn/article-10314-1.html
如何实现 Linux + Windows 双系统启动
设置你的计算机根据需要启动 Windows 10 或 Ubuntu 18.04。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/05/221940vot1qz1rxnrxx5qk.png">Media</a>尽管 Linux 是一个有着广泛的硬件和软件支持的操作系统,但事实上有时你仍需要使用 Windows,也许是因为有些不能在 Linux 下运行的重要软件。但幸运地是,双启动 Windows 和 Linux 是很简单的 —— 在这篇文章中我将会向你展示如何实现 Windows 10 + Ubuntu 18.04 双系统启动。在你开始之前,确保你已经备份了你的电脑文件。虽然设置双启动过程不是非常复杂,但意外有可能仍会发生。所以花一点时间来备份你的重要文件以防混沌理论发挥作用。除了备份你的文件之外,考虑制作一份备份镜像也是个不错的选择,虽然这不是必需的且会变成一个更高级的过程。要求为了开始,你将需要以下 5 项东西:1、两个 USB 闪存盘(或者 DVD-R)我推荐用 USB 闪存盘来安装 Windows 和 Ubuntu,因为他们比 DVD 更快。这通常是毋庸置疑的, 但是创建一个可启动的介质会抹除闪存盘上的一切东西。因此,确保闪存盘是空的或者其包含的文件是你不再需要的。如果你的电脑不支持从 USB 启动,你可以创建 DVD 介质来代替。不幸的是,因为电脑上的 DVD 烧录软件似乎各有不同,所以我无法使用这一过程。然而,如果你的 DVD 烧录软件有从一个 ISO 镜像中烧录的选项,这个选项是你需要的。2、一份 Windows 10 许可证如果你的电脑已经安装 Windows 10…
设置你的计算机根据需要启动 Windows 10 或 Ubuntu 18.04。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/05/221940vot1qz1rxnrxx5qk.png">Media</a>尽管 Linux 是一个有着广泛的硬件和软件支持的操作系统,但事实上有时你仍需要使用 Windows,也许是因为有些不能在 Linux 下运行的重要软件。但幸运地是,双启动 Windows 和 Linux 是很简单的 —— 在这篇文章中我将会向你展示如何实现 Windows 10 + Ubuntu 18.04 双系统启动。在你开始之前,确保你已经备份了你的电脑文件。虽然设置双启动过程不是非常复杂,但意外有可能仍会发生。所以花一点时间来备份你的重要文件以防混沌理论发挥作用。除了备份你的文件之外,考虑制作一份备份镜像也是个不错的选择,虽然这不是必需的且会变成一个更高级的过程。要求为了开始,你将需要以下 5 项东西:1、两个 USB 闪存盘(或者 DVD-R)我推荐用 USB 闪存盘来安装 Windows 和 Ubuntu,因为他们比 DVD 更快。这通常是毋庸置疑的, 但是创建一个可启动的介质会抹除闪存盘上的一切东西。因此,确保闪存盘是空的或者其包含的文件是你不再需要的。如果你的电脑不支持从 USB 启动,你可以创建 DVD 介质来代替。不幸的是,因为电脑上的 DVD 烧录软件似乎各有不同,所以我无法使用这一过程。然而,如果你的 DVD 烧录软件有从一个 ISO 镜像中烧录的选项,这个选项是你需要的。2、一份 Windows 10 许可证如果你的电脑已经安装 Windows 10…
如何用 Python 编写你喜爱的 R 函数
R 还是 Python ? Python 脚本模仿易使用的 R 风格函数,使得数据统计变得简单易行。Media
via https://linux.cn/article-10315-1.html
R 还是 Python ? Python 脚本模仿易使用的 R 风格函数,使得数据统计变得简单易行。Media
via https://linux.cn/article-10315-1.html
如何用 Python 编写你喜爱的 R 函数
R 还是 Python ? Python 脚本模仿易使用的 R 风格函数,使得数据统计变得简单易行。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/05/234301vinavcmrrsmn44qx.png">Media</a>&ldquo<a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/titter.gif">Media</a>ython vs. R” 是数据科学和机器学习的现代战争之一。毫无疑问,近年来这两者发展迅猛,成为数据科学、预测分析和机器学习领域的顶级编程语言。事实上,根据 IEEE 最近的一篇文章,Python 已在 <a href="https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages">最受欢迎编程语言排行榜</a> 中超越 C++ 成为排名第一的语言,并且 R 语言也稳居前 10 位。但是,这两者之间存在一些根本区别。<a href="https://www.coursera.org/lecture/r-programming/overview-and-history-of-r-pAbaE">R</a> 语言设计的初衷主要是作为统计分析和数据分析问题的快速原型设计的工具,另一方面,Python 是作为一种通用的、现代的面向对象语言而开发的,类似 C++ 或 Java,但具有更简单的学习曲线和更灵活的语言风格。因此,R 仍在统计学家、定量生物学家、物理学家和经济学家中备受青睐,而 Python 已逐渐成为日常脚本、自动化、后端 Web 开发、分析和通用机器学习框架的顶级语言,拥有广泛的支持基础和开源开发社区。在 Python 环境中模仿函数式编程<a href="http://adv-r.had.co.nz/Functional-programming.html">R 作为函数式编程语言的本质</a>为用户提供了一个极其简洁的用于快速计算概率的接口,还为数据分析问题提供了必不可少的描述统计和推论统计方法(LCTT 译注:统计学从功能上分为描$…
R 还是 Python ? Python 脚本模仿易使用的 R 风格函数,使得数据统计变得简单易行。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/05/234301vinavcmrrsmn44qx.png">Media</a>&ldquo<a href="https://dn-linuxcn.qbox.me/static/image/smiley/default/titter.gif">Media</a>ython vs. R” 是数据科学和机器学习的现代战争之一。毫无疑问,近年来这两者发展迅猛,成为数据科学、预测分析和机器学习领域的顶级编程语言。事实上,根据 IEEE 最近的一篇文章,Python 已在 <a href="https://spectrum.ieee.org/at-work/innovation/the-2018-top-programming-languages">最受欢迎编程语言排行榜</a> 中超越 C++ 成为排名第一的语言,并且 R 语言也稳居前 10 位。但是,这两者之间存在一些根本区别。<a href="https://www.coursera.org/lecture/r-programming/overview-and-history-of-r-pAbaE">R</a> 语言设计的初衷主要是作为统计分析和数据分析问题的快速原型设计的工具,另一方面,Python 是作为一种通用的、现代的面向对象语言而开发的,类似 C++ 或 Java,但具有更简单的学习曲线和更灵活的语言风格。因此,R 仍在统计学家、定量生物学家、物理学家和经济学家中备受青睐,而 Python 已逐渐成为日常脚本、自动化、后端 Web 开发、分析和通用机器学习框架的顶级语言,拥有广泛的支持基础和开源开发社区。在 Python 环境中模仿函数式编程<a href="http://adv-r.had.co.nz/Functional-programming.html">R 作为函数式编程语言的本质</a>为用户提供了一个极其简洁的用于快速计算概率的接口,还为数据分析问题提供了必不可少的描述统计和推论统计方法(LCTT 译注:统计学从功能上分为描$…
5 个保护你隐私的 Firefox 扩展
用这些关注隐私的工具使你的浏览器免于泄露数据。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/112323h6oajqo09jorxan3.jpg">Media</a>在剑桥分析公司Cambridge Analytica这件事后,我仔细研究了我让 Facebook 渗透到我的网络生活的程度。由于我一般担心单点故障,我不是一个使用社交登录的人。我使用密码管理器为每个站点创建唯一的登录(你也应该这样做)。我最担心的 Facebook 对我的数字生活的普遍侵扰。在深入了解剑桥分析公司这件事后,我几乎立即卸载了 Facebook 的移动程序。我还从 Facebook <a href="https://www.facebook.com/help/211829542181913">断开了对所有应用、游戏和网站的连接</a>。是的,这将改变你在 Facebook 上的体验,但它也将保护您的隐私。作为一名有遍布全球朋友的人,保持 Facebook 的社交连接对我来说非常重要。我还仔细审查了其他服务。我检查了 Google、Twitter、GitHub 以及任何未使用的连接应用。但我知道这还不够。我需要我的浏览器主动防止侵犯我隐私的行为。我开始研究如何做到最好。当然,我可以锁定浏览器,但是我需要使我用的网站和工具正常使用,同时试图防止它们泄露数据。以下是五种可在使用浏览器时保护你隐私的工具。前三个扩展可用于 Firefox 和 Chrome,而后两个仅适用于 Firefox。Privacy Badger我已经使用 <a href="https://www.eff.org/privacybadger">Privacy Badger</a> 有一段时间了。其他内容或广告拦截器做得更好吗?也许。很多内容拦截器的问题在于它们的“付费显…
用这些关注隐私的工具使你的浏览器免于泄露数据。<a href="https://dn-linuxcn.qbox.me/data/attachment/album/201812/06/112323h6oajqo09jorxan3.jpg">Media</a>在剑桥分析公司Cambridge Analytica这件事后,我仔细研究了我让 Facebook 渗透到我的网络生活的程度。由于我一般担心单点故障,我不是一个使用社交登录的人。我使用密码管理器为每个站点创建唯一的登录(你也应该这样做)。我最担心的 Facebook 对我的数字生活的普遍侵扰。在深入了解剑桥分析公司这件事后,我几乎立即卸载了 Facebook 的移动程序。我还从 Facebook <a href="https://www.facebook.com/help/211829542181913">断开了对所有应用、游戏和网站的连接</a>。是的,这将改变你在 Facebook 上的体验,但它也将保护您的隐私。作为一名有遍布全球朋友的人,保持 Facebook 的社交连接对我来说非常重要。我还仔细审查了其他服务。我检查了 Google、Twitter、GitHub 以及任何未使用的连接应用。但我知道这还不够。我需要我的浏览器主动防止侵犯我隐私的行为。我开始研究如何做到最好。当然,我可以锁定浏览器,但是我需要使我用的网站和工具正常使用,同时试图防止它们泄露数据。以下是五种可在使用浏览器时保护你隐私的工具。前三个扩展可用于 Firefox 和 Chrome,而后两个仅适用于 Firefox。Privacy Badger我已经使用 <a href="https://www.eff.org/privacybadger">Privacy Badger</a> 有一段时间了。其他内容或广告拦截器做得更好吗?也许。很多内容拦截器的问题在于它们的“付费显…
使用 GNOME Web “安装”独立 Web 应用
你是否经常使用单页 Web 应用(SPA),但失去了一些完整桌面应用的好处?Media
via https://linux.cn/article-10317-1.html
你是否经常使用单页 Web 应用(SPA),但失去了一些完整桌面应用的好处?Media
via https://linux.cn/article-10317-1.html
使用 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 去创造任务列"…