Quantcast
Channel: Linux 中国◆开源社区
Viewing all 13806 articles
Browse latest View live

5 种在 Ubuntu 上释放空间的简单方法

$
0
0

大多数人可能在系统磁盘存储不足的情况下执行释放空间这个操作,也可能在 Linux 系统磁盘存储满了的情况下执行这个操作。

它应该被经常执行,来为安装一个新的应用程序和处理其它文件弥补磁盘存储空间。保持可用空间是 Linux 管理员的一个日常任务,以允许磁盘利用率维持在阈值之下。

这里有一些我们可以清理我们系统空间的方法。

当你有 TB 级存储容量时,可能不需要清理你的系统。但是,如果你空间有限,那么释放磁盘空间就变的不可避免。

在这篇文章中,我将向你展示一些最容易的或简单的方法来清理你的 Ubuntu 系统,获得更多空间。

在 Ubuntu 系统上如何检查可用的空间?

在你的系统上使用 df 命令 来检查当前磁盘利用率。

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            975M     0  975M   0% /dev
tmpfs           200M  1.7M  198M   1% /run
/dev/sda1        30G   16G   13G  55% /
tmpfs           997M     0  997M   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           997M     0  997M   0% /sys/fs/cgroup

图形界面用户可以使用“磁盘利用率分析器工具”来查看当前利用率。

1) 移除不再需要的软件包

下面的命令移除系统不再需要的依赖库和软件包。这些软件包是自动安装的,以使一个安装的软件包满足依赖关系。同样,它也会移除安装在系统中的 Linux 旧内核。它会移除不再被系统需要的孤儿软件包,但是不会清除它们。

$ sudo apt-get autoremove
[sudo] password for daygeek:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  apache2-bin apache2-data apache2-utils galera-3 libaio1 libapr1 libaprutil1
  libaprutil1-dbd-sqlite3 libaprutil1-ldap libconfig-inifiles-perl libdbd-mysql-perl
  libdbi-perl libjemalloc1 liblua5.2-0 libmysqlclient20 libopts25
  libterm-readkey-perl mariadb-client-10.1 mariadb-client-core-10.1 mariadb-common
  mariadb-server-10.1 mariadb-server-core-10.1 mysql-common sntp socat
0 upgraded, 0 newly installed, 25 to remove and 23 not upgraded.
After this operation, 189 MB disk space will be freed.
Do you want to continue? [Y/n]

为清除它们,可以与命令一起使用 --purge 选项。

$ sudo apt-get autoremove --purge
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages will be REMOVED:
  apache2-bin* apache2-data* apache2-utils* galera-3* libaio1* libapr1* libaprutil1*
  libaprutil1-dbd-sqlite3* libaprutil1-ldap* libconfig-inifiles-perl*
  libdbd-mysql-perl* libdbi-perl* libjemalloc1* liblua5.2-0* libmysqlclient20*
  libopts25* libterm-readkey-perl* mariadb-client-10.1* mariadb-client-core-10.1*
  mariadb-common* mariadb-server-10.1* mariadb-server-core-10.1* mysql-common* sntp*
  socat*
0 upgraded, 0 newly installed, 25 to remove and 23 not upgraded.
After this operation, 189 MB disk space will be freed.
Do you want to continue? [Y/n]

2) 清空回收站

有可能你的回收站里面有大量的无用数据。它会占用你的系统空间。最好解决方法之一是在你的系统上清理这些无用的数据,以获取一些可用的空间。

为清理这些,简单地使用文件管理器来清空你的回收站。

3) 清理 APT 缓存文件

Ubuntu 使用 APT 命令(高级软件包工具)用于软件包管理,如:安装、移除、搜索等等。

一般 Linux 操作系统会在各自的目录下保留下载和安装的软件包的缓冲文件。

Ubuntu 也一样,它在你的磁盘上以缓冲的形式保留它下载和安装的每次更新。Ubuntu 在 /var/cache/apt/archives 目录中保留 DEB 软件包的缓冲文件。随着时间推移,这些缓存可能快速增长,并在你的系统上占有很多空间。

运行下面的命令来检查当前 APT 缓存文件的使用率。

$ sudo du -sh /var/cache/apt
147M    /var/cache/apt

下面的命令会清理过时的 deb 软件包。我想说,一点都清理不干净。

$ sudo apt-get autoclean

下面的命令会移除所有在 apt 缓存中的软件包。

$ sudo apt-get clean

4) 卸载不使用的应用程序

这需要你来检查在你的系统上安装的软件包和游戏,删除它们,如果你很少使用的话。

这可以通过 “Ubuntu 软件中心” 简单地做到。

5) 清理缩略图缓存

缓存文件夹是程序存储它们可能再次需要的数据的地方,它是为速度保留的,而不是必需保留的。它可以被再次生成或再次下载。假如它真的填满了你的硬盘,那么你可以删除一些东西而不用担心。

运行下面的命令来检查当前 APT 缓存的利用率。

$ du -sh ~/.cache/thumbnails/
412K    /home/daygeek/.cache/thumbnails/

运行下面的命令来从你的系统中永久地删除它们。

