mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Merge remote-tracking branch 'LCTT/master'
This commit is contained in:
commit
5c0d1ea4ee
@ -0,0 +1,141 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (nophDog)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12375-1.html)
|
||||
[#]: subject: (How to know if you're ready to switch from Mac to Linux)
|
||||
[#]: via: (https://opensource.com/article/20/6/mac-to-linux)
|
||||
[#]: author: (Marko Saric https://opensource.com/users/markosaric)
|
||||
|
||||
你是否已经准备好从 Mac 切换到 Linux 了?
|
||||
======
|
||||
|
||||
> 你几乎可以在 Linux 上做任何你在 Mac 上可以做的事情 —— 这是你拥有一个开源操作系统的自由。
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202007/02/222534g8bdabsllplnzl6c.jpg)
|
||||
|
||||
我[从 Mac 转到 Linux][2] 已经两年了。在使用 Linux 之前,我用的 Apple 的系统用了 15 年,而当我在 2018 年安装第一个 Linux 发行版时,还只是一个纯粹的新手。
|
||||
|
||||
这些日子以来,我只用 Linux,我可以用它完成任何任务。浏览网页、观看 Netflix 影片、写作以及编辑我的 Wordpress [博客][3],甚至还在上面跑我的[开源网页分析项目][4]。
|
||||
|
||||
我甚至还不是一个开发者!Linux 被认为不适合日常使用,对非技术人员也不够友好的日子已经一去不返了。
|
||||
|
||||
最近有很多关于 Mac 的讨论,越来越多的人已经在考虑转到 Linux。我打算分享我的切换过程中的一些经验,帮助其它新手也能从容转移。
|
||||
|
||||
### 你该不该换?
|
||||
|
||||
在换系统之前,最好想清楚,因为有时候 Linux 可能跟你预期不一样。如果你仍希望跟 Apple Watch 无缝配对、可以用 FaceTime 给朋友打电话、或者你想打开 iMovie 看视频,那最好还是不要换了。这些都是 Apple 的专有产品,你只能在 Apple 的“围墙花园”里面使用。如果离不开 Apple 的生态系统,那么 Linux 可能不太适合你。
|
||||
|
||||
我对 Apple 生态没有太多挂念,我不用 iPhone,所以跟手机的协作没那么必要。我也不用 iCloud、FaceTime,当然也包括 Siri。我早就对开源充满兴趣,只是一直没有行动。
|
||||
|
||||
### 检查你的必备软件清单
|
||||
|
||||
我还在使用 Mac 的时候,就已经开始探索开源软件,我发现大部分在 Mac 上使用的软件,在 Linux 也可以运行。
|
||||
|
||||
很熟悉用火狐浏览网页吗?在 Linux 上它也可以运行。想用 VLC 看视频?它也有 Linux 版本。喜欢用 Audacity 录制、编辑音频?它正在 Linux 上等着你呢。你用 OBS Studio 直播?在 Linux 直接下载安装吧。一直用 Telegram 跟朋友和家人保持联系吗?Linux 上当然少不了它。
|
||||
|
||||
此外,Linux 不仅仅意味着开源软件。你最喜欢的大部分(也可能是所有)非 Apple 专有软件,都能在 Linux 见到它们的身影。Spotify、Slack、Zoom、Stream、Discord、Skype、Chrome 以及很多闭源软件,都可以使用。而且,在你 Mac 浏览器里面运行的任何东西,同样能够运行在 Linux 浏览器。
|
||||
|
||||
你能在 Linux 找到你的必备软件,或者更好的替代品吗?请再三确认,做到有备无患。用你最常用的搜索引擎,在网上检索一下。搜索“软件名 + Linux” 或者“软件名 + Linux 替代品”,然后再去 [Flathub][5] 网站查看你能在 Linux 用 Flatpak 安装的专有软件有哪些。
|
||||
|
||||
### 请牢记:Linux 不等于 Mac
|
||||
|
||||
如果你希望能够从 Mac 轻松转移到 Linux,我相信有一点很重要,你需要保持包容的思想以及愿意学习新操作系统的心态。Linux 并不等于 Mac,所以你需要给自己一些时间去接触并了解它。
|
||||
|
||||
如果你想让 Linux 用起来、看起来跟你习惯的 macOS 一模一样,那么 Linux 可能也不适合你。尽管你可以通过各种方法[把 Linux 桌面环境打造得跟 macOS 相似][14],但我觉得要想成功转移到 Linux,最好的办法是从拥抱 Linux 开始。
|
||||
|
||||
试试新的工作流,该怎么用就怎么用。不要总想着把 Linux 变成其它东西。你会跟我一样,像享受 Mac 一样享受 Linux,甚至能有更好的体验感。
|
||||
|
||||
还记得你第一次使用 Mac 吧:你肯定花了不少时间去习惯它的用法。那么请给 Linux 同样多的时间和关怀。
|
||||
|
||||
### 选择一个 Linux 发行版
|
||||
|
||||
有别于 Windows 和 macOS,Linux 不止一个单一的操作系统。不同的 Linux 操作系统被称作发行版,开始使用 Linux 之后,我尝试过好几个不同的发行版。我也用过不同的桌面环境,或者图形界面。在美观度、易用性、工作流以及集成软件上,它们有很大差异。
|
||||
|
||||
尽管作为 Mac 的替代品,被提及最多的是 [ElementaryOS][6] 和 [Pop!_OS][7],但我仍建议从 [Fedora 工作站][8] 开始,理由如下:
|
||||
|
||||
- 使用 [Fedora 介质写入器][9],容易安装
|
||||
- 几乎可以支持你所有的硬件,开箱即用
|
||||
- 支持最新的 Linux 软件
|
||||
- 运行原生无改动的 GNOME 桌面环境
|
||||
- 有一个大型开发团队以及一个庞大的社区在背后支持
|
||||
|
||||
在我看来,对从 macOS 过来的新手来说,[GNOME][10] 是易用性、一致性、流畅性和用户体验最好的桌面环境。它拥有 Linux 世界中最多的开发资源和用户基数,所以你的使用体验会很好。
|
||||
|
||||
Fedora 可以为你打开一扇 Linux 的大门,当你适应之后,就可以开始进一步探索各个发行版、桌面环境,甚至窗口管理器之类的玩意了。
|
||||
|
||||
### 熟悉 GNOME
|
||||
|
||||
GNOME 是 Fedora 和许多其它 Linux 发行版的默认窗口管理器。它最近 [升级到 GNOME 3.36][11],带来了 Mac 用户会喜欢的现代设计。
|
||||
|
||||
一定要做好心理准备,Linux、Fedora 工作站和 GNOME 并不是 Apple 和 macOS。GNOME 非常干净、简约、现代、独创。它不会分散你的注意力,没有桌面图标,没有可见的坞站,窗口上甚至没有最小化和最大化按钮。但是不要慌张,如果你去尝试,它会证明这是你用过最好、最有生产力的操作系统。
|
||||
|
||||
GNOME 不会给你带来困扰。启动之后,你唯一能看到的东西只有顶栏和背景图片。顶栏由这几样东西组成,“活动”在左边,时间和日期在中间(这也是你的通知中心),右边是网络、蓝牙、VPN、声音、亮度、电池等托盘图标之类的东西。
|
||||
|
||||
#### 为什么 GNOME 像 Mac
|
||||
|
||||
你会注意到一些跟 macOS 的相似之处,例如窗口吸附、空格预览(用起来跟 “Quick Look” 一模一样)。
|
||||
|
||||
如果你把鼠标光标移动到左上角,点击顶栏的“活动”,或者按下键盘上超级键(`Super` 键,也就是 Mac 上的 `ஐ` 键),你会看到“活动概览”。它有点像 macOS 系统上“调度中心”和“聚焦搜索”的结合体。它会在屏幕中间展示已打开软件和窗口的概览。在左手边,你可以看到坞站,上面有你打开的软件和常用软件。所有打开的软件下面会有一个指示标志,在右手边,你可以看到不同的工作区。
|
||||
|
||||
在顶栏中间,有一个搜索框。只要你开始输入,焦点就会转移到搜索框。它能搜索你已经安装的软件和文件内容,可以在软件中心搜索指定的软件、进行计算、向你展示时间或者天气,当然它能做的还有很多。它就像“聚焦”一样。只需开始输入你要搜索的内容,按下回车就可以打开软件或者文件。
|
||||
|
||||
你也能看到一列安装好的软件(更像 Mac 上的“启动台”),点击坞站中的“显示应用”图标,或者按 `Super + A` 就行。
|
||||
|
||||
总体来说,Linux 是一个轻量级的系统,即使在很老的硬件上也能跑得很顺畅,跟 macOS 比起来仅仅占用很少的磁盘空间。并且不像 macOS,你可以删除任何你不想要或不需要的预装软件。
|
||||
|
||||
#### 自定义你的 GNOME 设置
|
||||
|
||||
浏览一下 GNOME 设置,熟悉它的选项,做一些更改,让它用起来更舒服。下面是一些我装好 GNOME 必做的事情。
|
||||
|
||||
- 在“鼠标和触摸板”中,我禁用“自然滚动”、启用“轻触点击”。
|
||||
- 在“显示”中,我打开“夜光”功能,在晚上,屏幕会让颜色变暖,减少眼睛疲劳。
|
||||
- 我也安装了 [GNOME 优化][12],因为它可以更改额外的设置选项。
|
||||
- 在“GNOME 优化”中,我启用了 “Over-Amplification” 设置,这样就能获得更高的音量。
|
||||
- 在“GNOME 优化”中,相比默认的亮色主题,我更喜欢 “Adwaita Dark” 主题。
|
||||
|
||||
#### 习惯使用键盘操作
|
||||
|
||||
GNOME 是以一个极度以键盘为中心的操作系统,所以尽量多使用键盘。在 GNOME 设置中的“键盘快捷键”部分,你可以找到各个快捷键。
|
||||
|
||||
你也可以根据自己的理想工作流程来设置键盘快捷键。我将我最常用的应用程序设置为使用超级键打开。比如说,`Super + B` 打开我的浏览器,`Super + F` 打开“文件”,`Super + T` 打开终端。我还把 `Ctrl + Q` 设置成关闭窗口。
|
||||
|
||||
我使用 `Super + Tab` 在打开的应用程序之间切换,`Super + H` 隐藏一个窗口,`F11` 全屏打开软件,`Super + Left` 把窗口吸附到屏幕左边,`Super + Right` 把窗口吸附到屏幕左边,等等。
|
||||
|
||||
### 在 Mac 上尝试 Linux 之后再做决定
|
||||
|
||||
在完全安装 Linux 之前,在你的 Mac 上先尝试 Fedora。从 [Fefora 官网][9]下载 ISO 镜像。使用 [Etcher][13] 将 ISO 镜像写入 USB 驱动器,然后在启动时点击 `Option` 键,这样你就可以在即用模式下尝试了。
|
||||
|
||||
现在您无需在 Mac 上安装任何东西就可以探索 Fedora 工作站了。试试各种东西,能否正常工作:能不能连接 WiFi?触控板是否正常?有没有声音?等等。
|
||||
|
||||
也记得花时间来尝试 GNOME。测试我上面提到的不同功能。打开一些安装好的软件。如果一切看起来都还不错,如果你喜欢这样的 Fedora 工作站和 GNOME,并且很肯定这就是你想要的,那么把它安装到你的 Mac 吧。
|
||||
|
||||
尽情探索 Linux 世界吧!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/6/mac-to-linux
|
||||
|
||||
作者:[Marko Saric][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[nophDog](https://github.com/nophDog)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/markosaric
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_browser_web_desktop.png?itok=Bw8ykZMA (Digital images of a computer desktop)
|
||||
[2]: https://markosaric.com/linux/
|
||||
[3]: https://markosaric.com/how-start-blog/
|
||||
[4]: https://plausible.io/open-source-website-analytics
|
||||
[5]: https://flathub.org/apps
|
||||
[6]: https://opensource.com/article/20/2/macbook-linux-elementary
|
||||
[7]: https://support.system76.com/articles/pop-basics/
|
||||
[8]: https://getfedora.org/
|
||||
[9]: https://getfedora.org/en/workstation/download/
|
||||
[10]: https://www.gnome.org/
|
||||
[11]: https://www.gnome.org/news/2020/03/gnome-3-36-released/
|
||||
[12]: https://wiki.gnome.org/Apps/Tweaks
|
||||
[13]: https://www.balena.io/etcher/
|
||||
[14]: https://linux.cn/article-12361-1.html
|
@ -0,0 +1,110 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (wxy)
|
||||
[#]: reviewer: (wxy)
|
||||
[#]: publisher: (wxy)
|
||||
[#]: url: (https://linux.cn/article-12376-1.html)
|
||||
[#]: subject: (Linux Mint 20 is Officially Available Now! The Performance and Visual Improvements Make it an Exciting New Release)
|
||||
[#]: via: (https://itsfoss.com/linux-mint-20-download/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Linux Mint 20 正式发布了!你该升级吗?
|
||||
======
|
||||
|
||||
![](https://img.linux.net.cn/data/attachment/album/202007/03/083110avnb4rwi0rwzh56r.jpg)
|
||||
|
||||
Linux Mint 20 “Ulyana” 终于发布了,可以下载了。
|
||||
|
||||
Linux Mint 19 基于 Ubuntu 18.04 LTS,而 [Mint 20][1] 则基于 [Ubuntu 20.04 LTS][2] —— 所以你会发现很多不同的地方、改进的地方,可能更棒了。
|
||||
|
||||
既然它来了,让我们来看看它的新功能,在哪里下载它,以及如何升级你的系统。
|
||||
|
||||
### Linux Mint 20:有什么新东西?
|
||||
|
||||
我们制作了一段关于 Linux Mint 20 的初步视觉印象的视频,让大家更好地了解。
|
||||
|
||||
- [video](https://youtu.be/7knHfN-NUZk)
|
||||
|
||||
说到 Linux Mint 20 的发布,有很多事情要谈。虽然我们已经介绍了 Linux Mint 20 的新的关键[功能][1],但我还是在这里提几点,让大家一目了然。
|
||||
|
||||
* Nemo 文件管理器在生成缩略图方面的性能提升
|
||||
* 一些重新设计的颜色主题
|
||||
* Linux Mint 20 将禁止 APT 使用 Snapd
|
||||
* 一个新的图形用户界面工具,用于通过本地网络共享文件
|
||||
* 改进对多显示器的支持
|
||||
* 改进对笔记本电脑的混合图形支持
|
||||
* 不再有 32 位版本
|
||||
|
||||
除了这些变化之外,你还会注意到 Cinnamon 4.6 桌面更新后的一些视觉变化。
|
||||
|
||||
以下是 Linux Mint 20 Cinnamon 版的一些截图。
|
||||
|
||||
![Mint 20 Welcome Screen][4]
|
||||
|
||||
![Mint 20 Color Themes][5]
|
||||
|
||||
![Mint 20 Nemo File Manager][6]
|
||||
|
||||
![Mint 20 Nemo File Manager Blue Color Theme][7]
|
||||
|
||||
![Mint 20 Wallpapers][8]
|
||||
|
||||
![Mint 20 Redesigned Gdebi Installer][9]
|
||||
|
||||
![Mint 20 Warpinator Tool for Sharing Files on Local Network][10]
|
||||
|
||||
![Mint 20 Terminal][11]
|
||||
|
||||
### 升级到 Linux Mint 20:你需要知道什么?
|
||||
|
||||
如果你已经在使用 Linux Mint,你可以选择升级到 Linux Mint 20。
|
||||
|
||||
* 如果你使用的是 Linux Mint 20 测试版,你可以升级到 Mint 20 稳定版。
|
||||
* 如果你正在使用 Linux Mint 19.3(这是 Mint 19 的最新迭代),你可以将系统升级到 Linux Mint 20,而不需要进行重新安装
|
||||
* Linux Mint 20 没有 32 位版本。如果你**使用 32 位的 Mint 19 系列,你将无法升级到 Mint 20**
|
||||
* 如果你使用的是 Linux Mint 18 系列,你必须先通过 Mint 19 系列升级。在我看来,重新安装 Mint 20 会比较省时省事
|
||||
* 如果你使用的是 Linux Mint 17、16、15 或更低版本,你一定不要再使用它们了。这些版本已经不支持了
|
||||
|
||||
我们有一个详细的指南,展示了从 18.3 到 19 [升级 Linux Mint 版本][12]的步骤。我猜测 Mint 20 的步骤应该也是一样的。我们的团队会对 Mint 19.3 到 Mint 20 的升级做一些测试,并在适用的情况下更新这个指南。
|
||||
|
||||
在你继续升级之前,请确保备份你的数据和[使用 Timeshift 创建系统快照][13]。
|
||||
|
||||
### 下载Linux Mint 20
|
||||
|
||||
你可以简单地前往其官方下载页面,为自己抓取最新的稳定 ISO。你会发现官方支持的桌面环境的 ISO,即 Cinnamon、MATE 和 Xfce。
|
||||
|
||||
此外,还为那些网络连接缓慢或不稳定的用户提供了 Torrent链接。
|
||||
|
||||
- [下载 Linux Mint 20][14]
|
||||
|
||||
如果你只是想在不更换主系统的情况下试一试,我建议先[在 VirtualBox 中安装 Linux Mint 20][15],看看这是不是你喜欢的东西。
|
||||
|
||||
你试过 Linux Mint 20 了吗?你对这个版本有什么看法?请在下面的评论区告诉我你的想法。
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/linux-mint-20-download/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[wxy](https://github.com/wxy)
|
||||
校对:[wxy](https://github.com/wxy)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://linux.cn/article-12297-1.html
|
||||
[2]: https://itsfoss.com/download-ubuntu-20-04/
|
||||
[3]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
|
||||
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-welcome-screen.png?fit=800%2C397&ssl=1
|
||||
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-color-themes.png?fit=800%2C396&ssl=1
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-nemo-file-manager.png?fit=800%2C397&ssl=1
|
||||
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-nemo-file-manager-blue-color-theme.png?fit=800%2C450&ssl=1
|
||||
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-wallpapers.png?fit=800%2C450&ssl=1
|
||||
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-redesigned-gdebi-installer.png?fit=800%2C582&ssl=1
|
||||
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-warpinator.png?fit=800%2C397&ssl=1
|
||||
[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-terminal.png?fit=800%2C540&ssl=1
|
||||
[12]: https://itsfoss.com/upgrade-linux-mint-version/
|
||||
[13]: https://itsfoss.com/backup-restore-linux-timeshift/
|
||||
[14]: https://linuxmint.com/download.php
|
||||
[15]: https://itsfoss.com/install-linux-mint-in-virtualbox/
|
@ -1,112 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Linux Mint 20 is Officially Available Now! The Performance and Visual Improvements Make it an Exciting New Release)
|
||||
[#]: via: (https://itsfoss.com/linux-mint-20-download/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
Linux Mint 20 is Officially Available Now! The Performance and Visual Improvements Make it an Exciting New Release
|
||||
======
|
||||
|
||||
Linux Mint 20 “Ulyana” is finally released and available to download.
|
||||
|
||||
Linux Mint 19 was based on Ubuntu 18.04 LTS and [Mint 20][1] is based on [Ubuntu 20.04 LTS][2] — so you will find a lot of things different, improved, and potentially better.
|
||||
|
||||
Now that it’s here, let’s take a look at its new features, where to download it, and how to upgrade your system.
|
||||
|
||||
### Linux Mint 20: What’s New?
|
||||
|
||||
We have made a video about the initial visual impressions on Linux Mint 20 to give you a better idea:
|
||||
|
||||
[Subscribe to our YouTube channel for more Linux videos][3]
|
||||
|
||||
There’s a lot of things to talk about when it comes to Linux Mint 20 release. While we have already covered the new key [features in Linux Mint 20][1], I’ll mention a few points here for a quick glance:
|
||||
|
||||
* Performance improvements in Nemo file manager for thumbnail generation
|
||||
* Some re-worked color themes
|
||||
* Linux Mint 20 will forbid APT from using Snapd
|
||||
* A new GUI tool to share files using the local network
|
||||
* Improved multi-monitor support
|
||||
* Improved hybrid graphics support for laptops
|
||||
* No 32-bit releases anymore
|
||||
|
||||
|
||||
|
||||
In addition to all these changes, you will also notice some visual changes with Cinnamon 4.6 desktop update.
|
||||
|
||||
Here are some screenshots of Linux Mint 20 Cinnamon edition. Click on the images to see in full screen.
|
||||
|
||||
![Mint 20 Welcome Screen][4]
|
||||
|
||||
![Mint 20 Color Themes][5]
|
||||
|
||||
![Mint 20 Nemo File Manager][6]
|
||||
|
||||
![Mint 20 Nemo File Manager Blue Color Theme][7]
|
||||
|
||||
![Mint 20 Wallpapers][8]
|
||||
|
||||
![Mint 20 Redesigned Gdebi Installer][9]
|
||||
|
||||
![Mint 20 Warpinator Tool for Sharing Files on Local Network][10]
|
||||
|
||||
![Mint 20 Terminal][11]
|
||||
|
||||
### Upgrading to Linux Mint 20: What you need to know
|
||||
|
||||
If you are already using Linux Mint, you may have the option to upgrade to Linux Mint 20.
|
||||
|
||||
* If you are using Linux Mint 20 beta version, you can upgrade to Mint 20 stable version.
|
||||
* If you’re using Linux Mint 19.3 (which is the latest iteration of Mint 19), you can upgrade your system to Linux Mint 20 without needing to perform a clean installation.
|
||||
* There is no 32-bit version of Linux Mint 20. If you are **using 32-bit Mint 19 series, you won’t be able to upgrade to Mint 20**.
|
||||
* If you are using Linux Mint 18 series, you’ll have to upgrade through Mint 19 series first. A fresh install of Mint 20 would be less time-consuming and troublesome in my opinion.
|
||||
* If you are using Linux Mint 17, 16, 15 or lower, you must not use them anymore. These versions are not supported anymore.
|
||||
|
||||
|
||||
|
||||
It’s FOSS has a detailed guide showing the steps to [upgrade Linux Mint version][12] from 18.3 to 19. I am guessing the steps should be the same for Mint 20 as well. It’s FOSS team will be doing some tests for Mint 19.3 to Mint 20 upgrade and update this guide as applicable.
|
||||
|
||||
Before you go on upgrading make sure to backup your data and [create system snapshots using Timeshift][13].
|
||||
|
||||
### Download Linux Mint 20
|
||||
|
||||
You can simply head on to its official download page and grab the latest stable ISO for yourself. You’ll find the ISO for the officially supported desktop environments, i.e. Cinnamon, MATE and Xfce.
|
||||
|
||||
Torrent links are also available for those who have slow or inconsistent internet connection.
|
||||
|
||||
[Download Linux Mint 20][14]
|
||||
|
||||
If you just want to try it out without replacing your main system, I suggest [installing Linux Mint 20 in VirtualBox][15] first and see if this is something you would like.
|
||||
|
||||
Have you tried Linux Mint 20 yet? What do you think about the release? Let me know your thoughts in the comments section below.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/linux-mint-20-download/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://itsfoss.com/linux-mint-20/
|
||||
[2]: https://itsfoss.com/download-ubuntu-20-04/
|
||||
[3]: https://www.youtube.com/c/itsfoss?sub_confirmation=1
|
||||
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-welcome-screen.png?fit=800%2C397&ssl=1
|
||||
[5]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-color-themes.png?fit=800%2C396&ssl=1
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-nemo-file-manager.png?fit=800%2C397&ssl=1
|
||||
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-nemo-file-manager-blue-color-theme.png?fit=800%2C450&ssl=1
|
||||
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-wallpapers.png?fit=800%2C450&ssl=1
|
||||
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-redesigned-gdebi-installer.png?fit=800%2C582&ssl=1
|
||||
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-warpinator.png?fit=800%2C397&ssl=1
|
||||
[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/mint-20-terminal.png?fit=800%2C540&ssl=1
|
||||
[12]: https://itsfoss.com/upgrade-linux-mint-version/
|
||||
[13]: https://itsfoss.com/backup-restore-linux-timeshift/
|
||||
[14]: https://linuxmint.com/download.php
|
||||
[15]: https://itsfoss.com/install-linux-mint-in-virtualbox/
|
@ -0,0 +1,130 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (openSUSE Leap 15.2 Released With Focus on Containers, AI and Encryption)
|
||||
[#]: via: (https://itsfoss.com/opensuse-leap-15-2-release/)
|
||||
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
|
||||
|
||||
openSUSE Leap 15.2 Released With Focus on Containers, AI and Encryption
|
||||
======
|
||||
|
||||
[openSUSE][1] Leap 15.2 has finally landed with some useful changes and improvements.
|
||||
|
||||
Also, considering the exciting announcement of [Closing the Leap Gap][2], the release of openSUSE Leap 15.2 brings us one step closer to SLE ([SUSE Linux Enterprise][3]) binaries being integrated to openSUSE Leap 15.3 next.
|
||||
|
||||
Let’s take a look at what has changed and improved in openSUSE Leap 15.2.
|
||||
|
||||
### openSUSE Leap 15.2: Key Changes
|
||||
|
||||
![][4]
|
||||
|
||||
Overall, openSUSE Leap 15.2 release involves security updates, major new packages, bug fixes, and other improvements.
|
||||
|
||||
In their press release, a developer of the project, **Marco Varlese**, mentions:
|
||||
|
||||
> “Leap 15.2 represents a huge step forward in the Artificial Intelligence space, “I am super excited that openSUSE end-users can now finally consume Machine Learning / Deep Learning frameworks and applications via our repositories to enjoy a stable and up-to-date ecosystem.”
|
||||
|
||||
Even though this hints at what changes it could involve, here’s what’s new in openSUSE Leap 15.2:
|
||||
|
||||
#### Adding Artificial Intelligence (AI) and Machine Learning packages
|
||||
|
||||
Unquestionably, Artificial Intelligence (AI) and Machine Learning are some of the most disruptive technologies to learn.
|
||||
|
||||
To facilitate that to its end-users, openSUSE Leap 15.2 has added a bunch of important packages for new open source technologies:
|
||||
|
||||
* [Tensorflow][5]
|
||||
* [PyTorch][6]
|
||||
* [ONNX][7]
|
||||
* [Grafana][8]
|
||||
* [Prometheus][9]
|
||||
|
||||
|
||||
|
||||
#### Introducing a Real-Time Kernel
|
||||
|
||||
![][10]
|
||||
|
||||
With openSUSE Leap 15.2, a real-time kernel will be introduced to manage the timing of [microprocessors][11] to efficiently handle time-critical events.
|
||||
|
||||
The addition of a real-time kernel is a big deal for this real. **Gerald Pfeifer (**chair of the project’s board) shared his thoughts with the following statement:
|
||||
|
||||
> “The addition of a real time kernel to openSUSE Leap unlocks new possibilities. Think edge computing, embedded devices, data capturing, all of which are seeing immense growth. Historically many of these have been the domain of proprietary approaches; openSUSE now opens the floodgates for developers, researchers and companies that are interested in testing real time capabilities or maybe even in contributing. Another domain open source helps open up!”
|
||||
|
||||
#### Inclusion of Container Technologies
|
||||
|
||||
With the latest release, you will notice that [Kubernetes][12] is included as an official package. This should make it easy for end-users to automate deployments, scale, and manage containerized applications.
|
||||
|
||||
[Helm][13] (the package manager for Kubernetes) also comes baked in. Not just limited to that, you will also find several other additions here and there that makes it easier to secure and deploy containerized applications.
|
||||
|
||||
#### Updates to openSUSE Installer
|
||||
|
||||
![][14]
|
||||
|
||||
openSUSE’s installer was already pretty good. But, with the latest Leap 15.2 release, they have added more information, compatibility with right-to-left languages like Arabic, and subtle changes to make it easier to select options right at the time of installation.
|
||||
|
||||
#### Improvements to YaST
|
||||
|
||||
While [YaST][15] is already a pretty powerful installation and configuration tool, this release adds the ability of creating and managing a Btrfs file-system and enforcing advanced encryption techniques.
|
||||
|
||||
Of course, you must be aware of the availability of [openSUSE on Windows Subsystem for Linux][16]. So, with Leap 15.2, YaST compatibility with WSL has improved as per their release notes.
|
||||
|
||||
#### Desktop Environment Improvements
|
||||
|
||||
![][17]
|
||||
|
||||
The desktop environments available have been update to their latest versions that include [KDE Plasma 5.18 LTS][18] and [GNOME 3.34][19].
|
||||
|
||||
You will also find an updated [XFCE 4.14][20] desktop available for openSUSE Leap 15.2.
|
||||
|
||||
If you’re curious to know all the details for the latest release, you may refer to the [official release announcement.][21]
|
||||
|
||||
### Download & Availability
|
||||
|
||||
As of now, you should be able to find Linode cloud images of Leap 15.2. Eventually, you will notice other cloud hosting services like Amazon Web Services, Azure, and others to offer it as well.
|
||||
|
||||
You can also grab the DVD ISO or the network image file from the official website itself.
|
||||
|
||||
To upgrade your current installation, I’d recommend following the [official instructions][22].
|
||||
|
||||
[openSUSE Leap 15.2][23]
|
||||
|
||||
Have you tried openSUSE Leap 15.2 yet? Feel free to let me know what you think!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/opensuse-leap-15-2-release/
|
||||
|
||||
作者:[Ankush Das][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/ankush/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://www.opensuse.org/
|
||||
[2]: https://www.suse.com/c/sle-15-sp2-schedule-and-closing-the-opensuse-leap-gap/
|
||||
[3]: https://www.suse.com/
|
||||
[4]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/opensuse-leap-15-2-gnome.png?ssl=1
|
||||
[5]: https://www.tensorflow.org
|
||||
[6]: https://pytorch.org
|
||||
[7]: https://onnx.ai
|
||||
[8]: https://grafana.com
|
||||
[9]: https://prometheus.io/docs/introduction/overview/
|
||||
[10]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/opensuse-leap-15-2-terminal.png?ssl=1
|
||||
[11]: https://en.wikipedia.org/wiki/Microprocessor
|
||||
[12]: https://kubernetes.io
|
||||
[13]: https://helm.sh
|
||||
[14]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/opensuse-leap-15-2.png?ssl=1
|
||||
[15]: https://yast.opensuse.org/
|
||||
[16]: https://itsfoss.com/opensuse-bash-on-windows/
|
||||
[17]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/opensue-leap-15-2-kde.png?ssl=1
|
||||
[18]: https://itsfoss.com/kde-plasma-5-18-release/
|
||||
[19]: https://itsfoss.com/gnome-3-34-release/
|
||||
[20]: https://www.xfce.org/about/news/?post=1565568000
|
||||
[21]: https://en.opensuse.org/Release_announcement_15.2
|
||||
[22]: https://en.opensuse.org/SDB:System_upgrade
|
||||
[23]: https://software.opensuse.org/distributions/leap
|
@ -0,0 +1,97 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How an open project's governance model evolves)
|
||||
[#]: via: (https://opensource.com/open-organization/20/7/evolving-project-governance)
|
||||
[#]: author: (Bryan Behrenshausen https://opensource.com/users/bbehrens)
|
||||
|
||||
How an open project's governance model evolves
|
||||
======
|
||||
As open projects mature, their governance models inevitably change.
|
||||
Here's how we're evolving ours.
|
||||
![A two way street sign][1]
|
||||
|
||||
As we continue renovating the Open Organization community, we've been asking hard questions about how we want [that community][2] to function. What do we expect of one another, and of the new contributors yet to join us? How will we work best together? And how will we keep one another accountable for achieving our shared goals?
|
||||
|
||||
When open projects and communities discuss expectations like these, they're talking about "governance." In this case, "governance" refers to the [various processes by which rights and responsibilities get distributed][3] throughout a group. As community member [Jen Kelchner puts it][4], "it's the framework that creates the structure of the organizational system and the rules by which the parts of that structure can and do interact with one another."
|
||||
|
||||
A community's governance model explains _how_ that community functions. Maintaining a system of governance often helps a community _define_ and _describe_ the roles people play in that community.
|
||||
|
||||
Those shared definitions and descriptions are important. First, they allow community members to speak a common language about values and ambitions. They also advance community members' ability to contribute, because [they _make explicit_ the rules][5] everyone is playing by. And they ensure community members receive the various types of status and social capital they need and deserve.
|
||||
|
||||
The best governance models are flexible and adaptable. They grow with their communities. As the Open Organization community grows, so does its governance model. We've needed to revisit how we describe our community and the opportunities for contribution it affords people. ([We also fix typos][6].)
|
||||
|
||||
Let us describe what we're doing.
|
||||
|
||||
### New commitments
|
||||
|
||||
Through this conversation, we've been able to update the Open Organization [project][7] description and vision.
|
||||
|
||||
That vision initially took shape nearly five years ago, when the Open Organization Ambassador team first formed. At the time, Red Hat community architects [Jason Hibbets][8] and [Bryan Behrenshausen][9] drafted a document describing what a community of passionate advocates for [open organizational principles][10] _might_ look like. The vision was entirely aspirational, describing what could be—rather than what _was_. It served as a beacon to attract passionate contributors to a still-nascent project.
|
||||
|
||||
As soon as the community _did_ attract new members, however, those members promptly wrote their _own_ mission and vision for the Open Organization project, articulating their identity and purpose. And as we've grown, we've realized that we're all committed to even more than we originally described. Our community is adept at translating [open organization principles][10] for various audiences and contexts, and at helping different communities connect to our language and culture through _their_ own languages and cultures.
|
||||
|
||||
The best governance models are flexible and adaptable. They grow with their communities.
|
||||
|
||||
For example, [Laura Hilliger][11] has long seen an overlap between openness and cooperatives ([as have others in the community][12]). She's spoken about that overlap and lived it through her career—serving as a translator between two "radical" economic and communal ideas that use different terminology but are seeking the same kind of fair-mindedness in their activities and collaborations. Other Open Org community members have written about [Agile methodologies][13] and their association with open principles, open principles at work [in educational organizations][14], and more.
|
||||
|
||||
Our commitment to this sort of "translation work" wasn't highlighted in our working project description, so we [updated the description to include it][15].
|
||||
|
||||
### Role playing
|
||||
|
||||
Another hole we wanted to fill was a better description of the types of contributions one can make to this community. We wanted to talk about our contributors in a slightly more nuanced way, which we indicated in the initial project vision and then extrapolated into a fully fledged "[Community Roles][16]" wiki page.
|
||||
|
||||
Being specific about community roles helps us make the project more inclusive. It also gives us a method to _codify_ policies and procedures because we can associate them with individual roles people can play in the Open Org community.
|
||||
|
||||
So we've made some decisions about how contributors get read/write [access to community repositories][17], and how certain kinds of contributors can nominate people to "level up" in the community.
|
||||
|
||||
Just as people join communities, they also leave. Everyone's interests and passions change over time, and sometimes what brought them to your community is no longer meaningful to them. And that's okay.
|
||||
|
||||
We've also established a new kind of contributor, the "Maintainer," which gives Ambassadors expressing interest in leading and maintaining community-driven projects a way to show ownership and initiative around a particular project the community is working on. In short: It opens an important new contribution pathway and helps existing community members play an even more influential role in the Open Organization project.
|
||||
|
||||
And we're also recognizing the regular flux and flow that marks an open community like ours. Just as people join communities, they also leave. Everyone's interests and passions change over time, and sometimes what brought them to your community is no longer meaningful to them. And that's okay.
|
||||
|
||||
Sometimes, people will stay involved in a community because they feel a sense of belonging or status, even if they're not interested in doing the work anymore. And they carry with them important project history and context, which no one wants to see evaporate. So we're also adding another community role, the Open Organization Ambassador Emeritus. By giving community members emeritus status, we give Ambassadors the freedom to move on to something else without "kicking them out" of the project altogether.
|
||||
|
||||
All in all, defining and documenting roles and responsibilities will help our community attract contribution because it clearly explains _what getting involved means_ and the _benefits of doing so_.
|
||||
|
||||
### Next steps
|
||||
|
||||
We've come a long way. But there's more to be done.
|
||||
|
||||
The next bit of work we'd like to tackle is [developing a code of conduct][18]. Want to share your experience in this area? [Why not join us and help out?][19]
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/open-organization/20/7/evolving-project-governance
|
||||
|
||||
作者:[Bryan Behrenshausen][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/bbehrens
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/govt_two%20way.png?itok=8dlG2Dpl (A two way street sign)
|
||||
[2]: http://theopenorganization.org
|
||||
[3]: https://opensource.com/article/20/5/open-source-governance
|
||||
[4]: https://opensource.com/open-organization/17/2/5-elements-teams-organized
|
||||
[5]: https://opensource.com/open-organization/18/4/new-governance-model-research
|
||||
[6]: https://github.com/open-organization/governance/commits/master
|
||||
[7]: https://github.com/open-organization/governance/blob/master/project-and-community-description.md
|
||||
[8]: https://opensource.com/users/jhibbets
|
||||
[9]: https://opensource.com/users/bbehrens
|
||||
[10]: https://github.com/open-organization/open-org-definition
|
||||
[11]: https://opensource.com/users/laurahilliger
|
||||
[12]: https://opensource.com/open-organization/15/9/learn-from-co-ops
|
||||
[13]: https://opensource.com/open-organization/17/11/transparency-collaboration-basefarm
|
||||
[14]: https://opensource.com/open-organization/19/4/education-culture-agile
|
||||
[15]: https://github.com/open-organization/governance/wiki
|
||||
[16]: https://github.com/open-organization/governance/wiki/Community-Roles
|
||||
[17]: https://github.com/open-organization
|
||||
[18]: https://opensource.com/life/14/5/codes-of-conduct-open-source-communities
|
||||
[19]: https://github.com/open-organization/governance/issues/9
|
@ -1,136 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (chunibyo-wly)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (One CI/CD pipeline per product to rule them all)
|
||||
[#]: via: (https://opensource.com/article/19/7/cicd-pipeline-rule-them-all)
|
||||
[#]: author: (Willy-Peter Schaub https://opensource.com/users/wpschaub/users/bclaster/users/matt-micene/users/barkerd427)
|
||||
|
||||
One CI/CD pipeline per product to rule them all
|
||||
======
|
||||
Is the idea of a unified continuous integration and delivery pipeline a
|
||||
pipe dream?
|
||||
![An intersection of pipes.][1]
|
||||
|
||||
When I joined the cloud ops team, responsible for cloud operations and engineering process streamlining, at WorkSafeBC, I shared my dream for one instrumented pipeline, with one continuous integration build and continuous deliveries for every product.
|
||||
|
||||
According to Lukas Klose, [flow][2] (within the context of software engineering) is "the state of when a system produces value at a steady and predictable rate." I think it is one of the greatest challenges and opportunities, especially in the complex domain of emergent solutions. Strive towards a continuous and incremental delivery model with consistent, efficient, and quality solutions, building the right things and delighting our users. Find ways to break down our systems into smaller pieces that are valuable on their own, enabling teams to deliver value incrementally. This requires a change of mindset for both business and engineering.
|
||||
|
||||
### Continuous integration and delivery (CI/CD) pipeline
|
||||
|
||||
The CI/CD pipeline is a DevOps practice for delivering code changes more often, consistently, and reliably. It enables agile teams to increase _deployment frequency_ and decrease _lead time for change_, _change-failure rate_, and _mean time to recovery_ key performance indicators (KPIs), thereby improving _quality_ and delivering _value_ faster. The only prerequisites are a solid development process, a mindset for quality and accountability for features from ideation to deprecation, and a comprehensive pipeline (as illustrated below).
|
||||
|
||||
![Prerequisites for a solid development process][3]
|
||||
|
||||
It streamlines the engineering process and products to stabilize infrastructure environments; optimize flow; and create consistent, repeatable, and automated tasks. This enables us to turn complex tasks into complicated tasks, as outlined by Dave Snowden's [Cynefin Sensemaking][4] model, reducing maintenance costs and increasing quality and reliability.
|
||||
|
||||
Part of streamlining our flow is to minimize waste for the [wasteful practice types][5] Muri (overloaded), Mura (variation), and Muda (waste).
|
||||
|
||||
* **Muri:** avoid over-engineering, features that do not link to business value, and excessive documentation
|
||||
* **Mura:** improve approval and validation processes (e.g., security signoffs); drive the [shift-left][6] initiative to push unit testing, security vulnerability scanning, and code quality inspection; and improve risk assessment
|
||||
* **Muda:** avoid waste such as technical debt, bugs, and upfront, detailed documentation
|
||||
|
||||
|
||||
|
||||
It appears that 80% of the focus and intention is on products that provide an integrated and collaborative engineering system that can take an idea and plan, develop, test, and monitor your solutions. However, a successful transformation and engineering system is only 5% about products, 15% about process, and 80% about people.
|
||||
|
||||
There are many products at our disposal. For example, Azure DevOps offers rich support for continuous integration (CI), continuous delivery (CD), extensibility, and integration with open source and commercial off-the-shelve (COTS) software as a service (SaaS) solutions such as Stryker, SonarQube, WhiteSource, Jenkins, and Octopus. For engineers, it is always a temptation to focus on products, but remember that they are only 5% of our journey.
|
||||
|
||||
![5% about products, 15% about process, 80% about people][7]
|
||||
|
||||
The biggest challenge is breaking down a process based on decades of rules, regulations, and frustrating areas of comfort: "_It is how we have always done it; why change?_"
|
||||
|
||||
The friction between people in development and operation results in a variety of fragmented, duplicated, and incessant integration and delivery pipelines. Development wants access to everything, to iterate continuously, to enable users, and to release continuously and fast. Operations wants to lock down everything to protect the business and users and drive quality. This inadvertently and often entails processes and governance that are hard to automate, which results in slower-than-expected release cycles.
|
||||
|
||||
Let us explore the pipeline with snippets from a recent whiteboard discussion.
|
||||
|
||||
The variation of pipelines is difficult and costly to support; the inconsistency of versioning and traceability complicates live site incidents, and continuous streamlining of the development process and pipelines is a challenge.
|
||||
|
||||
![Improving quality and visibility of pipelines][8]
|
||||
|
||||
I advocate a few principles that enable one universal pipeline per product:
|
||||
|
||||
* Automate everything automatable
|
||||
* Build once
|
||||
* Maintain continuous integration and delivery
|
||||
* Maintain continuous streamlining and improvement
|
||||
* Maintain one build definition
|
||||
* Maintain one release pipeline definition
|
||||
* Scan for vulnerabilities early and often, and _fail fast_
|
||||
* Test early and often, and _fail fast_
|
||||
* Maintain traceability and observability of releases
|
||||
|
||||
|
||||
|
||||
If I poke the hornet's nest, however, the most important principle is to _keep it simple_. If you cannot explain the reason (_what_, _why_) and the process (_how_) of your pipelines, you do not understand your engineering process. Most of us are not looking for the best, ultramodern, and revolutionary pipeline—we need one that is functional, valuable, and an enabler for engineering. Tackle the 80%—the culture, people, and their mindset—first. Ask your CI/CD knights in shining armor, with their TLA (two/three-lettered acronym) symbols on their shield, to join the might of practical and empirical engineering.
|
||||
|
||||
### Unified pipeline
|
||||
|
||||
Let us walk through one of our design practice whiteboard sessions.
|
||||
|
||||
![CI build/CD release pipeline][9]
|
||||
|
||||
Define one CI/CD pipeline with one build definition per application that is used to trigger _pull-request pre-merge validation_ and _continuous integration_ builds. Generate a _release_ build with debug information and upload to the [Symbol Server][10]. ****This enables developers to debug locally and remotely in production without having to worry which build and symbols they need to load—the symbol server performs that magic for us.
|
||||
|
||||
![Breaking down the CI build pipeline][11]
|
||||
|
||||
Perform as many validations as possible in the build—_shift left_—allowing feature teams to fail fast, continuously raise the overall product quality, and include invaluable evidence for the reviewers with every pull request. Do you prefer a pull request with a gazillion commits? Or a pull request with a couple of commits and supporting evidence such as security vulnerabilities, test coverage, code quality, and [Stryker][12] mutant remnants? Personally, I vote for the latter.
|
||||
|
||||
![Breaking down the CD release pipeline][13]
|
||||
|
||||
Do not use build transformation to generate multiple, environment-specific builds. Create one build and perform release-time _transformation_, _tokenization_, and/or XML/JSON _value replacement_. In other words, _shift-right_ the environment-specific configuration.
|
||||
|
||||
![Shift-right the environment-specific configuration][14]
|
||||
|
||||
Securely store release configuration data and make it available to both Dev and Ops teams based on the level of _trust_ and _sensitivity_ of the data. Use the open source Key Manager, Azure Key Vault, AWS Key Management Service, or one of many other products—remember, there are many hammers in your toolkit!
|
||||
|
||||
![Dev-QA-production pipeline][15]
|
||||
|
||||
Use _groups_ instead of _users_ to move approver management from multiple stages across multiple pipelines to simple group membership.
|
||||
|
||||
![Move approver management to simple group membership][16]
|
||||
|
||||
Instead of duplicating pipelines to give teams access to their _areas of interest_, create one pipeline and grant access to _specific stages_ of the delivery environments.
|
||||
|
||||
![Pipeline with access to specific delivery stages][17]
|
||||
|
||||
Last, but not least, embrace pull requests to help raise insight and transparency into your codebase, improve the overall quality, collaborate, and release pre-validation builds into selected environments; e.g., the Dev environment.
|
||||
|
||||
Here is a more formal view of the whole whiteboard sketch.
|
||||
|
||||
![The full pipeline][18]
|
||||
|
||||
So, what are your thoughts and learnings with CI/CD pipelines? Is my dream of _one pipeline to rule them all_ a pipe dream?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all
|
||||
|
||||
作者:[Willy-Peter Schaub][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/chunibyo-wly)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/wpschaub/users/bclaster/users/matt-micene/users/barkerd427
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-Internet_construction_9401467_520x292_0512_dc.png?itok=RPkPPtDe (An intersection of pipes.)
|
||||
[2]: https://continuingstudies.sauder.ubc.ca/courses/agile-delivery-methods/ii861
|
||||
[3]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-2.png (Prerequisites for a solid development process)
|
||||
[4]: https://en.wikipedia.org/wiki/Cynefin_framework
|
||||
[5]: https://www.lean.org/lexicon/muda-mura-muri
|
||||
[6]: https://en.wikipedia.org/wiki/Shift_left_testing
|
||||
[7]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-3.png (5% about products, 15% about process, 80% about people)
|
||||
[8]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-4_0.png (Improving quality and visibility of pipelines)
|
||||
[9]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-5_0.png (CI build/CD release pipeline)
|
||||
[10]: https://en.wikipedia.org/wiki/Microsoft_Symbol_Server
|
||||
[11]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-6.png (Breaking down the CI build pipeline)
|
||||
[12]: https://stryker-mutator.io/
|
||||
[13]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-7.png (Breaking down the CD release pipeline)
|
||||
[14]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-8.png (Shift-right the environment-specific configuration)
|
||||
[15]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-9.png (Dev-QA-production pipeline)
|
||||
[16]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-10.png (Move approver management to simple group membership)
|
||||
[17]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-11.png (Pipeline with access to specific delivery stages)
|
||||
[18]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-12.png (The full pipeline)
|
@ -1,113 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to Disable Dock on Ubuntu 20.04 and Gain More Screen Space)
|
||||
[#]: via: (https://itsfoss.com/disable-ubuntu-dock/)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
How to Disable Dock on Ubuntu 20.04 and Gain More Screen Space
|
||||
======
|
||||
|
||||
The launcher on the left side has become the identity of [Ubuntu][1] desktop. It was introduced with [Unity desktop][2] and even [when Ubuntu switched to GNOME][3], it forked Dash to Panel to create a similar dock on [GNOME][4] as well.
|
||||
|
||||
Personally, I find it handy for quickly accessing the frequently used applications. But not everyone wants it to take some extra space on the screen.
|
||||
|
||||
Starting with [Ubuntu 20.04][5], you can easily disable this dock. Let me show you how to do that graphically and via command line in this quick tutorial.
|
||||
|
||||
![][6]
|
||||
|
||||
### Disable Ubuntu dock with Extensions app
|
||||
|
||||
One of the [main features of Ubuntu 20.04][7] was the introduction of Extensions to manage GNOME extensions on your system. Just look for it in the GNOME menu (press Windows key and start typing):
|
||||
|
||||
![Look for Extensions app in the menu][8]
|
||||
|
||||
Don’t have Extensions app?
|
||||
|
||||
If you don’t have it installed already, you should enable GNOME Shell Extensions. The Extensions GUI app is part of this package.
|
||||
|
||||
```
|
||||
sudo apt install gnome-shell-extensions
|
||||
```
|
||||
|
||||
This is only valid for [GNOME 3.36][9] or higher version available in Ubuntu 20.04 and higher versions.
|
||||
|
||||
Start the extensions app and you should see Ubuntu Dock under the Built-in extensions section. You just have to toggle the button off to disable the dock.
|
||||
|
||||
![Disable Ubuntu Dock][10]
|
||||
|
||||
The change is immediate and you’ll see that dock disappears immediately.
|
||||
|
||||
You can bring it back the same way. Just toggle it on and it will appear immediately.
|
||||
|
||||
So easy to hide the dock in Ubuntu 20.04, isn’t it?
|
||||
|
||||
### Alternative Method: Disable Ubuntu dock via command line
|
||||
|
||||
If you are a terminal enthusiast and prefer to do things in the terminal, I have good news for you. You can disable the Ubuntu dock from command line.
|
||||
|
||||
Open a terminal using Ctrl+Alt+T. You probably already know that [keyboard shortcut in Ubuntu][11].
|
||||
|
||||
In the terminal, use the following command to list all the available GNOME extensions:
|
||||
|
||||
```
|
||||
gnome-extensions list
|
||||
```
|
||||
|
||||
This will show you an output similar to this:
|
||||
|
||||
![List GNOME Extensions][12]
|
||||
|
||||
The default Ubuntu dock extension is [[email protected]][13] You can disable it using this command:
|
||||
|
||||
```
|
||||
gnome-extensions disable [email protected]
|
||||
```
|
||||
|
||||
There will be no output message displayed on the screen but you’ll notice that the launcher or dock disappears from the left side.
|
||||
|
||||
If you want, you can enable it again using the same command as above but with enable option this time:
|
||||
|
||||
```
|
||||
gnome-extensions enable [email protected]
|
||||
```
|
||||
|
||||
**Conclusion**
|
||||
|
||||
There are ways to disable the dock in Ubuntu 18.04 as well. However, it may lead to unwarranted situations if you try to remove it in 18.04. Removing this package also removes the ubuntu-desktop package and you may end up with a system with broken functionalities like no application menu.
|
||||
|
||||
This is the reason why I won’t recommend removing it on Ubuntu 18.04.
|
||||
|
||||
It’s good that Ubuntu 20.04 gives a way to hide the taskbar. Users have more freedom and more screen space. Speaking of more screen space, did you know that you can [remove the top title bar from Firefox and gain more screen space][14]?
|
||||
|
||||
I am wondering how do you prefer your Ubuntu desktop? With the dock, without dock or without GNOME?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/disable-ubuntu-dock/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://ubuntu.com/
|
||||
[2]: https://itsfoss.com/keeping-ubuntu-unity-alive/
|
||||
[3]: https://itsfoss.com/ubuntu-unity-shutdown/
|
||||
[4]: https://www.gnome.org/
|
||||
[5]: https://itsfoss.com/download-ubuntu-20-04/
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/disable-dock-in-ubuntu.png?ssl=1
|
||||
[7]: https://itsfoss.com/ubuntu-20-04-release-features/
|
||||
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/GNOME-extensions-app-ubuntu.jpg?ssl=1
|
||||
[9]: https://itsfoss.com/gnome-3-36-release/
|
||||
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/disable-ubuntu-dock.png?ssl=1
|
||||
[11]: https://itsfoss.com/ubuntu-shortcuts/
|
||||
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/list-gnome-extensions.png?ssl=1
|
||||
[13]: https://itsfoss.com/cdn-cgi/l/email-protection
|
||||
[14]: https://itsfoss.com/remove-title-bar-firefox/
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
@ -0,0 +1,113 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Using TensorFlow.js and Node-RED with image recognition applications)
|
||||
[#]: via: (https://www.linux.com/news/using-tensorflow-js-and-node-red-with-image-recognition-applications/)
|
||||
[#]: author: (Linux.com Editorial Staff https://www.linux.com/author/kazuhito-yokoi/)
|
||||
|
||||
Using TensorFlow.js and Node-RED with image recognition applications
|
||||
======
|
||||
|
||||
_This Linux Foundation Platinum Sponsor-Contributed article from [Hitachi][1] is about how to use **TensorFlow.js** and **Node-RED** for use with image recognition applications._
|
||||
|
||||
### Using TensorFlow.js and Node-RED
|
||||
|
||||
TensorFlow.js is a JavaScript implementation of the [TensorFlow open source machine learning platform][2]. By using **TensorFlow.js**, learning and inference processing can be executed in real-time on the browser or the server-side with Node.js. [Node-RED][3] is a visual programming tool mainly developed for IoT applications.
|
||||
|
||||
According to [a recent InfoQ article on 2020 JavaScript web development trends][4], **TensorFlow.js** is classified as “Early Majority”, and **Node-RED** is classified as “Early Adopters” in their adoption cycles. And they are becoming increasingly popular with open source software developers.
|
||||
|
||||
![Image: InfoQ][5]
|
||||
|
||||
In this article, we’ll take a look at what you can do with these two trending open source software tools in combination.
|
||||
|
||||
### Creating a sample image recognition flow with Node-RED
|
||||
|
||||
Our objective will be to create a flow within **Node-RED** to recognize an object in an image, as depicted in the screenshot below.
|
||||
|
||||
![Flow to be created in Node-RED][6]
|
||||
|
||||
This flow can be observed after you upload a file from a browser using the yellow node component. The bottom left of the user interface displays the uploaded image in the “Original image” node. In the orange “Image recognition” node, the **TensorFlow.js** trained model is used to run Analyze for what is in the uploaded image (an aircraft). Finally, we will use the green “Output result” node in the upper right corner to output what is seen in the debug tab on the right. Additionally, an image annotated with an orange square under the [Image with annotation] node is displayed, and it’s easy to see what part of the image has been recognized.
|
||||
|
||||
In the following sections, we will explain the steps for creating this flow. For this demo, Node-RED can run in the local environment (in this case, a Raspberry Pi) and also in a cloud environment — it will work regardless of platform choice. For our tests, Google Chrome was chosen for use with the Node-RED web user interface.
|
||||
|
||||
### Installing a TensorFlow.js node
|
||||
|
||||
The **Node-RED** flow library has several TensorFlow.js-enabled nodes. One of these is [node-red-contrib-tensorflow][7], which contains the trained models.
|
||||
|
||||
We’ll begin with installing the **TensorFlow.js** node in **Node-RED**. To install the node, go to the top-right menu of the flow editor. Click **“Manage Palette”** -> Go to **“Palette”** tab -> Select **“Install”** tab. After that, enter “**node-red-contrib-tensorflow”** in the search keyword field.
|
||||
|
||||
![Installing a TensorFlow.js node][8]
|
||||
|
||||
As shown in the image above, the TensorFlow.js node to be used is displayed in the search results. Click the “install” button to install the TensorFlow.js node. Once the installation is complete, orange **TensorFlow.js** nodes will appear in the Analysis category of the left side palette.
|
||||
|
||||
![Analysis palette][9]
|
||||
|
||||
Each **TensorFlow.js** node is described in the following table. These are all image recognition nodes, but they can also generate image data with annotation and perform other functions like image recognition, or offline, which is necessary for edge analytics.
|
||||
|
||||
**#** | **Name** | **Description** | **Annotated Image** | **Offline Use**
|
||||
---|---|---|---|---
|
||||
1 | cocossd | A node that returns the name of the object in the image | YES | MAY
|
||||
2 | handpose | A node that estimates the positions of fingers and joints from a hand image | NONE | CAN’T
|
||||
3 | mobilenet | A node that returns the name of the object in the image | NONE | MAY
|
||||
4 | posenet | A node that estimates the positions of arms, head, and legs from the image of a person | YES | MAY
|
||||
|
||||
|
||||
|
||||
In addition, the following nodes, which are required to work with image data in Node-RED, should be installed in the same way.
|
||||
|
||||
– **node-red-contrib-browser-utils**: A node that uploads image files and audio files from the flow editor
|
||||
|
||||
– **node-red-contrib-image-output**: A node that displays an image on the flow editor
|
||||
|
||||
After installing **node-red-contrib-browser-utils**, you should see the file-inject node, microphone node, and camera node in the input category. Also, once you have installed **node-red-contrib-image-output**, you should see the image node in the output category.
|
||||
|
||||
### Creating a flow
|
||||
|
||||
Now that we have the necessary nodes let’s create the flow.
|
||||
|
||||
From the palette on the right, place a yellow file inject node, an orange **cocossd** node, and a green debug node (which will be renamed to **msg.payload** when placed in the workspace) and connect the ports of each node with “wires”.
|
||||
|
||||
To check the image data flowing through the wire, place two image nodes (named image preview when placed on the workspace) under the flow. To output the image data from the file inject node and debug node respectively, connect to the output port, as shown in the illustration.
|
||||
|
||||
![Completed Node-RED flow][10]
|
||||
|
||||
Only the image preview node on the right side specifies the image data variables to be displayed, so it is necessary to change the node settings. To change the settings, double-click the image preview node to open the node properties screen. On the node property screen, the image data stored in **msg.payload** is displayed by default. By changing this to **msg.annotatedInput** as shown in the screenshot below, the image preview node will display the annotated image.
|
||||
|
||||
![Image properties][11]
|
||||
|
||||
Give each node an appropriate name, press the red deploy button on the upper right, and then click the button on the left side of the file inject node to upload the sample image file of the airport from your PC.
|
||||
|
||||
![The recognized object in Node-RED][6]
|
||||
|
||||
As shown, an image with orange annotation on the aircraft is displayed under the “Image with annotation” node. Also, you can see that the debug tab on the right side correctly displayed “airplane”.
|
||||
|
||||
Feel free to try this with images you have at your disposal and experiment with them to see if they can be recognized correctly.
|
||||
|
||||
*About the author: Kazuhito Yokoi is an Engineer at Hitachi’s OSS Solution Center, located in Yokohama, Japan. *
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://www.linux.com/news/using-tensorflow-js-and-node-red-with-image-recognition-applications/
|
||||
|
||||
作者:[Linux.com Editorial Staff][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://www.linux.com/author/kazuhito-yokoi/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: http://www.hitachi.co.jp/
|
||||
[2]: https://www.tensorflow.org/overview
|
||||
[3]: https://nodered.org/
|
||||
[4]: https://www.infoq.com/articles/javascript-web-development-trends-2020/
|
||||
[5]: https://www.linux.com/wp-content/uploads/2020/06/image1_infoq.jpg
|
||||
[6]: https://www.linux.com/wp-content/uploads/2020/06/image2_flow.png
|
||||
[7]: https://flows.nodered.org/node/node-red-contrib-tensorflow
|
||||
[8]: https://www.linux.com/wp-content/uploads/2020/06/image3_installation.png
|
||||
[9]: https://www.linux.com/wp-content/uploads/2020/06/image4_palette.png
|
||||
[10]: https://www.linux.com/wp-content/uploads/2020/06/image5_flow.png
|
||||
[11]: https://www.linux.com/wp-content/uploads/2020/06/image6_property.png
|
@ -1,5 +1,5 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: translator: (Yufei-Yan)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
|
138
sources/tech/20200702 6 best practices for managing Git repos.md
Normal file
138
sources/tech/20200702 6 best practices for managing Git repos.md
Normal file
@ -0,0 +1,138 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (6 best practices for managing Git repos)
|
||||
[#]: via: (https://opensource.com/article/20/7/git-repos-best-practices)
|
||||
[#]: author: (Seth Kenlon https://opensource.com/users/seth)
|
||||
|
||||
6 best practices for managing Git repos
|
||||
======
|
||||
Resist the urge to add things in Git that will make it harder to manage;
|
||||
here's what to do instead.
|
||||
![Working from home at a laptop][1]
|
||||
|
||||
Having access to source code makes it possible to analyze the security and safety of applications. But if nobody actually looks at the code, the issues won’t get caught, and even when people are actively looking at code, there’s usually quite a lot to look at. Fortunately, GitHub has an active security team, and recently, they [revealed a Trojan that had been committed into several Git repositories][2], having snuck past even the repo owners. While we can’t control how other people manage their own repositories, we can learn from their mistakes. To that end, this article reviews some of the best practices when it comes to adding files to your own repositories.
|
||||
|
||||
### Know your repo
|
||||
|
||||
![Git repository terminal][3]
|
||||
|
||||
This is arguably Rule Zero for a secure Git repository. As a project maintainer, whether you started it yourself or you’ve adopted it from someone else, it’s your job to know the contents of your own repository. You might not have a memorized list of every file in your codebase, but you need to know the basic components of what you’re managing. Should a stray file appear after a few dozen merges, you’ll be able to spot it easily because you won’t know what it’s for, and you’ll need to inspect it to refresh your memory. When that happens, review the file and make sure you understand exactly why it’s necessary.
|
||||
|
||||
### Ban binary blobs
|
||||
|
||||
![Git binary check command in terminal][4]
|
||||
|
||||
Git is meant for text, whether it’s C or Python or Java written in plain text, or JSON, YAML, XML, Markdown, HTML, or something similar. Git isn’t ideal for binary files.
|
||||
|
||||
It’s the difference between this:
|
||||
|
||||
|
||||
```
|
||||
$ cat hello.txt
|
||||
This is plain text.
|
||||
It's readable by humans and machines alike.
|
||||
Git knows how to version this.
|
||||
|
||||
$ git diff hello.txt
|
||||
diff --git a/hello.txt b/hello.txt
|
||||
index f227cc3..0d85b44 100644
|
||||
\--- a/hello.txt
|
||||
+++ b/hello.txt
|
||||
@@ -1,2 +1,3 @@
|
||||
This is plain text.
|
||||
+It's readable by humans and machines alike.
|
||||
Git knows how to version this.
|
||||
```
|
||||
|
||||
and this:
|
||||
|
||||
|
||||
```
|
||||
$ git diff pixel.png
|
||||
diff --git a/pixel.png b/pixel.png
|
||||
index 563235a..7aab7bc 100644
|
||||
Binary files a/pixel.png and b/pixel.png differ
|
||||
|
||||
$ cat pixel.png
|
||||
<EFBFBD>PNG
|
||||
▒
|
||||
IHDR7n<EFBFBD>$gAMA<4D><41>
|
||||
<20>abKGD݊<44>tIME<4D>
|
||||
|
||||
-2R<32><52>
|
||||
IDA<EFBFBD>c`<60>!<21>3%tEXtdate:create2020-06-11T11:45:04+12:00<30><30>r.%tEXtdate:modify2020-06-11T11:45:04+12:00<30><30>ʒIEND<4E>B`<60>
|
||||
```
|
||||
|
||||
The data in a binary file can’t be parsed in the same way plain text can be parsed, so if anything is changed in a binary file, the whole thing must be rewritten. The only difference between one version and the other is everything, which adds up quickly.
|
||||
|
||||
Worse still, binary data can’t be reasonably audited by you, the Git repository maintainer. That’s a violation of Rule Zero: know what’s in your repository.
|
||||
|
||||
In addition to the usual [POSIX][5] tools, you can detect binaries using `git diff`. When you try to diff a binary file using the `--numstat` option, Git returns a null result:
|
||||
|
||||
|
||||
```
|
||||
$ git diff --numstat /dev/null pixel.png | tee
|
||||
\- - /dev/null => pixel.png
|
||||
$ git diff --numstat /dev/null file.txt | tee
|
||||
5788 0 /dev/null => list.txt
|
||||
```
|
||||
|
||||
If you’re considering committing binary blobs to your repository, stop and think about it first. If it’s binary, it was generated by something. Is there a good reason not to generate them at build time instead of committing them to your repo? Should you decide it does make sense to commit binary data, make sure you identify, in a README file or similar, where the binary files are, why they’re binary, and what the protocol is for updating them. Updates must be performed sparingly, because, for every change you commit to a binary blob, the storage space for that blob effectively doubles.
|
||||
|
||||
### Keep third-party libraries third-party
|
||||
|
||||
Third-party libraries are no exception to this rule. While it’s one of the many benefits of open source that you can freely re-use and re-distribute code you didn’t write, there are many good reasons not to house a third-party library in your own repository. First of all, you can’t exactly vouch for a third party, unless you’ve reviewed all of its code (and future merges) yourself. Secondly, when you copy third party libraries into your Git repo, it splinters focus away from the true upstream source. Someone confident in the library is technically only confident in the master copy of the library, not in a copy lying around in a random repo. If you need to lock into a specific version of a library, either provide developers with a reasonable URL the release your project needs or else use [Git Submodule][6].
|
||||
|
||||
### Resist a blind git add
|
||||
|
||||
![Git manual add command in terminal][7]
|
||||
|
||||
If your project is compiled, resist the urge to use `git add .` (where `.` is either the current directory or the path to a specific folder) as an easy way to add anything and everything new. This is especially important if you’re not manually compiling your project, but are using an IDE to manage your project for you. It can be extremely difficult to track what’s gotten added to your repository when an IDE manages your project, so it’s important to only add what you’ve actually written and not any new object that pops up in your project folder.
|
||||
|
||||
If you do use `git add .`, review what’s in staging before you push. If you see an unfamiliar object in your project folder when you do a `git status`, find out where it came from and why it’s still in your project directory after you’ve run a `make clean` or equivalent command. It’s a rare build artifact that won’t regenerate during compilation, so think twice before committing it.
|
||||
|
||||
### Use Git ignore
|
||||
|
||||
![Git ignore command in terminal][8]
|
||||
|
||||
Many of the conveniences built for programmers are also very noisy. The typical project directory for any project, programming, or artistic or otherwise, is littered with hidden files, metadata, and leftover artifacts. You can try to ignore these objects, but the more noise there is in your `git status`, the more likely you are to miss something.
|
||||
|
||||
You can Git filter out this noise for you by maintaining a good gitignore file. Because that’s a common requirement for anyone using Git, there are a few starter gitignore files available. [Github.com/github/gitignore][9] offers several purpose-built gitignore files you can download and place into your own project, and [Gitlab.com][10] integrated gitignore templates into the repo creation workflow several years ago. Use these to help you build a reasonable gitignore policy for your project, and stick to it.
|
||||
|
||||
### Review merge requests
|
||||
|
||||
![Git merge request][11]
|
||||
|
||||
When you get a merge or pull request or a patch file through email, don’t just test it to make sure it works. It’s your job to read new code coming into your codebase and to understand how it produces the result it does. If you disagree with the implementation, or worse, you don’t comprehend the implementation, send a message back to the person submitting it and ask for clarification. It’s not a social faux pas to question code looking to become a permanent fixture in your repository, but it’s a breach of your social contract with your users to not know what you merge into the code they’ll be using.
|
||||
|
||||
### Git responsible
|
||||
|
||||
Good software security in open source is a community effort. Don’t encourage poor Git practices in your repositories, and don’t overlook a security threat in repositories you clone. Git is powerful, but it’s still just a computer program, so be the human in the equation and keep everyone safe.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/7/git-repos-best-practices
|
||||
|
||||
作者:[Seth Kenlon][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/seth
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/wfh_work_home_laptop_work.png?itok=VFwToeMy (Working from home at a laptop)
|
||||
[2]: https://securitylab.github.com/research/octopus-scanner-malware-open-source-supply-chain/
|
||||
[3]: https://opensource.com/sites/default/files/uploads/git_repo.png (Git repository )
|
||||
[4]: https://opensource.com/sites/default/files/uploads/git-binary-check.jpg (Git binary check)
|
||||
[5]: https://opensource.com/article/19/7/what-posix-richard-stallman-explains
|
||||
[6]: https://git-scm.com/book/en/v2/Git-Tools-Submodules
|
||||
[7]: https://opensource.com/sites/default/files/uploads/git-cola-manual-add.jpg (Git manual add)
|
||||
[8]: https://opensource.com/sites/default/files/uploads/git-ignore.jpg (Git ignore)
|
||||
[9]: https://github.com/github/gitignore
|
||||
[10]: https://about.gitlab.com/releases/2016/05/22/gitlab-8-8-released
|
||||
[11]: https://opensource.com/sites/default/files/uploads/git_merge_request.png (Git merge request)
|
@ -0,0 +1,69 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (Customizing my Linux terminal with tmux and Git)
|
||||
[#]: via: (https://opensource.com/article/20/7/tmux-git)
|
||||
[#]: author: (Moshe Zadka https://opensource.com/users/moshez)
|
||||
|
||||
Customizing my Linux terminal with tmux and Git
|
||||
======
|
||||
Set up your console so you always know where you are and what to do
|
||||
next.
|
||||
![woman on laptop sitting at the window][1]
|
||||
|
||||
I use GNOME Terminal, mostly because it is my distribution's default. But what happens inside my terminal is far from "default." Before I get into how I customize it, here is what it looks like:
|
||||
|
||||
![Moshe Zadka's terminal][2]
|
||||
|
||||
(Moshe Zadka, [CC BY-SA 4.0][3])
|
||||
|
||||
### Start at the bottom
|
||||
|
||||
I use [tmux][4], a terminal multiplexer technology, to manage my terminal experience.
|
||||
|
||||
At the bottom of the image above, you can see my green tmux bar. The `[3]` at the bottom indicates this terminal is the third one: each terminal runs its own tmux session. (I created a new one to make the font larger, so it's easier to see in this screenshot; this is the only difference between this terminal and my real ones.)
|
||||
|
||||
The prompt also looks funny, right? With so much information jammed into the prompt, I like to stick in a newline so that if I want to do impromptu shell programming or write a five-step pipeline, I can do it without having things spill over. The trade-off is that simple sequences of commands—touch this, copy that, move this—scroll off my screen faster.
|
||||
|
||||
The last thing on the line with the content is [Aleph null][5], the smallest [infinite cardinality][6]. I like it when it is obvious where a content line ends, and when I realized that both Aleph and subscript 0 are Unicode characters, I could not resist the temptation to make Aleph null part of my prompt. (Math nerds, unite!)
|
||||
|
||||
Before that is my username; this is moderately useful since I use the same [dotfiles][7] (stored in Git) on multiple machines with different usernames.
|
||||
|
||||
Before my username is the last component of the directory I am in. The full path is often too long and useless, but the current directory is invaluable for someone, like me, who constantly forgets what he's working on. Before that is the name of the machine. All my machines are named after TV shows that I like. My older laptop is `mcgyver`.
|
||||
|
||||
The first bit in the prompt is the bit I like the most: one letter that lets me know the Git status of the directory. It is `G` if the directory is "(not in) Git," `K` if the directory is "OK" and nothing needs to be done, `!` if there are files unknown to Git that must be added or ignored, `C` if I need to commit, `U` if there is no upstream, and `P` if an upstream exists, but I have not pushed. This scheme is not based on the current status but describes the _next action_ I need to do. (To review Git terminology, give [this article][8] a read.)
|
||||
|
||||
This terminal functionality is accomplished with an interesting Python utility. It runs `python -m howsit` (after I installed [howsit][9] in a dedicated virtual environment).
|
||||
|
||||
You can see the rendering in the image above, but for completeness, here is my PS1:
|
||||
|
||||
|
||||
```
|
||||
[$(~/.virtualenvs/howsit/bin/python -m howsit)]\h:\W \u ℵ₀
|
||||
$
|
||||
```
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/7/tmux-git
|
||||
|
||||
作者:[Moshe Zadka][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/moshez
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/lenovo-thinkpad-laptop-window-focus.png?itok=g0xPm2kD (young woman working on a laptop)
|
||||
[2]: https://opensource.com/sites/default/files/uploads/terminal-tmux-moshezadka.png (Moshe Zadka's terminal)
|
||||
[3]: https://creativecommons.org/licenses/by-sa/4.0/
|
||||
[4]: https://opensource.com/article/20/1/tmux-console
|
||||
[5]: https://simple.wikipedia.org/wiki/Aleph_null#:~:text=Aleph%20null%20(also%20Aleph%20naught,series%20of%20infinite%20cardinal%20numbers.
|
||||
[6]: https://gizmodo.com/a-brief-introduction-to-infinity-5809689
|
||||
[7]: https://opensource.com/article/19/3/move-your-dotfiles-version-control
|
||||
[8]: https://opensource.com/article/19/2/git-terminology
|
||||
[9]: https://pypi.org/project/howsit/
|
@ -0,0 +1,146 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: ( )
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to Create a Pareto Diagram [80/20 Rule] in LibreOffice Calc)
|
||||
[#]: via: (https://itsfoss.com/pareto-chart-libreoffice/)
|
||||
[#]: author: (Dimitrios Savvopoulos https://itsfoss.com/author/dimitrios/)
|
||||
|
||||
How to Create a Pareto Diagram [80/20 Rule] in LibreOffice Calc
|
||||
======
|
||||
|
||||
_**Brief: In this LibreOffice tip, you’ll learn to create the famous Pareto chart in Calc.**_
|
||||
|
||||
The [Pareto Principle][1], also known as the 80/20 Rule, The Law of the Vital Few and The Principle of Factor Sparsity, illustrates that 80% of effects arise from 20% of the causes – or in layman’s terms – 20% of your actions/activities will account for 80% of your results/outcomes.
|
||||
|
||||
Although the original observation is related to [economics][2], it can be widely adopted and used across all aspects of business, economics, mathematics, and processes. In computer science, the Pareto principle can be used in [software optimization][3].
|
||||
|
||||
Let me show you how to create a Pareto diagram in [LibreOffice][4] spreadsheet tool, i.e. Calc.
|
||||
|
||||
### Creating Pareto diagram in LibreOffice Calc
|
||||
|
||||
![][5]
|
||||
|
||||
To be able to create a Pareto diagram, you need these three basic elements:
|
||||
|
||||
* The factors, ranked by the magnitude of their contribution
|
||||
* The factors expressed numerically
|
||||
* The cumulative-percent-of-total effect of the ranked factors
|
||||
|
||||
|
||||
|
||||
First, enter the data in a spreadsheet. Now let’s get started!
|
||||
|
||||
#### Step 1: Sort the data
|
||||
|
||||
Mark all rows from first to the last and at the **Data** tab click on the Sort option. At the **Sort Criteria** tab choose **Sort key 1** and change the entry to **Number of Errors** or whichever name you choose. Make sure to tick **Descending** and finally **OK**.
|
||||
|
||||
![][6]
|
||||
|
||||
#### Step 2: Create the Cumulative Percentage values
|
||||
|
||||
To calculate the cumulative percent of a total, you will need one formula for the first cell (C5) and a different formula for cells C6 and below.
|
||||
|
||||
**Generic formula for the first cell**
|
||||
|
||||
```
|
||||
=amount/total
|
||||
```
|
||||
|
||||
**In the example shown, the formula in C5 is:** =B5/$B$15
|
||||
|
||||
**Generic formula for the remaining cells**:
|
||||
|
||||
```
|
||||
=(amount/total)+previous cell result
|
||||
```
|
||||
|
||||
**In the example shown, the formula in C6 is:** =(B6/$B$15)+C5
|
||||
|
||||
By dragging the fill handle down, you will get the correct formulas for the remaining cells.
|
||||
|
||||
![][7]
|
||||
|
||||
#### Step 3: Create the Pareto diagram
|
||||
|
||||
To create the chart go to **Insert** tab and then click on the **Chart** option.
|
||||
|
||||
In the upcoming Chart Wizard choose the chart type **Column and Line** with **Number of lines** set to 1 and click Next.
|
||||
|
||||
![][8]
|
||||
|
||||
Select the correct data range **$A$4:$C$14** by either using your mouse in the data range selector or by entering it manually. Leave the settings **Data series in columns**, **First row as label**, **First column as label** and click Next.
|
||||
|
||||
![][9]
|
||||
|
||||
The following Data Series window should have everything filled in correctly, click Next.
|
||||
|
||||
![][10]
|
||||
|
||||
In the last window enter titles and remove the legend:
|
||||
|
||||
* Title: Pareto chart
|
||||
* X axis: Error Type
|
||||
* Y axis: Number of Errors
|
||||
* Untick **Display legend**
|
||||
* click **Finish**.
|
||||
|
||||
|
||||
|
||||
![][11]
|
||||
|
||||
And this is the result:
|
||||
|
||||
![][12]
|
||||
|
||||
If the red line appears without any value, select it, then right click > Format Data Series > Align Data Series to Secondary y-Axis > Click OK.
|
||||
|
||||
#### Step 4: Fine tune the chart
|
||||
|
||||
The range of the secondary y-axis is set to **0 – 120** , it needs to be up to **100**.
|
||||
|
||||
Double click on the secondary y-axis . In the **Scale** tab, untick **Automatic** and **enter 100** as the maximum value. Then click ok.
|
||||
|
||||
![][13]
|
||||
|
||||
All done!
|
||||
|
||||
![][14]
|
||||
|
||||
**Conclusion**
|
||||
|
||||
Using a Pareto chart to analyze problems in a business project allows focusing efforts towards the ones offering the most considerable improvement potential.
|
||||
|
||||
This is one of the many real-life scenario where I have used LibreOffice instead of other proprietary office software. I hope to share more LibreOffice tutorials on It’s FOSS. Meanwhile, you can [learn these rather hidden LibreOffice tips][15].
|
||||
|
||||
Which LibreOffice functionality do you use the most? Let us know at the comments below!
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/pareto-chart-libreoffice/
|
||||
|
||||
作者:[Dimitrios Savvopoulos][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/译者ID)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/dimitrios/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://betterexplained.com/articles/understanding-the-pareto-principle-the-8020-rule/
|
||||
[2]: https://en.wikipedia.org/wiki/Pareto_principle#In_economics
|
||||
[3]: https://en.wikipedia.org/wiki/Program_optimization#Bottlenecks
|
||||
[4]: https://www.libreoffice.org/
|
||||
[5]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/07/pareto-libreoffice.png?ssl=1
|
||||
[6]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/1.-sort-the-data.png?ssl=1
|
||||
[7]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/2.-cumulative-percent.png?ssl=1
|
||||
[8]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/3.chart_.png?ssl=1
|
||||
[9]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/5.data-range.png?ssl=1
|
||||
[10]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/6.data-series.png?fit=800%2C381&ssl=1
|
||||
[11]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/07/7.chart-elements.png?fit=800%2C381&ssl=1
|
||||
[12]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/8.Pareto-chart.png?ssl=1
|
||||
[13]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/9.fine-tune.png?ssl=1
|
||||
[14]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/07/10.final_.png?ssl=1
|
||||
[15]: https://itsfoss.com/libreoffice-tips/
|
@ -1,141 +0,0 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (nophDog)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to know if you're ready to switch from Mac to Linux)
|
||||
[#]: via: (https://opensource.com/article/20/6/mac-to-linux)
|
||||
[#]: author: (Marko Saric https://opensource.com/users/markosaric)
|
||||
|
||||
如何确定你已经准备好从 Mac 切换到 Linux?
|
||||
======
|
||||
在开源操作系统的帮助下,Linux 可以帮你完成绝大部分你在 Mac 上能做的事情。
|
||||
![Digital images of a computer desktop][1]
|
||||
|
||||
我[从 Mac 切换到 Linux][2] 已经两年了。在 Linux 之前,我用的一直是 Apple 系统,而且 2018 年我安装第一个发行版时,还只是一个纯粹的新手。
|
||||
|
||||
最近,我只用 Linux,我可以用它完成任何任务。浏览网页、观看 Netflix 影片、写作以及编辑[博客][3],甚至还在上面跑我的[开源网页分析项目][4]。
|
||||
|
||||
我可不是开发者!但是很久以前,普通人根本无法轻松玩转 Linux。
|
||||
|
||||
最近关于 Mac 的讨论越来越多,许多人已经在考虑从 Mac 切换到 Linux。我打算分享一些切换过程中的经验,帮助其它新手也能实现无痛转移。
|
||||
|
||||
### 你该不该换?
|
||||
|
||||
在换系统之前,最好想清楚,因为有时候 Linux 可能跟你预期不一样。如果你仍希望跟 Apple Watch 无缝配对、可以用 FaceTime 给朋友打电话、或者你想打开 iMovie 看视频,那最好还是不要换了。这些都是 Apple 的专利软件,你只能在 Apple 的『围墙花园』里面使用。如果离不开 Apple 的生态系统,那么 Linux 可能不太适合你。
|
||||
|
||||
我对 Apple 生态没有太多挂念,我不用 iPhone,所以跟手机的协作没那么必要。我也不用 iCloud、FaceTime,当然也包括 Siri。我早就对开源充满兴趣,只是一直没有行动。
|
||||
|
||||
### 检查你的必备软件清单
|
||||
|
||||
我还在使用 Mac 的时候,就已经开始探索开源软件,我发现大部分在 Mac 上使用的软件,在 Linux 也可以运行。
|
||||
|
||||
怀念用火狐浏览网页吗?在 Linux 上它也可以运行。想用 VLC 看视频?它也有 Linux 版本。喜欢用 Audacity 录制、编辑音频?它正在 Linux 上等着你呢。你用 OBS Studio 直播?在 Linux 直接下载安装吧。一直用 Telegram 跟朋友和家人保持联系吗?Linux 上当然少不了它。
|
||||
|
||||
此外,Linux 不仅仅意味着开源软件。大部分(也可能所有)你最喜欢的非 Apple 专利软件,都能在 Linux 见到它们的身影。Spotify、Slack、Zoom、Stream、Discord、Skype、Chrome 以及很多闭源软件,都可以使用。而且,在你 Mac 浏览器里面运行的任何东西,同样能够运行在 Linux 浏览器。
|
||||
|
||||
你能在 Linux 找到你的必备软件,或者更好的替代品吗?请再三确认,做到有备无患。用你最常用的搜索引擎,在网上检索一下。搜索『软件名 + Linux』 或者 『软件名 + Linux 替代品』,然后再去 [Flathub][5] 网站查看你能在 Linux 用 Flatpak 安装的专利软件有哪些。
|
||||
|
||||
### 请牢记:Linux 不等于 Mac
|
||||
|
||||
如果你希望能够从 Mac 轻松转移到 Linux,我相信有一点很重要,你需要保持包容的思想以及愿意学习新操作系统的心态。Linux 并不等于 Mac,所以你需要给自己一些时间去接触并了解它。
|
||||
|
||||
如果你想让 Linux 用起来、看起来跟你习惯的 macOS 一模一样,那么 Linux 可能也不适合你。尽管你可以通过各种方法把 Linux 桌面环境打造得跟 macOS 相似,但我觉得要想成功转移到 Linux,最好的办法是接受它。
|
||||
|
||||
试试新的工作流,该怎么用就怎么用。不要总想着把 Linux 变成其它东西。你会跟我一样,像享受 Mac 一样享受 Linux,甚至能有更好的体验感。
|
||||
|
||||
还记得你第一次使用 Mac 吧;你肯定花了不少时间去习惯它的用法。那么请给 Linux 同样多的时间和关怀。
|
||||
|
||||
### 选择一个 Linux 发行版
|
||||
|
||||
有别于 Windows 和 macOS,Linux 不止一个单一的操作系统。不同的 Linux 操作系统被称作发行版,开始使用 Linux 之后,我尝试过好几个不同的发行版。我也用过不同的桌面环境,或者图形界面。在美观度、易用性、工作流以及集成软件上,它们有很大差异。
|
||||
|
||||
尽管作为 Mac 的替代品,被提及最多的是 [ElementaryOS][6] 和 [Pop!_OS][7],但我仍建议从 [Fedora Workstation] 开始,理由如下:
|
||||
- 使用 [Fedora Media Writer][9],容易安装
|
||||
- 开箱即支持你所有的硬件
|
||||
- 支持最新的 Linux 软件
|
||||
- 运行原生无改动的 GNOME 桌面环境
|
||||
- 有大型开发团队以及一个庞大的社区
|
||||
|
||||
在我看来,从易用性、连贯性、流畅性和来自 macOS 用户的用户体验来看,[GNOME][10] 是最好用的桌面环境。在 Linux 世界,它拥有大量开发资源和用户基数,所以你的使用体验会很好。
|
||||
|
||||
Fedora 可以为你打开一扇 Linux 的大门,当你适应之后,就可以开始探索各个发行版、桌面环境,甚至窗口管理器之类的玩意了。
|
||||
|
||||
### 熟悉 GNOME
|
||||
|
||||
GNOME 是 Fedora 和许多其它 Linux 发行版的默认窗口管理器。它最近的升级 [升级到 GNOME 3.36][11] 带来了 Mac 用户欣赏的现代设计。
|
||||
|
||||
一定要做好心理准备,Linux、Fedora Workstation 和 GNOME 并不是 Apple 和 macOS。GNOME 非常干净、简单、现代,新颖。它不会分散你的注意力。它没有桌面图标。没有可见的 dock 栏。窗口上甚至没有最小化、最大化按钮。但是不要慌张。如果你去尝试,它会证明这是你用过最好、最有生产力的操作系统。
|
||||
|
||||
GNOME 不会给你带来困扰。启动之后,你唯一能看到的东西只有顶栏和背景图片。顶栏由这几样东西组成, **Activities** 在左边,时间和日期在中间(这也是你的通知栏中心),右边是网络、蓝牙、VPN、声音、亮度、电池托盘图标之类的东西。
|
||||
|
||||
#### 为什么 GNOME 像 Mac
|
||||
|
||||
你会注意到一些跟 macOS 的相似性,例如窗口吸附,空格预览(用起来跟 Quick Look 一模一样)。
|
||||
|
||||
如果你把鼠标光标移动到左上角,点击顶栏的 **Activities**,或者按下键盘上 **Super** 键(也就是 Apple 键),你会看到 **Activities Overview**。Activities Overview 有点像 macOS 系统上 Mission Control 和 Spotlite Search 的结合体。它会在屏幕中间展示已打开软件和窗口的概览。在左手边,你可以看到 dock 栏,上面有你打开的软件和常用软件。所有打开的软件下面会有一个指示标志,在右手边,你可以看到不同的工作区。
|
||||
|
||||
在顶栏中间,有一个搜索框。只要你开始输入,焦点就会转移到搜索框。它能搜索你已经安装的软件和文件内容,在软件中心搜索指定的软件,作计算器,向你展示时间或者天气,当然它能做的还有很多。它就像 Spotlight 一样。只需要开始输入你要搜索的内容,然后按下 **Enter** 打开软件或者文件。
|
||||
|
||||
你能看到一列安装好的软件(更像 Mac 上的 Launchpad)。点击 dock 栏 **Show Applications** 图标,或者按 **Super + A**。
|
||||
|
||||
总体来说,Linux 是一个轻量级的系统,即使在很老的硬件上也能跑得很顺畅,跟 macOS 比起来仅仅占用很少的磁盘空间。并且不像 macOS,你可以删除任何你不想要或不需要的预装软件。
|
||||
|
||||
#### 自定义你的 GNOME 设置
|
||||
|
||||
浏览一下 GNOME 设置,熟悉它的选项,做一些更改,让它用起来更舒服。下面是一些我装好 GNOME 必须做的事情。
|
||||
|
||||
- 在 **Mouse Touchpad** 中,我禁用 natural scrolling、启用 tap-to-click。
|
||||
- 在 **Display** 中,我打开 night light,在晚上,屏幕会让颜色变暖,减少眼睛疲劳。
|
||||
- 我安装 [**GNOME Tweaks**][12],因为它可以更改额外的设置选项。
|
||||
- 在 Tweaks 中,我启用了 **Over-Amplification** 选项,这样就能获得更高的音量。
|
||||
- 在 Tweaks 中,相比默认的亮色主题,我更喜欢 **Adwaita Dark** 主题。
|
||||
|
||||
#### 习惯使用键盘操作
|
||||
|
||||
GNOME 是以一个鼠标为中心的操作系统,所以尽量多使用键盘。在 GNOME 设置中的**键盘快捷键**部分,你可以找到很多不同的快捷键。
|
||||
|
||||
你也可以自定义键盘快捷键,来形成自己的工作流。我设置 **Super** 键设置成打开我必须使用的软件。比如说,**Super + B** 打开我的浏览器,**Super + F** 打开文件,**Super + T** 打开终端。我把 **Ctrl + Q** 设置成关闭窗口。
|
||||
|
||||
我使用 **Super + Tab** 切换软件,**Super + H** 隐藏一个窗口。**F11** 全屏打开软件。**Super + Left arrow** 把窗口吸附到屏幕左边。**Super + Right arrow** 把窗口吸附到屏幕左边。等等。
|
||||
|
||||
### 在 Mac 上尝试 Linux 之后再做决定
|
||||
|
||||
在完全安装 Linux 之前,在你的 Mac 上先尝试 Fedora。从 [Fefora's website][9] 下载 ISO 镜像。[Etcher][13] 能够帮你把 ISO 镜像写入 USB,然后在启动时点击 **option** 选项,这样你就可以在 live 模式尝试了。
|
||||
|
||||
现在你已经可以随意探索 live 模式的 Fedora Workstation,而不用在你的 Mac 上安装任何东西。试试不一样的东西,能否正常工作:能不能连接 WiFi?触控板是否正常?有没有声音?等等。
|
||||
|
||||
也记得花时间尝试 GNOME。测试我上面提到的不同功能。打开一些安装好的软件。一切看起来都很还不错,如果你喜欢这样的 Fedora Workstation 和 GNOME,并且很肯定这就是你想要的,那么把它安装到你的 Mac 吧。
|
||||
|
||||
尽情探索 Linux 世界吧!
|
||||
|
||||
* * *
|
||||
|
||||
_This article is an update of [How I switched from macOS to Linux after 15 years of Apple][2] originally published on Marko Saric's website._
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/20/6/mac-to-linux
|
||||
|
||||
作者:[Marko Saric][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/nophDog)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/markosaric
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/computer_browser_web_desktop.png?itok=Bw8ykZMA (Digital images of a computer desktop)
|
||||
[2]: https://markosaric.com/linux/
|
||||
[3]: https://markosaric.com/how-start-blog/
|
||||
[4]: https://plausible.io/open-source-website-analytics
|
||||
[5]: https://flathub.org/apps
|
||||
[6]: https://opensource.com/article/20/2/macbook-linux-elementary
|
||||
[7]: https://support.system76.com/articles/pop-basics/
|
||||
[8]: https://getfedora.org/
|
||||
[9]: https://getfedora.org/en/workstation/download/
|
||||
[10]: https://www.gnome.org/
|
||||
[11]: https://www.gnome.org/news/2020/03/gnome-3-36-released/
|
||||
[12]: https://wiki.gnome.org/Apps/Tweaks
|
||||
[13]: https://www.balena.io/etcher/
|
@ -0,0 +1,135 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (chunibyo-wly)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (One CI/CD pipeline per product to rule them all)
|
||||
[#]: via: (https://opensource.com/article/19/7/cicd-pipeline-rule-them-all)
|
||||
[#]: author: (Willy-Peter Schaub https://opensource.com/users/wpschaub/users/bclaster/users/matt-micene/users/barkerd427)
|
||||
|
||||
使用一条CI/CD流水线管理所有的产品
|
||||
======
|
||||
统一的持续集成与持续交付的流水线的构想是一种梦想吗?
|
||||
![An intersection of pipes.][1]
|
||||
|
||||
当我加入 WorkSafeBC 的云端运维团队,我负责的是云端运维和工作流水线优化,我分享了一个可以对任意产品进行持续集成和持续交付的流水线。
|
||||
|
||||
根据 Lukas Klose 所说,[flow][2](在软件工程范围内)是“软件系统可以在一种稳定和可预测的状态下创造价值”一种状态。我认为这是我遇到的最大的挑战和机遇之一,特别是在解决紧急问题的复杂领域。我力求通过一种持续,高效和优质的解决方案,提供一种持续交付模式,并且能够构建正确的事物让我们的用户感到满意。
|
||||
|
||||
### 持续集成和持续交付的 (CI/CD) 流水线
|
||||
|
||||
CI/CD 流水线是一种代码变更的频率更高,一致并且可靠的持续交付 DevOps 实践。它可以帮组敏捷开发团队增加**部署的频率**并且减少**变更所需要的时间**,**变更失败的频率**,和**故障恢复的时间**等关键绩效指标 (KPIS) ,从而提高质量并且实现更快的交付。唯一的先决条件就是坚实的开发基础,对需求从构想到放弃的责任心,和一个全面的流水线(如下图所示)。
|
||||
|
||||
![Prerequisites for a solid development process][3]
|
||||
|
||||
它简化了工程流程和产品用以稳定基础架构环境;优化工作流程;创建一致的,可重复的,自动化的任务。正如 Dave Snowden [Cynefin Sensemaking][4] 所说的那样,这样就允许我们将复杂不可解决的任务变成了复杂可解决的任务,降低了维护成本,提高了质量和可靠性。
|
||||
|
||||
精简流程的一部分是需要最大程度地减少浪费 [wasteful practice types][5] Muri (过载), Mura (变异), 和 Muda (浪费)
|
||||
|
||||
* **Muri:** 避免过度工程化,和与业务价值不相关的功能以及过多的文档
|
||||
* **Mura:** 改善确认和审批流(比如,安全审核);驱动测试 [shift-left][6],安全漏洞扫描与代码质量检查;并且可以改进风险评定。
|
||||
* **Muda:** 避免浪费比如技术债务,bugs 或者前期详细的文档等。
|
||||
|
||||
|
||||
|
||||
看起来 80% 的重点都集中在提供一种可以持续集成和协作的工程产品,这些系统可以采用构想一个创意,计划,开发,测试和监视您的解决方案。然而,一个成功的转型和工程系统是由 5% 的产品,15% 的过程和 80% 的开发人员组成的。
|
||||
|
||||
有很多产品供我们使用。比如,Azure DevOps 提供了持续集成 (CI) 和持续交付 (CD) 的丰富支持。可扩展,开源集成和商用现成品或技术 (COTS) 像软件即服务 (SaaS) 比如 Stryker, SonarQube, WhiteSource, Jenkins,和 Octopus 等。
|
||||
|
||||
![5% about products, 15% about process, 80% about people][7]
|
||||
|
||||
最大的挑战是打破数十年的规则,规定和已经步入舒适区的流程:“*我们一直都是这样做的;为什么需要改变呢?*”
|
||||
|
||||
开发和运维人员之间的摩擦导致了各种支离破碎,重复的,不间断的集成和交付管道。开发人员希望能访问所有东西,以便快速的持续迭代,用户使用和持续发布。运维人员希望将所有东西说起来来保护业务,用户和品质。这些矛盾在不经意间导致了很难做到一种自动化的流程,进而导致发布周期晚于预期。
|
||||
|
||||
让我们使用最近的白板讨论中的片段来探索流水线。
|
||||
|
||||
想要支持流水线的变化是一项困难并且花费巨大的工作;版本控制和可追溯更使这个问题变得更加复杂,因此不断精简开发流程和流水线是一项挑战。
|
||||
|
||||
![Improving quality and visibility of pipelines][8]
|
||||
|
||||
我主张一些原则使得每个产品都能使用通用流水线:
|
||||
|
||||
* 使一切自动化
|
||||
* 一次构建
|
||||
* 保持持续集成和持续交付
|
||||
* 保持持续精简和改进
|
||||
* 保持一个定义构建
|
||||
* 保持一个发布的流水线定义
|
||||
* 频繁和尽早的扫描漏洞,并且*尽快的失败*
|
||||
* 频繁和尽早的进行测试,并且*尽快的失败*
|
||||
* 保持已发布版本的可追踪和监控
|
||||
|
||||
|
||||
|
||||
但是,如果我要打破这些,最重要的原则就是*保持简单*。如果你不能说明流水线化的原因,你或许是不了解自己的软件过程的。我们大多数想要的不是最好的,超现代的和具有革命意义的流水线——我们仅仅是需要一个功能强大,有价值的和能适配不同工程的流水线。首先需要解决的是那 80% —— 文化,人员和他们的心态。
|
||||
|
||||
### 统一流水线
|
||||
|
||||
让我们逐步完成我们的白板会议实践。
|
||||
|
||||
![CI build/CD release pipeline][9]
|
||||
|
||||
每个应用使用一套构建定义来定义一个 CI/CD 流水线,用来触发*合并请求前的验证*与*持续集成*的构建。生成一个带有 debug 信息的*发布*的构建并且将其上传到 [Symbol Server][10]。这允许了开发者们可以在不需要考虑什么被构建或者什么符号需要被加载的情况下在本地和远程生产环境进行 debug,符号服务器对我们来说就是这样的魔法。
|
||||
|
||||
![Breaking down the CI build pipeline][11]
|
||||
|
||||
在构建过程中进行尽可能多的构建——*左移测试*——允许制作新特性的团队可以经常的失败,不断的提高整体的产品质量,并且可以为代码审核员提供每个 pull request 的无价证据。你喜欢有大量提交的 pull request 吗?或者一个带有少数提交和提供了漏洞检查,测试覆盖率,代码质量检查和 [Stryker][12] 突变残余的 pull request?
|
||||
|
||||
![Breaking down the CD release pipeline][13]
|
||||
|
||||
不要通过转变构建去生成多个环境特定的构建。通过一个构建实现*发布时转型*,*标记化*和 XML/JSON 的*值替换*。换句话说,*左移测试*具体环境的配置。
|
||||
|
||||
![Shift-right the environment-specific configuration][14]
|
||||
|
||||
安全存储发布的配置数据,并且使他基于*可信任*和*敏感*的数据对开发和运维都能有效。使用开源的密钥管理工具,Azure 密钥金库,AWS 密钥管理服务,或者其他产品,记住你的工具箱中有很多方便的工具。
|
||||
|
||||
![Dev-QA-production pipeline][15]
|
||||
|
||||
使用*用户组*而不是*用户*移动权限系统,使用多流水线的多阶段转移到简单的用户组成员资格。
|
||||
|
||||
![Move approver management to simple group membership][16]
|
||||
|
||||
创建一条流水线并且对赋予特定的交付阶段的权限,而不是重复流水线让团队进入他们感兴趣的地方。
|
||||
|
||||
![Pipeline with access to specific delivery stages][17]
|
||||
|
||||
最后但并非不重要,包括 pull request 帮助提高代码仓库洞察力和透明度,增进总体质量,协作和发布预验证构建到已筛选的环境;比如,开发环境。
|
||||
|
||||
这是整个白板更正式的视图。
|
||||
|
||||
![The full pipeline][18]
|
||||
|
||||
所以,您对CI/CD管道有什么想法和经验?是我通过*一条管道来管理它们*的这个梦想吗?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://opensource.com/article/19/7/cicd-pipeline-rule-them-all
|
||||
|
||||
作者:[Willy-Peter Schaub][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[译者ID](https://github.com/chunibyo-wly)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://opensource.com/users/wpschaub/users/bclaster/users/matt-micene/users/barkerd427
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/LAW-Internet_construction_9401467_520x292_0512_dc.png?itok=RPkPPtDe (An intersection of pipes.)
|
||||
[2]: https://continuingstudies.sauder.ubc.ca/courses/agile-delivery-methods/ii861
|
||||
[3]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-2.png (Prerequisites for a solid development process)
|
||||
[4]: https://en.wikipedia.org/wiki/Cynefin_framework
|
||||
[5]: https://www.lean.org/lexicon/muda-mura-muri
|
||||
[6]: https://en.wikipedia.org/wiki/Shift_left_testing
|
||||
[7]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-3.png (5% about products, 15% about process, 80% about people)
|
||||
[8]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-4_0.png (Improving quality and visibility of pipelines)
|
||||
[9]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-5_0.png (CI build/CD release pipeline)
|
||||
[10]: https://en.wikipedia.org/wiki/Microsoft_Symbol_Server
|
||||
[11]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-6.png (Breaking down the CI build pipeline)
|
||||
[12]: https://stryker-mutator.io/
|
||||
[13]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-7.png (Breaking down the CD release pipeline)
|
||||
[14]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-8.png (Shift-right the environment-specific configuration)
|
||||
[15]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-9.png (Dev-QA-production pipeline)
|
||||
[16]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-10.png (Move approver management to simple group membership)
|
||||
[17]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-11.png (Pipeline with access to specific delivery stages)
|
||||
[18]: https://opensource.com/sites/default/files/uploads/devops_pipeline_pipe-12.png (The full pipeline)
|
@ -0,0 +1,113 @@
|
||||
[#]: collector: (lujun9972)
|
||||
[#]: translator: (geekpi)
|
||||
[#]: reviewer: ( )
|
||||
[#]: publisher: ( )
|
||||
[#]: url: ( )
|
||||
[#]: subject: (How to Disable Dock on Ubuntu 20.04 and Gain More Screen Space)
|
||||
[#]: via: (https://itsfoss.com/disable-ubuntu-dock/)
|
||||
[#]: author: (Abhishek Prakash https://itsfoss.com/author/abhishek/)
|
||||
|
||||
如何在 Ubuntu 20.04 上禁用 Dock 并获得更多屏幕空间
|
||||
======
|
||||
|
||||
左侧的启动器已成为 [Ubuntu][1] 桌面的标识。它是在 [Unity 桌面][2]中引入的,甚至在 [Ubuntu 切换到 GNOME][3]时就有了,它分叉了 Dash to Panel,以在 [GNOME][4] 上创建一个类似的 Dock。
|
||||
|
||||
就个人而言,我发现它对于快速访问常用应用非常方便。但并非所有人都希望它占用屏幕上的一些额外空间。
|
||||
|
||||
从 [Ubuntu 20.04][5] 开始,你可以轻松禁用 dock。在本教程中,让我向你展示如何以图形和命令的方式执行此操作。
|
||||
|
||||
![][6]
|
||||
|
||||
### 通过扩展应用禁用 Ubuntu Dock
|
||||
|
||||
[Ubuntu 20.04 的主要功能][7]之一是引入扩展 (Extension) 应用来管理系统上的 GNOME 扩展。只需在 GNOME 菜单中查找它(按下 Windows 键并输入):
|
||||
|
||||
![Look for Extensions app in the menu][8]
|
||||
|
||||
没有扩展应用?
|
||||
|
||||
如果尚未安装,你应该启用 GNOME Shell Extensions。Extensions GUI 是此软件包的一部分。
|
||||
|
||||
```
|
||||
sudo apt install gnome-shell-extensions
|
||||
```
|
||||
|
||||
这仅对 [GNOME 3.36][9] 或 Ubuntu 20.04(或更高版本) 中的更高版本有效。
|
||||
|
||||
启动扩展应用,你应该在“内置”扩展下看到 Ubuntu Dock。你只需要关闭即可禁用 dock。
|
||||
|
||||
![Disable Ubuntu Dock][10]
|
||||
|
||||
更改是即时的,你会看到 dock 立即消失。
|
||||
|
||||
你可以用相同的方式恢复。只需打开它,它就会立即显示。
|
||||
|
||||
在 Ubuntu 20.04 中非常容易隐藏 dock,不是吗?
|
||||
|
||||
### 替代方法:通过命令行禁用 Ubuntu dock
|
||||
|
||||
如果你是终端爱好者,并且喜欢在终端中做事,那么我有一个对你而言的好消息。你可以从命令行禁用 Ubuntu dock。
|
||||
|
||||
使用 Ctrl+Alt+T 打开终端。你可能已经知道 [Ubuntu 中的键盘快捷键][11]。
|
||||
|
||||
在终端中,使用以下命令列出所有可用的 GNOME 扩展:
|
||||
|
||||
```
|
||||
gnome-extensions list
|
||||
```
|
||||
|
||||
这将显示类似于以下的输出:
|
||||
|
||||
![List GNOME Extensions][12]
|
||||
|
||||
默认的 Ubuntu dock 扩展名是 [ubuntu-dock@ubuntu.com][13]。你可以使用以下命令将其禁用:
|
||||
|
||||
```
|
||||
gnome-extensions disable ubuntu-dock@ubuntu.com
|
||||
```
|
||||
|
||||
屏幕上不会显示任何输出,但是你会注意到启动器或 dock 从左侧消失了。
|
||||
|
||||
如果需要,你可以使用与上面相同的命令再次启用它,但使用启用选项:
|
||||
|
||||
```
|
||||
gnome-extensions enable ubuntu-dock@ubuntu.com
|
||||
```
|
||||
|
||||
**总结**
|
||||
|
||||
在 Ubuntu 18.04 中也有禁用 Dock 的方法。但是,如果你尝试在 18.04 中删除它,这可能会导致不必要的情况。删除此软件包也会删除 ubuntu-desktop 包,最终可能会导致系统崩溃,例如没有应用菜单。
|
||||
|
||||
这就是为什么我不建议在 Ubuntu 18.04 上删除它的原因。
|
||||
|
||||
好消息是 Ubuntu 20.04 提供了一种隐藏任务栏的方法。用户拥有更大的自由度和更多的屏幕空间。说到更多的屏幕空间,你是否知道可以[从 Firefox 移除顶部标题栏并获得更多的屏幕空间][14]?
|
||||
|
||||
我想知道你喜欢怎样的 Ubuntu 桌面?有 dock,没有 dock 还是没有 GNOME?
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: https://itsfoss.com/disable-ubuntu-dock/
|
||||
|
||||
作者:[Abhishek Prakash][a]
|
||||
选题:[lujun9972][b]
|
||||
译者:[geekpi](https://github.com/geekpi)
|
||||
校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
|
||||
|
||||
[a]: https://itsfoss.com/author/abhishek/
|
||||
[b]: https://github.com/lujun9972
|
||||
[1]: https://ubuntu.com/
|
||||
[2]: https://itsfoss.com/keeping-ubuntu-unity-alive/
|
||||
[3]: https://itsfoss.com/ubuntu-unity-shutdown/
|
||||
[4]: https://www.gnome.org/
|
||||
[5]: https://itsfoss.com/download-ubuntu-20-04/
|
||||
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/disable-dock-in-ubuntu.png?ssl=1
|
||||
[7]: https://itsfoss.com/ubuntu-20-04-release-features/
|
||||
[8]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/06/GNOME-extensions-app-ubuntu.jpg?ssl=1
|
||||
[9]: https://itsfoss.com/gnome-3-36-release/
|
||||
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/06/disable-ubuntu-dock.png?ssl=1
|
||||
[11]: https://itsfoss.com/ubuntu-shortcuts/
|
||||
[12]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/06/list-gnome-extensions.png?ssl=1
|
||||
[13]: https://itsfoss.com/cdn-cgi/l/email-protection
|
||||
[14]: https://itsfoss.com/remove-title-bar-firefox/
|
Loading…
Reference in New Issue
Block a user