$ rm -rf ~/.cache/thumbnails/*

via: https://www.2daygeek.com/linux-remove-delete-unwanted-junk-files-free-up-space-ubuntu-mint-debian/

作者:Magesh Maruthamuthu 选题:lujun9972 译者:robsean 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


佛罗里达城市在支付赎金后解雇了 IT 部门经理

$
0
0

上周佛罗里达城市 Lake City 在被迫向勒索者支付赎金后解雇了 IT 部门经理,IT 经理的职责之一是备份系统,但勒索软件攻击显示他不称职。Lake City 的计算机网络是在 6 月 10 日感染了恶意程序。

它遭到了三波攻击。首先是一名雇员打开了所收到邮件中的文档,导致 IT 系统感染了 Emotet 木马,然后该木马下载了另一个木马 TrickBot,最后下载了 Ryuk 勒索软件。勒索软件扩散到了城市的整个 IT 系统,加密了文件,索要赎金。市议会最终同意支付接近 50 万美元的赎金。

来源:solidot.org

更多资讯

2019 年 7 月 Android 安全补丁发布:共计修复 33 处安全漏洞

面向所有尚处于支持状态的 Pixel 设备,谷歌于今天发布了 2019 年 7 月的 Android 安全补丁,在修复近期曝光的诸多安全问题之外还添加了各种功能改进。本次安全补丁共有 2019-07-01 和 2019-07-05 两种安全级别,共计修复了 33 处安全漏洞,涉及 Android 系统、框架、库、媒体框架以及包括闭源部分的高通组件等。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190703-2.html 

十年后,恶意软件作者仍在滥用“天堂之门”技术

在黑客电子杂志(在线杂志)首次详细介绍十多年后,即使在今天恶意软件仍然成功地使用“天堂之门”技术来避免防病毒检测。近日,思科的网络安全部门 Talos 发布了一份报告,详细介绍了最近的天堂之门。

来源: ZDNet
详情: http://www.dbsec.cn/zx/20190703-3.html 

《数据安全管理办法》对我们来说意味着什么?

2018 年 3 月,Facebook 剑桥分析事件的爆出,一把扯下了科技公司各自在用户数据保护方面披上的遮羞布。随后 5 月,欧盟正式开始执行“史上最严的数据隐私保护法案”《通用数据保护条例》(GDPR),更是把关于数据隐私的讨论推向了巅峰。

无论是连番的数据泄漏丑闻还是各国政府和机构组织的纷纷表态,2018 年一整年,隐私和数据安全都是一个绕不开的话题,公司和用户都不得不开始重视它背后的经济效益、利用关系以及个人权利。

来源: GeekPark极客公园
详情: http://www.dbsec.cn/zx/20190703-4.html 

机会情报:工信部发文提升数据安全保护能力 指导企业加大投入

工信部日前印发《电信和互联网行业提升网络数据安全保护能力专项行动方案》,提出通过集中开展数据安全合规性评估、专项治理和监督检查,督促基础电信企业和重点互联网企业强化网络数据安全全流程管理,及时整改消除重大数据泄露、滥用等安全隐患。

来源: 中金网
详情: http://www.dbsec.cn/zx/20190703-5.html 

(信息来源于网络,安华金和搜集整理)

专访安全容器 Kata 项目创始人王旭:开源是一件向死而生的事情

$
0
0

6 月 25 日,我代表 Linux 中国社区团队参加了本次 KubeCon 2019(上海)峰会,期间有幸和安全容器 runV 的创始人王旭做了一番长谈,就云原生技术、安全容器、开源与初创企业等话题进行了深入沟通。现将这些话题整理其精要分享给大家。

互联网技术发展速度之快是所有从业者甚至非从业者都能感受到的。尤记得在世纪之交时,那时候互联网刚刚在中国开始向民用普及,不说支撑大规模的网站访问量的相关技术,就连 Linux、负载均衡甚至都没有被普遍使用。而在二十年之后,云计算已经大行其道,当今的技术人员已经言必称虚拟化、容器和 Serverless,就连刚刚准备入行互联网运维行业的新人们都已经从最初觉得考个 Linux 认证就够了到开始问询 Kubernetes 培训哪家强了。

从一届届 LC3、DockerCon 到 KubeCon,蓬勃发展的云计算与容器化似乎已经称霸了互联网领域。这次我带队参加了 6 月 24 ~ 26 日的 KubeCon 大会,对此感受尤为深刻。事实上,这次在上海举办的 KubeCon 2019 距离上次在同一地点举办的同一会议才仅仅过去半年,但是我们依旧在这次大会上看到了层出不穷的大量新技术、新动态。

云与容器的结合,引爆了这一切。

作为容器领域的资深专家,让我们来看看王旭是如何看待容器和云原生领域当前的发展态势的,以及作为这个领域的一家初创技术企业的创始人,他是如何投身到这个领域的,开源又在其间起到了什么作用。

王旭,安全容器项目 runV 的创始人,现已加入蚂蚁金服。

创立于 2015 年的 runV 项目已于 2017 年和另外一个来自英特尔的 Clear 容器项目合并为 Kata 容器项目,并由 OpenStack 基金会(OSF)进行管理,它与来自谷歌的 gVisor 项目并称为目前两大安全容器技术。

开源与初创

要么就去加强容器,要不就是引入别的安全技术来让它像容器一样。

临近 2015 年,Docker 逐渐被业界主流所接受,互联网技术已经有一个比较明显的发展趋势:第一是云,第二是容器。而云加上容器一定会产生隔离性的需求,这应该说是王旭和他的联合创始人赵鹏做安全容器最早的一个思路:要么就去加强容器,要不就是引入别的安全技术来让它像容器一样。这就是 runV 这个项目想法的起源。

runV 发布的同一个星期,英特尔Clear 容器也发布了。2016 年 8 月份,在西雅图的 LinuxCon 上,王旭和 Clear 团队见面交流,双方在一些细节上面展开合作。在 2017 年 9 月份一个会议上,英特尔软件副总裁、开源技术中心总经理 Imad Sousou 提出项目合并,然后放到基金会里管理。当时大家都觉得这是很好的一个思路。

对于 runV 和 Clear 来说,避免了重复开发以及花费精力在如何说明两者的不同上,同时合并之后可以共同推动发展一个社区,一起去寻找更多的用户。同时,两者合并还有更多的意义。 

Kata 容器的意义

Kata 容器最大的意义在于推动了社区的发展。

王旭认为,Kata 容器最大的意义在于推动了社区的发展。在 2018 年之前刚开始做 Kata 容器的时候,王旭他们需要很多的附加进程来模拟 runC 容器的行为,因为 runC 是事实标准,你需要兼容它。但是当 Kata 和谷歌的 gVisor 都出来之后,上游社区就注意到这一点,开始重视,于是推出新的接口,可以语义明确地直接去对话,而不需要再去模拟 runC 的底层行为,把原来的 2N+2 个辅助进程变成了一个进程。另外,既然有了不同的容器运行时,是不是可以在不同的场景下让它们转到不同容器运行时环境上去?于是就有了“运行时类runtime class”这样的结构。Kubernetes 社区做了很多这样改进,它们也在逐步变成事实标准。这样,一个小项目的引入推动了包括从用户到上下游的整个社区相关软件的变动。

安全容器也让更多的业务使用容器变得可能。

同时,安全容器也让更多的业务使用容器变得可能。王旭在蚂蚁金服做面向金融的一些服务往云原生方向发展,需要非常严格的安全标准,这正好和 Kata 这些安全容器项目结合在一起。

增强安全性不可避免的会带来一些会性能或易用性的取舍。王旭他们的做法是,在 Kata 里面增加了一个隔离层,减少用户需要考虑的事情。举个 Docker 的例子,Docker 镜像的开发者和管理员往往不是同一个人,对于管理员来说给出的权限越少越安全,但是对于开发者来说的话,尤其开发和调试的过程中,权限的变少会让开发和调试变得非常困难。对于开发者来说,不能完全理解管理员要做的事情,所以你就会见到很多的 Docker 镜像都是要所有权限的,因为它自己也不知道需要什么权限;此外还有一些动态的情况,很难先验地用程序去完全断定它需要的权限,开发者并不太不确定到底使用了哪些能力。在这个情况下我们做的事情就是把能力整体限制到沙盒里面。在沙盒里面是完整的能力,但是实际上沙盒本身访问不到外层的系统能力,这样对应用是无感知的,操作系统就变得更安全了。确实,对于系统来说安全性和便利性是一对矛盾,你很难在同一个层面上把这个问题完全解决掉。

现在有了“运行时类”,可以指定是否需要使用安全容器。Kubernetes 社区给大家提供 了一个机制,用户可以选用或者不用安全容器,它可以是全局的配置,也可以是 pod 级别的配置。对安全性不太关键的,比如说访问一些不太敏感信息的,可以在安全性上折中一点,可以让性能更好一些。

容器的发展

从早期的 Cgroup 开始,到 LXD/LXC 这样的容器技术的出现,再到 Docker 的的诞生,一下子点燃了整个容器技术生态,紧接着在容器编排系统出现后,并发展到现今 Kubernetes 成为了事实标准。容器领域一直在快速发展。王旭的看法又是怎样的呢?

容器领域正在逐渐往上层发展。

他认为,容器领域正在逐渐往上层发展。互联网技术本身一开始是在架构层面、在底层发展,但是从 Docker 开始兴起时,给大家的感受就是减少了对底层环境的考虑,用完整的环境把应用包装起来变成容器,让它可以随地随地运行。不需要操心运行在什么样的操作系统里,把操作系统这一层干掉,或者说把它变成很窄的一层。

以发行版为例。Linux服务器发行版的核心工作有两件:一是怎么把这个系统安装上;另一个是怎么去尽量平滑管理和升级软件系统。所有的事情其实都是在围绕这两件事情。最初出现了 RPM、APT 这些包管理系统,后来是通过 Chef、Puppet、Ansible 这类配置管理系统自动化的大规模部署,再到现在的 Docker、Kubernetes,一它们都是在做软件管理的事情。原来是操作系统在做这件事情,现在是 Kubernetes 在充当操作系统的位置;对云服务来说的话,这就是无服务器模式。2014 年 AWS 在拉斯维加斯的 re:Invent 大会发布 Lambda 的时候,得到业界非常大的关注。从 Lambda 开始,每个云厂商都逐渐有了自己的无服务器服务。所以他觉得未来的发展方向,应该是向这个方向的。

除此之外,像现在中间件、服务网格也都是这样一个目的,尽量的把应用要做的事情剥离出来,和应用无关的事情全都抽象出来放到底层。

对应用开发者和使用者来说,可以不用关心底层是什么架构、怎么伸缩的,只需要知道到我需要什么服务,只要定义应用,定义 Kubernetes 配置,由它统一管理、自动伸缩和调度就好。基础设施这一层会越来越向一些少数的云厂商集中,而大家更多的精力是帮助开发者做事情,集中精力在那些业务、智能等逻辑部分。

金融与云原生

加入蚂蚁金服之后,王旭致力于将安全容器技术落地到金融级云原生的场景下。由于金融领域的特殊性,云原生实践也需要有相应的变化。

要保证安全性,不仅仅满足应用的,也要满足监管的端到端的安全性要求。

王旭举例说,金融行业不仅仅本身对安全有要求,监管对安全也有要求。所以必须要保证安全性,不仅仅满足应用的,也要满足监管的端到端的安全性要求。另一方面,他们认为安全性包括两方面,一个是应用不能破坏沙盒,泄露到外面,同时应用的底层供应商不是自己时,也可以安全的使用。这就是一个双向的安全问题。

一般而言,作为一个云服务商,会假设所有的用户都是坏人,因为所有的用户都可能去窥探基础设施,它们都可能攻击其他用户,攻击宿主机,所以要做隔离。

而金融级的要求是不光是要做这一层的隔离,而是要做更强的隔离。首先是对应用不能盲目信任,即便是内部应用也不能放任,因为内部的也有可能存在局部的破坏,也有可能会有不安全的代码或者没有被完全验证的测试代码,还有可能会有第三方的代码。反过来,应用既然是金融级的应用,它对环境也有安全要求,所以这是整体的要求。

技术创业与开源

开源对软件公司来说,是一件向死而生的事情。

在早期以开源技术为核心做创业公司时,王旭认为开源是市场推广的一个很好途径。因为软件是有人买才能赚钱,有人用才有人买,所以你如果不开源,就要一家一家地找人去试用,但是你开源了之后大家就可以免费尝试。不过,开源并不是没有缺点,开源对软件公司来说,是一件向死而生的事情。你把最核心的技术开源了,赌的是别人跟不上你的发展速度;或者说别人相信你才有能力把它做到更好,别人才会用你;或者说你给别人看到的当前版本,让他相信下一个版本他也做不到你这么好,所以才愿意跟着你来走,以至于当他维护不了的时候才会愿意来给你掏钱。这应该说是一个在市场背景下的选择。

反过来说,如果说你现在做了一个基础设施领域的软件特别好用,但是你不开源,这个时候就一定会有人做一个一样的开源替代品。那你就看能不能比它做得好,你能不能拿更多的支持、拿到更多资源。这是很困难的。

所以在这个情况下,你不得不去做这种这种极致的推广手段,就是这种不买先送的这种开源式的市场推广手段。目前来看,纯软件实现的、跟硬件没关系这种项目基本上都是采用了开源或者半开源的方式,就是说至少给你一个开源的演示版或基础版。这种方式,从商业上说是迫不得已的一种推广方式。如果你不做,你的用户们用不到的话,他们会去寻找替代品,也一定会有开源替代品出现。

技术创业还会面临一个挑战,就是当你做出来产品以后,很快会有更大的对手入场,对于初创公司来说,面临的压力是颇大的。王旭面临的情况稍微有些不同。

幸运的是,推出和 runV 类似项目的公司是英特尔,在这件事情上并没有很强的盈利导向,这也是双方最终能够合作的前提。王旭认为尽量避免无用的竞争,而是一起来教育和开拓市场,是更有建设性的做法。

做初创公司,做有价值的东西是最重要的。

经历了开源技术为核心的技术创业之后,王旭对如何做技术创业也有一些自己的看法。他认为,对于初创公司来说,很大程度上来说都在赌别人没有做过的事情,因为你重复别人做的事情,还要比别人做的好,是一件很困难的事情。对于项目来说,取决于你想的是什么东西,你的项目想得越多,想出来和别人有什么不同,别人怎么需要你的项目,其实它就越有价值。

做初创公司,做有价值的东西是最重要的,而不是说做一个很好看的架构,最重要的还是要有价值,大家才会用。此外,还要考虑相关的项目,就是你要和谁一起配合工作,你的用户群是谁,你的用户需要去引用的已有项目是哪些,怎么和它们共存,因为完全从零开始造轮子不太可能,你会用到很多已有的成果。

新做一个项目,要考虑很多相关的东西、上下游的东西,各种的兼容性、支持性,要在生态里面去找到你自己的位置。除此之外,还要明白什么是项目最重要的指标,比如开始做 runV 的时候,第一个考虑事情就是安全容器的启动时间,并且不间断的去关注和优化。

最后,做开源项目也并不是说把代码开源出来就行了,还要注重社区的建设。

作为一个开源项目来说,它的社区是非常重要的,有社区才是开源项目。

王旭认为,作为一个开源项目来说,它的社区是非常重要的,有社区才是开源项目,没有社区的项目只是拿出代码给大家看看而已,那样不会有人真的严肃的去使用你的代码。

无论是在 runV 的时期,还是后面 Kata 容器的时期,社区都是王旭和团队非常注重的一环,有很多在早期关注和参与的开发者和组织,到现在王旭也和他们保持着很好的关系。

结语

作为国内少数的基础设施方面的开源软件初创项目的领军人物之一,王旭无疑在这个领域的技术和商业方面拥有独到的经验和感悟,这些思考可以给更多在前沿领域的技术人员和开源初创项目一些启示。

“穿山甲专访”栏目是 Linux 中国社区推出的面向开源界、互联网技术圈的重要领军人物的系列采访,将为大家介绍中国开源领域中一些积极推动开源,谙熟开源思想的技术人,并辨析其思考、挖掘其动因,揭示其背后所发生的事情,为关注开源、有志于开源的企业和技术人标出一条路径。

取名为“穿山甲”寓意有二:取穿山甲挖掘、深入之意来象征技术进步和表征技术领袖的作用;穿山甲是珍稀保护动物,宣传公益。

4 款很酷的终端复用器

$
0
0

Fedora 系统对很多用户来说都很舒适。它有一个令人惊叹的桌面,可以轻松地完成日常任务。而在这光鲜的表面之下是由 Linux 系统提供的支持,而终端是高级用户使用这些底层能力的最简单方法。默认的终端简单且功能有限。但是,终端复用器能让你的终端变得非常强大。本文展示了一些流行的终端多路复用器以及如何安装它们。

为什么要用它?嗯,首先,它可以让你注销你的系统,而同时让你的终端会话不受干扰。退出你的控制台,这样安全,在其他地方旅行时通过远程登录 SSH 继续之前的操作是非常有用的。这里有一些工具可以看下。

最古老和最知名的终端多路复用器之一是 screen。但是,由于其代码不再维护,本文将重点介绍最近的应用。 (“最近的”是相对而言的,其中一些已存在多年!)

Tmux

tmuxscreen 最广泛使用的替代品之一。它有高度可配置的接口。你可以根据需要对 tmux 进行编程以启动特定类型的会话。在前面发表的这篇文章中你会发现更多关于 tmux 的信息:

已经是 tmux 用户?你可能会喜欢这篇使你的 tmux 会话更有效的文章

要安装 tmux,由于你可能已经在终端中,请带上 sudo 使用 dnf

$ sudo dnf install tmux

要开始学习,请运行 tmux 命令。单窗格窗口以你的默认 shell 启动。tmux 使用修饰键来表示接下来会发出命令。默认情况下,此键为 Ctrl+B。如果输入 Ctrl+B, C,你将创建一个带有 shell 的新窗口。

提示:使用 Ctrl+B, ? 进入帮助模式,会列出你可以使用的所有键。为了简单起见,你先查看 bind-key -T prefix 开头的行。这些是你可以在修饰键之后立即使用的键,可以用来配置你的 tmux 会话。你可以按 Ctrl+C 退出帮助模式回 tmux

要完全退出 tmux,请使用标准 exit 命令或 Ctrl+D 退出所有 shell。

Dvtm

你可能最近在 Fedroa Magzine 上看到过一篇 dwm,一个动态窗口管理器的文章。像 dwm 一样,dvtm 用于平铺窗口管理,但是是用在终端中。它的设计坚持 UNIX 的“做好一件事”的理念,在这里是管理终端中的窗口。

安装 dvtm 也很简单。但是,如果你想要前面提到的注销功能,你还需要 abduco 包来处理 dvtm 的会话管理。

$ sudo dnf install dvtm abduco

dvtm 已经映射了许多管理终端窗口的按键。默认情况下,它使用 Ctrl+G 作为其修饰键。这个按键告诉 dvtm 接下来的字符将成为它应该处理的命令。例如, Ctrl+G, C 创建一个新窗口,Ctrl+G, X 将其关闭。

有关使用 dvtm 的更多信息,请查看 dvtm主页,其中包含大量提示和入门信息。

Byobu

虽然 byobu 本身并不是真正的多路复用器 —— 它封装了 tmux 甚至更老的 screen 来添加功能,但它也值得在这里一提。通过帮助菜单和窗口选项卡,以便更加容易地找到那些功能,byobu 使终端复用器更适合初学者。

当然它也可以在 Fedora 仓库中找到。要安装它,请使用以下命令:

$ sudo dnf install byobu

默认情况下,byobu 会在内部运行 screen,因此你可能希望运行 byobu-tmux 来封装 tmux。你可以使用 F9 键打开帮助菜单以获取更多信息,来帮助你入门。

Mtm

mtm 是你可以找到的最小的复用器之一。事实上,它只有大约 1000 行代码!如果你处于受限的环境(例如旧硬件、最小容器等)中,你可能会发现它很有用。要开始使用,你需要安装一些包。

$ sudo dnf install git ncurses-devel make gcc

然后克隆 mtm 所在的仓库:

$ git clone https://github.com/deadpixi/mtm.git

进入 mtm 文件夹并构建程序:

$ make

你可能会收到一些警告,但完成后,你将会有一个非常小的 mtm 程序。使用以下命令运行它:

$ ./mtm

你可以在 GitHub 页面上找到该程序的所有文档。

这里只是一些终端复用器。你有想推荐的么?请在下面留下你的评论,享受在终端中创建窗口吧!


via: https://fedoramagazine.org/4-cool-terminal-multiplexers/

作者:Paul W. Frields 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

SKS Keyserver Network 遭到“中毒”攻击

$
0
0

OpenPGP 项目的两位知名开发者 Robert J. Hansen (rjh) 和 Daniel Kahn Gillmor(dkg) 过去一周成为证书中毒攻击的受害者。未知攻击者利用 OpenPGP 协议本身的缺陷给 rjh 和 dkg 的 OpenPGP 证书下毒。

导入中毒版证书会破坏存在缺陷的 OpenPGP。中毒证书已经存在于 SKS Keyserver Network 中,没有理由认为攻击者在对两个证书下毒后就停止攻击。

dkg 称 Tor 项目的多个证书也遭到攻击。SKS keyserver 或 OpenPGP Working Group 无法在短期内减轻这一攻击的影响,未来发布的 OpenPGP 将会包含一些削弱攻击的方法,但目前没有时间表。权宜之计是不要从 SKS Keyserver Network 提取数据。Keyserver 使用的软件是一名研究员使用 OCaml 语言为自己的博士论文开发的,社区缺乏理解其算法或该语言的人才。软件没人维护,也没有人有资格去修改代码。

来源:solidot.org

更多资讯

Cloudflare 因自己软件的问题导致宕机事故

云服务商 Cloudflare 遭遇了一次持续约半个小时的宕机事故,用户访问报 503 错误。根据官方博客的解释,这个问题是它自己软件导致的。Cloudflare 称,为了改进内联 JavaScript 屏蔽,它在 Cloudflare Web Application Firewall 防火墙内部署了新的规则,其中一条规则包含的正则表达式导致了其在全世界各地的机器 CPU 占用 100%,从而导致了 502 错误。

来源: solidot.org
详情: http://www.dbsec.cn/zx/20190704-2.html 

网络攻击事件发生后 美国海关与边境保护局已暂停与分包商合作

今年 5 月,美国海关与边境保护局(CBP)的分包商遭遇了一起“恶意网络攻击”,导致出入境旅客的照片信息泄露。本周二,《华盛顿邮报》报道称,该机构现已暂停了为其制作车牌扫描仪和其它监控设备的 Perceptics 联邦政府合同。6 月 12 日,CBP 证实该分包商违反政策,将收集到的车牌和出入境旅客照片副本转移到了企业网络中。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190704-3.html 

工信部点名:这些金融 APP 非法收集个人信息

日前,工业和信息化部(以下简称:工信部)发布了 2019 年第一季度电信服务质量通告。通告显示,多款金融 APP 存在非法收集个人信息问题,工信部表示已对违规软件进行下架处理,并责令企业整改。

来源: 人民网-金融频道
详情: http://www.dbsec.cn/zx/20190704-4.html 

“沉默”的黑客袭击了孟加拉国,印度,斯里兰卡和吉尔吉斯斯坦的银行

一群专门攻击银行的黑客再次展开攻击,这次他们分别在孟加拉国,印度,斯里兰卡和吉尔吉斯斯坦攻击了四个目标,来自 Group-IB 的安全研究人员告诉 ZDNet。根据当地媒体的报道,目前公开的唯一事件是影响荷兰孟加拉银行的事件,该银行在5月份发生的几轮 ATM 取款攻击中损失了 300 多万美元。

来源: ZDNet
详情: http://www.dbsec.cn/zx/20190704-5.html 

(信息来源于网络,安华金和搜集整理)

Linux 权限入门指南

$
0
0

Linux 安全权限能够指定谁可以对文件或目录执行什么操作。

与其他系统相比而言 Linux 系统的众多优点中最为主要一个便是 Linux 系统有着更少的安全漏洞和被攻击的隐患。Linux 无疑为用户提供了更为灵活和精细化的文件系统安全权限控制。这可能意味着 Linux 用户理解安全权限是至关重要的。虽然这并不一定是必要的,但是对于初学者来说,理解 Linux 权限的基本知识仍是一个明智之选。

查看 Linux 安全权限

在开始 Linux 权限的相关学习之前,假设我们新建了一个名为 PermissionDemo 的目录。使用 cd 命令进入这个目录,然后使用 ls -l 命令查看 Linux 安全管理权限信息。如果你想以时间为序排列,加上 -t 选项

`ls -lt`

因为这一目录下没有文件,所以这一命令执行不会返回结果。

No output from ls -l command

要了解关于 ls 命令的更多信息,请通过在命令行中输入 man ls 来查看命令手册。

ls man page

现在,让我们创建两个名为 cat.txtdog.txt 的空白文件;这一步使用 touch 命令将更为简便。然后继续使用 mkdir 命令创建一个名为 Pets 的空目录。我们可以再次使用ls -l命令查看这些新文件的权限。

Creating new files and directory

我们需要留意这个命令输出结果的两个部分。

谁拥有权限?

首先要注意的是具有访问文件/目录的权限。请注意下面红色框中突出显示的部分。第一列是指具有访问权限的用户,而第二列是指具有访问权限的

Output from -ls command

用户的类型主要有三种:用户、组和其他人(本质上既不是用户也不是组)。还有一个全部,意思是几乎所有人。

User types

由于我们使用 root 作为当前用户,所以我们可以访问任何文件或目录,因为 root 是超级用户。然而,通常情况并非如此,你可能会被限定使用你的普通用户登录。所有的用户都存储在 /etc/passwd 文件中。

/etc/passwd file

“组“的相关信息保存在 /etc/group 文件中。

/etc/passwd file

他们有什么权限?

我们需要注意的是 ls -l 命令输出结果的另一部分与执行权限有关。以上,我们查看了创建的 dog.txtcat.txt 文件以及 Pets 目录的所有者和组权限都属于 root 用户。我们可以通过这一信息了解到不同用户组所拥有的相应权限,如下面的红色框中的标示。

Enforcing permissions for different user ownership types

我们可以把每一行分解成五部分。第一部分标志着它是文件还是目录:文件用 -(连字符)标记,目录用 d 来标记。接下来的三个部分分别是用户、组和其他人的对应权限。最后一部分是访问控制列表 (ACL)的标志,是记录着特定用户或者用户组对该文件的操作权限的列表。

Different Linux permissions

Linux 的权限级别可以用字母或数字标识。有三种权限类型:

  • 可读取:r4
  • 可写入:w2
  • 可执行:x1

(LCTT 译注:原文此处对应的字母标示 x 误写为 e,已更正)

Privilege types

每个字母符号(rwx)表示有该项权限,而 - 表示无该项权限。在下面的示例中,文件的所有者可读可写,用户组成员仅可读,其他人可读可执行。转换成数字表示法,对应的是 645(如何计算,请参见下图的图示)。

Permission type example

以下是一些示例:

Permission type examples

完成下面的测试,检查你是否掌握了权限管理相关的知识。

Permission type examples


via: https://opensource.com/article/19/6/understanding-linux-permissions

作者:Bryant Son 选题:lujun9972 译者:qfzy1233 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

100 个最佳 Ubuntu 应用(下)

$
0
0

今年早些时候我们发布了一个 2018 年最好的 20 个 Ubuntu 应用列表,可能对很多用户来说都很有用。现在我们几乎到 2018 年下半年了(LCTT 译注:好吧,我们翻译的有些晚了,顺便打个广告,LCTT 欢迎你,有志于通过翻译为开源做些贡献的同学!),所以今天我们打算看一下 Ubuntu 上最好的 100 个应用,你可能会觉得有帮助。

100 Best Ubuntu Apps

很多用户最近从 Microsoft Windows 转换到了 Ubuntu,可能面临着这样一个困境:寻找它们之前使用了数年的操作系统上的应用软件的最好替代应用。Ubuntu 拥有上千个免费使用和开源应用软件,比 Windows 和其它 OS 上的付费软件运行的更好。

下列列表归纳了各种分类下很多应用软件的功能特点,因此,你可以找到匹配你的需求的最好的应用。

(……接前)

67、Filezilla

Filezilla 是一个免费和跨平台的 FTP 应用,包括 Filezilla 客户端和服务器。它让你使用 FTP 和加密的 FTP,如 FTPS 和 SFTP 传输文件,支持 IPv6 网络协议。

它是一个简单的文件传输应用,支持拖放,支持世界范围的各种语言,多任务的强大用户界面,可以控制和配置传输速度。

68、Stacer

Stacer 是一个开源的系统诊断和优化工具,使用 Electron 开发框架开发。它有一个优秀的用户界面,你可以清理缓存内存、启动应用、卸载不需要的应用、掌控后台系统进程。

它也可以让你检查磁盘、内存和 CPU 使用情况,给你下载和上传的实时状态。它看起来像 Ubuntu clener 的强力竞争者,但是两者都有独特的特点。

$ sudo add-apt-repository ppaguzhaninan/stacer
$ sudo apt-get update
$ sudo apt-get install stacer

69、4K 视频下载器

4K 视频下载器是一个简单的视频下载工具,你可以用来从 Vimeo、Facebook、YouTube 和其它在线视频流站点下载视频、播放列表、频道。它支持下载 YouTuBe 播放列表和频道,可以采用 MP4、MKV、M4A、3GP 和很多其它音/视频格式。

4K 视频下载器不是你想的那么简单,除了正常的视频下载,它支持 3D 和 360 度视频下载。它同样提供应用内代理设置、直连 iTunes 等功能。你可以从这里下载。

70、Qalculate

Qalculate 是一个多用途、跨平台的桌面计算器,简单而强大。它可以用来解决复杂的数学问题和等式、货币汇率转换和很多其它日常计算。

它有优秀的用户界面,提供了自定义功能、单位计算、符号计算、四则运算、画图和很多你可以在科学计算器上发现的功能。

71、Hiri

Hiri 是一个跨平台的邮件客户端,使用 Python 语言开发的。它有平滑的用户界面,就它的功能和服务而言,是 Micorsoft Outlook 的很好的替代品。这是很棒的邮件客户端,可以用来发送和接收邮件,管理通讯录、日历和任务。

它是一个具有丰富特点的邮件客户端,提供的功能有集成的任务管理器、邮件同步、邮件评分、邮件过滤等多种功能。

$ sudo snap install hiri

72、Sublime Text

Sublime Text 是一个跨平台的源代码编辑器,用 C++ 和 Python 写的。它有 Python 语言编程接口(API),支持所有主流的编程语言和标记语言。它是简单轻量级的文本编辑器,可被用作 IDE,包含自动补全、语法高亮、分窗口编辑等功能。

这个文本编辑器包括一些额外特点:任意跳转、跳转定义、多选、命令模式和可完全定制的用户界面。

$ sudo apt-get install sublime-text

73、TeXstudio

Texstudio 是一个创建和编辑 LaTex 文件的集成写作环境。它是开源的编辑器,提供了语法高亮、集成的查看器、交互式拼写检查、代码折叠、拖放等特点。

它是跨平台的编辑器,有简单轻量级的用户界面,易于使用。它集成了 BibTex 和 BibLatex 目录管理器,同样有集成的 PDF 查看器。你可以从官网和 Ubuntu 软件中心下载 Texstudio。

74、QtQR

QtQR 是一个基于 Qt 的应用,让你在 Ubuntu 中创建和读取二维码。它是用 Python 和 Qt 开发的,有简单和轻量级的用户界面,你可以编码网站地址、邮件、文本、短消息等。你也可以用网络相机解码二维码。

如果你经常处理产品销售和服务,QtQR 会证明是有用的工具,我觉得没有能在如此低硬件的要求下能和 QtQR 一样提供类似功能顺畅运行的应用了。

$ sudo add-apt-repository ppa: qr-tools-developers/qr-tools-stable
$ sudo apt-get update
$ sudo apt-get install qtqr

75、Kontact

Kontact 是一个为 KDE 桌面环境开发的集成的个人信息管理器(PIM)。它集成了多个软件到一个集合中,在一个用户界面集成了 KMail、KOrganizer和 KAddressBook,你可以管理所有的邮件、通讯录、日程表等。

它可能是 Microsoft Outlook 的非常好的替代品,因为它是快速且高度高配置的消息管理工具。它有很好的用户界面,你会发现很容易上手。

$ sudo apt-get install kontact

76、NitroShare

NitroShare 是一个跨平台、开源的网络文件共享应用。它让你轻松的在局域网的多个操作系统中共享文件。它简单而强大,当在局域网中运行 NitroShare 时,它会自动侦查其它设备。

文件传输速度让 NitroShare 成为一个杰出的文件共享应用,它在能够胜任的硬件中能够达到 GB 级的传输速度。没有必要额外配置,安装完成后你就可以开始文件传输。

$ sudo apt-add-repository ppa:george-edison55/nitroshare
$ sudo apt-get update
$ sudo apt-get install nitroshare

77、Konversation

Konversation 是一个为 KDE 桌面环境开发的开源的网络中继聊天(IRC)客户端。它给了你到 Freenode 网络频道的快速入口,你可以为大多数发行版找到支持。

它是一个简单的聊天客户端,支持 IPv6 链接、SSL 服务器支持、书签、屏幕通知、UTF-8 检测和另外的主题。它易于使用的 GUI 是高度可配置的。

$ sudo apt-get install konversation

78、Discord

如果你是硬核游戏玩家,经常玩在线游戏,我有一个很棒的应用推荐给你。Discord 是一个免费的网络电话应用,尤其是为在线游戏者们设计的。它是一个跨平台的应用,可用来文字或语音聊天。

Discord 是一个非常流行的语音通话应用游戏社区,因为它是完全免费的,它是 Skype、Ventrilo、Teamspeak 的很好的竞争者。它同样提供清晰的语音质量、现代的文本聊天,你可以共享图片、视频和链接。

79、QuiteRSS

QuiteRSS是一个开源的 RSS 和 Atom 新闻摘要的聚合应用。它是跨平台的摘要阅读器,用 Qt 和 C++ 写的。它有简单的用户界面,你可以改变为经典或者报纸模式。它集成了 webkit 浏览器,因此,你可以在单个窗口执行所有任务。

QuiteRSS 自带了很多功能,像内容过滤、自动规划摘要、导入/导出 OPML、系统托盘集成了很多其它摘要阅读器有的特点。

$ sudo apt-get install quiterss

80、MPV Media Player

MPV 是一个自由开源的媒体播放器,基于 MPlayer 和 MPlayer 2。它有简单的用户界面,用户只需要拖放音/视频文件来播放,因为在 GUI 上没有添加媒体文件的选项。

关于 MPV 的一件事是它可以轻松播放 4K 视频,Linux 发行版中的其它媒体播放器可能做不到。它同样给了用户播放在线视频流站点如 YouTube 和 Dailymotion 的能力。

$ sudo add-apt-repository ppa:mc3man/mpv-tests
$ sudo apt-get update
$ sudo apt-get install -y mpv

81、Plume Creator

如果你是一个作家,那么 Plume Creator 是你必不可少的应用,因为你在 Ubuntu 上找不到其它应用像 Plume Creater 这样。写作和编辑故事、章节是繁重的任务,在 Plume Creator 这个令人惊奇的工具的帮助下,将大大帮你简化这个任务。

它是一个开源的应用,拥有精简的用户界面,开始你可能觉得困惑,但不久你就会习惯的。它提供的功能有:编辑笔记、摘要、导出 HTML 和 ODT 格式、富文本编辑。

$ sudo apt-get install plume-creator

82、Chromium Web 浏览器

Chromium 是一个由 Google 开发和发布的开源 Web 浏览器。Chromium 就其外观和特点而言,很容易被误认为是 Chrome。它是轻量级和快速的网络浏览器,拥有最小用户界面。

如果你经常在 Windows 上使用 Google Chrome,而想在 Linux 上寻找一个类似的浏览器,那么 Chromium 就是你的最佳选择,你可以登录到你的 Google 账户以访问包括 Gmail 在内的所有 Google 服务。

83、简单天气指示器

简单天气指示器是用 Python 开发的开源天气提示应用。它自动侦查你的位置,并显示你天气信息像温度,下雨的可能性,湿度,风速和可见度。

简单天气指示器自带一些可配置项,例如位置检测、温度单位、位置可见度开关等等。它是一个还酷的应用,可以根据你的桌面来调整。

84、SpeedCrunch

SpeedCrunch 是一个快速和高精度的科学计算器。它预置了数学函数、用户定义函数、复数和单位转换支持。它有简单的用户界面并易于使用。

这个科学计算器有令人吃惊的特点,如结果预览、语法高亮和自动补全。它是跨平台的,并有多语言支持。

85、Scribus

Scribus 是一个自由开源的桌面出版应用,允许你创建宣传海报、杂志和图书。它是基于 Qt 工具器的跨平台应用,在 GNU 通用公共许可证下发布。它是一个专业的应用,拥有 CMYK 和 ICC 颜色管理的功能、基于 Python 的脚本引擎,和 PDF 创建功能。

Scribus 有相当好的用户界面,易于使用,可以在低配置下轻松使用。在所有的最新的 Linux 发行版的软件中心可以下载它。

86. Cura

Cura 是一个由 David Braam 开发的开源的 3D 打印应用。Ultimaker Cura 是 3D 打印世界最流行的软件,世界范围有百万用户在使用。它遵守 3D 打印模型的 3 步:设计、准备、打印。

它是功能丰富的 3D 打印应用,为 CAD 插件和扩展提供了无缝支持。它是一款简单易于使用的工具,新手艺术家可以马上开始了。它支持主流的文件格式像 STL、3MF 和 OBJ。

87、Nomacs

Nomacs 是一款开源、跨平台的图像浏览器,支持所有主流的图片格式包括 RAW 和 psd 图像。它可以浏览 zip 文件中的图像或者 Microsoft Office 文件并提取到目录。

Nomacs 拥有非常简单的用户界面,图像缩略图在顶部,它提供了一些基本的图像操作特点像修改、调整大小、旋转、颜色纠正等。

$ sudo add-apt-repository ppa:nomacs/stable
$ sudo apt-get update
$ sudo apt-get install nomacs

88、BitTicker

BitTicker 是一个 Ubuntu 上的在线的 BTC-USDT 价格接收器。它是一个简单的工具,能够连接到 bittrex.com 市场,提取最新的 BTC-USDT 价格,并在系统托盘显示 Ubuntu 时钟。

它是简单但有用的工具,如果你经常有规律的投资比特币并且必须了解价格波动的话。

89、Organize My Files

Organize My Files 是一个跨平台的一键点击文件组织工具,它在 Ubuntu 中以 Snap 包的形式获得。它简单而强大,可以帮助你找到未组织的文件,通过简单点击来掌控它们。

它有易于理解的用户界面,强大且快速。它提供了很多功能:自动组织、递归组织、智能过滤和多层文件夹组织等。

90、GnuCash

GnuCash 是一个金融账户软件,在 GNU 公共证书下自由使用。它是个人和商业账户的理想软件。它有简单的用户界面允许你追踪银行账户、股票、收入和花费。

GnuCash 实现了双入口记账系统,基于专业的账户原则来确保帐薄的平衡和报告的精确。

91、Calibre

Calibre 是一个跨平台的开源的面向电子书需求的解决方案。它是一个简单的电子书管理器,提供显示、创建、编辑电子书、组织已存在的电子书到虚拟书库、同步和其它更多功能。

Calibre 同样可以帮你转换电子书到你需要的格式并发送到你的电子书阅读设备。Calibre 是一个很棒的工具,如果你经常阅读和管理电子书的话。

92、MATE 词典

MATE 词典是一个简单的词典,基本上是为 MATE 桌面环境开发的。你可以仅仅输入字然后这个字典会显示意思和引用。

它是简单和轻量级的在线词典,有极简的用户界面。

93、Converseen

Converseen 是免费的跨平台的批量图片处理应用,允许你转换、编辑、调整、旋转、裁剪大量图像,而仅仅需要一次鼠标点击。它提供了使用前缀或后缀图像批量重命名和从一个 Windows 图标文件提取图像等功能。

它有很好的用户界面,易于使用,即时你是一个新手。它也能够转换整个 PDF 文件为图像集合。

94、贴片地图编辑器

贴片地图编辑器是一个免费的关卡地图编辑器,允许你以正交、等轴、和六角等方向编辑地图。这个工具对于游戏开发者在游戏引擎开发阶段内可能非常有用。

它是一个通用的地图编辑器,让你创建升级位置、地图布局、碰撞区域和敌人位置。它保存所有的数据为 tmx 格式。

95. Qmmp

Qmmp 是一个自由开源的音频播放器,用 C++ 和 Qt 开发的。它是跨平台的音频播放器,界面与 Winamp 很相似。 它有简单的直观的用户界面,可以用 Winamp 皮肤替代默认的 UI。

它提供了自动唱片集封面获取、支持多艺术家,另外的插件和扩展支持和其它与 Winamp 相似的特点。

$ sudo add-apt-repository ppa:forkotov02/ppa
$ sudo apt-get update
$ sudo apt-get install qmmp qmmp-q4 qmmp-plugin-pack-qt4

96、Arora

Arora 是一个免费开源的 web 浏览器,提供了专有的下载管理器、书签、私密模式、选项卡式浏览。

Arora web 浏览器由 Benjamin C. Meyer 开发,它由于它的轻量自然灵活的特点在 Linux 用户间很受欢迎。

97、XnSketch

XnSketch 是一个 Ubuntu 上的酷应用,只需要几次点击,就能帮你转换你的图片为卡通或素描图。它展现了 18 个不同的效果,例如:锐化、白描、铅笔画等等。

它有优秀的用户界面,易于使用。一些额外的特点包括透明度和边缘锐化调整、对比度、亮度、饱和度调整。

98、Geany

Geany 是一个简单而轻量级的文本编辑器,像一个集成开发环境。它是跨平台的文本编辑器,支持所有主流编程语言包括 Python、C++、LaTex、Pascal、C#、etc。

Geany 有个类似于 Notepad++ 编程编辑器的简单用户界面。它提供了 IDE 的功能,如代码导航、自动补完、格式高亮,并支持扩展。

$ sudo apt-get install geany

99、Mumble

Mumble 是又一个 VoIP 应用,与 Discord 类似。Mumble 同样最初是为在线游戏玩家设计的,使用客户端-服务器架构提供了端到端的聊天。在 Mumble 上的声音质量非常好,它提供了端到端的加密来确保私密性。

Mumble 是一个开源应用,有简单的用户界面,易于使用。Mumble 在 Ubuntu 软件中心可以下载。

$ sudo apt-get install mumble-server

100、Deluge

Deluge 是一个跨平台的轻量级的 BitTorrent 客户端,能够用来在 Ubuntu 上下载文件。BitTorrent 客户端与很多 Linux 发行版一起发行,但 Deluge 是最好的 BitTorrent 客户端,界面简单、易于使用。

Deluge 拥有你可以在其它 BitTorrent 客户端上发现的所有功能,但是一个功能特别突出,它给了用户从其它设备访问客户端的能力,这样你可以远程下载文件了。

$ sudo add-apt-repository ppa:deluge-team/ppa
$ sudo apt-get update
$ sudo apt-get install deluge

所以这些就是 2018 年我为大家选择的 Ubuntu 上最好的 100 个应用了。所有列出的应用都在 Ubuntu 18.04 上测试了,肯定在老版本上也能运行。


via: https://linuxhint.com/100_best_ubuntu_apps/

作者:Swapnil Tirthakar 选题:lujun9972 译者:warmfrog 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

随着 Zorin 15 的发布,Zorin OS 变得更为强大

$
0
0

长久以来 Zorin OS 一直在 初学者适用的Linux发行版排行 中占有一席之地。的确,它可能不是最受欢迎的,但是对于从 Windows 阵营转向 Linux 的用户而言,它一定是最好的一个发行版。

我还记得,在几年前,我的一位朋友一直坚持让我安装 Zorin OS。就我个人而言,当时我并不喜欢它的 UI 风格。但是,现如今 Zorin OS 15 发布了,这也让我有了更多的理由安装并将它作为我日常的操作系统。

不要担心,在这篇文章里,我会向你介绍你所需要了解的一切。

Zorin 15 中的新特性

让我们来看一下最新版本的 Zorin 有哪些主要的改变。Zorin 15 是基于 Ubuntu 18.04.2 的,因此带来了许多性能上的提升。除此之外,也有许多 UI(用户界面)的改进。

Zorin Connect

Zorin Connect

Zorin OS 15 最主要的一个亮点就是 —— Zorin Connect。如果你使用的是安卓设备,那你一定会喜欢这一功能。类似于 PushBullet(LCTT 译注:PushBullet,子弹推送,一款跨平台推送工具), Zorin Connect 会提升你的手机和桌面一体化的体验。

你可以在桌面上同步智能手机的通知,同时还可以回复它。甚至,你可以回复短信并查看对话。

总的来说,你可以体验到以下功能:

  • 在设备间分享文件或链接
  • 将你的手机作为电脑的遥控器
  • 使用手机控制电脑上媒体的播放,并且当有来电接入时自动停止播放

正如他们在官方公告中提到的, 数据的传输仅限于本地网络之间,并且不会有数据被上传到云端服务器。通过以下操作体验 Zorin Connect ,找到:Zorin menu (Zorin 菜单) > System Tools (系统工具) > Zorin Connect。

新的桌面主题(包含夜间模式!)

Zorin 夜间模式

一提到 “夜间模式” 我就毫无抵抗力。对我而言,这是Zorin OS 15 自带的最好的功能。 

当我启用了界面的深色模式时,我的眼睛感到如此舒适,你不想来试试么?

它不单单是一个深色的主题,而是 UI 更干净直观,并且带有恰到好处的新动画。你可以从 Zorin 内置的外观应用程序里找到所有的相关设置。

自适应背景调整 & 深色浅色模式

你可以选择让桌面背景根据一天中每小时的环境亮度进行自动调整。此外,如果你想避免蓝光给眼睛带来伤害,你可以使用夜间模式。

代办事项应用

Todo

我一直希望支持这个功能,这样我就不必使用其他 Linux 客户端程序来添加任务。很高兴看到内置的应用程序集成并支持谷歌任务和 Todoist。

还有更多么?

是的!其他主要的变化包括对 Flatpak 的支持,支持平板笔记本二合一电脑的触摸布局,DND 模式,以及一些重新设计的应用程序(设置、Libre Office),以此来给你更好的用户体验。

如果你想要了解所有更新和改动的详细信息,你可以查看官方公告。如果你已经是 Zorin 的用户,你应该已经注意到他们的网站也已经启用了一个全新的外观。

下载 Zorin OS 15

注释 : 今年的晚些时候将会推出从 Zorin OS 12 直升 15 版本而不需要重新安装的升级包。

提示一下,Zorin OS 有三个版本:旗舰版本、核心板和轻量版。

如果你想支持开发者和项目,同时解锁 Zorin OS 全部的功能,你可以花 39 美元购买旗舰版本。

如果你只是想要一些基本功能,核心版就可以了(你可以免费下载)。如果是这种情况,比如你有一台旧电脑,那么你可以使用轻量版。

你觉得 Zorin 15 怎么样?

我肯定会尝试一下,将 Zorin OS 作为我的主要操作系统 -(手动狗头)。你呢?你觉得最新的版本怎么样?欢迎在下面的评论中告诉我们。


via: https://itsfoss.com/zorin-os-15-release/

作者:Ankush Das 选题:lujun9972 译者:qfzy1233 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出


你应该选择 Ubuntu 还是 Fedora?

$
0
0

选择 Ubuntu 还是 Fedora?它们的区别是什么?哪一个更好?你应该使用哪一个?看看这篇对比 Ubuntu 和 Fedora 的文章吧。

UbuntuFedora 都是最流行的 Linux 发行版之一,在两者之间做出选择实非易事。在这篇文章里,我会对比一下 Ubuntu 和 Fedora 的不同特点,帮助你进行决策。

请注意,这篇文章主要是从桌面版的角度进行对比的。Fedora 或者 Ubuntu 针对容器的特殊版本不会被考虑在内。

Ubuntu vs Fedora: 哪一个更好?

Ubuntu Vs Fedora

不同 Linux 发行版之间的区别主要体现在以下几个方面:

  • 基础发行版(Debian、红帽、Arch,或者是从头做起)
  • 安装方式
  • 支持的桌面环境
  • 软件包管理、软件支持和更新
  • 硬件支持
  • 开发团队(由企业支持,还是由业余爱好者创建)
  • 发布周期
  • 社区和线上支持

下面我们来看一下 Ubuntu 和 Fedora 之间的相似之处和不同之处。掌握了这些信息之后,也许就更容易在两者之间做出选择了。

安装方式

Ubuntu 的 Ubiquity 安装器是最好用的安装器之一。我认为这是让 Ubuntu 如此流行的重要原因之一,因为在 2004 年 Ubuntu 刚刚诞生的时候,安装 Linux 还是一个很庞大的工程。

Ubuntu 安装器可以让你在大约 10 分钟左右完成安装。大多数情况下,它还可以识别出机器里安装的 Windows 系统,并且只需要几下点击就可以实现 Ubuntu 和 Windows 的双系统启动。

锦上添花的是,在安装 Ubuntu 的过程中你还可以进行系统更新,或者是安装第三方编译码器。

Ubuntu Installer

Fedora 使用的是 Anaconda 安装器,拥有简单易用的界面,同样简化了安装过程。

Fedora Installer | Image Credit Fedora Magazine

Fodora 还提供了一个可以在 Windows 操作系统上下载并创建 Fedora live USB 的写入工具。不过我在大约两年前尝试使用它的时候并不成功,最后使用了一个常规的创建 live USB 的软件。

根据我的经验,安装 Ubuntu 要比安装 Fedora 容易一些。不过这并不是说安装 Fedora 有多困难,只是 Ubuntu 更简单而已。

桌面环境

Ubuntu 和 Fedora 默认都使用 GNOME 桌面环境。

GNOME Desktop in Fedora

Fedora 使用的是原装的 GNOME 桌面,而 Ubuntu 则在此基础上做了个性化调整,让它看起来就像 Ubuntu 之前使用的 Unity 桌面环境。

GNOME desktop customized by Ubuntu

除了 GNOME,Ubuntu 和 Fedora 都提供了一些其它桌面环境的版本。

Ubuntu 有 Kubuntu、Xubuntu、Lubuntu 等版本,分别提供不同的桌面环境。虽然它们都是 Ubuntu 的官方版本,但是却不是由 Canonical 的 Ubuntu 团队直接开发的,而是由另外的团队开发。

Fedora 通过 Fedora Spins 的方式提供了一些不同桌面环境的版本。和 Kubuntu、Lubuntu 等版本不同的是,这些版本并非由独立团队开发,而是由 Fedora 核心团队开发的。

软件包管理和可用软件数量

Ubuntu 使用 APT 软件包管理器提供软件并进行管理(包括应用程序、库,以及其它所需编解码器),而 Fedora 使用 DNF 软件包管理器。

 

Ubuntu 拥有庞大的软件仓库,能够让你轻松安装数以千计的程序,包括 FOSS(LCTT 译注:Free and Open-Source Software 的缩写,自由开源软件)和非 FOSS 的软件。Fedora 则只专注于提供开源软件。虽然这一点在最近的版本里有所转变,但是 Fedora 的软件仓库在规模上仍然比 Ubuntu 的要逊色一些。

一些第三方软件开发者为 Linux 提供像 .exe 文件一样可以点击安装的软件包。在 Ubuntu 里这些软件包是 .deb 格式的,在 Fedora 里是 .rpm 格式的。

大多数软件供应商都为 Linux 用户提供 DEB 和 RPM 文件,但是我也经历过供应商只提供 DEB 文件的情况。比如说 SEO 工具 Screaming Frog 就只提供 DEB 软件包。反过来,一个软件只有 RPM 格式但是没有 DEB 格式这种情况就极其罕见了。

硬件支持

一般来说,Linux 在 WiFi 适配器和显卡的兼容性上容易出现问题,Ubuntu 和 Fedora 都受此影响。以 Nvidia 为例,它的 开源驱动程序 Nouveau 经常会引发系统启动时假死机之类的问题

在 Ubuntu 上你可以轻松安装专有驱动程序作为补充。在很多情况下,这样可以获得对硬件更好的支持。

Installing proprietary driver is easier in Ubuntu

Fedora 则坚持使用开源软件,所以在 Fedora 上安装专有驱动程序就比较困难了。

线上支持和用户群

Ubuntu 和 Fedora 都通过社区论坛提供了很好的线上支持。Ubuntu 主要有两个论坛:UbuntuForumsAsk Ubuntu。Fedora 主要的论坛则是 Ask Fedora

就用户群体而言,Fedora 有着庞大的用户数量。不过 Ubuntu 更为流行,用户数量甚至更为庞大。

Ubuntu 的流行催生了很多专注于 Ubuntu 的网站和博客。所以相比 Fedora,你可以得到更多关于 Ubuntu 的故障排除指导和学习材料。

发布周期

Fedora 每六个月发布一个新版本,每个版本有九个月的支持周期。也就是说,你必须在六个月到九个月之间进行一次系统升级。进行 Fedora 版本升级并不是一件困难的事情,但是需要良好的网络连接。并非所有人都喜欢每九个月进行一次 1.5 GB 的版本升级。

Ubuntu 有两种版本:常规发布版本和长期支持(LTS)发布版本。常规版本和 Fedora 比较类似,每隔六个月发布一次,有九个月的支持周期。

而长期支持发布版本则每两年发布一次,有五年的支持周期。常规发布版本探索新功能特性和新的软件版本,而长期支持发布版本则支持旧版本软件。对于不喜欢经常改变、青睐稳定性的人来说,这是一个很好的选择。

强大的基础发行版

Ubuntu 是基于 Debian 发行版的。Debian 是最大的社区项目之一,并且也是 自由软件 世界里最受尊敬的项目之一。

Fedora 则是红帽公司的一个社区项目。红帽公司是一个专注于 Linux 发行版的公司。Fedora 充当了一个“试验田”的角色(用技术术语来说叫做“上游”),用来在红帽企业级 Linux 发布新功能之前对这些新功能进行试验。

在背后支持的企业

Ubuntu 和 Fedora 都有来自母公司的支持。Ubuntu 源自 Canonical 公司,而 Fedora 源自 红帽公司(现在是 IBM 的一部分)。背后企业的支持非常重要,因为可以确保 Linux 发行版良好的维护。

有一些发行版是由一群独立的业余爱好者们共同创建的,但是在工作压力之下经常会结束。你也许见过一些还算比较流行的发行版项目仅仅是因为这个原因而终止了。很多这样的发行版由于开发者没有足够的业余时间可以投入到项目上而不得不终止,比如 Antergos 和 Korora。

Ubuntu 和 Fedora 的背后都有基于 Linux 的企业的支持,这让它们比其它独立的发行版更胜一筹。

Ubuntu vs Fedora:服务端

到目前为止,我们在 Ubuntu 和 Fedora 之间的对比主要都集中在桌面端。不过如果不考虑一下服务端的话,对 Linux 的讨论就不能算是完整的。

Ubuntu Server

Ubuntu 不仅在桌面端很流行,在服务端也有很强的存在感。如果你能够在桌面端熟练使用 Ubuntu,那么也不会对 Ubuntu 服务器版本感到陌生。我就是从使用 Ubuntu 桌面端开始的,现在我的网站都运行在 Ubuntu 服务器上。

Fedora 同样有服务端版本,并且也有人在使用。但是大多数系统管理者不会喜欢一个每九个月就需要重启升级的服务器。

学习 Fedora 可以更好地帮助你使用红帽企业级 Linux(RHEL)。RHEL 是一个付费产品,你需要购买订阅才可以使用。如果你希望在服务器上运行一个和 Fedora 或者红帽类似的操作系统,我推荐使用 CentOS。CentOS 同样是红帽公司附属的一个社区项目,但是专注于服务端。

结论

你可以看到,Ubuntu 和 Fedora 有很多相似之处。不过就可用软件数量、驱动安装和线上支持来说,Ubuntu 的确更有优势。Ubuntu 也因此成为了一个更好的选择,尤其是对于没有经验的 Linux 新手而言。

如果你想要熟悉红帽的话,Fedora 是一个很好的开始。如果你对 Linux 有一定经验,或者是只想要使用开源软件,Fedora 就是一个很棒的选择。

最终还是需要你自己来决定是使用 Fedora 还是 Ubuntu。我会建议为两个发行版分别创建一个 live USB,并且在虚拟机上体验一下。

你对于 Ubuntu vs Fedora 的看法是什么呢?你更喜欢哪一个发行版,为什么?在评论里分享你的看法吧。


via: https://itsfoss.com/ubuntu-vs-fedora/

作者:Abhishek Prakash 选题:lujun9972 译者:chen-ni 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

首款利用 DNS over HTTPS 隐藏网络流量的恶意软件 Godlua 已经现身

$
0
0

为了提升域名解析服务的安全性,行业内推出了叫做 DNS over HTTPS 的解决方案(简称 DoH)。然而 Network Security 研究实验室的伙计们,已经发现了首个利用 DoH 协议的恶意软件,它就是基于 Lua 编程语言的 Godlua 。这个名字源于 Lua 代码库和其中一个样本源码中包含的神奇字符 God 。

基于 HTTPS 的域名解析服务的增长势头一直很强劲,去年 10 月,互联网工程任务组正式发布了 DoH(RCF 8484)。

尽管并不是新鲜的概念,但首个利用 DoH 的恶意软件,还是让行业提前感受到了影响未来的新一轮正邪攻防战。

Netlab 研究人员在报告中提到,他们发现了一个可疑的 ELF 文件,但最初误以为它只是一款加密货币挖矿木马。

尽管尚未确认或否认任何加密货币的挖掘功能,但他们已证实其行为更像是分布式拒绝服务(DDoS)机器人。

研究人员观察到,该文件会在被感染系统上作为“基于 Lua 的后门”来运行,且注意到至少有一次针对 liuxiaobei.com 的 DDoS 攻击。截至目前,Netlab 已经发现了至少两个未利用传统 DNS 的变种。

借助 DNS over HTTPS,恶意软件可通过加密的 HTTPS 连接来隐藏其 DNS 流量,使得 Godlua 能够躲过 DNS 监控,这已经足够让网络安全专家感到震惊。

据悉,谷歌和 Mozilla 都已经提供了对 DoH 的支持,前者甚至将 DoH 作为其公共 DNS 服务的一部分。此外,Cloudflare 等互联网基础设施服务提供商,也提供了对 DoH 的支持。

来源:cnBeta.COM

更多资讯

外媒曝 PlayStation 严重安全漏洞 黑客可绕过验证盗刷信用卡

据外媒 MP1ST 报道,一位 Mod 制作者向他们来信称索尼 PlayStation 存在一个多年未修复的安全漏洞,可以让黑客绕过信用卡 CVV 验证进行盗刷,外媒调查发现这一漏洞已经大致存在了 5 年之久,让不少人蒙受了损失,但是目前还没能得到修复。

来源: GamerSky 游民星空
详情: http://www.dbsec.cn/zx/20190705-2.html 

用于比特币挖矿的耗电量超过了瑞士全国用电量

剑桥大学的工具显示,比特币的耗电量等同于瑞士全国。该工具估计,比特币目前使用了大约 7 千兆瓦的电,占到了全世界电力供应的 0.21%。它需要 7 个 Dungeness 核电站同时发电。比特币全年的耗电量约等于或略超过瑞士全国的用电量。

来源: solidot.org
详情: http://www.dbsec.cn/zx/20190705-3.html 

YouTube“黑客教学禁令”误伤了许多正常的计算机安全讲解视频

今年早些时候,YouTube 颁布了禁止在视频内容中添加有关黑客攻击和网络钓鱼教程的禁令。然而许多恪守职业道德的“白帽”黑客,也不幸遭到了这家视频网站的错误封杀。比如 Hacker Interchange 联合创始人 Kody Kinzie 就表示,他们只是一家致力于向初学者教授计算机科学与安全方面的知识的公司,但昨天该频道已经无法上传新的视频。

来源: cnBeta.COM 
详情: http://www.dbsec.cn/zx/20190705-4.html 

黑客因对 Daybreak Game 服务器发起 DDoS 攻击而被判入狱两年

据外媒 MSPoweruser 报道,曾于 2013 年年底和 2014 年年初对游戏开发商 Daybreak Game Company(前索尼在线娱乐公司)发起 DDoS 攻击的 Austin Thompson 被判入狱两年,此外他需要向该公司支付至少 95000 美元的赔偿金。

来源: cnBeta.COM
详情: http://www.dbsec.cn/zx/20190705-5.html 

(信息来源于网络,安华金和搜集整理)

在 Linux 上为你的任务创建一个自定义的系统托盘指示器

$
0
0

系统托盘图标如今仍是一个很神奇的功能。只需要右击图标,然后选择想要的动作,你就可以大幅简化你的生活并且减少日常行为中的大量无用的点击。

一说到有用的系统托盘图标,我们很容易就想到 Skype、Dropbox 和 VLC:

Create a Custom System Tray Indicator For Your Tasks on Linux

然而系统托盘图标实际上要更有用得多;你可以根据自己的需求创建自己的系统托盘图标。本指导将会教你通过简单的几个步骤来实现这一目的。

前置条件

我们将要用 Python 来实现一个自定义的系统托盘指示器。Python 可能已经默安装在所有主流的 Linux 发行版中了,因此你只需要确定一下它已经被安装好了(此处使用版本为 2.7)。另外,我们还需要安装好 gir1.2-appindicator3 包。该库能够让我们很容易就能创建系统图标指示器。

在 Ubuntu/Mint/Debian 上安装:

sudo apt-get install gir1.2-appindicator3

在 Fedora 上安装:

sudo dnf install libappindicator-gtk3

对于其他发行版,只需要搜索包含 “appindicator” 的包就行了。

在 GNOME Shell 3.26 开始,系统托盘图标被删除了。你需要安装 这个扩展(或者其他扩展)来为桌面启用该功能。否则你无法看到我们创建的指示器。

基础代码

下面是该指示器的基础代码:

#!/usr/bin/python
import os
from gi.repository import Gtk as gtk, AppIndicator3 as appindicator
def main():
  indicator = appindicator.Indicator.new("customtray", "semi-starred-symbolic", appindicator.IndicatorCategory.APPLICATION_STATUS)
  indicator.set_status(appindicator.IndicatorStatus.ACTIVE)
  indicator.set_menu(menu())
  gtk.main()
def menu():
  menu = gtk.Menu()
  
  command_one = gtk.MenuItem('My Notes')
  command_one.connect('activate', note)
  menu.append(command_one)
  exittray = gtk.MenuItem('Exit Tray')
  exittray.connect('activate', quit)
  menu.append(exittray)
  
  menu.show_all()
  return menu
  
def note(_):
  os.system("gedit $HOME/Documents/notes.txt")
def quit(_):
  gtk.main_quit()
if __name__ == "__main__":
  main()

我们待会会解释一下代码是怎么工作的。但是现在,让我们将该文本保存为 tray.py,然后使用 Python 运行之:

python tray.py

我们会看到指示器运行起来了,如下图所示:

Create a Custom System Tray Indicator For Your Tasks on Linux

现在,让我们解释一下这个魔法的原理:

  • 前三行代码仅仅用来指明 Python 的路径并且导入需要的库。
  • def main() :此为指示器的主函数。该函数的代码用来初始化并创建指示器。
  • indicator = appindicator.Indicator.new("customtray","semi-starred-symbolic",appindicator.IndicatorCategory.APPLICATION_STATUS) :这里我们指明创建一个名为 customtray 的新指示器。这是指示器的唯一名称,这样系统就不会与其他运行中的指示器搞混了。同时我们使用名为 semi-starred-symbolic 的图标作为指示器的默认图标。你可以将之改成任何其他值;比如 firefox (如果你希望该指示器使用 FireFox 的图标),或任何其他你想用的图标名。最后与 APPLICATION_STATUS 相关的部分是指明指示器类别/范围的常规代码。
  • indicator.set_status(appindicator.IndicatorStatus.ACTIVE):这一行激活指示器。
  • indicator.set_menu(menu()):这里说的是我们想使用 menu() 函数(我们会在后面定义) 来为我们的指示器创建菜单项。这很重要,可以让你右击指示器后看到一个可以实施行为的列表。
  • gtk.main():运行 GTK 主循环。
  • menu() 中我们定义了想要指示器提供的行为或项目。command_one = gtk.MenuItem('My Notes') 仅仅使用文本 “My notes” 来初始化第一个菜单项,接下来 command_one.connect('activate',note) 将菜单的 activate 信号与后面定义的 note() 函数相连接;换句话说,我们告诉我们的系统:“当该菜单项被点击,运行 note() 函数”。最后,menu.append(command_one) 将菜单项添加到列表中。
  • exittray 相关的行是为了创建一个退出的菜单项,以便让你在想要的时候关闭指示器。
  • menu.show_all() 以及 return menu 只是返回菜单项给指示器的常规代码。
  • note(_) 下面是点击 “My Notes” 菜单项时需要执行的代码。这里只是 os.system("gedit $HOME/Documents/notes.txt") 这一句话;os.system 函数允许你在 Python 中运行 shell 命令,因此这里我们写了一行命令来使用 gedit 打开家目录下 Documents 目录中名为 notes.txt 的文件。例如,这个可以称为你今后的日常笔记程序了!

添加你所需要的任务

你只需要修改代码中的两块地方:

  1. menu() 中为你想要的任务定义新的菜单项。
  2. 创建一个新的函数让给该菜单项被点击时执行特定的行为。

所以,比如说你想要创建一个新菜单项,在点击后,会使用 VLC 播放硬盘中某个特定的视频/音频文件?要做到这一点,只需要在第 17 行处添加下面三行内容:

command_two = gtk.MenuItem('Play video/audio')
command_two.connect('activate', play)
menu.append(command_two)

然后在第 30 行添加下面内容:

def play(_):
  os.system("vlc /home/<username>/Videos/somevideo.mp4")

/home//Videos/somevideo.mp4` 替换成你想要播放的视频/音频文件路径。现在保存该文件然后再次运行该指示器:

python tray.py

你将会看到:

Create a Custom System Tray Indicator For Your Tasks on Linux

而且当你点击新创建的菜单项时,VLC 会开始播放!

要创建其他项目/任务,只需要重复上面步骤即可。但是要小心,需要用其他命令来替换 command_two,比如 command_three,这样在变量之间才不会产生冲突。然后定义新函数,就像 play(_) 函数那样。

可能性是无穷的;比如我用这种方法来从网上获取数据(使用 urllib2 库)并显示出来。我也用它来在后台使用 mpg123 命令播放 mp3 文件,而且我还定义了另一个菜单项来 killall mpg123 以随时停止播放音频。比如 Steam 上的 CS:GO 退出很费时间(窗口并不会自动关闭),因此,作为一个变通的方法,我只是最小化窗口然后点击某个自建的菜单项,它会执行 killall -9 csgo_linux64 命令。

你可以使用这个指示器来做任何事情:升级系统包、运行其他脚本——字面上的任何事情。

自动启动

我们希望系统托盘指示器能在系统启动后自动启动,而不用每次都手工运行。要做到这一点,只需要在自启动应用程序中添加下面命令即可(但是你需要将 tray.py 的路径替换成你自己的路径):

nohup python /home/<username>/tray.py &

下次重启系统,指示器会在系统启动后自动开始工作了!

结论

你现在知道了如何为你想要的任务创建自己的系统托盘指示器了。根据每天需要运行的任务的性质和数量,此方法可以节省大量时间。有些人偏爱从命令行创建别名,但是这需要你每次都打开终端窗口或者需要有一个可用的下拉式终端仿真器,而这里,这个系统托盘指示器一直在工作,随时可用。

你以前用过这个方法来运行你的任务吗?很想听听你的想法。


via: https://fosspost.org/tutorials/custom-system-tray-icon-indicator-linux

作者:M.Hanny Sabbagh 选题:lujun9972 译者:lujun9972 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

神话还是现实?Docker 和 Kubernetes 的完美架构

$
0
0

在 Docker 和 Kubernetes 时代,软件开发的世界发生了怎样的变化?有可能使用这些技术一劳永逸地构建一个放之四海而皆准的架构吗?当所有东西都“打包”在容器中时,有可能统一开发和集成的过程吗?这些决策有什么要求?它们会带来什么限制?它们会让开发人员的生活变得更轻松,还是会增加不必要的复杂性?

是时候讨论和阐明这些(以及其它一些)问题了!(在本文和原创插图中)

本文将带你踏上从现实到开发过程到架构再回到现实的旅程,在沿途的每一站回答最重要的问题。我们将尝试确定一些应该成为体系架构一部分的组件和原则,并在不过多深入实现细节的情况下展示一些示例。

这篇文章的结论可能会让你不高兴或高兴。这完全取决于你的个人经验,你对这个分为三章的故事的看法,甚至可能取决于你阅读时的心情。请在文末发表评论或提出问题,让我知道你的想法!

一、从现实到开发流程

在很大程度上,我所见过或有幸参与建立的所有开发过程都服务于一个简单的目标 ——  降低将一个想法变成现实、并交付生产的时间,同时保持一定程度的代码质量。

这个想法是好是坏并不重要。坏主意来来去去,你可能只是尝试一下,然后拒绝它们,让它们自生自灭。值得一提的是,从一个坏主意中回退rolling back的责任落在将你的开发流程自动化的机器人肩上。

持续集成和交付(CI/CD)似乎是软件开发世界中的一根救命稻草。毕竟,还有什么比这更简单的呢?你有想法,你有代码,所以去做吧!如果不是存在一个小问题的话,这将会是完美无缺的 —— 如果与贵公司特有的技术和业务流程相分离,集成和交付流程将很难正规化。

然而,尽管这个任务看起来很复杂,生活还是在不断引入优秀的想法,让我们(当然是我自己)更接近于建立一个几乎在任何场合都有用的完美机制。对我来说,实现这种机制的最近一步是 Docker 和 Kubernetes,它们的抽象层次和意识形态方法让我认为现有问题中的 80% 都可以通过几乎相同的方法来解决。

剩下的 20% 我们也无法忽视。但是这正是你可以把你内在的创造性天才集中于其上的有趣的工作,而不是用于处理重复性的日常任务。专注于“架构框架”architectural framework可以让你忘记那 80% 已经解决掉的问题。

所有这些意味着什么,Docker 是如何解决开发流程中的问题的?让我们来看一个简单的流程,这对于大多数工作环境来说也是足够的:

通过适当的方法,你可以自动化和统一以下序列中的所有内容,并在未来几个月内忘掉它。

建立开发环境

一个项目应该包含一个 docker-compose.yml 文件,这样你就不用考虑在本地机器上运行应用程序/服务需要做什么和怎么做了。一个简单的 docker-compose up 命令就能启动你的应用程序及其所有依赖项、用预制数据填充数据库、上传本地代码到容器内、启用代码跟踪以便动态编译,并最终在预期的端口开始接收和响应请求。即使是在设置新服务时,你也不必担心如何启动、向哪里提交代码更改或使用哪些框架。所有这些都应该在标准说明中预先描述,并由不同配置的服务模板决定: frontendbackendworker

自动化测试

关于“黑盒”你只需要知道,所有该有的东西都已经打包到里面了。是或否,1 或 0。更多关于我为什么将容器称为黑盒的信息,将在本文的后面介绍。有了数量有限的可以在容器内执行的命令,以及描述其所有依赖关系的 docker-compose.yml,你就可以轻松地自动化和统一测试工作,而无需过多关注实现细节。 

例如,像这样

在这里,测试不仅意味着单元测试,还意味着功能测试、集成测试、检查代码风格和重复代码、检查过时的依赖关系、可能使用违反许可证的软件包以及许多其他事情。关键是所有这些都应该封装在你的 Docker 镜像中。

系统交付

你想在何时何地安装项目并不重要。结果,就像安装过程一样,应该总是相同的。至于你将安装整个生态系统中的哪个部分,或者从哪个 git 代码库中获取代码,也没有任何区别。这里最重要的组成部分是幂等性idempotence。唯一应该指定的是控制安装的变量。

以下是在我看来解决这个问题非常有效的算法:

  1. 从你所有的 Dockerfile 中收集镜像(例如,像这样
  2. 使用一个元项目,通过 Kube API 接口将这些镜像传递给 Kubernetes。启动交付过程通常需要如下几个输入参数:
    • Kube API 的访问入口endpoint
    • 一个 Secret 对象,因不同的上下文而异(local/showroom/staging/production
    • 要显示的系统的名称和这些系统的 Docker 镜像的标签(在前面的步骤中获得)

 

作为一个包含所有系统和服务的元项目的例子(换句话说,一个描述生态系统是如何安排的以及更新是如何传递给它的项目),我更喜欢使用 Ansible  剧本与这个模块同 Kube API 进行集成。然而,复杂的自动机automators可以引用其他选项,我将在后面详述我自己的选择。但是,你必须考虑一种集中/统一的架构管理方法。拥有一个这样的方法可以让你方便和统一地管理所有服务/系统,中和即将到来的执行类似功能的技术和系统丛林可能带给你的任何复杂性。

通常,在以下情况下需要安装环境: 

  • ShowRoom — 测试环境, 对系统进行了一些手动检查或调试
  • Staging  —  准生产环境,和外部系统的集成 (通常位于 DMZ,而不是 ShowRoom)
  • Production  — 生产环境,供最终用户使用的实际环境

集成和交付的连续性

如果你有一个统一的测试方法对 Docker 镜像(或“黑盒”)进行测试,你就可以假设这样的测试结果将允许你无缝地(并且问心无愧地)将特性分支feature-branch集成到 git 存储库的上游upstream主分支master中。

或许,这里唯一的障碍是集成和交付的顺序。当没有发布时,你如何在一个拥有一组并行功能分支feature-branches的系统上防止“竞争条件”的发生? 

因此,只有在没有竞争的情况下,这个过程才应该开始,否则“竞争条件”会一直萦绕在你的脑海中:

  1. 尝试将功能分支feature-branch更新到上游分支upstreamgit rebase/git merge
  2. 使用 Dockerfile 构建镜像
  3. 测试所有构建好的镜像
  4. 启动并等待,直到使用第 2 步中构建的镜像的系统成功完成部署
  5. 如果前一步失败,将生态系统回滚到之前的状态
  6. 功能分支feature-branch合并进上游分支upstream,并将其提交到代码库

任何步骤中发生的任何失败都应该终止交付过程,并将任务返回给开发人员来修复错误,不管是测试失败还是代码合并冲突。

你可以使用此流程来在多个代码库上工作。只需一次对所有代码库执行每个步骤(在 A 库和 B 库上执行步骤 1,在 A 库和 B 库上执行步骤 2,如此类推),而不是在每个单独的代码库上重复执行整个过程(在 A 库上执行步骤 1-6,在 B 库上执行步骤 1-6,如此类推)。

此外,Kubernetes 还允许你进行部分更新,以便执行各种 A/B 测试和风险分析。Kubernetes 在内部通过分离服务(访问点)和应用程序来实现这一点。你总是可以按期望的比例平衡组件的新版本和旧版本,以便于问题分析并为潜在的回滚提供可能。

回滚系统

架构框架的强制性要求之一是回滚任何部署过程的能力。这反过来又会带来一些显而易见和隐含的细微差别。以下是其中一些最重要的:

  • 服务应该能够设置其环境以及回滚更改。例如,数据库迁移、RabbitMQ 的 schema 等等。
  • 如果无法回滚环境,那么服务应该是多态的polymorphic,并且支持旧版本和新版本的代码同时共存部署。例如:数据库迁移不应该导致旧版本服务的中断(通常是之前的 2 到 3 个旧版本)。
  • 任何服务更新的向后兼容性。通常,这是应用编程接口 API 的兼容性、消息格式等等。

在 Kubernes 集群中的回滚状态非常简单(运行 kubectl rollout undo deployment/some-deployment,Kubernes 将恢复到以前的“快照”),但是为了有效地做到这一点,你的元项目应该包含关于该快照的信息。非常不鼓励使用更复杂的交付回滚算法,尽管它们有时是必要的。 

以下是触发回滚机制的因素:

  • 发布后应用程序发生错误的百分比很高
  • 来自关键监控点的信号
  • 冒烟测试smoke tests失败
  • 手工模式— 人为因素

确保信息安全和审计

没有一个工作流可以神奇地“构建”防弹车级别的安全并保护你的生态系统免受外部和内部威胁,因此你需要确保你的架构框架在执行时着眼于公司在每个级别和所有子系统中的标准和安全策略。

稍后,我将在关于监控和告警的章节中讨论建议的所有三个级别解决方案,它们对系统完整性也至关重要。

Kubernetes 有一套良好的内置访问控制机制网络策略事件审计和其它与信息安全相关的强大工具,可用于构建出色的周界保护perimeter of protection、抵御和防止攻击以及数据泄漏。

二、从开发工作流到架构

应该认真对待在开发流程和生态系统之间建立紧密集成的尝试。将这种集成的需求添加到传统架构需求集(灵活性、可伸缩性、可用性、可靠性、防威胁等)中,可以极大地增加架构框架的价值。这是非常关键的一个方面,它导致了DevOps(Development Operation)这个概念的出现。DevOps 是实现基础设施完全自动化和优化的一个合乎逻辑的步骤。然而,一个设计良好的架构架构和可靠的子系统,可以让 DevOps 任务最小化。

微服务架构

没有必要赘述面向服务的架构(SOA)的好处,包括为什么服务应该是“微”micro粒度的。我只想说,如果你已经决定使用 Docker 和 Kubernetes,那么你很可能会理解(并接受)这样的观点:维护一个单体monolithic架构是困难的,甚至在意识形态上是错误的。Docker 被设计成运行单进程single process应用,并和持久层一起工作。它迫使我们在 DDD(领域驱动开发Domain-Driven Development)框架内思考。在 Docker 中,被打包的代码被视为一个暴露部分访问端口的黑盒。

生态系统的关键组成部分和解决方案

根据我设计可用性和可靠性更高的系统的经验,有几个组件对微服务的运行至关重要。稍后我将列出并讨论这些组件,即使以下我只是在 Kubernetes 环境中引用它们,你也可以将我的这个列表作为任何其他平台的检查表使用。 

如果你(和我一样)能得出这样的结论,也即将这些组件作为一个常规 Kubernetes 服务来管理是非常好的,那么我建议你在不同于“生产集群”production的单独集群中运行它们。例如,“预生产/准生产”staging集群可以在生产环境不稳定时挽救你的生命,因为这种情况下你会迫切需要一个能提供镜像、代码或监控工具的环境。可以说,这解决了鸡和蛋的问题。

身份服务

和往常一样,一切开始于对服务器、虚拟机、应用程序、办公室邮件的访问。如果你现在就是或想要成为主要企业平台之一(IBM、谷歌、微软)的客户,访问问题将由服务提供商提供的服务来处理。然而,如果你想有自己的解决方案,那么这一切就只能由你自己搞定,并且不能超出你的预算?

这个关于单点登录的列表将帮助你决定合适的解决方案,并估计安装配置和维护该解决方案所需的工作量。当然,你的选择必须符合公司的安全政策并得到信息安全部门的批准。

自动化的服务开通

虽然 Kubernetes 只要求在物理机器/云虚拟机上的少量组件(docker、kubelet、kube proxy、etcd 集群),但你仍然需要能够自动化完成添加新机器和对集群进行管理。以下是几个简单的方法:

  • KOPS  —  这个工具允许你在两个公有云 (AWS 或 GCE)上安装集群
  • Teraform  —  这个工具让你可以管理任何环境的基础架构,并遵循 IAC(基础架构即代码Infrastructure as Code)的思想
  • Ansible  —  用于构建任何类型自动化的通用工具 

就我个人而言,我更喜欢第 3 个选项(加上一个 Kubernetes 集成模块),因为它允许我同时使用服务器和 k8s 对象,并实现任何类型的自动化。然而,没有什么能阻止你使用 Teraform 及其 Kubernetes 模块 。KOPS 不能很好地使用“裸机”,但是它仍然是一个很好的使用 AWS/GCE 的工具!

Git 代码库和任务跟踪器

不用说,要为开发人员和其他相关角色提供全面的工作环境,你需要有一个团队协作和代码存储的地方。我很难确定哪种服务是最合适的,但我个人最喜欢的任务跟踪工具是 redmine (免费)或 Jira(付费)。对代码库而言,有比较老牌的 gerrit(免费)或 bitbucket (付费)。 

值得注意的是,企业环境中协作工作的两个最一致的工具(尽管是商业版本的)是:AtlassianJetbrains。你可以使用它们中的任何一个作为独立的解决方案,或者将两者的各种组件结合起来。

要充分利用任务跟踪器和代码库的组合,请考虑它们的集成策略。例如,以下是一些确保代码和相关任务关联性的提示(当然,你也可以选择自己的方法):

  • 只有当试图推送push的分支存在相应的任务号(如:TASK-1/feature-34)时,才能提交到远程代码库中
  • 任何分支只有在一定数量的合格代码复查迭代之后才可以进行合并
  • 如果相应的任务不是“进行中”In Progress或类似状态,则任何分支都应被阻止和禁用,以备将来更新
  • 任何旨在实现自动化的步骤都不应该直接提供给开发人员使用
  • 只有经过授权的开发人员才能直接修改master主分支—其它的一切都由自动化机器人控制
  • 如果相应的任务处于“交付”For Delivery或类似状态之外的任何状态,则分支不可用于合并 

Docker 注册表

应特别注意 Docker 镜像管理系统,因为它对于存储和交付服务至关重要。此外,该系统应该支持用户和用户组的访问,能够删除旧的和不必要的镜像,提供图形用户界面和 RESTful 应用编程接口。 

你可以使用云解决方案(例如,hub.docker.com)或私有托管服务,甚至可以安装在你的 Kubernetes 集群中。作为 Docker 注册表的企业解决方案,Vmware Harbor 就是一个很好的例子。最坏的情况是,如果你只想存储镜像,而不需要复杂的系统,你就直接使用 Docker Registry 好了。 

CI/CD 和服务交付系统

我们之前讨论过的组件(git 存储库、任务跟踪器、带有 Ansible 剧本的元项目、外部依赖项)都不能像悬浮在真空中一样彼此分开运行。将它们连接起来的是持续集成和交付服务。

CI  —  持续集成 Continuous Integration  

CD  —  持续交付Continuous Delivery

服务应该足够简单,并且没有任何与系统交付或配置相关的逻辑。CI/CD 服务应该做的就是对外部世界的事件(git 存储库中的变化,任务跟踪器中任务的移动)做出反应,并启动元项目中描述的操作。此外,CI/CD 服务是管理所有代码存储库的控制点和管理它们的工具(代码分支合并、来自上游/主分支的更新)。

我使用过一个来自 Jetbrains 的 工具 TeamCity,这是一个相当强大但非常简单的工具。但是你也可以决定尝试其他东西,比如免费的 Jenkins

在我们上面描述的方案中,集成服务主要负责启动四个主要流程和一个辅助流程,如下所示:

  • 自动化服务测试 —  通常情况下,对单一代码库而言,当分支状态改变或状态改变为“等待自动测试”(或类似情况)时 
  • 服务交付  —  通常来自元项目和多个服务(分别来自于不同的代码库),当 QA 测试和生产环境部署的状态分别更改为“等待展示”Awaiting Showroom“等待交付”Awaiting Delivery
  • 回滚  —  通常来自元项目和单个服务或整个服务的特定部分,由外部事件或在交付不成功的情况下触发
  • 服务移除 —  这是从单个测试环境showroom中完全移除整个生态系统所必需的,当测试中In QA状态已过期或不再需要该环境时
  • 镜像构建器(辅助过程) —  可以集成到服务交付过程中,或者独立地用于编译 Docker 镜像并将其发送到 Docker 注册表。这经常需要处理常用的镜像(数据库、通用服务或不需要频繁更改的服务)

日志收集和分析系统

任何 Docker 容器使其日志可访问的唯一方法是将它们写入容器中运行的根进程的标准输出或标准错误设备(STDOUT 或 STDERR)。微服务的开发人员并不真正关心日志数据接下来会发生什么,只需要保证它们应该在必要时可用,并且最好包含过去某个时刻的记录。Kubernetes 和支持这个生态的工程师负责这一切的实现。

官方文档中,你可以找到处理日志的基本(也是一个好的)策略的描述,这将有助于你选择用于聚合和存储大量文本数据的服务。

在日志记录系统的推荐服务中,相同的文档提到了用于收集数据的 fluentd(作为代理在集群的每个节点上启动)和存储和索引数据的 Elasticsearch 。即使你可能不同意这种解决方案的效率,但它是可靠且易于使用的,所以我认为这至少是一个好的开始。 

Elasticsearch 是一个资源密集型解决方案,但是它可以很好地扩展,并且有现成的 Docker 镜像来运行单个节点或所需大小的集群。

追踪系统

尽管你的代码尽可能完美,但失败确实会发生,然后你想在生产环境中仔细研究它们,并尝试理解“在我的本地机器上一切工作都是正常的呀,现在到底是哪里出了什么问题呢?”。数据库查询速度慢、缓存不当、磁盘速度慢或与外部资源的连接速度慢、生态系统中的事务、瓶颈和规模不足的计算服务,这些都是你必须跟踪和估计在实际负载下执行代码所花费的时间的原因。

OpentracingZipkin 可以支持在大多数现代编程语言中完成这一任务,并且在埋点instrumenting代码之后不会增加任何额外的负担。当然,所有收集的数据都应该存储在一个合适的地方,被组件之一所使用。 

在代码中埋点并通过所有服务、消息队列、数据库等转发“跟踪标识”Trace Id时带来的复杂性由上述开发标准和服务模板解决。后者还负责保证方法的一致性。 

监控和报警

Prometheus 已经成为现代系统中事实上的监控和报警标准,更重要的是,它在 Kubernetes 中几乎开箱即用。你可以参考官方 Kubernetes 文档,了解更多有关监控和报警的信息。

监控是必须安装在群集内的少数辅助系统之一。集群是一个受监控的实体。但是监控系统的监控(请原谅重复)只能从外部执行(例如,从相同的“预生产”Staging环境)。在这种情况下,交叉检查对于任何分布式环境来说都是一个方便的解决方案,不会使高度统一的生态系统的架构复杂化。

整个监控范围分为三个完全逻辑隔离的级别。以下是我认为在每个级别跟踪点的最重要的例子:

  • 物理资源级别: 
    •  网络资源及其可用性
    • 磁盘 (I/O,可用空间)
    • 单个节点的基本资源(CPU、RAM、LA)
  • 集群级别:
    •  主集群系统中每个节点的可用性(kubelet、kubeAPI、DNS、etcd 等)
    • 监控服务允许的和实际的资源消耗
    • Pod 的重新加载
  • 服务级别: 
    •  任何类型的应用程序监控
    • 从数据库内容到应用编程接口调用的频率
    • API 网关上的 HTTP 调用错误数
    • 队列的大小和 worker 节点的利用率
    •  数据库的多个指标(复制延迟、事务的时间和数量、慢速请求等)
    • 非 HTTP 协议进程的错误分析
    • 监控发送到日志系统的请求(你可以将任意请求转换为度量值)

至于每个级别的报警通知,我建议你使用无数外部服务之一,这些服务可以通过电子邮件、短信发送通知或拨打手机号码。我还要提到另一个系统 — OpsGenie  ,它可以与 Prometheus 的报警管理器紧密集成

OpsGenie 是一种灵活的报警工具,有助于处理故障升级报告、全天候工作、通知渠道选择等。在团队之间分发报警信息也很容易。例如,不同级别的监控应该向不同的团队/部门发送通知:物理资源  —>  基础设施 + Devops,集群  —>  Devops,应用  — > 向相关团队发送通知。

API 网关和单点登录

为了处理授权、身份验证、用户注册(外部用户——公司的客户)和其他类型的访问控制等任务,你需要一个高度可靠的服务,它可以与您的 API 网关保持灵活的集成。使用与“身份服务”相同的解决方案没有害处,但是您可能希望将这两种资源分开,以实现不同级别的可用性和可靠性。 

服务间集成不应该很复杂,你的服务不应该担心用户的授权和认证。相反,架构和生态系统应该有一个代理服务来处理所有的通信和 HTTP 流量。 

让我们考虑与 API 网关集成的最合适的方式  —  令牌token。这种方法适用于所有三种访问场景:从图形用户界面(UI),从服务到服务,以及从外部系统。那么接收令牌的任务(基于登录名和密码)由用户界面本身或服务开发人员承担。区分用户界面中使用的令牌的生命周期(较短的 TTL)和其他情况下使用的令牌的生命周期(较长的和自定义的 TTL)也很有意义。

以下是 API 网关解决的一些问题:

  • 从外部和内部访问生态系统中的服务(服务之间不直接交流)
  • 与单点登录服务集成:
    •  令牌的转换和附加 HTTPS 请求头包含所请求服务的用户标识数据(ID、角色、其他详细信息)
    • 基于从单点登录服务接收的角色来启用/禁用对所请求服务的访问控制
  • 对 HTTP 协议流量的单点监控
  • 组合来自不同服务的 API 接口文档(例如,组合 Swagger 的 json/yml 文件
  • 能够根据域名和请求的 URI 来管理整个生态系统的路由
  • 外部流量的单一接入点,以及与接入提供者的集成

事件总线和企业集成/服务总线

如果你的生态系统包含在一个宏域中工作的数百个服务,你将不得不处理数以千计的服务通信方式。为了简化数据流,你应该考虑在某些事件发生时将消息分发到大量收件人的能力,而不管事件的上下文如何。换句话说,你需要一个事件总线来发布基于标准协议的事件并订阅它们。

对于事件总线,你可以使用任何能够操作所谓代理的系统:RabbitMQKafkaActiveMQ 和其它类似的系统。一般来说,数据的高可用性和一致性对于微服务至关重要,但是由于 CAP 定理,你仍然需要牺牲一些东西来实现总线的正确分布和集群管理。

很自然,事件总线应该能够解决各种服务间通信的问题,但是随着服务数量从成百上千增加到数万,即使是最好的基于事件总线的架构也可能会失败,因此你需要寻找另一种解决方案。一个很好的例子是集成总线方法,它可以扩展上述“愚蠢的管道 —智能的消费者”Dumb pipe — Smart consumer策略的能力。

有很多原因决定了需要使用“企业集成/服务总线”方法,该方法旨在降低面向服务架构的复杂性。下面列出了部分原因:

  • 多个消息的聚合
  • 将一个事件拆分成几个事件
  • 系统对事件响应的同步/事务分析
  • 接口的适配,这对与外部系统的集成尤其重要
  • 事件路由的高级逻辑
  • 与相同服务的多重集成(从外部和内部)
  • 数据总线的不可扩展集中化

作为企业集成总线的开源软件,你可能需要考虑 Apache ServiceMix ,它包含了设计和开发这种 SOA 所必需的几个组件。

数据库和其他有状态服务

和 Kubernetes 一样,对于需要数据持久性和与磁盘紧密合作的服务,Docker 彻底改变了游戏规则。有人说,服务应该在物理服务器或虚拟机上以旧的方式“生存”。我尊重这一观点,我不会就其利弊展开争论,但我相当肯定,这种说法的存在只是因为在 Docker 环境中暂时缺乏管理有状态服务的知识、解决方案和经验。

我还应该提到,数据库通常占据存储世界的中心位置,因此你选择的解决方案应该为在 Kubernetes 环境中工作做好充分准备。

根据我的经验和市场情况,我可以区分以下几组有状态服务,并为每一组服务提供最合适的面向 Docker 的解决方案示例:

  • 数据库管理系统  —  PostDock 是任何 Docker 环境中 PostgreSQL 的简单可靠的解决方案
  • 队列/消息代理broker  —  RabbitMQ 是构建消息队列系统和路由消息的经典软件。RabbitMQ 配置中的 cluster_formation 参数对于集群设置是必不可少的
  • 缓存服务  —  redis 被认为是最可靠和灵活的数据缓存解决方案之一
  • 全文搜索  —  我前面已经提到过的 Elasticsearch 技术栈,最初用于文本搜索,但同样擅长存储日志和处理大量文本数据的任何工作
  • 文件存储服务 —  为任何类型的文件存储和交付(ftp、sftp 等)提供的通用服务

镜像依赖

如果你还没有遇到你需要的包或依赖项已经从公共服务器上删除或暂时不可用的情况,请不要认为这种情况永远不会发生。为了避免任何不必要的不可用性并为内部系统提供安全性,请确保你的服务的构建和交付都不需要互联网连接。在内部网络中配置所有镜像和拷贝:Docker 镜像、rpm 包、源代码库、python/go/js/php 模块。

这些和任何其它类型的依赖都有自己的解决方案。最常见的方法可以通过在搜索引擎查询“X 的私有依赖镜像”找到。 

三、从架构回归现实

不管你喜不喜欢,你的整个架构迟早都会失败。这样的情况一直在发生:技术很快就过时了(1-5 年),方法论变化慢一点(5-10 年),设计原则和基础理论偶尔变化(10-20 年),但不管怎么样这个趋势是不可阻挡的。

考虑到技术的过时,请始终努力将你的生态系统保持在技术创新的巅峰,规划和推出新的服务来满足开发人员、业务部门和最终用户的需求,向利益相关方推广新的实用程序,提供知识来推动你的团队和公司向前发展。

通过融入专业社区、阅读相关文献和与同事交流,可以让你保持领先地位。意识到你的机会,并在项目中正确使用新趋势。试验并应用科学的方法来分析你的研究结果,或者依靠你信任和尊重的其他人的结论。 

现在,很难为根本性的变化做好准备。但如果你是这个领域的专家,这也是可能的。我们所有人一生中只会见证几个重大的技术变革,但不是头脑中的知识数量让我们成为专业人士,让我们达到顶峰,而是我们对于新想法的开放性和接受蜕变的能力。

回到标题中的问题,“有可能构建一个完美的架构吗”?不,当然不可能轻易“一劳永逸”,但一定要为之奋斗,在某个时刻,“在一个阶段内”,你一定会成功!

PS:原文是以俄文写的,非常感谢我在 Lazada 的同事  Sergey Rodin 把它翻译成了英文。

替代 Trello 的 OpenProject 9 发布了

$
0
0

OpenProject 是一个开源项目协作管理软件。它是 TrelloJira 等专有方案的替代品。

如果个人使用,你可以免费使用它,并在你自己的服务器上进行设置(并托管它)。这样,你就可以控制数据。

当然,如果你是企业云版的用户,那么你可以使用高级功能和更优先的帮助。

OpenProject 9 的重点是新的面板视图,包列表视图和工作模板。

如果你对此不了解,可以尝试一下。但是,如果你是已有用户 —— 在迁移到 OpenProject 9 之前,你应该知道这些新功能。

OpenProject 9 有什么新功能?

以下是最新版 OpenProject 的一些主要更改。

Scrum 和敏捷面板

对于企业云版,有了一个新的 scrum敏捷面板视图。你还可以看板风格方式展示你的工作,从而更轻松地支持你的敏捷和 scrum 团队。

新的面板视图使你可以轻松了解为该任务分配的人员并快速更新状态。你还有不同的面板视图选项,如基本面板、状态面板和版本面板。

工作包模板

Work Package Template

你不必为每个独立的工作包从头开始创建所有内容。而是,你只需保留一个模板,这样你就可以在需要创建新工作包时使用它。这将节省大量时间。

新的工作包列表视图

Work Package View

在工作包列表中,有一个微小的新增功能,可让你查看特定工作的已分配人员的头像。

“我的”页面的可自定义工作包视图

“我的”页面显示你正在处理的内容(以及进度),它不应该一直那么呆板。因此,现在你可以自定义它,甚至可以添加甘特图来可视化你的工作。

总结

有关迁移和安装的详细说明,请参阅官方的公告帖,其中包含了必要的细节。

另外,我们很想知道你使用 OpenProject 9 的经历,请在下面的评论栏告诉我们!如果你使用其他一些项目管理软件,请随时向我们和其他 FOSS 读者推荐。


via: https://itsfoss.com/openproject-9-release/

作者:Ankush Das 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

对 Python 开发者而言,IPython 仍然是 Jupyter Notebook 的核心

$
0
0

Jupyter 项目提供的魔法般的开发体验很大程度上得益于它的 IPython 基因。

最近刚刚写过我为什么觉得觉得 Jupyter 项目(特别是 JupyterLab)提供了一种 魔法般的 Python 开发体验。在研究这些不同项目之间的关联的时候,我回顾了一下 Jupyter 最初从 IPython 分支出来的这段历史。正如 Jupyter 项目的 大拆分™ 声明 所说:

“如果你不明白 Jupyter 是什么,这么说吧,它拥有和 IPython 同样的代码,并且是由同一批人开发的,只不过取了一个新名字、安了一个新家。”

下面这个注脚进一步说明了这一点:

“我从声明中解读出来的信息是,‘Jupyter 和 IPython 非常相似,但是拥有多种语言’,这也可以很好地解释为什么这个项目的名字已经不再需要包含 Python,因为当时它已经支持多种语言了。”

我明白 Jupyter Notebook 和 IPython 都是从同样的源代码里分支出来的,但是不太清楚 IPython 项目的现状。在大拆分™ 之后它是已经不再被需要了,还是在以另一种方式延续着?

后来我惊讶地发现,IPython 仍然不断在为 Python 使用者提供价值,它正是 Jupyter 体验的核心部分。下面是 Jupyter 常见问题页面的一段截取:

有什么语言是需要预装的吗?

是的,安装 Jupyter Notebook 会首先安装 IPython 内核。这样我们就可以在 notebook 上运行 Python 语言了。

现在我明白了,在 JupyterLab(以及 Jupyter Notebook)上编写 Python 程序仍然需要依赖 IPython 内核的持续开发。不仅如此,IPython 还充当了最为强大的默认内核的角色,根据 这份文档,它是其它语言内核之间的枢纽,节省了很多开发时间和精力。

现在唯一的问题是,IPython 本身可以做什么呢?

IPython 如今的作用

IPython 提供了一个强大的、交互性的 Python shell,以及 Jupyter 的内核。安装完成之后,我可以在任何命令行运行 ipython 本身,将它当作一个(比默认 Python shell 好太多的)Python shell 来使用:

$ ipython
Python 3.7.3 (default, Mar 27 2019, 09:23:15)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import numpy as np
In [2]: example = np.array([5, 20, 3, 4, 0, 2, 12])
In [3]: average = np.average(example)
In [4]: print(average)
6.571428571428571

这就让我们发现了一个更为重要的问题:是 IPython 让 JupyterLab 可以在项目中执行代码,并且支持了一系列被称为 Magic 的功能(感谢 Nicholas Reith 在我上一篇文章的评论里提到这点)。

IPython 让魔法成为现实

JupyterLab 和其它使用 IPython 的前端工具可以让你感觉像是在最喜欢的 IDE 或者是终端模拟器的环境下工作。我非常喜欢 点文件 快捷键功能,Magic 也有类似点文件的特征。比如说,可以试一下 %bookmark 这个命令。我把默认开发文件夹 ~/Develop 关联到了一个可以在任何时候直接跳转的快捷方式上。

Screenshot of commands from JupyterLab

%bookmark%cd,以及我在前一篇文章里介绍过的 ! 操作符,都是由 IPython 支持的。正如这篇 文档 所说:

Jupyter 用户你们好:Magic 功能是 IPython 内核提供的专属功能。一个内核是否支持 Magic 功能是由该内核的开发者针对该内核所决定的。

写在最后

作为一个好奇的新手,我之前并不是特别确定 IPython 是否仍然和 Jupyter 生态还有任何联系。现在我对 IPython 的持续开发有了新的认识和,并且意识到它正是 JupyterLab 强大的用户体验的来源。这也是相当有才华的一批贡献者进行最前沿研究的成果,所以如果你在学术论文中使用到了 Jupyter 项目的话别忘了引用他们。为了方便引用,他们还提供了一个 现成的引文

如果你在考虑参与哪个开源项目的贡献的话,一定不要忘了 IPython 哦。记得看看 最新发布说明,在这里可以找到 Magic 功能的完整列表。


via: https://opensource.com/article/19/6/ipython-still-heart-jupyterlab

作者:Matthew Broberg 选题:lujun9972 译者:chen-ni 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

日本便利店试用手机支付,几天内盗刷频发被叫停

$
0
0

经调查,截止 4 日上午 6 点,已有约 900 名用户的手机被盗刷,损失金额可能达到 5500 万日元(约合 51 万美元)。据日媒报道,可以在大型连锁便利店 7-11 中使用的手机支付服务 7pay 自 7 月 1 日开始提供服务,然而仅在 7 月 2 日凌晨,该服务便出现了问题。

7 月 4 日下午 2 点,7pay 董事长小林强召开了紧急记者会,他表示目前正在调查详细的受害人数以及损失金额。此外小林强还指出,将会对所有的损失提供补偿,并对开通了客户服务中心紧急电话。

报道指出,由于该服务在开通初期便出现了盗刷现象,这会使用户的心态发生动摇。

遭受了近 5 万日元损失的用户小林勇树表示,原本对 7pay 手机支付服务非常期待,但是现在变得很失望。同样被盗刷 6 万多日元的用户村上慎悟则表示,已经不会信任手机支付服务了,他决定还是使用已经被普及的支付方法(信用卡支付等)。

目前,7pay 的充值、以及新用户注册服务均已停止。

来源: 环球科技

更多资讯

思科回应交换机中出现华为证书和密钥:因疏忽忘记删除

据外媒报道,7 月 3 日,思科发布 19 条安全声明,其中 18 条涉及中高危漏洞,另一个则是与小企业级 250、350、350X 和 550X 交换机有关的低级别漏洞。

这个小问题说起来的确不严重,设备无法获取指定的 CVE 标识码,可原因就有趣了,居然是由于使用了 Futurewei 公司(华为北美研发公司)编写的 OpenDaylight 开源软件包(该开源项目的成员同样有思科)。思科称,本来 FindIT 团队用在测试阶段的密钥和证书,结果上线前疏忽,忘记删除了。为了进一步澄清,思科强调,证书和密钥仅仅存在于文件系统中,并没有被设备激活使用,现在更是已经删除了。

来源:快科技
详情: http://www.dbsec.cn/zx/20190706-1.html

谷歌商店出现假冒三星固件更新 APP 超 1000 万用户受骗

据 zdnet 消息,超过 1000 万用户被骗安装了一款名为 “Updates for Samsung” 假冒三星固件更新 app,该应用承诺进行固件更新,但实际上只会将用户重定向到一个充满广告的网站,并收取固件下载费用。日前,CSIS 安全集团的恶意软件分析师 Aleksejs Kuprins 发布了一份该应用的可疑行为的报告后,就已经联系 了Google Play 商店,要求谷歌考虑删除这款 APP。

来源: 站长之家
详情: http://www.dbsec.cn/zx/20190706-3.html 

为个人信息安全扎紧防护网

新一代信息技术发展的一个重要突破就是极大提升了数据处理能力,这也使得人们更容易在工作和生活中留下姓名、职业、住址、电话号码、身份证件号码、财产信息、消费记录等。这些信息被互联网记录和存储,非常容易被泄露和传播,甚至可以通过个性化推荐等算法分析而产生巨大商业价值。中国消费者协会 2018 年发布的《APP 个人信息泄露情况调查报告》显示,受访者中因个人信息泄露而被骚扰或侵害过的人数占比达 85.2%,个人信息泄露的情况为数不少。在新一轮科技革命进程中,个人信息保护成为一个重要问题。

来源: 人民日报
详情: http://www.dbsec.cn/zx/20190706-5.html 

(信息来源于网络,安华金和搜集整理)


如何在 Linux 中查找服务的端口号

$
0
0

Find The Port Number Of A Service In Linux OS

由于某些原因,你可能经常需要查找端口名称和端口号。如果是这样,你很幸运。今天,在这个简短的教程中,我们将看到在 Linux 系统中最简单、最快捷的查找服务端口号的方法。可能有很多方法可以做到,但我目前只知道以下三种方法。请继续阅读。

在 Linux 中查找服务的端口号

方法1:使用 grep 命令

要使用 grep 命令在 Linux 中查找指定服务的默认端口号,只需运行:

$ grep <port> /etc/services

例如,要查找 SSH 服务的默认端口,只需运行:

$ grep ssh /etc/services

就这么简单。此命令应该适用于大多数 Linux 发行版。以下是我的 Arch Linux 测试机中的示例输出:

ssh 22/tcp
ssh 22/udp
ssh 22/sctp
sshell 614/tcp
sshell 614/udp
netconf-ssh 830/tcp
netconf-ssh 830/udp
sdo-ssh 3897/tcp
sdo-ssh 3897/udp
netconf-ch-ssh 4334/tcp
snmpssh 5161/tcp
snmpssh-trap 5162/tcp
tl1-ssh 6252/tcp
tl1-ssh 6252/udp
ssh-mgmt 17235/tcp
ssh-mgmt 17235/udp

正如你在上面的输出中所看到的,SSH 服务的默认端口号是 22。

让我们找到 Apache Web 服务器的端口号。为此,命令是:

$ grep http /etc/services
# http://www.iana.org/assignments/port-numbers
http 80/tcp www www-http # WorldWideWeb HTTP
http 80/udp www www-http # HyperText Transfer Protocol
http 80/sctp # HyperText Transfer Protocol
https 443/tcp # http protocol over TLS/SSL
https 443/udp # http protocol over TLS/SSL
https 443/sctp # http protocol over TLS/SSL
gss-http 488/tcp
gss-http 488/udp
webcache 8080/tcp http-alt # WWW caching service
webcache 8080/udp http-alt # WWW caching service
[...]

FTP 端口号是什么?这很简单!

$ grep ftp /etc/services
ftp-data 20/tcp
ftp-data 20/udp
# 21 is registered to ftp, but also used by fsp
ftp 21/tcp
ftp 21/udp fsp fspd
tftp 69/tcp
[...]

方法 2:使用 getent 命令

如你所见,上面的命令显示指定搜索词 “ssh”、“http” 和 “ftp” 的所有端口名称和数字。这意味着,你将获得与给定搜索词匹配的所有端口名称的相当长的输出。

但是,你可以使用 getent 命令精确输出结果,如下所示:

$ getent services ssh
ssh 22/tcp

$ getent services http
http 80/tcp www www-http

$ getent services ftp
ftp 21/tcp

如果你不知道端口名称,但是知道端口号,那么你只需将端口名称替换为数字:

$ getent services 80
http 80/tcp

要显示所有端口名称和端口号,只需运行:

$ getent services

方法 3:使用 Whatportis 程序

Whatportis 是一个简单的 Python 脚本,来用于查找端口名称和端口号。与上述命令不同,此程序以漂亮的表格形式输出。

确保已安装 pip 包管理器。如果没有,请参考以下链接。

安装 pip 后,运行以下命令安装 Whatportis 程序。

$ pip install whatportis

现在,你可以找到与服务关联的端口,如下所示。

$ whatportis ssh

$ whatportis ftp

$ whatportis http

我的 CentOS 7 服务器的示例输出:

在 Linux 中查找服务的端口号

如果你不知道服务的确切名称,请使用 –like 标志来显示相关结果。

$ whatportis mysql --like

上述命令帮助你查找与服务关联的端口。你还可以找到与端口号相关联的服务,如下所示。

$ whatportis 993

你甚至可以以 JSON 格式显示结果。

$ whatportis 993 --json

有关更多详细信息,请参阅 GitHub 仓库。

就是这些了。你现在知道了如何使用三种简单方法在 Linux 中查找端口名称和端口号。如果你知道任何其他方法/命令,请在下面的评论栏告诉我。我会查看并更相应地更新本指南。


via: https://www.ostechnix.com/how-to-find-the-port-number-of-a-service-in-linux/

作者:sk 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

何时需要关注 Linux 的内存用量?

$
0
0

Linux 上的内存管理很复杂。尽管使用率高但未必存在问题。你也应当关注一些其他的事情。

在 Linux 上用光内存通常并不意味着存在严重的问题。为什么?因为健康的 Linux 系统会在内存中缓存磁盘活动,基本上占用掉了未被使用的内存,这显然是一件好事情。

换句话说,它不让内存浪费掉。使用空闲的内存增加磁盘访问速度,并且不占用运行中应用程序的内存。你也能够想到,使用这种内存缓存比起直接访问硬盘驱动器(HDD)快上数百倍,也比明显快于直接访问固态硬盘驱动。内存占满或几乎占满通常意味着系统正在尽可能高效地运行当中 —— 并不是运行中遇到了问题。

缓存如何工作

磁盘缓存简单地意味着系统充分利用未使用的资源(空闲内存)来加速磁盘读取与写入。应用程序不会失去任何东西,并且大多数时间里能够按需求获得更多的内存。此外,磁盘缓存不会导致应用程序转而使用交换分区。反而,用作磁盘缓存的内存空间当被需要时会立即归还,并且磁盘内容会被更新。

主要和次要的页故障

Linux 系统通过分割物理内存来为进程分配空间,将分割成的块称为“页”,并且映射这些页到每个进程的虚拟内存上。不再会用到的页也许会从内存中移除,尽管相关的进程还在运行。当进程需要一个没有被映射或没在内存中页时,故障便会产生。所以,这个“故障fault”并不意味着“错误error”而是“不可用unavailables”,并且故障在内存管理中扮演者一个重要的角色。

次要故障意味着在内存中的页未分配给请求的进程,或未在内存管理单元中标记为出现。主要故障意味着页没有保留在内存中。

如果你想切身感受一下次要页故障和主要页故障出现的频率,像这样试一下 ps 命令。注意我们要的是与页故障和产生它的命令相关的项。输出中省略了很多行。MINFL 显示出次要故障的数目,而 MAJFL 表示了主要故障的数目。

$ ps -eo min_flt,maj_flt,cmd
 MINFL  MAJFL CMD
230760    150 /usr/lib/systemd/systemd --switched-root --system --deserialize 18
     0      0 [kthreadd]
     0      0 [rcu_gp]
     0      0 [rcu_par_gp]
     0      0 [kworker/0:0H-kblockd]
   ...
   166     20 gpg-agent --homedir /var/lib/fwupd/gnupg --use-standard-socket --daemon
   525      1 /usr/libexec/gvfsd-trash --spawner :1.16 /org/gtk/gvfs/exec_spaw/0
  4966      4 /usr/libexec/gnome-terminal-server
  3617      0 bash
     0      0 [kworker/1:0H-kblockd]
   927      0 gdm-session-worker [pam/gdm-password]

汇报单一进程,你可以尝试这样的命令(LCTT 译注:参数里面的 1 是要查看的进程的 PID):

$ ps -o min_flt,maj_flt 1
 MINFL  MAJFL
230064    150

你也可以添加其他的显示字段,例如进程所有者的 UID 和 GID。

$ ps -o min_flt,maj_flt,cmd,args,uid,gid 1
 MINFL  MAJFL CMD                         COMMAND                       UID   GID
230064    150 /usr/lib/systemd/systemd -- /usr/lib/systemd/systemd --     0     0

多少才算满?

一种较好的方法来掌握内存究竟使用了多少是用 free -m 命令。-m 选项指定了数字的单位是 MiBmebibyte 而不是字节。

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3244        3069          35          49         140         667
Swap:          3535           0        3535

注意 free(未使用)的内存可能会不足,而 available(可用于启动新的应用)会显示更大的数量。这两者的区别值得我们去关注。可用available意味着它可以在需要时恢复使用,而空闲free意味着现在就能够使用。

什么时候要担心

如果 Linux 系统上的性能表现良好 —— 应用程序响应度高,命令行没有显示出问题 —— 很可能系统状况良好。记住,一些应用也许会出于某种原因而变慢,但它不影响整个系统。

过多的硬故障也许表明确实存在问题,但要将其与观察到的性能相比较。

一个好的方法是当可用内存接近 0 或者“用作交换swap used”项显著增长或波动时开始担心。如果“可用”项占总内存可用量的百分比合理,那么就无需担心,就像下面的例子那样:

$ free -m
              total        used        free      shared  buff/cache   available
Mem:           3244        3069          35          49         140         667
Swap:          3535           0        3535

Linux 性能很复杂

抛开这些不说,Linux 系统上的内存可能会变满,并且性能可能会降低。当系统出现问题时不要仅将单一的内存使用报告作为指标。

Linux 系统的内存管理很复杂,因为它采取的措施需要确保系统资源得到最好的利用。不要受到一开始内存占满的欺骗,使你认为系统存在问题,但实际上并没有。


via: https://www.networkworld.com/article/3394603/when-to-be-concerned-about-memory-levels-on-linux.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:LuuMing 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

什么?!Mozilla 被提名英国“互联网恶棍”奖

$
0
0

Mozilla Firefox 是目前最流行的浏览器之一。很多用户喜欢它胜过 Chrome 就是因为它鼓励隐私保护,并且可以通过一些选项设置让你的互联网活动尽可能地私密。

不过最近推出的功能之一 —— 仍然处于测试阶段的 DoH (DNS-over-HTTPS) 功能却受到了英国互联网服务提供商行业协会的负面评价。

英国互联网服务提供商行业协会Internet Services Providers Association(ISPA)决定将 Mozilla 列入 2019 年“互联网恶棍”奖的最终入围者名单。该奖项将在 ISPA 于 7 月 11 日在伦敦举行的颁奖典礼上进行颁发。

为什么说 “Mozilla” 是 “互联网恶棍”?

ISPA 在他们的声明中表示,Mozilla 因为支持了 DoH(DNS-over-HTTPS)而被视为“互联网恶棍”。

@mozilla 被提名为 #ISPA#互联网恶棍 是因为他们试图推行 DNS-over-HTTPS 以绕开英国的内容过滤系统和家长监护模式,破坏了英国 #互联网 安全准则。 https://t.co/d9NaiaJYnk pic.twitter.com/WeZhLq2uvi

— 英国互联网提供商行业协会 (ISPAUK) (@ISPAUK) 2019 年 7 月 4 日

和 Mozilla 一同被列入最终入围者名单的还有欧盟《版权法第 13 条》和美国总统特朗普。ISPA 在他们的声明里是这样解释的:

Mozilla:因为试图推行 DNS-over-HTTPS 以绕开英国的内容过滤系统和家长监护模式,破坏了英国互联网安全准则。

欧盟《版权法第 13 条》:因为要求各平台使用“内容识别技术”,威胁到了线上言论自由。

美国总统特朗普:因为在试图保护其国家安全的过程中,为复杂的全球通信供应链带来了巨大的不确定性。

什么是 DNS-over-HTTPS?

你可以将 DoH 理解为,域名解析服务(DNS)的请求通过 HTTPS 连接加密传输。

传统意义上的 DNS 请求是不会被加密的,因此你的 DNS 提供商或者是互联网服务提供商(ISP)可以监视或者是控制你的浏览行为。如果没有 DoH,你很容易被 DNS 提供商强制拦截和进行内容过滤,并且你的互联网服务提供商也同样可以做到。

然而 DoH 颠覆了这一点,可以让你得到一个私密的浏览体验。

你可以研究一下 Mozilla 是如何开展和 Cloudflare 的合作的,并且可以自己配置一下 DoH(如果需要的话)。

DoH 有用吗?

既有用又没有用。

当然了,从事情的一方面来看,DoH 可以帮助用户绕过 DNS 或者互联网服务提供商强制的内容过滤系统。如果说 DoH 有助于满足我们避开互联网审查的需求,那么它是一件好事情。

不过从事情的另一方面来看,如果你是一位家长,而你的孩子在 Mozilla Firefox 上使用了 DoH 的话,你就无法 设置内容过滤器 了。这取决于 防火墙配置 的好坏。

DoH 可能会成为一些人绕过家长监护的手段,这可能不是一件好事。

如果我这样的说法有问题,你可以在下面的评论区纠正我。

并且,使用 DoH 就意味着你没办法使用本地 host 文件了(如果你正用它作为广告拦截或者是其它用途的话)。

总结

你是如何看待 DoH 的呢?它足够好吗?

你又是如何看待 ISPA 的决定的呢?你觉得他们这样的声明是不是在鼓励互联网审查和政府对网民的监控呢?

我个人觉得这个提名决定非常可笑。即使 DoH 并不是所有人都需要的那个终极功能,能够有一种保护个人隐私的选择也总不是件坏事。

在下面的评论区里发表你的看法吧。最后我想引用这么一句话:

在谎言遍地的时代,说真话是一种革命行为。(LCTT 译注:引自乔治奥威尔)


via: https://itsfoss.com/mozilla-internet-villain/

作者:Ankush Das 选题:lujun9972 译者:chen-ni 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

如何使用 Tig 浏览 Git 日志

$
0
0

Tig 可不仅仅是 Git 的文本界面。以下是它如何增强你的日常工作流程。

如果你使用 Git 作为你的版本控制系统,你可能已经让自己接受了 Git 是一个复杂的野兽的事实。它是一个很棒的工具,但浏览 Git 仓库可能很麻烦。因此像 Tig 这样的工具出现了。

来自 Tig 手册页

Tig 是 git(1) 的基于 ncurses 的文本界面。它主要用作 Git 仓库浏览器,但也有助于在块级别暂存提交更改,并作为各种 Git 命令的输出分页器。

这基本上意味着 Tig 提供了一个可以在终端中运行的基于文本的用户界面。Tig 可以让你轻松浏览你的 Git 日志,但它可以做的远不止让你从最后的提交跳到前一个提交。

Tig screenshot

这篇快速入门的 Tig 中的许多例子都是直接从其出色的手册页中拿出来的。我强烈建议你阅读它以了解更多信息。

安装 Tig

  • Fedora 和 RHEL: sudo dnf install tig
  • Ubuntu 和 Debian: sudo apt install tig
  • MacOS: :brew install tig

有关更多方式,请参阅官方安装说明

浏览当前分支中的提交

如果要浏览分支中的最新提交,请输入:

tig

就是这样。这个三字符命令将启动一个浏览器,你可以在其中浏览当前分支中的提交。你可以将其视为 git log 的封装器。

要浏览这些输出,可以使用向上和向下箭头键从一个提交移动到另一个提交。按回车键将会垂直分割窗口,右侧包含所选提交的内容。你可以继续在左侧的提交历史记录中上下浏览,你的更改将显示在右侧。使用 kj 可以逐行上下浏览,- 和空格键可以在右侧上下翻页。使用 q 退出右侧窗格。

搜索 tig 输出也很简单。使用 / (向前)或 ? (向后)在左右窗格中搜索。

Searching Tig

这些就足以让你浏览你的提交信息了。这里有很多的键绑定,但单击 h 将显示“帮助”菜单,你可以在其中发现其导航和命令选项。你还可以使用 /? 来搜索“帮助”菜单。使用 q 退出帮助。

Tig Help

浏览单个文件的修改

由于 Tig 是 git log 的封装器,它可以方便地接受可以传递给 git log 的相同参数。例如,要浏览单个文件的提交历史记录,请输入:

tig README.md

将其与被封装的 Git 命令的输出进行比较,以便更清楚地了解 Tig 如何增强输出。

git log README.md

要在原始 Git 输出中包含补丁,你可以添加 -p 选项:

git log -p README.md

如果要将提交范围缩小到特定日期范围,请尝试以下操作:

tig --after="2017-01-01" --before="2018-05-16" -- README.md

再一次,你可以将其与原始的 Git 版本进行比较:

git log --after="2017-01-01" --before="2018-05-16" -- README.md

浏览谁更改了文件

有时你想知道谁对文件进行了更改以及原因。命令:

tig blame README.md

器本质上是 git blame 的封装。正如你所期望的那样,它允许你查看谁是编辑指定行的最后一人,它还允许你查看到引入该行的提交。这有点像 vim 的 vim-fugitive 插件提供的 :Gblame 命令。

浏览你的暂存区

如果你像我一样,你可能会在你的暂存区做了许多修改。你很容易忘记它们。你可以通过以下方式查看暂存处中的最新项目:

git stash show -p stash@{0}

你可以通过以下方式找到第二个最新项目:

git stash show -p stash@{1}

以此类推。如果你在需要它们时调用这些命令,那么你会有比我更清晰的记忆。

与上面的 Git 命令一样,Tig 可以通过简单的调用轻松增强你的 Git 输出:

tig stash

尝试在有暂存的仓库中执行此命令。你将能够浏览并搜索你的暂存项,快速浏览你的那些修改。

浏览你的引用

Git ref 是指你提交的东西的哈希值。这包括文件和分支。使用 tig refs 命令可以浏览所有的 ref 并深入查看特定提交。

tig refs

完成后,使用 q 回到前面的菜单。

浏览 git 状态

如果要查看哪些文件已被暂存,哪些文件未被跟踪,请使用 tig status,它是 git status 的封装。

Tig status

浏览 git grep

你可以使用 grep 命令在文本文件中搜索表达式。命令 tig grep 允许你浏览 git grep 的输出。例如:

tig grep -i foo lib/Bar

它会让你浏览 lib/Bar 目录中以大小写敏感的方式搜索 foo 的输出。

通过标准输入管道输出给 Tig

如果要将提交 ID 列表传递给 Tig,那么必须使用 --stdin 标志,以便 tig show 从标准输入读取。否则,tig show 会在没有输入的情况下启动(出现空白屏幕)。

git rev-list --author=olaf HEAD | tig show --stdin

添加自定义绑定

你可以使用 rc 文件自定义 Tig。以下是如何根据自己的喜好添加一些有用的自定义键绑定的示例。

在主目录中创建一个名为 .tigrc 的文件。在你喜欢的编辑器中打开 ~/.tigrc 并添加:

# 应用选定的暂存内容
bind stash a !?git stash apply %(stash)

# 丢弃选定的暂存内容
bind stash x !?git stash drop %(stash)

如上所述,运行 tig stash 以浏览你的暂存。但是,通过这些绑定,你可以按 a 将暂存中的项目应用到仓库,并按 x 从暂存中删除项目。请记住,你要在浏览暂存列表时,才能执行这些命令。如果你正在浏览暂存,请输入 q 退出该视图,然后按 ax 以获得所需效果。

有关更多信息,你可以阅读有关 Tig 键绑定

总结

我希望这有助于演示 Tig 如何增强你的日常工作流程。Tig 可以做更强大的事情(比如暂存代码行),但这超出了这篇介绍性文章的范围。这里有足够的让你置身于危险的信息,但还有更多值得探索的地方。


via: https://opensource.com/article/19/6/what-tig

作者:Olaf Alders 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

谷歌挖出 iMessage 新漏洞,运行旧系统的 iPhone 只能重置修复

$
0
0

在 iMessage 中输入特定的字符串,并将其发送给其他人,可能会引发一些奇怪的事情。我们曾在过去报道过多次这样的偶然发现,万幸苹果通常会很快完成 bug 修补,并发布软件更新。不过近日,谷歌 Project Zero 团队曝光了又一个重大的 iMessage 漏洞。若收到一组特定的字符,你的 iPhone 可能会变得一团糟。

这个 bug 会导致受害者的 iPhone 被锁定,唯一的解决方案就是恢复出厂设置,意味着你将无法恢复未保存的丢失数据。

早在 4 月中旬,谷歌 Project Zero 研究员 Natalie Silvanovich 就已经发现了这个漏洞,并解释称其只会影响 iOS 设备。在 Mac 上,这个 bug 会导致 soagent 崩溃重启。但在 iPhone 上,该代码位于 Springboard 中。收到此消息,将导致 Springboard 不停崩溃重启,导致 UI 无法显示、直至手机停止了对输入的响应。即便经过了硬件重置,该问题依然存在,一旦解锁就会导致手机无法使用。

结果唯一的解决方案,就是重启进入恢复模式,但出厂复位后会丢失设备上所有未保存的数据。

若用户手上的 iPhone 运行的是 iOS 12.3 之前的版本,他们会在面对该问题时束手无策。此前的类似 bug,顶多导致手机变卡、或使应用程序崩溃,但至少可以在大多数情况下修复问题,而不丢失任何数据。不过这一次,用户必须进行完整的出厂重置,才能避免陷入无限的循环,意味着任何尚未备份到 iCloud 或计算机上的数据都将丢失。

为防止问题再次发生,请在初次设置手机时移除 SIM 卡并关闭 Wi-Fi,并参考以下操作:

(1)通过‘查找我的 iPhone’擦除手机数据;

(2)将 iPhone 设置为恢复模式,并通过 iTunes 获取更新(强制安装最新版系统);

(3)取出 SIM 卡、关闭 Wi-Fi,并在菜单中选择擦除手机数据。

值得庆幸的是,苹果已经在 iOS 12.3 中修复了这个问题。这意味着您只需更新到最新的稳定版 iOS 系统(或 iOS 13 测试版),都不会有这样的烦恼。

更多资讯

Golang 恶意软件重出江湖 数千台 Linux 服务器遭攻击

F5 Labs 发布的研究报告称,一个加密器组织正使用新的 Golang 恶意软件攻击基于 Linux 的服务器。虽然在威胁环境中很难注意到,但 Golang 恶意软件最初是在2018年中期被发现的,攻击持续了整年。目前,研究人员注意到最新的操作,从 6 月 10 日开始攻击已经感染了大约数千台机器。

来源:雷锋网
详情:http://www.dbsec.cn/zx/20190707-2.html

优酷声明:收回被黑灰产冒领 VIP

此前网上流出一条免费领取优酷 VIP 一年权益的链接,该链接被分享到社交网站后,大量用户涌入领取优酷 VIP 会员(目前 Bug 已经修复)。对此优酷会员官方微博发布声明,为保障运营秩序以及正常领用会员的权益,第一时间停止该权益活动,并且按照《会员协议》和《用户协议》规则,取消黑灰产恶意领用及转售等违约违规行为所涉权益。

来源:快科技
详情:http://www.dbsec.cn/zx/20190707-3.html

英国最大的警方取证实验室支付赎金要求以恢复锁定的数据

英国最大的警方取证实验室承包商 Eurofins Scientific 今天承认向网络犯罪分子支付赎金,以重新获得通过勒索软件加密的文件。付款规模尚未公布。勒索软件感染发生在上个月的 6 月 2 日。这家总部位于布鲁塞尔的公司在第二天发布的新闻稿中承认此事件,称勒索软件是“新版恶意软件”。在 6 月 10 日的新闻稿中,该公司表示勒索软件“导致其在多个国家的许多IT系统中断”。

来源:ZDNet
详情:http://www.dbsec.cn/zx/20190707-4.html

个人信息泄露防不胜防 大数据公司爬取简历现象频发

一些简历大数据公司拼命发掘求职者简历上所有的秘密,并出现了监测员工离职动向的工具软件,它可以监测到员工更新、投递简历等行为,以及员工简历被HR、猎头查看次数等信息。

来源:法制日报
详情:http://www.dbsec.cn/zx/20190707-5.html

(信息来源于网络,安华金和搜集整理)

Viewing all 13806 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>